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

View file

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

View file

@ -24,6 +24,7 @@
"sendEmail": "E-Mail senden", "sendEmail": "E-Mail senden",
"deleteRequestSLAText": "Deine Anfrage wird innerhalb von 72 Stunden bearbeitet.", "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.", "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", "ok": "Ok",
"createAccount": "Konto erstellen", "createAccount": "Konto erstellen",
"createNewAccount": "Neues Konto erstellen", "createNewAccount": "Neues Konto erstellen",
@ -48,6 +49,7 @@
"sorry": "Entschuldigung", "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", "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", "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", "checkInboxAndSpamFolder": "Bitte überprüfe deinen E-Mail-Posteingang (und Spam), um die Verifizierung abzuschließen",
"tapToEnterCode": "Antippen, um den Code einzugeben", "tapToEnterCode": "Antippen, um den Code einzugeben",
"resendEmail": "E-Mail erneut senden", "resendEmail": "E-Mail erneut senden",
@ -187,6 +189,10 @@
"disableDownloadWarningBody": "Zuschauer können weiterhin Screenshots oder mit anderen externen Programmen Kopien der Bilder machen.", "disableDownloadWarningBody": "Zuschauer können weiterhin Screenshots oder mit anderen externen Programmen Kopien der Bilder machen.",
"allowDownloads": "Downloads erlauben", "allowDownloads": "Downloads erlauben",
"linkDeviceLimit": "Geräte Limit", "linkDeviceLimit": "Geräte Limit",
"noDeviceLimit": "Keins",
"@noDeviceLimit": {
"description": "Text to indicate that there is limit on number of devices"
},
"linkExpiry": "Ablaufdatum des Links", "linkExpiry": "Ablaufdatum des Links",
"linkExpired": "Abgelaufen", "linkExpired": "Abgelaufen",
"linkEnabled": "Aktiviert", "linkEnabled": "Aktiviert",
@ -199,15 +205,6 @@
"manageLink": "Link verwalten", "manageLink": "Link verwalten",
"linkExpiresOn": "Link läuft am {expiryTime} ab", "linkExpiresOn": "Link läuft am {expiryTime} ab",
"albumUpdated": "Album aktualisiert", "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", "never": "Niemals",
"custom": "Benutzerdefiniert", "custom": "Benutzerdefiniert",
"@custom": { "@custom": {
@ -417,6 +414,23 @@
"skip": "Überspringen", "skip": "Überspringen",
"updatingFolderSelection": "Ordnerauswahl wird aktualisiert...", "updatingFolderSelection": "Ordnerauswahl wird aktualisiert...",
"itemCount": "{count, plural, one{{count} Objekt} other{{count} Objekte}}", "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}}", "yearsAgo": "{count, plural, one{vor einem Jahr} other{vor {count} Jahren}}",
"backupSettings": "Backup-Einstellungen", "backupSettings": "Backup-Einstellungen",
"backupOverMobileData": "Über mobile Daten sichern", "backupOverMobileData": "Über mobile Daten sichern",
@ -435,6 +449,8 @@
"authToChangeYourEmail": "Bitte authentifizieren, um deine E-Mail-Adresse zu ändern", "authToChangeYourEmail": "Bitte authentifizieren, um deine E-Mail-Adresse zu ändern",
"changePassword": "Passwort ändern", "changePassword": "Passwort ändern",
"authToChangeYourPassword": "Bitte authentifizieren, um das Passwort zu ä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", "exportYourData": "Daten exportieren",
"logout": "Ausloggen", "logout": "Ausloggen",
"authToInitiateAccountDeletion": "Bitte authentifizieren, um die Löschung des Kontos einzuleiten", "authToInitiateAccountDeletion": "Bitte authentifizieren, um die Löschung des Kontos einzuleiten",
@ -447,6 +463,7 @@
"updateAvailable": "Update verfügbar", "updateAvailable": "Update verfügbar",
"ignoreUpdate": "Ignorieren", "ignoreUpdate": "Ignorieren",
"downloading": "Wird heruntergeladen...", "downloading": "Wird heruntergeladen...",
"cannotDeleteSharedFiles": "Konnte geteilte Dateien nicht löschen",
"theDownloadCouldNotBeCompleted": "Der Download konnte nicht abgeschlossen werden", "theDownloadCouldNotBeCompleted": "Der Download konnte nicht abgeschlossen werden",
"retry": "Erneut versuchen", "retry": "Erneut versuchen",
"backedUpFolders": "Gesicherte Ordner", "backedUpFolders": "Gesicherte Ordner",
@ -490,6 +507,9 @@
}, },
"familyPlans": "Familientarif", "familyPlans": "Familientarif",
"referrals": "Weiterempfehlungen", "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", "advanced": "Erweitert",
"general": "Allgemein", "general": "Allgemein",
"security": "Sicherheit", "security": "Sicherheit",
@ -538,6 +558,7 @@
"faqs": "FAQs", "faqs": "FAQs",
"renewsOn": "Erneuert am {endDate}", "renewsOn": "Erneuert am {endDate}",
"freeTrialValidTill": "Kostenlose Demo verfügbar bis zum {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}", "subWillBeCancelledOn": "Ihr Abo endet am {endDate}",
"subscription": "Abonnement", "subscription": "Abonnement",
"paymentDetails": "Zahlungsdetails", "paymentDetails": "Zahlungsdetails",
@ -619,6 +640,9 @@
"startBackup": "Sicherung starten", "startBackup": "Sicherung starten",
"noPhotosAreBeingBackedUpRightNow": "Momentan werden keine Fotos gesichert", "noPhotosAreBeingBackedUpRightNow": "Momentan werden keine Fotos gesichert",
"preserveMore": "Mehr Daten sichern", "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", "existingUser": "Existierender Benutzer",
"privateBackups": "Private Sicherungen", "privateBackups": "Private Sicherungen",
"forYourMemories": "Als Erinnerung", "forYourMemories": "Als Erinnerung",
@ -742,6 +766,7 @@
}, },
"deleteAll": "Alle löschen", "deleteAll": "Alle löschen",
"renameAlbum": "Album umbenennen", "renameAlbum": "Album umbenennen",
"convertToAlbum": "Konvertiere zum Album",
"setCover": "Titelbild festlegen", "setCover": "Titelbild festlegen",
"@setCover": { "@setCover": {
"description": "Text to set cover photo for an album" "description": "Text to set cover photo for an album"
@ -788,6 +813,7 @@
"fileFailedToSaveToGallery": "Fehler beim Speichern der Datei in der Galerie", "fileFailedToSaveToGallery": "Fehler beim Speichern der Datei in der Galerie",
"download": "Herunterladen", "download": "Herunterladen",
"pressAndHoldToPlayVideo": "Gedrückt halten, um Video abzuspielen", "pressAndHoldToPlayVideo": "Gedrückt halten, um Video abzuspielen",
"pressAndHoldToPlayVideoDetailed": "Drücke und halte aufs Foto gedrückt um Video abzuspielen",
"downloadFailed": "Herunterladen fehlgeschlagen", "downloadFailed": "Herunterladen fehlgeschlagen",
"deduplicateFiles": "Dateien duplizieren", "deduplicateFiles": "Dateien duplizieren",
"deselectAll": "Alle abwählen", "deselectAll": "Alle abwählen",
@ -945,6 +971,10 @@
"centerPoint": "Mittelpunkt", "centerPoint": "Mittelpunkt",
"pickCenterPoint": "Mittelpunkt auswählen", "pickCenterPoint": "Mittelpunkt auswählen",
"useSelectedPhoto": "Ausgewähltes Foto verwenden", "useSelectedPhoto": "Ausgewähltes Foto verwenden",
"resetToDefault": "Standardwerte zurücksetzen",
"@resetToDefault": {
"description": "Button text to reset cover photo to default"
},
"edit": "Bearbeiten", "edit": "Bearbeiten",
"deleteLocation": "Standort löschen", "deleteLocation": "Standort löschen",
"rotateLeft": "Nach links drehen", "rotateLeft": "Nach links drehen",
@ -1048,6 +1078,29 @@
"maps": "Karten", "maps": "Karten",
"enableMaps": "Karten aktivieren", "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.", "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", "quickLinks": "Quick Links",
"moveToHiddenAlbum": "Move to hidden album" "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", "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", "allowDownloads": "Autoriser les téléchargements",
"linkDeviceLimit": "Limite d'appareil", "linkDeviceLimit": "Limite d'appareil",
"noDeviceLimit": "Aucune",
"@noDeviceLimit": {
"description": "Text to indicate that there is limit on number of devices"
},
"linkExpiry": "Expiration du lien", "linkExpiry": "Expiration du lien",
"linkExpired": "Expiré", "linkExpired": "Expiré",
"linkEnabled": "Activé", "linkEnabled": "Activé",
@ -201,15 +205,6 @@
"manageLink": "Gérer le lien", "manageLink": "Gérer le lien",
"linkExpiresOn": "Le lien expirera le {expiryTime}", "linkExpiresOn": "Le lien expirera le {expiryTime}",
"albumUpdated": "Album mis à jour", "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", "never": "Jamais",
"custom": "Personnaliser", "custom": "Personnaliser",
"@custom": { "@custom": {
@ -321,7 +316,7 @@
"removeFromAlbumTitle": "Retirer de l'album?", "removeFromAlbumTitle": "Retirer de l'album?",
"removeFromAlbum": "Retirer de l'album", "removeFromAlbum": "Retirer de l'album",
"itemsWillBeRemovedFromAlbum": "Les éléments sélectionnés seront supprimés de cet 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...", "addingToFavorites": "Ajout aux favoris...",
"removingFromFavorites": "Suppression des favoris…", "removingFromFavorites": "Suppression des favoris…",
"sorryCouldNotAddToFavorites": "Désolé, impossible d'ajouter aux 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", "canOnlyRemoveFilesOwnedByYou": "Vous ne pouvez supprimer que les fichiers que vous possédez",
"deleteSharedAlbum": "Supprimer l'album partagé ?", "deleteSharedAlbum": "Supprimer l'album partagé ?",
"deleteAlbum": "Supprimer l'album", "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?", "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 est détenues par d'autres personnes", "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", "yesRemove": "Oui, supprimer",
"creatingLink": "Création du lien...", "creatingLink": "Création du lien...",
"removeWithQuestionMark": "Enlever?", "removeWithQuestionMark": "Enlever?",
@ -354,10 +349,10 @@
"uncategorized": "Aucune catégorie", "uncategorized": "Aucune catégorie",
"videoSmallCase": "vidéo", "videoSmallCase": "vidéo",
"photoSmallCase": "photo", "photoSmallCase": "photo",
"singleFileDeleteHighlight": "Il sera supprimé de tous les albums.", "singleFileDeleteHighlight": "Elle sera supprimée de tous les albums.",
"singleFileInBothLocalAndRemote": "Ce {fileType} est à la fois dans ente et votre appareil.", "singleFileInBothLocalAndRemote": "Cette {fileType} est à la fois sur ente et sur votre appareil.",
"singleFileInRemoteOnly": "Ce {fileType} sera supprimé de ente.", "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", "deleteFromEnte": "Supprimer de ente",
"yesDelete": "Oui, supprimer", "yesDelete": "Oui, supprimer",
"movedToTrash": "Déplacé dans la corbeille", "movedToTrash": "Déplacé dans la corbeille",
@ -380,7 +375,7 @@
} }
} }
}, },
"selectedPhotos": "{count} sélectionné", "selectedPhotos": "{count} sélectionné(s)",
"@selectedPhotos": { "@selectedPhotos": {
"description": "Display the number of selected photos", "description": "Display the number of selected photos",
"type": "text", "type": "text",
@ -391,7 +386,7 @@
} }
} }
}, },
"selectedPhotosWithYours": "{count} sélectionné ({yourCount} votre)", "selectedPhotosWithYours": "{count} sélectionné(s) ({yourCount} à vous)",
"@selectedPhotosWithYours": { "@selectedPhotosWithYours": {
"description": "Display the number of selected photos, including the number of selected photos owned by the user", "description": "Display the number of selected photos, including the number of selected photos owned by the user",
"type": "text", "type": "text",
@ -436,7 +431,7 @@
} }
}, },
"showMemories": "Montrer les souvenirs", "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", "backupSettings": "Paramètres de la sauvegarde",
"backupOverMobileData": "Sauvegarde sur données mobiles", "backupOverMobileData": "Sauvegarde sur données mobiles",
"backupVideos": "Sauvegarde des vidéos", "backupVideos": "Sauvegarde des vidéos",
@ -468,6 +463,7 @@
"updateAvailable": "Une mise à jour est disponible", "updateAvailable": "Une mise à jour est disponible",
"ignoreUpdate": "Ignorer", "ignoreUpdate": "Ignorer",
"downloading": "Téléchargement en cours...", "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é", "theDownloadCouldNotBeCompleted": "Le téléchargement n'a pas pu être terminé",
"retry": "Réessayer", "retry": "Réessayer",
"backedUpFolders": "Dossiers sauvegardés", "backedUpFolders": "Dossiers sauvegardés",
@ -644,6 +640,9 @@
"startBackup": "Démarrer la sauvegarde", "startBackup": "Démarrer la sauvegarde",
"noPhotosAreBeingBackedUpRightNow": "Aucune photo en cours de sauvegarde", "noPhotosAreBeingBackedUpRightNow": "Aucune photo en cours de sauvegarde",
"preserveMore": "Conserver plus", "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", "existingUser": "Utilisateur existant",
"privateBackups": "Sauvegardes privées", "privateBackups": "Sauvegardes privées",
"forYourMemories": "pour vos souvenirs", "forYourMemories": "pour vos souvenirs",
@ -814,6 +813,7 @@
"fileFailedToSaveToGallery": "Échec de l'enregistrement dans la galerie", "fileFailedToSaveToGallery": "Échec de l'enregistrement dans la galerie",
"download": "Télécharger", "download": "Télécharger",
"pressAndHoldToPlayVideo": "Appuyez et maintenez enfoncé pour lire la vidéo", "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", "downloadFailed": "Échec du téléchargement",
"deduplicateFiles": "Déduplication de fichiers", "deduplicateFiles": "Déduplication de fichiers",
"deselectAll": "Tout déselectionner", "deselectAll": "Tout déselectionner",
@ -862,7 +862,7 @@
"@freeUpSpaceSaving": { "@freeUpSpaceSaving": {
"description": "Text to tell user how much space they can free up by deleting items from the device" "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": { "@freeUpAccessPostDelete": {
"placeholders": { "placeholders": {
"count": { "count": {
@ -1101,6 +1101,6 @@
"successfullyHid": "Masquage réussi", "successfullyHid": "Masquage réussi",
"successfullyUnhid": "Masquage réussi", "successfullyUnhid": "Masquage réussi",
"crashReporting": "Rapports d'erreurs", "crashReporting": "Rapports d'erreurs",
"addToHiddenAlbum": "Add to hidden album", "addToHiddenAlbum": "Ajouter à un album masqué",
"moveToHiddenAlbum": "Move to hidden album" "moveToHiddenAlbum": "Déplacer vers un album masqué"
} }

View file

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

View file

@ -27,4 +27,27 @@ class Location with _$Location {
if (latValue == 0.0 && longValue == 0.0) return false; if (latValue == 0.0 && longValue == 0.0) return false;
return true; 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, NotificationResponse notificationResponse,
) )
onNotificationTapped, onNotificationTapped,
SharedPreferences preferences,
) async { ) async {
_preferences = await SharedPreferences.getInstance(); _preferences = preferences;
const androidSettings = AndroidInitializationSettings('notification_icon'); const androidSettings = AndroidInitializationSettings('notification_icon');
const iosSettings = DarwinInitializationSettings( const iosSettings = DarwinInitializationSettings(
requestAlertPermission: false, requestAlertPermission: false,

View file

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

View file

@ -9,6 +9,7 @@ import "package:latlong2/latlong.dart";
import "package:logging/logging.dart"; import "package:logging/logging.dart";
import "package:photos/generated/l10n.dart"; import "package:photos/generated/l10n.dart";
import 'package:photos/models/file/file.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/theme/ente_theme.dart";
import "package:photos/ui/common/loading_widget.dart"; import "package:photos/ui/common/loading_widget.dart";
import "package:photos/ui/map/image_marker.dart"; import "package:photos/ui/map/image_marker.dart";
@ -78,9 +79,17 @@ class _MapScreenState extends State<MapScreen> {
bool hasAnyLocation = false; bool hasAnyLocation = false;
EnteFile? mostRecentFile; EnteFile? mostRecentFile;
for (var file in files) { 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; hasAnyLocation = true;
if (mostRecentFile == null) { if (mostRecentFile == null) {
mostRecentFile = file; mostRecentFile = file;
} else { } 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/dialog_util.dart';
import "package:photos/utils/navigation_util.dart"; import "package:photos/utils/navigation_util.dart";
import 'package:receive_sharing_intent/receive_sharing_intent.dart'; import 'package:receive_sharing_intent/receive_sharing_intent.dart';
import "package:shared_preferences/shared_preferences.dart";
import 'package:uni_links/uni_links.dart'; import 'package:uni_links/uni_links.dart';
class HomeWidget extends StatefulWidget { 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(); super.initState();
} }
@ -278,10 +282,12 @@ class _HomeWidgetState extends State<HomeWidget> {
); );
// For sharing images coming from outside the app while the app is closed // For sharing images coming from outside the app while the app is closed
ReceiveSharingIntent.getInitialMedia().then((List<SharedMediaFile> value) { ReceiveSharingIntent.getInitialMedia().then((List<SharedMediaFile> value) {
if (mounted) {
setState(() { setState(() {
_sharedFiles = value; _sharedFiles = value;
_shouldRenderCreateCollectionSheet = true; _shouldRenderCreateCollectionSheet = true;
}); });
}
}); });
} }

View file

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

View file

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

View file

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

View file

@ -106,6 +106,9 @@ class _LazyGroupGalleryState extends State<LazyGroupGallery> {
} }
Future _onReload(FilesUpdatedEvent event) async { Future _onReload(FilesUpdatedEvent event) async {
if (_files.isEmpty) {
return;
}
final DateTime groupDate = final DateTime groupDate =
DateTime.fromMicrosecondsSinceEpoch(_files[0].creationTime!); DateTime.fromMicrosecondsSinceEpoch(_files[0].creationTime!);
// iterate over files and check if any of the belongs to this group // 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 kBlockedUploadsPollFrequency = Duration(seconds: 2);
static const kFileUploadTimeout = Duration(minutes: 50); static const kFileUploadTimeout = Duration(minutes: 50);
static const k20MBStorageBuffer = 20 * 1024 * 1024; static const k20MBStorageBuffer = 20 * 1024 * 1024;
static const kUploadTempPrefix = "upload_file_";
final _logger = Logger("FileUploader"); final _logger = Logger("FileUploader");
final _dio = NetworkClient.instance.getDio(); 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 { Future<void> checkNetworkForUpload({bool isForceUpload = false}) async {
// Note: We don't support force uploading currently. During force upload, // Note: We don't support force uploading currently. During force upload,
// network check is skipped completely // network check is skipped completely
@ -340,8 +364,10 @@ class FileUploader {
final tempDirectory = Configuration.instance.getTempDirectory(); final tempDirectory = Configuration.instance.getTempDirectory();
final String uniqueID = const Uuid().v4().toString(); final String uniqueID = const Uuid().v4().toString();
final encryptedFilePath = '$tempDirectory${uniqueID}_file.encrypted'; final encryptedFilePath =
final encryptedThumbnailPath = '$tempDirectory${uniqueID}_thumb.encrypted'; '$tempDirectory$kUploadTempPrefix${uniqueID}_file.encrypted';
final encryptedThumbnailPath =
'$tempDirectory$kUploadTempPrefix${uniqueID}_thumb.encrypted';
MediaUploadData? mediaUploadData; MediaUploadData? mediaUploadData;
var uploadCompleted = false; var uploadCompleted = false;
// This flag is used to decide whether to clear the iOS origin file cache // This flag is used to decide whether to clear the iOS origin file cache