diff --git a/backend/endpoints/heartbeat.py b/backend/endpoints/heartbeat.py
index 4765031dd..1923611aa 100644
--- a/backend/endpoints/heartbeat.py
+++ b/backend/endpoints/heartbeat.py
@@ -268,14 +268,6 @@ async def create_setup_platforms(request: Request, platform_slugs: list[str]):
- message: success or error message
"""
- # Check authentication - only allow public access if no admin users
- admin_users = db_user_handler.get_admin_users()
- if len(admin_users) > 0:
- raise HTTPException(
- status_code=status.HTTP_403_FORBIDDEN,
- detail="Setup endpoints only accessible during initial setup",
- )
-
if not platform_slugs:
return {
"success": True,
@@ -302,7 +294,6 @@ async def create_setup_platforms(request: Request, platform_slugs: list[str]):
await fs_platform_handler.add_platform(fs_slug=fs_slug)
created_count += 1
except PlatformAlreadyExistsException:
- # Platform already exists, skip
continue
except (PermissionError, OSError) as e:
failed_platforms.append(f"{fs_slug}: {str(e)}")
diff --git a/frontend/src/locales/cs_CZ/settings.json b/frontend/src/locales/cs_CZ/settings.json
index 19f57bb2a..517bedac2 100644
--- a/frontend/src/locales/cs_CZ/settings.json
+++ b/frontend/src/locales/cs_CZ/settings.json
@@ -94,5 +94,8 @@
"update": "Aktualizovat",
"username": "Uživatelské jméno",
"virtual-collection-type": "Typ virtuální kolekce (způsob seskupování ROM)",
- "watcher": "Sledovač"
+ "watcher": "Sledovač",
+ "passwords-must-match": "Hesla se musí shodovat",
+ "repeat-password": "Opakujte heslo",
+ "repeat-password-required": "Je vyžadováno opakování hesla"
}
diff --git a/frontend/src/locales/cs_CZ/setup.json b/frontend/src/locales/cs_CZ/setup.json
new file mode 100644
index 000000000..faa5357f4
--- /dev/null
+++ b/frontend/src/locales/cs_CZ/setup.json
@@ -0,0 +1,28 @@
+{
+ "admin-user-step": "Vytvořit administrátorského uživatele",
+ "available-platforms": "Dostupné platformy",
+ "cancel": "Zrušit",
+ "check-metadata-step": "Zkontrolovat zdroje metadat",
+ "confirm-create-platforms": "RomM vytvoří strukturu {structure} ({pattern}) s {count} platforma{plural}. Pokračovat?",
+ "confirm-no-platforms": "Nebyla detekována žádná struktura složek a nebyly vybrány žádné platformy. Budete muset vytvořit strukturu složek ručně. Pokračovat?",
+ "confirm-no-structure": "Nebyla detekována žádná struktura složek. RomM vytvoří strukturu A (roms/{platform}) s {count} platforma{plural}. Pokračovat?",
+ "continue": "Pokračovat",
+ "detected-platforms": "Detekované platformy",
+ "deselect-all": "Zrušit výběr všech",
+ "finish": "Dokončit",
+ "folder-structure": "Struktura složek",
+ "game": "hra",
+ "games": "hry",
+ "library-structure-step": "Nastavit strukturu knihovny",
+ "metadata-missing": "Chybí nebo je neplatný API klíč",
+ "next": "Další",
+ "no-structure-detected": "Nebyla detekována žádná struktura - bude vytvořena struktura A",
+ "platform": "platforma",
+ "platforms": "platformy",
+ "previous": "předchozí",
+ "select-all": "Vybrat vše",
+ "select-platforms": "Vyberte platformy k vytvoření",
+ "selected": "vybráno",
+ "structure-a-detected": "Detekována struktura A",
+ "structure-b-detected": "Detekována struktura B"
+}
diff --git a/frontend/src/locales/de_DE/settings.json b/frontend/src/locales/de_DE/settings.json
index 2afcc10ef..1979acd4a 100644
--- a/frontend/src/locales/de_DE/settings.json
+++ b/frontend/src/locales/de_DE/settings.json
@@ -94,5 +94,8 @@
"update": "Aktualisieren",
"username": "Benutzername",
"virtual-collection-type": "Typ der automatisch generierten Sammlung (ROM-Gruppierungsmethode)",
- "watcher": "Überwacher"
+ "watcher": "Überwacher",
+ "passwords-must-match": "Passwörter müssen übereinstimmen",
+ "repeat-password": "Passwort wiederholen",
+ "repeat-password-required": "Passwortwiederholung erforderlich"
}
diff --git a/frontend/src/locales/de_DE/setup.json b/frontend/src/locales/de_DE/setup.json
new file mode 100644
index 000000000..a17aa5efd
--- /dev/null
+++ b/frontend/src/locales/de_DE/setup.json
@@ -0,0 +1,28 @@
+{
+ "admin-user-step": "Administrator-Benutzer erstellen",
+ "available-platforms": "Verfügbare Plattformen",
+ "cancel": "Abbrechen",
+ "check-metadata-step": "Metadatenquellen überprüfen",
+ "confirm-create-platforms": "RomM erstellt Struktur {structure} ({pattern}) mit {count} Plattform{plural}. Fortfahren?",
+ "confirm-no-platforms": "Keine Ordnerstruktur erkannt und keine Plattformen ausgewählt. Sie müssen die Ordnerstruktur manuell erstellen. Fortfahren?",
+ "confirm-no-structure": "Keine Ordnerstruktur erkannt. RomM erstellt Struktur A (roms/{platform}) mit {count} Plattform{plural}. Fortfahren?",
+ "continue": "Fortfahren",
+ "detected-platforms": "Erkannte Plattformen",
+ "deselect-all": "Alle abwählen",
+ "finish": "Fertig",
+ "folder-structure": "Ordnerstruktur",
+ "game": "Spiel",
+ "games": "Spiele",
+ "library-structure-step": "Bibliotheksstruktur einrichten",
+ "metadata-missing": "API-Schlüssel fehlt oder ist ungültig",
+ "next": "Weiter",
+ "no-structure-detected": "Keine Struktur erkannt - Struktur A wird erstellt",
+ "platform": "Plattform",
+ "platforms": "Plattformen",
+ "previous": "zurück",
+ "select-all": "Alle auswählen",
+ "select-platforms": "Plattformen zum Erstellen auswählen",
+ "selected": "ausgewählt",
+ "structure-a-detected": "Struktur A erkannt",
+ "structure-b-detected": "Struktur B erkannt"
+}
diff --git a/frontend/src/locales/en_GB/settings.json b/frontend/src/locales/en_GB/settings.json
index 0e2870991..8b63fb441 100644
--- a/frontend/src/locales/en_GB/settings.json
+++ b/frontend/src/locales/en_GB/settings.json
@@ -94,5 +94,8 @@
"update": "Update",
"username": "Username",
"virtual-collection-type": "Virtual collection type (ROM grouping method)",
- "watcher": "Watcher"
+ "watcher": "Watcher",
+ "passwords-must-match": "Passwords must match",
+ "repeat-password": "Repeat password",
+ "repeat-password-required": "Repeat password is required"
}
diff --git a/frontend/src/locales/en_GB/setup.json b/frontend/src/locales/en_GB/setup.json
new file mode 100644
index 000000000..9f6f970e9
--- /dev/null
+++ b/frontend/src/locales/en_GB/setup.json
@@ -0,0 +1,28 @@
+{
+ "admin-user-step": "Create an admin user",
+ "available-platforms": "Available Platforms",
+ "cancel": "Cancel",
+ "check-metadata-step": "Check metadata sources",
+ "confirm-create-platforms": "RomM will create Structure {structure} ({pattern}) with {count} platform{plural}. Continue?",
+ "confirm-no-platforms": "No folder structure detected and no platforms selected. You will need to create the folder structure manually. Continue?",
+ "confirm-no-structure": "No folder structure detected. RomM will create Structure A (roms/{platform}) with {count} platform{plural}. Continue?",
+ "continue": "Continue",
+ "detected-platforms": "Detected Platforms",
+ "deselect-all": "Deselect All",
+ "finish": "Finish",
+ "folder-structure": "Folder structure",
+ "game": "game",
+ "games": "games",
+ "library-structure-step": "Setup library structure",
+ "metadata-missing": "API key missing or invalid",
+ "next": "Next",
+ "no-structure-detected": "No structure detected - Structure A will be created",
+ "platform": "platform",
+ "platforms": "platforms",
+ "previous": "previous",
+ "select-all": "Select All",
+ "select-platforms": "Select Platforms to Create",
+ "selected": "selected",
+ "structure-a-detected": "Structure A detected",
+ "structure-b-detected": "Structure B detected"
+}
diff --git a/frontend/src/locales/en_US/settings.json b/frontend/src/locales/en_US/settings.json
index 6a71aaf97..ea5d0a22b 100644
--- a/frontend/src/locales/en_US/settings.json
+++ b/frontend/src/locales/en_US/settings.json
@@ -41,6 +41,7 @@
"no-tasks-in-history": "No tasks in history",
"password": "Password",
"password-placeholder": "Leave empty to keep current password",
+ "passwords-must-match": "Passwords must match",
"platform-version": "Platform version",
"platforms-bindings": "Platforms bindings",
"platforms-drawer": "Platforms menu",
@@ -51,6 +52,8 @@
"recently-added-as-grid": "Recently added roms as grid",
"recently-added-as-grid-desc": "View recently added rom cards as a grid at the home page",
"removed": "Removed",
+ "repeat-password": "Repeat password",
+ "repeat-password-required": "Repeat password is required",
"role": "Role",
"romm-platform": "RomM platform",
"running": "Running",
diff --git a/frontend/src/locales/en_US/setup.json b/frontend/src/locales/en_US/setup.json
new file mode 100644
index 000000000..9f6f970e9
--- /dev/null
+++ b/frontend/src/locales/en_US/setup.json
@@ -0,0 +1,28 @@
+{
+ "admin-user-step": "Create an admin user",
+ "available-platforms": "Available Platforms",
+ "cancel": "Cancel",
+ "check-metadata-step": "Check metadata sources",
+ "confirm-create-platforms": "RomM will create Structure {structure} ({pattern}) with {count} platform{plural}. Continue?",
+ "confirm-no-platforms": "No folder structure detected and no platforms selected. You will need to create the folder structure manually. Continue?",
+ "confirm-no-structure": "No folder structure detected. RomM will create Structure A (roms/{platform}) with {count} platform{plural}. Continue?",
+ "continue": "Continue",
+ "detected-platforms": "Detected Platforms",
+ "deselect-all": "Deselect All",
+ "finish": "Finish",
+ "folder-structure": "Folder structure",
+ "game": "game",
+ "games": "games",
+ "library-structure-step": "Setup library structure",
+ "metadata-missing": "API key missing or invalid",
+ "next": "Next",
+ "no-structure-detected": "No structure detected - Structure A will be created",
+ "platform": "platform",
+ "platforms": "platforms",
+ "previous": "previous",
+ "select-all": "Select All",
+ "select-platforms": "Select Platforms to Create",
+ "selected": "selected",
+ "structure-a-detected": "Structure A detected",
+ "structure-b-detected": "Structure B detected"
+}
diff --git a/frontend/src/locales/es_ES/settings.json b/frontend/src/locales/es_ES/settings.json
index 0541c0d24..2e049732f 100644
--- a/frontend/src/locales/es_ES/settings.json
+++ b/frontend/src/locales/es_ES/settings.json
@@ -94,5 +94,8 @@
"update": "Actualizar",
"username": "Nombre de usuario",
"virtual-collection-type": "Tipo de colección virtual (método de agrupación de ROM)",
- "watcher": "Vigilante"
+ "watcher": "Vigilante",
+ "passwords-must-match": "Las contraseñas deben coincidir",
+ "repeat-password": "Repetir contraseña",
+ "repeat-password-required": "Se requiere repetir la contraseña"
}
diff --git a/frontend/src/locales/es_ES/setup.json b/frontend/src/locales/es_ES/setup.json
new file mode 100644
index 000000000..e0f7a9256
--- /dev/null
+++ b/frontend/src/locales/es_ES/setup.json
@@ -0,0 +1,28 @@
+{
+ "admin-user-step": "Crear un usuario administrador",
+ "available-platforms": "Plataformas disponibles",
+ "cancel": "Cancelar",
+ "check-metadata-step": "Comprobar fuentes de metadatos",
+ "confirm-create-platforms": "RomM creará la estructura {structure} ({pattern}) con {count} plataforma{plural}. ¿Continuar?",
+ "confirm-no-platforms": "No se detectó estructura de carpetas y no se seleccionaron plataformas. Necesitará crear la estructura de carpetas manualmente. ¿Continuar?",
+ "confirm-no-structure": "No se detectó estructura de carpetas. RomM creará la estructura A (roms/{platform}) con {count} plataforma{plural}. ¿Continuar?",
+ "continue": "Continuar",
+ "detected-platforms": "Plataformas detectadas",
+ "deselect-all": "Deseleccionar todo",
+ "finish": "Finalizar",
+ "folder-structure": "Estructura de carpetas",
+ "game": "juego",
+ "games": "juegos",
+ "library-structure-step": "Configurar estructura de biblioteca",
+ "metadata-missing": "Falta clave API o es inválida",
+ "next": "Siguiente",
+ "no-structure-detected": "No se detectó estructura - se creará la estructura A",
+ "platform": "plataforma",
+ "platforms": "plataformas",
+ "previous": "anterior",
+ "select-all": "Seleccionar todo",
+ "select-platforms": "Seleccionar plataformas a crear",
+ "selected": "seleccionado",
+ "structure-a-detected": "Estructura A detectada",
+ "structure-b-detected": "Estructura B detectada"
+}
diff --git a/frontend/src/locales/fr_FR/settings.json b/frontend/src/locales/fr_FR/settings.json
index 7a465f06c..2959f08b5 100644
--- a/frontend/src/locales/fr_FR/settings.json
+++ b/frontend/src/locales/fr_FR/settings.json
@@ -94,5 +94,8 @@
"update": "Mettre à jour",
"username": "Nom d'utilisateur",
"virtual-collection-type": "Type de collection virtuelle (méthode de regroupement des roms)",
- "watcher": "Surveilleur"
+ "watcher": "Surveilleur",
+ "passwords-must-match": "Les mots de passe doivent correspondre",
+ "repeat-password": "Répéter le mot de passe",
+ "repeat-password-required": "La répétition du mot de passe est requise"
}
diff --git a/frontend/src/locales/fr_FR/setup.json b/frontend/src/locales/fr_FR/setup.json
new file mode 100644
index 000000000..ffc261484
--- /dev/null
+++ b/frontend/src/locales/fr_FR/setup.json
@@ -0,0 +1,28 @@
+{
+ "admin-user-step": "Créer un utilisateur administrateur",
+ "available-platforms": "Plateformes disponibles",
+ "cancel": "Annuler",
+ "check-metadata-step": "Vérifier les sources de métadonnées",
+ "confirm-create-platforms": "RomM créera la structure {structure} ({pattern}) avec {count} plateforme{plural}. Continuer?",
+ "confirm-no-platforms": "Aucune structure de dossiers détectée et aucune plateforme sélectionnée. Vous devrez créer la structure de dossiers manuellement. Continuer?",
+ "confirm-no-structure": "Aucune structure de dossiers détectée. RomM créera la structure A (roms/{platform}) avec {count} plateforme{plural}. Continuer?",
+ "continue": "Continuer",
+ "detected-platforms": "Plateformes détectées",
+ "deselect-all": "Tout désélectionner",
+ "finish": "Terminer",
+ "folder-structure": "Structure des dossiers",
+ "game": "jeu",
+ "games": "jeux",
+ "library-structure-step": "Configurer la structure de la bibliothèque",
+ "metadata-missing": "Clé API manquante ou invalide",
+ "next": "Suivant",
+ "no-structure-detected": "Aucune structure détectée - la structure A sera créée",
+ "platform": "plateforme",
+ "platforms": "plateformes",
+ "previous": "précédent",
+ "select-all": "Tout sélectionner",
+ "select-platforms": "Sélectionner les plateformes à créer",
+ "selected": "sélectionné",
+ "structure-a-detected": "Structure A détectée",
+ "structure-b-detected": "Structure B détectée"
+}
diff --git a/frontend/src/locales/hu_HU/settings.json b/frontend/src/locales/hu_HU/settings.json
index fe199346e..37bf1be37 100644
--- a/frontend/src/locales/hu_HU/settings.json
+++ b/frontend/src/locales/hu_HU/settings.json
@@ -94,5 +94,8 @@
"update": "Frissítés",
"username": "Felhasználónév",
"virtual-collection-type": "Virtuális gyűjtemény típusa (ROM csoportosítási mód)",
- "watcher": "Figyelő"
+ "watcher": "Figyelő",
+ "passwords-must-match": "A jelszavaknak egyezniük kell",
+ "repeat-password": "Jelszó ismétlése",
+ "repeat-password-required": "A jelszó ismétlése kötelező"
}
diff --git a/frontend/src/locales/hu_HU/setup.json b/frontend/src/locales/hu_HU/setup.json
new file mode 100644
index 000000000..97589a435
--- /dev/null
+++ b/frontend/src/locales/hu_HU/setup.json
@@ -0,0 +1,28 @@
+{
+ "admin-user-step": "Rendszergazda felhasználó létrehozása",
+ "available-platforms": "Elérhető platformok",
+ "cancel": "Mégse",
+ "check-metadata-step": "Metaadat források ellenőrzése",
+ "confirm-create-platforms": "RomM létrehozza a(z) {structure} struktúrát ({pattern}) {count} platform{plural}. Folytatás?",
+ "confirm-no-platforms": "Nem található mappastruktúra és nincsenek kiválasztott platformok. Kézzel kell létrehoznia a mappastruktúrát. Folytatás?",
+ "confirm-no-structure": "Nem található mappastruktúra. RomM létrehozza az A struktúrát (roms/{platform}) {count} platform{plural}. Folytatás?",
+ "continue": "Folytatás",
+ "detected-platforms": "Észlelt platformok",
+ "deselect-all": "Összes kijelölés törlése",
+ "finish": "Befejezés",
+ "folder-structure": "Mappastruktúra",
+ "game": "játék",
+ "games": "játékok",
+ "library-structure-step": "Könyvtárstruktúra beállítása",
+ "metadata-missing": "API kulcs hiányzik vagy érvénytelen",
+ "next": "Következő",
+ "no-structure-detected": "Nem található struktúra - A struktúra lesz létrehozva",
+ "platform": "platform",
+ "platforms": "platformok",
+ "previous": "előző",
+ "select-all": "Összes kijelölése",
+ "select-platforms": "Létrehozandó platformok kiválasztása",
+ "selected": "kiválasztva",
+ "structure-a-detected": "A struktúra észlelve",
+ "structure-b-detected": "B struktúra észlelve"
+}
diff --git a/frontend/src/locales/it_IT/settings.json b/frontend/src/locales/it_IT/settings.json
index 56028532a..172a02103 100644
--- a/frontend/src/locales/it_IT/settings.json
+++ b/frontend/src/locales/it_IT/settings.json
@@ -94,5 +94,8 @@
"update": "Aggiorna",
"username": "Nome utente",
"virtual-collection-type": "Tipo di collezione virtuale (Metodo di raggruppamento delle rom)",
- "watcher": "Monitor"
+ "watcher": "Monitor",
+ "passwords-must-match": "Le password devono corrispondere",
+ "repeat-password": "Ripeti password",
+ "repeat-password-required": "È richiesta la ripetizione della password"
}
diff --git a/frontend/src/locales/it_IT/setup.json b/frontend/src/locales/it_IT/setup.json
new file mode 100644
index 000000000..66a18bee4
--- /dev/null
+++ b/frontend/src/locales/it_IT/setup.json
@@ -0,0 +1,28 @@
+{
+ "admin-user-step": "Crea un utente amministratore",
+ "available-platforms": "Piattaforme disponibili",
+ "cancel": "Annulla",
+ "check-metadata-step": "Controlla le fonti dei metadati",
+ "confirm-create-platforms": "RomM creerà la struttura {structure} ({pattern}) con {count} piattaforma{plural}. Continuare?",
+ "confirm-no-platforms": "Nessuna struttura di cartelle rilevata e nessuna piattaforma selezionata. Dovrai creare manualmente la struttura delle cartelle. Continuare?",
+ "confirm-no-structure": "Nessuna struttura di cartelle rilevata. RomM creerà la struttura A (roms/{platform}) con {count} piattaforma{plural}. Continuare?",
+ "continue": "Continua",
+ "detected-platforms": "Piattaforme rilevate",
+ "deselect-all": "Deseleziona tutto",
+ "finish": "Fine",
+ "folder-structure": "Struttura delle cartelle",
+ "game": "gioco",
+ "games": "giochi",
+ "library-structure-step": "Configura la struttura della libreria",
+ "metadata-missing": "Chiave API mancante o non valida",
+ "next": "Avanti",
+ "no-structure-detected": "Nessuna struttura rilevata - verrà creata la struttura A",
+ "platform": "piattaforma",
+ "platforms": "piattaforme",
+ "previous": "precedente",
+ "select-all": "Seleziona tutto",
+ "select-platforms": "Seleziona piattaforme da creare",
+ "selected": "selezionato",
+ "structure-a-detected": "Struttura A rilevata",
+ "structure-b-detected": "Struttura B rilevata"
+}
diff --git a/frontend/src/locales/ja_JP/settings.json b/frontend/src/locales/ja_JP/settings.json
index fe63f9645..03e1d1523 100644
--- a/frontend/src/locales/ja_JP/settings.json
+++ b/frontend/src/locales/ja_JP/settings.json
@@ -94,5 +94,8 @@
"update": "更新",
"username": "ユーザ名",
"virtual-collection-type": "バーチャルコレクションタイプ (romのグループ化方法)",
- "watcher": "ウォッチャー"
+ "watcher": "ウォッチャー",
+ "passwords-must-match": "パスワードが一致しません",
+ "repeat-password": "パスワードを再入力",
+ "repeat-password-required": "パスワードの再入力が必要です"
}
diff --git a/frontend/src/locales/ja_JP/setup.json b/frontend/src/locales/ja_JP/setup.json
new file mode 100644
index 000000000..b0b49b419
--- /dev/null
+++ b/frontend/src/locales/ja_JP/setup.json
@@ -0,0 +1,28 @@
+{
+ "admin-user-step": "管理者ユーザーを作成",
+ "available-platforms": "利用可能なプラットフォーム",
+ "cancel": "キャンセル",
+ "check-metadata-step": "メタデータソースを確認",
+ "confirm-create-platforms": "RomMは構造{structure}({pattern})を{count}プラットフォーム{plural}で作成します。続行しますか?",
+ "confirm-no-platforms": "フォルダ構造が検出されず、プラットフォームも選択されていません。フォルダ構造を手動で作成する必要があります。続行しますか?",
+ "confirm-no-structure": "フォルダ構造が検出されませんでした。RomMは構造A(roms/{platform})を{count}プラットフォーム{plural}で作成します。続行しますか?",
+ "continue": "続行",
+ "detected-platforms": "検出されたプラットフォーム",
+ "deselect-all": "すべて選択解除",
+ "finish": "完了",
+ "folder-structure": "フォルダ構造",
+ "game": "ゲーム",
+ "games": "ゲーム",
+ "library-structure-step": "ライブラリ構造を設定",
+ "metadata-missing": "APIキーがないか無効です",
+ "next": "次へ",
+ "no-structure-detected": "構造が検出されませんでした - 構造Aが作成されます",
+ "platform": "プラットフォーム",
+ "platforms": "プラットフォーム",
+ "previous": "前へ",
+ "select-all": "すべて選択",
+ "select-platforms": "作成するプラットフォームを選択",
+ "selected": "選択済み",
+ "structure-a-detected": "構造Aが検出されました",
+ "structure-b-detected": "構造Bが検出されました"
+}
diff --git a/frontend/src/locales/ko_KR/settings.json b/frontend/src/locales/ko_KR/settings.json
index 01d48917d..d866d662c 100644
--- a/frontend/src/locales/ko_KR/settings.json
+++ b/frontend/src/locales/ko_KR/settings.json
@@ -94,5 +94,8 @@
"update": "업데이트",
"username": "아이디",
"virtual-collection-type": "자동 생성된 모음집 유형(롬 그룹화 방법)",
- "watcher": "감시자"
+ "watcher": "감시자",
+ "passwords-must-match": "비밀번호가 일치해야 합니다",
+ "repeat-password": "비밀번호 재입력",
+ "repeat-password-required": "비밀번호 재입력이 필요합니다"
}
diff --git a/frontend/src/locales/ko_KR/setup.json b/frontend/src/locales/ko_KR/setup.json
new file mode 100644
index 000000000..802e2a4f4
--- /dev/null
+++ b/frontend/src/locales/ko_KR/setup.json
@@ -0,0 +1,28 @@
+{
+ "admin-user-step": "관리자 사용자 생성",
+ "available-platforms": "사용 가능한 플랫폼",
+ "cancel": "취소",
+ "check-metadata-step": "메타데이터 소스 확인",
+ "confirm-create-platforms": "RomM이 구조 {structure}({pattern})를 {count}개 플랫폼{plural}으로 생성합니다. 계속하시겠습니까?",
+ "confirm-no-platforms": "폴더 구조가 감지되지 않았고 플랫폼도 선택되지 않았습니다. 폴더 구조를 수동으로 생성해야 합니다. 계속하시겠습니까?",
+ "confirm-no-structure": "폴더 구조가 감지되지 않았습니다. RomM이 구조 A(roms/{platform})를 {count}개 플랫폼{plural}으로 생성합니다. 계속하시겠습니까?",
+ "continue": "계속",
+ "detected-platforms": "감지된 플랫폼",
+ "deselect-all": "모두 선택 해제",
+ "finish": "완료",
+ "folder-structure": "폴더 구조",
+ "game": "게임",
+ "games": "게임",
+ "library-structure-step": "라이브러리 구조 설정",
+ "metadata-missing": "API 키가 없거나 유효하지 않음",
+ "next": "다음",
+ "no-structure-detected": "구조가 감지되지 않음 - 구조 A가 생성됩니다",
+ "platform": "플랫폼",
+ "platforms": "플랫폼",
+ "previous": "이전",
+ "select-all": "모두 선택",
+ "select-platforms": "생성할 플랫폼 선택",
+ "selected": "선택됨",
+ "structure-a-detected": "구조 A가 감지됨",
+ "structure-b-detected": "구조 B가 감지됨"
+}
diff --git a/frontend/src/locales/pl_PL/settings.json b/frontend/src/locales/pl_PL/settings.json
index 461e5bf3e..64d9d61f7 100644
--- a/frontend/src/locales/pl_PL/settings.json
+++ b/frontend/src/locales/pl_PL/settings.json
@@ -94,5 +94,8 @@
"update": "Aktualizuj",
"username": "Nazwa użytkownika",
"virtual-collection-type": "Typ automatycznej kolekcji (metoda grupowania ROM-ów)",
- "watcher": "Monitor"
+ "watcher": "Monitor",
+ "passwords-must-match": "Hasła muszą się zgadzać",
+ "repeat-password": "Powtórz hasło",
+ "repeat-password-required": "Wymagane jest powtórzenie hasła"
}
diff --git a/frontend/src/locales/pl_PL/setup.json b/frontend/src/locales/pl_PL/setup.json
new file mode 100644
index 000000000..9b56caee5
--- /dev/null
+++ b/frontend/src/locales/pl_PL/setup.json
@@ -0,0 +1,28 @@
+{
+ "admin-user-step": "Utwórz użytkownika administratora",
+ "available-platforms": "Dostępne platformy",
+ "cancel": "Anuluj",
+ "check-metadata-step": "Sprawdź źródła metadanych",
+ "confirm-create-platforms": "RomM utworzy strukturę {structure} ({pattern}) z {count} platforma{plural}. Kontynuować?",
+ "confirm-no-platforms": "Nie wykryto struktury folderów i nie wybrano żadnych platform. Będziesz musiał ręcznie utworzyć strukturę folderów. Kontynuować?",
+ "confirm-no-structure": "Nie wykryto struktury folderów. RomM utworzy strukturę A (roms/{platform}) z {count} platforma{plural}. Kontynuować?",
+ "continue": "Kontynuuj",
+ "detected-platforms": "Wykryte platformy",
+ "deselect-all": "Odznacz wszystkie",
+ "finish": "Zakończ",
+ "folder-structure": "Struktura folderów",
+ "game": "gra",
+ "games": "gry",
+ "library-structure-step": "Skonfiguruj strukturę biblioteki",
+ "metadata-missing": "Brak klucza API lub jest nieprawidłowy",
+ "next": "Dalej",
+ "no-structure-detected": "Nie wykryto struktury - zostanie utworzona struktura A",
+ "platform": "platforma",
+ "platforms": "platformy",
+ "previous": "wstecz",
+ "select-all": "Zaznacz wszystkie",
+ "select-platforms": "Wybierz platformy do utworzenia",
+ "selected": "wybrano",
+ "structure-a-detected": "Wykryto strukturę A",
+ "structure-b-detected": "Wykryto strukturę B"
+}
diff --git a/frontend/src/locales/pt_BR/settings.json b/frontend/src/locales/pt_BR/settings.json
index 7d1162860..74232d481 100644
--- a/frontend/src/locales/pt_BR/settings.json
+++ b/frontend/src/locales/pt_BR/settings.json
@@ -94,5 +94,8 @@
"update": "Atualizar",
"username": "Nome de usuário",
"virtual-collection-type": "Tipo de coleção virtual (método de agrupamento de ROM)",
- "watcher": "Monitor"
+ "watcher": "Monitor",
+ "passwords-must-match": "As senhas devem coincidir",
+ "repeat-password": "Repetir senha",
+ "repeat-password-required": "É necessário repetir a senha"
}
diff --git a/frontend/src/locales/pt_BR/setup.json b/frontend/src/locales/pt_BR/setup.json
new file mode 100644
index 000000000..e65350fa1
--- /dev/null
+++ b/frontend/src/locales/pt_BR/setup.json
@@ -0,0 +1,28 @@
+{
+ "admin-user-step": "Criar um usuário administrador",
+ "available-platforms": "Plataformas disponíveis",
+ "cancel": "Cancelar",
+ "check-metadata-step": "Verificar fontes de metadados",
+ "confirm-create-platforms": "RomM criará a estrutura {structure} ({pattern}) com {count} plataforma{plural}. Continuar?",
+ "confirm-no-platforms": "Nenhuma estrutura de pasta detectada e nenhuma plataforma selecionada. Você precisará criar a estrutura de pastas manualmente. Continuar?",
+ "confirm-no-structure": "Nenhuma estrutura de pasta detectada. RomM criará a estrutura A (roms/{platform}) com {count} plataforma{plural}. Continuar?",
+ "continue": "Continuar",
+ "detected-platforms": "Plataformas detectadas",
+ "deselect-all": "Desselecionar tudo",
+ "finish": "Finalizar",
+ "folder-structure": "Estrutura de pastas",
+ "game": "jogo",
+ "games": "jogos",
+ "library-structure-step": "Configurar estrutura da biblioteca",
+ "metadata-missing": "Chave de API ausente ou inválida",
+ "next": "Próximo",
+ "no-structure-detected": "Nenhuma estrutura detectada - a estrutura A será criada",
+ "platform": "plataforma",
+ "platforms": "plataformas",
+ "previous": "anterior",
+ "select-all": "Selecionar tudo",
+ "select-platforms": "Selecionar plataformas para criar",
+ "selected": "selecionado",
+ "structure-a-detected": "Estrutura A detectada",
+ "structure-b-detected": "Estrutura B detectada"
+}
diff --git a/frontend/src/locales/ro_RO/settings.json b/frontend/src/locales/ro_RO/settings.json
index a085f2f6c..f872f2b3c 100644
--- a/frontend/src/locales/ro_RO/settings.json
+++ b/frontend/src/locales/ro_RO/settings.json
@@ -94,5 +94,8 @@
"update": "Actualizează",
"username": "Nume de utilizator",
"virtual-collection-type": "Tip de colecție virtuală (metoda de grupare a rom-urilor)",
- "watcher": "Monitor"
+ "watcher": "Monitor",
+ "passwords-must-match": "Parolele trebuie să se potrivească",
+ "repeat-password": "Repetă parola",
+ "repeat-password-required": "Este necesar să repetați parola"
}
diff --git a/frontend/src/locales/ro_RO/setup.json b/frontend/src/locales/ro_RO/setup.json
new file mode 100644
index 000000000..dac239a5d
--- /dev/null
+++ b/frontend/src/locales/ro_RO/setup.json
@@ -0,0 +1,28 @@
+{
+ "admin-user-step": "Creează un utilizator administrator",
+ "available-platforms": "Platforme disponibile",
+ "cancel": "Anulează",
+ "check-metadata-step": "Verifică sursele de metadate",
+ "confirm-create-platforms": "RomM va crea structura {structure} ({pattern}) cu {count} platformă{plural}. Continuă?",
+ "confirm-no-platforms": "Nu s-a detectat nicio structură de directoare și nu au fost selectate platforme. Va trebui să creezi manual structura directoarelor. Continuă?",
+ "confirm-no-structure": "Nu s-a detectat nicio structură de directoare. RomM va crea structura A (roms/{platform}) cu {count} platformă{plural}. Continuă?",
+ "continue": "Continuă",
+ "detected-platforms": "Platforme detectate",
+ "deselect-all": "Deselectează tot",
+ "finish": "Finalizează",
+ "folder-structure": "Structura directoarelor",
+ "game": "joc",
+ "games": "jocuri",
+ "library-structure-step": "Configurează structura bibliotecii",
+ "metadata-missing": "Cheie API lipsă sau invalidă",
+ "next": "Următorul",
+ "no-structure-detected": "Nu s-a detectat nicio structură - se va crea structura A",
+ "platform": "platformă",
+ "platforms": "platforme",
+ "previous": "anterior",
+ "select-all": "Selectează tot",
+ "select-platforms": "Selectează platformele de creat",
+ "selected": "selectat",
+ "structure-a-detected": "Structura A detectată",
+ "structure-b-detected": "Structura B detectată"
+}
diff --git a/frontend/src/locales/ru_RU/settings.json b/frontend/src/locales/ru_RU/settings.json
index 35349fde7..5802dbfba 100644
--- a/frontend/src/locales/ru_RU/settings.json
+++ b/frontend/src/locales/ru_RU/settings.json
@@ -94,5 +94,8 @@
"update": "Обновить",
"username": "Имя пользователя",
"virtual-collection-type": "Тип виртуальной коллекции (метод группировки ромов)",
- "watcher": "Наблюдатель"
+ "watcher": "Наблюдатель",
+ "passwords-must-match": "Пароли должны совпадать",
+ "repeat-password": "Повторите пароль",
+ "repeat-password-required": "Требуется повторить пароль"
}
diff --git a/frontend/src/locales/ru_RU/setup.json b/frontend/src/locales/ru_RU/setup.json
new file mode 100644
index 000000000..2a87f21af
--- /dev/null
+++ b/frontend/src/locales/ru_RU/setup.json
@@ -0,0 +1,28 @@
+{
+ "admin-user-step": "Создать пользователя-администратора",
+ "available-platforms": "Доступные платформы",
+ "cancel": "Отмена",
+ "check-metadata-step": "Проверить источники метаданных",
+ "confirm-create-platforms": "RomM создаст структуру {structure} ({pattern}) с {count} платформ{plural}. Продолжить?",
+ "confirm-no-platforms": "Структура папок не обнаружена и платформы не выбраны. Вам нужно будет создать структуру папок вручную. Продолжить?",
+ "confirm-no-structure": "Структура папок не обнаружена. RomM создаст структуру A (roms/{platform}) с {count} платформ{plural}. Продолжить?",
+ "continue": "Продолжить",
+ "detected-platforms": "Обнаруженные платформы",
+ "deselect-all": "Снять все выделения",
+ "finish": "Завершить",
+ "folder-structure": "Структура папок",
+ "game": "игра",
+ "games": "игры",
+ "library-structure-step": "Настроить структуру библиотеки",
+ "metadata-missing": "API ключ отсутствует или недействителен",
+ "next": "Далее",
+ "no-structure-detected": "Структура не обнаружена - будет создана структура A",
+ "platform": "платформа",
+ "platforms": "платформы",
+ "previous": "назад",
+ "select-all": "Выбрать все",
+ "select-platforms": "Выбрать платформы для создания",
+ "selected": "выбрано",
+ "structure-a-detected": "Обнаружена структура A",
+ "structure-b-detected": "Обнаружена структура B"
+}
diff --git a/frontend/src/locales/zh_CN/settings.json b/frontend/src/locales/zh_CN/settings.json
index 7b93783e9..ba38acdae 100644
--- a/frontend/src/locales/zh_CN/settings.json
+++ b/frontend/src/locales/zh_CN/settings.json
@@ -94,5 +94,8 @@
"update": "更新",
"username": "用户名",
"virtual-collection-type": "虚拟收藏类型(Rom 文件分组方法)",
- "watcher": "监视器"
+ "watcher": "监视器",
+ "passwords-must-match": "密码必须匹配",
+ "repeat-password": "重复密码",
+ "repeat-password-required": "需要重复密码"
}
diff --git a/frontend/src/locales/zh_CN/setup.json b/frontend/src/locales/zh_CN/setup.json
new file mode 100644
index 000000000..919f7ab47
--- /dev/null
+++ b/frontend/src/locales/zh_CN/setup.json
@@ -0,0 +1,28 @@
+{
+ "admin-user-step": "创建管理员用户",
+ "available-platforms": "可用平台",
+ "cancel": "取消",
+ "check-metadata-step": "检查元数据源",
+ "confirm-create-platforms": "RomM 将创建结构 {structure}({pattern})包含 {count} 个平台{plural}。继续吗?",
+ "confirm-no-platforms": "未检测到文件夹结构且未选择平台。您需要手动创建文件夹结构。继续吗?",
+ "confirm-no-structure": "未检测到文件夹结构。RomM 将创建结构 A(roms/{platform})包含 {count} 个平台{plural}。继续吗?",
+ "continue": "继续",
+ "detected-platforms": "检测到的平台",
+ "deselect-all": "取消全选",
+ "finish": "完成",
+ "folder-structure": "文件夹结构",
+ "game": "游戏",
+ "games": "游戏",
+ "library-structure-step": "设置库结构",
+ "metadata-missing": "API 密钥缺失或无效",
+ "next": "下一步",
+ "no-structure-detected": "未检测到结构 - 将创建结构 A",
+ "platform": "平台",
+ "platforms": "平台",
+ "previous": "上一步",
+ "select-all": "全选",
+ "select-platforms": "选择要创建的平台",
+ "selected": "已选择",
+ "structure-a-detected": "检测到结构 A",
+ "structure-b-detected": "检测到结构 B"
+}
diff --git a/frontend/src/locales/zh_TW/settings.json b/frontend/src/locales/zh_TW/settings.json
index feead6c4d..fc77e01b0 100644
--- a/frontend/src/locales/zh_TW/settings.json
+++ b/frontend/src/locales/zh_TW/settings.json
@@ -94,5 +94,8 @@
"update": "更新",
"username": "用戶名",
"virtual-collection-type": "自動生成收藏庫形式(Rom 分組方式)",
- "watcher": "監視器"
+ "watcher": "監視器",
+ "passwords-must-match": "密碼必須相符",
+ "repeat-password": "重複密碼",
+ "repeat-password-required": "需要重複密碼"
}
diff --git a/frontend/src/locales/zh_TW/setup.json b/frontend/src/locales/zh_TW/setup.json
new file mode 100644
index 000000000..bfd266bd5
--- /dev/null
+++ b/frontend/src/locales/zh_TW/setup.json
@@ -0,0 +1,28 @@
+{
+ "admin-user-step": "建立管理員使用者",
+ "available-platforms": "可用平台",
+ "cancel": "取消",
+ "check-metadata-step": "檢查詮釋資料來源",
+ "confirm-create-platforms": "RomM 將建立結構 {structure}({pattern})包含 {count} 個平台{plural}。繼續嗎?",
+ "confirm-no-platforms": "未偵測到資料夾結構且未選擇平台。您需要手動建立資料夾結構。繼續嗎?",
+ "confirm-no-structure": "未偵測到資料夾結構。RomM 將建立結構 A(roms/{platform})包含 {count} 個平台{plural}。繼續嗎?",
+ "continue": "繼續",
+ "detected-platforms": "偵測到的平台",
+ "deselect-all": "取消全選",
+ "finish": "完成",
+ "folder-structure": "資料夾結構",
+ "game": "遊戲",
+ "games": "遊戲",
+ "library-structure-step": "設定資料庫結構",
+ "metadata-missing": "API 金鑰遺失或無效",
+ "next": "下一步",
+ "no-structure-detected": "未偵測到結構 - 將建立結構 A",
+ "platform": "平台",
+ "platforms": "平台",
+ "previous": "上一步",
+ "select-all": "全選",
+ "select-platforms": "選擇要建立的平台",
+ "selected": "已選擇",
+ "structure-a-detected": "偵測到結構 A",
+ "structure-b-detected": "偵測到結構 B"
+}
diff --git a/frontend/src/views/Auth/Setup.vue b/frontend/src/views/Auth/Setup.vue
index 82b0b770e..fcee435d1 100644
--- a/frontend/src/views/Auth/Setup.vue
+++ b/frontend/src/views/Auth/Setup.vue
@@ -311,9 +311,10 @@ function handleNext(nextCallback: () => void) {
// Case 1: No structure detected and user is creating platforms
if (!hasStructure && platformsToCreate.length > 0) {
- confirmDialogMessage.value = `No folder structure detected. RomM will create Structure A (roms/{platform}) with ${
- platformsToCreate.length
- } platform${platformsToCreate.length > 1 ? "s" : ""}. Continue?`;
+ confirmDialogMessage.value = t("setup.confirm-no-structure", {
+ count: platformsToCreate.length,
+ plural: platformsToCreate.length > 1 ? "s" : "",
+ });
confirmDialogAction.value = nextCallback;
showConfirmDialog.value = true;
return;
@@ -321,8 +322,7 @@ function handleNext(nextCallback: () => void) {
// Case 2: No structure detected and user is not selecting anything
if (!hasStructure && platformsToCreate.length === 0) {
- confirmDialogMessage.value =
- "No folder structure detected and no platforms selected. You will need to create the folder structure manually. Continue?";
+ confirmDialogMessage.value = t("setup.confirm-no-platforms");
confirmDialogAction.value = nextCallback;
showConfirmDialog.value = true;
return;
@@ -334,9 +334,12 @@ function handleNext(nextCallback: () => void) {
libraryInfo.value.detected_structure === "A"
? "roms/{platform}"
: "{platform}/roms";
- confirmDialogMessage.value = `RomM will create Structure ${libraryInfo.value.detected_structure} (${structurePattern}) with ${
- platformsToCreate.length
- } platform${platformsToCreate.length > 1 ? "s" : ""}. Continue?`;
+ confirmDialogMessage.value = t("setup.confirm-create-platforms", {
+ structure: libraryInfo.value.detected_structure,
+ pattern: structurePattern,
+ count: platformsToCreate.length,
+ plural: platformsToCreate.length > 1 ? "s" : "",
+ });
confirmDialogAction.value = nextCallback;
showConfirmDialog.value = true;
return;
@@ -452,9 +455,9 @@ onMounted(() => {
- Folder structure: + {{ t("setup.folder-structure") }}: {{ libraryInfo?.detected_structure === "A" - ? "Structure A detected" + ? t("setup.structure-a-detected") : libraryInfo?.detected_structure === "B" - ? "Structure B detected" - : "No structure detected - Structure A will be created" + ? t("setup.structure-b-detected") + : t("setup.no-structure-detected") }}
@@ -546,15 +555,19 @@ onMounted(() => { class="pr-2" >