Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c0230ccf3b | |||
| 224bb46b4a | |||
| ad0b96a1e5 | |||
| 38226fd240 | |||
| f193c5a53f | |||
| debc35a4d5 | |||
| 5de76dbaee | |||
| d4b110fc47 | |||
| f7acf1886c |
@@ -6,7 +6,6 @@ cli:
|
|||||||
documentation:
|
documentation:
|
||||||
- changed-files:
|
- changed-files:
|
||||||
- any-glob-to-any-file:
|
- any-glob-to-any-file:
|
||||||
- docs/blob/**
|
|
||||||
- docs/docs/**
|
- docs/docs/**
|
||||||
- docs/src/**
|
- docs/src/**
|
||||||
- docs/static/**
|
- docs/static/**
|
||||||
|
|||||||
@@ -10,6 +10,11 @@ on:
|
|||||||
required: true
|
required: true
|
||||||
WEBLATE_TOKEN:
|
WEBLATE_TOKEN:
|
||||||
required: true
|
required: true
|
||||||
|
inputs:
|
||||||
|
skip:
|
||||||
|
description: 'Skip translations'
|
||||||
|
required: false
|
||||||
|
type: boolean
|
||||||
|
|
||||||
permissions: {}
|
permissions: {}
|
||||||
|
|
||||||
@@ -25,6 +30,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Find translation PR
|
- name: Find translation PR
|
||||||
id: find_pr
|
id: find_pr
|
||||||
|
if: ${{ inputs.skip != true }}
|
||||||
env:
|
env:
|
||||||
GH_TOKEN: ${{ github.token }}
|
GH_TOKEN: ${{ github.token }}
|
||||||
run: |
|
run: |
|
||||||
@@ -51,18 +57,21 @@ jobs:
|
|||||||
|
|
||||||
- name: Generate a token
|
- name: Generate a token
|
||||||
id: generate_token
|
id: generate_token
|
||||||
|
if: ${{ inputs.skip != true }}
|
||||||
uses: actions/create-github-app-token@a8d616148505b5069dccd32f177bb87d7f39123b # v2.1.1
|
uses: actions/create-github-app-token@a8d616148505b5069dccd32f177bb87d7f39123b # v2.1.1
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
|
|
||||||
- name: Lock weblate
|
- name: Lock weblate
|
||||||
|
if: ${{ inputs.skip != true }}
|
||||||
env:
|
env:
|
||||||
WEBLATE_TOKEN: ${{ secrets.WEBLATE_TOKEN }}
|
WEBLATE_TOKEN: ${{ secrets.WEBLATE_TOKEN }}
|
||||||
run: |
|
run: |
|
||||||
curl --fail-with-body -X POST -H "Authorization: Token $WEBLATE_TOKEN" "$WEBLATE_HOST/api/components/$WEBLATE_COMPONENT/lock/" -d lock=true
|
curl --fail-with-body -X POST -H "Authorization: Token $WEBLATE_TOKEN" "$WEBLATE_HOST/api/components/$WEBLATE_COMPONENT/lock/" -d lock=true
|
||||||
|
|
||||||
- name: Commit translations
|
- name: Commit translations
|
||||||
|
if: ${{ inputs.skip != true }}
|
||||||
env:
|
env:
|
||||||
WEBLATE_TOKEN: ${{ secrets.WEBLATE_TOKEN }}
|
WEBLATE_TOKEN: ${{ secrets.WEBLATE_TOKEN }}
|
||||||
run: |
|
run: |
|
||||||
@@ -71,6 +80,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Merge PR
|
- name: Merge PR
|
||||||
id: merge_pr
|
id: merge_pr
|
||||||
|
if: ${{ inputs.skip != true }}
|
||||||
env:
|
env:
|
||||||
GH_TOKEN: ${{ steps.generate_token.outputs.token }}
|
GH_TOKEN: ${{ steps.generate_token.outputs.token }}
|
||||||
PR_NUMBER: ${{ steps.find_pr.outputs.PR_NUMBER }}
|
PR_NUMBER: ${{ steps.find_pr.outputs.PR_NUMBER }}
|
||||||
@@ -83,6 +93,7 @@ jobs:
|
|||||||
gh pr merge "$PR_NUMBER" --repo "$GITHUB_REPOSITORY" --auto --squash
|
gh pr merge "$PR_NUMBER" --repo "$GITHUB_REPOSITORY" --auto --squash
|
||||||
|
|
||||||
- name: Wait for PR to merge
|
- name: Wait for PR to merge
|
||||||
|
if: ${{ inputs.skip != true }}
|
||||||
env:
|
env:
|
||||||
GH_TOKEN: ${{ steps.generate_token.outputs.token }}
|
GH_TOKEN: ${{ steps.generate_token.outputs.token }}
|
||||||
PR_NUMBER: ${{ steps.find_pr.outputs.PR_NUMBER }}
|
PR_NUMBER: ${{ steps.find_pr.outputs.PR_NUMBER }}
|
||||||
@@ -106,7 +117,12 @@ jobs:
|
|||||||
exit 1
|
exit 1
|
||||||
|
|
||||||
- name: Unlock weblate
|
- name: Unlock weblate
|
||||||
|
if: ${{ inputs.skip != true }}
|
||||||
env:
|
env:
|
||||||
WEBLATE_TOKEN: ${{ secrets.WEBLATE_TOKEN }}
|
WEBLATE_TOKEN: ${{ secrets.WEBLATE_TOKEN }}
|
||||||
run: |
|
run: |
|
||||||
curl --fail-with-body -X POST -H "Authorization: Token $WEBLATE_TOKEN" "$WEBLATE_HOST/api/components/$WEBLATE_COMPONENT/lock/" -d lock=false
|
curl --fail-with-body -X POST -H "Authorization: Token $WEBLATE_TOKEN" "$WEBLATE_HOST/api/components/$WEBLATE_COMPONENT/lock/" -d lock=false
|
||||||
|
|
||||||
|
- name: Report success
|
||||||
|
run: |
|
||||||
|
echo "Workflow completed successfully (or was skipped)"
|
||||||
|
|||||||
@@ -10,12 +10,17 @@ on:
|
|||||||
type: choice
|
type: choice
|
||||||
options:
|
options:
|
||||||
- 'false'
|
- 'false'
|
||||||
|
- major
|
||||||
- minor
|
- minor
|
||||||
- patch
|
- patch
|
||||||
mobileBump:
|
mobileBump:
|
||||||
description: 'Bump mobile build number'
|
description: 'Bump mobile build number'
|
||||||
required: false
|
required: false
|
||||||
type: boolean
|
type: boolean
|
||||||
|
skipTranslations:
|
||||||
|
description: 'Skip translations'
|
||||||
|
required: false
|
||||||
|
type: boolean
|
||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
group: ${{ github.workflow }}-${{ github.ref }}-root
|
group: ${{ github.workflow }}-${{ github.ref }}-root
|
||||||
@@ -26,6 +31,8 @@ permissions: {}
|
|||||||
jobs:
|
jobs:
|
||||||
merge_translations:
|
merge_translations:
|
||||||
uses: ./.github/workflows/merge-translations.yml
|
uses: ./.github/workflows/merge-translations.yml
|
||||||
|
with:
|
||||||
|
skip: ${{ inputs.skipTranslations }}
|
||||||
permissions:
|
permissions:
|
||||||
pull-requests: write
|
pull-requests: write
|
||||||
secrets:
|
secrets:
|
||||||
@@ -35,6 +42,7 @@ jobs:
|
|||||||
|
|
||||||
bump_version:
|
bump_version:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
needs: [merge_translations]
|
||||||
outputs:
|
outputs:
|
||||||
ref: ${{ steps.push-tag.outputs.commit_long_sha }}
|
ref: ${{ steps.push-tag.outputs.commit_long_sha }}
|
||||||
permissions: {} # No job-level permissions are needed because it uses the app-token
|
permissions: {} # No job-level permissions are needed because it uses the app-token
|
||||||
@@ -51,6 +59,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
token: ${{ steps.generate-token.outputs.token }}
|
token: ${{ steps.generate-token.outputs.token }}
|
||||||
persist-credentials: true
|
persist-credentials: true
|
||||||
|
ref: main
|
||||||
|
|
||||||
- name: Install uv
|
- name: Install uv
|
||||||
uses: astral-sh/setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 # v5.4.2
|
uses: astral-sh/setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 # v5.4.2
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@immich/cli",
|
"name": "@immich/cli",
|
||||||
"version": "2.2.91",
|
"version": "2.2.92",
|
||||||
"description": "Command Line Interface (CLI) for Immich",
|
"description": "Command Line Interface (CLI) for Immich",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"exports": "./dist/index.js",
|
"exports": "./dist/index.js",
|
||||||
|
|||||||
@@ -1,110 +0,0 @@
|
|||||||
---
|
|
||||||
slug: release-1-36
|
|
||||||
title: Release v1.36.0
|
|
||||||
authors: [alextran]
|
|
||||||
tags: [release]
|
|
||||||
date: 2022-11-10
|
|
||||||
---
|
|
||||||
|
|
||||||
Hello everyone, it is my pleasure to deliver the new release of Immich to you. The team has been working hard to bring you the new features and improvements. This release includes some big features that the community has been asking since the beginning of Immich. We hope you will enjoy it.
|
|
||||||
|
|
||||||
Some notable features are:
|
|
||||||
|
|
||||||
- OAuth integration
|
|
||||||
- LivePhoto support on iOS
|
|
||||||
- User config system
|
|
||||||
|
|
||||||
<!--truncate-->
|
|
||||||
|
|
||||||
## LivePhoto iOS Support 🎉
|
|
||||||
|
|
||||||
LivePhoto on iOS is now supported in Immich.
|
|
||||||
|
|
||||||
The motion part will now be uploaded and can be played on the mobile app and the web.
|
|
||||||
|
|
||||||
:::caution
|
|
||||||
|
|
||||||
- The server and the app has to be on version **1.36.x** for the application to work correctly.
|
|
||||||
- Previous uploaded photos will not be updated automatically, you will have to remove and reupload them if you want to keep the LivePhoto functionality.
|
|
||||||
|
|
||||||
:::
|
|
||||||
|
|
||||||
<img
|
|
||||||
src="https://media.giphy.com/media/fTrGceZd7t1ewi8ESc/giphy.gif"
|
|
||||||
width="100%"
|
|
||||||
style={{
|
|
||||||
borderRadius: '10px',
|
|
||||||
boxShadow: 'rgba(9, 30, 66, 0.25) 0px 1px 1px, rgba(9, 30, 66, 0.13) 0px 0px 1px 1px',
|
|
||||||
}}
|
|
||||||
title="LivePhoto playback on the web"
|
|
||||||
/>
|
|
||||||
|
|
||||||
## OAuth Integration 🎉
|
|
||||||
|
|
||||||
I want to borrow this chance to express my gratitude to [@EnricoBilla](https://github.com/EnricoBilla), who has been the trailblazer for this feature since the beginning days of Immich. His PR has sparked ideas, suggestions, and discussion among the team member on how to integrate this feature successfully into the app. Thank you so much for your work and your time.
|
|
||||||
|
|
||||||
OAuth is now integrated into the system. Please follow the guide [here](https://immich.app/docs/usage/oauth) to set up your OAuth integration
|
|
||||||
|
|
||||||
After setting up the correct environment variables in the `.env` file, as shown below
|
|
||||||
|
|
||||||
| Key | Type | Default | Description |
|
|
||||||
| ------------------- | ------- | -------------------- | ------------------------------------------------------------------------- |
|
|
||||||
| OAUTH_ENABLED | boolean | false | Enable/disable OAuth2 |
|
|
||||||
| OAUTH_ISSUER_URL | URL | (required) | Required. Self-discovery URL for client |
|
|
||||||
| OAUTH_CLIENT_ID | string | (required) | Required. Client ID |
|
|
||||||
| OAUTH_CLIENT_SECRET | string | (required) | Required. Client Secret |
|
|
||||||
| OAUTH_SCOPE | string | openid email profile | Full list of scopes to send with the request (space delimited) |
|
|
||||||
| OAUTH_AUTO_REGISTER | boolean | true | When true, will automatically register a user the first time they sign in |
|
|
||||||
| OAUTH_BUTTON_TEXT | string | Login with OAuth | Text for the OAuth button on the web |
|
|
||||||
|
|
||||||
```bash title="Authentik Example"
|
|
||||||
OAUTH_ENABLED=true
|
|
||||||
OAUTH_ISSUER_URL=http://10.1.15.216:9000/application/o/immich-test/
|
|
||||||
OAUTH_CLIENT_ID=30596v8f78a4b6a97d5985c3076b6b4c4d12ddc33
|
|
||||||
OAUTH_CLIENT_SECRET=50f1eafdec353b95b1c638db390db4ab67ef035a51212dbec2f56175e2eb272b5d572c099176e6fe116ecf47ffdd544bgdb9e2edc588307ee0339d25eeccd88
|
|
||||||
OAUTH_BUTTON_TEXT=Login with Authentik
|
|
||||||
```
|
|
||||||
|
|
||||||
The web will have the option to sign in with OAuth.
|
|
||||||
|
|
||||||
<img
|
|
||||||
src="https://user-images.githubusercontent.com/27055614/202923726-f43fa148-47f5-4182-8f29-b0b87e4586fa.png"
|
|
||||||
width="50%"
|
|
||||||
title="Web Sign in with OAuth"
|
|
||||||
style={{
|
|
||||||
borderRadius: '10px',
|
|
||||||
boxShadow: 'rgba(9, 30, 66, 0.25) 0px 1px 1px, rgba(9, 30, 66, 0.13) 0px 0px 1px 1px',
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
|
|
||||||
The mobile app will check if the server has OAuth enabled before displaying the OAuth
|
|
||||||
sign-in button.
|
|
||||||
|
|
||||||
<img
|
|
||||||
src="https://media.giphy.com/media/3iy3SaNkVYtlkEiw06/giphy.gif"
|
|
||||||
title="Mobile sign in with OAuth"
|
|
||||||
style={{
|
|
||||||
borderRadius: '10px',
|
|
||||||
boxShadow: 'rgba(9, 30, 66, 0.25) 0px 1px 1px, rgba(9, 30, 66, 0.13) 0px 0px 1px 1px',
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
|
|
||||||
## Support
|
|
||||||
|
|
||||||
<img
|
|
||||||
src="https://media.giphy.com/media/LStqgGESXW8XnuCv5y/giphy.gif"
|
|
||||||
width="300"
|
|
||||||
style={{
|
|
||||||
borderRadius: '10px',
|
|
||||||
boxShadow: 'rgba(9, 30, 66, 0.25) 0px 1px 1px, rgba(9, 30, 66, 0.13) 0px 0px 1px 1px',
|
|
||||||
}}
|
|
||||||
title="Support the project"
|
|
||||||
/>
|
|
||||||
|
|
||||||
If you find the project helpful and it helps you in some ways, you can support the project [one time](https://github.com/sponsors/alextran1502?frequency=one-time&sponsor=alextran1502) or [monthly](https://github.com/sponsors/alextran1502) from GitHub Sponsor
|
|
||||||
|
|
||||||
It is a great way to let me know that you want me to continue developing and working on this project for years to come.
|
|
||||||
|
|
||||||
## Details
|
|
||||||
|
|
||||||
For more details, please check out the [release note](https://github.com/immich-app/immich/releases/tag/v1.36.0_55-dev)
|
|
||||||
@@ -1,103 +0,0 @@
|
|||||||
---
|
|
||||||
title: Immich Update - June 2023
|
|
||||||
authors: [alextran]
|
|
||||||
tags: [update]
|
|
||||||
---
|
|
||||||
|
|
||||||
Hello everybody, Alex here!
|
|
||||||
|
|
||||||
I am back with another update on Immich. It has been only a month since my last update (May 18th, 2023), but it seems forever. I think the rapid releases of Immich and the amount of work make the perspective of time change in Immich’s world. We have some exciting updates that I think you will like.
|
|
||||||
|
|
||||||
Before going into detail, on behalf of the core team, I would like to thank all of you for loving Immich and contributing to the project. Thank you for helping me make Immich an enjoyable alternative solution to Google Photos so that you have complete control of your data and privacy. I know we are still young and have a lot of work to do, but I am confident we will get there with help from the community. I appreciate all of you from the bottom of my heart!
|
|
||||||
|
|
||||||
<!--truncate-->
|
|
||||||
|
|
||||||
And now, to the exciting part, what is new in Immich’s world?
|
|
||||||
|
|
||||||
- Initial support for existing gallery.
|
|
||||||
- Memory feature.
|
|
||||||
- Support XMP sidecar.
|
|
||||||
- Support more raw formats.
|
|
||||||
- Justified layout for web timeline and blurred thumbnail hash.
|
|
||||||
- Mechanism to host machine learning on a completely different machine.
|
|
||||||
|
|
||||||
## Support for existing gallery
|
|
||||||
|
|
||||||
I know this is the most controversial feature when it comes to Immich’s way of ingesting photos and videos. For many users, having to upload photos and videos to Immich is simply not working. We listen, discuss, and digest this feature internally more than you imagine because it is not a simple feature to tackle while keeping the performance and the user experience at the top level, which is Immich’s primary goal.
|
|
||||||
|
|
||||||
Thankfully, we have many great contributors and developers that want to make this come true. So we came up with an initial implementation of this feature in the form of a supporting read-only gallery.
|
|
||||||
|
|
||||||
To be concise, Immich can now read in the gallery files, register the path into the database, and then generate necessary files and put them through Immich’s machine learning pipeline so you can use all the goodness of Immich without the need to upload them. Since this is the initial implementation, some actions/behavior are not yet supported, and we aim to build toward them in future releases, namely:
|
|
||||||
|
|
||||||
- Assets are not automatically synced and must instead be manually synced with the CLI tool.
|
|
||||||
- Only new files that are added to the gallery will be detected.
|
|
||||||
- Deleted and moved files will not be detected.
|
|
||||||
|
|
||||||
## Memory feature
|
|
||||||
|
|
||||||
This is considered a fun feature that the team and I wanted to build for so long, but we had to put it off because of the refactoring of the code base. The code base is now in a good enough form to circle back and add more exciting features.
|
|
||||||
|
|
||||||
This memory feature is very much similar to GPhotos' implementation of “x years since…”. We are aiming to add more categories of memories in the future, such as “Spotlight of the day” or “Day of the Week highlights”
|
|
||||||
|
|
||||||
<iframe
|
|
||||||
width="560"
|
|
||||||
height="315"
|
|
||||||
src="https://www.youtube.com/embed/j5XZKvViPew"
|
|
||||||
title="YouTube video player"
|
|
||||||
frameborder="0"
|
|
||||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
|
|
||||||
allowfullscreen
|
|
||||||
></iframe>
|
|
||||||
|
|
||||||
This feature is now available on the web and will be ported to the mobile app in the near future.
|
|
||||||
|
|
||||||
## Support XMP Sidecar
|
|
||||||
|
|
||||||
Immich can now import/upload XMP sidecars from the CLI and use the information as the metadata of assets.
|
|
||||||
|
|
||||||
## Support more raw formats.
|
|
||||||
|
|
||||||
With the recent updates on the dependencies of Immich, we are now extending and hardening support for multiple raw formats. So users with DSLR or mirrorless cameras can now upload their original files to Immich and have them displayed in high-quality thumbnails on the web and mobile view.
|
|
||||||
|
|
||||||
## Justified layout for web timeline and blurred thumbnail hash
|
|
||||||
|
|
||||||
This is an aesthetic improvement in user experience when browsing the timeline. Photos and videos are now displayed correctly with perspective orientation, making the browsing experience more pleasurable.
|
|
||||||
|
|
||||||
To further improve the browsing experience, we now added a blur hash to the thumbnail, so the transition is more natural with a dreamy fade in effect, similar to how our brain goes from faded to vivid memory
|
|
||||||
|
|
||||||
<iframe
|
|
||||||
width="560"
|
|
||||||
height="315"
|
|
||||||
src="https://www.youtube.com/embed/b95FLmGHRFc"
|
|
||||||
title="YouTube video player"
|
|
||||||
frameborder="0"
|
|
||||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
|
|
||||||
allowfullscreen
|
|
||||||
></iframe>
|
|
||||||
|
|
||||||
## Hosting machine learning container on a different machine
|
|
||||||
|
|
||||||
With more capabilities Immich is building toward, machine learning will get more powerful and therefore require more resources to run effectively. However, we understand that users might not have the best server resources where they host the Immich instance. Therefore, we changed how machine learning interacts and receives the photos and videos to run through its inference pipeline.
|
|
||||||
|
|
||||||
The machine learning container is now a headless system that can run on any machine. As long as your Immich instance can communicate with the system running the machine learning container, it can send the files and receive the required information to make Immich powerful in terms of searching and intelligence. This helps you to utilize a more powerful machine in your home/infrastructure to perform the CPU-intensive tasks while letting Immich only handle the I/O operations for a pleasant and smooth experience.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
So, those are the highlights for the team and the community after a busy month. There are a lot more changes and improvements. I encourage you to read some release notes, starting from version [v1.57.0](https://github.com/immich-app/immich/releases/tag/v1.57.0) to now.
|
|
||||||
|
|
||||||
Thank you, and I am asking for your support for the project. I hope to be a full-time maintainer of Immich one day to dedicate myself to the project as my life works for the community and my family. You can find the support channels below:
|
|
||||||
|
|
||||||
- Monthly donation via [GitHub Sponsors](https://github.com/sponsors/alextran1502)
|
|
||||||
- One-time donation via [GitHub Sponsors](https://github.com/sponsors/alextran1502?frequency=one-time&sponsor=alextran1502)
|
|
||||||
- [Liberapay](https://liberapay.com/alex.tran1502/)
|
|
||||||
- [buymeacoffee](https://www.buymeacoffee.com/altran1502)
|
|
||||||
- Bitcoin: 3QVAb9dCHutquVejeNXitPqZX26Yg5kxb7
|
|
||||||
- Give a project a star - the contributors love gazing at the stars and seeing their creations shining in the sky.
|
|
||||||
|
|
||||||
Join our friendly [Discord](https://discord.immich.app) to talk and discuss Immich, tech, or anything
|
|
||||||
|
|
||||||
Cheer!
|
|
||||||
|
|
||||||
Until next time!
|
|
||||||
|
|
||||||
Alex
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 1.8 MiB |
@@ -1,151 +0,0 @@
|
|||||||
---
|
|
||||||
title: Immich Update - July 2023
|
|
||||||
authors: [alextran]
|
|
||||||
tags: [update, v1.64.0-v1.71.0]
|
|
||||||
---
|
|
||||||
|
|
||||||
Hello, Immich fans, another month, another milestone. We hope you are staying cool and safe in this scorching hot summer across the globe.
|
|
||||||
|
|
||||||
Immich recently got some good recognition when getting to the front page of HackerNews, which helped to let more people know about the project's existence. The project will help more and more people find a solution to control the privacy of their most precious moments. And with the gain in popularity and recognition, we have gotten new users and more questions from the community than ever.
|
|
||||||
|
|
||||||
I want to express my gratitude to all the contributors and the community who have been tremendously helpful to new users' questions and provided technical support.
|
|
||||||
|
|
||||||
Below are the highlights of new features we added to the application over the past month, along with countless bug fixes and improvements across the board, from developer experience to resource optimization and UI/UX improvement. I hope you find these topics as exciting as I am.
|
|
||||||
|
|
||||||
## Highlights
|
|
||||||
|
|
||||||
- Memories feature.
|
|
||||||
- Facial recognition improvements.
|
|
||||||
- Improvements on multi selection behavior on the web.
|
|
||||||
- Shortcuts for common actions on the web.
|
|
||||||
- Support viewer for 360-panorama photos.
|
|
||||||
|
|
||||||
<!--truncate-->
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### Memories feature
|
|
||||||
|
|
||||||
We've added the memory feature on the mobile app, so you can reminisce about your past memories.
|
|
||||||
|
|
||||||
<iframe
|
|
||||||
width="560"
|
|
||||||
height="315"
|
|
||||||
src="https://youtube.com/embed/c7OTl-RqNRE"
|
|
||||||
title="YouTube video player"
|
|
||||||
frameborder="0"
|
|
||||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
|
|
||||||
allowfullscreen
|
|
||||||
></iframe>
|
|
||||||
|
|
||||||
### Facial recognition improvements
|
|
||||||
|
|
||||||
Over the past few releases, we have added many UI improvements to the facial recognition feature to help you manage the recognized people better. Some of the highlights:
|
|
||||||
|
|
||||||
#### Choose a new feature photo for a person.
|
|
||||||
|
|
||||||
<iframe
|
|
||||||
width="560"
|
|
||||||
height="315"
|
|
||||||
src="https://youtube.com/embed/PmJp8DmSh1U"
|
|
||||||
title="YouTube video player"
|
|
||||||
frameborder="0"
|
|
||||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
|
|
||||||
allowfullscreen
|
|
||||||
></iframe>
|
|
||||||
|
|
||||||
#### Hide and show faces.
|
|
||||||
|
|
||||||
You can now select irrelevant faces to hide them. The hidden faces won’t be displayed in search results and the people section in the info panel.
|
|
||||||
|
|
||||||
#### Merge faces.
|
|
||||||
|
|
||||||
This is useful when you have multiple faces of the same person in your photos, and you want to merge them into one.
|
|
||||||
|
|
||||||
<iframe
|
|
||||||
width="560"
|
|
||||||
height="315"
|
|
||||||
src="https://youtube.com/embed/-Xskhw-vpc4"
|
|
||||||
title="YouTube video player"
|
|
||||||
frameborder="0"
|
|
||||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
|
|
||||||
allowfullscreen
|
|
||||||
></iframe>
|
|
||||||
|
|
||||||
We also added a nifty mechanism that when naming a face, similar names will prompt you a merge face option for the convenience.
|
|
||||||
|
|
||||||
<iframe
|
|
||||||
width="560"
|
|
||||||
height="315"
|
|
||||||
src="https://youtube.com/embed/XzE6wficbl4"
|
|
||||||
title="YouTube video player"
|
|
||||||
frameborder="0"
|
|
||||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
|
|
||||||
allowfullscreen
|
|
||||||
></iframe>
|
|
||||||
|
|
||||||
### Improvements on multi selection behavior on the web
|
|
||||||
|
|
||||||
We have added a new multi selection behavior on the web to help you select multiple items easier. You can now select a range of photos and videos by holding the `Shift` key.
|
|
||||||
|
|
||||||
<iframe
|
|
||||||
width="560"
|
|
||||||
height="315"
|
|
||||||
src="https://youtube.com/embed/e_SiuHpVnmM"
|
|
||||||
title="YouTube video player"
|
|
||||||
frameborder="0"
|
|
||||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
|
|
||||||
allowfullscreen
|
|
||||||
></iframe>
|
|
||||||
|
|
||||||
### Shortcuts for common actions on the web.
|
|
||||||
|
|
||||||
Some of us only navigate the world and the web with a keyboard (looking at you, Vim and Emacs users). So it would take away the sacred weapon of choice to require many clicks to perform repetitive actions. So we added quick shortcuts for the following action on the web.
|
|
||||||
|
|
||||||
<img
|
|
||||||
src={require('./images/web-shortcuts-panel.png').default}
|
|
||||||
width="100%"
|
|
||||||
style={{ borderRadius: '25px' }}
|
|
||||||
alt="Dot Env Example"
|
|
||||||
/>
|
|
||||||
|
|
||||||
### Support viewer for 360-panorama photos.
|
|
||||||
|
|
||||||
Photos with the EXIF property of `ProjectionType` will now have a special viewer on the web to view all the angles of the panorama.
|
|
||||||
|
|
||||||
The thumbnail of the 360 degrees panoramas will have a special icon on the top right of the thumbnail
|
|
||||||
|
|
||||||
<img
|
|
||||||
src="https://github.com/immich-app/immich/assets/61410067/728ca1b0-375c-4631-8081-a609843e702f"
|
|
||||||
width="50%"
|
|
||||||
style={{ borderRadius: '25px' }}
|
|
||||||
alt="Dot Env Example"
|
|
||||||
/>
|
|
||||||
|
|
||||||
Panorama in the detail view
|
|
||||||
|
|
||||||
<img
|
|
||||||
src="https://github.com/immich-app/immich/assets/61410067/3c89dac4-395d-45fa-9bc5-98a6248fd476"
|
|
||||||
width="50%"
|
|
||||||
style={{ borderRadius: '25px' }}
|
|
||||||
alt="Dot Env Example"
|
|
||||||
/>
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
Thank you, and I am asking for your support for the project. I hope to be a full-time maintainer of Immich one day to dedicate myself to the project as my life's work for the community and my family. You can find the support channels below:
|
|
||||||
|
|
||||||
- Monthly donation via [GitHub Sponsors](https://github.com/sponsors/alextran1502)
|
|
||||||
- One-time donation via [GitHub Sponsors](https://github.com/sponsors/alextran1502?frequency=one-time&sponsor=alextran1502)
|
|
||||||
- [Liberapay](https://liberapay.com/alex.tran1502/)
|
|
||||||
- [buymeacoffee](https://www.buymeacoffee.com/altran1502)
|
|
||||||
- Bitcoin: 3QVAb9dCHutquVejeNXitPqZX26Yg5kxb7
|
|
||||||
- Give a project a star - the contributors love gazing at the stars and seeing their creations shining in the sky.
|
|
||||||
|
|
||||||
Join our friendly [Discord](https://discord.immich.app) to talk and discuss Immich, tech, or anything
|
|
||||||
|
|
||||||
Cheer!
|
|
||||||
|
|
||||||
Until next time!
|
|
||||||
|
|
||||||
Alex
|
|
||||||
@@ -1,71 +0,0 @@
|
|||||||
---
|
|
||||||
title: Immich Recap 2023
|
|
||||||
authors: [alextran]
|
|
||||||
tags: [update, recap-2023]
|
|
||||||
date: 2023-12-30T00:00
|
|
||||||
---
|
|
||||||
|
|
||||||
Hi everyone,
|
|
||||||
|
|
||||||
Alex from Immich here.
|
|
||||||
|
|
||||||
We are entering the last few weeks of 2023, and it has been quite a year for Immich. The project has grown so much in terms of users, developers, features, maturity, and the community around it. When I started working on Immich, it was simply a challenge for myself and an opportunity to learn new technologies, crafting something fun and useful for my wife during my free time to satisfy my urge to build and create things. I never thought it would become so popular and help so many people. At the end of the day, all we have is memory. I am proud that the team and I have created something to make storing and viewing those precious memories easier without restrictions and without sacrificing our privacy. As the year closes, here’s a recap of everything the project accomplished in 2023.
|
|
||||||
|
|
||||||
# Milestones
|
|
||||||
|
|
||||||
- Public shared links
|
|
||||||
- Favorites page
|
|
||||||
- Immich turned 1
|
|
||||||
- Material Design 3 on the mobile app
|
|
||||||
- Auto-link LivePhotos server-side
|
|
||||||
- iOS background backup
|
|
||||||
- Explore page
|
|
||||||
- CLIP search
|
|
||||||
- Search by metadata
|
|
||||||
- Responsive web app
|
|
||||||
- Archive page
|
|
||||||
- Asset descriptions
|
|
||||||
- 10,000 stars on GitHub
|
|
||||||
- Manage auth devices
|
|
||||||
- Map view
|
|
||||||
- Facial recognition, clustering, searching, renaming, and person management
|
|
||||||
- Partner sharing and unifying timeline between partners' users
|
|
||||||
- Custom storage label
|
|
||||||
- XMP sidecar reading
|
|
||||||
- RAW file formats
|
|
||||||
- Justified layout on the web
|
|
||||||
- Memories
|
|
||||||
- Multi-select via SHIFT
|
|
||||||
- Android Motion Photos
|
|
||||||
- 360° Photos
|
|
||||||
- Album description
|
|
||||||
- Album performance improvements (time buckets)
|
|
||||||
- Video hardware transcoding
|
|
||||||
- Slideshow mode on the web
|
|
||||||
- Configuration file
|
|
||||||
- External libraries
|
|
||||||
- Trash page
|
|
||||||
- Custom theme
|
|
||||||
- Asset Stacking
|
|
||||||
- 20,000 stars on GitHub
|
|
||||||
- Shared album activity and comments
|
|
||||||
- CLI v2
|
|
||||||
- Down to 5 containers (from 8)
|
|
||||||
|
|
||||||
# Fun Statistics
|
|
||||||
|
|
||||||
- We have gone from the release version `1.41.0` to `1.90.0` at the time of writing. On average, we see a release every 7 days.
|
|
||||||
- According to GitHub's metrics, the `immich-server` container image has been pulled almost _4 million_ times.
|
|
||||||
- According to mobile app store metrics, we have 22,000 installations on Android and 6700 installation units on iOS (opt-in only).
|
|
||||||
- Immich is making around $1200/month on average from donations. (Thank you all so much!)
|
|
||||||
- We were guests on two podcasts:
|
|
||||||
- [Self-hosted](https://selfhosted.show/110)
|
|
||||||
- [The Vergecast](https://www.theverge.com/23938533/self-hosting-local-first-software-vergecast)
|
|
||||||
- There are over 4,500 members on the Discord server.
|
|
||||||
- We have over 22,000 stars on the main GitHub repository, gaining 15,000 stars since January 2023.
|
|
||||||
|
|
||||||
Diving into the next year, the team will continue to build on the foundation we have laid out over the past year, implementing more advanced features for searching, organizing, and sharing between users. Bugs will continue to be squashed and conquered. “Shit Alex wrote'' code will continue to be replaced by beautiful, clean code from Jason, Zack, Boet, Daniel, Osorin, Mert, Fynn, Marty, Martin, and Jonathan. The team has my eternal gratitude for creating a welcoming environment for new contributors, helping, teaching, and learning from each other. I’ve realized that hardly a day has gone by where the team hasn’t been in communication about Immich related topics over the past year.
|
|
||||||
|
|
||||||
My long-term goal is to help hone Immich into a diamond in the FOSS space, where the UI, UX, development experiences, documentation, and quality are at a high standard while remaining free for everybody to use.
|
|
||||||
|
|
||||||
I hope you enjoy Immich and have a happy and peaceful holiday.
|
|
||||||
@@ -1,75 +0,0 @@
|
|||||||
---
|
|
||||||
title: The Immich core team goes full-time
|
|
||||||
authors: [alextran]
|
|
||||||
tags: [update, announcement, FUTO]
|
|
||||||
date: 2024-05-01T00:00
|
|
||||||
---
|
|
||||||
|
|
||||||
**Immich is joining [FUTO](https://futo.org/)!**
|
|
||||||
|
|
||||||
Since the beginning of this adventure, my goal has always been to create a better world for my children. Memories are priceless, and privacy should not be a luxury. However, building quality open source has its challenges. Over the past two years, it has taken significant dedication, time, and effort.
|
|
||||||
|
|
||||||
Recently, a company in Austin, Texas, called FUTO contacted the team. FUTO strives to develop quality and sustainable open software. They build software alternatives that focus on giving control to users. From their mission statement:
|
|
||||||
|
|
||||||
“Computers should belong to you, the people. We develop and fund technology to give them back.”
|
|
||||||
|
|
||||||
FUTO loved Immich and wanted to see if we’d consider working with them to take the project to the next level. In short, FUTO offered to:
|
|
||||||
|
|
||||||
- Pay the core team to work on Immich full-time
|
|
||||||
- Let us keep full autonomy about the project’s direction and leadership
|
|
||||||
- Continue to license Immich under AGPL
|
|
||||||
- Keep Immich’s development direction with no paywalled features
|
|
||||||
- Keep Immich “built for the people” (no ads, data mining/selling, or alternative motives)
|
|
||||||
- Provide us with financial, technical, legal, and administrative support
|
|
||||||
|
|
||||||
After careful deliberation, the team decided that FUTO’s vision closely aligns with our own: to build a better future by providing a polished, performant, and privacy-preserving open-source software solution for photo and video management delivered in a sustainable way.
|
|
||||||
|
|
||||||
Immich’s future has never looked brighter, and we look forward to realizing our vision for Immich as part of FUTO.
|
|
||||||
|
|
||||||
If you have more questions, we’ll host a Q&A live stream on May 9th at 3PM UTC (10AM CST). [You can ask questions here](https://www.live-ask.com/event/01HWP2SB99A1K8EXFBDKZ5Z9CF), and the stream will be live [here on our YouTube channel](https://youtube.com/live/cwz2iZwYpgg).
|
|
||||||
|
|
||||||
Cheers,
|
|
||||||
|
|
||||||
The Immich Team
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## FAQs
|
|
||||||
|
|
||||||
### What is FUTO?
|
|
||||||
|
|
||||||
[https://futo.org/what-is-futo/](https://futo.org/what-is-futo/)
|
|
||||||
|
|
||||||
### Will the license change?
|
|
||||||
|
|
||||||
No. Immich will continue to be licensed under AGPL without a CLA.
|
|
||||||
|
|
||||||
### Will Immich continue to be free?
|
|
||||||
|
|
||||||
Yes. The Immich source code will remain freely available under the AGPL license.
|
|
||||||
|
|
||||||
### Is Immich getting VC funding?
|
|
||||||
|
|
||||||
No. Venture capital implies investment in a business, often with the expectation of a future payout (exit plan). Immich is neither a business that can be acquired nor comes with a money-making exit plan.
|
|
||||||
|
|
||||||
### I am currently supporting Immich through GitHub sponsors. What will happen to my donation?
|
|
||||||
|
|
||||||
Effective immediately, all donations to the Immich organization will be canceled. In the future, we will offer an optional, modest payment option instead. Thank you to everyone who donated to help us get this far!
|
|
||||||
|
|
||||||
### How is funding sustainable?
|
|
||||||
|
|
||||||
Immich and FUTO believe a sustainable future requires a model that does not rely on users-as-a-product. To this end, FUTO advocates that users pay for good, open software. In keeping with this model, we will adopt a purchase price. This means we no longer accept donations, but — _without limiting features for those who do not pay_ — we will soon allow you to purchase Immich through a modest payment. We encourage you to pay for the high-quality software you use to foster a healthy software culture where developers build great applications without hidden motives for their users.
|
|
||||||
|
|
||||||
### When does this change take effect?
|
|
||||||
|
|
||||||
This change takes effect immediately.
|
|
||||||
|
|
||||||
### What will change?
|
|
||||||
|
|
||||||
The following things will change as Immich joins FUTO:
|
|
||||||
|
|
||||||
- The brand, logo, and other Immich trademarks will be transferred to FUTO.
|
|
||||||
- We will stop all donations to the project.
|
|
||||||
- The core team can now dedicate our full attention to Immich
|
|
||||||
- Before the end of the year, we plan to have a roadmap for what it will take to get Immich to a stable release.
|
|
||||||
- Bugs will be squashed, and features will be delivered faster.
|
|
||||||
@@ -1,91 +0,0 @@
|
|||||||
---
|
|
||||||
title: Licensing announcement - Purchase a license to support Immich
|
|
||||||
authors: [alextran]
|
|
||||||
tags: [update, announcement, FUTO]
|
|
||||||
date: 2024-07-18T00:00
|
|
||||||
---
|
|
||||||
|
|
||||||
Hello everybody,
|
|
||||||
|
|
||||||
Firstly, on behalf of the Immich team, I'd like to thank everybody for your continuous support of Immich since the very first day! Your contributions, encouragement, and community engagement have helped bring Immich to its current state. The team and I are forever grateful for that.
|
|
||||||
|
|
||||||
Since our [last announcement of the core team joining FUTO to work on Immich full-time](https://immich.app/blog/2024/immich-core-team-goes-fulltime), one of the goals of our new position is to foster a healthy relationship between the developers and the users. We believe that this enables us to create great software, establish transparent policies and build trust.
|
|
||||||
|
|
||||||
We want to build a great software application that brings value to you and your loved ones' lives. We are not using you as a product, i.e., selling or tracking your data. We are not putting annoying ads into our software. We respect your privacy. We want to be compensated for the hard work we put in to build Immich for you.
|
|
||||||
|
|
||||||
With those notes, we have enabled a way for you to financially support the continued development of Immich, ensuring the software can move forward and will be maintained, by offering a lifetime license of the software. We think if you like and use software, you should pay for it, but _we're never going to force anyone to pay or try to limit Immich for those who don't._
|
|
||||||
|
|
||||||
There are two types of license that you can choose to purchase: **Server License** and **Individual License**.
|
|
||||||
|
|
||||||
### Server License
|
|
||||||
|
|
||||||
This is a lifetime license costing **$99.99**. The license is applied to the whole server. You and all users that use your server are licensed.
|
|
||||||
|
|
||||||
### Individual License
|
|
||||||
|
|
||||||
This is a lifetime license costing **$24.99**. The license is applied to a single user, and can be used on any server they choose to connect to.
|
|
||||||
|
|
||||||
<img
|
|
||||||
width="837"
|
|
||||||
alt="license-social-gh"
|
|
||||||
src="https://github.com/user-attachments/assets/241932ed-ef3b-44ec-a9e2-ee80754e0cca"
|
|
||||||
/>
|
|
||||||
|
|
||||||
You can purchase the license on [our page - https://buy.immich.app](https://buy.immich.app).
|
|
||||||
|
|
||||||
Starting with release `v1.109.0` you can purchase and enter your purchased license key directly in the app.
|
|
||||||
|
|
||||||
<img
|
|
||||||
width="1414"
|
|
||||||
alt="license-page-gh"
|
|
||||||
src="https://github.com/user-attachments/assets/364fc32a-f6ef-4594-9fea-28d5a26ad77c"
|
|
||||||
/>
|
|
||||||
|
|
||||||
## Thank you
|
|
||||||
|
|
||||||
Thank you again for your support, this will help create a strong foundation and stability for the Immich team to continue developing and maintaining the project that you love to use.
|
|
||||||
|
|
||||||
<p align="center">
|
|
||||||
<img
|
|
||||||
src="https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExbjY2eWc5Y2F0ZW56MmR4aWE0dDhzZXlidXRmYWZyajl1bWZidXZpcyZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/87CKDqErVfMqY/giphy.gif"
|
|
||||||
width="550"
|
|
||||||
title="SUPPORT THE PROJECT!"
|
|
||||||
/>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<br />
|
|
||||||
<br />
|
|
||||||
|
|
||||||
Cheers! 🎉
|
|
||||||
|
|
||||||
Immich team
|
|
||||||
|
|
||||||
# FAQ
|
|
||||||
|
|
||||||
### 1. Where can I purchase a license?
|
|
||||||
|
|
||||||
There are several places where you can purchase the license from
|
|
||||||
|
|
||||||
- [https://buy.immich.app](https://buy.immich.app)
|
|
||||||
- [https://pay.futo.org](https://pay.futo.org/)
|
|
||||||
- or directly from the app.
|
|
||||||
|
|
||||||
### 2. Do I need both _Individual License_ and _Server License_?
|
|
||||||
|
|
||||||
No,
|
|
||||||
|
|
||||||
If you are the admin and the sole user, or your instance has less than a total of 4 users, you can buy the **Individual License** for each user.
|
|
||||||
|
|
||||||
If your instance has more than 4 users, it is more cost-effective to buy the **Server License**, which will license all the users on your instance.
|
|
||||||
|
|
||||||
### 3. What do I do if I don't pay?
|
|
||||||
|
|
||||||
You can continue using Immich without any restriction.
|
|
||||||
|
|
||||||
### 4. Will there be any paywalled features?
|
|
||||||
|
|
||||||
No, there will never be any paywalled features.
|
|
||||||
|
|
||||||
### 5. Where can I get support regarding payment issues?
|
|
||||||
|
|
||||||
You can email us with your `orderId` and your email address `billing@futo.org` or on our Discord server.
|
|
||||||
@@ -1,78 +0,0 @@
|
|||||||
---
|
|
||||||
title: Immich Update - July 2024
|
|
||||||
authors: [alextran]
|
|
||||||
date: 2024-07-01T00:00
|
|
||||||
tags: [update, v1.106.0]
|
|
||||||
---
|
|
||||||
|
|
||||||
Hello everybody! Alex from Immich here and I am back with another development progress update for the project.
|
|
||||||
|
|
||||||
Summer has returned once again, and the night sky is filled with stars, thank you for **38_000 shining stars** you have sent to our [GitHub repo](https://github.com/immich-app/immich)! Since the last announcement several core contributors have started full time. Everything is going great with development, PRs get merged with _brrrrrrr_ rate, conversation exchange between team members is on a new high, we met and are working with the great engineers at FUTO. The spirit is high and we have a lot of things brewing that we think you will like.
|
|
||||||
|
|
||||||
Let's go over some of the updates we had since the last post.
|
|
||||||
|
|
||||||
### Container consolidation
|
|
||||||
|
|
||||||
Reduced the number of total containers from 5 to 4 by making the microservices thread get spawned directly in the server container. Woohoo, remember when Immich had 7 containers?
|
|
||||||
|
|
||||||
### Email notifications
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
We added email notifications to the app with SMTP settings that you can configure for the following events
|
|
||||||
|
|
||||||
- A new account is created for you.
|
|
||||||
- You are added to a shared album.
|
|
||||||
- New media is added to an album.
|
|
||||||
|
|
||||||
### Versioned docs
|
|
||||||
|
|
||||||
You can now jump back into the past or take a peek at the unreleased version of the documentation by selecting the version on the website.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
### Similarity deduplication
|
|
||||||
|
|
||||||
With more machine learning and CLIP magic, we now have similarity deduplication built into the application where it will search for closely similar images and let you decide what to do with them; i.e keep or trash.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
### Permanent URL for asset on the web
|
|
||||||
|
|
||||||
The detail view for an asset now has a permanent URL so you can easily share them with your loved ones.
|
|
||||||
|
|
||||||
### Web app translations
|
|
||||||
|
|
||||||
We now have a public Weblate project which the community can use to translate the webapp to their native languages. We are planning to port the mobile app translation to this platform as well. If you would like to contribute, you can take a look [here](https://hosted.weblate.org/projects/immich/immich/). We're already close to 50% translations -- we really appreciate everyone contributing to that!
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
### Read-only/Editor mode on shared album
|
|
||||||
|
|
||||||
As the owner of the album, you can choose if the shared user can edit the album or to only view the content of the album without any modification.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
### Better video thumbnails
|
|
||||||
|
|
||||||
Immich now tries to find a descriptive video thumbnail instead of simply using the first frame. No more black images for thumbnails!
|
|
||||||
|
|
||||||
### Public Roadmap
|
|
||||||
|
|
||||||
We now have a [public roadmap](https://immich.app/roadmap), giving you a high-level overview of things the team is working on. The first goal of this roadmap is to bring Immich to a stable release, which is expected sometime later this year. Some of the highlights include
|
|
||||||
|
|
||||||
- Auto stacking - Auto stacking of burst photos
|
|
||||||
- Basic editor - Basic photo editing capabilities
|
|
||||||
- Workflows - Automate tasks with workflows
|
|
||||||
- Fine grained access controls - Granular access controls for users and api keys
|
|
||||||
- Better background backups - Rework background backups to be more reliable
|
|
||||||
- Private/locked photos - Private assets with extra protections
|
|
||||||
|
|
||||||
Beyond the items in the roadmap, we have _many many_ more ideas for Immich. The team and I hope that you are enjoying the application, find it helpful in your life and we have nothing but the intention of building out great software for you all!
|
|
||||||
|
|
||||||
Have an amazing Summer or Winter for those in the southern hemisphere! :D
|
|
||||||
|
|
||||||
Until next time,
|
|
||||||
|
|
||||||
Cheers!
|
|
||||||
Alex
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
alextran:
|
|
||||||
name: Alex Tran
|
|
||||||
title: Maintainer of Immich
|
|
||||||
url: https://github.com/alextran1502
|
|
||||||
image_url: https://github.com/alextran1502.png
|
|
||||||
@@ -476,5 +476,5 @@ Recommended minimums:
|
|||||||
|
|
||||||
- Read the [architecture overview](/docs/developer/architecture)
|
- Read the [architecture overview](/docs/developer/architecture)
|
||||||
- Learn about [database migrations](/docs/developer/database-migrations)
|
- Learn about [database migrations](/docs/developer/database-migrations)
|
||||||
- Explore [API documentation](/docs/api)
|
- Explore [API documentation](https://api.immich.app/)
|
||||||
- Join `#immich` on [Discord](https://discord.immich.app)
|
- Join `#immich` on [Discord](https://discord.immich.app)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# OpenAPI
|
# OpenAPI
|
||||||
|
|
||||||
Immich uses the [OpenAPI](https://swagger.io/specification/) standard to generate API documentation. To view the published docs see [here](/docs/api).
|
Immich uses the [OpenAPI](https://swagger.io/specification/) standard to generate API documentation. To view the published docs see [here](https://api.immich.app/).
|
||||||
|
|
||||||
## Generator
|
## Generator
|
||||||
|
|
||||||
|
|||||||
@@ -42,8 +42,8 @@ const config = {
|
|||||||
],
|
],
|
||||||
presets: [
|
presets: [
|
||||||
[
|
[
|
||||||
'docusaurus-preset-openapi',
|
'classic',
|
||||||
/** @type {import('docusaurus-preset-openapi').Options} */
|
/** @type {import('@docusaurus/preset-classic').Options} */
|
||||||
({
|
({
|
||||||
docs: {
|
docs: {
|
||||||
showLastUpdateAuthor: true,
|
showLastUpdateAuthor: true,
|
||||||
@@ -54,14 +54,6 @@ const config = {
|
|||||||
// Remove this to remove the "edit this page" links.
|
// Remove this to remove the "edit this page" links.
|
||||||
editUrl: 'https://github.com/immich-app/immich/tree/main/docs/',
|
editUrl: 'https://github.com/immich-app/immich/tree/main/docs/',
|
||||||
},
|
},
|
||||||
api: {
|
|
||||||
path: '../open-api/immich-openapi-specs.json',
|
|
||||||
routeBasePath: '/docs/api',
|
|
||||||
},
|
|
||||||
// blog: {
|
|
||||||
// showReadingTime: true,
|
|
||||||
// editUrl: "https://github.com/immich-app/immich/tree/main/docs/",
|
|
||||||
// },
|
|
||||||
theme: {
|
theme: {
|
||||||
customCss: require.resolve('./src/css/custom.css'),
|
customCss: require.resolve('./src/css/custom.css'),
|
||||||
},
|
},
|
||||||
@@ -100,12 +92,12 @@ const config = {
|
|||||||
label: 'Docs',
|
label: 'Docs',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
to: '/roadmap',
|
href: 'https://immich.app/roadmap',
|
||||||
position: 'right',
|
position: 'right',
|
||||||
label: 'Roadmap',
|
label: 'Roadmap',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
to: '/docs/api',
|
href: 'https://api.immich.app/',
|
||||||
position: 'right',
|
position: 'right',
|
||||||
label: 'API',
|
label: 'API',
|
||||||
},
|
},
|
||||||
@@ -161,15 +153,15 @@ const config = {
|
|||||||
items: [
|
items: [
|
||||||
{
|
{
|
||||||
label: 'Roadmap',
|
label: 'Roadmap',
|
||||||
to: '/roadmap',
|
href: 'https://immich.app/roadmap',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'API',
|
label: 'API',
|
||||||
to: '/docs/api',
|
href: 'https://api.immich.app/',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'Cursed Knowledge',
|
label: 'Cursed Knowledge',
|
||||||
to: '/cursed-knowledge',
|
href: 'https://immich.app/cursed-knowledge',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -25,7 +25,6 @@
|
|||||||
"@mdx-js/react": "^3.0.0",
|
"@mdx-js/react": "^3.0.0",
|
||||||
"autoprefixer": "^10.4.17",
|
"autoprefixer": "^10.4.17",
|
||||||
"docusaurus-lunr-search": "^3.3.2",
|
"docusaurus-lunr-search": "^3.3.2",
|
||||||
"docusaurus-preset-openapi": "^0.7.5",
|
|
||||||
"lunr": "^2.3.9",
|
"lunr": "^2.3.9",
|
||||||
"postcss": "^8.4.25",
|
"postcss": "^8.4.25",
|
||||||
"prism-react-renderer": "^2.3.1",
|
"prism-react-renderer": "^2.3.1",
|
||||||
|
|||||||
@@ -1,273 +0,0 @@
|
|||||||
import {
|
|
||||||
mdiBug,
|
|
||||||
mdiCalendarToday,
|
|
||||||
mdiCrosshairsOff,
|
|
||||||
mdiCrop,
|
|
||||||
mdiDatabase,
|
|
||||||
mdiLeadPencil,
|
|
||||||
mdiLockOff,
|
|
||||||
mdiLockOutline,
|
|
||||||
mdiMicrosoftWindows,
|
|
||||||
mdiSecurity,
|
|
||||||
mdiSpeedometerSlow,
|
|
||||||
mdiTrashCan,
|
|
||||||
mdiWeb,
|
|
||||||
mdiWrap,
|
|
||||||
mdiCloudKeyOutline,
|
|
||||||
mdiRegex,
|
|
||||||
mdiCodeJson,
|
|
||||||
mdiClockOutline,
|
|
||||||
mdiAccountOutline,
|
|
||||||
mdiRestart,
|
|
||||||
} from '@mdi/js';
|
|
||||||
import Layout from '@theme/Layout';
|
|
||||||
import React from 'react';
|
|
||||||
import { Timeline, Item as TimelineItem } from '../components/timeline';
|
|
||||||
|
|
||||||
const withLanguage = (date: Date) => (language: string) => date.toLocaleDateString(language);
|
|
||||||
|
|
||||||
type Item = Omit<TimelineItem, 'done' | 'getDateLabel'> & { date: Date };
|
|
||||||
|
|
||||||
const items: Item[] = [
|
|
||||||
{
|
|
||||||
icon: mdiClockOutline,
|
|
||||||
iconColor: 'gray',
|
|
||||||
title: 'setTimeout is cursed',
|
|
||||||
description:
|
|
||||||
'The setTimeout method in JavaScript is cursed when used with small values because the implementation may or may not actually wait the specified time.',
|
|
||||||
link: {
|
|
||||||
url: 'https://github.com/immich-app/immich/pull/20655',
|
|
||||||
text: '#20655',
|
|
||||||
},
|
|
||||||
date: new Date(2025, 7, 4),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
icon: mdiAccountOutline,
|
|
||||||
iconColor: '#DAB1DA',
|
|
||||||
title: 'PostgreSQL USER is cursed',
|
|
||||||
description:
|
|
||||||
'The USER keyword in PostgreSQL is cursed because you can select from it like a table, which leads to confusion if you have a table name user as well.',
|
|
||||||
link: {
|
|
||||||
url: 'https://github.com/immich-app/immich/pull/19891',
|
|
||||||
text: '#19891',
|
|
||||||
},
|
|
||||||
date: new Date(2025, 7, 4),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
icon: mdiRestart,
|
|
||||||
iconColor: '#8395e3',
|
|
||||||
title: 'PostgreSQL RESET is cursed',
|
|
||||||
description:
|
|
||||||
'PostgreSQL RESET is cursed because it is impossible to RESET a PostgreSQL extension parameter if the extension has been uninstalled.',
|
|
||||||
link: {
|
|
||||||
url: 'https://github.com/immich-app/immich/pull/19363',
|
|
||||||
text: '#19363',
|
|
||||||
},
|
|
||||||
date: new Date(2025, 5, 20),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
icon: mdiRegex,
|
|
||||||
iconColor: 'purple',
|
|
||||||
title: 'Zitadel Actions are cursed',
|
|
||||||
description:
|
|
||||||
"Zitadel is cursed because its custom scripting feature is executed with a JS engine that doesn't support regex named capture groups.",
|
|
||||||
link: {
|
|
||||||
url: 'https://github.com/dop251/goja',
|
|
||||||
text: 'Go JS engine',
|
|
||||||
},
|
|
||||||
date: new Date(2025, 5, 4),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
icon: mdiCloudKeyOutline,
|
|
||||||
iconColor: '#0078d4',
|
|
||||||
title: 'Entra is cursed',
|
|
||||||
description:
|
|
||||||
"Microsoft Entra supports PKCE, but doesn't include it in its OpenID discovery document. This leads to clients thinking PKCE isn't available.",
|
|
||||||
link: {
|
|
||||||
url: 'https://github.com/immich-app/immich/pull/18725',
|
|
||||||
text: '#18725',
|
|
||||||
},
|
|
||||||
date: new Date(2025, 4, 30),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
icon: mdiCrop,
|
|
||||||
iconColor: 'tomato',
|
|
||||||
title: 'Image dimensions in EXIF metadata are cursed',
|
|
||||||
description:
|
|
||||||
'The dimensions in EXIF metadata can be different from the actual dimensions of the image, causing issues with cropping and resizing.',
|
|
||||||
link: {
|
|
||||||
url: 'https://github.com/immich-app/immich/pull/17974',
|
|
||||||
text: '#17974',
|
|
||||||
},
|
|
||||||
date: new Date(2025, 4, 5),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
icon: mdiCodeJson,
|
|
||||||
iconColor: 'yellow',
|
|
||||||
title: 'YAML whitespace is cursed',
|
|
||||||
description: 'YAML whitespaces are often handled in unintuitive ways.',
|
|
||||||
link: {
|
|
||||||
url: 'https://github.com/immich-app/immich/pull/17309',
|
|
||||||
text: '#17309',
|
|
||||||
},
|
|
||||||
date: new Date(2025, 3, 1),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
icon: mdiMicrosoftWindows,
|
|
||||||
iconColor: '#357EC7',
|
|
||||||
title: 'Hidden files in Windows are cursed',
|
|
||||||
description:
|
|
||||||
'Hidden files in Windows cannot be opened with the "w" flag. That, combined with SMB option "hide dot files" leads to a lot of confusion.',
|
|
||||||
link: {
|
|
||||||
url: 'https://github.com/immich-app/immich/pull/12812',
|
|
||||||
text: '#12812',
|
|
||||||
},
|
|
||||||
date: new Date(2024, 8, 20),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
icon: mdiWrap,
|
|
||||||
iconColor: 'gray',
|
|
||||||
title: 'Carriage returns in bash scripts are cursed',
|
|
||||||
description: 'Git can be configured to automatically convert LF to CRLF on checkout and CRLF breaks bash scripts.',
|
|
||||||
link: {
|
|
||||||
url: 'https://github.com/immich-app/immich/pull/11613',
|
|
||||||
text: '#11613',
|
|
||||||
},
|
|
||||||
date: new Date(2024, 7, 7),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
icon: mdiLockOff,
|
|
||||||
iconColor: 'red',
|
|
||||||
title: 'Fetch inside Cloudflare Workers is cursed',
|
|
||||||
description:
|
|
||||||
'Fetch requests in Cloudflare Workers use http by default, even if you explicitly specify https, which can often cause redirect loops.',
|
|
||||||
link: {
|
|
||||||
url: 'https://community.cloudflare.com/t/does-cloudflare-worker-allow-secure-https-connection-to-fetch-even-on-flexible-ssl/68051/5',
|
|
||||||
text: 'Cloudflare',
|
|
||||||
},
|
|
||||||
date: new Date(2024, 7, 7),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
icon: mdiCrosshairsOff,
|
|
||||||
iconColor: 'gray',
|
|
||||||
title: 'GPS sharing on mobile is cursed',
|
|
||||||
description:
|
|
||||||
'Some phones will silently strip GPS data from images when apps without location permission try to access them.',
|
|
||||||
link: {
|
|
||||||
url: 'https://github.com/immich-app/immich/discussions/11268',
|
|
||||||
text: '#11268',
|
|
||||||
},
|
|
||||||
date: new Date(2024, 6, 21),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
icon: mdiLeadPencil,
|
|
||||||
iconColor: 'gold',
|
|
||||||
title: 'PostgreSQL NOTIFY is cursed',
|
|
||||||
description:
|
|
||||||
'PostgreSQL does everything in a transaction, including NOTIFY. This means using the socket.io postgres-adapter writes to WAL every 5 seconds.',
|
|
||||||
link: { url: 'https://github.com/immich-app/immich/pull/10801', text: '#10801' },
|
|
||||||
date: new Date(2024, 6, 3),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
icon: mdiWeb,
|
|
||||||
iconColor: 'lightskyblue',
|
|
||||||
title: 'npm scripts are cursed',
|
|
||||||
description:
|
|
||||||
'npm scripts make a http call to the npm registry each time they run, which means they are a terrible way to execute a health check.',
|
|
||||||
link: { url: 'https://github.com/immich-app/immich/issues/10796', text: '#10796' },
|
|
||||||
date: new Date(2024, 6, 3),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
icon: mdiSpeedometerSlow,
|
|
||||||
iconColor: 'brown',
|
|
||||||
title: '50 extra packages are cursed',
|
|
||||||
description:
|
|
||||||
'There is a user in the JavaScript community who goes around adding "backwards compatibility" to projects. They do this by adding 50 extra package dependencies to your project, which are maintained by them.',
|
|
||||||
link: { url: 'https://github.com/immich-app/immich/pull/10690', text: '#10690' },
|
|
||||||
date: new Date(2024, 5, 28),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
icon: mdiLockOutline,
|
|
||||||
iconColor: 'gold',
|
|
||||||
title: 'Long passwords are cursed',
|
|
||||||
description:
|
|
||||||
'The bcrypt implementation only uses the first 72 bytes of a string. Any characters after that are ignored.',
|
|
||||||
// link: GHSA-4p64-9f7h-3432
|
|
||||||
date: new Date(2024, 5, 25),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
icon: mdiCalendarToday,
|
|
||||||
iconColor: 'greenyellow',
|
|
||||||
title: 'JavaScript Date objects are cursed',
|
|
||||||
description: 'JavaScript date objects are 1 indexed for years and days, but 0 indexed for months.',
|
|
||||||
link: { url: 'https://github.com/immich-app/immich/pull/6787', text: '#6787' },
|
|
||||||
date: new Date(2024, 0, 31),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
icon: mdiBug,
|
|
||||||
iconColor: 'green',
|
|
||||||
title: 'ESM imports are cursed',
|
|
||||||
description:
|
|
||||||
'Prior to Node.js v20.8 using --experimental-vm-modules in a CommonJS project that imported an ES module that imported a CommonJS modules would create a segfault and crash Node.js',
|
|
||||||
link: {
|
|
||||||
url: 'https://github.com/immich-app/immich/pull/6719',
|
|
||||||
text: '#6179',
|
|
||||||
},
|
|
||||||
date: new Date(2024, 0, 9),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
icon: mdiDatabase,
|
|
||||||
iconColor: 'gray',
|
|
||||||
title: 'PostgreSQL parameters are cursed',
|
|
||||||
description: `PostgresSQL has a limit of ${Number(65535).toLocaleString()} parameters, so bulk inserts can fail with large datasets.`,
|
|
||||||
link: {
|
|
||||||
url: 'https://github.com/immich-app/immich/pull/6034',
|
|
||||||
text: '#6034',
|
|
||||||
},
|
|
||||||
date: new Date(2023, 11, 28),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
icon: mdiSecurity,
|
|
||||||
iconColor: 'gold',
|
|
||||||
title: 'Secure contexts are cursed',
|
|
||||||
description: `Some web features like the clipboard API only work in "secure contexts" (ie. https or localhost)`,
|
|
||||||
link: {
|
|
||||||
url: 'https://github.com/immich-app/immich/issues/2981',
|
|
||||||
text: '#2981',
|
|
||||||
},
|
|
||||||
date: new Date(2023, 5, 26),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
icon: mdiTrashCan,
|
|
||||||
iconColor: 'gray',
|
|
||||||
title: 'TypeORM deletes are cursed',
|
|
||||||
description: `The remove implementation in TypeORM mutates the input, deleting the id property from the original object.`,
|
|
||||||
link: {
|
|
||||||
url: 'https://github.com/typeorm/typeorm/issues/7024#issuecomment-948519328',
|
|
||||||
text: 'typeorm#6034',
|
|
||||||
},
|
|
||||||
date: new Date(2023, 1, 23),
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
export default function CursedKnowledgePage(): JSX.Element {
|
|
||||||
return (
|
|
||||||
<Layout title="Cursed Knowledge" description="Things we wish we didn't know">
|
|
||||||
<section className="my-8">
|
|
||||||
<h1 className="md:text-6xl text-center mb-10 text-immich-primary dark:text-immich-dark-primary px-2">
|
|
||||||
Cursed Knowledge
|
|
||||||
</h1>
|
|
||||||
<p className="text-center text-xl px-2">
|
|
||||||
Cursed knowledge we have learned as a result of building Immich that we wish we never knew.
|
|
||||||
</p>
|
|
||||||
<div className="flex justify-around mt-8 w-full max-w-full">
|
|
||||||
<Timeline
|
|
||||||
items={items
|
|
||||||
.sort((a, b) => b.date.getTime() - a.date.getTime())
|
|
||||||
.map((item) => ({ ...item, getDateLabel: withLanguage(item.date) }))}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</Layout>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
+2
-120
@@ -1,123 +1,5 @@
|
|||||||
import React from 'react';
|
import { Redirect } from '@docusaurus/router';
|
||||||
import Link from '@docusaurus/Link';
|
|
||||||
import Layout from '@theme/Layout';
|
|
||||||
import { discordPath, discordViewBox } from '@site/src/components/svg-paths';
|
|
||||||
import ThemedImage from '@theme/ThemedImage';
|
|
||||||
import Icon from '@mdi/react';
|
|
||||||
|
|
||||||
function HomepageHeader() {
|
|
||||||
return (
|
|
||||||
<header>
|
|
||||||
<div className="top-[calc(12%)] md:top-[calc(30%)] h-screen w-full absolute -z-10">
|
|
||||||
<img src={'img/immich-logo.svg'} className="h-[110%] w-[110%] mb-2 antialiased -z-10" alt="Immich logo" />
|
|
||||||
<div className="w-full h-[120vh] absolute left-0 top-0 backdrop-blur-3xl bg-immich-bg/40 dark:bg-transparent"></div>
|
|
||||||
</div>
|
|
||||||
<section className="text-center pt-12 sm:pt-24 bg-immich-bg/50 dark:bg-immich-dark-bg/80">
|
|
||||||
<a href="https://futo.org" target="_blank" rel="noopener noreferrer">
|
|
||||||
<ThemedImage
|
|
||||||
sources={{ dark: 'img/logomark-dark-with-futo.svg', light: 'img/logomark-light-with-futo.svg' }}
|
|
||||||
className="h-[125px] w-[125px] mb-2 antialiased rounded-none"
|
|
||||||
alt="Immich logo"
|
|
||||||
/>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<div className="mt-8">
|
|
||||||
<p className="text-3xl md:text-5xl sm:leading-tight mb-1 font-extrabold text-black/90 dark:text-white px-4">
|
|
||||||
Self-hosted{' '}
|
|
||||||
<span className="text-immich-primary dark:text-immich-dark-primary">
|
|
||||||
photo and <span className="block"></span>
|
|
||||||
video management{' '}
|
|
||||||
</span>
|
|
||||||
solution<span className="block"></span>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p className="max-w-1/4 m-auto mt-4 px-4 text-lg text-gray-700 dark:text-gray-100">
|
|
||||||
Easily back up, organize, and manage your photos on your own server. Immich helps you
|
|
||||||
<span className="sm:block"></span> browse, search and organize your photos and videos with ease, without
|
|
||||||
sacrificing your privacy.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div className="flex flex-col sm:flex-row place-items-center place-content-center mt-9 gap-4 ">
|
|
||||||
<Link
|
|
||||||
className="flex place-items-center place-content-center py-3 px-8 border bg-immich-primary dark:bg-immich-dark-primary rounded-xl no-underline hover:no-underline text-white hover:text-gray-50 dark:text-immich-dark-bg font-bold"
|
|
||||||
to="docs/overview/quick-start"
|
|
||||||
>
|
|
||||||
Get Started
|
|
||||||
</Link>
|
|
||||||
|
|
||||||
<Link
|
|
||||||
className="flex place-items-center place-content-center py-3 px-8 border bg-white/90 dark:bg-gray-300 rounded-xl hover:no-underline text-immich-primary dark:text-immich-dark-bg font-bold"
|
|
||||||
to="https://demo.immich.app/"
|
|
||||||
>
|
|
||||||
Open Demo
|
|
||||||
</Link>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div className="my-8 flex gap-1 font-medium place-items-center place-content-center text-immich-primary dark:text-immich-dark-primary">
|
|
||||||
<Icon
|
|
||||||
path={discordPath}
|
|
||||||
viewBox={discordViewBox} /* viewBox may show an error in your IDE but it is normal. */
|
|
||||||
size={1}
|
|
||||||
/>
|
|
||||||
<Link to="https://discord.immich.app/">Join our Discord</Link>
|
|
||||||
</div>
|
|
||||||
<ThemedImage
|
|
||||||
sources={{ dark: '/img/screenshot-dark.webp', light: '/img/screenshot-light.webp' }}
|
|
||||||
alt="screenshots"
|
|
||||||
className="w-[95%] lg:w-[85%] xl:w-[70%] 2xl:w-[60%] "
|
|
||||||
/>
|
|
||||||
<div className="mx-[25%] m-auto my-14 md:my-28">
|
|
||||||
<hr className="border bg-gray-500 dark:bg-gray-400" />
|
|
||||||
</div>
|
|
||||||
<ThemedImage
|
|
||||||
sources={{ dark: 'img/logomark-dark.svg', light: 'img/logomark-light.svg' }}
|
|
||||||
className="h-[115px] w-[115px] mb-2 antialiased rounded-none"
|
|
||||||
alt="Immich logo"
|
|
||||||
/>
|
|
||||||
<div>
|
|
||||||
<p className="font-bold text-2xl md:text-5xl ">Download the mobile app</p>
|
|
||||||
<p className="text-lg">
|
|
||||||
Download the Immich app and start backing up your photos and videos securely to your own server
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div className="flex flex-col sm:flex-row place-items-center place-content-center mt-4 gap-1">
|
|
||||||
<div className="h-24">
|
|
||||||
<a href="https://play.google.com/store/apps/details?id=app.alextran.immich">
|
|
||||||
<img className="h-24" alt="Get it on Google Play" src="/img/google-play-badge.png" />
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div className="h-24">
|
|
||||||
<a href="https://apps.apple.com/sg/app/immich/id1613945652">
|
|
||||||
<img className="h-24 sm:p-3.5 p-3" alt="Download on the App Store" src="/img/ios-app-store-badge.svg" />
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div className="h-24">
|
|
||||||
<a href="https://github.com/immich-app/immich/releases/latest">
|
|
||||||
<img className="h-24 sm:p-3.5 p-3" alt="Download APK" src="/img/download-apk-github.svg" />
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<ThemedImage
|
|
||||||
sources={{ dark: '/img/app-qr-code-dark.svg', light: '/img/app-qr-code-light.svg' }}
|
|
||||||
alt="app qr code"
|
|
||||||
width={'150px'}
|
|
||||||
className="shadow-lg p-3 my-8 dark:bg-immich-dark-bg "
|
|
||||||
/>
|
|
||||||
</section>
|
|
||||||
</header>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
export default function Home(): JSX.Element {
|
export default function Home(): JSX.Element {
|
||||||
return (
|
return <Redirect to="/docs/overview/welcome" />;
|
||||||
<Layout title="Home" description="Self-hosted photo and video management solution" noFooter={true}>
|
|
||||||
<HomepageHeader />
|
|
||||||
<div className="flex flex-col place-items-center text-center place-content-center dark:bg-immich-dark-bg py-8">
|
|
||||||
<p>This project is available under GNU AGPL v3 license.</p>
|
|
||||||
<p className="text-sm">Privacy should not be a luxury</p>
|
|
||||||
</div>
|
|
||||||
</Layout>
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,944 +0,0 @@
|
|||||||
import {
|
|
||||||
mdiAccountGroup,
|
|
||||||
mdiAccountGroupOutline,
|
|
||||||
mdiAndroid,
|
|
||||||
mdiAppleIos,
|
|
||||||
mdiArchiveOutline,
|
|
||||||
mdiBash,
|
|
||||||
mdiBookSearchOutline,
|
|
||||||
mdiBookmark,
|
|
||||||
mdiCakeVariant,
|
|
||||||
mdiCameraBurst,
|
|
||||||
mdiChartBoxMultipleOutline,
|
|
||||||
mdiCheckAll,
|
|
||||||
mdiCheckboxMarked,
|
|
||||||
mdiCloudUploadOutline,
|
|
||||||
mdiCollage,
|
|
||||||
mdiContentDuplicate,
|
|
||||||
mdiCrop,
|
|
||||||
mdiDevices,
|
|
||||||
mdiEmailOutline,
|
|
||||||
mdiExpansionCard,
|
|
||||||
mdiEyeOutline,
|
|
||||||
mdiEyeRefreshOutline,
|
|
||||||
mdiFaceMan,
|
|
||||||
mdiFaceManOutline,
|
|
||||||
mdiFile,
|
|
||||||
mdiFileSearch,
|
|
||||||
mdiFlash,
|
|
||||||
mdiFolder,
|
|
||||||
mdiFolderMultiple,
|
|
||||||
mdiForum,
|
|
||||||
mdiHandshakeOutline,
|
|
||||||
mdiHeart,
|
|
||||||
mdiHistory,
|
|
||||||
mdiImage,
|
|
||||||
mdiImageAlbum,
|
|
||||||
mdiImageEdit,
|
|
||||||
mdiImageMultipleOutline,
|
|
||||||
mdiImageSearch,
|
|
||||||
mdiKeyboardSettingsOutline,
|
|
||||||
mdiLicense,
|
|
||||||
mdiLockOutline,
|
|
||||||
mdiMagnify,
|
|
||||||
mdiMagnifyScan,
|
|
||||||
mdiMap,
|
|
||||||
mdiMaterialDesign,
|
|
||||||
mdiMatrix,
|
|
||||||
mdiMerge,
|
|
||||||
mdiMonitor,
|
|
||||||
mdiMotionPlayOutline,
|
|
||||||
mdiPalette,
|
|
||||||
mdiPanVertical,
|
|
||||||
mdiPartyPopper,
|
|
||||||
mdiPencil,
|
|
||||||
mdiRaw,
|
|
||||||
mdiRocketLaunch,
|
|
||||||
mdiRotate360,
|
|
||||||
mdiScaleBalance,
|
|
||||||
mdiSecurity,
|
|
||||||
mdiServer,
|
|
||||||
mdiShare,
|
|
||||||
mdiShareAll,
|
|
||||||
mdiShareCircle,
|
|
||||||
mdiStar,
|
|
||||||
mdiStarOutline,
|
|
||||||
mdiTableKey,
|
|
||||||
mdiTag,
|
|
||||||
mdiTagMultiple,
|
|
||||||
mdiText,
|
|
||||||
mdiThemeLightDark,
|
|
||||||
mdiTrashCanOutline,
|
|
||||||
mdiVectorCombine,
|
|
||||||
mdiFolderSync,
|
|
||||||
mdiFaceRecognition,
|
|
||||||
mdiVideo,
|
|
||||||
mdiWeb,
|
|
||||||
mdiDatabaseOutline,
|
|
||||||
mdiLinkEdit,
|
|
||||||
mdiTagFaces,
|
|
||||||
mdiMovieOpenPlayOutline,
|
|
||||||
mdiCast,
|
|
||||||
} from '@mdi/js';
|
|
||||||
import Layout from '@theme/Layout';
|
|
||||||
import React from 'react';
|
|
||||||
import { Item, Timeline } from '../components/timeline';
|
|
||||||
|
|
||||||
const releases = {
|
|
||||||
'v1.135.0': new Date(2025, 5, 18),
|
|
||||||
'v1.133.0': new Date(2025, 4, 21),
|
|
||||||
'v1.130.0': new Date(2025, 2, 25),
|
|
||||||
'v1.127.0': new Date(2025, 1, 26),
|
|
||||||
'v1.122.0': new Date(2024, 11, 5),
|
|
||||||
'v1.120.0': new Date(2024, 10, 6),
|
|
||||||
'v1.114.0': new Date(2024, 8, 6),
|
|
||||||
'v1.113.0': new Date(2024, 7, 30),
|
|
||||||
'v1.112.0': new Date(2024, 7, 14),
|
|
||||||
'v1.111.0': new Date(2024, 6, 26),
|
|
||||||
'v1.110.0': new Date(2024, 5, 11),
|
|
||||||
'v1.109.0': new Date(2024, 6, 18),
|
|
||||||
'v1.106.1': new Date(2024, 5, 11),
|
|
||||||
'v1.104.0': new Date(2024, 4, 13),
|
|
||||||
'v1.103.0': new Date(2024, 3, 29),
|
|
||||||
'v1.102.0': new Date(2024, 3, 15),
|
|
||||||
'v1.99.0': new Date(2024, 2, 20),
|
|
||||||
'v1.98.0': new Date(2024, 2, 7),
|
|
||||||
'v1.95.0': new Date(2024, 1, 20),
|
|
||||||
'v1.94.0': new Date(2024, 0, 31),
|
|
||||||
'v1.93.0': new Date(2024, 0, 19),
|
|
||||||
'v1.91.0': new Date(2023, 11, 15),
|
|
||||||
'v1.90.0': new Date(2023, 11, 7),
|
|
||||||
'v1.88.0': new Date(2023, 10, 20),
|
|
||||||
'v1.84.0': new Date(2023, 10, 1),
|
|
||||||
'v1.83.0': new Date(2023, 9, 28),
|
|
||||||
'v1.82.0': new Date(2023, 9, 17),
|
|
||||||
'v1.79.0': new Date(2023, 8, 21),
|
|
||||||
'v1.76.0': new Date(2023, 7, 29),
|
|
||||||
'v1.75.0': new Date(2023, 7, 26),
|
|
||||||
'v1.72.0': new Date(2023, 7, 6),
|
|
||||||
'v1.71.0': new Date(2023, 6, 29),
|
|
||||||
'v1.69.0': new Date(2023, 6, 23),
|
|
||||||
'v1.68.0': new Date(2023, 6, 20),
|
|
||||||
'v1.67.0': new Date(2023, 6, 14),
|
|
||||||
'v1.66.0': new Date(2023, 6, 4),
|
|
||||||
'v1.65.0': new Date(2023, 5, 30),
|
|
||||||
'v1.63.0': new Date(2023, 5, 24),
|
|
||||||
'v1.61.0': new Date(2023, 5, 16),
|
|
||||||
'v1.58.0': new Date(2023, 4, 28),
|
|
||||||
'v1.57.0': new Date(2023, 4, 23),
|
|
||||||
'v1.56.0': new Date(2023, 4, 18),
|
|
||||||
'v1.55.0': new Date(2023, 4, 9),
|
|
||||||
'v1.54.0': new Date(2023, 3, 18),
|
|
||||||
'v1.52.0': new Date(2023, 2, 29),
|
|
||||||
'v1.51.0': new Date(2023, 2, 20),
|
|
||||||
'v1.48.0': new Date(2023, 1, 21),
|
|
||||||
'v1.47.0': new Date(2023, 1, 13),
|
|
||||||
'v1.46.0': new Date(2023, 1, 9),
|
|
||||||
'v1.43.0': new Date(2023, 1, 3),
|
|
||||||
'v1.41.0': new Date(2023, 0, 10),
|
|
||||||
'v1.39.0': new Date(2022, 11, 19),
|
|
||||||
'v1.36.0': new Date(2022, 10, 20),
|
|
||||||
'v1.33.1': new Date(2022, 9, 26),
|
|
||||||
'v1.32.0': new Date(2022, 9, 14),
|
|
||||||
'v1.27.0': new Date(2022, 8, 6),
|
|
||||||
'v1.24.0': new Date(2022, 7, 19),
|
|
||||||
'v1.10.0': new Date(2022, 4, 29),
|
|
||||||
'v1.7.0': new Date(2022, 3, 24),
|
|
||||||
'v1.3.0': new Date(2022, 2, 22),
|
|
||||||
'v1.2.0': new Date(2022, 1, 8),
|
|
||||||
} as const;
|
|
||||||
|
|
||||||
const weirdTags = {
|
|
||||||
'v1.41.0': 'v1.41.1_64-dev',
|
|
||||||
'v1.39.0': 'v1.39.0_61-dev',
|
|
||||||
'v1.36.0': 'v1.36.0_55-dev',
|
|
||||||
'v1.33.1': 'v1.33.0_52-dev',
|
|
||||||
'v1.32.0': 'v1.32.0_50-dev',
|
|
||||||
'v1.27.0': 'v1.27.0_37-dev',
|
|
||||||
'v1.24.0': 'v1.24.0_34-dev',
|
|
||||||
'v1.10.0': 'v1.10.0_15-dev',
|
|
||||||
'v1.7.0': 'v1.7.0_11-dev ',
|
|
||||||
'v1.3.0': 'v1.3.0-dev ',
|
|
||||||
'v1.2.0': 'v0.2-dev ',
|
|
||||||
};
|
|
||||||
|
|
||||||
const title = 'Roadmap';
|
|
||||||
const description = 'A list of future plans and goals, as well as past achievements and milestones.';
|
|
||||||
|
|
||||||
const withLanguage = (date: Date) => (language: string) => date.toLocaleDateString(language);
|
|
||||||
|
|
||||||
type Base = { icon: string; iconColor?: React.CSSProperties['color']; title: string; description: string };
|
|
||||||
const withRelease = ({
|
|
||||||
icon,
|
|
||||||
iconColor,
|
|
||||||
title,
|
|
||||||
description,
|
|
||||||
release: version,
|
|
||||||
}: Base & { release: keyof typeof releases }) => {
|
|
||||||
return {
|
|
||||||
icon,
|
|
||||||
iconColor: iconColor ?? 'gray',
|
|
||||||
title,
|
|
||||||
description,
|
|
||||||
link: {
|
|
||||||
url: `https://github.com/immich-app/immich/releases/tag/${weirdTags[version] ?? version}`,
|
|
||||||
text: version,
|
|
||||||
},
|
|
||||||
getDateLabel: withLanguage(releases[version]),
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
const roadmap: Item[] = [
|
|
||||||
{
|
|
||||||
done: false,
|
|
||||||
icon: mdiFlash,
|
|
||||||
iconColor: 'gold',
|
|
||||||
title: 'Workflows',
|
|
||||||
description: 'Automate tasks with workflows',
|
|
||||||
getDateLabel: () => 'Planned for 2025',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
done: false,
|
|
||||||
icon: mdiImageEdit,
|
|
||||||
iconColor: 'rebeccapurple',
|
|
||||||
title: 'Basic editor',
|
|
||||||
description: 'Basic photo editing capabilities',
|
|
||||||
getDateLabel: () => 'Planned for 2025',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
done: false,
|
|
||||||
icon: mdiRocketLaunch,
|
|
||||||
iconColor: 'indianred',
|
|
||||||
title: 'Stable release',
|
|
||||||
description: 'Immich goes stable',
|
|
||||||
getDateLabel: () => 'Planned for 2025',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
done: false,
|
|
||||||
icon: mdiCloudUploadOutline,
|
|
||||||
iconColor: 'cornflowerblue',
|
|
||||||
title: 'Better background backups',
|
|
||||||
description: 'Rework background backups to be more reliable',
|
|
||||||
getDateLabel: () => 'Planned for 2025',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
done: false,
|
|
||||||
icon: mdiCameraBurst,
|
|
||||||
iconColor: 'rebeccapurple',
|
|
||||||
title: 'Auto stacking',
|
|
||||||
description: 'Auto stack burst photos',
|
|
||||||
getDateLabel: () => 'Planned for 2025',
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
const milestones: Item[] = [
|
|
||||||
{
|
|
||||||
icon: mdiStar,
|
|
||||||
iconColor: 'gold',
|
|
||||||
title: '70,000 Stars',
|
|
||||||
description: 'Reached 70K Stars on GitHub!',
|
|
||||||
getDateLabel: withLanguage(new Date(2025, 6, 9)),
|
|
||||||
},
|
|
||||||
withRelease({
|
|
||||||
icon: mdiTableKey,
|
|
||||||
iconColor: 'gray',
|
|
||||||
title: 'Fine grained access controls',
|
|
||||||
description: 'Granular access controls for api keys',
|
|
||||||
release: 'v1.135.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiCast,
|
|
||||||
iconColor: 'aqua',
|
|
||||||
title: 'Google Cast (web and mobile)',
|
|
||||||
description: 'Cast assets to Google Cast/Chromecast compatible devices',
|
|
||||||
release: 'v1.135.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiLockOutline,
|
|
||||||
iconColor: 'sandybrown',
|
|
||||||
title: 'Private/locked photos',
|
|
||||||
description: 'Private assets with extra protections',
|
|
||||||
release: 'v1.133.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiFolderMultiple,
|
|
||||||
iconColor: 'brown',
|
|
||||||
title: 'Folders view in the mobile app',
|
|
||||||
description: 'Browse your photos and videos in their folder structure inside the mobile app',
|
|
||||||
release: 'v1.130.0',
|
|
||||||
}),
|
|
||||||
{
|
|
||||||
icon: mdiStar,
|
|
||||||
iconColor: 'gold',
|
|
||||||
title: '60,000 Stars',
|
|
||||||
description: 'Reached 60K Stars on GitHub!',
|
|
||||||
getDateLabel: withLanguage(new Date(2025, 2, 4)),
|
|
||||||
},
|
|
||||||
withRelease({
|
|
||||||
icon: mdiTagFaces,
|
|
||||||
iconColor: 'teal',
|
|
||||||
title: 'Manual face tagging',
|
|
||||||
description:
|
|
||||||
'Manually tag or remove faces in photos and videos, even when automatic detection misses or misidentifies them.',
|
|
||||||
release: 'v1.127.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiLinkEdit,
|
|
||||||
iconColor: 'crimson',
|
|
||||||
title: 'Automatic URL switching',
|
|
||||||
description: 'The mobile app now supports automatic switching between different server URLs',
|
|
||||||
release: 'v1.122.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiMovieOpenPlayOutline,
|
|
||||||
iconColor: 'darksalmon',
|
|
||||||
title: 'Native video player',
|
|
||||||
description: 'HDR videos are now fully supported using the Immich native video player',
|
|
||||||
release: 'v1.122.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiDatabaseOutline,
|
|
||||||
iconColor: 'brown',
|
|
||||||
title: 'Automatic database dumps',
|
|
||||||
description: 'Database dumps are now integrated into the Immich server',
|
|
||||||
release: 'v1.120.0',
|
|
||||||
}),
|
|
||||||
{
|
|
||||||
icon: mdiStar,
|
|
||||||
iconColor: 'gold',
|
|
||||||
title: '50,000 Stars',
|
|
||||||
description: 'Reached 50K Stars on GitHub!',
|
|
||||||
getDateLabel: withLanguage(new Date(2024, 10, 1)),
|
|
||||||
},
|
|
||||||
withRelease({
|
|
||||||
icon: mdiFaceRecognition,
|
|
||||||
title: 'Metadata Face Import',
|
|
||||||
description: 'Read face metadata in Digikam format during import',
|
|
||||||
release: 'v1.114.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiTagMultiple,
|
|
||||||
iconColor: 'orange',
|
|
||||||
title: 'Tags',
|
|
||||||
description: 'Tag your photos and videos',
|
|
||||||
release: 'v1.113.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiFolderSync,
|
|
||||||
iconColor: 'green',
|
|
||||||
title: 'Album sync (mobile)',
|
|
||||||
description: 'Sync or mirror an album from your phone to the Immich server',
|
|
||||||
release: 'v1.113.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiFolderMultiple,
|
|
||||||
iconColor: 'brown',
|
|
||||||
title: 'Folders view',
|
|
||||||
description: 'Browse your photos and videos in their folder structure',
|
|
||||||
release: 'v1.113.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiPalette,
|
|
||||||
title: 'Theming (mobile)',
|
|
||||||
description: 'Pick a primary color for the mobile app',
|
|
||||||
release: 'v1.112.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiStarOutline,
|
|
||||||
iconColor: 'gold',
|
|
||||||
title: 'Star rating',
|
|
||||||
description: 'Rate your photos and videos',
|
|
||||||
release: 'v1.112.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiCrop,
|
|
||||||
iconColor: 'royalblue',
|
|
||||||
title: 'Editor (mobile)',
|
|
||||||
description: 'Crop and rotate on mobile',
|
|
||||||
release: 'v1.111.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiMap,
|
|
||||||
iconColor: 'green',
|
|
||||||
title: 'Deploy tiles.immich.cloud',
|
|
||||||
description: 'Dedicated tile server for Immich',
|
|
||||||
release: 'v1.111.0',
|
|
||||||
}),
|
|
||||||
{
|
|
||||||
icon: mdiStar,
|
|
||||||
iconColor: 'gold',
|
|
||||||
title: '40,000 Stars',
|
|
||||||
description: 'Reached 40K Stars on GitHub!',
|
|
||||||
getDateLabel: withLanguage(new Date(2024, 6, 21)),
|
|
||||||
},
|
|
||||||
withRelease({
|
|
||||||
icon: mdiShare,
|
|
||||||
title: 'Deploy my.immich.app',
|
|
||||||
description: 'Url router for immich links',
|
|
||||||
release: 'v1.109.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiLicense,
|
|
||||||
iconColor: 'gold',
|
|
||||||
title: 'Supporter Badge',
|
|
||||||
description: 'The option to buy Immich to support its development!',
|
|
||||||
release: 'v1.109.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiHistory,
|
|
||||||
title: 'Versioned documentation',
|
|
||||||
description: 'View documentation as it was at the time of past releases',
|
|
||||||
release: 'v1.106.1',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiWeb,
|
|
||||||
iconColor: 'royalblue',
|
|
||||||
title: 'Web translations',
|
|
||||||
description: 'Translate the web application to multiple languages',
|
|
||||||
release: 'v1.106.1',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiContentDuplicate,
|
|
||||||
title: 'Similar image detection',
|
|
||||||
description: "Detect duplicate assets that aren't exactly identical",
|
|
||||||
release: 'v1.106.1',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiVectorCombine,
|
|
||||||
title: 'Container consolidation',
|
|
||||||
description:
|
|
||||||
'The microservices container can be run as a worker within the server image, allowing us to remove it from the default stack.',
|
|
||||||
release: 'v1.106.1',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiPencil,
|
|
||||||
iconColor: 'saddlebrown',
|
|
||||||
title: 'Read-write external libraries',
|
|
||||||
description: 'Edit, update, and delete files in external libraries',
|
|
||||||
release: 'v1.104.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiEmailOutline,
|
|
||||||
iconColor: 'crimson',
|
|
||||||
title: 'Email notifications',
|
|
||||||
description: 'Send emails for important events',
|
|
||||||
release: 'v1.104.0',
|
|
||||||
}),
|
|
||||||
{
|
|
||||||
icon: mdiHandshakeOutline,
|
|
||||||
iconColor: 'magenta',
|
|
||||||
title: 'Immich joins FUTO!',
|
|
||||||
description: 'Joined Futo and Immich core team goes full-time',
|
|
||||||
getDateLabel: withLanguage(new Date(2024, 4, 1)),
|
|
||||||
},
|
|
||||||
withRelease({
|
|
||||||
icon: mdiEyeOutline,
|
|
||||||
iconColor: 'darkslategray',
|
|
||||||
title: 'Read-only albums',
|
|
||||||
description: 'Share albums with other users as read-only',
|
|
||||||
release: 'v1.103.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiBookmark,
|
|
||||||
iconColor: 'orangered',
|
|
||||||
title: 'Permanent URLs (Web)',
|
|
||||||
description: 'Assets on the web now have permanent URLs',
|
|
||||||
release: 'v1.103.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiStar,
|
|
||||||
iconColor: 'gold',
|
|
||||||
title: '30,000 Stars',
|
|
||||||
description: 'Reached 30K Stars on GitHub!',
|
|
||||||
release: 'v1.102.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiChartBoxMultipleOutline,
|
|
||||||
iconColor: 'mediumvioletred',
|
|
||||||
title: 'OpenTelemetry metrics',
|
|
||||||
description: 'OpenTelemetry metrics for local evaluation and advanced debugging',
|
|
||||||
release: 'v1.99.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: 'immich',
|
|
||||||
title: 'New logo',
|
|
||||||
description: 'Immich got its new logo',
|
|
||||||
release: 'v1.98.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiMagnifyScan,
|
|
||||||
title: 'Search enhancement with advanced filters',
|
|
||||||
description: 'Advanced search with filters by date, location and more',
|
|
||||||
release: 'v1.95.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiScaleBalance,
|
|
||||||
iconColor: 'gold',
|
|
||||||
title: 'AGPL License',
|
|
||||||
description: 'Immich switches to AGPLv3 license',
|
|
||||||
release: 'v1.95.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiEyeRefreshOutline,
|
|
||||||
title: 'Library watching',
|
|
||||||
description: 'Automatically import files in external libraries when the operating system detects changes.',
|
|
||||||
release: 'v1.94.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiExpansionCard,
|
|
||||||
iconColor: 'green',
|
|
||||||
title: 'GPU acceleration for machine-learning',
|
|
||||||
description: 'Hardware acceleration support for Nvidia and Intel devices through CUDA and OpenVINO.',
|
|
||||||
release: 'v1.94.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiAccountGroupOutline,
|
|
||||||
iconColor: 'gray',
|
|
||||||
title: '250 unique contributors',
|
|
||||||
description: '250 amazing people contributed to Immich',
|
|
||||||
release: 'v1.93.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiMatrix,
|
|
||||||
title: 'Search improvement with pgvecto.rs',
|
|
||||||
description: 'Moved the search from typesense to pgvecto.rs',
|
|
||||||
release: 'v1.91.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiPencil,
|
|
||||||
iconColor: 'saddlebrown',
|
|
||||||
title: 'Edit metadata',
|
|
||||||
description: "Edit a photo or video's date, time, hours, timezone, and GPS information",
|
|
||||||
release: 'v1.90.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiVectorCombine,
|
|
||||||
title: 'Container consolidation',
|
|
||||||
description:
|
|
||||||
'The serving of the web app is merged into the server image, allowing us to remove two containers from the stack.',
|
|
||||||
release: 'v1.88.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiBash,
|
|
||||||
iconColor: 'gray',
|
|
||||||
title: 'CLI v2',
|
|
||||||
description: 'Version 2 of the Immich CLI is released, replacing the legacy v1 CLI.',
|
|
||||||
release: 'v1.88.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiForum,
|
|
||||||
iconColor: 'dodgerblue',
|
|
||||||
title: 'Activity',
|
|
||||||
description: 'Comment a photo or a video in a shared album',
|
|
||||||
release: 'v1.84.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiStar,
|
|
||||||
iconColor: 'gold',
|
|
||||||
title: '20,000 Stars',
|
|
||||||
description: 'Reached 20K Stars on GitHub!',
|
|
||||||
release: 'v1.83.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiCameraBurst,
|
|
||||||
iconColor: 'rebeccapurple',
|
|
||||||
title: 'Stack assets',
|
|
||||||
description: 'Manual asset stacking for grouping and hiding related assets in the main timeline.',
|
|
||||||
release: 'v1.83.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiPalette,
|
|
||||||
iconColor: 'magenta',
|
|
||||||
title: 'Custom theme',
|
|
||||||
description: 'Apply your custom CSS for modifying fonts, colors, and styles in the web application.',
|
|
||||||
release: 'v1.83.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiTrashCanOutline,
|
|
||||||
iconColor: 'brown',
|
|
||||||
title: 'Trash feature',
|
|
||||||
description: 'Trash, restore from trash, and automatically empty the recycle bin after 30 days.',
|
|
||||||
release: 'v1.82.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiBookSearchOutline,
|
|
||||||
title: 'External libraries',
|
|
||||||
description: 'Automatically import media into Immich based on imports paths and ignore patterns.',
|
|
||||||
release: 'v1.79.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiMap,
|
|
||||||
iconColor: 'darksalmon',
|
|
||||||
title: 'Map view (mobile)',
|
|
||||||
description: 'Heat map implementation in the mobile app.',
|
|
||||||
release: 'v1.76.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiFile,
|
|
||||||
iconColor: 'lightblue',
|
|
||||||
title: 'Configuration file',
|
|
||||||
description: 'Auto-configure an Immich installation via a configuration file.',
|
|
||||||
release: 'v1.75.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiMonitor,
|
|
||||||
iconColor: 'darkcyan',
|
|
||||||
title: 'Slideshow mode (web)',
|
|
||||||
description: 'Start a full-screen slideshow from an Album on the web.',
|
|
||||||
release: 'v1.75.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiServer,
|
|
||||||
iconColor: 'lightskyblue',
|
|
||||||
title: 'Hardware transcoding',
|
|
||||||
description: 'Support hardware acceleration (QuickSync, VAAPI, and Nvidia) for video transcoding.',
|
|
||||||
release: 'v1.72.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiImageAlbum,
|
|
||||||
iconColor: 'olivedrab',
|
|
||||||
title: 'View albums via time buckets',
|
|
||||||
description: 'Upgrade albums to use time buckets, an optimized virtual viewport.',
|
|
||||||
release: 'v1.72.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiImageAlbum,
|
|
||||||
iconColor: 'olivedrab',
|
|
||||||
title: 'Album description',
|
|
||||||
description: 'Save an album description.',
|
|
||||||
release: 'v1.72.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiRotate360,
|
|
||||||
title: '360° Photos (web)',
|
|
||||||
description: 'View 360° Photos on the web.',
|
|
||||||
release: 'v1.71.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiMotionPlayOutline,
|
|
||||||
title: 'Android motion photos',
|
|
||||||
description: 'Add support for Android Motion Photos.',
|
|
||||||
release: 'v1.69.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiFaceManOutline,
|
|
||||||
iconColor: 'mistyrose',
|
|
||||||
title: 'Show/hide faces',
|
|
||||||
description: 'Add the options to show or hide faces.',
|
|
||||||
release: 'v1.68.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiMerge,
|
|
||||||
iconColor: 'forestgreen',
|
|
||||||
title: 'Merge faces',
|
|
||||||
description: 'Add the ability to merge multiple faces together.',
|
|
||||||
release: 'v1.67.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiImage,
|
|
||||||
iconColor: 'rebeccapurple',
|
|
||||||
title: 'Feature photo',
|
|
||||||
description: 'Add the option to change the feature photo for a person.',
|
|
||||||
release: 'v1.66.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiKeyboardSettingsOutline,
|
|
||||||
iconColor: 'darkslategray',
|
|
||||||
title: 'Multi-select via SHIFT',
|
|
||||||
description: 'Add the option to multi-select while holding SHIFT.',
|
|
||||||
release: 'v1.66.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiImageMultipleOutline,
|
|
||||||
iconColor: 'rebeccapurple',
|
|
||||||
title: 'Memories (mobile)',
|
|
||||||
description: 'View "On this day..." memories in the mobile app.',
|
|
||||||
release: 'v1.65.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiFaceMan,
|
|
||||||
iconColor: 'mistyrose',
|
|
||||||
title: 'Facial recognition (mobile)',
|
|
||||||
description: 'View detected faces in the mobile app.',
|
|
||||||
release: 'v1.63.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiImageMultipleOutline,
|
|
||||||
iconColor: 'rebeccapurple',
|
|
||||||
title: 'Memories (web)',
|
|
||||||
description: 'View pictures taken in past years on this day on the web.',
|
|
||||||
release: 'v1.61.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiCollage,
|
|
||||||
iconColor: 'deeppink',
|
|
||||||
title: 'Justified layout (web)',
|
|
||||||
description: 'Implement justified layout (collage) on the web.',
|
|
||||||
release: 'v1.61.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiRaw,
|
|
||||||
title: 'RAW file formats',
|
|
||||||
description: 'Support for RAW file formats.',
|
|
||||||
release: 'v1.61.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiShareAll,
|
|
||||||
iconColor: 'darkturquoise',
|
|
||||||
title: 'Partner sharing (mobile)',
|
|
||||||
description: 'View shared partner photos in the mobile app.',
|
|
||||||
release: 'v1.58.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiFile,
|
|
||||||
iconColor: 'lightblue',
|
|
||||||
title: 'XMP sidecar',
|
|
||||||
description: 'Attach XMP sidecar files to assets.',
|
|
||||||
release: 'v1.58.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiFolder,
|
|
||||||
iconColor: 'brown',
|
|
||||||
title: 'Custom storage label',
|
|
||||||
description: 'Replace the user UUID in the storage template with a custom label.',
|
|
||||||
release: 'v1.57.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiShareCircle,
|
|
||||||
title: 'Partner sharing',
|
|
||||||
description: 'Share your entire collection with another user.',
|
|
||||||
release: 'v1.56.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiFaceMan,
|
|
||||||
iconColor: 'mistyrose',
|
|
||||||
title: 'Facial recognition',
|
|
||||||
description: 'Detect faces in pictures and cluster them together as people, which can be named.',
|
|
||||||
release: 'v1.56.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiMap,
|
|
||||||
iconColor: 'darksalmon',
|
|
||||||
title: 'Map view (web)',
|
|
||||||
description: 'View a global map, with clusters of photos based on corresponding GPS data.',
|
|
||||||
release: 'v1.55.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiDevices,
|
|
||||||
iconColor: 'slategray',
|
|
||||||
title: 'Manage auth devices',
|
|
||||||
description: 'Manage logged-in devices and revoke access from User Settings.',
|
|
||||||
release: 'v1.55.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiStar,
|
|
||||||
iconColor: 'gold',
|
|
||||||
title: '10,000 Stars',
|
|
||||||
description: 'Reached 10K stars on GitHub!',
|
|
||||||
release: 'v1.54.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiText,
|
|
||||||
title: 'Asset descriptions',
|
|
||||||
description: 'Save an asset description',
|
|
||||||
release: 'v1.54.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiArchiveOutline,
|
|
||||||
title: 'Archiving',
|
|
||||||
description: 'Remove assets from the main timeline by archiving them.',
|
|
||||||
release: 'v1.54.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiDevices,
|
|
||||||
iconColor: 'slategray',
|
|
||||||
title: 'Responsive web app',
|
|
||||||
description: 'Optimize the web app for small screen.',
|
|
||||||
release: 'v1.54.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiFileSearch,
|
|
||||||
iconColor: 'brown',
|
|
||||||
title: 'Search by metadata',
|
|
||||||
description: 'Search images by filename, description, tagged people, make, model, and other metadata.',
|
|
||||||
release: 'v1.52.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiImageSearch,
|
|
||||||
iconColor: 'rebeccapurple',
|
|
||||||
title: 'CLIP search',
|
|
||||||
description: 'Search images with free-form text like "Sunset at the beach".',
|
|
||||||
release: 'v1.51.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiMagnify,
|
|
||||||
iconColor: 'lightblue',
|
|
||||||
title: 'Explore page',
|
|
||||||
description: 'View tagged places, object, and people.',
|
|
||||||
release: 'v1.51.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiAppleIos,
|
|
||||||
title: 'iOS background uploads',
|
|
||||||
description: 'Automatically backup pictures in the background on iOS.',
|
|
||||||
release: 'v1.48.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiMotionPlayOutline,
|
|
||||||
title: 'Auto-Link live photos',
|
|
||||||
description: 'Automatically link live photos, even when uploaded as separate files.',
|
|
||||||
release: 'v1.48.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiMaterialDesign,
|
|
||||||
iconColor: 'blue',
|
|
||||||
title: 'Material design 3 (mobile)',
|
|
||||||
description: 'Upgrade the mobile app to Material Design 3.',
|
|
||||||
release: 'v1.47.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiHeart,
|
|
||||||
iconColor: 'red',
|
|
||||||
title: 'Favorites (mobile)',
|
|
||||||
description: 'Show favorites on the mobile app.',
|
|
||||||
release: 'v1.46.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiCakeVariant,
|
|
||||||
iconColor: 'deeppink',
|
|
||||||
title: 'Immich turns 1',
|
|
||||||
description: 'Immich is officially one year old.',
|
|
||||||
release: 'v1.43.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiHeart,
|
|
||||||
iconColor: 'red',
|
|
||||||
title: 'Favorites page (web)',
|
|
||||||
description: 'Favorite and view favorites on the web.',
|
|
||||||
release: 'v1.43.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiShareCircle,
|
|
||||||
title: 'Public share links',
|
|
||||||
description: 'Share photos and albums publicly via a shared link.',
|
|
||||||
release: 'v1.41.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiFolder,
|
|
||||||
iconColor: 'lightblue',
|
|
||||||
title: 'User-defined storage structure',
|
|
||||||
description: 'Support custom storage structures.',
|
|
||||||
release: 'v1.39.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiMotionPlayOutline,
|
|
||||||
title: 'iOS live photos',
|
|
||||||
description: 'Backup and display iOS Live Photos.',
|
|
||||||
release: 'v1.36.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiSecurity,
|
|
||||||
iconColor: 'green',
|
|
||||||
title: 'OAuth integration',
|
|
||||||
description: 'Support OAuth2 and OIDC capable identity providers.',
|
|
||||||
release: 'v1.36.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiWeb,
|
|
||||||
iconColor: 'royalblue',
|
|
||||||
title: 'Documentation site',
|
|
||||||
description: 'Release an official documentation website.',
|
|
||||||
release: 'v1.33.1',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiThemeLightDark,
|
|
||||||
iconColor: 'slategray',
|
|
||||||
title: 'Dark mode (web)',
|
|
||||||
description: 'Dark mode on the web.',
|
|
||||||
release: 'v1.32.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiPanVertical,
|
|
||||||
title: 'Virtual scrollbar (web)',
|
|
||||||
description: 'View the main timeline with a virtual scrollbar, allowing to jump to any point in time, instantly.',
|
|
||||||
release: 'v1.27.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiCheckAll,
|
|
||||||
iconColor: 'green',
|
|
||||||
title: 'Checksum duplication check',
|
|
||||||
description: 'Enforce per user sha1 checksum uniqueness.',
|
|
||||||
release: 'v1.27.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiAndroid,
|
|
||||||
iconColor: 'greenyellow',
|
|
||||||
title: 'Android background backup',
|
|
||||||
description: 'Automatic backup in the background on Android.',
|
|
||||||
release: 'v1.24.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiAccountGroup,
|
|
||||||
iconColor: 'gray',
|
|
||||||
title: 'Admin portal',
|
|
||||||
description: 'Manage users and admin settings from the web.',
|
|
||||||
release: 'v1.10.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiShareCircle,
|
|
||||||
title: 'Album sharing',
|
|
||||||
description: 'Share albums with other users.',
|
|
||||||
release: 'v1.7.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiTag,
|
|
||||||
iconColor: 'coral',
|
|
||||||
title: 'Image tagging',
|
|
||||||
description: 'Tag images with custom values.',
|
|
||||||
release: 'v1.7.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiImage,
|
|
||||||
iconColor: 'rebeccapurple',
|
|
||||||
title: 'View exif',
|
|
||||||
description: 'View metadata about assets.',
|
|
||||||
release: 'v1.3.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiCheckboxMarked,
|
|
||||||
iconColor: 'green',
|
|
||||||
title: 'Multi select',
|
|
||||||
description: 'Select and execute actions on multiple assets at the same time.',
|
|
||||||
release: 'v1.2.0',
|
|
||||||
}),
|
|
||||||
withRelease({
|
|
||||||
icon: mdiVideo,
|
|
||||||
iconColor: 'slategray',
|
|
||||||
title: 'Video player',
|
|
||||||
description: 'Play videos in the web and on mobile.',
|
|
||||||
release: 'v1.2.0',
|
|
||||||
}),
|
|
||||||
{
|
|
||||||
icon: mdiPartyPopper,
|
|
||||||
iconColor: 'deeppink',
|
|
||||||
title: 'First commit',
|
|
||||||
description: 'First commit on GitHub, Immich is born.',
|
|
||||||
getDateLabel: withLanguage(new Date(2022, 1, 3)),
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
export default function MilestonePage(): JSX.Element {
|
|
||||||
return (
|
|
||||||
<Layout title={title} description={description}>
|
|
||||||
<section className="my-8">
|
|
||||||
<h1 className="md:text-6xl text-center mb-10 text-immich-primary dark:text-immich-dark-primary px-2">
|
|
||||||
{title}
|
|
||||||
</h1>
|
|
||||||
<p className="text-center text-xl px-2">{description}</p>
|
|
||||||
<div className="flex justify-around mt-8 w-full max-w-full">
|
|
||||||
<Timeline items={[...roadmap, ...milestones]} />
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</Layout>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
Vendored
-5
@@ -1,5 +0,0 @@
|
|||||||
Policy: https://github.com/immich-app/immich/blob/main/SECURITY.md
|
|
||||||
Contact: mailto:security@immich.app
|
|
||||||
Preferred-Languages: en
|
|
||||||
Expires: 2026-05-01T23:59:00.000Z
|
|
||||||
Canonical: https://immich.app/.well-known/security.txt
|
|
||||||
Vendored
+4
@@ -1,4 +1,8 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"label": "v1.143.1",
|
||||||
|
"url": "https://v1.143.1.archive.immich.app"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"label": "v1.143.0",
|
"label": "v1.143.0",
|
||||||
"url": "https://v1.143.0.archive.immich.app"
|
"url": "https://v1.143.0.archive.immich.app"
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "immich-e2e",
|
"name": "immich-e2e",
|
||||||
"version": "1.143.0",
|
"version": "1.143.1",
|
||||||
"description": "",
|
"description": "",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
|
|||||||
@@ -123,6 +123,7 @@
|
|||||||
"logging_enable_description": "تفعيل تسجيل الأحداث",
|
"logging_enable_description": "تفعيل تسجيل الأحداث",
|
||||||
"logging_level_description": "عند التفعيل، أي مستوى تسجيل سيستخدم.",
|
"logging_level_description": "عند التفعيل، أي مستوى تسجيل سيستخدم.",
|
||||||
"logging_settings": "تسجيل الاحداث",
|
"logging_settings": "تسجيل الاحداث",
|
||||||
|
"machine_learning_availability_checks": "تحقق من التوفر",
|
||||||
"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": "كشف التكرار",
|
||||||
|
|||||||
+17
-7
@@ -84,10 +84,10 @@
|
|||||||
"image_fullsize_enabled": "Activa la generació d'imatges a tamany complet",
|
"image_fullsize_enabled": "Activa la generació d'imatges a tamany complet",
|
||||||
"image_fullsize_enabled_description": "Genera imatges a tamany complet per formats no compatibles amb la web. Quan \"Prefereix vista prèvia incrustada\" està activat, les vistes prèvies incrustades s'utilitzen directament sense conversió. No afecta els formats compatibles amb la web com JPEG.",
|
"image_fullsize_enabled_description": "Genera imatges a tamany complet per formats no compatibles amb la web. Quan \"Prefereix vista prèvia incrustada\" està activat, les vistes prèvies incrustades s'utilitzen directament sense conversió. No afecta els formats compatibles amb la web com JPEG.",
|
||||||
"image_fullsize_quality_description": "De 1 a 100, qualitat de l'imatge a tamany complet. Un valor més alt és millor, però resulta en fitxers de major tamany.",
|
"image_fullsize_quality_description": "De 1 a 100, qualitat de l'imatge a tamany complet. Un valor més alt és millor, però resulta en fitxers de major tamany.",
|
||||||
"image_fullsize_title": "Configuració d'imatges a tamany complet",
|
"image_fullsize_title": "Configuració de les imatges a tamany complet",
|
||||||
"image_prefer_embedded_preview": "Prefereix vista prèvia incrustada",
|
"image_prefer_embedded_preview": "Prefereix vista prèvia incrustada",
|
||||||
"image_prefer_embedded_preview_setting_description": "Empra vista prèvia incrustada en les fotografies RAW com a entrada per al processament d'imatge, quan sigui possible. Aquesta acció pot produir colors més acurats en algunes imatges, però la qualitat de la vista prèvia depèn de la càmera i la imatge pot tenir més artefactes de compressió.",
|
"image_prefer_embedded_preview_setting_description": "Empra vista prèvia incrustada en les fotografies RAW com a entrada per al processament d'imatge, quan sigui possible. Aquesta acció pot produir colors més acurats en algunes imatges, però la qualitat de la vista prèvia depèn de la càmera i la imatge pot tenir més artefactes de compressió.",
|
||||||
"image_prefer_wide_gamut": "Prefereix àmplia gamma",
|
"image_prefer_wide_gamut": "Prefereix la gamma àmplia",
|
||||||
"image_prefer_wide_gamut_setting_description": "Uitlitza Display P3 per a les miniatures. Això preserva més bé la vitalitat de les imatges amb espais de color àmplis, però les imatges es poden veure diferent en aparells antics amb una versió antiga del navegador. Les imatges sRGB romandran com a sRGB per a evitar canvis de color.",
|
"image_prefer_wide_gamut_setting_description": "Uitlitza Display P3 per a les miniatures. Això preserva més bé la vitalitat de les imatges amb espais de color àmplis, però les imatges es poden veure diferent en aparells antics amb una versió antiga del navegador. Les imatges sRGB romandran com a sRGB per a evitar canvis de color.",
|
||||||
"image_preview_description": "Imatge de mida mitjana amb metadades eliminades, que s'utilitza quan es visualitza un sol recurs i per a l'aprenentatge automàtic",
|
"image_preview_description": "Imatge de mida mitjana amb metadades eliminades, que s'utilitza quan es visualitza un sol recurs i per a l'aprenentatge automàtic",
|
||||||
"image_preview_quality_description": "Vista prèvia de la qualitat de l'1 al 100. Més alt és millor, però produeix fitxers més grans i pot reduir la capacitat de resposta de l'aplicació. Establir un valor baix pot afectar la qualitat de l'aprenentatge automàtic.",
|
"image_preview_quality_description": "Vista prèvia de la qualitat de l'1 al 100. Més alt és millor, però produeix fitxers més grans i pot reduir la capacitat de resposta de l'aplicació. Establir un valor baix pot afectar la qualitat de l'aprenentatge automàtic.",
|
||||||
@@ -95,11 +95,11 @@
|
|||||||
"image_quality": "Qualitat",
|
"image_quality": "Qualitat",
|
||||||
"image_resolution": "Resolució",
|
"image_resolution": "Resolució",
|
||||||
"image_resolution_description": "Les resolucions més altes poden conservar més detalls però triguen més a codificar-se, tenen mides de fitxer més grans i poden reduir la capacitat de resposta de l'aplicació.",
|
"image_resolution_description": "Les resolucions més altes poden conservar més detalls però triguen més a codificar-se, tenen mides de fitxer més grans i poden reduir la capacitat de resposta de l'aplicació.",
|
||||||
"image_settings": "Configuració d'imatges",
|
"image_settings": "Configuració de les imatges",
|
||||||
"image_settings_description": "Gestiona la qualitat i resolució de les imatges generades",
|
"image_settings_description": "Gestiona la qualitat i resolució de les imatges generades",
|
||||||
"image_thumbnail_description": "Miniatura petita amb metadades eliminades, que s'utilitza quan es visualitzen grups de fotos com la línia de temps principal",
|
"image_thumbnail_description": "Miniatura petita amb metadades eliminades, que s'utilitza quan es visualitzen grups de fotos com la línia de temps principal",
|
||||||
"image_thumbnail_quality_description": "Qualitat de miniatura d'1 a 100. Més alt és millor, però produeix fitxers més grans i pot reduir la capacitat de resposta de l'aplicació.",
|
"image_thumbnail_quality_description": "Qualitat de miniatura d'1 a 100. Més alt és millor, però produeix fitxers més grans i pot reduir la capacitat de resposta de l'aplicació.",
|
||||||
"image_thumbnail_title": "Configuració de miniatures",
|
"image_thumbnail_title": "Configuració de les miniatures",
|
||||||
"job_concurrency": "{job} simultàniament",
|
"job_concurrency": "{job} simultàniament",
|
||||||
"job_created": "Tasca creada",
|
"job_created": "Tasca creada",
|
||||||
"job_not_concurrency_safe": "Aquesta tasca no és segura per a la conconcurrència.",
|
"job_not_concurrency_safe": "Aquesta tasca no és segura per a la conconcurrència.",
|
||||||
@@ -123,6 +123,13 @@
|
|||||||
"logging_enable_description": "Habilitar el registrament",
|
"logging_enable_description": "Habilitar el registrament",
|
||||||
"logging_level_description": "Quan està habilitat, quin nivell de registre es vol emprar.",
|
"logging_level_description": "Quan està habilitat, quin nivell de registre es vol emprar.",
|
||||||
"logging_settings": "Registre",
|
"logging_settings": "Registre",
|
||||||
|
"machine_learning_availability_checks": "Comprovacions de disponibilitat",
|
||||||
|
"machine_learning_availability_checks_description": "Detectar i preferir automàticament els servidors d'aprenentatge automàtic disponibles",
|
||||||
|
"machine_learning_availability_checks_enabled": "Habilita les comprovacions de disponibilitat",
|
||||||
|
"machine_learning_availability_checks_interval": "Interval de comprovació",
|
||||||
|
"machine_learning_availability_checks_interval_description": "Interval en mil·lisegons entre comprovacions de disponibilitat",
|
||||||
|
"machine_learning_availability_checks_timeout": "Temps d'espera de la sol·licitud",
|
||||||
|
"machine_learning_availability_checks_timeout_description": "Temps d'espera en mil·lisegons per a les comprovacions de disponibilitat",
|
||||||
"machine_learning_clip_model": "Model CLIP",
|
"machine_learning_clip_model": "Model CLIP",
|
||||||
"machine_learning_clip_model_description": "El nom d'un model CLIP que apareix a <link>aquí</link>. Tingues en compte que has de tornar a executar la cerca intel·ligent per a totes les imatges quan es canvia de model.",
|
"machine_learning_clip_model_description": "El nom d'un model CLIP que apareix a <link>aquí</link>. Tingues en compte que has de tornar a executar la cerca intel·ligent per a totes les imatges quan es canvia de model.",
|
||||||
"machine_learning_duplicate_detection": "Detecció de duplicats",
|
"machine_learning_duplicate_detection": "Detecció de duplicats",
|
||||||
@@ -496,6 +503,7 @@
|
|||||||
"asset_skipped": "Saltat",
|
"asset_skipped": "Saltat",
|
||||||
"asset_skipped_in_trash": "A la paperera",
|
"asset_skipped_in_trash": "A la paperera",
|
||||||
"asset_trashed": "Recurs a la paperera",
|
"asset_trashed": "Recurs a la paperera",
|
||||||
|
"asset_troubleshoot": "Diagnòstic de l'element",
|
||||||
"asset_uploaded": "Carregat",
|
"asset_uploaded": "Carregat",
|
||||||
"asset_uploading": "S'està carregant…",
|
"asset_uploading": "S'està carregant…",
|
||||||
"asset_viewer_settings_subtitle": "Gestiona la configuració del visualitzador de la galeria",
|
"asset_viewer_settings_subtitle": "Gestiona la configuració del visualitzador de la galeria",
|
||||||
@@ -532,6 +540,7 @@
|
|||||||
"background_backup_running_error": "La còpia de seguretat en segon pla s'està executant actualment, no es pot iniciar la còpia de seguretat manual",
|
"background_backup_running_error": "La còpia de seguretat en segon pla s'està executant actualment, no es pot iniciar la còpia de seguretat manual",
|
||||||
"background_location_permission": "Permís d'ubicació en segon pla",
|
"background_location_permission": "Permís d'ubicació en segon pla",
|
||||||
"background_location_permission_content": "Per canviar de xarxa quan s'executa en segon pla, Immich ha de *sempre* tenir accés a la ubicació precisa perquè l'aplicació pugui llegir el nom de la xarxa Wi-Fi",
|
"background_location_permission_content": "Per canviar de xarxa quan s'executa en segon pla, Immich ha de *sempre* tenir accés a la ubicació precisa perquè l'aplicació pugui llegir el nom de la xarxa Wi-Fi",
|
||||||
|
"background_options": "Opcions en segon pla",
|
||||||
"backup": "Còpia",
|
"backup": "Còpia",
|
||||||
"backup_album_selection_page_albums_device": "Àlbums al dispositiu ({count})",
|
"backup_album_selection_page_albums_device": "Àlbums al dispositiu ({count})",
|
||||||
"backup_album_selection_page_albums_tap": "Un toc per incloure, doble toc per excloure",
|
"backup_album_selection_page_albums_tap": "Un toc per incloure, doble toc per excloure",
|
||||||
@@ -655,6 +664,7 @@
|
|||||||
"change_pin_code": "Canviar el codi PIN",
|
"change_pin_code": "Canviar el codi PIN",
|
||||||
"change_your_password": "Canvia la teva contrasenya",
|
"change_your_password": "Canvia la teva contrasenya",
|
||||||
"changed_visibility_successfully": "Visibilitat canviada amb èxit",
|
"changed_visibility_successfully": "Visibilitat canviada amb èxit",
|
||||||
|
"charging": "Carregant",
|
||||||
"check_corrupt_asset_backup": "Comprovar les còpies de seguretat corruptes",
|
"check_corrupt_asset_backup": "Comprovar les còpies de seguretat corruptes",
|
||||||
"check_corrupt_asset_backup_button": "Realitzar comprovació",
|
"check_corrupt_asset_backup_button": "Realitzar comprovació",
|
||||||
"check_corrupt_asset_backup_description": "Executeu aquesta comprovació només mitjançant Wi-Fi i un cop s'hagi fet una còpia de seguretat de tots els actius. El procediment pot trigar uns minuts.",
|
"check_corrupt_asset_backup_description": "Executeu aquesta comprovació només mitjançant Wi-Fi i un cop s'hagi fet una còpia de seguretat de tots els actius. El procediment pot trigar uns minuts.",
|
||||||
@@ -880,7 +890,7 @@
|
|||||||
"empty_trash": "Buidar la paperera",
|
"empty_trash": "Buidar la paperera",
|
||||||
"empty_trash_confirmation": "Esteu segur que voleu buidar la paperera? Això eliminarà tots els recursos a la paperera permanentment d'Immich.\nNo podeu desfer aquesta acció!",
|
"empty_trash_confirmation": "Esteu segur que voleu buidar la paperera? Això eliminarà tots els recursos a la paperera permanentment d'Immich.\nNo podeu desfer aquesta acció!",
|
||||||
"enable": "Activar",
|
"enable": "Activar",
|
||||||
"enable_backup": "Habilitar Còpia de Seguretat",
|
"enable_backup": "Còpia de Seguretat",
|
||||||
"enable_biometric_auth_description": "Introduïu el codi PIN per a habilitar l'autenticació biomètrica",
|
"enable_biometric_auth_description": "Introduïu el codi PIN per a habilitar l'autenticació biomètrica",
|
||||||
"enabled": "Activat",
|
"enabled": "Activat",
|
||||||
"end_date": "Data final",
|
"end_date": "Data final",
|
||||||
@@ -1517,9 +1527,9 @@
|
|||||||
"profile_drawer_app_logs": "Registres",
|
"profile_drawer_app_logs": "Registres",
|
||||||
"profile_drawer_client_out_of_date_major": "L'aplicació mòbil està desactualitzada. Si us plau, actualitzeu a l'última versió major.",
|
"profile_drawer_client_out_of_date_major": "L'aplicació mòbil està desactualitzada. Si us plau, actualitzeu a l'última versió major.",
|
||||||
"profile_drawer_client_out_of_date_minor": "L'aplicació mòbil està desactualitzada. Si us plau, actualitzeu a l'última versió menor.",
|
"profile_drawer_client_out_of_date_minor": "L'aplicació mòbil està desactualitzada. Si us plau, actualitzeu a l'última versió menor.",
|
||||||
"profile_drawer_client_server_up_to_date": "El Client i el Servidor estan actualitzats",
|
"profile_drawer_client_server_up_to_date": "El client i el servidor estan actualitzats",
|
||||||
"profile_drawer_github": "GitHub",
|
"profile_drawer_github": "GitHub",
|
||||||
"profile_drawer_readonly_mode": "Manera de només lectura activada. Feu doble click a la icona de l'avatar de l'usuari per sortir.",
|
"profile_drawer_readonly_mode": "Mode només lectura. Feu pulsació llarga a la icona de l'avatar d'usuari per sortir.",
|
||||||
"profile_drawer_server_out_of_date_major": "El servidor està desactualitzat. Si us plau, actualitzeu a l'última versió major.",
|
"profile_drawer_server_out_of_date_major": "El servidor està desactualitzat. Si us plau, actualitzeu a l'última versió major.",
|
||||||
"profile_drawer_server_out_of_date_minor": "El servidor està desactualitzat. Si us plau, actualitzeu a l'última versió menor.",
|
"profile_drawer_server_out_of_date_minor": "El servidor està desactualitzat. Si us plau, actualitzeu a l'última versió menor.",
|
||||||
"profile_image_of_user": "Imatge de perfil de {user}",
|
"profile_image_of_user": "Imatge de perfil de {user}",
|
||||||
|
|||||||
+38
-2
@@ -123,6 +123,13 @@
|
|||||||
"logging_enable_description": "Aktiver logning",
|
"logging_enable_description": "Aktiver logning",
|
||||||
"logging_level_description": "Når slået til, hvilket logniveau, der skal bruges.",
|
"logging_level_description": "Når slået til, hvilket logniveau, der skal bruges.",
|
||||||
"logging_settings": "Logning",
|
"logging_settings": "Logning",
|
||||||
|
"machine_learning_availability_checks": "Tilgængelighedstjek",
|
||||||
|
"machine_learning_availability_checks_description": "Opdag og foretræk automatisk tilgængelige maskinlæringsservere",
|
||||||
|
"machine_learning_availability_checks_enabled": "Aktivér tilgængelighedstjek",
|
||||||
|
"machine_learning_availability_checks_interval": "Kontroller interval",
|
||||||
|
"machine_learning_availability_checks_interval_description": "Interval i millisekunder mellem tilgængelighedstjeks",
|
||||||
|
"machine_learning_availability_checks_timeout": "Timeout på anmodning",
|
||||||
|
"machine_learning_availability_checks_timeout_description": "Timeout i millisekunder på tilgængelighedstjeks",
|
||||||
"machine_learning_clip_model": "CLIP-model",
|
"machine_learning_clip_model": "CLIP-model",
|
||||||
"machine_learning_clip_model_description": "Navnet på CLIP-modellen på listen <link>her</link>. Bemærk at du skal genkøre \"Smart Søgning\"-jobbet for alle billeder, hvis du skifter model.",
|
"machine_learning_clip_model_description": "Navnet på CLIP-modellen på listen <link>her</link>. Bemærk at du skal genkøre \"Smart Søgning\"-jobbet for alle billeder, hvis du skifter model.",
|
||||||
"machine_learning_duplicate_detection": "Dubletdetektion",
|
"machine_learning_duplicate_detection": "Dubletdetektion",
|
||||||
@@ -423,6 +430,7 @@
|
|||||||
"album_remove_user_confirmation": "Er du sikker på at du vil fjerne {user}?",
|
"album_remove_user_confirmation": "Er du sikker på at du vil fjerne {user}?",
|
||||||
"album_search_not_found": "Ingen album fundet som matcher din søgning",
|
"album_search_not_found": "Ingen album fundet som matcher din søgning",
|
||||||
"album_share_no_users": "Det ser ud til at du har delt denne album med alle brugere, eller du har ikke nogen brugere til at dele med.",
|
"album_share_no_users": "Det ser ud til at du har delt denne album med alle brugere, eller du har ikke nogen brugere til at dele med.",
|
||||||
|
"album_summary": "Albumoversigt",
|
||||||
"album_updated": "Album opdateret",
|
"album_updated": "Album opdateret",
|
||||||
"album_updated_setting_description": "Modtag en emailnotifikation når et delt album får nye mediefiler",
|
"album_updated_setting_description": "Modtag en emailnotifikation når et delt album får nye mediefiler",
|
||||||
"album_user_left": "Forlod {album}",
|
"album_user_left": "Forlod {album}",
|
||||||
@@ -494,6 +502,8 @@
|
|||||||
"asset_restored_successfully": "Elementet blev gendannet succesfuldt",
|
"asset_restored_successfully": "Elementet blev gendannet succesfuldt",
|
||||||
"asset_skipped": "Sprunget over",
|
"asset_skipped": "Sprunget over",
|
||||||
"asset_skipped_in_trash": "I skraldespand",
|
"asset_skipped_in_trash": "I skraldespand",
|
||||||
|
"asset_trashed": "Objekt kasseret",
|
||||||
|
"asset_troubleshoot": "Fejlsøg på objekt",
|
||||||
"asset_uploaded": "Uploadet",
|
"asset_uploaded": "Uploadet",
|
||||||
"asset_uploading": "Uploader…",
|
"asset_uploading": "Uploader…",
|
||||||
"asset_viewer_settings_subtitle": "Administrer indstillinger for gallerifremviser",
|
"asset_viewer_settings_subtitle": "Administrer indstillinger for gallerifremviser",
|
||||||
@@ -527,8 +537,10 @@
|
|||||||
"autoplay_slideshow": "Afspil slideshow automatisk",
|
"autoplay_slideshow": "Afspil slideshow automatisk",
|
||||||
"back": "Tilbage",
|
"back": "Tilbage",
|
||||||
"back_close_deselect": "Tilbage, luk eller fravælg",
|
"back_close_deselect": "Tilbage, luk eller fravælg",
|
||||||
|
"background_backup_running_error": "Backup kører lige nu i baggrund; kan ikke starte manuel backup",
|
||||||
"background_location_permission": "Tilladelse til baggrundsplacering",
|
"background_location_permission": "Tilladelse til baggrundsplacering",
|
||||||
"background_location_permission_content": "For at skifte netværk, når appen kører i baggrunden, skal Immich *altid* have præcis placeringsadgang, så appen kan læse WiFi-netværkets navn",
|
"background_location_permission_content": "For at skifte netværk, når appen kører i baggrunden, skal Immich *altid* have præcis placeringsadgang, så appen kan læse WiFi-netværkets navn",
|
||||||
|
"background_options": "Baggrundsmuligheder",
|
||||||
"backup": "Sikkerhedskopier",
|
"backup": "Sikkerhedskopier",
|
||||||
"backup_album_selection_page_albums_device": "Albummer på enheden ({count})",
|
"backup_album_selection_page_albums_device": "Albummer på enheden ({count})",
|
||||||
"backup_album_selection_page_albums_tap": "Tryk en gang for at inkludere, tryk to gange for at ekskludere",
|
"backup_album_selection_page_albums_tap": "Tryk en gang for at inkludere, tryk to gange for at ekskludere",
|
||||||
@@ -536,6 +548,7 @@
|
|||||||
"backup_album_selection_page_select_albums": "Vælg albummer",
|
"backup_album_selection_page_select_albums": "Vælg albummer",
|
||||||
"backup_album_selection_page_selection_info": "Oplysninger om valgte",
|
"backup_album_selection_page_selection_info": "Oplysninger om valgte",
|
||||||
"backup_album_selection_page_total_assets": "Samlede unikke elementer",
|
"backup_album_selection_page_total_assets": "Samlede unikke elementer",
|
||||||
|
"backup_albums_sync": "Synkronisering af backupalbums",
|
||||||
"backup_all": "Alt",
|
"backup_all": "Alt",
|
||||||
"backup_background_service_backup_failed_message": "Sikkerhedskopiering af elementer fejlede. Forsøger igen…",
|
"backup_background_service_backup_failed_message": "Sikkerhedskopiering af elementer fejlede. Forsøger igen…",
|
||||||
"backup_background_service_connection_failed_message": "Forbindelsen til serveren blev tabt. Forsøger igen…",
|
"backup_background_service_connection_failed_message": "Forbindelsen til serveren blev tabt. Forsøger igen…",
|
||||||
@@ -633,7 +646,7 @@
|
|||||||
"cannot_merge_people": "Kan ikke sammenflette personer",
|
"cannot_merge_people": "Kan ikke sammenflette personer",
|
||||||
"cannot_undo_this_action": "Du kan ikke fortryde denne handling!",
|
"cannot_undo_this_action": "Du kan ikke fortryde denne handling!",
|
||||||
"cannot_update_the_description": "Kan ikke opdatere beskrivelsen",
|
"cannot_update_the_description": "Kan ikke opdatere beskrivelsen",
|
||||||
"cast": "Cast",
|
"cast": "Caste",
|
||||||
"cast_description": "Konfigurer tilgængelige cast destinationer",
|
"cast_description": "Konfigurer tilgængelige cast destinationer",
|
||||||
"change_date": "Ændr dato",
|
"change_date": "Ændr dato",
|
||||||
"change_description": "Beskrivelse af ændringer",
|
"change_description": "Beskrivelse af ændringer",
|
||||||
@@ -652,6 +665,8 @@
|
|||||||
"change_pin_code": "Skift PIN kode",
|
"change_pin_code": "Skift PIN kode",
|
||||||
"change_your_password": "Skift dit kodeord",
|
"change_your_password": "Skift dit kodeord",
|
||||||
"changed_visibility_successfully": "Synlighed blev ændret",
|
"changed_visibility_successfully": "Synlighed blev ændret",
|
||||||
|
"charging": "Lader",
|
||||||
|
"charging_requirement_mobile_backup": "Baggrundsbackup kræver, at enheden er tilsluttet oplader",
|
||||||
"check_corrupt_asset_backup": "Tjek for korrupte sikkerhedskopier af elementer",
|
"check_corrupt_asset_backup": "Tjek for korrupte sikkerhedskopier af elementer",
|
||||||
"check_corrupt_asset_backup_button": "Foretag kontrol",
|
"check_corrupt_asset_backup_button": "Foretag kontrol",
|
||||||
"check_corrupt_asset_backup_description": "Kør kun denne kontrol via Wi-Fi, og når alle elementer er blevet sikkerhedskopieret. Proceduren kan tage et par minutter.",
|
"check_corrupt_asset_backup_description": "Kør kun denne kontrol via Wi-Fi, og når alle elementer er blevet sikkerhedskopieret. Proceduren kan tage et par minutter.",
|
||||||
@@ -738,6 +753,7 @@
|
|||||||
"create_user": "Opret bruger",
|
"create_user": "Opret bruger",
|
||||||
"created": "Oprettet",
|
"created": "Oprettet",
|
||||||
"created_at": "Oprettet",
|
"created_at": "Oprettet",
|
||||||
|
"creating_linked_albums": "Opretter sammenkædede albums...",
|
||||||
"crop": "Beskær",
|
"crop": "Beskær",
|
||||||
"curated_object_page_title": "Ting",
|
"curated_object_page_title": "Ting",
|
||||||
"current_device": "Nuværende enhed",
|
"current_device": "Nuværende enhed",
|
||||||
@@ -887,7 +903,9 @@
|
|||||||
"error": "Fejl",
|
"error": "Fejl",
|
||||||
"error_change_sort_album": "Ændring af sorteringsrækkefølgen mislykkedes",
|
"error_change_sort_album": "Ændring af sorteringsrækkefølgen mislykkedes",
|
||||||
"error_delete_face": "Fejl ved sletning af ansigt fra mediefil",
|
"error_delete_face": "Fejl ved sletning af ansigt fra mediefil",
|
||||||
|
"error_getting_places": "Fejl ved hentning af steder",
|
||||||
"error_loading_image": "Fejl ved indlæsning af billede",
|
"error_loading_image": "Fejl ved indlæsning af billede",
|
||||||
|
"error_loading_partners": "Fejl ved indlæsning af partnere: {error}",
|
||||||
"error_saving_image": "Fejl: {error}",
|
"error_saving_image": "Fejl: {error}",
|
||||||
"error_tag_face_bounding_box": "Fejl ved tagging af ansigt - kan ikke finde koordinator for afgrænsningskasse",
|
"error_tag_face_bounding_box": "Fejl ved tagging af ansigt - kan ikke finde koordinator for afgrænsningskasse",
|
||||||
"error_title": "Fejl - Noget gik galt",
|
"error_title": "Fejl - Noget gik galt",
|
||||||
@@ -1052,6 +1070,7 @@
|
|||||||
"favorites_page_no_favorites": "Ingen favoritter blev fundet",
|
"favorites_page_no_favorites": "Ingen favoritter blev fundet",
|
||||||
"feature_photo_updated": "Forsidebillede uploadet",
|
"feature_photo_updated": "Forsidebillede uploadet",
|
||||||
"features": "Funktioner",
|
"features": "Funktioner",
|
||||||
|
"features_in_development": "Funktioner under udvikling",
|
||||||
"features_setting_description": "Administrer app-funktioner",
|
"features_setting_description": "Administrer app-funktioner",
|
||||||
"file_name": "Filnavn",
|
"file_name": "Filnavn",
|
||||||
"file_name_or_extension": "Filnavn eller filtype",
|
"file_name_or_extension": "Filnavn eller filtype",
|
||||||
@@ -1216,6 +1235,7 @@
|
|||||||
"local": "Lokal",
|
"local": "Lokal",
|
||||||
"local_asset_cast_failed": "Kan ikke caste et aktiv, der ikke er uploadet til serveren",
|
"local_asset_cast_failed": "Kan ikke caste et aktiv, der ikke er uploadet til serveren",
|
||||||
"local_assets": "Lokale objekter",
|
"local_assets": "Lokale objekter",
|
||||||
|
"local_media_summary": "Opsummering af lokale media",
|
||||||
"local_network": "Lokalt netværk",
|
"local_network": "Lokalt netværk",
|
||||||
"local_network_sheet_info": "Appen vil oprette forbindelse til serveren via denne URL, når du bruger det angivne WiFi-netværk",
|
"local_network_sheet_info": "Appen vil oprette forbindelse til serveren via denne URL, når du bruger det angivne WiFi-netværk",
|
||||||
"location_permission": "Tilladelse til placering",
|
"location_permission": "Tilladelse til placering",
|
||||||
@@ -1227,6 +1247,7 @@
|
|||||||
"location_picker_longitude_hint": "Indtast din længdegrad her",
|
"location_picker_longitude_hint": "Indtast din længdegrad her",
|
||||||
"lock": "Lås",
|
"lock": "Lås",
|
||||||
"locked_folder": "Låst mappe",
|
"locked_folder": "Låst mappe",
|
||||||
|
"log_detail_title": "Logdetaljer",
|
||||||
"log_out": "Log ud",
|
"log_out": "Log ud",
|
||||||
"log_out_all_devices": "Log ud af alle enheder",
|
"log_out_all_devices": "Log ud af alle enheder",
|
||||||
"logged_in_as": "Logget ind som {user}",
|
"logged_in_as": "Logget ind som {user}",
|
||||||
@@ -1257,6 +1278,7 @@
|
|||||||
"login_password_changed_success": "Kodeordet blev opdateret",
|
"login_password_changed_success": "Kodeordet blev opdateret",
|
||||||
"logout_all_device_confirmation": "Er du sikker på, at du vil logge ud af alle enheder?",
|
"logout_all_device_confirmation": "Er du sikker på, at du vil logge ud af alle enheder?",
|
||||||
"logout_this_device_confirmation": "Er du sikker på, at du vil logge denne enhed ud?",
|
"logout_this_device_confirmation": "Er du sikker på, at du vil logge denne enhed ud?",
|
||||||
|
"logs": "Logs",
|
||||||
"longitude": "Længdegrad",
|
"longitude": "Længdegrad",
|
||||||
"look": "Kig",
|
"look": "Kig",
|
||||||
"loop_videos": "Gentag videoer",
|
"loop_videos": "Gentag videoer",
|
||||||
@@ -1299,6 +1321,7 @@
|
|||||||
"mark_as_read": "Marker som læst",
|
"mark_as_read": "Marker som læst",
|
||||||
"marked_all_as_read": "Markerede alle som læst",
|
"marked_all_as_read": "Markerede alle som læst",
|
||||||
"matches": "Parringer",
|
"matches": "Parringer",
|
||||||
|
"matching_assets": "Matchende objekter",
|
||||||
"media_type": "Medietype",
|
"media_type": "Medietype",
|
||||||
"memories": "Minder",
|
"memories": "Minder",
|
||||||
"memories_all_caught_up": "Ajour",
|
"memories_all_caught_up": "Ajour",
|
||||||
@@ -1339,6 +1362,7 @@
|
|||||||
"name_or_nickname": "Navn eller kælenavn",
|
"name_or_nickname": "Navn eller kælenavn",
|
||||||
"network_requirement_photos_upload": "Benyt mobildatanettet for at sikkerhedskopiere dine fotos",
|
"network_requirement_photos_upload": "Benyt mobildatanettet for at sikkerhedskopiere dine fotos",
|
||||||
"network_requirement_videos_upload": "Benyt mobildatanettet for at sikkerhedskopiere dine videoer",
|
"network_requirement_videos_upload": "Benyt mobildatanettet for at sikkerhedskopiere dine videoer",
|
||||||
|
"network_requirements": "Netværkskrav",
|
||||||
"network_requirements_updated": "Netværkskravene er ændret, backup-køen nulstilles",
|
"network_requirements_updated": "Netværkskravene er ændret, backup-køen nulstilles",
|
||||||
"networking_settings": "Netværk",
|
"networking_settings": "Netværk",
|
||||||
"networking_subtitle": "Administrer serverens endepunktindstillinger",
|
"networking_subtitle": "Administrer serverens endepunktindstillinger",
|
||||||
@@ -1349,6 +1373,7 @@
|
|||||||
"new_person": "Ny person",
|
"new_person": "Ny person",
|
||||||
"new_pin_code": "Ny PIN kode",
|
"new_pin_code": "Ny PIN kode",
|
||||||
"new_pin_code_subtitle": "Dette er første gang du tilgår den låste mappe. Lav en PIN kode for sikkert at tilgå denne side",
|
"new_pin_code_subtitle": "Dette er første gang du tilgår den låste mappe. Lav en PIN kode for sikkert at tilgå denne side",
|
||||||
|
"new_timeline": "Ny tidslinje",
|
||||||
"new_user_created": "Ny bruger oprettet",
|
"new_user_created": "Ny bruger oprettet",
|
||||||
"new_version_available": "NY VERSION TILGÆNGELIG",
|
"new_version_available": "NY VERSION TILGÆNGELIG",
|
||||||
"newest_first": "Nyeste først",
|
"newest_first": "Nyeste først",
|
||||||
@@ -1362,20 +1387,25 @@
|
|||||||
"no_assets_message": "KLIK FOR AT UPLOADE DIT FØRSTE BILLEDE",
|
"no_assets_message": "KLIK FOR AT UPLOADE DIT FØRSTE BILLEDE",
|
||||||
"no_assets_to_show": "Ingen elementer at vise",
|
"no_assets_to_show": "Ingen elementer at vise",
|
||||||
"no_cast_devices_found": "Ingen Cast-enheder fundet",
|
"no_cast_devices_found": "Ingen Cast-enheder fundet",
|
||||||
|
"no_checksum_local": "Ingen checksum tilgængelig – kan ikke hente lokale objekter",
|
||||||
|
"no_checksum_remote": "Ingen checksum tilgængelig – kan ikke hente eksterne objekter",
|
||||||
"no_duplicates_found": "Ingen duplikater fundet.",
|
"no_duplicates_found": "Ingen duplikater fundet.",
|
||||||
"no_exif_info_available": "Ingen tilgængelig exif information",
|
"no_exif_info_available": "Ingen tilgængelig exif information",
|
||||||
"no_explore_results_message": "Upload flere billeder for at udforske din samling.",
|
"no_explore_results_message": "Upload flere billeder for at udforske din samling.",
|
||||||
"no_favorites_message": "Tilføj favoritter for hurtigt at finde dine bedst billeder og videoer",
|
"no_favorites_message": "Tilføj favoritter for hurtigt at finde dine bedst billeder og videoer",
|
||||||
"no_libraries_message": "Opret et eksternt bibliotek for at se dine billeder og videoer",
|
"no_libraries_message": "Opret et eksternt bibliotek for at se dine billeder og videoer",
|
||||||
|
"no_local_assets_found": "Ingen lokale objekter fundet med denne checksum",
|
||||||
"no_locked_photos_message": "Billeder og videoer i den låste mappe er skjulte og vil ikke blive vist i dit bibliotek.",
|
"no_locked_photos_message": "Billeder og videoer i den låste mappe er skjulte og vil ikke blive vist i dit bibliotek.",
|
||||||
"no_name": "Intet navn",
|
"no_name": "Intet navn",
|
||||||
"no_notifications": "Ingen notifikationer",
|
"no_notifications": "Ingen notifikationer",
|
||||||
"no_people_found": "Ingen tilsvarende personer fundet",
|
"no_people_found": "Ingen tilsvarende personer fundet",
|
||||||
"no_places": "Ingen steder",
|
"no_places": "Ingen steder",
|
||||||
|
"no_remote_assets_found": "Ingen eksterne objekter fundet med denne checksum",
|
||||||
"no_results": "Ingen resultater",
|
"no_results": "Ingen resultater",
|
||||||
"no_results_description": "Prøv et synonym eller et mere generelt søgeord",
|
"no_results_description": "Prøv et synonym eller et mere generelt søgeord",
|
||||||
"no_shared_albums_message": "Opret et album for at dele billeder og videoer med personer i dit netværk",
|
"no_shared_albums_message": "Opret et album for at dele billeder og videoer med personer i dit netværk",
|
||||||
"no_uploads_in_progress": "Ingen upload i gang",
|
"no_uploads_in_progress": "Ingen upload i gang",
|
||||||
|
"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",
|
"note_apply_storage_label_to_previously_uploaded assets": "Bemærk: For at anvende Lagringsmærkat på tidligere uploadede medier, kør",
|
||||||
@@ -1497,6 +1527,7 @@
|
|||||||
"port": "Port",
|
"port": "Port",
|
||||||
"preferences_settings_subtitle": "Administrer app-præferencer",
|
"preferences_settings_subtitle": "Administrer app-præferencer",
|
||||||
"preferences_settings_title": "Præferencer",
|
"preferences_settings_title": "Præferencer",
|
||||||
|
"preparing": "Forberedelse",
|
||||||
"preset": "Forudindstilling",
|
"preset": "Forudindstilling",
|
||||||
"preview": "Forhåndsvisning",
|
"preview": "Forhåndsvisning",
|
||||||
"previous": "Forrige",
|
"previous": "Forrige",
|
||||||
@@ -1562,6 +1593,7 @@
|
|||||||
"read_changelog": "Læs ændringslog",
|
"read_changelog": "Læs ændringslog",
|
||||||
"readonly_mode_disabled": "Skrivebeskyttet tilstand deaktiveret",
|
"readonly_mode_disabled": "Skrivebeskyttet tilstand deaktiveret",
|
||||||
"readonly_mode_enabled": "Skrivebeskyttet tilstand aktiveret",
|
"readonly_mode_enabled": "Skrivebeskyttet tilstand aktiveret",
|
||||||
|
"ready_for_upload": "Klar til upload",
|
||||||
"reassign": "Gentildel",
|
"reassign": "Gentildel",
|
||||||
"reassigned_assets_to_existing_person": "{count, plural, one {# mediefil} other {# mediefiler}} er blevet gentildelt til {name, select, null {en eksisterende person} other {{name}}}",
|
"reassigned_assets_to_existing_person": "{count, plural, one {# mediefil} other {# mediefiler}} er blevet gentildelt til {name, select, null {en eksisterende person} other {{name}}}",
|
||||||
"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",
|
||||||
@@ -1586,6 +1618,7 @@
|
|||||||
"regenerating_thumbnails": "Regenererer forhåndsvisninger",
|
"regenerating_thumbnails": "Regenererer forhåndsvisninger",
|
||||||
"remote": "Eksternt",
|
"remote": "Eksternt",
|
||||||
"remote_assets": "Eksterne objekter",
|
"remote_assets": "Eksterne objekter",
|
||||||
|
"remote_media_summary": "Oversigt over eksterne media",
|
||||||
"remove": "Fjern",
|
"remove": "Fjern",
|
||||||
"remove_assets_album_confirmation": "Er du sikker på, at du vil fjerne {count, plural, one {# aktiv} other {# aktiver}} fra albummet?",
|
"remove_assets_album_confirmation": "Er du sikker på, at du vil fjerne {count, plural, one {# aktiv} other {# aktiver}} fra albummet?",
|
||||||
"remove_assets_shared_link_confirmation": "Er du sikker på, at du vil fjerne {count, plural, one {# aktiv} other {# aktiver}} fra dette delte link?",
|
"remove_assets_shared_link_confirmation": "Er du sikker på, at du vil fjerne {count, plural, one {# aktiv} other {# aktiver}} fra dette delte link?",
|
||||||
@@ -1861,6 +1894,7 @@
|
|||||||
"show_slideshow_transition": "Vis overgang til diasshow",
|
"show_slideshow_transition": "Vis overgang til diasshow",
|
||||||
"show_supporter_badge": "Supportermærke",
|
"show_supporter_badge": "Supportermærke",
|
||||||
"show_supporter_badge_description": "Vis et supportermærke",
|
"show_supporter_badge_description": "Vis et supportermærke",
|
||||||
|
"show_text_search_menu": "Vis tekstsøgningsmenu",
|
||||||
"shuffle": "Bland",
|
"shuffle": "Bland",
|
||||||
"sidebar": "Sidebjælke",
|
"sidebar": "Sidebjælke",
|
||||||
"sidebar_display_description": "Vis et link til visningen i sidebjælken",
|
"sidebar_display_description": "Vis et link til visningen i sidebjælken",
|
||||||
@@ -1891,6 +1925,7 @@
|
|||||||
"stacktrace": "Stacktrace",
|
"stacktrace": "Stacktrace",
|
||||||
"start": "Start",
|
"start": "Start",
|
||||||
"start_date": "Startdato",
|
"start_date": "Startdato",
|
||||||
|
"start_date_before_end_date": "Startdato skal ligge før slutdato",
|
||||||
"state": "Stat",
|
"state": "Stat",
|
||||||
"status": "Status",
|
"status": "Status",
|
||||||
"stop_casting": "Stop støbning",
|
"stop_casting": "Stop støbning",
|
||||||
@@ -2093,5 +2128,6 @@
|
|||||||
"yes": "Ja",
|
"yes": "Ja",
|
||||||
"you_dont_have_any_shared_links": "Du har ikke nogen delte links",
|
"you_dont_have_any_shared_links": "Du har ikke nogen delte links",
|
||||||
"your_wifi_name": "Dit Wi-Fi navn",
|
"your_wifi_name": "Dit Wi-Fi navn",
|
||||||
"zoom_image": "Zoom billede"
|
"zoom_image": "Zoom billede",
|
||||||
|
"zoom_to_bounds": "Zoom til grænserne"
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-4
@@ -1360,8 +1360,8 @@
|
|||||||
"my_albums": "Meine Alben",
|
"my_albums": "Meine Alben",
|
||||||
"name": "Name",
|
"name": "Name",
|
||||||
"name_or_nickname": "Name oder Nickname",
|
"name_or_nickname": "Name oder Nickname",
|
||||||
"network_requirement_photos_upload": "Mobiles Datennetz verwenden, um Fotos zu sichern",
|
"network_requirement_photos_upload": "Mobile Daten verwenden, um Fotos zu sichern",
|
||||||
"network_requirement_videos_upload": "Mobiles Datennetz verwenden, um Videos zu sichern",
|
"network_requirement_videos_upload": "Mobile Daten verwenden, um Videos zu sichern",
|
||||||
"network_requirements": "Anforderungen ans Netzwerk",
|
"network_requirements": "Anforderungen ans Netzwerk",
|
||||||
"network_requirements_updated": "Netzwerk-Abhängigkeiten haben sich geändert, Backup-Warteschlange wird zurückgesetzt",
|
"network_requirements_updated": "Netzwerk-Abhängigkeiten haben sich geändert, Backup-Warteschlange wird zurückgesetzt",
|
||||||
"networking_settings": "Netzwerk",
|
"networking_settings": "Netzwerk",
|
||||||
@@ -1503,7 +1503,7 @@
|
|||||||
"person": "Person",
|
"person": "Person",
|
||||||
"person_age_months": "{months, plural, one {# month} other {# months}} alt",
|
"person_age_months": "{months, plural, one {# month} other {# months}} alt",
|
||||||
"person_age_year_months": "1 Jahr, {months, plural, one {# month} other {# months}} alt",
|
"person_age_year_months": "1 Jahr, {months, plural, one {# month} other {# months}} alt",
|
||||||
"person_age_years": "{years, plural, other {# years}} alt",
|
"person_age_years": "{years, plural, one {# Jahr} other {# Jahre}} alt",
|
||||||
"person_birthdate": "Geboren am {date}",
|
"person_birthdate": "Geboren am {date}",
|
||||||
"person_hidden": "{name}{hidden, select, true { (verborgen)} other {}}",
|
"person_hidden": "{name}{hidden, select, true { (verborgen)} other {}}",
|
||||||
"photo_shared_all_users": "Es sieht so aus, als hättest du deine Fotos mit allen Benutzern geteilt oder du hast keine Benutzer, mit denen du teilen kannst.",
|
"photo_shared_all_users": "Es sieht so aus, als hättest du deine Fotos mit allen Benutzern geteilt oder du hast keine Benutzer, mit denen du teilen kannst.",
|
||||||
@@ -1527,6 +1527,7 @@
|
|||||||
"port": "Port",
|
"port": "Port",
|
||||||
"preferences_settings_subtitle": "App-Einstellungen verwalten",
|
"preferences_settings_subtitle": "App-Einstellungen verwalten",
|
||||||
"preferences_settings_title": "Voreinstellungen",
|
"preferences_settings_title": "Voreinstellungen",
|
||||||
|
"preparing": "Vorbereiten",
|
||||||
"preset": "Voreinstellung",
|
"preset": "Voreinstellung",
|
||||||
"preview": "Vorschau",
|
"preview": "Vorschau",
|
||||||
"previous": "Vorherige",
|
"previous": "Vorherige",
|
||||||
@@ -1569,7 +1570,7 @@
|
|||||||
"purchase_license_subtitle": "Kaufe Immich, um die fortlaufende Entwicklung zu unterstützen",
|
"purchase_license_subtitle": "Kaufe Immich, um die fortlaufende Entwicklung zu unterstützen",
|
||||||
"purchase_lifetime_description": "Lebenslange Gültigkeit",
|
"purchase_lifetime_description": "Lebenslange Gültigkeit",
|
||||||
"purchase_option_title": "KAUFOPTIONEN",
|
"purchase_option_title": "KAUFOPTIONEN",
|
||||||
"purchase_panel_info_1": "Die Entwicklung von Immich erfordert viel Zeit und Mühe, und wir haben Vollzeit-Entwickler, die daran arbeiten es möglichst perfekt zu machen. Unser Ziel ist es, dass Open-Source-Software und moralische Geschäftsmethoden zu einer nachhaltigen Einkommensquelle für Entwickler werden und ein datenschutzfreundliches Ökosystem mit echten Alternativen zu ausbeuterischen Cloud-Diensten geschaffen wird.",
|
"purchase_panel_info_1": "Die Entwicklung von Immich erfordert viel Zeit und Mühe und wir haben Vollzeit-Entwickler, die daran arbeiten Immich möglichst perfekt zu machen. Unser Ziel ist es, Open-Source-Software und ethische Geschäftspraktiken zu einer verlässlichen Einkommensquelle für Entwickler zu machen und ein datenschutzfreundliches Ökosystem mit echten Alternativen zu ausbeuterischen Cloud-Diensten zu schaffen.",
|
||||||
"purchase_panel_info_2": "Weil wir uns dagegen entschieden haben, eine Bezahlschranke einzusetzen, wird dieser Kauf keine zusätzlichen Funktionen in Immich freischalten. Wir verlassen uns auf Nutzende wie dich, um die Entwicklung von Immich zu unterstützen.",
|
"purchase_panel_info_2": "Weil wir uns dagegen entschieden haben, eine Bezahlschranke einzusetzen, wird dieser Kauf keine zusätzlichen Funktionen in Immich freischalten. Wir verlassen uns auf Nutzende wie dich, um die Entwicklung von Immich zu unterstützen.",
|
||||||
"purchase_panel_title": "Das Projekt unterstützen",
|
"purchase_panel_title": "Das Projekt unterstützen",
|
||||||
"purchase_per_server": "Pro Server",
|
"purchase_per_server": "Pro Server",
|
||||||
@@ -1592,6 +1593,7 @@
|
|||||||
"read_changelog": "Changelog lesen",
|
"read_changelog": "Changelog lesen",
|
||||||
"readonly_mode_disabled": "Schreibgeschützter Modus deaktiviert",
|
"readonly_mode_disabled": "Schreibgeschützter Modus deaktiviert",
|
||||||
"readonly_mode_enabled": "Schreibgeschützter Modus aktiviert",
|
"readonly_mode_enabled": "Schreibgeschützter Modus aktiviert",
|
||||||
|
"ready_for_upload": "Bereit zum Hochladen",
|
||||||
"reassign": "Neu zuweisen",
|
"reassign": "Neu zuweisen",
|
||||||
"reassigned_assets_to_existing_person": "{count, plural, one {# Datei wurde} other {# Dateien wurden}} {name, select, null {einer vorhandenen Person} other {{name}}} zugewiesen",
|
"reassigned_assets_to_existing_person": "{count, plural, one {# Datei wurde} other {# Dateien wurden}} {name, select, null {einer vorhandenen Person} other {{name}}} zugewiesen",
|
||||||
"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",
|
||||||
|
|||||||
@@ -123,6 +123,13 @@
|
|||||||
"logging_enable_description": "Ενεργοποίηση καταγραφής συμβάντων",
|
"logging_enable_description": "Ενεργοποίηση καταγραφής συμβάντων",
|
||||||
"logging_level_description": "Το επίπεδο καταγραφής συμβάντων που θα εφαρμοστεί, όταν αυτή είναι ενεργοποιημένη.",
|
"logging_level_description": "Το επίπεδο καταγραφής συμβάντων που θα εφαρμοστεί, όταν αυτή είναι ενεργοποιημένη.",
|
||||||
"logging_settings": "Καταγραφή Συμβάντων",
|
"logging_settings": "Καταγραφή Συμβάντων",
|
||||||
|
"machine_learning_availability_checks": "Έλεγχοι διαθεσιμότητας",
|
||||||
|
"machine_learning_availability_checks_description": "Αυτόματος ανίχνευση και προτίμηση διαθέσιμων διακομιστών μηχανικής μάθησης",
|
||||||
|
"machine_learning_availability_checks_enabled": "Ενεργοποίηση ελέγχων διαθεσιμότητας",
|
||||||
|
"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": "Εντοπισμός Διπλότυπων",
|
||||||
|
|||||||
+9
-9
@@ -123,13 +123,13 @@
|
|||||||
"logging_enable_description": "Habilitar registro",
|
"logging_enable_description": "Habilitar registro",
|
||||||
"logging_level_description": "Indica el nivel de registro a utilizar cuando está habilitado.",
|
"logging_level_description": "Indica el nivel de registro a utilizar cuando está habilitado.",
|
||||||
"logging_settings": "Registro",
|
"logging_settings": "Registro",
|
||||||
"machine_learning_availability_checks": "Verificaciones de disponibilidad",
|
"machine_learning_availability_checks": "Comprobaciones de disponibilidad",
|
||||||
"machine_learning_availability_checks_description": "Automáticamente detectar y preferir servidores de machine learning disponibles",
|
"machine_learning_availability_checks_description": "Automáticamente detectar y preferir servidores de machine learning disponibles",
|
||||||
"machine_learning_availability_checks_enabled": "Habilitar verificaciones de disponibilidad",
|
"machine_learning_availability_checks_enabled": "Habilitar comprobaciones de disponibilidad",
|
||||||
"machine_learning_availability_checks_interval": "Intervalo de verificación",
|
"machine_learning_availability_checks_interval": "Intervalo de comprobación",
|
||||||
"machine_learning_availability_checks_interval_description": "Intervalo en milisegundos entre las verificaciones de disponibilidad",
|
"machine_learning_availability_checks_interval_description": "Intervalo en milisegundos entre las comprobaciones de disponibilidad",
|
||||||
"machine_learning_availability_checks_timeout": "Tiempo de espera de solicitud",
|
"machine_learning_availability_checks_timeout": "Tiempo de espera de solicitud",
|
||||||
"machine_learning_availability_checks_timeout_description": "Tiempo de espera en milisegundos para verificaciones de disponibilidad",
|
"machine_learning_availability_checks_timeout_description": "Tiempo de espera en milisegundos para comprobaciones de disponibilidad",
|
||||||
"machine_learning_clip_model": "Modelo CLIP (Contrastive Language-Image Pre-Training)",
|
"machine_learning_clip_model": "Modelo CLIP (Contrastive Language-Image Pre-Training)",
|
||||||
"machine_learning_clip_model_description": "El nombre de un modelo CLIP listado <link>aquí</link>. Tendrás que relanzar el trabajo 'Búsqueda Inteligente' para todos los elementos al cambiar de modelo.",
|
"machine_learning_clip_model_description": "El nombre de un modelo CLIP listado <link>aquí</link>. Tendrás que relanzar el trabajo 'Búsqueda Inteligente' para todos los elementos al cambiar de modelo.",
|
||||||
"machine_learning_duplicate_detection": "Detección de duplicados",
|
"machine_learning_duplicate_detection": "Detección de duplicados",
|
||||||
@@ -698,7 +698,7 @@
|
|||||||
"comments_and_likes": "Comentarios y me gusta",
|
"comments_and_likes": "Comentarios y me gusta",
|
||||||
"comments_are_disabled": "Los comentarios están deshabilitados",
|
"comments_are_disabled": "Los comentarios están deshabilitados",
|
||||||
"common_create_new_album": "Crear nuevo álbum",
|
"common_create_new_album": "Crear nuevo álbum",
|
||||||
"common_server_error": "Por favor, verifica tu conexión de red, asegúrate de que el servidor esté accesible y las versiones de la aplicación y del servidor sean compatibles.",
|
"common_server_error": "Por favor, comprueba tu conexión de red, asegúrate de que el servidor esté accesible y las versiones de la aplicación y del servidor sean compatibles.",
|
||||||
"completed": "Completado",
|
"completed": "Completado",
|
||||||
"confirm": "Confirmar",
|
"confirm": "Confirmar",
|
||||||
"confirm_admin_password": "Confirmar contraseña del administrador",
|
"confirm_admin_password": "Confirmar contraseña del administrador",
|
||||||
@@ -812,7 +812,7 @@
|
|||||||
"deletes_missing_assets": "Elimina archivos que faltan en el disco duro",
|
"deletes_missing_assets": "Elimina archivos que faltan en el disco duro",
|
||||||
"description": "Descripción",
|
"description": "Descripción",
|
||||||
"description_input_hint_text": "Agregar descripción...",
|
"description_input_hint_text": "Agregar descripción...",
|
||||||
"description_input_submit_error": "Error al actualizar la descripción, verifica el registro para obtener más detalles",
|
"description_input_submit_error": "Error al actualizar la descripción, comprueba el registro para obtener más detalles",
|
||||||
"deselect_all": "Deseleccionar Todo",
|
"deselect_all": "Deseleccionar Todo",
|
||||||
"details": "Detalles",
|
"details": "Detalles",
|
||||||
"direction": "Dirección",
|
"direction": "Dirección",
|
||||||
@@ -1255,7 +1255,7 @@
|
|||||||
"logged_out_device": "Dispositivo desconectado",
|
"logged_out_device": "Dispositivo desconectado",
|
||||||
"login": "Inicio de sesión",
|
"login": "Inicio de sesión",
|
||||||
"login_disabled": "El inicio de sesión ha sido desactivado",
|
"login_disabled": "El inicio de sesión ha sido desactivado",
|
||||||
"login_form_api_exception": "Excepción producida por API. Por favor, verifica el URL del servidor e inténtalo de nuevo.",
|
"login_form_api_exception": "Excepción producida por API. Por favor, comprueba el URL del servidor e inténtalo de nuevo.",
|
||||||
"login_form_back_button_text": "Atrás",
|
"login_form_back_button_text": "Atrás",
|
||||||
"login_form_email_hint": "tucorreo@correo.com",
|
"login_form_email_hint": "tucorreo@correo.com",
|
||||||
"login_form_endpoint_hint": "http://tu-ip-de-servidor:puerto",
|
"login_form_endpoint_hint": "http://tu-ip-de-servidor:puerto",
|
||||||
@@ -1265,7 +1265,7 @@
|
|||||||
"login_form_err_invalid_url": "URL no válida",
|
"login_form_err_invalid_url": "URL no válida",
|
||||||
"login_form_err_leading_whitespace": "Espacio en blanco inicial",
|
"login_form_err_leading_whitespace": "Espacio en blanco inicial",
|
||||||
"login_form_err_trailing_whitespace": "Espacio en blanco al final",
|
"login_form_err_trailing_whitespace": "Espacio en blanco al final",
|
||||||
"login_form_failed_get_oauth_server_config": "Error al iniciar sesión con OAuth, verifica la URL del servidor",
|
"login_form_failed_get_oauth_server_config": "Error al iniciar sesión con OAuth, comprueba la URL del servidor",
|
||||||
"login_form_failed_get_oauth_server_disable": "La función de OAuth no está disponible en este servidor",
|
"login_form_failed_get_oauth_server_disable": "La función de OAuth no está disponible en este servidor",
|
||||||
"login_form_failed_login": "Error al iniciar sesión, comprueba la URL del servidor, el correo electrónico y la contraseña",
|
"login_form_failed_login": "Error al iniciar sesión, comprueba la URL del servidor, el correo electrónico y la contraseña",
|
||||||
"login_form_handshake_exception": "Hubo una excepción de handshake con el servidor. Activa la compatibilidad con certificados autofirmados en la configuración si estás utilizando un certificado autofirmado.",
|
"login_form_handshake_exception": "Hubo una excepción de handshake con el servidor. Activa la compatibilidad con certificados autofirmados en la configuración si estás utilizando un certificado autofirmado.",
|
||||||
|
|||||||
@@ -1526,6 +1526,7 @@
|
|||||||
"port": "Port",
|
"port": "Port",
|
||||||
"preferences_settings_subtitle": "Halda rakenduse eelistusi",
|
"preferences_settings_subtitle": "Halda rakenduse eelistusi",
|
||||||
"preferences_settings_title": "Eelistused",
|
"preferences_settings_title": "Eelistused",
|
||||||
|
"preparing": "Ettevalmistamine",
|
||||||
"preset": "Eelseadistus",
|
"preset": "Eelseadistus",
|
||||||
"preview": "Eelvaade",
|
"preview": "Eelvaade",
|
||||||
"previous": "Eelmine",
|
"previous": "Eelmine",
|
||||||
@@ -1590,6 +1591,7 @@
|
|||||||
"read_changelog": "Vaata muudatuste ülevaadet",
|
"read_changelog": "Vaata muudatuste ülevaadet",
|
||||||
"readonly_mode_disabled": "Kirjutuskaitserežiim välja lülitatud",
|
"readonly_mode_disabled": "Kirjutuskaitserežiim välja lülitatud",
|
||||||
"readonly_mode_enabled": "Kirjutuskaitserežiim sisse lülitatud",
|
"readonly_mode_enabled": "Kirjutuskaitserežiim sisse lülitatud",
|
||||||
|
"ready_for_upload": "Valmis üleslaadimiseks",
|
||||||
"reassign": "Määra uuesti",
|
"reassign": "Määra uuesti",
|
||||||
"reassigned_assets_to_existing_person": "{count, plural, one {# üksus} other {# üksust}} seostatud {name, select, null {olemasoleva isikuga} other {isikuga {name}}}",
|
"reassigned_assets_to_existing_person": "{count, plural, one {# üksus} other {# üksust}} seostatud {name, select, null {olemasoleva isikuga} other {isikuga {name}}}",
|
||||||
"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",
|
||||||
|
|||||||
@@ -123,6 +123,7 @@
|
|||||||
"logging_enable_description": "Ota lokikirjaus käyttöön",
|
"logging_enable_description": "Ota lokikirjaus käyttöön",
|
||||||
"logging_level_description": "Kun käytössä, mitä lokituksen tasoa käytetään.",
|
"logging_level_description": "Kun käytössä, mitä lokituksen tasoa käytetään.",
|
||||||
"logging_settings": "Lokit",
|
"logging_settings": "Lokit",
|
||||||
|
"machine_learning_availability_checks": "Saatavyystarkastukset",
|
||||||
"machine_learning_clip_model": "CLIP-malli",
|
"machine_learning_clip_model": "CLIP-malli",
|
||||||
"machine_learning_clip_model_description": "Käytettävän CLIP-mallin nimi <link>toimivien mallien listasta</link>. Huomaa että sinun täytyy suorittaa \"Älykäs etsintä\"-työ uudelleen vaihdettuasi käytettävää mallia.",
|
"machine_learning_clip_model_description": "Käytettävän CLIP-mallin nimi <link>toimivien mallien listasta</link>. Huomaa että sinun täytyy suorittaa \"Älykäs etsintä\"-työ uudelleen vaihdettuasi käytettävää mallia.",
|
||||||
"machine_learning_duplicate_detection": "Kaksoiskappaleiden tunnistus",
|
"machine_learning_duplicate_detection": "Kaksoiskappaleiden tunnistus",
|
||||||
|
|||||||
+3
-2
@@ -1546,6 +1546,7 @@
|
|||||||
"year": "वर्ष",
|
"year": "वर्ष",
|
||||||
"yes": "हाँ",
|
"yes": "हाँ",
|
||||||
"you_dont_have_any_shared_links": "आपके पास कोई साझा लिंक नहीं है",
|
"you_dont_have_any_shared_links": "आपके पास कोई साझा लिंक नहीं है",
|
||||||
"your_wifi_name": "Your WiFi name",
|
"your_wifi_name": "आपके वाईफाई का नाम",
|
||||||
"zoom_image": "छवि ज़ूम करें"
|
"zoom_image": "छवि ज़ूम करें",
|
||||||
|
"zoom_to_bounds": "सीमा तक ज़ूम करें"
|
||||||
}
|
}
|
||||||
|
|||||||
+42
-2
@@ -123,6 +123,13 @@
|
|||||||
"logging_enable_description": "Aktifkan log",
|
"logging_enable_description": "Aktifkan log",
|
||||||
"logging_level_description": "Ketika diaktifkan, tingkat log apa yang digunakan.",
|
"logging_level_description": "Ketika diaktifkan, tingkat log apa yang digunakan.",
|
||||||
"logging_settings": "Penulisan log",
|
"logging_settings": "Penulisan log",
|
||||||
|
"machine_learning_availability_checks": "Pemeriksaan ketersediaan",
|
||||||
|
"machine_learning_availability_checks_description": "Secara otomatis mendeteksi dan memprioritaskan server machine learning yang tersedia",
|
||||||
|
"machine_learning_availability_checks_enabled": "Aktifkan pemeriksaan ketersediaan",
|
||||||
|
"machine_learning_availability_checks_interval": "Interval pemeriksaan",
|
||||||
|
"machine_learning_availability_checks_interval_description": "Interval dalam milidetik antar pemeriksaan ketersediaan",
|
||||||
|
"machine_learning_availability_checks_timeout": "Batas waktu permintaan",
|
||||||
|
"machine_learning_availability_checks_timeout_description": "Batas waktu dalam milidetik untuk pemeriksaan ketersediaan",
|
||||||
"machine_learning_clip_model": "Model CLIP",
|
"machine_learning_clip_model": "Model CLIP",
|
||||||
"machine_learning_clip_model_description": "Nama model CLIP yang didaftarkan <link>di sini</link>. Anda harus menjalankan ulang tugas 'Pencarian Otomatis' untuk semua gambar ketika mengganti model.",
|
"machine_learning_clip_model_description": "Nama model CLIP yang didaftarkan <link>di sini</link>. Anda harus menjalankan ulang tugas 'Pencarian Otomatis' untuk semua gambar ketika mengganti model.",
|
||||||
"machine_learning_duplicate_detection": "Deteksi Duplikat",
|
"machine_learning_duplicate_detection": "Deteksi Duplikat",
|
||||||
@@ -423,6 +430,7 @@
|
|||||||
"album_remove_user_confirmation": "Apakah Anda yakin ingin mengeluarkan {user}?",
|
"album_remove_user_confirmation": "Apakah Anda yakin ingin mengeluarkan {user}?",
|
||||||
"album_search_not_found": "Tidak ada album yang ditemukan sesuai pencarian Anda",
|
"album_search_not_found": "Tidak ada album yang ditemukan sesuai pencarian Anda",
|
||||||
"album_share_no_users": "Sepertinya Anda telah membagikan album ini dengan semua pengguna atau tidak memiliki pengguna siapa pun untuk dibagikan.",
|
"album_share_no_users": "Sepertinya Anda telah membagikan album ini dengan semua pengguna atau tidak memiliki pengguna siapa pun untuk dibagikan.",
|
||||||
|
"album_summary": "Ringkasan album",
|
||||||
"album_updated": "Album diperbarui",
|
"album_updated": "Album diperbarui",
|
||||||
"album_updated_setting_description": "Terima notifikasi surel ketika album terbagi memiliki aset baru",
|
"album_updated_setting_description": "Terima notifikasi surel ketika album terbagi memiliki aset baru",
|
||||||
"album_user_left": "Keluar dari {album}",
|
"album_user_left": "Keluar dari {album}",
|
||||||
@@ -494,6 +502,8 @@
|
|||||||
"asset_restored_successfully": "Aset telah berhasil dipulihkan",
|
"asset_restored_successfully": "Aset telah berhasil dipulihkan",
|
||||||
"asset_skipped": "Dilewati",
|
"asset_skipped": "Dilewati",
|
||||||
"asset_skipped_in_trash": "Dalam sampah",
|
"asset_skipped_in_trash": "Dalam sampah",
|
||||||
|
"asset_trashed": "Aset dibuang",
|
||||||
|
"asset_troubleshoot": "Troubleshoot Aset",
|
||||||
"asset_uploaded": "Sudah diunggah",
|
"asset_uploaded": "Sudah diunggah",
|
||||||
"asset_uploading": "Mengunggah…",
|
"asset_uploading": "Mengunggah…",
|
||||||
"asset_viewer_settings_subtitle": "Kelola pengaturan penampil galeri Anda",
|
"asset_viewer_settings_subtitle": "Kelola pengaturan penampil galeri Anda",
|
||||||
@@ -527,8 +537,10 @@
|
|||||||
"autoplay_slideshow": "Putar otomatis tayangan slide",
|
"autoplay_slideshow": "Putar otomatis tayangan slide",
|
||||||
"back": "Kembali",
|
"back": "Kembali",
|
||||||
"back_close_deselect": "Kembali, tutup, atau batalkan pemilihan",
|
"back_close_deselect": "Kembali, tutup, atau batalkan pemilihan",
|
||||||
|
"background_backup_running_error": "Cadangan latar belakang sedang berjalan, tidak dapat memulai cadangan manual",
|
||||||
"background_location_permission": "Izin lokasi latar belakang",
|
"background_location_permission": "Izin lokasi latar belakang",
|
||||||
"background_location_permission_content": "Untuk beralih jaringan saat berjalan di latar belakang, Immich harus selalu memiliki akses lokasi akurat agar aplikasi dapat membaca nama jaringan Wi-Fi",
|
"background_location_permission_content": "Untuk beralih jaringan saat berjalan di latar belakang, Immich harus selalu memiliki akses lokasi akurat agar aplikasi dapat membaca nama jaringan Wi-Fi",
|
||||||
|
"background_options": "Opsi Latar Belakang",
|
||||||
"backup": "Cadangkan",
|
"backup": "Cadangkan",
|
||||||
"backup_album_selection_page_albums_device": "Album di perangkat ({count})",
|
"backup_album_selection_page_albums_device": "Album di perangkat ({count})",
|
||||||
"backup_album_selection_page_albums_tap": "Sentuh untuk memilih, sentuh 2x untuk mengecualikan",
|
"backup_album_selection_page_albums_tap": "Sentuh untuk memilih, sentuh 2x untuk mengecualikan",
|
||||||
@@ -536,6 +548,7 @@
|
|||||||
"backup_album_selection_page_select_albums": "Pilih album",
|
"backup_album_selection_page_select_albums": "Pilih album",
|
||||||
"backup_album_selection_page_selection_info": "Info Pilihan",
|
"backup_album_selection_page_selection_info": "Info Pilihan",
|
||||||
"backup_album_selection_page_total_assets": "Total aset unik",
|
"backup_album_selection_page_total_assets": "Total aset unik",
|
||||||
|
"backup_albums_sync": "Sinkronisasi cadangan album",
|
||||||
"backup_all": "Semua",
|
"backup_all": "Semua",
|
||||||
"backup_background_service_backup_failed_message": "Gagal mencadangkan aset. Mencoba lagi…",
|
"backup_background_service_backup_failed_message": "Gagal mencadangkan aset. Mencoba lagi…",
|
||||||
"backup_background_service_connection_failed_message": "Koneksi ke server gagal. Mencoba ulang…",
|
"backup_background_service_connection_failed_message": "Koneksi ke server gagal. Mencoba ulang…",
|
||||||
@@ -652,6 +665,8 @@
|
|||||||
"change_pin_code": "Ubah kode PIN",
|
"change_pin_code": "Ubah kode PIN",
|
||||||
"change_your_password": "Ubah kata sandi Anda",
|
"change_your_password": "Ubah kata sandi Anda",
|
||||||
"changed_visibility_successfully": "Keterlihatan berhasil diubah",
|
"changed_visibility_successfully": "Keterlihatan berhasil diubah",
|
||||||
|
"charging": "Mengisi daya",
|
||||||
|
"charging_requirement_mobile_backup": "Cadangan latar belakang memerlukan perangkat dalam keadaan mengisi daya",
|
||||||
"check_corrupt_asset_backup": "Periksa cadangan aset yang rusak",
|
"check_corrupt_asset_backup": "Periksa cadangan aset yang rusak",
|
||||||
"check_corrupt_asset_backup_button": "Lakukan pemeriksaan",
|
"check_corrupt_asset_backup_button": "Lakukan pemeriksaan",
|
||||||
"check_corrupt_asset_backup_description": "Jalankan pemeriksaan ini hanya melalui Wi-Fi dan setelah semua aset dicadangkan. Prosedur ini mungkin memerlukan waktu beberapa menit.",
|
"check_corrupt_asset_backup_description": "Jalankan pemeriksaan ini hanya melalui Wi-Fi dan setelah semua aset dicadangkan. Prosedur ini mungkin memerlukan waktu beberapa menit.",
|
||||||
@@ -738,6 +753,7 @@
|
|||||||
"create_user": "Buat pengguna",
|
"create_user": "Buat pengguna",
|
||||||
"created": "Dibuat",
|
"created": "Dibuat",
|
||||||
"created_at": "Dibuat",
|
"created_at": "Dibuat",
|
||||||
|
"creating_linked_albums": "Membuat album tertaut...",
|
||||||
"crop": "Pangkas",
|
"crop": "Pangkas",
|
||||||
"curated_object_page_title": "Benda",
|
"curated_object_page_title": "Benda",
|
||||||
"current_device": "Perangkat saat ini",
|
"current_device": "Perangkat saat ini",
|
||||||
@@ -887,7 +903,9 @@
|
|||||||
"error": "Eror",
|
"error": "Eror",
|
||||||
"error_change_sort_album": "Gagal mengubah urutan album",
|
"error_change_sort_album": "Gagal mengubah urutan album",
|
||||||
"error_delete_face": "Terjadi kesalahan menghapus wajah dari aset",
|
"error_delete_face": "Terjadi kesalahan menghapus wajah dari aset",
|
||||||
|
"error_getting_places": "Kesalahan saat mengambil lokasi",
|
||||||
"error_loading_image": "Terjadi eror memuat gambar",
|
"error_loading_image": "Terjadi eror memuat gambar",
|
||||||
|
"error_loading_partners": "Kesalahan saat memuat partner: {error}",
|
||||||
"error_saving_image": "Kesalahan: {error}",
|
"error_saving_image": "Kesalahan: {error}",
|
||||||
"error_tag_face_bounding_box": "Galat saat memberi tag wajah – tidak dapat memperoleh koordinat kotak pembatas",
|
"error_tag_face_bounding_box": "Galat saat memberi tag wajah – tidak dapat memperoleh koordinat kotak pembatas",
|
||||||
"error_title": "Eror - Ada yang salah",
|
"error_title": "Eror - Ada yang salah",
|
||||||
@@ -1052,6 +1070,7 @@
|
|||||||
"favorites_page_no_favorites": "Tidak ada aset favorit",
|
"favorites_page_no_favorites": "Tidak ada aset favorit",
|
||||||
"feature_photo_updated": "Foto terfitur diperbarui",
|
"feature_photo_updated": "Foto terfitur diperbarui",
|
||||||
"features": "Fitur",
|
"features": "Fitur",
|
||||||
|
"features_in_development": "Fitur dalam Pengembangan",
|
||||||
"features_setting_description": "Kelola fitur aplikasi",
|
"features_setting_description": "Kelola fitur aplikasi",
|
||||||
"file_name": "Nama berkas",
|
"file_name": "Nama berkas",
|
||||||
"file_name_or_extension": "Nama berkas atau ekstensi",
|
"file_name_or_extension": "Nama berkas atau ekstensi",
|
||||||
@@ -1216,6 +1235,7 @@
|
|||||||
"local": "Lokal",
|
"local": "Lokal",
|
||||||
"local_asset_cast_failed": "Tidak dapat melakukan cast aset yang belum diunggah ke server",
|
"local_asset_cast_failed": "Tidak dapat melakukan cast aset yang belum diunggah ke server",
|
||||||
"local_assets": "Aset Lokal",
|
"local_assets": "Aset Lokal",
|
||||||
|
"local_media_summary": "Ringkasan Media Lokal",
|
||||||
"local_network": "Jaringan Lokal",
|
"local_network": "Jaringan Lokal",
|
||||||
"local_network_sheet_info": "Aplikasi akan terhubung ke server melalui URL ini saat menggunakan jaringan Wi-Fi yang ditentukan",
|
"local_network_sheet_info": "Aplikasi akan terhubung ke server melalui URL ini saat menggunakan jaringan Wi-Fi yang ditentukan",
|
||||||
"location_permission": "Izin lokasi",
|
"location_permission": "Izin lokasi",
|
||||||
@@ -1227,6 +1247,7 @@
|
|||||||
"location_picker_longitude_hint": "Masukkan bujur di sini",
|
"location_picker_longitude_hint": "Masukkan bujur di sini",
|
||||||
"lock": "Kunci",
|
"lock": "Kunci",
|
||||||
"locked_folder": "Folder Terkunci",
|
"locked_folder": "Folder Terkunci",
|
||||||
|
"log_detail_title": "Detail Log",
|
||||||
"log_out": "Log keluar",
|
"log_out": "Log keluar",
|
||||||
"log_out_all_devices": "Keluar dari Semua Perangkat",
|
"log_out_all_devices": "Keluar dari Semua Perangkat",
|
||||||
"logged_in_as": "Masuk sebagai {user}",
|
"logged_in_as": "Masuk sebagai {user}",
|
||||||
@@ -1257,6 +1278,7 @@
|
|||||||
"login_password_changed_success": "Sandi berhasil diperbarui",
|
"login_password_changed_success": "Sandi berhasil diperbarui",
|
||||||
"logout_all_device_confirmation": "Apakah Anda yakin ingin keluar dari semua perangkat?",
|
"logout_all_device_confirmation": "Apakah Anda yakin ingin keluar dari semua perangkat?",
|
||||||
"logout_this_device_confirmation": "Apakah Anda yakin ingin mengeluarkan perangkat ini?",
|
"logout_this_device_confirmation": "Apakah Anda yakin ingin mengeluarkan perangkat ini?",
|
||||||
|
"logs": "Log",
|
||||||
"longitude": "Bujur",
|
"longitude": "Bujur",
|
||||||
"look": "Tampilan",
|
"look": "Tampilan",
|
||||||
"loop_videos": "Ulangi video",
|
"loop_videos": "Ulangi video",
|
||||||
@@ -1299,6 +1321,7 @@
|
|||||||
"mark_as_read": "Tandai sebagai telah dibaca",
|
"mark_as_read": "Tandai sebagai telah dibaca",
|
||||||
"marked_all_as_read": "Semua telah ditandai sebagai telah dibaca",
|
"marked_all_as_read": "Semua telah ditandai sebagai telah dibaca",
|
||||||
"matches": "Cocokan",
|
"matches": "Cocokan",
|
||||||
|
"matching_assets": "Aset yang Cocok",
|
||||||
"media_type": "Jenis media",
|
"media_type": "Jenis media",
|
||||||
"memories": "Kenangan",
|
"memories": "Kenangan",
|
||||||
"memories_all_caught_up": "Semua telah dilihat",
|
"memories_all_caught_up": "Semua telah dilihat",
|
||||||
@@ -1339,6 +1362,7 @@
|
|||||||
"name_or_nickname": "Nama atau nama panggilan",
|
"name_or_nickname": "Nama atau nama panggilan",
|
||||||
"network_requirement_photos_upload": "Gunakan data seluler untuk cadangkan foto",
|
"network_requirement_photos_upload": "Gunakan data seluler untuk cadangkan foto",
|
||||||
"network_requirement_videos_upload": "Gunakan data seluler untuk cadangkan video",
|
"network_requirement_videos_upload": "Gunakan data seluler untuk cadangkan video",
|
||||||
|
"network_requirements": "Persyaratan Jaringan",
|
||||||
"network_requirements_updated": "Persyaratan jaringan telah berubah, antrean pencadangan diatur ulang",
|
"network_requirements_updated": "Persyaratan jaringan telah berubah, antrean pencadangan diatur ulang",
|
||||||
"networking_settings": "Jaringan",
|
"networking_settings": "Jaringan",
|
||||||
"networking_subtitle": "Kelola pengaturan Endpoint server",
|
"networking_subtitle": "Kelola pengaturan Endpoint server",
|
||||||
@@ -1349,6 +1373,7 @@
|
|||||||
"new_person": "Orang baru",
|
"new_person": "Orang baru",
|
||||||
"new_pin_code": "Kode PIN baru",
|
"new_pin_code": "Kode PIN baru",
|
||||||
"new_pin_code_subtitle": "Ini adalah akses pertama Anda ke folder terkunci. Buat kode PIN untuk mengamankan akses ke halaman ini",
|
"new_pin_code_subtitle": "Ini adalah akses pertama Anda ke folder terkunci. Buat kode PIN untuk mengamankan akses ke halaman ini",
|
||||||
|
"new_timeline": "Linimasa Baru",
|
||||||
"new_user_created": "Pengguna baru dibuat",
|
"new_user_created": "Pengguna baru dibuat",
|
||||||
"new_version_available": "VERSI BARU TERSEDIA",
|
"new_version_available": "VERSI BARU TERSEDIA",
|
||||||
"newest_first": "Terkini dahulu",
|
"newest_first": "Terkini dahulu",
|
||||||
@@ -1362,20 +1387,25 @@
|
|||||||
"no_assets_message": "KLIK UNTUK MENGUNGGAH FOTO PERTAMA ANDA",
|
"no_assets_message": "KLIK UNTUK MENGUNGGAH FOTO PERTAMA ANDA",
|
||||||
"no_assets_to_show": "Tidak ada aset",
|
"no_assets_to_show": "Tidak ada aset",
|
||||||
"no_cast_devices_found": "Tidak ada perangkat cast yang ditemukan",
|
"no_cast_devices_found": "Tidak ada perangkat cast yang ditemukan",
|
||||||
|
"no_checksum_local": "Tidak ada checksum yang tersedia - tidak dapat mengambil aset lokal",
|
||||||
|
"no_checksum_remote": "Tidak ada checksum yang tersedia - tidak dapat mengambil aset jarak jauh",
|
||||||
"no_duplicates_found": "Tidak ada duplikat yang ditemukan.",
|
"no_duplicates_found": "Tidak ada duplikat yang ditemukan.",
|
||||||
"no_exif_info_available": "Tidak ada info EXIF yang tersedia",
|
"no_exif_info_available": "Tidak ada info EXIF yang tersedia",
|
||||||
"no_explore_results_message": "Unggah lebih banyak foto untuk menjelajahi koleksi Anda.",
|
"no_explore_results_message": "Unggah lebih banyak foto untuk menjelajahi koleksi Anda.",
|
||||||
"no_favorites_message": "Tambahkan favorit untuk mencari foto dan video terbaik Anda dengan cepat",
|
"no_favorites_message": "Tambahkan favorit untuk mencari foto dan video terbaik Anda dengan cepat",
|
||||||
"no_libraries_message": "Buat pustaka eksternal untuk menampilkan foto dan video Anda",
|
"no_libraries_message": "Buat pustaka eksternal untuk menampilkan foto dan video Anda",
|
||||||
|
"no_local_assets_found": "Tidak ada aset lokal yang ditemukan dengan checksum ini",
|
||||||
"no_locked_photos_message": "Foto dan video di folder terkunci disembunyikan dan tidak akan muncul saat Anda menelusuri atau mencari di pustaka.",
|
"no_locked_photos_message": "Foto dan video di folder terkunci disembunyikan dan tidak akan muncul saat Anda menelusuri atau mencari di pustaka.",
|
||||||
"no_name": "Tidak Ada Nama",
|
"no_name": "Tidak Ada Nama",
|
||||||
"no_notifications": "Tidak ada notifikasi",
|
"no_notifications": "Tidak ada notifikasi",
|
||||||
"no_people_found": "Orang tidak ditemukan",
|
"no_people_found": "Orang tidak ditemukan",
|
||||||
"no_places": "Tidak ada tempat",
|
"no_places": "Tidak ada tempat",
|
||||||
|
"no_remote_assets_found": "Tidak ada aset jarak jauh yang ditemukan dengan checksum ini",
|
||||||
"no_results": "Tidak ada hasil",
|
"no_results": "Tidak ada hasil",
|
||||||
"no_results_description": "Coba sinonim atau kata kunci yang lebih umum",
|
"no_results_description": "Coba sinonim atau kata kunci yang lebih umum",
|
||||||
"no_shared_albums_message": "Buat sebuah album untuk membagikan foto dan video dengan orang-orang dalam jaringan Anda",
|
"no_shared_albums_message": "Buat sebuah album untuk membagikan foto dan video dengan orang-orang dalam jaringan Anda",
|
||||||
"no_uploads_in_progress": "Tidak ada unggahan yang sedang berlangsung",
|
"no_uploads_in_progress": "Tidak ada unggahan yang sedang berlangsung",
|
||||||
|
"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",
|
"note_apply_storage_label_to_previously_uploaded assets": "Catatan: Untuk menerapkan Label Penyimpanan pada aset yang sebelumnya telah diunggah, jalankan",
|
||||||
@@ -1497,6 +1527,7 @@
|
|||||||
"port": "Porta",
|
"port": "Porta",
|
||||||
"preferences_settings_subtitle": "Kelola preferensi aplikasi",
|
"preferences_settings_subtitle": "Kelola preferensi aplikasi",
|
||||||
"preferences_settings_title": "Preferensi",
|
"preferences_settings_title": "Preferensi",
|
||||||
|
"preparing": "Mempersiapkan",
|
||||||
"preset": "Prasetel",
|
"preset": "Prasetel",
|
||||||
"preview": "Pratinjau",
|
"preview": "Pratinjau",
|
||||||
"previous": "Sebelumnya",
|
"previous": "Sebelumnya",
|
||||||
@@ -1513,7 +1544,7 @@
|
|||||||
"profile_drawer_client_out_of_date_minor": "Versi app seluler ini sudah kedaluwarsa. Silakan perbarui ke versi minor terbaru.",
|
"profile_drawer_client_out_of_date_minor": "Versi app seluler ini sudah kedaluwarsa. Silakan perbarui ke versi minor terbaru.",
|
||||||
"profile_drawer_client_server_up_to_date": "Klien dan server menjalankan versi terbaru",
|
"profile_drawer_client_server_up_to_date": "Klien dan server menjalankan versi terbaru",
|
||||||
"profile_drawer_github": "GitHub",
|
"profile_drawer_github": "GitHub",
|
||||||
"profile_drawer_readonly_mode": "Mode baca-saja aktif. Ketuk dua kali ikon avatar pengguna untuk keluar.",
|
"profile_drawer_readonly_mode": "Mode baca-saja aktif. Tekan lama ikon avatar pengguna untuk keluar.",
|
||||||
"profile_drawer_server_out_of_date_major": "Versi server ini telah kedaluwarsa. Silakan perbarui ke versi major terbaru.",
|
"profile_drawer_server_out_of_date_major": "Versi server ini telah kedaluwarsa. Silakan perbarui ke versi major terbaru.",
|
||||||
"profile_drawer_server_out_of_date_minor": "Versi server ini telah kedaluwarsa. Silakan perbarui ke versi minor terbaru.",
|
"profile_drawer_server_out_of_date_minor": "Versi server ini telah kedaluwarsa. Silakan perbarui ke versi minor terbaru.",
|
||||||
"profile_image_of_user": "Foto profil dari {user}",
|
"profile_image_of_user": "Foto profil dari {user}",
|
||||||
@@ -1562,6 +1593,7 @@
|
|||||||
"read_changelog": "Baca Log Perubahan",
|
"read_changelog": "Baca Log Perubahan",
|
||||||
"readonly_mode_disabled": "Mode baca-saja dimatikan",
|
"readonly_mode_disabled": "Mode baca-saja dimatikan",
|
||||||
"readonly_mode_enabled": "Mode baca-saja diaktifkan",
|
"readonly_mode_enabled": "Mode baca-saja diaktifkan",
|
||||||
|
"ready_for_upload": "Siap untuk mengunggah",
|
||||||
"reassign": "Tetapkan ulang",
|
"reassign": "Tetapkan ulang",
|
||||||
"reassigned_assets_to_existing_person": "Menetapkan ulang {count, plural, one {# aset} other {# aset}} kepada {name, select, null {orang yang sudah ada} other {{name}}}",
|
"reassigned_assets_to_existing_person": "Menetapkan ulang {count, plural, one {# aset} other {# aset}} kepada {name, select, null {orang yang sudah ada} other {{name}}}",
|
||||||
"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",
|
||||||
@@ -1586,6 +1618,7 @@
|
|||||||
"regenerating_thumbnails": "Membuat ulang gambar kecil",
|
"regenerating_thumbnails": "Membuat ulang gambar kecil",
|
||||||
"remote": "Jarak Jauh",
|
"remote": "Jarak Jauh",
|
||||||
"remote_assets": "Aset Jarak Jauh",
|
"remote_assets": "Aset Jarak Jauh",
|
||||||
|
"remote_media_summary": "Ringkasan Media Jarak Jauh",
|
||||||
"remove": "Hapus",
|
"remove": "Hapus",
|
||||||
"remove_assets_album_confirmation": "Apakah Anda yakin ingin menghapus {count, plural, one {# aset} other {# aset}} dari album?",
|
"remove_assets_album_confirmation": "Apakah Anda yakin ingin menghapus {count, plural, one {# aset} other {# aset}} dari album?",
|
||||||
"remove_assets_shared_link_confirmation": "Apakah Anda yakin ingin menghapus {count, plural, one {# aset} other {# aset}} dari tautan terbagi ini?",
|
"remove_assets_shared_link_confirmation": "Apakah Anda yakin ingin menghapus {count, plural, one {# aset} other {# aset}} dari tautan terbagi ini?",
|
||||||
@@ -1638,6 +1671,7 @@
|
|||||||
"restore_user": "Pulihkan pengguna",
|
"restore_user": "Pulihkan pengguna",
|
||||||
"restored_asset": "Aset dipulihkan",
|
"restored_asset": "Aset dipulihkan",
|
||||||
"resume": "Lanjutkan",
|
"resume": "Lanjutkan",
|
||||||
|
"resume_paused_jobs": "Lanjutkan {count, plural, one {# pekerjaan yang dijeda} other {# pekerjaan yang dijeda}}",
|
||||||
"retry_upload": "Ulangi pengunggahan",
|
"retry_upload": "Ulangi pengunggahan",
|
||||||
"review_duplicates": "Pratinjau duplikat",
|
"review_duplicates": "Pratinjau duplikat",
|
||||||
"review_large_files": "Meninjau berkas berukuran besar",
|
"review_large_files": "Meninjau berkas berukuran besar",
|
||||||
@@ -1860,6 +1894,7 @@
|
|||||||
"show_slideshow_transition": "Tampilkan transisi salindia",
|
"show_slideshow_transition": "Tampilkan transisi salindia",
|
||||||
"show_supporter_badge": "Lencana suporter",
|
"show_supporter_badge": "Lencana suporter",
|
||||||
"show_supporter_badge_description": "Tampilkan lencana suporter",
|
"show_supporter_badge_description": "Tampilkan lencana suporter",
|
||||||
|
"show_text_search_menu": "Tampilkan menu pencarian teks",
|
||||||
"shuffle": "Acak",
|
"shuffle": "Acak",
|
||||||
"sidebar": "Bilah sisi",
|
"sidebar": "Bilah sisi",
|
||||||
"sidebar_display_description": "Menampilkan tautan ke tampilan di bilah sisi",
|
"sidebar_display_description": "Menampilkan tautan ke tampilan di bilah sisi",
|
||||||
@@ -1890,6 +1925,7 @@
|
|||||||
"stacktrace": "Jejak tumpukan",
|
"stacktrace": "Jejak tumpukan",
|
||||||
"start": "Mulai",
|
"start": "Mulai",
|
||||||
"start_date": "Tanggal mulai",
|
"start_date": "Tanggal mulai",
|
||||||
|
"start_date_before_end_date": "Tanggal mulai harus sebelum tanggal akhir",
|
||||||
"state": "Keadaan",
|
"state": "Keadaan",
|
||||||
"status": "Status",
|
"status": "Status",
|
||||||
"stop_casting": "Hentikan cast",
|
"stop_casting": "Hentikan cast",
|
||||||
@@ -1914,6 +1950,8 @@
|
|||||||
"sync_albums_manual_subtitle": "Melakukan sinkronisasi semua video dan foto yang telah diunggah ke album cadangan yang dipilih",
|
"sync_albums_manual_subtitle": "Melakukan sinkronisasi semua video dan foto yang telah diunggah ke album cadangan yang dipilih",
|
||||||
"sync_local": "Sinkronkan lokal",
|
"sync_local": "Sinkronkan lokal",
|
||||||
"sync_remote": "Sinkronkan jarak jauh",
|
"sync_remote": "Sinkronkan jarak jauh",
|
||||||
|
"sync_status": "Status Sinkronisasi",
|
||||||
|
"sync_status_subtitle": "Lihat dan atur sistem sinkronisasi",
|
||||||
"sync_upload_album_setting_subtitle": "Membuat dan mengunggah foto serta video Anda ke album yang telah dipilih pada Immich",
|
"sync_upload_album_setting_subtitle": "Membuat dan mengunggah foto serta video Anda ke album yang telah dipilih pada Immich",
|
||||||
"tag": "Label",
|
"tag": "Label",
|
||||||
"tag_assets": "Tag aset",
|
"tag_assets": "Tag aset",
|
||||||
@@ -1973,6 +2011,7 @@
|
|||||||
"trash_page_select_assets_btn": "Pilih aset",
|
"trash_page_select_assets_btn": "Pilih aset",
|
||||||
"trash_page_title": "Sampah ({count})",
|
"trash_page_title": "Sampah ({count})",
|
||||||
"trashed_items_will_be_permanently_deleted_after": "Item yang dibuang akan dihapus secara permanen setelah {days, plural, one {# hari} other {# hari}}.",
|
"trashed_items_will_be_permanently_deleted_after": "Item yang dibuang akan dihapus secara permanen setelah {days, plural, one {# hari} other {# hari}}.",
|
||||||
|
"troubleshoot": "Pemecahan Masalah",
|
||||||
"type": "Jenis",
|
"type": "Jenis",
|
||||||
"unable_to_change_pin_code": "Tidak dapat mengubah kode PIN",
|
"unable_to_change_pin_code": "Tidak dapat mengubah kode PIN",
|
||||||
"unable_to_setup_pin_code": "Tidak dapat memasang kode PIN",
|
"unable_to_setup_pin_code": "Tidak dapat memasang kode PIN",
|
||||||
@@ -2089,5 +2128,6 @@
|
|||||||
"yes": "Ya",
|
"yes": "Ya",
|
||||||
"you_dont_have_any_shared_links": "Anda tidak memiliki tautan terbagi",
|
"you_dont_have_any_shared_links": "Anda tidak memiliki tautan terbagi",
|
||||||
"your_wifi_name": "Nama Wi-Fi Anda",
|
"your_wifi_name": "Nama Wi-Fi Anda",
|
||||||
"zoom_image": "Perbesar Gambar"
|
"zoom_image": "Perbesar Gambar",
|
||||||
|
"zoom_to_bounds": "Perbesar ke batas"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -123,6 +123,13 @@
|
|||||||
"logging_enable_description": "Attiva il logging",
|
"logging_enable_description": "Attiva il logging",
|
||||||
"logging_level_description": "Quando attivato, che livello di log utilizzare.",
|
"logging_level_description": "Quando attivato, che livello di log utilizzare.",
|
||||||
"logging_settings": "Registro dei Log",
|
"logging_settings": "Registro dei Log",
|
||||||
|
"machine_learning_availability_checks": "Verifiche di disponibilità",
|
||||||
|
"machine_learning_availability_checks_description": "Rileva automaticamente e usa i server di machine learning disponibili",
|
||||||
|
"machine_learning_availability_checks_enabled": "Attiva verifiche di disponibilità",
|
||||||
|
"machine_learning_availability_checks_interval": "Intervallo di verifica",
|
||||||
|
"machine_learning_availability_checks_interval_description": "Intervallo (ms) tra le verifiche di disponibilità",
|
||||||
|
"machine_learning_availability_checks_timeout": "Timeout richiesta",
|
||||||
|
"machine_learning_availability_checks_timeout_description": "Timeout (ms) per le verifiche di disponibilità",
|
||||||
"machine_learning_clip_model": "Modello CLIP",
|
"machine_learning_clip_model": "Modello CLIP",
|
||||||
"machine_learning_clip_model_description": "Il nome del modello CLIP mostrato <link>qui</link>. Nota che devi rieseguire il processo 'Ricerca Intelligente' per tutte le immagini al cambio del modello.",
|
"machine_learning_clip_model_description": "Il nome del modello CLIP mostrato <link>qui</link>. Nota che devi rieseguire il processo 'Ricerca Intelligente' per tutte le immagini al cambio del modello.",
|
||||||
"machine_learning_duplicate_detection": "Rilevamento Duplicati",
|
"machine_learning_duplicate_detection": "Rilevamento Duplicati",
|
||||||
@@ -533,6 +540,7 @@
|
|||||||
"background_backup_running_error": "Il backup in background è attualmente in esecuzione, impossibile avviare il backup manuale",
|
"background_backup_running_error": "Il backup in background è attualmente in esecuzione, impossibile avviare il backup manuale",
|
||||||
"background_location_permission": "Permesso di localizzazione in background",
|
"background_location_permission": "Permesso di localizzazione in background",
|
||||||
"background_location_permission_content": "Per fare in modo che sia possibile cambiare rete quando è in esecuzione in background, Immich deve *sempre* avere accesso alla tua posizione precisa in modo da poter leggere il nome della rete Wi-Fi",
|
"background_location_permission_content": "Per fare in modo che sia possibile cambiare rete quando è in esecuzione in background, Immich deve *sempre* avere accesso alla tua posizione precisa in modo da poter leggere il nome della rete Wi-Fi",
|
||||||
|
"background_options": "Opzioni sfondo",
|
||||||
"backup": "Backup",
|
"backup": "Backup",
|
||||||
"backup_album_selection_page_albums_device": "Album sul dispositivo ({count})",
|
"backup_album_selection_page_albums_device": "Album sul dispositivo ({count})",
|
||||||
"backup_album_selection_page_albums_tap": "Tap per includere, doppio tap per escludere",
|
"backup_album_selection_page_albums_tap": "Tap per includere, doppio tap per escludere",
|
||||||
@@ -540,6 +548,7 @@
|
|||||||
"backup_album_selection_page_select_albums": "Seleziona gli album",
|
"backup_album_selection_page_select_albums": "Seleziona gli album",
|
||||||
"backup_album_selection_page_selection_info": "Informazioni sulla selezione",
|
"backup_album_selection_page_selection_info": "Informazioni sulla selezione",
|
||||||
"backup_album_selection_page_total_assets": "Numero totale delle risorse",
|
"backup_album_selection_page_total_assets": "Numero totale delle risorse",
|
||||||
|
"backup_albums_sync": "Sincronizzazione album di backup",
|
||||||
"backup_all": "Tutti",
|
"backup_all": "Tutti",
|
||||||
"backup_background_service_backup_failed_message": "È stato impossibile fare il backup dei contenuti. Riprovo…",
|
"backup_background_service_backup_failed_message": "È stato impossibile fare il backup dei contenuti. Riprovo…",
|
||||||
"backup_background_service_connection_failed_message": "Impossibile connettersi al server. Riprovo…",
|
"backup_background_service_connection_failed_message": "Impossibile connettersi al server. Riprovo…",
|
||||||
@@ -656,6 +665,8 @@
|
|||||||
"change_pin_code": "Cambia il codice PIN",
|
"change_pin_code": "Cambia il codice PIN",
|
||||||
"change_your_password": "Modifica la tua password",
|
"change_your_password": "Modifica la tua password",
|
||||||
"changed_visibility_successfully": "Visibilità modificata con successo",
|
"changed_visibility_successfully": "Visibilità modificata con successo",
|
||||||
|
"charging": "In carica",
|
||||||
|
"charging_requirement_mobile_backup": "Il backup in background richiede che il dispositivo sia in carica",
|
||||||
"check_corrupt_asset_backup": "Verifica la presenza di backup di asset corrotti",
|
"check_corrupt_asset_backup": "Verifica la presenza di backup di asset corrotti",
|
||||||
"check_corrupt_asset_backup_button": "Effettua controllo",
|
"check_corrupt_asset_backup_button": "Effettua controllo",
|
||||||
"check_corrupt_asset_backup_description": "Effettua questo controllo solo sotto rete Wi-Fi e quando tutti gli asset sono stati sottoposti a backup. La procedura potrebbe impiegare qualche minuto.",
|
"check_corrupt_asset_backup_description": "Effettua questo controllo solo sotto rete Wi-Fi e quando tutti gli asset sono stati sottoposti a backup. La procedura potrebbe impiegare qualche minuto.",
|
||||||
@@ -1351,6 +1362,7 @@
|
|||||||
"name_or_nickname": "Nome o soprannome",
|
"name_or_nickname": "Nome o soprannome",
|
||||||
"network_requirement_photos_upload": "Utilizza la connessione dati per il backup delle foto",
|
"network_requirement_photos_upload": "Utilizza la connessione dati per il backup delle foto",
|
||||||
"network_requirement_videos_upload": "Utilizza la connessione dati per il backup dei video",
|
"network_requirement_videos_upload": "Utilizza la connessione dati per il backup dei video",
|
||||||
|
"network_requirements": "Requisiti di rete",
|
||||||
"network_requirements_updated": "Requisiti di rete modificati, coda di backup reimpostata",
|
"network_requirements_updated": "Requisiti di rete modificati, coda di backup reimpostata",
|
||||||
"networking_settings": "Rete",
|
"networking_settings": "Rete",
|
||||||
"networking_subtitle": "Gestisci le impostazioni riguardanti gli endpoint del server",
|
"networking_subtitle": "Gestisci le impostazioni riguardanti gli endpoint del server",
|
||||||
@@ -1515,6 +1527,7 @@
|
|||||||
"port": "Porta",
|
"port": "Porta",
|
||||||
"preferences_settings_subtitle": "Gestisci le preferenze dell'app",
|
"preferences_settings_subtitle": "Gestisci le preferenze dell'app",
|
||||||
"preferences_settings_title": "Preferenze",
|
"preferences_settings_title": "Preferenze",
|
||||||
|
"preparing": "Preparando",
|
||||||
"preset": "Preimpostazione",
|
"preset": "Preimpostazione",
|
||||||
"preview": "Anteprima",
|
"preview": "Anteprima",
|
||||||
"previous": "Precedente",
|
"previous": "Precedente",
|
||||||
@@ -1580,6 +1593,7 @@
|
|||||||
"read_changelog": "Leggi Riepilogo Modifiche",
|
"read_changelog": "Leggi Riepilogo Modifiche",
|
||||||
"readonly_mode_disabled": "Modalità di sola lettura disabilitata",
|
"readonly_mode_disabled": "Modalità di sola lettura disabilitata",
|
||||||
"readonly_mode_enabled": "Modalità di sola lettura abilitata",
|
"readonly_mode_enabled": "Modalità di sola lettura abilitata",
|
||||||
|
"ready_for_upload": "Pronto per il caricamento",
|
||||||
"reassign": "Riassegna",
|
"reassign": "Riassegna",
|
||||||
"reassigned_assets_to_existing_person": "{count, plural, one {Riassegnato # asset} other {Riassegnati # assets}} {name, select, null {ad una persona esistente} other {a {name}}}",
|
"reassigned_assets_to_existing_person": "{count, plural, one {Riassegnato # asset} other {Riassegnati # assets}} {name, select, null {ad una persona esistente} other {a {name}}}",
|
||||||
"reassigned_assets_to_new_person": "{count, plural, one {Riassegnato # asset} other {Riassegnati # assets}} ad una nuova persona",
|
"reassigned_assets_to_new_person": "{count, plural, one {Riassegnato # asset} other {Riassegnati # assets}} ad una nuova persona",
|
||||||
@@ -1911,6 +1925,7 @@
|
|||||||
"stacktrace": "Traccia dell'errore",
|
"stacktrace": "Traccia dell'errore",
|
||||||
"start": "Avvia",
|
"start": "Avvia",
|
||||||
"start_date": "Data di inizio",
|
"start_date": "Data di inizio",
|
||||||
|
"start_date_before_end_date": "La data di inizio deve essere precedente alla data di fine",
|
||||||
"state": "Provincia",
|
"state": "Provincia",
|
||||||
"status": "Stato",
|
"status": "Stato",
|
||||||
"stop_casting": "Interrompi trasmissione",
|
"stop_casting": "Interrompi trasmissione",
|
||||||
|
|||||||
+29
-1
@@ -123,6 +123,8 @@
|
|||||||
"logging_enable_description": "ログの有効化",
|
"logging_enable_description": "ログの有効化",
|
||||||
"logging_level_description": "有効な場合に使用されるログ レベル。",
|
"logging_level_description": "有効な場合に使用されるログ レベル。",
|
||||||
"logging_settings": "ログ",
|
"logging_settings": "ログ",
|
||||||
|
"machine_learning_availability_checks": "可用性の確認",
|
||||||
|
"machine_learning_availability_checks_description": "利用可能な機械学習のサーバーを自動で検知し優先的に使用します",
|
||||||
"machine_learning_availability_checks_enabled": "可用性チェックを有効にする",
|
"machine_learning_availability_checks_enabled": "可用性チェックを有効にする",
|
||||||
"machine_learning_availability_checks_interval": "チェックの間隔",
|
"machine_learning_availability_checks_interval": "チェックの間隔",
|
||||||
"machine_learning_availability_checks_interval_description": "可用性チェックの間隔(ミリ秒単位)",
|
"machine_learning_availability_checks_interval_description": "可用性チェックの間隔(ミリ秒単位)",
|
||||||
@@ -428,6 +430,7 @@
|
|||||||
"album_remove_user_confirmation": "本当に{user}を削除しますか?",
|
"album_remove_user_confirmation": "本当に{user}を削除しますか?",
|
||||||
"album_search_not_found": "検索に一致するアルバムがありません",
|
"album_search_not_found": "検索に一致するアルバムがありません",
|
||||||
"album_share_no_users": "このアルバムを全てのユーザーと共有したか、共有するユーザーがいないようです。",
|
"album_share_no_users": "このアルバムを全てのユーザーと共有したか、共有するユーザーがいないようです。",
|
||||||
|
"album_summary": "アルバムのまとめ",
|
||||||
"album_updated": "アルバム更新",
|
"album_updated": "アルバム更新",
|
||||||
"album_updated_setting_description": "共有アルバムに新しいアセットが追加されたとき通知を受け取る",
|
"album_updated_setting_description": "共有アルバムに新しいアセットが追加されたとき通知を受け取る",
|
||||||
"album_user_left": "{album} を去りました",
|
"album_user_left": "{album} を去りました",
|
||||||
@@ -499,6 +502,8 @@
|
|||||||
"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": "ギャラリービューアーに関する設定",
|
||||||
@@ -532,8 +537,10 @@
|
|||||||
"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": "正常にWi-Fiの名前(SSID)を獲得するにはアプリが常に詳細な位置情報にアクセスできる必要があります",
|
"background_location_permission_content": "正常にWi-Fiの名前(SSID)を獲得するにはアプリが常に詳細な位置情報にアクセスできる必要があります",
|
||||||
|
"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": "タップで選択、ダブルタップで除外",
|
||||||
@@ -541,6 +548,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_all": "すべて",
|
"backup_all": "すべて",
|
||||||
"backup_background_service_backup_failed_message": "アップロードに失敗しました。リトライ中…",
|
"backup_background_service_backup_failed_message": "アップロードに失敗しました。リトライ中…",
|
||||||
"backup_background_service_connection_failed_message": "サーバーに接続できません。リトライ中…",
|
"backup_background_service_connection_failed_message": "サーバーに接続できません。リトライ中…",
|
||||||
@@ -657,6 +665,8 @@
|
|||||||
"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に接続時のみチェックを行なってください。作業が完了するには数分かかる場合があります",
|
||||||
@@ -743,6 +753,7 @@
|
|||||||
"create_user": "ユーザーを作成",
|
"create_user": "ユーザーを作成",
|
||||||
"created": "作成",
|
"created": "作成",
|
||||||
"created_at": "作成:",
|
"created_at": "作成:",
|
||||||
|
"creating_linked_albums": "リンクされたアルバムを作成中・・・",
|
||||||
"crop": "クロップ",
|
"crop": "クロップ",
|
||||||
"curated_object_page_title": "被写体",
|
"curated_object_page_title": "被写体",
|
||||||
"current_device": "現在のデバイス",
|
"current_device": "現在のデバイス",
|
||||||
@@ -892,7 +903,9 @@
|
|||||||
"error": "エラー",
|
"error": "エラー",
|
||||||
"error_change_sort_album": "アルバムの表示順の変更に失敗しました",
|
"error_change_sort_album": "アルバムの表示順の変更に失敗しました",
|
||||||
"error_delete_face": "アセットから顔の削除ができませんでした",
|
"error_delete_face": "アセットから顔の削除ができませんでした",
|
||||||
|
"error_getting_places": "場所の取得に失敗しました",
|
||||||
"error_loading_image": "画像の読み込みエラー",
|
"error_loading_image": "画像の読み込みエラー",
|
||||||
|
"error_loading_partners": "パートナーの読み込みに失敗しました: {error}",
|
||||||
"error_saving_image": "エラー: {error}",
|
"error_saving_image": "エラー: {error}",
|
||||||
"error_tag_face_bounding_box": "顔の登録に失敗しました - 顔を囲む四角形の座標取得に失敗",
|
"error_tag_face_bounding_box": "顔の登録に失敗しました - 顔を囲む四角形の座標取得に失敗",
|
||||||
"error_title": "エラー - 問題が発生しました",
|
"error_title": "エラー - 問題が発生しました",
|
||||||
@@ -1057,6 +1070,7 @@
|
|||||||
"favorites_page_no_favorites": "お気に入り登録された項目がありません",
|
"favorites_page_no_favorites": "お気に入り登録された項目がありません",
|
||||||
"feature_photo_updated": "人物画像が更新されました",
|
"feature_photo_updated": "人物画像が更新されました",
|
||||||
"features": "機能",
|
"features": "機能",
|
||||||
|
"features_in_development": "開発中の機能",
|
||||||
"features_setting_description": "アプリの機能を管理する",
|
"features_setting_description": "アプリの機能を管理する",
|
||||||
"file_name": "ファイル名",
|
"file_name": "ファイル名",
|
||||||
"file_name_or_extension": "ファイル名または拡張子",
|
"file_name_or_extension": "ファイル名または拡張子",
|
||||||
@@ -1221,6 +1235,7 @@
|
|||||||
"local": "ローカル",
|
"local": "ローカル",
|
||||||
"local_asset_cast_failed": "サーバーにアップロードされていない項目はキャストできません",
|
"local_asset_cast_failed": "サーバーにアップロードされていない項目はキャストできません",
|
||||||
"local_assets": "ローカルの項目",
|
"local_assets": "ローカルの項目",
|
||||||
|
"local_media_summary": "ローカルメディアのまとめ",
|
||||||
"local_network": "ローカルネットワーク",
|
"local_network": "ローカルネットワーク",
|
||||||
"local_network_sheet_info": "アプリは指定されたWi-Fiに繋がっている時サーバーへの接続を下記のURLで行います",
|
"local_network_sheet_info": "アプリは指定されたWi-Fiに繋がっている時サーバーへの接続を下記のURLで行います",
|
||||||
"location_permission": "位置情報権限",
|
"location_permission": "位置情報権限",
|
||||||
@@ -1232,6 +1247,7 @@
|
|||||||
"location_picker_longitude_hint": "経度を入力",
|
"location_picker_longitude_hint": "経度を入力",
|
||||||
"lock": "ロック",
|
"lock": "ロック",
|
||||||
"locked_folder": "鍵付きフォルダー",
|
"locked_folder": "鍵付きフォルダー",
|
||||||
|
"log_detail_title": "ログの詳細",
|
||||||
"log_out": "ログアウト",
|
"log_out": "ログアウト",
|
||||||
"log_out_all_devices": "全てのデバイスからログアウト",
|
"log_out_all_devices": "全てのデバイスからログアウト",
|
||||||
"logged_in_as": "{user}としてログイン中",
|
"logged_in_as": "{user}としてログイン中",
|
||||||
@@ -1262,6 +1278,7 @@
|
|||||||
"login_password_changed_success": "パスワードの変更に成功",
|
"login_password_changed_success": "パスワードの変更に成功",
|
||||||
"logout_all_device_confirmation": "本当に全てのデバイスからログアウトしますか?",
|
"logout_all_device_confirmation": "本当に全てのデバイスからログアウトしますか?",
|
||||||
"logout_this_device_confirmation": "本当にこのデバイスからログアウトしますか?",
|
"logout_this_device_confirmation": "本当にこのデバイスからログアウトしますか?",
|
||||||
|
"logs": "ログ",
|
||||||
"longitude": "経度",
|
"longitude": "経度",
|
||||||
"look": "見た目",
|
"look": "見た目",
|
||||||
"loop_videos": "動画をループ",
|
"loop_videos": "動画をループ",
|
||||||
@@ -1304,6 +1321,7 @@
|
|||||||
"mark_as_read": "既読にする",
|
"mark_as_read": "既読にする",
|
||||||
"marked_all_as_read": "すべて既読にしました",
|
"marked_all_as_read": "すべて既読にしました",
|
||||||
"matches": "マッチ",
|
"matches": "マッチ",
|
||||||
|
"matching_assets": "一致する項目",
|
||||||
"media_type": "メディアタイプ",
|
"media_type": "メディアタイプ",
|
||||||
"memories": "メモリー",
|
"memories": "メモリー",
|
||||||
"memories_all_caught_up": "これで全部です",
|
"memories_all_caught_up": "これで全部です",
|
||||||
@@ -1344,6 +1362,7 @@
|
|||||||
"name_or_nickname": "名前またはニックネーム",
|
"name_or_nickname": "名前またはニックネーム",
|
||||||
"network_requirement_photos_upload": "モバイル通信を使用して写真のバックアップを行う",
|
"network_requirement_photos_upload": "モバイル通信を使用して写真のバックアップを行う",
|
||||||
"network_requirement_videos_upload": "モバイル通信を使用して動画のバックアップを行う",
|
"network_requirement_videos_upload": "モバイル通信を使用して動画のバックアップを行う",
|
||||||
|
"network_requirements": "ネットワークの要件",
|
||||||
"network_requirements_updated": "ネットワークの条件が変更されたため、バックアップの順番待ちをリセットします",
|
"network_requirements_updated": "ネットワークの条件が変更されたため、バックアップの順番待ちをリセットします",
|
||||||
"networking_settings": "ネットワーク",
|
"networking_settings": "ネットワーク",
|
||||||
"networking_subtitle": "サーバーエンドポイントに関する設定",
|
"networking_subtitle": "サーバーエンドポイントに関する設定",
|
||||||
@@ -1354,6 +1373,7 @@
|
|||||||
"new_person": "新しい人物",
|
"new_person": "新しい人物",
|
||||||
"new_pin_code": "新しいPINコード",
|
"new_pin_code": "新しいPINコード",
|
||||||
"new_pin_code_subtitle": "鍵付きフォルダーを利用するのが初めてのようです。PINコードを作成してください",
|
"new_pin_code_subtitle": "鍵付きフォルダーを利用するのが初めてのようです。PINコードを作成してください",
|
||||||
|
"new_timeline": "新たなタイムライン",
|
||||||
"new_user_created": "新しいユーザーが作成されました",
|
"new_user_created": "新しいユーザーが作成されました",
|
||||||
"new_version_available": "新しいバージョンが利用可能",
|
"new_version_available": "新しいバージョンが利用可能",
|
||||||
"newest_first": "最新順",
|
"newest_first": "最新順",
|
||||||
@@ -1367,20 +1387,25 @@
|
|||||||
"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_remote": "チェックサムが見つかりません - サーバー上の項目を取得できないようです",
|
||||||
"no_duplicates_found": "重複は見つかりませんでした。",
|
"no_duplicates_found": "重複は見つかりませんでした。",
|
||||||
"no_exif_info_available": "exif情報が利用できません",
|
"no_exif_info_available": "exif情報が利用できません",
|
||||||
"no_explore_results_message": "コレクションを探索するにはさらに写真をアップロードしてください。",
|
"no_explore_results_message": "コレクションを探索するにはさらに写真をアップロードしてください。",
|
||||||
"no_favorites_message": "お気に入り登録すると好きな写真や動画をすぐに見つけられます",
|
"no_favorites_message": "お気に入り登録すると好きな写真や動画をすぐに見つけられます",
|
||||||
"no_libraries_message": "あなたの写真や動画を表示するための外部ライブラリを作成しましょう",
|
"no_libraries_message": "あなたの写真や動画を表示するための外部ライブラリを作成しましょう",
|
||||||
|
"no_local_assets_found": "このチェックサムの項目はデバイス上に存在しません",
|
||||||
"no_locked_photos_message": "鍵付きフォルダー内の写真や動画は通常のライブラリに表示されなくなります。",
|
"no_locked_photos_message": "鍵付きフォルダー内の写真や動画は通常のライブラリに表示されなくなります。",
|
||||||
"no_name": "名前なし",
|
"no_name": "名前なし",
|
||||||
"no_notifications": "通知なし",
|
"no_notifications": "通知なし",
|
||||||
"no_people_found": "一致する人物が見つかりません",
|
"no_people_found": "一致する人物が見つかりません",
|
||||||
"no_places": "場所なし",
|
"no_places": "場所なし",
|
||||||
|
"no_remote_assets_found": "このチェックサムの項目はサーバー上に存在しません",
|
||||||
"no_results": "結果がありません",
|
"no_results": "結果がありません",
|
||||||
"no_results_description": "同義語やより一般的なキーワードを試してください",
|
"no_results_description": "同義語やより一般的なキーワードを試してください",
|
||||||
"no_shared_albums_message": "アルバムを作成して写真や動画を共有しましょう",
|
"no_shared_albums_message": "アルバムを作成して写真や動画を共有しましょう",
|
||||||
"no_uploads_in_progress": "アップロードは行われていません",
|
"no_uploads_in_progress": "アップロードは行われていません",
|
||||||
|
"not_available": "適用なし",
|
||||||
"not_in_any_album": "どのアルバムにも入っていない",
|
"not_in_any_album": "どのアルバムにも入っていない",
|
||||||
"not_selected": "選択なし",
|
"not_selected": "選択なし",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "注意: 以前にアップロードしたアセットにストレージラベルを適用するには以下を実行してください",
|
"note_apply_storage_label_to_previously_uploaded assets": "注意: 以前にアップロードしたアセットにストレージラベルを適用するには以下を実行してください",
|
||||||
@@ -1593,6 +1618,7 @@
|
|||||||
"regenerating_thumbnails": "サムネイルを再生成中",
|
"regenerating_thumbnails": "サムネイルを再生成中",
|
||||||
"remote": "リモート",
|
"remote": "リモート",
|
||||||
"remote_assets": "リモートの項目",
|
"remote_assets": "リモートの項目",
|
||||||
|
"remote_media_summary": "サーバー上のメディアまとめ",
|
||||||
"remove": "削除",
|
"remove": "削除",
|
||||||
"remove_assets_album_confirmation": "本当に{count, plural, one {#個} other {#個}}のアセットをアルバムから削除しますか?",
|
"remove_assets_album_confirmation": "本当に{count, plural, one {#個} other {#個}}のアセットをアルバムから削除しますか?",
|
||||||
"remove_assets_shared_link_confirmation": "本当にこの共有リンクから{count, plural, one {#個} other {#個}}のアセットを削除しますか?",
|
"remove_assets_shared_link_confirmation": "本当にこの共有リンクから{count, plural, one {#個} other {#個}}のアセットを削除しますか?",
|
||||||
@@ -1868,6 +1894,7 @@
|
|||||||
"show_slideshow_transition": "スライドショーのトランジションを表示",
|
"show_slideshow_transition": "スライドショーのトランジションを表示",
|
||||||
"show_supporter_badge": "サポーターバッジ",
|
"show_supporter_badge": "サポーターバッジ",
|
||||||
"show_supporter_badge_description": "サポーターバッジを表示",
|
"show_supporter_badge_description": "サポーターバッジを表示",
|
||||||
|
"show_text_search_menu": "テキスト検索メニューを表示",
|
||||||
"shuffle": "ランダム",
|
"shuffle": "ランダム",
|
||||||
"sidebar": "サイドバー",
|
"sidebar": "サイドバー",
|
||||||
"sidebar_display_description": "サイドバーにビューへのリンクを表示",
|
"sidebar_display_description": "サイドバーにビューへのリンクを表示",
|
||||||
@@ -2101,5 +2128,6 @@
|
|||||||
"yes": "はい",
|
"yes": "はい",
|
||||||
"you_dont_have_any_shared_links": "共有リンクはありません",
|
"you_dont_have_any_shared_links": "共有リンクはありません",
|
||||||
"your_wifi_name": "Wi-Fiの名前(SSID)",
|
"your_wifi_name": "Wi-Fiの名前(SSID)",
|
||||||
"zoom_image": "画像を拡大"
|
"zoom_image": "画像を拡大",
|
||||||
|
"zoom_to_bounds": "画面端までズーム"
|
||||||
}
|
}
|
||||||
|
|||||||
+14
-7
@@ -123,6 +123,13 @@
|
|||||||
"logging_enable_description": "Įjungti žurnalo vedimą",
|
"logging_enable_description": "Įjungti žurnalo vedimą",
|
||||||
"logging_level_description": "Įjungus, kokį žurnalo vedimo lygį naudot.",
|
"logging_level_description": "Įjungus, kokį žurnalo vedimo lygį naudot.",
|
||||||
"logging_settings": "Žurnalo vedimas",
|
"logging_settings": "Žurnalo vedimas",
|
||||||
|
"machine_learning_availability_checks": "Prieinamumo patikrinimai",
|
||||||
|
"machine_learning_availability_checks_description": "Automatiškai aptikti ir teikti pirmenybę prieinamiems mašininio mokymosi serveriams",
|
||||||
|
"machine_learning_availability_checks_enabled": "Įjungti prieinamumo patikrinimus",
|
||||||
|
"machine_learning_availability_checks_interval": "Patikros intervalas",
|
||||||
|
"machine_learning_availability_checks_interval_description": "Intervalas milisekundėmis tarp prieinamumo patikrinimų",
|
||||||
|
"machine_learning_availability_checks_timeout": "Užklausos laiko limitas",
|
||||||
|
"machine_learning_availability_checks_timeout_description": "Laiko limitas milisekundėmis prieinamumo patikrinimams",
|
||||||
"machine_learning_clip_model": "CLIP modelis",
|
"machine_learning_clip_model": "CLIP modelis",
|
||||||
"machine_learning_clip_model_description": "Pavadinimas CLIP modelio įvardintio <link>here</link>. Dėmesio, keičiant modelį jūs privalote iš naujo paleisti 'Išmaniosios Paieškos' užduotį visiems vaizdams.",
|
"machine_learning_clip_model_description": "Pavadinimas CLIP modelio įvardintio <link>here</link>. Dėmesio, keičiant modelį jūs privalote iš naujo paleisti 'Išmaniosios Paieškos' užduotį visiems vaizdams.",
|
||||||
"machine_learning_duplicate_detection": "Dublikatų aptikimas",
|
"machine_learning_duplicate_detection": "Dublikatų aptikimas",
|
||||||
@@ -264,8 +271,8 @@
|
|||||||
"storage_template_date_time_description": "Elemento sukūrimo laiko žymė yra naudojama laiko informacijai",
|
"storage_template_date_time_description": "Elemento sukūrimo laiko žymė yra naudojama laiko informacijai",
|
||||||
"storage_template_date_time_sample": "Pavyzdinis laikas {date}",
|
"storage_template_date_time_sample": "Pavyzdinis laikas {date}",
|
||||||
"storage_template_enable_description": "Aktyvuoti saugyklos šabloną",
|
"storage_template_enable_description": "Aktyvuoti saugyklos šabloną",
|
||||||
"storage_template_hash_verification_enabled": "Aktyvuoti Hash tikrinimą",
|
"storage_template_hash_verification_enabled": "Aktyvuoti failo parašo tikrinimą",
|
||||||
"storage_template_hash_verification_enabled_description": "Aktyvuojamas Hash tikrinimas, neišjungti nebent gerai suprantate galimas pasekmes",
|
"storage_template_hash_verification_enabled_description": "Aktyvuojamas failo parašo tikrinimas, neišjungti nebent gerai suprantate galimas pasekmes",
|
||||||
"storage_template_migration": "Saugyklos tvarkymas pagal šabloną",
|
"storage_template_migration": "Saugyklos tvarkymas pagal šabloną",
|
||||||
"storage_template_migration_description": "Taikyti dabartinį <link>{template}</link> anksčiau įkeltiems duomenims",
|
"storage_template_migration_description": "Taikyti dabartinį <link>{template}</link> anksčiau įkeltiems duomenims",
|
||||||
"storage_template_migration_info": "Saugyklos tvarkyklė konvertuos visus plėtinius mažosiomis raidėmis. Šablonas bus taikomas tik naujiems duomenims. Taikyti šabloną retroaktyviai anksčiau įkeltiems duomenims, paleiskite šią <link>{job}</link>.",
|
"storage_template_migration_info": "Saugyklos tvarkyklė konvertuos visus plėtinius mažosiomis raidėmis. Šablonas bus taikomas tik naujiems duomenims. Taikyti šabloną retroaktyviai anksčiau įkeltiems duomenims, paleiskite šią <link>{job}</link>.",
|
||||||
@@ -481,7 +488,7 @@
|
|||||||
"asset_description_updated": "Elemento aprašymas buvo atnaujintas",
|
"asset_description_updated": "Elemento aprašymas buvo atnaujintas",
|
||||||
"asset_filename_is_offline": "Elementas {filename} nepasiekiamas",
|
"asset_filename_is_offline": "Elementas {filename} nepasiekiamas",
|
||||||
"asset_has_unassigned_faces": "Elementas turi nepriskirtų veidų",
|
"asset_has_unassigned_faces": "Elementas turi nepriskirtų veidų",
|
||||||
"asset_hashing": "Maišoma…",
|
"asset_hashing": "Kuriami bylų parašai…",
|
||||||
"asset_list_group_by_sub_title": "Grupuoti pagal",
|
"asset_list_group_by_sub_title": "Grupuoti pagal",
|
||||||
"asset_list_layout_settings_dynamic_layout_title": "Dinaminis išdėstymas",
|
"asset_list_layout_settings_dynamic_layout_title": "Dinaminis išdėstymas",
|
||||||
"asset_list_layout_settings_group_automatically": "Automatiškai",
|
"asset_list_layout_settings_group_automatically": "Automatiškai",
|
||||||
@@ -689,7 +696,7 @@
|
|||||||
"comments_are_disabled": "Komentarai yra išjungti",
|
"comments_are_disabled": "Komentarai yra išjungti",
|
||||||
"common_create_new_album": "Sukurti naują albumą",
|
"common_create_new_album": "Sukurti naują albumą",
|
||||||
"common_server_error": "Prašome patikrinti tinklo prisijungimą ir įsitikinti, kad serveris pasiekiamas ir programos/serverio versija sutampa.",
|
"common_server_error": "Prašome patikrinti tinklo prisijungimą ir įsitikinti, kad serveris pasiekiamas ir programos/serverio versija sutampa.",
|
||||||
"completed": "Atlikta",
|
"completed": "Užbaigta",
|
||||||
"confirm": "Patvirtinti",
|
"confirm": "Patvirtinti",
|
||||||
"confirm_admin_password": "Patvirtinti administratoriaus slaptažodį",
|
"confirm_admin_password": "Patvirtinti administratoriaus slaptažodį",
|
||||||
"confirm_delete_face": "Ar tikrai norite ištrinti {name} veidą iš elementų?",
|
"confirm_delete_face": "Ar tikrai norite ištrinti {name} veidą iš elementų?",
|
||||||
@@ -1100,9 +1107,9 @@
|
|||||||
"haptic_feedback_switch": "Įjungti haptinį grįžtamąjį ryšį",
|
"haptic_feedback_switch": "Įjungti haptinį grįžtamąjį ryšį",
|
||||||
"haptic_feedback_title": "Haptinis grįžtamasis ryšys",
|
"haptic_feedback_title": "Haptinis grįžtamasis ryšys",
|
||||||
"has_quota": "Turi kvotą",
|
"has_quota": "Turi kvotą",
|
||||||
"hash_asset": "Maišymo elementas",
|
"hash_asset": "Kurti bylos parašą elementui",
|
||||||
"hashed_assets": "Sumaišyti elementai",
|
"hashed_assets": "Elementai su bylų parašais",
|
||||||
"hashing": "Maišoma",
|
"hashing": "Bylų parašo kūrimas",
|
||||||
"header_settings_add_header_tip": "Pridėti antraštę",
|
"header_settings_add_header_tip": "Pridėti antraštę",
|
||||||
"header_settings_field_validator_msg": "Reikšmė negali būti tuščia",
|
"header_settings_field_validator_msg": "Reikšmė negali būti tuščia",
|
||||||
"header_settings_header_name_input": "Antraštės pavadinimas",
|
"header_settings_header_name_input": "Antraštės pavadinimas",
|
||||||
|
|||||||
@@ -1059,6 +1059,7 @@
|
|||||||
"rating_description": "Rādīt EXIF vērtējumu informācijas panelī",
|
"rating_description": "Rādīt EXIF vērtējumu informācijas panelī",
|
||||||
"reaction_options": "Reakcijas iespējas",
|
"reaction_options": "Reakcijas iespējas",
|
||||||
"read_changelog": "Lasīt izmaiņu sarakstu",
|
"read_changelog": "Lasīt izmaiņu sarakstu",
|
||||||
|
"ready_for_upload": "Gatavs augšupielādei",
|
||||||
"recently_added_page_title": "Nesen Pievienotais",
|
"recently_added_page_title": "Nesen Pievienotais",
|
||||||
"refresh": "Atsvaidzināt",
|
"refresh": "Atsvaidzināt",
|
||||||
"refresh_faces": "Atsvaidzināt sejas",
|
"refresh_faces": "Atsvaidzināt sejas",
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
"add_a_location": "Tambah lokasi",
|
"add_a_location": "Tambah lokasi",
|
||||||
"add_a_name": "Tambah nama",
|
"add_a_name": "Tambah nama",
|
||||||
"add_a_title": "Tambah tajuk",
|
"add_a_title": "Tambah tajuk",
|
||||||
|
"add_birthday": "Tambah hari jadi",
|
||||||
"add_endpoint": "Tambah titik akhir",
|
"add_endpoint": "Tambah titik akhir",
|
||||||
"add_exclusion_pattern": "Tambahkan corak pengecualian",
|
"add_exclusion_pattern": "Tambahkan corak pengecualian",
|
||||||
"add_import_path": "Tambahkan laluan import",
|
"add_import_path": "Tambahkan laluan import",
|
||||||
@@ -27,6 +28,8 @@
|
|||||||
"add_to_album": "Tambah ke album",
|
"add_to_album": "Tambah ke album",
|
||||||
"add_to_album_bottom_sheet_added": "Dimasukkan ke {album}",
|
"add_to_album_bottom_sheet_added": "Dimasukkan ke {album}",
|
||||||
"add_to_album_bottom_sheet_already_exists": "Sudah ada di {album}",
|
"add_to_album_bottom_sheet_already_exists": "Sudah ada di {album}",
|
||||||
|
"add_to_albums": "Tambah pada album",
|
||||||
|
"add_to_albums_count": "Tambah pada album ({count})",
|
||||||
"add_to_shared_album": "Tambah ke album yang dikongsi",
|
"add_to_shared_album": "Tambah ke album yang dikongsi",
|
||||||
"add_url": "Tambah URL",
|
"add_url": "Tambah URL",
|
||||||
"added_to_archive": "Tambah ke arkib",
|
"added_to_archive": "Tambah ke arkib",
|
||||||
@@ -44,6 +47,9 @@
|
|||||||
"backup_database": "Buat Salinan Pangkalan Data",
|
"backup_database": "Buat Salinan Pangkalan Data",
|
||||||
"backup_database_enable_description": "Dayakan salinan pangkalan data",
|
"backup_database_enable_description": "Dayakan salinan pangkalan data",
|
||||||
"backup_keep_last_amount": "Jumlah salinan pangkalan data sebelumnya untuk disimpan",
|
"backup_keep_last_amount": "Jumlah salinan pangkalan data sebelumnya untuk disimpan",
|
||||||
|
"backup_onboarding_1_description": "salinan luar tapak di awan atau di lokasi fizikal lain",
|
||||||
|
"backup_onboarding_2_description": "salinan tempatan pada peranti yang berbeza. Ini termasuk fail utama dan sandaran fail tersebut secara setempat.",
|
||||||
|
"backup_onboarding_3_description": "jumlah salinan data anda, termasuk fail asal. Ini termasuk 1 salinan luar tapak dan 2 salinan tempatan.",
|
||||||
"backup_settings": "Tetapan Salinan Pangkalan Data",
|
"backup_settings": "Tetapan Salinan Pangkalan Data",
|
||||||
"backup_settings_description": "Urus tetapan salinan pangkalan data.",
|
"backup_settings_description": "Urus tetapan salinan pangkalan data.",
|
||||||
"cleared_jobs": "Kerja telah dibersihkan untuk: {job}",
|
"cleared_jobs": "Kerja telah dibersihkan untuk: {job}",
|
||||||
|
|||||||
+3
-1
@@ -122,7 +122,7 @@
|
|||||||
"library_watching_settings_description": "Se automatisk etter endrede filer",
|
"library_watching_settings_description": "Se automatisk etter endrede filer",
|
||||||
"logging_enable_description": "Aktiver logging",
|
"logging_enable_description": "Aktiver logging",
|
||||||
"logging_level_description": "Hvis aktivert, hvilket loggnivå som skal brukes.",
|
"logging_level_description": "Hvis aktivert, hvilket loggnivå som skal brukes.",
|
||||||
"logging_settings": "Logger",
|
"logging_settings": "Loggføring",
|
||||||
"machine_learning_availability_checks": "Tilgjengelighetssjekk",
|
"machine_learning_availability_checks": "Tilgjengelighetssjekk",
|
||||||
"machine_learning_availability_checks_description": "Automatisk oppdag og velg tilgjengelige maskinlæring-servere",
|
"machine_learning_availability_checks_description": "Automatisk oppdag og velg tilgjengelige maskinlæring-servere",
|
||||||
"machine_learning_availability_checks_enabled": "Aktiver tilgjengelighetssjekk",
|
"machine_learning_availability_checks_enabled": "Aktiver tilgjengelighetssjekk",
|
||||||
@@ -1527,6 +1527,7 @@
|
|||||||
"port": "Port",
|
"port": "Port",
|
||||||
"preferences_settings_subtitle": "Administrer appens preferanser",
|
"preferences_settings_subtitle": "Administrer appens preferanser",
|
||||||
"preferences_settings_title": "Innstillinger",
|
"preferences_settings_title": "Innstillinger",
|
||||||
|
"preparing": "Forbereder",
|
||||||
"preset": "Forhåndsinstilling",
|
"preset": "Forhåndsinstilling",
|
||||||
"preview": "Forhåndsvis",
|
"preview": "Forhåndsvis",
|
||||||
"previous": "Forrige",
|
"previous": "Forrige",
|
||||||
@@ -1592,6 +1593,7 @@
|
|||||||
"read_changelog": "Les endringslogg",
|
"read_changelog": "Les endringslogg",
|
||||||
"readonly_mode_disabled": "Skrivebeskyttet modus deaktivert",
|
"readonly_mode_disabled": "Skrivebeskyttet modus deaktivert",
|
||||||
"readonly_mode_enabled": "Skrivebeskyttet modus aktivert",
|
"readonly_mode_enabled": "Skrivebeskyttet modus aktivert",
|
||||||
|
"ready_for_upload": "Klar for opplasting",
|
||||||
"reassign": "Tilordne på nytt",
|
"reassign": "Tilordne på nytt",
|
||||||
"reassigned_assets_to_existing_person": "Flyttet {count, plural, one {# objekt} other {# objekter}} to {name, select, null {en eksisterende person} other {{name}}}",
|
"reassigned_assets_to_existing_person": "Flyttet {count, plural, one {# objekt} other {# objekter}} to {name, select, null {en eksisterende person} other {{name}}}",
|
||||||
"reassigned_assets_to_new_person": "Flyttet {count, plural, one {# objekt} other {# objekter}} til en ny person",
|
"reassigned_assets_to_new_person": "Flyttet {count, plural, one {# objekt} other {# objekter}} til en ny person",
|
||||||
|
|||||||
+19
-3
@@ -123,10 +123,13 @@
|
|||||||
"logging_enable_description": "Logboek inschakelen",
|
"logging_enable_description": "Logboek inschakelen",
|
||||||
"logging_level_description": "Indien ingeschakeld, welk logniveau er wordt gebruikt.",
|
"logging_level_description": "Indien ingeschakeld, welk logniveau er wordt gebruikt.",
|
||||||
"logging_settings": "Logging",
|
"logging_settings": "Logging",
|
||||||
|
"machine_learning_availability_checks": "Beschikbaarheid",
|
||||||
"machine_learning_availability_checks_description": "Automatisch detecteren en selecteren van beschikbare machine learning servers",
|
"machine_learning_availability_checks_description": "Automatisch detecteren en selecteren van beschikbare machine learning servers",
|
||||||
"machine_learning_availability_checks_enabled": "Activeer beschikbaarheid controles",
|
"machine_learning_availability_checks_enabled": "Activeer beschikbaarheid controles",
|
||||||
"machine_learning_availability_checks_interval": "Controleinterval",
|
"machine_learning_availability_checks_interval": "Controleinterval",
|
||||||
"machine_learning_availability_checks_interval_description": "Interval in milliseconden tussen beschikbaarheid checks",
|
"machine_learning_availability_checks_interval_description": "Interval in milliseconden tussen beschikbaarheid checks",
|
||||||
|
"machine_learning_availability_checks_timeout": "Verzoek time-out",
|
||||||
|
"machine_learning_availability_checks_timeout_description": "Time-out in milliseconden voor beschikbaarheidschecks",
|
||||||
"machine_learning_clip_model": "CLIP model",
|
"machine_learning_clip_model": "CLIP model",
|
||||||
"machine_learning_clip_model_description": "De naam van een CLIP-model dat <link>hier</link> is vermeld. Let op: je moet de 'Slim Zoeken -taak opnieuw uitvoeren voor alle afbeeldingen wanneer je een model wijzigt.",
|
"machine_learning_clip_model_description": "De naam van een CLIP-model dat <link>hier</link> is vermeld. Let op: je moet de 'Slim Zoeken -taak opnieuw uitvoeren voor alle afbeeldingen wanneer je een model wijzigt.",
|
||||||
"machine_learning_duplicate_detection": "Duplicaat detectie",
|
"machine_learning_duplicate_detection": "Duplicaat detectie",
|
||||||
@@ -750,7 +753,7 @@
|
|||||||
"create_user": "Gebruiker aanmaken",
|
"create_user": "Gebruiker aanmaken",
|
||||||
"created": "Aangemaakt",
|
"created": "Aangemaakt",
|
||||||
"created_at": "Aangemaakt",
|
"created_at": "Aangemaakt",
|
||||||
"creating_linked_albums": "Gekoppelde albums worden aangemaakt",
|
"creating_linked_albums": "Gekoppelde albums worden aangemaakt...",
|
||||||
"crop": "Bijsnijden",
|
"crop": "Bijsnijden",
|
||||||
"curated_object_page_title": "Dingen",
|
"curated_object_page_title": "Dingen",
|
||||||
"current_device": "Huidig apparaat",
|
"current_device": "Huidig apparaat",
|
||||||
@@ -846,7 +849,7 @@
|
|||||||
"download_sucess_android": "Het bestand is gedownload naar DCIM/Immich",
|
"download_sucess_android": "Het bestand is gedownload naar DCIM/Immich",
|
||||||
"download_waiting_to_retry": "Wachten om opnieuw te proberen",
|
"download_waiting_to_retry": "Wachten om opnieuw te proberen",
|
||||||
"downloading": "Downloaden",
|
"downloading": "Downloaden",
|
||||||
"downloading_asset_filename": "Downloading asset {filename}",
|
"downloading_asset_filename": "Downloaden asset {filename}",
|
||||||
"downloading_media": "Media aan het downloaden",
|
"downloading_media": "Media aan het downloaden",
|
||||||
"drop_files_to_upload": "Zet bestanden ergens neer om ze te uploaden",
|
"drop_files_to_upload": "Zet bestanden ergens neer om ze te uploaden",
|
||||||
"duplicates": "Duplicaten",
|
"duplicates": "Duplicaten",
|
||||||
@@ -900,7 +903,9 @@
|
|||||||
"error": "Fout",
|
"error": "Fout",
|
||||||
"error_change_sort_album": "Sorteervolgorde van album wijzigen mislukt",
|
"error_change_sort_album": "Sorteervolgorde van album wijzigen mislukt",
|
||||||
"error_delete_face": "Fout bij verwijderen van gezicht uit het item",
|
"error_delete_face": "Fout bij verwijderen van gezicht uit het item",
|
||||||
|
"error_getting_places": "Fout bij ophalen plaatsen",
|
||||||
"error_loading_image": "Fout bij laden afbeelding",
|
"error_loading_image": "Fout bij laden afbeelding",
|
||||||
|
"error_loading_partners": "Fout bij ophalen partners: {error}",
|
||||||
"error_saving_image": "Fout: {error}",
|
"error_saving_image": "Fout: {error}",
|
||||||
"error_tag_face_bounding_box": "Fout bij taggen van gezicht - kan coördinaten van omvattend kader niet ophalen",
|
"error_tag_face_bounding_box": "Fout bij taggen van gezicht - kan coördinaten van omvattend kader niet ophalen",
|
||||||
"error_title": "Fout - Er is iets misgegaan",
|
"error_title": "Fout - Er is iets misgegaan",
|
||||||
@@ -1382,20 +1387,25 @@
|
|||||||
"no_assets_message": "KLIK HIER OM JE EERSTE FOTO TE UPLOADEN",
|
"no_assets_message": "KLIK HIER OM JE EERSTE FOTO TE UPLOADEN",
|
||||||
"no_assets_to_show": "Geen foto's om te laten zien",
|
"no_assets_to_show": "Geen foto's om te laten zien",
|
||||||
"no_cast_devices_found": "Geen cast-apparaten gevonden",
|
"no_cast_devices_found": "Geen cast-apparaten gevonden",
|
||||||
|
"no_checksum_local": "Geen checksum beschikbaar - kan lokale assets niet ophalen",
|
||||||
|
"no_checksum_remote": "Geen checksum beschikbaar - kan online assets niet ophalen",
|
||||||
"no_duplicates_found": "Er zijn geen duplicaten gevonden.",
|
"no_duplicates_found": "Er zijn geen duplicaten gevonden.",
|
||||||
"no_exif_info_available": "Geen exif info beschikbaar",
|
"no_exif_info_available": "Geen exif info beschikbaar",
|
||||||
"no_explore_results_message": "Upload meer foto's om je verzameling te verkennen.",
|
"no_explore_results_message": "Upload meer foto's om je verzameling te verkennen.",
|
||||||
"no_favorites_message": "Voeg favorieten toe om snel je beste foto's en video's te vinden",
|
"no_favorites_message": "Voeg favorieten toe om snel je beste foto's en video's te vinden",
|
||||||
"no_libraries_message": "Maak een externe bibliotheek om je foto's en video's te bekijken",
|
"no_libraries_message": "Maak een externe bibliotheek om je foto's en video's te bekijken",
|
||||||
|
"no_local_assets_found": "Geen lokale assets gevonden met deze checksum",
|
||||||
"no_locked_photos_message": "Foto’s en video’s in de vergrendelde map zijn verborgen en worden niet weergegeven wanneer je door je bibliotheek bladert of zoekt.",
|
"no_locked_photos_message": "Foto’s en video’s in de vergrendelde map zijn verborgen en worden niet weergegeven wanneer je door je bibliotheek bladert of zoekt.",
|
||||||
"no_name": "Geen naam",
|
"no_name": "Geen naam",
|
||||||
"no_notifications": "Geen meldingen",
|
"no_notifications": "Geen meldingen",
|
||||||
"no_people_found": "Geen mensen gevonden",
|
"no_people_found": "Geen mensen gevonden",
|
||||||
"no_places": "Geen plaatsen",
|
"no_places": "Geen plaatsen",
|
||||||
|
"no_remote_assets_found": "Geen online assets gevonden met deze checksum",
|
||||||
"no_results": "Geen resultaten",
|
"no_results": "Geen resultaten",
|
||||||
"no_results_description": "Probeer een synoniem of een algemener zoekwoord",
|
"no_results_description": "Probeer een synoniem of een algemener zoekwoord",
|
||||||
"no_shared_albums_message": "Maak een album om foto's en video's te delen met mensen in je netwerk",
|
"no_shared_albums_message": "Maak een album om foto's en video's te delen met mensen in je netwerk",
|
||||||
"no_uploads_in_progress": "Geen uploads bezig",
|
"no_uploads_in_progress": "Geen uploads bezig",
|
||||||
|
"not_available": "N.B.",
|
||||||
"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",
|
"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",
|
||||||
@@ -1517,6 +1527,7 @@
|
|||||||
"port": "Poort",
|
"port": "Poort",
|
||||||
"preferences_settings_subtitle": "Beheer de voorkeuren van de app",
|
"preferences_settings_subtitle": "Beheer de voorkeuren van de app",
|
||||||
"preferences_settings_title": "Voorkeuren",
|
"preferences_settings_title": "Voorkeuren",
|
||||||
|
"preparing": "Voorbereiden",
|
||||||
"preset": "Voorinstelling",
|
"preset": "Voorinstelling",
|
||||||
"preview": "Voorbeeld",
|
"preview": "Voorbeeld",
|
||||||
"previous": "Vorige",
|
"previous": "Vorige",
|
||||||
@@ -1582,6 +1593,7 @@
|
|||||||
"read_changelog": "Lees wijzigingen",
|
"read_changelog": "Lees wijzigingen",
|
||||||
"readonly_mode_disabled": "Alleen-lezen modus uitgeschakeld",
|
"readonly_mode_disabled": "Alleen-lezen modus uitgeschakeld",
|
||||||
"readonly_mode_enabled": "Alleen-lezen modus ingeschakeld",
|
"readonly_mode_enabled": "Alleen-lezen modus ingeschakeld",
|
||||||
|
"ready_for_upload": "Klaar voor upload",
|
||||||
"reassign": "Opnieuw toewijzen",
|
"reassign": "Opnieuw toewijzen",
|
||||||
"reassigned_assets_to_existing_person": "{count, plural, one {# item} other {# items}} opnieuw toegewezen aan {name, select, null {een bestaand persoon} other {{name}}}",
|
"reassigned_assets_to_existing_person": "{count, plural, one {# item} other {# items}} opnieuw toegewezen aan {name, select, null {een bestaand persoon} other {{name}}}",
|
||||||
"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",
|
||||||
@@ -1606,6 +1618,7 @@
|
|||||||
"regenerating_thumbnails": "Thumbnails opnieuw aan het genereren",
|
"regenerating_thumbnails": "Thumbnails opnieuw aan het genereren",
|
||||||
"remote": "Externe",
|
"remote": "Externe",
|
||||||
"remote_assets": "Externe Items",
|
"remote_assets": "Externe Items",
|
||||||
|
"remote_media_summary": "Online media samenvatting",
|
||||||
"remove": "Verwijderen",
|
"remove": "Verwijderen",
|
||||||
"remove_assets_album_confirmation": "Weet je zeker dat je {count, plural, one {# item} other {# items}} uit het album wilt verwijderen?",
|
"remove_assets_album_confirmation": "Weet je zeker dat je {count, plural, one {# item} other {# items}} uit het album wilt verwijderen?",
|
||||||
"remove_assets_shared_link_confirmation": "Weet je zeker dat je {count, plural, one {# item} other {# items}} uit deze gedeelde link wilt verwijderen?",
|
"remove_assets_shared_link_confirmation": "Weet je zeker dat je {count, plural, one {# item} other {# items}} uit deze gedeelde link wilt verwijderen?",
|
||||||
@@ -1881,6 +1894,7 @@
|
|||||||
"show_slideshow_transition": "Diavoorstellingsovergang tonen",
|
"show_slideshow_transition": "Diavoorstellingsovergang tonen",
|
||||||
"show_supporter_badge": "Supportersbadge",
|
"show_supporter_badge": "Supportersbadge",
|
||||||
"show_supporter_badge_description": "Toon een supportersbadge",
|
"show_supporter_badge_description": "Toon een supportersbadge",
|
||||||
|
"show_text_search_menu": "Laat tekst zoek menu zien",
|
||||||
"shuffle": "Willekeurig",
|
"shuffle": "Willekeurig",
|
||||||
"sidebar": "Zijbalk",
|
"sidebar": "Zijbalk",
|
||||||
"sidebar_display_description": "Toon een link naar deze pagina in de zijbalk",
|
"sidebar_display_description": "Toon een link naar deze pagina in de zijbalk",
|
||||||
@@ -1911,6 +1925,7 @@
|
|||||||
"stacktrace": "Stacktrace",
|
"stacktrace": "Stacktrace",
|
||||||
"start": "Start",
|
"start": "Start",
|
||||||
"start_date": "Startdatum",
|
"start_date": "Startdatum",
|
||||||
|
"start_date_before_end_date": "Startdatum moet voor einddatum liggen",
|
||||||
"state": "Staat",
|
"state": "Staat",
|
||||||
"status": "Status",
|
"status": "Status",
|
||||||
"stop_casting": "Stop met casten",
|
"stop_casting": "Stop met casten",
|
||||||
@@ -2113,5 +2128,6 @@
|
|||||||
"yes": "Ja",
|
"yes": "Ja",
|
||||||
"you_dont_have_any_shared_links": "Je hebt geen gedeelde links",
|
"you_dont_have_any_shared_links": "Je hebt geen gedeelde links",
|
||||||
"your_wifi_name": "Je WiFi-naam",
|
"your_wifi_name": "Je WiFi-naam",
|
||||||
"zoom_image": "Inzoomen"
|
"zoom_image": "Inzoomen",
|
||||||
|
"zoom_to_bounds": "Zoom naar randen"
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-5
@@ -1527,6 +1527,7 @@
|
|||||||
"port": "Port",
|
"port": "Port",
|
||||||
"preferences_settings_subtitle": "Zarządzaj preferencjami aplikacji",
|
"preferences_settings_subtitle": "Zarządzaj preferencjami aplikacji",
|
||||||
"preferences_settings_title": "Ustawienia",
|
"preferences_settings_title": "Ustawienia",
|
||||||
|
"preparing": "Przygotowywanie",
|
||||||
"preset": "Ustawienie",
|
"preset": "Ustawienie",
|
||||||
"preview": "Podgląd",
|
"preview": "Podgląd",
|
||||||
"previous": "Poprzedni",
|
"previous": "Poprzedni",
|
||||||
@@ -1592,6 +1593,7 @@
|
|||||||
"read_changelog": "Zobacz Zmiany",
|
"read_changelog": "Zobacz Zmiany",
|
||||||
"readonly_mode_disabled": "Tryb tylko do odczytu wyłączony",
|
"readonly_mode_disabled": "Tryb tylko do odczytu wyłączony",
|
||||||
"readonly_mode_enabled": "Tryb tylko do odczytu włączony",
|
"readonly_mode_enabled": "Tryb tylko do odczytu włączony",
|
||||||
|
"ready_for_upload": "Gotowe do przesłania",
|
||||||
"reassign": "Przypisz ponownie",
|
"reassign": "Przypisz ponownie",
|
||||||
"reassigned_assets_to_existing_person": "Przypisano ponownie {count, plural, one {# zasób} other {# zasobów}} do {name, select, null {istniejącej osoby} other {{name}}}",
|
"reassigned_assets_to_existing_person": "Przypisano ponownie {count, plural, one {# zasób} other {# zasobów}} do {name, select, null {istniejącej osoby} other {{name}}}",
|
||||||
"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",
|
||||||
@@ -1630,8 +1632,8 @@
|
|||||||
"remove_from_locked_folder": "Usuń z folderu zablokowanego",
|
"remove_from_locked_folder": "Usuń z folderu zablokowanego",
|
||||||
"remove_from_locked_folder_confirmation": "Czy na pewno chcesz przenieść te zdjęcia i filmy z folderu zablokowanego? Będą one widoczne w bibliotece.",
|
"remove_from_locked_folder_confirmation": "Czy na pewno chcesz przenieść te zdjęcia i filmy z folderu zablokowanego? Będą one widoczne w bibliotece.",
|
||||||
"remove_from_shared_link": "Usuń z udostępnionego linku",
|
"remove_from_shared_link": "Usuń z udostępnionego linku",
|
||||||
"remove_memory": "Usuń pamięć",
|
"remove_memory": "Usuń wspomnienie",
|
||||||
"remove_photo_from_memory": "Usuń zdjęcia z tej pamięci",
|
"remove_photo_from_memory": "Usuń zdjęcia z tych wspomnień",
|
||||||
"remove_tag": "Usuń tag",
|
"remove_tag": "Usuń tag",
|
||||||
"remove_url": "Usuń URL",
|
"remove_url": "Usuń URL",
|
||||||
"remove_user": "Usuń użytkownika",
|
"remove_user": "Usuń użytkownika",
|
||||||
@@ -1639,15 +1641,15 @@
|
|||||||
"removed_from_archive": "Usunięto z archiwum",
|
"removed_from_archive": "Usunięto z archiwum",
|
||||||
"removed_from_favorites": "Usunięto z ulubionych",
|
"removed_from_favorites": "Usunięto z ulubionych",
|
||||||
"removed_from_favorites_count": "{count, plural, other {Usunięto #}} z ulubionych",
|
"removed_from_favorites_count": "{count, plural, other {Usunięto #}} z ulubionych",
|
||||||
"removed_memory": "Pamięć została usunięta",
|
"removed_memory": "Wspomnienie usunięte",
|
||||||
"removed_photo_from_memory": "Usunięto zdjęcie z pamięci",
|
"removed_photo_from_memory": "Usunięto zdjęcie ze wspomnień",
|
||||||
"removed_tagged_assets": "Usunięto etykietę z {count, plural, one {# zasobu} other {# zasobów}}",
|
"removed_tagged_assets": "Usunięto etykietę z {count, plural, one {# zasobu} other {# zasobów}}",
|
||||||
"rename": "Zmień nazwę",
|
"rename": "Zmień nazwę",
|
||||||
"repair": "Napraw",
|
"repair": "Napraw",
|
||||||
"repair_no_results_message": "Tutaj pojawią się nieśledzone i brakujące pliki",
|
"repair_no_results_message": "Tutaj pojawią się nieśledzone i brakujące pliki",
|
||||||
"replace_with_upload": "Prześlij nową wersję",
|
"replace_with_upload": "Prześlij nową wersję",
|
||||||
"repository": "Repozytorium",
|
"repository": "Repozytorium",
|
||||||
"require_password": "Wymagaj hasło",
|
"require_password": "Wymagaj hasła",
|
||||||
"require_user_to_change_password_on_first_login": "Zmuś użytkownika do zmiany hasła podczas następnego logowania",
|
"require_user_to_change_password_on_first_login": "Zmuś użytkownika do zmiany hasła podczas następnego logowania",
|
||||||
"rescan": "Ponowne skanowanie",
|
"rescan": "Ponowne skanowanie",
|
||||||
"reset": "Reset",
|
"reset": "Reset",
|
||||||
|
|||||||
@@ -123,6 +123,12 @@
|
|||||||
"logging_enable_description": "Ativar registo",
|
"logging_enable_description": "Ativar registo",
|
||||||
"logging_level_description": "Quando ativado, qual o nível de log a usar.",
|
"logging_level_description": "Quando ativado, qual o nível de log a usar.",
|
||||||
"logging_settings": "Registo",
|
"logging_settings": "Registo",
|
||||||
|
"machine_learning_availability_checks": "Verificação de disponibilidade",
|
||||||
|
"machine_learning_availability_checks_description": "Detectar automaticamente e dar preferência aos servidores de aprendizagem automática disponíveis",
|
||||||
|
"machine_learning_availability_checks_enabled": "Activar confirmações de disponibilidade",
|
||||||
|
"machine_learning_availability_checks_interval": "Confirmação de intervalo",
|
||||||
|
"machine_learning_availability_checks_interval_description": "Intervalo, em milisegundos, entre confirmações de disponibilidade",
|
||||||
|
"machine_learning_availability_checks_timeout": "Tempo limite para requisição",
|
||||||
"machine_learning_clip_model": "Modelo CLIP",
|
"machine_learning_clip_model": "Modelo CLIP",
|
||||||
"machine_learning_clip_model_description": "O nome do modelo CLIP definido <link>aqui</link>. Tome nota de que é necessário voltar a executar a tarefa de \"Pesquisa Inteligente\" para todas as imagens depois de alterar o modelo.",
|
"machine_learning_clip_model_description": "O nome do modelo CLIP definido <link>aqui</link>. Tome nota de que é necessário voltar a executar a tarefa de \"Pesquisa Inteligente\" para todas as imagens depois de alterar o modelo.",
|
||||||
"machine_learning_duplicate_detection": "Deteção de Itens Duplicados",
|
"machine_learning_duplicate_detection": "Deteção de Itens Duplicados",
|
||||||
@@ -423,6 +429,7 @@
|
|||||||
"album_remove_user_confirmation": "Tem a certeza de que quer remover {user}?",
|
"album_remove_user_confirmation": "Tem a certeza de que quer remover {user}?",
|
||||||
"album_search_not_found": "Nenhum álbum encontrado segundo a pesquisa",
|
"album_search_not_found": "Nenhum álbum encontrado segundo a pesquisa",
|
||||||
"album_share_no_users": "Parece que tem este álbum partilhado com todos os utilizadores ou que não existem utilizadores com quem o partilhar.",
|
"album_share_no_users": "Parece que tem este álbum partilhado com todos os utilizadores ou que não existem utilizadores com quem o partilhar.",
|
||||||
|
"album_summary": "Resumo do álbum",
|
||||||
"album_updated": "Álbum atualizado",
|
"album_updated": "Álbum atualizado",
|
||||||
"album_updated_setting_description": "Receber uma notificação por e-mail quando um álbum partilhado tiver novos ficheiros",
|
"album_updated_setting_description": "Receber uma notificação por e-mail quando um álbum partilhado tiver novos ficheiros",
|
||||||
"album_user_left": "Saíu do {album}",
|
"album_user_left": "Saíu do {album}",
|
||||||
|
|||||||
@@ -123,6 +123,13 @@
|
|||||||
"logging_enable_description": "Habilitar logs",
|
"logging_enable_description": "Habilitar logs",
|
||||||
"logging_level_description": "Quando ativado, qual nível de log usar.",
|
"logging_level_description": "Quando ativado, qual nível de log usar.",
|
||||||
"logging_settings": "Logs",
|
"logging_settings": "Logs",
|
||||||
|
"machine_learning_availability_checks": "Verficações de disponibilidade",
|
||||||
|
"machine_learning_availability_checks_description": "Automaticamente detectar e preferir servidores de machine learning disponíveis",
|
||||||
|
"machine_learning_availability_checks_enabled": "Habilitar verificações de disponibilidade",
|
||||||
|
"machine_learning_availability_checks_interval": "Intervalo de verificação",
|
||||||
|
"machine_learning_availability_checks_interval_description": "Intervalo em milisegundos entre verificações de disponibilidade",
|
||||||
|
"machine_learning_availability_checks_timeout": "Tempo limite da solicitação",
|
||||||
|
"machine_learning_availability_checks_timeout_description": "Tempo limite em milisegundos para verificações de disponibilidade",
|
||||||
"machine_learning_clip_model": "Modelo CLIP",
|
"machine_learning_clip_model": "Modelo CLIP",
|
||||||
"machine_learning_clip_model_description": "O nome de um modelo CLIP listado <link>aqui</link>. Lembre-se de executar novamente a tarefa de 'Pesquisa Inteligente' para todas as imagens após alterar o modelo.",
|
"machine_learning_clip_model_description": "O nome de um modelo CLIP listado <link>aqui</link>. Lembre-se de executar novamente a tarefa de 'Pesquisa Inteligente' para todas as imagens após alterar o modelo.",
|
||||||
"machine_learning_duplicate_detection": "Detecção de duplicidade",
|
"machine_learning_duplicate_detection": "Detecção de duplicidade",
|
||||||
@@ -1520,6 +1527,7 @@
|
|||||||
"port": "Porta",
|
"port": "Porta",
|
||||||
"preferences_settings_subtitle": "Gerenciar as preferências do aplicativo",
|
"preferences_settings_subtitle": "Gerenciar as preferências do aplicativo",
|
||||||
"preferences_settings_title": "Preferências",
|
"preferences_settings_title": "Preferências",
|
||||||
|
"preparing": "Preparando",
|
||||||
"preset": "Predefinição",
|
"preset": "Predefinição",
|
||||||
"preview": "Pré-visualizar",
|
"preview": "Pré-visualizar",
|
||||||
"previous": "Anterior",
|
"previous": "Anterior",
|
||||||
@@ -1585,6 +1593,7 @@
|
|||||||
"read_changelog": "Ler Novidades",
|
"read_changelog": "Ler Novidades",
|
||||||
"readonly_mode_disabled": "Modo apenas visualização desativado",
|
"readonly_mode_disabled": "Modo apenas visualização desativado",
|
||||||
"readonly_mode_enabled": "Modo apenas visualização ativado",
|
"readonly_mode_enabled": "Modo apenas visualização ativado",
|
||||||
|
"ready_for_upload": "Pronto para upload",
|
||||||
"reassign": "Reatribuir",
|
"reassign": "Reatribuir",
|
||||||
"reassigned_assets_to_existing_person": "{count, plural, one {# arquivo reatribuído} other {# arquivos reatribuídos}} a {name, select, null {uma pessoa} other {{name}}}",
|
"reassigned_assets_to_existing_person": "{count, plural, one {# arquivo reatribuído} other {# arquivos reatribuídos}} a {name, select, null {uma pessoa} other {{name}}}",
|
||||||
"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",
|
||||||
@@ -1916,6 +1925,7 @@
|
|||||||
"stacktrace": "Stacktrace",
|
"stacktrace": "Stacktrace",
|
||||||
"start": "Início",
|
"start": "Início",
|
||||||
"start_date": "Data inicial",
|
"start_date": "Data inicial",
|
||||||
|
"start_date_before_end_date": "A data de início deve ser antes da data final",
|
||||||
"state": "Estado",
|
"state": "Estado",
|
||||||
"status": "Status",
|
"status": "Status",
|
||||||
"stop_casting": "Parar transmissão",
|
"stop_casting": "Parar transmissão",
|
||||||
|
|||||||
+5
-5
@@ -371,7 +371,7 @@
|
|||||||
"user_cleanup_job": "Очистка пользователя",
|
"user_cleanup_job": "Очистка пользователя",
|
||||||
"user_delete_delay": "Аккаунт и файлы пользователя <b>{user}</b> будут отложены до окончательного удаления через {delay, plural, one {# день} few {# дня} many {# дней} other {# дня}}.",
|
"user_delete_delay": "Аккаунт и файлы пользователя <b>{user}</b> будут отложены до окончательного удаления через {delay, plural, one {# день} few {# дня} many {# дней} other {# дня}}.",
|
||||||
"user_delete_delay_settings": "Отложенное удаление",
|
"user_delete_delay_settings": "Отложенное удаление",
|
||||||
"user_delete_delay_settings_description": "Срок в днях, по истечение которого происходит окончательное удаление учетной записи пользователя и его ресурсов. Задача по удалению пользователей выполняется в полночь. Изменения этой настройки будут учтены при следующем запуске задачи.",
|
"user_delete_delay_settings_description": "Срок в днях, по истечении которого происходит окончательное удаление учётной записи пользователя и всех его объектов. Задача по удалению пользователей выполняется в полночь. Изменение этой настройки будет учтено при следующем запуске задачи.",
|
||||||
"user_delete_immediately": "Аккаунт и файлы пользователя <b>{user}</b> будут <b>немедленно</b> поставлены в очередь для окончательного удаления.",
|
"user_delete_immediately": "Аккаунт и файлы пользователя <b>{user}</b> будут <b>немедленно</b> поставлены в очередь для окончательного удаления.",
|
||||||
"user_delete_immediately_checkbox": "Поместить пользователя и его файлы в очередь для немедленного удаления",
|
"user_delete_immediately_checkbox": "Поместить пользователя и его файлы в очередь для немедленного удаления",
|
||||||
"user_details": "Данные пользователя",
|
"user_details": "Данные пользователя",
|
||||||
@@ -540,7 +540,7 @@
|
|||||||
"background_backup_running_error": "Выполняется фоновое резервное копирование, запуск вручную пока невозможен",
|
"background_backup_running_error": "Выполняется фоновое резервное копирование, запуск вручную пока невозможен",
|
||||||
"background_location_permission": "Доступ к местоположению в фоне",
|
"background_location_permission": "Доступ к местоположению в фоне",
|
||||||
"background_location_permission_content": "Чтобы считывать имя Wi-Fi сети в фоне, приложению *всегда* необходим доступ к точному местоположению устройства",
|
"background_location_permission_content": "Чтобы считывать имя Wi-Fi сети в фоне, приложению *всегда* необходим доступ к точному местоположению устройства",
|
||||||
"background_options": "Параметры фоновых задач",
|
"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": "Нажмите, чтобы включить, дважды, чтобы исключить",
|
||||||
@@ -567,7 +567,7 @@
|
|||||||
"backup_controller_page_background_battery_info_title": "Оптимизация батареи",
|
"backup_controller_page_background_battery_info_title": "Оптимизация батареи",
|
||||||
"backup_controller_page_background_charging": "Только во время зарядки",
|
"backup_controller_page_background_charging": "Только во время зарядки",
|
||||||
"backup_controller_page_background_configure_error": "Не удалось настроить фоновую службу",
|
"backup_controller_page_background_configure_error": "Не удалось настроить фоновую службу",
|
||||||
"backup_controller_page_background_delay": "Отложить резервное копирование новых объектов: {duration}",
|
"backup_controller_page_background_delay": "Задержка перед загрузкой новых объектов: {duration}",
|
||||||
"backup_controller_page_background_description": "Включите фоновую службу для автоматического резервного копирования любых новых объектов без необходимости открывать приложение",
|
"backup_controller_page_background_description": "Включите фоновую службу для автоматического резервного копирования любых новых объектов без необходимости открывать приложение",
|
||||||
"backup_controller_page_background_is_off": "Автоматическое резервное копирование в фоновом режиме отключено",
|
"backup_controller_page_background_is_off": "Автоматическое резервное копирование в фоновом режиме отключено",
|
||||||
"backup_controller_page_background_is_on": "Автоматическое резервное копирование в фоновом режиме включено",
|
"backup_controller_page_background_is_on": "Автоматическое резервное копирование в фоновом режиме включено",
|
||||||
@@ -584,7 +584,7 @@
|
|||||||
"backup_controller_page_filename": "Имя файла: {filename} [{size}]",
|
"backup_controller_page_filename": "Имя файла: {filename} [{size}]",
|
||||||
"backup_controller_page_id": "ID: {id}",
|
"backup_controller_page_id": "ID: {id}",
|
||||||
"backup_controller_page_info": "Информация о резервном копировании",
|
"backup_controller_page_info": "Информация о резервном копировании",
|
||||||
"backup_controller_page_none_selected": "Ничего не выбрано",
|
"backup_controller_page_none_selected": "Не выбрано",
|
||||||
"backup_controller_page_remainder": "Осталось",
|
"backup_controller_page_remainder": "Осталось",
|
||||||
"backup_controller_page_remainder_sub": "Фото и видео для загрузки",
|
"backup_controller_page_remainder_sub": "Фото и видео для загрузки",
|
||||||
"backup_controller_page_server_storage": "Хранилище на сервере",
|
"backup_controller_page_server_storage": "Хранилище на сервере",
|
||||||
@@ -665,7 +665,7 @@
|
|||||||
"change_pin_code": "Изменить PIN-код",
|
"change_pin_code": "Изменить PIN-код",
|
||||||
"change_your_password": "Изменить свой пароль",
|
"change_your_password": "Изменить свой пароль",
|
||||||
"changed_visibility_successfully": "Видимость успешно изменена",
|
"changed_visibility_successfully": "Видимость успешно изменена",
|
||||||
"charging": "На зарядке",
|
"charging": "При зарядке",
|
||||||
"charging_requirement_mobile_backup": "Запускать резервное копирование только во время зарядки",
|
"charging_requirement_mobile_backup": "Запускать резервное копирование только во время зарядки",
|
||||||
"check_corrupt_asset_backup": "Проверка поврежденных резервных копий",
|
"check_corrupt_asset_backup": "Проверка поврежденных резервных копий",
|
||||||
"check_corrupt_asset_backup_button": "Проверить",
|
"check_corrupt_asset_backup_button": "Проверить",
|
||||||
|
|||||||
@@ -1527,6 +1527,7 @@
|
|||||||
"port": "Port",
|
"port": "Port",
|
||||||
"preferences_settings_subtitle": "Spravovať predvoľby aplikácie",
|
"preferences_settings_subtitle": "Spravovať predvoľby aplikácie",
|
||||||
"preferences_settings_title": "Predvoľby",
|
"preferences_settings_title": "Predvoľby",
|
||||||
|
"preparing": "Pripravuje sa",
|
||||||
"preset": "Predvoľba",
|
"preset": "Predvoľba",
|
||||||
"preview": "Náhľad",
|
"preview": "Náhľad",
|
||||||
"previous": "Predošlé",
|
"previous": "Predošlé",
|
||||||
@@ -1592,6 +1593,7 @@
|
|||||||
"read_changelog": "Prečítať zoznam zmien",
|
"read_changelog": "Prečítať zoznam zmien",
|
||||||
"readonly_mode_disabled": "Režim iba na čítanie je vypnutý",
|
"readonly_mode_disabled": "Režim iba na čítanie je vypnutý",
|
||||||
"readonly_mode_enabled": "Režim iba na čítanie je zapnutý",
|
"readonly_mode_enabled": "Režim iba na čítanie je zapnutý",
|
||||||
|
"ready_for_upload": "Pripravené na nahratie",
|
||||||
"reassign": "Preradiť",
|
"reassign": "Preradiť",
|
||||||
"reassigned_assets_to_existing_person": "Opätovne {count, plural, one {priradená # položka} few {priradené # položky} other {priradených # položiek}} k {name, select, null {existujúcej osobe} other {{name}}}",
|
"reassigned_assets_to_existing_person": "Opätovne {count, plural, one {priradená # položka} few {priradené # položky} other {priradených # položiek}} k {name, select, null {existujúcej osobe} other {{name}}}",
|
||||||
"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",
|
||||||
|
|||||||
+8
-6
@@ -306,14 +306,14 @@
|
|||||||
"transcoding_acceleration_qsv": "Hitra sinhronizacija (zahteva procesor Intel 7. generacije ali novejši)",
|
"transcoding_acceleration_qsv": "Hitra sinhronizacija (zahteva procesor Intel 7. generacije ali novejši)",
|
||||||
"transcoding_acceleration_rkmpp": "RKMPP (samo na Rockchip SOC)",
|
"transcoding_acceleration_rkmpp": "RKMPP (samo na Rockchip SOC)",
|
||||||
"transcoding_acceleration_vaapi": "VAAPI",
|
"transcoding_acceleration_vaapi": "VAAPI",
|
||||||
"transcoding_accepted_audio_codecs": "Dovoljeni zvočni kodeksi",
|
"transcoding_accepted_audio_codecs": "Dovoljeni zvočni kodeki",
|
||||||
"transcoding_accepted_audio_codecs_description": "Izberite, katerih zvočnih kodeksov ni treba prekodirati. Uporablja se samo za določene politike prekodiranja.",
|
"transcoding_accepted_audio_codecs_description": "Izberite, katerih zvočnih kodekov ni treba prekodirati. Uporablja se samo za določene politike prekodiranja.",
|
||||||
"transcoding_accepted_containers": "Sprejeti zabojniki",
|
"transcoding_accepted_containers": "Sprejeti zabojniki",
|
||||||
"transcoding_accepted_containers_description": "Izberite, katerih formatov zabojnika ni treba ponovno muksirati v MP4. Uporablja se samo za določene politike prekodiranja.",
|
"transcoding_accepted_containers_description": "Izberite, katerih formatov zabojnika ni treba ponovno muksirati v MP4. Uporablja se samo za določene politike prekodiranja.",
|
||||||
"transcoding_accepted_video_codecs": "Podprti video kodeksi",
|
"transcoding_accepted_video_codecs": "Podprti video kodeki",
|
||||||
"transcoding_accepted_video_codecs_description": "Izberite, katerih video kodeksov ni treba prekodirati. Uporablja se samo za določene politike prekodiranja.",
|
"transcoding_accepted_video_codecs_description": "Izberite, katerih video kodekov ni treba prekodirati. Uporablja se samo za določene politike prekodiranja.",
|
||||||
"transcoding_advanced_options_description": "Možnosti, ki jih večini uporabnikov ne treba spreminjati",
|
"transcoding_advanced_options_description": "Možnosti, ki jih večini uporabnikov ne treba spreminjati",
|
||||||
"transcoding_audio_codec": "Zvočni kodeks",
|
"transcoding_audio_codec": "Zvočni kodek",
|
||||||
"transcoding_audio_codec_description": "Opus je najbolj kakovostna možnost, vendar ima slabšo združljivost s starimi napravami ali programsko opremo.",
|
"transcoding_audio_codec_description": "Opus je najbolj kakovostna možnost, vendar ima slabšo združljivost s starimi napravami ali programsko opremo.",
|
||||||
"transcoding_bitrate_description": "Videoposnetki, ki presegajo največjo bitno hitrost ali niso v sprejemljivem formatu",
|
"transcoding_bitrate_description": "Videoposnetki, ki presegajo največjo bitno hitrost ali niso v sprejemljivem formatu",
|
||||||
"transcoding_codecs_learn_more": "Če želite izvedeti več o tukaj uporabljeni terminologiji, glejte dokumentacijo FFmpeg za <h264-link>kodek H.264</h264-link>, <hevc-link>kodek HEVC</hevc-link> in <vp9-link>VP9 kodek</vp9-link>.",
|
"transcoding_codecs_learn_more": "Če želite izvedeti več o tukaj uporabljeni terminologiji, glejte dokumentacijo FFmpeg za <h264-link>kodek H.264</h264-link>, <hevc-link>kodek HEVC</hevc-link> in <vp9-link>VP9 kodek</vp9-link>.",
|
||||||
@@ -323,7 +323,7 @@
|
|||||||
"transcoding_constant_rate_factor_description": "Raven kakovosti videa. Tipične vrednosti so 23 za H.264, 28 za HEVC, 31 za VP9 in 35 za AV1. Nižje je boljše, vendar ustvarja večje datoteke.",
|
"transcoding_constant_rate_factor_description": "Raven kakovosti videa. Tipične vrednosti so 23 za H.264, 28 za HEVC, 31 za VP9 in 35 za AV1. Nižje je boljše, vendar ustvarja večje datoteke.",
|
||||||
"transcoding_disabled_description": "Ne prekodirajte nobenih videoposnetkov, lahko prekine predvajanje na nekaterih odjemalcih",
|
"transcoding_disabled_description": "Ne prekodirajte nobenih videoposnetkov, lahko prekine predvajanje na nekaterih odjemalcih",
|
||||||
"transcoding_encoding_options": "Možnosti kodiranja",
|
"transcoding_encoding_options": "Možnosti kodiranja",
|
||||||
"transcoding_encoding_options_description": "Nastavite kodekse, ločljivost, kakovost in druge možnosti za kodirane videoposnetke",
|
"transcoding_encoding_options_description": "Nastavite kodeke, ločljivost, kakovost in druge možnosti za kodirane videoposnetke",
|
||||||
"transcoding_hardware_acceleration": "Strojno pospeševanje",
|
"transcoding_hardware_acceleration": "Strojno pospeševanje",
|
||||||
"transcoding_hardware_acceleration_description": "Eksperimentalno: hitrejše prekodiranje, vendar se lahko kakovost pri enaki bitni hitrosti zmanjša",
|
"transcoding_hardware_acceleration_description": "Eksperimentalno: hitrejše prekodiranje, vendar se lahko kakovost pri enaki bitni hitrosti zmanjša",
|
||||||
"transcoding_hardware_decoding": "Strojno dekodiranje",
|
"transcoding_hardware_decoding": "Strojno dekodiranje",
|
||||||
@@ -1527,6 +1527,7 @@
|
|||||||
"port": "Vrata",
|
"port": "Vrata",
|
||||||
"preferences_settings_subtitle": "Upravljaj nastavitve aplikacije",
|
"preferences_settings_subtitle": "Upravljaj nastavitve aplikacije",
|
||||||
"preferences_settings_title": "Nastavitve",
|
"preferences_settings_title": "Nastavitve",
|
||||||
|
"preparing": "Priprava",
|
||||||
"preset": "Prednastavitev",
|
"preset": "Prednastavitev",
|
||||||
"preview": "Predogled",
|
"preview": "Predogled",
|
||||||
"previous": "Prejšnj-a/-i",
|
"previous": "Prejšnj-a/-i",
|
||||||
@@ -1592,6 +1593,7 @@
|
|||||||
"read_changelog": "Preberi dnevnik sprememb",
|
"read_changelog": "Preberi dnevnik sprememb",
|
||||||
"readonly_mode_disabled": "Način samo za branje je onemogočen",
|
"readonly_mode_disabled": "Način samo za branje je onemogočen",
|
||||||
"readonly_mode_enabled": "Način samo za branje je omogočen",
|
"readonly_mode_enabled": "Način samo za branje je omogočen",
|
||||||
|
"ready_for_upload": "Pripravljeno za nalaganje",
|
||||||
"reassign": "Prerazporedi",
|
"reassign": "Prerazporedi",
|
||||||
"reassigned_assets_to_existing_person": "Ponovno dodeljeno {count, plural, one {# sredstvo} two {# sredstvi} few {# sredstva} other {# sredstev}} za {name, select, null {an existing person} other {{name}}}",
|
"reassigned_assets_to_existing_person": "Ponovno dodeljeno {count, plural, one {# sredstvo} two {# sredstvi} few {# sredstva} other {# sredstev}} za {name, select, null {an existing person} other {{name}}}",
|
||||||
"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",
|
||||||
|
|||||||
+43
-7
@@ -123,6 +123,13 @@
|
|||||||
"logging_enable_description": "Aktivera loggning",
|
"logging_enable_description": "Aktivera loggning",
|
||||||
"logging_level_description": "Vilken loggnivå som ska användas vid aktivering.",
|
"logging_level_description": "Vilken loggnivå som ska användas vid aktivering.",
|
||||||
"logging_settings": "Loggning",
|
"logging_settings": "Loggning",
|
||||||
|
"machine_learning_availability_checks": "Tillgänglighetskontroller",
|
||||||
|
"machine_learning_availability_checks_description": "Upptäck och föredrar automatiskt tillgängliga maskininlärningsservrar",
|
||||||
|
"machine_learning_availability_checks_enabled": "Aktivera tillgänglighetskontroller",
|
||||||
|
"machine_learning_availability_checks_interval": "Kontrollera intervall",
|
||||||
|
"machine_learning_availability_checks_interval_description": "Intervall i millisekunder mellan tillgänglighetskontroller",
|
||||||
|
"machine_learning_availability_checks_timeout": "Begär timeout",
|
||||||
|
"machine_learning_availability_checks_timeout_description": "Timeout i millisekunder för tillgänglighetskontroller",
|
||||||
"machine_learning_clip_model": "CLIP-modell",
|
"machine_learning_clip_model": "CLIP-modell",
|
||||||
"machine_learning_clip_model_description": "Namnet på en CLIP-modell listad <link> här </link>. Observera att du måste köra ett \"Smart Sökning\" jobb för alla bilder när du ändrar modell.",
|
"machine_learning_clip_model_description": "Namnet på en CLIP-modell listad <link> här </link>. Observera att du måste köra ett \"Smart Sökning\" jobb för alla bilder när du ändrar modell.",
|
||||||
"machine_learning_duplicate_detection": "Dubblettdetektering",
|
"machine_learning_duplicate_detection": "Dubblettdetektering",
|
||||||
@@ -423,6 +430,7 @@
|
|||||||
"album_remove_user_confirmation": "Är du säker på att du vill ta bort {user}?",
|
"album_remove_user_confirmation": "Är du säker på att du vill ta bort {user}?",
|
||||||
"album_search_not_found": "Inga album hittades som matchade din sökning",
|
"album_search_not_found": "Inga album hittades som matchade din sökning",
|
||||||
"album_share_no_users": "Det verkar som att du har delat det här albumet med alla användare eller så har du inte någon användare att dela med.",
|
"album_share_no_users": "Det verkar som att du har delat det här albumet med alla användare eller så har du inte någon användare att dela med.",
|
||||||
|
"album_summary": "Albumsammanfattning",
|
||||||
"album_updated": "Albumet uppdaterat",
|
"album_updated": "Albumet uppdaterat",
|
||||||
"album_updated_setting_description": "Få ett e-postmeddelande när ett delat album har nya tillgångar",
|
"album_updated_setting_description": "Få ett e-postmeddelande när ett delat album har nya tillgångar",
|
||||||
"album_user_left": "Lämnade {album}",
|
"album_user_left": "Lämnade {album}",
|
||||||
@@ -494,6 +502,8 @@
|
|||||||
"asset_restored_successfully": "Objekt återställt",
|
"asset_restored_successfully": "Objekt återställt",
|
||||||
"asset_skipped": "Överhoppad",
|
"asset_skipped": "Överhoppad",
|
||||||
"asset_skipped_in_trash": "I papperskorgen",
|
"asset_skipped_in_trash": "I papperskorgen",
|
||||||
|
"asset_trashed": "Tillgång kasserad",
|
||||||
|
"asset_troubleshoot": "Felsökning av tillgångar",
|
||||||
"asset_uploaded": "Uppladdad",
|
"asset_uploaded": "Uppladdad",
|
||||||
"asset_uploading": "Laddar upp...…",
|
"asset_uploading": "Laddar upp...…",
|
||||||
"asset_viewer_settings_subtitle": "Hantera inställningar för gallerivisare",
|
"asset_viewer_settings_subtitle": "Hantera inställningar för gallerivisare",
|
||||||
@@ -527,8 +537,10 @@
|
|||||||
"autoplay_slideshow": "Spela upp bildspel automatiskt",
|
"autoplay_slideshow": "Spela upp bildspel automatiskt",
|
||||||
"back": "Bakåt",
|
"back": "Bakåt",
|
||||||
"back_close_deselect": "Tillbaka, stäng eller avmarkera",
|
"back_close_deselect": "Tillbaka, stäng eller avmarkera",
|
||||||
|
"background_backup_running_error": "Bakgrundssäkerhetskopiering körs för närvarande, kan inte starta manuell säkerhetskopiering",
|
||||||
"background_location_permission": "Tillåtelse för bakgrundsplats",
|
"background_location_permission": "Tillåtelse för bakgrundsplats",
|
||||||
"background_location_permission_content": "För att kunna byta nätverk när appen körs i bakgrunden måste Immich *alltid* ha åtkomst till exakt plats så att appen kan läsa av Wi-Fi-nätverkets namn",
|
"background_location_permission_content": "För att kunna byta nätverk när appen körs i bakgrunden måste Immich *alltid* ha åtkomst till exakt plats så att appen kan läsa av Wi-Fi-nätverkets namn",
|
||||||
|
"background_options": "Bakgrundsalternativ",
|
||||||
"backup": "Säkerhetskopiera",
|
"backup": "Säkerhetskopiera",
|
||||||
"backup_album_selection_page_albums_device": "Album på enhet ({count})",
|
"backup_album_selection_page_albums_device": "Album på enhet ({count})",
|
||||||
"backup_album_selection_page_albums_tap": "Tryck en gång för att inkludera, tryck två gånger för att exkludera",
|
"backup_album_selection_page_albums_tap": "Tryck en gång för att inkludera, tryck två gånger för att exkludera",
|
||||||
@@ -536,6 +548,7 @@
|
|||||||
"backup_album_selection_page_select_albums": "Välj album",
|
"backup_album_selection_page_select_albums": "Välj album",
|
||||||
"backup_album_selection_page_selection_info": "Info om valda objekt",
|
"backup_album_selection_page_selection_info": "Info om valda objekt",
|
||||||
"backup_album_selection_page_total_assets": "Antal unika objekt",
|
"backup_album_selection_page_total_assets": "Antal unika objekt",
|
||||||
|
"backup_albums_sync": "Säkerhetskopiera album synkronisering",
|
||||||
"backup_all": "Allt",
|
"backup_all": "Allt",
|
||||||
"backup_background_service_backup_failed_message": "Säkerhetskopiering av foton och videor misslyckades. Försöker igen…",
|
"backup_background_service_backup_failed_message": "Säkerhetskopiering av foton och videor misslyckades. Försöker igen…",
|
||||||
"backup_background_service_connection_failed_message": "Anslutning till servern misslyckades. Försöker igen…",
|
"backup_background_service_connection_failed_message": "Anslutning till servern misslyckades. Försöker igen…",
|
||||||
@@ -652,6 +665,8 @@
|
|||||||
"change_pin_code": "Ändra PIN-kod",
|
"change_pin_code": "Ändra PIN-kod",
|
||||||
"change_your_password": "Ändra ditt lösenord",
|
"change_your_password": "Ändra ditt lösenord",
|
||||||
"changed_visibility_successfully": "Synligheten har ändrats",
|
"changed_visibility_successfully": "Synligheten har ändrats",
|
||||||
|
"charging": "Laddar",
|
||||||
|
"charging_requirement_mobile_backup": "Bakgrundssäkerhetskopiering kräver att enheten laddas",
|
||||||
"check_corrupt_asset_backup": "Kontrollera om det finns korrupta säkerhetskopior av objekt",
|
"check_corrupt_asset_backup": "Kontrollera om det finns korrupta säkerhetskopior av objekt",
|
||||||
"check_corrupt_asset_backup_button": "Kontrollera",
|
"check_corrupt_asset_backup_button": "Kontrollera",
|
||||||
"check_corrupt_asset_backup_description": "Kör kontrollen endast över Wi-Fi och när alla objekt har säkerhetskopierats. Det kan ta några minuter.",
|
"check_corrupt_asset_backup_description": "Kör kontrollen endast över Wi-Fi och när alla objekt har säkerhetskopierats. Det kan ta några minuter.",
|
||||||
@@ -738,6 +753,7 @@
|
|||||||
"create_user": "Skapa användare",
|
"create_user": "Skapa användare",
|
||||||
"created": "Skapad",
|
"created": "Skapad",
|
||||||
"created_at": "Skapad",
|
"created_at": "Skapad",
|
||||||
|
"creating_linked_albums": "Skapar länkade album...",
|
||||||
"crop": "Beskär",
|
"crop": "Beskär",
|
||||||
"curated_object_page_title": "Objekt",
|
"curated_object_page_title": "Objekt",
|
||||||
"current_device": "Aktuell enhet",
|
"current_device": "Aktuell enhet",
|
||||||
@@ -869,7 +885,7 @@
|
|||||||
"editor_close_without_save_prompt": "Ändringarna kommer inte att sparas",
|
"editor_close_without_save_prompt": "Ändringarna kommer inte att sparas",
|
||||||
"editor_close_without_save_title": "Stäng redigeraren?",
|
"editor_close_without_save_title": "Stäng redigeraren?",
|
||||||
"editor_crop_tool_h2_aspect_ratios": "Bildförhållande",
|
"editor_crop_tool_h2_aspect_ratios": "Bildförhållande",
|
||||||
"editor_crop_tool_h2_rotation": "Rotation",
|
"editor_crop_tool_h2_rotation": "Vridning",
|
||||||
"email": "Epost",
|
"email": "Epost",
|
||||||
"email_notifications": "E-postaviseringar",
|
"email_notifications": "E-postaviseringar",
|
||||||
"empty_folder": "Mappen är tom",
|
"empty_folder": "Mappen är tom",
|
||||||
@@ -887,7 +903,9 @@
|
|||||||
"error": "Fel",
|
"error": "Fel",
|
||||||
"error_change_sort_album": "Kunde inte ändra sorteringsordning för album",
|
"error_change_sort_album": "Kunde inte ändra sorteringsordning för album",
|
||||||
"error_delete_face": "Fel uppstod när ansikte skulle tas bort från objektet",
|
"error_delete_face": "Fel uppstod när ansikte skulle tas bort från objektet",
|
||||||
|
"error_getting_places": "Det gick inte att hämta platser",
|
||||||
"error_loading_image": "Fel vid bildladdning",
|
"error_loading_image": "Fel vid bildladdning",
|
||||||
|
"error_loading_partners": "Fel vid inläsning av partner: {error}",
|
||||||
"error_saving_image": "Fel: {error}",
|
"error_saving_image": "Fel: {error}",
|
||||||
"error_tag_face_bounding_box": "Fel vid taggning av ansikte – kan inte hämta koordinater för begränsningsruta",
|
"error_tag_face_bounding_box": "Fel vid taggning av ansikte – kan inte hämta koordinater för begränsningsruta",
|
||||||
"error_title": "Fel – något gick fel",
|
"error_title": "Fel – något gick fel",
|
||||||
@@ -1013,7 +1031,7 @@
|
|||||||
"unable_to_update_user": "Kunde inte uppdatera användare",
|
"unable_to_update_user": "Kunde inte uppdatera användare",
|
||||||
"unable_to_upload_file": "Det går inte att ladda upp filen"
|
"unable_to_upload_file": "Det går inte att ladda upp filen"
|
||||||
},
|
},
|
||||||
"exif": "Exif",
|
"exif": "EXIF",
|
||||||
"exif_bottom_sheet_description": "Lägg till beskrivning...",
|
"exif_bottom_sheet_description": "Lägg till beskrivning...",
|
||||||
"exif_bottom_sheet_description_error": "Fel vid uppdatering av beskrivningen",
|
"exif_bottom_sheet_description_error": "Fel vid uppdatering av beskrivningen",
|
||||||
"exif_bottom_sheet_details": "DETALJER",
|
"exif_bottom_sheet_details": "DETALJER",
|
||||||
@@ -1052,6 +1070,7 @@
|
|||||||
"favorites_page_no_favorites": "Inga favoritobjekt hittades",
|
"favorites_page_no_favorites": "Inga favoritobjekt hittades",
|
||||||
"feature_photo_updated": "Funktionsfoto uppdaterad",
|
"feature_photo_updated": "Funktionsfoto uppdaterad",
|
||||||
"features": "Funktioner",
|
"features": "Funktioner",
|
||||||
|
"features_in_development": "Funktioner i utveckling",
|
||||||
"features_setting_description": "Hantera appens funktioner",
|
"features_setting_description": "Hantera appens funktioner",
|
||||||
"file_name": "Filnamn",
|
"file_name": "Filnamn",
|
||||||
"file_name_or_extension": "Filnamn eller -tillägg",
|
"file_name_or_extension": "Filnamn eller -tillägg",
|
||||||
@@ -1069,7 +1088,7 @@
|
|||||||
"folders_feature_description": "Bläddra i mappvyn för foton och videoklipp i filsystemet",
|
"folders_feature_description": "Bläddra i mappvyn för foton och videoklipp i filsystemet",
|
||||||
"forgot_pin_code_question": "Glömt din pinkod?",
|
"forgot_pin_code_question": "Glömt din pinkod?",
|
||||||
"forward": "Framåt",
|
"forward": "Framåt",
|
||||||
"gcast_enabled": "Google Cast",
|
"gcast_enabled": "Google-Cast",
|
||||||
"gcast_enabled_description": "Denna funktion läser in externa resurser från Google för att fungera.",
|
"gcast_enabled_description": "Denna funktion läser in externa resurser från Google för att fungera.",
|
||||||
"general": "Allmänt",
|
"general": "Allmänt",
|
||||||
"geolocation_instruction_location": "Klicka på en tillgång med GPS-koordinater för att använda dess plats, eller välj en plats direkt från kartan",
|
"geolocation_instruction_location": "Klicka på en tillgång med GPS-koordinater för att använda dess plats, eller välj en plats direkt från kartan",
|
||||||
@@ -1211,11 +1230,12 @@
|
|||||||
"link_to_oauth": "Länk till OAuth",
|
"link_to_oauth": "Länk till OAuth",
|
||||||
"linked_oauth_account": "Länkat OAuth konto",
|
"linked_oauth_account": "Länkat OAuth konto",
|
||||||
"list": "Lista",
|
"list": "Lista",
|
||||||
"loading": "Laddar",
|
"loading": "Inläsning",
|
||||||
"loading_search_results_failed": "Det gick inte att läsa in sökresultat",
|
"loading_search_results_failed": "Det gick inte att läsa in sökresultat",
|
||||||
"local": "Lokalt",
|
"local": "Lokalt",
|
||||||
"local_asset_cast_failed": "Det går inte att casta en tillgång som inte har laddats upp till servern",
|
"local_asset_cast_failed": "Det går inte att casta en tillgång som inte har laddats upp till servern",
|
||||||
"local_assets": "Lokala tillgångar",
|
"local_assets": "Lokala tillgångar",
|
||||||
|
"local_media_summary": "Sammanfattning av lokala medier",
|
||||||
"local_network": "Lokalt nätverk",
|
"local_network": "Lokalt nätverk",
|
||||||
"local_network_sheet_info": "Appen kommer ansluta till servern via denna URL när det specificerade WiFi-nätverket används",
|
"local_network_sheet_info": "Appen kommer ansluta till servern via denna URL när det specificerade WiFi-nätverket används",
|
||||||
"location_permission": "Plats-rättighet",
|
"location_permission": "Plats-rättighet",
|
||||||
@@ -1227,6 +1247,7 @@
|
|||||||
"location_picker_longitude_hint": "Ange din longitud här",
|
"location_picker_longitude_hint": "Ange din longitud här",
|
||||||
"lock": "Lås",
|
"lock": "Lås",
|
||||||
"locked_folder": "Låst Mapp",
|
"locked_folder": "Låst Mapp",
|
||||||
|
"log_detail_title": "Loggdetalj",
|
||||||
"log_out": "Logga ut",
|
"log_out": "Logga ut",
|
||||||
"log_out_all_devices": "Logga ut alla enheter",
|
"log_out_all_devices": "Logga ut alla enheter",
|
||||||
"logged_in_as": "Inloggad som {user}",
|
"logged_in_as": "Inloggad som {user}",
|
||||||
@@ -1257,6 +1278,7 @@
|
|||||||
"login_password_changed_success": "Uppdatering av lösenord lyckades",
|
"login_password_changed_success": "Uppdatering av lösenord lyckades",
|
||||||
"logout_all_device_confirmation": "Är du säker på att du vill logga ut från alla enheter?",
|
"logout_all_device_confirmation": "Är du säker på att du vill logga ut från alla enheter?",
|
||||||
"logout_this_device_confirmation": "Är du säker på att du vill logga ut från denna enhet?",
|
"logout_this_device_confirmation": "Är du säker på att du vill logga ut från denna enhet?",
|
||||||
|
"logs": "Loggar",
|
||||||
"longitude": "Longitud",
|
"longitude": "Longitud",
|
||||||
"look": "Titta",
|
"look": "Titta",
|
||||||
"loop_videos": "Loopa videor",
|
"loop_videos": "Loopa videor",
|
||||||
@@ -1299,6 +1321,7 @@
|
|||||||
"mark_as_read": "Markera som läst",
|
"mark_as_read": "Markera som läst",
|
||||||
"marked_all_as_read": "Markerade alla som lästa",
|
"marked_all_as_read": "Markerade alla som lästa",
|
||||||
"matches": "Matchar",
|
"matches": "Matchar",
|
||||||
|
"matching_assets": "Matchande tillgångar",
|
||||||
"media_type": "Mediatyp",
|
"media_type": "Mediatyp",
|
||||||
"memories": "Minnen",
|
"memories": "Minnen",
|
||||||
"memories_all_caught_up": "Du är ikapp",
|
"memories_all_caught_up": "Du är ikapp",
|
||||||
@@ -1339,6 +1362,7 @@
|
|||||||
"name_or_nickname": "Namn eller smeknamn",
|
"name_or_nickname": "Namn eller smeknamn",
|
||||||
"network_requirement_photos_upload": "Använd mobildata för att säkerhetskopiera foton",
|
"network_requirement_photos_upload": "Använd mobildata för att säkerhetskopiera foton",
|
||||||
"network_requirement_videos_upload": "Använd mobildata för att säkerhetskopiera videor",
|
"network_requirement_videos_upload": "Använd mobildata för att säkerhetskopiera videor",
|
||||||
|
"network_requirements": "Nätverkskrav",
|
||||||
"network_requirements_updated": "Nätverkskraven har ändrats, återställer säkerhetskopieringskön",
|
"network_requirements_updated": "Nätverkskraven har ändrats, återställer säkerhetskopieringskön",
|
||||||
"networking_settings": "Nätverk",
|
"networking_settings": "Nätverk",
|
||||||
"networking_subtitle": "Hantera inställningar för server-endpointen",
|
"networking_subtitle": "Hantera inställningar för server-endpointen",
|
||||||
@@ -1349,6 +1373,7 @@
|
|||||||
"new_person": "Ny person",
|
"new_person": "Ny person",
|
||||||
"new_pin_code": "Ny PIN-kod",
|
"new_pin_code": "Ny PIN-kod",
|
||||||
"new_pin_code_subtitle": "Det här är första gången du öppnar den låsta mappen. Skapa en PIN-kod för att säkert få åtkomst till den här sidan",
|
"new_pin_code_subtitle": "Det här är första gången du öppnar den låsta mappen. Skapa en PIN-kod för att säkert få åtkomst till den här sidan",
|
||||||
|
"new_timeline": "Ny tidslinje",
|
||||||
"new_user_created": "Ny användare skapad",
|
"new_user_created": "Ny användare skapad",
|
||||||
"new_version_available": "NY VERSION TILLGÄNGLIG",
|
"new_version_available": "NY VERSION TILLGÄNGLIG",
|
||||||
"newest_first": "Nyast först",
|
"newest_first": "Nyast först",
|
||||||
@@ -1362,20 +1387,25 @@
|
|||||||
"no_assets_message": "KLICKA FÖR ATT LADDA UPP DIN FÖRSTA BILD",
|
"no_assets_message": "KLICKA FÖR ATT LADDA UPP DIN FÖRSTA BILD",
|
||||||
"no_assets_to_show": "Inga objekt att visa",
|
"no_assets_to_show": "Inga objekt att visa",
|
||||||
"no_cast_devices_found": "Inga Cast-enheter hittades",
|
"no_cast_devices_found": "Inga Cast-enheter hittades",
|
||||||
|
"no_checksum_local": "Ingen kontrollsumma tillgänglig - kan inte hämta lokala tillgångar",
|
||||||
|
"no_checksum_remote": "Ingen kontrollsumma tillgänglig - kan inte hämta fjärrtillgång",
|
||||||
"no_duplicates_found": "Inga dubbletter hittades.",
|
"no_duplicates_found": "Inga dubbletter hittades.",
|
||||||
"no_exif_info_available": "EXIF-information ej tillgänglig",
|
"no_exif_info_available": "EXIF-information ej tillgänglig",
|
||||||
"no_explore_results_message": "Ladda upp fler bilder för att utforska din samling.",
|
"no_explore_results_message": "Ladda upp fler bilder för att utforska din samling.",
|
||||||
"no_favorites_message": "Lägg till favoriter för att snabbt hitta dina bästa bilder och videor",
|
"no_favorites_message": "Lägg till favoriter för att snabbt hitta dina bästa bilder och videor",
|
||||||
"no_libraries_message": "Skapa ett externt bibliotek för att se dina bilder och videor",
|
"no_libraries_message": "Skapa ett externt bibliotek för att se dina bilder och videor",
|
||||||
|
"no_local_assets_found": "Inga lokala tillgångar hittades med denna kontrollsumma",
|
||||||
"no_locked_photos_message": "Foton och videor i den låsta mappen är dolda och visas inte när du bläddrar eller söker i ditt bibliotek.",
|
"no_locked_photos_message": "Foton och videor i den låsta mappen är dolda och visas inte när du bläddrar eller söker i ditt bibliotek.",
|
||||||
"no_name": "Inget namn",
|
"no_name": "Inget namn",
|
||||||
"no_notifications": "Inga aviseringar",
|
"no_notifications": "Inga aviseringar",
|
||||||
"no_people_found": "Inga matchande personer hittade",
|
"no_people_found": "Inga matchande personer hittade",
|
||||||
"no_places": "Inga platser",
|
"no_places": "Inga platser",
|
||||||
|
"no_remote_assets_found": "Inga fjärrtillgångar hittades med denna kontrollsumma",
|
||||||
"no_results": "Inga resultat",
|
"no_results": "Inga resultat",
|
||||||
"no_results_description": "Pröva en synonym eller ett annat mer allmänt sökord",
|
"no_results_description": "Pröva en synonym eller ett annat mer allmänt sökord",
|
||||||
"no_shared_albums_message": "Skapa ett album för att dela bilder och videor med andra personer",
|
"no_shared_albums_message": "Skapa ett album för att dela bilder och videor med andra personer",
|
||||||
"no_uploads_in_progress": "Inga uppladdningar pågår",
|
"no_uploads_in_progress": "Inga uppladdningar pågår",
|
||||||
|
"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",
|
"note_apply_storage_label_to_previously_uploaded assets": "Obs: Om du vill använda lagringsetiketten på tidigare uppladdade tillgångar kör du",
|
||||||
@@ -1497,6 +1527,7 @@
|
|||||||
"port": "Port",
|
"port": "Port",
|
||||||
"preferences_settings_subtitle": "Hantera appens inställningar",
|
"preferences_settings_subtitle": "Hantera appens inställningar",
|
||||||
"preferences_settings_title": "Inställningar",
|
"preferences_settings_title": "Inställningar",
|
||||||
|
"preparing": "Förbereder",
|
||||||
"preset": "Förinställt värde",
|
"preset": "Förinställt värde",
|
||||||
"preview": "Förhandsvisning",
|
"preview": "Förhandsvisning",
|
||||||
"previous": "Föregående",
|
"previous": "Föregående",
|
||||||
@@ -1520,7 +1551,7 @@
|
|||||||
"profile_picture_set": "Profilbild vald.",
|
"profile_picture_set": "Profilbild vald.",
|
||||||
"public_album": "Publikt album",
|
"public_album": "Publikt album",
|
||||||
"public_share": "Offentlig delning",
|
"public_share": "Offentlig delning",
|
||||||
"purchase_account_info": "Supporter",
|
"purchase_account_info": "Anhängare",
|
||||||
"purchase_activated_subtitle": "Tack för att du stödjer Immich och open source-mjukvara",
|
"purchase_activated_subtitle": "Tack för att du stödjer Immich och open source-mjukvara",
|
||||||
"purchase_activated_time": "Aktiverad {date}",
|
"purchase_activated_time": "Aktiverad {date}",
|
||||||
"purchase_activated_title": "Aktiveringan av din nyckel lyckades",
|
"purchase_activated_title": "Aktiveringan av din nyckel lyckades",
|
||||||
@@ -1562,6 +1593,7 @@
|
|||||||
"read_changelog": "Läs ändringslogg",
|
"read_changelog": "Läs ändringslogg",
|
||||||
"readonly_mode_disabled": "Skrivskyddat läge inaktiverat",
|
"readonly_mode_disabled": "Skrivskyddat läge inaktiverat",
|
||||||
"readonly_mode_enabled": "Skrivskyddat läge aktiverat",
|
"readonly_mode_enabled": "Skrivskyddat läge aktiverat",
|
||||||
|
"ready_for_upload": "Redo för uppladdning",
|
||||||
"reassign": "Omfördela",
|
"reassign": "Omfördela",
|
||||||
"reassigned_assets_to_existing_person": "Tilldelade om {count, plural, one {# objekt} other {# objekt}} till {name, select, null {an existing person} other {{name}}}",
|
"reassigned_assets_to_existing_person": "Tilldelade om {count, plural, one {# objekt} other {# objekt}} till {name, select, null {an existing person} other {{name}}}",
|
||||||
"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",
|
||||||
@@ -1586,6 +1618,7 @@
|
|||||||
"regenerating_thumbnails": "Uppdaterar miniatyrer",
|
"regenerating_thumbnails": "Uppdaterar miniatyrer",
|
||||||
"remote": "Fjärrr",
|
"remote": "Fjärrr",
|
||||||
"remote_assets": "Fjärrtillgångar",
|
"remote_assets": "Fjärrtillgångar",
|
||||||
|
"remote_media_summary": "Sammanfattning av fjärrmedia",
|
||||||
"remove": "Ta bort",
|
"remove": "Ta bort",
|
||||||
"remove_assets_album_confirmation": "Är du säker på att du vill ta bort {count, plural, one {# asset} other {# assets}} från albumet?",
|
"remove_assets_album_confirmation": "Är du säker på att du vill ta bort {count, plural, one {# asset} other {# assets}} från albumet?",
|
||||||
"remove_assets_shared_link_confirmation": "Är du säker på att du vill ta bort {count, plural, one {# asset} other {# assets}} från denna delade länk?",
|
"remove_assets_shared_link_confirmation": "Är du säker på att du vill ta bort {count, plural, one {# asset} other {# assets}} från denna delade länk?",
|
||||||
@@ -1861,6 +1894,7 @@
|
|||||||
"show_slideshow_transition": "Visa bildspelsövergång",
|
"show_slideshow_transition": "Visa bildspelsövergång",
|
||||||
"show_supporter_badge": "Supporteremblem",
|
"show_supporter_badge": "Supporteremblem",
|
||||||
"show_supporter_badge_description": "Visa supporteremblem",
|
"show_supporter_badge_description": "Visa supporteremblem",
|
||||||
|
"show_text_search_menu": "Visa textsökningsmeny",
|
||||||
"shuffle": "Blanda",
|
"shuffle": "Blanda",
|
||||||
"sidebar": "Sidopanel",
|
"sidebar": "Sidopanel",
|
||||||
"sidebar_display_description": "Visa en länk till vyn i sidofältet",
|
"sidebar_display_description": "Visa en länk till vyn i sidofältet",
|
||||||
@@ -1891,6 +1925,7 @@
|
|||||||
"stacktrace": "Stapelspårning",
|
"stacktrace": "Stapelspårning",
|
||||||
"start": "Starta",
|
"start": "Starta",
|
||||||
"start_date": "Startdatum",
|
"start_date": "Startdatum",
|
||||||
|
"start_date_before_end_date": "Startdatumet måste vara före slutdatumet",
|
||||||
"state": "Stat",
|
"state": "Stat",
|
||||||
"status": "Status",
|
"status": "Status",
|
||||||
"stop_casting": "Sluta casta",
|
"stop_casting": "Sluta casta",
|
||||||
@@ -1907,7 +1942,7 @@
|
|||||||
"suggestions": "Förslag",
|
"suggestions": "Förslag",
|
||||||
"sunrise_on_the_beach": "Soluppgång på stranden",
|
"sunrise_on_the_beach": "Soluppgång på stranden",
|
||||||
"support": "Support",
|
"support": "Support",
|
||||||
"support_and_feedback": "Support & Feedback",
|
"support_and_feedback": "Support och Feedback",
|
||||||
"support_third_party_description": "Din Immich-installation paketerades av en tredje part. Problem som du upplever kan orsakas av det paketet, så vänligen ta upp problem med dem i första hand med hjälp av länkarna nedan.",
|
"support_third_party_description": "Din Immich-installation paketerades av en tredje part. Problem som du upplever kan orsakas av det paketet, så vänligen ta upp problem med dem i första hand med hjälp av länkarna nedan.",
|
||||||
"swap_merge_direction": "Byt sammanfogningsriktning",
|
"swap_merge_direction": "Byt sammanfogningsriktning",
|
||||||
"sync": "Synka",
|
"sync": "Synka",
|
||||||
@@ -2093,5 +2128,6 @@
|
|||||||
"yes": "Ja",
|
"yes": "Ja",
|
||||||
"you_dont_have_any_shared_links": "Du har inga delade länkar",
|
"you_dont_have_any_shared_links": "Du har inga delade länkar",
|
||||||
"your_wifi_name": "Ditt Wi-Fi-namn",
|
"your_wifi_name": "Ditt Wi-Fi-namn",
|
||||||
"zoom_image": "Zooma bild"
|
"zoom_image": "Zooma bild",
|
||||||
|
"zoom_to_bounds": "Zooma till gränser"
|
||||||
}
|
}
|
||||||
|
|||||||
+13
-11
@@ -537,9 +537,9 @@
|
|||||||
"autoplay_slideshow": "ஆட்டோபிளே ச்லைடுசோ",
|
"autoplay_slideshow": "ஆட்டோபிளே ச்லைடுசோ",
|
||||||
"back": "பின்",
|
"back": "பின்",
|
||||||
"back_close_deselect": "பின், மூடு அல்லது தேர்வுநீக்கம்",
|
"back_close_deselect": "பின், மூடு அல்லது தேர்வுநீக்கம்",
|
||||||
"background_backup_running_error": "பின்னணி காப்புப்பிரதி தற்போது இயங்குகிறது, கையேடு காப்புப்பிரதியைத் தொடங்க முடியாது",
|
"background_backup_running_error": "பின்னணி காப்புப்பிரதி தற்போது இயங்குகிறது, கைமுறை காப்புப்பிரதியைத் தொடங்க முடியாது",
|
||||||
"background_location_permission": "பின்னணி இருப்பிட இசைவு",
|
"background_location_permission": "பின்னணி இருப்பிட இசைவு",
|
||||||
"background_location_permission_content": "பின்னணியில் இயங்கும் போது நெட்வொர்க்குகளை மாற்ற, இம்மிச் * எப்போதும் * துல்லியமான இருப்பிட அணுகலைக் கொண்டிருக்க வேண்டும், எனவே பயன்பாடு வைஃபை நெட்வொர்க்கின் பெயரைப் படிக்க முடியும்",
|
"background_location_permission_content": "பின்னணியில் இயங்கும் போது நெட்வொர்க்குகளை மாற்ற, இம்மிச் *எப்போதும்* துல்லியமான இருப்பிட அணுகலைக் கொண்டிருக்க வேண்டும், எனவே பயன்பாடு வைஃபை நெட்வொர்க்கின் பெயரைப் படிக்க முடியும்",
|
||||||
"background_options": "பின்னணி விருப்பங்கள்",
|
"background_options": "பின்னணி விருப்பங்கள்",
|
||||||
"backup": "காப்புப்பிரதி",
|
"backup": "காப்புப்பிரதி",
|
||||||
"backup_album_selection_page_albums_device": "சாதனத்தில் ஆல்பங்கள் ({count})",
|
"backup_album_selection_page_albums_device": "சாதனத்தில் ஆல்பங்கள் ({count})",
|
||||||
@@ -1527,23 +1527,24 @@
|
|||||||
"port": "துறைமுகம்",
|
"port": "துறைமுகம்",
|
||||||
"preferences_settings_subtitle": "பயன்பாட்டின் விருப்பங்களை நிர்வகிக்கவும்",
|
"preferences_settings_subtitle": "பயன்பாட்டின் விருப்பங்களை நிர்வகிக்கவும்",
|
||||||
"preferences_settings_title": "விருப்பத்தேர்வுகள்",
|
"preferences_settings_title": "விருப்பத்தேர்வுகள்",
|
||||||
|
"preparing": "தயாராகிறது",
|
||||||
"preset": "முன்னமைவு",
|
"preset": "முன்னமைவு",
|
||||||
"preview": "முன்னோட்டம்",
|
"preview": "முன்னோட்டம்",
|
||||||
"previous": "முந்தைய",
|
"previous": "முந்தைய",
|
||||||
"previous_memory": "முந்தைய நினைவகம்",
|
"previous_memory": "முந்தைய நினைவகம்",
|
||||||
"previous_or_next_day": "நாள் முன்னோக்கி/பின்புறம்",
|
"previous_or_next_day": "நாள் முன்னோக்கி/பின்னோக்கி",
|
||||||
"previous_or_next_month": "மாதம் முன்னோக்கி/பின்",
|
"previous_or_next_month": "மாதம் முன்னோக்கி/பின்னோக்கி",
|
||||||
"previous_or_next_photo": "புகைப்படம் முன்னோக்கி/பின்",
|
"previous_or_next_photo": "புகைப்படம் முன்னோக்கி/பின்னோக்கி",
|
||||||
"previous_or_next_year": "ஆண்டு முன்னோக்கி/பின்புறம்",
|
"previous_or_next_year": "ஆண்டு முன்னோக்கி/பின்னோக்கி",
|
||||||
"primary": "முதன்மை",
|
"primary": "முதன்மை",
|
||||||
"privacy": "தனியுரிமை",
|
"privacy": "தனியுரிமை",
|
||||||
"profile": "சுயவிவரம்",
|
"profile": "சுயவிவரம்",
|
||||||
"profile_drawer_app_logs": "பதிவுகள்",
|
"profile_drawer_app_logs": "பதிவுகள்",
|
||||||
"profile_drawer_client_out_of_date_major": "மொபைல் பயன்பாடு காலாவதியானது. அண்மைக் கால முக்கிய பதிப்பிற்கு புதுப்பிக்கவும்.",
|
"profile_drawer_client_out_of_date_major": "மொபைல் பயன்பாடு காலாவதியானது. தயவு செய்து சமீபத்திய முக்கிய பதிப்பிற்கு புதுப்பிக்கவும்.",
|
||||||
"profile_drawer_client_out_of_date_minor": "மொபைல் பயன்பாடு காலாவதியானது. அண்மைக் கால சிறிய பதிப்பிற்கு புதுப்பிக்கவும்.",
|
"profile_drawer_client_out_of_date_minor": "மொபைல் பயன்பாடு காலாவதியானது. தயவு செய்து சமீபத்திய சிறிய பதிப்பிற்கு புதுப்பிக்கவும்.",
|
||||||
"profile_drawer_client_server_up_to_date": "வாங்கி மற்றும் சேவையகம் புதுப்பித்த நிலையில் உள்ளன",
|
"profile_drawer_client_server_up_to_date": "வாங்கி மற்றும் சேவையகம் புதுப்பித்த நிலையில் உள்ளன",
|
||||||
"profile_drawer_github": "கிரப்",
|
"profile_drawer_github": "கிட்ஹப்",
|
||||||
"profile_drawer_readonly_mode": "படிக்க மட்டும் பயன்முறை இயக்கப்பட்டது. வெளியேற பயனர் அவதார் ஐகானை நீண்ட அழுத்தவும்.",
|
"profile_drawer_readonly_mode": "படிக்க மட்டும் பயன்முறை இயக்கப்பட்டது. வெளியேற பயனர் அவதார் ஐகானை நீண்ட நேரம் அழுத்தவும்.",
|
||||||
"profile_drawer_server_out_of_date_major": "சேவையகம் காலாவதியானது. அண்மைக் கால முக்கிய பதிப்பிற்கு புதுப்பிக்கவும்.",
|
"profile_drawer_server_out_of_date_major": "சேவையகம் காலாவதியானது. அண்மைக் கால முக்கிய பதிப்பிற்கு புதுப்பிக்கவும்.",
|
||||||
"profile_drawer_server_out_of_date_minor": "சேவையகம் காலாவதியானது. அண்மைக் கால சிறிய பதிப்பிற்கு புதுப்பிக்கவும்.",
|
"profile_drawer_server_out_of_date_minor": "சேவையகம் காலாவதியானது. அண்மைக் கால சிறிய பதிப்பிற்கு புதுப்பிக்கவும்.",
|
||||||
"profile_image_of_user": "{பயனரின் சுயவிவரப் படம்",
|
"profile_image_of_user": "{பயனரின் சுயவிவரப் படம்",
|
||||||
@@ -1592,7 +1593,8 @@
|
|||||||
"read_changelog": "சேஞ்ச்லாக் படிக்கவும்",
|
"read_changelog": "சேஞ்ச்லாக் படிக்கவும்",
|
||||||
"readonly_mode_disabled": "படிக்க மட்டும் பயன்முறை முடக்கப்பட்டுள்ளது",
|
"readonly_mode_disabled": "படிக்க மட்டும் பயன்முறை முடக்கப்பட்டுள்ளது",
|
||||||
"readonly_mode_enabled": "படிக்க மட்டும் பயன்முறை இயக்கப்பட்டது",
|
"readonly_mode_enabled": "படிக்க மட்டும் பயன்முறை இயக்கப்பட்டது",
|
||||||
"reassign": "மீண்டும் இணைக்கவும்",
|
"ready_for_upload": "பதிவேற்றத் தயார்",
|
||||||
|
"reassign": "மீண்டும் ஒதுக்கு",
|
||||||
"reassigned_assets_to_existing_person": "மீண்டும் ஒதுக்கப்பட்ட {எண்ணிக்கை, பன்மை, ஒன்று {# சொத்து} பிற {# சொத்துக்கள்}} பெறுநர் {பெயருக்கு, தேர்ந்தெடுக்கவும், சுழிய {an existing person} பிற {{name}}}",
|
"reassigned_assets_to_existing_person": "மீண்டும் ஒதுக்கப்பட்ட {எண்ணிக்கை, பன்மை, ஒன்று {# சொத்து} பிற {# சொத்துக்கள்}} பெறுநர் {பெயருக்கு, தேர்ந்தெடுக்கவும், சுழிய {an existing person} பிற {{name}}}",
|
||||||
"reassigned_assets_to_new_person": "மீண்டும் ஒதுக்கப்பட்ட {எண்ணிக்கை, பன்மை, ஒன்று {# சொத்து} பிற {# சொத்துக்கள்}} ஒரு புதிய நபருக்கு",
|
"reassigned_assets_to_new_person": "மீண்டும் ஒதுக்கப்பட்ட {எண்ணிக்கை, பன்மை, ஒன்று {# சொத்து} பிற {# சொத்துக்கள்}} ஒரு புதிய நபருக்கு",
|
||||||
"reassing_hint": "தேர்ந்தெடுக்கப்பட்ட சொத்துக்களை ஏற்கனவே இருக்கும் நபருக்கு ஒதுக்குங்கள்",
|
"reassing_hint": "தேர்ந்தெடுக்கப்பட்ட சொத்துக்களை ஏற்கனவே இருக்கும் நபருக்கு ஒதுக்குங்கள்",
|
||||||
|
|||||||
+13
-11
@@ -11,14 +11,14 @@
|
|||||||
"activity_changed": "Etkinlik {enabled, select, true {etkin} other {devre dışı}}",
|
"activity_changed": "Etkinlik {enabled, select, true {etkin} other {devre dışı}}",
|
||||||
"add": "Ekle",
|
"add": "Ekle",
|
||||||
"add_a_description": "Açıklama ekle",
|
"add_a_description": "Açıklama ekle",
|
||||||
"add_a_location": "Konum ekle",
|
"add_a_location": "Bir konum ekle",
|
||||||
"add_a_name": "İsim ekle",
|
"add_a_name": "İsim ekle",
|
||||||
"add_a_title": "Başlık ekle",
|
"add_a_title": "Başlık ekle",
|
||||||
"add_birthday": "Doğum günü ekle",
|
"add_birthday": "Doğum günü ekle",
|
||||||
"add_endpoint": "Uç nokta ekle",
|
"add_endpoint": "Uç nokta ekle",
|
||||||
"add_exclusion_pattern": "Hariç tutma deseni ekle",
|
"add_exclusion_pattern": "Hariç tutma deseni ekle",
|
||||||
"add_import_path": "İçe aktarma yolu ekle",
|
"add_import_path": "İçe aktarma yolu ekle",
|
||||||
"add_location": "Lokasyon ekle",
|
"add_location": "Konum ekle",
|
||||||
"add_more_users": "Daha fazla kullanıcı ekle",
|
"add_more_users": "Daha fazla kullanıcı ekle",
|
||||||
"add_partner": "Partner ekle",
|
"add_partner": "Partner ekle",
|
||||||
"add_path": "Yol ekle",
|
"add_path": "Yol ekle",
|
||||||
@@ -91,7 +91,7 @@
|
|||||||
"image_prefer_wide_gamut_setting_description": "Önizleme görseli için P3 renk paletini tercih et. Bu, geniş renk paletli fotoğraflarda renk canlılığını daha iyi korur, fakat fotoğraflar eski tarayıcılarda ve eski cihazlarda daha farklı görünebilir. sRGB fotoğraflar renk paletini korumak için sRGB olarak tutulur.",
|
"image_prefer_wide_gamut_setting_description": "Önizleme görseli için P3 renk paletini tercih et. Bu, geniş renk paletli fotoğraflarda renk canlılığını daha iyi korur, fakat fotoğraflar eski tarayıcılarda ve eski cihazlarda daha farklı görünebilir. sRGB fotoğraflar renk paletini korumak için sRGB olarak tutulur.",
|
||||||
"image_preview_description": "Orta boyutlu görüntü, meta verisi çıkarılmış, tekil bir öğe görüntülenirken ve makine öğrenimi için kullanılır",
|
"image_preview_description": "Orta boyutlu görüntü, meta verisi çıkarılmış, tekil bir öğe görüntülenirken ve makine öğrenimi için kullanılır",
|
||||||
"image_preview_quality_description": "Ön izleme kalitesi 1-100 arasıdır. Yüksek değerler daha iyi kalite sağlar, ancak daha büyük dosyalar üretir ve uygulama yanıt verme hızını düşürebilir. Düşük bir değer belirlemek, makine öğrenimi kalitesini etkileyebilir.",
|
"image_preview_quality_description": "Ön izleme kalitesi 1-100 arasıdır. Yüksek değerler daha iyi kalite sağlar, ancak daha büyük dosyalar üretir ve uygulama yanıt verme hızını düşürebilir. Düşük bir değer belirlemek, makine öğrenimi kalitesini etkileyebilir.",
|
||||||
"image_preview_title": "Ön izleme Ayarları",
|
"image_preview_title": "Ön İzleme Ayarları",
|
||||||
"image_quality": "Kalite",
|
"image_quality": "Kalite",
|
||||||
"image_resolution": "Çözünürlük",
|
"image_resolution": "Çözünürlük",
|
||||||
"image_resolution_description": "Daha yüksek çözünürlükle, daha fazla detayı koruyabilir ancak kodlanması daha uzun sürer, daha büyük dosya boyutlarına sahip olur ve uygulamanın yanıt verme hızını azaltabilir.",
|
"image_resolution_description": "Daha yüksek çözünürlükle, daha fazla detayı koruyabilir ancak kodlanması daha uzun sürer, daha büyük dosya boyutlarına sahip olur ve uygulamanın yanıt verme hızını azaltabilir.",
|
||||||
@@ -105,10 +105,10 @@
|
|||||||
"job_not_concurrency_safe": "Bu işlem eşzamanlama için uygun değil.",
|
"job_not_concurrency_safe": "Bu işlem eşzamanlama için uygun 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",
|
||||||
"job_status": "Görev Statüleri",
|
"job_status": "Görev Durumu",
|
||||||
"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}}",
|
||||||
"library_created": "{library} kütüphanesi oluşturuldu",
|
"library_created": "Oluşturulan kütüphane : {library}",
|
||||||
"library_deleted": "Kütüphane silindi",
|
"library_deleted": "Kütüphane silindi",
|
||||||
"library_import_path_description": "Belirtilecek klasörü içe aktarın. Bu klasör, alt klasörler dahil olmak üzere, görüntüler ve videolar için taranacaktır.",
|
"library_import_path_description": "Belirtilecek klasörü içe aktarın. Bu klasör, alt klasörler dahil olmak üzere, görüntüler ve videolar için taranacaktır.",
|
||||||
"library_scanning": "Periyodik Tarama",
|
"library_scanning": "Periyodik Tarama",
|
||||||
@@ -120,7 +120,7 @@
|
|||||||
"library_watching_enable_description": "Harici kütüphanelerdeki dosya değişikliklerini izle",
|
"library_watching_enable_description": "Harici kütüphanelerdeki dosya değişikliklerini izle",
|
||||||
"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üğü aktifleş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 seviyesi kullanılır.",
|
||||||
"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",
|
||||||
@@ -390,7 +390,7 @@
|
|||||||
"video_conversion_job": "Videoları dönüştür",
|
"video_conversion_job": "Videoları dönüştür",
|
||||||
"video_conversion_job_description": "Tarayıcılar ve cihazlarla daha geniş uyumluluk için videoları dönüştür"
|
"video_conversion_job_description": "Tarayıcılar ve cihazlarla daha geniş uyumluluk için videoları dönüştür"
|
||||||
},
|
},
|
||||||
"admin_email": "Yönetici Emaili",
|
"admin_email": "Yönetici E-postası",
|
||||||
"admin_password": "Yönetici Şifresi",
|
"admin_password": "Yönetici Şifresi",
|
||||||
"administration": "Yönetim",
|
"administration": "Yönetim",
|
||||||
"advanced": "Gelişmiş",
|
"advanced": "Gelişmiş",
|
||||||
@@ -1521,12 +1521,13 @@
|
|||||||
"places_count": "{count, plural, one {{count, number} yer} other {{count, number} yer}}",
|
"places_count": "{count, plural, one {{count, number} yer} other {{count, number} yer}}",
|
||||||
"play": "Oynat",
|
"play": "Oynat",
|
||||||
"play_memories": "Anıları oynat",
|
"play_memories": "Anıları oynat",
|
||||||
"play_motion_photo": "Hareketli fotoğrafı oynat",
|
"play_motion_photo": "Hareketli Fotoğrafı Oynat",
|
||||||
"play_or_pause_video": "Videoyu oynat ya da durdur",
|
"play_or_pause_video": "Videoyu oynat ya da durdur",
|
||||||
"please_auth_to_access": "Erişim için lütfen kimliğinizi doğrulayın",
|
"please_auth_to_access": "Erişim için lütfen kimliğinizi doğrulayın",
|
||||||
"port": "Port",
|
"port": "Port",
|
||||||
"preferences_settings_subtitle": "Uygulama tercihlerini düzenle",
|
"preferences_settings_subtitle": "Uygulama tercihlerini düzenle",
|
||||||
"preferences_settings_title": "Tercihler",
|
"preferences_settings_title": "Tercihler",
|
||||||
|
"preparing": "Hazırlanıyor",
|
||||||
"preset": "Ön ayar",
|
"preset": "Ön ayar",
|
||||||
"preview": "Önizleme",
|
"preview": "Önizleme",
|
||||||
"previous": "Önceki",
|
"previous": "Önceki",
|
||||||
@@ -1592,6 +1593,7 @@
|
|||||||
"read_changelog": "Değişiklik günlüğünü oku",
|
"read_changelog": "Değişiklik günlüğünü oku",
|
||||||
"readonly_mode_disabled": "Salt okunur mod devre dışı",
|
"readonly_mode_disabled": "Salt okunur mod devre dışı",
|
||||||
"readonly_mode_enabled": "Salt okunur mod etkin",
|
"readonly_mode_enabled": "Salt okunur mod etkin",
|
||||||
|
"ready_for_upload": "Yüklemeye hazır",
|
||||||
"reassign": "Yeniden ata",
|
"reassign": "Yeniden ata",
|
||||||
"reassigned_assets_to_existing_person": "{count, plural, one {# öğe} other {# öğeler}} {name, select, null {mevcut bir kişiye} other {{name}}} atandı",
|
"reassigned_assets_to_existing_person": "{count, plural, one {# öğe} other {# öğeler}} {name, select, null {mevcut bir kişiye} other {{name}}} atandı",
|
||||||
"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ı",
|
||||||
@@ -2077,11 +2079,11 @@
|
|||||||
"user_role_set": "{user}, {role} olarak ayarlandı",
|
"user_role_set": "{user}, {role} olarak ayarlandı",
|
||||||
"user_usage_detail": "Kullanıcı kullanım detayı",
|
"user_usage_detail": "Kullanıcı kullanım detayı",
|
||||||
"user_usage_stats": "Hesap kullanım istatistikleri",
|
"user_usage_stats": "Hesap kullanım istatistikleri",
|
||||||
"user_usage_stats_description": "hesap kullanım istatistiklerini göster",
|
"user_usage_stats_description": "Hesap kullanım istatistiklerini göster",
|
||||||
"username": "Kullanıcı adı",
|
"username": "Kullanıcı adı",
|
||||||
"users": "Kullanıcılar",
|
"users": "Kullanıcılar",
|
||||||
"users_added_to_album_count": "Albüme {count, plural, one {# user} other {# users}} eklendi",
|
"users_added_to_album_count": "Albüme {count, plural, one {# user} other {# users}} eklendi",
|
||||||
"utilities": "Yardımcılar",
|
"utilities": "Yardımcı Uygulamalar",
|
||||||
"validate": "Doğrula",
|
"validate": "Doğrula",
|
||||||
"validate_endpoint_error": "Lütfen geçerli bir URL girin",
|
"validate_endpoint_error": "Lütfen geçerli bir URL girin",
|
||||||
"variables": "Değişkenler",
|
"variables": "Değişkenler",
|
||||||
@@ -2091,7 +2093,7 @@
|
|||||||
"version_history": "Sürüm Geçmişi",
|
"version_history": "Sürüm Geçmişi",
|
||||||
"version_history_item": "{version}, {date} tarihinde kuruldu",
|
"version_history_item": "{version}, {date} tarihinde kuruldu",
|
||||||
"video": "Video",
|
"video": "Video",
|
||||||
"video_hover_setting": "Üzerinde durulduğunda video önizlemesi oynat",
|
"video_hover_setting": "Üzerinde durulduğunda video ön izlemesi oynat",
|
||||||
"video_hover_setting_description": "Öğe üzerinde fareyle durulduğunda video küçük resmini oynatır. Bu özellik devre dışıyken, oynatma simgesine fareyle gidilerek oynatma başlatılabilir.",
|
"video_hover_setting_description": "Öğe üzerinde fareyle durulduğunda video küçük resmini oynatır. Bu özellik devre dışıyken, oynatma simgesine fareyle gidilerek oynatma başlatılabilir.",
|
||||||
"videos": "Videolar",
|
"videos": "Videolar",
|
||||||
"videos_count": "{count, plural, one {# video} other {# video}}",
|
"videos_count": "{count, plural, one {# video} other {# video}}",
|
||||||
|
|||||||
+11
-9
@@ -265,7 +265,7 @@
|
|||||||
"server_welcome_message": "Вітальне повідомлення",
|
"server_welcome_message": "Вітальне повідомлення",
|
||||||
"server_welcome_message_description": "Повідомлення, яке відображається на сторінці входу.",
|
"server_welcome_message_description": "Повідомлення, яке відображається на сторінці входу.",
|
||||||
"sidecar_job": "Метадані з sidecar-файлів",
|
"sidecar_job": "Метадані з sidecar-файлів",
|
||||||
"sidecar_job_description": "Виявлення або синхронізація метаданих додатків з файлової системи",
|
"sidecar_job_description": "Пошук або синхронізація сайдкар-метаданих з файлової системи",
|
||||||
"slideshow_duration_description": "Кількість секунд для відображення кожного зображення",
|
"slideshow_duration_description": "Кількість секунд для відображення кожного зображення",
|
||||||
"smart_search_job_description": "Запуск машинного навчання для ресурсів для підтримки розумного пошуку",
|
"smart_search_job_description": "Запуск машинного навчання для ресурсів для підтримки розумного пошуку",
|
||||||
"storage_template_date_time_description": "Позначка часу створення ресурсу використовується для інформації про дату й час",
|
"storage_template_date_time_description": "Позначка часу створення ресурсу використовується для інформації про дату й час",
|
||||||
@@ -347,7 +347,7 @@
|
|||||||
"transcoding_settings": "Налаштування транскодування відео",
|
"transcoding_settings": "Налаштування транскодування відео",
|
||||||
"transcoding_settings_description": "Керування які відео транскодувати і як їх обробляти",
|
"transcoding_settings_description": "Керування які відео транскодувати і як їх обробляти",
|
||||||
"transcoding_target_resolution": "Роздільна здатність",
|
"transcoding_target_resolution": "Роздільна здатність",
|
||||||
"transcoding_target_resolution_description": "Вищі роздільні здатності можуть зберігати більше деталей, але займають більше часу на кодування, мають більші розміри файлів і можуть зменшити швидкість роботи додатку.",
|
"transcoding_target_resolution_description": "Вищі роздільні здатності можуть зберігати більше деталей, але займають більше часу на кодування, мають більші розміри файлів і можуть зменшити швидкість роботи застосунку.",
|
||||||
"transcoding_temporal_aq": "Тимчасове AQ",
|
"transcoding_temporal_aq": "Тимчасове AQ",
|
||||||
"transcoding_temporal_aq_description": "Це застосовується лише до NVENC. Підвищує якість сцен з великою деталізацією та низьким рухом. Може бути несумісним зі старими пристроями.",
|
"transcoding_temporal_aq_description": "Це застосовується лише до NVENC. Підвищує якість сцен з великою деталізацією та низьким рухом. Може бути несумісним зі старими пристроями.",
|
||||||
"transcoding_threads": "Потоки",
|
"transcoding_threads": "Потоки",
|
||||||
@@ -1071,7 +1071,7 @@
|
|||||||
"feature_photo_updated": "Вибране фото оновлено",
|
"feature_photo_updated": "Вибране фото оновлено",
|
||||||
"features": "Додаткові можливості",
|
"features": "Додаткові можливості",
|
||||||
"features_in_development": "Функції в розробці",
|
"features_in_development": "Функції в розробці",
|
||||||
"features_setting_description": "Керування додатковими можливостями додатка",
|
"features_setting_description": "Керування додатковими можливостями застосунку",
|
||||||
"file_name": "Ім'я файлу",
|
"file_name": "Ім'я файлу",
|
||||||
"file_name_or_extension": "Ім'я файлу або розширення",
|
"file_name_or_extension": "Ім'я файлу або розширення",
|
||||||
"filename": "Ім'я файлу",
|
"filename": "Ім'я файлу",
|
||||||
@@ -1137,7 +1137,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": "Якщо ви користуєтеся додатком вперше, будь ласка, оберіть альбом для резервного копіювання, щоб на шкалі часу з’явилися фото та відео",
|
"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": "Неможливо поділитися локальними елементами через посилання, пропущено",
|
||||||
@@ -1499,7 +1499,7 @@
|
|||||||
"permission_onboarding_permission_denied": "Доступ заборонено. Для використання Immich надайте дозволи до \"Фото та відео\" в налаштуваннях.",
|
"permission_onboarding_permission_denied": "Доступ заборонено. Для використання Immich надайте дозволи до \"Фото та відео\" в налаштуваннях.",
|
||||||
"permission_onboarding_permission_granted": "Доступ надано! Все готово.",
|
"permission_onboarding_permission_granted": "Доступ надано! Все готово.",
|
||||||
"permission_onboarding_permission_limited": "Доступ обмежено. Щоби дозволити Immich створювати резервні копії та керувати всією галереєю, надайте дозволи на фото й відео в налаштуваннях.",
|
"permission_onboarding_permission_limited": "Доступ обмежено. Щоби дозволити Immich створювати резервні копії та керувати всією галереєю, надайте дозволи на фото й відео в налаштуваннях.",
|
||||||
"permission_onboarding_request": "Додатку Immich потрібен дозвіл для перегляду ваших фото та відео.",
|
"permission_onboarding_request": "Застосунку Immich потрібен дозвіл для перегляду ваших фото та відео.",
|
||||||
"person": "Людина",
|
"person": "Людина",
|
||||||
"person_age_months": "{months, plural, one {# місяць} other {# місяці}}",
|
"person_age_months": "{months, plural, one {# місяць} other {# місяці}}",
|
||||||
"person_age_year_months": "1 year , {months, plural, one {# місяць} other {# місяці}}",
|
"person_age_year_months": "1 year , {months, plural, one {# місяць} other {# місяці}}",
|
||||||
@@ -1525,8 +1525,9 @@
|
|||||||
"play_or_pause_video": "Відтворення або призупинення відео",
|
"play_or_pause_video": "Відтворення або призупинення відео",
|
||||||
"please_auth_to_access": "Будь ласка, пройдіть автентифікацію",
|
"please_auth_to_access": "Будь ласка, пройдіть автентифікацію",
|
||||||
"port": "Порт",
|
"port": "Порт",
|
||||||
"preferences_settings_subtitle": "Керування налаштуваннями додатку",
|
"preferences_settings_subtitle": "Керування налаштуваннями застосунку",
|
||||||
"preferences_settings_title": "Параметри",
|
"preferences_settings_title": "Параметри",
|
||||||
|
"preparing": "Підготовка",
|
||||||
"preset": "Передвстановлення",
|
"preset": "Передвстановлення",
|
||||||
"preview": "Прев'ю",
|
"preview": "Прев'ю",
|
||||||
"previous": "Попереднє",
|
"previous": "Попереднє",
|
||||||
@@ -1592,6 +1593,7 @@
|
|||||||
"read_changelog": "Прочитати зміни в оновленні",
|
"read_changelog": "Прочитати зміни в оновленні",
|
||||||
"readonly_mode_disabled": "Режим лише для читання вимкнено",
|
"readonly_mode_disabled": "Режим лише для читання вимкнено",
|
||||||
"readonly_mode_enabled": "Режим лише для читання ввімкнено",
|
"readonly_mode_enabled": "Режим лише для читання ввімкнено",
|
||||||
|
"ready_for_upload": "Готово до завантаження",
|
||||||
"reassign": "Перепризначити",
|
"reassign": "Перепризначити",
|
||||||
"reassigned_assets_to_existing_person": "Перепризначено {count, plural, one {# ресурс} few {# ресурси} many {# ресурсів} other {# ресурсів}} {name, select, null {існуючій особі} other {{name}}}",
|
"reassigned_assets_to_existing_person": "Перепризначено {count, plural, one {# ресурс} few {# ресурси} many {# ресурсів} other {# ресурсів}} {name, select, null {існуючій особі} other {{name}}}",
|
||||||
"reassigned_assets_to_new_person": "Перепризначено {count, plural, one {# ресурс} other {# ресурси}} новій особі",
|
"reassigned_assets_to_new_person": "Перепризначено {count, plural, one {# ресурс} other {# ресурси}} новій особі",
|
||||||
@@ -1767,7 +1769,7 @@
|
|||||||
"send_message": "Надіслати повідомлення",
|
"send_message": "Надіслати повідомлення",
|
||||||
"send_welcome_email": "Надішліть вітальний лист",
|
"send_welcome_email": "Надішліть вітальний лист",
|
||||||
"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_offline": "Сервер офлайн",
|
||||||
"server_online": "Сервер онлайн",
|
"server_online": "Сервер онлайн",
|
||||||
@@ -1789,7 +1791,7 @@
|
|||||||
"setting_image_viewer_preview_title": "Завантажувати зображення попереднього перегляду",
|
"setting_image_viewer_preview_title": "Завантажувати зображення попереднього перегляду",
|
||||||
"setting_image_viewer_title": "Зображення",
|
"setting_image_viewer_title": "Зображення",
|
||||||
"setting_languages_apply": "Застосувати",
|
"setting_languages_apply": "Застосувати",
|
||||||
"setting_languages_subtitle": "Змінити мову додатку",
|
"setting_languages_subtitle": "Змінити мову застосунку",
|
||||||
"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": "негайно",
|
||||||
@@ -1975,7 +1977,7 @@
|
|||||||
"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": "Автоматично (як у системі)",
|
||||||
"theme_setting_theme_subtitle": "Налаштування теми додатка",
|
"theme_setting_theme_subtitle": "Налаштування теми застосунку",
|
||||||
"theme_setting_three_stage_loading_subtitle": "Триетапне завантаження може підвищити продуктивність завантаження, але спричинить значно більше навантаження на мережу",
|
"theme_setting_three_stage_loading_subtitle": "Триетапне завантаження може підвищити продуктивність завантаження, але спричинить значно більше навантаження на мережу",
|
||||||
"theme_setting_three_stage_loading_title": "Увімкнути триетапне завантаження",
|
"theme_setting_three_stage_loading_title": "Увімкнути триетапне завантаження",
|
||||||
"they_will_be_merged_together": "Вони будуть об'єднані разом",
|
"they_will_be_merged_together": "Вони будуть об'єднані разом",
|
||||||
|
|||||||
@@ -1527,6 +1527,7 @@
|
|||||||
"port": "端口",
|
"port": "端口",
|
||||||
"preferences_settings_subtitle": "管理应用的偏好设置",
|
"preferences_settings_subtitle": "管理应用的偏好设置",
|
||||||
"preferences_settings_title": "偏好设置",
|
"preferences_settings_title": "偏好设置",
|
||||||
|
"preparing": "准备中",
|
||||||
"preset": "预设",
|
"preset": "预设",
|
||||||
"preview": "预览",
|
"preview": "预览",
|
||||||
"previous": "上一个",
|
"previous": "上一个",
|
||||||
@@ -1592,6 +1593,7 @@
|
|||||||
"read_changelog": "阅读更新日志",
|
"read_changelog": "阅读更新日志",
|
||||||
"readonly_mode_disabled": "只读模式已禁用",
|
"readonly_mode_disabled": "只读模式已禁用",
|
||||||
"readonly_mode_enabled": "只读模式已启用",
|
"readonly_mode_enabled": "只读模式已启用",
|
||||||
|
"ready_for_upload": "准备上传",
|
||||||
"reassign": "重新指派",
|
"reassign": "重新指派",
|
||||||
"reassigned_assets_to_existing_person": "重新指派{count, plural, one {#个项目} other {#个项目}}到{name, select, null {已存在的人物} other {{name}}}",
|
"reassigned_assets_to_existing_person": "重新指派{count, plural, one {#个项目} other {#个项目}}到{name, select, null {已存在的人物} other {{name}}}",
|
||||||
"reassigned_assets_to_new_person": "重新指派{count, plural, one {#个项目} other {#个项目}}到新的人物",
|
"reassigned_assets_to_new_person": "重新指派{count, plural, one {#个项目} other {#个项目}}到新的人物",
|
||||||
|
|||||||
+1
-1
@@ -47,7 +47,7 @@ class BackgroundWorkerApiImpl(context: Context) : BackgroundWorkerFgHostApi {
|
|||||||
addContentUriTrigger(MediaStore.Video.Media.INTERNAL_CONTENT_URI, true)
|
addContentUriTrigger(MediaStore.Video.Media.INTERNAL_CONTENT_URI, true)
|
||||||
addContentUriTrigger(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, true)
|
addContentUriTrigger(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, true)
|
||||||
setTriggerContentUpdateDelay(settings.minimumDelaySeconds, TimeUnit.SECONDS)
|
setTriggerContentUpdateDelay(settings.minimumDelaySeconds, TimeUnit.SECONDS)
|
||||||
setTriggerContentMaxDelay(settings.minimumDelaySeconds * 10, TimeUnit.MINUTES)
|
setTriggerContentMaxDelay(settings.minimumDelaySeconds * 10, TimeUnit.SECONDS)
|
||||||
setRequiresCharging(settings.requiresCharging)
|
setRequiresCharging(settings.requiresCharging)
|
||||||
}.build()
|
}.build()
|
||||||
|
|
||||||
|
|||||||
+34
-32
@@ -5,45 +5,47 @@ import android.content.SharedPreferences
|
|||||||
import androidx.core.content.edit
|
import androidx.core.content.edit
|
||||||
|
|
||||||
class BackgroundWorkerPreferences(private val ctx: Context) {
|
class BackgroundWorkerPreferences(private val ctx: Context) {
|
||||||
companion object {
|
companion object {
|
||||||
const val SHARED_PREF_NAME = "Immich::BackgroundWorker"
|
const val SHARED_PREF_NAME = "Immich::BackgroundWorker"
|
||||||
private const val SHARED_PREF_MIN_DELAY_KEY = "BackgroundWorker::minDelaySeconds"
|
private const val SHARED_PREF_MIN_DELAY_KEY = "BackgroundWorker::minDelaySeconds"
|
||||||
private const val SHARED_PREF_REQUIRE_CHARGING_KEY = "BackgroundWorker::requireCharging"
|
private const val SHARED_PREF_REQUIRE_CHARGING_KEY = "BackgroundWorker::requireCharging"
|
||||||
private const val SHARED_PREF_LOCK_KEY = "BackgroundWorker::isLocked"
|
private const val SHARED_PREF_LOCK_KEY = "BackgroundWorker::isLocked"
|
||||||
|
|
||||||
private const val DEFAULT_MIN_DELAY_SECONDS = 30L
|
private const val DEFAULT_MIN_DELAY_SECONDS = 30L
|
||||||
private const val DEFAULT_REQUIRE_CHARGING = false
|
private const val DEFAULT_REQUIRE_CHARGING = false
|
||||||
}
|
}
|
||||||
|
|
||||||
private val sp: SharedPreferences by lazy {
|
private val sp: SharedPreferences by lazy {
|
||||||
ctx.getSharedPreferences(SHARED_PREF_NAME, Context.MODE_PRIVATE)
|
ctx.getSharedPreferences(SHARED_PREF_NAME, Context.MODE_PRIVATE)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun updateSettings(settings: BackgroundWorkerSettings) {
|
fun updateSettings(settings: BackgroundWorkerSettings) {
|
||||||
sp.edit {
|
sp.edit {
|
||||||
putLong(SHARED_PREF_MIN_DELAY_KEY, settings.minimumDelaySeconds)
|
putLong(SHARED_PREF_MIN_DELAY_KEY, settings.minimumDelaySeconds)
|
||||||
putBoolean(SHARED_PREF_REQUIRE_CHARGING_KEY, settings.requiresCharging)
|
putBoolean(SHARED_PREF_REQUIRE_CHARGING_KEY, settings.requiresCharging)
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fun getSettings(): BackgroundWorkerSettings {
|
fun getSettings(): BackgroundWorkerSettings {
|
||||||
return BackgroundWorkerSettings(
|
val delaySeconds = sp.getLong(SHARED_PREF_MIN_DELAY_KEY, DEFAULT_MIN_DELAY_SECONDS)
|
||||||
minimumDelaySeconds = sp.getLong(SHARED_PREF_MIN_DELAY_KEY, DEFAULT_MIN_DELAY_SECONDS),
|
|
||||||
requiresCharging = sp.getBoolean(
|
|
||||||
SHARED_PREF_REQUIRE_CHARGING_KEY,
|
|
||||||
DEFAULT_REQUIRE_CHARGING
|
|
||||||
),
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun setLocked(paused: Boolean) {
|
return BackgroundWorkerSettings(
|
||||||
sp.edit {
|
minimumDelaySeconds = if (delaySeconds >= 1000) delaySeconds / 1000 else delaySeconds,
|
||||||
putBoolean(SHARED_PREF_LOCK_KEY, paused)
|
requiresCharging = sp.getBoolean(
|
||||||
}
|
SHARED_PREF_REQUIRE_CHARGING_KEY,
|
||||||
}
|
DEFAULT_REQUIRE_CHARGING
|
||||||
|
),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
fun isLocked(): Boolean {
|
fun setLocked(paused: Boolean) {
|
||||||
return sp.getBoolean(SHARED_PREF_LOCK_KEY, true)
|
sp.edit {
|
||||||
|
putBoolean(SHARED_PREF_LOCK_KEY, paused)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun isLocked(): Boolean {
|
||||||
|
return sp.getBoolean(SHARED_PREF_LOCK_KEY, true)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
allprojects {
|
allprojects {
|
||||||
ext.kotlin_version = '2.0.20'
|
ext.kotlin_version = '2.2.20'
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
google()
|
google()
|
||||||
@@ -16,8 +16,8 @@ subprojects {
|
|||||||
if (project.plugins.hasPlugin("com.android.application") ||
|
if (project.plugins.hasPlugin("com.android.application") ||
|
||||||
project.plugins.hasPlugin("com.android.library")) {
|
project.plugins.hasPlugin("com.android.library")) {
|
||||||
project.android {
|
project.android {
|
||||||
compileSdkVersion 35
|
compileSdkVersion 36
|
||||||
buildToolsVersion "35.0.0"
|
buildToolsVersion "36.0.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,8 +35,8 @@ platform :android do
|
|||||||
task: 'bundle',
|
task: 'bundle',
|
||||||
build_type: 'Release',
|
build_type: 'Release',
|
||||||
properties: {
|
properties: {
|
||||||
"android.injected.version.code" => 3016,
|
"android.injected.version.code" => 3017,
|
||||||
"android.injected.version.name" => "1.143.0",
|
"android.injected.version.name" => "1.143.1",
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
upload_to_play_store(skip_upload_apk: true, skip_upload_images: true, skip_upload_screenshots: true, aab: '../build/app/outputs/bundle/release/app-release.aab')
|
upload_to_play_store(skip_upload_apk: true, skip_upload_images: true, skip_upload_screenshots: true, aab: '../build/app/outputs/bundle/release/app-release.aab')
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-all.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-all.zip
|
||||||
networkTimeout=10000
|
networkTimeout=10000
|
||||||
validateDistributionUrl=true
|
validateDistributionUrl=true
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
|
|||||||
@@ -18,10 +18,10 @@ pluginManagement {
|
|||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
|
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
|
||||||
id "com.android.application" version '8.7.2' apply false
|
id "com.android.application" version '8.11.2' apply false
|
||||||
id "org.jetbrains.kotlin.android" version "2.0.20" apply false
|
id "org.jetbrains.kotlin.android" version "2.2.20" apply false
|
||||||
id 'org.jetbrains.kotlin.plugin.serialization' version '1.9.22' apply false
|
id 'org.jetbrains.kotlin.plugin.serialization' version '1.9.22' apply false
|
||||||
id 'com.google.devtools.ksp' version '2.0.20-1.0.24' apply false
|
id 'com.google.devtools.ksp' version '2.2.20-2.0.3' apply false
|
||||||
}
|
}
|
||||||
|
|
||||||
include ":app"
|
include ":app"
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ platform :ios do
|
|||||||
path: "./Runner.xcodeproj",
|
path: "./Runner.xcodeproj",
|
||||||
)
|
)
|
||||||
increment_version_number(
|
increment_version_number(
|
||||||
version_number: "1.143.0"
|
version_number: "1.143.1"
|
||||||
)
|
)
|
||||||
increment_build_number(
|
increment_build_number(
|
||||||
build_number: latest_testflight_build_number + 1,
|
build_number: latest_testflight_build_number + 1,
|
||||||
|
|||||||
@@ -70,9 +70,6 @@ enum StoreKey<T> {
|
|||||||
// Read-only Mode settings
|
// Read-only Mode settings
|
||||||
readonlyModeEnabled<bool>._(138),
|
readonlyModeEnabled<bool>._(138),
|
||||||
|
|
||||||
// Album grid/list view settings
|
|
||||||
albumGridView<bool>._(139),
|
|
||||||
|
|
||||||
// Experimental stuff
|
// Experimental stuff
|
||||||
photoManagerCustomFilter<bool>._(1000),
|
photoManagerCustomFilter<bool>._(1000),
|
||||||
betaPromptShown<bool>._(1001),
|
betaPromptShown<bool>._(1001),
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ import 'package:immich_mobile/providers/infrastructure/db.provider.dart';
|
|||||||
import 'package:immich_mobile/providers/infrastructure/platform.provider.dart';
|
import 'package:immich_mobile/providers/infrastructure/platform.provider.dart';
|
||||||
import 'package:immich_mobile/providers/infrastructure/readonly_mode.provider.dart';
|
import 'package:immich_mobile/providers/infrastructure/readonly_mode.provider.dart';
|
||||||
import 'package:immich_mobile/providers/websocket.provider.dart';
|
import 'package:immich_mobile/providers/websocket.provider.dart';
|
||||||
|
import 'package:immich_mobile/services/app_settings.service.dart';
|
||||||
import 'package:immich_mobile/services/background.service.dart';
|
import 'package:immich_mobile/services/background.service.dart';
|
||||||
import 'package:immich_mobile/utils/migration.dart';
|
import 'package:immich_mobile/utils/migration.dart';
|
||||||
import 'package:logging/logging.dart';
|
import 'package:logging/logging.dart';
|
||||||
@@ -93,6 +94,10 @@ class _ChangeExperiencePageState extends ConsumerState<ChangeExperiencePage> {
|
|||||||
|
|
||||||
await ref.read(driftProvider).reset();
|
await ref.read(driftProvider).reset();
|
||||||
await Store.put(StoreKey.shouldResetSync, true);
|
await Store.put(StoreKey.shouldResetSync, true);
|
||||||
|
final delay = Store.get(StoreKey.backupTriggerDelay, AppSettingsEnum.backupTriggerDelay.defaultValue);
|
||||||
|
if (delay >= 1000) {
|
||||||
|
await Store.put(StoreKey.backupTriggerDelay, (delay / 1000).toInt());
|
||||||
|
}
|
||||||
final permission = await ref.read(galleryPermissionNotifier.notifier).requestGalleryPermission();
|
final permission = await ref.read(galleryPermissionNotifier.notifier).requestGalleryPermission();
|
||||||
|
|
||||||
if (permission.isGranted) {
|
if (permission.isGranted) {
|
||||||
|
|||||||
@@ -18,9 +18,6 @@ import 'package:immich_mobile/providers/infrastructure/album.provider.dart';
|
|||||||
import 'package:immich_mobile/providers/infrastructure/current_album.provider.dart';
|
import 'package:immich_mobile/providers/infrastructure/current_album.provider.dart';
|
||||||
import 'package:immich_mobile/providers/timeline/multiselect.provider.dart';
|
import 'package:immich_mobile/providers/timeline/multiselect.provider.dart';
|
||||||
import 'package:immich_mobile/providers/user.provider.dart';
|
import 'package:immich_mobile/providers/user.provider.dart';
|
||||||
import 'package:immich_mobile/providers/album/album_sort_by_options.provider.dart';
|
|
||||||
import 'package:immich_mobile/providers/app_settings.provider.dart';
|
|
||||||
import 'package:immich_mobile/services/app_settings.service.dart';
|
|
||||||
import 'package:immich_mobile/routing/router.dart';
|
import 'package:immich_mobile/routing/router.dart';
|
||||||
import 'package:immich_mobile/utils/album_filter.utils.dart';
|
import 'package:immich_mobile/utils/album_filter.utils.dart';
|
||||||
import 'package:immich_mobile/widgets/common/confirm_dialog.dart';
|
import 'package:immich_mobile/widgets/common/confirm_dialog.dart';
|
||||||
@@ -55,22 +52,8 @@ class _AlbumSelectorState extends ConsumerState<AlbumSelector> {
|
|||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
|
|
||||||
|
// Load albums when component mounts
|
||||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||||
final appSettings = ref.read(appSettingsServiceProvider);
|
|
||||||
final savedSortMode = appSettings.getSetting(AppSettingsEnum.selectedAlbumSortOrder);
|
|
||||||
final savedIsReverse = appSettings.getSetting(AppSettingsEnum.selectedAlbumSortReverse);
|
|
||||||
final savedIsGrid = appSettings.getSetting(AppSettingsEnum.albumGridView);
|
|
||||||
|
|
||||||
final albumSortMode = AlbumSortMode.values.firstWhere(
|
|
||||||
(e) => e.storeIndex == savedSortMode,
|
|
||||||
orElse: () => AlbumSortMode.lastModified,
|
|
||||||
);
|
|
||||||
|
|
||||||
setState(() {
|
|
||||||
sort = AlbumSort(mode: toRemoteAlbumSortMode(albumSortMode), isReverse: savedIsReverse);
|
|
||||||
isGrid = savedIsGrid;
|
|
||||||
});
|
|
||||||
|
|
||||||
ref.read(remoteAlbumProvider.notifier).refresh();
|
ref.read(remoteAlbumProvider.notifier).refresh();
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -100,7 +83,6 @@ class _AlbumSelectorState extends ConsumerState<AlbumSelector> {
|
|||||||
setState(() {
|
setState(() {
|
||||||
isGrid = !isGrid;
|
isGrid = !isGrid;
|
||||||
});
|
});
|
||||||
ref.read(appSettingsServiceProvider).setSetting(AppSettingsEnum.albumGridView, isGrid);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void changeFilter(QuickFilterMode mode) {
|
void changeFilter(QuickFilterMode mode) {
|
||||||
@@ -116,11 +98,6 @@ class _AlbumSelectorState extends ConsumerState<AlbumSelector> {
|
|||||||
this.sort = sort;
|
this.sort = sort;
|
||||||
});
|
});
|
||||||
|
|
||||||
final appSettings = ref.read(appSettingsServiceProvider);
|
|
||||||
final albumSortMode = toAlbumSortMode(sort.mode);
|
|
||||||
await appSettings.setSetting(AppSettingsEnum.selectedAlbumSortOrder, albumSortMode.storeIndex);
|
|
||||||
await appSettings.setSetting(AppSettingsEnum.selectedAlbumSortReverse, sort.isReverse);
|
|
||||||
|
|
||||||
await sortAlbums();
|
await sortAlbums();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -205,8 +182,6 @@ class _AlbumSelectorState extends ConsumerState<AlbumSelector> {
|
|||||||
onToggleViewMode: toggleViewMode,
|
onToggleViewMode: toggleViewMode,
|
||||||
onSortChanged: changeSort,
|
onSortChanged: changeSort,
|
||||||
controller: menuController,
|
controller: menuController,
|
||||||
currentSortMode: sort.mode,
|
|
||||||
currentIsReverse: sort.isReverse,
|
|
||||||
),
|
),
|
||||||
isGrid
|
isGrid
|
||||||
? _AlbumGrid(albums: shownAlbums, userId: userId, onAlbumSelected: widget.onAlbumSelected)
|
? _AlbumGrid(albums: shownAlbums, userId: userId, onAlbumSelected: widget.onAlbumSelected)
|
||||||
@@ -218,45 +193,20 @@ class _AlbumSelectorState extends ConsumerState<AlbumSelector> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class _SortButton extends ConsumerStatefulWidget {
|
class _SortButton extends ConsumerStatefulWidget {
|
||||||
const _SortButton(
|
const _SortButton(this.onSortChanged, {this.controller});
|
||||||
this.onSortChanged, {
|
|
||||||
required this.initialSortMode,
|
|
||||||
required this.initialIsReverse,
|
|
||||||
this.controller,
|
|
||||||
});
|
|
||||||
|
|
||||||
final Future<void> Function(AlbumSort) onSortChanged;
|
final Future<void> Function(AlbumSort) onSortChanged;
|
||||||
final MenuController? controller;
|
final MenuController? controller;
|
||||||
final RemoteAlbumSortMode initialSortMode;
|
|
||||||
final bool initialIsReverse;
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
ConsumerState<_SortButton> createState() => _SortButtonState();
|
ConsumerState<_SortButton> createState() => _SortButtonState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _SortButtonState extends ConsumerState<_SortButton> {
|
class _SortButtonState extends ConsumerState<_SortButton> {
|
||||||
late RemoteAlbumSortMode albumSortOption;
|
RemoteAlbumSortMode albumSortOption = RemoteAlbumSortMode.lastModified;
|
||||||
late bool albumSortIsReverse;
|
bool albumSortIsReverse = true;
|
||||||
bool isSorting = false;
|
bool isSorting = false;
|
||||||
|
|
||||||
@override
|
|
||||||
void initState() {
|
|
||||||
super.initState();
|
|
||||||
albumSortOption = widget.initialSortMode;
|
|
||||||
albumSortIsReverse = widget.initialIsReverse;
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
void didUpdateWidget(_SortButton oldWidget) {
|
|
||||||
super.didUpdateWidget(oldWidget);
|
|
||||||
if (oldWidget.initialSortMode != widget.initialSortMode || oldWidget.initialIsReverse != widget.initialIsReverse) {
|
|
||||||
setState(() {
|
|
||||||
albumSortOption = widget.initialSortMode;
|
|
||||||
albumSortIsReverse = widget.initialIsReverse;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<void> onMenuTapped(RemoteAlbumSortMode sortMode) async {
|
Future<void> onMenuTapped(RemoteAlbumSortMode sortMode) async {
|
||||||
final selected = albumSortOption == sortMode;
|
final selected = albumSortOption == sortMode;
|
||||||
// Switch direction
|
// Switch direction
|
||||||
@@ -516,8 +466,6 @@ class _QuickSortAndViewMode extends StatelessWidget {
|
|||||||
required this.isGrid,
|
required this.isGrid,
|
||||||
required this.onToggleViewMode,
|
required this.onToggleViewMode,
|
||||||
required this.onSortChanged,
|
required this.onSortChanged,
|
||||||
required this.currentSortMode,
|
|
||||||
required this.currentIsReverse,
|
|
||||||
this.controller,
|
this.controller,
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -525,8 +473,6 @@ class _QuickSortAndViewMode extends StatelessWidget {
|
|||||||
final VoidCallback onToggleViewMode;
|
final VoidCallback onToggleViewMode;
|
||||||
final MenuController? controller;
|
final MenuController? controller;
|
||||||
final Future<void> Function(AlbumSort) onSortChanged;
|
final Future<void> Function(AlbumSort) onSortChanged;
|
||||||
final RemoteAlbumSortMode currentSortMode;
|
|
||||||
final bool currentIsReverse;
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
@@ -536,12 +482,7 @@ class _QuickSortAndViewMode extends StatelessWidget {
|
|||||||
child: Row(
|
child: Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
children: [
|
children: [
|
||||||
_SortButton(
|
_SortButton(onSortChanged, controller: controller),
|
||||||
onSortChanged,
|
|
||||||
controller: controller,
|
|
||||||
initialSortMode: currentSortMode,
|
|
||||||
initialIsReverse: currentIsReverse,
|
|
||||||
),
|
|
||||||
IconButton(
|
IconButton(
|
||||||
icon: Icon(isGrid ? Icons.view_list_outlined : Icons.grid_view_outlined, size: 24),
|
icon: Icon(isGrid ? Icons.view_list_outlined : Icons.grid_view_outlined, size: 24),
|
||||||
onPressed: onToggleViewMode,
|
onPressed: onToggleViewMode,
|
||||||
|
|||||||
@@ -50,8 +50,6 @@ enum AppSettingsEnum<T> {
|
|||||||
enableBackup<bool>(StoreKey.enableBackup, null, false),
|
enableBackup<bool>(StoreKey.enableBackup, null, false),
|
||||||
useCellularForUploadVideos<bool>(StoreKey.useWifiForUploadVideos, null, false),
|
useCellularForUploadVideos<bool>(StoreKey.useWifiForUploadVideos, null, false),
|
||||||
useCellularForUploadPhotos<bool>(StoreKey.useWifiForUploadPhotos, null, false),
|
useCellularForUploadPhotos<bool>(StoreKey.useWifiForUploadPhotos, null, false),
|
||||||
readonlyModeEnabled<bool>(StoreKey.readonlyModeEnabled, "readonlyModeEnabled", false),
|
|
||||||
albumGridView<bool>(StoreKey.albumGridView, "albumGridView", false);
|
|
||||||
backupRequireCharging<bool>(StoreKey.backupRequireCharging, null, false),
|
backupRequireCharging<bool>(StoreKey.backupRequireCharging, null, false),
|
||||||
backupTriggerDelay<int>(StoreKey.backupTriggerDelay, null, 30),
|
backupTriggerDelay<int>(StoreKey.backupTriggerDelay, null, 30),
|
||||||
readonlyModeEnabled<bool>(StoreKey.readonlyModeEnabled, "readonlyModeEnabled", false);
|
readonlyModeEnabled<bool>(StoreKey.readonlyModeEnabled, "readonlyModeEnabled", false);
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import 'package:immich_mobile/domain/services/remote_album.service.dart';
|
import 'package:immich_mobile/domain/services/remote_album.service.dart';
|
||||||
import 'package:immich_mobile/models/albums/album_search.model.dart';
|
import 'package:immich_mobile/models/albums/album_search.model.dart';
|
||||||
import 'package:immich_mobile/providers/album/album_sort_by_options.provider.dart';
|
|
||||||
|
|
||||||
class AlbumFilter {
|
class AlbumFilter {
|
||||||
String? userId;
|
String? userId;
|
||||||
@@ -24,37 +23,3 @@ class AlbumSort {
|
|||||||
return AlbumSort(mode: mode ?? this.mode, isReverse: isReverse ?? this.isReverse);
|
return AlbumSort(mode: mode ?? this.mode, isReverse: isReverse ?? this.isReverse);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
RemoteAlbumSortMode toRemoteAlbumSortMode(AlbumSortMode mode) {
|
|
||||||
switch (mode) {
|
|
||||||
case AlbumSortMode.title:
|
|
||||||
return RemoteAlbumSortMode.title;
|
|
||||||
case AlbumSortMode.assetCount:
|
|
||||||
return RemoteAlbumSortMode.assetCount;
|
|
||||||
case AlbumSortMode.lastModified:
|
|
||||||
return RemoteAlbumSortMode.lastModified;
|
|
||||||
case AlbumSortMode.created:
|
|
||||||
return RemoteAlbumSortMode.created;
|
|
||||||
case AlbumSortMode.mostRecent:
|
|
||||||
return RemoteAlbumSortMode.mostRecent;
|
|
||||||
case AlbumSortMode.mostOldest:
|
|
||||||
return RemoteAlbumSortMode.mostOldest;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
AlbumSortMode toAlbumSortMode(RemoteAlbumSortMode mode) {
|
|
||||||
switch (mode) {
|
|
||||||
case RemoteAlbumSortMode.title:
|
|
||||||
return AlbumSortMode.title;
|
|
||||||
case RemoteAlbumSortMode.assetCount:
|
|
||||||
return AlbumSortMode.assetCount;
|
|
||||||
case RemoteAlbumSortMode.lastModified:
|
|
||||||
return AlbumSortMode.lastModified;
|
|
||||||
case RemoteAlbumSortMode.created:
|
|
||||||
return AlbumSortMode.created;
|
|
||||||
case RemoteAlbumSortMode.mostRecent:
|
|
||||||
return AlbumSortMode.mostRecent;
|
|
||||||
case RemoteAlbumSortMode.mostOldest:
|
|
||||||
return AlbumSortMode.mostOldest;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -22,13 +22,14 @@ import 'package:immich_mobile/infrastructure/entities/store.entity.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/repositories/db.repository.dart';
|
import 'package:immich_mobile/infrastructure/repositories/db.repository.dart';
|
||||||
import 'package:immich_mobile/infrastructure/repositories/sync_stream.repository.dart';
|
import 'package:immich_mobile/infrastructure/repositories/sync_stream.repository.dart';
|
||||||
|
import 'package:immich_mobile/services/app_settings.service.dart';
|
||||||
import 'package:immich_mobile/utils/debug_print.dart';
|
import 'package:immich_mobile/utils/debug_print.dart';
|
||||||
import 'package:immich_mobile/utils/diff.dart';
|
import 'package:immich_mobile/utils/diff.dart';
|
||||||
import 'package:isar/isar.dart';
|
import 'package:isar/isar.dart';
|
||||||
// ignore: import_rule_photo_manager
|
// ignore: import_rule_photo_manager
|
||||||
import 'package:photo_manager/photo_manager.dart';
|
import 'package:photo_manager/photo_manager.dart';
|
||||||
|
|
||||||
const int targetVersion = 16;
|
const int targetVersion = 17;
|
||||||
|
|
||||||
Future<void> migrateDatabaseIfNeeded(Isar db, Drift drift) async {
|
Future<void> migrateDatabaseIfNeeded(Isar db, Drift drift) async {
|
||||||
final hasVersion = Store.tryGet(StoreKey.version) != null;
|
final hasVersion = Store.tryGet(StoreKey.version) != null;
|
||||||
@@ -64,6 +65,13 @@ Future<void> migrateDatabaseIfNeeded(Isar db, Drift drift) async {
|
|||||||
|
|
||||||
await handleBetaMigration(version, await _isNewInstallation(db, drift), SyncStreamRepository(drift));
|
await handleBetaMigration(version, await _isNewInstallation(db, drift), SyncStreamRepository(drift));
|
||||||
|
|
||||||
|
if (version < 17 && Store.isBetaTimelineEnabled) {
|
||||||
|
final delay = Store.get(StoreKey.backupTriggerDelay, AppSettingsEnum.backupTriggerDelay.defaultValue);
|
||||||
|
if (delay >= 1000) {
|
||||||
|
await Store.put(StoreKey.backupTriggerDelay, (delay / 1000).toInt());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (targetVersion >= 12) {
|
if (targetVersion >= 12) {
|
||||||
await Store.put(StoreKey.version, targetVersion);
|
await Store.put(StoreKey.version, targetVersion);
|
||||||
return;
|
return;
|
||||||
|
|||||||
Generated
+1
-1
@@ -3,7 +3,7 @@ Immich API
|
|||||||
|
|
||||||
This Dart package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
|
This Dart package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
|
||||||
|
|
||||||
- API version: 1.143.0
|
- API version: 1.143.1
|
||||||
- Generator version: 7.8.0
|
- Generator version: 7.8.0
|
||||||
- Build package: org.openapitools.codegen.languages.DartClientCodegen
|
- Build package: org.openapitools.codegen.languages.DartClientCodegen
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -1208,8 +1208,8 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
path: "."
|
path: "."
|
||||||
ref: "5459d54"
|
ref: "893894b"
|
||||||
resolved-ref: "5459d54cdc1cf4d99e2193b310052f1ebb5dcf43"
|
resolved-ref: "893894b98b832be8a995a8d5d4c2289d0ad2d246"
|
||||||
url: "https://github.com/immich-app/native_video_player"
|
url: "https://github.com/immich-app/native_video_player"
|
||||||
source: git
|
source: git
|
||||||
version: "1.3.1"
|
version: "1.3.1"
|
||||||
|
|||||||
+2
-2
@@ -2,7 +2,7 @@ name: immich_mobile
|
|||||||
description: Immich - selfhosted backup media file on mobile phone
|
description: Immich - selfhosted backup media file on mobile phone
|
||||||
|
|
||||||
publish_to: 'none'
|
publish_to: 'none'
|
||||||
version: 1.143.0+3016
|
version: 1.143.1+3017
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: '>=3.8.0 <4.0.0'
|
sdk: '>=3.8.0 <4.0.0'
|
||||||
@@ -77,7 +77,7 @@ dependencies:
|
|||||||
native_video_player:
|
native_video_player:
|
||||||
git:
|
git:
|
||||||
url: https://github.com/immich-app/native_video_player
|
url: https://github.com/immich-app/native_video_player
|
||||||
ref: '5459d54'
|
ref: '893894b'
|
||||||
openapi:
|
openapi:
|
||||||
path: openapi
|
path: openapi
|
||||||
isar:
|
isar:
|
||||||
|
|||||||
@@ -9858,7 +9858,7 @@
|
|||||||
"info": {
|
"info": {
|
||||||
"title": "Immich",
|
"title": "Immich",
|
||||||
"description": "Immich API",
|
"description": "Immich API",
|
||||||
"version": "1.143.0",
|
"version": "1.143.1",
|
||||||
"contact": {}
|
"contact": {}
|
||||||
},
|
},
|
||||||
"tags": [],
|
"tags": [],
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@immich/sdk",
|
"name": "@immich/sdk",
|
||||||
"version": "1.143.0",
|
"version": "1.143.1",
|
||||||
"description": "Auto-generated TypeScript SDK for the Immich API",
|
"description": "Auto-generated TypeScript SDK for the Immich API",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "./build/index.js",
|
"main": "./build/index.js",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Immich
|
* Immich
|
||||||
* 1.143.0
|
* 1.143.1
|
||||||
* DO NOT MODIFY - This file has been generated using oazapfts.
|
* DO NOT MODIFY - This file has been generated using oazapfts.
|
||||||
* See https://www.npmjs.com/package/oazapfts
|
* See https://www.npmjs.com/package/oazapfts
|
||||||
*/
|
*/
|
||||||
|
|||||||
Generated
-869
File diff suppressed because it is too large
Load Diff
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
echo "Initializing Immich $IMMICH_SOURCE_REF"
|
echo "Initializing Immich $IMMICH_SOURCE_REF"
|
||||||
|
|
||||||
lib_path="/usr/lib/$(arch)-linux-gnu/libmimalloc.so.2"
|
lib_path="/usr/lib/$(arch)-linux-gnu/libmimalloc.so.3"
|
||||||
if [ -f "$lib_path" ]; then
|
if [ -f "$lib_path" ]; then
|
||||||
export LD_PRELOAD="$lib_path"
|
export LD_PRELOAD="$lib_path"
|
||||||
else
|
else
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "immich",
|
"name": "immich",
|
||||||
"version": "1.143.0",
|
"version": "1.143.1",
|
||||||
"description": "",
|
"description": "",
|
||||||
"author": "",
|
"author": "",
|
||||||
"private": true,
|
"private": true,
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "immich-web",
|
"name": "immich-web",
|
||||||
"version": "1.143.0",
|
"version": "1.143.1",
|
||||||
"license": "GNU Affero General Public License version 3",
|
"license": "GNU Affero General Public License version 3",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
Reference in New Issue
Block a user