feat(notices): document sync joins the release notice as a fourth, wide card

Paperless-ngx, Papra, Nextcloud, OpenCloud and Synology Drive are a headliner
of this release and were missing from the notice. The card runs across the row
under the three upright ones, picture beside the text, so the panel keeps its
height: the wordmark without its API pill, the two-way arrow, and the five
stores as tiles. The panel's grid row is capped at the panel's height, so a
short viewport scrolls the left column instead of clipping the support buttons
on the right. The headline counts four, the intro and the card texts are
shorter, and the Dawarich card drops its last sentence, in all 23 languages.
The release e2e test asks with the bundle version, as the client does.
This commit is contained in:
Maurice
2026-09-20 14:58:33 +02:00
parent 8f6ed02cff
commit 9731407694
33 changed files with 289 additions and 214 deletions
@@ -189,4 +189,24 @@ describe('ReleaseNoticeModal', () => {
expect(document.querySelectorAll('.rn-vis-icon')).toHaveLength(2) expect(document.querySelectorAll('.rn-vis-icon')).toHaveLength(2)
expect(document.querySelectorAll('.rn-vis-icon svg')).toHaveLength(2) expect(document.querySelectorAll('.rn-vis-icon svg')).toHaveLength(2)
}) })
it('FE-RN-015: a wide card spans the row with its drawing beside the text, the others stay upright', () => {
const n = releaseNotice()
n.release!.features = [
...n.release!.features,
{ iconName: 'FolderSync', visual: 'docsync', layout: 'wide', titleKey: 'rel.f4.title', bodyKey: 'rel.f4.body' },
]
renderModal(n)
const cards = document.querySelectorAll('.rn-feature')
expect(cards).toHaveLength(4)
expect(cards[3].classList.contains('rn-feature-wide')).toBe(true)
expect([...cards].slice(0, 3).some(c => c.classList.contains('rn-feature-wide'))).toBe(false)
// The document sync drawing: the wordmark without its API pill, and the five stores.
const wide = cards[3]
expect(wide.querySelector('.rn-vis-docs')).not.toBeNull()
expect(wide.querySelectorAll('.rn-vis-docs-store')).toHaveLength(5)
expect(wide.querySelector('.trek-mark .pill-bg')).toBeNull()
// The places card keeps the pill: that one is about the index.
expect(cards[0].querySelector('.trek-mark .pill-bg')).not.toBeNull()
})
}) })
@@ -91,7 +91,7 @@ export function ReleaseNoticeModal({ notice, visible, onDismiss, onCTA, onSecond
<div className="rn-features"> <div className="rn-features">
{release.features.map(f => ( {release.features.map(f => (
<div key={f.titleKey} className="rn-feature"> <div key={f.titleKey} className={f.layout === 'wide' ? 'rn-feature rn-feature-wide' : 'rn-feature'}>
<div className="rn-feature-shine" aria-hidden="true" /> <div className="rn-feature-shine" aria-hidden="true" />
<div className="rn-feature-visual" aria-hidden="true"> <div className="rn-feature-visual" aria-hidden="true">
<ReleaseFeatureVisual visual={f.visual} iconName={f.iconName} /> <ReleaseFeatureVisual visual={f.visual} iconName={f.iconName} />
@@ -1,7 +1,8 @@
import React from 'react'; import React from 'react';
import * as LucideIcons from 'lucide-react'; import * as LucideIcons from 'lucide-react';
import { Car, Landmark, Search, Sparkles } from 'lucide-react'; import { ArrowLeftRight, Car, Landmark, Search, Sparkles } from 'lucide-react';
import DawarichIcon from '../shared/DawarichIcon'; import DawarichIcon from '../shared/DawarichIcon';
import { NextcloudIcon, OpenCloudIcon, PaperlessIcon, PapraIcon, SynologyDriveIcon } from '../shared/DocumentProviderIcons';
import TrekMark from '../shared/TrekMark'; import TrekMark from '../shared/TrekMark';
/* /*
@@ -65,10 +66,29 @@ function DawarichVisual() {
); );
} }
// A trip's documents travelling both ways between TREK and the five stores. The
// wordmark without the API pill: this is TREK itself, not its index.
const STORES = [PaperlessIcon, PapraIcon, NextcloudIcon, OpenCloudIcon, SynologyDriveIcon];
function DocSyncVisual() {
return (
<div className="rn-vis rn-vis-docs">
<span className="rn-vis-trekbadge"><TrekMark pill={false} className="rn-vis-trekmark" /></span>
<span className="rn-vis-docs-flow"><ArrowLeftRight size={14} strokeWidth={2.4} /></span>
<div className="rn-vis-docs-stores">
{STORES.map((Store, i) => (
<span key={i} className="rn-vis-docs-store"><Store size={22} /></span>
))}
</div>
</div>
);
}
const VISUALS: Record<string, () => React.ReactElement> = { const VISUALS: Record<string, () => React.ReactElement> = {
'places-api': PlacesApiVisual, 'places-api': PlacesApiVisual,
roadtrip: RoadtripVisual, roadtrip: RoadtripVisual,
dawarich: DawarichVisual, dawarich: DawarichVisual,
docsync: DocSyncVisual,
}; };
/** The card's picture, or its icon when the release names no drawing this client knows. */ /** The card's picture, or its icon when the release names no drawing this client knows. */
@@ -54,6 +54,9 @@
max-height: 100%; max-height: 100%;
display: grid; display: grid;
grid-template-columns: 1.2fr 1fr; grid-template-columns: 1.2fr 1fr;
/* One row, never taller than the panel: otherwise the row takes the height of
the taller column and the panel clips both, the support buttons first. */
grid-template-rows: minmax(0, 1fr);
border-radius: 30px; border-radius: 30px;
overflow: hidden; overflow: hidden;
box-shadow: 0 4px 12px oklch(0 0 0 / 0.2), 0 60px 130px -40px oklch(0 0 0 / 0.7); box-shadow: 0 4px 12px oklch(0 0 0 / 0.2), 0 60px 130px -40px oklch(0 0 0 / 0.7);
@@ -165,7 +168,7 @@
.rn-intro { .rn-intro {
margin: 11px 0 0; margin: 11px 0 0;
max-width: 560px; max-width: 640px;
font-size: 16.5px; font-size: 16.5px;
line-height: 1.6; line-height: 1.6;
color: oklch(1 0 0 / 0.62); color: oklch(1 0 0 / 0.62);
@@ -193,12 +196,30 @@
.rn-features { .rn-features {
margin-top: 14px; margin-top: 14px;
/* Keeps the foot clear of the cards when the column has no height to spare. */ /* Keeps the foot clear of the cards when the column has no height to spare. */
margin-bottom: 26px; margin-bottom: 18px;
display: grid; display: grid;
grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
gap: 14px; gap: 14px;
} }
/* A headliner laid across the row: the picture beside the text, not above it.
Doubled class so it wins over the .rn-feature block below, which sets the column. */
.rn-feature.rn-feature-wide {
grid-column: 1 / -1;
flex-direction: row;
align-items: center;
gap: 18px;
padding: 12px 18px 12px 12px;
}
.rn-feature.rn-feature-wide .rn-feature-visual {
flex: 0 0 236px;
width: 236px;
height: 88px;
}
.rn-feature.rn-feature-wide .rn-feature-body { margin-top: 4px; }
.rn-feature { .rn-feature {
position: relative; position: relative;
display: flex; display: flex;
@@ -461,6 +482,37 @@
.rn-vis-trail-stay { fill: #ffffff; stroke: #2563eb; stroke-width: 2; } .rn-vis-trail-stay { fill: #ffffff; stroke: #2563eb; stroke-width: 2; }
/* Document sync: the wordmark, the two-way arrow under it, and the five stores in a row. */
.rn-vis-docs {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 4px;
padding: 8px 12px;
}
.rn-vis-docs .rn-vis-trekbadge { height: 22px; }
.rn-vis-docs .rn-vis-trekmark { height: 19px; }
.rn-vis-docs-flow { display: flex; color: oklch(1 0 0 / 0.55); transform: rotate(90deg); }
.rn-vis-docs-stores {
display: flex;
gap: 8px;
}
.rn-vis-docs-store {
display: flex;
align-items: center;
justify-content: center;
width: 34px;
height: 34px;
border-radius: 10px;
background: oklch(1 0 0 / 0.1);
box-shadow: inset 0 1px 0 oklch(1 0 0 / 0.18), inset 0 0 0 1px oklch(1 0 0 / 0.1);
}
/* The mark itself, unframed, with its corners rounded like an app icon. */ /* The mark itself, unframed, with its corners rounded like an app icon. */
.rn-vis-brand { .rn-vis-brand {
position: absolute; position: absolute;
File diff suppressed because one or more lines are too long
+7
View File
@@ -73,6 +73,13 @@ export const SYSTEM_NOTICES: SystemNotice[] = [
titleKey: 'system_notice.release_notes.feature_dawarich_title', titleKey: 'system_notice.release_notes.feature_dawarich_title',
bodyKey: 'system_notice.release_notes.feature_dawarich_body', bodyKey: 'system_notice.release_notes.feature_dawarich_body',
}, },
{
iconName: 'FolderSync',
visual: 'docsync',
layout: 'wide',
titleKey: 'system_notice.release_notes.feature_docsync_title',
bodyKey: 'system_notice.release_notes.feature_docsync_body',
},
], ],
footnoteKey: 'system_notice.release_notes.footnote', footnoteKey: 'system_notice.release_notes.footnote',
notes: { notes: {
+2
View File
@@ -32,6 +32,8 @@ export interface NoticeReleaseFeature {
iconName: string; iconName: string;
/** A small illustration the client draws on the card; unknown names fall back to the icon. */ /** A small illustration the client draws on the card; unknown names fall back to the icon. */
visual?: string; visual?: string;
/** `wide` spans the row, picture beside the text; the default is an upright card. */
layout?: 'card' | 'wide';
titleKey: string; titleKey: string;
bodyKey: string; bodyKey: string;
} }
+13 -2
View File
@@ -27,6 +27,7 @@ const { mockGetActive, mockDismiss } = vi.hoisted(() => ({ mockGetActive: vi.fn(
vi.mock('../../src/systemNotices/service', () => ({ vi.mock('../../src/systemNotices/service', () => ({
getActiveNoticesFor: mockGetActive, getActiveNoticesFor: mockGetActive,
dismissNotice: mockDismiss, dismissNotice: mockDismiss,
getCurrentAppVersion: () => '4.3.0',
})); }));
import { SystemNoticesModule } from '../../src/nest/system-notices/system-notices.module'; import { SystemNoticesModule } from '../../src/nest/system-notices/system-notices.module';
@@ -95,11 +96,21 @@ describe('System-notices e2e (real auth guard + temp SQLite)', () => {
expect(res.body).toEqual([notice]); expect(res.body).toEqual([notice]);
}); });
it('delivers the release notice to a client that announces the layout', async () => { it('holds it back from a bundle that announces the layout but was built for another version', async () => {
mockGetActive.mockReturnValue([release, notice]); mockGetActive.mockReturnValue([release, notice]);
const res = await request(server) const res = await request(server)
.get('/api/system-notices/active') .get('/api/system-notices/active')
.query({ supports: 'release' }) .query({ supports: 'release', ui: '4.2.1' })
.set('Cookie', sessionCookie(1));
expect(res.status).toBe(200);
expect(res.body).toEqual([notice]);
});
it('delivers the release notice to a client that announces the layout for the running version', async () => {
mockGetActive.mockReturnValue([release, notice]);
const res = await request(server)
.get('/api/system-notices/active')
.query({ supports: 'release', ui: '4.3.0' })
.set('Cookie', sessionCookie(1)); .set('Cookie', sessionCookie(1));
expect(res.status).toBe(200); expect(res.status).toBe(200);
expect(res.body).toEqual([release, notice]); expect(res.body).toEqual([release, notice]);
+7 -9
View File
@@ -54,20 +54,16 @@ const system_notice: TranslationStrings = {
'system_notice.thank_you_support.cta_kofi': 'ادعمني على Ko-fi', 'system_notice.thank_you_support.cta_kofi': 'ادعمني على Ko-fi',
'system_notice.pager.counter': '{current} / {total}', // en-fallback 'system_notice.pager.counter': '{current} / {total}', // en-fallback
'system_notice.release_notes.eyebrow': 'تم تثبيت التحديث', 'system_notice.release_notes.eyebrow': 'تم تثبيت التحديث',
'system_notice.release_notes.headline': 'ثلاثة أشياء صار TREK يتولاها بنفسه.', 'system_notice.release_notes.headline': 'أربعة أشياء يقوم بها TREK الآن بنفسه.',
'system_notice.release_notes.intro': 'system_notice.release_notes.intro': 'واجهة أماكن خاصة به، ورحلات برية مخططة من البداية إلى النهاية، وسجل مواقعك في يديك، ومستنداتك متزامنة.',
'واجهة API خاصة به للأماكن، ورحلات برية مخطَّطة من أولها إلى آخرها، وسجل مواقعك يعود إلى يديك.',
'system_notice.release_notes.features_label': 'أبرز الجديد', 'system_notice.release_notes.features_label': 'أبرز الجديد',
'system_notice.release_notes.features_aside': 'وهذا ليس كل شيء', 'system_notice.release_notes.features_aside': 'وهذا ليس كل شيء',
'system_notice.release_notes.feature_places_title': 'TREK Places API', 'system_notice.release_notes.feature_places_title': 'TREK Places API',
'system_notice.release_notes.feature_places_body': 'system_notice.release_notes.feature_places_body': 'أول مخطط رحلات مفتوح المصدر بواجهة أماكن خاصة به. 73.6 مليون مكان، بلا مفتاح، بلا حصة.',
'أول مخطط سفر مفتوح المصدر يستضيف واجهة API خاصة به للأماكن. 73.6 مليون مكان، يُعاد بناؤها كل شهر. بلا مفتاح ولا حصة.',
'system_notice.release_notes.feature_roadtrip_title': 'إضافة الرحلة البرية', 'system_notice.release_notes.feature_roadtrip_title': 'إضافة الرحلة البرية',
'system_notice.release_notes.feature_roadtrip_body': 'system_notice.release_notes.feature_roadtrip_body': 'يخطط القيادة بنفسه: المسار والمسافة والساعات والمحطات. متوقف حتى يفعّله المشرف.',
'وضع الرحلة البرية يخطط القيادة نفسها: المسار، ومسافته، وساعات القيادة، ومحطات التوقف. إنها إضافة، تبقى معطَّلة حتى يفعّلها المسؤول.',
'system_notice.release_notes.feature_dawarich_title': 'تكامل Dawarich', 'system_notice.release_notes.feature_dawarich_title': 'تكامل Dawarich',
'system_notice.release_notes.feature_dawarich_body': 'system_notice.release_notes.feature_dawarich_body': 'البديل المستضاف ذاتيًا لـ Google Timeline، وصار بالإمكان الآن قراءته داخل TREK. يقرأ TREK، ويقرأ فقط.',
'البديل المستضاف ذاتيًا لـ Google Timeline، وصار بالإمكان الآن قراءته داخل TREK. يقرأ TREK، ويقرأ فقط. ولا يُكتب فيه أي شيء أبدًا.',
'system_notice.release_notes.footnote': 'إلى جانب قائمة طويلة من التغييرات الأصغر في بقية أرجاء TREK.', 'system_notice.release_notes.footnote': 'إلى جانب قائمة طويلة من التغييرات الأصغر في بقية أرجاء TREK.',
'system_notice.release_notes.notes_label': 'ملاحظات الإصدار', 'system_notice.release_notes.notes_label': 'ملاحظات الإصدار',
'system_notice.release_notes.note_eyebrow': 'كلمة من صاحب المشروع', 'system_notice.release_notes.note_eyebrow': 'كلمة من صاحب المشروع',
@@ -86,5 +82,7 @@ const system_notice: TranslationStrings = {
'إن كان TREK قد استحق مكانًا في رحلاتك، فاشترِ لي فنجان قهوة وساعد في أن يرى الإصدار القادم النور.', 'إن كان TREK قد استحق مكانًا في رحلاتك، فاشترِ لي فنجان قهوة وساعد في أن يرى الإصدار القادم النور.',
'system_notice.release_notes.cta_bmc': 'Buy me a coffee', 'system_notice.release_notes.cta_bmc': 'Buy me a coffee',
'system_notice.release_notes.cta_kofi': 'ادعمني على Ko-fi', 'system_notice.release_notes.cta_kofi': 'ادعمني على Ko-fi',
'system_notice.release_notes.feature_docsync_title': 'مزامنة المستندات',
'system_notice.release_notes.feature_docsync_body': 'Paperless-ngx وPapra وNextcloud وOpenCloud وSynology Drive. تتدفق مستندات الرحلة في الاتجاهين مع المخزن الذي تشغّله بالفعل.',
}; };
export default system_notice; export default system_notice;
+7 -9
View File
@@ -56,20 +56,16 @@ const system_notice: TranslationStrings = {
'A atualização 3.0.14 detectou um ou mais conflitos de nome de usuário ou e-mail causados por espaços em branco no início ou fim dos valores armazenados. As contas afetadas foram renomeadas automaticamente. Verifique os logs do servidor por linhas começando com **[migration] WHITESPACE COLLISION** para identificar quais contas precisam de revisão.', 'A atualização 3.0.14 detectou um ou mais conflitos de nome de usuário ou e-mail causados por espaços em branco no início ou fim dos valores armazenados. As contas afetadas foram renomeadas automaticamente. Verifique os logs do servidor por linhas começando com **[migration] WHITESPACE COLLISION** para identificar quais contas precisam de revisão.',
// The release modal. One stable set of keys: each big release swaps the copy in place. // The release modal. One stable set of keys: each big release swaps the copy in place.
'system_notice.release_notes.eyebrow': 'Atualização instalada', 'system_notice.release_notes.eyebrow': 'Atualização instalada',
'system_notice.release_notes.headline': 'Três coisas que o TREK agora faz sozinho.', 'system_notice.release_notes.headline': 'Quatro coisas que o TREK agora faz sozinho.',
'system_notice.release_notes.intro': 'system_notice.release_notes.intro': 'A sua própria API de locais, road trips planeadas do início ao fim, o seu histórico de localização nas suas mãos, e os seus documentos sincronizados.',
'Uma API de lugares própria, viagens de carro planejadas de ponta a ponta e o seu histórico de localização de volta nas suas mãos.',
'system_notice.release_notes.features_label': 'Os destaques', 'system_notice.release_notes.features_label': 'Os destaques',
'system_notice.release_notes.features_aside': 'E não é só isso', 'system_notice.release_notes.features_aside': 'E não é só isso',
'system_notice.release_notes.feature_places_title': 'TREK Places API', 'system_notice.release_notes.feature_places_title': 'TREK Places API',
'system_notice.release_notes.feature_places_body': 'system_notice.release_notes.feature_places_body': 'O primeiro planeador de viagens open source com API de locais própria. 73,6 milhões de locais, sem chave, sem quota.',
'O primeiro planejador de viagens open source que hospeda a própria API de lugares. 73,6 milhões de lugares, reconstruídos todo mês. Sem chave, sem cota.',
'system_notice.release_notes.feature_roadtrip_title': 'Addon Viagem de carro', 'system_notice.release_notes.feature_roadtrip_title': 'Addon Viagem de carro',
'system_notice.release_notes.feature_roadtrip_body': 'system_notice.release_notes.feature_roadtrip_body': 'Planeia a viagem sozinho: rota, distância, horas e paragens. Desligado até um admin o ativar.',
'O modo viagem de carro planeja o próprio trajeto: a rota, a distância, as horas de direção e as paradas. É um addon, desligado até que um admin o ative.',
'system_notice.release_notes.feature_dawarich_title': 'Integração Dawarich', 'system_notice.release_notes.feature_dawarich_title': 'Integração Dawarich',
'system_notice.release_notes.feature_dawarich_body': 'system_notice.release_notes.feature_dawarich_body': 'A alternativa self-hosted ao Google Timeline, agora visível dentro do TREK. O TREK lê, e apenas lê.',
'A alternativa self-hosted ao Google Timeline, agora visível dentro do TREK. O TREK lê, e apenas lê. Nada nunca é gravado de volta.',
'system_notice.release_notes.footnote': 'E ainda uma longa lista de mudanças menores em todo o resto do TREK.', 'system_notice.release_notes.footnote': 'E ainda uma longa lista de mudanças menores em todo o resto do TREK.',
'system_notice.release_notes.notes_label': 'Notas da versão', 'system_notice.release_notes.notes_label': 'Notas da versão',
'system_notice.release_notes.note_eyebrow': 'Uma nota do mantenedor', 'system_notice.release_notes.note_eyebrow': 'Uma nota do mantenedor',
@@ -89,5 +85,7 @@ const system_notice: TranslationStrings = {
'Se o TREK ganhou um lugar nas suas viagens, me pague um café e ajude a fazer a próxima versão acontecer.', 'Se o TREK ganhou um lugar nas suas viagens, me pague um café e ajude a fazer a próxima versão acontecer.',
'system_notice.release_notes.cta_bmc': 'Buy me a coffee', 'system_notice.release_notes.cta_bmc': 'Buy me a coffee',
'system_notice.release_notes.cta_kofi': 'Apoiar no Ko-fi', 'system_notice.release_notes.cta_kofi': 'Apoiar no Ko-fi',
'system_notice.release_notes.feature_docsync_title': 'Sincronização de documentos',
'system_notice.release_notes.feature_docsync_body': 'Paperless-ngx, Papra, Nextcloud, OpenCloud e Synology Drive. Os documentos de uma viagem fluem nos dois sentidos com o serviço que já usa.',
}; };
export default system_notice; export default system_notice;
+7 -9
View File
@@ -56,20 +56,15 @@ const system_notice: TranslationStrings = {
'system_notice.thank_you_support.cta_bmc': 'Buy Me a Coffee', 'system_notice.thank_you_support.cta_bmc': 'Buy Me a Coffee',
'system_notice.thank_you_support.cta_kofi': 'Dona suport a Ko-fi', 'system_notice.thank_you_support.cta_kofi': 'Dona suport a Ko-fi',
'system_notice.release_notes.eyebrow': 'Actualització instal·lada', 'system_notice.release_notes.eyebrow': 'Actualització instal·lada',
'system_notice.release_notes.headline': 'Tres coses que TREK ja fa tot sol.', 'system_notice.release_notes.headline': 'Quatre coses que TREK ara fa tot sol.',
'system_notice.release_notes.intro':
"La seva pròpia API de llocs, viatges per carretera planificats de principi a fi i el teu historial d'ubicacions de nou a les teves mans.",
'system_notice.release_notes.features_label': 'Els protagonistes', 'system_notice.release_notes.features_label': 'Els protagonistes',
'system_notice.release_notes.features_aside': 'I això no és tot', 'system_notice.release_notes.features_aside': 'I això no és tot',
'system_notice.release_notes.feature_places_title': 'TREK Places API', 'system_notice.release_notes.feature_places_title': 'TREK Places API',
'system_notice.release_notes.feature_places_body': 'system_notice.release_notes.feature_places_body': 'El primer planificador de viatges de codi obert amb API de llocs pròpia. 73,6 milions de llocs, sense clau, sense quota.',
'El primer planificador de viatges de codi obert que allotja la seva pròpia API de llocs. 73,6 milions de llocs, reconstruïts cada mes. Sense clau, sense quota.',
'system_notice.release_notes.feature_roadtrip_title': 'Complement Roadtrip', 'system_notice.release_notes.feature_roadtrip_title': 'Complement Roadtrip',
'system_notice.release_notes.feature_roadtrip_body': 'system_notice.release_notes.feature_roadtrip_body': 'Planifica el trajecte tot sol: ruta, distància, hores i parades. Desactivat fins que un admin l’activi.',
"El mode viatge per carretera també planifica el trajecte en cotxe: la ruta, la distància, les hores al volant i les parades. És un complement, desactivat fins que un admin l'activi.",
'system_notice.release_notes.feature_dawarich_title': 'Integració amb Dawarich', 'system_notice.release_notes.feature_dawarich_title': 'Integració amb Dawarich',
'system_notice.release_notes.feature_dawarich_body': 'system_notice.release_notes.feature_dawarich_body': 'L’alternativa autoallotjada a Google Timeline, ara llegible des de TREK. TREK llegeix, i només llegeix.',
"L'alternativa autoallotjada a Google Timeline, ara llegible des de TREK. TREK llegeix, i només llegeix. Mai no s'escriu res a Dawarich.",
'system_notice.release_notes.footnote': 'I una llarga llista de canvis més petits a la resta de TREK.', 'system_notice.release_notes.footnote': 'I una llarga llista de canvis més petits a la resta de TREK.',
'system_notice.release_notes.notes_label': 'Notes de la versió', 'system_notice.release_notes.notes_label': 'Notes de la versió',
'system_notice.release_notes.note_eyebrow': 'Una nota del mantenidor', 'system_notice.release_notes.note_eyebrow': 'Una nota del mantenidor',
@@ -89,5 +84,8 @@ const system_notice: TranslationStrings = {
"Si s'ha guanyat un lloc als teus viatges, convida'm a un cafè i ajuda a fer que arribi la propera versió.", "Si s'ha guanyat un lloc als teus viatges, convida'm a un cafè i ajuda a fer que arribi la propera versió.",
'system_notice.release_notes.cta_bmc': 'Buy me a coffee', 'system_notice.release_notes.cta_bmc': 'Buy me a coffee',
'system_notice.release_notes.cta_kofi': 'Dona suport a Ko-fi', 'system_notice.release_notes.cta_kofi': 'Dona suport a Ko-fi',
'system_notice.release_notes.intro': 'Una API de llocs pròpia, viatges per carretera planificats de cap a peus, el teu historial d’ubicacions a les teves mans, i els teus documents sincronitzats.',
'system_notice.release_notes.feature_docsync_title': 'Sincronització de documents',
'system_notice.release_notes.feature_docsync_body': 'Paperless-ngx, Papra, Nextcloud, OpenCloud i Synology Drive. Els documents d’un viatge flueixen en tots dos sentits amb el magatzem que ja fas servir.',
}; };
export default system_notice; export default system_notice;
+7 -9
View File
@@ -56,20 +56,16 @@ const system_notice: TranslationStrings = {
'Aktualizace 3.0.14 zjistila jeden nebo více konfliktů uživatelského jména nebo e-mailu způsobených mezerami na začátku nebo konci uložených hodnot. Dotčené účty byly automaticky přejmenovány. Zkontrolujte protokoly serveru na řádky začínající **[migration] WHITESPACE COLLISION** a zjistěte, které účty vyžadují kontrolu.', 'Aktualizace 3.0.14 zjistila jeden nebo více konfliktů uživatelského jména nebo e-mailu způsobených mezerami na začátku nebo konci uložených hodnot. Dotčené účty byly automaticky přejmenovány. Zkontrolujte protokoly serveru na řádky začínající **[migration] WHITESPACE COLLISION** a zjistěte, které účty vyžadují kontrolu.',
// The release modal. One stable set of keys: each big release swaps the copy in place. // The release modal. One stable set of keys: each big release swaps the copy in place.
'system_notice.release_notes.eyebrow': 'Aktualizace nainstalována', 'system_notice.release_notes.eyebrow': 'Aktualizace nainstalována',
'system_notice.release_notes.headline': 'Tři věci, které TREK teď zvládne sám.', 'system_notice.release_notes.headline': 'Čtyři věci, které TREK nyní zvládne sám.',
'system_notice.release_notes.intro': 'system_notice.release_notes.intro': 'Vlastní API míst, road tripy naplánované od začátku do konce, historie polohy ve vašich rukou, a dokumenty v synchronizaci.',
'Vlastní API pro místa, cesty autem naplánované od začátku do konce a vaše historie polohy opět ve vašich rukou.',
'system_notice.release_notes.features_label': 'Hlavní novinky', 'system_notice.release_notes.features_label': 'Hlavní novinky',
'system_notice.release_notes.features_aside': 'Zdaleka ne všechno', 'system_notice.release_notes.features_aside': 'Zdaleka ne všechno',
'system_notice.release_notes.feature_places_title': 'TREK Places API', 'system_notice.release_notes.feature_places_title': 'TREK Places API',
'system_notice.release_notes.feature_places_body': 'system_notice.release_notes.feature_places_body': 'První open source plánovač cest s vlastním API míst. 73,6 milionu míst, bez klíče, bez limitu.',
'První open source plánovač cest, který provozuje vlastní API pro místa. 73,6 milionu míst, každý měsíc nově sestavených. Žádný klíč, žádná kvóta.',
'system_notice.release_notes.feature_roadtrip_title': 'Doplněk Cesta autem', 'system_notice.release_notes.feature_roadtrip_title': 'Doplněk Cesta autem',
'system_notice.release_notes.feature_roadtrip_body': 'system_notice.release_notes.feature_roadtrip_body': 'Naplánuje jízdu sám: trasu, vzdálenost, hodiny a zastávky. Vypnuto, dokud to admin nezapne.',
'Režim Cesta autem naplánuje i samotnou jízdu: trasu, vzdálenost, hodiny za volantem i zastávky. Jde o doplněk, který zůstává vypnutý, dokud ho nezapne správce.',
'system_notice.release_notes.feature_dawarich_title': 'Integrace Dawarich', 'system_notice.release_notes.feature_dawarich_title': 'Integrace Dawarich',
'system_notice.release_notes.feature_dawarich_body': 'system_notice.release_notes.feature_dawarich_body': 'Self-hosted odpověď na Google Timeline, teď čitelná přímo v TREK. TREK čte, a jen čte.',
'Self-hosted odpověď na Google Timeline, teď čitelná přímo v TREK. TREK čte, a jen čte. Nic se nikdy nezapisuje zpět.',
'system_notice.release_notes.footnote': 'A k tomu dlouhý seznam menších změn napříč zbytkem TREK.', 'system_notice.release_notes.footnote': 'A k tomu dlouhý seznam menších změn napříč zbytkem TREK.',
'system_notice.release_notes.notes_label': 'Poznámky k vydání', 'system_notice.release_notes.notes_label': 'Poznámky k vydání',
'system_notice.release_notes.note_eyebrow': 'Slovo od autora', 'system_notice.release_notes.note_eyebrow': 'Slovo od autora',
@@ -89,5 +85,7 @@ const system_notice: TranslationStrings = {
'Pokud si TREK získal místo na vašich cestách, kupte mi kávu a pomozte, aby přišlo i další vydání.', 'Pokud si TREK získal místo na vašich cestách, kupte mi kávu a pomozte, aby přišlo i další vydání.',
'system_notice.release_notes.cta_bmc': 'Buy me a coffee', 'system_notice.release_notes.cta_bmc': 'Buy me a coffee',
'system_notice.release_notes.cta_kofi': 'Podpořit na Ko-fi', 'system_notice.release_notes.cta_kofi': 'Podpořit na Ko-fi',
'system_notice.release_notes.feature_docsync_title': 'Synchronizace dokumentů',
'system_notice.release_notes.feature_docsync_body': 'Paperless-ngx, Papra, Nextcloud, OpenCloud a Synology Drive. Dokumenty cesty proudí oběma směry s úložištěm, které už provozujete.',
}; };
export default system_notice; export default system_notice;
+7 -9
View File
@@ -57,20 +57,16 @@ const system_notice: TranslationStrings = {
'Das 3.0.14-Upgrade hat einen oder mehrere Konflikte bei Benutzernamen oder E-Mail-Adressen festgestellt, die durch führende oder nachgestellte Leerzeichen in gespeicherten Konten verursacht wurden. Betroffene Konten wurden automatisch umbenannt. Prüfe die Serverprotokolle auf Zeilen, die mit **[migration] WHITESPACE COLLISION** beginnen, um die betroffenen Konten zu identifizieren.', 'Das 3.0.14-Upgrade hat einen oder mehrere Konflikte bei Benutzernamen oder E-Mail-Adressen festgestellt, die durch führende oder nachgestellte Leerzeichen in gespeicherten Konten verursacht wurden. Betroffene Konten wurden automatisch umbenannt. Prüfe die Serverprotokolle auf Zeilen, die mit **[migration] WHITESPACE COLLISION** beginnen, um die betroffenen Konten zu identifizieren.',
// The release modal. One stable set of keys: each big release swaps the copy in place. // The release modal. One stable set of keys: each big release swaps the copy in place.
'system_notice.release_notes.eyebrow': 'Update installiert', 'system_notice.release_notes.eyebrow': 'Update installiert',
'system_notice.release_notes.headline': 'Drei Dinge, die TREK jetzt selbst erledigt.', 'system_notice.release_notes.headline': 'Vier Dinge, die TREK jetzt selbst kann.',
'system_notice.release_notes.intro': 'system_notice.release_notes.intro': 'Eine eigene Orts-API, Roadtrips komplett geplant, dein Standortverlauf wieder in deiner Hand, und deine Dokumente im Abgleich.',
'Eine eigene API für Orte, Roadtrips von Anfang bis Ende geplant und dein Standortverlauf wieder in deiner Hand.',
'system_notice.release_notes.features_label': 'Die Highlights', 'system_notice.release_notes.features_label': 'Die Highlights',
'system_notice.release_notes.features_aside': 'Längst nicht alles', 'system_notice.release_notes.features_aside': 'Längst nicht alles',
'system_notice.release_notes.feature_places_title': 'TREK Places API', 'system_notice.release_notes.feature_places_title': 'TREK Places API',
'system_notice.release_notes.feature_places_body': 'system_notice.release_notes.feature_places_body': 'Der erste Open-Source-Reiseplaner mit eigener Orts-API. 73,6 Millionen Orte, kein Key, kein Kontingent.',
'Der erste Open-Source-Reiseplaner, der seine eigene API für Orte betreibt. 73,6 Millionen Orte, jeden Monat neu aufgebaut. Kein Schlüssel, kein Kontingent.',
'system_notice.release_notes.feature_roadtrip_title': 'Roadtrip-Addon', 'system_notice.release_notes.feature_roadtrip_title': 'Roadtrip-Addon',
'system_notice.release_notes.feature_roadtrip_body': 'system_notice.release_notes.feature_roadtrip_body': 'Plant die Fahrt selbst: Route, Strecke, Stunden und Stopps. Aus, bis ein Admin es einschaltet.',
'Der Roadtrip-Modus plant die Fahrt selbst: die Route, ihre Länge, die Fahrzeit und die Stopps. Ein Addon, das aus bleibt, bis ein Admin es einschaltet.',
'system_notice.release_notes.feature_dawarich_title': 'Dawarich-Integration', 'system_notice.release_notes.feature_dawarich_title': 'Dawarich-Integration',
'system_notice.release_notes.feature_dawarich_body': 'system_notice.release_notes.feature_dawarich_body': 'Die selbst gehostete Antwort auf Google Timeline, jetzt direkt in TREK lesbar. TREK liest, und nur das.',
'Die selbst gehostete Antwort auf Google Timeline, jetzt direkt in TREK lesbar. TREK liest, und nur das. Zurückgeschrieben wird nie etwas.',
'system_notice.release_notes.footnote': 'Dazu kommt eine lange Liste kleinerer Änderungen überall sonst in TREK.', 'system_notice.release_notes.footnote': 'Dazu kommt eine lange Liste kleinerer Änderungen überall sonst in TREK.',
'system_notice.release_notes.notes_label': 'Release Notes', 'system_notice.release_notes.notes_label': 'Release Notes',
'system_notice.release_notes.note_eyebrow': 'Ein Wort vom Maintainer', 'system_notice.release_notes.note_eyebrow': 'Ein Wort vom Maintainer',
@@ -90,5 +86,7 @@ const system_notice: TranslationStrings = {
'Wenn TREK sich einen Platz auf deinen Reisen verdient hat, spendier mir einen Kaffee und hilf mit, dass auch das nächste Release kommt.', 'Wenn TREK sich einen Platz auf deinen Reisen verdient hat, spendier mir einen Kaffee und hilf mit, dass auch das nächste Release kommt.',
'system_notice.release_notes.cta_bmc': 'Buy me a coffee', 'system_notice.release_notes.cta_bmc': 'Buy me a coffee',
'system_notice.release_notes.cta_kofi': 'Ko-fi unterstützen', 'system_notice.release_notes.cta_kofi': 'Ko-fi unterstützen',
'system_notice.release_notes.feature_docsync_title': 'Dokumenten-Sync',
'system_notice.release_notes.feature_docsync_body': 'Paperless-ngx, Papra, Nextcloud, OpenCloud und Synology Drive. Die Dokumente einer Reise fließen in beide Richtungen mit dem Speicher, den du ohnehin betreibst.',
}; };
export default system_notice; export default system_notice;
+7 -9
View File
@@ -52,20 +52,16 @@ const system_notice: TranslationStrings = {
'system_notice.thank_you_support.cta_kofi': 'Support on Ko-fi', 'system_notice.thank_you_support.cta_kofi': 'Support on Ko-fi',
// The release modal. One stable set of keys: each big release swaps the copy in place. // The release modal. One stable set of keys: each big release swaps the copy in place.
'system_notice.release_notes.eyebrow': 'Update installed', 'system_notice.release_notes.eyebrow': 'Update installed',
'system_notice.release_notes.headline': 'Three things TREK now does on its own.', 'system_notice.release_notes.headline': 'Four things TREK now does on its own.',
'system_notice.release_notes.intro': 'system_notice.release_notes.intro': 'Its own place API, road trips planned end to end, your location history back in your hands, and your documents in sync.',
'Its own place API, road trips planned end to end, and your location history back in your hands.',
'system_notice.release_notes.features_label': 'The headliners', 'system_notice.release_notes.features_label': 'The headliners',
'system_notice.release_notes.features_aside': 'Far from everything', 'system_notice.release_notes.features_aside': 'Far from everything',
'system_notice.release_notes.feature_places_title': 'TREK Places API', 'system_notice.release_notes.feature_places_title': 'TREK Places API',
'system_notice.release_notes.feature_places_body': 'system_notice.release_notes.feature_places_body': 'The first open source travel planner with its own place API. 73.6 million places, no key, no quota.',
'The first open source travel planner that hosts its own place API. 73.6 million places, rebuilt monthly. No key, no quota.',
'system_notice.release_notes.feature_roadtrip_title': 'Roadtrip Addon', 'system_notice.release_notes.feature_roadtrip_title': 'Roadtrip Addon',
'system_notice.release_notes.feature_roadtrip_body': 'system_notice.release_notes.feature_roadtrip_body': 'Plans the drive itself: route, distance, hours and stops. Off until an admin turns it on.',
'Road trip mode plans the drive itself: the route, its distance, its hours and its stops. An addon, off until an admin turns it on.',
'system_notice.release_notes.feature_dawarich_title': 'Dawarich Integration', 'system_notice.release_notes.feature_dawarich_title': 'Dawarich Integration',
'system_notice.release_notes.feature_dawarich_body': 'system_notice.release_notes.feature_dawarich_body': 'The self-hosted answer to Google Timeline, now readable inside TREK. TREK reads, and only reads.',
'The self-hosted answer to Google Timeline, now readable inside TREK. TREK reads, and only reads. Nothing is ever written back.',
'system_notice.release_notes.footnote': 'Plus a long list of smaller changes across the rest of TREK.', 'system_notice.release_notes.footnote': 'Plus a long list of smaller changes across the rest of TREK.',
'system_notice.release_notes.notes_label': 'Release notes', 'system_notice.release_notes.notes_label': 'Release notes',
'system_notice.release_notes.note_eyebrow': 'A note from the maintainer', 'system_notice.release_notes.note_eyebrow': 'A note from the maintainer',
@@ -90,5 +86,7 @@ const system_notice: TranslationStrings = {
'system_notice.pager.counter': '{current} / {total}', 'system_notice.pager.counter': '{current} / {total}',
'system_notice.pager.goto': 'Go to notice {n}', 'system_notice.pager.goto': 'Go to notice {n}',
'system_notice.pager.position': 'Notice {current} of {total}', 'system_notice.pager.position': 'Notice {current} of {total}',
'system_notice.release_notes.feature_docsync_title': 'Document Sync',
'system_notice.release_notes.feature_docsync_body': 'Paperless-ngx, Papra, Nextcloud, OpenCloud and Synology Drive. A trip’s documents flow both ways with the store you already run.',
}; };
export default system_notice; export default system_notice;
+7 -9
View File
@@ -56,20 +56,16 @@ const system_notice: TranslationStrings = {
'La actualización 3.0.14 detectó uno o más conflictos de nombre de usuario o correo electrónico causados por espacios en blanco al inicio o al final de los valores almacenados. Las cuentas afectadas se renombraron automáticamente. Revisa los registros del servidor en busca de líneas que empiecen por **[migration] WHITESPACE COLLISION** para identificar qué cuentas necesitan revisión.', 'La actualización 3.0.14 detectó uno o más conflictos de nombre de usuario o correo electrónico causados por espacios en blanco al inicio o al final de los valores almacenados. Las cuentas afectadas se renombraron automáticamente. Revisa los registros del servidor en busca de líneas que empiecen por **[migration] WHITESPACE COLLISION** para identificar qué cuentas necesitan revisión.',
// The release modal. One stable set of keys: each big release swaps the copy in place. // The release modal. One stable set of keys: each big release swaps the copy in place.
'system_notice.release_notes.eyebrow': 'Actualización instalada', 'system_notice.release_notes.eyebrow': 'Actualización instalada',
'system_notice.release_notes.headline': 'Tres cosas que TREK ya hace por sí solo.', 'system_notice.release_notes.headline': 'Cuatro cosas que TREK ahora hace por sí mismo.',
'system_notice.release_notes.intro': 'system_notice.release_notes.intro': 'Su propia API de lugares, viajes por carretera planificados de principio a fin, tu historial de ubicaciones en tus manos, y tus documentos sincronizados.',
'Su propia API de lugares, viajes por carretera planificados de principio a fin y tu historial de ubicaciones de nuevo en tus manos.',
'system_notice.release_notes.features_label': 'Los protagonistas', 'system_notice.release_notes.features_label': 'Los protagonistas',
'system_notice.release_notes.features_aside': 'Y eso no es todo', 'system_notice.release_notes.features_aside': 'Y eso no es todo',
'system_notice.release_notes.feature_places_title': 'TREK Places API', 'system_notice.release_notes.feature_places_title': 'TREK Places API',
'system_notice.release_notes.feature_places_body': 'system_notice.release_notes.feature_places_body': 'El primer planificador de viajes de código abierto con su propia API de lugares. 73,6 millones de lugares, sin clave, sin cuota.',
'El primer planificador de viajes open source que aloja su propia API de lugares. 73,6 millones de lugares, reconstruidos cada mes. Sin clave, sin cuota.',
'system_notice.release_notes.feature_roadtrip_title': 'Addon Roadtrip', 'system_notice.release_notes.feature_roadtrip_title': 'Addon Roadtrip',
'system_notice.release_notes.feature_roadtrip_body': 'system_notice.release_notes.feature_roadtrip_body': 'Planifica el trayecto por sí solo: ruta, distancia, horas y paradas. Apagado hasta que un admin lo active.',
'El modo viaje por carretera también planifica el trayecto en coche: la ruta, la distancia, las horas al volante y las paradas. Es un addon, desactivado hasta que un admin lo active.',
'system_notice.release_notes.feature_dawarich_title': 'Integración con Dawarich', 'system_notice.release_notes.feature_dawarich_title': 'Integración con Dawarich',
'system_notice.release_notes.feature_dawarich_body': 'system_notice.release_notes.feature_dawarich_body': 'La alternativa autoalojada a Google Timeline, ahora legible desde TREK. TREK lee, y solo lee.',
'La alternativa autoalojada a Google Timeline, ahora legible desde TREK. TREK lee, y solo lee. Nunca se escribe nada en Dawarich.',
'system_notice.release_notes.footnote': 'Y una larga lista de cambios más pequeños en el resto de TREK.', 'system_notice.release_notes.footnote': 'Y una larga lista de cambios más pequeños en el resto de TREK.',
'system_notice.release_notes.notes_label': 'Notas de versión', 'system_notice.release_notes.notes_label': 'Notas de versión',
'system_notice.release_notes.note_eyebrow': 'Una nota del desarrollador', 'system_notice.release_notes.note_eyebrow': 'Una nota del desarrollador',
@@ -89,5 +85,7 @@ const system_notice: TranslationStrings = {
'Si se ha ganado un sitio en tus viajes, invítame a un café y ayuda a que llegue la próxima versión.', 'Si se ha ganado un sitio en tus viajes, invítame a un café y ayuda a que llegue la próxima versión.',
'system_notice.release_notes.cta_bmc': 'Buy me a coffee', 'system_notice.release_notes.cta_bmc': 'Buy me a coffee',
'system_notice.release_notes.cta_kofi': 'Apóyame en Ko-fi', 'system_notice.release_notes.cta_kofi': 'Apóyame en Ko-fi',
'system_notice.release_notes.feature_docsync_title': 'Sincronización de documentos',
'system_notice.release_notes.feature_docsync_body': 'Paperless-ngx, Papra, Nextcloud, OpenCloud y Synology Drive. Los documentos de un viaje fluyen en ambos sentidos con el almacén que ya usas.',
}; };
export default system_notice; export default system_notice;
+7 -9
View File
@@ -55,20 +55,16 @@ const system_notice: TranslationStrings = {
'system_notice.v3014_whitespace_collision.body': 'system_notice.v3014_whitespace_collision.body':
"La mise à niveau 3.0.14 a détecté un ou plusieurs conflits de nom d'utilisateur ou d'adresse e-mail causés par des espaces en début ou en fin de valeur dans les comptes enregistrés. Les comptes concernés ont été renommés automatiquement. Consultez les journaux du serveur pour les lignes commençant par **[migration] WHITESPACE COLLISION** afin d'identifier les comptes nécessitant une vérification.", "La mise à niveau 3.0.14 a détecté un ou plusieurs conflits de nom d'utilisateur ou d'adresse e-mail causés par des espaces en début ou en fin de valeur dans les comptes enregistrés. Les comptes concernés ont été renommés automatiquement. Consultez les journaux du serveur pour les lignes commençant par **[migration] WHITESPACE COLLISION** afin d'identifier les comptes nécessitant une vérification.",
'system_notice.release_notes.eyebrow': 'Mise à jour installée', 'system_notice.release_notes.eyebrow': 'Mise à jour installée',
'system_notice.release_notes.headline': 'Trois choses que TREK fait désormais tout seul.', 'system_notice.release_notes.headline': 'Quatre choses que TREK fait désormais tout seul.',
'system_notice.release_notes.intro': 'system_notice.release_notes.intro': 'Sa propre API de lieux, des road trips planifiés de bout en bout, votre historique de position entre vos mains, et vos documents synchronisés.',
'Sa propre API de lieux, des road trips planifiés de bout en bout et ton historique de positions de retour entre tes mains.',
'system_notice.release_notes.features_label': "Les têtes d'affiche", 'system_notice.release_notes.features_label': "Les têtes d'affiche",
'system_notice.release_notes.features_aside': "Et ce n'est pas tout", 'system_notice.release_notes.features_aside': "Et ce n'est pas tout",
'system_notice.release_notes.feature_places_title': 'API TREK Places', 'system_notice.release_notes.feature_places_title': 'API TREK Places',
'system_notice.release_notes.feature_places_body': 'system_notice.release_notes.feature_places_body': 'Le premier planificateur de voyage open source avec sa propre API de lieux. 73,6 millions de lieux, sans clé, sans quota.',
'Le premier planificateur de voyage open source qui héberge sa propre API de lieux. 73,6 millions de lieux, reconstruits chaque mois. Sans clé, sans quota.',
'system_notice.release_notes.feature_roadtrip_title': 'Addon Roadtrip', 'system_notice.release_notes.feature_roadtrip_title': 'Addon Roadtrip',
'system_notice.release_notes.feature_roadtrip_body': 'system_notice.release_notes.feature_roadtrip_body': 'Planifie le trajet lui-même : itinéraire, distance, heures et arrêts. Désactivé tant qu’un admin ne l’active pas.',
"Le mode road trip planifie aussi le trajet en voiture : l'itinéraire, la distance, les heures de route et les arrêts. C'est un addon, désactivé tant qu'un admin ne l'active pas.",
'system_notice.release_notes.feature_dawarich_title': 'Intégration Dawarich', 'system_notice.release_notes.feature_dawarich_title': 'Intégration Dawarich',
'system_notice.release_notes.feature_dawarich_body': 'system_notice.release_notes.feature_dawarich_body': 'L’alternative auto-hébergée à Google Timeline, désormais lisible depuis TREK. TREK lit, et ne fait que lire.',
"L'alternative auto-hébergée à Google Timeline, désormais lisible depuis TREK. TREK lit, et ne fait que lire. Rien n'est jamais réécrit dans Dawarich.",
'system_notice.release_notes.footnote': 'Et une longue liste de changements plus discrets dans le reste de TREK.', 'system_notice.release_notes.footnote': 'Et une longue liste de changements plus discrets dans le reste de TREK.',
'system_notice.release_notes.notes_label': 'Notes de version', 'system_notice.release_notes.notes_label': 'Notes de version',
'system_notice.release_notes.note_eyebrow': 'Un mot du mainteneur', 'system_notice.release_notes.note_eyebrow': 'Un mot du mainteneur',
@@ -88,5 +84,7 @@ const system_notice: TranslationStrings = {
"Si TREK s'est fait une place dans tes voyages, offre-moi un café et aide la prochaine version à voir le jour.", "Si TREK s'est fait une place dans tes voyages, offre-moi un café et aide la prochaine version à voir le jour.",
'system_notice.release_notes.cta_bmc': 'Buy me a coffee', 'system_notice.release_notes.cta_bmc': 'Buy me a coffee',
'system_notice.release_notes.cta_kofi': 'Soutenir sur Ko-fi', 'system_notice.release_notes.cta_kofi': 'Soutenir sur Ko-fi',
'system_notice.release_notes.feature_docsync_title': 'Synchronisation de documents',
'system_notice.release_notes.feature_docsync_body': 'Paperless-ngx, Papra, Nextcloud, OpenCloud et Synology Drive. Les documents d’un voyage circulent dans les deux sens avec le service que vous hébergez déjà.',
}; };
export default system_notice; export default system_notice;
+7 -9
View File
@@ -57,20 +57,16 @@ const system_notice: TranslationStrings = {
'system_notice.pager.goto': 'Μετάβαση στην ειδοποίηση {n}', 'system_notice.pager.goto': 'Μετάβαση στην ειδοποίηση {n}',
'system_notice.pager.position': 'Ειδοποίηση {current} από {total}', 'system_notice.pager.position': 'Ειδοποίηση {current} από {total}',
'system_notice.release_notes.eyebrow': 'Ενημερώθηκε', 'system_notice.release_notes.eyebrow': 'Ενημερώθηκε',
'system_notice.release_notes.headline': 'Τρία πράγματα που το TREK κάνει πλέον μόνο του.', 'system_notice.release_notes.headline': 'Τέσσερα πράγματα που το TREK κάνει πλέον μόνο του.',
'system_notice.release_notes.intro': 'system_notice.release_notes.intro': 'Δικό του API τοποθεσιών, οδικά ταξίδια σχεδιασμένα από την αρχή ως το τέλος, το ιστορικό τοποθεσίας σας στα χέρια σας, και τα έγγραφά σας σε συγχρονισμό.',
'Δικό του API τοποθεσιών, οδικά ταξίδια σχεδιασμένα από την αρχή ως το τέλος και το ιστορικό των μετακινήσεών σας ξανά στα χέρια σας.',
'system_notice.release_notes.features_label': 'Τα σημαντικότερα', 'system_notice.release_notes.features_label': 'Τα σημαντικότερα',
'system_notice.release_notes.features_aside': 'Και δεν είναι μόνο αυτά', 'system_notice.release_notes.features_aside': 'Και δεν είναι μόνο αυτά',
'system_notice.release_notes.feature_places_title': 'TREK Places API', 'system_notice.release_notes.feature_places_title': 'TREK Places API',
'system_notice.release_notes.feature_places_body': 'system_notice.release_notes.feature_places_body': 'Ο πρώτος ανοιχτού κώδικα σχεδιαστής ταξιδιών με δικό του API τοποθεσιών. 73,6 εκατ. τοποθεσίες, χωρίς κλειδί, χωρίς όριο.',
'Ο πρώτος σχεδιαστής ταξιδιών ανοιχτού κώδικα που φιλοξενεί το δικό του API τοποθεσιών. 73,6 εκατομμύρια τοποθεσίες, που ξαναχτίζονται κάθε μήνα. Χωρίς κλειδί, χωρίς όρια χρήσης.',
'system_notice.release_notes.feature_roadtrip_title': 'Πρόσθετο «Οδικό ταξίδι»', 'system_notice.release_notes.feature_roadtrip_title': 'Πρόσθετο «Οδικό ταξίδι»',
'system_notice.release_notes.feature_roadtrip_body': 'system_notice.release_notes.feature_roadtrip_body': 'Σχεδιάζει τη διαδρομή μόνο του: δρομολόγιο, απόσταση, ώρες και στάσεις. Ανενεργό μέχρι να το ενεργοποιήσει ένας διαχειριστής.',
'Η λειτουργία οδικού ταξιδιού σχεδιάζει την ίδια την οδήγηση: τη διαδρομή, την απόσταση, τις ώρες και τις στάσεις της. Είναι πρόσθετο και μένει ανενεργό μέχρι να το ενεργοποιήσει ένας διαχειριστής.',
'system_notice.release_notes.feature_dawarich_title': 'Ενσωμάτωση Dawarich', 'system_notice.release_notes.feature_dawarich_title': 'Ενσωμάτωση Dawarich',
'system_notice.release_notes.feature_dawarich_body': 'system_notice.release_notes.feature_dawarich_body': 'Η εναλλακτική του Google Timeline που φιλοξενείτε μόνοι σας, τώρα ορατή μέσα από το TREK. Το TREK διαβάζει, και μόνο διαβάζει.',
'Η εναλλακτική του Google Timeline που φιλοξενείτε μόνοι σας, τώρα ορατή μέσα από το TREK. Το TREK διαβάζει, και μόνο διαβάζει. Τίποτα δεν γράφεται ποτέ πίσω.',
'system_notice.release_notes.footnote': 'Και ακόμη μια μεγάλη λίστα με μικρότερες αλλαγές σε όλο το υπόλοιπο TREK.', 'system_notice.release_notes.footnote': 'Και ακόμη μια μεγάλη λίστα με μικρότερες αλλαγές σε όλο το υπόλοιπο TREK.',
'system_notice.release_notes.notes_label': 'Σημειώσεις έκδοσης', 'system_notice.release_notes.notes_label': 'Σημειώσεις έκδοσης',
'system_notice.release_notes.note_eyebrow': 'Μια σημείωση από τον δημιουργό', 'system_notice.release_notes.note_eyebrow': 'Μια σημείωση από τον δημιουργό',
@@ -90,5 +86,7 @@ const system_notice: TranslationStrings = {
'Αν έχει κερδίσει μια θέση στα ταξίδια σας, κεράστε με έναν καφέ και βοηθήστε να έρθει η επόμενη έκδοση.', 'Αν έχει κερδίσει μια θέση στα ταξίδια σας, κεράστε με έναν καφέ και βοηθήστε να έρθει η επόμενη έκδοση.',
'system_notice.release_notes.cta_bmc': 'Buy me a coffee', 'system_notice.release_notes.cta_bmc': 'Buy me a coffee',
'system_notice.release_notes.cta_kofi': 'Στηρίξτε στο Ko-fi', 'system_notice.release_notes.cta_kofi': 'Στηρίξτε στο Ko-fi',
'system_notice.release_notes.feature_docsync_title': 'Συγχρονισμός εγγράφων',
'system_notice.release_notes.feature_docsync_body': 'Paperless-ngx, Papra, Nextcloud, OpenCloud και Synology Drive. Τα έγγραφα ενός ταξιδιού ρέουν και προς τις δύο κατευθύνσεις με τον χώρο που ήδη χρησιμοποιείτε.',
}; };
export default system_notice; export default system_notice;
+7 -9
View File
@@ -55,20 +55,16 @@ const system_notice: TranslationStrings = {
'system_notice.v3014_whitespace_collision.body': 'system_notice.v3014_whitespace_collision.body':
'A 3.0.14-es frissítés egy vagy több felhasználónév- vagy e-mail-ütközést észlelt, amelyeket a tárolt értékek elején vagy végén lévő szóközök okoztak. Az érintett fiókok automatikusan át lettek nevezve. Ellenőrizze a szervernaplókat a **[migration] WHITESPACE COLLISION** kezdetű soroknál a felülvizsgálatot igénylő fiókok azonosításához.', 'A 3.0.14-es frissítés egy vagy több felhasználónév- vagy e-mail-ütközést észlelt, amelyeket a tárolt értékek elején vagy végén lévő szóközök okoztak. Az érintett fiókok automatikusan át lettek nevezve. Ellenőrizze a szervernaplókat a **[migration] WHITESPACE COLLISION** kezdetű soroknál a felülvizsgálatot igénylő fiókok azonosításához.',
'system_notice.release_notes.eyebrow': 'Frissítés telepítve', 'system_notice.release_notes.eyebrow': 'Frissítés telepítve',
'system_notice.release_notes.headline': 'Három dolog, amit a TREK mostantól magától csinál.', 'system_notice.release_notes.headline': 'Négy dolog, amit a TREK mostantól magától csinál.',
'system_notice.release_notes.intro': 'system_notice.release_notes.intro': 'Saját hely-API, teljesen megtervezett autós túrák, a helyelőzményeid a te kezedben, és a dokumentumaid szinkronban.',
'Saját hely-API, elejétől a végéig megtervezett autós utak és a helyelőzményeid újra a saját kezedben.',
'system_notice.release_notes.features_label': 'A fő újdonságok', 'system_notice.release_notes.features_label': 'A fő újdonságok',
'system_notice.release_notes.features_aside': 'És ez még nem minden', 'system_notice.release_notes.features_aside': 'És ez még nem minden',
'system_notice.release_notes.feature_places_title': 'TREK Places API', 'system_notice.release_notes.feature_places_title': 'TREK Places API',
'system_notice.release_notes.feature_places_body': 'system_notice.release_notes.feature_places_body': 'Az első nyílt forráskódú útitervező saját hely-API-val. 73,6 millió hely, kulcs és kvóta nélkül.',
'Az első nyílt forráskódú utazástervező, amely saját hely-API-t üzemeltet. 73,6 millió hely, havonta újraépítve. Nincs kulcs, nincs kvóta.',
'system_notice.release_notes.feature_roadtrip_title': 'Autós út bővítmény', 'system_notice.release_notes.feature_roadtrip_title': 'Autós út bővítmény',
'system_notice.release_notes.feature_roadtrip_body': 'system_notice.release_notes.feature_roadtrip_body': 'Maga tervezi meg az utat: útvonal, távolság, órák és megállók. Kikapcsolva, amíg egy admin be nem kapcsolja.',
'Az Autós út mód magát a vezetést is megtervezi: az útvonalat, a távolságot, a vezetési időt és a megállókat. Ez egy bővítmény, amely addig ki van kapcsolva, amíg egy rendszergazda be nem kapcsolja.',
'system_notice.release_notes.feature_dawarich_title': 'Dawarich-integráció', 'system_notice.release_notes.feature_dawarich_title': 'Dawarich-integráció',
'system_notice.release_notes.feature_dawarich_body': 'system_notice.release_notes.feature_dawarich_body': 'A Google Timeline self-hosted megfelelője, mostantól a TREK-ben is olvasható. A TREK olvas, és csak olvas.',
'A Google Timeline self-hosted megfelelője, mostantól a TREK-ben is olvasható. A TREK olvas, és csak olvas. Soha semmit nem ír vissza.',
'system_notice.release_notes.footnote': 'Plusz rengeteg kisebb változás a TREK többi részében.', 'system_notice.release_notes.footnote': 'Plusz rengeteg kisebb változás a TREK többi részében.',
'system_notice.release_notes.notes_label': 'Kiadási jegyzetek', 'system_notice.release_notes.notes_label': 'Kiadási jegyzetek',
'system_notice.release_notes.note_eyebrow': 'Egy szó a fejlesztőtől', 'system_notice.release_notes.note_eyebrow': 'Egy szó a fejlesztőtől',
@@ -88,5 +84,7 @@ const system_notice: TranslationStrings = {
'Ha kiérdemelt egy helyet az utazásaid között, hívj meg egy kávéra, és segíts, hogy jöhessen a következő kiadás.', 'Ha kiérdemelt egy helyet az utazásaid között, hívj meg egy kávéra, és segíts, hogy jöhessen a következő kiadás.',
'system_notice.release_notes.cta_bmc': 'Buy me a coffee', 'system_notice.release_notes.cta_bmc': 'Buy me a coffee',
'system_notice.release_notes.cta_kofi': 'Támogass a Ko-fi-n', 'system_notice.release_notes.cta_kofi': 'Támogass a Ko-fi-n',
'system_notice.release_notes.feature_docsync_title': 'Dokumentumszinkron',
'system_notice.release_notes.feature_docsync_body': 'Paperless-ngx, Papra, Nextcloud, OpenCloud és Synology Drive. Egy út dokumentumai mindkét irányban áramlanak az általad már használt tárolóval.',
}; };
export default system_notice; export default system_notice;
+7 -9
View File
@@ -55,20 +55,16 @@ const system_notice: TranslationStrings = {
'system_notice.v3014_whitespace_collision.body': 'system_notice.v3014_whitespace_collision.body':
'Pembaruan 3.0.14 mendeteksi satu atau lebih konflik nama pengguna atau email yang disebabkan oleh spasi di awal atau akhir nilai yang tersimpan. Akun yang terpengaruh telah diganti nama secara otomatis. Periksa log server untuk baris yang dimulai dengan **[migration] WHITESPACE COLLISION** guna mengidentifikasi akun mana yang perlu ditinjau.', 'Pembaruan 3.0.14 mendeteksi satu atau lebih konflik nama pengguna atau email yang disebabkan oleh spasi di awal atau akhir nilai yang tersimpan. Akun yang terpengaruh telah diganti nama secara otomatis. Periksa log server untuk baris yang dimulai dengan **[migration] WHITESPACE COLLISION** guna mengidentifikasi akun mana yang perlu ditinjau.',
'system_notice.release_notes.eyebrow': 'Pembaruan terpasang', 'system_notice.release_notes.eyebrow': 'Pembaruan terpasang',
'system_notice.release_notes.headline': 'Tiga hal yang kini dikerjakan TREK sendiri.', 'system_notice.release_notes.headline': 'Empat hal yang kini dilakukan TREK sendiri.',
'system_notice.release_notes.intro': 'system_notice.release_notes.intro': 'API tempat sendiri, perjalanan darat yang direncanakan dari awal sampai akhir, riwayat lokasi di tangan Anda, dan dokumen Anda tersinkron.',
'API tempat miliknya sendiri, perjalanan darat yang direncanakan dari awal sampai akhir, dan riwayat lokasi yang kembali ke tangan Anda.',
'system_notice.release_notes.features_label': 'Sorotan utama', 'system_notice.release_notes.features_label': 'Sorotan utama',
'system_notice.release_notes.features_aside': 'Masih banyak lagi', 'system_notice.release_notes.features_aside': 'Masih banyak lagi',
'system_notice.release_notes.feature_places_title': 'TREK Places API', 'system_notice.release_notes.feature_places_title': 'TREK Places API',
'system_notice.release_notes.feature_places_body': 'system_notice.release_notes.feature_places_body': 'Perencana perjalanan open source pertama dengan API tempat sendiri. 73,6 juta tempat, tanpa kunci, tanpa kuota.',
'Perencana perjalanan open source pertama yang menjalankan API tempatnya sendiri. 73,6 juta tempat, dibangun ulang setiap bulan. Tanpa kunci API, tanpa kuota.',
'system_notice.release_notes.feature_roadtrip_title': 'Addon Perjalanan Darat', 'system_notice.release_notes.feature_roadtrip_title': 'Addon Perjalanan Darat',
'system_notice.release_notes.feature_roadtrip_body': 'system_notice.release_notes.feature_roadtrip_body': 'Merencanakan perjalanan sendiri: rute, jarak, jam, dan perhentian. Nonaktif sampai admin mengaktifkannya.',
'Mode perjalanan darat ikut merencanakan perjalanan berkendaranya: rute, jarak, lama berkendara, dan perhentiannya. Ini sebuah addon, nonaktif sampai admin mengaktifkannya.',
'system_notice.release_notes.feature_dawarich_title': 'Integrasi Dawarich', 'system_notice.release_notes.feature_dawarich_title': 'Integrasi Dawarich',
'system_notice.release_notes.feature_dawarich_body': 'system_notice.release_notes.feature_dawarich_body': 'Alternatif self-hosted untuk Google Timeline, kini bisa dibaca langsung di TREK. TREK hanya membaca, tidak lebih.',
'Alternatif self-hosted untuk Google Timeline, kini bisa dibaca langsung di TREK. TREK hanya membaca, tidak lebih. Tidak ada satu pun yang ditulis balik.',
'system_notice.release_notes.footnote': 'Ditambah deretan panjang perubahan kecil di bagian TREK lainnya.', 'system_notice.release_notes.footnote': 'Ditambah deretan panjang perubahan kecil di bagian TREK lainnya.',
'system_notice.release_notes.notes_label': 'Catatan rilis', 'system_notice.release_notes.notes_label': 'Catatan rilis',
'system_notice.release_notes.note_eyebrow': 'Catatan dari maintainer', 'system_notice.release_notes.note_eyebrow': 'Catatan dari maintainer',
@@ -88,5 +84,7 @@ const system_notice: TranslationStrings = {
'Jika TREK sudah mendapat tempat dalam perjalananmu, traktir saya secangkir kopi dan bantu rilis berikutnya terus hadir.', 'Jika TREK sudah mendapat tempat dalam perjalananmu, traktir saya secangkir kopi dan bantu rilis berikutnya terus hadir.',
'system_notice.release_notes.cta_bmc': 'Buy me a coffee', 'system_notice.release_notes.cta_bmc': 'Buy me a coffee',
'system_notice.release_notes.cta_kofi': 'Dukung di Ko-fi', 'system_notice.release_notes.cta_kofi': 'Dukung di Ko-fi',
'system_notice.release_notes.feature_docsync_title': 'Sinkronisasi Dokumen',
'system_notice.release_notes.feature_docsync_body': 'Paperless-ngx, Papra, Nextcloud, OpenCloud, dan Synology Drive. Dokumen perjalanan mengalir dua arah dengan penyimpanan yang sudah Anda jalankan.',
}; };
export default system_notice; export default system_notice;
+7 -9
View File
@@ -55,20 +55,15 @@ const system_notice: TranslationStrings = {
'system_notice.v3014_whitespace_collision.body': 'system_notice.v3014_whitespace_collision.body':
"L'aggiornamento 3.0.14 ha rilevato uno o più conflitti di nome utente o e-mail causati da spazi iniziali o finali nei valori memorizzati. Gli account interessati sono stati rinominati automaticamente. Controlla i log del server per le righe che iniziano con **[migration] WHITESPACE COLLISION** per identificare quali account richiedono revisione.", "L'aggiornamento 3.0.14 ha rilevato uno o più conflitti di nome utente o e-mail causati da spazi iniziali o finali nei valori memorizzati. Gli account interessati sono stati rinominati automaticamente. Controlla i log del server per le righe che iniziano con **[migration] WHITESPACE COLLISION** per identificare quali account richiedono revisione.",
'system_notice.release_notes.eyebrow': 'Aggiornato', 'system_notice.release_notes.eyebrow': 'Aggiornato',
'system_notice.release_notes.headline': 'Tre cose che TREK ora fa da solo.', 'system_notice.release_notes.headline': 'Quattro cose che TREK ora fa da solo.',
'system_notice.release_notes.intro':
"Un'API dei luoghi tutta sua, viaggi su strada pianificati dall'inizio alla fine e la cronologia delle tue posizioni di nuovo nelle tue mani.",
'system_notice.release_notes.features_label': 'I protagonisti', 'system_notice.release_notes.features_label': 'I protagonisti',
'system_notice.release_notes.features_aside': 'E non è tutto', 'system_notice.release_notes.features_aside': 'E non è tutto',
'system_notice.release_notes.feature_places_title': 'TREK Places API', 'system_notice.release_notes.feature_places_title': 'TREK Places API',
'system_notice.release_notes.feature_places_body': 'system_notice.release_notes.feature_places_body': 'Il primo pianificatore di viaggi open source con una propria API dei luoghi. 73,6 milioni di luoghi, senza chiave, senza quota.',
'Il primo pianificatore di viaggi open source che ospita una propria API dei luoghi. 73,6 milioni di luoghi, ricostruiti ogni mese. Nessuna chiave, nessun limite.',
'system_notice.release_notes.feature_roadtrip_title': 'Addon Viaggio su strada', 'system_notice.release_notes.feature_roadtrip_title': 'Addon Viaggio su strada',
'system_notice.release_notes.feature_roadtrip_body': 'system_notice.release_notes.feature_roadtrip_body': 'Pianifica il viaggio da solo: percorso, distanza, ore e tappe. Spento finché un admin non lo attiva.',
'La modalità viaggio su strada pianifica il tragitto vero e proprio: il percorso, la distanza, le ore di guida e le soste. È un componente aggiuntivo, disattivato finché un admin non lo attiva.',
'system_notice.release_notes.feature_dawarich_title': 'Integrazione Dawarich', 'system_notice.release_notes.feature_dawarich_title': 'Integrazione Dawarich',
'system_notice.release_notes.feature_dawarich_body': 'system_notice.release_notes.feature_dawarich_body': 'L’alternativa self-hosted a Google Timeline, ora consultabile dentro TREK. TREK legge, e si limita a leggere.',
"L'alternativa self-hosted a Google Timeline, ora consultabile dentro TREK. TREK legge, e si limita a leggere. Non scrive mai nulla indietro.",
'system_notice.release_notes.footnote': 'E in più una lunga lista di piccole modifiche in tutto il resto di TREK.', 'system_notice.release_notes.footnote': 'E in più una lunga lista di piccole modifiche in tutto il resto di TREK.',
'system_notice.release_notes.notes_label': 'Note di rilascio', 'system_notice.release_notes.notes_label': 'Note di rilascio',
'system_notice.release_notes.note_eyebrow': 'Una nota dal maintainer', 'system_notice.release_notes.note_eyebrow': 'Una nota dal maintainer',
@@ -88,5 +83,8 @@ const system_notice: TranslationStrings = {
'Se TREK si è guadagnato un posto nei tuoi viaggi, offrimi un caffè e aiutami a far arrivare la prossima versione.', 'Se TREK si è guadagnato un posto nei tuoi viaggi, offrimi un caffè e aiutami a far arrivare la prossima versione.',
'system_notice.release_notes.cta_bmc': 'Buy me a coffee', 'system_notice.release_notes.cta_bmc': 'Buy me a coffee',
'system_notice.release_notes.cta_kofi': 'Supporta su Ko-fi', 'system_notice.release_notes.cta_kofi': 'Supporta su Ko-fi',
'system_notice.release_notes.intro': 'Una propria API dei luoghi, viaggi on the road pianificati dall’inizio alla fine, la tua cronologia delle posizioni nelle tue mani, e i tuoi documenti sincronizzati.',
'system_notice.release_notes.feature_docsync_title': 'Sincronizzazione documenti',
'system_notice.release_notes.feature_docsync_body': 'Paperless-ngx, Papra, Nextcloud, OpenCloud e Synology Drive. I documenti di un viaggio viaggiano in entrambe le direzioni con l’archivio che già usi.',
}; };
export default system_notice; export default system_notice;
+7 -9
View File
@@ -53,20 +53,16 @@ const system_notice: TranslationStrings = {
'system_notice.pager.goto': '通知{n}へ', 'system_notice.pager.goto': '通知{n}へ',
'system_notice.pager.position': '{total}件中{current}件目', 'system_notice.pager.position': '{total}件中{current}件目',
'system_notice.release_notes.eyebrow': 'アップデート完了', 'system_notice.release_notes.eyebrow': 'アップデート完了',
'system_notice.release_notes.headline': 'TREKが自前でできるようになった、3つのこと。', 'system_notice.release_notes.headline': 'TREKが自分でできるようになった4つのこと。',
'system_notice.release_notes.intro': 'system_notice.release_notes.intro': '独自の場所API、最初から最後まで計画できるロードトリップ、あなたの手に戻る位置情報の履歴、そして同期される書類。',
'自前の場所API、出発から到着まで計画できるロードトリップ、そしてあなたの手元に戻ってくる位置情報の履歴。',
'system_notice.release_notes.features_label': '今回の目玉', 'system_notice.release_notes.features_label': '今回の目玉',
'system_notice.release_notes.features_aside': 'ほんの一部です', 'system_notice.release_notes.features_aside': 'ほんの一部です',
'system_notice.release_notes.feature_places_title': 'TREK Places API', 'system_notice.release_notes.feature_places_title': 'TREK Places API',
'system_notice.release_notes.feature_places_body': 'system_notice.release_notes.feature_places_body': '独自の場所APIを持つ初のオープンソース旅行プランナー。7,360万件の場所、キー不要、制限なし。',
'場所APIを自前で運用する、初めてのオープンソース旅行プランナーです。7,360万件の場所を毎月作り直しています。APIキーも利用上限もありません。',
'system_notice.release_notes.feature_roadtrip_title': 'ロードトリップアドオン', 'system_notice.release_notes.feature_roadtrip_title': 'ロードトリップアドオン',
'system_notice.release_notes.feature_roadtrip_body': 'system_notice.release_notes.feature_roadtrip_body': '走行を自動で計画:ルート、距離、時間、停車地。管理者が有効にするまではオフ。',
'ロードトリップモードは、ドライブそのものを計画します。ルート、距離、運転時間、立ち寄り先まで。アドオンなので、管理者が有効にするまではオフのままです。',
'system_notice.release_notes.feature_dawarich_title': 'Dawarich連携', 'system_notice.release_notes.feature_dawarich_title': 'Dawarich連携',
'system_notice.release_notes.feature_dawarich_body': 'system_notice.release_notes.feature_dawarich_body': 'Google Timelineのセルフホスト版とも言えるDawarichを、TREKの中で読めるようになりました。TREKは読み取るだけで、それ以上のことはしません。',
'Google Timelineのセルフホスト版とも言えるDawarichを、TREKの中で読めるようになりました。TREKは読み取るだけで、それ以上のことはしません。書き戻すことは一切ありません。',
'system_notice.release_notes.footnote': 'ほかにも、TREKのあちこちに細かな変更がたくさん入っています。', 'system_notice.release_notes.footnote': 'ほかにも、TREKのあちこちに細かな変更がたくさん入っています。',
'system_notice.release_notes.notes_label': 'リリースノート', 'system_notice.release_notes.notes_label': 'リリースノート',
'system_notice.release_notes.note_eyebrow': '開発者より', 'system_notice.release_notes.note_eyebrow': '開発者より',
@@ -86,5 +82,7 @@ const system_notice: TranslationStrings = {
'TREKがあなたの旅に欠かせないものになっていたら、コーヒーを一杯おごってください。次のリリースを届ける力になります。', 'TREKがあなたの旅に欠かせないものになっていたら、コーヒーを一杯おごってください。次のリリースを届ける力になります。',
'system_notice.release_notes.cta_bmc': 'Buy me a coffee', 'system_notice.release_notes.cta_bmc': 'Buy me a coffee',
'system_notice.release_notes.cta_kofi': 'Ko-fiで応援する', 'system_notice.release_notes.cta_kofi': 'Ko-fiで応援する',
'system_notice.release_notes.feature_docsync_title': '書類の同期',
'system_notice.release_notes.feature_docsync_body': 'Paperless-ngx、Papra、Nextcloud、OpenCloud、Synology Drive。旅程の書類が、すでに運用しているストレージと双方向で同期されます。',
}; };
export default system_notice; export default system_notice;
+7 -9
View File
@@ -55,20 +55,16 @@ const system_notice: TranslationStrings = {
'system_notice.pager.goto': '{n}번 공지로 이동', 'system_notice.pager.goto': '{n}번 공지로 이동',
'system_notice.pager.position': '공지 {current}/{total}', 'system_notice.pager.position': '공지 {current}/{total}',
'system_notice.release_notes.eyebrow': '업데이트 완료', 'system_notice.release_notes.eyebrow': '업데이트 완료',
'system_notice.release_notes.headline': '이제 TREK이 직접 해내는 세 가지.', 'system_notice.release_notes.headline': 'TREK가 이제 스스로 해내는 네 가지.',
'system_notice.release_notes.intro': 'system_notice.release_notes.intro': '자체 장소 API, 처음부터 끝까지 계획되는 로드트립, 내 손에 있는 위치 기록, 그리고 동기화되는 문서.',
'자체 장소 API, 처음부터 끝까지 계획하는 로드트립, 그리고 다시 여러분의 손으로 돌아온 위치 기록.',
'system_notice.release_notes.features_label': '이번 릴리스의 주역', 'system_notice.release_notes.features_label': '이번 릴리스의 주역',
'system_notice.release_notes.features_aside': '이게 전부는 아닙니다', 'system_notice.release_notes.features_aside': '이게 전부는 아닙니다',
'system_notice.release_notes.feature_places_title': 'TREK Places API', 'system_notice.release_notes.feature_places_title': 'TREK Places API',
'system_notice.release_notes.feature_places_body': 'system_notice.release_notes.feature_places_body': '자체 장소 API를 갖춘 최초의 오픈소스 여행 플래너. 7,360만 개 장소, 키 없음, 할당량 없음.',
'자체 장소 API를 직접 운영하는 최초의 오픈 소스 여행 플래너입니다. 7,360만 개의 장소를 매달 새로 구축합니다. 키도, 사용량 제한도 없습니다.',
'system_notice.release_notes.feature_roadtrip_title': '로드트립 애드온', 'system_notice.release_notes.feature_roadtrip_title': '로드트립 애드온',
'system_notice.release_notes.feature_roadtrip_body': 'system_notice.release_notes.feature_roadtrip_body': '주행을 스스로 계획합니다: 경로, 거리, 시간, 정차지. 관리자가 켤 때까지 꺼져 있습니다.',
'로드트립 모드는 운전 자체를 계획합니다. 경로, 거리, 운전 시간, 경유지까지요. 애드온이라서 관리자가 켜기 전까지는 꺼져 있습니다.',
'system_notice.release_notes.feature_dawarich_title': 'Dawarich 연동', 'system_notice.release_notes.feature_dawarich_title': 'Dawarich 연동',
'system_notice.release_notes.feature_dawarich_body': 'system_notice.release_notes.feature_dawarich_body': 'Google Timeline의 자체 호스팅 대안인 Dawarich를 이제 TREK 안에서 읽을 수 있습니다. TREK은 읽기만, 오직 읽기만 합니다.',
'Google Timeline의 자체 호스팅 대안인 Dawarich를 이제 TREK 안에서 읽을 수 있습니다. TREK은 읽기만, 오직 읽기만 합니다. 다시 기록되는 것은 아무것도 없습니다.',
'system_notice.release_notes.footnote': '그 밖에도 TREK 곳곳에 작은 변경이 많이 담겨 있습니다.', 'system_notice.release_notes.footnote': '그 밖에도 TREK 곳곳에 작은 변경이 많이 담겨 있습니다.',
'system_notice.release_notes.notes_label': '릴리스 노트', 'system_notice.release_notes.notes_label': '릴리스 노트',
'system_notice.release_notes.note_eyebrow': '개발자의 한마디', 'system_notice.release_notes.note_eyebrow': '개발자의 한마디',
@@ -88,5 +84,7 @@ const system_notice: TranslationStrings = {
'TREK이 여러분의 여행에 자리를 잡았다면, 커피 한 잔으로 다음 릴리스가 계속 나올 수 있게 도와주세요.', 'TREK이 여러분의 여행에 자리를 잡았다면, 커피 한 잔으로 다음 릴리스가 계속 나올 수 있게 도와주세요.',
'system_notice.release_notes.cta_bmc': 'Buy me a coffee', 'system_notice.release_notes.cta_bmc': 'Buy me a coffee',
'system_notice.release_notes.cta_kofi': 'Ko-fi에서 후원하기', 'system_notice.release_notes.cta_kofi': 'Ko-fi에서 후원하기',
'system_notice.release_notes.feature_docsync_title': '문서 동기화',
'system_notice.release_notes.feature_docsync_body': 'Paperless-ngx, Papra, Nextcloud, OpenCloud, Synology Drive. 여행의 문서가 이미 운영 중인 저장소와 양방향으로 흐릅니다.',
}; };
export default system_notice; export default system_notice;
+7 -9
View File
@@ -56,20 +56,16 @@ const system_notice: TranslationStrings = {
'De 3.0.14-upgrade heeft één of meer conflicten in gebruikersnaam of e-mailadres gedetecteerd, veroorzaakt door spaties aan het begin of einde van opgeslagen waarden. Getroffen accounts zijn automatisch hernoemd. Controleer de serverlogboeken op regels die beginnen met **[migration] WHITESPACE COLLISION** om te achterhalen welke accounts moeten worden beoordeeld.', 'De 3.0.14-upgrade heeft één of meer conflicten in gebruikersnaam of e-mailadres gedetecteerd, veroorzaakt door spaties aan het begin of einde van opgeslagen waarden. Getroffen accounts zijn automatisch hernoemd. Controleer de serverlogboeken op regels die beginnen met **[migration] WHITESPACE COLLISION** om te achterhalen welke accounts moeten worden beoordeeld.',
// The release modal. One stable set of keys: each big release swaps the copy in place. // The release modal. One stable set of keys: each big release swaps the copy in place.
'system_notice.release_notes.eyebrow': 'Update geïnstalleerd', 'system_notice.release_notes.eyebrow': 'Update geïnstalleerd',
'system_notice.release_notes.headline': 'Drie dingen die TREK nu zelf doet.', 'system_notice.release_notes.headline': 'Vier dingen die TREK nu zelf doet.',
'system_notice.release_notes.intro': 'system_notice.release_notes.intro': 'Een eigen plaatsen-API, roadtrips van begin tot eind gepland, je locatiegeschiedenis in eigen hand, en je documenten gesynchroniseerd.',
'Een eigen API voor plaatsen, roadtrips van begin tot eind gepland en je locatiegeschiedenis weer in eigen hand.',
'system_notice.release_notes.features_label': 'De hoogtepunten', 'system_notice.release_notes.features_label': 'De hoogtepunten',
'system_notice.release_notes.features_aside': 'Lang niet alles', 'system_notice.release_notes.features_aside': 'Lang niet alles',
'system_notice.release_notes.feature_places_title': 'TREK Places API', 'system_notice.release_notes.feature_places_title': 'TREK Places API',
'system_notice.release_notes.feature_places_body': 'system_notice.release_notes.feature_places_body': 'De eerste open source reisplanner met een eigen plaatsen-API. 73,6 miljoen plaatsen, geen sleutel, geen quotum.',
'De eerste open source-reisplanner die zijn eigen API voor plaatsen host. 73,6 miljoen plaatsen, elke maand opnieuw opgebouwd. Geen sleutel, geen quotum.',
'system_notice.release_notes.feature_roadtrip_title': 'Roadtrip-addon', 'system_notice.release_notes.feature_roadtrip_title': 'Roadtrip-addon',
'system_notice.release_notes.feature_roadtrip_body': 'system_notice.release_notes.feature_roadtrip_body': 'Plant de rit zelf: route, afstand, uren en stops. Uit totdat een admin het inschakelt.',
'De Roadtrip-modus plant de rit zelf: de route, de afstand, de rijtijd en de stops. Een addon die uit blijft tot een admin hem aanzet.',
'system_notice.release_notes.feature_dawarich_title': 'Dawarich-integratie', 'system_notice.release_notes.feature_dawarich_title': 'Dawarich-integratie',
'system_notice.release_notes.feature_dawarich_body': 'system_notice.release_notes.feature_dawarich_body': 'Het zelfgehoste antwoord op Google Timeline, nu rechtstreeks leesbaar in TREK. TREK leest, en alleen dat.',
'Het zelfgehoste antwoord op Google Timeline, nu rechtstreeks leesbaar in TREK. TREK leest, en alleen dat. Er wordt nooit iets teruggeschreven.',
'system_notice.release_notes.footnote': 'En daarnaast een lange lijst kleinere wijzigingen in de rest van TREK.', 'system_notice.release_notes.footnote': 'En daarnaast een lange lijst kleinere wijzigingen in de rest van TREK.',
'system_notice.release_notes.notes_label': 'Release notes', 'system_notice.release_notes.notes_label': 'Release notes',
'system_notice.release_notes.note_eyebrow': 'Een woord van de maintainer', 'system_notice.release_notes.note_eyebrow': 'Een woord van de maintainer',
@@ -89,5 +85,7 @@ const system_notice: TranslationStrings = {
'Als TREK een plek in je reizen heeft verdiend, trakteer me dan op een kopje koffie en help zo de volgende release op weg.', 'Als TREK een plek in je reizen heeft verdiend, trakteer me dan op een kopje koffie en help zo de volgende release op weg.',
'system_notice.release_notes.cta_bmc': 'Buy me a coffee', 'system_notice.release_notes.cta_bmc': 'Buy me a coffee',
'system_notice.release_notes.cta_kofi': 'Steun op Ko-fi', 'system_notice.release_notes.cta_kofi': 'Steun op Ko-fi',
'system_notice.release_notes.feature_docsync_title': 'Documentsynchronisatie',
'system_notice.release_notes.feature_docsync_body': 'Paperless-ngx, Papra, Nextcloud, OpenCloud en Synology Drive. De documenten van een reis stromen in beide richtingen met de opslag die je al draait.',
}; };
export default system_notice; export default system_notice;
+7 -9
View File
@@ -56,20 +56,16 @@ const system_notice: TranslationStrings = {
'Aktualizacja 3.0.14 wykryła jeden lub więcej konfliktów nazwy użytkownika lub adresu e-mail spowodowanych spacjami na początku lub końcu przechowywanych wartości. Dotknięte konta zostały automatycznie przemianowane. Sprawdź logi serwera pod kątem wierszy zaczynających się od **[migration] WHITESPACE COLLISION**, aby zidentyfikować konta wymagające przeglądu.', 'Aktualizacja 3.0.14 wykryła jeden lub więcej konfliktów nazwy użytkownika lub adresu e-mail spowodowanych spacjami na początku lub końcu przechowywanych wartości. Dotknięte konta zostały automatycznie przemianowane. Sprawdź logi serwera pod kątem wierszy zaczynających się od **[migration] WHITESPACE COLLISION**, aby zidentyfikować konta wymagające przeglądu.',
// The release modal. One stable set of keys: each big release swaps the copy in place. // The release modal. One stable set of keys: each big release swaps the copy in place.
'system_notice.release_notes.eyebrow': 'Aktualizacja zainstalowana', 'system_notice.release_notes.eyebrow': 'Aktualizacja zainstalowana',
'system_notice.release_notes.headline': 'Trzy rzeczy, które TREK robi teraz sam.', 'system_notice.release_notes.headline': 'Cztery rzeczy, które TREK robi teraz sam.',
'system_notice.release_notes.intro': 'system_notice.release_notes.intro': 'Własne API miejsc, podróże samochodem zaplanowane od A do Z, historia lokalizacji w Twoich rękach, i dokumenty w synchronizacji.',
'Własne API miejsc, podróże samochodowe zaplanowane od początku do końca i historia lokalizacji z powrotem w Twoich rękach.',
'system_notice.release_notes.features_label': 'Najważniejsze nowości', 'system_notice.release_notes.features_label': 'Najważniejsze nowości',
'system_notice.release_notes.features_aside': 'To nie wszystko', 'system_notice.release_notes.features_aside': 'To nie wszystko',
'system_notice.release_notes.feature_places_title': 'TREK Places API', 'system_notice.release_notes.feature_places_title': 'TREK Places API',
'system_notice.release_notes.feature_places_body': 'system_notice.release_notes.feature_places_body': 'Pierwszy open source planer podróży z własnym API miejsc. 73,6 mln miejsc, bez klucza, bez limitu.',
'Pierwszy planer podróży open source, który hostuje własne API miejsc. 73,6 miliona miejsc, przebudowywanych co miesiąc. Bez klucza, bez limitów.',
'system_notice.release_notes.feature_roadtrip_title': 'Dodatek Podróż samochodowa', 'system_notice.release_notes.feature_roadtrip_title': 'Dodatek Podróż samochodowa',
'system_notice.release_notes.feature_roadtrip_body': 'system_notice.release_notes.feature_roadtrip_body': 'Sam planuje jazdę: trasę, dystans, godziny i przystanki. Wyłączone, dopóki admin tego nie włączy.',
'Tryb podróży samochodowej planuje samą jazdę: trasę, jej długość, czas jazdy i przystanki. To dodatek, wyłączony, dopóki administrator go nie włączy.',
'system_notice.release_notes.feature_dawarich_title': 'Integracja z Dawarich', 'system_notice.release_notes.feature_dawarich_title': 'Integracja z Dawarich',
'system_notice.release_notes.feature_dawarich_body': 'system_notice.release_notes.feature_dawarich_body': 'Samodzielnie hostowana odpowiedź na Google Timeline, teraz dostępna w TREK. TREK tylko odczytuje, nic więcej.',
'Samodzielnie hostowana odpowiedź na Google Timeline, teraz dostępna w TREK. TREK tylko odczytuje, nic więcej. Nigdy niczego nie zapisuje z powrotem.',
'system_notice.release_notes.footnote': 'Do tego długa lista mniejszych zmian w całej reszcie TREK.', 'system_notice.release_notes.footnote': 'Do tego długa lista mniejszych zmian w całej reszcie TREK.',
'system_notice.release_notes.notes_label': 'Notatki do wydania', 'system_notice.release_notes.notes_label': 'Notatki do wydania',
'system_notice.release_notes.note_eyebrow': 'Słowo od autora', 'system_notice.release_notes.note_eyebrow': 'Słowo od autora',
@@ -89,5 +85,7 @@ const system_notice: TranslationStrings = {
'Jeśli TREK zasłużył na miejsce w Twoich podróżach, postaw mi kawę i pomóż, żeby powstało kolejne wydanie.', 'Jeśli TREK zasłużył na miejsce w Twoich podróżach, postaw mi kawę i pomóż, żeby powstało kolejne wydanie.',
'system_notice.release_notes.cta_bmc': 'Buy me a coffee', 'system_notice.release_notes.cta_bmc': 'Buy me a coffee',
'system_notice.release_notes.cta_kofi': 'Wesprzyj na Ko-fi', 'system_notice.release_notes.cta_kofi': 'Wesprzyj na Ko-fi',
'system_notice.release_notes.feature_docsync_title': 'Synchronizacja dokumentów',
'system_notice.release_notes.feature_docsync_body': 'Paperless-ngx, Papra, Nextcloud, OpenCloud i Synology Drive. Dokumenty podróży przepływają w obie strony z magazynem, który już prowadzisz.',
}; };
export default system_notice; export default system_notice;
+7 -9
View File
@@ -56,20 +56,16 @@ const system_notice: TranslationStrings = {
'Обновление 3.0.14 обнаружило один или несколько конфликтов имён пользователей или адресов электронной почты, вызванных ведущими или завершающими пробелами в сохранённых значениях. Затронутые учётные записи были автоматически переименованы. Проверьте логи сервера на строки, начинающиеся с **[migration] WHITESPACE COLLISION**, чтобы определить учётные записи, требующие проверки.', 'Обновление 3.0.14 обнаружило один или несколько конфликтов имён пользователей или адресов электронной почты, вызванных ведущими или завершающими пробелами в сохранённых значениях. Затронутые учётные записи были автоматически переименованы. Проверьте логи сервера на строки, начинающиеся с **[migration] WHITESPACE COLLISION**, чтобы определить учётные записи, требующие проверки.',
// The release modal. One stable set of keys: each big release swaps the copy in place. // The release modal. One stable set of keys: each big release swaps the copy in place.
'system_notice.release_notes.eyebrow': 'Обновление установлено', 'system_notice.release_notes.eyebrow': 'Обновление установлено',
'system_notice.release_notes.headline': 'Три вещи, которые TREK теперь делает сам.', 'system_notice.release_notes.headline': 'Четыре вещи, которые TREK теперь делает сам.',
'system_notice.release_notes.intro': 'system_notice.release_notes.intro': 'Собственный API мест, автопутешествия от начала до конца, ваша история местоположений в ваших руках, и ваши документы в синхронизации.',
'Собственный API мест, автопутешествия, продуманные от старта до финиша, и история перемещений, которая снова принадлежит вам.',
'system_notice.release_notes.features_label': 'Главные новинки', 'system_notice.release_notes.features_label': 'Главные новинки',
'system_notice.release_notes.features_aside': 'И это далеко не всё', 'system_notice.release_notes.features_aside': 'И это далеко не всё',
'system_notice.release_notes.feature_places_title': 'TREK Places API', 'system_notice.release_notes.feature_places_title': 'TREK Places API',
'system_notice.release_notes.feature_places_body': 'system_notice.release_notes.feature_places_body': 'Первый планировщик путешествий с открытым кодом и собственным API мест. 73,6 миллиона мест, без ключа и квот.',
'Первый планировщик путешествий с открытым исходным кодом, у которого есть собственный API мест. 73,6 миллиона мест, база заново собирается каждый месяц. Никаких ключей, никаких квот.',
'system_notice.release_notes.feature_roadtrip_title': 'Дополнение «Автопутешествие»', 'system_notice.release_notes.feature_roadtrip_title': 'Дополнение «Автопутешествие»',
'system_notice.release_notes.feature_roadtrip_body': 'system_notice.release_notes.feature_roadtrip_body': 'Планирует поездку сам: маршрут, расстояние, часы и остановки. Выключено, пока админ не включит.',
'Режим автопутешествия планирует саму дорогу: маршрут, расстояние, часы за рулём и остановки. Это дополнение, и оно выключено, пока администратор его не включит.',
'system_notice.release_notes.feature_dawarich_title': 'Интеграция с Dawarich', 'system_notice.release_notes.feature_dawarich_title': 'Интеграция с Dawarich',
'system_notice.release_notes.feature_dawarich_body': 'system_notice.release_notes.feature_dawarich_body': 'Альтернатива Google Timeline на вашем собственном сервере, и теперь её данные видны прямо в TREK. TREK читает, и только читает.',
'Альтернатива Google Timeline на вашем собственном сервере, и теперь её данные видны прямо в TREK. TREK читает, и только читает. Обратно не записывается ничего и никогда.',
'system_notice.release_notes.footnote': 'Плюс длинный список небольших изменений во всём остальном TREK.', 'system_notice.release_notes.footnote': 'Плюс длинный список небольших изменений во всём остальном TREK.',
'system_notice.release_notes.notes_label': 'Заметки к релизу', 'system_notice.release_notes.notes_label': 'Заметки к релизу',
'system_notice.release_notes.note_eyebrow': 'Слово от мейнтейнера', 'system_notice.release_notes.note_eyebrow': 'Слово от мейнтейнера',
@@ -89,5 +85,7 @@ const system_notice: TranslationStrings = {
'Если TREK заслужил место в ваших поездках, угостите меня кофе и помогите выпустить следующий релиз.', 'Если TREK заслужил место в ваших поездках, угостите меня кофе и помогите выпустить следующий релиз.',
'system_notice.release_notes.cta_bmc': 'Buy me a coffee', 'system_notice.release_notes.cta_bmc': 'Buy me a coffee',
'system_notice.release_notes.cta_kofi': 'Поддержать на Ko-fi', 'system_notice.release_notes.cta_kofi': 'Поддержать на Ko-fi',
'system_notice.release_notes.feature_docsync_title': 'Синхронизация документов',
'system_notice.release_notes.feature_docsync_body': 'Paperless-ngx, Papra, Nextcloud, OpenCloud и Synology Drive. Документы поездки идут в обе стороны с хранилищем, которое у вас уже есть.',
}; };
export default system_notice; export default system_notice;
+7 -9
View File
@@ -56,20 +56,16 @@ const system_notice: TranslationStrings = {
'system_notice.pager.position': 'Meddlenade {current} av {total}', 'system_notice.pager.position': 'Meddlenade {current} av {total}',
// The release modal. One stable set of keys: each big release swaps the copy in place. // The release modal. One stable set of keys: each big release swaps the copy in place.
'system_notice.release_notes.eyebrow': 'Uppdatering klar', 'system_notice.release_notes.eyebrow': 'Uppdatering klar',
'system_notice.release_notes.headline': 'Tre saker som TREK nu klarar på egen hand.', 'system_notice.release_notes.headline': 'Fyra saker TREK nu gör på egen hand.',
'system_notice.release_notes.intro': 'system_notice.release_notes.intro': 'Ett eget plats-API, bilresor planerade från början till slut, din platshistorik i dina händer, och dina dokument i synk.',
'Ett eget API för platser, bilresor planerade från start till mål och din platshistorik tillbaka i dina händer.',
'system_notice.release_notes.features_label': 'Höjdpunkterna', 'system_notice.release_notes.features_label': 'Höjdpunkterna',
'system_notice.release_notes.features_aside': 'Långt ifrån allt', 'system_notice.release_notes.features_aside': 'Långt ifrån allt',
'system_notice.release_notes.feature_places_title': 'TREK Places API', 'system_notice.release_notes.feature_places_title': 'TREK Places API',
'system_notice.release_notes.feature_places_body': 'system_notice.release_notes.feature_places_body': 'Den första reseplaneraren med öppen källkod och eget plats-API. 73,6 miljoner platser, ingen nyckel, ingen kvot.',
'Den första resplaneraren med öppen källkod som driver sitt eget API för platser. 73,6 miljoner platser som byggs om varje månad. Ingen nyckel, ingen kvot.',
'system_notice.release_notes.feature_roadtrip_title': 'Tillägget Bilresa', 'system_notice.release_notes.feature_roadtrip_title': 'Tillägget Bilresa',
'system_notice.release_notes.feature_roadtrip_body': 'system_notice.release_notes.feature_roadtrip_body': 'Planerar körningen själv: rutt, sträcka, timmar och stopp. Av tills en admin slår på det.',
'Bilreseläget planerar själva körningen: rutten, sträckan, körtiden och stoppen. Ett tillägg som är avstängt tills en administratör slår på det.',
'system_notice.release_notes.feature_dawarich_title': 'Dawarich-integration', 'system_notice.release_notes.feature_dawarich_title': 'Dawarich-integration',
'system_notice.release_notes.feature_dawarich_body': 'system_notice.release_notes.feature_dawarich_body': 'Det självhostade svaret på Google Timeline, nu läsbart direkt i TREK. TREK läser, och bara läser.',
'Det självhostade svaret på Google Timeline, nu läsbart direkt i TREK. TREK läser, och bara läser. Ingenting skrivs någonsin tillbaka.',
'system_notice.release_notes.footnote': 'Dessutom en lång rad mindre ändringar i resten av TREK.', 'system_notice.release_notes.footnote': 'Dessutom en lång rad mindre ändringar i resten av TREK.',
'system_notice.release_notes.notes_label': 'Versionsnyheter', 'system_notice.release_notes.notes_label': 'Versionsnyheter',
'system_notice.release_notes.note_eyebrow': 'Ett ord från utvecklaren', 'system_notice.release_notes.note_eyebrow': 'Ett ord från utvecklaren',
@@ -89,5 +85,7 @@ const system_notice: TranslationStrings = {
'Om TREK har förtjänat en plats på dina resor, så bjud mig gärna på en kaffe och hjälp till att nästa utgåva blir av.', 'Om TREK har förtjänat en plats på dina resor, så bjud mig gärna på en kaffe och hjälp till att nästa utgåva blir av.',
'system_notice.release_notes.cta_bmc': 'Buy me a coffee', 'system_notice.release_notes.cta_bmc': 'Buy me a coffee',
'system_notice.release_notes.cta_kofi': 'Stöd på Ko-fi', 'system_notice.release_notes.cta_kofi': 'Stöd på Ko-fi',
'system_notice.release_notes.feature_docsync_title': 'Dokumentsynk',
'system_notice.release_notes.feature_docsync_body': 'Paperless-ngx, Papra, Nextcloud, OpenCloud och Synology Drive. En resas dokument flödar åt båda håll med lagringen du redan kör.',
}; };
export default system_notice; export default system_notice;
+7 -9
View File
@@ -55,20 +55,14 @@ const system_notice: TranslationStrings = {
'system_notice.pager.goto': '{n}. bildirime git', 'system_notice.pager.goto': '{n}. bildirime git',
'system_notice.pager.position': '{total} Bildirimden {current}.', 'system_notice.pager.position': '{total} Bildirimden {current}.',
'system_notice.release_notes.eyebrow': 'Güncelleme yüklendi', 'system_notice.release_notes.eyebrow': 'Güncelleme yüklendi',
'system_notice.release_notes.headline': "TREK'in artık kendi başına yaptığı üç şey.",
'system_notice.release_notes.intro':
"Kendi yer API'si, baştan sona planlanan yol gezileri ve yeniden senin elinde olan konum geçmişin.",
'system_notice.release_notes.features_label': 'Öne çıkanlar', 'system_notice.release_notes.features_label': 'Öne çıkanlar',
'system_notice.release_notes.features_aside': 'Hepsi bu kadar değil', 'system_notice.release_notes.features_aside': 'Hepsi bu kadar değil',
'system_notice.release_notes.feature_places_title': 'TREK Places API', 'system_notice.release_notes.feature_places_title': 'TREK Places API',
'system_notice.release_notes.feature_places_body': 'system_notice.release_notes.feature_places_body': 'Kendi yer API’sine sahip ilk açık kaynak seyahat planlayıcısı. 73,6 milyon yer, anahtar yok, kota yok.',
"Kendi yer API'sini barındıran ilk açık kaynak seyahat planlayıcısı. 73,6 milyon yer, her ay yeniden oluşturuluyor. Anahtar yok, kota yok.",
'system_notice.release_notes.feature_roadtrip_title': 'Yol gezisi eklentisi', 'system_notice.release_notes.feature_roadtrip_title': 'Yol gezisi eklentisi',
'system_notice.release_notes.feature_roadtrip_body': 'system_notice.release_notes.feature_roadtrip_body': 'Sürüşü kendi planlar: rota, mesafe, saatler ve duraklar. Bir yönetici açana kadar kapalı.',
'Yol gezisi modu sürüşün kendisini planlar: rotayı, mesafeyi, süreyi ve durakları. Bir eklentidir ve bir yönetici açana kadar kapalı kalır.',
'system_notice.release_notes.feature_dawarich_title': 'Dawarich entegrasyonu', 'system_notice.release_notes.feature_dawarich_title': 'Dawarich entegrasyonu',
'system_notice.release_notes.feature_dawarich_body': 'system_notice.release_notes.feature_dawarich_body': 'Google Timeline’ın kendi sunucunda çalışan alternatifi, artık TREK içinden okunabiliyor. TREK okur, yalnızca okur.',
"Google Timeline'ın kendi sunucunda çalışan alternatifi, artık TREK içinden okunabiliyor. TREK okur, yalnızca okur. Geriye hiçbir zaman hiçbir şey yazılmaz.",
'system_notice.release_notes.footnote': 'system_notice.release_notes.footnote':
"Ayrıca TREK'in geri kalanına yayılmış, daha küçük değişikliklerden oluşan uzun bir liste var.", "Ayrıca TREK'in geri kalanına yayılmış, daha küçük değişikliklerden oluşan uzun bir liste var.",
'system_notice.release_notes.notes_label': 'Sürüm notları', 'system_notice.release_notes.notes_label': 'Sürüm notları',
@@ -89,5 +83,9 @@ const system_notice: TranslationStrings = {
'TREK seyahatlerinde kendine bir yer edindiyse, bana bir kahve ısmarla ve bir sonraki sürümün gelmesine yardım et.', 'TREK seyahatlerinde kendine bir yer edindiyse, bana bir kahve ısmarla ve bir sonraki sürümün gelmesine yardım et.',
'system_notice.release_notes.cta_bmc': 'Buy me a coffee', 'system_notice.release_notes.cta_bmc': 'Buy me a coffee',
'system_notice.release_notes.cta_kofi': "Ko-fi'de Destek Ol", 'system_notice.release_notes.cta_kofi': "Ko-fi'de Destek Ol",
'system_notice.release_notes.headline': 'TREK’in artık kendi başına yaptığı dört şey.',
'system_notice.release_notes.intro': 'Kendi yer API’si, baştan sona planlanan yol gezileri, konum geçmişiniz sizin elinizde, ve belgeleriniz eşitlenmiş.',
'system_notice.release_notes.feature_docsync_title': 'Belge Eşitleme',
'system_notice.release_notes.feature_docsync_body': 'Paperless-ngx, Papra, Nextcloud, OpenCloud ve Synology Drive. Bir seyahatin belgeleri, zaten kullandığınız depoyla iki yönlü akar.',
}; };
export default system_notice; export default system_notice;
+7 -9
View File
@@ -56,20 +56,16 @@ const system_notice: TranslationStrings = {
'Оновлення 3.0.14 виявило один або кілька конфліктів імен користувачів або електронних адрес, спричинених початковими або кінцевими пробілами в збережених облікових записах. Уражені облікові записи було автоматично перейменовано. Перевірте журнали сервера на рядки, що починаються з **[migration] WHITESPACE COLLISION**, щоб визначити, які облікові записи потребують перевірки.', 'Оновлення 3.0.14 виявило один або кілька конфліктів імен користувачів або електронних адрес, спричинених початковими або кінцевими пробілами в збережених облікових записах. Уражені облікові записи було автоматично перейменовано. Перевірте журнали сервера на рядки, що починаються з **[migration] WHITESPACE COLLISION**, щоб визначити, які облікові записи потребують перевірки.',
// The release modal. One stable set of keys: each big release swaps the copy in place. // The release modal. One stable set of keys: each big release swaps the copy in place.
'system_notice.release_notes.eyebrow': 'Оновлення встановлено', 'system_notice.release_notes.eyebrow': 'Оновлення встановлено',
'system_notice.release_notes.headline': 'Три речі, які TREK тепер робить сам.', 'system_notice.release_notes.headline': 'Чотири речі, які TREK тепер робить сам.',
'system_notice.release_notes.intro': 'system_notice.release_notes.intro': 'Власний API місць, автоподорожі від початку до кінця, ваша історія розташувань у ваших руках, і ваші документи в синхронізації.',
'Власний API місць, автоподорожі, сплановані від початку до кінця, і ваша історія місцезнаходжень знову у ваших руках.',
'system_notice.release_notes.features_label': 'Головні новинки', 'system_notice.release_notes.features_label': 'Головні новинки',
'system_notice.release_notes.features_aside': 'І це далеко не все', 'system_notice.release_notes.features_aside': 'І це далеко не все',
'system_notice.release_notes.feature_places_title': 'TREK Places API', 'system_notice.release_notes.feature_places_title': 'TREK Places API',
'system_notice.release_notes.feature_places_body': 'system_notice.release_notes.feature_places_body': 'Перший планувальник подорожей з відкритим кодом і власним API місць. 73,6 мільйона місць, без ключа й квот.',
'Перший планувальник подорожей з відкритим кодом, який має власний API місць. 73,6 мільйона місць, щомісяця зібраних наново. Без ключа, без квот.',
'system_notice.release_notes.feature_roadtrip_title': 'Доповнення «Автоподорож»', 'system_notice.release_notes.feature_roadtrip_title': 'Доповнення «Автоподорож»',
'system_notice.release_notes.feature_roadtrip_body': 'system_notice.release_notes.feature_roadtrip_body': 'Планує поїздку сам: маршрут, відстань, години й зупинки. Вимкнено, поки адмін не ввімкне.',
'Режим автоподорожі планує саму поїздку: маршрут, відстань, години в дорозі та зупинки. Це доповнення, і воно вимкнене, доки його не ввімкне адміністратор.',
'system_notice.release_notes.feature_dawarich_title': 'Інтеграція з Dawarich', 'system_notice.release_notes.feature_dawarich_title': 'Інтеграція з Dawarich',
'system_notice.release_notes.feature_dawarich_body': 'system_notice.release_notes.feature_dawarich_body': 'Self-hosted альтернатива Google Timeline, яку тепер можна читати прямо в TREK. TREK читає, і тільки читає.',
'Self-hosted альтернатива Google Timeline, яку тепер можна читати прямо в TREK. TREK читає, і тільки читає. Назад нічого ніколи не записується.',
'system_notice.release_notes.footnote': 'А також довгий список дрібніших змін по всьому TREK.', 'system_notice.release_notes.footnote': 'А також довгий список дрібніших змін по всьому TREK.',
'system_notice.release_notes.notes_label': 'Нотатки до релізу', 'system_notice.release_notes.notes_label': 'Нотатки до релізу',
'system_notice.release_notes.note_eyebrow': 'Слово від мейнтейнера', 'system_notice.release_notes.note_eyebrow': 'Слово від мейнтейнера',
@@ -89,5 +85,7 @@ const system_notice: TranslationStrings = {
'Якщо TREK заслужив місце у ваших подорожах, пригостіть мене кавою і допоможіть наблизити наступний реліз.', 'Якщо TREK заслужив місце у ваших подорожах, пригостіть мене кавою і допоможіть наблизити наступний реліз.',
'system_notice.release_notes.cta_bmc': 'Buy me a coffee', 'system_notice.release_notes.cta_bmc': 'Buy me a coffee',
'system_notice.release_notes.cta_kofi': 'Підтримати на Ko-fi', 'system_notice.release_notes.cta_kofi': 'Підтримати на Ko-fi',
'system_notice.release_notes.feature_docsync_title': 'Синхронізація документів',
'system_notice.release_notes.feature_docsync_body': 'Paperless-ngx, Papra, Nextcloud, OpenCloud і Synology Drive. Документи подорожі рухаються в обидва боки зі сховищем, яке ви вже використовуєте.',
}; };
export default system_notice; export default system_notice;
+7 -9
View File
@@ -57,20 +57,16 @@ const system_notice: TranslationStrings = {
'system_notice.pager.position': 'Thông báo {current} của {total}', 'system_notice.pager.position': 'Thông báo {current} của {total}',
// The release modal. One stable set of keys: each big release swaps the copy in place. // The release modal. One stable set of keys: each big release swaps the copy in place.
'system_notice.release_notes.eyebrow': 'Đã cập nhật', 'system_notice.release_notes.eyebrow': 'Đã cập nhật',
'system_notice.release_notes.headline': 'Ba điều giờ đây TREK tự làm được.', 'system_notice.release_notes.headline': 'Bốn điều TREK giờ tự làm được.',
'system_notice.release_notes.intro': 'system_notice.release_notes.intro': 'API địa điểm riêng, chuyến đi đường bộ được lên kế hoạch từ đầu đến cuối, lịch sử vị trí trong tay bạn, và tài liệu được đồng bộ.',
'API địa điểm của riêng mình, chuyến đi đường bộ được lên kế hoạch trọn vẹn từ đầu đến cuối, và lịch sử vị trí trở về trong tay bạn.',
'system_notice.release_notes.features_label': 'Những điểm nhấn', 'system_notice.release_notes.features_label': 'Những điểm nhấn',
'system_notice.release_notes.features_aside': 'Chưa phải tất cả', 'system_notice.release_notes.features_aside': 'Chưa phải tất cả',
'system_notice.release_notes.feature_places_title': 'TREK Places API', 'system_notice.release_notes.feature_places_title': 'TREK Places API',
'system_notice.release_notes.feature_places_body': 'system_notice.release_notes.feature_places_body': 'Trình lập kế hoạch du lịch mã nguồn mở đầu tiên có API địa điểm riêng. 73,6 triệu địa điểm, không cần khóa, không giới hạn.',
'Công cụ lập kế hoạch du lịch mã nguồn mở đầu tiên tự vận hành API địa điểm của riêng mình. 73,6 triệu địa điểm, dựng lại mỗi tháng. Không cần khóa, không giới hạn lượt dùng.',
'system_notice.release_notes.feature_roadtrip_title': 'Tiện ích Chuyến đi đường bộ', 'system_notice.release_notes.feature_roadtrip_title': 'Tiện ích Chuyến đi đường bộ',
'system_notice.release_notes.feature_roadtrip_body': 'system_notice.release_notes.feature_roadtrip_body': 'Tự lên kế hoạch chuyến lái: tuyến đường, quãng đường, số giờ và điểm dừng. Tắt cho đến khi quản trị viên bật.',
'Chế độ chuyến đi đường bộ tự lên kế hoạch cho cả hành trình lái xe: tuyến đường, quãng đường, số giờ lái và các điểm dừng. Đây là một tiện ích bổ sung, được tắt cho đến khi quản trị viên bật lên.',
'system_notice.release_notes.feature_dawarich_title': 'Tích hợp Dawarich', 'system_notice.release_notes.feature_dawarich_title': 'Tích hợp Dawarich',
'system_notice.release_notes.feature_dawarich_body': 'system_notice.release_notes.feature_dawarich_body': 'Lựa chọn tự lưu trữ thay cho Google Timeline, giờ đã đọc được ngay trong TREK. TREK chỉ đọc, và chỉ đọc mà thôi.',
'Lựa chọn tự lưu trữ thay cho Google Timeline, giờ đã đọc được ngay trong TREK. TREK chỉ đọc, và chỉ đọc mà thôi. Không có gì bị ghi ngược lại.',
'system_notice.release_notes.footnote': 'system_notice.release_notes.footnote':
'Và còn cả một danh sách dài những thay đổi nhỏ hơn ở khắp phần còn lại của TREK.', 'Và còn cả một danh sách dài những thay đổi nhỏ hơn ở khắp phần còn lại của TREK.',
'system_notice.release_notes.notes_label': 'Ghi chú phát hành', 'system_notice.release_notes.notes_label': 'Ghi chú phát hành',
@@ -91,5 +87,7 @@ const system_notice: TranslationStrings = {
'Nếu TREK đã có một chỗ trong những chuyến đi của bạn, hãy mời tôi một ly cà phê để bản phát hành tiếp theo tiếp tục ra đời.', 'Nếu TREK đã có một chỗ trong những chuyến đi của bạn, hãy mời tôi một ly cà phê để bản phát hành tiếp theo tiếp tục ra đời.',
'system_notice.release_notes.cta_bmc': 'Buy me a coffee', 'system_notice.release_notes.cta_bmc': 'Buy me a coffee',
'system_notice.release_notes.cta_kofi': 'Hỗ trợ trên Ko-fi', 'system_notice.release_notes.cta_kofi': 'Hỗ trợ trên Ko-fi',
'system_notice.release_notes.feature_docsync_title': 'Đồng bộ tài liệu',
'system_notice.release_notes.feature_docsync_body': 'Paperless-ngx, Papra, Nextcloud, OpenCloud và Synology Drive. Tài liệu của chuyến đi luân chuyển hai chiều với kho lưu trữ bạn đang dùng.',
}; };
export default system_notice; export default system_notice;
+7 -9
View File
@@ -55,20 +55,16 @@ const system_notice: TranslationStrings = {
'3.0.14 版本升級偵測到一個或多個由儲存帳戶中前後空白字元引發的使用者名稱或電子郵件衝突。受影響的帳戶已自動重新命名。請檢查伺服器日誌中以 **[migration] WHITESPACE COLLISION** 開頭的行,以確認哪些帳戶需要審查。', '3.0.14 版本升級偵測到一個或多個由儲存帳戶中前後空白字元引發的使用者名稱或電子郵件衝突。受影響的帳戶已自動重新命名。請檢查伺服器日誌中以 **[migration] WHITESPACE COLLISION** 開頭的行,以確認哪些帳戶需要審查。',
// The release modal. One stable set of keys: each big release swaps the copy in place. // The release modal. One stable set of keys: each big release swaps the copy in place.
'system_notice.release_notes.eyebrow': '更新已安裝', 'system_notice.release_notes.eyebrow': '更新已安裝',
'system_notice.release_notes.headline': '三件事,TREK 現在自己就能做到。', 'system_notice.release_notes.headline': 'TREK 現在能自己完成的四件事。',
'system_notice.release_notes.intro': 'system_notice.release_notes.intro': '自有的地點 API、從頭到尾規劃的公路旅行、掌握在你手中的位置記錄,以及保持同步的文件。',
'自行架設的地點 API,從出發到抵達全程規劃的公路旅行,還有重新回到你手中的位置紀錄。',
'system_notice.release_notes.features_label': '本次重頭戲', 'system_notice.release_notes.features_label': '本次重頭戲',
'system_notice.release_notes.features_aside': '遠不止這些', 'system_notice.release_notes.features_aside': '遠不止這些',
'system_notice.release_notes.feature_places_title': 'TREK Places API', 'system_notice.release_notes.feature_places_title': 'TREK Places API',
'system_notice.release_notes.feature_places_body': 'system_notice.release_notes.feature_places_body': '首個擁有自有地點 API 的開源旅行規劃器。7360 萬個地點,無需金鑰,沒有配額。',
'第一個自行架設地點 API 的開源旅遊規劃器。收錄 7360 萬個地點,每月重新建置。不需要金鑰,也沒有配額限制。',
'system_notice.release_notes.feature_roadtrip_title': '公路旅行擴充套件', 'system_notice.release_notes.feature_roadtrip_title': '公路旅行擴充套件',
'system_notice.release_notes.feature_roadtrip_body': 'system_notice.release_notes.feature_roadtrip_body': '自動規劃行車:路線、距離、時長和停靠點。管理員開啟前預設關閉。',
'公路旅行模式會把整段車程規劃好:路線、里程、行車時數與停靠點。這是一個擴充套件,須由管理員啟用後才能使用。',
'system_notice.release_notes.feature_dawarich_title': 'Dawarich 整合', 'system_notice.release_notes.feature_dawarich_title': 'Dawarich 整合',
'system_notice.release_notes.feature_dawarich_body': 'system_notice.release_notes.feature_dawarich_body': 'Google Timeline 的自架替代方案,現在可以直接在 TREK 裡檢視。TREK 只讀取,也僅止於讀取。',
'Google Timeline 的自架替代方案,現在可以直接在 TREK 裡檢視。TREK 只讀取,也僅止於讀取,絕不會寫回任何資料。',
'system_notice.release_notes.footnote': '除此之外,TREK 的其他部分還有一長串小改動。', 'system_notice.release_notes.footnote': '除此之外,TREK 的其他部分還有一長串小改動。',
'system_notice.release_notes.notes_label': '版本說明', 'system_notice.release_notes.notes_label': '版本說明',
'system_notice.release_notes.note_eyebrow': '來自維護者的話', 'system_notice.release_notes.note_eyebrow': '來自維護者的話',
@@ -87,5 +83,7 @@ const system_notice: TranslationStrings = {
'如果它已經在你的旅行中佔有一席之地,請我喝杯咖啡,幫我把下一個版本繼續做出來吧。', '如果它已經在你的旅行中佔有一席之地,請我喝杯咖啡,幫我把下一個版本繼續做出來吧。',
'system_notice.release_notes.cta_bmc': 'Buy me a coffee', 'system_notice.release_notes.cta_bmc': 'Buy me a coffee',
'system_notice.release_notes.cta_kofi': '在 Ko-fi 上支持我', 'system_notice.release_notes.cta_kofi': '在 Ko-fi 上支持我',
'system_notice.release_notes.feature_docsync_title': '文件同步',
'system_notice.release_notes.feature_docsync_body': 'Paperless-ngx、Papra、Nextcloud、OpenCloud 和 Synology Drive。行程的文件與你已在運行的儲存雙向流動。',
}; };
export default system_notice; export default system_notice;
+7 -8
View File
@@ -54,19 +54,16 @@ const system_notice: TranslationStrings = {
'3.0.14 版本升级检测到一个或多个由存储账户中首尾空白字符引发的用户名或邮箱冲突。受影响的账户已自动重命名。请检查服务器日志中以 **[migration] WHITESPACE COLLISION** 开头的行,以确认哪些账户需要审查。', '3.0.14 版本升级检测到一个或多个由存储账户中首尾空白字符引发的用户名或邮箱冲突。受影响的账户已自动重命名。请检查服务器日志中以 **[migration] WHITESPACE COLLISION** 开头的行,以确认哪些账户需要审查。',
// The release modal. One stable set of keys: each big release swaps the copy in place. // The release modal. One stable set of keys: each big release swaps the copy in place.
'system_notice.release_notes.eyebrow': '更新已安装', 'system_notice.release_notes.eyebrow': '更新已安装',
'system_notice.release_notes.headline': '三件事,TREK 现在自己就能做到。', 'system_notice.release_notes.headline': 'TREK 现在能自己完成的四件事。',
'system_notice.release_notes.intro': '自建的地点 API,从出发到抵达全程规划的公路旅行,还有重新回到你手中的位置历史。', 'system_notice.release_notes.intro': '自有的地点 API、从头到尾规划的公路旅行、掌握在你手中的位置记录,以及保持同步的文档。',
'system_notice.release_notes.features_label': '本次重头戏', 'system_notice.release_notes.features_label': '本次重头戏',
'system_notice.release_notes.features_aside': '远不止这些', 'system_notice.release_notes.features_aside': '远不止这些',
'system_notice.release_notes.feature_places_title': 'TREK Places API', 'system_notice.release_notes.feature_places_title': 'TREK Places API',
'system_notice.release_notes.feature_places_body': 'system_notice.release_notes.feature_places_body': '首个拥有自有地点 API 的开源旅行规划器。7360 万个地点,无需密钥,没有配额。',
'第一个自建地点 API 的开源旅行规划器。收录 7360 万个地点,每月重新构建。无需密钥,不限配额。',
'system_notice.release_notes.feature_roadtrip_title': '公路旅行扩展', 'system_notice.release_notes.feature_roadtrip_title': '公路旅行扩展',
'system_notice.release_notes.feature_roadtrip_body': 'system_notice.release_notes.feature_roadtrip_body': '自动规划行车:路线、距离、时长和停靠点。管理员开启前默认关闭。',
'公路旅行模式会把整段车程规划好:路线、里程、驾驶时长和停靠点。这是一个扩展,需要管理员开启后才能使用。',
'system_notice.release_notes.feature_dawarich_title': 'Dawarich 集成', 'system_notice.release_notes.feature_dawarich_title': 'Dawarich 集成',
'system_notice.release_notes.feature_dawarich_body': 'system_notice.release_notes.feature_dawarich_body': 'Google Timeline 的自托管替代方案,现在可以直接在 TREK 里查看。TREK 只读取,仅此而已。',
'Google Timeline 的自托管替代方案,现在可以直接在 TREK 里查看。TREK 只读取,仅此而已,绝不会回写任何数据。',
'system_notice.release_notes.footnote': '除此之外,TREK 的其他部分还有一长串小改动。', 'system_notice.release_notes.footnote': '除此之外,TREK 的其他部分还有一长串小改动。',
'system_notice.release_notes.notes_label': '更新说明', 'system_notice.release_notes.notes_label': '更新说明',
'system_notice.release_notes.note_eyebrow': '来自维护者的话', 'system_notice.release_notes.note_eyebrow': '来自维护者的话',
@@ -84,5 +81,7 @@ const system_notice: TranslationStrings = {
'如果它已经在你的旅行中占有一席之地,请我喝杯咖啡,帮我把下一个版本继续做出来吧。', '如果它已经在你的旅行中占有一席之地,请我喝杯咖啡,帮我把下一个版本继续做出来吧。',
'system_notice.release_notes.cta_bmc': 'Buy me a coffee', 'system_notice.release_notes.cta_bmc': 'Buy me a coffee',
'system_notice.release_notes.cta_kofi': '在 Ko-fi 上支持', 'system_notice.release_notes.cta_kofi': '在 Ko-fi 上支持',
'system_notice.release_notes.feature_docsync_title': '文档同步',
'system_notice.release_notes.feature_docsync_body': 'Paperless-ngx、Papra、Nextcloud、OpenCloud 和 Synology Drive。行程的文档与你已在运行的存储双向流动。',
}; };
export default system_notice; export default system_notice;
@@ -69,6 +69,7 @@ describe('systemNoticeDtoSchema', () => {
features: [ features: [
{ iconName: 'Database', titleKey: 'f1t', bodyKey: 'f1b' }, { iconName: 'Database', titleKey: 'f1t', bodyKey: 'f1b' },
{ iconName: 'Route', visual: 'roadtrip', titleKey: 'f2t', bodyKey: 'f2b' }, { iconName: 'Route', visual: 'roadtrip', titleKey: 'f2t', bodyKey: 'f2b' },
{ iconName: 'FolderSync', visual: 'docsync', layout: 'wide', titleKey: 'f3t', bodyKey: 'f3b' },
], ],
note: { note: {
eyebrowKey: 'ne', eyebrowKey: 'ne',
@@ -45,10 +45,13 @@ const noticeCtaSchema = z.discriminatedUnion('kind', [
/** /**
* One headline card in the release panel. `visual` names a small illustration the * One headline card in the release panel. `visual` names a small illustration the
* client draws for it; a name the client does not know falls back to the icon. * client draws for it; a name the client does not know falls back to the icon.
* `layout: 'wide'` lays the card across the whole row, picture beside the text,
* for a headliner that comes after a full row of upright cards.
*/ */
const noticeReleaseFeatureSchema = z.object({ const noticeReleaseFeatureSchema = z.object({
iconName: z.string(), iconName: z.string(),
visual: z.string().optional(), visual: z.string().optional(),
layout: z.enum(['card', 'wide']).optional(),
titleKey: z.string(), titleKey: z.string(),
bodyKey: z.string(), bodyKey: z.string(),
}); });