feat: open text size, contrast and motion from anywhere with Alt+Shift+A

This commit is contained in:
Linus Rath
2026-10-29 17:53:33 +01:00
parent 8008393e59
commit 4586c69e72
35 changed files with 698 additions and 59 deletions
+2
View File
@@ -13,6 +13,7 @@ import { PluginDialogHost } from "@/components/plugins/plugin-dialog-host";
import { ExternalRecipientConfirmHost } from "@/components/email/external-recipient-confirm";
import { PluginPageNavigator } from "@/components/plugins/plugin-page-navigator";
import { CommandPaletteHost } from "@/components/command-palette/command-palette";
import { AccessibilityQuickPanelHost } from "@/components/accessibility/accessibility-quick-panel";
import { TotpReauthDialog } from "@/components/totp-reauth-dialog";
import { PluginConnectDialog } from "@/components/plugins/plugin-connect-dialog";
import { QuickRuleHost } from "@/components/filters/quick-rule-host";
@@ -77,6 +78,7 @@ export default async function LocaleLayout({
<PluginDialogHost />
<ExternalRecipientConfirmHost />
<CommandPaletteHost />
<AccessibilityQuickPanelHost />
<TotpReauthDialog />
<PluginConnectDialog />
<QuickRuleHost />
@@ -0,0 +1,74 @@
import { act, fireEvent, render, screen } from '@testing-library/react';
import { beforeEach, describe, expect, it, vi } from 'vitest';
const pathname = vi.hoisted(() => ({ value: '/mail' }));
const push = vi.hoisted(() => vi.fn());
vi.mock('next-intl', () => ({
useTranslations: (ns?: string) => (key: string) => `${ns}.${key}`,
}));
vi.mock('@/i18n/navigation', () => ({
usePathname: () => pathname.value,
useRouter: () => ({ push }),
}));
import { AccessibilityQuickPanelHost, isAccessibilityPanelShortcut, openAccessibilityPanel } from '../accessibility-quick-panel';
import { useAuthStore } from '@/stores/auth-store';
import { useSettingsStore } from '@/stores/settings-store';
const pressAltShiftA = () =>
fireEvent.keyDown(window, { key: 'A', code: 'KeyA', altKey: true, shiftKey: true });
beforeEach(() => {
pathname.value = '/mail';
push.mockReset();
useSettingsStore.getState().resetToDefaults();
useAuthStore.setState({ isAuthenticated: true } as never);
});
describe('accessibility quick panel', () => {
it('opens with Alt+Shift+A, also with single-key shortcuts off', () => {
useSettingsStore.getState().updateSetting('singleKeyShortcuts', false);
render(<AccessibilityQuickPanelHost />);
expect(screen.queryByTestId('accessibility-panel')).toBeNull();
pressAltShiftA();
expect(screen.getByTestId('accessibility-panel')).toBeTruthy();
});
it('matches the physical key, not the character a layout produces', () => {
expect(isAccessibilityPanelShortcut(new KeyboardEvent('keydown', { key: 'Å', code: 'KeyA', altKey: true, shiftKey: true }))).toBe(true);
expect(isAccessibilityPanelShortcut(new KeyboardEvent('keydown', { key: 'a', code: 'KeyA', altKey: true }))).toBe(false);
expect(isAccessibilityPanelShortcut(new KeyboardEvent('keydown', { key: 'A', code: 'KeyA', altKey: true, shiftKey: true, ctrlKey: true }))).toBe(false);
});
it('changes text size from the panel', () => {
render(<AccessibilityQuickPanelHost />);
act(() => openAccessibilityPanel());
const select = screen.getByTestId('accessibility-panel').querySelector('select') as HTMLSelectElement;
fireEvent.change(select, { target: { value: 'x-large' } });
expect(useSettingsStore.getState().fontSize).toBe('x-large');
});
it('shows a button on the sign-in page with text size, contrast and motion only', () => {
useAuthStore.setState({ isAuthenticated: false } as never);
pathname.value = '/login';
render(<AccessibilityQuickPanelHost />);
fireEvent.click(screen.getByTestId('login-accessibility-button'));
const panel = screen.getByTestId('accessibility-panel');
expect(panel.textContent).toContain('settings.accessibility.text_size.label');
expect(panel.textContent).toContain('settings.accessibility.contrast.label');
expect(panel.textContent).not.toContain('settings.accessibility.presets.title');
expect(panel.textContent).not.toContain('accessibility_panel.all_settings');
});
it('has no sign-in button inside the app', () => {
render(<AccessibilityQuickPanelHost />);
expect(screen.queryByTestId('login-accessibility-button')).toBeNull();
});
it('goes to the settings page through the app router', () => {
render(<AccessibilityQuickPanelHost />);
act(() => openAccessibilityPanel());
fireEvent.click(screen.getByRole('button', { name: 'accessibility_panel.all_settings' }));
expect(push).toHaveBeenCalledWith('/settings/accessibility');
});
});
@@ -0,0 +1,183 @@
"use client";
import { useEffect, useState } from 'react';
import { useTranslations } from 'next-intl';
import { usePathname, useRouter } from '@/i18n/navigation';
import { Dialog } from '@/components/ui/dialog';
import { Button } from '@/components/ui/button';
import { Accessibility } from '@/components/icons';
import { RadioGroup, Select, SettingItem, ToggleSwitch } from '@/components/settings/settings-section';
import { useSettingsStore } from '@/stores/settings-store';
import { useAuthStore } from '@/stores/auth-store';
import { usePolicyStore } from '@/stores/policy-store';
import { FONT_SIZES, type FontSize } from '@/lib/accessibility-settings';
import { useRegisterCommands } from '@/lib/command-registry';
import { ACCESSIBILITY_PRESET_IDS, presetChanges, type AccessibilityPresetId, type PresetChange } from '@/lib/accessibility-presets';
export const ACCESSIBILITY_PANEL_EVENT = 'bulwark:accessibility-panel';
/** Opens the quick accessibility panel from anywhere (rail button, palette). */
export function openAccessibilityPanel(): void {
if (typeof window !== 'undefined') window.dispatchEvent(new Event(ACCESSIBILITY_PANEL_EVENT));
}
/**
* Alt+Shift+A, by physical key so it works on every keyboard layout. A
* modifier shortcut, so it stays on when single-key shortcuts are off.
*/
export function isAccessibilityPanelShortcut(event: KeyboardEvent): boolean {
return event.altKey && event.shiftKey && !event.ctrlKey && !event.metaKey && event.code === 'KeyA';
}
type SettingKey = Parameters<ReturnType<typeof useSettingsStore.getState>['updateSetting']>[0];
function QuickPanel({ isOpen, onClose, signedIn }: { isOpen: boolean; onClose: () => void; signedIn: boolean }) {
const t = useTranslations('accessibility_panel');
const tA = useTranslations('settings.accessibility');
const settings = useSettingsStore();
const { isSettingLocked } = usePolicyStore();
const [applied, setApplied] = useState<{ id: AccessibilityPresetId; changes: PresetChange[] } | null>(null);
const set = (key: string, value: unknown) => settings.updateSetting(key as SettingKey, value as never);
const applyPreset = (id: AccessibilityPresetId) => {
const changes = presetChanges(id, useSettingsStore.getState() as unknown as Record<string, unknown>, isSettingLocked);
for (const change of changes) set(change.key, change.to);
setApplied({ id, changes });
};
const router = useRouter();
const openSettings = () => {
onClose();
router.push('/settings/accessibility');
};
return (
<Dialog isOpen={isOpen} onClose={onClose} title={t('title')} description={t('description')} size="md" testId="accessibility-panel">
<div className="space-y-1">
<SettingItem label={tA('text_size.label')}>
<Select
value={settings.fontSize}
onChange={(value) => set('fontSize', value as FontSize)}
options={FONT_SIZES.map((size) => ({ value: size, label: tA(`text_size.${size}`) }))}
/>
</SettingItem>
<SettingItem label={tA('contrast.label')}>
<RadioGroup
value={settings.contrast}
onChange={(value) => set('contrast', value)}
options={[
{ value: 'system', label: tA('system') },
{ value: 'more', label: tA('contrast.more') },
{ value: 'normal', label: tA('contrast.normal') },
]}
/>
</SettingItem>
<SettingItem label={tA('reduce_motion.label')}>
<RadioGroup
value={settings.reduceMotion}
onChange={(value) => set('reduceMotion', value)}
options={[
{ value: 'system', label: tA('system') },
{ value: 'on', label: tA('on') },
{ value: 'off', label: tA('off') },
]}
/>
</SettingItem>
{signedIn && (
<SettingItem label={tA('single_key_shortcuts.label')} locked={isSettingLocked('singleKeyShortcuts')}>
<ToggleSwitch checked={settings.singleKeyShortcuts} onChange={(checked) => set('singleKeyShortcuts', checked)} />
</SettingItem>
)}
</div>
{signedIn && (
<div className="mt-4 space-y-2">
<h3 className="text-sm font-medium text-foreground">{tA('presets.title')}</h3>
<div className="flex flex-wrap gap-1.5" role="group" aria-label={tA('presets.title')}>
{ACCESSIBILITY_PRESET_IDS.map((id) => (
<Button key={id} variant="outline" size="sm" onClick={() => applyPreset(id)}>
{tA(`presets.${id}.label`)}
</Button>
))}
</div>
<div role="status" aria-live="polite" className="text-xs text-muted-foreground">
{applied && (
<span className="inline-flex items-center gap-2">
{applied.changes.length === 0
? tA('presets.nothing_changed', { name: tA(`presets.${applied.id}.label`) })
: t('preset_applied', { name: tA(`presets.${applied.id}.label`), count: applied.changes.length })}
{applied.changes.length > 0 && (
<button
type="button"
className="underline text-foreground"
onClick={() => {
for (const change of applied.changes) set(change.key, change.from);
setApplied(null);
}}
>
{tA('presets.undo')}
</button>
)}
</span>
)}
</div>
</div>
)}
{signedIn && (
<div className="mt-4 flex justify-end">
<Button variant="outline" size="sm" onClick={openSettings}>{t('all_settings')}</Button>
</div>
)}
</Dialog>
);
}
/**
* The quick accessibility panel: Alt+Shift+A anywhere, the optional rail
* button, and a small button on the sign-in page, where text size, contrast
* and motion are needed before anything else.
*/
export function AccessibilityQuickPanelHost() {
const t = useTranslations('accessibility_panel');
const [open, setOpen] = useState(false);
const isAuthenticated = useAuthStore((s) => s.isAuthenticated);
const pathname = usePathname();
const onLoginPage = !isAuthenticated && /(^|\/)login(\/|$)/.test(pathname ?? '');
useRegisterCommands(t('title'), [
{ id: 'accessibility-panel', label: t('command'), icon: Accessibility, shortcut: 'Alt + Shift + A', keywords: [t('command_keywords')], run: () => setOpen(true) },
], isAuthenticated);
useEffect(() => {
const onKeyDown = (event: KeyboardEvent) => {
if (!isAccessibilityPanelShortcut(event)) return;
event.preventDefault();
event.stopImmediatePropagation();
setOpen(true);
};
const onOpen = () => setOpen(true);
window.addEventListener('keydown', onKeyDown, true);
window.addEventListener(ACCESSIBILITY_PANEL_EVENT, onOpen);
return () => {
window.removeEventListener('keydown', onKeyDown, true);
window.removeEventListener(ACCESSIBILITY_PANEL_EVENT, onOpen);
};
}, []);
return (
<>
{onLoginPage && (
<button
type="button"
onClick={() => setOpen(true)}
className="fixed bottom-4 end-4 z-40 inline-flex items-center gap-2 rounded-md border border-border bg-background px-3 py-2 text-sm text-foreground shadow-sm hover:bg-muted"
style={{ marginBottom: 'env(safe-area-inset-bottom, 0px)' }}
data-testid="login-accessibility-button"
>
<Accessibility className="w-4 h-4" aria-hidden="true" />
{t('button')}
</button>
)}
{open && <QuickPanel isOpen={open} onClose={() => setOpen(false)} signedIn={isAuthenticated} />}
</>
);
}
@@ -0,0 +1,44 @@
import React from 'react';
import { fireEvent, render, screen } from '@testing-library/react';
import { beforeEach, describe, expect, it, vi } from 'vitest';
vi.mock('../account-switcher', () => ({ AccountSwitcher: () => null }));
vi.mock('@/components/plugins/plugin-slot', () => ({ PluginSlot: () => null }));
vi.mock('@/components/keyboard-shortcuts-modal', () => ({ KeyboardShortcutsModal: () => null }));
vi.mock('@/components/search/search-box', () => ({ SearchBox: () => null }));
vi.mock('@/hooks/use-config', () => ({ useConfig: () => ({ appName: 'Mail' }) }));
vi.mock('@/hooks/use-stalwart-admin', () => ({ useStalwartAdmin: () => false }));
vi.mock('@/i18n/navigation', () => ({
useRouter: () => ({ push: vi.fn(), back: vi.fn(), replace: vi.fn() }),
usePathname: () => '/mail',
Link: ({ children, href, ...rest }: { children: React.ReactNode; href: string }) => <a href={href} {...rest}>{children}</a>,
}));
const { NavigationRail } = await import('../navigation-rail');
const { useUpdateStore } = await import('@/stores/update-store');
const { useSettingsStore } = await import('@/stores/settings-store');
const { ACCESSIBILITY_PANEL_EVENT } = await import('@/components/accessibility/accessibility-quick-panel');
beforeEach(() => {
useUpdateStore.setState({ startPolling: vi.fn() } as never);
useSettingsStore.getState().resetToDefaults();
});
describe('accessibility button in the rail', () => {
it('is hidden until the user switches it on', () => {
render(<NavigationRail orientation="vertical" collapsed />);
expect(screen.queryByTestId('rail-accessibility')).toBeNull();
});
it('opens the quick panel when switched on', () => {
useSettingsStore.getState().updateSetting('showAccessibilityButton', true);
const opened = vi.fn();
window.addEventListener(ACCESSIBILITY_PANEL_EVENT, opened);
render(<NavigationRail orientation="vertical" collapsed />);
const button = screen.getByRole('button', { name: 'accessibility' });
expect(button.getAttribute('aria-keyshortcuts')).toBe('Alt+Shift+A');
fireEvent.click(button);
expect(opened).toHaveBeenCalledTimes(1);
window.removeEventListener(ACCESSIBILITY_PANEL_EVENT, opened);
});
});
+17 -1
View File
@@ -2,7 +2,8 @@
import { useState, useRef, useEffect, useLayoutEffect, useCallback } from "react";
import { createPortal } from "react-dom";
import { Mail, CalendarEvent, Users, Folder, Settings, Keyboard, Plus, Shield, LogOut, Check, Search, Puzzle } from "@/components/icons";
import { Mail, CalendarEvent, Users, Folder, Settings, Keyboard, Plus, Shield, LogOut, Check, Search, Puzzle, Accessibility } from "@/components/icons";
import { openAccessibilityPanel } from "@/components/accessibility/accessibility-quick-panel";
import { AccountSwitcher } from "./account-switcher";
import { iconForName } from "@/components/icons";
import { useConfig } from "@/hooks/use-config";
@@ -237,6 +238,7 @@ export function NavigationRail({
const supportsFiles = client?.supportsFiles() ?? false;
const supportsContacts = client?.supportsContacts() ?? false;
const showRailAccountList = useSettingsStore((s) => s.showRailAccountList);
const showAccessibilityButton = useSettingsStore((s) => s.showAccessibilityButton);
const mountainView = useSettingsStore((s) => s.interfaceLayout === 'mountain-view');
const sidebarAppsEnabled = usePolicyStore((s) => s.isFeatureEnabled('sidebarAppsEnabled'));
const filesEnabled = usePolicyStore((s) => s.isFeatureEnabled('filesEnabled'));
@@ -754,6 +756,20 @@ export function NavigationRail({
<NotificationBell placement="side" className="w-10 h-10 rounded-md" />
{showAccessibilityButton && (
<button
type="button"
onClick={openAccessibilityPanel}
data-testid="rail-accessibility"
className="flex items-center justify-center w-10 h-10 rounded-md text-muted-foreground hover:text-foreground hover:bg-muted transition-colors"
title={t("accessibility")}
aria-label={t("accessibility")}
aria-keyshortcuts="Alt+Shift+A"
>
<Accessibility className="w-[18px] h-[18px]" />
</button>
)}
<Link
href="/settings"
onClick={handleNavClick('settings')}
+1
View File
@@ -33,6 +33,7 @@ export const GENERAL_SHORTCUTS: readonly ShortcutEntry[] = [
{ key: "Mod + K", description: "shortcuts.global.global_search", shell: "pro" },
{ key: "Mod + K", description: "command_palette.open", shell: "standard" },
{ key: "?", description: "shortcuts.global.help" },
{ key: "Alt + Shift + A", description: "shortcuts.global.accessibility_panel" },
];
/** An app's sections with the general keys added (see GENERAL_SHORTCUTS). */
+13 -2
View File
@@ -209,7 +209,8 @@
"mv_next_day": "اليوم التالي",
"mv_add_another_account": "إضافة حساب آخر",
"mv_manage_account": "إدارة حسابك",
"mv_storage_used": "تم استخدام {percent}% من {total}"
"mv_storage_used": "تم استخدام {percent}% من {total}",
"accessibility": "إمكانية الوصول"
},
"protocol_handlers": {
"title": "التطبيقات الافتراضية",
@@ -3447,7 +3448,8 @@
"refresh": "تحديث الرسائل",
"select_all": "تحديد الكل",
"global_search": "البحث في كل شيء",
"extend_selection": "توسيع التحديد لأسفل / لأعلى"
"extend_selection": "توسيع التحديد لأسفل / لأعلى",
"accessibility_panel": "فتح خيارات إمكانية الوصول"
},
"threads": {
"expand_collapse": "توسيع/طي المحادثة",
@@ -5662,5 +5664,14 @@
"unread_count": "غير المقروءة: {count}",
"level_error": "خطأ",
"level_warning": "تحذير"
},
"accessibility_panel": {
"title": "إمكانية الوصول",
"description": "حجم النص والتباين والحركة. يفتح Alt+Shift+A هذه اللوحة من أي مكان.",
"button": "إمكانية الوصول",
"all_settings": "كل إعدادات إمكانية الوصول",
"preset_applied": "غيّر {name} {count, plural, zero {# إعدادات} one {إعدادًا واحدًا} two {إعدادين} few {# إعدادات} many {# إعدادًا} other {# إعداد}}.",
"command": "خيارات إمكانية الوصول",
"command_keywords": "a11y إمكانية الوصول نص حجم تباين حركة تكبير"
}
}
+13 -2
View File
@@ -209,7 +209,8 @@
"mv_next_day": "Dia següent",
"mv_add_another_account": "Afegeix un altre compte",
"mv_manage_account": "Gestiona el teu compte",
"mv_storage_used": "{percent}% de {total} utilitzat"
"mv_storage_used": "{percent}% de {total} utilitzat",
"accessibility": "Accessibilitat"
},
"protocol_handlers": {
"title": "Aplicacions predeterminades",
@@ -3447,7 +3448,8 @@
"refresh": "Actualitza els correus",
"select_all": "Selecciona-ho tot",
"global_search": "Cerca-ho tot",
"extend_selection": "Amplia la selecció cap avall / amunt"
"extend_selection": "Amplia la selecció cap avall / amunt",
"accessibility_panel": "Obre les opcions d'accessibilitat"
},
"threads": {
"expand_collapse": "Desplega/replega el fil",
@@ -5662,5 +5664,14 @@
"unread_count": "{count} sense llegir",
"level_error": "Error",
"level_warning": "Avís"
},
"accessibility_panel": {
"title": "Accessibilitat",
"description": "Mida del text, contrast i moviment. Alt+Maj+A l'obre des de qualsevol lloc.",
"button": "Accessibilitat",
"all_settings": "Tots els ajustos d'accessibilitat",
"preset_applied": "{name} ha canviat {count, plural, one {# opció} other {# opcions}}.",
"command": "Opcions d'accessibilitat",
"command_keywords": "a11y accessibilitat mida text contrast moviment zoom"
}
}
+13 -2
View File
@@ -209,7 +209,8 @@
"mv_next_day": "Následující den",
"mv_add_another_account": "Přidat další účet",
"mv_manage_account": "Spravovat účet",
"mv_storage_used": "Využito {percent} % z {total}"
"mv_storage_used": "Využito {percent} % z {total}",
"accessibility": "Přístupnost"
},
"protocol_handlers": {
"title": "Výchozí aplikace",
@@ -3447,7 +3448,8 @@
"refresh": "Obnovit zprávy",
"select_all": "Vybrat vše",
"global_search": "Hledat ve všem",
"extend_selection": "Rozšířit výběr dolů / nahoru"
"extend_selection": "Rozšířit výběr dolů / nahoru",
"accessibility_panel": "Otevřít možnosti přístupnosti"
},
"threads": {
"expand_collapse": "Rozbalit/sbalit vlákno",
@@ -5662,5 +5664,14 @@
"unread_count": "Nepřečtené: {count}",
"level_error": "Chyba",
"level_warning": "Upozornění"
},
"accessibility_panel": {
"title": "Přístupnost",
"description": "Velikost textu, kontrast a pohyb. Alt+Shift+A to otevře odkudkoli.",
"button": "Přístupnost",
"all_settings": "Všechna nastavení přístupnosti",
"preset_applied": "Předvolba {name} změnila {count, plural, one {# nastavení} few {# nastavení} many {# nastavení} other {# nastavení}}.",
"command": "Možnosti přístupnosti",
"command_keywords": "a11y přístupnost velikost textu kontrast pohyb zoom"
}
}
+13 -2
View File
@@ -209,7 +209,8 @@
"mv_next_day": "Næste dag",
"mv_add_another_account": "Tilføj en anden konto",
"mv_manage_account": "Administrer din konto",
"mv_storage_used": "{percent}% af {total} brugt"
"mv_storage_used": "{percent}% af {total} brugt",
"accessibility": "Tilgængelighed"
},
"protocol_handlers": {
"title": "Standardapps",
@@ -3447,7 +3448,8 @@
"refresh": "Opdatér e-mails",
"select_all": "Vælg alle",
"global_search": "Søg i alt",
"extend_selection": "Udvid markering ned / op"
"extend_selection": "Udvid markering ned / op",
"accessibility_panel": "Åbn indstillinger for tilgængelighed"
},
"threads": {
"expand_collapse": "Udvid/skjul tråd",
@@ -5662,5 +5664,14 @@
"unread_count": "{count} ulæste",
"level_error": "Fejl",
"level_warning": "Advarsel"
},
"accessibility_panel": {
"title": "Tilgængelighed",
"description": "Tekststørrelse, kontrast og bevægelse. Alt+Skift+A åbner det fra alle steder.",
"button": "Tilgængelighed",
"all_settings": "Alle indstillinger for tilgængelighed",
"preset_applied": "{name} har ændret {count, plural, one {# indstilling} other {# indstillinger}}.",
"command": "Indstillinger for tilgængelighed",
"command_keywords": "a11y tilgængelighed tekststørrelse kontrast bevægelse zoom"
}
}
+13 -2
View File
@@ -209,7 +209,8 @@
"mv_next_day": "Nächster Tag",
"mv_add_another_account": "Weiteres Konto hinzufügen",
"mv_manage_account": "Konto verwalten",
"mv_storage_used": "{percent} % von {total} belegt"
"mv_storage_used": "{percent} % von {total} belegt",
"accessibility": "Barrierefreiheit"
},
"protocol_handlers": {
"title": "Standard-Apps",
@@ -3447,7 +3448,8 @@
"refresh": "E-Mails aktualisieren",
"select_all": "Alle auswählen",
"global_search": "Alles durchsuchen",
"extend_selection": "Auswahl nach unten / oben erweitern"
"extend_selection": "Auswahl nach unten / oben erweitern",
"accessibility_panel": "Optionen zur Barrierefreiheit öffnen"
},
"threads": {
"expand_collapse": "Unterhaltung erweitern/einklappen",
@@ -5662,5 +5664,14 @@
"unread_count": "{count} ungelesen",
"level_error": "Fehler",
"level_warning": "Warnung"
},
"accessibility_panel": {
"title": "Barrierefreiheit",
"description": "Schriftgröße, Kontrast und Bewegung. Alt+Umschalt+A öffnet dies von überall.",
"button": "Barrierefreiheit",
"all_settings": "Alle Einstellungen zur Barrierefreiheit",
"preset_applied": "{name} hat {count, plural, one {# Einstellung} other {# Einstellungen}} geändert.",
"command": "Optionen zur Barrierefreiheit",
"command_keywords": "a11y Schriftgröße Kontrast Bewegung Zoom Barrierefreiheit"
}
}
+13 -2
View File
@@ -209,7 +209,8 @@
"mv_next_day": "Next day",
"mv_add_another_account": "Add another account",
"mv_manage_account": "Manage your account",
"mv_storage_used": "{percent}% of {total} used"
"mv_storage_used": "{percent}% of {total} used",
"accessibility": "Accessibility"
},
"protocol_handlers": {
"title": "Default apps",
@@ -3447,7 +3448,8 @@
"refresh": "Refresh emails",
"select_all": "Select all",
"global_search": "Search everything",
"extend_selection": "Extend selection down / up"
"extend_selection": "Extend selection down / up",
"accessibility_panel": "Open the accessibility options"
},
"threads": {
"expand_collapse": "Expand/collapse thread",
@@ -5662,5 +5664,14 @@
"unread_count": "{count} unread",
"level_error": "Error",
"level_warning": "Warning"
},
"accessibility_panel": {
"title": "Accessibility",
"description": "Text size, contrast and motion. Alt+Shift+A opens this from anywhere.",
"button": "Accessibility",
"all_settings": "All accessibility settings",
"preset_applied": "{name} changed {count, plural, one {# setting} other {# settings}}.",
"command": "Accessibility options",
"command_keywords": "a11y text size contrast motion zoom"
}
}
+13 -2
View File
@@ -209,7 +209,8 @@
"mv_next_day": "Día siguiente",
"mv_add_another_account": "Añadir otra cuenta",
"mv_manage_account": "Gestionar tu cuenta",
"mv_storage_used": "{percent}% de {total} usado"
"mv_storage_used": "{percent}% de {total} usado",
"accessibility": "Accesibilidad"
},
"protocol_handlers": {
"title": "Aplicaciones predeterminadas",
@@ -3447,7 +3448,8 @@
"refresh": "Actualizar correos",
"select_all": "Seleccionar todo",
"global_search": "Buscar en todo",
"extend_selection": "Ampliar la selección hacia abajo / arriba"
"extend_selection": "Ampliar la selección hacia abajo / arriba",
"accessibility_panel": "Abrir las opciones de accesibilidad"
},
"threads": {
"expand_collapse": "Expandir/contraer conversación",
@@ -5662,5 +5664,14 @@
"unread_count": "{count} sin leer",
"level_error": "Error",
"level_warning": "Advertencia"
},
"accessibility_panel": {
"title": "Accesibilidad",
"description": "Tamaño del texto, contraste y movimiento. Alt+Mayús+A lo abre desde cualquier sitio.",
"button": "Accesibilidad",
"all_settings": "Todos los ajustes de accesibilidad",
"preset_applied": "{name} ha cambiado {count, plural, one {# ajuste} many {# de ajustes} other {# ajustes}}.",
"command": "Opciones de accesibilidad",
"command_keywords": "a11y accesibilidad tamaño texto contraste movimiento zoom"
}
}
+13 -2
View File
@@ -209,7 +209,8 @@
"mv_next_day": "Järgmine päev",
"mv_add_another_account": "Lisa veel üks konto",
"mv_manage_account": "Halda oma kontot",
"mv_storage_used": "{percent}% mahust {total} kasutatud"
"mv_storage_used": "{percent}% mahust {total} kasutatud",
"accessibility": "Juurdepääsetavus"
},
"protocol_handlers": {
"title": "Vaikerakendused",
@@ -3447,7 +3448,8 @@
"refresh": "Värskenda e-kirjad",
"select_all": "Vali kõik",
"global_search": "Otsi kõike",
"extend_selection": "Laienda valikut alla / üles"
"extend_selection": "Laienda valikut alla / üles",
"accessibility_panel": "Ava juurdepääsetavuse valikud"
},
"threads": {
"expand_collapse": "Ava/sulge vestlus",
@@ -5662,5 +5664,14 @@
"unread_count": "{count} lugemata",
"level_error": "Viga",
"level_warning": "Hoiatus"
},
"accessibility_panel": {
"title": "Juurdepääsetavus",
"description": "Teksti suurus, kontrast ja liikumine. Alt+Shift+A avab selle kõikjalt.",
"button": "Juurdepääsetavus",
"all_settings": "Kõik juurdepääsetavuse seaded",
"preset_applied": "{name} muutis {count, plural, one {# seadet} other {# seadet}}.",
"command": "Juurdepääsetavuse valikud",
"command_keywords": "a11y juurdepääsetavus teksti suurus kontrast liikumine suum"
}
}
+13 -2
View File
@@ -209,7 +209,8 @@
"mv_next_day": "روز بعد",
"mv_add_another_account": "افزودن حساب دیگر",
"mv_manage_account": "مدیریت حساب",
"mv_storage_used": "{percent}٪ از {total} استفاده شده"
"mv_storage_used": "{percent}٪ از {total} استفاده شده",
"accessibility": "دسترس‌پذیری"
},
"protocol_handlers": {
"title": "برنامه‌های پیش‌فرض",
@@ -3447,7 +3448,8 @@
"refresh": "بازنشانی ایمیل‌ها",
"select_all": "انتخاب همه",
"global_search": "جستجو در همه جا",
"extend_selection": "گسترش انتخاب به پایین / بالا"
"extend_selection": "گسترش انتخاب به پایین / بالا",
"accessibility_panel": "باز کردن گزینه‌های دسترس‌پذیری"
},
"threads": {
"expand_collapse": "باز/بسته کردن رشته",
@@ -5662,5 +5664,14 @@
"unread_count": "{count} خوانده‌نشده",
"level_error": "خطا",
"level_warning": "هشدار"
},
"accessibility_panel": {
"title": "دسترس‌پذیری",
"description": "اندازهٔ متن، تضاد و حرکت. Alt+Shift+A این را از هر جا باز می‌کند.",
"button": "دسترس‌پذیری",
"all_settings": "همهٔ تنظیمات دسترس‌پذیری",
"preset_applied": "{name} {count, plural, one {# تنظیم} other {# تنظیم}} را تغییر داد.",
"command": "گزینه‌های دسترس‌پذیری",
"command_keywords": "a11y دسترس‌پذیری اندازه متن تضاد حرکت بزرگنمایی"
}
}
+13 -2
View File
@@ -209,7 +209,8 @@
"mv_next_day": "Jour suivant",
"mv_add_another_account": "Ajouter un autre compte",
"mv_manage_account": "Gérer votre compte",
"mv_storage_used": "{percent} % de {total} utilisés"
"mv_storage_used": "{percent} % de {total} utilisés",
"accessibility": "Accessibilité"
},
"protocol_handlers": {
"title": "Applications par défaut",
@@ -3447,7 +3448,8 @@
"refresh": "Actualiser les emails",
"select_all": "Tout sélectionner",
"global_search": "Tout rechercher",
"extend_selection": "Étendre la sélection vers le bas / le haut"
"extend_selection": "Étendre la sélection vers le bas / le haut",
"accessibility_panel": "Ouvrir les options d'accessibilité"
},
"threads": {
"expand_collapse": "Développer/réduire la conversation",
@@ -5662,5 +5664,14 @@
"unread_count": "Non lues : {count}",
"level_error": "Erreur",
"level_warning": "Avertissement"
},
"accessibility_panel": {
"title": "Accessibilité",
"description": "Taille du texte, contraste et mouvements. Alt+Maj+A l'ouvre de partout.",
"button": "Accessibilité",
"all_settings": "Tous les paramètres d'accessibilité",
"preset_applied": "{name} a modifié {count, plural, one {# paramètre} many {# de paramètres} other {# paramètres}}.",
"command": "Options d'accessibilité",
"command_keywords": "a11y accessibilité taille texte contraste mouvement zoom"
}
}
+13 -2
View File
@@ -208,7 +208,8 @@
"mv_next_day": "היום הבא",
"mv_add_another_account": "הוספת חשבון נוסף",
"mv_manage_account": "ניהול החשבון",
"mv_storage_used": "נוצלו {percent}% מתוך {total}"
"mv_storage_used": "נוצלו {percent}% מתוך {total}",
"accessibility": "נגישות"
},
"sidebar_apps": {
"modal_title": "אפליקציות בסרגל הצד",
@@ -3365,7 +3366,8 @@
"refresh": "רענן מיילים",
"select_all": "בחר הכל",
"global_search": "חיפוש בכל מקום",
"extend_selection": "הרחבת הבחירה למטה / למעלה"
"extend_selection": "הרחבת הבחירה למטה / למעלה",
"accessibility_panel": "פתיחת אפשרויות הנגישות"
},
"threads": {
"expand_collapse": "הרחב/כווץ את השרשור",
@@ -5663,5 +5665,14 @@
"unread_count": "לא נקראו: {count}",
"level_error": "שגיאה",
"level_warning": "אזהרה"
},
"accessibility_panel": {
"title": "נגישות",
"description": "גודל טקסט, ניגודיות ותנועה. Alt+Shift+A פותח את זה מכל מקום.",
"button": "נגישות",
"all_settings": "כל הגדרות הנגישות",
"preset_applied": "{name}: שונו {count, plural, one {הגדרה אחת} two {שתי הגדרות} other {# הגדרות}}.",
"command": "אפשרויות נגישות",
"command_keywords": "a11y נגישות גודל טקסט ניגודיות תנועה זום"
}
}
+13 -2
View File
@@ -209,7 +209,8 @@
"mv_next_day": "Következő nap",
"mv_add_another_account": "Másik fiók hozzáadása",
"mv_manage_account": "Fiók kezelése",
"mv_storage_used": "{total} {percent}%-a foglalt"
"mv_storage_used": "{total} {percent}%-a foglalt",
"accessibility": "Kisegítő lehetőségek"
},
"protocol_handlers": {
"title": "Alapértelmezett alkalmazások",
@@ -3447,7 +3448,8 @@
"refresh": "E-mailek frissítése",
"select_all": "Összes kijelölése",
"global_search": "Keresés mindenben",
"extend_selection": "Kijelölés bővítése lefelé / felfelé"
"extend_selection": "Kijelölés bővítése lefelé / felfelé",
"accessibility_panel": "Kisegítő lehetőségek megnyitása"
},
"threads": {
"expand_collapse": "Beszélgetés kibontása/összecsukása",
@@ -5662,5 +5664,14 @@
"unread_count": "{count} olvasatlan",
"level_error": "Hiba",
"level_warning": "Figyelmeztetés"
},
"accessibility_panel": {
"title": "Kisegítő lehetőségek",
"description": "Szövegméret, kontraszt és mozgás. Az Alt+Shift+A bárhonnan megnyitja.",
"button": "Kisegítő lehetőségek",
"all_settings": "Az összes kisegítő beállítás",
"preset_applied": "{name} {count, plural, one {# beállítást} other {# beállítást}} módosított.",
"command": "Kisegítő lehetőségek beállításai",
"command_keywords": "a11y kisegítő lehetőségek akadálymentesség szövegméret kontraszt mozgás nagyítás"
}
}
+13 -2
View File
@@ -209,7 +209,8 @@
"mv_next_day": "Giorno successivo",
"mv_add_another_account": "Aggiungi un altro account",
"mv_manage_account": "Gestisci il tuo account",
"mv_storage_used": "{percent}% di {total} utilizzato"
"mv_storage_used": "{percent}% di {total} utilizzato",
"accessibility": "Accessibilità"
},
"protocol_handlers": {
"title": "App predefinite",
@@ -3447,7 +3448,8 @@
"refresh": "Aggiorna messaggi",
"select_all": "Seleziona tutto",
"global_search": "Cerca ovunque",
"extend_selection": "Estendi la selezione in basso / in alto"
"extend_selection": "Estendi la selezione in basso / in alto",
"accessibility_panel": "Apri le opzioni di accessibilità"
},
"threads": {
"expand_collapse": "Espandi/comprimi conversazione",
@@ -5662,5 +5664,14 @@
"unread_count": "{count} non lette",
"level_error": "Errore",
"level_warning": "Avviso"
},
"accessibility_panel": {
"title": "Accessibilità",
"description": "Dimensione del testo, contrasto e movimento. Alt+Maiusc+A lo apre da qualsiasi punto.",
"button": "Accessibilità",
"all_settings": "Tutte le impostazioni di accessibilità",
"preset_applied": "{name} ha modificato {count, plural, one {# impostazione} other {# impostazioni}}.",
"command": "Opzioni di accessibilità",
"command_keywords": "a11y accessibilità dimensione testo contrasto movimento zoom"
}
}
+13 -2
View File
@@ -209,7 +209,8 @@
"mv_next_day": "翌日",
"mv_add_another_account": "別のアカウントを追加",
"mv_manage_account": "アカウントを管理",
"mv_storage_used": "{total} のうち {percent}% を使用中"
"mv_storage_used": "{total} のうち {percent}% を使用中",
"accessibility": "アクセシビリティ"
},
"protocol_handlers": {
"title": "既定のアプリ",
@@ -3447,7 +3448,8 @@
"refresh": "メールを更新",
"select_all": "すべて選択",
"global_search": "すべてを検索",
"extend_selection": "選択範囲を下 / 上に広げる"
"extend_selection": "選択範囲を下 / 上に広げる",
"accessibility_panel": "アクセシビリティのオプションを開く"
},
"threads": {
"expand_collapse": "スレッドの展開/折りたたみ",
@@ -5662,5 +5664,14 @@
"unread_count": "未読 {count} 件",
"level_error": "エラー",
"level_warning": "警告"
},
"accessibility_panel": {
"title": "アクセシビリティ",
"description": "文字サイズ、コントラスト、動き。Alt+Shift+Aでどこからでも開けます。",
"button": "アクセシビリティ",
"all_settings": "アクセシビリティの全設定",
"preset_applied": "{name}が{count, plural, other {#件の設定}}を変更しました。",
"command": "アクセシビリティのオプション",
"command_keywords": "a11y アクセシビリティ 文字サイズ コントラスト 動き ズーム"
}
}
+13 -2
View File
@@ -209,7 +209,8 @@
"mv_next_day": "다음 날",
"mv_add_another_account": "다른 계정 추가",
"mv_manage_account": "계정 관리",
"mv_storage_used": "{total} 중 {percent}% 사용"
"mv_storage_used": "{total} 중 {percent}% 사용",
"accessibility": "접근성"
},
"protocol_handlers": {
"title": "기본 앱",
@@ -3447,7 +3448,8 @@
"refresh": "메일 새로고침",
"select_all": "모두 선택",
"global_search": "전체 검색",
"extend_selection": "선택 범위를 아래 / 위로 확장"
"extend_selection": "선택 범위를 아래 / 위로 확장",
"accessibility_panel": "접근성 옵션 열기"
},
"threads": {
"expand_collapse": "대화 펼치기/접기",
@@ -5662,5 +5664,14 @@
"unread_count": "읽지 않음 {count}개",
"level_error": "오류",
"level_warning": "경고"
},
"accessibility_panel": {
"title": "접근성",
"description": "글자 크기, 대비, 움직임. Alt+Shift+A를 누르면 어디서든 열려요.",
"button": "접근성",
"all_settings": "접근성 설정 모두 보기",
"preset_applied": "{name} 적용으로 설정 {count, plural, other {#개}}가 바뀌었어요.",
"command": "접근성 옵션",
"command_keywords": "a11y 접근성 글자 크기 대비 움직임 확대"
}
}
+13 -2
View File
@@ -209,7 +209,8 @@
"mv_next_day": "Nākamā diena",
"mv_add_another_account": "Pievienot citu kontu",
"mv_manage_account": "Pārvaldīt kontu",
"mv_storage_used": "Izmantoti {percent}% no {total}"
"mv_storage_used": "Izmantoti {percent}% no {total}",
"accessibility": "Pieejamība"
},
"protocol_handlers": {
"title": "Noklusējuma lietotnes",
@@ -3447,7 +3448,8 @@
"refresh": "Atsvaidzināt vēstules",
"select_all": "Atlasīt visas",
"global_search": "Meklēt visā",
"extend_selection": "Paplašināt atlasi uz leju / uz augšu"
"extend_selection": "Paplašināt atlasi uz leju / uz augšu",
"accessibility_panel": "Atvērt pieejamības opcijas"
},
"threads": {
"expand_collapse": "Izvērst/sairt sarunu",
@@ -5662,5 +5664,14 @@
"unread_count": "Nelasīti: {count}",
"level_error": "Kļūda",
"level_warning": "Brīdinājums"
},
"accessibility_panel": {
"title": "Pieejamība",
"description": "Teksta izmērs, kontrasts un kustība. Alt+Shift+A to atver jebkurā vietā.",
"button": "Pieejamība",
"all_settings": "Visi pieejamības iestatījumi",
"preset_applied": "{name} mainīja {count, plural, zero {# iestatījumu} one {# iestatījumu} other {# iestatījumus}}.",
"command": "Pieejamības opcijas",
"command_keywords": "a11y pieejamība teksta izmērs kontrasts kustība tālummaiņa"
}
}
+13 -2
View File
@@ -209,7 +209,8 @@
"mv_next_day": "Дараах өдөр",
"mv_add_another_account": "Өөр бүртгэл нэмэх",
"mv_manage_account": "Бүртгэлээ удирдах",
"mv_storage_used": "{total}-с {percent}% ашигласан"
"mv_storage_used": "{total}-с {percent}% ашигласан",
"accessibility": "Хүртээмж"
},
"protocol_handlers": {
"title": "Өгөгдмөл програмууд",
@@ -3447,7 +3448,8 @@
"refresh": "Имэйл сэргээх",
"select_all": "Бүгдийг сонго",
"global_search": "Бүгдийг хайх",
"extend_selection": "Сонголтыг доош / дээш өргөтгөх"
"extend_selection": "Сонголтыг доош / дээш өргөтгөх",
"accessibility_panel": "Хүртээмжийн сонголтуудыг нээх"
},
"threads": {
"expand_collapse": "Хэлхээсийг дэлгэх/хумих",
@@ -5662,5 +5664,14 @@
"unread_count": "Уншаагүй: {count}",
"level_error": "Алдаа",
"level_warning": "Анхааруулга"
},
"accessibility_panel": {
"title": "Хүртээмж",
"description": "Текстийн хэмжээ, тодосгогч, хөдөлгөөн. Alt+Shift+A нь үүнийг хаанаас ч нээнэ.",
"button": "Хүртээмж",
"all_settings": "Хүртээмжийн бүх тохиргоо",
"preset_applied": "{name} {count, plural, other {# тохиргоог}} өөрчиллөө.",
"command": "Хүртээмжийн сонголтууд",
"command_keywords": "a11y хүртээмж текстийн хэмжээ тодосгогч хөдөлгөөн томруулах"
}
}
+13 -2
View File
@@ -209,7 +209,8 @@
"mv_next_day": "Neste dag",
"mv_add_another_account": "Legg til en annen konto",
"mv_manage_account": "Administrer kontoen",
"mv_storage_used": "{percent} % av {total} brukt"
"mv_storage_used": "{percent} % av {total} brukt",
"accessibility": "Tilgjengelighet"
},
"protocol_handlers": {
"title": "Standardapper",
@@ -3447,7 +3448,8 @@
"refresh": "Oppdater e-poster",
"select_all": "Velg alle",
"global_search": "Søk i alt",
"extend_selection": "Utvid markeringen ned / opp"
"extend_selection": "Utvid markeringen ned / opp",
"accessibility_panel": "Åpne alternativer for tilgjengelighet"
},
"threads": {
"expand_collapse": "Utvid eller fold sammen tråden",
@@ -5662,5 +5664,14 @@
"unread_count": "{count} uleste",
"level_error": "Feil",
"level_warning": "Advarsel"
},
"accessibility_panel": {
"title": "Tilgjengelighet",
"description": "Tekststørrelse, kontrast og bevegelse. Alt+Shift+A åpner dette fra hvor som helst.",
"button": "Tilgjengelighet",
"all_settings": "Alle innstillinger for tilgjengelighet",
"preset_applied": "{name} endret {count, plural, one {# innstilling} other {# innstillinger}}.",
"command": "Alternativer for tilgjengelighet",
"command_keywords": "a11y tilgjengelighet tekststørrelse kontrast bevegelse zoom"
}
}
+13 -2
View File
@@ -209,7 +209,8 @@
"mv_next_day": "Volgende dag",
"mv_add_another_account": "Nog een account toevoegen",
"mv_manage_account": "Account beheren",
"mv_storage_used": "{percent}% van {total} gebruikt"
"mv_storage_used": "{percent}% van {total} gebruikt",
"accessibility": "Toegankelijkheid"
},
"protocol_handlers": {
"title": "Standaardapps",
@@ -3447,7 +3448,8 @@
"refresh": "E-mails vernieuwen",
"select_all": "Alles selecteren",
"global_search": "Alles doorzoeken",
"extend_selection": "Selectie omlaag / omhoog uitbreiden"
"extend_selection": "Selectie omlaag / omhoog uitbreiden",
"accessibility_panel": "Toegankelijkheidsopties openen"
},
"threads": {
"expand_collapse": "Gesprek uitklappen/inklappen",
@@ -5662,5 +5664,14 @@
"unread_count": "{count} ongelezen",
"level_error": "Fout",
"level_warning": "Waarschuwing"
},
"accessibility_panel": {
"title": "Toegankelijkheid",
"description": "Tekstgrootte, contrast en beweging. Alt+Shift+A opent dit vanaf elke plek.",
"button": "Toegankelijkheid",
"all_settings": "Alle toegankelijkheidsinstellingen",
"preset_applied": "{name} heeft {count, plural, one {# instelling} other {# instellingen}} gewijzigd.",
"command": "Toegankelijkheidsopties",
"command_keywords": "a11y toegankelijkheid tekstgrootte contrast beweging zoom"
}
}
+13 -2
View File
@@ -209,7 +209,8 @@
"mv_next_day": "Następny dzień",
"mv_add_another_account": "Dodaj kolejne konto",
"mv_manage_account": "Zarządzaj kontem",
"mv_storage_used": "Wykorzystano {percent}% z {total}"
"mv_storage_used": "Wykorzystano {percent}% z {total}",
"accessibility": "Dostępność"
},
"protocol_handlers": {
"title": "Aplikacje domyślne",
@@ -3447,7 +3448,8 @@
"refresh": "Odśwież wiadomości",
"select_all": "Zaznacz wszystko",
"global_search": "Szukaj wszędzie",
"extend_selection": "Rozszerz zaznaczenie w dół / w górę"
"extend_selection": "Rozszerz zaznaczenie w dół / w górę",
"accessibility_panel": "Otwórz opcje dostępności"
},
"threads": {
"expand_collapse": "Rozwiń/zwiń wątek",
@@ -5662,5 +5664,14 @@
"unread_count": "Nieprzeczytane: {count}",
"level_error": "Błąd",
"level_warning": "Ostrzeżenie"
},
"accessibility_panel": {
"title": "Dostępność",
"description": "Rozmiar tekstu, kontrast i ruch. Alt+Shift+A otwiera to z każdego miejsca.",
"button": "Dostępność",
"all_settings": "Wszystkie ustawienia dostępności",
"preset_applied": "{name} zmienia {count, plural, one {# ustawienie} few {# ustawienia} many {# ustawień} other {# ustawienia}}.",
"command": "Opcje dostępności",
"command_keywords": "a11y dostępność rozmiar tekstu kontrast ruch powiększenie"
}
}
+13 -2
View File
@@ -209,7 +209,8 @@
"mv_next_day": "Dia seguinte",
"mv_add_another_account": "Adicionar outra conta",
"mv_manage_account": "Gerir a sua conta",
"mv_storage_used": "{percent}% de {total} utilizado"
"mv_storage_used": "{percent}% de {total} utilizado",
"accessibility": "Acessibilidade"
},
"protocol_handlers": {
"title": "Aplicativos padrão",
@@ -3447,7 +3448,8 @@
"refresh": "Atualizar e-mails",
"select_all": "Selecionar todos",
"global_search": "Pesquisar em tudo",
"extend_selection": "Expandir a seleção para baixo / cima"
"extend_selection": "Expandir a seleção para baixo / cima",
"accessibility_panel": "Abrir as opções de acessibilidade"
},
"threads": {
"expand_collapse": "Expandir/recolher conversa",
@@ -5662,5 +5664,14 @@
"unread_count": "{count} não lidas",
"level_error": "Erro",
"level_warning": "Aviso"
},
"accessibility_panel": {
"title": "Acessibilidade",
"description": "Tamanho do texto, contraste e movimento. Alt+Shift+A abre isto de qualquer lugar.",
"button": "Acessibilidade",
"all_settings": "Todas as configurações de acessibilidade",
"preset_applied": "{name} alterou {count, plural, one {# configuração} other {# configurações}}.",
"command": "Opções de acessibilidade",
"command_keywords": "a11y acessibilidade tamanho texto contraste movimento zoom"
}
}
+13 -2
View File
@@ -209,7 +209,8 @@
"mv_next_day": "Ziua următoare",
"mv_add_another_account": "Adaugă alt cont",
"mv_manage_account": "Gestionează contul",
"mv_storage_used": "{percent}% din {total} folosit"
"mv_storage_used": "{percent}% din {total} folosit",
"accessibility": "Accesibilitate"
},
"protocol_handlers": {
"title": "Aplicații implicite",
@@ -3447,7 +3448,8 @@
"refresh": "Reîmprospătați e-mailurile",
"select_all": "Selectează tot",
"global_search": "Caută în tot",
"extend_selection": "Extinde selecția în jos / în sus"
"extend_selection": "Extinde selecția în jos / în sus",
"accessibility_panel": "Deschide opțiunile de accesibilitate"
},
"threads": {
"expand_collapse": "Extindeți/reduceți firul de discuție",
@@ -5662,5 +5664,14 @@
"unread_count": "Necitite: {count}",
"level_error": "Eroare",
"level_warning": "Avertisment"
},
"accessibility_panel": {
"title": "Accesibilitate",
"description": "Dimensiunea textului, contrast și mișcare. Alt+Shift+A deschide panoul de oriunde.",
"button": "Accesibilitate",
"all_settings": "Toate setările de accesibilitate",
"preset_applied": "{name} a modificat {count, plural, one {# setare} few {# setări} other {# de setări}}.",
"command": "Opțiuni de accesibilitate",
"command_keywords": "a11y accesibilitate dimensiune text contrast mișcare zoom"
}
}
+13 -2
View File
@@ -209,7 +209,8 @@
"mv_next_day": "Следующий день",
"mv_add_another_account": "Добавить другой аккаунт",
"mv_manage_account": "Управление аккаунтом",
"mv_storage_used": "Использовано {percent}% из {total}"
"mv_storage_used": "Использовано {percent}% из {total}",
"accessibility": "Специальные возможности"
},
"protocol_handlers": {
"title": "Приложения по умолчанию",
@@ -3447,7 +3448,8 @@
"refresh": "Обновить письма",
"select_all": "Выбрать все",
"global_search": "Искать везде",
"extend_selection": "Расширить выделение вниз / вверх"
"extend_selection": "Расширить выделение вниз / вверх",
"accessibility_panel": "Открыть параметры специальных возможностей"
},
"threads": {
"expand_collapse": "Развернуть/свернуть цепочку",
@@ -5662,5 +5664,14 @@
"unread_count": "Непрочитанных: {count}",
"level_error": "Ошибка",
"level_warning": "Предупреждение"
},
"accessibility_panel": {
"title": "Специальные возможности",
"description": "Размер текста, контраст и анимация. Alt+Shift+A открывает это откуда угодно.",
"button": "Специальные возможности",
"all_settings": "Все настройки специальных возможностей",
"preset_applied": "{name}. Изменено: {count, plural, one {# настройка} few {# настройки} many {# настроек} other {# настройки}}.",
"command": "Параметры специальных возможностей",
"command_keywords": "a11y специальные возможности доступность размер текста контраст анимация масштаб"
}
}
+13 -2
View File
@@ -209,7 +209,8 @@
"mv_next_day": "Nasledujúci deň",
"mv_add_another_account": "Pridať ďalší účet",
"mv_manage_account": "Spravovať účet",
"mv_storage_used": "Využité {percent} % z {total}"
"mv_storage_used": "Využité {percent} % z {total}",
"accessibility": "Prístupnosť"
},
"protocol_handlers": {
"title": "Predvolené aplikácie",
@@ -3447,7 +3448,8 @@
"refresh": "Obnoviť e-maily",
"select_all": "Vybrať všetko",
"global_search": "Hľadať všade",
"extend_selection": "Rozšíriť výber nadol / nahor"
"extend_selection": "Rozšíriť výber nadol / nahor",
"accessibility_panel": "Otvoriť možnosti prístupnosti"
},
"threads": {
"expand_collapse": "Rozbaliť/zbaliť vlákno",
@@ -5662,5 +5664,14 @@
"unread_count": "Neprečítané: {count}",
"level_error": "Chyba",
"level_warning": "Varovanie"
},
"accessibility_panel": {
"title": "Prístupnosť",
"description": "Veľkosť textu, kontrast a pohyb. Alt+Shift+A to otvorí odkiaľkoľvek.",
"button": "Prístupnosť",
"all_settings": "Všetky nastavenia prístupnosti",
"preset_applied": "{name}. Zmenené: {count, plural, one {# nastavenie} few {# nastavenia} many {# nastavenia} other {# nastavení}}.",
"command": "Možnosti prístupnosti",
"command_keywords": "a11y prístupnosť veľkosť textu kontrast pohyb priblíženie"
}
}
+13 -2
View File
@@ -323,7 +323,8 @@
"mv_next_day": "วันถัดไป",
"mv_add_another_account": "เพิ่มบัญชีอื่น",
"mv_manage_account": "จัดการบัญชีของคุณ",
"mv_storage_used": "ใช้ไป {percent}% จาก {total}"
"mv_storage_used": "ใช้ไป {percent}% จาก {total}",
"accessibility": "การเข้าถึง"
},
"language": {
"title": "ภาษา",
@@ -765,7 +766,8 @@
"refresh": "รีเฟรชอีเมล",
"select_all": "เลือกทั้งหมด",
"global_search": "ค้นหาทุกรายการ",
"extend_selection": "ขยายการเลือกลง / ขึ้น"
"extend_selection": "ขยายการเลือกลง / ขึ้น",
"accessibility_panel": "เปิดตัวเลือกการเข้าถึง"
},
"threads": {
"expand_collapse": "ขยาย/ย่อการสนทนา",
@@ -5670,5 +5672,14 @@
"applying": "กำลังนำไปใช้…",
"finish": "นำไปใช้และเสร็จสิ้น"
}
},
"accessibility_panel": {
"title": "การเข้าถึง",
"description": "ขนาดตัวอักษร คอนทราสต์ และการเคลื่อนไหว กด Alt+Shift+A เพื่อเปิดจากที่ไหนก็ได้",
"button": "การเข้าถึง",
"all_settings": "การตั้งค่าการเข้าถึงทั้งหมด",
"preset_applied": "{name} เปลี่ยนการตั้งค่า {count, plural, other {# รายการ}}",
"command": "ตัวเลือกการเข้าถึง",
"command_keywords": "a11y การเข้าถึง ขนาดตัวอักษร คอนทราสต์ การเคลื่อนไหว ซูม"
}
}
+13 -2
View File
@@ -209,7 +209,8 @@
"mv_next_day": "Sonraki gün",
"mv_add_another_account": "Başka bir hesap ekle",
"mv_manage_account": "Hesabınızı yönetin",
"mv_storage_used": "{total} alanın %{percent} kadarı kullanıldı"
"mv_storage_used": "{total} alanın %{percent} kadarı kullanıldı",
"accessibility": "Erişilebilirlik"
},
"protocol_handlers": {
"title": "Varsayılan uygulamalar",
@@ -3447,7 +3448,8 @@
"refresh": "E-postaları yenile",
"select_all": "Tümünü seç",
"global_search": "Her yerde ara",
"extend_selection": "Seçimi aşağı / yukarı genişlet"
"extend_selection": "Seçimi aşağı / yukarı genişlet",
"accessibility_panel": "Erişilebilirlik seçeneklerini aç"
},
"threads": {
"expand_collapse": "İleti dizisini genişlet/daralt",
@@ -5662,5 +5664,14 @@
"unread_count": "{count} okunmamış",
"level_error": "Hata",
"level_warning": "Uyarı"
},
"accessibility_panel": {
"title": "Erişilebilirlik",
"description": "Metin boyutu, karşıtlık ve hareket. Alt+Shift+A bunu her yerden açar.",
"button": "Erişilebilirlik",
"all_settings": "Tüm erişilebilirlik ayarları",
"preset_applied": "{name}, {count, plural, one {# ayarı} other {# ayarı}} değiştirdi.",
"command": "Erişilebilirlik seçenekleri",
"command_keywords": "a11y erişilebilirlik metin boyutu karşıtlık hareket yakınlaştırma"
}
}
+13 -2
View File
@@ -209,7 +209,8 @@
"mv_next_day": "Наступний день",
"mv_add_another_account": "Додати інший обліковий запис",
"mv_manage_account": "Керувати обліковим записом",
"mv_storage_used": "Використано {percent}% з {total}"
"mv_storage_used": "Використано {percent}% з {total}",
"accessibility": "Доступність"
},
"protocol_handlers": {
"title": "Програми за замовчуванням",
@@ -3447,7 +3448,8 @@
"refresh": "Оновити електронні листи",
"select_all": "Вибрати все",
"global_search": "Шукати скрізь",
"extend_selection": "Розширити виділення вниз / вгору"
"extend_selection": "Розширити виділення вниз / вгору",
"accessibility_panel": "Відкрити параметри доступності"
},
"threads": {
"expand_collapse": "Розгорнути/згорнути ланцюжок",
@@ -5662,5 +5664,14 @@
"unread_count": "Непрочитаних: {count}",
"level_error": "Помилка",
"level_warning": "Попередження"
},
"accessibility_panel": {
"title": "Доступність",
"description": "Розмір тексту, контраст і рух. Alt+Shift+A відкриває це звідусіль.",
"button": "Доступність",
"all_settings": "Усі налаштування доступності",
"preset_applied": "{name}. Змінено: {count, plural, one {# налаштування} few {# налаштування} many {# налаштувань} other {# налаштування}}.",
"command": "Параметри доступності",
"command_keywords": "a11y доступність розмір тексту контраст рух масштаб"
}
}
+13 -2
View File
@@ -209,7 +209,8 @@
"mv_next_day": "後一天",
"mv_add_another_account": "新增其他帳戶",
"mv_manage_account": "管理您的帳戶",
"mv_storage_used": "已使用 {total} 中的 {percent}%"
"mv_storage_used": "已使用 {total} 中的 {percent}%",
"accessibility": "無障礙"
},
"protocol_handlers": {
"title": "預設應用程式",
@@ -3447,7 +3448,8 @@
"refresh": "重新整理郵件",
"select_all": "全部選取",
"global_search": "全域搜尋",
"extend_selection": "向下 / 向上擴展選取"
"extend_selection": "向下 / 向上擴展選取",
"accessibility_panel": "開啟無障礙選項"
},
"threads": {
"expand_collapse": "展開/收合對話串",
@@ -5662,5 +5664,14 @@
"unread_count": "{count} 則未讀",
"level_error": "錯誤",
"level_warning": "警告"
},
"accessibility_panel": {
"title": "無障礙",
"description": "文字大小、對比和動態效果。按 Alt+Shift+A 可隨時開啟。",
"button": "無障礙",
"all_settings": "全部無障礙設定",
"preset_applied": "{name}變更了 {count, plural, other {# 項設定}}。",
"command": "無障礙選項",
"command_keywords": "a11y 無障礙 輔助功能 文字大小 對比 動態效果 縮放"
}
}
+13 -2
View File
@@ -209,7 +209,8 @@
"mv_next_day": "后一天",
"mv_add_another_account": "添加其他账户",
"mv_manage_account": "管理您的账户",
"mv_storage_used": "已使用 {total} 中的 {percent}%"
"mv_storage_used": "已使用 {total} 中的 {percent}%",
"accessibility": "无障碍"
},
"protocol_handlers": {
"title": "默认应用",
@@ -3447,7 +3448,8 @@
"refresh": "刷新邮件",
"select_all": "全选",
"global_search": "全局搜索",
"extend_selection": "向下 / 向上扩展选择"
"extend_selection": "向下 / 向上扩展选择",
"accessibility_panel": "打开无障碍选项"
},
"threads": {
"expand_collapse": "展开/折叠会话",
@@ -5662,5 +5664,14 @@
"unread_count": "{count} 条未读",
"level_error": "错误",
"level_warning": "警告"
},
"accessibility_panel": {
"title": "无障碍",
"description": "文字大小、对比度和动效。按 Alt+Shift+A 可随时打开。",
"button": "无障碍",
"all_settings": "全部无障碍设置",
"preset_applied": "{name}更改了 {count, plural, other {# 项设置}}。",
"command": "无障碍选项",
"command_keywords": "a11y 无障碍 辅助功能 文字大小 对比度 动效 缩放"
}
}