From defa9982175fc6aad0db54771ddf583eca20cc93 Mon Sep 17 00:00:00 2001 From: Tim Haasdyk Date: Mon, 6 Oct 2025 15:32:49 +0200 Subject: [PATCH 01/14] Adapt sync message so it's more balanced --- frontend/viewer/src/project/SyncDialog.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/viewer/src/project/SyncDialog.svelte b/frontend/viewer/src/project/SyncDialog.svelte index b3b7f906bb..1cec8b91b7 100644 --- a/frontend/viewer/src/project/SyncDialog.svelte +++ b/frontend/viewer/src/project/SyncDialog.svelte @@ -62,7 +62,7 @@ const syncPromise = service.triggerFwHeadlessSync(); AppNotification.promise(syncPromise, { - loading: $t`Synchronizing FieldWorks Lite with FieldWorks...`, + loading: $t`Synchronizing FieldWorks Lite and FieldWorks...`, success: (result) => { const fwdataChangesText = $plural(result.syncResult?.fwdataChanges ?? 0, {one: '# change', other: '# changes'}); const crdtChangesText = $plural(result.syncResult?.crdtChanges ?? 0, {one: '# change', other: '# changes'}); From 6f88154c24199cd863b6c0d5599cc355cacfd393 Mon Sep 17 00:00:00 2001 From: Tim Haasdyk Date: Tue, 7 Oct 2025 17:45:39 +0200 Subject: [PATCH 02/14] Add pulse animations for loading sync-state values --- frontend/viewer/src/app.postcss | 4 ++++ .../lib/components/ui/format/format-relative-date.svelte | 6 ++++-- .../viewer/src/project/sync/FwLiteToFwMergeDetails.svelte | 7 +++++-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/frontend/viewer/src/app.postcss b/frontend/viewer/src/app.postcss index 1b3ecdb44b..351c3f8759 100644 --- a/frontend/viewer/src/app.postcss +++ b/frontend/viewer/src/app.postcss @@ -26,6 +26,10 @@ .app { @apply bg-background text-foreground; } + + .loading-text { + @apply bg-foreground/15 animate-pulse rounded-md text-transparent; + } } .font-inter { diff --git a/frontend/viewer/src/lib/components/ui/format/format-relative-date.svelte b/frontend/viewer/src/lib/components/ui/format/format-relative-date.svelte index 0ed22fdc19..2e1fbf9ec4 100644 --- a/frontend/viewer/src/lib/components/ui/format/format-relative-date.svelte +++ b/frontend/viewer/src/lib/components/ui/format/format-relative-date.svelte @@ -14,6 +14,7 @@ showActualDate?: boolean; actualDateOptions?: Intl.DateTimeFormatOptions; maxUnits?: number; + loading?: boolean; }; const { @@ -24,6 +25,7 @@ showActualDate = false, actualDateOptions, maxUnits = 2, + loading, ...restProps }: Props = $props(); @@ -60,7 +62,7 @@ {#if showActualDate && actualFormattedDate} - + @@ -73,5 +75,5 @@ {:else} - + {/if} diff --git a/frontend/viewer/src/project/sync/FwLiteToFwMergeDetails.svelte b/frontend/viewer/src/project/sync/FwLiteToFwMergeDetails.svelte index 5c286e48fb..5cd2b96614 100644 --- a/frontend/viewer/src/project/sync/FwLiteToFwMergeDetails.svelte +++ b/frontend/viewer/src/project/sync/FwLiteToFwMergeDetails.svelte @@ -37,6 +37,7 @@ const lastFwLiteSyncDate = $derived(remoteStatus?.lastCrdtCommitDate ? new Date(remoteStatus.lastCrdtCommitDate) : undefined); let lexboxToFlexCount = $derived(remoteStatus?.pendingCrdtChanges ?? '?'); let flexToLexboxCount = $derived(remoteStatus?.pendingMercurialChanges ?? '?'); + let loading = $derived(remoteStatus === undefined); function onSyncLexboxToFlex() { loadingSyncLexboxToFlex = true; @@ -55,6 +56,7 @@ @@ -68,7 +70,7 @@ status={{loggedIn: false, server: server}} statusChange={s => onLoginStatusChange(s)}/> {:else} - {$t`${flexToLexboxCount} Commits`} + {$t`${flexToLexboxCount} Commits`} - - {$t`${lexboxToFlexCount} Commits`} - {/if} +
+ {#if syncStatus === SyncStatus.Offline} + + {:else if syncStatus === SyncStatus.NotLoggedIn && server} + onLoginStatusChange(s)} + /> + {:else} + + + + {countToMessage(hgToCrdtCount)} + + + + {$plural(hgToCrdtCount, { + one: '# new FieldWorks Classic commit', + other: '# new FieldWorks Classic commits', + })} +

+ {$t`The number of FieldWorks Classic commits will not necessarily match the number of changes shown in the sync result message.`} +

+ + + + {$t`Why is that?`} + + +
+ + {$t`One FieldWorks Classic commit may consist of changes to multiple entries or fields. On the other hand, a commit may only affect data that is not synced to FieldWorks Lite.`} + + + {$t`Changes can also be the result of additional fields being added to new versions of FieldWorks Lite.`} + +
+
+
+
+
+
+
+ + + + + + + + {countToMessage(crdtToHgCount)} + + + + {$plural(crdtToHgCount, { + one: '# new FieldWorks Lite commit', + other: '# new FieldWorks Lite commits', + })} +

+ {$t`The number of FieldWorks Lite commits will not necessarily match the number of changes shown in the sync result message.`} +

+ + + + {$t`Why is that?`} + + +
+ + {$t`Changing the same field twice (e.g.) can result in two commits, but only one change that needs to be applied to FieldWorks Classic. Commits can also consist of multiple changes.`} + +
+
+
+
+
+
+
+ {/if}
- -

FieldWorks Classic

+ +

FieldWorks Classic

+ defaultValue={remoteStatus?.status === ProjectSyncStatusEnum.NeverSynced ? $t`Never` : $t`Unknown`} + />
diff --git a/frontend/viewer/src/project/sync/SyncStatusPrimitive.svelte b/frontend/viewer/src/project/sync/SyncStatusPrimitive.svelte index ec6ffec2cd..e4dd1c6cd2 100644 --- a/frontend/viewer/src/project/sync/SyncStatusPrimitive.svelte +++ b/frontend/viewer/src/project/sync/SyncStatusPrimitive.svelte @@ -12,6 +12,7 @@ import {t, T} from 'svelte-i18n-lingui'; import SyncArrow from './SyncArrow.svelte'; import FwLiteToFwMergeDetails from './FwLiteToFwMergeDetails.svelte'; + import {cn} from '$lib/utils'; interface Props { syncStatus: SyncStatus; @@ -36,12 +37,9 @@ projectCode, latestSyncedCommitDate, canSyncLexboxToFlex, - syncLexboxToFlex = async () => { - }, - syncLexboxToLocal = async () => { - }, - onLoginStatusChange = () => { - }, + syncLexboxToFlex = async () => {}, + syncLexboxToLocal = async () => {}, + onLoginStatusChange = () => {}, }: Props = $props(); @@ -98,8 +96,8 @@
- {remoteToLocalCount ?? '?'} - + {remoteToLocalCount ?? '?'} +
{#if syncStatus === SyncStatus.Success} {#if remoteToLocalCount === 0 && localToRemoteCount === 0} @@ -138,8 +136,8 @@
{$t`Error getting sync status.`}
{/if}
- - {localToRemoteCount ?? '?'} + + {localToRemoteCount ?? '?'}
diff --git a/frontend/viewer/tailwind.config.ts b/frontend/viewer/tailwind.config.ts index 6b195e45ff..df75283bb3 100644 --- a/frontend/viewer/tailwind.config.ts +++ b/frontend/viewer/tailwind.config.ts @@ -48,6 +48,7 @@ export default { extend: { screens: { 'md': `${MOBILE_BREAKPOINT}px`, + 'max-xs': {'max': '400px'}, 'max-sm': {'max': '639px'}, 'max-md': {'max': '767px'}, From c9f123529981af48942abafded960957869ee6ff Mon Sep 17 00:00:00 2001 From: Tim Haasdyk Date: Fri, 10 Oct 2025 15:34:19 +0200 Subject: [PATCH 09/14] Prevent ms from being used in sync dialog --- .../src/lib/components/ui/format/format-duration.ts | 7 ++++--- .../ui/format/format-relative-date-fn.svelte.ts | 9 +++++---- .../lib/components/ui/format/format-relative-date.svelte | 5 ++++- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/frontend/viewer/src/lib/components/ui/format/format-duration.ts b/frontend/viewer/src/lib/components/ui/format/format-duration.ts index c449476795..41257abc4e 100644 --- a/frontend/viewer/src/lib/components/ui/format/format-duration.ts +++ b/frontend/viewer/src/lib/components/ui/format/format-duration.ts @@ -5,6 +5,7 @@ import {locale} from 'svelte-i18n-lingui'; const currentLocale = fromStore(locale); type Duration = Pick; +export type SmallestUnit = 'hours' | 'minutes' | 'seconds' | 'milliseconds'; function limitDurationUnits(duration: Duration, maxUnits: number): Duration { const units: (keyof Duration)[] = ['days', 'hours', 'minutes', 'seconds', 'milliseconds']; @@ -52,17 +53,17 @@ export function formatDigitalDuration(value: Duration) { }); } -export function formatDuration(value: Duration, smallestUnit?: 'hours' | 'minutes' | 'seconds' | 'milliseconds', options?: Intl.DurationFormatOptions, maxUnits?: number) { +export function formatDuration(value: Duration, smallestUnit?: SmallestUnit, options?: Intl.DurationFormatOptions, maxUnits?: number) { const formatter = new Intl.DurationFormat(currentLocale.current, options);//has been polyfilled in main.ts const normalized = normalizeDuration(value, smallestUnit); const limitedDuration = maxUnits ? limitDurationUnits(normalized, maxUnits) : normalized; return formatter.format(limitedDuration); } -export function normalizeDuration(value: Duration, smallestUnit?: 'hours' | 'minutes' | 'seconds' | 'milliseconds'): Duration +export function normalizeDuration(value: Duration, smallestUnit?: SmallestUnit): Duration export function normalizeDuration(value: Duration, smallestUnit: 'seconds'): Omit export function normalizeDuration(value: Duration): Duration -export function normalizeDuration(value: Duration, smallestUnit?: 'hours' | 'minutes' | 'seconds' | 'milliseconds'): Duration { +export function normalizeDuration(value: Duration, smallestUnit?: SmallestUnit): Duration { const msPerHour = 3_600_000; const msPerMinute = 60_000; const msPerSecond = 1_000; diff --git a/frontend/viewer/src/lib/components/ui/format/format-relative-date-fn.svelte.ts b/frontend/viewer/src/lib/components/ui/format/format-relative-date-fn.svelte.ts index 2fcf74c893..42289ac37b 100644 --- a/frontend/viewer/src/lib/components/ui/format/format-relative-date-fn.svelte.ts +++ b/frontend/viewer/src/lib/components/ui/format/format-relative-date-fn.svelte.ts @@ -1,14 +1,15 @@ -import {formatDuration} from './format-duration'; -import {locale} from 'svelte-i18n-lingui'; +import {SvelteDate} from 'svelte/reactivity'; +import {formatDuration, type SmallestUnit} from './format-duration'; import {fromStore} from 'svelte/store'; import {gt} from 'svelte-i18n-lingui'; -import {SvelteDate} from 'svelte/reactivity'; +import {locale} from 'svelte-i18n-lingui'; const currentLocale = fromStore(locale); type Config = { defaultValue: string, now: Date, maxUnits?: number, + smallestUnit?: SmallestUnit, } export function formatRelativeDate(value: Date | string | undefined | null, options?: Intl.DurationFormatOptions, config: Config = {defaultValue: '', now: new SvelteDate()}): string { @@ -20,7 +21,7 @@ export function formatRelativeDate(value: Date | string | undefined | null, opti const isPast = diffMs < 0; const absDiffMs = Math.abs(diffMs); - const duration = formatDuration({milliseconds: absDiffMs}, undefined, options, config.maxUnits); + const duration = formatDuration({milliseconds: absDiffMs}, config.smallestUnit, options, config.maxUnits); if (!duration) return config.defaultValue; return isPast ? gt`${duration} ago` : gt`in ${duration}`; diff --git a/frontend/viewer/src/lib/components/ui/format/format-relative-date.svelte b/frontend/viewer/src/lib/components/ui/format/format-relative-date.svelte index 73df7d69f4..b12e8b34d2 100644 --- a/frontend/viewer/src/lib/components/ui/format/format-relative-date.svelte +++ b/frontend/viewer/src/lib/components/ui/format/format-relative-date.svelte @@ -5,6 +5,7 @@ import {SvelteDate} from 'svelte/reactivity'; import Icon from '../icon/icon.svelte'; import * as Popover from '../popover'; + import type {SmallestUnit} from './format-duration'; type Props = HTMLAttributes & { date: Date | string | undefined | null; @@ -14,6 +15,7 @@ showActualDate?: boolean; actualDateOptions?: Intl.DateTimeFormatOptions; maxUnits?: number; + smallestUnit?: SmallestUnit, loading?: boolean; }; @@ -25,6 +27,7 @@ showActualDate = false, actualDateOptions, maxUnits = 2, + smallestUnit = 'seconds', loading, ...restProps }: Props = $props(); @@ -52,7 +55,7 @@ }); const formattedRelativeDate = $derived.by(() => { - return formatRelativeDate(date, options, {defaultValue: defaultValue || '', now, maxUnits}); + return formatRelativeDate(date, options, {defaultValue: defaultValue || '', now, maxUnits, smallestUnit}); }); const actualFormattedDate = $derived.by(() => { From 3c93511b604bffb151c3cc3858c25410e6ce9a65 Mon Sep 17 00:00:00 2001 From: Tim Haasdyk Date: Fri, 10 Oct 2025 15:35:24 +0200 Subject: [PATCH 10/14] i18n:extract --- frontend/viewer/src/locales/en.po | 50 ++++++++++++++++++++++++++----- frontend/viewer/src/locales/es.po | 48 +++++++++++++++++++++++++---- frontend/viewer/src/locales/fr.po | 48 +++++++++++++++++++++++++---- frontend/viewer/src/locales/id.po | 48 +++++++++++++++++++++++++---- frontend/viewer/src/locales/ko.po | 48 +++++++++++++++++++++++++---- frontend/viewer/src/locales/ms.po | 48 +++++++++++++++++++++++++---- frontend/viewer/src/locales/sw.po | 48 +++++++++++++++++++++++++---- 7 files changed, 295 insertions(+), 43 deletions(-) diff --git a/frontend/viewer/src/locales/en.po b/frontend/viewer/src/locales/en.po index d111db62f2..e8d93a2cfc 100644 --- a/frontend/viewer/src/locales/en.po +++ b/frontend/viewer/src/locales/en.po @@ -36,11 +36,6 @@ msgstr "{0} (FieldWorks)" msgid "{0} ago" msgstr "{0} ago" -#: src/project/sync/FwLiteToFwMergeDetails.svelte -#: src/project/sync/FwLiteToFwMergeDetails.svelte -msgid "{0} Commits" -msgstr "{0} Commits" - #: src/lib/components/audio/audio-editor.svelte msgid "{0} MB" msgstr "{0} MB" @@ -54,6 +49,14 @@ msgstr "{0} Server" msgid "{num, plural, one {# change} other {# changes}}" msgstr "{num, plural, one {# change} other {# changes}}" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "{num, plural, one {# new FieldWorks Classic commit} other {# new FieldWorks Classic commits}}" +msgstr "{num, plural, one {# new FieldWorks Classic commit} other {# new FieldWorks Classic commits}}" + +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "{num, plural, one {# new FieldWorks Lite commit} other {# new FieldWorks Lite commits}}" +msgstr "{num, plural, one {# new FieldWorks Lite commit} other {# new FieldWorks Lite commits}}" + #: src/lib/history/HistoryView.svelte #: src/lib/activity/ActivityView.svelte msgid "# ago" @@ -186,6 +189,14 @@ msgstr "Browse" msgid "Cancel" msgstr "Cancel" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "Changes can also be the result of additional fields being added to new versions of FieldWorks Lite." +msgstr "Changes can also be the result of additional fields being added to new versions of FieldWorks Lite." + +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "Changing the same field twice (e.g.) can result in two commits, but only one change that needs to be applied to FieldWorks Classic. Commits can also consist of multiple changes." +msgstr "Changing the same field twice (e.g.) can result in two commits, but only one change that needs to be applied to FieldWorks Classic. Commits can also consist of multiple changes." + #: src/lib/ThemePicker.svelte msgid "Choose theme" msgstr "Choose theme" @@ -734,6 +745,10 @@ msgstr "Never" msgid "New" msgstr "New" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "New data" +msgstr "New data" + #: src/project/PrimaryNewEntryButton.svelte #: src/lib/entry-editor/NewEntryDialog.svelte msgid "New Entry" @@ -778,6 +793,10 @@ msgstr "No history found" msgid "No items found" msgstr "No items found" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "No new data" +msgstr "No new data" + #: src/project/sync/SyncStatusPrimitive.svelte msgid "No server" msgstr "No server" @@ -828,6 +847,10 @@ msgstr "Offline" msgid "Offline, unable to download" msgstr "Offline, unable to download" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "One FieldWorks Classic commit may consist of changes to multiple entries or fields. On the other hand, a commit may only affect data that is not synced to FieldWorks Lite." +msgstr "One FieldWorks Classic commit may consist of changes to multiple entries or fields. On the other hand, a commit may only affect data that is not synced to FieldWorks Lite." + #: src/home/Server.svelte msgid "Open" msgstr "Open" @@ -1050,8 +1073,8 @@ msgid "Sync Changes" msgstr "Sync Changes" #: src/project/SyncDialog.svelte -msgid "Sync complete. {0} were applied to FieldWorks. {1} were applied to FieldWorks Lite." -msgstr "Sync complete. {0} were applied to FieldWorks. {1} were applied to FieldWorks Lite." +msgid "Sync complete. {0} were applied to FieldWorks Classic. {1} were applied to FieldWorks Lite." +msgstr "Sync complete. {0} were applied to FieldWorks Classic. {1} were applied to FieldWorks Lite." #: src/project/ProjectSidebar.svelte msgid "Synced" @@ -1097,6 +1120,14 @@ msgstr "Tasks" msgid "Tell us about a bug or issue you’ve encountered." msgstr "Tell us about a bug or issue you’ve encountered." +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "The number of FieldWorks Classic commits will not necessarily match the number of changes shown in the sync result message." +msgstr "The number of FieldWorks Classic commits will not necessarily match the number of changes shown in the sync result message." + +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "The number of FieldWorks Lite commits will not necessarily match the number of changes shown in the sync result message." +msgstr "The number of FieldWorks Lite commits will not necessarily match the number of changes shown in the sync result message." + #: src/project/tasks/TaskView.svelte msgid "The task you are looking for does not exist." msgstr "The task you are looking for does not exist." @@ -1211,6 +1242,11 @@ msgstr "View Configuration" msgid "Where are my projects?" msgstr "Where are my projects?" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "Why is that?" +msgstr "Why is that?" + #: src/project/browse/SearchFilter.svelte #: src/project/browse/EntryMenu.svelte #: src/lib/entry-editor/EntryOrSensePicker.svelte diff --git a/frontend/viewer/src/locales/es.po b/frontend/viewer/src/locales/es.po index 2a588f3764..1771c9572b 100644 --- a/frontend/viewer/src/locales/es.po +++ b/frontend/viewer/src/locales/es.po @@ -41,11 +41,6 @@ msgstr "{0} (FieldWorks)" msgid "{0} ago" msgstr "{0} hace" -#: src/project/sync/FwLiteToFwMergeDetails.svelte -#: src/project/sync/FwLiteToFwMergeDetails.svelte -msgid "{0} Commits" -msgstr "{0} Comandos" - #: src/lib/components/audio/audio-editor.svelte msgid "{0} MB" msgstr "{0} MB" @@ -59,6 +54,14 @@ msgstr "{0} Servidor" msgid "{num, plural, one {# change} other {# changes}}" msgstr "{num, plural, one {# cambio} other {# cambios}}" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "{num, plural, one {# new FieldWorks Classic commit} other {# new FieldWorks Classic commits}}" +msgstr "" + +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "{num, plural, one {# new FieldWorks Lite commit} other {# new FieldWorks Lite commits}}" +msgstr "" + #: src/lib/history/HistoryView.svelte #: src/lib/activity/ActivityView.svelte msgid "# ago" @@ -191,6 +194,14 @@ msgstr "Visite" msgid "Cancel" msgstr "Cancelar" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "Changes can also be the result of additional fields being added to new versions of FieldWorks Lite." +msgstr "" + +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "Changing the same field twice (e.g.) can result in two commits, but only one change that needs to be applied to FieldWorks Classic. Commits can also consist of multiple changes." +msgstr "" + #: src/lib/ThemePicker.svelte msgid "Choose theme" msgstr "" @@ -739,6 +750,10 @@ msgstr "Nunca" msgid "New" msgstr "Nuevo" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "New data" +msgstr "" + #: src/project/PrimaryNewEntryButton.svelte #: src/lib/entry-editor/NewEntryDialog.svelte msgid "New Entry" @@ -783,6 +798,10 @@ msgstr "No se han encontrado antecedentes" msgid "No items found" msgstr "No se han encontrado artículos" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "No new data" +msgstr "" + #: src/project/sync/SyncStatusPrimitive.svelte msgid "No server" msgstr "" @@ -833,6 +852,10 @@ msgstr "Fuera de línea" msgid "Offline, unable to download" msgstr "Desconectado, no se puede descargar" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "One FieldWorks Classic commit may consist of changes to multiple entries or fields. On the other hand, a commit may only affect data that is not synced to FieldWorks Lite." +msgstr "" + #: src/home/Server.svelte msgid "Open" msgstr "Abrir" @@ -1055,7 +1078,7 @@ msgid "Sync Changes" msgstr "Sincronizar Cambios" #: src/project/SyncDialog.svelte -msgid "Sync complete. {0} were applied to FieldWorks. {1} were applied to FieldWorks Lite." +msgid "Sync complete. {0} were applied to FieldWorks Classic. {1} were applied to FieldWorks Lite." msgstr "" #: src/project/ProjectSidebar.svelte @@ -1102,6 +1125,14 @@ msgstr "Tareas" msgid "Tell us about a bug or issue you’ve encountered." msgstr "" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "The number of FieldWorks Classic commits will not necessarily match the number of changes shown in the sync result message." +msgstr "" + +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "The number of FieldWorks Lite commits will not necessarily match the number of changes shown in the sync result message." +msgstr "" + #: src/project/tasks/TaskView.svelte msgid "The task you are looking for does not exist." msgstr "La tarea que buscas no existe." @@ -1216,6 +1247,11 @@ msgstr "Ver configuración" msgid "Where are my projects?" msgstr "¿Dónde están mis proyectos?" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "Why is that?" +msgstr "" + #: src/project/browse/SearchFilter.svelte #: src/project/browse/EntryMenu.svelte #: src/lib/entry-editor/EntryOrSensePicker.svelte diff --git a/frontend/viewer/src/locales/fr.po b/frontend/viewer/src/locales/fr.po index 6539a29cd1..d79ef49e30 100644 --- a/frontend/viewer/src/locales/fr.po +++ b/frontend/viewer/src/locales/fr.po @@ -41,11 +41,6 @@ msgstr "{0} (FieldWorks)" msgid "{0} ago" msgstr "il y a {0}" -#: src/project/sync/FwLiteToFwMergeDetails.svelte -#: src/project/sync/FwLiteToFwMergeDetails.svelte -msgid "{0} Commits" -msgstr "Commits {0}" - #: src/lib/components/audio/audio-editor.svelte msgid "{0} MB" msgstr "{0} MB" @@ -59,6 +54,14 @@ msgstr "{0} Serveur" msgid "{num, plural, one {# change} other {# changes}}" msgstr "{num, plural, one {# changement} other {# changements}}" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "{num, plural, one {# new FieldWorks Classic commit} other {# new FieldWorks Classic commits}}" +msgstr "" + +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "{num, plural, one {# new FieldWorks Lite commit} other {# new FieldWorks Lite commits}}" +msgstr "" + #: src/lib/history/HistoryView.svelte #: src/lib/activity/ActivityView.svelte msgid "# ago" @@ -191,6 +194,14 @@ msgstr "Parcourir" msgid "Cancel" msgstr "Annuler" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "Changes can also be the result of additional fields being added to new versions of FieldWorks Lite." +msgstr "" + +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "Changing the same field twice (e.g.) can result in two commits, but only one change that needs to be applied to FieldWorks Classic. Commits can also consist of multiple changes." +msgstr "" + #: src/lib/ThemePicker.svelte msgid "Choose theme" msgstr "" @@ -739,6 +750,10 @@ msgstr "Jamais" msgid "New" msgstr "Nouveau" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "New data" +msgstr "" + #: src/project/PrimaryNewEntryButton.svelte #: src/lib/entry-editor/NewEntryDialog.svelte msgid "New Entry" @@ -783,6 +798,10 @@ msgstr "Aucun antécédent n'a été trouvé" msgid "No items found" msgstr "Aucun élément trouvé" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "No new data" +msgstr "" + #: src/project/sync/SyncStatusPrimitive.svelte msgid "No server" msgstr "" @@ -833,6 +852,10 @@ msgstr "Hors ligne" msgid "Offline, unable to download" msgstr "Hors ligne, impossible de télécharger" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "One FieldWorks Classic commit may consist of changes to multiple entries or fields. On the other hand, a commit may only affect data that is not synced to FieldWorks Lite." +msgstr "" + #: src/home/Server.svelte msgid "Open" msgstr "Ouvert" @@ -1055,7 +1078,7 @@ msgid "Sync Changes" msgstr "Synchroniser les modifications" #: src/project/SyncDialog.svelte -msgid "Sync complete. {0} were applied to FieldWorks. {1} were applied to FieldWorks Lite." +msgid "Sync complete. {0} were applied to FieldWorks Classic. {1} were applied to FieldWorks Lite." msgstr "" #: src/project/ProjectSidebar.svelte @@ -1102,6 +1125,14 @@ msgstr "Tâches" msgid "Tell us about a bug or issue you’ve encountered." msgstr "" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "The number of FieldWorks Classic commits will not necessarily match the number of changes shown in the sync result message." +msgstr "" + +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "The number of FieldWorks Lite commits will not necessarily match the number of changes shown in the sync result message." +msgstr "" + #: src/project/tasks/TaskView.svelte msgid "The task you are looking for does not exist." msgstr "La tâche que vous cherchez n'existe pas." @@ -1216,6 +1247,11 @@ msgstr "Voir la configuration" msgid "Where are my projects?" msgstr "Où sont mes projets ?" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "Why is that?" +msgstr "" + #: src/project/browse/SearchFilter.svelte #: src/project/browse/EntryMenu.svelte #: src/lib/entry-editor/EntryOrSensePicker.svelte diff --git a/frontend/viewer/src/locales/id.po b/frontend/viewer/src/locales/id.po index 4982521802..b3a58c6ce2 100644 --- a/frontend/viewer/src/locales/id.po +++ b/frontend/viewer/src/locales/id.po @@ -41,11 +41,6 @@ msgstr "{0} (FieldWorks)" msgid "{0} ago" msgstr "{0} yang lalu" -#: src/project/sync/FwLiteToFwMergeDetails.svelte -#: src/project/sync/FwLiteToFwMergeDetails.svelte -msgid "{0} Commits" -msgstr "{0} Komitmen" - #: src/lib/components/audio/audio-editor.svelte msgid "{0} MB" msgstr "{0} MB" @@ -59,6 +54,14 @@ msgstr "{0} Server" msgid "{num, plural, one {# change} other {# changes}}" msgstr "{num, plural, other {# perubahan}}" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "{num, plural, one {# new FieldWorks Classic commit} other {# new FieldWorks Classic commits}}" +msgstr "" + +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "{num, plural, one {# new FieldWorks Lite commit} other {# new FieldWorks Lite commits}}" +msgstr "" + #: src/lib/history/HistoryView.svelte #: src/lib/activity/ActivityView.svelte msgid "# ago" @@ -191,6 +194,14 @@ msgstr "Jelajahi" msgid "Cancel" msgstr "Batal" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "Changes can also be the result of additional fields being added to new versions of FieldWorks Lite." +msgstr "" + +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "Changing the same field twice (e.g.) can result in two commits, but only one change that needs to be applied to FieldWorks Classic. Commits can also consist of multiple changes." +msgstr "" + #: src/lib/ThemePicker.svelte msgid "Choose theme" msgstr "" @@ -739,6 +750,10 @@ msgstr "Tidak pernah." msgid "New" msgstr "Baru" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "New data" +msgstr "" + #: src/project/PrimaryNewEntryButton.svelte #: src/lib/entry-editor/NewEntryDialog.svelte msgid "New Entry" @@ -783,6 +798,10 @@ msgstr "Tidak ditemukan riwayat" msgid "No items found" msgstr "Tidak ada barang yang ditemukan" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "No new data" +msgstr "" + #: src/project/sync/SyncStatusPrimitive.svelte msgid "No server" msgstr "" @@ -833,6 +852,10 @@ msgstr "Offline" msgid "Offline, unable to download" msgstr "Offline, tidak dapat mengunduh" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "One FieldWorks Classic commit may consist of changes to multiple entries or fields. On the other hand, a commit may only affect data that is not synced to FieldWorks Lite." +msgstr "" + #: src/home/Server.svelte msgid "Open" msgstr "Buka" @@ -1055,7 +1078,7 @@ msgid "Sync Changes" msgstr "Perubahan Sinkronisasi" #: src/project/SyncDialog.svelte -msgid "Sync complete. {0} were applied to FieldWorks. {1} were applied to FieldWorks Lite." +msgid "Sync complete. {0} were applied to FieldWorks Classic. {1} were applied to FieldWorks Lite." msgstr "" #: src/project/ProjectSidebar.svelte @@ -1102,6 +1125,14 @@ msgstr "Tugas" msgid "Tell us about a bug or issue you’ve encountered." msgstr "" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "The number of FieldWorks Classic commits will not necessarily match the number of changes shown in the sync result message." +msgstr "" + +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "The number of FieldWorks Lite commits will not necessarily match the number of changes shown in the sync result message." +msgstr "" + #: src/project/tasks/TaskView.svelte msgid "The task you are looking for does not exist." msgstr "Tugas yang Anda cari tidak ada." @@ -1216,6 +1247,11 @@ msgstr "Lihat Konfigurasi" msgid "Where are my projects?" msgstr "Di mana proyek saya?" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "Why is that?" +msgstr "" + #: src/project/browse/SearchFilter.svelte #: src/project/browse/EntryMenu.svelte #: src/lib/entry-editor/EntryOrSensePicker.svelte diff --git a/frontend/viewer/src/locales/ko.po b/frontend/viewer/src/locales/ko.po index 243f9bd340..2c2aa07d99 100644 --- a/frontend/viewer/src/locales/ko.po +++ b/frontend/viewer/src/locales/ko.po @@ -41,11 +41,6 @@ msgstr "{0} (FieldWorks)" msgid "{0} ago" msgstr "{0} 전" -#: src/project/sync/FwLiteToFwMergeDetails.svelte -#: src/project/sync/FwLiteToFwMergeDetails.svelte -msgid "{0} Commits" -msgstr "{0} 커밋" - #: src/lib/components/audio/audio-editor.svelte msgid "{0} MB" msgstr "{0} MB" @@ -59,6 +54,14 @@ msgstr "{0} 서버" msgid "{num, plural, one {# change} other {# changes}}" msgstr "{num, plural, other {#개 변경}}" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "{num, plural, one {# new FieldWorks Classic commit} other {# new FieldWorks Classic commits}}" +msgstr "" + +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "{num, plural, one {# new FieldWorks Lite commit} other {# new FieldWorks Lite commits}}" +msgstr "" + #: src/lib/history/HistoryView.svelte #: src/lib/activity/ActivityView.svelte msgid "# ago" @@ -191,6 +194,14 @@ msgstr "찾아보기" msgid "Cancel" msgstr "취소" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "Changes can also be the result of additional fields being added to new versions of FieldWorks Lite." +msgstr "" + +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "Changing the same field twice (e.g.) can result in two commits, but only one change that needs to be applied to FieldWorks Classic. Commits can also consist of multiple changes." +msgstr "" + #: src/lib/ThemePicker.svelte msgid "Choose theme" msgstr "" @@ -739,6 +750,10 @@ msgstr "절대로" msgid "New" msgstr "신규" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "New data" +msgstr "" + #: src/project/PrimaryNewEntryButton.svelte #: src/lib/entry-editor/NewEntryDialog.svelte msgid "New Entry" @@ -783,6 +798,10 @@ msgstr "기록을 찾을 수 없습니다." msgid "No items found" msgstr "항목을 찾을 수 없습니다." +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "No new data" +msgstr "" + #: src/project/sync/SyncStatusPrimitive.svelte msgid "No server" msgstr "" @@ -833,6 +852,10 @@ msgstr "오프라인" msgid "Offline, unable to download" msgstr "오프라인 상태, 다운로드할 수 없음" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "One FieldWorks Classic commit may consist of changes to multiple entries or fields. On the other hand, a commit may only affect data that is not synced to FieldWorks Lite." +msgstr "" + #: src/home/Server.svelte msgid "Open" msgstr "열기" @@ -1055,7 +1078,7 @@ msgid "Sync Changes" msgstr "동기화 변경 사항" #: src/project/SyncDialog.svelte -msgid "Sync complete. {0} were applied to FieldWorks. {1} were applied to FieldWorks Lite." +msgid "Sync complete. {0} were applied to FieldWorks Classic. {1} were applied to FieldWorks Lite." msgstr "" #: src/project/ProjectSidebar.svelte @@ -1102,6 +1125,14 @@ msgstr "작업" msgid "Tell us about a bug or issue you’ve encountered." msgstr "" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "The number of FieldWorks Classic commits will not necessarily match the number of changes shown in the sync result message." +msgstr "" + +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "The number of FieldWorks Lite commits will not necessarily match the number of changes shown in the sync result message." +msgstr "" + #: src/project/tasks/TaskView.svelte msgid "The task you are looking for does not exist." msgstr "찾고 있는 작업이 존재하지 않습니다." @@ -1216,6 +1247,11 @@ msgstr "구성 보기" msgid "Where are my projects?" msgstr "내 프로젝트는 어디에 있나요?" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "Why is that?" +msgstr "" + #: src/project/browse/SearchFilter.svelte #: src/project/browse/EntryMenu.svelte #: src/lib/entry-editor/EntryOrSensePicker.svelte diff --git a/frontend/viewer/src/locales/ms.po b/frontend/viewer/src/locales/ms.po index 7828abe985..7758e9a160 100644 --- a/frontend/viewer/src/locales/ms.po +++ b/frontend/viewer/src/locales/ms.po @@ -41,11 +41,6 @@ msgstr "{0} (FieldWorks)" msgid "{0} ago" msgstr "" -#: src/project/sync/FwLiteToFwMergeDetails.svelte -#: src/project/sync/FwLiteToFwMergeDetails.svelte -msgid "{0} Commits" -msgstr "" - #: src/lib/components/audio/audio-editor.svelte msgid "{0} MB" msgstr "{0} MB" @@ -59,6 +54,14 @@ msgstr "Pelayan {0}" msgid "{num, plural, one {# change} other {# changes}}" msgstr "{num, plural, other {# perubahan}}" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "{num, plural, one {# new FieldWorks Classic commit} other {# new FieldWorks Classic commits}}" +msgstr "" + +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "{num, plural, one {# new FieldWorks Lite commit} other {# new FieldWorks Lite commits}}" +msgstr "" + #: src/lib/history/HistoryView.svelte #: src/lib/activity/ActivityView.svelte msgid "# ago" @@ -191,6 +194,14 @@ msgstr "Semak seimbas (Melihat-lihat)" msgid "Cancel" msgstr "Batal" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "Changes can also be the result of additional fields being added to new versions of FieldWorks Lite." +msgstr "" + +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "Changing the same field twice (e.g.) can result in two commits, but only one change that needs to be applied to FieldWorks Classic. Commits can also consist of multiple changes." +msgstr "" + #: src/lib/ThemePicker.svelte msgid "Choose theme" msgstr "" @@ -739,6 +750,10 @@ msgstr "Tidak Pernah" msgid "New" msgstr "Baru" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "New data" +msgstr "" + #: src/project/PrimaryNewEntryButton.svelte #: src/lib/entry-editor/NewEntryDialog.svelte msgid "New Entry" @@ -783,6 +798,10 @@ msgstr "Tiada sejarah ditemui" msgid "No items found" msgstr "Tiada item ditemui" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "No new data" +msgstr "" + #: src/project/sync/SyncStatusPrimitive.svelte msgid "No server" msgstr "" @@ -833,6 +852,10 @@ msgstr "Luar talian" msgid "Offline, unable to download" msgstr "Luar talian, tidak dapat memuat turun" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "One FieldWorks Classic commit may consist of changes to multiple entries or fields. On the other hand, a commit may only affect data that is not synced to FieldWorks Lite." +msgstr "" + #: src/home/Server.svelte msgid "Open" msgstr "" @@ -1055,7 +1078,7 @@ msgid "Sync Changes" msgstr "" #: src/project/SyncDialog.svelte -msgid "Sync complete. {0} were applied to FieldWorks. {1} were applied to FieldWorks Lite." +msgid "Sync complete. {0} were applied to FieldWorks Classic. {1} were applied to FieldWorks Lite." msgstr "" #: src/project/ProjectSidebar.svelte @@ -1102,6 +1125,14 @@ msgstr "Tugasan" msgid "Tell us about a bug or issue you’ve encountered." msgstr "" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "The number of FieldWorks Classic commits will not necessarily match the number of changes shown in the sync result message." +msgstr "" + +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "The number of FieldWorks Lite commits will not necessarily match the number of changes shown in the sync result message." +msgstr "" + #: src/project/tasks/TaskView.svelte msgid "The task you are looking for does not exist." msgstr "" @@ -1216,6 +1247,11 @@ msgstr "Lihat Konfigurasi" msgid "Where are my projects?" msgstr "Di manakah projek saya?" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "Why is that?" +msgstr "" + #: src/project/browse/SearchFilter.svelte #: src/project/browse/EntryMenu.svelte #: src/lib/entry-editor/EntryOrSensePicker.svelte diff --git a/frontend/viewer/src/locales/sw.po b/frontend/viewer/src/locales/sw.po index a51512bb57..812d25c925 100644 --- a/frontend/viewer/src/locales/sw.po +++ b/frontend/viewer/src/locales/sw.po @@ -41,11 +41,6 @@ msgstr "" msgid "{0} ago" msgstr "" -#: src/project/sync/FwLiteToFwMergeDetails.svelte -#: src/project/sync/FwLiteToFwMergeDetails.svelte -msgid "{0} Commits" -msgstr "" - #: src/lib/components/audio/audio-editor.svelte msgid "{0} MB" msgstr "" @@ -59,6 +54,14 @@ msgstr "" msgid "{num, plural, one {# change} other {# changes}}" msgstr "{num, plural, other {# mabadiliko}}" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "{num, plural, one {# new FieldWorks Classic commit} other {# new FieldWorks Classic commits}}" +msgstr "" + +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "{num, plural, one {# new FieldWorks Lite commit} other {# new FieldWorks Lite commits}}" +msgstr "" + #: src/lib/history/HistoryView.svelte #: src/lib/activity/ActivityView.svelte msgid "# ago" @@ -191,6 +194,14 @@ msgstr "Angalia" msgid "Cancel" msgstr "Ghairi" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "Changes can also be the result of additional fields being added to new versions of FieldWorks Lite." +msgstr "" + +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "Changing the same field twice (e.g.) can result in two commits, but only one change that needs to be applied to FieldWorks Classic. Commits can also consist of multiple changes." +msgstr "" + #: src/lib/ThemePicker.svelte msgid "Choose theme" msgstr "" @@ -739,6 +750,10 @@ msgstr "Kamwe" msgid "New" msgstr "Mpya" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "New data" +msgstr "" + #: src/project/PrimaryNewEntryButton.svelte #: src/lib/entry-editor/NewEntryDialog.svelte msgid "New Entry" @@ -783,6 +798,10 @@ msgstr "" msgid "No items found" msgstr "" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "No new data" +msgstr "" + #: src/project/sync/SyncStatusPrimitive.svelte msgid "No server" msgstr "" @@ -833,6 +852,10 @@ msgstr "" msgid "Offline, unable to download" msgstr "" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "One FieldWorks Classic commit may consist of changes to multiple entries or fields. On the other hand, a commit may only affect data that is not synced to FieldWorks Lite." +msgstr "" + #: src/home/Server.svelte msgid "Open" msgstr "" @@ -1055,7 +1078,7 @@ msgid "Sync Changes" msgstr "" #: src/project/SyncDialog.svelte -msgid "Sync complete. {0} were applied to FieldWorks. {1} were applied to FieldWorks Lite." +msgid "Sync complete. {0} were applied to FieldWorks Classic. {1} were applied to FieldWorks Lite." msgstr "" #: src/project/ProjectSidebar.svelte @@ -1102,6 +1125,14 @@ msgstr "Jukumu" msgid "Tell us about a bug or issue you’ve encountered." msgstr "" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "The number of FieldWorks Classic commits will not necessarily match the number of changes shown in the sync result message." +msgstr "" + +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "The number of FieldWorks Lite commits will not necessarily match the number of changes shown in the sync result message." +msgstr "" + #: src/project/tasks/TaskView.svelte msgid "The task you are looking for does not exist." msgstr "" @@ -1216,6 +1247,11 @@ msgstr "" msgid "Where are my projects?" msgstr "" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "Why is that?" +msgstr "" + #: src/project/browse/SearchFilter.svelte #: src/project/browse/EntryMenu.svelte #: src/lib/entry-editor/EntryOrSensePicker.svelte From e0f1e24ab18c45fefddf19d33185093708497a42 Mon Sep 17 00:00:00 2001 From: Tim Haasdyk Date: Mon, 13 Oct 2025 15:44:26 +0200 Subject: [PATCH 11/14] Use new shimmer animation for loading-text --- frontend/viewer/src/app.postcss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/viewer/src/app.postcss b/frontend/viewer/src/app.postcss index 67cc703f56..c345d90cb4 100644 --- a/frontend/viewer/src/app.postcss +++ b/frontend/viewer/src/app.postcss @@ -28,7 +28,7 @@ } .loading-text { - @apply bg-foreground/15 animate-pulse rounded-md text-transparent select-none pointer-events-none; + @apply bg-shimmer animate-shimmer rounded-md text-transparent select-none pointer-events-none; } } From d9a72049aa156ded8a0e79f683290d7f387c8b1e Mon Sep 17 00:00:00 2001 From: Tim Haasdyk Date: Mon, 13 Oct 2025 15:44:56 +0200 Subject: [PATCH 12/14] Make relative-date tooltip target include date --- .../src/lib/components/ui/format/format-relative-date.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/viewer/src/lib/components/ui/format/format-relative-date.svelte b/frontend/viewer/src/lib/components/ui/format/format-relative-date.svelte index b12e8b34d2..a91fa14c7d 100644 --- a/frontend/viewer/src/lib/components/ui/format/format-relative-date.svelte +++ b/frontend/viewer/src/lib/components/ui/format/format-relative-date.svelte @@ -66,9 +66,9 @@ {#if showActualDate && actualFormattedDate} - + From 1788113104cf9461c675e1ee18f05107d5d3c82f Mon Sep 17 00:00:00 2001 From: Tim Haasdyk Date: Mon, 13 Oct 2025 15:45:29 +0200 Subject: [PATCH 13/14] Clarify sync tabs with titles, tooltip and new name --- .../sync/FwLiteToFwMergeDetails.svelte | 20 +++++++++++++++++++ .../project/sync/SyncStatusPrimitive.svelte | 10 +++++++--- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/frontend/viewer/src/project/sync/FwLiteToFwMergeDetails.svelte b/frontend/viewer/src/project/sync/FwLiteToFwMergeDetails.svelte index d598a632cf..9b981f6799 100644 --- a/frontend/viewer/src/project/sync/FwLiteToFwMergeDetails.svelte +++ b/frontend/viewer/src/project/sync/FwLiteToFwMergeDetails.svelte @@ -58,6 +58,25 @@ } +

+ + + {$t`Sync FieldWorks Lite and FieldWorks Classic`} + + + +

+

+ {$t`This will synchronize the FieldWorks Lite and FieldWorks Classic copies of your project in Lexbox.`} +

+

+ {$t`After the sync, changes made in FW Classic will appear in FW Lite and changes made in FW Lite will appear in FW Classic after the next Send/Receive.`} +

+
+
+
+

+
@@ -122,6 +141,7 @@ loading={loadingSyncLexboxToFlex} disabled={loadingSyncLexboxToLocal || !canSyncLexboxToFlex || !remoteStatus} onclick={onSyncLexboxToFlex} + class="my-1" icon="i-mdi-sync" iconProps={{ class: 'size-5' }} > diff --git a/frontend/viewer/src/project/sync/SyncStatusPrimitive.svelte b/frontend/viewer/src/project/sync/SyncStatusPrimitive.svelte index e4dd1c6cd2..3c1a911bb4 100644 --- a/frontend/viewer/src/project/sync/SyncStatusPrimitive.svelte +++ b/frontend/viewer/src/project/sync/SyncStatusPrimitive.svelte @@ -50,6 +50,7 @@ const serverProjectUrl = $derived(`${server?.authority}/project/${encodeURIComponent(projectCode ?? '')}`); const isOffline = $derived(syncStatus === SyncStatus.Offline); const showRemote = $derived(!!server); + const cloudIcon = $derived(isOffline ? 'i-mdi-cloud-off-outline' : 'i-mdi-cloud-outline'); let loadingSyncLexboxToFlex = $state(false); @@ -66,10 +67,13 @@ {#if showRemote} {$t`FieldWorks Lite`} - {$t`FieldWorks Classic`} + {$t`Lexbox`} {/if} +

+ {$t`Sync your changes with other FieldWorks Lite users`} +

@@ -85,7 +89,7 @@
@@ -116,7 +120,7 @@ {#if loadingSyncLexboxToLocal} {$t`Syncing...`} {:else} - {$t`Auto sync`} + {$t`Auto syncing`} {/if} {:else if syncStatus === SyncStatus.Offline} From 319b4635c0bdccdd3c135ffe7e5fc9671a23d572 Mon Sep 17 00:00:00 2001 From: Tim Haasdyk Date: Mon, 13 Oct 2025 15:55:18 +0200 Subject: [PATCH 14/14] i18n:extract --- frontend/viewer/src/locales/en.po | 28 ++++++++++++++++++++++------ frontend/viewer/src/locales/es.po | 28 ++++++++++++++++++++++------ frontend/viewer/src/locales/fr.po | 28 ++++++++++++++++++++++------ frontend/viewer/src/locales/id.po | 28 ++++++++++++++++++++++------ frontend/viewer/src/locales/ko.po | 28 ++++++++++++++++++++++------ frontend/viewer/src/locales/ms.po | 26 +++++++++++++++++++++----- frontend/viewer/src/locales/sw.po | 26 +++++++++++++++++++++----- 7 files changed, 152 insertions(+), 40 deletions(-) diff --git a/frontend/viewer/src/locales/en.po b/frontend/viewer/src/locales/en.po index e8d93a2cfc..2bc1118e5e 100644 --- a/frontend/viewer/src/locales/en.po +++ b/frontend/viewer/src/locales/en.po @@ -126,6 +126,10 @@ msgstr "Add Sense" msgid "Add Word" msgstr "Add Word" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "After the sync, changes made in FW Classic will appear in FW Lite and changes made in FW Lite will appear in FW Classic after the next Send/Receive." +msgstr "After the sync, changes made in FW Classic will appear in FW Lite and changes made in FW Lite will appear in FW Classic after the next Send/Receive." + #: src/project/browse/BrowseView.svelte msgid "an entry" msgstr "an entry" @@ -168,8 +172,8 @@ msgid "Auto" msgstr "Auto" #: src/project/sync/SyncStatusPrimitive.svelte -msgid "Auto sync" -msgstr "Auto sync" +msgid "Auto syncing" +msgstr "Auto syncing" #: src/project/browse/SortMenu.svelte msgid "Best match" @@ -475,10 +479,6 @@ msgstr "Field" msgid "Field Labels" msgstr "Field Labels" -#: src/project/sync/SyncStatusPrimitive.svelte -msgid "FieldWorks Classic" -msgstr "FieldWorks Classic" - #: src/project/sync/SyncStatusPrimitive.svelte msgid "FieldWorks Lite" msgstr "FieldWorks Lite" @@ -624,6 +624,10 @@ msgstr "Last sync: #" msgid "Length:" msgstr "Length:" +#: src/project/sync/SyncStatusPrimitive.svelte +msgid "Lexbox" +msgstr "Lexbox" + #: src/home/HomeView.svelte msgid "Lexbox logo" msgstr "Lexbox logo" @@ -1076,6 +1080,14 @@ msgstr "Sync Changes" msgid "Sync complete. {0} were applied to FieldWorks Classic. {1} were applied to FieldWorks Lite." msgstr "Sync complete. {0} were applied to FieldWorks Classic. {1} were applied to FieldWorks Lite." +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "Sync FieldWorks Lite and FieldWorks Classic" +msgstr "Sync FieldWorks Lite and FieldWorks Classic" + +#: src/project/sync/SyncStatusPrimitive.svelte +msgid "Sync your changes with other FieldWorks Lite users" +msgstr "Sync your changes with other FieldWorks Lite users" + #: src/project/ProjectSidebar.svelte msgid "Synced" msgstr "Synced" @@ -1144,6 +1156,10 @@ msgstr "This project is now open in FieldWorks. To continue working in FieldWork msgid "This task is complete" msgstr "This task is complete" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "This will synchronize the FieldWorks Lite and FieldWorks Classic copies of your project in Lexbox." +msgstr "This will synchronize the FieldWorks Lite and FieldWorks Classic copies of your project in Lexbox." + #: src/project/browse/SearchFilter.svelte msgid "Toggle filters" msgstr "Toggle filters" diff --git a/frontend/viewer/src/locales/es.po b/frontend/viewer/src/locales/es.po index 1771c9572b..0b1ef3cec6 100644 --- a/frontend/viewer/src/locales/es.po +++ b/frontend/viewer/src/locales/es.po @@ -131,6 +131,10 @@ msgstr "Añadir acepción" msgid "Add Word" msgstr "" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "After the sync, changes made in FW Classic will appear in FW Lite and changes made in FW Lite will appear in FW Classic after the next Send/Receive." +msgstr "" + #: src/project/browse/BrowseView.svelte msgid "an entry" msgstr "una entrada" @@ -173,8 +177,8 @@ msgid "Auto" msgstr "Auto" #: src/project/sync/SyncStatusPrimitive.svelte -msgid "Auto sync" -msgstr "Auto sincronización" +msgid "Auto syncing" +msgstr "" #: src/project/browse/SortMenu.svelte msgid "Best match" @@ -480,10 +484,6 @@ msgstr "Campo" msgid "Field Labels" msgstr "Etiquetas de campo" -#: src/project/sync/SyncStatusPrimitive.svelte -msgid "FieldWorks Classic" -msgstr "FieldWorks clásico" - #: src/project/sync/SyncStatusPrimitive.svelte msgid "FieldWorks Lite" msgstr "FieldWorks Lite" @@ -629,6 +629,10 @@ msgstr "" msgid "Length:" msgstr "Longitud:" +#: src/project/sync/SyncStatusPrimitive.svelte +msgid "Lexbox" +msgstr "" + #: src/home/HomeView.svelte msgid "Lexbox logo" msgstr "Logotipo de Lexbox" @@ -1081,6 +1085,14 @@ msgstr "Sincronizar Cambios" msgid "Sync complete. {0} were applied to FieldWorks Classic. {1} were applied to FieldWorks Lite." msgstr "" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "Sync FieldWorks Lite and FieldWorks Classic" +msgstr "" + +#: src/project/sync/SyncStatusPrimitive.svelte +msgid "Sync your changes with other FieldWorks Lite users" +msgstr "" + #: src/project/ProjectSidebar.svelte msgid "Synced" msgstr "Sincronizado" @@ -1149,6 +1161,10 @@ msgstr "Este proyecto está ahora abierto en FieldWorks. Para continuar trabajan msgid "This task is complete" msgstr "Esta tarea está completa" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "This will synchronize the FieldWorks Lite and FieldWorks Classic copies of your project in Lexbox." +msgstr "" + #: src/project/browse/SearchFilter.svelte msgid "Toggle filters" msgstr "Alternar filtros" diff --git a/frontend/viewer/src/locales/fr.po b/frontend/viewer/src/locales/fr.po index d79ef49e30..a76949a34d 100644 --- a/frontend/viewer/src/locales/fr.po +++ b/frontend/viewer/src/locales/fr.po @@ -131,6 +131,10 @@ msgstr "Ajouter du sens" msgid "Add Word" msgstr "" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "After the sync, changes made in FW Classic will appear in FW Lite and changes made in FW Lite will appear in FW Classic after the next Send/Receive." +msgstr "" + #: src/project/browse/BrowseView.svelte msgid "an entry" msgstr "une entrée" @@ -173,8 +177,8 @@ msgid "Auto" msgstr "Auto" #: src/project/sync/SyncStatusPrimitive.svelte -msgid "Auto sync" -msgstr "Synchronisation automatique" +msgid "Auto syncing" +msgstr "" #: src/project/browse/SortMenu.svelte msgid "Best match" @@ -480,10 +484,6 @@ msgstr "Champ d'application" msgid "Field Labels" msgstr "Étiquettes de champ" -#: src/project/sync/SyncStatusPrimitive.svelte -msgid "FieldWorks Classic" -msgstr "FieldWorks Classique" - #: src/project/sync/SyncStatusPrimitive.svelte msgid "FieldWorks Lite" msgstr "FieldWorks Lite" @@ -629,6 +629,10 @@ msgstr "" msgid "Length:" msgstr "Longueur :" +#: src/project/sync/SyncStatusPrimitive.svelte +msgid "Lexbox" +msgstr "" + #: src/home/HomeView.svelte msgid "Lexbox logo" msgstr "Logo Lexbox" @@ -1081,6 +1085,14 @@ msgstr "Synchroniser les modifications" msgid "Sync complete. {0} were applied to FieldWorks Classic. {1} were applied to FieldWorks Lite." msgstr "" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "Sync FieldWorks Lite and FieldWorks Classic" +msgstr "" + +#: src/project/sync/SyncStatusPrimitive.svelte +msgid "Sync your changes with other FieldWorks Lite users" +msgstr "" + #: src/project/ProjectSidebar.svelte msgid "Synced" msgstr "Synchronisé" @@ -1149,6 +1161,10 @@ msgstr "Ce projet est maintenant ouvert dans FieldWorks. Pour continuer à trava msgid "This task is complete" msgstr "Cette tâche est terminée" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "This will synchronize the FieldWorks Lite and FieldWorks Classic copies of your project in Lexbox." +msgstr "" + #: src/project/browse/SearchFilter.svelte msgid "Toggle filters" msgstr "Filtres à bascule" diff --git a/frontend/viewer/src/locales/id.po b/frontend/viewer/src/locales/id.po index b3a58c6ce2..dc5df71ea6 100644 --- a/frontend/viewer/src/locales/id.po +++ b/frontend/viewer/src/locales/id.po @@ -131,6 +131,10 @@ msgstr "Tambahkan Pengertian" msgid "Add Word" msgstr "" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "After the sync, changes made in FW Classic will appear in FW Lite and changes made in FW Lite will appear in FW Classic after the next Send/Receive." +msgstr "" + #: src/project/browse/BrowseView.svelte msgid "an entry" msgstr "sebuah entri" @@ -173,8 +177,8 @@ msgid "Auto" msgstr "Otomatis" #: src/project/sync/SyncStatusPrimitive.svelte -msgid "Auto sync" -msgstr "Sinkronisasi otomatis" +msgid "Auto syncing" +msgstr "" #: src/project/browse/SortMenu.svelte msgid "Best match" @@ -480,10 +484,6 @@ msgstr "Bidang" msgid "Field Labels" msgstr "Label Bidang" -#: src/project/sync/SyncStatusPrimitive.svelte -msgid "FieldWorks Classic" -msgstr "FieldWorks Classic" - #: src/project/sync/SyncStatusPrimitive.svelte msgid "FieldWorks Lite" msgstr "FieldWorks Lite" @@ -629,6 +629,10 @@ msgstr "" msgid "Length:" msgstr "Panjang:" +#: src/project/sync/SyncStatusPrimitive.svelte +msgid "Lexbox" +msgstr "" + #: src/home/HomeView.svelte msgid "Lexbox logo" msgstr "Logo Lexbox" @@ -1081,6 +1085,14 @@ msgstr "Perubahan Sinkronisasi" msgid "Sync complete. {0} were applied to FieldWorks Classic. {1} were applied to FieldWorks Lite." msgstr "" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "Sync FieldWorks Lite and FieldWorks Classic" +msgstr "" + +#: src/project/sync/SyncStatusPrimitive.svelte +msgid "Sync your changes with other FieldWorks Lite users" +msgstr "" + #: src/project/ProjectSidebar.svelte msgid "Synced" msgstr "Disinkronkan" @@ -1149,6 +1161,10 @@ msgstr "Proyek ini sekarang terbuka di FieldWorks. Untuk melanjutkan bekerja di msgid "This task is complete" msgstr "Tugas ini selesai" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "This will synchronize the FieldWorks Lite and FieldWorks Classic copies of your project in Lexbox." +msgstr "" + #: src/project/browse/SearchFilter.svelte msgid "Toggle filters" msgstr "Beralih filter" diff --git a/frontend/viewer/src/locales/ko.po b/frontend/viewer/src/locales/ko.po index 2c2aa07d99..f1be00ab15 100644 --- a/frontend/viewer/src/locales/ko.po +++ b/frontend/viewer/src/locales/ko.po @@ -131,6 +131,10 @@ msgstr "센스 추가" msgid "Add Word" msgstr "" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "After the sync, changes made in FW Classic will appear in FW Lite and changes made in FW Lite will appear in FW Classic after the next Send/Receive." +msgstr "" + #: src/project/browse/BrowseView.svelte msgid "an entry" msgstr "항목" @@ -173,8 +177,8 @@ msgid "Auto" msgstr "자동" #: src/project/sync/SyncStatusPrimitive.svelte -msgid "Auto sync" -msgstr "자동 동기화" +msgid "Auto syncing" +msgstr "" #: src/project/browse/SortMenu.svelte msgid "Best match" @@ -480,10 +484,6 @@ msgstr "필드" msgid "Field Labels" msgstr "필드 레이블" -#: src/project/sync/SyncStatusPrimitive.svelte -msgid "FieldWorks Classic" -msgstr "FieldWorks 클래식" - #: src/project/sync/SyncStatusPrimitive.svelte msgid "FieldWorks Lite" msgstr "FieldWorks Lite" @@ -629,6 +629,10 @@ msgstr "" msgid "Length:" msgstr "길이:" +#: src/project/sync/SyncStatusPrimitive.svelte +msgid "Lexbox" +msgstr "" + #: src/home/HomeView.svelte msgid "Lexbox logo" msgstr "렉스박스 로고" @@ -1081,6 +1085,14 @@ msgstr "동기화 변경 사항" msgid "Sync complete. {0} were applied to FieldWorks Classic. {1} were applied to FieldWorks Lite." msgstr "" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "Sync FieldWorks Lite and FieldWorks Classic" +msgstr "" + +#: src/project/sync/SyncStatusPrimitive.svelte +msgid "Sync your changes with other FieldWorks Lite users" +msgstr "" + #: src/project/ProjectSidebar.svelte msgid "Synced" msgstr "동기화" @@ -1149,6 +1161,10 @@ msgstr "이제 이 프로젝트가 FieldWorks에서 열렸습니다. FieldWorks msgid "This task is complete" msgstr "이 작업이 완료되었습니다." +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "This will synchronize the FieldWorks Lite and FieldWorks Classic copies of your project in Lexbox." +msgstr "" + #: src/project/browse/SearchFilter.svelte msgid "Toggle filters" msgstr "필터 토글" diff --git a/frontend/viewer/src/locales/ms.po b/frontend/viewer/src/locales/ms.po index 7758e9a160..9586244334 100644 --- a/frontend/viewer/src/locales/ms.po +++ b/frontend/viewer/src/locales/ms.po @@ -131,6 +131,10 @@ msgstr "Tambah Makna" msgid "Add Word" msgstr "" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "After the sync, changes made in FW Classic will appear in FW Lite and changes made in FW Lite will appear in FW Classic after the next Send/Receive." +msgstr "" + #: src/project/browse/BrowseView.svelte msgid "an entry" msgstr "satu entri" @@ -173,7 +177,7 @@ msgid "Auto" msgstr "Auto" #: src/project/sync/SyncStatusPrimitive.svelte -msgid "Auto sync" +msgid "Auto syncing" msgstr "" #: src/project/browse/SortMenu.svelte @@ -480,10 +484,6 @@ msgstr "Bidang" msgid "Field Labels" msgstr "Label Medan" -#: src/project/sync/SyncStatusPrimitive.svelte -msgid "FieldWorks Classic" -msgstr "" - #: src/project/sync/SyncStatusPrimitive.svelte msgid "FieldWorks Lite" msgstr "" @@ -629,6 +629,10 @@ msgstr "" msgid "Length:" msgstr "Panjang:" +#: src/project/sync/SyncStatusPrimitive.svelte +msgid "Lexbox" +msgstr "" + #: src/home/HomeView.svelte msgid "Lexbox logo" msgstr "Logo Lexbox" @@ -1081,6 +1085,14 @@ msgstr "" msgid "Sync complete. {0} were applied to FieldWorks Classic. {1} were applied to FieldWorks Lite." msgstr "" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "Sync FieldWorks Lite and FieldWorks Classic" +msgstr "" + +#: src/project/sync/SyncStatusPrimitive.svelte +msgid "Sync your changes with other FieldWorks Lite users" +msgstr "" + #: src/project/ProjectSidebar.svelte msgid "Synced" msgstr "Disegerakkan" @@ -1149,6 +1161,10 @@ msgstr "Projek ini kini dibuka dalam FieldWorks. Untuk terus bekerja dalam Field msgid "This task is complete" msgstr "" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "This will synchronize the FieldWorks Lite and FieldWorks Classic copies of your project in Lexbox." +msgstr "" + #: src/project/browse/SearchFilter.svelte msgid "Toggle filters" msgstr "Togol penapis" diff --git a/frontend/viewer/src/locales/sw.po b/frontend/viewer/src/locales/sw.po index 812d25c925..fa24c1221c 100644 --- a/frontend/viewer/src/locales/sw.po +++ b/frontend/viewer/src/locales/sw.po @@ -131,6 +131,10 @@ msgstr "" msgid "Add Word" msgstr "" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "After the sync, changes made in FW Classic will appear in FW Lite and changes made in FW Lite will appear in FW Classic after the next Send/Receive." +msgstr "" + #: src/project/browse/BrowseView.svelte msgid "an entry" msgstr "" @@ -173,7 +177,7 @@ msgid "Auto" msgstr "" #: src/project/sync/SyncStatusPrimitive.svelte -msgid "Auto sync" +msgid "Auto syncing" msgstr "" #: src/project/browse/SortMenu.svelte @@ -480,10 +484,6 @@ msgstr "" msgid "Field Labels" msgstr "" -#: src/project/sync/SyncStatusPrimitive.svelte -msgid "FieldWorks Classic" -msgstr "" - #: src/project/sync/SyncStatusPrimitive.svelte msgid "FieldWorks Lite" msgstr "" @@ -629,6 +629,10 @@ msgstr "" msgid "Length:" msgstr "" +#: src/project/sync/SyncStatusPrimitive.svelte +msgid "Lexbox" +msgstr "" + #: src/home/HomeView.svelte msgid "Lexbox logo" msgstr "" @@ -1081,6 +1085,14 @@ msgstr "" msgid "Sync complete. {0} were applied to FieldWorks Classic. {1} were applied to FieldWorks Lite." msgstr "" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "Sync FieldWorks Lite and FieldWorks Classic" +msgstr "" + +#: src/project/sync/SyncStatusPrimitive.svelte +msgid "Sync your changes with other FieldWorks Lite users" +msgstr "" + #: src/project/ProjectSidebar.svelte msgid "Synced" msgstr "" @@ -1149,6 +1161,10 @@ msgstr "" msgid "This task is complete" msgstr "" +#: src/project/sync/FwLiteToFwMergeDetails.svelte +msgid "This will synchronize the FieldWorks Lite and FieldWorks Classic copies of your project in Lexbox." +msgstr "" + #: src/project/browse/SearchFilter.svelte msgid "Toggle filters" msgstr ""