mirror of
https://github.com/immich-app/immich.git
synced 2026-05-18 03:10:24 +03:00
Merge branch 'main' of https://github.com/immich-app/immich into feat/crawl-wrapper
This commit is contained in:
@@ -4,6 +4,7 @@ import {
|
|||||||
AssetBulkUploadCheckResult,
|
AssetBulkUploadCheckResult,
|
||||||
AssetMediaResponseDto,
|
AssetMediaResponseDto,
|
||||||
AssetMediaStatus,
|
AssetMediaStatus,
|
||||||
|
Permission,
|
||||||
addAssetsToAlbum,
|
addAssetsToAlbum,
|
||||||
checkBulkUpload,
|
checkBulkUpload,
|
||||||
createAlbum,
|
createAlbum,
|
||||||
@@ -20,13 +21,11 @@ import { Stats, createReadStream } from 'node:fs';
|
|||||||
import { stat, unlink } from 'node:fs/promises';
|
import { stat, unlink } from 'node:fs/promises';
|
||||||
import path, { basename } from 'node:path';
|
import path, { basename } from 'node:path';
|
||||||
import { Queue } from 'src/queue';
|
import { Queue } from 'src/queue';
|
||||||
import { BaseOptions, Batcher, authenticate, crawl, sha1 } from 'src/utils';
|
import { BaseOptions, Batcher, authenticate, crawl, requirePermissions, s, sha1 } from 'src/utils';
|
||||||
|
|
||||||
const UPLOAD_WATCH_BATCH_SIZE = 100;
|
const UPLOAD_WATCH_BATCH_SIZE = 100;
|
||||||
const UPLOAD_WATCH_DEBOUNCE_TIME_MS = 10_000;
|
const UPLOAD_WATCH_DEBOUNCE_TIME_MS = 10_000;
|
||||||
|
|
||||||
const s = (count: number) => (count === 1 ? '' : 's');
|
|
||||||
|
|
||||||
// TODO figure out why `id` is missing
|
// TODO figure out why `id` is missing
|
||||||
type AssetBulkUploadCheckResults = Array<AssetBulkUploadCheckResult & { id: string }>;
|
type AssetBulkUploadCheckResults = Array<AssetBulkUploadCheckResult & { id: string }>;
|
||||||
type Asset = { id: string; filepath: string };
|
type Asset = { id: string; filepath: string };
|
||||||
@@ -136,6 +135,7 @@ export const startWatch = async (
|
|||||||
|
|
||||||
export const upload = async (paths: string[], baseOptions: BaseOptions, options: UploadOptionsDto) => {
|
export const upload = async (paths: string[], baseOptions: BaseOptions, options: UploadOptionsDto) => {
|
||||||
await authenticate(baseOptions);
|
await authenticate(baseOptions);
|
||||||
|
await requirePermissions([Permission.AssetUpload]);
|
||||||
|
|
||||||
const scanFiles = await scan(paths, options);
|
const scanFiles = await scan(paths, options);
|
||||||
|
|
||||||
@@ -180,18 +180,49 @@ export const checkForDuplicates = async (files: string[], { concurrency, skipHas
|
|||||||
}
|
}
|
||||||
|
|
||||||
let multiBar: MultiBar | undefined;
|
let multiBar: MultiBar | undefined;
|
||||||
|
let totalSize = 0;
|
||||||
|
const statsMap = new Map<string, Stats>();
|
||||||
|
|
||||||
|
// Calculate total size first
|
||||||
|
for (const filepath of files) {
|
||||||
|
const stats = await stat(filepath);
|
||||||
|
statsMap.set(filepath, stats);
|
||||||
|
totalSize += stats.size;
|
||||||
|
}
|
||||||
|
|
||||||
if (progress) {
|
if (progress) {
|
||||||
multiBar = new MultiBar(
|
multiBar = new MultiBar(
|
||||||
{ format: '{message} | {bar} | {percentage}% | ETA: {eta}s | {value}/{total} assets' },
|
{
|
||||||
|
format: '{message} | {bar} | {percentage}% | ETA: {eta_formatted} | {value}/{total}',
|
||||||
|
formatValue: (v: number, options, type) => {
|
||||||
|
// Don't format percentage
|
||||||
|
if (type === 'percentage') {
|
||||||
|
return v.toString();
|
||||||
|
}
|
||||||
|
return byteSize(v).toString();
|
||||||
|
},
|
||||||
|
etaBuffer: 100, // Increase samples for ETA calculation
|
||||||
|
},
|
||||||
Presets.shades_classic,
|
Presets.shades_classic,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Ensure we restore cursor on interrupt
|
||||||
|
process.on('SIGINT', () => {
|
||||||
|
if (multiBar) {
|
||||||
|
multiBar.stop();
|
||||||
|
}
|
||||||
|
process.exit(0);
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
console.log(`Received ${files.length} files, hashing...`);
|
console.log(`Received ${files.length} files (${byteSize(totalSize)}), hashing...`);
|
||||||
}
|
}
|
||||||
|
|
||||||
const hashProgressBar = multiBar?.create(files.length, 0, { message: 'Hashing files ' });
|
const hashProgressBar = multiBar?.create(totalSize, 0, {
|
||||||
const checkProgressBar = multiBar?.create(files.length, 0, { message: 'Checking for duplicates' });
|
message: 'Hashing files ',
|
||||||
|
});
|
||||||
|
const checkProgressBar = multiBar?.create(totalSize, 0, {
|
||||||
|
message: 'Checking for duplicates',
|
||||||
|
});
|
||||||
|
|
||||||
const newFiles: string[] = [];
|
const newFiles: string[] = [];
|
||||||
const duplicates: Asset[] = [];
|
const duplicates: Asset[] = [];
|
||||||
@@ -211,7 +242,13 @@ export const checkForDuplicates = async (files: string[], { concurrency, skipHas
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
checkProgressBar?.increment(assets.length);
|
// Update progress based on total size of processed files
|
||||||
|
let processedSize = 0;
|
||||||
|
for (const asset of assets) {
|
||||||
|
const stats = statsMap.get(asset.id);
|
||||||
|
processedSize += stats?.size || 0;
|
||||||
|
}
|
||||||
|
checkProgressBar?.increment(processedSize);
|
||||||
},
|
},
|
||||||
{ concurrency, retry: 3 },
|
{ concurrency, retry: 3 },
|
||||||
);
|
);
|
||||||
@@ -221,6 +258,10 @@ export const checkForDuplicates = async (files: string[], { concurrency, skipHas
|
|||||||
|
|
||||||
const queue = new Queue<string, AssetBulkUploadCheckItem[]>(
|
const queue = new Queue<string, AssetBulkUploadCheckItem[]>(
|
||||||
async (filepath: string): Promise<AssetBulkUploadCheckItem[]> => {
|
async (filepath: string): Promise<AssetBulkUploadCheckItem[]> => {
|
||||||
|
const stats = statsMap.get(filepath);
|
||||||
|
if (!stats) {
|
||||||
|
throw new Error(`Stats not found for ${filepath}`);
|
||||||
|
}
|
||||||
const dto = { id: filepath, checksum: await sha1(filepath) };
|
const dto = { id: filepath, checksum: await sha1(filepath) };
|
||||||
|
|
||||||
results.push(dto);
|
results.push(dto);
|
||||||
@@ -231,7 +272,7 @@ export const checkForDuplicates = async (files: string[], { concurrency, skipHas
|
|||||||
void checkBulkUploadQueue.push(batch);
|
void checkBulkUploadQueue.push(batch);
|
||||||
}
|
}
|
||||||
|
|
||||||
hashProgressBar?.increment();
|
hashProgressBar?.increment(stats.size);
|
||||||
return results;
|
return results;
|
||||||
},
|
},
|
||||||
{ concurrency, retry: 3 },
|
{ concurrency, retry: 3 },
|
||||||
|
|||||||
@@ -1,7 +1,15 @@
|
|||||||
import { getMyUser } from '@immich/sdk';
|
import { getMyUser, Permission } from '@immich/sdk';
|
||||||
import { existsSync } from 'node:fs';
|
import { existsSync } from 'node:fs';
|
||||||
import { mkdir, unlink } from 'node:fs/promises';
|
import { mkdir, unlink } from 'node:fs/promises';
|
||||||
import { BaseOptions, connect, getAuthFilePath, logError, withError, writeAuthFile } from 'src/utils';
|
import {
|
||||||
|
BaseOptions,
|
||||||
|
connect,
|
||||||
|
getAuthFilePath,
|
||||||
|
logError,
|
||||||
|
requirePermissions,
|
||||||
|
withError,
|
||||||
|
writeAuthFile,
|
||||||
|
} from 'src/utils';
|
||||||
|
|
||||||
export const login = async (url: string, key: string, options: BaseOptions) => {
|
export const login = async (url: string, key: string, options: BaseOptions) => {
|
||||||
console.log(`Logging in to ${url}`);
|
console.log(`Logging in to ${url}`);
|
||||||
@@ -9,6 +17,7 @@ export const login = async (url: string, key: string, options: BaseOptions) => {
|
|||||||
const { configDirectory: configDir } = options;
|
const { configDirectory: configDir } = options;
|
||||||
|
|
||||||
await connect(url, key);
|
await connect(url, key);
|
||||||
|
await requirePermissions([Permission.UserRead]);
|
||||||
|
|
||||||
const [error, user] = await withError(getMyUser());
|
const [error, user] = await withError(getMyUser());
|
||||||
if (error) {
|
if (error) {
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
import { getAssetStatistics, getMyUser, getServerVersion, getSupportedMediaTypes } from '@immich/sdk';
|
import { getAssetStatistics, getMyUser, getServerVersion, getSupportedMediaTypes, Permission } from '@immich/sdk';
|
||||||
import { BaseOptions, authenticate } from 'src/utils';
|
import { authenticate, BaseOptions, requirePermissions } from 'src/utils';
|
||||||
|
|
||||||
export const serverInfo = async (options: BaseOptions) => {
|
export const serverInfo = async (options: BaseOptions) => {
|
||||||
const { url } = await authenticate(options);
|
const { url } = await authenticate(options);
|
||||||
|
await requirePermissions([Permission.ServerAbout, Permission.AssetStatistics, Permission.UserRead]);
|
||||||
|
|
||||||
const [versionInfo, mediaTypes, stats, userInfo] = await Promise.all([
|
const [versionInfo, mediaTypes, stats, userInfo] = await Promise.all([
|
||||||
getServerVersion(),
|
getServerVersion(),
|
||||||
|
|||||||
+31
-1
@@ -1,4 +1,4 @@
|
|||||||
import { getMyUser, init, isHttpError } from '@immich/sdk';
|
import { ApiKeyResponseDto, getMyApiKey, getMyUser, init, isHttpError, Permission } from '@immich/sdk';
|
||||||
import { convertPathToPattern, glob } from 'fast-glob';
|
import { convertPathToPattern, glob } from 'fast-glob';
|
||||||
import { createHash } from 'node:crypto';
|
import { createHash } from 'node:crypto';
|
||||||
import { createReadStream } from 'node:fs';
|
import { createReadStream } from 'node:fs';
|
||||||
@@ -34,6 +34,36 @@ export const authenticate = async (options: BaseOptions): Promise<AuthDto> => {
|
|||||||
return auth;
|
return auth;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const s = (count: number) => (count === 1 ? '' : 's');
|
||||||
|
|
||||||
|
let _apiKey: ApiKeyResponseDto;
|
||||||
|
export const requirePermissions = async (permissions: Permission[]) => {
|
||||||
|
if (!_apiKey) {
|
||||||
|
_apiKey = await getMyApiKey();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_apiKey.permissions.includes(Permission.All)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const missing: Permission[] = [];
|
||||||
|
|
||||||
|
for (const permission of permissions) {
|
||||||
|
if (!_apiKey.permissions.includes(permission)) {
|
||||||
|
missing.push(permission);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (missing.length > 0) {
|
||||||
|
const combined = missing.map((permission) => `"${permission}"`).join(', ');
|
||||||
|
console.log(
|
||||||
|
`Missing required permission${s(missing.length)}: ${combined}.
|
||||||
|
Please make sure your API key has the correct permissions.`,
|
||||||
|
);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
export const connect = async (url: string, key: string) => {
|
export const connect = async (url: string, key: string) => {
|
||||||
const wellKnownUrl = new URL('.well-known/immich', url);
|
const wellKnownUrl = new URL('.well-known/immich', url);
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -127,7 +127,7 @@ services:
|
|||||||
|
|
||||||
redis:
|
redis:
|
||||||
container_name: immich_redis
|
container_name: immich_redis
|
||||||
image: docker.io/valkey/valkey:9@sha256:546304417feac0874c3dd576e0952c6bb8f06bb4093ea0c9ca303c73cf458f63
|
image: docker.io/valkey/valkey:9@sha256:930b41430fb727f533c5982fe509b6f04233e26d0f7354e04de4b0d5c706e44e
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: redis-cli ping || exit 1
|
test: redis-cli ping || exit 1
|
||||||
|
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ services:
|
|||||||
|
|
||||||
redis:
|
redis:
|
||||||
container_name: immich_redis
|
container_name: immich_redis
|
||||||
image: docker.io/valkey/valkey:9@sha256:546304417feac0874c3dd576e0952c6bb8f06bb4093ea0c9ca303c73cf458f63
|
image: docker.io/valkey/valkey:9@sha256:930b41430fb727f533c5982fe509b6f04233e26d0f7354e04de4b0d5c706e44e
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: redis-cli ping || exit 1
|
test: redis-cli ping || exit 1
|
||||||
restart: always
|
restart: always
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ services:
|
|||||||
|
|
||||||
redis:
|
redis:
|
||||||
container_name: immich_redis
|
container_name: immich_redis
|
||||||
image: docker.io/valkey/valkey:9@sha256:546304417feac0874c3dd576e0952c6bb8f06bb4093ea0c9ca303c73cf458f63
|
image: docker.io/valkey/valkey:9@sha256:930b41430fb727f533c5982fe509b6f04233e26d0f7354e04de4b0d5c706e44e
|
||||||
user: '1000:1000'
|
user: '1000:1000'
|
||||||
security_opt:
|
security_opt:
|
||||||
- no-new-privileges:true
|
- no-new-privileges:true
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ services:
|
|||||||
|
|
||||||
redis:
|
redis:
|
||||||
container_name: immich_redis
|
container_name: immich_redis
|
||||||
image: docker.io/valkey/valkey:9@sha256:546304417feac0874c3dd576e0952c6bb8f06bb4093ea0c9ca303c73cf458f63
|
image: docker.io/valkey/valkey:9@sha256:930b41430fb727f533c5982fe509b6f04233e26d0f7354e04de4b0d5c706e44e
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: redis-cli ping || exit 1
|
test: redis-cli ping || exit 1
|
||||||
restart: always
|
restart: always
|
||||||
|
|||||||
@@ -32,3 +32,7 @@ If you would like to migrate from one media location to another, simply successf
|
|||||||
4. Start up Immich
|
4. Start up Immich
|
||||||
|
|
||||||
After version `1.136.0`, Immich can detect when a media location has moved and will automatically update the database paths to keep them in sync.
|
After version `1.136.0`, Immich can detect when a media location has moved and will automatically update the database paths to keep them in sync.
|
||||||
|
|
||||||
|
## Schema drift
|
||||||
|
|
||||||
|
Schema drift is when the database schema is out of sync with the code. This could be the result of manual database tinkering, issues during a database restore, or something else. Schema drift can lead to data corruption, application bugs, and other unpredictable behavior. Please reconcile the differences as soon as possible. Specifically, missing `CONSTRAINT`s can result in duplicate assets being uploaded, since the server relies on a checksum `CONSTRAINT` to prevent duplicates.
|
||||||
|
|||||||
@@ -43,10 +43,10 @@ export const errorDto = {
|
|||||||
message: 'Invalid share key',
|
message: 'Invalid share key',
|
||||||
correlationId: expect.any(String),
|
correlationId: expect.any(String),
|
||||||
},
|
},
|
||||||
invalidSharePassword: {
|
passwordRequired: {
|
||||||
error: 'Unauthorized',
|
error: 'Unauthorized',
|
||||||
statusCode: 401,
|
statusCode: 401,
|
||||||
message: 'Invalid password',
|
message: 'Password required',
|
||||||
correlationId: expect.any(String),
|
correlationId: expect.any(String),
|
||||||
},
|
},
|
||||||
badRequest: (message: any = null) => ({
|
badRequest: (message: any = null) => ({
|
||||||
|
|||||||
@@ -239,7 +239,7 @@ describe('/shared-links', () => {
|
|||||||
const { status, body } = await request(app).get('/shared-links/me').query({ key: linkWithPassword.key });
|
const { status, body } = await request(app).get('/shared-links/me').query({ key: linkWithPassword.key });
|
||||||
|
|
||||||
expect(status).toBe(401);
|
expect(status).toBe(401);
|
||||||
expect(body).toEqual(errorDto.invalidSharePassword);
|
expect(body).toEqual(errorDto.passwordRequired);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should get data for correct password protected link', async () => {
|
it('should get data for correct password protected link', async () => {
|
||||||
|
|||||||
+1
-2
@@ -1613,7 +1613,6 @@
|
|||||||
"not_available": "غير متاح",
|
"not_available": "غير متاح",
|
||||||
"not_in_any_album": "ليست في أي ألبوم",
|
"not_in_any_album": "ليست في أي ألبوم",
|
||||||
"not_selected": "لم يختار",
|
"not_selected": "لم يختار",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "ملاحظة: لتطبيق سمة التخزين على المحتويات التي تم رفعها مسبقًا، قم بتشغيل",
|
|
||||||
"notes": "ملاحظات",
|
"notes": "ملاحظات",
|
||||||
"nothing_here_yet": "لا يوجد شيء هنا بعد",
|
"nothing_here_yet": "لا يوجد شيء هنا بعد",
|
||||||
"notification_permission_dialog_content": "لتمكين الإخطارات ، انتقل إلى الإعدادات و اختار السماح.",
|
"notification_permission_dialog_content": "لتمكين الإخطارات ، انتقل إلى الإعدادات و اختار السماح.",
|
||||||
@@ -1815,7 +1814,7 @@
|
|||||||
"reassigned_assets_to_new_person": "تمت إعادة تعيين {count, plural, one {# المحتوى} other {# المحتويات}} إلى شخص جديد",
|
"reassigned_assets_to_new_person": "تمت إعادة تعيين {count, plural, one {# المحتوى} other {# المحتويات}} إلى شخص جديد",
|
||||||
"reassing_hint": "تعيين المحتويات المحددة لشخص موجود",
|
"reassing_hint": "تعيين المحتويات المحددة لشخص موجود",
|
||||||
"recent": "حديث",
|
"recent": "حديث",
|
||||||
"recent-albums": "ألبومات الحديثة",
|
"recent_albums": "ألبومات الحديثة",
|
||||||
"recent_searches": "عمليات البحث الأخيرة",
|
"recent_searches": "عمليات البحث الأخيرة",
|
||||||
"recently_added": "اضيف مؤخرا",
|
"recently_added": "اضيف مؤخرا",
|
||||||
"recently_added_page_title": "أضيف مؤخرا",
|
"recently_added_page_title": "أضيف مؤخرا",
|
||||||
|
|||||||
+1
-1
@@ -457,7 +457,7 @@
|
|||||||
"reassign": "Перапрызначыць",
|
"reassign": "Перапрызначыць",
|
||||||
"reassing_hint": "Прыпісаць выбраныя актывы існуючай асобе",
|
"reassing_hint": "Прыпісаць выбраныя актывы існуючай асобе",
|
||||||
"recent": "Нядаўні",
|
"recent": "Нядаўні",
|
||||||
"recent-albums": "Нядаўнія альбомы",
|
"recent_albums": "Нядаўнія альбомы",
|
||||||
"recent_searches": "Нядаўнія пошукі",
|
"recent_searches": "Нядаўнія пошукі",
|
||||||
"recently_added": "Нядаўна дададзена",
|
"recently_added": "Нядаўна дададзена",
|
||||||
"refresh_faces": "Абнавіць твары",
|
"refresh_faces": "Абнавіць твары",
|
||||||
|
|||||||
+1
-2
@@ -1613,7 +1613,6 @@
|
|||||||
"not_available": "Неналично",
|
"not_available": "Неналично",
|
||||||
"not_in_any_album": "Не е в никой албум",
|
"not_in_any_album": "Не е в никой албум",
|
||||||
"not_selected": "Не е избрано",
|
"not_selected": "Не е избрано",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "Забележка: За да приложите етикета за съхранение към предварително качени активи, стартирайте",
|
|
||||||
"notes": "Бележки",
|
"notes": "Бележки",
|
||||||
"nothing_here_yet": "Засега тук няма нищо",
|
"nothing_here_yet": "Засега тук няма нищо",
|
||||||
"notification_permission_dialog_content": "За да включиш известията, отиди в Настройки и избери Разреши.",
|
"notification_permission_dialog_content": "За да включиш известията, отиди в Настройки и избери Разреши.",
|
||||||
@@ -1815,7 +1814,7 @@
|
|||||||
"reassigned_assets_to_new_person": "Преназначени {count, plural, one {# елемент} other {# елемента}} на нов човек",
|
"reassigned_assets_to_new_person": "Преназначени {count, plural, one {# елемент} other {# елемента}} на нов човек",
|
||||||
"reassing_hint": "Назначи избраните елементи на съществуващо лице",
|
"reassing_hint": "Назначи избраните елементи на съществуващо лице",
|
||||||
"recent": "Скорошни",
|
"recent": "Скорошни",
|
||||||
"recent-albums": "Скорошни Албуми",
|
"recent_albums": "Скорошни Албуми",
|
||||||
"recent_searches": "Скорошни търсения",
|
"recent_searches": "Скорошни търсения",
|
||||||
"recently_added": "Наскоро добавено",
|
"recently_added": "Наскоро добавено",
|
||||||
"recently_added_page_title": "Наскоро добавено",
|
"recently_added_page_title": "Наскоро добавено",
|
||||||
|
|||||||
+1
-1
@@ -17,7 +17,7 @@
|
|||||||
"readonly_mode_enabled": "Mod blo yu no save janjem i on",
|
"readonly_mode_enabled": "Mod blo yu no save janjem i on",
|
||||||
"reassigned_assets_to_new_person": "Janjem{count, plural, one {# asset} other {# assets}} blo nu man",
|
"reassigned_assets_to_new_person": "Janjem{count, plural, one {# asset} other {# assets}} blo nu man",
|
||||||
"reassing_hint": "janjem ol sumtin yu bin joos i go blo wan man",
|
"reassing_hint": "janjem ol sumtin yu bin joos i go blo wan man",
|
||||||
"recent-albums": "album i no old tu mas",
|
"recent_albums": "album i no old tu mas",
|
||||||
"recent_searches": "lukabout wea i no old tu mas",
|
"recent_searches": "lukabout wea i no old tu mas",
|
||||||
"time_based_memories_duration": "hao mus second blo wan wan imij i stap lo scrin.",
|
"time_based_memories_duration": "hao mus second blo wan wan imij i stap lo scrin.",
|
||||||
"timezone": "taemzon",
|
"timezone": "taemzon",
|
||||||
|
|||||||
+11
-4
@@ -311,7 +311,7 @@
|
|||||||
"search_jobs": "Cercar treballs…",
|
"search_jobs": "Cercar treballs…",
|
||||||
"send_welcome_email": "Enviar correu electrònic de benvinguda",
|
"send_welcome_email": "Enviar correu electrònic de benvinguda",
|
||||||
"server_external_domain_settings": "Domini extern",
|
"server_external_domain_settings": "Domini extern",
|
||||||
"server_external_domain_settings_description": "Domini per enllaços públics compartits, incloent http(s)://",
|
"server_external_domain_settings_description": "Domini utilitzat per a enllaços externs",
|
||||||
"server_public_users": "Usuaris públics",
|
"server_public_users": "Usuaris públics",
|
||||||
"server_public_users_description": "Tots els usuaris (nom i correu electrònic) apareixen a la llista a l'afegir un usuari als àlbums compartits. Si es desactiva, la llista només serà disponible pels usuaris administradors.",
|
"server_public_users_description": "Tots els usuaris (nom i correu electrònic) apareixen a la llista a l'afegir un usuari als àlbums compartits. Si es desactiva, la llista només serà disponible pels usuaris administradors.",
|
||||||
"server_settings": "Configuració del servidor",
|
"server_settings": "Configuració del servidor",
|
||||||
@@ -794,6 +794,11 @@
|
|||||||
"color": "Color",
|
"color": "Color",
|
||||||
"color_theme": "Tema de color",
|
"color_theme": "Tema de color",
|
||||||
"command": "Ordre",
|
"command": "Ordre",
|
||||||
|
"command_palette_prompt": "Trobar ràpidament pàgines, accions o comandes",
|
||||||
|
"command_palette_to_close": "per a tancar",
|
||||||
|
"command_palette_to_navigate": "per a introduir",
|
||||||
|
"command_palette_to_select": "per a seleccionar",
|
||||||
|
"command_palette_to_show_all": "per a mostrar-ho tot",
|
||||||
"comment_deleted": "Comentari esborrat",
|
"comment_deleted": "Comentari esborrat",
|
||||||
"comment_options": "Opcions de comentari",
|
"comment_options": "Opcions de comentari",
|
||||||
"comments_and_likes": "Comentaris i agradaments",
|
"comments_and_likes": "Comentaris i agradaments",
|
||||||
@@ -1168,6 +1173,7 @@
|
|||||||
"exif_bottom_sheet_people": "PERSONES",
|
"exif_bottom_sheet_people": "PERSONES",
|
||||||
"exif_bottom_sheet_person_add_person": "Afegir nom",
|
"exif_bottom_sheet_person_add_person": "Afegir nom",
|
||||||
"exit_slideshow": "Surt de la presentació de diapositives",
|
"exit_slideshow": "Surt de la presentació de diapositives",
|
||||||
|
"expand": "Ampliar-ho",
|
||||||
"expand_all": "Ampliar-ho tot",
|
"expand_all": "Ampliar-ho tot",
|
||||||
"experimental_settings_new_asset_list_subtitle": "Treball en curs",
|
"experimental_settings_new_asset_list_subtitle": "Treball en curs",
|
||||||
"experimental_settings_new_asset_list_title": "Habilita la graella de fotos experimental",
|
"experimental_settings_new_asset_list_title": "Habilita la graella de fotos experimental",
|
||||||
@@ -1532,7 +1538,7 @@
|
|||||||
"mobile_app_download_onboarding_note": "Descarregar la App de mòbil fent servir les seguents opcions",
|
"mobile_app_download_onboarding_note": "Descarregar la App de mòbil fent servir les seguents opcions",
|
||||||
"model": "Model",
|
"model": "Model",
|
||||||
"month": "Mes",
|
"month": "Mes",
|
||||||
"monthly_title_text_date_format": "MMMM y",
|
"monthly_title_text_date_format": "MMMM a",
|
||||||
"more": "Més",
|
"more": "Més",
|
||||||
"move": "Moure",
|
"move": "Moure",
|
||||||
"move_down": "Moure cap avall",
|
"move_down": "Moure cap avall",
|
||||||
@@ -1613,7 +1619,6 @@
|
|||||||
"not_available": "N/A",
|
"not_available": "N/A",
|
||||||
"not_in_any_album": "En cap àlbum",
|
"not_in_any_album": "En cap àlbum",
|
||||||
"not_selected": "No seleccionat",
|
"not_selected": "No seleccionat",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "Nota: per aplicar l'etiqueta d'emmagatzematge als actius penjats anteriorment, executeu el",
|
|
||||||
"notes": "Notes",
|
"notes": "Notes",
|
||||||
"nothing_here_yet": "No hi ha res encara",
|
"nothing_here_yet": "No hi ha res encara",
|
||||||
"notification_permission_dialog_content": "Per activar les notificacions, aneu a Configuració i seleccioneu permet.",
|
"notification_permission_dialog_content": "Per activar les notificacions, aneu a Configuració i seleccioneu permet.",
|
||||||
@@ -1643,6 +1648,7 @@
|
|||||||
"online": "En línia",
|
"online": "En línia",
|
||||||
"only_favorites": "Només preferits",
|
"only_favorites": "Només preferits",
|
||||||
"open": "Obrir",
|
"open": "Obrir",
|
||||||
|
"open_calendar": "Obrir el calendari",
|
||||||
"open_in_map_view": "Obrir a la vista del mapa",
|
"open_in_map_view": "Obrir a la vista del mapa",
|
||||||
"open_in_openstreetmap": "Obre a OpenStreetMap",
|
"open_in_openstreetmap": "Obre a OpenStreetMap",
|
||||||
"open_the_search_filters": "Obriu els filtres de cerca",
|
"open_the_search_filters": "Obriu els filtres de cerca",
|
||||||
@@ -1815,7 +1821,7 @@
|
|||||||
"reassigned_assets_to_new_person": "{count, plural, one {S'ha reassignat # recurs} other {S'han reassignat # recursos}} a una persona nova",
|
"reassigned_assets_to_new_person": "{count, plural, one {S'ha reassignat # recurs} other {S'han reassignat # recursos}} a una persona nova",
|
||||||
"reassing_hint": "Assignar els elements seleccionats a una persona existent",
|
"reassing_hint": "Assignar els elements seleccionats a una persona existent",
|
||||||
"recent": "Recent",
|
"recent": "Recent",
|
||||||
"recent-albums": "Àlbums recents",
|
"recent_albums": "Àlbums recents",
|
||||||
"recent_searches": "Cerques recents",
|
"recent_searches": "Cerques recents",
|
||||||
"recently_added": "Afegit recentment",
|
"recently_added": "Afegit recentment",
|
||||||
"recently_added_page_title": "Afegit recentment",
|
"recently_added_page_title": "Afegit recentment",
|
||||||
@@ -2184,6 +2190,7 @@
|
|||||||
"support": "Suport",
|
"support": "Suport",
|
||||||
"support_and_feedback": "Suport i comentaris",
|
"support_and_feedback": "Suport i comentaris",
|
||||||
"support_third_party_description": "La vostra instal·lació immich la va empaquetar un tercer. Els problemes que experimenteu poden ser causats per aquest paquet així que, si us plau, plantegeu els poblemes amb ells en primer lloc mitjançant els enllaços següents.",
|
"support_third_party_description": "La vostra instal·lació immich la va empaquetar un tercer. Els problemes que experimenteu poden ser causats per aquest paquet així que, si us plau, plantegeu els poblemes amb ells en primer lloc mitjançant els enllaços següents.",
|
||||||
|
"supporter": "Contribuïdor",
|
||||||
"swap_merge_direction": "Canvia la direcció d'unió",
|
"swap_merge_direction": "Canvia la direcció d'unió",
|
||||||
"sync": "Sincronitza",
|
"sync": "Sincronitza",
|
||||||
"sync_albums": "Sincronitzar àlbums",
|
"sync_albums": "Sincronitzar àlbums",
|
||||||
|
|||||||
+10
-3
@@ -311,7 +311,7 @@
|
|||||||
"search_jobs": "Hledat úlohy…",
|
"search_jobs": "Hledat úlohy…",
|
||||||
"send_welcome_email": "Odeslat uvítací e-mail",
|
"send_welcome_email": "Odeslat uvítací e-mail",
|
||||||
"server_external_domain_settings": "Externí doména",
|
"server_external_domain_settings": "Externí doména",
|
||||||
"server_external_domain_settings_description": "Doména pro veřejně sdílené odkazy, včetně http(s)://",
|
"server_external_domain_settings_description": "Doména používaná pro externí odkazy",
|
||||||
"server_public_users": "Veřejní uživatelé",
|
"server_public_users": "Veřejní uživatelé",
|
||||||
"server_public_users_description": "Všichni uživatelé (jméno a e-mail) jsou uvedeni při přidávání uživatele do sdílených alb. Pokud je tato funkce vypnuta, bude seznam uživatelů dostupný pouze uživatelům z řad správců.",
|
"server_public_users_description": "Všichni uživatelé (jméno a e-mail) jsou uvedeni při přidávání uživatele do sdílených alb. Pokud je tato funkce vypnuta, bude seznam uživatelů dostupný pouze uživatelům z řad správců.",
|
||||||
"server_settings": "Server",
|
"server_settings": "Server",
|
||||||
@@ -794,6 +794,11 @@
|
|||||||
"color": "Barva",
|
"color": "Barva",
|
||||||
"color_theme": "Barevný motiv",
|
"color_theme": "Barevný motiv",
|
||||||
"command": "Příkaz",
|
"command": "Příkaz",
|
||||||
|
"command_palette_prompt": "Rychlé vyhledávání stránek, akcí nebo příkazů",
|
||||||
|
"command_palette_to_close": "zavřít",
|
||||||
|
"command_palette_to_navigate": "vstoupit",
|
||||||
|
"command_palette_to_select": "vybrat",
|
||||||
|
"command_palette_to_show_all": "zobrazit vše",
|
||||||
"comment_deleted": "Komentář odstraněn",
|
"comment_deleted": "Komentář odstraněn",
|
||||||
"comment_options": "Možnosti komentáře",
|
"comment_options": "Možnosti komentáře",
|
||||||
"comments_and_likes": "Komentáře a lajky",
|
"comments_and_likes": "Komentáře a lajky",
|
||||||
@@ -1168,6 +1173,7 @@
|
|||||||
"exif_bottom_sheet_people": "LIDÉ",
|
"exif_bottom_sheet_people": "LIDÉ",
|
||||||
"exif_bottom_sheet_person_add_person": "Přidat jméno",
|
"exif_bottom_sheet_person_add_person": "Přidat jméno",
|
||||||
"exit_slideshow": "Ukončit prezentaci",
|
"exit_slideshow": "Ukončit prezentaci",
|
||||||
|
"expand": "Rozbalit",
|
||||||
"expand_all": "Rozbalit vše",
|
"expand_all": "Rozbalit vše",
|
||||||
"experimental_settings_new_asset_list_subtitle": "Zpracovávám",
|
"experimental_settings_new_asset_list_subtitle": "Zpracovávám",
|
||||||
"experimental_settings_new_asset_list_title": "Povolení experimentální mřížky fotografií",
|
"experimental_settings_new_asset_list_title": "Povolení experimentální mřížky fotografií",
|
||||||
@@ -1613,7 +1619,6 @@
|
|||||||
"not_available": "Není k dispozici",
|
"not_available": "Není k dispozici",
|
||||||
"not_in_any_album": "Bez alba",
|
"not_in_any_album": "Bez alba",
|
||||||
"not_selected": "Není vybráno",
|
"not_selected": "Není vybráno",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "Upozornění: Chcete-li použít štítek úložiště na dříve nahrané položky, spusťte příkaz",
|
|
||||||
"notes": "Poznámky",
|
"notes": "Poznámky",
|
||||||
"nothing_here_yet": "Zatím zde nic není",
|
"nothing_here_yet": "Zatím zde nic není",
|
||||||
"notification_permission_dialog_content": "Chcete-li povolit oznámení, přejděte do nastavení a vyberte možnost povolit.",
|
"notification_permission_dialog_content": "Chcete-li povolit oznámení, přejděte do nastavení a vyberte možnost povolit.",
|
||||||
@@ -1643,6 +1648,7 @@
|
|||||||
"online": "Online",
|
"online": "Online",
|
||||||
"only_favorites": "Pouze oblíbené",
|
"only_favorites": "Pouze oblíbené",
|
||||||
"open": "Otevřít",
|
"open": "Otevřít",
|
||||||
|
"open_calendar": "Otevřít kalendář",
|
||||||
"open_in_map_view": "Otevřít v zobrazení mapy",
|
"open_in_map_view": "Otevřít v zobrazení mapy",
|
||||||
"open_in_openstreetmap": "Otevřít v OpenStreetMap",
|
"open_in_openstreetmap": "Otevřít v OpenStreetMap",
|
||||||
"open_the_search_filters": "Otevřít vyhledávací filtry",
|
"open_the_search_filters": "Otevřít vyhledávací filtry",
|
||||||
@@ -1815,7 +1821,7 @@
|
|||||||
"reassigned_assets_to_new_person": "{count, plural, one {Přeřazena # položka} few {Přeřazeny # položky} other {Přeřazeno # položek}} na novou osobu",
|
"reassigned_assets_to_new_person": "{count, plural, one {Přeřazena # položka} few {Přeřazeny # položky} other {Přeřazeno # položek}} na novou osobu",
|
||||||
"reassing_hint": "Přiřazení vybraných položek existující osobě",
|
"reassing_hint": "Přiřazení vybraných položek existující osobě",
|
||||||
"recent": "Nedávné",
|
"recent": "Nedávné",
|
||||||
"recent-albums": "Nedávná alba",
|
"recent_albums": "Nedávná alba",
|
||||||
"recent_searches": "Nedávná vyhledávání",
|
"recent_searches": "Nedávná vyhledávání",
|
||||||
"recently_added": "Nedávno přidané",
|
"recently_added": "Nedávno přidané",
|
||||||
"recently_added_page_title": "Nedávno přidané",
|
"recently_added_page_title": "Nedávno přidané",
|
||||||
@@ -2184,6 +2190,7 @@
|
|||||||
"support": "Podpora",
|
"support": "Podpora",
|
||||||
"support_and_feedback": "Podpora a zpětná vazba",
|
"support_and_feedback": "Podpora a zpětná vazba",
|
||||||
"support_third_party_description": "Vaše Immich instalace byla připravena třetí stranou. Problémy, které se u vás vyskytly, mohou být způsobeny tímto balíčkem, proto se na ně obraťte v první řadě pomocí níže uvedených odkazů.",
|
"support_third_party_description": "Vaše Immich instalace byla připravena třetí stranou. Problémy, které se u vás vyskytly, mohou být způsobeny tímto balíčkem, proto se na ně obraťte v první řadě pomocí níže uvedených odkazů.",
|
||||||
|
"supporter": "Podporovatel",
|
||||||
"swap_merge_direction": "Obrátit směr sloučení",
|
"swap_merge_direction": "Obrátit směr sloučení",
|
||||||
"sync": "Synchronizovat",
|
"sync": "Synchronizovat",
|
||||||
"sync_albums": "Synchronizovat alba",
|
"sync_albums": "Synchronizovat alba",
|
||||||
|
|||||||
+1
-2
@@ -1613,7 +1613,6 @@
|
|||||||
"not_available": "ikke tilgængelig",
|
"not_available": "ikke tilgængelig",
|
||||||
"not_in_any_album": "Ikke i noget album",
|
"not_in_any_album": "Ikke i noget album",
|
||||||
"not_selected": "Ikke valgt",
|
"not_selected": "Ikke valgt",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "Bemærk: For at anvende Lagringsmærkat på tidligere uploadede medier, kør opgaven igen",
|
|
||||||
"notes": "Noter",
|
"notes": "Noter",
|
||||||
"nothing_here_yet": "Intet her endnu",
|
"nothing_here_yet": "Intet her endnu",
|
||||||
"notification_permission_dialog_content": "Gå til indstillinger for at slå notifikationer til.",
|
"notification_permission_dialog_content": "Gå til indstillinger for at slå notifikationer til.",
|
||||||
@@ -1815,7 +1814,7 @@
|
|||||||
"reassigned_assets_to_new_person": "Gentildelt {count, plural, one {# aktiv} other {# aktiver}} til en ny person",
|
"reassigned_assets_to_new_person": "Gentildelt {count, plural, one {# aktiv} other {# aktiver}} til en ny person",
|
||||||
"reassing_hint": "Tildel valgte mediefiler til en eksisterende person",
|
"reassing_hint": "Tildel valgte mediefiler til en eksisterende person",
|
||||||
"recent": "For nylig",
|
"recent": "For nylig",
|
||||||
"recent-albums": "Seneste albums",
|
"recent_albums": "Seneste albums",
|
||||||
"recent_searches": "Seneste søgninger",
|
"recent_searches": "Seneste søgninger",
|
||||||
"recently_added": "Senest tilføjet",
|
"recently_added": "Senest tilføjet",
|
||||||
"recently_added_page_title": "Nyligt tilføjet",
|
"recently_added_page_title": "Nyligt tilføjet",
|
||||||
|
|||||||
+3
-4
@@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"about": "Über",
|
"about": "Über Immich",
|
||||||
"account": "Konto",
|
"account": "Konto",
|
||||||
"account_settings": "Kontoeinstellungen",
|
"account_settings": "Kontoeinstellungen",
|
||||||
"acknowledge": "Bestätigen",
|
"acknowledge": "Verstanden",
|
||||||
"action": "Aktion",
|
"action": "Aktion",
|
||||||
"action_common_update": "Aktualisieren",
|
"action_common_update": "Aktualisieren",
|
||||||
"action_description": "Eine Reihe von Aktionen, die an den gefilterten Assets ausgeführt werden sollen",
|
"action_description": "Eine Reihe von Aktionen, die an den gefilterten Assets ausgeführt werden sollen",
|
||||||
@@ -1613,7 +1613,6 @@
|
|||||||
"not_available": "N/A",
|
"not_available": "N/A",
|
||||||
"not_in_any_album": "In keinem Album",
|
"not_in_any_album": "In keinem Album",
|
||||||
"not_selected": "Nicht ausgewählt",
|
"not_selected": "Nicht ausgewählt",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "Hinweis: Um eine Speicherpfadbezeichnung anzuwenden, starte den",
|
|
||||||
"notes": "Notizen",
|
"notes": "Notizen",
|
||||||
"nothing_here_yet": "Noch nichts hier",
|
"nothing_here_yet": "Noch nichts hier",
|
||||||
"notification_permission_dialog_content": "Um Benachrichtigungen zu aktivieren, navigiere zu Einstellungen und klicke \"Erlauben\".",
|
"notification_permission_dialog_content": "Um Benachrichtigungen zu aktivieren, navigiere zu Einstellungen und klicke \"Erlauben\".",
|
||||||
@@ -1815,7 +1814,7 @@
|
|||||||
"reassigned_assets_to_new_person": "{count, plural, one {# Datei wurde} other {# Dateien wurden}} einer neuen Person zugewiesen",
|
"reassigned_assets_to_new_person": "{count, plural, one {# Datei wurde} other {# Dateien wurden}} einer neuen Person zugewiesen",
|
||||||
"reassing_hint": "Markierte Dateien einer vorhandenen Person zuweisen",
|
"reassing_hint": "Markierte Dateien einer vorhandenen Person zuweisen",
|
||||||
"recent": "Neueste",
|
"recent": "Neueste",
|
||||||
"recent-albums": "Neueste Alben",
|
"recent_albums": "Neueste Alben",
|
||||||
"recent_searches": "Letzte Suchen",
|
"recent_searches": "Letzte Suchen",
|
||||||
"recently_added": "Kürzlich hinzugefügt",
|
"recently_added": "Kürzlich hinzugefügt",
|
||||||
"recently_added_page_title": "Zuletzt hinzugefügt",
|
"recently_added_page_title": "Zuletzt hinzugefügt",
|
||||||
|
|||||||
+1
-2
@@ -1613,7 +1613,6 @@
|
|||||||
"not_available": "Μ/Δ (Μη Διαθέσιμο)",
|
"not_available": "Μ/Δ (Μη Διαθέσιμο)",
|
||||||
"not_in_any_album": "Σε κανένα άλμπουμ",
|
"not_in_any_album": "Σε κανένα άλμπουμ",
|
||||||
"not_selected": "Δεν επιλέχθηκε",
|
"not_selected": "Δεν επιλέχθηκε",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "Σημείωση: Για να εφαρμόσετε την Ετικέτα Αποθήκευσης σε στοιχεία που έχουν μεταφορτωθεί προηγουμένως, εκτελέστε το",
|
|
||||||
"notes": "Σημειώσεις",
|
"notes": "Σημειώσεις",
|
||||||
"nothing_here_yet": "Τίποτα εδώ ακόμα",
|
"nothing_here_yet": "Τίποτα εδώ ακόμα",
|
||||||
"notification_permission_dialog_content": "Για να ενεργοποιήσετε τις ειδοποιήσεις, μεταβείτε στις Ρυθμίσεις και επιλέξτε να επιτρέπεται.",
|
"notification_permission_dialog_content": "Για να ενεργοποιήσετε τις ειδοποιήσεις, μεταβείτε στις Ρυθμίσεις και επιλέξτε να επιτρέπεται.",
|
||||||
@@ -1815,7 +1814,7 @@
|
|||||||
"reassigned_assets_to_new_person": "Η ανάθεση {count, plural, one {# αρχείου} other {# αρχείων}} σε νέο άτομο",
|
"reassigned_assets_to_new_person": "Η ανάθεση {count, plural, one {# αρχείου} other {# αρχείων}} σε νέο άτομο",
|
||||||
"reassing_hint": "Ανάθεση των επιλεγμένων στοιχείων σε υπάρχον άτομο",
|
"reassing_hint": "Ανάθεση των επιλεγμένων στοιχείων σε υπάρχον άτομο",
|
||||||
"recent": "Πρόσφατα",
|
"recent": "Πρόσφατα",
|
||||||
"recent-albums": "Πρόσφατα άλμπουμ",
|
"recent_albums": "Πρόσφατα άλμπουμ",
|
||||||
"recent_searches": "Πρόσφατες αναζητήσεις",
|
"recent_searches": "Πρόσφατες αναζητήσεις",
|
||||||
"recently_added": "Προστέθηκαν πρόσφατα",
|
"recently_added": "Προστέθηκαν πρόσφατα",
|
||||||
"recently_added_page_title": "Προστέθηκαν Πρόσφατα",
|
"recently_added_page_title": "Προστέθηκαν Πρόσφατα",
|
||||||
|
|||||||
+10
-3
@@ -311,7 +311,7 @@
|
|||||||
"search_jobs": "Search jobs…",
|
"search_jobs": "Search jobs…",
|
||||||
"send_welcome_email": "Send welcome email",
|
"send_welcome_email": "Send welcome email",
|
||||||
"server_external_domain_settings": "External domain",
|
"server_external_domain_settings": "External domain",
|
||||||
"server_external_domain_settings_description": "Domain for public shared links, including http(s)://",
|
"server_external_domain_settings_description": "Domain used for external links",
|
||||||
"server_public_users": "Public Users",
|
"server_public_users": "Public Users",
|
||||||
"server_public_users_description": "All users (name and email) are listed when adding a user to shared albums. When disabled, the user list will only be available to admin users.",
|
"server_public_users_description": "All users (name and email) are listed when adding a user to shared albums. When disabled, the user list will only be available to admin users.",
|
||||||
"server_settings": "Server Settings",
|
"server_settings": "Server Settings",
|
||||||
@@ -794,6 +794,11 @@
|
|||||||
"color": "Color",
|
"color": "Color",
|
||||||
"color_theme": "Color theme",
|
"color_theme": "Color theme",
|
||||||
"command": "Command",
|
"command": "Command",
|
||||||
|
"command_palette_prompt": "Quickly find pages, actions, or commands",
|
||||||
|
"command_palette_to_close": "to close",
|
||||||
|
"command_palette_to_navigate": "to enter",
|
||||||
|
"command_palette_to_select": "to select",
|
||||||
|
"command_palette_to_show_all": "to show all",
|
||||||
"comment_deleted": "Comment deleted",
|
"comment_deleted": "Comment deleted",
|
||||||
"comment_options": "Comment options",
|
"comment_options": "Comment options",
|
||||||
"comments_and_likes": "Comments & likes",
|
"comments_and_likes": "Comments & likes",
|
||||||
@@ -1168,6 +1173,7 @@
|
|||||||
"exif_bottom_sheet_people": "PEOPLE",
|
"exif_bottom_sheet_people": "PEOPLE",
|
||||||
"exif_bottom_sheet_person_add_person": "Add name",
|
"exif_bottom_sheet_person_add_person": "Add name",
|
||||||
"exit_slideshow": "Exit Slideshow",
|
"exit_slideshow": "Exit Slideshow",
|
||||||
|
"expand": "Expand",
|
||||||
"expand_all": "Expand all",
|
"expand_all": "Expand all",
|
||||||
"experimental_settings_new_asset_list_subtitle": "Work in progress",
|
"experimental_settings_new_asset_list_subtitle": "Work in progress",
|
||||||
"experimental_settings_new_asset_list_title": "Enable experimental photo grid",
|
"experimental_settings_new_asset_list_title": "Enable experimental photo grid",
|
||||||
@@ -1613,7 +1619,6 @@
|
|||||||
"not_available": "N/A",
|
"not_available": "N/A",
|
||||||
"not_in_any_album": "Not in any album",
|
"not_in_any_album": "Not in any album",
|
||||||
"not_selected": "Not selected",
|
"not_selected": "Not selected",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "Note: To apply the Storage Label to previously uploaded assets, run the",
|
|
||||||
"notes": "Notes",
|
"notes": "Notes",
|
||||||
"nothing_here_yet": "Nothing here yet",
|
"nothing_here_yet": "Nothing here yet",
|
||||||
"notification_permission_dialog_content": "To enable notifications, go to Settings and select allow.",
|
"notification_permission_dialog_content": "To enable notifications, go to Settings and select allow.",
|
||||||
@@ -1643,6 +1648,7 @@
|
|||||||
"online": "Online",
|
"online": "Online",
|
||||||
"only_favorites": "Only favorites",
|
"only_favorites": "Only favorites",
|
||||||
"open": "Open",
|
"open": "Open",
|
||||||
|
"open_calendar": "Open calendar",
|
||||||
"open_in_map_view": "Open in map view",
|
"open_in_map_view": "Open in map view",
|
||||||
"open_in_openstreetmap": "Open in OpenStreetMap",
|
"open_in_openstreetmap": "Open in OpenStreetMap",
|
||||||
"open_the_search_filters": "Open the search filters",
|
"open_the_search_filters": "Open the search filters",
|
||||||
@@ -1815,7 +1821,7 @@
|
|||||||
"reassigned_assets_to_new_person": "Re-assigned {count, plural, one {# asset} other {# assets}} to a new person",
|
"reassigned_assets_to_new_person": "Re-assigned {count, plural, one {# asset} other {# assets}} to a new person",
|
||||||
"reassing_hint": "Assign selected assets to an existing person",
|
"reassing_hint": "Assign selected assets to an existing person",
|
||||||
"recent": "Recent",
|
"recent": "Recent",
|
||||||
"recent-albums": "Recent albums",
|
"recent_albums": "Recent albums",
|
||||||
"recent_searches": "Recent searches",
|
"recent_searches": "Recent searches",
|
||||||
"recently_added": "Recently added",
|
"recently_added": "Recently added",
|
||||||
"recently_added_page_title": "Recently Added",
|
"recently_added_page_title": "Recently Added",
|
||||||
@@ -2184,6 +2190,7 @@
|
|||||||
"support": "Support",
|
"support": "Support",
|
||||||
"support_and_feedback": "Support & Feedback",
|
"support_and_feedback": "Support & Feedback",
|
||||||
"support_third_party_description": "Your Immich installation was packaged by a third-party. Issues you experience may be caused by that package, so please raise issues with them in the first instance using the links below.",
|
"support_third_party_description": "Your Immich installation was packaged by a third-party. Issues you experience may be caused by that package, so please raise issues with them in the first instance using the links below.",
|
||||||
|
"supporter": "Supporter",
|
||||||
"swap_merge_direction": "Swap merge direction",
|
"swap_merge_direction": "Swap merge direction",
|
||||||
"sync": "Sync",
|
"sync": "Sync",
|
||||||
"sync_albums": "Sync albums",
|
"sync_albums": "Sync albums",
|
||||||
|
|||||||
+13
-6
@@ -311,7 +311,7 @@
|
|||||||
"search_jobs": "Buscar trabajos…",
|
"search_jobs": "Buscar trabajos…",
|
||||||
"send_welcome_email": "Enviar correo de bienvenida",
|
"send_welcome_email": "Enviar correo de bienvenida",
|
||||||
"server_external_domain_settings": "Dominio externo",
|
"server_external_domain_settings": "Dominio externo",
|
||||||
"server_external_domain_settings_description": "Dominio para enlaces públicos compartidos, incluidos http(s)://",
|
"server_external_domain_settings_description": "Dominio usado para enlaces externos",
|
||||||
"server_public_users": "Usuarios públicos",
|
"server_public_users": "Usuarios públicos",
|
||||||
"server_public_users_description": "Cuando se añade un usuario a los álbumes compartidos, todos los usuarios aparecen en una lista con su nombre y su correo electrónico. Si deshabilita esta opción, solo los administradores podrán ver la lista de usuarios.",
|
"server_public_users_description": "Cuando se añade un usuario a los álbumes compartidos, todos los usuarios aparecen en una lista con su nombre y su correo electrónico. Si deshabilita esta opción, solo los administradores podrán ver la lista de usuarios.",
|
||||||
"server_settings": "Configuración del servidor",
|
"server_settings": "Configuración del servidor",
|
||||||
@@ -794,6 +794,11 @@
|
|||||||
"color": "Color",
|
"color": "Color",
|
||||||
"color_theme": "Color del tema",
|
"color_theme": "Color del tema",
|
||||||
"command": "Comando",
|
"command": "Comando",
|
||||||
|
"command_palette_prompt": "Encuentra rápidamente páginas, acciones o comandos",
|
||||||
|
"command_palette_to_close": "para cerrar",
|
||||||
|
"command_palette_to_navigate": "para entrar",
|
||||||
|
"command_palette_to_select": "para seleccionar",
|
||||||
|
"command_palette_to_show_all": "para mostrar todo",
|
||||||
"comment_deleted": "Comentario borrado",
|
"comment_deleted": "Comentario borrado",
|
||||||
"comment_options": "Opciones de comentarios",
|
"comment_options": "Opciones de comentarios",
|
||||||
"comments_and_likes": "Comentarios y me gusta",
|
"comments_and_likes": "Comentarios y me gusta",
|
||||||
@@ -1168,6 +1173,7 @@
|
|||||||
"exif_bottom_sheet_people": "PERSONAS",
|
"exif_bottom_sheet_people": "PERSONAS",
|
||||||
"exif_bottom_sheet_person_add_person": "Añadir nombre",
|
"exif_bottom_sheet_person_add_person": "Añadir nombre",
|
||||||
"exit_slideshow": "Salir de la presentación",
|
"exit_slideshow": "Salir de la presentación",
|
||||||
|
"expand": "Expandir",
|
||||||
"expand_all": "Expandir todo",
|
"expand_all": "Expandir todo",
|
||||||
"experimental_settings_new_asset_list_subtitle": "Trabajo en progreso",
|
"experimental_settings_new_asset_list_subtitle": "Trabajo en progreso",
|
||||||
"experimental_settings_new_asset_list_title": "Habilitar cuadrícula fotográfica experimental",
|
"experimental_settings_new_asset_list_title": "Habilitar cuadrícula fotográfica experimental",
|
||||||
@@ -1613,7 +1619,6 @@
|
|||||||
"not_available": "N/D",
|
"not_available": "N/D",
|
||||||
"not_in_any_album": "Sin álbum",
|
"not_in_any_album": "Sin álbum",
|
||||||
"not_selected": "No seleccionado",
|
"not_selected": "No seleccionado",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "Nota: Para aplicar la etiqueta de almacenamiento a los recursos que ya se subieron, ejecute la",
|
|
||||||
"notes": "Notas",
|
"notes": "Notas",
|
||||||
"nothing_here_yet": "Sin nada aún",
|
"nothing_here_yet": "Sin nada aún",
|
||||||
"notification_permission_dialog_content": "Para activar las notificaciones, ve a Configuración y selecciona permitir.",
|
"notification_permission_dialog_content": "Para activar las notificaciones, ve a Configuración y selecciona permitir.",
|
||||||
@@ -1643,6 +1648,7 @@
|
|||||||
"online": "En línea",
|
"online": "En línea",
|
||||||
"only_favorites": "Solo favoritos",
|
"only_favorites": "Solo favoritos",
|
||||||
"open": "Abierto",
|
"open": "Abierto",
|
||||||
|
"open_calendar": "Abrir calendario",
|
||||||
"open_in_map_view": "Abrir en la vista del mapa",
|
"open_in_map_view": "Abrir en la vista del mapa",
|
||||||
"open_in_openstreetmap": "Abrir en OpenStreetMap",
|
"open_in_openstreetmap": "Abrir en OpenStreetMap",
|
||||||
"open_the_search_filters": "Abre los filtros de búsqueda",
|
"open_the_search_filters": "Abre los filtros de búsqueda",
|
||||||
@@ -1765,7 +1771,7 @@
|
|||||||
"profile_picture_set": "Conjunto de imágenes de perfil.",
|
"profile_picture_set": "Conjunto de imágenes de perfil.",
|
||||||
"public_album": "Álbum público",
|
"public_album": "Álbum público",
|
||||||
"public_share": "Compartir públicamente",
|
"public_share": "Compartir públicamente",
|
||||||
"purchase_account_info": "Seguidor",
|
"purchase_account_info": "Colaborador",
|
||||||
"purchase_activated_subtitle": "Gracias por apoyar a Immich y al software de código abierto",
|
"purchase_activated_subtitle": "Gracias por apoyar a Immich y al software de código abierto",
|
||||||
"purchase_activated_time": "Activado el {date}",
|
"purchase_activated_time": "Activado el {date}",
|
||||||
"purchase_activated_title": "Su clave ha sido activada correctamente",
|
"purchase_activated_title": "Su clave ha sido activada correctamente",
|
||||||
@@ -1778,7 +1784,7 @@
|
|||||||
"purchase_button_select": "Seleccionar",
|
"purchase_button_select": "Seleccionar",
|
||||||
"purchase_failed_activation": "¡Error al activar! ¡Por favor, revisa tu correo electrónico para obtener la clave del producto correcta!",
|
"purchase_failed_activation": "¡Error al activar! ¡Por favor, revisa tu correo electrónico para obtener la clave del producto correcta!",
|
||||||
"purchase_individual_description_1": "Para un usuario",
|
"purchase_individual_description_1": "Para un usuario",
|
||||||
"purchase_individual_description_2": "Estado de soporte",
|
"purchase_individual_description_2": "Estatus de colaborador",
|
||||||
"purchase_individual_title": "Individual",
|
"purchase_individual_title": "Individual",
|
||||||
"purchase_input_suggestion": "¿Tiene una clave de producto? Introdúzcala a continuación",
|
"purchase_input_suggestion": "¿Tiene una clave de producto? Introdúzcala a continuación",
|
||||||
"purchase_license_subtitle": "Compre Immich para apoyar el desarrollo continuo del servicio",
|
"purchase_license_subtitle": "Compre Immich para apoyar el desarrollo continuo del servicio",
|
||||||
@@ -1794,7 +1800,7 @@
|
|||||||
"purchase_remove_server_product_key": "Eliminar la clave de producto del servidor",
|
"purchase_remove_server_product_key": "Eliminar la clave de producto del servidor",
|
||||||
"purchase_remove_server_product_key_prompt": "¿Está seguro de que desea eliminar la clave de producto del servidor?",
|
"purchase_remove_server_product_key_prompt": "¿Está seguro de que desea eliminar la clave de producto del servidor?",
|
||||||
"purchase_server_description_1": "Para todo el servidor",
|
"purchase_server_description_1": "Para todo el servidor",
|
||||||
"purchase_server_description_2": "Estado del soporte",
|
"purchase_server_description_2": "Estatus de colaborador",
|
||||||
"purchase_server_title": "Servidor",
|
"purchase_server_title": "Servidor",
|
||||||
"purchase_settings_server_activated": "La clave del producto del servidor la administra el administrador",
|
"purchase_settings_server_activated": "La clave del producto del servidor la administra el administrador",
|
||||||
"query_asset_id": "Consultar ID de recurso",
|
"query_asset_id": "Consultar ID de recurso",
|
||||||
@@ -1815,7 +1821,7 @@
|
|||||||
"reassigned_assets_to_new_person": "Reasignado {count, plural, one {# recurso} other {# recursos}} a un nuevo usuario",
|
"reassigned_assets_to_new_person": "Reasignado {count, plural, one {# recurso} other {# recursos}} a un nuevo usuario",
|
||||||
"reassing_hint": "Asignar recursos seleccionados a una persona existente",
|
"reassing_hint": "Asignar recursos seleccionados a una persona existente",
|
||||||
"recent": "Reciente",
|
"recent": "Reciente",
|
||||||
"recent-albums": "Últimos álbumes",
|
"recent_albums": "Últimos álbumes",
|
||||||
"recent_searches": "Búsquedas recientes",
|
"recent_searches": "Búsquedas recientes",
|
||||||
"recently_added": "Añadidos recientemente",
|
"recently_added": "Añadidos recientemente",
|
||||||
"recently_added_page_title": "Recién añadidos",
|
"recently_added_page_title": "Recién añadidos",
|
||||||
@@ -2184,6 +2190,7 @@
|
|||||||
"support": "Soporte",
|
"support": "Soporte",
|
||||||
"support_and_feedback": "Soporte y comentarios",
|
"support_and_feedback": "Soporte y comentarios",
|
||||||
"support_third_party_description": "Esta instalación de Immich fue empaquetada por un tercero. Los problemas actuales pueden ser ocasionados por ese paquete; por favor, discuta sus inconvenientes con el empaquetador antes de usar los enlaces de abajo.",
|
"support_third_party_description": "Esta instalación de Immich fue empaquetada por un tercero. Los problemas actuales pueden ser ocasionados por ese paquete; por favor, discuta sus inconvenientes con el empaquetador antes de usar los enlaces de abajo.",
|
||||||
|
"supporter": "Colaborador",
|
||||||
"swap_merge_direction": "Alternar dirección de mezcla",
|
"swap_merge_direction": "Alternar dirección de mezcla",
|
||||||
"sync": "Sincronizar",
|
"sync": "Sincronizar",
|
||||||
"sync_albums": "Sincronizar álbumes",
|
"sync_albums": "Sincronizar álbumes",
|
||||||
|
|||||||
+10
-3
@@ -311,7 +311,7 @@
|
|||||||
"search_jobs": "Otsi töödet…",
|
"search_jobs": "Otsi töödet…",
|
||||||
"send_welcome_email": "Saada tervituskiri",
|
"send_welcome_email": "Saada tervituskiri",
|
||||||
"server_external_domain_settings": "Väline domeen",
|
"server_external_domain_settings": "Väline domeen",
|
||||||
"server_external_domain_settings_description": "Domeen avalikult jagatud linkide jaoks, k.a. http(s)://",
|
"server_external_domain_settings_description": "Domeen väliste linkide jaoks",
|
||||||
"server_public_users": "Avalikud kasutajad",
|
"server_public_users": "Avalikud kasutajad",
|
||||||
"server_public_users_description": "Kasutaja jagatud albumisse lisamisel kuvatakse kõiki kasutajaid (nime ja e-posti aadressiga). Kui keelatud, kuvatakse kasutajate nimekirja ainult administraatoritele.",
|
"server_public_users_description": "Kasutaja jagatud albumisse lisamisel kuvatakse kõiki kasutajaid (nime ja e-posti aadressiga). Kui keelatud, kuvatakse kasutajate nimekirja ainult administraatoritele.",
|
||||||
"server_settings": "Serveri seaded",
|
"server_settings": "Serveri seaded",
|
||||||
@@ -794,6 +794,11 @@
|
|||||||
"color": "Värv",
|
"color": "Värv",
|
||||||
"color_theme": "Värviteema",
|
"color_theme": "Värviteema",
|
||||||
"command": "Käsk",
|
"command": "Käsk",
|
||||||
|
"command_palette_prompt": "Leia kiirelt lehti, tegevusi või käske",
|
||||||
|
"command_palette_to_close": "sulge",
|
||||||
|
"command_palette_to_navigate": "sisene",
|
||||||
|
"command_palette_to_select": "vali",
|
||||||
|
"command_palette_to_show_all": "näita kõiki",
|
||||||
"comment_deleted": "Kommentaar kustutatud",
|
"comment_deleted": "Kommentaar kustutatud",
|
||||||
"comment_options": "Kommentaari valikud",
|
"comment_options": "Kommentaari valikud",
|
||||||
"comments_and_likes": "Kommentaarid ja meeldimised",
|
"comments_and_likes": "Kommentaarid ja meeldimised",
|
||||||
@@ -1168,6 +1173,7 @@
|
|||||||
"exif_bottom_sheet_people": "ISIKUD",
|
"exif_bottom_sheet_people": "ISIKUD",
|
||||||
"exif_bottom_sheet_person_add_person": "Lisa nimi",
|
"exif_bottom_sheet_person_add_person": "Lisa nimi",
|
||||||
"exit_slideshow": "Sulge slaidiesitlus",
|
"exit_slideshow": "Sulge slaidiesitlus",
|
||||||
|
"expand": "Laienda",
|
||||||
"expand_all": "Näita kõik",
|
"expand_all": "Näita kõik",
|
||||||
"experimental_settings_new_asset_list_subtitle": "Töös",
|
"experimental_settings_new_asset_list_subtitle": "Töös",
|
||||||
"experimental_settings_new_asset_list_title": "Luba eksperimentaalne fotoruudistik",
|
"experimental_settings_new_asset_list_title": "Luba eksperimentaalne fotoruudistik",
|
||||||
@@ -1613,7 +1619,6 @@
|
|||||||
"not_available": "Pole saadaval",
|
"not_available": "Pole saadaval",
|
||||||
"not_in_any_album": "Pole üheski albumis",
|
"not_in_any_album": "Pole üheski albumis",
|
||||||
"not_selected": "Ei ole valitud",
|
"not_selected": "Ei ole valitud",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "Märkus: Et rakendada talletussilt varem üleslaaditud üksustele, käivita",
|
|
||||||
"notes": "Märkused",
|
"notes": "Märkused",
|
||||||
"nothing_here_yet": "Siin pole veel midagi",
|
"nothing_here_yet": "Siin pole veel midagi",
|
||||||
"notification_permission_dialog_content": "Teavituste lubamiseks mine Seadetesse ja vali lubamine.",
|
"notification_permission_dialog_content": "Teavituste lubamiseks mine Seadetesse ja vali lubamine.",
|
||||||
@@ -1643,6 +1648,7 @@
|
|||||||
"online": "Ühendatud",
|
"online": "Ühendatud",
|
||||||
"only_favorites": "Ainult lemmikud",
|
"only_favorites": "Ainult lemmikud",
|
||||||
"open": "Ava",
|
"open": "Ava",
|
||||||
|
"open_calendar": "Ava kalender",
|
||||||
"open_in_map_view": "Ava kaardi vaates",
|
"open_in_map_view": "Ava kaardi vaates",
|
||||||
"open_in_openstreetmap": "Ava OpenStreetMap",
|
"open_in_openstreetmap": "Ava OpenStreetMap",
|
||||||
"open_the_search_filters": "Ava otsingufiltrid",
|
"open_the_search_filters": "Ava otsingufiltrid",
|
||||||
@@ -1815,7 +1821,7 @@
|
|||||||
"reassigned_assets_to_new_person": "{count, plural, one {# üksus} other {# üksust}} seostatud uue isikuga",
|
"reassigned_assets_to_new_person": "{count, plural, one {# üksus} other {# üksust}} seostatud uue isikuga",
|
||||||
"reassing_hint": "Seosta valitud üksused olemasoleva isikuga",
|
"reassing_hint": "Seosta valitud üksused olemasoleva isikuga",
|
||||||
"recent": "Hiljutine",
|
"recent": "Hiljutine",
|
||||||
"recent-albums": "Hiljutised albumid",
|
"recent_albums": "Hiljutised albumid",
|
||||||
"recent_searches": "Hiljutised otsingud",
|
"recent_searches": "Hiljutised otsingud",
|
||||||
"recently_added": "Hiljuti lisatud",
|
"recently_added": "Hiljuti lisatud",
|
||||||
"recently_added_page_title": "Hiljuti lisatud",
|
"recently_added_page_title": "Hiljuti lisatud",
|
||||||
@@ -2184,6 +2190,7 @@
|
|||||||
"support": "Tugi",
|
"support": "Tugi",
|
||||||
"support_and_feedback": "Tugi ja tagasiside",
|
"support_and_feedback": "Tugi ja tagasiside",
|
||||||
"support_third_party_description": "Sinu Immich'i install on kolmanda osapoole pakendatud. Probleemid, mida täheldad, võivad olla põhjustatud selle pakendamise poolt, seega võta esmajärjekorras nendega ühendust, kasutades allolevaid linke.",
|
"support_third_party_description": "Sinu Immich'i install on kolmanda osapoole pakendatud. Probleemid, mida täheldad, võivad olla põhjustatud selle pakendamise poolt, seega võta esmajärjekorras nendega ühendust, kasutades allolevaid linke.",
|
||||||
|
"supporter": "Toetaja",
|
||||||
"swap_merge_direction": "Muuda ühendamise suunda",
|
"swap_merge_direction": "Muuda ühendamise suunda",
|
||||||
"sync": "Sünkrooni",
|
"sync": "Sünkrooni",
|
||||||
"sync_albums": "Sünkrooni albumid",
|
"sync_albums": "Sünkrooni albumid",
|
||||||
|
|||||||
+1
-2
@@ -1568,7 +1568,6 @@
|
|||||||
"not_available": "N/A",
|
"not_available": "N/A",
|
||||||
"not_in_any_album": "Ei yhdessäkään albumissa",
|
"not_in_any_album": "Ei yhdessäkään albumissa",
|
||||||
"not_selected": "Ei valittu",
|
"not_selected": "Ei valittu",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "Huom: Jotta voit soveltaa tallennustunnistetta aiemmin ladattuihin kohteisiin, suorita",
|
|
||||||
"notes": "Muistiinpanot",
|
"notes": "Muistiinpanot",
|
||||||
"nothing_here_yet": "Ei vielä mitään",
|
"nothing_here_yet": "Ei vielä mitään",
|
||||||
"notification_permission_dialog_content": "Ottaaksesi ilmoitukset käyttöön, siirry asetuksiin ja valitse 'salli'.",
|
"notification_permission_dialog_content": "Ottaaksesi ilmoitukset käyttöön, siirry asetuksiin ja valitse 'salli'.",
|
||||||
@@ -1767,7 +1766,7 @@
|
|||||||
"reassigned_assets_to_new_person": "Määritetty {count, plural, one {# media} other {# mediaa}} uudelle henkilölle",
|
"reassigned_assets_to_new_person": "Määritetty {count, plural, one {# media} other {# mediaa}} uudelle henkilölle",
|
||||||
"reassing_hint": "Määritä valitut mediat käyttäjälle",
|
"reassing_hint": "Määritä valitut mediat käyttäjälle",
|
||||||
"recent": "Viimeisin",
|
"recent": "Viimeisin",
|
||||||
"recent-albums": "Viimeisimmät albumit",
|
"recent_albums": "Viimeisimmät albumit",
|
||||||
"recent_searches": "Edelliset haut",
|
"recent_searches": "Edelliset haut",
|
||||||
"recently_added": "Viimeksi lisätty",
|
"recently_added": "Viimeksi lisätty",
|
||||||
"recently_added_page_title": "Viimeksi lisätyt",
|
"recently_added_page_title": "Viimeksi lisätyt",
|
||||||
|
|||||||
+10
-3
@@ -311,7 +311,7 @@
|
|||||||
"search_jobs": "Recherche des tâches…",
|
"search_jobs": "Recherche des tâches…",
|
||||||
"send_welcome_email": "Envoyer un courriel de bienvenue",
|
"send_welcome_email": "Envoyer un courriel de bienvenue",
|
||||||
"server_external_domain_settings": "Domaine externe",
|
"server_external_domain_settings": "Domaine externe",
|
||||||
"server_external_domain_settings_description": "Nom de domaine pour les liens partagés publics, y compris http(s)://",
|
"server_external_domain_settings_description": "Nom de domaine utilisé pour les liens externes",
|
||||||
"server_public_users": "Utilisateurs publics",
|
"server_public_users": "Utilisateurs publics",
|
||||||
"server_public_users_description": "Tous les utilisateurs (nom et courriel) sont listés lors de l'ajout d'un utilisateur à des albums partagés. Quand cela est désactivé, la liste des utilisateurs est uniquement disponible pour les comptes administrateurs.",
|
"server_public_users_description": "Tous les utilisateurs (nom et courriel) sont listés lors de l'ajout d'un utilisateur à des albums partagés. Quand cela est désactivé, la liste des utilisateurs est uniquement disponible pour les comptes administrateurs.",
|
||||||
"server_settings": "Paramètres du serveur",
|
"server_settings": "Paramètres du serveur",
|
||||||
@@ -794,6 +794,11 @@
|
|||||||
"color": "Couleur",
|
"color": "Couleur",
|
||||||
"color_theme": "Thème de couleur",
|
"color_theme": "Thème de couleur",
|
||||||
"command": "Commande",
|
"command": "Commande",
|
||||||
|
"command_palette_prompt": "Trouver rapidement des pages, actions ou commandes",
|
||||||
|
"command_palette_to_close": "pour fermer",
|
||||||
|
"command_palette_to_navigate": "pour entrer",
|
||||||
|
"command_palette_to_select": "pour sélectionner",
|
||||||
|
"command_palette_to_show_all": "pour tout afficher",
|
||||||
"comment_deleted": "Commentaire supprimé",
|
"comment_deleted": "Commentaire supprimé",
|
||||||
"comment_options": "Options des commentaires",
|
"comment_options": "Options des commentaires",
|
||||||
"comments_and_likes": "Commentaires et \"J'aime\"",
|
"comments_and_likes": "Commentaires et \"J'aime\"",
|
||||||
@@ -1168,6 +1173,7 @@
|
|||||||
"exif_bottom_sheet_people": "PERSONNES",
|
"exif_bottom_sheet_people": "PERSONNES",
|
||||||
"exif_bottom_sheet_person_add_person": "Ajouter un nom",
|
"exif_bottom_sheet_person_add_person": "Ajouter un nom",
|
||||||
"exit_slideshow": "Quitter le diaporama",
|
"exit_slideshow": "Quitter le diaporama",
|
||||||
|
"expand": "Développer",
|
||||||
"expand_all": "Tout développer",
|
"expand_all": "Tout développer",
|
||||||
"experimental_settings_new_asset_list_subtitle": "En cours de développement",
|
"experimental_settings_new_asset_list_subtitle": "En cours de développement",
|
||||||
"experimental_settings_new_asset_list_title": "Activer la grille de photos expérimentale",
|
"experimental_settings_new_asset_list_title": "Activer la grille de photos expérimentale",
|
||||||
@@ -1613,7 +1619,6 @@
|
|||||||
"not_available": "N/A",
|
"not_available": "N/A",
|
||||||
"not_in_any_album": "Dans aucun album",
|
"not_in_any_album": "Dans aucun album",
|
||||||
"not_selected": "Non sélectionné",
|
"not_selected": "Non sélectionné",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "Note : Pour appliquer l'étiquette de stockage aux médias précédemment envoyés, exécutez",
|
|
||||||
"notes": "Notes",
|
"notes": "Notes",
|
||||||
"nothing_here_yet": "Rien pour le moment",
|
"nothing_here_yet": "Rien pour le moment",
|
||||||
"notification_permission_dialog_content": "Pour activer les notifications, allez dans Paramètres et sélectionnez Autoriser.",
|
"notification_permission_dialog_content": "Pour activer les notifications, allez dans Paramètres et sélectionnez Autoriser.",
|
||||||
@@ -1643,6 +1648,7 @@
|
|||||||
"online": "En ligne",
|
"online": "En ligne",
|
||||||
"only_favorites": "Uniquement les favoris",
|
"only_favorites": "Uniquement les favoris",
|
||||||
"open": "Ouvrir",
|
"open": "Ouvrir",
|
||||||
|
"open_calendar": "Ouvrir le calendrier",
|
||||||
"open_in_map_view": "Montrer sur la carte",
|
"open_in_map_view": "Montrer sur la carte",
|
||||||
"open_in_openstreetmap": "Ouvrir dans OpenStreetMap",
|
"open_in_openstreetmap": "Ouvrir dans OpenStreetMap",
|
||||||
"open_the_search_filters": "Ouvrir les filtres de recherche",
|
"open_the_search_filters": "Ouvrir les filtres de recherche",
|
||||||
@@ -1815,7 +1821,7 @@
|
|||||||
"reassigned_assets_to_new_person": "{count, plural, one {# média réattribué} other {# médias réattribués}} à une nouvelle personne",
|
"reassigned_assets_to_new_person": "{count, plural, one {# média réattribué} other {# médias réattribués}} à une nouvelle personne",
|
||||||
"reassing_hint": "Attribuer ces médias à une personne existante",
|
"reassing_hint": "Attribuer ces médias à une personne existante",
|
||||||
"recent": "Récent",
|
"recent": "Récent",
|
||||||
"recent-albums": "Albums récents",
|
"recent_albums": "Albums récents",
|
||||||
"recent_searches": "Recherches récentes",
|
"recent_searches": "Recherches récentes",
|
||||||
"recently_added": "Récemment ajouté",
|
"recently_added": "Récemment ajouté",
|
||||||
"recently_added_page_title": "Récemment ajouté",
|
"recently_added_page_title": "Récemment ajouté",
|
||||||
@@ -2184,6 +2190,7 @@
|
|||||||
"support": "Soutenir",
|
"support": "Soutenir",
|
||||||
"support_and_feedback": "Support & Retours",
|
"support_and_feedback": "Support & Retours",
|
||||||
"support_third_party_description": "Votre installation d'Immich est packagée via une application tierce. Si vous rencontrez des anomalies, elles peuvent venir de ce packaging tiers, merci de créer les anomalies avec ces tiers en premier lieu en utilisant les liens ci-dessous.",
|
"support_third_party_description": "Votre installation d'Immich est packagée via une application tierce. Si vous rencontrez des anomalies, elles peuvent venir de ce packaging tiers, merci de créer les anomalies avec ces tiers en premier lieu en utilisant les liens ci-dessous.",
|
||||||
|
"supporter": "Contributeur",
|
||||||
"swap_merge_direction": "Inverser la direction de fusion",
|
"swap_merge_direction": "Inverser la direction de fusion",
|
||||||
"sync": "Synchroniser",
|
"sync": "Synchroniser",
|
||||||
"sync_albums": "Synchroniser dans des albums",
|
"sync_albums": "Synchroniser dans des albums",
|
||||||
|
|||||||
+10
-3
@@ -311,7 +311,7 @@
|
|||||||
"search_jobs": "Cuardaigh poist…",
|
"search_jobs": "Cuardaigh poist…",
|
||||||
"send_welcome_email": "Seol ríomhphost fáilte",
|
"send_welcome_email": "Seol ríomhphost fáilte",
|
||||||
"server_external_domain_settings": "Fearann seachtrach",
|
"server_external_domain_settings": "Fearann seachtrach",
|
||||||
"server_external_domain_settings_description": "Fearann le haghaidh naisc chomhroinnte poiblí, lena n-áirítear http(s)://",
|
"server_external_domain_settings_description": "Fearann a úsáidtear le haghaidh naisc sheachtracha",
|
||||||
"server_public_users": "Úsáideoirí Poiblí",
|
"server_public_users": "Úsáideoirí Poiblí",
|
||||||
"server_public_users_description": "Liostaítear gach úsáideoir (ainm agus ríomhphost) nuair a chuirtear úsáideoir le halbaim chomhroinnte. Nuair a bhíonn sé díchumasaithe, ní bheidh an liosta úsáideoirí ar fáil ach d’úsáideoirí riarthóra.",
|
"server_public_users_description": "Liostaítear gach úsáideoir (ainm agus ríomhphost) nuair a chuirtear úsáideoir le halbaim chomhroinnte. Nuair a bhíonn sé díchumasaithe, ní bheidh an liosta úsáideoirí ar fáil ach d’úsáideoirí riarthóra.",
|
||||||
"server_settings": "Socruithe Freastalaí",
|
"server_settings": "Socruithe Freastalaí",
|
||||||
@@ -794,6 +794,11 @@
|
|||||||
"color": "Dath",
|
"color": "Dath",
|
||||||
"color_theme": "Téama datha",
|
"color_theme": "Téama datha",
|
||||||
"command": "Ordú",
|
"command": "Ordú",
|
||||||
|
"command_palette_prompt": "Aimsigh leathanaigh, gníomhartha nó orduithe go tapa",
|
||||||
|
"command_palette_to_close": "a dhúnadh",
|
||||||
|
"command_palette_to_navigate": "dul isteach",
|
||||||
|
"command_palette_to_select": "a roghnú",
|
||||||
|
"command_palette_to_show_all": "chun gach rud a thaispeáint",
|
||||||
"comment_deleted": "Trácht scriosta",
|
"comment_deleted": "Trácht scriosta",
|
||||||
"comment_options": "Roghanna tráchta",
|
"comment_options": "Roghanna tráchta",
|
||||||
"comments_and_likes": "Tráchtanna & Is maith liom",
|
"comments_and_likes": "Tráchtanna & Is maith liom",
|
||||||
@@ -1168,6 +1173,7 @@
|
|||||||
"exif_bottom_sheet_people": "DAOINE",
|
"exif_bottom_sheet_people": "DAOINE",
|
||||||
"exif_bottom_sheet_person_add_person": "Cuir ainm leis",
|
"exif_bottom_sheet_person_add_person": "Cuir ainm leis",
|
||||||
"exit_slideshow": "Scoir an Taispeántais Sleamhnán",
|
"exit_slideshow": "Scoir an Taispeántais Sleamhnán",
|
||||||
|
"expand": "Leathnaigh",
|
||||||
"expand_all": "Leathnaigh gach rud",
|
"expand_all": "Leathnaigh gach rud",
|
||||||
"experimental_settings_new_asset_list_subtitle": "Obair ar siúl",
|
"experimental_settings_new_asset_list_subtitle": "Obair ar siúl",
|
||||||
"experimental_settings_new_asset_list_title": "Cumasaigh eangach grianghraf turgnamhach",
|
"experimental_settings_new_asset_list_title": "Cumasaigh eangach grianghraf turgnamhach",
|
||||||
@@ -1613,7 +1619,6 @@
|
|||||||
"not_available": "N/B",
|
"not_available": "N/B",
|
||||||
"not_in_any_album": "Ní in aon albam",
|
"not_in_any_album": "Ní in aon albam",
|
||||||
"not_selected": "Níor roghnaíodh",
|
"not_selected": "Níor roghnaíodh",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "Nóta: Chun an Lipéad Stórála a chur i bhfeidhm ar shócmhainní a uaslódáileadh roimhe seo, rith an",
|
|
||||||
"notes": "Nótaí",
|
"notes": "Nótaí",
|
||||||
"nothing_here_yet": "Níl aon rud anseo fós",
|
"nothing_here_yet": "Níl aon rud anseo fós",
|
||||||
"notification_permission_dialog_content": "Chun fógraí a chumasú, téigh go Socruithe agus roghnaigh ceadaigh.",
|
"notification_permission_dialog_content": "Chun fógraí a chumasú, téigh go Socruithe agus roghnaigh ceadaigh.",
|
||||||
@@ -1643,6 +1648,7 @@
|
|||||||
"online": "Ar líne",
|
"online": "Ar líne",
|
||||||
"only_favorites": "Is fearr leat amháin",
|
"only_favorites": "Is fearr leat amháin",
|
||||||
"open": "Oscail",
|
"open": "Oscail",
|
||||||
|
"open_calendar": "Oscail an féilire",
|
||||||
"open_in_map_view": "Oscail i radharc léarscáile",
|
"open_in_map_view": "Oscail i radharc léarscáile",
|
||||||
"open_in_openstreetmap": "Oscail in OpenStreetMap",
|
"open_in_openstreetmap": "Oscail in OpenStreetMap",
|
||||||
"open_the_search_filters": "Oscail na scagairí cuardaigh",
|
"open_the_search_filters": "Oscail na scagairí cuardaigh",
|
||||||
@@ -1815,7 +1821,7 @@
|
|||||||
"reassigned_assets_to_new_person": "Athshannadh {count, plural, one {# sócmhainn} other {# sócmhainní}} do dhuine nua",
|
"reassigned_assets_to_new_person": "Athshannadh {count, plural, one {# sócmhainn} other {# sócmhainní}} do dhuine nua",
|
||||||
"reassing_hint": "Sannadh sócmhainní roghnaithe do dhuine atá ann cheana féin",
|
"reassing_hint": "Sannadh sócmhainní roghnaithe do dhuine atá ann cheana féin",
|
||||||
"recent": "Le déanaí",
|
"recent": "Le déanaí",
|
||||||
"recent-albums": "Albaim le déanaí",
|
"recent_albums": "Albaim le déanaí",
|
||||||
"recent_searches": "Cuardaigh le déanaí",
|
"recent_searches": "Cuardaigh le déanaí",
|
||||||
"recently_added": "Cuireadh leis le déanaí",
|
"recently_added": "Cuireadh leis le déanaí",
|
||||||
"recently_added_page_title": "Curtha leis le Déanaí",
|
"recently_added_page_title": "Curtha leis le Déanaí",
|
||||||
@@ -2184,6 +2190,7 @@
|
|||||||
"support": "Tacaíocht",
|
"support": "Tacaíocht",
|
||||||
"support_and_feedback": "Tacaíocht & Aiseolas",
|
"support_and_feedback": "Tacaíocht & Aiseolas",
|
||||||
"support_third_party_description": "Rinne tríú páirtí pacáiste de do shuiteáil Immich. D’fhéadfadh sé gur an pacáiste sin ba chúis le fadhbanna a bhíonn agat, mar sin tabhair ceisteanna dóibh ar dtús trí na naisc thíos a úsáid.",
|
"support_third_party_description": "Rinne tríú páirtí pacáiste de do shuiteáil Immich. D’fhéadfadh sé gur an pacáiste sin ba chúis le fadhbanna a bhíonn agat, mar sin tabhair ceisteanna dóibh ar dtús trí na naisc thíos a úsáid.",
|
||||||
|
"supporter": "Tacaíochtaí",
|
||||||
"swap_merge_direction": "Malartaigh treo an chumaisc",
|
"swap_merge_direction": "Malartaigh treo an chumaisc",
|
||||||
"sync": "Sioncrónaigh",
|
"sync": "Sioncrónaigh",
|
||||||
"sync_albums": "Sioncrónaigh albaim",
|
"sync_albums": "Sioncrónaigh albaim",
|
||||||
|
|||||||
+1
-2
@@ -1613,7 +1613,6 @@
|
|||||||
"not_available": "Non dispoñible",
|
"not_available": "Non dispoñible",
|
||||||
"not_in_any_album": "Non está en ningún álbum",
|
"not_in_any_album": "Non está en ningún álbum",
|
||||||
"not_selected": "Non seleccionado",
|
"not_selected": "Non seleccionado",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "Nota: Para aplicar a Etiqueta de Almacenamento a activos cargados previamente, execute o",
|
|
||||||
"notes": "Notas",
|
"notes": "Notas",
|
||||||
"nothing_here_yet": "Aínda nada por aquí",
|
"nothing_here_yet": "Aínda nada por aquí",
|
||||||
"notification_permission_dialog_content": "Para activar as notificacións, vaia a Axustes e seleccione permitir.",
|
"notification_permission_dialog_content": "Para activar as notificacións, vaia a Axustes e seleccione permitir.",
|
||||||
@@ -1815,7 +1814,7 @@
|
|||||||
"reassigned_assets_to_new_person": "Reasignados {count, plural, one {# activo} other {# activos}} a unha nova persoa",
|
"reassigned_assets_to_new_person": "Reasignados {count, plural, one {# activo} other {# activos}} a unha nova persoa",
|
||||||
"reassing_hint": "Asignar activos seleccionados a unha persoa existente",
|
"reassing_hint": "Asignar activos seleccionados a unha persoa existente",
|
||||||
"recent": "Recente",
|
"recent": "Recente",
|
||||||
"recent-albums": "Álbums recentes",
|
"recent_albums": "Álbums recentes",
|
||||||
"recent_searches": "Buscas recentes",
|
"recent_searches": "Buscas recentes",
|
||||||
"recently_added": "Engadido recentemente",
|
"recently_added": "Engadido recentemente",
|
||||||
"recently_added_page_title": "Engadido Recentemente",
|
"recently_added_page_title": "Engadido Recentemente",
|
||||||
|
|||||||
@@ -1491,7 +1491,6 @@
|
|||||||
"not_available": "N/A",
|
"not_available": "N/A",
|
||||||
"not_in_any_album": "I keinem Album",
|
"not_in_any_album": "I keinem Album",
|
||||||
"not_selected": "Nöd usgwählt",
|
"not_selected": "Nöd usgwählt",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "Hiwiis: Zum e Spycherpfad-Bezeichnig aawehde, start de",
|
|
||||||
"notes": "Notize",
|
"notes": "Notize",
|
||||||
"nothing_here_yet": "No nüt do",
|
"nothing_here_yet": "No nüt do",
|
||||||
"notification_permission_dialog_content": "Zum Benachrichtige aktiviere, navigier zu Iistellige und drück \"Erlaube\".",
|
"notification_permission_dialog_content": "Zum Benachrichtige aktiviere, navigier zu Iistellige und drück \"Erlaube\".",
|
||||||
|
|||||||
+1
-2
@@ -1491,7 +1491,6 @@
|
|||||||
"not_available": "לא רלוונטי",
|
"not_available": "לא רלוונטי",
|
||||||
"not_in_any_album": "לא בשום אלבום",
|
"not_in_any_album": "לא בשום אלבום",
|
||||||
"not_selected": "לא נבחרו",
|
"not_selected": "לא נבחרו",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "הערה: כדי להחיל את תווית האחסון על תמונות שהועלו בעבר, הפעל את",
|
|
||||||
"notes": "הערות",
|
"notes": "הערות",
|
||||||
"nothing_here_yet": "אין כאן כלום עדיין",
|
"nothing_here_yet": "אין כאן כלום עדיין",
|
||||||
"notification_permission_dialog_content": "כדי לאפשר התראות, לך להגדרות המכשיר ובחר אפשר.",
|
"notification_permission_dialog_content": "כדי לאפשר התראות, לך להגדרות המכשיר ובחר אפשר.",
|
||||||
@@ -1687,7 +1686,7 @@
|
|||||||
"reassigned_assets_to_new_person": "{count, plural, one {תמונה # הוקצתה} other {# תמונות הוקצו}} מחדש לאדם חדש",
|
"reassigned_assets_to_new_person": "{count, plural, one {תמונה # הוקצתה} other {# תמונות הוקצו}} מחדש לאדם חדש",
|
||||||
"reassing_hint": "הקצאת תמונות שנבחרו לאדם קיים",
|
"reassing_hint": "הקצאת תמונות שנבחרו לאדם קיים",
|
||||||
"recent": "חדש",
|
"recent": "חדש",
|
||||||
"recent-albums": "אלבומים אחרונים",
|
"recent_albums": "אלבומים אחרונים",
|
||||||
"recent_searches": "חיפושים אחרונים",
|
"recent_searches": "חיפושים אחרונים",
|
||||||
"recently_added": "נוסף לאחרונה",
|
"recently_added": "נוסף לאחרונה",
|
||||||
"recently_added_page_title": "נוסף לאחרונה",
|
"recently_added_page_title": "נוסף לאחרונה",
|
||||||
|
|||||||
+78
-18
@@ -56,7 +56,7 @@
|
|||||||
"authentication_settings_reenable": "पुनः सक्षम करने के लिए, <link>Server Command</link> का प्रयोग करे।",
|
"authentication_settings_reenable": "पुनः सक्षम करने के लिए, <link>Server Command</link> का प्रयोग करे।",
|
||||||
"background_task_job": "पृष्ठभूमि कार्य",
|
"background_task_job": "पृष्ठभूमि कार्य",
|
||||||
"backup_database": "डेटाबेस डंप बनाएं",
|
"backup_database": "डेटाबेस डंप बनाएं",
|
||||||
"backup_database_enable_description": "Enable database dumps",
|
"backup_database_enable_description": "डेटाबेस डंप चालू करें",
|
||||||
"backup_keep_last_amount": "रखने के लिए पिछले डंप की मात्रा",
|
"backup_keep_last_amount": "रखने के लिए पिछले डंप की मात्रा",
|
||||||
"backup_onboarding_1_description": "क्लाउड में या किसी अन्य भौतिक स्थान पर ऑफसाइट प्रतिलिपि।",
|
"backup_onboarding_1_description": "क्लाउड में या किसी अन्य भौतिक स्थान पर ऑफसाइट प्रतिलिपि।",
|
||||||
"backup_onboarding_2_description": "विभिन्न उपकरणों पर स्थानीय प्रतियाँ। इसमें मुख्य फ़ाइलें और उन फ़ाइलों का स्थानीय बैकअप शामिल है।",
|
"backup_onboarding_2_description": "विभिन्न उपकरणों पर स्थानीय प्रतियाँ। इसमें मुख्य फ़ाइलें और उन फ़ाइलों का स्थानीय बैकअप शामिल है।",
|
||||||
@@ -104,6 +104,8 @@
|
|||||||
"image_preview_description": "मेटाडेटा रहित मध्यम आकार की छवि, जिसका उपयोग एकल संपत्ति देखने और मशीन लर्निंग के लिए होता है",
|
"image_preview_description": "मेटाडेटा रहित मध्यम आकार की छवि, जिसका उपयोग एकल संपत्ति देखने और मशीन लर्निंग के लिए होता है",
|
||||||
"image_preview_quality_description": "पूर्वावलोकन की गुणवत्ता (1 से 100 तक)। अधिक मान बेहतर गुणवत्ता देता है, लेकिन इससे फ़ाइल का आकार बढ़ता है और ऐप की प्रतिक्रिया क्षमता कम हो सकती है। बहुत कम मान मशीन लर्निंग की गुणवत्ता को प्रभावित कर सकता है।",
|
"image_preview_quality_description": "पूर्वावलोकन की गुणवत्ता (1 से 100 तक)। अधिक मान बेहतर गुणवत्ता देता है, लेकिन इससे फ़ाइल का आकार बढ़ता है और ऐप की प्रतिक्रिया क्षमता कम हो सकती है। बहुत कम मान मशीन लर्निंग की गुणवत्ता को प्रभावित कर सकता है।",
|
||||||
"image_preview_title": "पूर्वदर्शन सेटिंग्स",
|
"image_preview_title": "पूर्वदर्शन सेटिंग्स",
|
||||||
|
"image_progressive": "प्रगतिशील",
|
||||||
|
"image_progressive_description": "JPEG छवियों को क्रमिक रूप से लोड करने के लिए उन्हें प्रोग्रेसिवली एनकोड करें। इसका WebP छवियों पर कोई प्रभाव नहीं पड़ता है।",
|
||||||
"image_quality": "गुणवत्ता",
|
"image_quality": "गुणवत्ता",
|
||||||
"image_resolution": "रिज़ॉल्यूशन",
|
"image_resolution": "रिज़ॉल्यूशन",
|
||||||
"image_resolution_description": "उच्चतर रिज़ॉल्यूशन अधिक विवरण सुरक्षित रख सकता है, लेकिन एन्कोड करने में अधिक समय लेता है, फ़ाइल आकार बड़ा होता है और ऐप की प्रतिक्रियाशीलता कम हो सकती है।",
|
"image_resolution_description": "उच्चतर रिज़ॉल्यूशन अधिक विवरण सुरक्षित रख सकता है, लेकिन एन्कोड करने में अधिक समय लेता है, फ़ाइल आकार बड़ा होता है और ऐप की प्रतिक्रियाशीलता कम हो सकती है।",
|
||||||
@@ -188,11 +190,23 @@
|
|||||||
"machine_learning_smart_search_enabled": "स्मार्ट खोज सक्षम करें",
|
"machine_learning_smart_search_enabled": "स्मार्ट खोज सक्षम करें",
|
||||||
"machine_learning_smart_search_enabled_description": "यदि अक्षम किया गया है, तो स्मार्ट खोज के लिए छवियों को एन्कोड नहीं किया जाएगा।",
|
"machine_learning_smart_search_enabled_description": "यदि अक्षम किया गया है, तो स्मार्ट खोज के लिए छवियों को एन्कोड नहीं किया जाएगा।",
|
||||||
"machine_learning_url_description": "मशीन लर्निंग सर्वर का URL। यदि एक से अधिक URL दिए गए हैं, तो प्रत्येक सर्वर को एक-एक करके कोशिश किया जाएगा, पहले से आखिरी तक, जब तक कोई सफलतापूर्वक प्रतिक्रिया न दे। जो सर्वर प्रतिक्रिया नहीं देते, उन्हें अस्थायी रूप से नजरअंदाज किया जाएगा जब तक वे फिर से ऑनलाइन न हों।",
|
"machine_learning_url_description": "मशीन लर्निंग सर्वर का URL। यदि एक से अधिक URL दिए गए हैं, तो प्रत्येक सर्वर को एक-एक करके कोशिश किया जाएगा, पहले से आखिरी तक, जब तक कोई सफलतापूर्वक प्रतिक्रिया न दे। जो सर्वर प्रतिक्रिया नहीं देते, उन्हें अस्थायी रूप से नजरअंदाज किया जाएगा जब तक वे फिर से ऑनलाइन न हों।",
|
||||||
|
"maintenance_delete_backup": "बैकअप डिलीट करें",
|
||||||
|
"maintenance_delete_backup_description": "यह फ़ाइल स्थायी रूप से मिटा दी जाएगी। इसे वापस नहीं लाया जा सकेगा।",
|
||||||
|
"maintenance_delete_error": "बैकअप मिटाया नहीं जा सका।",
|
||||||
|
"maintenance_restore_backup": "बैकअप वापस लाएँ",
|
||||||
|
"maintenance_restore_backup_description": "Immich का सारा डेटा पूरी तरह मिटा दिया जाएगा और चुने गए बैकअप से डेटा वापस लाया जाएगा। आगे बढ़ने से पहले एक नया बैकअप बनाया जाएगा।",
|
||||||
|
"maintenance_restore_backup_different_version": "यह बैकअप Immich के किसी अलग version में बनाया गया था!",
|
||||||
|
"maintenance_restore_backup_unknown_version": "बैकअप का version निर्धारित नहीं किया जा सका।",
|
||||||
|
"maintenance_restore_database_backup": "डेटाबेस बैकअप वापस लाएँ",
|
||||||
|
"maintenance_restore_database_backup_description": "बैकअप फ़ाइल का उपयोग करके डेटाबेस को पहले की स्थिति में वापस लाएँ",
|
||||||
"maintenance_settings": "रखरखाव",
|
"maintenance_settings": "रखरखाव",
|
||||||
"maintenance_settings_description": "Immich को मेंटेनेंस मोड में रखें।",
|
"maintenance_settings_description": "Immich को मेंटेनेंस मोड में रखें।",
|
||||||
"maintenance_start": "रखरखाव मोड शुरू करें",
|
"maintenance_start": "रखरखाव मोड पर स्विच करें",
|
||||||
"maintenance_start_error": "मेंटेनेंस मोड शुरू नहीं हो सका।",
|
"maintenance_start_error": "मेंटेनेंस मोड शुरू नहीं हो सका।",
|
||||||
|
"maintenance_upload_backup": "डेटाबेस की बैकअप फ़ाइल अपलोड करें",
|
||||||
|
"maintenance_upload_backup_error": "बैकअप अपलोड नहीं किया जा सका। क्या यह .sql या .sql.gz फ़ाइल है?",
|
||||||
"manage_concurrency": "समवर्तीता प्रबंधित करें",
|
"manage_concurrency": "समवर्तीता प्रबंधित करें",
|
||||||
|
"manage_concurrency_description": "एक साथ चलने वाले जॉब्स का प्रबंधन करने के लिए जॉब्स पेज पर जाएँ",
|
||||||
"manage_log_settings": "लॉग सेटिंग प्रबंधित करें",
|
"manage_log_settings": "लॉग सेटिंग प्रबंधित करें",
|
||||||
"map_dark_style": "डार्क शैली",
|
"map_dark_style": "डार्क शैली",
|
||||||
"map_enable_description": "मानचित्र सुविधाएँ सक्षम करें",
|
"map_enable_description": "मानचित्र सुविधाएँ सक्षम करें",
|
||||||
@@ -258,7 +272,7 @@
|
|||||||
"oauth_auto_register": "ऑटो रजिस्टर",
|
"oauth_auto_register": "ऑटो रजिस्टर",
|
||||||
"oauth_auto_register_description": "OAuth के साथ साइन इन करने के बाद स्वचालित रूप से नए उपयोगकर्ताओं को पंजीकृत करें",
|
"oauth_auto_register_description": "OAuth के साथ साइन इन करने के बाद स्वचालित रूप से नए उपयोगकर्ताओं को पंजीकृत करें",
|
||||||
"oauth_button_text": "टेक्स्ट बटन",
|
"oauth_button_text": "टेक्स्ट बटन",
|
||||||
"oauth_client_secret_description": "यदि PKCE (कोड एक्सचेंज के लिए प्रूफ़ कुंजी) OAuth प्रदाता द्वारा समर्थित नहीं है तो यह आवश्यक है",
|
"oauth_client_secret_description": "यह Confidential (गोपनीय) क्लाइंट के लिए आवश्यक है, या यदि Public क्लाइंट में PKCE (Proof Key for Code Exchange) समर्थित नहीं है।",
|
||||||
"oauth_enable_description": "OAuth से लॉगिन करें",
|
"oauth_enable_description": "OAuth से लॉगिन करें",
|
||||||
"oauth_mobile_redirect_uri": "मोबाइल रीडायरेक्ट यूआरआई",
|
"oauth_mobile_redirect_uri": "मोबाइल रीडायरेक्ट यूआरआई",
|
||||||
"oauth_mobile_redirect_uri_override": "मोबाइल रीडायरेक्ट यूआरआई ओवरराइड",
|
"oauth_mobile_redirect_uri_override": "मोबाइल रीडायरेक्ट यूआरआई ओवरराइड",
|
||||||
@@ -282,10 +296,14 @@
|
|||||||
"password_settings_description": "पासवर्ड लॉगिन सेटिंग प्रबंधित करें",
|
"password_settings_description": "पासवर्ड लॉगिन सेटिंग प्रबंधित करें",
|
||||||
"paths_validated_successfully": "सभी पथ सफलतापूर्वक मान्य किए गए",
|
"paths_validated_successfully": "सभी पथ सफलतापूर्वक मान्य किए गए",
|
||||||
"person_cleanup_job": "व्यक्ति सफ़ाई",
|
"person_cleanup_job": "व्यक्ति सफ़ाई",
|
||||||
|
"queue_details": "प्रक्रिया कतार का विवरण",
|
||||||
|
"queues": "कार्य कतार",
|
||||||
|
"queues_page_description": "प्रशासक कार्य कतार पेज",
|
||||||
"quota_size_gib": "कोटा आकार (GiB)",
|
"quota_size_gib": "कोटा आकार (GiB)",
|
||||||
"refreshing_all_libraries": "सभी पुस्तकालयों को ताज़ा किया जा रहा है",
|
"refreshing_all_libraries": "सभी पुस्तकालयों को ताज़ा किया जा रहा है",
|
||||||
"registration": "व्यवस्थापक पंजीकरण",
|
"registration": "प्रशासक पंजीकरण",
|
||||||
"registration_description": "चूंकि आप सिस्टम पर पहले उपयोगकर्ता हैं, इसलिए आपको व्यवस्थापक के रूप में नियुक्त किया जाएगा और आप प्रशासनिक कार्यों के लिए जिम्मेदार होंगे, और अतिरिक्त उपयोगकर्ता आपके द्वारा बनाए जाएंगे।",
|
"registration_description": "चूंकि आप सिस्टम पर पहले उपयोगकर्ता हैं, इसलिए आपको व्यवस्थापक के रूप में नियुक्त किया जाएगा और आप प्रशासनिक कार्यों के लिए जिम्मेदार होंगे, और अतिरिक्त उपयोगकर्ता आपके द्वारा बनाए जाएंगे।",
|
||||||
|
"remove_failed_jobs": "असफल कार्य हटाएँ",
|
||||||
"require_password_change_on_login": "उपयोगकर्ता को पहले लॉगिन पर पासवर्ड बदलने की आवश्यकता है",
|
"require_password_change_on_login": "उपयोगकर्ता को पहले लॉगिन पर पासवर्ड बदलने की आवश्यकता है",
|
||||||
"reset_settings_to_default": "सेटिंग्स को डिफ़ॉल्ट पर रीसेट करें",
|
"reset_settings_to_default": "सेटिंग्स को डिफ़ॉल्ट पर रीसेट करें",
|
||||||
"reset_settings_to_recent_saved": "सेटिंग्स को हाल ही में सहेजी गई सेटिंग्स पर रीसेट करें",
|
"reset_settings_to_recent_saved": "सेटिंग्स को हाल ही में सहेजी गई सेटिंग्स पर रीसेट करें",
|
||||||
@@ -298,8 +316,10 @@
|
|||||||
"server_public_users_description": "साझा एल्बम में उपयोगकर्ता जोड़ते समय सभी उपयोगकर्ताओं (नाम और ईमेल) की सूची दिखाई जाती है। यदि यह विकल्प अक्षम किया गया है, तो उपयोगकर्ता सूची केवल व्यवस्थापक (एडमिन) उपयोगकर्ताओं के लिए उपलब्ध होगी।",
|
"server_public_users_description": "साझा एल्बम में उपयोगकर्ता जोड़ते समय सभी उपयोगकर्ताओं (नाम और ईमेल) की सूची दिखाई जाती है। यदि यह विकल्प अक्षम किया गया है, तो उपयोगकर्ता सूची केवल व्यवस्थापक (एडमिन) उपयोगकर्ताओं के लिए उपलब्ध होगी।",
|
||||||
"server_settings": "सर्वर सेटिंग्स",
|
"server_settings": "सर्वर सेटिंग्स",
|
||||||
"server_settings_description": "सर्वर सेटिंग्स प्रबंधित करें",
|
"server_settings_description": "सर्वर सेटिंग्स प्रबंधित करें",
|
||||||
|
"server_stats_page_description": "प्रशासक (Admin) सर्वर आँकड़े पेज",
|
||||||
"server_welcome_message": "स्वागत संदेश",
|
"server_welcome_message": "स्वागत संदेश",
|
||||||
"server_welcome_message_description": "एक संदेश जो लॉगिन पृष्ठ पर प्रदर्शित होता है।",
|
"server_welcome_message_description": "एक संदेश जो लॉगिन पृष्ठ पर प्रदर्शित होता है।",
|
||||||
|
"settings_page_description": "प्रशासक (Admin) सेटिंग्स पेज",
|
||||||
"sidecar_job": "साइडकार मेटाडेटा",
|
"sidecar_job": "साइडकार मेटाडेटा",
|
||||||
"sidecar_job_description": "फ़ाइल सिस्टम से साइडकार मेटाडेटा खोजें या सिंक्रनाइज़ करें",
|
"sidecar_job_description": "फ़ाइल सिस्टम से साइडकार मेटाडेटा खोजें या सिंक्रनाइज़ करें",
|
||||||
"slideshow_duration_description": "प्रत्येक छवि को प्रदर्शित करने के लिए सेकंड की संख्या",
|
"slideshow_duration_description": "प्रत्येक छवि को प्रदर्शित करने के लिए सेकंड की संख्या",
|
||||||
@@ -418,6 +438,8 @@
|
|||||||
"user_restore_scheduled_removal": "उपयोगकर्ता को पुनर्स्थापित करें - {date, date, long} पर हटाया जाना निर्धारित है",
|
"user_restore_scheduled_removal": "उपयोगकर्ता को पुनर्स्थापित करें - {date, date, long} पर हटाया जाना निर्धारित है",
|
||||||
"user_settings": "उपयोगकर्ता सेटिंग",
|
"user_settings": "उपयोगकर्ता सेटिंग",
|
||||||
"user_settings_description": "उपयोगकर्ता सेटिंग प्रबंधित करें",
|
"user_settings_description": "उपयोगकर्ता सेटिंग प्रबंधित करें",
|
||||||
|
"user_successfully_removed": "उपयोगकर्ता {email} को सफलतापूर्वक हटा दिया गया है।",
|
||||||
|
"users_page_description": "प्रशासक (Admin) उपयोगकर्ता पेज",
|
||||||
"version_check_enabled_description": "नई रिलीज़ की जाँच के लिए GitHub पर आवधिक अनुरोध सक्षम करें",
|
"version_check_enabled_description": "नई रिलीज़ की जाँच के लिए GitHub पर आवधिक अनुरोध सक्षम करें",
|
||||||
"version_check_implications": "संस्करण जाँच सुविधा github.com के साथ आवधिक संचार पर निर्भर करती है",
|
"version_check_implications": "संस्करण जाँच सुविधा github.com के साथ आवधिक संचार पर निर्भर करती है",
|
||||||
"version_check_settings": "संस्करण चेक",
|
"version_check_settings": "संस्करण चेक",
|
||||||
@@ -429,6 +451,9 @@
|
|||||||
"admin_password": "व्यवस्थापक पासवर्ड",
|
"admin_password": "व्यवस्थापक पासवर्ड",
|
||||||
"administration": "प्रशासन",
|
"administration": "प्रशासन",
|
||||||
"advanced": "विकसित",
|
"advanced": "विकसित",
|
||||||
|
"advanced_settings_clear_image_cache": "इमेज कैश (cache) साफ़ करें",
|
||||||
|
"advanced_settings_clear_image_cache_error": "इमेज कैश (cache) साफ़ नहीं किया जा सका",
|
||||||
|
"advanced_settings_clear_image_cache_success": "{size} सफलतापूर्वक साफ़ किया गया",
|
||||||
"advanced_settings_enable_alternate_media_filter_subtitle": "सिंक के दौरान वैकल्पिक मानदंडों के आधार पर मीडिया को फ़िल्टर करने के लिए इस विकल्प का उपयोग करें। इसे केवल तभी आज़माएँ जब आपको ऐप द्वारा सभी एल्बमों का पता लगाने में समस्या हो।",
|
"advanced_settings_enable_alternate_media_filter_subtitle": "सिंक के दौरान वैकल्पिक मानदंडों के आधार पर मीडिया को फ़िल्टर करने के लिए इस विकल्प का उपयोग करें। इसे केवल तभी आज़माएँ जब आपको ऐप द्वारा सभी एल्बमों का पता लगाने में समस्या हो।",
|
||||||
"advanced_settings_enable_alternate_media_filter_title": "[प्रयोगात्मक] वैकल्पिक डिवाइस एल्बम सिंक फ़िल्टर का उपयोग करें",
|
"advanced_settings_enable_alternate_media_filter_title": "[प्रयोगात्मक] वैकल्पिक डिवाइस एल्बम सिंक फ़िल्टर का उपयोग करें",
|
||||||
"advanced_settings_log_level_title": "लॉग स्तर:{level}",
|
"advanced_settings_log_level_title": "लॉग स्तर:{level}",
|
||||||
@@ -465,10 +490,12 @@
|
|||||||
"album_remove_user": "उपयोगकर्ता हटाएं?",
|
"album_remove_user": "उपयोगकर्ता हटाएं?",
|
||||||
"album_remove_user_confirmation": "क्या आप वाकई {user} को हटाना चाहते हैं?",
|
"album_remove_user_confirmation": "क्या आप वाकई {user} को हटाना चाहते हैं?",
|
||||||
"album_search_not_found": "आपकी खोज से मेल खाता कोई एल्बम नहीं मिला",
|
"album_search_not_found": "आपकी खोज से मेल खाता कोई एल्बम नहीं मिला",
|
||||||
|
"album_selected": "एल्बम चुना गया",
|
||||||
"album_share_no_users": "ऐसा लगता है कि आपने यह एल्बम सभी उपयोगकर्ताओं के साथ साझा कर दिया है या आपके पास साझा करने के लिए कोई उपयोगकर्ता नहीं है।",
|
"album_share_no_users": "ऐसा लगता है कि आपने यह एल्बम सभी उपयोगकर्ताओं के साथ साझा कर दिया है या आपके पास साझा करने के लिए कोई उपयोगकर्ता नहीं है।",
|
||||||
"album_summary": "एल्बम सारांश",
|
"album_summary": "एल्बम सारांश",
|
||||||
"album_updated": "एल्बम अपडेट किया गया",
|
"album_updated": "एल्बम अपडेट किया गया",
|
||||||
"album_updated_setting_description": "जब किसी साझा एल्बम में नई संपत्तियाँ हों तो एक ईमेल सूचना प्राप्त करें",
|
"album_updated_setting_description": "जब किसी साझा एल्बम में नई संपत्तियाँ हों तो एक ईमेल सूचना प्राप्त करें",
|
||||||
|
"album_upload_assets": "अपने कंप्यूटर से मीडिया फ़ाइलें अपलोड करें और उन्हें एल्बम में जोड़ें",
|
||||||
"album_user_left": "बायाँ {album}",
|
"album_user_left": "बायाँ {album}",
|
||||||
"album_user_removed": "{user} को हटाया गया",
|
"album_user_removed": "{user} को हटाया गया",
|
||||||
"album_viewer_appbar_delete_confirm": "क्या आप वाकई इस एल्बम को अपने खाते से हटाना चाहते हैं?",
|
"album_viewer_appbar_delete_confirm": "क्या आप वाकई इस एल्बम को अपने खाते से हटाना चाहते हैं?",
|
||||||
@@ -481,14 +508,16 @@
|
|||||||
"album_viewer_page_share_add_users": "उपयोगकर्ता जोड़ें",
|
"album_viewer_page_share_add_users": "उपयोगकर्ता जोड़ें",
|
||||||
"album_with_link_access": "लिंक वाले किसी भी व्यक्ति को इस एल्बम में फ़ोटो और लोगों को देखने दें।",
|
"album_with_link_access": "लिंक वाले किसी भी व्यक्ति को इस एल्बम में फ़ोटो और लोगों को देखने दें।",
|
||||||
"albums": "एलबम",
|
"albums": "एलबम",
|
||||||
"albums_count": "{count, plural, one {{count, number} Album} other {{count, number} Albums}}",
|
"albums_count": "{count, plural, one {{count, number} एल्बम} other {{count, number} एल्बम}}",
|
||||||
"albums_default_sort_order": "डिफ़ॉल्ट एल्बम सॉर्ट क्रम",
|
"albums_default_sort_order": "डिफ़ॉल्ट एल्बम सॉर्ट क्रम",
|
||||||
"albums_default_sort_order_description": "नये एल्बम बनाते समय आरंभिक परिसंपत्ति सॉर्ट क्रम।",
|
"albums_default_sort_order_description": "नये एल्बम बनाते समय आरंभिक परिसंपत्ति सॉर्ट क्रम।",
|
||||||
"albums_feature_description": "परिसंपत्तियों का संग्रह जिसे अन्य उपयोगकर्ताओं के साथ साझा किया जा सकता है।",
|
"albums_feature_description": "परिसंपत्तियों का संग्रह जिसे अन्य उपयोगकर्ताओं के साथ साझा किया जा सकता है।",
|
||||||
"albums_on_device_count": "डिवाइस पर एल्बम ({count})",
|
"albums_on_device_count": "डिवाइस पर एल्बम ({count})",
|
||||||
|
"albums_selected": "{count, plural, one {# एल्बम चुना गया} other {# एल्बम चुने गए}}",
|
||||||
"all": "सभी",
|
"all": "सभी",
|
||||||
"all_albums": "सभी एलबम",
|
"all_albums": "सभी एलबम",
|
||||||
"all_people": "सभी लोग",
|
"all_people": "सभी लोग",
|
||||||
|
"all_photos": "सभी फ़ोटो",
|
||||||
"all_videos": "सभी वीडियो",
|
"all_videos": "सभी वीडियो",
|
||||||
"allow_dark_mode": "डार्क मोड की अनुमति दें",
|
"allow_dark_mode": "डार्क मोड की अनुमति दें",
|
||||||
"allow_edits": "संपादन की अनुमति दें",
|
"allow_edits": "संपादन की अनुमति दें",
|
||||||
@@ -496,6 +525,9 @@
|
|||||||
"allow_public_user_to_upload": "सार्वजनिक उपयोगकर्ता को अपलोड करने की अनुमति दें",
|
"allow_public_user_to_upload": "सार्वजनिक उपयोगकर्ता को अपलोड करने की अनुमति दें",
|
||||||
"allowed": "अनुमत",
|
"allowed": "अनुमत",
|
||||||
"alt_text_qr_code": "क्यूआर कोड छवि",
|
"alt_text_qr_code": "क्यूआर कोड छवि",
|
||||||
|
"always_keep": "हमेशा रखें",
|
||||||
|
"always_keep_photos_hint": "“फ्री अप स्पेस” का उपयोग करने पर इस डिवाइस की सभी फ़ोटो बनी रहेंगी।",
|
||||||
|
"always_keep_videos_hint": "“फ्री अप स्पेस” का उपयोग करने पर इस डिवाइस की सभी वीडियो बनी रहेंगी।",
|
||||||
"anti_clockwise": "वामावर्त",
|
"anti_clockwise": "वामावर्त",
|
||||||
"api_key": "एपीआई की",
|
"api_key": "एपीआई की",
|
||||||
"api_key_description": "यह की केवल एक बार दिखाई जाएगी। विंडो बंद करने से पहले कृपया इसे कॉपी करना सुनिश्चित करें।।",
|
"api_key_description": "यह की केवल एक बार दिखाई जाएगी। विंडो बंद करने से पहले कृपया इसे कॉपी करना सुनिश्चित करें।।",
|
||||||
@@ -522,10 +554,12 @@
|
|||||||
"archived_count": "{count, plural, other {# संग्रहीत किए गए}}",
|
"archived_count": "{count, plural, other {# संग्रहीत किए गए}}",
|
||||||
"are_these_the_same_person": "क्या ये वही व्यक्ति हैं?",
|
"are_these_the_same_person": "क्या ये वही व्यक्ति हैं?",
|
||||||
"are_you_sure_to_do_this": "क्या आप वास्तव में इसे करना चाहते हैं?",
|
"are_you_sure_to_do_this": "क्या आप वास्तव में इसे करना चाहते हैं?",
|
||||||
|
"array_field_not_fully_supported": "Array फ़ील्ड के लिए JSON को मैन्युअल रूप से संपादित करना आवश्यक है",
|
||||||
"asset_action_delete_err_read_only": "केवल पढ़ने योग्य परिसंपत्ति(ओं) को हटाया नहीं जा सकता, छोड़ा जा सकता है",
|
"asset_action_delete_err_read_only": "केवल पढ़ने योग्य परिसंपत्ति(ओं) को हटाया नहीं जा सकता, छोड़ा जा सकता है",
|
||||||
"asset_action_share_err_offline": "ऑफ़लाइन परिसंपत्ति(एँ) प्राप्त नहीं की जा सकती, छोड़ी जा रही है",
|
"asset_action_share_err_offline": "ऑफ़लाइन परिसंपत्ति(एँ) प्राप्त नहीं की जा सकती, छोड़ी जा रही है",
|
||||||
"asset_added_to_album": "एल्बम में डाला गया",
|
"asset_added_to_album": "एल्बम में डाला गया",
|
||||||
"asset_adding_to_album": "एल्बम में डाला जा रहा है…",
|
"asset_adding_to_album": "एल्बम में डाला जा रहा है…",
|
||||||
|
"asset_created": "एसेट बनाया गया",
|
||||||
"asset_description_updated": "संपत्ति विवरण अद्यतन कर दिया गया है",
|
"asset_description_updated": "संपत्ति विवरण अद्यतन कर दिया गया है",
|
||||||
"asset_filename_is_offline": "एसेट {filename} ऑफ़लाइन है",
|
"asset_filename_is_offline": "एसेट {filename} ऑफ़लाइन है",
|
||||||
"asset_has_unassigned_faces": "एसेट में अनिर्धारित चेहरे हैं",
|
"asset_has_unassigned_faces": "एसेट में अनिर्धारित चेहरे हैं",
|
||||||
@@ -538,6 +572,9 @@
|
|||||||
"asset_list_layout_sub_title": "लेआउट",
|
"asset_list_layout_sub_title": "लेआउट",
|
||||||
"asset_list_settings_subtitle": "फ़ोटो ग्रिड लेआउट सेटिंग्स",
|
"asset_list_settings_subtitle": "फ़ोटो ग्रिड लेआउट सेटिंग्स",
|
||||||
"asset_list_settings_title": "चित्र की जाली",
|
"asset_list_settings_title": "चित्र की जाली",
|
||||||
|
"asset_not_found_on_device_android": "डिवाइस पर एसेट नहीं मिला",
|
||||||
|
"asset_not_found_on_device_ios": "डिवाइस पर एसेट नहीं मिला। यदि आप iCloud का उपयोग कर रहे हैं, तो iCloud में खराब फ़ाइल होने के कारण एसेट तक पहुँचा नहीं जा सकता",
|
||||||
|
"asset_not_found_on_icloud": "iCloud पर एसेट नहीं मिला। iCloud में खराब फ़ाइल होने के कारण एसेट तक पहुँचा नहीं जा सकता",
|
||||||
"asset_offline": "संपत्ति ऑफ़लाइन",
|
"asset_offline": "संपत्ति ऑफ़लाइन",
|
||||||
"asset_offline_description": "यह संपत्ति ऑफ़लाइन है।",
|
"asset_offline_description": "यह संपत्ति ऑफ़लाइन है।",
|
||||||
"asset_restored_successfully": "संपत्ति(याँ) सफलतापूर्वक पुनर्स्थापित की गईं",
|
"asset_restored_successfully": "संपत्ति(याँ) सफलतापूर्वक पुनर्स्थापित की गईं",
|
||||||
@@ -589,7 +626,7 @@
|
|||||||
"backup_album_selection_page_select_albums": "एल्बम चुनें",
|
"backup_album_selection_page_select_albums": "एल्बम चुनें",
|
||||||
"backup_album_selection_page_selection_info": "चयन जानकारी",
|
"backup_album_selection_page_selection_info": "चयन जानकारी",
|
||||||
"backup_album_selection_page_total_assets": "कुल अद्वितीय संपत्तियाँ",
|
"backup_album_selection_page_total_assets": "कुल अद्वितीय संपत्तियाँ",
|
||||||
"backup_albums_sync": "बैकअप एल्बम का तुल्यकालन",
|
"backup_albums_sync": "बैकअप एल्बम का सिंक्रोनाइज़ेशन",
|
||||||
"backup_all": "सभी",
|
"backup_all": "सभी",
|
||||||
"backup_background_service_backup_failed_message": "संपत्तियों का बैकअप लेने में विफल. पुनः प्रयास किया जा रहा है…",
|
"backup_background_service_backup_failed_message": "संपत्तियों का बैकअप लेने में विफल. पुनः प्रयास किया जा रहा है…",
|
||||||
"backup_background_service_complete_notification": "एसेट का बैकअप पूरा हुआ",
|
"backup_background_service_complete_notification": "एसेट का बैकअप पूरा हुआ",
|
||||||
@@ -650,6 +687,7 @@
|
|||||||
"backup_options_page_title": "बैकअप विकल्प",
|
"backup_options_page_title": "बैकअप विकल्प",
|
||||||
"backup_setting_subtitle": "पृष्ठभूमि और अग्रभूमि अपलोड सेटिंग प्रबंधित करें",
|
"backup_setting_subtitle": "पृष्ठभूमि और अग्रभूमि अपलोड सेटिंग प्रबंधित करें",
|
||||||
"backup_settings_subtitle": "अपलोड सेटिंग्स संभालें",
|
"backup_settings_subtitle": "अपलोड सेटिंग्स संभालें",
|
||||||
|
"backup_upload_details_page_more_details": "अधिक जानकारी के लिए टैप करें",
|
||||||
"backward": "पिछला",
|
"backward": "पिछला",
|
||||||
"biometric_auth_enabled": "बायोमेट्रिक प्रमाणीकरण सक्षम",
|
"biometric_auth_enabled": "बायोमेट्रिक प्रमाणीकरण सक्षम",
|
||||||
"biometric_locked_out": "आप बायोमेट्रिक प्रमाणीकरण से बाहर हैं",
|
"biometric_locked_out": "आप बायोमेट्रिक प्रमाणीकरण से बाहर हैं",
|
||||||
@@ -708,6 +746,8 @@
|
|||||||
"change_password_form_password_mismatch": "सांकेतिक शब्द मेल नहीं खाते",
|
"change_password_form_password_mismatch": "सांकेतिक शब्द मेल नहीं खाते",
|
||||||
"change_password_form_reenter_new_password": "नया पासवर्ड पुनः दर्ज करें",
|
"change_password_form_reenter_new_password": "नया पासवर्ड पुनः दर्ज करें",
|
||||||
"change_pin_code": "पिन कोड बदलें",
|
"change_pin_code": "पिन कोड बदलें",
|
||||||
|
"change_trigger": "ट्रिगर बदलें",
|
||||||
|
"change_trigger_prompt": "क्या आप वाकई ट्रिगर बदलना चाहते हैं? इससे सभी मौजूदा एक्शन और फ़िल्टर हटा दिए जाएँगे।",
|
||||||
"change_your_password": "अपना पासवर्ड बदलें",
|
"change_your_password": "अपना पासवर्ड बदलें",
|
||||||
"changed_visibility_successfully": "दृश्यता सफलतापूर्वक परिवर्तित",
|
"changed_visibility_successfully": "दृश्यता सफलतापूर्वक परिवर्तित",
|
||||||
"charging": "चार्जिंग",
|
"charging": "चार्जिंग",
|
||||||
@@ -716,8 +756,21 @@
|
|||||||
"check_corrupt_asset_backup_button": "जाँच करें",
|
"check_corrupt_asset_backup_button": "जाँच करें",
|
||||||
"check_corrupt_asset_backup_description": "यह जाँच केवल वाई-फ़ाई पर ही करें और सभी संपत्तियों का बैकअप लेने के बाद ही करें। इस प्रक्रिया में कुछ मिनट लग सकते हैं।",
|
"check_corrupt_asset_backup_description": "यह जाँच केवल वाई-फ़ाई पर ही करें और सभी संपत्तियों का बैकअप लेने के बाद ही करें। इस प्रक्रिया में कुछ मिनट लग सकते हैं।",
|
||||||
"check_logs": "लॉग जांचें",
|
"check_logs": "लॉग जांचें",
|
||||||
|
"checksum": "चेकसम (checksum)",
|
||||||
"choose_matching_people_to_merge": "मर्ज करने के लिए मिलते-जुलते लोगों को चुनें",
|
"choose_matching_people_to_merge": "मर्ज करने के लिए मिलते-जुलते लोगों को चुनें",
|
||||||
"city": "शहर",
|
"city": "शहर",
|
||||||
|
"cleanup_confirm_description": "Immich ने {date} से पहले बनाए गए {count} एसेट सर्वर पर सुरक्षित रूप से बैकअप किए हुए पाए हैं। क्या इस डिवाइस से उनकी स्थानीय प्रतियाँ हटाई जाएँ?",
|
||||||
|
"cleanup_confirm_prompt_title": "क्या इस डिवाइस से हटाएँ?",
|
||||||
|
"cleanup_deleted_assets": "डिवाइस के ट्रैश में {count} एसेट भेज दिए गए",
|
||||||
|
"cleanup_deleting": "ट्रैश में भेजा जा रहा है…",
|
||||||
|
"cleanup_found_assets": "{count} बैकअप किए गए ऐसेट मिले",
|
||||||
|
"cleanup_found_assets_with_size": "{count} बैकअप किए गए ऐसेट मिले ({size})",
|
||||||
|
"cleanup_icloud_shared_albums_excluded": "iCloud के शेयर किए गए एल्बम स्कैन में शामिल नहीं हैं",
|
||||||
|
"cleanup_no_assets_found": "ऊपर दिए गए मानदंडों से मेल खाने वाले कोई ऐसेट नहीं मिले। ‘फ्री उप स्पेस’ केवल उन्हीं ऐसेट को हटा सकता है जिनका बैकअप सर्वर पर लिया गया है",
|
||||||
|
"cleanup_preview_title": "हटाए जाने वाले ऐसेट ({count})",
|
||||||
|
"cleanup_step3_description": "तिथि और सुरक्षित रखने की सेटिंग के अनुसार बैकअप ऐसेट स्कैन करें।",
|
||||||
|
"cleanup_step4_summary": "आपके स्थानीय डिवाइस से हटाने के लिए {date} से पहले बनाए गए {count} ऐसेट। फ़ोटो Immich ऐप में देखे जा सकेंगे।",
|
||||||
|
"cleanup_trash_hint": "स्टोरेज स्पेस पूरी तरह वापस पाने के लिए, सिस्टम गैलरी ऐप खोलें और ट्रैश खाली करें",
|
||||||
"clear": "स्पष्ट",
|
"clear": "स्पष्ट",
|
||||||
"clear_all": "सभी साफ करें",
|
"clear_all": "सभी साफ करें",
|
||||||
"clear_all_recent_searches": "सभी हालिया खोजें साफ़ करें",
|
"clear_all_recent_searches": "सभी हालिया खोजें साफ़ करें",
|
||||||
@@ -729,8 +782,10 @@
|
|||||||
"client_cert_import": "आयात",
|
"client_cert_import": "आयात",
|
||||||
"client_cert_import_success_msg": "क्लाइंट प्रमाणपत्र आयात किया गया है",
|
"client_cert_import_success_msg": "क्लाइंट प्रमाणपत्र आयात किया गया है",
|
||||||
"client_cert_invalid_msg": "अमान्य प्रमाणपत्र फ़ाइल या गलत पासवर्ड",
|
"client_cert_invalid_msg": "अमान्य प्रमाणपत्र फ़ाइल या गलत पासवर्ड",
|
||||||
|
"client_cert_password_message": "इस प्रमाणपत्र के लिए पासवर्ड दर्ज करें",
|
||||||
|
"client_cert_password_title": "प्रमाणपत्र पासवर्ड",
|
||||||
"client_cert_remove_msg": "क्लाइंट प्रमाणपत्र हटा दिया गया है",
|
"client_cert_remove_msg": "क्लाइंट प्रमाणपत्र हटा दिया गया है",
|
||||||
"client_cert_subtitle": "केवल PKCS12 (.p12, .pfx) प्रारूप का समर्थन करता है। प्रमाणपत्र आयात/निकालना केवल लॉगिन से पहले ही उपलब्ध है।",
|
"client_cert_subtitle": "केवल PKCS12 (.p12, .pfx) प्रारूप का समर्थन करता है। प्रमाणपत्र आयात/निकालना केवल लॉगिन से पहले ही उपलब्ध है",
|
||||||
"client_cert_title": "SSL क्लाइंट प्रमाणपत्र [प्रायोगिक]",
|
"client_cert_title": "SSL क्लाइंट प्रमाणपत्र [प्रायोगिक]",
|
||||||
"clockwise": "दक्षिणावर्त",
|
"clockwise": "दक्षिणावर्त",
|
||||||
"close": "बंद करें",
|
"close": "बंद करें",
|
||||||
@@ -738,6 +793,7 @@
|
|||||||
"collapse_all": "सभी को संकुचित करें",
|
"collapse_all": "सभी को संकुचित करें",
|
||||||
"color": "रंग",
|
"color": "रंग",
|
||||||
"color_theme": "रंग थीम",
|
"color_theme": "रंग थीम",
|
||||||
|
"command": "आदेश",
|
||||||
"comment_deleted": "टिप्पणी हटा दी गई",
|
"comment_deleted": "टिप्पणी हटा दी गई",
|
||||||
"comment_options": "टिप्पणी विकल्प",
|
"comment_options": "टिप्पणी विकल्प",
|
||||||
"comments_and_likes": "टिप्पणियाँ और पसंद",
|
"comments_and_likes": "टिप्पणियाँ और पसंद",
|
||||||
@@ -782,6 +838,7 @@
|
|||||||
"create_album": "एल्बम बनाओ",
|
"create_album": "एल्बम बनाओ",
|
||||||
"create_album_page_untitled": "शीर्षकहीन",
|
"create_album_page_untitled": "शीर्षकहीन",
|
||||||
"create_api_key": "ऐ.पी.आई. चाभी बनाएं",
|
"create_api_key": "ऐ.पी.आई. चाभी बनाएं",
|
||||||
|
"create_first_workflow": "पहला वर्कफ़्लो बनाएं",
|
||||||
"create_library": "लाइब्रेरी बनाएं",
|
"create_library": "लाइब्रेरी बनाएं",
|
||||||
"create_link": "लिंक बनाएं",
|
"create_link": "लिंक बनाएं",
|
||||||
"create_link_to_share": "शेयर करने के लिए लिंक बनाएं",
|
"create_link_to_share": "शेयर करने के लिए लिंक बनाएं",
|
||||||
@@ -796,14 +853,18 @@
|
|||||||
"create_tag": "टैग बनाएँ",
|
"create_tag": "टैग बनाएँ",
|
||||||
"create_tag_description": "एक नया टैग बनाएँ। नेस्टेड टैग के लिए, कृपया फ़ॉरवर्ड स्लैश सहित टैग का पूरा पथ दर्ज करें।",
|
"create_tag_description": "एक नया टैग बनाएँ। नेस्टेड टैग के लिए, कृपया फ़ॉरवर्ड स्लैश सहित टैग का पूरा पथ दर्ज करें।",
|
||||||
"create_user": "उपयोगकर्ता बनाइये",
|
"create_user": "उपयोगकर्ता बनाइये",
|
||||||
|
"create_workflow": "वर्कफ़्लो बनाएं",
|
||||||
"created": "बनाया",
|
"created": "बनाया",
|
||||||
"created_at": "बनाया था",
|
"created_at": "बनाया था",
|
||||||
"creating_linked_albums": "जुड़े हुए एल्बम बनाए जा रहे हैं..।",
|
"creating_linked_albums": "जुड़े हुए एल्बम बनाए जा रहे हैं..।",
|
||||||
"crop": "छाँटें",
|
"crop": "छाँटें",
|
||||||
|
"crop_aspect_ratio_free": "स्वतंत्र",
|
||||||
|
"crop_aspect_ratio_original": "मूल अनुपात",
|
||||||
"curated_object_page_title": "चीज़ें",
|
"curated_object_page_title": "चीज़ें",
|
||||||
"current_device": "वर्तमान उपकरण",
|
"current_device": "वर्तमान उपकरण",
|
||||||
"current_pin_code": "वर्तमान पिन कोड",
|
"current_pin_code": "वर्तमान पिन कोड",
|
||||||
"current_server_address": "वर्तमान सर्वर पता",
|
"current_server_address": "वर्तमान सर्वर पता",
|
||||||
|
"custom_date": "मनचाही तिथि",
|
||||||
"custom_locale": "कस्टम लोकेल",
|
"custom_locale": "कस्टम लोकेल",
|
||||||
"custom_locale_description": "भाषा और क्षेत्र के आधार पर दिनांक और संख्याएँ प्रारूपित करें",
|
"custom_locale_description": "भाषा और क्षेत्र के आधार पर दिनांक और संख्याएँ प्रारूपित करें",
|
||||||
"custom_url": "कस्टम URL",
|
"custom_url": "कस्टम URL",
|
||||||
@@ -1178,7 +1239,7 @@
|
|||||||
"home_page_delete_remote_err_local": "दूरस्थ चयन को हटाने, छोड़ने में स्थानीय संपत्तियाँ",
|
"home_page_delete_remote_err_local": "दूरस्थ चयन को हटाने, छोड़ने में स्थानीय संपत्तियाँ",
|
||||||
"home_page_favorite_err_local": "स्थानीय संपत्तियों को अभी तक पसंदीदा नहीं बनाया जा सका, छोड़ा जा रहा है",
|
"home_page_favorite_err_local": "स्थानीय संपत्तियों को अभी तक पसंदीदा नहीं बनाया जा सका, छोड़ा जा रहा है",
|
||||||
"home_page_favorite_err_partner": "अब तक पार्टनर एसेट्स को फेवरेट नहीं कर सकते, स्किप कर रहे हैं",
|
"home_page_favorite_err_partner": "अब तक पार्टनर एसेट्स को फेवरेट नहीं कर सकते, स्किप कर रहे हैं",
|
||||||
"home_page_first_time_notice": "If this is your first time using the app, please make sure to choose a backup album(s) so that the timeline can populate photos and videos in the album(s).",
|
"home_page_first_time_notice": "यदि आप पहली बार इस ऐप का उपयोग कर रहे हैं, तो कृपया एक बैकअप एल्बम चुनें, ताकि टाइमलाइन में फ़ोटो और वीडियो दिखाई दे सकें",
|
||||||
"home_page_locked_error_local": "स्थानीय संपत्तियों को लॉक किए गए फ़ोल्डर में नहीं ले जाया जा सकता, छोड़ा जा सकता है",
|
"home_page_locked_error_local": "स्थानीय संपत्तियों को लॉक किए गए फ़ोल्डर में नहीं ले जाया जा सकता, छोड़ा जा सकता है",
|
||||||
"home_page_locked_error_partner": "साझेदार संपत्तियों को लॉक किए गए फ़ोल्डर में नहीं ले जाया जा सकता, छोड़ें",
|
"home_page_locked_error_partner": "साझेदार संपत्तियों को लॉक किए गए फ़ोल्डर में नहीं ले जाया जा सकता, छोड़ें",
|
||||||
"home_page_share_err_local": "लोकल एसेट्स को लिंक के जरिए शेयर नहीं कर सकते, स्किप कर रहे हैं",
|
"home_page_share_err_local": "लोकल एसेट्स को लिंक के जरिए शेयर नहीं कर सकते, स्किप कर रहे हैं",
|
||||||
@@ -1447,7 +1508,7 @@
|
|||||||
"no_albums_with_name_yet": "ऐसा लगता है कि आपके पास अभी तक इस नाम का कोई एल्बम नहीं है।",
|
"no_albums_with_name_yet": "ऐसा लगता है कि आपके पास अभी तक इस नाम का कोई एल्बम नहीं है।",
|
||||||
"no_albums_yet": "ऐसा लगता है कि आपके पास अभी तक कोई एल्बम नहीं है।",
|
"no_albums_yet": "ऐसा लगता है कि आपके पास अभी तक कोई एल्बम नहीं है।",
|
||||||
"no_archived_assets_message": "फ़ोटो और वीडियो को अपने फ़ोटो दृश्य से छिपाने के लिए उन्हें संग्रहीत करें",
|
"no_archived_assets_message": "फ़ोटो और वीडियो को अपने फ़ोटो दृश्य से छिपाने के लिए उन्हें संग्रहीत करें",
|
||||||
"no_assets_message": "अपना पहला फोटो अपलोड करने के लिए क्लिक करें",
|
"no_assets_message": "अपनी पहली फ़ोटो अपलोड करने के लिए क्लिक करें",
|
||||||
"no_assets_to_show": "दिखाने के लिए कोई संपत्ति नहीं",
|
"no_assets_to_show": "दिखाने के लिए कोई संपत्ति नहीं",
|
||||||
"no_cast_devices_found": "कोई कास्ट डिवाइस नहीं मिला",
|
"no_cast_devices_found": "कोई कास्ट डिवाइस नहीं मिला",
|
||||||
"no_checksum_local": "कोई चेकसम उपलब्ध नहीं है - स्थानीय संपत्तियां प्राप्त नहीं की जा सकतीं",
|
"no_checksum_local": "कोई चेकसम उपलब्ध नहीं है - स्थानीय संपत्तियां प्राप्त नहीं की जा सकतीं",
|
||||||
@@ -1474,7 +1535,6 @@
|
|||||||
"not_available": "लागू नहीं",
|
"not_available": "लागू नहीं",
|
||||||
"not_in_any_album": "किसी एलबम में नहीं",
|
"not_in_any_album": "किसी एलबम में नहीं",
|
||||||
"not_selected": "चयनित नहीं",
|
"not_selected": "चयनित नहीं",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "नोट: पहले अपलोड की गई संपत्तियों पर स्टोरेज लेबल लागू करने के लिए, चलाएँ",
|
|
||||||
"notes": "टिप्पणियाँ",
|
"notes": "टिप्पणियाँ",
|
||||||
"nothing_here_yet": "यहाँ अभी तक कुछ नहीं",
|
"nothing_here_yet": "यहाँ अभी तक कुछ नहीं",
|
||||||
"notification_permission_dialog_content": "सूचनाएं सक्षम करने के लिए सेटिंग्स में जाएं और अनुमति दें चुनें।",
|
"notification_permission_dialog_content": "सूचनाएं सक्षम करने के लिए सेटिंग्स में जाएं और अनुमति दें चुनें।",
|
||||||
@@ -1665,11 +1725,11 @@
|
|||||||
"readonly_mode_enabled": "केवल-पढ़ने के लिए मोड सक्षम",
|
"readonly_mode_enabled": "केवल-पढ़ने के लिए मोड सक्षम",
|
||||||
"ready_for_upload": "अपलोड के लिए तैयार",
|
"ready_for_upload": "अपलोड के लिए तैयार",
|
||||||
"reassign": "पुनः असाइन",
|
"reassign": "पुनः असाइन",
|
||||||
"reassigned_assets_to_existing_person": "{count, plural, one {# asset} other {# assets}} को {name, select, null {an existing person} other {{name}}}को फिर से असाइन किया गया",
|
"reassigned_assets_to_existing_person": "{count, plural, one {# asset} other {# assets}} को {name, select, null {an existing person} other {{name}}}को फिर से असाइन किया गया",
|
||||||
"reassigned_assets_to_new_person": "{count, plural, one {# asset} other {# assets}} को एक नए व्यक्ति को फिर से असाइन किया गया",
|
"reassigned_assets_to_new_person": "{count, plural, one {# asset} other {# assets}} को एक नए व्यक्ति को फिर से असाइन किया गया",
|
||||||
"reassing_hint": "चयनित संपत्तियों को किसी मौजूदा व्यक्ति को सौंपें",
|
"reassing_hint": "चयनित संपत्तियों को किसी मौजूदा व्यक्ति को सौंपें",
|
||||||
"recent": "हाल ही का",
|
"recent": "हाल ही का",
|
||||||
"recent-albums": "हाल के एल्बम",
|
"recent_albums": "हाल के एल्बम",
|
||||||
"recent_searches": "हाल की खोजें",
|
"recent_searches": "हाल की खोजें",
|
||||||
"recently_added": "हाल ही में डाला गया",
|
"recently_added": "हाल ही में डाला गया",
|
||||||
"recently_added_page_title": "हाल ही में डाला गया",
|
"recently_added_page_title": "हाल ही में डाला गया",
|
||||||
@@ -1874,7 +1934,7 @@
|
|||||||
"setting_notifications_notify_failures_grace_period": "बैकग्राउंड बैकअप फेलियर की सूचना दें: {duration}",
|
"setting_notifications_notify_failures_grace_period": "बैकग्राउंड बैकअप फेलियर की सूचना दें: {duration}",
|
||||||
"setting_notifications_notify_hours": "{count} घंटे",
|
"setting_notifications_notify_hours": "{count} घंटे",
|
||||||
"setting_notifications_notify_immediately": "तुरंत",
|
"setting_notifications_notify_immediately": "तुरंत",
|
||||||
"setting_notifications_notify_minutes": "{count} मिनट",
|
"setting_notifications_notify_minutes": "{count} मिनट",
|
||||||
"setting_notifications_notify_never": "कभी नहीं",
|
"setting_notifications_notify_never": "कभी नहीं",
|
||||||
"setting_notifications_notify_seconds": "{count} सेकंड",
|
"setting_notifications_notify_seconds": "{count} सेकंड",
|
||||||
"setting_notifications_single_progress_subtitle": "हर एसेट के लिए अपलोड प्रोग्रेस की पूरी जानकारी",
|
"setting_notifications_single_progress_subtitle": "हर एसेट के लिए अपलोड प्रोग्रेस की पूरी जानकारी",
|
||||||
@@ -1917,7 +1977,7 @@
|
|||||||
"shared_link_custom_url_description": "कस्टम URL से इस शेयर्ड लिंक को एक्सेस करें",
|
"shared_link_custom_url_description": "कस्टम URL से इस शेयर्ड लिंक को एक्सेस करें",
|
||||||
"shared_link_edit_description_hint": "शेयर विवरण दर्ज करें",
|
"shared_link_edit_description_hint": "शेयर विवरण दर्ज करें",
|
||||||
"shared_link_edit_expire_after_option_day": "1 दिन",
|
"shared_link_edit_expire_after_option_day": "1 दिन",
|
||||||
"shared_link_edit_expire_after_option_days": "{count} दिन",
|
"shared_link_edit_expire_after_option_days": "{count} दिन",
|
||||||
"shared_link_edit_expire_after_option_hour": "1 घंटा",
|
"shared_link_edit_expire_after_option_hour": "1 घंटा",
|
||||||
"shared_link_edit_expire_after_option_hours": "{count} घंटे",
|
"shared_link_edit_expire_after_option_hours": "{count} घंटे",
|
||||||
"shared_link_edit_expire_after_option_minute": "1 मिनट",
|
"shared_link_edit_expire_after_option_minute": "1 मिनट",
|
||||||
@@ -1926,8 +1986,8 @@
|
|||||||
"shared_link_edit_expire_after_option_year": "{count} वर्ष",
|
"shared_link_edit_expire_after_option_year": "{count} वर्ष",
|
||||||
"shared_link_edit_password_hint": "शेयर पासवर्ड दर्ज करें",
|
"shared_link_edit_password_hint": "शेयर पासवर्ड दर्ज करें",
|
||||||
"shared_link_edit_submit_button": "अपडेट लिंक",
|
"shared_link_edit_submit_button": "अपडेट लिंक",
|
||||||
"shared_link_error_server_url_fetch": "सर्वर URL नहीं मिल रहा है",
|
"shared_link_error_server_url_fetch": "सर्वर URL प्राप्त नहीं किया जा सका",
|
||||||
"shared_link_expires_day": "{count} दिन में समाप्त हो रहा है",
|
"shared_link_expires_day": "{count} दिन में इसकी वैधता समाप्त हो जाएगी",
|
||||||
"shared_link_expires_days": "{count} दिनों में समाप्त हो जाएगा",
|
"shared_link_expires_days": "{count} दिनों में समाप्त हो जाएगा",
|
||||||
"shared_link_expires_hour": "{count} घंटे में समाप्त हो जाएगा",
|
"shared_link_expires_hour": "{count} घंटे में समाप्त हो जाएगा",
|
||||||
"shared_link_expires_hours": "{count} घंटे में समाप्त हो जाएगा",
|
"shared_link_expires_hours": "{count} घंटे में समाप्त हो जाएगा",
|
||||||
@@ -2052,11 +2112,11 @@
|
|||||||
"theme_selection_description": "आपके ब्राउज़र की सिस्टम प्राथमिकता के आधार पर थीम को स्वचालित रूप से प्रकाश या अंधेरे पर सेट करें",
|
"theme_selection_description": "आपके ब्राउज़र की सिस्टम प्राथमिकता के आधार पर थीम को स्वचालित रूप से प्रकाश या अंधेरे पर सेट करें",
|
||||||
"theme_setting_asset_list_storage_indicator_title": "एसेट टाइल्स पर स्टोरेज इंडिकेटर दिखाएं",
|
"theme_setting_asset_list_storage_indicator_title": "एसेट टाइल्स पर स्टोरेज इंडिकेटर दिखाएं",
|
||||||
"theme_setting_asset_list_tiles_per_row_title": "प्रति पंक्ति एसेट की संख्या ({count})",
|
"theme_setting_asset_list_tiles_per_row_title": "प्रति पंक्ति एसेट की संख्या ({count})",
|
||||||
"theme_setting_colorful_interface_subtitle": "प्राथमिक रंग को पृष्ठभूमि सतहों पर लागू करें",
|
"theme_setting_colorful_interface_subtitle": "प्राथमिक रंग को पृष्ठभूमि सतहों पर लागू करें।",
|
||||||
"theme_setting_colorful_interface_title": "रंगीन इंटरफ़ेस",
|
"theme_setting_colorful_interface_title": "रंगीन इंटरफ़ेस",
|
||||||
"theme_setting_image_viewer_quality_subtitle": "डिटेल इमेज व्यूअर की क्वालिटी एडजस्ट करें",
|
"theme_setting_image_viewer_quality_subtitle": "डिटेल इमेज व्यूअर की क्वालिटी एडजस्ट करें",
|
||||||
"theme_setting_image_viewer_quality_title": "छवि दर्शक गुणवत्ता",
|
"theme_setting_image_viewer_quality_title": "छवि दर्शक गुणवत्ता",
|
||||||
"theme_setting_primary_color_subtitle": "प्राथमिक क्रियाओं और उच्चारणों के लिए एक रंग चुनें",
|
"theme_setting_primary_color_subtitle": "प्राथमिक क्रियाओं और उच्चारणों के लिए एक रंग चुनें।",
|
||||||
"theme_setting_primary_color_title": "प्राथमिक रंग",
|
"theme_setting_primary_color_title": "प्राथमिक रंग",
|
||||||
"theme_setting_system_primary_color_title": "सिस्टम रंग का उपयोग करें",
|
"theme_setting_system_primary_color_title": "सिस्टम रंग का उपयोग करें",
|
||||||
"theme_setting_system_theme_switch": "ऑटोमैटिक (सिस्टम सेटिंग फ़ॉलो करें)",
|
"theme_setting_system_theme_switch": "ऑटोमैटिक (सिस्टम सेटिंग फ़ॉलो करें)",
|
||||||
|
|||||||
+1
-2
@@ -1459,7 +1459,6 @@
|
|||||||
"not_available": "N/A",
|
"not_available": "N/A",
|
||||||
"not_in_any_album": "Ni u jednom albumu",
|
"not_in_any_album": "Ni u jednom albumu",
|
||||||
"not_selected": "Nije odabrano",
|
"not_selected": "Nije odabrano",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "Napomena: Da biste primijenili oznaku pohrane na prethodno prenesene stavke, pokrenite",
|
|
||||||
"notes": "Bilješke",
|
"notes": "Bilješke",
|
||||||
"nothing_here_yet": "Ovdje još nema ničega",
|
"nothing_here_yet": "Ovdje još nema ničega",
|
||||||
"notification_permission_dialog_content": "Da biste omogućili obavijesti, idite u Postavke i odaberite dopusti.",
|
"notification_permission_dialog_content": "Da biste omogućili obavijesti, idite u Postavke i odaberite dopusti.",
|
||||||
@@ -1646,7 +1645,7 @@
|
|||||||
"reassigned_assets_to_new_person": "{count, plural, one {# stavka ponovno dodijeljena} few {# stavke ponovno dodijeljene} other {# stavki ponovno dodijeljeno}} novoj osobi",
|
"reassigned_assets_to_new_person": "{count, plural, one {# stavka ponovno dodijeljena} few {# stavke ponovno dodijeljene} other {# stavki ponovno dodijeljeno}} novoj osobi",
|
||||||
"reassing_hint": "Dodijelite odabrane stavke postojećoj osobi",
|
"reassing_hint": "Dodijelite odabrane stavke postojećoj osobi",
|
||||||
"recent": "Nedavno",
|
"recent": "Nedavno",
|
||||||
"recent-albums": "Nedavni albumi",
|
"recent_albums": "Nedavni albumi",
|
||||||
"recent_searches": "Nedavne pretrage",
|
"recent_searches": "Nedavne pretrage",
|
||||||
"recently_added": "Nedavno dodano",
|
"recently_added": "Nedavno dodano",
|
||||||
"recently_added_page_title": "Nedavno dodano",
|
"recently_added_page_title": "Nedavno dodano",
|
||||||
|
|||||||
+1
-2
@@ -1604,7 +1604,6 @@
|
|||||||
"not_available": "N/A",
|
"not_available": "N/A",
|
||||||
"not_in_any_album": "Nincs albumban",
|
"not_in_any_album": "Nincs albumban",
|
||||||
"not_selected": "Nincs kiválasztva",
|
"not_selected": "Nincs kiválasztva",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "Megjegyzés: a korábban feltöltött elemek tárhely címkézéséhez futtasd a(z)",
|
|
||||||
"notes": "Megjegyzések",
|
"notes": "Megjegyzések",
|
||||||
"nothing_here_yet": "Még semmi sincs itt",
|
"nothing_here_yet": "Még semmi sincs itt",
|
||||||
"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_content": "Az értesítések bekapcsolásához a Beállítások menüben válaszd ki az Engedélyezés-t.",
|
||||||
@@ -1806,7 +1805,7 @@
|
|||||||
"reassigned_assets_to_new_person": "{count, plural, other {# elem}} hozzárendelve egy új személyhez",
|
"reassigned_assets_to_new_person": "{count, plural, other {# elem}} hozzárendelve egy új személyhez",
|
||||||
"reassing_hint": "Kijelölt elemek létező személyhez rendelése",
|
"reassing_hint": "Kijelölt elemek létező személyhez rendelése",
|
||||||
"recent": "Friss",
|
"recent": "Friss",
|
||||||
"recent-albums": "Legutóbbi albumok",
|
"recent_albums": "Legutóbbi albumok",
|
||||||
"recent_searches": "Legutóbbi keresések",
|
"recent_searches": "Legutóbbi keresések",
|
||||||
"recently_added": "Nemrég hozzáadott",
|
"recently_added": "Nemrég hozzáadott",
|
||||||
"recently_added_page_title": "Nemrég hozzáadott",
|
"recently_added_page_title": "Nemrég hozzáadott",
|
||||||
|
|||||||
+1
-2
@@ -1613,7 +1613,6 @@
|
|||||||
"not_available": "T/T",
|
"not_available": "T/T",
|
||||||
"not_in_any_album": "Tidak ada dalam album apa pun",
|
"not_in_any_album": "Tidak ada dalam album apa pun",
|
||||||
"not_selected": "Belum dipilih",
|
"not_selected": "Belum dipilih",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "Catatan: Untuk menerapkan Label Penyimpanan pada aset yang sebelumnya telah diunggah, jalankan",
|
|
||||||
"notes": "Catatan",
|
"notes": "Catatan",
|
||||||
"nothing_here_yet": "Masih kosong",
|
"nothing_here_yet": "Masih kosong",
|
||||||
"notification_permission_dialog_content": "Untuk mengaktifkan notifikasi, buka Pengaturan lalu berikan izin.",
|
"notification_permission_dialog_content": "Untuk mengaktifkan notifikasi, buka Pengaturan lalu berikan izin.",
|
||||||
@@ -1815,7 +1814,7 @@
|
|||||||
"reassigned_assets_to_new_person": "Menetapkan ulang {count, plural, one {# aset} other {# aset}} kepada orang baru",
|
"reassigned_assets_to_new_person": "Menetapkan ulang {count, plural, one {# aset} other {# aset}} kepada orang baru",
|
||||||
"reassing_hint": "Tetapkan aset yang dipilih ke orang yang sudah ada",
|
"reassing_hint": "Tetapkan aset yang dipilih ke orang yang sudah ada",
|
||||||
"recent": "Terkini",
|
"recent": "Terkini",
|
||||||
"recent-albums": "Album terkini",
|
"recent_albums": "Album terkini",
|
||||||
"recent_searches": "Pencarian terkini",
|
"recent_searches": "Pencarian terkini",
|
||||||
"recently_added": "Barusaja ditambahkan",
|
"recently_added": "Barusaja ditambahkan",
|
||||||
"recently_added_page_title": "Baru Ditambahkan",
|
"recently_added_page_title": "Baru Ditambahkan",
|
||||||
|
|||||||
+10
-3
@@ -311,7 +311,7 @@
|
|||||||
"search_jobs": "Cerca Attività…",
|
"search_jobs": "Cerca Attività…",
|
||||||
"send_welcome_email": "Invia email di benvenuto",
|
"send_welcome_email": "Invia email di benvenuto",
|
||||||
"server_external_domain_settings": "Dominio esterno",
|
"server_external_domain_settings": "Dominio esterno",
|
||||||
"server_external_domain_settings_description": "Dominio per link condivisi pubblicamente, incluso http(s)://",
|
"server_external_domain_settings_description": "Dominio utilizzato per i link esterni",
|
||||||
"server_public_users": "Utenti Pubblici",
|
"server_public_users": "Utenti Pubblici",
|
||||||
"server_public_users_description": "Tutti gli utenti (nome ed e-mail) sono elencati quando si aggiunge un utente agli album condivisi. Quando disabilitato, l'elenco degli utenti sarà disponibile solo per gli utenti amministratori.",
|
"server_public_users_description": "Tutti gli utenti (nome ed e-mail) sono elencati quando si aggiunge un utente agli album condivisi. Quando disabilitato, l'elenco degli utenti sarà disponibile solo per gli utenti amministratori.",
|
||||||
"server_settings": "Impostazioni Server",
|
"server_settings": "Impostazioni Server",
|
||||||
@@ -794,6 +794,11 @@
|
|||||||
"color": "Colore",
|
"color": "Colore",
|
||||||
"color_theme": "Colore Tema",
|
"color_theme": "Colore Tema",
|
||||||
"command": "Comando",
|
"command": "Comando",
|
||||||
|
"command_palette_prompt": "Trova rapidamente pagine, azioni o comandi",
|
||||||
|
"command_palette_to_close": "per chiudere",
|
||||||
|
"command_palette_to_navigate": "per entrare",
|
||||||
|
"command_palette_to_select": "per selezionare",
|
||||||
|
"command_palette_to_show_all": "per mostrare tutto",
|
||||||
"comment_deleted": "Commento eliminato",
|
"comment_deleted": "Commento eliminato",
|
||||||
"comment_options": "Opzioni per i commenti",
|
"comment_options": "Opzioni per i commenti",
|
||||||
"comments_and_likes": "Commenti & mi piace",
|
"comments_and_likes": "Commenti & mi piace",
|
||||||
@@ -1168,6 +1173,7 @@
|
|||||||
"exif_bottom_sheet_people": "PERSONE",
|
"exif_bottom_sheet_people": "PERSONE",
|
||||||
"exif_bottom_sheet_person_add_person": "Aggiungi nome",
|
"exif_bottom_sheet_person_add_person": "Aggiungi nome",
|
||||||
"exit_slideshow": "Esci dalla presentazione",
|
"exit_slideshow": "Esci dalla presentazione",
|
||||||
|
"expand": "Espandi",
|
||||||
"expand_all": "Espandi tutto",
|
"expand_all": "Espandi tutto",
|
||||||
"experimental_settings_new_asset_list_subtitle": "Lavori in corso",
|
"experimental_settings_new_asset_list_subtitle": "Lavori in corso",
|
||||||
"experimental_settings_new_asset_list_title": "Attiva griglia foto sperimentale",
|
"experimental_settings_new_asset_list_title": "Attiva griglia foto sperimentale",
|
||||||
@@ -1613,7 +1619,6 @@
|
|||||||
"not_available": "N/A",
|
"not_available": "N/A",
|
||||||
"not_in_any_album": "In nessun album",
|
"not_in_any_album": "In nessun album",
|
||||||
"not_selected": "Non selezionato",
|
"not_selected": "Non selezionato",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "Nota: Per aggiungere l'etichetta dell'archiviazione alle risorse caricate in precedenza, esegui",
|
|
||||||
"notes": "Note",
|
"notes": "Note",
|
||||||
"nothing_here_yet": "Ancora nulla qui",
|
"nothing_here_yet": "Ancora nulla qui",
|
||||||
"notification_permission_dialog_content": "Per attivare le notifiche, vai alle Impostazioni e seleziona concedi.",
|
"notification_permission_dialog_content": "Per attivare le notifiche, vai alle Impostazioni e seleziona concedi.",
|
||||||
@@ -1643,6 +1648,7 @@
|
|||||||
"online": "Online",
|
"online": "Online",
|
||||||
"only_favorites": "Solo preferiti",
|
"only_favorites": "Solo preferiti",
|
||||||
"open": "Apri",
|
"open": "Apri",
|
||||||
|
"open_calendar": "Apri il calendario",
|
||||||
"open_in_map_view": "Apri nella visualizzazione mappa",
|
"open_in_map_view": "Apri nella visualizzazione mappa",
|
||||||
"open_in_openstreetmap": "Apri su OpenStreetMap",
|
"open_in_openstreetmap": "Apri su OpenStreetMap",
|
||||||
"open_the_search_filters": "Apri filtri di ricerca",
|
"open_the_search_filters": "Apri filtri di ricerca",
|
||||||
@@ -1815,7 +1821,7 @@
|
|||||||
"reassigned_assets_to_new_person": "{count, plural, one {Riassegnata # risorsa} other {Riassegnate # risorse}} ad una nuova persona",
|
"reassigned_assets_to_new_person": "{count, plural, one {Riassegnata # risorsa} other {Riassegnate # risorse}} ad una nuova persona",
|
||||||
"reassing_hint": "Assegna le risorse selezionate ad una persona esistente",
|
"reassing_hint": "Assegna le risorse selezionate ad una persona esistente",
|
||||||
"recent": "Recenti",
|
"recent": "Recenti",
|
||||||
"recent-albums": "Album recenti",
|
"recent_albums": "Album recenti",
|
||||||
"recent_searches": "Ricerche recenti",
|
"recent_searches": "Ricerche recenti",
|
||||||
"recently_added": "Aggiunti recentemente",
|
"recently_added": "Aggiunti recentemente",
|
||||||
"recently_added_page_title": "Aggiunti di recente",
|
"recently_added_page_title": "Aggiunti di recente",
|
||||||
@@ -2184,6 +2190,7 @@
|
|||||||
"support": "Supporto",
|
"support": "Supporto",
|
||||||
"support_and_feedback": "Supporto & Feedback",
|
"support_and_feedback": "Supporto & Feedback",
|
||||||
"support_third_party_description": "La tua installazione di Immich è stata costruita da terze parti. I problemi che riscontri potrebbero essere causati da altri pacchetti, quindi ti preghiamo di sollevare il problema in prima istanza utilizzando i link sottostanti.",
|
"support_third_party_description": "La tua installazione di Immich è stata costruita da terze parti. I problemi che riscontri potrebbero essere causati da altri pacchetti, quindi ti preghiamo di sollevare il problema in prima istanza utilizzando i link sottostanti.",
|
||||||
|
"supporter": "Sostenitore",
|
||||||
"swap_merge_direction": "Scambia direzione di unione",
|
"swap_merge_direction": "Scambia direzione di unione",
|
||||||
"sync": "Sincronizza",
|
"sync": "Sincronizza",
|
||||||
"sync_albums": "Sincronizza album",
|
"sync_albums": "Sincronizza album",
|
||||||
|
|||||||
+1
-2
@@ -1613,7 +1613,6 @@
|
|||||||
"not_available": "適用なし",
|
"not_available": "適用なし",
|
||||||
"not_in_any_album": "どのアルバムにも入っていない",
|
"not_in_any_album": "どのアルバムにも入っていない",
|
||||||
"not_selected": "選択なし",
|
"not_selected": "選択なし",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "注意: 以前にアップロードしたアセットにストレージラベルを適用するには以下を実行してください",
|
|
||||||
"notes": "注意",
|
"notes": "注意",
|
||||||
"nothing_here_yet": "まだ何も無いようです",
|
"nothing_here_yet": "まだ何も無いようです",
|
||||||
"notification_permission_dialog_content": "通知を許可するには設定を開いてオンにしてください",
|
"notification_permission_dialog_content": "通知を許可するには設定を開いてオンにしてください",
|
||||||
@@ -1815,7 +1814,7 @@
|
|||||||
"reassigned_assets_to_new_person": "{count, plural, one {#個} other {#個}}の写真/動画を新しい人物に割り当てました",
|
"reassigned_assets_to_new_person": "{count, plural, one {#個} other {#個}}の写真/動画を新しい人物に割り当てました",
|
||||||
"reassing_hint": "選択された写真/動画を既存の人物に割り当て",
|
"reassing_hint": "選択された写真/動画を既存の人物に割り当て",
|
||||||
"recent": "最近",
|
"recent": "最近",
|
||||||
"recent-albums": "最近のアルバム",
|
"recent_albums": "最近のアルバム",
|
||||||
"recent_searches": "最近の検索",
|
"recent_searches": "最近の検索",
|
||||||
"recently_added": "最近追加された項目",
|
"recently_added": "最近追加された項目",
|
||||||
"recently_added_page_title": "最近",
|
"recently_added_page_title": "最近",
|
||||||
|
|||||||
+1
-2
@@ -1581,7 +1581,6 @@
|
|||||||
"not_available": "없음",
|
"not_available": "없음",
|
||||||
"not_in_any_album": "앨범에 없음",
|
"not_in_any_album": "앨범에 없음",
|
||||||
"not_selected": "선택되지 않음",
|
"not_selected": "선택되지 않음",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "참고: 이전에 업로드한 항목에도 스토리지 레이블을 적용하려면 다음을 실행합니다,",
|
|
||||||
"notes": "참고",
|
"notes": "참고",
|
||||||
"nothing_here_yet": "아직 아무것도 없음",
|
"nothing_here_yet": "아직 아무것도 없음",
|
||||||
"notification_permission_dialog_content": "알림을 활성화하려면 설정에서 알림 권한을 허용하세요.",
|
"notification_permission_dialog_content": "알림을 활성화하려면 설정에서 알림 권한을 허용하세요.",
|
||||||
@@ -1780,7 +1779,7 @@
|
|||||||
"reassigned_assets_to_new_person": "{count, plural, one {항목 #개} other {항목 #개}}를 새 인물에게 재지정했습니다.",
|
"reassigned_assets_to_new_person": "{count, plural, one {항목 #개} other {항목 #개}}를 새 인물에게 재지정했습니다.",
|
||||||
"reassing_hint": "기존 인물에 선택한 항목 할당",
|
"reassing_hint": "기존 인물에 선택한 항목 할당",
|
||||||
"recent": "최근",
|
"recent": "최근",
|
||||||
"recent-albums": "최근 앨범",
|
"recent_albums": "최근 앨범",
|
||||||
"recent_searches": "최근 검색",
|
"recent_searches": "최근 검색",
|
||||||
"recently_added": "최근 추가",
|
"recently_added": "최근 추가",
|
||||||
"recently_added_page_title": "최근 추가",
|
"recently_added_page_title": "최근 추가",
|
||||||
|
|||||||
+83
-6
@@ -1579,7 +1579,6 @@
|
|||||||
"not_available": "Nepasiekiamas",
|
"not_available": "Nepasiekiamas",
|
||||||
"not_in_any_album": "Nė viename albume",
|
"not_in_any_album": "Nė viename albume",
|
||||||
"not_selected": "Nepasirinkta",
|
"not_selected": "Nepasirinkta",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "Pastaba: Priskirti Saugyklos Žymą prie anksčiau įkeltų ištekliu, paleiskite šį",
|
|
||||||
"notes": "Pastabos",
|
"notes": "Pastabos",
|
||||||
"nothing_here_yet": "Kol kas tuščia",
|
"nothing_here_yet": "Kol kas tuščia",
|
||||||
"notification_permission_dialog_content": "Pranešimų įgalinimui eikite į Nustatymus ir pasirinkite Leisti.",
|
"notification_permission_dialog_content": "Pranešimų įgalinimui eikite į Nustatymus ir pasirinkite Leisti.",
|
||||||
@@ -1774,7 +1773,7 @@
|
|||||||
"read_changelog": "Skaityti pakeitimų sąrašą",
|
"read_changelog": "Skaityti pakeitimų sąrašą",
|
||||||
"ready_for_upload": "Paruošta įkėlimui",
|
"ready_for_upload": "Paruošta įkėlimui",
|
||||||
"recent": "Naujausi",
|
"recent": "Naujausi",
|
||||||
"recent-albums": "Naujausi albumai",
|
"recent_albums": "Naujausi albumai",
|
||||||
"recent_searches": "Naujausios paieškos",
|
"recent_searches": "Naujausios paieškos",
|
||||||
"recently_added": "Neseniai pridėta",
|
"recently_added": "Neseniai pridėta",
|
||||||
"recently_added_page_title": "Neseniai pridėta",
|
"recently_added_page_title": "Neseniai pridėta",
|
||||||
@@ -1824,12 +1823,18 @@
|
|||||||
"replace_with_upload": "Pakeisti naujai įkeltu failu",
|
"replace_with_upload": "Pakeisti naujai įkeltu failu",
|
||||||
"repository": "Repozitoriumas",
|
"repository": "Repozitoriumas",
|
||||||
"require_password": "Reikalauti slaptažodžio",
|
"require_password": "Reikalauti slaptažodžio",
|
||||||
|
"require_user_to_change_password_on_first_login": "Reikalauti, kad vartotojas pakeistų slaptažodį pirmą kartą prisijungdamas",
|
||||||
"rescan": "Perskenuoti",
|
"rescan": "Perskenuoti",
|
||||||
"reset": "Atstatyti",
|
"reset": "Atstatyti",
|
||||||
"reset_password": "Atstayti slaptažodį",
|
"reset_password": "Atstatyti slaptažodį",
|
||||||
|
"reset_people_visibility": "Atstatyti žmonių matomumą",
|
||||||
"reset_pin_code": "Atsatyti PIN kodą",
|
"reset_pin_code": "Atsatyti PIN kodą",
|
||||||
"reset_pin_code_description": "Jei pamiršote PIN kodą, galite susisiekti su serverio administratoriumi, kad jis jį atstatytų",
|
"reset_pin_code_description": "Jei pamiršote PIN kodą, galite susisiekti su serverio administratoriumi, kad jis jį atstatytų",
|
||||||
|
"reset_pin_code_success": "Sėkmingai atstatytas PIN kodas",
|
||||||
"reset_pin_code_with_password": "PIN kodą visada galite atkurti naudodami savo slaptažodį",
|
"reset_pin_code_with_password": "PIN kodą visada galite atkurti naudodami savo slaptažodį",
|
||||||
|
"reset_sqlite": "Atstatyti SQLite duomenų bazę",
|
||||||
|
"reset_sqlite_confirmation": "Ar tikrai norite atstatyti SQLite duomenų bazę? Turėsite atsijungti ir vėl prisijungti, kad iš naujo sinchronizuotumėte duomenis",
|
||||||
|
"reset_sqlite_success": "Sėkmingai atstatyta SQLite duomenų bazė",
|
||||||
"reset_to_default": "Atkurti numatytuosius",
|
"reset_to_default": "Atkurti numatytuosius",
|
||||||
"resolution": "Rezoliucija",
|
"resolution": "Rezoliucija",
|
||||||
"resolve_duplicates": "Sutvarkyti dublikatus",
|
"resolve_duplicates": "Sutvarkyti dublikatus",
|
||||||
@@ -1839,7 +1844,15 @@
|
|||||||
"restore_trash_action_prompt": "{count} atstatyta iš šiukšliadėžės",
|
"restore_trash_action_prompt": "{count} atstatyta iš šiukšliadėžės",
|
||||||
"restore_user": "Atkurti naudotoją",
|
"restore_user": "Atkurti naudotoją",
|
||||||
"restored_asset": "Atkurti elementą",
|
"restored_asset": "Atkurti elementą",
|
||||||
|
"resume": "Tęsti",
|
||||||
|
"resume_paused_jobs": "Tęsti {count, plural, one {# pristabdytą darbą} other {# pristabdytus darbus}}",
|
||||||
|
"retry_upload": "Bandyti išsiųsti dar kartą",
|
||||||
"review_duplicates": "Peržiūrėti dublikatus",
|
"review_duplicates": "Peržiūrėti dublikatus",
|
||||||
|
"review_large_files": "Peržiūrėti didelius failus",
|
||||||
|
"role": "Rolė",
|
||||||
|
"role_editor": "Redaktorius",
|
||||||
|
"role_viewer": "Stebėtojas",
|
||||||
|
"running": "Vykdoma",
|
||||||
"save": "Išsaugoti",
|
"save": "Išsaugoti",
|
||||||
"save_to_gallery": "Išsaugoti galerijoje",
|
"save_to_gallery": "Išsaugoti galerijoje",
|
||||||
"saved": "Išsaugota",
|
"saved": "Išsaugota",
|
||||||
@@ -1863,6 +1876,7 @@
|
|||||||
"search_by_filename_example": "pvz. IMG_1234.JPG arba PNG",
|
"search_by_filename_example": "pvz. IMG_1234.JPG arba PNG",
|
||||||
"search_by_ocr": "Ieškoti pagal OCR",
|
"search_by_ocr": "Ieškoti pagal OCR",
|
||||||
"search_by_ocr_example": "Latte",
|
"search_by_ocr_example": "Latte",
|
||||||
|
"search_camera_lens_model": "Ieškoti objektyvo modelio...",
|
||||||
"search_camera_make": "Ieškoti pagal kameros gamintoją...",
|
"search_camera_make": "Ieškoti pagal kameros gamintoją...",
|
||||||
"search_camera_model": "Ieškoti kameros modelį...",
|
"search_camera_model": "Ieškoti kameros modelį...",
|
||||||
"search_city": "Ieškoti miesto...",
|
"search_city": "Ieškoti miesto...",
|
||||||
@@ -1883,12 +1897,15 @@
|
|||||||
"search_filter_people_title": "Pasirinkti asmenis",
|
"search_filter_people_title": "Pasirinkti asmenis",
|
||||||
"search_filter_star_rating": "Įvertinimas",
|
"search_filter_star_rating": "Įvertinimas",
|
||||||
"search_for": "Ieškoti ko",
|
"search_for": "Ieškoti ko",
|
||||||
|
"search_for_existing_person": "Ieškoti įvardinto asmens",
|
||||||
"search_no_more_result": "Nėra daugiau rezultatų",
|
"search_no_more_result": "Nėra daugiau rezultatų",
|
||||||
"search_no_people": "Be asmenų",
|
"search_no_people": "Be asmenų",
|
||||||
"search_no_people_named": "Nėra žmonių vardu „{name}“",
|
"search_no_people_named": "Nėra žmonių vardu „{name}“",
|
||||||
"search_no_result": "Rezultatų nerasta, pabandykite kitą paieškos terminą ar derinį",
|
"search_no_result": "Rezultatų nerasta, pabandykite kitą paieškos terminą ar derinį",
|
||||||
"search_options": "Paieškos parinktys",
|
"search_options": "Paieškos parinktys",
|
||||||
"search_page_categories": "Kategorijos",
|
"search_page_categories": "Kategorijos",
|
||||||
|
"search_page_motion_photos": "Judanti Foto",
|
||||||
|
"search_page_no_objects": "Objekto info nepasiekiama",
|
||||||
"search_page_no_places": "Vietovės info nepasiekiama",
|
"search_page_no_places": "Vietovės info nepasiekiama",
|
||||||
"search_page_screenshots": "Ekrano nuotraukos",
|
"search_page_screenshots": "Ekrano nuotraukos",
|
||||||
"search_page_search_photos_videos": "Ieškokite nuotraukų ir vaizdo įrašų",
|
"search_page_search_photos_videos": "Ieškokite nuotraukų ir vaizdo įrašų",
|
||||||
@@ -1902,22 +1919,35 @@
|
|||||||
"search_rating": "Ieškoti pagal įvertinimą...",
|
"search_rating": "Ieškoti pagal įvertinimą...",
|
||||||
"search_result_page_new_search_hint": "Nauja Paieška",
|
"search_result_page_new_search_hint": "Nauja Paieška",
|
||||||
"search_settings": "Ieškoti nustatymų",
|
"search_settings": "Ieškoti nustatymų",
|
||||||
|
"search_state": "Ieškoti valstijos/apskrities...",
|
||||||
|
"search_suggestion_list_smart_search_hint_1": "Išmanioji paieška įjungta pagal numatytuosius nustatymus, metaduomenų paieškai naudokite sintaksę ",
|
||||||
"search_suggestion_list_smart_search_hint_2": "Paieška",
|
"search_suggestion_list_smart_search_hint_2": "Paieška",
|
||||||
"search_tags": "Ieškoti žymų...",
|
"search_tags": "Ieškoti žymų...",
|
||||||
"search_timezone": "Ieškoti laiko zonos...",
|
"search_timezone": "Ieškoti laiko zonos...",
|
||||||
"search_type": "Paieškos tipas",
|
"search_type": "Paieškos tipas",
|
||||||
"search_your_photos": "Ieškoti nuotraukų",
|
"search_your_photos": "Ieškoti nuotraukų",
|
||||||
|
"searching_locales": "Ieškoma vietovių...",
|
||||||
|
"second": "Sekundė",
|
||||||
|
"see_all_people": "Pamatyti visus asmenis",
|
||||||
"select": "Pasirinkti",
|
"select": "Pasirinkti",
|
||||||
|
"select_album": "Rinktis albumą",
|
||||||
|
"select_album_cover": "Rinktis albumo viršelį",
|
||||||
|
"select_albums": "Rinktis albumus",
|
||||||
|
"select_all": "Pasirinkti visus",
|
||||||
"select_all_duplicates": "Pasirinkti visus dublikatus",
|
"select_all_duplicates": "Pasirinkti visus dublikatus",
|
||||||
"select_all_in": "Pažymėti visus esančius {group}",
|
"select_all_in": "Pažymėti visus esančius {group}",
|
||||||
"select_avatar_color": "Pasirinkti avataro spalvą",
|
"select_avatar_color": "Pasirinkti avataro spalvą",
|
||||||
"select_count": "{count, plural, one {Pasirinkti #} other {Pasirinkti #}}",
|
"select_count": "{count, plural, one {Pasirinkti #} other {Pasirinkti #}}",
|
||||||
|
"select_cutoff_date": "Pasirinkite galutinę datą",
|
||||||
"select_face": "Pasirinkti veidą",
|
"select_face": "Pasirinkti veidą",
|
||||||
"select_featured_photo": "Pasirinkti rodomą nuotrauką",
|
"select_featured_photo": "Pasirinkti rodomą nuotrauką",
|
||||||
"select_from_computer": "Pasirinkti iš kompiuterio",
|
"select_from_computer": "Pasirinkti iš kompiuterio",
|
||||||
"select_keep_all": "Visus pažymėti \"Palikti\"",
|
"select_keep_all": "Visus pažymėti \"Palikti\"",
|
||||||
"select_library_owner": "Pasirinkti bibliotekos savininką",
|
"select_library_owner": "Pasirinkti bibliotekos savininką",
|
||||||
"select_new_face": "Pasirinkti naują veidą",
|
"select_new_face": "Pasirinkti naują veidą",
|
||||||
|
"select_people": "Pasirinkti asmenis",
|
||||||
|
"select_person": "Pasirinkti asmenį",
|
||||||
|
"select_person_to_tag": "Pasirinkti asmenį žymai",
|
||||||
"select_photos": "Pasirinkti nuotraukas",
|
"select_photos": "Pasirinkti nuotraukas",
|
||||||
"select_trash_all": "Visus pažymėti \"Išmesti\"",
|
"select_trash_all": "Visus pažymėti \"Išmesti\"",
|
||||||
"select_user_for_sharing_page_err_album": "Nepavyko sukurti albumo",
|
"select_user_for_sharing_page_err_album": "Nepavyko sukurti albumo",
|
||||||
@@ -1926,22 +1956,29 @@
|
|||||||
"selected_gps_coordinates": "Pasirinkti GPS Koordinates",
|
"selected_gps_coordinates": "Pasirinkti GPS Koordinates",
|
||||||
"send_message": "Siųsti žinutę",
|
"send_message": "Siųsti žinutę",
|
||||||
"send_welcome_email": "Siųsti sveikinimo el. laišką",
|
"send_welcome_email": "Siųsti sveikinimo el. laišką",
|
||||||
"server_info_box_app_version": "Programėlės versija",
|
"server_endpoint": "Serverio Galinis Taškas",
|
||||||
|
"server_info_box_app_version": "Programos versija",
|
||||||
"server_info_box_server_url": "Serverio URL",
|
"server_info_box_server_url": "Serverio URL",
|
||||||
"server_offline": "Serveris nepasiekiamas",
|
"server_offline": "Serveris nepasiekiamas",
|
||||||
"server_online": "Serveris pasiekiamas",
|
"server_online": "Serveris pasiekiamas",
|
||||||
"server_privacy": "Serverio Privatumas",
|
"server_privacy": "Serverio Privatumas",
|
||||||
"server_restarting_description": "Šis puslapis atsinaujins neužilgo.",
|
"server_restarting_description": "Šis puslapis atsinaujins neužilgo.",
|
||||||
|
"server_restarting_title": "Serveris restartuoja",
|
||||||
"server_stats": "Serverio statistika",
|
"server_stats": "Serverio statistika",
|
||||||
|
"server_update_available": "Yra Serverio atnaujinimas",
|
||||||
"server_version": "Serverio versija",
|
"server_version": "Serverio versija",
|
||||||
"set": "Nustatyti",
|
"set": "Nustatyti",
|
||||||
|
"set_as_album_cover": "Naudoti kaip albumo viršelį",
|
||||||
|
"set_as_featured_photo": "Naudoti foto asmens profiliui",
|
||||||
"set_as_profile_picture": "Nustatyti kaip profilio nuotrauką",
|
"set_as_profile_picture": "Nustatyti kaip profilio nuotrauką",
|
||||||
"set_date_of_birth": "Nustatyti gimimo datą",
|
"set_date_of_birth": "Nustatyti gimimo datą",
|
||||||
"set_profile_picture": "Nustatyti profilio nuotrauką",
|
"set_profile_picture": "Nustatyti profilio nuotrauką",
|
||||||
"set_slideshow_to_fullscreen": "Nustatyti skaidrių peržiūrą per visą ekraną",
|
"set_slideshow_to_fullscreen": "Nustatyti skaidrių peržiūrą per visą ekraną",
|
||||||
"set_stack_primary_asset": "Nustatyti kaip pagrindinį elementą",
|
"set_stack_primary_asset": "Nustatyti kaip pagrindinį elementą",
|
||||||
"setting_image_viewer_help": "Detali peržiūra pirmiausia įkelia mažą miniatiūrą, tada įkelia vidutinio dydžio versiją (jei įjungta) ir galiausiai įkelia originalą (jei įjungta).",
|
"setting_image_viewer_help": "Detali peržiūra pirmiausia įkelia mažą miniatiūrą, tada įkelia vidutinio dydžio versiją (jei įjungta) ir galiausiai įkelia originalą (jei įjungta).",
|
||||||
|
"setting_image_viewer_original_subtitle": "Įjunkite, kad įkeltumėte originalų pilnos raiškos vaizdą (didelį!). Išjunkite, kad sumažintumėte duomenų naudojimą (tiek tinkle, tiek įrenginio talpykloje).",
|
||||||
"setting_image_viewer_original_title": "Užkrauti originalią nuotrauką",
|
"setting_image_viewer_original_title": "Užkrauti originalią nuotrauką",
|
||||||
|
"setting_image_viewer_preview_subtitle": "Įjunkite, jei norite įkelti vidutinės raiškos vaizdą. Išjunkite, jei norite tiesiogiai įkelti originalą ar naudoti tik miniatiūrą.",
|
||||||
"setting_image_viewer_preview_title": "Užkrauti peržiūros nuotrauką",
|
"setting_image_viewer_preview_title": "Užkrauti peržiūros nuotrauką",
|
||||||
"setting_image_viewer_title": "Nuotraukos",
|
"setting_image_viewer_title": "Nuotraukos",
|
||||||
"setting_languages_apply": "Pritaikyti",
|
"setting_languages_apply": "Pritaikyti",
|
||||||
@@ -1976,7 +2013,11 @@
|
|||||||
"shared_album_activities_input_disable": "Komentarai išjungti",
|
"shared_album_activities_input_disable": "Komentarai išjungti",
|
||||||
"shared_album_activity_remove_content": "Ar norite ištrinti šią veiklą?",
|
"shared_album_activity_remove_content": "Ar norite ištrinti šią veiklą?",
|
||||||
"shared_album_activity_remove_title": "Ištrinti veiklą",
|
"shared_album_activity_remove_title": "Ištrinti veiklą",
|
||||||
|
"shared_album_section_people_action_error": "Klaida išeinant/šalinant iš albumo",
|
||||||
|
"shared_album_section_people_action_leave": "Pašalinti naudotoją iš albumo",
|
||||||
|
"shared_album_section_people_action_remove_user": "Pašalinti naudotoją iš albumo",
|
||||||
"shared_album_section_people_title": "ASMENYS",
|
"shared_album_section_people_title": "ASMENYS",
|
||||||
|
"shared_by": "Bendrina",
|
||||||
"shared_by_user": "Bendrina {user}",
|
"shared_by_user": "Bendrina {user}",
|
||||||
"shared_by_you": "Bendrinama jūsų",
|
"shared_by_you": "Bendrinama jūsų",
|
||||||
"shared_from_partner": "Nuotraukos iš {partner}",
|
"shared_from_partner": "Nuotraukos iš {partner}",
|
||||||
@@ -1984,6 +2025,9 @@
|
|||||||
"shared_link_app_bar_title": "Dalinimosi Nuorodos",
|
"shared_link_app_bar_title": "Dalinimosi Nuorodos",
|
||||||
"shared_link_clipboard_copied_massage": "Nukopijuota į iškarpinę",
|
"shared_link_clipboard_copied_massage": "Nukopijuota į iškarpinę",
|
||||||
"shared_link_clipboard_text": "Nuoroda: {link}\nSlaptažodis: {password}",
|
"shared_link_clipboard_text": "Nuoroda: {link}\nSlaptažodis: {password}",
|
||||||
|
"shared_link_create_error": "Klaida kuriant bendrinimo nuorodą",
|
||||||
|
"shared_link_custom_url_description": "Pasiekite šią bendrinimo nuorodą naudodami tinkintą URL",
|
||||||
|
"shared_link_edit_description_hint": "Įveskite bendrinimo aprašymą",
|
||||||
"shared_link_edit_expire_after_option_day": "1 diena",
|
"shared_link_edit_expire_after_option_day": "1 diena",
|
||||||
"shared_link_edit_expire_after_option_days": "{count} dienų",
|
"shared_link_edit_expire_after_option_days": "{count} dienų",
|
||||||
"shared_link_edit_expire_after_option_hour": "1 valanda",
|
"shared_link_edit_expire_after_option_hour": "1 valanda",
|
||||||
@@ -1992,23 +2036,32 @@
|
|||||||
"shared_link_edit_expire_after_option_minutes": "{count} minučių",
|
"shared_link_edit_expire_after_option_minutes": "{count} minučių",
|
||||||
"shared_link_edit_expire_after_option_months": "{count} mėnesių",
|
"shared_link_edit_expire_after_option_months": "{count} mėnesių",
|
||||||
"shared_link_edit_expire_after_option_year": "{count} metų",
|
"shared_link_edit_expire_after_option_year": "{count} metų",
|
||||||
"shared_link_edit_submit_button": "Dalinimosi Nuorodos",
|
"shared_link_edit_password_hint": "Įveskite bendrinimo slaptažodį",
|
||||||
|
"shared_link_edit_submit_button": "Atnaujinti nuorodą",
|
||||||
|
"shared_link_error_server_url_fetch": "Nepavyksta gauti serverio url",
|
||||||
"shared_link_expires_day": "Galiojimas baigsis už {count} dienos",
|
"shared_link_expires_day": "Galiojimas baigsis už {count} dienos",
|
||||||
"shared_link_expires_days": "Galiojimas baigsis už {count} dienų",
|
"shared_link_expires_days": "Galiojimas baigsis už {count} dienų",
|
||||||
"shared_link_expires_hour": "Galiojimas baigsis už {count} valandos",
|
"shared_link_expires_hour": "Galiojimas baigsis už {count} valandos",
|
||||||
"shared_link_expires_hours": "Galiojimas baigsis už {count} valandų",
|
"shared_link_expires_hours": "Galiojimas baigsis už {count} valandų",
|
||||||
"shared_link_expires_minute": "Galiojimas baigsis už {count} minutės",
|
"shared_link_expires_minute": "Galiojimas baigsis už {count} minutės",
|
||||||
"shared_link_expires_minutes": "Galiojimas baigsis už {count} minučių",
|
"shared_link_expires_minutes": "Galiojimas baigsis už {count} minučių",
|
||||||
|
"shared_link_expires_never": "Galiojimas baigiasi ∞",
|
||||||
"shared_link_expires_second": "Galiojimas baigsis už {count} sekundės",
|
"shared_link_expires_second": "Galiojimas baigsis už {count} sekundės",
|
||||||
"shared_link_expires_seconds": "Galiojimas baigsis už {count} sekundžių",
|
"shared_link_expires_seconds": "Galiojimas baigsis už {count} sekundžių",
|
||||||
|
"shared_link_individual_shared": "Asmuo pasidalintas",
|
||||||
|
"shared_link_info_chip_metadata": "EXIF",
|
||||||
|
"shared_link_manage_links": "Valdyti Bendrinimo nuorodas",
|
||||||
"shared_link_options": "Bendrinimo nuorodos parametrai",
|
"shared_link_options": "Bendrinimo nuorodos parametrai",
|
||||||
|
"shared_link_password_description": "Bendrinimo nuorodos prieigai reikalingas slaptažodis",
|
||||||
"shared_links": "Bendrinimo nuorodos",
|
"shared_links": "Bendrinimo nuorodos",
|
||||||
|
"shared_links_description": "Dalintis foto ir video su nuoroda",
|
||||||
"shared_photos_and_videos_count": "{assetCount, plural, one {# bendrinama nuotrauka ir vaizdo įrašas} few {# bendrinamos nuotraukos ir vaizdo įrašai} other {# bendrinamų nuotraukų ir vaizdo įrašų}}",
|
"shared_photos_and_videos_count": "{assetCount, plural, one {# bendrinama nuotrauka ir vaizdo įrašas} few {# bendrinamos nuotraukos ir vaizdo įrašai} other {# bendrinamų nuotraukų ir vaizdo įrašų}}",
|
||||||
"shared_with_me": "Bendrinama su manimi",
|
"shared_with_me": "Bendrinama su manimi",
|
||||||
"shared_with_partner": "Pasidalinta su {partner}",
|
"shared_with_partner": "Pasidalinta su {partner}",
|
||||||
"sharing": "Dalijimasis",
|
"sharing": "Dalijimasis",
|
||||||
"sharing_enter_password": "Norėdami peržiūrėti šį puslapį, įveskite slaptažodį.",
|
"sharing_enter_password": "Norėdami peržiūrėti šį puslapį, įveskite slaptažodį.",
|
||||||
"sharing_page_album": "Bendrinami albumai",
|
"sharing_page_album": "Bendrinami albumai",
|
||||||
|
"sharing_page_description": "Kurkite bendrinamus albumus, kad galėtumėte dalintis foto ir video su žmonėmis savo tinkle.",
|
||||||
"sharing_page_empty_list": "TUŠČIAS SĄRAŠAS",
|
"sharing_page_empty_list": "TUŠČIAS SĄRAŠAS",
|
||||||
"sharing_sidebar_description": "Rodyti bendrinimo rodinio nuorodą šoninėje juostoje",
|
"sharing_sidebar_description": "Rodyti bendrinimo rodinio nuorodą šoninėje juostoje",
|
||||||
"sharing_silver_appbar_create_shared_album": "Naujas bendrinamas albumas",
|
"sharing_silver_appbar_create_shared_album": "Naujas bendrinamas albumas",
|
||||||
@@ -2027,11 +2080,17 @@
|
|||||||
"show_metadata": "Rodyti metaduomenis",
|
"show_metadata": "Rodyti metaduomenis",
|
||||||
"show_or_hide_info": "Rodyti arba slėpti informaciją",
|
"show_or_hide_info": "Rodyti arba slėpti informaciją",
|
||||||
"show_password": "Rodyti slaptažodį",
|
"show_password": "Rodyti slaptažodį",
|
||||||
|
"show_person_options": "Rodyti asmens parinktis",
|
||||||
"show_progress_bar": "Rodyti progreso juostą",
|
"show_progress_bar": "Rodyti progreso juostą",
|
||||||
|
"show_schema": "Rodyti schemą",
|
||||||
"show_search_options": "Rodyti paieškos parinktis",
|
"show_search_options": "Rodyti paieškos parinktis",
|
||||||
|
"show_shared_links": "Rodyti bendrinamas nuorodas",
|
||||||
"show_slideshow_transition": "Rodyti perėjimą tarp skaidrių",
|
"show_slideshow_transition": "Rodyti perėjimą tarp skaidrių",
|
||||||
"show_supporter_badge": "Rėmėjo ženklelis",
|
"show_supporter_badge": "Rėmėjo ženklelis",
|
||||||
"show_supporter_badge_description": "Rodyti rėmėjo ženklelį",
|
"show_supporter_badge_description": "Rodyti rėmėjo ženklelį",
|
||||||
|
"show_text_recognition": "Rodyti teksto atpažinimą",
|
||||||
|
"show_text_search_menu": "Rodyti teksto paieškos meniu",
|
||||||
|
"shuffle": "Išmaišyti",
|
||||||
"sidebar": "Šoninė juosta",
|
"sidebar": "Šoninė juosta",
|
||||||
"sidebar_display_description": "Rodyti rodinio nuorodą šoninėje juostoje",
|
"sidebar_display_description": "Rodyti rodinio nuorodą šoninėje juostoje",
|
||||||
"sign_out": "Atsijungti",
|
"sign_out": "Atsijungti",
|
||||||
@@ -2041,6 +2100,8 @@
|
|||||||
"skip_to_folders": "Praleisti iki aplankų",
|
"skip_to_folders": "Praleisti iki aplankų",
|
||||||
"skip_to_tags": "Praleisti iki žymių",
|
"skip_to_tags": "Praleisti iki žymių",
|
||||||
"slideshow": "Skaidrių peržiūra",
|
"slideshow": "Skaidrių peržiūra",
|
||||||
|
"slideshow_repeat": "Kartoti skaidres",
|
||||||
|
"slideshow_repeat_description": "Pradėti iš pradžių, kai skaidrės baigiasi",
|
||||||
"slideshow_settings": "Skaidrių peržiūros nustatymai",
|
"slideshow_settings": "Skaidrių peržiūros nustatymai",
|
||||||
"sort_albums_by": "Rikiuoti albumus pagal...",
|
"sort_albums_by": "Rikiuoti albumus pagal...",
|
||||||
"sort_created": "Sukūrimo data",
|
"sort_created": "Sukūrimo data",
|
||||||
@@ -2062,7 +2123,7 @@
|
|||||||
"start": "Pradėti",
|
"start": "Pradėti",
|
||||||
"start_date": "Pradžios data",
|
"start_date": "Pradžios data",
|
||||||
"start_date_before_end_date": "Pradžios data turi būti ankstesnė už pabaigos datą",
|
"start_date_before_end_date": "Pradžios data turi būti ankstesnė už pabaigos datą",
|
||||||
"state": "Valstija",
|
"state": "Valstija/Apskritis",
|
||||||
"status": "Statusas",
|
"status": "Statusas",
|
||||||
"stop_casting": "Nutraukti transliavimą",
|
"stop_casting": "Nutraukti transliavimą",
|
||||||
"stop_motion_photo": "Sustabdyti Judančią Foto",
|
"stop_motion_photo": "Sustabdyti Judančią Foto",
|
||||||
@@ -2104,21 +2165,34 @@
|
|||||||
"theme": "Tema",
|
"theme": "Tema",
|
||||||
"theme_selection": "Temos pasirinkimas",
|
"theme_selection": "Temos pasirinkimas",
|
||||||
"theme_selection_description": "Automatiškai nustatykite šviesią arba tamsią temą pagal naršyklės sistemos nustatymus",
|
"theme_selection_description": "Automatiškai nustatykite šviesią arba tamsią temą pagal naršyklės sistemos nustatymus",
|
||||||
|
"theme_setting_asset_list_storage_indicator_title": "Rodyti saugyklos indikatorių elementų plytelėse",
|
||||||
"theme_setting_asset_list_tiles_per_row_title": "Elementų per eilutę ({count})",
|
"theme_setting_asset_list_tiles_per_row_title": "Elementų per eilutę ({count})",
|
||||||
|
"theme_setting_colorful_interface_subtitle": "Fono paviršiams užtepkite pagrindinę spalvą.",
|
||||||
|
"theme_setting_colorful_interface_title": "Spalvinga sąsaja",
|
||||||
|
"theme_setting_image_viewer_quality_subtitle": "Koreguoti detalių vaizdų peržiūros kokybę",
|
||||||
|
"theme_setting_image_viewer_quality_title": "Vaizdo peržiūros priemonės kokybė",
|
||||||
|
"theme_setting_primary_color_subtitle": "Pasirinkite spalvą pagrindiniams veiksmams ir akcentams.",
|
||||||
"theme_setting_primary_color_title": "Pagrindinė spalva",
|
"theme_setting_primary_color_title": "Pagrindinė spalva",
|
||||||
"theme_setting_system_primary_color_title": "Naudoti sistemos spalvą",
|
"theme_setting_system_primary_color_title": "Naudoti sistemos spalvą",
|
||||||
"theme_setting_system_theme_switch": "Automatinė (Naudoti sistemos nustatymus)",
|
"theme_setting_system_theme_switch": "Automatinė (Naudoti sistemos nustatymus)",
|
||||||
|
"theme_setting_theme_subtitle": "Pasirinkite programos temos nustatymą",
|
||||||
"theme_setting_three_stage_loading_subtitle": "Trijų etapų įkėlimas gali padidinti įkėlimo našumą, tačiau sukelia žymiai didesnę tinklo apkrovą",
|
"theme_setting_three_stage_loading_subtitle": "Trijų etapų įkėlimas gali padidinti įkėlimo našumą, tačiau sukelia žymiai didesnę tinklo apkrovą",
|
||||||
|
"theme_setting_three_stage_loading_title": "Įjungti trijų etapų įkėlimą",
|
||||||
"then": "Tada",
|
"then": "Tada",
|
||||||
"they_will_be_merged_together": "Jie bus sujungti kartu",
|
"they_will_be_merged_together": "Jie bus sujungti kartu",
|
||||||
|
"third_party_resources": "Trečios Šalies Ištekliai",
|
||||||
"time": "Laikas",
|
"time": "Laikas",
|
||||||
"time_based_memories": "Atsiminimai pagal laiką",
|
"time_based_memories": "Atsiminimai pagal laiką",
|
||||||
|
"time_based_memories_duration": "Kiekvieno vaizdo rodymo laikas sekundėmis.",
|
||||||
"timeline": "Laiko skalė",
|
"timeline": "Laiko skalė",
|
||||||
"timezone": "Laiko juosta",
|
"timezone": "Laiko juosta",
|
||||||
"to_archive": "Archyvuoti",
|
"to_archive": "Archyvuoti",
|
||||||
"to_change_password": "Pakeisti slaptažodį",
|
"to_change_password": "Pakeisti slaptažodį",
|
||||||
"to_favorite": "Įtraukti prie mėgstamiausių",
|
"to_favorite": "Įtraukti prie mėgstamiausių",
|
||||||
"to_login": "Prisijungti",
|
"to_login": "Prisijungti",
|
||||||
|
"to_multi_select": "pasirinkti kelis elementus",
|
||||||
|
"to_parent": "Persikelti į viršų",
|
||||||
|
"to_select": "į pasirinkimą",
|
||||||
"to_trash": "Išmesti",
|
"to_trash": "Išmesti",
|
||||||
"toggle_settings": "Įjungti nustatymus",
|
"toggle_settings": "Įjungti nustatymus",
|
||||||
"toggle_theme_description": "Įjungti temą",
|
"toggle_theme_description": "Įjungti temą",
|
||||||
@@ -2139,6 +2213,9 @@
|
|||||||
"trash_page_select_assets_btn": "Pasirinkti elementus",
|
"trash_page_select_assets_btn": "Pasirinkti elementus",
|
||||||
"trash_page_title": "Šiukšlių ({count})",
|
"trash_page_title": "Šiukšlių ({count})",
|
||||||
"trashed_items_will_be_permanently_deleted_after": "Į šiukšliadėžę perkelti elementai bus visam laikui ištrinti po {days, plural, one {# dienos} other {# dienų}}.",
|
"trashed_items_will_be_permanently_deleted_after": "Į šiukšliadėžę perkelti elementai bus visam laikui ištrinti po {days, plural, one {# dienos} other {# dienų}}.",
|
||||||
|
"trigger_asset_uploaded": "Elementas Išsiųstas",
|
||||||
|
"trigger_person_recognized": "Asmuo Atpažintas",
|
||||||
|
"troubleshoot": "Šalinti triktis",
|
||||||
"type": "Tipas",
|
"type": "Tipas",
|
||||||
"unable_to_change_pin_code": "Negalima pakeisti PIN kodo",
|
"unable_to_change_pin_code": "Negalima pakeisti PIN kodo",
|
||||||
"unable_to_check_version": "Nepavyko patvirtinti programos/serverio versijos",
|
"unable_to_check_version": "Nepavyko patvirtinti programos/serverio versijos",
|
||||||
|
|||||||
@@ -1235,7 +1235,6 @@
|
|||||||
"not_available": "Nav pieejams",
|
"not_available": "Nav pieejams",
|
||||||
"not_in_any_album": "Nav nevienā albumā",
|
"not_in_any_album": "Nav nevienā albumā",
|
||||||
"not_selected": "Nav izvēlēts",
|
"not_selected": "Nav izvēlēts",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "Piezīme: Lai piemērotu glabātuves nosaukumu iepriekš augšupielādētiem failiem, izpildiet",
|
|
||||||
"notes": "Piezīmes",
|
"notes": "Piezīmes",
|
||||||
"nothing_here_yet": "Šeit vēl nekā nav",
|
"nothing_here_yet": "Šeit vēl nekā nav",
|
||||||
"notification_permission_dialog_content": "Lai iespējotu paziņojumus, atveriet Iestatījumi un atlasiet Atļaut.",
|
"notification_permission_dialog_content": "Lai iespējotu paziņojumus, atveriet Iestatījumi un atlasiet Atļaut.",
|
||||||
|
|||||||
+1
-2
@@ -1468,7 +1468,6 @@
|
|||||||
"not_available": "ലഭ്യമല്ല",
|
"not_available": "ലഭ്യമല്ല",
|
||||||
"not_in_any_album": "ഒരു ആൽബത്തിലുമില്ല",
|
"not_in_any_album": "ഒരു ആൽബത്തിലുമില്ല",
|
||||||
"not_selected": "തിരഞ്ഞെടുത്തിട്ടില്ല",
|
"not_selected": "തിരഞ്ഞെടുത്തിട്ടില്ല",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "കുറിപ്പ്: മുമ്പ് അപ്ലോഡ് ചെയ്ത അസറ്റുകളിൽ സ്റ്റോറേജ് ലേബൽ പ്രയോഗിക്കാൻ, ഇത് പ്രവർത്തിപ്പിക്കുക",
|
|
||||||
"notes": "കുറിപ്പുകൾ",
|
"notes": "കുറിപ്പുകൾ",
|
||||||
"nothing_here_yet": "ഇവിടെ ഇതുവരെ ഒന്നുമില്ല",
|
"nothing_here_yet": "ഇവിടെ ഇതുവരെ ഒന്നുമില്ല",
|
||||||
"notification_permission_dialog_content": "അറിയിപ്പുകൾ പ്രവർത്തനക്ഷമമാക്കാൻ, ക്രമീകരണങ്ങളിലേക്ക് പോയി 'അനുവദിക്കുക' തിരഞ്ഞെടുക്കുക.",
|
"notification_permission_dialog_content": "അറിയിപ്പുകൾ പ്രവർത്തനക്ഷമമാക്കാൻ, ക്രമീകരണങ്ങളിലേക്ക് പോയി 'അനുവദിക്കുക' തിരഞ്ഞെടുക്കുക.",
|
||||||
@@ -1663,7 +1662,7 @@
|
|||||||
"reassigned_assets_to_new_person": "{count, plural, one {# അസറ്റ്} other {# അസറ്റുകൾ}} ഒരു പുതിയ വ്യക്തിക്ക് വീണ്ടും നൽകി",
|
"reassigned_assets_to_new_person": "{count, plural, one {# അസറ്റ്} other {# അസറ്റുകൾ}} ഒരു പുതിയ വ്യക്തിക്ക് വീണ്ടും നൽകി",
|
||||||
"reassing_hint": "തിരഞ്ഞെടുത്ത അസറ്റുകൾ നിലവിലുള്ള ഒരു വ്യക്തിക്ക് നൽകുക",
|
"reassing_hint": "തിരഞ്ഞെടുത്ത അസറ്റുകൾ നിലവിലുള്ള ഒരു വ്യക്തിക്ക് നൽകുക",
|
||||||
"recent": "സമീപകാലം",
|
"recent": "സമീപകാലം",
|
||||||
"recent-albums": "സമീപകാല ആൽബങ്ങൾ",
|
"recent_albums": "സമീപകാല ആൽബങ്ങൾ",
|
||||||
"recent_searches": "സമീപകാല തിരയലുകൾ",
|
"recent_searches": "സമീപകാല തിരയലുകൾ",
|
||||||
"recently_added": "അടുത്തിടെ ചേർത്തത്",
|
"recently_added": "അടുത്തിടെ ചേർത്തത്",
|
||||||
"recently_added_page_title": "അടുത്തിടെ ചേർത്തത്",
|
"recently_added_page_title": "അടുത്തിടെ ചേർത്തത്",
|
||||||
|
|||||||
+1
-2
@@ -1463,7 +1463,6 @@
|
|||||||
"not_available": "उपलब्ध नाही",
|
"not_available": "उपलब्ध नाही",
|
||||||
"not_in_any_album": "कोणत्याही अल्बममध्ये नाही",
|
"not_in_any_album": "कोणत्याही अल्बममध्ये नाही",
|
||||||
"not_selected": "निवडलेले नाही",
|
"not_selected": "निवडलेले नाही",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "नोट: आधी अपलोड केलेल्या अॅसेट्सवर स्टोरेज लेबल लागू करण्यासाठी हा आदेश चालवा",
|
|
||||||
"notes": "नोट्स",
|
"notes": "नोट्स",
|
||||||
"nothing_here_yet": "इथे अजून काही नाही",
|
"nothing_here_yet": "इथे अजून काही नाही",
|
||||||
"notification_permission_dialog_content": "सूचना सक्षम करण्यासाठी सेटिंग्जमध्ये जा आणि अनुमती द्या.",
|
"notification_permission_dialog_content": "सूचना सक्षम करण्यासाठी सेटिंग्जमध्ये जा आणि अनुमती द्या.",
|
||||||
@@ -1658,7 +1657,7 @@
|
|||||||
"reassigned_assets_to_new_person": "{count, plural, one {# आयटम} other {# आयटम}} नव्या व्यक्तीकडे पुन्हा नियुक्त केले",
|
"reassigned_assets_to_new_person": "{count, plural, one {# आयटम} other {# आयटम}} नव्या व्यक्तीकडे पुन्हा नियुक्त केले",
|
||||||
"reassing_hint": "निवडलेले आयटम विद्यमान व्यक्तीकडे नियुक्त करा",
|
"reassing_hint": "निवडलेले आयटम विद्यमान व्यक्तीकडे नियुक्त करा",
|
||||||
"recent": "अलीकडील",
|
"recent": "अलीकडील",
|
||||||
"recent-albums": "अलीकडील अल्बम",
|
"recent_albums": "अलीकडील अल्बम",
|
||||||
"recent_searches": "अलीकडील शोध",
|
"recent_searches": "अलीकडील शोध",
|
||||||
"recently_added": "नुकतेच जोडलेले",
|
"recently_added": "नुकतेच जोडलेले",
|
||||||
"recently_added_page_title": "नुकतेच जोडलेले",
|
"recently_added_page_title": "नुकतेच जोडलेले",
|
||||||
|
|||||||
+1
-2
@@ -1604,7 +1604,6 @@
|
|||||||
"not_available": "Ikke tilgjengelig",
|
"not_available": "Ikke tilgjengelig",
|
||||||
"not_in_any_album": "Ikke i noe album",
|
"not_in_any_album": "Ikke i noe album",
|
||||||
"not_selected": "Ikke valgt",
|
"not_selected": "Ikke valgt",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "Merk: For å bruke lagringsetiketten på tidligere opplastede filer, kjør",
|
|
||||||
"notes": "Notater",
|
"notes": "Notater",
|
||||||
"nothing_here_yet": "Ingenting her enda",
|
"nothing_here_yet": "Ingenting her enda",
|
||||||
"notification_permission_dialog_content": "For å aktivere notifikasjoner, gå til Innstillinger og velg tillat.",
|
"notification_permission_dialog_content": "For å aktivere notifikasjoner, gå til Innstillinger og velg tillat.",
|
||||||
@@ -1806,7 +1805,7 @@
|
|||||||
"reassigned_assets_to_new_person": "Flyttet {count, plural, one {# element} other {# elementer}} til en ny person",
|
"reassigned_assets_to_new_person": "Flyttet {count, plural, one {# element} other {# elementer}} til en ny person",
|
||||||
"reassing_hint": "Tilordne valgte eiendeler til en eksisterende person",
|
"reassing_hint": "Tilordne valgte eiendeler til en eksisterende person",
|
||||||
"recent": "Nylig",
|
"recent": "Nylig",
|
||||||
"recent-albums": "Nylige album",
|
"recent_albums": "Nylige album",
|
||||||
"recent_searches": "Nylige søk",
|
"recent_searches": "Nylige søk",
|
||||||
"recently_added": "Nylig lagt til",
|
"recently_added": "Nylig lagt til",
|
||||||
"recently_added_page_title": "Nylig oppført",
|
"recently_added_page_title": "Nylig oppført",
|
||||||
|
|||||||
+12
-5
@@ -311,7 +311,7 @@
|
|||||||
"search_jobs": "Taak zoeken…",
|
"search_jobs": "Taak zoeken…",
|
||||||
"send_welcome_email": "Stuur een welkomstmail",
|
"send_welcome_email": "Stuur een welkomstmail",
|
||||||
"server_external_domain_settings": "Extern domein",
|
"server_external_domain_settings": "Extern domein",
|
||||||
"server_external_domain_settings_description": "Domein voor openbaar gedeelde links, inclusief http(s)://",
|
"server_external_domain_settings_description": "Domein voor externe links",
|
||||||
"server_public_users": "Openbare gebruikerslijst",
|
"server_public_users": "Openbare gebruikerslijst",
|
||||||
"server_public_users_description": "Alle gebruikers (met naam en e-mailadres) worden weergegeven wanneer een gebruiker wordt toegevoegd aan gedeelde albums. Wanneer uitgeschakeld, is de gebruikerslijst alleen beschikbaar voor beheerders.",
|
"server_public_users_description": "Alle gebruikers (met naam en e-mailadres) worden weergegeven wanneer een gebruiker wordt toegevoegd aan gedeelde albums. Wanneer uitgeschakeld, is de gebruikerslijst alleen beschikbaar voor beheerders.",
|
||||||
"server_settings": "Serverinstellingen",
|
"server_settings": "Serverinstellingen",
|
||||||
@@ -793,7 +793,12 @@
|
|||||||
"collapse_all": "Alles inklappen",
|
"collapse_all": "Alles inklappen",
|
||||||
"color": "Kleur",
|
"color": "Kleur",
|
||||||
"color_theme": "Kleurenthema",
|
"color_theme": "Kleurenthema",
|
||||||
"command": "Opdracht",
|
"command": "Commando",
|
||||||
|
"command_palette_prompt": "Vind snel pagina's, acties of commando's",
|
||||||
|
"command_palette_to_close": "om te sluiten",
|
||||||
|
"command_palette_to_navigate": "om te navigeren",
|
||||||
|
"command_palette_to_select": "om te selecteren",
|
||||||
|
"command_palette_to_show_all": "om alles te tonen",
|
||||||
"comment_deleted": "Opmerking verwijderd",
|
"comment_deleted": "Opmerking verwijderd",
|
||||||
"comment_options": "Opties voor opmerkingen",
|
"comment_options": "Opties voor opmerkingen",
|
||||||
"comments_and_likes": "Opmerkingen & likes",
|
"comments_and_likes": "Opmerkingen & likes",
|
||||||
@@ -1168,6 +1173,7 @@
|
|||||||
"exif_bottom_sheet_people": "MENSEN",
|
"exif_bottom_sheet_people": "MENSEN",
|
||||||
"exif_bottom_sheet_person_add_person": "Naam toevoegen",
|
"exif_bottom_sheet_person_add_person": "Naam toevoegen",
|
||||||
"exit_slideshow": "Diavoorstelling sluiten",
|
"exit_slideshow": "Diavoorstelling sluiten",
|
||||||
|
"expand": "Uitklappen",
|
||||||
"expand_all": "Alles uitvouwen",
|
"expand_all": "Alles uitvouwen",
|
||||||
"experimental_settings_new_asset_list_subtitle": "Werk in uitvoering",
|
"experimental_settings_new_asset_list_subtitle": "Werk in uitvoering",
|
||||||
"experimental_settings_new_asset_list_title": "Experimenteel fotoraster inschakelen",
|
"experimental_settings_new_asset_list_title": "Experimenteel fotoraster inschakelen",
|
||||||
@@ -1613,7 +1619,6 @@
|
|||||||
"not_available": "n.v.t.",
|
"not_available": "n.v.t.",
|
||||||
"not_in_any_album": "Niet in een album",
|
"not_in_any_album": "Niet in een album",
|
||||||
"not_selected": "Niet geselecteerd",
|
"not_selected": "Niet geselecteerd",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "Opmerking: om het opslaglabel toe te passen op eerder geüploade items, voer de volgende taak uit",
|
|
||||||
"notes": "Opmerkingen",
|
"notes": "Opmerkingen",
|
||||||
"nothing_here_yet": "Hier staan nog geen items",
|
"nothing_here_yet": "Hier staan nog geen items",
|
||||||
"notification_permission_dialog_content": "Om meldingen in te schakelen, ga naar Instellingen en selecteer toestaan.",
|
"notification_permission_dialog_content": "Om meldingen in te schakelen, ga naar Instellingen en selecteer toestaan.",
|
||||||
@@ -1643,6 +1648,7 @@
|
|||||||
"online": "Online",
|
"online": "Online",
|
||||||
"only_favorites": "Alleen favorieten",
|
"only_favorites": "Alleen favorieten",
|
||||||
"open": "Openen",
|
"open": "Openen",
|
||||||
|
"open_calendar": "Open kalender",
|
||||||
"open_in_map_view": "Openen in kaartweergave",
|
"open_in_map_view": "Openen in kaartweergave",
|
||||||
"open_in_openstreetmap": "Openen in OpenStreetMap",
|
"open_in_openstreetmap": "Openen in OpenStreetMap",
|
||||||
"open_the_search_filters": "Open de zoekfilters",
|
"open_the_search_filters": "Open de zoekfilters",
|
||||||
@@ -1815,7 +1821,7 @@
|
|||||||
"reassigned_assets_to_new_person": "{count, plural, one {# item} other {# items}} opnieuw toegewezen aan een nieuw persoon",
|
"reassigned_assets_to_new_person": "{count, plural, one {# item} other {# items}} opnieuw toegewezen aan een nieuw persoon",
|
||||||
"reassing_hint": "Geselecteerde items toewijzen aan een bestaand persoon",
|
"reassing_hint": "Geselecteerde items toewijzen aan een bestaand persoon",
|
||||||
"recent": "Recent",
|
"recent": "Recent",
|
||||||
"recent-albums": "Recente albums",
|
"recent_albums": "Recente albums",
|
||||||
"recent_searches": "Recente zoekopdrachten",
|
"recent_searches": "Recente zoekopdrachten",
|
||||||
"recently_added": "Onlangs toegevoegd",
|
"recently_added": "Onlangs toegevoegd",
|
||||||
"recently_added_page_title": "Recent toegevoegd",
|
"recently_added_page_title": "Recent toegevoegd",
|
||||||
@@ -2184,6 +2190,7 @@
|
|||||||
"support": "Ondersteuning",
|
"support": "Ondersteuning",
|
||||||
"support_and_feedback": "Ondersteuning & feedback",
|
"support_and_feedback": "Ondersteuning & feedback",
|
||||||
"support_third_party_description": "Je Immich installatie is door een derde partij samengesteld. Problemen die je ervaart, kunnen door dat pakket veroorzaakt zijn. Meld problemen in eerste instantie bij hen via de onderstaande links.",
|
"support_third_party_description": "Je Immich installatie is door een derde partij samengesteld. Problemen die je ervaart, kunnen door dat pakket veroorzaakt zijn. Meld problemen in eerste instantie bij hen via de onderstaande links.",
|
||||||
|
"supporter": "Supporter",
|
||||||
"swap_merge_direction": "Wissel richting voor samenvoegen om",
|
"swap_merge_direction": "Wissel richting voor samenvoegen om",
|
||||||
"sync": "Synchroniseren",
|
"sync": "Synchroniseren",
|
||||||
"sync_albums": "Albums synchroniseren",
|
"sync_albums": "Albums synchroniseren",
|
||||||
@@ -2295,7 +2302,7 @@
|
|||||||
"unstack_action_prompt": "{count} item(s) ontstapeld",
|
"unstack_action_prompt": "{count} item(s) ontstapeld",
|
||||||
"unstacked_assets_count": "{count, plural, one {# item} other {# items}} ontstapeld",
|
"unstacked_assets_count": "{count, plural, one {# item} other {# items}} ontstapeld",
|
||||||
"unsupported_field_type": "Veldtype niet ondersteund",
|
"unsupported_field_type": "Veldtype niet ondersteund",
|
||||||
"untagged": "Ongemarkeerd",
|
"untagged": "Zonder tags",
|
||||||
"untitled_workflow": "Naamloze werkstroom",
|
"untitled_workflow": "Naamloze werkstroom",
|
||||||
"up_next": "Volgende",
|
"up_next": "Volgende",
|
||||||
"update_location_action_prompt": "Werk de locatie bij van {count} geselecteerde items met:",
|
"update_location_action_prompt": "Werk de locatie bij van {count} geselecteerde items met:",
|
||||||
|
|||||||
+2
-3
@@ -1613,7 +1613,6 @@
|
|||||||
"not_available": "Nie dotyczy",
|
"not_available": "Nie dotyczy",
|
||||||
"not_in_any_album": "Bez albumu",
|
"not_in_any_album": "Bez albumu",
|
||||||
"not_selected": "Nie wybrano",
|
"not_selected": "Nie wybrano",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "Uwaga: Aby przypisać etykietę magazynowania do wcześniej przesłanych zasobów, uruchom",
|
|
||||||
"notes": "Uwagi",
|
"notes": "Uwagi",
|
||||||
"nothing_here_yet": "Nic tu jeszcze nie ma",
|
"nothing_here_yet": "Nic tu jeszcze nie ma",
|
||||||
"notification_permission_dialog_content": "Aby włączyć powiadomienia, przejdź do Ustawień i wybierz opcję Zezwalaj.",
|
"notification_permission_dialog_content": "Aby włączyć powiadomienia, przejdź do Ustawień i wybierz opcję Zezwalaj.",
|
||||||
@@ -1815,7 +1814,7 @@
|
|||||||
"reassigned_assets_to_new_person": "Przypisano ponownie {count, plural, one {# zasób} other {# zasobów}} do nowej osoby",
|
"reassigned_assets_to_new_person": "Przypisano ponownie {count, plural, one {# zasób} other {# zasobów}} do nowej osoby",
|
||||||
"reassing_hint": "Przypisz wybrane zasoby do istniejącej osoby",
|
"reassing_hint": "Przypisz wybrane zasoby do istniejącej osoby",
|
||||||
"recent": "Ostatnie",
|
"recent": "Ostatnie",
|
||||||
"recent-albums": "Ostatnie albumy",
|
"recent_albums": "Ostatnie albumy",
|
||||||
"recent_searches": "Ostatnie wyszukiwania",
|
"recent_searches": "Ostatnie wyszukiwania",
|
||||||
"recently_added": "Ostatnio dodane",
|
"recently_added": "Ostatnio dodane",
|
||||||
"recently_added_page_title": "Ostatnio Dodane",
|
"recently_added_page_title": "Ostatnio Dodane",
|
||||||
@@ -2065,7 +2064,7 @@
|
|||||||
"shared_by_you": "Udostępnione przez ciebie",
|
"shared_by_you": "Udostępnione przez ciebie",
|
||||||
"shared_from_partner": "Zdjęcia od {partner}",
|
"shared_from_partner": "Zdjęcia od {partner}",
|
||||||
"shared_intent_upload_button_progress_text": "{current} / {total} Przesłano",
|
"shared_intent_upload_button_progress_text": "{current} / {total} Przesłano",
|
||||||
"shared_link_app_bar_title": "Udostępnione linki",
|
"shared_link_app_bar_title": "Udostępnione",
|
||||||
"shared_link_clipboard_copied_massage": "Skopiowane do schowka",
|
"shared_link_clipboard_copied_massage": "Skopiowane do schowka",
|
||||||
"shared_link_clipboard_text": "Link: {link}\nHasło: {password}",
|
"shared_link_clipboard_text": "Link: {link}\nHasło: {password}",
|
||||||
"shared_link_create_error": "Błąd podczas tworzenia linka do udostępnienia",
|
"shared_link_create_error": "Błąd podczas tworzenia linka do udostępnienia",
|
||||||
|
|||||||
+1
-2
@@ -1613,7 +1613,6 @@
|
|||||||
"not_available": "N/A",
|
"not_available": "N/A",
|
||||||
"not_in_any_album": "Não está em nenhum álbum",
|
"not_in_any_album": "Não está em nenhum álbum",
|
||||||
"not_selected": "Não selecionado",
|
"not_selected": "Não selecionado",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "Nota: Para aplicar o Rótulo de Armazenamento a ficheiros carregados anteriormente, execute o",
|
|
||||||
"notes": "Notas",
|
"notes": "Notas",
|
||||||
"nothing_here_yet": "Ainda não existe nada aqui",
|
"nothing_here_yet": "Ainda não existe nada aqui",
|
||||||
"notification_permission_dialog_content": "Para ativar as notificações, vá em Configurações e selecione permitir.",
|
"notification_permission_dialog_content": "Para ativar as notificações, vá em Configurações e selecione permitir.",
|
||||||
@@ -1815,7 +1814,7 @@
|
|||||||
"reassigned_assets_to_new_person": "Reatribuído {count, plural, one {# ficheiro} other {# ficheiros}} a uma nova pessoa",
|
"reassigned_assets_to_new_person": "Reatribuído {count, plural, one {# ficheiro} other {# ficheiros}} a uma nova pessoa",
|
||||||
"reassing_hint": "Atribuir ficheiros selecionados a uma pessoa existente",
|
"reassing_hint": "Atribuir ficheiros selecionados a uma pessoa existente",
|
||||||
"recent": "Recentes",
|
"recent": "Recentes",
|
||||||
"recent-albums": "Álbuns recentes",
|
"recent_albums": "Álbuns recentes",
|
||||||
"recent_searches": "Pesquisas recentes",
|
"recent_searches": "Pesquisas recentes",
|
||||||
"recently_added": "Adicionados Recentemente",
|
"recently_added": "Adicionados Recentemente",
|
||||||
"recently_added_page_title": "Adicionado recentemente",
|
"recently_added_page_title": "Adicionado recentemente",
|
||||||
|
|||||||
+1
-2
@@ -1613,7 +1613,6 @@
|
|||||||
"not_available": "N/A",
|
"not_available": "N/A",
|
||||||
"not_in_any_album": "Fora de álbum",
|
"not_in_any_album": "Fora de álbum",
|
||||||
"not_selected": "Não selecionado",
|
"not_selected": "Não selecionado",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "Nota: Para aplicar o rótulo de armazenamento a arquivos enviados anteriormente, execute o",
|
|
||||||
"notes": "Notas",
|
"notes": "Notas",
|
||||||
"nothing_here_yet": "Ainda não existe nada aqui",
|
"nothing_here_yet": "Ainda não existe nada aqui",
|
||||||
"notification_permission_dialog_content": "Para ativar as notificações, vá em Configurações e selecione permitir.",
|
"notification_permission_dialog_content": "Para ativar as notificações, vá em Configurações e selecione permitir.",
|
||||||
@@ -1815,7 +1814,7 @@
|
|||||||
"reassigned_assets_to_new_person": "{count, plural, one {# arquivo reatribuído} other {# arquivos reatribuídos}} a uma nova pessoa",
|
"reassigned_assets_to_new_person": "{count, plural, one {# arquivo reatribuído} other {# arquivos reatribuídos}} a uma nova pessoa",
|
||||||
"reassing_hint": "Atribuir arquivos selecionados a uma pessoa existente",
|
"reassing_hint": "Atribuir arquivos selecionados a uma pessoa existente",
|
||||||
"recent": "Recente",
|
"recent": "Recente",
|
||||||
"recent-albums": "Álbuns recentes",
|
"recent_albums": "Álbuns recentes",
|
||||||
"recent_searches": "Pesquisas recentes",
|
"recent_searches": "Pesquisas recentes",
|
||||||
"recently_added": "Adicionado recentemente",
|
"recently_added": "Adicionado recentemente",
|
||||||
"recently_added_page_title": "Adicionados recentemente",
|
"recently_added_page_title": "Adicionados recentemente",
|
||||||
|
|||||||
+23
-15
@@ -272,7 +272,7 @@
|
|||||||
"oauth_auto_register": "Auto înregistrare",
|
"oauth_auto_register": "Auto înregistrare",
|
||||||
"oauth_auto_register_description": "Înregistrează automat utilizatori noi după autentificarea cu OAuth",
|
"oauth_auto_register_description": "Înregistrează automat utilizatori noi după autentificarea cu OAuth",
|
||||||
"oauth_button_text": "Text buton",
|
"oauth_button_text": "Text buton",
|
||||||
"oauth_client_secret_description": "Necesar dacă PKCE (Proof Key for Code Exchange) nu este suportat de furnizorul OAuth",
|
"oauth_client_secret_description": "Necesar pentru un client confidențial sau dacă PKCE (Proof Key for Code Exchange) nu este suportat pentru un client public.",
|
||||||
"oauth_enable_description": "Autentifică-te cu OAuth",
|
"oauth_enable_description": "Autentifică-te cu OAuth",
|
||||||
"oauth_mobile_redirect_uri": "URI de redirecționare mobilă",
|
"oauth_mobile_redirect_uri": "URI de redirecționare mobilă",
|
||||||
"oauth_mobile_redirect_uri_override": "Înlocuire URI de redirecționare mobilă",
|
"oauth_mobile_redirect_uri_override": "Înlocuire URI de redirecționare mobilă",
|
||||||
@@ -513,7 +513,7 @@
|
|||||||
"albums_default_sort_order_description": "Ordinea inițială de sortare a pozelor la crearea de albume noi.",
|
"albums_default_sort_order_description": "Ordinea inițială de sortare a pozelor la crearea de albume noi.",
|
||||||
"albums_feature_description": "Colecții de date care pot fi partajate cu alți utilizatori.",
|
"albums_feature_description": "Colecții de date care pot fi partajate cu alți utilizatori.",
|
||||||
"albums_on_device_count": "{count} albume pe dispozitiv",
|
"albums_on_device_count": "{count} albume pe dispozitiv",
|
||||||
"albums_selected": "{număra, plural, unul {# album selectat} altele {# albumuri selectate}}",
|
"albums_selected": "{număr, plural, unul {# album selectat} altele {# albumuri selectate}}",
|
||||||
"all": "Toate",
|
"all": "Toate",
|
||||||
"all_albums": "Toate albumele",
|
"all_albums": "Toate albumele",
|
||||||
"all_people": "Toți oamenii",
|
"all_people": "Toți oamenii",
|
||||||
@@ -626,7 +626,7 @@
|
|||||||
"backup_album_selection_page_select_albums": "Selectează albume",
|
"backup_album_selection_page_select_albums": "Selectează albume",
|
||||||
"backup_album_selection_page_selection_info": "Informații selecție",
|
"backup_album_selection_page_selection_info": "Informații selecție",
|
||||||
"backup_album_selection_page_total_assets": "Total resurse unice",
|
"backup_album_selection_page_total_assets": "Total resurse unice",
|
||||||
"backup_albums_sync": "Sincronizarea albumelor de backup",
|
"backup_albums_sync": "Sincronizarea albumelor de rezervă",
|
||||||
"backup_all": "Toate",
|
"backup_all": "Toate",
|
||||||
"backup_background_service_backup_failed_message": "Eșuare backup resurse. Reîncercare…",
|
"backup_background_service_backup_failed_message": "Eșuare backup resurse. Reîncercare…",
|
||||||
"backup_background_service_complete_notification": "Backup resurse finalizat",
|
"backup_background_service_complete_notification": "Backup resurse finalizat",
|
||||||
@@ -766,9 +766,9 @@
|
|||||||
"cleanup_found_assets": "Am găsit {count} materiale in copia de rezerva",
|
"cleanup_found_assets": "Am găsit {count} materiale in copia de rezerva",
|
||||||
"cleanup_found_assets_with_size": "{count} obiecte găsite ({size})",
|
"cleanup_found_assets_with_size": "{count} obiecte găsite ({size})",
|
||||||
"cleanup_icloud_shared_albums_excluded": "Albumele partajate iCLoud sunt excluse de la cautare",
|
"cleanup_icloud_shared_albums_excluded": "Albumele partajate iCLoud sunt excluse de la cautare",
|
||||||
"cleanup_no_assets_found": "Nici un material in copia de rezerva găsit după criteriu",
|
"cleanup_no_assets_found": "Nu au fost găsite fișiere care să corespundă criteriilor de mai sus. „Eliberare spațiu” poate șterge doar fișierele care au fost deja salvate pe server.",
|
||||||
"cleanup_preview_title": "Materiale sa fie șterse ({count})",
|
"cleanup_preview_title": "Materiale sa fie șterse ({count})",
|
||||||
"cleanup_step3_description": "Scanați pentru fotografii și videoclipuri pentru care au fost făcute copii de rezervă pe server cu data limită selectată și opțiunile de filtrare",
|
"cleanup_step3_description": "Scanează fișierele salvate pe server care corespund setărilor tale de dată și păstrare.",
|
||||||
"cleanup_step4_summary": "{count} elemente create înainte de {date} sunt puse în coadă pentru a fi eliminate de pe dispozitiv",
|
"cleanup_step4_summary": "{count} elemente create înainte de {date} sunt puse în coadă pentru a fi eliminate de pe dispozitiv",
|
||||||
"cleanup_trash_hint": "Pentru a recupera complet spațiu de stocare, deschideți aplicația Galerie și goliți coșul de gunoi",
|
"cleanup_trash_hint": "Pentru a recupera complet spațiu de stocare, deschideți aplicația Galerie și goliți coșul de gunoi",
|
||||||
"clear": "Curățați",
|
"clear": "Curățați",
|
||||||
@@ -782,6 +782,8 @@
|
|||||||
"client_cert_import": "Importă",
|
"client_cert_import": "Importă",
|
||||||
"client_cert_import_success_msg": "Certificatul de client este importat",
|
"client_cert_import_success_msg": "Certificatul de client este importat",
|
||||||
"client_cert_invalid_msg": "Fisier cu certificat invalid sau parola este greșită",
|
"client_cert_invalid_msg": "Fisier cu certificat invalid sau parola este greșită",
|
||||||
|
"client_cert_password_message": "Introduceți parola pentru acest certificat",
|
||||||
|
"client_cert_password_title": "Parola certificatului",
|
||||||
"client_cert_remove_msg": "Certificatul de client este șters",
|
"client_cert_remove_msg": "Certificatul de client este șters",
|
||||||
"client_cert_subtitle": "Este suportat doar formatul PKCS12 (.p12, .pfx). Importul/ștergerea certificatului este disponibil(ă) doar înainte de autentificare",
|
"client_cert_subtitle": "Este suportat doar formatul PKCS12 (.p12, .pfx). Importul/ștergerea certificatului este disponibil(ă) doar înainte de autentificare",
|
||||||
"client_cert_title": "Certificat SSL pentru client [EXPERIMENTAL]",
|
"client_cert_title": "Certificat SSL pentru client [EXPERIMENTAL]",
|
||||||
@@ -867,8 +869,8 @@
|
|||||||
"custom_locale": "Setare Regională Personalizată",
|
"custom_locale": "Setare Regională Personalizată",
|
||||||
"custom_locale_description": "Formatați datele și numerele în funcție de limbă și regiune",
|
"custom_locale_description": "Formatați datele și numerele în funcție de limbă și regiune",
|
||||||
"custom_url": "URL personalizat",
|
"custom_url": "URL personalizat",
|
||||||
"cutoff_date_description": "Eliminați fotografiile și videoclipurile mai vechi de",
|
"cutoff_date_description": "Păstrează fotografiile din ultimele…",
|
||||||
"cutoff_day": "{count, plural, o {day} mai multe {days}}",
|
"cutoff_day": "{număr, plural, o {day} mai multe {days}}",
|
||||||
"cutoff_year": "{count, plural, =0 {0 ani} one {# an} few {# ani} other {# de ani}}",
|
"cutoff_year": "{count, plural, =0 {0 ani} one {# an} few {# ani} other {# de ani}}",
|
||||||
"daily_title_text_date": "E, LLL zz",
|
"daily_title_text_date": "E, LLL zz",
|
||||||
"daily_title_text_date_year": "E, LLL zz, aaaa",
|
"daily_title_text_date_year": "E, LLL zz, aaaa",
|
||||||
@@ -995,6 +997,11 @@
|
|||||||
"editor_close_without_save_prompt": "Schimbările nu vor fi salvate",
|
"editor_close_without_save_prompt": "Schimbările nu vor fi salvate",
|
||||||
"editor_close_without_save_title": "Închideți editorul?",
|
"editor_close_without_save_title": "Închideți editorul?",
|
||||||
"editor_confirm_reset_all_changes": "Sigur vrei să resetezi toate modificările?",
|
"editor_confirm_reset_all_changes": "Sigur vrei să resetezi toate modificările?",
|
||||||
|
"editor_discard_edits_confirm": "Renunță modificările",
|
||||||
|
"editor_discard_edits_prompt": "Ai modificări nesalvate. Ești sigur că vrei să le renunți?",
|
||||||
|
"editor_discard_edits_title": "Renunți la modificări?",
|
||||||
|
"editor_edits_applied_error": "Nu s-au putut aplica modificările",
|
||||||
|
"editor_edits_applied_success": "Modificările au fost aplicate cu succes",
|
||||||
"editor_flip_horizontal": "Întoarceți orizontal",
|
"editor_flip_horizontal": "Întoarceți orizontal",
|
||||||
"editor_flip_vertical": "Întoarceți vertical",
|
"editor_flip_vertical": "Întoarceți vertical",
|
||||||
"editor_orientation": "Orientare",
|
"editor_orientation": "Orientare",
|
||||||
@@ -1196,6 +1203,8 @@
|
|||||||
"features_in_development": "Funcții în dezvoltare",
|
"features_in_development": "Funcții în dezvoltare",
|
||||||
"features_setting_description": "Gestionați funcțiile aplicației",
|
"features_setting_description": "Gestionați funcțiile aplicației",
|
||||||
"file_name_or_extension": "Numele sau extensia fișierului",
|
"file_name_or_extension": "Numele sau extensia fișierului",
|
||||||
|
"file_name_text": "Nume fișier",
|
||||||
|
"file_name_with_value": "Nume fișier: {file_name}",
|
||||||
"file_size": "Mărime fișier",
|
"file_size": "Mărime fișier",
|
||||||
"filename": "Numele fișierului",
|
"filename": "Numele fișierului",
|
||||||
"filetype": "Tipul fișierului",
|
"filetype": "Tipul fișierului",
|
||||||
@@ -1214,7 +1223,7 @@
|
|||||||
"forgot_pin_code_question": "Ai uitat codul PIN?",
|
"forgot_pin_code_question": "Ai uitat codul PIN?",
|
||||||
"forward": "Redirecționare",
|
"forward": "Redirecționare",
|
||||||
"free_up_space": "Eliberați spațiu",
|
"free_up_space": "Eliberați spațiu",
|
||||||
"free_up_space_description": "Mută fotografiile și videoclipurile salvate în coșul de gunoi al dispozitivului pentru a elibera spațiu. Copiile tale de pe server rămân în siguranță",
|
"free_up_space_description": "Mută fotografiile și videoclipurile salvate în coșul de gunoi al dispozitivului pentru a elibera spațiu. Copiile tale de pe server rămân în siguranță.",
|
||||||
"free_up_space_settings_subtitle": "Eliberați spațiul de stocare al dispozitivului",
|
"free_up_space_settings_subtitle": "Eliberați spațiul de stocare al dispozitivului",
|
||||||
"full_path": "Calea completă: {path}",
|
"full_path": "Calea completă: {path}",
|
||||||
"gcast_enabled": "Google Cast",
|
"gcast_enabled": "Google Cast",
|
||||||
@@ -1574,7 +1583,7 @@
|
|||||||
"no_albums_with_name_yet": "Se pare că nu aveți încă niciun album cu acest nume.",
|
"no_albums_with_name_yet": "Se pare că nu aveți încă niciun album cu acest nume.",
|
||||||
"no_albums_yet": "Se pare că nu aveți încă niciun album.",
|
"no_albums_yet": "Se pare că nu aveți încă niciun album.",
|
||||||
"no_archived_assets_message": "Arhivați fotografii și videoclipuri pentru a le ascunde din vizualizarea fotografii",
|
"no_archived_assets_message": "Arhivați fotografii și videoclipuri pentru a le ascunde din vizualizarea fotografii",
|
||||||
"no_assets_message": "CLICK PENTRU A ÎNCĂRCA PRIMA TA FOTOGRAFIE",
|
"no_assets_message": "Apasă pentru a încărca prima ta fotografie.",
|
||||||
"no_assets_to_show": "Nicio resursă de afișat",
|
"no_assets_to_show": "Nicio resursă de afișat",
|
||||||
"no_cast_devices_found": "Nu s-au găsit dispozitive de difuzare",
|
"no_cast_devices_found": "Nu s-au găsit dispozitive de difuzare",
|
||||||
"no_checksum_local": "Nu există checksum – nu se pot prelua resursele locale",
|
"no_checksum_local": "Nu există checksum – nu se pot prelua resursele locale",
|
||||||
@@ -1604,7 +1613,6 @@
|
|||||||
"not_available": "N/A",
|
"not_available": "N/A",
|
||||||
"not_in_any_album": "Nu există în niciun album",
|
"not_in_any_album": "Nu există în niciun album",
|
||||||
"not_selected": "Neselectat",
|
"not_selected": "Neselectat",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "Notă: Pentru a aplica eticheta de stocare la resursele încărcate anterior, rulați",
|
|
||||||
"notes": "Note",
|
"notes": "Note",
|
||||||
"nothing_here_yet": "Nimic aici încă",
|
"nothing_here_yet": "Nimic aici încă",
|
||||||
"notification_permission_dialog_content": "Pentru a activa notificările, mergi în Setări > Immich și selectează permite.",
|
"notification_permission_dialog_content": "Pentru a activa notificările, mergi în Setări > Immich și selectează permite.",
|
||||||
@@ -1806,7 +1814,7 @@
|
|||||||
"reassigned_assets_to_new_person": "Re-alocat {count, plural, one {# resursă} other {# resurse}} unei noi persoane",
|
"reassigned_assets_to_new_person": "Re-alocat {count, plural, one {# resursă} other {# resurse}} unei noi persoane",
|
||||||
"reassing_hint": "Atribuiți resursele selectate unei persoane existente",
|
"reassing_hint": "Atribuiți resursele selectate unei persoane existente",
|
||||||
"recent": "Recent",
|
"recent": "Recent",
|
||||||
"recent-albums": "Albume recente",
|
"recent_albums": "Albume recente",
|
||||||
"recent_searches": "Căutări recente",
|
"recent_searches": "Căutări recente",
|
||||||
"recently_added": "Adăugate recent",
|
"recently_added": "Adăugate recent",
|
||||||
"recently_added_page_title": "Adăugate recent",
|
"recently_added_page_title": "Adăugate recent",
|
||||||
@@ -2251,7 +2259,7 @@
|
|||||||
"trigger_asset_uploaded": "Fișier încărcat",
|
"trigger_asset_uploaded": "Fișier încărcat",
|
||||||
"trigger_asset_uploaded_description": "Declanșează cand un fișier este încarcat",
|
"trigger_asset_uploaded_description": "Declanșează cand un fișier este încarcat",
|
||||||
"trigger_description": "Un eveniment care declanșează fluxul de lucru",
|
"trigger_description": "Un eveniment care declanșează fluxul de lucru",
|
||||||
"trigger_person_recognized": "Persoana Recunoscută",
|
"trigger_person_recognized": "Persoană Recunoscută",
|
||||||
"trigger_person_recognized_description": "Declanșat atunci când este detectată o persoană",
|
"trigger_person_recognized_description": "Declanșat atunci când este detectată o persoană",
|
||||||
"trigger_type": "Tip de declanșare",
|
"trigger_type": "Tip de declanșare",
|
||||||
"troubleshoot": "Depanați",
|
"troubleshoot": "Depanați",
|
||||||
@@ -2287,7 +2295,7 @@
|
|||||||
"unstacked_assets_count": "Nestivuit {count, plural, one {# resursă} other {# resurse}}",
|
"unstacked_assets_count": "Nestivuit {count, plural, one {# resursă} other {# resurse}}",
|
||||||
"unsupported_field_type": "Tip de câmp neacceptat",
|
"unsupported_field_type": "Tip de câmp neacceptat",
|
||||||
"untagged": "Neetichetat",
|
"untagged": "Neetichetat",
|
||||||
"untitled_workflow": "Flux fara titlu",
|
"untitled_workflow": "Flux de lucru fără titlu",
|
||||||
"up_next": "Mai departe",
|
"up_next": "Mai departe",
|
||||||
"update_location_action_prompt": "Actualizează locația pentru {count} resurse selectate cu:",
|
"update_location_action_prompt": "Actualizează locația pentru {count} resurse selectate cu:",
|
||||||
"updated_at": "Actualizat",
|
"updated_at": "Actualizat",
|
||||||
@@ -2297,7 +2305,7 @@
|
|||||||
"upload_details": "Detalii încărcare",
|
"upload_details": "Detalii încărcare",
|
||||||
"upload_dialog_info": "Vrei să backup resursele selectate pe server?",
|
"upload_dialog_info": "Vrei să backup resursele selectate pe server?",
|
||||||
"upload_dialog_title": "Încarcă resursă",
|
"upload_dialog_title": "Încarcă resursă",
|
||||||
"upload_error_with_count": "Eroare la încărcare pentru {count, plural, one {# fișier} other {# fișiere}}",
|
"upload_error_with_count": "Eroare la încărcare pentru {număr, plural, un {# fișier} alte {# fișiere}}",
|
||||||
"upload_errors": "Încărcare finalizată cu {count, plural, one {# eroare} other {# erori}}, reîmprospătați pagina pentru a reîncărca noile resurse.",
|
"upload_errors": "Încărcare finalizată cu {count, plural, one {# eroare} other {# erori}}, reîmprospătați pagina pentru a reîncărca noile resurse.",
|
||||||
"upload_finished": "Încărcarea s-a finalizat",
|
"upload_finished": "Încărcarea s-a finalizat",
|
||||||
"upload_progress": "Rămas {remaining, number} - Procesat {processed, number}/{total, number}",
|
"upload_progress": "Rămas {remaining, number} - Procesat {processed, number}/{total, number}",
|
||||||
@@ -2312,7 +2320,7 @@
|
|||||||
"url": "URL",
|
"url": "URL",
|
||||||
"usage": "Utilizare",
|
"usage": "Utilizare",
|
||||||
"use_biometric": "Folosește biometrice",
|
"use_biometric": "Folosește biometrice",
|
||||||
"use_current_connection": "folosește conexiunea curentă",
|
"use_current_connection": "Folosește conexiunea curentă",
|
||||||
"use_custom_date_range": "Utilizați în schimb un interval de date personalizat",
|
"use_custom_date_range": "Utilizați în schimb un interval de date personalizat",
|
||||||
"user": "Utilizator",
|
"user": "Utilizator",
|
||||||
"user_has_been_deleted": "Acest utilizator a fost șters.",
|
"user_has_been_deleted": "Acest utilizator a fost șters.",
|
||||||
|
|||||||
+11
-4
@@ -311,7 +311,7 @@
|
|||||||
"search_jobs": "Поиск задач…",
|
"search_jobs": "Поиск задач…",
|
||||||
"send_welcome_email": "Отправить приветственное письмо",
|
"send_welcome_email": "Отправить приветственное письмо",
|
||||||
"server_external_domain_settings": "Внешний домен",
|
"server_external_domain_settings": "Внешний домен",
|
||||||
"server_external_domain_settings_description": "Домен для публичных ссылок, включая http(s)://",
|
"server_external_domain_settings_description": "Домен для публичных ссылок",
|
||||||
"server_public_users": "Публичные пользователи",
|
"server_public_users": "Публичные пользователи",
|
||||||
"server_public_users_description": "Выводить список пользователей (имена и email) в общих альбомах. Когда отключено, список доступен только администраторам, пользователи смогут делиться только ссылкой.",
|
"server_public_users_description": "Выводить список пользователей (имена и email) в общих альбомах. Когда отключено, список доступен только администраторам, пользователи смогут делиться только ссылкой.",
|
||||||
"server_settings": "Настройки сервера",
|
"server_settings": "Настройки сервера",
|
||||||
@@ -794,6 +794,11 @@
|
|||||||
"color": "Цвет",
|
"color": "Цвет",
|
||||||
"color_theme": "Цветовая тема",
|
"color_theme": "Цветовая тема",
|
||||||
"command": "Команда",
|
"command": "Команда",
|
||||||
|
"command_palette_prompt": "Быстрый поиск страниц, действий или команд",
|
||||||
|
"command_palette_to_close": "закрыть",
|
||||||
|
"command_palette_to_navigate": "навигация",
|
||||||
|
"command_palette_to_select": "выбрать",
|
||||||
|
"command_palette_to_show_all": "показать все",
|
||||||
"comment_deleted": "Комментарий удалён",
|
"comment_deleted": "Комментарий удалён",
|
||||||
"comment_options": "Действия с комментарием",
|
"comment_options": "Действия с комментарием",
|
||||||
"comments_and_likes": "Комментарии и отметки \"нравится\"",
|
"comments_and_likes": "Комментарии и отметки \"нравится\"",
|
||||||
@@ -1168,6 +1173,7 @@
|
|||||||
"exif_bottom_sheet_people": "ЛЮДИ",
|
"exif_bottom_sheet_people": "ЛЮДИ",
|
||||||
"exif_bottom_sheet_person_add_person": "Добавить имя",
|
"exif_bottom_sheet_person_add_person": "Добавить имя",
|
||||||
"exit_slideshow": "Выйти из слайд-шоу",
|
"exit_slideshow": "Выйти из слайд-шоу",
|
||||||
|
"expand": "Развернуть",
|
||||||
"expand_all": "Развернуть всё",
|
"expand_all": "Развернуть всё",
|
||||||
"experimental_settings_new_asset_list_subtitle": "В разработке",
|
"experimental_settings_new_asset_list_subtitle": "В разработке",
|
||||||
"experimental_settings_new_asset_list_title": "Включить экспериментальную сетку фотографий",
|
"experimental_settings_new_asset_list_title": "Включить экспериментальную сетку фотографий",
|
||||||
@@ -1613,7 +1619,6 @@
|
|||||||
"not_available": "Нет данных",
|
"not_available": "Нет данных",
|
||||||
"not_in_any_album": "Ни в одном альбоме",
|
"not_in_any_album": "Ни в одном альбоме",
|
||||||
"not_selected": "Не выбрано",
|
"not_selected": "Не выбрано",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "Примечание: Чтобы применить метку хранилища к ранее загруженным объектам, запустите",
|
|
||||||
"notes": "Примечание",
|
"notes": "Примечание",
|
||||||
"nothing_here_yet": "Здесь пока ничего нет",
|
"nothing_here_yet": "Здесь пока ничего нет",
|
||||||
"notification_permission_dialog_content": "Чтобы включить уведомления, перейдите в «Настройки» и выберите «Разрешить».",
|
"notification_permission_dialog_content": "Чтобы включить уведомления, перейдите в «Настройки» и выберите «Разрешить».",
|
||||||
@@ -1643,6 +1648,7 @@
|
|||||||
"online": "Доступен",
|
"online": "Доступен",
|
||||||
"only_favorites": "Только избранное",
|
"only_favorites": "Только избранное",
|
||||||
"open": "Открыть",
|
"open": "Открыть",
|
||||||
|
"open_calendar": "Открыть календарь",
|
||||||
"open_in_map_view": "Открыть в режиме просмотра карты",
|
"open_in_map_view": "Открыть в режиме просмотра карты",
|
||||||
"open_in_openstreetmap": "Открыть в OpenStreetMap",
|
"open_in_openstreetmap": "Открыть в OpenStreetMap",
|
||||||
"open_the_search_filters": "Открыть фильтры поиска",
|
"open_the_search_filters": "Открыть фильтры поиска",
|
||||||
@@ -1815,7 +1821,7 @@
|
|||||||
"reassigned_assets_to_new_person": "Лица на {count, plural, one {# объекте} other {# объектах}} переназначены на нового человека",
|
"reassigned_assets_to_new_person": "Лица на {count, plural, one {# объекте} other {# объектах}} переназначены на нового человека",
|
||||||
"reassing_hint": "Назначить выбранные объекты указанному человеку",
|
"reassing_hint": "Назначить выбранные объекты указанному человеку",
|
||||||
"recent": "Недавние",
|
"recent": "Недавние",
|
||||||
"recent-albums": "Недавние альбомы",
|
"recent_albums": "Недавние альбомы",
|
||||||
"recent_searches": "Недавние поисковые запросы",
|
"recent_searches": "Недавние поисковые запросы",
|
||||||
"recently_added": "Недавно добавленные",
|
"recently_added": "Недавно добавленные",
|
||||||
"recently_added_page_title": "Недавно добавленные",
|
"recently_added_page_title": "Недавно добавленные",
|
||||||
@@ -2129,7 +2135,7 @@
|
|||||||
"show_search_options": "Показать параметры поиска",
|
"show_search_options": "Показать параметры поиска",
|
||||||
"show_shared_links": "Показать публичные ссылки",
|
"show_shared_links": "Показать публичные ссылки",
|
||||||
"show_slideshow_transition": "Плавный переход",
|
"show_slideshow_transition": "Плавный переход",
|
||||||
"show_supporter_badge": "Значок поддержки",
|
"show_supporter_badge": "Значок спонсорства",
|
||||||
"show_supporter_badge_description": "Показать значок поддержки",
|
"show_supporter_badge_description": "Показать значок поддержки",
|
||||||
"show_text_recognition": "Показать распознанный текст",
|
"show_text_recognition": "Показать распознанный текст",
|
||||||
"show_text_search_menu": "Показать меню текстового поиска",
|
"show_text_search_menu": "Показать меню текстового поиска",
|
||||||
@@ -2184,6 +2190,7 @@
|
|||||||
"support": "Поддержка",
|
"support": "Поддержка",
|
||||||
"support_and_feedback": "Поддержка и обратная связь",
|
"support_and_feedback": "Поддержка и обратная связь",
|
||||||
"support_third_party_description": "Ваша установка immich была упакована сторонним разработчиком. Проблемы, с которыми вы столкнулись, могут быть вызваны этим пакетом, поэтому, пожалуйста, в первую очередь обращайтесь к ним, используя ссылки ниже.",
|
"support_third_party_description": "Ваша установка immich была упакована сторонним разработчиком. Проблемы, с которыми вы столкнулись, могут быть вызваны этим пакетом, поэтому, пожалуйста, в первую очередь обращайтесь к ним, используя ссылки ниже.",
|
||||||
|
"supporter": "Спонсор Immich",
|
||||||
"swap_merge_direction": "Изменить направление слияния",
|
"swap_merge_direction": "Изменить направление слияния",
|
||||||
"sync": "Синхр.",
|
"sync": "Синхр.",
|
||||||
"sync_albums": "Синхронизировать альбомы",
|
"sync_albums": "Синхронизировать альбомы",
|
||||||
|
|||||||
+10
-3
@@ -311,7 +311,7 @@
|
|||||||
"search_jobs": "Vyhľadať úlohy…",
|
"search_jobs": "Vyhľadať úlohy…",
|
||||||
"send_welcome_email": "Odoslať uvítací e-mail",
|
"send_welcome_email": "Odoslať uvítací e-mail",
|
||||||
"server_external_domain_settings": "Externá doména",
|
"server_external_domain_settings": "Externá doména",
|
||||||
"server_external_domain_settings_description": "Verejná doména pre zdieľané odkazy, vrátane http(s)://",
|
"server_external_domain_settings_description": "Doména používaná pre externé odkazy",
|
||||||
"server_public_users": "Verejní používatelia",
|
"server_public_users": "Verejní používatelia",
|
||||||
"server_public_users_description": "Všetci používatelia (meno a email) sú uvedení pri pridávaní používateľa do zdieľaných albumov. Ak je táto funkcia vypnutá, zoznam používateľov bude dostupný iba správcom.",
|
"server_public_users_description": "Všetci používatelia (meno a email) sú uvedení pri pridávaní používateľa do zdieľaných albumov. Ak je táto funkcia vypnutá, zoznam používateľov bude dostupný iba správcom.",
|
||||||
"server_settings": "Server",
|
"server_settings": "Server",
|
||||||
@@ -794,6 +794,11 @@
|
|||||||
"color": "Farba",
|
"color": "Farba",
|
||||||
"color_theme": "Farba témy",
|
"color_theme": "Farba témy",
|
||||||
"command": "Príkaz",
|
"command": "Príkaz",
|
||||||
|
"command_palette_prompt": "Rýchlo vyhľadajte stránky, akcie alebo príkazy ako",
|
||||||
|
"command_palette_to_close": "zatvoriť",
|
||||||
|
"command_palette_to_navigate": "vložiť",
|
||||||
|
"command_palette_to_select": "vybrať",
|
||||||
|
"command_palette_to_show_all": "zobraziť všetko",
|
||||||
"comment_deleted": "Komentár bol odstránený",
|
"comment_deleted": "Komentár bol odstránený",
|
||||||
"comment_options": "Možnosti komentára",
|
"comment_options": "Možnosti komentára",
|
||||||
"comments_and_likes": "Komentáre a páči sa mi to",
|
"comments_and_likes": "Komentáre a páči sa mi to",
|
||||||
@@ -1168,6 +1173,7 @@
|
|||||||
"exif_bottom_sheet_people": "ĽUDIA",
|
"exif_bottom_sheet_people": "ĽUDIA",
|
||||||
"exif_bottom_sheet_person_add_person": "Pridať meno",
|
"exif_bottom_sheet_person_add_person": "Pridať meno",
|
||||||
"exit_slideshow": "Opustiť prezentáciu",
|
"exit_slideshow": "Opustiť prezentáciu",
|
||||||
|
"expand": "Rozbaliť",
|
||||||
"expand_all": "Rozbaliť všetko",
|
"expand_all": "Rozbaliť všetko",
|
||||||
"experimental_settings_new_asset_list_subtitle": "Prebiehajúca práca",
|
"experimental_settings_new_asset_list_subtitle": "Prebiehajúca práca",
|
||||||
"experimental_settings_new_asset_list_title": "Povolenie experimentálnej mriežky fotografií",
|
"experimental_settings_new_asset_list_title": "Povolenie experimentálnej mriežky fotografií",
|
||||||
@@ -1613,7 +1619,6 @@
|
|||||||
"not_available": "Nedostupné",
|
"not_available": "Nedostupné",
|
||||||
"not_in_any_album": "Nie je v žiadnom albume",
|
"not_in_any_album": "Nie je v žiadnom albume",
|
||||||
"not_selected": "Nevybrané",
|
"not_selected": "Nevybrané",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "Poznámka: Ak chcete použiť Štítok úložiska na predtým nahrané médiá, spustite príkaz",
|
|
||||||
"notes": "Poznámky",
|
"notes": "Poznámky",
|
||||||
"nothing_here_yet": "Zatiaľ tu nič nie je",
|
"nothing_here_yet": "Zatiaľ tu nič nie je",
|
||||||
"notification_permission_dialog_content": "Ak chcete povoliť upozornenia, prejdite do Nastavenia a vyberte možnosť Povoliť.",
|
"notification_permission_dialog_content": "Ak chcete povoliť upozornenia, prejdite do Nastavenia a vyberte možnosť Povoliť.",
|
||||||
@@ -1643,6 +1648,7 @@
|
|||||||
"online": "Online",
|
"online": "Online",
|
||||||
"only_favorites": "Len obľúbené",
|
"only_favorites": "Len obľúbené",
|
||||||
"open": "Otvoriť",
|
"open": "Otvoriť",
|
||||||
|
"open_calendar": "Otvoriť kalendár",
|
||||||
"open_in_map_view": "Otvoriť v mape",
|
"open_in_map_view": "Otvoriť v mape",
|
||||||
"open_in_openstreetmap": "Otvoriť v OpenStreetMap",
|
"open_in_openstreetmap": "Otvoriť v OpenStreetMap",
|
||||||
"open_the_search_filters": "Otvoriť vyhľadávacie filtre",
|
"open_the_search_filters": "Otvoriť vyhľadávacie filtre",
|
||||||
@@ -1815,7 +1821,7 @@
|
|||||||
"reassigned_assets_to_new_person": "Opätovne {count, plural, one {priradená # položka} few {priradené # položky} other {priradených # položiek}} novej osobe",
|
"reassigned_assets_to_new_person": "Opätovne {count, plural, one {priradená # položka} few {priradené # položky} other {priradených # položiek}} novej osobe",
|
||||||
"reassing_hint": "Priradí zvolenú položku k existujúcej osobe",
|
"reassing_hint": "Priradí zvolenú položku k existujúcej osobe",
|
||||||
"recent": "Nedávne",
|
"recent": "Nedávne",
|
||||||
"recent-albums": "Posledné albumy",
|
"recent_albums": "Posledné albumy",
|
||||||
"recent_searches": "Posledné vyhľadávania",
|
"recent_searches": "Posledné vyhľadávania",
|
||||||
"recently_added": "Nedávno pridané",
|
"recently_added": "Nedávno pridané",
|
||||||
"recently_added_page_title": "Nedávno pridané",
|
"recently_added_page_title": "Nedávno pridané",
|
||||||
@@ -2184,6 +2190,7 @@
|
|||||||
"support": "Podpora",
|
"support": "Podpora",
|
||||||
"support_and_feedback": "Podpora a spätná väzba",
|
"support_and_feedback": "Podpora a spätná väzba",
|
||||||
"support_third_party_description": "Vaša inštalácia Immich bola pripravená treťou stranou. Problémy, ktoré sa vyskytli, môžu byť spôsobené týmto balíčkom, preto sa na nich obráťte v prvom rade cez nasledujúce odkazy.",
|
"support_third_party_description": "Vaša inštalácia Immich bola pripravená treťou stranou. Problémy, ktoré sa vyskytli, môžu byť spôsobené týmto balíčkom, preto sa na nich obráťte v prvom rade cez nasledujúce odkazy.",
|
||||||
|
"supporter": "Podporovateľ",
|
||||||
"swap_merge_direction": "Vymeniť smer zlúčenia",
|
"swap_merge_direction": "Vymeniť smer zlúčenia",
|
||||||
"sync": "Synchronizovať",
|
"sync": "Synchronizovať",
|
||||||
"sync_albums": "Synchronizovať albumy",
|
"sync_albums": "Synchronizovať albumy",
|
||||||
|
|||||||
+10
-3
@@ -311,7 +311,7 @@
|
|||||||
"search_jobs": "Išči opravila…",
|
"search_jobs": "Išči opravila…",
|
||||||
"send_welcome_email": "Pošlji pozdravno e-pošto",
|
"send_welcome_email": "Pošlji pozdravno e-pošto",
|
||||||
"server_external_domain_settings": "Zunanja domena",
|
"server_external_domain_settings": "Zunanja domena",
|
||||||
"server_external_domain_settings_description": "Domena za javne skupne povezave, vključno s http(s)://",
|
"server_external_domain_settings_description": "Domena, uporabljena za zunanje povezave",
|
||||||
"server_public_users": "Javni uporabniki",
|
"server_public_users": "Javni uporabniki",
|
||||||
"server_public_users_description": "Vsi uporabniki (ime in e-pošta) so navedeni pri dodajanju uporabnika v albume v skupni rabi. Ko je onemogočen, bo seznam uporabnikov na voljo samo skrbniškim uporabnikom.",
|
"server_public_users_description": "Vsi uporabniki (ime in e-pošta) so navedeni pri dodajanju uporabnika v albume v skupni rabi. Ko je onemogočen, bo seznam uporabnikov na voljo samo skrbniškim uporabnikom.",
|
||||||
"server_settings": "Nastavitve strežnika",
|
"server_settings": "Nastavitve strežnika",
|
||||||
@@ -794,6 +794,11 @@
|
|||||||
"color": "Barva",
|
"color": "Barva",
|
||||||
"color_theme": "Barva teme",
|
"color_theme": "Barva teme",
|
||||||
"command": "Ukaz",
|
"command": "Ukaz",
|
||||||
|
"command_palette_prompt": "Hitro iskanje strani, dejanj ali ukazov",
|
||||||
|
"command_palette_to_close": "zapreti",
|
||||||
|
"command_palette_to_navigate": "vstopiti",
|
||||||
|
"command_palette_to_select": "izbrati",
|
||||||
|
"command_palette_to_show_all": "prikazati vse",
|
||||||
"comment_deleted": "Komentar izbrisan",
|
"comment_deleted": "Komentar izbrisan",
|
||||||
"comment_options": "Možnosti komentiranja",
|
"comment_options": "Možnosti komentiranja",
|
||||||
"comments_and_likes": "Komentarji in všečki",
|
"comments_and_likes": "Komentarji in všečki",
|
||||||
@@ -1168,6 +1173,7 @@
|
|||||||
"exif_bottom_sheet_people": "OSEBE",
|
"exif_bottom_sheet_people": "OSEBE",
|
||||||
"exif_bottom_sheet_person_add_person": "Dodaj ime",
|
"exif_bottom_sheet_person_add_person": "Dodaj ime",
|
||||||
"exit_slideshow": "Zapustite diaprojekcijo",
|
"exit_slideshow": "Zapustite diaprojekcijo",
|
||||||
|
"expand": "Razširi",
|
||||||
"expand_all": "Razširi vse",
|
"expand_all": "Razširi vse",
|
||||||
"experimental_settings_new_asset_list_subtitle": "Delo v teku",
|
"experimental_settings_new_asset_list_subtitle": "Delo v teku",
|
||||||
"experimental_settings_new_asset_list_title": "Omogoči eksperimentalno mrežo fotografij",
|
"experimental_settings_new_asset_list_title": "Omogoči eksperimentalno mrežo fotografij",
|
||||||
@@ -1613,7 +1619,6 @@
|
|||||||
"not_available": "Ni na voljo",
|
"not_available": "Ni na voljo",
|
||||||
"not_in_any_album": "Ni v nobenem albumu",
|
"not_in_any_album": "Ni v nobenem albumu",
|
||||||
"not_selected": "Ni izbrano",
|
"not_selected": "Ni izbrano",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "Opomba: Če želite oznako za shranjevanje uporabiti za predhodno naložena sredstva, zaženite",
|
|
||||||
"notes": "Opombe",
|
"notes": "Opombe",
|
||||||
"nothing_here_yet": "Tukaj še ni ničesar",
|
"nothing_here_yet": "Tukaj še ni ničesar",
|
||||||
"notification_permission_dialog_content": "Če želite omogočiti obvestila, pojdite v Nastavitve in izberite Dovoli.",
|
"notification_permission_dialog_content": "Če želite omogočiti obvestila, pojdite v Nastavitve in izberite Dovoli.",
|
||||||
@@ -1643,6 +1648,7 @@
|
|||||||
"online": "Povezano",
|
"online": "Povezano",
|
||||||
"only_favorites": "Samo priljubljene",
|
"only_favorites": "Samo priljubljene",
|
||||||
"open": "Odpri",
|
"open": "Odpri",
|
||||||
|
"open_calendar": "Odpri koledar",
|
||||||
"open_in_map_view": "Odpri v pogledu zemljevida",
|
"open_in_map_view": "Odpri v pogledu zemljevida",
|
||||||
"open_in_openstreetmap": "Odpri v OpenStreetMap",
|
"open_in_openstreetmap": "Odpri v OpenStreetMap",
|
||||||
"open_the_search_filters": "Odpri iskalne filtre",
|
"open_the_search_filters": "Odpri iskalne filtre",
|
||||||
@@ -1815,7 +1821,7 @@
|
|||||||
"reassigned_assets_to_new_person": "Ponovno dodeljeno {count, plural, one {# sredstvo} two {# sredstvi} few {# sredstva} other {# sredstev}} za novo osebo",
|
"reassigned_assets_to_new_person": "Ponovno dodeljeno {count, plural, one {# sredstvo} two {# sredstvi} few {# sredstva} other {# sredstev}} za novo osebo",
|
||||||
"reassing_hint": "Dodeli izbrana sredstva obstoječi osebi",
|
"reassing_hint": "Dodeli izbrana sredstva obstoječi osebi",
|
||||||
"recent": "Nedavno",
|
"recent": "Nedavno",
|
||||||
"recent-albums": "Zadnji albumi",
|
"recent_albums": "Zadnji albumi",
|
||||||
"recent_searches": "Nedavna iskanja",
|
"recent_searches": "Nedavna iskanja",
|
||||||
"recently_added": "Nedavno dodano",
|
"recently_added": "Nedavno dodano",
|
||||||
"recently_added_page_title": "Nedavno dodano",
|
"recently_added_page_title": "Nedavno dodano",
|
||||||
@@ -2184,6 +2190,7 @@
|
|||||||
"support": "Podpora",
|
"support": "Podpora",
|
||||||
"support_and_feedback": "Podpora in povratne informacije",
|
"support_and_feedback": "Podpora in povratne informacije",
|
||||||
"support_third_party_description": "Vašo namestitev Immich je pakirala tretja oseba. Težave, ki jih imate, lahko povzroči ta paket, zato prosimo, da težave najprej izpostavite njim, tako da uporabite spodnje povezave.",
|
"support_third_party_description": "Vašo namestitev Immich je pakirala tretja oseba. Težave, ki jih imate, lahko povzroči ta paket, zato prosimo, da težave najprej izpostavite njim, tako da uporabite spodnje povezave.",
|
||||||
|
"supporter": "Podpornik",
|
||||||
"swap_merge_direction": "Zamenjaj smer združevanja",
|
"swap_merge_direction": "Zamenjaj smer združevanja",
|
||||||
"sync": "Sinhronizacija",
|
"sync": "Sinhronizacija",
|
||||||
"sync_albums": "Sinhronizacija albumov",
|
"sync_albums": "Sinhronizacija albumov",
|
||||||
|
|||||||
+1
-2
@@ -1280,7 +1280,6 @@
|
|||||||
"not_available": "Недоступно",
|
"not_available": "Недоступно",
|
||||||
"not_in_any_album": "Нема ни у једном албуму",
|
"not_in_any_album": "Нема ни у једном албуму",
|
||||||
"not_selected": "Није изабрано",
|
"not_selected": "Није изабрано",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "Напомена: Да бисте применили ознаку за складиштење на претходно уплоадиране датотеке, покрените",
|
|
||||||
"notes": "Напомене",
|
"notes": "Напомене",
|
||||||
"notification_permission_dialog_content": "Да би укљуцили нотификације, идите у Опције и одаберите Дозволи.",
|
"notification_permission_dialog_content": "Да би укљуцили нотификације, идите у Опције и одаберите Дозволи.",
|
||||||
"notification_permission_list_tile_content": "Дајте дозволу за омогућавање обавештења.",
|
"notification_permission_list_tile_content": "Дајте дозволу за омогућавање обавештења.",
|
||||||
@@ -1448,7 +1447,7 @@
|
|||||||
"reassigned_assets_to_new_person": "Поново додељено {count, plural, one {# датотека} other {# датотеке}} новој особи",
|
"reassigned_assets_to_new_person": "Поново додељено {count, plural, one {# датотека} other {# датотеке}} новој особи",
|
||||||
"reassing_hint": "Доделите изабрана средства постојећој особи",
|
"reassing_hint": "Доделите изабрана средства постојећој особи",
|
||||||
"recent": "Скорашњи",
|
"recent": "Скорашњи",
|
||||||
"recent-albums": "Недавни албуми",
|
"recent_albums": "Недавни албуми",
|
||||||
"recent_searches": "Скорашње претраге",
|
"recent_searches": "Скорашње претраге",
|
||||||
"recently_added": "Недавно додато",
|
"recently_added": "Недавно додато",
|
||||||
"recently_added_page_title": "Недавно Додато",
|
"recently_added_page_title": "Недавно Додато",
|
||||||
|
|||||||
+1
-2
@@ -1241,7 +1241,6 @@
|
|||||||
"no_shared_albums_message": "Napravite album da biste delili fotografije i video zapise sa ljudima u vašoj mreži",
|
"no_shared_albums_message": "Napravite album da biste delili fotografije i video zapise sa ljudima u vašoj mreži",
|
||||||
"not_in_any_album": "Nema ni u jednom albumu",
|
"not_in_any_album": "Nema ni u jednom albumu",
|
||||||
"not_selected": "Nije izabrano",
|
"not_selected": "Nije izabrano",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "Napomena: Da biste primenili oznaku za skladištenje na prethodno uploadirane datoteke, pokrenite",
|
|
||||||
"notes": "Napomene",
|
"notes": "Napomene",
|
||||||
"notification_permission_dialog_content": "Da bi ukljucili notifikacije, idite u Opcije i odaberite Dozvoli.",
|
"notification_permission_dialog_content": "Da bi ukljucili notifikacije, idite u Opcije i odaberite Dozvoli.",
|
||||||
"notification_permission_list_tile_content": "Dajte dozvolu za omogućavanje obaveštenja.",
|
"notification_permission_list_tile_content": "Dajte dozvolu za omogućavanje obaveštenja.",
|
||||||
@@ -1399,7 +1398,7 @@
|
|||||||
"reassigned_assets_to_new_person": "Ponovo dodeljeno {count, plural, one {# datoteka} other {# datoteke}} novoj osobi",
|
"reassigned_assets_to_new_person": "Ponovo dodeljeno {count, plural, one {# datoteka} other {# datoteke}} novoj osobi",
|
||||||
"reassing_hint": "Dodelite izabrana sredstva postojećoj osobi",
|
"reassing_hint": "Dodelite izabrana sredstva postojećoj osobi",
|
||||||
"recent": "Skorašnji",
|
"recent": "Skorašnji",
|
||||||
"recent-albums": "Nedavni albumi",
|
"recent_albums": "Nedavni albumi",
|
||||||
"recent_searches": "Skorašnje pretrage",
|
"recent_searches": "Skorašnje pretrage",
|
||||||
"recently_added": "Nedavno dodato",
|
"recently_added": "Nedavno dodato",
|
||||||
"recently_added_page_title": "Nedavno Dodato",
|
"recently_added_page_title": "Nedavno Dodato",
|
||||||
|
|||||||
+2
-3
@@ -443,7 +443,7 @@
|
|||||||
"version_check_enabled_description": "Aktivera versionskontroll",
|
"version_check_enabled_description": "Aktivera versionskontroll",
|
||||||
"version_check_implications": "Funktionen för versionskontroll är beroende av periodisk kommunikation med github.com",
|
"version_check_implications": "Funktionen för versionskontroll är beroende av periodisk kommunikation med github.com",
|
||||||
"version_check_settings": "Versionskontroll",
|
"version_check_settings": "Versionskontroll",
|
||||||
"version_check_settings_description": "Aktivera/inaktivera meddelandet om ny versionen",
|
"version_check_settings_description": "Aktivera/inaktivera notis om ny version",
|
||||||
"video_conversion_job": "Omkoda videor",
|
"video_conversion_job": "Omkoda videor",
|
||||||
"video_conversion_job_description": "Koda om videor för bredare kompatibilitet med webbläsare och enheter"
|
"video_conversion_job_description": "Koda om videor för bredare kompatibilitet med webbläsare och enheter"
|
||||||
},
|
},
|
||||||
@@ -1613,7 +1613,6 @@
|
|||||||
"not_available": "N/A",
|
"not_available": "N/A",
|
||||||
"not_in_any_album": "Inte i något album",
|
"not_in_any_album": "Inte i något album",
|
||||||
"not_selected": "Ej vald",
|
"not_selected": "Ej vald",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "Obs: Om du vill använda lagringsetiketten på tidigare uppladdade tillgångar kör du",
|
|
||||||
"notes": "Notera",
|
"notes": "Notera",
|
||||||
"nothing_here_yet": "Inget här ännu",
|
"nothing_here_yet": "Inget här ännu",
|
||||||
"notification_permission_dialog_content": "För att aktivera notiser, gå till Inställningar och välj tillåt.",
|
"notification_permission_dialog_content": "För att aktivera notiser, gå till Inställningar och välj tillåt.",
|
||||||
@@ -1815,7 +1814,7 @@
|
|||||||
"reassigned_assets_to_new_person": "Tilldelade om {count, plural, one {# objekt} other {# objekt}} till en ny persson",
|
"reassigned_assets_to_new_person": "Tilldelade om {count, plural, one {# objekt} other {# objekt}} till en ny persson",
|
||||||
"reassing_hint": "Tilldela valda tillgångar till en befintlig person",
|
"reassing_hint": "Tilldela valda tillgångar till en befintlig person",
|
||||||
"recent": "Nyligen",
|
"recent": "Nyligen",
|
||||||
"recent-albums": "Senaste album",
|
"recent_albums": "Senaste album",
|
||||||
"recent_searches": "Senaste sökningar",
|
"recent_searches": "Senaste sökningar",
|
||||||
"recently_added": "Nyligen tillagda",
|
"recently_added": "Nyligen tillagda",
|
||||||
"recently_added_page_title": "Nyligen tillagda",
|
"recently_added_page_title": "Nyligen tillagda",
|
||||||
|
|||||||
+3
-2
@@ -18,6 +18,7 @@
|
|||||||
"add_a_title": "தலைப்பு சேர்க்கவும்",
|
"add_a_title": "தலைப்பு சேர்க்கவும்",
|
||||||
"add_action": "செயலைச் சேர்",
|
"add_action": "செயலைச் சேர்",
|
||||||
"add_action_description": "செய்ய வேண்டிய செயலைச் சேர்க்க கிளிக் செய்யவும்",
|
"add_action_description": "செய்ய வேண்டிய செயலைச் சேர்க்க கிளிக் செய்யவும்",
|
||||||
|
"add_assets": "ஊடங்களை சேர்க்கவும்",
|
||||||
"add_birthday": "பிறந்தநாளைச் சேர்க்கவும்",
|
"add_birthday": "பிறந்தநாளைச் சேர்க்கவும்",
|
||||||
"add_endpoint": "சேவை நிரலை சேர்",
|
"add_endpoint": "சேவை நிரலை சேர்",
|
||||||
"add_exclusion_pattern": "விலக்கு வடிவத்தைச் சேர்க்கவும்",
|
"add_exclusion_pattern": "விலக்கு வடிவத்தைச் சேர்க்கவும்",
|
||||||
@@ -187,6 +188,7 @@
|
|||||||
"machine_learning_smart_search_enabled": "ஸ்மார்ட் தேடலை இயக்கு",
|
"machine_learning_smart_search_enabled": "ஸ்மார்ட் தேடலை இயக்கு",
|
||||||
"machine_learning_smart_search_enabled_description": "முடக்கப்பட்டிருந்தால், ஸ்மார்ட் தேடலுக்காக படங்கள் குறியாக்கம் செய்யப்படாது.",
|
"machine_learning_smart_search_enabled_description": "முடக்கப்பட்டிருந்தால், ஸ்மார்ட் தேடலுக்காக படங்கள் குறியாக்கம் செய்யப்படாது.",
|
||||||
"machine_learning_url_description": "இயந்திர கற்றல் சேவையகத்தின் முகவரி. ஒன்றுக்கு மேற்பட்ட முகவரி வழங்கப்பட்டால், ஒவ்வொரு சேவையகமும் ஒவ்வொன்றாக வெற்றிகரமாக பதிலளிக்கும் வரை, முதலில் இருந்து கடைசி வரை முயற்சிக்கப்படும். பதிலளிக்காத சேவையகங்கள் மீண்டும் ஆன்லைனில் வரும் வரை தற்காலிகமாகப் புறக்கணிக்கப்படும்.",
|
"machine_learning_url_description": "இயந்திர கற்றல் சேவையகத்தின் முகவரி. ஒன்றுக்கு மேற்பட்ட முகவரி வழங்கப்பட்டால், ஒவ்வொரு சேவையகமும் ஒவ்வொன்றாக வெற்றிகரமாக பதிலளிக்கும் வரை, முதலில் இருந்து கடைசி வரை முயற்சிக்கப்படும். பதிலளிக்காத சேவையகங்கள் மீண்டும் ஆன்லைனில் வரும் வரை தற்காலிகமாகப் புறக்கணிக்கப்படும்.",
|
||||||
|
"maintenance_delete_backup": "காப்புக்களை நீக்கவும்",
|
||||||
"maintenance_settings": "பராமரிப்பு",
|
"maintenance_settings": "பராமரிப்பு",
|
||||||
"maintenance_settings_description": "இம்மிச்சை பராமரிப்பு முறையில் வைக்கவும்.",
|
"maintenance_settings_description": "இம்மிச்சை பராமரிப்பு முறையில் வைக்கவும்.",
|
||||||
"maintenance_start": "பராமரிப்பு பயன்முறையைத் தொடங்கு",
|
"maintenance_start": "பராமரிப்பு பயன்முறையைத் தொடங்கு",
|
||||||
@@ -1480,7 +1482,6 @@
|
|||||||
"not_available": "இதற்கில்லை",
|
"not_available": "இதற்கில்லை",
|
||||||
"not_in_any_album": "எந்த ஆல்பத்திலும் இல்லை",
|
"not_in_any_album": "எந்த ஆல்பத்திலும் இல்லை",
|
||||||
"not_selected": "தேர்ந்தெடுக்கப்படவில்லை",
|
"not_selected": "தேர்ந்தெடுக்கப்படவில்லை",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "குறிப்பு: முன்னர் பதிவேற்றப்பட்ட சொத்துக்களுக்கு சேமிப்பக லேபிளை பயன்படுத்த, இயக்கவும்",
|
|
||||||
"notes": "குறிப்புகள்",
|
"notes": "குறிப்புகள்",
|
||||||
"nothing_here_yet": "இன்னும் இங்கே எதுவும் இல்லை",
|
"nothing_here_yet": "இன்னும் இங்கே எதுவும் இல்லை",
|
||||||
"notification_permission_dialog_content": "அறிவிப்புகளை இயக்க, அமைப்புகளுக்குச் சென்று இசைவு என்பதைத் தேர்ந்தெடுக்கவும்.",
|
"notification_permission_dialog_content": "அறிவிப்புகளை இயக்க, அமைப்புகளுக்குச் சென்று இசைவு என்பதைத் தேர்ந்தெடுக்கவும்.",
|
||||||
@@ -1676,7 +1677,7 @@
|
|||||||
"reassigned_assets_to_new_person": "புதிய நபருக்கு {count, plural, one {# சொத்து} other {# சொத்துகள்}} மீண்டும் ஒதுக்கப்பட்டது",
|
"reassigned_assets_to_new_person": "புதிய நபருக்கு {count, plural, one {# சொத்து} other {# சொத்துகள்}} மீண்டும் ஒதுக்கப்பட்டது",
|
||||||
"reassing_hint": "தேர்ந்தெடுக்கப்பட்ட சொத்துக்களை ஏற்கனவே இருக்கும் நபருக்கு ஒதுக்குங்கள்",
|
"reassing_hint": "தேர்ந்தெடுக்கப்பட்ட சொத்துக்களை ஏற்கனவே இருக்கும் நபருக்கு ஒதுக்குங்கள்",
|
||||||
"recent": "அண்மைக் கால",
|
"recent": "அண்மைக் கால",
|
||||||
"recent-albums": "அண்மைக் கால ஆல்பங்கள்",
|
"recent_albums": "அண்மைக் கால ஆல்பங்கள்",
|
||||||
"recent_searches": "அண்மைக் கால தேடல்கள்",
|
"recent_searches": "அண்மைக் கால தேடல்கள்",
|
||||||
"recently_added": "அண்மைக் காலத்தில் சேர்க்கப்பட்டது",
|
"recently_added": "அண்மைக் காலத்தில் சேர்க்கப்பட்டது",
|
||||||
"recently_added_page_title": "அண்மைக் காலத்தில் சேர்க்கப்பட்டது",
|
"recently_added_page_title": "அண்மைக் காலத்தில் சேர்க்கப்பட்டது",
|
||||||
|
|||||||
+1
-2
@@ -895,7 +895,6 @@
|
|||||||
"no_results_description": "పర్యాయపదం లేదా మరింత సాధారణ కీవర్డ్ని ప్రయత్నించండి",
|
"no_results_description": "పర్యాయపదం లేదా మరింత సాధారణ కీవర్డ్ని ప్రయత్నించండి",
|
||||||
"no_shared_albums_message": "మీ నెట్వర్క్లోని వ్యక్తులతో ఫోటోలు మరియు వీడియోలను భాగస్వామ్యం చేయడానికి ఆల్బమ్ను సృష్టించండి",
|
"no_shared_albums_message": "మీ నెట్వర్క్లోని వ్యక్తులతో ఫోటోలు మరియు వీడియోలను భాగస్వామ్యం చేయడానికి ఆల్బమ్ను సృష్టించండి",
|
||||||
"not_in_any_album": "ఏ ఆల్బమ్లోనూ లేదు",
|
"not_in_any_album": "ఏ ఆల్బమ్లోనూ లేదు",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "గమనిక: గతంలో అప్లోడ్ చేసిన ఆస్తులకు నిల్వ లేబుల్ను వర్తింపజేయడానికి,",
|
|
||||||
"notes": "గమనికలు",
|
"notes": "గమనికలు",
|
||||||
"notification_toggle_setting_description": "ఇమెయిల్ నోటిఫికేషన్లను ప్రారంభించండి",
|
"notification_toggle_setting_description": "ఇమెయిల్ నోటిఫికేషన్లను ప్రారంభించండి",
|
||||||
"notifications": "నోటిఫికేషన్లు",
|
"notifications": "నోటిఫికేషన్లు",
|
||||||
@@ -1021,7 +1020,7 @@
|
|||||||
"reassign": "తిరిగి కేటాయించు",
|
"reassign": "తిరిగి కేటాయించు",
|
||||||
"reassing_hint": "ఎంచుకున్న ఆస్తులను ఇప్పటికే ఉన్న వ్యక్తికి కేటాయించండి",
|
"reassing_hint": "ఎంచుకున్న ఆస్తులను ఇప్పటికే ఉన్న వ్యక్తికి కేటాయించండి",
|
||||||
"recent": "ఇటీవలి",
|
"recent": "ఇటీవలి",
|
||||||
"recent-albums": "ఇటీవలి ఆల్బమ్లు",
|
"recent_albums": "ఇటీవలి ఆల్బమ్లు",
|
||||||
"recent_searches": "ఇటీవలి శోధనలు",
|
"recent_searches": "ఇటీవలి శోధనలు",
|
||||||
"refresh": "రిఫ్రెష్ చేయి",
|
"refresh": "రిఫ్రెష్ చేయి",
|
||||||
"refresh_encoded_videos": "ఎన్కోడ్ చేసిన వీడియోలను రిఫ్రెష్ చేయండి",
|
"refresh_encoded_videos": "ఎన్కోడ్ చేసిన వీడియోలను రిఫ్రెష్ చేయండి",
|
||||||
|
|||||||
+78
-21
@@ -6,8 +6,8 @@
|
|||||||
"action": "ดำเนินการ",
|
"action": "ดำเนินการ",
|
||||||
"action_common_update": "อัปเดต",
|
"action_common_update": "อัปเดต",
|
||||||
"actions": "การดำเนินการ",
|
"actions": "การดำเนินการ",
|
||||||
"active": "ใช้งานอยู่",
|
"active": "กำลังทำงาน",
|
||||||
"active_count": "ใช้งานอยู่: {count}",
|
"active_count": "กำลังทำงาน: {count}",
|
||||||
"activity": "กิจกรรม",
|
"activity": "กิจกรรม",
|
||||||
"activity_changed": "กิจกรรม{enabled, select, true {เปิด} other {ปิด}}อยู่",
|
"activity_changed": "กิจกรรม{enabled, select, true {เปิด} other {ปิด}}อยู่",
|
||||||
"add": "เพิ่ม",
|
"add": "เพิ่ม",
|
||||||
@@ -16,6 +16,7 @@
|
|||||||
"add_a_name": "เพิ่มชื่อ",
|
"add_a_name": "เพิ่มชื่อ",
|
||||||
"add_a_title": "เพิ่มหัวข้อ",
|
"add_a_title": "เพิ่มหัวข้อ",
|
||||||
"add_action": "เพิ่มการดำเนินการ",
|
"add_action": "เพิ่มการดำเนินการ",
|
||||||
|
"add_assets": "เพิ่มสื่อ",
|
||||||
"add_birthday": "เพิ่มวันเกิด",
|
"add_birthday": "เพิ่มวันเกิด",
|
||||||
"add_endpoint": "เพิ่มปลายทาง",
|
"add_endpoint": "เพิ่มปลายทาง",
|
||||||
"add_exclusion_pattern": "เพิ่มข้อยกเว้น",
|
"add_exclusion_pattern": "เพิ่มข้อยกเว้น",
|
||||||
@@ -26,7 +27,7 @@
|
|||||||
"add_path": "เพิ่มพาทที่ตั้ง",
|
"add_path": "เพิ่มพาทที่ตั้ง",
|
||||||
"add_photos": "เพิ่มรูปภาพ",
|
"add_photos": "เพิ่มรูปภาพ",
|
||||||
"add_tag": "เพิ่มแท็ก",
|
"add_tag": "เพิ่มแท็ก",
|
||||||
"add_to": "เพิ่มไปยัง …",
|
"add_to": "เพิ่มไปยัง…",
|
||||||
"add_to_album": "เพิ่มไปยังอัลบั้ม",
|
"add_to_album": "เพิ่มไปยังอัลบั้ม",
|
||||||
"add_to_album_bottom_sheet_added": "เพิ่มไปยัง {album} แล้ว",
|
"add_to_album_bottom_sheet_added": "เพิ่มไปยัง {album} แล้ว",
|
||||||
"add_to_album_bottom_sheet_already_exists": "อยู่ใน {album} อยู่แล้ว",
|
"add_to_album_bottom_sheet_already_exists": "อยู่ใน {album} อยู่แล้ว",
|
||||||
@@ -53,7 +54,7 @@
|
|||||||
"backup_database_enable_description": "เปิดใช้งานสำรองฐานข้อมูล",
|
"backup_database_enable_description": "เปิดใช้งานสำรองฐานข้อมูล",
|
||||||
"backup_keep_last_amount": "จำนวนข้อมูลสำรองก่อนหน้าที่ต้องเก็บไว้",
|
"backup_keep_last_amount": "จำนวนข้อมูลสำรองก่อนหน้าที่ต้องเก็บไว้",
|
||||||
"backup_onboarding_1_description": "สำเนานอกสถานที่บนคลาวด์หรือที่ตั้งอื่น",
|
"backup_onboarding_1_description": "สำเนานอกสถานที่บนคลาวด์หรือที่ตั้งอื่น",
|
||||||
"backup_onboarding_2_description": "สำเนาที่อยู่บนเครื่องต่างกัน ซึ่งรวมถึงไฟล์หลักและไฟล์สำรองบนเครื่อง",
|
"backup_onboarding_2_description": "สำเนาที่อยู่บนอุปกรณ์ที่ต่างกัน ซึ่งรวมถึงไฟล์หลักและไฟล์สำรองบนเครื่อง",
|
||||||
"backup_onboarding_3_description": "จำนวนชุดของข้อมูลทั้งหมด รวมถึงไฟล์เดิม ซึ่งรวมถึง 1 ชุดที่ตั้งอยู่คนละถิ่น และสำเนาบนเครื่อง 2 ชุด",
|
"backup_onboarding_3_description": "จำนวนชุดของข้อมูลทั้งหมด รวมถึงไฟล์เดิม ซึ่งรวมถึง 1 ชุดที่ตั้งอยู่คนละถิ่น และสำเนาบนเครื่อง 2 ชุด",
|
||||||
"backup_onboarding_description": "แนะนำให้ใช้ <backblaze-link>การสำรองข้อมูลแบบ 3-2-1</backblaze-link>เพื่อปกป้องข้อมูล ควรเก็บสำเนาของรูปภาพ/วิดีโอที่อัปโหลดและฐานข้อมูลของ Immich เพื่อสำรองข้อมูลได้อย่างทั่วถึง",
|
"backup_onboarding_description": "แนะนำให้ใช้ <backblaze-link>การสำรองข้อมูลแบบ 3-2-1</backblaze-link>เพื่อปกป้องข้อมูล ควรเก็บสำเนาของรูปภาพ/วิดีโอที่อัปโหลดและฐานข้อมูลของ Immich เพื่อสำรองข้อมูลได้อย่างทั่วถึง",
|
||||||
"backup_onboarding_footer": "สำหรับข้อมูลเพิ่มเติมที่เกี่ยวกับการสำรองข้อมูลของ Immich โปรดดูที่ <link>documentation</link>",
|
"backup_onboarding_footer": "สำหรับข้อมูลเพิ่มเติมที่เกี่ยวกับการสำรองข้อมูลของ Immich โปรดดูที่ <link>documentation</link>",
|
||||||
@@ -64,7 +65,7 @@
|
|||||||
"cleared_jobs": "เคลียร์งานสำหรับ: {job}",
|
"cleared_jobs": "เคลียร์งานสำหรับ: {job}",
|
||||||
"config_set_by_file": "การตั้งค่าคอนฟิกกำลังถูกกำหนดโดยไฟล์คอนฟิก",
|
"config_set_by_file": "การตั้งค่าคอนฟิกกำลังถูกกำหนดโดยไฟล์คอนฟิก",
|
||||||
"confirm_delete_library": "คุณแน่ใจว่าอยากลบคลังภาพ {library} หรือไม่?",
|
"confirm_delete_library": "คุณแน่ใจว่าอยากลบคลังภาพ {library} หรือไม่?",
|
||||||
"confirm_delete_library_assets": "คุณแน่ใจว่าอยากลบคลังภาพนี้หรือไม่? สี่อทั้งหมด {count, plural, one {# สื่อ} other {all # สื่อ}} สี่อในคลังจะถูกลบออกจาก Immich โดยถาวร ไฟล์จะยังคงอยู่บนดิสก์",
|
"confirm_delete_library_assets": "คุณแน่ใจว่าต้องการลบคลังภาพนี้หรือไม่? สี่อทั้งหมด {count, plural, one {# สื่อ} other {all # สื่อ}} สี่อในคลังจะถูกลบออกจาก Immich โดยถาวร ไฟล์จะยังคงอยู่บนดิสก์",
|
||||||
"confirm_email_below": "โปรดยืนยัน โดยการพิมพ์ \"{email}\" ข้างล่าง",
|
"confirm_email_below": "โปรดยืนยัน โดยการพิมพ์ \"{email}\" ข้างล่าง",
|
||||||
"confirm_reprocess_all_faces": "คุณแน่ใจว่าคุณต้องการประมวลผลใบหน้าทั้งหมดใหม่? ชื่อคนจะถูกลบไปด้วย",
|
"confirm_reprocess_all_faces": "คุณแน่ใจว่าคุณต้องการประมวลผลใบหน้าทั้งหมดใหม่? ชื่อคนจะถูกลบไปด้วย",
|
||||||
"confirm_user_password_reset": "คุณแน่ใจว่าต้องการรีเซ็ตรหัสผ่านของ {user} หรือไม่?",
|
"confirm_user_password_reset": "คุณแน่ใจว่าต้องการรีเซ็ตรหัสผ่านของ {user} หรือไม่?",
|
||||||
@@ -131,6 +132,10 @@
|
|||||||
"logging_level_description": "เมื่อเปิดใช้งาน ใช้ระดับการบันทึกอะไร",
|
"logging_level_description": "เมื่อเปิดใช้งาน ใช้ระดับการบันทึกอะไร",
|
||||||
"logging_settings": "การบันทึก",
|
"logging_settings": "การบันทึก",
|
||||||
"machine_learning_availability_checks_description": "ตรวจจับและเลือกใช้เซิร์ฟเวอร์ machine learning โดยอัตโนมัติ",
|
"machine_learning_availability_checks_description": "ตรวจจับและเลือกใช้เซิร์ฟเวอร์ machine learning โดยอัตโนมัติ",
|
||||||
|
"machine_learning_availability_checks_interval": "ระยะเวลาตรวจสอบ",
|
||||||
|
"machine_learning_availability_checks_interval_description": "ระยะเวลาเป็นมิลลิวินาทีระหว่างการตรวจสอบความพร้อมแต่ละครั้ง",
|
||||||
|
"machine_learning_availability_checks_timeout": "คำขอหมดเวลา",
|
||||||
|
"machine_learning_availability_checks_timeout_description": "จำนวนมิลลิวินาทีที่จะนับว่าหมดเวลาสำหรับการตรวจสอบความพร้อม",
|
||||||
"machine_learning_clip_model": "โมเดล Clip",
|
"machine_learning_clip_model": "โมเดล Clip",
|
||||||
"machine_learning_clip_model_description": "ชื่อของโมเดล CLIP ที่ระบุ<link>ตรงนี้</link> โปรดทราบว่าจำเป็นต้องดำเนินงาน 'ค้นหาอัจฉริยะ' ใหม่สำหรับทุกรูปเมื่อเปลี่ยนโมเดล",
|
"machine_learning_clip_model_description": "ชื่อของโมเดล CLIP ที่ระบุ<link>ตรงนี้</link> โปรดทราบว่าจำเป็นต้องดำเนินงาน 'ค้นหาอัจฉริยะ' ใหม่สำหรับทุกรูปเมื่อเปลี่ยนโมเดล",
|
||||||
"machine_learning_duplicate_detection": "ตรวจจับการซ้ำกัน",
|
"machine_learning_duplicate_detection": "ตรวจจับการซ้ำกัน",
|
||||||
@@ -169,6 +174,8 @@
|
|||||||
"machine_learning_smart_search_enabled": "เปิดใช้งานการค้นหาอัจฉริยะ",
|
"machine_learning_smart_search_enabled": "เปิดใช้งานการค้นหาอัจฉริยะ",
|
||||||
"machine_learning_smart_search_enabled_description": "หากปิดใช้งาน ภาพจะไม่ถูกใช้สําหรับการค้นหาอัจฉริยะ",
|
"machine_learning_smart_search_enabled_description": "หากปิดใช้งาน ภาพจะไม่ถูกใช้สําหรับการค้นหาอัจฉริยะ",
|
||||||
"machine_learning_url_description": "URL ของเซิร์ฟเวอร์ machine learning กรณีมี URL มากกว่าหนึ่ง URL จะทำการทดลองส่งข้อมูลเรียงไปทีละอันตามลำดับจนกว่าจะพบ URL ที่ตอบสนอง และจะเลิกส่งข้อมูลชั่วคราวในส่วนของ URL ที่ไม่ตอบสนอง",
|
"machine_learning_url_description": "URL ของเซิร์ฟเวอร์ machine learning กรณีมี URL มากกว่าหนึ่ง URL จะทำการทดลองส่งข้อมูลเรียงไปทีละอันตามลำดับจนกว่าจะพบ URL ที่ตอบสนอง และจะเลิกส่งข้อมูลชั่วคราวในส่วนของ URL ที่ไม่ตอบสนอง",
|
||||||
|
"maintenance_delete_backup": "ลบการสำรองข้อมูล",
|
||||||
|
"maintenance_delete_backup_description": "ไฟล์นี้จะถูกลบและไม่สามารถย้อนกลับได้",
|
||||||
"manage_concurrency": "จัดการการทำงานพร้อมกัน",
|
"manage_concurrency": "จัดการการทำงานพร้อมกัน",
|
||||||
"manage_log_settings": "จัดการการตั้งค่าจดบันทึก",
|
"manage_log_settings": "จัดการการตั้งค่าจดบันทึก",
|
||||||
"map_dark_style": "แบบมืด",
|
"map_dark_style": "แบบมืด",
|
||||||
@@ -193,9 +200,14 @@
|
|||||||
"metadata_settings": "การตั้งค่า Metadata",
|
"metadata_settings": "การตั้งค่า Metadata",
|
||||||
"metadata_settings_description": "จัดการการตั้งค่า Metadata",
|
"metadata_settings_description": "จัดการการตั้งค่า Metadata",
|
||||||
"migration_job": "การโยกย้าย",
|
"migration_job": "การโยกย้าย",
|
||||||
"migration_job_description": "ย้ายภาพตัวอย่างสื่อและใบหน้าไปยังโครงสร้างโฟลเดอร์ล่าสุด",
|
"migration_job_description": "ย้ายภาพตัวอย่างสำหรับสื่อและใบหน้าไปยังโครงสร้างโฟลเดอร์ล่าสุด",
|
||||||
"nightly_tasks_cluster_new_faces_setting": "คลัสเตอร์ใบหน้าใหม่",
|
"nightly_tasks_cluster_new_faces_setting": "คลัสเตอร์ใบหน้าใหม่",
|
||||||
"nightly_tasks_generate_memories_setting": "สร้างความทรงจำ",
|
"nightly_tasks_generate_memories_setting": "สร้างความทรงจำ",
|
||||||
|
"nightly_tasks_generate_memories_setting_description": "สร้างความทรงจำใหม่จากสื่อ",
|
||||||
|
"nightly_tasks_missing_thumbnails_setting": "สร้างภาพขนาดย่อที่ขาดหายไป",
|
||||||
|
"nightly_tasks_missing_thumbnails_setting_description": "เพิ่มสื่อที่ไม่มีภาพขนาดย่อไปยังคิวเพื่อสร้างภาพขนาดย่อ",
|
||||||
|
"nightly_tasks_start_time_setting": "เวลาเริ่มต้น",
|
||||||
|
"nightly_tasks_start_time_setting_description": "เวลาที่เซิร์ฟเวอร์จะเริ่มงานประจำคืน",
|
||||||
"no_paths_added": "ไม่ได้เพิ่มพาธ",
|
"no_paths_added": "ไม่ได้เพิ่มพาธ",
|
||||||
"no_pattern_added": "ไม่ได้เพิ่มรูปแบบ",
|
"no_pattern_added": "ไม่ได้เพิ่มรูปแบบ",
|
||||||
"note_apply_storage_label_previous_assets": "หากต้องการใช้ Storage Label กับไฟล์ที่อัปโหลดก่อนหน้านี้ ให้รันคำสั่งนี้",
|
"note_apply_storage_label_previous_assets": "หากต้องการใช้ Storage Label กับไฟล์ที่อัปโหลดก่อนหน้านี้ ให้รันคำสั่งนี้",
|
||||||
@@ -327,7 +339,7 @@
|
|||||||
"transcoding_max_b_frames": "B-frames สูงสุด",
|
"transcoding_max_b_frames": "B-frames สูงสุด",
|
||||||
"transcoding_max_b_frames_description": "ค่าที่สูงขึ้นจะช่วยเพิ่มประสิทธิภาพในการบีบอัด แต่จะทำให้การเข้ารหัสช้าลง อาจไม่สามารถใช้งานร่วมกับการเร่งความเร็วฮาร์ดแวร์บนอุปกรณ์เก่าได้ ค่าที่เป็น 0 จะปิดการใช้งาน B-frame ในขณะที่ค่า -1 จะตั้งค่าค่านี้โดยอัตโนมัติ",
|
"transcoding_max_b_frames_description": "ค่าที่สูงขึ้นจะช่วยเพิ่มประสิทธิภาพในการบีบอัด แต่จะทำให้การเข้ารหัสช้าลง อาจไม่สามารถใช้งานร่วมกับการเร่งความเร็วฮาร์ดแวร์บนอุปกรณ์เก่าได้ ค่าที่เป็น 0 จะปิดการใช้งาน B-frame ในขณะที่ค่า -1 จะตั้งค่าค่านี้โดยอัตโนมัติ",
|
||||||
"transcoding_max_bitrate": "bitrate สูงสุด",
|
"transcoding_max_bitrate": "bitrate สูงสุด",
|
||||||
"transcoding_max_bitrate_description": "การตั้งค่า bitrate สูงสุดจะสามารถคาดเดาขนาดไฟล์ได้มากขึ้นโดยไม่กระทบคุณภาพ สำหรับความคมชัด 720p ค่าทั่วไปคือ 2600 kbit/s สําหรับ VP9 หรือ HEVC, 4500 kbit/s สําหรับ H.264 ปิดการตั้งค่าเมี่อตั้งค่าเป็น 0",
|
"transcoding_max_bitrate_description": "การตั้งค่า bitrate สูงสุดจะสามารถคาดเดาขนาดไฟล์ได้ง่ายขึ้นโดยกระทบคุณภาพเล็กน้อย ค่าทั่วไปสำหรับความคมชัด 720p คือ 2600 kbit/s สําหรับ VP9 หรือ HEVC, หรือ 4500 kbit/s สําหรับ H.264 ปิดการตั้งค่าเมี่อตั้งค่าเป็น 0 หากไม่ระบุหน่วยระบบจะถือว่าใช้หน่วย k (kbit/s) ดังนั้นค่า 5000, 5000k และ 5M (Mbit/s) ถือว่าเทียบเท่ากัน",
|
||||||
"transcoding_max_keyframe_interval": "ช่วงเวลาสูงสุดระหว่างกราฟฟ์เคลื่อนไหว",
|
"transcoding_max_keyframe_interval": "ช่วงเวลาสูงสุดระหว่างกราฟฟ์เคลื่อนไหว",
|
||||||
"transcoding_max_keyframe_interval_description": "ตั้งค่าระยะห่างสูงสุดระหว่างคีย์เฟรม (keyframes) ค่าที่ต่ำลงจะทำให้ประสิทธิภาพการบีบอัดแย่ลง แต่จะช่วยปรับปรุงเวลาในการค้นหาภาพ (seek times) และอาจช่วยปรับปรุงคุณภาพในฉากที่มีการเคลื่อนไหวเร็ว ค่า 0 จะตั้งค่านี้โดยอัตโนมัติ",
|
"transcoding_max_keyframe_interval_description": "ตั้งค่าระยะห่างสูงสุดระหว่างคีย์เฟรม (keyframes) ค่าที่ต่ำลงจะทำให้ประสิทธิภาพการบีบอัดแย่ลง แต่จะช่วยปรับปรุงเวลาในการค้นหาภาพ (seek times) และอาจช่วยปรับปรุงคุณภาพในฉากที่มีการเคลื่อนไหวเร็ว ค่า 0 จะตั้งค่านี้โดยอัตโนมัติ",
|
||||||
"transcoding_optimal_description": "วีดิโอมีความคมชัดสูงกว่าเป้าหมายหรืออยู่ในรูปแบบที่รับไม่ได้",
|
"transcoding_optimal_description": "วีดิโอมีความคมชัดสูงกว่าเป้าหมายหรืออยู่ในรูปแบบที่รับไม่ได้",
|
||||||
@@ -395,7 +407,7 @@
|
|||||||
"advanced_settings_proxy_headers_title": "พ็อกซี่ เฮดเดอร์",
|
"advanced_settings_proxy_headers_title": "พ็อกซี่ เฮดเดอร์",
|
||||||
"advanced_settings_self_signed_ssl_subtitle": "ข้ามการตรวจสอบใบรับรอง SSL จำเป็นสำหรับใบรับรองแบบ self-signed",
|
"advanced_settings_self_signed_ssl_subtitle": "ข้ามการตรวจสอบใบรับรอง SSL จำเป็นสำหรับใบรับรองแบบ self-signed",
|
||||||
"advanced_settings_self_signed_ssl_title": "อนุญาตใบรับรอง SSL แบบ self-signed",
|
"advanced_settings_self_signed_ssl_title": "อนุญาตใบรับรอง SSL แบบ self-signed",
|
||||||
"advanced_settings_sync_remote_deletions_subtitle": "บหรือกู้คืนไฟล์บนอุปกรณ์นี้โดยอัตโนมัติเมื่อดำเนินการดังกล่าวผ่านเว็บ",
|
"advanced_settings_sync_remote_deletions_subtitle": "ลบหรือกู้คืนไฟล์บนอุปกรณ์นี้โดยอัตโนมัติเมื่อดำเนินการดังกล่าวผ่านเว็บ",
|
||||||
"advanced_settings_sync_remote_deletions_title": "ซิงก์การลบจากระยะไกล [คุณสมบัติทดลอง]",
|
"advanced_settings_sync_remote_deletions_title": "ซิงก์การลบจากระยะไกล [คุณสมบัติทดลอง]",
|
||||||
"advanced_settings_tile_subtitle": "ตั้งค่าผู้ใช้งานขั้นสูง",
|
"advanced_settings_tile_subtitle": "ตั้งค่าผู้ใช้งานขั้นสูง",
|
||||||
"advanced_settings_troubleshooting_subtitle": "เปิดฟีเจอร์เพิ่มเติมเพื่อแก้ไขปัญหา",
|
"advanced_settings_troubleshooting_subtitle": "เปิดฟีเจอร์เพิ่มเติมเพื่อแก้ไขปัญหา",
|
||||||
@@ -403,11 +415,13 @@
|
|||||||
"age_months": "อายุ {months, plural, one {# เดือน} other {# เดือน}}",
|
"age_months": "อายุ {months, plural, one {# เดือน} other {# เดือน}}",
|
||||||
"age_year_months": "อายุ 1 ปี {months, plural, one {# เดือน} other {# เดือน}}",
|
"age_year_months": "อายุ 1 ปี {months, plural, one {# เดือน} other {# เดือน}}",
|
||||||
"age_years": "{years, plural, other {อายุ #}}",
|
"age_years": "{years, plural, other {อายุ #}}",
|
||||||
|
"album": "อัลบั้ม",
|
||||||
"album_added": "เพิ่มอัลบั้มแล้ว",
|
"album_added": "เพิ่มอัลบั้มแล้ว",
|
||||||
"album_added_notification_setting_description": "แจ้งเตือนอีเมลเมื่อคุณถูกเพิ่มไปในอัลบั้มที่แชร์กัน",
|
"album_added_notification_setting_description": "แจ้งเตือนอีเมลเมื่อคุณถูกเพิ่มไปในอัลบั้มที่แชร์กัน",
|
||||||
"album_cover_updated": "อัพเดทหน้าปกอัลบั้มแล้ว",
|
"album_cover_updated": "อัพเดทหน้าปกอัลบั้มแล้ว",
|
||||||
"album_delete_confirmation": "คุณแน่ใจที่จะลบอัลบั้ม {album} นี้ ?",
|
"album_delete_confirmation": "คุณแน่ใจที่จะลบอัลบั้ม {album} นี้ ?",
|
||||||
"album_delete_confirmation_description": "หากแชร์อัลบั้มนี้ ผู้ใช้รายอื่นจะไม่สามารถเข้าถึงได้อีก",
|
"album_delete_confirmation_description": "หากแชร์อัลบั้มนี้ ผู้ใช้รายอื่นจะไม่สามารถเข้าถึงได้อีก",
|
||||||
|
"album_deleted": "ลบอัลบั้มแล้ว",
|
||||||
"album_info_card_backup_album_excluded": "ถูกยกเว้น",
|
"album_info_card_backup_album_excluded": "ถูกยกเว้น",
|
||||||
"album_info_card_backup_album_included": "รวม",
|
"album_info_card_backup_album_included": "รวม",
|
||||||
"album_info_updated": "อัปเดทข้อมูลอัลบั้มแล้ว",
|
"album_info_updated": "อัปเดทข้อมูลอัลบั้มแล้ว",
|
||||||
@@ -417,9 +431,13 @@
|
|||||||
"album_options": "ตัวเลือกอัลบั้ม",
|
"album_options": "ตัวเลือกอัลบั้ม",
|
||||||
"album_remove_user": "ลบผู้ใช้ ?",
|
"album_remove_user": "ลบผู้ใช้ ?",
|
||||||
"album_remove_user_confirmation": "คุณต้องการที่จะลบผู้ใช้ {user} ?",
|
"album_remove_user_confirmation": "คุณต้องการที่จะลบผู้ใช้ {user} ?",
|
||||||
|
"album_search_not_found": "ไม่พบอัลบั้มที่ตรงตามการค้นหาของคุณ",
|
||||||
|
"album_selected": "เลือกอัลบั้มแล้ว",
|
||||||
"album_share_no_users": "ดูเหมือนว่าคุณได้แชร์อัลบั้มนี้กับผู้ใช้ทั้งหมดแล้ว",
|
"album_share_no_users": "ดูเหมือนว่าคุณได้แชร์อัลบั้มนี้กับผู้ใช้ทั้งหมดแล้ว",
|
||||||
|
"album_summary": "สรุปอัลบั้ม",
|
||||||
"album_updated": "อัปเดทอัลบั้มแล้ว",
|
"album_updated": "อัปเดทอัลบั้มแล้ว",
|
||||||
"album_updated_setting_description": "แจ้งเตือนอีเมลเมื่ออัลบั้มที่แชร์กันมีสื่อใหม่",
|
"album_updated_setting_description": "แจ้งเตือนอีเมลเมื่ออัลบั้มที่แชร์กันมีสื่อใหม่",
|
||||||
|
"album_upload_assets": "อัปโหลดสื่อจากคอมพิวเตอร์เพื่อเพิ่มไปยังอัลบั้ม",
|
||||||
"album_user_left": "ออกจาก {album}",
|
"album_user_left": "ออกจาก {album}",
|
||||||
"album_user_removed": "ลบผู้ใช้ {user} แล้ว",
|
"album_user_removed": "ลบผู้ใช้ {user} แล้ว",
|
||||||
"album_viewer_appbar_delete_confirm": "คุณแน่ใจว่าอยากลบอัลบั้มนี้จากบัญชีคุณหรือไม่",
|
"album_viewer_appbar_delete_confirm": "คุณแน่ใจว่าอยากลบอัลบั้มนี้จากบัญชีคุณหรือไม่",
|
||||||
@@ -436,15 +454,20 @@
|
|||||||
"albums_default_sort_order": "การจัดเรียงอัลบั้มเริ่มต้น",
|
"albums_default_sort_order": "การจัดเรียงอัลบั้มเริ่มต้น",
|
||||||
"albums_default_sort_order_description": "การจัดเรียงแอสเซ็ตเริ่มต้นเมื่อสร้างอัลบั้มใหม่",
|
"albums_default_sort_order_description": "การจัดเรียงแอสเซ็ตเริ่มต้นเมื่อสร้างอัลบั้มใหม่",
|
||||||
"albums_feature_description": "กลุ่มของแอสเซ็ตที่สามารถส่งให้ผู้ใช้อื่นได้",
|
"albums_feature_description": "กลุ่มของแอสเซ็ตที่สามารถส่งให้ผู้ใช้อื่นได้",
|
||||||
|
"albums_on_device_count": "อัลบั้มบนอุปกรณ์ ({count})",
|
||||||
|
"albums_selected": "{count, plural, one {เลือก # อัลบั้ม} other {เลือก # อัลบั้ม}}",
|
||||||
"all": "ทั้งหมด",
|
"all": "ทั้งหมด",
|
||||||
"all_albums": "อัลบั้มทั้งหมด",
|
"all_albums": "อัลบั้มทั้งหมด",
|
||||||
"all_people": "ทุกคน",
|
"all_people": "ทุกคน",
|
||||||
|
"all_photos": "รูปภาพทั้งหมด",
|
||||||
"all_videos": "วิดีโอทั้งหมด",
|
"all_videos": "วิดีโอทั้งหมด",
|
||||||
"allow_dark_mode": "อนุญาตโหมดมืด",
|
"allow_dark_mode": "อนุญาตโหมดมืด",
|
||||||
"allow_edits": "อนุญาตให้แก้ไขได้",
|
"allow_edits": "อนุญาตให้แก้ไขได้",
|
||||||
"allow_public_user_to_download": "อนุญาตให้ผู้ใช้สาธารณะดาวน์โหลดได้",
|
"allow_public_user_to_download": "อนุญาตให้ผู้ใช้สาธารณะดาวน์โหลดได้",
|
||||||
"allow_public_user_to_upload": "อนุญาตให้ผู้ใช้สาธารณะอัปโหลดได้",
|
"allow_public_user_to_upload": "อนุญาตให้ผู้ใช้สาธารณะอัปโหลดได้",
|
||||||
|
"allowed": "อนุญาต",
|
||||||
"alt_text_qr_code": "รูปภาพ QR code",
|
"alt_text_qr_code": "รูปภาพ QR code",
|
||||||
|
"always_keep": "เก็บเสมอ",
|
||||||
"always_keep_photos_hint": "\"เพิ่มพื้นที่ว่าง\" จะเก็บรูปภาพทั้งหมดบนอุปกรณ์นี้",
|
"always_keep_photos_hint": "\"เพิ่มพื้นที่ว่าง\" จะเก็บรูปภาพทั้งหมดบนอุปกรณ์นี้",
|
||||||
"always_keep_videos_hint": "\"เพิ่มพื้นที่ว่าง\" จะเก็บวิดีโอทั้งหมดบนอุปกรณ์นี้",
|
"always_keep_videos_hint": "\"เพิ่มพื้นที่ว่าง\" จะเก็บวิดีโอทั้งหมดบนอุปกรณ์นี้",
|
||||||
"anti_clockwise": "ทวนเข็มนาฬิกา",
|
"anti_clockwise": "ทวนเข็มนาฬิกา",
|
||||||
@@ -455,9 +478,13 @@
|
|||||||
"app_bar_signout_dialog_content": "คุณแน่ใจว่าอยากออกจากระบบ",
|
"app_bar_signout_dialog_content": "คุณแน่ใจว่าอยากออกจากระบบ",
|
||||||
"app_bar_signout_dialog_ok": "ใช่",
|
"app_bar_signout_dialog_ok": "ใช่",
|
||||||
"app_bar_signout_dialog_title": "ออกจากระบบ",
|
"app_bar_signout_dialog_title": "ออกจากระบบ",
|
||||||
|
"app_download_links": "ลิงก์ดาวน์โหลดแอป",
|
||||||
"app_settings": "การตั้งค่าแอป",
|
"app_settings": "การตั้งค่าแอป",
|
||||||
|
"app_stores": "ร้านค้าแอป",
|
||||||
|
"app_update_available": "มีอัปเดตแอป",
|
||||||
"appears_in": "อยู่ใน",
|
"appears_in": "อยู่ใน",
|
||||||
"archive": "เก็บถาวร",
|
"archive": "เก็บถาวร",
|
||||||
|
"archive_action_prompt": "เพิ่ม {count} รายการไปยังเก็บถาวรแล้ว",
|
||||||
"archive_or_unarchive_photo": "เก็บ/ไม่เก็บภาพถาวร",
|
"archive_or_unarchive_photo": "เก็บ/ไม่เก็บภาพถาวร",
|
||||||
"archive_page_no_archived_assets": "ไม่พบทรัพยากรในที่เก็บถาวร",
|
"archive_page_no_archived_assets": "ไม่พบทรัพยากรในที่เก็บถาวร",
|
||||||
"archive_page_title": "เก็บถาวร ({count})",
|
"archive_page_title": "เก็บถาวร ({count})",
|
||||||
@@ -471,6 +498,7 @@
|
|||||||
"asset_action_share_err_offline": "ไม่สามารถดึงข้อมูลทรัพยากรออฟไลน์ กำลังข้าม",
|
"asset_action_share_err_offline": "ไม่สามารถดึงข้อมูลทรัพยากรออฟไลน์ กำลังข้าม",
|
||||||
"asset_added_to_album": "เพิ่มไปยังอัลบั้มแล้ว",
|
"asset_added_to_album": "เพิ่มไปยังอัลบั้มแล้ว",
|
||||||
"asset_adding_to_album": "กำลังเพิ่มไปยังอัลบั้ม…",
|
"asset_adding_to_album": "กำลังเพิ่มไปยังอัลบั้ม…",
|
||||||
|
"asset_created": "สร้างสื่อแล้ว",
|
||||||
"asset_description_updated": "อัปเดตรายละเอียดสำเร็จ",
|
"asset_description_updated": "อัปเดตรายละเอียดสำเร็จ",
|
||||||
"asset_filename_is_offline": "สื่อ {filename} ออฟไลน์อยู่",
|
"asset_filename_is_offline": "สื่อ {filename} ออฟไลน์อยู่",
|
||||||
"asset_has_unassigned_faces": "สื่อไม่ได้ระบุใบหน้า",
|
"asset_has_unassigned_faces": "สื่อไม่ได้ระบุใบหน้า",
|
||||||
@@ -483,28 +511,35 @@
|
|||||||
"asset_list_layout_sub_title": "การจัดวาง",
|
"asset_list_layout_sub_title": "การจัดวาง",
|
||||||
"asset_list_settings_subtitle": "ตั้งค่าการจัดวางตารางรูปภาพ",
|
"asset_list_settings_subtitle": "ตั้งค่าการจัดวางตารางรูปภาพ",
|
||||||
"asset_list_settings_title": "ตารางรูปภาพ",
|
"asset_list_settings_title": "ตารางรูปภาพ",
|
||||||
|
"asset_not_found_on_device_android": "ไม่พบสื่อบนอุปกรณ์",
|
||||||
|
"asset_not_found_on_device_ios": "ไม่พบสื่อบนอุปกรณ์ หากคุณใช้ iCloud สื่ออาจจะเข้าถึงไม่ได้เนื่องจาก iCloud เก็บไฟล์ที่ไม่ดีไว้",
|
||||||
|
"asset_not_found_on_icloud": "ไม่พบสื่อบน iCloud สื่ออาจจะเข้าถึงไม่ได้เนื่องจาก iCloud เก็บไฟล์ที่ไม่ดีไว้",
|
||||||
"asset_offline": "สื่อออฟไลน์",
|
"asset_offline": "สื่อออฟไลน์",
|
||||||
"asset_offline_description": "ไม่พบทรัพยากรภายนอกนี้ในดิสก์อีกต่อไป โปรดติดต่อผู้ดูแลระบบ Immich ของคุณเพื่อขอความช่วยเหลือ",
|
"asset_offline_description": "ไม่พบทรัพยากรภายนอกนี้ในดิสก์อีกต่อไป โปรดติดต่อผู้ดูแลระบบ Immich ของคุณเพื่อขอความช่วยเหลือ",
|
||||||
"asset_restored_successfully": "กู้คืนสื่อสำเร็จ",
|
"asset_restored_successfully": "กู้คืนสื่อสำเร็จ",
|
||||||
"asset_skipped": "ข้ามแล้ว",
|
"asset_skipped": "ข้ามแล้ว",
|
||||||
"asset_skipped_in_trash": "ในถังขยะ",
|
"asset_skipped_in_trash": "ในถังขยะ",
|
||||||
|
"asset_trashed": "ย้ายสื่อไปยังถังขยะแล้ว",
|
||||||
|
"asset_troubleshoot": "แก้ปัญหาสื่อ",
|
||||||
"asset_uploaded": "อัปโหลดแล้ว",
|
"asset_uploaded": "อัปโหลดแล้ว",
|
||||||
"asset_uploading": "กำลังอัปโหลด…",
|
"asset_uploading": "กำลังอัปโหลด…",
|
||||||
"asset_viewer_settings_subtitle": "ตั้งค่าการแสดงแกลเลอรี",
|
"asset_viewer_settings_subtitle": "ตั้งค่าการแสดงแกลเลอรี",
|
||||||
"asset_viewer_settings_title": "ตัวดูทรัพยากร",
|
"asset_viewer_settings_title": "ตัวดูทรัพยากร",
|
||||||
"assets": "สื่อ",
|
"assets": "สื่อ",
|
||||||
"assets_added_count": "เพิ่ม {count, plural, one{# สื่อ} other {# สื่อ}} แล้ว",
|
"assets_added_count": "เพิ่มสื่อ {count, plural, one{# รายการ} other {# รายการ}}แล้ว",
|
||||||
"assets_added_to_album_count": "เพิ่ม {count, plural, one {# asset} other {# assets}} ไปยังอัลบั้ม",
|
"assets_added_to_album_count": "เพิ่ม {count, plural, one {# asset} other {# assets}} ไปยังอัลบั้ม",
|
||||||
|
"assets_added_to_albums_count": "เพิ่มสื่อ {assetTotal, plural, one {# รายการ} other {# รายการ}} ไปยังอัลบั้ม {albumTotal, plural, one {# รายการ} other {# รายการ}}แล้ว",
|
||||||
"assets_cannot_be_added_to_album_count": "ไม่สามารถเพิ่ม {count, plural, one {สื่อ} other {สื่อ}} ไปยังอัลบั้ม",
|
"assets_cannot_be_added_to_album_count": "ไม่สามารถเพิ่ม {count, plural, one {สื่อ} other {สื่อ}} ไปยังอัลบั้ม",
|
||||||
"assets_count": "{count, plural, one { สื่อ} other { สื่อ}}",
|
"assets_cannot_be_added_to_albums": "ไม่สามารถเพิ่ม{count, plural, one {สื่อ} other {สื่อ}}ไปยังอัลบั้มใด ๆ ได้",
|
||||||
|
"assets_count": "สื่อ {count, plural, one {# รายการ} other {# รายการ}}",
|
||||||
"assets_deleted_permanently": "{count} สื่อถูกลบอย่างถาวร",
|
"assets_deleted_permanently": "{count} สื่อถูกลบอย่างถาวร",
|
||||||
"assets_deleted_permanently_from_server": "ลบ {count} สื่อออกจาก Immich อย่างถาวร",
|
"assets_deleted_permanently_from_server": "ลบสื่อ {count} รายการออกจากเซิร์ฟเวอร์ Immich อย่างถาวรแล้ว",
|
||||||
"assets_downloaded_failed": "ดาวน์โหลด {count, plural, one {ไฟล์} other {ไฟล์}} ไม่สำเร็จ - {error}",
|
"assets_downloaded_failed": "ดาวน์โหลด {count, plural, one {ไฟล์} other {ไฟล์}} ไม่สำเร็จ - {error}",
|
||||||
"assets_downloaded_successfully": "ดาวน์โหลด {count, plural, one {ไฟล์} other {ไฟล์}} สำเร็จ",
|
"assets_downloaded_successfully": "ดาวน์โหลด {count, plural, one {ไฟล์} other {ไฟล์}} สำเร็จ",
|
||||||
"assets_moved_to_trash_count": "ย้าย {count, plural, one {# asset} other {# assets}} ไปยังถังขยะแล้ว",
|
"assets_moved_to_trash_count": "ย้าย {count, plural, one {# asset} other {# assets}} ไปยังถังขยะแล้ว",
|
||||||
"assets_permanently_deleted_count": "ลบ {count, plural, one {# asset} other {# assets}} ทิ้งถาวร",
|
"assets_permanently_deleted_count": "ลบ {count, plural, one {# asset} other {# assets}} ทิ้งถาวร",
|
||||||
"assets_removed_count": "{count, plural, one {# asset} other {# assets}} ถูกลบแล้ว",
|
"assets_removed_count": "{count, plural, one {# asset} other {# assets}} ถูกลบแล้ว",
|
||||||
"assets_removed_permanently_from_device": "นำ {count} สื่อออกจากอุปกรณ์อย่างถาวร",
|
"assets_removed_permanently_from_device": "ลบสื่อ {count} รายการออกจากอุปกรณ์ของคุณอย่างถาวรแล้ว",
|
||||||
"assets_restore_confirmation": "คุณแน่ใจหรือไม่ว่าต้องการกู้คืนสื่อที่ทิ้งทั้งหมด? คุณไม่สามารถย้อนกลับการดำเนินการนี้ได้! โปรดทราบว่าสื่อออฟไลน์ใดๆ ไม่สามารถกู้คืนได้ด้วยวิธีนี้",
|
"assets_restore_confirmation": "คุณแน่ใจหรือไม่ว่าต้องการกู้คืนสื่อที่ทิ้งทั้งหมด? คุณไม่สามารถย้อนกลับการดำเนินการนี้ได้! โปรดทราบว่าสื่อออฟไลน์ใดๆ ไม่สามารถกู้คืนได้ด้วยวิธีนี้",
|
||||||
"assets_restored_count": "{count, plural, one {# asset} other {# assets}} คืนค่า",
|
"assets_restored_count": "{count, plural, one {# asset} other {# assets}} คืนค่า",
|
||||||
"assets_restored_successfully": "กู้คืน {count} สื่อสำเร็จ",
|
"assets_restored_successfully": "กู้คืน {count} สื่อสำเร็จ",
|
||||||
@@ -512,14 +547,17 @@
|
|||||||
"assets_trashed_count": "{count, plural, one {# asset} other {# assets}} ถูกลบ",
|
"assets_trashed_count": "{count, plural, one {# asset} other {# assets}} ถูกลบ",
|
||||||
"assets_trashed_from_server": "ย้าย {count} สื่อจาก Immich ไปยังถังขยะ",
|
"assets_trashed_from_server": "ย้าย {count} สื่อจาก Immich ไปยังถังขยะ",
|
||||||
"assets_were_part_of_album_count": "{count, plural, one {Asset was} other {Assets were}} อยู่ในอัลบั้มอยู่แล้ว",
|
"assets_were_part_of_album_count": "{count, plural, one {Asset was} other {Assets were}} อยู่ในอัลบั้มอยู่แล้ว",
|
||||||
|
"assets_were_part_of_albums_count": "{count, plural, one {สื่อ} other {สื่อ}}เป็นส่วนหนึ่งของอัลบั้มอยู่แล้ว",
|
||||||
"authorized_devices": "อุปกรณ์ที่ได้รับอนุญาต",
|
"authorized_devices": "อุปกรณ์ที่ได้รับอนุญาต",
|
||||||
"automatic_endpoint_switching_subtitle": "เชื่อมต่อด้วย LAN ภายในวง Wi-Fi ที่ระบุไว้ และเชื่อมต่อด้วยวิธีอื่นเมื่ออยู่นอก Wi-Fi ที่ระบุไว้",
|
"automatic_endpoint_switching_subtitle": "เชื่อมต่อด้วย LAN ภายในวง Wi-Fi ที่ระบุไว้ และเชื่อมต่อด้วยวิธีอื่นเมื่ออยู่นอก Wi-Fi ที่ระบุไว้",
|
||||||
"automatic_endpoint_switching_title": "สลับ URL อัตโนมัติ",
|
"automatic_endpoint_switching_title": "สลับ URL อัตโนมัติ",
|
||||||
"autoplay_slideshow": "เล่นสไลด์โชว์",
|
"autoplay_slideshow": "เล่นสไลด์โชว์",
|
||||||
"back": "กลับ",
|
"back": "กลับ",
|
||||||
"back_close_deselect": "ย้อนกลับ, ปิด, หรือยกเลิกการเลือก",
|
"back_close_deselect": "ย้อนกลับ, ปิด, หรือยกเลิกการเลือก",
|
||||||
|
"background_backup_running_error": "การสำรองข้อมูลเบื้องหลังทำงานอยู่ ไม่สามารถเริ่มสำรองข้อมูลด้วยตนเองได้",
|
||||||
"background_location_permission": "การอนุญาตระบุตำแหน่งพื้นหลัง",
|
"background_location_permission": "การอนุญาตระบุตำแหน่งพื้นหลัง",
|
||||||
"background_location_permission_content": "เพื่อที่จะสลับการเชื่อมต่อขณะที่รันในพื้นหลัง Immich ต้องรู้ตำแหน่งที่แม่ยำตลอดเวลา เพื่อจะสามารถอ่านชื่อ Wi-Fi",
|
"background_location_permission_content": "เพื่อที่จะสลับการเชื่อมต่อขณะที่รันในพื้นหลัง Immich ต้องรู้ตำแหน่งที่แม่ยำตลอดเวลา เพื่อจะสามารถอ่านชื่อ Wi-Fi",
|
||||||
|
"background_options": "ตัวเลือกการทำงานเบื้องหลัง",
|
||||||
"backup": "สำรองข้อมูล",
|
"backup": "สำรองข้อมูล",
|
||||||
"backup_album_selection_page_albums_device": "อัลบั้มบนเครื่อง ({count})",
|
"backup_album_selection_page_albums_device": "อัลบั้มบนเครื่อง ({count})",
|
||||||
"backup_album_selection_page_albums_tap": "กดเพื่อรวม กดสองครั้งเพื่อยกเว้น",
|
"backup_album_selection_page_albums_tap": "กดเพื่อรวม กดสองครั้งเพื่อยกเว้น",
|
||||||
@@ -581,8 +619,11 @@
|
|||||||
"backup_manual_in_progress": "อัปโหลดกำลังดำเนินการอยู่ โปรดลองใหม่ในสักพัก",
|
"backup_manual_in_progress": "อัปโหลดกำลังดำเนินการอยู่ โปรดลองใหม่ในสักพัก",
|
||||||
"backup_manual_success": "สำเร็จ",
|
"backup_manual_success": "สำเร็จ",
|
||||||
"backup_manual_title": "สถานะอัพโหลด",
|
"backup_manual_title": "สถานะอัพโหลด",
|
||||||
|
"backup_options": "ตัวเลือกการสำรองข้อมูล",
|
||||||
"backup_options_page_title": "ตัวเลือกการสำรองข้อมูล",
|
"backup_options_page_title": "ตัวเลือกการสำรองข้อมูล",
|
||||||
"backup_setting_subtitle": "ตั้งค่าการอัพโหลดในฉากหน้า และพื้นหลัง",
|
"backup_setting_subtitle": "ตั้งค่าการอัพโหลดในฉากหน้า และพื้นหลัง",
|
||||||
|
"backup_settings_subtitle": "จัดการการตั้งค่าอัปโหลด",
|
||||||
|
"backup_upload_details_page_more_details": "แตะเพื่อดูข้อมูลเพิ่มเติม",
|
||||||
"backward": "กลับหลัง",
|
"backward": "กลับหลัง",
|
||||||
"biometric_auth_enabled": "การพิสูจน์อัตลักษณ์เพื่อยืนยันตัวบุคคลถูกเปิด",
|
"biometric_auth_enabled": "การพิสูจน์อัตลักษณ์เพื่อยืนยันตัวบุคคลถูกเปิด",
|
||||||
"biometric_locked_out": "การพิสูจน์อัตลักษณ์เพื่อยืนยันตัวบุคคลถูกล็อค",
|
"biometric_locked_out": "การพิสูจน์อัตลักษณ์เพื่อยืนยันตัวบุคคลถูกล็อค",
|
||||||
@@ -618,6 +659,7 @@
|
|||||||
"cancel": "ยกเลิก",
|
"cancel": "ยกเลิก",
|
||||||
"cancel_search": "ยกเลิกการค้นหา",
|
"cancel_search": "ยกเลิกการค้นหา",
|
||||||
"canceled": "ยกเลิก",
|
"canceled": "ยกเลิก",
|
||||||
|
"canceling": "กำลังยกเลิก",
|
||||||
"cannot_merge_people": "ไม่สามารถรวมกลุ่มคนได้",
|
"cannot_merge_people": "ไม่สามารถรวมกลุ่มคนได้",
|
||||||
"cannot_undo_this_action": "การกระทำนี้ไม่สามารถย้อนกลับได้!",
|
"cannot_undo_this_action": "การกระทำนี้ไม่สามารถย้อนกลับได้!",
|
||||||
"cannot_update_the_description": "ไม่สามารถอัพเดทรายละเอียดได้",
|
"cannot_update_the_description": "ไม่สามารถอัพเดทรายละเอียดได้",
|
||||||
@@ -634,18 +676,31 @@
|
|||||||
"change_password_description": "การเข้าสู่ระบบครั้งแรก จำเป็นจต้องเปลี่ยนรหัสผ่านของคุณเพื่อความปลอดภัย โปรดป้อนรหัสผ่านใหม่ด้านล่าง",
|
"change_password_description": "การเข้าสู่ระบบครั้งแรก จำเป็นจต้องเปลี่ยนรหัสผ่านของคุณเพื่อความปลอดภัย โปรดป้อนรหัสผ่านใหม่ด้านล่าง",
|
||||||
"change_password_form_confirm_password": "ยืนยันรหัสผ่าน",
|
"change_password_form_confirm_password": "ยืนยันรหัสผ่าน",
|
||||||
"change_password_form_description": "สวัสดี {name},\n\nครั้งนี้อาจจะเป็นครั้งแรกที่คุณเข้าสู่ระบบ หรือมีคำขอเพื่อที่จะเปลี่ยนรหัสผ่านของคุI กรุณาเพิ่มรหัสผ่านใหม่ข้างล่าง",
|
"change_password_form_description": "สวัสดี {name},\n\nครั้งนี้อาจจะเป็นครั้งแรกที่คุณเข้าสู่ระบบ หรือมีคำขอเพื่อที่จะเปลี่ยนรหัสผ่านของคุI กรุณาเพิ่มรหัสผ่านใหม่ข้างล่าง",
|
||||||
|
"change_password_form_log_out": "ออกจากระบบอุปกรณ์อื่นทั้งหมด",
|
||||||
|
"change_password_form_log_out_description": "แนะนำให้ออกจากระบบอุปกรณ์อื่นทั้งหมดด้วย",
|
||||||
"change_password_form_new_password": "รหัสผ่านใหม่",
|
"change_password_form_new_password": "รหัสผ่านใหม่",
|
||||||
"change_password_form_password_mismatch": "รหัสผ่านไม่ตรงกัน",
|
"change_password_form_password_mismatch": "รหัสผ่านไม่ตรงกัน",
|
||||||
"change_password_form_reenter_new_password": "กรอกรหัสผ่านใหม่",
|
"change_password_form_reenter_new_password": "กรอกรหัสผ่านใหม่",
|
||||||
"change_pin_code": "เปลี่ยนรหัสประจำตัว (PIN)",
|
"change_pin_code": "เปลี่ยนรหัสประจำตัว (PIN)",
|
||||||
"change_your_password": "เปลี่ยนรหัสผ่านของคุณ",
|
"change_your_password": "เปลี่ยนรหัสผ่านของคุณ",
|
||||||
"changed_visibility_successfully": "เปลี่ยนการมองเห็นเรียบร้อยแล้ว",
|
"changed_visibility_successfully": "เปลี่ยนการมองเห็นเรียบร้อยแล้ว",
|
||||||
|
"charging": "กำลังชาร์จ",
|
||||||
|
"charging_requirement_mobile_backup": "การสำรองข้อมูลในเบื้องหลังจะทำงานเฉพาะเมื่ออุปกรณ์กำลังชาร์จอยู่",
|
||||||
"check_corrupt_asset_backup": "ตรวจสอบสำรองสื่อที่ผิดปกติ",
|
"check_corrupt_asset_backup": "ตรวจสอบสำรองสื่อที่ผิดปกติ",
|
||||||
"check_corrupt_asset_backup_button": "ตรวจสอบ",
|
"check_corrupt_asset_backup_button": "ตรวจสอบ",
|
||||||
"check_corrupt_asset_backup_description": "ตรวจสอบเมื่อเชื่อมต่อ Wi-Fi และสื่อทั้งหมดถูกสำรองข้อมูลแล้วเท่านั้น การตรวจสอบอาจใช้เวลาหลายนาที",
|
"check_corrupt_asset_backup_description": "ตรวจสอบเมื่อเชื่อมต่อ Wi-Fi และสื่อทั้งหมดถูกสำรองข้อมูลแล้วเท่านั้น การตรวจสอบอาจใช้เวลาหลายนาที",
|
||||||
"check_logs": "ตรวจสอบบันทึก",
|
"check_logs": "ตรวจสอบบันทึก",
|
||||||
"choose_matching_people_to_merge": "เลือกคนที่ตรงกันเพื่อรวมเข้าด้วยกัน",
|
"choose_matching_people_to_merge": "เลือกคนที่ตรงกันเพื่อรวมเข้าด้วยกัน",
|
||||||
"city": "เมือง",
|
"city": "เมือง",
|
||||||
|
"cleanup_confirm_description": "Immich พบสื่อ {count} รายการ (สร้างขึ้นก่อน {date}) ที่ถูกสำรองข้อมูลบนเซิร์ฟเวอร์อย่างปลอดภัยแล้ว ลบสำเนาต้นทางจากอุปกรณ์นี้หรือไม่?",
|
||||||
|
"cleanup_confirm_prompt_title": "ลบออกจากอุปกรณ์นี้หรือไม่?",
|
||||||
|
"cleanup_deleted_assets": "ย้ายสื่อ {count} รายการไปยังถังขยะของอุปกรณ์แล้ว",
|
||||||
|
"cleanup_deleting": "กำลังย้ายไปถังขยะ...",
|
||||||
|
"cleanup_found_assets": "พบสื่อ {count} รายการที่สำรองข้อมูลแล้ว",
|
||||||
|
"cleanup_found_assets_with_size": "พบสื่อ {count} รายการที่สำรองข้อมูลแล้ว ({size})",
|
||||||
|
"cleanup_icloud_shared_albums_excluded": "อัลบั้มที่แชร์บน iCloud ไม่นับรวมในการค้นหา",
|
||||||
|
"cleanup_no_assets_found": "ไม่พบสื่อที่ตรงตามเงื่อนไขด้านบน \"เพิ่มพื้นที่ว่าง\" สามารถลบได้เฉพาะสื่อที่สำรองข้อมูลบนเซิร์ฟเวอร์เรียบร้อยแล้วเท่านั้น",
|
||||||
|
"cleanup_preview_title": "สื่อที่จะลบ ({count})",
|
||||||
"clear": "ล้าง",
|
"clear": "ล้าง",
|
||||||
"clear_all": "ล้างทั้งหมด",
|
"clear_all": "ล้างทั้งหมด",
|
||||||
"clear_all_recent_searches": "ล้างประวัติการค้นหา",
|
"clear_all_recent_searches": "ล้างประวัติการค้นหา",
|
||||||
@@ -788,7 +843,7 @@
|
|||||||
"display_original_photos_setting_description": "การตั้งค่าแสดงผลรูปภาพต้นฉบับ เมื่อเปิดรูปภาพ การตั้งค่านี้อาจจะทำให้การแสดงภาพได้ช้าลง",
|
"display_original_photos_setting_description": "การตั้งค่าแสดงผลรูปภาพต้นฉบับ เมื่อเปิดรูปภาพ การตั้งค่านี้อาจจะทำให้การแสดงภาพได้ช้าลง",
|
||||||
"do_not_show_again": "ไม่แสดงข้อความนี้อีก",
|
"do_not_show_again": "ไม่แสดงข้อความนี้อีก",
|
||||||
"documentation": "เอกสาร",
|
"documentation": "เอกสาร",
|
||||||
"done": "ดำเนินการสำเร็จ",
|
"done": "เสร็จสิ้น",
|
||||||
"download": "ดาวน์โหลด",
|
"download": "ดาวน์โหลด",
|
||||||
"download_action_prompt": "กำลังดาวน์โหลด {count} ชิ้น",
|
"download_action_prompt": "กำลังดาวน์โหลด {count} ชิ้น",
|
||||||
"download_canceled": "การดาวน์โหลดยกเลิก",
|
"download_canceled": "การดาวน์โหลดยกเลิก",
|
||||||
@@ -1009,7 +1064,7 @@
|
|||||||
"export_as_json": "ส่งออกเป็นไฟล์ JSON",
|
"export_as_json": "ส่งออกเป็นไฟล์ JSON",
|
||||||
"extension": "ส่วนต่อขยาย",
|
"extension": "ส่วนต่อขยาย",
|
||||||
"external": "ภายนอก",
|
"external": "ภายนอก",
|
||||||
"external_libraries": "ภายนอกคลังภาพ",
|
"external_libraries": "คลังภาพภายนอก",
|
||||||
"external_network": "การเชื่อมต่อภายนอก",
|
"external_network": "การเชื่อมต่อภายนอก",
|
||||||
"external_network_sheet_info": "เมื่อไม่ได้เชื่อมต่อ Wi-Fi ที่เลือกไว้ แอพจะเชื่อมต่อเซิร์ฟเวอร์ผ่าน URL ด้านล่างตามลำดับ",
|
"external_network_sheet_info": "เมื่อไม่ได้เชื่อมต่อ Wi-Fi ที่เลือกไว้ แอพจะเชื่อมต่อเซิร์ฟเวอร์ผ่าน URL ด้านล่างตามลำดับ",
|
||||||
"face_unassigned": "ไม่กำหนดมอบหมาย",
|
"face_unassigned": "ไม่กำหนดมอบหมาย",
|
||||||
@@ -1140,6 +1195,7 @@
|
|||||||
"keep": "เก็บ",
|
"keep": "เก็บ",
|
||||||
"keep_all": "เก็บทั้งหมด",
|
"keep_all": "เก็บทั้งหมด",
|
||||||
"keep_description": "เลือกสิ่งที่จะเก็บไว้บนอุปกรณ์ของคุณขณะเพิ่มพื้นที่ว่าง",
|
"keep_description": "เลือกสิ่งที่จะเก็บไว้บนอุปกรณ์ของคุณขณะเพิ่มพื้นที่ว่าง",
|
||||||
|
"keep_on_device_hint": "เลือกรายการที่จะเก็บไว้บนอุปกรณ์นี้",
|
||||||
"keep_this_delete_others": "เก็บสิ่งนี้ไว้ ลบอันอื่นออก",
|
"keep_this_delete_others": "เก็บสิ่งนี้ไว้ ลบอันอื่นออก",
|
||||||
"kept_this_deleted_others": "เก็บเนื้อหานี้และลบ {count, plural, one {# Asset} other {# Asset}}",
|
"kept_this_deleted_others": "เก็บเนื้อหานี้และลบ {count, plural, one {# Asset} other {# Asset}}",
|
||||||
"keyboard_shortcuts": "ปุ่มพิมพ์ลัด",
|
"keyboard_shortcuts": "ปุ่มพิมพ์ลัด",
|
||||||
@@ -1213,7 +1269,7 @@
|
|||||||
"login_password_changed_error": "เกิดข้อผิดพลาดขณะเปลี่ยนรหัสผ่าน",
|
"login_password_changed_error": "เกิดข้อผิดพลาดขณะเปลี่ยนรหัสผ่าน",
|
||||||
"login_password_changed_success": "เปลี่ยนรหัสผ่านสำเร็จ",
|
"login_password_changed_success": "เปลี่ยนรหัสผ่านสำเร็จ",
|
||||||
"logout_all_device_confirmation": "คุณต้องการออกจากระบบทุกอุปกรณ์ ใช่หรือไม่ ?",
|
"logout_all_device_confirmation": "คุณต้องการออกจากระบบทุกอุปกรณ์ ใช่หรือไม่ ?",
|
||||||
"logout_this_device_confirmation": "คุณต้องการออกจากระบบใช่หรือไม่ ?",
|
"logout_this_device_confirmation": "คุณต้องการออกจากระบบบนอุปกรณ์นี้หรือไม่?",
|
||||||
"longitude": "ลองจิจูด",
|
"longitude": "ลองจิจูด",
|
||||||
"look": "ดู",
|
"look": "ดู",
|
||||||
"loop_videos": "วนวิดีโอ",
|
"loop_videos": "วนวิดีโอ",
|
||||||
@@ -1315,7 +1371,6 @@
|
|||||||
"no_results_description": "ลองใช้คำพ้องหรือคำหลักที่กว้างกว่านี้",
|
"no_results_description": "ลองใช้คำพ้องหรือคำหลักที่กว้างกว่านี้",
|
||||||
"no_shared_albums_message": "สร้างอัลบั้มเพื่อแชร์รูปภาพและวิดีโอกับคนในเครือข่ายของคุณ",
|
"no_shared_albums_message": "สร้างอัลบั้มเพื่อแชร์รูปภาพและวิดีโอกับคนในเครือข่ายของคุณ",
|
||||||
"not_in_any_album": "ไม่อยู่ในอัลบั้มใด ๆ",
|
"not_in_any_album": "ไม่อยู่ในอัลบั้มใด ๆ",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "หมายเหตุ: หากต้องการใช้ป้ายกำกับพื้นที่เก็บข้อมูลกับเนื้อหาที่อัปโหลดก่อนหน้านี้ ให้เรียกใช้",
|
|
||||||
"notes": "หมายเหตุ",
|
"notes": "หมายเหตุ",
|
||||||
"notification_permission_dialog_content": "เพื่อเปิดการแจ้งเตือน เข้าตั้งค่าแล้วกดอนุญาต",
|
"notification_permission_dialog_content": "เพื่อเปิดการแจ้งเตือน เข้าตั้งค่าแล้วกดอนุญาต",
|
||||||
"notification_permission_list_tile_content": "อนุญาตการแจ้งเตือน",
|
"notification_permission_list_tile_content": "อนุญาตการแจ้งเตือน",
|
||||||
@@ -1328,6 +1383,7 @@
|
|||||||
"offline": "ออฟไลน์",
|
"offline": "ออฟไลน์",
|
||||||
"ok": "ตกลง",
|
"ok": "ตกลง",
|
||||||
"oldest_first": "เรียงเก่าสุดก่อน",
|
"oldest_first": "เรียงเก่าสุดก่อน",
|
||||||
|
"on_this_device": "บนอุปกรณ์นี้",
|
||||||
"onboarding": "การเริ่มต้นใช้งาน",
|
"onboarding": "การเริ่มต้นใช้งาน",
|
||||||
"onboarding_privacy_description": "ฟีเจอร์ (ตัวเลือก) ต่อไปนี้ต้องอาศัยบริการภายนอก และสามารถปิดใช้งานได้ตลอดเวลาในการตั้งค่าการ",
|
"onboarding_privacy_description": "ฟีเจอร์ (ตัวเลือก) ต่อไปนี้ต้องอาศัยบริการภายนอก และสามารถปิดใช้งานได้ตลอดเวลาในการตั้งค่าการ",
|
||||||
"onboarding_theme_description": "เลือกธีมสี คุณสามารถเปลี่ยนแปลงได้ในภายหลังในการตั้งค่าของคุณ",
|
"onboarding_theme_description": "เลือกธีมสี คุณสามารถเปลี่ยนแปลงได้ในภายหลังในการตั้งค่าของคุณ",
|
||||||
@@ -1395,7 +1451,8 @@
|
|||||||
"permission_onboarding_permission_limited": "สิทธ์จำกัด เพื่อให้ Immich สำรองข้อมูลและจัดการคลังภาพได้ ตั้งค่าสิทธิเข้าถึงรูปภาพและวิดีโอ",
|
"permission_onboarding_permission_limited": "สิทธ์จำกัด เพื่อให้ Immich สำรองข้อมูลและจัดการคลังภาพได้ ตั้งค่าสิทธิเข้าถึงรูปภาพและวิดีโอ",
|
||||||
"permission_onboarding_request": "Immich จำเป็นจะต้องได้รับสิทธิ์ดูรูปภาพและวิดีโอ",
|
"permission_onboarding_request": "Immich จำเป็นจะต้องได้รับสิทธิ์ดูรูปภาพและวิดีโอ",
|
||||||
"person": "บุคคล",
|
"person": "บุคคล",
|
||||||
"person_birthdate": "เกิดวัน{date}",
|
"person_age_years": "อายุ {years, plural, other {# ปี}}",
|
||||||
|
"person_birthdate": "เกิดเมื่อ {date}",
|
||||||
"photo_shared_all_users": "ดูเหมือนว่าคุณได้แชร์รูปภาพของคุณกับผู้ใช้ทั้งหมด หรือคุณไม่มีผู้ใช้ใดที่จะแชร์ด้วย",
|
"photo_shared_all_users": "ดูเหมือนว่าคุณได้แชร์รูปภาพของคุณกับผู้ใช้ทั้งหมด หรือคุณไม่มีผู้ใช้ใดที่จะแชร์ด้วย",
|
||||||
"photos": "รูปภาพ",
|
"photos": "รูปภาพ",
|
||||||
"photos_and_videos": "รูปภาพ และ วิดีโอ",
|
"photos_and_videos": "รูปภาพ และ วิดีโอ",
|
||||||
@@ -1469,7 +1526,7 @@
|
|||||||
"reassigned_assets_to_new_person": "มอบหมาย {count, plural, one {# สื่อ} other {# สื่อ}} ให้กับบุคคลใหม่",
|
"reassigned_assets_to_new_person": "มอบหมาย {count, plural, one {# สื่อ} other {# สื่อ}} ให้กับบุคคลใหม่",
|
||||||
"reassing_hint": "มอบหมายสื่อที่เลือกให้กับบุคคลที่มีอยู่แล้ว",
|
"reassing_hint": "มอบหมายสื่อที่เลือกให้กับบุคคลที่มีอยู่แล้ว",
|
||||||
"recent": "ล่าสุด",
|
"recent": "ล่าสุด",
|
||||||
"recent-albums": "อัลบั้มล่าสุด",
|
"recent_albums": "อัลบั้มล่าสุด",
|
||||||
"recent_searches": "การค้นหาล่าสุด",
|
"recent_searches": "การค้นหาล่าสุด",
|
||||||
"recently_added_page_title": "เพิ่มล่าสุด",
|
"recently_added_page_title": "เพิ่มล่าสุด",
|
||||||
"refresh": "รีเฟรช",
|
"refresh": "รีเฟรช",
|
||||||
@@ -1603,8 +1660,8 @@
|
|||||||
"server_endpoint": "ปลายทางเซิร์ฟเวอร์",
|
"server_endpoint": "ปลายทางเซิร์ฟเวอร์",
|
||||||
"server_info_box_app_version": "เวอร์ชันแอพ",
|
"server_info_box_app_version": "เวอร์ชันแอพ",
|
||||||
"server_info_box_server_url": "URL เซิร์ฟเวอร์",
|
"server_info_box_server_url": "URL เซิร์ฟเวอร์",
|
||||||
"server_offline": "Server ออฟไลน์",
|
"server_offline": "เซิร์ฟเวอร์ออฟไลน์",
|
||||||
"server_online": "Server ออนไลน์",
|
"server_online": "เซิร์ฟเวอร์ออนไลน์",
|
||||||
"server_privacy": "ความเป็นส่วนตัวเซิร์ฟเวอร์",
|
"server_privacy": "ความเป็นส่วนตัวเซิร์ฟเวอร์",
|
||||||
"server_stats": "สถิติเซิร์ฟเวอร์",
|
"server_stats": "สถิติเซิร์ฟเวอร์",
|
||||||
"server_version": "เวอร์ชันของเซิร์ฟเวอร์",
|
"server_version": "เวอร์ชันของเซิร์ฟเวอร์",
|
||||||
@@ -1631,7 +1688,7 @@
|
|||||||
"setting_notifications_single_progress_subtitle": "ข้อมูลความคืบหน้าการอัปโหลดโดยละเอียดต่อทรัพยากร",
|
"setting_notifications_single_progress_subtitle": "ข้อมูลความคืบหน้าการอัปโหลดโดยละเอียดต่อทรัพยากร",
|
||||||
"setting_notifications_single_progress_title": "แสดงรายละเอียดสถานะการสำรองข้อมูลในเบื้องหลัง",
|
"setting_notifications_single_progress_title": "แสดงรายละเอียดสถานะการสำรองข้อมูลในเบื้องหลัง",
|
||||||
"setting_notifications_subtitle": "ตั้งค่าการแจ้งเตือน",
|
"setting_notifications_subtitle": "ตั้งค่าการแจ้งเตือน",
|
||||||
"setting_notifications_total_progress_subtitle": "ความคืบหน้าการอัปโหลดโดยรวม (เสร็จสิ้น/ทรัพยากรทั้งหมด)",
|
"setting_notifications_total_progress_subtitle": "ความคืบหน้าการอัปโหลดโดยรวม (เสร็จสิ้น/สื่อทั้งหมด)",
|
||||||
"setting_notifications_total_progress_title": "แสดงสถานะการสำรองข้อมูลในเบื้องหลังทั้งหมด",
|
"setting_notifications_total_progress_title": "แสดงสถานะการสำรองข้อมูลในเบื้องหลังทั้งหมด",
|
||||||
"setting_video_viewer_looping_title": "วนลูป",
|
"setting_video_viewer_looping_title": "วนลูป",
|
||||||
"settings": "ตั้งค่า",
|
"settings": "ตั้งค่า",
|
||||||
|
|||||||
+28
-29
@@ -115,13 +115,13 @@
|
|||||||
"image_thumbnail_quality_description": "Küçük resim kalitesi 1-100 arasında. Daha yüksek değerler daha iyidir, ancak daha büyük dosyalar üretir ve uygulamanın yanıt hızını azaltabilir.",
|
"image_thumbnail_quality_description": "Küçük resim kalitesi 1-100 arasında. Daha yüksek değerler daha iyidir, ancak daha büyük dosyalar üretir ve uygulamanın yanıt hızını azaltabilir.",
|
||||||
"image_thumbnail_title": "Küçük Fotoğraf Ayarları",
|
"image_thumbnail_title": "Küçük Fotoğraf Ayarları",
|
||||||
"import_config_from_json_description": "JSON yapılandırma dosyası yükleyerek sistem yapılandırmasını içe aktar",
|
"import_config_from_json_description": "JSON yapılandırma dosyası yükleyerek sistem yapılandırmasını içe aktar",
|
||||||
"job_concurrency": "{job} eş zamanlılık",
|
"job_concurrency": "{job} eşzamanlılık",
|
||||||
"job_created": "Görev oluşturuldu",
|
"job_created": "Görev oluşturuldu",
|
||||||
"job_not_concurrency_safe": "Bu işlem eşzamanlama için uygun değil.",
|
"job_not_concurrency_safe": "Bu işlem eşzamanlılık açısından güvenli değil.",
|
||||||
"job_settings": "Görev Ayarları",
|
"job_settings": "Görev Ayarları",
|
||||||
"job_settings_description": "Aynı anda çalışacak görevleri yönet",
|
"job_settings_description": "Aynı anda çalışacak görevleri yönet",
|
||||||
"jobs_delayed": "{jobCount, plural, other {# gecikmeli}}",
|
"jobs_delayed": "{jobCount, plural, other {# gecikmeli}}",
|
||||||
"jobs_failed": "{jobCount, plural, other {# Başarısız}}",
|
"jobs_failed": "{jobCount, plural, other {# başarısız}}",
|
||||||
"jobs_over_time": "Zaman içinde işler",
|
"jobs_over_time": "Zaman içinde işler",
|
||||||
"library_created": "Oluşturulan kütüphane : {library}",
|
"library_created": "Oluşturulan kütüphane : {library}",
|
||||||
"library_deleted": "Kütüphane silindi",
|
"library_deleted": "Kütüphane silindi",
|
||||||
@@ -140,7 +140,7 @@
|
|||||||
"library_watching_settings": "Kütüphane izleme [DENEYSEL]",
|
"library_watching_settings": "Kütüphane izleme [DENEYSEL]",
|
||||||
"library_watching_settings_description": "Değişen dosyalar için otomatik olarak izle",
|
"library_watching_settings_description": "Değişen dosyalar için otomatik olarak izle",
|
||||||
"logging_enable_description": "Günlüğü etkinleştir",
|
"logging_enable_description": "Günlüğü etkinleştir",
|
||||||
"logging_level_description": "Etkinleştirildiğinde hangi günlük seviyesi kullanılır.",
|
"logging_level_description": "Etkinleştirildiğinde, hangi günlük düzeyinin kullanılacağı.",
|
||||||
"logging_settings": "Günlük Tutma",
|
"logging_settings": "Günlük Tutma",
|
||||||
"machine_learning_availability_checks": "Kullanılabilirlik kontrolleri",
|
"machine_learning_availability_checks": "Kullanılabilirlik kontrolleri",
|
||||||
"machine_learning_availability_checks_description": "Kullanılabilir makine öğrenimi sunucularını otomatik olarak algılayın ve tercih edin",
|
"machine_learning_availability_checks_description": "Kullanılabilir makine öğrenimi sunucularını otomatik olarak algılayın ve tercih edin",
|
||||||
@@ -163,23 +163,23 @@
|
|||||||
"machine_learning_facial_recognition_model_description": "Modeller, azalan boyut sırasına göre listelenmiştir. Daha büyük modeller daha yavaştır ve daha fazla bellek kullanır, ancak daha iyi sonuçlar üretir. Bir modeli değiştirdikten sonra tüm görüntüler için yüz algılama işini yeniden çalıştırmanız gerektiğini unutmayın.",
|
"machine_learning_facial_recognition_model_description": "Modeller, azalan boyut sırasına göre listelenmiştir. Daha büyük modeller daha yavaştır ve daha fazla bellek kullanır, ancak daha iyi sonuçlar üretir. Bir modeli değiştirdikten sonra tüm görüntüler için yüz algılama işini yeniden çalıştırmanız gerektiğini unutmayın.",
|
||||||
"machine_learning_facial_recognition_setting": "Yüz tanımayı etkinleştir",
|
"machine_learning_facial_recognition_setting": "Yüz tanımayı etkinleştir",
|
||||||
"machine_learning_facial_recognition_setting_description": "Devre dışı bırakıldığında fotoğraflar yüz tanıma için işlenmeyecek ve Keşfet sayfasındaki Kişiler sekmesini doldurmayacak.",
|
"machine_learning_facial_recognition_setting_description": "Devre dışı bırakıldığında fotoğraflar yüz tanıma için işlenmeyecek ve Keşfet sayfasındaki Kişiler sekmesini doldurmayacak.",
|
||||||
"machine_learning_max_detection_distance": "Maksimum tespit uzaklığı",
|
"machine_learning_max_detection_distance": "Maksimum algılama mesafesi",
|
||||||
"machine_learning_max_detection_distance_description": "Resimleri birbirinin çifti saymak için hesap edilecek azami benzerlik ölçüsü, 0.001-0.1 aralığında. Daha yüksek değer daha hassas olup daha fazla çift tespit eder ancak çift olmayan resimleri birbirinin çifti sayabilir.",
|
"machine_learning_max_detection_distance_description": "Resimleri birbirinin çifti saymak için hesap edilecek azami benzerlik ölçüsü, 0.001-0.1 aralığında. Daha yüksek değer daha hassas olup daha fazla çift tespit eder ancak çift olmayan resimleri birbirinin çifti sayabilir.",
|
||||||
"machine_learning_max_recognition_distance": "Maksimum tanıma uzaklığı",
|
"machine_learning_max_recognition_distance": "Maksimum tanıma mesafesi",
|
||||||
"machine_learning_max_recognition_distance_description": "İki suretin aynı kişi olarak kabul edildiği azami benzerlik oranı; 0-2 aralığında bir değerdir. Düşük değerler iki farklı kişinin sehven aynı kişi olarak algılanmasını engeller ama aynı kişinin farklı pozlarının farklı suretler olarak algılanmasına sebep olabilir. İki sureti birleştirmek daha kolay olduğu için mümkün olduğunca düşük değerler seçin.",
|
"machine_learning_max_recognition_distance_description": "İki suretin aynı kişi olarak kabul edildiği azami benzerlik oranı; 0-2 aralığında bir değerdir. Düşük değerler iki farklı kişinin sehven aynı kişi olarak algılanmasını engeller ama aynı kişinin farklı pozlarının farklı suretler olarak algılanmasına sebep olabilir. İki sureti birleştirmek daha kolay olduğu için mümkün olduğunca düşük değerler seçin.",
|
||||||
"machine_learning_min_detection_score": "Minimum tespit skoru",
|
"machine_learning_min_detection_score": "Minimum tespit skoru",
|
||||||
"machine_learning_min_detection_score_description": "Bir yüzün algılanması için gerekli asgari kararlılık miktarı; 0-1 aralığında bir değerdir. Düşük değerler daha fazla yüz tanır ama hatalı tanıma oranı artar.",
|
"machine_learning_min_detection_score_description": "Bir yüzün algılanması için gerekli asgari kararlılık miktarı; 0-1 aralığında bir değerdir. Düşük değerler daha fazla yüz tanır ama hatalı tanıma oranı artar.",
|
||||||
"machine_learning_min_recognized_faces": "Minimum tanınan yüzler",
|
"machine_learning_min_recognized_faces": "Tanınan minimum yüz sayısı",
|
||||||
"machine_learning_min_recognized_faces_description": "Kişi oluşturulması için gereken minimum yüzler. Bu değeri yükseltmek yüz tanıma doğruluğunu arttırır fakat yüzün bir kişiye atanmama olasılığını arttırır.",
|
"machine_learning_min_recognized_faces_description": "Kişi oluşturulması için gereken minimum yüzler. Bu değeri yükseltmek yüz tanıma doğruluğunu arttırır fakat yüzün bir kişiye atanmama olasılığını arttırır.",
|
||||||
"machine_learning_ocr": "OCR",
|
"machine_learning_ocr": "OCR",
|
||||||
"machine_learning_ocr_description": "Resimlerdeki metni tanımak için makine öğrenimini kullan",
|
"machine_learning_ocr_description": "Resimlerdeki metni tanımak için makine öğrenimini kullan",
|
||||||
"machine_learning_ocr_enabled": "OCR'yi etkinleştir",
|
"machine_learning_ocr_enabled": "OCR'yi etkinleştir",
|
||||||
"machine_learning_ocr_enabled_description": "Devre dışı bırakılırsa, resimler metin tanıma işleminden geçmeyecektir.",
|
"machine_learning_ocr_enabled_description": "Devre dışı bırakılırsa, resimler metin tanıma işleminden geçmeyecektir.",
|
||||||
"machine_learning_ocr_max_resolution": "En yüksek çözünürlük",
|
"machine_learning_ocr_max_resolution": "Maksimum çözünürlük",
|
||||||
"machine_learning_ocr_max_resolution_description": "Bu çözünürlüğün üzerindeki önizlemeler, en-boy oranı korunarak yeniden boyutlandırılacaktır. Daha yüksek değerler daha doğru sonuç verir, ancak işlemesi daha uzun sürer ve daha fazla bellek kullanır.",
|
"machine_learning_ocr_max_resolution_description": "Bu çözünürlüğün üzerindeki önizlemeler, en-boy oranı korunarak yeniden boyutlandırılacaktır. Daha yüksek değerler daha doğru sonuç verir, ancak işlemesi daha uzun sürer ve daha fazla bellek kullanır.",
|
||||||
"machine_learning_ocr_min_detection_score": "En düşük tespit puanı",
|
"machine_learning_ocr_min_detection_score": "Minimum tespit puanı",
|
||||||
"machine_learning_ocr_min_detection_score_description": "Metnin tespit edilmesi için minimum güven puanı 0-1 arasındadır. Düşük değerler daha fazla metin tespit eder, ancak yanlış pozitif sonuçlara yol açabilir.",
|
"machine_learning_ocr_min_detection_score_description": "Metnin tespit edilmesi için minimum güven puanı 0-1 arasındadır. Düşük değerler daha fazla metin tespit eder, ancak yanlış pozitif sonuçlara yol açabilir.",
|
||||||
"machine_learning_ocr_min_recognition_score": "Minimum tespit puanı",
|
"machine_learning_ocr_min_recognition_score": "Minimum tanıma puanı",
|
||||||
"machine_learning_ocr_min_score_recognition_description": "Algılanan metnin tanınması için minimum güven puanı 0-1 arasındadır. Daha düşük değerler daha fazla metni tanır, ancak yanlış pozitif sonuçlara neden olabilir.",
|
"machine_learning_ocr_min_score_recognition_description": "Algılanan metnin tanınması için minimum güven puanı 0-1 arasındadır. Daha düşük değerler daha fazla metni tanır, ancak yanlış pozitif sonuçlara neden olabilir.",
|
||||||
"machine_learning_ocr_model": "OCR modeli",
|
"machine_learning_ocr_model": "OCR modeli",
|
||||||
"machine_learning_ocr_model_description": "Sunucu modelleri mobil modellerden daha doğrudur, ancak işlenmesi daha uzun sürer ve daha fazla bellek kullanır.",
|
"machine_learning_ocr_model_description": "Sunucu modelleri mobil modellerden daha doğrudur, ancak işlenmesi daha uzun sürer ve daha fazla bellek kullanır.",
|
||||||
@@ -243,7 +243,7 @@
|
|||||||
"nightly_tasks_settings_description": "Gece görevlerini yönet",
|
"nightly_tasks_settings_description": "Gece görevlerini yönet",
|
||||||
"nightly_tasks_start_time_setting": "Başlangıç saati",
|
"nightly_tasks_start_time_setting": "Başlangıç saati",
|
||||||
"nightly_tasks_start_time_setting_description": "Sunucunun gece görevlerini çalıştırmaya başladığı saat",
|
"nightly_tasks_start_time_setting_description": "Sunucunun gece görevlerini çalıştırmaya başladığı saat",
|
||||||
"nightly_tasks_sync_quota_usage_setting": "Kota kullanımını eşzamanla",
|
"nightly_tasks_sync_quota_usage_setting": "Kota kullanımını senkronize et",
|
||||||
"nightly_tasks_sync_quota_usage_setting_description": "Mevcut kullanıma göre kullanıcı depolama kotasını güncelle",
|
"nightly_tasks_sync_quota_usage_setting_description": "Mevcut kullanıma göre kullanıcı depolama kotasını güncelle",
|
||||||
"no_paths_added": "Yol eklenmedi",
|
"no_paths_added": "Yol eklenmedi",
|
||||||
"no_pattern_added": "Desen eklenmedi",
|
"no_pattern_added": "Desen eklenmedi",
|
||||||
@@ -321,7 +321,7 @@
|
|||||||
"server_welcome_message_description": "Giriş sayfasında gösterilen mesaj.",
|
"server_welcome_message_description": "Giriş sayfasında gösterilen mesaj.",
|
||||||
"settings_page_description": "Yönetici ayarlar sayfası",
|
"settings_page_description": "Yönetici ayarlar sayfası",
|
||||||
"sidecar_job": "Ek dosya ile taşınan metadata",
|
"sidecar_job": "Ek dosya ile taşınan metadata",
|
||||||
"sidecar_job_description": "Dosya sisteminden yan araç meta verilerini keşfedin veya eşzamanlayın",
|
"sidecar_job_description": "Dosya sisteminden sidecar meta verilerini keşfedin veya senkronize edin",
|
||||||
"slideshow_duration_description": "Her fotoğrafın kaç saniye görüntüleneceği",
|
"slideshow_duration_description": "Her fotoğrafın kaç saniye görüntüleneceği",
|
||||||
"smart_search_job_description": "Akıllı aramayı desteklemek için tüm öğelerde makine öğrenmesini çalıştırın",
|
"smart_search_job_description": "Akıllı aramayı desteklemek için tüm öğelerde makine öğrenmesini çalıştırın",
|
||||||
"storage_template_date_time_description": "Öğenin oluşturulma zaman damgası, tarih ve saat bilgisi için kullanılır",
|
"storage_template_date_time_description": "Öğenin oluşturulma zaman damgası, tarih ve saat bilgisi için kullanılır",
|
||||||
@@ -359,7 +359,7 @@
|
|||||||
"transcoding_acceleration_api": "Hızlandırma API",
|
"transcoding_acceleration_api": "Hızlandırma API",
|
||||||
"transcoding_acceleration_api_description": "Video formatı çevriminde kullanılacak API. Bu ayara 'mümkün olduğunca' uyulmaktadır; seçilen API'da sorun çıkarsa yazılım tabanlı çevirime dönülür. VP9 donanımınıza bağlı olarak çalışmayabilir.",
|
"transcoding_acceleration_api_description": "Video formatı çevriminde kullanılacak API. Bu ayara 'mümkün olduğunca' uyulmaktadır; seçilen API'da sorun çıkarsa yazılım tabanlı çevirime dönülür. VP9 donanımınıza bağlı olarak çalışmayabilir.",
|
||||||
"transcoding_acceleration_nvenc": "NVENC (NVIDIA GPU gerektirir)",
|
"transcoding_acceleration_nvenc": "NVENC (NVIDIA GPU gerektirir)",
|
||||||
"transcoding_acceleration_qsv": "Hızlı Eşzamanlama (7. nesil veya daha yeni bir Intel CPU gerektirir)",
|
"transcoding_acceleration_qsv": "Hızlı Senkronizasyon (7. nesil Intel işlemci veya üzeri gerektirir)",
|
||||||
"transcoding_acceleration_rkmpp": "RKMPP (Sadece Rockchip SOC'ler)",
|
"transcoding_acceleration_rkmpp": "RKMPP (Sadece Rockchip SOC'ler)",
|
||||||
"transcoding_acceleration_vaapi": "VAAPI",
|
"transcoding_acceleration_vaapi": "VAAPI",
|
||||||
"transcoding_accepted_audio_codecs": "Kabul edilen ses kodekleri",
|
"transcoding_accepted_audio_codecs": "Kabul edilen ses kodekleri",
|
||||||
@@ -386,7 +386,7 @@
|
|||||||
"transcoding_hardware_decoding_setting_description": "Uçtan uca hızlandırmayı, sadece kodlamayı hızlandırmanın yerine etkinleştirir. Tüm videolarda çalışmayabilir.",
|
"transcoding_hardware_decoding_setting_description": "Uçtan uca hızlandırmayı, sadece kodlamayı hızlandırmanın yerine etkinleştirir. Tüm videolarda çalışmayabilir.",
|
||||||
"transcoding_max_b_frames": "Maksimum B-kareler",
|
"transcoding_max_b_frames": "Maksimum B-kareler",
|
||||||
"transcoding_max_b_frames_description": "Daha yüksek değerler sıkıştırma verimliliğini artırır, ancak kodlamayı yavaşlatır. Eski cihazlarda donanım hızlandırma ile uyumlu olmayabilir. 0, B-çerçevelerini devre dışı bırakır, -1 ise bu değeri otomatik olarak ayarlar.",
|
"transcoding_max_b_frames_description": "Daha yüksek değerler sıkıştırma verimliliğini artırır, ancak kodlamayı yavaşlatır. Eski cihazlarda donanım hızlandırma ile uyumlu olmayabilir. 0, B-çerçevelerini devre dışı bırakır, -1 ise bu değeri otomatik olarak ayarlar.",
|
||||||
"transcoding_max_bitrate": "Maksimum bitrate",
|
"transcoding_max_bitrate": "Maksimum bit hızı",
|
||||||
"transcoding_max_bitrate_description": "Maksimum bit hızı ayarlamak, kaliteyi az bir maliyetle düşürerek dosya boyutlarını daha öngörülebilir hale getirebilir. 720p çözünürlükte, tipik değerler VP9 veya HEVC için 2600 kbit/s, H.264 için ise 4500 kbit/s’dir. 0 olarak ayarlanırsa devre dışı bırakılır. Birim belirtilmediğinde, k (kbit/s için) varsayılır; bu nedenle 5000, 5000k ve 5M (Mbit/s için) eşdeğerdir.",
|
"transcoding_max_bitrate_description": "Maksimum bit hızı ayarlamak, kaliteyi az bir maliyetle düşürerek dosya boyutlarını daha öngörülebilir hale getirebilir. 720p çözünürlükte, tipik değerler VP9 veya HEVC için 2600 kbit/s, H.264 için ise 4500 kbit/s’dir. 0 olarak ayarlanırsa devre dışı bırakılır. Birim belirtilmediğinde, k (kbit/s için) varsayılır; bu nedenle 5000, 5000k ve 5M (Mbit/s için) eşdeğerdir.",
|
||||||
"transcoding_max_keyframe_interval": "Maksimum ana kare aralığı",
|
"transcoding_max_keyframe_interval": "Maksimum ana kare aralığı",
|
||||||
"transcoding_max_keyframe_interval_description": "Ana kareler arasındaki maksimum kare mesafesini ayarlar. Düşük değerler sıkıştırma verimliliğini kötüleştirir, ancak arama sürelerini iyileştirir ve hızlı hareket içeren sahnelerde kaliteyi artırabilir. 0 bu değeri otomatik olarak ayarlar.",
|
"transcoding_max_keyframe_interval_description": "Ana kareler arasındaki maksimum kare mesafesini ayarlar. Düşük değerler sıkıştırma verimliliğini kötüleştirir, ancak arama sürelerini iyileştirir ve hızlı hareket içeren sahnelerde kaliteyi artırabilir. 0 bu değeri otomatik olarak ayarlar.",
|
||||||
@@ -466,7 +466,7 @@
|
|||||||
"advanced_settings_self_signed_ssl_subtitle": "Sunucu uç noktası için SSL sertifika doğrulamasını atlar. Kendinden imzalı sertifikalar için gereklidir.",
|
"advanced_settings_self_signed_ssl_subtitle": "Sunucu uç noktası için SSL sertifika doğrulamasını atlar. Kendinden imzalı sertifikalar için gereklidir.",
|
||||||
"advanced_settings_self_signed_ssl_title": "Kendinden imzalı SSL sertifikalarına izin ver [DENEYSEL]",
|
"advanced_settings_self_signed_ssl_title": "Kendinden imzalı SSL sertifikalarına izin ver [DENEYSEL]",
|
||||||
"advanced_settings_sync_remote_deletions_subtitle": "Web üzerinde işlem yapıldığında, bu aygıttaki öğeyi otomatik olarak sil veya geri yükle",
|
"advanced_settings_sync_remote_deletions_subtitle": "Web üzerinde işlem yapıldığında, bu aygıttaki öğeyi otomatik olarak sil veya geri yükle",
|
||||||
"advanced_settings_sync_remote_deletions_title": "Uzaktan silmeleri eşzamanla [DENEYSEL]",
|
"advanced_settings_sync_remote_deletions_title": "Uzaktan silme işlemlerini senkronize et [DENEYSEL]",
|
||||||
"advanced_settings_tile_subtitle": "Gelişmiş kullanıcı ayarları",
|
"advanced_settings_tile_subtitle": "Gelişmiş kullanıcı ayarları",
|
||||||
"advanced_settings_troubleshooting_subtitle": "Sorun giderme için ek özellikleri etkinleştirin",
|
"advanced_settings_troubleshooting_subtitle": "Sorun giderme için ek özellikleri etkinleştirin",
|
||||||
"advanced_settings_troubleshooting_title": "Sorun Giderme",
|
"advanced_settings_troubleshooting_title": "Sorun Giderme",
|
||||||
@@ -626,7 +626,7 @@
|
|||||||
"backup_album_selection_page_select_albums": "Albümleri seç",
|
"backup_album_selection_page_select_albums": "Albümleri seç",
|
||||||
"backup_album_selection_page_selection_info": "Seçim Bilgileri",
|
"backup_album_selection_page_selection_info": "Seçim Bilgileri",
|
||||||
"backup_album_selection_page_total_assets": "Toplam eşsiz öğeler",
|
"backup_album_selection_page_total_assets": "Toplam eşsiz öğeler",
|
||||||
"backup_albums_sync": "Albüm Senkronizasyonunu Yedekle",
|
"backup_albums_sync": "Albüm Yedekleme Senkronizasyonu",
|
||||||
"backup_all": "Tümü",
|
"backup_all": "Tümü",
|
||||||
"backup_background_service_backup_failed_message": "Yedekleme başarısız. Tekrar deneniyor…",
|
"backup_background_service_backup_failed_message": "Yedekleme başarısız. Tekrar deneniyor…",
|
||||||
"backup_background_service_complete_notification": "Öğe yedekleme tamamlandı",
|
"backup_background_service_complete_notification": "Öğe yedekleme tamamlandı",
|
||||||
@@ -1330,9 +1330,9 @@
|
|||||||
"invite_people": "Kişileri Davet Et",
|
"invite_people": "Kişileri Davet Et",
|
||||||
"invite_to_album": "Albüme davet et",
|
"invite_to_album": "Albüme davet et",
|
||||||
"ios_debug_info_fetch_ran_at": "Veri çekme {dateTime} tarihinde çalıştırıldı",
|
"ios_debug_info_fetch_ran_at": "Veri çekme {dateTime} tarihinde çalıştırıldı",
|
||||||
"ios_debug_info_last_sync_at": "Son eşzamanlama {dateTime}",
|
"ios_debug_info_last_sync_at": "Son senkronizasyon {dateTime}",
|
||||||
"ios_debug_info_no_processes_queued": "Hiçbir arka plan işlemi kuyruğa alınmadı",
|
"ios_debug_info_no_processes_queued": "Hiçbir arka plan işlemi kuyruğa alınmadı",
|
||||||
"ios_debug_info_no_sync_yet": "Henüz arka plan eşzamanlama görevi çalıştırılmadı",
|
"ios_debug_info_no_sync_yet": "Henüz hiçbir arka plan senkronizasyon görevi çalıştırılmadı",
|
||||||
"ios_debug_info_processes_queued": "{count, plural, one {{count} arka plan işlemi kuyruğa alındı} other {{count} arka plan işlemi kuyruğa alındı}}",
|
"ios_debug_info_processes_queued": "{count, plural, one {{count} arka plan işlemi kuyruğa alındı} other {{count} arka plan işlemi kuyruğa alındı}}",
|
||||||
"ios_debug_info_processing_ran_at": "İşleme {dateTime} tarihinde çalıştırıldı",
|
"ios_debug_info_processing_ran_at": "İşleme {dateTime} tarihinde çalıştırıldı",
|
||||||
"items_count": "{count, plural, one {# Öğe} other {# Öğe}}",
|
"items_count": "{count, plural, one {# Öğe} other {# Öğe}}",
|
||||||
@@ -1613,7 +1613,6 @@
|
|||||||
"not_available": "YOK",
|
"not_available": "YOK",
|
||||||
"not_in_any_album": "Hiçbir albümde değil",
|
"not_in_any_album": "Hiçbir albümde değil",
|
||||||
"not_selected": "Seçilmedi",
|
"not_selected": "Seçilmedi",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "Not: Daha önce yüklenen öğeler için bir depolama yolu etiketi uygulamak üzere şunu başlatın",
|
|
||||||
"notes": "Notlar",
|
"notes": "Notlar",
|
||||||
"nothing_here_yet": "Burada henüz bir şey yok",
|
"nothing_here_yet": "Burada henüz bir şey yok",
|
||||||
"notification_permission_dialog_content": "Bildirimleri etkinleştirmek için cihaz ayarlarına gidin ve izin verin.",
|
"notification_permission_dialog_content": "Bildirimleri etkinleştirmek için cihaz ayarlarına gidin ve izin verin.",
|
||||||
@@ -1649,7 +1648,7 @@
|
|||||||
"options": "Seçenekler",
|
"options": "Seçenekler",
|
||||||
"or": "veya",
|
"or": "veya",
|
||||||
"organize_into_albums": "Albümler halinde düzenle",
|
"organize_into_albums": "Albümler halinde düzenle",
|
||||||
"organize_into_albums_description": "Mevcut eşzamanlama ayarlarını kullanarak mevcut fotoğrafları albümlere ekleyin",
|
"organize_into_albums_description": "Mevcut fotoğrafları geçerli senkronizasyon ayarlarını kullanarak albümlere yerleştirin",
|
||||||
"organize_your_library": "Kütüphanenizi düzenleyin",
|
"organize_your_library": "Kütüphanenizi düzenleyin",
|
||||||
"original": "orijinal",
|
"original": "orijinal",
|
||||||
"other": "Diğer",
|
"other": "Diğer",
|
||||||
@@ -1815,7 +1814,7 @@
|
|||||||
"reassigned_assets_to_new_person": "{count, plural, one {# öğe} other {# öğeler}} yeni bir kişiye atandı",
|
"reassigned_assets_to_new_person": "{count, plural, one {# öğe} other {# öğeler}} yeni bir kişiye atandı",
|
||||||
"reassing_hint": "Seçili öğeleri mevcut bir kişiye atayın",
|
"reassing_hint": "Seçili öğeleri mevcut bir kişiye atayın",
|
||||||
"recent": "Son",
|
"recent": "Son",
|
||||||
"recent-albums": "Son kaydedilen albümler",
|
"recent_albums": "Son kaydedilen albümler",
|
||||||
"recent_searches": "Son aramalar",
|
"recent_searches": "Son aramalar",
|
||||||
"recently_added": "Son eklenenler",
|
"recently_added": "Son eklenenler",
|
||||||
"recently_added_page_title": "Son Eklenenler",
|
"recently_added_page_title": "Son Eklenenler",
|
||||||
@@ -1876,7 +1875,7 @@
|
|||||||
"reset_pin_code_success": "PIN kodu başarıyla sıfırlandı",
|
"reset_pin_code_success": "PIN kodu başarıyla sıfırlandı",
|
||||||
"reset_pin_code_with_password": "PIN kodunuzu her zaman şifrenizle sıfırlayabilirsiniz",
|
"reset_pin_code_with_password": "PIN kodunuzu her zaman şifrenizle sıfırlayabilirsiniz",
|
||||||
"reset_sqlite": "SQLite Veritabanını Sıfırla",
|
"reset_sqlite": "SQLite Veritabanını Sıfırla",
|
||||||
"reset_sqlite_confirmation": "SQLite veritabanını sıfırlamak istediğinizden emin misiniz? Verileri yeniden eşzamanlamak için oturumu kapatıp tekrar oturum açmanız gerekecektir",
|
"reset_sqlite_confirmation": "SQLite veritabanını sıfırlamak istediğinizden emin misiniz? Verileri yeniden senkronize etmek için oturumu kapatıp tekrar giriş yapmanız gerekecek",
|
||||||
"reset_sqlite_success": "SQLite veritabanını başarıyla sıfırladınız",
|
"reset_sqlite_success": "SQLite veritabanını başarıyla sıfırladınız",
|
||||||
"reset_to_default": "Varsayılana sıfırla",
|
"reset_to_default": "Varsayılana sıfırla",
|
||||||
"resolution": "Çözünürlük",
|
"resolution": "Çözünürlük",
|
||||||
@@ -2185,13 +2184,13 @@
|
|||||||
"support_and_feedback": "Destek & Geri Bildirim",
|
"support_and_feedback": "Destek & Geri Bildirim",
|
||||||
"support_third_party_description": "Immich kurulumu üçüncü bir tarafça yapıldı. Yaşadığınız sorunlar bu paketle ilgili olabilir. Lütfen öncelikli olarak aşağıdaki bağlantıları kullanarak bu sağlayıcıyla iletişime geçin.",
|
"support_third_party_description": "Immich kurulumu üçüncü bir tarafça yapıldı. Yaşadığınız sorunlar bu paketle ilgili olabilir. Lütfen öncelikli olarak aşağıdaki bağlantıları kullanarak bu sağlayıcıyla iletişime geçin.",
|
||||||
"swap_merge_direction": "Birleştirme yönünü değiştir",
|
"swap_merge_direction": "Birleştirme yönünü değiştir",
|
||||||
"sync": "Eşzamanla",
|
"sync": "Senkronizasyon",
|
||||||
"sync_albums": "Albümleri eşzamanla",
|
"sync_albums": "Albümleri senkronize et",
|
||||||
"sync_albums_manual_subtitle": "Yüklenmiş fotoğraf ve videoları yedekleme için seçili albümler ile eşzamanlayın",
|
"sync_albums_manual_subtitle": "Yüklenen tüm videoları ve fotoğrafları seçilen yedekleme albümlerine senkronize edin",
|
||||||
"sync_local": "Yerel Eşzamanlama",
|
"sync_local": "Yerel Senkronizasyon",
|
||||||
"sync_remote": "Uzaktan Eşzamanlama",
|
"sync_remote": "Uzaktan Senkronizasyon",
|
||||||
"sync_status": "Eşzamanlama Durumu",
|
"sync_status": "Senkronizasyon Durumu",
|
||||||
"sync_status_subtitle": "Eşzamanlama sistemini görüntüleyin ve yönetin",
|
"sync_status_subtitle": "Senkronizasyon sistemini görüntüleyin ve yönetin",
|
||||||
"sync_upload_album_setting_subtitle": "Fotoğraflarınızı ve videolarınızı oluşturun ve Immich'te seçtiğiniz albümlere yükleyin",
|
"sync_upload_album_setting_subtitle": "Fotoğraflarınızı ve videolarınızı oluşturun ve Immich'te seçtiğiniz albümlere yükleyin",
|
||||||
"tag": "Etiket",
|
"tag": "Etiket",
|
||||||
"tag_assets": "Öğeleri etiketle",
|
"tag_assets": "Öğeleri etiketle",
|
||||||
|
|||||||
+1
-2
@@ -1613,7 +1613,6 @@
|
|||||||
"not_available": "Немає даних",
|
"not_available": "Немає даних",
|
||||||
"not_in_any_album": "У жодному альбомі",
|
"not_in_any_album": "У жодному альбомі",
|
||||||
"not_selected": "Не вибрано",
|
"not_selected": "Не вибрано",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "Примітка: Щоб застосувати мітку сховища до раніше вивантажених файлів, виконайте команду",
|
|
||||||
"notes": "Нотатки",
|
"notes": "Нотатки",
|
||||||
"nothing_here_yet": "Тут ще нічого немає",
|
"nothing_here_yet": "Тут ще нічого немає",
|
||||||
"notification_permission_dialog_content": "Щоб увімкнути сповіщення, перейдіть до Налаштувань і надайте дозвіл.",
|
"notification_permission_dialog_content": "Щоб увімкнути сповіщення, перейдіть до Налаштувань і надайте дозвіл.",
|
||||||
@@ -1815,7 +1814,7 @@
|
|||||||
"reassigned_assets_to_new_person": "Перепризначено {count, plural, one {# файл} few {# файли} many {# файлів} other {# файлів}} новій особі",
|
"reassigned_assets_to_new_person": "Перепризначено {count, plural, one {# файл} few {# файли} many {# файлів} other {# файлів}} новій особі",
|
||||||
"reassing_hint": "Призначити обрані файли існуючій особі",
|
"reassing_hint": "Призначити обрані файли існуючій особі",
|
||||||
"recent": "Нещодавно",
|
"recent": "Нещодавно",
|
||||||
"recent-albums": "Останні альбоми",
|
"recent_albums": "Останні альбоми",
|
||||||
"recent_searches": "Нещодавні пошукові запити",
|
"recent_searches": "Нещодавні пошукові запити",
|
||||||
"recently_added": "Нещодавно додані",
|
"recently_added": "Нещодавно додані",
|
||||||
"recently_added_page_title": "Нещодавні",
|
"recently_added_page_title": "Нещодавні",
|
||||||
|
|||||||
+1
-2
@@ -1516,7 +1516,6 @@
|
|||||||
"not_available": "Thiếu",
|
"not_available": "Thiếu",
|
||||||
"not_in_any_album": "Không thuộc album nào",
|
"not_in_any_album": "Không thuộc album nào",
|
||||||
"not_selected": "Không được chọn",
|
"not_selected": "Không được chọn",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "Lưu ý: Để áp dụng Nhãn lưu trữ cho các ảnh đã tải lên trước đó, hãy chạy",
|
|
||||||
"notes": "Lưu ý",
|
"notes": "Lưu ý",
|
||||||
"nothing_here_yet": "Chưa có nội dung nào",
|
"nothing_here_yet": "Chưa có nội dung nào",
|
||||||
"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_content": "Để bật thông báo, chuyển tới Cài đặt và chọn cho phép.",
|
||||||
@@ -1717,7 +1716,7 @@
|
|||||||
"reassigned_assets_to_new_person": "Đã gán lại {count, plural, one {# ảnh} other {# ảnh}} cho một người mới",
|
"reassigned_assets_to_new_person": "Đã gán lại {count, plural, one {# ảnh} other {# ảnh}} cho một người mới",
|
||||||
"reassing_hint": "Gán các ảnh đã chọn cho một người hiện có",
|
"reassing_hint": "Gán các ảnh đã chọn cho một người hiện có",
|
||||||
"recent": "Gần đây",
|
"recent": "Gần đây",
|
||||||
"recent-albums": "Album gần đây",
|
"recent_albums": "Album gần đây",
|
||||||
"recent_searches": "Tìm kiếm gần đây",
|
"recent_searches": "Tìm kiếm gần đây",
|
||||||
"recently_added": "Thêm gần đây",
|
"recently_added": "Thêm gần đây",
|
||||||
"recently_added_page_title": "Mới thêm gần đây",
|
"recently_added_page_title": "Mới thêm gần đây",
|
||||||
|
|||||||
@@ -41,6 +41,7 @@
|
|||||||
"add_to_bottom_bar": "加至",
|
"add_to_bottom_bar": "加至",
|
||||||
"add_to_shared_album": "加至共享相簿",
|
"add_to_shared_album": "加至共享相簿",
|
||||||
"add_url": "加網址",
|
"add_url": "加網址",
|
||||||
|
"add_workflow_step": "增加工作步驟",
|
||||||
"added_to_favorites": "已加至最愛",
|
"added_to_favorites": "已加至最愛",
|
||||||
"added_to_favorites_count": "已加{count, number} 個項目至最愛",
|
"added_to_favorites_count": "已加{count, number} 個項目至最愛",
|
||||||
"admin": {
|
"admin": {
|
||||||
|
|||||||
@@ -685,35 +685,35 @@
|
|||||||
"backup_manual_title": "上传状态",
|
"backup_manual_title": "上传状态",
|
||||||
"backup_options": "备份选项",
|
"backup_options": "备份选项",
|
||||||
"backup_options_page_title": "备份选项",
|
"backup_options_page_title": "备份选项",
|
||||||
"backup_setting_subtitle": "管理后台和前台上传设置",
|
"backup_setting_subtitle": "管理后台与前台上传设置",
|
||||||
"backup_settings_subtitle": "管理上传设置",
|
"backup_settings_subtitle": "管理上传设置",
|
||||||
"backup_upload_details_page_more_details": "点击了解详情",
|
"backup_upload_details_page_more_details": "点击查看详情",
|
||||||
"backward": "后退",
|
"backward": "后退",
|
||||||
"biometric_auth_enabled": "生物识别身份验证已启用",
|
"biometric_auth_enabled": "生物识别认证已启用",
|
||||||
"biometric_locked_out": "您被锁定在生物识别身份验证之外",
|
"biometric_locked_out": "您已被锁定,无法使用生物识别认证",
|
||||||
"biometric_no_options": "没有可用的生物识别选项",
|
"biometric_no_options": "无可用的生物识别选项",
|
||||||
"biometric_not_available": "生物识别身份验证在此设备上不可用",
|
"biometric_not_available": "本设备不支持生物识别认证",
|
||||||
"birthdate_saved": "出生日期保存成功",
|
"birthdate_saved": "出生日期保存成功",
|
||||||
"birthdate_set_description": "出生日期用于计算照片中该人物在拍照时的年龄。",
|
"birthdate_set_description": "出生日期用于计算拍摄此照片时此人的年龄。",
|
||||||
"blurred_background": "背景模糊",
|
"blurred_background": "背景虚化",
|
||||||
"bugs_and_feature_requests": "Bug 与功能请求",
|
"bugs_and_feature_requests": "问题与功能建议",
|
||||||
"build": "构建版本",
|
"build": "构建版本",
|
||||||
"build_image": "镜像版本",
|
"build_image": "镜像版本",
|
||||||
"bulk_delete_duplicates_confirmation": "您确定要批量删除{count, plural, one {#个重复资产} other {#个重复资产}}吗?这将保留每个组中最大的项目并永久删除所有其它重复资产。注意:该操作无法被撤消!",
|
"bulk_delete_duplicates_confirmation": "您确定要批量删除{count, plural, one {#个重复项} other {#个重复项}}吗?这将保留每组中体积最大的文件,并永久删除其余所有重复项。该操作无法被撤消!",
|
||||||
"bulk_keep_duplicates_confirmation": "您确定要保留{count, plural, one {#个重复资产} other {#个重复资产}}吗?这将清空所有重复记录,但不会删除任何内容。",
|
"bulk_keep_duplicates_confirmation": "您确定要保留{count, plural, one {#个重复项} other {#个重复项}}吗?这将标记所有重复组为已解决,且不会删除任何文件。",
|
||||||
"bulk_trash_duplicates_confirmation": "您确定要批量删除{count, plural, one {#个重复资产} other {#个重复资产}}吗?这将保留每组中最大的资产并删除所有其它重复资产。",
|
"bulk_trash_duplicates_confirmation": "您确定要批量将{count, plural, one {#个重复项} other {#个重复项}}移至回收站吗?这将保留每组中体积最大的文件,并将其余所有重复项移至回收站。",
|
||||||
"buy": "购买 Immich",
|
"buy": "购买 Immich",
|
||||||
"cache_settings_clear_cache_button": "清除缓存",
|
"cache_settings_clear_cache_button": "清除缓存",
|
||||||
"cache_settings_clear_cache_button_title": "清除应用缓存。在重新生成缓存之前,将显著影响应用的性能。",
|
"cache_settings_clear_cache_button_title": "清理应用缓存。在缓存重建期间,应用的运行速度会明显变慢。",
|
||||||
"cache_settings_duplicated_assets_clear_button": "清除",
|
"cache_settings_duplicated_assets_clear_button": "清除",
|
||||||
"cache_settings_duplicated_assets_subtitle": "应用程序忽略的照片和视频",
|
"cache_settings_duplicated_assets_subtitle": "忽略列表中的媒体文件",
|
||||||
"cache_settings_duplicated_assets_title": "重复资产({count})",
|
"cache_settings_duplicated_assets_title": "重复资产({count})",
|
||||||
"cache_settings_statistics_album": "资产库缩略图",
|
"cache_settings_statistics_album": "图库缩略图",
|
||||||
"cache_settings_statistics_full": "完整图像",
|
"cache_settings_statistics_full": "原图",
|
||||||
"cache_settings_statistics_shared": "共享相册缩略图",
|
"cache_settings_statistics_shared": "共享相册缩略图",
|
||||||
"cache_settings_statistics_thumbnail": "缩略图",
|
"cache_settings_statistics_thumbnail": "缩略图",
|
||||||
"cache_settings_statistics_title": "缓存使用情况",
|
"cache_settings_statistics_title": "缓存占用情况",
|
||||||
"cache_settings_subtitle": "控制 Immich app 的缓存行为",
|
"cache_settings_subtitle": "管理 Immich 手机端的缓存",
|
||||||
"cache_settings_tile_subtitle": "设置本地存储行为",
|
"cache_settings_tile_subtitle": "设置本地存储行为",
|
||||||
"cache_settings_tile_title": "本地存储",
|
"cache_settings_tile_title": "本地存储",
|
||||||
"cache_settings_title": "缓存设置",
|
"cache_settings_title": "缓存设置",
|
||||||
@@ -1613,7 +1613,6 @@
|
|||||||
"not_available": "不适用",
|
"not_available": "不适用",
|
||||||
"not_in_any_album": "不在任何相册中",
|
"not_in_any_album": "不在任何相册中",
|
||||||
"not_selected": "未选择",
|
"not_selected": "未选择",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "提示:要将存储标签应用于之前上传的项目,请运行此",
|
|
||||||
"notes": "提示",
|
"notes": "提示",
|
||||||
"nothing_here_yet": "这里什么都没有",
|
"nothing_here_yet": "这里什么都没有",
|
||||||
"notification_permission_dialog_content": "要启用通知,请转到“设置”,并选择“允许”。",
|
"notification_permission_dialog_content": "要启用通知,请转到“设置”,并选择“允许”。",
|
||||||
@@ -1815,7 +1814,7 @@
|
|||||||
"reassigned_assets_to_new_person": "重新指派{count, plural, one {#个项目} other {#个项目}}到新的人物",
|
"reassigned_assets_to_new_person": "重新指派{count, plural, one {#个项目} other {#个项目}}到新的人物",
|
||||||
"reassing_hint": "指派选择的项目到已存在的人物",
|
"reassing_hint": "指派选择的项目到已存在的人物",
|
||||||
"recent": "最近",
|
"recent": "最近",
|
||||||
"recent-albums": "最近的相册",
|
"recent_albums": "最近的相册",
|
||||||
"recent_searches": "最近搜索",
|
"recent_searches": "最近搜索",
|
||||||
"recently_added": "近期添加",
|
"recently_added": "近期添加",
|
||||||
"recently_added_page_title": "最近添加",
|
"recently_added_page_title": "最近添加",
|
||||||
+604
-597
File diff suppressed because it is too large
Load Diff
@@ -1,8 +1,8 @@
|
|||||||
ARG DEVICE=cpu
|
ARG DEVICE=cpu
|
||||||
|
|
||||||
FROM python:3.11-bookworm@sha256:667cf70698924920f29ebdb8d749ab665811503b87093d4f11826d114fd7255e AS builder-cpu
|
FROM python:3.11-bookworm@sha256:aa23850b91cb4c7faedac8ca9aa74ddc6eb03529a519145a589a7f35df4c5927 AS builder-cpu
|
||||||
|
|
||||||
FROM python:3.13-slim-trixie@sha256:0222b795db95bf7412cede36ab46a266cfb31f632e64051aac9806dabf840a61 AS builder-openvino
|
FROM python:3.13-slim-trixie@sha256:3de9a8d7aedbb7984dc18f2dff178a7850f16c1ae7c34ba9d7ecc23d0755e35f AS builder-openvino
|
||||||
|
|
||||||
FROM builder-cpu AS builder-cuda
|
FROM builder-cpu AS builder-cuda
|
||||||
|
|
||||||
@@ -83,12 +83,12 @@ RUN if [ "$DEVICE" = "rocm" ]; then \
|
|||||||
uv pip install /opt/onnxruntime_rocm-*.whl; \
|
uv pip install /opt/onnxruntime_rocm-*.whl; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
FROM python:3.11-slim-bookworm@sha256:917ec0e42cd6af87657a768449c2f604a6b67c7ab8e10ff917b8724799f816d3 AS prod-cpu
|
FROM python:3.11-slim-bookworm@sha256:04cd27899595a99dfe77709d96f08876bf2ee99139ee2f0fe9ac948005034e5b AS prod-cpu
|
||||||
|
|
||||||
ENV LD_PRELOAD=/usr/lib/libmimalloc.so.2 \
|
ENV LD_PRELOAD=/usr/lib/libmimalloc.so.2 \
|
||||||
MACHINE_LEARNING_MODEL_ARENA=false
|
MACHINE_LEARNING_MODEL_ARENA=false
|
||||||
|
|
||||||
FROM python:3.13-slim-trixie@sha256:0222b795db95bf7412cede36ab46a266cfb31f632e64051aac9806dabf840a61 AS prod-openvino
|
FROM python:3.13-slim-trixie@sha256:3de9a8d7aedbb7984dc18f2dff178a7850f16c1ae7c34ba9d7ecc23d0755e35f AS prod-openvino
|
||||||
|
|
||||||
RUN apt-get update && \
|
RUN apt-get update && \
|
||||||
apt-get install --no-install-recommends -yqq ocl-icd-libopencl1 wget && \
|
apt-get install --no-install-recommends -yqq ocl-icd-libopencl1 wget && \
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ dependencies = [
|
|||||||
"numpy>=2.3.4",
|
"numpy>=2.3.4",
|
||||||
"opencv-python-headless>=4.7.0.72,<5.0",
|
"opencv-python-headless>=4.7.0.72,<5.0",
|
||||||
"orjson>=3.9.5",
|
"orjson>=3.9.5",
|
||||||
"pillow>=9.5.0,<11.0",
|
"pillow>=12.1.1,<12.2",
|
||||||
"pydantic>=2.0.0,<3",
|
"pydantic>=2.0.0,<3",
|
||||||
"pydantic-settings>=2.5.2,<3",
|
"pydantic-settings>=2.5.2,<3",
|
||||||
"python-multipart>=0.0.6,<1.0",
|
"python-multipart>=0.0.6,<1.0",
|
||||||
|
|||||||
Generated
+523
-416
File diff suppressed because it is too large
Load Diff
@@ -16,7 +16,7 @@ config_roots = [
|
|||||||
[tools]
|
[tools]
|
||||||
node = "24.13.0"
|
node = "24.13.0"
|
||||||
flutter = "3.35.7"
|
flutter = "3.35.7"
|
||||||
pnpm = "10.28.0"
|
pnpm = "10.28.2"
|
||||||
terragrunt = "0.98.0"
|
terragrunt = "0.98.0"
|
||||||
opentofu = "1.11.4"
|
opentofu = "1.11.4"
|
||||||
java = "21.0.2"
|
java = "21.0.2"
|
||||||
|
|||||||
@@ -117,7 +117,7 @@
|
|||||||
android:pathPrefix="/albums/" />
|
android:pathPrefix="/albums/" />
|
||||||
<data
|
<data
|
||||||
android:host="my.immich.app"
|
android:host="my.immich.app"
|
||||||
android:pathPrefix="/memories/" />
|
android:pathPrefix="/people/" />
|
||||||
<data
|
<data
|
||||||
android:host="my.immich.app"
|
android:host="my.immich.app"
|
||||||
android:path="/memory" />
|
android:path="/memory" />
|
||||||
|
|||||||
+331
-30
@@ -3,7 +3,99 @@
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
|
||||||
const _kReservedWords = ['continue'];
|
const _kReservedWords = [
|
||||||
|
'abstract',
|
||||||
|
'as',
|
||||||
|
'assert',
|
||||||
|
'async',
|
||||||
|
'await',
|
||||||
|
'break',
|
||||||
|
'case',
|
||||||
|
'catch',
|
||||||
|
'class',
|
||||||
|
'const',
|
||||||
|
'continue',
|
||||||
|
'covariant',
|
||||||
|
'default',
|
||||||
|
'deferred',
|
||||||
|
'do',
|
||||||
|
'dynamic',
|
||||||
|
'else',
|
||||||
|
'enum',
|
||||||
|
'export',
|
||||||
|
'extends',
|
||||||
|
'extension',
|
||||||
|
'external',
|
||||||
|
'factory',
|
||||||
|
'false',
|
||||||
|
'final',
|
||||||
|
'finally',
|
||||||
|
'for',
|
||||||
|
'Function',
|
||||||
|
'get',
|
||||||
|
'hide',
|
||||||
|
'if',
|
||||||
|
'implements',
|
||||||
|
'import',
|
||||||
|
'in',
|
||||||
|
'interface',
|
||||||
|
'is',
|
||||||
|
'late',
|
||||||
|
'library',
|
||||||
|
'mixin',
|
||||||
|
'new',
|
||||||
|
'null',
|
||||||
|
'on',
|
||||||
|
'operator',
|
||||||
|
'part',
|
||||||
|
'required',
|
||||||
|
'rethrow',
|
||||||
|
'return',
|
||||||
|
'sealed',
|
||||||
|
'set',
|
||||||
|
'show',
|
||||||
|
'static',
|
||||||
|
'super',
|
||||||
|
'switch',
|
||||||
|
'sync',
|
||||||
|
'this',
|
||||||
|
'throw',
|
||||||
|
'true',
|
||||||
|
'try',
|
||||||
|
'typedef',
|
||||||
|
'var',
|
||||||
|
'void',
|
||||||
|
'when',
|
||||||
|
'while',
|
||||||
|
'with',
|
||||||
|
'yield',
|
||||||
|
];
|
||||||
|
|
||||||
|
const _kIntParamNames = [
|
||||||
|
'count',
|
||||||
|
'number',
|
||||||
|
'amount',
|
||||||
|
'total',
|
||||||
|
'index',
|
||||||
|
'size',
|
||||||
|
'length',
|
||||||
|
'width',
|
||||||
|
'height',
|
||||||
|
'year',
|
||||||
|
'month',
|
||||||
|
'day',
|
||||||
|
'hour',
|
||||||
|
'minute',
|
||||||
|
'second',
|
||||||
|
'page',
|
||||||
|
'limit',
|
||||||
|
'offset',
|
||||||
|
'max',
|
||||||
|
'min',
|
||||||
|
'id',
|
||||||
|
'num',
|
||||||
|
'quantity',
|
||||||
|
];
|
||||||
|
|
||||||
void main() async {
|
void main() async {
|
||||||
final sourceFile = File('../i18n/en.json');
|
final sourceFile = File('../i18n/en.json');
|
||||||
@@ -15,49 +107,258 @@ void main() async {
|
|||||||
final outputDir = Directory('lib/generated');
|
final outputDir = Directory('lib/generated');
|
||||||
await outputDir.create(recursive: true);
|
await outputDir.create(recursive: true);
|
||||||
|
|
||||||
final outputFile = File('lib/generated/intl_keys.g.dart');
|
final content = await sourceFile.readAsString();
|
||||||
await _generate(sourceFile, outputFile);
|
final translations = json.decode(content) as Map<String, dynamic>;
|
||||||
|
|
||||||
|
final outputFile = File('lib/generated/translations.g.dart');
|
||||||
|
await _generateTranslations(translations, outputFile);
|
||||||
print('Generated ${outputFile.path}');
|
print('Generated ${outputFile.path}');
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> _generate(File source, File output) async {
|
class TranslationNode {
|
||||||
final content = await source.readAsString();
|
final String key;
|
||||||
final translations = json.decode(content) as Map<String, dynamic>;
|
final String? value;
|
||||||
|
final Map<String, TranslationNode> children;
|
||||||
|
final List<TranslationParam> params;
|
||||||
|
|
||||||
|
const TranslationNode({
|
||||||
|
required this.key,
|
||||||
|
this.value,
|
||||||
|
Map<String, TranslationNode>? children,
|
||||||
|
List<TranslationParam>? params,
|
||||||
|
}) : children = children ?? const {},
|
||||||
|
params = params ?? const [];
|
||||||
|
|
||||||
|
bool get isLeaf => value != null;
|
||||||
|
bool get hasParams => params.isNotEmpty;
|
||||||
|
}
|
||||||
|
|
||||||
|
class TranslationParam {
|
||||||
|
final String name;
|
||||||
|
final String type;
|
||||||
|
|
||||||
|
const TranslationParam(this.name, this.type);
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> _generateTranslations(Map<String, dynamic> translations, File output) async {
|
||||||
|
final root = _buildTranslationTree('', translations);
|
||||||
|
|
||||||
final buffer = StringBuffer('''
|
final buffer = StringBuffer('''
|
||||||
// DO NOT EDIT. This is code generated via generate_keys.dart
|
// DO NOT EDIT. This is code generated via generate_keys.dart
|
||||||
|
|
||||||
abstract class IntlKeys {
|
import 'package:easy_localization/easy_localization.dart';
|
||||||
''');
|
import 'package:flutter/widgets.dart';
|
||||||
|
import 'package:intl/message_format.dart';
|
||||||
|
|
||||||
_writeKeys(buffer, translations);
|
extension TranslationsExtension on BuildContext {
|
||||||
buffer.writeln('}');
|
Translations get t => Translations.of(this);
|
||||||
|
|
||||||
await output.writeAsString(buffer.toString());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void _writeKeys(
|
class StaticTranslations {
|
||||||
StringBuffer buffer,
|
StaticTranslations._();
|
||||||
Map<String, dynamic> map, [
|
static final instance = Translations._(null);
|
||||||
String prefix = '',
|
}
|
||||||
]) {
|
|
||||||
for (final entry in map.entries) {
|
|
||||||
final key = entry.key;
|
|
||||||
final value = entry.value;
|
|
||||||
|
|
||||||
if (value is Map<String, dynamic>) {
|
abstract class _BaseTranslations {
|
||||||
_writeKeys(buffer, value, prefix.isEmpty ? key : '${prefix}_$key');
|
BuildContext? get _context;
|
||||||
} else {
|
|
||||||
final name = _cleanName(prefix.isEmpty ? key : '${prefix}_$key');
|
String _t(String key, [Map<String, Object>? args]) {
|
||||||
final path = prefix.isEmpty ? key : '$prefix.$key'.replaceAll('_', '.');
|
if (key.isEmpty) return '';
|
||||||
buffer.writeln(' static const $name = \'$path\';');
|
try {
|
||||||
|
final translated = key.tr(context: _context);
|
||||||
|
return args != null
|
||||||
|
? MessageFormat(translated, locale: Intl.defaultLocale ?? 'en').format(args)
|
||||||
|
: translated;
|
||||||
|
} catch (e) {
|
||||||
|
return key;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
String _cleanName(String name) {
|
class Translations extends _BaseTranslations {
|
||||||
name = name.replaceAll(RegExp(r'[^a-zA-Z0-9_]'), '_');
|
@override
|
||||||
if (RegExp(r'^[0-9]').hasMatch(name)) name = 'k_$name';
|
final BuildContext? _context;
|
||||||
if (_kReservedWords.contains(name)) name = '${name}_';
|
Translations._(this._context);
|
||||||
|
|
||||||
|
static Translations of(BuildContext context) {
|
||||||
|
context.locale;
|
||||||
|
return Translations._(context);
|
||||||
|
}
|
||||||
|
|
||||||
|
''');
|
||||||
|
|
||||||
|
_generateClassMembers(buffer, root, ' ');
|
||||||
|
buffer.writeln('}');
|
||||||
|
_generateNestedClasses(buffer, root);
|
||||||
|
|
||||||
|
await output.writeAsString(buffer.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
TranslationNode _buildTranslationTree(String key, dynamic value) {
|
||||||
|
if (value is Map<String, dynamic>) {
|
||||||
|
final children = <String, TranslationNode>{};
|
||||||
|
for (final entry in value.entries) {
|
||||||
|
children[entry.key] = _buildTranslationTree(entry.key, entry.value);
|
||||||
|
}
|
||||||
|
return TranslationNode(key: key, children: children);
|
||||||
|
} else {
|
||||||
|
final stringValue = value.toString();
|
||||||
|
final params = _extractParams(stringValue);
|
||||||
|
return TranslationNode(key: key, value: stringValue, params: params);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
List<TranslationParam> _extractParams(String value) {
|
||||||
|
final params = <String, TranslationParam>{};
|
||||||
|
|
||||||
|
final icuRegex = RegExp(r'\{(\w+),\s*(plural|select|number|date|time)([^}]*(?:\{[^}]*\}[^}]*)*)\}');
|
||||||
|
for (final match in icuRegex.allMatches(value)) {
|
||||||
|
final name = match.group(1)!;
|
||||||
|
final icuType = match.group(2)!;
|
||||||
|
final icuContent = match.group(3) ?? '';
|
||||||
|
|
||||||
|
if (params.containsKey(name)) continue;
|
||||||
|
|
||||||
|
String type;
|
||||||
|
if (icuType == 'plural' || icuType == 'number') {
|
||||||
|
type = 'int';
|
||||||
|
} else if (icuType == 'select') {
|
||||||
|
final hasTrueFalse = RegExp(r',\s*(true|false)\s*\{').hasMatch(icuContent);
|
||||||
|
type = hasTrueFalse ? 'bool' : 'String';
|
||||||
|
} else {
|
||||||
|
type = 'String';
|
||||||
|
}
|
||||||
|
|
||||||
|
params[name] = TranslationParam(name, type);
|
||||||
|
}
|
||||||
|
|
||||||
|
var cleanedValue = value;
|
||||||
|
var depth = 0;
|
||||||
|
var icuStart = -1;
|
||||||
|
|
||||||
|
for (var i = 0; i < value.length; i++) {
|
||||||
|
if (value[i] == '{') {
|
||||||
|
if (depth == 0) icuStart = i;
|
||||||
|
depth++;
|
||||||
|
} else if (value[i] == '}') {
|
||||||
|
depth--;
|
||||||
|
if (depth == 0 && icuStart >= 0) {
|
||||||
|
final block = value.substring(icuStart, i + 1);
|
||||||
|
if (RegExp(r'^\{\w+,').hasMatch(block)) {
|
||||||
|
cleanedValue = cleanedValue.replaceFirst(block, '');
|
||||||
|
}
|
||||||
|
icuStart = -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
final simpleRegex = RegExp(r'\{(\w+)\}');
|
||||||
|
for (final match in simpleRegex.allMatches(cleanedValue)) {
|
||||||
|
final name = match.group(1)!;
|
||||||
|
|
||||||
|
if (params.containsKey(name)) continue;
|
||||||
|
|
||||||
|
String type;
|
||||||
|
if (_kIntParamNames.contains(name.toLowerCase())) {
|
||||||
|
type = 'int';
|
||||||
|
} else {
|
||||||
|
type = 'Object';
|
||||||
|
}
|
||||||
|
|
||||||
|
params[name] = TranslationParam(name, type);
|
||||||
|
}
|
||||||
|
|
||||||
|
return params.values.toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
void _generateClassMembers(StringBuffer buffer, TranslationNode node, String indent, [String keyPrefix = '']) {
|
||||||
|
final sortedKeys = node.children.keys.toList()..sort();
|
||||||
|
|
||||||
|
for (final childKey in sortedKeys) {
|
||||||
|
final child = node.children[childKey]!;
|
||||||
|
final dartName = _escapeName(childKey);
|
||||||
|
final fullKey = keyPrefix.isEmpty ? childKey : '$keyPrefix.$childKey';
|
||||||
|
|
||||||
|
if (child.isLeaf) {
|
||||||
|
if (child.hasParams) {
|
||||||
|
_generateMethod(buffer, dartName, fullKey, child.params, indent);
|
||||||
|
} else {
|
||||||
|
_generateGetter(buffer, dartName, fullKey, indent);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
final className = _toNestedClassName(keyPrefix, childKey);
|
||||||
|
buffer.writeln('${indent}late final $dartName = $className._(_context);');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void _generateGetter(StringBuffer buffer, String dartName, String translationKey, String indent) {
|
||||||
|
buffer.writeln('${indent}String get $dartName => _t(\'$translationKey\');');
|
||||||
|
}
|
||||||
|
|
||||||
|
void _generateMethod(
|
||||||
|
StringBuffer buffer,
|
||||||
|
String dartName,
|
||||||
|
String translationKey,
|
||||||
|
List<TranslationParam> params,
|
||||||
|
String indent,
|
||||||
|
) {
|
||||||
|
final paramList = params.map((p) => 'required ${p.type} ${_escapeName(p.name)}').join(', ');
|
||||||
|
final argsMap = params.map((p) => '\'${p.name}\': ${_escapeName(p.name)}').join(', ');
|
||||||
|
buffer.writeln('${indent}String $dartName({$paramList}) => _t(\'$translationKey\', {$argsMap});');
|
||||||
|
}
|
||||||
|
|
||||||
|
void _generateNestedClasses(StringBuffer buffer, TranslationNode node, [String keyPrefix = '']) {
|
||||||
|
final sortedKeys = node.children.keys.toList()..sort();
|
||||||
|
|
||||||
|
for (final childKey in sortedKeys) {
|
||||||
|
final child = node.children[childKey]!;
|
||||||
|
final fullKey = keyPrefix.isEmpty ? childKey : '$keyPrefix.$childKey';
|
||||||
|
|
||||||
|
if (!child.isLeaf && child.children.isNotEmpty) {
|
||||||
|
final className = _toNestedClassName(keyPrefix, childKey);
|
||||||
|
buffer.writeln();
|
||||||
|
buffer.writeln('class $className extends _BaseTranslations {');
|
||||||
|
buffer.writeln(' @override');
|
||||||
|
buffer.writeln(' final BuildContext? _context;');
|
||||||
|
buffer.writeln(' $className._(this._context);');
|
||||||
|
_generateClassMembers(buffer, child, ' ', fullKey);
|
||||||
|
buffer.writeln('}');
|
||||||
|
_generateNestedClasses(buffer, child, fullKey);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
String _toNestedClassName(String prefix, String key) {
|
||||||
|
final parts = <String>[];
|
||||||
|
if (prefix.isNotEmpty) {
|
||||||
|
parts.addAll(prefix.split('.'));
|
||||||
|
}
|
||||||
|
parts.add(key);
|
||||||
|
|
||||||
|
final result = StringBuffer('_');
|
||||||
|
for (final part in parts) {
|
||||||
|
final words = part.split('_');
|
||||||
|
for (final word in words) {
|
||||||
|
if (word.isNotEmpty) {
|
||||||
|
result.write(word[0].toUpperCase());
|
||||||
|
if (word.length > 1) {
|
||||||
|
result.write(word.substring(1).toLowerCase());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
result.write('Translations');
|
||||||
|
|
||||||
|
return result.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
String _escapeName(String name) {
|
||||||
|
if (_kReservedWords.contains(name)) {
|
||||||
|
return '$name\$';
|
||||||
|
}
|
||||||
|
if (RegExp(r'^[0-9]').hasMatch(name)) {
|
||||||
|
return 'k$name';
|
||||||
|
}
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|||||||
+1
File diff suppressed because one or more lines are too long
@@ -10,6 +10,10 @@ class DriftPeopleService {
|
|||||||
|
|
||||||
const DriftPeopleService(this._repository, this._personApiRepository);
|
const DriftPeopleService(this._repository, this._personApiRepository);
|
||||||
|
|
||||||
|
Future<DriftPerson?> get(String personId) {
|
||||||
|
return _repository.get(personId);
|
||||||
|
}
|
||||||
|
|
||||||
Future<List<DriftPerson>> getAssetPeople(String assetId) {
|
Future<List<DriftPerson>> getAssetPeople(String assetId) {
|
||||||
return _repository.getAssetPeople(assetId);
|
return _repository.getAssetPeople(assetId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,8 @@ import 'package:immich_mobile/infrastructure/entities/person.entity.dart';
|
|||||||
import 'package:immich_mobile/infrastructure/entities/remote_asset.entity.dart';
|
import 'package:immich_mobile/infrastructure/entities/remote_asset.entity.dart';
|
||||||
import 'package:immich_mobile/infrastructure/utils/drift_default.mixin.dart';
|
import 'package:immich_mobile/infrastructure/utils/drift_default.mixin.dart';
|
||||||
|
|
||||||
|
@TableIndex.sql('CREATE INDEX IF NOT EXISTS idx_asset_face_person_id ON asset_face_entity (person_id)')
|
||||||
|
@TableIndex.sql('CREATE INDEX IF NOT EXISTS idx_asset_face_asset_id ON asset_face_entity (asset_id)')
|
||||||
class AssetFaceEntity extends Table with DriftDefaultsMixin {
|
class AssetFaceEntity extends Table with DriftDefaultsMixin {
|
||||||
const AssetFaceEntity();
|
const AssetFaceEntity();
|
||||||
|
|
||||||
|
|||||||
@@ -588,6 +588,10 @@ typedef $$AssetFaceEntityTableProcessedTableManager =
|
|||||||
i1.AssetFaceEntityData,
|
i1.AssetFaceEntityData,
|
||||||
i0.PrefetchHooks Function({bool assetId, bool personId})
|
i0.PrefetchHooks Function({bool assetId, bool personId})
|
||||||
>;
|
>;
|
||||||
|
i0.Index get idxAssetFacePersonId => i0.Index(
|
||||||
|
'idx_asset_face_person_id',
|
||||||
|
'CREATE INDEX IF NOT EXISTS idx_asset_face_person_id ON asset_face_entity (person_id)',
|
||||||
|
);
|
||||||
|
|
||||||
class $AssetFaceEntityTable extends i2.AssetFaceEntity
|
class $AssetFaceEntityTable extends i2.AssetFaceEntity
|
||||||
with i0.TableInfo<$AssetFaceEntityTable, i1.AssetFaceEntityData> {
|
with i0.TableInfo<$AssetFaceEntityTable, i1.AssetFaceEntityData> {
|
||||||
@@ -1207,3 +1211,8 @@ class AssetFaceEntityCompanion
|
|||||||
.toString();
|
.toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
i0.Index get idxAssetFaceAssetId => i0.Index(
|
||||||
|
'idx_asset_face_asset_id',
|
||||||
|
'CREATE INDEX IF NOT EXISTS idx_asset_face_asset_id ON asset_face_entity (asset_id)',
|
||||||
|
);
|
||||||
|
|||||||
@@ -3,6 +3,9 @@ import 'package:immich_mobile/infrastructure/entities/local_album.entity.dart';
|
|||||||
import 'package:immich_mobile/infrastructure/entities/local_asset.entity.dart';
|
import 'package:immich_mobile/infrastructure/entities/local_asset.entity.dart';
|
||||||
import 'package:immich_mobile/infrastructure/utils/drift_default.mixin.dart';
|
import 'package:immich_mobile/infrastructure/utils/drift_default.mixin.dart';
|
||||||
|
|
||||||
|
@TableIndex.sql(
|
||||||
|
'CREATE INDEX IF NOT EXISTS idx_local_album_asset_album_asset ON local_album_asset_entity (album_id, asset_id)',
|
||||||
|
)
|
||||||
class LocalAlbumAssetEntity extends Table with DriftDefaultsMixin {
|
class LocalAlbumAssetEntity extends Table with DriftDefaultsMixin {
|
||||||
const LocalAlbumAssetEntity();
|
const LocalAlbumAssetEntity();
|
||||||
|
|
||||||
|
|||||||
@@ -459,6 +459,10 @@ typedef $$LocalAlbumAssetEntityTableProcessedTableManager =
|
|||||||
i1.LocalAlbumAssetEntityData,
|
i1.LocalAlbumAssetEntityData,
|
||||||
i0.PrefetchHooks Function({bool assetId, bool albumId})
|
i0.PrefetchHooks Function({bool assetId, bool albumId})
|
||||||
>;
|
>;
|
||||||
|
i0.Index get idxLocalAlbumAssetAlbumAsset => i0.Index(
|
||||||
|
'idx_local_album_asset_album_asset',
|
||||||
|
'CREATE INDEX IF NOT EXISTS idx_local_album_asset_album_asset ON local_album_asset_entity (album_id, asset_id)',
|
||||||
|
);
|
||||||
|
|
||||||
class $LocalAlbumAssetEntityTable extends i2.LocalAlbumAssetEntity
|
class $LocalAlbumAssetEntityTable extends i2.LocalAlbumAssetEntity
|
||||||
with
|
with
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import 'package:drift/drift.dart';
|
|||||||
import 'package:immich_mobile/infrastructure/entities/user.entity.dart';
|
import 'package:immich_mobile/infrastructure/entities/user.entity.dart';
|
||||||
import 'package:immich_mobile/infrastructure/utils/drift_default.mixin.dart';
|
import 'package:immich_mobile/infrastructure/utils/drift_default.mixin.dart';
|
||||||
|
|
||||||
|
@TableIndex.sql('CREATE INDEX IF NOT EXISTS idx_partner_shared_with_id ON partner_entity (shared_with_id)')
|
||||||
class PartnerEntity extends Table with DriftDefaultsMixin {
|
class PartnerEntity extends Table with DriftDefaultsMixin {
|
||||||
const PartnerEntity();
|
const PartnerEntity();
|
||||||
|
|
||||||
|
|||||||
@@ -440,6 +440,10 @@ typedef $$PartnerEntityTableProcessedTableManager =
|
|||||||
i1.PartnerEntityData,
|
i1.PartnerEntityData,
|
||||||
i0.PrefetchHooks Function({bool sharedById, bool sharedWithId})
|
i0.PrefetchHooks Function({bool sharedById, bool sharedWithId})
|
||||||
>;
|
>;
|
||||||
|
i0.Index get idxPartnerSharedWithId => i0.Index(
|
||||||
|
'idx_partner_shared_with_id',
|
||||||
|
'CREATE INDEX IF NOT EXISTS idx_partner_shared_with_id ON partner_entity (shared_with_id)',
|
||||||
|
);
|
||||||
|
|
||||||
class $PartnerEntityTable extends i2.PartnerEntity
|
class $PartnerEntityTable extends i2.PartnerEntity
|
||||||
with i0.TableInfo<$PartnerEntityTable, i1.PartnerEntityData> {
|
with i0.TableInfo<$PartnerEntityTable, i1.PartnerEntityData> {
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import 'package:drift/drift.dart';
|
|||||||
import 'package:immich_mobile/infrastructure/entities/user.entity.dart';
|
import 'package:immich_mobile/infrastructure/entities/user.entity.dart';
|
||||||
import 'package:immich_mobile/infrastructure/utils/drift_default.mixin.dart';
|
import 'package:immich_mobile/infrastructure/utils/drift_default.mixin.dart';
|
||||||
|
|
||||||
|
@TableIndex.sql('CREATE INDEX IF NOT EXISTS idx_person_owner_id ON person_entity (owner_id)')
|
||||||
class PersonEntity extends Table with DriftDefaultsMixin {
|
class PersonEntity extends Table with DriftDefaultsMixin {
|
||||||
const PersonEntity();
|
const PersonEntity();
|
||||||
|
|
||||||
|
|||||||
@@ -455,6 +455,10 @@ typedef $$PersonEntityTableProcessedTableManager =
|
|||||||
i1.PersonEntityData,
|
i1.PersonEntityData,
|
||||||
i0.PrefetchHooks Function({bool ownerId})
|
i0.PrefetchHooks Function({bool ownerId})
|
||||||
>;
|
>;
|
||||||
|
i0.Index get idxPersonOwnerId => i0.Index(
|
||||||
|
'idx_person_owner_id',
|
||||||
|
'CREATE INDEX IF NOT EXISTS idx_person_owner_id ON person_entity (owner_id)',
|
||||||
|
);
|
||||||
|
|
||||||
class $PersonEntityTable extends i2.PersonEntity
|
class $PersonEntityTable extends i2.PersonEntity
|
||||||
with i0.TableInfo<$PersonEntityTable, i1.PersonEntityData> {
|
with i0.TableInfo<$PersonEntityTable, i1.PersonEntityData> {
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import 'package:immich_mobile/infrastructure/entities/remote_asset.entity.dart';
|
|||||||
import 'package:immich_mobile/infrastructure/entities/user.entity.dart';
|
import 'package:immich_mobile/infrastructure/entities/user.entity.dart';
|
||||||
import 'package:immich_mobile/infrastructure/utils/drift_default.mixin.dart';
|
import 'package:immich_mobile/infrastructure/utils/drift_default.mixin.dart';
|
||||||
|
|
||||||
|
@TableIndex.sql('CREATE INDEX IF NOT EXISTS idx_remote_album_owner_id ON remote_album_entity (owner_id)')
|
||||||
class RemoteAlbumEntity extends Table with DriftDefaultsMixin {
|
class RemoteAlbumEntity extends Table with DriftDefaultsMixin {
|
||||||
const RemoteAlbumEntity();
|
const RemoteAlbumEntity();
|
||||||
|
|
||||||
|
|||||||
@@ -566,6 +566,10 @@ typedef $$RemoteAlbumEntityTableProcessedTableManager =
|
|||||||
i1.RemoteAlbumEntityData,
|
i1.RemoteAlbumEntityData,
|
||||||
i0.PrefetchHooks Function({bool ownerId, bool thumbnailAssetId})
|
i0.PrefetchHooks Function({bool ownerId, bool thumbnailAssetId})
|
||||||
>;
|
>;
|
||||||
|
i0.Index get idxRemoteAlbumOwnerId => i0.Index(
|
||||||
|
'idx_remote_album_owner_id',
|
||||||
|
'CREATE INDEX IF NOT EXISTS idx_remote_album_owner_id ON remote_album_entity (owner_id)',
|
||||||
|
);
|
||||||
|
|
||||||
class $RemoteAlbumEntityTable extends i3.RemoteAlbumEntity
|
class $RemoteAlbumEntityTable extends i3.RemoteAlbumEntity
|
||||||
with i0.TableInfo<$RemoteAlbumEntityTable, i1.RemoteAlbumEntityData> {
|
with i0.TableInfo<$RemoteAlbumEntityTable, i1.RemoteAlbumEntityData> {
|
||||||
|
|||||||
@@ -3,6 +3,9 @@ import 'package:immich_mobile/infrastructure/entities/remote_album.entity.dart';
|
|||||||
import 'package:immich_mobile/infrastructure/entities/remote_asset.entity.dart';
|
import 'package:immich_mobile/infrastructure/entities/remote_asset.entity.dart';
|
||||||
import 'package:immich_mobile/infrastructure/utils/drift_default.mixin.dart';
|
import 'package:immich_mobile/infrastructure/utils/drift_default.mixin.dart';
|
||||||
|
|
||||||
|
@TableIndex.sql(
|
||||||
|
'CREATE INDEX IF NOT EXISTS idx_remote_album_asset_album_asset ON remote_album_asset_entity (album_id, asset_id)',
|
||||||
|
)
|
||||||
class RemoteAlbumAssetEntity extends Table with DriftDefaultsMixin {
|
class RemoteAlbumAssetEntity extends Table with DriftDefaultsMixin {
|
||||||
const RemoteAlbumAssetEntity();
|
const RemoteAlbumAssetEntity();
|
||||||
|
|
||||||
|
|||||||
@@ -441,6 +441,10 @@ typedef $$RemoteAlbumAssetEntityTableProcessedTableManager =
|
|||||||
i1.RemoteAlbumAssetEntityData,
|
i1.RemoteAlbumAssetEntityData,
|
||||||
i0.PrefetchHooks Function({bool assetId, bool albumId})
|
i0.PrefetchHooks Function({bool assetId, bool albumId})
|
||||||
>;
|
>;
|
||||||
|
i0.Index get idxRemoteAlbumAssetAlbumAsset => i0.Index(
|
||||||
|
'idx_remote_album_asset_album_asset',
|
||||||
|
'CREATE INDEX IF NOT EXISTS idx_remote_album_asset_album_asset ON remote_album_asset_entity (album_id, asset_id)',
|
||||||
|
);
|
||||||
|
|
||||||
class $RemoteAlbumAssetEntityTable extends i2.RemoteAlbumAssetEntity
|
class $RemoteAlbumAssetEntityTable extends i2.RemoteAlbumAssetEntity
|
||||||
with
|
with
|
||||||
|
|||||||
@@ -19,6 +19,13 @@ ON remote_asset_entity (owner_id, library_id, checksum)
|
|||||||
WHERE (library_id IS NOT NULL);
|
WHERE (library_id IS NOT NULL);
|
||||||
''')
|
''')
|
||||||
@TableIndex.sql('CREATE INDEX IF NOT EXISTS idx_remote_asset_checksum ON remote_asset_entity (checksum)')
|
@TableIndex.sql('CREATE INDEX IF NOT EXISTS idx_remote_asset_checksum ON remote_asset_entity (checksum)')
|
||||||
|
@TableIndex.sql('CREATE INDEX IF NOT EXISTS idx_remote_asset_stack_id ON remote_asset_entity (stack_id)')
|
||||||
|
@TableIndex.sql(
|
||||||
|
"CREATE INDEX IF NOT EXISTS idx_remote_asset_local_date_time_day ON remote_asset_entity (STRFTIME('%Y-%m-%d', local_date_time))",
|
||||||
|
)
|
||||||
|
@TableIndex.sql(
|
||||||
|
"CREATE INDEX IF NOT EXISTS idx_remote_asset_local_date_time_month ON remote_asset_entity (STRFTIME('%Y-%m', local_date_time))",
|
||||||
|
)
|
||||||
class RemoteAssetEntity extends Table with DriftDefaultsMixin, AssetEntityMixin {
|
class RemoteAssetEntity extends Table with DriftDefaultsMixin, AssetEntityMixin {
|
||||||
const RemoteAssetEntity();
|
const RemoteAssetEntity();
|
||||||
|
|
||||||
|
|||||||
@@ -1710,3 +1710,15 @@ i0.Index get idxRemoteAssetChecksum => i0.Index(
|
|||||||
'idx_remote_asset_checksum',
|
'idx_remote_asset_checksum',
|
||||||
'CREATE INDEX IF NOT EXISTS idx_remote_asset_checksum ON remote_asset_entity (checksum)',
|
'CREATE INDEX IF NOT EXISTS idx_remote_asset_checksum ON remote_asset_entity (checksum)',
|
||||||
);
|
);
|
||||||
|
i0.Index get idxRemoteAssetStackId => i0.Index(
|
||||||
|
'idx_remote_asset_stack_id',
|
||||||
|
'CREATE INDEX IF NOT EXISTS idx_remote_asset_stack_id ON remote_asset_entity (stack_id)',
|
||||||
|
);
|
||||||
|
i0.Index get idxRemoteAssetLocalDateTimeDay => i0.Index(
|
||||||
|
'idx_remote_asset_local_date_time_day',
|
||||||
|
'CREATE INDEX IF NOT EXISTS idx_remote_asset_local_date_time_day ON remote_asset_entity (STRFTIME(\'%Y-%m-%d\', local_date_time))',
|
||||||
|
);
|
||||||
|
i0.Index get idxRemoteAssetLocalDateTimeMonth => i0.Index(
|
||||||
|
'idx_remote_asset_local_date_time_month',
|
||||||
|
'CREATE INDEX IF NOT EXISTS idx_remote_asset_local_date_time_month ON remote_asset_entity (STRFTIME(\'%Y-%m\', local_date_time))',
|
||||||
|
);
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import 'package:drift/drift.dart';
|
|||||||
import 'package:immich_mobile/infrastructure/entities/user.entity.dart';
|
import 'package:immich_mobile/infrastructure/entities/user.entity.dart';
|
||||||
import 'package:immich_mobile/infrastructure/utils/drift_default.mixin.dart';
|
import 'package:immich_mobile/infrastructure/utils/drift_default.mixin.dart';
|
||||||
|
|
||||||
|
@TableIndex.sql('CREATE INDEX IF NOT EXISTS idx_stack_primary_asset_id ON stack_entity (primary_asset_id)')
|
||||||
class StackEntity extends Table with DriftDefaultsMixin {
|
class StackEntity extends Table with DriftDefaultsMixin {
|
||||||
const StackEntity();
|
const StackEntity();
|
||||||
|
|
||||||
|
|||||||
@@ -357,6 +357,10 @@ typedef $$StackEntityTableProcessedTableManager =
|
|||||||
i1.StackEntityData,
|
i1.StackEntityData,
|
||||||
i0.PrefetchHooks Function({bool ownerId})
|
i0.PrefetchHooks Function({bool ownerId})
|
||||||
>;
|
>;
|
||||||
|
i0.Index get idxStackPrimaryAssetId => i0.Index(
|
||||||
|
'idx_stack_primary_asset_id',
|
||||||
|
'CREATE INDEX IF NOT EXISTS idx_stack_primary_asset_id ON stack_entity (primary_asset_id)',
|
||||||
|
);
|
||||||
|
|
||||||
class $StackEntityTable extends i2.StackEntity
|
class $StackEntityTable extends i2.StackEntity
|
||||||
with i0.TableInfo<$StackEntityTable, i1.StackEntityData> {
|
with i0.TableInfo<$StackEntityTable, i1.StackEntityData> {
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ class Drift extends $Drift implements IDatabaseRepository {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
int get schemaVersion => 18;
|
int get schemaVersion => 19;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
MigrationStrategy get migration => MigrationStrategy(
|
MigrationStrategy get migration => MigrationStrategy(
|
||||||
@@ -213,6 +213,19 @@ class Drift extends $Drift implements IDatabaseRepository {
|
|||||||
from17To18: (m, v18) async {
|
from17To18: (m, v18) async {
|
||||||
await m.createIndex(v18.idxRemoteAssetCloudId);
|
await m.createIndex(v18.idxRemoteAssetCloudId);
|
||||||
},
|
},
|
||||||
|
from18To19: (m, v19) async {
|
||||||
|
await m.createIndex(v19.idxAssetFacePersonId);
|
||||||
|
await m.createIndex(v19.idxAssetFaceAssetId);
|
||||||
|
await m.createIndex(v19.idxLocalAlbumAssetAlbumAsset);
|
||||||
|
await m.createIndex(v19.idxPartnerSharedWithId);
|
||||||
|
await m.createIndex(v19.idxPersonOwnerId);
|
||||||
|
await m.createIndex(v19.idxRemoteAlbumOwnerId);
|
||||||
|
await m.createIndex(v19.idxRemoteAlbumAssetAlbumAsset);
|
||||||
|
await m.createIndex(v19.idxRemoteAssetStackId);
|
||||||
|
await m.createIndex(v19.idxRemoteAssetLocalDateTimeDay);
|
||||||
|
await m.createIndex(v19.idxRemoteAssetLocalDateTimeMonth);
|
||||||
|
await m.createIndex(v19.idxStackPrimaryAssetId);
|
||||||
|
},
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -100,12 +100,18 @@ abstract class $Drift extends i0.GeneratedDatabase {
|
|||||||
remoteAlbumEntity,
|
remoteAlbumEntity,
|
||||||
localAlbumEntity,
|
localAlbumEntity,
|
||||||
localAlbumAssetEntity,
|
localAlbumAssetEntity,
|
||||||
|
i7.idxLocalAlbumAssetAlbumAsset,
|
||||||
|
i5.idxRemoteAlbumOwnerId,
|
||||||
i4.idxLocalAssetChecksum,
|
i4.idxLocalAssetChecksum,
|
||||||
i4.idxLocalAssetCloudId,
|
i4.idxLocalAssetCloudId,
|
||||||
|
i3.idxStackPrimaryAssetId,
|
||||||
i2.idxRemoteAssetOwnerChecksum,
|
i2.idxRemoteAssetOwnerChecksum,
|
||||||
i2.uQRemoteAssetsOwnerChecksum,
|
i2.uQRemoteAssetsOwnerChecksum,
|
||||||
i2.uQRemoteAssetsOwnerLibraryChecksum,
|
i2.uQRemoteAssetsOwnerLibraryChecksum,
|
||||||
i2.idxRemoteAssetChecksum,
|
i2.idxRemoteAssetChecksum,
|
||||||
|
i2.idxRemoteAssetStackId,
|
||||||
|
i2.idxRemoteAssetLocalDateTimeDay,
|
||||||
|
i2.idxRemoteAssetLocalDateTimeMonth,
|
||||||
authUserEntity,
|
authUserEntity,
|
||||||
userMetadataEntity,
|
userMetadataEntity,
|
||||||
partnerEntity,
|
partnerEntity,
|
||||||
@@ -119,8 +125,13 @@ abstract class $Drift extends i0.GeneratedDatabase {
|
|||||||
assetFaceEntity,
|
assetFaceEntity,
|
||||||
storeEntity,
|
storeEntity,
|
||||||
trashedLocalAssetEntity,
|
trashedLocalAssetEntity,
|
||||||
|
i10.idxPartnerSharedWithId,
|
||||||
i11.idxLatLng,
|
i11.idxLatLng,
|
||||||
|
i12.idxRemoteAlbumAssetAlbumAsset,
|
||||||
i14.idxRemoteAssetCloudId,
|
i14.idxRemoteAssetCloudId,
|
||||||
|
i17.idxPersonOwnerId,
|
||||||
|
i18.idxAssetFacePersonId,
|
||||||
|
i18.idxAssetFaceAssetId,
|
||||||
i20.idxTrashedLocalAssetChecksum,
|
i20.idxTrashedLocalAssetChecksum,
|
||||||
i20.idxTrashedLocalAssetAlbum,
|
i20.idxTrashedLocalAssetAlbum,
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -7857,6 +7857,509 @@ final class Schema18 extends i0.VersionedSchema {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final class Schema19 extends i0.VersionedSchema {
|
||||||
|
Schema19({required super.database}) : super(version: 19);
|
||||||
|
@override
|
||||||
|
late final List<i1.DatabaseSchemaEntity> entities = [
|
||||||
|
userEntity,
|
||||||
|
remoteAssetEntity,
|
||||||
|
stackEntity,
|
||||||
|
localAssetEntity,
|
||||||
|
remoteAlbumEntity,
|
||||||
|
localAlbumEntity,
|
||||||
|
localAlbumAssetEntity,
|
||||||
|
idxLocalAlbumAssetAlbumAsset,
|
||||||
|
idxRemoteAlbumOwnerId,
|
||||||
|
idxLocalAssetChecksum,
|
||||||
|
idxLocalAssetCloudId,
|
||||||
|
idxStackPrimaryAssetId,
|
||||||
|
idxRemoteAssetOwnerChecksum,
|
||||||
|
uQRemoteAssetsOwnerChecksum,
|
||||||
|
uQRemoteAssetsOwnerLibraryChecksum,
|
||||||
|
idxRemoteAssetChecksum,
|
||||||
|
idxRemoteAssetStackId,
|
||||||
|
idxRemoteAssetLocalDateTimeDay,
|
||||||
|
idxRemoteAssetLocalDateTimeMonth,
|
||||||
|
authUserEntity,
|
||||||
|
userMetadataEntity,
|
||||||
|
partnerEntity,
|
||||||
|
remoteExifEntity,
|
||||||
|
remoteAlbumAssetEntity,
|
||||||
|
remoteAlbumUserEntity,
|
||||||
|
remoteAssetCloudIdEntity,
|
||||||
|
memoryEntity,
|
||||||
|
memoryAssetEntity,
|
||||||
|
personEntity,
|
||||||
|
assetFaceEntity,
|
||||||
|
storeEntity,
|
||||||
|
trashedLocalAssetEntity,
|
||||||
|
idxPartnerSharedWithId,
|
||||||
|
idxLatLng,
|
||||||
|
idxRemoteAlbumAssetAlbumAsset,
|
||||||
|
idxRemoteAssetCloudId,
|
||||||
|
idxPersonOwnerId,
|
||||||
|
idxAssetFacePersonId,
|
||||||
|
idxAssetFaceAssetId,
|
||||||
|
idxTrashedLocalAssetChecksum,
|
||||||
|
idxTrashedLocalAssetAlbum,
|
||||||
|
];
|
||||||
|
late final Shape20 userEntity = Shape20(
|
||||||
|
source: i0.VersionedTable(
|
||||||
|
entityName: 'user_entity',
|
||||||
|
withoutRowId: true,
|
||||||
|
isStrict: true,
|
||||||
|
tableConstraints: ['PRIMARY KEY(id)'],
|
||||||
|
columns: [
|
||||||
|
_column_0,
|
||||||
|
_column_1,
|
||||||
|
_column_3,
|
||||||
|
_column_84,
|
||||||
|
_column_85,
|
||||||
|
_column_91,
|
||||||
|
],
|
||||||
|
attachedDatabase: database,
|
||||||
|
),
|
||||||
|
alias: null,
|
||||||
|
);
|
||||||
|
late final Shape28 remoteAssetEntity = Shape28(
|
||||||
|
source: i0.VersionedTable(
|
||||||
|
entityName: 'remote_asset_entity',
|
||||||
|
withoutRowId: true,
|
||||||
|
isStrict: true,
|
||||||
|
tableConstraints: ['PRIMARY KEY(id)'],
|
||||||
|
columns: [
|
||||||
|
_column_1,
|
||||||
|
_column_8,
|
||||||
|
_column_9,
|
||||||
|
_column_5,
|
||||||
|
_column_10,
|
||||||
|
_column_11,
|
||||||
|
_column_12,
|
||||||
|
_column_0,
|
||||||
|
_column_13,
|
||||||
|
_column_14,
|
||||||
|
_column_15,
|
||||||
|
_column_16,
|
||||||
|
_column_17,
|
||||||
|
_column_18,
|
||||||
|
_column_19,
|
||||||
|
_column_20,
|
||||||
|
_column_21,
|
||||||
|
_column_86,
|
||||||
|
_column_101,
|
||||||
|
],
|
||||||
|
attachedDatabase: database,
|
||||||
|
),
|
||||||
|
alias: null,
|
||||||
|
);
|
||||||
|
late final Shape3 stackEntity = Shape3(
|
||||||
|
source: i0.VersionedTable(
|
||||||
|
entityName: 'stack_entity',
|
||||||
|
withoutRowId: true,
|
||||||
|
isStrict: true,
|
||||||
|
tableConstraints: ['PRIMARY KEY(id)'],
|
||||||
|
columns: [_column_0, _column_9, _column_5, _column_15, _column_75],
|
||||||
|
attachedDatabase: database,
|
||||||
|
),
|
||||||
|
alias: null,
|
||||||
|
);
|
||||||
|
late final Shape26 localAssetEntity = Shape26(
|
||||||
|
source: i0.VersionedTable(
|
||||||
|
entityName: 'local_asset_entity',
|
||||||
|
withoutRowId: true,
|
||||||
|
isStrict: true,
|
||||||
|
tableConstraints: ['PRIMARY KEY(id)'],
|
||||||
|
columns: [
|
||||||
|
_column_1,
|
||||||
|
_column_8,
|
||||||
|
_column_9,
|
||||||
|
_column_5,
|
||||||
|
_column_10,
|
||||||
|
_column_11,
|
||||||
|
_column_12,
|
||||||
|
_column_0,
|
||||||
|
_column_22,
|
||||||
|
_column_14,
|
||||||
|
_column_23,
|
||||||
|
_column_98,
|
||||||
|
_column_96,
|
||||||
|
_column_46,
|
||||||
|
_column_47,
|
||||||
|
],
|
||||||
|
attachedDatabase: database,
|
||||||
|
),
|
||||||
|
alias: null,
|
||||||
|
);
|
||||||
|
late final Shape9 remoteAlbumEntity = Shape9(
|
||||||
|
source: i0.VersionedTable(
|
||||||
|
entityName: 'remote_album_entity',
|
||||||
|
withoutRowId: true,
|
||||||
|
isStrict: true,
|
||||||
|
tableConstraints: ['PRIMARY KEY(id)'],
|
||||||
|
columns: [
|
||||||
|
_column_0,
|
||||||
|
_column_1,
|
||||||
|
_column_56,
|
||||||
|
_column_9,
|
||||||
|
_column_5,
|
||||||
|
_column_15,
|
||||||
|
_column_57,
|
||||||
|
_column_58,
|
||||||
|
_column_59,
|
||||||
|
],
|
||||||
|
attachedDatabase: database,
|
||||||
|
),
|
||||||
|
alias: null,
|
||||||
|
);
|
||||||
|
late final Shape19 localAlbumEntity = Shape19(
|
||||||
|
source: i0.VersionedTable(
|
||||||
|
entityName: 'local_album_entity',
|
||||||
|
withoutRowId: true,
|
||||||
|
isStrict: true,
|
||||||
|
tableConstraints: ['PRIMARY KEY(id)'],
|
||||||
|
columns: [
|
||||||
|
_column_0,
|
||||||
|
_column_1,
|
||||||
|
_column_5,
|
||||||
|
_column_31,
|
||||||
|
_column_32,
|
||||||
|
_column_90,
|
||||||
|
_column_33,
|
||||||
|
],
|
||||||
|
attachedDatabase: database,
|
||||||
|
),
|
||||||
|
alias: null,
|
||||||
|
);
|
||||||
|
late final Shape22 localAlbumAssetEntity = Shape22(
|
||||||
|
source: i0.VersionedTable(
|
||||||
|
entityName: 'local_album_asset_entity',
|
||||||
|
withoutRowId: true,
|
||||||
|
isStrict: true,
|
||||||
|
tableConstraints: ['PRIMARY KEY(asset_id, album_id)'],
|
||||||
|
columns: [_column_34, _column_35, _column_33],
|
||||||
|
attachedDatabase: database,
|
||||||
|
),
|
||||||
|
alias: null,
|
||||||
|
);
|
||||||
|
final i1.Index idxLocalAlbumAssetAlbumAsset = i1.Index(
|
||||||
|
'idx_local_album_asset_album_asset',
|
||||||
|
'CREATE INDEX IF NOT EXISTS idx_local_album_asset_album_asset ON local_album_asset_entity (album_id, asset_id)',
|
||||||
|
);
|
||||||
|
final i1.Index idxRemoteAlbumOwnerId = i1.Index(
|
||||||
|
'idx_remote_album_owner_id',
|
||||||
|
'CREATE INDEX IF NOT EXISTS idx_remote_album_owner_id ON remote_album_entity (owner_id)',
|
||||||
|
);
|
||||||
|
final i1.Index idxLocalAssetChecksum = i1.Index(
|
||||||
|
'idx_local_asset_checksum',
|
||||||
|
'CREATE INDEX IF NOT EXISTS idx_local_asset_checksum ON local_asset_entity (checksum)',
|
||||||
|
);
|
||||||
|
final i1.Index idxLocalAssetCloudId = i1.Index(
|
||||||
|
'idx_local_asset_cloud_id',
|
||||||
|
'CREATE INDEX IF NOT EXISTS idx_local_asset_cloud_id ON local_asset_entity (i_cloud_id)',
|
||||||
|
);
|
||||||
|
final i1.Index idxStackPrimaryAssetId = i1.Index(
|
||||||
|
'idx_stack_primary_asset_id',
|
||||||
|
'CREATE INDEX IF NOT EXISTS idx_stack_primary_asset_id ON stack_entity (primary_asset_id)',
|
||||||
|
);
|
||||||
|
final i1.Index idxRemoteAssetOwnerChecksum = i1.Index(
|
||||||
|
'idx_remote_asset_owner_checksum',
|
||||||
|
'CREATE INDEX IF NOT EXISTS idx_remote_asset_owner_checksum ON remote_asset_entity (owner_id, checksum)',
|
||||||
|
);
|
||||||
|
final i1.Index uQRemoteAssetsOwnerChecksum = i1.Index(
|
||||||
|
'UQ_remote_assets_owner_checksum',
|
||||||
|
'CREATE UNIQUE INDEX IF NOT EXISTS UQ_remote_assets_owner_checksum ON remote_asset_entity (owner_id, checksum) WHERE(library_id IS NULL)',
|
||||||
|
);
|
||||||
|
final i1.Index uQRemoteAssetsOwnerLibraryChecksum = i1.Index(
|
||||||
|
'UQ_remote_assets_owner_library_checksum',
|
||||||
|
'CREATE UNIQUE INDEX IF NOT EXISTS UQ_remote_assets_owner_library_checksum ON remote_asset_entity (owner_id, library_id, checksum) WHERE(library_id IS NOT NULL)',
|
||||||
|
);
|
||||||
|
final i1.Index idxRemoteAssetChecksum = i1.Index(
|
||||||
|
'idx_remote_asset_checksum',
|
||||||
|
'CREATE INDEX IF NOT EXISTS idx_remote_asset_checksum ON remote_asset_entity (checksum)',
|
||||||
|
);
|
||||||
|
final i1.Index idxRemoteAssetStackId = i1.Index(
|
||||||
|
'idx_remote_asset_stack_id',
|
||||||
|
'CREATE INDEX IF NOT EXISTS idx_remote_asset_stack_id ON remote_asset_entity (stack_id)',
|
||||||
|
);
|
||||||
|
final i1.Index idxRemoteAssetLocalDateTimeDay = i1.Index(
|
||||||
|
'idx_remote_asset_local_date_time_day',
|
||||||
|
'CREATE INDEX IF NOT EXISTS idx_remote_asset_local_date_time_day ON remote_asset_entity (STRFTIME(\'%Y-%m-%d\', local_date_time))',
|
||||||
|
);
|
||||||
|
final i1.Index idxRemoteAssetLocalDateTimeMonth = i1.Index(
|
||||||
|
'idx_remote_asset_local_date_time_month',
|
||||||
|
'CREATE INDEX IF NOT EXISTS idx_remote_asset_local_date_time_month ON remote_asset_entity (STRFTIME(\'%Y-%m\', local_date_time))',
|
||||||
|
);
|
||||||
|
late final Shape21 authUserEntity = Shape21(
|
||||||
|
source: i0.VersionedTable(
|
||||||
|
entityName: 'auth_user_entity',
|
||||||
|
withoutRowId: true,
|
||||||
|
isStrict: true,
|
||||||
|
tableConstraints: ['PRIMARY KEY(id)'],
|
||||||
|
columns: [
|
||||||
|
_column_0,
|
||||||
|
_column_1,
|
||||||
|
_column_3,
|
||||||
|
_column_2,
|
||||||
|
_column_84,
|
||||||
|
_column_85,
|
||||||
|
_column_92,
|
||||||
|
_column_93,
|
||||||
|
_column_7,
|
||||||
|
_column_94,
|
||||||
|
],
|
||||||
|
attachedDatabase: database,
|
||||||
|
),
|
||||||
|
alias: null,
|
||||||
|
);
|
||||||
|
late final Shape4 userMetadataEntity = Shape4(
|
||||||
|
source: i0.VersionedTable(
|
||||||
|
entityName: 'user_metadata_entity',
|
||||||
|
withoutRowId: true,
|
||||||
|
isStrict: true,
|
||||||
|
tableConstraints: ['PRIMARY KEY(user_id, "key")'],
|
||||||
|
columns: [_column_25, _column_26, _column_27],
|
||||||
|
attachedDatabase: database,
|
||||||
|
),
|
||||||
|
alias: null,
|
||||||
|
);
|
||||||
|
late final Shape5 partnerEntity = Shape5(
|
||||||
|
source: i0.VersionedTable(
|
||||||
|
entityName: 'partner_entity',
|
||||||
|
withoutRowId: true,
|
||||||
|
isStrict: true,
|
||||||
|
tableConstraints: ['PRIMARY KEY(shared_by_id, shared_with_id)'],
|
||||||
|
columns: [_column_28, _column_29, _column_30],
|
||||||
|
attachedDatabase: database,
|
||||||
|
),
|
||||||
|
alias: null,
|
||||||
|
);
|
||||||
|
late final Shape8 remoteExifEntity = Shape8(
|
||||||
|
source: i0.VersionedTable(
|
||||||
|
entityName: 'remote_exif_entity',
|
||||||
|
withoutRowId: true,
|
||||||
|
isStrict: true,
|
||||||
|
tableConstraints: ['PRIMARY KEY(asset_id)'],
|
||||||
|
columns: [
|
||||||
|
_column_36,
|
||||||
|
_column_37,
|
||||||
|
_column_38,
|
||||||
|
_column_39,
|
||||||
|
_column_40,
|
||||||
|
_column_41,
|
||||||
|
_column_11,
|
||||||
|
_column_10,
|
||||||
|
_column_42,
|
||||||
|
_column_43,
|
||||||
|
_column_44,
|
||||||
|
_column_45,
|
||||||
|
_column_46,
|
||||||
|
_column_47,
|
||||||
|
_column_48,
|
||||||
|
_column_49,
|
||||||
|
_column_50,
|
||||||
|
_column_51,
|
||||||
|
_column_52,
|
||||||
|
_column_53,
|
||||||
|
_column_54,
|
||||||
|
_column_55,
|
||||||
|
],
|
||||||
|
attachedDatabase: database,
|
||||||
|
),
|
||||||
|
alias: null,
|
||||||
|
);
|
||||||
|
late final Shape7 remoteAlbumAssetEntity = Shape7(
|
||||||
|
source: i0.VersionedTable(
|
||||||
|
entityName: 'remote_album_asset_entity',
|
||||||
|
withoutRowId: true,
|
||||||
|
isStrict: true,
|
||||||
|
tableConstraints: ['PRIMARY KEY(asset_id, album_id)'],
|
||||||
|
columns: [_column_36, _column_60],
|
||||||
|
attachedDatabase: database,
|
||||||
|
),
|
||||||
|
alias: null,
|
||||||
|
);
|
||||||
|
late final Shape10 remoteAlbumUserEntity = Shape10(
|
||||||
|
source: i0.VersionedTable(
|
||||||
|
entityName: 'remote_album_user_entity',
|
||||||
|
withoutRowId: true,
|
||||||
|
isStrict: true,
|
||||||
|
tableConstraints: ['PRIMARY KEY(album_id, user_id)'],
|
||||||
|
columns: [_column_60, _column_25, _column_61],
|
||||||
|
attachedDatabase: database,
|
||||||
|
),
|
||||||
|
alias: null,
|
||||||
|
);
|
||||||
|
late final Shape27 remoteAssetCloudIdEntity = Shape27(
|
||||||
|
source: i0.VersionedTable(
|
||||||
|
entityName: 'remote_asset_cloud_id_entity',
|
||||||
|
withoutRowId: true,
|
||||||
|
isStrict: true,
|
||||||
|
tableConstraints: ['PRIMARY KEY(asset_id)'],
|
||||||
|
columns: [
|
||||||
|
_column_36,
|
||||||
|
_column_99,
|
||||||
|
_column_100,
|
||||||
|
_column_96,
|
||||||
|
_column_46,
|
||||||
|
_column_47,
|
||||||
|
],
|
||||||
|
attachedDatabase: database,
|
||||||
|
),
|
||||||
|
alias: null,
|
||||||
|
);
|
||||||
|
late final Shape11 memoryEntity = Shape11(
|
||||||
|
source: i0.VersionedTable(
|
||||||
|
entityName: 'memory_entity',
|
||||||
|
withoutRowId: true,
|
||||||
|
isStrict: true,
|
||||||
|
tableConstraints: ['PRIMARY KEY(id)'],
|
||||||
|
columns: [
|
||||||
|
_column_0,
|
||||||
|
_column_9,
|
||||||
|
_column_5,
|
||||||
|
_column_18,
|
||||||
|
_column_15,
|
||||||
|
_column_8,
|
||||||
|
_column_62,
|
||||||
|
_column_63,
|
||||||
|
_column_64,
|
||||||
|
_column_65,
|
||||||
|
_column_66,
|
||||||
|
_column_67,
|
||||||
|
],
|
||||||
|
attachedDatabase: database,
|
||||||
|
),
|
||||||
|
alias: null,
|
||||||
|
);
|
||||||
|
late final Shape12 memoryAssetEntity = Shape12(
|
||||||
|
source: i0.VersionedTable(
|
||||||
|
entityName: 'memory_asset_entity',
|
||||||
|
withoutRowId: true,
|
||||||
|
isStrict: true,
|
||||||
|
tableConstraints: ['PRIMARY KEY(asset_id, memory_id)'],
|
||||||
|
columns: [_column_36, _column_68],
|
||||||
|
attachedDatabase: database,
|
||||||
|
),
|
||||||
|
alias: null,
|
||||||
|
);
|
||||||
|
late final Shape14 personEntity = Shape14(
|
||||||
|
source: i0.VersionedTable(
|
||||||
|
entityName: 'person_entity',
|
||||||
|
withoutRowId: true,
|
||||||
|
isStrict: true,
|
||||||
|
tableConstraints: ['PRIMARY KEY(id)'],
|
||||||
|
columns: [
|
||||||
|
_column_0,
|
||||||
|
_column_9,
|
||||||
|
_column_5,
|
||||||
|
_column_15,
|
||||||
|
_column_1,
|
||||||
|
_column_69,
|
||||||
|
_column_71,
|
||||||
|
_column_72,
|
||||||
|
_column_73,
|
||||||
|
_column_74,
|
||||||
|
],
|
||||||
|
attachedDatabase: database,
|
||||||
|
),
|
||||||
|
alias: null,
|
||||||
|
);
|
||||||
|
late final Shape15 assetFaceEntity = Shape15(
|
||||||
|
source: i0.VersionedTable(
|
||||||
|
entityName: 'asset_face_entity',
|
||||||
|
withoutRowId: true,
|
||||||
|
isStrict: true,
|
||||||
|
tableConstraints: ['PRIMARY KEY(id)'],
|
||||||
|
columns: [
|
||||||
|
_column_0,
|
||||||
|
_column_36,
|
||||||
|
_column_76,
|
||||||
|
_column_77,
|
||||||
|
_column_78,
|
||||||
|
_column_79,
|
||||||
|
_column_80,
|
||||||
|
_column_81,
|
||||||
|
_column_82,
|
||||||
|
_column_83,
|
||||||
|
],
|
||||||
|
attachedDatabase: database,
|
||||||
|
),
|
||||||
|
alias: null,
|
||||||
|
);
|
||||||
|
late final Shape18 storeEntity = Shape18(
|
||||||
|
source: i0.VersionedTable(
|
||||||
|
entityName: 'store_entity',
|
||||||
|
withoutRowId: true,
|
||||||
|
isStrict: true,
|
||||||
|
tableConstraints: ['PRIMARY KEY(id)'],
|
||||||
|
columns: [_column_87, _column_88, _column_89],
|
||||||
|
attachedDatabase: database,
|
||||||
|
),
|
||||||
|
alias: null,
|
||||||
|
);
|
||||||
|
late final Shape25 trashedLocalAssetEntity = Shape25(
|
||||||
|
source: i0.VersionedTable(
|
||||||
|
entityName: 'trashed_local_asset_entity',
|
||||||
|
withoutRowId: true,
|
||||||
|
isStrict: true,
|
||||||
|
tableConstraints: ['PRIMARY KEY(id, album_id)'],
|
||||||
|
columns: [
|
||||||
|
_column_1,
|
||||||
|
_column_8,
|
||||||
|
_column_9,
|
||||||
|
_column_5,
|
||||||
|
_column_10,
|
||||||
|
_column_11,
|
||||||
|
_column_12,
|
||||||
|
_column_0,
|
||||||
|
_column_95,
|
||||||
|
_column_22,
|
||||||
|
_column_14,
|
||||||
|
_column_23,
|
||||||
|
_column_97,
|
||||||
|
],
|
||||||
|
attachedDatabase: database,
|
||||||
|
),
|
||||||
|
alias: null,
|
||||||
|
);
|
||||||
|
final i1.Index idxPartnerSharedWithId = i1.Index(
|
||||||
|
'idx_partner_shared_with_id',
|
||||||
|
'CREATE INDEX IF NOT EXISTS idx_partner_shared_with_id ON partner_entity (shared_with_id)',
|
||||||
|
);
|
||||||
|
final i1.Index idxLatLng = i1.Index(
|
||||||
|
'idx_lat_lng',
|
||||||
|
'CREATE INDEX IF NOT EXISTS idx_lat_lng ON remote_exif_entity (latitude, longitude)',
|
||||||
|
);
|
||||||
|
final i1.Index idxRemoteAlbumAssetAlbumAsset = i1.Index(
|
||||||
|
'idx_remote_album_asset_album_asset',
|
||||||
|
'CREATE INDEX IF NOT EXISTS idx_remote_album_asset_album_asset ON remote_album_asset_entity (album_id, asset_id)',
|
||||||
|
);
|
||||||
|
final i1.Index idxRemoteAssetCloudId = i1.Index(
|
||||||
|
'idx_remote_asset_cloud_id',
|
||||||
|
'CREATE INDEX IF NOT EXISTS idx_remote_asset_cloud_id ON remote_asset_cloud_id_entity (cloud_id)',
|
||||||
|
);
|
||||||
|
final i1.Index idxPersonOwnerId = i1.Index(
|
||||||
|
'idx_person_owner_id',
|
||||||
|
'CREATE INDEX IF NOT EXISTS idx_person_owner_id ON person_entity (owner_id)',
|
||||||
|
);
|
||||||
|
final i1.Index idxAssetFacePersonId = i1.Index(
|
||||||
|
'idx_asset_face_person_id',
|
||||||
|
'CREATE INDEX IF NOT EXISTS idx_asset_face_person_id ON asset_face_entity (person_id)',
|
||||||
|
);
|
||||||
|
final i1.Index idxAssetFaceAssetId = i1.Index(
|
||||||
|
'idx_asset_face_asset_id',
|
||||||
|
'CREATE INDEX IF NOT EXISTS idx_asset_face_asset_id ON asset_face_entity (asset_id)',
|
||||||
|
);
|
||||||
|
final i1.Index idxTrashedLocalAssetChecksum = i1.Index(
|
||||||
|
'idx_trashed_local_asset_checksum',
|
||||||
|
'CREATE INDEX IF NOT EXISTS idx_trashed_local_asset_checksum ON trashed_local_asset_entity (checksum)',
|
||||||
|
);
|
||||||
|
final i1.Index idxTrashedLocalAssetAlbum = i1.Index(
|
||||||
|
'idx_trashed_local_asset_album',
|
||||||
|
'CREATE INDEX IF NOT EXISTS idx_trashed_local_asset_album ON trashed_local_asset_entity (album_id)',
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
i0.MigrationStepWithVersion migrationSteps({
|
i0.MigrationStepWithVersion migrationSteps({
|
||||||
required Future<void> Function(i1.Migrator m, Schema2 schema) from1To2,
|
required Future<void> Function(i1.Migrator m, Schema2 schema) from1To2,
|
||||||
required Future<void> Function(i1.Migrator m, Schema3 schema) from2To3,
|
required Future<void> Function(i1.Migrator m, Schema3 schema) from2To3,
|
||||||
@@ -7875,6 +8378,7 @@ i0.MigrationStepWithVersion migrationSteps({
|
|||||||
required Future<void> Function(i1.Migrator m, Schema16 schema) from15To16,
|
required Future<void> Function(i1.Migrator m, Schema16 schema) from15To16,
|
||||||
required Future<void> Function(i1.Migrator m, Schema17 schema) from16To17,
|
required Future<void> Function(i1.Migrator m, Schema17 schema) from16To17,
|
||||||
required Future<void> Function(i1.Migrator m, Schema18 schema) from17To18,
|
required Future<void> Function(i1.Migrator m, Schema18 schema) from17To18,
|
||||||
|
required Future<void> Function(i1.Migrator m, Schema19 schema) from18To19,
|
||||||
}) {
|
}) {
|
||||||
return (currentVersion, database) async {
|
return (currentVersion, database) async {
|
||||||
switch (currentVersion) {
|
switch (currentVersion) {
|
||||||
@@ -7963,6 +8467,11 @@ i0.MigrationStepWithVersion migrationSteps({
|
|||||||
final migrator = i1.Migrator(database, schema);
|
final migrator = i1.Migrator(database, schema);
|
||||||
await from17To18(migrator, schema);
|
await from17To18(migrator, schema);
|
||||||
return 18;
|
return 18;
|
||||||
|
case 18:
|
||||||
|
final schema = Schema19(database: database);
|
||||||
|
final migrator = i1.Migrator(database, schema);
|
||||||
|
await from18To19(migrator, schema);
|
||||||
|
return 19;
|
||||||
default:
|
default:
|
||||||
throw ArgumentError.value('Unknown migration from $currentVersion');
|
throw ArgumentError.value('Unknown migration from $currentVersion');
|
||||||
}
|
}
|
||||||
@@ -7987,6 +8496,7 @@ i1.OnUpgrade stepByStep({
|
|||||||
required Future<void> Function(i1.Migrator m, Schema16 schema) from15To16,
|
required Future<void> Function(i1.Migrator m, Schema16 schema) from15To16,
|
||||||
required Future<void> Function(i1.Migrator m, Schema17 schema) from16To17,
|
required Future<void> Function(i1.Migrator m, Schema17 schema) from16To17,
|
||||||
required Future<void> Function(i1.Migrator m, Schema18 schema) from17To18,
|
required Future<void> Function(i1.Migrator m, Schema18 schema) from17To18,
|
||||||
|
required Future<void> Function(i1.Migrator m, Schema19 schema) from18To19,
|
||||||
}) => i0.VersionedSchema.stepByStepHelper(
|
}) => i0.VersionedSchema.stepByStepHelper(
|
||||||
step: migrationSteps(
|
step: migrationSteps(
|
||||||
from1To2: from1To2,
|
from1To2: from1To2,
|
||||||
@@ -8006,5 +8516,6 @@ i1.OnUpgrade stepByStep({
|
|||||||
from15To16: from15To16,
|
from15To16: from15To16,
|
||||||
from16To17: from16To17,
|
from16To17: from16To17,
|
||||||
from17To18: from17To18,
|
from17To18: from17To18,
|
||||||
|
from18To19: from18To19,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import 'package:drift/drift.dart';
|
import 'package:drift/drift.dart';
|
||||||
|
import 'package:immich_mobile/domain/models/asset/base_asset.model.dart';
|
||||||
import 'package:immich_mobile/domain/models/person.model.dart';
|
import 'package:immich_mobile/domain/models/person.model.dart';
|
||||||
import 'package:immich_mobile/infrastructure/entities/person.entity.drift.dart';
|
import 'package:immich_mobile/infrastructure/entities/person.entity.drift.dart';
|
||||||
import 'package:immich_mobile/infrastructure/repositories/db.repository.dart';
|
import 'package:immich_mobile/infrastructure/repositories/db.repository.dart';
|
||||||
@@ -7,6 +8,13 @@ class DriftPeopleRepository extends DriftDatabaseRepository {
|
|||||||
final Drift _db;
|
final Drift _db;
|
||||||
const DriftPeopleRepository(this._db) : super(_db);
|
const DriftPeopleRepository(this._db) : super(_db);
|
||||||
|
|
||||||
|
Future<DriftPerson?> get(String personId) async {
|
||||||
|
final query = _db.select(_db.personEntity)..where((row) => row.id.equals(personId));
|
||||||
|
|
||||||
|
final result = await query.getSingleOrNull();
|
||||||
|
return result?.toDto();
|
||||||
|
}
|
||||||
|
|
||||||
Future<List<DriftPerson>> getAssetPeople(String assetId) async {
|
Future<List<DriftPerson>> getAssetPeople(String assetId) async {
|
||||||
final query = _db.select(_db.assetFaceEntity).join([
|
final query = _db.select(_db.assetFaceEntity).join([
|
||||||
innerJoin(_db.personEntity, _db.personEntity.id.equalsExp(_db.assetFaceEntity.personId)),
|
innerJoin(_db.personEntity, _db.personEntity.id.equalsExp(_db.assetFaceEntity.personId)),
|
||||||
@@ -19,19 +27,28 @@ class DriftPeopleRepository extends DriftDatabaseRepository {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Future<List<DriftPerson>> getAllPeople() async {
|
Future<List<DriftPerson>> getAllPeople() async {
|
||||||
|
final people = _db.personEntity;
|
||||||
|
final faces = _db.assetFaceEntity;
|
||||||
|
final assets = _db.remoteAssetEntity;
|
||||||
|
|
||||||
final query =
|
final query =
|
||||||
_db.select(_db.personEntity).join([
|
_db.select(people).join([
|
||||||
leftOuterJoin(_db.assetFaceEntity, _db.assetFaceEntity.personId.equalsExp(_db.personEntity.id)),
|
innerJoin(faces, faces.personId.equalsExp(people.id)),
|
||||||
|
innerJoin(assets, assets.id.equalsExp(faces.assetId)),
|
||||||
])
|
])
|
||||||
..where(_db.personEntity.isHidden.equals(false))
|
..where(
|
||||||
..groupBy([_db.personEntity.id], having: _db.assetFaceEntity.id.count().isBiggerOrEqualValue(3))
|
people.isHidden.equals(false) &
|
||||||
|
assets.deletedAt.isNull() &
|
||||||
|
assets.visibility.equalsValue(AssetVisibility.timeline),
|
||||||
|
)
|
||||||
|
..groupBy([people.id], having: faces.id.count().isBiggerOrEqualValue(3) | people.name.equals('').not())
|
||||||
..orderBy([
|
..orderBy([
|
||||||
OrderingTerm(expression: _db.personEntity.name.equals('').not(), mode: OrderingMode.desc),
|
OrderingTerm(expression: people.name.equals('').not(), mode: OrderingMode.desc),
|
||||||
OrderingTerm(expression: _db.assetFaceEntity.id.count(), mode: OrderingMode.desc),
|
OrderingTerm(expression: faces.id.count(), mode: OrderingMode.desc),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
return query.map((row) {
|
return query.map((row) {
|
||||||
final person = row.readTable(_db.personEntity);
|
final person = row.readTable(people);
|
||||||
return person.toDto();
|
return person.toDto();
|
||||||
}).get();
|
}).get();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -203,7 +203,7 @@ class DriftTimelineRepository extends DriftDatabaseRepository {
|
|||||||
final album = albums.first;
|
final album = albums.first;
|
||||||
final isAscending = album.order == AlbumAssetOrder.asc;
|
final isAscending = album.order == AlbumAssetOrder.asc;
|
||||||
final assetCountExp = _db.remoteAssetEntity.id.count();
|
final assetCountExp = _db.remoteAssetEntity.id.count();
|
||||||
final dateExp = _db.remoteAssetEntity.localDateTime.dateFmt(groupBy);
|
final dateExp = _db.remoteAssetEntity.effectiveCreatedAt(groupBy);
|
||||||
|
|
||||||
final query = _db.remoteAssetEntity.selectOnly()
|
final query = _db.remoteAssetEntity.selectOnly()
|
||||||
..addColumns([assetCountExp, dateExp])
|
..addColumns([assetCountExp, dateExp])
|
||||||
@@ -361,7 +361,7 @@ class DriftTimelineRepository extends DriftDatabaseRepository {
|
|||||||
}
|
}
|
||||||
|
|
||||||
final assetCountExp = _db.remoteAssetEntity.id.count();
|
final assetCountExp = _db.remoteAssetEntity.id.count();
|
||||||
final dateExp = _db.remoteAssetEntity.localDateTime.dateFmt(groupBy);
|
final dateExp = _db.remoteAssetEntity.effectiveCreatedAt(groupBy);
|
||||||
|
|
||||||
final query = _db.remoteAssetEntity.selectOnly()
|
final query = _db.remoteAssetEntity.selectOnly()
|
||||||
..addColumns([assetCountExp, dateExp])
|
..addColumns([assetCountExp, dateExp])
|
||||||
@@ -431,7 +431,7 @@ class DriftTimelineRepository extends DriftDatabaseRepository {
|
|||||||
}
|
}
|
||||||
|
|
||||||
final assetCountExp = _db.remoteAssetEntity.id.count();
|
final assetCountExp = _db.remoteAssetEntity.id.count();
|
||||||
final dateExp = _db.remoteAssetEntity.localDateTime.dateFmt(groupBy);
|
final dateExp = _db.remoteAssetEntity.effectiveCreatedAt(groupBy);
|
||||||
|
|
||||||
final query = _db.remoteAssetEntity.selectOnly()
|
final query = _db.remoteAssetEntity.selectOnly()
|
||||||
..addColumns([assetCountExp, dateExp])
|
..addColumns([assetCountExp, dateExp])
|
||||||
@@ -501,7 +501,7 @@ class DriftTimelineRepository extends DriftDatabaseRepository {
|
|||||||
}
|
}
|
||||||
|
|
||||||
final assetCountExp = _db.remoteAssetEntity.id.count();
|
final assetCountExp = _db.remoteAssetEntity.id.count();
|
||||||
final dateExp = _db.remoteAssetEntity.localDateTime.dateFmt(groupBy);
|
final dateExp = _db.remoteAssetEntity.effectiveCreatedAt(groupBy);
|
||||||
|
|
||||||
final query = _db.remoteAssetEntity.selectOnly()
|
final query = _db.remoteAssetEntity.selectOnly()
|
||||||
..addColumns([assetCountExp, dateExp])
|
..addColumns([assetCountExp, dateExp])
|
||||||
@@ -603,7 +603,7 @@ class DriftTimelineRepository extends DriftDatabaseRepository {
|
|||||||
}
|
}
|
||||||
|
|
||||||
final assetCountExp = _db.remoteAssetEntity.id.count();
|
final assetCountExp = _db.remoteAssetEntity.id.count();
|
||||||
final dateExp = _db.remoteAssetEntity.localDateTime.dateFmt(groupBy);
|
final dateExp = _db.remoteAssetEntity.effectiveCreatedAt(groupBy);
|
||||||
|
|
||||||
final query = _db.remoteAssetEntity.selectOnly()
|
final query = _db.remoteAssetEntity.selectOnly()
|
||||||
..addColumns([assetCountExp, dateExp])
|
..addColumns([assetCountExp, dateExp])
|
||||||
@@ -678,6 +678,11 @@ extension on Expression<DateTime> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extension on $RemoteAssetEntityTable {
|
||||||
|
Expression<String> effectiveCreatedAt(GroupAssetsBy groupBy) =>
|
||||||
|
coalesce([localDateTime.dateFmt(groupBy), createdAt.dateFmt(groupBy, toLocal: true)]);
|
||||||
|
}
|
||||||
|
|
||||||
extension on String {
|
extension on String {
|
||||||
DateTime truncateDate(GroupAssetsBy groupBy) {
|
DateTime truncateDate(GroupAssetsBy groupBy) {
|
||||||
final format = switch (groupBy) {
|
final format = switch (groupBy) {
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ import 'package:immich_mobile/entities/store.entity.dart';
|
|||||||
import 'package:immich_mobile/extensions/build_context_extensions.dart';
|
import 'package:immich_mobile/extensions/build_context_extensions.dart';
|
||||||
import 'package:immich_mobile/extensions/translate_extensions.dart';
|
import 'package:immich_mobile/extensions/translate_extensions.dart';
|
||||||
import 'package:immich_mobile/generated/codegen_loader.g.dart';
|
import 'package:immich_mobile/generated/codegen_loader.g.dart';
|
||||||
import 'package:immich_mobile/generated/intl_keys.g.dart';
|
import 'package:immich_mobile/generated/translations.g.dart';
|
||||||
import 'package:immich_mobile/infrastructure/repositories/network.repository.dart';
|
import 'package:immich_mobile/infrastructure/repositories/network.repository.dart';
|
||||||
import 'package:immich_mobile/platform/background_worker_lock_api.g.dart';
|
import 'package:immich_mobile/platform/background_worker_lock_api.g.dart';
|
||||||
import 'package:immich_mobile/providers/app_life_cycle.provider.dart';
|
import 'package:immich_mobile/providers/app_life_cycle.provider.dart';
|
||||||
@@ -219,8 +219,8 @@ class ImmichAppState extends ConsumerState<ImmichApp> with WidgetsBindingObserve
|
|||||||
ref
|
ref
|
||||||
.read(backgroundWorkerFgServiceProvider)
|
.read(backgroundWorkerFgServiceProvider)
|
||||||
.saveNotificationMessage(
|
.saveNotificationMessage(
|
||||||
IntlKeys.uploading_media.t(),
|
StaticTranslations.instance.uploading_media,
|
||||||
IntlKeys.backup_background_service_default_notification.t(),
|
StaticTranslations.instance.backup_background_service_default_notification,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ class ServerInfo {
|
|||||||
|
|
||||||
const ServerInfo({
|
const ServerInfo({
|
||||||
required this.serverVersion,
|
required this.serverVersion,
|
||||||
required this.latestVersion,
|
this.latestVersion,
|
||||||
required this.serverFeatures,
|
required this.serverFeatures,
|
||||||
required this.serverConfig,
|
required this.serverConfig,
|
||||||
required this.serverDiskInfo,
|
required this.serverDiskInfo,
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import 'package:immich_mobile/entities/store.entity.dart';
|
|||||||
import 'package:immich_mobile/extensions/build_context_extensions.dart';
|
import 'package:immich_mobile/extensions/build_context_extensions.dart';
|
||||||
import 'package:immich_mobile/extensions/theme_extensions.dart';
|
import 'package:immich_mobile/extensions/theme_extensions.dart';
|
||||||
import 'package:immich_mobile/extensions/translate_extensions.dart';
|
import 'package:immich_mobile/extensions/translate_extensions.dart';
|
||||||
import 'package:immich_mobile/generated/intl_keys.g.dart';
|
import 'package:immich_mobile/generated/translations.g.dart';
|
||||||
import 'package:immich_mobile/presentation/widgets/backup/backup_toggle_button.widget.dart';
|
import 'package:immich_mobile/presentation/widgets/backup/backup_toggle_button.widget.dart';
|
||||||
import 'package:immich_mobile/providers/background_sync.provider.dart';
|
import 'package:immich_mobile/providers/background_sync.provider.dart';
|
||||||
import 'package:immich_mobile/providers/backup/backup_album.provider.dart';
|
import 'package:immich_mobile/providers/backup/backup_album.provider.dart';
|
||||||
@@ -153,7 +153,7 @@ class _DriftBackupPageState extends ConsumerState<DriftBackupPage> {
|
|||||||
Icon(Icons.warning_rounded, color: context.colorScheme.error, fill: 1),
|
Icon(Icons.warning_rounded, color: context.colorScheme.error, fill: 1),
|
||||||
const SizedBox(width: 8),
|
const SizedBox(width: 8),
|
||||||
Text(
|
Text(
|
||||||
IntlKeys.backup_error_sync_failed.t(),
|
context.t.backup_error_sync_failed,
|
||||||
style: context.textTheme.bodyMedium?.copyWith(color: context.colorScheme.error),
|
style: context.textTheme.bodyMedium?.copyWith(color: context.colorScheme.error),
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import 'package:flutter_hooks/flutter_hooks.dart' hide Store;
|
|||||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||||
import 'package:immich_mobile/domain/models/store.model.dart';
|
import 'package:immich_mobile/domain/models/store.model.dart';
|
||||||
import 'package:immich_mobile/entities/store.entity.dart';
|
import 'package:immich_mobile/entities/store.entity.dart';
|
||||||
import 'package:immich_mobile/generated/intl_keys.g.dart';
|
import 'package:immich_mobile/generated/translations.g.dart';
|
||||||
|
|
||||||
class SettingsHeader {
|
class SettingsHeader {
|
||||||
String key = "";
|
String key = "";
|
||||||
@@ -61,7 +61,7 @@ class HeaderSettingsPage extends HookConsumerWidget {
|
|||||||
|
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
title: const Text(IntlKeys.headers_settings_tile_title).tr(),
|
title: Text(context.t.headers_settings_tile_title),
|
||||||
centerTitle: false,
|
centerTitle: false,
|
||||||
actions: [
|
actions: [
|
||||||
IconButton(
|
IconButton(
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
|
|||||||
import 'package:immich_mobile/domain/models/user.model.dart';
|
import 'package:immich_mobile/domain/models/user.model.dart';
|
||||||
import 'package:immich_mobile/extensions/asyncvalue_extensions.dart';
|
import 'package:immich_mobile/extensions/asyncvalue_extensions.dart';
|
||||||
import 'package:immich_mobile/extensions/build_context_extensions.dart';
|
import 'package:immich_mobile/extensions/build_context_extensions.dart';
|
||||||
import 'package:immich_mobile/generated/intl_keys.g.dart';
|
import 'package:immich_mobile/generated/translations.g.dart';
|
||||||
import 'package:immich_mobile/providers/album/album.provider.dart';
|
import 'package:immich_mobile/providers/album/album.provider.dart';
|
||||||
import 'package:immich_mobile/providers/partner.provider.dart';
|
import 'package:immich_mobile/providers/partner.provider.dart';
|
||||||
import 'package:immich_mobile/providers/search/people.provider.dart';
|
import 'package:immich_mobile/providers/search/people.provider.dart';
|
||||||
@@ -41,13 +41,13 @@ class LibraryPage extends ConsumerWidget {
|
|||||||
ActionButton(
|
ActionButton(
|
||||||
onPressed: () => context.pushRoute(const FavoritesRoute()),
|
onPressed: () => context.pushRoute(const FavoritesRoute()),
|
||||||
icon: Icons.favorite_outline_rounded,
|
icon: Icons.favorite_outline_rounded,
|
||||||
label: IntlKeys.favorites.tr(),
|
label: context.t.favorites,
|
||||||
),
|
),
|
||||||
const SizedBox(width: 8),
|
const SizedBox(width: 8),
|
||||||
ActionButton(
|
ActionButton(
|
||||||
onPressed: () => context.pushRoute(const ArchiveRoute()),
|
onPressed: () => context.pushRoute(const ArchiveRoute()),
|
||||||
icon: Icons.archive_outlined,
|
icon: Icons.archive_outlined,
|
||||||
label: IntlKeys.archived.tr(),
|
label: context.t.archived,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
@@ -58,14 +58,14 @@ class LibraryPage extends ConsumerWidget {
|
|||||||
ActionButton(
|
ActionButton(
|
||||||
onPressed: () => context.pushRoute(const SharedLinkRoute()),
|
onPressed: () => context.pushRoute(const SharedLinkRoute()),
|
||||||
icon: Icons.link_outlined,
|
icon: Icons.link_outlined,
|
||||||
label: IntlKeys.shared_links.tr(),
|
label: context.t.shared_links,
|
||||||
),
|
),
|
||||||
SizedBox(width: trashEnabled ? 8 : 0),
|
SizedBox(width: trashEnabled ? 8 : 0),
|
||||||
trashEnabled
|
trashEnabled
|
||||||
? ActionButton(
|
? ActionButton(
|
||||||
onPressed: () => context.pushRoute(const TrashRoute()),
|
onPressed: () => context.pushRoute(const TrashRoute()),
|
||||||
icon: Icons.delete_outline_rounded,
|
icon: Icons.delete_outline_rounded,
|
||||||
label: IntlKeys.trash.tr(),
|
label: context.t.trash,
|
||||||
)
|
)
|
||||||
: const SizedBox.shrink(),
|
: const SizedBox.shrink(),
|
||||||
],
|
],
|
||||||
@@ -120,26 +120,20 @@ class QuickAccessButtons extends ConsumerWidget {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
leading: const Icon(Icons.folder_outlined, size: 26),
|
leading: const Icon(Icons.folder_outlined, size: 26),
|
||||||
title: Text(
|
title: Text(context.t.folders, style: context.textTheme.titleSmall?.copyWith(fontWeight: FontWeight.w500)),
|
||||||
IntlKeys.folders.tr(),
|
|
||||||
style: context.textTheme.titleSmall?.copyWith(fontWeight: FontWeight.w500),
|
|
||||||
),
|
|
||||||
onTap: () => context.pushRoute(FolderRoute()),
|
onTap: () => context.pushRoute(FolderRoute()),
|
||||||
),
|
),
|
||||||
ListTile(
|
ListTile(
|
||||||
leading: const Icon(Icons.lock_outline_rounded, size: 26),
|
leading: const Icon(Icons.lock_outline_rounded, size: 26),
|
||||||
title: Text(
|
title: Text(
|
||||||
IntlKeys.locked_folder.tr(),
|
context.t.locked_folder,
|
||||||
style: context.textTheme.titleSmall?.copyWith(fontWeight: FontWeight.w500),
|
style: context.textTheme.titleSmall?.copyWith(fontWeight: FontWeight.w500),
|
||||||
),
|
),
|
||||||
onTap: () => context.pushRoute(const LockedRoute()),
|
onTap: () => context.pushRoute(const LockedRoute()),
|
||||||
),
|
),
|
||||||
ListTile(
|
ListTile(
|
||||||
leading: const Icon(Icons.group_outlined, size: 26),
|
leading: const Icon(Icons.group_outlined, size: 26),
|
||||||
title: Text(
|
title: Text(context.t.partners, style: context.textTheme.titleSmall?.copyWith(fontWeight: FontWeight.w500)),
|
||||||
IntlKeys.partners.tr(),
|
|
||||||
style: context.textTheme.titleSmall?.copyWith(fontWeight: FontWeight.w500),
|
|
||||||
),
|
|
||||||
onTap: () => context.pushRoute(const PartnerRoute()),
|
onTap: () => context.pushRoute(const PartnerRoute()),
|
||||||
),
|
),
|
||||||
PartnerList(partners: partners),
|
PartnerList(partners: partners),
|
||||||
@@ -230,7 +224,7 @@ class PeopleCollectionCard extends ConsumerWidget {
|
|||||||
Padding(
|
Padding(
|
||||||
padding: const EdgeInsets.all(8.0),
|
padding: const EdgeInsets.all(8.0),
|
||||||
child: Text(
|
child: Text(
|
||||||
IntlKeys.people.tr(),
|
context.t.people,
|
||||||
style: context.textTheme.titleSmall?.copyWith(
|
style: context.textTheme.titleSmall?.copyWith(
|
||||||
color: context.colorScheme.onSurface,
|
color: context.colorScheme.onSurface,
|
||||||
fontWeight: FontWeight.w500,
|
fontWeight: FontWeight.w500,
|
||||||
@@ -290,7 +284,7 @@ class LocalAlbumsCollectionCard extends HookConsumerWidget {
|
|||||||
Padding(
|
Padding(
|
||||||
padding: const EdgeInsets.all(8.0),
|
padding: const EdgeInsets.all(8.0),
|
||||||
child: Text(
|
child: Text(
|
||||||
IntlKeys.on_this_device.tr(),
|
context.t.on_this_device,
|
||||||
style: context.textTheme.titleSmall?.copyWith(
|
style: context.textTheme.titleSmall?.copyWith(
|
||||||
color: context.colorScheme.onSurface,
|
color: context.colorScheme.onSurface,
|
||||||
fontWeight: FontWeight.w500,
|
fontWeight: FontWeight.w500,
|
||||||
@@ -341,7 +335,7 @@ class PlacesCollectionCard extends StatelessWidget {
|
|||||||
Padding(
|
Padding(
|
||||||
padding: const EdgeInsets.all(8.0),
|
padding: const EdgeInsets.all(8.0),
|
||||||
child: Text(
|
child: Text(
|
||||||
IntlKeys.places.tr(),
|
context.t.places,
|
||||||
style: context.textTheme.titleSmall?.copyWith(
|
style: context.textTheme.titleSmall?.copyWith(
|
||||||
color: context.colorScheme.onSurface,
|
color: context.colorScheme.onSurface,
|
||||||
fontWeight: FontWeight.w500,
|
fontWeight: FontWeight.w500,
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import 'package:auto_route/auto_route.dart';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||||
import 'package:immich_mobile/extensions/translate_extensions.dart';
|
import 'package:immich_mobile/extensions/translate_extensions.dart';
|
||||||
|
import 'package:immich_mobile/generated/translations.g.dart';
|
||||||
import 'package:immich_mobile/presentation/widgets/bottom_sheet/trash_bottom_sheet.widget.dart';
|
import 'package:immich_mobile/presentation/widgets/bottom_sheet/trash_bottom_sheet.widget.dart';
|
||||||
import 'package:immich_mobile/presentation/widgets/timeline/timeline.widget.dart';
|
import 'package:immich_mobile/presentation/widgets/timeline/timeline.widget.dart';
|
||||||
import 'package:immich_mobile/providers/infrastructure/timeline.provider.dart';
|
import 'package:immich_mobile/providers/infrastructure/timeline.provider.dart';
|
||||||
@@ -43,9 +44,7 @@ class DriftTrashPage extends StatelessWidget {
|
|||||||
|
|
||||||
return SliverPadding(
|
return SliverPadding(
|
||||||
padding: const EdgeInsets.all(16.0),
|
padding: const EdgeInsets.all(16.0),
|
||||||
sliver: SliverToBoxAdapter(
|
sliver: SliverToBoxAdapter(child: Text(context.t.trash_page_info(days: trashDays))),
|
||||||
child: const Text("trash_page_info").t(context: context, args: {"days": "$trashDays"}),
|
|
||||||
),
|
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -1,27 +1,45 @@
|
|||||||
|
import 'package:collection/collection.dart';
|
||||||
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/rendering.dart';
|
import 'package:flutter/rendering.dart';
|
||||||
|
|
||||||
class FixedTimelineRow extends MultiChildRenderObjectWidget {
|
class TimelineRow extends MultiChildRenderObjectWidget {
|
||||||
final double dimension;
|
final double height;
|
||||||
|
final List<double> widths;
|
||||||
final double spacing;
|
final double spacing;
|
||||||
final TextDirection textDirection;
|
final TextDirection textDirection;
|
||||||
|
|
||||||
const FixedTimelineRow({
|
const TimelineRow({
|
||||||
super.key,
|
super.key,
|
||||||
required this.dimension,
|
required this.height,
|
||||||
|
required this.widths,
|
||||||
required this.spacing,
|
required this.spacing,
|
||||||
required this.textDirection,
|
required this.textDirection,
|
||||||
required super.children,
|
required super.children,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
factory TimelineRow.fixed({
|
||||||
|
required double dimension,
|
||||||
|
required double spacing,
|
||||||
|
required TextDirection textDirection,
|
||||||
|
required List<Widget> children,
|
||||||
|
}) => TimelineRow(
|
||||||
|
height: dimension,
|
||||||
|
widths: List.filled(children.length, dimension),
|
||||||
|
spacing: spacing,
|
||||||
|
textDirection: textDirection,
|
||||||
|
children: children,
|
||||||
|
);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
RenderObject createRenderObject(BuildContext context) {
|
RenderObject createRenderObject(BuildContext context) {
|
||||||
return RenderFixedRow(dimension: dimension, spacing: spacing, textDirection: textDirection);
|
return RenderFixedRow(height: height, widths: widths, spacing: spacing, textDirection: textDirection);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void updateRenderObject(BuildContext context, RenderFixedRow renderObject) {
|
void updateRenderObject(BuildContext context, RenderFixedRow renderObject) {
|
||||||
renderObject.dimension = dimension;
|
renderObject.height = height;
|
||||||
|
renderObject.widths = widths;
|
||||||
renderObject.spacing = spacing;
|
renderObject.spacing = spacing;
|
||||||
renderObject.textDirection = textDirection;
|
renderObject.textDirection = textDirection;
|
||||||
}
|
}
|
||||||
@@ -29,7 +47,8 @@ class FixedTimelineRow extends MultiChildRenderObjectWidget {
|
|||||||
@override
|
@override
|
||||||
void debugFillProperties(DiagnosticPropertiesBuilder properties) {
|
void debugFillProperties(DiagnosticPropertiesBuilder properties) {
|
||||||
super.debugFillProperties(properties);
|
super.debugFillProperties(properties);
|
||||||
properties.add(DoubleProperty('dimension', dimension));
|
properties.add(DoubleProperty('height', height));
|
||||||
|
properties.add(DiagnosticsProperty<List<double>>('widths', widths));
|
||||||
properties.add(DoubleProperty('spacing', spacing));
|
properties.add(DoubleProperty('spacing', spacing));
|
||||||
properties.add(EnumProperty<TextDirection>('textDirection', textDirection));
|
properties.add(EnumProperty<TextDirection>('textDirection', textDirection));
|
||||||
}
|
}
|
||||||
@@ -43,21 +62,32 @@ class RenderFixedRow extends RenderBox
|
|||||||
RenderBoxContainerDefaultsMixin<RenderBox, _RowParentData> {
|
RenderBoxContainerDefaultsMixin<RenderBox, _RowParentData> {
|
||||||
RenderFixedRow({
|
RenderFixedRow({
|
||||||
List<RenderBox>? children,
|
List<RenderBox>? children,
|
||||||
required double dimension,
|
required double height,
|
||||||
|
required List<double> widths,
|
||||||
required double spacing,
|
required double spacing,
|
||||||
required TextDirection textDirection,
|
required TextDirection textDirection,
|
||||||
}) : _dimension = dimension,
|
}) : _height = height,
|
||||||
|
_widths = widths,
|
||||||
_spacing = spacing,
|
_spacing = spacing,
|
||||||
_textDirection = textDirection {
|
_textDirection = textDirection {
|
||||||
addAll(children);
|
addAll(children);
|
||||||
}
|
}
|
||||||
|
|
||||||
double get dimension => _dimension;
|
double get height => _height;
|
||||||
double _dimension;
|
double _height;
|
||||||
|
|
||||||
set dimension(double value) {
|
set height(double value) {
|
||||||
if (_dimension == value) return;
|
if (_height == value) return;
|
||||||
_dimension = value;
|
_height = value;
|
||||||
|
markNeedsLayout();
|
||||||
|
}
|
||||||
|
|
||||||
|
List<double> get widths => _widths;
|
||||||
|
List<double> _widths;
|
||||||
|
|
||||||
|
set widths(List<double> value) {
|
||||||
|
if (listEquals(_widths, value)) return;
|
||||||
|
_widths = value;
|
||||||
markNeedsLayout();
|
markNeedsLayout();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -86,7 +116,7 @@ class RenderFixedRow extends RenderBox
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
double get intrinsicWidth => dimension * childCount + spacing * (childCount - 1);
|
double get intrinsicWidth => widths.sum + (spacing * (childCount - 1));
|
||||||
|
|
||||||
@override
|
@override
|
||||||
double computeMinIntrinsicWidth(double height) => intrinsicWidth;
|
double computeMinIntrinsicWidth(double height) => intrinsicWidth;
|
||||||
@@ -95,10 +125,10 @@ class RenderFixedRow extends RenderBox
|
|||||||
double computeMaxIntrinsicWidth(double height) => intrinsicWidth;
|
double computeMaxIntrinsicWidth(double height) => intrinsicWidth;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
double computeMinIntrinsicHeight(double width) => dimension;
|
double computeMinIntrinsicHeight(double width) => height;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
double computeMaxIntrinsicHeight(double width) => dimension;
|
double computeMaxIntrinsicHeight(double width) => height;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
double? computeDistanceToActualBaseline(TextBaseline baseline) {
|
double? computeDistanceToActualBaseline(TextBaseline baseline) {
|
||||||
@@ -118,7 +148,8 @@ class RenderFixedRow extends RenderBox
|
|||||||
@override
|
@override
|
||||||
void debugFillProperties(DiagnosticPropertiesBuilder properties) {
|
void debugFillProperties(DiagnosticPropertiesBuilder properties) {
|
||||||
super.debugFillProperties(properties);
|
super.debugFillProperties(properties);
|
||||||
properties.add(DoubleProperty('dimension', dimension));
|
properties.add(DoubleProperty('height', height));
|
||||||
|
properties.add(DiagnosticsProperty<List<double>>('widths', widths));
|
||||||
properties.add(DoubleProperty('spacing', spacing));
|
properties.add(DoubleProperty('spacing', spacing));
|
||||||
properties.add(EnumProperty<TextDirection>('textDirection', textDirection));
|
properties.add(EnumProperty<TextDirection>('textDirection', textDirection));
|
||||||
}
|
}
|
||||||
@@ -131,19 +162,25 @@ class RenderFixedRow extends RenderBox
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// Use the entire width of the parent for the row.
|
// Use the entire width of the parent for the row.
|
||||||
size = Size(constraints.maxWidth, dimension);
|
size = Size(constraints.maxWidth, height);
|
||||||
// Each tile is forced to be dimension x dimension.
|
|
||||||
final childConstraints = BoxConstraints.tight(Size(dimension, dimension));
|
|
||||||
final flipMainAxis = textDirection == TextDirection.rtl;
|
final flipMainAxis = textDirection == TextDirection.rtl;
|
||||||
Offset offset = Offset(flipMainAxis ? size.width - dimension : 0, 0);
|
int childIndex = 0;
|
||||||
final dx = (flipMainAxis ? -1 : 1) * (dimension + spacing);
|
double currentX = flipMainAxis ? size.width - (widths.firstOrNull ?? 0) : 0;
|
||||||
// Layout each child horizontally.
|
// Layout each child horizontally.
|
||||||
while (child != null) {
|
while (child != null && childIndex < widths.length) {
|
||||||
|
final width = widths[childIndex];
|
||||||
|
final childConstraints = BoxConstraints.tight(Size(width, height));
|
||||||
child.layout(childConstraints, parentUsesSize: false);
|
child.layout(childConstraints, parentUsesSize: false);
|
||||||
final childParentData = child.parentData! as _RowParentData;
|
final childParentData = child.parentData! as _RowParentData;
|
||||||
childParentData.offset = offset;
|
childParentData.offset = Offset(currentX, 0);
|
||||||
offset += Offset(dx, 0);
|
|
||||||
child = childParentData.nextSibling;
|
child = childParentData.nextSibling;
|
||||||
|
childIndex++;
|
||||||
|
|
||||||
|
if (child != null && childIndex < widths.length) {
|
||||||
|
final nextWidth = widths[childIndex];
|
||||||
|
currentX += flipMainAxis ? -(spacing + nextWidth) : width + spacing;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,10 +2,12 @@ import 'dart:async';
|
|||||||
import 'dart:math' as math;
|
import 'dart:math' as math;
|
||||||
|
|
||||||
import 'package:auto_route/auto_route.dart';
|
import 'package:auto_route/auto_route.dart';
|
||||||
|
import 'package:collection/collection.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||||
import 'package:immich_mobile/domain/models/asset/base_asset.model.dart';
|
import 'package:immich_mobile/domain/models/asset/base_asset.model.dart';
|
||||||
import 'package:immich_mobile/domain/services/timeline.service.dart';
|
import 'package:immich_mobile/domain/services/timeline.service.dart';
|
||||||
|
import 'package:immich_mobile/extensions/build_context_extensions.dart';
|
||||||
import 'package:immich_mobile/presentation/widgets/asset_viewer/asset_viewer.page.dart';
|
import 'package:immich_mobile/presentation/widgets/asset_viewer/asset_viewer.page.dart';
|
||||||
import 'package:immich_mobile/presentation/widgets/images/thumbnail_tile.widget.dart';
|
import 'package:immich_mobile/presentation/widgets/images/thumbnail_tile.widget.dart';
|
||||||
import 'package:immich_mobile/presentation/widgets/timeline/fixed/row.dart';
|
import 'package:immich_mobile/presentation/widgets/timeline/fixed/row.dart';
|
||||||
@@ -78,6 +80,7 @@ class FixedSegment extends Segment {
|
|||||||
assetCount: numberOfAssets,
|
assetCount: numberOfAssets,
|
||||||
tileHeight: tileHeight,
|
tileHeight: tileHeight,
|
||||||
spacing: spacing,
|
spacing: spacing,
|
||||||
|
columnCount: columnCount,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -87,24 +90,32 @@ class _FixedSegmentRow extends ConsumerWidget {
|
|||||||
final int assetCount;
|
final int assetCount;
|
||||||
final double tileHeight;
|
final double tileHeight;
|
||||||
final double spacing;
|
final double spacing;
|
||||||
|
final int columnCount;
|
||||||
|
|
||||||
const _FixedSegmentRow({
|
const _FixedSegmentRow({
|
||||||
required this.assetIndex,
|
required this.assetIndex,
|
||||||
required this.assetCount,
|
required this.assetCount,
|
||||||
required this.tileHeight,
|
required this.tileHeight,
|
||||||
required this.spacing,
|
required this.spacing,
|
||||||
|
required this.columnCount,
|
||||||
});
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, WidgetRef ref) {
|
Widget build(BuildContext context, WidgetRef ref) {
|
||||||
final isScrubbing = ref.watch(timelineStateProvider.select((s) => s.isScrubbing));
|
final isScrubbing = ref.watch(timelineStateProvider.select((s) => s.isScrubbing));
|
||||||
final timelineService = ref.read(timelineServiceProvider);
|
final timelineService = ref.read(timelineServiceProvider);
|
||||||
|
final isDynamicLayout = columnCount <= (context.isMobile ? 2 : 3);
|
||||||
|
|
||||||
if (isScrubbing) {
|
if (isScrubbing) {
|
||||||
return _buildPlaceholder(context);
|
return _buildPlaceholder(context);
|
||||||
}
|
}
|
||||||
if (timelineService.hasRange(assetIndex, assetCount)) {
|
if (timelineService.hasRange(assetIndex, assetCount)) {
|
||||||
return _buildAssetRow(context, timelineService.getAssets(assetIndex, assetCount), timelineService);
|
return _buildAssetRow(
|
||||||
|
context,
|
||||||
|
timelineService.getAssets(assetIndex, assetCount),
|
||||||
|
timelineService,
|
||||||
|
isDynamicLayout,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return FutureBuilder<List<BaseAsset>>(
|
return FutureBuilder<List<BaseAsset>>(
|
||||||
@@ -113,7 +124,7 @@ class _FixedSegmentRow extends ConsumerWidget {
|
|||||||
if (snapshot.connectionState != ConnectionState.done) {
|
if (snapshot.connectionState != ConnectionState.done) {
|
||||||
return _buildPlaceholder(context);
|
return _buildPlaceholder(context);
|
||||||
}
|
}
|
||||||
return _buildAssetRow(context, snapshot.requireData, timelineService);
|
return _buildAssetRow(context, snapshot.requireData, timelineService, isDynamicLayout);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -122,23 +133,58 @@ class _FixedSegmentRow extends ConsumerWidget {
|
|||||||
return SegmentBuilder.buildPlaceholder(context, assetCount, size: Size.square(tileHeight), spacing: spacing);
|
return SegmentBuilder.buildPlaceholder(context, assetCount, size: Size.square(tileHeight), spacing: spacing);
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildAssetRow(BuildContext context, List<BaseAsset> assets, TimelineService timelineService) {
|
Widget _buildAssetRow(
|
||||||
return FixedTimelineRow(
|
BuildContext context,
|
||||||
dimension: tileHeight,
|
List<BaseAsset> assets,
|
||||||
spacing: spacing,
|
TimelineService timelineService,
|
||||||
textDirection: Directionality.of(context),
|
bool isDynamicLayout,
|
||||||
children: [
|
) {
|
||||||
for (int i = 0; i < assets.length; i++)
|
final children = [
|
||||||
TimelineAssetIndexWrapper(
|
for (int i = 0; i < assets.length; i++)
|
||||||
|
TimelineAssetIndexWrapper(
|
||||||
|
assetIndex: assetIndex + i,
|
||||||
|
segmentIndex: 0, // For simplicity, using 0 for now
|
||||||
|
child: _AssetTileWidget(
|
||||||
|
key: ValueKey(Object.hash(assets[i].heroTag, assetIndex + i, timelineService.hashCode)),
|
||||||
|
asset: assets[i],
|
||||||
assetIndex: assetIndex + i,
|
assetIndex: assetIndex + i,
|
||||||
segmentIndex: 0, // For simplicity, using 0 for now
|
|
||||||
child: _AssetTileWidget(
|
|
||||||
key: ValueKey(Object.hash(assets[i].heroTag, assetIndex + i, timelineService.hashCode)),
|
|
||||||
asset: assets[i],
|
|
||||||
assetIndex: assetIndex + i,
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
],
|
),
|
||||||
|
];
|
||||||
|
|
||||||
|
final widths = List.filled(assets.length, tileHeight);
|
||||||
|
|
||||||
|
if (isDynamicLayout) {
|
||||||
|
final aspectRatios = assets.map((e) => (e.width ?? 1) / (e.height ?? 1)).toList();
|
||||||
|
final meanAspectRatio = aspectRatios.sum / assets.length;
|
||||||
|
|
||||||
|
// 1: mean width
|
||||||
|
// 0.5: width < mean - threshold
|
||||||
|
// 1.5: width > mean + threshold
|
||||||
|
final arConfiguration = aspectRatios.map((e) {
|
||||||
|
if (e - meanAspectRatio > 0.3) return 1.5;
|
||||||
|
if (e - meanAspectRatio < -0.3) return 0.5;
|
||||||
|
return 1.0;
|
||||||
|
});
|
||||||
|
|
||||||
|
// Normalize to get width distribution
|
||||||
|
final sum = arConfiguration.sum;
|
||||||
|
|
||||||
|
int index = 0;
|
||||||
|
for (final ratio in arConfiguration) {
|
||||||
|
// Distribute the available width proportionally based on aspect ratio configuration
|
||||||
|
widths[index++] = ((ratio * assets.length) / sum) * tileHeight;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return TimelineDragRegion(
|
||||||
|
child: TimelineRow(
|
||||||
|
height: tileHeight,
|
||||||
|
widths: widths,
|
||||||
|
spacing: spacing,
|
||||||
|
textDirection: Directionality.of(context),
|
||||||
|
children: children,
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ abstract class SegmentBuilder {
|
|||||||
Size size = kTimelineFixedTileExtent,
|
Size size = kTimelineFixedTileExtent,
|
||||||
double spacing = kTimelineSpacing,
|
double spacing = kTimelineSpacing,
|
||||||
}) => RepaintBoundary(
|
}) => RepaintBoundary(
|
||||||
child: FixedTimelineRow(
|
child: TimelineRow.fixed(
|
||||||
dimension: size.height,
|
dimension: size.height,
|
||||||
spacing: spacing,
|
spacing: spacing,
|
||||||
textDirection: Directionality.of(context),
|
textDirection: Directionality.of(context),
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ import 'package:immich_mobile/widgets/common/immich_sliver_app_bar.dart';
|
|||||||
import 'package:immich_mobile/widgets/common/mesmerizing_sliver_app_bar.dart';
|
import 'package:immich_mobile/widgets/common/mesmerizing_sliver_app_bar.dart';
|
||||||
import 'package:immich_mobile/widgets/common/selection_sliver_app_bar.dart';
|
import 'package:immich_mobile/widgets/common/selection_sliver_app_bar.dart';
|
||||||
|
|
||||||
class Timeline extends StatelessWidget {
|
class Timeline extends ConsumerWidget {
|
||||||
const Timeline({
|
const Timeline({
|
||||||
super.key,
|
super.key,
|
||||||
this.topSliverWidget,
|
this.topSliverWidget,
|
||||||
@@ -58,15 +58,15 @@ class Timeline extends StatelessWidget {
|
|||||||
final bool readOnly;
|
final bool readOnly;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context, WidgetRef ref) {
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
resizeToAvoidBottomInset: false,
|
resizeToAvoidBottomInset: false,
|
||||||
floatingActionButton: const DownloadStatusFloatingButton(),
|
floatingActionButton: const DownloadStatusFloatingButton(),
|
||||||
body: LayoutBuilder(
|
body: LayoutBuilder(
|
||||||
builder: (_, constraints) => ProviderScope(
|
builder: (_, constraints) => ProviderScope(
|
||||||
overrides: [
|
overrides: [
|
||||||
timelineArgsProvider.overrideWith(
|
timelineArgsProvider.overrideWithValue(
|
||||||
(ref) => TimelineArgs(
|
TimelineArgs(
|
||||||
maxWidth: constraints.maxWidth,
|
maxWidth: constraints.maxWidth,
|
||||||
maxHeight: constraints.maxHeight,
|
maxHeight: constraints.maxHeight,
|
||||||
columnCount: ref.watch(settingsProvider.select((s) => s.get(Setting.tilesPerRow))),
|
columnCount: ref.watch(settingsProvider.select((s) => s.get(Setting.tilesPerRow))),
|
||||||
@@ -78,6 +78,7 @@ class Timeline extends StatelessWidget {
|
|||||||
if (readOnly) readonlyModeProvider.overrideWith(() => _AlwaysReadOnlyNotifier()),
|
if (readOnly) readonlyModeProvider.overrideWith(() => _AlwaysReadOnlyNotifier()),
|
||||||
],
|
],
|
||||||
child: _SliverTimeline(
|
child: _SliverTimeline(
|
||||||
|
key: const ValueKey('_sliver_timeline'),
|
||||||
topSliverWidget: topSliverWidget,
|
topSliverWidget: topSliverWidget,
|
||||||
topSliverWidgetHeight: topSliverWidgetHeight,
|
topSliverWidgetHeight: topSliverWidgetHeight,
|
||||||
appBar: appBar,
|
appBar: appBar,
|
||||||
@@ -105,6 +106,7 @@ class _AlwaysReadOnlyNotifier extends ReadOnlyModeNotifier {
|
|||||||
|
|
||||||
class _SliverTimeline extends ConsumerStatefulWidget {
|
class _SliverTimeline extends ConsumerStatefulWidget {
|
||||||
const _SliverTimeline({
|
const _SliverTimeline({
|
||||||
|
super.key,
|
||||||
this.topSliverWidget,
|
this.topSliverWidget,
|
||||||
this.topSliverWidgetHeight,
|
this.topSliverWidgetHeight,
|
||||||
this.appBar,
|
this.appBar,
|
||||||
@@ -139,14 +141,14 @@ class _SliverTimelineState extends ConsumerState<_SliverTimeline> {
|
|||||||
int _perRow = 4;
|
int _perRow = 4;
|
||||||
double _scaleFactor = 3.0;
|
double _scaleFactor = 3.0;
|
||||||
double _baseScaleFactor = 3.0;
|
double _baseScaleFactor = 3.0;
|
||||||
int? _scaleRestoreAssetIndex;
|
int? _restoreAssetIndex;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
_scrollController = ScrollController(
|
_scrollController = ScrollController(
|
||||||
initialScrollOffset: widget.initialScrollOffset ?? 0.0,
|
initialScrollOffset: widget.initialScrollOffset ?? 0.0,
|
||||||
onAttach: _restoreScalePosition,
|
onAttach: _restoreAssetPosition,
|
||||||
);
|
);
|
||||||
_eventSubscription = EventStream.shared.listen(_onEvent);
|
_eventSubscription = EventStream.shared.listen(_onEvent);
|
||||||
|
|
||||||
@@ -179,14 +181,14 @@ class _SliverTimelineState extends ConsumerState<_SliverTimeline> {
|
|||||||
EventStream.shared.emit(MultiSelectToggleEvent(isEnabled));
|
EventStream.shared.emit(MultiSelectToggleEvent(isEnabled));
|
||||||
}
|
}
|
||||||
|
|
||||||
void _restoreScalePosition(_) {
|
void _restoreAssetPosition(_) {
|
||||||
if (_scaleRestoreAssetIndex == null) return;
|
if (_restoreAssetIndex == null) return;
|
||||||
|
|
||||||
final asyncSegments = ref.read(timelineSegmentProvider);
|
final asyncSegments = ref.read(timelineSegmentProvider);
|
||||||
asyncSegments.whenData((segments) {
|
asyncSegments.whenData((segments) {
|
||||||
final targetSegment = segments.lastWhereOrNull((segment) => segment.firstAssetIndex <= _scaleRestoreAssetIndex!);
|
final targetSegment = segments.lastWhereOrNull((segment) => segment.firstAssetIndex <= _restoreAssetIndex!);
|
||||||
if (targetSegment != null) {
|
if (targetSegment != null) {
|
||||||
final assetIndexInSegment = _scaleRestoreAssetIndex! - targetSegment.firstAssetIndex;
|
final assetIndexInSegment = _restoreAssetIndex! - targetSegment.firstAssetIndex;
|
||||||
final newColumnCount = ref.read(timelineArgsProvider).columnCount;
|
final newColumnCount = ref.read(timelineArgsProvider).columnCount;
|
||||||
final rowIndexInSegment = (assetIndexInSegment / newColumnCount).floor();
|
final rowIndexInSegment = (assetIndexInSegment / newColumnCount).floor();
|
||||||
final targetRowIndex = targetSegment.firstIndex + 1 + rowIndexInSegment;
|
final targetRowIndex = targetSegment.firstIndex + 1 + rowIndexInSegment;
|
||||||
@@ -198,7 +200,25 @@ class _SliverTimelineState extends ConsumerState<_SliverTimeline> {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
_scaleRestoreAssetIndex = null;
|
_restoreAssetIndex = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
int? _getCurrentAssetIndex(List<Segment> segments) {
|
||||||
|
final currentOffset = _scrollController.offset.clamp(0.0, _scrollController.position.maxScrollExtent);
|
||||||
|
final segment = segments.findByOffset(currentOffset) ?? segments.lastOrNull;
|
||||||
|
int? targetAssetIndex;
|
||||||
|
if (segment != null) {
|
||||||
|
final rowIndex = segment.getMinChildIndexForScrollOffset(currentOffset);
|
||||||
|
if (rowIndex > segment.firstIndex) {
|
||||||
|
final rowIndexInSegment = rowIndex - (segment.firstIndex + 1);
|
||||||
|
final assetsPerRow = ref.read(timelineArgsProvider).columnCount;
|
||||||
|
final assetIndexInSegment = rowIndexInSegment * assetsPerRow;
|
||||||
|
targetAssetIndex = segment.firstAssetIndex + assetIndexInSegment;
|
||||||
|
} else {
|
||||||
|
targetAssetIndex = segment.firstAssetIndex;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return targetAssetIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -387,74 +407,66 @@ class _SliverTimelineState extends ConsumerState<_SliverTimeline> {
|
|||||||
|
|
||||||
return PrimaryScrollController(
|
return PrimaryScrollController(
|
||||||
controller: _scrollController,
|
controller: _scrollController,
|
||||||
child: RawGestureDetector(
|
child: NotificationListener<ScrollEndNotification>(
|
||||||
gestures: {
|
onNotification: (notification) {
|
||||||
CustomScaleGestureRecognizer: GestureRecognizerFactoryWithHandlers<CustomScaleGestureRecognizer>(
|
final currentIndex = _getCurrentAssetIndex(segments);
|
||||||
() => CustomScaleGestureRecognizer(),
|
if (currentIndex != null && mounted) {
|
||||||
(CustomScaleGestureRecognizer scale) {
|
_restoreAssetIndex = currentIndex;
|
||||||
scale.onStart = (details) {
|
}
|
||||||
_baseScaleFactor = _scaleFactor;
|
return false;
|
||||||
};
|
|
||||||
|
|
||||||
scale.onUpdate = (details) {
|
|
||||||
final newScaleFactor = math.max(math.min(5.0, _baseScaleFactor * details.scale), 1.0);
|
|
||||||
final newPerRow = 7 - newScaleFactor.toInt();
|
|
||||||
|
|
||||||
if (newPerRow != _perRow) {
|
|
||||||
final currentOffset = _scrollController.offset.clamp(
|
|
||||||
0.0,
|
|
||||||
_scrollController.position.maxScrollExtent,
|
|
||||||
);
|
|
||||||
final segment = segments.findByOffset(currentOffset) ?? segments.lastOrNull;
|
|
||||||
int? targetAssetIndex;
|
|
||||||
if (segment != null) {
|
|
||||||
final rowIndex = segment.getMinChildIndexForScrollOffset(currentOffset);
|
|
||||||
if (rowIndex > segment.firstIndex) {
|
|
||||||
final rowIndexInSegment = rowIndex - (segment.firstIndex + 1);
|
|
||||||
final assetsPerRow = ref.read(timelineArgsProvider).columnCount;
|
|
||||||
final assetIndexInSegment = rowIndexInSegment * assetsPerRow;
|
|
||||||
targetAssetIndex = segment.firstAssetIndex + assetIndexInSegment;
|
|
||||||
} else {
|
|
||||||
targetAssetIndex = segment.firstAssetIndex;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
setState(() {
|
|
||||||
_scaleFactor = newScaleFactor;
|
|
||||||
_perRow = newPerRow;
|
|
||||||
_scaleRestoreAssetIndex = targetAssetIndex;
|
|
||||||
});
|
|
||||||
|
|
||||||
ref.read(settingsProvider.notifier).set(Setting.tilesPerRow, _perRow);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
},
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
child: TimelineDragRegion(
|
child: RawGestureDetector(
|
||||||
onStart: !isReadonlyModeEnabled ? _setDragStartIndex : null,
|
gestures: {
|
||||||
onAssetEnter: _handleDragAssetEnter,
|
CustomScaleGestureRecognizer: GestureRecognizerFactoryWithHandlers<CustomScaleGestureRecognizer>(
|
||||||
onEnd: !isReadonlyModeEnabled ? _stopDrag : null,
|
() => CustomScaleGestureRecognizer(),
|
||||||
onScroll: _dragScroll,
|
(CustomScaleGestureRecognizer scale) {
|
||||||
onScrollStart: () {
|
scale.onStart = (details) {
|
||||||
// Minimize the bottom sheet when drag selection starts
|
_baseScaleFactor = _scaleFactor;
|
||||||
ref.read(timelineStateProvider.notifier).setScrolling(true);
|
};
|
||||||
|
|
||||||
|
scale.onUpdate = (details) {
|
||||||
|
final newScaleFactor = math.max(math.min(5.0, _baseScaleFactor * details.scale), 1.0);
|
||||||
|
final newPerRow = 7 - newScaleFactor.toInt();
|
||||||
|
final targetAssetIndex = _getCurrentAssetIndex(segments);
|
||||||
|
|
||||||
|
if (newPerRow != _perRow) {
|
||||||
|
setState(() {
|
||||||
|
_scaleFactor = newScaleFactor;
|
||||||
|
_perRow = newPerRow;
|
||||||
|
_restoreAssetIndex = targetAssetIndex;
|
||||||
|
});
|
||||||
|
|
||||||
|
ref.read(settingsProvider.notifier).set(Setting.tilesPerRow, _perRow);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
},
|
||||||
|
),
|
||||||
},
|
},
|
||||||
child: Stack(
|
child: TimelineDragRegion(
|
||||||
children: [
|
onStart: !isReadonlyModeEnabled ? _setDragStartIndex : null,
|
||||||
timeline,
|
onAssetEnter: _handleDragAssetEnter,
|
||||||
if (!isSelectionMode && isMultiSelectEnabled) ...[
|
onEnd: !isReadonlyModeEnabled ? _stopDrag : null,
|
||||||
Positioned(
|
onScroll: _dragScroll,
|
||||||
top: MediaQuery.paddingOf(context).top,
|
onScrollStart: () {
|
||||||
left: 25,
|
// Minimize the bottom sheet when drag selection starts
|
||||||
child: const SizedBox(
|
ref.read(timelineStateProvider.notifier).setScrolling(true);
|
||||||
height: kToolbarHeight,
|
},
|
||||||
child: Center(child: _MultiSelectStatusButton()),
|
child: Stack(
|
||||||
|
children: [
|
||||||
|
timeline,
|
||||||
|
if (!isSelectionMode && isMultiSelectEnabled) ...[
|
||||||
|
Positioned(
|
||||||
|
top: MediaQuery.paddingOf(context).top,
|
||||||
|
left: 25,
|
||||||
|
child: const SizedBox(
|
||||||
|
height: kToolbarHeight,
|
||||||
|
child: Center(child: _MultiSelectStatusButton()),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
if (widget.bottomSheet != null) widget.bottomSheet!,
|
||||||
if (widget.bottomSheet != null) widget.bottomSheet!,
|
],
|
||||||
],
|
],
|
||||||
],
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user