Merge branch 'main' into use_media_kit

This commit is contained in:
ashilkn 2023-09-13 11:26:50 +05:30
commit 21d6a4672b
15 changed files with 235 additions and 78 deletions

View file

@ -94,7 +94,7 @@ class MessageLookup extends MessageLookupByLibrary {
static String m21(endDate) => "Essai gratuit valide jusquau ${endDate}";
static String m22(count) =>
"Vous pouvez toujours accéder à ${Intl.plural(count, one: 'it', other: 'them')} sur ente tant que vous avez un abonnement actif";
"Vous pouvez toujours ${Intl.plural(count, one: 'y', other: 'y')} accéder sur ente tant que vous avez un abonnement actif";
static String m23(sizeInMBorGB) => "Libérer ${sizeInMBorGB}";
@ -140,10 +140,10 @@ class MessageLookup extends MessageLookupByLibrary {
static String m38(endDate) => "Renouvellement le ${endDate}";
static String m39(count) => "${count} sélectionné";
static String m39(count) => "${count} sélectionné(s)";
static String m40(count, yourCount) =>
"${count} sélectionné (${yourCount} votre)";
"${count} sélectionné(s) (${yourCount} à vous)";
static String m41(verificationID) =>
"Voici mon ID de vérification : ${verificationID} pour ente.io.";
@ -160,10 +160,10 @@ class MessageLookup extends MessageLookupByLibrary {
static String m45(emailIDs) => "Partagé avec ${emailIDs}";
static String m46(fileType) =>
"Ce ${fileType} sera supprimé de votre appareil.";
"Elle ${fileType} sera supprimée de votre appareil.";
static String m47(fileType) =>
"Ce ${fileType} est à la fois dans ente et votre appareil.";
"Cette ${fileType} est à la fois sur ente et sur votre appareil.";
static String m48(fileType) => "Ce ${fileType} sera supprimé de ente.";
@ -195,7 +195,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Nous avons envoyé un e-mail à <green>${email}</green>";
static String m59(count) =>
"${Intl.plural(count, one: '${count} il y a un an', other: '${count} il y a des années')}";
"${Intl.plural(count, one: 'il y a ${count} an', other: 'il y a ${count} ans')}";
static String m60(storageSaved) =>
"Vous avez libéré ${storageSaved} avec succès !";
@ -230,7 +230,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Ajouter à l\'album"),
"addToEnte": MessageLookupByLibrary.simpleMessage("Ajouter à ente"),
"addToHiddenAlbum":
MessageLookupByLibrary.simpleMessage("Add to hidden album"),
MessageLookupByLibrary.simpleMessage("Ajouter à un album masqué"),
"addViewer":
MessageLookupByLibrary.simpleMessage("Ajouter un observateur"),
"addedAs": MessageLookupByLibrary.simpleMessage("Ajouté comme"),
@ -373,6 +373,8 @@ class MessageLookup extends MessageLookupByLibrary {
"cancelSubscription":
MessageLookupByLibrary.simpleMessage("Annuler l\'abonnement"),
"cannotAddMorePhotosAfterBecomingViewer": m6,
"cannotDeleteSharedFiles": MessageLookupByLibrary.simpleMessage(
"Les fichiers partagés ne peuvent pas être supprimés"),
"centerPoint": MessageLookupByLibrary.simpleMessage("Point central"),
"changeEmail":
MessageLookupByLibrary.simpleMessage("Modifier l\'e-mail"),
@ -503,7 +505,7 @@ class MessageLookup extends MessageLookupByLibrary {
"deleteAlbum":
MessageLookupByLibrary.simpleMessage("Supprimer l\'album"),
"deleteAlbumDialog": MessageLookupByLibrary.simpleMessage(
"Supprimer aussi les photos (et vidéos) présentes dans cet album depuis <bold>tous</bold> les autres albums dont ils font partie?"),
"Supprimer aussi les photos (et vidéos) présentes dans cet album de <bold>tous</bold> les autres albums dont elles font partie?"),
"deleteAlbumsDialogBody": MessageLookupByLibrary.simpleMessage(
"Ceci supprimera tous les albums vides. Ceci est utile lorsque vous voulez réduire l\'encombrement dans votre liste d\'albums."),
"deleteAll": MessageLookupByLibrary.simpleMessage("Tout Supprimer"),
@ -541,7 +543,7 @@ class MessageLookup extends MessageLookupByLibrary {
"deleteSharedAlbum": MessageLookupByLibrary.simpleMessage(
"Supprimer l\'album partagé ?"),
"deleteSharedAlbumDialogBody": MessageLookupByLibrary.simpleMessage(
"L\'album sera supprimé pour tout le monde\n\nVous perdrez l\'accès aux photos partagées dans cet album qui est détenues par d\'autres personnes"),
"L\'album sera supprimé pour tout le monde\n\nVous perdrez l\'accès aux photos partagées dans cet album qui sont détenues par d\'autres personnes"),
"deselectAll":
MessageLookupByLibrary.simpleMessage("Tout déselectionner"),
"designedToOutlive":
@ -720,6 +722,8 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Allez aux réglages"),
"googlePlayId":
MessageLookupByLibrary.simpleMessage("Identifiant Google Play"),
"grantFullAccessPrompt": MessageLookupByLibrary.simpleMessage(
"Veuillez autoriser laccès à toutes les photos dans les paramètres"),
"grantPermission":
MessageLookupByLibrary.simpleMessage("Accorder la permission"),
"groupNearbyPhotos": MessageLookupByLibrary.simpleMessage(
@ -873,8 +877,8 @@ class MessageLookup extends MessageLookupByLibrary {
"moveItem": m28,
"moveToAlbum":
MessageLookupByLibrary.simpleMessage("Déplacer vers l\'album"),
"moveToHiddenAlbum":
MessageLookupByLibrary.simpleMessage("Move to hidden album"),
"moveToHiddenAlbum": MessageLookupByLibrary.simpleMessage(
"Déplacer vers un album masqué"),
"movedSuccessfullyTo": m29,
"movedToTrash":
MessageLookupByLibrary.simpleMessage("Déplacé dans la corbeille"),
@ -888,6 +892,7 @@ class MessageLookup extends MessageLookupByLibrary {
"no": MessageLookupByLibrary.simpleMessage("Non"),
"noAlbumsSharedByYouYet": MessageLookupByLibrary.simpleMessage(
"Aucun album que vous avez partagé"),
"noDeviceLimit": MessageLookupByLibrary.simpleMessage("Aucune"),
"noDeviceThatCanBeDeleted": MessageLookupByLibrary.simpleMessage(
"Vous n\'avez pas de fichiers sur cet appareil qui peuvent être supprimés"),
"noDuplicates": MessageLookupByLibrary.simpleMessage("✨ Aucun doublon"),
@ -923,6 +928,8 @@ class MessageLookup extends MessageLookupByLibrary {
"Oups, impossible d\'enregistrer les modifications"),
"oopsSomethingWentWrong": MessageLookupByLibrary.simpleMessage(
"Oups, une erreur est arrivée"),
"openSettings":
MessageLookupByLibrary.simpleMessage("Ouvrir les paramètres"),
"openTheItem":
MessageLookupByLibrary.simpleMessage("• Ouvrir l\'élément"),
"openstreetmapContributors": MessageLookupByLibrary.simpleMessage(
@ -996,6 +1003,8 @@ class MessageLookup extends MessageLookupByLibrary {
"preserveMore": MessageLookupByLibrary.simpleMessage("Conserver plus"),
"pressAndHoldToPlayVideo": MessageLookupByLibrary.simpleMessage(
"Appuyez et maintenez enfoncé pour lire la vidéo"),
"pressAndHoldToPlayVideoDetailed": MessageLookupByLibrary.simpleMessage(
"Maintenez appuyé sur l\'image pour lire la vidéo"),
"privacy": MessageLookupByLibrary.simpleMessage("Confidentialité"),
"privacyPolicyTitle": MessageLookupByLibrary.simpleMessage(
"Politique de Confidentialité"),
@ -1073,7 +1082,7 @@ class MessageLookup extends MessageLookupByLibrary {
"removePublicLink":
MessageLookupByLibrary.simpleMessage("Supprimer le lien public"),
"removeShareItemsWarning": MessageLookupByLibrary.simpleMessage(
"Certains des objets que vous êtes en train de retirer ont été ajoutés par d\'autres personnes, vous perdrez l\'accès vers ces objets"),
"Certains des éléments que vous êtes en train de retirer ont été ajoutés par d\'autres personnes, vous perdrez l\'accès vers ces éléments"),
"removeWithQuestionMark":
MessageLookupByLibrary.simpleMessage("Enlever?"),
"removingFromFavorites":
@ -1139,6 +1148,8 @@ class MessageLookup extends MessageLookupByLibrary {
"Sélectionner les éléments à ajouter"),
"selectLanguage":
MessageLookupByLibrary.simpleMessage("Sélectionner une langue"),
"selectMorePhotos":
MessageLookupByLibrary.simpleMessage("Sélectionner plus de photos"),
"selectReason":
MessageLookupByLibrary.simpleMessage("Sélectionner une raison"),
"selectYourPlan":
@ -1210,7 +1221,7 @@ class MessageLookup extends MessageLookupByLibrary {
"J\'accepte les <u-terms>conditions d\'utilisation</u-terms> et la <u-policy>politique de confidentialité</u-policy>"),
"singleFileDeleteFromDevice": m46,
"singleFileDeleteHighlight": MessageLookupByLibrary.simpleMessage(
"Il sera supprimé de tous les albums."),
"Elle sera supprimée de tous les albums."),
"singleFileInBothLocalAndRemote": m47,
"singleFileInRemoteOnly": m48,
"skip": MessageLookupByLibrary.simpleMessage("Ignorer"),

View file

@ -200,8 +200,7 @@ class MessageLookup extends MessageLookupByLibrary {
"addSelected": MessageLookupByLibrary.simpleMessage("添加所选项"),
"addToAlbum": MessageLookupByLibrary.simpleMessage("添加到相册"),
"addToEnte": MessageLookupByLibrary.simpleMessage("添加到 ente"),
"addToHiddenAlbum":
MessageLookupByLibrary.simpleMessage("Add to hidden album"),
"addToHiddenAlbum": MessageLookupByLibrary.simpleMessage("添加到隐藏相册"),
"addViewer": MessageLookupByLibrary.simpleMessage("添加查看者"),
"addedAs": MessageLookupByLibrary.simpleMessage("已添加为"),
"addedBy": m1,
@ -318,6 +317,8 @@ class MessageLookup extends MessageLookupByLibrary {
"cancelOtherSubscription": m5,
"cancelSubscription": MessageLookupByLibrary.simpleMessage("取消订阅"),
"cannotAddMorePhotosAfterBecomingViewer": m6,
"cannotDeleteSharedFiles":
MessageLookupByLibrary.simpleMessage("无法删除共享文件"),
"centerPoint": MessageLookupByLibrary.simpleMessage("中心点"),
"changeEmail": MessageLookupByLibrary.simpleMessage("修改邮箱"),
"changePassword": MessageLookupByLibrary.simpleMessage("修改密码"),
@ -577,10 +578,13 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("正在生成加密密钥..."),
"goToSettings": MessageLookupByLibrary.simpleMessage("前往设置"),
"googlePlayId": MessageLookupByLibrary.simpleMessage("Google Play ID"),
"grantFullAccessPrompt":
MessageLookupByLibrary.simpleMessage("请在“设置”应用中将权限更改为允许访问所有所有照片"),
"grantPermission": MessageLookupByLibrary.simpleMessage("授予权限"),
"groupNearbyPhotos": MessageLookupByLibrary.simpleMessage("将附近的照片分组"),
"hidden": MessageLookupByLibrary.simpleMessage("已隐藏"),
"hide": MessageLookupByLibrary.simpleMessage("隐藏"),
"hiding": MessageLookupByLibrary.simpleMessage("正在隐藏..."),
"hostedAtOsmFrance": MessageLookupByLibrary.simpleMessage("法国 OSM 主办"),
"howItWorks": MessageLookupByLibrary.simpleMessage("工作原理"),
"howToViewShareeVerificationID": MessageLookupByLibrary.simpleMessage(
@ -700,8 +704,7 @@ class MessageLookup extends MessageLookupByLibrary {
"monthly": MessageLookupByLibrary.simpleMessage("每月"),
"moveItem": m28,
"moveToAlbum": MessageLookupByLibrary.simpleMessage("移动到相册"),
"moveToHiddenAlbum":
MessageLookupByLibrary.simpleMessage("Move to hidden album"),
"moveToHiddenAlbum": MessageLookupByLibrary.simpleMessage("移至隐藏相册"),
"movedSuccessfullyTo": m29,
"movedToTrash": MessageLookupByLibrary.simpleMessage("已移至回收站"),
"movingFilesToAlbum":
@ -714,6 +717,7 @@ class MessageLookup extends MessageLookupByLibrary {
"no": MessageLookupByLibrary.simpleMessage(""),
"noAlbumsSharedByYouYet":
MessageLookupByLibrary.simpleMessage("您尚未共享任何相册"),
"noDeviceLimit": MessageLookupByLibrary.simpleMessage(""),
"noDeviceThatCanBeDeleted":
MessageLookupByLibrary.simpleMessage("您在此设备上没有可被删除的文件"),
"noDuplicates": MessageLookupByLibrary.simpleMessage("✨ 没有重复内容"),
@ -743,6 +747,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("糟糕,无法保存编辑"),
"oopsSomethingWentWrong":
MessageLookupByLibrary.simpleMessage("哎呀,似乎出了点问题"),
"openSettings": MessageLookupByLibrary.simpleMessage("打开“设置”"),
"openTheItem": MessageLookupByLibrary.simpleMessage("• 打开该项目"),
"openstreetmapContributors":
MessageLookupByLibrary.simpleMessage("OpenStreetMap 贡献者"),
@ -798,6 +803,8 @@ class MessageLookup extends MessageLookupByLibrary {
"preserveMore": MessageLookupByLibrary.simpleMessage("保留更多"),
"pressAndHoldToPlayVideo":
MessageLookupByLibrary.simpleMessage("按住以播放视频"),
"pressAndHoldToPlayVideoDetailed":
MessageLookupByLibrary.simpleMessage("长按图像以播放视频"),
"privacy": MessageLookupByLibrary.simpleMessage("隐私"),
"privacyPolicyTitle": MessageLookupByLibrary.simpleMessage("隐私政策"),
"privateBackups": MessageLookupByLibrary.simpleMessage("私人备份"),
@ -901,6 +908,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("选择要备份的文件夹"),
"selectItemsToAdd": MessageLookupByLibrary.simpleMessage("选择要添加的项目"),
"selectLanguage": MessageLookupByLibrary.simpleMessage("选择语言"),
"selectMorePhotos": MessageLookupByLibrary.simpleMessage("选择更多照片"),
"selectReason": MessageLookupByLibrary.simpleMessage("选择原因"),
"selectYourPlan": MessageLookupByLibrary.simpleMessage("选择您的计划"),
"selectedFilesAreNotOnEnte":
@ -953,6 +961,7 @@ class MessageLookup extends MessageLookupByLibrary {
"sharedWithMe": MessageLookupByLibrary.simpleMessage("与我共享"),
"sharedWithYou": MessageLookupByLibrary.simpleMessage("已与您共享"),
"sharing": MessageLookupByLibrary.simpleMessage("正在分享..."),
"showMemories": MessageLookupByLibrary.simpleMessage("显示回忆"),
"signUpTerms": MessageLookupByLibrary.simpleMessage(
"我同意 <u-terms>服务条款</u-terms> 和 <u-policy>隐私政策</u-policy>"),
"singleFileDeleteFromDevice": m46,
@ -1001,8 +1010,10 @@ class MessageLookup extends MessageLookupByLibrary {
"subscription": MessageLookupByLibrary.simpleMessage("订阅"),
"success": MessageLookupByLibrary.simpleMessage("成功"),
"successfullyArchived": MessageLookupByLibrary.simpleMessage("归档成功"),
"successfullyHid": MessageLookupByLibrary.simpleMessage("已成功隐藏"),
"successfullyUnarchived":
MessageLookupByLibrary.simpleMessage("取消归档成功"),
"successfullyUnhid": MessageLookupByLibrary.simpleMessage("已成功取消隐藏"),
"suggestFeatures": MessageLookupByLibrary.simpleMessage("建议新功能"),
"support": MessageLookupByLibrary.simpleMessage("支持"),
"syncProgress": m53,
@ -1078,6 +1089,7 @@ class MessageLookup extends MessageLookupByLibrary {
"uncategorized": MessageLookupByLibrary.simpleMessage("未分类的"),
"unhide": MessageLookupByLibrary.simpleMessage("取消隐藏"),
"unhideToAlbum": MessageLookupByLibrary.simpleMessage("取消隐藏到相册"),
"unhiding": MessageLookupByLibrary.simpleMessage("正在取消隐藏..."),
"unhidingFilesToAlbum":
MessageLookupByLibrary.simpleMessage("正在取消隐藏文件到相册"),
"unlock": MessageLookupByLibrary.simpleMessage("解锁"),

View file

@ -24,6 +24,7 @@
"sendEmail": "E-Mail senden",
"deleteRequestSLAText": "Deine Anfrage wird innerhalb von 72 Stunden bearbeitet.",
"deleteEmailRequest": "Bitte sende eine E-Mail an <warning>account-deletion@ente.io</warning> von Deiner bei uns hinterlegten E-Mail-Adresse.",
"entePhotosPerm": "ente <i>benötigt die Erlaubnis</i> Ihre Fotos zu bewahren",
"ok": "Ok",
"createAccount": "Konto erstellen",
"createNewAccount": "Neues Konto erstellen",
@ -48,6 +49,7 @@
"sorry": "Entschuldigung",
"noRecoveryKeyNoDecryption": "Aufgrund unseres Ende-zu-Ende-Verschlüsselungsprotokolls können deine Daten nicht ohne dein Passwort oder deinen Wiederherstellungs-Schlüssel entschlüsselt werden",
"verifyEmail": "E-Mail-Adresse verifizieren",
"toResetVerifyEmail": "Um Ihr Passwort zurückzusetzen, verifizieren Sie bitte zuerst Ihre E-Mail Adresse.",
"checkInboxAndSpamFolder": "Bitte überprüfe deinen E-Mail-Posteingang (und Spam), um die Verifizierung abzuschließen",
"tapToEnterCode": "Antippen, um den Code einzugeben",
"resendEmail": "E-Mail erneut senden",
@ -187,6 +189,10 @@
"disableDownloadWarningBody": "Zuschauer können weiterhin Screenshots oder mit anderen externen Programmen Kopien der Bilder machen.",
"allowDownloads": "Downloads erlauben",
"linkDeviceLimit": "Geräte Limit",
"noDeviceLimit": "Keins",
"@noDeviceLimit": {
"description": "Text to indicate that there is limit on number of devices"
},
"linkExpiry": "Ablaufdatum des Links",
"linkExpired": "Abgelaufen",
"linkEnabled": "Aktiviert",
@ -199,15 +205,6 @@
"manageLink": "Link verwalten",
"linkExpiresOn": "Link läuft am {expiryTime} ab",
"albumUpdated": "Album aktualisiert",
"maxDeviceLimitSpikeHandling": "Wenn auf den Höchstwert von {maxValue} gesetzt, dann wird das Limit gelockert um potenzielle Höchstlasten unterstützen zu können.",
"@maxDeviceLimitSpikeHandling": {
"placeholders": {
"maxValue": {
"type": "int",
"example": "100"
}
}
},
"never": "Niemals",
"custom": "Benutzerdefiniert",
"@custom": {
@ -417,6 +414,23 @@
"skip": "Überspringen",
"updatingFolderSelection": "Ordnerauswahl wird aktualisiert...",
"itemCount": "{count, plural, one{{count} Objekt} other{{count} Objekte}}",
"deleteItemCount": "{count, plural, one {}=1 {Lösche {count} Element} other {Lösche {count} Elemente}}",
"duplicateItemsGroup": "{count} Dateien, {formattedSize} jede",
"@duplicateItemsGroup": {
"description": "Display the number of duplicate files and their size",
"type": "text",
"placeholders": {
"count": {
"example": "12",
"type": "int"
},
"formattedSize": {
"example": "2.3 MB",
"type": "String"
}
}
},
"showMemories": "Erinnerungen anschauen",
"yearsAgo": "{count, plural, one{vor einem Jahr} other{vor {count} Jahren}}",
"backupSettings": "Backup-Einstellungen",
"backupOverMobileData": "Über mobile Daten sichern",
@ -435,6 +449,8 @@
"authToChangeYourEmail": "Bitte authentifizieren, um deine E-Mail-Adresse zu ändern",
"changePassword": "Passwort ändern",
"authToChangeYourPassword": "Bitte authentifizieren, um das Passwort zu ändern",
"emailVerificationToggle": "E-Mail-Verifizierung",
"authToChangeEmailVerificationSetting": "Bitte Authentifizieren um die E-Mail Bestätigung zu ändern",
"exportYourData": "Daten exportieren",
"logout": "Ausloggen",
"authToInitiateAccountDeletion": "Bitte authentifizieren, um die Löschung des Kontos einzuleiten",
@ -447,6 +463,7 @@
"updateAvailable": "Update verfügbar",
"ignoreUpdate": "Ignorieren",
"downloading": "Wird heruntergeladen...",
"cannotDeleteSharedFiles": "Konnte geteilte Dateien nicht löschen",
"theDownloadCouldNotBeCompleted": "Der Download konnte nicht abgeschlossen werden",
"retry": "Erneut versuchen",
"backedUpFolders": "Gesicherte Ordner",
@ -490,6 +507,9 @@
},
"familyPlans": "Familientarif",
"referrals": "Weiterempfehlungen",
"notifications": "Benachrichtigungen",
"sharedPhotoNotifications": "Neue geteilte Fotos",
"sharedPhotoNotificationsExplanation": "Erhalte Benachrichtigungen, wenn jemand ein Foto zu einem gemeinsam genutzten Album hinzufügt, dem du angehörst",
"advanced": "Erweitert",
"general": "Allgemein",
"security": "Sicherheit",
@ -538,6 +558,7 @@
"faqs": "FAQs",
"renewsOn": "Erneuert am {endDate}",
"freeTrialValidTill": "Kostenlose Demo verfügbar bis zum {endDate}",
"playStoreFreeTrialValidTill": "Kostenlose Testversion gültig bis {endDate}.\nSie können anschließend ein bezahltes Paket auswählen.",
"subWillBeCancelledOn": "Ihr Abo endet am {endDate}",
"subscription": "Abonnement",
"paymentDetails": "Zahlungsdetails",
@ -619,6 +640,9 @@
"startBackup": "Sicherung starten",
"noPhotosAreBeingBackedUpRightNow": "Momentan werden keine Fotos gesichert",
"preserveMore": "Mehr Daten sichern",
"grantFullAccessPrompt": "Bitte gewähre Zugang zu allen Fotos in der Einstellungen App",
"openSettings": "Öffne Einstellungen",
"selectMorePhotos": "Mehr Fotos auswählen",
"existingUser": "Existierender Benutzer",
"privateBackups": "Private Sicherungen",
"forYourMemories": "Als Erinnerung",
@ -742,6 +766,7 @@
},
"deleteAll": "Alle löschen",
"renameAlbum": "Album umbenennen",
"convertToAlbum": "Konvertiere zum Album",
"setCover": "Titelbild festlegen",
"@setCover": {
"description": "Text to set cover photo for an album"
@ -788,6 +813,7 @@
"fileFailedToSaveToGallery": "Fehler beim Speichern der Datei in der Galerie",
"download": "Herunterladen",
"pressAndHoldToPlayVideo": "Gedrückt halten, um Video abzuspielen",
"pressAndHoldToPlayVideoDetailed": "Drücke und halte aufs Foto gedrückt um Video abzuspielen",
"downloadFailed": "Herunterladen fehlgeschlagen",
"deduplicateFiles": "Dateien duplizieren",
"deselectAll": "Alle abwählen",
@ -945,6 +971,10 @@
"centerPoint": "Mittelpunkt",
"pickCenterPoint": "Mittelpunkt auswählen",
"useSelectedPhoto": "Ausgewähltes Foto verwenden",
"resetToDefault": "Standardwerte zurücksetzen",
"@resetToDefault": {
"description": "Button text to reset cover photo to default"
},
"edit": "Bearbeiten",
"deleteLocation": "Standort löschen",
"rotateLeft": "Nach links drehen",
@ -1048,6 +1078,29 @@
"maps": "Karten",
"enableMaps": "Karten aktivieren",
"enableMapsDesc": "Dies zeigt Ihre Fotos auf einer Weltkarte.\n\nDiese Karte wird von OpenStreetMap gehostet und die genauen Standorte Ihrer Fotos werden niemals geteilt.\n\nSie können diese Funktion jederzeit in den Einstellungen deaktivieren.",
"addToHiddenAlbum": "Add to hidden album",
"moveToHiddenAlbum": "Move to hidden album"
"quickLinks": "Quick Links",
"selectItemsToAdd": "Elemente zum Hinzufügen auswählen",
"addSelected": "Auswahl hinzufügen",
"addFromDevice": "Vom Gerät hinzufügen",
"addPhotos": "Fotos hinzufügen",
"noPhotosFoundHere": "Keine Fotos gefunden",
"zoomOutToSeePhotos": "Verkleinern, um Fotos zu sehen",
"noImagesWithLocation": "Keine Bilder mit Standort",
"unpinAlbum": "Album lösen",
"pinAlbum": "Album anheften",
"create": "Erstellen",
"viewAll": "Alle anzeigen",
"nothingSharedWithYouYet": "Noch nichts mit Dir geteilt",
"noAlbumsSharedByYouYet": "Noch keine Alben von dir geteilt",
"sharedWithYou": "Mit dir geteilt",
"sharedByYou": "Von dir geteilt",
"inviteYourFriendsToEnte": "Lade deine Freunde zu ente ein",
"failedToDownloadVideo": "Herunterladen des Videos fehlgeschlagen",
"hiding": "Verstecken...",
"unhiding": "Einblenden...",
"successfullyHid": "Erfolgreich versteckt",
"successfullyUnhid": "Erfolgreich eingeblendet",
"crashReporting": "Absturzbericht",
"addToHiddenAlbum": "Zum versteckten Album hinzufügen",
"moveToHiddenAlbum": "Zu verstecktem Album verschieben"
}

View file

@ -189,6 +189,10 @@
"disableDownloadWarningBody": "Les téléspectateurs peuvent toujours prendre des captures d'écran ou enregistrer une copie de vos photos en utilisant des outils externes",
"allowDownloads": "Autoriser les téléchargements",
"linkDeviceLimit": "Limite d'appareil",
"noDeviceLimit": "Aucune",
"@noDeviceLimit": {
"description": "Text to indicate that there is limit on number of devices"
},
"linkExpiry": "Expiration du lien",
"linkExpired": "Expiré",
"linkEnabled": "Activé",
@ -201,15 +205,6 @@
"manageLink": "Gérer le lien",
"linkExpiresOn": "Le lien expirera le {expiryTime}",
"albumUpdated": "Album mis à jour",
"maxDeviceLimitSpikeHandling": "Lorsqu'elle est définie au maximum ({maxValue}), la limite de l'appareil sera assouplie pour permettre des pointes temporaires d'un grand nombre de téléspectateurs.",
"@maxDeviceLimitSpikeHandling": {
"placeholders": {
"maxValue": {
"type": "int",
"example": "100"
}
}
},
"never": "Jamais",
"custom": "Personnaliser",
"@custom": {
@ -321,7 +316,7 @@
"removeFromAlbumTitle": "Retirer de l'album?",
"removeFromAlbum": "Retirer de l'album",
"itemsWillBeRemovedFromAlbum": "Les éléments sélectionnés seront supprimés de cet album",
"removeShareItemsWarning": "Certains des objets que vous êtes en train de retirer ont été ajoutés par d'autres personnes, vous perdrez l'accès vers ces objets",
"removeShareItemsWarning": "Certains des éléments que vous êtes en train de retirer ont été ajoutés par d'autres personnes, vous perdrez l'accès vers ces éléments",
"addingToFavorites": "Ajout aux favoris...",
"removingFromFavorites": "Suppression des favoris…",
"sorryCouldNotAddToFavorites": "Désolé, impossible d'ajouter aux favoris !",
@ -331,8 +326,8 @@
"canOnlyRemoveFilesOwnedByYou": "Vous ne pouvez supprimer que les fichiers que vous possédez",
"deleteSharedAlbum": "Supprimer l'album partagé ?",
"deleteAlbum": "Supprimer l'album",
"deleteAlbumDialog": "Supprimer aussi les photos (et vidéos) présentes dans cet album depuis <bold>tous</bold> les autres albums dont ils font partie?",
"deleteSharedAlbumDialogBody": "L'album sera supprimé pour tout le monde\n\nVous perdrez l'accès aux photos partagées dans cet album qui est détenues par d'autres personnes",
"deleteAlbumDialog": "Supprimer aussi les photos (et vidéos) présentes dans cet album de <bold>tous</bold> les autres albums dont elles font partie?",
"deleteSharedAlbumDialogBody": "L'album sera supprimé pour tout le monde\n\nVous perdrez l'accès aux photos partagées dans cet album qui sont détenues par d'autres personnes",
"yesRemove": "Oui, supprimer",
"creatingLink": "Création du lien...",
"removeWithQuestionMark": "Enlever?",
@ -354,10 +349,10 @@
"uncategorized": "Aucune catégorie",
"videoSmallCase": "vidéo",
"photoSmallCase": "photo",
"singleFileDeleteHighlight": "Il sera supprimé de tous les albums.",
"singleFileInBothLocalAndRemote": "Ce {fileType} est à la fois dans ente et votre appareil.",
"singleFileDeleteHighlight": "Elle sera supprimée de tous les albums.",
"singleFileInBothLocalAndRemote": "Cette {fileType} est à la fois sur ente et sur votre appareil.",
"singleFileInRemoteOnly": "Ce {fileType} sera supprimé de ente.",
"singleFileDeleteFromDevice": "Ce {fileType} sera supprimé de votre appareil.",
"singleFileDeleteFromDevice": "Elle {fileType} sera supprimée de votre appareil.",
"deleteFromEnte": "Supprimer de ente",
"yesDelete": "Oui, supprimer",
"movedToTrash": "Déplacé dans la corbeille",
@ -380,7 +375,7 @@
}
}
},
"selectedPhotos": "{count} sélectionné",
"selectedPhotos": "{count} sélectionné(s)",
"@selectedPhotos": {
"description": "Display the number of selected photos",
"type": "text",
@ -391,7 +386,7 @@
}
}
},
"selectedPhotosWithYours": "{count} sélectionné ({yourCount} votre)",
"selectedPhotosWithYours": "{count} sélectionné(s) ({yourCount} à vous)",
"@selectedPhotosWithYours": {
"description": "Display the number of selected photos, including the number of selected photos owned by the user",
"type": "text",
@ -436,7 +431,7 @@
}
},
"showMemories": "Montrer les souvenirs",
"yearsAgo": "{count, plural, one{{count} il y a un an} other{{count} il y a des années}}",
"yearsAgo": "{count, plural, one{il y a {count} an} other{il y a {count} ans}}",
"backupSettings": "Paramètres de la sauvegarde",
"backupOverMobileData": "Sauvegarde sur données mobiles",
"backupVideos": "Sauvegarde des vidéos",
@ -468,6 +463,7 @@
"updateAvailable": "Une mise à jour est disponible",
"ignoreUpdate": "Ignorer",
"downloading": "Téléchargement en cours...",
"cannotDeleteSharedFiles": "Les fichiers partagés ne peuvent pas être supprimés",
"theDownloadCouldNotBeCompleted": "Le téléchargement n'a pas pu être terminé",
"retry": "Réessayer",
"backedUpFolders": "Dossiers sauvegardés",
@ -644,6 +640,9 @@
"startBackup": "Démarrer la sauvegarde",
"noPhotosAreBeingBackedUpRightNow": "Aucune photo en cours de sauvegarde",
"preserveMore": "Conserver plus",
"grantFullAccessPrompt": "Veuillez autoriser laccès à toutes les photos dans les paramètres",
"openSettings": "Ouvrir les paramètres",
"selectMorePhotos": "Sélectionner plus de photos",
"existingUser": "Utilisateur existant",
"privateBackups": "Sauvegardes privées",
"forYourMemories": "pour vos souvenirs",
@ -814,6 +813,7 @@
"fileFailedToSaveToGallery": "Échec de l'enregistrement dans la galerie",
"download": "Télécharger",
"pressAndHoldToPlayVideo": "Appuyez et maintenez enfoncé pour lire la vidéo",
"pressAndHoldToPlayVideoDetailed": "Maintenez appuyé sur l'image pour lire la vidéo",
"downloadFailed": "Échec du téléchargement",
"deduplicateFiles": "Déduplication de fichiers",
"deselectAll": "Tout déselectionner",
@ -862,7 +862,7 @@
"@freeUpSpaceSaving": {
"description": "Text to tell user how much space they can free up by deleting items from the device"
},
"freeUpAccessPostDelete": "Vous pouvez toujours accéder à {count, plural, one {it} other {them}} sur ente tant que vous avez un abonnement actif",
"freeUpAccessPostDelete": "Vous pouvez toujours {count, plural, one {y} other {y}} accéder sur ente tant que vous avez un abonnement actif",
"@freeUpAccessPostDelete": {
"placeholders": {
"count": {
@ -1101,6 +1101,6 @@
"successfullyHid": "Masquage réussi",
"successfullyUnhid": "Masquage réussi",
"crashReporting": "Rapports d'erreurs",
"addToHiddenAlbum": "Add to hidden album",
"moveToHiddenAlbum": "Move to hidden album"
"addToHiddenAlbum": "Ajouter à un album masqué",
"moveToHiddenAlbum": "Déplacer vers un album masqué"
}

View file

@ -189,6 +189,10 @@
"disableDownloadWarningBody": "查看者仍然可以使用外部工具截图或保存您的照片副本",
"allowDownloads": "允许下载",
"linkDeviceLimit": "设备限制",
"noDeviceLimit": "无",
"@noDeviceLimit": {
"description": "Text to indicate that there is limit on number of devices"
},
"linkExpiry": "链接过期",
"linkExpired": "已过期",
"linkEnabled": "已启用",
@ -201,15 +205,6 @@
"manageLink": "管理链接",
"linkExpiresOn": "链接将在 {expiryTime} 过期",
"albumUpdated": "相册已更新",
"maxDeviceLimitSpikeHandling": "当设置为最大值 ({maxValue}) 时,设备限制将放宽以允许大量查看者查看的临时高峰。",
"@maxDeviceLimitSpikeHandling": {
"placeholders": {
"maxValue": {
"type": "int",
"example": "100"
}
}
},
"never": "永不",
"custom": "自定义",
"@custom": {
@ -435,6 +430,7 @@
}
}
},
"showMemories": "显示回忆",
"yearsAgo": "{count, plural, one{{count} 年前} other{{count} 年前}}",
"backupSettings": "备份设置",
"backupOverMobileData": "通过移动数据备份",
@ -467,6 +463,7 @@
"updateAvailable": "有可用的更新",
"ignoreUpdate": "忽略",
"downloading": "正在下载...",
"cannotDeleteSharedFiles": "无法删除共享文件",
"theDownloadCouldNotBeCompleted": "未能完成下载",
"retry": "重试",
"backedUpFolders": "已备份的文件夹",
@ -643,6 +640,9 @@
"startBackup": "开始备份",
"noPhotosAreBeingBackedUpRightNow": "目前没有照片正在备份",
"preserveMore": "保留更多",
"grantFullAccessPrompt": "请在“设置”应用中将权限更改为允许访问所有所有照片",
"openSettings": "打开“设置”",
"selectMorePhotos": "选择更多照片",
"existingUser": "现有用户",
"privateBackups": "私人备份",
"forYourMemories": "为您的回忆",
@ -813,6 +813,7 @@
"fileFailedToSaveToGallery": "无法将文件保存到相册",
"download": "下载",
"pressAndHoldToPlayVideo": "按住以播放视频",
"pressAndHoldToPlayVideoDetailed": "长按图像以播放视频",
"downloadFailed": "下載失敗",
"deduplicateFiles": "重复文件",
"deselectAll": "取消全选",
@ -1095,7 +1096,11 @@
"sharedByYou": "您共享的",
"inviteYourFriendsToEnte": "邀请您的好友加入ente",
"failedToDownloadVideo": "视频下载失败",
"hiding": "正在隐藏...",
"unhiding": "正在取消隐藏...",
"successfullyHid": "已成功隐藏",
"successfullyUnhid": "已成功取消隐藏",
"crashReporting": "崩溃报告",
"addToHiddenAlbum": "Add to hidden album",
"moveToHiddenAlbum": "Move to hidden album"
"addToHiddenAlbum": "添加到隐藏相册",
"moveToHiddenAlbum": "移至隐藏相册"
}

View file

@ -27,4 +27,27 @@ class Location with _$Location {
if (latValue == 0.0 && longValue == 0.0) return false;
return true;
}
// isValidRange checks if the latitude and longitude are within the valid range
// for latitude and longitude. Note: We are only checking the range while
// rending location on the map. We need to investigate in which cases we are
// parsing incorrect location value.
static bool isValidRange({
required double latitude,
required double longitude,
}) {
if (latitude.isNaN || latitude.isInfinite) {
return false;
}
if (longitude.isNaN || longitude.isInfinite) {
return false;
}
if (latitude >= 90 || latitude <= -90) {
return false;
}
if (longitude >= 180 || longitude <= -180) {
return false;
}
return true;
}
}

View file

@ -25,8 +25,9 @@ class NotificationService {
NotificationResponse notificationResponse,
)
onNotificationTapped,
SharedPreferences preferences,
) async {
_preferences = await SharedPreferences.getInstance();
_preferences = preferences;
const androidSettings = AndroidInitializationSettings('notification_icon');
const iosSettings = DarwinInitializationSettings(
requestAlertPermission: false,

View file

@ -139,6 +139,11 @@ class RemoteSyncService {
Bus.instance.fire(SyncStatusUpdate(SyncStatus.completedBackup));
}
} else {
// if filesToBeUploaded is empty, clear any stale files in the temp
// directory
if (filesToBeUploaded.isEmpty) {
await _uploader.removeStaleFiles();
}
_existingSync?.complete();
_existingSync = null;
}

View file

@ -9,6 +9,7 @@ import "package:latlong2/latlong.dart";
import "package:logging/logging.dart";
import "package:photos/generated/l10n.dart";
import 'package:photos/models/file/file.dart';
import "package:photos/models/location/location.dart";
import "package:photos/theme/ente_theme.dart";
import "package:photos/ui/common/loading_widget.dart";
import "package:photos/ui/map/image_marker.dart";
@ -78,9 +79,17 @@ class _MapScreenState extends State<MapScreen> {
bool hasAnyLocation = false;
EnteFile? mostRecentFile;
for (var file in files) {
if (file.hasLocation && file.location != null) {
if (file.hasLocation) {
if (!Location.isValidRange(
latitude: file.location!.latitude!,
longitude: file.location!.longitude!,
)) {
_logger.warning(
'Skipping file with invalid location ${file.toString()}',
);
continue;
}
hasAnyLocation = true;
if (mostRecentFile == null) {
mostRecentFile = file;
} else {

View file

@ -54,6 +54,7 @@ import "package:photos/ui/viewer/gallery/collection_page.dart";
import 'package:photos/utils/dialog_util.dart';
import "package:photos/utils/navigation_util.dart";
import 'package:receive_sharing_intent/receive_sharing_intent.dart';
import "package:shared_preferences/shared_preferences.dart";
import 'package:uni_links/uni_links.dart';
class HomeWidget extends StatefulWidget {
@ -209,7 +210,10 @@ class _HomeWidgetState extends State<HomeWidget> {
),
);
NotificationService.instance.init(_onDidReceiveNotificationResponse);
SharedPreferences.getInstance().then((preferences) {
NotificationService.instance
.init(_onDidReceiveNotificationResponse, preferences);
});
super.initState();
}
@ -278,10 +282,12 @@ class _HomeWidgetState extends State<HomeWidget> {
);
// For sharing images coming from outside the app while the app is closed
ReceiveSharingIntent.getInitialMedia().then((List<SharedMediaFile> value) {
setState(() {
_sharedFiles = value;
_shouldRenderCreateCollectionSheet = true;
});
if (mounted) {
setState(() {
_sharedFiles = value;
_shouldRenderCreateCollectionSheet = true;
});
}
});
}

View file

@ -130,7 +130,7 @@ class _UserCollectionsTabState extends State<UserCollectionsTab>
padding: const EdgeInsets.only(left: 12, right: 6),
),
),
SliverToBoxAdapter(child: DeleteEmptyAlbums(collections ?? [])),
SliverToBoxAdapter(child: DeleteEmptyAlbums(collections)),
Configuration.instance.hasConfiguredAccount()
? CollectionsFlexiGridViewWidget(
collections,

View file

@ -42,7 +42,6 @@ class _DeleteEmptyAlbumsState extends State<DeleteEmptyAlbums> {
})
.toList()
.length;
debugPrint("Empty albums count $emptyAlbumCount");
return emptyAlbumCount > 2;
}

View file

@ -152,12 +152,16 @@ class _ZoomableImageState extends State<ZoomableImage>
if (!_loadedFinalImage && !_loadingFinalImage) {
_loadingFinalImage = true;
getFileFromServer(_photo).then((file) {
_onFinalImageLoaded(
Image.file(
file!,
gaplessPlayback: true,
).image,
);
if (file != null) {
_onFinalImageLoaded(
Image.file(
file,
gaplessPlayback: true,
).image,
);
} else {
_loadingFinalImage = false;
}
});
}
}

View file

@ -106,6 +106,9 @@ class _LazyGroupGalleryState extends State<LazyGroupGallery> {
}
Future _onReload(FilesUpdatedEvent event) async {
if (_files.isEmpty) {
return;
}
final DateTime groupDate =
DateTime.fromMicrosecondsSinceEpoch(_files[0].creationTime!);
// iterate over files and check if any of the belongs to this group

View file

@ -45,6 +45,7 @@ class FileUploader {
static const kBlockedUploadsPollFrequency = Duration(seconds: 2);
static const kFileUploadTimeout = Duration(minutes: 50);
static const k20MBStorageBuffer = 20 * 1024 * 1024;
static const kUploadTempPrefix = "upload_file_";
final _logger = Logger("FileUploader");
final _dio = NetworkClient.instance.getDio();
@ -282,6 +283,29 @@ class FileUploader {
}
}
Future<void> removeStaleFiles() async {
try {
final String dir = Configuration.instance.getTempDirectory();
// delete all files in the temp directory that start with upload_ and
// ends with .encrypted. Fetch files in async manner
final files = await Directory(dir).list().toList();
final filesToDelete = files.where((file) {
return file.path.contains(kUploadTempPrefix) &&
file.path.contains(".encrypted");
});
if (filesToDelete.isEmpty) {
return;
}
_logger.info('cleaning up state files ${filesToDelete.length}');
for (final file in filesToDelete) {
await file.delete();
}
} catch (e, s) {
_logger.severe("Failed to remove stale files", e, s);
}
}
Future<void> checkNetworkForUpload({bool isForceUpload = false}) async {
// Note: We don't support force uploading currently. During force upload,
// network check is skipped completely
@ -340,8 +364,10 @@ class FileUploader {
final tempDirectory = Configuration.instance.getTempDirectory();
final String uniqueID = const Uuid().v4().toString();
final encryptedFilePath = '$tempDirectory${uniqueID}_file.encrypted';
final encryptedThumbnailPath = '$tempDirectory${uniqueID}_thumb.encrypted';
final encryptedFilePath =
'$tempDirectory$kUploadTempPrefix${uniqueID}_file.encrypted';
final encryptedThumbnailPath =
'$tempDirectory$kUploadTempPrefix${uniqueID}_thumb.encrypted';
MediaUploadData? mediaUploadData;
var uploadCompleted = false;
// This flag is used to decide whether to clear the iOS origin file cache