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(() => { @@ -462,7 +465,9 @@ onMounted(() => { @@ -470,9 +475,9 @@ onMounted(() => { @@ -481,9 +486,13 @@ onMounted(() => {
- Setup library structure - Create an admin user - Check metadata sources + {{ + t("setup.library-structure-step") + }} + {{ t("setup.admin-user-step") }} + {{ + t("setup.check-metadata-step") + }}
@@ -514,13 +523,13 @@ 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" >

- Detected Platforms + {{ t("setup.detected-platforms") }}
- {{ libraryInfo?.existing_platforms.length }} platforms + {{ libraryInfo?.existing_platforms.length }} + {{ t("setup.platforms") }} - {{ totalDetectedGames }} game{{ - totalDetectedGames !== 1 ? "s" : "" + {{ totalDetectedGames }} + {{ + totalDetectedGames !== 1 + ? t("setup.games") + : t("setup.game") }}
@@ -574,8 +587,8 @@ onMounted(() => {
{{ hasExistingPlatforms - ? "Available Platforms" - : "Select Platforms to Create" + ? t("setup.available-platforms") + : t("setup.select-platforms") }}
@@ -585,10 +598,15 @@ onMounted(() => { @click="selectAll = !selectAll" label > - {{ selectAll ? "Deselect All" : "Select All" }} + {{ + selectAll + ? t("setup.deselect-all") + : t("setup.select-all") + }} {{ selectedAvailableCount }} selected{{ selectedAvailableCount }} + {{ t("setup.selected") }}
@@ -613,13 +631,13 @@ onMounted(() => { :value="0" class="text-white text-shadow" > - Detected + {{ t("setup.detected-platforms") }} - Available + {{ t("setup.available-platforms") }} @@ -629,11 +647,14 @@ onMounted(() => {
{{ libraryInfo?.existing_platforms.length }} - platforms + {{ t("setup.platforms") }} - {{ totalDetectedGames }} game{{ - totalDetectedGames !== 1 ? "s" : "" + {{ totalDetectedGames }} + {{ + totalDetectedGames !== 1 + ? t("setup.games") + : t("setup.game") }}
@@ -654,10 +675,15 @@ onMounted(() => { @click="selectAll = !selectAll" label > - {{ selectAll ? "Deselect All" : "Select All" }} + {{ + selectAll + ? t("setup.deselect-all") + : t("setup.select-all") + }} {{ selectedAvailableCount }} selected{{ selectedAvailableCount }} + {{ t("setup.selected") }}
@@ -727,10 +753,11 @@ onMounted(() => { :label="`${t('settings.repeat_password')} *`" :type="visibleRepeatPassword ? 'text' : 'password'" :rules="[ - (v: string) => !!v || 'Repeat password is required', + (v: string) => + !!v || t('settings.repeat-password-required'), (v: string) => v === defaultAdminUser.password || - 'Passwords must match', + t('settings.passwords-must-match'), ]" required autocomplete="on" @@ -765,7 +792,7 @@ onMounted(() => { class="text-white text-shadow" :title="source.name" :subtitle=" - source.disabled ? 'API key missing or invalid' : '' + source.disabled ? t('setup.metadata-missing') : '' " > @@ -828,13 +855,13 @@ onMounted(() => { - Cancel + {{ t("setup.cancel") }} - Continue + {{ t("setup.continue") }}