ci / api / api (push) Successful in 40s
ci / db / db (push) Successful in 1m3s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Failing after 1m48s
ci / docker / docker (образы собираются — их сервер собирает сам при обновлении) (push) Successful in 46s
ci / ts / ts (packages + web) (push) Failing after 4m57s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 5m7s
Quality upgrades, batch covers, staging preview, and resume after reload are in the queue. Loudness and crossfade work on web and Android, and the documented checks now have suites. Co-authored-by: Cursor <cursoragent@cursor.com>
306 lines
10 KiB
JSON
306 lines
10 KiB
JSON
{
|
|
"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": {
|
|
"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",
|
|
"android_app": "Android app"
|
|
},
|
|
"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": {
|
|
"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"
|
|
}
|
|
}
|