Compare commits
10
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1189b146ef | ||
|
|
a0bffa9467 | ||
|
|
80107d3b32 | ||
|
|
f121678e2a | ||
|
|
fb3f1a35b3 | ||
|
|
1aa0a4686b | ||
|
|
395fcc27a8 | ||
|
|
fbfaf528ab | ||
|
|
7e3034da8d | ||
|
|
a622e3755b |
@@ -49,6 +49,13 @@ RUN apk upgrade --no-cache && \
|
||||
COPY --from=builder /app/public ./public
|
||||
COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
|
||||
COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
|
||||
# next/dist/lib/metadata/** (get-metadata-route.js and its neighbours). A
|
||||
# plain top-level require in router-utils/filesystem.js, yet Next's own
|
||||
# output file tracing for `output: "standalone"` + `next build --webpack`
|
||||
# drops the whole directory - the server crashes on its first line with
|
||||
# "Cannot find module '../../../lib/metadata/get-metadata-route'" without
|
||||
# this. Same tracing-gap class as the plugins copy below.
|
||||
COPY --from=builder --chown=nextjs:nodejs /app/node_modules/next/dist/lib/metadata ./node_modules/next/dist/lib/metadata
|
||||
# Staged first-party plugin bundles. Read by path at runtime, so Next's output
|
||||
# file tracing does not carry them into .next/standalone - copy explicitly or
|
||||
# the image boots with the S/MIME policy toggle on and no plugin installed.
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
'use client';
|
||||
|
||||
import { useEffect, useState } from 'react';
|
||||
import { Save, Loader2, X, ArrowRight } from 'lucide-react';
|
||||
import type { AiConsoleConfig, AiClass } from '@/lib/ai/types';
|
||||
import { Save, Loader2, X, ArrowRight, Plus, Trash2 } from 'lucide-react';
|
||||
import type { AiConsoleConfig, AiClass, PublicAiPreset } from '@/lib/ai/types';
|
||||
import { DEFAULT_AI_CONSOLE_CONFIG } from '@/lib/ai/types';
|
||||
import type { AiEntitlementState, MeteringEntry } from '@/lib/ai/entitlement';
|
||||
import { apiFetch } from '@/lib/browser-navigation';
|
||||
@@ -73,6 +73,85 @@ function AllowlistEditor({
|
||||
);
|
||||
}
|
||||
|
||||
function newPresetId(): string {
|
||||
return `preset-${Math.random().toString(36).slice(2, 10)}`;
|
||||
}
|
||||
|
||||
/**
|
||||
* The Paperclip-style env-var-key picker (decision 2026-08-07): an admin
|
||||
* names a preset and an env var; the actual secret value is never entered
|
||||
* here — it's whatever ops has set in the server's real environment. This is
|
||||
* what lets a user in Settings pick a provider from a dropdown instead of
|
||||
* pasting a key.
|
||||
*/
|
||||
function PublicPresetsEditor({
|
||||
presets, onChange,
|
||||
}: { presets: PublicAiPreset[]; onChange: (next: PublicAiPreset[]) => void }) {
|
||||
const [name, setName] = useState('');
|
||||
const [baseUrl, setBaseUrl] = useState('https://api.deepseek.com');
|
||||
const [model, setModel] = useState('');
|
||||
const [envVar, setEnvVar] = useState('');
|
||||
|
||||
const canAdd = name.trim() && baseUrl.trim() && model.trim() && envVar.trim();
|
||||
|
||||
function addPreset() {
|
||||
if (!canAdd) return;
|
||||
onChange([...presets, { id: newPresetId(), name: name.trim(), baseUrl: baseUrl.trim(), model: model.trim(), apiKeyEnvVar: envVar.trim() }]);
|
||||
setName('');
|
||||
setBaseUrl('https://api.deepseek.com');
|
||||
setModel('');
|
||||
setEnvVar('');
|
||||
}
|
||||
|
||||
return (
|
||||
<>
|
||||
{presets.length > 0 && (
|
||||
<div className="divide-y divide-border">
|
||||
{presets.map((p) => (
|
||||
<div key={p.id} className="px-4 py-2.5 flex items-center justify-between gap-3">
|
||||
<div className="min-w-0">
|
||||
<span className="text-sm font-medium">{p.name}</span>
|
||||
<p className="text-xs text-muted-foreground truncate">
|
||||
{p.model} · {p.baseUrl} · reads <code className="text-[11px]">{p.apiKeyEnvVar}</code>
|
||||
</p>
|
||||
</div>
|
||||
<button
|
||||
onClick={() => onChange(presets.filter((x) => x.id !== p.id))}
|
||||
className="shrink-0 text-muted-foreground hover:text-destructive"
|
||||
aria-label={`Remove ${p.name}`}
|
||||
>
|
||||
<Trash2 className="w-3.5 h-3.5" />
|
||||
</button>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
)}
|
||||
<div className="px-4 py-3 flex flex-col gap-2 border-t border-border">
|
||||
<div className="flex gap-2 flex-wrap">
|
||||
<input value={name} onChange={(e) => setName(e.target.value)} placeholder="Name, e.g. DeepSeek (org)"
|
||||
className="flex-1 min-w-[160px] h-8 rounded border border-input bg-background px-2.5 text-xs" />
|
||||
<input value={model} onChange={(e) => setModel(e.target.value)} placeholder="Model, e.g. deepseek-chat"
|
||||
className="flex-1 min-w-[160px] h-8 rounded border border-input bg-background px-2.5 text-xs" />
|
||||
</div>
|
||||
<div className="flex gap-2 flex-wrap">
|
||||
<input value={baseUrl} onChange={(e) => setBaseUrl(e.target.value)} placeholder="API base URL"
|
||||
className="flex-1 min-w-[200px] h-8 rounded border border-input bg-background px-2.5 text-xs" />
|
||||
<input value={envVar} onChange={(e) => setEnvVar(e.target.value)} placeholder="Env var, e.g. DEEPSEEK_API_KEY"
|
||||
className="flex-1 min-w-[200px] h-8 rounded border border-input bg-background px-2.5 text-xs" />
|
||||
<button onClick={addPreset} disabled={!canAdd}
|
||||
className="h-8 px-3 rounded border border-border bg-muted text-xs font-medium hover:bg-muted/70 disabled:opacity-50 inline-flex items-center gap-1.5">
|
||||
<Plus className="w-3 h-3" /> Add
|
||||
</button>
|
||||
</div>
|
||||
<p className="text-xs text-muted-foreground">
|
||||
Only the env var <em>name</em> is stored here — provision the actual key as a real environment variable on
|
||||
the server (k8s secret, .env, Electron packaging). This app never sees or stores the value.
|
||||
</p>
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
export function AiPolicyTab() {
|
||||
const setActiveTab = useAdminTabStore((s) => s.setActiveTab);
|
||||
const [config, setConfig] = useState<AiConsoleConfig>({ ...DEFAULT_AI_CONSOLE_CONFIG });
|
||||
@@ -247,6 +326,17 @@ export function AiPolicyTab() {
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div className="border border-border rounded-lg">
|
||||
<div className="px-4 py-3 border-b border-border bg-muted/30">
|
||||
<h2 className="text-sm font-medium text-foreground">Public — org-managed presets</h2>
|
||||
<p className="text-xs text-muted-foreground mt-0.5">
|
||||
Paperclip-style: publish a provider by name instead of making every user paste their own key. Users pick
|
||||
one of these in Settings with no key field at all — the server resolves the named env var at request time.
|
||||
</p>
|
||||
</div>
|
||||
<PublicPresetsEditor presets={config.publicPresets} onChange={(v) => update({ publicPresets: v })} />
|
||||
</div>
|
||||
|
||||
<div className="border border-border rounded-lg">
|
||||
<div className="px-4 py-3 border-b border-border bg-muted/30">
|
||||
<h2 className="text-sm font-medium text-foreground">Entitlement & seats</h2>
|
||||
|
||||
@@ -48,6 +48,24 @@ function validate(body: Partial<AiConsoleConfig>): string | null {
|
||||
return 'publicProviderAllowlist must be an array of strings or null';
|
||||
}
|
||||
}
|
||||
if (body.publicPresets !== undefined) {
|
||||
if (!Array.isArray(body.publicPresets)) return 'publicPresets must be an array';
|
||||
const ids = new Set<string>();
|
||||
for (const preset of body.publicPresets) {
|
||||
if (
|
||||
typeof preset !== 'object' || preset === null ||
|
||||
typeof preset.id !== 'string' || !preset.id ||
|
||||
typeof preset.name !== 'string' || !preset.name ||
|
||||
typeof preset.baseUrl !== 'string' || !preset.baseUrl ||
|
||||
typeof preset.model !== 'string' || !preset.model ||
|
||||
typeof preset.apiKeyEnvVar !== 'string' || !preset.apiKeyEnvVar
|
||||
) {
|
||||
return 'each publicPresets entry needs non-empty id, name, baseUrl, model, apiKeyEnvVar';
|
||||
}
|
||||
if (ids.has(preset.id)) return `duplicate publicPresets id "${preset.id}"`;
|
||||
ids.add(preset.id);
|
||||
}
|
||||
}
|
||||
if (body.retrievalEnabled !== undefined && typeof body.retrievalEnabled !== 'boolean') {
|
||||
return 'retrievalEnabled must be a boolean';
|
||||
}
|
||||
@@ -83,6 +101,7 @@ export async function PUT(request: NextRequest) {
|
||||
consentVersion: next.consent?.version ?? null,
|
||||
serverModelAllowlistCount: next.serverModelAllowlist?.length ?? null,
|
||||
publicProviderAllowlistCount: next.publicProviderAllowlist?.length ?? null,
|
||||
publicPresetsCount: next.publicPresets.length,
|
||||
}, ip);
|
||||
return NextResponse.json(next);
|
||||
} catch (error) {
|
||||
|
||||
@@ -43,6 +43,11 @@ export async function GET() {
|
||||
retrievalEnabled: consoleConfig.retrievalEnabled,
|
||||
consent: consoleConfig.consent,
|
||||
publicProviderAllowlist: consoleConfig.publicProviderAllowlist,
|
||||
// Sanitized: {id,name,model} only. baseUrl/apiKeyEnvVar stay server-side —
|
||||
// the client only ever refers to a preset by id (app/api/ai/public/chat
|
||||
// resolves the rest), so there's no reason to hand a browser tab even
|
||||
// an internal env var *name*, let alone a provider base URL.
|
||||
publicPresets: consoleConfig.publicPresets.map((p) => ({ id: p.id, name: p.name, model: p.model })),
|
||||
};
|
||||
|
||||
return NextResponse.json(aiPolicy, {
|
||||
|
||||
@@ -0,0 +1,97 @@
|
||||
import { NextRequest, NextResponse } from 'next/server';
|
||||
import { getStalwartCredentials } from '@/lib/stalwart/credentials';
|
||||
import { configManager } from '@/lib/admin/config-manager';
|
||||
import { logger } from '@/lib/logger';
|
||||
|
||||
export const runtime = 'nodejs';
|
||||
|
||||
const MAX_BODY_BYTES = 200 * 1024;
|
||||
|
||||
interface ChatMessage {
|
||||
role: 'system' | 'user' | 'assistant';
|
||||
content: string;
|
||||
}
|
||||
|
||||
interface OpenAiChatResponse {
|
||||
choices?: Array<{ message?: { content?: string } }>;
|
||||
}
|
||||
|
||||
/**
|
||||
* POST /api/ai/public/chat — the Paperclip-style, admin-managed alternative
|
||||
* to the personal-key `chatPublic` path (lib/ai/local-client.ts): the client
|
||||
* sends a `presetId`, never a key. The preset (name/baseUrl/model/
|
||||
* apiKeyEnvVar) lives in admin config (lib/ai/types.ts's PublicAiPreset);
|
||||
* the actual secret value is read from THIS PROCESS's real environment at
|
||||
* request time and never leaves this route — same custody model as
|
||||
* AI_SERVER_BASE_URL, just admin-nameable per preset instead of one fixed var.
|
||||
*
|
||||
* Deliberately NOT entitlement-metered, same reasoning as `local`/`opencode`
|
||||
* (lib/ai/entitlement.ts's header): this is still the `public` class, just
|
||||
* with the org supplying the key instead of the user — no centrally-borne
|
||||
* inference cost this app is billing for.
|
||||
*/
|
||||
export async function POST(request: NextRequest) {
|
||||
const auth = await getStalwartCredentials(request);
|
||||
if (!auth) {
|
||||
return NextResponse.json({ error: 'not authenticated' }, { status: 401 });
|
||||
}
|
||||
|
||||
await configManager.ensureLoaded();
|
||||
const consoleConfig = configManager.getAiConsoleConfig();
|
||||
if (consoleConfig.classesEnabled.public === false) {
|
||||
return NextResponse.json({ error: 'the Public AI class is disabled by admin policy' }, { status: 403 });
|
||||
}
|
||||
|
||||
const rawBody = await request.text();
|
||||
if (rawBody.length > MAX_BODY_BYTES) {
|
||||
return NextResponse.json({ error: 'request too large' }, { status: 413 });
|
||||
}
|
||||
|
||||
let body: { presetId?: unknown; messages?: unknown };
|
||||
try {
|
||||
body = JSON.parse(rawBody);
|
||||
} catch {
|
||||
return NextResponse.json({ error: 'invalid JSON body' }, { status: 400 });
|
||||
}
|
||||
|
||||
const presetId = typeof body.presetId === 'string' ? body.presetId : '';
|
||||
const messages = Array.isArray(body.messages) ? (body.messages as ChatMessage[]) : null;
|
||||
if (!presetId || !messages || messages.length === 0) {
|
||||
return NextResponse.json({ error: 'presetId and messages are required' }, { status: 400 });
|
||||
}
|
||||
|
||||
const preset = consoleConfig.publicPresets.find((p) => p.id === presetId);
|
||||
if (!preset) {
|
||||
return NextResponse.json({ error: `No such preset "${presetId}" — it may have been removed by an admin.` }, { status: 404 });
|
||||
}
|
||||
|
||||
const apiKey = process.env[preset.apiKeyEnvVar];
|
||||
if (!apiKey) {
|
||||
return NextResponse.json(
|
||||
{ error: `Env var "${preset.apiKeyEnvVar}" is not set on the server for preset "${preset.name}" — ask an admin to provision it.` },
|
||||
{ status: 503 },
|
||||
);
|
||||
}
|
||||
|
||||
try {
|
||||
const res = await fetch(`${preset.baseUrl.replace(/\/+$/, '')}/chat/completions`, {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${apiKey}` },
|
||||
body: JSON.stringify({ model: preset.model, messages }),
|
||||
});
|
||||
if (!res.ok) {
|
||||
return NextResponse.json({ error: `Provider returned ${res.status}` }, { status: 502 });
|
||||
}
|
||||
const data = (await res.json()) as OpenAiChatResponse;
|
||||
const content = data.choices?.[0]?.message?.content;
|
||||
if (!content) {
|
||||
return NextResponse.json({ error: 'Provider returned no message content' }, { status: 502 });
|
||||
}
|
||||
return NextResponse.json({ answer: content });
|
||||
} catch (cause) {
|
||||
logger.error('public ai preset chat failed', {
|
||||
presetId, error: cause instanceof Error ? cause.message : String(cause),
|
||||
});
|
||||
return NextResponse.json({ error: `Could not reach ${preset.baseUrl}` }, { status: 502 });
|
||||
}
|
||||
}
|
||||
@@ -22,8 +22,9 @@ import { useAccountStore } from '@/stores/account-store';
|
||||
import { DEFAULT_AI_POLICY, type AiPolicy } from '@/lib/ai/types';
|
||||
import { supportsLocalLlm } from '@/lib/platform-capabilities';
|
||||
import { getAiApiKey } from '@/lib/ai/key-store';
|
||||
import { loadAiSettings, type AiLocalSettings } from '@/lib/ai/local-settings';
|
||||
import { loadAiSettings, isPresetActiveId, presetIdFromActiveId, type AiLocalSettings } from '@/lib/ai/local-settings';
|
||||
import { askMail, type AskResult } from '@/lib/ai/local-client';
|
||||
import { ensureDefaultProvider } from '@/lib/ai/auto-provision';
|
||||
|
||||
function useAiPolicy(): { policy: AiPolicy; loaded: boolean } {
|
||||
const [policy, setPolicy] = useState<AiPolicy>(DEFAULT_AI_POLICY);
|
||||
@@ -58,6 +59,9 @@ function providerConfigured(settings: AiLocalSettings, policy: AiPolicy): boolea
|
||||
case 'opencode':
|
||||
return classes.includes('opencode') && !!settings.opencodeModel;
|
||||
case 'public': {
|
||||
if (isPresetActiveId(settings.activeProfileId)) {
|
||||
return classes.includes('public') && !!presetIdFromActiveId(settings.activeProfileId) && settings.publicConsentAccepted;
|
||||
}
|
||||
const active = settings.publicProfiles.find((p) => p.id === settings.activeProfileId) ?? null;
|
||||
return classes.includes('public') && !!active && settings.publicConsentAccepted;
|
||||
}
|
||||
@@ -90,6 +94,18 @@ export function AiAskButton() {
|
||||
setOpen(true);
|
||||
}, []);
|
||||
|
||||
// Zero-config default (see lib/ai/auto-provision.ts): resolves as soon as
|
||||
// policy loads, so a user who never visits Settings still finds AI
|
||||
// already on the first time they open this dialog, if OpenCode or Ollama
|
||||
// is available.
|
||||
useEffect(() => {
|
||||
if (!loaded) return;
|
||||
(async () => {
|
||||
const next = await ensureDefaultProvider(policy);
|
||||
setSettings(next);
|
||||
})();
|
||||
}, [loaded, policy]);
|
||||
|
||||
useEffect(() => {
|
||||
if (!open) return;
|
||||
textareaRef.current?.focus();
|
||||
@@ -109,7 +125,8 @@ export function AiAskButton() {
|
||||
setAskError(null);
|
||||
setAskResult(null);
|
||||
try {
|
||||
const activeProfile = settings.publicProfiles.find((p) => p.id === settings.activeProfileId) ?? null;
|
||||
const managedPresetId = presetIdFromActiveId(settings.activeProfileId);
|
||||
const activeProfile = managedPresetId ? null : settings.publicProfiles.find((p) => p.id === settings.activeProfileId) ?? null;
|
||||
const key = activeProfile ? getAiApiKey(activeProfile.id) : null;
|
||||
const result = await askMail(question.trim(), {
|
||||
provider: settings.provider as 'local' | 'server' | 'public' | 'opencode',
|
||||
@@ -119,6 +136,7 @@ export function AiAskButton() {
|
||||
opencodeModel: settings.opencodeModel,
|
||||
slot: activeSlot,
|
||||
publicProfile: activeProfile && key ? { baseUrl: activeProfile.baseUrl, model: activeProfile.model, apiKey: key } : null,
|
||||
publicPresetId: managedPresetId,
|
||||
});
|
||||
setAskResult(result);
|
||||
} catch (err) {
|
||||
|
||||
@@ -308,8 +308,14 @@ export function EmailComposer({
|
||||
getIdentityReplySignatureId,
|
||||
} = useSignatureStore();
|
||||
|
||||
// Lazy useState initializer (below) — runs during the FIRST render, before
|
||||
// the selectedIdentityId state declared further down exists yet (same TDZ
|
||||
// constraint the initialCurrentIdentityForSig comment a few lines down
|
||||
// already documents). On that first render selectedIdentityId can only be
|
||||
// unset anyway (nothing has called setSelectedIdentityId yet), so reading
|
||||
// initialData directly is equivalent, not a workaround.
|
||||
const resolveStoreSignatureId = (): string | null => {
|
||||
const perIdentityId = selectedIdentityId || initialData?.selectedIdentityId || null;
|
||||
const perIdentityId = initialData?.selectedIdentityId || null;
|
||||
if (mode === 'compose') {
|
||||
if (perIdentityId) {
|
||||
const id = getIdentityDefaultSignatureId(perIdentityId);
|
||||
|
||||
@@ -9,7 +9,11 @@ import { useAccountStore } from '@/stores/account-store';
|
||||
import { DEFAULT_AI_POLICY, type AiPolicy } from '@/lib/ai/types';
|
||||
import { supportsLocalLlm, localLlmNeedsCorsSetup } from '@/lib/platform-capabilities';
|
||||
import { getAiApiKey, setAiApiKey, clearAiApiKey } from '@/lib/ai/key-store';
|
||||
import { loadAiSettings, saveAiSettings, createProfile, type AiLocalSettings } from '@/lib/ai/local-settings';
|
||||
import {
|
||||
loadAiSettings, saveAiSettings, createProfile, presetActiveId, presetIdFromActiveId,
|
||||
type AiLocalSettings,
|
||||
} from '@/lib/ai/local-settings';
|
||||
import { ensureDefaultProvider } from '@/lib/ai/auto-provision';
|
||||
import {
|
||||
discoverLocalOllama,
|
||||
recommendDefaultModel,
|
||||
@@ -56,7 +60,23 @@ export function AiAssistantSettings() {
|
||||
(async () => {
|
||||
try {
|
||||
const res = await apiFetch('/api/ai/policy');
|
||||
if (res.ok && !cancelled) setPolicy(await res.json());
|
||||
if (res.ok && !cancelled) {
|
||||
const loadedPolicy = (await res.json()) as AiPolicy;
|
||||
setPolicy(loadedPolicy);
|
||||
// Zero-config default (lib/ai/auto-provision.ts) — a no-op once a
|
||||
// provider is already chosen, so this is safe to run on every
|
||||
// visit to this pane, not just first-run.
|
||||
const next = await ensureDefaultProvider(loadedPolicy);
|
||||
// Separately, once an admin has published at least one org-managed
|
||||
// preset, make IT the default "Answer with" pick too — pasting a
|
||||
// personal key should be the fallback a user reaches for, not the
|
||||
// thing they have to do to get any answer at all.
|
||||
if (!next.activeProfileId && loadedPolicy.publicPresets[0]) {
|
||||
next.activeProfileId = presetActiveId(loadedPolicy.publicPresets[0].id);
|
||||
saveAiSettings(next);
|
||||
}
|
||||
if (!cancelled) setSettings(next);
|
||||
}
|
||||
} finally {
|
||||
if (!cancelled) setPolicyLoading(false);
|
||||
}
|
||||
@@ -289,7 +309,9 @@ export function AiAssistantSettings() {
|
||||
const [askResult, setAskResult] = useState<AskResult | null>(null);
|
||||
const [askError, setAskError] = useState<string | null>(null);
|
||||
|
||||
const activeProfile = settings.publicProfiles.find((p) => p.id === settings.activeProfileId) ?? null;
|
||||
const activePresetId = presetIdFromActiveId(settings.activeProfileId);
|
||||
const activeProfile = activePresetId ? null : settings.publicProfiles.find((p) => p.id === settings.activeProfileId) ?? null;
|
||||
const activePublicSelection = !!activeProfile || (!!activePresetId && policy.publicPresets.some((p) => p.id === activePresetId));
|
||||
|
||||
const canAsk =
|
||||
question.trim().length > 0 &&
|
||||
@@ -300,7 +322,7 @@ export function AiAssistantSettings() {
|
||||
: settings.provider === 'opencode'
|
||||
? canUseOpencode && !!settings.opencodeModel
|
||||
: settings.provider === 'public'
|
||||
? canUsePublic && !!activeProfile && settings.publicConsentAccepted
|
||||
? canUsePublic && activePublicSelection && settings.publicConsentAccepted
|
||||
: false);
|
||||
|
||||
const runAsk = useCallback(async () => {
|
||||
@@ -318,6 +340,7 @@ export function AiAssistantSettings() {
|
||||
opencodeModel: settings.opencodeModel,
|
||||
slot: activeSlot,
|
||||
publicProfile: activeProfile && key ? { baseUrl: activeProfile.baseUrl, model: activeProfile.model, apiKey: key } : null,
|
||||
publicPresetId: activePresetId,
|
||||
});
|
||||
setAskResult(result);
|
||||
if (result.seatJustAssigned) {
|
||||
@@ -328,7 +351,7 @@ export function AiAssistantSettings() {
|
||||
} finally {
|
||||
setAsking(false);
|
||||
}
|
||||
}, [question, settings, activeProfile, activeSlot]);
|
||||
}, [question, settings, activeProfile, activePresetId, activeSlot]);
|
||||
|
||||
const providerOptions = useMemo(
|
||||
() => [
|
||||
@@ -622,8 +645,25 @@ export function AiAssistantSettings() {
|
||||
title="Public providers"
|
||||
description="Save several — different models for different questions. Any OpenAI-compatible endpoint works. Keys are stored only in this browser and, for now, use of this class is not monitored or metered by VNC."
|
||||
>
|
||||
{policy.publicPresets.length > 0 && (
|
||||
<SettingItem
|
||||
label="Org-managed providers"
|
||||
description="Set up by your admin. Pick one below in “Answer with” — no key to paste, it's resolved on the server."
|
||||
>
|
||||
<div className="flex flex-col gap-2 w-full">
|
||||
{policy.publicPresets.map((p) => (
|
||||
<div key={p.id} className="flex items-center gap-2 rounded-md border border-border px-3 py-2">
|
||||
<div className="flex-1 min-w-0">
|
||||
<p className="text-sm font-medium text-foreground truncate">{p.name}</p>
|
||||
<p className="text-xs text-muted-foreground truncate">{p.model} · managed by admin</p>
|
||||
</div>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</SettingItem>
|
||||
)}
|
||||
{settings.publicProfiles.length > 0 && (
|
||||
<SettingItem label="Saved profiles">
|
||||
<SettingItem label="Your own keys">
|
||||
<div className="flex flex-col gap-2 w-full">
|
||||
{settings.publicProfiles.map((p) => (
|
||||
<div key={p.id} className="flex items-center gap-2 rounded-md border border-border px-3 py-2">
|
||||
@@ -639,7 +679,7 @@ export function AiAssistantSettings() {
|
||||
</div>
|
||||
</SettingItem>
|
||||
)}
|
||||
<SettingItem label="Add a provider">
|
||||
<SettingItem label="Add your own key" description="Prefer to bring your own instead of an org-managed provider above.">
|
||||
<div className="flex flex-col gap-2 w-full">
|
||||
<div className="flex gap-2 flex-wrap">
|
||||
<input
|
||||
@@ -704,12 +744,15 @@ export function AiAssistantSettings() {
|
||||
{settings.provider && (
|
||||
<SettingsSection title="Try it" description="Ask a question against your synced mail.">
|
||||
<div className="flex flex-col gap-3">
|
||||
{settings.provider === 'public' && settings.publicProfiles.length > 0 && (
|
||||
{settings.provider === 'public' && (settings.publicProfiles.length > 0 || policy.publicPresets.length > 0) && (
|
||||
<SettingItem label="Answer with">
|
||||
<Select
|
||||
value={settings.activeProfileId ?? ''}
|
||||
onChange={(v) => update('activeProfileId', v)}
|
||||
options={settings.publicProfiles.map((p) => ({ value: p.id, label: p.name }))}
|
||||
options={[
|
||||
...policy.publicPresets.map((p) => ({ value: presetActiveId(p.id), label: `${p.name} (org)` })),
|
||||
...settings.publicProfiles.map((p) => ({ value: p.id, label: p.name })),
|
||||
]}
|
||||
/>
|
||||
</SettingItem>
|
||||
)}
|
||||
|
||||
@@ -46,6 +46,6 @@ describe('expandImportableEmails', () => {
|
||||
});
|
||||
|
||||
it('exposes the accept string for the file picker', () => {
|
||||
expect(EML_IMPORT_ACCEPT).toBe('.eml,.zip,message/rfc822,application/zip');
|
||||
expect(EML_IMPORT_ACCEPT).toBe('.eml,.zip,.tgz,.tar.gz,message/rfc822,application/zip,application/gzip');
|
||||
});
|
||||
});
|
||||
|
||||
@@ -0,0 +1,87 @@
|
||||
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
||||
import { DEFAULT_AI_ENTITLEMENT, DEFAULT_AI_POLICY, type AiPolicy } from '../types';
|
||||
import { loadAiSettings } from '../local-settings';
|
||||
|
||||
const { listOpencodeModels } = vi.hoisted(() => ({ listOpencodeModels: vi.fn() }));
|
||||
vi.mock('../local-client', () => ({ listOpencodeModels }));
|
||||
|
||||
const { discoverLocalOllama, recommendDefaultModel } = vi.hoisted(() => ({
|
||||
discoverLocalOllama: vi.fn(),
|
||||
recommendDefaultModel: vi.fn(),
|
||||
}));
|
||||
vi.mock('../local-discovery', () => ({ discoverLocalOllama, recommendDefaultModel }));
|
||||
|
||||
const { supportsLocalLlm } = vi.hoisted(() => ({ supportsLocalLlm: vi.fn(() => true) }));
|
||||
vi.mock('../../platform-capabilities', () => ({ supportsLocalLlm }));
|
||||
|
||||
// Imported after the mocks so it picks up the mocked modules.
|
||||
const { ensureDefaultProvider, _resetAutoProvisionForTests } = await import('../auto-provision');
|
||||
|
||||
function policyWith(classes: AiPolicy['entitlement']['classes']): AiPolicy {
|
||||
return { ...DEFAULT_AI_POLICY, entitlement: { ...DEFAULT_AI_ENTITLEMENT, classes } };
|
||||
}
|
||||
|
||||
describe('ensureDefaultProvider', () => {
|
||||
beforeEach(() => {
|
||||
window.localStorage.clear();
|
||||
_resetAutoProvisionForTests();
|
||||
listOpencodeModels.mockReset();
|
||||
discoverLocalOllama.mockReset();
|
||||
recommendDefaultModel.mockReset();
|
||||
supportsLocalLlm.mockReturnValue(true);
|
||||
});
|
||||
afterEach(() => {
|
||||
vi.unstubAllGlobals();
|
||||
});
|
||||
|
||||
it('prefers OpenCode when it has a usable model', async () => {
|
||||
listOpencodeModels.mockResolvedValue([{ ref: 'opencode/deepseek-v4-flash-free', label: 'DeepSeek V4 Flash Free' }]);
|
||||
|
||||
const next = await ensureDefaultProvider(policyWith(['opencode', 'local']));
|
||||
|
||||
expect(next.provider).toBe('opencode');
|
||||
expect(next.opencodeModel).toBe('opencode/deepseek-v4-flash-free');
|
||||
expect(discoverLocalOllama).not.toHaveBeenCalled();
|
||||
expect(loadAiSettings().provider).toBe('opencode'); // persisted, not just returned
|
||||
});
|
||||
|
||||
it('falls back to Ollama when OpenCode is unreachable', async () => {
|
||||
listOpencodeModels.mockRejectedValue(new Error('No local OpenCode server is running'));
|
||||
discoverLocalOllama.mockResolvedValue({ baseUrl: 'http://127.0.0.1:11434', models: [{ name: 'qwen2.5:32b' }] });
|
||||
recommendDefaultModel.mockReturnValue('qwen2.5:32b');
|
||||
|
||||
const next = await ensureDefaultProvider(policyWith(['opencode', 'local']));
|
||||
|
||||
expect(next.provider).toBe('local');
|
||||
expect(next.localModel).toBe('qwen2.5:32b');
|
||||
});
|
||||
|
||||
it('leaves provider unset when neither is available', async () => {
|
||||
listOpencodeModels.mockResolvedValue([]);
|
||||
discoverLocalOllama.mockResolvedValue(null);
|
||||
|
||||
const next = await ensureDefaultProvider(policyWith(['opencode', 'local']));
|
||||
|
||||
expect(next.provider).toBeNull();
|
||||
});
|
||||
|
||||
it('never overrides an explicit choice already saved', async () => {
|
||||
const { saveAiSettings, DEFAULT_AI_SETTINGS } = await import('../local-settings');
|
||||
saveAiSettings({ ...DEFAULT_AI_SETTINGS, provider: 'server', serverModel: 'qwen2.5:32b' });
|
||||
|
||||
const next = await ensureDefaultProvider(policyWith(['opencode', 'local', 'server']));
|
||||
|
||||
expect(next.provider).toBe('server');
|
||||
expect(listOpencodeModels).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('only probes once per module lifetime even if called again', async () => {
|
||||
listOpencodeModels.mockResolvedValue([]);
|
||||
discoverLocalOllama.mockResolvedValue(null);
|
||||
|
||||
await ensureDefaultProvider(policyWith(['opencode', 'local']));
|
||||
await ensureDefaultProvider(policyWith(['opencode', 'local']));
|
||||
|
||||
expect(listOpencodeModels).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,81 @@
|
||||
import { describe, it, expect, vi, afterEach } from 'vitest';
|
||||
import { chatPublic, chatPublicManaged } from '../local-client';
|
||||
|
||||
describe('chatPublic', () => {
|
||||
afterEach(() => {
|
||||
vi.unstubAllGlobals();
|
||||
});
|
||||
|
||||
it('turns a network/CORS-level failure into an actionable message naming the Base URL', async () => {
|
||||
vi.stubGlobal('fetch', vi.fn().mockRejectedValue(new TypeError('Failed to fetch')));
|
||||
|
||||
await expect(
|
||||
chatPublic('https://platform.deepseek.com/', 'sk-test', 'deepseek-chat', [
|
||||
{ role: 'user', content: 'hi' },
|
||||
]),
|
||||
).rejects.toThrow(/Could not reach https:\/\/platform\.deepseek\.com\/chat\/completions/);
|
||||
});
|
||||
|
||||
it('still reports the provider-returned status when the request completes', async () => {
|
||||
vi.stubGlobal(
|
||||
'fetch',
|
||||
vi.fn().mockResolvedValue({ ok: false, status: 401, json: async () => ({}) }),
|
||||
);
|
||||
|
||||
await expect(
|
||||
chatPublic('https://api.deepseek.com', 'sk-bad', 'deepseek-chat', [
|
||||
{ role: 'user', content: 'hi' },
|
||||
]),
|
||||
).rejects.toThrow('Provider returned 401');
|
||||
});
|
||||
|
||||
it('returns the message content on success', async () => {
|
||||
vi.stubGlobal(
|
||||
'fetch',
|
||||
vi.fn().mockResolvedValue({
|
||||
ok: true,
|
||||
status: 200,
|
||||
json: async () => ({ choices: [{ message: { content: 'hello there' } }] }),
|
||||
}),
|
||||
);
|
||||
|
||||
await expect(
|
||||
chatPublic('https://api.deepseek.com', 'sk-good', 'deepseek-chat', [
|
||||
{ role: 'user', content: 'hi' },
|
||||
]),
|
||||
).resolves.toBe('hello there');
|
||||
});
|
||||
});
|
||||
|
||||
describe('chatPublicManaged', () => {
|
||||
afterEach(() => {
|
||||
vi.unstubAllGlobals();
|
||||
});
|
||||
|
||||
it('posts presetId (never a key) to the same-origin route', async () => {
|
||||
const fetchMock = vi.fn().mockResolvedValue({
|
||||
ok: true,
|
||||
json: async () => ({ answer: 'hi from the org preset' }),
|
||||
});
|
||||
vi.stubGlobal('fetch', fetchMock);
|
||||
|
||||
const answer = await chatPublicManaged('preset-abc123', [{ role: 'user', content: 'hi' }]);
|
||||
|
||||
expect(answer).toBe('hi from the org preset');
|
||||
expect(fetchMock).toHaveBeenCalledWith('/api/ai/public/chat', expect.objectContaining({
|
||||
method: 'POST',
|
||||
body: JSON.stringify({ presetId: 'preset-abc123', messages: [{ role: 'user', content: 'hi' }] }),
|
||||
}));
|
||||
});
|
||||
|
||||
it('surfaces the server-side error (e.g. env var not set) verbatim', async () => {
|
||||
vi.stubGlobal('fetch', vi.fn().mockResolvedValue({
|
||||
ok: false,
|
||||
status: 503,
|
||||
json: async () => ({ error: 'Env var "DEEPSEEK_API_KEY" is not set on the server for preset "DeepSeek (org)"' }),
|
||||
}));
|
||||
|
||||
await expect(chatPublicManaged('preset-abc123', [{ role: 'user', content: 'hi' }]))
|
||||
.rejects.toThrow(/Env var "DEEPSEEK_API_KEY" is not set/);
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,22 @@
|
||||
import { describe, it, expect } from 'vitest';
|
||||
import { presetActiveId, isPresetActiveId, presetIdFromActiveId } from '../local-settings';
|
||||
|
||||
describe('preset active-id helpers', () => {
|
||||
it('round-trips a preset id through the prefixed activeProfileId space', () => {
|
||||
const activeId = presetActiveId('preset-abc123');
|
||||
expect(activeId).toBe('preset:preset-abc123');
|
||||
expect(isPresetActiveId(activeId)).toBe(true);
|
||||
expect(presetIdFromActiveId(activeId)).toBe('preset-abc123');
|
||||
});
|
||||
|
||||
it('does not mistake a personal profile id for a preset id', () => {
|
||||
const profileId = 'profile-xyz789-abc123';
|
||||
expect(isPresetActiveId(profileId)).toBe(false);
|
||||
expect(presetIdFromActiveId(profileId)).toBeNull();
|
||||
});
|
||||
|
||||
it('handles null safely', () => {
|
||||
expect(isPresetActiveId(null)).toBe(false);
|
||||
expect(presetIdFromActiveId(null)).toBeNull();
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,66 @@
|
||||
// First-run, zero-config default provider (product decision 2026-08-07:
|
||||
// "user wants to use AI so set the local one to on always by default" — not
|
||||
// "user wants to configure AI"). Before this, a fresh install left
|
||||
// `settings.provider` at `null` and every AI entry point just told the user
|
||||
// to go set one up in Settings.
|
||||
//
|
||||
// Priority: OpenCode first, then Ollama. OpenCode is the one local option
|
||||
// this app controls end to end — electron/main.ts auto-spawns
|
||||
// `opencode serve` itself, so "OpenCode has a model" only depends on what's
|
||||
// already authenticated in its own auth.json, not on the user having
|
||||
// installed anything separately. Ollama is second because it's an external
|
||||
// dependency the user must have installed and started themselves — real,
|
||||
// but not zero-config the way OpenCode is here.
|
||||
//
|
||||
// Never overrides an explicit choice: fires only while `provider` is still
|
||||
// `null`, and at most once per page load (module-level `attempted`) so a
|
||||
// component re-mounting doesn't re-probe on every render.
|
||||
import { loadAiSettings, saveAiSettings, type AiLocalSettings } from './local-settings';
|
||||
import { listOpencodeModels } from './local-client';
|
||||
import { discoverLocalOllama, recommendDefaultModel } from './local-discovery';
|
||||
import { supportsLocalLlm } from '../platform-capabilities';
|
||||
import type { AiPolicy } from './types';
|
||||
|
||||
let attempted = false;
|
||||
|
||||
/** Test-only: lets a fresh module state be simulated without a full reload. */
|
||||
export function _resetAutoProvisionForTests(): void {
|
||||
attempted = false;
|
||||
}
|
||||
|
||||
export async function ensureDefaultProvider(policy: AiPolicy): Promise<AiLocalSettings> {
|
||||
const current = loadAiSettings();
|
||||
if (current.provider !== null || attempted) return current;
|
||||
attempted = true;
|
||||
|
||||
if (policy.entitlement.classes.includes('opencode')) {
|
||||
try {
|
||||
const models = await listOpencodeModels();
|
||||
if (models[0]) {
|
||||
const next: AiLocalSettings = { ...current, provider: 'opencode', opencodeModel: models[0].ref };
|
||||
saveAiSettings(next);
|
||||
return next;
|
||||
}
|
||||
} catch {
|
||||
// opencode not reachable yet (still starting, or the CLI isn't
|
||||
// installed) — fall through to Ollama rather than surfacing an error
|
||||
// for a default the user never asked for.
|
||||
}
|
||||
}
|
||||
|
||||
if (supportsLocalLlm() && policy.entitlement.classes.includes('local')) {
|
||||
const discovery = await discoverLocalOllama();
|
||||
if (discovery) {
|
||||
const recommended = recommendDefaultModel(discovery.models) ?? discovery.models[0]?.name ?? null;
|
||||
if (recommended) {
|
||||
const next: AiLocalSettings = {
|
||||
...current, provider: 'local', localBaseUrl: discovery.baseUrl, localModel: recommended,
|
||||
};
|
||||
saveAiSettings(next);
|
||||
return next;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return current;
|
||||
}
|
||||
+48
-2
@@ -135,7 +135,10 @@ export async function chatPublic(
|
||||
model: string,
|
||||
messages: ChatMessage[],
|
||||
): Promise<string> {
|
||||
const res = await fetch(`${baseUrl.replace(/\/+$/, '')}/chat/completions`, {
|
||||
const url = `${baseUrl.replace(/\/+$/, '')}/chat/completions`;
|
||||
let res: Response;
|
||||
try {
|
||||
res = await fetch(url, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
@@ -143,6 +146,22 @@ export async function chatPublic(
|
||||
},
|
||||
body: JSON.stringify({ model, messages }),
|
||||
});
|
||||
} catch {
|
||||
// A request that never got a response (DNS failure, TLS failure, or -
|
||||
// by far the most common cause in practice - a CORS preflight the
|
||||
// target rejected) surfaces to fetch() as a bare, undifferentiated
|
||||
// "TypeError: Failed to fetch" with no status code to inspect. Verified
|
||||
// live: a Base URL pointing at a provider's website instead of its API
|
||||
// (platform.deepseek.com vs api.deepseek.com) fails exactly this way,
|
||||
// the preflight OPTIONS getting a 403 with no Access-Control-* headers
|
||||
// at all. Naming the Base URL is the one actionable thing this error
|
||||
// can tell the user, since the browser gives back nothing else.
|
||||
throw new Error(
|
||||
`Could not reach ${url} — check the Base URL is the provider's API endpoint, not its ` +
|
||||
'website or console (e.g. api.deepseek.com, not platform.deepseek.com), and that it ' +
|
||||
'allows being called directly from a browser.',
|
||||
);
|
||||
}
|
||||
if (!res.ok) throw new Error(`Provider returned ${res.status}`);
|
||||
const body = (await res.json()) as OpenAiChatResponse;
|
||||
const content = body.choices?.[0]?.message?.content;
|
||||
@@ -150,6 +169,24 @@ export async function chatPublic(
|
||||
return content;
|
||||
}
|
||||
|
||||
// ── Public, admin-managed presets — the Paperclip-style alternative to
|
||||
// pasting a personal key (decision 2026-08-07). The client only ever sends a
|
||||
// presetId; the server resolves the actual key from its own environment (see
|
||||
// app/api/ai/public/chat/route.ts) and makes the call itself, which also
|
||||
// sidesteps the CORS/wrong-base-URL failure class chatPublic is exposed to. ──
|
||||
|
||||
export async function chatPublicManaged(presetId: string, messages: ChatMessage[]): Promise<string> {
|
||||
const res = await fetch('/api/ai/public/chat', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ presetId, messages }),
|
||||
});
|
||||
const body = await res.json().catch(() => ({}));
|
||||
if (!res.ok) throw new Error(body?.error || `Provider returned ${res.status}`);
|
||||
if (!body?.answer) throw new Error('Provider returned no message content');
|
||||
return body.answer as string;
|
||||
}
|
||||
|
||||
// ── OpenCode: a locally-running `opencode serve` (github.com/sst/opencode),
|
||||
// the same agent runtime Paperclip drives as an adapter. Reached through THIS
|
||||
// app's own backend (app/api/ai/opencode/*) rather than directly, for the same
|
||||
@@ -419,7 +456,12 @@ export interface AskConfig {
|
||||
localBaseUrl: string;
|
||||
localModel: string | null;
|
||||
serverModel: string | null;
|
||||
/** Personal BYOK profile — mutually exclusive with publicPresetId; the
|
||||
* caller sets exactly one depending on which the user picked. */
|
||||
publicProfile: ResolvedPublicProfile | null;
|
||||
/** Admin-managed preset id (see chatPublicManaged) — mutually exclusive
|
||||
* with publicProfile. */
|
||||
publicPresetId?: string | null;
|
||||
opencodeModel?: string | null;
|
||||
/** Cookie slot of the account whose local index should be searched. Omitting
|
||||
* it reads whichever account the resolver finds first — see fetchLocalLeg. */
|
||||
@@ -433,7 +475,7 @@ export async function askMail(question: string, config: AskConfig): Promise<AskR
|
||||
if (config.provider === 'server' && !config.serverModel) {
|
||||
throw new Error('No server model selected');
|
||||
}
|
||||
if (config.provider === 'public' && !config.publicProfile) {
|
||||
if (config.provider === 'public' && !config.publicProfile && !config.publicPresetId) {
|
||||
throw new Error('No provider profile selected');
|
||||
}
|
||||
if (config.provider === 'opencode' && !config.opencodeModel) {
|
||||
@@ -448,8 +490,12 @@ export async function askMail(question: string, config: AskConfig): Promise<AskR
|
||||
let answer: string;
|
||||
let seatJustAssigned = false;
|
||||
if (config.provider === 'public') {
|
||||
if (config.publicPresetId) {
|
||||
answer = await chatPublicManaged(config.publicPresetId, messages);
|
||||
} else {
|
||||
const profile = config.publicProfile as ResolvedPublicProfile;
|
||||
answer = await chatPublic(profile.baseUrl, profile.apiKey, profile.model, messages);
|
||||
}
|
||||
} else if (config.provider === 'server') {
|
||||
const result = await chatServer(config.serverModel as string, messages);
|
||||
answer = result.answer;
|
||||
|
||||
@@ -50,6 +50,26 @@ function newProfileId(): string {
|
||||
return `profile-${Math.random().toString(36).slice(2, 10)}-${Math.random().toString(36).slice(2, 10)}`;
|
||||
}
|
||||
|
||||
/**
|
||||
* `activeProfileId` names either a personal BYOK profile (its own id, as
|
||||
* always) or an admin-managed preset (see PublicAiPreset), prefixed so the
|
||||
* two id spaces can never collide without adding a second field everywhere
|
||||
* that reads/writes activeProfileId.
|
||||
*/
|
||||
const PRESET_PREFIX = 'preset:';
|
||||
|
||||
export function presetActiveId(presetId: string): string {
|
||||
return PRESET_PREFIX + presetId;
|
||||
}
|
||||
|
||||
export function isPresetActiveId(activeId: string | null): boolean {
|
||||
return !!activeId && activeId.startsWith(PRESET_PREFIX);
|
||||
}
|
||||
|
||||
export function presetIdFromActiveId(activeId: string | null): string | null {
|
||||
return activeId && activeId.startsWith(PRESET_PREFIX) ? activeId.slice(PRESET_PREFIX.length) : null;
|
||||
}
|
||||
|
||||
/** One-time upgrade from the earlier single-profile shape (a bare
|
||||
* publicBaseUrl/publicModel pair) into the profile list, so a browser that
|
||||
* already saved settings before profiles existed doesn't just lose them. */
|
||||
|
||||
@@ -22,6 +22,33 @@
|
||||
|
||||
export type AiClass = 'local' | 'server' | 'public' | 'opencode';
|
||||
|
||||
/**
|
||||
* An admin-published, server-managed `public`-class provider — the
|
||||
* Paperclip-style alternative to a user pasting their own key (decision
|
||||
* 2026-08-07): the admin names an env var (e.g. "DEEPSEEK_API_KEY") instead
|
||||
* of typing a secret value anywhere in this config. The actual value is
|
||||
* whatever ops has set in the server's real environment (k8s secret, .env,
|
||||
* Electron packaging) — same custody model as the existing AI_SERVER_BASE_URL
|
||||
* var, just admin-nameable instead of hardcoded. Resolved server-side only,
|
||||
* in app/api/ai/public/chat/route.ts; never sent to a browser.
|
||||
*/
|
||||
export interface PublicAiPreset {
|
||||
id: string;
|
||||
name: string;
|
||||
baseUrl: string;
|
||||
model: string;
|
||||
apiKeyEnvVar: string;
|
||||
}
|
||||
|
||||
/** What a client is allowed to know about a preset — no baseUrl/apiKeyEnvVar,
|
||||
* since the client only ever refers to a preset by id and never calls the
|
||||
* provider itself. */
|
||||
export interface PublicAiPresetOption {
|
||||
id: string;
|
||||
name: string;
|
||||
model: string;
|
||||
}
|
||||
|
||||
export interface AiEntitlement {
|
||||
licensed: boolean;
|
||||
subject: 'user' | 'tenant';
|
||||
@@ -45,6 +72,9 @@ export interface AiPolicy {
|
||||
/** Base-URL prefixes a BYOK profile's baseUrl must match. null = unrestricted
|
||||
* (today's behavior). Advisory/client-side only — see spec §6.1. */
|
||||
publicProviderAllowlist: string[] | null;
|
||||
/** Admin-managed provider presets available to every user (see
|
||||
* PublicAiPreset) — sanitized to {id,name,model} for the client. */
|
||||
publicPresets: PublicAiPresetOption[];
|
||||
}
|
||||
|
||||
export const DEFAULT_AI_ENTITLEMENT: AiEntitlement = {
|
||||
@@ -63,6 +93,7 @@ export const DEFAULT_AI_POLICY: AiPolicy = {
|
||||
retrievalEnabled: true,
|
||||
consent: null,
|
||||
publicProviderAllowlist: null,
|
||||
publicPresets: [],
|
||||
};
|
||||
|
||||
// Admin-authored console config (docs/AI-ASSISTANT-CONCEPT.md §6 /
|
||||
@@ -83,6 +114,10 @@ export interface AiConsoleConfig {
|
||||
/** null = unrestricted BYOK base URLs (today's behavior, unchanged).
|
||||
* Non-null = base URL must start with one of these prefixes. */
|
||||
publicProviderAllowlist: string[] | null;
|
||||
/** Server-managed `public`-class presets — the Paperclip-style env-var-key
|
||||
* picker (decision 2026-08-07). Empty by default; adding one here is what
|
||||
* makes it show up in every user's Settings picker and in AiPolicy.publicPresets. */
|
||||
publicPresets: PublicAiPreset[];
|
||||
/** Master switch for the retrieval leg (mail-content → embeddings).
|
||||
* Independent of classesEnabled.server. Defaults true. */
|
||||
retrievalEnabled: boolean;
|
||||
@@ -93,6 +128,7 @@ export const DEFAULT_AI_CONSOLE_CONFIG: AiConsoleConfig = {
|
||||
classesEnabled: {},
|
||||
serverModelAllowlist: null,
|
||||
publicProviderAllowlist: null,
|
||||
publicPresets: [],
|
||||
retrievalEnabled: true,
|
||||
consent: null,
|
||||
};
|
||||
|
||||
+167
-10
@@ -567,7 +567,8 @@
|
||||
"copied": "تم النسخ!",
|
||||
"copy_failed": "فشل النسخ"
|
||||
},
|
||||
"send_now": "إرسال الآن"
|
||||
"send_now": "إرسال الآن",
|
||||
"create_appointment": "إنشاء موعد"
|
||||
},
|
||||
"email_composer": {
|
||||
"read_receipt_on": "إيصال القراءة مطلوب (انقر للتعطيل)",
|
||||
@@ -712,7 +713,10 @@
|
||||
"delete_table": "حذف الجدول",
|
||||
"pick_size": "اختيار الحجم"
|
||||
},
|
||||
"send_filing_warning": "تم الإرسال - لكن التنظيف بعد الإرسال فشل، وقد تبقى مسودة قديمة."
|
||||
"send_filing_warning": "تم الإرسال - لكن التنظيف بعد الإرسال فشل، وقد تبقى مسودة قديمة.",
|
||||
"insert_signature": "إدراج التوقيع",
|
||||
"no_signature": "لا يوجد توقيع",
|
||||
"select_signature": "اختيار التوقيع"
|
||||
},
|
||||
"confirm_dialog": {
|
||||
"confirm": "تأكيد",
|
||||
@@ -891,7 +895,10 @@
|
||||
"downloads": "التنزيلات",
|
||||
"content_senders": "المحتوى والمرسلون",
|
||||
"about_data": "حول والبيانات",
|
||||
"debug": "التصحيح"
|
||||
"debug": "التصحيح",
|
||||
"import": "استيراد",
|
||||
"sharing": "المشاركة",
|
||||
"signatures": "التوقيعات"
|
||||
},
|
||||
"tab_groups": {
|
||||
"general": "عام",
|
||||
@@ -2007,7 +2014,39 @@
|
||||
"preview": {
|
||||
"label": "معاينة"
|
||||
}
|
||||
}
|
||||
},
|
||||
"importer": {
|
||||
"action_label": "استيراد",
|
||||
"cancel": "إلغاء",
|
||||
"choose_files": "اختيار الملفات",
|
||||
"conflict_copy": "الاحتفاظ بالنسختين",
|
||||
"conflict_description": "اختر ما يجب فعله عند وجود رسالة مستوردة مسبقًا.",
|
||||
"conflict_label": "التعامل مع التكرار",
|
||||
"conflict_replace": "استبدال المكررات",
|
||||
"conflict_skip": "تخطي المكررات",
|
||||
"description": "استيراد رسائل البريد الإلكتروني من ملفات .eml إلى مجلد.",
|
||||
"error_details": "{count, plural, one {# خطأ} other {# أخطاء}}",
|
||||
"fail": "فشل الاستيراد",
|
||||
"file_description": "اختر ملف .eml واحدًا أو أكثر للاستيراد.",
|
||||
"file_label": "الملفات",
|
||||
"files_selected": "{count, plural, one {تم تحديد ملف واحد} other {تم تحديد # ملف}}",
|
||||
"folder_description": "اختر المجلد الذي سيتم استيراد الرسائل إليه.",
|
||||
"folder_label": "المجلد الوجهة",
|
||||
"import_complete": "اكتمل الاستيراد",
|
||||
"import_more": "استيراد المزيد",
|
||||
"importing": "جارٍ الاستيراد...",
|
||||
"progress_failed": "فشل {count}",
|
||||
"progress_imported": "تم استيراد {count}",
|
||||
"progress_skipped": "تم تخطي {count}",
|
||||
"start_import": "{count, plural, one {استيراد ملف واحد} other {استيراد # ملف}}",
|
||||
"success": "{count, plural, one {تم استيراد رسالة واحدة} other {تم استيراد # رسالة}}",
|
||||
"summary_failed": "{count, plural, one {فشلت رسالة واحدة} other {فشلت # رسالة}}",
|
||||
"summary_imported": "{count, plural, one {تم استيراد رسالة واحدة} other {تم استيراد # رسالة}}",
|
||||
"summary_skipped": "{count, plural, one {تم تخطي رسالة واحدة} other {تم تخطي # رسالة}}",
|
||||
"title": "استيراد البريد"
|
||||
},
|
||||
"loading": "جارٍ التحميل...",
|
||||
"refresh": "تحديث"
|
||||
},
|
||||
"errors": {
|
||||
"page_error_title": "حدث خطأ ما",
|
||||
@@ -2085,7 +2124,8 @@
|
||||
"toast_error_rename": "فشلت إعادة تسمية المجلد",
|
||||
"toast_error_delete": "فشل حذف المجلد",
|
||||
"toast_error_delete_has_children": "المجلد يحتوي على مجلدات فرعية. أزلها أولًا.",
|
||||
"toast_error_delete_has_email": "المجلد ليس فارغًا. أفرغه أولًا."
|
||||
"toast_error_delete_has_email": "المجلد ليس فارغًا. أفرغه أولًا.",
|
||||
"share_folder": "مشاركة المجلد..."
|
||||
},
|
||||
"shortcuts": {
|
||||
"title": "اختصارات لوحة المفاتيح",
|
||||
@@ -2184,7 +2224,11 @@
|
||||
"save": "حفظ الهوية",
|
||||
"cancel": "إلغاء",
|
||||
"creating": "جارٍ الإنشاء...",
|
||||
"updating": "جارٍ التحديث..."
|
||||
"updating": "جارٍ التحديث...",
|
||||
"signature_store_default": "التوقيع الافتراضي",
|
||||
"signature_store_mapping": "تعيين التوقيع",
|
||||
"signature_store_reply": "توقيع الرد",
|
||||
"use_global_default": "استخدام الافتراضي العام"
|
||||
},
|
||||
"sub_address": {
|
||||
"button_tooltip": "استخدام عنوان فرعي",
|
||||
@@ -2511,7 +2555,29 @@
|
||||
"success": "{count, plural, one {تم استيراد جهة اتصال واحدة} other {تم استيراد # جهة اتصال}}",
|
||||
"failed": "فشل الاستيراد",
|
||||
"close": "إغلاق",
|
||||
"file_too_large": "الملف كبير جدًا (الحد الأقصى 5 ميغابايت)"
|
||||
"file_too_large": "الملف كبير جدًا (الحد الأقصى 5 ميغابايت)",
|
||||
"csv_address": "العنوان",
|
||||
"csv_address_book": "دفتر العناوين",
|
||||
"csv_back": "رجوع",
|
||||
"csv_city": "المدينة",
|
||||
"csv_company": "الشركة",
|
||||
"csv_country": "البلد",
|
||||
"csv_email": "البريد الإلكتروني",
|
||||
"csv_first_name": "الاسم الأول",
|
||||
"csv_ignore": "تجاهل هذا العمود",
|
||||
"csv_job_title": "المسمى الوظيفي",
|
||||
"csv_last_name": "الاسم الأخير",
|
||||
"csv_load_all": "تحميل الكل",
|
||||
"csv_map_columns": "تعيين الأعمدة",
|
||||
"csv_nickname": "الاسم المستعار",
|
||||
"csv_note": "ملاحظة",
|
||||
"csv_phone": "الهاتف",
|
||||
"csv_postcode": "الرمز البريدي",
|
||||
"csv_preview": "معاينة",
|
||||
"csv_preview_title": "معاينة ({count, plural, one {# صف} other {# صفوف}})",
|
||||
"csv_region": "المنطقة/الولاية",
|
||||
"csv_website": "الموقع الإلكتروني",
|
||||
"file_types_csv": "ملفات .csv"
|
||||
},
|
||||
"export": {
|
||||
"title": "تصدير جهات الاتصال",
|
||||
@@ -2569,7 +2635,10 @@
|
||||
"has_email": "لديه بريد إلكتروني",
|
||||
"has_phone": "لديه هاتف",
|
||||
"has_photo": "لديه صورة"
|
||||
}
|
||||
},
|
||||
"delete": "حذف",
|
||||
"edit": "تعديل",
|
||||
"send_email": "إرسال بريد إلكتروني"
|
||||
},
|
||||
"calendar": {
|
||||
"title": "التقويم",
|
||||
@@ -2988,6 +3057,36 @@
|
||||
"due_today": "اليوم",
|
||||
"due_tomorrow": "غدًا",
|
||||
"overdue": "متأخرة"
|
||||
},
|
||||
"delete": "حذف",
|
||||
"duplicate": "تكرار",
|
||||
"edit": "تعديل",
|
||||
"freeBusy": {
|
||||
"busy": "مشغول",
|
||||
"check": "التحقق من التوفر",
|
||||
"click_to_select": "انقر على فترة متاحة لتحديد هذا الوقت",
|
||||
"free": "متاح",
|
||||
"hide": "إخفاء التوفر",
|
||||
"loading": "جارٍ التحميل...",
|
||||
"no_participants": "أضف مشاركين للتحقق من التوفر.",
|
||||
"tentative": "مبدئي",
|
||||
"timezone": "المنطقة الزمنية",
|
||||
"title": "التوفر",
|
||||
"unavailable": "خارج المكتب",
|
||||
"unknown": "لا تتوفر معلومات"
|
||||
},
|
||||
"resources": {
|
||||
"clear_all": "مسح الكل",
|
||||
"filter_all": "الكل",
|
||||
"hide": "إخفاء الموارد",
|
||||
"no_resources": "لا توجد موارد متاحة",
|
||||
"remove": "إزالة {name}",
|
||||
"search_placeholder": "بحث في الموارد...",
|
||||
"title": "الموارد",
|
||||
"type_equipment": "المعدات",
|
||||
"type_other": "أخرى",
|
||||
"type_room": "الغرف",
|
||||
"type_vehicle": "المركبات"
|
||||
}
|
||||
},
|
||||
"sharing": {
|
||||
@@ -3011,7 +3110,14 @@
|
||||
"readWrite": "قراءة وكتابة",
|
||||
"manager": "مدير",
|
||||
"custom": "مخصص"
|
||||
}
|
||||
},
|
||||
"accept": "قبول",
|
||||
"decline": "رفض",
|
||||
"no_shares_by_me": "لم تشارك أي شيء بعد.",
|
||||
"no_shares_with_me": "لا توجد مجلدات مشتركة معك بعد.",
|
||||
"shared_by": "شارك بواسطة",
|
||||
"tab_shared_by_me": "مشترك مني",
|
||||
"tab_shared_with_me": "مشترك معي"
|
||||
},
|
||||
"advanced_search": {
|
||||
"title": "بحث متقدم",
|
||||
@@ -3176,7 +3282,8 @@
|
||||
"disabled_description": "قد تتسبب عمليات رفع الملفات الكبيرة عبر WebDAV في زعزعة استقرار Stalwart/RocksDB، بما في ذلك انهيارات نفاد الذاكرة واستخدام غير قابل للاسترجاع لمساحة القرص. قد لا تُحذف الملفات المحذوفة فورًا من مخزن الكائنات الثنائية. لا يُنصح بهذه الميزة لبيئات الإنتاج.",
|
||||
"stability_warning": "قد تتسبب عمليات رفع الملفات الكبيرة في زعزعة استقرار الخادم. قد لا تُحذف الملفات المحذوفة فورًا من التخزين. استخدمها بحذر.",
|
||||
"migration_title": "جارٍ تحديث ملفاتك…",
|
||||
"migration_description": "جارٍ تنظيم المجلدات والملفات في هيكلها الصحيح. يحدث هذا مرة واحدة فقط."
|
||||
"migration_description": "جارٍ تنظيم المجلدات والملفات في هيكلها الصحيح. يحدث هذا مرة واحدة فقط.",
|
||||
"send_as_attachment": "إرسال كمرفق"
|
||||
},
|
||||
"smime": {
|
||||
"your_certificates": "شهاداتك",
|
||||
@@ -3324,5 +3431,55 @@
|
||||
"install": "تثبيت",
|
||||
"dont_remind": "عدم التذكير مرة أخرى",
|
||||
"dismiss_aria": "تجاهل مطالبة التثبيت"
|
||||
},
|
||||
"signatures": {
|
||||
"add_signature": "إضافة توقيع",
|
||||
"default": "افتراضي",
|
||||
"default_signature": {
|
||||
"description": "يُستخدم للرسائل الجديدة ما لم يتم تجاوزه لكل هوية.",
|
||||
"label": "التوقيع الافتراضي"
|
||||
},
|
||||
"delete_message": "هل أنت متأكد أنك تريد حذف \"{name}\"؟ لا يمكن التراجع عن هذا.",
|
||||
"delete_title": "حذف التوقيع؟",
|
||||
"description": "إنشاء وإدارة توقيعات البريد الإلكتروني لاستخدامها عند الكتابة أو الرد.",
|
||||
"duplicate": "تكرار",
|
||||
"edit_signature": "تعديل التوقيع",
|
||||
"editor_label": "التوقيع",
|
||||
"html_preview_label": "معاينة HTML",
|
||||
"name_label": "الاسم",
|
||||
"name_placeholder": "مثال: العمل، الشخصي",
|
||||
"name_required": "الاسم مطلوب",
|
||||
"new_signature": "توقيع جديد",
|
||||
"no_signature": "لا يوجد توقيع",
|
||||
"no_signatures": "لا توجد توقيعات بعد",
|
||||
"per_identity_signatures": {
|
||||
"description": "تجاوز التوقيع الافتراضي وتوقيع الرد لهويات معينة.",
|
||||
"label": "توقيعات لكل هوية"
|
||||
},
|
||||
"plain_text_preview_label": "معاينة النص العادي",
|
||||
"reply": "رد",
|
||||
"reply_signature": {
|
||||
"description": "يُستخدم عند الرد أو إعادة التوجيه ما لم يتم تجاوزه لكل هوية.",
|
||||
"label": "توقيع الرد"
|
||||
},
|
||||
"show_editor": "إظهار المحرر",
|
||||
"show_preview": "إظهار المعاينة",
|
||||
"title": "التوقيعات",
|
||||
"toolbar": {
|
||||
"align_center": "توسيط",
|
||||
"align_left": "محاذاة لليسار",
|
||||
"align_right": "محاذاة لليمين",
|
||||
"bold": "غامق",
|
||||
"bullet_list": "قائمة نقطية",
|
||||
"italic": "مائل",
|
||||
"link": "رابط",
|
||||
"ordered_list": "قائمة مرقمة",
|
||||
"remove_color": "إزالة اللون",
|
||||
"strikethrough": "يتوسطه خط",
|
||||
"text_color": "لون النص",
|
||||
"underline": "تسطير"
|
||||
},
|
||||
"use_global_default": "استخدام الافتراضي العام",
|
||||
"your_signatures": "توقيعاتك ({count})"
|
||||
}
|
||||
}
|
||||
|
||||
+167
-10
@@ -567,7 +567,8 @@
|
||||
"copied": "Copiat!",
|
||||
"copy_failed": "No s'ha pogut copiar"
|
||||
},
|
||||
"send_now": "Envia ara"
|
||||
"send_now": "Envia ara",
|
||||
"create_appointment": "Crea una cita"
|
||||
},
|
||||
"email_composer": {
|
||||
"read_receipt_on": "Confirmació de lectura sol·licitada (feu clic per desactivar-la)",
|
||||
@@ -712,7 +713,10 @@
|
||||
"delete_table": "Elimina la taula",
|
||||
"pick_size": "Tria la mida"
|
||||
},
|
||||
"send_filing_warning": "Enviat, però la neteja posterior a l'enviament ha fallat; és possible que quedi un esborrany obsolet."
|
||||
"send_filing_warning": "Enviat, però la neteja posterior a l'enviament ha fallat; és possible que quedi un esborrany obsolet.",
|
||||
"insert_signature": "Insereix la signatura",
|
||||
"no_signature": "Sense signatura",
|
||||
"select_signature": "Selecciona la signatura"
|
||||
},
|
||||
"confirm_dialog": {
|
||||
"confirm": "Confirma",
|
||||
@@ -891,7 +895,10 @@
|
||||
"downloads": "Baixades",
|
||||
"content_senders": "Contingut i remitents",
|
||||
"about_data": "Quant a i dades",
|
||||
"debug": "Depuració"
|
||||
"debug": "Depuració",
|
||||
"import": "Importació",
|
||||
"sharing": "Compartició",
|
||||
"signatures": "Signatures"
|
||||
},
|
||||
"tab_groups": {
|
||||
"general": "General",
|
||||
@@ -2007,7 +2014,39 @@
|
||||
"preview": {
|
||||
"label": "Previsualització"
|
||||
}
|
||||
}
|
||||
},
|
||||
"importer": {
|
||||
"action_label": "Importa",
|
||||
"cancel": "Cancel·la",
|
||||
"choose_files": "Trieu els fitxers",
|
||||
"conflict_copy": "Conserva els dos",
|
||||
"conflict_description": "Trieu què s'ha de fer quan un missatge importat ja existeix.",
|
||||
"conflict_label": "Gestió de duplicats",
|
||||
"conflict_replace": "Reemplaça els duplicats",
|
||||
"conflict_skip": "Omet els duplicats",
|
||||
"description": "Importeu missatges de correu des de fitxers .eml a una carpeta.",
|
||||
"error_details": "{count, plural, one {# error} other {# errors}}",
|
||||
"fail": "Ha fallat la importació",
|
||||
"file_description": "Seleccioneu un o més fitxers .eml per importar.",
|
||||
"file_label": "Fitxers",
|
||||
"files_selected": "{count, plural, one {# fitxer seleccionat} other {# fitxers seleccionats}}",
|
||||
"folder_description": "Trieu la carpeta on importar els missatges.",
|
||||
"folder_label": "Carpeta de destinació",
|
||||
"import_complete": "Importació completada",
|
||||
"import_more": "Importa'n més",
|
||||
"importing": "Important...",
|
||||
"progress_failed": "{count} fallits",
|
||||
"progress_imported": "{count} importats",
|
||||
"progress_skipped": "{count} omesos",
|
||||
"start_import": "{count, plural, one {Importa # fitxer} other {Importa # fitxers}}",
|
||||
"success": "{count, plural, one {# missatge importat} other {# missatges importats}}",
|
||||
"summary_failed": "{count, plural, one {# missatge fallit} other {# missatges fallits}}",
|
||||
"summary_imported": "{count, plural, one {# missatge importat} other {# missatges importats}}",
|
||||
"summary_skipped": "{count, plural, one {# missatge omès} other {# missatges omesos}}",
|
||||
"title": "Importa correu"
|
||||
},
|
||||
"loading": "Carregant...",
|
||||
"refresh": "Actualitza"
|
||||
},
|
||||
"errors": {
|
||||
"page_error_title": "S'ha produït un error",
|
||||
@@ -2085,7 +2124,8 @@
|
||||
"toast_error_rename": "No s'ha pogut canviar el nom de la carpeta",
|
||||
"toast_error_delete": "No s'ha pogut suprimir la carpeta",
|
||||
"toast_error_delete_has_children": "La carpeta té subcarpetes. Elimineu-les primer.",
|
||||
"toast_error_delete_has_email": "La carpeta no és buida. Buideu-la primer."
|
||||
"toast_error_delete_has_email": "La carpeta no és buida. Buideu-la primer.",
|
||||
"share_folder": "Comparteix la carpeta..."
|
||||
},
|
||||
"shortcuts": {
|
||||
"title": "Dreceres de teclat",
|
||||
@@ -2184,7 +2224,11 @@
|
||||
"save": "Desa la identitat",
|
||||
"cancel": "Cancel·la",
|
||||
"creating": "Creant...",
|
||||
"updating": "Actualitzant..."
|
||||
"updating": "Actualitzant...",
|
||||
"signature_store_default": "Signatura per defecte",
|
||||
"signature_store_mapping": "Assignació de signatures",
|
||||
"signature_store_reply": "Signatura de resposta",
|
||||
"use_global_default": "Utilitza el valor global per defecte"
|
||||
},
|
||||
"sub_address": {
|
||||
"button_tooltip": "Utilitza subadreça",
|
||||
@@ -2511,7 +2555,29 @@
|
||||
"success": "{count, plural, one {1 contacte importat} other {# contactes importats}}",
|
||||
"failed": "No s'ha pogut importar",
|
||||
"close": "Tanca",
|
||||
"file_too_large": "El fitxer és massa gran (màxim 5 MB)"
|
||||
"file_too_large": "El fitxer és massa gran (màxim 5 MB)",
|
||||
"csv_address": "Adreça",
|
||||
"csv_address_book": "Llibreta d'adreces",
|
||||
"csv_back": "Enrere",
|
||||
"csv_city": "Ciutat",
|
||||
"csv_company": "Empresa",
|
||||
"csv_country": "País",
|
||||
"csv_email": "Correu electrònic",
|
||||
"csv_first_name": "Nom",
|
||||
"csv_ignore": "Ignora aquesta columna",
|
||||
"csv_job_title": "Càrrec",
|
||||
"csv_last_name": "Cognom",
|
||||
"csv_load_all": "Carrega-ho tot",
|
||||
"csv_map_columns": "Assigna les columnes",
|
||||
"csv_nickname": "Sobrenom",
|
||||
"csv_note": "Nota",
|
||||
"csv_phone": "Telèfon",
|
||||
"csv_postcode": "Codi postal",
|
||||
"csv_preview": "Previsualització",
|
||||
"csv_preview_title": "Previsualització ({count, plural, one {# fila} other {# files}})",
|
||||
"csv_region": "Estat/Regió",
|
||||
"csv_website": "Lloc web",
|
||||
"file_types_csv": "fitxers .csv"
|
||||
},
|
||||
"export": {
|
||||
"title": "Exporta contactes",
|
||||
@@ -2569,7 +2635,10 @@
|
||||
"has_email": "Té correu electrònic",
|
||||
"has_phone": "Té telèfon",
|
||||
"has_photo": "Té foto"
|
||||
}
|
||||
},
|
||||
"delete": "Suprimeix",
|
||||
"edit": "Edita",
|
||||
"send_email": "Envia un correu"
|
||||
},
|
||||
"calendar": {
|
||||
"title": "Calendari",
|
||||
@@ -2988,6 +3057,36 @@
|
||||
"due_today": "Avui",
|
||||
"due_tomorrow": "Demà",
|
||||
"overdue": "Vençuda"
|
||||
},
|
||||
"delete": "Suprimeix",
|
||||
"duplicate": "Duplica",
|
||||
"edit": "Edita",
|
||||
"freeBusy": {
|
||||
"busy": "Ocupat",
|
||||
"check": "Comprova la disponibilitat",
|
||||
"click_to_select": "Feu clic en una franja lliure per seleccionar aquesta hora",
|
||||
"free": "Lliure",
|
||||
"hide": "Amaga la disponibilitat",
|
||||
"loading": "Carregant...",
|
||||
"no_participants": "Afegiu participants per comprovar la disponibilitat.",
|
||||
"tentative": "Provisional",
|
||||
"timezone": "Fus horari",
|
||||
"title": "Disponibilitat",
|
||||
"unavailable": "Fora de l'oficina",
|
||||
"unknown": "Sense informació"
|
||||
},
|
||||
"resources": {
|
||||
"clear_all": "Neteja-ho tot",
|
||||
"filter_all": "Tots",
|
||||
"hide": "Amaga els recursos",
|
||||
"no_resources": "No hi ha cap recurs disponible",
|
||||
"remove": "Elimina {name}",
|
||||
"search_placeholder": "Cerca recursos...",
|
||||
"title": "Recursos",
|
||||
"type_equipment": "Equipament",
|
||||
"type_other": "Altres",
|
||||
"type_room": "Sales",
|
||||
"type_vehicle": "Vehicles"
|
||||
}
|
||||
},
|
||||
"sharing": {
|
||||
@@ -3011,7 +3110,14 @@
|
||||
"readWrite": "Lectura i escriptura",
|
||||
"manager": "Gestor",
|
||||
"custom": "Personalitzat"
|
||||
}
|
||||
},
|
||||
"accept": "Accepta",
|
||||
"decline": "Rebutja",
|
||||
"no_shares_by_me": "Encara no heu compartit res.",
|
||||
"no_shares_with_me": "Encara no hi ha cap carpeta compartida amb vós.",
|
||||
"shared_by": "Compartit per",
|
||||
"tab_shared_by_me": "Compartit per mi",
|
||||
"tab_shared_with_me": "Compartit amb mi"
|
||||
},
|
||||
"advanced_search": {
|
||||
"title": "Cerca avançada",
|
||||
@@ -3176,7 +3282,8 @@
|
||||
"disabled_description": "Les pujades de fitxers grans via WebDAV poden causar inestabilitat a Stalwart/RocksDB, incloent-hi fallades per manca de memòria i ús de disc irrecuperable. És possible que els fitxers suprimits no s'eliminin immediatament de l'emmagatzematge de blobs. No es recomana aquesta funció per a entorns de producció.",
|
||||
"stability_warning": "Les pujades de fitxers grans poden causar inestabilitat al servidor. És possible que els fitxers suprimits no s'eliminin immediatament de l'emmagatzematge. Utilitzeu-ho amb precaució.",
|
||||
"migration_title": "Actualitzant els vostres fitxers…",
|
||||
"migration_description": "S'estan organitzant les carpetes i els fitxers en la seva estructura adequada. Això només passa una vegada."
|
||||
"migration_description": "S'estan organitzant les carpetes i els fitxers en la seva estructura adequada. Això només passa una vegada.",
|
||||
"send_as_attachment": "Envia com a fitxer adjunt"
|
||||
},
|
||||
"smime": {
|
||||
"your_certificates": "Els vostres certificats",
|
||||
@@ -3324,5 +3431,55 @@
|
||||
"install": "Instal·la",
|
||||
"dont_remind": "No m'ho tornis a recordar",
|
||||
"dismiss_aria": "Descarta l'avís d'instal·lació"
|
||||
},
|
||||
"signatures": {
|
||||
"add_signature": "Afegeix una signatura",
|
||||
"default": "Per defecte",
|
||||
"default_signature": {
|
||||
"description": "S'utilitza per als missatges nous llevat que se substitueixi per identitat.",
|
||||
"label": "Signatura per defecte"
|
||||
},
|
||||
"delete_message": "Segur que voleu suprimir «{name}»? Aquesta acció no es pot desfer.",
|
||||
"delete_title": "Voleu suprimir la signatura?",
|
||||
"description": "Creeu i gestioneu signatures de correu electrònic per utilitzar-les en redactar o respondre.",
|
||||
"duplicate": "Duplica",
|
||||
"edit_signature": "Edita la signatura",
|
||||
"editor_label": "Signatura",
|
||||
"html_preview_label": "Previsualització HTML",
|
||||
"name_label": "Nom",
|
||||
"name_placeholder": "p. ex. Feina, Personal",
|
||||
"name_required": "El nom és obligatori",
|
||||
"new_signature": "Signatura nova",
|
||||
"no_signature": "Sense signatura",
|
||||
"no_signatures": "Encara no hi ha cap signatura",
|
||||
"per_identity_signatures": {
|
||||
"description": "Substituïu la signatura per defecte i la de resposta per a identitats concretes.",
|
||||
"label": "Signatures per identitat"
|
||||
},
|
||||
"plain_text_preview_label": "Previsualització de text sense format",
|
||||
"reply": "Resposta",
|
||||
"reply_signature": {
|
||||
"description": "S'utilitza en respondre o reenviar llevat que se substitueixi per identitat.",
|
||||
"label": "Signatura de resposta"
|
||||
},
|
||||
"show_editor": "Mostra l'editor",
|
||||
"show_preview": "Mostra la previsualització",
|
||||
"title": "Signatures",
|
||||
"toolbar": {
|
||||
"align_center": "Centra",
|
||||
"align_left": "Alinea a l'esquerra",
|
||||
"align_right": "Alinea a la dreta",
|
||||
"bold": "Negreta",
|
||||
"bullet_list": "Llista de pics",
|
||||
"italic": "Cursiva",
|
||||
"link": "Enllaç",
|
||||
"ordered_list": "Llista numerada",
|
||||
"remove_color": "Elimina el color",
|
||||
"strikethrough": "Ratllat",
|
||||
"text_color": "Color del text",
|
||||
"underline": "Subratllat"
|
||||
},
|
||||
"use_global_default": "Utilitza el valor global per defecte",
|
||||
"your_signatures": "Les vostres signatures ({count})"
|
||||
}
|
||||
}
|
||||
|
||||
+168
-11
@@ -567,7 +567,8 @@
|
||||
"copied": "Zkopírováno!",
|
||||
"copy_failed": "Kopírování se nezdařilo"
|
||||
},
|
||||
"send_now": "Odeslat nyní"
|
||||
"send_now": "Odeslat nyní",
|
||||
"create_appointment": "Vytvořit schůzku"
|
||||
},
|
||||
"email_composer": {
|
||||
"read_receipt_on": "Vyžádáno potvrzení o přečtení (kliknutím vypnete)",
|
||||
@@ -712,7 +713,10 @@
|
||||
"delete_table": "Odstranit tabulku",
|
||||
"pick_size": "Vybrat velikost"
|
||||
},
|
||||
"send_filing_warning": "Odesláno - ale následný úklid selhal, může zůstat zastaralý koncept."
|
||||
"send_filing_warning": "Odesláno - ale následný úklid selhal, může zůstat zastaralý koncept.",
|
||||
"insert_signature": "Vložit podpis",
|
||||
"no_signature": "Bez podpisu",
|
||||
"select_signature": "Vybrat podpis"
|
||||
},
|
||||
"confirm_dialog": {
|
||||
"confirm": "Potvrdit",
|
||||
@@ -888,7 +892,10 @@
|
||||
"downloads": "Stažené",
|
||||
"content_senders": "Obsah a odesílatelé",
|
||||
"about_data": "Info a data",
|
||||
"debug": "Ladění"
|
||||
"debug": "Ladění",
|
||||
"import": "Import",
|
||||
"sharing": "Sdílení",
|
||||
"signatures": "Podpisy"
|
||||
},
|
||||
"tab_groups": {
|
||||
"general": "Obecné",
|
||||
@@ -2007,7 +2014,39 @@
|
||||
"scoped": {
|
||||
"back": "Zpět na můj účet",
|
||||
"managing": "Správa: {name}"
|
||||
}
|
||||
},
|
||||
"importer": {
|
||||
"action_label": "Importovat",
|
||||
"cancel": "Zrušit",
|
||||
"choose_files": "Vybrat soubory",
|
||||
"conflict_copy": "Ponechat obě",
|
||||
"conflict_description": "Zvolte, co se má stát, pokud importovaná zpráva již existuje.",
|
||||
"conflict_label": "Zpracování duplicit",
|
||||
"conflict_replace": "Nahradit duplicity",
|
||||
"conflict_skip": "Přeskočit duplicity",
|
||||
"description": "Importovat e-mailové zprávy ze souborů .eml do složky.",
|
||||
"error_details": "{count, plural, one {# chyba} other {# chyb}}",
|
||||
"fail": "Import selhal",
|
||||
"file_description": "Vyberte jeden nebo více souborů .eml k importu.",
|
||||
"file_label": "Soubory",
|
||||
"files_selected": "{count, plural, one {# vybraný soubor} other {# vybraných souborů}}",
|
||||
"folder_description": "Vyberte složku, do které se mají zprávy importovat.",
|
||||
"folder_label": "Cílová složka",
|
||||
"import_complete": "Import dokončen",
|
||||
"import_more": "Importovat další",
|
||||
"importing": "Importování...",
|
||||
"progress_failed": "{count} selhalo",
|
||||
"progress_imported": "{count} importováno",
|
||||
"progress_skipped": "{count} přeskočeno",
|
||||
"start_import": "{count, plural, one {Importovat # soubor} other {Importovat # souborů}}",
|
||||
"success": "{count, plural, one {# zpráva importována} other {# zpráv importováno}}",
|
||||
"summary_failed": "{count, plural, one {# zpráva selhala} other {# zpráv selhalo}}",
|
||||
"summary_imported": "{count, plural, one {# zpráva importována} other {# zpráv importováno}}",
|
||||
"summary_skipped": "{count, plural, one {# zpráva přeskočena} other {# zpráv přeskočeno}}",
|
||||
"title": "Import pošty"
|
||||
},
|
||||
"loading": "Načítání...",
|
||||
"refresh": "Obnovit"
|
||||
},
|
||||
"errors": {
|
||||
"page_error_title": "Něco se pokazilo",
|
||||
@@ -2085,7 +2124,8 @@
|
||||
"toast_error_rename": "Nepodařilo se přejmenovat složku",
|
||||
"toast_error_delete": "Nepodařilo se smazat složku",
|
||||
"toast_error_delete_has_children": "Složka obsahuje podsložky. Nejprve je odstraňte.",
|
||||
"toast_error_delete_has_email": "Složka není prázdná. Nejprve ji vyprázdněte."
|
||||
"toast_error_delete_has_email": "Složka není prázdná. Nejprve ji vyprázdněte.",
|
||||
"share_folder": "Sdílet složku..."
|
||||
},
|
||||
"shortcuts": {
|
||||
"title": "Klávesové zkratky",
|
||||
@@ -2184,7 +2224,11 @@
|
||||
"save": "Uložit identitu",
|
||||
"cancel": "Zrušit",
|
||||
"creating": "Vytváření...",
|
||||
"updating": "Aktualizování..."
|
||||
"updating": "Aktualizování...",
|
||||
"signature_store_default": "Výchozí podpis",
|
||||
"signature_store_mapping": "Mapování podpisů",
|
||||
"signature_store_reply": "Podpis pro odpověď",
|
||||
"use_global_default": "Použít globální výchozí nastavení"
|
||||
},
|
||||
"sub_address": {
|
||||
"button_tooltip": "Použít subadresu",
|
||||
@@ -2510,7 +2554,29 @@
|
||||
"success": "{count, plural, one {Importován 1 kontakt} few {Importovány # kontakty} other {Importováno # kontaktů}}",
|
||||
"failed": "Import selhal",
|
||||
"close": "Zavřít",
|
||||
"file_too_large": "Soubor je příliš velký (max. 5 MB)"
|
||||
"file_too_large": "Soubor je příliš velký (max. 5 MB)",
|
||||
"csv_address": "Adresa",
|
||||
"csv_address_book": "Adresář",
|
||||
"csv_back": "Zpět",
|
||||
"csv_city": "Město",
|
||||
"csv_company": "Společnost",
|
||||
"csv_country": "Země",
|
||||
"csv_email": "E-mail",
|
||||
"csv_first_name": "Jméno",
|
||||
"csv_ignore": "Ignorovat tento sloupec",
|
||||
"csv_job_title": "Pracovní pozice",
|
||||
"csv_last_name": "Příjmení",
|
||||
"csv_load_all": "Načíst vše",
|
||||
"csv_map_columns": "Mapování sloupců",
|
||||
"csv_nickname": "Přezdívka",
|
||||
"csv_note": "Poznámka",
|
||||
"csv_phone": "Telefon",
|
||||
"csv_postcode": "PSČ",
|
||||
"csv_preview": "Náhled",
|
||||
"csv_preview_title": "Náhled ({count, plural, one {# řádek} other {# řádků}})",
|
||||
"csv_region": "Stát/kraj",
|
||||
"csv_website": "Webové stránky",
|
||||
"file_types_csv": "soubory .csv"
|
||||
},
|
||||
"export": {
|
||||
"title": "Exportovat kontakty",
|
||||
@@ -2569,7 +2635,10 @@
|
||||
"has_phone": "Má telefon",
|
||||
"has_photo": "Má fotku"
|
||||
},
|
||||
"open_categories": "Otevřít kategorie"
|
||||
"open_categories": "Otevřít kategorie",
|
||||
"delete": "Odstranit",
|
||||
"edit": "Upravit",
|
||||
"send_email": "Odeslat e-mail"
|
||||
},
|
||||
"calendar": {
|
||||
"title": "Kalendář",
|
||||
@@ -2988,7 +3057,37 @@
|
||||
"bah": "Bahman",
|
||||
"esf": "Esfand"
|
||||
},
|
||||
"nav_open_menu": "Otevřít nabídku"
|
||||
"nav_open_menu": "Otevřít nabídku",
|
||||
"delete": "Odstranit",
|
||||
"duplicate": "Duplikovat",
|
||||
"edit": "Upravit",
|
||||
"freeBusy": {
|
||||
"busy": "Obsazeno",
|
||||
"check": "Zkontrolovat dostupnost",
|
||||
"click_to_select": "Kliknutím na volný termín vyberte tento čas",
|
||||
"free": "Volno",
|
||||
"hide": "Skrýt dostupnost",
|
||||
"loading": "Načítání...",
|
||||
"no_participants": "Přidejte účastníky pro kontrolu dostupnosti.",
|
||||
"tentative": "Nezávazně",
|
||||
"timezone": "Časové pásmo",
|
||||
"title": "Dostupnost",
|
||||
"unavailable": "Mimo kancelář",
|
||||
"unknown": "Žádné informace"
|
||||
},
|
||||
"resources": {
|
||||
"clear_all": "Vymazat vše",
|
||||
"filter_all": "Vše",
|
||||
"hide": "Skrýt zdroje",
|
||||
"no_resources": "Nejsou k dispozici žádné zdroje",
|
||||
"remove": "Odebrat {name}",
|
||||
"search_placeholder": "Hledat zdroje...",
|
||||
"title": "Zdroje",
|
||||
"type_equipment": "Vybavení",
|
||||
"type_other": "Jiné",
|
||||
"type_room": "Místnosti",
|
||||
"type_vehicle": "Vozidla"
|
||||
}
|
||||
},
|
||||
"advanced_search": {
|
||||
"title": "Pokročilé hledání",
|
||||
@@ -3153,7 +3252,8 @@
|
||||
"open_folder_tree": "Otevřít strom složek",
|
||||
"other_accounts": "Ostatní účty",
|
||||
"migration_title": "Aktualizace vašich souborů…",
|
||||
"migration_description": "Uspořádání složek a souborů do správné struktury. Toto proběhne pouze jednou."
|
||||
"migration_description": "Uspořádání složek a souborů do správné struktury. Toto proběhne pouze jednou.",
|
||||
"send_as_attachment": "Odeslat jako přílohu"
|
||||
},
|
||||
"smime": {
|
||||
"your_certificates": "Vaše certifikáty",
|
||||
@@ -3308,7 +3408,14 @@
|
||||
"readWrite": "Čtení a zápis",
|
||||
"manager": "Správce",
|
||||
"custom": "Vlastní"
|
||||
}
|
||||
},
|
||||
"accept": "Přijmout",
|
||||
"decline": "Odmítnout",
|
||||
"no_shares_by_me": "Zatím jste nic nesdíleli.",
|
||||
"no_shares_with_me": "Zatím s vámi nikdo nesdílel žádné složky.",
|
||||
"shared_by": "Sdílí",
|
||||
"tab_shared_by_me": "Sdíleno mnou",
|
||||
"tab_shared_with_me": "Sdíleno se mnou"
|
||||
},
|
||||
"quote_header": {
|
||||
"reply_line": "Dne {date} napsal(a) {from}:",
|
||||
@@ -3324,5 +3431,55 @@
|
||||
"install": "Nainstalovat",
|
||||
"dont_remind": "Už mi to nepřipomínat",
|
||||
"dismiss_aria": "Zavřít výzvu k instalaci"
|
||||
},
|
||||
"signatures": {
|
||||
"add_signature": "Přidat podpis",
|
||||
"default": "Výchozí",
|
||||
"default_signature": {
|
||||
"description": "Použije se pro nové zprávy, pokud není přepsáno pro danou identitu.",
|
||||
"label": "Výchozí podpis"
|
||||
},
|
||||
"delete_message": "Opravdu chcete odstranit \"{name}\"? Tuto akci nelze vrátit zpět.",
|
||||
"delete_title": "Odstranit podpis?",
|
||||
"description": "Vytvářejte a spravujte e-mailové podpisy pro psaní zpráv nebo odpovědi.",
|
||||
"duplicate": "Duplikovat",
|
||||
"edit_signature": "Upravit podpis",
|
||||
"editor_label": "Podpis",
|
||||
"html_preview_label": "Náhled HTML",
|
||||
"name_label": "Název",
|
||||
"name_placeholder": "např. Práce, Osobní",
|
||||
"name_required": "Název je vyžadován",
|
||||
"new_signature": "Nový podpis",
|
||||
"no_signature": "Bez podpisu",
|
||||
"no_signatures": "Zatím nejsou žádné podpisy",
|
||||
"per_identity_signatures": {
|
||||
"description": "Přepsat výchozí podpis a podpis pro odpověď pro jednotlivé identity.",
|
||||
"label": "Podpisy podle identity"
|
||||
},
|
||||
"plain_text_preview_label": "Náhled prostého textu",
|
||||
"reply": "Odpověď",
|
||||
"reply_signature": {
|
||||
"description": "Použije se při odpovídání nebo přeposílání, pokud není přepsáno pro danou identitu.",
|
||||
"label": "Podpis pro odpověď"
|
||||
},
|
||||
"show_editor": "Zobrazit editor",
|
||||
"show_preview": "Zobrazit náhled",
|
||||
"title": "Podpisy",
|
||||
"toolbar": {
|
||||
"align_center": "Na střed",
|
||||
"align_left": "Zarovnat vlevo",
|
||||
"align_right": "Zarovnat vpravo",
|
||||
"bold": "Tučné",
|
||||
"bullet_list": "Odrážkový seznam",
|
||||
"italic": "Kurzíva",
|
||||
"link": "Odkaz",
|
||||
"ordered_list": "Číslovaný seznam",
|
||||
"remove_color": "Odebrat barvu",
|
||||
"strikethrough": "Přeškrtnuté",
|
||||
"text_color": "Barva textu",
|
||||
"underline": "Podtržené"
|
||||
},
|
||||
"use_global_default": "Použít globální výchozí nastavení",
|
||||
"your_signatures": "Vaše podpisy ({count})"
|
||||
}
|
||||
}
|
||||
|
||||
+168
-11
@@ -567,7 +567,8 @@
|
||||
"copied": "Kopieret!",
|
||||
"copy_failed": "Kunne ikke kopiere"
|
||||
},
|
||||
"send_now": "Send nu"
|
||||
"send_now": "Send nu",
|
||||
"create_appointment": "Create Appointment"
|
||||
},
|
||||
"email_composer": {
|
||||
"read_receipt_on": "Læsekvittering anmodet (klik for at deaktivere)",
|
||||
@@ -712,7 +713,10 @@
|
||||
"delete_table": "Slet tabel",
|
||||
"pick_size": "Vælg størrelse"
|
||||
},
|
||||
"send_filing_warning": "Sendt - men oprydningen bagefter mislykkedes, en forældet kladde kan blive stående."
|
||||
"send_filing_warning": "Sendt - men oprydningen bagefter mislykkedes, en forældet kladde kan blive stående.",
|
||||
"insert_signature": "Insert signature",
|
||||
"no_signature": "No signature",
|
||||
"select_signature": "Select signature"
|
||||
},
|
||||
"confirm_dialog": {
|
||||
"confirm": "Bekræft",
|
||||
@@ -891,7 +895,10 @@
|
||||
"downloads": "Downloads",
|
||||
"content_senders": "Indhold & afsendere",
|
||||
"about_data": "Om & data",
|
||||
"debug": "Debug"
|
||||
"debug": "Debug",
|
||||
"import": "Import",
|
||||
"sharing": "Sharing",
|
||||
"signatures": "Signatures"
|
||||
},
|
||||
"tab_groups": {
|
||||
"general": "Generelt",
|
||||
@@ -2007,7 +2014,39 @@
|
||||
"scoped": {
|
||||
"back": "Tilbage til min konto",
|
||||
"managing": "Administrerer: {name}"
|
||||
}
|
||||
},
|
||||
"importer": {
|
||||
"action_label": "Import",
|
||||
"cancel": "Cancel",
|
||||
"choose_files": "Choose files",
|
||||
"conflict_copy": "Keep both",
|
||||
"conflict_description": "Choose what to do when an imported message already exists.",
|
||||
"conflict_label": "Duplicate handling",
|
||||
"conflict_replace": "Replace duplicates",
|
||||
"conflict_skip": "Skip duplicates",
|
||||
"description": "Import email messages from .eml files into a folder.",
|
||||
"error_details": "{count, plural, one {# error} other {# errors}}",
|
||||
"fail": "Import failed",
|
||||
"file_description": "Select one or more .eml files to import.",
|
||||
"file_label": "Files",
|
||||
"files_selected": "{count, plural, one {# file selected} other {# files selected}}",
|
||||
"folder_description": "Choose the folder to import messages into.",
|
||||
"folder_label": "Destination folder",
|
||||
"import_complete": "Import complete",
|
||||
"import_more": "Import more",
|
||||
"importing": "Importing...",
|
||||
"progress_failed": "{count} failed",
|
||||
"progress_imported": "{count} imported",
|
||||
"progress_skipped": "{count} skipped",
|
||||
"start_import": "{count, plural, one {Import # file} other {Import # files}}",
|
||||
"success": "{count, plural, one {# message imported} other {# messages imported}}",
|
||||
"summary_failed": "{count, plural, one {# message failed} other {# messages failed}}",
|
||||
"summary_imported": "{count, plural, one {# message imported} other {# messages imported}}",
|
||||
"summary_skipped": "{count, plural, one {# message skipped} other {# messages skipped}}",
|
||||
"title": "Import Mail"
|
||||
},
|
||||
"loading": "Loading...",
|
||||
"refresh": "Refresh"
|
||||
},
|
||||
"errors": {
|
||||
"page_error_title": "Noget gik galt",
|
||||
@@ -2085,7 +2124,8 @@
|
||||
"toast_error_rename": "Kunne ikke omdøbe mappe",
|
||||
"toast_error_delete": "Kunne ikke slette mappe",
|
||||
"toast_error_delete_has_children": "Mappen har undermapper. Fjern dem først.",
|
||||
"toast_error_delete_has_email": "Mappen er ikke tom. Tøm den først."
|
||||
"toast_error_delete_has_email": "Mappen er ikke tom. Tøm den først.",
|
||||
"share_folder": "Share Folder..."
|
||||
},
|
||||
"shortcuts": {
|
||||
"title": "Tastaturgenveje",
|
||||
@@ -2184,7 +2224,11 @@
|
||||
"save": "Gem identitet",
|
||||
"cancel": "Annuller",
|
||||
"creating": "Opretter...",
|
||||
"updating": "Opdaterer..."
|
||||
"updating": "Opdaterer...",
|
||||
"signature_store_default": "Default signature",
|
||||
"signature_store_mapping": "Signature mapping",
|
||||
"signature_store_reply": "Reply signature",
|
||||
"use_global_default": "Use global default"
|
||||
},
|
||||
"sub_address": {
|
||||
"button_tooltip": "Brug underadresse",
|
||||
@@ -2510,7 +2554,29 @@
|
||||
"success": "{count, plural, one {1 kontakt importeret} other {# kontakter importeret}}",
|
||||
"failed": "Import mislykkedes",
|
||||
"close": "Luk",
|
||||
"file_too_large": "Filen er for stor (max 5 MB)"
|
||||
"file_too_large": "Filen er for stor (max 5 MB)",
|
||||
"csv_address": "Address",
|
||||
"csv_address_book": "Address book",
|
||||
"csv_back": "Back",
|
||||
"csv_city": "City",
|
||||
"csv_company": "Company",
|
||||
"csv_country": "Country",
|
||||
"csv_email": "Email",
|
||||
"csv_first_name": "First name",
|
||||
"csv_ignore": "Ignore this column",
|
||||
"csv_job_title": "Job title",
|
||||
"csv_last_name": "Last name",
|
||||
"csv_load_all": "Load all",
|
||||
"csv_map_columns": "Map columns",
|
||||
"csv_nickname": "Nickname",
|
||||
"csv_note": "Note",
|
||||
"csv_phone": "Phone",
|
||||
"csv_postcode": "Postal code",
|
||||
"csv_preview": "Preview",
|
||||
"csv_preview_title": "Preview ({count, plural, one {# row} other {# rows}})",
|
||||
"csv_region": "State/Region",
|
||||
"csv_website": "Website",
|
||||
"file_types_csv": ".csv files"
|
||||
},
|
||||
"export": {
|
||||
"title": "Eksportér kontakter",
|
||||
@@ -2569,7 +2635,10 @@
|
||||
"has_phone": "Har telefon",
|
||||
"has_photo": "Har billede"
|
||||
},
|
||||
"open_categories": "Åbn kategorier"
|
||||
"open_categories": "Åbn kategorier",
|
||||
"delete": "Delete",
|
||||
"edit": "Edit",
|
||||
"send_email": "Send email"
|
||||
},
|
||||
"calendar": {
|
||||
"title": "Kalender",
|
||||
@@ -2988,7 +3057,37 @@
|
||||
"due_tomorrow": "I morgen",
|
||||
"overdue": "Forfalden"
|
||||
},
|
||||
"nav_open_menu": "Åbn menu"
|
||||
"nav_open_menu": "Åbn menu",
|
||||
"delete": "Delete",
|
||||
"duplicate": "Duplicate",
|
||||
"edit": "Edit",
|
||||
"freeBusy": {
|
||||
"busy": "Busy",
|
||||
"check": "Check Availability",
|
||||
"click_to_select": "Click a free slot to select this time",
|
||||
"free": "Free",
|
||||
"hide": "Hide Availability",
|
||||
"loading": "Loading...",
|
||||
"no_participants": "Add participants to check availability.",
|
||||
"tentative": "Tentative",
|
||||
"timezone": "Timezone",
|
||||
"title": "Availability",
|
||||
"unavailable": "Out of office",
|
||||
"unknown": "No information"
|
||||
},
|
||||
"resources": {
|
||||
"clear_all": "Clear all",
|
||||
"filter_all": "All",
|
||||
"hide": "Hide resources",
|
||||
"no_resources": "No resources available",
|
||||
"remove": "Remove {name}",
|
||||
"search_placeholder": "Search resources...",
|
||||
"title": "Resources",
|
||||
"type_equipment": "Equipment",
|
||||
"type_other": "Other",
|
||||
"type_room": "Rooms",
|
||||
"type_vehicle": "Vehicles"
|
||||
}
|
||||
},
|
||||
"sharing": {
|
||||
"title": "Del \"{name}\"",
|
||||
@@ -3011,7 +3110,14 @@
|
||||
"readWrite": "Læs & skriv",
|
||||
"manager": "Administrator",
|
||||
"custom": "Brugerdefineret"
|
||||
}
|
||||
},
|
||||
"accept": "Accept",
|
||||
"decline": "Decline",
|
||||
"no_shares_by_me": "You haven't shared anything yet.",
|
||||
"no_shares_with_me": "No folders shared with you yet.",
|
||||
"shared_by": "Shared by",
|
||||
"tab_shared_by_me": "Shared by me",
|
||||
"tab_shared_with_me": "Shared with me"
|
||||
},
|
||||
"advanced_search": {
|
||||
"title": "Avanceret søgning",
|
||||
@@ -3176,7 +3282,8 @@
|
||||
"open_folder_tree": "Åbn mappetræ",
|
||||
"other_accounts": "Andre konti",
|
||||
"migration_title": "Opdaterer dine filer…",
|
||||
"migration_description": "Organiserer mapper og filer i deres rette struktur. Dette sker kun én gang."
|
||||
"migration_description": "Organiserer mapper og filer i deres rette struktur. Dette sker kun én gang.",
|
||||
"send_as_attachment": "Send as Attachment"
|
||||
},
|
||||
"smime": {
|
||||
"your_certificates": "Dine certifikater",
|
||||
@@ -3324,5 +3431,55 @@
|
||||
"install": "Installer",
|
||||
"dont_remind": "Påmind mig ikke igen",
|
||||
"dismiss_aria": "Afvis installationsprompt"
|
||||
},
|
||||
"signatures": {
|
||||
"add_signature": "Add signature",
|
||||
"default": "Default",
|
||||
"default_signature": {
|
||||
"description": "Used for new messages unless overridden per identity.",
|
||||
"label": "Default signature"
|
||||
},
|
||||
"delete_message": "Are you sure you want to delete \"{name}\"? This cannot be undone.",
|
||||
"delete_title": "Delete signature?",
|
||||
"description": "Create and manage email signatures to use when composing or replying.",
|
||||
"duplicate": "Duplicate",
|
||||
"edit_signature": "Edit signature",
|
||||
"editor_label": "Signature",
|
||||
"html_preview_label": "HTML preview",
|
||||
"name_label": "Name",
|
||||
"name_placeholder": "e.g., Work, Personal",
|
||||
"name_required": "Name is required",
|
||||
"new_signature": "New signature",
|
||||
"no_signature": "No signature",
|
||||
"no_signatures": "No signatures yet",
|
||||
"per_identity_signatures": {
|
||||
"description": "Override the default and reply signature for individual identities.",
|
||||
"label": "Per-identity signatures"
|
||||
},
|
||||
"plain_text_preview_label": "Plain text preview",
|
||||
"reply": "Reply",
|
||||
"reply_signature": {
|
||||
"description": "Used when replying or forwarding unless overridden per identity.",
|
||||
"label": "Reply signature"
|
||||
},
|
||||
"show_editor": "Show editor",
|
||||
"show_preview": "Show preview",
|
||||
"title": "Signatures",
|
||||
"toolbar": {
|
||||
"align_center": "Align center",
|
||||
"align_left": "Align left",
|
||||
"align_right": "Align right",
|
||||
"bold": "Bold",
|
||||
"bullet_list": "Bullet list",
|
||||
"italic": "Italic",
|
||||
"link": "Link",
|
||||
"ordered_list": "Ordered list",
|
||||
"remove_color": "Remove color",
|
||||
"strikethrough": "Strikethrough",
|
||||
"text_color": "Text color",
|
||||
"underline": "Underline"
|
||||
},
|
||||
"use_global_default": "Use global default",
|
||||
"your_signatures": "Your signatures ({count})"
|
||||
}
|
||||
}
|
||||
|
||||
+168
-11
@@ -567,7 +567,8 @@
|
||||
"copied": "Kopiert!",
|
||||
"copy_failed": "Kopieren fehlgeschlagen"
|
||||
},
|
||||
"send_now": "Jetzt senden"
|
||||
"send_now": "Jetzt senden",
|
||||
"create_appointment": "Termin erstellen"
|
||||
},
|
||||
"email_composer": {
|
||||
"read_receipt_on": "Lesebestätigung angefordert (klicken zum Deaktivieren)",
|
||||
@@ -712,7 +713,10 @@
|
||||
"delete_table": "Tabelle löschen",
|
||||
"pick_size": "Größe wählen"
|
||||
},
|
||||
"send_filing_warning": "Gesendet - aber das Aufräumen danach schlug fehl, evtl. bleibt ein alter Entwurf sichtbar."
|
||||
"send_filing_warning": "Gesendet - aber das Aufräumen danach schlug fehl, evtl. bleibt ein alter Entwurf sichtbar.",
|
||||
"insert_signature": "Signatur einfügen",
|
||||
"no_signature": "Keine Signatur",
|
||||
"select_signature": "Signatur auswählen"
|
||||
},
|
||||
"confirm_dialog": {
|
||||
"confirm": "Bestätigen",
|
||||
@@ -888,7 +892,10 @@
|
||||
"downloads": "Downloads",
|
||||
"content_senders": "Inhalte & Absender",
|
||||
"about_data": "Über & Daten",
|
||||
"debug": "Debug"
|
||||
"debug": "Debug",
|
||||
"import": "Import",
|
||||
"sharing": "Freigabe",
|
||||
"signatures": "Signaturen"
|
||||
},
|
||||
"tab_groups": {
|
||||
"general": "Allgemein",
|
||||
@@ -2007,7 +2014,39 @@
|
||||
"scoped": {
|
||||
"back": "Zurück zu meinem Konto",
|
||||
"managing": "Verwaltung: {name}"
|
||||
}
|
||||
},
|
||||
"importer": {
|
||||
"action_label": "Importieren",
|
||||
"cancel": "Abbrechen",
|
||||
"choose_files": "Dateien auswählen",
|
||||
"conflict_copy": "Beide behalten",
|
||||
"conflict_description": "Legen Sie fest, was geschehen soll, wenn eine importierte Nachricht bereits existiert.",
|
||||
"conflict_label": "Umgang mit Duplikaten",
|
||||
"conflict_replace": "Duplikate ersetzen",
|
||||
"conflict_skip": "Duplikate überspringen",
|
||||
"description": "Importieren Sie E-Mail-Nachrichten aus .eml-Dateien in einen Ordner.",
|
||||
"error_details": "{count, plural, one {# Fehler} other {# Fehler}}",
|
||||
"fail": "Import fehlgeschlagen",
|
||||
"file_description": "Wählen Sie eine oder mehrere .eml-Dateien zum Importieren aus.",
|
||||
"file_label": "Dateien",
|
||||
"files_selected": "{count, plural, one {# Datei ausgewählt} other {# Dateien ausgewählt}}",
|
||||
"folder_description": "Wählen Sie den Ordner, in den die Nachrichten importiert werden sollen.",
|
||||
"folder_label": "Zielordner",
|
||||
"import_complete": "Import abgeschlossen",
|
||||
"import_more": "Weitere importieren",
|
||||
"importing": "Wird importiert...",
|
||||
"progress_failed": "{count} fehlgeschlagen",
|
||||
"progress_imported": "{count} importiert",
|
||||
"progress_skipped": "{count} übersprungen",
|
||||
"start_import": "{count, plural, one {# Datei importieren} other {# Dateien importieren}}",
|
||||
"success": "{count, plural, one {# Nachricht importiert} other {# Nachrichten importiert}}",
|
||||
"summary_failed": "{count, plural, one {# Nachricht fehlgeschlagen} other {# Nachrichten fehlgeschlagen}}",
|
||||
"summary_imported": "{count, plural, one {# Nachricht importiert} other {# Nachrichten importiert}}",
|
||||
"summary_skipped": "{count, plural, one {# Nachricht übersprungen} other {# Nachrichten übersprungen}}",
|
||||
"title": "E-Mail importieren"
|
||||
},
|
||||
"loading": "Lädt...",
|
||||
"refresh": "Aktualisieren"
|
||||
},
|
||||
"errors": {
|
||||
"page_error_title": "Etwas ist schiefgelaufen",
|
||||
@@ -2085,7 +2124,8 @@
|
||||
"toast_error_rename": "Ordner konnte nicht umbenannt werden",
|
||||
"toast_error_delete": "Ordner konnte nicht gelöscht werden",
|
||||
"toast_error_delete_has_children": "Ordner enthält Unterordner. Entferne diese zuerst.",
|
||||
"toast_error_delete_has_email": "Ordner ist nicht leer. Leere ihn zuerst."
|
||||
"toast_error_delete_has_email": "Ordner ist nicht leer. Leere ihn zuerst.",
|
||||
"share_folder": "Ordner freigeben..."
|
||||
},
|
||||
"shortcuts": {
|
||||
"title": "Tastaturkürzel",
|
||||
@@ -2184,7 +2224,11 @@
|
||||
"save": "Identität speichern",
|
||||
"cancel": "Abbrechen",
|
||||
"creating": "Wird erstellt...",
|
||||
"updating": "Wird aktualisiert..."
|
||||
"updating": "Wird aktualisiert...",
|
||||
"signature_store_default": "Standardsignatur",
|
||||
"signature_store_mapping": "Signaturzuordnung",
|
||||
"signature_store_reply": "Antwortsignatur",
|
||||
"use_global_default": "Globalen Standard verwenden"
|
||||
},
|
||||
"sub_address": {
|
||||
"button_tooltip": "Sub-Adresse verwenden",
|
||||
@@ -2510,7 +2554,29 @@
|
||||
"success": "{count, plural, one {1 Kontakt importiert} other {# Kontakte importiert}}",
|
||||
"failed": "Import fehlgeschlagen",
|
||||
"close": "Schließen",
|
||||
"file_too_large": "Datei ist zu groß (max. 5 MB)"
|
||||
"file_too_large": "Datei ist zu groß (max. 5 MB)",
|
||||
"csv_address": "Adresse",
|
||||
"csv_address_book": "Adressbuch",
|
||||
"csv_back": "Zurück",
|
||||
"csv_city": "Stadt",
|
||||
"csv_company": "Firma",
|
||||
"csv_country": "Land",
|
||||
"csv_email": "E-Mail",
|
||||
"csv_first_name": "Vorname",
|
||||
"csv_ignore": "Diese Spalte ignorieren",
|
||||
"csv_job_title": "Berufsbezeichnung",
|
||||
"csv_last_name": "Nachname",
|
||||
"csv_load_all": "Alle laden",
|
||||
"csv_map_columns": "Spalten zuordnen",
|
||||
"csv_nickname": "Spitzname",
|
||||
"csv_note": "Notiz",
|
||||
"csv_phone": "Telefon",
|
||||
"csv_postcode": "Postleitzahl",
|
||||
"csv_preview": "Vorschau",
|
||||
"csv_preview_title": "Vorschau ({count, plural, one {# Zeile} other {# Zeilen}})",
|
||||
"csv_region": "Bundesland/Region",
|
||||
"csv_website": "Webseite",
|
||||
"file_types_csv": ".csv-Dateien"
|
||||
},
|
||||
"export": {
|
||||
"title": "Kontakte exportieren",
|
||||
@@ -2569,7 +2635,10 @@
|
||||
"has_phone": "Mit Telefon",
|
||||
"has_photo": "Mit Foto"
|
||||
},
|
||||
"open_categories": "Kategorien öffnen"
|
||||
"open_categories": "Kategorien öffnen",
|
||||
"delete": "Löschen",
|
||||
"edit": "Bearbeiten",
|
||||
"send_email": "E-Mail senden"
|
||||
},
|
||||
"calendar": {
|
||||
"title": "Kalender",
|
||||
@@ -2988,7 +3057,37 @@
|
||||
"bah": "Bahman",
|
||||
"esf": "Esfand"
|
||||
},
|
||||
"nav_open_menu": "Menü öffnen"
|
||||
"nav_open_menu": "Menü öffnen",
|
||||
"delete": "Löschen",
|
||||
"duplicate": "Duplizieren",
|
||||
"edit": "Bearbeiten",
|
||||
"freeBusy": {
|
||||
"busy": "Beschäftigt",
|
||||
"check": "Verfügbarkeit prüfen",
|
||||
"click_to_select": "Klicken Sie auf einen freien Termin, um diese Zeit auszuwählen",
|
||||
"free": "Frei",
|
||||
"hide": "Verfügbarkeit ausblenden",
|
||||
"loading": "Lädt...",
|
||||
"no_participants": "Fügen Sie Teilnehmer hinzu, um die Verfügbarkeit zu prüfen.",
|
||||
"tentative": "Vorläufig",
|
||||
"timezone": "Zeitzone",
|
||||
"title": "Verfügbarkeit",
|
||||
"unavailable": "Abwesend",
|
||||
"unknown": "Keine Informationen"
|
||||
},
|
||||
"resources": {
|
||||
"clear_all": "Alle entfernen",
|
||||
"filter_all": "Alle",
|
||||
"hide": "Ressourcen ausblenden",
|
||||
"no_resources": "Keine Ressourcen verfügbar",
|
||||
"remove": "{name} entfernen",
|
||||
"search_placeholder": "Ressourcen suchen...",
|
||||
"title": "Ressourcen",
|
||||
"type_equipment": "Ausrüstung",
|
||||
"type_other": "Sonstige",
|
||||
"type_room": "Räume",
|
||||
"type_vehicle": "Fahrzeuge"
|
||||
}
|
||||
},
|
||||
"advanced_search": {
|
||||
"title": "Erweiterte Suche",
|
||||
@@ -3153,7 +3252,8 @@
|
||||
"open_folder_tree": "Ordnerbaum öffnen",
|
||||
"other_accounts": "Andere Konten",
|
||||
"migration_title": "Ihre Dateien werden aktualisiert…",
|
||||
"migration_description": "Ordner und Dateien werden in die richtige Struktur gebracht. Dies geschieht nur einmal."
|
||||
"migration_description": "Ordner und Dateien werden in die richtige Struktur gebracht. Dies geschieht nur einmal.",
|
||||
"send_as_attachment": "Als Anhang senden"
|
||||
},
|
||||
"smime": {
|
||||
"your_certificates": "Ihre Zertifikate",
|
||||
@@ -3308,7 +3408,14 @@
|
||||
"readWrite": "Lesen & schreiben",
|
||||
"manager": "Verwalten",
|
||||
"custom": "Benutzerdefiniert"
|
||||
}
|
||||
},
|
||||
"accept": "Annehmen",
|
||||
"decline": "Ablehnen",
|
||||
"no_shares_by_me": "Sie haben noch nichts freigegeben.",
|
||||
"no_shares_with_me": "Es wurden Ihnen noch keine Ordner freigegeben.",
|
||||
"shared_by": "Freigegeben von",
|
||||
"tab_shared_by_me": "Von mir freigegeben",
|
||||
"tab_shared_with_me": "Für mich freigegeben"
|
||||
},
|
||||
"quote_header": {
|
||||
"reply_line": "Am {date} schrieb {from}:",
|
||||
@@ -3324,5 +3431,55 @@
|
||||
"install": "Installieren",
|
||||
"dont_remind": "Nicht mehr erinnern",
|
||||
"dismiss_aria": "Installationshinweis schließen"
|
||||
},
|
||||
"signatures": {
|
||||
"add_signature": "Signatur hinzufügen",
|
||||
"default": "Standard",
|
||||
"default_signature": {
|
||||
"description": "Wird für neue Nachrichten verwendet, sofern nicht pro Identität überschrieben.",
|
||||
"label": "Standardsignatur"
|
||||
},
|
||||
"delete_message": "Möchten Sie \"{name}\" wirklich löschen? Dies kann nicht rückgängig gemacht werden.",
|
||||
"delete_title": "Signatur löschen?",
|
||||
"description": "Erstellen und verwalten Sie E-Mail-Signaturen zum Verfassen und Antworten.",
|
||||
"duplicate": "Duplizieren",
|
||||
"edit_signature": "Signatur bearbeiten",
|
||||
"editor_label": "Signatur",
|
||||
"html_preview_label": "HTML-Vorschau",
|
||||
"name_label": "Name",
|
||||
"name_placeholder": "z. B. Arbeit, Privat",
|
||||
"name_required": "Name ist erforderlich",
|
||||
"new_signature": "Neue Signatur",
|
||||
"no_signature": "Keine Signatur",
|
||||
"no_signatures": "Noch keine Signaturen vorhanden",
|
||||
"per_identity_signatures": {
|
||||
"description": "Überschreiben Sie die Standard- und Antwortsignatur für einzelne Identitäten.",
|
||||
"label": "Signaturen pro Identität"
|
||||
},
|
||||
"plain_text_preview_label": "Nur-Text-Vorschau",
|
||||
"reply": "Antwort",
|
||||
"reply_signature": {
|
||||
"description": "Wird beim Antworten oder Weiterleiten verwendet, sofern nicht pro Identität überschrieben.",
|
||||
"label": "Antwortsignatur"
|
||||
},
|
||||
"show_editor": "Editor anzeigen",
|
||||
"show_preview": "Vorschau anzeigen",
|
||||
"title": "Signaturen",
|
||||
"toolbar": {
|
||||
"align_center": "Zentriert",
|
||||
"align_left": "Linksbündig",
|
||||
"align_right": "Rechtsbündig",
|
||||
"bold": "Fett",
|
||||
"bullet_list": "Aufzählung",
|
||||
"italic": "Kursiv",
|
||||
"link": "Link",
|
||||
"ordered_list": "Nummerierte Liste",
|
||||
"remove_color": "Farbe entfernen",
|
||||
"strikethrough": "Durchgestrichen",
|
||||
"text_color": "Textfarbe",
|
||||
"underline": "Unterstrichen"
|
||||
},
|
||||
"use_global_default": "Globalen Standard verwenden",
|
||||
"your_signatures": "Ihre Signaturen ({count})"
|
||||
}
|
||||
}
|
||||
|
||||
+124
-6
@@ -713,7 +713,10 @@
|
||||
"delete_table": "Delete table",
|
||||
"pick_size": "Pick size"
|
||||
},
|
||||
"send_filing_warning": "Sent - but the post-send cleanup failed, a stale draft may remain."
|
||||
"send_filing_warning": "Sent - but the post-send cleanup failed, a stale draft may remain.",
|
||||
"insert_signature": "Insert signature",
|
||||
"no_signature": "No signature",
|
||||
"select_signature": "Select signature"
|
||||
},
|
||||
"confirm_dialog": {
|
||||
"confirm": "Confirm",
|
||||
@@ -894,7 +897,8 @@
|
||||
"about_data": "About & Data",
|
||||
"import": "Import",
|
||||
"sharing": "Sharing",
|
||||
"debug": "Debug"
|
||||
"debug": "Debug",
|
||||
"signatures": "Signatures"
|
||||
},
|
||||
"tab_groups": {
|
||||
"general": "General",
|
||||
@@ -2010,6 +2014,38 @@
|
||||
"preview": {
|
||||
"label": "Preview"
|
||||
}
|
||||
},
|
||||
"loading": "Loading...",
|
||||
"refresh": "Refresh",
|
||||
"importer": {
|
||||
"title": "Import Mail",
|
||||
"description": "Import email messages from .eml files into a folder.",
|
||||
"file_label": "Files",
|
||||
"file_description": "Select one or more .eml files to import.",
|
||||
"choose_files": "Choose files",
|
||||
"files_selected": "{count, plural, one {# file selected} other {# files selected}}",
|
||||
"folder_label": "Destination folder",
|
||||
"folder_description": "Choose the folder to import messages into.",
|
||||
"conflict_label": "Duplicate handling",
|
||||
"conflict_description": "Choose what to do when an imported message already exists.",
|
||||
"conflict_skip": "Skip duplicates",
|
||||
"conflict_replace": "Replace duplicates",
|
||||
"conflict_copy": "Keep both",
|
||||
"action_label": "Import",
|
||||
"start_import": "{count, plural, one {Import # file} other {Import # files}}",
|
||||
"importing": "Importing...",
|
||||
"cancel": "Cancel",
|
||||
"progress_imported": "{count} imported",
|
||||
"progress_skipped": "{count} skipped",
|
||||
"progress_failed": "{count} failed",
|
||||
"import_complete": "Import complete",
|
||||
"summary_imported": "{count, plural, one {# message imported} other {# messages imported}}",
|
||||
"summary_skipped": "{count, plural, one {# message skipped} other {# messages skipped}}",
|
||||
"summary_failed": "{count, plural, one {# message failed} other {# messages failed}}",
|
||||
"error_details": "{count, plural, one {# error} other {# errors}}",
|
||||
"import_more": "Import more",
|
||||
"fail": "Import failed",
|
||||
"success": "{count, plural, one {# message imported} other {# messages imported}}"
|
||||
}
|
||||
},
|
||||
"errors": {
|
||||
@@ -2188,7 +2224,11 @@
|
||||
"save": "Save Identity",
|
||||
"cancel": "Cancel",
|
||||
"creating": "Creating...",
|
||||
"updating": "Updating..."
|
||||
"updating": "Updating...",
|
||||
"signature_store_mapping": "Signature mapping",
|
||||
"signature_store_default": "Default signature",
|
||||
"signature_store_reply": "Reply signature",
|
||||
"use_global_default": "Use global default"
|
||||
},
|
||||
"sub_address": {
|
||||
"button_tooltip": "Use sub-address",
|
||||
@@ -2515,7 +2555,29 @@
|
||||
"success": "{count, plural, one {1 contact imported} other {# contacts imported}}",
|
||||
"failed": "Import failed",
|
||||
"close": "Close",
|
||||
"file_too_large": "File is too large (max 5 MB)"
|
||||
"file_too_large": "File is too large (max 5 MB)",
|
||||
"csv_first_name": "First name",
|
||||
"csv_last_name": "Last name",
|
||||
"csv_email": "Email",
|
||||
"csv_phone": "Phone",
|
||||
"csv_company": "Company",
|
||||
"csv_job_title": "Job title",
|
||||
"csv_address": "Address",
|
||||
"csv_city": "City",
|
||||
"csv_region": "State/Region",
|
||||
"csv_postcode": "Postal code",
|
||||
"csv_country": "Country",
|
||||
"csv_website": "Website",
|
||||
"csv_note": "Note",
|
||||
"csv_nickname": "Nickname",
|
||||
"csv_map_columns": "Map columns",
|
||||
"csv_ignore": "Ignore this column",
|
||||
"csv_address_book": "Address book",
|
||||
"csv_preview": "Preview",
|
||||
"csv_preview_title": "Preview ({count, plural, one {# row} other {# rows}})",
|
||||
"csv_back": "Back",
|
||||
"csv_load_all": "Load all",
|
||||
"file_types_csv": ".csv files"
|
||||
},
|
||||
"export": {
|
||||
"title": "Export Contacts",
|
||||
@@ -2573,7 +2635,10 @@
|
||||
"has_email": "Has email",
|
||||
"has_phone": "Has phone",
|
||||
"has_photo": "Has photo"
|
||||
}
|
||||
},
|
||||
"edit": "Edit",
|
||||
"delete": "Delete",
|
||||
"send_email": "Send email"
|
||||
},
|
||||
"calendar": {
|
||||
"title": "Calendar",
|
||||
@@ -3019,7 +3084,10 @@
|
||||
"no_resources": "No resources available",
|
||||
"remove": "Remove {name}",
|
||||
"clear_all": "Clear all"
|
||||
}
|
||||
},
|
||||
"edit": "Edit",
|
||||
"delete": "Delete",
|
||||
"duplicate": "Duplicate"
|
||||
},
|
||||
"sharing": {
|
||||
"title": "Share \"{name}\"",
|
||||
@@ -3363,5 +3431,55 @@
|
||||
"install": "Install",
|
||||
"dont_remind": "Don't remind me again",
|
||||
"dismiss_aria": "Dismiss install prompt"
|
||||
},
|
||||
"signatures": {
|
||||
"title": "Signatures",
|
||||
"description": "Create and manage email signatures to use when composing or replying.",
|
||||
"default_signature": {
|
||||
"label": "Default signature",
|
||||
"description": "Used for new messages unless overridden per identity."
|
||||
},
|
||||
"reply_signature": {
|
||||
"label": "Reply signature",
|
||||
"description": "Used when replying or forwarding unless overridden per identity."
|
||||
},
|
||||
"per_identity_signatures": {
|
||||
"label": "Per-identity signatures",
|
||||
"description": "Override the default and reply signature for individual identities."
|
||||
},
|
||||
"use_global_default": "Use global default",
|
||||
"default": "Default",
|
||||
"reply": "Reply",
|
||||
"your_signatures": "Your signatures ({count})",
|
||||
"add_signature": "Add signature",
|
||||
"no_signatures": "No signatures yet",
|
||||
"no_signature": "No signature",
|
||||
"duplicate": "Duplicate",
|
||||
"delete_title": "Delete signature?",
|
||||
"delete_message": "Are you sure you want to delete \"{name}\"? This cannot be undone.",
|
||||
"new_signature": "New signature",
|
||||
"edit_signature": "Edit signature",
|
||||
"name_label": "Name",
|
||||
"name_placeholder": "e.g., Work, Personal",
|
||||
"name_required": "Name is required",
|
||||
"editor_label": "Signature",
|
||||
"show_editor": "Show editor",
|
||||
"show_preview": "Show preview",
|
||||
"html_preview_label": "HTML preview",
|
||||
"plain_text_preview_label": "Plain text preview",
|
||||
"toolbar": {
|
||||
"bold": "Bold",
|
||||
"italic": "Italic",
|
||||
"underline": "Underline",
|
||||
"strikethrough": "Strikethrough",
|
||||
"text_color": "Text color",
|
||||
"remove_color": "Remove color",
|
||||
"bullet_list": "Bullet list",
|
||||
"ordered_list": "Ordered list",
|
||||
"align_left": "Align left",
|
||||
"align_center": "Align center",
|
||||
"align_right": "Align right",
|
||||
"link": "Link"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+168
-11
@@ -567,7 +567,8 @@
|
||||
"copied": "¡Copiado!",
|
||||
"copy_failed": "Error al copiar"
|
||||
},
|
||||
"send_now": "Enviar ahora"
|
||||
"send_now": "Enviar ahora",
|
||||
"create_appointment": "Create Appointment"
|
||||
},
|
||||
"email_composer": {
|
||||
"read_receipt_on": "Confirmación de lectura solicitada (haz clic para desactivar)",
|
||||
@@ -712,7 +713,10 @@
|
||||
"delete_table": "Eliminar tabla",
|
||||
"pick_size": "Elegir tamaño"
|
||||
},
|
||||
"send_filing_warning": "Enviado - pero la limpieza posterior falló, puede quedar un borrador obsoleto."
|
||||
"send_filing_warning": "Enviado - pero la limpieza posterior falló, puede quedar un borrador obsoleto.",
|
||||
"insert_signature": "Insert signature",
|
||||
"no_signature": "No signature",
|
||||
"select_signature": "Select signature"
|
||||
},
|
||||
"confirm_dialog": {
|
||||
"confirm": "Confirmar",
|
||||
@@ -888,7 +892,10 @@
|
||||
"downloads": "Descargas",
|
||||
"content_senders": "Contenido y remitentes",
|
||||
"about_data": "Acerca de y datos",
|
||||
"debug": "Depuración"
|
||||
"debug": "Depuración",
|
||||
"import": "Import",
|
||||
"sharing": "Sharing",
|
||||
"signatures": "Signatures"
|
||||
},
|
||||
"tab_groups": {
|
||||
"general": "General",
|
||||
@@ -2007,7 +2014,39 @@
|
||||
"scoped": {
|
||||
"back": "Volver a mi cuenta",
|
||||
"managing": "Gestionando: {name}"
|
||||
}
|
||||
},
|
||||
"importer": {
|
||||
"action_label": "Import",
|
||||
"cancel": "Cancel",
|
||||
"choose_files": "Choose files",
|
||||
"conflict_copy": "Keep both",
|
||||
"conflict_description": "Choose what to do when an imported message already exists.",
|
||||
"conflict_label": "Duplicate handling",
|
||||
"conflict_replace": "Replace duplicates",
|
||||
"conflict_skip": "Skip duplicates",
|
||||
"description": "Import email messages from .eml files into a folder.",
|
||||
"error_details": "{count, plural, one {# error} other {# errors}}",
|
||||
"fail": "Import failed",
|
||||
"file_description": "Select one or more .eml files to import.",
|
||||
"file_label": "Files",
|
||||
"files_selected": "{count, plural, one {# file selected} other {# files selected}}",
|
||||
"folder_description": "Choose the folder to import messages into.",
|
||||
"folder_label": "Destination folder",
|
||||
"import_complete": "Import complete",
|
||||
"import_more": "Import more",
|
||||
"importing": "Importing...",
|
||||
"progress_failed": "{count} failed",
|
||||
"progress_imported": "{count} imported",
|
||||
"progress_skipped": "{count} skipped",
|
||||
"start_import": "{count, plural, one {Import # file} other {Import # files}}",
|
||||
"success": "{count, plural, one {# message imported} other {# messages imported}}",
|
||||
"summary_failed": "{count, plural, one {# message failed} other {# messages failed}}",
|
||||
"summary_imported": "{count, plural, one {# message imported} other {# messages imported}}",
|
||||
"summary_skipped": "{count, plural, one {# message skipped} other {# messages skipped}}",
|
||||
"title": "Import Mail"
|
||||
},
|
||||
"loading": "Loading...",
|
||||
"refresh": "Refresh"
|
||||
},
|
||||
"errors": {
|
||||
"page_error_title": "Algo salió mal",
|
||||
@@ -2085,7 +2124,8 @@
|
||||
"toast_error_delete_has_email": "La carpeta no está vacía. Vacíela primero.",
|
||||
"placeholder_folder_name": "Nombre de carpeta",
|
||||
"create": "Crear",
|
||||
"rename_confirm": "Renombrar"
|
||||
"rename_confirm": "Renombrar",
|
||||
"share_folder": "Share Folder..."
|
||||
},
|
||||
"shortcuts": {
|
||||
"title": "Atajos de Teclado",
|
||||
@@ -2184,7 +2224,11 @@
|
||||
"save": "Guardar Identidad",
|
||||
"cancel": "Cancelar",
|
||||
"creating": "Creando...",
|
||||
"updating": "Actualizando..."
|
||||
"updating": "Actualizando...",
|
||||
"signature_store_default": "Default signature",
|
||||
"signature_store_mapping": "Signature mapping",
|
||||
"signature_store_reply": "Reply signature",
|
||||
"use_global_default": "Use global default"
|
||||
},
|
||||
"sub_address": {
|
||||
"button_tooltip": "Usar sub-dirección",
|
||||
@@ -2510,7 +2554,29 @@
|
||||
"success": "{count, plural, one {1 contacto importado} other {# contactos importados}}",
|
||||
"failed": "Error en la importación",
|
||||
"close": "Cerrar",
|
||||
"file_too_large": "El archivo es demasiado grande (máx. 5 MB)"
|
||||
"file_too_large": "El archivo es demasiado grande (máx. 5 MB)",
|
||||
"csv_address": "Address",
|
||||
"csv_address_book": "Address book",
|
||||
"csv_back": "Back",
|
||||
"csv_city": "City",
|
||||
"csv_company": "Company",
|
||||
"csv_country": "Country",
|
||||
"csv_email": "Email",
|
||||
"csv_first_name": "First name",
|
||||
"csv_ignore": "Ignore this column",
|
||||
"csv_job_title": "Job title",
|
||||
"csv_last_name": "Last name",
|
||||
"csv_load_all": "Load all",
|
||||
"csv_map_columns": "Map columns",
|
||||
"csv_nickname": "Nickname",
|
||||
"csv_note": "Note",
|
||||
"csv_phone": "Phone",
|
||||
"csv_postcode": "Postal code",
|
||||
"csv_preview": "Preview",
|
||||
"csv_preview_title": "Preview ({count, plural, one {# row} other {# rows}})",
|
||||
"csv_region": "State/Region",
|
||||
"csv_website": "Website",
|
||||
"file_types_csv": ".csv files"
|
||||
},
|
||||
"export": {
|
||||
"title": "Exportar contactos",
|
||||
@@ -2569,7 +2635,10 @@
|
||||
"has_phone": "Con teléfono",
|
||||
"has_photo": "Con foto"
|
||||
},
|
||||
"open_categories": "Abrir categorías"
|
||||
"open_categories": "Abrir categorías",
|
||||
"delete": "Delete",
|
||||
"edit": "Edit",
|
||||
"send_email": "Send email"
|
||||
},
|
||||
"calendar": {
|
||||
"title": "Calendario",
|
||||
@@ -2988,7 +3057,37 @@
|
||||
"bah": "Bahman",
|
||||
"esf": "Esfand"
|
||||
},
|
||||
"nav_open_menu": "Abrir menú"
|
||||
"nav_open_menu": "Abrir menú",
|
||||
"delete": "Delete",
|
||||
"duplicate": "Duplicate",
|
||||
"edit": "Edit",
|
||||
"freeBusy": {
|
||||
"busy": "Busy",
|
||||
"check": "Check Availability",
|
||||
"click_to_select": "Click a free slot to select this time",
|
||||
"free": "Free",
|
||||
"hide": "Hide Availability",
|
||||
"loading": "Loading...",
|
||||
"no_participants": "Add participants to check availability.",
|
||||
"tentative": "Tentative",
|
||||
"timezone": "Timezone",
|
||||
"title": "Availability",
|
||||
"unavailable": "Out of office",
|
||||
"unknown": "No information"
|
||||
},
|
||||
"resources": {
|
||||
"clear_all": "Clear all",
|
||||
"filter_all": "All",
|
||||
"hide": "Hide resources",
|
||||
"no_resources": "No resources available",
|
||||
"remove": "Remove {name}",
|
||||
"search_placeholder": "Search resources...",
|
||||
"title": "Resources",
|
||||
"type_equipment": "Equipment",
|
||||
"type_other": "Other",
|
||||
"type_room": "Rooms",
|
||||
"type_vehicle": "Vehicles"
|
||||
}
|
||||
},
|
||||
"advanced_search": {
|
||||
"title": "Búsqueda avanzada",
|
||||
@@ -3153,7 +3252,8 @@
|
||||
"open_folder_tree": "Abrir árbol de carpetas",
|
||||
"other_accounts": "Otras cuentas",
|
||||
"migration_title": "Actualizando tus archivos…",
|
||||
"migration_description": "Organizando carpetas y archivos en su estructura adecuada. Esto solo ocurre una vez."
|
||||
"migration_description": "Organizando carpetas y archivos en su estructura adecuada. Esto solo ocurre una vez.",
|
||||
"send_as_attachment": "Send as Attachment"
|
||||
},
|
||||
"smime": {
|
||||
"your_certificates": "Tus certificados",
|
||||
@@ -3308,7 +3408,14 @@
|
||||
"readWrite": "Lectura y escritura",
|
||||
"manager": "Administrador",
|
||||
"custom": "Personalizado"
|
||||
}
|
||||
},
|
||||
"accept": "Accept",
|
||||
"decline": "Decline",
|
||||
"no_shares_by_me": "You haven't shared anything yet.",
|
||||
"no_shares_with_me": "No folders shared with you yet.",
|
||||
"shared_by": "Shared by",
|
||||
"tab_shared_by_me": "Shared by me",
|
||||
"tab_shared_with_me": "Shared with me"
|
||||
},
|
||||
"quote_header": {
|
||||
"reply_line": "El {date}, {from} escribió:",
|
||||
@@ -3324,5 +3431,55 @@
|
||||
"install": "Instalar",
|
||||
"dont_remind": "No volver a recordármelo",
|
||||
"dismiss_aria": "Cerrar aviso de instalación"
|
||||
},
|
||||
"signatures": {
|
||||
"add_signature": "Add signature",
|
||||
"default": "Default",
|
||||
"default_signature": {
|
||||
"description": "Used for new messages unless overridden per identity.",
|
||||
"label": "Default signature"
|
||||
},
|
||||
"delete_message": "Are you sure you want to delete \"{name}\"? This cannot be undone.",
|
||||
"delete_title": "Delete signature?",
|
||||
"description": "Create and manage email signatures to use when composing or replying.",
|
||||
"duplicate": "Duplicate",
|
||||
"edit_signature": "Edit signature",
|
||||
"editor_label": "Signature",
|
||||
"html_preview_label": "HTML preview",
|
||||
"name_label": "Name",
|
||||
"name_placeholder": "e.g., Work, Personal",
|
||||
"name_required": "Name is required",
|
||||
"new_signature": "New signature",
|
||||
"no_signature": "No signature",
|
||||
"no_signatures": "No signatures yet",
|
||||
"per_identity_signatures": {
|
||||
"description": "Override the default and reply signature for individual identities.",
|
||||
"label": "Per-identity signatures"
|
||||
},
|
||||
"plain_text_preview_label": "Plain text preview",
|
||||
"reply": "Reply",
|
||||
"reply_signature": {
|
||||
"description": "Used when replying or forwarding unless overridden per identity.",
|
||||
"label": "Reply signature"
|
||||
},
|
||||
"show_editor": "Show editor",
|
||||
"show_preview": "Show preview",
|
||||
"title": "Signatures",
|
||||
"toolbar": {
|
||||
"align_center": "Align center",
|
||||
"align_left": "Align left",
|
||||
"align_right": "Align right",
|
||||
"bold": "Bold",
|
||||
"bullet_list": "Bullet list",
|
||||
"italic": "Italic",
|
||||
"link": "Link",
|
||||
"ordered_list": "Ordered list",
|
||||
"remove_color": "Remove color",
|
||||
"strikethrough": "Strikethrough",
|
||||
"text_color": "Text color",
|
||||
"underline": "Underline"
|
||||
},
|
||||
"use_global_default": "Use global default",
|
||||
"your_signatures": "Your signatures ({count})"
|
||||
}
|
||||
}
|
||||
|
||||
+167
-10
@@ -567,7 +567,8 @@
|
||||
"copied": "کپی شد!",
|
||||
"copy_failed": "کپی ناموفق بود"
|
||||
},
|
||||
"send_now": "ارسال فوری"
|
||||
"send_now": "ارسال فوری",
|
||||
"create_appointment": "Create Appointment"
|
||||
},
|
||||
"email_composer": {
|
||||
"read_receipt_on": "درخواست تأیید خواندن فعال (کلیک برای غیرفعال کردن)",
|
||||
@@ -712,7 +713,10 @@
|
||||
"delete_table": "حذف جدول",
|
||||
"pick_size": "انتخاب اندازه"
|
||||
},
|
||||
"send_filing_warning": "ارسال شد - اما پاکسازی پس از ارسال ناموفق بود، ممکن است پیشنویس قدیمی باقی بماند."
|
||||
"send_filing_warning": "ارسال شد - اما پاکسازی پس از ارسال ناموفق بود، ممکن است پیشنویس قدیمی باقی بماند.",
|
||||
"insert_signature": "Insert signature",
|
||||
"no_signature": "No signature",
|
||||
"select_signature": "Select signature"
|
||||
},
|
||||
"confirm_dialog": {
|
||||
"confirm": "تأیید",
|
||||
@@ -891,7 +895,10 @@
|
||||
"downloads": "دانلودها",
|
||||
"content_senders": "محتوا و فرستندگان",
|
||||
"about_data": "درباره و دادهها",
|
||||
"debug": "اشکالزدایی"
|
||||
"debug": "اشکالزدایی",
|
||||
"import": "Import",
|
||||
"sharing": "Sharing",
|
||||
"signatures": "Signatures"
|
||||
},
|
||||
"tab_groups": {
|
||||
"general": "عمومی",
|
||||
@@ -2007,7 +2014,39 @@
|
||||
"preview": {
|
||||
"label": "پیشنمایش"
|
||||
}
|
||||
}
|
||||
},
|
||||
"importer": {
|
||||
"action_label": "Import",
|
||||
"cancel": "Cancel",
|
||||
"choose_files": "Choose files",
|
||||
"conflict_copy": "Keep both",
|
||||
"conflict_description": "Choose what to do when an imported message already exists.",
|
||||
"conflict_label": "Duplicate handling",
|
||||
"conflict_replace": "Replace duplicates",
|
||||
"conflict_skip": "Skip duplicates",
|
||||
"description": "Import email messages from .eml files into a folder.",
|
||||
"error_details": "{count, plural, one {# error} other {# errors}}",
|
||||
"fail": "Import failed",
|
||||
"file_description": "Select one or more .eml files to import.",
|
||||
"file_label": "Files",
|
||||
"files_selected": "{count, plural, one {# file selected} other {# files selected}}",
|
||||
"folder_description": "Choose the folder to import messages into.",
|
||||
"folder_label": "Destination folder",
|
||||
"import_complete": "Import complete",
|
||||
"import_more": "Import more",
|
||||
"importing": "Importing...",
|
||||
"progress_failed": "{count} failed",
|
||||
"progress_imported": "{count} imported",
|
||||
"progress_skipped": "{count} skipped",
|
||||
"start_import": "{count, plural, one {Import # file} other {Import # files}}",
|
||||
"success": "{count, plural, one {# message imported} other {# messages imported}}",
|
||||
"summary_failed": "{count, plural, one {# message failed} other {# messages failed}}",
|
||||
"summary_imported": "{count, plural, one {# message imported} other {# messages imported}}",
|
||||
"summary_skipped": "{count, plural, one {# message skipped} other {# messages skipped}}",
|
||||
"title": "Import Mail"
|
||||
},
|
||||
"loading": "Loading...",
|
||||
"refresh": "Refresh"
|
||||
},
|
||||
"errors": {
|
||||
"page_error_title": "مشکلی پیش آمد",
|
||||
@@ -2085,7 +2124,8 @@
|
||||
"toast_error_rename": "خطای تغییر نام",
|
||||
"toast_error_delete": "خطای حذف",
|
||||
"toast_error_delete_has_children": "زیرپوشه دارد",
|
||||
"toast_error_delete_has_email": "خالی نیست"
|
||||
"toast_error_delete_has_email": "خالی نیست",
|
||||
"share_folder": "Share Folder..."
|
||||
},
|
||||
"shortcuts": {
|
||||
"title": "میانبرهای صفحه کلید",
|
||||
@@ -2184,7 +2224,11 @@
|
||||
"save": "ذخیره هویت",
|
||||
"cancel": "انصراف",
|
||||
"creating": "در حال ایجاد...",
|
||||
"updating": "در حال بهروزرسانی..."
|
||||
"updating": "در حال بهروزرسانی...",
|
||||
"signature_store_default": "Default signature",
|
||||
"signature_store_mapping": "Signature mapping",
|
||||
"signature_store_reply": "Reply signature",
|
||||
"use_global_default": "Use global default"
|
||||
},
|
||||
"sub_address": {
|
||||
"button_tooltip": "استفاده از زیرآدرس",
|
||||
@@ -2511,7 +2555,29 @@
|
||||
"success": "{count, plural, one {۱ مخاطب وارد شد} other {# مخاطب وارد شد}}",
|
||||
"failed": "وارد کردن ناموفق بود",
|
||||
"close": "بستن",
|
||||
"file_too_large": "حجم فایل بیش از حد است (حداکثر ۵ مگابایت)"
|
||||
"file_too_large": "حجم فایل بیش از حد است (حداکثر ۵ مگابایت)",
|
||||
"csv_address": "Address",
|
||||
"csv_address_book": "Address book",
|
||||
"csv_back": "Back",
|
||||
"csv_city": "City",
|
||||
"csv_company": "Company",
|
||||
"csv_country": "Country",
|
||||
"csv_email": "Email",
|
||||
"csv_first_name": "First name",
|
||||
"csv_ignore": "Ignore this column",
|
||||
"csv_job_title": "Job title",
|
||||
"csv_last_name": "Last name",
|
||||
"csv_load_all": "Load all",
|
||||
"csv_map_columns": "Map columns",
|
||||
"csv_nickname": "Nickname",
|
||||
"csv_note": "Note",
|
||||
"csv_phone": "Phone",
|
||||
"csv_postcode": "Postal code",
|
||||
"csv_preview": "Preview",
|
||||
"csv_preview_title": "Preview ({count, plural, one {# row} other {# rows}})",
|
||||
"csv_region": "State/Region",
|
||||
"csv_website": "Website",
|
||||
"file_types_csv": ".csv files"
|
||||
},
|
||||
"export": {
|
||||
"title": "خروجی مخاطبین",
|
||||
@@ -2569,7 +2635,10 @@
|
||||
"has_email": "دارای ایمیل",
|
||||
"has_phone": "دارای تلفن",
|
||||
"has_photo": "دارای عکس"
|
||||
}
|
||||
},
|
||||
"delete": "Delete",
|
||||
"edit": "Edit",
|
||||
"send_email": "Send email"
|
||||
},
|
||||
"calendar": {
|
||||
"title": "تقویم",
|
||||
@@ -2988,6 +3057,36 @@
|
||||
"due_today": "امروز",
|
||||
"due_tomorrow": "فردا",
|
||||
"overdue": "عقبافتاده"
|
||||
},
|
||||
"delete": "Delete",
|
||||
"duplicate": "Duplicate",
|
||||
"edit": "Edit",
|
||||
"freeBusy": {
|
||||
"busy": "Busy",
|
||||
"check": "Check Availability",
|
||||
"click_to_select": "Click a free slot to select this time",
|
||||
"free": "Free",
|
||||
"hide": "Hide Availability",
|
||||
"loading": "Loading...",
|
||||
"no_participants": "Add participants to check availability.",
|
||||
"tentative": "Tentative",
|
||||
"timezone": "Timezone",
|
||||
"title": "Availability",
|
||||
"unavailable": "Out of office",
|
||||
"unknown": "No information"
|
||||
},
|
||||
"resources": {
|
||||
"clear_all": "Clear all",
|
||||
"filter_all": "All",
|
||||
"hide": "Hide resources",
|
||||
"no_resources": "No resources available",
|
||||
"remove": "Remove {name}",
|
||||
"search_placeholder": "Search resources...",
|
||||
"title": "Resources",
|
||||
"type_equipment": "Equipment",
|
||||
"type_other": "Other",
|
||||
"type_room": "Rooms",
|
||||
"type_vehicle": "Vehicles"
|
||||
}
|
||||
},
|
||||
"sharing": {
|
||||
@@ -3011,7 +3110,14 @@
|
||||
"readWrite": "خواندن و نوشتن",
|
||||
"manager": "مدیر",
|
||||
"custom": "سفارشی"
|
||||
}
|
||||
},
|
||||
"accept": "Accept",
|
||||
"decline": "Decline",
|
||||
"no_shares_by_me": "You haven't shared anything yet.",
|
||||
"no_shares_with_me": "No folders shared with you yet.",
|
||||
"shared_by": "Shared by",
|
||||
"tab_shared_by_me": "Shared by me",
|
||||
"tab_shared_with_me": "Shared with me"
|
||||
},
|
||||
"advanced_search": {
|
||||
"title": "جستجوی پیشرفته",
|
||||
@@ -3176,7 +3282,8 @@
|
||||
"disabled_description": "بارگذاری فایلهای حجیم از طریق WebDAV میتواند باعث ناپایداری سرور شود.",
|
||||
"stability_warning": "بارگذاری فایلهای حجیم میتواند باعث ناپایداری سرور شود. با احتیاط استفاده کنید.",
|
||||
"migration_title": "در حال بهروزرسانی فایلهای شما…",
|
||||
"migration_description": "سازماندهی پوشهها و فایلها در ساختار مناسب. فقط یک بار انجام میشود."
|
||||
"migration_description": "سازماندهی پوشهها و فایلها در ساختار مناسب. فقط یک بار انجام میشود.",
|
||||
"send_as_attachment": "Send as Attachment"
|
||||
},
|
||||
"smime": {
|
||||
"your_certificates": "گواهیهای شما",
|
||||
@@ -3324,5 +3431,55 @@
|
||||
"install": "نصب",
|
||||
"dont_remind": "دیگر یادآوری نکن",
|
||||
"dismiss_aria": "رد کردن پیشنهاد نصب"
|
||||
},
|
||||
"signatures": {
|
||||
"add_signature": "Add signature",
|
||||
"default": "Default",
|
||||
"default_signature": {
|
||||
"description": "Used for new messages unless overridden per identity.",
|
||||
"label": "Default signature"
|
||||
},
|
||||
"delete_message": "Are you sure you want to delete \"{name}\"? This cannot be undone.",
|
||||
"delete_title": "Delete signature?",
|
||||
"description": "Create and manage email signatures to use when composing or replying.",
|
||||
"duplicate": "Duplicate",
|
||||
"edit_signature": "Edit signature",
|
||||
"editor_label": "Signature",
|
||||
"html_preview_label": "HTML preview",
|
||||
"name_label": "Name",
|
||||
"name_placeholder": "e.g., Work, Personal",
|
||||
"name_required": "Name is required",
|
||||
"new_signature": "New signature",
|
||||
"no_signature": "No signature",
|
||||
"no_signatures": "No signatures yet",
|
||||
"per_identity_signatures": {
|
||||
"description": "Override the default and reply signature for individual identities.",
|
||||
"label": "Per-identity signatures"
|
||||
},
|
||||
"plain_text_preview_label": "Plain text preview",
|
||||
"reply": "Reply",
|
||||
"reply_signature": {
|
||||
"description": "Used when replying or forwarding unless overridden per identity.",
|
||||
"label": "Reply signature"
|
||||
},
|
||||
"show_editor": "Show editor",
|
||||
"show_preview": "Show preview",
|
||||
"title": "Signatures",
|
||||
"toolbar": {
|
||||
"align_center": "Align center",
|
||||
"align_left": "Align left",
|
||||
"align_right": "Align right",
|
||||
"bold": "Bold",
|
||||
"bullet_list": "Bullet list",
|
||||
"italic": "Italic",
|
||||
"link": "Link",
|
||||
"ordered_list": "Ordered list",
|
||||
"remove_color": "Remove color",
|
||||
"strikethrough": "Strikethrough",
|
||||
"text_color": "Text color",
|
||||
"underline": "Underline"
|
||||
},
|
||||
"use_global_default": "Use global default",
|
||||
"your_signatures": "Your signatures ({count})"
|
||||
}
|
||||
}
|
||||
|
||||
+168
-11
@@ -567,7 +567,8 @@
|
||||
"copied": "Copié !",
|
||||
"copy_failed": "Échec de la copie"
|
||||
},
|
||||
"send_now": "Envoyer maintenant"
|
||||
"send_now": "Envoyer maintenant",
|
||||
"create_appointment": "Créer un rendez-vous"
|
||||
},
|
||||
"email_composer": {
|
||||
"read_receipt_on": "Accusé de lecture demandé (cliquez pour désactiver)",
|
||||
@@ -712,7 +713,10 @@
|
||||
"delete_table": "Supprimer le tableau",
|
||||
"pick_size": "Choisir la taille"
|
||||
},
|
||||
"send_filing_warning": "Envoyé - mais le nettoyage après envoi a échoué, un ancien brouillon peut subsister."
|
||||
"send_filing_warning": "Envoyé - mais le nettoyage après envoi a échoué, un ancien brouillon peut subsister.",
|
||||
"insert_signature": "Insérer une signature",
|
||||
"no_signature": "Aucune signature",
|
||||
"select_signature": "Sélectionner une signature"
|
||||
},
|
||||
"confirm_dialog": {
|
||||
"confirm": "Confirmer",
|
||||
@@ -888,7 +892,10 @@
|
||||
"downloads": "Téléchargements",
|
||||
"content_senders": "Contenu et expéditeurs",
|
||||
"about_data": "À propos et données",
|
||||
"debug": "Débogage"
|
||||
"debug": "Débogage",
|
||||
"import": "Importation",
|
||||
"sharing": "Partage",
|
||||
"signatures": "Signatures"
|
||||
},
|
||||
"tab_groups": {
|
||||
"general": "Général",
|
||||
@@ -2007,7 +2014,39 @@
|
||||
"scoped": {
|
||||
"back": "Retour à mon compte",
|
||||
"managing": "Gestion : {name}"
|
||||
}
|
||||
},
|
||||
"importer": {
|
||||
"action_label": "Importer",
|
||||
"cancel": "Annuler",
|
||||
"choose_files": "Choisir des fichiers",
|
||||
"conflict_copy": "Conserver les deux",
|
||||
"conflict_description": "Choisissez l'action à effectuer lorsqu'un message importé existe déjà.",
|
||||
"conflict_label": "Gestion des doublons",
|
||||
"conflict_replace": "Remplacer les doublons",
|
||||
"conflict_skip": "Ignorer les doublons",
|
||||
"description": "Importez des messages e-mail à partir de fichiers .eml vers un dossier.",
|
||||
"error_details": "{count, plural, one {# erreur} other {# erreurs}}",
|
||||
"fail": "Échec de l'importation",
|
||||
"file_description": "Sélectionnez un ou plusieurs fichiers .eml à importer.",
|
||||
"file_label": "Fichiers",
|
||||
"files_selected": "{count, plural, one {# fichier sélectionné} other {# fichiers sélectionnés}}",
|
||||
"folder_description": "Choisissez le dossier dans lequel importer les messages.",
|
||||
"folder_label": "Dossier de destination",
|
||||
"import_complete": "Importation terminée",
|
||||
"import_more": "Importer d'autres fichiers",
|
||||
"importing": "Importation en cours...",
|
||||
"progress_failed": "{count} échoués",
|
||||
"progress_imported": "{count} importés",
|
||||
"progress_skipped": "{count} ignorés",
|
||||
"start_import": "{count, plural, one {Importer # fichier} other {Importer # fichiers}}",
|
||||
"success": "{count, plural, one {# message importé} other {# messages importés}}",
|
||||
"summary_failed": "{count, plural, one {# message en échec} other {# messages en échec}}",
|
||||
"summary_imported": "{count, plural, one {# message importé} other {# messages importés}}",
|
||||
"summary_skipped": "{count, plural, one {# message ignoré} other {# messages ignorés}}",
|
||||
"title": "Importation de courrier"
|
||||
},
|
||||
"loading": "Chargement...",
|
||||
"refresh": "Actualiser"
|
||||
},
|
||||
"errors": {
|
||||
"page_error_title": "Une erreur s'est produite",
|
||||
@@ -2085,7 +2124,8 @@
|
||||
"toast_error_delete_has_email": "Le dossier n'est pas vide. Videz-le d'abord.",
|
||||
"placeholder_folder_name": "Nom du dossier",
|
||||
"create": "Créer",
|
||||
"rename_confirm": "Renommer"
|
||||
"rename_confirm": "Renommer",
|
||||
"share_folder": "Partager le dossier..."
|
||||
},
|
||||
"shortcuts": {
|
||||
"title": "Raccourcis clavier",
|
||||
@@ -2184,7 +2224,11 @@
|
||||
"save": "Enregistrer l'identité",
|
||||
"cancel": "Annuler",
|
||||
"creating": "Création...",
|
||||
"updating": "Mise à jour..."
|
||||
"updating": "Mise à jour...",
|
||||
"signature_store_default": "Signature par défaut",
|
||||
"signature_store_mapping": "Association de signatures",
|
||||
"signature_store_reply": "Signature de réponse",
|
||||
"use_global_default": "Utiliser la valeur par défaut globale"
|
||||
},
|
||||
"sub_address": {
|
||||
"button_tooltip": "Utiliser le sous-adressage",
|
||||
@@ -2510,7 +2554,29 @@
|
||||
"success": "{count, plural, one {1 contact importé} other {# contacts importés}}",
|
||||
"failed": "Échec de l'importation",
|
||||
"close": "Fermer",
|
||||
"file_too_large": "Fichier trop volumineux (max 5 Mo)"
|
||||
"file_too_large": "Fichier trop volumineux (max 5 Mo)",
|
||||
"csv_address": "Adresse",
|
||||
"csv_address_book": "Carnet d'adresses",
|
||||
"csv_back": "Retour",
|
||||
"csv_city": "Ville",
|
||||
"csv_company": "Société",
|
||||
"csv_country": "Pays",
|
||||
"csv_email": "E-mail",
|
||||
"csv_first_name": "Prénom",
|
||||
"csv_ignore": "Ignorer cette colonne",
|
||||
"csv_job_title": "Fonction",
|
||||
"csv_last_name": "Nom",
|
||||
"csv_load_all": "Tout charger",
|
||||
"csv_map_columns": "Associer les colonnes",
|
||||
"csv_nickname": "Surnom",
|
||||
"csv_note": "Note",
|
||||
"csv_phone": "Téléphone",
|
||||
"csv_postcode": "Code postal",
|
||||
"csv_preview": "Aperçu",
|
||||
"csv_preview_title": "Aperçu ({count, plural, one {# ligne} other {# lignes}})",
|
||||
"csv_region": "État/Région",
|
||||
"csv_website": "Site web",
|
||||
"file_types_csv": "fichiers .csv"
|
||||
},
|
||||
"export": {
|
||||
"title": "Exporter les contacts",
|
||||
@@ -2569,7 +2635,10 @@
|
||||
"has_phone": "Avec téléphone",
|
||||
"has_photo": "Avec photo"
|
||||
},
|
||||
"open_categories": "Ouvrir les catégories"
|
||||
"open_categories": "Ouvrir les catégories",
|
||||
"delete": "Supprimer",
|
||||
"edit": "Modifier",
|
||||
"send_email": "Envoyer un e-mail"
|
||||
},
|
||||
"calendar": {
|
||||
"title": "Calendrier",
|
||||
@@ -2988,7 +3057,37 @@
|
||||
"due_tomorrow": "Échéance demain",
|
||||
"overdue": "En retard"
|
||||
},
|
||||
"nav_open_menu": "Ouvrir le menu"
|
||||
"nav_open_menu": "Ouvrir le menu",
|
||||
"delete": "Supprimer",
|
||||
"duplicate": "Dupliquer",
|
||||
"edit": "Modifier",
|
||||
"freeBusy": {
|
||||
"busy": "Occupé",
|
||||
"check": "Vérifier la disponibilité",
|
||||
"click_to_select": "Cliquez sur un créneau libre pour sélectionner cette heure",
|
||||
"free": "Libre",
|
||||
"hide": "Masquer la disponibilité",
|
||||
"loading": "Chargement...",
|
||||
"no_participants": "Ajoutez des participants pour vérifier la disponibilité.",
|
||||
"tentative": "Provisoire",
|
||||
"timezone": "Fuseau horaire",
|
||||
"title": "Disponibilité",
|
||||
"unavailable": "Absent du bureau",
|
||||
"unknown": "Aucune information"
|
||||
},
|
||||
"resources": {
|
||||
"clear_all": "Tout effacer",
|
||||
"filter_all": "Toutes",
|
||||
"hide": "Masquer les ressources",
|
||||
"no_resources": "Aucune ressource disponible",
|
||||
"remove": "Retirer {name}",
|
||||
"search_placeholder": "Rechercher des ressources...",
|
||||
"title": "Ressources",
|
||||
"type_equipment": "Équipement",
|
||||
"type_other": "Autre",
|
||||
"type_room": "Salles",
|
||||
"type_vehicle": "Véhicules"
|
||||
}
|
||||
},
|
||||
"advanced_search": {
|
||||
"title": "Recherche avancée",
|
||||
@@ -3153,7 +3252,8 @@
|
||||
"open_folder_tree": "Ouvrir l'arborescence des dossiers",
|
||||
"other_accounts": "Autres comptes",
|
||||
"migration_title": "Mise à jour de vos fichiers…",
|
||||
"migration_description": "Organisation des dossiers et fichiers dans leur structure appropriée. Cela ne se produit qu'une seule fois."
|
||||
"migration_description": "Organisation des dossiers et fichiers dans leur structure appropriée. Cela ne se produit qu'une seule fois.",
|
||||
"send_as_attachment": "Envoyer en pièce jointe"
|
||||
},
|
||||
"smime": {
|
||||
"your_certificates": "Vos certificats",
|
||||
@@ -3308,7 +3408,14 @@
|
||||
"readWrite": "Lecture & écriture",
|
||||
"manager": "Gestionnaire",
|
||||
"custom": "Personnalisé"
|
||||
}
|
||||
},
|
||||
"accept": "Accepter",
|
||||
"decline": "Refuser",
|
||||
"no_shares_by_me": "Vous n'avez encore rien partagé.",
|
||||
"no_shares_with_me": "Aucun dossier n'a encore été partagé avec vous.",
|
||||
"shared_by": "Partagé par",
|
||||
"tab_shared_by_me": "Partagé par moi",
|
||||
"tab_shared_with_me": "Partagé avec moi"
|
||||
},
|
||||
"quote_header": {
|
||||
"reply_line": "Le {date}, {from} a écrit :",
|
||||
@@ -3324,5 +3431,55 @@
|
||||
"install": "Installer",
|
||||
"dont_remind": "Ne plus me le rappeler",
|
||||
"dismiss_aria": "Fermer l'invite d'installation"
|
||||
},
|
||||
"signatures": {
|
||||
"add_signature": "Ajouter une signature",
|
||||
"default": "Par défaut",
|
||||
"default_signature": {
|
||||
"description": "Utilisée pour les nouveaux messages, sauf si remplacée par identité.",
|
||||
"label": "Signature par défaut"
|
||||
},
|
||||
"delete_message": "Êtes-vous sûr de vouloir supprimer \"{name}\" ? Cette action est irréversible.",
|
||||
"delete_title": "Supprimer la signature ?",
|
||||
"description": "Créez et gérez des signatures e-mail à utiliser lors de la rédaction ou de la réponse.",
|
||||
"duplicate": "Dupliquer",
|
||||
"edit_signature": "Modifier la signature",
|
||||
"editor_label": "Signature",
|
||||
"html_preview_label": "Aperçu HTML",
|
||||
"name_label": "Nom",
|
||||
"name_placeholder": "p. ex. Travail, Personnel",
|
||||
"name_required": "Le nom est requis",
|
||||
"new_signature": "Nouvelle signature",
|
||||
"no_signature": "Aucune signature",
|
||||
"no_signatures": "Aucune signature pour le moment",
|
||||
"per_identity_signatures": {
|
||||
"description": "Remplacez la signature par défaut et de réponse pour des identités individuelles.",
|
||||
"label": "Signatures par identité"
|
||||
},
|
||||
"plain_text_preview_label": "Aperçu en texte brut",
|
||||
"reply": "Réponse",
|
||||
"reply_signature": {
|
||||
"description": "Utilisée lors d'une réponse ou d'un transfert, sauf si remplacée par identité.",
|
||||
"label": "Signature de réponse"
|
||||
},
|
||||
"show_editor": "Afficher l'éditeur",
|
||||
"show_preview": "Afficher l'aperçu",
|
||||
"title": "Signatures",
|
||||
"toolbar": {
|
||||
"align_center": "Centrer",
|
||||
"align_left": "Aligner à gauche",
|
||||
"align_right": "Aligner à droite",
|
||||
"bold": "Gras",
|
||||
"bullet_list": "Liste à puces",
|
||||
"italic": "Italique",
|
||||
"link": "Lien",
|
||||
"ordered_list": "Liste numérotée",
|
||||
"remove_color": "Supprimer la couleur",
|
||||
"strikethrough": "Barré",
|
||||
"text_color": "Couleur du texte",
|
||||
"underline": "Souligné"
|
||||
},
|
||||
"use_global_default": "Utiliser la valeur par défaut globale",
|
||||
"your_signatures": "Vos signatures ({count})"
|
||||
}
|
||||
}
|
||||
|
||||
+167
-10
@@ -532,7 +532,8 @@
|
||||
"copied": "הועתק!",
|
||||
"copy_failed": "העתקה נכשלה"
|
||||
},
|
||||
"send_now": "שלח עכשיו"
|
||||
"send_now": "שלח עכשיו",
|
||||
"create_appointment": "צור פגישה"
|
||||
},
|
||||
"email_composer": {
|
||||
"new_message": "הודעה חדשה",
|
||||
@@ -677,7 +678,10 @@
|
||||
"delete_table": "מחיקת טבלה",
|
||||
"pick_size": "בחירת גודל"
|
||||
},
|
||||
"send_filing_warning": "נשלח - אך הניקוי שלאחר השליחה נכשל, ייתכן שתישאר טיוטה ישנה."
|
||||
"send_filing_warning": "נשלח - אך הניקוי שלאחר השליחה נכשל, ייתכן שתישאר טיוטה ישנה.",
|
||||
"insert_signature": "הוסף חתימה",
|
||||
"no_signature": "ללא חתימה",
|
||||
"select_signature": "בחר חתימה"
|
||||
},
|
||||
"confirm_dialog": {
|
||||
"confirm": "אשר",
|
||||
@@ -853,7 +857,10 @@
|
||||
"downloads": "הורדות",
|
||||
"content_senders": "תוכן ושולחים",
|
||||
"about_data": "בערך וגדול",
|
||||
"debug": "ניפוי שגיאות"
|
||||
"debug": "ניפוי שגיאות",
|
||||
"import": "ייבוא",
|
||||
"sharing": "שיתוף",
|
||||
"signatures": "חתימות"
|
||||
},
|
||||
"tab_groups": {
|
||||
"general": "כללי",
|
||||
@@ -1973,7 +1980,39 @@
|
||||
"archive": "העבר לארכיון",
|
||||
"trash": "העבר לאשפה"
|
||||
}
|
||||
}
|
||||
},
|
||||
"importer": {
|
||||
"action_label": "ייבוא",
|
||||
"cancel": "ביטול",
|
||||
"choose_files": "בחר קבצים",
|
||||
"conflict_copy": "שמור את שניהם",
|
||||
"conflict_description": "בחר מה לעשות כאשר הודעה מיובאת כבר קיימת.",
|
||||
"conflict_label": "טיפול בכפילויות",
|
||||
"conflict_replace": "החלף כפילויות",
|
||||
"conflict_skip": "דלג על כפילויות",
|
||||
"description": "ייבא הודעות דוא״ל מקבצי .eml לתוך תיקייה.",
|
||||
"error_details": "{count, plural, one {שגיאה אחת} other {# שגיאות}}",
|
||||
"fail": "הייבוא נכשל",
|
||||
"file_description": "בחר קובץ .eml אחד או יותר לייבוא.",
|
||||
"file_label": "קבצים",
|
||||
"files_selected": "{count, plural, one {קובץ אחד נבחר} other {# קבצים נבחרו}}",
|
||||
"folder_description": "בחר את התיקייה לייבוא ההודעות אליה.",
|
||||
"folder_label": "תיקיית יעד",
|
||||
"import_complete": "הייבוא הושלם",
|
||||
"import_more": "ייבא עוד",
|
||||
"importing": "מייבא...",
|
||||
"progress_failed": "{count} נכשלו",
|
||||
"progress_imported": "{count} יובאו",
|
||||
"progress_skipped": "{count} דולגו",
|
||||
"start_import": "{count, plural, one {ייבא קובץ אחד} other {ייבא # קבצים}}",
|
||||
"success": "{count, plural, one {הודעה אחת יובאה} other {# הודעות יובאו}}",
|
||||
"summary_failed": "{count, plural, one {הודעה אחת נכשלה} other {# הודעות נכשלו}}",
|
||||
"summary_imported": "{count, plural, one {הודעה אחת יובאה} other {# הודעות יובאו}}",
|
||||
"summary_skipped": "{count, plural, one {הודעה אחת דולגה} other {# הודעות דולגו}}",
|
||||
"title": "ייבוא דואר"
|
||||
},
|
||||
"loading": "טוען...",
|
||||
"refresh": "רענן"
|
||||
},
|
||||
"errors": {
|
||||
"page_error_title": "משהו השתבש",
|
||||
@@ -2112,7 +2151,11 @@
|
||||
"creating": "יוצר...",
|
||||
"updating": "מעדכן...",
|
||||
"signature_byte_counter": "{bytes} / {max} בתים",
|
||||
"signature_byte_limit_reached": "הגבול של השרת הושג"
|
||||
"signature_byte_limit_reached": "הגבול של השרת הושג",
|
||||
"signature_store_default": "חתימת ברירת מחדל",
|
||||
"signature_store_mapping": "מיפוי חתימות",
|
||||
"signature_store_reply": "חתימת תשובה",
|
||||
"use_global_default": "השתמש בברירת המחדל הגלובלית"
|
||||
},
|
||||
"sub_address": {
|
||||
"button_tooltip": "השתמש בכתובת משנה",
|
||||
@@ -2424,7 +2467,29 @@
|
||||
"success": "{count, plural, one {יובא איש קשר אחד} other {יובאו # אנשי קשר}}",
|
||||
"failed": "הייבוא נכשל",
|
||||
"close": "לִסְגוֹר",
|
||||
"file_too_large": "הקובץ גדול מדי (מקסימום 5MB)"
|
||||
"file_too_large": "הקובץ גדול מדי (מקסימום 5MB)",
|
||||
"csv_address": "כתובת",
|
||||
"csv_address_book": "ספר כתובות",
|
||||
"csv_back": "חזרה",
|
||||
"csv_city": "עיר",
|
||||
"csv_company": "חברה",
|
||||
"csv_country": "מדינה",
|
||||
"csv_email": "דוא״ל",
|
||||
"csv_first_name": "שם פרטי",
|
||||
"csv_ignore": "התעלם מעמודה זו",
|
||||
"csv_job_title": "תפקיד עבודה",
|
||||
"csv_last_name": "שם משפחה",
|
||||
"csv_load_all": "טען הכל",
|
||||
"csv_map_columns": "מיפוי עמודות",
|
||||
"csv_nickname": "כינוי",
|
||||
"csv_note": "הערה",
|
||||
"csv_phone": "טלפון",
|
||||
"csv_postcode": "מיקוד",
|
||||
"csv_preview": "תצוגה מקדימה",
|
||||
"csv_preview_title": "תצוגה מקדימה ({count, plural, one {שורה אחת} other {# שורות}})",
|
||||
"csv_region": "מדינה/אזור",
|
||||
"csv_website": "אתר",
|
||||
"file_types_csv": "קבצי .csv"
|
||||
},
|
||||
"export": {
|
||||
"title": "ייצוא אנשי קשר",
|
||||
@@ -2497,7 +2562,10 @@
|
||||
"has_email": "יש דוא״ל",
|
||||
"has_phone": "יש טלפון",
|
||||
"has_photo": "יש תמונה"
|
||||
}
|
||||
},
|
||||
"delete": "מחק",
|
||||
"edit": "ערוך",
|
||||
"send_email": "שלח דוא״ל"
|
||||
},
|
||||
"calendar": {
|
||||
"title": "לוח שנה",
|
||||
@@ -2916,6 +2984,36 @@
|
||||
"subscribe_title": "הירשם",
|
||||
"subscribe_description": "שמור את הלוח שנה הזה בסנכרון אוטומטי כלוח שנה נפרד.",
|
||||
"cancel": "בטל"
|
||||
},
|
||||
"delete": "מחק",
|
||||
"duplicate": "שכפל",
|
||||
"edit": "ערוך",
|
||||
"freeBusy": {
|
||||
"busy": "תפוס",
|
||||
"check": "בדוק זמינות",
|
||||
"click_to_select": "לחץ על משבצת פנויה כדי לבחור את השעה הזו",
|
||||
"free": "חופשי",
|
||||
"hide": "הסתר זמינות",
|
||||
"loading": "טוען...",
|
||||
"no_participants": "הוסף משתתפים כדי לבדוק זמינות.",
|
||||
"tentative": "טנטטיבי",
|
||||
"timezone": "אזור זמן",
|
||||
"title": "זמינות",
|
||||
"unavailable": "מחוץ למשרד",
|
||||
"unknown": "אין מידע"
|
||||
},
|
||||
"resources": {
|
||||
"clear_all": "נקה הכל",
|
||||
"filter_all": "הכל",
|
||||
"hide": "הסתר משאבים",
|
||||
"no_resources": "אין משאבים זמינים",
|
||||
"remove": "הסר {name}",
|
||||
"search_placeholder": "חיפוש משאבים...",
|
||||
"title": "משאבים",
|
||||
"type_equipment": "ציוד",
|
||||
"type_other": "אחר",
|
||||
"type_room": "חדרים",
|
||||
"type_vehicle": "כלי רכב"
|
||||
}
|
||||
},
|
||||
"advanced_search": {
|
||||
@@ -3081,7 +3179,8 @@
|
||||
"shared_by": "משותף על ידי {name}",
|
||||
"open_folder_tree": "פתח עץ תיקייה",
|
||||
"migration_title": "עדכון הקבצים שלך…",
|
||||
"migration_description": "ארגון תיקיות וקבצים לתוך המבנה הנכון שלהם. זה קורה רק פעם אחת."
|
||||
"migration_description": "ארגון תיקיות וקבצים לתוך המבנה הנכון שלהם. זה קורה רק פעם אחת.",
|
||||
"send_as_attachment": "שלח כקובץ מצורף"
|
||||
},
|
||||
"smime": {
|
||||
"your_certificates": "התעודות שלך",
|
||||
@@ -3283,7 +3382,8 @@
|
||||
"toast_error_rename": "נכשל בשינוי שם תיקייה",
|
||||
"toast_error_delete": "נכשל במחיקת תיקייה",
|
||||
"toast_error_delete_has_children": "לתיקייה יש תת־תיקיות. הסר אותן קודם.",
|
||||
"toast_error_delete_has_email": "התיקייה אינה ריקה. תרוקנה קודם."
|
||||
"toast_error_delete_has_email": "התיקייה אינה ריקה. תרוקנה קודם.",
|
||||
"share_folder": "שתף תיקייה..."
|
||||
},
|
||||
"sharing": {
|
||||
"title": "שתף \"{name}\"",
|
||||
@@ -3306,7 +3406,14 @@
|
||||
"readWrite": "קרא וכתוב",
|
||||
"manager": "מנהל",
|
||||
"custom": "מותאם אישית"
|
||||
}
|
||||
},
|
||||
"accept": "קבל",
|
||||
"decline": "דחה",
|
||||
"no_shares_by_me": "עדיין לא שיתפת שום דבר.",
|
||||
"no_shares_with_me": "עדיין אין תיקיות ששותפו איתך.",
|
||||
"shared_by": "משותף על ידי",
|
||||
"tab_shared_by_me": "השיתופים שלי",
|
||||
"tab_shared_with_me": "משותף איתי"
|
||||
},
|
||||
"unified_mailbox": {
|
||||
"search_unavailable": "חיפוש אינו זמין בתצוגה המאוחדת"
|
||||
@@ -3325,5 +3432,55 @@
|
||||
"install": "התקן",
|
||||
"dont_remind": "אל תזכיר לי שוב",
|
||||
"dismiss_aria": "בטל הודעת התקנה"
|
||||
},
|
||||
"signatures": {
|
||||
"add_signature": "הוסף חתימה",
|
||||
"default": "ברירת מחדל",
|
||||
"default_signature": {
|
||||
"description": "משמש עבור הודעות חדשות, אלא אם נעקף עבור זהות ספציפית.",
|
||||
"label": "חתימת ברירת מחדל"
|
||||
},
|
||||
"delete_message": "האם אתה בטוח שברצונך למחוק את \"{name}\"? לא ניתן לבטל פעולה זו.",
|
||||
"delete_title": "למחוק חתימה?",
|
||||
"description": "צור ונהל חתימות דוא״ל לשימוש בעת כתיבה או מענה.",
|
||||
"duplicate": "שכפל",
|
||||
"edit_signature": "ערוך חתימה",
|
||||
"editor_label": "חתימה",
|
||||
"html_preview_label": "תצוגה מקדימה של HTML",
|
||||
"name_label": "שם",
|
||||
"name_placeholder": "למשל, עבודה, אישי",
|
||||
"name_required": "נדרש שם",
|
||||
"new_signature": "חתימה חדשה",
|
||||
"no_signature": "ללא חתימה",
|
||||
"no_signatures": "עדיין אין חתימות",
|
||||
"per_identity_signatures": {
|
||||
"description": "עקוף את חתימת ברירת המחדל וחתימת התשובה עבור זהויות בודדות.",
|
||||
"label": "חתימות לפי זהות"
|
||||
},
|
||||
"plain_text_preview_label": "תצוגה מקדימה של טקסט רגיל",
|
||||
"reply": "תשובה",
|
||||
"reply_signature": {
|
||||
"description": "משמש בעת מענה או העברה, אלא אם נעקף עבור זהות ספציפית.",
|
||||
"label": "חתימת תשובה"
|
||||
},
|
||||
"show_editor": "הצג עורך",
|
||||
"show_preview": "הצג תצוגה מקדימה",
|
||||
"title": "חתימות",
|
||||
"toolbar": {
|
||||
"align_center": "מרכוז",
|
||||
"align_left": "יישור לשמאל",
|
||||
"align_right": "יישור לימין",
|
||||
"bold": "מודגש",
|
||||
"bullet_list": "רשימת תבליטים",
|
||||
"italic": "נטוי",
|
||||
"link": "קישור",
|
||||
"ordered_list": "רשימה ממוספרת",
|
||||
"remove_color": "הסרת צבע",
|
||||
"strikethrough": "קו חוצה",
|
||||
"text_color": "צבע טקסט",
|
||||
"underline": "קו תחתון"
|
||||
},
|
||||
"use_global_default": "השתמש בברירת המחדל הגלובלית",
|
||||
"your_signatures": "החתימות שלך ({count})"
|
||||
}
|
||||
}
|
||||
|
||||
+167
-10
@@ -567,7 +567,8 @@
|
||||
"copied": "Másolva!",
|
||||
"copy_failed": "A másolás nem sikerült"
|
||||
},
|
||||
"send_now": "Küldés most"
|
||||
"send_now": "Küldés most",
|
||||
"create_appointment": "Találkozó létrehozása"
|
||||
},
|
||||
"email_composer": {
|
||||
"read_receipt_on": "Olvasási visszaigazolás kérve (kattints a letiltáshoz)",
|
||||
@@ -712,7 +713,10 @@
|
||||
"delete_table": "Táblázat törlése",
|
||||
"pick_size": "Méret kiválasztása"
|
||||
},
|
||||
"send_filing_warning": "Elküldve - de az utólagos rendrakás nem sikerült, egy elavult piszkozat megmaradhat."
|
||||
"send_filing_warning": "Elküldve - de az utólagos rendrakás nem sikerült, egy elavult piszkozat megmaradhat.",
|
||||
"insert_signature": "Aláírás beszúrása",
|
||||
"no_signature": "Nincs aláírás",
|
||||
"select_signature": "Aláírás kiválasztása"
|
||||
},
|
||||
"confirm_dialog": {
|
||||
"confirm": "Megerősítés",
|
||||
@@ -891,7 +895,10 @@
|
||||
"downloads": "Letöltések",
|
||||
"content_senders": "Tartalom és feladók",
|
||||
"about_data": "Névjegy és adatok",
|
||||
"debug": "Hibakeresés"
|
||||
"debug": "Hibakeresés",
|
||||
"import": "Importálás",
|
||||
"sharing": "Megosztás",
|
||||
"signatures": "Aláírások"
|
||||
},
|
||||
"tab_groups": {
|
||||
"general": "Általános",
|
||||
@@ -2007,7 +2014,39 @@
|
||||
"scoped": {
|
||||
"back": "Vissza a saját fiókomhoz",
|
||||
"managing": "Kezelés: {name}"
|
||||
}
|
||||
},
|
||||
"importer": {
|
||||
"action_label": "Importálás",
|
||||
"cancel": "Mégse",
|
||||
"choose_files": "Fájlok kiválasztása",
|
||||
"conflict_copy": "Mindkettő megtartása",
|
||||
"conflict_description": "Válaszd ki, mi történjen, ha egy importált üzenet már létezik.",
|
||||
"conflict_label": "Duplikátumok kezelése",
|
||||
"conflict_replace": "Duplikátumok cseréje",
|
||||
"conflict_skip": "Duplikátumok kihagyása",
|
||||
"description": "E-mail üzenetek importálása .eml fájlokból egy mappába.",
|
||||
"error_details": "{count, plural, one {# hiba} other {# hiba}}",
|
||||
"fail": "Importálás sikertelen",
|
||||
"file_description": "Válassz ki egy vagy több .eml fájlt az importáláshoz.",
|
||||
"file_label": "Fájlok",
|
||||
"files_selected": "{count, plural, one {# fájl kijelölve} other {# fájl kijelölve}}",
|
||||
"folder_description": "Válaszd ki a mappát, amelybe az üzeneteket importálni szeretnéd.",
|
||||
"folder_label": "Célmappa",
|
||||
"import_complete": "Importálás befejezve",
|
||||
"import_more": "További importálás",
|
||||
"importing": "Importálás...",
|
||||
"progress_failed": "{count} sikertelen",
|
||||
"progress_imported": "{count} importálva",
|
||||
"progress_skipped": "{count} kihagyva",
|
||||
"start_import": "{count, plural, one {# fájl importálása} other {# fájl importálása}}",
|
||||
"success": "{count, plural, one {# üzenet importálva} other {# üzenet importálva}}",
|
||||
"summary_failed": "{count, plural, one {# üzenet sikertelen} other {# üzenet sikertelen}}",
|
||||
"summary_imported": "{count, plural, one {# üzenet importálva} other {# üzenet importálva}}",
|
||||
"summary_skipped": "{count, plural, one {# üzenet kihagyva} other {# üzenet kihagyva}}",
|
||||
"title": "Levelek importálása"
|
||||
},
|
||||
"loading": "Betöltés...",
|
||||
"refresh": "Frissítés"
|
||||
},
|
||||
"errors": {
|
||||
"page_error_title": "Valami hiba történt",
|
||||
@@ -2085,7 +2124,8 @@
|
||||
"toast_error_rename": "Nem sikerült átnevezni a mappát",
|
||||
"toast_error_delete": "Nem sikerült törölni a mappát",
|
||||
"toast_error_delete_has_children": "A mappának almappái vannak. Távolítsd el azokat először.",
|
||||
"toast_error_delete_has_email": "A mappa nem üres. Ürítsd ki először."
|
||||
"toast_error_delete_has_email": "A mappa nem üres. Ürítsd ki először.",
|
||||
"share_folder": "Mappa megosztása..."
|
||||
},
|
||||
"shortcuts": {
|
||||
"title": "Billentyűparancsok",
|
||||
@@ -2184,7 +2224,11 @@
|
||||
"save": "Azonosság mentése",
|
||||
"cancel": "Mégse",
|
||||
"creating": "Létrehozás...",
|
||||
"updating": "Frissítés..."
|
||||
"updating": "Frissítés...",
|
||||
"signature_store_default": "Alapértelmezett aláírás",
|
||||
"signature_store_mapping": "Aláírás-hozzárendelés",
|
||||
"signature_store_reply": "Válasz aláírás",
|
||||
"use_global_default": "Globális alapértelmezett használata"
|
||||
},
|
||||
"sub_address": {
|
||||
"button_tooltip": "Alcím használata",
|
||||
@@ -2511,7 +2555,29 @@
|
||||
"success": "{count, plural, one {1 névjegy importálva} other {# névjegy importálva}}",
|
||||
"failed": "Importálás sikertelen",
|
||||
"close": "Bezárás",
|
||||
"file_too_large": "A fájl túl nagy (max 5 MB)"
|
||||
"file_too_large": "A fájl túl nagy (max 5 MB)",
|
||||
"csv_address": "Cím",
|
||||
"csv_address_book": "Címjegyzék",
|
||||
"csv_back": "Vissza",
|
||||
"csv_city": "Város",
|
||||
"csv_company": "Cég",
|
||||
"csv_country": "Ország",
|
||||
"csv_email": "E-mail",
|
||||
"csv_first_name": "Keresztnév",
|
||||
"csv_ignore": "Oszlop figyelmen kívül hagyása",
|
||||
"csv_job_title": "Beosztás",
|
||||
"csv_last_name": "Vezetéknév",
|
||||
"csv_load_all": "Összes betöltése",
|
||||
"csv_map_columns": "Oszlopok megfeleltetése",
|
||||
"csv_nickname": "Becenév",
|
||||
"csv_note": "Jegyzet",
|
||||
"csv_phone": "Telefon",
|
||||
"csv_postcode": "Irányítószám",
|
||||
"csv_preview": "Előnézet",
|
||||
"csv_preview_title": "Előnézet ({count, plural, one {# sor} other {# sor}})",
|
||||
"csv_region": "Állam/Régió",
|
||||
"csv_website": "Weboldal",
|
||||
"file_types_csv": ".csv fájlok"
|
||||
},
|
||||
"export": {
|
||||
"title": "Névjegyek exportálása",
|
||||
@@ -2569,7 +2635,10 @@
|
||||
"has_email": "Van e-mail",
|
||||
"has_phone": "Van telefon",
|
||||
"has_photo": "Van fotó"
|
||||
}
|
||||
},
|
||||
"delete": "Törlés",
|
||||
"edit": "Szerkesztés",
|
||||
"send_email": "E-mail küldése"
|
||||
},
|
||||
"calendar": {
|
||||
"title": "Naptár",
|
||||
@@ -2988,6 +3057,36 @@
|
||||
"due_today": "Ma",
|
||||
"due_tomorrow": "Holnap",
|
||||
"overdue": "Lejárt"
|
||||
},
|
||||
"delete": "Törlés",
|
||||
"duplicate": "Duplikálás",
|
||||
"edit": "Szerkesztés",
|
||||
"freeBusy": {
|
||||
"busy": "Elfoglalt",
|
||||
"check": "Elérhetőség ellenőrzése",
|
||||
"click_to_select": "Kattints egy szabad időpontra ennek az időpontnak a kiválasztásához",
|
||||
"free": "Szabad",
|
||||
"hide": "Elérhetőség elrejtése",
|
||||
"loading": "Betöltés...",
|
||||
"no_participants": "Adj hozzá résztvevőket az elérhetőség ellenőrzéséhez.",
|
||||
"tentative": "Előzetes",
|
||||
"timezone": "Időzóna",
|
||||
"title": "Elérhetőség",
|
||||
"unavailable": "Házon kívül",
|
||||
"unknown": "Nincs információ"
|
||||
},
|
||||
"resources": {
|
||||
"clear_all": "Összes törlése",
|
||||
"filter_all": "Összes",
|
||||
"hide": "Erőforrások elrejtése",
|
||||
"no_resources": "Nincs elérhető erőforrás",
|
||||
"remove": "{name} eltávolítása",
|
||||
"search_placeholder": "Erőforrások keresése...",
|
||||
"title": "Erőforrások",
|
||||
"type_equipment": "Berendezés",
|
||||
"type_other": "Egyéb",
|
||||
"type_room": "Termek",
|
||||
"type_vehicle": "Járművek"
|
||||
}
|
||||
},
|
||||
"sharing": {
|
||||
@@ -3011,7 +3110,14 @@
|
||||
"readWrite": "Olvasás és írás",
|
||||
"manager": "Kezelő",
|
||||
"custom": "Egyéni"
|
||||
}
|
||||
},
|
||||
"accept": "Elfogadás",
|
||||
"decline": "Elutasítás",
|
||||
"no_shares_by_me": "Még nem osztottál meg semmit.",
|
||||
"no_shares_with_me": "Még nincs veled megosztott mappa.",
|
||||
"shared_by": "Megosztotta",
|
||||
"tab_shared_by_me": "Általam megosztott",
|
||||
"tab_shared_with_me": "Velem megosztott"
|
||||
},
|
||||
"advanced_search": {
|
||||
"title": "Speciális keresés",
|
||||
@@ -3176,7 +3282,8 @@
|
||||
"disabled_description": "Nagyméretű fájlok WebDAV-on keresztüli feltöltése Stalwart/RocksDB instabilitást okozhat, beleértve a memóriahiányos összeomlásokat és a helyreállíthatatlan lemezhasználatot. A törölt fájlok nem feltétlenül kerülnek azonnal eltávolításra a blob tárolóból. Ez a funkció nem ajánlott éles környezetben.",
|
||||
"stability_warning": "Nagyméretű fájlok feltöltése szerver instabilitást okozhat. A törölt fájlok nem feltétlenül kerülnek azonnal eltávolításra a tárolóból. Használat óvatosan.",
|
||||
"migration_title": "Fájlok frissítése…",
|
||||
"migration_description": "A mappák és fájlok a megfelelő struktúrába rendeződnek. Ez csak egyszer történik meg."
|
||||
"migration_description": "A mappák és fájlok a megfelelő struktúrába rendeződnek. Ez csak egyszer történik meg.",
|
||||
"send_as_attachment": "Küldés csatolmányként"
|
||||
},
|
||||
"smime": {
|
||||
"your_certificates": "Tanúsítványaid",
|
||||
@@ -3324,5 +3431,55 @@
|
||||
"install": "Telepítés",
|
||||
"dont_remind": "Ne emlékeztess többet",
|
||||
"dismiss_aria": "Telepítési ablak elutasítása"
|
||||
},
|
||||
"signatures": {
|
||||
"add_signature": "Aláírás hozzáadása",
|
||||
"default": "Alapértelmezett",
|
||||
"default_signature": {
|
||||
"description": "Új üzenetekhez használatos, hacsak nincs felülbírálva azonosságonként.",
|
||||
"label": "Alapértelmezett aláírás"
|
||||
},
|
||||
"delete_message": "Biztosan törölni szeretnéd a(z) \"{name}\" aláírást? Ez nem vonható vissza.",
|
||||
"delete_title": "Aláírás törlése?",
|
||||
"description": "E-mail aláírások létrehozása és kezelése levélíráshoz vagy válaszadáshoz.",
|
||||
"duplicate": "Duplikálás",
|
||||
"edit_signature": "Aláírás szerkesztése",
|
||||
"editor_label": "Aláírás",
|
||||
"html_preview_label": "HTML előnézet",
|
||||
"name_label": "Név",
|
||||
"name_placeholder": "pl. Munka, Személyes",
|
||||
"name_required": "Név megadása kötelező",
|
||||
"new_signature": "Új aláírás",
|
||||
"no_signature": "Nincs aláírás",
|
||||
"no_signatures": "Még nincsenek aláírások",
|
||||
"per_identity_signatures": {
|
||||
"description": "Az alapértelmezett és a válasz aláírás felülbírálása az egyes azonosságoknál.",
|
||||
"label": "Azonosságonkénti aláírások"
|
||||
},
|
||||
"plain_text_preview_label": "Egyszerű szöveges előnézet",
|
||||
"reply": "Válasz",
|
||||
"reply_signature": {
|
||||
"description": "Válaszadáskor vagy továbbításkor használatos, hacsak nincs felülbírálva azonosságonként.",
|
||||
"label": "Válasz aláírás"
|
||||
},
|
||||
"show_editor": "Szerkesztő megjelenítése",
|
||||
"show_preview": "Előnézet megjelenítése",
|
||||
"title": "Aláírások",
|
||||
"toolbar": {
|
||||
"align_center": "Középre igazítás",
|
||||
"align_left": "Balra igazítás",
|
||||
"align_right": "Jobbra igazítás",
|
||||
"bold": "Félkövér",
|
||||
"bullet_list": "Felsorolás",
|
||||
"italic": "Dőlt",
|
||||
"link": "Hivatkozás",
|
||||
"ordered_list": "Számozott lista",
|
||||
"remove_color": "Szín eltávolítása",
|
||||
"strikethrough": "Áthúzott",
|
||||
"text_color": "Betűszín",
|
||||
"underline": "Aláhúzott"
|
||||
},
|
||||
"use_global_default": "Globális alapértelmezett használata",
|
||||
"your_signatures": "Aláírásaid ({count})"
|
||||
}
|
||||
}
|
||||
|
||||
+168
-11
@@ -567,7 +567,8 @@
|
||||
"copied": "Copiato!",
|
||||
"copy_failed": "Copia non riuscita"
|
||||
},
|
||||
"send_now": "Invia ora"
|
||||
"send_now": "Invia ora",
|
||||
"create_appointment": "Crea appuntamento"
|
||||
},
|
||||
"email_composer": {
|
||||
"read_receipt_on": "Conferma di lettura richiesta (clicca per disattivare)",
|
||||
@@ -712,7 +713,10 @@
|
||||
"delete_table": "Elimina tabella",
|
||||
"pick_size": "Scegli dimensione"
|
||||
},
|
||||
"send_filing_warning": "Inviato - ma la pulizia successiva non è riuscita, potrebbe restare una bozza obsoleta."
|
||||
"send_filing_warning": "Inviato - ma la pulizia successiva non è riuscita, potrebbe restare una bozza obsoleta.",
|
||||
"insert_signature": "Inserisci firma",
|
||||
"no_signature": "Nessuna firma",
|
||||
"select_signature": "Seleziona firma"
|
||||
},
|
||||
"confirm_dialog": {
|
||||
"confirm": "Conferma",
|
||||
@@ -888,7 +892,10 @@
|
||||
"downloads": "Download",
|
||||
"content_senders": "Contenuto e mittenti",
|
||||
"about_data": "Informazioni e dati",
|
||||
"debug": "Debug"
|
||||
"debug": "Debug",
|
||||
"import": "Importa",
|
||||
"sharing": "Condivisione",
|
||||
"signatures": "Firme"
|
||||
},
|
||||
"tab_groups": {
|
||||
"general": "Generale",
|
||||
@@ -2007,7 +2014,39 @@
|
||||
"scoped": {
|
||||
"back": "Torna al mio account",
|
||||
"managing": "Gestione: {name}"
|
||||
}
|
||||
},
|
||||
"importer": {
|
||||
"action_label": "Importa",
|
||||
"cancel": "Annulla",
|
||||
"choose_files": "Scegli file",
|
||||
"conflict_copy": "Mantieni entrambi",
|
||||
"conflict_description": "Scegli cosa fare quando un messaggio importato esiste già.",
|
||||
"conflict_label": "Gestione dei duplicati",
|
||||
"conflict_replace": "Sostituisci i duplicati",
|
||||
"conflict_skip": "Salta i duplicati",
|
||||
"description": "Importa messaggi email da file .eml in una cartella.",
|
||||
"error_details": "{count, plural, one {# errore} other {# errori}}",
|
||||
"fail": "Importazione non riuscita",
|
||||
"file_description": "Seleziona uno o più file .eml da importare.",
|
||||
"file_label": "File",
|
||||
"files_selected": "{count, plural, one {# file selezionato} other {# file selezionati}}",
|
||||
"folder_description": "Scegli la cartella in cui importare i messaggi.",
|
||||
"folder_label": "Cartella di destinazione",
|
||||
"import_complete": "Importazione completata",
|
||||
"import_more": "Importa altro",
|
||||
"importing": "Importazione in corso...",
|
||||
"progress_failed": "{count} non riusciti",
|
||||
"progress_imported": "{count} importati",
|
||||
"progress_skipped": "{count} saltati",
|
||||
"start_import": "{count, plural, one {Importa # file} other {Importa # file}}",
|
||||
"success": "{count, plural, one {# messaggio importato} other {# messaggi importati}}",
|
||||
"summary_failed": "{count, plural, one {# messaggio non riuscito} other {# messaggi non riusciti}}",
|
||||
"summary_imported": "{count, plural, one {# messaggio importato} other {# messaggi importati}}",
|
||||
"summary_skipped": "{count, plural, one {# messaggio saltato} other {# messaggi saltati}}",
|
||||
"title": "Importa posta"
|
||||
},
|
||||
"loading": "Caricamento...",
|
||||
"refresh": "Aggiorna"
|
||||
},
|
||||
"errors": {
|
||||
"page_error_title": "Qualcosa è andato storto",
|
||||
@@ -2085,7 +2124,8 @@
|
||||
"toast_error_delete_has_email": "La cartella non è vuota. Svuotarla prima.",
|
||||
"placeholder_folder_name": "Nome cartella",
|
||||
"create": "Crea",
|
||||
"rename_confirm": "Rinomina"
|
||||
"rename_confirm": "Rinomina",
|
||||
"share_folder": "Condividi cartella..."
|
||||
},
|
||||
"shortcuts": {
|
||||
"title": "Scorciatoie da tastiera",
|
||||
@@ -2184,7 +2224,11 @@
|
||||
"save": "Salva identità",
|
||||
"cancel": "Annulla",
|
||||
"creating": "Creazione...",
|
||||
"updating": "Aggiornamento..."
|
||||
"updating": "Aggiornamento...",
|
||||
"signature_store_default": "Firma predefinita",
|
||||
"signature_store_mapping": "Mappatura firma",
|
||||
"signature_store_reply": "Firma di risposta",
|
||||
"use_global_default": "Usa predefinito globale"
|
||||
},
|
||||
"sub_address": {
|
||||
"button_tooltip": "Usa sotto-indirizzo",
|
||||
@@ -2510,7 +2554,29 @@
|
||||
"success": "{count, plural, one {1 contatto importato} other {# contatti importati}}",
|
||||
"failed": "Importazione fallita",
|
||||
"close": "Chiudi",
|
||||
"file_too_large": "Il file è troppo grande (max 5 MB)"
|
||||
"file_too_large": "Il file è troppo grande (max 5 MB)",
|
||||
"csv_address": "Indirizzo",
|
||||
"csv_address_book": "Rubrica",
|
||||
"csv_back": "Indietro",
|
||||
"csv_city": "Città",
|
||||
"csv_company": "Azienda",
|
||||
"csv_country": "Paese",
|
||||
"csv_email": "Email",
|
||||
"csv_first_name": "Nome",
|
||||
"csv_ignore": "Ignora questa colonna",
|
||||
"csv_job_title": "Titolo professionale",
|
||||
"csv_last_name": "Cognome",
|
||||
"csv_load_all": "Carica tutto",
|
||||
"csv_map_columns": "Mappa colonne",
|
||||
"csv_nickname": "Soprannome",
|
||||
"csv_note": "Nota",
|
||||
"csv_phone": "Telefono",
|
||||
"csv_postcode": "Codice postale",
|
||||
"csv_preview": "Anteprima",
|
||||
"csv_preview_title": "Anteprima ({count, plural, one {# riga} other {# righe}})",
|
||||
"csv_region": "Stato / Regione",
|
||||
"csv_website": "Sito web",
|
||||
"file_types_csv": "File .csv"
|
||||
},
|
||||
"export": {
|
||||
"title": "Esporta contatti",
|
||||
@@ -2569,7 +2635,10 @@
|
||||
"has_phone": "Con telefono",
|
||||
"has_photo": "Con foto"
|
||||
},
|
||||
"open_categories": "Apri categorie"
|
||||
"open_categories": "Apri categorie",
|
||||
"delete": "Elimina",
|
||||
"edit": "Modifica",
|
||||
"send_email": "Invia email"
|
||||
},
|
||||
"calendar": {
|
||||
"title": "Calendario",
|
||||
@@ -2988,7 +3057,37 @@
|
||||
"bah": "Bahman",
|
||||
"esf": "Esfand"
|
||||
},
|
||||
"nav_open_menu": "Apri menu"
|
||||
"nav_open_menu": "Apri menu",
|
||||
"delete": "Elimina",
|
||||
"duplicate": "Duplica",
|
||||
"edit": "Modifica",
|
||||
"freeBusy": {
|
||||
"busy": "Occupato",
|
||||
"check": "Verifica disponibilità",
|
||||
"click_to_select": "Fai clic su uno slot libero per selezionare questo orario",
|
||||
"free": "Libero",
|
||||
"hide": "Nascondi disponibilità",
|
||||
"loading": "Caricamento...",
|
||||
"no_participants": "Aggiungi partecipanti per verificare la disponibilità.",
|
||||
"tentative": "Provvisorio",
|
||||
"timezone": "Fuso orario",
|
||||
"title": "Disponibilità",
|
||||
"unavailable": "Fuori ufficio",
|
||||
"unknown": "Nessuna informazione"
|
||||
},
|
||||
"resources": {
|
||||
"clear_all": "Cancella tutto",
|
||||
"filter_all": "Tutte",
|
||||
"hide": "Nascondi risorse",
|
||||
"no_resources": "Nessuna risorsa disponibile",
|
||||
"remove": "Rimuovi {name}",
|
||||
"search_placeholder": "Cerca risorse...",
|
||||
"title": "Risorse",
|
||||
"type_equipment": "Attrezzature",
|
||||
"type_other": "Altro",
|
||||
"type_room": "Sale",
|
||||
"type_vehicle": "Veicoli"
|
||||
}
|
||||
},
|
||||
"advanced_search": {
|
||||
"title": "Ricerca avanzata",
|
||||
@@ -3153,7 +3252,8 @@
|
||||
"open_folder_tree": "Apri albero cartelle",
|
||||
"other_accounts": "Altri account",
|
||||
"migration_title": "Aggiornamento dei tuoi file…",
|
||||
"migration_description": "Organizzazione di cartelle e file nella loro struttura corretta. Questo avviene solo una volta."
|
||||
"migration_description": "Organizzazione di cartelle e file nella loro struttura corretta. Questo avviene solo una volta.",
|
||||
"send_as_attachment": "Invia come allegato"
|
||||
},
|
||||
"smime": {
|
||||
"your_certificates": "I tuoi certificati",
|
||||
@@ -3308,7 +3408,14 @@
|
||||
"readWrite": "Lettura e scrittura",
|
||||
"manager": "Gestore",
|
||||
"custom": "Personalizzato"
|
||||
}
|
||||
},
|
||||
"accept": "Accetta",
|
||||
"decline": "Rifiuta",
|
||||
"no_shares_by_me": "Non hai ancora condiviso nulla.",
|
||||
"no_shares_with_me": "Nessuna cartella condivisa con te per ora.",
|
||||
"shared_by": "Condiviso da",
|
||||
"tab_shared_by_me": "Condivisi da me",
|
||||
"tab_shared_with_me": "Condivisi con me"
|
||||
},
|
||||
"quote_header": {
|
||||
"reply_line": "Il {date}, {from} ha scritto:",
|
||||
@@ -3324,5 +3431,55 @@
|
||||
"install": "Installa",
|
||||
"dont_remind": "Non ricordarmelo più",
|
||||
"dismiss_aria": "Chiudi avviso di installazione"
|
||||
},
|
||||
"signatures": {
|
||||
"add_signature": "Aggiungi firma",
|
||||
"default": "Predefinita",
|
||||
"default_signature": {
|
||||
"description": "Utilizzata per i nuovi messaggi salvo diversa impostazione per identità.",
|
||||
"label": "Firma predefinita"
|
||||
},
|
||||
"delete_message": "Sei sicuro di voler eliminare \"{name}\"? Questa azione non può essere annullata.",
|
||||
"delete_title": "Eliminare la firma?",
|
||||
"description": "Crea e gestisci le firme email da usare quando componi o rispondi.",
|
||||
"duplicate": "Duplica",
|
||||
"edit_signature": "Modifica firma",
|
||||
"editor_label": "Firma",
|
||||
"html_preview_label": "Anteprima HTML",
|
||||
"name_label": "Nome",
|
||||
"name_placeholder": "es. Lavoro, Personale",
|
||||
"name_required": "Il nome è obbligatorio",
|
||||
"new_signature": "Nuova firma",
|
||||
"no_signature": "Nessuna firma",
|
||||
"no_signatures": "Nessuna firma ancora",
|
||||
"per_identity_signatures": {
|
||||
"description": "Sovrascrivi la firma predefinita e di risposta per le singole identità.",
|
||||
"label": "Firme per identità"
|
||||
},
|
||||
"plain_text_preview_label": "Anteprima testo semplice",
|
||||
"reply": "Di risposta",
|
||||
"reply_signature": {
|
||||
"description": "Utilizzata quando rispondi o inoltri, salvo diversa impostazione per identità.",
|
||||
"label": "Firma di risposta"
|
||||
},
|
||||
"show_editor": "Mostra editor",
|
||||
"show_preview": "Mostra anteprima",
|
||||
"title": "Firme",
|
||||
"toolbar": {
|
||||
"align_center": "Centra",
|
||||
"align_left": "Allinea a sinistra",
|
||||
"align_right": "Allinea a destra",
|
||||
"bold": "Grassetto",
|
||||
"bullet_list": "Elenco puntato",
|
||||
"italic": "Corsivo",
|
||||
"link": "Link",
|
||||
"ordered_list": "Elenco numerato",
|
||||
"remove_color": "Rimuovi colore",
|
||||
"strikethrough": "Barrato",
|
||||
"text_color": "Colore del testo",
|
||||
"underline": "Sottolineato"
|
||||
},
|
||||
"use_global_default": "Usa predefinito globale",
|
||||
"your_signatures": "Le tue firme ({count})"
|
||||
}
|
||||
}
|
||||
|
||||
+168
-11
@@ -567,7 +567,8 @@
|
||||
"copied": "コピーしました!",
|
||||
"copy_failed": "コピーに失敗しました"
|
||||
},
|
||||
"send_now": "今すぐ送信"
|
||||
"send_now": "今すぐ送信",
|
||||
"create_appointment": "予定を作成"
|
||||
},
|
||||
"email_composer": {
|
||||
"read_receipt_on": "開封確認を要求中(クリックで無効化)",
|
||||
@@ -712,7 +713,10 @@
|
||||
"delete_table": "表を削除",
|
||||
"pick_size": "サイズを選択"
|
||||
},
|
||||
"send_filing_warning": "送信されましたが、送信後の整理に失敗しました。古い下書きが残る場合があります。"
|
||||
"send_filing_warning": "送信されましたが、送信後の整理に失敗しました。古い下書きが残る場合があります。",
|
||||
"insert_signature": "署名を挿入",
|
||||
"no_signature": "署名なし",
|
||||
"select_signature": "署名を選択"
|
||||
},
|
||||
"confirm_dialog": {
|
||||
"confirm": "確認",
|
||||
@@ -888,7 +892,10 @@
|
||||
"downloads": "ダウンロード",
|
||||
"content_senders": "コンテンツと送信者",
|
||||
"about_data": "情報とデータ",
|
||||
"debug": "デバッグ"
|
||||
"debug": "デバッグ",
|
||||
"import": "インポート",
|
||||
"sharing": "共有",
|
||||
"signatures": "署名"
|
||||
},
|
||||
"tab_groups": {
|
||||
"general": "一般",
|
||||
@@ -2007,7 +2014,39 @@
|
||||
"scoped": {
|
||||
"back": "自分のアカウントに戻る",
|
||||
"managing": "管理中: {name}"
|
||||
}
|
||||
},
|
||||
"importer": {
|
||||
"action_label": "インポート",
|
||||
"cancel": "キャンセル",
|
||||
"choose_files": "ファイルを選択",
|
||||
"conflict_copy": "両方を保持",
|
||||
"conflict_description": "インポートするメッセージがすでに存在する場合の処理方法を選択してください。",
|
||||
"conflict_label": "重複の処理",
|
||||
"conflict_replace": "重複を置き換え",
|
||||
"conflict_skip": "重複をスキップ",
|
||||
"description": ".emlファイルからメールメッセージをフォルダーにインポートします。",
|
||||
"error_details": "{count, plural, other {#件のエラー}}",
|
||||
"fail": "インポートに失敗しました",
|
||||
"file_description": "インポートする.emlファイルを1つ以上選択してください。",
|
||||
"file_label": "ファイル",
|
||||
"files_selected": "{count, plural, other {#件のファイルを選択}}",
|
||||
"folder_description": "メッセージのインポート先フォルダーを選択してください。",
|
||||
"folder_label": "インポート先フォルダー",
|
||||
"import_complete": "インポート完了",
|
||||
"import_more": "さらにインポート",
|
||||
"importing": "インポート中...",
|
||||
"progress_failed": "{count}件失敗",
|
||||
"progress_imported": "{count}件インポート済み",
|
||||
"progress_skipped": "{count}件スキップ",
|
||||
"start_import": "{count, plural, other {#件のファイルをインポート}}",
|
||||
"success": "{count, plural, other {#件のメッセージをインポートしました}}",
|
||||
"summary_failed": "{count, plural, other {#件のメッセージが失敗しました}}",
|
||||
"summary_imported": "{count, plural, other {#件のメッセージをインポートしました}}",
|
||||
"summary_skipped": "{count, plural, other {#件のメッセージをスキップしました}}",
|
||||
"title": "メールをインポート"
|
||||
},
|
||||
"loading": "読み込み中...",
|
||||
"refresh": "更新"
|
||||
},
|
||||
"errors": {
|
||||
"page_error_title": "問題が発生しました",
|
||||
@@ -2085,7 +2124,8 @@
|
||||
"toast_error_delete_has_email": "フォルダーが空ではありません。先に空にしてください。",
|
||||
"placeholder_folder_name": "フォルダー名",
|
||||
"create": "作成",
|
||||
"rename_confirm": "名前を変更"
|
||||
"rename_confirm": "名前を変更",
|
||||
"share_folder": "フォルダーを共有..."
|
||||
},
|
||||
"shortcuts": {
|
||||
"title": "キーボードショートカット",
|
||||
@@ -2184,7 +2224,11 @@
|
||||
"save": "送信者情報を保存",
|
||||
"cancel": "キャンセル",
|
||||
"creating": "作成中...",
|
||||
"updating": "更新中..."
|
||||
"updating": "更新中...",
|
||||
"signature_store_default": "デフォルト署名",
|
||||
"signature_store_mapping": "署名のマッピング",
|
||||
"signature_store_reply": "返信署名",
|
||||
"use_global_default": "全体のデフォルトを使用"
|
||||
},
|
||||
"sub_address": {
|
||||
"button_tooltip": "サブアドレスを使用",
|
||||
@@ -2510,7 +2554,29 @@
|
||||
"success": "{count, plural, other {#件の連絡先をインポートしました}}",
|
||||
"failed": "インポートに失敗しました",
|
||||
"close": "閉じる",
|
||||
"file_too_large": "ファイルが大きすぎます(最大5 MB)"
|
||||
"file_too_large": "ファイルが大きすぎます(最大5 MB)",
|
||||
"csv_address": "住所",
|
||||
"csv_address_book": "アドレス帳",
|
||||
"csv_back": "戻る",
|
||||
"csv_city": "市区町村",
|
||||
"csv_company": "会社名",
|
||||
"csv_country": "国",
|
||||
"csv_email": "メール",
|
||||
"csv_first_name": "名",
|
||||
"csv_ignore": "この列を無視",
|
||||
"csv_job_title": "役職",
|
||||
"csv_last_name": "姓",
|
||||
"csv_load_all": "すべて読み込む",
|
||||
"csv_map_columns": "列のマッピング",
|
||||
"csv_nickname": "ニックネーム",
|
||||
"csv_note": "メモ",
|
||||
"csv_phone": "電話",
|
||||
"csv_postcode": "郵便番号",
|
||||
"csv_preview": "プレビュー",
|
||||
"csv_preview_title": "プレビュー({count, plural, other {#行}})",
|
||||
"csv_region": "都道府県",
|
||||
"csv_website": "ウェブサイト",
|
||||
"file_types_csv": ".csv ファイル"
|
||||
},
|
||||
"export": {
|
||||
"title": "連絡先をエクスポート",
|
||||
@@ -2569,7 +2635,10 @@
|
||||
"has_phone": "電話あり",
|
||||
"has_photo": "写真あり"
|
||||
},
|
||||
"open_categories": "カテゴリを開く"
|
||||
"open_categories": "カテゴリを開く",
|
||||
"delete": "削除",
|
||||
"edit": "編集",
|
||||
"send_email": "メールを送信"
|
||||
},
|
||||
"calendar": {
|
||||
"title": "カレンダー",
|
||||
@@ -2988,7 +3057,37 @@
|
||||
"bah": "Bahman",
|
||||
"esf": "Esfand"
|
||||
},
|
||||
"nav_open_menu": "メニューを開く"
|
||||
"nav_open_menu": "メニューを開く",
|
||||
"delete": "削除",
|
||||
"duplicate": "複製",
|
||||
"edit": "編集",
|
||||
"freeBusy": {
|
||||
"busy": "予定あり",
|
||||
"check": "空き状況を確認",
|
||||
"click_to_select": "この時間を選択するには、空いている枠をクリックしてください",
|
||||
"free": "空き",
|
||||
"hide": "空き状況を非表示",
|
||||
"loading": "読み込み中...",
|
||||
"no_participants": "空き状況を確認するには参加者を追加してください。",
|
||||
"tentative": "仮",
|
||||
"timezone": "タイムゾーン",
|
||||
"title": "空き状況",
|
||||
"unavailable": "不在",
|
||||
"unknown": "情報なし"
|
||||
},
|
||||
"resources": {
|
||||
"clear_all": "すべてクリア",
|
||||
"filter_all": "すべて",
|
||||
"hide": "リソースを非表示",
|
||||
"no_resources": "利用可能なリソースがありません",
|
||||
"remove": "{name}を削除",
|
||||
"search_placeholder": "リソースを検索...",
|
||||
"title": "リソース",
|
||||
"type_equipment": "備品",
|
||||
"type_other": "その他",
|
||||
"type_room": "会議室",
|
||||
"type_vehicle": "車両"
|
||||
}
|
||||
},
|
||||
"advanced_search": {
|
||||
"title": "詳細検索",
|
||||
@@ -3153,7 +3252,8 @@
|
||||
"open_folder_tree": "フォルダーツリーを開く",
|
||||
"other_accounts": "その他のアカウント",
|
||||
"migration_title": "ファイルを更新しています…",
|
||||
"migration_description": "フォルダーとファイルを適切な構造に整理しています。これは一度だけ行われます。"
|
||||
"migration_description": "フォルダーとファイルを適切な構造に整理しています。これは一度だけ行われます。",
|
||||
"send_as_attachment": "添付ファイルとして送信"
|
||||
},
|
||||
"smime": {
|
||||
"your_certificates": "あなたの証明書",
|
||||
@@ -3308,7 +3408,14 @@
|
||||
"readWrite": "読み取り・書き込み",
|
||||
"manager": "管理者",
|
||||
"custom": "カスタム"
|
||||
}
|
||||
},
|
||||
"accept": "承諾",
|
||||
"decline": "辞退",
|
||||
"no_shares_by_me": "まだ何も共有していません。",
|
||||
"no_shares_with_me": "共有されているフォルダーはまだありません。",
|
||||
"shared_by": "共有者",
|
||||
"tab_shared_by_me": "自分が共有",
|
||||
"tab_shared_with_me": "自分と共有"
|
||||
},
|
||||
"quote_header": {
|
||||
"reply_line": "{date}に{from}が書きました:",
|
||||
@@ -3324,5 +3431,55 @@
|
||||
"install": "インストール",
|
||||
"dont_remind": "今後表示しない",
|
||||
"dismiss_aria": "インストールプロンプトを閉じる"
|
||||
},
|
||||
"signatures": {
|
||||
"add_signature": "署名を追加",
|
||||
"default": "デフォルト",
|
||||
"default_signature": {
|
||||
"description": "個々の送信者情報で上書きしない限り、新規メッセージに使用されます。",
|
||||
"label": "デフォルト署名"
|
||||
},
|
||||
"delete_message": "\"{name}\"を削除してもよろしいですか?この操作は元に戻せません。",
|
||||
"delete_title": "署名を削除",
|
||||
"description": "作成や返信で使用するメール署名を作成・管理します。",
|
||||
"duplicate": "複製",
|
||||
"edit_signature": "署名を編集",
|
||||
"editor_label": "署名",
|
||||
"html_preview_label": "HTMLプレビュー",
|
||||
"name_label": "名前",
|
||||
"name_placeholder": "例: 仕事用、個人用",
|
||||
"name_required": "名前は必須です",
|
||||
"new_signature": "新しい署名",
|
||||
"no_signature": "署名なし",
|
||||
"no_signatures": "署名はまだありません",
|
||||
"per_identity_signatures": {
|
||||
"description": "個々の送信者情報について、デフォルトおよび返信の署名を上書きします。",
|
||||
"label": "送信者情報ごとの署名"
|
||||
},
|
||||
"plain_text_preview_label": "プレーンテキストプレビュー",
|
||||
"reply": "返信",
|
||||
"reply_signature": {
|
||||
"description": "個々の送信者情報で上書きしない限り、返信または転送時に使用されます。",
|
||||
"label": "返信署名"
|
||||
},
|
||||
"show_editor": "エディターを表示",
|
||||
"show_preview": "プレビューを表示",
|
||||
"title": "署名",
|
||||
"toolbar": {
|
||||
"align_center": "中央揃え",
|
||||
"align_left": "左揃え",
|
||||
"align_right": "右揃え",
|
||||
"bold": "太字",
|
||||
"bullet_list": "箇条書き",
|
||||
"italic": "斜体",
|
||||
"link": "リンク",
|
||||
"ordered_list": "番号付きリスト",
|
||||
"remove_color": "色を解除",
|
||||
"strikethrough": "取り消し線",
|
||||
"text_color": "文字色",
|
||||
"underline": "下線"
|
||||
},
|
||||
"use_global_default": "全体のデフォルトを使用",
|
||||
"your_signatures": "署名({count})"
|
||||
}
|
||||
}
|
||||
|
||||
+168
-11
@@ -567,7 +567,8 @@
|
||||
"copied": "복사됨!",
|
||||
"copy_failed": "복사하지 못했습니다"
|
||||
},
|
||||
"send_now": "지금 보내기"
|
||||
"send_now": "지금 보내기",
|
||||
"create_appointment": "일정 만들기"
|
||||
},
|
||||
"email_composer": {
|
||||
"read_receipt_on": "읽음 확인 요청됨 (클릭하여 해제)",
|
||||
@@ -712,7 +713,10 @@
|
||||
"delete_table": "표 삭제",
|
||||
"pick_size": "크기 선택"
|
||||
},
|
||||
"send_filing_warning": "보냈지만 전송 후 정리에 실패했습니다. 오래된 임시 보관 메일이 남아 있을 수 있습니다."
|
||||
"send_filing_warning": "보냈지만 전송 후 정리에 실패했습니다. 오래된 임시 보관 메일이 남아 있을 수 있습니다.",
|
||||
"insert_signature": "서명 삽입",
|
||||
"no_signature": "서명 없음",
|
||||
"select_signature": "서명 선택"
|
||||
},
|
||||
"confirm_dialog": {
|
||||
"confirm": "확인",
|
||||
@@ -888,7 +892,10 @@
|
||||
"downloads": "다운로드",
|
||||
"content_senders": "콘텐츠 및 발신자",
|
||||
"about_data": "정보 및 데이터",
|
||||
"debug": "디버그"
|
||||
"debug": "디버그",
|
||||
"import": "가져오기",
|
||||
"sharing": "공유",
|
||||
"signatures": "서명"
|
||||
},
|
||||
"tab_groups": {
|
||||
"general": "일반",
|
||||
@@ -2007,7 +2014,39 @@
|
||||
"scoped": {
|
||||
"back": "내 계정으로 돌아가기",
|
||||
"managing": "관리 중: {name}"
|
||||
}
|
||||
},
|
||||
"importer": {
|
||||
"action_label": "가져오기",
|
||||
"cancel": "취소",
|
||||
"choose_files": "파일 선택",
|
||||
"conflict_copy": "둘 다 유지",
|
||||
"conflict_description": "가져올 메시지가 이미 있을 때 어떻게 처리할지 선택해 주세요.",
|
||||
"conflict_label": "중복 처리",
|
||||
"conflict_replace": "중복 항목 바꾸기",
|
||||
"conflict_skip": "중복 항목 건너뛰기",
|
||||
"description": ".eml 파일에서 이메일 메시지를 폴더로 가져와요.",
|
||||
"error_details": "{count, plural, one {오류 1개} other {오류 #개}}",
|
||||
"fail": "가져오기 실패",
|
||||
"file_description": "가져올 .eml 파일을 하나 이상 선택해 주세요.",
|
||||
"file_label": "파일",
|
||||
"files_selected": "{count, plural, one {파일 1개 선택됨} other {파일 #개 선택됨}}",
|
||||
"folder_description": "메시지를 가져올 폴더를 선택해 주세요.",
|
||||
"folder_label": "대상 폴더",
|
||||
"import_complete": "가져오기 완료",
|
||||
"import_more": "더 가져오기",
|
||||
"importing": "가져오는 중...",
|
||||
"progress_failed": "{count}개 실패",
|
||||
"progress_imported": "{count}개 가져옴",
|
||||
"progress_skipped": "{count}개 건너뜀",
|
||||
"start_import": "{count, plural, one {파일 1개 가져오기} other {파일 #개 가져오기}}",
|
||||
"success": "{count, plural, one {메시지 1개 가져옴} other {메시지 #개 가져옴}}",
|
||||
"summary_failed": "{count, plural, one {메시지 1개 실패} other {메시지 #개 실패}}",
|
||||
"summary_imported": "{count, plural, one {메시지 1개 가져옴} other {메시지 #개 가져옴}}",
|
||||
"summary_skipped": "{count, plural, one {메시지 1개 건너뜀} other {메시지 #개 건너뜀}}",
|
||||
"title": "메일 가져오기"
|
||||
},
|
||||
"loading": "불러오는 중...",
|
||||
"refresh": "새로고침"
|
||||
},
|
||||
"errors": {
|
||||
"page_error_title": "문제가 발생했어요",
|
||||
@@ -2085,7 +2124,8 @@
|
||||
"toast_error_delete_has_email": "폴더가 비어 있지 않습니다. 먼저 비우세요.",
|
||||
"placeholder_folder_name": "폴더 이름",
|
||||
"create": "만들기",
|
||||
"rename_confirm": "이름 바꾸기"
|
||||
"rename_confirm": "이름 바꾸기",
|
||||
"share_folder": "폴더 공유..."
|
||||
},
|
||||
"shortcuts": {
|
||||
"title": "단축키",
|
||||
@@ -2184,7 +2224,11 @@
|
||||
"save": "저장",
|
||||
"cancel": "취소",
|
||||
"creating": "만드는 중...",
|
||||
"updating": "업데이트 중..."
|
||||
"updating": "업데이트 중...",
|
||||
"signature_store_default": "기본 서명",
|
||||
"signature_store_mapping": "서명 매핑",
|
||||
"signature_store_reply": "답장 서명",
|
||||
"use_global_default": "전역 기본값 사용"
|
||||
},
|
||||
"sub_address": {
|
||||
"button_tooltip": "서브 어드레스 사용",
|
||||
@@ -2510,7 +2554,29 @@
|
||||
"success": "{count}개의 연락처를 성공적으로 가져왔어요",
|
||||
"failed": "가져오기 실패",
|
||||
"close": "닫기",
|
||||
"file_too_large": "파일이 너무 커요 (최대 5MB)"
|
||||
"file_too_large": "파일이 너무 커요 (최대 5MB)",
|
||||
"csv_address": "주소",
|
||||
"csv_address_book": "주소록",
|
||||
"csv_back": "뒤로",
|
||||
"csv_city": "도시",
|
||||
"csv_company": "회사",
|
||||
"csv_country": "국가",
|
||||
"csv_email": "이메일",
|
||||
"csv_first_name": "이름",
|
||||
"csv_ignore": "이 열 무시",
|
||||
"csv_job_title": "직책",
|
||||
"csv_last_name": "성",
|
||||
"csv_load_all": "전체 불러오기",
|
||||
"csv_map_columns": "열 매핑",
|
||||
"csv_nickname": "별명",
|
||||
"csv_note": "메모",
|
||||
"csv_phone": "전화번호",
|
||||
"csv_postcode": "우편번호",
|
||||
"csv_preview": "미리보기",
|
||||
"csv_preview_title": "미리보기 ({count, plural, one {1행} other {#행}})",
|
||||
"csv_region": "주/지역",
|
||||
"csv_website": "웹사이트",
|
||||
"file_types_csv": ".csv 파일"
|
||||
},
|
||||
"export": {
|
||||
"title": "연락처 내보내기",
|
||||
@@ -2569,7 +2635,10 @@
|
||||
"has_phone": "전화번호 있음",
|
||||
"has_photo": "사진 있음"
|
||||
},
|
||||
"open_categories": "카테고리 열기"
|
||||
"open_categories": "카테고리 열기",
|
||||
"delete": "삭제",
|
||||
"edit": "수정",
|
||||
"send_email": "이메일 보내기"
|
||||
},
|
||||
"calendar": {
|
||||
"title": "캘린더",
|
||||
@@ -2988,7 +3057,37 @@
|
||||
"bah": "Bahman",
|
||||
"esf": "Esfand"
|
||||
},
|
||||
"nav_open_menu": "메뉴 열기"
|
||||
"nav_open_menu": "메뉴 열기",
|
||||
"delete": "삭제",
|
||||
"duplicate": "복제",
|
||||
"edit": "수정",
|
||||
"freeBusy": {
|
||||
"busy": "바쁨",
|
||||
"check": "가능 여부 확인",
|
||||
"click_to_select": "빈 시간을 클릭해서 이 시간을 선택하세요.",
|
||||
"free": "한가함",
|
||||
"hide": "가능 여부 숨기기",
|
||||
"loading": "불러오는 중...",
|
||||
"no_participants": "참석자를 추가하면 가능 여부를 확인할 수 있어요.",
|
||||
"tentative": "미정",
|
||||
"timezone": "시간대",
|
||||
"title": "가능 여부",
|
||||
"unavailable": "부재중",
|
||||
"unknown": "정보 없음"
|
||||
},
|
||||
"resources": {
|
||||
"clear_all": "모두 지우기",
|
||||
"filter_all": "전체",
|
||||
"hide": "리소스 숨기기",
|
||||
"no_resources": "사용 가능한 리소스가 없어요",
|
||||
"remove": "{name} 제거",
|
||||
"search_placeholder": "리소스 검색...",
|
||||
"title": "리소스",
|
||||
"type_equipment": "장비",
|
||||
"type_other": "기타",
|
||||
"type_room": "회의실",
|
||||
"type_vehicle": "차량"
|
||||
}
|
||||
},
|
||||
"advanced_search": {
|
||||
"title": "상세 검색",
|
||||
@@ -3153,7 +3252,8 @@
|
||||
"open_folder_tree": "폴더 트리 열기",
|
||||
"other_accounts": "다른 계정",
|
||||
"migration_title": "파일 업데이트 중…",
|
||||
"migration_description": "폴더와 파일을 올바른 구조로 정리하고 있습니다. 이 작업은 한 번만 수행됩니다."
|
||||
"migration_description": "폴더와 파일을 올바른 구조로 정리하고 있습니다. 이 작업은 한 번만 수행됩니다.",
|
||||
"send_as_attachment": "첨부 파일로 보내기"
|
||||
},
|
||||
"smime": {
|
||||
"your_certificates": "내 인증서",
|
||||
@@ -3308,7 +3408,14 @@
|
||||
"readWrite": "읽기 및 쓰기",
|
||||
"manager": "관리자",
|
||||
"custom": "사용자 지정"
|
||||
}
|
||||
},
|
||||
"accept": "수락",
|
||||
"decline": "거절",
|
||||
"no_shares_by_me": "아직 공유한 항목이 없습니다.",
|
||||
"no_shares_with_me": "아직 공유받은 폴더가 없습니다.",
|
||||
"shared_by": "공유한 사람",
|
||||
"tab_shared_by_me": "내가 공유함",
|
||||
"tab_shared_with_me": "나와 공유됨"
|
||||
},
|
||||
"quote_header": {
|
||||
"reply_line": "{date}에 {from}님이 작성:",
|
||||
@@ -3324,5 +3431,55 @@
|
||||
"install": "설치",
|
||||
"dont_remind": "다시 알리지 않음",
|
||||
"dismiss_aria": "설치 프롬프트 닫기"
|
||||
},
|
||||
"signatures": {
|
||||
"add_signature": "서명 추가",
|
||||
"default": "기본",
|
||||
"default_signature": {
|
||||
"description": "발신자별로 다르게 설정하지 않으면 새 메시지에 사용돼요.",
|
||||
"label": "기본 서명"
|
||||
},
|
||||
"delete_message": "정말 \"{name}\"을(를) 삭제할까요? 이 작업은 되돌릴 수 없어요.",
|
||||
"delete_title": "서명을 삭제할까요?",
|
||||
"description": "메일을 작성하거나 답장할 때 사용할 서명을 만들고 관리해 보세요.",
|
||||
"duplicate": "복제",
|
||||
"edit_signature": "서명 수정",
|
||||
"editor_label": "서명",
|
||||
"html_preview_label": "HTML 미리보기",
|
||||
"name_label": "이름",
|
||||
"name_placeholder": "예: 업무, 개인",
|
||||
"name_required": "이름을 입력해 주세요",
|
||||
"new_signature": "새 서명",
|
||||
"no_signature": "서명 없음",
|
||||
"no_signatures": "아직 서명이 없어요",
|
||||
"per_identity_signatures": {
|
||||
"description": "발신자별로 기본 서명과 답장 서명을 다르게 설정할 수 있어요.",
|
||||
"label": "발신자별 서명"
|
||||
},
|
||||
"plain_text_preview_label": "일반 텍스트 미리보기",
|
||||
"reply": "답장",
|
||||
"reply_signature": {
|
||||
"description": "발신자별로 다르게 설정하지 않으면 답장하거나 전달할 때 사용돼요.",
|
||||
"label": "답장 서명"
|
||||
},
|
||||
"show_editor": "편집기 표시",
|
||||
"show_preview": "미리보기 표시",
|
||||
"title": "서명",
|
||||
"toolbar": {
|
||||
"align_center": "가운데 정렬",
|
||||
"align_left": "왼쪽 정렬",
|
||||
"align_right": "오른쪽 정렬",
|
||||
"bold": "굵게",
|
||||
"bullet_list": "글머리 기호 목록",
|
||||
"italic": "기울임꼴",
|
||||
"link": "링크",
|
||||
"ordered_list": "번호 매기기 목록",
|
||||
"remove_color": "색 제거",
|
||||
"strikethrough": "취소선",
|
||||
"text_color": "글자 색",
|
||||
"underline": "밑줄"
|
||||
},
|
||||
"use_global_default": "전역 기본값 사용",
|
||||
"your_signatures": "내 서명 ({count})"
|
||||
}
|
||||
}
|
||||
|
||||
+168
-11
@@ -567,7 +567,8 @@
|
||||
"copied": "Nokopēts!",
|
||||
"copy_failed": "Neizdevās nokopēt"
|
||||
},
|
||||
"send_now": "Sūtīt tagad"
|
||||
"send_now": "Sūtīt tagad",
|
||||
"create_appointment": "Izveidot pasākumu"
|
||||
},
|
||||
"email_composer": {
|
||||
"read_receipt_on": "Pieprasīts lasīšanas apstiprinājums (noklikšķiniet, lai atspējotu)",
|
||||
@@ -712,7 +713,10 @@
|
||||
"delete_table": "Dzēst tabulu",
|
||||
"pick_size": "Izvēlēties izmēru"
|
||||
},
|
||||
"send_filing_warning": "Nosūtīts - bet pēcapstrāde neizdevās, var palikt novecojis melnraksts."
|
||||
"send_filing_warning": "Nosūtīts - bet pēcapstrāde neizdevās, var palikt novecojis melnraksts.",
|
||||
"insert_signature": "Ievietot parakstu",
|
||||
"no_signature": "Nav paraksta",
|
||||
"select_signature": "Izvēlēties parakstu"
|
||||
},
|
||||
"confirm_dialog": {
|
||||
"confirm": "Apstiprināt",
|
||||
@@ -888,7 +892,10 @@
|
||||
"downloads": "Lejupielādes",
|
||||
"content_senders": "Saturs un sūtītāji",
|
||||
"about_data": "Par un dati",
|
||||
"debug": "Atkļūdošana"
|
||||
"debug": "Atkļūdošana",
|
||||
"import": "Imports",
|
||||
"sharing": "Koplietošana",
|
||||
"signatures": "Paraksti"
|
||||
},
|
||||
"tab_groups": {
|
||||
"general": "Vispārīgi",
|
||||
@@ -2007,7 +2014,39 @@
|
||||
"scoped": {
|
||||
"back": "Atpakaļ uz manu kontu",
|
||||
"managing": "Pārvalda: {name}"
|
||||
}
|
||||
},
|
||||
"importer": {
|
||||
"action_label": "Importēt",
|
||||
"cancel": "Atcelt",
|
||||
"choose_files": "Izvēlēties failus",
|
||||
"conflict_copy": "Saglabāt abus",
|
||||
"conflict_description": "Izvēlieties, kas jādara, ja importētais ziņojums jau pastāv.",
|
||||
"conflict_label": "Dublikātu apstrāde",
|
||||
"conflict_replace": "Aizstāt dublikātus",
|
||||
"conflict_skip": "Izlaist dublikātus",
|
||||
"description": "Importējiet e-pasta ziņojumus no .eml failiem izvēlētajā mapē.",
|
||||
"error_details": "{count, plural, one {# kļūda} other {# kļūdas}}",
|
||||
"fail": "Imports neizdevās",
|
||||
"file_description": "Izvēlieties vienu vai vairākus .eml failus importēšanai.",
|
||||
"file_label": "Faili",
|
||||
"files_selected": "{count, plural, one {Izvēlēts # fails} other {Izvēlēti # faili}}",
|
||||
"folder_description": "Izvēlieties mapi, kurā importēt ziņojumus.",
|
||||
"folder_label": "Mērķa mape",
|
||||
"import_complete": "Imports pabeigts",
|
||||
"import_more": "Importēt vēl",
|
||||
"importing": "Importē...",
|
||||
"progress_failed": "{count} neizdevās",
|
||||
"progress_imported": "{count} importēti",
|
||||
"progress_skipped": "{count} izlaisti",
|
||||
"start_import": "{count, plural, one {Importēt # failu} other {Importēt # failus}}",
|
||||
"success": "{count, plural, one {# ziņojums importēts} other {# ziņojumi importēti}}",
|
||||
"summary_failed": "{count, plural, one {# ziņojums neizdevās} other {# ziņojumi neizdevās}}",
|
||||
"summary_imported": "{count, plural, one {# ziņojums importēts} other {# ziņojumi importēti}}",
|
||||
"summary_skipped": "{count, plural, one {# ziņojums izlaists} other {# ziņojumi izlaisti}}",
|
||||
"title": "Importēt pastu"
|
||||
},
|
||||
"loading": "Ielādē...",
|
||||
"refresh": "Atsvaidzināt"
|
||||
},
|
||||
"errors": {
|
||||
"page_error_title": "Kaut kas nogāja griezi",
|
||||
@@ -2085,7 +2124,8 @@
|
||||
"toast_error_delete_has_email": "Mape nav tukša. Vispirms iztukšojiet to.",
|
||||
"placeholder_folder_name": "Mapes nosaukums",
|
||||
"create": "Izveidot",
|
||||
"rename_confirm": "Pārsaukt"
|
||||
"rename_confirm": "Pārsaukt",
|
||||
"share_folder": "Kopīgot mapi..."
|
||||
},
|
||||
"shortcuts": {
|
||||
"title": "Īsinājumtaustiņi",
|
||||
@@ -2184,7 +2224,11 @@
|
||||
"save": "Saglabāt identitāti",
|
||||
"cancel": "Atcelt",
|
||||
"creating": "Izveido...",
|
||||
"updating": "Atjaunina..."
|
||||
"updating": "Atjaunina...",
|
||||
"signature_store_default": "Noklusējuma paraksts",
|
||||
"signature_store_mapping": "Paraksta piesaiste",
|
||||
"signature_store_reply": "Atbildes paraksts",
|
||||
"use_global_default": "Izmantot globālo noklusējumu"
|
||||
},
|
||||
"sub_address": {
|
||||
"button_tooltip": "Izmantot apakšadresi",
|
||||
@@ -2506,7 +2550,29 @@
|
||||
"success": "Importēts {count, plural, one {1 kontakts} other {# kontakti}}",
|
||||
"failed": "Imports neizdevās",
|
||||
"close": "Aizvērt",
|
||||
"file_too_large": "Fails ir pārāk liels (maks. 5 MB)"
|
||||
"file_too_large": "Fails ir pārāk liels (maks. 5 MB)",
|
||||
"csv_address": "Adrese",
|
||||
"csv_address_book": "Adrešu grāmata",
|
||||
"csv_back": "Atpakaļ",
|
||||
"csv_city": "Pilsēta",
|
||||
"csv_company": "Uzņēmums",
|
||||
"csv_country": "Valsts",
|
||||
"csv_email": "E-pasts",
|
||||
"csv_first_name": "Vārds",
|
||||
"csv_ignore": "Ignorēt šo kolonnu",
|
||||
"csv_job_title": "Amats",
|
||||
"csv_last_name": "Uzvārds",
|
||||
"csv_load_all": "Ielādēt visu",
|
||||
"csv_map_columns": "Piesaistīt kolonnas",
|
||||
"csv_nickname": "Segvārds",
|
||||
"csv_note": "Piezīme",
|
||||
"csv_phone": "Tālrunis",
|
||||
"csv_postcode": "Pasta indekss",
|
||||
"csv_preview": "Priekšskatījums",
|
||||
"csv_preview_title": "Priekšskatījums ({count, plural, one {# rinda} other {# rindas}})",
|
||||
"csv_region": "Novads/reģions",
|
||||
"csv_website": "Tīmekļa vietne",
|
||||
"file_types_csv": ".csv faili"
|
||||
},
|
||||
"export": {
|
||||
"title": "Kontaktu eksports",
|
||||
@@ -2569,7 +2635,10 @@
|
||||
"has_phone": "Ar tālruni",
|
||||
"has_photo": "Ar foto"
|
||||
},
|
||||
"open_categories": "Atvērt kategorijas"
|
||||
"open_categories": "Atvērt kategorijas",
|
||||
"delete": "Dzēst",
|
||||
"edit": "Rediģēt",
|
||||
"send_email": "Sūtīt e-pastu"
|
||||
},
|
||||
"calendar": {
|
||||
"title": "Kalendārs",
|
||||
@@ -2988,7 +3057,37 @@
|
||||
"bah": "Bahman",
|
||||
"esf": "Esfand"
|
||||
},
|
||||
"nav_open_menu": "Atvērt izvēlni"
|
||||
"nav_open_menu": "Atvērt izvēlni",
|
||||
"delete": "Dzēst",
|
||||
"duplicate": "Dublēt",
|
||||
"edit": "Rediģēt",
|
||||
"freeBusy": {
|
||||
"busy": "Aizņemts",
|
||||
"check": "Pārbaudīt pieejamību",
|
||||
"click_to_select": "Noklikšķiniet uz brīva laika, lai izvēlētos šo laiku",
|
||||
"free": "Brīvs",
|
||||
"hide": "Slēpt pieejamību",
|
||||
"loading": "Ielādē...",
|
||||
"no_participants": "Pievienojiet dalībniekus, lai pārbaudītu pieejamību.",
|
||||
"tentative": "Pagaidām",
|
||||
"timezone": "Laika josla",
|
||||
"title": "Pieejamība",
|
||||
"unavailable": "Prombūtnē",
|
||||
"unknown": "Nav informācijas"
|
||||
},
|
||||
"resources": {
|
||||
"clear_all": "Notīrīt visu",
|
||||
"filter_all": "Visi",
|
||||
"hide": "Slēpt resursus",
|
||||
"no_resources": "Resursi nav pieejami",
|
||||
"remove": "Noņemt {name}",
|
||||
"search_placeholder": "Meklēt resursus...",
|
||||
"title": "Resursi",
|
||||
"type_equipment": "Aprīkojums",
|
||||
"type_other": "Cits",
|
||||
"type_room": "Telpas",
|
||||
"type_vehicle": "Transportlīdzekļi"
|
||||
}
|
||||
},
|
||||
"advanced_search": {
|
||||
"title": "Izvērstā meklēšana",
|
||||
@@ -3153,7 +3252,8 @@
|
||||
"open_folder_tree": "Atvērt mapju koku",
|
||||
"other_accounts": "Citi konti",
|
||||
"migration_title": "Notiek jūsu failu atjaunināšana…",
|
||||
"migration_description": "Mapes un faili tiek sakārtoti pareizajā struktūrā. Tas notiek tikai vienu reizi."
|
||||
"migration_description": "Mapes un faili tiek sakārtoti pareizajā struktūrā. Tas notiek tikai vienu reizi.",
|
||||
"send_as_attachment": "Nosūtīt kā pielikumu"
|
||||
},
|
||||
"smime": {
|
||||
"your_certificates": "Jūsu sertifikāti",
|
||||
@@ -3308,7 +3408,14 @@
|
||||
"readWrite": "Lasīšana un rakstīšana",
|
||||
"manager": "Pārvaldnieks",
|
||||
"custom": "Pielāgots"
|
||||
}
|
||||
},
|
||||
"accept": "Pieņemt",
|
||||
"decline": "Noraidīt",
|
||||
"no_shares_by_me": "Jūs vēl neko neesat kopīgojis.",
|
||||
"no_shares_with_me": "Ar jums vēl nav kopīgota neviena mape.",
|
||||
"shared_by": "Kopīgoja",
|
||||
"tab_shared_by_me": "Manis kopīgots",
|
||||
"tab_shared_with_me": "Kopīgots ar mani"
|
||||
},
|
||||
"quote_header": {
|
||||
"reply_line": "{date} {from} rakstīja:",
|
||||
@@ -3324,5 +3431,55 @@
|
||||
"install": "Instalēt",
|
||||
"dont_remind": "Vairs man neatgādināt",
|
||||
"dismiss_aria": "Aizvērt instalēšanas paziņojumu"
|
||||
},
|
||||
"signatures": {
|
||||
"add_signature": "Pievienot parakstu",
|
||||
"default": "Noklusējuma",
|
||||
"default_signature": {
|
||||
"description": "Tiek izmantots jauniem ziņojumiem, ja vien tas nav pārrakstīts katrai identitātei atsevišķi.",
|
||||
"label": "Noklusējuma paraksts"
|
||||
},
|
||||
"delete_message": "Vai tiešām vēlaties dzēst \"{name}\"? Šo darbību nevar atcelt.",
|
||||
"delete_title": "Dzēst parakstu?",
|
||||
"description": "Izveidojiet un pārvaldiet e-pasta parakstus, ko izmantot, rakstot vai atbildot uz vēstulēm.",
|
||||
"duplicate": "Dublēt",
|
||||
"edit_signature": "Rediģēt parakstu",
|
||||
"editor_label": "Paraksts",
|
||||
"html_preview_label": "HTML priekšskatījums",
|
||||
"name_label": "Nosaukums",
|
||||
"name_placeholder": "piem., Darbs, Personīgi",
|
||||
"name_required": "Nosaukums ir obligāts",
|
||||
"new_signature": "Jauns paraksts",
|
||||
"no_signature": "Nav paraksta",
|
||||
"no_signatures": "Paraksti vēl nav izveidoti",
|
||||
"per_identity_signatures": {
|
||||
"description": "Pārrakstiet noklusējuma un atbildes parakstu atsevišķām identitātēm.",
|
||||
"label": "Paraksti pa identitātēm"
|
||||
},
|
||||
"plain_text_preview_label": "Vienkāršā teksta priekšskatījums",
|
||||
"reply": "Atbildes",
|
||||
"reply_signature": {
|
||||
"description": "Tiek izmantots, atbildot vai pārsūtot, ja vien tas nav pārrakstīts katrai identitātei atsevišķi.",
|
||||
"label": "Atbildes paraksts"
|
||||
},
|
||||
"show_editor": "Rādīt redaktoru",
|
||||
"show_preview": "Rādīt priekšskatījumu",
|
||||
"title": "Paraksti",
|
||||
"toolbar": {
|
||||
"align_center": "Centrēt",
|
||||
"align_left": "Līdzināt pa kreisi",
|
||||
"align_right": "Līdzināt pa labi",
|
||||
"bold": "Treknraksts",
|
||||
"bullet_list": "Aizzīmju saraksts",
|
||||
"italic": "Kursīvs",
|
||||
"link": "Saite",
|
||||
"ordered_list": "Numurēts saraksts",
|
||||
"remove_color": "Noņemt krāsu",
|
||||
"strikethrough": "Pārsvītrots",
|
||||
"text_color": "Teksta krāsa",
|
||||
"underline": "Pasvītrots"
|
||||
},
|
||||
"use_global_default": "Izmantot globālo noklusējumu",
|
||||
"your_signatures": "Jūsu paraksti ({count})"
|
||||
}
|
||||
}
|
||||
|
||||
+168
-11
@@ -567,7 +567,8 @@
|
||||
"copied": "Gekopieerd!",
|
||||
"copy_failed": "Kopiëren mislukt"
|
||||
},
|
||||
"send_now": "Nu verzenden"
|
||||
"send_now": "Nu verzenden",
|
||||
"create_appointment": "Afspraak maken"
|
||||
},
|
||||
"email_composer": {
|
||||
"read_receipt_on": "Leesbevestiging aangevraagd (klik om uit te schakelen)",
|
||||
@@ -712,7 +713,10 @@
|
||||
"delete_table": "Tabel verwijderen",
|
||||
"pick_size": "Grootte kiezen"
|
||||
},
|
||||
"send_filing_warning": "Verzonden - maar het opruimen daarna is mislukt, mogelijk blijft een oud concept staan."
|
||||
"send_filing_warning": "Verzonden - maar het opruimen daarna is mislukt, mogelijk blijft een oud concept staan.",
|
||||
"insert_signature": "Handtekening invoegen",
|
||||
"no_signature": "Geen handtekening",
|
||||
"select_signature": "Handtekening selecteren"
|
||||
},
|
||||
"confirm_dialog": {
|
||||
"confirm": "Bevestigen",
|
||||
@@ -888,7 +892,10 @@
|
||||
"downloads": "Downloads",
|
||||
"content_senders": "Inhoud en afzenders",
|
||||
"about_data": "Over en gegevens",
|
||||
"debug": "Debuggen"
|
||||
"debug": "Debuggen",
|
||||
"import": "Importeren",
|
||||
"sharing": "Delen",
|
||||
"signatures": "Handtekeningen"
|
||||
},
|
||||
"tab_groups": {
|
||||
"general": "Algemeen",
|
||||
@@ -2007,7 +2014,39 @@
|
||||
"scoped": {
|
||||
"back": "Terug naar mijn account",
|
||||
"managing": "Beheren: {name}"
|
||||
}
|
||||
},
|
||||
"importer": {
|
||||
"action_label": "Importeren",
|
||||
"cancel": "Annuleren",
|
||||
"choose_files": "Bestanden kiezen",
|
||||
"conflict_copy": "Beide behouden",
|
||||
"conflict_description": "Kies wat er moet gebeuren als een geïmporteerd bericht al bestaat.",
|
||||
"conflict_label": "Omgaan met duplicaten",
|
||||
"conflict_replace": "Duplicaten vervangen",
|
||||
"conflict_skip": "Duplicaten overslaan",
|
||||
"description": "Importeer e-mailberichten uit .eml-bestanden in een map.",
|
||||
"error_details": "{count, plural, one {# fout} other {# fouten}}",
|
||||
"fail": "Importeren mislukt",
|
||||
"file_description": "Selecteer een of meer .eml-bestanden om te importeren.",
|
||||
"file_label": "Bestanden",
|
||||
"files_selected": "{count, plural, one {# bestand geselecteerd} other {# bestanden geselecteerd}}",
|
||||
"folder_description": "Kies de map waarin de berichten worden geïmporteerd.",
|
||||
"folder_label": "Doelmap",
|
||||
"import_complete": "Importeren voltooid",
|
||||
"import_more": "Meer importeren",
|
||||
"importing": "Importeren...",
|
||||
"progress_failed": "{count} mislukt",
|
||||
"progress_imported": "{count} geïmporteerd",
|
||||
"progress_skipped": "{count} overgeslagen",
|
||||
"start_import": "{count, plural, one {# bestand importeren} other {# bestanden importeren}}",
|
||||
"success": "{count, plural, one {# bericht geïmporteerd} other {# berichten geïmporteerd}}",
|
||||
"summary_failed": "{count, plural, one {# bericht mislukt} other {# berichten mislukt}}",
|
||||
"summary_imported": "{count, plural, one {# bericht geïmporteerd} other {# berichten geïmporteerd}}",
|
||||
"summary_skipped": "{count, plural, one {# bericht overgeslagen} other {# berichten overgeslagen}}",
|
||||
"title": "Mail importeren"
|
||||
},
|
||||
"loading": "Laden...",
|
||||
"refresh": "Vernieuwen"
|
||||
},
|
||||
"errors": {
|
||||
"page_error_title": "Er is iets misgegaan",
|
||||
@@ -2085,7 +2124,8 @@
|
||||
"toast_error_delete_has_email": "Map is niet leeg. Maak deze eerst leeg.",
|
||||
"placeholder_folder_name": "Mapnaam",
|
||||
"create": "Aanmaken",
|
||||
"rename_confirm": "Hernoemen"
|
||||
"rename_confirm": "Hernoemen",
|
||||
"share_folder": "Map delen..."
|
||||
},
|
||||
"shortcuts": {
|
||||
"title": "Sneltoetsen",
|
||||
@@ -2184,7 +2224,11 @@
|
||||
"save": "Identiteit opslaan",
|
||||
"cancel": "Annuleren",
|
||||
"creating": "Aanmaken...",
|
||||
"updating": "Bijwerken..."
|
||||
"updating": "Bijwerken...",
|
||||
"signature_store_default": "Standaardhandtekening",
|
||||
"signature_store_mapping": "Handtekeningtoewijzing",
|
||||
"signature_store_reply": "Antwoordhandtekening",
|
||||
"use_global_default": "Algemene standaardinstelling gebruiken"
|
||||
},
|
||||
"sub_address": {
|
||||
"button_tooltip": "Sub-adres gebruiken",
|
||||
@@ -2510,7 +2554,29 @@
|
||||
"success": "{count, plural, one {1 contact geïmporteerd} other {# contacten geïmporteerd}}",
|
||||
"failed": "Import mislukt",
|
||||
"close": "Sluiten",
|
||||
"file_too_large": "Bestand is te groot (max 5 MB)"
|
||||
"file_too_large": "Bestand is te groot (max 5 MB)",
|
||||
"csv_address": "Adres",
|
||||
"csv_address_book": "Adresboek",
|
||||
"csv_back": "Terug",
|
||||
"csv_city": "Plaats",
|
||||
"csv_company": "Bedrijf",
|
||||
"csv_country": "Land",
|
||||
"csv_email": "E-mail",
|
||||
"csv_first_name": "Voornaam",
|
||||
"csv_ignore": "Deze kolom negeren",
|
||||
"csv_job_title": "Functietitel",
|
||||
"csv_last_name": "Achternaam",
|
||||
"csv_load_all": "Alles laden",
|
||||
"csv_map_columns": "Kolommen koppelen",
|
||||
"csv_nickname": "Bijnaam",
|
||||
"csv_note": "Notitie",
|
||||
"csv_phone": "Telefoon",
|
||||
"csv_postcode": "Postcode",
|
||||
"csv_preview": "Voorbeeld",
|
||||
"csv_preview_title": "Voorbeeld ({count, plural, one {# rij} other {# rijen}})",
|
||||
"csv_region": "Staat/Regio",
|
||||
"csv_website": "Website",
|
||||
"file_types_csv": ".csv-bestanden"
|
||||
},
|
||||
"export": {
|
||||
"title": "Contacten exporteren",
|
||||
@@ -2569,7 +2635,10 @@
|
||||
"has_phone": "Met telefoon",
|
||||
"has_photo": "Met foto"
|
||||
},
|
||||
"open_categories": "Categorieën openen"
|
||||
"open_categories": "Categorieën openen",
|
||||
"delete": "Verwijderen",
|
||||
"edit": "Bewerken",
|
||||
"send_email": "E-mail verzenden"
|
||||
},
|
||||
"calendar": {
|
||||
"title": "Agenda",
|
||||
@@ -2988,7 +3057,37 @@
|
||||
"bah": "Bahman",
|
||||
"esf": "Esfand"
|
||||
},
|
||||
"nav_open_menu": "Menu openen"
|
||||
"nav_open_menu": "Menu openen",
|
||||
"delete": "Verwijderen",
|
||||
"duplicate": "Dupliceren",
|
||||
"edit": "Bewerken",
|
||||
"freeBusy": {
|
||||
"busy": "Bezet",
|
||||
"check": "Beschikbaarheid controleren",
|
||||
"click_to_select": "Klik op een vrij tijdslot om deze tijd te selecteren",
|
||||
"free": "Vrij",
|
||||
"hide": "Beschikbaarheid verbergen",
|
||||
"loading": "Laden...",
|
||||
"no_participants": "Voeg deelnemers toe om de beschikbaarheid te controleren.",
|
||||
"tentative": "Voorlopig",
|
||||
"timezone": "Tijdzone",
|
||||
"title": "Beschikbaarheid",
|
||||
"unavailable": "Afwezig",
|
||||
"unknown": "Geen informatie"
|
||||
},
|
||||
"resources": {
|
||||
"clear_all": "Alles wissen",
|
||||
"filter_all": "Alle",
|
||||
"hide": "Hulpbronnen verbergen",
|
||||
"no_resources": "Geen hulpbronnen beschikbaar",
|
||||
"remove": "{name} verwijderen",
|
||||
"search_placeholder": "Hulpbronnen zoeken...",
|
||||
"title": "Hulpbronnen",
|
||||
"type_equipment": "Apparatuur",
|
||||
"type_other": "Overig",
|
||||
"type_room": "Ruimtes",
|
||||
"type_vehicle": "Voertuigen"
|
||||
}
|
||||
},
|
||||
"advanced_search": {
|
||||
"title": "Geavanceerd zoeken",
|
||||
@@ -3153,7 +3252,8 @@
|
||||
"open_folder_tree": "Mappenstructuur openen",
|
||||
"other_accounts": "Andere accounts",
|
||||
"migration_title": "Je bestanden worden bijgewerkt…",
|
||||
"migration_description": "Mappen en bestanden worden in de juiste structuur georganiseerd. Dit gebeurt slechts één keer."
|
||||
"migration_description": "Mappen en bestanden worden in de juiste structuur georganiseerd. Dit gebeurt slechts één keer.",
|
||||
"send_as_attachment": "Als bijlage verzenden"
|
||||
},
|
||||
"smime": {
|
||||
"your_certificates": "Uw certificaten",
|
||||
@@ -3308,7 +3408,14 @@
|
||||
"readWrite": "Lezen en schrijven",
|
||||
"manager": "Beheerder",
|
||||
"custom": "Aangepast"
|
||||
}
|
||||
},
|
||||
"accept": "Accepteren",
|
||||
"decline": "Weigeren",
|
||||
"no_shares_by_me": "Je hebt nog niets gedeeld.",
|
||||
"no_shares_with_me": "Nog geen mappen met je gedeeld.",
|
||||
"shared_by": "Gedeeld door",
|
||||
"tab_shared_by_me": "Gedeeld door mij",
|
||||
"tab_shared_with_me": "Gedeeld met mij"
|
||||
},
|
||||
"quote_header": {
|
||||
"reply_line": "Op {date} schreef {from}:",
|
||||
@@ -3324,5 +3431,55 @@
|
||||
"install": "Installeren",
|
||||
"dont_remind": "Niet meer herinneren",
|
||||
"dismiss_aria": "Installatiemelding sluiten"
|
||||
},
|
||||
"signatures": {
|
||||
"add_signature": "Handtekening toevoegen",
|
||||
"default": "Standaard",
|
||||
"default_signature": {
|
||||
"description": "Gebruikt voor nieuwe berichten, tenzij dit per identiteit is overschreven.",
|
||||
"label": "Standaardhandtekening"
|
||||
},
|
||||
"delete_message": "Weet je zeker dat je \"{name}\" wilt verwijderen? Dit kan niet ongedaan worden gemaakt.",
|
||||
"delete_title": "Handtekening verwijderen?",
|
||||
"description": "Maak en beheer e-mailhandtekeningen om te gebruiken bij het opstellen of beantwoorden van berichten.",
|
||||
"duplicate": "Dupliceren",
|
||||
"edit_signature": "Handtekening bewerken",
|
||||
"editor_label": "Handtekening",
|
||||
"html_preview_label": "HTML-voorbeeld",
|
||||
"name_label": "Naam",
|
||||
"name_placeholder": "bijv. Werk, Persoonlijk",
|
||||
"name_required": "Naam is vereist",
|
||||
"new_signature": "Nieuwe handtekening",
|
||||
"no_signature": "Geen handtekening",
|
||||
"no_signatures": "Nog geen handtekeningen",
|
||||
"per_identity_signatures": {
|
||||
"description": "Overschrijf de standaard- en antwoordhandtekening voor individuele identiteiten.",
|
||||
"label": "Handtekeningen per identiteit"
|
||||
},
|
||||
"plain_text_preview_label": "Voorbeeld platte tekst",
|
||||
"reply": "Antwoord",
|
||||
"reply_signature": {
|
||||
"description": "Gebruikt bij het beantwoorden of doorsturen, tenzij dit per identiteit is overschreven.",
|
||||
"label": "Antwoordhandtekening"
|
||||
},
|
||||
"show_editor": "Editor tonen",
|
||||
"show_preview": "Voorbeeld tonen",
|
||||
"title": "Handtekeningen",
|
||||
"toolbar": {
|
||||
"align_center": "Centreren",
|
||||
"align_left": "Links uitlijnen",
|
||||
"align_right": "Rechts uitlijnen",
|
||||
"bold": "Vet",
|
||||
"bullet_list": "Opsommingslijst",
|
||||
"italic": "Cursief",
|
||||
"link": "Link",
|
||||
"ordered_list": "Genummerde lijst",
|
||||
"remove_color": "Kleur verwijderen",
|
||||
"strikethrough": "Doorhalen",
|
||||
"text_color": "Tekstkleur",
|
||||
"underline": "Onderstrepen"
|
||||
},
|
||||
"use_global_default": "Algemene standaardinstelling gebruiken",
|
||||
"your_signatures": "Jouw handtekeningen ({count})"
|
||||
}
|
||||
}
|
||||
|
||||
+168
-11
@@ -567,7 +567,8 @@
|
||||
"copied": "Skopiowano!",
|
||||
"copy_failed": "Nie udało się skopiować"
|
||||
},
|
||||
"send_now": "Wyślij teraz"
|
||||
"send_now": "Wyślij teraz",
|
||||
"create_appointment": "Utwórz wydarzenie"
|
||||
},
|
||||
"email_composer": {
|
||||
"read_receipt_on": "Zażądano potwierdzenia przeczytania (kliknij, aby wyłączyć)",
|
||||
@@ -712,7 +713,10 @@
|
||||
"delete_table": "Usuń tabelę",
|
||||
"pick_size": "Wybierz rozmiar"
|
||||
},
|
||||
"send_filing_warning": "Wysłano - ale późniejsze porządkowanie nie powiodło się, może pozostać nieaktualna wersja robocza."
|
||||
"send_filing_warning": "Wysłano - ale późniejsze porządkowanie nie powiodło się, może pozostać nieaktualna wersja robocza.",
|
||||
"insert_signature": "Wstaw podpis",
|
||||
"no_signature": "Brak podpisu",
|
||||
"select_signature": "Wybierz podpis"
|
||||
},
|
||||
"confirm_dialog": {
|
||||
"confirm": "Potwierdź",
|
||||
@@ -888,7 +892,10 @@
|
||||
"downloads": "Pobrane",
|
||||
"content_senders": "Treść i nadawcy",
|
||||
"about_data": "O programie i dane",
|
||||
"debug": "Debugowanie"
|
||||
"debug": "Debugowanie",
|
||||
"import": "Import",
|
||||
"sharing": "Udostępnianie",
|
||||
"signatures": "Podpisy"
|
||||
},
|
||||
"tab_groups": {
|
||||
"general": "Ogólne",
|
||||
@@ -2007,7 +2014,39 @@
|
||||
"scoped": {
|
||||
"back": "Powrót do mojego konta",
|
||||
"managing": "Zarządzanie: {name}"
|
||||
}
|
||||
},
|
||||
"importer": {
|
||||
"action_label": "Importuj",
|
||||
"cancel": "Anuluj",
|
||||
"choose_files": "Wybierz pliki",
|
||||
"conflict_copy": "Zachowaj oba",
|
||||
"conflict_description": "Wybierz, co zrobić, gdy importowana wiadomość już istnieje.",
|
||||
"conflict_label": "Obsługa duplikatów",
|
||||
"conflict_replace": "Zastąp duplikaty",
|
||||
"conflict_skip": "Pomiń duplikaty",
|
||||
"description": "Importuj wiadomości e-mail z plików .eml do folderu.",
|
||||
"error_details": "{count, plural, one {# błąd} other {# błędów}}",
|
||||
"fail": "Import nie powiódł się",
|
||||
"file_description": "Wybierz jeden lub więcej plików .eml do zaimportowania.",
|
||||
"file_label": "Pliki",
|
||||
"files_selected": "{count, plural, one {# plik wybrany} other {# plików wybranych}}",
|
||||
"folder_description": "Wybierz folder, do którego mają zostać zaimportowane wiadomości.",
|
||||
"folder_label": "Folder docelowy",
|
||||
"import_complete": "Import zakończony",
|
||||
"import_more": "Importuj więcej",
|
||||
"importing": "Importowanie...",
|
||||
"progress_failed": "{count} niepowodzeń",
|
||||
"progress_imported": "{count} zaimportowanych",
|
||||
"progress_skipped": "{count} pominiętych",
|
||||
"start_import": "{count, plural, one {Importuj # plik} other {Importuj # plików}}",
|
||||
"success": "{count, plural, one {# wiadomość zaimportowana} other {# wiadomości zaimportowanych}}",
|
||||
"summary_failed": "{count, plural, one {# wiadomość nieudana} other {# wiadomości nieudanych}}",
|
||||
"summary_imported": "{count, plural, one {# wiadomość zaimportowana} other {# wiadomości zaimportowanych}}",
|
||||
"summary_skipped": "{count, plural, one {# wiadomość pominięta} other {# wiadomości pominiętych}}",
|
||||
"title": "Import poczty"
|
||||
},
|
||||
"loading": "Ładowanie...",
|
||||
"refresh": "Odśwież"
|
||||
},
|
||||
"errors": {
|
||||
"page_error_title": "Coś poszło nie tak",
|
||||
@@ -2085,7 +2124,8 @@
|
||||
"toast_error_delete_has_email": "Folder nie jest pusty. Najpierw go opróżnij.",
|
||||
"placeholder_folder_name": "Nazwa folderu",
|
||||
"create": "Utwórz",
|
||||
"rename_confirm": "Zmień nazwę"
|
||||
"rename_confirm": "Zmień nazwę",
|
||||
"share_folder": "Udostępnij folder..."
|
||||
},
|
||||
"shortcuts": {
|
||||
"title": "Skróty klawiszowe",
|
||||
@@ -2184,7 +2224,11 @@
|
||||
"save": "Zapisz tożsamość",
|
||||
"cancel": "Anuluj",
|
||||
"creating": "Tworzenie...",
|
||||
"updating": "Aktualizowanie..."
|
||||
"updating": "Aktualizowanie...",
|
||||
"signature_store_default": "Domyślny podpis",
|
||||
"signature_store_mapping": "Przypisanie podpisów",
|
||||
"signature_store_reply": "Podpis odpowiedzi",
|
||||
"use_global_default": "Użyj globalnego ustawienia domyślnego"
|
||||
},
|
||||
"sub_address": {
|
||||
"button_tooltip": "Użyj podadresu",
|
||||
@@ -2510,7 +2554,29 @@
|
||||
"success": "{count, plural, one {Zaimportowano 1 kontakt} other {Zaimportowano # kontaktów}}",
|
||||
"failed": "Import nie powiódł się",
|
||||
"close": "Zamknij",
|
||||
"file_too_large": "Plik jest za duży (maks. 5 MB)"
|
||||
"file_too_large": "Plik jest za duży (maks. 5 MB)",
|
||||
"csv_address": "Adres",
|
||||
"csv_address_book": "Książka adresowa",
|
||||
"csv_back": "Wstecz",
|
||||
"csv_city": "Miasto",
|
||||
"csv_company": "Firma",
|
||||
"csv_country": "Kraj",
|
||||
"csv_email": "E-mail",
|
||||
"csv_first_name": "Imię",
|
||||
"csv_ignore": "Ignoruj tę kolumnę",
|
||||
"csv_job_title": "Stanowisko",
|
||||
"csv_last_name": "Nazwisko",
|
||||
"csv_load_all": "Wczytaj wszystkie",
|
||||
"csv_map_columns": "Mapuj kolumny",
|
||||
"csv_nickname": "Pseudonim",
|
||||
"csv_note": "Notatka",
|
||||
"csv_phone": "Telefon",
|
||||
"csv_postcode": "Kod pocztowy",
|
||||
"csv_preview": "Podgląd",
|
||||
"csv_preview_title": "Podgląd ({count, plural, one {# wiersz} other {# wierszy}})",
|
||||
"csv_region": "Stan / region",
|
||||
"csv_website": "Strona internetowa",
|
||||
"file_types_csv": "pliki .csv"
|
||||
},
|
||||
"export": {
|
||||
"title": "Eksportuj kontakty",
|
||||
@@ -2569,7 +2635,10 @@
|
||||
"has_phone": "Z telefonem",
|
||||
"has_photo": "Ze zdjęciem"
|
||||
},
|
||||
"open_categories": "Otwórz kategorie"
|
||||
"open_categories": "Otwórz kategorie",
|
||||
"delete": "Usuń",
|
||||
"edit": "Edytuj",
|
||||
"send_email": "Wyślij e-mail"
|
||||
},
|
||||
"calendar": {
|
||||
"title": "Kalendarz",
|
||||
@@ -2988,7 +3057,37 @@
|
||||
"bah": "Bahman",
|
||||
"esf": "Esfand"
|
||||
},
|
||||
"nav_open_menu": "Otwórz menu"
|
||||
"nav_open_menu": "Otwórz menu",
|
||||
"delete": "Usuń",
|
||||
"duplicate": "Duplikuj",
|
||||
"edit": "Edytuj",
|
||||
"freeBusy": {
|
||||
"busy": "Zajęty",
|
||||
"check": "Sprawdź dostępność",
|
||||
"click_to_select": "Kliknij wolny termin, aby wybrać tę godzinę",
|
||||
"free": "Wolny",
|
||||
"hide": "Ukryj dostępność",
|
||||
"loading": "Ładowanie...",
|
||||
"no_participants": "Dodaj uczestników, aby sprawdzić dostępność.",
|
||||
"tentative": "Wstępnie",
|
||||
"timezone": "Strefa czasowa",
|
||||
"title": "Dostępność",
|
||||
"unavailable": "Poza biurem",
|
||||
"unknown": "Brak informacji"
|
||||
},
|
||||
"resources": {
|
||||
"clear_all": "Wyczyść wszystko",
|
||||
"filter_all": "Wszystkie",
|
||||
"hide": "Ukryj zasoby",
|
||||
"no_resources": "Brak dostępnych zasobów",
|
||||
"remove": "Usuń {name}",
|
||||
"search_placeholder": "Szukaj zasobów...",
|
||||
"title": "Zasoby",
|
||||
"type_equipment": "Sprzęt",
|
||||
"type_other": "Inne",
|
||||
"type_room": "Sale",
|
||||
"type_vehicle": "Pojazdy"
|
||||
}
|
||||
},
|
||||
"advanced_search": {
|
||||
"title": "Wyszukiwanie zaawansowane",
|
||||
@@ -3153,7 +3252,8 @@
|
||||
"open_folder_tree": "Otwórz drzewo folderów",
|
||||
"other_accounts": "Inne konta",
|
||||
"migration_title": "Aktualizowanie plików…",
|
||||
"migration_description": "Porządkowanie folderów i plików w odpowiedniej strukturze. Dzieje się to tylko raz."
|
||||
"migration_description": "Porządkowanie folderów i plików w odpowiedniej strukturze. Dzieje się to tylko raz.",
|
||||
"send_as_attachment": "Wyślij jako załącznik"
|
||||
},
|
||||
"smime": {
|
||||
"your_certificates": "Twoje certyfikaty",
|
||||
@@ -3308,7 +3408,14 @@
|
||||
"readWrite": "Odczyt i zapis",
|
||||
"manager": "Menedżer",
|
||||
"custom": "Niestandardowe"
|
||||
}
|
||||
},
|
||||
"accept": "Akceptuj",
|
||||
"decline": "Odrzuć",
|
||||
"no_shares_by_me": "Nie udostępniono jeszcze niczego.",
|
||||
"no_shares_with_me": "Nie udostępniono Ci jeszcze żadnych folderów.",
|
||||
"shared_by": "Udostępnione przez",
|
||||
"tab_shared_by_me": "Udostępnione przeze mnie",
|
||||
"tab_shared_with_me": "Udostępnione ze mną"
|
||||
},
|
||||
"quote_header": {
|
||||
"reply_line": "{date}, {from} napisał(a):",
|
||||
@@ -3324,5 +3431,55 @@
|
||||
"install": "Zainstaluj",
|
||||
"dont_remind": "Nie przypominaj mi więcej",
|
||||
"dismiss_aria": "Zamknij monit instalacji"
|
||||
},
|
||||
"signatures": {
|
||||
"add_signature": "Dodaj podpis",
|
||||
"default": "Domyślny",
|
||||
"default_signature": {
|
||||
"description": "Używany w nowych wiadomościach, chyba że zostanie zastąpiony dla danej tożsamości.",
|
||||
"label": "Domyślny podpis"
|
||||
},
|
||||
"delete_message": "Czy na pewno chcesz usunąć \"{name}\"? Tej operacji nie można cofnąć.",
|
||||
"delete_title": "Usunąć podpis?",
|
||||
"description": "Twórz i zarządzaj podpisami e-mail używanymi podczas pisania wiadomości lub odpowiadania na nie.",
|
||||
"duplicate": "Duplikuj",
|
||||
"edit_signature": "Edytuj podpis",
|
||||
"editor_label": "Podpis",
|
||||
"html_preview_label": "Podgląd HTML",
|
||||
"name_label": "Nazwa",
|
||||
"name_placeholder": "np. Służbowy, Prywatny",
|
||||
"name_required": "Nazwa jest wymagana",
|
||||
"new_signature": "Nowy podpis",
|
||||
"no_signature": "Brak podpisu",
|
||||
"no_signatures": "Nie ma jeszcze żadnych podpisów",
|
||||
"per_identity_signatures": {
|
||||
"description": "Zastąp domyślny podpis i podpis odpowiedzi dla poszczególnych tożsamości.",
|
||||
"label": "Podpisy dla poszczególnych tożsamości"
|
||||
},
|
||||
"plain_text_preview_label": "Podgląd tekstu",
|
||||
"reply": "Odpowiedź",
|
||||
"reply_signature": {
|
||||
"description": "Używany podczas odpowiadania lub przekazywania wiadomości dalej, chyba że zostanie zastąpiony dla danej tożsamości.",
|
||||
"label": "Podpis odpowiedzi"
|
||||
},
|
||||
"show_editor": "Pokaż edytor",
|
||||
"show_preview": "Pokaż podgląd",
|
||||
"title": "Podpisy",
|
||||
"toolbar": {
|
||||
"align_center": "Wyśrodkuj",
|
||||
"align_left": "Wyrównaj do lewej",
|
||||
"align_right": "Wyrównaj do prawej",
|
||||
"bold": "Pogrubienie",
|
||||
"bullet_list": "Lista punktowana",
|
||||
"italic": "Kursywa",
|
||||
"link": "Link",
|
||||
"ordered_list": "Lista numerowana",
|
||||
"remove_color": "Usuń kolor",
|
||||
"strikethrough": "Przekreślenie",
|
||||
"text_color": "Kolor tekstu",
|
||||
"underline": "Podkreślenie"
|
||||
},
|
||||
"use_global_default": "Użyj globalnego ustawienia domyślnego",
|
||||
"your_signatures": "Twoje podpisy ({count})"
|
||||
}
|
||||
}
|
||||
|
||||
+168
-11
@@ -567,7 +567,8 @@
|
||||
"copied": "Copiado!",
|
||||
"copy_failed": "Falha ao copiar"
|
||||
},
|
||||
"send_now": "Enviar agora"
|
||||
"send_now": "Enviar agora",
|
||||
"create_appointment": "Criar evento"
|
||||
},
|
||||
"email_composer": {
|
||||
"read_receipt_on": "Confirmação de leitura solicitada (clique para desativar)",
|
||||
@@ -712,7 +713,10 @@
|
||||
"delete_table": "Excluir tabela",
|
||||
"pick_size": "Escolher tamanho"
|
||||
},
|
||||
"send_filing_warning": "Enviado - mas a limpeza posterior falhou, um rascunho antigo pode permanecer."
|
||||
"send_filing_warning": "Enviado - mas a limpeza posterior falhou, um rascunho antigo pode permanecer.",
|
||||
"insert_signature": "Inserir assinatura",
|
||||
"no_signature": "Sem assinatura",
|
||||
"select_signature": "Selecionar assinatura"
|
||||
},
|
||||
"confirm_dialog": {
|
||||
"confirm": "Confirmar",
|
||||
@@ -888,7 +892,10 @@
|
||||
"downloads": "Downloads",
|
||||
"content_senders": "Conteúdo e remetentes",
|
||||
"about_data": "Sobre e dados",
|
||||
"debug": "Depuração"
|
||||
"debug": "Depuração",
|
||||
"import": "Importar",
|
||||
"sharing": "Compartilhamento",
|
||||
"signatures": "Assinaturas"
|
||||
},
|
||||
"tab_groups": {
|
||||
"general": "Geral",
|
||||
@@ -2007,7 +2014,39 @@
|
||||
"scoped": {
|
||||
"back": "Voltar para minha conta",
|
||||
"managing": "Gerenciando: {name}"
|
||||
}
|
||||
},
|
||||
"importer": {
|
||||
"action_label": "Importar",
|
||||
"cancel": "Cancelar",
|
||||
"choose_files": "Escolher arquivos",
|
||||
"conflict_copy": "Manter ambos",
|
||||
"conflict_description": "Escolha o que fazer quando uma mensagem importada já existir.",
|
||||
"conflict_label": "Tratamento de duplicados",
|
||||
"conflict_replace": "Substituir duplicados",
|
||||
"conflict_skip": "Ignorar duplicados",
|
||||
"description": "Importe mensagens de e-mail de arquivos .eml para uma pasta.",
|
||||
"error_details": "{count, plural, one {# erro} other {# erros}}",
|
||||
"fail": "Falha na importação",
|
||||
"file_description": "Selecione um ou mais arquivos .eml para importar.",
|
||||
"file_label": "Arquivos",
|
||||
"files_selected": "{count, plural, one {# arquivo selecionado} other {# arquivos selecionados}}",
|
||||
"folder_description": "Escolha a pasta para a qual importar as mensagens.",
|
||||
"folder_label": "Pasta de destino",
|
||||
"import_complete": "Importação concluída",
|
||||
"import_more": "Importar mais",
|
||||
"importing": "Importando...",
|
||||
"progress_failed": "{count} com falha",
|
||||
"progress_imported": "{count} importados",
|
||||
"progress_skipped": "{count} ignorados",
|
||||
"start_import": "{count, plural, one {Importar # arquivo} other {Importar # arquivos}}",
|
||||
"success": "{count, plural, one {# mensagem importada} other {# mensagens importadas}}",
|
||||
"summary_failed": "{count, plural, one {# mensagem falhou} other {# mensagens falharam}}",
|
||||
"summary_imported": "{count, plural, one {# mensagem importada} other {# mensagens importadas}}",
|
||||
"summary_skipped": "{count, plural, one {# mensagem ignorada} other {# mensagens ignoradas}}",
|
||||
"title": "Importar E-mail"
|
||||
},
|
||||
"loading": "Carregando...",
|
||||
"refresh": "Atualizar"
|
||||
},
|
||||
"errors": {
|
||||
"page_error_title": "Algo deu errado",
|
||||
@@ -2085,7 +2124,8 @@
|
||||
"toast_error_delete_has_email": "A pasta não está vazia. Esvazie-a primeiro.",
|
||||
"placeholder_folder_name": "Nome da pasta",
|
||||
"create": "Criar",
|
||||
"rename_confirm": "Renomear"
|
||||
"rename_confirm": "Renomear",
|
||||
"share_folder": "Compartilhar pasta..."
|
||||
},
|
||||
"shortcuts": {
|
||||
"title": "Atalhos de Teclado",
|
||||
@@ -2184,7 +2224,11 @@
|
||||
"save": "Salvar Identidade",
|
||||
"cancel": "Cancelar",
|
||||
"creating": "Criando...",
|
||||
"updating": "Atualizando..."
|
||||
"updating": "Atualizando...",
|
||||
"signature_store_default": "Assinatura padrão",
|
||||
"signature_store_mapping": "Mapeamento de assinatura",
|
||||
"signature_store_reply": "Assinatura de resposta",
|
||||
"use_global_default": "Usar padrão global"
|
||||
},
|
||||
"sub_address": {
|
||||
"button_tooltip": "Usar sub-endereço",
|
||||
@@ -2510,7 +2554,29 @@
|
||||
"success": "{count, plural, one {1 contato importado} other {# contatos importados}}",
|
||||
"failed": "Falha na importação",
|
||||
"close": "Fechar",
|
||||
"file_too_large": "Arquivo muito grande (máx. 5 MB)"
|
||||
"file_too_large": "Arquivo muito grande (máx. 5 MB)",
|
||||
"csv_address": "Endereço",
|
||||
"csv_address_book": "Catálogo de endereços",
|
||||
"csv_back": "Voltar",
|
||||
"csv_city": "Cidade",
|
||||
"csv_company": "Empresa",
|
||||
"csv_country": "País",
|
||||
"csv_email": "E-mail",
|
||||
"csv_first_name": "Nome",
|
||||
"csv_ignore": "Ignorar esta coluna",
|
||||
"csv_job_title": "Cargo",
|
||||
"csv_last_name": "Sobrenome",
|
||||
"csv_load_all": "Carregar tudo",
|
||||
"csv_map_columns": "Mapear colunas",
|
||||
"csv_nickname": "Apelido",
|
||||
"csv_note": "Nota",
|
||||
"csv_phone": "Telefone",
|
||||
"csv_postcode": "Código postal",
|
||||
"csv_preview": "Pré-visualização",
|
||||
"csv_preview_title": "Pré-visualização ({count, plural, one {# linha} other {# linhas}})",
|
||||
"csv_region": "Estado/Região",
|
||||
"csv_website": "Site",
|
||||
"file_types_csv": "Arquivos .csv"
|
||||
},
|
||||
"export": {
|
||||
"title": "Exportar contatos",
|
||||
@@ -2569,7 +2635,10 @@
|
||||
"has_phone": "Com telefone",
|
||||
"has_photo": "Com foto"
|
||||
},
|
||||
"open_categories": "Abrir categorias"
|
||||
"open_categories": "Abrir categorias",
|
||||
"delete": "Excluir",
|
||||
"edit": "Editar",
|
||||
"send_email": "Enviar e-mail"
|
||||
},
|
||||
"calendar": {
|
||||
"title": "Calendário",
|
||||
@@ -2988,7 +3057,37 @@
|
||||
"due_tomorrow": "Vence amanhã",
|
||||
"overdue": "Atrasada"
|
||||
},
|
||||
"nav_open_menu": "Abrir menu"
|
||||
"nav_open_menu": "Abrir menu",
|
||||
"delete": "Excluir",
|
||||
"duplicate": "Duplicar",
|
||||
"edit": "Editar",
|
||||
"freeBusy": {
|
||||
"busy": "Ocupado",
|
||||
"check": "Verificar disponibilidade",
|
||||
"click_to_select": "Clique em um horário livre para selecionar este horário",
|
||||
"free": "Livre",
|
||||
"hide": "Ocultar disponibilidade",
|
||||
"loading": "Carregando...",
|
||||
"no_participants": "Adicione participantes para verificar a disponibilidade.",
|
||||
"tentative": "Provisório",
|
||||
"timezone": "Fuso horário",
|
||||
"title": "Disponibilidade",
|
||||
"unavailable": "Fora do escritório",
|
||||
"unknown": "Sem informação"
|
||||
},
|
||||
"resources": {
|
||||
"clear_all": "Limpar tudo",
|
||||
"filter_all": "Todos",
|
||||
"hide": "Ocultar recursos",
|
||||
"no_resources": "Nenhum recurso disponível",
|
||||
"remove": "Remover {name}",
|
||||
"search_placeholder": "Pesquisar recursos...",
|
||||
"title": "Recursos",
|
||||
"type_equipment": "Equipamento",
|
||||
"type_other": "Outro",
|
||||
"type_room": "Salas",
|
||||
"type_vehicle": "Veículos"
|
||||
}
|
||||
},
|
||||
"advanced_search": {
|
||||
"title": "Pesquisa avançada",
|
||||
@@ -3153,7 +3252,8 @@
|
||||
"open_folder_tree": "Abrir árvore de pastas",
|
||||
"other_accounts": "Outras contas",
|
||||
"migration_title": "Atualizando seus arquivos…",
|
||||
"migration_description": "Organizando pastas e arquivos em sua estrutura adequada. Isso acontece apenas uma vez."
|
||||
"migration_description": "Organizando pastas e arquivos em sua estrutura adequada. Isso acontece apenas uma vez.",
|
||||
"send_as_attachment": "Enviar como anexo"
|
||||
},
|
||||
"smime": {
|
||||
"your_certificates": "Seus certificados",
|
||||
@@ -3308,7 +3408,14 @@
|
||||
"readWrite": "Leitura e escrita",
|
||||
"manager": "Gerente",
|
||||
"custom": "Personalizado"
|
||||
}
|
||||
},
|
||||
"accept": "Aceitar",
|
||||
"decline": "Recusar",
|
||||
"no_shares_by_me": "Você ainda não compartilhou nada.",
|
||||
"no_shares_with_me": "Nenhuma pasta foi compartilhada com você ainda.",
|
||||
"shared_by": "Compartilhado por",
|
||||
"tab_shared_by_me": "Compartilhado por mim",
|
||||
"tab_shared_with_me": "Compartilhado comigo"
|
||||
},
|
||||
"quote_header": {
|
||||
"reply_line": "Em {date}, {from} escreveu:",
|
||||
@@ -3324,5 +3431,55 @@
|
||||
"install": "Instalar",
|
||||
"dont_remind": "Não lembrar novamente",
|
||||
"dismiss_aria": "Dispensar aviso de instalação"
|
||||
},
|
||||
"signatures": {
|
||||
"add_signature": "Adicionar assinatura",
|
||||
"default": "Padrão",
|
||||
"default_signature": {
|
||||
"description": "Usada em novas mensagens, a menos que seja substituída por identidade.",
|
||||
"label": "Assinatura padrão"
|
||||
},
|
||||
"delete_message": "Tem certeza de que deseja excluir \"{name}\"? Esta ação não pode ser desfeita.",
|
||||
"delete_title": "Excluir assinatura?",
|
||||
"description": "Crie e gerencie assinaturas de e-mail para usar ao redigir ou responder.",
|
||||
"duplicate": "Duplicar",
|
||||
"edit_signature": "Editar assinatura",
|
||||
"editor_label": "Assinatura",
|
||||
"html_preview_label": "Pré-visualização HTML",
|
||||
"name_label": "Nome",
|
||||
"name_placeholder": "ex. Trabalho, Pessoal",
|
||||
"name_required": "Nome é obrigatório",
|
||||
"new_signature": "Nova assinatura",
|
||||
"no_signature": "Sem assinatura",
|
||||
"no_signatures": "Ainda não há assinaturas",
|
||||
"per_identity_signatures": {
|
||||
"description": "Substitua a assinatura padrão e a de resposta para identidades específicas.",
|
||||
"label": "Assinaturas por identidade"
|
||||
},
|
||||
"plain_text_preview_label": "Pré-visualização em texto simples",
|
||||
"reply": "Resposta",
|
||||
"reply_signature": {
|
||||
"description": "Usada ao responder ou encaminhar, a menos que seja substituída por identidade.",
|
||||
"label": "Assinatura de resposta"
|
||||
},
|
||||
"show_editor": "Mostrar editor",
|
||||
"show_preview": "Mostrar pré-visualização",
|
||||
"title": "Assinaturas",
|
||||
"toolbar": {
|
||||
"align_center": "Centralizar",
|
||||
"align_left": "Alinhar à esquerda",
|
||||
"align_right": "Alinhar à direita",
|
||||
"bold": "Negrito",
|
||||
"bullet_list": "Lista com marcadores",
|
||||
"italic": "Itálico",
|
||||
"link": "Link",
|
||||
"ordered_list": "Lista numerada",
|
||||
"remove_color": "Remover cor",
|
||||
"strikethrough": "Tachado",
|
||||
"text_color": "Cor do texto",
|
||||
"underline": "Sublinhado"
|
||||
},
|
||||
"use_global_default": "Usar padrão global",
|
||||
"your_signatures": "Suas assinaturas ({count})"
|
||||
}
|
||||
}
|
||||
|
||||
+167
-10
@@ -567,7 +567,8 @@
|
||||
"copied": "Copiat!",
|
||||
"copy_failed": "Copierea a eșuat"
|
||||
},
|
||||
"send_now": "Trimite acum"
|
||||
"send_now": "Trimite acum",
|
||||
"create_appointment": "Creați o programare"
|
||||
},
|
||||
"email_composer": {
|
||||
"read_receipt_on": "Solicitare confirmare de citire (faceți clic pentru a dezactiva)",
|
||||
@@ -712,7 +713,10 @@
|
||||
"delete_table": "Șterge tabelul",
|
||||
"pick_size": "Alege dimensiunea"
|
||||
},
|
||||
"send_filing_warning": "Trimis - dar curățarea ulterioară a eșuat, poate rămâne o ciornă veche."
|
||||
"send_filing_warning": "Trimis - dar curățarea ulterioară a eșuat, poate rămâne o ciornă veche.",
|
||||
"insert_signature": "Inserează semnătura",
|
||||
"no_signature": "Fără semnătură",
|
||||
"select_signature": "Selectați semnătura"
|
||||
},
|
||||
"confirm_dialog": {
|
||||
"confirm": "Confirmare",
|
||||
@@ -891,7 +895,10 @@
|
||||
"downloads": "Descărcări",
|
||||
"content_senders": "Conținut și expeditori",
|
||||
"about_data": "Despre & Date",
|
||||
"debug": "Depanare"
|
||||
"debug": "Depanare",
|
||||
"import": "Import",
|
||||
"sharing": "Partajare",
|
||||
"signatures": "Semnături"
|
||||
},
|
||||
"tab_groups": {
|
||||
"general": "Generalități",
|
||||
@@ -2007,7 +2014,39 @@
|
||||
"preview": {
|
||||
"label": "Previzualizare"
|
||||
}
|
||||
}
|
||||
},
|
||||
"importer": {
|
||||
"action_label": "Import",
|
||||
"cancel": "Anulează",
|
||||
"choose_files": "Alegeți fișierele",
|
||||
"conflict_copy": "Păstrează ambele",
|
||||
"conflict_description": "Alegeți ce se întâmplă atunci când un mesaj importat există deja.",
|
||||
"conflict_label": "Gestionarea duplicatelor",
|
||||
"conflict_replace": "Înlocuiește duplicatele",
|
||||
"conflict_skip": "Omite duplicatele",
|
||||
"description": "Importați mesaje de e-mail din fișiere .eml într-un dosar.",
|
||||
"error_details": "{count, plural, one {# eroare} other {# erori}}",
|
||||
"fail": "Importul a eșuat",
|
||||
"file_description": "Selectați unul sau mai multe fișiere .eml pentru a le importa.",
|
||||
"file_label": "Fișiere",
|
||||
"files_selected": "{count, plural, one {# fișier selectat} other {# fișiere selectate}}",
|
||||
"folder_description": "Alegeți dosarul în care se vor importa mesajele.",
|
||||
"folder_label": "Dosar de destinație",
|
||||
"import_complete": "Import finalizat",
|
||||
"import_more": "Importă mai multe",
|
||||
"importing": "Se importă...",
|
||||
"progress_failed": "{count} eșuate",
|
||||
"progress_imported": "{count} importate",
|
||||
"progress_skipped": "{count} omise",
|
||||
"start_import": "{count, plural, one {Importă # fișier} other {Importă # fișiere}}",
|
||||
"success": "{count, plural, one {# mesaj importat} other {# mesaje importate}}",
|
||||
"summary_failed": "{count, plural, one {# mesaj eșuat} other {# mesaje eșuate}}",
|
||||
"summary_imported": "{count, plural, one {# mesaj importat} other {# mesaje importate}}",
|
||||
"summary_skipped": "{count, plural, one {# mesaj omis} other {# mesaje omise}}",
|
||||
"title": "Import mesaje"
|
||||
},
|
||||
"loading": "Se încarcă...",
|
||||
"refresh": "Reîmprospătează"
|
||||
},
|
||||
"errors": {
|
||||
"page_error_title": "A apărut o eroare",
|
||||
@@ -2085,7 +2124,8 @@
|
||||
"toast_error_rename": "Nu s-a putut redenumi folderul",
|
||||
"toast_error_delete": "Nu s-a putut șterge folderul",
|
||||
"toast_error_delete_has_children": "Dosarul conține subdosare. Ștergeți-le mai întâi.",
|
||||
"toast_error_delete_has_email": "Dosarul nu este gol. Goliți-l mai întâi."
|
||||
"toast_error_delete_has_email": "Dosarul nu este gol. Goliți-l mai întâi.",
|
||||
"share_folder": "Partajare dosar..."
|
||||
},
|
||||
"shortcuts": {
|
||||
"title": "Comenzi rapide de la tastatură",
|
||||
@@ -2184,7 +2224,11 @@
|
||||
"save": "Salvați identitatea",
|
||||
"cancel": "Anulează",
|
||||
"creating": "Se creează...",
|
||||
"updating": "Se actualizează..."
|
||||
"updating": "Se actualizează...",
|
||||
"signature_store_default": "Semnătură implicită",
|
||||
"signature_store_mapping": "Mapare semnături",
|
||||
"signature_store_reply": "Semnătură pentru răspuns",
|
||||
"use_global_default": "Utilizați valoarea implicită globală"
|
||||
},
|
||||
"sub_address": {
|
||||
"button_tooltip": "Utilizați subadrese",
|
||||
@@ -2511,7 +2555,29 @@
|
||||
"success": "{count, plural, one {1 contact importat} few {# contacte importate} other {# de contacte importate}}",
|
||||
"failed": "Importul a eșuat",
|
||||
"close": "Închide",
|
||||
"file_too_large": "Fișierul este prea mare (max. 5 MB)"
|
||||
"file_too_large": "Fișierul este prea mare (max. 5 MB)",
|
||||
"csv_address": "Adresă",
|
||||
"csv_address_book": "Agendă",
|
||||
"csv_back": "Înapoi",
|
||||
"csv_city": "Oraș",
|
||||
"csv_company": "Companie",
|
||||
"csv_country": "Țară",
|
||||
"csv_email": "E-mail",
|
||||
"csv_first_name": "Prenume",
|
||||
"csv_ignore": "Ignoră această coloană",
|
||||
"csv_job_title": "Funcție",
|
||||
"csv_last_name": "Nume de familie",
|
||||
"csv_load_all": "Încarcă tot",
|
||||
"csv_map_columns": "Mapare coloane",
|
||||
"csv_nickname": "Pseudonim",
|
||||
"csv_note": "Notă",
|
||||
"csv_phone": "Telefon",
|
||||
"csv_postcode": "Cod poștal",
|
||||
"csv_preview": "Previzualizare",
|
||||
"csv_preview_title": "Previzualizare ({count, plural, one {# rând} other {# rânduri}})",
|
||||
"csv_region": "Stat/Regiune",
|
||||
"csv_website": "Site web",
|
||||
"file_types_csv": "fișiere .csv"
|
||||
},
|
||||
"export": {
|
||||
"title": "Exportați contactele",
|
||||
@@ -2569,7 +2635,10 @@
|
||||
"has_email": "Are e-mail",
|
||||
"has_phone": "Are telefon",
|
||||
"has_photo": "Are fotografie"
|
||||
}
|
||||
},
|
||||
"delete": "Șterge",
|
||||
"edit": "Editare",
|
||||
"send_email": "Trimite e-mail"
|
||||
},
|
||||
"calendar": {
|
||||
"title": "Calendar",
|
||||
@@ -2988,6 +3057,36 @@
|
||||
"due_today": "Astăzi",
|
||||
"due_tomorrow": "Mâine",
|
||||
"overdue": "Restant"
|
||||
},
|
||||
"delete": "Șterge",
|
||||
"duplicate": "Duplică",
|
||||
"edit": "Editare",
|
||||
"freeBusy": {
|
||||
"busy": "Ocupat",
|
||||
"check": "Verifică disponibilitatea",
|
||||
"click_to_select": "Faceți clic pe un interval liber pentru a selecta această oră",
|
||||
"free": "Liber",
|
||||
"hide": "Ascunde disponibilitatea",
|
||||
"loading": "Se încarcă...",
|
||||
"no_participants": "Adăugați participanți pentru a verifica disponibilitatea.",
|
||||
"tentative": "Provizoriu",
|
||||
"timezone": "Fus orar",
|
||||
"title": "Disponibilitate",
|
||||
"unavailable": "În afara biroului",
|
||||
"unknown": "Fără informații"
|
||||
},
|
||||
"resources": {
|
||||
"clear_all": "Șterge tot",
|
||||
"filter_all": "Toate",
|
||||
"hide": "Ascunde resursele",
|
||||
"no_resources": "Nu sunt resurse disponibile",
|
||||
"remove": "Elimină {name}",
|
||||
"search_placeholder": "Căutare resurse...",
|
||||
"title": "Resurse",
|
||||
"type_equipment": "Echipamente",
|
||||
"type_other": "Altele",
|
||||
"type_room": "Săli",
|
||||
"type_vehicle": "Vehicule"
|
||||
}
|
||||
},
|
||||
"sharing": {
|
||||
@@ -3011,7 +3110,14 @@
|
||||
"readWrite": "Citire și scriere",
|
||||
"manager": "Manager",
|
||||
"custom": "Personalizat"
|
||||
}
|
||||
},
|
||||
"accept": "Acceptă",
|
||||
"decline": "Refuză",
|
||||
"no_shares_by_me": "Nu ați partajat încă nimic.",
|
||||
"no_shares_with_me": "Niciun dosar partajat cu dvs. încă.",
|
||||
"shared_by": "Partajat de",
|
||||
"tab_shared_by_me": "Partajate de mine",
|
||||
"tab_shared_with_me": "Partajate cu mine"
|
||||
},
|
||||
"advanced_search": {
|
||||
"title": "Căutare avansată",
|
||||
@@ -3176,7 +3282,8 @@
|
||||
"disabled_description": "Încărcarea fișierelor de dimensiuni mari prin intermediul WebDAV poate provoca instabilitate în Stalwart /RocksDB, inclusiv blocări din cauza epuizării memoriei și utilizare irecuperabilă a spațiului pe disc. Este posibil ca fișierele șterse să nu fie eliminate imediat din spațiul de stocare blob. Această funcție nu este recomandată pentru mediile de producție.",
|
||||
"stability_warning": "Încărcarea fișierelor de dimensiuni mari poate provoca instabilitatea serverului. Este posibil ca fișierele șterse să nu fie eliminate imediat din spațiul de stocare. Utilizați cu precauție.",
|
||||
"migration_title": "Se actualizează fișierele...",
|
||||
"migration_description": "Organizarea dosarelor și a fișierelor în structura corespunzătoare. Această operațiune se efectuează o singură dată."
|
||||
"migration_description": "Organizarea dosarelor și a fișierelor în structura corespunzătoare. Această operațiune se efectuează o singură dată.",
|
||||
"send_as_attachment": "Trimite ca atașament"
|
||||
},
|
||||
"smime": {
|
||||
"your_certificates": "Certificatele dvs.",
|
||||
@@ -3324,5 +3431,55 @@
|
||||
"install": "Instalați",
|
||||
"dont_remind": "Nu-mi mai reaminti",
|
||||
"dismiss_aria": "Ignorați solicitarea de instalare"
|
||||
},
|
||||
"signatures": {
|
||||
"add_signature": "Adăugați semnătură",
|
||||
"default": "Implicit",
|
||||
"default_signature": {
|
||||
"description": "Utilizată pentru mesajele noi, cu excepția cazului în care este suprascrisă pentru o anumită identitate.",
|
||||
"label": "Semnătură implicită"
|
||||
},
|
||||
"delete_message": "Sunteți sigur că doriți să ștergeți \"{name}\"? Această acțiune nu poate fi anulată.",
|
||||
"delete_title": "Ștergeți semnătura?",
|
||||
"description": "Creați și gestionați semnături de e-mail pentru a le utiliza la redactare sau răspuns.",
|
||||
"duplicate": "Duplică",
|
||||
"edit_signature": "Editați semnătura",
|
||||
"editor_label": "Semnătură",
|
||||
"html_preview_label": "Previzualizare HTML",
|
||||
"name_label": "Nume",
|
||||
"name_placeholder": "de ex. Serviciu, Personal",
|
||||
"name_required": "Numele este obligatoriu",
|
||||
"new_signature": "Semnătură nouă",
|
||||
"no_signature": "Fără semnătură",
|
||||
"no_signatures": "Nicio semnătură încă",
|
||||
"per_identity_signatures": {
|
||||
"description": "Suprascrieți semnătura implicită și cea de răspuns pentru identități individuale.",
|
||||
"label": "Semnături pe identitate"
|
||||
},
|
||||
"plain_text_preview_label": "Previzualizare text simplu",
|
||||
"reply": "Răspuns",
|
||||
"reply_signature": {
|
||||
"description": "Utilizată la răspuns sau redirecționare, cu excepția cazului în care este suprascrisă pentru o anumită identitate.",
|
||||
"label": "Semnătură pentru răspuns"
|
||||
},
|
||||
"show_editor": "Afișează editorul",
|
||||
"show_preview": "Afișează previzualizarea",
|
||||
"title": "Semnături",
|
||||
"toolbar": {
|
||||
"align_center": "Centrare",
|
||||
"align_left": "Aliniere la stânga",
|
||||
"align_right": "Aliniere la dreapta",
|
||||
"bold": "Aldin",
|
||||
"bullet_list": "Listă cu marcatori",
|
||||
"italic": "Cursiv",
|
||||
"link": "Link",
|
||||
"ordered_list": "Listă numerotată",
|
||||
"remove_color": "Elimină culoarea",
|
||||
"strikethrough": "Tăiat",
|
||||
"text_color": "Culoarea textului",
|
||||
"underline": "Subliniat"
|
||||
},
|
||||
"use_global_default": "Utilizați valoarea implicită globală",
|
||||
"your_signatures": "Semnăturile dvs. ({count})"
|
||||
}
|
||||
}
|
||||
|
||||
+168
-11
@@ -567,7 +567,8 @@
|
||||
"copied": "Скопировано!",
|
||||
"copy_failed": "Не удалось скопировать"
|
||||
},
|
||||
"send_now": "Отправить сейчас"
|
||||
"send_now": "Отправить сейчас",
|
||||
"create_appointment": "Создать встречу"
|
||||
},
|
||||
"email_composer": {
|
||||
"read_receipt_on": "Запрошено уведомление о прочтении (нажмите, чтобы отключить)",
|
||||
@@ -712,7 +713,10 @@
|
||||
"delete_table": "Удалить таблицу",
|
||||
"pick_size": "Выбрать размер"
|
||||
},
|
||||
"send_filing_warning": "Отправлено - но последующая очистка не удалась, может остаться устаревший черновик."
|
||||
"send_filing_warning": "Отправлено - но последующая очистка не удалась, может остаться устаревший черновик.",
|
||||
"insert_signature": "Вставить подпись",
|
||||
"no_signature": "Без подписи",
|
||||
"select_signature": "Выбрать подпись"
|
||||
},
|
||||
"confirm_dialog": {
|
||||
"confirm": "Подтвердить",
|
||||
@@ -888,7 +892,10 @@
|
||||
"downloads": "Загрузки",
|
||||
"content_senders": "Содержимое и отправители",
|
||||
"about_data": "О программе и данные",
|
||||
"debug": "Отладка"
|
||||
"debug": "Отладка",
|
||||
"import": "Импорт",
|
||||
"sharing": "Общий доступ",
|
||||
"signatures": "Подписи"
|
||||
},
|
||||
"tab_groups": {
|
||||
"general": "Общие",
|
||||
@@ -2007,7 +2014,39 @@
|
||||
"scoped": {
|
||||
"back": "Назад к моей учётной записи",
|
||||
"managing": "Управление: {name}"
|
||||
}
|
||||
},
|
||||
"importer": {
|
||||
"action_label": "Импорт",
|
||||
"cancel": "Отмена",
|
||||
"choose_files": "Выбрать файлы",
|
||||
"conflict_copy": "Сохранить оба",
|
||||
"conflict_description": "Выберите, что делать, если импортируемое сообщение уже существует.",
|
||||
"conflict_label": "Обработка дубликатов",
|
||||
"conflict_replace": "Заменить дубликаты",
|
||||
"conflict_skip": "Пропустить дубликаты",
|
||||
"description": "Импортируйте сообщения электронной почты из файлов .eml в папку.",
|
||||
"error_details": "{count, plural, one {# ошибка} other {# ошибок}}",
|
||||
"fail": "Не удалось выполнить импорт",
|
||||
"file_description": "Выберите один или несколько файлов .eml для импорта.",
|
||||
"file_label": "Файлы",
|
||||
"files_selected": "{count, plural, one {# файл выбран} other {# файлов выбрано}}",
|
||||
"folder_description": "Выберите папку, в которую нужно импортировать сообщения.",
|
||||
"folder_label": "Папка назначения",
|
||||
"import_complete": "Импорт завершён",
|
||||
"import_more": "Импортировать ещё",
|
||||
"importing": "Импортирование...",
|
||||
"progress_failed": "{count} не удалось",
|
||||
"progress_imported": "{count} импортировано",
|
||||
"progress_skipped": "{count} пропущено",
|
||||
"start_import": "{count, plural, one {Импортировать # файл} other {Импортировать # файлов}}",
|
||||
"success": "{count, plural, one {# сообщение импортировано} other {# сообщений импортировано}}",
|
||||
"summary_failed": "{count, plural, one {# сообщение не импортировано} other {# сообщений не импортировано}}",
|
||||
"summary_imported": "{count, plural, one {# сообщение импортировано} other {# сообщений импортировано}}",
|
||||
"summary_skipped": "{count, plural, one {# сообщение пропущено} other {# сообщений пропущено}}",
|
||||
"title": "Импорт почты"
|
||||
},
|
||||
"loading": "Загрузка...",
|
||||
"refresh": "Обновить"
|
||||
},
|
||||
"errors": {
|
||||
"page_error_title": "Что-то пошло не так",
|
||||
@@ -2085,7 +2124,8 @@
|
||||
"toast_error_delete_has_email": "Папка не пуста. Сначала очистите её.",
|
||||
"placeholder_folder_name": "Имя папки",
|
||||
"create": "Создать",
|
||||
"rename_confirm": "Переименовать"
|
||||
"rename_confirm": "Переименовать",
|
||||
"share_folder": "Поделиться папкой..."
|
||||
},
|
||||
"shortcuts": {
|
||||
"title": "Сочетания клавиш",
|
||||
@@ -2184,7 +2224,11 @@
|
||||
"save": "Сохранить идентификацию",
|
||||
"cancel": "Отмена",
|
||||
"creating": "Создание...",
|
||||
"updating": "Обновление..."
|
||||
"updating": "Обновление...",
|
||||
"signature_store_default": "Подпись по умолчанию",
|
||||
"signature_store_mapping": "Сопоставление подписей",
|
||||
"signature_store_reply": "Подпись для ответа",
|
||||
"use_global_default": "Использовать значение по умолчанию"
|
||||
},
|
||||
"sub_address": {
|
||||
"button_tooltip": "Использовать суб-адрес",
|
||||
@@ -2510,7 +2554,29 @@
|
||||
"success": "{count, plural, one {1 контакт импортирован} other {# контактов импортировано}}",
|
||||
"failed": "Импорт не выполнен",
|
||||
"close": "Закрыть",
|
||||
"file_too_large": "Файл слишком большой (макс. 5 МБ)"
|
||||
"file_too_large": "Файл слишком большой (макс. 5 МБ)",
|
||||
"csv_address": "Адрес",
|
||||
"csv_address_book": "Адресная книга",
|
||||
"csv_back": "Назад",
|
||||
"csv_city": "Город",
|
||||
"csv_company": "Компания",
|
||||
"csv_country": "Страна",
|
||||
"csv_email": "Email",
|
||||
"csv_first_name": "Имя",
|
||||
"csv_ignore": "Игнорировать этот столбец",
|
||||
"csv_job_title": "Должность",
|
||||
"csv_last_name": "Фамилия",
|
||||
"csv_load_all": "Загрузить все",
|
||||
"csv_map_columns": "Сопоставить столбцы",
|
||||
"csv_nickname": "Псевдоним",
|
||||
"csv_note": "Заметка",
|
||||
"csv_phone": "Телефон",
|
||||
"csv_postcode": "Почтовый индекс",
|
||||
"csv_preview": "Предпросмотр",
|
||||
"csv_preview_title": "Предпросмотр ({count, plural, one {# строка} other {# строк}})",
|
||||
"csv_region": "Область/регион",
|
||||
"csv_website": "Веб-сайт",
|
||||
"file_types_csv": "Файлы .csv"
|
||||
},
|
||||
"export": {
|
||||
"title": "Экспорт контактов",
|
||||
@@ -2569,7 +2635,10 @@
|
||||
"has_phone": "С телефоном",
|
||||
"has_photo": "С фото"
|
||||
},
|
||||
"open_categories": "Открыть категории"
|
||||
"open_categories": "Открыть категории",
|
||||
"delete": "Удалить",
|
||||
"edit": "Редактировать",
|
||||
"send_email": "Отправить письмо"
|
||||
},
|
||||
"calendar": {
|
||||
"title": "Календарь",
|
||||
@@ -2988,7 +3057,37 @@
|
||||
"bah": "Bahman",
|
||||
"esf": "Esfand"
|
||||
},
|
||||
"nav_open_menu": "Открыть меню"
|
||||
"nav_open_menu": "Открыть меню",
|
||||
"delete": "Удалить",
|
||||
"duplicate": "Дублировать",
|
||||
"edit": "Редактировать",
|
||||
"freeBusy": {
|
||||
"busy": "Занято",
|
||||
"check": "Проверить доступность",
|
||||
"click_to_select": "Нажмите на свободный слот, чтобы выбрать это время",
|
||||
"free": "Свободно",
|
||||
"hide": "Скрыть доступность",
|
||||
"loading": "Загрузка...",
|
||||
"no_participants": "Добавьте участников, чтобы проверить доступность.",
|
||||
"tentative": "Предварительно",
|
||||
"timezone": "Часовой пояс",
|
||||
"title": "Доступность",
|
||||
"unavailable": "Отсутствует",
|
||||
"unknown": "Нет данных"
|
||||
},
|
||||
"resources": {
|
||||
"clear_all": "Очистить всё",
|
||||
"filter_all": "Все",
|
||||
"hide": "Скрыть ресурсы",
|
||||
"no_resources": "Нет доступных ресурсов",
|
||||
"remove": "Удалить {name}",
|
||||
"search_placeholder": "Поиск ресурсов...",
|
||||
"title": "Ресурсы",
|
||||
"type_equipment": "Оборудование",
|
||||
"type_other": "Другое",
|
||||
"type_room": "Помещения",
|
||||
"type_vehicle": "Транспорт"
|
||||
}
|
||||
},
|
||||
"advanced_search": {
|
||||
"title": "Расширенный поиск",
|
||||
@@ -3153,7 +3252,8 @@
|
||||
"open_folder_tree": "Открыть дерево папок",
|
||||
"other_accounts": "Другие учётные записи",
|
||||
"migration_title": "Обновление ваших файлов…",
|
||||
"migration_description": "Папки и файлы упорядочиваются в правильную структуру. Это происходит только один раз."
|
||||
"migration_description": "Папки и файлы упорядочиваются в правильную структуру. Это происходит только один раз.",
|
||||
"send_as_attachment": "Отправить как вложение"
|
||||
},
|
||||
"smime": {
|
||||
"your_certificates": "Ваши сертификаты",
|
||||
@@ -3308,7 +3408,14 @@
|
||||
"readWrite": "Чтение и запись",
|
||||
"manager": "Управляющий",
|
||||
"custom": "Пользовательский"
|
||||
}
|
||||
},
|
||||
"accept": "Принять",
|
||||
"decline": "Отклонить",
|
||||
"no_shares_by_me": "Вы пока ничего не предоставили в общий доступ.",
|
||||
"no_shares_with_me": "Пока нет папок, к которым вам предоставлен доступ.",
|
||||
"shared_by": "Предоставлено",
|
||||
"tab_shared_by_me": "Предоставлено мной",
|
||||
"tab_shared_with_me": "Предоставлено мне"
|
||||
},
|
||||
"quote_header": {
|
||||
"reply_line": "{date}, {from} написал:",
|
||||
@@ -3324,5 +3431,55 @@
|
||||
"install": "Установить",
|
||||
"dont_remind": "Больше не напоминать",
|
||||
"dismiss_aria": "Закрыть запрос на установку"
|
||||
},
|
||||
"signatures": {
|
||||
"add_signature": "Добавить подпись",
|
||||
"default": "По умолчанию",
|
||||
"default_signature": {
|
||||
"description": "Используется для новых сообщений, если не переопределено для отдельной идентификации.",
|
||||
"label": "Подпись по умолчанию"
|
||||
},
|
||||
"delete_message": "Вы уверены, что хотите удалить \"{name}\"? Это действие нельзя отменить.",
|
||||
"delete_title": "Удалить подпись?",
|
||||
"description": "Создавайте и управляйте подписями электронной почты для использования при написании писем или ответе на них.",
|
||||
"duplicate": "Дублировать",
|
||||
"edit_signature": "Редактировать подпись",
|
||||
"editor_label": "Подпись",
|
||||
"html_preview_label": "Просмотр HTML",
|
||||
"name_label": "Имя",
|
||||
"name_placeholder": "напр., Работа, Личное",
|
||||
"name_required": "Имя обязательно",
|
||||
"new_signature": "Новая подпись",
|
||||
"no_signature": "Без подписи",
|
||||
"no_signatures": "Подписей пока нет",
|
||||
"per_identity_signatures": {
|
||||
"description": "Переопределите подпись по умолчанию и подпись для ответа для отдельных идентификаций.",
|
||||
"label": "Подписи для отдельных идентификаций"
|
||||
},
|
||||
"plain_text_preview_label": "Просмотр в виде обычного текста",
|
||||
"reply": "Ответ",
|
||||
"reply_signature": {
|
||||
"description": "Используется при ответе или пересылке, если не переопределено для отдельной идентификации.",
|
||||
"label": "Подпись для ответа"
|
||||
},
|
||||
"show_editor": "Показать редактор",
|
||||
"show_preview": "Показать предпросмотр",
|
||||
"title": "Подписи",
|
||||
"toolbar": {
|
||||
"align_center": "По центру",
|
||||
"align_left": "По левому краю",
|
||||
"align_right": "По правому краю",
|
||||
"bold": "Жирный",
|
||||
"bullet_list": "Маркированный список",
|
||||
"italic": "Курсив",
|
||||
"link": "Ссылка",
|
||||
"ordered_list": "Нумерованный список",
|
||||
"remove_color": "Убрать цвет",
|
||||
"strikethrough": "Зачёркнутый",
|
||||
"text_color": "Цвет текста",
|
||||
"underline": "Подчёркнутый"
|
||||
},
|
||||
"use_global_default": "Использовать значение по умолчанию",
|
||||
"your_signatures": "Ваши подписи ({count})"
|
||||
}
|
||||
}
|
||||
|
||||
+167
-10
@@ -567,7 +567,8 @@
|
||||
"copied": "Skopírované!",
|
||||
"copy_failed": "Kopírovanie zlyhalo"
|
||||
},
|
||||
"send_now": "Odoslať teraz"
|
||||
"send_now": "Odoslať teraz",
|
||||
"create_appointment": "Vytvoriť stretnutie"
|
||||
},
|
||||
"email_composer": {
|
||||
"read_receipt_on": "Potvrdenie o prečítaní požiadané (kliknutím vypnete)",
|
||||
@@ -712,7 +713,10 @@
|
||||
"delete_table": "Odstrániť tabuľku",
|
||||
"pick_size": "Vybrať veľkosť"
|
||||
},
|
||||
"send_filing_warning": "Odoslané - ale následné upratovanie zlyhalo, môže zostať zastaraný koncept."
|
||||
"send_filing_warning": "Odoslané - ale následné upratovanie zlyhalo, môže zostať zastaraný koncept.",
|
||||
"insert_signature": "Vložiť podpis",
|
||||
"no_signature": "Bez podpisu",
|
||||
"select_signature": "Vybrať podpis"
|
||||
},
|
||||
"confirm_dialog": {
|
||||
"confirm": "Potvrdiť",
|
||||
@@ -891,7 +895,10 @@
|
||||
"downloads": "Stiahnuté",
|
||||
"content_senders": "Obsah a odosielatelia",
|
||||
"about_data": "Info a dáta",
|
||||
"debug": "Ladenie"
|
||||
"debug": "Ladenie",
|
||||
"import": "Import",
|
||||
"sharing": "Zdieľanie",
|
||||
"signatures": "Podpisy"
|
||||
},
|
||||
"tab_groups": {
|
||||
"general": "Všeobecné",
|
||||
@@ -2007,7 +2014,39 @@
|
||||
"preview": {
|
||||
"label": "Náhľad"
|
||||
}
|
||||
}
|
||||
},
|
||||
"importer": {
|
||||
"action_label": "Importovať",
|
||||
"cancel": "Zrušiť",
|
||||
"choose_files": "Vybrať súbory",
|
||||
"conflict_copy": "Ponechať obe",
|
||||
"conflict_description": "Vyberte, čo sa má stať, keď importovaná správa už existuje.",
|
||||
"conflict_label": "Spracovanie duplicít",
|
||||
"conflict_replace": "Nahradiť duplicity",
|
||||
"conflict_skip": "Preskočiť duplicity",
|
||||
"description": "Importujte e-mailové správy zo súborov .eml do priečinka.",
|
||||
"error_details": "{count, plural, one {# chyba} other {# chýb}}",
|
||||
"fail": "Import zlyhal",
|
||||
"file_description": "Vyberte jeden alebo viac súborov .eml na import.",
|
||||
"file_label": "Súbory",
|
||||
"files_selected": "{count, plural, one {# vybraný súbor} other {# vybraných súborov}}",
|
||||
"folder_description": "Vyberte priečinok, do ktorého sa majú správy importovať.",
|
||||
"folder_label": "Cieľový priečinok",
|
||||
"import_complete": "Import dokončený",
|
||||
"import_more": "Importovať ďalšie",
|
||||
"importing": "Importovanie...",
|
||||
"progress_failed": "{count} zlyhaných",
|
||||
"progress_imported": "{count} importovaných",
|
||||
"progress_skipped": "{count} preskočených",
|
||||
"start_import": "{count, plural, one {Importovať # súbor} other {Importovať # súborov}}",
|
||||
"success": "{count, plural, one {# správa importovaná} other {# správ importovaných}}",
|
||||
"summary_failed": "{count, plural, one {# správa zlyhaná} other {# správ zlyhaných}}",
|
||||
"summary_imported": "{count, plural, one {# správa importovaná} other {# správ importovaných}}",
|
||||
"summary_skipped": "{count, plural, one {# správa preskočená} other {# správ preskočených}}",
|
||||
"title": "Importovať poštu"
|
||||
},
|
||||
"loading": "Načítavanie...",
|
||||
"refresh": "Obnoviť"
|
||||
},
|
||||
"errors": {
|
||||
"page_error_title": "Niečo sa pokazilo",
|
||||
@@ -2085,7 +2124,8 @@
|
||||
"toast_error_rename": "Nepodarilo sa premenovať priečinok",
|
||||
"toast_error_delete": "Nepodarilo sa zmazať priečinok",
|
||||
"toast_error_delete_has_children": "Priečinok obsahuje podpriečinky. Najprv ich odstráňte.",
|
||||
"toast_error_delete_has_email": "Priečinok nie je prázdny. Najprv ho vyprázdnite."
|
||||
"toast_error_delete_has_email": "Priečinok nie je prázdny. Najprv ho vyprázdnite.",
|
||||
"share_folder": "Zdieľať priečinok..."
|
||||
},
|
||||
"shortcuts": {
|
||||
"title": "Klávesové skratky",
|
||||
@@ -2184,7 +2224,11 @@
|
||||
"save": "Uložiť identitu",
|
||||
"cancel": "Zrušiť",
|
||||
"creating": "Vytváranie...",
|
||||
"updating": "Aktualizovanie..."
|
||||
"updating": "Aktualizovanie...",
|
||||
"signature_store_default": "Predvolený podpis",
|
||||
"signature_store_mapping": "Priradenie podpisov",
|
||||
"signature_store_reply": "Podpis pre odpoveď",
|
||||
"use_global_default": "Použiť globálne predvolené"
|
||||
},
|
||||
"sub_address": {
|
||||
"button_tooltip": "Použiť podadresu",
|
||||
@@ -2511,7 +2555,29 @@
|
||||
"success": "{count, plural, one {Importovaný 1 kontakt} other {Importovaných # kontaktov}}",
|
||||
"failed": "Import zlyhal",
|
||||
"close": "Zavrieť",
|
||||
"file_too_large": "Súbor je príliš veľký (max. 5 MB)"
|
||||
"file_too_large": "Súbor je príliš veľký (max. 5 MB)",
|
||||
"csv_address": "Adresa",
|
||||
"csv_address_book": "Adresár",
|
||||
"csv_back": "Späť",
|
||||
"csv_city": "Mesto",
|
||||
"csv_company": "Spoločnosť",
|
||||
"csv_country": "Krajina",
|
||||
"csv_email": "E-mail",
|
||||
"csv_first_name": "Krstné meno",
|
||||
"csv_ignore": "Ignorovať tento stĺpec",
|
||||
"csv_job_title": "Pozícia",
|
||||
"csv_last_name": "Priezvisko",
|
||||
"csv_load_all": "Načítať všetko",
|
||||
"csv_map_columns": "Priradenie stĺpcov",
|
||||
"csv_nickname": "Prezývka",
|
||||
"csv_note": "Poznámka",
|
||||
"csv_phone": "Telefón",
|
||||
"csv_postcode": "PSČ",
|
||||
"csv_preview": "Náhľad",
|
||||
"csv_preview_title": "Náhľad ({count, plural, one {# riadok} other {# riadkov}})",
|
||||
"csv_region": "Štát / Kraj",
|
||||
"csv_website": "Webová stránka",
|
||||
"file_types_csv": "súbory .csv"
|
||||
},
|
||||
"export": {
|
||||
"title": "Exportovať kontakty",
|
||||
@@ -2569,7 +2635,10 @@
|
||||
"has_email": "Má e-mail",
|
||||
"has_phone": "Má telefón",
|
||||
"has_photo": "Má fotku"
|
||||
}
|
||||
},
|
||||
"delete": "Odstrániť",
|
||||
"edit": "Upraviť",
|
||||
"send_email": "Odoslať e-mail"
|
||||
},
|
||||
"calendar": {
|
||||
"title": "Kalendár",
|
||||
@@ -2988,6 +3057,36 @@
|
||||
"due_today": "Dnes",
|
||||
"due_tomorrow": "Zajtra",
|
||||
"overdue": "Po termíne"
|
||||
},
|
||||
"delete": "Odstrániť",
|
||||
"duplicate": "Duplikovať",
|
||||
"edit": "Upraviť",
|
||||
"freeBusy": {
|
||||
"busy": "Obsadený",
|
||||
"check": "Skontrolovať dostupnosť",
|
||||
"click_to_select": "Kliknutím na voľný termín vyberiete tento čas",
|
||||
"free": "Voľný",
|
||||
"hide": "Skryť dostupnosť",
|
||||
"loading": "Načítavanie...",
|
||||
"no_participants": "Pridajte účastníkov na kontrolu dostupnosti.",
|
||||
"tentative": "Nezáväzne",
|
||||
"timezone": "Časové pásmo",
|
||||
"title": "Dostupnosť",
|
||||
"unavailable": "Mimo kancelárie",
|
||||
"unknown": "Žiadne informácie"
|
||||
},
|
||||
"resources": {
|
||||
"clear_all": "Vymazať všetko",
|
||||
"filter_all": "Všetky",
|
||||
"hide": "Skryť zdroje",
|
||||
"no_resources": "Žiadne dostupné zdroje",
|
||||
"remove": "Odstrániť {name}",
|
||||
"search_placeholder": "Hľadať zdroje...",
|
||||
"title": "Zdroje",
|
||||
"type_equipment": "Vybavenie",
|
||||
"type_other": "Ostatné",
|
||||
"type_room": "Miestnosti",
|
||||
"type_vehicle": "Vozidlá"
|
||||
}
|
||||
},
|
||||
"sharing": {
|
||||
@@ -3011,7 +3110,14 @@
|
||||
"readWrite": "Čítanie a zápis",
|
||||
"manager": "Správca",
|
||||
"custom": "Vlastné"
|
||||
}
|
||||
},
|
||||
"accept": "Prijať",
|
||||
"decline": "Odmietnuť",
|
||||
"no_shares_by_me": "Zatiaľ ste nič nezdieľali.",
|
||||
"no_shares_with_me": "Zatiaľ s vami neboli zdieľané žiadne priečinky.",
|
||||
"shared_by": "Zdieľané od",
|
||||
"tab_shared_by_me": "Zdieľané mnou",
|
||||
"tab_shared_with_me": "Zdieľané so mnou"
|
||||
},
|
||||
"advanced_search": {
|
||||
"title": "Pokročilé hľadanie",
|
||||
@@ -3176,7 +3282,8 @@
|
||||
"disabled_description": "Nahrávanie veľkých súborov cez WebDAV môže spôsobiť nestabilitu Stalwart/RocksDB. Táto funkcia sa neodporúča v produkčnom prostredí.",
|
||||
"stability_warning": "Nahrávanie veľkých súborov môže spôsobiť nestabilitu servera. Používajte s opatrnosťou.",
|
||||
"migration_title": "Aktualizácia vašich súborov…",
|
||||
"migration_description": "Usporiadanie priečinkov a súborov do správnej štruktúry. Toto prebehne iba raz."
|
||||
"migration_description": "Usporiadanie priečinkov a súborov do správnej štruktúry. Toto prebehne iba raz.",
|
||||
"send_as_attachment": "Odoslať ako prílohu"
|
||||
},
|
||||
"smime": {
|
||||
"your_certificates": "Vaše certifikáty",
|
||||
@@ -3324,5 +3431,55 @@
|
||||
"install": "Nainštalovať",
|
||||
"dont_remind": "Viac mi to nepripomínať",
|
||||
"dismiss_aria": "Zavrieť výzvu na inštaláciu"
|
||||
},
|
||||
"signatures": {
|
||||
"add_signature": "Pridať podpis",
|
||||
"default": "Predvolený",
|
||||
"default_signature": {
|
||||
"description": "Použije sa pre nové správy, pokiaľ nie je pre danú identitu nastavený iný.",
|
||||
"label": "Predvolený podpis"
|
||||
},
|
||||
"delete_message": "Naozaj chcete odstrániť \"{name}\"? Túto akciu nie je možné vrátiť.",
|
||||
"delete_title": "Odstrániť podpis?",
|
||||
"description": "Vytvárajte a spravujte e-mailové podpisy na použitie pri písaní alebo odpovedaní.",
|
||||
"duplicate": "Duplikovať",
|
||||
"edit_signature": "Upraviť podpis",
|
||||
"editor_label": "Podpis",
|
||||
"html_preview_label": "HTML náhľad",
|
||||
"name_label": "Názov",
|
||||
"name_placeholder": "napr. Práca, Osobné",
|
||||
"name_required": "Názov je povinný",
|
||||
"new_signature": "Nový podpis",
|
||||
"no_signature": "Bez podpisu",
|
||||
"no_signatures": "Zatiaľ žiadne podpisy",
|
||||
"per_identity_signatures": {
|
||||
"description": "Prepíšte predvolený podpis a podpis pre odpoveď pre jednotlivé identity.",
|
||||
"label": "Podpisy podľa identity"
|
||||
},
|
||||
"plain_text_preview_label": "Textový náhľad",
|
||||
"reply": "Odpoveď",
|
||||
"reply_signature": {
|
||||
"description": "Použije sa pri odpovedaní alebo preposielaní, pokiaľ nie je pre danú identitu nastavený iný.",
|
||||
"label": "Podpis pre odpoveď"
|
||||
},
|
||||
"show_editor": "Zobraziť editor",
|
||||
"show_preview": "Zobraziť náhľad",
|
||||
"title": "Podpisy",
|
||||
"toolbar": {
|
||||
"align_center": "Na stred",
|
||||
"align_left": "Zarovnať doľava",
|
||||
"align_right": "Zarovnať doprava",
|
||||
"bold": "Tučné",
|
||||
"bullet_list": "Odrážkový zoznam",
|
||||
"italic": "Kurzíva",
|
||||
"link": "Odkaz",
|
||||
"ordered_list": "Číslovaný zoznam",
|
||||
"remove_color": "Odstrániť farbu",
|
||||
"strikethrough": "Prečiarknuté",
|
||||
"text_color": "Farba textu",
|
||||
"underline": "Podčiarknuté"
|
||||
},
|
||||
"use_global_default": "Použiť globálne predvolené",
|
||||
"your_signatures": "Vaše podpisy ({count})"
|
||||
}
|
||||
}
|
||||
|
||||
+168
-11
@@ -567,7 +567,8 @@
|
||||
"copied": "Kopyalandı!",
|
||||
"copy_failed": "Kopyalanamadı"
|
||||
},
|
||||
"send_now": "Şimdi gönder"
|
||||
"send_now": "Şimdi gönder",
|
||||
"create_appointment": "Randevu Oluştur"
|
||||
},
|
||||
"email_composer": {
|
||||
"read_receipt_on": "Okundu bilgisi istendi (devre dışı bırakmak için tıklayın)",
|
||||
@@ -712,7 +713,10 @@
|
||||
"delete_table": "Tabloyu sil",
|
||||
"pick_size": "Boyut seç"
|
||||
},
|
||||
"send_filing_warning": "Gönderildi - ancak sonrasındaki temizleme başarısız oldu, eski bir taslak kalabilir."
|
||||
"send_filing_warning": "Gönderildi - ancak sonrasındaki temizleme başarısız oldu, eski bir taslak kalabilir.",
|
||||
"insert_signature": "İmza ekle",
|
||||
"no_signature": "İmza yok",
|
||||
"select_signature": "İmza seç"
|
||||
},
|
||||
"confirm_dialog": {
|
||||
"confirm": "Onayla",
|
||||
@@ -888,7 +892,10 @@
|
||||
"downloads": "İndirilenler",
|
||||
"content_senders": "İçerik ve Göndericiler",
|
||||
"about_data": "Hakkında ve Veriler",
|
||||
"debug": "Hata Ayıklama"
|
||||
"debug": "Hata Ayıklama",
|
||||
"import": "İçe Aktar",
|
||||
"sharing": "Paylaşım",
|
||||
"signatures": "İmzalar"
|
||||
},
|
||||
"tab_groups": {
|
||||
"general": "Genel",
|
||||
@@ -2007,7 +2014,39 @@
|
||||
"scoped": {
|
||||
"back": "Hesabıma geri dön",
|
||||
"managing": "Yönetiliyor: {name}"
|
||||
}
|
||||
},
|
||||
"importer": {
|
||||
"action_label": "İçe Aktar",
|
||||
"cancel": "İptal",
|
||||
"choose_files": "Dosya seç",
|
||||
"conflict_copy": "İkisini de sakla",
|
||||
"conflict_description": "İçe aktarılan bir ileti zaten mevcut olduğunda ne yapılacağını seçin.",
|
||||
"conflict_label": "Yinelenen işleme",
|
||||
"conflict_replace": "Yinelenenleri değiştir",
|
||||
"conflict_skip": "Yinelenenleri atla",
|
||||
"description": ".eml dosyalarından bir klasöre e-posta iletileri içe aktarın.",
|
||||
"error_details": "{count, plural, one {# hata} other {# hata}}",
|
||||
"fail": "İçe aktarma başarısız",
|
||||
"file_description": "İçe aktarmak için bir veya daha fazla .eml dosyası seçin.",
|
||||
"file_label": "Dosyalar",
|
||||
"files_selected": "{count, plural, one {# dosya seçildi} other {# dosya seçildi}}",
|
||||
"folder_description": "İletilerin içe aktarılacağı klasörü seçin.",
|
||||
"folder_label": "Hedef klasör",
|
||||
"import_complete": "İçe aktarma tamamlandı",
|
||||
"import_more": "Daha fazla içe aktar",
|
||||
"importing": "İçe aktarılıyor...",
|
||||
"progress_failed": "{count} başarısız",
|
||||
"progress_imported": "{count} içe aktarıldı",
|
||||
"progress_skipped": "{count} atlandı",
|
||||
"start_import": "{count, plural, one {# dosyayı içe aktar} other {# dosyayı içe aktar}}",
|
||||
"success": "{count, plural, one {# ileti içe aktarıldı} other {# ileti içe aktarıldı}}",
|
||||
"summary_failed": "{count, plural, one {# ileti başarısız oldu} other {# ileti başarısız oldu}}",
|
||||
"summary_imported": "{count, plural, one {# ileti içe aktarıldı} other {# ileti içe aktarıldı}}",
|
||||
"summary_skipped": "{count, plural, one {# ileti atlandı} other {# ileti atlandı}}",
|
||||
"title": "Postayı İçe Aktar"
|
||||
},
|
||||
"loading": "Yükleniyor...",
|
||||
"refresh": "Yenile"
|
||||
},
|
||||
"errors": {
|
||||
"page_error_title": "Bir şeyler ters gitti",
|
||||
@@ -2085,7 +2124,8 @@
|
||||
"toast_error_rename": "Klasör yeniden adlandırılamadı",
|
||||
"toast_error_delete": "Klasör silinemedi",
|
||||
"toast_error_delete_has_children": "Klasörde alt klasörler var. Önce onları kaldırın.",
|
||||
"toast_error_delete_has_email": "Klasör boş değil. Önce boşaltın."
|
||||
"toast_error_delete_has_email": "Klasör boş değil. Önce boşaltın.",
|
||||
"share_folder": "Klasörü paylaş..."
|
||||
},
|
||||
"shortcuts": {
|
||||
"title": "Klavye Kısayolları",
|
||||
@@ -2184,7 +2224,11 @@
|
||||
"save": "Kimliği Kaydet",
|
||||
"cancel": "İptal",
|
||||
"creating": "Oluşturuluyor...",
|
||||
"updating": "Güncelleniyor..."
|
||||
"updating": "Güncelleniyor...",
|
||||
"signature_store_default": "Varsayılan imza",
|
||||
"signature_store_mapping": "İmza eşleştirmesi",
|
||||
"signature_store_reply": "Yanıt imzası",
|
||||
"use_global_default": "Genel varsayılanı kullan"
|
||||
},
|
||||
"sub_address": {
|
||||
"button_tooltip": "Alt adres kullan",
|
||||
@@ -2510,7 +2554,29 @@
|
||||
"success": "{count, plural, one {1 kişi içe aktarıldı} other {# kişi içe aktarıldı}}",
|
||||
"failed": "İçe aktarma başarısız",
|
||||
"close": "Kapat",
|
||||
"file_too_large": "Dosya çok büyük (maks. 5 MB)"
|
||||
"file_too_large": "Dosya çok büyük (maks. 5 MB)",
|
||||
"csv_address": "Adres",
|
||||
"csv_address_book": "Adres defteri",
|
||||
"csv_back": "Geri",
|
||||
"csv_city": "Şehir",
|
||||
"csv_company": "Şirket",
|
||||
"csv_country": "Ülke",
|
||||
"csv_email": "E-posta",
|
||||
"csv_first_name": "Ad",
|
||||
"csv_ignore": "Bu sütunu yoksay",
|
||||
"csv_job_title": "İş unvanı",
|
||||
"csv_last_name": "Soyadı",
|
||||
"csv_load_all": "Tümünü yükle",
|
||||
"csv_map_columns": "Sütunları eşleştir",
|
||||
"csv_nickname": "Takma ad",
|
||||
"csv_note": "Not",
|
||||
"csv_phone": "Telefon",
|
||||
"csv_postcode": "Posta kodu",
|
||||
"csv_preview": "Önizleme",
|
||||
"csv_preview_title": "Önizleme ({count, plural, one {# satır} other {# satır}})",
|
||||
"csv_region": "İl / Bölge",
|
||||
"csv_website": "Web sitesi",
|
||||
"file_types_csv": ".csv dosyaları"
|
||||
},
|
||||
"export": {
|
||||
"title": "Kişileri Dışa Aktar",
|
||||
@@ -2569,7 +2635,10 @@
|
||||
"has_phone": "Telefonu var",
|
||||
"has_photo": "Fotoğrafı var"
|
||||
},
|
||||
"open_categories": "Kategorileri aç"
|
||||
"open_categories": "Kategorileri aç",
|
||||
"delete": "Sil",
|
||||
"edit": "Düzenle",
|
||||
"send_email": "E-posta gönder"
|
||||
},
|
||||
"calendar": {
|
||||
"title": "Takvim",
|
||||
@@ -2988,7 +3057,37 @@
|
||||
"due_tomorrow": "Yarın",
|
||||
"overdue": "Gecikmiş"
|
||||
},
|
||||
"nav_open_menu": "Menüyü aç"
|
||||
"nav_open_menu": "Menüyü aç",
|
||||
"delete": "Sil",
|
||||
"duplicate": "Çoğalt",
|
||||
"edit": "Düzenle",
|
||||
"freeBusy": {
|
||||
"busy": "Meşgul",
|
||||
"check": "Müsaitliği kontrol et",
|
||||
"click_to_select": "Bu saati seçmek için boş bir aralığa tıklayın",
|
||||
"free": "Boş",
|
||||
"hide": "Müsaitliği gizle",
|
||||
"loading": "Yükleniyor...",
|
||||
"no_participants": "Müsaitliği kontrol etmek için katılımcı ekleyin.",
|
||||
"tentative": "Geçici",
|
||||
"timezone": "Saat Dilimi",
|
||||
"title": "Müsaitlik",
|
||||
"unavailable": "Ofis dışında",
|
||||
"unknown": "Bilgi yok"
|
||||
},
|
||||
"resources": {
|
||||
"clear_all": "Tümünü temizle",
|
||||
"filter_all": "Tümü",
|
||||
"hide": "Kaynakları gizle",
|
||||
"no_resources": "Kullanılabilir kaynak yok",
|
||||
"remove": "{name} öğesini kaldır",
|
||||
"search_placeholder": "Kaynaklarda ara...",
|
||||
"title": "Kaynaklar",
|
||||
"type_equipment": "Ekipman",
|
||||
"type_other": "Diğer",
|
||||
"type_room": "Odalar",
|
||||
"type_vehicle": "Araçlar"
|
||||
}
|
||||
},
|
||||
"sharing": {
|
||||
"title": "\"{name}\" paylaş",
|
||||
@@ -3011,7 +3110,14 @@
|
||||
"readWrite": "Okuma ve yazma",
|
||||
"manager": "Yönetici",
|
||||
"custom": "Özel"
|
||||
}
|
||||
},
|
||||
"accept": "Kabul et",
|
||||
"decline": "Reddet",
|
||||
"no_shares_by_me": "Henüz kimseyle paylaşım yapmadınız.",
|
||||
"no_shares_with_me": "Sizinle henüz paylaşılan klasör yok.",
|
||||
"shared_by": "Paylaşan",
|
||||
"tab_shared_by_me": "Benim paylaştıklarım",
|
||||
"tab_shared_with_me": "Benimle paylaşılanlar"
|
||||
},
|
||||
"advanced_search": {
|
||||
"title": "Gelişmiş Arama",
|
||||
@@ -3176,7 +3282,8 @@
|
||||
"open_folder_tree": "Klasör ağacını aç",
|
||||
"other_accounts": "Diğer hesaplar",
|
||||
"migration_title": "Dosyalarınız güncelleniyor…",
|
||||
"migration_description": "Klasörler ve dosyalar doğru yapıya göre düzenleniyor. Bu yalnızca bir kez gerçekleşir."
|
||||
"migration_description": "Klasörler ve dosyalar doğru yapıya göre düzenleniyor. Bu yalnızca bir kez gerçekleşir.",
|
||||
"send_as_attachment": "Ek Olarak Gönder"
|
||||
},
|
||||
"smime": {
|
||||
"your_certificates": "Sertifikalarınız",
|
||||
@@ -3324,5 +3431,55 @@
|
||||
"install": "Yükle",
|
||||
"dont_remind": "Bir daha hatırlatma",
|
||||
"dismiss_aria": "Yükleme istemini kapat"
|
||||
},
|
||||
"signatures": {
|
||||
"add_signature": "İmza ekle",
|
||||
"default": "Varsayılan",
|
||||
"default_signature": {
|
||||
"description": "Kimlik başına geçersiz kılınmadığı sürece yeni iletiler için kullanılır.",
|
||||
"label": "Varsayılan imza"
|
||||
},
|
||||
"delete_message": "\"{name}\" imzasını silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.",
|
||||
"delete_title": "İmza silinsin mi?",
|
||||
"description": "Yazarken veya yanıtlarken kullanmak üzere e-posta imzaları oluşturun ve yönetin.",
|
||||
"duplicate": "Çoğalt",
|
||||
"edit_signature": "İmzayı düzenle",
|
||||
"editor_label": "İmza",
|
||||
"html_preview_label": "HTML önizleme",
|
||||
"name_label": "Ad",
|
||||
"name_placeholder": "ör. İş, Kişisel",
|
||||
"name_required": "Ad gerekli",
|
||||
"new_signature": "Yeni imza",
|
||||
"no_signature": "İmza yok",
|
||||
"no_signatures": "Henüz imza yok",
|
||||
"per_identity_signatures": {
|
||||
"description": "Bireysel kimlikler için varsayılan ve yanıt imzasını geçersiz kılın.",
|
||||
"label": "Kimlik başına imzalar"
|
||||
},
|
||||
"plain_text_preview_label": "Düz metin önizleme",
|
||||
"reply": "Yanıt",
|
||||
"reply_signature": {
|
||||
"description": "Kimlik başına geçersiz kılınmadığı sürece yanıtlarken veya iletirken kullanılır.",
|
||||
"label": "Yanıt imzası"
|
||||
},
|
||||
"show_editor": "Düzenleyiciyi göster",
|
||||
"show_preview": "Önizlemeyi göster",
|
||||
"title": "İmzalar",
|
||||
"toolbar": {
|
||||
"align_center": "Ortala",
|
||||
"align_left": "Sola hizala",
|
||||
"align_right": "Sağa hizala",
|
||||
"bold": "Kalın",
|
||||
"bullet_list": "Madde işaretli liste",
|
||||
"italic": "İtalik",
|
||||
"link": "Bağlantı",
|
||||
"ordered_list": "Numaralı liste",
|
||||
"remove_color": "Rengi kaldır",
|
||||
"strikethrough": "Üstü çizili",
|
||||
"text_color": "Metin rengi",
|
||||
"underline": "Altı çizili"
|
||||
},
|
||||
"use_global_default": "Genel varsayılanı kullan",
|
||||
"your_signatures": "İmzalarınız ({count})"
|
||||
}
|
||||
}
|
||||
|
||||
+168
-11
@@ -567,7 +567,8 @@
|
||||
"copied": "Скопійовано!",
|
||||
"copy_failed": "Не вдалося скопіювати"
|
||||
},
|
||||
"send_now": "Надіслати зараз"
|
||||
"send_now": "Надіслати зараз",
|
||||
"create_appointment": "Створити зустріч"
|
||||
},
|
||||
"email_composer": {
|
||||
"read_receipt_on": "Запитано сповіщення про прочитання (натисніть, щоб вимкнути)",
|
||||
@@ -712,7 +713,10 @@
|
||||
"delete_table": "Видалити таблицю",
|
||||
"pick_size": "Вибрати розмір"
|
||||
},
|
||||
"send_filing_warning": "Надіслано - але подальше очищення не вдалося, може залишитися застаріла чернетка."
|
||||
"send_filing_warning": "Надіслано - але подальше очищення не вдалося, може залишитися застаріла чернетка.",
|
||||
"insert_signature": "Вставити підпис",
|
||||
"no_signature": "Без підпису",
|
||||
"select_signature": "Виберіть підпис"
|
||||
},
|
||||
"confirm_dialog": {
|
||||
"confirm": "Підтвердити",
|
||||
@@ -888,7 +892,10 @@
|
||||
"downloads": "Завантаження",
|
||||
"content_senders": "Вміст і відправники",
|
||||
"about_data": "Про програму та дані",
|
||||
"debug": "Налагодження"
|
||||
"debug": "Налагодження",
|
||||
"import": "Імпорт",
|
||||
"sharing": "Спільний доступ",
|
||||
"signatures": "Підписи"
|
||||
},
|
||||
"tab_groups": {
|
||||
"general": "Загальний",
|
||||
@@ -2007,7 +2014,39 @@
|
||||
"scoped": {
|
||||
"back": "Назад до мого облікового запису",
|
||||
"managing": "Керування: {name}"
|
||||
}
|
||||
},
|
||||
"importer": {
|
||||
"action_label": "Імпорт",
|
||||
"cancel": "Скасувати",
|
||||
"choose_files": "Вибрати файли",
|
||||
"conflict_copy": "Зберегти обидва",
|
||||
"conflict_description": "Виберіть, що робити, якщо імпортоване повідомлення вже існує.",
|
||||
"conflict_label": "Обробка дублікатів",
|
||||
"conflict_replace": "Замінювати дублікати",
|
||||
"conflict_skip": "Пропускати дублікати",
|
||||
"description": "Імпортуйте повідомлення електронної пошти з файлів .eml до папки.",
|
||||
"error_details": "{count, plural, one {# помилка} other {# помилок}}",
|
||||
"fail": "Не вдалося імпортувати",
|
||||
"file_description": "Виберіть один або кілька файлів .eml для імпорту.",
|
||||
"file_label": "Файли",
|
||||
"files_selected": "{count, plural, one {# файл вибрано} other {# файлів вибрано}}",
|
||||
"folder_description": "Виберіть папку, до якої імпортувати повідомлення.",
|
||||
"folder_label": "Папка призначення",
|
||||
"import_complete": "Імпорт завершено",
|
||||
"import_more": "Імпортувати ще",
|
||||
"importing": "Імпорт...",
|
||||
"progress_failed": "Помилок: {count}",
|
||||
"progress_imported": "Імпортовано: {count}",
|
||||
"progress_skipped": "Пропущено: {count}",
|
||||
"start_import": "{count, plural, one {Імпортувати # файл} other {Імпортувати # файлів}}",
|
||||
"success": "{count, plural, one {# повідомлення імпортовано} other {# повідомлень імпортовано}}",
|
||||
"summary_failed": "{count, plural, one {# повідомлення не вдалося імпортувати} other {# повідомлень не вдалося імпортувати}}",
|
||||
"summary_imported": "{count, plural, one {# повідомлення імпортовано} other {# повідомлень імпортовано}}",
|
||||
"summary_skipped": "{count, plural, one {# повідомлення пропущено} other {# повідомлень пропущено}}",
|
||||
"title": "Імпортувати пошту"
|
||||
},
|
||||
"loading": "Завантаження...",
|
||||
"refresh": "Оновити"
|
||||
},
|
||||
"errors": {
|
||||
"page_error_title": "Щось пішло не так",
|
||||
@@ -2085,7 +2124,8 @@
|
||||
"toast_error_delete_has_email": "Папка не порожня. Спочатку очистіть її.",
|
||||
"placeholder_folder_name": "Ім'я папки",
|
||||
"create": "Створити",
|
||||
"rename_confirm": "Перейменувати"
|
||||
"rename_confirm": "Перейменувати",
|
||||
"share_folder": "Поділитися папкою..."
|
||||
},
|
||||
"shortcuts": {
|
||||
"title": "Комбінації клавіш",
|
||||
@@ -2184,7 +2224,11 @@
|
||||
"save": "Зберегти ідентифікатор",
|
||||
"cancel": "Скасувати",
|
||||
"creating": "Створення...",
|
||||
"updating": "Оновлення..."
|
||||
"updating": "Оновлення...",
|
||||
"signature_store_default": "Підпис за замовчуванням",
|
||||
"signature_store_mapping": "Зіставлення підписів",
|
||||
"signature_store_reply": "Підпис для відповіді",
|
||||
"use_global_default": "Використовувати загальне значення за замовчуванням"
|
||||
},
|
||||
"sub_address": {
|
||||
"button_tooltip": "Використовуйте допоміжну адресу",
|
||||
@@ -2510,7 +2554,29 @@
|
||||
"success": "{count, plural, one {1 контакт імпортовано} few {# контакти імпортовано} many {# контактів імпортовано} other {# контактів імпортовано}}",
|
||||
"failed": "Помилка імпорту",
|
||||
"close": "Закрити",
|
||||
"file_too_large": "Файл завеликий (макс. 5 МБ)"
|
||||
"file_too_large": "Файл завеликий (макс. 5 МБ)",
|
||||
"csv_address": "Адреса",
|
||||
"csv_address_book": "Адресна книга",
|
||||
"csv_back": "Назад",
|
||||
"csv_city": "Місто",
|
||||
"csv_company": "Компанія",
|
||||
"csv_country": "Країна",
|
||||
"csv_email": "Електронна пошта",
|
||||
"csv_first_name": "Ім'я",
|
||||
"csv_ignore": "Ігнорувати цей стовпець",
|
||||
"csv_job_title": "Назва посади",
|
||||
"csv_last_name": "Прізвище",
|
||||
"csv_load_all": "Завантажити все",
|
||||
"csv_map_columns": "Зіставлення стовпців",
|
||||
"csv_nickname": "псевдонім",
|
||||
"csv_note": "Примітка",
|
||||
"csv_phone": "Телефон",
|
||||
"csv_postcode": "Поштовий індекс",
|
||||
"csv_preview": "Попередній перегляд",
|
||||
"csv_preview_title": "Попередній перегляд ({count, plural, one {# рядок} other {# рядків}})",
|
||||
"csv_region": "Штат / Регіон",
|
||||
"csv_website": "Веб-сайт",
|
||||
"file_types_csv": "файли .csv"
|
||||
},
|
||||
"export": {
|
||||
"title": "Експортувати контакти",
|
||||
@@ -2569,7 +2635,10 @@
|
||||
"has_phone": "З телефоном",
|
||||
"has_photo": "З фото"
|
||||
},
|
||||
"open_categories": "Відкрити категорії"
|
||||
"open_categories": "Відкрити категорії",
|
||||
"delete": "Видалити",
|
||||
"edit": "Редагувати",
|
||||
"send_email": "Надіслати лист"
|
||||
},
|
||||
"calendar": {
|
||||
"title": "Календар",
|
||||
@@ -2988,7 +3057,37 @@
|
||||
"bah": "Bahman",
|
||||
"esf": "Esfand"
|
||||
},
|
||||
"nav_open_menu": "Відкрити меню"
|
||||
"nav_open_menu": "Відкрити меню",
|
||||
"delete": "Видалити",
|
||||
"duplicate": "Дублювати",
|
||||
"edit": "Редагувати",
|
||||
"freeBusy": {
|
||||
"busy": "Зайнято",
|
||||
"check": "Перевірити доступність",
|
||||
"click_to_select": "Натисніть на вільний проміжок часу, щоб вибрати цей час",
|
||||
"free": "Вільно",
|
||||
"hide": "Приховати доступність",
|
||||
"loading": "Завантаження...",
|
||||
"no_participants": "Додайте учасників, щоб перевірити доступність.",
|
||||
"tentative": "Орієнтовний",
|
||||
"timezone": "Часовий пояс",
|
||||
"title": "Доступність",
|
||||
"unavailable": "Немає на місці",
|
||||
"unknown": "Немає інформації"
|
||||
},
|
||||
"resources": {
|
||||
"clear_all": "Очистити все",
|
||||
"filter_all": "все",
|
||||
"hide": "Приховати ресурси",
|
||||
"no_resources": "Немає доступних ресурсів",
|
||||
"remove": "Видалити {name}",
|
||||
"search_placeholder": "Пошук ресурсів...",
|
||||
"title": "Ресурси",
|
||||
"type_equipment": "Обладнання",
|
||||
"type_other": "інше",
|
||||
"type_room": "Кімнати",
|
||||
"type_vehicle": "Транспортні засоби"
|
||||
}
|
||||
},
|
||||
"advanced_search": {
|
||||
"title": "Розширений пошук",
|
||||
@@ -3153,7 +3252,8 @@
|
||||
"open_folder_tree": "Відкрити дерево тек",
|
||||
"other_accounts": "Інші облікові записи",
|
||||
"migration_title": "Оновлення ваших файлів…",
|
||||
"migration_description": "Папки та файли впорядковуються у правильну структуру. Це відбувається лише один раз."
|
||||
"migration_description": "Папки та файли впорядковуються у правильну структуру. Це відбувається лише один раз.",
|
||||
"send_as_attachment": "Надіслати як вкладення"
|
||||
},
|
||||
"smime": {
|
||||
"your_certificates": "Ваші сертифікати",
|
||||
@@ -3308,7 +3408,14 @@
|
||||
"readWrite": "Читання та запис",
|
||||
"manager": "Керівник",
|
||||
"custom": "Власне"
|
||||
}
|
||||
},
|
||||
"accept": "Прийняти",
|
||||
"decline": "Відхилити",
|
||||
"no_shares_by_me": "Ви ще нічим не поділилися.",
|
||||
"no_shares_with_me": "Поки що ніхто не поділився з вами папками.",
|
||||
"shared_by": "Надав доступ",
|
||||
"tab_shared_by_me": "Надані мною",
|
||||
"tab_shared_with_me": "Надані мені"
|
||||
},
|
||||
"quote_header": {
|
||||
"reply_line": "{date}, {from} написав:",
|
||||
@@ -3324,5 +3431,55 @@
|
||||
"install": "Встановити",
|
||||
"dont_remind": "Більше не нагадувати",
|
||||
"dismiss_aria": "Закрити запит на встановлення"
|
||||
},
|
||||
"signatures": {
|
||||
"add_signature": "Додати підпис",
|
||||
"default": "За замовчуванням",
|
||||
"default_signature": {
|
||||
"description": "Використовується для нових повідомлень, якщо не перевизначено для окремої ідентичності.",
|
||||
"label": "Підпис за замовчуванням"
|
||||
},
|
||||
"delete_message": "Ви впевнені, що хочете видалити \"{name}\"? Це неможливо скасувати.",
|
||||
"delete_title": "Видалити підпис?",
|
||||
"description": "Створюйте підписи електронної пошти та керуйте ними для використання під час написання чи відповіді.",
|
||||
"duplicate": "Дублювати",
|
||||
"edit_signature": "Редагувати підпис",
|
||||
"editor_label": "Підпис",
|
||||
"html_preview_label": "Попередній перегляд HTML",
|
||||
"name_label": "Назва",
|
||||
"name_placeholder": "наприклад, Робота, Особисте",
|
||||
"name_required": "Потрібно вказати назву",
|
||||
"new_signature": "Новий підпис",
|
||||
"no_signature": "Без підпису",
|
||||
"no_signatures": "Підписів ще немає",
|
||||
"per_identity_signatures": {
|
||||
"description": "Перевизначте підпис за замовчуванням і підпис для відповіді для окремих ідентичностей.",
|
||||
"label": "Підписи для окремих ідентичностей"
|
||||
},
|
||||
"plain_text_preview_label": "Попередній перегляд простого тексту",
|
||||
"reply": "Відповідь",
|
||||
"reply_signature": {
|
||||
"description": "Використовується під час відповіді чи пересилання, якщо не перевизначено для окремої ідентичності.",
|
||||
"label": "Підпис для відповіді"
|
||||
},
|
||||
"show_editor": "Показати редактор",
|
||||
"show_preview": "Показати попередній перегляд",
|
||||
"title": "Підписи",
|
||||
"toolbar": {
|
||||
"align_center": "По центру",
|
||||
"align_left": "По лівому краю",
|
||||
"align_right": "По правому краю",
|
||||
"bold": "Жирний",
|
||||
"bullet_list": "Маркований список",
|
||||
"italic": "Курсив",
|
||||
"link": "Посилання",
|
||||
"ordered_list": "Нумерований список",
|
||||
"remove_color": "Прибрати колір",
|
||||
"strikethrough": "Закреслений",
|
||||
"text_color": "Колір тексту",
|
||||
"underline": "Підкреслений"
|
||||
},
|
||||
"use_global_default": "Використовувати загальне значення за замовчуванням",
|
||||
"your_signatures": "Ваші підписи ({count})"
|
||||
}
|
||||
}
|
||||
|
||||
+168
-11
@@ -567,7 +567,8 @@
|
||||
"copied": "已复制!",
|
||||
"copy_failed": "复制失败"
|
||||
},
|
||||
"send_now": "立即发送"
|
||||
"send_now": "立即发送",
|
||||
"create_appointment": "Create Appointment"
|
||||
},
|
||||
"email_composer": {
|
||||
"read_receipt_on": "已请求已读回执(点击以关闭)",
|
||||
@@ -712,7 +713,10 @@
|
||||
"delete_table": "删除表格",
|
||||
"pick_size": "选择大小"
|
||||
},
|
||||
"send_filing_warning": "已发送,但发送后的清理失败,可能会残留旧草稿。"
|
||||
"send_filing_warning": "已发送,但发送后的清理失败,可能会残留旧草稿。",
|
||||
"insert_signature": "Insert signature",
|
||||
"no_signature": "No signature",
|
||||
"select_signature": "Select signature"
|
||||
},
|
||||
"confirm_dialog": {
|
||||
"confirm": "确认",
|
||||
@@ -888,7 +892,10 @@
|
||||
"downloads": "下载",
|
||||
"content_senders": "内容和发件人",
|
||||
"about_data": "关于和数据",
|
||||
"debug": "调试"
|
||||
"debug": "调试",
|
||||
"import": "Import",
|
||||
"sharing": "Sharing",
|
||||
"signatures": "Signatures"
|
||||
},
|
||||
"tab_groups": {
|
||||
"general": "通用",
|
||||
@@ -2007,7 +2014,39 @@
|
||||
"scoped": {
|
||||
"back": "返回我的账户",
|
||||
"managing": "管理:{name}"
|
||||
}
|
||||
},
|
||||
"importer": {
|
||||
"action_label": "Import",
|
||||
"cancel": "Cancel",
|
||||
"choose_files": "Choose files",
|
||||
"conflict_copy": "Keep both",
|
||||
"conflict_description": "Choose what to do when an imported message already exists.",
|
||||
"conflict_label": "Duplicate handling",
|
||||
"conflict_replace": "Replace duplicates",
|
||||
"conflict_skip": "Skip duplicates",
|
||||
"description": "Import email messages from .eml files into a folder.",
|
||||
"error_details": "{count, plural, one {# error} other {# errors}}",
|
||||
"fail": "Import failed",
|
||||
"file_description": "Select one or more .eml files to import.",
|
||||
"file_label": "Files",
|
||||
"files_selected": "{count, plural, one {# file selected} other {# files selected}}",
|
||||
"folder_description": "Choose the folder to import messages into.",
|
||||
"folder_label": "Destination folder",
|
||||
"import_complete": "Import complete",
|
||||
"import_more": "Import more",
|
||||
"importing": "Importing...",
|
||||
"progress_failed": "{count} failed",
|
||||
"progress_imported": "{count} imported",
|
||||
"progress_skipped": "{count} skipped",
|
||||
"start_import": "{count, plural, one {Import # file} other {Import # files}}",
|
||||
"success": "{count, plural, one {# message imported} other {# messages imported}}",
|
||||
"summary_failed": "{count, plural, one {# message failed} other {# messages failed}}",
|
||||
"summary_imported": "{count, plural, one {# message imported} other {# messages imported}}",
|
||||
"summary_skipped": "{count, plural, one {# message skipped} other {# messages skipped}}",
|
||||
"title": "Import Mail"
|
||||
},
|
||||
"loading": "Loading...",
|
||||
"refresh": "Refresh"
|
||||
},
|
||||
"errors": {
|
||||
"page_error_title": "出了点问题",
|
||||
@@ -2085,7 +2124,8 @@
|
||||
"toast_error_delete_has_email": "文件夹不为空,请先清空它。",
|
||||
"placeholder_folder_name": "文件夹名称",
|
||||
"create": "创建",
|
||||
"rename_confirm": "重命名"
|
||||
"rename_confirm": "重命名",
|
||||
"share_folder": "Share Folder..."
|
||||
},
|
||||
"shortcuts": {
|
||||
"title": "键盘快捷键",
|
||||
@@ -2184,7 +2224,11 @@
|
||||
"save": "保存身份",
|
||||
"cancel": "取消",
|
||||
"creating": "创建中...",
|
||||
"updating": "更新中..."
|
||||
"updating": "更新中...",
|
||||
"signature_store_default": "Default signature",
|
||||
"signature_store_mapping": "Signature mapping",
|
||||
"signature_store_reply": "Reply signature",
|
||||
"use_global_default": "Use global default"
|
||||
},
|
||||
"sub_address": {
|
||||
"button_tooltip": "使用子地址",
|
||||
@@ -2510,7 +2554,29 @@
|
||||
"success": "{count, plural, one {已导入 1 位联系人} other {已导入 # 位联系人}}",
|
||||
"failed": "导入失败",
|
||||
"close": "关闭",
|
||||
"file_too_large": "文件太大(最大 5 MB)"
|
||||
"file_too_large": "文件太大(最大 5 MB)",
|
||||
"csv_address": "Address",
|
||||
"csv_address_book": "Address book",
|
||||
"csv_back": "Back",
|
||||
"csv_city": "City",
|
||||
"csv_company": "Company",
|
||||
"csv_country": "Country",
|
||||
"csv_email": "Email",
|
||||
"csv_first_name": "First name",
|
||||
"csv_ignore": "Ignore this column",
|
||||
"csv_job_title": "Job title",
|
||||
"csv_last_name": "Last name",
|
||||
"csv_load_all": "Load all",
|
||||
"csv_map_columns": "Map columns",
|
||||
"csv_nickname": "Nickname",
|
||||
"csv_note": "Note",
|
||||
"csv_phone": "Phone",
|
||||
"csv_postcode": "Postal code",
|
||||
"csv_preview": "Preview",
|
||||
"csv_preview_title": "Preview ({count, plural, one {# row} other {# rows}})",
|
||||
"csv_region": "State/Region",
|
||||
"csv_website": "Website",
|
||||
"file_types_csv": ".csv files"
|
||||
},
|
||||
"export": {
|
||||
"title": "导出联系人",
|
||||
@@ -2569,7 +2635,10 @@
|
||||
"has_phone": "有电话",
|
||||
"has_photo": "有照片"
|
||||
},
|
||||
"open_categories": "打开分类"
|
||||
"open_categories": "打开分类",
|
||||
"delete": "Delete",
|
||||
"edit": "Edit",
|
||||
"send_email": "Send email"
|
||||
},
|
||||
"calendar": {
|
||||
"title": "日历",
|
||||
@@ -2988,7 +3057,37 @@
|
||||
"bah": "Bahman",
|
||||
"esf": "Esfand"
|
||||
},
|
||||
"nav_open_menu": "打开菜单"
|
||||
"nav_open_menu": "打开菜单",
|
||||
"delete": "Delete",
|
||||
"duplicate": "Duplicate",
|
||||
"edit": "Edit",
|
||||
"freeBusy": {
|
||||
"busy": "Busy",
|
||||
"check": "Check Availability",
|
||||
"click_to_select": "Click a free slot to select this time",
|
||||
"free": "Free",
|
||||
"hide": "Hide Availability",
|
||||
"loading": "Loading...",
|
||||
"no_participants": "Add participants to check availability.",
|
||||
"tentative": "Tentative",
|
||||
"timezone": "Timezone",
|
||||
"title": "Availability",
|
||||
"unavailable": "Out of office",
|
||||
"unknown": "No information"
|
||||
},
|
||||
"resources": {
|
||||
"clear_all": "Clear all",
|
||||
"filter_all": "All",
|
||||
"hide": "Hide resources",
|
||||
"no_resources": "No resources available",
|
||||
"remove": "Remove {name}",
|
||||
"search_placeholder": "Search resources...",
|
||||
"title": "Resources",
|
||||
"type_equipment": "Equipment",
|
||||
"type_other": "Other",
|
||||
"type_room": "Rooms",
|
||||
"type_vehicle": "Vehicles"
|
||||
}
|
||||
},
|
||||
"advanced_search": {
|
||||
"title": "高级搜索",
|
||||
@@ -3153,7 +3252,8 @@
|
||||
"open_folder_tree": "打开文件夹树",
|
||||
"other_accounts": "其他账户",
|
||||
"migration_title": "正在更新您的文件…",
|
||||
"migration_description": "正在将文件夹和文件整理为正确的结构。此操作仅执行一次。"
|
||||
"migration_description": "正在将文件夹和文件整理为正确的结构。此操作仅执行一次。",
|
||||
"send_as_attachment": "Send as Attachment"
|
||||
},
|
||||
"smime": {
|
||||
"your_certificates": "您的证书",
|
||||
@@ -3308,7 +3408,14 @@
|
||||
"readWrite": "读写",
|
||||
"manager": "管理员",
|
||||
"custom": "自定义"
|
||||
}
|
||||
},
|
||||
"accept": "Accept",
|
||||
"decline": "Decline",
|
||||
"no_shares_by_me": "You haven't shared anything yet.",
|
||||
"no_shares_with_me": "No folders shared with you yet.",
|
||||
"shared_by": "Shared by",
|
||||
"tab_shared_by_me": "Shared by me",
|
||||
"tab_shared_with_me": "Shared with me"
|
||||
},
|
||||
"quote_header": {
|
||||
"reply_line": "在 {date},{from} 写道:",
|
||||
@@ -3324,5 +3431,55 @@
|
||||
"install": "安装",
|
||||
"dont_remind": "不再提醒",
|
||||
"dismiss_aria": "关闭安装提示"
|
||||
},
|
||||
"signatures": {
|
||||
"add_signature": "Add signature",
|
||||
"default": "Default",
|
||||
"default_signature": {
|
||||
"description": "Used for new messages unless overridden per identity.",
|
||||
"label": "Default signature"
|
||||
},
|
||||
"delete_message": "Are you sure you want to delete \"{name}\"? This cannot be undone.",
|
||||
"delete_title": "Delete signature?",
|
||||
"description": "Create and manage email signatures to use when composing or replying.",
|
||||
"duplicate": "Duplicate",
|
||||
"edit_signature": "Edit signature",
|
||||
"editor_label": "Signature",
|
||||
"html_preview_label": "HTML preview",
|
||||
"name_label": "Name",
|
||||
"name_placeholder": "e.g., Work, Personal",
|
||||
"name_required": "Name is required",
|
||||
"new_signature": "New signature",
|
||||
"no_signature": "No signature",
|
||||
"no_signatures": "No signatures yet",
|
||||
"per_identity_signatures": {
|
||||
"description": "Override the default and reply signature for individual identities.",
|
||||
"label": "Per-identity signatures"
|
||||
},
|
||||
"plain_text_preview_label": "Plain text preview",
|
||||
"reply": "Reply",
|
||||
"reply_signature": {
|
||||
"description": "Used when replying or forwarding unless overridden per identity.",
|
||||
"label": "Reply signature"
|
||||
},
|
||||
"show_editor": "Show editor",
|
||||
"show_preview": "Show preview",
|
||||
"title": "Signatures",
|
||||
"toolbar": {
|
||||
"align_center": "Align center",
|
||||
"align_left": "Align left",
|
||||
"align_right": "Align right",
|
||||
"bold": "Bold",
|
||||
"bullet_list": "Bullet list",
|
||||
"italic": "Italic",
|
||||
"link": "Link",
|
||||
"ordered_list": "Ordered list",
|
||||
"remove_color": "Remove color",
|
||||
"strikethrough": "Strikethrough",
|
||||
"text_color": "Text color",
|
||||
"underline": "Underline"
|
||||
},
|
||||
"use_global_default": "Use global default",
|
||||
"your_signatures": "Your signatures ({count})"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,141 @@
|
||||
calendar.delete Delete
|
||||
calendar.duplicate Duplicate
|
||||
calendar.edit Edit
|
||||
calendar.freeBusy.busy Busy
|
||||
calendar.freeBusy.check Check Availability
|
||||
calendar.freeBusy.click_to_select Click a free slot to select this time
|
||||
calendar.freeBusy.free Free
|
||||
calendar.freeBusy.hide Hide Availability
|
||||
calendar.freeBusy.loading Loading...
|
||||
calendar.freeBusy.no_participants Add participants to check availability.
|
||||
calendar.freeBusy.tentative Tentative
|
||||
calendar.freeBusy.timezone Timezone
|
||||
calendar.freeBusy.title Availability
|
||||
calendar.freeBusy.unavailable Out of office
|
||||
calendar.freeBusy.unknown No information
|
||||
calendar.resources.clear_all Clear all
|
||||
calendar.resources.filter_all All
|
||||
calendar.resources.hide Hide resources
|
||||
calendar.resources.no_resources No resources available
|
||||
calendar.resources.remove Remove {name}
|
||||
calendar.resources.search_placeholder Search resources...
|
||||
calendar.resources.title Resources
|
||||
calendar.resources.type_equipment Equipment
|
||||
calendar.resources.type_other Other
|
||||
calendar.resources.type_room Rooms
|
||||
calendar.resources.type_vehicle Vehicles
|
||||
contacts.delete Delete
|
||||
contacts.edit Edit
|
||||
contacts.import.csv_address Address
|
||||
contacts.import.csv_address_book Address book
|
||||
contacts.import.csv_back Back
|
||||
contacts.import.csv_city City
|
||||
contacts.import.csv_company Company
|
||||
contacts.import.csv_country Country
|
||||
contacts.import.csv_email Email
|
||||
contacts.import.csv_first_name First name
|
||||
contacts.import.csv_ignore Ignore this column
|
||||
contacts.import.csv_job_title Job title
|
||||
contacts.import.csv_last_name Last name
|
||||
contacts.import.csv_load_all Load all
|
||||
contacts.import.csv_map_columns Map columns
|
||||
contacts.import.csv_nickname Nickname
|
||||
contacts.import.csv_note Note
|
||||
contacts.import.csv_phone Phone
|
||||
contacts.import.csv_postcode Postal code
|
||||
contacts.import.csv_preview Preview
|
||||
contacts.import.csv_preview_title Preview ({count, plural, one {# row} other {# rows}})
|
||||
contacts.import.csv_region State/Region
|
||||
contacts.import.csv_website Website
|
||||
contacts.import.file_types_csv .csv files
|
||||
contacts.send_email Send email
|
||||
email_composer.insert_signature Insert signature
|
||||
email_composer.no_signature No signature
|
||||
email_composer.select_signature Select signature
|
||||
email_viewer.create_appointment Create Appointment
|
||||
files.send_as_attachment Send as Attachment
|
||||
identities.form.signature_store_default Default signature
|
||||
identities.form.signature_store_mapping Signature mapping
|
||||
identities.form.signature_store_reply Reply signature
|
||||
identities.form.use_global_default Use global default
|
||||
mailbox_context_menu.share_folder Share Folder...
|
||||
settings.importer.action_label Import
|
||||
settings.importer.cancel Cancel
|
||||
settings.importer.choose_files Choose files
|
||||
settings.importer.conflict_copy Keep both
|
||||
settings.importer.conflict_description Choose what to do when an imported message already exists.
|
||||
settings.importer.conflict_label Duplicate handling
|
||||
settings.importer.conflict_replace Replace duplicates
|
||||
settings.importer.conflict_skip Skip duplicates
|
||||
settings.importer.description Import email messages from .eml files into a folder.
|
||||
settings.importer.error_details {count, plural, one {# error} other {# errors}}
|
||||
settings.importer.fail Import failed
|
||||
settings.importer.file_description Select one or more .eml files to import.
|
||||
settings.importer.file_label Files
|
||||
settings.importer.files_selected {count, plural, one {# file selected} other {# files selected}}
|
||||
settings.importer.folder_description Choose the folder to import messages into.
|
||||
settings.importer.folder_label Destination folder
|
||||
settings.importer.import_complete Import complete
|
||||
settings.importer.import_more Import more
|
||||
settings.importer.importing Importing...
|
||||
settings.importer.progress_failed {count} failed
|
||||
settings.importer.progress_imported {count} imported
|
||||
settings.importer.progress_skipped {count} skipped
|
||||
settings.importer.start_import {count, plural, one {Import # file} other {Import # files}}
|
||||
settings.importer.success {count, plural, one {# message imported} other {# messages imported}}
|
||||
settings.importer.summary_failed {count, plural, one {# message failed} other {# messages failed}}
|
||||
settings.importer.summary_imported {count, plural, one {# message imported} other {# messages imported}}
|
||||
settings.importer.summary_skipped {count, plural, one {# message skipped} other {# messages skipped}}
|
||||
settings.importer.title Import Mail
|
||||
settings.loading Loading...
|
||||
settings.refresh Refresh
|
||||
settings.tabs.import Import
|
||||
settings.tabs.sharing Sharing
|
||||
settings.tabs.signatures Signatures
|
||||
sharing.accept Accept
|
||||
sharing.decline Decline
|
||||
sharing.no_shares_by_me You haven't shared anything yet.
|
||||
sharing.no_shares_with_me No folders shared with you yet.
|
||||
sharing.shared_by Shared by
|
||||
sharing.tab_shared_by_me Shared by me
|
||||
sharing.tab_shared_with_me Shared with me
|
||||
signatures.add_signature Add signature
|
||||
signatures.default Default
|
||||
signatures.default_signature.description Used for new messages unless overridden per identity.
|
||||
signatures.default_signature.label Default signature
|
||||
signatures.delete_message Are you sure you want to delete "{name}"? This cannot be undone.
|
||||
signatures.delete_title Delete signature?
|
||||
signatures.description Create and manage email signatures to use when composing or replying.
|
||||
signatures.duplicate Duplicate
|
||||
signatures.edit_signature Edit signature
|
||||
signatures.editor_label Signature
|
||||
signatures.html_preview_label HTML preview
|
||||
signatures.name_label Name
|
||||
signatures.name_placeholder e.g., Work, Personal
|
||||
signatures.name_required Name is required
|
||||
signatures.new_signature New signature
|
||||
signatures.no_signature No signature
|
||||
signatures.no_signatures No signatures yet
|
||||
signatures.per_identity_signatures.description Override the default and reply signature for individual identities.
|
||||
signatures.per_identity_signatures.label Per-identity signatures
|
||||
signatures.plain_text_preview_label Plain text preview
|
||||
signatures.reply Reply
|
||||
signatures.reply_signature.description Used when replying or forwarding unless overridden per identity.
|
||||
signatures.reply_signature.label Reply signature
|
||||
signatures.show_editor Show editor
|
||||
signatures.show_preview Show preview
|
||||
signatures.title Signatures
|
||||
signatures.toolbar.align_center Align center
|
||||
signatures.toolbar.align_left Align left
|
||||
signatures.toolbar.align_right Align right
|
||||
signatures.toolbar.bold Bold
|
||||
signatures.toolbar.bullet_list Bullet list
|
||||
signatures.toolbar.italic Italic
|
||||
signatures.toolbar.link Link
|
||||
signatures.toolbar.ordered_list Ordered list
|
||||
signatures.toolbar.remove_color Remove color
|
||||
signatures.toolbar.strikethrough Strikethrough
|
||||
signatures.toolbar.text_color Text color
|
||||
signatures.toolbar.underline Underline
|
||||
signatures.use_global_default Use global default
|
||||
signatures.your_signatures Your signatures ({count})
|
||||
|
Can't render this file because it contains an unexpected character in line 106 and column 59.
|
@@ -81,4 +81,20 @@ if (existsSync(pluginsSrc)) {
|
||||
);
|
||||
}
|
||||
|
||||
// next/dist/lib/metadata/** (get-metadata-route.js and its neighbours).
|
||||
//
|
||||
// router-utils/filesystem.js has a plain top-level `require("../../../lib/
|
||||
// metadata/get-metadata-route")` - not dynamic, not conditional - yet Next's
|
||||
// own output-file-tracing for `output: "standalone"` + `next build --webpack`
|
||||
// drops the entire directory. Verified by inspecting a real build: the
|
||||
// package was present, this one subfolder was missing, so the standalone
|
||||
// server crashed on its very first line with "Cannot find module" - every
|
||||
// packaged build (Electron and Docker) was affected. Same failure class as
|
||||
// the sqlcipher prebuilds above: copy by hand what the tracer misses.
|
||||
const metadataSrc = path.join(rootDir, "node_modules", "next", "dist", "lib", "metadata");
|
||||
const metadataDest = path.join(standaloneDir, "node_modules", "next", "dist", "lib", "metadata");
|
||||
rmSync(metadataDest, { recursive: true, force: true });
|
||||
cpSync(metadataSrc, metadataDest, { recursive: true });
|
||||
console.log("Copied next/dist/lib/metadata into the standalone output");
|
||||
|
||||
console.log("Assembled standalone server at", standaloneDir);
|
||||
|
||||
Reference in New Issue
Block a user