diff --git a/components/email/__tests__/search-result-count.test.tsx b/components/email/__tests__/search-result-count.test.tsx index 477e01c52..6f5067e03 100644 --- a/components/email/__tests__/search-result-count.test.tsx +++ b/components/email/__tests__/search-result-count.test.tsx @@ -36,9 +36,15 @@ describe('SearchResultCount', () => { expect(container.textContent).toBe('mail_list_extra.search_count {"conversations":3,"messages":10}'); }); - it('counts messages when every result is its own conversation', () => { + // mail-p3-7: the rows are conversations, so the line says so. + it('counts conversations when every result is its own conversation', () => { const { container } = render(); - expect(container.textContent).toBe('advanced_search.results_found {"count":1}'); + expect(container.textContent).toBe('mail_p3_list.conversations_found {"count":1}'); + }); + + it('says no results when nothing matched', () => { + const { container } = render(); + expect(container.textContent).toBe('mail_p3_list.conversations_found {"count":0}'); }); it('counts messages when conversations are switched off', () => { diff --git a/components/email/search-result-count.tsx b/components/email/search-result-count.tsx index 5ccb21e7c..5b2fec9c5 100644 --- a/components/email/search-result-count.tsx +++ b/components/email/search-result-count.tsx @@ -22,6 +22,8 @@ export function SearchResultCount({ emails, hasMore }: { emails: Email[]; hasMor // "100+ results" above them reads wrong as well (mail-16). if (hasMore && !disableThreading) return <>{t("email_list.conversations_count_plus", { count: conversations })}; if (hasMore) return <>{t("advanced_search.results_found_more", { count: emails.length })}; + // Grouped rows are conversations, even one message each (mail-p3-7). + if (!disableThreading && conversations === emails.length) return <>{t("mail_p3_list.conversations_found", { count: conversations })}; if (conversations === emails.length) return <>{t("advanced_search.results_found", { count: emails.length })}; return <>{t("mail_list_extra.search_count", { conversations, messages: emails.length })}; } diff --git a/components/layout/sidebar.tsx b/components/layout/sidebar.tsx index d215b7c36..fcb0339e7 100644 --- a/components/layout/sidebar.tsx +++ b/components/layout/sidebar.tsx @@ -103,6 +103,7 @@ import { } from "@/lib/notification-mutes"; import { serverSupportsEmailPush } from "@/lib/web-push"; import { resolveFolderCounts } from "@/lib/folder-counts"; +import { batchToastTitle } from "@/lib/selection-toast"; interface SidebarProps { mailboxes: Mailbox[]; @@ -833,6 +834,7 @@ function MailboxTreeItem({ }) { const tNotifications = useTranslations('notifications'); const tListExtra = useTranslations('mail_list_extra'); + const tRoot = useTranslations(); const tSidebar = useTranslations('sidebar'); const hasChildren = node.children.length > 0; const isExpanded = expandedFolders.has(node.id); @@ -875,7 +877,7 @@ function MailboxTreeItem({ toastWithUndo( count === 1 ? tListExtra('moved_to', { mailbox: mailboxName }) - : tListExtra('moved_count_to', { count, mailbox: mailboxName }), + : batchToastTitle(tRoot, 'move', count, useSettingsStore.getState().disableThreading, mailboxName), undoMoveAction(useAuthStore.getState().client, restore, undoLabels(tNotifications), receipts), ); }, diff --git a/components/mail/__tests__/mail-app-menu-selection.test.tsx b/components/mail/__tests__/mail-app-menu-selection.test.tsx index 9234ef35e..32f995953 100644 --- a/components/mail/__tests__/mail-app-menu-selection.test.tsx +++ b/components/mail/__tests__/mail-app-menu-selection.test.tsx @@ -114,7 +114,7 @@ beforeEach(() => { getClientForAccount: () => client as never, getAllConnectedClients: () => new Map([['login-a', client]]) as never, }); - useSettingsStore.setState({ enableUnifiedMailbox: false, interfaceLayout: 'default', mailLayout: 'split', proInterface: false } as never); + useSettingsStore.setState({ enableUnifiedMailbox: false, interfaceLayout: 'default', mailLayout: 'split', proInterface: false, disableThreading: false } as never); batchMoveToMailbox = vi.fn().mockResolvedValue(true); useEmailStore.setState({ emails: [a, b, c], selectedEmail: a, selectedMailbox: 'inbox', selectedKeyword: null, mailboxes: [inbox, later], @@ -159,7 +159,17 @@ describe('the Message menu with three messages selected', () => { expect(request?.emails.map((email) => email.id)).toEqual(['a', 'b', 'c']); await act(async () => { request!.onMove('later'); }); await waitFor(() => expect(batchMoveToMailbox).toHaveBeenCalledWith(expect.anything(), 'later', undefined, expect.any(Array))); - await waitFor(() => expect(useToastStore.getState().toasts.map((toast) => toast.title)).toContain('moved_count_to')); + // Three conversations are selected, so the toast counts conversations (mail-p3-7). + await waitFor(() => expect(useToastStore.getState().toasts.map((toast) => toast.title)).toContain('mail_p2_list.conversations_moved_to')); + }); + + it('with conversations off, Move to… counts emails', async () => { + useSettingsStore.setState({ disableThreading: true } as never); + render(); + await waitFor(() => expect(reported['message.move']).toBe(true)); + act(() => { runDesktopCommand('message.move'); }); + await act(async () => { useMoveDialogStore.getState().request!.onMove('later'); }); + await waitFor(() => expect(useToastStore.getState().toasts.map((toast) => toast.title)).toContain('mail_list_extra.moved_count_to')); }); it('with one message open and none selected, Reply and Move are for that one', async () => { diff --git a/components/mail/mail-app.tsx b/components/mail/mail-app.tsx index 6d44c7ce3..aed9b5494 100644 --- a/components/mail/mail-app.tsx +++ b/components/mail/mail-app.tsx @@ -1442,18 +1442,16 @@ export function MailApp({ linkSegments: routeSegments }: MailAppProps = {}) { // of seven, or Move for the open one only, would act on mail nobody picked. const desktopMulti = selectedEmailKeys.size > 1; const desktopSingle = !showComposer && !!selectedEmail && !desktopMulti; - const tListExtra = useTranslations('mail_list_extra'); /** Message > Move to… on the selection, as the selection bar's Move does: one toast with the count. */ const moveSelectionTo = async (mailboxId: string) => { if (!client) return; - const count = selectedEmailKeys.size; + // Counted as the selection bar counts: conversations when it shows them (mail-p3-7). + const rows = selectionRowCount(resolveSelectedEmails(useEmailStore.getState()), selectedEmailKeys.size, disableThreading); const restore = restoreBatchesForSelection(client); const receipts: CrossAccountMoveReceipt[] = []; const destination = mailboxes.find((m) => m.id === mailboxId); await runBatchEmailAction(() => useEmailStore.getState().batchMoveToMailbox(client, mailboxId, undefined, receipts), { - success: destination - ? tListExtra('moved_count_to', { count, mailbox: getMailboxPath(destination, mailboxes) }) - : tNotifications('emails_moved', { count }), + success: batchToastTitle(t, 'move', rows, disableThreading, destination ? getMailboxPath(destination, mailboxes) : undefined), error: tNotifications('move_failed'), undo: undoMoveAction(client, restore, undo, receipts), }); diff --git a/hooks/__tests__/use-mailbox-drop.test.tsx b/hooks/__tests__/use-mailbox-drop.test.tsx index 222e579c5..1cf3b47f9 100644 --- a/hooks/__tests__/use-mailbox-drop.test.tsx +++ b/hooks/__tests__/use-mailbox-drop.test.tsx @@ -5,6 +5,7 @@ import type { Email, Mailbox } from '@/lib/jmap/types'; import type { IJMAPClient } from '@/lib/jmap/client-interface'; import { useEmailStore } from '@/stores/email-store'; import { useAuthStore } from '@/stores/auth-store'; +import { useSettingsStore } from '@/stores/settings-store'; const drag = vi.hoisted(() => ({ isDragging: true, @@ -128,4 +129,22 @@ describe('useMailboxDrop', () => { expect(moveEmailsToMailbox).toHaveBeenCalledWith(client016, ['m1'], 'f'); expect(crossAccountMoveEmails).not.toHaveBeenCalled(); }); + + // mail-p3-7: the toast counts what the list shows, conversations when it groups them. + it('counts the conversations dropped, or the emails with conversations off', async () => { + drag.draggedEmails = [ + email({ id: 'a1', threadId: 'ta' }), email({ id: 'a2', threadId: 'ta' }), + email({ id: 'b1', threadId: 'tb' }), email({ id: 'b2', threadId: 'tb' }), + ]; + const counts: number[] = []; + const dropCounting = async () => { + const { result } = renderHook(() => useMailboxDrop({ mailbox: mailbox({}), onSuccess: (count) => { counts.push(count); }, onError: () => {} })); + await act(async () => { result.current.dropHandlers.onDrop(dropEvent(['a1', 'a2', 'b1', 'b2'])); }); + }; + useSettingsStore.setState({ disableThreading: false }); + await dropCounting(); + useSettingsStore.setState({ disableThreading: true }); + await dropCounting(); + expect(counts).toEqual([2, 4]); + }); }); diff --git a/hooks/use-mailbox-drop.ts b/hooks/use-mailbox-drop.ts index fff27cf6a..9843e453d 100644 --- a/hooks/use-mailbox-drop.ts +++ b/hooks/use-mailbox-drop.ts @@ -11,6 +11,8 @@ import { useDragDropContext } from "@/contexts/drag-drop-context"; import { dragDropHooks } from "@/lib/plugin-hooks"; import { toast } from "@/stores/toast-store"; import { getMailboxPath } from "@/lib/utils"; +import { batchToastTitle, selectionRowCount } from "@/lib/selection-toast"; +import { useSettingsStore } from "@/stores/settings-store"; /** * Returns the source accountId for an email being dragged. In unified view @@ -58,6 +60,7 @@ interface UseMailboxDropReturn { export function useMailboxDrop({ mailbox, accountId, onDropComplete, onSuccess, onError }: UseMailboxDropOptions): UseMailboxDropReturn { const tListExtra = useTranslations("mail_list_extra"); + const tRoot = useTranslations(); const [isOver, setIsOver] = useState(false); const { client } = useAuthStore(useShallow((state) => ({ client: state.client }))); const { moveEmailsToMailbox, crossAccountMoveEmails, selectedEmailKeys, clearSelection, refreshCurrentMailbox, mailboxes } = useEmailStore(useShallow((state) => ({ @@ -230,14 +233,17 @@ export function useMailboxDrop({ mailbox, accountId, onDropComplete, onSuccess, } const mailboxPath = getMailboxPath(mailbox, mailboxes); + // Counted as the list shows them: conversations when it groups (mail-p3-7). + const disableThreading = useSettingsStore.getState().disableThreading; + const rows = emailIds.length === 1 ? 1 : selectionRowCount(draggedEmails.filter((em) => emailIds.includes(em.id)), emailIds.length, disableThreading); if (onSuccess) { - onSuccess(emailIds.length, mailboxPath, restore, receipts); + onSuccess(rows, mailboxPath, restore, receipts); } else { if (emailIds.length === 1) { toast.success(tListExtra("moved_to", { mailbox: mailboxPath })); } else { - toast.success(tListExtra("moved_count_to", { count: emailIds.length, mailbox: mailboxPath })); + toast.success(batchToastTitle(tRoot, "move", rows, disableThreading, mailboxPath)); } } @@ -255,7 +261,7 @@ export function useMailboxDrop({ mailbox, accountId, onDropComplete, onSuccess, } finally { endDrag(); } - }, [client, mailbox, accountId, mailboxes, isValidTarget, moveEmailsToMailbox, crossAccountMoveEmails, draggedEmails, sourceMailboxId, selectedEmailKeys, clearSelection, refreshCurrentMailbox, endDrag, markDropped, onDropComplete, onSuccess, onError, tListExtra]); + }, [client, mailbox, accountId, mailboxes, isValidTarget, moveEmailsToMailbox, crossAccountMoveEmails, draggedEmails, sourceMailboxId, selectedEmailKeys, clearSelection, refreshCurrentMailbox, endDrag, markDropped, onDropComplete, onSuccess, onError, tListExtra, tRoot]); const valid = isValidTarget(); diff --git a/locales/ar/common.json b/locales/ar/common.json index 712102a81..5cef8ea5b 100644 --- a/locales/ar/common.json +++ b/locales/ar/common.json @@ -3907,6 +3907,9 @@ "title_all_accounts": "{name} ({count}، {total} في كل الحسابات)", "title_all_accounts_only": "{name} ({total} في كل الحسابات)" }, + "mail_p3_list": { + "conversations_found": "{count, plural, =0 {لم يتم العثور على نتائج} one {تم العثور على محادثة واحدة} two {تم العثور على محادثتين} few {تم العثور على # محادثات} many {تم العثور على # محادثة} other {تم العثور على # محادثة}}" + }, "uxs_folders": { "manage_accounts": "إدارة الحسابات…", "apply_to_existing": "{count, plural, one {تطبيق على رسالة موجودة واحدة في {folder}} other {تطبيق على # رسائل موجودة في {folder}}}" diff --git a/locales/ca/common.json b/locales/ca/common.json index 8a57933a8..08df5c71d 100644 --- a/locales/ca/common.json +++ b/locales/ca/common.json @@ -3907,6 +3907,9 @@ "title_all_accounts": "{name} ({count}, {total} a tots els comptes)", "title_all_accounts_only": "{name} ({total} a tots els comptes)" }, + "mail_p3_list": { + "conversations_found": "{count, plural, =0 {No s'ha trobat cap resultat} one {# conversa trobada} other {# converses trobades}}" + }, "uxs_folders": { "manage_accounts": "Gestiona els comptes…", "apply_to_existing": "{count, plural, one {Aplica a # missatge existent de {folder}} other {Aplica a # missatges existents de {folder}}}" diff --git a/locales/cs/common.json b/locales/cs/common.json index 6f33b69f8..a9cf1bce8 100644 --- a/locales/cs/common.json +++ b/locales/cs/common.json @@ -3907,6 +3907,9 @@ "title_all_accounts": "{name} ({count}, {total} ve všech účtech)", "title_all_accounts_only": "{name} ({total} ve všech účtech)" }, + "mail_p3_list": { + "conversations_found": "{count, plural, =0 {Nenalezeny žádné výsledky} one {Nalezena # konverzace} few {Nalezeny # konverzace} many {Nalezeno # konverzace} other {Nalezeno # konverzací}}" + }, "uxs_folders": { "manage_accounts": "Spravovat účty…", "apply_to_existing": "{count, plural, one {Použít na # existující zprávu ve složce {folder}} few {Použít na # existující zprávy ve složce {folder}} many {Použít na # existující zprávy ve složce {folder}} other {Použít na # existujících zpráv ve složce {folder}}}" diff --git a/locales/da/common.json b/locales/da/common.json index 1570062fd..4137a78a1 100644 --- a/locales/da/common.json +++ b/locales/da/common.json @@ -3907,6 +3907,9 @@ "title_all_accounts": "{name} ({count}, {total} i alle konti)", "title_all_accounts_only": "{name} ({total} i alle konti)" }, + "mail_p3_list": { + "conversations_found": "{count, plural, =0 {Ingen resultater fundet} one {# samtale fundet} other {# samtaler fundet}}" + }, "uxs_folders": { "manage_accounts": "Administrer konti…", "apply_to_existing": "{count, plural, one {Anvend på # eksisterende besked i {folder}} other {Anvend på # eksisterende beskeder i {folder}}}" diff --git a/locales/de/common.json b/locales/de/common.json index 92afaa8ad..61c6197e3 100644 --- a/locales/de/common.json +++ b/locales/de/common.json @@ -3907,6 +3907,9 @@ "title_all_accounts": "{name} ({count}, {total} in allen Konten)", "title_all_accounts_only": "{name} ({total} in allen Konten)" }, + "mail_p3_list": { + "conversations_found": "{count, plural, =0 {Keine Ergebnisse gefunden} one {# Unterhaltung gefunden} other {# Unterhaltungen gefunden}}" + }, "uxs_folders": { "manage_accounts": "Konten verwalten…", "apply_to_existing": "{count, plural, one {Auf # vorhandene Nachricht in {folder} anwenden} other {Auf # vorhandene Nachrichten in {folder} anwenden}}" diff --git a/locales/en/common.json b/locales/en/common.json index 5e03c9837..aaba54ef7 100644 --- a/locales/en/common.json +++ b/locales/en/common.json @@ -3907,6 +3907,9 @@ "title_all_accounts": "{name} ({count}, {total} in all accounts)", "title_all_accounts_only": "{name} ({total} in all accounts)" }, + "mail_p3_list": { + "conversations_found": "{count, plural, =0 {No results found} one {# conversation found} other {# conversations found}}" + }, "uxs_folders": { "manage_accounts": "Manage accounts…", "apply_to_existing": "{count, plural, one {Apply to # existing message in {folder}} other {Apply to # existing messages in {folder}}}" diff --git a/locales/es/common.json b/locales/es/common.json index f4f327d03..bbd755f8a 100644 --- a/locales/es/common.json +++ b/locales/es/common.json @@ -3907,6 +3907,9 @@ "title_all_accounts": "{name} ({count}, {total} en todas las cuentas)", "title_all_accounts_only": "{name} ({total} en todas las cuentas)" }, + "mail_p3_list": { + "conversations_found": "{count, plural, =0 {No se encontraron resultados} one {# conversación encontrada} other {# conversaciones encontradas}}" + }, "uxs_folders": { "manage_accounts": "Gestionar cuentas…", "apply_to_existing": "{count, plural, one {Aplicar a # mensaje existente en {folder}} other {Aplicar a # mensajes existentes en {folder}}}" diff --git a/locales/et/common.json b/locales/et/common.json index f325d0038..3b74d572a 100644 --- a/locales/et/common.json +++ b/locales/et/common.json @@ -3907,6 +3907,9 @@ "title_all_accounts": "{name} ({count}, {total} kõigil kontodel)", "title_all_accounts_only": "{name} ({total} kõigil kontodel)" }, + "mail_p3_list": { + "conversations_found": "{count, plural, =0 {Tulemusi ei leitud} one {# vestlus leitud} other {# vestlust leitud}}" + }, "uxs_folders": { "manage_accounts": "Halda kontosid…", "apply_to_existing": "{count, plural, one {Rakenda # olemasolevale kirjale kaustas {folder}} other {Rakenda # olemasolevale kirjale kaustas {folder}}}" diff --git a/locales/fa/common.json b/locales/fa/common.json index 22220484a..703d5f7bc 100644 --- a/locales/fa/common.json +++ b/locales/fa/common.json @@ -3907,6 +3907,9 @@ "title_all_accounts": "{name} ({count}، {total} در همه حساب‌ها)", "title_all_accounts_only": "{name} ({total} در همه حساب‌ها)" }, + "mail_p3_list": { + "conversations_found": "{count, plural, =0 {نتیجه‌ای یافت نشد} one {# مکالمه یافت شد} other {# مکالمه یافت شد}}" + }, "uxs_folders": { "manage_accounts": "مدیریت حساب‌ها…", "apply_to_existing": "{count, plural, one {اعمال روی # پیام موجود در {folder}} other {اعمال روی # پیام موجود در {folder}}}" diff --git a/locales/fr/common.json b/locales/fr/common.json index a054ec819..a77c3bdfc 100644 --- a/locales/fr/common.json +++ b/locales/fr/common.json @@ -3907,6 +3907,9 @@ "title_all_accounts": "{name} ({count}, {total} dans tous les comptes)", "title_all_accounts_only": "{name} ({total} dans tous les comptes)" }, + "mail_p3_list": { + "conversations_found": "{count, plural, =0 {Aucun résultat trouvé} one {# conversation trouvée} other {# conversations trouvées}}" + }, "uxs_folders": { "manage_accounts": "Gérer les comptes…", "apply_to_existing": "{count, plural, one {Appliquer à # message existant dans {folder}} other {Appliquer à # messages existants dans {folder}}}" diff --git a/locales/he/common.json b/locales/he/common.json index 48558ab17..4584beb8d 100644 --- a/locales/he/common.json +++ b/locales/he/common.json @@ -5713,6 +5713,9 @@ "title_all_accounts": "{name} ({count}, {total} בכל החשבונות)", "title_all_accounts_only": "{name} ({total} בכל החשבונות)" }, + "mail_p3_list": { + "conversations_found": "{count, plural, =0 {לא נמצאו תוצאות} one {נמצאה שיחה אחת} two {נמצאו שתי שיחות} other {נמצאו # שיחות}}" + }, "uxs_folders": { "manage_accounts": "ניהול חשבונות…", "apply_to_existing": "{count, plural, one {החלה על הודעה קיימת אחת בתיקייה {folder}} other {החלה על # הודעות קיימות בתיקייה {folder}}}" diff --git a/locales/hu/common.json b/locales/hu/common.json index 997fe444d..f19069591 100644 --- a/locales/hu/common.json +++ b/locales/hu/common.json @@ -3907,6 +3907,9 @@ "title_all_accounts": "{name} ({count}, {total} az összes fiókban)", "title_all_accounts_only": "{name} ({total} az összes fiókban)" }, + "mail_p3_list": { + "conversations_found": "{count, plural, =0 {Nincs találat} one {# beszélgetés található} other {# beszélgetés található}}" + }, "uxs_folders": { "manage_accounts": "Fiókok kezelése…", "apply_to_existing": "{count, plural, one {Alkalmazás # meglévő üzenetre itt: {folder}} other {Alkalmazás # meglévő üzenetre itt: {folder}}}" diff --git a/locales/it/common.json b/locales/it/common.json index 14f82c818..b020c7ba9 100644 --- a/locales/it/common.json +++ b/locales/it/common.json @@ -3907,6 +3907,9 @@ "title_all_accounts": "{name} ({count}, {total} in tutti gli account)", "title_all_accounts_only": "{name} ({total} in tutti gli account)" }, + "mail_p3_list": { + "conversations_found": "{count, plural, =0 {Nessun risultato trovato} one {# conversazione trovata} other {# conversazioni trovate}}" + }, "uxs_folders": { "manage_accounts": "Gestisci account…", "apply_to_existing": "{count, plural, one {Applica a # messaggio esistente in {folder}} other {Applica a # messaggi esistenti in {folder}}}" diff --git a/locales/ja/common.json b/locales/ja/common.json index e2d15c461..9f0bb1118 100644 --- a/locales/ja/common.json +++ b/locales/ja/common.json @@ -3907,6 +3907,9 @@ "title_all_accounts": "{name} ({count}、すべてのアカウントで {total})", "title_all_accounts_only": "{name} (すべてのアカウントで {total})" }, + "mail_p3_list": { + "conversations_found": "{count, plural, =0 {結果が見つかりません} other {#件の会話が見つかりました}}" + }, "uxs_folders": { "manage_accounts": "アカウントを管理…", "apply_to_existing": "{count, plural, other {{folder} の既存の # 件に適用}}" diff --git a/locales/ko/common.json b/locales/ko/common.json index ba7bf7122..bc9b2fbc4 100644 --- a/locales/ko/common.json +++ b/locales/ko/common.json @@ -3907,6 +3907,9 @@ "title_all_accounts": "{name} ({count}, 모든 계정에 {total})", "title_all_accounts_only": "{name} (모든 계정에 {total})" }, + "mail_p3_list": { + "conversations_found": "{count, plural, =0 {검색 결과가 없습니다} other {대화 #개를 찾았습니다}}" + }, "uxs_folders": { "manage_accounts": "계정 관리…", "apply_to_existing": "{count, plural, other {{folder}의 기존 메일 #개에 적용}}" diff --git a/locales/lv/common.json b/locales/lv/common.json index 0735a79f7..6893b2972 100644 --- a/locales/lv/common.json +++ b/locales/lv/common.json @@ -3907,6 +3907,9 @@ "title_all_accounts": "{name} ({count}, {total} visos kontos)", "title_all_accounts_only": "{name} ({total} visos kontos)" }, + "mail_p3_list": { + "conversations_found": "{count, plural, =0 {Nekas netika atrasts} zero {Atrastas # sarunas} one {Atrasta # saruna} other {Atrastas # sarunas}}" + }, "uxs_folders": { "manage_accounts": "Pārvaldīt kontus…", "apply_to_existing": "{count, plural, zero {Piemērot # esošajām vēstulēm mapē {folder}} one {Piemērot # esošajai vēstulei mapē {folder}} other {Piemērot # esošajām vēstulēm mapē {folder}}}" diff --git a/locales/mn/common.json b/locales/mn/common.json index f246584aa..65f97fbb1 100644 --- a/locales/mn/common.json +++ b/locales/mn/common.json @@ -3907,6 +3907,9 @@ "title_all_accounts": "{name} ({count}, бүх бүртгэлд {total})", "title_all_accounts_only": "{name} (бүх бүртгэлд {total})" }, + "mail_p3_list": { + "conversations_found": "{count, plural, =0 {Үр дүн олдсонгүй} one {# харилцан яриа олдлоо} other {# харилцан яриа олдлоо}}" + }, "uxs_folders": { "manage_accounts": "Данснуудыг удирдах…", "apply_to_existing": "{count, plural, one {{folder} доторх байгаа # захианд хэрэглэх} other {{folder} доторх байгаа # захианд хэрэглэх}}" diff --git a/locales/nb/common.json b/locales/nb/common.json index 122242bd1..d3fc4f26e 100644 --- a/locales/nb/common.json +++ b/locales/nb/common.json @@ -3907,6 +3907,9 @@ "title_all_accounts": "{name} ({count}, {total} i alle kontoer)", "title_all_accounts_only": "{name} ({total} i alle kontoer)" }, + "mail_p3_list": { + "conversations_found": "{count, plural, =0 {Ingen treff} one {# samtale funnet} other {# samtaler funnet}}" + }, "uxs_folders": { "manage_accounts": "Administrer kontoer…", "apply_to_existing": "{count, plural, one {Bruk på # eksisterende melding i {folder}} other {Bruk på # eksisterende meldinger i {folder}}}" diff --git a/locales/nl/common.json b/locales/nl/common.json index 850adae76..42ce61eb9 100644 --- a/locales/nl/common.json +++ b/locales/nl/common.json @@ -3907,6 +3907,9 @@ "title_all_accounts": "{name} ({count}, {total} in alle accounts)", "title_all_accounts_only": "{name} ({total} in alle accounts)" }, + "mail_p3_list": { + "conversations_found": "{count, plural, =0 {Geen resultaten gevonden} one {# gesprek gevonden} other {# gesprekken gevonden}}" + }, "uxs_folders": { "manage_accounts": "Accounts beheren…", "apply_to_existing": "{count, plural, one {Toepassen op # bestaand bericht in {folder}} other {Toepassen op # bestaande berichten in {folder}}}" diff --git a/locales/pl/common.json b/locales/pl/common.json index 4a2e1d145..e22e3f1b1 100644 --- a/locales/pl/common.json +++ b/locales/pl/common.json @@ -3907,6 +3907,9 @@ "title_all_accounts": "{name} ({count}, {total} we wszystkich kontach)", "title_all_accounts_only": "{name} ({total} we wszystkich kontach)" }, + "mail_p3_list": { + "conversations_found": "{count, plural, =0 {Nie znaleziono wyników} one {Znaleziono # konwersację} few {Znaleziono # konwersacje} many {Znaleziono # konwersacji} other {Znaleziono # konwersacji}}" + }, "uxs_folders": { "manage_accounts": "Zarządzaj kontami…", "apply_to_existing": "{count, plural, one {Zastosuj do # istniejącej wiadomości w folderze {folder}} few {Zastosuj do # istniejących wiadomości w folderze {folder}} many {Zastosuj do # istniejących wiadomości w folderze {folder}} other {Zastosuj do # istniejącej wiadomości w folderze {folder}}}" diff --git a/locales/pt/common.json b/locales/pt/common.json index 2d1cb668f..1dd224224 100644 --- a/locales/pt/common.json +++ b/locales/pt/common.json @@ -3907,6 +3907,9 @@ "title_all_accounts": "{name} ({count}, {total} em todas as contas)", "title_all_accounts_only": "{name} ({total} em todas as contas)" }, + "mail_p3_list": { + "conversations_found": "{count, plural, =0 {Nenhum resultado encontrado} one {# conversa encontrada} other {# conversas encontradas}}" + }, "uxs_folders": { "manage_accounts": "Gerir contas…", "apply_to_existing": "{count, plural, one {Aplicar a # mensagem existente em {folder}} other {Aplicar a # mensagens existentes em {folder}}}" diff --git a/locales/ro/common.json b/locales/ro/common.json index 13e536618..8addc45ef 100644 --- a/locales/ro/common.json +++ b/locales/ro/common.json @@ -3907,6 +3907,9 @@ "title_all_accounts": "{name} ({count}, {total} în toate conturile)", "title_all_accounts_only": "{name} ({total} în toate conturile)" }, + "mail_p3_list": { + "conversations_found": "{count, plural, =0 {Nu s-au găsit rezultate} one {# conversație găsită} few {# conversații găsite} other {# de conversații găsite}}" + }, "uxs_folders": { "manage_accounts": "Gestionați conturile…", "apply_to_existing": "{count, plural, one {Aplicați la # mesaj existent din {folder}} few {Aplicați la # mesaje existente din {folder}} other {Aplicați la # de mesaje existente din {folder}}}" diff --git a/locales/ru/common.json b/locales/ru/common.json index 363c7f451..3be2e3310 100644 --- a/locales/ru/common.json +++ b/locales/ru/common.json @@ -3907,6 +3907,9 @@ "title_all_accounts": "{name} ({count}, {total} во всех аккаунтах)", "title_all_accounts_only": "{name} ({total} во всех аккаунтах)" }, + "mail_p3_list": { + "conversations_found": "{count, plural, =0 {Ничего не найдено} one {Найдена # беседа} few {Найдено # беседы} many {Найдено # бесед} other {Найдено # беседы}}" + }, "uxs_folders": { "manage_accounts": "Управление аккаунтами…", "apply_to_existing": "{count, plural, one {Применить к # имеющемуся письму в папке {folder}} few {Применить к # имеющимся письмам в папке {folder}} many {Применить к # имеющимся письмам в папке {folder}} other {Применить к # имеющегося письма в папке {folder}}}" diff --git a/locales/sk/common.json b/locales/sk/common.json index 66a7851c7..769cd7da6 100644 --- a/locales/sk/common.json +++ b/locales/sk/common.json @@ -3907,6 +3907,9 @@ "title_all_accounts": "{name} ({count}, {total} vo všetkých účtoch)", "title_all_accounts_only": "{name} ({total} vo všetkých účtoch)" }, + "mail_p3_list": { + "conversations_found": "{count, plural, =0 {Neboli nájdené žiadne výsledky} one {Nájdená # konverzácia} few {Nájdené # konverzácie} many {Nájdených # konverzácií} other {Nájdených # konverzácií}}" + }, "uxs_folders": { "manage_accounts": "Spravovať účty…", "apply_to_existing": "{count, plural, one {Použiť na # existujúcu správu v priečinku {folder}} few {Použiť na # existujúce správy v priečinku {folder}} many {Použiť na # existujúcej správy v priečinku {folder}} other {Použiť na # existujúcich správ v priečinku {folder}}}" diff --git a/locales/th/common.json b/locales/th/common.json index 4486e56a2..e7587a8c9 100644 --- a/locales/th/common.json +++ b/locales/th/common.json @@ -1057,6 +1057,9 @@ "title_all_accounts": "{name} ({count}, {total} ในทุกบัญชี)", "title_all_accounts_only": "{name} ({total} ในทุกบัญชี)" }, + "mail_p3_list": { + "conversations_found": "{count, plural, =0 {ไม่พบผลการค้นหา} other {พบ # การสนทนา}}" + }, "uxs_folders": { "manage_accounts": "จัดการบัญชี…", "apply_to_existing": "{count, plural, other {นำไปใช้กับข้อความเดิม # ฉบับใน {folder}}}" diff --git a/locales/tr/common.json b/locales/tr/common.json index 45f0af1c7..b6a75e67c 100644 --- a/locales/tr/common.json +++ b/locales/tr/common.json @@ -3907,6 +3907,9 @@ "title_all_accounts": "{name} ({count}, tüm hesaplarda {total})", "title_all_accounts_only": "{name} (tüm hesaplarda {total})" }, + "mail_p3_list": { + "conversations_found": "{count, plural, =0 {Sonuç bulunamadı} one {# konuşma bulundu} other {# konuşma bulundu}}" + }, "uxs_folders": { "manage_accounts": "Hesapları yönet…", "apply_to_existing": "{count, plural, one {{folder} içindeki # mevcut iletiye uygula} other {{folder} içindeki # mevcut iletiye uygula}}" diff --git a/locales/uk/common.json b/locales/uk/common.json index 25201fbf8..56a9935e7 100644 --- a/locales/uk/common.json +++ b/locales/uk/common.json @@ -3907,6 +3907,9 @@ "title_all_accounts": "{name} ({count}, {total} в усіх акаунтах)", "title_all_accounts_only": "{name} ({total} в усіх акаунтах)" }, + "mail_p3_list": { + "conversations_found": "{count, plural, =0 {Результатів не знайдено} one {Знайдено # розмову} few {Знайдено # розмови} many {Знайдено # розмов} other {Знайдено # розмови}}" + }, "uxs_folders": { "manage_accounts": "Керувати обліковими записами…", "apply_to_existing": "{count, plural, one {Застосувати до # наявного листа в теці {folder}} few {Застосувати до # наявних листів у теці {folder}} many {Застосувати до # наявних листів у теці {folder}} other {Застосувати до # наявного листа в теці {folder}}}" diff --git a/locales/vi/common.json b/locales/vi/common.json index b89b0e71c..37c76e534 100644 --- a/locales/vi/common.json +++ b/locales/vi/common.json @@ -3919,6 +3919,9 @@ "title_all_accounts": "{name} ({count}, {total} trong mọi tài khoản)", "title_all_accounts_only": "{name} ({total} trong mọi tài khoản)" }, + "mail_p3_list": { + "conversations_found": "{count, plural, =0 {Không tìm thấy kết quả nào} other {Tìm thấy # cuộc trò chuyện}}" + }, "uxs_folders": { "manage_accounts": "Quản lý tài khoản…", "apply_to_existing": "{count, plural, one {Áp dụng cho # thư hiện có trong {folder}} other {Áp dụng cho # thư hiện có trong {folder}}}" diff --git a/locales/zh-TW/common.json b/locales/zh-TW/common.json index 763cc8226..f06f0863f 100644 --- a/locales/zh-TW/common.json +++ b/locales/zh-TW/common.json @@ -3907,6 +3907,9 @@ "title_all_accounts": "{name} ({count}、所有帳號共 {total})", "title_all_accounts_only": "{name} (所有帳號共 {total})" }, + "mail_p3_list": { + "conversations_found": "{count, plural, =0 {找不到結果} other {找到 # 個對話串}}" + }, "uxs_folders": { "manage_accounts": "管理帳號…", "apply_to_existing": "{count, plural, other {套用到{folder}中的 # 封既有郵件}}" diff --git a/locales/zh/common.json b/locales/zh/common.json index 0dc7de7df..08cadccaa 100644 --- a/locales/zh/common.json +++ b/locales/zh/common.json @@ -3907,6 +3907,9 @@ "title_all_accounts": "{name} ({count}、所有账户共 {total})", "title_all_accounts_only": "{name} (所有账户共 {total})" }, + "mail_p3_list": { + "conversations_found": "{count, plural, =0 {未找到结果} other {找到 # 个会话}}" + }, "uxs_folders": { "manage_accounts": "管理账户…", "apply_to_existing": "{count, plural, other {应用于{folder}中的 # 封已有邮件}}"