mirror of
https://github.com/bulwarkmail/webmail.git
synced 2026-10-31 08:13:50 +00:00
fix: confirm resetting settings in a dialog and report backup results in toasts instead of alerts
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
import { fireEvent, render, screen, waitFor, within } from '@testing-library/react';
|
||||
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
||||
import { useSettingsStore } from '@/stores/settings-store';
|
||||
import { AboutDataSettings } from '../about-data-settings';
|
||||
|
||||
// Backup & reset: Reset asks in a ConfirmDialog (no button that turns into
|
||||
// a red "Yes"), and every result is a toast, never a browser alert().
|
||||
|
||||
const toast = vi.hoisted(() => ({ success: vi.fn(), error: vi.fn(), info: vi.fn(), warning: vi.fn() }));
|
||||
vi.mock('@/stores/toast-store', () => ({ toast }));
|
||||
vi.mock('../settings-section', async (importOriginal) => ({
|
||||
...(await importOriginal<typeof import('../settings-section')>()),
|
||||
SettingsSection: ({ children }: { children: React.ReactNode }) => <div>{children}</div>,
|
||||
}));
|
||||
vi.mock('../debug-settings', () => ({ DebugSettings: () => null }));
|
||||
|
||||
const initial = useSettingsStore.getState();
|
||||
let alertSpy: ReturnType<typeof vi.spyOn>;
|
||||
beforeEach(() => {
|
||||
toast.success.mockClear();
|
||||
toast.error.mockClear();
|
||||
alertSpy = vi.spyOn(window, 'alert').mockImplementation(() => {});
|
||||
});
|
||||
afterEach(() => {
|
||||
useSettingsStore.setState(initial, true);
|
||||
alertSpy.mockRestore();
|
||||
});
|
||||
|
||||
describe('Backup & reset', () => {
|
||||
it('resets only after the dialog is confirmed, then says so in a toast', () => {
|
||||
const resetToDefaults = vi.fn();
|
||||
useSettingsStore.setState({ resetToDefaults });
|
||||
render(<AboutDataSettings />);
|
||||
|
||||
fireEvent.click(screen.getByRole('button', { name: 'reset_settings.button' }));
|
||||
expect(resetToDefaults).not.toHaveBeenCalled();
|
||||
const dialog = within(screen.getByRole('alertdialog'));
|
||||
expect(dialog.getByText('reset_settings.confirm_title')).toBeTruthy();
|
||||
|
||||
fireEvent.click(dialog.getByRole('button', { name: 'reset_settings.button' }));
|
||||
expect(resetToDefaults).toHaveBeenCalledTimes(1);
|
||||
expect(toast.success).toHaveBeenCalledWith('reset_settings.done');
|
||||
expect(alertSpy).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('reports an import that fails in an error toast', async () => {
|
||||
useSettingsStore.setState({ importSettings: vi.fn(() => false) });
|
||||
const { container } = render(<AboutDataSettings />);
|
||||
const input = container.querySelector('input[type="file"]') as HTMLInputElement;
|
||||
const file = new File(['not json'], 'settings.json', { type: 'application/json' });
|
||||
fireEvent.change(input, { target: { files: [file] } });
|
||||
|
||||
await waitFor(() => expect(toast.error).toHaveBeenCalledWith('import_error'));
|
||||
expect(alertSpy).not.toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
@@ -13,6 +13,8 @@ import { cn } from '@/lib/utils';
|
||||
import { getPathPrefix, withBasePath } from '@/lib/browser-navigation';
|
||||
import { clearCachedData } from '@/lib/clear-cached-data';
|
||||
import { SpamSiegeGame } from './spam-siege-game';
|
||||
import { ConfirmDialog } from '@/components/ui/confirm-dialog';
|
||||
import { toast } from '@/stores/toast-store';
|
||||
import { DebugSettings } from './debug-settings';
|
||||
|
||||
const APP_VERSION = process.env.NEXT_PUBLIC_APP_VERSION || "0.0.0";
|
||||
@@ -122,7 +124,6 @@ export function AboutFooter() {
|
||||
*/
|
||||
export function AboutDataSettings() {
|
||||
const t = useTranslations('settings.advanced');
|
||||
const tCommon = useTranslations('common');
|
||||
const tSettings = useTranslations('settings');
|
||||
const { settingsSyncDisabled, updateSetting, resetToDefaults, exportSettings, importSettings } =
|
||||
useSettingsStore();
|
||||
@@ -157,32 +158,19 @@ export function AboutDataSettings() {
|
||||
const json = event.target?.result as string;
|
||||
const success = importSettings(json);
|
||||
if (success) {
|
||||
alert(tSettings('import_success'));
|
||||
toast.success(tSettings('import_success'));
|
||||
} else {
|
||||
alert(tSettings('import_error'));
|
||||
toast.error(tSettings('import_error'));
|
||||
}
|
||||
};
|
||||
reader.readAsText(file);
|
||||
};
|
||||
|
||||
const handleRefreshCache = () => {
|
||||
if (showRefreshConfirm) {
|
||||
clearCachedData(); // reloads the page
|
||||
} else {
|
||||
setShowRefreshConfirm(true);
|
||||
setTimeout(() => setShowRefreshConfirm(false), 5000);
|
||||
}
|
||||
// The same file can be picked again after fixing it.
|
||||
e.target.value = '';
|
||||
};
|
||||
|
||||
const handleReset = () => {
|
||||
if (showResetConfirm) {
|
||||
resetToDefaults();
|
||||
setShowResetConfirm(false);
|
||||
alert(tSettings('save_success'));
|
||||
} else {
|
||||
setShowResetConfirm(true);
|
||||
setTimeout(() => setShowResetConfirm(false), 5000);
|
||||
}
|
||||
resetToDefaults();
|
||||
toast.success(t('reset_settings.done'));
|
||||
};
|
||||
|
||||
return (
|
||||
@@ -222,26 +210,36 @@ export function AboutDataSettings() {
|
||||
|
||||
<SettingsSection id="fix" title={t('sections.fix')} description={t('sections.fix_description')}>
|
||||
<SettingItem label={t('refresh_cache.label')} description={t('refresh_cache.description')}>
|
||||
<Button
|
||||
variant={showRefreshConfirm ? 'default' : 'outline'}
|
||||
size="sm"
|
||||
onClick={handleRefreshCache}
|
||||
>
|
||||
{showRefreshConfirm ? tCommon('yes') : t('refresh_cache.button')}
|
||||
<Button variant="outline" size="sm" onClick={() => setShowRefreshConfirm(true)}>
|
||||
{t('refresh_cache.button')}
|
||||
</Button>
|
||||
</SettingItem>
|
||||
|
||||
<SettingItem label={t('reset_settings.label')} description={t('reset_settings.description')}>
|
||||
<Button
|
||||
variant={showResetConfirm ? 'destructive' : 'outline'}
|
||||
size="sm"
|
||||
onClick={handleReset}
|
||||
>
|
||||
{showResetConfirm ? tCommon('yes') : t('reset_settings.button')}
|
||||
<Button variant="outline" size="sm" onClick={() => setShowResetConfirm(true)}>
|
||||
{t('reset_settings.button')}
|
||||
</Button>
|
||||
</SettingItem>
|
||||
</SettingsSection>
|
||||
|
||||
<ConfirmDialog
|
||||
isOpen={showRefreshConfirm}
|
||||
onClose={() => setShowRefreshConfirm(false)}
|
||||
onConfirm={() => clearCachedData() /* reloads the page */}
|
||||
title={t('refresh_cache.confirm_title')}
|
||||
message={t('refresh_cache.description')}
|
||||
confirmText={t('refresh_cache.button')}
|
||||
/>
|
||||
<ConfirmDialog
|
||||
isOpen={showResetConfirm}
|
||||
onClose={() => setShowResetConfirm(false)}
|
||||
onConfirm={handleReset}
|
||||
title={t('reset_settings.confirm_title')}
|
||||
message={t('reset_settings.description')}
|
||||
confirmText={t('reset_settings.button')}
|
||||
variant="destructive"
|
||||
/>
|
||||
|
||||
<DebugSettings />
|
||||
</div>
|
||||
);
|
||||
|
||||
@@ -2191,12 +2191,15 @@
|
||||
"refresh_cache": {
|
||||
"label": "تحديث البيانات المخزنة مؤقتًا",
|
||||
"description": "إعادة تحميل جهات الاتصال والتقويمات والمجلدات من الخادم. يحافظ على حساباتك وجلساتك — يصلح العرض القديم أو الخاطئ دون تسجيل الخروج.",
|
||||
"button": "تحديث"
|
||||
"button": "تحديث",
|
||||
"confirm_title": "تحديث البيانات المخزنة مؤقتًا؟"
|
||||
},
|
||||
"reset_settings": {
|
||||
"label": "إعادة تعيين الإعدادات",
|
||||
"description": "استعادة جميع الإعدادات إلى القيم الافتراضية",
|
||||
"button": "إعادة التعيين للافتراضي"
|
||||
"button": "إعادة التعيين للافتراضي",
|
||||
"confirm_title": "إعادة تعيين كل الإعدادات؟",
|
||||
"done": "تمت إعادة تعيين الإعدادات"
|
||||
},
|
||||
"export_settings": {
|
||||
"label": "تصدير الإعدادات",
|
||||
|
||||
@@ -2191,12 +2191,15 @@
|
||||
"refresh_cache": {
|
||||
"label": "Actualitza les dades emmagatzemades",
|
||||
"description": "Torna a carregar els contactes, els calendaris i les carpetes des del servidor. Manté els comptes i les sessions — soluciona una vista obsoleta o incorrecta sense tancar la sessió.",
|
||||
"button": "Actualitza"
|
||||
"button": "Actualitza",
|
||||
"confirm_title": "Voleu actualitzar les dades de la memòria cau?"
|
||||
},
|
||||
"reset_settings": {
|
||||
"label": "Restableix la configuració",
|
||||
"description": "Restaura tota la configuració als valors per defecte",
|
||||
"button": "Restableix als valors per defecte"
|
||||
"button": "Restableix als valors per defecte",
|
||||
"confirm_title": "Voleu restablir tots els paràmetres?",
|
||||
"done": "Paràmetres restablerts"
|
||||
},
|
||||
"export_settings": {
|
||||
"label": "Exporta la configuració",
|
||||
|
||||
@@ -2184,12 +2184,15 @@
|
||||
"refresh_cache": {
|
||||
"label": "Obnovit data z mezipaměti",
|
||||
"description": "Znovu načíst kontakty, kalendáře a složky ze serveru. Účty a přihlášení zůstanou zachovány – opraví zastaralé nebo chybné zobrazení bez odhlášení.",
|
||||
"button": "Obnovit"
|
||||
"button": "Obnovit",
|
||||
"confirm_title": "Obnovit data v mezipaměti?"
|
||||
},
|
||||
"reset_settings": {
|
||||
"label": "Resetovat nastavení",
|
||||
"description": "Obnovit všechna nastavení na výchozí hodnoty",
|
||||
"button": "Obnovit výchozí"
|
||||
"button": "Obnovit výchozí",
|
||||
"confirm_title": "Obnovit všechna nastavení?",
|
||||
"done": "Nastavení byla obnovena"
|
||||
},
|
||||
"export_settings": {
|
||||
"label": "Exportovat nastavení",
|
||||
|
||||
@@ -2187,12 +2187,15 @@
|
||||
"refresh_cache": {
|
||||
"label": "Refresh cached data",
|
||||
"description": "Reload contacts, calendars, and folders from the server. Keeps your accounts and sessions — fixes a stale or wrong view without signing out.",
|
||||
"button": "Refresh"
|
||||
"button": "Refresh",
|
||||
"confirm_title": "Opdater cachelagrede data?"
|
||||
},
|
||||
"reset_settings": {
|
||||
"label": "Nulstil indstillinger",
|
||||
"description": "Gendan alle indstillinger til standardværdier",
|
||||
"button": "Nulstil til standard"
|
||||
"button": "Nulstil til standard",
|
||||
"confirm_title": "Nulstil alle indstillinger?",
|
||||
"done": "Indstillinger nulstillet"
|
||||
},
|
||||
"export_settings": {
|
||||
"label": "Eksportér indstillinger",
|
||||
|
||||
@@ -2184,12 +2184,15 @@
|
||||
"refresh_cache": {
|
||||
"label": "Zwischengespeicherte Daten aktualisieren",
|
||||
"description": "Kontakte, Kalender und Ordner vom Server neu laden. Konten und Sitzungen bleiben erhalten; veraltete oder fehlerhafte Ansichten werden korrigiert, ohne dass Sie sich abmelden müssen.",
|
||||
"button": "Aktualisieren"
|
||||
"button": "Aktualisieren",
|
||||
"confirm_title": "Zwischengespeicherte Daten aktualisieren?"
|
||||
},
|
||||
"reset_settings": {
|
||||
"label": "Einstellungen zurücksetzen",
|
||||
"description": "Alle Einstellungen auf Standardwerte zurücksetzen",
|
||||
"button": "Auf Standard zurücksetzen"
|
||||
"button": "Auf Standard zurücksetzen",
|
||||
"confirm_title": "Alle Einstellungen zurücksetzen?",
|
||||
"done": "Einstellungen zurückgesetzt"
|
||||
},
|
||||
"export_settings": {
|
||||
"label": "Einstellungen exportieren",
|
||||
|
||||
@@ -1049,8 +1049,8 @@
|
||||
"title": "Settings",
|
||||
"back_to_mail": "Back to Mail",
|
||||
"save_success": "Settings saved successfully",
|
||||
"import_success": "Settings imported successfully",
|
||||
"import_error": "Failed to import settings",
|
||||
"import_success": "Settings imported",
|
||||
"import_error": "Couldn't import settings",
|
||||
"reset_confirm": "Are you sure you want to reset all settings to defaults?",
|
||||
"unsaved_changes": "You have unsaved changes",
|
||||
"discard_changes": "Discard unsaved changes?",
|
||||
@@ -2191,12 +2191,15 @@
|
||||
"refresh_cache": {
|
||||
"label": "Refresh cached data",
|
||||
"description": "Reload contacts, calendars, and folders from the server. Keeps your accounts and sessions — fixes a stale or wrong view without signing out.",
|
||||
"button": "Refresh"
|
||||
"button": "Refresh",
|
||||
"confirm_title": "Refresh cached data?"
|
||||
},
|
||||
"reset_settings": {
|
||||
"label": "Reset Settings",
|
||||
"description": "Restore all settings to default values",
|
||||
"button": "Reset to Defaults"
|
||||
"button": "Reset to Defaults",
|
||||
"confirm_title": "Reset all settings?",
|
||||
"done": "Settings reset"
|
||||
},
|
||||
"export_settings": {
|
||||
"label": "Export Settings",
|
||||
|
||||
@@ -2184,12 +2184,15 @@
|
||||
"refresh_cache": {
|
||||
"label": "Refresh cached data",
|
||||
"description": "Reload contacts, calendars, and folders from the server. Keeps your accounts and sessions — fixes a stale or wrong view without signing out.",
|
||||
"button": "Refresh"
|
||||
"button": "Refresh",
|
||||
"confirm_title": "¿Actualizar los datos en caché?"
|
||||
},
|
||||
"reset_settings": {
|
||||
"label": "Restablecer Configuración",
|
||||
"description": "Restaurar toda la configuración a los valores predeterminados",
|
||||
"button": "Restablecer a Predeterminados"
|
||||
"button": "Restablecer a Predeterminados",
|
||||
"confirm_title": "¿Restablecer todos los ajustes?",
|
||||
"done": "Ajustes restablecidos"
|
||||
},
|
||||
"export_settings": {
|
||||
"label": "Exportar Configuración",
|
||||
|
||||
@@ -2191,12 +2191,15 @@
|
||||
"refresh_cache": {
|
||||
"label": "Värskenda vahemällu salvestatud andmeid",
|
||||
"description": "Laadi kontaktid, kalendrid ja kaustad serverist uuesti. Kontod ja seansid jäävad alles — parandab aegunud või vale kuva ilma välja logimata.",
|
||||
"button": "Värskenda"
|
||||
"button": "Värskenda",
|
||||
"confirm_title": "Värskendada vahemälu andmed?"
|
||||
},
|
||||
"reset_settings": {
|
||||
"label": "Lähtesta seaded",
|
||||
"description": "Taasta kõik seaded vaikeväärtustele",
|
||||
"button": "Lähtesta vaikeväärtustele"
|
||||
"button": "Lähtesta vaikeväärtustele",
|
||||
"confirm_title": "Lähtestada kõik seaded?",
|
||||
"done": "Seaded lähtestatud"
|
||||
},
|
||||
"export_settings": {
|
||||
"label": "Ekspordi seaded",
|
||||
|
||||
@@ -2191,12 +2191,15 @@
|
||||
"refresh_cache": {
|
||||
"label": "Refresh cached data",
|
||||
"description": "Reload contacts, calendars, and folders from the server. Keeps your accounts and sessions — fixes a stale or wrong view without signing out.",
|
||||
"button": "Refresh"
|
||||
"button": "Refresh",
|
||||
"confirm_title": "دادههای ذخیرهشده موقت تازه شوند؟"
|
||||
},
|
||||
"reset_settings": {
|
||||
"label": "بازنشانی تنظیمات",
|
||||
"description": "بازگردانی همه تنظیمات به مقادیر پیشفرض",
|
||||
"button": "بازنشانی به پیشفرض"
|
||||
"button": "بازنشانی به پیشفرض",
|
||||
"confirm_title": "همه تنظیمات بازنشانی شوند؟",
|
||||
"done": "تنظیمات بازنشانی شد"
|
||||
},
|
||||
"export_settings": {
|
||||
"label": "خروجی تنظیمات",
|
||||
|
||||
@@ -2184,12 +2184,15 @@
|
||||
"refresh_cache": {
|
||||
"label": "Actualiser les données en cache",
|
||||
"description": "Actualiser les contacts, calendriers et dossiers depuis le serveur. Vos comptes et sessions sont conservés. Corrige un affichage obsolète ou incorrect sans vous déconnecter.",
|
||||
"button": "Actualiser"
|
||||
"button": "Actualiser",
|
||||
"confirm_title": "Actualiser les données en cache ?"
|
||||
},
|
||||
"reset_settings": {
|
||||
"label": "Réinitialiser les paramètres",
|
||||
"description": "Restaurer tous les paramètres par défaut",
|
||||
"button": "Réinitialiser"
|
||||
"button": "Réinitialiser",
|
||||
"confirm_title": "Réinitialiser tous les paramètres ?",
|
||||
"done": "Paramètres réinitialisés"
|
||||
},
|
||||
"export_settings": {
|
||||
"label": "Exporter les paramètres",
|
||||
|
||||
@@ -2146,12 +2146,15 @@
|
||||
"refresh_cache": {
|
||||
"label": "רענון נתונים שמורים",
|
||||
"description": "טעינה מחדש של אנשי קשר, לוחות שנה ותיקיות מהשרת. שומר על החשבונות וההתחברויות שלך — מתקן תצוגה מיושנת או שגויה ללא התנתקות.",
|
||||
"button": "רענון"
|
||||
"button": "רענון",
|
||||
"confirm_title": "לרענן את הנתונים השמורים במטמון?"
|
||||
},
|
||||
"reset_settings": {
|
||||
"label": "אפס את ההגדרות",
|
||||
"description": "שחזר את כל ההגדרות לערכי ברירת המחדל",
|
||||
"button": "אפס לברירות מחדל"
|
||||
"button": "אפס לברירות מחדל",
|
||||
"confirm_title": "לאפס את כל ההגדרות?",
|
||||
"done": "ההגדרות אופסו"
|
||||
},
|
||||
"export_settings": {
|
||||
"label": "ייצוא הגדרות",
|
||||
|
||||
@@ -2187,12 +2187,15 @@
|
||||
"refresh_cache": {
|
||||
"label": "Refresh cached data",
|
||||
"description": "Reload contacts, calendars, and folders from the server. Keeps your accounts and sessions — fixes a stale or wrong view without signing out.",
|
||||
"button": "Refresh"
|
||||
"button": "Refresh",
|
||||
"confirm_title": "Frissíti a gyorsítótárazott adatokat?"
|
||||
},
|
||||
"reset_settings": {
|
||||
"label": "Beállítások visszaállítása",
|
||||
"description": "Összes beállítás visszaállítása az alapértelmezett értékekre",
|
||||
"button": "Visszaállítás alapértelmezettre"
|
||||
"button": "Visszaállítás alapértelmezettre",
|
||||
"confirm_title": "Visszaállítja az összes beállítást?",
|
||||
"done": "Beállítások visszaállítva"
|
||||
},
|
||||
"export_settings": {
|
||||
"label": "Beállítások exportálása",
|
||||
|
||||
@@ -2184,12 +2184,15 @@
|
||||
"refresh_cache": {
|
||||
"label": "Refresh cached data",
|
||||
"description": "Reload contacts, calendars, and folders from the server. Keeps your accounts and sessions — fixes a stale or wrong view without signing out.",
|
||||
"button": "Refresh"
|
||||
"button": "Refresh",
|
||||
"confirm_title": "Aggiornare i dati nella cache?"
|
||||
},
|
||||
"reset_settings": {
|
||||
"label": "Ripristina impostazioni",
|
||||
"description": "Ripristina tutte le impostazioni ai valori predefiniti",
|
||||
"button": "Ripristina ai valori predefiniti"
|
||||
"button": "Ripristina ai valori predefiniti",
|
||||
"confirm_title": "Ripristinare tutte le impostazioni?",
|
||||
"done": "Impostazioni ripristinate"
|
||||
},
|
||||
"export_settings": {
|
||||
"label": "Esporta impostazioni",
|
||||
|
||||
@@ -2184,12 +2184,15 @@
|
||||
"refresh_cache": {
|
||||
"label": "Refresh cached data",
|
||||
"description": "Reload contacts, calendars, and folders from the server. Keeps your accounts and sessions — fixes a stale or wrong view without signing out.",
|
||||
"button": "Refresh"
|
||||
"button": "Refresh",
|
||||
"confirm_title": "キャッシュされたデータを更新しますか?"
|
||||
},
|
||||
"reset_settings": {
|
||||
"label": "設定をリセット",
|
||||
"description": "すべての設定をデフォルト値に戻す",
|
||||
"button": "デフォルトにリセット"
|
||||
"button": "デフォルトにリセット",
|
||||
"confirm_title": "すべての設定をリセットしますか?",
|
||||
"done": "設定をリセットしました"
|
||||
},
|
||||
"export_settings": {
|
||||
"label": "設定をエクスポート",
|
||||
|
||||
@@ -2184,12 +2184,15 @@
|
||||
"refresh_cache": {
|
||||
"label": "Refresh cached data",
|
||||
"description": "Reload contacts, calendars, and folders from the server. Keeps your accounts and sessions — fixes a stale or wrong view without signing out.",
|
||||
"button": "Refresh"
|
||||
"button": "Refresh",
|
||||
"confirm_title": "캐시된 데이터를 새로 고칠까요?"
|
||||
},
|
||||
"reset_settings": {
|
||||
"label": "설정 초기화",
|
||||
"description": "모든 설정을 기본값으로 되돌려요",
|
||||
"button": "기본값으로 초기화"
|
||||
"button": "기본값으로 초기화",
|
||||
"confirm_title": "모든 설정을 초기화할까요?",
|
||||
"done": "설정을 초기화했어요"
|
||||
},
|
||||
"export_settings": {
|
||||
"label": "설정 내보내기",
|
||||
|
||||
@@ -2165,12 +2165,15 @@
|
||||
"refresh_cache": {
|
||||
"label": "Refresh cached data",
|
||||
"description": "Reload contacts, calendars, and folders from the server. Keeps your accounts and sessions — fixes a stale or wrong view without signing out.",
|
||||
"button": "Refresh"
|
||||
"button": "Refresh",
|
||||
"confirm_title": "Atsvaidzināt kešatmiņas datus?"
|
||||
},
|
||||
"reset_settings": {
|
||||
"label": "Atiestatīt iestatījumus",
|
||||
"description": "Atjaunot visus iestatījumus uz noklusējuma vērtībām",
|
||||
"button": "Atiestatīt"
|
||||
"button": "Atiestatīt",
|
||||
"confirm_title": "Atiestatīt visus iestatījumus?",
|
||||
"done": "Iestatījumi atiestatīti"
|
||||
},
|
||||
"export_settings": {
|
||||
"label": "Eksportēt iestatījumus",
|
||||
|
||||
@@ -2191,12 +2191,15 @@
|
||||
"refresh_cache": {
|
||||
"label": "Кэш хийсэн өгөгдлийг сэргээх",
|
||||
"description": "Харилцагч, хуанли, фолдеруудыг серверээс дахин ачаална уу. Таны бүртгэл болон сешнүүдийг хадгална — гаралгүй хуучирсан эсвэл буруу харагдацыг засна.",
|
||||
"button": "Сэргээх"
|
||||
"button": "Сэргээх",
|
||||
"confirm_title": "Кэшлэгдсэн өгөгдлийг шинэчлэх үү?"
|
||||
},
|
||||
"reset_settings": {
|
||||
"label": "Тохиргоог дахин тохируулах",
|
||||
"description": "Бүх тохиргоог анхдагч утга руу нь сэргээнэ",
|
||||
"button": "Өгөгдмөл рүү дахин тохируулах"
|
||||
"button": "Өгөгдмөл рүү дахин тохируулах",
|
||||
"confirm_title": "Бүх тохиргоог анхны байдалд нь оруулах уу?",
|
||||
"done": "Тохиргоог анхны байдалд оруулсан"
|
||||
},
|
||||
"export_settings": {
|
||||
"label": "Экспортын тохиргоо",
|
||||
|
||||
@@ -2191,12 +2191,15 @@
|
||||
"refresh_cache": {
|
||||
"label": "Oppdater bufrede data",
|
||||
"description": "Last inn kontakter, kalendere og mapper på nytt fra serveren. Kontoene og øktene beholdes, slik at du kan rette en utdatert eller feil visning uten å logge av.",
|
||||
"button": "Oppdater"
|
||||
"button": "Oppdater",
|
||||
"confirm_title": "Oppdatere bufrede data?"
|
||||
},
|
||||
"reset_settings": {
|
||||
"label": "Tilbakestill innstillinger",
|
||||
"description": "Gjenopprett standardinnstillingene",
|
||||
"button": "Tilbakestill til standard"
|
||||
"button": "Tilbakestill til standard",
|
||||
"confirm_title": "Tilbakestille alle innstillinger?",
|
||||
"done": "Innstillinger tilbakestilt"
|
||||
},
|
||||
"export_settings": {
|
||||
"label": "Eksporter innstillinger",
|
||||
|
||||
@@ -2184,12 +2184,15 @@
|
||||
"refresh_cache": {
|
||||
"label": "Refresh cached data",
|
||||
"description": "Reload contacts, calendars, and folders from the server. Keeps your accounts and sessions — fixes a stale or wrong view without signing out.",
|
||||
"button": "Refresh"
|
||||
"button": "Refresh",
|
||||
"confirm_title": "Gegevens in de cache vernieuwen?"
|
||||
},
|
||||
"reset_settings": {
|
||||
"label": "Instellingen resetten",
|
||||
"description": "Herstel alle instellingen naar standaardwaarden",
|
||||
"button": "Resetten naar standaard"
|
||||
"button": "Resetten naar standaard",
|
||||
"confirm_title": "Alle instellingen herstellen?",
|
||||
"done": "Instellingen hersteld"
|
||||
},
|
||||
"export_settings": {
|
||||
"label": "Instellingen exporteren",
|
||||
|
||||
@@ -2184,12 +2184,15 @@
|
||||
"refresh_cache": {
|
||||
"label": "Refresh cached data",
|
||||
"description": "Reload contacts, calendars, and folders from the server. Keeps your accounts and sessions — fixes a stale or wrong view without signing out.",
|
||||
"button": "Refresh"
|
||||
"button": "Refresh",
|
||||
"confirm_title": "Odświeżyć dane w pamięci podręcznej?"
|
||||
},
|
||||
"reset_settings": {
|
||||
"label": "Resetuj ustawienia",
|
||||
"description": "Przywróć wszystkie ustawienia do wartości domyślnych",
|
||||
"button": "Przywróć domyślne"
|
||||
"button": "Przywróć domyślne",
|
||||
"confirm_title": "Zresetować wszystkie ustawienia?",
|
||||
"done": "Ustawienia zresetowane"
|
||||
},
|
||||
"export_settings": {
|
||||
"label": "Eksportuj ustawienia",
|
||||
|
||||
@@ -2184,12 +2184,15 @@
|
||||
"refresh_cache": {
|
||||
"label": "Atualizar dados armazenados em cache",
|
||||
"description": "Atualize os contatos, calendários e pastas do servidor. Mantém suas contas e sessões — corrige uma visualização desatualizada ou incorreta sem precisar sair da conta.",
|
||||
"button": "Recarregar"
|
||||
"button": "Recarregar",
|
||||
"confirm_title": "Atualizar os dados em cache?"
|
||||
},
|
||||
"reset_settings": {
|
||||
"label": "Redefinir Configurações",
|
||||
"description": "Restaurar todas as configurações para valores padrão",
|
||||
"button": "Redefinir para Padrões"
|
||||
"button": "Redefinir para Padrões",
|
||||
"confirm_title": "Repor todas as definições?",
|
||||
"done": "Definições repostas"
|
||||
},
|
||||
"export_settings": {
|
||||
"label": "Exportar Configurações",
|
||||
|
||||
@@ -2191,12 +2191,15 @@
|
||||
"refresh_cache": {
|
||||
"label": "Refresh cached data",
|
||||
"description": "Reload contacts, calendars, and folders from the server. Keeps your accounts and sessions — fixes a stale or wrong view without signing out.",
|
||||
"button": "Refresh"
|
||||
"button": "Refresh",
|
||||
"confirm_title": "Reîmprospătați datele din cache?"
|
||||
},
|
||||
"reset_settings": {
|
||||
"label": "Resetare setări",
|
||||
"description": "Restabiliți toate setările la valorile implicite",
|
||||
"button": "Resezare la setările implicite"
|
||||
"button": "Resezare la setările implicite",
|
||||
"confirm_title": "Resetați toate setările?",
|
||||
"done": "Setări resetate"
|
||||
},
|
||||
"export_settings": {
|
||||
"label": "Setări de export",
|
||||
|
||||
@@ -2184,12 +2184,15 @@
|
||||
"refresh_cache": {
|
||||
"label": "Refresh cached data",
|
||||
"description": "Reload contacts, calendars, and folders from the server. Keeps your accounts and sessions — fixes a stale or wrong view without signing out.",
|
||||
"button": "Refresh"
|
||||
"button": "Refresh",
|
||||
"confirm_title": "Обновить кэшированные данные?"
|
||||
},
|
||||
"reset_settings": {
|
||||
"label": "Сбросить настройки",
|
||||
"description": "Восстановить все настройки до значений по умолчанию",
|
||||
"button": "Сбросить"
|
||||
"button": "Сбросить",
|
||||
"confirm_title": "Сбросить все настройки?",
|
||||
"done": "Настройки сброшены"
|
||||
},
|
||||
"export_settings": {
|
||||
"label": "Экспортировать настройки",
|
||||
|
||||
@@ -2191,12 +2191,15 @@
|
||||
"refresh_cache": {
|
||||
"label": "Obnoviť uložené údaje",
|
||||
"description": "Znova načíta kontakty, kalendáre a priečinky zo servera. Zachová vaše účty a prihlásenia — opraví zastarané alebo nesprávne zobrazenie bez odhlásenia.",
|
||||
"button": "Obnoviť"
|
||||
"button": "Obnoviť",
|
||||
"confirm_title": "Obnoviť údaje vo vyrovnávacej pamäti?"
|
||||
},
|
||||
"reset_settings": {
|
||||
"label": "Resetovať nastavenia",
|
||||
"description": "Obnoviť všetky nastavenia na predvolené hodnoty",
|
||||
"button": "Obnoviť predvolené"
|
||||
"button": "Obnoviť predvolené",
|
||||
"confirm_title": "Obnoviť všetky nastavenia?",
|
||||
"done": "Nastavenia boli obnovené"
|
||||
},
|
||||
"export_settings": {
|
||||
"label": "Exportovať nastavenia",
|
||||
|
||||
@@ -4201,12 +4201,15 @@
|
||||
"refresh_cache": {
|
||||
"label": "รีเฟรชข้อมูลในแคช",
|
||||
"description": "โหลดผู้ติดต่อ ปฏิทิน และโฟลเดอร์จากเซิร์ฟเวอร์ใหม่ โดยยังคงรักษาบัญชีและเซสชันของคุณไว้ — แก้ไขมุมมองที่ไม่อัปเดตหรือไม่ถูกต้องโดยไม่ต้องลงชื่อออก",
|
||||
"button": "รีเฟรช"
|
||||
"button": "รีเฟรช",
|
||||
"confirm_title": "รีเฟรชข้อมูลที่แคชไว้ไหม"
|
||||
},
|
||||
"reset_settings": {
|
||||
"label": "รีเซ็ตการตั้งค่า",
|
||||
"description": "คืนค่าการตั้งค่าทั้งหมดกลับเป็นค่าเริ่มต้น",
|
||||
"button": "รีเซ็ตเป็นค่าเริ่มต้น"
|
||||
"button": "รีเซ็ตเป็นค่าเริ่มต้น",
|
||||
"confirm_title": "รีเซ็ตการตั้งค่าทั้งหมดไหม",
|
||||
"done": "รีเซ็ตการตั้งค่าแล้ว"
|
||||
},
|
||||
"export_settings": {
|
||||
"label": "ส่งออกการตั้งค่า",
|
||||
|
||||
@@ -2184,12 +2184,15 @@
|
||||
"refresh_cache": {
|
||||
"label": "Refresh cached data",
|
||||
"description": "Reload contacts, calendars, and folders from the server. Keeps your accounts and sessions — fixes a stale or wrong view without signing out.",
|
||||
"button": "Refresh"
|
||||
"button": "Refresh",
|
||||
"confirm_title": "Önbellekteki veriler yenilensin mi?"
|
||||
},
|
||||
"reset_settings": {
|
||||
"label": "Ayarları Sıfırla",
|
||||
"description": "Tüm ayarları varsayılan değerlerine geri yükle",
|
||||
"button": "Varsayılanlara Sıfırla"
|
||||
"button": "Varsayılanlara Sıfırla",
|
||||
"confirm_title": "Tüm ayarlar sıfırlansın mı?",
|
||||
"done": "Ayarlar sıfırlandı"
|
||||
},
|
||||
"export_settings": {
|
||||
"label": "Ayarları Dışa Aktar",
|
||||
|
||||
@@ -2184,12 +2184,15 @@
|
||||
"refresh_cache": {
|
||||
"label": "Refresh cached data",
|
||||
"description": "Reload contacts, calendars, and folders from the server. Keeps your accounts and sessions — fixes a stale or wrong view without signing out.",
|
||||
"button": "Refresh"
|
||||
"button": "Refresh",
|
||||
"confirm_title": "Оновити кешовані дані?"
|
||||
},
|
||||
"reset_settings": {
|
||||
"label": "Скинути налаштування",
|
||||
"description": "Відновити всі налаштування до значень за замовчуванням",
|
||||
"button": "Скинути до значень за замовчуванням"
|
||||
"button": "Скинути до значень за замовчуванням",
|
||||
"confirm_title": "Скинути всі налаштування?",
|
||||
"done": "Налаштування скинуто"
|
||||
},
|
||||
"export_settings": {
|
||||
"label": "Налаштування експорту",
|
||||
|
||||
@@ -2191,12 +2191,15 @@
|
||||
"refresh_cache": {
|
||||
"label": "重新整理快取資料",
|
||||
"description": "從伺服器重新載入聯絡人、行事曆與信件匣。保留帳號與工作階段,不需登出即可修正過時或錯誤的畫面。",
|
||||
"button": "重新整理"
|
||||
"button": "重新整理",
|
||||
"confirm_title": "重新整理快取資料?"
|
||||
},
|
||||
"reset_settings": {
|
||||
"label": "重設設定",
|
||||
"description": "將所有設定還原為預設值",
|
||||
"button": "重設為預設值"
|
||||
"button": "重設為預設值",
|
||||
"confirm_title": "重設所有設定?",
|
||||
"done": "設定已重設"
|
||||
},
|
||||
"export_settings": {
|
||||
"label": "匯出設定",
|
||||
|
||||
@@ -2184,12 +2184,15 @@
|
||||
"refresh_cache": {
|
||||
"label": "Refresh cached data",
|
||||
"description": "Reload contacts, calendars, and folders from the server. Keeps your accounts and sessions — fixes a stale or wrong view without signing out.",
|
||||
"button": "Refresh"
|
||||
"button": "Refresh",
|
||||
"confirm_title": "刷新缓存数据?"
|
||||
},
|
||||
"reset_settings": {
|
||||
"label": "重置设置",
|
||||
"description": "将所有设置恢复为默认值",
|
||||
"button": "重置为默认值"
|
||||
"button": "重置为默认值",
|
||||
"confirm_title": "重置所有设置?",
|
||||
"done": "设置已重置"
|
||||
},
|
||||
"export_settings": {
|
||||
"label": "导出设置",
|
||||
|
||||
Reference in New Issue
Block a user