progress in i18n
authorPhiTux <redacted>
Wed, 27 Aug 2025 13:22:14 +0000 (15:22 +0200)
committerPhiTux <redacted>
Wed, 27 Aug 2025 13:22:14 +0000 (15:22 +0200)
frontend/src/lib/ALookBack.svelte
frontend/src/lib/Sidenav.svelte
frontend/src/routes/(authed)/+layout.svelte
frontend/src/routes/(authed)/write/+page.svelte

index 81a606eb4896b048aed2a2a870e3fa66d78ffd6d..c225228d75976e956a1ed9c03aed09bf702d2872 100644 (file)
@@ -1,6 +1,9 @@
 <script>
        import { marked } from 'marked';
        import { selectedDate } from './calendarStore';
+       import { getTranslate } from '@tolgee/svelte';
+
+       const { t } = getTranslate();
 
        marked.use({
                breaks: true,
        <div bind:this={content} class="zoom-content">
                <div class="zoom-content-header">
                        <span
-                               >Vor {log?.years_old} Jahren | {new Date(
+                               >{$t('aLookBack.header_X_years_ago', { years_old: log?.years_old })} | {new Date(
                                        log?.year,
                                        log?.month - 1,
                                        log?.day
                                closeModal();
                        }}
                        class="btn btn-primary"
-                       id="closeZoom">Öffnen</button
+                       id="closeZoom">{$t('aLookBack.open')}</button
                >
        </div>
 </div>
index 02644a60c36cf57345a573992537cb8dc856121d..c8533ed6b2293755a8a9f746e1f9f5be3a989b85 100644 (file)
                user-select: none;
        }
 
-       :global(.kbd) {
+       :global(.popover-body > span) {
                font-family: monospace;
                border: 1px solid #ccc;
                border-radius: 3px;
index 2f75cc4bd1363c88e3843e8bae91066aa5f1a21f..fbcfbf7e5f588a5f54ee2371dcbbe79450943931 100644 (file)
                                                                                        {/if}
                                                                                </label>
                                                                        </div>
+                                                                       <div class="form-text">
+                                                                               {$t('settings.language.reload_info')}
+                                                                       </div>
                                                                </div>
                                                                <div id="timezone">
                                                                        {#if $tempSettings.useBrowserTimezone !== $settings.useBrowserTimezone || ($tempSettings.timezone !== undefined && $tempSettings.timezone?.value !== $settings.timezone?.value)}
index 2a2e58d3fc6775b2a1d6319a71f7ea09d7bcb387..1ffa6bc804b40a69beb693d12e7c884352b1c1fc 100644 (file)
                                        })}
                                </div>
                                <div class="flex-fill textAreaWrittenAt">
-                                       <div class={logDateWritten ? '' : 'opacity-50'}>Geschrieben am:</div>
+                                       <div class={logDateWritten ? '' : 'opacity-50'}>{$t('log.written_on')}</div>
                                        {logDateWritten}
                                </div>
                                {#if historyAvailable}
                                        <div class="d-flex flex-row">
                                                <button type="button" class="loadImageBtn" onclick={() => loadImages()}>
                                                        <Fa icon={faCloudArrowDown} class="me-2" size="2x" fw /><br />
-                                                       {#if images.length === 1}
-                                                               1 Bild laden
-                                                       {:else}
-                                                               {images.length} Bilder laden
-                                                       {/if}
+                                                       {$t('log.load_images', { amount: images.length })}
                                                        ({formatBytes(
                                                                images.filter((i) => !i.src).reduce((sum, image) => sum + (image.size || 0), 0)
                                                        )})
                        <div class="tags glass">
                                <div class="d-flex flex-row justify-content-between">
                                        <div class="d-flex flex-row">
-                                               <h3>Tags</h3>
+                                               <h3>{$t('tags.tags')}</h3>
                                                {#if showTagLoading}
                                                        <div class="spinner-border ms-3" role="status">
                                                                <span class="visually-hidden">Loading...</span>
                                                type="button"
                                                class="btn"
                                                data-bs-toggle="popover"
-                                               data-bs-title="Tags"
-                                               data-bs-content="Hier kannst du Tags zum ausgewählten Datum hinzufügen und entfernen, um deine Einträge zu kategorisieren. Ebenso kannst du hier neue Tags erstellen.<br/><br/>Um ein Tag zu ändern oder auch vollständig zu löschen, musst du in die Einstellungen wechseln."
+                                               data-bs-title={$t('tags.tags')}
+                                               data-bs-content={$t('tags.description')}
                                        >
                                                <Fa icon={faQuestionCircle} fw /></a
                                        >
                                                type="text"
                                                class="form-control"
                                                id="tag-input"
-                                               placeholder="Tag..."
+                                               placeholder={$t('tags.input')}
                                        />
                                        <button class="newTagBtn btn btn-outline-secondary ms-2" onclick={openTagModal}>
-                                               <Fa icon={faSquarePlus} fw /> Neu
+                                               <Fa icon={faSquarePlus} fw />
+                                               {$t('tags.new_tag')}
                                        </button>
                                </div>
                                {#if showTagDropdown}
                                        <div id="tagDropdown">
                                                {#if filteredTags.length === 0}
-                                                       <em style="padding: 0.2rem;">Kein Tag gefunden...</em>
+                                                       <em style="padding: 0.2rem;">{$t('tags.no_tags_found')}</em>
                                                {:else}
                                                        {#each filteredTags as tag, index (tag.id)}
                                                                <!-- svelte-ignore a11y_click_events_have_key_events -->
                                        class="btn btn-secondary {filesOfDay?.length > 0 ? 'mb-2' : ''}"
                                        id="uploadBtn"
                                        onclick={triggerFileInput}
-                                       ><Fa icon={faCloudArrowUp} class="me-2" id="uploadIcon" />Upload</button
+                                       ><Fa icon={faCloudArrowUp} class="me-2" id="uploadIcon" />{$t('files.upload')}</button
                                >
                                <input type="file" id="fileInput" multiple style="display: none;" onchange={onFileChange} />
 
                                                                {#if file.progress !== 100}
                                                                        {file.progress}%
                                                                {:else}
-                                                                       Wird verschlüsselt...
+                                                                       {$t('files.encrypting')}
                                                                {/if}
                                                        </div>
                                                </div>
                        aria-atomic="true"
                >
                        <div class="d-flex">
-                               <div class="toast-body">Fehler beim Enfternen des Tags!</div>
+                               <div class="toast-body">
+                                       {$t('tags.toast.error_removing')}
+                               </div>
                        </div>
                </div>
 
                        aria-atomic="true"
                >
                        <div class="d-flex">
-                               <div class="toast-body">Fehler beim Hinzufügen des Tags zum ausgewählten Datum!</div>
+                               <div class="toast-body">
+                                       {$t('tags.toast.error_adding')}
+                               </div>
                        </div>
                </div>
 
                        aria-atomic="true"
                >
                        <div class="d-flex">
-                               <div class="toast-body">Fehler beim Speichern des Tags!</div>
+                               <div class="toast-body">
+                                       {$t('tags.toast.error_saving')}
+                               </div>
                        </div>
                </div>
 
                        aria-atomic="true"
                >
                        <div class="d-flex">
-                               <div class="toast-body">Fehler beim Speichern des Textes!</div>
+                               <div class="toast-body">
+                                       {$t('log.toast.error_saving')}
+                               </div>
                        </div>
                </div>
 
                        aria-atomic="true"
                >
                        <div class="d-flex">
-                               <div class="toast-body">Fehler beim Laden des Textes!</div>
+                               <div class="toast-body">
+                                       {$t('log.toast.error_loading')}
+                               </div>
                        </div>
                </div>
 
                        aria-atomic="true"
                >
                        <div class="d-flex">
-                               <div class="toast-body">Fehler beim Speichern einer Datei!</div>
+                               <div class="toast-body">
+                                       {$t('files.toast.error_saving')}
+                               </div>
                        </div>
                </div>
 
                        aria-atomic="true"
                >
                        <div class="d-flex">
-                               <div class="toast-body">Fehler beim Löschen einer Datei!</div>
+                               <div class="toast-body">
+                                       {$t('files.toast.error_deleting')}
+                               </div>
                        </div>
                </div>
 
                        aria-atomic="true"
                >
                        <div class="d-flex">
-                               <div class="toast-body">Fehler beim Download einer Datei!</div>
+                               <div class="toast-body">
+                                       {$t('files.toast.error_loading')}
+                               </div>
                        </div>
                </div>
 
                        aria-atomic="true"
                >
                        <div class="d-flex">
-                               <div class="toast-body">Fehler beim Löschen des Tages!</div>
+                               <div class="toast-body">
+                                       {$t('log.toast.error_deleting_day')}
+                               </div>
                        </div>
                </div>
        </div>
                <div class="modal-dialog modal-dialog-centered">
                        <div class="modal-content">
                                <div class="modal-header">
-                                       <h5 class="modal-title">Datei löschen?</h5>
+                                       <h5 class="modal-title">{$t('modal.deleteFile.title')}</h5>
                                        <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"
                                        ></button>
                                </div>
                                <div class="modal-body">
                                        <p>
-                                               Datei <u><span class="filenameWeight">{confirmDelete.filename}</span></u> wirklich löschen?
+                                               {@html $t('modal.deleteFile.body', { file: confirmDelete.filename })}
                                        </p>
                                </div>
                                <div class="modal-footer">
-                                       <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Schließen</button>
+                                       <button type="button" class="btn btn-secondary" data-bs-dismiss="modal"
+                                               >{$t('modal.close')}</button
+                                       >
                                        <button
                                                onclick={() => deleteFile(confirmDelete.uuid)}
                                                type="button"
                                                class="btn btn-primary"
-                                               data-bs-dismiss="modal">Löschen</button
+                                               data-bs-dismiss="modal">{$t('modal.deleteFile.delete')}</button
                                        >
                                </div>
                        </div>
                <div class="modal-dialog modal-lg modal-fullscreen-lg-down modal-dialog-centered">
                        <div class="modal-content">
                                <div class="modal-header">
-                                       <h5 class="modal-title">Verlauf</h5>
+                                       <h5 class="modal-title">{$t('modal.history.title')}</h5>
                                        <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"
                                        ></button>
                                </div>
                                                        }}
                                                >
                                                        <Fa icon={faArrowLeft} class="me-2" fw />
-                                                       Älter
+                                                       {$t('modal.history.older')}
                                                </button>
                                                <select
                                                        bind:value={historySelected}
                                                        }}
                                                >
                                                        <Fa icon={faArrowRight} class="me-2" fw />
-                                                       Neuer
+                                                       {$t('modal.history.newer')}
                                                </button>
                                        </div>
                                        <div class="text mt-2">
                                <div class="modal-footer">
                                        <div class="d-flex flex-column">
                                                <div class="form-text">
-                                                       Mit <b>Speichern</b> machst du den angezeigten älteren Text wieder zum aktuellen Haupttext.
+                                                       {@html $t('modal.history.description')}
                                                </div>
                                                <div class="d-flex flex-row justify-content-end mt-2">
                                                        <button type="button" class="btn btn-secondary me-2" data-bs-dismiss="modal"
-                                                               >Schließen</button
+                                                               >{$t('modal.close')}</button
                                                        >
                                                        <button
                                                                onclick={() => selectHistory()}
                                                                type="button"
                                                                class="btn btn-primary"
-                                                               data-bs-dismiss="modal">Speichern</button
+                                                               data-bs-dismiss="modal">{$t('modal.save')}</button
                                                        >
                                                </div>
                                        </div>
git clone https://git.99rst.org/PROJECT