202 lines
9.5 KiB
Python
202 lines
9.5 KiB
Python
"""English translation."""
|
|
|
|
STRINGS = {
|
|
# App
|
|
"app.title": "LineDance Player",
|
|
"app.ready": "Ready",
|
|
"app.no_song": "— No song loaded —",
|
|
"app.playlist_done": "— Playlist finished —",
|
|
"app.no_dance_tagged": "no dance tagged",
|
|
|
|
# Menu
|
|
"menu.file": "File",
|
|
"menu.go_online": "Go online...",
|
|
"menu.go_offline": "Go offline",
|
|
"menu.settings": "Settings...",
|
|
"menu.quit": "Quit",
|
|
|
|
# Library
|
|
"library.title": "LIBRARY",
|
|
"library.search": "Search title, artist, album, dance...",
|
|
"library.songs": "{count} songs",
|
|
"library.song": "{count} song",
|
|
"library.results": "{count} results for \"{query}\"",
|
|
"library.result": "{count} result for \"{query}\"",
|
|
"library.btn_bpm": "♩ BPM all",
|
|
"library.btn_manage": "⚙ Folders",
|
|
"library.bpm_scanning": "♩ {done}/{total}...",
|
|
"library.bpm_all_done": "♩ All have BPM",
|
|
"library.missing": "⚠ ",
|
|
"library.no_dance": "no dance tagged",
|
|
|
|
# Folders dialog
|
|
"folders.title": "Manage music libraries",
|
|
"folders.active": "Active music libraries:",
|
|
"folders.note": "When you remove a library, it is removed from monitoring.\nSongs remain in the database but are marked as missing (⚠).",
|
|
"folders.btn_add": "+ Add folder",
|
|
"folders.btn_remove": "✕ Remove selected",
|
|
"folders.btn_scan": "⟳ Scan all",
|
|
"folders.btn_close": "Close",
|
|
"folders.never_scanned": "never",
|
|
"folders.not_found": " ⚠ folder not found",
|
|
"folders.songs_count": "{count} songs · last scanned: {date}",
|
|
"folders.confirm_remove": "Remove monitoring of:\n{path}\n\nSongs remain in the database but will be marked as missing.",
|
|
|
|
# Playlist
|
|
"playlist.title": "PLAYLIST",
|
|
"playlist.new_title": "PLAYLIST — NEW",
|
|
"playlist.btn_new": "✚ New",
|
|
"playlist.btn_save": "💾 Save as...",
|
|
"playlist.btn_load": "📂 Load...",
|
|
"playlist.btn_start": "▶ START EVENT",
|
|
"playlist.progress": "{played} / {total} played",
|
|
"playlist.not_saved": "● unsaved",
|
|
"playlist.saved": "✓ saved",
|
|
"playlist.save_error": "⚠ save error",
|
|
"playlist.restored": "✓ restored",
|
|
"playlist.saved_as": "✓ saved as \"{name}\"",
|
|
"playlist.name_prompt": "Playlist name:",
|
|
"playlist.name_dialog": "Save playlist",
|
|
"playlist.load_dialog": "Load playlist",
|
|
"playlist.load_choose": "Choose a playlist:",
|
|
"playlist.empty": "The playlist is empty.",
|
|
"playlist.no_lists": "No saved playlists found.",
|
|
"playlist.confirm_new": "Clear the current playlist and start over?",
|
|
"playlist.confirm_event": "This will reset all statuses in the playlist.\nContinue?",
|
|
"playlist.ready": "Ready: {title} — press ▶ to start",
|
|
"playlist.done": "Playlist finished",
|
|
"playlist.event_ready": "Event ready: {title} — press ▶ to start",
|
|
"playlist.added": "Added to playlist: {title}",
|
|
|
|
# Playlist context menu
|
|
"playlist.ctx_play": "▶ Play this",
|
|
"playlist.ctx_skip": "— Skip",
|
|
"playlist.ctx_unplay": "↺ Mark as not played",
|
|
"playlist.ctx_played": "✓ Mark as played",
|
|
"playlist.ctx_remove": "✕ Remove from playlist",
|
|
|
|
# Library context menu
|
|
"library.ctx_add": "Add to playlist",
|
|
"library.ctx_play": "Play",
|
|
"library.ctx_tags": "✎ Edit dance tags...",
|
|
"library.ctx_bpm": "♩ Analyse BPM",
|
|
"library.ctx_send": "Send to",
|
|
"library.ctx_mail": "✉ Send by email",
|
|
"library.btn_danse": "Dances",
|
|
|
|
# Player
|
|
"player.no_song": "No song loaded",
|
|
"player.loaded": "Loaded: {title}",
|
|
"player.vol": "VOL",
|
|
"player.demo_btn": "▶\n{sec} SEC",
|
|
"player.event_resumed": "Event resumed at: {title} — press ▶ to continue",
|
|
|
|
# Transport tooltips
|
|
"player.btn_prev": "Previous song",
|
|
"player.btn_play": "Play / Pause",
|
|
"player.btn_stop": "Stop",
|
|
"player.btn_next": "Next song",
|
|
"player.btn_demo": "Play preview",
|
|
|
|
# Settings
|
|
"settings.title": "Settings",
|
|
"settings.tab_appearance": "🎨 Appearance",
|
|
"settings.tab_playback": "▶ Playback",
|
|
"settings.tab_mail": "✉ Mail",
|
|
"settings.tab_online": "🌐 Online",
|
|
"settings.tab_language": "🌍 Language",
|
|
"settings.btn_save": "💾 Save settings",
|
|
"settings.btn_cancel": "Cancel",
|
|
"settings.dark_theme": "Start with dark theme",
|
|
"settings.theme_note": "You can always switch theme while the program is running.",
|
|
"settings.demo_group": "Preview (▶ N SEC button)",
|
|
"settings.demo_length": "Preview length:",
|
|
"settings.demo_fade": "Fade-out:",
|
|
"settings.demo_suffix": " seconds",
|
|
"settings.fade_suffix": " seconds (0 = no fade)",
|
|
"settings.demo_note": "The preview plays the beginning of the song.\nFade-out is added on top of the preview length.",
|
|
"settings.mail_group": "Mail client",
|
|
"settings.mail_label": "Client:",
|
|
"settings.mail_path": "Path:",
|
|
"settings.mail_auto": "Auto-detect (Thunderbird → Outlook → mailto:)",
|
|
"settings.mail_tb": "Thunderbird",
|
|
"settings.mail_ol": "Outlook (Windows)",
|
|
"settings.mail_custom": "Custom path",
|
|
"settings.mail_mailto": "mailto: only (no attachment)",
|
|
"settings.mail_note": "With Thunderbird and Outlook a new compose window opens with the file attached.",
|
|
"settings.online_group": "Automatic login at startup",
|
|
"settings.auto_login": "Log in automatically when the program starts",
|
|
"settings.username": "Username:",
|
|
"settings.password": "Password:",
|
|
"settings.password_warn": "⚠ The password is stored locally on this computer.\nOnly use this on a personal machine.",
|
|
"settings.lang_group": "Language",
|
|
"settings.lang_label": "Interface language:",
|
|
"settings.lang_note": "The language will be applied next time the program starts.",
|
|
"settings.saved": "Settings saved",
|
|
|
|
# Tag editor
|
|
"tags.title": "Edit tags — {title}",
|
|
"tags.can_write": "✓ Dances are written to the file",
|
|
"tags.cant_write": "⚠ This format does not support file writing",
|
|
"tags.hint": "Type a dance name — suggestions show as 'Name / Level'. Select from list to set level automatically.",
|
|
"tags.dances": "Dances",
|
|
"tags.alts": "Alternative dances",
|
|
"tags.btn_add": "+ Add",
|
|
"tags.btn_save": "💾 Save tags",
|
|
"tags.btn_cancel": "Cancel",
|
|
"tags.new_dance": "New dance (e.g. Cowboy Cha Cha)...",
|
|
"tags.new_alt": "Alternative dance...",
|
|
"tags.note": "note...",
|
|
"tags.warn_file": "Saved to database, but could not write to file.",
|
|
"tags.error": "Could not save: {error}",
|
|
"tags.no_level": "— no level —",
|
|
|
|
# Levels
|
|
"level.none": "— no level —",
|
|
"level.beginner": "Beginner",
|
|
"level.let_ovet": "Easy",
|
|
"level.easy": "Easy",
|
|
"level.ovet": "Intermediate",
|
|
"level.intermediate": "Intermediate",
|
|
"level.erfaren": "Experienced",
|
|
"level.experienced": "Experienced",
|
|
"level.ekspert": "Expert",
|
|
"level.expert": "Expert",
|
|
|
|
# Online / login
|
|
"online.logging_in": "Logging in as {username}...",
|
|
"online.logged_in": "Online as {username}",
|
|
"online.auto_login_fail": "Auto-login failed — use File → Go online manually",
|
|
"online.logged_out": "Offline",
|
|
"online.syncing": "Syncing dance data...",
|
|
"online.synced": "Synced {levels} levels and {names} dance names",
|
|
|
|
# Scanning
|
|
"scan.preparing": "Starting library scan...",
|
|
"scan.scanning": "Scanning: {name}...",
|
|
"scan.scanning_count": "Scanning: {name} ({count} files)...",
|
|
"scan.done": "Scan complete — {count} files processed",
|
|
"scan.error": "Scan error: {error}",
|
|
"scan.folder_missing": "⚠ Folder not found: {path}",
|
|
|
|
# Errors
|
|
"error.title": "Error",
|
|
"error.db_init": "Database error: {error}",
|
|
"error.folder_remove": "Could not remove: {error}",
|
|
"error.save_tags": "Could not save tags: {error}",
|
|
|
|
# Mail
|
|
"mail.thunderbird_ok": "Thunderbird opened with {filename} attached.",
|
|
"mail.outlook_ok": "Outlook opened with {filename} attached.",
|
|
"mail.fallback": "No known mail client found — opened mailto: (no attachment)",
|
|
"mail.file_missing": "File not found — cannot send mail",
|
|
|
|
# General
|
|
"btn.ok": "OK",
|
|
"btn.cancel": "Cancel",
|
|
"btn.close": "Close",
|
|
"btn.yes": "Yes",
|
|
"btn.no": "No",
|
|
"dialog.confirm": "Confirm",
|
|
}
|