Merge branch 'main' into file_embedding

This commit is contained in:
Neeraj Gupta 2024-03-18 13:12:14 +05:30
commit b9ec72bbb4
170 changed files with 4118 additions and 1960 deletions

View file

@ -9,8 +9,8 @@ on:
- ".github/workflows/auth-crowdin.yml"
branches: [main]
schedule:
# See: [Note: Run every 24 hours]
- cron: "50 1 * * *"
# See: [Note: Run workflow on specific days of the week]
- cron: "50 1 * * 2,5"
# Also allow manually running the workflow
workflow_dispatch:

View file

@ -0,0 +1,24 @@
name: "Release (copycat-db)"
on:
workflow_dispatch: # Run manually
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
name: Check out code
- uses: mr-smithers-excellent/docker-build-push@v6
name: Build & Push
with:
dockerfile: infra/copycat-db/Dockerfile
directory: infra/copycat-db
image: ente/copycat-db
registry: rg.fr-par.scw.cloud
enableBuildKit: true
buildArgs: GIT_COMMIT=${GITHUB_SHA}
tags: ${GITHUB_SHA}, latest
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}

View file

@ -9,8 +9,8 @@ on:
- ".github/workflows/mobile-crowdin.yml"
branches: [main]
schedule:
# See: [Note: Run every 24 hours]
- cron: "40 1 * * *"
# See: [Note: Run workflow on specific days of the week]
- cron: "40 1 * * 2,5"
# Also allow manually running the workflow
workflow_dispatch:

View file

@ -9,8 +9,14 @@ on:
- ".github/workflows/web-crowdin.yml"
branches: [main]
schedule:
# See: [Note: Run every 24 hours]
- cron: "20 1 * * *"
# [Note: Run workflow on specific days of the week]
#
# The last (5th) component of the cron syntax denotes the day of the
# week, with 0 == SUN and 6 == SAT. So, for example, to run on every TUE
# and FRI, this can be set to `2,5`.
#
# See also: [Note: Run workflow every 24 hours]
- cron: "20 1 * * 2,5"
# Also allow manually running the workflow
workflow_dispatch:

View file

@ -2,7 +2,7 @@ name: "Nightly (web)"
on:
schedule:
# [Note: Run every 24 hours]
# [Note: Run workflow every 24 hours]
#
# Run every 24 hours - First field is minute, second is hour of the day
# This runs 23:15 UTC everyday - 1 and 15 are just arbitrary offset to

3
auth/.gitignore vendored
View file

@ -9,6 +9,9 @@
.history
.svn/
# Editors
.vscode/
# IntelliJ related
*.iml
*.ipr

View file

@ -267,6 +267,10 @@
"title": "Revolt",
"hex": "858585"
},
{
"title": "Rockstar Games",
"slug": "rockstar_games"
},
{
"title": "Rust Language Forum",
"slug": "rust_language_forum",

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="6.525 7.459 339.266 319.582"><path fill="orange" d="M71.598 11.25H280.72c33.844 0 61.282 25.782 61.282 57.586v196.512c0 31.804-27.437 57.586-61.282 57.586H71.598c-33.845 0-61.28-25.782-61.28-57.586V68.836c0-31.804 27.435-57.586 61.28-57.586z"/><path d="M280.719 326.725H71.598c-35.881 0-65.072-27.533-65.072-61.377V68.836c0-33.844 29.19-61.377 65.072-61.377H280.72c35.88 0 65.072 27.533 65.072 61.377v196.512c0 33.844-29.192 61.377-65.073 61.377zM71.598 15.042c-31.7 0-57.49 24.131-57.49 53.794v196.512c0 29.662 25.79 53.794 57.49 53.794H280.72c31.7 0 57.49-24.132 57.49-53.794V68.836c0-29.662-25.79-53.794-57.49-53.794H71.598z"/><path d="M127.423 64.013l62.975.149c13.161-.099 22.989 2.002 29.48 6.303 7.928 5.272 11.89 14.343 11.89 27.213 0 21.19-9.828 33.195-29.482 36.012v.297c8.667 2.159 13.048 9.335 13.146 21.528 0 6.245-.233 14.245-.7 24 0 6.542 1.384 12.202 4.156 16.98H184.38c-1.611-1.747-2.416-5.305-2.416-10.677.66-8.98.99-16.347.99-22.098 0-11.617-5.582-17.425-16.746-17.425h-22.329l-9.738 46.987h-33.613l26.895-129.269zm53.236 26.941h-24.744l-6.453 31.192h26.775c14.967 0 22.497-5.906 22.595-17.721.001-8.98-6.058-13.47-18.173-13.47z"/><path d="M223.456 196.346l24.915-43.18 6.717 43.478h42.506l-38.349 27.534 6.14 43.18-33.204-26.05-44.633 27.089 20.878-45.973-24.333-26.2 39.363.122zm113.568 113.887c1.38 0 2.726.362 4.04 1.086 1.315.723 2.339 1.76 3.07 3.108.735 1.348 1.101 2.753 1.101 4.216 0 1.449-.36 2.841-1.084 4.177a7.735 7.735 0 01-3.039 3.114c-1.302.74-2.665 1.108-4.09 1.108-1.421 0-2.784-.37-4.089-1.108a7.762 7.762 0 01-3.044-3.114c-.725-1.336-1.089-2.73-1.089-4.177 0-1.463.369-2.868 1.106-4.216.738-1.348 1.763-2.384 3.077-3.108 1.316-.725 2.662-1.086 4.04-1.086zm0 1.391c-1.154 0-2.278.303-3.37.909a6.451 6.451 0 00-2.566 2.594c-.617 1.126-.926 2.297-.926 3.514 0 1.211.304 2.372.91 3.482a6.542 6.542 0 002.542 2.596c1.089.619 2.224.93 3.409.93 1.183 0 2.32-.311 3.41-.93a6.498 6.498 0 002.536-2.596c.603-1.11.904-2.27.904-3.482 0-1.218-.308-2.388-.92-3.514a6.39 6.39 0 00-2.565-2.594c-1.094-.606-2.216-.909-3.364-.909zm-3.604 11.664v-9.045h3.038c1.039 0 1.79.083 2.254.25.466.167.835.459 1.11.875.277.416.415.857.415 1.325 0 .661-.23 1.237-.692 1.726-.46.49-1.072.764-1.835.824.312.135.563.294.75.48.358.356.792.954 1.308 1.792l1.078 1.772h-1.742l-.783-1.426c-.617-1.12-1.115-1.823-1.492-2.105-.262-.209-.643-.313-1.145-.313h-.838v3.844h-1.426zm1.426-5.092h1.732c.829 0 1.393-.126 1.694-.38.3-.25.451-.586.451-1.002a1.24 1.24 0 00-.218-.718 1.302 1.302 0 00-.604-.473c-.258-.103-.734-.157-1.431-.157h-1.624v2.73z"/><path fill="#FFF" d="M252.503 221.088l25.47-18.142h-28.177l-4.881-31.464-17.882 31.168h-28.467l17.302 18.587-14.305 31.193 31.052-18.735 24.48 19.18-4.592-31.787z"/></svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

View file

@ -1,7 +1,14 @@
# Releases
Create a PR to bump up the version in `pubspec.yaml`. Once that is merged, tag
main, and push the tag.
Create a PR to bump up the version in `pubspec.yaml`.
> [!NOTE]
>
> Use [semver](https://semver.org/) for the tags, with `auth-` as a prefix.
> Multiple beta releases for the same upcoming version can be done by adding
> build metadata at the end, e.g. `auth-v1.2.3-beta+3`.
Once that is merged, tag main, and push the tag.
```sh
git tag auth-v1.2.3
@ -16,6 +23,11 @@ This'll trigger a GitHub workflow that:
* Creates a new release in the internal track on Play Store.
Once the workflow completes, go to the draft GitHub release that was created.
> [!NOTE]
>
> Keep the title of the release same as the tag.
Set "Previous tag" to the last release of auth and press "Generate release
notes". The generated release note will contain all PRs and new contributors
from all the releases in the monorepo, so you'll need to filter them to keep

@ -1 +1 @@
Subproject commit 41456452f29d64e8deb623a3c927524bcf9f111b
Subproject commit 367f9ea16bfae1ca451b9cc27c1366870b187ae2

View file

@ -407,7 +407,6 @@
"hearUsWhereTitle": "Wie hast du von Ente erfahren? (optional)",
"hearUsExplanation": "Wir tracken keine App-Installationen. Es würde uns jedoch helfen, wenn du uns mitteilst, wie du von uns erfahren hast!",
"waitingForBrowserRequest": "Warten auf Browseranfrage...",
"launchPasskeyUrlAgain": "Passwort-URL erneut starten",
"passkey": "Passkey",
"developerSettingsWarning": "Sind Sie sicher, dass Sie die Entwicklereinstellungen ändern möchten?",
"developerSettings": "Entwicklereinstellungen",

View file

@ -145,6 +145,7 @@
"lostDeviceTitle": "デバイスを紛失しましたか?",
"twoFactorAuthTitle": "2 要素認証",
"passkeyAuthTitle": "パスキー認証",
"verifyPasskey": "パスキーの認証",
"recoverAccount": "アカウントを回復",
"enterRecoveryKeyHint": "回復キーを入力",
"recover": "回復",
@ -407,7 +408,7 @@
"hearUsWhereTitle": "Ente についてどのようにお聞きになりましたか?(任意)",
"hearUsExplanation": "私たちはアプリのインストールを追跡していません。私たちをお知りになった場所を教えてください!",
"waitingForBrowserRequest": "ブラウザのリクエストを待っています...",
"launchPasskeyUrlAgain": "パスキーのURLを再度起動する",
"waitingForVerification": "認証を待っています...",
"passkey": "パスキー",
"developerSettingsWarning": "開発者向け設定を変更してもよろしいですか?",
"developerSettings": "開発者向け設定",

View file

@ -145,6 +145,7 @@
"lostDeviceTitle": "Perdeu seu dispositivo?",
"twoFactorAuthTitle": "Autenticação de dois fatores",
"passkeyAuthTitle": "Autenticação via Chave de acesso",
"verifyPasskey": "Verificar chave de acesso",
"recoverAccount": "Recuperar conta",
"enterRecoveryKeyHint": "Digite sua chave de recuperação",
"recover": "Recuperar",
@ -407,7 +408,7 @@
"hearUsWhereTitle": "Como você ouviu sobre o Ente? (opcional)",
"hearUsExplanation": "Não rastreamos instalações do aplicativo. Seria útil se você nos contasse onde nos encontrou!",
"waitingForBrowserRequest": "Aguardando solicitação do navegador...",
"launchPasskeyUrlAgain": "Iniciar a URL de chave de acesso novamente",
"waitingForVerification": "Esperando por verificação...",
"passkey": "Chave de acesso",
"developerSettingsWarning": "Tem certeza de que deseja modificar as configurações de Desenvolvedor?",
"developerSettings": "Configurações de desenvolvedor",

View file

@ -145,6 +145,7 @@
"lostDeviceTitle": "丢失了设备吗?",
"twoFactorAuthTitle": "双因素认证",
"passkeyAuthTitle": "通行密钥认证",
"verifyPasskey": "验证通行密钥",
"recoverAccount": "恢复账户",
"enterRecoveryKeyHint": "输入您的恢复密钥",
"recover": "恢复",
@ -407,7 +408,7 @@
"hearUsWhereTitle": "您是如何知道Ente的 (可选的)",
"hearUsExplanation": "我们不跟踪应用程序安装情况。如果您告诉我们您是在哪里找到我们的,将会有所帮助!",
"waitingForBrowserRequest": "正在等待浏览器请求...",
"launchPasskeyUrlAgain": "再次启动 通行密钥 URL",
"waitingForVerification": "等待验证...",
"passkey": "通行密钥",
"developerSettingsWarning": "您确定要修改开发者设置吗?",
"developerSettings": "开发者设置",

View file

@ -0,0 +1,4 @@
Migration guides have moved to the [help
docs](https://help.ente.io/auth/migration-guides/). This folder just contains
redirects for old links.

View file

@ -1,62 +1,2 @@
# Migrating from Authy
A guide written by Green, an ente.io lover
---
Migrating from Authy can be tiring, as you cannot export your 2FA codes through the app, meaning that you would have to reconfigure 2FA for all of your accounts for your new 2FA authenticator. But do not fear, as there is a much simpler way to migrate from Authy to ente!
A user on GitHub has written a guide to export our data from Authy (morpheus on Discord found this and showed it to us), so we are going to be using that for the migration.
## Exporting from Authy
To export your data, please follow [this guide](https://gist.github.com/gboudreau/94bb0c11a6209c82418d01a59d958c93). This will create a new JSON file with all your Authy TOTP data in it. **Do not share this file with anyone!**
Or, you can [use this tool by Neeraj](https://github.com/ua741/authy-export/releases/tag/v0.0.4) to simplify things and skip directly to importing to ente Authenticator.
### *Do note that these tools may not export ALL of your codes. Make sure that all your accounts have been imported successfully before deleting any codes from your Authy account!*
## Converting the export for ente Authenticator
### Update: You can now directly import from Bitwarden JSON export, meaning you can skip this step! If it doesn't work for some reason, though, then continue with this step.
So now that you have the JSON file, does that mean it can be imported into ente Authenticator? Yes, but if it doesn't work for some reason, then nope. (If you have a TXT file in the format ente Authenticator asked you for instead, then you probably used Neeraj's tool, so you can skip this step.)
This is because the code in the guide exports your Authy data for Bitwarden, not ente Authenticator. If you have opened the JSON file, you might have noticed that the file created is not in a format that ente Authenticator asks for:
<img width="454" alt="ente Authenticator Screenshot" src="https://github.com/gweeeen/auth/assets/41323182/30566a69-cfa0-4de0-9f0d-95967d4c5cad">
So, this means that even if you try to import this file, nothing will happen. But don't worry, I've written a program in Python that converts the JSON file into a TXT file that ente Authenticator can use! (It's definitely not written **professionaly**, but hey it gets the job done so I'm happy with that.)
You can download my program [here](https://github.com/gweeeen/ducky/blob/main/duckys_other_stuff/authy_to_ente.py). Or if you **really like making life hard**, then you can make a new Python file and copy this code to it:
```py
import json
import os
totp = []
accounts = json.load(open('authy-to-bitwarden-export.json','r',encoding='utf-8'))
for account in accounts['items']:
totp.append(account['login']['totp']+'\n')
writer = open('auth_codes.txt','w+',encoding='utf-8')
writer.writelines(totp)
writer.close()
print('Saved to ' + os.getcwd() + '/auth_codes.txt')
```
To convert the file with this program, you will need to install [Python](https://www.python.org/downloads/) on your computer.
Before you run the program, make sure that both the Python program and the JSON file are in the same directory, otherwise this will not work!
To run the Python program, open it in IDLE and press F5, or open your terminal and type `python3 authy_to_ente.py` or `py -3 authy_to_ente.py`, depending on which OS you have. Once you run it, a new TXT file called `auth_codes.txt` will be generated. You can now import your data to ente Authenticator!
## Importing to ente Authenticator
Now that we have the TXT file, let's import it. This should be the easiest part of the entire migration process.
1. Copy the TXT file to one of your devices with ente Authenticator.
2. Log in to your account (if you haven't already).
3. Open the navigation menu (hamburger button on the top left), then press "Data", then press "Import codes".
4. Select the TXT file that was made earlier.
And that's it! You have now successfully migrated from Authy to ente Authenticator.
Just one more thing: Now that your secrets are safely stored, I recommend you delete the unencrypted JSON and TXT files that were made during the migration process for security.
Moved to
[help.ente.io/auth/migration-guides/authy](https://help.ente.io/auth/migration-guides/authy/)

View file

@ -1,63 +1,2 @@
# Auth Encrypted Export format
## Overview
When we export the auth codes, the data is encrypted using a key derived from the user's password.
This document describes the JSON structure used to organize exported data, including versioning and key derivation
parameters.
## Export JSON Sample
```json
{
"version": 1,
"kdfParams": {
"memLimit": 4096,
"opsLimit": 3,
"salt": "example_salt"
},
"encryptedData": "encrypted_data_here",
"encryptionNonce": "nonce_here"
}
```
The main object used to represent the export data. It contains the following key-value pairs:
- `version`: The version of the export format.
- `kdfParams`: Key derivation function parameters.
- `encryptedData"`: The encrypted authentication data.
- `encryptionNonce`: The nonce used for encryption.
### Version
Export version is used to identify the format of the export data.
#### Ver: 1
* KDF Algorithm: `ARGON2ID`
* Decrypted data format: `otpauth://totp/...`, separated by a new line.
* Encryption Algo: `XChaCha20-Poly1305`
#### Key Derivation Function Params (KDF)
This section contains the parameters that were using during KDF operation:
- `memLimit`: Memory limit for the algorithm.
- `opsLimit`: Operations limit for the algorithm.
- `salt`: The salt used in the derivation process.
#### Encrypted Data
As mentioned above, the auth data is encrypted using a key that's derived by using user provided password & kdf params.
For encryption, we are using `XChaCha20-Poly1305` algorithm.
## How to use the exported data
* **Ente Authenticator app**: You can directly import the codes in the Ente Authenticator app.
> Settings -> Data -> Import Codes -> ente Encrypted export.
* **Decrypt using Ente CLI** : Download the latest version of [Ente CLI](https://github.com/ente-io/ente/releases?q=CLI&expanded=false), and run the following command
```
./ente auth decrypt <export_file> <output_file>
```
Moved to
[help.ente.io/auth/migration-guides/export](https://help.ente.io/auth/migration-guides/export/)

1
cli/.gitattributes vendored Normal file
View file

@ -0,0 +1 @@
docs/generated/*.md linguist-generated=true

View file

@ -7,7 +7,7 @@ use it to decrypting the export from Ente Auth.
## Install
The easiest way is to download a pre-built binary from the [GitHub
releases](https://github.com/ente-io/ente/releases?q=tag%3Acli-v0&expanded=true).
releases](https://github.com/ente-io/ente/releases?q=tag%3Acli-v0).
You can also build these binaries yourself

View file

@ -29,6 +29,9 @@ var _userDetailsCmd = &cobra.Command{
flags.UserEmail = f.Value.String()
}
})
if flags.UserEmail == "" {
return fmt.Errorf("user email is required")
}
return ctrl.GetUserId(context.Background(), *flags)
},
}
@ -47,14 +50,55 @@ var _disable2faCmd = &cobra.Command{
flags.UserEmail = f.Value.String()
}
})
fmt.Println("Not supported yet")
return nil
if flags.UserEmail == "" {
return fmt.Errorf("user email is required")
}
return ctrl.Disable2FA(context.Background(), *flags)
},
}
var _deleteUser = &cobra.Command{
Use: "delete-user",
Short: "Delete a user",
RunE: func(cmd *cobra.Command, args []string) error {
recoverWithLog()
var flags = &model.AdminActionForUser{}
cmd.Flags().VisitAll(func(f *pflag.Flag) {
if f.Name == "admin-user" {
flags.AdminEmail = f.Value.String()
}
if f.Name == "user" {
flags.UserEmail = f.Value.String()
}
})
if flags.UserEmail == "" {
return fmt.Errorf("user email is required")
}
return ctrl.DeleteUser(context.Background(), *flags)
},
}
var _listUsers = &cobra.Command{
Use: "list-users",
Short: "List all users",
RunE: func(cmd *cobra.Command, args []string) error {
recoverWithLog()
var flags = &model.AdminActionForUser{}
cmd.Flags().VisitAll(func(f *pflag.Flag) {
if f.Name == "admin-user" {
flags.AdminEmail = f.Value.String()
}
})
return ctrl.ListUsers(context.Background(), *flags)
},
}
var _updateFreeUserStorage = &cobra.Command{
Use: "update-subscription",
Short: "Update subscription for the free user",
Short: "Update subscription for user",
Long: "Update subscription for the free user. If you want to apply specific limits, use the `--no-limit False` flag",
RunE: func(cmd *cobra.Command, args []string) error {
recoverWithLog()
var flags = &model.AdminActionForUser{}
@ -70,6 +114,9 @@ var _updateFreeUserStorage = &cobra.Command{
noLimit = strings.ToLower(f.Value.String()) == "true"
}
})
if flags.UserEmail == "" {
return fmt.Errorf("user email is required")
}
return ctrl.UpdateFreeStorage(context.Background(), *flags, noLimit)
},
}
@ -78,13 +125,16 @@ func init() {
rootCmd.AddCommand(_adminCmd)
_ = _userDetailsCmd.MarkFlagRequired("admin-user")
_ = _userDetailsCmd.MarkFlagRequired("user")
_userDetailsCmd.Flags().StringP("admin-user", "a", "", "The email of the admin user. (required)")
_userDetailsCmd.Flags().StringP("admin-user", "a", "", "The email of the admin user. ")
_userDetailsCmd.Flags().StringP("user", "u", "", "The email of the user to fetch details for. (required)")
_disable2faCmd.Flags().StringP("admin-user", "a", "", "The email of the admin user. (required)")
_listUsers.Flags().StringP("admin-user", "a", "", "The email of the admin user. ")
_disable2faCmd.Flags().StringP("admin-user", "a", "", "The email of the admin user. ")
_disable2faCmd.Flags().StringP("user", "u", "", "The email of the user to disable 2FA for. (required)")
_updateFreeUserStorage.Flags().StringP("admin-user", "a", "", "The email of the admin user. (required)")
_deleteUser.Flags().StringP("admin-user", "a", "", "The email of the admin user. ")
_deleteUser.Flags().StringP("user", "u", "", "The email of the user to delete. (required)")
_updateFreeUserStorage.Flags().StringP("admin-user", "a", "", "The email of the admin user.")
_updateFreeUserStorage.Flags().StringP("user", "u", "", "The email of the user to update subscription for. (required)")
// add a flag with no value --no-limit
_updateFreeUserStorage.Flags().String("no-limit", "True", "When true, sets 100TB as storage limit, and expiry to current date + 100 years")
_adminCmd.AddCommand(_userDetailsCmd, _disable2faCmd, _updateFreeUserStorage)
_adminCmd.AddCommand(_userDetailsCmd, _disable2faCmd, _updateFreeUserStorage, _listUsers, _deleteUser)
}

View file

@ -25,4 +25,4 @@ ente [flags]
* [ente export](ente_export.md) - Starts the export process
* [ente version](ente_version.md) - Prints the current version
###### Auto generated by spf13/cobra on 13-Mar-2024
###### Auto generated by spf13/cobra on 14-Mar-2024

View file

@ -16,4 +16,4 @@ Manage account settings
* [ente account list](ente_account_list.md) - list configured accounts
* [ente account update](ente_account_update.md) - Update an existing account's export directory
###### Auto generated by spf13/cobra on 13-Mar-2024
###### Auto generated by spf13/cobra on 14-Mar-2024

View file

@ -16,4 +16,4 @@ ente account add [flags]
* [ente account](ente_account.md) - Manage account settings
###### Auto generated by spf13/cobra on 13-Mar-2024
###### Auto generated by spf13/cobra on 14-Mar-2024

View file

@ -18,4 +18,4 @@ ente account get-token [flags]
* [ente account](ente_account.md) - Manage account settings
###### Auto generated by spf13/cobra on 13-Mar-2024
###### Auto generated by spf13/cobra on 14-Mar-2024

View file

@ -16,4 +16,4 @@ ente account list [flags]
* [ente account](ente_account.md) - Manage account settings
###### Auto generated by spf13/cobra on 13-Mar-2024
###### Auto generated by spf13/cobra on 14-Mar-2024

View file

@ -19,4 +19,4 @@ ente account update [flags]
* [ente account](ente_account.md) - Manage account settings
###### Auto generated by spf13/cobra on 13-Mar-2024
###### Auto generated by spf13/cobra on 14-Mar-2024

View file

@ -15,8 +15,10 @@ Commands for admin actions like disable or enabling 2fa, bumping up the storage
### SEE ALSO
* [ente](ente.md) - CLI tool for exporting your photos from ente.io
* [ente admin delete-user](ente_admin_delete-user.md) - Delete a user
* [ente admin disable-2fa](ente_admin_disable-2fa.md) - Disable 2fa for a user
* [ente admin get-user-id](ente_admin_get-user-id.md) - Get user id
* [ente admin update-subscription](ente_admin_update-subscription.md) - Update subscription for the free user
* [ente admin list-users](ente_admin_list-users.md) - List all users
* [ente admin update-subscription](ente_admin_update-subscription.md) - Update subscription for user
###### Auto generated by spf13/cobra on 13-Mar-2024
###### Auto generated by spf13/cobra on 14-Mar-2024

View file

@ -0,0 +1,21 @@
## ente admin delete-user
Delete a user
```
ente admin delete-user [flags]
```
### Options
```
-a, --admin-user string The email of the admin user.
-h, --help help for delete-user
-u, --user string The email of the user to delete. (required)
```
### SEE ALSO
* [ente admin](ente_admin.md) - Commands for admin actions
###### Auto generated by spf13/cobra on 14-Mar-2024

View file

@ -9,7 +9,7 @@ ente admin disable-2fa [flags]
### Options
```
-a, --admin-user string The email of the admin user. (required)
-a, --admin-user string The email of the admin user.
-h, --help help for disable-2fa
-u, --user string The email of the user to disable 2FA for. (required)
```
@ -18,4 +18,4 @@ ente admin disable-2fa [flags]
* [ente admin](ente_admin.md) - Commands for admin actions
###### Auto generated by spf13/cobra on 13-Mar-2024
###### Auto generated by spf13/cobra on 14-Mar-2024

View file

@ -9,7 +9,7 @@ ente admin get-user-id [flags]
### Options
```
-a, --admin-user string The email of the admin user. (required)
-a, --admin-user string The email of the admin user.
-h, --help help for get-user-id
-u, --user string The email of the user to fetch details for. (required)
```
@ -18,4 +18,4 @@ ente admin get-user-id [flags]
* [ente admin](ente_admin.md) - Commands for admin actions
###### Auto generated by spf13/cobra on 13-Mar-2024
###### Auto generated by spf13/cobra on 14-Mar-2024

View file

@ -0,0 +1,20 @@
## ente admin list-users
List all users
```
ente admin list-users [flags]
```
### Options
```
-a, --admin-user string The email of the admin user.
-h, --help help for list-users
```
### SEE ALSO
* [ente admin](ente_admin.md) - Commands for admin actions
###### Auto generated by spf13/cobra on 14-Mar-2024

View file

@ -1,6 +1,10 @@
## ente admin update-subscription
Update subscription for the free user
Update subscription for user
### Synopsis
Update subscription for the free user. If you want to apply specific limits, use the `--no-limit False` flag
```
ente admin update-subscription [flags]
@ -9,7 +13,7 @@ ente admin update-subscription [flags]
### Options
```
-a, --admin-user string The email of the admin user. (required)
-a, --admin-user string The email of the admin user.
-h, --help help for update-subscription
--no-limit string When true, sets 100TB as storage limit, and expiry to current date + 100 years (default "True")
-u, --user string The email of the user to update subscription for. (required)
@ -19,4 +23,4 @@ ente admin update-subscription [flags]
* [ente admin](ente_admin.md) - Commands for admin actions
###### Auto generated by spf13/cobra on 13-Mar-2024
###### Auto generated by spf13/cobra on 14-Mar-2024

View file

@ -13,4 +13,4 @@ Authenticator commands
* [ente](ente.md) - CLI tool for exporting your photos from ente.io
* [ente auth decrypt](ente_auth_decrypt.md) - Decrypt authenticator export
###### Auto generated by spf13/cobra on 13-Mar-2024
###### Auto generated by spf13/cobra on 14-Mar-2024

View file

@ -16,4 +16,4 @@ ente auth decrypt [input] [output] [flags]
* [ente auth](ente_auth.md) - Authenticator commands
###### Auto generated by spf13/cobra on 13-Mar-2024
###### Auto generated by spf13/cobra on 14-Mar-2024

View file

@ -16,4 +16,4 @@ ente export [flags]
* [ente](ente.md) - CLI tool for exporting your photos from ente.io
###### Auto generated by spf13/cobra on 13-Mar-2024
###### Auto generated by spf13/cobra on 14-Mar-2024

View file

@ -16,4 +16,4 @@ ente version [flags]
* [ente](ente.md) - CLI tool for exporting your photos from ente.io
###### Auto generated by spf13/cobra on 13-Mar-2024
###### Auto generated by spf13/cobra on 14-Mar-2024

View file

@ -2,6 +2,11 @@
Tag main, and push the tag.
> [!NOTE]
>
> See [auth/docs/release](../../auth/docs/release.md) for more details about the
> tag format. The prefix for cli releases should be `cli-`.
```sh
git tag cli-v1.2.3
git push origin cli-v1.2.3

View file

@ -25,6 +25,69 @@ func (c *Client) GetUserIdFromEmail(ctx context.Context, email string) (*models.
}
return &res, nil
}
func (c *Client) ListUsers(ctx context.Context) ([]models.User, error) {
var res struct {
Users []models.User `json:"users"`
}
r, err := c.restClient.R().
SetContext(ctx).
SetQueryParam("sinceTime", "0").
SetResult(&res).
Get("/admin/users/")
if err != nil {
return nil, err
}
if r.IsError() {
return nil, &ApiError{
StatusCode: r.StatusCode(),
Message: r.String(),
}
}
return res.Users, nil
}
func (c *Client) DeleteUser(ctx context.Context, email string) error {
r, err := c.restClient.R().
SetContext(ctx).
SetQueryParam("email", email).
Delete("/admin/user/delete")
if err != nil {
return err
}
if r.IsError() {
return &ApiError{
StatusCode: r.StatusCode(),
Message: r.String(),
}
}
return nil
}
func (c *Client) Disable2Fa(ctx context.Context, userID int64) error {
var res interface{}
payload := map[string]interface{}{
"userID": userID,
}
r, err := c.restClient.R().
SetContext(ctx).
SetResult(&res).
SetBody(payload).
Post("/admin/user/disable-2fa")
if err != nil {
return err
}
if r.IsError() {
return &ApiError{
StatusCode: r.StatusCode(),
Message: r.String(),
}
}
return nil
}
func (c *Client) UpdateFreePlanSub(ctx context.Context, userDetails *models.UserDetails, storageInBytes int64, expiryTimeInMicro int64) error {
var res interface{}
if userDetails.Subscription.ProductID != "free" {

View file

@ -1,9 +1,7 @@
package models
type UserDetails struct {
User struct {
ID int64 `json:"id"`
} `json:"user"`
User User `json:"user"`
Usage int64 `json:"usage"`
Email string `json:"email"`
@ -14,3 +12,10 @@ type UserDetails struct {
PaymentProvider string `json:"paymentProvider"`
} `json:"subscription"`
}
type User struct {
ID int64
Email string `json:"email"`
Hash string `json:"hash"`
CreationTime int64 `json:"creationTime"`
}

View file

@ -4,6 +4,7 @@ import (
"context"
"fmt"
"github.com/ente-io/cli/internal"
"github.com/ente-io/cli/internal/api"
"github.com/ente-io/cli/pkg/model"
"github.com/ente-io/cli/utils"
"log"
@ -24,6 +25,63 @@ func (c *ClICtrl) GetUserId(ctx context.Context, params model.AdminActionForUser
return nil
}
func (c *ClICtrl) ListUsers(ctx context.Context, params model.AdminActionForUser) error {
accountCtx, err := c.buildAdminContext(ctx, params.AdminEmail)
if err != nil {
return err
}
users, err := c.Client.ListUsers(accountCtx)
if err != nil {
if apiErr, ok := err.(*api.ApiError); ok && apiErr.StatusCode == 400 && strings.Contains(apiErr.Message, "Token is too old") {
fmt.Printf("Error: old admin token, please re-authenticate using `ente account add` \n")
return nil
}
return err
}
for _, user := range users {
fmt.Printf("Email: %s, ID: %d, Created: %s\n", user.Email, user.ID, time.UnixMicro(user.CreationTime).Format("2006-01-02"))
}
return nil
}
func (c *ClICtrl) DeleteUser(ctx context.Context, params model.AdminActionForUser) error {
accountCtx, err := c.buildAdminContext(ctx, params.AdminEmail)
if err != nil {
return err
}
err = c.Client.DeleteUser(accountCtx, params.UserEmail)
if err != nil {
if apiErr, ok := err.(*api.ApiError); ok && apiErr.StatusCode == 400 && strings.Contains(apiErr.Message, "Token is too old") {
fmt.Printf("Error: old admin token, please re-authenticate using `ente account add` \n")
return nil
}
return err
}
fmt.Println("Successfully deleted user")
return nil
}
func (c *ClICtrl) Disable2FA(ctx context.Context, params model.AdminActionForUser) error {
accountCtx, err := c.buildAdminContext(ctx, params.AdminEmail)
if err != nil {
return err
}
userDetails, err := c.Client.GetUserIdFromEmail(accountCtx, params.UserEmail)
if err != nil {
return err
}
err = c.Client.Disable2Fa(accountCtx, userDetails.User.ID)
if err != nil {
if apiErr, ok := err.(*api.ApiError); ok && apiErr.StatusCode == 400 && strings.Contains(apiErr.Message, "Token is too old") {
fmt.Printf("Error: Old admin token, please re-authenticate using `ente account add` \n")
return nil
}
return err
}
fmt.Println("Successfully disabled 2FA for user")
return nil
}
func (c *ClICtrl) UpdateFreeStorage(ctx context.Context, params model.AdminActionForUser, noLimit bool) error {
accountCtx, err := c.buildAdminContext(ctx, params.AdminEmail)
if err != nil {
@ -82,6 +140,9 @@ func (c *ClICtrl) buildAdminContext(ctx context.Context, adminEmail string) (con
if err != nil {
return nil, err
}
if len(accounts) == 0 {
return nil, fmt.Errorf("no accounts found, use `account add` to add an account")
}
var acc *model.Account
for _, a := range accounts {
if a.Email == adminEmail {
@ -89,6 +150,14 @@ func (c *ClICtrl) buildAdminContext(ctx context.Context, adminEmail string) (con
break
}
}
if (len(accounts) > 1) && (acc == nil) {
return nil, fmt.Errorf("multiple accounts found, specify the admin email using --admin-user")
}
if acc == nil && len(accounts) == 1 {
acc = &accounts[0]
fmt.Printf("Assuming %s as the Admin \n------------\n", acc.Email)
}
if acc == nil {
return nil, fmt.Errorf("account not found for %s, use `account list` to list accounts", adminEmail)
}

92
desktop/docs/release.md Normal file
View file

@ -0,0 +1,92 @@
## Releases
> [!NOTE]
>
> TODO(MR): This document needs to be audited and changed as we do the first
> release from this new monorepo.
The Github Action that builds the desktop binaries is triggered by pushing a tag
matching the pattern `photos-desktop-v1.2.3`. This value should match the
version in `package.json`.
So the process for doing a release would be.
1. Create a new branch (can be named anything). On this branch, include your
changes.
2. Mention the changes in `CHANGELOG.md`.
3. Changing the `version` in `package.json` to `1.x.x`.
4. Commit and push to remote
```sh
git add package.json && git commit -m 'Release v1.x.x'
git tag v1.x.x
git push && git push --tags
```
This by itself will already trigger a new release. The GitHub action will create
a new draft release that can then be used as descibed below.
To wrap up, we also need to merge back these changes into main. So for that,
5. Open a PR for the branch that we're working on (where the above tag was
pushed from) to get it merged into main.
6. In this PR, also increase the version number for the next release train. That
is, supposed we just released `v4.0.1`. Then we'll change the version number
in main to `v4.0.2-next.0`. Each pre-release will modify the `next.0` part.
Finally, at the time of the next release, this'll become `v4.0.2`.
The GitHub Action runs on Windows, Linux and macOS. It produces the artifacts
defined in the `build` value in `package.json`.
* Windows - An NSIS installer.
* Linux - An AppImage, and 3 other packages (`.rpm`, `.deb`, `.pacman`)
* macOS - A universal DMG
Additionally, the GitHub action notarizes the macOS DMG. For this it needs
credentials provided via GitHub secrets.
During the build the Sentry webpack plugin checks to see if SENTRY_AUTH_TOKEN is
defined. If so, it uploads the sourcemaps for the renderer process to Sentry
(For our GitHub action, the SENTRY_AUTH_TOKEN is defined as a GitHub secret).
The sourcemaps for the main (node) process are currently not sent to Sentry
(this works fine in practice since the node process files are not minified, we
only run `tsc`).
Once the build is done, a draft release with all these artifacts attached is
created. The build is idempotent, so if something goes wrong and we need to
re-run the GitHub action, just delete the draft release (if it got created) and
start a new run by pushing a new tag (if some code changes are required).
If no code changes are required, say the build failed for some transient network
or sentry issue, we can even be re-run by the build by going to Github Action
age and rerun from there. This will re-trigger for the same tag.
If everything goes well, we'll have a release on GitHub, and the corresponding
source maps for the renderer process uploaded to Sentry. There isn't anything
else to do:
* The website automatically redirects to the latest release on GitHub when
people try to download.
* The file formats with support auto update (Windows `exe`, the Linux AppImage
and the macOS DMG) also check the latest GitHub release automatically to
download and apply the update (the rest of the formats don't support auto
updates).
* We're not putting the desktop app in other stores currently. It is available
as a `brew cask`, but we only had to open a PR to add the initial formula, now
their maintainers automatically bump the SHA, version number and the (derived
from the version) URL in the formula when their tools notice a new release on
our GitHub.
We can also publish the draft releases by checking the "pre-release" option.
Such releases don't cause any of the channels (our website, or the desktop app
auto updater, or brew) to be notified, instead these are useful for giving links
to pre-release builds to customers. Generally, in the version number for these
we'll add a label to the version, e.g. the "beta.x" in `1.x.x-beta.x`. This
should be done both in `package.json`, and what we tag the commit with.

View file

@ -69,9 +69,17 @@ export const sidebar = [
{ text: "FAQ", link: "/auth/faq/" },
{
text: "Migration guides",
collapsed: true,
collapsed: false,
items: [
{ text: "Introduction", link: "/auth/migration-guides/" },
{
text: "From Authy",
link: "/auth/migration-guides/authy/",
},
{
text: "Exporting your data",
link: "/auth/migration-guides/export",
},
],
},
],
@ -86,9 +94,14 @@ export const sidebar = [
items: [
{ text: "Introduction", link: "/self-hosting/guides/" },
{
text: "Configure custom server",
text: "Connect to custom server",
link: "/self-hosting/guides/custom-server/",
},
{
text: "Administering your server",
link: "/self-hosting/guides/admin",
},
{
text: "Mobile build",
link: "/self-hosting/guides/mobile-build",
@ -110,6 +123,10 @@ export const sidebar = [
text: "Verification code",
link: "/self-hosting/faq/otp",
},
{
text: "Increase storage space",
link: "/self-hosting/faq/storage-space",
},
],
},
{

View file

@ -1,21 +1,33 @@
---
title: FAQ - Auth
description: Frequently asked questions about Ente Auth
---
# Frequently Asked Questions
### How secure is ente Auth?
All codes you backup via Ente is stored end-to-end encrypted. This means only you can access your codes. Our apps are open source and our cryptography has been externally audited.
### How secure is Ente Auth?
All codes you backup via Ente is stored end-to-end encrypted. This means only
you can access your codes. Our apps are open source and our cryptography has
been externally audited.
### Can I access my codes on desktop?
You can access your codes on the web @ [auth.ente.io](https://auth.ente.io).
You can access your codes on the web at [auth.ente.io](https://auth.ente.io).
### How can I delete or edit codes?
You can delete or edit a code by swiping left on that item.
### How can I support this project?
You can support the development of this project by subscribing to our Photos app @ [ente.io](https://ente.io).
You can support the development of this project by subscribing to our Photos app
at [ente.io](https://ente.io).
### How can I enable FaceID lock in Ente Auth?
You can enable FaceID lock under Settings → Security → Lockscreen.
### Why does the desktop and mobile app displays different code?
Please verify that the time on both your mobile and desktop is same.

View file

@ -7,8 +7,3 @@ description: User guide for Ente Auth
Ente Auth is a free, cross-platform, end-to-end encrypted authenticator app. You
can use it to safely store your 2FA codes (second-factor authentication codes).
> [!CAUTION]
>
> These docs are still incomplete. If you feel like documenting an issue you ran
> into and then found a solution to, help us [fill them in](/about/contribute).

View file

@ -0,0 +1,179 @@
---
title: Migrating from Authy
description: Guide for importing your existing Authy 2FA tokens into Ente Auth
---
# Migrating from Authy
A guide written by Green, an ente.io lover
> [!WARNING]
>
> Authy will soon be dropping support for its desktop apps in the near future.
> If you are looking to switch to ente Authenticator from Authy, I heavily
> recommend you export your codes as soon as you can.
---
Migrating from Authy can be tiring, as you cannot export your 2FA codes through
the app, meaning that you would have to reconfigure 2FA for all of your accounts
for your new 2FA authenticator. However, easier ways exist to export your codes
out of Authy. This guide will cover two of the most used methods for mograting
from Authy to ente Authenticator.
> [!CAUTION]
>
> Under any circumstances, do **NOT** share any JSON and TXT files generated
> using this guide, as they contain your **unencrypted** TOTP secrets!
>
> Also, there is **NO GUARANTEE** that these methods will export ALL of your
> codes. Make sure that all your accounts have been imported successfully before
> deleting any codes from your Authy account!
---
## Method 1: Use Neeraj's export tool
**Who should use this?** General users who want to save time by skipping the
hard (and rather technical) parts of the process.<br><br>
One way to export is to
[use this tool by Neeraj](https://github.com/ua741/authy-export/releases/tag/v0.0.4)
to simplify the process and skip directly to importing to ente Authenticator.
To export from Authy, download the tool for your specific OS, then type the
following in your terminal:
```
./<binary-name> <path_to_export_file>
```
Assuming the filename of the binary remains unmodified and the working directory
of the terminal is the location of the binary, you should type this for MacOS:
> [!NOTE]
>
> On Apple Silicon devices, Rosetta 2 may be required to run the binary.
```
./authy-export-darwin-amd64 authy_codes.txt
```
For Linux:
```
./authy-export-linux-amd64 authy_codes.txt
```
For Windows:
```
./authy-export-windows-amd64.exe authy_codes.txt
```
This will generate a text file called `authy_codes.txt`, which contains your
Authy codes in ente's plaintext export format. You can now import this to ente
Authenticator!
## Method 2: Use gboudreau's GitHub guide
**Who should use this?** Power users who have spare time on their hands and
prefer a more "known and established" solution to exporting Authy codes.<br><br>
A user on GitHub (gboudreau) wrote a guide to export codes from Authy (morpheus
on Discord found this and showed it to us), so we are going to be using that for
the migration.
To export your data, please follow
[this guide](https://gist.github.com/gboudreau/94bb0c11a6209c82418d01a59d958c93).
This will create a JSON file called `authy-to-bitwarden-export.json`, which
contains your Authy codes in Bitwarden's export format. You can now import this
to ente Authenticator!
### Method 2.1: If the export worked, but the import didn't
> [!NOTE]
>
> This is intended only for users who successfully exported their codes using the
> guide in method 2, but could not import it to ente Authenticator for whatever
> reason. If the import was successful, or you haven't tried to import the codes
> yet, ignore this section.
>
> If the export itself failed, try using
> [**method 1**](#method-1-use-neerajs-export-tool) instead.
Usually, you should be able to import Bitwarden exports directly into ente
Authenticator. In case this didn't work for whatever reason, I've written a
program in Python that converts the JSON file into a TXT file that ente
Authenticator can use, so you can try importing using plain text import instead.
You can download my program
[here](https://github.com/gweeeen/ducky/blob/main/duckys_other_stuff/authy_to_ente.py),
or you can copy the program below:
```py
import json
import os
totp = []
accounts = json.load(open('authy-to-bitwarden-export.json','r',encoding='utf-8'))
for account in accounts['items']:
totp.append(account['login']['totp']+'\n')
writer = open('auth_codes.txt','w+',encoding='utf-8')
writer.writelines(totp)
writer.close()
print('Saved to ' + os.getcwd() + '/auth_codes.txt')
```
To convert the file with this program, you will need to install
[Python](https://www.python.org/downloads/) on your computer.
Before you run the program, make sure that both the Python program and the JSON
file are in the same directory, otherwise this will not work!
To run the Python program, open it in your IDE and run the program, or open your
terminal and type `python3 authy_to_ente.py` (MacOS/Linux, or any other OS that
uses bash) or `py -3 authy_to_ente.py` (Windows). Once you run it, a new TXT
file called `auth_codes.txt` will be generated. You can now import your data to
ente Authenticator!
---
You should now have a TXT file (method 1, method 2.1) or a JSON file (method 2)
that countains your TOTP secrets, which can now be imported into ente
Authenticator. To import your codes, please follow one of the steps below,
depending on which method you used to export your codes.
## Importing to ente Authenticator (Method 1, method 2.1)
1. Copy the TXT file to one of your devices with ente Authenticator.
2. Log in to your account (if you haven't already), or press "Use without
backups".
3. Open the navigation menu (hamburger button on the top left), then press
"Data", then press "Import codes".
4. Select the "Plain text" option.
5. Select the TXT file that was made earlier.
## Importing to ente Authenticator (Method 2)
1. Copy the JSON file to one of your devices with ente Authenticator.
2. Log in to your account (if you haven't already), or press "Use without
backups".
3. Open the navigation menu (hamburger button on the top left), then press
"Data", then press "Import codes".
4. Select the "Bitwarden" option.
5. Select the JSON file that was made earlier.
If this didn't work, refer to
[**method 2.1**](#method-21-if-the-export-worked-but-the-import-didnt).<br><br>
And that's it! You have now successfully migrated from Authy to ente
Authenticator.
Now that your secrets are safely stored, I recommend you delete the unencrypted
JSON and TXT files that were made during the migration process for security.

View file

@ -0,0 +1,76 @@
---
title: Exporting your data from Ente Auth
description: Guide for exporting your 2FA codes out from Ente Auth
---
# Exporting your data out of Ente Auth
## Auth Encrypted Export format
### Overview
When we export the auth codes, the data is encrypted using a key derived from
the user's password. This document describes the JSON structure used to organize
exported data, including versioning and key derivation parameters.
### Export JSON Sample
```json
{
"version": 1,
"kdfParams": {
"memLimit": 4096,
"opsLimit": 3,
"salt": "example_salt"
},
"encryptedData": "encrypted_data_here",
"encryptionNonce": "nonce_here"
}
```
The main object used to represent the export data. It contains the following
key-value pairs:
- `version`: The version of the export format.
- `kdfParams`: Key derivation function parameters.
- `encryptedData"`: The encrypted authentication data.
- `encryptionNonce`: The nonce used for encryption.
#### Version
Export version is used to identify the format of the export data.
##### Ver: 1
- KDF Algorithm: `ARGON2ID`
- Decrypted data format: `otpauth://totp/...`, separated by a new line.
- Encryption Algo: `XChaCha20-Poly1305`
##### Key Derivation Function Params (KDF)
This section contains the parameters that were using during KDF operation:
- `memLimit`: Memory limit for the algorithm.
- `opsLimit`: Operations limit for the algorithm.
- `salt`: The salt used in the derivation process.
##### Encrypted Data
As mentioned above, the auth data is encrypted using a key that's derived by
using user provided password & kdf params. For encryption, we are using
`XChaCha20-Poly1305` algorithm.
## How to use the exported data
- **Ente Authenticator app**: You can directly import the codes in the Ente
Authenticator app.
> Settings -> Data -> Import Codes -> ente Encrypted export.
- **Decrypt using Ente CLI** : Download the latest version of
[Ente CLI](https://github.com/ente-io/ente/releases?q=tag%3Acli-v0), and run
the following command
```
./ente auth decrypt <export_file> <output_file>
```

View file

@ -1,11 +1,10 @@
---
title: Migrating to Ente Auth
description:
Guides for migrating your existing 2FA tokens from other products into Ente
Auth
Guides for migrating your existing 2FA tokens into or out of Ente Auth
---
# Migrating to Ente Auth
# Migrating to/from Ente Auth
_Coming soon_. This section will contain guides for migrating your existing 2FA
tokens from other products into Ente Auth.
- [Migrating from Authy](authy/)
- [Exporting your data out of Ente Auth](export)

View file

@ -3,9 +3,7 @@ title: FAQ
description: Frequently asked questions about Ente Photos
---
# FAQ
_Coming soon_. On this page we'll document some help items in a question and answer format.
_Coming soon_. On this page we'll document some help items in a question and
answer format.

View file

@ -22,3 +22,10 @@ In brief,
- You can invite 5 family members. So including yourself, it will be 6 people
who can share a single subscription, paying only once.
## FAQ
* **Can you assign a storage quota for each individual member in the family plan?**
Unfortunately, at this moment, assigning a storage quota for each individual member in the family plan is not supported. For updates on this feature request, please follow [this thread](https://github.com/ente-io/ente/discussions/857).

View file

@ -17,3 +17,11 @@ locally by creating a `museum.yaml` and adding the `internal.hardcoded-ott`
configuration setting to it. See
[local.yaml](https://github.com/ente-io/ente/blob/main/server/configurations/local.yaml)
in the server source code for details about how to define this.
> [!NOTE]
>
> If you're not able to get the OTP with the above methods, make sure that you
> are actually connecting to your self hosted instance and not to Ente's
> production servers. e.g. you can use the network requests tab in the browser
> console to verify that the API requests are going to your server instead of
> `api.ente.io`.

View file

@ -0,0 +1,12 @@
---
title: Increase storage space
description: Increasing the storage quota for users on your self hosted instance
---
# Increase storage space
See the [guide for administering your server](/self-hosting/guides/admin). In
particular, you can use the `ente admin update-subscription` CLI command to
increase the
[storage and account validity](https://github.com/ente-io/ente/blob/main/cli/docs/generated/ente_admin_update-subscription.md)
of accounts on your instance.

View file

@ -0,0 +1,43 @@
---
title: Server admin
description: Administering your custom self-hosted Ente instance using the CLI
---
# Administering your custom server
You can use
[Ente's CLI](https://github.com/ente-io/ente/releases?q=tag%3Acli-v0) to
administer your self hosted server.
First we need to get your CLI to connect to your custom server. Define a
config.yaml and put it either in the same directory as CLI or path defined in
env variable `ENTE_CLI_CONFIG_PATH`
```yaml
endpoint:
api: "http://localhost:8080"
```
Now you should be able to
[add an account](https://github.com/ente-io/ente/blob/main/cli/docs/generated/ente_account_add.md),
and subsequently increase the
[storage and account validity](https://github.com/ente-io/ente/blob/main/cli/docs/generated/ente_admin_update-subscription.md)
using the CLI.
For the admin actions, you can create `server/museum.yaml`, and whitelist add
the admin userID `internal.admins`. See
[local.yaml](https://github.com/ente-io/ente/blob/main/server/configurations/local.yaml#L211C1-L232C1)
in the server source code for details about how to define this.
```yaml
....
internal:
admins:
# - 1580559962386440
....
```
You can use
[account list](https://github.com/ente-io/ente/blob/main/cli/docs/generated/ente_account_list.md)
command to find the user id of any account.

View file

@ -1,9 +1,14 @@
---
title: Custom server
description: Using a custom self-hosted server with frontend apps
description: Using a custom self-hosted server with Ente client apps and CLI
---
# Custom server for mobile apps
# Connecting to a custom server
You can modify various Ente client apps and CLI to connect to a self hosted
custom server endpoint.
## Mobile apps
The pre-built Ente apps from GitHub / App Store / Play Store / F-Droid can be
easily configured to use a custom server.
@ -18,32 +23,17 @@ configure the endpoint the app should be connecting to.
> This is only supported by the Ente Auth app currently. We'll add this same
> functionality to the Ente Photos app soon.
---
## CLI
# CLI
> [!NOTE]
>
> You can download the CLI from
> [here](https://github.com/ente-io/ente/releases?q=tag%3Acli-v0)
> [!WARNING]
> The new version of CLI that supports connecting to custom server is still in beta.
> You can download the beta version from [here](https://github.com/ente-io/ente/releases?q=tag%3Acli-v0&expanded=true)
Define a config.yaml and put it either in the same directory as CLI or path defined in env variable `ENTE_CLI_CONFIG_PATH`
Define a config.yaml and put it either in the same directory as CLI or path
defined in env variable `ENTE_CLI_CONFIG_PATH`
```yaml
endpoint:
api: "http://localhost:8080"
api: "http://localhost:8080"
```
You should be able to [add an account](https://github.com/ente-io/ente/blob/main/cli/docs/generated/ente_account_add.md), and subsequently increase the [storage and account validity](https://github.com/ente-io/ente/blob/main/cli/docs/generated/ente_admin_update-subscription.md) using the CLI.
For the admin actions, you can create `server/museum.yaml`, and whitelist add the admin userID `internal.admins`. See [local.yaml](https://github.com/ente-io/ente/blob/main/server/configurations/local.yaml#L211C1-L232C1) in the server source code for details about how to define this.
You can use [account list](https://github.com/ente-io/ente/blob/main/cli/docs/generated/ente_account_list.md) command to find the user id of any account.
```yaml
....
internal:
admins:
# - 1580559962386440
....
```

View file

@ -17,6 +17,14 @@ have the keys and secrets for the S3 bucket. The plan is as follows:
4. Create an account and increase storage quota
5. Fix potential CORS issue with your bucket
> [!NOTE]
>
> This is a community contributed guide, and some of these steps might be out of
> sync with the upstream documentation. If something is not working correctly,
> please also see the latest
> [READMEs](https://github.com/ente-io/ente/blob/main/server/README.md) in the
> repository and/or other guides in [self-hosting](/self-hosting/).
## 1. Create a `compose.yaml` file
After cloning the main repository with
@ -25,6 +33,7 @@ After cloning the main repository with
git clone https://github.com/ente-io/ente.git
# Or git clone git@github.com:ente-io/ente.git
cd ente
git submodule update --init --recursive
```
Create a `compose.yaml` file at the root of the project with the following

View file

@ -10,9 +10,11 @@ walkthroughs, tutorials and other FAQ pages in this directory.
See the sidebar for existing guides. In particular:
* If you're just looking to get started, see [configure custom
server](custom-server/).
- If you're just looking to get started, see
[configure custom server](custom-server/).
* For self hosting both the server and web app using external S3 buckets for
object storage, see [using external S3](external-s3).
- For various admin related tasks, e.g. increasing the storage quota on your
self hosted instance, see [administering your custom server](admin).
- For self hosting both the server and web app using external S3 buckets for
object storage, see [using external S3](external-s3).

View file

@ -30,8 +30,6 @@ flutter run --dart-define=endpoint=http://localhost:8080 --flavor independent --
flutter run --dart-define=endpoint=http://localhost:8080
```
Or for the auth app:
```sh
@ -46,9 +44,11 @@ flutter run --dart-define=endpoint=http://localhost:8080
```
## How to build non-debug builds
For building APK, [setup your
keystore](https://docs.flutter.dev/deployment/android#create-an-upload-keystore)
and run
```sh
For building APK,
[setup your keystore](https://docs.flutter.dev/deployment/android#create-an-upload-keystore)
and run
```sh
flutter build apk --release --flavor independent -t lib/main.dart
```
```

2
infra/.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
# macOS
.DS_Store

8
infra/README.md Normal file
View file

@ -0,0 +1,8 @@
# Infra
Various knick-knacks that we use when hosting our servers.
These are not needed for running Ente's server or for self-hosting, these are
just additional services we run to make our infrastructure more robust. As such,
it's unlikely that you'll find the pieces here directly useful for your needs,
but feel free to have a look around if you're curious!

2
infra/copycat-db/.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
.DS_Store
copycat-db.env

View file

@ -0,0 +1,34 @@
FROM ubuntu:latest
RUN apt-get update && apt-get install -y curl gnupg
RUN apt-get install -y tini
# Install pg_dump (via Postgres client)
# https://www.postgresql.org/download/linux/ubuntu/
#
# We don't need it for production backups, but this is useful for local testing.
RUN \
apt-get install -y lsb-release && \
sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' && \
curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - && \
apt-get update && \
apt-get -y install postgresql-client-12
# Install SCW CLI
# Latest release: https://github.com/scaleway/scaleway-cli/releases/latest
RUN \
export VERSION="2.26.0" && \
curl -o /usr/local/bin/scw -L "https://github.com/scaleway/scaleway-cli/releases/download/v${VERSION}/scaleway-cli_${VERSION}_linux_amd64" && \
chmod +x /usr/local/bin/scw
RUN apt-get install -y jq
# Install rclone
RUN apt-get install -y unzip
RUN curl https://rclone.org/install.sh | bash
COPY src /
ENTRYPOINT ["tini", "--"]
CMD [ "/backup.sh" ]

172
infra/copycat-db/README.md Normal file
View file

@ -0,0 +1,172 @@
# Copycat DB
Copycat DB is a [service](../services/README.md) to take a backup of our
database. It uses the Scaleway CLI to take backups of the database, and uploads
them to an offsite bucket.
This bucket has an object lock configured, so backups cannot be deleted before
expiry. Conversely, the service also deletes backups older than some threshold
when it creates a new one to avoid indefinite retention.
In production the service runs as a cron job, scheduled using a systemd timer.
> These backups are in addition to the regular snapshots that we take, and are
> meant as a second layer of replication. For more details, see our
> [Reliability and Replication Specification](https://ente.io/reliability).
## Quick help
View service status (it gets invoked as a timer automatically, doesn't need to
be started/stopped manually):
```sh
sudo systemctl status copycat-db
```
View logs locally (they'll also be available on Grafana):
```sh
sudo tail /root/var/logs/copycat-db.log
```
## Name
The name copycat-db is a riff on "copycat", which is what we call our museum
instance that does the object replication. This one replicates the DB, so,
copycat-db.
## Required environment variables
##### SCW_CONFIG_PATH
Path to the `config.yaml` used by Scaleway CLI.
This contains the credentials and the default region to use when trying to
create and download the database dump.
If needed, this config file can be generated by running the following commands
on a shell prompt in the container (using `./test.sh sh`)
scw init
scw config dump
##### SCW_RDB_INSTANCE_ID
The UUID of the Scalway RDB instance that we wish to backup. If this is missing,
then the Docker image falls back to using `pg_dump` (as outlined next).
##### PGUSER, PGPASSWORD, PGHOST
Not needed in production when taking a backup (since we use the Scaleway CLI to
take backups in production).
These are used when testing a backup using `pg_dump`, and when restoring
backups.
##### RCLONE_CONFIG
Location of the config file, that contains the destination bucket where you want
to use to save the backups, and the credentials to to access it.
Specifically, the config file contains two remotes:
- The bucket itself, where data will be stored.
- A "crypt" remote that wraps the bucket by applying client side encryption.
The configuration file will contain (lightly) obfuscated versions of the
password, and as long as we have the configuration file we can continue using
rclone to download and decrypt the plaintext. Still, it is helpful to retain the
original password too separately so that the file can be recreated if needed.
A config file can be generated using `./test.sh sh`
rclone config
rclone config show
When generating the config, we keep file (and directory) name encryption off.
Note that rclone creates a backup of the config file, so Docker needs to have
write access to the directory where it is mounted.
##### RCLONE_DESTINATION
Name of the (crypt) remote to which the dump should be saved. Example:
`db-backup-crypt:`.
Note that this will not include the bucket - the bucket name will be part of the
remote that the crypt remote wraps.
##### Logging
The service logs to its standard out/error. The systemd unit is configured to
route these to `/var/logs/copycat-db.log`.
## Local testing
The provided `test.sh` script can be used to do a smoke test for building and
running the image. For example,
./test.sh bin/bash
gives us a shell prompt inside the built and running container.
For more thorough testing, run this service as part of a local test-cluster.
## Restoring
The service also knows how to restore the latest backup into a Postgres
instance. This functionality by a separate service (Phoenix) to periodically
verify that the backups are restorable.
To invoke this, use "./restore.sh" as the command when running the container
(e.g. `./test.sh ./restore.sh`). This will restore the latest backup into the
Postgres instance whose credentials are provided via the various `PG*`
environment variables.
## Preparing the bucket
The database dumps are stored in a bucket that has object lock enabled
(compliance mode), and has a default bucket level retention time of 30 days.
## Deploying
Ensure that promtail is running, and is configured to scrape
`/root/var/logs/copycat-db.log`.
Create that the config and log destination directories
sudo mkdir -p /root/var/config/scw
sudo mkdir -p /root/var/config/rclone
sudo mkdir -p /root/var/logs
Create the env, scw and rclone configuration files
sudo tee /root/copycat-db.env
sudo tee /root/var/config/scw/copycat-db-config.yaml
sudo tee /root/var/config/rclone/copycat-db-rclone.conf
Add the service definition, and start the service
scp copycat-db.{service,timer} instance:
sudo mv copycat-db.{service,timer} /etc/systemd/system
sudo systemctl daemon-reload
To start the cron job
sudo systemctl start copycat-db.timer
The timer will trigger the service on the specified schedule. In addition, if
you wish to force the job to service immediately
sudo systemctl start copycat-db.service
## Updating
To update, run the
[GitHub workflow](../../.github/workflows/copycat-db-release.yaml) to build and
push the latest image to our Docker Registry, then restart the systemd service
on the instance
sudo systemctl restart copycat-db

View file

@ -0,0 +1,8 @@
SCW_CONFIG_PATH=/var/config/scw/copycat-db-config.yaml
SCW_RDB_INSTANCE_ID=
RCLONE_CONFIG=/var/config/rclone/copycat-db-rclone.conf
RCLONE_DESTINATION=db-backup-crypt:
PGUSER=
PGPASSWORD=
PGHOST=host.docker.internal
PGPORT=

View file

@ -0,0 +1,20 @@
[Unit]
Documentation=https://github.com/ente-io/ente/blob/main/infra/copycat-db
Requires=docker.service
After=docker.service
[Service]
Restart=always
RestartSec=3600s
# Don't automatically restart if it fails more than 6 times in 24 hours.
StartLimitInterval=86400
StartLimitBurst=6
ExecStartPre=docker pull rg.fr-par.scw.cloud/ente/copycat-db
ExecStartPre=-docker stop copycat-db
ExecStartPre=-docker rm copycat-db
ExecStart=docker run --name copycat-db \
--env-file /root/copycat-db.env \
-v /root/var:/var \
rg.fr-par.scw.cloud/ente/copycat-db
StandardOutput=append:/root/var/logs/copycat-db.log
StandardError=inherit

View file

@ -0,0 +1,8 @@
[Unit]
Description=Schedule copycat-db
[Timer]
OnCalendar=Daily
[Install]
WantedBy=timers.target

50
infra/copycat-db/src/backup.sh Executable file
View file

@ -0,0 +1,50 @@
#!/bin/bash
set -o errexit
set -o xtrace
NOWS="$(date +%s)"
BACKUP_FILE="db-$NOWS.custom"
# Scaleway backup names cannot contain dots
BACKUP_NAME="db-$NOWS-custom"
# Calculate an expiry time 1 month from now
EXPIRYS="$(( 30 * 24 * 60 * 60 + $NOWS ))"
# Convert it to the ISO 8601 format that SCW CLI understands
# Note that GNU date uses "-d" and an "@" to pass an epoch (macOS uses "-r").
EXPIRY="$(date -Iseconds --utc --date "@$EXPIRYS")"
if test -z "$SCW_RDB_INSTANCE_ID"
then
# A required SCW related environment variable hasn't been specified. This is
# expected when running the script locally for testing. Fallback to using
# pg_dump for creating the backup.
pg_dump -Fc ente_db > $BACKUP_FILE
else
# We need to export a backup first after creating it, before it can be
# downloaded.
#
# Further, our backups currently take longer than the default 20 minute
# timeout for the export set by Scaleway, and end up failing:
#
# {"error":"scaleway-sdk-go: waiting for database backup failed: timeout after 20m0s"}
#
# To avoid this we need to add a custom wait here ourselves instead of using
# the convenience `--wait` flag for the export command provided by Scaleway.
BACKUP_ID=$(scw rdb backup create instance-id=$SCW_RDB_INSTANCE_ID \
name=$BACKUP_NAME expires-at=$EXPIRY \
database-name=ente_db -o json | jq -r '.id')
scw rdb backup wait $BACKUP_ID timeout=5h
scw rdb backup download output=$BACKUP_FILE \
$(scw rdb backup export $BACKUP_ID --wait -o json | jq -r '.id')
fi
rclone copy --log-level INFO $BACKUP_FILE $RCLONE_DESTINATION
# Delete older backups
rclone delete --log-level INFO --min-age 30d $RCLONE_DESTINATION
set +o xtrace
echo "copycat-db: backup complete: $BACKUP_FILE"

42
infra/copycat-db/src/restore.sh Executable file
View file

@ -0,0 +1,42 @@
#!/bin/bash
set -o errexit
set -o xtrace
# Find the name of the latest backup
# The backup file name contains the epoch, so we can just sort.
BACKUP_FILE=$(rclone lsf --include 'db-*.custom' --files-only $RCLONE_DESTINATION | sort | tail -1)
# Download it
rclone copy --log-level INFO "${RCLONE_DESTINATION}${BACKUP_FILE}" .
# Restore from it
#
# This create a database named rdb on Postgres - this is only used for the
# initial connection, the actual ente_db database will be created once the
# restore starts.
#
# Flags:
#
# * no-owner: recreates the schema using the current user, not the one that was
# used for the export.
#
# * no-privileges: skip the assignment of roles (this way we do not have to
# recreate all the users from the original database before proceeding with the
# restore)
createdb rdb || true
pg_restore -d rdb --create --no-privileges --no-owner --exit-on-error "$BACKUP_FILE"
# Delete any tokens that were in the backup
psql -d ente_db -c 'delete from tokens'
# Delete any push tokens that were in the backup
psql -d ente_db -c 'delete from push_tokens'
# Delete some more temporary data that might've come up in the backup
psql -d ente_db -c 'delete from queue'
psql -d ente_db -c 'delete from temp_objects'
set +o xtrace
echo "copycat-db: restore complete: $BACKUP_FILE"

20
infra/copycat-db/test.sh Executable file
View file

@ -0,0 +1,20 @@
#!/bin/bash
set -o xtrace
set -o errexit
PROJECT=copycat-db
docker rmi "ente/$PROJECT" || true
docker build --tag "ente/$PROJECT" .
# Interactively run the container.
#
# By passing "$@", we allow any arguments passed to test.sh to be forwarded to
# the image (useful for testing out things, e.g. `./test.sh sh`).
docker run \
--interactive --tty --rm \
--env-file copycat-db.env \
--name "$PROJECT" \
"ente/$PROJECT" \
"$@"

104
infra/services/README.md Normal file
View file

@ -0,0 +1,104 @@
# Services
"Services" are Docker images we run on our instances and manage using systemd.
All our services (including museum itself) follow the same pattern:
- They're run on vanilla Ubuntu instances. The only expectation they have is
for Docker to be installed.
- They log to fixed, known, locations - `/root/var/log/foo.log` - so that
these logs can get ingested by Promtail if needed.
- Each service should consist of a Docker image (or a Docker compose file),
and a systemd unit file.
- To start / stop / schedule the service, we use systemd.
- Each time the service runs it should pull the latest Docker image, so there
is no separate installation/upgrade step needed. We can just restart the
service, and it'll use the latest code.
- Any credentials and/or configuration should be read by mounting the
appropriate file from `/root/service-name` into the running Docker
container.
## Systemd cheatsheet
```sh
sudo systemctl status my-service
sudo systemctl start my-service
sudo systemctl stop my-service
sudo systemctl restart my-service
sudo journalctl --unit my-service
```
## Adding a service
Create a systemd unit file (See the various `*.service` files in this repository
for examples).
If we want the service to start on boot, add an `[Install]` section to its
service file (_note_: starting on boot requires one more step later):
```
[Install]
WantedBy=multi-user.target
```
Copy the service file to the instance where we want to run the service. Services
might also have some additional configuration or env files, also copy those to
the instance.
```sh
scp services/example.service example.env <instance>:
```
SSH into the instance.
```sh
ssh <instance>
```
Move the service `/etc/systemd/service`, and any config files to their expected
place. env and other config files that contain credentials are kept in `/root`.
```sh
sudo mv example.service /etc/systemd/system
sudo mv example.env /root
```
If you want to start the service on boot (as spoken of in the `[Install]`
section above), then enable it (this only needs to be done once):
```sh
sudo systemctl enable service
```
Restarts systemd so that it gets to know of the service.
```sh
sudo systemctl daemon-reload
```
Now you can manage the service using standard systemd commands.
```sh
sudo systemctl start example
```
To view stdout/err, use:
```sh
sudo journalctl --follow --unit example
```
## Logging
Services should log to files in `/var/logs` within the container. This should be
mounted to `/root/var/logs` on the instance (using the `-v` flag in the service
file which launches the Docker container or the Docker compose cluster).
If these logs need to be sent to Grafana, then ensure that there is an entry for
this log file in the `promtail/promtail.yaml` on that instance. The logs will
then get scraped by Promtail and sent over to Grafana.

View file

@ -0,0 +1,21 @@
# Nginx
This is a base nginx service that terminates TLS, and can be used as a reverse
proxy for arbitrary services by adding new entries in `/root/nginx/conf.d` and
`sudo systemctl restart nginx`.
## Installation
Create a directory to house service specific configuration
sudo mkdir -p /root/nginx/conf.d
Add the SSL certificate provided by Cloudflare
sudo tee /root/nginx/cert.pem
sudo tee /root/nginx/key.pem
## Adding a service
When adding new services that sit behind nginx, add their nginx conf file to
`/root/nginx/conf.d` and and restart the nginx service.

View file

@ -0,0 +1,19 @@
[Unit]
Documentation=https://www.docker.com/blog/how-to-use-the-official-nginx-docker-image/
Requires=docker.service
After=docker.service
[Install]
WantedBy=multi-user.target
[Service]
ExecStartPre=docker pull nginx
ExecStartPre=-docker stop nginx
ExecStartPre=-docker rm nginx
ExecStart=docker run --name nginx \
--add-host=host.docker.internal:host-gateway \
-p 443:443 \
-v /root/nginx/cert.pem:/etc/ssl/certs/cert.pem:ro \
-v /root/nginx/key.pem:/etc/ssl/private/key.pem:ro \
-v /root/nginx/conf.d:/etc/nginx/conf.d:ro \
nginx

View file

@ -0,0 +1,32 @@
# Prometheus
Install `prometheus.service` on an instance if it is running something that
exports custom Prometheus metrics. In particular, museum does.
Also install `node-exporter.service` (after installing
[node-exporter](https://prometheus.io/docs/guides/node-exporter/) itself) if it
is a production instance whose metrics (CPU, disk, RAM etc) we want to monitor.
## Installing
Prometheus doesn't currently support environment variables in config file, so
remember to change the hardcoded `XX-HOSTNAME` too in addition to adding the
`remote_write` configuration.
```sh
scp -P 7426 services/prometheus/* <instance>:
nano prometheus.yml
sudo mv prometheus.yml /root/prometheus.yml
sudo mv prometheus.service /etc/systemd/system/prometheus.service
sudo mv node-exporter.service /etc/systemd/system/node-exporter.service
```
Tell systemd to pick up new service definitions, enable the units (so that they
automatically start on boot going forward), and start them.
```sh
sudo systemctl daemon-reload
sudo systemctl enable --now node-exporter
sudo systemctl enable --now prometheus
```

View file

@ -0,0 +1,12 @@
[Unit]
Documentation=https://prometheus.io/docs/guides/node-exporter/
Wants=network-online.target
After=network-online.target
[Install]
WantedBy=multi-user.target
[Service]
User=node_exporter
Group=node_exporter
ExecStart=/usr/local/bin/node_exporter

View file

@ -0,0 +1,16 @@
[Unit]
Documentation=https://prometheus.io/docs/prometheus/
Requires=docker.service
After=docker.service
[Install]
WantedBy=multi-user.target
[Service]
ExecStartPre=docker pull prom/prometheus
ExecStartPre=-docker stop prometheus
ExecStartPre=-docker rm prometheus
ExecStart=docker run --name prometheus \
--add-host=host.docker.internal:host-gateway \
-v /root/prometheus.yml:/etc/prometheus/prometheus.yml:ro \
prom/prometheus

View file

@ -0,0 +1,39 @@
# https://prometheus.io/docs/prometheus/latest/configuration/
global:
scrape_interval: 30s # Default is 1m
scrape_configs:
- job_name: museum
static_configs:
- targets: ["host.docker.internal:2112"]
relabel_configs:
- source_labels: [__address__]
regex: ".*"
target_label: instance
replacement: XX-HOSTNAME
- job_name: "prometheus"
static_configs:
- targets: ["localhost:9090"]
relabel_configs:
- source_labels: [__address__]
regex: ".*"
target_label: instance
replacement: XX-HOSTNAME
- job_name: "node"
static_configs:
- targets: ["host.docker.internal:9100"]
relabel_configs:
- source_labels: [__address__]
regex: ".*"
target_label: instance
replacement: XX-HOSTNAME
# Grafana Cloud
remote_write:
- url: https://g/api/prom/push
basic_auth:
username: foo
password: bar

View file

@ -0,0 +1,26 @@
# Promtail
Install `promtail.service` on an instance if it is running something whose logs
we want in Grafana.
## Installing
Replace `client.url` in the config file with the Loki URL that Promtail should
connect to, and move the files to their expected place.
```sh
scp -P 7426 services/promtail/* <instance>:
nano promtail.yaml
sudo mv promtail.yaml /root/promtail.yaml
sudo mv promtail.service /etc/systemd/system/promtail.service
```
Tell systemd to pick up new service definitions, enable the unit (so that it
automatically starts on boot), and start it this time around.
```sh
sudo systemctl daemon-reload
sudo systemctl enable promtail
sudo systemctl start promtail
```

View file

@ -0,0 +1,19 @@
[Unit]
Documentation=https://grafana.com/docs/loki/latest/clients/promtail/
Requires=docker.service
After=docker.service
[Install]
WantedBy=multi-user.target
[Service]
ExecStartPre=docker pull grafana/promtail
ExecStartPre=-docker stop promtail
ExecStartPre=-docker rm promtail
ExecStart=docker run --name promtail \
--hostname "%H" \
-v /root/promtail.yaml:/config.yaml:ro \
-v /var/log:/var/log \
-v /root/var/logs:/var/logs:ro \
-v /var/lib/docker/containers:/var/lib/docker/containers:ro \
grafana/promtail -config.file=/config.yaml -config.expand-env=true

View file

@ -0,0 +1,45 @@
# https://grafana.com/docs/loki/latest/clients/promtail/configuration/
# We don't want Promtail's HTTP / GRPC server.
server:
disable: true
# Loki URL
# For Grafana Cloud, it can be found in the integrations section.
clients:
- url: http://loki:3100/loki/api/v1/push
# Manually add entries for all our services. This is a bit cumbersome, but
# - Retains flexibility in file names.
# - Makes adding job labels easy.
# - Does not get in the way of logrotation.
#
# In addition, also scrape logs from all docker containers.
scrape_configs:
- job_name: museum
static_configs:
- labels:
job: museum
host: ${HOSTNAME}
__path__: /var/logs/museum.log
- job_name: copycat-db
static_configs:
- labels:
job: copycat-db
host: ${HOSTNAME}
__path__: /var/logs/copycat-db.log
- job_name: phoenix
static_configs:
- labels:
job: phoenix
host: ${HOSTNAME}
__path__: /var/logs/phoenix.log
- job_name: docker
static_configs:
- labels:
job: docker
host: ${HOSTNAME}
__path__: /var/lib/docker/containers/*/*-json.log

5
mobile/.gitignore vendored
View file

@ -9,6 +9,9 @@
.history
.svn/
# Editors
.vscode/
# IntelliJ related
*.iml
*.ipr
@ -25,7 +28,6 @@
.pub/
/build/
# Web related
lib/generated_plugin_registrant.dart
@ -37,6 +39,5 @@ android/app/.settings/*
android/.settings/
.env
fastlane/report.xml
TensorFlowLiteC.framework

View file

@ -23,7 +23,8 @@ If you're looking for Ente Auth instead, see [../auth](../auth/README.md).
### Android
The [GitHub releases](https://github.com/ente-io/photos-app/releases) contain
The [GitHub
releases](https://github.com/ente-io/ente/releases?q=tag%3Aphotos-v0) contain
APKs, built straight from source. The latest build is available at
[ente.io/apk](https://ente.io/apk). These builds keep themselves updated,
without relying on third party stores.

32
mobile/docs/release.md Normal file
View file

@ -0,0 +1,32 @@
# Releases
Create a PR to bump up the version in `pubspec.yaml`.
> [!NOTE]
>
> Use [semver](https://semver.org/) for the tags, with `photos-` as a prefix.
> Multiple beta releases for the same upcoming version can be done by adding
> build metadata at the end, e.g. `photos-v1.2.3-beta+3`.
Once that is merged, tag main, and push the tag.
```sh
git tag photos-v1.2.3
git push origin photos-v1.2.3
```
This'll trigger a GitHub workflow that:
* Creates a new draft GitHub release and attaches the build artifacts to it
(mobile APKs),
Once the workflow completes, go to the draft GitHub release that was created.
> [!NOTE]
>
> Keep the title of the release same as the tag.
Set "Previous tag" to the last release of auth and press "Generate release
notes". The generated release note will contain all PRs and new contributors
from all the releases in the monorepo, so you'll need to filter them to keep
only the things that relate to the Photos mobile app.

View file

@ -27,7 +27,7 @@ FEATURES
- und noch VIELES mehr!
BERECHTIGUNGEN
Diese können unter folgendem Link überprüft werden: https://github.com/ente-io/photos-app/blob/f-droid/android/permissions.md
Diese können unter folgendem Link überprüft werden: https://github.com/ente-io/ente/blob/f-droid/mobile/android/permissions.md
PREIS
Wir bieten keine lebenslang kostenlosen Abonnements an, da es für uns wichtig ist, einen nachhaltigen Service anzubieten. Wir bieten jedoch bezahlbare Abonemments an, welche auch mit der Familie geteilt werden können. Mehr Informationen sind auf ente.io zu finden.

View file

@ -27,7 +27,7 @@ FEATURES
- and a LOT more!
PERMISSIONS
ente requests for certain permissions to serve the purpose of a photo storage provider, which can be reviewed here: https://github.com/ente-io/photos-app/blob/f-droid/android/permissions.md
ente requests for certain permissions to serve the purpose of a photo storage provider, which can be reviewed here: https://github.com/ente-io/ente/blob/f-droid/mobile/android/permissions.md
PRICING
We don't offer forever free plans, because it is important to us that we remain sustainable and withstand the test of time. Instead we offer affordable plans that you can freely share with your family. You can find more information at ente.io.

View file

@ -27,7 +27,7 @@ CARACTERÍSTICAS
- ¡Y mucho más!
PERMISOS
ente solicita ciertos permisos para servir al propósito de un proveedor de almacenamiento de fotos, que puede ser revisado aquí: https://github.com/ente-io/photos-app/blob/f-droid/android/permissions.md
ente solicita ciertos permisos para servir al propósito de un proveedor de almacenamiento de fotos, que puede ser revisado aquí: https://github.com/ente-io/ente/blob/f-droid/mobile/android/permissions.md
PRECIOS
No ofrecemos planes gratis para siempre, porque es importante para nosotros seguir siendo sostenibles y resistir a la prueba del tiempo. En su lugar, ofrecemos planes asequibles que puedes compartir libremente con tu familia. Puedes encontrar más información en ente.io.

View file

@ -27,7 +27,7 @@ CARACTÉRISTIQUES
- et beaucoup de choses encore !
PERMISSIONS
ente sollicite diverses autorisations dans le but de fonctionner en tant que service de stockage de photos, et ces autorisations sont détaillées ici : https://github.com/ente-io/photos-app/blob/f-droid/android/permissions.md
ente sollicite diverses autorisations dans le but de fonctionner en tant que service de stockage de photos, et ces autorisations sont détaillées ici : https://github.com/ente-io/ente/blob/f-droid/mobile/android/permissions.md
PRIX
Nous ne proposons pas d'abonnement gratuits pour toujours, car il est important pour nous de rester durables et de résister à l'épreuve du temps. Au lieu de cela, nous vous proposons des abonnements abordables que vous pouvez partager librement avec votre famille. Vous pouvez trouver plus d'informations sur ente.io.

View file

@ -27,7 +27,7 @@ ente גם מקל על שיתוף האלבומים שלך עם קרובך, גם
- ועוד הרבה יותר!
הרשאות
ente מבקש הרשאות מסוימות כדי לספק שירותי אחסון תמונות, וניתן לסקור אותן כאן: https://github.com/ente-io/photos-app/blob/f-droid/android/permissions.md
ente מבקש הרשאות מסוימות כדי לספק שירותי אחסון תמונות, וניתן לסקור אותן כאן: https://github.com/ente-io/ente/blob/f-droid/mobile/android/permissions.md
מחיר
אנחנו לא מציעים תוכניות בחינם לתמיד, משום שזה חשוב לנו להיות עמידים ולעמוד במבחן הזמן. במקום זאת אנחנו מציעים תוכניות במחיר סביר כדי שתוכל לשתף באופן חופשי עם המשפחה שלך. ניתן למצוא עוד מידע ב-ente.io.

View file

@ -27,7 +27,7 @@ CARATTERISTICHE
- e molto altro ancora!
PERMESSI
ente richiede alcune autorizzazioni per servire lo scopo di un provider di storage fotografico, che può essere esaminato qui: https://github.com/ente-io/photos-app/blob/f-droid/android/permissions.md
ente richiede alcune autorizzazioni per servire lo scopo di un provider di storage fotografico, che può essere esaminato qui: https://github.com/ente-io/ente/blob/f-droid/mobile/android/permissions.md
PREZZO
Non offriamo piani gratuiti per sempre, perché per noi è importante rimanere sostenibili e resistere alla prova del tempo. Offriamo invece piani accessibili che si possono condividere liberamente con la propria famiglia. Puoi trovare maggiori informazioni su ente.io.

View file

@ -27,7 +27,7 @@ FUNCTIES
- en nog veel meer!
TOESTEMMINGEN
ente heeft bepaalde machtigingen nodig om uw foto's op te slaan, die hier bekeken kunnen worden: https://github.com/ente-io/photos-app/blob/f-droid/android/permissions.md
ente heeft bepaalde machtigingen nodig om uw foto's op te slaan, die hier bekeken kunnen worden: https://github.com/ente-io/ente/blob/f-droid/mobile/android/permissions.md
PRIJZEN
We bieden geen oneindig gratis plannen aan, omdat het voor ons belangrijk is dat we duurzaam blijven en de tand des tijds weerstaan. In plaats daarvan bieden we betaalbare plannen aan die je vrij kunt delen met je familie. Je kunt meer informatie vinden op ente.io.

View file

@ -27,7 +27,7 @@ RECURSOS
- e MUITO MAIS!
PERMISSÕES
ente solicita certas permissões para servir o propósito de um provedor de armazenamento de fotos, que pode ser revisado aqui: https://github.com/ente-io/photos-app/blob/f-droid/android/permissions.md
ente solicita certas permissões para servir o propósito de um provedor de armazenamento de fotos, que pode ser revisado aqui: https://github.com/ente-io/ente/blob/f-droid/mobile/android/permissions.md
PREÇO
Não oferecemos planos gratuitos para sempre, porque é importante para nós que permaneçamos sustentáveis e resistamos à prova do tempo. Em vez disso, oferecemos planos acessíveis que você pode compartilhar livremente com sua família. Você pode encontrar mais informações em ente.io.

View file

@ -27,7 +27,7 @@ ente также делает так, что делится альбомами с
- и ещё МНОГОЕ другое!
РАЗРЕШЕНИЯ
ente просит разрешения на использование хранилища фотографий, которые можно рассмотреть здесь: https://github.com/ente-io/photos-app/blob/f-droid/android/permissions.md
ente просит разрешения на использование хранилища фотографий, которые можно рассмотреть здесь: https://github.com/ente-io/ente/blob/f-droid/mobile/android/permissions.md
ЦЕНА
Мы не предлагаем бесконечные бесплатные планы, потому что для нас важно оставаться устойчивыми и выдерживать испытание временем. Вместо этого мы предлагаем доступные по цене планы, которыми вы можете свободно делиться с вашей семьей. Дополнительную информацию можно найти на сайте ente.io.

View file

@ -4,7 +4,7 @@ ente 是一个简单的应用程序来备份和分享您的照片和视频。
我们在Android、iOS、web 和桌面上有开源应用, 和您的照片将以端到端加密方式 (e2ee) 无缝同步。
ente也使分享相册给自己的爱人、亲人变得轻而易举即使他们可能并不使用ente。 您可以分享可公开查看的链接使他们可以查看您的相册并通过添加照片来协作而不需要注册账户或下载app。 权限
ente也使分享相册给自己的爱人、亲人变得轻而易举即使他们可能并不使用ente。 您可以分享可公开查看的链接使他们可以查看您的相册并通过添加照片来协作而不需要注册账户或下载app。 ente也使分享相册给自己的爱人、亲人变得轻而易举即使他们可能并不使用ente。 您可以分享可公开查看的链接使他们可以查看您的相册并通过添加照片来协作而不需要注册账户或下载app。 权限
您的加密数据已复制到三个不同的地点,包括巴黎的一个安全屋。 我们认真对待子孙后代,并确保您的回忆比您长寿。 我们认真对待子孙后代,并确保您的回忆比您长寿。
@ -27,10 +27,10 @@ ente也使分享相册给自己的爱人、亲人变得轻而易举即使他
- 还有更多特色待你发现!
权限
ente需要特定权限以执行作为图像存储提供商的职责相关内容可以在此链接查阅https://github.com/ente-io/photos-app/blob/f-droid/android/permissions.md
ente需要特定权限以执行作为图像存储提供商的职责相关内容可以在此链接查阅https://github.com/ente-io/ente/blob/f-droid/mobile/android/permissions.md
价格
我们不会提供永久免费计划,因为我们必须保持可持续性,经受住时间的考验。 相反,我们向您提供了价格实惠、可自由分享的订阅计划。 您可以在 ente.io 找到更多信息。 相反,我们向您提供了价格实惠、可自由分享的订阅计划。 您可以在 ente.io 找到更多信息。
我们不会提供永久免费计划,因为我们必须保持可持续性,经受住时间的考验。 相反,我们向您提供了价格实惠、可自由分享的订阅计划。 您可以在 ente.io 找到更多信息。 相反,我们向您提供了价格实惠、可自由分享的订阅计划。 您可以在 ente.io 找到更多信息。 相反,我们向您提供了价格实惠、可自由分享的订阅计划。 您可以在 ente.io 找到更多信息。
支持
我们对提供真人支持感到自豪。 我们对提供真人支持感到自豪。 如果您是我们的付费客户,您可以联系 team@ente.io 并在24小时内收到来自我们团队的回复。

View file

@ -20,10 +20,18 @@ typedef String MessageIfAbsent(String messageStr, List<dynamic> args);
class MessageLookup extends MessageLookupByLibrary {
String get localeName => 'cs';
static String m0(count) =>
"${Intl.plural(count, zero: 'Add collaborator', one: 'Add collaborator', other: 'Add collaborators')}";
static String m1(count) =>
"${Intl.plural(count, zero: 'Add viewer', one: 'Add viewer', other: 'Add viewers')}";
final messages = _notInlinedMessages(_notInlinedMessages);
static Map<String, Function> _notInlinedMessages(_) => <String, Function>{
"addCollaborators": m0,
"addToHiddenAlbum":
MessageLookupByLibrary.simpleMessage("Add to hidden album"),
"addViewers": m1,
"changeLocationOfSelectedItems": MessageLookupByLibrary.simpleMessage(
"Change location of selected items?"),
"contacts": MessageLookupByLibrary.simpleMessage("Contacts"),
@ -37,6 +45,9 @@ class MessageLookup extends MessageLookupByLibrary {
"fileTypes": MessageLookupByLibrary.simpleMessage("File types"),
"joinDiscord": MessageLookupByLibrary.simpleMessage("Join Discord"),
"locations": MessageLookupByLibrary.simpleMessage("Locations"),
"longPressAnEmailToVerifyEndToEndEncryption":
MessageLookupByLibrary.simpleMessage(
"Long press an email to verify end to end encryption."),
"modifyYourQueryOrTrySearchingFor":
MessageLookupByLibrary.simpleMessage(
"Modify your query, or try searching for"),

View file

@ -21,27 +21,33 @@ class MessageLookup extends MessageLookupByLibrary {
String get localeName => 'de';
static String m0(count) =>
"${Intl.plural(count, zero: 'Add collaborator', one: 'Add collaborator', other: 'Add collaborators')}";
static String m2(count) =>
"${Intl.plural(count, one: 'Element hinzufügen', other: 'Elemente hinzufügen')}";
static String m1(storageAmount, endDate) =>
static String m3(storageAmount, endDate) =>
"Dein ${storageAmount} Add-on ist gültig bis ${endDate}";
static String m2(emailOrName) => "Von ${emailOrName} hinzugefügt";
static String m1(count) =>
"${Intl.plural(count, zero: 'Add viewer', one: 'Add viewer', other: 'Add viewers')}";
static String m3(albumName) => "Erfolgreich zu ${albumName} hinzugefügt";
static String m4(emailOrName) => "Von ${emailOrName} hinzugefügt";
static String m4(count) =>
static String m5(albumName) => "Erfolgreich zu ${albumName} hinzugefügt";
static String m6(count) =>
"${Intl.plural(count, zero: 'Keine Teilnehmer', one: '1 Teilnehmer', other: '${count} Teilnehmer')}";
static String m5(versionValue) => "Version: ${versionValue}";
static String m7(versionValue) => "Version: ${versionValue}";
static String m6(paymentProvider) =>
static String m8(paymentProvider) =>
"Bitte kündigen Sie Ihr aktuelles Abo über ${paymentProvider} zuerst";
static String m7(user) =>
static String m9(user) =>
"Der Nutzer \"${user}\" wird keine weiteren Fotos zum Album hinzufügen können.\n\nJedoch kann er weiterhin vorhandene Bilder, welche durch ihn hinzugefügt worden sind, wieder entfernen";
static String m8(isFamilyMember, storageAmountInGb) =>
static String m10(isFamilyMember, storageAmountInGb) =>
"${Intl.select(isFamilyMember, {
'true':
'Deine Familiengruppe hat bereits ${storageAmountInGb} GB erhalten',
@ -49,166 +55,166 @@ class MessageLookup extends MessageLookupByLibrary {
'other': 'Du hast bereits ${storageAmountInGb} GB erhalten!',
})}";
static String m9(albumName) =>
static String m11(albumName) =>
"Kollaborativer Link für ${albumName} erstellt";
static String m10(familyAdminEmail) =>
static String m12(familyAdminEmail) =>
"Bitte kontaktiere <green>${familyAdminEmail}</green> um dein Abo zu verwalten";
static String m11(provider) =>
static String m13(provider) =>
"Bitte kontaktieren Sie uns über support@ente.io, um Ihr ${provider} Abo zu verwalten.";
static String m12(count) =>
static String m14(count) =>
"${Intl.plural(count, one: 'Lösche ${count} Element', other: 'Lösche ${count} Elemente')}";
static String m13(currentlyDeleting, totalCount) =>
static String m15(currentlyDeleting, totalCount) =>
"Lösche ${currentlyDeleting} / ${totalCount}";
static String m14(albumName) =>
static String m16(albumName) =>
"Der öffentliche Link zum Zugriff auf \"${albumName}\" wird entfernt.";
static String m15(supportEmail) =>
static String m17(supportEmail) =>
"Bitte sende eine E-Mail an ${supportEmail} von deiner registrierten E-Mail-Adresse";
static String m16(count, storageSaved) =>
static String m18(count, storageSaved) =>
"Du hast ${Intl.plural(count, one: '${count} duplizierte Datei', other: '${count} dupliziere Dateien')} gelöscht und (${storageSaved}!) freigegeben";
static String m17(count, formattedSize) =>
static String m19(count, formattedSize) =>
"${count} Dateien, ${formattedSize} jede";
static String m18(newEmail) => "E-Mail-Adresse geändert zu ${newEmail}";
static String m20(newEmail) => "E-Mail-Adresse geändert zu ${newEmail}";
static String m19(email) =>
static String m21(email) =>
"${email} hat kein Ente-Konto.\n\nSenden Sie eine Einladung, um Fotos zu teilen.";
static String m20(count, formattedNumber) =>
static String m22(count, formattedNumber) =>
"${Intl.plural(count, one: '1 Datei', other: '${formattedNumber} Dateien')} auf diesem Gerät wurde(n) sicher gespeichert";
static String m21(count, formattedNumber) =>
static String m23(count, formattedNumber) =>
"${Intl.plural(count, one: '1 Datei', other: '${formattedNumber} Dateien')} in diesem Album wurde(n) sicher gespeichert";
static String m22(storageAmountInGB) =>
static String m24(storageAmountInGB) =>
"${storageAmountInGB} GB jedes Mal, wenn sich jemand mit deinem Code für einen bezahlten Tarif anmeldet";
static String m23(freeAmount, storageUnit) =>
static String m25(freeAmount, storageUnit) =>
"${freeAmount} ${storageUnit} kostenlos";
static String m24(endDate) => "Kostenlose Demo verfügbar bis zum ${endDate}";
static String m26(endDate) => "Kostenlose Demo verfügbar bis zum ${endDate}";
static String m25(count) =>
static String m27(count) =>
"Sie können immer noch ${Intl.plural(count, one: 'darauf', other: 'auf sie')} auf ente zugreifen, solange Sie ein aktives Abonnement haben";
static String m26(sizeInMBorGB) => "${sizeInMBorGB} freigeben";
static String m28(sizeInMBorGB) => "${sizeInMBorGB} freigeben";
static String m27(count, formattedSize) =>
static String m29(count, formattedSize) =>
"${Intl.plural(count, one: 'Es kann vom Gerät gelöscht werden, um ${formattedSize} freizugeben', other: 'Sie können vom Gerät gelöscht werden, um ${formattedSize} freizugeben')}";
static String m28(currentlyProcessing, totalCount) =>
static String m30(currentlyProcessing, totalCount) =>
"Verarbeite ${currentlyProcessing} / ${totalCount}";
static String m29(count) =>
static String m31(count) =>
"${Intl.plural(count, one: '${count} Objekt', other: '${count} Objekte')}";
static String m30(expiryTime) => "Link läuft am ${expiryTime} ab";
static String m32(expiryTime) => "Link läuft am ${expiryTime} ab";
static String m31(count, formattedCount) =>
static String m33(count, formattedCount) =>
"${Intl.plural(count, zero: 'keine Erinnerungsstücke', one: '${formattedCount} Erinnerung', other: '${formattedCount} Erinnerungsstücke')}";
static String m32(count) =>
static String m34(count) =>
"${Intl.plural(count, one: 'Element verschieben', other: 'Elemente verschieben')}";
static String m33(albumName) => "Erfolgreich zu ${albumName} hinzugefügt";
static String m35(albumName) => "Erfolgreich zu ${albumName} hinzugefügt";
static String m34(passwordStrengthValue) =>
static String m36(passwordStrengthValue) =>
"Passwortstärke: ${passwordStrengthValue}";
static String m35(providerName) =>
static String m37(providerName) =>
"Bitte kontaktiere den Support von ${providerName}, falls etwas abgebucht wurde";
static String m36(reason) =>
static String m38(reason) =>
"Leider ist deine Zahlung aus folgendem Grund fehlgeschlagen: ${reason}";
static String m37(endDate) =>
static String m39(endDate) =>
"Kostenlose Testversion gültig bis ${endDate}.\nSie können anschließend ein bezahltes Paket auswählen.";
static String m38(toEmail) => "Bitte sende uns eine E-Mail an ${toEmail}";
static String m40(toEmail) => "Bitte sende uns eine E-Mail an ${toEmail}";
static String m39(toEmail) => "Bitte sende die Protokolle an ${toEmail}";
static String m41(toEmail) => "Bitte sende die Protokolle an ${toEmail}";
static String m40(storeName) => "Bewerte uns auf ${storeName}";
static String m42(storeName) => "Bewerte uns auf ${storeName}";
static String m41(storageInGB) =>
static String m43(storageInGB) =>
"3. Ihr beide erhaltet ${storageInGB} GB* kostenlos";
static String m42(userEmail) =>
static String m44(userEmail) =>
"${userEmail} wird aus diesem geteilten Album entfernt\n\nAlle von ihnen hinzugefügte Fotos werden ebenfalls aus dem Album entfernt";
static String m43(endDate) => "Erneuert am ${endDate}";
static String m45(endDate) => "Erneuert am ${endDate}";
static String m44(count) =>
static String m46(count) =>
"${Intl.plural(count, one: '${count} Ergebnis gefunden', other: '${count} Ergebnisse gefunden')}";
static String m45(count) => "${count} ausgewählt";
static String m47(count) => "${count} ausgewählt";
static String m46(count, yourCount) =>
static String m48(count, yourCount) =>
"${count} ausgewählt (${yourCount} von Ihnen)";
static String m47(verificationID) =>
static String m49(verificationID) =>
"Hier ist meine Verifizierungs-ID: ${verificationID} für ente.io.";
static String m48(verificationID) =>
static String m50(verificationID) =>
"Hey, kannst du bestätigen, dass dies deine ente.io Verifizierungs-ID ist: ${verificationID}";
static String m49(referralCode, referralStorageInGB) =>
static String m51(referralCode, referralStorageInGB) =>
"ente Weiterempfehlungs-Code: ${referralCode} \n\nEinlösen unter Einstellungen → Allgemein → Weiterempfehlungen, um ${referralStorageInGB} GB kostenlos zu erhalten, sobald Sie einen kostenpflichtigen Tarif abgeschlossen haben\n\nhttps://ente.io";
static String m50(numberOfPeople) =>
static String m52(numberOfPeople) =>
"${Intl.plural(numberOfPeople, zero: 'Teile mit bestimmten Personen', one: 'Teilen mit 1 Person', other: 'Teilen mit ${numberOfPeople} Personen')}";
static String m51(emailIDs) => "Geteilt mit ${emailIDs}";
static String m52(fileType) =>
"Dieses ${fileType} wird von deinem Gerät gelöscht.";
static String m53(fileType) =>
"Dieses ${fileType} existiert auf ente.io und deinem Gerät.";
static String m53(emailIDs) => "Geteilt mit ${emailIDs}";
static String m54(fileType) =>
"Dieses ${fileType} wird von deinem Gerät gelöscht.";
static String m55(fileType) =>
"Dieses ${fileType} existiert auf ente.io und deinem Gerät.";
static String m56(fileType) =>
"Dieses ${fileType} wird auf ente.io gelöscht.";
static String m55(storageAmountInGB) => "${storageAmountInGB} GB";
static String m57(storageAmountInGB) => "${storageAmountInGB} GB";
static String m56(
static String m58(
usedAmount, usedStorageUnit, totalAmount, totalStorageUnit) =>
"${usedAmount} ${usedStorageUnit} von ${totalAmount} ${totalStorageUnit} verwendet";
static String m57(id) =>
static String m59(id) =>
"Ihr ${id} ist bereits mit einem anderen \'ente\'-Konto verknüpft.\nWenn Sie Ihre ${id} mit diesem Konto verwenden möchten, kontaktieren Sie bitte unseren Support\'";
static String m58(endDate) => "Ihr Abo endet am ${endDate}";
static String m60(endDate) => "Ihr Abo endet am ${endDate}";
static String m59(completed, total) =>
static String m61(completed, total) =>
"${completed}/${total} Erinnerungsstücke gesichert";
static String m60(storageAmountInGB) =>
static String m62(storageAmountInGB) =>
"Diese erhalten auch ${storageAmountInGB} GB";
static String m61(email) => "Dies ist ${email}s Verifizierungs-ID";
static String m63(email) => "Dies ist ${email}s Verifizierungs-ID";
static String m62(count) =>
static String m64(count) =>
"${Intl.plural(count, zero: '', one: '1 Tag', other: '${count} Tage')}";
static String m63(endDate) => "Gültig bis ${endDate}";
static String m65(endDate) => "Gültig bis ${endDate}";
static String m64(email) => "Verifiziere ${email}";
static String m66(email) => "Verifiziere ${email}";
static String m65(email) =>
static String m67(email) =>
"Wir haben eine E-Mail an <green>${email}</green> gesendet";
static String m66(count) =>
static String m68(count) =>
"${Intl.plural(count, one: 'vor einem Jahr', other: 'vor ${count} Jahren')}";
static String m67(storageSaved) =>
static String m69(storageSaved) =>
"Du hast ${storageSaved} erfolgreich freigegeben!";
final messages = _notInlinedMessages(_notInlinedMessages);
@ -228,16 +234,17 @@ class MessageLookup extends MessageLookupByLibrary {
"Neue E-Mail-Adresse hinzufügen"),
"addCollaborator":
MessageLookupByLibrary.simpleMessage("Bearbeiter hinzufügen"),
"addCollaborators": m0,
"addFromDevice":
MessageLookupByLibrary.simpleMessage("Vom Gerät hinzufügen"),
"addItem": m0,
"addItem": m2,
"addLocation": MessageLookupByLibrary.simpleMessage("Ort hinzufügen"),
"addLocationButton": MessageLookupByLibrary.simpleMessage("Hinzufügen"),
"addMore": MessageLookupByLibrary.simpleMessage("Mehr hinzufügen"),
"addNew": MessageLookupByLibrary.simpleMessage("Hinzufügen"),
"addOnPageSubtitle":
MessageLookupByLibrary.simpleMessage("Details der Add-ons"),
"addOnValidTill": m1,
"addOnValidTill": m3,
"addOns": MessageLookupByLibrary.simpleMessage("Add-ons"),
"addPhotos": MessageLookupByLibrary.simpleMessage("Fotos hinzufügen"),
"addSelected":
@ -248,11 +255,12 @@ class MessageLookup extends MessageLookupByLibrary {
"addToHiddenAlbum": MessageLookupByLibrary.simpleMessage(
"Zum versteckten Album hinzufügen"),
"addViewer": MessageLookupByLibrary.simpleMessage("Album teilen"),
"addViewers": m1,
"addYourPhotosNow":
MessageLookupByLibrary.simpleMessage("Füge deine Foto jetzt hinzu"),
"addedAs": MessageLookupByLibrary.simpleMessage("Hinzugefügt als"),
"addedBy": m2,
"addedSuccessfullyTo": m3,
"addedBy": m4,
"addedSuccessfullyTo": m5,
"addingToFavorites": MessageLookupByLibrary.simpleMessage(
"Wird zu Favoriten hinzugefügt..."),
"advanced": MessageLookupByLibrary.simpleMessage("Erweitert"),
@ -263,7 +271,7 @@ class MessageLookup extends MessageLookupByLibrary {
"after1Week": MessageLookupByLibrary.simpleMessage("Nach 1 Woche"),
"after1Year": MessageLookupByLibrary.simpleMessage("Nach 1 Jahr"),
"albumOwner": MessageLookupByLibrary.simpleMessage("Besitzer"),
"albumParticipantsCount": m4,
"albumParticipantsCount": m6,
"albumTitle": MessageLookupByLibrary.simpleMessage("Albumtitel"),
"albumUpdated":
MessageLookupByLibrary.simpleMessage("Album aktualisiert"),
@ -301,7 +309,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Android, iOS, Web, Desktop"),
"androidSignInTitle": MessageLookupByLibrary.simpleMessage(
"Authentifizierung erforderlich"),
"appVersion": m5,
"appVersion": m7,
"appleId": MessageLookupByLibrary.simpleMessage("Apple ID"),
"apply": MessageLookupByLibrary.simpleMessage("Anwenden"),
"applyCodeTitle": MessageLookupByLibrary.simpleMessage("Code nutzen"),
@ -387,12 +395,14 @@ class MessageLookup extends MessageLookupByLibrary {
"canOnlyRemoveFilesOwnedByYou": MessageLookupByLibrary.simpleMessage(
"Du kannst nur Dateien entfernen, die dir gehören"),
"cancel": MessageLookupByLibrary.simpleMessage("Abbrechen"),
"cancelOtherSubscription": m6,
"cancelOtherSubscription": m8,
"cancelSubscription":
MessageLookupByLibrary.simpleMessage("Abonnement kündigen"),
"cannotAddMorePhotosAfterBecomingViewer": m7,
"cannotAddMorePhotosAfterBecomingViewer": m9,
"cannotDeleteSharedFiles": MessageLookupByLibrary.simpleMessage(
"Konnte geteilte Dateien nicht löschen"),
"castInstruction": MessageLookupByLibrary.simpleMessage(
"Besuche cast.ente.io auf dem Gerät, das du verbinden möchtest.\n\nGib den unten angegebenen Code ein, um das Album auf deinem Fernseher abzuspielen."),
"centerPoint": MessageLookupByLibrary.simpleMessage("Mittelpunkt"),
"changeEmail":
MessageLookupByLibrary.simpleMessage("E-Mail-Adresse ändern"),
@ -413,10 +423,13 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Freien Speicher einlösen"),
"claimMore": MessageLookupByLibrary.simpleMessage("Mehr einlösen!"),
"claimed": MessageLookupByLibrary.simpleMessage("Eingelöst"),
"claimedStorageSoFar": m8,
"claimedStorageSoFar": m10,
"cleanUncategorized":
MessageLookupByLibrary.simpleMessage("Unkategorisiert leeren"),
"cleanUncategorizedDescription": MessageLookupByLibrary.simpleMessage(
"Entferne alle Dateien von \"Unkategorisiert\" die in anderen Alben vorhanden sind"),
"clearCaches": MessageLookupByLibrary.simpleMessage("Cache löschen"),
"clearIndexes": MessageLookupByLibrary.simpleMessage("Indexe löschen"),
"click": MessageLookupByLibrary.simpleMessage("• Klick"),
"clickOnTheOverflowMenu": MessageLookupByLibrary.simpleMessage(
"• Klicken Sie auf das Überlaufmenü"),
@ -435,7 +448,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Erstelle einen Link, um anderen zu ermöglichen, Fotos in deinem geteilten Album hinzuzufügen und zu sehen - ohne dass diese ein Konto von ente.io oder die App benötigen. Ideal, um Fotos von Events zu sammeln."),
"collaborativeLink":
MessageLookupByLibrary.simpleMessage("Gemeinschaftlicher Link"),
"collaborativeLinkCreatedFor": m9,
"collaborativeLinkCreatedFor": m11,
"collaborator": MessageLookupByLibrary.simpleMessage("Bearbeiter"),
"collaboratorsCanAddPhotosAndVideosToTheSharedAlbum":
MessageLookupByLibrary.simpleMessage(
@ -462,10 +475,10 @@ class MessageLookup extends MessageLookupByLibrary {
"Wiederherstellungsschlüssel bestätigen"),
"confirmYourRecoveryKey": MessageLookupByLibrary.simpleMessage(
"Bestätigen Sie ihren Wiederherstellungsschlüssel"),
"contactFamilyAdmin": m10,
"contactFamilyAdmin": m12,
"contactSupport":
MessageLookupByLibrary.simpleMessage("Support kontaktieren"),
"contactToManageSubscription": m11,
"contactToManageSubscription": m13,
"contacts": MessageLookupByLibrary.simpleMessage("Kontakte"),
"contents": MessageLookupByLibrary.simpleMessage("Inhalte"),
"continueLabel": MessageLookupByLibrary.simpleMessage("Weiter"),
@ -543,11 +556,11 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Vom Gerät löschen"),
"deleteFromEnte":
MessageLookupByLibrary.simpleMessage("Auf ente.io löschen"),
"deleteItemCount": m12,
"deleteItemCount": m14,
"deleteLocation":
MessageLookupByLibrary.simpleMessage("Standort löschen"),
"deletePhotos": MessageLookupByLibrary.simpleMessage("Fotos löschen"),
"deleteProgress": m13,
"deleteProgress": m15,
"deleteReason1": MessageLookupByLibrary.simpleMessage(
"Es fehlt eine zentrale Funktion, die ich benötige"),
"deleteReason2": MessageLookupByLibrary.simpleMessage(
@ -562,17 +575,20 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Geteiltes Album löschen?"),
"deleteSharedAlbumDialogBody": MessageLookupByLibrary.simpleMessage(
"Dieses Album wird für alle gelöscht\n\nDu wirst den Zugriff auf geteilte Fotos in diesem Album, die anderen gehören, verlieren"),
"descriptions": MessageLookupByLibrary.simpleMessage("Descriptions"),
"descriptions": MessageLookupByLibrary.simpleMessage("Beschreibungen"),
"deselectAll": MessageLookupByLibrary.simpleMessage("Alle abwählen"),
"designedToOutlive":
MessageLookupByLibrary.simpleMessage("Entwickelt um zu bewahren"),
"details": MessageLookupByLibrary.simpleMessage("Details"),
"devAccountChanged": MessageLookupByLibrary.simpleMessage(
"Das Entwicklerkonto, das wir verwenden, um ente im App Store zu veröffentlichen, hat sich geändert. Aus diesem Grund musst du dich erneut anmelden.\n\nWir entschuldigen uns für die Unannehmlichkeiten, aber das war unvermeidlich."),
"deviceCodeHint": MessageLookupByLibrary.simpleMessage("Code eingeben"),
"deviceFilesAutoUploading": MessageLookupByLibrary.simpleMessage(
"Dateien, die zu diesem Album hinzugefügt werden, werden automatisch zu ente hochgeladen."),
"deviceLockExplanation": MessageLookupByLibrary.simpleMessage(
"Das Sperren des Gerätes verhindern, solange \'ente\' im Vordergrund geöffnet ist und eine Sicherung läuft. \nDies wird für gewöhnlich nicht benötigt, kann aber dabei helfen große Transfers schneller durchzuführen."),
"deviceNotFound":
MessageLookupByLibrary.simpleMessage("Gerät nicht gefunden"),
"didYouKnow": MessageLookupByLibrary.simpleMessage("Schon gewusst?"),
"disableAutoLock": MessageLookupByLibrary.simpleMessage(
"Automatische Sperre deaktivieren"),
@ -580,7 +596,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Zuschauer können weiterhin Screenshots oder mit anderen externen Programmen Kopien der Bilder machen."),
"disableDownloadWarningTitle":
MessageLookupByLibrary.simpleMessage("Bitte beachten Sie:"),
"disableLinkMessage": m14,
"disableLinkMessage": m16,
"disableTwofactor": MessageLookupByLibrary.simpleMessage(
"Zweiten Faktor (2FA) deaktivieren"),
"disablingTwofactorAuthentication":
@ -603,9 +619,9 @@ class MessageLookup extends MessageLookupByLibrary {
"Herunterladen fehlgeschlagen"),
"downloading":
MessageLookupByLibrary.simpleMessage("Wird heruntergeladen..."),
"dropSupportEmail": m15,
"duplicateFileCountWithStorageSaved": m16,
"duplicateItemsGroup": m17,
"dropSupportEmail": m17,
"duplicateFileCountWithStorageSaved": m18,
"duplicateItemsGroup": m19,
"edit": MessageLookupByLibrary.simpleMessage("Bearbeiten"),
"editLocation":
MessageLookupByLibrary.simpleMessage("Standort bearbeiten"),
@ -618,8 +634,8 @@ class MessageLookup extends MessageLookupByLibrary {
"Änderungen des Standorts werden nur in ente sichtbar sein"),
"eligible": MessageLookupByLibrary.simpleMessage("zulässig"),
"email": MessageLookupByLibrary.simpleMessage("E-Mail"),
"emailChangedTo": m18,
"emailNoEnteAccount": m19,
"emailChangedTo": m20,
"emailNoEnteAccount": m21,
"emailVerificationToggle":
MessageLookupByLibrary.simpleMessage("E-Mail-Verifizierung"),
"emailYourLogs": MessageLookupByLibrary.simpleMessage(
@ -719,8 +735,8 @@ class MessageLookup extends MessageLookupByLibrary {
"fileTypes": MessageLookupByLibrary.simpleMessage("Dateitypen"),
"fileTypesAndNames":
MessageLookupByLibrary.simpleMessage("Dateitypen und -namen"),
"filesBackedUpFromDevice": m20,
"filesBackedUpInAlbum": m21,
"filesBackedUpFromDevice": m22,
"filesBackedUpInAlbum": m23,
"filesDeleted":
MessageLookupByLibrary.simpleMessage("Dateien gelöscht"),
"flip": MessageLookupByLibrary.simpleMessage("Spiegeln"),
@ -730,26 +746,26 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Passwort vergessen"),
"freeStorageClaimed": MessageLookupByLibrary.simpleMessage(
"Kostenlos hinzugefügter Speicherplatz"),
"freeStorageOnReferralSuccess": m22,
"freeStorageSpace": m23,
"freeStorageOnReferralSuccess": m24,
"freeStorageSpace": m25,
"freeStorageUsable": MessageLookupByLibrary.simpleMessage(
"Freier Speicherplatz nutzbar"),
"freeTrial":
MessageLookupByLibrary.simpleMessage("Kostenlose Testphase"),
"freeTrialValidTill": m24,
"freeUpAccessPostDelete": m25,
"freeUpAmount": m26,
"freeTrialValidTill": m26,
"freeUpAccessPostDelete": m27,
"freeUpAmount": m28,
"freeUpDeviceSpace":
MessageLookupByLibrary.simpleMessage("Gerätespeicher freiräumen"),
"freeUpSpace":
MessageLookupByLibrary.simpleMessage("Speicherplatz freigeben"),
"freeUpSpaceSaving": m27,
"freeUpSpaceSaving": m29,
"galleryMemoryLimitInfo": MessageLookupByLibrary.simpleMessage(
"Bis zu 1000 Erinnerungsstücke angezeigt in der Galerie"),
"general": MessageLookupByLibrary.simpleMessage("Allgemein"),
"generatingEncryptionKeys": MessageLookupByLibrary.simpleMessage(
"Generierung von Verschlüsselungscodes..."),
"genericProgress": m28,
"genericProgress": m30,
"goToSettings":
MessageLookupByLibrary.simpleMessage("Zu den Einstellungen"),
"googlePlayId": MessageLookupByLibrary.simpleMessage("Google Play ID"),
@ -790,6 +806,8 @@ class MessageLookup extends MessageLookupByLibrary {
"Der eingegebene Schlüssel ist ungültig"),
"incorrectRecoveryKeyTitle": MessageLookupByLibrary.simpleMessage(
"Falscher Wiederherstellungs-Schlüssel"),
"indexedItems":
MessageLookupByLibrary.simpleMessage("Indizierte Elemente"),
"insecureDevice":
MessageLookupByLibrary.simpleMessage("Unsicheres Gerät"),
"installManually":
@ -810,13 +828,14 @@ class MessageLookup extends MessageLookupByLibrary {
"itLooksLikeSomethingWentWrongPleaseRetryAfterSome":
MessageLookupByLibrary.simpleMessage(
"Etwas ist schiefgelaufen. Bitte versuche es später noch einmal. Sollte der Fehler weiter bestehen, kontaktiere unser Supportteam."),
"itemCount": m29,
"itemCount": m31,
"itemsShowTheNumberOfDaysRemainingBeforePermanentDeletion":
MessageLookupByLibrary.simpleMessage(
"Elemente zeigen die Anzahl der Tage bis zum dauerhaften Löschen an"),
"itemsWillBeRemovedFromAlbum": MessageLookupByLibrary.simpleMessage(
"Ausgewählte Elemente werden aus diesem Album entfernt"),
"joinDiscord": MessageLookupByLibrary.simpleMessage("Join Discord"),
"joinDiscord":
MessageLookupByLibrary.simpleMessage("Discord beitreten"),
"keepPhotos": MessageLookupByLibrary.simpleMessage("Fotos behalten"),
"kiloMeterUnit": MessageLookupByLibrary.simpleMessage("km"),
"kindlyHelpUsWithThisInformation":
@ -837,7 +856,7 @@ class MessageLookup extends MessageLookupByLibrary {
"linkDeviceLimit": MessageLookupByLibrary.simpleMessage("Geräte Limit"),
"linkEnabled": MessageLookupByLibrary.simpleMessage("Aktiviert"),
"linkExpired": MessageLookupByLibrary.simpleMessage("Abgelaufen"),
"linkExpiresOn": m30,
"linkExpiresOn": m32,
"linkExpiry":
MessageLookupByLibrary.simpleMessage("Ablaufdatum des Links"),
"linkHasExpired":
@ -868,12 +887,14 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Lade Galerie …"),
"loadingMessage":
MessageLookupByLibrary.simpleMessage("Fotos werden geladen..."),
"loadingModel":
MessageLookupByLibrary.simpleMessage("Lade Modelle herunter..."),
"localGallery": MessageLookupByLibrary.simpleMessage("Lokale Galerie"),
"location": MessageLookupByLibrary.simpleMessage("Standort"),
"locationName": MessageLookupByLibrary.simpleMessage("Standortname"),
"locationTagFeatureDescription": MessageLookupByLibrary.simpleMessage(
"Ein Standort-Tag gruppiert alle Fotos, die in einem Radius eines Fotos aufgenommen wurden"),
"locations": MessageLookupByLibrary.simpleMessage("Locations"),
"locations": MessageLookupByLibrary.simpleMessage("Orte"),
"lockButtonLabel": MessageLookupByLibrary.simpleMessage("Sperren"),
"lockScreenEnablePreSteps": MessageLookupByLibrary.simpleMessage(
"Um den Sperrbildschirm zu aktivieren, legen Sie bitte den Geräte-Passcode oder die Bildschirmsperre in den Systemeinstellungen fest."),
@ -885,9 +906,17 @@ class MessageLookup extends MessageLookupByLibrary {
"logout": MessageLookupByLibrary.simpleMessage("Ausloggen"),
"logsDialogBody": MessageLookupByLibrary.simpleMessage(
"Dies wird über Logs gesendet, um uns zu helfen, Ihr Problem zu beheben. Bitte beachten Sie, dass Dateinamen aufgenommen werden, um Probleme mit bestimmten Dateien zu beheben."),
"longPressAnEmailToVerifyEndToEndEncryption":
MessageLookupByLibrary.simpleMessage(
"Long press an email to verify end to end encryption."),
"longpressOnAnItemToViewInFullscreen": MessageLookupByLibrary.simpleMessage(
"Drücken Sie lange auf ein Element, um es im Vollbildmodus anzuzeigen"),
"lostDevice": MessageLookupByLibrary.simpleMessage("Gerät verloren?"),
"machineLearning":
MessageLookupByLibrary.simpleMessage("Maschinelles Lernen"),
"magicSearch": MessageLookupByLibrary.simpleMessage("Magische Suche"),
"magicSearchDescription": MessageLookupByLibrary.simpleMessage(
"Bitte beachten Sie, dass dies mehr Bandbreite nutzt und zu einem höheren Akkuverbrauch führt, bis alle Elemente indiziert sind."),
"manage": MessageLookupByLibrary.simpleMessage("Verwalten"),
"manageDeviceStorage":
MessageLookupByLibrary.simpleMessage("Gerätespeicher verwalten"),
@ -901,7 +930,7 @@ class MessageLookup extends MessageLookupByLibrary {
"maps": MessageLookupByLibrary.simpleMessage("Karten"),
"mastodon": MessageLookupByLibrary.simpleMessage("Mastodon"),
"matrix": MessageLookupByLibrary.simpleMessage("Matrix"),
"memoryCount": m31,
"memoryCount": m33,
"merchandise": MessageLookupByLibrary.simpleMessage("Merchandise"),
"mobileWebDesktop":
MessageLookupByLibrary.simpleMessage("Mobil, Web, Desktop"),
@ -911,12 +940,12 @@ class MessageLookup extends MessageLookupByLibrary {
"Ändere deine Suchanfrage oder suche nach"),
"moments": MessageLookupByLibrary.simpleMessage("Momente"),
"monthly": MessageLookupByLibrary.simpleMessage("Monatlich"),
"moveItem": m32,
"moveItem": m34,
"moveToAlbum":
MessageLookupByLibrary.simpleMessage("Zum Album verschieben"),
"moveToHiddenAlbum": MessageLookupByLibrary.simpleMessage(
"Zu verstecktem Album verschieben"),
"movedSuccessfullyTo": m33,
"movedSuccessfullyTo": m35,
"movedToTrash": MessageLookupByLibrary.simpleMessage(
"In den Papierkorb verschoben"),
"movingFilesToAlbum": MessageLookupByLibrary.simpleMessage(
@ -981,19 +1010,25 @@ class MessageLookup extends MessageLookupByLibrary {
"Bei Bedarf auch so kurz wie Sie wollen..."),
"orPickAnExistingOne": MessageLookupByLibrary.simpleMessage(
"Oder eine Vorherige auswählen"),
"pair": MessageLookupByLibrary.simpleMessage("Koppeln"),
"passkey": MessageLookupByLibrary.simpleMessage("Passkey"),
"passkeyAuthTitle":
MessageLookupByLibrary.simpleMessage("Passkey-Verifizierung"),
"password": MessageLookupByLibrary.simpleMessage("Passwort"),
"passwordChangedSuccessfully": MessageLookupByLibrary.simpleMessage(
"Passwort erfolgreich geändert"),
"passwordLock": MessageLookupByLibrary.simpleMessage("Passwort Sperre"),
"passwordStrength": m34,
"passwordStrength": m36,
"passwordWarning": MessageLookupByLibrary.simpleMessage(
"Wir speichern dieses Passwort nicht. Wenn du es vergisst, <underline>können wir deine Daten nicht entschlüsseln</underline>"),
"paymentDetails":
MessageLookupByLibrary.simpleMessage("Zahlungsdetails"),
"paymentFailed":
MessageLookupByLibrary.simpleMessage("Zahlung fehlgeschlagen"),
"paymentFailedTalkToProvider": m35,
"paymentFailedWithReason": m36,
"paymentFailedTalkToProvider": m37,
"paymentFailedWithReason": m38,
"pendingItems":
MessageLookupByLibrary.simpleMessage("Ausstehende Elemente"),
"pendingSync":
MessageLookupByLibrary.simpleMessage("Synchronisation anstehend"),
"peopleUsingYourCode": MessageLookupByLibrary.simpleMessage(
@ -1016,7 +1051,9 @@ class MessageLookup extends MessageLookupByLibrary {
"pickCenterPoint":
MessageLookupByLibrary.simpleMessage("Mittelpunkt auswählen"),
"pinAlbum": MessageLookupByLibrary.simpleMessage("Album anheften"),
"playStoreFreeTrialValidTill": m37,
"playOnTv": MessageLookupByLibrary.simpleMessage(
"Album auf dem Fernseher wiedergeben"),
"playStoreFreeTrialValidTill": m39,
"playstoreSubscription":
MessageLookupByLibrary.simpleMessage("PlayStore Abo"),
"pleaseCheckYourInternetConnectionAndTryAgain":
@ -1028,12 +1065,12 @@ class MessageLookup extends MessageLookupByLibrary {
"pleaseContactSupportIfTheProblemPersists":
MessageLookupByLibrary.simpleMessage(
"Bitte wenden Sie sich an den Support, falls das Problem weiterhin besteht"),
"pleaseEmailUsAt": m38,
"pleaseEmailUsAt": m40,
"pleaseGrantPermissions": MessageLookupByLibrary.simpleMessage(
"Bitte erteile die nötigen Berechtigungen"),
"pleaseLoginAgain":
MessageLookupByLibrary.simpleMessage("Bitte logge dich erneut ein"),
"pleaseSendTheLogsTo": m39,
"pleaseSendTheLogsTo": m41,
"pleaseTryAgain":
MessageLookupByLibrary.simpleMessage("Bitte versuche es erneut"),
"pleaseVerifyTheCodeYouHaveEntered":
@ -1069,7 +1106,7 @@ class MessageLookup extends MessageLookupByLibrary {
"raiseTicket": MessageLookupByLibrary.simpleMessage("Ticket erstellen"),
"rateTheApp": MessageLookupByLibrary.simpleMessage("App bewerten"),
"rateUs": MessageLookupByLibrary.simpleMessage("Bewerte uns"),
"rateUsOnStore": m40,
"rateUsOnStore": m42,
"recover": MessageLookupByLibrary.simpleMessage("Wiederherstellen"),
"recoverAccount":
MessageLookupByLibrary.simpleMessage("Konto wiederherstellen"),
@ -1102,7 +1139,7 @@ class MessageLookup extends MessageLookupByLibrary {
"1. Gib diesen Code an deine Freunde"),
"referralStep2": MessageLookupByLibrary.simpleMessage(
"2. Sie schließen ein bezahltes Abo ab"),
"referralStep3": m41,
"referralStep3": m43,
"referrals": MessageLookupByLibrary.simpleMessage("Weiterempfehlungen"),
"referralsAreCurrentlyPaused": MessageLookupByLibrary.simpleMessage(
"Einlösungen sind derzeit pausiert"),
@ -1128,7 +1165,7 @@ class MessageLookup extends MessageLookupByLibrary {
"removeLink": MessageLookupByLibrary.simpleMessage("Link entfernen"),
"removeParticipant":
MessageLookupByLibrary.simpleMessage("Teilnehmer entfernen"),
"removeParticipantBody": m42,
"removeParticipantBody": m44,
"removePublicLink":
MessageLookupByLibrary.simpleMessage("Öffentlichen Link entfernen"),
"removeShareItemsWarning": MessageLookupByLibrary.simpleMessage(
@ -1142,7 +1179,7 @@ class MessageLookup extends MessageLookupByLibrary {
"renameFile": MessageLookupByLibrary.simpleMessage("Datei umbenennen"),
"renewSubscription":
MessageLookupByLibrary.simpleMessage("Abonnement erneuern"),
"renewsOn": m43,
"renewsOn": m45,
"reportABug": MessageLookupByLibrary.simpleMessage("Fehler melden"),
"reportBug": MessageLookupByLibrary.simpleMessage("Fehler melden"),
"resendEmail":
@ -1205,7 +1242,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Gruppiere Fotos, die innerhalb des Radius eines bestimmten Fotos aufgenommen wurden"),
"searchPeopleEmptySection": MessageLookupByLibrary.simpleMessage(
"Laden Sie Personen ein, damit Sie geteilte Fotos hier einsehen können"),
"searchResultCount": m44,
"searchResultCount": m46,
"security": MessageLookupByLibrary.simpleMessage("Sicherheit"),
"selectALocation":
MessageLookupByLibrary.simpleMessage("Standort auswählen"),
@ -1232,8 +1269,8 @@ class MessageLookup extends MessageLookupByLibrary {
"selectedItemsWillBeDeletedFromAllAlbumsAndMoved":
MessageLookupByLibrary.simpleMessage(
"Ausgewählte Elemente werden aus allen Alben gelöscht und in den Papierkorb verschoben."),
"selectedPhotos": m45,
"selectedPhotosWithYours": m46,
"selectedPhotos": m47,
"selectedPhotosWithYours": m48,
"send": MessageLookupByLibrary.simpleMessage("Absenden"),
"sendEmail": MessageLookupByLibrary.simpleMessage("E-Mail senden"),
"sendInvite": MessageLookupByLibrary.simpleMessage("Einladung senden"),
@ -1256,16 +1293,16 @@ class MessageLookup extends MessageLookupByLibrary {
"shareAnAlbumNow":
MessageLookupByLibrary.simpleMessage("Teile jetzt ein Album"),
"shareLink": MessageLookupByLibrary.simpleMessage("Link teilen"),
"shareMyVerificationID": m47,
"shareMyVerificationID": m49,
"shareOnlyWithThePeopleYouWant": MessageLookupByLibrary.simpleMessage(
"Teile mit ausgewählten Personen"),
"shareTextConfirmOthersVerificationID": m48,
"shareTextConfirmOthersVerificationID": m50,
"shareTextRecommendUsingEnte": MessageLookupByLibrary.simpleMessage(
"Lade ente herunter, damit wir einfach Fotos und Videos in höchster Qualität teilen können\n\nhttps://ente.io"),
"shareTextReferralCode": m49,
"shareTextReferralCode": m51,
"shareWithNonenteUsers": MessageLookupByLibrary.simpleMessage(
"Mit Nicht-Ente-Benutzern teilen"),
"shareWithPeopleSectionTitle": m50,
"shareWithPeopleSectionTitle": m52,
"shareYourFirstAlbum":
MessageLookupByLibrary.simpleMessage("Teile dein erstes Album"),
"sharedAlbumSectionDescription": MessageLookupByLibrary.simpleMessage(
@ -1276,7 +1313,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Neue geteilte Fotos"),
"sharedPhotoNotificationsExplanation": MessageLookupByLibrary.simpleMessage(
"Erhalte Benachrichtigungen, wenn jemand ein Foto zu einem gemeinsam genutzten Album hinzufügt, dem du angehörst"),
"sharedWith": m51,
"sharedWith": m53,
"sharedWithMe": MessageLookupByLibrary.simpleMessage("Mit mir geteilt"),
"sharedWithYou":
MessageLookupByLibrary.simpleMessage("Mit dir geteilt"),
@ -1291,11 +1328,11 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Andere Geräte abmelden"),
"signUpTerms": MessageLookupByLibrary.simpleMessage(
"Ich stimme den <u-terms>Nutzungsbedingungen</u-terms> und der <u-policy>Datenschutzerklärung</u-policy> zu"),
"singleFileDeleteFromDevice": m52,
"singleFileDeleteFromDevice": m54,
"singleFileDeleteHighlight": MessageLookupByLibrary.simpleMessage(
"Es wird aus allen Alben gelöscht."),
"singleFileInBothLocalAndRemote": m53,
"singleFileInRemoteOnly": m54,
"singleFileInBothLocalAndRemote": m55,
"singleFileInRemoteOnly": m56,
"skip": MessageLookupByLibrary.simpleMessage("Überspringen"),
"social": MessageLookupByLibrary.simpleMessage("Social Media"),
"someItemsAreInBothEnteAndYourDevice":
@ -1333,16 +1370,17 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("✨ Abgeschlossen"),
"startBackup":
MessageLookupByLibrary.simpleMessage("Sicherung starten"),
"status": MessageLookupByLibrary.simpleMessage("Status"),
"storage": MessageLookupByLibrary.simpleMessage("Speicherplatz"),
"storageBreakupFamily": MessageLookupByLibrary.simpleMessage("Familie"),
"storageBreakupYou": MessageLookupByLibrary.simpleMessage("Sie"),
"storageInGB": m55,
"storageInGB": m57,
"storageLimitExceeded": MessageLookupByLibrary.simpleMessage(
"Speichergrenze überschritten"),
"storageUsageInfo": m56,
"storageUsageInfo": m58,
"strongStrength": MessageLookupByLibrary.simpleMessage("Stark"),
"subAlreadyLinkedErrMessage": m57,
"subWillBeCancelledOn": m58,
"subAlreadyLinkedErrMessage": m59,
"subWillBeCancelledOn": m60,
"subscribe": MessageLookupByLibrary.simpleMessage("Abonnieren"),
"subscribeToEnableSharing": MessageLookupByLibrary.simpleMessage(
"Sieht aus, als sei dein Abonnement abgelaufen. Bitte abonniere, um das Teilen zu aktivieren."),
@ -1359,7 +1397,7 @@ class MessageLookup extends MessageLookupByLibrary {
"suggestFeatures":
MessageLookupByLibrary.simpleMessage("Verbesserung vorschlagen"),
"support": MessageLookupByLibrary.simpleMessage("Support"),
"syncProgress": m59,
"syncProgress": m61,
"syncStopped":
MessageLookupByLibrary.simpleMessage("Synchronisierung angehalten"),
"syncing": MessageLookupByLibrary.simpleMessage("Synchronisiere …"),
@ -1388,7 +1426,7 @@ class MessageLookup extends MessageLookupByLibrary {
"theseItemsWillBeDeletedFromYourDevice":
MessageLookupByLibrary.simpleMessage(
"Diese Elemente werden von deinem Gerät gelöscht."),
"theyAlsoGetXGb": m60,
"theyAlsoGetXGb": m62,
"theyWillBeDeletedFromAllAlbums": MessageLookupByLibrary.simpleMessage(
"Sie werden aus allen Alben gelöscht."),
"thisActionCannotBeUndone": MessageLookupByLibrary.simpleMessage(
@ -1404,7 +1442,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Diese E-Mail-Adresse wird bereits verwendet"),
"thisImageHasNoExifData": MessageLookupByLibrary.simpleMessage(
"Dieses Bild hat keine Exif-Daten"),
"thisIsPersonVerificationId": m61,
"thisIsPersonVerificationId": m63,
"thisIsYourVerificationId": MessageLookupByLibrary.simpleMessage(
"Dies ist deine Verifizierungs-ID"),
"thisWillLogYouOutOfTheFollowingDevice":
@ -1421,7 +1459,7 @@ class MessageLookup extends MessageLookupByLibrary {
"total": MessageLookupByLibrary.simpleMessage("Gesamt"),
"totalSize": MessageLookupByLibrary.simpleMessage("Gesamtgröße"),
"trash": MessageLookupByLibrary.simpleMessage("Papierkorb"),
"trashDaysLeft": m62,
"trashDaysLeft": m64,
"tryAgain": MessageLookupByLibrary.simpleMessage("Erneut versuchen"),
"turnOnBackupForAutoUpload": MessageLookupByLibrary.simpleMessage(
"Aktiviere die Sicherung, um automatisch neu hinzugefügte Dateien dieses Ordners auf ente hochzuladen."),
@ -1476,7 +1514,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Ausgewähltes Foto verwenden"),
"usedSpace":
MessageLookupByLibrary.simpleMessage("Belegter Speicherplatz"),
"validTill": m63,
"validTill": m65,
"verificationFailedPleaseTryAgain":
MessageLookupByLibrary.simpleMessage(
"Verifizierung fehlgeschlagen, bitte versuchen Sie es erneut"),
@ -1485,8 +1523,10 @@ class MessageLookup extends MessageLookupByLibrary {
"verify": MessageLookupByLibrary.simpleMessage("Überprüfen"),
"verifyEmail":
MessageLookupByLibrary.simpleMessage("E-Mail-Adresse verifizieren"),
"verifyEmailID": m64,
"verifyEmailID": m66,
"verifyIDLabel": MessageLookupByLibrary.simpleMessage("Überprüfen"),
"verifyPasskey":
MessageLookupByLibrary.simpleMessage("Passkey verifizieren"),
"verifyPassword":
MessageLookupByLibrary.simpleMessage("Passwort überprüfen"),
"verifying": MessageLookupByLibrary.simpleMessage("Verifiziere …"),
@ -1507,17 +1547,21 @@ class MessageLookup extends MessageLookupByLibrary {
"viewer": MessageLookupByLibrary.simpleMessage("Zuschauer"),
"visitWebToManage": MessageLookupByLibrary.simpleMessage(
"Bitte rufen Sie \"web.ente.io\" auf um ihr Abo zu verwalten"),
"waitingForVerification":
MessageLookupByLibrary.simpleMessage("Warte auf Bestätigung..."),
"waitingForWifi":
MessageLookupByLibrary.simpleMessage("Warte auf WLAN..."),
"weAreOpenSource": MessageLookupByLibrary.simpleMessage(
"Unser Quellcode ist offen einsehbar!"),
"weDontSupportEditingPhotosAndAlbumsThatYouDont":
MessageLookupByLibrary.simpleMessage(
"Wir unterstützen keine Bearbeitung von Fotos und Alben, die du noch nicht besitzt"),
"weHaveSendEmailTo": m65,
"weHaveSendEmailTo": m67,
"weakStrength": MessageLookupByLibrary.simpleMessage("Schwach"),
"welcomeBack":
MessageLookupByLibrary.simpleMessage("Willkommen zurück!"),
"yearly": MessageLookupByLibrary.simpleMessage("Jährlich"),
"yearsAgo": m66,
"yearsAgo": m68,
"yes": MessageLookupByLibrary.simpleMessage("Ja"),
"yesCancel": MessageLookupByLibrary.simpleMessage("Ja, kündigen"),
"yesConvertToViewer": MessageLookupByLibrary.simpleMessage(
@ -1547,7 +1591,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Du kannst nicht mit dir selbst teilen"),
"youDontHaveAnyArchivedItems": MessageLookupByLibrary.simpleMessage(
"Du hast keine archivierten Elemente."),
"youHaveSuccessfullyFreedUp": m67,
"youHaveSuccessfullyFreedUp": m69,
"yourAccountHasBeenDeleted": MessageLookupByLibrary.simpleMessage(
"Dein Benutzerkonto wurde gelöscht"),
"yourMap": MessageLookupByLibrary.simpleMessage("Deine Karte"),

View file

@ -21,191 +21,197 @@ class MessageLookup extends MessageLookupByLibrary {
String get localeName => 'en';
static String m0(count) =>
"${Intl.plural(count, zero: 'Add collaborator', one: 'Add collaborator', other: 'Add collaborators')}";
static String m2(count) =>
"${Intl.plural(count, one: 'Add item', other: 'Add items')}";
static String m1(storageAmount, endDate) =>
static String m3(storageAmount, endDate) =>
"Your ${storageAmount} add-on is valid till ${endDate}";
static String m2(emailOrName) => "Added by ${emailOrName}";
static String m1(count) =>
"${Intl.plural(count, zero: 'Add viewer', one: 'Add viewer', other: 'Add viewers')}";
static String m3(albumName) => "Added successfully to ${albumName}";
static String m4(emailOrName) => "Added by ${emailOrName}";
static String m4(count) =>
static String m5(albumName) => "Added successfully to ${albumName}";
static String m6(count) =>
"${Intl.plural(count, zero: 'No Participants', one: '1 Participant', other: '${count} Participants')}";
static String m5(versionValue) => "Version: ${versionValue}";
static String m7(versionValue) => "Version: ${versionValue}";
static String m6(paymentProvider) =>
static String m8(paymentProvider) =>
"Please cancel your existing subscription from ${paymentProvider} first";
static String m7(user) =>
static String m9(user) =>
"${user} will not be able to add more photos to this album\n\nThey will still be able to remove existing photos added by them";
static String m8(isFamilyMember, storageAmountInGb) =>
static String m10(isFamilyMember, storageAmountInGb) =>
"${Intl.select(isFamilyMember, {
'true': 'Your family has claimed ${storageAmountInGb} GB so far',
'false': 'You have claimed ${storageAmountInGb} GB so far',
'other': 'You have claimed ${storageAmountInGb} GB so far!',
})}";
static String m9(albumName) => "Collaborative link created for ${albumName}";
static String m11(albumName) => "Collaborative link created for ${albumName}";
static String m10(familyAdminEmail) =>
static String m12(familyAdminEmail) =>
"Please contact <green>${familyAdminEmail}</green> to manage your subscription";
static String m11(provider) =>
static String m13(provider) =>
"Please contact us at support@ente.io to manage your ${provider} subscription.";
static String m12(count) =>
static String m14(count) =>
"${Intl.plural(count, one: 'Delete ${count} item', other: 'Delete ${count} items')}";
static String m13(currentlyDeleting, totalCount) =>
static String m15(currentlyDeleting, totalCount) =>
"Deleting ${currentlyDeleting} / ${totalCount}";
static String m14(albumName) =>
static String m16(albumName) =>
"This will remove the public link for accessing \"${albumName}\".";
static String m15(supportEmail) =>
static String m17(supportEmail) =>
"Please drop an email to ${supportEmail} from your registered email address";
static String m16(count, storageSaved) =>
static String m18(count, storageSaved) =>
"You have cleaned up ${Intl.plural(count, one: '${count} duplicate file', other: '${count} duplicate files')}, saving (${storageSaved}!)";
static String m17(count, formattedSize) =>
static String m19(count, formattedSize) =>
"${count} files, ${formattedSize} each";
static String m18(newEmail) => "Email changed to ${newEmail}";
static String m20(newEmail) => "Email changed to ${newEmail}";
static String m19(email) =>
static String m21(email) =>
"${email} does not have an ente account.\n\nSend them an invite to share photos.";
static String m20(count, formattedNumber) =>
static String m22(count, formattedNumber) =>
"${Intl.plural(count, one: '1 file', other: '${formattedNumber} files')} on this device have been backed up safely";
static String m21(count, formattedNumber) =>
static String m23(count, formattedNumber) =>
"${Intl.plural(count, one: '1 file', other: '${formattedNumber} files')} in this album has been backed up safely";
static String m22(storageAmountInGB) =>
static String m24(storageAmountInGB) =>
"${storageAmountInGB} GB each time someone signs up for a paid plan and applies your code";
static String m23(freeAmount, storageUnit) =>
static String m25(freeAmount, storageUnit) =>
"${freeAmount} ${storageUnit} free";
static String m24(endDate) => "Free trial valid till ${endDate}";
static String m26(endDate) => "Free trial valid till ${endDate}";
static String m25(count) =>
static String m27(count) =>
"You can still access ${Intl.plural(count, one: 'it', other: 'them')} on ente as long as you have an active subscription";
static String m26(sizeInMBorGB) => "Free up ${sizeInMBorGB}";
static String m28(sizeInMBorGB) => "Free up ${sizeInMBorGB}";
static String m27(count, formattedSize) =>
static String m29(count, formattedSize) =>
"${Intl.plural(count, one: 'It can be deleted from the device to free up ${formattedSize}', other: 'They can be deleted from the device to free up ${formattedSize}')}";
static String m28(currentlyProcessing, totalCount) =>
static String m30(currentlyProcessing, totalCount) =>
"Processing ${currentlyProcessing} / ${totalCount}";
static String m29(count) =>
static String m31(count) =>
"${Intl.plural(count, one: '${count} item', other: '${count} items')}";
static String m30(expiryTime) => "Link will expire on ${expiryTime}";
static String m32(expiryTime) => "Link will expire on ${expiryTime}";
static String m31(count, formattedCount) =>
static String m33(count, formattedCount) =>
"${Intl.plural(count, zero: 'no memories', one: '${formattedCount} memory', other: '${formattedCount} memories')}";
static String m32(count) =>
static String m34(count) =>
"${Intl.plural(count, one: 'Move item', other: 'Move items')}";
static String m33(albumName) => "Moved successfully to ${albumName}";
static String m35(albumName) => "Moved successfully to ${albumName}";
static String m34(passwordStrengthValue) =>
static String m36(passwordStrengthValue) =>
"Password strength: ${passwordStrengthValue}";
static String m35(providerName) =>
static String m37(providerName) =>
"Please talk to ${providerName} support if you were charged";
static String m36(reason) =>
static String m38(reason) =>
"Unfortunately your payment failed due to ${reason}";
static String m37(endDate) =>
static String m39(endDate) =>
"Free trial valid till ${endDate}.\nYou can choose a paid plan afterwards.";
static String m38(toEmail) => "Please email us at ${toEmail}";
static String m40(toEmail) => "Please email us at ${toEmail}";
static String m39(toEmail) => "Please send the logs to \n${toEmail}";
static String m41(toEmail) => "Please send the logs to \n${toEmail}";
static String m40(storeName) => "Rate us on ${storeName}";
static String m42(storeName) => "Rate us on ${storeName}";
static String m41(storageInGB) =>
static String m43(storageInGB) =>
"3. Both of you get ${storageInGB} GB* free";
static String m42(userEmail) =>
static String m44(userEmail) =>
"${userEmail} will be removed from this shared album\n\nAny photos added by them will also be removed from the album";
static String m43(endDate) => "Subscription renews on ${endDate}";
static String m45(endDate) => "Subscription renews on ${endDate}";
static String m44(count) =>
static String m46(count) =>
"${Intl.plural(count, one: '${count} result found', other: '${count} results found')}";
static String m45(count) => "${count} selected";
static String m47(count) => "${count} selected";
static String m46(count, yourCount) =>
static String m48(count, yourCount) =>
"${count} selected (${yourCount} yours)";
static String m47(verificationID) =>
static String m49(verificationID) =>
"Here\'s my verification ID: ${verificationID} for ente.io.";
static String m48(verificationID) =>
static String m50(verificationID) =>
"Hey, can you confirm that this is your ente.io verification ID: ${verificationID}";
static String m49(referralCode, referralStorageInGB) =>
static String m51(referralCode, referralStorageInGB) =>
"ente referral code: ${referralCode} \n\nApply it in Settings → General → Referrals to get ${referralStorageInGB} GB free after you signup for a paid plan\n\nhttps://ente.io";
static String m50(numberOfPeople) =>
static String m52(numberOfPeople) =>
"${Intl.plural(numberOfPeople, zero: 'Share with specific people', one: 'Shared with 1 person', other: 'Shared with ${numberOfPeople} people')}";
static String m51(emailIDs) => "Shared with ${emailIDs}";
static String m53(emailIDs) => "Shared with ${emailIDs}";
static String m52(fileType) =>
static String m54(fileType) =>
"This ${fileType} will be deleted from your device.";
static String m53(fileType) =>
static String m55(fileType) =>
"This ${fileType} is in both ente and your device.";
static String m54(fileType) => "This ${fileType} will be deleted from ente.";
static String m56(fileType) => "This ${fileType} will be deleted from ente.";
static String m55(storageAmountInGB) => "${storageAmountInGB} GB";
static String m57(storageAmountInGB) => "${storageAmountInGB} GB";
static String m56(
static String m58(
usedAmount, usedStorageUnit, totalAmount, totalStorageUnit) =>
"${usedAmount} ${usedStorageUnit} of ${totalAmount} ${totalStorageUnit} used";
static String m57(id) =>
static String m59(id) =>
"Your ${id} is already linked to another ente account.\nIf you would like to use your ${id} with this account, please contact our support\'\'";
static String m58(endDate) =>
static String m60(endDate) =>
"Your subscription will be cancelled on ${endDate}";
static String m59(completed, total) =>
static String m61(completed, total) =>
"${completed}/${total} memories preserved";
static String m60(storageAmountInGB) =>
static String m62(storageAmountInGB) =>
"They also get ${storageAmountInGB} GB";
static String m61(email) => "This is ${email}\'s Verification ID";
static String m63(email) => "This is ${email}\'s Verification ID";
static String m62(count) =>
static String m64(count) =>
"${Intl.plural(count, zero: '', one: '1 day', other: '${count} days')}";
static String m63(endDate) => "Valid till ${endDate}";
static String m65(endDate) => "Valid till ${endDate}";
static String m64(email) => "Verify ${email}";
static String m66(email) => "Verify ${email}";
static String m65(email) => "We have sent a mail to <green>${email}</green>";
static String m67(email) => "We have sent a mail to <green>${email}</green>";
static String m66(count) =>
static String m68(count) =>
"${Intl.plural(count, one: '${count} year ago', other: '${count} years ago')}";
static String m67(storageSaved) =>
static String m69(storageSaved) =>
"You have successfully freed up ${storageSaved}!";
final messages = _notInlinedMessages(_notInlinedMessages);
@ -223,16 +229,17 @@ class MessageLookup extends MessageLookupByLibrary {
"addANewEmail": MessageLookupByLibrary.simpleMessage("Add a new email"),
"addCollaborator":
MessageLookupByLibrary.simpleMessage("Add collaborator"),
"addCollaborators": m0,
"addFromDevice":
MessageLookupByLibrary.simpleMessage("Add from device"),
"addItem": m0,
"addItem": m2,
"addLocation": MessageLookupByLibrary.simpleMessage("Add location"),
"addLocationButton": MessageLookupByLibrary.simpleMessage("Add"),
"addMore": MessageLookupByLibrary.simpleMessage("Add more"),
"addNew": MessageLookupByLibrary.simpleMessage("Add new"),
"addOnPageSubtitle":
MessageLookupByLibrary.simpleMessage("Details of add-ons"),
"addOnValidTill": m1,
"addOnValidTill": m3,
"addOns": MessageLookupByLibrary.simpleMessage("Add-ons"),
"addPhotos": MessageLookupByLibrary.simpleMessage("Add photos"),
"addSelected": MessageLookupByLibrary.simpleMessage("Add selected"),
@ -241,11 +248,12 @@ class MessageLookup extends MessageLookupByLibrary {
"addToHiddenAlbum":
MessageLookupByLibrary.simpleMessage("Add to hidden album"),
"addViewer": MessageLookupByLibrary.simpleMessage("Add viewer"),
"addViewers": m1,
"addYourPhotosNow":
MessageLookupByLibrary.simpleMessage("Add your photos now"),
"addedAs": MessageLookupByLibrary.simpleMessage("Added as"),
"addedBy": m2,
"addedSuccessfullyTo": m3,
"addedBy": m4,
"addedSuccessfullyTo": m5,
"addingToFavorites":
MessageLookupByLibrary.simpleMessage("Adding to favorites..."),
"advanced": MessageLookupByLibrary.simpleMessage("Advanced"),
@ -256,7 +264,7 @@ class MessageLookup extends MessageLookupByLibrary {
"after1Week": MessageLookupByLibrary.simpleMessage("After 1 week"),
"after1Year": MessageLookupByLibrary.simpleMessage("After 1 year"),
"albumOwner": MessageLookupByLibrary.simpleMessage("Owner"),
"albumParticipantsCount": m4,
"albumParticipantsCount": m6,
"albumTitle": MessageLookupByLibrary.simpleMessage("Album title"),
"albumUpdated": MessageLookupByLibrary.simpleMessage("Album updated"),
"albums": MessageLookupByLibrary.simpleMessage("Albums"),
@ -290,7 +298,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Android, iOS, Web, Desktop"),
"androidSignInTitle":
MessageLookupByLibrary.simpleMessage("Authentication required"),
"appVersion": m5,
"appVersion": m7,
"appleId": MessageLookupByLibrary.simpleMessage("Apple ID"),
"apply": MessageLookupByLibrary.simpleMessage("Apply"),
"applyCodeTitle": MessageLookupByLibrary.simpleMessage("Apply code"),
@ -374,10 +382,10 @@ class MessageLookup extends MessageLookupByLibrary {
"canOnlyRemoveFilesOwnedByYou": MessageLookupByLibrary.simpleMessage(
"Can only remove files owned by you"),
"cancel": MessageLookupByLibrary.simpleMessage("Cancel"),
"cancelOtherSubscription": m6,
"cancelOtherSubscription": m8,
"cancelSubscription":
MessageLookupByLibrary.simpleMessage("Cancel subscription"),
"cannotAddMorePhotosAfterBecomingViewer": m7,
"cannotAddMorePhotosAfterBecomingViewer": m9,
"cannotDeleteSharedFiles":
MessageLookupByLibrary.simpleMessage("Cannot delete shared files"),
"castInstruction": MessageLookupByLibrary.simpleMessage(
@ -401,7 +409,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Claim free storage"),
"claimMore": MessageLookupByLibrary.simpleMessage("Claim more!"),
"claimed": MessageLookupByLibrary.simpleMessage("Claimed"),
"claimedStorageSoFar": m8,
"claimedStorageSoFar": m10,
"cleanUncategorized":
MessageLookupByLibrary.simpleMessage("Clean Uncategorized"),
"cleanUncategorizedDescription": MessageLookupByLibrary.simpleMessage(
@ -426,7 +434,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Create a link to allow people to add and view photos in your shared album without needing an ente app or account. Great for collecting event photos."),
"collaborativeLink":
MessageLookupByLibrary.simpleMessage("Collaborative link"),
"collaborativeLinkCreatedFor": m9,
"collaborativeLinkCreatedFor": m11,
"collaborator": MessageLookupByLibrary.simpleMessage("Collaborator"),
"collaboratorsCanAddPhotosAndVideosToTheSharedAlbum":
MessageLookupByLibrary.simpleMessage(
@ -453,10 +461,10 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Confirm recovery key"),
"confirmYourRecoveryKey":
MessageLookupByLibrary.simpleMessage("Confirm your recovery key"),
"contactFamilyAdmin": m10,
"contactFamilyAdmin": m12,
"contactSupport":
MessageLookupByLibrary.simpleMessage("Contact support"),
"contactToManageSubscription": m11,
"contactToManageSubscription": m13,
"contacts": MessageLookupByLibrary.simpleMessage("Contacts"),
"contents": MessageLookupByLibrary.simpleMessage("Contents"),
"continueLabel": MessageLookupByLibrary.simpleMessage("Continue"),
@ -531,11 +539,11 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Delete from device"),
"deleteFromEnte":
MessageLookupByLibrary.simpleMessage("Delete from ente"),
"deleteItemCount": m12,
"deleteItemCount": m14,
"deleteLocation":
MessageLookupByLibrary.simpleMessage("Delete location"),
"deletePhotos": MessageLookupByLibrary.simpleMessage("Delete photos"),
"deleteProgress": m13,
"deleteProgress": m15,
"deleteReason1": MessageLookupByLibrary.simpleMessage(
"Its missing a key feature that I need"),
"deleteReason2": MessageLookupByLibrary.simpleMessage(
@ -572,7 +580,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Viewers can still take screenshots or save a copy of your photos using external tools"),
"disableDownloadWarningTitle":
MessageLookupByLibrary.simpleMessage("Please note"),
"disableLinkMessage": m14,
"disableLinkMessage": m16,
"disableTwofactor":
MessageLookupByLibrary.simpleMessage("Disable two-factor"),
"disablingTwofactorAuthentication":
@ -593,9 +601,9 @@ class MessageLookup extends MessageLookupByLibrary {
"downloadFailed":
MessageLookupByLibrary.simpleMessage("Download failed"),
"downloading": MessageLookupByLibrary.simpleMessage("Downloading..."),
"dropSupportEmail": m15,
"duplicateFileCountWithStorageSaved": m16,
"duplicateItemsGroup": m17,
"dropSupportEmail": m17,
"duplicateFileCountWithStorageSaved": m18,
"duplicateItemsGroup": m19,
"edit": MessageLookupByLibrary.simpleMessage("Edit"),
"editLocation": MessageLookupByLibrary.simpleMessage("Edit location"),
"editLocationTagTitle":
@ -606,8 +614,8 @@ class MessageLookup extends MessageLookupByLibrary {
"Edits to location will only be seen within Ente"),
"eligible": MessageLookupByLibrary.simpleMessage("eligible"),
"email": MessageLookupByLibrary.simpleMessage("Email"),
"emailChangedTo": m18,
"emailNoEnteAccount": m19,
"emailChangedTo": m20,
"emailNoEnteAccount": m21,
"emailVerificationToggle":
MessageLookupByLibrary.simpleMessage("Email verification"),
"emailYourLogs":
@ -702,8 +710,8 @@ class MessageLookup extends MessageLookupByLibrary {
"fileTypes": MessageLookupByLibrary.simpleMessage("File types"),
"fileTypesAndNames":
MessageLookupByLibrary.simpleMessage("File types and names"),
"filesBackedUpFromDevice": m20,
"filesBackedUpInAlbum": m21,
"filesBackedUpFromDevice": m22,
"filesBackedUpInAlbum": m23,
"filesDeleted": MessageLookupByLibrary.simpleMessage("Files deleted"),
"flip": MessageLookupByLibrary.simpleMessage("Flip"),
"forYourMemories":
@ -712,24 +720,24 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Forgot password"),
"freeStorageClaimed":
MessageLookupByLibrary.simpleMessage("Free storage claimed"),
"freeStorageOnReferralSuccess": m22,
"freeStorageSpace": m23,
"freeStorageOnReferralSuccess": m24,
"freeStorageSpace": m25,
"freeStorageUsable":
MessageLookupByLibrary.simpleMessage("Free storage usable"),
"freeTrial": MessageLookupByLibrary.simpleMessage("Free trial"),
"freeTrialValidTill": m24,
"freeUpAccessPostDelete": m25,
"freeUpAmount": m26,
"freeTrialValidTill": m26,
"freeUpAccessPostDelete": m27,
"freeUpAmount": m28,
"freeUpDeviceSpace":
MessageLookupByLibrary.simpleMessage("Free up device space"),
"freeUpSpace": MessageLookupByLibrary.simpleMessage("Free up space"),
"freeUpSpaceSaving": m27,
"freeUpSpaceSaving": m29,
"galleryMemoryLimitInfo": MessageLookupByLibrary.simpleMessage(
"Up to 1000 memories shown in gallery"),
"general": MessageLookupByLibrary.simpleMessage("General"),
"generatingEncryptionKeys": MessageLookupByLibrary.simpleMessage(
"Generating encryption keys..."),
"genericProgress": m28,
"genericProgress": m30,
"goToSettings": MessageLookupByLibrary.simpleMessage("Go to settings"),
"googlePlayId": MessageLookupByLibrary.simpleMessage("Google Play ID"),
"grantFullAccessPrompt": MessageLookupByLibrary.simpleMessage(
@ -787,7 +795,7 @@ class MessageLookup extends MessageLookupByLibrary {
"itLooksLikeSomethingWentWrongPleaseRetryAfterSome":
MessageLookupByLibrary.simpleMessage(
"It looks like something went wrong. Please retry after some time. If the error persists, please contact our support team."),
"itemCount": m29,
"itemCount": m31,
"itemsShowTheNumberOfDaysRemainingBeforePermanentDeletion":
MessageLookupByLibrary.simpleMessage(
"Items show the number of days remaining before permanent deletion"),
@ -812,7 +820,7 @@ class MessageLookup extends MessageLookupByLibrary {
"linkDeviceLimit": MessageLookupByLibrary.simpleMessage("Device limit"),
"linkEnabled": MessageLookupByLibrary.simpleMessage("Enabled"),
"linkExpired": MessageLookupByLibrary.simpleMessage("Expired"),
"linkExpiresOn": m30,
"linkExpiresOn": m32,
"linkExpiry": MessageLookupByLibrary.simpleMessage("Link expiry"),
"linkHasExpired":
MessageLookupByLibrary.simpleMessage("Link has expired"),
@ -861,6 +869,9 @@ class MessageLookup extends MessageLookupByLibrary {
"logout": MessageLookupByLibrary.simpleMessage("Logout"),
"logsDialogBody": MessageLookupByLibrary.simpleMessage(
"This will send across logs to help us debug your issue. Please note that file names will be included to help track issues with specific files."),
"longPressAnEmailToVerifyEndToEndEncryption":
MessageLookupByLibrary.simpleMessage(
"Long press an email to verify end to end encryption."),
"longpressOnAnItemToViewInFullscreen":
MessageLookupByLibrary.simpleMessage(
"Long-press on an item to view in full-screen"),
@ -882,7 +893,7 @@ class MessageLookup extends MessageLookupByLibrary {
"maps": MessageLookupByLibrary.simpleMessage("Maps"),
"mastodon": MessageLookupByLibrary.simpleMessage("Mastodon"),
"matrix": MessageLookupByLibrary.simpleMessage("Matrix"),
"memoryCount": m31,
"memoryCount": m33,
"merchandise": MessageLookupByLibrary.simpleMessage("Merchandise"),
"mobileWebDesktop":
MessageLookupByLibrary.simpleMessage("Mobile, Web, Desktop"),
@ -892,11 +903,11 @@ class MessageLookup extends MessageLookupByLibrary {
"Modify your query, or try searching for"),
"moments": MessageLookupByLibrary.simpleMessage("Moments"),
"monthly": MessageLookupByLibrary.simpleMessage("Monthly"),
"moveItem": m32,
"moveItem": m34,
"moveToAlbum": MessageLookupByLibrary.simpleMessage("Move to album"),
"moveToHiddenAlbum":
MessageLookupByLibrary.simpleMessage("Move to hidden album"),
"movedSuccessfullyTo": m33,
"movedSuccessfullyTo": m35,
"movedToTrash": MessageLookupByLibrary.simpleMessage("Moved to trash"),
"movingFilesToAlbum":
MessageLookupByLibrary.simpleMessage("Moving files to album..."),
@ -965,14 +976,14 @@ class MessageLookup extends MessageLookupByLibrary {
"passwordChangedSuccessfully": MessageLookupByLibrary.simpleMessage(
"Password changed successfully"),
"passwordLock": MessageLookupByLibrary.simpleMessage("Password lock"),
"passwordStrength": m34,
"passwordStrength": m36,
"passwordWarning": MessageLookupByLibrary.simpleMessage(
"We don\'t store this password, so if you forget, <underline>we cannot decrypt your data</underline>"),
"paymentDetails":
MessageLookupByLibrary.simpleMessage("Payment details"),
"paymentFailed": MessageLookupByLibrary.simpleMessage("Payment failed"),
"paymentFailedTalkToProvider": m35,
"paymentFailedWithReason": m36,
"paymentFailedTalkToProvider": m37,
"paymentFailedWithReason": m38,
"pendingItems": MessageLookupByLibrary.simpleMessage("Pending items"),
"pendingSync": MessageLookupByLibrary.simpleMessage("Pending sync"),
"peopleUsingYourCode":
@ -996,7 +1007,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Pick center point"),
"pinAlbum": MessageLookupByLibrary.simpleMessage("Pin album"),
"playOnTv": MessageLookupByLibrary.simpleMessage("Play album on TV"),
"playStoreFreeTrialValidTill": m37,
"playStoreFreeTrialValidTill": m39,
"playstoreSubscription":
MessageLookupByLibrary.simpleMessage("PlayStore subscription"),
"pleaseCheckYourInternetConnectionAndTryAgain":
@ -1008,12 +1019,12 @@ class MessageLookup extends MessageLookupByLibrary {
"pleaseContactSupportIfTheProblemPersists":
MessageLookupByLibrary.simpleMessage(
"Please contact support if the problem persists"),
"pleaseEmailUsAt": m38,
"pleaseEmailUsAt": m40,
"pleaseGrantPermissions":
MessageLookupByLibrary.simpleMessage("Please grant permissions"),
"pleaseLoginAgain":
MessageLookupByLibrary.simpleMessage("Please login again"),
"pleaseSendTheLogsTo": m39,
"pleaseSendTheLogsTo": m41,
"pleaseTryAgain":
MessageLookupByLibrary.simpleMessage("Please try again"),
"pleaseVerifyTheCodeYouHaveEntered":
@ -1048,7 +1059,7 @@ class MessageLookup extends MessageLookupByLibrary {
"raiseTicket": MessageLookupByLibrary.simpleMessage("Raise ticket"),
"rateTheApp": MessageLookupByLibrary.simpleMessage("Rate the app"),
"rateUs": MessageLookupByLibrary.simpleMessage("Rate us"),
"rateUsOnStore": m40,
"rateUsOnStore": m42,
"recover": MessageLookupByLibrary.simpleMessage("Recover"),
"recoverAccount":
MessageLookupByLibrary.simpleMessage("Recover account"),
@ -1079,7 +1090,7 @@ class MessageLookup extends MessageLookupByLibrary {
"1. Give this code to your friends"),
"referralStep2": MessageLookupByLibrary.simpleMessage(
"2. They sign up for a paid plan"),
"referralStep3": m41,
"referralStep3": m43,
"referrals": MessageLookupByLibrary.simpleMessage("Referrals"),
"referralsAreCurrentlyPaused": MessageLookupByLibrary.simpleMessage(
"Referrals are currently paused"),
@ -1103,7 +1114,7 @@ class MessageLookup extends MessageLookupByLibrary {
"removeLink": MessageLookupByLibrary.simpleMessage("Remove link"),
"removeParticipant":
MessageLookupByLibrary.simpleMessage("Remove participant"),
"removeParticipantBody": m42,
"removeParticipantBody": m44,
"removePublicLink":
MessageLookupByLibrary.simpleMessage("Remove public link"),
"removeShareItemsWarning": MessageLookupByLibrary.simpleMessage(
@ -1117,7 +1128,7 @@ class MessageLookup extends MessageLookupByLibrary {
"renameFile": MessageLookupByLibrary.simpleMessage("Rename file"),
"renewSubscription":
MessageLookupByLibrary.simpleMessage("Renew subscription"),
"renewsOn": m43,
"renewsOn": m45,
"reportABug": MessageLookupByLibrary.simpleMessage("Report a bug"),
"reportBug": MessageLookupByLibrary.simpleMessage("Report bug"),
"resendEmail": MessageLookupByLibrary.simpleMessage("Resend email"),
@ -1177,7 +1188,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Group photos that are taken within some radius of a photo"),
"searchPeopleEmptySection": MessageLookupByLibrary.simpleMessage(
"Invite people, and you\'ll see all photos shared by them here"),
"searchResultCount": m44,
"searchResultCount": m46,
"security": MessageLookupByLibrary.simpleMessage("Security"),
"selectALocation":
MessageLookupByLibrary.simpleMessage("Select a location"),
@ -1204,8 +1215,8 @@ class MessageLookup extends MessageLookupByLibrary {
"selectedItemsWillBeDeletedFromAllAlbumsAndMoved":
MessageLookupByLibrary.simpleMessage(
"Selected items will be deleted from all albums and moved to trash."),
"selectedPhotos": m45,
"selectedPhotosWithYours": m46,
"selectedPhotos": m47,
"selectedPhotosWithYours": m48,
"send": MessageLookupByLibrary.simpleMessage("Send"),
"sendEmail": MessageLookupByLibrary.simpleMessage("Send email"),
"sendInvite": MessageLookupByLibrary.simpleMessage("Send invite"),
@ -1227,16 +1238,16 @@ class MessageLookup extends MessageLookupByLibrary {
"shareAnAlbumNow":
MessageLookupByLibrary.simpleMessage("Share an album now"),
"shareLink": MessageLookupByLibrary.simpleMessage("Share link"),
"shareMyVerificationID": m47,
"shareMyVerificationID": m49,
"shareOnlyWithThePeopleYouWant": MessageLookupByLibrary.simpleMessage(
"Share only with the people you want"),
"shareTextConfirmOthersVerificationID": m48,
"shareTextConfirmOthersVerificationID": m50,
"shareTextRecommendUsingEnte": MessageLookupByLibrary.simpleMessage(
"Download ente so we can easily share original quality photos and videos\n\nhttps://ente.io"),
"shareTextReferralCode": m49,
"shareTextReferralCode": m51,
"shareWithNonenteUsers":
MessageLookupByLibrary.simpleMessage("Share with non-ente users"),
"shareWithPeopleSectionTitle": m50,
"shareWithPeopleSectionTitle": m52,
"shareYourFirstAlbum":
MessageLookupByLibrary.simpleMessage("Share your first album"),
"sharedAlbumSectionDescription": MessageLookupByLibrary.simpleMessage(
@ -1247,7 +1258,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("New shared photos"),
"sharedPhotoNotificationsExplanation": MessageLookupByLibrary.simpleMessage(
"Receive notifications when someone adds a photo to a shared album that you\'re a part of"),
"sharedWith": m51,
"sharedWith": m53,
"sharedWithMe": MessageLookupByLibrary.simpleMessage("Shared with me"),
"sharedWithYou":
MessageLookupByLibrary.simpleMessage("Shared with you"),
@ -1261,11 +1272,11 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Sign out other devices"),
"signUpTerms": MessageLookupByLibrary.simpleMessage(
"I agree to the <u-terms>terms of service</u-terms> and <u-policy>privacy policy</u-policy>"),
"singleFileDeleteFromDevice": m52,
"singleFileDeleteFromDevice": m54,
"singleFileDeleteHighlight": MessageLookupByLibrary.simpleMessage(
"It will be deleted from all albums."),
"singleFileInBothLocalAndRemote": m53,
"singleFileInRemoteOnly": m54,
"singleFileInBothLocalAndRemote": m55,
"singleFileInRemoteOnly": m56,
"skip": MessageLookupByLibrary.simpleMessage("Skip"),
"social": MessageLookupByLibrary.simpleMessage("Social"),
"someItemsAreInBothEnteAndYourDevice":
@ -1303,13 +1314,13 @@ class MessageLookup extends MessageLookupByLibrary {
"storage": MessageLookupByLibrary.simpleMessage("Storage"),
"storageBreakupFamily": MessageLookupByLibrary.simpleMessage("Family"),
"storageBreakupYou": MessageLookupByLibrary.simpleMessage("You"),
"storageInGB": m55,
"storageInGB": m57,
"storageLimitExceeded":
MessageLookupByLibrary.simpleMessage("Storage limit exceeded"),
"storageUsageInfo": m56,
"storageUsageInfo": m58,
"strongStrength": MessageLookupByLibrary.simpleMessage("Strong"),
"subAlreadyLinkedErrMessage": m57,
"subWillBeCancelledOn": m58,
"subAlreadyLinkedErrMessage": m59,
"subWillBeCancelledOn": m60,
"subscribe": MessageLookupByLibrary.simpleMessage("Subscribe"),
"subscribeToEnableSharing": MessageLookupByLibrary.simpleMessage(
"Looks like your subscription has expired. Please subscribe to enable sharing."),
@ -1326,7 +1337,7 @@ class MessageLookup extends MessageLookupByLibrary {
"suggestFeatures":
MessageLookupByLibrary.simpleMessage("Suggest features"),
"support": MessageLookupByLibrary.simpleMessage("Support"),
"syncProgress": m59,
"syncProgress": m61,
"syncStopped": MessageLookupByLibrary.simpleMessage("Sync stopped"),
"syncing": MessageLookupByLibrary.simpleMessage("Syncing..."),
"systemTheme": MessageLookupByLibrary.simpleMessage("System"),
@ -1352,7 +1363,7 @@ class MessageLookup extends MessageLookupByLibrary {
"theseItemsWillBeDeletedFromYourDevice":
MessageLookupByLibrary.simpleMessage(
"These items will be deleted from your device."),
"theyAlsoGetXGb": m60,
"theyAlsoGetXGb": m62,
"theyWillBeDeletedFromAllAlbums": MessageLookupByLibrary.simpleMessage(
"They will be deleted from all albums."),
"thisActionCannotBeUndone": MessageLookupByLibrary.simpleMessage(
@ -1368,7 +1379,7 @@ class MessageLookup extends MessageLookupByLibrary {
"This email is already in use"),
"thisImageHasNoExifData":
MessageLookupByLibrary.simpleMessage("This image has no exif data"),
"thisIsPersonVerificationId": m61,
"thisIsPersonVerificationId": m63,
"thisIsYourVerificationId": MessageLookupByLibrary.simpleMessage(
"This is your Verification ID"),
"thisWillLogYouOutOfTheFollowingDevice":
@ -1384,7 +1395,7 @@ class MessageLookup extends MessageLookupByLibrary {
"total": MessageLookupByLibrary.simpleMessage("total"),
"totalSize": MessageLookupByLibrary.simpleMessage("Total size"),
"trash": MessageLookupByLibrary.simpleMessage("Trash"),
"trashDaysLeft": m62,
"trashDaysLeft": m64,
"tryAgain": MessageLookupByLibrary.simpleMessage("Try again"),
"turnOnBackupForAutoUpload": MessageLookupByLibrary.simpleMessage(
"Turn on backup to automatically upload files added to this device folder to ente."),
@ -1436,7 +1447,7 @@ class MessageLookup extends MessageLookupByLibrary {
"useSelectedPhoto":
MessageLookupByLibrary.simpleMessage("Use selected photo"),
"usedSpace": MessageLookupByLibrary.simpleMessage("Used space"),
"validTill": m63,
"validTill": m65,
"verificationFailedPleaseTryAgain":
MessageLookupByLibrary.simpleMessage(
"Verification failed, please try again"),
@ -1444,7 +1455,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Verification ID"),
"verify": MessageLookupByLibrary.simpleMessage("Verify"),
"verifyEmail": MessageLookupByLibrary.simpleMessage("Verify email"),
"verifyEmailID": m64,
"verifyEmailID": m66,
"verifyIDLabel": MessageLookupByLibrary.simpleMessage("Verify"),
"verifyPasskey": MessageLookupByLibrary.simpleMessage("Verify passkey"),
"verifyPassword":
@ -1475,11 +1486,11 @@ class MessageLookup extends MessageLookupByLibrary {
"weDontSupportEditingPhotosAndAlbumsThatYouDont":
MessageLookupByLibrary.simpleMessage(
"We don\'t support editing photos and albums that you don\'t own yet"),
"weHaveSendEmailTo": m65,
"weHaveSendEmailTo": m67,
"weakStrength": MessageLookupByLibrary.simpleMessage("Weak"),
"welcomeBack": MessageLookupByLibrary.simpleMessage("Welcome back!"),
"yearly": MessageLookupByLibrary.simpleMessage("Yearly"),
"yearsAgo": m66,
"yearsAgo": m68,
"yes": MessageLookupByLibrary.simpleMessage("Yes"),
"yesCancel": MessageLookupByLibrary.simpleMessage("Yes, cancel"),
"yesConvertToViewer":
@ -1509,7 +1520,7 @@ class MessageLookup extends MessageLookupByLibrary {
"You cannot share with yourself"),
"youDontHaveAnyArchivedItems": MessageLookupByLibrary.simpleMessage(
"You don\'t have any archived items."),
"youHaveSuccessfullyFreedUp": m67,
"youHaveSuccessfullyFreedUp": m69,
"yourAccountHasBeenDeleted": MessageLookupByLibrary.simpleMessage(
"Your account has been deleted"),
"yourMap": MessageLookupByLibrary.simpleMessage("Your map"),

View file

@ -21,24 +21,30 @@ class MessageLookup extends MessageLookupByLibrary {
String get localeName => 'es';
static String m0(count) =>
"${Intl.plural(count, zero: 'Add collaborator', one: 'Add collaborator', other: 'Add collaborators')}";
static String m2(count) =>
"${Intl.plural(count, one: 'Agregar elemento', other: 'Agregar elementos')}}";
static String m2(emailOrName) => "Añadido por ${emailOrName}";
static String m1(count) =>
"${Intl.plural(count, zero: 'Add viewer', one: 'Add viewer', other: 'Add viewers')}";
static String m3(albumName) => "Añadido exitosamente a ${albumName}";
static String m4(emailOrName) => "Añadido por ${emailOrName}";
static String m4(count) =>
static String m5(albumName) => "Añadido exitosamente a ${albumName}";
static String m6(count) =>
"${Intl.plural(count, zero: 'No hay Participantes', one: '1 Participante', other: '${count} Participantes')}";
static String m5(versionValue) => "Versión: ${versionValue}";
static String m7(versionValue) => "Versión: ${versionValue}";
static String m6(paymentProvider) =>
static String m8(paymentProvider) =>
"Por favor, cancele primero su suscripción existente de ${paymentProvider}";
static String m7(user) =>
static String m9(user) =>
"${user} no podrá añadir más fotos a este álbum\n\nTodavía podrán eliminar las fotos ya añadidas por ellos";
static String m8(isFamilyMember, storageAmountInGb) =>
static String m10(isFamilyMember, storageAmountInGb) =>
"${Intl.select(isFamilyMember, {
'true':
'Su familia ha reclamado ${storageAmountInGb} GB hasta el momento',
@ -48,145 +54,146 @@ class MessageLookup extends MessageLookupByLibrary {
'¡Tú has reclamado ${storageAmountInGb} GB hasta el momento!',
})}";
static String m9(albumName) => "Enlace colaborativo creado para ${albumName}";
static String m11(albumName) =>
"Enlace colaborativo creado para ${albumName}";
static String m10(familyAdminEmail) =>
static String m12(familyAdminEmail) =>
"Por favor contacta con <green>${familyAdminEmail}</green> para administrar tu suscripción";
static String m11(provider) =>
static String m13(provider) =>
"Por favor, contáctenos en support@ente.io para gestionar su suscripción a ${provider}.";
static String m13(currentlyDeleting, totalCount) =>
static String m15(currentlyDeleting, totalCount) =>
"Borrando ${currentlyDeleting} / ${totalCount}";
static String m14(albumName) =>
static String m16(albumName) =>
"Esto eliminará el enlace público para acceder a \"${albumName}\".";
static String m15(supportEmail) =>
static String m17(supportEmail) =>
"Por favor, envíe un email a ${supportEmail} desde su dirección de correo electrónico registrada";
static String m16(count, storageSaved) =>
static String m18(count, storageSaved) =>
"¡Has limpiado ${Intl.plural(count, one: '${count} archivo duplicado', other: '${count} archivos duplicados')}, ahorrando (${storageSaved}!)";
static String m18(newEmail) => "Correo cambiado a ${newEmail}";
static String m20(newEmail) => "Correo cambiado a ${newEmail}";
static String m19(email) =>
static String m21(email) =>
"${email} no tiene una cuenta ente.\n\nEnvíale una invitación para compartir fotos.";
static String m20(count, formattedNumber) =>
static String m22(count, formattedNumber) =>
"${Intl.plural(count, one: '1 archivo', other: '${formattedNumber} archivos')} en este dispositivo han sido respaldados de forma segura";
static String m21(count, formattedNumber) =>
static String m23(count, formattedNumber) =>
"${Intl.plural(count, one: '1 archivo', other: '${formattedNumber} archivos')} en este álbum ha sido respaldado de forma segura";
static String m22(storageAmountInGB) =>
static String m24(storageAmountInGB) =>
"${storageAmountInGB} GB cada vez que alguien se registra en un plan de pago y aplica tu código";
static String m23(freeAmount, storageUnit) =>
static String m25(freeAmount, storageUnit) =>
"${freeAmount} ${storageUnit} gratis";
static String m24(endDate) => "Prueba gratuita válida hasta${endDate}";
static String m26(endDate) => "Prueba gratuita válida hasta${endDate}";
static String m25(count) =>
static String m27(count) =>
"Aún puedes acceder ${Intl.plural(count, one: 'si', other: 'entonces')} en ente mientras mantengas una suscripción activa";
static String m26(sizeInMBorGB) => "Liberar ${sizeInMBorGB}";
static String m28(sizeInMBorGB) => "Liberar ${sizeInMBorGB}";
static String m27(count, formattedSize) =>
static String m29(count, formattedSize) =>
"${Intl.plural(count, one: 'Se puede eliminar del dispositivo para liberar ${formattedSize}', other: 'Se pueden eliminar del dispositivo para liberar ${formattedSize}')}";
static String m29(count) =>
static String m31(count) =>
"${Intl.plural(count, one: '${count} elemento', other: '${count} elementos')}";
static String m30(expiryTime) => "El enlace caducará en ${expiryTime}";
static String m32(expiryTime) => "El enlace caducará en ${expiryTime}";
static String m31(count, formattedCount) =>
static String m33(count, formattedCount) =>
"${Intl.plural(count, zero: 'no recuerdos', one: '${formattedCount} recuerdo', other: '${formattedCount} recuerdos')}\n";
static String m32(count) =>
static String m34(count) =>
"${Intl.plural(count, one: 'Mover elemento', other: 'Mover elementos')}";
static String m33(albumName) => "Movido exitosamente a ${albumName}";
static String m35(albumName) => "Movido exitosamente a ${albumName}";
static String m34(passwordStrengthValue) =>
static String m36(passwordStrengthValue) =>
"Seguridad de la contraseña : ${passwordStrengthValue}";
static String m35(providerName) =>
static String m37(providerName) =>
"Por favor hable con el soporte de ${providerName} si se le cobró";
static String m36(reason) =>
static String m38(reason) =>
"Lamentablemente tu pago falló debido a ${reason}";
static String m38(toEmail) =>
static String m40(toEmail) =>
"Por favor, envíanos un correo electrónico a ${toEmail}";
static String m39(toEmail) => "Por favor, envíe los registros a ${toEmail}";
static String m41(toEmail) => "Por favor, envíe los registros a ${toEmail}";
static String m40(storeName) => "Califícanos en ${storeName}";
static String m42(storeName) => "Califícanos en ${storeName}";
static String m41(storageInGB) =>
static String m43(storageInGB) =>
"3. Ambos obtienen ${storageInGB} GB* gratis";
static String m42(userEmail) =>
static String m44(userEmail) =>
"${userEmail} será eliminado de este álbum compartido\n\nCualquier foto añadida por ellos también será eliminada del álbum";
static String m43(endDate) => "Se renueva el ${endDate}";
static String m45(endDate) => "Se renueva el ${endDate}";
static String m45(count) => "${count} seleccionados";
static String m47(count) => "${count} seleccionados";
static String m46(count, yourCount) =>
static String m48(count, yourCount) =>
"${count} seleccionados (${yourCount} tuyos)";
static String m47(verificationID) =>
static String m49(verificationID) =>
"Aquí está mi ID de verificación: ${verificationID} para ente.io.";
static String m48(verificationID) =>
static String m50(verificationID) =>
"Hola, ¿puedes confirmar que esta es tu ID de verificación ente.io: ${verificationID}?";
static String m49(referralCode, referralStorageInGB) =>
static String m51(referralCode, referralStorageInGB) =>
"ente código de referencia: ${referralCode} \n\nAplicarlo en Ajustes → General → Referencias para obtener ${referralStorageInGB} GB gratis después de registrarse en un plan de pago\n\nhttps://ente.io";
static String m50(numberOfPeople) =>
static String m52(numberOfPeople) =>
"${Intl.plural(numberOfPeople, zero: 'Compartir con personas específicas', one: 'Compartido con 1 persona', other: 'Compartido con ${numberOfPeople} personas')}";
static String m51(emailIDs) => "Compartido con ${emailIDs}";
static String m53(emailIDs) => "Compartido con ${emailIDs}";
static String m52(fileType) =>
static String m54(fileType) =>
"Este ${fileType} se eliminará de tu dispositivo.";
static String m53(fileType) =>
static String m55(fileType) =>
"Este ${fileType} está tanto en ente como en tu dispositivo.";
static String m54(fileType) => "Este ${fileType} se eliminará de ente.";
static String m56(fileType) => "Este ${fileType} se eliminará de ente.";
static String m55(storageAmountInGB) => "${storageAmountInGB} GB";
static String m57(storageAmountInGB) => "${storageAmountInGB} GB";
static String m56(
static String m58(
usedAmount, usedStorageUnit, totalAmount, totalStorageUnit) =>
"${usedAmount} ${usedStorageUnit} de ${totalAmount} ${totalStorageUnit} usados";
static String m57(id) =>
static String m59(id) =>
"Su ${id} ya está vinculado a otra cuenta ente.\nSi desea utilizar su ${id} con esta cuenta, póngase en contacto con nuestro servicio de asistencia\'\'";
static String m58(endDate) => "Tu suscripción se cancelará el ${endDate}";
static String m60(endDate) => "Tu suscripción se cancelará el ${endDate}";
static String m59(completed, total) =>
static String m61(completed, total) =>
"${completed}/${total} recuerdos conservados";
static String m60(storageAmountInGB) =>
static String m62(storageAmountInGB) =>
"También obtienen ${storageAmountInGB} GB";
static String m61(email) => "Este es el ID de verificación de ${email}";
static String m63(email) => "Este es el ID de verificación de ${email}";
static String m64(email) => "Verificar ${email}";
static String m66(email) => "Verificar ${email}";
static String m65(email) =>
static String m67(email) =>
"Hemos enviado un correo a <green>${email}</green>";
static String m66(count) =>
static String m68(count) =>
"${Intl.plural(count, one: '${count} hace un año', other: '${count} hace años')}";
static String m67(storageSaved) => "¡Has liberado ${storageSaved} con éxito!";
static String m69(storageSaved) => "¡Has liberado ${storageSaved} con éxito!";
final messages = _notInlinedMessages(_notInlinedMessages);
static Map<String, Function> _notInlinedMessages(_) => <String, Function>{
@ -204,7 +211,8 @@ class MessageLookup extends MessageLookupByLibrary {
"Agregar nuevo correo electrónico"),
"addCollaborator":
MessageLookupByLibrary.simpleMessage("Agregar colaborador"),
"addItem": m0,
"addCollaborators": m0,
"addItem": m2,
"addLocation":
MessageLookupByLibrary.simpleMessage("Agregar ubicación"),
"addLocationButton": MessageLookupByLibrary.simpleMessage("Añadir"),
@ -214,9 +222,10 @@ class MessageLookup extends MessageLookupByLibrary {
"addToHiddenAlbum":
MessageLookupByLibrary.simpleMessage("Add to hidden album"),
"addViewer": MessageLookupByLibrary.simpleMessage("Añadir espectador"),
"addViewers": m1,
"addedAs": MessageLookupByLibrary.simpleMessage("Agregado como"),
"addedBy": m2,
"addedSuccessfullyTo": m3,
"addedBy": m4,
"addedSuccessfullyTo": m5,
"addingToFavorites":
MessageLookupByLibrary.simpleMessage("Añadiendo a favoritos..."),
"advanced": MessageLookupByLibrary.simpleMessage("Avanzado"),
@ -229,7 +238,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Después de una semana"),
"after1Year": MessageLookupByLibrary.simpleMessage("Después de un año"),
"albumOwner": MessageLookupByLibrary.simpleMessage("Propietario"),
"albumParticipantsCount": m4,
"albumParticipantsCount": m6,
"albumTitle": MessageLookupByLibrary.simpleMessage("Título del álbum"),
"albumUpdated":
MessageLookupByLibrary.simpleMessage("Álbum actualizado"),
@ -247,7 +256,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Permitir que la gente añada fotos"),
"androidIosWebDesktop": MessageLookupByLibrary.simpleMessage(
"Android, iOS, Web, Computadora"),
"appVersion": m5,
"appVersion": m7,
"appleId": MessageLookupByLibrary.simpleMessage("ID de Apple"),
"apply": MessageLookupByLibrary.simpleMessage("Aplicar"),
"applyCodeTitle": MessageLookupByLibrary.simpleMessage("Usar código"),
@ -329,10 +338,10 @@ class MessageLookup extends MessageLookupByLibrary {
"canOnlyRemoveFilesOwnedByYou": MessageLookupByLibrary.simpleMessage(
"Sólo puede eliminar archivos de tu propiedad"),
"cancel": MessageLookupByLibrary.simpleMessage("Cancelar"),
"cancelOtherSubscription": m6,
"cancelOtherSubscription": m8,
"cancelSubscription":
MessageLookupByLibrary.simpleMessage("Cancelar suscripción"),
"cannotAddMorePhotosAfterBecomingViewer": m7,
"cannotAddMorePhotosAfterBecomingViewer": m9,
"centerPoint": MessageLookupByLibrary.simpleMessage("Punto central"),
"changeEmail":
MessageLookupByLibrary.simpleMessage("Cambiar correo electrónico"),
@ -353,7 +362,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Reclamar almacenamiento gratis"),
"claimMore": MessageLookupByLibrary.simpleMessage("¡Reclama más!"),
"claimed": MessageLookupByLibrary.simpleMessage("Reclamado"),
"claimedStorageSoFar": m8,
"claimedStorageSoFar": m10,
"clearCaches": MessageLookupByLibrary.simpleMessage("Limpiar caché"),
"click": MessageLookupByLibrary.simpleMessage("• Click"),
"clickOnTheOverflowMenu": MessageLookupByLibrary.simpleMessage(
@ -371,7 +380,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Crea un enlace para que la gente pueda añadir y ver fotos en tu álbum compartido sin necesidad de la aplicación ente o una cuenta. Genial para recolectar fotos de eventos."),
"collaborativeLink":
MessageLookupByLibrary.simpleMessage("Enlace colaborativo"),
"collaborativeLinkCreatedFor": m9,
"collaborativeLinkCreatedFor": m11,
"collaborator": MessageLookupByLibrary.simpleMessage("Colaborador"),
"collaboratorsCanAddPhotosAndVideosToTheSharedAlbum":
MessageLookupByLibrary.simpleMessage(
@ -396,10 +405,10 @@ class MessageLookup extends MessageLookupByLibrary {
"Confirmar clave de recuperación"),
"confirmYourRecoveryKey": MessageLookupByLibrary.simpleMessage(
"Confirme su clave de recuperación"),
"contactFamilyAdmin": m10,
"contactFamilyAdmin": m12,
"contactSupport":
MessageLookupByLibrary.simpleMessage("Contactar con soporte"),
"contactToManageSubscription": m11,
"contactToManageSubscription": m13,
"contacts": MessageLookupByLibrary.simpleMessage("Contacts"),
"continueLabel": MessageLookupByLibrary.simpleMessage("Continuar"),
"continueOnFreeTrial": MessageLookupByLibrary.simpleMessage(
@ -472,7 +481,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Borrar la ubicación"),
"deletePhotos":
MessageLookupByLibrary.simpleMessage("Borrar las fotos"),
"deleteProgress": m13,
"deleteProgress": m15,
"deleteReason1": MessageLookupByLibrary.simpleMessage(
"Falta una característica clave que necesito"),
"deleteReason2": MessageLookupByLibrary.simpleMessage(
@ -506,7 +515,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Los espectadores todavía pueden tomar capturas de pantalla o guardar una copia de sus fotos usando herramientas externas"),
"disableDownloadWarningTitle":
MessageLookupByLibrary.simpleMessage("Por favor tenga en cuenta"),
"disableLinkMessage": m14,
"disableLinkMessage": m16,
"disableTwofactor":
MessageLookupByLibrary.simpleMessage("Deshabilitar dos factores"),
"disablingTwofactorAuthentication":
@ -527,8 +536,8 @@ class MessageLookup extends MessageLookupByLibrary {
"downloadFailed":
MessageLookupByLibrary.simpleMessage("Descarga fallida"),
"downloading": MessageLookupByLibrary.simpleMessage("Descargando..."),
"dropSupportEmail": m15,
"duplicateFileCountWithStorageSaved": m16,
"dropSupportEmail": m17,
"duplicateFileCountWithStorageSaved": m18,
"edit": MessageLookupByLibrary.simpleMessage("Editar"),
"editLocation": MessageLookupByLibrary.simpleMessage("Edit location"),
"editLocationTagTitle":
@ -540,8 +549,8 @@ class MessageLookup extends MessageLookupByLibrary {
"Edits to location will only be seen within Ente"),
"eligible": MessageLookupByLibrary.simpleMessage("elegible"),
"email": MessageLookupByLibrary.simpleMessage("Correo electrónico"),
"emailChangedTo": m18,
"emailNoEnteAccount": m19,
"emailChangedTo": m20,
"emailNoEnteAccount": m21,
"emailYourLogs": MessageLookupByLibrary.simpleMessage(
"Envíe sus registros por correo electrónico"),
"empty": MessageLookupByLibrary.simpleMessage("Vaciar"),
@ -630,8 +639,8 @@ class MessageLookup extends MessageLookupByLibrary {
"fileSavedToGallery": MessageLookupByLibrary.simpleMessage(
"Archivo guardado en la galería"),
"fileTypes": MessageLookupByLibrary.simpleMessage("File types"),
"filesBackedUpFromDevice": m20,
"filesBackedUpInAlbum": m21,
"filesBackedUpFromDevice": m22,
"filesBackedUpInAlbum": m23,
"filesDeleted":
MessageLookupByLibrary.simpleMessage("Archivos eliminados"),
"flip": MessageLookupByLibrary.simpleMessage("Voltear"),
@ -641,18 +650,18 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Olvidé mi contraseña"),
"freeStorageClaimed": MessageLookupByLibrary.simpleMessage(
"Almacenamiento gratuito reclamado"),
"freeStorageOnReferralSuccess": m22,
"freeStorageSpace": m23,
"freeStorageOnReferralSuccess": m24,
"freeStorageSpace": m25,
"freeStorageUsable": MessageLookupByLibrary.simpleMessage(
"Almacenamiento libre disponible"),
"freeTrial": MessageLookupByLibrary.simpleMessage("Prueba gratuita"),
"freeTrialValidTill": m24,
"freeUpAccessPostDelete": m25,
"freeUpAmount": m26,
"freeTrialValidTill": m26,
"freeUpAccessPostDelete": m27,
"freeUpAmount": m28,
"freeUpDeviceSpace": MessageLookupByLibrary.simpleMessage(
"Liberar espacio del dispositivo"),
"freeUpSpace": MessageLookupByLibrary.simpleMessage("Liberar espacio"),
"freeUpSpaceSaving": m27,
"freeUpSpaceSaving": m29,
"galleryMemoryLimitInfo": MessageLookupByLibrary.simpleMessage(
"Hasta 1000 memorias mostradas en la galería"),
"general": MessageLookupByLibrary.simpleMessage("General"),
@ -698,7 +707,7 @@ class MessageLookup extends MessageLookupByLibrary {
"itLooksLikeSomethingWentWrongPleaseRetryAfterSome":
MessageLookupByLibrary.simpleMessage(
"Parece que algo salió mal. Por favor, vuelve a intentarlo después de algún tiempo. Si el error persiste, ponte en contacto con nuestro equipo de soporte."),
"itemCount": m29,
"itemCount": m31,
"itemsShowTheNumberOfDaysRemainingBeforePermanentDeletion":
MessageLookupByLibrary.simpleMessage(
"Los artículos muestran el número de días restantes antes de ser borrados permanente"),
@ -727,7 +736,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Límite del dispositivo"),
"linkEnabled": MessageLookupByLibrary.simpleMessage("Habilitado"),
"linkExpired": MessageLookupByLibrary.simpleMessage("Vencido"),
"linkExpiresOn": m30,
"linkExpiresOn": m32,
"linkExpiry": MessageLookupByLibrary.simpleMessage("Enlace vence"),
"linkHasExpired":
MessageLookupByLibrary.simpleMessage("El enlace ha caducado"),
@ -776,6 +785,9 @@ class MessageLookup extends MessageLookupByLibrary {
"logout": MessageLookupByLibrary.simpleMessage("Cerrar sesión"),
"logsDialogBody": MessageLookupByLibrary.simpleMessage(
"Esto enviará registros para ayudarnos a depurar su problema. Tenga en cuenta que los nombres de los archivos se incluirán para ayudar a rastrear problemas con archivos específicos."),
"longPressAnEmailToVerifyEndToEndEncryption":
MessageLookupByLibrary.simpleMessage(
"Long press an email to verify end to end encryption."),
"longpressOnAnItemToViewInFullscreen": MessageLookupByLibrary.simpleMessage(
"Pulsación prolongada en un elemento para ver en pantalla completa"),
"lostDevice":
@ -793,7 +805,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Administrar tu suscripción"),
"mastodon": MessageLookupByLibrary.simpleMessage("Mastodon"),
"matrix": MessageLookupByLibrary.simpleMessage("Matrix"),
"memoryCount": m31,
"memoryCount": m33,
"merchandise": MessageLookupByLibrary.simpleMessage("Mercancías"),
"mobileWebDesktop":
MessageLookupByLibrary.simpleMessage("Celular, Web, Computadora"),
@ -802,11 +814,11 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(
"Modify your query, or try searching for"),
"monthly": MessageLookupByLibrary.simpleMessage("Mensual"),
"moveItem": m32,
"moveItem": m34,
"moveToAlbum": MessageLookupByLibrary.simpleMessage("Mover al álbum"),
"moveToHiddenAlbum":
MessageLookupByLibrary.simpleMessage("Move to hidden album"),
"movedSuccessfullyTo": m33,
"movedSuccessfullyTo": m35,
"movedToTrash":
MessageLookupByLibrary.simpleMessage("Movido a la papelera"),
"movingFilesToAlbum": MessageLookupByLibrary.simpleMessage(
@ -856,14 +868,14 @@ class MessageLookup extends MessageLookupByLibrary {
"Contraseña cambiada correctamente"),
"passwordLock":
MessageLookupByLibrary.simpleMessage("Bloqueo por contraseña"),
"passwordStrength": m34,
"passwordStrength": m36,
"passwordWarning": MessageLookupByLibrary.simpleMessage(
"No almacenamos esta contraseña, así que si la olvidas, <underline>no podemos descifrar tus datos</underline>"),
"paymentDetails":
MessageLookupByLibrary.simpleMessage("Detalles de pago"),
"paymentFailed": MessageLookupByLibrary.simpleMessage("Pago fallido"),
"paymentFailedTalkToProvider": m35,
"paymentFailedWithReason": m36,
"paymentFailedTalkToProvider": m37,
"paymentFailedWithReason": m38,
"pendingSync":
MessageLookupByLibrary.simpleMessage("Sincronización pendiente"),
"peopleUsingYourCode":
@ -890,12 +902,12 @@ class MessageLookup extends MessageLookupByLibrary {
"pleaseContactSupportIfTheProblemPersists":
MessageLookupByLibrary.simpleMessage(
"Por favor contacte a soporte técnico si el problema persiste"),
"pleaseEmailUsAt": m38,
"pleaseEmailUsAt": m40,
"pleaseGrantPermissions":
MessageLookupByLibrary.simpleMessage("Por favor, concede permiso"),
"pleaseLoginAgain": MessageLookupByLibrary.simpleMessage(
"Por favor, vuelva a iniciar sesión"),
"pleaseSendTheLogsTo": m39,
"pleaseSendTheLogsTo": m41,
"pleaseTryAgain": MessageLookupByLibrary.simpleMessage(
"Por favor, inténtalo nuevamente"),
"pleaseVerifyTheCodeYouHaveEntered":
@ -929,7 +941,7 @@ class MessageLookup extends MessageLookupByLibrary {
"rateTheApp":
MessageLookupByLibrary.simpleMessage("Evalúa la aplicación"),
"rateUs": MessageLookupByLibrary.simpleMessage("Califícanos"),
"rateUsOnStore": m40,
"rateUsOnStore": m42,
"recover": MessageLookupByLibrary.simpleMessage("Recuperar"),
"recoverAccount":
MessageLookupByLibrary.simpleMessage("Recuperar cuenta"),
@ -961,7 +973,7 @@ class MessageLookup extends MessageLookupByLibrary {
"1. Dale este código a tus amigos"),
"referralStep2": MessageLookupByLibrary.simpleMessage(
"2. Se inscriben a un plan pagado"),
"referralStep3": m41,
"referralStep3": m43,
"referrals": MessageLookupByLibrary.simpleMessage("Referidos"),
"referralsAreCurrentlyPaused": MessageLookupByLibrary.simpleMessage(
"Las referencias están actualmente en pausa"),
@ -986,7 +998,7 @@ class MessageLookup extends MessageLookupByLibrary {
"removeLink": MessageLookupByLibrary.simpleMessage("Eliminar enlace"),
"removeParticipant":
MessageLookupByLibrary.simpleMessage("Quitar participante"),
"removeParticipantBody": m42,
"removeParticipantBody": m44,
"removePublicLink":
MessageLookupByLibrary.simpleMessage("Quitar enlace público"),
"removeShareItemsWarning": MessageLookupByLibrary.simpleMessage(
@ -1000,7 +1012,7 @@ class MessageLookup extends MessageLookupByLibrary {
"renameFile": MessageLookupByLibrary.simpleMessage("Renombrar archivo"),
"renewSubscription":
MessageLookupByLibrary.simpleMessage("Renovar suscripción"),
"renewsOn": m43,
"renewsOn": m45,
"reportABug": MessageLookupByLibrary.simpleMessage("Reportar un error"),
"reportBug": MessageLookupByLibrary.simpleMessage("Reportar error"),
"resendEmail":
@ -1062,8 +1074,8 @@ class MessageLookup extends MessageLookupByLibrary {
"selectedItemsWillBeDeletedFromAllAlbumsAndMoved":
MessageLookupByLibrary.simpleMessage(
"Los archivos seleccionados serán eliminados de todos los álbumes y movidos a la papelera."),
"selectedPhotos": m45,
"selectedPhotosWithYours": m46,
"selectedPhotos": m47,
"selectedPhotosWithYours": m48,
"send": MessageLookupByLibrary.simpleMessage("Enviar"),
"sendEmail":
MessageLookupByLibrary.simpleMessage("Enviar correo electrónico"),
@ -1088,32 +1100,32 @@ class MessageLookup extends MessageLookupByLibrary {
"shareAnAlbumNow":
MessageLookupByLibrary.simpleMessage("Compartir un álbum ahora"),
"shareLink": MessageLookupByLibrary.simpleMessage("Compartir enlace"),
"shareMyVerificationID": m47,
"shareMyVerificationID": m49,
"shareOnlyWithThePeopleYouWant": MessageLookupByLibrary.simpleMessage(
"Comparte sólo con la gente que quieres"),
"shareTextConfirmOthersVerificationID": m48,
"shareTextConfirmOthersVerificationID": m50,
"shareTextRecommendUsingEnte": MessageLookupByLibrary.simpleMessage(
"Descarga ente para que podamos compartir fácilmente fotos y videos en su calidad original\n\nhttps://ente.io"),
"shareTextReferralCode": m49,
"shareTextReferralCode": m51,
"shareWithNonenteUsers": MessageLookupByLibrary.simpleMessage(
"Compartir con usuarios no ente"),
"shareWithPeopleSectionTitle": m50,
"shareWithPeopleSectionTitle": m52,
"shareYourFirstAlbum":
MessageLookupByLibrary.simpleMessage("Comparte tu primer álbum"),
"sharedAlbumSectionDescription": MessageLookupByLibrary.simpleMessage(
"Crear álbumes compartidos y colaborativos con otros usuarios ente, incluyendo usuarios en planes gratuitos."),
"sharedByMe": MessageLookupByLibrary.simpleMessage("Compartido por mí"),
"sharedWith": m51,
"sharedWith": m53,
"sharedWithMe":
MessageLookupByLibrary.simpleMessage("Compartido conmigo"),
"sharing": MessageLookupByLibrary.simpleMessage("Compartiendo..."),
"signUpTerms": MessageLookupByLibrary.simpleMessage(
"Estoy de acuerdo con los <u-terms>términos del servicio</u-terms> y <u-policy> la política de privacidad</u-policy>"),
"singleFileDeleteFromDevice": m52,
"singleFileDeleteFromDevice": m54,
"singleFileDeleteHighlight": MessageLookupByLibrary.simpleMessage(
"Se borrará de todos los álbumes."),
"singleFileInBothLocalAndRemote": m53,
"singleFileInRemoteOnly": m54,
"singleFileInBothLocalAndRemote": m55,
"singleFileInRemoteOnly": m56,
"skip": MessageLookupByLibrary.simpleMessage("Omitir"),
"social": MessageLookupByLibrary.simpleMessage("Social"),
"someItemsAreInBothEnteAndYourDevice":
@ -1148,13 +1160,13 @@ class MessageLookup extends MessageLookupByLibrary {
"storage": MessageLookupByLibrary.simpleMessage("Almacenamiento"),
"storageBreakupFamily": MessageLookupByLibrary.simpleMessage("Familia"),
"storageBreakupYou": MessageLookupByLibrary.simpleMessage("Usted"),
"storageInGB": m55,
"storageInGB": m57,
"storageLimitExceeded":
MessageLookupByLibrary.simpleMessage("Límite de datos excedido"),
"storageUsageInfo": m56,
"storageUsageInfo": m58,
"strongStrength": MessageLookupByLibrary.simpleMessage("Segura"),
"subAlreadyLinkedErrMessage": m57,
"subWillBeCancelledOn": m58,
"subAlreadyLinkedErrMessage": m59,
"subWillBeCancelledOn": m60,
"subscribe": MessageLookupByLibrary.simpleMessage("Suscribirse"),
"subscribeToEnableSharing": MessageLookupByLibrary.simpleMessage(
"Parece que su suscripción ha caducado. Por favor, suscríbase para habilitar el compartir."),
@ -1167,7 +1179,7 @@ class MessageLookup extends MessageLookupByLibrary {
"suggestFeatures":
MessageLookupByLibrary.simpleMessage("Sugerir una característica"),
"support": MessageLookupByLibrary.simpleMessage("Soporte"),
"syncProgress": m59,
"syncProgress": m61,
"syncStopped":
MessageLookupByLibrary.simpleMessage("Sincronización detenida"),
"syncing": MessageLookupByLibrary.simpleMessage("Sincronizando..."),
@ -1195,7 +1207,7 @@ class MessageLookup extends MessageLookupByLibrary {
"theseItemsWillBeDeletedFromYourDevice":
MessageLookupByLibrary.simpleMessage(
"Estos elementos se eliminarán de tu dispositivo."),
"theyAlsoGetXGb": m60,
"theyAlsoGetXGb": m62,
"theyWillBeDeletedFromAllAlbums": MessageLookupByLibrary.simpleMessage(
"Se borrarán de todos los álbumes."),
"thisActionCannotBeUndone": MessageLookupByLibrary.simpleMessage(
@ -1211,7 +1223,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Este correo electrónico ya está en uso"),
"thisImageHasNoExifData": MessageLookupByLibrary.simpleMessage(
"Esta imagen no tiene datos exif"),
"thisIsPersonVerificationId": m61,
"thisIsPersonVerificationId": m63,
"thisIsYourVerificationId": MessageLookupByLibrary.simpleMessage(
"Esta es tu ID de verificación"),
"thisWillLogYouOutOfTheFollowingDevice":
@ -1281,7 +1293,7 @@ class MessageLookup extends MessageLookupByLibrary {
"verify": MessageLookupByLibrary.simpleMessage("Verificar"),
"verifyEmail": MessageLookupByLibrary.simpleMessage(
"Verificar correo electrónico"),
"verifyEmailID": m64,
"verifyEmailID": m66,
"verifyIDLabel": MessageLookupByLibrary.simpleMessage("Verificar"),
"verifyPassword":
MessageLookupByLibrary.simpleMessage("Verificar contraseña"),
@ -1304,12 +1316,12 @@ class MessageLookup extends MessageLookupByLibrary {
"weDontSupportEditingPhotosAndAlbumsThatYouDont":
MessageLookupByLibrary.simpleMessage(
"No admitimos la edición de fotos y álbunes que aún no son tuyos"),
"weHaveSendEmailTo": m65,
"weHaveSendEmailTo": m67,
"weakStrength": MessageLookupByLibrary.simpleMessage("Poco segura"),
"welcomeBack":
MessageLookupByLibrary.simpleMessage("¡Bienvenido de nuevo!"),
"yearly": MessageLookupByLibrary.simpleMessage("Anualmente"),
"yearsAgo": m66,
"yearsAgo": m68,
"yes": MessageLookupByLibrary.simpleMessage(""),
"yesCancel": MessageLookupByLibrary.simpleMessage("Sí, cancelar"),
"yesConvertToViewer":
@ -1339,7 +1351,7 @@ class MessageLookup extends MessageLookupByLibrary {
"No puedes compartir contigo mismo"),
"youDontHaveAnyArchivedItems": MessageLookupByLibrary.simpleMessage(
"No tienes nada de elementos archivados."),
"youHaveSuccessfullyFreedUp": m67,
"youHaveSuccessfullyFreedUp": m69,
"yourAccountHasBeenDeleted":
MessageLookupByLibrary.simpleMessage("Su cuenta ha sido eliminada"),
"yourMap": MessageLookupByLibrary.simpleMessage("Your map"),

View file

@ -21,24 +21,30 @@ class MessageLookup extends MessageLookupByLibrary {
String get localeName => 'fr';
static String m0(count) =>
"${Intl.plural(count, zero: 'Add collaborator', one: 'Add collaborator', other: 'Add collaborators')}";
static String m2(count) =>
"${Intl.plural(count, one: 'Ajoutez un objet', other: 'Ajoutez des objets')}";
static String m2(emailOrName) => "Ajouté par ${emailOrName}";
static String m1(count) =>
"${Intl.plural(count, zero: 'Add viewer', one: 'Add viewer', other: 'Add viewers')}";
static String m3(albumName) => "Ajouté avec succès à ${albumName}";
static String m4(emailOrName) => "Ajouté par ${emailOrName}";
static String m4(count) =>
static String m5(albumName) => "Ajouté avec succès à ${albumName}";
static String m6(count) =>
"${Intl.plural(count, zero: 'Aucun Participant', one: '1 Participant', other: '${count} Participants')}";
static String m5(versionValue) => "Version : ${versionValue}";
static String m7(versionValue) => "Version : ${versionValue}";
static String m6(paymentProvider) =>
static String m8(paymentProvider) =>
"Veuillez d\'abord annuler votre abonnement existant de ${paymentProvider}";
static String m7(user) =>
static String m9(user) =>
"${user} ne pourra pas ajouter plus de photos à cet album\n\nIl pourrait toujours supprimer les photos existantes ajoutées par eux";
static String m8(isFamilyMember, storageAmountInGb) =>
static String m10(isFamilyMember, storageAmountInGb) =>
"${Intl.select(isFamilyMember, {
'true':
'Votre famille a demandé ${storageAmountInGb} GB jusqu\'à présent',
@ -48,161 +54,161 @@ class MessageLookup extends MessageLookupByLibrary {
'Vous avez réclamé ${storageAmountInGb} GB jusqu\'à présent!',
})}";
static String m9(albumName) => "Lien collaboratif créé pour ${albumName}";
static String m11(albumName) => "Lien collaboratif créé pour ${albumName}";
static String m10(familyAdminEmail) =>
static String m12(familyAdminEmail) =>
"Veuillez contacter <green>${familyAdminEmail}</green> pour gérer votre abonnement";
static String m11(provider) =>
static String m13(provider) =>
"Veuillez nous contacter à support@ente.io pour gérer votre abonnement ${provider}.";
static String m12(count) =>
static String m14(count) =>
"${Intl.plural(count, one: 'Supprimer le fichier', other: 'Supprimer ${count} fichiers')}";
static String m13(currentlyDeleting, totalCount) =>
static String m15(currentlyDeleting, totalCount) =>
"Suppression de ${currentlyDeleting} / ${totalCount}";
static String m14(albumName) =>
static String m16(albumName) =>
"Cela supprimera le lien public pour accéder à \"${albumName}\".";
static String m15(supportEmail) =>
static String m17(supportEmail) =>
"Veuillez envoyer un e-mail à ${supportEmail} depuis votre adresse enregistrée";
static String m16(count, storageSaved) =>
static String m18(count, storageSaved) =>
"Vous avez nettoyé ${Intl.plural(count, one: '${count} fichier dupliqué', other: '${count} fichiers dupliqués')}, sauvegarde (${storageSaved}!)";
static String m17(count, formattedSize) =>
static String m19(count, formattedSize) =>
"${count} fichiers, ${formattedSize} chacun";
static String m18(newEmail) => "L\'e-mail a été changé en ${newEmail}";
static String m20(newEmail) => "L\'e-mail a été changé en ${newEmail}";
static String m19(email) =>
static String m21(email) =>
"${email} n\'a pas de compte ente.\n\nEnvoyez une invitation pour partager des photos.";
static String m20(count, formattedNumber) =>
static String m22(count, formattedNumber) =>
"${Intl.plural(count, one: '1 fichier sur cet appareil a été sauvegardé en toute sécurité', other: '${formattedNumber} fichiers sur cet appareil ont été sauvegardés en toute sécurité')}";
static String m21(count, formattedNumber) =>
static String m23(count, formattedNumber) =>
"${Intl.plural(count, one: '1 fichier dans cet album a été sauvegardé en toute sécurité', other: '${formattedNumber} fichiers dans cet album ont été sauvegardés en toute sécurité')}";
static String m22(storageAmountInGB) =>
static String m24(storageAmountInGB) =>
"${storageAmountInGB} Go chaque fois que quelqu\'un s\'inscrit à une offre payante et applique votre code";
static String m23(freeAmount, storageUnit) =>
static String m25(freeAmount, storageUnit) =>
"${freeAmount} ${storageUnit} libre";
static String m24(endDate) => "Essai gratuit valide jusquau ${endDate}";
static String m26(endDate) => "Essai gratuit valide jusquau ${endDate}";
static String m25(count) =>
static String m27(count) =>
"Vous pouvez toujours ${Intl.plural(count, one: 'y', other: 'y')} accéder sur ente tant que vous avez un abonnement actif";
static String m26(sizeInMBorGB) => "Libérer ${sizeInMBorGB}";
static String m28(sizeInMBorGB) => "Libérer ${sizeInMBorGB}";
static String m27(count, formattedSize) =>
static String m29(count, formattedSize) =>
"${Intl.plural(count, one: 'Peut être supprimé de l\'appareil pour libérer ${formattedSize}', other: 'Peuvent être supprimés de l\'appareil pour libérer ${formattedSize}')}";
static String m29(count) =>
static String m31(count) =>
"${Intl.plural(count, one: '${count} objet', other: '${count} objets')}";
static String m30(expiryTime) => "Le lien expirera le ${expiryTime}";
static String m32(expiryTime) => "Le lien expirera le ${expiryTime}";
static String m31(count, formattedCount) =>
static String m33(count, formattedCount) =>
"${Intl.plural(count, one: '${formattedCount} mémoire', other: '${formattedCount} souvenirs')}";
static String m32(count) =>
static String m34(count) =>
"${Intl.plural(count, one: 'Déplacez l\'objet', other: 'Déplacez des objets')}";
static String m33(albumName) => "Déplacé avec succès vers ${albumName}";
static String m35(albumName) => "Déplacé avec succès vers ${albumName}";
static String m34(passwordStrengthValue) =>
static String m36(passwordStrengthValue) =>
"Sécurité du mot de passe : ${passwordStrengthValue}";
static String m35(providerName) =>
static String m37(providerName) =>
"Veuillez contacter le support ${providerName} si vous avez été facturé";
static String m36(reason) =>
static String m38(reason) =>
"Malheureusement, votre paiement a échoué pour ${reason}";
static String m37(endDate) =>
static String m39(endDate) =>
"Essai gratuit valable jusqu\'à ${endDate}.\nVous pouvez choisir un plan payant par la suite.";
static String m38(toEmail) => "Merci de nous envoyer un e-mail à ${toEmail}";
static String m40(toEmail) => "Merci de nous envoyer un e-mail à ${toEmail}";
static String m39(toEmail) => "Envoyez les logs à ${toEmail}";
static String m41(toEmail) => "Envoyez les logs à ${toEmail}";
static String m40(storeName) => "Notez-nous sur ${storeName}";
static String m42(storeName) => "Notez-nous sur ${storeName}";
static String m41(storageInGB) =>
static String m43(storageInGB) =>
"3. Vous recevez tous les deux ${storageInGB} GB* gratuits";
static String m42(userEmail) =>
static String m44(userEmail) =>
"${userEmail} sera retiré de cet album partagé\n\nToutes les photos ajoutées par eux seront également retirées de l\'album";
static String m43(endDate) => "Renouvellement le ${endDate}";
static String m45(endDate) => "Renouvellement le ${endDate}";
static String m44(count) =>
static String m46(count) =>
"${Intl.plural(count, one: '${count} résultat trouvé', other: '${count} résultats trouvés')}";
static String m45(count) => "${count} sélectionné(s)";
static String m47(count) => "${count} sélectionné(s)";
static String m46(count, yourCount) =>
static String m48(count, yourCount) =>
"${count} sélectionné(s) (${yourCount} à vous)";
static String m47(verificationID) =>
static String m49(verificationID) =>
"Voici mon ID de vérification : ${verificationID} pour ente.io.";
static String m48(verificationID) =>
static String m50(verificationID) =>
"Hé, pouvez-vous confirmer qu\'il s\'agit de votre ID de vérification ente.io : ${verificationID}";
static String m49(referralCode, referralStorageInGB) =>
static String m51(referralCode, referralStorageInGB) =>
"code de parrainage ente : ${referralCode} \n\nAppliquez le dans Paramètres → Général → Références pour obtenir ${referralStorageInGB} Go gratuitement après votre inscription à un plan payant\n\nhttps://ente.io";
static String m50(numberOfPeople) =>
static String m52(numberOfPeople) =>
"${Intl.plural(numberOfPeople, zero: 'Partagez avec des personnes spécifiques', one: 'Partagé avec 1 personne', other: 'Partagé avec ${numberOfPeople} des gens')}";
static String m51(emailIDs) => "Partagé avec ${emailIDs}";
static String m53(emailIDs) => "Partagé avec ${emailIDs}";
static String m52(fileType) =>
static String m54(fileType) =>
"Elle ${fileType} sera supprimée de votre appareil.";
static String m53(fileType) =>
static String m55(fileType) =>
"Cette ${fileType} est à la fois sur ente et sur votre appareil.";
static String m54(fileType) => "Ce ${fileType} sera supprimé de ente.";
static String m56(fileType) => "Ce ${fileType} sera supprimé de ente.";
static String m55(storageAmountInGB) => "${storageAmountInGB} Go";
static String m57(storageAmountInGB) => "${storageAmountInGB} Go";
static String m56(
static String m58(
usedAmount, usedStorageUnit, totalAmount, totalStorageUnit) =>
"${usedAmount} ${usedStorageUnit} sur ${totalAmount} ${totalStorageUnit} utilisé";
static String m57(id) =>
static String m59(id) =>
"Votre ${id} est déjà lié à un autre compte ente.\nSi vous souhaitez utiliser votre ${id} avec ce compte, veuillez contacter notre support";
static String m58(endDate) => "Votre abonnement sera annulé le ${endDate}";
static String m60(endDate) => "Votre abonnement sera annulé le ${endDate}";
static String m59(completed, total) =>
static String m61(completed, total) =>
"${completed}/${total} souvenirs préservés";
static String m60(storageAmountInGB) =>
static String m62(storageAmountInGB) =>
"Ils obtiennent aussi ${storageAmountInGB} Go";
static String m61(email) => "Ceci est l\'ID de vérification de ${email}";
static String m63(email) => "Ceci est l\'ID de vérification de ${email}";
static String m62(count) =>
static String m64(count) =>
"${Intl.plural(count, zero: '0 jour', one: '1 jour', other: '${count} jours')}";
static String m63(endDate) => "Valable jusqu\'au ${endDate}";
static String m65(endDate) => "Valable jusqu\'au ${endDate}";
static String m64(email) => "Vérifier ${email}";
static String m66(email) => "Vérifier ${email}";
static String m65(email) =>
static String m67(email) =>
"Nous avons envoyé un e-mail à <green>${email}</green>";
static String m66(count) =>
static String m68(count) =>
"${Intl.plural(count, one: 'il y a ${count} an', other: 'il y a ${count} ans')}";
static String m67(storageSaved) =>
static String m69(storageSaved) =>
"Vous avez libéré ${storageSaved} avec succès !";
final messages = _notInlinedMessages(_notInlinedMessages);
@ -221,9 +227,10 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Ajouter un nouvel email"),
"addCollaborator":
MessageLookupByLibrary.simpleMessage("Ajouter un collaborateur"),
"addCollaborators": m0,
"addFromDevice":
MessageLookupByLibrary.simpleMessage("Ajouter depuis l\'appareil"),
"addItem": m0,
"addItem": m2,
"addLocation":
MessageLookupByLibrary.simpleMessage("Ajouter la localisation"),
"addLocationButton": MessageLookupByLibrary.simpleMessage("Ajouter"),
@ -243,11 +250,12 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Ajouter à un album masqué"),
"addViewer":
MessageLookupByLibrary.simpleMessage("Ajouter un observateur"),
"addViewers": m1,
"addYourPhotosNow": MessageLookupByLibrary.simpleMessage(
"Ajoutez vos photos maintenant"),
"addedAs": MessageLookupByLibrary.simpleMessage("Ajouté comme"),
"addedBy": m2,
"addedSuccessfullyTo": m3,
"addedBy": m4,
"addedSuccessfullyTo": m5,
"addingToFavorites":
MessageLookupByLibrary.simpleMessage("Ajout aux favoris..."),
"advanced": MessageLookupByLibrary.simpleMessage("Avancé"),
@ -258,7 +266,7 @@ class MessageLookup extends MessageLookupByLibrary {
"after1Week": MessageLookupByLibrary.simpleMessage("Après 1 semaine"),
"after1Year": MessageLookupByLibrary.simpleMessage("Après 1 an"),
"albumOwner": MessageLookupByLibrary.simpleMessage("Propriétaire"),
"albumParticipantsCount": m4,
"albumParticipantsCount": m6,
"albumTitle": MessageLookupByLibrary.simpleMessage("Titre de l\'album"),
"albumUpdated":
MessageLookupByLibrary.simpleMessage("Album mis à jour"),
@ -293,7 +301,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Android, iOS, Web, Ordinateur"),
"androidSignInTitle":
MessageLookupByLibrary.simpleMessage("Authentification requise"),
"appVersion": m5,
"appVersion": m7,
"appleId": MessageLookupByLibrary.simpleMessage("Apple ID"),
"apply": MessageLookupByLibrary.simpleMessage("Appliquer"),
"applyCodeTitle":
@ -383,10 +391,10 @@ class MessageLookup extends MessageLookupByLibrary {
"canOnlyRemoveFilesOwnedByYou": MessageLookupByLibrary.simpleMessage(
"Vous ne pouvez supprimer que les fichiers que vous possédez"),
"cancel": MessageLookupByLibrary.simpleMessage("Annuler"),
"cancelOtherSubscription": m6,
"cancelOtherSubscription": m8,
"cancelSubscription":
MessageLookupByLibrary.simpleMessage("Annuler l\'abonnement"),
"cannotAddMorePhotosAfterBecomingViewer": m7,
"cannotAddMorePhotosAfterBecomingViewer": m9,
"cannotDeleteSharedFiles": MessageLookupByLibrary.simpleMessage(
"Les fichiers partagés ne peuvent pas être supprimés"),
"centerPoint": MessageLookupByLibrary.simpleMessage("Point central"),
@ -409,7 +417,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Réclamer le stockage gratuit"),
"claimMore": MessageLookupByLibrary.simpleMessage("Réclamez plus !"),
"claimed": MessageLookupByLibrary.simpleMessage("Réclamée"),
"claimedStorageSoFar": m8,
"claimedStorageSoFar": m10,
"clearCaches":
MessageLookupByLibrary.simpleMessage("Nettoyer le cache"),
"click": MessageLookupByLibrary.simpleMessage("• Click"),
@ -430,7 +438,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Créez un lien pour permettre aux gens d\'ajouter et de voir des photos dans votre album partagé sans avoir besoin d\'une application ente ou d\'un compte. Idéal pour collecter des photos d\'événement."),
"collaborativeLink":
MessageLookupByLibrary.simpleMessage("Lien collaboratif"),
"collaborativeLinkCreatedFor": m9,
"collaborativeLinkCreatedFor": m11,
"collaborator": MessageLookupByLibrary.simpleMessage("Collaborateur"),
"collaboratorsCanAddPhotosAndVideosToTheSharedAlbum":
MessageLookupByLibrary.simpleMessage(
@ -458,10 +466,10 @@ class MessageLookup extends MessageLookupByLibrary {
"Confirmer la clé de récupération"),
"confirmYourRecoveryKey": MessageLookupByLibrary.simpleMessage(
"Confirmer la clé de récupération"),
"contactFamilyAdmin": m10,
"contactFamilyAdmin": m12,
"contactSupport":
MessageLookupByLibrary.simpleMessage("Contacter l\'assistance"),
"contactToManageSubscription": m11,
"contactToManageSubscription": m13,
"contacts": MessageLookupByLibrary.simpleMessage("Contacts"),
"contents": MessageLookupByLibrary.simpleMessage("Contenus"),
"continueLabel": MessageLookupByLibrary.simpleMessage("Continuer"),
@ -542,12 +550,12 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Supprimer de l\'appareil"),
"deleteFromEnte":
MessageLookupByLibrary.simpleMessage("Supprimer de ente"),
"deleteItemCount": m12,
"deleteItemCount": m14,
"deleteLocation":
MessageLookupByLibrary.simpleMessage("Supprimer la localisation"),
"deletePhotos":
MessageLookupByLibrary.simpleMessage("Supprimer des photos"),
"deleteProgress": m13,
"deleteProgress": m15,
"deleteReason1": MessageLookupByLibrary.simpleMessage(
"Il manque une fonction clé dont j\'ai besoin"),
"deleteReason2": MessageLookupByLibrary.simpleMessage(
@ -581,7 +589,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Les téléspectateurs peuvent toujours prendre des captures d\'écran ou enregistrer une copie de vos photos en utilisant des outils externes"),
"disableDownloadWarningTitle":
MessageLookupByLibrary.simpleMessage("Veuillez remarquer"),
"disableLinkMessage": m14,
"disableLinkMessage": m16,
"disableTwofactor": MessageLookupByLibrary.simpleMessage(
"Désactiver la double-authentification"),
"disablingTwofactorAuthentication":
@ -602,9 +610,9 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Échec du téléchargement"),
"downloading":
MessageLookupByLibrary.simpleMessage("Téléchargement en cours..."),
"dropSupportEmail": m15,
"duplicateFileCountWithStorageSaved": m16,
"duplicateItemsGroup": m17,
"dropSupportEmail": m17,
"duplicateFileCountWithStorageSaved": m18,
"duplicateItemsGroup": m19,
"edit": MessageLookupByLibrary.simpleMessage("Éditer"),
"editLocation": MessageLookupByLibrary.simpleMessage("Edit location"),
"editLocationTagTitle":
@ -616,8 +624,8 @@ class MessageLookup extends MessageLookupByLibrary {
"Edits to location will only be seen within Ente"),
"eligible": MessageLookupByLibrary.simpleMessage("éligible"),
"email": MessageLookupByLibrary.simpleMessage("E-mail"),
"emailChangedTo": m18,
"emailNoEnteAccount": m19,
"emailChangedTo": m20,
"emailNoEnteAccount": m21,
"emailVerificationToggle": MessageLookupByLibrary.simpleMessage(
"Vérification de l\'adresse e-mail"),
"emailYourLogs":
@ -716,8 +724,8 @@ class MessageLookup extends MessageLookupByLibrary {
"fileTypes": MessageLookupByLibrary.simpleMessage("Types de fichiers"),
"fileTypesAndNames":
MessageLookupByLibrary.simpleMessage("Types et noms de fichiers"),
"filesBackedUpFromDevice": m20,
"filesBackedUpInAlbum": m21,
"filesBackedUpFromDevice": m22,
"filesBackedUpInAlbum": m23,
"filesDeleted":
MessageLookupByLibrary.simpleMessage("Fichiers supprimés"),
"flip": MessageLookupByLibrary.simpleMessage("Retourner"),
@ -727,19 +735,19 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Mot de passe oublié"),
"freeStorageClaimed":
MessageLookupByLibrary.simpleMessage("Stockage gratuit réclamé"),
"freeStorageOnReferralSuccess": m22,
"freeStorageSpace": m23,
"freeStorageOnReferralSuccess": m24,
"freeStorageSpace": m25,
"freeStorageUsable":
MessageLookupByLibrary.simpleMessage("Stockage gratuit utilisable"),
"freeTrial": MessageLookupByLibrary.simpleMessage("Essai gratuit"),
"freeTrialValidTill": m24,
"freeUpAccessPostDelete": m25,
"freeUpAmount": m26,
"freeTrialValidTill": m26,
"freeUpAccessPostDelete": m27,
"freeUpAmount": m28,
"freeUpDeviceSpace": MessageLookupByLibrary.simpleMessage(
"Libérer de l\'espace sur l\'appareil"),
"freeUpSpace":
MessageLookupByLibrary.simpleMessage("Libérer de l\'espace"),
"freeUpSpaceSaving": m27,
"freeUpSpaceSaving": m29,
"galleryMemoryLimitInfo": MessageLookupByLibrary.simpleMessage(
"Jusqu\'à 1000 souvenirs affichés dans la galerie"),
"general": MessageLookupByLibrary.simpleMessage("Général"),
@ -806,7 +814,7 @@ class MessageLookup extends MessageLookupByLibrary {
"itLooksLikeSomethingWentWrongPleaseRetryAfterSome":
MessageLookupByLibrary.simpleMessage(
"Il semble qu\'une erreur s\'est produite. Veuillez réessayer après un certain temps. Si l\'erreur persiste, veuillez contacter notre équipe d\'assistance."),
"itemCount": m29,
"itemCount": m31,
"itemsShowTheNumberOfDaysRemainingBeforePermanentDeletion":
MessageLookupByLibrary.simpleMessage(
"Les éléments montrent le nombre de jours restants avant la suppression définitive"),
@ -835,7 +843,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Limite d\'appareil"),
"linkEnabled": MessageLookupByLibrary.simpleMessage("Activé"),
"linkExpired": MessageLookupByLibrary.simpleMessage("Expiré"),
"linkExpiresOn": m30,
"linkExpiresOn": m32,
"linkExpiry":
MessageLookupByLibrary.simpleMessage("Expiration du lien"),
"linkHasExpired":
@ -884,6 +892,9 @@ class MessageLookup extends MessageLookupByLibrary {
"logout": MessageLookupByLibrary.simpleMessage("Déconnexion"),
"logsDialogBody": MessageLookupByLibrary.simpleMessage(
"Cela enverra des logs pour nous aider à déboguer votre problème. Veuillez noter que les noms de fichiers seront inclus pour aider à suivre les problèmes avec des fichiers spécifiques."),
"longPressAnEmailToVerifyEndToEndEncryption":
MessageLookupByLibrary.simpleMessage(
"Long press an email to verify end to end encryption."),
"longpressOnAnItemToViewInFullscreen":
MessageLookupByLibrary.simpleMessage(
"Appuyez longuement sur un élément pour le voir en plein écran"),
@ -901,7 +912,7 @@ class MessageLookup extends MessageLookupByLibrary {
"maps": MessageLookupByLibrary.simpleMessage("Cartes"),
"mastodon": MessageLookupByLibrary.simpleMessage("Mastodon"),
"matrix": MessageLookupByLibrary.simpleMessage("Matrix"),
"memoryCount": m31,
"memoryCount": m33,
"merchandise": MessageLookupByLibrary.simpleMessage("Marchandise"),
"mobileWebDesktop":
MessageLookupByLibrary.simpleMessage("Mobile, Web, Ordinateur"),
@ -912,12 +923,12 @@ class MessageLookup extends MessageLookupByLibrary {
"Modifiez votre requête, ou essayez de rechercher"),
"moments": MessageLookupByLibrary.simpleMessage("Souvenirs"),
"monthly": MessageLookupByLibrary.simpleMessage("Mensuel"),
"moveItem": m32,
"moveItem": m34,
"moveToAlbum":
MessageLookupByLibrary.simpleMessage("Déplacer vers l\'album"),
"moveToHiddenAlbum": MessageLookupByLibrary.simpleMessage(
"Déplacer vers un album masqué"),
"movedSuccessfullyTo": m33,
"movedSuccessfullyTo": m35,
"movedToTrash":
MessageLookupByLibrary.simpleMessage("Déplacé dans la corbeille"),
"movingFilesToAlbum": MessageLookupByLibrary.simpleMessage(
@ -981,15 +992,15 @@ class MessageLookup extends MessageLookupByLibrary {
"Le mot de passe a été modifié"),
"passwordLock":
MessageLookupByLibrary.simpleMessage("Mot de passe verrou"),
"passwordStrength": m34,
"passwordStrength": m36,
"passwordWarning": MessageLookupByLibrary.simpleMessage(
"Nous ne stockons pas ce mot de passe, donc si vous l\'oubliez, <underline>nous ne pouvons pas déchiffrer vos données</underline>"),
"paymentDetails":
MessageLookupByLibrary.simpleMessage("Détails de paiement"),
"paymentFailed":
MessageLookupByLibrary.simpleMessage("Échec du paiement"),
"paymentFailedTalkToProvider": m35,
"paymentFailedWithReason": m36,
"paymentFailedTalkToProvider": m37,
"paymentFailedWithReason": m38,
"pendingSync":
MessageLookupByLibrary.simpleMessage("Synchronisation en attente"),
"peopleUsingYourCode": MessageLookupByLibrary.simpleMessage(
@ -1012,7 +1023,7 @@ class MessageLookup extends MessageLookupByLibrary {
"pickCenterPoint": MessageLookupByLibrary.simpleMessage(
"Sélectionner le point central"),
"pinAlbum": MessageLookupByLibrary.simpleMessage("Épingler l\'album"),
"playStoreFreeTrialValidTill": m37,
"playStoreFreeTrialValidTill": m39,
"playstoreSubscription":
MessageLookupByLibrary.simpleMessage("Abonnement au PlayStore"),
"pleaseContactSupportAndWeWillBeHappyToHelp":
@ -1021,12 +1032,12 @@ class MessageLookup extends MessageLookupByLibrary {
"pleaseContactSupportIfTheProblemPersists":
MessageLookupByLibrary.simpleMessage(
"Merci de contacter l\'assistance si cette erreur persiste"),
"pleaseEmailUsAt": m38,
"pleaseEmailUsAt": m40,
"pleaseGrantPermissions": MessageLookupByLibrary.simpleMessage(
"Veuillez accorder la permission"),
"pleaseLoginAgain":
MessageLookupByLibrary.simpleMessage("Veuillez vous reconnecter"),
"pleaseSendTheLogsTo": m39,
"pleaseSendTheLogsTo": m41,
"pleaseTryAgain":
MessageLookupByLibrary.simpleMessage("Veuillez réessayer"),
"pleaseVerifyTheCodeYouHaveEntered":
@ -1062,7 +1073,7 @@ class MessageLookup extends MessageLookupByLibrary {
"rateTheApp":
MessageLookupByLibrary.simpleMessage("Évaluer l\'application"),
"rateUs": MessageLookupByLibrary.simpleMessage("Évaluez-nous"),
"rateUsOnStore": m40,
"rateUsOnStore": m42,
"recover": MessageLookupByLibrary.simpleMessage("Récupérer"),
"recoverAccount":
MessageLookupByLibrary.simpleMessage("Récupérer un compte"),
@ -1093,7 +1104,7 @@ class MessageLookup extends MessageLookupByLibrary {
"1. Donnez ce code à vos amis"),
"referralStep2": MessageLookupByLibrary.simpleMessage(
"2. Ils s\'inscrivent à une offre payante"),
"referralStep3": m41,
"referralStep3": m43,
"referrals": MessageLookupByLibrary.simpleMessage("Parrainages"),
"referralsAreCurrentlyPaused": MessageLookupByLibrary.simpleMessage(
"Les recommandations sont actuellement en pause"),
@ -1119,7 +1130,7 @@ class MessageLookup extends MessageLookupByLibrary {
"removeLink": MessageLookupByLibrary.simpleMessage("Supprimer le lien"),
"removeParticipant":
MessageLookupByLibrary.simpleMessage("Supprimer le participant"),
"removeParticipantBody": m42,
"removeParticipantBody": m44,
"removePublicLink":
MessageLookupByLibrary.simpleMessage("Supprimer le lien public"),
"removeShareItemsWarning": MessageLookupByLibrary.simpleMessage(
@ -1135,7 +1146,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Renommer le fichier"),
"renewSubscription":
MessageLookupByLibrary.simpleMessage("Renouveler labonnement"),
"renewsOn": m43,
"renewsOn": m45,
"reportABug": MessageLookupByLibrary.simpleMessage("Signaler un bug"),
"reportBug": MessageLookupByLibrary.simpleMessage("Signaler un bug"),
"resendEmail":
@ -1200,7 +1211,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Grouper les photos qui sont prises dans un certain angle d\'une photo"),
"searchPeopleEmptySection": MessageLookupByLibrary.simpleMessage(
"Invitez des gens, et vous verrez ici toutes les photos qu\'ils partagent"),
"searchResultCount": m44,
"searchResultCount": m46,
"security": MessageLookupByLibrary.simpleMessage("Sécurité"),
"selectALocation":
MessageLookupByLibrary.simpleMessage("Select a location"),
@ -1229,8 +1240,8 @@ class MessageLookup extends MessageLookupByLibrary {
"selectedItemsWillBeDeletedFromAllAlbumsAndMoved":
MessageLookupByLibrary.simpleMessage(
"Les éléments sélectionnés seront supprimés de tous les albums et déplacés dans la corbeille."),
"selectedPhotos": m45,
"selectedPhotosWithYours": m46,
"selectedPhotos": m47,
"selectedPhotosWithYours": m48,
"send": MessageLookupByLibrary.simpleMessage("Envoyer"),
"sendEmail": MessageLookupByLibrary.simpleMessage("Envoyer un e-mail"),
"sendInvite":
@ -1256,16 +1267,16 @@ class MessageLookup extends MessageLookupByLibrary {
"shareAnAlbumNow": MessageLookupByLibrary.simpleMessage(
"Partagez un album maintenant"),
"shareLink": MessageLookupByLibrary.simpleMessage("Partager le lien"),
"shareMyVerificationID": m47,
"shareMyVerificationID": m49,
"shareOnlyWithThePeopleYouWant": MessageLookupByLibrary.simpleMessage(
"Partager uniquement avec les personnes que vous voulez"),
"shareTextConfirmOthersVerificationID": m48,
"shareTextConfirmOthersVerificationID": m50,
"shareTextRecommendUsingEnte": MessageLookupByLibrary.simpleMessage(
"Téléchargez ente pour que nous puissions facilement partager des photos et des vidéos de qualité originale\n\nhttps://ente.io"),
"shareTextReferralCode": m49,
"shareTextReferralCode": m51,
"shareWithNonenteUsers": MessageLookupByLibrary.simpleMessage(
"Partager avec des utilisateurs non-ente"),
"shareWithPeopleSectionTitle": m50,
"shareWithPeopleSectionTitle": m52,
"shareYourFirstAlbum": MessageLookupByLibrary.simpleMessage(
"Partagez votre premier album"),
"sharedAlbumSectionDescription": MessageLookupByLibrary.simpleMessage(
@ -1276,7 +1287,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Nouvelles photos partagées"),
"sharedPhotoNotificationsExplanation": MessageLookupByLibrary.simpleMessage(
"Recevoir des notifications quand quelqu\'un ajoute une photo à un album partagé dont vous faites partie"),
"sharedWith": m51,
"sharedWith": m53,
"sharedWithMe":
MessageLookupByLibrary.simpleMessage("Partagés avec moi"),
"sharedWithYou":
@ -1286,11 +1297,11 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Montrer les souvenirs"),
"signUpTerms": MessageLookupByLibrary.simpleMessage(
"J\'accepte les <u-terms>conditions d\'utilisation</u-terms> et la <u-policy>politique de confidentialité</u-policy>"),
"singleFileDeleteFromDevice": m52,
"singleFileDeleteFromDevice": m54,
"singleFileDeleteHighlight": MessageLookupByLibrary.simpleMessage(
"Elle sera supprimée de tous les albums."),
"singleFileInBothLocalAndRemote": m53,
"singleFileInRemoteOnly": m54,
"singleFileInBothLocalAndRemote": m55,
"singleFileInRemoteOnly": m56,
"skip": MessageLookupByLibrary.simpleMessage("Ignorer"),
"social": MessageLookupByLibrary.simpleMessage("Réseaux Sociaux"),
"someItemsAreInBothEnteAndYourDevice":
@ -1330,14 +1341,14 @@ class MessageLookup extends MessageLookupByLibrary {
"storage": MessageLookupByLibrary.simpleMessage("Stockage"),
"storageBreakupFamily": MessageLookupByLibrary.simpleMessage("Famille"),
"storageBreakupYou": MessageLookupByLibrary.simpleMessage("Vous"),
"storageInGB": m55,
"storageInGB": m57,
"storageLimitExceeded":
MessageLookupByLibrary.simpleMessage("Limite de stockage atteinte"),
"storageUsageInfo": m56,
"storageUsageInfo": m58,
"strongStrength":
MessageLookupByLibrary.simpleMessage("Securité forte"),
"subAlreadyLinkedErrMessage": m57,
"subWillBeCancelledOn": m58,
"subAlreadyLinkedErrMessage": m59,
"subWillBeCancelledOn": m60,
"subscribe": MessageLookupByLibrary.simpleMessage("S\'abonner"),
"subscribeToEnableSharing": MessageLookupByLibrary.simpleMessage(
"Il semble que votre abonnement ait expiré. Veuillez vous abonner pour activer le partage."),
@ -1354,7 +1365,7 @@ class MessageLookup extends MessageLookupByLibrary {
"suggestFeatures": MessageLookupByLibrary.simpleMessage(
"Suggérer des fonctionnalités"),
"support": MessageLookupByLibrary.simpleMessage("Support"),
"syncProgress": m59,
"syncProgress": m61,
"syncStopped":
MessageLookupByLibrary.simpleMessage("Synchronisation arrêtée ?"),
"syncing": MessageLookupByLibrary.simpleMessage(
@ -1383,7 +1394,7 @@ class MessageLookup extends MessageLookupByLibrary {
"theseItemsWillBeDeletedFromYourDevice":
MessageLookupByLibrary.simpleMessage(
"Ces éléments seront supprimés de votre appareil."),
"theyAlsoGetXGb": m60,
"theyAlsoGetXGb": m62,
"theyWillBeDeletedFromAllAlbums": MessageLookupByLibrary.simpleMessage(
"Ils seront supprimés de tous les albums."),
"thisActionCannotBeUndone": MessageLookupByLibrary.simpleMessage(
@ -1399,7 +1410,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Cette adresse mail est déjà utilisé"),
"thisImageHasNoExifData": MessageLookupByLibrary.simpleMessage(
"Cette image n\'a pas de données exif"),
"thisIsPersonVerificationId": m61,
"thisIsPersonVerificationId": m63,
"thisIsYourVerificationId": MessageLookupByLibrary.simpleMessage(
"Ceci est votre ID de vérification"),
"thisWillLogYouOutOfTheFollowingDevice":
@ -1415,7 +1426,7 @@ class MessageLookup extends MessageLookupByLibrary {
"total": MessageLookupByLibrary.simpleMessage("total"),
"totalSize": MessageLookupByLibrary.simpleMessage("Taille totale"),
"trash": MessageLookupByLibrary.simpleMessage("Corbeille"),
"trashDaysLeft": m62,
"trashDaysLeft": m64,
"tryAgain": MessageLookupByLibrary.simpleMessage("Réessayer"),
"turnOnBackupForAutoUpload": MessageLookupByLibrary.simpleMessage(
"Activez la sauvegarde pour télécharger automatiquement les fichiers ajoutés à ce dossier de l\'appareil sur ente."),
@ -1473,7 +1484,7 @@ class MessageLookup extends MessageLookupByLibrary {
"useSelectedPhoto": MessageLookupByLibrary.simpleMessage(
"Utiliser la photo sélectionnée"),
"usedSpace": MessageLookupByLibrary.simpleMessage("Mémoire utilisée"),
"validTill": m63,
"validTill": m65,
"verificationFailedPleaseTryAgain":
MessageLookupByLibrary.simpleMessage(
"La vérification a échouée, veuillez réessayer"),
@ -1482,7 +1493,7 @@ class MessageLookup extends MessageLookupByLibrary {
"verify": MessageLookupByLibrary.simpleMessage("Vérifier"),
"verifyEmail":
MessageLookupByLibrary.simpleMessage("Vérifier l\'email"),
"verifyEmailID": m64,
"verifyEmailID": m66,
"verifyIDLabel": MessageLookupByLibrary.simpleMessage("Vérifier"),
"verifyPassword":
MessageLookupByLibrary.simpleMessage("Vérifier le mot de passe"),
@ -1511,11 +1522,11 @@ class MessageLookup extends MessageLookupByLibrary {
"weDontSupportEditingPhotosAndAlbumsThatYouDont":
MessageLookupByLibrary.simpleMessage(
"Nous ne prenons pas en charge l\'édition des photos et des albums que vous ne possédez pas encore"),
"weHaveSendEmailTo": m65,
"weHaveSendEmailTo": m67,
"weakStrength": MessageLookupByLibrary.simpleMessage("Securité Faible"),
"welcomeBack": MessageLookupByLibrary.simpleMessage("Bienvenue !"),
"yearly": MessageLookupByLibrary.simpleMessage("Annuel"),
"yearsAgo": m66,
"yearsAgo": m68,
"yes": MessageLookupByLibrary.simpleMessage("Oui"),
"yesCancel": MessageLookupByLibrary.simpleMessage("Oui, annuler"),
"yesConvertToViewer": MessageLookupByLibrary.simpleMessage(
@ -1546,7 +1557,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Vous ne pouvez pas partager avec vous-même"),
"youDontHaveAnyArchivedItems": MessageLookupByLibrary.simpleMessage(
"Vous n\'avez aucun élément archivé."),
"youHaveSuccessfullyFreedUp": m67,
"youHaveSuccessfullyFreedUp": m69,
"yourAccountHasBeenDeleted":
MessageLookupByLibrary.simpleMessage("Votre compte a été supprimé"),
"yourMap": MessageLookupByLibrary.simpleMessage("Votre carte"),

View file

@ -21,24 +21,30 @@ class MessageLookup extends MessageLookupByLibrary {
String get localeName => 'it';
static String m0(count) =>
"${Intl.plural(count, zero: 'Add collaborator', one: 'Add collaborator', other: 'Add collaborators')}";
static String m2(count) =>
"${Intl.plural(count, one: 'Aggiungi elemento', other: 'Aggiungi elementi')}";
static String m2(emailOrName) => "Aggiunto da ${emailOrName}";
static String m1(count) =>
"${Intl.plural(count, zero: 'Add viewer', one: 'Add viewer', other: 'Add viewers')}";
static String m3(albumName) => "Aggiunto con successo su ${albumName}";
static String m4(emailOrName) => "Aggiunto da ${emailOrName}";
static String m4(count) =>
static String m5(albumName) => "Aggiunto con successo su ${albumName}";
static String m6(count) =>
"${Intl.plural(count, zero: 'Nessun partecipante', one: '1 Partecipante', other: '${count} Partecipanti')}";
static String m5(versionValue) => "Versione: ${versionValue}";
static String m7(versionValue) => "Versione: ${versionValue}";
static String m6(paymentProvider) =>
static String m8(paymentProvider) =>
"Annulla prima il tuo abbonamento esistente da ${paymentProvider}";
static String m7(user) =>
static String m9(user) =>
"${user} non sarà più in grado di aggiungere altre foto a questo album\n\nSarà ancora in grado di rimuovere le foto esistenti aggiunte da lui o lei";
static String m8(isFamilyMember, storageAmountInGb) =>
static String m10(isFamilyMember, storageAmountInGb) =>
"${Intl.select(isFamilyMember, {
'true':
'Il tuo piano famiglia ha già richiesto ${storageAmountInGb} GB finora',
@ -46,158 +52,158 @@ class MessageLookup extends MessageLookupByLibrary {
'other': 'Hai già richiesto ${storageAmountInGb} GB finora!',
})}";
static String m9(albumName) => "Link collaborativo creato per ${albumName}";
static String m11(albumName) => "Link collaborativo creato per ${albumName}";
static String m10(familyAdminEmail) =>
static String m12(familyAdminEmail) =>
"Contatta <green>${familyAdminEmail}</green> per gestire il tuo abbonamento";
static String m11(provider) =>
static String m13(provider) =>
"Scrivi all\'indirizzo support@ente.io per gestire il tuo abbonamento ${provider}.";
static String m12(count) =>
static String m14(count) =>
"${Intl.plural(count, one: 'Elimina ${count} elemento', other: 'Elimina ${count} elementi')}";
static String m13(currentlyDeleting, totalCount) =>
static String m15(currentlyDeleting, totalCount) =>
"Eliminazione di ${currentlyDeleting} / ${totalCount}";
static String m14(albumName) =>
static String m16(albumName) =>
"Questo rimuoverà il link pubblico per accedere a \"${albumName}\".";
static String m15(supportEmail) =>
static String m17(supportEmail) =>
"Per favore invia un\'email a ${supportEmail} dall\'indirizzo email con cui ti sei registrato";
static String m16(count, storageSaved) =>
static String m18(count, storageSaved) =>
"Hai ripulito ${Intl.plural(count, one: '${count} doppione', other: '${count} doppioni')}, salvando (${storageSaved}!)";
static String m17(count, formattedSize) =>
static String m19(count, formattedSize) =>
"${count} file, ${formattedSize} l\'uno";
static String m18(newEmail) => "Email cambiata in ${newEmail}";
static String m20(newEmail) => "Email cambiata in ${newEmail}";
static String m19(email) =>
static String m21(email) =>
"${email} non ha un account su ente.\n\nInvia un invito per condividere foto.";
static String m20(count, formattedNumber) =>
static String m22(count, formattedNumber) =>
"${Intl.plural(count, one: '1 file', other: '${formattedNumber} file')} di quest\'album sono stati salvati in modo sicuro";
static String m21(count, formattedNumber) =>
static String m23(count, formattedNumber) =>
"${Intl.plural(count, one: '1 file', other: '${formattedNumber} file')} di quest\'album sono stati salvati in modo sicuro";
static String m22(storageAmountInGB) =>
static String m24(storageAmountInGB) =>
"${storageAmountInGB} GB ogni volta che qualcuno si iscrive a un piano a pagamento e applica il tuo codice";
static String m23(freeAmount, storageUnit) =>
static String m25(freeAmount, storageUnit) =>
"${freeAmount} ${storageUnit} liberi";
static String m24(endDate) => "La prova gratuita termina il ${endDate}";
static String m26(endDate) => "La prova gratuita termina il ${endDate}";
static String m25(count) =>
static String m27(count) =>
"Puoi ancora accedere a ${Intl.plural(count, one: '', other: 'loro')} su ente finché hai un abbonamento attivo";
static String m26(sizeInMBorGB) => "Libera ${sizeInMBorGB}";
static String m28(sizeInMBorGB) => "Libera ${sizeInMBorGB}";
static String m27(count, formattedSize) =>
static String m29(count, formattedSize) =>
"${Intl.plural(count, one: 'Può essere cancellata per liberare ${formattedSize}', other: 'Possono essere cancellati per liberare ${formattedSize}')}";
static String m29(count) =>
static String m31(count) =>
"${Intl.plural(count, one: '${count} elemento', other: '${count} elementi')}";
static String m30(expiryTime) => "Il link scadrà il ${expiryTime}";
static String m32(expiryTime) => "Il link scadrà il ${expiryTime}";
static String m31(count, formattedCount) =>
static String m33(count, formattedCount) =>
"${Intl.plural(count, one: '${formattedCount} ricordo', other: '${formattedCount} ricordi')}";
static String m32(count) =>
static String m34(count) =>
"${Intl.plural(count, one: 'Sposta elemento', other: 'Sposta elementi')}";
static String m33(albumName) => "Spostato con successo su ${albumName}";
static String m35(albumName) => "Spostato con successo su ${albumName}";
static String m34(passwordStrengthValue) =>
static String m36(passwordStrengthValue) =>
"Sicurezza password: ${passwordStrengthValue}";
static String m35(providerName) =>
static String m37(providerName) =>
"Si prega di parlare con il supporto di ${providerName} se ti è stato addebitato qualcosa";
static String m36(reason) =>
static String m38(reason) =>
"Purtroppo il tuo pagamento non è riuscito a causa di ${reason}";
static String m37(endDate) =>
static String m39(endDate) =>
"Prova gratuita valida fino al ${endDate}.\nPuoi scegliere un piano a pagamento in seguito.";
static String m38(toEmail) => "Per favore invia un\'email a ${toEmail}";
static String m40(toEmail) => "Per favore invia un\'email a ${toEmail}";
static String m39(toEmail) => "Invia i log a \n${toEmail}";
static String m41(toEmail) => "Invia i log a \n${toEmail}";
static String m40(storeName) => "Valutaci su ${storeName}";
static String m42(storeName) => "Valutaci su ${storeName}";
static String m41(storageInGB) =>
static String m43(storageInGB) =>
"3. Ottenete entrambi ${storageInGB} GB* gratis";
static String m42(userEmail) =>
static String m44(userEmail) =>
"${userEmail} verrà rimosso da questo album condiviso\n\nQualsiasi foto aggiunta dall\'utente verrà rimossa dall\'album";
static String m43(endDate) => "Si rinnova il ${endDate}";
static String m45(endDate) => "Si rinnova il ${endDate}";
static String m45(count) => "${count} selezionati";
static String m47(count) => "${count} selezionati";
static String m46(count, yourCount) =>
static String m48(count, yourCount) =>
"${count} selezionato (${yourCount} tuoi)";
static String m47(verificationID) =>
static String m49(verificationID) =>
"Ecco il mio ID di verifica: ${verificationID} per ente.io.";
static String m48(verificationID) =>
static String m50(verificationID) =>
"Hey, puoi confermare che questo è il tuo ID di verifica: ${verificationID} su ente.io";
static String m49(referralCode, referralStorageInGB) =>
static String m51(referralCode, referralStorageInGB) =>
"ente referral code: ${referralCode} \n\nApplicalo in Impostazioni → Generale → Referral per ottenere ${referralStorageInGB} GB gratis dopo la registrazione di un piano a pagamento\n\nhttps://ente.io";
static String m50(numberOfPeople) =>
static String m52(numberOfPeople) =>
"${Intl.plural(numberOfPeople, zero: 'Condividi con persone specifiche', one: 'Condividi con una persona', other: 'Condividi con ${numberOfPeople} persone')}";
static String m51(emailIDs) => "Condiviso con ${emailIDs}";
static String m53(emailIDs) => "Condiviso con ${emailIDs}";
static String m52(fileType) =>
static String m54(fileType) =>
"Questo ${fileType} verrà eliminato dal tuo dispositivo.";
static String m53(fileType) =>
static String m55(fileType) =>
"Questo ${fileType} è sia su ente che sul tuo dispositivo.";
static String m54(fileType) => "Questo ${fileType} verrà eliminato su ente.";
static String m56(fileType) => "Questo ${fileType} verrà eliminato su ente.";
static String m55(storageAmountInGB) => "${storageAmountInGB} GB";
static String m57(storageAmountInGB) => "${storageAmountInGB} GB";
static String m56(
static String m58(
usedAmount, usedStorageUnit, totalAmount, totalStorageUnit) =>
"${usedAmount} ${usedStorageUnit} di ${totalAmount} ${totalStorageUnit} utilizzati";
static String m57(id) =>
static String m59(id) =>
"Il tuo ${id} è già collegato ad un altro account ente.\nSe desideri utilizzare il tuo ${id} con questo account, contatta il nostro supporto\'\'";
static String m58(endDate) => "L\'abbonamento verrà cancellato il ${endDate}";
static String m60(endDate) => "L\'abbonamento verrà cancellato il ${endDate}";
static String m59(completed, total) =>
static String m61(completed, total) =>
"${completed}/${total} ricordi conservati";
static String m60(storageAmountInGB) =>
static String m62(storageAmountInGB) =>
"Anche loro riceveranno ${storageAmountInGB} GB";
static String m61(email) => "Questo è l\'ID di verifica di ${email}";
static String m63(email) => "Questo è l\'ID di verifica di ${email}";
static String m62(count) =>
static String m64(count) =>
"${Intl.plural(count, zero: '', one: '1 giorno', other: '${count} giorni')}";
static String m63(endDate) => "Valido fino al ${endDate}";
static String m65(endDate) => "Valido fino al ${endDate}";
static String m64(email) => "Verifica ${email}";
static String m66(email) => "Verifica ${email}";
static String m65(email) =>
static String m67(email) =>
"Abbiamo inviato una mail a <green>${email}</green>";
static String m66(count) =>
static String m68(count) =>
"${Intl.plural(count, one: '${count} anno fa', other: '${count} anni fa')}";
static String m67(storageSaved) =>
static String m69(storageSaved) =>
"Hai liberato con successo ${storageSaved}!";
final messages = _notInlinedMessages(_notInlinedMessages);
@ -216,9 +222,10 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Aggiungi una nuova email"),
"addCollaborator":
MessageLookupByLibrary.simpleMessage("Aggiungi collaboratore"),
"addCollaborators": m0,
"addFromDevice":
MessageLookupByLibrary.simpleMessage("Aggiungi dal dispositivo"),
"addItem": m0,
"addItem": m2,
"addLocation": MessageLookupByLibrary.simpleMessage("Aggiungi luogo"),
"addLocationButton": MessageLookupByLibrary.simpleMessage("Aggiungi"),
"addMore": MessageLookupByLibrary.simpleMessage("Aggiungi altri"),
@ -235,9 +242,10 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Aggiungi ad album nascosto"),
"addViewer":
MessageLookupByLibrary.simpleMessage("Aggiungi in sola lettura"),
"addViewers": m1,
"addedAs": MessageLookupByLibrary.simpleMessage("Aggiunto come"),
"addedBy": m2,
"addedSuccessfullyTo": m3,
"addedBy": m4,
"addedSuccessfullyTo": m5,
"addingToFavorites":
MessageLookupByLibrary.simpleMessage("Aggiunto ai preferiti..."),
"advanced": MessageLookupByLibrary.simpleMessage("Avanzate"),
@ -249,7 +257,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Dopo una settimana"),
"after1Year": MessageLookupByLibrary.simpleMessage("Dopo un anno"),
"albumOwner": MessageLookupByLibrary.simpleMessage("Proprietario"),
"albumParticipantsCount": m4,
"albumParticipantsCount": m6,
"albumTitle": MessageLookupByLibrary.simpleMessage("Titolo album"),
"albumUpdated":
MessageLookupByLibrary.simpleMessage("Album aggiornato"),
@ -286,7 +294,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Android, iOS, Web, Desktop"),
"androidSignInTitle":
MessageLookupByLibrary.simpleMessage("Autenticazione necessaria"),
"appVersion": m5,
"appVersion": m7,
"appleId": MessageLookupByLibrary.simpleMessage("Apple ID"),
"apply": MessageLookupByLibrary.simpleMessage("Applica"),
"applyCodeTitle":
@ -370,10 +378,10 @@ class MessageLookup extends MessageLookupByLibrary {
"canOnlyRemoveFilesOwnedByYou": MessageLookupByLibrary.simpleMessage(
"Puoi rimuovere solo i file di tua proprietà"),
"cancel": MessageLookupByLibrary.simpleMessage("Annulla"),
"cancelOtherSubscription": m6,
"cancelOtherSubscription": m8,
"cancelSubscription":
MessageLookupByLibrary.simpleMessage("Annulla abbonamento"),
"cannotAddMorePhotosAfterBecomingViewer": m7,
"cannotAddMorePhotosAfterBecomingViewer": m9,
"cannotDeleteSharedFiles": MessageLookupByLibrary.simpleMessage(
"Impossibile eliminare i file condivisi"),
"centerPoint": MessageLookupByLibrary.simpleMessage("Punto centrale"),
@ -396,7 +404,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Richiedi spazio gratuito"),
"claimMore": MessageLookupByLibrary.simpleMessage("Richiedine di più!"),
"claimed": MessageLookupByLibrary.simpleMessage("Riscattato"),
"claimedStorageSoFar": m8,
"claimedStorageSoFar": m10,
"clearCaches": MessageLookupByLibrary.simpleMessage("Svuota cache"),
"click": MessageLookupByLibrary.simpleMessage("• Clic"),
"clickOnTheOverflowMenu":
@ -416,7 +424,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Crea un link per consentire alle persone di aggiungere e visualizzare foto nel tuo album condiviso senza bisogno di un\'applicazione o di un account ente. Ottimo per raccogliere foto di un evento."),
"collaborativeLink":
MessageLookupByLibrary.simpleMessage("Link collaborativo"),
"collaborativeLinkCreatedFor": m9,
"collaborativeLinkCreatedFor": m11,
"collaborator": MessageLookupByLibrary.simpleMessage("Collaboratore"),
"collaboratorsCanAddPhotosAndVideosToTheSharedAlbum":
MessageLookupByLibrary.simpleMessage(
@ -444,10 +452,10 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Conferma chiave di recupero"),
"confirmYourRecoveryKey": MessageLookupByLibrary.simpleMessage(
"Conferma la tua chiave di recupero"),
"contactFamilyAdmin": m10,
"contactFamilyAdmin": m12,
"contactSupport":
MessageLookupByLibrary.simpleMessage("Contatta il supporto"),
"contactToManageSubscription": m11,
"contactToManageSubscription": m13,
"contacts": MessageLookupByLibrary.simpleMessage("Contacts"),
"continueLabel": MessageLookupByLibrary.simpleMessage("Continua"),
"continueOnFreeTrial":
@ -523,11 +531,11 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Elimina dal dispositivo"),
"deleteFromEnte":
MessageLookupByLibrary.simpleMessage("Elimina da ente"),
"deleteItemCount": m12,
"deleteItemCount": m14,
"deleteLocation":
MessageLookupByLibrary.simpleMessage("Elimina posizione"),
"deletePhotos": MessageLookupByLibrary.simpleMessage("Elimina foto"),
"deleteProgress": m13,
"deleteProgress": m15,
"deleteReason1": MessageLookupByLibrary.simpleMessage(
"Manca una caratteristica chiave di cui ho bisogno"),
"deleteReason2": MessageLookupByLibrary.simpleMessage(
@ -561,7 +569,7 @@ class MessageLookup extends MessageLookupByLibrary {
"I visualizzatori possono scattare screenshot o salvare una copia delle foto utilizzando strumenti esterni"),
"disableDownloadWarningTitle":
MessageLookupByLibrary.simpleMessage("Nota bene"),
"disableLinkMessage": m14,
"disableLinkMessage": m16,
"disableTwofactor": MessageLookupByLibrary.simpleMessage(
"Disabilita autenticazione a due fattori"),
"disablingTwofactorAuthentication":
@ -582,9 +590,9 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Scaricamento fallito"),
"downloading":
MessageLookupByLibrary.simpleMessage("Scaricamento in corso..."),
"dropSupportEmail": m15,
"duplicateFileCountWithStorageSaved": m16,
"duplicateItemsGroup": m17,
"dropSupportEmail": m17,
"duplicateFileCountWithStorageSaved": m18,
"duplicateItemsGroup": m19,
"edit": MessageLookupByLibrary.simpleMessage("Modifica"),
"editLocation": MessageLookupByLibrary.simpleMessage("Edit location"),
"editLocationTagTitle":
@ -595,8 +603,8 @@ class MessageLookup extends MessageLookupByLibrary {
"Edits to location will only be seen within Ente"),
"eligible": MessageLookupByLibrary.simpleMessage("idoneo"),
"email": MessageLookupByLibrary.simpleMessage("Email"),
"emailChangedTo": m18,
"emailNoEnteAccount": m19,
"emailChangedTo": m20,
"emailNoEnteAccount": m21,
"emailVerificationToggle":
MessageLookupByLibrary.simpleMessage("Verifica Email"),
"emailYourLogs": MessageLookupByLibrary.simpleMessage(
@ -689,8 +697,8 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Aggiungi descrizione..."),
"fileSavedToGallery":
MessageLookupByLibrary.simpleMessage("File salvato nella galleria"),
"filesBackedUpFromDevice": m20,
"filesBackedUpInAlbum": m21,
"filesBackedUpFromDevice": m22,
"filesBackedUpInAlbum": m23,
"filesDeleted": MessageLookupByLibrary.simpleMessage("File eliminati"),
"flip": MessageLookupByLibrary.simpleMessage("Capovolgi"),
"forYourMemories":
@ -699,18 +707,18 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Password dimenticata"),
"freeStorageClaimed":
MessageLookupByLibrary.simpleMessage("Spazio gratuito richiesto"),
"freeStorageOnReferralSuccess": m22,
"freeStorageSpace": m23,
"freeStorageOnReferralSuccess": m24,
"freeStorageSpace": m25,
"freeStorageUsable":
MessageLookupByLibrary.simpleMessage("Spazio libero utilizzabile"),
"freeTrial": MessageLookupByLibrary.simpleMessage("Prova gratuita"),
"freeTrialValidTill": m24,
"freeUpAccessPostDelete": m25,
"freeUpAmount": m26,
"freeTrialValidTill": m26,
"freeUpAccessPostDelete": m27,
"freeUpAmount": m28,
"freeUpDeviceSpace":
MessageLookupByLibrary.simpleMessage("Libera spazio"),
"freeUpSpace": MessageLookupByLibrary.simpleMessage("Libera spazio"),
"freeUpSpaceSaving": m27,
"freeUpSpaceSaving": m29,
"galleryMemoryLimitInfo": MessageLookupByLibrary.simpleMessage(
"Fino a 1000 ricordi mostrati nella galleria"),
"general": MessageLookupByLibrary.simpleMessage("Generali"),
@ -775,7 +783,7 @@ class MessageLookup extends MessageLookupByLibrary {
"itLooksLikeSomethingWentWrongPleaseRetryAfterSome":
MessageLookupByLibrary.simpleMessage(
"Sembra che qualcosa sia andato storto. Riprova tra un po\'. Se l\'errore persiste, contatta il nostro team di supporto."),
"itemCount": m29,
"itemCount": m31,
"itemsShowTheNumberOfDaysRemainingBeforePermanentDeletion":
MessageLookupByLibrary.simpleMessage(
"Gli elementi mostrano il numero di giorni rimanenti prima della cancellazione permanente"),
@ -804,7 +812,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Limite dei dispositivi"),
"linkEnabled": MessageLookupByLibrary.simpleMessage("Attivato"),
"linkExpired": MessageLookupByLibrary.simpleMessage("Scaduto"),
"linkExpiresOn": m30,
"linkExpiresOn": m32,
"linkExpiry": MessageLookupByLibrary.simpleMessage("Scadenza del link"),
"linkHasExpired":
MessageLookupByLibrary.simpleMessage("Il link è scaduto"),
@ -852,6 +860,9 @@ class MessageLookup extends MessageLookupByLibrary {
"logout": MessageLookupByLibrary.simpleMessage("Disconnetti"),
"logsDialogBody": MessageLookupByLibrary.simpleMessage(
"Invia i log per aiutarci a risolvere il tuo problema. Si prega di notare che i nomi dei file saranno inclusi per aiutare a tenere traccia di problemi con file specifici."),
"longPressAnEmailToVerifyEndToEndEncryption":
MessageLookupByLibrary.simpleMessage(
"Long press an email to verify end to end encryption."),
"longpressOnAnItemToViewInFullscreen":
MessageLookupByLibrary.simpleMessage(
"Premi a lungo su un elemento per visualizzarlo a schermo intero"),
@ -870,7 +881,7 @@ class MessageLookup extends MessageLookupByLibrary {
"maps": MessageLookupByLibrary.simpleMessage("Mappe"),
"mastodon": MessageLookupByLibrary.simpleMessage("Mastodon"),
"matrix": MessageLookupByLibrary.simpleMessage("Matrix"),
"memoryCount": m31,
"memoryCount": m33,
"merchandise": MessageLookupByLibrary.simpleMessage("Merchandise"),
"mobileWebDesktop":
MessageLookupByLibrary.simpleMessage("Mobile, Web, Desktop"),
@ -879,12 +890,12 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(
"Modify your query, or try searching for"),
"monthly": MessageLookupByLibrary.simpleMessage("Mensile"),
"moveItem": m32,
"moveItem": m34,
"moveToAlbum":
MessageLookupByLibrary.simpleMessage("Sposta nell\'album"),
"moveToHiddenAlbum":
MessageLookupByLibrary.simpleMessage("Sposta in album nascosto"),
"movedSuccessfullyTo": m33,
"movedSuccessfullyTo": m35,
"movedToTrash":
MessageLookupByLibrary.simpleMessage("Spostato nel cestino"),
"movingFilesToAlbum": MessageLookupByLibrary.simpleMessage(
@ -948,15 +959,15 @@ class MessageLookup extends MessageLookupByLibrary {
"Password modificata con successo"),
"passwordLock":
MessageLookupByLibrary.simpleMessage("Blocco con password"),
"passwordStrength": m34,
"passwordStrength": m36,
"passwordWarning": MessageLookupByLibrary.simpleMessage(
"Noi non memorizziamo la tua password, quindi se te la dimentichi, <underline>non possiamo decriptare i tuoi dati</underline>"),
"paymentDetails":
MessageLookupByLibrary.simpleMessage("Dettagli di Pagamento"),
"paymentFailed":
MessageLookupByLibrary.simpleMessage("Pagamento non riuscito"),
"paymentFailedTalkToProvider": m35,
"paymentFailedWithReason": m36,
"paymentFailedTalkToProvider": m37,
"paymentFailedWithReason": m38,
"pendingSync":
MessageLookupByLibrary.simpleMessage("Sincronizzazione in sospeso"),
"peopleUsingYourCode": MessageLookupByLibrary.simpleMessage(
@ -976,7 +987,7 @@ class MessageLookup extends MessageLookupByLibrary {
"pickCenterPoint": MessageLookupByLibrary.simpleMessage(
"Selezionare il punto centrale"),
"pinAlbum": MessageLookupByLibrary.simpleMessage("Fissa l\'album"),
"playStoreFreeTrialValidTill": m37,
"playStoreFreeTrialValidTill": m39,
"playstoreSubscription":
MessageLookupByLibrary.simpleMessage("Abbonamento su PlayStore"),
"pleaseContactSupportAndWeWillBeHappyToHelp":
@ -985,12 +996,12 @@ class MessageLookup extends MessageLookupByLibrary {
"pleaseContactSupportIfTheProblemPersists":
MessageLookupByLibrary.simpleMessage(
"Riprova. Se il problema persiste, ti invitiamo a contattare l\'assistenza"),
"pleaseEmailUsAt": m38,
"pleaseEmailUsAt": m40,
"pleaseGrantPermissions":
MessageLookupByLibrary.simpleMessage("Concedi i permessi"),
"pleaseLoginAgain": MessageLookupByLibrary.simpleMessage(
"Effettua nuovamente l\'accesso"),
"pleaseSendTheLogsTo": m39,
"pleaseSendTheLogsTo": m41,
"pleaseTryAgain": MessageLookupByLibrary.simpleMessage("Riprova"),
"pleaseVerifyTheCodeYouHaveEntered":
MessageLookupByLibrary.simpleMessage(
@ -1024,7 +1035,7 @@ class MessageLookup extends MessageLookupByLibrary {
"raiseTicket": MessageLookupByLibrary.simpleMessage("Invia ticket"),
"rateTheApp": MessageLookupByLibrary.simpleMessage("Valuta l\'app"),
"rateUs": MessageLookupByLibrary.simpleMessage("Lascia una recensione"),
"rateUsOnStore": m40,
"rateUsOnStore": m42,
"recover": MessageLookupByLibrary.simpleMessage("Recupera"),
"recoverAccount":
MessageLookupByLibrary.simpleMessage("Recupera account"),
@ -1056,7 +1067,7 @@ class MessageLookup extends MessageLookupByLibrary {
"1. Condividi questo codice con i tuoi amici"),
"referralStep2": MessageLookupByLibrary.simpleMessage(
"2. Si iscrivono per un piano a pagamento"),
"referralStep3": m41,
"referralStep3": m43,
"referrals": MessageLookupByLibrary.simpleMessage("Invita un Amico"),
"referralsAreCurrentlyPaused": MessageLookupByLibrary.simpleMessage(
"I referral code sono attualmente in pausa"),
@ -1080,7 +1091,7 @@ class MessageLookup extends MessageLookupByLibrary {
"removeLink": MessageLookupByLibrary.simpleMessage("Elimina link"),
"removeParticipant":
MessageLookupByLibrary.simpleMessage("Rimuovi partecipante"),
"removeParticipantBody": m42,
"removeParticipantBody": m44,
"removePublicLink":
MessageLookupByLibrary.simpleMessage("Rimuovi link pubblico"),
"removeShareItemsWarning": MessageLookupByLibrary.simpleMessage(
@ -1094,7 +1105,7 @@ class MessageLookup extends MessageLookupByLibrary {
"renameFile": MessageLookupByLibrary.simpleMessage("Rinomina file"),
"renewSubscription":
MessageLookupByLibrary.simpleMessage("Rinnova abbonamento"),
"renewsOn": m43,
"renewsOn": m45,
"reportABug": MessageLookupByLibrary.simpleMessage("Segnala un bug"),
"reportBug": MessageLookupByLibrary.simpleMessage("Segnala un bug"),
"resendEmail": MessageLookupByLibrary.simpleMessage("Rinvia email"),
@ -1159,8 +1170,8 @@ class MessageLookup extends MessageLookupByLibrary {
"selectedItemsWillBeDeletedFromAllAlbumsAndMoved":
MessageLookupByLibrary.simpleMessage(
"Gli elementi selezionati verranno eliminati da tutti gli album e spostati nel cestino."),
"selectedPhotos": m45,
"selectedPhotosWithYours": m46,
"selectedPhotos": m47,
"selectedPhotosWithYours": m48,
"send": MessageLookupByLibrary.simpleMessage("Invia"),
"sendEmail": MessageLookupByLibrary.simpleMessage("Invia email"),
"sendInvite": MessageLookupByLibrary.simpleMessage("Invita"),
@ -1184,16 +1195,16 @@ class MessageLookup extends MessageLookupByLibrary {
"shareAnAlbumNow":
MessageLookupByLibrary.simpleMessage("Condividi un album"),
"shareLink": MessageLookupByLibrary.simpleMessage("Condividi link"),
"shareMyVerificationID": m47,
"shareMyVerificationID": m49,
"shareOnlyWithThePeopleYouWant": MessageLookupByLibrary.simpleMessage(
"Condividi solo con le persone che vuoi"),
"shareTextConfirmOthersVerificationID": m48,
"shareTextConfirmOthersVerificationID": m50,
"shareTextRecommendUsingEnte": MessageLookupByLibrary.simpleMessage(
"Scarica ente in modo da poter facilmente condividere foto e video senza perdita di qualità\n\nhttps://ente.io"),
"shareTextReferralCode": m49,
"shareTextReferralCode": m51,
"shareWithNonenteUsers": MessageLookupByLibrary.simpleMessage(
"Condividi con utenti che non hanno un account ente"),
"shareWithPeopleSectionTitle": m50,
"shareWithPeopleSectionTitle": m52,
"shareYourFirstAlbum": MessageLookupByLibrary.simpleMessage(
"Condividi il tuo primo album"),
"sharedAlbumSectionDescription": MessageLookupByLibrary.simpleMessage(
@ -1204,7 +1215,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Nuove foto condivise"),
"sharedPhotoNotificationsExplanation": MessageLookupByLibrary.simpleMessage(
"Ricevi notifiche quando qualcuno aggiunge una foto a un album condiviso, di cui fai parte"),
"sharedWith": m51,
"sharedWith": m53,
"sharedWithMe":
MessageLookupByLibrary.simpleMessage("Condivisi con me"),
"sharedWithYou":
@ -1214,11 +1225,11 @@ class MessageLookup extends MessageLookupByLibrary {
"showMemories": MessageLookupByLibrary.simpleMessage("Mostra ricordi"),
"signUpTerms": MessageLookupByLibrary.simpleMessage(
"Accetto i <u-terms>termini di servizio</u-terms> e la <u-policy>politica sulla privacy</u-policy>"),
"singleFileDeleteFromDevice": m52,
"singleFileDeleteFromDevice": m54,
"singleFileDeleteHighlight": MessageLookupByLibrary.simpleMessage(
"Verrà eliminato da tutti gli album."),
"singleFileInBothLocalAndRemote": m53,
"singleFileInRemoteOnly": m54,
"singleFileInBothLocalAndRemote": m55,
"singleFileInRemoteOnly": m56,
"skip": MessageLookupByLibrary.simpleMessage("Salta"),
"social": MessageLookupByLibrary.simpleMessage("Social"),
"someItemsAreInBothEnteAndYourDevice":
@ -1259,13 +1270,13 @@ class MessageLookup extends MessageLookupByLibrary {
"storageBreakupFamily":
MessageLookupByLibrary.simpleMessage("Famiglia"),
"storageBreakupYou": MessageLookupByLibrary.simpleMessage("Tu"),
"storageInGB": m55,
"storageInGB": m57,
"storageLimitExceeded": MessageLookupByLibrary.simpleMessage(
"Limite d\'archiviazione superato"),
"storageUsageInfo": m56,
"storageUsageInfo": m58,
"strongStrength": MessageLookupByLibrary.simpleMessage("Forte"),
"subAlreadyLinkedErrMessage": m57,
"subWillBeCancelledOn": m58,
"subAlreadyLinkedErrMessage": m59,
"subWillBeCancelledOn": m60,
"subscribe": MessageLookupByLibrary.simpleMessage("Iscriviti"),
"subscribeToEnableSharing": MessageLookupByLibrary.simpleMessage(
"Sembra che il tuo abbonamento sia scaduto. Iscriviti per abilitare la condivisione."),
@ -1282,7 +1293,7 @@ class MessageLookup extends MessageLookupByLibrary {
"suggestFeatures":
MessageLookupByLibrary.simpleMessage("Suggerisci una funzionalità"),
"support": MessageLookupByLibrary.simpleMessage("Assistenza"),
"syncProgress": m59,
"syncProgress": m61,
"syncStopped":
MessageLookupByLibrary.simpleMessage("Sincronizzazione interrotta"),
"syncing": MessageLookupByLibrary.simpleMessage(
@ -1311,7 +1322,7 @@ class MessageLookup extends MessageLookupByLibrary {
"theseItemsWillBeDeletedFromYourDevice":
MessageLookupByLibrary.simpleMessage(
"Questi file verranno eliminati dal tuo dispositivo."),
"theyAlsoGetXGb": m60,
"theyAlsoGetXGb": m62,
"theyWillBeDeletedFromAllAlbums": MessageLookupByLibrary.simpleMessage(
"Verranno eliminati da tutti gli album."),
"thisActionCannotBeUndone": MessageLookupByLibrary.simpleMessage(
@ -1328,7 +1339,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Questo indirizzo email è già registrato"),
"thisImageHasNoExifData": MessageLookupByLibrary.simpleMessage(
"Questa immagine non ha dati EXIF"),
"thisIsPersonVerificationId": m61,
"thisIsPersonVerificationId": m63,
"thisIsYourVerificationId": MessageLookupByLibrary.simpleMessage(
"Questo è il tuo ID di verifica"),
"thisWillLogYouOutOfTheFollowingDevice":
@ -1344,7 +1355,7 @@ class MessageLookup extends MessageLookupByLibrary {
"total": MessageLookupByLibrary.simpleMessage("totale"),
"totalSize": MessageLookupByLibrary.simpleMessage("Dimensioni totali"),
"trash": MessageLookupByLibrary.simpleMessage("Cestino"),
"trashDaysLeft": m62,
"trashDaysLeft": m64,
"tryAgain": MessageLookupByLibrary.simpleMessage("Riprova"),
"turnOnBackupForAutoUpload": MessageLookupByLibrary.simpleMessage(
"Attiva il backup per caricare automaticamente i file aggiunti in questa cartella del dispositivo su ente."),
@ -1401,7 +1412,7 @@ class MessageLookup extends MessageLookupByLibrary {
"useSelectedPhoto":
MessageLookupByLibrary.simpleMessage("Usa la foto selezionata"),
"usedSpace": MessageLookupByLibrary.simpleMessage("Spazio utilizzato"),
"validTill": m63,
"validTill": m65,
"verificationFailedPleaseTryAgain":
MessageLookupByLibrary.simpleMessage(
"Verifica fallita, per favore prova di nuovo"),
@ -1409,7 +1420,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("ID di verifica"),
"verify": MessageLookupByLibrary.simpleMessage("Verifica"),
"verifyEmail": MessageLookupByLibrary.simpleMessage("Verifica email"),
"verifyEmailID": m64,
"verifyEmailID": m66,
"verifyIDLabel": MessageLookupByLibrary.simpleMessage("Verifica"),
"verifyPassword":
MessageLookupByLibrary.simpleMessage("Verifica password"),
@ -1436,11 +1447,11 @@ class MessageLookup extends MessageLookupByLibrary {
"weDontSupportEditingPhotosAndAlbumsThatYouDont":
MessageLookupByLibrary.simpleMessage(
"Non puoi modificare foto e album che non possiedi"),
"weHaveSendEmailTo": m65,
"weHaveSendEmailTo": m67,
"weakStrength": MessageLookupByLibrary.simpleMessage("Debole"),
"welcomeBack": MessageLookupByLibrary.simpleMessage("Bentornato/a!"),
"yearly": MessageLookupByLibrary.simpleMessage("Annuale"),
"yearsAgo": m66,
"yearsAgo": m68,
"yes": MessageLookupByLibrary.simpleMessage("Si"),
"yesCancel": MessageLookupByLibrary.simpleMessage("Sì, cancella"),
"yesConvertToViewer": MessageLookupByLibrary.simpleMessage(
@ -1470,7 +1481,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Non puoi condividere con te stesso"),
"youDontHaveAnyArchivedItems": MessageLookupByLibrary.simpleMessage(
"Non hai nulla di archiviato."),
"youHaveSuccessfullyFreedUp": m67,
"youHaveSuccessfullyFreedUp": m69,
"yourAccountHasBeenDeleted": MessageLookupByLibrary.simpleMessage(
"Il tuo account è stato eliminato"),
"yourMap": MessageLookupByLibrary.simpleMessage("Your map"),

View file

@ -20,10 +20,18 @@ typedef String MessageIfAbsent(String messageStr, List<dynamic> args);
class MessageLookup extends MessageLookupByLibrary {
String get localeName => 'ko';
static String m0(count) =>
"${Intl.plural(count, zero: 'Add collaborator', one: 'Add collaborator', other: 'Add collaborators')}";
static String m1(count) =>
"${Intl.plural(count, zero: 'Add viewer', one: 'Add viewer', other: 'Add viewers')}";
final messages = _notInlinedMessages(_notInlinedMessages);
static Map<String, Function> _notInlinedMessages(_) => <String, Function>{
"addCollaborators": m0,
"addToHiddenAlbum":
MessageLookupByLibrary.simpleMessage("Add to hidden album"),
"addViewers": m1,
"changeLocationOfSelectedItems": MessageLookupByLibrary.simpleMessage(
"Change location of selected items?"),
"contacts": MessageLookupByLibrary.simpleMessage("Contacts"),
@ -37,6 +45,9 @@ class MessageLookup extends MessageLookupByLibrary {
"fileTypes": MessageLookupByLibrary.simpleMessage("File types"),
"joinDiscord": MessageLookupByLibrary.simpleMessage("Join Discord"),
"locations": MessageLookupByLibrary.simpleMessage("Locations"),
"longPressAnEmailToVerifyEndToEndEncryption":
MessageLookupByLibrary.simpleMessage(
"Long press an email to verify end to end encryption."),
"modifyYourQueryOrTrySearchingFor":
MessageLookupByLibrary.simpleMessage(
"Modify your query, or try searching for"),

View file

@ -21,27 +21,33 @@ class MessageLookup extends MessageLookupByLibrary {
String get localeName => 'nl';
static String m0(count) =>
"${Intl.plural(count, zero: 'Add collaborator', one: 'Add collaborator', other: 'Add collaborators')}";
static String m2(count) =>
"${Intl.plural(count, one: 'Bestand toevoegen', other: 'Bestanden toevoegen')}";
static String m1(storageAmount, endDate) =>
static String m3(storageAmount, endDate) =>
"Jouw ${storageAmount} add-on is geldig tot ${endDate}";
static String m2(emailOrName) => "Toegevoegd door ${emailOrName}";
static String m1(count) =>
"${Intl.plural(count, zero: 'Add viewer', one: 'Add viewer', other: 'Add viewers')}";
static String m3(albumName) => "Succesvol toegevoegd aan ${albumName}";
static String m4(emailOrName) => "Toegevoegd door ${emailOrName}";
static String m4(count) =>
static String m5(albumName) => "Succesvol toegevoegd aan ${albumName}";
static String m6(count) =>
"${Intl.plural(count, zero: 'Geen deelnemers', one: '1 deelnemer', other: '${count} deelnemers')}";
static String m5(versionValue) => "Versie: ${versionValue}";
static String m7(versionValue) => "Versie: ${versionValue}";
static String m6(paymentProvider) =>
static String m8(paymentProvider) =>
"Annuleer eerst uw bestaande abonnement bij ${paymentProvider}";
static String m7(user) =>
static String m9(user) =>
"${user} zal geen foto\'s meer kunnen toevoegen aan dit album\n\nDe gebruiker zal nog steeds bestaande foto\'s kunnen verwijderen die door hen zijn toegevoegd";
static String m8(isFamilyMember, storageAmountInGb) =>
static String m10(isFamilyMember, storageAmountInGb) =>
"${Intl.select(isFamilyMember, {
'true':
'Jouw familie heeft ${storageAmountInGb} GB geclaimd tot nu toe',
@ -49,167 +55,167 @@ class MessageLookup extends MessageLookupByLibrary {
'other': 'Je hebt ${storageAmountInGb} GB geclaimd tot nu toe!',
})}";
static String m9(albumName) =>
static String m11(albumName) =>
"Gezamenlijke link aangemaakt voor ${albumName}";
static String m10(familyAdminEmail) =>
static String m12(familyAdminEmail) =>
"Neem contact op met <green>${familyAdminEmail}</green> om uw abonnement te beheren";
static String m11(provider) =>
static String m13(provider) =>
"Neem contact met ons op via support@ente.io om uw ${provider} abonnement te beheren.";
static String m12(count) =>
static String m14(count) =>
"${Intl.plural(count, one: 'Verwijder ${count} bestand', other: 'Verwijder ${count} bestanden')}";
static String m13(currentlyDeleting, totalCount) =>
static String m15(currentlyDeleting, totalCount) =>
"Verwijderen van ${currentlyDeleting} / ${totalCount}";
static String m14(albumName) =>
static String m16(albumName) =>
"Dit verwijdert de openbare link voor toegang tot \"${albumName}\".";
static String m15(supportEmail) =>
static String m17(supportEmail) =>
"Stuur een e-mail naar ${supportEmail} vanaf het door jou geregistreerde e-mailadres";
static String m16(count, storageSaved) =>
static String m18(count, storageSaved) =>
"Je hebt ${Intl.plural(count, one: '${count} dubbel bestand', other: '${count} dubbele bestanden')} opgeruimd, totaal (${storageSaved}!)";
static String m17(count, formattedSize) =>
static String m19(count, formattedSize) =>
"${count} bestanden, elk ${formattedSize}";
static String m18(newEmail) => "E-mailadres gewijzigd naar ${newEmail}";
static String m20(newEmail) => "E-mailadres gewijzigd naar ${newEmail}";
static String m19(email) =>
static String m21(email) =>
"${email} heeft geen ente account.\n\nStuur ze een uitnodiging om foto\'s te delen.";
static String m20(count, formattedNumber) =>
static String m22(count, formattedNumber) =>
"${Intl.plural(count, one: '1 bestand', other: '${formattedNumber} bestanden')} in dit album zijn veilig geback-upt";
static String m21(count, formattedNumber) =>
static String m23(count, formattedNumber) =>
"${Intl.plural(count, one: '1 bestand', other: '${formattedNumber} bestanden')} in dit album is veilig geback-upt";
static String m22(storageAmountInGB) =>
static String m24(storageAmountInGB) =>
"${storageAmountInGB} GB telkens als iemand zich aanmeldt voor een betaald abonnement en je code toepast";
static String m23(freeAmount, storageUnit) =>
static String m25(freeAmount, storageUnit) =>
"${freeAmount} ${storageUnit} vrij";
static String m24(endDate) => "Gratis proefversie geldig tot ${endDate}";
static String m26(endDate) => "Gratis proefversie geldig tot ${endDate}";
static String m25(count) =>
static String m27(count) =>
"U heeft nog steeds toegang tot ${Intl.plural(count, one: 'het', other: 'ze')} op ente zolang u een actief abonnement heeft";
static String m26(sizeInMBorGB) => "Maak ${sizeInMBorGB} vrij";
static String m28(sizeInMBorGB) => "Maak ${sizeInMBorGB} vrij";
static String m27(count, formattedSize) =>
static String m29(count, formattedSize) =>
"${Intl.plural(count, one: 'Het kan verwijderd worden van het apparaat om ${formattedSize} vrij te maken', other: 'Ze kunnen verwijderd worden van het apparaat om ${formattedSize} vrij te maken')}";
static String m28(currentlyProcessing, totalCount) =>
static String m30(currentlyProcessing, totalCount) =>
"Verwerken van ${currentlyProcessing} / ${totalCount}";
static String m29(count) =>
static String m31(count) =>
"${Intl.plural(count, one: '${count} item', other: '${count} items')}";
static String m30(expiryTime) => "Link vervalt op ${expiryTime}";
static String m32(expiryTime) => "Link vervalt op ${expiryTime}";
static String m31(count, formattedCount) =>
static String m33(count, formattedCount) =>
"${Intl.plural(count, zero: 'geen herinneringen', one: '${formattedCount} herinnering', other: '${formattedCount} herinneringen')}";
static String m32(count) =>
static String m34(count) =>
"${Intl.plural(count, one: 'Bestand verplaatsen', other: 'Bestanden verplaatsen')}";
static String m33(albumName) => "Succesvol verplaatst naar ${albumName}";
static String m35(albumName) => "Succesvol verplaatst naar ${albumName}";
static String m34(passwordStrengthValue) =>
static String m36(passwordStrengthValue) =>
"Wachtwoord sterkte: ${passwordStrengthValue}";
static String m35(providerName) =>
static String m37(providerName) =>
"Praat met ${providerName} klantenservice als u in rekening bent gebracht";
static String m36(reason) =>
static String m38(reason) =>
"Helaas is uw betaling mislukt vanwege ${reason}";
static String m37(endDate) =>
static String m39(endDate) =>
"Gratis proefperiode geldig tot ${endDate}.\nU kunt naderhand een betaald abonnement kiezen.";
static String m38(toEmail) => "Stuur ons een e-mail op ${toEmail}";
static String m40(toEmail) => "Stuur ons een e-mail op ${toEmail}";
static String m39(toEmail) =>
static String m41(toEmail) =>
"Verstuur de logboeken alstublieft naar ${toEmail}";
static String m40(storeName) => "Beoordeel ons op ${storeName}";
static String m42(storeName) => "Beoordeel ons op ${storeName}";
static String m41(storageInGB) =>
static String m43(storageInGB) =>
"Jullie krijgen allebei ${storageInGB} GB* gratis";
static String m42(userEmail) =>
static String m44(userEmail) =>
"${userEmail} zal worden verwijderd uit dit gedeelde album\n\nAlle door hen toegevoegde foto\'s worden ook uit het album verwijderd";
static String m43(endDate) => "Wordt verlengd op ${endDate}";
static String m45(endDate) => "Wordt verlengd op ${endDate}";
static String m44(count) =>
static String m46(count) =>
"${Intl.plural(count, one: '${count} resultaat gevonden', other: '${count} resultaten gevonden')}";
static String m45(count) => "${count} geselecteerd";
static String m47(count) => "${count} geselecteerd";
static String m46(count, yourCount) =>
static String m48(count, yourCount) =>
"${count} geselecteerd (${yourCount} van jou)";
static String m47(verificationID) =>
static String m49(verificationID) =>
"Hier is mijn verificatie-ID: ${verificationID} voor ente.io.";
static String m48(verificationID) =>
static String m50(verificationID) =>
"Hey, kunt u bevestigen dat dit uw ente.io verificatie-ID is: ${verificationID}";
static String m49(referralCode, referralStorageInGB) =>
static String m51(referralCode, referralStorageInGB) =>
"ente verwijzingscode: ${referralCode} \n\nPas het toe bij Instellingen → Algemeen → Verwijzingen om ${referralStorageInGB} GB gratis te krijgen nadat je je hebt aangemeld voor een betaald abonnement\n\nhttps://ente.io";
static String m50(numberOfPeople) =>
static String m52(numberOfPeople) =>
"${Intl.plural(numberOfPeople, zero: 'Deel met specifieke mensen', one: 'Gedeeld met 1 persoon', other: 'Gedeeld met ${numberOfPeople} mensen')}";
static String m51(emailIDs) => "Gedeeld met ${emailIDs}";
static String m52(fileType) =>
"Deze ${fileType} zal worden verwijderd van jouw apparaat.";
static String m53(fileType) =>
"Deze ${fileType} staat zowel in ente als op jouw apparaat.";
static String m53(emailIDs) => "Gedeeld met ${emailIDs}";
static String m54(fileType) =>
"Deze ${fileType} zal worden verwijderd van jouw apparaat.";
static String m55(fileType) =>
"Deze ${fileType} staat zowel in ente als op jouw apparaat.";
static String m56(fileType) =>
"Deze ${fileType} zal worden verwijderd uit ente.";
static String m55(storageAmountInGB) => "${storageAmountInGB} GB";
static String m57(storageAmountInGB) => "${storageAmountInGB} GB";
static String m56(
static String m58(
usedAmount, usedStorageUnit, totalAmount, totalStorageUnit) =>
"${usedAmount} ${usedStorageUnit} van ${totalAmount} ${totalStorageUnit} gebruikt";
static String m57(id) =>
static String m59(id) =>
"Uw ${id} is al aan een ander ente account gekoppeld.\nAls u uw ${id} wilt gebruiken met dit account, neem dan contact op met onze klantenservice";
static String m58(endDate) => "Uw abonnement loopt af op ${endDate}";
static String m60(endDate) => "Uw abonnement loopt af op ${endDate}";
static String m59(completed, total) =>
static String m61(completed, total) =>
"${completed}/${total} herinneringen bewaard";
static String m60(storageAmountInGB) =>
static String m62(storageAmountInGB) =>
"Zij krijgen ook ${storageAmountInGB} GB";
static String m61(email) => "Dit is de verificatie-ID van ${email}";
static String m63(email) => "Dit is de verificatie-ID van ${email}";
static String m62(count) =>
static String m64(count) =>
"${Intl.plural(count, zero: '', one: '1 dag', other: '${count} dagen')}";
static String m63(endDate) => "Geldig tot ${endDate}";
static String m65(endDate) => "Geldig tot ${endDate}";
static String m64(email) => "Verifieer ${email}";
static String m66(email) => "Verifieer ${email}";
static String m65(email) =>
static String m67(email) =>
"We hebben een e-mail gestuurd naar <green>${email}</green>";
static String m66(count) =>
static String m68(count) =>
"${Intl.plural(count, one: '${count} jaar geleden', other: '${count} jaar geleden')}";
static String m67(storageSaved) =>
static String m69(storageSaved) =>
"Je hebt ${storageSaved} succesvol vrijgemaakt!";
final messages = _notInlinedMessages(_notInlinedMessages);
@ -228,9 +234,10 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Nieuw e-mailadres toevoegen"),
"addCollaborator":
MessageLookupByLibrary.simpleMessage("Samenwerker toevoegen"),
"addCollaborators": m0,
"addFromDevice":
MessageLookupByLibrary.simpleMessage("Toevoegen vanaf apparaat"),
"addItem": m0,
"addItem": m2,
"addLocation":
MessageLookupByLibrary.simpleMessage("Locatie toevoegen"),
"addLocationButton": MessageLookupByLibrary.simpleMessage("Toevoegen"),
@ -238,7 +245,7 @@ class MessageLookup extends MessageLookupByLibrary {
"addNew": MessageLookupByLibrary.simpleMessage("Nieuwe toevoegen"),
"addOnPageSubtitle":
MessageLookupByLibrary.simpleMessage("Details van add-ons"),
"addOnValidTill": m1,
"addOnValidTill": m3,
"addOns": MessageLookupByLibrary.simpleMessage("Add-ons"),
"addPhotos": MessageLookupByLibrary.simpleMessage("Foto\'s toevoegen"),
"addSelected":
@ -249,11 +256,12 @@ class MessageLookup extends MessageLookupByLibrary {
"addToHiddenAlbum": MessageLookupByLibrary.simpleMessage(
"Toevoegen aan verborgen album"),
"addViewer": MessageLookupByLibrary.simpleMessage("Voeg kijker toe"),
"addViewers": m1,
"addYourPhotosNow":
MessageLookupByLibrary.simpleMessage("Voeg nu je foto\'s toe"),
"addedAs": MessageLookupByLibrary.simpleMessage("Toegevoegd als"),
"addedBy": m2,
"addedSuccessfullyTo": m3,
"addedBy": m4,
"addedSuccessfullyTo": m5,
"addingToFavorites":
MessageLookupByLibrary.simpleMessage("Toevoegen aan favorieten..."),
"advanced": MessageLookupByLibrary.simpleMessage("Geavanceerd"),
@ -264,7 +272,7 @@ class MessageLookup extends MessageLookupByLibrary {
"after1Week": MessageLookupByLibrary.simpleMessage("Na 1 week"),
"after1Year": MessageLookupByLibrary.simpleMessage("Na 1 jaar"),
"albumOwner": MessageLookupByLibrary.simpleMessage("Eigenaar"),
"albumParticipantsCount": m4,
"albumParticipantsCount": m6,
"albumTitle": MessageLookupByLibrary.simpleMessage("Albumtitel"),
"albumUpdated":
MessageLookupByLibrary.simpleMessage("Album bijgewerkt"),
@ -300,7 +308,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Android, iOS, Web, Desktop"),
"androidSignInTitle":
MessageLookupByLibrary.simpleMessage("Verificatie vereist"),
"appVersion": m5,
"appVersion": m7,
"appleId": MessageLookupByLibrary.simpleMessage("Apple ID"),
"apply": MessageLookupByLibrary.simpleMessage("Toepassen"),
"applyCodeTitle":
@ -386,10 +394,10 @@ class MessageLookup extends MessageLookupByLibrary {
"canOnlyRemoveFilesOwnedByYou": MessageLookupByLibrary.simpleMessage(
"Kan alleen bestanden verwijderen die jouw eigendom zijn"),
"cancel": MessageLookupByLibrary.simpleMessage("Annuleer"),
"cancelOtherSubscription": m6,
"cancelOtherSubscription": m8,
"cancelSubscription":
MessageLookupByLibrary.simpleMessage("Abonnement opzeggen"),
"cannotAddMorePhotosAfterBecomingViewer": m7,
"cannotAddMorePhotosAfterBecomingViewer": m9,
"cannotDeleteSharedFiles": MessageLookupByLibrary.simpleMessage(
"Kan gedeelde bestanden niet verwijderen"),
"castInstruction": MessageLookupByLibrary.simpleMessage(
@ -413,7 +421,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Claim gratis opslag"),
"claimMore": MessageLookupByLibrary.simpleMessage("Claim meer!"),
"claimed": MessageLookupByLibrary.simpleMessage("Geclaimd"),
"claimedStorageSoFar": m8,
"claimedStorageSoFar": m10,
"cleanUncategorized":
MessageLookupByLibrary.simpleMessage("Ongecategoriseerd opschonen"),
"clearCaches": MessageLookupByLibrary.simpleMessage("Cache legen"),
@ -436,7 +444,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Maak een link waarmee mensen foto\'s in jouw gedeelde album kunnen toevoegen en bekijken zonder dat ze daarvoor een ente app of account nodig hebben. Handig voor het verzamelen van foto\'s van evenementen."),
"collaborativeLink":
MessageLookupByLibrary.simpleMessage("Gezamenlijke link"),
"collaborativeLinkCreatedFor": m9,
"collaborativeLinkCreatedFor": m11,
"collaborator": MessageLookupByLibrary.simpleMessage("Samenwerker"),
"collaboratorsCanAddPhotosAndVideosToTheSharedAlbum":
MessageLookupByLibrary.simpleMessage(
@ -464,10 +472,10 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Bevestig herstelsleutel"),
"confirmYourRecoveryKey":
MessageLookupByLibrary.simpleMessage("Bevestig herstelsleutel"),
"contactFamilyAdmin": m10,
"contactFamilyAdmin": m12,
"contactSupport":
MessageLookupByLibrary.simpleMessage("Contacteer klantenservice"),
"contactToManageSubscription": m11,
"contactToManageSubscription": m13,
"contacts": MessageLookupByLibrary.simpleMessage("Contacten"),
"contents": MessageLookupByLibrary.simpleMessage("Inhoud"),
"continueLabel": MessageLookupByLibrary.simpleMessage("Doorgaan"),
@ -544,12 +552,12 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Verwijder van apparaat"),
"deleteFromEnte":
MessageLookupByLibrary.simpleMessage("Verwijder van ente"),
"deleteItemCount": m12,
"deleteItemCount": m14,
"deleteLocation":
MessageLookupByLibrary.simpleMessage("Verwijder locatie"),
"deletePhotos":
MessageLookupByLibrary.simpleMessage("Foto\'s verwijderen"),
"deleteProgress": m13,
"deleteProgress": m15,
"deleteReason1": MessageLookupByLibrary.simpleMessage(
"Ik mis een belangrijke functie"),
"deleteReason2": MessageLookupByLibrary.simpleMessage(
@ -587,7 +595,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Kijkers kunnen nog steeds screenshots maken of een kopie van je foto\'s opslaan met behulp van externe tools"),
"disableDownloadWarningTitle":
MessageLookupByLibrary.simpleMessage("Let op"),
"disableLinkMessage": m14,
"disableLinkMessage": m16,
"disableTwofactor": MessageLookupByLibrary.simpleMessage(
"Tweestapsverificatie uitschakelen"),
"disablingTwofactorAuthentication":
@ -608,9 +616,9 @@ class MessageLookup extends MessageLookupByLibrary {
"downloadFailed":
MessageLookupByLibrary.simpleMessage("Download mislukt"),
"downloading": MessageLookupByLibrary.simpleMessage("Downloaden..."),
"dropSupportEmail": m15,
"duplicateFileCountWithStorageSaved": m16,
"duplicateItemsGroup": m17,
"dropSupportEmail": m17,
"duplicateFileCountWithStorageSaved": m18,
"duplicateItemsGroup": m19,
"edit": MessageLookupByLibrary.simpleMessage("Bewerken"),
"editLocation":
MessageLookupByLibrary.simpleMessage("Locatie bewerken"),
@ -623,8 +631,8 @@ class MessageLookup extends MessageLookupByLibrary {
"Bewerkte locatie wordt alleen gezien binnen Ente"),
"eligible": MessageLookupByLibrary.simpleMessage("gerechtigd"),
"email": MessageLookupByLibrary.simpleMessage("E-mail"),
"emailChangedTo": m18,
"emailNoEnteAccount": m19,
"emailChangedTo": m20,
"emailNoEnteAccount": m21,
"emailVerificationToggle":
MessageLookupByLibrary.simpleMessage("E-mailverificatie"),
"emailYourLogs":
@ -728,8 +736,8 @@ class MessageLookup extends MessageLookupByLibrary {
"fileTypes": MessageLookupByLibrary.simpleMessage("Bestandstype"),
"fileTypesAndNames":
MessageLookupByLibrary.simpleMessage("Bestandstypen en namen"),
"filesBackedUpFromDevice": m20,
"filesBackedUpInAlbum": m21,
"filesBackedUpFromDevice": m22,
"filesBackedUpInAlbum": m23,
"filesDeleted":
MessageLookupByLibrary.simpleMessage("Bestanden verwijderd"),
"flip": MessageLookupByLibrary.simpleMessage("Omdraaien"),
@ -739,24 +747,24 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Wachtwoord vergeten"),
"freeStorageClaimed":
MessageLookupByLibrary.simpleMessage("Gratis opslag geclaimd"),
"freeStorageOnReferralSuccess": m22,
"freeStorageSpace": m23,
"freeStorageOnReferralSuccess": m24,
"freeStorageSpace": m25,
"freeStorageUsable":
MessageLookupByLibrary.simpleMessage("Gratis opslag bruikbaar"),
"freeTrial": MessageLookupByLibrary.simpleMessage("Gratis proefversie"),
"freeTrialValidTill": m24,
"freeUpAccessPostDelete": m25,
"freeUpAmount": m26,
"freeTrialValidTill": m26,
"freeUpAccessPostDelete": m27,
"freeUpAmount": m28,
"freeUpDeviceSpace":
MessageLookupByLibrary.simpleMessage("Apparaatruimte vrijmaken"),
"freeUpSpace": MessageLookupByLibrary.simpleMessage("Ruimte vrijmaken"),
"freeUpSpaceSaving": m27,
"freeUpSpaceSaving": m29,
"galleryMemoryLimitInfo": MessageLookupByLibrary.simpleMessage(
"Tot 1000 herinneringen getoond in de galerij"),
"general": MessageLookupByLibrary.simpleMessage("Algemeen"),
"generatingEncryptionKeys": MessageLookupByLibrary.simpleMessage(
"Encryptiesleutels genereren..."),
"genericProgress": m28,
"genericProgress": m30,
"goToSettings":
MessageLookupByLibrary.simpleMessage("Ga naar instellingen"),
"googlePlayId": MessageLookupByLibrary.simpleMessage("Google Play ID"),
@ -817,7 +825,7 @@ class MessageLookup extends MessageLookupByLibrary {
"itLooksLikeSomethingWentWrongPleaseRetryAfterSome":
MessageLookupByLibrary.simpleMessage(
"Het lijkt erop dat er iets fout is gegaan. Probeer het later opnieuw. Als de fout zich blijft voordoen, neem dan contact op met ons supportteam."),
"itemCount": m29,
"itemCount": m31,
"itemsShowTheNumberOfDaysRemainingBeforePermanentDeletion":
MessageLookupByLibrary.simpleMessage(
"Bestanden tonen het aantal resterende dagen voordat ze permanent worden verwijderd"),
@ -844,7 +852,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Apparaat limiet"),
"linkEnabled": MessageLookupByLibrary.simpleMessage("Ingeschakeld"),
"linkExpired": MessageLookupByLibrary.simpleMessage("Verlopen"),
"linkExpiresOn": m30,
"linkExpiresOn": m32,
"linkExpiry": MessageLookupByLibrary.simpleMessage("Vervaldatum"),
"linkHasExpired":
MessageLookupByLibrary.simpleMessage("Link is vervallen"),
@ -893,6 +901,9 @@ class MessageLookup extends MessageLookupByLibrary {
"logout": MessageLookupByLibrary.simpleMessage("Uitloggen"),
"logsDialogBody": MessageLookupByLibrary.simpleMessage(
"Dit zal logboeken verzenden om ons te helpen uw probleem op te lossen. Houd er rekening mee dat bestandsnamen zullen worden meegenomen om problemen met specifieke bestanden bij te houden."),
"longPressAnEmailToVerifyEndToEndEncryption":
MessageLookupByLibrary.simpleMessage(
"Long press an email to verify end to end encryption."),
"longpressOnAnItemToViewInFullscreen": MessageLookupByLibrary.simpleMessage(
"Houd een bestand lang ingedrukt om te bekijken op volledig scherm"),
"lostDevice":
@ -916,7 +927,7 @@ class MessageLookup extends MessageLookupByLibrary {
"maps": MessageLookupByLibrary.simpleMessage("Kaarten"),
"mastodon": MessageLookupByLibrary.simpleMessage("Mastodon"),
"matrix": MessageLookupByLibrary.simpleMessage("Matrix"),
"memoryCount": m31,
"memoryCount": m33,
"merchandise": MessageLookupByLibrary.simpleMessage("Merchandise"),
"mobileWebDesktop":
MessageLookupByLibrary.simpleMessage("Mobiel, Web, Desktop"),
@ -926,12 +937,12 @@ class MessageLookup extends MessageLookupByLibrary {
"Pas je zoekopdracht aan of zoek naar"),
"moments": MessageLookupByLibrary.simpleMessage("Momenten"),
"monthly": MessageLookupByLibrary.simpleMessage("Maandelijks"),
"moveItem": m32,
"moveItem": m34,
"moveToAlbum":
MessageLookupByLibrary.simpleMessage("Verplaats naar album"),
"moveToHiddenAlbum": MessageLookupByLibrary.simpleMessage(
"Verplaatsen naar verborgen album"),
"movedSuccessfullyTo": m33,
"movedSuccessfullyTo": m35,
"movedToTrash":
MessageLookupByLibrary.simpleMessage("Naar prullenbak verplaatst"),
"movingFilesToAlbum": MessageLookupByLibrary.simpleMessage(
@ -1001,15 +1012,15 @@ class MessageLookup extends MessageLookupByLibrary {
"passwordChangedSuccessfully": MessageLookupByLibrary.simpleMessage(
"Wachtwoord succesvol aangepast"),
"passwordLock": MessageLookupByLibrary.simpleMessage("Wachtwoord slot"),
"passwordStrength": m34,
"passwordStrength": m36,
"passwordWarning": MessageLookupByLibrary.simpleMessage(
"Wij slaan dit wachtwoord niet op, dus als je het vergeet, kunnen <underline>we je gegevens niet ontsleutelen</underline>"),
"paymentDetails":
MessageLookupByLibrary.simpleMessage("Betaalgegevens"),
"paymentFailed":
MessageLookupByLibrary.simpleMessage("Betaling mislukt"),
"paymentFailedTalkToProvider": m35,
"paymentFailedWithReason": m36,
"paymentFailedTalkToProvider": m37,
"paymentFailedWithReason": m38,
"pendingItems":
MessageLookupByLibrary.simpleMessage("Bestanden in behandeling"),
"pendingSync": MessageLookupByLibrary.simpleMessage(
@ -1037,7 +1048,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Album bovenaan vastzetten"),
"playOnTv":
MessageLookupByLibrary.simpleMessage("Album afspelen op TV"),
"playStoreFreeTrialValidTill": m37,
"playStoreFreeTrialValidTill": m39,
"playstoreSubscription":
MessageLookupByLibrary.simpleMessage("PlayStore abonnement"),
"pleaseCheckYourInternetConnectionAndTryAgain":
@ -1049,12 +1060,12 @@ class MessageLookup extends MessageLookupByLibrary {
"pleaseContactSupportIfTheProblemPersists":
MessageLookupByLibrary.simpleMessage(
"Neem contact op met klantenservice als het probleem aanhoudt"),
"pleaseEmailUsAt": m38,
"pleaseEmailUsAt": m40,
"pleaseGrantPermissions": MessageLookupByLibrary.simpleMessage(
"Geef alstublieft toestemming"),
"pleaseLoginAgain":
MessageLookupByLibrary.simpleMessage("Log opnieuw in"),
"pleaseSendTheLogsTo": m39,
"pleaseSendTheLogsTo": m41,
"pleaseTryAgain":
MessageLookupByLibrary.simpleMessage("Probeer het nog eens"),
"pleaseVerifyTheCodeYouHaveEntered":
@ -1089,7 +1100,7 @@ class MessageLookup extends MessageLookupByLibrary {
"raiseTicket": MessageLookupByLibrary.simpleMessage("Meld probleem"),
"rateTheApp": MessageLookupByLibrary.simpleMessage("Beoordeel de app"),
"rateUs": MessageLookupByLibrary.simpleMessage("Beoordeel ons"),
"rateUsOnStore": m40,
"rateUsOnStore": m42,
"recover": MessageLookupByLibrary.simpleMessage("Herstellen"),
"recoverAccount":
MessageLookupByLibrary.simpleMessage("Account herstellen"),
@ -1120,7 +1131,7 @@ class MessageLookup extends MessageLookupByLibrary {
"1. Geef deze code aan je vrienden"),
"referralStep2": MessageLookupByLibrary.simpleMessage(
"2. Ze registreren voor een betaald plan"),
"referralStep3": m41,
"referralStep3": m43,
"referrals": MessageLookupByLibrary.simpleMessage("Referenties"),
"referralsAreCurrentlyPaused": MessageLookupByLibrary.simpleMessage(
"Verwijzingen zijn momenteel gepauzeerd"),
@ -1146,7 +1157,7 @@ class MessageLookup extends MessageLookupByLibrary {
"removeLink": MessageLookupByLibrary.simpleMessage("Verwijder link"),
"removeParticipant":
MessageLookupByLibrary.simpleMessage("Deelnemer verwijderen"),
"removeParticipantBody": m42,
"removeParticipantBody": m44,
"removePublicLink":
MessageLookupByLibrary.simpleMessage("Verwijder publieke link"),
"removeShareItemsWarning": MessageLookupByLibrary.simpleMessage(
@ -1162,7 +1173,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Bestandsnaam wijzigen"),
"renewSubscription":
MessageLookupByLibrary.simpleMessage("Abonnement verlengen"),
"renewsOn": m43,
"renewsOn": m45,
"reportABug": MessageLookupByLibrary.simpleMessage("Een fout melden"),
"reportBug": MessageLookupByLibrary.simpleMessage("Fout melden"),
"resendEmail":
@ -1224,7 +1235,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Foto\'s groeperen die in een bepaalde straal van een foto worden genomen"),
"searchPeopleEmptySection": MessageLookupByLibrary.simpleMessage(
"Nodig mensen uit, en je ziet alle foto\'s die door hen worden gedeeld hier"),
"searchResultCount": m44,
"searchResultCount": m46,
"security": MessageLookupByLibrary.simpleMessage("Beveiliging"),
"selectALocation":
MessageLookupByLibrary.simpleMessage("Selecteer een locatie"),
@ -1251,8 +1262,8 @@ class MessageLookup extends MessageLookupByLibrary {
"selectedItemsWillBeDeletedFromAllAlbumsAndMoved":
MessageLookupByLibrary.simpleMessage(
"Geselecteerde bestanden worden verwijderd uit alle albums en verplaatst naar de prullenbak."),
"selectedPhotos": m45,
"selectedPhotosWithYours": m46,
"selectedPhotos": m47,
"selectedPhotosWithYours": m48,
"send": MessageLookupByLibrary.simpleMessage("Verzenden"),
"sendEmail": MessageLookupByLibrary.simpleMessage("E-mail versturen"),
"sendInvite":
@ -1276,16 +1287,16 @@ class MessageLookup extends MessageLookupByLibrary {
"shareAnAlbumNow":
MessageLookupByLibrary.simpleMessage("Deel nu een album"),
"shareLink": MessageLookupByLibrary.simpleMessage("Link delen"),
"shareMyVerificationID": m47,
"shareMyVerificationID": m49,
"shareOnlyWithThePeopleYouWant": MessageLookupByLibrary.simpleMessage(
"Deel alleen met de mensen die u wilt"),
"shareTextConfirmOthersVerificationID": m48,
"shareTextConfirmOthersVerificationID": m50,
"shareTextRecommendUsingEnte": MessageLookupByLibrary.simpleMessage(
"Download ente zodat we gemakkelijk foto\'s en video\'s van originele kwaliteit kunnen delen\n\nhttps://ente.io"),
"shareTextReferralCode": m49,
"shareTextReferralCode": m51,
"shareWithNonenteUsers": MessageLookupByLibrary.simpleMessage(
"Delen met niet-ente gebruikers"),
"shareWithPeopleSectionTitle": m50,
"shareWithPeopleSectionTitle": m52,
"shareYourFirstAlbum":
MessageLookupByLibrary.simpleMessage("Deel jouw eerste album"),
"sharedAlbumSectionDescription": MessageLookupByLibrary.simpleMessage(
@ -1296,7 +1307,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Nieuwe gedeelde foto\'s"),
"sharedPhotoNotificationsExplanation": MessageLookupByLibrary.simpleMessage(
"Ontvang meldingen wanneer iemand een foto toevoegt aan een gedeeld album waar je deel van uitmaakt"),
"sharedWith": m51,
"sharedWith": m53,
"sharedWithMe": MessageLookupByLibrary.simpleMessage("Gedeeld met mij"),
"sharedWithYou":
MessageLookupByLibrary.simpleMessage("Gedeeld met jou"),
@ -1311,11 +1322,11 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Log uit op andere apparaten"),
"signUpTerms": MessageLookupByLibrary.simpleMessage(
"Ik ga akkoord met de <u-terms>gebruiksvoorwaarden</u-terms> en <u-policy>privacybeleid</u-policy>"),
"singleFileDeleteFromDevice": m52,
"singleFileDeleteFromDevice": m54,
"singleFileDeleteHighlight": MessageLookupByLibrary.simpleMessage(
"Het wordt uit alle albums verwijderd."),
"singleFileInBothLocalAndRemote": m53,
"singleFileInRemoteOnly": m54,
"singleFileInBothLocalAndRemote": m55,
"singleFileInRemoteOnly": m56,
"skip": MessageLookupByLibrary.simpleMessage("Overslaan"),
"social": MessageLookupByLibrary.simpleMessage("Sociale media"),
"someItemsAreInBothEnteAndYourDevice": MessageLookupByLibrary.simpleMessage(
@ -1353,13 +1364,13 @@ class MessageLookup extends MessageLookupByLibrary {
"storage": MessageLookupByLibrary.simpleMessage("Opslagruimte"),
"storageBreakupFamily": MessageLookupByLibrary.simpleMessage("Familie"),
"storageBreakupYou": MessageLookupByLibrary.simpleMessage("Jij"),
"storageInGB": m55,
"storageInGB": m57,
"storageLimitExceeded":
MessageLookupByLibrary.simpleMessage("Opslaglimiet overschreden"),
"storageUsageInfo": m56,
"storageUsageInfo": m58,
"strongStrength": MessageLookupByLibrary.simpleMessage("Sterk"),
"subAlreadyLinkedErrMessage": m57,
"subWillBeCancelledOn": m58,
"subAlreadyLinkedErrMessage": m59,
"subWillBeCancelledOn": m60,
"subscribe": MessageLookupByLibrary.simpleMessage("Abonneer"),
"subscribeToEnableSharing": MessageLookupByLibrary.simpleMessage(
"Het lijkt erop dat je abonnement is verlopen. Abonneer om delen mogelijk te maken."),
@ -1376,7 +1387,7 @@ class MessageLookup extends MessageLookupByLibrary {
"suggestFeatures":
MessageLookupByLibrary.simpleMessage("Features voorstellen"),
"support": MessageLookupByLibrary.simpleMessage("Ondersteuning"),
"syncProgress": m59,
"syncProgress": m61,
"syncStopped":
MessageLookupByLibrary.simpleMessage("Synchronisatie gestopt"),
"syncing": MessageLookupByLibrary.simpleMessage("Synchroniseren..."),
@ -1404,7 +1415,7 @@ class MessageLookup extends MessageLookupByLibrary {
"theseItemsWillBeDeletedFromYourDevice":
MessageLookupByLibrary.simpleMessage(
"Deze bestanden zullen worden verwijderd van uw apparaat."),
"theyAlsoGetXGb": m60,
"theyAlsoGetXGb": m62,
"theyWillBeDeletedFromAllAlbums": MessageLookupByLibrary.simpleMessage(
"Ze zullen uit alle albums worden verwijderd."),
"thisActionCannotBeUndone": MessageLookupByLibrary.simpleMessage(
@ -1420,7 +1431,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Dit e-mailadres is al in gebruik"),
"thisImageHasNoExifData": MessageLookupByLibrary.simpleMessage(
"Deze foto heeft geen exif gegevens"),
"thisIsPersonVerificationId": m61,
"thisIsPersonVerificationId": m63,
"thisIsYourVerificationId":
MessageLookupByLibrary.simpleMessage("Dit is uw verificatie-ID"),
"thisWillLogYouOutOfTheFollowingDevice":
@ -1437,7 +1448,7 @@ class MessageLookup extends MessageLookupByLibrary {
"total": MessageLookupByLibrary.simpleMessage("totaal"),
"totalSize": MessageLookupByLibrary.simpleMessage("Totale grootte"),
"trash": MessageLookupByLibrary.simpleMessage("Prullenbak"),
"trashDaysLeft": m62,
"trashDaysLeft": m64,
"tryAgain": MessageLookupByLibrary.simpleMessage("Probeer opnieuw"),
"turnOnBackupForAutoUpload": MessageLookupByLibrary.simpleMessage(
"Schakel back-up in om bestanden die toegevoegd zijn aan deze map op dit apparaat automatisch te uploaden."),
@ -1493,7 +1504,7 @@ class MessageLookup extends MessageLookupByLibrary {
"useSelectedPhoto":
MessageLookupByLibrary.simpleMessage("Gebruik geselecteerde foto"),
"usedSpace": MessageLookupByLibrary.simpleMessage("Gebruikte ruimte"),
"validTill": m63,
"validTill": m65,
"verificationFailedPleaseTryAgain":
MessageLookupByLibrary.simpleMessage(
"Verificatie mislukt, probeer het opnieuw"),
@ -1501,7 +1512,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Verificatie ID"),
"verify": MessageLookupByLibrary.simpleMessage("Verifiëren"),
"verifyEmail": MessageLookupByLibrary.simpleMessage("Bevestig e-mail"),
"verifyEmailID": m64,
"verifyEmailID": m66,
"verifyIDLabel": MessageLookupByLibrary.simpleMessage("Verifiëren"),
"verifyPassword":
MessageLookupByLibrary.simpleMessage("Bevestig wachtwoord"),
@ -1530,11 +1541,11 @@ class MessageLookup extends MessageLookupByLibrary {
"weDontSupportEditingPhotosAndAlbumsThatYouDont":
MessageLookupByLibrary.simpleMessage(
"We ondersteunen het bewerken van foto\'s en albums waar je niet de eigenaar van bent nog niet"),
"weHaveSendEmailTo": m65,
"weHaveSendEmailTo": m67,
"weakStrength": MessageLookupByLibrary.simpleMessage("Zwak"),
"welcomeBack": MessageLookupByLibrary.simpleMessage("Welkom terug!"),
"yearly": MessageLookupByLibrary.simpleMessage("Jaarlijks"),
"yearsAgo": m66,
"yearsAgo": m68,
"yes": MessageLookupByLibrary.simpleMessage("Ja"),
"yesCancel": MessageLookupByLibrary.simpleMessage("Ja, opzeggen"),
"yesConvertToViewer":
@ -1564,7 +1575,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Je kunt niet met jezelf delen"),
"youDontHaveAnyArchivedItems": MessageLookupByLibrary.simpleMessage(
"U heeft geen gearchiveerde bestanden."),
"youHaveSuccessfullyFreedUp": m67,
"youHaveSuccessfullyFreedUp": m69,
"yourAccountHasBeenDeleted":
MessageLookupByLibrary.simpleMessage("Je account is verwijderd"),
"yourMap": MessageLookupByLibrary.simpleMessage("Jouw kaart"),

View file

@ -20,12 +20,20 @@ typedef String MessageIfAbsent(String messageStr, List<dynamic> args);
class MessageLookup extends MessageLookupByLibrary {
String get localeName => 'no';
static String m0(count) =>
"${Intl.plural(count, zero: 'Add collaborator', one: 'Add collaborator', other: 'Add collaborators')}";
static String m1(count) =>
"${Intl.plural(count, zero: 'Add viewer', one: 'Add viewer', other: 'Add viewers')}";
final messages = _notInlinedMessages(_notInlinedMessages);
static Map<String, Function> _notInlinedMessages(_) => <String, Function>{
"accountWelcomeBack":
MessageLookupByLibrary.simpleMessage("Velkommen tilbake!"),
"addCollaborators": m0,
"addToHiddenAlbum":
MessageLookupByLibrary.simpleMessage("Add to hidden album"),
"addViewers": m1,
"askDeleteReason": MessageLookupByLibrary.simpleMessage(
"Hva er hovedårsaken til at du sletter kontoen din?"),
"cancel": MessageLookupByLibrary.simpleMessage("Avbryt"),
@ -59,6 +67,9 @@ class MessageLookup extends MessageLookupByLibrary {
"kindlyHelpUsWithThisInformation": MessageLookupByLibrary.simpleMessage(
"Vær vennlig og hjelp oss med denne informasjonen"),
"locations": MessageLookupByLibrary.simpleMessage("Locations"),
"longPressAnEmailToVerifyEndToEndEncryption":
MessageLookupByLibrary.simpleMessage(
"Long press an email to verify end to end encryption."),
"modifyYourQueryOrTrySearchingFor":
MessageLookupByLibrary.simpleMessage(
"Modify your query, or try searching for"),

View file

@ -20,7 +20,13 @@ typedef String MessageIfAbsent(String messageStr, List<dynamic> args);
class MessageLookup extends MessageLookupByLibrary {
String get localeName => 'pl';
static String m34(passwordStrengthValue) =>
static String m0(count) =>
"${Intl.plural(count, zero: 'Add collaborator', one: 'Add collaborator', other: 'Add collaborators')}";
static String m1(count) =>
"${Intl.plural(count, zero: 'Add viewer', one: 'Add viewer', other: 'Add viewers')}";
static String m36(passwordStrengthValue) =>
"Siła hasła: ${passwordStrengthValue}";
final messages = _notInlinedMessages(_notInlinedMessages);
@ -28,8 +34,10 @@ class MessageLookup extends MessageLookupByLibrary {
"accountWelcomeBack":
MessageLookupByLibrary.simpleMessage("Witaj ponownie!"),
"activeSessions": MessageLookupByLibrary.simpleMessage("Aktywne sesje"),
"addCollaborators": m0,
"addToHiddenAlbum":
MessageLookupByLibrary.simpleMessage("Add to hidden album"),
"addViewers": m1,
"askDeleteReason": MessageLookupByLibrary.simpleMessage(
"Jaka jest przyczyna usunięcia konta?"),
"cancel": MessageLookupByLibrary.simpleMessage("Anuluj"),
@ -119,6 +127,9 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Pomóż nam z tą informacją"),
"locations": MessageLookupByLibrary.simpleMessage("Locations"),
"logInLabel": MessageLookupByLibrary.simpleMessage("Zaloguj się"),
"longPressAnEmailToVerifyEndToEndEncryption":
MessageLookupByLibrary.simpleMessage(
"Long press an email to verify end to end encryption."),
"moderateStrength": MessageLookupByLibrary.simpleMessage("Umiarkowana"),
"modifyYourQueryOrTrySearchingFor":
MessageLookupByLibrary.simpleMessage(
@ -134,7 +145,7 @@ class MessageLookup extends MessageLookupByLibrary {
"password": MessageLookupByLibrary.simpleMessage("Hasło"),
"passwordChangedSuccessfully": MessageLookupByLibrary.simpleMessage(
"Hasło zostało pomyślnie zmienione"),
"passwordStrength": m34,
"passwordStrength": m36,
"passwordWarning": MessageLookupByLibrary.simpleMessage(
"Nie przechowujemy tego hasła, więc jeśli go zapomnisz, <underline>nie będziemy w stanie odszyfrować Twoich danych</underline>"),
"pleaseTryAgain":

Some files were not shown because too many files have changed in this diff Show more