Merge gallery_rewrite
This commit is contained in:
@@ -44,8 +44,7 @@ jobs:
|
||||
# If triggered by a tag, checkout photosd-$tag from the source
|
||||
# repository. Otherwise checkout $source (default: "main").
|
||||
repository: ente-io/ente
|
||||
ref:
|
||||
"${{ startsWith(github.ref, 'refs/tags/v') &&
|
||||
ref: "${{ startsWith(github.ref, 'refs/tags/v') &&
|
||||
format('photosd-{0}', github.ref_name) || ( inputs.source
|
||||
|| 'main' ) }}"
|
||||
|
||||
@@ -110,8 +109,7 @@ jobs:
|
||||
env:
|
||||
# macOS notarization credentials key details
|
||||
APPLE_ID: ${{ secrets.APPLE_ID }}
|
||||
APPLE_APP_SPECIFIC_PASSWORD:
|
||||
${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }}
|
||||
APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }}
|
||||
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
|
||||
# Windows Azure Trusted Signing related values
|
||||
# https://www.electron.build/code-signing-win#using-azure-trusted-signing-beta
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
{
|
||||
"tabWidth": 4,
|
||||
"proseWrap": "always",
|
||||
"objectWrap": "collapse",
|
||||
"plugins": [
|
||||
"prettier-plugin-organize-imports",
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
{
|
||||
"tabWidth": 4,
|
||||
"proseWrap": "always"
|
||||
"tabWidth": 4
|
||||
}
|
||||
|
||||
@@ -342,13 +342,17 @@ export const sidebar = [
|
||||
text: "General",
|
||||
link: "/self-hosting/troubleshooting/misc",
|
||||
},
|
||||
{
|
||||
text: "Docker / quickstart",
|
||||
link: "/self-hosting/troubleshooting/docker",
|
||||
},
|
||||
{
|
||||
text: "Uploads",
|
||||
link: "/self-hosting/troubleshooting/uploads",
|
||||
},
|
||||
{
|
||||
text: "Docker / quickstart",
|
||||
link: "/self-hosting/troubleshooting/docker",
|
||||
text: "Ente CLI",
|
||||
link: "/self-hosting/troubleshooting/cli",
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Migrating to Ente Auth
|
||||
description:
|
||||
Guides for migrating your existing 2FA tokens into or out of Ente Auth
|
||||
description: Guides for migrating your existing 2FA tokens into or out of Ente Auth
|
||||
---
|
||||
|
||||
# Migrating to/from Ente Auth
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Desktop app FAQ
|
||||
description:
|
||||
An assortment of frequently asked questions about Ente Photos desktop app
|
||||
description: An assortment of frequently asked questions about Ente Photos desktop app
|
||||
---
|
||||
|
||||
# Desktop app FAQ
|
||||
|
||||
@@ -67,7 +67,7 @@ reliable as any one can be.
|
||||
If you would like to fund the development of this project, please consider
|
||||
[subscribing](https://ente.io/download).
|
||||
|
||||
## How do I pronounce ente?
|
||||
## How do I pronounce Ente?
|
||||
|
||||
It's like cafe 😊. kaf-_ay_. en-_tay_.
|
||||
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Security and Privacy FAQ
|
||||
description:
|
||||
Comprehensive information about security and privacy measures in Ente Photos
|
||||
description: Comprehensive information about security and privacy measures in Ente Photos
|
||||
---
|
||||
|
||||
# Security and Privacy FAQ
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Cast
|
||||
description:
|
||||
Casting your photos on to a large screen or a TV or a Chromecast device
|
||||
description: Casting your photos on to a large screen or a TV or a Chromecast device
|
||||
---
|
||||
|
||||
# Cast
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Family plans
|
||||
description:
|
||||
Share your Ente Photos plan with your family members with no extra cost
|
||||
description: Share your Ente Photos plan with your family members with no extra cost
|
||||
---
|
||||
|
||||
# Family plans
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Watch folder
|
||||
description:
|
||||
Automatic syncing of selected folders using the Ente Photos desktop app
|
||||
description: Automatic syncing of selected folders using the Ente Photos desktop app
|
||||
---
|
||||
|
||||
# Watch folders
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Import from local hard disk
|
||||
description:
|
||||
Migrating to Ente Photos by importing data from your local hard disk
|
||||
description: Migrating to Ente Photos by importing data from your local hard disk
|
||||
---
|
||||
|
||||
# Import photos from your local hard disk
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Files not uploading
|
||||
description:
|
||||
Troubleshooting when files are not uploading from your Ente Photos app
|
||||
description: Troubleshooting when files are not uploading from your Ente Photos app
|
||||
---
|
||||
|
||||
# Files not uploading
|
||||
|
||||
@@ -108,24 +108,11 @@ emails having @example.com as suffix.
|
||||
|
||||
### Send email with verification code
|
||||
|
||||
You can configure SMTP for sending verification code e-mails to users, which is
|
||||
efficient if you do not know mail addresses of people for who you want to
|
||||
hardcode OTTs or if you are serving larger audience.
|
||||
You can configure SMTP for sending verification code e-mails to users, if you do
|
||||
not wish to hardcode OTTs and have larger audience.
|
||||
|
||||
Set the host and port accordingly with your credentials in `museum.yaml`
|
||||
|
||||
```yaml
|
||||
smtp:
|
||||
host:
|
||||
port:
|
||||
# Optional username and password if using local relay server
|
||||
username:
|
||||
password:
|
||||
# Email address used for sending emails (this mail's credentials have to be provided)
|
||||
email:
|
||||
# Optional name for sender
|
||||
sender-name:
|
||||
```
|
||||
For more information on configuring email, check out the
|
||||
[email configuration](/self-hosting/installation/config#email) section.
|
||||
|
||||
## Disable registrations
|
||||
|
||||
|
||||
@@ -7,8 +7,8 @@ description: Getting started with self-hosting Ente
|
||||
|
||||
If you're looking to spin up Ente on your server, you are in the right place!
|
||||
|
||||
Our entire source code
|
||||
([including the server](https://ente.io/blog/open-sourcing-our-server/)) is open
|
||||
Our entire source code,
|
||||
[including the server](https://ente.io/blog/open-sourcing-our-server/) is open
|
||||
source. This is the same code we use on production.
|
||||
|
||||
For a quick preview, make sure your system meets the requirements mentioned
|
||||
@@ -35,9 +35,12 @@ This creates a directory `my-ente` in the current working directory, prompts to
|
||||
start the cluster with needed containers after pulling the images required to
|
||||
run Ente.
|
||||
|
||||
::: note Make sure to modify the default values in `compose.yaml` and
|
||||
`museum.yaml` if you wish to change endpoints, bucket configuration or server
|
||||
configuration. :::
|
||||
::: info
|
||||
|
||||
Make sure to modify the default values in `compose.yaml` and `museum.yaml` if
|
||||
you wish to change endpoints, bucket configuration or server configuration.
|
||||
|
||||
:::
|
||||
|
||||
## Try the web app
|
||||
|
||||
|
||||
@@ -45,6 +45,25 @@ cp example.yaml museum.yaml
|
||||
Change the values present in `.env` file along with `museum.yaml` file
|
||||
accordingly.
|
||||
|
||||
::: tip
|
||||
|
||||
Make sure to enter the correct values for the database and object storage.
|
||||
|
||||
You should consider generating values for JWT and encryption keys for emails if
|
||||
you intend to use for long-term needs.
|
||||
|
||||
You can do by running the following command inside `ente/server`, assuming you
|
||||
cloned the repository to `ente`:
|
||||
|
||||
```shell
|
||||
# Change into the ente/server
|
||||
cd ente/server
|
||||
# Generate secrets
|
||||
go run tools/gen-random-keys/main.go
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
## Step 3: Start the cluster
|
||||
|
||||
Start the cluster by running the following command:
|
||||
|
||||
@@ -78,6 +78,9 @@ used for Compose and quickstart for ease of use.)
|
||||
|
||||
### Database
|
||||
|
||||
The `db` section is used for configuring database connectivity. Ensure you
|
||||
provide correct credentials for proper connectivity within Museum.
|
||||
|
||||
| Variable | Description | Default |
|
||||
| ------------- | -------------------------- | ----------- |
|
||||
| `db.host` | DB hostname | `localhost` |
|
||||
@@ -94,10 +97,13 @@ The `s3` section within `museum.yaml` is by default configured to use local
|
||||
MinIO buckets when using `quickstart.sh` or Docker Compose.
|
||||
|
||||
If you wish to use an external S3 provider, you can edit the configuration with
|
||||
your provider's credentials, and set `are_local_buckets` to `false`.
|
||||
your provider's credentials, and set `s3.are_local_buckets` to `false`.
|
||||
|
||||
MinIO uses the port `3200` for API Endpoints. Web Console can be accessed at
|
||||
http://localhost:3201 by enabling port `3201` in the Compose file.
|
||||
If you are using default MinIO, it is accessible at port `3200`. Web Console can
|
||||
be accessed by enabling port `3201` in the Compose file.
|
||||
|
||||
For more information on object storage configuration, check our
|
||||
[documentation](/self-hosting/administration/object-storage).
|
||||
|
||||
If you face any issues related to uploads then check out
|
||||
[CORS](/self-hosting/administration/object-storage#cors-cross-origin-resource-sharing)
|
||||
@@ -146,6 +152,27 @@ go run tools/gen-random-keys/main.go
|
||||
|
||||
### Email
|
||||
|
||||
You may wish to send emails for verification codes instead of
|
||||
[hardcoding them](/self-hosting/administration/users#use-hardcoded-otts). In
|
||||
such cases, you can configure SMTP (or Zoho Transmail, for bulk emails).
|
||||
|
||||
Set the host and port accordingly with your credentials in `museum.yaml`
|
||||
|
||||
You may skip the username and password if using a local relay server.
|
||||
|
||||
```yaml
|
||||
smtp:
|
||||
host:
|
||||
port:
|
||||
# Optional username and password if using local relay server
|
||||
username:
|
||||
password:
|
||||
# Email address used for sending emails (this mail's credentials have to be provided)
|
||||
email:
|
||||
# Optional name for sender
|
||||
sender-name:
|
||||
```
|
||||
|
||||
| Variable | Description | Default |
|
||||
| ------------------ | ---------------------------- | ------- |
|
||||
| `smtp.host` | SMTP server host | |
|
||||
|
||||
@@ -92,9 +92,9 @@ git clone https://github.com/ente-io/ente
|
||||
2. Build the server. The server binary should be available as `./main` relative
|
||||
to `server` directory
|
||||
|
||||
``` shell
|
||||
go build cmd/museum/main.go
|
||||
```
|
||||
```shell
|
||||
go build cmd/museum/main.go
|
||||
```
|
||||
|
||||
3. Create `museum.yaml` file inside `server` for configuring the needed
|
||||
variables. You can copy the templated configuration file for editing with
|
||||
@@ -104,6 +104,25 @@ git clone https://github.com/ente-io/ente
|
||||
cp config/example.yaml ./museum.yaml
|
||||
```
|
||||
|
||||
::: tip
|
||||
|
||||
Make sure to enter the correct values for the database and object storage.
|
||||
|
||||
You should consider generating values for JWT and encryption keys for emails
|
||||
if you intend to use for long-term needs.
|
||||
|
||||
You can do by running the following command inside `ente/server`, assuming
|
||||
you cloned the repository to `ente`:
|
||||
|
||||
```shell
|
||||
# Change into the ente/server
|
||||
cd ente/server
|
||||
# Generate secrets
|
||||
go run tools/gen-random-keys/main.go
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
4. Run the server
|
||||
|
||||
```shell
|
||||
|
||||
@@ -159,7 +159,7 @@ apps](web-dev-settings.png){width=400px}
|
||||
## Step 7: Configure Ente CLI
|
||||
|
||||
You can download Ente CLI from
|
||||
[here](https://github.com/ente-io/ente/releases?q=tag%3Acli)
|
||||
[here](https://github.com/ente-io/ente/releases?q=tag%3Acli).
|
||||
|
||||
Check our [documentation](/self-hosting/administration/cli) on how to use Ente
|
||||
CLI for managing self-hosted instances.
|
||||
|
||||
52
docs/docs/self-hosting/troubleshooting/cli.md
Normal file
52
docs/docs/self-hosting/troubleshooting/cli.md
Normal file
@@ -0,0 +1,52 @@
|
||||
---
|
||||
title: Ente CLI - Self-hosting
|
||||
description: A quick hotfix for keyring errors while running Ente CLI.
|
||||
---
|
||||
|
||||
# Ente CLI
|
||||
|
||||
## Secrets
|
||||
|
||||
Ente CLI makes use of your system keyring for storing sensitive information such
|
||||
as passwords.
|
||||
|
||||
There are 2 ways to address keyring-related error:
|
||||
|
||||
### Install system keyring
|
||||
|
||||
This is the recommended method as it is considerably secure than the latter.
|
||||
|
||||
If you are using Linux for accessing Ente CLI with, you can install a system
|
||||
keyring manager such as `gnome-keyring`, `kwallet`, etc. via your distribution's
|
||||
package manager.
|
||||
|
||||
For Ubuntu/Debian based distributions, you can install `gnome-keyring` via `apt`
|
||||
|
||||
```shell
|
||||
sudo apt install gnome-keyring
|
||||
```
|
||||
|
||||
Now you can use Ente CLI for adding account, which will trigger your system's
|
||||
keyring.
|
||||
|
||||
### Configure secrets path
|
||||
|
||||
In case of using Ente CLI on server environment, you may not be able to install
|
||||
system keyring. In such cases, you can configure Ente CLI to use a text file for
|
||||
saving the secrets.
|
||||
|
||||
Set `ENTE_CLI_SECRETS_PATH` environment variable in your shell's configuration
|
||||
file (`~/.bashrc`, `~/.zshrc`, or other corresponding file)
|
||||
|
||||
```shell
|
||||
# Replace ./secrets.txt with the path to secrets file
|
||||
# that you are using for saving.
|
||||
# IMPORTANT: Make sure it is stored in a secure place.
|
||||
export ENTE_CLI_SECRETS_PATH=./secrets.txt
|
||||
```
|
||||
|
||||
When you run Ente CLI, and if the file doesn't exist, Ente CLI will create it
|
||||
and fill it with a random 32 character encryption key.
|
||||
|
||||
If you create the file, please fill it with a cryptographically generated 32
|
||||
byte string.
|
||||
@@ -17,19 +17,20 @@ description: Fixing Docker-related errors when trying to self-host Ente
|
||||
|
||||
## post_start
|
||||
|
||||
The `server/compose.yaml` Docker compose file uses the "post_start" lifecycle
|
||||
hook to provision the MinIO instance.
|
||||
The Docker compose file used if relying on quickstart script or installation
|
||||
using Docker Compose uses the "post_start" lifecycle hook to provision the MinIO
|
||||
instance.
|
||||
|
||||
The lifecycle hook **requires Docker Compose version 2.30.0+**, and if you're
|
||||
using an older version of docker compose you will see an error like this:
|
||||
using an older version of Docker Compose you will see an error like this:
|
||||
|
||||
```
|
||||
validating compose.yaml: services.minio Additional property post_start is not allowed
|
||||
```
|
||||
|
||||
The easiest way to resolve this is to upgrade your Docker compose.
|
||||
The easiest way to resolve this is to upgrade your Docker Compose.
|
||||
|
||||
If you cannot update your Docker compose version, then alternatively you can
|
||||
If you cannot update your Docker Compose version, then alternatively you can
|
||||
perform the same configuration by removing the "post_start" hook, and adding a
|
||||
new service definition:
|
||||
|
||||
@@ -70,11 +71,11 @@ supports the `start_interval` property on the health check.
|
||||
|
||||
## Postgres authentication failed
|
||||
|
||||
If you're getting Postgres password authentication failures when starting your
|
||||
If you are getting Postgres password authentication failures when starting your
|
||||
cluster, then you might be using a stale Docker volume.
|
||||
|
||||
In more detail, if you're getting an error of the following form (pasting a full
|
||||
example for easier greppability):
|
||||
If you are getting an error of the following form (pasting a full example for
|
||||
easier greppability):
|
||||
|
||||
```
|
||||
museum-1 | panic: pq: password authentication failed for user "pguser"
|
||||
@@ -92,9 +93,13 @@ is expecting.
|
||||
|
||||
There are 2 possibilities:
|
||||
|
||||
1. When you have created a cluster in `my-ente` directory on running
|
||||
`quickstart.sh` and later deleted it, only to create another cluster with
|
||||
same `my-ente` directory.
|
||||
1. If you are using Docker Compose for running Ente from source, you might not
|
||||
have set the same credentials in `.env` and `museum.yaml` inside
|
||||
`server/config` directory. Edit the values to make sure the correct
|
||||
credentials are being used.
|
||||
2. When you have created a cluster in `my-ente` directory on running
|
||||
`quickstart.sh` and later deleted it, only to create another cluster with
|
||||
same `my-ente` directory.
|
||||
|
||||
However, by deleting the directory, the Docker volumes are not deleted.
|
||||
|
||||
@@ -129,10 +134,6 @@ There are 2 possibilities:
|
||||
|
||||
## MinIO provisioning error
|
||||
|
||||
MinIO has deprecated the `mc config` command in favor of `mc alias set`
|
||||
resulting in failure in execution of the command for creating bucket using
|
||||
`post_start` hook.
|
||||
|
||||
You may encounter similar logs while trying to start the cluster if you are
|
||||
using the older command (provided by default in `quickstart.sh`):
|
||||
|
||||
@@ -142,9 +143,8 @@ my-ente-minio-1 -> | Waiting for minio...
|
||||
my-ente-minio-1 -> | Waiting for minio...
|
||||
```
|
||||
|
||||
This can be resolved by changing
|
||||
`mc config host h0 add http://minio:3200 $minio_user $minio_pass` to
|
||||
`mc alias set h0 http://minio:3200 $minio_user $minio_pass`
|
||||
This could be due to usage of deprecated MinIO `mc config` command. Changing
|
||||
`mc config host h0 add` to `mc alias set h0` resolves this.
|
||||
|
||||
Thus the updated `post_start` will look as follows for `minio` service:
|
||||
|
||||
@@ -156,13 +156,6 @@ Thus the updated `post_start` will look as follows for `minio` service:
|
||||
sh -c '
|
||||
#!/bin/sh
|
||||
while ! mc alias set h0 http://minio:3200 your_minio_user your_minio_pass 2>/dev/null
|
||||
do
|
||||
echo "Waiting for minio..."
|
||||
sleep 0.5
|
||||
done
|
||||
cd /data
|
||||
mc mb -p b2-eu-cen
|
||||
mc mb -p wasabi-eu-central-2-v3
|
||||
mc mb -p scw-eu-fr-v3
|
||||
...
|
||||
'
|
||||
```
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
---
|
||||
title: Ente CLI Secrets - Self-hosting
|
||||
description: A quick hotfix for keyring errors while running Ente CLI.
|
||||
---
|
||||
|
||||
# Ente CLI Secrets
|
||||
|
||||
Ente CLI makes use of system keyring for storing sensitive information like your
|
||||
passwords. And running the CLI straight out of the box might give you some
|
||||
errors related to keyrings in some case.
|
||||
|
||||
Follow the below steps to run Ente CLI and also avoid keyrings errors.
|
||||
|
||||
Run:
|
||||
|
||||
```shell
|
||||
# export the secrets path
|
||||
export ENTE_CLI_SECRETS_PATH=./<path-to-secrets.txt>
|
||||
|
||||
./ente-cli
|
||||
```
|
||||
|
||||
You can also add the above line to your shell's rc file, to prevent the need to
|
||||
export manually every time.
|
||||
|
||||
Then one of the following:
|
||||
|
||||
1. If the file doesn't exist, Ente CLI will create it and fill it with a random
|
||||
32 character encryption key.
|
||||
2. If you do create the file, please fill it with a cryptographically generated
|
||||
32 byte string.
|
||||
|
||||
And you are good to go.
|
||||
|
||||
## References
|
||||
|
||||
- [Ente CLI Secrets Path](https://www.reddit.com/r/selfhosted/comments/1gc09il/comment/lu2hox2/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button)
|
||||
- [Keyrings](https://man7.org/linux/man-pages/man7/keyrings.7.html)
|
||||
@@ -1,6 +1,5 @@
|
||||
{
|
||||
"tabWidth": 4,
|
||||
"proseWrap": "always",
|
||||
"plugins": [
|
||||
"prettier-plugin-organize-imports",
|
||||
"prettier-plugin-packagejson"
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
{
|
||||
"tabWidth": 4,
|
||||
"proseWrap": "always"
|
||||
"tabWidth": 4
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"account": "الحساب",
|
||||
"unlock": "فتح القُفْل",
|
||||
"unlock": "فتح القفل",
|
||||
"recoveryKey": "مفتاح الاسترداد",
|
||||
"counterAppBarTitle": "العداد",
|
||||
"@counterAppBarTitle": {
|
||||
@@ -9,8 +9,8 @@
|
||||
"onBoardingBody": "النسخ الاحتياطي لشيفرات الاستيثاق ذي العاملين",
|
||||
"onBoardingGetStarted": "ابدأ الآن",
|
||||
"setupFirstAccount": "إعداد الحساب الأول الخاص بك",
|
||||
"importScanQrCode": "مسح شيفرة الاستجابة السريعة",
|
||||
"qrCode": "شيفرة الاستجابة السريعة",
|
||||
"importScanQrCode": "مسح رمز QR",
|
||||
"qrCode": "رمز QR",
|
||||
"importEnterSetupKey": "أدخِل مفتاح الإعداد",
|
||||
"importAccountPageTitle": "أدخل تفاصيل الحساب",
|
||||
"secretCanNotBeEmpty": "لا يمكن أن يكون رمز السر فارغ",
|
||||
@@ -36,7 +36,7 @@
|
||||
"codeAccountHint": "الحساب (you@domain.com)",
|
||||
"codeTagHint": "وسم",
|
||||
"accountKeyType": "نوع المفتاح",
|
||||
"sessionExpired": "انتهت صَلاحِيَة الجِلسة",
|
||||
"sessionExpired": "انتهت صلاحية الجلسة",
|
||||
"@sessionExpired": {
|
||||
"description": "Title of the dialog when the users current session is invalid/expired"
|
||||
},
|
||||
@@ -106,7 +106,7 @@
|
||||
"importSelectJsonFile": "انتقِ ملف JSON",
|
||||
"importSelectAppExport": "حدد ملف التصدير الخاص بـ{appName}",
|
||||
"importEnteEncGuide": "اختر ملف JSON المشفر المصدَّر من Ente",
|
||||
"importRaivoGuide": "استخدم خيار \"صدر كلمات المرور لمرة واحدة إلى أرشيف Zip\" في إعدادات Raivo.\n\nاستخرج ملف الـzip واسترد ملف الـJSON.",
|
||||
"importRaivoGuide": "استخدم خيار تصدير OTP إلى أرشيف Zip في إعدادات Raivo.\n\nاستخرج ملف zip واسترد ملف JSON.",
|
||||
"importBitwardenGuide": "استخدم خيار \"تصدير خزانة\" داخل أدوات Bitwarden واستيراد ملف JSON غير مشفر.",
|
||||
"importAegisGuide": "استخدم خيار \"Export the vault\" في إعدادات Aegis.\n\nإذا كان المخزن الخاص بك مشفرًا، فستحتاج إلى إدخال كلمة مرور المخزن لفك تشفير المخزن.",
|
||||
"import2FasGuide": "استخدم خيار \"الإعدادات -> النسخ الاحتياطي - التصدير\" في 2FAS.\n\nإذا تم تشفير النسخة الاحتياطية، سوف تحتاج إلى إدخال كلمة المرور لفك تشفير النسخة الاحتياطية",
|
||||
|
||||
@@ -52,6 +52,7 @@
|
||||
"trashCodeMessage": "Вы сапраўды хочаце выдаліць код для {account}?",
|
||||
"trash": "Сметніца",
|
||||
"viewLogsAction": "Паглядзець журналы",
|
||||
"sendLogsDescription": "Гэта абагуліць вашы журналы з намі і дапаможа адладзіць вашу праблему. Хоць мы і прымаем захады, каб канфідэнцыяльныя звесткі не рэгістраваліся, але рэкамендуецца прагледзець гэтыя журналы перад адпраўкай.",
|
||||
"preparingLogsTitle": "Падрыхтоўка журналаў...",
|
||||
"emailLogsTitle": "Адправіць журнал па электроннай пошце",
|
||||
"emailLogsMessage": "Адпраўце журналы на {email}",
|
||||
@@ -83,12 +84,15 @@
|
||||
"pleaseWait": "Пачакайце...",
|
||||
"generatingEncryptionKeysTitle": "Генерацыя ключоў шыфравання...",
|
||||
"recreatePassword": "Стварыць пароль паўторна",
|
||||
"recreatePasswordMessage": "У бягучай прылады недастаткова вылічальнай здольнасці для праверкі вашага паролю, таму неабходна регенерыраваць яго адзін раз такім чынам, каб гэта працавала з усімі прыладамі.\n\nУвайдзіце, выкарыстоўваючы свой ключа аднаўлення і регенерыруйце свой пароль (калі хочаце, то можаце выбраць папярэдні пароль).",
|
||||
"useRecoveryKey": "Выкарыстоўваць ключ аднаўлення",
|
||||
"incorrectPasswordTitle": "Няправільны пароль",
|
||||
"welcomeBack": "З вяртаннем!",
|
||||
"emailAlreadyRegistered": "Электронная пошта ўжо зарэгістравана.",
|
||||
"emailNotRegistered": "Электронная пошта не зарэгістравана.",
|
||||
"madeWithLoveAtPrefix": "зроблена з ❤️ у ",
|
||||
"supportDevs": "Падпішыцеся на <bold-green>ente</bold-green>, каб падтрымаць нас",
|
||||
"supportDiscount": "Выкарыстоўвайце купон з кодам «AUTH», каб атрымаць скідку ў памеры 10% за першы год",
|
||||
"changeEmail": "Змяніць адрас электроннай пошты",
|
||||
"changePassword": "Змяніць пароль",
|
||||
"data": "Даныя",
|
||||
@@ -98,13 +102,29 @@
|
||||
"passwordForDecryptingExport": "Пароль для дэшыфроўкі экспартавання",
|
||||
"passwordEmptyError": "Пароль не можа быць пустым",
|
||||
"importFromApp": "Імпартаваць коды з {appName}",
|
||||
"importGoogleAuthGuide": "Экспартуйце свае ўліковыя запісы з Google Authenticator у QR-код з дапамогай параметра «Перанесці ўліковыя запісы». Потым скарыстайцеся іншай прыладай, якая можа адсканіраваць QR-код.\n\nПарада: вы можаце скарыстацца вэб-камерай свайго ноўтбука, каб сфатаграфаваць QR-код.",
|
||||
"importSelectJsonFile": "Выбраць файл JSON",
|
||||
"importSelectAppExport": "Выберыце файл экспартавання {appName}",
|
||||
"importEnteEncGuide": "Выберыце зашыфраваны файл JSON, які экспартаваны з Ente",
|
||||
"importRaivoGuide": "Скарыстайцеся параметрам «Экспартаваць OTP у архіў ZIP» у наладах Raivo.\n\nВыньце файл ZIP і імпартуйце файл JSON.",
|
||||
"importBitwardenGuide": "Скарыстайцеся параметрам «Экспартаваць сховішча» ў Bitwarden Tools і імпартуйце файл JSON.",
|
||||
"importAegisGuide": "Скарыстайцеся параметрам «Экспартаваць сховішча» ў наладах Aegis.\n\nВам спатрэбіцца ўвесці пароль ад сховішча, каб дэшыфраваць яго (у выпадку, калі яно было зашыфравана раней).",
|
||||
"import2FasGuide": "Скарыстайцеся параметрам «Налады -> Рэзервовае капіяванне -Экспартаванне» ў наладах 2FAS.\n\nВам спатрэбіцца ўвесці пароль, каб дэшыфраваць рэзервовую копію (у выпадку, калі яна была зашыфравана раней)",
|
||||
"importLastpassGuide": "Скарыстайцеся параметрам «Перанесці ўліковыя запісы» ў налады Lastpass Authenticator і націсніце «Экспартаваць уліковыя запісы ў файл».",
|
||||
"exportCodes": "Экспартаваць коды",
|
||||
"importLabel": "Імпарт",
|
||||
"importInstruction": "Выберыце файл, які змяшчае спіс вашых кодаў у наступным фармаце",
|
||||
"importCodeDelimiterInfo": "Коды могуць быць адасоблены коскамі або новым радком",
|
||||
"selectFile": "Выбраць файл",
|
||||
"emailVerificationToggle": "Праверка эл. пошты",
|
||||
"emailVerificationEnableWarning": "Пераканайцеся, што ў вас захавана копія 2ФА ад вашай электроннай пошты па-за межамі праграмы Ente Auth перад тым, як уключаць праверку электроннай пошты. Гэта дазволіць пазбегнуць блакіроўкі вашага ўліковага запісу.",
|
||||
"authToChangeEmailVerificationSetting": "Прайдзіце аўтэнтыфікацыю, каб змяніць праверку адраса электроннай пошты",
|
||||
"authenticateGeneric": "Прайдзіце аўтэнтыфікацыю",
|
||||
"authToViewYourRecoveryKey": "Прайдзіце аўтэнтыфікацыю для прагляду свайго ключа аднаўлення",
|
||||
"authToChangeYourEmail": "Прайдзіце аўтэнтыфікацыю, каб змяніць сваю электронную пошту",
|
||||
"authToChangeYourPassword": "Прайдзіце аўтэнтыфікацыю, каб змяніць свой пароль",
|
||||
"authToViewSecrets": "Прайдзіце аўтэнтыфікацыю для прагляду сваіх сакрэтаў",
|
||||
"authToInitiateSignIn": "Прайдзіце аўтэнтыфікацыю, каб пачаць уваход для рэзервовай копіі.",
|
||||
"ok": "OK",
|
||||
"cancel": "Скасаваць",
|
||||
"yes": "Так",
|
||||
@@ -123,12 +143,17 @@
|
||||
"oops": "Вой",
|
||||
"suggestFeatures": "Прапанаваць функцыю",
|
||||
"faq": "Частыя пытанні",
|
||||
"somethingWentWrongMessage": "Нешта пайшло не так. Паспрабуйце яшчэ раз",
|
||||
"leaveFamily": "Пакінуць сямейны план",
|
||||
"leaveFamilyMessage": "Вы ўпэўнены, што хочаце выйсці з сямейнага плана?",
|
||||
"inFamilyPlanMessage": "Вы ўдзельнік сямейнага плана!",
|
||||
"hintForMobile": "Доўгі націск на код для рэдагавання або выдалення.",
|
||||
"hintForDesktop": "Правы націск на код для рэдагавання або выдалення.",
|
||||
"scan": "Сканіраваць",
|
||||
"scanACode": "Сканіраваць код",
|
||||
"verify": "Праверыць",
|
||||
"verifyEmail": "Праверыць электронную пошту",
|
||||
"enterCodeHint": "Увядзіце шасцізначны код з\nвашай праграмы аўтэнтыфікацыі",
|
||||
"lostDeviceTitle": "Згубілі прыладу?",
|
||||
"twoFactorAuthTitle": "Двухфактарная аўтэнтыфікацыя",
|
||||
"passkeyAuthTitle": "Праверка ключа доступу",
|
||||
@@ -137,14 +162,25 @@
|
||||
"recoverAccount": "Аднавіць уліковы запіс",
|
||||
"enterRecoveryKeyHint": "Увядзіце свой ключ аднаўлення",
|
||||
"recover": "Аднавіць",
|
||||
"contactSupportViaEmailMessage": "Адпраўце ліст на {email} з вашага зарэгістраванага адраса электроннай пошты",
|
||||
"@contactSupportViaEmailMessage": {
|
||||
"placeholders": {
|
||||
"email": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
"invalidQRCode": "Памылковы QR-код",
|
||||
"noRecoveryKeyTitle": "Няма ключа аднаўлення?",
|
||||
"enterEmailHint": "Увядзіце свой адрас электроннай пошты",
|
||||
"enterNewEmailHint": "Увядзіце свой новы адрас электроннай пошты",
|
||||
"invalidEmailTitle": "Памылковы адрас электроннай пошты",
|
||||
"invalidEmailMessage": "Увядзіце сапраўдны адрас электронная пошты.",
|
||||
"deleteAccount": "Выдаліць уліковы запіс",
|
||||
"deleteAccountQuery": "Вельмі шкада, што вы пакідаеце нас. Вы сутыкнуліся з нейкай праблемай?",
|
||||
"yesSendFeedbackAction": "Так. Адправіць водгук",
|
||||
"noDeleteAccountAction": "Не, выдаліць уліковы запіс",
|
||||
"initiateAccountDeleteTitle": "Прайдзіце аўтэнтыфікацыю, каб пачаць выдаленне ўліковага запісу",
|
||||
"sendEmail": "Адправіць ліст",
|
||||
"createNewAccount": "Стварыць новы ўліковы запіс",
|
||||
"weakStrength": "Ненадзейны",
|
||||
@@ -158,9 +194,13 @@
|
||||
"social": "Сацыяльныя сеткі",
|
||||
"security": "Бяспека",
|
||||
"lockscreen": "Экран блакіроўкі",
|
||||
"authToChangeLockscreenSetting": "Прайдзіце аўтэнтыфікацыю, каб змяніць налады блакіроўкі экрана",
|
||||
"deviceLockEnablePreSteps": "Наладзьце код доступу да прылады або блакіроўку экрана ў наладах вашай сістэме, каб уключыць блакіроўку прылады.",
|
||||
"viewActiveSessions": "Паглядзець актыўныя сеансы",
|
||||
"authToViewYourActiveSessions": "Прайдзіце аўтэнтыфікацыю для прагляду сваіх актыўных сеансаў",
|
||||
"searchHint": "Пошук...",
|
||||
"search": "Пошук",
|
||||
"sorryUnableToGenCode": "Немагчыма згенерыраваць код з {issuerName}",
|
||||
"noResult": "Няма вынікаў",
|
||||
"addCode": "Дадаць код",
|
||||
"scanAQrCode": "Сканіраваць QR-код",
|
||||
@@ -168,18 +208,36 @@
|
||||
"edit": "Рэдагаваць",
|
||||
"share": "Абагуліць",
|
||||
"shareCodes": "Абагуліць коды",
|
||||
"shareCodesDuration": "Выберыце працягласць, на якую вы хочаце абагуліць коды.",
|
||||
"restore": "Аднавіць",
|
||||
"copiedToClipboard": "Скапіявана ў буфер абмену",
|
||||
"copiedNextToClipboard": "Скапіяваць наступны код у буфер абмену",
|
||||
"error": "Памылка",
|
||||
"recoveryKeyCopiedToClipboard": "Ключ аднаўлення скапіяваны ў буфер абмену",
|
||||
"recoveryKeyOnForgotPassword": "Адзіным спосабам аднавіць вашы даныя з'яўляецца гэты ключ, калі вы забылі свой пароль.",
|
||||
"recoveryKeySaveDescription": "Захавайце гэты ключ, які складаецца з 24 слоў, у наедзеным месцы. Ён не захоўваецца на нашым серверы.",
|
||||
"doThisLater": "Зрабіць гэта пазней",
|
||||
"saveKey": "Захаваць ключ",
|
||||
"save": "Захаваць",
|
||||
"send": "Адправіць",
|
||||
"saveOrSendDescription": "Вы сапраўды хочаце захаваць гэта ў сваім сховішчы (прадвызначана папка са спампоўваннямі) або адправіць у іншыя праграмы?",
|
||||
"saveOnlyDescription": "Вы сапраўды хочаце захаваць гэта ў сваім сховішчы (прадвызначана папка са спампоўваннямі)?",
|
||||
"back": "Назад",
|
||||
"createAccount": "Стварыць уліковы запіс",
|
||||
"passwordStrength": "Надзейнасць пароля: {passwordStrengthValue}",
|
||||
"@passwordStrength": {
|
||||
"description": "Text to indicate the password strength",
|
||||
"placeholders": {
|
||||
"passwordStrengthValue": {
|
||||
"description": "The strength of the password as a string",
|
||||
"type": "String",
|
||||
"example": "Weak or Moderate or Strong"
|
||||
}
|
||||
},
|
||||
"message": "Password Strength: {passwordStrengthText}"
|
||||
},
|
||||
"password": "Пароль",
|
||||
"signUpTerms": "Я пагаджаюся з <u-terms>умовамі абслугоўвання</u-terms> і <u-policy>палітыкай прыватнасці</u-policy>",
|
||||
"privacyPolicyTitle": "Палітыка прыватнасці",
|
||||
"termsOfServicesTitle": "Умовы",
|
||||
"encryption": "Шыфраванне",
|
||||
@@ -187,11 +245,17 @@
|
||||
"changePasswordTitle": "Змяніць пароль",
|
||||
"resetPasswordTitle": "Скінуць пароль",
|
||||
"encryptionKeys": "Ключы шыфравання",
|
||||
"passwordWarning": "Мы не захоўваем гэты пароль і <underline>мы не зможам расшыфраваць вашы даныя</underline>, калі вы забудзеце яго",
|
||||
"enterPasswordToEncrypt": "Увядзіце пароль, каб была магчымасць выкарыстаць яго для расшыфроўкі вашых даных",
|
||||
"enterNewPasswordToEncrypt": "Увядзіце новы пароль, каб мы маглі выкарыстаць яго для расшыфроўкі вашых даных",
|
||||
"passwordChangedSuccessfully": "Пароль паспяхова зменены",
|
||||
"generatingEncryptionKeys": "Генерацыя ключоў шыфравання...",
|
||||
"continueLabel": "Працягнуць",
|
||||
"insecureDevice": "Небяспечная прылада",
|
||||
"sorryWeCouldNotGenerateSecureKeysOnThisDevicennplease": "Немагчыма згенерыраваць ключы бяспекі на гэтай прыладзе.\n\nЗарэгіструйцеся з іншай прылады.",
|
||||
"howItWorks": "Як гэта працуе",
|
||||
"ackPasswordLostWarning": "Я ўсведамляю, што калі я страчу свой пароль, то я магу згубіць свае даныя, бо мае даныя абаронены <underline>скразным шыфраваннем</underline>.",
|
||||
"loginTerms": "Націскаючы ўвайсці, я згаджаюся з <u-terms>умовамі абслугоўвання</u-terms> і <u-policy>палітыкай прыватнасці</u-policy>",
|
||||
"logInLabel": "Увайсці",
|
||||
"logout": "Выйсці",
|
||||
"areYouSureYouWantToLogout": "Вы сапраўды хочаце выйсці?",
|
||||
@@ -203,6 +267,7 @@
|
||||
"systemTheme": "Сістэманая",
|
||||
"verifyingRecoveryKey": "Праверка ключа аднаўлення...",
|
||||
"recoveryKeyVerified": "Ключ аднаўлення правераны",
|
||||
"recoveryKeySuccessBody": "Усё ў парадку! Вашы ключ аднаўлення з'яўляецца сапраўдным.\n\nНе забывайце захоўваць ваш ключ аднаўлення ў надзейным месцы.",
|
||||
"recreatePasswordTitle": "Стварыць пароль паўторна",
|
||||
"invalidKey": "Памылковы ключ",
|
||||
"tryAgain": "Паспрабуйце яшчэ раз",
|
||||
@@ -254,20 +319,40 @@
|
||||
"checkInboxAndSpamFolder": "Праверце свае ўваходныя лісты (і спам) для завяршэння праверкі",
|
||||
"tapToEnterCode": "Націсніце, каб увесці код",
|
||||
"resendEmail": "Адправіць ліст яшчэ раз",
|
||||
"weHaveSendEmailTo": "Ліст адпраўлены на электронную пошту <green>{email}</green>",
|
||||
"@weHaveSendEmailTo": {
|
||||
"description": "Text to indicate that we have sent a mail to the user",
|
||||
"placeholders": {
|
||||
"email": {
|
||||
"description": "The email address of the user",
|
||||
"type": "String",
|
||||
"example": "example@ente.io"
|
||||
}
|
||||
}
|
||||
},
|
||||
"manualSort": "Карыстальніцкая",
|
||||
"editOrder": "Рэдагаваць заказ",
|
||||
"mostFrequentlyUsed": "Часта выкарыстоўваюцца",
|
||||
"mostRecentlyUsed": "Нядаўна выкарыстаныя",
|
||||
"activeSessions": "Актыўныя сеансы",
|
||||
"somethingWentWrongPleaseTryAgain": "Нешта пайшло не так. Паспрабуйце яшчэ раз",
|
||||
"thisWillLogYouOutOfThisDevice": "Гэта дзеянне завершыць сеанс на вашай прыладзе!",
|
||||
"thisWillLogYouOutOfTheFollowingDevice": "Гэта дзеянне завершыць сеанс наступнай прылады:",
|
||||
"terminateSession": "Перарваць сеанс?",
|
||||
"terminate": "Перарваць",
|
||||
"thisDevice": "Гэта прылада",
|
||||
"toResetVerifyEmail": "Спачатку праверце электронную пошту, каб скінуць свой пароль.",
|
||||
"thisEmailIsAlreadyInUse": "Гэта электронная пошта ўжо выкарыстоўваецца",
|
||||
"verificationFailedPleaseTryAgain": "Збой праверкі. Паспрабуйце яшчэ раз",
|
||||
"yourVerificationCodeHasExpired": "Ваш праверачны код пратэрмінаваны",
|
||||
"incorrectCode": "Няправільны код",
|
||||
"sorryTheCodeYouveEnteredIsIncorrect": "Уведзены вамі код з'яўляецца няправільным",
|
||||
"emailChangedTo": "Электронная пошта зменена на {newEmail}",
|
||||
"authenticationFailedPleaseTryAgain": "Збой аўтэнтыфікацыі. Паспрабуйце яшчэ раз",
|
||||
"authenticationSuccessful": "Аўтэнтыфікацыя паспяхова пройдзена!",
|
||||
"twofactorAuthenticationSuccessfullyReset": "Двухфактарная аўтэнтыфікацыя паспяхова скінута",
|
||||
"incorrectRecoveryKey": "Няправільны ключ аднаўлення",
|
||||
"theRecoveryKeyYouEnteredIsIncorrect": "Вы ўвялі памылковы ключ аднаўлення",
|
||||
"enterPassword": "Увядзіце пароль",
|
||||
"selectExportFormat": "Выберыце фармат экспартавання",
|
||||
"exportDialogDesc": "Зашыфраванае экспартаванне будзе абаронена паролем, які вы выберыце.",
|
||||
@@ -332,14 +417,19 @@
|
||||
"description": "Message showed on a button that the user can click to leave the current dialog. It is used on iOS side. Maximum 30 characters."
|
||||
},
|
||||
"noInternetConnection": "Адсутнічае падключэнне да інтэрнэту",
|
||||
"pleaseCheckYourInternetConnectionAndTryAgain": "Праверце злучэнне з інтэрнэтам і паспрабуйце яшчэ раз.",
|
||||
"signOutFromOtherDevices": "Выйсці з іншых прылад",
|
||||
"signOutOtherDevices": "Выйсці на іншых прыладах",
|
||||
"doNotSignOut": "Не выходзіць",
|
||||
"hearUsWhereTitle": "Адкуль вы пачулі пра Ente? (неабавязкова)",
|
||||
"recoveryKeySaved": "Ключ аднаўлення захаваны ў папцы «Спампоўкі»!",
|
||||
"waitingForBrowserRequest": "Чаканне запыту браўзера...",
|
||||
"waitingForVerification": "Чаканне праверкі...",
|
||||
"passkey": "Ключ доступу",
|
||||
"passKeyPendingVerification": "Праверка пакуль яшчэ не завершана",
|
||||
"loginSessionExpired": "Сеанс завяршыўся",
|
||||
"loginSessionExpiredDetails": "Ваш сеанс завяршыўся. Увайдзіце яшчэ раз.",
|
||||
"developerSettingsWarning": "Вы ўпэўнены, што хочаце змяніць налады распрацоўшчыка?",
|
||||
"developerSettings": "Налады распрацоўшчыка",
|
||||
"serverEndpoint": "Канцавы пункт сервера",
|
||||
"invalidEndpoint": "Памылковы канцавы пункт",
|
||||
@@ -356,6 +446,7 @@
|
||||
"create": "Стварыць",
|
||||
"editTag": "Рэдагаванне тэг",
|
||||
"deleteTagTitle": "Выдаліць тэг?",
|
||||
"somethingWentWrongParsingCode": "Немагчыма прааналізаваць коды (колькасць: {x}).",
|
||||
"updateNotAvailable": "Абнаўленне недаступна",
|
||||
"viewRawCodes": "Паглядзець неапрацаваныя коды",
|
||||
"rawCodes": "Неапрацаваныя коды",
|
||||
@@ -372,12 +463,17 @@
|
||||
"setNewPassword": "Задаць новы пароль",
|
||||
"deviceLock": "Блакіроўка прылады",
|
||||
"hideContent": "Схаваць змест",
|
||||
"hideContentDescriptioniOS": "Хаваць змесціва праграмы ў пераключальніку праграм",
|
||||
"pinLock": "Блакіроўка PIN'ам",
|
||||
"enterPin": "Увядзіце PIN-код",
|
||||
"setNewPin": "Задаць новы PIN",
|
||||
"importFailureDescNew": "Не ўдалося прааналізаваць выбраны файл.",
|
||||
"appLockNotEnabled": "Блакіроўка праграмы не ўключана",
|
||||
"appLockNotEnabledDescription": "Уключыце блакіроўку праграмы ў раздзеле «Бяспека» -> «Блакіроўка праграмы»",
|
||||
"authToViewPasskey": "Прайдзіце аўтэнтыфікацыю, каб паглядзець ключ доступу",
|
||||
"duplicateCodes": "Дублікаты кадоў",
|
||||
"noDuplicates": "✨ Няма дублікатаў",
|
||||
"youveNoDuplicateCodesThatCanBeCleared": "У вас адсутнічаць дубліраваныя коды, які можна ачысціць",
|
||||
"deduplicateCodes": "Дубліраваныя кады",
|
||||
"deselectAll": "Зняць выбар з усіх",
|
||||
"selectAll": "Выбраць усе",
|
||||
@@ -386,8 +482,12 @@
|
||||
"tellUsWhatYouThink": "Раскажыце, што вы думаеце",
|
||||
"dropReviewiOS": "Пакіньце водгук у App Store",
|
||||
"dropReviewAndroid": "Пакіньце водгук у Play Store",
|
||||
"supportEnte": "Падтрымка <bold-green>ente</bold-green>",
|
||||
"giveUsAStarOnGithub": "Адзначце нас зоркай на Github",
|
||||
"free5GB": "Бясплатна 5 ГБ на <bold-green>ente</bold-green> Photos",
|
||||
"loginWithAuthAccount": "Увайдзіце з дапамогай уліковага запісу Auth",
|
||||
"freeStorageOffer": "Скідка ў памеры 10% на <bold-green>ente</bold-green> Photos",
|
||||
"freeStorageOfferDescription": "Выкарыстоўвайце код «AUTH», каб атрымаць скідку ў памеры 10% за першы год",
|
||||
"advanced": "Пашыраныя",
|
||||
"algorithm": "Алгарытм",
|
||||
"type": "Тып",
|
||||
|
||||
@@ -347,14 +347,14 @@
|
||||
"terminate": "Quitter",
|
||||
"thisDevice": "Cet appareil",
|
||||
"toResetVerifyEmail": "Pour réinitialiser votre mot de passe, veuillez d'abord vérifier votre e-mail.",
|
||||
"thisEmailIsAlreadyInUse": "Cette adresse mail est déjà utilisé",
|
||||
"thisEmailIsAlreadyInUse": "Cette adresse mail est déjà utilisée",
|
||||
"verificationFailedPleaseTryAgain": "La vérification a échouée, veuillez réessayer",
|
||||
"yourVerificationCodeHasExpired": "Votre code de vérification a expiré",
|
||||
"incorrectCode": "Code non valide",
|
||||
"sorryTheCodeYouveEnteredIsIncorrect": "Le code que vous avez saisi est incorrect",
|
||||
"emailChangedTo": "L'e-mail a été changé en {newEmail}",
|
||||
"authenticationFailedPleaseTryAgain": "L'authentification a échouée, veuillez réessayer",
|
||||
"authenticationSuccessful": "Authentification réussie!",
|
||||
"authenticationSuccessful": "Authentification réussie !",
|
||||
"twofactorAuthenticationSuccessfullyReset": "L'authentification à deux facteurs a été réinitialisée avec succès ",
|
||||
"incorrectRecoveryKey": "Clé de récupération non valide",
|
||||
"theRecoveryKeyYouEnteredIsIncorrect": "La clé de récupération que vous avez entrée est incorrecte",
|
||||
|
||||
@@ -173,6 +173,7 @@
|
||||
"invalidQRCode": "Netinkamas QR kodas.",
|
||||
"noRecoveryKeyTitle": "Neturite atkūrimo rakto?",
|
||||
"enterEmailHint": "Įveskite savo el. pašto adresą",
|
||||
"enterNewEmailHint": "Įveskite savo naują el. pašto adresą",
|
||||
"invalidEmailTitle": "Netinkamas el. pašto adresas",
|
||||
"invalidEmailMessage": "Įveskite tinkamą el. pašto adresą.",
|
||||
"deleteAccount": "Ištrinti paskyrą",
|
||||
|
||||
@@ -91,7 +91,7 @@
|
||||
"emailAlreadyRegistered": "Email đã được đăng ký.",
|
||||
"emailNotRegistered": "Email chưa được đăng ký.",
|
||||
"madeWithLoveAtPrefix": "lập trình bằng ❤️ bởi ",
|
||||
"supportDevs": "Đăng ký <bold-green>ente</bold-green> để hỗ trợ dự án này.",
|
||||
"supportDevs": "Đăng ký <bold-green>ente</bold-green> để hỗ trợ chúng tôi",
|
||||
"supportDiscount": "Dùng mã \"AUTH\" để được giảm 10% trong năm đầu tiên",
|
||||
"changeEmail": "Đổi email",
|
||||
"changePassword": "Đổi mật khẩu",
|
||||
@@ -513,8 +513,8 @@
|
||||
"giveUsAStarOnGithub": "Tặng sao trên GitHub",
|
||||
"free5GB": "Miễn phí 5GB cho <bold-green>ente</bold-green> Photos",
|
||||
"loginWithAuthAccount": "Đăng nhập bằng tài khoản Ente Auth",
|
||||
"freeStorageOffer": "Giảm giá 10% cho <bold-green>ente</bold-green> Photos",
|
||||
"freeStorageOfferDescription": "Dùng mã \"AUTH\" để được giảm 10% trong năm đầu tiên",
|
||||
"freeStorageOffer": "Giảm 10% <bold-green>ente</bold-green> Photos",
|
||||
"freeStorageOfferDescription": "Dùng mã \"AUTH\" để giảm 10% năm đầu tiên",
|
||||
"advanced": "Nâng cao",
|
||||
"algorithm": "Thuật toán",
|
||||
"type": "Loại",
|
||||
|
||||
@@ -484,7 +484,7 @@
|
||||
"backupOverMobileData": "Kurti atsargines kopijas per mobiliuosius duomenis",
|
||||
"backupVideos": "Kurti atsargines vaizdo įrašų kopijas",
|
||||
"disableAutoLock": "Išjungti automatinį užraktą",
|
||||
"deviceLockExplanation": "Išjunkite įrenginio ekrano užraktą, kai „Ente“ yra priekiniame fone ir kuriama atsarginės kopijos. Paprastai to nereikia, bet tai gali padėti greičiau užbaigti didelius įkėlimus ir pradinį didelių bibliotekų importą.",
|
||||
"deviceLockExplanation": "Išjunkite įrenginio ekrano užraktą, kai „Ente“ yra priekiniame fone ir kuriama atsarginės kopijos. Paprastai to nereikia, bet tai gali padėti sparčiau užbaigti didelius įkėlimus ir pradinį didelių bibliotekų importą.",
|
||||
"about": "Apie",
|
||||
"weAreOpenSource": "Esame atviro kodo!",
|
||||
"privacy": "Privatumas",
|
||||
@@ -1049,7 +1049,7 @@
|
||||
"searchPeopleEmptySection": "Pakvieskite asmenis ir čia matysite visas jų bendrinamas nuotraukas.",
|
||||
"searchAlbumsEmptySection": "Albumai",
|
||||
"searchFileTypesAndNamesEmptySection": "Failų tipai ir pavadinimai",
|
||||
"searchCaptionEmptySection": "Pridėkite aprašymus, pavyzdžiui, „#kelionė“, į nuotraukos informaciją, kad greičiau jas čia rastumėte.",
|
||||
"searchCaptionEmptySection": "Pridėkite aprašus, pavyzdžiui, „#kelionė“, į nuotraukos informaciją, kad sparčiau jas čia rastumėte.",
|
||||
"language": "Kalba",
|
||||
"selectLanguage": "Pasirinkite kalbą",
|
||||
"locationName": "Vietovės pavadinimas",
|
||||
@@ -1264,11 +1264,11 @@
|
||||
"joinDiscord": "Jungtis prie „Discord“",
|
||||
"locations": "Vietovės",
|
||||
"addAName": "Pridėti vardą",
|
||||
"findThemQuickly": "Raskite juos greitai",
|
||||
"findThemQuickly": "Raskite juos sparčiai",
|
||||
"@findThemQuickly": {
|
||||
"description": "Subtitle to indicate that the user can find people quickly by name"
|
||||
},
|
||||
"findPeopleByName": "Greitai suraskite žmones pagal vardą",
|
||||
"findPeopleByName": "Sparčiai suraskite asmenis pagal vardą",
|
||||
"addViewers": "{count, plural, =0 {Pridėti žiūrėtojų} =1 {Pridėti žiūrėtoją} other {Pridėti žiūrėtojų}}",
|
||||
"addCollaborators": "{count, plural, =0 {Pridėti bendradarbių} =1 {Pridėti bendradarbį} other {Pridėti bendradarbių}}",
|
||||
"longPressAnEmailToVerifyEndToEndEncryption": "Ilgai paspauskite el. paštą, kad patvirtintumėte visapusį šifravimą.",
|
||||
@@ -1755,5 +1755,40 @@
|
||||
"receiveRemindersOnBirthdays": "Gaukite priminimus, kai yra kažkieno gimtadienis. Paliesdami pranešimą, pateksite į gimtadienio šventės asmens nuotraukas.",
|
||||
"happyBirthday": "Su gimtadieniu! 🥳",
|
||||
"birthdays": "Gimtadieniai",
|
||||
"wishThemAHappyBirthday": "Palinkėkite {name} su gimtadieniu! 🎉"
|
||||
"wishThemAHappyBirthday": "Palinkėkite {name} su gimtadieniu! 🎉",
|
||||
"areYouSureRemoveThisFaceFromPerson": "Ar tikrai norite pašalinti šį veidą iš šio asmens?",
|
||||
"otherDetectedFaces": "Kiti aptikti veidai",
|
||||
"areThey": "Ar jie ",
|
||||
"questionmark": "?",
|
||||
"saveAsAnotherPerson": "Išsaugoti kaip kitą asmenį",
|
||||
"showLessFaces": "Rodyti mažiau veidų",
|
||||
"showMoreFaces": "Rodyti daugiau veidų",
|
||||
"ignore": "Ignoruoti",
|
||||
"merge": "Sujungti",
|
||||
"reset": "Atkurti",
|
||||
"areYouSureYouWantToIgnoreThisPerson": "Ar tikrai norite ignoruoti šį asmenį?",
|
||||
"areYouSureYouWantToIgnoreThesePersons": "Ar tikrai norite ignoruoti šiuos asmenis?",
|
||||
"thePersonGroupsWillNotBeDisplayed": "Asmenų grupės nebebus rodomos asmenų sekcijoje. Nuotraukos liks nepakitusios.",
|
||||
"thePersonWillNotBeDisplayed": "Asmuo nebebus rodomas asmenų sekcijoje. Nuotraukos liks nepakitusios.",
|
||||
"areYouSureYouWantToMergeThem": "Ar tikrai norite juos sujungti?",
|
||||
"allUnnamedGroupsWillBeMergedIntoTheSelectedPerson": "Visos nepavadintos grupės bus sujungtos su pasirinktu asmeniu. Tai vis dar galima atšaukti iš asmens pasiūlymų istorijos apžvalgos.",
|
||||
"yesIgnore": "Taip, ignoruoti",
|
||||
"same": "Tas pats",
|
||||
"different": "Skirtingas",
|
||||
"sameperson": "Tas pats asmuo?",
|
||||
"cLTitle1": "Įkeliami dideli vaizdo įrašų failai",
|
||||
"cLDesc1": "Po vaizdo įrašų srauto perdavimo beta versijos ir darbo prie tęsiamų įkėlimų ir atsisiuntimų, dabar padidinome failų įkėlimo ribą iki 10 GB. Tai dabar pasiekiama tiek kompiuterinėse, tiek mobiliosiose programėlėse.",
|
||||
"cLTitle2": "Fono įkėlimas",
|
||||
"cLDesc2": "Fono įkėlimai dabar palaikomi ir sistemoje „iOS“ bei „Android“ įrenginiuose. Nebereikia atverti programėlės, kad būtų galima sukurti naujausių nuotraukų ir vaizdo įrašų atsarginę kopiją.",
|
||||
"cLTitle3": "Automatiniai peržiūros prisiminimai",
|
||||
"cLDesc3": "Mes žymiai patobulinome prisiminimų patirtį, įskaitant automatinį peržiūrėjimą, braukimą į kitą prisiminimą ir daug daugiau.",
|
||||
"cLTitle4": "Patobulintas veido atpažinimas",
|
||||
"cLDesc4": "Kartu su daugybe vidinių patobulinimų, dabar daug lengviau matyti visus aptiktus veidus, pateikti atsiliepimus apie panašius veidus ir pridėti / pašalinti veidus iš vienos nuotraukos.",
|
||||
"cLTitle5": "Gimtadienio pranešimai",
|
||||
"cLDesc5": "Dabar gausite pranešimą apie galimybę atsisakyti visų gimtadienių, kuriuos išsaugojote platformoje „Ente“, kartu su geriausių jų nuotraukų rinkiniu.",
|
||||
"cLTitle6": "Tęsiami įkėlimai ir atsisiuntimai",
|
||||
"cLDesc6": "Nebereikia laukti įkėlimų / atsisiuntimų užbaigti, kad užvertumėte programėlę. Dabar visus įkėlimus ir atsisiuntimus galima pristabdyti ir tęsti nuo tos vietos, kurioje sustojote.",
|
||||
"indexingPausedStatusDescription": "Indeksavimas pristabdytas. Jis bus automatiškai tęsiamas, kai įrenginys bus parengtas. Įrenginys laikomas parengtu, kai jo akumuliatoriaus įkrovos lygis, akumuliatoriaus būklė ir terminė būklė yra normos ribose.",
|
||||
"faceThumbnailGenerationFailed": "Nepavyksta sugeneruoti veido miniatiūrų.",
|
||||
"fileAnalysisFailed": "Nepavyksta išanalizuoti failo."
|
||||
}
|
||||
@@ -870,9 +870,9 @@
|
||||
"youCanTrySearchingForADifferentQuery": "Bạn có thể thử tìm kiếm một truy vấn khác.",
|
||||
"noResultsFound": "Không tìm thấy kết quả",
|
||||
"addedBy": "Được thêm bởi {emailOrName}",
|
||||
"loadingExifData": "Đang tải thông số Exif...",
|
||||
"loadingExifData": "Đang lấy thông số Exif...",
|
||||
"viewAllExifData": "Xem thông số Exif",
|
||||
"noExifData": "Không có thông số Exif",
|
||||
"noExifData": "Không có Exif",
|
||||
"thisImageHasNoExifData": "Ảnh này không có thông số Exif",
|
||||
"exif": "Exif",
|
||||
"noResults": "Không có kết quả",
|
||||
@@ -1217,7 +1217,7 @@
|
||||
"searchHint4": "Vị trí",
|
||||
"searchHint5": "Sắp ra mắt: Nhận diện khuôn mặt & tìm kiếm vi diệu ✨",
|
||||
"addYourPhotosNow": "Thêm ảnh của bạn ngay bây giờ",
|
||||
"searchResultCount": "{count, plural, other{{count} kết quả được tìm thấy}}",
|
||||
"searchResultCount": "{count, plural, other{{count} kết quả đã tìm thấy}}",
|
||||
"@searchResultCount": {
|
||||
"description": "Text to tell user how many results were found for their search query",
|
||||
"placeholders": {
|
||||
|
||||
@@ -1,19 +1,12 @@
|
||||
import "dart:async";
|
||||
|
||||
import "package:flutter/material.dart";
|
||||
import "package:photos/core/event_bus.dart";
|
||||
import "package:photos/events/hide_shared_items_from_home_gallery_event.dart";
|
||||
import "package:photos/events/memories_changed_event.dart";
|
||||
import "package:photos/generated/l10n.dart";
|
||||
import "package:photos/service_locator.dart";
|
||||
import "package:photos/services/memory_home_widget_service.dart";
|
||||
import "package:photos/theme/ente_theme.dart";
|
||||
import "package:photos/ui/components/buttons/icon_button_widget.dart";
|
||||
import "package:photos/ui/components/captioned_text_widget.dart";
|
||||
import "package:photos/ui/components/menu_item_widget/menu_item_widget.dart";
|
||||
import "package:photos/ui/components/title_bar_title_widget.dart";
|
||||
import "package:photos/ui/components/title_bar_widget.dart";
|
||||
import "package:photos/ui/components/toggle_switch_widget.dart";
|
||||
import "package:photos/ui/viewer/gallery/component/group/type.dart";
|
||||
import "package:photos/ui/viewer/gallery/gallery_group_type_picker_page.dart";
|
||||
import "package:photos/ui/viewer/gallery/photo_grid_size_picker_page.dart";
|
||||
@@ -130,82 +123,6 @@ class _GallerySettingsScreenState extends State<GallerySettingsScreen> {
|
||||
isGestureDetectorDisabled: true,
|
||||
),
|
||||
),
|
||||
const SizedBox(
|
||||
height: 24,
|
||||
),
|
||||
MenuItemWidget(
|
||||
captionedTextWidget: CaptionedTextWidget(
|
||||
title: S.of(context).showMemories,
|
||||
),
|
||||
menuItemColor: colorScheme.fillFaint,
|
||||
singleBorderRadius: 8,
|
||||
alignCaptionedTextToLeft: true,
|
||||
trailingWidget: ToggleSwitchWidget(
|
||||
value: () => memoriesCacheService.showAnyMemories,
|
||||
onChanged: () async {
|
||||
await memoriesCacheService.setShowAnyMemories(
|
||||
!memoriesCacheService.showAnyMemories,
|
||||
);
|
||||
if (!memoriesCacheService.showAnyMemories) {
|
||||
unawaited(
|
||||
MemoryHomeWidgetService.instance.clearWidget(),
|
||||
);
|
||||
}
|
||||
setState(() {});
|
||||
},
|
||||
),
|
||||
),
|
||||
const SizedBox(
|
||||
height: 24,
|
||||
),
|
||||
memoriesCacheService.curatedMemoriesOption
|
||||
? MenuItemWidget(
|
||||
captionedTextWidget: CaptionedTextWidget(
|
||||
title: S.of(context).curatedMemories,
|
||||
),
|
||||
menuItemColor: colorScheme.fillFaint,
|
||||
singleBorderRadius: 8,
|
||||
alignCaptionedTextToLeft: true,
|
||||
trailingWidget: ToggleSwitchWidget(
|
||||
value: () =>
|
||||
localSettings.isSmartMemoriesEnabled,
|
||||
onChanged: () async {
|
||||
unawaited(_toggleUpdateMemories());
|
||||
},
|
||||
),
|
||||
)
|
||||
: const SizedBox(),
|
||||
memoriesCacheService.curatedMemoriesOption
|
||||
? const SizedBox(
|
||||
height: 24,
|
||||
)
|
||||
: const SizedBox(),
|
||||
MenuItemWidget(
|
||||
captionedTextWidget: CaptionedTextWidget(
|
||||
title: S.of(context).hideSharedItemsFromHomeGallery,
|
||||
),
|
||||
menuItemColor: colorScheme.fillFaint,
|
||||
singleBorderRadius: 8,
|
||||
alignCaptionedTextToLeft: true,
|
||||
trailingWidget: ToggleSwitchWidget(
|
||||
value: () =>
|
||||
localSettings.hideSharedItemsFromHomeGallery,
|
||||
onChanged: () async {
|
||||
final prevSetting =
|
||||
localSettings.hideSharedItemsFromHomeGallery;
|
||||
await localSettings
|
||||
.setHideSharedItemsFromHomeGallery(
|
||||
!prevSetting,
|
||||
);
|
||||
|
||||
Bus.instance.fire(
|
||||
HideSharedItemsFromHomeGalleryEvent(
|
||||
!prevSetting,
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
@@ -218,14 +135,3 @@ class _GallerySettingsScreenState extends State<GallerySettingsScreen> {
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _toggleUpdateMemories() async {
|
||||
await localSettings.setSmartMemories(
|
||||
!localSettings.isSmartMemoriesEnabled,
|
||||
);
|
||||
await memoriesCacheService.clearMemoriesCache(
|
||||
fromDisk: false,
|
||||
);
|
||||
await memoriesCacheService.getMemories();
|
||||
Bus.instance.fire(MemoriesChangedEvent());
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@ import 'package:photos/ui/settings/advanced_settings_screen.dart';
|
||||
import 'package:photos/ui/settings/common_settings.dart';
|
||||
import "package:photos/ui/settings/gallery_settings_screen.dart";
|
||||
import "package:photos/ui/settings/language_picker.dart";
|
||||
import "package:photos/ui/settings/memories_settings_screen.dart";
|
||||
import "package:photos/ui/settings/notification_settings_screen.dart";
|
||||
import "package:photos/ui/settings/widget_settings_screen.dart";
|
||||
import 'package:photos/utils/navigation_util.dart';
|
||||
@@ -47,6 +48,18 @@ class GeneralSectionWidget extends StatelessWidget {
|
||||
},
|
||||
),
|
||||
sectionOptionSpacing,
|
||||
MenuItemWidget(
|
||||
captionedTextWidget: CaptionedTextWidget(
|
||||
title: S.of(context).memories,
|
||||
),
|
||||
pressedColor: getEnteColorScheme(context).fillFaint,
|
||||
trailingIcon: Icons.chevron_right_outlined,
|
||||
trailingIconIsMuted: true,
|
||||
onTap: () async {
|
||||
_onMemoriesSettingsTapped(context);
|
||||
},
|
||||
),
|
||||
sectionOptionSpacing,
|
||||
MenuItemWidget(
|
||||
captionedTextWidget: CaptionedTextWidget(
|
||||
title: S.of(context).referrals,
|
||||
@@ -175,4 +188,11 @@ class GeneralSectionWidget extends StatelessWidget {
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
void _onMemoriesSettingsTapped(BuildContext context) {
|
||||
routeToPage(
|
||||
context,
|
||||
const MemoriesSettingsScreen(),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
154
mobile/apps/photos/lib/ui/settings/memories_settings_screen.dart
Normal file
154
mobile/apps/photos/lib/ui/settings/memories_settings_screen.dart
Normal file
@@ -0,0 +1,154 @@
|
||||
import "dart:async";
|
||||
|
||||
import "package:flutter/material.dart";
|
||||
import "package:photos/core/event_bus.dart";
|
||||
import "package:photos/events/hide_shared_items_from_home_gallery_event.dart";
|
||||
import "package:photos/events/memories_changed_event.dart";
|
||||
import "package:photos/generated/l10n.dart";
|
||||
import "package:photos/service_locator.dart";
|
||||
import "package:photos/services/memory_home_widget_service.dart";
|
||||
import "package:photos/theme/ente_theme.dart";
|
||||
import "package:photos/ui/components/buttons/icon_button_widget.dart";
|
||||
import "package:photos/ui/components/captioned_text_widget.dart";
|
||||
import "package:photos/ui/components/menu_item_widget/menu_item_widget.dart";
|
||||
import "package:photos/ui/components/title_bar_title_widget.dart";
|
||||
import "package:photos/ui/components/title_bar_widget.dart";
|
||||
import "package:photos/ui/components/toggle_switch_widget.dart";
|
||||
|
||||
class MemoriesSettingsScreen extends StatefulWidget {
|
||||
const MemoriesSettingsScreen({
|
||||
super.key,
|
||||
});
|
||||
|
||||
@override
|
||||
State<MemoriesSettingsScreen> createState() => _MemoriesSettingsScreenState();
|
||||
}
|
||||
|
||||
class _MemoriesSettingsScreenState extends State<MemoriesSettingsScreen> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final colorScheme = getEnteColorScheme(context);
|
||||
return Scaffold(
|
||||
body: CustomScrollView(
|
||||
primary: false,
|
||||
slivers: <Widget>[
|
||||
TitleBarWidget(
|
||||
flexibleSpaceTitle: TitleBarTitleWidget(
|
||||
title: S.of(context).memories,
|
||||
),
|
||||
actionIcons: [
|
||||
IconButtonWidget(
|
||||
icon: Icons.close_outlined,
|
||||
iconButtonType: IconButtonType.secondary,
|
||||
onTap: () {
|
||||
Navigator.pop(context);
|
||||
Navigator.pop(context);
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
SliverList(
|
||||
delegate: SliverChildBuilderDelegate(
|
||||
(delegateBuildContext, index) {
|
||||
return Padding(
|
||||
padding:
|
||||
const EdgeInsets.symmetric(horizontal: 16, vertical: 20),
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
MenuItemWidget(
|
||||
captionedTextWidget: CaptionedTextWidget(
|
||||
title: S.of(context).showMemories,
|
||||
),
|
||||
menuItemColor: colorScheme.fillFaint,
|
||||
singleBorderRadius: 8,
|
||||
alignCaptionedTextToLeft: true,
|
||||
trailingWidget: ToggleSwitchWidget(
|
||||
value: () => memoriesCacheService.showAnyMemories,
|
||||
onChanged: () async {
|
||||
await memoriesCacheService.setShowAnyMemories(
|
||||
!memoriesCacheService.showAnyMemories,
|
||||
);
|
||||
if (!memoriesCacheService.showAnyMemories) {
|
||||
unawaited(
|
||||
MemoryHomeWidgetService.instance.clearWidget(),
|
||||
);
|
||||
}
|
||||
setState(() {});
|
||||
},
|
||||
),
|
||||
),
|
||||
const SizedBox(
|
||||
height: 24,
|
||||
),
|
||||
memoriesCacheService.curatedMemoriesOption
|
||||
? MenuItemWidget(
|
||||
captionedTextWidget: CaptionedTextWidget(
|
||||
title: S.of(context).curatedMemories,
|
||||
),
|
||||
menuItemColor: colorScheme.fillFaint,
|
||||
singleBorderRadius: 8,
|
||||
alignCaptionedTextToLeft: true,
|
||||
trailingWidget: ToggleSwitchWidget(
|
||||
value: () =>
|
||||
localSettings.isSmartMemoriesEnabled,
|
||||
onChanged: () async {
|
||||
unawaited(_toggleUpdateMemories());
|
||||
},
|
||||
),
|
||||
)
|
||||
: const SizedBox(),
|
||||
memoriesCacheService.curatedMemoriesOption
|
||||
? const SizedBox(
|
||||
height: 24,
|
||||
)
|
||||
: const SizedBox(),
|
||||
MenuItemWidget(
|
||||
captionedTextWidget: CaptionedTextWidget(
|
||||
title: S.of(context).hideSharedItemsFromHomeGallery,
|
||||
),
|
||||
menuItemColor: colorScheme.fillFaint,
|
||||
singleBorderRadius: 8,
|
||||
alignCaptionedTextToLeft: true,
|
||||
trailingWidget: ToggleSwitchWidget(
|
||||
value: () =>
|
||||
localSettings.hideSharedItemsFromHomeGallery,
|
||||
onChanged: () async {
|
||||
final prevSetting =
|
||||
localSettings.hideSharedItemsFromHomeGallery;
|
||||
await localSettings
|
||||
.setHideSharedItemsFromHomeGallery(
|
||||
!prevSetting,
|
||||
);
|
||||
|
||||
Bus.instance.fire(
|
||||
HideSharedItemsFromHomeGalleryEvent(
|
||||
!prevSetting,
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
},
|
||||
childCount: 1,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _toggleUpdateMemories() async {
|
||||
await localSettings.setSmartMemories(
|
||||
!localSettings.isSmartMemoriesEnabled,
|
||||
);
|
||||
await memoriesCacheService.clearMemoriesCache(
|
||||
fromDisk: false,
|
||||
);
|
||||
await memoriesCacheService.getMemories();
|
||||
Bus.instance.fire(MemoriesChangedEvent());
|
||||
}
|
||||
@@ -1,6 +1,5 @@
|
||||
{
|
||||
"tabWidth": 4,
|
||||
"proseWrap": "always",
|
||||
"objectWrap": "collapse",
|
||||
"plugins": [
|
||||
"prettier-plugin-organize-imports",
|
||||
|
||||
@@ -162,7 +162,7 @@
|
||||
"ok": "Gerai",
|
||||
"success": "Pavyko",
|
||||
"error": "Klaida",
|
||||
"note": "",
|
||||
"note": "Pastaba",
|
||||
"offline_message": "Esate neprisijungę. Rodomi prisiminimai iš podėlio.",
|
||||
"install": "Diegti",
|
||||
"install_mobile_app": "Įdiekite mūsų <a>„Android“</a> arba <b>„iOS“</b> programą, kad automatiškai sukurtumėte atsargines visų nuotraukų kopijas",
|
||||
@@ -685,5 +685,5 @@
|
||||
"person_favorites": "{{name}} mėgstami",
|
||||
"shared_favorites": "Bendrinami mėgstami",
|
||||
"added_by_name": "Įtraukė {{name}}",
|
||||
"unowned_files_not_processed": ""
|
||||
"unowned_files_not_processed": "Kiti naudotojai pridėti failai nebuvo apdoroti"
|
||||
}
|
||||
|
||||
@@ -283,7 +283,7 @@
|
||||
"disable_maps_confirm_message": "<p>Ảnh của bạn sẽ thôi hiển thị trên bản đồ thế giới.</p><p>Bạn có thể bật tính năng này bất cứ lúc nào từ Cài đặt.</p>",
|
||||
"details": "Chi tiết",
|
||||
"view_exif": "Xem thông số Exif",
|
||||
"no_exif": "No Exif data",
|
||||
"no_exif": "Không có Exif",
|
||||
"exif": "Exif",
|
||||
"two_factor": "Xác thực 2 bước",
|
||||
"two_factor_authentication": "Xác thực 2 bước",
|
||||
|
||||
Reference in New Issue
Block a user