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}",