Update a contact on re-import rather than skipping it
#228 skipped a vCard whose UID the book already held. The reporter asked for the opposite on #174 and he is right: the reason to import a file a second time is usually that the first one was not right, so skipping means a corrected export corrects nothing. A merge, not a replacement. Properties the file carries overwrite what is here; properties it does not mention are left alone, so a phone number added in ihasmail after the first import survives a re-import of the original file. The cost is that a field genuinely deleted at the source stays here, which is the better way to be wrong -- the other way round loses work nobody asked to lose. Worth confirming with him rather than assuming. `addressBookIds` is left off the patch. The card is already in this book, so saying it again says nothing, and saying it on a card that is also in another book would move it. Creates and updates now share one batch budget. Stalwart counts every object in a /set together, so batching the halves separately would send 300 new and 300 changed as two calls of 300 and be refused for a limit of 500 that neither half exceeds. LDIF is untouched and still reports look-alikes without acting on them, since what it should match on is the question still open on #223. Both imports keep one answer shape so a caller need not know which it called; LDIF's `updated` is always 0, which is the honest number rather than a missing field. The message a vCard attached to a message shows changes with it: the newer copy now wins instead of being dropped, so it says the contact was brought up to date rather than that nothing was added. Refs #223.
This commit is contained in:
@@ -1080,10 +1080,11 @@ export const catalog: Catalog = {
|
||||
"Nothing unread here": "Hier ist nichts ungelesen",
|
||||
},
|
||||
plurals: {
|
||||
"Updated {n} contacts, nothing new": { one: "{n} Kontakt aktualisiert, nichts Neues", other: "{n} Kontakte aktualisiert, nichts Neues" },
|
||||
"{n} updated": { one: "{n} aktualisiert", other: "{n} aktualisiert" },
|
||||
"Updated {n} contacts you already had": { one: "Vorhandenen Kontakt aktualisiert", other: "{n} vorhandene Kontakte aktualisiert" },
|
||||
"{n} of them look like contacts you already had": { one: "{n} davon sieht aus wie ein Kontakt, den Sie schon hatten", other: "{n} davon sehen aus wie Kontakte, die Sie schon hatten" },
|
||||
"Your administrator changed {n} settings": { one: "Ihre Administration hat {n} Einstellung geändert", other: "Ihre Administration hat {n} Einstellungen geändert" },
|
||||
"Already here: {n} contacts, nothing imported": { one: "Bereits vorhanden: {n} Kontakt, nichts importiert", other: "Bereits vorhanden: {n} Kontakte, nichts importiert" },
|
||||
"All {n} are already in your contacts": { one: "Bereits in Ihren Kontakten", other: "Alle {n} sind bereits in Ihren Kontakten" },
|
||||
"Exported {n} events": { one: "{n} Termin exportiert", other: "{n} Termine exportiert" },
|
||||
"Imported {n} events": { one: "{n} Termin importiert", other: "{n} Termine importiert" },
|
||||
"Already here: {n} events, nothing imported": { one: "Bereits vorhanden: {n} Termin, nichts importiert", other: "Bereits vorhanden: {n} Termine, nichts importiert" },
|
||||
|
||||
@@ -1053,10 +1053,11 @@ export const catalog: Catalog = {
|
||||
"Nothing unread here": "Aquí no hay nada sin leer",
|
||||
},
|
||||
plurals: {
|
||||
"Updated {n} contacts, nothing new": { one: "{n} contacto actualizado, nada nuevo", other: "{n} contactos actualizados, nada nuevo" },
|
||||
"{n} updated": { one: "{n} actualizado", other: "{n} actualizados" },
|
||||
"Updated {n} contacts you already had": { one: "Se actualizó el contacto que ya tenías", other: "Se actualizaron {n} contactos que ya tenías" },
|
||||
"{n} of them look like contacts you already had": { one: "{n} de ellos se parece a un contacto que ya tenías", other: "{n} de ellos se parecen a contactos que ya tenías" },
|
||||
"Your administrator changed {n} settings": { one: "Tu administración cambió {n} ajuste", other: "Tu administración cambió {n} ajustes" },
|
||||
"Already here: {n} contacts, nothing imported": { one: "Ya estaba aquí: {n} contacto, no se importó nada", other: "Ya estaban aquí: {n} contactos, no se importó nada" },
|
||||
"All {n} are already in your contacts": { one: "Ya está en tus contactos", other: "Los {n} ya están en tus contactos" },
|
||||
"Exported {n} events": { one: "{n} evento exportado", other: "{n} eventos exportados" },
|
||||
"Imported {n} events": { one: "{n} evento importado", other: "{n} eventos importados" },
|
||||
"Already here: {n} events, nothing imported": { one: "Ya estaba aquí: {n} evento, no se importó nada", other: "Ya estaban aquí: {n} eventos, no se importó nada" },
|
||||
|
||||
@@ -1058,10 +1058,11 @@ export const catalog: Catalog = {
|
||||
"Nothing unread here": "Rien de non lu ici",
|
||||
},
|
||||
plurals: {
|
||||
"Updated {n} contacts, nothing new": { one: "{n} contact mis à jour, rien de nouveau", other: "{n} contacts mis à jour, rien de nouveau" },
|
||||
"{n} updated": { one: "{n} mis à jour", other: "{n} mis à jour" },
|
||||
"Updated {n} contacts you already had": { one: "Contact déjà présent mis à jour", other: "{n} contacts déjà présents mis à jour" },
|
||||
"{n} of them look like contacts you already had": { one: "{n} d’entre eux ressemble à un contact que vous aviez déjà", other: "{n} d’entre eux ressemblent à des contacts que vous aviez déjà" },
|
||||
"Your administrator changed {n} settings": { one: "Votre administration a modifié {n} paramètre", other: "Votre administration a modifié {n} paramètres" },
|
||||
"Already here: {n} contacts, nothing imported": { one: "Déjà présent : {n} contact, rien d’importé", other: "Déjà présents : {n} contacts, rien d’importé" },
|
||||
"All {n} are already in your contacts": { one: "Déjà dans vos contacts", other: "Les {n} sont déjà dans vos contacts" },
|
||||
"Exported {n} events": { one: "{n} événement exporté", other: "{n} événements exportés" },
|
||||
"Imported {n} events": { one: "{n} événement importé", other: "{n} événements importés" },
|
||||
"Already here: {n} events, nothing imported": { one: "Déjà présent : {n} événement, rien d’importé", other: "Déjà présents : {n} événements, rien d’importé" },
|
||||
|
||||
@@ -1061,10 +1061,11 @@ export const catalog: Catalog = {
|
||||
"Nothing unread here": "ここに未読はありません",
|
||||
},
|
||||
plurals: {
|
||||
"Updated {n} contacts, nothing new": { other: "{n} 件の連絡先を更新しました。新規はありません" },
|
||||
"{n} updated": { other: "{n} 件を更新" },
|
||||
"Updated {n} contacts you already had": { other: "すでにある連絡先 {n} 件を更新しました" },
|
||||
"{n} of them look like contacts you already had": { other: "うち {n} 件はすでにある連絡先に似ています" },
|
||||
"Your administrator changed {n} settings": { other: "管理者が {n} 件の設定を変更しました" },
|
||||
"Already here: {n} contacts, nothing imported": { other: "すでに存在: {n} 件、インポートなし" },
|
||||
"All {n} are already in your contacts": { other: "{n} 件はすでに連絡先にあります" },
|
||||
"Exported {n} events": { other: "{n} 件の予定をエクスポートしました" },
|
||||
"Imported {n} events": { other: "{n} 件の予定をインポートしました" },
|
||||
"Already here: {n} events, nothing imported": { other: "すでに存在: {n} 件、インポートなし" },
|
||||
|
||||
@@ -1049,10 +1049,11 @@ export const catalog: Catalog = {
|
||||
"Nothing unread here": "Hier is niets ongelezen",
|
||||
},
|
||||
plurals: {
|
||||
"Updated {n} contacts, nothing new": { one: "{n} contact bijgewerkt, niets nieuws", other: "{n} contacten bijgewerkt, niets nieuws" },
|
||||
"{n} updated": { one: "{n} bijgewerkt", other: "{n} bijgewerkt" },
|
||||
"Updated {n} contacts you already had": { one: "Bestaand contact bijgewerkt", other: "{n} bestaande contacten bijgewerkt" },
|
||||
"{n} of them look like contacts you already had": { one: "{n} daarvan lijkt op een contact dat u al had", other: "{n} daarvan lijken op contacten die u al had" },
|
||||
"Your administrator changed {n} settings": { one: "Uw beheerder heeft {n} instelling gewijzigd", other: "Uw beheerder heeft {n} instellingen gewijzigd" },
|
||||
"Already here: {n} contacts, nothing imported": { one: "Al aanwezig: {n} contact, niets geïmporteerd", other: "Al aanwezig: {n} contacten, niets geïmporteerd" },
|
||||
"All {n} are already in your contacts": { one: "Staat al in uw contacten", other: "Alle {n} staan al in uw contacten" },
|
||||
"Exported {n} events": { one: "{n} afspraak geëxporteerd", other: "{n} afspraken geëxporteerd" },
|
||||
"Imported {n} events": { one: "{n} afspraak geïmporteerd", other: "{n} afspraken geïmporteerd" },
|
||||
"Already here: {n} events, nothing imported": { one: "Al aanwezig: {n} afspraak, niets geïmporteerd", other: "Al aanwezig: {n} afspraken, niets geïmporteerd" },
|
||||
|
||||
@@ -1056,10 +1056,11 @@ export const catalog: Catalog = {
|
||||
"Nothing unread here": "Não há nada não lido aqui",
|
||||
},
|
||||
plurals: {
|
||||
"Updated {n} contacts, nothing new": { one: "{n} contato atualizado, nada novo", other: "{n} contatos atualizados, nada novo" },
|
||||
"{n} updated": { one: "{n} atualizado", other: "{n} atualizados" },
|
||||
"Updated {n} contacts you already had": { one: "Contato que você já tinha atualizado", other: "{n} contatos que você já tinha atualizados" },
|
||||
"{n} of them look like contacts you already had": { one: "{n} deles parece um contato que você já tinha", other: "{n} deles parecem contatos que você já tinha" },
|
||||
"Your administrator changed {n} settings": { one: "Sua administração alterou {n} configuração", other: "Sua administração alterou {n} configurações" },
|
||||
"Already here: {n} contacts, nothing imported": { one: "Já estava aqui: {n} contato, nada importado", other: "Já estavam aqui: {n} contatos, nada importado" },
|
||||
"All {n} are already in your contacts": { one: "Já está nos seus contatos", other: "Todos os {n} já estão nos seus contatos" },
|
||||
"Exported {n} events": { one: "{n} evento exportado", other: "{n} eventos exportados" },
|
||||
"Imported {n} events": { one: "{n} evento importado", other: "{n} eventos importados" },
|
||||
"Already here: {n} events, nothing imported": { one: "Já estava aqui: {n} evento, nada importado", other: "Já estavam aqui: {n} eventos, nada importado" },
|
||||
|
||||
@@ -1055,10 +1055,11 @@ export const catalog: Catalog = {
|
||||
"Nothing unread here": "Здесь нет непрочитанного",
|
||||
},
|
||||
plurals: {
|
||||
"Updated {n} contacts, nothing new": { one: "Обновлён {n} контакт, новых нет", few: "Обновлено {n} контакта, новых нет", many: "Обновлено {n} контактов, новых нет", other: "Обновлено {n} контакта, новых нет" },
|
||||
"{n} updated": { one: "{n} обновлён", few: "{n} обновлено", many: "{n} обновлено", other: "{n} обновлено" },
|
||||
"Updated {n} contacts you already had": { one: "Обновлён контакт, который уже был", few: "Обновлено {n} контакта, которые уже были", many: "Обновлено {n} контактов, которые уже были", other: "Обновлено {n} контакта, которые уже были" },
|
||||
"{n} of them look like contacts you already had": { one: "{n} из них похож на контакт, который уже был", few: "{n} из них похожи на контакты, которые уже были", many: "{n} из них похожи на контакты, которые уже были", other: "{n} из них похожи на контакты, которые уже были" },
|
||||
"Your administrator changed {n} settings": { one: "Администратор изменил {n} настройку", few: "Администратор изменил {n} настройки", many: "Администратор изменил {n} настроек", other: "Администратор изменил {n} настройки" },
|
||||
"Already here: {n} contacts, nothing imported": { one: "Уже есть: {n} контакт, ничего не импортировано", few: "Уже есть: {n} контакта, ничего не импортировано", many: "Уже есть: {n} контактов, ничего не импортировано", other: "Уже есть: {n} контакта, ничего не импортировано" },
|
||||
"All {n} are already in your contacts": { one: "Уже в ваших контактах", few: "Все {n} уже в ваших контактах", many: "Все {n} уже в ваших контактах", other: "Все {n} уже в ваших контактах" },
|
||||
"Exported {n} events": { one: "Экспортировано {n} событие", few: "Экспортировано {n} события", many: "Экспортировано {n} событий", other: "Экспортировано {n} события" },
|
||||
"Imported {n} events": { one: "Импортировано {n} событие", few: "Импортировано {n} события", many: "Импортировано {n} событий", other: "Импортировано {n} события" },
|
||||
"Already here: {n} events, nothing imported": { one: "Уже есть: {n} событие, ничего не импортировано", few: "Уже есть: {n} события, ничего не импортировано", many: "Уже есть: {n} событий, ничего не импортировано", other: "Уже есть: {n} события, ничего не импортировано" },
|
||||
|
||||
@@ -1049,10 +1049,11 @@ export const catalog: Catalog = {
|
||||
"Nothing unread here": "Тут немає непрочитаного",
|
||||
},
|
||||
plurals: {
|
||||
"Updated {n} contacts, nothing new": { one: "Оновлено {n} контакт, нових немає", few: "Оновлено {n} контакти, нових немає", many: "Оновлено {n} контактів, нових немає", other: "Оновлено {n} контакти, нових немає" },
|
||||
"{n} updated": { one: "{n} оновлено", few: "{n} оновлено", many: "{n} оновлено", other: "{n} оновлено" },
|
||||
"Updated {n} contacts you already had": { one: "Оновлено контакт, який уже був", few: "Оновлено {n} контакти, які вже були", many: "Оновлено {n} контактів, які вже були", other: "Оновлено {n} контакти, які вже були" },
|
||||
"{n} of them look like contacts you already had": { one: "{n} з них схожий на контакт, який уже був", few: "{n} з них схожі на контакти, які вже були", many: "{n} з них схожі на контакти, які вже були", other: "{n} з них схожі на контакти, які вже були" },
|
||||
"Your administrator changed {n} settings": { one: "Адміністратор змінив {n} налаштування", few: "Адміністратор змінив {n} налаштування", many: "Адміністратор змінив {n} налаштувань", other: "Адміністратор змінив {n} налаштування" },
|
||||
"Already here: {n} contacts, nothing imported": { one: "Уже є: {n} контакт, нічого не імпортовано", few: "Уже є: {n} контакти, нічого не імпортовано", many: "Уже є: {n} контактів, нічого не імпортовано", other: "Уже є: {n} контакти, нічого не імпортовано" },
|
||||
"All {n} are already in your contacts": { one: "Уже у ваших контактах", few: "Усі {n} уже у ваших контактах", many: "Усі {n} уже у ваших контактах", other: "Усі {n} уже у ваших контактах" },
|
||||
"Exported {n} events": { one: "Експортовано {n} подію", few: "Експортовано {n} події", many: "Експортовано {n} подій", other: "Експортовано {n} події" },
|
||||
"Imported {n} events": { one: "Імпортовано {n} подію", few: "Імпортовано {n} події", many: "Імпортовано {n} подій", other: "Імпортовано {n} події" },
|
||||
"Already here: {n} events, nothing imported": { one: "Уже є: {n} подія, нічого не імпортовано", few: "Уже є: {n} події, нічого не імпортовано", many: "Уже є: {n} подій, нічого не імпортовано", other: "Уже є: {n} події, нічого не імпортовано" },
|
||||
|
||||
@@ -1060,10 +1060,11 @@ export const catalog: Catalog = {
|
||||
"Nothing unread here": "这里没有未读邮件",
|
||||
},
|
||||
plurals: {
|
||||
"Updated {n} contacts, nothing new": { other: "已更新 {n} 个联系人,无新增" },
|
||||
"{n} updated": { other: "已更新 {n} 个" },
|
||||
"Updated {n} contacts you already had": { other: "已更新您已有的 {n} 个联系人" },
|
||||
"{n} of them look like contacts you already had": { other: "其中 {n} 个与您已有的联系人相似" },
|
||||
"Your administrator changed {n} settings": { other: "管理员更改了 {n} 项设置" },
|
||||
"Already here: {n} contacts, nothing imported": { other: "已存在 {n} 个,未导入" },
|
||||
"All {n} are already in your contacts": { other: "这 {n} 个已在您的联系人中" },
|
||||
"Exported {n} events": { other: "已导出 {n} 个日程" },
|
||||
"Imported {n} events": { other: "已导入 {n} 个日程" },
|
||||
"Already here: {n} events, nothing imported": { other: "已存在 {n} 个,未导入" },
|
||||
|
||||
Reference in New Issue
Block a user