From 179d3994bbdb421e9a54cb27658d6c27b1914e8a Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Wed, 4 Nov 2026 13:57:46 +0100 Subject: [PATCH] feat: refresh Calendar, Contacts and Files with F9 in the desktop app, and move through the calendar from Go --- .../calendar-desktop-menu-ux-pim.test.tsx | 30 +++++++++++++ components/calendar/calendar-app.tsx | 9 +++- .../use-refresh-gesture-desktop-menu.test.tsx | 42 +++++++++++++++++++ hooks/use-refresh-gesture.tsx | 7 ++++ lib/desktop/languages.ts | 4 ++ locales/ar/common.json | 12 ++++++ locales/ca/common.json | 12 ++++++ locales/cs/common.json | 12 ++++++ locales/da/common.json | 12 ++++++ locales/de/common.json | 12 ++++++ locales/en/common.json | 12 ++++++ locales/es/common.json | 12 ++++++ locales/et/common.json | 12 ++++++ locales/fa/common.json | 12 ++++++ locales/fr/common.json | 12 ++++++ locales/he/common.json | 12 ++++++ locales/hu/common.json | 12 ++++++ locales/it/common.json | 12 ++++++ locales/ja/common.json | 12 ++++++ locales/ko/common.json | 12 ++++++ locales/lv/common.json | 12 ++++++ locales/mn/common.json | 12 ++++++ locales/nb/common.json | 12 ++++++ locales/nl/common.json | 12 ++++++ locales/pl/common.json | 12 ++++++ locales/pt/common.json | 12 ++++++ locales/ro/common.json | 12 ++++++ locales/ru/common.json | 12 ++++++ locales/sk/common.json | 12 ++++++ locales/th/common.json | 12 ++++++ locales/tr/common.json | 12 ++++++ locales/uk/common.json | 12 ++++++ locales/vi/common.json | 12 ++++++ locales/zh-TW/common.json | 12 ++++++ locales/zh/common.json | 12 ++++++ 35 files changed, 451 insertions(+), 1 deletion(-) create mode 100644 hooks/__tests__/use-refresh-gesture-desktop-menu.test.tsx diff --git a/components/calendar/__tests__/calendar-desktop-menu-ux-pim.test.tsx b/components/calendar/__tests__/calendar-desktop-menu-ux-pim.test.tsx index 0fc99ee3e..7b239e204 100644 --- a/components/calendar/__tests__/calendar-desktop-menu-ux-pim.test.tsx +++ b/components/calendar/__tests__/calendar-desktop-menu-ux-pim.test.tsx @@ -30,6 +30,7 @@ vi.mock('@/hooks/use-config', () => ({ useConfig: () => config })); import { CalendarApp } from '../calendar-app'; import { requestAppCommand } from '@/lib/app-commands'; +import { mergedDesktopState, resetDesktopCommands, runDesktopCommand } from '@/lib/desktop/commands'; vi.setConfig({ testTimeout: 30000 }); @@ -84,3 +85,32 @@ describe('Calendar in the desktop menus', () => { expect(screen.queryByRole('dialog', { name: 'title' })).toBeNull(); }); }); + +// pim-p2-9 (2026-11-04): the desktop app's Go menu in Calendar moves through time +// (Today, Next period, Previous period) instead of offering Mail's folders. +describe('Calendar in the desktop Go menu', () => { + beforeEach(() => { + resetDesktopCommands(); + (window as unknown as { bulwarkDesktop: unknown }).bulwarkDesktop = { version: 1, platform: 'win32', menu: { setState: vi.fn(), onCommand: vi.fn() } }; + }); + afterEach(() => { + delete (window as unknown as { bulwarkDesktop?: unknown }).bulwarkDesktop; + resetDesktopCommands(); + }); + + it('offers Today, Next period and Previous period, and each moves the week', () => { + render(); + const state = mergedDesktopState(); + expect(state['go.today']).toBe(true); + expect(state['go.nextPeriod']).toBe(true); + expect(state['go.previousPeriod']).toBe(true); + const day = () => useCalendarStore.getState().selectedDate.toDateString(); + act(() => { expect(runDesktopCommand('go.nextPeriod')).toBe(true); }); + expect(day()).toBe(new Date(2026, 9, 19).toDateString()); + act(() => { runDesktopCommand('go.previousPeriod'); }); + act(() => { runDesktopCommand('go.previousPeriod'); }); + expect(day()).toBe(new Date(2026, 9, 5).toDateString()); + act(() => { runDesktopCommand('go.today'); }); + expect(day()).toBe(new Date().toDateString()); + }); +}); diff --git a/components/calendar/calendar-app.tsx b/components/calendar/calendar-app.tsx index 3ce9695bb..b22d639a5 100644 --- a/components/calendar/calendar-app.tsx +++ b/components/calendar/calendar-app.tsx @@ -1686,7 +1686,7 @@ export function CalendarApp({ linkSegments: routeSegments }: CalendarAppProps = "new-task": () => { if (enableCalendarTasks) openCreateTaskModal(); }, "import-calendar": () => { if (!demoMode) setShowImportModal(true); }, }, true); - // Its View menu's Day, Week, Month and Agenda, and Edit > Search events. + // Its View menu's Day, Week, Month and Agenda, Go's Today and periods, and Edit > Search events. const viewFromMenu = (mode: CalendarViewMode) => () => { setMobileReturnToMonth(false); leaveSearch(); setViewMode(mode); }; useDesktopCommands({ "view.calendar.day": viewFromMenu("day"), @@ -1694,7 +1694,14 @@ export function CalendarApp({ linkSegments: routeSegments }: CalendarAppProps = "view.calendar.month": viewFromMenu("month"), "view.calendar.agenda": viewFromMenu("agenda"), "edit.search": openSearch, + // Go > Today, Next period and Previous period: the toolbar's arrows and T. + "go.today": () => { leaveSearch(); goToToday(); }, + "go.nextPeriod": () => { leaveSearch(); navigateNext(); }, + "go.previousPeriod": () => { leaveSearch(); navigatePrev(); }, }, { + "go.today": normalizedViewMode !== "tasks", + "go.nextPeriod": normalizedViewMode !== "tasks", + "go.previousPeriod": normalizedViewMode !== "tasks", "view.calendar.day": { enabled: true, checked: normalizedViewMode === "day" }, "view.calendar.week": { enabled: true, checked: normalizedViewMode === "week" }, "view.calendar.month": { enabled: true, checked: normalizedViewMode === "month" }, diff --git a/hooks/__tests__/use-refresh-gesture-desktop-menu.test.tsx b/hooks/__tests__/use-refresh-gesture-desktop-menu.test.tsx new file mode 100644 index 000000000..c363bb1db --- /dev/null +++ b/hooks/__tests__/use-refresh-gesture-desktop-menu.test.tsx @@ -0,0 +1,42 @@ +import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'; +import { render, act } from '@testing-library/react'; +import { useRefreshGesture } from '@/hooks/use-refresh-gesture'; +import { mergedDesktopState, resetDesktopCommands, runDesktopCommand } from '@/lib/desktop/commands'; + +/** + * pim-p2-9 (2026-11-04): in the desktop app View > Refresh (F9) was Mail's "Check + * for new mail" and greyed in Calendar, Contacts and Files. Each screen's own + * refresh (the one F5 and pull-to-refresh run) now answers the menu. + */ + +function Screen({ onRefresh, enabled = true }: { onRefresh: () => void; enabled?: boolean }) { + const { indicator } = useRefreshGesture({ onRefresh, enabled }); + return
{indicator}
; +} + +describe('useRefreshGesture in the desktop app', () => { + beforeEach(() => { + resetDesktopCommands(); + (window as unknown as { bulwarkDesktop: unknown }).bulwarkDesktop = { version: 1, platform: 'win32', menu: { setState: vi.fn(), onCommand: vi.fn() } }; + }); + afterEach(() => { + delete (window as unknown as { bulwarkDesktop?: unknown }).bulwarkDesktop; + resetDesktopCommands(); + }); + + it('enables View > Refresh and runs the screen refresh from it', async () => { + const onRefresh = vi.fn(); + render(); + expect(mergedDesktopState()['view.refresh']).toBe(true); + await act(async () => { + expect(runDesktopCommand('view.refresh')).toBe(true); + }); + expect(onRefresh).toHaveBeenCalledTimes(1); + }); + + it('offers nothing while the screen can not refresh', () => { + render(); + expect(mergedDesktopState()['view.refresh']).toBeUndefined(); + expect(runDesktopCommand('view.refresh')).toBe(false); + }); +}); diff --git a/hooks/use-refresh-gesture.tsx b/hooks/use-refresh-gesture.tsx index f74737516..a4a26ac68 100644 --- a/hooks/use-refresh-gesture.tsx +++ b/hooks/use-refresh-gesture.tsx @@ -3,6 +3,7 @@ import { useEffect, useMemo, useRef } from "react"; import { useTranslations } from "next-intl"; import { getDesktopBridge } from "@/lib/desktop/bridge"; +import { useDesktopCommands } from "@/lib/desktop/commands"; import { PullToRefreshIndicator, createPullToRefreshStore, @@ -93,8 +94,12 @@ export function useRefreshGesture({ onRefresh, enabled = true }: UseRefreshGestu const t = useTranslations("common"); const onRefreshRef = useRef(onRefresh); const runningRef = useRef(false); + const triggerRef = useRef<(() => void) | null>(null); const store = useMemo(() => createPullToRefreshStore(), []); + // The desktop app's View > Refresh (F9, F5) runs the same refresh for the screen in front. + useDesktopCommands({ "view.refresh": () => triggerRef.current?.() }, { "view.refresh": enabled }, enabled); + useEffect(() => { onRefreshRef.current = onRefresh; }, [onRefresh]); @@ -135,6 +140,7 @@ export function useRefreshGesture({ onRefresh, enabled = true }: UseRefreshGestu } })(); }; + triggerRef.current = trigger; const handleKeyDown = (event: KeyboardEvent) => { const isReloadKey = @@ -240,6 +246,7 @@ export function useRefreshGesture({ onRefresh, enabled = true }: UseRefreshGestu window.removeEventListener("touchcancel", cancelPull); timers.forEach(clearTimeout); timers.clear(); + if (triggerRef.current === trigger) triggerRef.current = null; store.set({ phase: "idle", distance: 0 }); }; }, [enabled, store]); diff --git a/lib/desktop/languages.ts b/lib/desktop/languages.ts index 010b284fa..86c6d598a 100644 --- a/lib/desktop/languages.ts +++ b/lib/desktop/languages.ts @@ -91,6 +91,7 @@ export function shellLabels(t: (key: string, values?: Record) => menuSelectAll: t('desktopUi.menu.select_all'), menuSearch: t('desktopUi.menu.search'), menuRefresh: t('desktopUi.menu.refresh'), + menuRefreshView: t('ux_p2_pim_cm.menu_refresh'), menuReadingPane: t('desktopUi.menu.reading_pane'), menuPaneRight: t('desktopUi.menu.pane_right'), menuPaneBelow: t('desktopUi.menu.pane_below'), @@ -112,6 +113,9 @@ export function shellLabels(t: (key: string, values?: Record) => menuDelete: t('context_menu.delete'), menuOpenInWindow: t('desktopUi.menu.open_in_window'), menuGoInbox: t('sidebar.mailboxes.inbox'), + menuGoToday: t('ux_p2_pim_cm.menu_today'), + menuGoNextPeriod: t('ux_p2_pim_cm.menu_next_period'), + menuGoPreviousPeriod: t('ux_p2_pim_cm.menu_previous_period'), menuGoSent: t('sidebar.mailboxes.sent'), menuGoDrafts: t('sidebar.mailboxes.drafts'), menuGoNext: t('desktopUi.menu.next_message'), diff --git a/locales/ar/common.json b/locales/ar/common.json index db3f91ff9..e0d3199a4 100644 --- a/locales/ar/common.json +++ b/locales/ar/common.json @@ -7519,6 +7519,18 @@ "import_calendar": "التقويم…", "import_contacts": "جهات الاتصال…" }, + "ux_p2_pim_cm": { + "menu_refresh": "تحديث", + "menu_today": "اليوم", + "menu_next_period": "الفترة التالية", + "menu_previous_period": "الفترة السابقة", + "account_scope_label": "يعرض {address}. تبديل الحساب", + "account_scope_menu": "تبديل الحساب", + "merge_links": "روابط", + "merge_photo": "صورة", + "merge_kept": "محفوظ", + "import_show": "عرض" + }, "desktopEdit": { "edit": "تعديل", "edit_named": "تعديل {name}", diff --git a/locales/ca/common.json b/locales/ca/common.json index 370dd4902..87286548a 100644 --- a/locales/ca/common.json +++ b/locales/ca/common.json @@ -7519,6 +7519,18 @@ "import_calendar": "Calendari…", "import_contacts": "Contactes…" }, + "ux_p2_pim_cm": { + "menu_refresh": "Actualitza", + "menu_today": "Avui", + "menu_next_period": "Període següent", + "menu_previous_period": "Període anterior", + "account_scope_label": "Es mostra {address}. Canvia de compte", + "account_scope_menu": "Canvia de compte", + "merge_links": "Enllaços", + "merge_photo": "Foto", + "merge_kept": "Es conserva", + "import_show": "Mostra" + }, "desktopEdit": { "edit": "Edita", "edit_named": "Edita {name}", diff --git a/locales/cs/common.json b/locales/cs/common.json index c77cddf2a..9129e66e7 100644 --- a/locales/cs/common.json +++ b/locales/cs/common.json @@ -7519,6 +7519,18 @@ "import_calendar": "Kalendář…", "import_contacts": "Kontakty…" }, + "ux_p2_pim_cm": { + "menu_refresh": "Obnovit", + "menu_today": "Dnes", + "menu_next_period": "Další období", + "menu_previous_period": "Předchozí období", + "account_scope_label": "Zobrazuje se {address}. Přepnout účet", + "account_scope_menu": "Přepnout účet", + "merge_links": "Odkazy", + "merge_photo": "Fotka", + "merge_kept": "Zůstane", + "import_show": "Zobrazit" + }, "desktopEdit": { "edit": "Upravit", "edit_named": "Upravit {name}", diff --git a/locales/da/common.json b/locales/da/common.json index 89522ce74..4da1fc158 100644 --- a/locales/da/common.json +++ b/locales/da/common.json @@ -7519,6 +7519,18 @@ "import_calendar": "Kalender…", "import_contacts": "Kontakter…" }, + "ux_p2_pim_cm": { + "menu_refresh": "Opdater", + "menu_today": "I dag", + "menu_next_period": "Næste periode", + "menu_previous_period": "Forrige periode", + "account_scope_label": "Viser {address}. Skift konto", + "account_scope_menu": "Skift konto", + "merge_links": "Links", + "merge_photo": "Foto", + "merge_kept": "Beholdes", + "import_show": "Vis" + }, "desktopEdit": { "edit": "Rediger", "edit_named": "Rediger {name}", diff --git a/locales/de/common.json b/locales/de/common.json index 5f077d7fd..f587c4eda 100644 --- a/locales/de/common.json +++ b/locales/de/common.json @@ -7519,6 +7519,18 @@ "import_calendar": "Kalender…", "import_contacts": "Kontakte…" }, + "ux_p2_pim_cm": { + "menu_refresh": "Aktualisieren", + "menu_today": "Heute", + "menu_next_period": "Nächster Zeitraum", + "menu_previous_period": "Vorheriger Zeitraum", + "account_scope_label": "Zeigt {address}. Konto wechseln", + "account_scope_menu": "Konto wechseln", + "merge_links": "Links", + "merge_photo": "Foto", + "merge_kept": "Bleibt erhalten", + "import_show": "Anzeigen" + }, "desktopEdit": { "edit": "Bearbeiten", "edit_named": "{name} bearbeiten", diff --git a/locales/en/common.json b/locales/en/common.json index ea30812aa..b708501bf 100644 --- a/locales/en/common.json +++ b/locales/en/common.json @@ -7519,6 +7519,18 @@ "import_calendar": "Calendar…", "import_contacts": "Contacts…" }, + "ux_p2_pim_cm": { + "menu_refresh": "Refresh", + "menu_today": "Today", + "menu_next_period": "Next period", + "menu_previous_period": "Previous period", + "account_scope_label": "Showing {address}. Switch account", + "account_scope_menu": "Switch account", + "merge_links": "Links", + "merge_photo": "Photo", + "merge_kept": "Kept", + "import_show": "Show" + }, "desktopEdit": { "edit": "Edit", "edit_named": "Edit {name}", diff --git a/locales/es/common.json b/locales/es/common.json index e28d12f5f..b15556a39 100644 --- a/locales/es/common.json +++ b/locales/es/common.json @@ -7519,6 +7519,18 @@ "import_calendar": "Calendario…", "import_contacts": "Contactos…" }, + "ux_p2_pim_cm": { + "menu_refresh": "Actualizar", + "menu_today": "Hoy", + "menu_next_period": "Periodo siguiente", + "menu_previous_period": "Periodo anterior", + "account_scope_label": "Se muestra {address}. Cambiar de cuenta", + "account_scope_menu": "Cambiar de cuenta", + "merge_links": "Enlaces", + "merge_photo": "Foto", + "merge_kept": "Se conserva", + "import_show": "Mostrar" + }, "desktopEdit": { "edit": "Editar", "edit_named": "Editar {name}", diff --git a/locales/et/common.json b/locales/et/common.json index 584c4f2b7..cebb3038c 100644 --- a/locales/et/common.json +++ b/locales/et/common.json @@ -7519,6 +7519,18 @@ "import_calendar": "Kalender…", "import_contacts": "Kontaktid…" }, + "ux_p2_pim_cm": { + "menu_refresh": "Värskenda", + "menu_today": "Täna", + "menu_next_period": "Järgmine periood", + "menu_previous_period": "Eelmine periood", + "account_scope_label": "Kuvatakse {address}. Vaheta kontot", + "account_scope_menu": "Vaheta kontot", + "merge_links": "Lingid", + "merge_photo": "Foto", + "merge_kept": "Jääb alles", + "import_show": "Näita" + }, "desktopEdit": { "edit": "Muuda", "edit_named": "Muuda faili {name}", diff --git a/locales/fa/common.json b/locales/fa/common.json index 1c49696fe..868dcbc6c 100644 --- a/locales/fa/common.json +++ b/locales/fa/common.json @@ -7519,6 +7519,18 @@ "import_calendar": "تقویم…", "import_contacts": "مخاطبین…" }, + "ux_p2_pim_cm": { + "menu_refresh": "بازخوانی", + "menu_today": "امروز", + "menu_next_period": "بازه بعدی", + "menu_previous_period": "بازه قبلی", + "account_scope_label": "نمایش {address}. تغییر حساب", + "account_scope_menu": "تغییر حساب", + "merge_links": "پیوندها", + "merge_photo": "عکس", + "merge_kept": "حفظ می‌شود", + "import_show": "نمایش" + }, "desktopEdit": { "edit": "ویرایش", "edit_named": "ویرایش {name}", diff --git a/locales/fr/common.json b/locales/fr/common.json index 1a6a2f71c..386b54271 100644 --- a/locales/fr/common.json +++ b/locales/fr/common.json @@ -7519,6 +7519,18 @@ "import_calendar": "Calendrier…", "import_contacts": "Contacts…" }, + "ux_p2_pim_cm": { + "menu_refresh": "Actualiser", + "menu_today": "Aujourd’hui", + "menu_next_period": "Période suivante", + "menu_previous_period": "Période précédente", + "account_scope_label": "Affiche {address}. Changer de compte", + "account_scope_menu": "Changer de compte", + "merge_links": "Liens", + "merge_photo": "Photo", + "merge_kept": "Conservé", + "import_show": "Afficher" + }, "desktopEdit": { "edit": "Modifier", "edit_named": "Modifier {name}", diff --git a/locales/he/common.json b/locales/he/common.json index e15809a86..d3ff2084f 100644 --- a/locales/he/common.json +++ b/locales/he/common.json @@ -7520,6 +7520,18 @@ "import_calendar": "לוח שנה…", "import_contacts": "אנשי קשר…" }, + "ux_p2_pim_cm": { + "menu_refresh": "רענון", + "menu_today": "היום", + "menu_next_period": "התקופה הבאה", + "menu_previous_period": "התקופה הקודמת", + "account_scope_label": "מוצג {address}. החלפת חשבון", + "account_scope_menu": "החלפת חשבון", + "merge_links": "קישורים", + "merge_photo": "תמונה", + "merge_kept": "נשמר", + "import_show": "הצגה" + }, "desktopEdit": { "edit": "עריכה", "edit_named": "עריכת {name}", diff --git a/locales/hu/common.json b/locales/hu/common.json index 23c5c88d4..96a881a27 100644 --- a/locales/hu/common.json +++ b/locales/hu/common.json @@ -7519,6 +7519,18 @@ "import_calendar": "Naptár…", "import_contacts": "Névjegyek…" }, + "ux_p2_pim_cm": { + "menu_refresh": "Frissítés", + "menu_today": "Ma", + "menu_next_period": "Következő időszak", + "menu_previous_period": "Előző időszak", + "account_scope_label": "Látható: {address}. Fiókváltás", + "account_scope_menu": "Fiókváltás", + "merge_links": "Hivatkozások", + "merge_photo": "Fénykép", + "merge_kept": "Megmarad", + "import_show": "Megjelenítés" + }, "desktopEdit": { "edit": "Szerkesztés", "edit_named": "{name} szerkesztése", diff --git a/locales/it/common.json b/locales/it/common.json index 73fda3f89..311905906 100644 --- a/locales/it/common.json +++ b/locales/it/common.json @@ -7519,6 +7519,18 @@ "import_calendar": "Calendario…", "import_contacts": "Contatti…" }, + "ux_p2_pim_cm": { + "menu_refresh": "Aggiorna", + "menu_today": "Oggi", + "menu_next_period": "Periodo successivo", + "menu_previous_period": "Periodo precedente", + "account_scope_label": "Mostra {address}. Cambia account", + "account_scope_menu": "Cambia account", + "merge_links": "Link", + "merge_photo": "Foto", + "merge_kept": "Mantenuto", + "import_show": "Mostra" + }, "desktopEdit": { "edit": "Modifica", "edit_named": "Modifica {name}", diff --git a/locales/ja/common.json b/locales/ja/common.json index 6b2f3e82b..321e6e60c 100644 --- a/locales/ja/common.json +++ b/locales/ja/common.json @@ -7519,6 +7519,18 @@ "import_calendar": "カレンダー…", "import_contacts": "連絡先…" }, + "ux_p2_pim_cm": { + "menu_refresh": "更新", + "menu_today": "今日", + "menu_next_period": "次の期間", + "menu_previous_period": "前の期間", + "account_scope_label": "{address} を表示中。アカウントを切り替え", + "account_scope_menu": "アカウントを切り替え", + "merge_links": "リンク", + "merge_photo": "写真", + "merge_kept": "残ります", + "import_show": "表示" + }, "desktopEdit": { "edit": "編集", "edit_named": "{name} を編集", diff --git a/locales/ko/common.json b/locales/ko/common.json index fe9560d3f..3b329a19e 100644 --- a/locales/ko/common.json +++ b/locales/ko/common.json @@ -7519,6 +7519,18 @@ "import_calendar": "캘린더…", "import_contacts": "연락처…" }, + "ux_p2_pim_cm": { + "menu_refresh": "새로 고침", + "menu_today": "오늘", + "menu_next_period": "다음 기간", + "menu_previous_period": "이전 기간", + "account_scope_label": "{address} 표시 중. 계정 전환", + "account_scope_menu": "계정 전환", + "merge_links": "링크", + "merge_photo": "사진", + "merge_kept": "유지됨", + "import_show": "보기" + }, "desktopEdit": { "edit": "편집", "edit_named": "{name} 편집", diff --git a/locales/lv/common.json b/locales/lv/common.json index 6c2792f2a..855030759 100644 --- a/locales/lv/common.json +++ b/locales/lv/common.json @@ -7519,6 +7519,18 @@ "import_calendar": "Kalendārs…", "import_contacts": "Kontakti…" }, + "ux_p2_pim_cm": { + "menu_refresh": "Atsvaidzināt", + "menu_today": "Šodien", + "menu_next_period": "Nākamais periods", + "menu_previous_period": "Iepriekšējais periods", + "account_scope_label": "Rāda {address}. Pārslēgt kontu", + "account_scope_menu": "Pārslēgt kontu", + "merge_links": "Saites", + "merge_photo": "Foto", + "merge_kept": "Saglabājas", + "import_show": "Rādīt" + }, "desktopEdit": { "edit": "Rediģēt", "edit_named": "Rediģēt {name}", diff --git a/locales/mn/common.json b/locales/mn/common.json index 5638c0661..58af27e1d 100644 --- a/locales/mn/common.json +++ b/locales/mn/common.json @@ -7519,6 +7519,18 @@ "import_calendar": "Хуанли…", "import_contacts": "Харилцагчид…" }, + "ux_p2_pim_cm": { + "menu_refresh": "Шинэчлэх", + "menu_today": "Өнөөдөр", + "menu_next_period": "Дараагийн үе", + "menu_previous_period": "Өмнөх үе", + "account_scope_label": "{address}-г харуулж байна. Бүртгэл солих", + "account_scope_menu": "Бүртгэл солих", + "merge_links": "Холбоосууд", + "merge_photo": "Зураг", + "merge_kept": "Хадгалагдана", + "import_show": "Харуулах" + }, "desktopEdit": { "edit": "Засах", "edit_named": "{name} засах", diff --git a/locales/nb/common.json b/locales/nb/common.json index 875523efe..ecad3c884 100644 --- a/locales/nb/common.json +++ b/locales/nb/common.json @@ -7519,6 +7519,18 @@ "import_calendar": "Kalender…", "import_contacts": "Kontakter…" }, + "ux_p2_pim_cm": { + "menu_refresh": "Oppdater", + "menu_today": "I dag", + "menu_next_period": "Neste periode", + "menu_previous_period": "Forrige periode", + "account_scope_label": "Viser {address}. Bytt konto", + "account_scope_menu": "Bytt konto", + "merge_links": "Lenker", + "merge_photo": "Bilde", + "merge_kept": "Beholdes", + "import_show": "Vis" + }, "desktopEdit": { "edit": "Rediger", "edit_named": "Rediger {name}", diff --git a/locales/nl/common.json b/locales/nl/common.json index c24f86f62..5a4b4d8e9 100644 --- a/locales/nl/common.json +++ b/locales/nl/common.json @@ -7519,6 +7519,18 @@ "import_calendar": "Agenda…", "import_contacts": "Contacten…" }, + "ux_p2_pim_cm": { + "menu_refresh": "Vernieuwen", + "menu_today": "Vandaag", + "menu_next_period": "Volgende periode", + "menu_previous_period": "Vorige periode", + "account_scope_label": "Toont {address}. Ander account kiezen", + "account_scope_menu": "Ander account kiezen", + "merge_links": "Links", + "merge_photo": "Foto", + "merge_kept": "Blijft bewaard", + "import_show": "Tonen" + }, "desktopEdit": { "edit": "Bewerken", "edit_named": "{name} bewerken", diff --git a/locales/pl/common.json b/locales/pl/common.json index 90a292bbd..3f117e8e4 100644 --- a/locales/pl/common.json +++ b/locales/pl/common.json @@ -7519,6 +7519,18 @@ "import_calendar": "Kalendarz…", "import_contacts": "Kontakty…" }, + "ux_p2_pim_cm": { + "menu_refresh": "Odśwież", + "menu_today": "Dzisiaj", + "menu_next_period": "Następny okres", + "menu_previous_period": "Poprzedni okres", + "account_scope_label": "Wyświetlane: {address}. Przełącz konto", + "account_scope_menu": "Przełącz konto", + "merge_links": "Linki", + "merge_photo": "Zdjęcie", + "merge_kept": "Zostaje", + "import_show": "Pokaż" + }, "desktopEdit": { "edit": "Edytuj", "edit_named": "Edytuj {name}", diff --git a/locales/pt/common.json b/locales/pt/common.json index f38b2bc69..77ef679e5 100644 --- a/locales/pt/common.json +++ b/locales/pt/common.json @@ -7519,6 +7519,18 @@ "import_calendar": "Calendário…", "import_contacts": "Contactos…" }, + "ux_p2_pim_cm": { + "menu_refresh": "Atualizar", + "menu_today": "Hoje", + "menu_next_period": "Próximo período", + "menu_previous_period": "Período anterior", + "account_scope_label": "A mostrar {address}. Mudar de conta", + "account_scope_menu": "Mudar de conta", + "merge_links": "Ligações", + "merge_photo": "Foto", + "merge_kept": "Mantém-se", + "import_show": "Mostrar" + }, "desktopEdit": { "edit": "Editar", "edit_named": "Editar {name}", diff --git a/locales/ro/common.json b/locales/ro/common.json index e0e5ef680..49a41b6b8 100644 --- a/locales/ro/common.json +++ b/locales/ro/common.json @@ -7519,6 +7519,18 @@ "import_calendar": "Calendar…", "import_contacts": "Contacte…" }, + "ux_p2_pim_cm": { + "menu_refresh": "Reîmprospătează", + "menu_today": "Astăzi", + "menu_next_period": "Perioada următoare", + "menu_previous_period": "Perioada anterioară", + "account_scope_label": "Se afișează {address}. Schimbă contul", + "account_scope_menu": "Schimbă contul", + "merge_links": "Linkuri", + "merge_photo": "Fotografie", + "merge_kept": "Se păstrează", + "import_show": "Afișează" + }, "desktopEdit": { "edit": "Editează", "edit_named": "Editează {name}", diff --git a/locales/ru/common.json b/locales/ru/common.json index 761f4d4dd..645099a3e 100644 --- a/locales/ru/common.json +++ b/locales/ru/common.json @@ -7519,6 +7519,18 @@ "import_calendar": "Календарь…", "import_contacts": "Контакты…" }, + "ux_p2_pim_cm": { + "menu_refresh": "Обновить", + "menu_today": "Сегодня", + "menu_next_period": "Следующий период", + "menu_previous_period": "Предыдущий период", + "account_scope_label": "Показан {address}. Сменить учётную запись", + "account_scope_menu": "Сменить учётную запись", + "merge_links": "Ссылки", + "merge_photo": "Фото", + "merge_kept": "Сохранится", + "import_show": "Показать" + }, "desktopEdit": { "edit": "Изменить", "edit_named": "Изменить {name}", diff --git a/locales/sk/common.json b/locales/sk/common.json index 5b1572ca2..580d05569 100644 --- a/locales/sk/common.json +++ b/locales/sk/common.json @@ -7519,6 +7519,18 @@ "import_calendar": "Kalendár…", "import_contacts": "Kontakty…" }, + "ux_p2_pim_cm": { + "menu_refresh": "Obnoviť", + "menu_today": "Dnes", + "menu_next_period": "Ďalšie obdobie", + "menu_previous_period": "Predchádzajúce obdobie", + "account_scope_label": "Zobrazuje sa {address}. Prepnúť účet", + "account_scope_menu": "Prepnúť účet", + "merge_links": "Odkazy", + "merge_photo": "Fotka", + "merge_kept": "Zostane", + "import_show": "Zobraziť" + }, "desktopEdit": { "edit": "Upraviť", "edit_named": "Upraviť {name}", diff --git a/locales/th/common.json b/locales/th/common.json index 4e7043c82..f578d1ebd 100644 --- a/locales/th/common.json +++ b/locales/th/common.json @@ -7527,6 +7527,18 @@ "import_calendar": "ปฏิทิน…", "import_contacts": "ผู้ติดต่อ…" }, + "ux_p2_pim_cm": { + "menu_refresh": "รีเฟรช", + "menu_today": "วันนี้", + "menu_next_period": "ช่วงถัดไป", + "menu_previous_period": "ช่วงก่อนหน้า", + "account_scope_label": "กำลังแสดง {address} สลับบัญชี", + "account_scope_menu": "สลับบัญชี", + "merge_links": "ลิงก์", + "merge_photo": "รูปภาพ", + "merge_kept": "เก็บไว้", + "import_show": "แสดง" + }, "desktopEdit": { "edit": "แก้ไข", "edit_named": "แก้ไข {name}", diff --git a/locales/tr/common.json b/locales/tr/common.json index ac8dd7b92..46e5728d6 100644 --- a/locales/tr/common.json +++ b/locales/tr/common.json @@ -7519,6 +7519,18 @@ "import_calendar": "Takvim…", "import_contacts": "Kişiler…" }, + "ux_p2_pim_cm": { + "menu_refresh": "Yenile", + "menu_today": "Bugün", + "menu_next_period": "Sonraki dönem", + "menu_previous_period": "Önceki dönem", + "account_scope_label": "{address} gösteriliyor. Hesap değiştir", + "account_scope_menu": "Hesap değiştir", + "merge_links": "Bağlantılar", + "merge_photo": "Fotoğraf", + "merge_kept": "Korunur", + "import_show": "Göster" + }, "desktopEdit": { "edit": "Düzenle", "edit_named": "{name} dosyasını düzenle", diff --git a/locales/uk/common.json b/locales/uk/common.json index b0d90b0f8..0cc59c14a 100644 --- a/locales/uk/common.json +++ b/locales/uk/common.json @@ -7519,6 +7519,18 @@ "import_calendar": "Календар…", "import_contacts": "Контакти…" }, + "ux_p2_pim_cm": { + "menu_refresh": "Оновити", + "menu_today": "Сьогодні", + "menu_next_period": "Наступний період", + "menu_previous_period": "Попередній період", + "account_scope_label": "Показано {address}. Змінити обліковий запис", + "account_scope_menu": "Змінити обліковий запис", + "merge_links": "Посилання", + "merge_photo": "Фото", + "merge_kept": "Залишиться", + "import_show": "Показати" + }, "desktopEdit": { "edit": "Редагувати", "edit_named": "Редагувати {name}", diff --git a/locales/vi/common.json b/locales/vi/common.json index 367c03dd8..482dc9c53 100644 --- a/locales/vi/common.json +++ b/locales/vi/common.json @@ -7531,6 +7531,18 @@ "import_calendar": "Lịch…", "import_contacts": "Danh bạ…" }, + "ux_p2_pim_cm": { + "menu_refresh": "Làm mới", + "menu_today": "Hôm nay", + "menu_next_period": "Khoảng thời gian sau", + "menu_previous_period": "Khoảng thời gian trước", + "account_scope_label": "Đang hiển thị {address}. Chuyển tài khoản", + "account_scope_menu": "Chuyển tài khoản", + "merge_links": "Liên kết", + "merge_photo": "Ảnh", + "merge_kept": "Được giữ lại", + "import_show": "Hiển thị" + }, "desktopEdit": { "edit": "Chỉnh sửa", "edit_named": "Chỉnh sửa {name}", diff --git a/locales/zh-TW/common.json b/locales/zh-TW/common.json index 0b3d88f49..d7eff31bf 100644 --- a/locales/zh-TW/common.json +++ b/locales/zh-TW/common.json @@ -7519,6 +7519,18 @@ "import_calendar": "行事曆…", "import_contacts": "聯絡人…" }, + "ux_p2_pim_cm": { + "menu_refresh": "重新整理", + "menu_today": "今天", + "menu_next_period": "下一個期間", + "menu_previous_period": "上一個期間", + "account_scope_label": "正在顯示 {address}。切換帳號", + "account_scope_menu": "切換帳號", + "merge_links": "連結", + "merge_photo": "相片", + "merge_kept": "保留", + "import_show": "顯示" + }, "desktopEdit": { "edit": "編輯", "edit_named": "編輯 {name}", diff --git a/locales/zh/common.json b/locales/zh/common.json index 7ac44e08e..435704805 100644 --- a/locales/zh/common.json +++ b/locales/zh/common.json @@ -7519,6 +7519,18 @@ "import_calendar": "日历…", "import_contacts": "联系人…" }, + "ux_p2_pim_cm": { + "menu_refresh": "刷新", + "menu_today": "今天", + "menu_next_period": "下一时段", + "menu_previous_period": "上一时段", + "account_scope_label": "正在显示 {address}。切换账户", + "account_scope_menu": "切换账户", + "merge_links": "链接", + "merge_photo": "照片", + "merge_kept": "保留", + "import_show": "显示" + }, "desktopEdit": { "edit": "编辑", "edit_named": "编辑 {name}",