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 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">
{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-visual" aria-hidden="true">
<ReleaseFeatureVisual visual={f.visual} iconName={f.iconName} />
@@ -1,7 +1,8 @@
import React from '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 { NextcloudIcon, OpenCloudIcon, PaperlessIcon, PapraIcon, SynologyDriveIcon } from '../shared/DocumentProviderIcons';
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> = {
'places-api': PlacesApiVisual,
roadtrip: RoadtripVisual,
dawarich: DawarichVisual,
docsync: DocSyncVisual,
};
/** The card's picture, or its icon when the release names no drawing this client knows. */
@@ -54,6 +54,9 @@
max-height: 100%;
display: grid;
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;
overflow: hidden;
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 {
margin: 11px 0 0;
max-width: 560px;
max-width: 640px;
font-size: 16.5px;
line-height: 1.6;
color: oklch(1 0 0 / 0.62);
@@ -193,12 +196,30 @@
.rn-features {
margin-top: 14px;
/* Keeps the foot clear of the cards when the column has no height to spare. */
margin-bottom: 26px;
margin-bottom: 18px;
display: grid;
grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
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 {
position: relative;
display: flex;
@@ -461,6 +482,37 @@
.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. */
.rn-vis-brand {
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',
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',
notes: {
+2
View File
@@ -32,6 +32,8 @@ export interface NoticeReleaseFeature {
iconName: string;
/** A small illustration the client draws on the card; unknown names fall back to the icon. */
visual?: string;
/** `wide` spans the row, picture beside the text; the default is an upright card. */
layout?: 'card' | 'wide';
titleKey: string;
bodyKey: string;
}
+13 -2
View File
@@ -27,6 +27,7 @@ const { mockGetActive, mockDismiss } = vi.hoisted(() => ({ mockGetActive: vi.fn(
vi.mock('../../src/systemNotices/service', () => ({
getActiveNoticesFor: mockGetActive,
dismissNotice: mockDismiss,
getCurrentAppVersion: () => '4.3.0',
}));
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]);
});
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]);
const res = await request(server)
.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));
expect(res.status).toBe(200);
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.pager.counter': '{current} / {total}', // en-fallback
'system_notice.release_notes.eyebrow': 'تم تثبيت التحديث',
'system_notice.release_notes.headline': 'ثلاثة أشياء صار TREK يتولاها بنفسه.',
'system_notice.release_notes.intro':
'واجهة API خاصة به للأماكن، ورحلات برية مخطَّطة من أولها إلى آخرها، وسجل مواقعك يعود إلى يديك.',
'system_notice.release_notes.headline': 'أربعة أشياء يقوم بها TREK الآن بنفسه.',
'system_notice.release_notes.intro': 'واجهة أماكن خاصة به، ورحلات برية مخططة من البداية إلى النهاية، وسجل مواقعك في يديك، ومستنداتك متزامنة.',
'system_notice.release_notes.features_label': 'أبرز الجديد',
'system_notice.release_notes.features_aside': 'وهذا ليس كل شيء',
'system_notice.release_notes.feature_places_title': 'TREK Places API',
'system_notice.release_notes.feature_places_body':
'أول مخطط سفر مفتوح المصدر يستضيف واجهة API خاصة به للأماكن. 73.6 مليون مكان، يُعاد بناؤها كل شهر. بلا مفتاح ولا حصة.',
'system_notice.release_notes.feature_places_body': 'أول مخطط رحلات مفتوح المصدر بواجهة أماكن خاصة به. 73.6 مليون مكان، بلا مفتاح، بلا حصة.',
'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_body':
'البديل المستضاف ذاتيًا لـ Google Timeline، وصار بالإمكان الآن قراءته داخل TREK. يقرأ TREK، ويقرأ فقط. ولا يُكتب فيه أي شيء أبدًا.',
'system_notice.release_notes.feature_dawarich_body': 'البديل المستضاف ذاتيًا لـ Google Timeline، وصار بالإمكان الآن قراءته داخل TREK. يقرأ TREK، ويقرأ فقط.',
'system_notice.release_notes.footnote': 'إلى جانب قائمة طويلة من التغييرات الأصغر في بقية أرجاء TREK.',
'system_notice.release_notes.notes_label': 'ملاحظات الإصدار',
'system_notice.release_notes.note_eyebrow': 'كلمة من صاحب المشروع',
@@ -86,5 +82,7 @@ const system_notice: TranslationStrings = {
'إن كان TREK قد استحق مكانًا في رحلاتك، فاشترِ لي فنجان قهوة وساعد في أن يرى الإصدار القادم النور.',
'system_notice.release_notes.cta_bmc': 'Buy me a coffee',
'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;
+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.',
// 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.headline': 'Três coisas que o TREK agora faz sozinho.',
'system_notice.release_notes.intro':
'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.headline': 'Quatro coisas que o TREK agora faz sozinho.',
'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.',
'system_notice.release_notes.features_label': 'Os destaques',
'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_body':
'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_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.',
'system_notice.release_notes.feature_roadtrip_title': 'Addon Viagem de carro',
'system_notice.release_notes.feature_roadtrip_body':
'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_roadtrip_body': 'Planeia a viagem sozinho: rota, distância, horas e paragens. Desligado até um admin o ativar.',
'system_notice.release_notes.feature_dawarich_title': 'Integração Dawarich',
'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ê. Nada nunca é gravado de volta.',
'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ê.',
'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.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.',
'system_notice.release_notes.cta_bmc': 'Buy me a coffee',
'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;
+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_kofi': 'Dona suport a Ko-fi',
'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.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.headline': 'Quatre coses que TREK ara fa tot sol.',
'system_notice.release_notes.features_label': 'Els protagonistes',
'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_body':
'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_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.',
'system_notice.release_notes.feature_roadtrip_title': 'Complement Roadtrip',
'system_notice.release_notes.feature_roadtrip_body':
"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_roadtrip_body': 'Planifica el trajecte tot sol: ruta, distància, hores i parades. Desactivat fins que un admin l’activi.',
'system_notice.release_notes.feature_dawarich_title': 'Integració amb Dawarich',
'system_notice.release_notes.feature_dawarich_body':
"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.feature_dawarich_body': 'L’alternativa autoallotjada a Google Timeline, ara llegible des de TREK. TREK llegeix, i només llegeix.',
'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.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ó.",
'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.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;
+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.',
// 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.headline': 'Tři věci, které TREK teď zvládne sám.',
'system_notice.release_notes.intro':
'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.headline': 'Čtyři věci, které TREK nyní zvládne sám.',
'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.',
'system_notice.release_notes.features_label': 'Hlavní novinky',
'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_body':
'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_places_body': 'První open source plánovač cest s vlastním API míst. 73,6 milionu míst, bez klíče, bez limitu.',
'system_notice.release_notes.feature_roadtrip_title': 'Doplněk Cesta autem',
'system_notice.release_notes.feature_roadtrip_body':
'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_roadtrip_body': 'Naplánuje jízdu sám: trasu, vzdálenost, hodiny a zastávky. Vypnuto, dokud to admin nezapne.',
'system_notice.release_notes.feature_dawarich_title': 'Integrace Dawarich',
'system_notice.release_notes.feature_dawarich_body':
'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.feature_dawarich_body': 'Self-hosted odpověď na Google Timeline, teď čitelná přímo v TREK. TREK čte, a jen čte.',
'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.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í.',
'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.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;
+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.',
// 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.headline': 'Drei Dinge, die TREK jetzt selbst erledigt.',
'system_notice.release_notes.intro':
'Eine eigene API für Orte, Roadtrips von Anfang bis Ende geplant und dein Standortverlauf wieder in deiner Hand.',
'system_notice.release_notes.headline': 'Vier Dinge, die TREK jetzt selbst kann.',
'system_notice.release_notes.intro': 'Eine eigene Orts-API, Roadtrips komplett geplant, dein Standortverlauf wieder in deiner Hand, und deine Dokumente im Abgleich.',
'system_notice.release_notes.features_label': 'Die Highlights',
'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_body':
'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_places_body': 'Der erste Open-Source-Reiseplaner mit eigener Orts-API. 73,6 Millionen Orte, kein Key, kein Kontingent.',
'system_notice.release_notes.feature_roadtrip_title': 'Roadtrip-Addon',
'system_notice.release_notes.feature_roadtrip_body':
'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_roadtrip_body': 'Plant die Fahrt selbst: Route, Strecke, Stunden und Stopps. Aus, bis ein Admin es einschaltet.',
'system_notice.release_notes.feature_dawarich_title': 'Dawarich-Integration',
'system_notice.release_notes.feature_dawarich_body':
'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.feature_dawarich_body': 'Die selbst gehostete Antwort auf Google Timeline, jetzt direkt in TREK lesbar. TREK liest, und nur das.',
'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.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.',
'system_notice.release_notes.cta_bmc': 'Buy me a coffee',
'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;
+7 -9
View File
@@ -52,20 +52,16 @@ const system_notice: TranslationStrings = {
'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.
'system_notice.release_notes.eyebrow': 'Update installed',
'system_notice.release_notes.headline': 'Three things TREK now does on its own.',
'system_notice.release_notes.intro':
'Its own place API, road trips planned end to end, and your location history back in your hands.',
'system_notice.release_notes.headline': 'Four things TREK now does on its own.',
'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.',
'system_notice.release_notes.features_label': 'The headliners',
'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_body':
'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_places_body': 'The first open source travel planner with its own place API. 73.6 million places, no key, no quota.',
'system_notice.release_notes.feature_roadtrip_title': 'Roadtrip Addon',
'system_notice.release_notes.feature_roadtrip_body':
'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_roadtrip_body': 'Plans the drive itself: route, distance, hours and stops. Off until an admin turns it on.',
'system_notice.release_notes.feature_dawarich_title': 'Dawarich Integration',
'system_notice.release_notes.feature_dawarich_body':
'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.feature_dawarich_body': 'The self-hosted answer to Google Timeline, now readable inside TREK. TREK reads, and only reads.',
'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.note_eyebrow': 'A note from the maintainer',
@@ -90,5 +86,7 @@ const system_notice: TranslationStrings = {
'system_notice.pager.counter': '{current} / {total}',
'system_notice.pager.goto': 'Go to notice {n}',
'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;
+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.',
// 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.headline': 'Tres cosas que TREK ya hace por sí solo.',
'system_notice.release_notes.intro':
'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.headline': 'Cuatro cosas que TREK ahora hace por sí mismo.',
'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.',
'system_notice.release_notes.features_label': 'Los protagonistas',
'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_body':
'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_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.',
'system_notice.release_notes.feature_roadtrip_title': 'Addon Roadtrip',
'system_notice.release_notes.feature_roadtrip_body':
'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_roadtrip_body': 'Planifica el trayecto por sí solo: ruta, distancia, horas y paradas. Apagado hasta que un admin lo active.',
'system_notice.release_notes.feature_dawarich_title': 'Integración con Dawarich',
'system_notice.release_notes.feature_dawarich_body':
'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.feature_dawarich_body': 'La alternativa autoalojada a Google Timeline, ahora legible desde TREK. TREK lee, y solo lee.',
'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.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.',
'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.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;
+7 -9
View File
@@ -55,20 +55,16 @@ const system_notice: TranslationStrings = {
'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.",
'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.intro':
'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.headline': 'Quatre choses que TREK fait désormais tout seul.',
'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.',
'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.feature_places_title': 'API TREK Places',
'system_notice.release_notes.feature_places_body':
'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_places_body': 'Le premier planificateur de voyage open source avec sa propre API de lieux. 73,6 millions de lieux, sans clé, sans quota.',
'system_notice.release_notes.feature_roadtrip_title': 'Addon Roadtrip',
'system_notice.release_notes.feature_roadtrip_body':
"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_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.',
'system_notice.release_notes.feature_dawarich_title': 'Intégration Dawarich',
'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. Rien n'est jamais réécrit dans Dawarich.",
'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.',
'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.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.",
'system_notice.release_notes.cta_bmc': 'Buy me a coffee',
'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;
+7 -9
View File
@@ -57,20 +57,16 @@ const system_notice: TranslationStrings = {
'system_notice.pager.goto': 'Μετάβαση στην ειδοποίηση {n}',
'system_notice.pager.position': 'Ειδοποίηση {current} από {total}',
'system_notice.release_notes.eyebrow': 'Ενημερώθηκε',
'system_notice.release_notes.headline': 'Τρία πράγματα που το TREK κάνει πλέον μόνο του.',
'system_notice.release_notes.intro':
'Δικό του API τοποθεσιών, οδικά ταξίδια σχεδιασμένα από την αρχή ως το τέλος και το ιστορικό των μετακινήσεών σας ξανά στα χέρια σας.',
'system_notice.release_notes.headline': 'Τέσσερα πράγματα που το TREK κάνει πλέον μόνο του.',
'system_notice.release_notes.intro': 'Δικό του API τοποθεσιών, οδικά ταξίδια σχεδιασμένα από την αρχή ως το τέλος, το ιστορικό τοποθεσίας σας στα χέρια σας, και τα έγγραφά σας σε συγχρονισμό.',
'system_notice.release_notes.features_label': 'Τα σημαντικότερα',
'system_notice.release_notes.features_aside': 'Και δεν είναι μόνο αυτά',
'system_notice.release_notes.feature_places_title': 'TREK Places API',
'system_notice.release_notes.feature_places_body':
'Ο πρώτος σχεδιαστής ταξιδιών ανοιχτού κώδικα που φιλοξενεί το δικό του API τοποθεσιών. 73,6 εκατομμύρια τοποθεσίες, που ξαναχτίζονται κάθε μήνα. Χωρίς κλειδί, χωρίς όρια χρήσης.',
'system_notice.release_notes.feature_places_body': 'Ο πρώτος ανοιχτού κώδικα σχεδιαστής ταξιδιών με δικό του API τοποθεσιών. 73,6 εκατ. τοποθεσίες, χωρίς κλειδί, χωρίς όριο.',
'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_body':
'Η εναλλακτική του Google Timeline που φιλοξενείτε μόνοι σας, τώρα ορατή μέσα από το TREK. Το TREK διαβάζει, και μόνο διαβάζει. Τίποτα δεν γράφεται ποτέ πίσω.',
'system_notice.release_notes.feature_dawarich_body': 'Η εναλλακτική του Google Timeline που φιλοξενείτε μόνοι σας, τώρα ορατή μέσα από το TREK. Το TREK διαβάζει, και μόνο διαβάζει.',
'system_notice.release_notes.footnote': 'Και ακόμη μια μεγάλη λίστα με μικρότερες αλλαγές σε όλο το υπόλοιπο TREK.',
'system_notice.release_notes.notes_label': 'Σημειώσεις έκδοσης',
'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_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;
+7 -9
View File
@@ -55,20 +55,16 @@ const system_notice: TranslationStrings = {
'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.',
'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.intro':
'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.headline': 'Négy dolog, amit a TREK mostantól magától csinál.',
'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.',
'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.feature_places_title': 'TREK Places API',
'system_notice.release_notes.feature_places_body':
'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_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.',
'system_notice.release_notes.feature_roadtrip_title': 'Autós út bővítmény',
'system_notice.release_notes.feature_roadtrip_body':
'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_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.',
'system_notice.release_notes.feature_dawarich_title': 'Dawarich-integráció',
'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. Soha semmit nem ír vissza.',
'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.',
'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.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.',
'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.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;
+7 -9
View File
@@ -55,20 +55,16 @@ const system_notice: TranslationStrings = {
'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.',
'system_notice.release_notes.eyebrow': 'Pembaruan terpasang',
'system_notice.release_notes.headline': 'Tiga hal yang kini dikerjakan TREK sendiri.',
'system_notice.release_notes.intro':
'API tempat miliknya sendiri, perjalanan darat yang direncanakan dari awal sampai akhir, dan riwayat lokasi yang kembali ke tangan Anda.',
'system_notice.release_notes.headline': 'Empat hal yang kini dilakukan TREK sendiri.',
'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.',
'system_notice.release_notes.features_label': 'Sorotan utama',
'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_body':
'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_places_body': 'Perencana perjalanan open source pertama dengan API tempat sendiri. 73,6 juta tempat, tanpa kunci, tanpa kuota.',
'system_notice.release_notes.feature_roadtrip_title': 'Addon Perjalanan Darat',
'system_notice.release_notes.feature_roadtrip_body':
'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_roadtrip_body': 'Merencanakan perjalanan sendiri: rute, jarak, jam, dan perhentian. Nonaktif sampai admin mengaktifkannya.',
'system_notice.release_notes.feature_dawarich_title': 'Integrasi Dawarich',
'system_notice.release_notes.feature_dawarich_body':
'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.feature_dawarich_body': 'Alternatif self-hosted untuk Google Timeline, kini bisa dibaca langsung di TREK. TREK hanya membaca, tidak lebih.',
'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.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.',
'system_notice.release_notes.cta_bmc': 'Buy me a coffee',
'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;
+7 -9
View File
@@ -55,20 +55,15 @@ const system_notice: TranslationStrings = {
'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.",
'system_notice.release_notes.eyebrow': 'Aggiornato',
'system_notice.release_notes.headline': 'Tre 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.headline': 'Quattro cose che TREK ora fa da solo.',
'system_notice.release_notes.features_label': 'I protagonisti',
'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_body':
'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_places_body': 'Il primo pianificatore di viaggi open source con una propria API dei luoghi. 73,6 milioni di luoghi, senza chiave, senza quota.',
'system_notice.release_notes.feature_roadtrip_title': 'Addon Viaggio su strada',
'system_notice.release_notes.feature_roadtrip_body':
'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_roadtrip_body': 'Pianifica il viaggio da solo: percorso, distanza, ore e tappe. Spento finché un admin non lo attiva.',
'system_notice.release_notes.feature_dawarich_title': 'Integrazione Dawarich',
'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. Non scrive mai nulla indietro.",
'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.',
'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.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.',
'system_notice.release_notes.cta_bmc': 'Buy me a coffee',
'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;
+7 -9
View File
@@ -53,20 +53,16 @@ const system_notice: TranslationStrings = {
'system_notice.pager.goto': '通知{n}へ',
'system_notice.pager.position': '{total}件中{current}件目',
'system_notice.release_notes.eyebrow': 'アップデート完了',
'system_notice.release_notes.headline': 'TREKが自前でできるようになった、3つのこと。',
'system_notice.release_notes.intro':
'自前の場所API、出発から到着まで計画できるロードトリップ、そしてあなたの手元に戻ってくる位置情報の履歴。',
'system_notice.release_notes.headline': 'TREKが自分でできるようになった4つのこと。',
'system_notice.release_notes.intro': '独自の場所API、最初から最後まで計画できるロードトリップ、あなたの手に戻る位置情報の履歴、そして同期される書類。',
'system_notice.release_notes.features_label': '今回の目玉',
'system_notice.release_notes.features_aside': 'ほんの一部です',
'system_notice.release_notes.feature_places_title': 'TREK Places API',
'system_notice.release_notes.feature_places_body':
'場所APIを自前で運用する、初めてのオープンソース旅行プランナーです。7,360万件の場所を毎月作り直しています。APIキーも利用上限もありません。',
'system_notice.release_notes.feature_places_body': '独自の場所APIを持つ初のオープンソース旅行プランナー。7,360万件の場所、キー不要、制限なし。',
'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_body':
'Google Timelineのセルフホスト版とも言えるDawarichを、TREKの中で読めるようになりました。TREKは読み取るだけで、それ以上のことはしません。書き戻すことは一切ありません。',
'system_notice.release_notes.feature_dawarich_body': 'Google Timelineのセルフホスト版とも言えるDawarichを、TREKの中で読めるようになりました。TREKは読み取るだけで、それ以上のことはしません。',
'system_notice.release_notes.footnote': 'ほかにも、TREKのあちこちに細かな変更がたくさん入っています。',
'system_notice.release_notes.notes_label': 'リリースノート',
'system_notice.release_notes.note_eyebrow': '開発者より',
@@ -86,5 +82,7 @@ const system_notice: TranslationStrings = {
'TREKがあなたの旅に欠かせないものになっていたら、コーヒーを一杯おごってください。次のリリースを届ける力になります。',
'system_notice.release_notes.cta_bmc': 'Buy me a coffee',
'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;
+7 -9
View File
@@ -55,20 +55,16 @@ const system_notice: TranslationStrings = {
'system_notice.pager.goto': '{n}번 공지로 이동',
'system_notice.pager.position': '공지 {current}/{total}',
'system_notice.release_notes.eyebrow': '업데이트 완료',
'system_notice.release_notes.headline': '이제 TREK이 직접 해내는 세 가지.',
'system_notice.release_notes.intro':
'자체 장소 API, 처음부터 끝까지 계획하는 로드트립, 그리고 다시 여러분의 손으로 돌아온 위치 기록.',
'system_notice.release_notes.headline': 'TREK가 이제 스스로 해내는 네 가지.',
'system_notice.release_notes.intro': '자체 장소 API, 처음부터 끝까지 계획되는 로드트립, 내 손에 있는 위치 기록, 그리고 동기화되는 문서.',
'system_notice.release_notes.features_label': '이번 릴리스의 주역',
'system_notice.release_notes.features_aside': '이게 전부는 아닙니다',
'system_notice.release_notes.feature_places_title': 'TREK Places API',
'system_notice.release_notes.feature_places_body':
'자체 장소 API를 직접 운영하는 최초의 오픈 소스 여행 플래너입니다. 7,360만 개의 장소를 매달 새로 구축합니다. 키도, 사용량 제한도 없습니다.',
'system_notice.release_notes.feature_places_body': '자체 장소 API를 갖춘 최초의 오픈소스 여행 플래너. 7,360만 개 장소, 키 없음, 할당량 없음.',
'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_body':
'Google Timeline의 자체 호스팅 대안인 Dawarich를 이제 TREK 안에서 읽을 수 있습니다. TREK은 읽기만, 오직 읽기만 합니다. 다시 기록되는 것은 아무것도 없습니다.',
'system_notice.release_notes.feature_dawarich_body': 'Google Timeline의 자체 호스팅 대안인 Dawarich를 이제 TREK 안에서 읽을 수 있습니다. TREK은 읽기만, 오직 읽기만 합니다.',
'system_notice.release_notes.footnote': '그 밖에도 TREK 곳곳에 작은 변경이 많이 담겨 있습니다.',
'system_notice.release_notes.notes_label': '릴리스 노트',
'system_notice.release_notes.note_eyebrow': '개발자의 한마디',
@@ -88,5 +84,7 @@ const system_notice: TranslationStrings = {
'TREK이 여러분의 여행에 자리를 잡았다면, 커피 한 잔으로 다음 릴리스가 계속 나올 수 있게 도와주세요.',
'system_notice.release_notes.cta_bmc': 'Buy me a coffee',
'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;
+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.',
// 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.headline': 'Drie dingen die TREK nu zelf doet.',
'system_notice.release_notes.intro':
'Een eigen API voor plaatsen, roadtrips van begin tot eind gepland en je locatiegeschiedenis weer in eigen hand.',
'system_notice.release_notes.headline': 'Vier dingen die TREK nu zelf doet.',
'system_notice.release_notes.intro': 'Een eigen plaatsen-API, roadtrips van begin tot eind gepland, je locatiegeschiedenis in eigen hand, en je documenten gesynchroniseerd.',
'system_notice.release_notes.features_label': 'De hoogtepunten',
'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_body':
'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_places_body': 'De eerste open source reisplanner met een eigen plaatsen-API. 73,6 miljoen plaatsen, geen sleutel, geen quotum.',
'system_notice.release_notes.feature_roadtrip_title': 'Roadtrip-addon',
'system_notice.release_notes.feature_roadtrip_body':
'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_roadtrip_body': 'Plant de rit zelf: route, afstand, uren en stops. Uit totdat een admin het inschakelt.',
'system_notice.release_notes.feature_dawarich_title': 'Dawarich-integratie',
'system_notice.release_notes.feature_dawarich_body':
'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.feature_dawarich_body': 'Het zelfgehoste antwoord op Google Timeline, nu rechtstreeks leesbaar in TREK. TREK leest, en alleen dat.',
'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.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.',
'system_notice.release_notes.cta_bmc': 'Buy me a coffee',
'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;
+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.',
// 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.headline': 'Trzy rzeczy, które TREK robi teraz sam.',
'system_notice.release_notes.intro':
'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.headline': 'Cztery rzeczy, które TREK robi teraz sam.',
'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.',
'system_notice.release_notes.features_label': 'Najważniejsze nowości',
'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_body':
'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_places_body': 'Pierwszy open source planer podróży z własnym API miejsc. 73,6 mln miejsc, bez klucza, bez limitu.',
'system_notice.release_notes.feature_roadtrip_title': 'Dodatek Podróż samochodowa',
'system_notice.release_notes.feature_roadtrip_body':
'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_roadtrip_body': 'Sam planuje jazdę: trasę, dystans, godziny i przystanki. Wyłączone, dopóki admin tego nie włączy.',
'system_notice.release_notes.feature_dawarich_title': 'Integracja z Dawarich',
'system_notice.release_notes.feature_dawarich_body':
'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.feature_dawarich_body': 'Samodzielnie hostowana odpowiedź na Google Timeline, teraz dostępna w TREK. TREK tylko odczytuje, nic więcej.',
'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.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.',
'system_notice.release_notes.cta_bmc': 'Buy me a coffee',
'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;
+7 -9
View File
@@ -56,20 +56,16 @@ const system_notice: TranslationStrings = {
'Обновление 3.0.14 обнаружило один или несколько конфликтов имён пользователей или адресов электронной почты, вызванных ведущими или завершающими пробелами в сохранённых значениях. Затронутые учётные записи были автоматически переименованы. Проверьте логи сервера на строки, начинающиеся с **[migration] WHITESPACE COLLISION**, чтобы определить учётные записи, требующие проверки.',
// 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.headline': 'Три вещи, которые TREK теперь делает сам.',
'system_notice.release_notes.intro':
'Собственный API мест, автопутешествия, продуманные от старта до финиша, и история перемещений, которая снова принадлежит вам.',
'system_notice.release_notes.headline': 'Четыре вещи, которые TREK теперь делает сам.',
'system_notice.release_notes.intro': 'Собственный API мест, автопутешествия от начала до конца, ваша история местоположений в ваших руках, и ваши документы в синхронизации.',
'system_notice.release_notes.features_label': 'Главные новинки',
'system_notice.release_notes.features_aside': 'И это далеко не всё',
'system_notice.release_notes.feature_places_title': 'TREK Places API',
'system_notice.release_notes.feature_places_body':
'Первый планировщик путешествий с открытым исходным кодом, у которого есть собственный API мест. 73,6 миллиона мест, база заново собирается каждый месяц. Никаких ключей, никаких квот.',
'system_notice.release_notes.feature_places_body': 'Первый планировщик путешествий с открытым кодом и собственным API мест. 73,6 миллиона мест, без ключа и квот.',
'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_body':
'Альтернатива Google Timeline на вашем собственном сервере, и теперь её данные видны прямо в TREK. TREK читает, и только читает. Обратно не записывается ничего и никогда.',
'system_notice.release_notes.feature_dawarich_body': 'Альтернатива Google Timeline на вашем собственном сервере, и теперь её данные видны прямо в TREK. TREK читает, и только читает.',
'system_notice.release_notes.footnote': 'Плюс длинный список небольших изменений во всём остальном TREK.',
'system_notice.release_notes.notes_label': 'Заметки к релизу',
'system_notice.release_notes.note_eyebrow': 'Слово от мейнтейнера',
@@ -89,5 +85,7 @@ const system_notice: TranslationStrings = {
'Если TREK заслужил место в ваших поездках, угостите меня кофе и помогите выпустить следующий релиз.',
'system_notice.release_notes.cta_bmc': 'Buy me a coffee',
'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;
+7 -9
View File
@@ -56,20 +56,16 @@ const system_notice: TranslationStrings = {
'system_notice.pager.position': 'Meddlenade {current} av {total}',
// 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.headline': 'Tre saker som TREK nu klarar på egen hand.',
'system_notice.release_notes.intro':
'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.headline': 'Fyra saker TREK nu gör på egen hand.',
'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.',
'system_notice.release_notes.features_label': 'Höjdpunkterna',
'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_body':
'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_places_body': 'Den första reseplaneraren med öppen källkod och eget plats-API. 73,6 miljoner platser, ingen nyckel, ingen kvot.',
'system_notice.release_notes.feature_roadtrip_title': 'Tillägget Bilresa',
'system_notice.release_notes.feature_roadtrip_body':
'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_roadtrip_body': 'Planerar körningen själv: rutt, sträcka, timmar och stopp. Av tills en admin slår på det.',
'system_notice.release_notes.feature_dawarich_title': 'Dawarich-integration',
'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. Ingenting skrivs någonsin tillbaka.',
'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.',
'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.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.',
'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.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;
+7 -9
View File
@@ -55,20 +55,14 @@ const system_notice: TranslationStrings = {
'system_notice.pager.goto': '{n}. bildirime git',
'system_notice.pager.position': '{total} Bildirimden {current}.',
'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_aside': 'Hepsi bu kadar değil',
'system_notice.release_notes.feature_places_title': 'TREK Places API',
'system_notice.release_notes.feature_places_body':
"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_places_body': 'Kendi yer API’sine sahip ilk açık kaynak seyahat planlayıcısı. 73,6 milyon yer, anahtar yok, kota yok.',
'system_notice.release_notes.feature_roadtrip_title': 'Yol gezisi eklentisi',
'system_notice.release_notes.feature_roadtrip_body':
'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_roadtrip_body': 'Sürüşü kendi planlar: rota, mesafe, saatler ve duraklar. Bir yönetici açana kadar kapalı.',
'system_notice.release_notes.feature_dawarich_title': 'Dawarich entegrasyonu',
'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. Geriye hiçbir zaman hiçbir şey yazılmaz.",
'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.',
'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.",
'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.',
'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.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;
+7 -9
View File
@@ -56,20 +56,16 @@ const system_notice: TranslationStrings = {
'Оновлення 3.0.14 виявило один або кілька конфліктів імен користувачів або електронних адрес, спричинених початковими або кінцевими пробілами в збережених облікових записах. Уражені облікові записи було автоматично перейменовано. Перевірте журнали сервера на рядки, що починаються з **[migration] WHITESPACE COLLISION**, щоб визначити, які облікові записи потребують перевірки.',
// 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.headline': 'Три речі, які TREK тепер робить сам.',
'system_notice.release_notes.intro':
'Власний API місць, автоподорожі, сплановані від початку до кінця, і ваша історія місцезнаходжень знову у ваших руках.',
'system_notice.release_notes.headline': 'Чотири речі, які TREK тепер робить сам.',
'system_notice.release_notes.intro': 'Власний API місць, автоподорожі від початку до кінця, ваша історія розташувань у ваших руках, і ваші документи в синхронізації.',
'system_notice.release_notes.features_label': 'Головні новинки',
'system_notice.release_notes.features_aside': 'І це далеко не все',
'system_notice.release_notes.feature_places_title': 'TREK Places API',
'system_notice.release_notes.feature_places_body':
'Перший планувальник подорожей з відкритим кодом, який має власний API місць. 73,6 мільйона місць, щомісяця зібраних наново. Без ключа, без квот.',
'system_notice.release_notes.feature_places_body': 'Перший планувальник подорожей з відкритим кодом і власним API місць. 73,6 мільйона місць, без ключа й квот.',
'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_body':
'Self-hosted альтернатива Google Timeline, яку тепер можна читати прямо в TREK. TREK читає, і тільки читає. Назад нічого ніколи не записується.',
'system_notice.release_notes.feature_dawarich_body': 'Self-hosted альтернатива Google Timeline, яку тепер можна читати прямо в TREK. TREK читає, і тільки читає.',
'system_notice.release_notes.footnote': 'А також довгий список дрібніших змін по всьому TREK.',
'system_notice.release_notes.notes_label': 'Нотатки до релізу',
'system_notice.release_notes.note_eyebrow': 'Слово від мейнтейнера',
@@ -89,5 +85,7 @@ const system_notice: TranslationStrings = {
'Якщо TREK заслужив місце у ваших подорожах, пригостіть мене кавою і допоможіть наблизити наступний реліз.',
'system_notice.release_notes.cta_bmc': 'Buy me a coffee',
'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;
+7 -9
View File
@@ -57,20 +57,16 @@ const system_notice: TranslationStrings = {
'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.
'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.intro':
'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.headline': 'Bốn điều TREK giờ tự làm được.',
'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ộ.',
'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.feature_places_title': 'TREK Places API',
'system_notice.release_notes.feature_places_body':
'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_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.',
'system_notice.release_notes.feature_roadtrip_title': 'Tiện ích Chuyến đi đường bộ',
'system_notice.release_notes.feature_roadtrip_body':
'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_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.',
'system_notice.release_notes.feature_dawarich_title': 'Tích hợp Dawarich',
'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. Không có gì bị ghi ngược lại.',
'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.',
'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.',
'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.',
'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.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;
+7 -9
View File
@@ -55,20 +55,16 @@ const system_notice: TranslationStrings = {
'3.0.14 版本升級偵測到一個或多個由儲存帳戶中前後空白字元引發的使用者名稱或電子郵件衝突。受影響的帳戶已自動重新命名。請檢查伺服器日誌中以 **[migration] WHITESPACE COLLISION** 開頭的行,以確認哪些帳戶需要審查。',
// 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.headline': '三件事,TREK 現在自己就能做到。',
'system_notice.release_notes.intro':
'自行架設的地點 API,從出發到抵達全程規劃的公路旅行,還有重新回到你手中的位置紀錄。',
'system_notice.release_notes.headline': 'TREK 現在能自己完成的四件事。',
'system_notice.release_notes.intro': '自有的地點 API、從頭到尾規劃的公路旅行、掌握在你手中的位置記錄,以及保持同步的文件。',
'system_notice.release_notes.features_label': '本次重頭戲',
'system_notice.release_notes.features_aside': '遠不止這些',
'system_notice.release_notes.feature_places_title': 'TREK Places API',
'system_notice.release_notes.feature_places_body':
'第一個自行架設地點 API 的開源旅遊規劃器。收錄 7360 萬個地點,每月重新建置。不需要金鑰,也沒有配額限制。',
'system_notice.release_notes.feature_places_body': '首個擁有自有地點 API 的開源旅行規劃器。7360 萬個地點,無需金鑰,沒有配額。',
'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_body':
'Google Timeline 的自架替代方案,現在可以直接在 TREK 裡檢視。TREK 只讀取,也僅止於讀取,絕不會寫回任何資料。',
'system_notice.release_notes.feature_dawarich_body': 'Google Timeline 的自架替代方案,現在可以直接在 TREK 裡檢視。TREK 只讀取,也僅止於讀取。',
'system_notice.release_notes.footnote': '除此之外,TREK 的其他部分還有一長串小改動。',
'system_notice.release_notes.notes_label': '版本說明',
'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_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;
+7 -8
View File
@@ -54,19 +54,16 @@ const system_notice: TranslationStrings = {
'3.0.14 版本升级检测到一个或多个由存储账户中首尾空白字符引发的用户名或邮箱冲突。受影响的账户已自动重命名。请检查服务器日志中以 **[migration] WHITESPACE COLLISION** 开头的行,以确认哪些账户需要审查。',
// 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.headline': '三件事,TREK 现在自己就能做到。',
'system_notice.release_notes.intro': '自建的地点 API,从出发到抵达全程规划的公路旅行,还有重新回到你手中的位置历史。',
'system_notice.release_notes.headline': 'TREK 现在能自己完成的四件事。',
'system_notice.release_notes.intro': '自有的地点 API、从头到尾规划的公路旅行、掌握在你手中的位置记录,以及保持同步的文档。',
'system_notice.release_notes.features_label': '本次重头戏',
'system_notice.release_notes.features_aside': '远不止这些',
'system_notice.release_notes.feature_places_title': 'TREK Places API',
'system_notice.release_notes.feature_places_body':
'第一个自建地点 API 的开源旅行规划器。收录 7360 万个地点,每月重新构建。无需密钥,不限配额。',
'system_notice.release_notes.feature_places_body': '首个拥有自有地点 API 的开源旅行规划器。7360 万个地点,无需密钥,没有配额。',
'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_body':
'Google Timeline 的自托管替代方案,现在可以直接在 TREK 里查看。TREK 只读取,仅此而已,绝不会回写任何数据。',
'system_notice.release_notes.feature_dawarich_body': 'Google Timeline 的自托管替代方案,现在可以直接在 TREK 里查看。TREK 只读取,仅此而已。',
'system_notice.release_notes.footnote': '除此之外,TREK 的其他部分还有一长串小改动。',
'system_notice.release_notes.notes_label': '更新说明',
'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_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;
@@ -69,6 +69,7 @@ describe('systemNoticeDtoSchema', () => {
features: [
{ iconName: 'Database', titleKey: 'f1t', bodyKey: 'f1b' },
{ iconName: 'Route', visual: 'roadtrip', titleKey: 'f2t', bodyKey: 'f2b' },
{ iconName: 'FolderSync', visual: 'docsync', layout: 'wide', titleKey: 'f3t', bodyKey: 'f3b' },
],
note: {
eyebrowKey: 'ne',
@@ -45,10 +45,13 @@ const noticeCtaSchema = z.discriminatedUnion('kind', [
/**
* 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.
* `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({
iconName: z.string(),
visual: z.string().optional(),
layout: z.enum(['card', 'wide']).optional(),
titleKey: z.string(),
bodyKey: z.string(),
});