feat(frontend): storage, trash, policy, stories, shares, jobs, bots, media, login and notes speak russian and english
This commit is contained in:
1 parent
e5a5edcaae
commit
4a5c92f0e9
51 files changed
+1504
-588
No files matched your search
@@ -24,9 +24,11 @@
|
||||
sameToggles,
|
||||
summary,
|
||||
TOGGLE_KEYS,
|
||||
TOGGLE_LABELS,
|
||||
type ToggleKey,
|
||||
toggleLabel,
|
||||
} from "#lib/format/policy.js";
|
||||
import { locale, t } from "#lib/i18n/locale.svelte.js";
|
||||
import type { MessageKey } from "#lib/i18n/messages.js";
|
||||
|
||||
interface Props {
|
||||
onchange?: () => void;
|
||||
@@ -44,17 +46,17 @@
|
||||
onchange,
|
||||
}: Props = $props();
|
||||
|
||||
const PRESETS: { label: string; toggles: CaptureToggles }[] = [
|
||||
{ label: "Всё", toggles: preset("all") },
|
||||
{ label: "Только сообщения", toggles: preset(["messages"]) },
|
||||
{ label: "Ничего", toggles: preset([]) },
|
||||
const PRESETS: { label: MessageKey; toggles: CaptureToggles }[] = [
|
||||
{ label: "policy.summary.all", toggles: preset("all") },
|
||||
{ label: "policy.summary.messagesOnly", toggles: preset(["messages"]) },
|
||||
{ label: "policy.summary.none", toggles: preset([]) },
|
||||
];
|
||||
|
||||
let rule = $state<PolicyRecord | null>(null);
|
||||
let parent = $state<PolicyParent | null>(null);
|
||||
let loading = $state(false);
|
||||
let saving = $state(false);
|
||||
let problem = $state<string | null>(null);
|
||||
let problem = $state<MessageKey | null>(null);
|
||||
let removing = $state(false);
|
||||
|
||||
const isChat = $derived(scopeType === "chat");
|
||||
@@ -79,13 +81,14 @@
|
||||
if (isChat && parent) {
|
||||
const from = parentLabel(parent.scope_type, parent.title);
|
||||
return rule
|
||||
? `Без правила было бы как ${from}: ${summary(parent.toggles).toLowerCase()}.`
|
||||
: `Сейчас как ${from}. Измени что-нибудь, и у чата появится своё правило.`;
|
||||
? t("policy.hint.chatRule", {
|
||||
from,
|
||||
summary: summary(parent.toggles).toLocaleLowerCase(locale.tag),
|
||||
})
|
||||
: t("policy.hint.chatInherit", { from });
|
||||
}
|
||||
if (isFolder) {
|
||||
return rule
|
||||
? "Действует на чаты папки, у которых нет своего правила."
|
||||
: "У папки нет правила, чаты идут по умолчаниям. Выбери набор, чтобы его создать.";
|
||||
return rule ? t("policy.hint.folderRule") : t("policy.hint.folderNone");
|
||||
}
|
||||
return "";
|
||||
}
|
||||
@@ -112,7 +115,7 @@
|
||||
});
|
||||
onchange?.();
|
||||
} catch {
|
||||
problem = "Не удалось сохранить правило";
|
||||
problem = "policy.rule.saveFailed";
|
||||
} finally {
|
||||
saving = false;
|
||||
}
|
||||
@@ -136,7 +139,7 @@
|
||||
removing = false;
|
||||
onchange?.();
|
||||
} catch {
|
||||
problem = "Не удалось удалить правило";
|
||||
problem = "policy.rule.deleteFailed";
|
||||
} finally {
|
||||
saving = false;
|
||||
}
|
||||
@@ -153,7 +156,7 @@
|
||||
try {
|
||||
({ rule, parent } = await getPolicyScope(target));
|
||||
} catch {
|
||||
problem = "Не удалось загрузить правило";
|
||||
problem = "policy.rule.loadFailed";
|
||||
} finally {
|
||||
loading = false;
|
||||
}
|
||||
@@ -179,7 +182,7 @@
|
||||
type="button"
|
||||
class:on={shown !== null && sameToggles(shown, item.toggles)}
|
||||
>
|
||||
{item.label}
|
||||
{t(item.label)}
|
||||
</button>
|
||||
{/each}
|
||||
</div>
|
||||
@@ -196,7 +199,7 @@
|
||||
type="button"
|
||||
class:changed={differs(key)}
|
||||
>
|
||||
<span class="label">{TOGGLE_LABELS[key]}</span>
|
||||
<span class="label">{toggleLabel(key)}</span>
|
||||
<span class="switch" class:on={shown[key]}>
|
||||
<span class="knob"></span>
|
||||
</span>
|
||||
@@ -206,7 +209,7 @@
|
||||
{/if}
|
||||
|
||||
{#if problem}
|
||||
<p class="problem">{problem}</p>
|
||||
<p class="problem">{t(problem)}</p>
|
||||
{/if}
|
||||
|
||||
{#if target}
|
||||
@@ -216,7 +219,7 @@
|
||||
{#if rule && (isChat || isFolder)}
|
||||
{#if removing}
|
||||
<div class="removal">
|
||||
<span>Удалить правило?</span>
|
||||
<span>{t("policy.rule.removeConfirm")}</span>
|
||||
<Button
|
||||
onclick={() => {
|
||||
removing = false;
|
||||
@@ -224,7 +227,7 @@
|
||||
smaller
|
||||
variant="text"
|
||||
>
|
||||
Отмена
|
||||
{t("common.cancel")}
|
||||
</Button>
|
||||
<Button
|
||||
disabled={saving}
|
||||
@@ -233,7 +236,7 @@
|
||||
smaller
|
||||
variant="danger"
|
||||
>
|
||||
Удалить
|
||||
{t("common.delete")}
|
||||
</Button>
|
||||
</div>
|
||||
{:else}
|
||||
@@ -244,7 +247,7 @@
|
||||
}}
|
||||
type="button"
|
||||
>
|
||||
Удалить правило
|
||||
{t("policy.rule.remove")}
|
||||
</button>
|
||||
{/if}
|
||||
{/if}
|
||||
|
||||
Reference in new issue
Block a user