From 12745cd03ceb1b0455490bec1d5c2146b3fb663b Mon Sep 17 00:00:00 2001 From: Maurice Date: Sat, 4 Jul 2026 11:08:48 +0200 Subject: [PATCH] feat(plugins): honest security info in the admin panel + update consent UI MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reworks how the plugins panel talks about safety, since the old copy oversold it. Drops the "install at your own risk" banner and the generic trust note, and replaces them with: - a collapsible security section that lays out plainly how a plugin is contained, what the permissions actually mean (a hard limit on what a plugin CAN do, not a promise of what it does), where the limits are, and what a hostile plugin could do at worst. - a short note on what "Reviewed" means: a maintainer scanned it for malware each version, not for quality — not a guarantee it's harmless. - the consent dialog for the update flow: when an update asks for rights you never granted, it lists the new permissions and outbound hosts and makes you approve before the plugin turns back on. Full copy in all 22 locales. --- .../components/Admin/AdminPluginsPanel.tsx | 163 +++++++++++++++--- shared/src/i18n/ar/admin.ts | 24 ++- shared/src/i18n/br/admin.ts | 32 +++- shared/src/i18n/cs/admin.ts | 32 +++- shared/src/i18n/de/admin.ts | 24 ++- shared/src/i18n/en/admin.ts | 24 ++- shared/src/i18n/es/admin.ts | 32 +++- shared/src/i18n/fr/admin.ts | 33 +++- shared/src/i18n/gr/admin.ts | 32 +++- shared/src/i18n/hu/admin.ts | 32 +++- shared/src/i18n/id/admin.ts | 24 ++- shared/src/i18n/it/admin.ts | 32 +++- shared/src/i18n/ja/admin.ts | 32 +++- shared/src/i18n/ko/admin.ts | 32 +++- shared/src/i18n/nl/admin.ts | 32 +++- shared/src/i18n/pl/admin.ts | 32 +++- shared/src/i18n/ru/admin.ts | 32 +++- shared/src/i18n/sv/admin.ts | 32 +++- shared/src/i18n/tr/admin.ts | 32 +++- shared/src/i18n/uk/admin.ts | 32 +++- shared/src/i18n/vi/admin.ts | 32 +++- shared/src/i18n/zh-TW/admin.ts | 32 +++- shared/src/i18n/zh/admin.ts | 32 +++- 23 files changed, 746 insertions(+), 90 deletions(-) diff --git a/client/src/components/Admin/AdminPluginsPanel.tsx b/client/src/components/Admin/AdminPluginsPanel.tsx index 1ffc9d2a9..abc9e08c6 100644 --- a/client/src/components/Admin/AdminPluginsPanel.tsx +++ b/client/src/components/Admin/AdminPluginsPanel.tsx @@ -1,7 +1,7 @@ import { useEffect, useState } from 'react' import { Blocks, AlertTriangle, PackageOpen, RefreshCw, Trash2, Download, Bug, X, ShieldCheck, - ArrowUpCircle, Github, ExternalLink, ChevronRight, Check, Luggage, Plane, Globe, Image, + ArrowUpCircle, Github, ExternalLink, ChevronRight, ChevronDown, Check, Lock, Luggage, Plane, Globe, Image, CalendarDays, Map, Bell, Cloud, Camera, Compass, BookOpen, Wallet, Puzzle, } from 'lucide-react' import { adminApi } from '../../api/client' @@ -139,6 +139,7 @@ export default function AdminPluginsPanel() { const [detailFor, setDetailFor] = useState(null) const [errorsFor, setErrorsFor] = useState<{ id: string; rows: Array<{ ts: string; level: string; message: string }> } | null>(null) const [confirmUninstall, setConfirmUninstall] = useState(null) + const [consentUpdate, setConsentUpdate] = useState<{ plugin: PluginRow; version: string; newPermissions: string[]; newEgress: string[] } | null>(null) const refresh = () => { adminApi.plugins() @@ -182,6 +183,23 @@ export default function AdminPluginsPanel() { const install = (id: string) => act(id, () => adminApi.pluginInstall(id), t('admin.plugins.installed')) const installedIds = new Set(plugins.map(p => p.id)) + // Run an update through the server-side re-consent gate. If the new version + // asks for rights the admin never granted, the server leaves it OFF and hands + // back the delta — we surface a consent dialog instead of silently widening. + const runUpdate = (p: PluginRow) => { + setBusy(p.id) + adminApi.pluginUpdate(p.id) + .then((r: { version: string; activated: boolean; newPermissions: string[]; newEgress: string[] }) => { + if (r.activated || (r.newPermissions.length === 0 && r.newEgress.length === 0)) { + toast.success(t('admin.plugins.updated')) + } else { + setConsentUpdate({ plugin: p, version: r.version, newPermissions: r.newPermissions, newEgress: r.newEgress }) + } + }) + .catch(e => toast.error((e as { response?: { data?: { error?: string } } })?.response?.data?.error || t('admin.plugins.actionError'))) + .finally(() => { setBusy(null); refresh() }) + } + return (
{/* Header — flush-left title/subtitle, like the Addons panel */} @@ -221,17 +239,8 @@ export default function AdminPluginsPanel() { ) : error ? (
{t('admin.plugins.loadError')}
) : view === 'browse' ? ( - <> -
- -
-

{t('admin.plugins.riskTitle')}

-

{t('admin.plugins.riskBody')}

-
-
- - + ) : plugins.length === 0 ? (
@@ -273,14 +282,7 @@ export default function AdminPluginsPanel() { )} {hasUpdate && ( - @@ -323,10 +325,7 @@ export default function AdminPluginsPanel() { )}
-
- -

{t('admin.plugins.trustNote')}

-
+ {/* Registry detail dialog */} {detailFor && ( @@ -368,6 +367,19 @@ export default function AdminPluginsPanel() { title={t('admin.plugins.uninstallTitle')} message={t('admin.plugins.uninstallBody')} /> + + {/* Re-consent gate: the update installed but needs approval for new rights */} + {consentUpdate && ( + { + const c = consentUpdate; setConsentUpdate(null) + await act(c.plugin.id, () => adminApi.pluginActivate(c.plugin.id), t('admin.plugins.updated')) + }} + onLater={() => { setConsentUpdate(null); toast.success(t('admin.plugins.updateKeptOff')) }} + /> + )}
) } @@ -576,3 +588,106 @@ function PluginDetailModal({ item, installed, busy, onInstall, onClose, t, local
) } + +// A permission rendered human-readable when known, else as its raw code. +function PermLabel({ perm, t }: { perm: string; t: T }) { + return PERM_KEYS.includes(perm) + ? {t(`admin.plugins.perm.${perm}` as never)} + : {perm} +} + +// Shown when an update wants rights the admin never granted. The server already +// installed the new code but left the plugin OFF; approving here activates it +// with the widened set, declining leaves it off. +function UpdateConsentDialog({ data, t, onApprove, onLater }: { + data: { plugin: PluginRow; version: string; newPermissions: string[]; newEgress: string[] } + t: T + onApprove: () => void + onLater: () => void +}) { + return ( +
+
e.stopPropagation()}> +
+
+ +
+
+

{t('admin.plugins.updateConsentTitle')}

+

{t('admin.plugins.updateConsentBody', { name: data.plugin.name, version: data.version })}

+
+
+
+ {data.newPermissions.length > 0 && ( +
+

{t('admin.plugins.updateNewPermissions')}

+
    + {data.newPermissions.map(perm => ( +
  • + +
  • + ))} +
+
+ )} + {data.newEgress.length > 0 && ( +
+

{t('admin.plugins.updateNewEgress')}

+
+ {data.newEgress.map(host => ( + {host} + ))} +
+
+ )} +
+
+ + +
+
+
+ ) +} + +// Footer: a plain-language note on what "Reviewed" means, plus a collapsible +// panel that lays out — transparently — how plugins are contained, where the +// limits are, and what a hostile plugin could do at worst. +function SecurityInfo({ t }: { t: T }) { + const [open, setOpen] = useState(false) + const sections: Array<[string, string]> = [ + ['admin.plugins.security.isolationTitle', 'admin.plugins.security.isolationBody'], + ['admin.plugins.security.permsTitle', 'admin.plugins.security.permsBody'], + ['admin.plugins.security.limitsTitle', 'admin.plugins.security.limitsBody'], + ['admin.plugins.security.worstTitle', 'admin.plugins.security.worstBody'], + ['admin.plugins.security.reviewedTitle', 'admin.plugins.security.reviewedBody'], + ['admin.plugins.security.trustTitle', 'admin.plugins.security.trustBody'], + ] + return ( +
+
+ +

{t('admin.plugins.reviewedMeaning')}

+
+ + {open && ( +
+ {sections.map(([h, b]) => ( +
+

{t(h as never)}

+

{t(b as never)}

+
+ ))} +
+ )} +
+ ) +} diff --git a/shared/src/i18n/ar/admin.ts b/shared/src/i18n/ar/admin.ts index a8f5cec6b..5ef2ce2bf 100644 --- a/shared/src/i18n/ar/admin.ts +++ b/shared/src/i18n/ar/admin.ts @@ -195,7 +195,6 @@ const admin: TranslationStrings = { 'admin.plugins.uninstalled': 'تمت إزالة الإضافة', 'admin.plugins.uninstallTitle': 'إزالة الإضافة؟', 'admin.plugins.uninstallBody': 'سيؤدي هذا إلى إيقاف الإضافة وإزالة تعليماتها البرمجية وحذف جميع بياناتها. لا يمكن التراجع عن هذا الإجراء.', - 'admin.plugins.trustNote': 'تعمل الإضافات بشكل معزول وبالأذونات التي توافق عليها فقط. لا تثبّت سوى تعليمات برمجية من مطورين تثق بهم.', 'admin.plugins.status.starting': 'جارٍ البدء…', 'admin.plugins.type.widget': 'Widget', 'admin.plugins.type.page': 'صفحة', @@ -240,8 +239,27 @@ const admin: TranslationStrings = { 'admin.plugins.perm.hook:photo-provider': 'توفير الصور لميزة الذكريات', 'admin.plugins.perm.hook:calendar-source': 'توفير الأحداث للتقويم', 'admin.plugins.perm.http:outbound': 'إجراء طلبات صادرة إلى المضيفات المُعلنة الخاصة بها', - 'admin.plugins.riskTitle': 'التثبيت على مسؤوليتك الخاصة', - 'admin.plugins.riskBody': 'الإضافات هي شيفرة برمجية من جهات خارجية. وحتى مع مراجعة سريعة مسبقة، قد تظل الإضافة تحتوي على محتوى ضار — وعند الشك، افحص الإضافة بنفسك قبل تثبيتها. لا يتحمل TREK أي مسؤولية على الإطلاق.', + 'admin.plugins.updateConsentTitle': 'يتطلب هذا التحديث أذونات جديدة', + 'admin.plugins.updateConsentBody': '{name} v{version} يطلب أذونات لم تمنحها بعد. تم تثبيت الإصدار الجديد لكنه يبقى متوقفًا حتى توافق عليه.', + 'admin.plugins.updateNewPermissions': 'الأذونات المطلوبة حديثًا', + 'admin.plugins.updateNewEgress': 'اتصالات صادرة جديدة', + 'admin.plugins.updateApprove': 'الموافقة والتفعيل', + 'admin.plugins.updateLater': 'إبقاؤه متوقفًا الآن', + 'admin.plugins.updateKeptOff': 'تم تثبيت التحديث — يبقى متوقفًا حتى توافق على الأذونات الجديدة', + 'admin.plugins.reviewedMeaning': '"تمت مراجعتها" تعني أن أحد القائمين على TREK فحص هذه الإضافة بحثًا عن البرمجيات الخبيثة في كل إصدار — وليس من حيث الجودة أو ما إذا كانت تعمل. وهي ليست ضمانًا بأن الإضافة غير ضارة.', + 'admin.plugins.security.title': 'كيف يتم احتواء الإضافات — وحدود ذلك', + 'admin.plugins.security.isolationTitle': 'كل إضافة تعمل في بيئة معزولة', + 'admin.plugins.security.isolationBody': 'تعمل الإضافة كعملية معزولة خاصة بها لا يمكنها قراءة سوى ملفاتها الخاصة. لا يمكنها قراءة قاعدة بياناتك أو سر تسجيل دخولك أو مفتاح التشفير الخاص بك، ولا يمكنها تشغيل برامج أخرى، ولا يمكنها كتابة ملفات في أي مكان. تعمل واجهتها داخل إطار متصفح محكم لا يمكنه قراءة ملف تعريف ارتباط جلستك أو المساس بصفحة TREK المحيطة به.', + 'admin.plugins.security.permsTitle': 'ماذا تعني الأذونات', + 'admin.plugins.security.permsBody': 'الأذونات المعروضة قبل التثبيت هي حد صارم يفرضه TREK أثناء تشغيل الإضافة — فهي لا تستطيع فعليًا القيام بأي شيء ليس على القائمة. لكنها تخبرك بما يمكن للإضافة فعله، لا بما تفعله بالفعل. الإضافة المسموح لها بقراءة رحلاتك والوصول إلى خادم يمكنها إرسال رحلاتك إلى ذلك الخادم، لذا اقرأ الأذونات والمضيفات الصادرة، وليس الوصف فقط.', + 'admin.plugins.security.limitsTitle': 'ما لا يمكننا ضمانه', + 'admin.plugins.security.limitsBody': 'العزل هو حدّ برمجي قوي، لكنه ليس مطلقًا. تعمل الإضافة بالأذونات التي توافق عليها تمامًا، لذا يمكنها ضمن تلك الأذونات أن تتصرف بشكل مختلف عمّا يوحي به وصفها، ويمكنها إرسال البيانات التي تملكها بشكل مشروع إلى المضيفات التي أعلنتها. لا يقرأ TREK ولا يحكم على ما تفعله شيفرة الإضافة فعليًا.', + 'admin.plugins.security.worstTitle': 'أسوأ الحالات', + 'admin.plugins.security.worstBody': 'الإضافة الضارة التي تُفعّلها يمكنها إساءة استخدام البيانات والاتصالات التي منحتها إياها — على سبيل المثال، تسريب الرحلات المسموح لها بقراءتها. لا يمكنها سرقة كلمات المرور، أو تزوير تسجيل دخول مسؤول، أو تنفيذ أوامر على خادمك، أو الوصول إلى بيانات لم تمنحها. يبقى الضرر ضمن ما وافقت عليه، وإيقاف الإضافة يوقفه.', + 'admin.plugins.security.reviewedTitle': 'ماذا تعني "تمت مراجعتها"', + 'admin.plugins.security.reviewedBody': 'الإضافة التي تمت مراجعتها فُحصت يدويًا بحثًا عن البرمجيات الخبيثة بواسطة أحد القائمين على TREK في كل إصدار — جرى فحصها بحثًا عن شيفرة ضارة، لا لمعرفة ما إذا كانت تعمل جيدًا. وهي ليست وعدًا بأن الإضافة غير ضارة.', + 'admin.plugins.security.trustTitle': 'الخلاصة', + 'admin.plugins.security.trustBody': 'تثبيت إضافة يشبه تثبيت أي تطبيق من جهة خارجية: لا تُضِف سوى شيفرة من مطورين تثق بهم، وعند الشك، افحصها بنفسك أولًا. لا يتحمل TREK أي مسؤولية عن إضافات الجهات الخارجية.', 'admin.addons.title': 'الإضافات', 'admin.addons.subtitle': 'فعّل أو عطّل الميزات لتخصيص تجربة TREK.', 'admin.addons.catalog.packing.name': 'القوائم', diff --git a/shared/src/i18n/br/admin.ts b/shared/src/i18n/br/admin.ts index cdd57158c..a83a551e4 100644 --- a/shared/src/i18n/br/admin.ts +++ b/shared/src/i18n/br/admin.ts @@ -174,7 +174,6 @@ const admin: TranslationStrings = { 'admin.plugins.uninstalled': 'Plugin desinstalado', 'admin.plugins.uninstallTitle': 'Desinstalar plugin?', 'admin.plugins.uninstallBody': 'Isso interrompe o plugin, remove seu código e exclui todos os dados dele. Esta ação não pode ser desfeita.', - 'admin.plugins.trustNote': 'Plugins são executados isolados, apenas com as permissões que você aprovar. Instale apenas código de autores em quem você confia.', 'admin.plugins.status.starting': 'Iniciando…', 'admin.plugins.type.widget': 'Widget', 'admin.plugins.type.page': 'Página', @@ -219,8 +218,35 @@ const admin: TranslationStrings = { 'admin.plugins.perm.hook:photo-provider': 'Fornecer fotos para as Memórias', 'admin.plugins.perm.hook:calendar-source': 'Fornecer eventos para o calendário', 'admin.plugins.perm.http:outbound': 'Fazer requisições de saída para os hosts declarados', - 'admin.plugins.riskTitle': 'Instale por sua conta e risco', - 'admin.plugins.riskBody': 'Plugins são código de terceiros. Mesmo com uma revisão rápida prévia, um plugin ainda pode conter conteúdo malicioso — em caso de dúvida, inspecione o plugin você mesmo antes de instalar. O TREK não assume nenhuma responsabilidade.', + 'admin.plugins.updateConsentTitle': 'Esta atualização precisa de novas permissões', + 'admin.plugins.updateConsentBody': + '{name} v{version} está solicitando permissões que você ainda não concedeu. A nova versão está instalada, mas permanece desativada até que você a aprove.', + 'admin.plugins.updateNewPermissions': 'Novas permissões solicitadas', + 'admin.plugins.updateNewEgress': 'Novas conexões de saída', + 'admin.plugins.updateApprove': 'Aprovar e ativar', + 'admin.plugins.updateLater': 'Manter desativado por enquanto', + 'admin.plugins.updateKeptOff': 'Atualização instalada — desativada até você aprovar as novas permissões', + 'admin.plugins.reviewedMeaning': + '"Revisado" significa que um mantenedor do TREK verificou este plugin em busca de malware em cada versão — não quanto à qualidade ou se ele funciona. Não é garantia de que um plugin seja inofensivo.', + 'admin.plugins.security.title': 'Como os plugins são isolados — e os limites', + 'admin.plugins.security.isolationTitle': 'Todo plugin roda isolado', + 'admin.plugins.security.isolationBody': + 'Um plugin roda como seu próprio processo restrito, que só consegue ler os próprios arquivos. Ele não pode ler seu banco de dados, seu segredo de login ou sua chave de criptografia, não pode iniciar outros programas e não pode gravar arquivos em lugar nenhum. Sua interface roda em um frame de navegador isolado, que não consegue ler o cookie da sua sessão nem interferir na página do TREK ao redor.', + 'admin.plugins.security.permsTitle': 'O que as permissões significam', + 'admin.plugins.security.permsBody': + 'As permissões exibidas antes da instalação são um limite rígido que o TREK impõe enquanto o plugin roda — ele literalmente não consegue fazer nada que não esteja na lista. Mas elas dizem o que um plugin pode fazer, não o que ele de fato faz. Um plugin autorizado a ler suas viagens e a acessar um servidor pode enviar suas viagens para esse servidor, então leia as permissões e os hosts de saída, não apenas a descrição.', + 'admin.plugins.security.limitsTitle': 'O que não podemos garantir', + 'admin.plugins.security.limitsBody': + 'O isolamento é uma barreira de software forte, mas não absoluta. Um plugin age exatamente com as permissões que você aprova, então, dentro dessas permissões, ele pode se comportar de forma diferente do que a descrição sugere e pode enviar dados que legitimamente possui aos hosts que declarou. O TREK não lê nem julga o que o código de um plugin de fato faz.', + 'admin.plugins.security.worstTitle': 'O pior cenário', + 'admin.plugins.security.worstBody': + 'Um plugin hostil que você ativa pode fazer mau uso dos dados e das conexões que você concedeu a ele — por exemplo, vazar as viagens que ele tem permissão para ler. Ele não pode roubar senhas, forjar um login de admin, executar comandos no seu servidor nem acessar dados que você não concedeu. O dano fica restrito ao que você aprovou, e desativar o plugin o interrompe.', + 'admin.plugins.security.reviewedTitle': 'O que significa "Revisado"', + 'admin.plugins.security.reviewedBody': + 'Um plugin revisado foi verificado manualmente em busca de malware por um mantenedor do TREK em cada versão — checado quanto a código malicioso, não quanto a funcionar bem. Não é uma promessa de que o plugin seja inofensivo.', + 'admin.plugins.security.trustTitle': 'Em resumo', + 'admin.plugins.security.trustBody': + 'Instalar um plugin é como instalar qualquer app de terceiros: adicione apenas código de autores em quem você confia e, em caso de dúvida, inspecione-o você mesmo antes. O TREK não assume nenhuma responsabilidade por plugins de terceiros.', 'admin.addons.title': 'Complementos', 'admin.addons.subtitle': 'Ative ou desative recursos para personalizar sua experiência no TREK.', 'admin.addons.catalog.memories.name': 'Memórias', diff --git a/shared/src/i18n/cs/admin.ts b/shared/src/i18n/cs/admin.ts index 5cc1bae42..67a96c083 100644 --- a/shared/src/i18n/cs/admin.ts +++ b/shared/src/i18n/cs/admin.ts @@ -175,7 +175,6 @@ const admin: TranslationStrings = { 'admin.plugins.uninstalled': 'Plugin odinstalován', 'admin.plugins.uninstallTitle': 'Odinstalovat plugin?', 'admin.plugins.uninstallBody': 'Tím se plugin zastaví, odstraní se jeho kód a smažou se všechna jeho data. Tuto akci nelze vrátit zpět.', - 'admin.plugins.trustNote': 'Pluginy běží izolovaně a mají pouze oprávnění, která schválíte. Instalujte pouze kód od autorů, kterým důvěřujete.', 'admin.plugins.status.starting': 'Spouští se…', 'admin.plugins.type.widget': 'Widget', 'admin.plugins.type.page': 'Stránka', @@ -220,8 +219,35 @@ const admin: TranslationStrings = { 'admin.plugins.perm.hook:photo-provider': 'Poskytovat fotky do sekce Fotky', 'admin.plugins.perm.hook:calendar-source': 'Poskytovat události do kalendáře', 'admin.plugins.perm.http:outbound': 'Odesílat odchozí požadavky na deklarované hostitele', - 'admin.plugins.riskTitle': 'Instalace na vlastní riziko', - 'admin.plugins.riskBody': 'Pluginy jsou kód třetích stran. I po předchozí rychlé kontrole může plugin stále obsahovat škodlivý obsah — v případě pochybností si plugin před instalací sami prohlédněte. TREK nenese žádnou odpovědnost.', + 'admin.plugins.updateConsentTitle': 'Tato aktualizace vyžaduje nová oprávnění', + 'admin.plugins.updateConsentBody': + '{name} v{version} žádá o oprávnění, která jste zatím neudělili. Nová verze je nainstalována, ale zůstane vypnutá, dokud ji neschválíte.', + 'admin.plugins.updateNewPermissions': 'Nově požadovaná oprávnění', + 'admin.plugins.updateNewEgress': 'Nová odchozí připojení', + 'admin.plugins.updateApprove': 'Schválit a zapnout', + 'admin.plugins.updateLater': 'Zatím ponechat vypnuté', + 'admin.plugins.updateKeptOff': 'Aktualizace nainstalována — zůstává vypnutá, dokud neschválíte nová oprávnění', + 'admin.plugins.reviewedMeaning': + '„Zkontrolováno“ znamená, že správce TREK prověřil tento plugin na škodlivý kód u každé verze — nikoli jeho kvalitu ani to, zda funguje. Není to záruka, že je plugin neškodný.', + 'admin.plugins.security.title': 'Jak jsou pluginy izolovány — a kde jsou hranice', + 'admin.plugins.security.isolationTitle': 'Každý plugin běží v izolaci', + 'admin.plugins.security.isolationBody': + 'Plugin běží jako vlastní uzamčený proces, který může číst pouze své vlastní soubory. Nemůže číst vaši databázi, váš přihlašovací tajný klíč ani váš šifrovací klíč, nemůže spouštět jiné programy a nemůže nikam zapisovat soubory. Jeho rozhraní běží v uzavřeném rámci prohlížeče, který nemůže číst vaši session cookie ani zasahovat do okolní stránky TREK.', + 'admin.plugins.security.permsTitle': 'Co oprávnění znamenají', + 'admin.plugins.security.permsBody': + 'Oprávnění zobrazená před instalací jsou pevný limit, který TREK vynucuje po celou dobu běhu pluginu — plugin doslova nemůže udělat nic, co není na seznamu. Říkají vám ale, co plugin může dělat, nikoli co skutečně dělá. Plugin, který smí číst vaše cesty a spojit se se serverem, může vaše cesty tomuto serveru odeslat, proto si přečtěte oprávnění i odchozí hostitele, nejen popis.', + 'admin.plugins.security.limitsTitle': 'Co nemůžeme slíbit', + 'admin.plugins.security.limitsBody': + 'Izolace je silná softwarová hranice, nikoli absolutní. Plugin jedná přesně s těmi právy, která schválíte, takže v jejich rámci se může chovat jinak, než naznačuje jeho popis, a může odeslat data, která oprávněně drží, hostitelům, které deklaroval. TREK nečte ani neposuzuje, co kód pluginu ve skutečnosti dělá.', + 'admin.plugins.security.worstTitle': 'Nejhorší případ', + 'admin.plugins.security.worstBody': + 'Škodlivý plugin, který zapnete, může zneužít data a připojení, jež jste mu udělili — například vynést cesty, které smí číst. Nemůže krást hesla, padělat přihlášení administrátora, spouštět příkazy na vašem serveru ani se dostat k datům, která jste neudělili. Škoda zůstává v rámci toho, co jste schválili, a vypnutí pluginu ji zastaví.', + 'admin.plugins.security.reviewedTitle': 'Co znamená „Zkontrolováno“', + 'admin.plugins.security.reviewedBody': + 'Zkontrolovaný plugin ručně prověřil správce TREK na škodlivý kód u každé verze — kontroloval nepřátelský kód, nikoli to, zda dobře funguje. Není to slib, že je plugin neškodný.', + 'admin.plugins.security.trustTitle': 'Závěrem', + 'admin.plugins.security.trustBody': + 'Instalace pluginu je jako instalace jakékoli aplikace třetí strany: přidávejte pouze kód od autorů, kterým důvěřujete, a v případě pochybností si jej nejprve sami prohlédněte. TREK nenese žádnou odpovědnost za pluginy třetích stran.', 'admin.addons.title': 'Doplňky', 'admin.addons.subtitle': 'Zapněte nebo vypněte funkce a přizpůsobte si TREK.', 'admin.addons.catalog.memories.name': 'Fotky (Immich)', diff --git a/shared/src/i18n/de/admin.ts b/shared/src/i18n/de/admin.ts index 7bee016f5..414fc03e6 100644 --- a/shared/src/i18n/de/admin.ts +++ b/shared/src/i18n/de/admin.ts @@ -177,7 +177,6 @@ const admin: TranslationStrings = { 'admin.plugins.uninstalled': 'Plugin deinstalliert', 'admin.plugins.uninstallTitle': 'Plugin deinstallieren?', 'admin.plugins.uninstallBody': 'Das stoppt das Plugin, entfernt seinen Code und löscht alle seine Daten. Das kann nicht rückgängig gemacht werden.', - 'admin.plugins.trustNote': 'Plugins laufen isoliert mit nur den von dir freigegebenen Berechtigungen. Installiere nur Code von Autoren, denen du vertraust.', 'admin.plugins.status.starting': 'Startet…', 'admin.plugins.type.widget': 'Widget', 'admin.plugins.type.page': 'Seite', @@ -222,8 +221,27 @@ const admin: TranslationStrings = { 'admin.plugins.perm.hook:photo-provider': 'Fotos für Erinnerungen bereitstellen', 'admin.plugins.perm.hook:calendar-source': 'Termine für den Kalender bereitstellen', 'admin.plugins.perm.http:outbound': 'Ausgehende Anfragen an deklarierte Hosts stellen', - 'admin.plugins.riskTitle': 'Installation auf eigene Gefahr', - 'admin.plugins.riskBody': 'Plugins sind Fremdcode. Auch nach einer vorherigen Schnellüberprüfung können Plugins schädliche Inhalte enthalten — prüfe ein Plugin im Zweifel vor der Installation selbst. TREK übernimmt keinerlei Verantwortung.', + 'admin.plugins.updateConsentTitle': 'Dieses Update braucht neue Berechtigungen', + 'admin.plugins.updateConsentBody': '{name} v{version} verlangt Rechte, die du bisher nicht freigegeben hast. Die neue Version ist installiert, bleibt aber aus, bis du sie freigibst.', + 'admin.plugins.updateNewPermissions': 'Neu verlangte Berechtigungen', + 'admin.plugins.updateNewEgress': 'Neue ausgehende Verbindungen', + 'admin.plugins.updateApprove': 'Freigeben & einschalten', + 'admin.plugins.updateLater': 'Vorerst aus lassen', + 'admin.plugins.updateKeptOff': 'Update installiert — bleibt aus, bis du die neuen Berechtigungen freigibst', + 'admin.plugins.reviewedMeaning': '„Geprüft" heißt: Ein TREK-Maintainer hat den Code dieses Plugins bei jeder Version manuell auf Schadsoftware gescannt — nicht auf Qualität oder Funktion. Es ist keine Garantie, dass ein Plugin harmlos ist.', + 'admin.plugins.security.title': 'Wie Plugins eingesperrt werden — und wo die Grenzen liegen', + 'admin.plugins.security.isolationTitle': 'Jedes Plugin läuft abgeschottet', + 'admin.plugins.security.isolationBody': 'Ein Plugin läuft als eigener, abgeriegelter Prozess, der nur seine eigenen Dateien lesen darf. Es kann weder deine Datenbank noch deinen Login-Schlüssel oder deinen Verschlüsselungsschlüssel lesen, keine anderen Programme starten und nirgends Dateien schreiben. Seine Oberfläche läuft in einem versiegelten Browser-Rahmen, der dein Sitzungs-Cookie nicht lesen und die TREK-Seite drumherum nicht anfassen kann.', + 'admin.plugins.security.permsTitle': 'Was die Berechtigungen bedeuten', + 'admin.plugins.security.permsBody': 'Die Berechtigungen, die dir vor der Installation angezeigt werden, sind eine harte Obergrenze, die TREK zur Laufzeit durchsetzt — ein Plugin kann buchstäblich nichts tun, was nicht auf der Liste steht. Aber sie sagen dir, was ein Plugin kann, nicht was es tatsächlich tut. Ein Plugin, das deine Reisen lesen und einen Server erreichen darf, kann deine Reisen an diesen Server schicken — lies also die Berechtigungen und die Zielhosts, nicht nur die Beschreibung.', + 'admin.plugins.security.limitsTitle': 'Was wir nicht garantieren können', + 'admin.plugins.security.limitsBody': 'Die Isolation ist eine starke Software-Grenze, keine absolute. Ein Plugin handelt mit genau den Rechten, die du freigibst — innerhalb dieser Rechte kann es sich anders verhalten als seine Beschreibung nahelegt, und es kann Daten, die es legitim hat, an die von ihm deklarierten Hosts senden. TREK liest oder bewertet nicht, was der Code eines Plugins tatsächlich tut.', + 'admin.plugins.security.worstTitle': 'Der schlimmste Fall', + 'admin.plugins.security.worstBody': 'Ein bösartiges Plugin, das du einschaltest, kann die Daten und Verbindungen missbrauchen, die du ihm gegeben hast — etwa die Reisen abgreifen, die es lesen darf. Es kann keine Passwörter stehlen, keinen Admin-Login fälschen, keine Befehle auf deinem Server ausführen und keine Daten erreichen, die du nicht freigegeben hast. Der Schaden bleibt in dem, was du freigegeben hast, und das Ausschalten des Plugins stoppt ihn.', + 'admin.plugins.security.reviewedTitle': 'Was „Geprüft" bedeutet', + 'admin.plugins.security.reviewedBody': 'Ein geprüftes Plugin wurde bei jeder Version von einem TREK-Maintainer manuell auf Schadsoftware gescannt — geprüft auf feindlichen Code, nicht darauf, ob es gut funktioniert. Es ist kein Versprechen, dass das Plugin harmlos ist.', + 'admin.plugins.security.trustTitle': 'Das Fazit', + 'admin.plugins.security.trustBody': 'Ein Plugin zu installieren ist wie jede fremde App zu installieren: Füge nur Code von Autoren hinzu, denen du vertraust, und prüfe ihn im Zweifel zuerst selbst. TREK übernimmt keine Verantwortung für Plugins von Drittanbietern.', 'admin.addons.title': 'Addons', 'admin.addons.subtitle': 'Aktiviere oder deaktiviere Funktionen, um TREK nach deinen Wünschen anzupassen.', 'admin.addons.catalog.packing.name': 'Listen', diff --git a/shared/src/i18n/en/admin.ts b/shared/src/i18n/en/admin.ts index e27f514e4..35f2ac0d2 100644 --- a/shared/src/i18n/en/admin.ts +++ b/shared/src/i18n/en/admin.ts @@ -229,7 +229,6 @@ const admin: TranslationStrings = { 'admin.plugins.uninstalled': 'Plugin uninstalled', 'admin.plugins.uninstallTitle': 'Uninstall plugin?', 'admin.plugins.uninstallBody': 'This stops the plugin, removes its code, and deletes all of its data. This cannot be undone.', - 'admin.plugins.trustNote': 'Plugins run isolated with only the permissions you approve. Only install code from authors you trust.', 'admin.plugins.status.starting': 'Starting…', 'admin.plugins.type.widget': 'Widget', 'admin.plugins.type.page': 'Page', @@ -274,8 +273,27 @@ const admin: TranslationStrings = { 'admin.plugins.perm.hook:photo-provider': 'Provide photos to Memories', 'admin.plugins.perm.hook:calendar-source': 'Provide events to the calendar', 'admin.plugins.perm.http:outbound': 'Make outbound requests to its declared hosts', - 'admin.plugins.riskTitle': 'Install at your own risk', - 'admin.plugins.riskBody': 'Plugins are third-party code. Even with a prior quick review, a plugin can still contain harmful content — when in doubt, inspect a plugin yourself before installing. TREK accepts no responsibility whatsoever.', + 'admin.plugins.updateConsentTitle': 'This update needs new permissions', + 'admin.plugins.updateConsentBody': '{name} v{version} is asking for rights you haven\'t granted yet. The new version is installed but stays off until you approve it.', + 'admin.plugins.updateNewPermissions': 'Newly requested permissions', + 'admin.plugins.updateNewEgress': 'New outbound connections', + 'admin.plugins.updateApprove': 'Approve & turn on', + 'admin.plugins.updateLater': 'Keep off for now', + 'admin.plugins.updateKeptOff': 'Update installed — left off until you approve the new permissions', + 'admin.plugins.reviewedMeaning': '"Reviewed" means a TREK maintainer scanned this plugin for malware on each version — not for quality or whether it works. It is not a guarantee that a plugin is harmless.', + 'admin.plugins.security.title': 'How plugins are contained — and the limits', + 'admin.plugins.security.isolationTitle': 'Every plugin runs boxed in', + 'admin.plugins.security.isolationBody': 'A plugin runs as its own locked-down process that can only read its own files. It cannot read your database, your login secret or your encryption key, cannot start other programs, and cannot write files anywhere. Its interface runs in a sealed browser frame that can\'t read your session cookie or touch the TREK page around it.', + 'admin.plugins.security.permsTitle': 'What the permissions mean', + 'admin.plugins.security.permsBody': 'The permissions shown before you install are a hard limit that TREK enforces while the plugin runs — it literally cannot do anything that isn\'t on the list. But they tell you what a plugin can do, not what it actually does. A plugin allowed to read your trips and reach a server can send your trips to that server, so read the permissions and the outbound hosts, not just the description.', + 'admin.plugins.security.limitsTitle': 'What we can\'t promise', + 'admin.plugins.security.limitsBody': 'The isolation is a strong software boundary, not an absolute one. A plugin acts with exactly the rights you approve, so within those rights it can behave differently than its description suggests, and it can send data it legitimately holds to the hosts it declared. TREK does not read or judge what a plugin\'s code actually does.', + 'admin.plugins.security.worstTitle': 'The worst case', + 'admin.plugins.security.worstBody': 'A hostile plugin you turn on can misuse the data and connections you granted it — for example, leak the trips it is allowed to read. It cannot steal passwords, forge an admin login, run commands on your server, or reach data you didn\'t grant. The damage stays inside what you approved, and turning the plugin off stops it.', + 'admin.plugins.security.reviewedTitle': 'What "Reviewed" means', + 'admin.plugins.security.reviewedBody': 'A reviewed plugin was manually scanned for malware by a TREK maintainer on each version — checked for hostile code, not for whether it works well. It is not a promise that the plugin is harmless.', + 'admin.plugins.security.trustTitle': 'The bottom line', + 'admin.plugins.security.trustBody': 'Installing a plugin is like installing any third-party app: only add code from authors you trust, and when in doubt, inspect it yourself first. TREK takes no responsibility for third-party plugins.', 'admin.addons.title': 'Addons', 'admin.addons.subtitle': 'Enable or disable features to customize your TREK experience.', 'admin.addons.catalog.packing.name': 'Lists', diff --git a/shared/src/i18n/es/admin.ts b/shared/src/i18n/es/admin.ts index 063181df7..d4c808329 100644 --- a/shared/src/i18n/es/admin.ts +++ b/shared/src/i18n/es/admin.ts @@ -176,7 +176,6 @@ const admin: TranslationStrings = { 'admin.plugins.uninstalled': 'Plugin desinstalado', 'admin.plugins.uninstallTitle': '¿Desinstalar el plugin?', 'admin.plugins.uninstallBody': 'Esto detiene el plugin, elimina su código y borra todos sus datos. No se puede deshacer.', - 'admin.plugins.trustNote': 'Los plugins se ejecutan aislados y solo con los permisos que apruebes. Instala únicamente código de autores en los que confíes.', 'admin.plugins.status.starting': 'Iniciando…', 'admin.plugins.type.widget': 'Widget', 'admin.plugins.type.page': 'Página', @@ -221,8 +220,35 @@ const admin: TranslationStrings = { 'admin.plugins.perm.hook:photo-provider': 'Proporcionar fotos a la sección Fotos', 'admin.plugins.perm.hook:calendar-source': 'Proporcionar eventos al calendario', 'admin.plugins.perm.http:outbound': 'Realizar solicitudes salientes a sus hosts declarados', - 'admin.plugins.riskTitle': 'Instala bajo tu propio riesgo', - 'admin.plugins.riskBody': 'Los plugins son código de terceros. Incluso con una revisión rápida previa, un plugin puede contener contenido dañino — en caso de duda, inspecciona el plugin tú mismo antes de instalarlo. TREK no asume ninguna responsabilidad.', + 'admin.plugins.updateConsentTitle': 'Esta actualización necesita nuevos permisos', + 'admin.plugins.updateConsentBody': + '{name} v{version} solicita permisos que aún no has concedido. La nueva versión está instalada, pero permanece desactivada hasta que la apruebes.', + 'admin.plugins.updateNewPermissions': 'Permisos solicitados nuevos', + 'admin.plugins.updateNewEgress': 'Nuevas conexiones salientes', + 'admin.plugins.updateApprove': 'Aprobar y activar', + 'admin.plugins.updateLater': 'Mantener desactivado por ahora', + 'admin.plugins.updateKeptOff': 'Actualización instalada — se deja desactivada hasta que apruebes los nuevos permisos', + 'admin.plugins.reviewedMeaning': + '"Revisado" significa que un responsable de TREK analizó este plugin en busca de malware en cada versión, no su calidad ni si funciona. No es una garantía de que un plugin sea inofensivo.', + 'admin.plugins.security.title': 'Cómo se contienen los plugins — y sus límites', + 'admin.plugins.security.isolationTitle': 'Cada plugin se ejecuta aislado', + 'admin.plugins.security.isolationBody': + 'Un plugin se ejecuta como su propio proceso confinado que solo puede leer sus propios archivos. No puede leer tu base de datos, tu secreto de inicio de sesión ni tu clave de cifrado, no puede iniciar otros programas y no puede escribir archivos en ningún sitio. Su interfaz se ejecuta en un marco de navegador sellado que no puede leer tu cookie de sesión ni tocar la página de TREK que la rodea.', + 'admin.plugins.security.permsTitle': 'Qué significan los permisos', + 'admin.plugins.security.permsBody': + 'Los permisos que se muestran antes de instalar son un límite estricto que TREK aplica mientras el plugin se ejecuta: literalmente no puede hacer nada que no esté en la lista. Pero te indican lo que un plugin puede hacer, no lo que realmente hace. Un plugin con permiso para leer tus viajes y conectarse a un servidor puede enviar tus viajes a ese servidor, así que lee los permisos y los hosts salientes, no solo la descripción.', + 'admin.plugins.security.limitsTitle': 'Lo que no podemos garantizar', + 'admin.plugins.security.limitsBody': + 'El aislamiento es una barrera de software sólida, pero no absoluta. Un plugin actúa exactamente con los permisos que apruebes, así que dentro de esos permisos puede comportarse de forma distinta a lo que sugiere su descripción y puede enviar los datos que posee legítimamente a los hosts que ha declarado. TREK no lee ni juzga lo que hace realmente el código de un plugin.', + 'admin.plugins.security.worstTitle': 'El peor de los casos', + 'admin.plugins.security.worstBody': + 'Un plugin malicioso que actives puede hacer un mal uso de los datos y las conexiones que le concediste — por ejemplo, filtrar los viajes que tiene permiso para leer. No puede robar contraseñas, falsificar un inicio de sesión de administrador, ejecutar comandos en tu servidor ni acceder a datos que no le concediste. El daño se limita a lo que aprobaste, y desactivar el plugin lo detiene.', + 'admin.plugins.security.reviewedTitle': 'Qué significa "Revisado"', + 'admin.plugins.security.reviewedBody': + 'Un plugin revisado fue analizado manualmente en busca de malware por un responsable de TREK en cada versión — se comprobó que no tuviera código malicioso, no si funciona bien. No es una promesa de que el plugin sea inofensivo.', + 'admin.plugins.security.trustTitle': 'En resumen', + 'admin.plugins.security.trustBody': + 'Instalar un plugin es como instalar cualquier aplicación de terceros: añade únicamente código de autores en los que confíes y, en caso de duda, inspecciónalo tú mismo primero. TREK no asume ninguna responsabilidad por los plugins de terceros.', 'admin.addons.title': 'Complementos', 'admin.addons.subtitle': 'Activa o desactiva funciones para personalizar tu experiencia en TREK.', 'admin.addons.subtitleBefore': 'Activa o desactiva funciones para personalizar tu experiencia en ', diff --git a/shared/src/i18n/fr/admin.ts b/shared/src/i18n/fr/admin.ts index 4e72aed3f..5355c332a 100644 --- a/shared/src/i18n/fr/admin.ts +++ b/shared/src/i18n/fr/admin.ts @@ -178,7 +178,6 @@ const admin: TranslationStrings = { 'admin.plugins.uninstalled': 'Plugin désinstallé', 'admin.plugins.uninstallTitle': 'Désinstaller le plugin ?', 'admin.plugins.uninstallBody': 'Cela arrête le plugin, supprime son code et efface toutes ses données. Cette action est irréversible.', - 'admin.plugins.trustNote': "Les plugins s'exécutent de manière isolée avec uniquement les permissions que vous approuvez. N'installez que du code provenant d'auteurs de confiance.", 'admin.plugins.status.starting': 'Démarrage…', 'admin.plugins.type.widget': 'Widget', 'admin.plugins.type.page': 'Page', @@ -223,8 +222,36 @@ const admin: TranslationStrings = { 'admin.plugins.perm.hook:photo-provider': 'Fournir des photos à Photos', 'admin.plugins.perm.hook:calendar-source': 'Fournir des événements au calendrier', 'admin.plugins.perm.http:outbound': 'Effectuer des requêtes sortantes vers ses hôtes déclarés', - 'admin.plugins.riskTitle': 'Installation à vos risques et périls', - 'admin.plugins.riskBody': "Les plugins sont du code tiers. Même après un examen rapide préalable, un plugin peut toujours contenir du contenu malveillant — en cas de doute, inspectez vous-même un plugin avant de l'installer. TREK décline toute responsabilité.", + 'admin.plugins.updateConsentTitle': 'Cette mise à jour nécessite de nouvelles permissions', + 'admin.plugins.updateConsentBody': + "{name} v{version} demande des droits que vous n'avez pas encore accordés. La nouvelle version est installée mais reste désactivée jusqu'à ce que vous l'approuviez.", + 'admin.plugins.updateNewPermissions': 'Nouvelles permissions demandées', + 'admin.plugins.updateNewEgress': 'Nouvelles connexions sortantes', + 'admin.plugins.updateApprove': 'Approuver et activer', + 'admin.plugins.updateLater': "Laisser désactivé pour l'instant", + 'admin.plugins.updateKeptOff': + "Mise à jour installée — laissée désactivée jusqu'à ce que vous approuviez les nouvelles permissions", + 'admin.plugins.reviewedMeaning': + "« Vérifié » signifie qu'un mainteneur de TREK a analysé ce plugin à la recherche de logiciels malveillants à chaque version — non pour sa qualité ni son bon fonctionnement. Ce n'est pas une garantie qu'un plugin est inoffensif.", + 'admin.plugins.security.title': 'Comment les plugins sont confinés — et les limites', + 'admin.plugins.security.isolationTitle': "Chaque plugin s'exécute en isolation", + 'admin.plugins.security.isolationBody': + "Un plugin s'exécute comme son propre processus verrouillé qui ne peut lire que ses propres fichiers. Il ne peut pas lire votre base de données, votre secret de connexion ou votre clé de chiffrement, ne peut pas lancer d'autres programmes et ne peut écrire de fichiers nulle part. Son interface s'exécute dans un cadre de navigateur scellé qui ne peut pas lire votre cookie de session ni toucher à la page TREK qui l'entoure.", + 'admin.plugins.security.permsTitle': 'Ce que signifient les permissions', + 'admin.plugins.security.permsBody': + "Les permissions affichées avant l'installation constituent une limite stricte que TREK applique pendant l'exécution du plugin — il ne peut littéralement rien faire qui ne figure pas dans la liste. Mais elles vous indiquent ce qu'un plugin peut faire, pas ce qu'il fait réellement. Un plugin autorisé à lire vos voyages et à contacter un serveur peut envoyer vos voyages à ce serveur ; lisez donc les permissions et les hôtes sortants, pas seulement la description.", + 'admin.plugins.security.limitsTitle': 'Ce que nous ne pouvons pas promettre', + 'admin.plugins.security.limitsBody': + "L'isolation est une frontière logicielle solide, mais pas absolue. Un plugin agit avec exactement les droits que vous approuvez ; dans les limites de ces droits, il peut donc se comporter autrement que ne le laisse penser sa description, et il peut envoyer aux hôtes qu'il a déclarés les données qu'il détient légitimement. TREK ne lit ni ne juge ce que fait réellement le code d'un plugin.", + 'admin.plugins.security.worstTitle': 'Le pire scénario', + 'admin.plugins.security.worstBody': + "Un plugin malveillant que vous activez peut détourner les données et connexions que vous lui avez accordées — par exemple, divulguer les voyages qu'il est autorisé à lire. Il ne peut pas voler de mots de passe, falsifier une connexion admin, exécuter des commandes sur votre serveur ni atteindre des données que vous n'avez pas accordées. Les dégâts restent limités à ce que vous avez approuvé, et désactiver le plugin l'arrête.", + 'admin.plugins.security.reviewedTitle': 'Ce que signifie « Vérifié »', + 'admin.plugins.security.reviewedBody': + "Un plugin vérifié a été analysé manuellement à la recherche de logiciels malveillants par un mainteneur de TREK à chaque version — contrôlé pour du code hostile, non pour son bon fonctionnement. Ce n'est pas une promesse que le plugin est inoffensif.", + 'admin.plugins.security.trustTitle': 'En résumé', + 'admin.plugins.security.trustBody': + "Installer un plugin revient à installer n'importe quelle application tierce : n'ajoutez que du code provenant d'auteurs de confiance et, en cas de doute, inspectez-le vous-même au préalable. TREK décline toute responsabilité concernant les plugins tiers.", 'admin.addons.title': 'Extensions', 'admin.addons.subtitle': 'Activez ou désactivez des fonctionnalités pour personnaliser votre expérience TREK.', 'admin.addons.catalog.memories.name': 'Photos (Immich)', diff --git a/shared/src/i18n/gr/admin.ts b/shared/src/i18n/gr/admin.ts index a0390a15b..4eed882aa 100644 --- a/shared/src/i18n/gr/admin.ts +++ b/shared/src/i18n/gr/admin.ts @@ -223,7 +223,6 @@ const admin: TranslationStrings = { 'admin.plugins.uninstalled': 'Το plugin απεγκαταστάθηκε', 'admin.plugins.uninstallTitle': 'Απεγκατάσταση plugin;', 'admin.plugins.uninstallBody': 'Αυτό σταματά το plugin, αφαιρεί τον κώδικά του και διαγράφει όλα τα δεδομένα του. Αυτή η ενέργεια δεν μπορεί να αναιρεθεί.', - 'admin.plugins.trustNote': 'Τα plugins εκτελούνται απομονωμένα, μόνο με τα δικαιώματα που εγκρίνετε. Εγκαθιστάτε κώδικα μόνο από δημιουργούς που εμπιστεύεστε.', 'admin.plugins.status.starting': 'Εκκίνηση…', 'admin.plugins.type.widget': 'Widget', 'admin.plugins.type.page': 'Σελίδα', @@ -268,8 +267,35 @@ const admin: TranslationStrings = { 'admin.plugins.perm.hook:photo-provider': 'Παροχή φωτογραφιών στις Αναμνήσεις', 'admin.plugins.perm.hook:calendar-source': 'Παροχή συμβάντων στο ημερολόγιο', 'admin.plugins.perm.http:outbound': 'Εκτέλεση εξερχόμενων αιτημάτων προς τους δηλωμένους hosts του', - 'admin.plugins.riskTitle': 'Εγκατάσταση με δική σας ευθύνη', - 'admin.plugins.riskBody': 'Τα plugins είναι κώδικας τρίτων. Ακόμη και μετά από έναν προηγούμενο σύντομο έλεγχο, ένα plugin μπορεί να περιέχει επιβλαβές περιεχόμενο — σε περίπτωση αμφιβολίας, ελέγξτε ένα plugin μόνοι σας πριν την εγκατάσταση. Το TREK δεν αναλαμβάνει καμία απολύτως ευθύνη.', + 'admin.plugins.updateConsentTitle': 'Αυτή η ενημέρωση χρειάζεται νέα δικαιώματα', + 'admin.plugins.updateConsentBody': + 'Το {name} v{version} ζητά δικαιώματα που δεν έχετε ακόμη παραχωρήσει. Η νέα έκδοση έχει εγκατασταθεί αλλά παραμένει ανενεργή μέχρι να την εγκρίνετε.', + 'admin.plugins.updateNewPermissions': 'Νέα δικαιώματα που ζητούνται', + 'admin.plugins.updateNewEgress': 'Νέες εξερχόμενες συνδέσεις', + 'admin.plugins.updateApprove': 'Έγκριση & ενεργοποίηση', + 'admin.plugins.updateLater': 'Διατήρηση ανενεργού προς το παρόν', + 'admin.plugins.updateKeptOff': 'Η ενημέρωση εγκαταστάθηκε — παραμένει ανενεργή μέχρι να εγκρίνετε τα νέα δικαιώματα', + 'admin.plugins.reviewedMeaning': + 'Το "Ελεγμένο" σημαίνει ότι ένας συντηρητής του TREK σάρωσε αυτό το plugin για κακόβουλο λογισμικό σε κάθε έκδοση — όχι για την ποιότητα ή για το αν λειτουργεί. Δεν αποτελεί εγγύηση ότι ένα plugin είναι ακίνδυνο.', + 'admin.plugins.security.title': 'Πώς περιορίζονται τα plugins — και τα όρια', + 'admin.plugins.security.isolationTitle': 'Κάθε plugin εκτελείται απομονωμένο', + 'admin.plugins.security.isolationBody': + 'Ένα plugin εκτελείται ως δική του κλειδωμένη διεργασία που μπορεί να διαβάσει μόνο τα δικά της αρχεία. Δεν μπορεί να διαβάσει τη βάση δεδομένων σας, το μυστικό σύνδεσής σας ή το κλειδί κρυπτογράφησής σας, δεν μπορεί να εκκινήσει άλλα προγράμματα και δεν μπορεί να γράψει αρχεία πουθενά. Η διεπαφή του εκτελείται σε ένα σφραγισμένο browser frame που δεν μπορεί να διαβάσει το cookie συνεδρίας σας ούτε να αγγίξει τη γύρω σελίδα του TREK.', + 'admin.plugins.security.permsTitle': 'Τι σημαίνουν τα δικαιώματα', + 'admin.plugins.security.permsBody': + 'Τα δικαιώματα που εμφανίζονται πριν την εγκατάσταση αποτελούν ένα αυστηρό όριο που το TREK επιβάλλει όσο εκτελείται το plugin — κυριολεκτικά δεν μπορεί να κάνει τίποτα που δεν βρίσκεται στη λίστα. Όμως σας λένε τι μπορεί να κάνει ένα plugin, όχι τι κάνει στην πραγματικότητα. Ένα plugin που επιτρέπεται να διαβάζει τα ταξίδια σας και να συνδέεται σε έναν server μπορεί να στείλει τα ταξίδια σας σε αυτόν τον server, επομένως διαβάστε τα δικαιώματα και τους εξερχόμενους hosts, όχι μόνο την περιγραφή.', + 'admin.plugins.security.limitsTitle': 'Τι δεν μπορούμε να υποσχεθούμε', + 'admin.plugins.security.limitsBody': + 'Η απομόνωση είναι ένα ισχυρό όριο λογισμικού, όχι απόλυτο. Ένα plugin λειτουργεί με ακριβώς τα δικαιώματα που εγκρίνετε, επομένως εντός αυτών των δικαιωμάτων μπορεί να συμπεριφέρεται διαφορετικά από ό,τι υποδηλώνει η περιγραφή του, και μπορεί να στείλει δεδομένα που κατέχει νόμιμα στους hosts που έχει δηλώσει. Το TREK δεν διαβάζει ούτε κρίνει τι κάνει στην πραγματικότητα ο κώδικας ενός plugin.', + 'admin.plugins.security.worstTitle': 'Η χειρότερη περίπτωση', + 'admin.plugins.security.worstBody': + 'Ένα εχθρικό plugin που ενεργοποιείτε μπορεί να κάνει κακή χρήση των δεδομένων και των συνδέσεων που του παραχωρήσατε — για παράδειγμα, να διαρρεύσει τα ταξίδια που του επιτρέπεται να διαβάζει. Δεν μπορεί να κλέψει κωδικούς, να πλαστογραφήσει μια σύνδεση διαχειριστή, να εκτελέσει εντολές στον server σας ή να αποκτήσει πρόσβαση σε δεδομένα που δεν παραχωρήσατε. Η ζημιά παραμένει εντός όσων εγκρίνατε, και η απενεργοποίηση του plugin το σταματά.', + 'admin.plugins.security.reviewedTitle': 'Τι σημαίνει το "Ελεγμένο"', + 'admin.plugins.security.reviewedBody': + 'Ένα ελεγμένο plugin σαρώθηκε χειροκίνητα για κακόβουλο λογισμικό από έναν συντηρητή του TREK σε κάθε έκδοση — ελέγχθηκε για εχθρικό κώδικα, όχι για το αν λειτουργεί καλά. Δεν αποτελεί υπόσχεση ότι το plugin είναι ακίνδυνο.', + 'admin.plugins.security.trustTitle': 'Το συμπέρασμα', + 'admin.plugins.security.trustBody': + 'Η εγκατάσταση ενός plugin είναι σαν την εγκατάσταση οποιασδήποτε εφαρμογής τρίτου: προσθέστε κώδικα μόνο από δημιουργούς που εμπιστεύεστε, και σε περίπτωση αμφιβολίας, ελέγξτε τον πρώτα μόνοι σας. Το TREK δεν αναλαμβάνει καμία ευθύνη για plugins τρίτων.', 'admin.addons.title': 'Πρόσθετα', 'admin.addons.subtitle': 'Ενεργοποιήστε ή απενεργοποιήστε λειτουργίες για να εξατομικεύσετε την εμπειρία σας στο TREK.', diff --git a/shared/src/i18n/hu/admin.ts b/shared/src/i18n/hu/admin.ts index 003bb31a5..1ead36255 100644 --- a/shared/src/i18n/hu/admin.ts +++ b/shared/src/i18n/hu/admin.ts @@ -177,7 +177,6 @@ const admin: TranslationStrings = { 'admin.plugins.uninstalled': 'Plugin eltávolítva', 'admin.plugins.uninstallTitle': 'Plugin eltávolítása?', 'admin.plugins.uninstallBody': 'Ez leállítja a plugint, eltávolítja a kódját, és törli az összes adatát. Ez nem vonható vissza.', - 'admin.plugins.trustNote': 'A pluginok elkülönítve futnak, kizárólag az általad jóváhagyott engedélyekkel. Csak megbízható szerzőktől telepíts kódot.', 'admin.plugins.status.starting': 'Indítás…', 'admin.plugins.type.widget': 'Widget', 'admin.plugins.type.page': 'Oldal', @@ -222,8 +221,35 @@ const admin: TranslationStrings = { 'admin.plugins.perm.hook:photo-provider': 'Fotók biztosítása az Emlékek funkcióhoz', 'admin.plugins.perm.hook:calendar-source': 'Események biztosítása a naptárhoz', 'admin.plugins.perm.http:outbound': 'Kimenő kérések küldése a bejelentett kiszolgálók felé', - 'admin.plugins.riskTitle': 'Telepítés csak saját felelősségre', - 'admin.plugins.riskBody': 'A pluginok harmadik féltől származó kódok. Egy plugin még előzetes gyors ellenőrzés után is tartalmazhat káros tartalmat — kétség esetén telepítés előtt vizsgáld meg magad a plugint. A TREK semmilyen felelősséget nem vállal.', + 'admin.plugins.updateConsentTitle': 'Ez a frissítés új engedélyeket igényel', + 'admin.plugins.updateConsentBody': + 'A(z) {name} v{version} olyan jogokat kér, amelyeket még nem adtál meg. Az új verzió telepítve van, de kikapcsolva marad, amíg jóvá nem hagyod.', + 'admin.plugins.updateNewPermissions': 'Újonnan kért engedélyek', + 'admin.plugins.updateNewEgress': 'Új kimenő kapcsolatok', + 'admin.plugins.updateApprove': 'Jóváhagyás és bekapcsolás', + 'admin.plugins.updateLater': 'Egyelőre kikapcsolva marad', + 'admin.plugins.updateKeptOff': 'Frissítés telepítve — kikapcsolva marad, amíg jóvá nem hagyod az új engedélyeket', + 'admin.plugins.reviewedMeaning': + 'Az „Ellenőrizve" azt jelenti, hogy egy TREK karbantartó minden verziónál átvizsgálta ezt a plugint kártevők után — nem a minőségét vagy azt, hogy működik-e. Ez nem garancia arra, hogy a plugin ártalmatlan.', + 'admin.plugins.security.title': 'Hogyan vannak a pluginok elszigetelve — és mik a korlátok', + 'admin.plugins.security.isolationTitle': 'Minden plugin elszigetelten fut', + 'admin.plugins.security.isolationBody': + 'A plugin saját, lezárt folyamatként fut, amely csak a saját fájljait olvashatja. Nem fér hozzá az adatbázisodhoz, a bejelentkezési titkodhoz vagy a titkosítási kulcsodhoz, nem indíthat más programokat, és sehová nem írhat fájlokat. A felülete egy lezárt böngészőkeretben fut, amely nem olvashatja a munkamenet-sütidet, és nem nyúlhat a körülötte lévő TREK oldalhoz.', + 'admin.plugins.security.permsTitle': 'Mit jelentenek az engedélyek', + 'admin.plugins.security.permsBody': + 'A telepítés előtt megjelenített engedélyek szigorú korlátot jelentenek, amelyet a TREK a plugin futása közben kényszerít ki — szó szerint semmit sem tehet, ami nem szerepel a listán. De azt mutatják meg, mit tehet egy plugin, nem azt, hogy valójában mit tesz. Egy olyan plugin, amely olvashatja az utazásaidat és elérhet egy szervert, el is küldheti az utazásaidat arra a szerverre, ezért ne csak a leírást, hanem az engedélyeket és a kimenő kiszolgálókat is olvasd el.', + 'admin.plugins.security.limitsTitle': 'Mit nem ígérhetünk', + 'admin.plugins.security.limitsBody': + 'Az elszigetelés erős szoftveres határ, de nem abszolút. A plugin pontosan azokkal a jogokkal működik, amelyeket jóváhagysz, így ezeken a jogokon belül a leírásától eltérően is viselkedhet, és a jogszerűen birtokolt adatokat elküldheti az általa bejelentett kiszolgálóknak. A TREK nem olvassa és nem ítéli meg, hogy egy plugin kódja valójában mit csinál.', + 'admin.plugins.security.worstTitle': 'A legrosszabb eset', + 'admin.plugins.security.worstBody': + 'Egy ellenséges plugin, amelyet bekapcsolsz, visszaélhet a neki megadott adatokkal és kapcsolatokkal — például kiszivárogtathatja azokat az utazásokat, amelyeket olvashat. Nem tud jelszavakat ellopni, admin bejelentkezést hamisítani, parancsokat futtatni a szervereden, vagy olyan adatokhoz hozzáférni, amelyeket nem engedélyeztél. A kár azon belül marad, amit jóváhagytál, és a plugin kikapcsolása leállítja.', + 'admin.plugins.security.reviewedTitle': 'Mit jelent az „Ellenőrizve"', + 'admin.plugins.security.reviewedBody': + 'Egy ellenőrzött plugint egy TREK karbantartó minden verziónál kézzel átvizsgált kártevők után — ellenséges kód szempontjából ellenőrizte, nem pedig azt, hogy jól működik-e. Ez nem ígéret arra, hogy a plugin ártalmatlan.', + 'admin.plugins.security.trustTitle': 'A lényeg', + 'admin.plugins.security.trustBody': + 'Egy plugin telepítése olyan, mint bármely harmadik féltől származó alkalmazás telepítése: csak megbízható szerzőktől adj hozzá kódot, és kétség esetén előbb magad vizsgáld meg. A TREK semmilyen felelősséget nem vállal a harmadik féltől származó pluginokért.', 'admin.addons.title': 'Bővítmények', 'admin.addons.subtitle': 'Funkciók engedélyezése vagy letiltása a TREK testreszabásához.', 'admin.addons.catalog.packing.name': 'Listák', diff --git a/shared/src/i18n/id/admin.ts b/shared/src/i18n/id/admin.ts index 66b63e308..bf87ea562 100644 --- a/shared/src/i18n/id/admin.ts +++ b/shared/src/i18n/id/admin.ts @@ -219,7 +219,6 @@ const admin: TranslationStrings = { 'admin.plugins.uninstalled': 'Plugin dihapus', 'admin.plugins.uninstallTitle': 'Hapus plugin?', 'admin.plugins.uninstallBody': 'Ini akan menghentikan plugin, menghapus kodenya, dan menghapus semua datanya. Tindakan ini tidak bisa dibatalkan.', - 'admin.plugins.trustNote': 'Plugin berjalan terisolasi hanya dengan izin yang kamu setujui. Pasang hanya kode dari pembuat yang kamu percaya.', 'admin.plugins.status.starting': 'Memulai…', 'admin.plugins.type.widget': 'Widget', 'admin.plugins.type.page': 'Halaman', @@ -264,8 +263,27 @@ const admin: TranslationStrings = { 'admin.plugins.perm.hook:photo-provider': 'Menyediakan foto untuk Memories', 'admin.plugins.perm.hook:calendar-source': 'Menyediakan acara untuk kalender', 'admin.plugins.perm.http:outbound': 'Membuat permintaan keluar ke host yang telah dideklarasikannya', - 'admin.plugins.riskTitle': 'Pasang dengan risiko ditanggung sendiri', - 'admin.plugins.riskBody': 'Plugin adalah kode pihak ketiga. Meskipun sudah melewati tinjauan singkat sebelumnya, sebuah plugin tetap bisa mengandung konten berbahaya — jika ragu, periksa sendiri plugin tersebut sebelum memasangnya. TREK sama sekali tidak bertanggung jawab.', + 'admin.plugins.updateConsentTitle': 'Pembaruan ini memerlukan izin baru', + 'admin.plugins.updateConsentBody': '{name} v{version} meminta hak akses yang belum kamu berikan. Versi baru sudah terpasang tetapi tetap nonaktif sampai kamu menyetujuinya.', + 'admin.plugins.updateNewPermissions': 'Izin yang baru diminta', + 'admin.plugins.updateNewEgress': 'Koneksi keluar baru', + 'admin.plugins.updateApprove': 'Setujui & aktifkan', + 'admin.plugins.updateLater': 'Biarkan nonaktif dulu', + 'admin.plugins.updateKeptOff': 'Pembaruan terpasang — dibiarkan nonaktif sampai kamu menyetujui izin baru', + 'admin.plugins.reviewedMeaning': '"Ditinjau" berarti seorang maintainer TREK memindai plugin ini dari malware pada setiap versi — bukan untuk kualitas atau apakah plugin ini berfungsi. Ini bukan jaminan bahwa sebuah plugin tidak berbahaya.', + 'admin.plugins.security.title': 'Bagaimana plugin dikungkung — dan batasannya', + 'admin.plugins.security.isolationTitle': 'Setiap plugin berjalan dalam kotak terisolasi', + 'admin.plugins.security.isolationBody': 'Sebuah plugin berjalan sebagai prosesnya sendiri yang terkunci dan hanya bisa membaca file-nya sendiri. Ia tidak bisa membaca database kamu, rahasia login kamu, atau kunci enkripsi kamu, tidak bisa menjalankan program lain, dan tidak bisa menulis file di mana pun. Antarmukanya berjalan dalam frame browser tersegel yang tidak bisa membaca cookie sesi kamu atau menyentuh halaman TREK di sekitarnya.', + 'admin.plugins.security.permsTitle': 'Apa arti izin-izin ini', + 'admin.plugins.security.permsBody': 'Izin yang ditampilkan sebelum kamu memasang adalah batas keras yang diberlakukan TREK selama plugin berjalan — secara harfiah plugin tidak bisa melakukan apa pun yang tidak ada dalam daftar. Namun izin itu memberitahumu apa yang bisa dilakukan sebuah plugin, bukan apa yang sebenarnya dilakukannya. Plugin yang diizinkan membaca perjalananmu dan menjangkau sebuah server bisa mengirimkan perjalananmu ke server itu, jadi baca izin dan host keluarnya, bukan hanya deskripsinya.', + 'admin.plugins.security.limitsTitle': 'Apa yang tidak bisa kami janjikan', + 'admin.plugins.security.limitsBody': 'Isolasi ini adalah batas perangkat lunak yang kuat, bukan batas yang mutlak. Sebuah plugin bertindak persis dengan hak yang kamu setujui, jadi dalam batas hak itu ia bisa berperilaku berbeda dari yang disiratkan deskripsinya, dan ia bisa mengirim data yang memang dimilikinya secara sah ke host yang telah dideklarasikannya. TREK tidak membaca atau menilai apa yang sebenarnya dilakukan oleh kode sebuah plugin.', + 'admin.plugins.security.worstTitle': 'Skenario terburuk', + 'admin.plugins.security.worstBody': 'Plugin berbahaya yang kamu aktifkan bisa menyalahgunakan data dan koneksi yang kamu berikan padanya — misalnya, membocorkan perjalanan yang boleh dibacanya. Ia tidak bisa mencuri kata sandi, memalsukan login admin, menjalankan perintah di servermu, atau menjangkau data yang tidak kamu berikan. Kerusakannya tetap dalam batas yang kamu setujui, dan menonaktifkan plugin akan menghentikannya.', + 'admin.plugins.security.reviewedTitle': 'Apa arti "Ditinjau"', + 'admin.plugins.security.reviewedBody': 'Plugin yang ditinjau telah dipindai secara manual dari malware oleh seorang maintainer TREK pada setiap versi — diperiksa untuk kode berbahaya, bukan untuk apakah plugin berfungsi dengan baik. Ini bukan janji bahwa plugin tidak berbahaya.', + 'admin.plugins.security.trustTitle': 'Intinya', + 'admin.plugins.security.trustBody': 'Memasang plugin sama seperti memasang aplikasi pihak ketiga mana pun: hanya tambahkan kode dari pembuat yang kamu percaya, dan jika ragu, periksa sendiri terlebih dahulu. TREK tidak bertanggung jawab atas plugin pihak ketiga.', 'admin.addons.title': 'Addon', 'admin.addons.subtitle': 'Aktifkan atau nonaktifkan fitur untuk menyesuaikan pengalaman TREK kamu.', 'admin.addons.catalog.packing.name': 'Daftar', diff --git a/shared/src/i18n/it/admin.ts b/shared/src/i18n/it/admin.ts index 0f4d25851..fb38c0106 100644 --- a/shared/src/i18n/it/admin.ts +++ b/shared/src/i18n/it/admin.ts @@ -176,7 +176,6 @@ const admin: TranslationStrings = { 'admin.plugins.uninstalled': 'Plugin disinstallato', 'admin.plugins.uninstallTitle': 'Disinstallare il plugin?', 'admin.plugins.uninstallBody': 'Il plugin verrà arrestato, il suo codice rimosso e tutti i suoi dati eliminati. Questa operazione non può essere annullata.', - 'admin.plugins.trustNote': 'I plugin vengono eseguiti in isolamento e solo con i permessi che approvi. Installa solo codice di autori di cui ti fidi.', 'admin.plugins.status.starting': 'Avvio in corso…', 'admin.plugins.type.widget': 'Widget', 'admin.plugins.type.page': 'Pagina', @@ -221,8 +220,35 @@ const admin: TranslationStrings = { 'admin.plugins.perm.hook:photo-provider': 'Fornire foto alla sezione Foto', 'admin.plugins.perm.hook:calendar-source': 'Fornire eventi al calendario', 'admin.plugins.perm.http:outbound': 'Effettuare richieste in uscita verso gli host dichiarati', - 'admin.plugins.riskTitle': 'Installazione a proprio rischio', - 'admin.plugins.riskBody': 'I plugin sono codice di terze parti. Anche dopo una rapida revisione preliminare, un plugin può comunque contenere contenuti dannosi — in caso di dubbio, ispeziona personalmente il plugin prima di installarlo. TREK non si assume alcuna responsabilità.', + 'admin.plugins.updateConsentTitle': 'Questo aggiornamento richiede nuovi permessi', + 'admin.plugins.updateConsentBody': + '{name} v{version} richiede permessi che non hai ancora concesso. La nuova versione è installata ma resta disattivata finché non la approvi.', + 'admin.plugins.updateNewPermissions': 'Nuovi permessi richiesti', + 'admin.plugins.updateNewEgress': 'Nuove connessioni in uscita', + 'admin.plugins.updateApprove': 'Approva e attiva', + 'admin.plugins.updateLater': 'Lascia disattivato per ora', + 'admin.plugins.updateKeptOff': 'Aggiornamento installato — resta disattivato finché non approvi i nuovi permessi', + 'admin.plugins.reviewedMeaning': + '"Verificato" significa che un manutentore di TREK ha esaminato questo plugin alla ricerca di malware a ogni versione — non ne ha valutato la qualità né il funzionamento. Non è una garanzia che il plugin sia innocuo.', + 'admin.plugins.security.title': 'Come vengono isolati i plugin — e i limiti', + 'admin.plugins.security.isolationTitle': 'Ogni plugin viene eseguito in isolamento', + 'admin.plugins.security.isolationBody': + 'Un plugin viene eseguito come un proprio processo isolato che può leggere solo i propri file. Non può leggere il tuo database, il tuo segreto di accesso o la tua chiave di crittografia, non può avviare altri programmi e non può scrivere file da nessuna parte. La sua interfaccia viene eseguita in un frame del browser sigillato che non può leggere il cookie di sessione né toccare la pagina di TREK circostante.', + 'admin.plugins.security.permsTitle': 'Cosa significano i permessi', + 'admin.plugins.security.permsBody': + "I permessi mostrati prima dell'installazione sono un limite rigido che TREK impone mentre il plugin è in esecuzione — letteralmente non può fare nulla che non sia nell'elenco. Ma ti dicono cosa un plugin può fare, non cosa fa davvero. Un plugin autorizzato a leggere i tuoi viaggi e a raggiungere un server può inviare i tuoi viaggi a quel server, quindi leggi i permessi e gli host in uscita, non solo la descrizione.", + 'admin.plugins.security.limitsTitle': 'Cosa non possiamo garantire', + 'admin.plugins.security.limitsBody': + "L'isolamento è un confine software robusto, ma non assoluto. Un plugin agisce esattamente con i permessi che approvi, quindi entro tali permessi può comportarsi diversamente da quanto suggerisce la sua descrizione e può inviare i dati che detiene legittimamente agli host che ha dichiarato. TREK non legge né giudica cosa fa davvero il codice di un plugin.", + 'admin.plugins.security.worstTitle': 'Il caso peggiore', + 'admin.plugins.security.worstBody': + 'Un plugin ostile che attivi può abusare dei dati e delle connessioni che gli hai concesso — ad esempio, divulgare i viaggi che è autorizzato a leggere. Non può rubare password, falsificare un accesso da amministratore, eseguire comandi sul tuo server o raggiungere dati che non hai concesso. Il danno resta entro ciò che hai approvato e disattivare il plugin lo ferma.', + 'admin.plugins.security.reviewedTitle': 'Cosa significa "Verificato"', + 'admin.plugins.security.reviewedBody': + 'Un plugin verificato è stato esaminato manualmente alla ricerca di malware da un manutentore di TREK a ogni versione — controllato per individuare codice ostile, non per valutare se funziona bene. Non è una promessa che il plugin sia innocuo.', + 'admin.plugins.security.trustTitle': 'In conclusione', + 'admin.plugins.security.trustBody': + 'Installare un plugin è come installare una qualsiasi app di terze parti: aggiungi solo codice di autori di cui ti fidi e, in caso di dubbio, ispezionalo personalmente prima. TREK non si assume alcuna responsabilità per i plugin di terze parti.', 'admin.addons.title': 'Moduli', 'admin.addons.subtitle': 'Abilita o disabilita le funzionalità per personalizzare la tua esperienza TREK.', 'admin.addons.catalog.packing.name': 'Liste', diff --git a/shared/src/i18n/ja/admin.ts b/shared/src/i18n/ja/admin.ts index 72270bafc..eeec0e3bf 100644 --- a/shared/src/i18n/ja/admin.ts +++ b/shared/src/i18n/ja/admin.ts @@ -208,7 +208,6 @@ const admin: TranslationStrings = { 'admin.plugins.uninstalled': 'プラグインをアンインストールしました', 'admin.plugins.uninstallTitle': 'プラグインをアンインストールしますか?', 'admin.plugins.uninstallBody': 'プラグインを停止してコードを削除し、そのすべてのデータを消去します。この操作は元に戻せません。', - 'admin.plugins.trustNote': 'プラグインは承認した権限のみで分離実行されます。信頼できる作者のコードのみをインストールしてください。', 'admin.plugins.status.starting': '起動中…', 'admin.plugins.type.widget': 'ウィジェット', 'admin.plugins.type.page': 'ページ', @@ -253,8 +252,35 @@ const admin: TranslationStrings = { 'admin.plugins.perm.hook:photo-provider': '「写真」機能への写真の提供', 'admin.plugins.perm.hook:calendar-source': 'カレンダーへの予定の提供', 'admin.plugins.perm.http:outbound': '宣言済みホストへの外部リクエストの送信', - 'admin.plugins.riskTitle': 'インストールは自己責任で行ってください', - 'admin.plugins.riskBody': 'プラグインはサードパーティ製のコードです。事前に簡易レビューが行われていても、プラグインに有害な内容が含まれている可能性は残ります。少しでも疑わしい場合は、インストール前にご自身でプラグインの内容を確認してください。TREKは一切の責任を負いません。', + 'admin.plugins.updateConsentTitle': 'このアップデートには新しい権限が必要です', + 'admin.plugins.updateConsentBody': + '{name} v{version} は、まだ許可していない権限を要求しています。新しいバージョンはインストール済みですが、承認するまで無効のままです。', + 'admin.plugins.updateNewPermissions': '新たに要求された権限', + 'admin.plugins.updateNewEgress': '新しい外部接続', + 'admin.plugins.updateApprove': '承認して有効化', + 'admin.plugins.updateLater': '今は無効のままにする', + 'admin.plugins.updateKeptOff': 'アップデートをインストールしました — 新しい権限を承認するまで無効のままです', + 'admin.plugins.reviewedMeaning': + '「レビュー済み」とは、TREKのメンテナーが各バージョンでこのプラグインをマルウェアの観点から確認したという意味です — 品質や動作の可否を確認したものではありません。プラグインが無害であることを保証するものではありません。', + 'admin.plugins.security.title': 'プラグインの分離のしくみ — そしてその限界', + 'admin.plugins.security.isolationTitle': 'すべてのプラグインは隔離環境で実行されます', + 'admin.plugins.security.isolationBody': + 'プラグインは、自身のファイルしか読み取れない厳重に制限された独立プロセスとして実行されます。データベース、ログイン用のシークレット、暗号鍵を読み取ることはできず、他のプログラムを起動することも、どこかにファイルを書き込むこともできません。その画面は隔離されたブラウザフレーム内で動作し、セッションCookieを読み取ったり、周囲のTREKページに干渉したりすることはできません。', + 'admin.plugins.security.permsTitle': '権限の意味', + 'admin.plugins.security.permsBody': + 'インストール前に表示される権限は、プラグインの実行中にTREKが強制する厳格な制限です — リストにないことは一切実行できません。ただし、これらはプラグインが何をできるかを示すもので、実際に何をするかを示すものではありません。旅行の読み取りとサーバーへの接続を許可されたプラグインは、あなたの旅行をそのサーバーに送信できます。説明文だけでなく、権限と接続先ホストも確認してください。', + 'admin.plugins.security.limitsTitle': '保証できないこと', + 'admin.plugins.security.limitsBody': + 'この分離は強固なソフトウェア上の境界ですが、絶対的なものではありません。プラグインは、あなたが承認した権限のとおりに動作するため、その権限の範囲内では説明とは異なる振る舞いをする場合があり、正当に保持しているデータを宣言済みのホストへ送信することもできます。TREKは、プラグインのコードが実際に何をするかを読み取ったり判断したりはしません。', + 'admin.plugins.security.worstTitle': '最悪の場合', + 'admin.plugins.security.worstBody': + '有効化した悪意のあるプラグインは、あなたが与えたデータと接続を悪用する可能性があります — たとえば、読み取りを許可された旅行を漏えいさせるなどです。ただし、パスワードを盗んだり、管理者ログインを偽造したり、サーバー上でコマンドを実行したり、許可していないデータにアクセスしたりすることはできません。被害はあなたが承認した範囲内にとどまり、プラグインを無効化すれば止まります。', + 'admin.plugins.security.reviewedTitle': '「レビュー済み」の意味', + 'admin.plugins.security.reviewedBody': + 'レビュー済みのプラグインは、TREKのメンテナーが各バージョンで手動でマルウェアの有無を確認したものです — 悪意のあるコードの有無を確認したものであり、正しく動作するかどうかを確認したものではありません。プラグインが無害であることを約束するものではありません。', + 'admin.plugins.security.trustTitle': '結論', + 'admin.plugins.security.trustBody': + 'プラグインのインストールは、サードパーティ製アプリのインストールと同じです。信頼できる作者のコードのみを追加し、少しでも疑わしい場合は、まずご自身で内容を確認してください。TREKはサードパーティ製プラグインについて一切の責任を負いません。', 'admin.addons.title': 'アドオン', 'admin.addons.subtitle': '機能を有効/無効にしてTREKをカスタマイズします。', 'admin.addons.catalog.packing.name': 'リスト', diff --git a/shared/src/i18n/ko/admin.ts b/shared/src/i18n/ko/admin.ts index 739a4fecb..bfae5cbec 100644 --- a/shared/src/i18n/ko/admin.ts +++ b/shared/src/i18n/ko/admin.ts @@ -214,7 +214,6 @@ const admin: TranslationStrings = { 'admin.plugins.uninstalled': '플러그인이 제거되었습니다', 'admin.plugins.uninstallTitle': '플러그인을 제거할까요?', 'admin.plugins.uninstallBody': '플러그인이 중지되고 코드가 제거되며 모든 데이터가 삭제됩니다. 이 작업은 되돌릴 수 없습니다.', - 'admin.plugins.trustNote': '플러그인은 승인한 권한만 가지고 격리된 상태로 실행됩니다. 신뢰할 수 있는 작성자의 코드만 설치하세요.', 'admin.plugins.status.starting': '시작 중…', 'admin.plugins.type.widget': '위젯', 'admin.plugins.type.page': '페이지', @@ -259,8 +258,35 @@ const admin: TranslationStrings = { 'admin.plugins.perm.hook:photo-provider': '사진 기능에 사진 제공', 'admin.plugins.perm.hook:calendar-source': '캘린더에 일정 제공', 'admin.plugins.perm.http:outbound': '선언된 호스트로 아웃바운드 요청 전송', - 'admin.plugins.riskTitle': '설치에 따른 위험은 본인 부담입니다', - 'admin.plugins.riskBody': '플러그인은 서드파티 코드입니다. 사전에 간단한 검토를 거쳤더라도 플러그인에 유해한 내용이 포함되어 있을 수 있습니다 — 의심스러운 경우 설치하기 전에 직접 플러그인을 확인하세요. TREK은 어떠한 책임도 지지 않습니다.', + 'admin.plugins.updateConsentTitle': '이 업데이트에는 새로운 권한이 필요합니다', + 'admin.plugins.updateConsentBody': + '{name} v{version}이(가) 아직 부여하지 않은 권한을 요청합니다. 새 버전은 설치되었지만 승인하기 전까지는 꺼진 상태로 유지됩니다.', + 'admin.plugins.updateNewPermissions': '새로 요청된 권한', + 'admin.plugins.updateNewEgress': '새로운 아웃바운드 연결', + 'admin.plugins.updateApprove': '승인하고 켜기', + 'admin.plugins.updateLater': '일단 꺼두기', + 'admin.plugins.updateKeptOff': '업데이트가 설치되었습니다 — 새 권한을 승인하기 전까지 꺼진 상태로 둡니다', + 'admin.plugins.reviewedMeaning': + '"검토됨"은 TREK 관리자가 각 버전마다 이 플러그인에 악성코드가 있는지 검사했다는 의미입니다 — 품질이나 정상 작동 여부를 검사한 것이 아닙니다. 플러그인이 무해하다는 보장은 아닙니다.', + 'admin.plugins.security.title': '플러그인이 격리되는 방식 — 그리고 그 한계', + 'admin.plugins.security.isolationTitle': '모든 플러그인은 격리된 상태로 실행됩니다', + 'admin.plugins.security.isolationBody': + '플러그인은 자체 파일만 읽을 수 있는 잠긴 별도 프로세스로 실행됩니다. 데이터베이스, 로그인 비밀 값, 암호화 키를 읽을 수 없고, 다른 프로그램을 실행할 수 없으며, 어디에도 파일을 쓸 수 없습니다. 플러그인의 인터페이스는 세션 쿠키를 읽거나 주변 TREK 페이지를 건드릴 수 없는 봉인된 브라우저 프레임에서 실행됩니다.', + 'admin.plugins.security.permsTitle': '권한이 의미하는 것', + 'admin.plugins.security.permsBody': + '설치 전에 표시되는 권한은 플러그인이 실행되는 동안 TREK이 강제하는 엄격한 한계입니다 — 목록에 없는 것은 말 그대로 아무것도 할 수 없습니다. 하지만 이는 플러그인이 무엇을 할 수 있는지를 알려줄 뿐, 실제로 무엇을 하는지는 알려주지 않습니다. 여행을 읽고 서버에 연결할 수 있는 플러그인은 그 서버로 여행 데이터를 전송할 수 있으므로, 설명뿐만 아니라 권한과 아웃바운드 호스트도 확인하세요.', + 'admin.plugins.security.limitsTitle': '보장할 수 없는 것', + 'admin.plugins.security.limitsBody': + '이 격리는 강력한 소프트웨어 경계이지만 절대적인 것은 아닙니다. 플러그인은 정확히 승인한 권한만큼 동작하므로, 그 권한 범위 내에서는 설명과 다르게 동작할 수 있으며, 정당하게 보유한 데이터를 선언한 호스트로 전송할 수 있습니다. TREK은 플러그인의 코드가 실제로 무엇을 하는지 읽거나 판단하지 않습니다.', + 'admin.plugins.security.worstTitle': '최악의 경우', + 'admin.plugins.security.worstBody': + '활성화한 악의적인 플러그인은 부여한 데이터와 연결을 오용할 수 있습니다 — 예를 들어 읽을 수 있는 여행 데이터를 유출할 수 있습니다. 하지만 비밀번호를 훔치거나, 관리자 로그인을 위조하거나, 서버에서 명령을 실행하거나, 부여하지 않은 데이터에 접근할 수는 없습니다. 피해는 승인한 범위 안에 머물며, 플러그인을 끄면 중단됩니다.', + 'admin.plugins.security.reviewedTitle': '"검토됨"의 의미', + 'admin.plugins.security.reviewedBody': + '검토된 플러그인은 각 버전마다 TREK 관리자가 악성코드를 수동으로 검사한 것입니다 — 정상 작동 여부가 아니라 악의적인 코드가 있는지 확인한 것입니다. 플러그인이 무해하다는 약속은 아닙니다.', + 'admin.plugins.security.trustTitle': '핵심 요약', + 'admin.plugins.security.trustBody': + '플러그인을 설치하는 것은 다른 서드파티 앱을 설치하는 것과 같습니다: 신뢰할 수 있는 작성자의 코드만 추가하고, 의심스러우면 먼저 직접 확인하세요. TREK은 서드파티 플러그인에 대해 어떠한 책임도 지지 않습니다.', 'admin.addons.title': '애드온', 'admin.addons.subtitle': '기능을 활성화 또는 비활성화하여 TREK 경험을 맞춤 설정하세요.', 'admin.addons.catalog.packing.name': '목록', diff --git a/shared/src/i18n/nl/admin.ts b/shared/src/i18n/nl/admin.ts index 97dc28017..66b70c47e 100644 --- a/shared/src/i18n/nl/admin.ts +++ b/shared/src/i18n/nl/admin.ts @@ -177,7 +177,6 @@ const admin: TranslationStrings = { 'admin.plugins.uninstalled': 'Plugin verwijderd', 'admin.plugins.uninstallTitle': 'Plugin verwijderen?', 'admin.plugins.uninstallBody': 'Dit stopt de plugin, verwijdert de code en wist alle bijbehorende gegevens. Dit kan niet ongedaan worden gemaakt.', - 'admin.plugins.trustNote': 'Plugins draaien geïsoleerd met alleen de machtigingen die je goedkeurt. Installeer alleen code van auteurs die je vertrouwt.', 'admin.plugins.status.starting': 'Wordt gestart…', 'admin.plugins.type.widget': 'Widget', 'admin.plugins.type.page': 'Pagina', @@ -222,8 +221,35 @@ const admin: TranslationStrings = { 'admin.plugins.perm.hook:photo-provider': "Foto's aanleveren voor de Foto's-sectie", 'admin.plugins.perm.hook:calendar-source': 'Evenementen aanleveren voor de kalender', 'admin.plugins.perm.http:outbound': 'Uitgaande verzoeken doen naar de opgegeven hosts', - 'admin.plugins.riskTitle': 'Installeren op eigen risico', - 'admin.plugins.riskBody': 'Plugins zijn code van derden. Ook na een eerdere korte beoordeling kan een plugin nog steeds schadelijke inhoud bevatten — controleer een plugin bij twijfel zelf voordat je deze installeert. TREK aanvaardt geen enkele verantwoordelijkheid.', + 'admin.plugins.updateConsentTitle': 'Deze update vereist nieuwe machtigingen', + 'admin.plugins.updateConsentBody': + '{name} v{version} vraagt om rechten die je nog niet hebt verleend. De nieuwe versie is geïnstalleerd, maar blijft uit totdat je deze goedkeurt.', + 'admin.plugins.updateNewPermissions': 'Nieuw aangevraagde machtigingen', + 'admin.plugins.updateNewEgress': 'Nieuwe uitgaande verbindingen', + 'admin.plugins.updateApprove': 'Goedkeuren en inschakelen', + 'admin.plugins.updateLater': 'Voorlopig uit laten', + 'admin.plugins.updateKeptOff': 'Update geïnstalleerd — uit gelaten totdat je de nieuwe machtigingen goedkeurt', + 'admin.plugins.reviewedMeaning': + '"Beoordeeld" betekent dat een TREK-beheerder deze plugin bij elke versie op malware heeft gecontroleerd — niet op kwaliteit of op de vraag of hij werkt. Het is geen garantie dat een plugin ongevaarlijk is.', + 'admin.plugins.security.title': 'Hoe plugins worden ingeperkt — en de grenzen', + 'admin.plugins.security.isolationTitle': 'Elke plugin draait afgeschermd', + 'admin.plugins.security.isolationBody': + "Een plugin draait als een eigen afgeschermd proces dat alleen zijn eigen bestanden kan lezen. Hij kan je database, je login-geheim of je versleutelingssleutel niet lezen, kan geen andere programma's starten en kan nergens bestanden wegschrijven. De interface draait in een afgesloten browserframe dat je sessiecookie niet kan lezen en de TREK-pagina eromheen niet kan aanraken.", + 'admin.plugins.security.permsTitle': 'Wat de machtigingen betekenen', + 'admin.plugins.security.permsBody': + 'De machtigingen die vóór het installeren worden getoond, zijn een harde grens die TREK afdwingt zolang de plugin draait — hij kan letterlijk niets doen wat niet op de lijst staat. Maar ze vertellen je wat een plugin kán doen, niet wat hij daadwerkelijk doet. Een plugin die je reizen mag lezen en een server mag bereiken, kan je reizen naar die server sturen; lees dus de machtigingen en de uitgaande hosts, niet alleen de beschrijving.', + 'admin.plugins.security.limitsTitle': 'Wat we niet kunnen beloven', + 'admin.plugins.security.limitsBody': + 'De isolatie is een sterke softwaregrens, geen absolute. Een plugin handelt met precies de rechten die je goedkeurt, dus binnen die rechten kan hij zich anders gedragen dan zijn beschrijving suggereert, en kan hij gegevens die hij rechtmatig bezit naar de door hem opgegeven hosts sturen. TREK leest of beoordeelt niet wat de code van een plugin daadwerkelijk doet.', + 'admin.plugins.security.worstTitle': 'Het ergste geval', + 'admin.plugins.security.worstBody': + "Een kwaadwillende plugin die je inschakelt, kan de gegevens en verbindingen die je hebt verleend misbruiken — bijvoorbeeld de reizen lekken die hij mag lezen. Hij kan geen wachtwoorden stelen, geen beheerderslogin vervalsen, geen commando's op je server uitvoeren en geen gegevens bereiken die je niet hebt verleend. De schade blijft binnen wat je hebt goedgekeurd, en de plugin uitschakelen stopt hem.", + 'admin.plugins.security.reviewedTitle': 'Wat "Beoordeeld" betekent', + 'admin.plugins.security.reviewedBody': + 'Een beoordeelde plugin is bij elke versie handmatig door een TREK-beheerder op malware gecontroleerd — gecontroleerd op kwaadaardige code, niet op de vraag of hij goed werkt. Het is geen belofte dat de plugin ongevaarlijk is.', + 'admin.plugins.security.trustTitle': 'De conclusie', + 'admin.plugins.security.trustBody': + 'Een plugin installeren is als het installeren van elke andere app van derden: voeg alleen code toe van auteurs die je vertrouwt en controleer deze bij twijfel eerst zelf. TREK aanvaardt geen enkele verantwoordelijkheid voor plugins van derden.', 'admin.addons.title': 'Add-ons', 'admin.addons.subtitle': 'Schakel functies in of uit om je TREK-ervaring aan te passen.', 'admin.addons.catalog.memories.name': "Foto's (Immich)", diff --git a/shared/src/i18n/pl/admin.ts b/shared/src/i18n/pl/admin.ts index ca988a50d..0f6773653 100644 --- a/shared/src/i18n/pl/admin.ts +++ b/shared/src/i18n/pl/admin.ts @@ -170,7 +170,6 @@ const admin: TranslationStrings = { 'admin.plugins.uninstalled': 'Wtyczka została odinstalowana', 'admin.plugins.uninstallTitle': 'Odinstalować wtyczkę?', 'admin.plugins.uninstallBody': 'Spowoduje to zatrzymanie wtyczki, usunięcie jej kodu i wszystkich jej danych. Tej operacji nie można cofnąć.', - 'admin.plugins.trustNote': 'Wtyczki działają w izolacji, wyłącznie z uprawnieniami, które zatwierdzisz. Instaluj tylko kod od autorów, którym ufasz.', 'admin.plugins.status.starting': 'Uruchamianie…', 'admin.plugins.type.widget': 'Widget', 'admin.plugins.type.page': 'Strona', @@ -215,8 +214,35 @@ const admin: TranslationStrings = { 'admin.plugins.perm.hook:photo-provider': 'Dostarczanie zdjęć do sekcji Zdjęcia', 'admin.plugins.perm.hook:calendar-source': 'Dostarczanie wydarzeń do kalendarza', 'admin.plugins.perm.http:outbound': 'Wykonywanie wychodzących zapytań do zadeklarowanych hostów', - 'admin.plugins.riskTitle': 'Instalujesz na własne ryzyko', - 'admin.plugins.riskBody': 'Wtyczki to kod stron trzecich. Nawet po wcześniejszym pobieżnym przeglądzie wtyczka może nadal zawierać szkodliwą zawartość — w razie wątpliwości samodzielnie sprawdź wtyczkę przed instalacją. TREK nie ponosi żadnej odpowiedzialności.', + 'admin.plugins.updateConsentTitle': 'Ta aktualizacja wymaga nowych uprawnień', + 'admin.plugins.updateConsentBody': + '{name} v{version} prosi o uprawnienia, których jeszcze nie przyznałeś. Nowa wersja jest zainstalowana, ale pozostaje wyłączona, dopóki jej nie zatwierdzisz.', + 'admin.plugins.updateNewPermissions': 'Nowo wymagane uprawnienia', + 'admin.plugins.updateNewEgress': 'Nowe połączenia wychodzące', + 'admin.plugins.updateApprove': 'Zatwierdź i włącz', + 'admin.plugins.updateLater': 'Na razie pozostaw wyłączoną', + 'admin.plugins.updateKeptOff': 'Aktualizacja zainstalowana — pozostaje wyłączona, dopóki nie zatwierdzisz nowych uprawnień', + 'admin.plugins.reviewedMeaning': + '„Zweryfikowana” oznacza, że opiekun TREK przeskanował tę wtyczkę pod kątem złośliwego oprogramowania w każdej wersji — nie pod kątem jakości ani tego, czy działa. To nie jest gwarancja, że wtyczka jest nieszkodliwa.', + 'admin.plugins.security.title': 'Jak wtyczki są izolowane — i jakie są tego granice', + 'admin.plugins.security.isolationTitle': 'Każda wtyczka działa w izolacji', + 'admin.plugins.security.isolationBody': + 'Wtyczka działa jako własny, odizolowany proces, który może odczytywać wyłącznie swoje własne pliki. Nie może odczytać Twojej bazy danych, sekretu logowania ani klucza szyfrującego, nie może uruchamiać innych programów ani nigdzie zapisywać plików. Jej interfejs działa w zamkniętej ramce przeglądarki, która nie może odczytać Twojego pliku cookie sesji ani ingerować w otaczającą ją stronę TREK.', + 'admin.plugins.security.permsTitle': 'Co oznaczają uprawnienia', + 'admin.plugins.security.permsBody': + 'Uprawnienia pokazywane przed instalacją to twarda granica, którą TREK egzekwuje w trakcie działania wtyczki — dosłownie nie może ona zrobić niczego, czego nie ma na liście. Mówią one jednak, co wtyczka może robić, a nie co faktycznie robi. Wtyczka, która może odczytywać Twoje podróże i łączyć się z serwerem, może wysłać Twoje podróże na ten serwer, dlatego czytaj uprawnienia i hosty wychodzące, a nie tylko opis.', + 'admin.plugins.security.limitsTitle': 'Czego nie możemy obiecać', + 'admin.plugins.security.limitsBody': + 'Izolacja to silna granica programowa, ale nie absolutna. Wtyczka działa dokładnie z tymi uprawnieniami, które zatwierdzisz, więc w ich ramach może zachowywać się inaczej, niż sugeruje jej opis, i może wysyłać dane, do których ma zgodny z uprawnieniami dostęp, do zadeklarowanych przez siebie hostów. TREK nie odczytuje ani nie ocenia tego, co faktycznie robi kod wtyczki.', + 'admin.plugins.security.worstTitle': 'Najgorszy scenariusz', + 'admin.plugins.security.worstBody': + 'Wroga wtyczka, którą włączysz, może nadużyć danych i połączeń, które jej przyznałeś — na przykład ujawnić podróże, które może odczytywać. Nie może wykraść haseł, sfałszować logowania administratora, uruchamiać poleceń na Twoim serwerze ani sięgać po dane, których jej nie przyznałeś. Szkody pozostają w granicach tego, co zatwierdziłeś, a wyłączenie wtyczki je zatrzymuje.', + 'admin.plugins.security.reviewedTitle': 'Co oznacza „Zweryfikowana”', + 'admin.plugins.security.reviewedBody': + 'Zweryfikowana wtyczka została ręcznie przeskanowana pod kątem złośliwego oprogramowania przez opiekuna TREK w każdej wersji — sprawdzona pod kątem wrogiego kodu, a nie tego, czy działa dobrze. To nie jest obietnica, że wtyczka jest nieszkodliwa.', + 'admin.plugins.security.trustTitle': 'Podsumowanie', + 'admin.plugins.security.trustBody': + 'Instalacja wtyczki jest jak instalacja dowolnej aplikacji innych firm: dodawaj tylko kod od autorów, którym ufasz, a w razie wątpliwości najpierw samodzielnie go sprawdź. TREK nie ponosi żadnej odpowiedzialności za wtyczki innych firm.', 'admin.addons.title': 'Dodatki', 'admin.addons.subtitle': 'Włączaj lub wyłączaj funkcje, aby dostosować swoje doświadczenie w TREK.', 'admin.addons.catalog.packing.name': 'Listy', diff --git a/shared/src/i18n/ru/admin.ts b/shared/src/i18n/ru/admin.ts index 98a35aa24..8e58ac53d 100644 --- a/shared/src/i18n/ru/admin.ts +++ b/shared/src/i18n/ru/admin.ts @@ -177,7 +177,6 @@ const admin: TranslationStrings = { 'admin.plugins.uninstalled': 'Плагин удалён', 'admin.plugins.uninstallTitle': 'Удалить плагин?', 'admin.plugins.uninstallBody': 'Плагин будет остановлен, его код удалён, а все его данные стёрты. Это действие нельзя отменить.', - 'admin.plugins.trustNote': 'Плагины работают изолированно и получают только одобренные вами разрешения. Устанавливайте код только от авторов, которым доверяете.', 'admin.plugins.status.starting': 'Запуск…', 'admin.plugins.type.widget': 'Виджет', 'admin.plugins.type.page': 'Страница', @@ -222,8 +221,35 @@ const admin: TranslationStrings = { 'admin.plugins.perm.hook:photo-provider': 'Предоставлять фотографии для «Воспоминаний»', 'admin.plugins.perm.hook:calendar-source': 'Предоставлять события для календаря', 'admin.plugins.perm.http:outbound': 'Выполнять исходящие запросы к заявленным хостам', - 'admin.plugins.riskTitle': 'Установка на свой страх и риск', - 'admin.plugins.riskBody': 'Плагины — это сторонний код. Даже после предварительной беглой проверки плагин всё равно может содержать вредоносное содержимое — при сомнениях проверьте плагин самостоятельно перед установкой. TREK не несёт никакой ответственности.', + 'admin.plugins.updateConsentTitle': 'Для этого обновления нужны новые разрешения', + 'admin.plugins.updateConsentBody': + '{name} v{version} запрашивает права, которые вы ещё не предоставили. Новая версия установлена, но остаётся выключенной, пока вы её не одобрите.', + 'admin.plugins.updateNewPermissions': 'Новые запрашиваемые разрешения', + 'admin.plugins.updateNewEgress': 'Новые исходящие подключения', + 'admin.plugins.updateApprove': 'Одобрить и включить', + 'admin.plugins.updateLater': 'Пока оставить выключенным', + 'admin.plugins.updateKeptOff': 'Обновление установлено — оставлено выключенным, пока вы не одобрите новые разрешения', + 'admin.plugins.reviewedMeaning': + '«Проверен» означает, что сопровождающий TREK проверял этот плагин на вредоносный код в каждой версии — но не его качество или работоспособность. Это не гарантия того, что плагин безвреден.', + 'admin.plugins.security.title': 'Как изолируются плагины — и в чём пределы', + 'admin.plugins.security.isolationTitle': 'Каждый плагин работает в изоляции', + 'admin.plugins.security.isolationBody': + 'Плагин работает как отдельный ограниченный процесс, который может читать только собственные файлы. Он не может читать вашу базу данных, ваш секрет для входа или ключ шифрования, не может запускать другие программы и не может записывать файлы куда-либо. Его интерфейс работает в изолированном фрейме браузера, который не может прочитать вашу сессионную cookie или взаимодействовать с окружающей страницей TREK.', + 'admin.plugins.security.permsTitle': 'Что означают разрешения', + 'admin.plugins.security.permsBody': + 'Разрешения, показанные перед установкой, — это жёсткий предел, который TREK соблюдает во время работы плагина: он буквально не может сделать ничего, чего нет в списке. Но они говорят вам, что плагин может делать, а не что он делает на самом деле. Плагин, которому разрешено читать ваши поездки и обращаться к серверу, может отправить ваши поездки на этот сервер, поэтому читайте разрешения и исходящие хосты, а не только описание.', + 'admin.plugins.security.limitsTitle': 'Что мы не можем гарантировать', + 'admin.plugins.security.limitsBody': + 'Изоляция — это надёжная программная граница, но не абсолютная. Плагин действует ровно с теми правами, которые вы одобрили, поэтому в рамках этих прав он может вести себя иначе, чем описано, и может отправлять данные, которыми законно располагает, на заявленные им хосты. TREK не читает и не оценивает, что на самом деле делает код плагина.', + 'admin.plugins.security.worstTitle': 'Худший случай', + 'admin.plugins.security.worstBody': + 'Вредоносный плагин, который вы включили, может злоупотребить данными и подключениями, которые вы ему предоставили, — например, слить поездки, которые ему разрешено читать. Он не может украсть пароли, подделать вход администратора, выполнять команды на вашем сервере или получить доступ к данным, которые вы не предоставили. Ущерб остаётся в пределах того, что вы одобрили, и выключение плагина его останавливает.', + 'admin.plugins.security.reviewedTitle': 'Что означает «Проверен»', + 'admin.plugins.security.reviewedBody': + 'Проверенный плагин был вручную просканирован на вредоносный код сопровождающим TREK в каждой версии — проверен на вредоносный код, а не на то, насколько хорошо он работает. Это не обещание того, что плагин безвреден.', + 'admin.plugins.security.trustTitle': 'Итог', + 'admin.plugins.security.trustBody': + 'Установка плагина похожа на установку любого стороннего приложения: добавляйте только код от авторов, которым доверяете, а при сомнениях сначала проверьте его самостоятельно. TREK не несёт ответственности за сторонние плагины.', 'admin.addons.title': 'Дополнения', 'admin.addons.subtitle': 'Включайте или отключайте функции для настройки TREK под себя.', 'admin.addons.catalog.memories.name': 'Фото (Immich)', diff --git a/shared/src/i18n/sv/admin.ts b/shared/src/i18n/sv/admin.ts index 4459a3e14..c2e3fddd5 100644 --- a/shared/src/i18n/sv/admin.ts +++ b/shared/src/i18n/sv/admin.ts @@ -229,7 +229,6 @@ const admin: TranslationStrings = { 'admin.plugins.uninstalled': 'Pluginet har avinstallerats', 'admin.plugins.uninstallTitle': 'Avinstallera pluginet?', 'admin.plugins.uninstallBody': 'Detta stoppar pluginet, tar bort dess kod och raderar alla dess data. Detta kan inte ångras.', - 'admin.plugins.trustNote': 'Plugins körs isolerat med endast de behörigheter du godkänner. Installera bara kod från upphovspersoner du litar på.', 'admin.plugins.status.starting': 'Startar…', 'admin.plugins.type.widget': 'Widget', 'admin.plugins.type.page': 'Sida', @@ -274,8 +273,35 @@ const admin: TranslationStrings = { 'admin.plugins.perm.hook:photo-provider': 'Tillhandahålla foton till Minnen', 'admin.plugins.perm.hook:calendar-source': 'Tillhandahålla händelser till kalendern', 'admin.plugins.perm.http:outbound': 'Göra utgående anrop till sina deklarerade värdar', - 'admin.plugins.riskTitle': 'Installera på egen risk', - 'admin.plugins.riskBody': 'Plugins är tredjepartskod. Även efter en tidigare snabbgranskning kan ett plugin fortfarande innehålla skadligt innehåll – granska vid tveksamhet pluginet själv innan du installerar. TREK tar inget som helst ansvar.', + 'admin.plugins.updateConsentTitle': 'Den här uppdateringen kräver nya behörigheter', + 'admin.plugins.updateConsentBody': + '{name} v{version} begär behörigheter som du ännu inte har beviljat. Den nya versionen är installerad men förblir avstängd tills du godkänner den.', + 'admin.plugins.updateNewPermissions': 'Nyligen begärda behörigheter', + 'admin.plugins.updateNewEgress': 'Nya utgående anslutningar', + 'admin.plugins.updateApprove': 'Godkänn och aktivera', + 'admin.plugins.updateLater': 'Låt vara avstängd tills vidare', + 'admin.plugins.updateKeptOff': 'Uppdateringen är installerad — förblir avstängd tills du godkänner de nya behörigheterna', + 'admin.plugins.reviewedMeaning': + '”Granskad” betyder att en TREK-underhållare har skannat pluginet efter skadlig kod i varje version — inte efter kvalitet eller om det fungerar. Det är ingen garanti för att ett plugin är ofarligt.', + 'admin.plugins.security.title': 'Så här isoleras plugins — och gränserna för det', + 'admin.plugins.security.isolationTitle': 'Varje plugin körs inkapslat', + 'admin.plugins.security.isolationBody': + 'Ett plugin körs som en egen låst process som bara kan läsa sina egna filer. Det kan inte läsa din databas, din inloggningshemlighet eller din krypteringsnyckel, kan inte starta andra program och kan inte skriva filer någonstans. Dess gränssnitt körs i en förseglad webbläsarram som inte kan läsa din sessionscookie eller röra TREK-sidan runt omkring.', + 'admin.plugins.security.permsTitle': 'Vad behörigheterna betyder', + 'admin.plugins.security.permsBody': + 'Behörigheterna som visas innan du installerar är en hård gräns som TREK upprätthåller medan pluginet körs — det kan bokstavligen inte göra något som inte står på listan. Men de talar om vad ett plugin kan göra, inte vad det faktiskt gör. Ett plugin som får läsa dina resor och nå en server kan skicka dina resor till den servern, så läs behörigheterna och de utgående värdarna, inte bara beskrivningen.', + 'admin.plugins.security.limitsTitle': 'Vad vi inte kan lova', + 'admin.plugins.security.limitsBody': + 'Isoleringen är en stark mjukvarugräns, men inte en absolut. Ett plugin agerar med exakt de rättigheter du godkänner, så inom dessa rättigheter kan det bete sig annorlunda än vad beskrivningen antyder, och det kan skicka data som det legitimt innehar till de värdar det har deklarerat. TREK läser eller bedömer inte vad ett plugins kod faktiskt gör.', + 'admin.plugins.security.worstTitle': 'Värsta tänkbara fall', + 'admin.plugins.security.worstBody': + 'Ett fientligt plugin som du aktiverar kan missbruka de data och anslutningar du har gett det — till exempel läcka de resor det får läsa. Det kan inte stjäla lösenord, förfalska en administratörsinloggning, köra kommandon på din server eller nå data som du inte har beviljat. Skadan håller sig inom det du har godkänt, och att stänga av pluginet stoppar det.', + 'admin.plugins.security.reviewedTitle': 'Vad ”Granskad” betyder', + 'admin.plugins.security.reviewedBody': + 'Ett granskat plugin har manuellt skannats efter skadlig kod av en TREK-underhållare i varje version — kontrollerat för fientlig kod, inte för om det fungerar bra. Det är inget löfte om att pluginet är ofarligt.', + 'admin.plugins.security.trustTitle': 'Sammanfattningsvis', + 'admin.plugins.security.trustBody': + 'Att installera ett plugin är som att installera vilken tredjepartsapp som helst: lägg bara till kod från upphovspersoner du litar på, och granska det själv först om du är osäker. TREK tar inget ansvar för tredjepartsplugins.', 'admin.addons.title': 'Tillägg', 'admin.addons.subtitle': 'Aktivera eller inaktivera funktioner för att anpassa din TREK-upplevelse.', 'admin.addons.catalog.packing.name': 'Listor', diff --git a/shared/src/i18n/tr/admin.ts b/shared/src/i18n/tr/admin.ts index dea506844..d32531f81 100644 --- a/shared/src/i18n/tr/admin.ts +++ b/shared/src/i18n/tr/admin.ts @@ -221,7 +221,6 @@ const admin: TranslationStrings = { 'admin.plugins.uninstalled': 'Eklenti kaldırıldı', 'admin.plugins.uninstallTitle': 'Eklenti kaldırılsın mı?', 'admin.plugins.uninstallBody': 'Bu, eklentiyi durdurur, kodunu kaldırır ve tüm verilerini siler. Bu işlem geri alınamaz.', - 'admin.plugins.trustNote': 'Eklentiler yalnızca onayladığınız izinlerle yalıtılmış olarak çalışır. Yalnızca güvendiğiniz geliştiricilerin kodunu yükleyin.', 'admin.plugins.status.starting': 'Başlatılıyor…', 'admin.plugins.type.widget': 'Widget', 'admin.plugins.type.page': 'Sayfa', @@ -266,8 +265,35 @@ const admin: TranslationStrings = { 'admin.plugins.perm.hook:photo-provider': 'Fotoğraflar bölümüne fotoğraf sağlar', 'admin.plugins.perm.hook:calendar-source': 'Takvime etkinlik sağlar', 'admin.plugins.perm.http:outbound': 'Bildirdiği ana bilgisayarlara giden istekler yapar', - 'admin.plugins.riskTitle': 'Riski size ait olmak üzere yükleyin', - 'admin.plugins.riskBody': 'Eklentiler üçüncü taraf kodlardır. Önceden yapılan hızlı bir incelemeye rağmen bir eklenti yine de zararlı içerik barındırabilir — şüpheye düştüğünüzde, yüklemeden önce eklentiyi kendiniz inceleyin. TREK hiçbir sorumluluk kabul etmez.', + 'admin.plugins.updateConsentTitle': 'Bu güncelleme yeni izinler gerektiriyor', + 'admin.plugins.updateConsentBody': + '{name} v{version}, henüz vermediğiniz haklar istiyor. Yeni sürüm yüklendi ancak siz onaylayana kadar kapalı kalır.', + 'admin.plugins.updateNewPermissions': 'Yeni istenen izinler', + 'admin.plugins.updateNewEgress': 'Yeni giden bağlantılar', + 'admin.plugins.updateApprove': 'Onayla ve aç', + 'admin.plugins.updateLater': 'Şimdilik kapalı tut', + 'admin.plugins.updateKeptOff': 'Güncelleme yüklendi — yeni izinleri onaylayana kadar kapalı bırakıldı', + 'admin.plugins.reviewedMeaning': + '„İncelendi", bir TREK sorumlusunun bu eklentiyi her sürümde kötü amaçlı yazılıma karşı taradığı anlamına gelir — kalite ya da çalışıp çalışmadığı için değil. Bir eklentinin zararsız olduğunun garantisi değildir.', + 'admin.plugins.security.title': 'Eklentiler nasıl sınırlandırılır — ve bunun sınırları', + 'admin.plugins.security.isolationTitle': 'Her eklenti izole şekilde çalışır', + 'admin.plugins.security.isolationBody': + 'Bir eklenti, yalnızca kendi dosyalarını okuyabilen, kilitlenmiş kendi süreci olarak çalışır. Veritabanınızı, oturum açma gizli anahtarınızı veya şifreleme anahtarınızı okuyamaz, başka programlar başlatamaz ve hiçbir yere dosya yazamaz. Arayüzü, oturum çerezinizi okuyamayan veya çevresindeki TREK sayfasına dokunamayan, yalıtılmış bir tarayıcı çerçevesinde çalışır.', + 'admin.plugins.security.permsTitle': 'İzinler ne anlama gelir', + 'admin.plugins.security.permsBody': + "Yüklemeden önce gösterilen izinler, eklenti çalışırken TREK'in uyguladığı kesin bir sınırdır — eklenti, listede olmayan hiçbir şeyi kelimenin tam anlamıyla yapamaz. Ancak bunlar bir eklentinin ne yapabileceğini söyler, gerçekte ne yaptığını değil. Seyahatlerinizi okumasına ve bir sunucuya erişmesine izin verilen bir eklenti, seyahatlerinizi o sunucuya gönderebilir; bu yüzden yalnızca açıklamayı değil, izinleri ve giden ana bilgisayarları da okuyun.", + 'admin.plugins.security.limitsTitle': 'Söz veremeyeceğimiz şeyler', + 'admin.plugins.security.limitsBody': + 'Yalıtım güçlü bir yazılım sınırıdır, mutlak bir sınır değil. Bir eklenti tam olarak onayladığınız haklarla hareket eder; bu nedenle bu hakların sınırları içinde açıklamasının ima ettiğinden farklı davranabilir ve meşru olarak elinde tuttuğu verileri bildirdiği ana bilgisayarlara gönderebilir. TREK, bir eklentinin kodunun gerçekte ne yaptığını okumaz ya da değerlendirmez.', + 'admin.plugins.security.worstTitle': 'En kötü durum', + 'admin.plugins.security.worstBody': + 'Açtığınız kötü niyetli bir eklenti, ona verdiğiniz verileri ve bağlantıları kötüye kullanabilir — örneğin okumasına izin verilen seyahatleri sızdırabilir. Şifreleri çalamaz, sahte bir yönetici girişi oluşturamaz, sunucunuzda komut çalıştıramaz veya vermediğiniz verilere erişemez. Zarar, onayladığınız sınırların içinde kalır ve eklentiyi kapatmak onu durdurur.', + 'admin.plugins.security.reviewedTitle': '„İncelendi" ne anlama gelir', + 'admin.plugins.security.reviewedBody': + 'İncelenmiş bir eklenti, her sürümde bir TREK sorumlusu tarafından kötü amaçlı yazılıma karşı elle taranmıştır — düşmanca koda karşı kontrol edilmiştir, iyi çalışıp çalışmadığına göre değil. Bu, eklentinin zararsız olduğunun bir garantisi değildir.', + 'admin.plugins.security.trustTitle': 'Özetle', + 'admin.plugins.security.trustBody': + 'Bir eklenti yüklemek, herhangi bir üçüncü taraf uygulamasını yüklemek gibidir: yalnızca güvendiğiniz geliştiricilerin kodunu ekleyin ve şüpheye düştüğünüzde önce kendiniz inceleyin. TREK, üçüncü taraf eklentiler için hiçbir sorumluluk kabul etmez.', 'admin.addons.title': 'Eklentiler', 'admin.addons.subtitle': 'TREK deneyiminizi özelleştirmek için özellikleri etkinleştirin veya devre dışı bırakın.', 'admin.addons.catalog.packing.name': 'Listeler', diff --git a/shared/src/i18n/uk/admin.ts b/shared/src/i18n/uk/admin.ts index f76f1739e..5d67a57bc 100644 --- a/shared/src/i18n/uk/admin.ts +++ b/shared/src/i18n/uk/admin.ts @@ -177,7 +177,6 @@ const admin: TranslationStrings = { 'admin.plugins.uninstalled': 'Плагін видалено', 'admin.plugins.uninstallTitle': 'Видалити плагін?', 'admin.plugins.uninstallBody': 'Це зупинить плагін, видалить його код і всі його дані. Цю дію не можна скасувати.', - 'admin.plugins.trustNote': 'Плагіни працюють ізольовано лише з тими дозволами, які ви схвалили. Встановлюйте код лише від авторів, яким довіряєте.', 'admin.plugins.status.starting': 'Запуск…', 'admin.plugins.type.widget': 'Віджет', 'admin.plugins.type.page': 'Сторінка', @@ -222,8 +221,35 @@ const admin: TranslationStrings = { 'admin.plugins.perm.hook:photo-provider': 'Надавати фотографії для Спогадів', 'admin.plugins.perm.hook:calendar-source': 'Надавати події для календаря', 'admin.plugins.perm.http:outbound': 'Виконувати вихідні запити до заявлених хостів', - 'admin.plugins.riskTitle': 'Встановлюйте на власний ризик', - 'admin.plugins.riskBody': 'Плагіни — це сторонній код. Навіть після попередньої швидкої перевірки плагін усе ще може містити шкідливий вміст — у разі сумнівів перевірте плагін самостійно перед встановленням. TREK не несе жодної відповідальності.', + 'admin.plugins.updateConsentTitle': 'Це оновлення потребує нових дозволів', + 'admin.plugins.updateConsentBody': + '{name} v{version} запитує права, які ви ще не надали. Нову версію встановлено, але вона залишається вимкненою, доки ви її не схвалите.', + 'admin.plugins.updateNewPermissions': 'Нові запитані дозволи', + 'admin.plugins.updateNewEgress': 'Нові вихідні підключення', + 'admin.plugins.updateApprove': 'Схвалити та увімкнути', + 'admin.plugins.updateLater': 'Поки що залишити вимкненим', + 'admin.plugins.updateKeptOff': 'Оновлення встановлено — залишено вимкненим, доки ви не схвалите нові дозволи', + 'admin.plugins.reviewedMeaning': + '«Перевірено» означає, що супроводжувач TREK перевіряв цей плагін на наявність шкідливого коду в кожній версії — а не на якість чи працездатність. Це не гарантія того, що плагін безпечний.', + 'admin.plugins.security.title': 'Як обмежуються плагіни — і де їхні межі', + 'admin.plugins.security.isolationTitle': 'Кожен плагін працює в ізоляції', + 'admin.plugins.security.isolationBody': + 'Плагін працює як власний ізольований процес, який може читати лише свої власні файли. Він не може читати вашу базу даних, ваш секрет входу чи ваш ключ шифрування, не може запускати інші програми та не може записувати файли будь-де. Його інтерфейс працює в ізольованому фреймі браузера, який не може читати ваш файл cookie сеансу чи торкатися сторінки TREK навколо нього.', + 'admin.plugins.security.permsTitle': 'Що означають дозволи', + 'admin.plugins.security.permsBody': + 'Дозволи, показані перед встановленням, — це жорстке обмеження, яке TREK застосовує під час роботи плагіна: він буквально не може зробити нічого, чого немає у списку. Але вони говорять, що плагін може робити, а не що він насправді робить. Плагін, якому дозволено читати ваші подорожі та звертатися до сервера, може надіслати ваші подорожі на цей сервер, тож читайте дозволи та вихідні хости, а не лише опис.', + 'admin.plugins.security.limitsTitle': 'Чого ми не можемо обіцяти', + 'admin.plugins.security.limitsBody': + 'Ізоляція — це надійна програмна межа, але не абсолютна. Плагін діє рівно з тими правами, які ви схвалили, тож у межах цих прав він може поводитися інакше, ніж описано, і може надсилати дані, якими законно володіє, на заявлені ним хости. TREK не читає й не оцінює, що насправді робить код плагіна.', + 'admin.plugins.security.worstTitle': 'Найгірший випадок', + 'admin.plugins.security.worstBody': + 'Шкідливий плагін, який ви увімкнули, може зловживати даними та підключеннями, які ви йому надали, — наприклад, розкрити подорожі, які йому дозволено читати. Він не може викрасти паролі, підробити вхід адміністратора, виконувати команди на вашому сервері чи отримати доступ до даних, яких ви не надали. Шкода залишається в межах того, що ви схвалили, а вимкнення плагіна зупиняє її.', + 'admin.plugins.security.reviewedTitle': 'Що означає «Перевірено»', + 'admin.plugins.security.reviewedBody': + 'Перевірений плагін вручну сканував супроводжувач TREK на наявність шкідливого коду в кожній версії — перевіряли на ворожий код, а не на те, чи добре він працює. Це не обіцянка, що плагін безпечний.', + 'admin.plugins.security.trustTitle': 'Підсумок', + 'admin.plugins.security.trustBody': + 'Встановлення плагіна — це те саме, що встановлення будь-якого стороннього застосунку: додавайте лише код від авторів, яким довіряєте, а в разі сумнівів спершу перевірте його самостійно. TREK не несе відповідальності за сторонні плагіни.', 'admin.addons.title': 'Доповнення', 'admin.addons.subtitle': 'Увімкніть або вимкніть функції, щоб налаштувати TREK під себе.', 'admin.addons.catalog.memories.name': 'Фото (Immich)', diff --git a/shared/src/i18n/vi/admin.ts b/shared/src/i18n/vi/admin.ts index 823c8e1dd..3da108b79 100644 --- a/shared/src/i18n/vi/admin.ts +++ b/shared/src/i18n/vi/admin.ts @@ -229,7 +229,6 @@ const admin: TranslationStrings = { 'admin.plugins.uninstalled': 'Đã gỡ cài đặt plugin', 'admin.plugins.uninstallTitle': 'Gỡ cài đặt plugin?', 'admin.plugins.uninstallBody': 'Thao tác này sẽ dừng plugin, xóa mã nguồn và toàn bộ dữ liệu của nó. Không thể hoàn tác.', - 'admin.plugins.trustNote': 'Plugin chạy trong môi trường cách ly và chỉ có các quyền mà bạn phê duyệt. Chỉ cài đặt mã từ những tác giả bạn tin tưởng.', 'admin.plugins.status.starting': 'Đang khởi động…', 'admin.plugins.type.widget': 'Widget', 'admin.plugins.type.page': 'Trang', @@ -274,8 +273,35 @@ const admin: TranslationStrings = { 'admin.plugins.perm.hook:photo-provider': 'Cung cấp ảnh cho tính năng Ảnh', 'admin.plugins.perm.hook:calendar-source': 'Cung cấp sự kiện cho lịch', 'admin.plugins.perm.http:outbound': 'Gửi yêu cầu ra ngoài đến các máy chủ đã khai báo', - 'admin.plugins.riskTitle': 'Cài đặt và tự chịu rủi ro', - 'admin.plugins.riskBody': 'Plugin là mã của bên thứ ba. Ngay cả khi đã được xem xét sơ bộ trước đó, một plugin vẫn có thể chứa nội dung độc hại — nếu nghi ngờ, hãy tự kiểm tra plugin trước khi cài đặt. TREK hoàn toàn không chịu bất kỳ trách nhiệm nào.', + 'admin.plugins.updateConsentTitle': 'Bản cập nhật này cần các quyền mới', + 'admin.plugins.updateConsentBody': + '{name} v{version} đang yêu cầu các quyền mà bạn chưa cấp. Phiên bản mới đã được cài đặt nhưng vẫn tắt cho đến khi bạn phê duyệt.', + 'admin.plugins.updateNewPermissions': 'Các quyền mới được yêu cầu', + 'admin.plugins.updateNewEgress': 'Các kết nối ra ngoài mới', + 'admin.plugins.updateApprove': 'Phê duyệt & bật', + 'admin.plugins.updateLater': 'Tạm thời để tắt', + 'admin.plugins.updateKeptOff': 'Đã cài đặt bản cập nhật — vẫn tắt cho đến khi bạn phê duyệt các quyền mới', + 'admin.plugins.reviewedMeaning': + '"Đã kiểm duyệt" nghĩa là một người bảo trì TREK đã quét plugin này để tìm mã độc trên mỗi phiên bản — không phải về chất lượng hay việc nó có hoạt động hay không. Đây không phải là bảo đảm rằng plugin vô hại.', + 'admin.plugins.security.title': 'Cách plugin được cô lập — và những giới hạn', + 'admin.plugins.security.isolationTitle': 'Mọi plugin đều chạy trong hộp cách ly', + 'admin.plugins.security.isolationBody': + 'Plugin chạy như một tiến trình bị khóa riêng, chỉ có thể đọc các tệp của chính nó. Nó không thể đọc cơ sở dữ liệu, khóa bí mật đăng nhập hay khóa mã hóa của bạn, không thể khởi chạy chương trình khác và không thể ghi tệp ở bất kỳ đâu. Giao diện của nó chạy trong một khung trình duyệt được niêm phong, không thể đọc cookie phiên của bạn hay tác động đến trang TREK xung quanh.', + 'admin.plugins.security.permsTitle': 'Các quyền có ý nghĩa gì', + 'admin.plugins.security.permsBody': + 'Các quyền hiển thị trước khi bạn cài đặt là một giới hạn cứng mà TREK thực thi trong khi plugin chạy — nó thực sự không thể làm bất cứ điều gì không có trong danh sách. Nhưng chúng cho bạn biết một plugin có thể làm gì, chứ không phải nó thực sự làm gì. Một plugin được phép đọc các chuyến đi của bạn và kết nối tới một máy chủ có thể gửi các chuyến đi của bạn đến máy chủ đó, vì vậy hãy đọc các quyền và các máy chủ ra ngoài, chứ không chỉ phần mô tả.', + 'admin.plugins.security.limitsTitle': 'Những điều chúng tôi không thể hứa', + 'admin.plugins.security.limitsBody': + 'Sự cô lập là một ranh giới phần mềm mạnh mẽ, chứ không tuyệt đối. Một plugin hoạt động với đúng các quyền mà bạn phê duyệt, vì vậy trong phạm vi các quyền đó nó có thể hành xử khác với mô tả của nó, và nó có thể gửi dữ liệu mà nó nắm giữ hợp lệ đến các máy chủ mà nó đã khai báo. TREK không đọc hay đánh giá những gì mã của một plugin thực sự làm.', + 'admin.plugins.security.worstTitle': 'Trường hợp xấu nhất', + 'admin.plugins.security.worstBody': + 'Một plugin độc hại mà bạn bật lên có thể lạm dụng dữ liệu và các kết nối mà bạn đã cấp cho nó — ví dụ, làm rò rỉ các chuyến đi mà nó được phép đọc. Nó không thể đánh cắp mật khẩu, giả mạo đăng nhập quản trị viên, chạy lệnh trên máy chủ của bạn hay truy cập dữ liệu mà bạn không cấp. Thiệt hại chỉ nằm trong phạm vi những gì bạn đã phê duyệt, và việc tắt plugin sẽ dừng nó lại.', + 'admin.plugins.security.reviewedTitle': '"Đã kiểm duyệt" nghĩa là gì', + 'admin.plugins.security.reviewedBody': + 'Một plugin đã kiểm duyệt đã được người bảo trì TREK quét thủ công để tìm mã độc trên mỗi phiên bản — được kiểm tra về mã độc hại, chứ không phải về việc nó có hoạt động tốt hay không. Đây không phải là lời hứa rằng plugin vô hại.', + 'admin.plugins.security.trustTitle': 'Điểm mấu chốt', + 'admin.plugins.security.trustBody': + 'Cài đặt một plugin cũng giống như cài đặt bất kỳ ứng dụng bên thứ ba nào: chỉ cài đặt mã từ những tác giả bạn tin tưởng, và khi còn nghi ngờ, hãy tự kiểm tra nó trước. TREK không chịu trách nhiệm về các plugin của bên thứ ba.', 'admin.addons.title': 'Tiện ích bổ sung', 'admin.addons.subtitle': 'Bật hoặc tắt các tính năng để tùy chỉnh trải nghiệm TREK của bạn.', 'admin.addons.catalog.packing.name': 'Danh sách', diff --git a/shared/src/i18n/zh-TW/admin.ts b/shared/src/i18n/zh-TW/admin.ts index e31e1c70c..918784e5d 100644 --- a/shared/src/i18n/zh-TW/admin.ts +++ b/shared/src/i18n/zh-TW/admin.ts @@ -211,7 +211,6 @@ const admin: TranslationStrings = { 'admin.plugins.uninstalled': '外掛已解除安裝', 'admin.plugins.uninstallTitle': '解除安裝外掛?', 'admin.plugins.uninstallBody': '這將停止該外掛、移除其程式碼並刪除其所有資料。此操作無法復原。', - 'admin.plugins.trustNote': '外掛在隔離環境中執行,僅擁有你核准的權限。請只安裝你信任的作者的程式碼。', 'admin.plugins.status.starting': '啟動中…', 'admin.plugins.type.widget': '小工具', 'admin.plugins.type.page': '頁面', @@ -256,8 +255,35 @@ const admin: TranslationStrings = { 'admin.plugins.perm.hook:photo-provider': '為「回憶」提供照片', 'admin.plugins.perm.hook:calendar-source': '為行事曆提供事件', 'admin.plugins.perm.http:outbound': '向其宣告的主機發出對外請求', - 'admin.plugins.riskTitle': '安裝風險自負', - 'admin.plugins.riskBody': '外掛屬於第三方程式碼。即使事先經過快速審核,外掛仍可能包含有害內容——如有疑慮,請在安裝前自行檢查外掛。TREK 概不承擔任何責任。', + 'admin.plugins.updateConsentTitle': '此更新需要新的權限', + 'admin.plugins.updateConsentBody': + '{name} v{version} 要求你尚未授予的權限。新版本已安裝,但在你核准之前將保持關閉。', + 'admin.plugins.updateNewPermissions': '新要求的權限', + 'admin.plugins.updateNewEgress': '新的對外連線', + 'admin.plugins.updateApprove': '核准並啟用', + 'admin.plugins.updateLater': '暫時保持關閉', + 'admin.plugins.updateKeptOff': '更新已安裝——在你核准新權限之前保持關閉', + 'admin.plugins.reviewedMeaning': + '「已審核」代表 TREK 維護者曾針對每個版本掃描此外掛是否含有惡意程式碼——並非檢查品質或功能是否正常。這不保證外掛無害。', + 'admin.plugins.security.title': '外掛如何被隔離——以及其限制', + 'admin.plugins.security.isolationTitle': '每個外掛都在沙箱中執行', + 'admin.plugins.security.isolationBody': + '外掛以自身受限的獨立程序執行,只能讀取自己的檔案。它無法讀取你的資料庫、登入密鑰或加密金鑰,無法啟動其他程式,也無法在任何位置寫入檔案。它的介面在一個封閉的瀏覽器框架中執行,無法讀取你的工作階段 Cookie,也無法觸及其周圍的 TREK 頁面。', + 'admin.plugins.security.permsTitle': '這些權限的含義', + 'admin.plugins.security.permsBody': + '安裝前顯示的權限是 TREK 在外掛執行期間強制執行的硬性上限——它絕對無法做出清單以外的任何動作。但這些權限告訴你外掛「能」做什麼,而非它「實際」做什麼。一個獲准讀取你行程並連線某伺服器的外掛,就能將你的行程傳送到該伺服器,所以請閱讀權限與對外主機,而不只是看說明。', + 'admin.plugins.security.limitsTitle': '我們無法保證的事', + 'admin.plugins.security.limitsBody': + '這種隔離是一道強而有力的軟體邊界,但並非絕對。外掛僅以你核准的權限行事,因此在這些權限範圍內,它的行為可能與其說明不符,也可能將它合法持有的資料傳送到它所宣告的主機。TREK 不會讀取或評判外掛的程式碼實際做了什麼。', + 'admin.plugins.security.worstTitle': '最壞的情況', + 'admin.plugins.security.worstBody': + '你啟用的惡意外掛可能濫用你授予它的資料與連線——例如洩漏它獲准讀取的行程。它無法竊取密碼、偽造管理員登入、在你的伺服器上執行命令,或存取你未授予的資料。損害僅限於你核准的範圍,停用該外掛即可阻止它。', + 'admin.plugins.security.reviewedTitle': '「已審核」的含義', + 'admin.plugins.security.reviewedBody': + '已審核的外掛,代表 TREK 維護者曾針對每個版本手動掃描惡意程式碼——檢查是否含有有害程式碼,而非它是否運作良好。這並不保證外掛無害。', + 'admin.plugins.security.trustTitle': '結論', + 'admin.plugins.security.trustBody': + '安裝外掛就像安裝任何第三方應用程式:只加入你信任的作者所提供的程式碼,如有疑慮,請先自行檢查。TREK 對第三方外掛概不承擔任何責任。', 'admin.addons.title': '擴充套件', 'admin.addons.subtitle': '啟用或停用功能以自定義你的 TREK 體驗。', 'admin.addons.catalog.memories.name': '照片 (Immich)', diff --git a/shared/src/i18n/zh/admin.ts b/shared/src/i18n/zh/admin.ts index d42c10e5a..002a404ad 100644 --- a/shared/src/i18n/zh/admin.ts +++ b/shared/src/i18n/zh/admin.ts @@ -172,7 +172,6 @@ const admin: TranslationStrings = { 'admin.plugins.uninstalled': '插件已卸载', 'admin.plugins.uninstallTitle': '卸载插件?', 'admin.plugins.uninstallBody': '这将停止该插件、移除其代码并删除其全部数据。此操作无法撤销。', - 'admin.plugins.trustNote': '插件在隔离环境中运行,仅拥有你批准的权限。请只安装来自你信任的作者的代码。', 'admin.plugins.status.starting': '启动中…', 'admin.plugins.type.widget': '小组件', 'admin.plugins.type.page': '页面', @@ -217,8 +216,35 @@ const admin: TranslationStrings = { 'admin.plugins.perm.hook:photo-provider': '为回忆提供照片', 'admin.plugins.perm.hook:calendar-source': '为日历提供事件', 'admin.plugins.perm.http:outbound': '向其声明的主机发出出站请求', - 'admin.plugins.riskTitle': '安装风险自负', - 'admin.plugins.riskBody': '插件是第三方代码。即使经过事先的快速审核,插件仍可能包含有害内容——如有疑虑,请在安装前自行检查插件。TREK 不承担任何责任。', + 'admin.plugins.updateConsentTitle': '此次更新需要新的权限', + 'admin.plugins.updateConsentBody': + '{name} v{version} 请求了你尚未授予的权限。新版本已安装,但在你批准之前将保持关闭。', + 'admin.plugins.updateNewPermissions': '新请求的权限', + 'admin.plugins.updateNewEgress': '新的出站连接', + 'admin.plugins.updateApprove': '批准并启用', + 'admin.plugins.updateLater': '暂时保持关闭', + 'admin.plugins.updateKeptOff': '更新已安装 —— 在你批准新权限之前保持关闭', + 'admin.plugins.reviewedMeaning': + '“已审核”表示 TREK 维护者已针对该插件的每个版本进行了恶意软件扫描 —— 而非检查其质量或是否可用。这并不保证插件无害。', + 'admin.plugins.security.title': '插件如何被隔离 —— 以及其局限', + 'admin.plugins.security.isolationTitle': '每个插件都在隔离环境中运行', + 'admin.plugins.security.isolationBody': + '插件作为其独立的受限进程运行,只能读取自己的文件。它无法读取你的数据库、登录密钥或加密密钥,无法启动其他程序,也无法在任何位置写入文件。它的界面运行在一个封闭的浏览器框架中,既读不到你的会话 Cookie,也无法触及周围的 TREK 页面。', + 'admin.plugins.security.permsTitle': '权限的含义', + 'admin.plugins.security.permsBody': + '安装前显示的权限是 TREK 在插件运行期间强制执行的硬性上限 —— 凡是不在清单上的事,插件根本无法做到。但它们只告诉你插件能做什么,而非它实际做了什么。一个获准读取你的行程并连接某服务器的插件,就能把你的行程发送到该服务器,因此请仔细阅读权限和出站主机,而不只是看描述。', + 'admin.plugins.security.limitsTitle': '我们无法承诺的事', + 'admin.plugins.security.limitsBody': + '这种隔离是强有力的软件边界,但并非绝对。插件所拥有的权限完全就是你批准的那些,因此在这些权限范围内,它的行为可能与其描述不符,也可能把它合法持有的数据发送到它所声明的主机。TREK 不会读取或评判插件代码实际做了什么。', + 'admin.plugins.security.worstTitle': '最坏的情况', + 'admin.plugins.security.worstBody': + '你启用的恶意插件可能滥用你授予它的数据和连接 —— 例如,泄露它有权读取的行程。但它无法窃取密码、伪造管理员登录、在你的服务器上执行命令,也无法触及你未授权的数据。损害始终限于你批准的范围,而停用该插件即可将其制止。', + 'admin.plugins.security.reviewedTitle': '“已审核”的含义', + 'admin.plugins.security.reviewedBody': + '已审核的插件,其每个版本都经过 TREK 维护者的人工恶意软件扫描 —— 检查的是有无恶意代码,而非它是否运行良好。这并不保证插件无害。', + 'admin.plugins.security.trustTitle': '归根结底', + 'admin.plugins.security.trustBody': + '安装插件就如同安装任何第三方应用:只添加来自你信任的作者的代码,如有疑虑,请先自行检查。TREK 对第三方插件不承担任何责任。', 'admin.addons.title': '扩展', 'admin.addons.subtitle': '启用或禁用功能以自定义你的 TREK 体验。', 'admin.addons.catalog.memories.name': '照片 (Immich)',