From 880aa8040d88ee526ef98100fb6b0423d93bf19d Mon Sep 17 00:00:00 2001
From: Matt Hill
Date: Tue, 13 Jan 2026 15:34:58 -0700
Subject: [PATCH] translations
---
.../setup-wizard/src/app/app.module.ts | 2 +
.../src/app/components/cifs.component.ts | 21 +++--
.../components/preserve-overwrite.dialog.ts | 17 +++--
.../select-network-backup.dialog.ts | 7 +-
.../app/components/unlock-password.dialog.ts | 20 +++--
.../setup-wizard/src/app/pages/drives.page.ts | 59 +++++++-------
.../setup-wizard/src/app/pages/home.page.ts | 18 +++--
.../src/app/pages/keyboard.page.ts | 8 +-
.../src/app/pages/language.page.ts | 48 ++++++++----
.../src/app/pages/loading.page.ts | 13 ++--
.../src/app/pages/password.page.ts | 28 ++++---
.../src/app/pages/restore.page.ts | 24 +++---
.../src/app/pages/success.page.ts | 46 ++++++-----
.../src/app/pages/transfer.page.ts | 30 +++++---
.../setup-wizard/src/app/utils/languages.ts | 22 +++---
.../shared/src/i18n/dictionaries/de.ts | 75 ++++++++++++++++++
.../shared/src/i18n/dictionaries/en.ts | 76 +++++++++++++++++++
.../shared/src/i18n/dictionaries/es.ts | 75 ++++++++++++++++++
.../shared/src/i18n/dictionaries/fr.ts | 75 ++++++++++++++++++
.../shared/src/i18n/dictionaries/pl.ts | 75 ++++++++++++++++++
20 files changed, 601 insertions(+), 138 deletions(-)
diff --git a/web/projects/setup-wizard/src/app/app.module.ts b/web/projects/setup-wizard/src/app/app.module.ts
index effce9f2a..c6a815065 100644
--- a/web/projects/setup-wizard/src/app/app.module.ts
+++ b/web/projects/setup-wizard/src/app/app.module.ts
@@ -9,6 +9,7 @@ import { PreloadAllModules, RouterModule } from '@angular/router'
import { WA_LOCATION } from '@ng-web-apis/common'
import initArgon from '@start9labs/argon2'
import {
+ I18N_PROVIDERS,
provideSetupLogsService,
RELATIVE_URL,
VERSION,
@@ -41,6 +42,7 @@ const version = require('../../../../package.json').version
],
providers: [
NG_EVENT_PLUGINS,
+ I18N_PROVIDERS,
provideSetupLogsService(ApiService),
tuiButtonOptionsProvider({ size: 'm' }),
{
diff --git a/web/projects/setup-wizard/src/app/components/cifs.component.ts b/web/projects/setup-wizard/src/app/components/cifs.component.ts
index e1902ca47..e71ea344c 100644
--- a/web/projects/setup-wizard/src/app/components/cifs.component.ts
+++ b/web/projects/setup-wizard/src/app/components/cifs.component.ts
@@ -6,6 +6,7 @@ import {
ReactiveFormsModule,
Validators,
} from '@angular/forms'
+import { i18nPipe } from '@start9labs/shared'
import { T } from '@start9labs/start-sdk'
import {
TuiButton,
@@ -34,7 +35,7 @@ export interface CifsResult {
template: `
@@ -112,6 +113,7 @@ export interface CifsResult {
TuiError,
TuiFieldErrorPipe,
TuiIcon,
+ i18nPipe,
],
providers: [
{
@@ -126,6 +128,7 @@ export class CifsComponent {
private readonly dialogs = inject(TuiDialogService)
private readonly api = inject(ApiService)
private readonly context = injectContext>()
+ private readonly i18n = inject(i18nPipe)
connecting = false
@@ -181,9 +184,11 @@ export class CifsComponent {
private onFail() {
this.dialogs
.open(
- 'Unable to connect to network folder. Ensure (1) target computer is connected to LAN, (2) target folder is being shared, and (3) hostname, path, and credentials are accurate.',
+ this.i18n.transform(
+ 'Unable to connect to network folder. Ensure (1) target computer is connected to LAN, (2) target folder is being shared, and (3) hostname, path, and credentials are accurate.',
+ ),
{
- label: 'Connection Failed',
+ label: this.i18n.transform('Connection Failed'),
size: 's',
},
)
diff --git a/web/projects/setup-wizard/src/app/components/preserve-overwrite.dialog.ts b/web/projects/setup-wizard/src/app/components/preserve-overwrite.dialog.ts
index 179877dfe..2b5ed04cb 100644
--- a/web/projects/setup-wizard/src/app/components/preserve-overwrite.dialog.ts
+++ b/web/projects/setup-wizard/src/app/components/preserve-overwrite.dialog.ts
@@ -1,21 +1,22 @@
import { Component, inject } from '@angular/core'
+import { i18nPipe } from '@start9labs/shared'
import { TuiButton } from '@taiga-ui/core'
import { TuiDialogContext } from '@taiga-ui/core'
import { injectContext } from '@taiga-ui/polymorpheus'
@Component({
standalone: true,
- imports: [TuiButton],
+ imports: [TuiButton, i18nPipe],
template: `
- This drive contains existing StartOS data.
+ {{ 'This drive contains existing StartOS data.' | i18n }}
- Preserve
- to keep your data.
+ {{ 'Preserve' | i18n }}
+ {{ 'to keep your data.' | i18n }}
- Overwrite
- to discard
+ {{ 'Overwrite' | i18n }}
+ {{ 'to discard' | i18n }}
@@ -24,14 +25,14 @@ import { injectContext } from '@taiga-ui/polymorpheus'
appearance="flat-destructive"
(click)="context.completeWith(false)"
>
- Overwrite
+ {{ 'Overwrite' | i18n }}
- Preserve
+ {{ 'Preserve' | i18n }}
`,
diff --git a/web/projects/setup-wizard/src/app/components/select-network-backup.dialog.ts b/web/projects/setup-wizard/src/app/components/select-network-backup.dialog.ts
index b8d173e9f..d9c9c1166 100644
--- a/web/projects/setup-wizard/src/app/components/select-network-backup.dialog.ts
+++ b/web/projects/setup-wizard/src/app/components/select-network-backup.dialog.ts
@@ -1,5 +1,6 @@
import { Component, inject } from '@angular/core'
import { FormsModule } from '@angular/forms'
+import { i18nPipe } from '@start9labs/shared'
import { TuiDialogContext, TuiTextfield } from '@taiga-ui/core'
import { TuiDataListWrapper, TuiSelect } from '@taiga-ui/kit'
import { injectContext, PolymorpheusComponent } from '@taiga-ui/polymorpheus'
@@ -11,11 +12,11 @@ interface Data {
@Component({
standalone: true,
- imports: [FormsModule, TuiTextfield, TuiSelect, TuiDataListWrapper],
+ imports: [FormsModule, TuiTextfield, TuiSelect, TuiDataListWrapper, i18nPipe],
template: `
- Multiple backups found. Select which one to restore.
+ {{ 'Multiple backups found. Select which one to restore.' | i18n }}
- Backups
+ {{ 'Backups' | i18n }}
Enter the password that was used to encrypt this backup.
+
+ {{ 'Enter the password that was used to encrypt this backup.' | i18n }}
+
- Password
+ {{ 'Password' | i18n }}
- Cancel
+ {{ 'Cancel' | i18n }}
- Unlock
+ {{ 'Unlock' | i18n }}
`,
diff --git a/web/projects/setup-wizard/src/app/pages/drives.page.ts b/web/projects/setup-wizard/src/app/pages/drives.page.ts
index 2c015c6fe..dadde0e1a 100644
--- a/web/projects/setup-wizard/src/app/pages/drives.page.ts
+++ b/web/projects/setup-wizard/src/app/pages/drives.page.ts
@@ -4,6 +4,7 @@ import { FormsModule } from '@angular/forms'
import {
DiskInfo,
ErrorService,
+ i18nPipe,
LoadingService,
toGuid,
} from '@start9labs/shared'
@@ -29,27 +30,24 @@ import { ApiService } from '../services/api.service'
import { StateService } from '../services/state.service'
import { PreserveOverwriteDialog } from '../components/preserve-overwrite.dialog'
-const OS_DRIVE_TOOLTIP =
- 'The drive where the StartOS operating system will be installed.'
-const DATA_DRIVE_TOOLTIP =
- 'The drive where your StartOS data (services, settings, etc.) will be stored. This can be the same as the OS drive or a separate drive.'
-
@Component({
template: `
- Select Drives
+ {{ 'Select Drives' | i18n }}
@if (loading) {
} @else if (drives.length === 0) {
- No drives found. Please connect a drive and click Refresh.
+ {{
+ 'No drives found. Please connect a drive and click Refresh.' | i18n
+ }}
} @else {
- OS Drive
+ {{ 'OS Drive' | i18n }}
@if (mobile) {
- Data Drive
+ {{ 'Data Drive' | i18n }}
@if (mobile) {
- {{ drive.vendor || 'Unknown' }} {{ drive.model || 'Drive' }}
+ {{ drive.vendor || ('Unknown' | i18n) }}
+ {{ drive.model || ('Drive' | i18n) }}
{{ formatCapacity(drive.capacity) }} · {{ drive.logicalname }}
@@ -124,7 +123,7 @@ const DATA_DRIVE_TOOLTIP =
@if (drives.length === 0) {
- Refresh
+ {{ 'Refresh' | i18n }}
} @else {
- Continue
+ {{ 'Continue' | i18n }}
}
@@ -166,6 +165,7 @@ const DATA_DRIVE_TOOLTIP =
TuiTooltip,
TuiHeader,
TuiTitle,
+ i18nPipe,
],
})
export default class DrivesPage {
@@ -176,11 +176,16 @@ export default class DrivesPage {
private readonly errorService = inject(ErrorService)
private readonly stateService = inject(StateService)
private readonly cdr = inject(ChangeDetectorRef)
+ private readonly i18n = inject(i18nPipe)
protected readonly mobile = inject(TUI_IS_MOBILE)
- readonly osDriveTooltip = OS_DRIVE_TOOLTIP
- readonly dataDriveTooltip = DATA_DRIVE_TOOLTIP
+ readonly osDriveTooltip = this.i18n.transform(
+ 'The drive where the StartOS operating system will be installed.',
+ )
+ readonly dataDriveTooltip = this.i18n.transform(
+ 'The drive where your StartOS data (services, settings, etc.) will be stored. This can be the same as the OS drive or a separate drive.',
+ )
drives: DiskInfo[] = []
loading = true
@@ -189,7 +194,9 @@ export default class DrivesPage {
preserveData: boolean | null = null
readonly stringify = (drive: DiskInfo | null) =>
- drive ? `${drive.vendor || 'Unknown'} ${drive.model || 'Drive'}` : ''
+ drive
+ ? `${drive.vendor || this.i18n.transform('Unknown')} ${drive.model || this.i18n.transform('Drive')}`
+ : ''
formatCapacity(bytes: number): string {
const gb = bytes / 1e9
@@ -252,7 +259,7 @@ export default class DrivesPage {
this.dialogs
.open(new PolymorpheusComponent(PreserveOverwriteDialog), {
- label: 'StartOS Data Detected',
+ label: this.i18n.transform('StartOS Data Detected'),
size: 's',
dismissible: true,
closeable: true,
@@ -277,15 +284,15 @@ export default class DrivesPage {
private showOsDriveWarning() {
this.dialogs
.open(TUI_CONFIRM, {
- label: 'Warning',
+ label: this.i18n.transform('Warning'),
size: 's',
data: {
content: `
-Data on the OS drive may be overwritten.
-your StartOS data on the data drive will be preserved.
+${this.i18n.transform('Data on the OS drive may be overwritten.')}
+${this.i18n.transform('your StartOS data on the data drive will be preserved.')}
`,
- yes: 'Continue',
- no: 'Cancel',
+ yes: this.i18n.transform('Continue'),
+ no: this.i18n.transform('Cancel'),
},
})
.pipe(filter(Boolean))
@@ -296,17 +303,17 @@ export default class DrivesPage {
private showFullWarning(sameDevice: boolean) {
const message = sameDevice
- ? `Data on this drive will be overwritten.
`
- : `Data on both drives will be overwritten.
`
+ ? `${this.i18n.transform('Data on this drive will be overwritten.')}
`
+ : `${this.i18n.transform('Data on both drives will be overwritten.')}
`
this.dialogs
.open(TUI_CONFIRM, {
- label: 'Warning',
+ label: this.i18n.transform('Warning'),
size: 's',
data: {
content: message,
- yes: 'Continue',
- no: 'Cancel',
+ yes: this.i18n.transform('Continue'),
+ no: this.i18n.transform('Cancel'),
},
})
.pipe(filter(Boolean))
diff --git a/web/projects/setup-wizard/src/app/pages/home.page.ts b/web/projects/setup-wizard/src/app/pages/home.page.ts
index d88845c4a..43cc1ed21 100644
--- a/web/projects/setup-wizard/src/app/pages/home.page.ts
+++ b/web/projects/setup-wizard/src/app/pages/home.page.ts
@@ -1,5 +1,6 @@
import { Component, inject } from '@angular/core'
import { Router } from '@angular/router'
+import { i18nPipe } from '@start9labs/shared'
import { TuiAppearance, TuiTitle } from '@taiga-ui/core'
import { TuiAvatar } from '@taiga-ui/kit'
import { TuiCardLarge, TuiCell, TuiHeader } from '@taiga-ui/layout'
@@ -9,31 +10,33 @@ import { StateService } from '../services/state.service'
template: `
- Select Setup Flow
+ {{ 'Select Setup Flow' | i18n }}
- Start Fresh
-
Set up a brand new server
+ {{ 'Start Fresh' | i18n }}
+
{{ 'Set up a brand new server' | i18n }}
- Restore from Backup
-
Restore StartOS data from an encrypted backup
+ {{ 'Restore from Backup' | i18n }}
+
+ {{ 'Restore StartOS data from an encrypted backup' | i18n }}
+
- Transfer
+ {{ 'Transfer' | i18n }}
- Transfer data from an existing StartOS data drive
+ {{ 'Transfer data from an existing StartOS data drive' | i18n }}
@@ -46,6 +49,7 @@ import { StateService } from '../services/state.service'
TuiCell,
TuiTitle,
TuiAvatar,
+ i18nPipe,
],
})
export default class HomePage {
diff --git a/web/projects/setup-wizard/src/app/pages/keyboard.page.ts b/web/projects/setup-wizard/src/app/pages/keyboard.page.ts
index 0bdb9cdfe..7ed0fda2c 100644
--- a/web/projects/setup-wizard/src/app/pages/keyboard.page.ts
+++ b/web/projects/setup-wizard/src/app/pages/keyboard.page.ts
@@ -1,6 +1,7 @@
import { Component, inject } from '@angular/core'
import { Router } from '@angular/router'
import { FormsModule } from '@angular/forms'
+import { i18nPipe } from '@start9labs/shared'
import { TUI_IS_MOBILE } from '@taiga-ui/cdk'
import { TuiButton, TuiTextfield, TuiTitle } from '@taiga-ui/core'
import { TuiChevron, TuiDataListWrapper, TuiSelect } from '@taiga-ui/kit'
@@ -12,14 +13,14 @@ import { Keyboard, getKeyboardsForLanguage } from '../utils/languages'
template: `
- Select Keyboard Layout
+ {{ 'Select Keyboard Layout' | i18n }}
- Keyboard
+ {{ 'Keyboard' | i18n }}
@if (mobile) {
} @else {
@@ -36,7 +37,7 @@ import { Keyboard, getKeyboardsForLanguage } from '../utils/languages'
- Continue
+ {{ 'Continue' | i18n }}
@@ -65,6 +66,7 @@ import { Keyboard, getKeyboardsForLanguage } from '../utils/languages'
TuiDataListWrapper,
TuiHeader,
TuiTitle,
+ i18nPipe,
],
})
export default class KeyboardPage {
diff --git a/web/projects/setup-wizard/src/app/pages/language.page.ts b/web/projects/setup-wizard/src/app/pages/language.page.ts
index af5193d9d..d7a5af24a 100644
--- a/web/projects/setup-wizard/src/app/pages/language.page.ts
+++ b/web/projects/setup-wizard/src/app/pages/language.page.ts
@@ -1,6 +1,7 @@
import { Component, inject } from '@angular/core'
import { Router } from '@angular/router'
import { FormsModule } from '@angular/forms'
+import { i18nPipe, i18nService } from '@start9labs/shared'
import { TUI_IS_MOBILE } from '@taiga-ui/cdk'
import { TuiButton, TuiTextfield, TuiTitle } from '@taiga-ui/core'
import { TuiChevron, TuiDataListWrapper, TuiSelect } from '@taiga-ui/kit'
@@ -20,22 +21,30 @@ import {
- Welcome to StartOS
+ {{ 'Welcome to' | i18n }} StartOS
- Select your language
+ {{ 'Select your language' | i18n }}
-
- Language
+ {{ 'Language' | i18n }}
@if (mobile) {
-
+
} @else {
-
+
}
@if (!mobile) {
+ @let lang = asLanguage(item);
- {{ item.nativeName }}
- @if (item.name !== item.nativeName) {
- {{ item.name }}
- }
+ {{ lang.nativeName }}
+ {{ lang.tuiName | i18n }}
- Continue
+ {{ 'Continue' | i18n }}
@@ -90,29 +98,43 @@ import {
TuiDataListWrapper,
TuiHeader,
TuiTitle,
+ i18nPipe,
],
})
export default class LanguagePage {
private readonly router = inject(Router)
private readonly stateService = inject(StateService)
+ private readonly i18nService = inject(i18nService)
protected readonly mobile = inject(TUI_IS_MOBILE)
readonly languages = LANGUAGES
+
selected =
LANGUAGES.find(l => l.code === this.stateService.language) || LANGUAGES[0]
readonly stringify = (lang: Language) => lang.nativeName
+ readonly asLanguage = (item: unknown): Language => item as Language
+
+ constructor() {
+ if (this.selected) {
+ this.i18nService.setLanguage(this.selected.tuiName)
+ }
+ }
+
+ onLanguageChange(language: Language) {
+ if (language) {
+ this.i18nService.setLanguage(language.tuiName)
+ }
+ }
async continue() {
if (this.selected) {
this.stateService.language = this.selected.code
if (this.stateService.kiosk) {
- // Check if we need keyboard selection
if (needsKeyboardSelection(this.selected.code)) {
await this.router.navigate(['/keyboard'])
} else {
- // Auto-select the only keyboard option
this.stateService.keyboard = getDefaultKeyboard(
this.selected.code,
).code
diff --git a/web/projects/setup-wizard/src/app/pages/loading.page.ts b/web/projects/setup-wizard/src/app/pages/loading.page.ts
index a11d152b9..3f971c0e4 100644
--- a/web/projects/setup-wizard/src/app/pages/loading.page.ts
+++ b/web/projects/setup-wizard/src/app/pages/loading.page.ts
@@ -10,7 +10,7 @@ import {
DialogService,
formatProgress,
getErrorMessage,
- i18nKey,
+ i18nPipe,
InitializingComponent,
LoadingService,
} from '@start9labs/shared'
@@ -33,9 +33,11 @@ import { StateService } from '../services/state.service'
template: `
@if (error(); as err) {
- Error initializing server
+ {{ 'Error initializing server' | i18n }}
{{ err }}
- Restart server
+
+ {{ 'Restart server' | i18n }}
+
} @else {
@@ -57,7 +59,7 @@ import { StateService } from '../services/state.service'
--tui-background-neutral-1: rgba(0, 0, 0, 0.1);
}
`,
- imports: [InitializingComponent, TuiButton],
+ imports: [InitializingComponent, TuiButton, i18nPipe],
changeDetection: ChangeDetectionStrategy.OnPush,
})
export default class LoadingPage {
@@ -65,6 +67,7 @@ export default class LoadingPage {
private readonly loader = inject(LoadingService)
private readonly dialog = inject(DialogService)
private readonly router = inject(Router)
+ private readonly i18n = inject(i18nPipe)
readonly type = inject(StateService).setupType
readonly progress = toSignal(
@@ -117,7 +120,7 @@ export default class LoadingPage {
try {
await this.api.restart()
this.dialog
- .openAlert('Wait 1-2 minutes and refresh the page' as i18nKey, {
+ .openAlert('Wait 1-2 minutes and refresh the page', {
label: 'Server is restarting',
})
.subscribe()
diff --git a/web/projects/setup-wizard/src/app/pages/password.page.ts b/web/projects/setup-wizard/src/app/pages/password.page.ts
index 4a721ae4c..adef97f3a 100644
--- a/web/projects/setup-wizard/src/app/pages/password.page.ts
+++ b/web/projects/setup-wizard/src/app/pages/password.page.ts
@@ -8,7 +8,7 @@ import {
ReactiveFormsModule,
Validators,
} from '@angular/forms'
-import { ErrorService, i18nKey, LoadingService } from '@start9labs/shared'
+import { ErrorService, i18nPipe, LoadingService } from '@start9labs/shared'
import { TuiAutoFocus, TuiMapperPipe, TuiValidator } from '@taiga-ui/cdk'
import {
TuiButton,
@@ -31,13 +31,15 @@ import { StateService } from '../services/state.service'
{{
- isRequired ? 'Set Master Password' : 'Set New Password (Optional)'
+ isRequired
+ ? ('Set Master Password' | i18n)
+ : ('Set New Password (Optional)' | i18n)
}}
{{
isRequired
- ? 'Make it good. Write it down.'
- : 'Skip to keep your existing password.'
+ ? ('Make it good. Write it down.' | i18n)
+ : ('Skip to keep your existing password.' | i18n)
}}
@@ -46,7 +48,9 @@ import { StateService } from '../services/state.service'
} @empty {
- No StartOS data drives found
+
+ {{ 'No StartOS data drives found' | i18n }}
+
}
@@ -101,6 +105,7 @@ import { StateService } from '../services/state.service'
TuiLoader,
TuiTitle,
TuiHeader,
+ i18nPipe,
],
})
export default class TransferPage {
@@ -109,6 +114,7 @@ export default class TransferPage {
private readonly dialogs = inject(TuiDialogService)
private readonly errorService = inject(ErrorService)
private readonly stateService = inject(StateService)
+ private readonly i18n = inject(i18nPipe)
loading = true
open = false
@@ -127,14 +133,14 @@ export default class TransferPage {
this.open = false
const WARNING_OPTIONS: Partial> = {
- label: 'Warning',
+ label: this.i18n.transform('Warning'),
size: 's',
data: {
- content: `After transferring data from this drive, do not
- attempt to boot into it again as a Start9 Server. This may result in
- services malfunctioning, data corruption, or loss of funds.`,
- yes: 'Continue',
- no: 'Cancel',
+ content: this.i18n.transform(
+ 'After transferring data from this drive, do not attempt to boot into it again as a Start9 Server. This may result in services malfunctioning, data corruption, or loss of funds.',
+ ),
+ yes: this.i18n.transform('Continue'),
+ no: this.i18n.transform('Cancel'),
},
}
diff --git a/web/projects/setup-wizard/src/app/utils/languages.ts b/web/projects/setup-wizard/src/app/utils/languages.ts
index a32ef2123..034b0fb9b 100644
--- a/web/projects/setup-wizard/src/app/utils/languages.ts
+++ b/web/projects/setup-wizard/src/app/utils/languages.ts
@@ -1,20 +1,22 @@
-export interface Language {
- code: string
- name: string
- nativeName: string
-}
+import { i18nKey } from '@start9labs/shared'
export interface Keyboard {
code: string
name: string
}
+export interface Language {
+ code: string
+ tuiName: i18nKey
+ nativeName: string
+}
+
export const LANGUAGES: Language[] = [
- { code: 'en', name: 'English', nativeName: 'English' },
- { code: 'es', name: 'Spanish', nativeName: 'Español' },
- { code: 'de', name: 'German', nativeName: 'Deutsch' },
- { code: 'fr', name: 'French', nativeName: 'Français' },
- { code: 'pl', name: 'Polish', nativeName: 'Polski' },
+ { code: 'en', tuiName: 'english', nativeName: 'English' },
+ { code: 'es', tuiName: 'spanish', nativeName: 'Español' },
+ { code: 'de', tuiName: 'german', nativeName: 'Deutsch' },
+ { code: 'fr', tuiName: 'french', nativeName: 'Français' },
+ { code: 'pl', tuiName: 'polish', nativeName: 'Polski' },
]
export const KEYBOARDS_BY_LANGUAGE: Record = {
diff --git a/web/projects/shared/src/i18n/dictionaries/de.ts b/web/projects/shared/src/i18n/dictionaries/de.ts
index 082357785..593e1e2d1 100644
--- a/web/projects/shared/src/i18n/dictionaries/de.ts
+++ b/web/projects/shared/src/i18n/dictionaries/de.ts
@@ -597,5 +597,80 @@ export default {
627: 'UI öffnen',
628: 'In Zwischenablage kopiert',
629: 'StartOS wird installiert',
+ 630: 'Wähle deine Sprache',
+ 631: 'Tastaturlayout auswählen',
+ 632: 'Tastatur',
+ 633: 'Einrichtungsablauf auswählen',
+ 634: 'Neu beginnen',
+ 635: 'Einen brandneuen Server einrichten',
+ 636: 'Aus Backup wiederherstellen',
+ 637: 'StartOS-Daten aus einem verschlüsselten Backup wiederherstellen',
+ 638: 'Daten von einem bestehenden StartOS-Datenträger übertragen',
+ 639: 'Laufwerke auswählen',
+ 640: 'Keine Laufwerke gefunden. Bitte schließen Sie ein Laufwerk an und klicken Sie auf Aktualisieren.',
+ 641: 'OS-Laufwerk',
+ 642: 'Datenlaufwerk',
+ 643: 'StartOS-Daten erkannt',
+ 644: 'Daten auf dem OS-Laufwerk könnten überschrieben werden.',
+ 645: 'Ihre StartOS-Daten auf dem Datenlaufwerk bleiben erhalten.',
+ 646: 'Daten auf diesem Laufwerk werden überschrieben.',
+ 647: 'Daten auf beiden Laufwerken werden überschrieben.',
+ 648: 'Backup auswählen',
+ 649: 'Wählen Sie das StartOS-Backup aus, das Sie wiederherstellen möchten',
+ 650: 'Netzwerk-Backup öffnen',
+ 651: 'Physische Backups',
+ 652: 'Keine physischen Backups',
+ 653: 'Netzwerkordner verbinden',
+ 654: 'Netzwerk-Backup auswählen',
+ 655: 'Backup entsperren',
+ 656: 'Daten übertragen',
+ 657: 'Wählen Sie das Laufwerk mit Ihren bestehenden StartOS-Daten aus',
+ 658: 'Laufwerk auswählen',
+ 659: 'Keine StartOS-Datenlaufwerke gefunden',
+ 660: 'Master-Passwort festlegen',
+ 661: 'Neues Passwort festlegen (optional)',
+ 662: 'Machen Sie es gut. Schreiben Sie es auf.',
+ 663: 'Überspringen, um Ihr bestehendes Passwort beizubehalten.',
+ 664: 'Passwort eingeben',
+ 665: 'Passwort bestätigen',
+ 666: 'Fertigstellen',
+ 667: 'Einrichtung wird gestartet',
+ 670: 'Warten Sie 1–2 Minuten und aktualisieren Sie die Seite',
+ 672: 'Einrichtung abgeschlossen!',
+ 673: 'Sie können Ihr Backup-Laufwerk entfernen',
+ 674: 'Sie können Ihr Übertragungs-Laufwerk entfernen',
+ 675: 'http://start.local war nur für die Einrichtung gedacht. Es funktioniert nicht mehr.',
+ 676: 'Adressinformationen herunterladen',
+ 677: 'Enthält die permanente lokale Adresse Ihres Servers und die Root-CA',
+ 678: 'USB-Medium entfernen',
+ 679: 'Entfernen Sie das USB-Installationsmedium aus Ihrem Server',
+ 680: 'Server neu starten',
+ 681: 'Warten, bis der Server wieder online ist',
+ 682: 'Server ist wieder online',
+ 683: 'Starten Sie Ihren Server neu, um die Einrichtung abzuschließen',
+ 684: 'Lokale Adresse öffnen',
+ 685: 'Weiter zur Anmeldung',
+ 686: 'Zur StartOS-Anmeldeseite wechseln',
+ 687: 'Der Server ist nicht wieder online gegangen. Bitte überprüfen Sie Ihren Server und versuchen Sie, manuell darauf zuzugreifen.',
+ 691: 'Dieses Feld ist erforderlich',
+ 692: 'Verbindung fehlgeschlagen',
+ 693: 'Verbindung zum Netzwerkordner nicht möglich. Stellen Sie sicher, dass (1) der Zielcomputer mit dem LAN verbunden ist, (2) der Zielordner freigegeben ist und (3) Hostname, Pfad und Anmeldedaten korrekt sind.',
+ 694: 'Dieses Laufwerk enthält bestehende StartOS-Daten.',
+ 695: 'um Ihre Daten zu behalten.',
+ 696: 'um zu verwerfen',
+ 697: 'Geben Sie das Passwort ein, das zum Verschlüsseln dieses Backups verwendet wurde.',
+ 698: 'Mehrere Backups gefunden. Wählen Sie aus, welches wiederhergestellt werden soll.',
+ 699: 'Backups',
+ 700: 'Das Laufwerk, auf dem das StartOS-Betriebssystem installiert wird.',
+ 701: 'Das Laufwerk, auf dem Ihre StartOS-Daten (Dienste, Einstellungen usw.) gespeichert werden. Dies kann dasselbe wie das OS-Laufwerk oder ein separates Laufwerk sein.',
+ 702: 'Versuchen Sie nach der Datenübertragung von diesem Laufwerk nicht, erneut als Start9-Server davon zu booten. Dies kann zu Fehlfunktionen von Diensten, Datenbeschädigung oder Geldverlust führen.',
+ 703: 'Muss mindestens 12 Zeichen lang sein',
+ 704: 'Darf höchstens 64 Zeichen lang sein',
+ 705: 'Passwörter stimmen nicht überein',
+ 706: 'Beibehalten',
+ 707: 'Überschreiben',
+ 708: 'Entsperren',
+ 709: 'Laufwerk',
+ 710: 'Übertragen',
711: 'Die Liste ist leer',
} satisfies i18n
diff --git a/web/projects/shared/src/i18n/dictionaries/en.ts b/web/projects/shared/src/i18n/dictionaries/en.ts
index fdf5c1abf..bed021c85 100644
--- a/web/projects/shared/src/i18n/dictionaries/en.ts
+++ b/web/projects/shared/src/i18n/dictionaries/en.ts
@@ -595,6 +595,82 @@ export const ENGLISH = {
'Upload': 626, // as in, upload a file
'Open UI': 627, // as in, upload a file
'Copied to clipboard': 628,
+ // Setup wizard keys
'Installing StartOS': 629,
+ 'Select your language': 630,
+ 'Select Keyboard Layout': 631,
+ 'Keyboard': 632,
+ 'Select Setup Flow': 633,
+ 'Start Fresh': 634,
+ 'Set up a brand new server': 635,
+ 'Restore from Backup': 636,
+ 'Restore StartOS data from an encrypted backup': 637,
+ 'Transfer data from an existing StartOS data drive': 638,
+ 'Select Drives': 639, // as in storage devices
+ 'No drives found. Please connect a drive and click Refresh.': 640,
+ 'OS Drive': 641,
+ 'Data Drive': 642,
+ 'StartOS Data Detected': 643,
+ 'Data on the OS drive may be overwritten.': 644,
+ 'your StartOS data on the data drive will be preserved.': 645,
+ 'Data on this drive will be overwritten.': 646,
+ 'Data on both drives will be overwritten.': 647,
+ 'Select Backup': 648,
+ 'Select the StartOS backup you want to restore': 649,
+ 'Open Network Backup': 650, // as in, a backup stored on a networked device
+ 'Physical Backups': 651, // as in, a backup stored on a physical drive
+ 'No physical backups': 652,
+ 'Connect Network Folder': 653,
+ 'Select Network Backup': 654,
+ 'Unlock Backup': 655,
+ 'Transfer Data': 656,
+ 'Select the drive containing your existing StartOS data': 657,
+ 'Select Drive': 658,
+ 'No StartOS data drives found': 659,
+ 'Set Master Password': 660,
+ 'Set New Password (Optional)': 661,
+ 'Make it good. Write it down.': 662,
+ 'Skip to keep your existing password.': 663,
+ 'Enter Password': 664,
+ 'Confirm Password': 665,
+ 'Finish': 666,
+ 'Starting setup': 667,
+ 'Wait 1-2 minutes and refresh the page': 670,
+ 'Setup Complete!': 672,
+ 'You can unplug your backup drive': 673,
+ 'You can unplug your transfer drive': 674,
+ 'http://start.local was for setup only. It will no longer work.': 675,
+ 'Download Address Info': 676,
+ "Contains your server's permanent local address and Root CA": 677,
+ 'Remove USB Media': 678,
+ 'Remove the USB installation media from your server': 679,
+ 'Restart Server': 680,
+ 'Waiting for server to come back online': 681,
+ 'Server is back online': 682,
+ 'Restart your server to complete setup': 683,
+ 'Open Local Address': 684,
+ 'Continue to Login': 685,
+ 'Proceed to the StartOS login screen': 686,
+ 'Server did not come back online. Please check your server and try accessing it manually.': 687,
+ 'This field is required': 691,
+ 'Connection Failed': 692,
+ 'Unable to connect to network folder. Ensure (1) target computer is connected to LAN, (2) target folder is being shared, and (3) hostname, path, and credentials are accurate.': 693,
+ 'This drive contains existing StartOS data.': 694,
+ 'to keep your data.': 695,
+ 'to discard': 696,
+ 'Enter the password that was used to encrypt this backup.': 697,
+ 'Multiple backups found. Select which one to restore.': 698,
+ 'Backups': 699,
+ 'The drive where the StartOS operating system will be installed.': 700,
+ 'The drive where your StartOS data (services, settings, etc.) will be stored. This can be the same as the OS drive or a separate drive.': 701,
+ 'After transferring data from this drive, do not attempt to boot into it again as a Start9 Server. This may result in services malfunctioning, data corruption, or loss of funds.': 702,
+ 'Must be 12 characters or greater': 703,
+ 'Must be 64 character or less': 704,
+ 'Passwords do not match': 705,
+ 'Preserve': 706,
+ 'Overwrite': 707,
+ 'Unlock': 708,
+ 'Drive': 709, // as in, a storage device
+ 'Transfer': 710, // the verb
'The list is empty': 711,
} as const
diff --git a/web/projects/shared/src/i18n/dictionaries/es.ts b/web/projects/shared/src/i18n/dictionaries/es.ts
index 40a909415..dbabf0512 100644
--- a/web/projects/shared/src/i18n/dictionaries/es.ts
+++ b/web/projects/shared/src/i18n/dictionaries/es.ts
@@ -597,5 +597,80 @@ export default {
627: 'Abrir UI',
628: 'Copiado al portapapeles',
629: 'Instalando StartOS',
+ 630: 'Selecciona tu idioma',
+ 631: 'Seleccionar distribución del teclado',
+ 632: 'Teclado',
+ 633: 'Seleccionar flujo de configuración',
+ 634: 'Empezar desde cero',
+ 635: 'Configurar un servidor completamente nuevo',
+ 636: 'Restaurar desde copia de seguridad',
+ 637: 'Restaurar datos de StartOS desde una copia de seguridad cifrada',
+ 638: 'Transferir datos desde una unidad de datos StartOS existente',
+ 639: 'Seleccionar unidades',
+ 640: 'No se encontraron unidades. Conecte una unidad y haga clic en Actualizar.',
+ 641: 'Unidad del sistema operativo',
+ 642: 'Unidad de datos',
+ 643: 'Datos de StartOS detectados',
+ 644: 'Los datos de la unidad del sistema operativo pueden sobrescribirse.',
+ 645: 'Sus datos de StartOS en la unidad de datos se conservarán.',
+ 646: 'Los datos de esta unidad se sobrescribirán.',
+ 647: 'Los datos de ambas unidades se sobrescribirán.',
+ 648: 'Seleccionar copia de seguridad',
+ 649: 'Seleccione la copia de seguridad de StartOS que desea restaurar',
+ 650: 'Abrir copia de seguridad de red',
+ 651: 'Copias de seguridad físicas',
+ 652: 'No hay copias de seguridad físicas',
+ 653: 'Conectar carpeta de red',
+ 654: 'Seleccionar copia de seguridad de red',
+ 655: 'Desbloquear copia de seguridad',
+ 656: 'Transferir datos',
+ 657: 'Seleccione la unidad que contiene sus datos StartOS existentes',
+ 658: 'Seleccionar unidad',
+ 659: 'No se encontraron unidades de datos StartOS',
+ 660: 'Establecer contraseña maestra',
+ 661: 'Establecer nueva contraseña (opcional)',
+ 662: 'Que sea buena. Escríbala.',
+ 663: 'Omitir para mantener su contraseña existente.',
+ 664: 'Introducir contraseña',
+ 665: 'Confirmar contraseña',
+ 666: 'Finalizar',
+ 667: 'Iniciando configuración',
+ 670: 'Espere 1–2 minutos y actualice la página',
+ 672: '¡Configuración completa!',
+ 673: 'Puede desconectar su unidad de copia de seguridad',
+ 674: 'Puede desconectar su unidad de transferencia',
+ 675: 'http://start.local era solo para la configuración. Ya no funcionará.',
+ 676: 'Descargar información de direcciones',
+ 677: 'Contiene la dirección local permanente de su servidor y la CA raíz',
+ 678: 'Retirar medio USB',
+ 679: 'Retire el medio de instalación USB de su servidor',
+ 680: 'Reiniciar servidor',
+ 681: 'Esperando a que el servidor vuelva a estar en línea',
+ 682: 'El servidor ha vuelto a estar en línea',
+ 683: 'Reinicie su servidor para completar la configuración',
+ 684: 'Abrir dirección local',
+ 685: 'Continuar al inicio de sesión',
+ 686: 'Ir a la pantalla de inicio de sesión de StartOS',
+ 687: 'El servidor no volvió a estar en línea. Verifique su servidor e intente acceder manualmente.',
+ 691: 'Este campo es obligatorio',
+ 692: 'Conexión fallida',
+ 693: 'No se pudo conectar a la carpeta de red. Asegúrese de que (1) el equipo de destino esté conectado a la LAN, (2) la carpeta de destino esté compartida y (3) el nombre de host, la ruta y las credenciales sean correctos.',
+ 694: 'Esta unidad contiene datos existentes de StartOS.',
+ 695: 'para conservar sus datos.',
+ 696: 'para descartar',
+ 697: 'Introduzca la contraseña que se utilizó para cifrar esta copia de seguridad.',
+ 698: 'Se encontraron varias copias de seguridad. Seleccione cuál restaurar.',
+ 699: 'Copias de seguridad',
+ 700: 'La unidad donde se instalará el sistema operativo StartOS.',
+ 701: 'La unidad donde se almacenarán sus datos de StartOS (servicios, ajustes, etc.). Puede ser la misma que la unidad del sistema operativo o una unidad separada.',
+ 702: 'Después de transferir datos desde esta unidad, no intente arrancar desde ella nuevamente como un servidor Start9. Esto puede provocar fallos en los servicios, corrupción de datos o pérdida de fondos.',
+ 703: 'Debe tener 12 caracteres o más',
+ 704: 'Debe tener 64 caracteres o menos',
+ 705: 'Las contraseñas no coinciden',
+ 706: 'Conservar',
+ 707: 'Sobrescribir',
+ 708: 'Desbloquear',
+ 709: 'Unidad',
+ 710: 'Transferir',
711: 'La lista está vacía',
} satisfies i18n
diff --git a/web/projects/shared/src/i18n/dictionaries/fr.ts b/web/projects/shared/src/i18n/dictionaries/fr.ts
index a7aec7a8e..dc1b99b10 100644
--- a/web/projects/shared/src/i18n/dictionaries/fr.ts
+++ b/web/projects/shared/src/i18n/dictionaries/fr.ts
@@ -597,5 +597,80 @@ export default {
627: 'Ouvrir UI',
628: 'Copié dans le presse-papiers',
629: 'Installation de StartOS',
+ 630: 'Sélectionnez votre langue',
+ 631: 'Sélectionner la disposition du clavier',
+ 632: 'Clavier',
+ 633: 'Sélectionner le mode de configuration',
+ 634: 'Démarrer à neuf',
+ 635: 'Configurer un tout nouveau serveur',
+ 636: 'Restaurer à partir d’une sauvegarde',
+ 637: 'Restaurer les données StartOS à partir d’une sauvegarde chiffrée',
+ 638: 'Transférer les données depuis un disque de données StartOS existant',
+ 639: 'Sélectionner les disques',
+ 640: 'Aucun disque trouvé. Veuillez connecter un disque et cliquer sur Actualiser.',
+ 641: 'Disque du système',
+ 642: 'Disque de données',
+ 643: 'Données StartOS détectées',
+ 644: 'Les données du disque système peuvent être écrasées.',
+ 645: 'Vos données StartOS sur le disque de données seront conservées.',
+ 646: 'Les données de ce disque seront écrasées.',
+ 647: 'Les données des deux disques seront écrasées.',
+ 648: 'Sélectionner une sauvegarde',
+ 649: 'Sélectionnez la sauvegarde StartOS que vous souhaitez restaurer',
+ 650: 'Ouvrir une sauvegarde réseau',
+ 651: 'Sauvegardes physiques',
+ 652: 'Aucune sauvegarde physique',
+ 653: 'Connecter un dossier réseau',
+ 654: 'Sélectionner une sauvegarde réseau',
+ 655: 'Déverrouiller la sauvegarde',
+ 656: 'Transférer les données',
+ 657: 'Sélectionnez le disque contenant vos données StartOS existantes',
+ 658: 'Sélectionner le disque',
+ 659: 'Aucun disque de données StartOS trouvé',
+ 660: 'Définir le mot de passe maître',
+ 661: 'Définir un nouveau mot de passe (facultatif)',
+ 662: 'Choisissez-le bien. Notez-le.',
+ 663: 'Ignorer pour conserver votre mot de passe existant.',
+ 664: 'Saisir le mot de passe',
+ 665: 'Confirmer le mot de passe',
+ 666: 'Terminer',
+ 667: 'Démarrage de la configuration',
+ 670: 'Attendez 1 à 2 minutes puis actualisez la page',
+ 672: 'Configuration terminée !',
+ 673: 'Vous pouvez débrancher votre disque de sauvegarde',
+ 674: 'Vous pouvez débrancher votre disque de transfert',
+ 675: 'http://start.local était réservé à la configuration. Il ne fonctionnera plus.',
+ 676: 'Télécharger les informations d’adresse',
+ 677: 'Contient l’adresse locale permanente de votre serveur et la CA racine',
+ 678: 'Retirer le support USB',
+ 679: 'Retirez le support d’installation USB de votre serveur',
+ 680: 'Redémarrer le serveur',
+ 681: 'En attente du retour en ligne du serveur',
+ 682: 'Le serveur est de nouveau en ligne',
+ 683: 'Redémarrez votre serveur pour terminer la configuration',
+ 684: 'Ouvrir l’adresse locale',
+ 685: 'Continuer vers la connexion',
+ 686: 'Accéder à l’écran de connexion StartOS',
+ 687: 'Le serveur n’est pas revenu en ligne. Veuillez vérifier votre serveur et essayer d’y accéder manuellement.',
+ 691: 'Ce champ est requis',
+ 692: 'Échec de la connexion',
+ 693: 'Impossible de se connecter au dossier réseau. Assurez-vous que (1) l’ordinateur cible est connecté au LAN, (2) le dossier cible est partagé et (3) le nom d’hôte, le chemin et les identifiants sont corrects.',
+ 694: 'Ce disque contient des données StartOS existantes.',
+ 695: 'pour conserver vos données.',
+ 696: 'pour supprimer',
+ 697: 'Saisissez le mot de passe utilisé pour chiffrer cette sauvegarde.',
+ 698: 'Plusieurs sauvegardes trouvées. Sélectionnez celle à restaurer.',
+ 699: 'Sauvegardes',
+ 700: 'Le disque sur lequel le système d’exploitation StartOS sera installé.',
+ 701: 'Le disque sur lequel vos données StartOS (services, paramètres, etc.) seront stockées. Il peut s’agir du même disque que le système ou d’un disque séparé.',
+ 702: 'Après le transfert des données depuis ce disque, n’essayez pas de démarrer dessus à nouveau en tant que serveur Start9. Cela peut entraîner des dysfonctionnements des services, une corruption des données ou une perte de fonds.',
+ 703: 'Doit comporter au moins 12 caractères',
+ 704: 'Doit comporter au maximum 64 caractères',
+ 705: 'Les mots de passe ne correspondent pas',
+ 706: 'Conserver',
+ 707: 'Écraser',
+ 708: 'Déverrouiller',
+ 709: 'Disque',
+ 710: 'Transférer',
711: 'La liste est vide',
} satisfies i18n
diff --git a/web/projects/shared/src/i18n/dictionaries/pl.ts b/web/projects/shared/src/i18n/dictionaries/pl.ts
index 711ceb2fb..dd02ac4c2 100644
--- a/web/projects/shared/src/i18n/dictionaries/pl.ts
+++ b/web/projects/shared/src/i18n/dictionaries/pl.ts
@@ -597,5 +597,80 @@ export default {
627: 'Otwórz UI',
628: 'Skopiowano do schowka',
629: 'Instalowanie StartOS',
+ 630: 'Wybierz swój język',
+ 631: 'Wybierz układ klawiatury',
+ 632: 'Klawiatura',
+ 633: 'Wybierz tryb konfiguracji',
+ 634: 'Rozpocznij od nowa',
+ 635: 'Skonfiguruj zupełnie nowy serwer',
+ 636: 'Przywróć z kopii zapasowej',
+ 637: 'Przywróć dane StartOS z zaszyfrowanej kopii zapasowej',
+ 638: 'Przenieś dane z istniejącego dysku danych StartOS',
+ 639: 'Wybierz dyski',
+ 640: 'Nie znaleziono dysków. Podłącz dysk i kliknij Odśwież.',
+ 641: 'Dysk systemowy',
+ 642: 'Dysk danych',
+ 643: 'Wykryto dane StartOS',
+ 644: 'Dane na dysku systemowym mogą zostać nadpisane.',
+ 645: 'Twoje dane StartOS na dysku danych zostaną zachowane.',
+ 646: 'Dane na tym dysku zostaną nadpisane.',
+ 647: 'Dane na obu dyskach zostaną nadpisane.',
+ 648: 'Wybierz kopię zapasową',
+ 649: 'Wybierz kopię zapasową StartOS do przywrócenia',
+ 650: 'Otwórz kopię zapasową sieciową',
+ 651: 'Kopie zapasowe fizyczne',
+ 652: 'Brak fizycznych kopii zapasowych',
+ 653: 'Połącz folder sieciowy',
+ 654: 'Wybierz kopię zapasową sieciową',
+ 655: 'Odblokuj kopię zapasową',
+ 656: 'Przenieś dane',
+ 657: 'Wybierz dysk zawierający istniejące dane StartOS',
+ 658: 'Wybierz dysk',
+ 659: 'Nie znaleziono dysków danych StartOS',
+ 660: 'Ustaw hasło główne',
+ 661: 'Ustaw nowe hasło (opcjonalnie)',
+ 662: 'Zadbaj o nie. Zapisz je.',
+ 663: 'Pomiń, aby zachować istniejące hasło.',
+ 664: 'Wprowadź hasło',
+ 665: 'Potwierdź hasło',
+ 666: 'Zakończ',
+ 667: 'Rozpoczynanie konfiguracji',
+ 670: 'Poczekaj 1–2 minuty i odśwież stronę',
+ 672: 'Konfiguracja zakończona!',
+ 673: 'Możesz odłączyć dysk kopii zapasowej',
+ 674: 'Możesz odłączyć dysk transferowy',
+ 675: 'http://start.local służył tylko do konfiguracji. Nie będzie już działać.',
+ 676: 'Pobierz informacje adresowe',
+ 677: 'Zawiera stały lokalny adres serwera oraz główny urząd certyfikacji (Root CA)',
+ 678: 'Usuń nośnik USB',
+ 679: 'Usuń instalacyjny nośnik USB z serwera',
+ 680: 'Uruchom ponownie serwer',
+ 681: 'Oczekiwanie na ponowne połączenie serwera',
+ 682: 'Serwer jest ponownie online',
+ 683: 'Uruchom ponownie serwer, aby zakończyć konfigurację',
+ 684: 'Otwórz adres lokalny',
+ 685: 'Przejdź do logowania',
+ 686: 'Przejdź do ekranu logowania StartOS',
+ 687: 'Serwer nie wrócił do trybu online. Sprawdź serwer i spróbuj uzyskać do niego dostęp ręcznie.',
+ 691: 'To pole jest wymagane',
+ 692: 'Nie udało się połączyć',
+ 693: 'Nie można połączyć się z folderem sieciowym. Upewnij się, że (1) komputer docelowy jest podłączony do sieci LAN, (2) folder docelowy jest udostępniony oraz (3) nazwa hosta, ścieżka i dane logowania są poprawne.',
+ 694: 'Ten dysk zawiera istniejące dane StartOS.',
+ 695: 'aby zachować dane.',
+ 696: 'aby odrzucić',
+ 697: 'Wprowadź hasło użyte do zaszyfrowania tej kopii zapasowej.',
+ 698: 'Znaleziono wiele kopii zapasowych. Wybierz, którą przywrócić.',
+ 699: 'Kopie zapasowe',
+ 700: 'Dysk, na którym zostanie zainstalowany system operacyjny StartOS.',
+ 701: 'Dysk, na którym będą przechowywane dane StartOS (usługi, ustawienia itp.). Może to być ten sam dysk co systemowy lub oddzielny dysk.',
+ 702: 'Po przeniesieniu danych z tego dysku nie próbuj ponownie uruchamiać z niego systemu jako serwer Start9. Może to spowodować nieprawidłowe działanie usług, uszkodzenie danych lub utratę środków.',
+ 703: 'Musi mieć co najmniej 12 znaków',
+ 704: 'Musi mieć maksymalnie 64 znaki',
+ 705: 'Hasła nie są zgodne',
+ 706: 'Zachowaj',
+ 707: 'Nadpisz',
+ 708: 'Odblokuj',
+ 709: 'Dysk',
+ 710: 'Przenieś',
711: 'Lista jest pusta',
} satisfies i18n