Files
pipu-music/packages/i18n/locales/en/common.json
T
mrleo1nidandCursor 73ad61e7a5
ci / ts / ts (packages + web) (push) Canceled after 1m0s
ci / api / api (push) Successful in 46s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 56s
ci / db / db (push) Successful in 1m32s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m27s
ci / docker / docker (образы собираются — их сервер собирает сам при обновлении) (push) Successful in 1m31s
feat(genius): load song metadata, lyrics, and artwork
Search hits omit album covers and artist images. The worker now reads the full song and artist, stores the description, and leaves Genius image URLs unchanged on mobile.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-22 08:23:54 +03:00

341 lines
12 KiB
JSON

{
"genius": {
"description": "Lyrics, annotations and missing artwork from Genius. Local artwork takes priority.",
"loading": "Loading…", "disabled": "Not configured", "paused": "Paused", "cooldown": "Waiting after Genius rate limit", "running": "Processing", "waiting": "Waiting for new tracks",
"configure": "Add GENIUS_ACCESS_TOKEN to deploy/.env and recreate the API container.",
"total": "Total tracks", "pending": "Queued", "matched": "Matched on Genius", "lyrics": "Lyrics", "annotations": "With annotations", "images": "With artwork", "unmatched": "No exact match", "errors": "Errors / incomplete data",
"last_error": "Last error", "token_error": "Genius rejected the token. Check it and restart the API.", "access_error": "Genius restricted access. Processing is paused.", "no_lyrics": "Lyrics are currently unavailable.", "request_error": "Some data could not be retrieved. A retry is scheduled automatically.", "resume_at": "Retry no earlier than",
"start": "Resume", "pause": "Pause", "retry": "Retry errors and unmatched", "pending_text": "This track is waiting for Genius processing.", "about": "About the song", "explanations": "Song annotations", "verified": "Verified on Genius"
},
"app": {
"name": "pipu",
"tagline": "Your music from your own server"
},
"server": {
"title": "Server",
"checking": "Checking the server…",
"online": "Server {{version}} is online",
"offline": "The server is not responding. Check the address and your network.",
"address": "Server address",
"check": "Check",
"invalid_address": "Enter the server address, e.g. https://music.home.lan",
"unsupported_app": "This app version is too old for the server — please update the app"
},
"language": {
"label": "Language",
"ru": "Русский",
"en": "English"
},
"nav": {
"more": "More",
"main": "Navigation",
"home": "Home",
"admin": "Admin",
"users": "Users",
"audit": "Audit log",
"library": "Library",
"sources": "Storage",
"collection": "Collection",
"history": "History",
"likes": "Likes",
"dislikes": "Dislikes",
"uploads": "Uploads",
"suggest": "Suggest tracks",
"my_uploads": "My uploads",
"upload_queue": "Queue",
"admin_settings": "Settings"
},
"profile": {
"menu": "Profile menu",
"settings": "Settings",
"logout": "Sign out",
"download_apps": "Download apps"
},
"roles": {
"admin": "Administrator",
"moderator": "Moderator",
"user": "User"
},
"home": {
"greeting": "Hi, {{name}}!",
"wave": "My Wave",
"wave_soon": "An endless stream tuned to your taste will appear once the server has a library."
},
"player": {
"share": "Share track",
"link_copied": "Track link copied",
"share_error": "Could not share the link. Please try again.",
"track_page": "Track",
"empty": "Nothing is playing",
"label": "Player",
"play": "Play",
"pause": "Pause",
"next": "Next",
"prev": "Previous",
"like": "Like",
"unlike": "Remove from likes",
"dislike": "Dislike",
"undislike": "Remove dislike",
"volume": "Volume",
"mute": "Mute",
"unmute": "Unmute",
"shuffle": "Shuffle",
"repeat_off": "Repeat off",
"repeat_all": "Repeat queue",
"repeat_one": "Repeat track",
"progress": "Position",
"unavailable": "Track is unavailable — skipping",
"error": "Could not play the track",
"source_album": "Album · {{label}}",
"source_artist": "Artist · {{label}}",
"source_search": "Search · {{label}}",
"source_history": "History",
"source_likes": "Likes",
"source_dislikes": "Dislikes",
"source_wave": "My Wave",
"source_queue": "Queue",
"queue": "Queue",
"source_wave_seed": "Artist wave · {{label}}",
"queue_wave": "The wave never ends: next tracks are picked as you listen"
},
"settings": {
"title": "Settings",
"account": "Account",
"display_name": "Display name",
"save": "Save",
"saved": "Saved",
"appearance": "Appearance",
"theme": "Theme",
"theme_dark": "Dark",
"theme_light": "Light",
"theme_system": "System",
"password": "Password",
"current_password": "Current password",
"new_password": "New password",
"repeat_password": "Repeat the password",
"change_password": "Change password",
"password_changed": "Password changed. Other devices have been signed out.",
"sessions": "Devices",
"session_current": "This device",
"session_last_used": "Active: {{date}}",
"session_end": "Sign out",
"logout_all": "Sign out everywhere",
"wave_variant": "Wave style",
"wave_orb": "Orb",
"wave_liquid": "Liquid",
"player_view": "Player style",
"player_bar": "Bar",
"player_island": "Island",
"ambient": "Ambient background",
"on": "On",
"off": "Off",
"search_position": "Search position",
"search_left": "Left",
"search_center": "Center",
"search_right": "Right",
"search_collapse": "Collapse search",
"home_activities": "Activity picker on home",
"home_moods": "Mood picker on home",
"normalize": "Loudness normalization",
"crossfade": "Crossfade, {{seconds}} s"
},
"form": {
"show_password": "Show password",
"hide_password": "Hide password",
"passwords_mismatch": "Passwords don't match",
"required": "Fill in this field",
"cancel": "Cancel",
"close": "Close",
"copy": "Copy",
"copied": "Copied"
},
"loading": "Loading…",
"route_error": {
"reload": "Reload the page"
},
"search": {
"placeholder": "Artists, albums, tracks",
"label": "Search",
"artists": "Artists",
"albums": "Albums",
"tracks": "Tracks",
"all": "All",
"nothing": "Nothing found",
"corrected": "Showing results for “{{query}}”",
"show_all": "All results",
"title": "Search: {{query}}",
"more": "Show more",
"artist_kind": "Artist",
"hint": "Press / to search"
},
"catalog": {
"albums": "Albums",
"appears_on": "Appears on",
"album_count_one": "{{count}} album",
"album_count_other": "{{count}} albums",
"album_count_few": "{{count}} albums",
"album_count_many": "{{count}} albums",
"track_count_one": "{{count}} track",
"track_count_other": "{{count}} tracks",
"track_count_few": "{{count}} tracks",
"track_count_many": "{{count}} tracks",
"unavailable": "Unavailable: storage is offline or the file is gone",
"not_found": "Nothing here — it may have been removed by the last scan",
"disc": "Disc {{n}}",
"col_title": "Title",
"col_album": "Album",
"col_duration": "Time",
"back_home": "Back home",
"artist": "Artist",
"album": "Album",
"play": "Play",
"artist_wave": "Artist wave",
"top_tracks": "Popular tracks"
},
"collection": {
"title": "Collection",
"history": "History",
"likes": "Likes",
"dislikes": "Dislikes",
"clear_history": "Clear history",
"clear_confirm": "Clear your listening history? Recommendations will still take it into account.",
"today": "Today",
"yesterday": "Yesterday",
"empty_history": "What you listen to will show up here",
"empty_likes": "Tap the heart on tracks — they will gather here",
"empty_dislikes": "Disliked tracks stay out of the wave. None so far",
"play_all": "Play all",
"more": "Show more",
"sub_history": "Everything you listened to, by day. Click a track to play it.",
"sub_likes_one": "{{count}} track · they shape My Wave the most",
"sub_likes_few": "{{count}} tracks · they shape My Wave the most",
"sub_likes_many": "{{count}} tracks · they shape My Wave the most",
"sub_likes_other": "{{count}} tracks · they shape My Wave the most",
"sub_dislikes": "These tracks never get into the wave or recommendations. Remove the dislike if you change your mind.",
"shuffle": "Shuffle"
},
"wave": {
"title": "My Wave",
"for_you": "Tuned to your taste",
"start": "Start My Wave",
"pause": "Pause My Wave",
"activity_label": "Activity",
"mood_label": "Mood",
"reset": "Reset",
"empty": "Nothing to suggest yet — the library is empty",
"fallback": "Recommendations are simplified for now",
"activities": {
"running": "Running",
"workout": "Workout",
"waking_up": "Waking up",
"focus": "Focus",
"commute": "Commute",
"chill": "Chilling",
"sleep": "Falling asleep"
},
"moods": {
"energetic": "Energetic",
"happy": "Happy",
"calm": "Calm",
"sad": "Sad"
}
},
"mobile": {
"connect": "Connect",
"servers": "Recent servers",
"change_server": "Another server",
"server": "Server",
"open_admin": "Admin — opens in the browser",
"version": "App version {{version}}",
"offline": "No connection to the server",
"profile": "Profile",
"search": "Search",
"recent_searches": "Recent searches",
"clear_recent": "Clear",
"now_playing": "Now playing",
"open_player": "Open the player",
"close_player": "Collapse the player",
"queue": "Queue",
"forget_server": "Forget server",
"update_check": "Check for updates",
"update_checking": "Checking…",
"update_latest": "You have the latest version",
"update_title": "Version {{version}} is available",
"update_required": "The server no longer supports this version — please update the app",
"update_size": "Size {{size}} MB",
"update_install": "Download and install",
"update_later": "Later",
"update_downloading": "Downloading {{percent}}%",
"update_verifying": "Verifying the file…",
"update_bad_checksum": "The file is corrupted — try again",
"update_failed": "Could not download the update",
"update_allow": "Allow installing apps from this app in Android settings",
"update_open_settings": "Open settings",
"dl_title": "Downloads",
"dl_download": "Download",
"dl_remove": "Remove from device",
"dl_album": "Download album",
"dl_all_likes": "Download all likes",
"dl_wifi_only": "Download over Wi-Fi only",
"dl_auto_likes": "Download new likes",
"dl_usage": "{{used}} MB used · {{free}} GB free on the phone",
"dl_pending_one": "{{count}} track queued",
"dl_pending_other": "{{count}} tracks queued",
"dl_waiting_wifi": "Downloads are waiting for Wi-Fi ({{count}})",
"dl_waiting_network": "Downloads are waiting for a connection ({{count}})",
"dl_retry": "Retry failed",
"dl_empty": "Download tracks, albums and likes to listen without a connection",
"dl_pending_few": "{{count}} tracks queued",
"dl_pending_many": "{{count}} tracks queued",
"player_view": "Player view",
"player_cover": "Cover",
"player_wave": "Wave",
"quality": "Sound quality",
"quality_wifi": "On Wi-Fi",
"quality_cellular": "On mobile data",
"quality_download": "Downloads",
"quality_hint": "The new quality applies to the next tracks; downloaded tracks are not re-downloaded.",
"q_original": "Original",
"q_high": "High",
"q_medium": "Medium",
"q_low": "Low",
"cache": "Recent tracks cache",
"cache_clear": "Clear ({{size}} MB)",
"cache_pending": "Will be cleared on next launch"
},
"onboarding": {
"title": "What do you like to listen to?",
"subtitle": "Pick a few artists and genres to start My Wave. After that it learns from what you play.",
"artists": "Artists",
"genres": "Genres",
"skip": "Skip",
"done": "Done — to the wave",
"pick_more_one": "Pick {{count}} more artist",
"pick_more_few": "Pick {{count}} more artists",
"pick_more_many": "Pick {{count}} more artists",
"pick_more_other": "Pick {{count}} more artists"
},
"playlists": {
"name": "Name",
"delete_confirm": "Delete playlist “{{name}}”? Tracks will remain in your library.",
"manage": "Manage tracks",
"title": "Playlists",
"move_down": "Move {{name}} down",
"edit": "Edit playlist",
"description": "Description",
"add": "Add to playlist",
"search": "Search playlists",
"create": "Create playlist",
"find_tracks": "Find music",
"remove_track": "Remove {{name}} from playlist",
"save": "Save",
"private": "Private playlist",
"empty": "Your playlists will appear here. Create your first and add your favourite music.",
"empty_tracks": "No tracks yet. Use Add to playlist in search, albums or your collection.",
"loading": "Loading playlists…",
"move_up": "Move {{name}} up",
"delete": "Delete playlist",
"no_results": "No playlists found"
}
}