Add all missing translations for now

This commit is contained in:
Johannes Zellner
2025-08-19 10:49:27 +02:00
parent 42945e1b42
commit 3068ed75ee
10 changed files with 58 additions and 36 deletions

View File

@@ -245,8 +245,7 @@ defineExpose({
:form-error="formError"
:import-only="true" />
<!-- TODO translate -->
<Checkbox style="padding-top: 12px" v-model="encrypted" label="Backup uses encryption"/>
<Checkbox style="padding-top: 12px" v-model="encrypted" :label="$t('backups.configureBackupStorage.usesEncryption')"/>
<FormGroup v-if="encrypted">
<label for="encryptionPassswordInput">{{ $t('backups.configureBackupStorage.encryptionPassword') }}</label>
<PasswordInput id="encryptionPassswordInput" v-model="encryptionPassword" :placeholder="$t('backups.configureBackupStorage.encryptionPasswordPlaceholder')" required/>

View File

@@ -248,8 +248,7 @@ defineExpose({
</script>
<template>
<!-- TODO translate -->
<Dialog ref="dialog" title="Add Backup Storage">
<Dialog ref="dialog" :title="$t('backups.target.addDialog.title')">
<div>
<div v-if="step === 'storage'">
<form @submit.prevent="onSubmit()" autocomplete="off" ref="form">
@@ -308,8 +307,7 @@ defineExpose({
<div style="display: flex; gap: 6px; align-items: end;">
<Button secondary :disabled="busy" @click="onCancel()">{{ $t('main.dialog.cancel') }}</Button>
<!-- TODO translation -->
<Button primary :disabled="busy" :loading="busy" @click="onSubmit()">{{ useEncryption ? 'Next' : $t('main.dialog.save') }}</Button>
<Button primary :disabled="busy" :loading="busy" @click="onSubmit()">{{ useEncryption ? $t('main.action.next') : $t('main.dialog.save') }}</Button>
</div>
</div>
</fieldset>
@@ -334,7 +332,6 @@ defineExpose({
<div class="error-label" v-if="encryptionPasswordRepeat && encryptionPassword !== encryptionPasswordRepeat">{{ $t('profile.changePassword.errorPasswordsDontMatch') }}</div>
</FormGroup>
<FormGroup>
<!-- TODO translate -->
<label for="encryptionPassswordHintInput">{{ $t('backups.configureBackupStorage.encryptionHint') }}</label>
<TextInput id="encryptionPassswordHintInput" v-model="encryptionPasswordHint" />
</FormGroup>

View File

@@ -90,8 +90,7 @@ onMounted(async () => {
<DockerRegistryDialog ref="dialog" @success="refresh()"/>
<template #header-buttons>
<!-- TODO translate -->
<Button icon="fa-solid fa-plus" @click="onEditOrAdd()">Add</Button>
<Button icon="fa-solid fa-plus" @click="onEditOrAdd()">{{ $t('main.action.add') }}</Button>
</template>
<p v-html="$t('settings.privateDockerRegistry.description', { customAppsLink: 'https://docs.cloudron.io/custom-apps/tutorial/' })"></p>

View File

@@ -145,13 +145,12 @@ onMounted(async () => {
<fieldset :disabled="devicesBusy || (!app.error && !devicesChanged) || (app.error && app.error.details.installationState !== ISTATES.PENDING_RECREATE_CONTAINER) || app.taskId">
<input style="display: none;" type="submit"/>
<FormGroup>
<!-- TODO translate -->
<label for="devicesInput">Devices <sup><a href="https://docs.cloudron.io/apps/#devices" class="help" target="_blank"><i class="fa fa-question-circle"></i></a></sup></label>
<label for="devicesInput">{{ $t('app.resources.devices.label') }} <sup><a href="https://docs.cloudron.io/apps/#devices" class="help" target="_blank"><i class="fa fa-question-circle"></i></a></sup></label>
<TagInput id="devicesInput" v-model="devices" placeholder="/dev/ttyUSB0, /dev/hidraw0, ..."/>
<div class="text-danger" v-if="devicesError">{{ devicesError }}</div>
</FormGroup>
</fieldset>
</form>
<Button @click="onSubmitDevices()" :loading="devicesBusy" :disabled="devicesBusy || (!app.error && !devicesChanged) || (app.error && app.error.details.installationState !== ISTATES.PENDING_RECREATE_CONTAINER) || app.taskId">Set Devices</Button>
<Button @click="onSubmitDevices()" :loading="devicesBusy" :disabled="devicesBusy || (!app.error && !devicesChanged) || (app.error && app.error.details.installationState !== ISTATES.PENDING_RECREATE_CONTAINER) || app.taskId">{{ $t('main.dialog.save') }}</Button>
</div>
</template>

View File

@@ -58,8 +58,7 @@ const actionMenuElement = useTemplateRef('actionMenuElement');
function onActionMenu(backup, event) {
actionMenuModel.value = [{
icon: 'fa-solid fa-circle-info',
// TODO translate
label: 'Info',
label: t('backups.archives.info'),
action: onInfo.bind(null, backup),
}, {
icon: 'fa-solid fa-pencil-alt',

View File

@@ -61,10 +61,9 @@ function onEditSchedule(target) {
}
async function onRemoveTarget(target) {
// TODO translate
const yes = await inputDialog.value.confirm({
title: 'Really remove this backup target?',
message: 'This will also remove any backups linked to this target',
title: t('backup.target.removeDialog.title'),
message: t('backup.target.removeDialog.description'),
confirmLabel: t('main.dialog.yes'),
confirmStyle: 'danger',
rejectLabel: t('main.dialog.cancel'),
@@ -96,7 +95,6 @@ const actionMenuModel = ref([]);
const actionMenuElement = useTemplateRef('actionMenuElement');
function onActionMenu(target, event) {
// TODO translate
actionMenuModel.value = [{
icon: 'fa-solid fa-sync-alt',
label: t('backups.location.remount'),
@@ -187,10 +185,9 @@ onMounted(async () => {
<BackupTargetEditDialog ref="backupTargetEditDialog" @success="refresh()"/>
<BackupScheduleDialog ref="backupScheduleDialog" @success="refresh()"/>
<!-- TODO translate -->
<Section title="Backup Storage">
<Section :title="$t('backup.target.title')">
<template #header-buttons>
<Button @click="onAdd()" icon="fa-solid fa-plus"> Add Storage</Button>
<Button @click="onAdd()" icon="fa-solid fa-plus"> {{ $t('main.action.add') }}</Button>
</template>
<TableView :columns="columns" :model="targets" :busy="busy">
@@ -201,7 +198,6 @@ onMounted(async () => {
</template>
<template #name="target">
<!-- TODO translate -->
{{ target.name }} <span v-if="target.primary" class="text-muted">- used for updates</span>
</template>
@@ -221,11 +217,11 @@ onMounted(async () => {
</TableView>
</Section>
<Section title="Backup Configuration for Updates">
<Section :title="$t('backup.updateTarget.title')">
<SettingsItem>
<div>
<label>Storage</label>
<div>For backups created during automatic or manual app and platform updates.</div>
<label>{{ $t('backup.target.label') }}</label>
<div>{{ $t('backup.updateTarget.description') }}</div>
</div>
<div style="display: flex; align-items: center">
<SingleSelect style="min-width: 160px" :disabled="primaryTargetChangeBusy" v-model="primaryTargetId" :searchThreshold="10" :options="targets" option-key="id" option-label="name" @select="onPrimaryTargetChanged" />

View File

@@ -316,7 +316,7 @@ onMounted(async () => {
</Section>
<!-- TODO translation -->
<Section title="Sending" :padding="false" v-if="!busyRefresh">
<Section :title="$t('email.config.sending.title')" :padding="false" v-if="!busyRefresh">
<template #header-buttons>
<Button @click="onSendTestMail">{{ $t('emails.domains.testEmailTooltip') }}</Button>
</template>
@@ -342,8 +342,7 @@ onMounted(async () => {
</SettingsItem>
</Section>
<!-- TODO translation -->
<Section title="Receiving" :padding="false" v-if="!busyRefresh" :title-badge="!features.emailServer ? 'Upgrade' : ''">
<Section :title="$t('email.config.receiving.title')" :padding="false" v-if="!busyRefresh" :title-badge="!features.emailServer ? 'Upgrade' : ''">
<SettingsItem>
<FormGroup>
<label>{{ $t('email.incoming.title') }}</label>

View File

@@ -355,8 +355,7 @@ onMounted(async () => {
:import-only="true" />
<div v-show="showAdvanced">
<!-- TODO translate -->
<Checkbox style="padding-top: 12px" v-model="encrypted" label="Backup uses encryption"/>
<Checkbox style="padding-top: 12px" v-model="encrypted" :label="$t('backups.configureBackupStorage.usesEncryption')"/>
<FormGroup v-if="encrypted">
<label for="encryptionPassswordInput">{{ $t('backups.configureBackupStorage.encryptionPassword') }}</label>
<PasswordInput id="encryptionPassswordInput" v-model="encryptionPassword" :placeholder="$t('backups.configureBackupStorage.encryptionPasswordPlaceholder')" required/>