diff --git a/front/src/locales/en.json b/front/src/locales/en.json index d1f40f6f7..7ab2ee781 100644 --- a/front/src/locales/en.json +++ b/front/src/locales/en.json @@ -3233,787 +3233,1378 @@ "views": { "Notifications": { "title": "Notifications", - "messagesHeader": "Your messages", - "instanceSupportHeader": "Support this Funkwhale pod", - "instanceReminderDelay": "Remind me in:", - "instanceReminder30": "30 days", - "instanceReminder60": "60 days", - "instanceReminder90": "90 days", - "instanceReminderNever": "Never", - "instanceReminderSubmitButton": "Got it!", - "funkwhaleSupportHeader": "Do you like Funkwhale?", - "funkwhaleSupportMessage": "We noticed you've been here for a while. If Funkwhale is useful to you, we could use your help to make it even better!", - "funkwhaleSupportDonateLink": "Donate", - "funkwhaleSupportHelpLink": "Discover other ways to help", - "funkwhaleReminderDelay": "Remind me in:", - "funkwhaleReminder30": "30 days", - "funkwhaleReminder60": "60 days", - "funkwhaleReminder90": "90 days", - "funkwhaleReminderNever": "Never", - "funkwhaleReminderSubmitButton": "Got it!", - "notificationsHeader": "Your notifications", - "showReadNotificationsCheckbox": "Show read notifications", - "markAllReadButton": "Mark all as read", - "loadingNotifications": "Loading notifications…", - "noNotifications": "No notification to show" + "header": { + "messages": "Your messages", + "instanceSupport": "Support this Funkwhale pod", + "funkwhaleSupport": "Do you like Funkwhale?", + "notifications": "Your notifications" + }, + "label": { + "reminder": "Remind me in:", + "showRead": "Show read notifications" + }, + "message": { + "funkwhaleSupport": "We noticed you've been here for a while. If Funkwhale is useful to you, we could use your help to make it even better!" + }, + "option": { + "delay": { + "30": "30 days", + "60": "60 days", + "90": "90 days", + "never": "Never" + } + }, + "button": { + "submit": "Got it!", + "read": "Mark all as read" + }, + "link": { + "donate": "Donate", + "help": "Discover other ways to help" + }, + "loading": { + "notifications": "Loading notifications…" + }, + "empty": { + "notifications": "No notification to show" + } }, "Search": { - "artistsLabel": "Artists", - "albumsLabel": "Albums", - "tracksLabel": "Tracks", - "playlistsLabel": "Playlists", - "radiosLabel": "Radios", - "tagsLabel": "Tags", - "podcastsLabel": "Podcasts", - "seriesLabel": "Series", - "rssTitle": "Subscribe to a podcast RSS feed", - "remoteTitle": "Search a remote object", - "searchTitle": "Search", - "submitSearchLabel": "Submit Search Query", - "searchHeader": "Search" + "header": { + "search": "Search", + "rss": "Subscribe to a podcast RSS feed", + "remote": "Search a remote object" + }, + "label": { + "artists": "Artists", + "albums": "Albums", + "tracks": "Tracks", + "playlists": "Playlists", + "radios": "Radios", + "tags": "Tags", + "podcasts": "Podcasts", + "series": "Series" + }, + "button": { + "submit": "Submit Search Query" + } }, "admin": { "ChannelDetail": { - "statsWarning": "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this object", - "localLabel": "Local", - "localProfileLink": "Open local profile", - "djangoLink": "View in Django's admin", - "refreshButton": "Refresh from remote server", - "openRemoteButton": "Open remote profile", - "deleteButton": "Delete", - "deleteModalHeader": "Delete this channel?", - "deleteModalMessage": "The channel will be removed, as well as associated uploads, tracks, and albums. This action is irreversible.", - "channelDataHeader": "Channel data", - "nameLabel": "Name", - "categoryLabel": "Category", - "accountLabel": "Account", - "domainLabel": "Domain", - "descriptionLabel": "Description", - "urlLabel": "URL", - "rssLabel": "RSS feed", - "activityHeader": "Activity", - "firstSeenLabel": "First seen", - "listeningsLabel": "Listenings", - "favoritedLabel": "Favorited tracks", - "playlistsLabel": "Playlists", - "linkedReportsLabel": "Linked reports", - "editsLabel": "Edits", - "audioContentHeader": "Audio content;", - "cachedSizeLabel": "Cached size", - "totalSizeLabel": "Total size", - "uploadsLabel": "Uploads", - "albumsLabel": "Albums", - "tracksLabel": "Tracks" + "warning": { + "stats": "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this object" + }, + "label": { + "local": "Local" + }, + "link": { + "localProfile": "Open local profile", + "django": "View in Django's admin" + }, + "button": { + "refresh": "Refresh from remote server", + "openRemote": "Open remote profile", + "delete": "Delete" + }, + "modal": { + "delete": { + "header": "Delete this channel?", + "content": { + "warning": "The channel will be removed, as well as associated uploads, tracks, and albums. This action is irreversible." + } + } + }, + "header": { + "channelData": "Channel data", + "activity": "Activity", + "audioContent": "Audio content" + }, + "table": { + "channelData": { + "name": "Name", + "category": "Category", + "account": "Account", + "domain": "Domain", + "description": "Description", + "url": "URL", + "rss": "RSS feed" + }, + "activity": { + "firstSeen": "First seen", + "listenings": "Listenings", + "favorited": "Favorited tracks", + "playlists": "Playlists", + "linkedReports": "Linked reports", + "edits": "Edits" + }, + "audioContent": { + "cachedSize": "Cached size", + "totalSize": "Total size", + "uploads": "Uploads", + "albums": "Albums", + "tracks": "Tracks" + } + } }, "CommonList": { - "accountsLabel": "Accounts", - "albumsLabel": "Albums", - "artistsLabel": "Artists", - "channelsLabel": "Channels", - "invitationsLabel": "Invitations", - "librariesLabel": "Libraries", - "tagsLabel": "Tags", - "tracksLabel": "Tracks", - "uploadsLabel": "Uploads", - "usersLabel": "Users" + "title": { + "accounts": "Accounts", + "albums": "Albums", + "artists": "Artists", + "channels": "Channels", + "invitations": "Invitations", + "libraries": "Libraries", + "tags": "Tags", + "tracks": "Tracks", + "uploads": "Uploads", + "users": "Users" + } }, "Settings": { - "settingsLabel": "Instance Settings", - "instanceInfoLabel": "Instance Information", - "signupsLabel": "Sign-ups", - "securityLabel": "Security", - "musicLabel": "Music", - "channelsLabel": "Channels", - "playlistsLabel": "Playlists", - "moderationLabel": "Moderation", - "federationLabel": "Federation", - "subsonicLabel": "Subsonic", - "statsLabel": "Statistics", - "uiLabel": "User Interface", - "sectionsHeader": "Sections" + "header": { + "settings": "Instance Settings", + "instanceInfo": "Instance Information", + "signups": "Sign-ups", + "security": "Security", + "music": "Music", + "channels": "Channels", + "playlists": "Playlists", + "moderation": "Moderation", + "federation": "Federation", + "subsonic": "Subsonic", + "stats": "Statistics", + "ui": "User Interface", + "sections": "Sections" + } }, "library": { "AlbumDetail": { - "statsWarning": "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this object", - "localLabel": "Local", - "localProfileLink": "Open local profile", - "djangoLink": "View in Django's admin", - "musicbrainzLink": "Open on MusicBrainz", - "remoteRefreshButton": "Refresh from remote server", - "remoteProfileLink": "Open remote profile", - "editButton": "Edit", - "deleteButton": "Delete", - "deleteModalHeader": "Delete this album?", - "deleteModalMessage": "The album will be deleted, as well as associated uploads, tracks, favorites and listening history. This action is irreversible.", - "albumDataHeader": "Album data", - "titleLabel": "Title", - "artistLabel": "Artist", - "domainLabel": "Domain", - "descriptionLabel": "Description", - "activityHeader": "Activity;", - "firstSeenLabel": "First seen", - "listeningsLabel": "Listenings", - "favoritedLabel": "Favorited tracks", - "playlistsLabel": "Playlists", - "linkedReportsLabel": "Linked reports", - "editsLabel": "Edits", - "audioContentHeader": "Audio content", - "cachedSizeLabel": "Cached size", - "totalSizeLabel": "Total size", - "librariesLabel": "Libraries", - "uploadsLabel": "Uploads", - "tracksLabel": "Tracks" + "warning": { + "stats": "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this object" + }, + "header": { + "local": "Local", + "albumData": "Album data", + "activity": "Activity", + "audioContent": "Audio content" + }, + "link": { + "localProfile": "Open local profile", + "django": "View in Django's admin", + "musicbrainz": "Open on MusicBrainz", + "remoteProfile": "Open remote profile", + "artist": "Artist", + "domain": "Domain", + "reports": "Linked reports", + "edits": "Edits", + "libraries": "Libraries", + "uploads": "Uploads", + "tracks": "Tracks" + }, + "button": { + "remoteRefresh": "Refresh from remote server", + "edit": "Edit", + "delete": "Delete" + }, + "modal": { + "delete": { + "header": "Delete this album?", + "content": { + "warning": "The album will be deleted, as well as associated uploads, tracks, favorites and listening history. This action is irreversible." + } + } + }, + "table": { + "album": { + "title": "Title", + "description": "Description" + }, + "activity": { + "firstSeen": "First seen", + "listenings": "Listenings", + "favorited": "Favorited tracks", + "playlists": "Playlists" + }, + "audioContent": { + "cachedSize": "Cached size", + "totalSize": "Total size" + } + } }, "ArtistDetail": { - "statsWarning":"Statistics are computed from known activity and content on your instance, and do not reflect general activity for this object", - "localLabel": "Local", - "localProfileLink": "Open local profile", - "djangoLink": "View in Django's admin", - "musicbrainzLink": "Open on MusicBrainz", - "remoteRefreshButton": "Refresh from remote server", - "remoteProfileLink": "Open remote profile", - "editButton": "Edit", - "deleteButton": "Delete", - "deleteModalHeader": "Delete this artist?", - "deleteModalMessage": "The artist will be deleted, as well as associated uploads, tracks, favorites and listening history. This action is irreversible.", - "artistDataHeader": "Artist data", - "nameLabel": "Name", - "categoryLabel": "Category", - "domainLabel": "Domain", - "descriptionLabel": "Description", - "activityHeader": "Activity", - "firstSeenLabel": "First seen", - "listeningsLabel": "Listenings", - "favoritedLabel": "Favorited tracks", - "playlistsLabel": "Playlists", - "linkedReportsLabel": "Linked reports", - "editsLabel": "Edits", - "audioContentHeader": "Audio content", - "cachedSizeLabel": "Cached size", - "totalSizeLabel": "Total size", - "librariesLabel": "Libraries", - "uploadsLabel": "Uploads", - "albumsLabel": "Albums", - "tracksLabel": "Tracks" + "warning": { + "stats":"Statistics are computed from known activity and content on your instance, and do not reflect general activity for this object" + }, + "header": { + "local": "Local", + "artistData": "Artist data", + "activity": "Activity", + "audioContent": "Audio content" + }, + "link": { + "localProfile": "Open local profile", + "django": "View in Django's admin", + "musicbrainz": "Open on MusicBrainz", + "remoteProfile": "Open remote profile", + "category": "Category", + "domain": "Domain", + "reports": "Linked reports", + "edits": "Edits", + "libraries": "Libraries", + "uploads": "Uploads", + "albums": "Albums", + "tracks": "Tracks" + }, + "button": { + "remoteRefresh": "Refresh from remote server", + "edit": "Edit", + "delete": "Delete" + }, + "modal": { + "delete": { + "header": "Delete this artist?", + "content": { + "warning": "The artist will be deleted, as well as associated uploads, tracks, favorites and listening history. This action is irreversible." + } + } + }, + "table": { + "artist": { + "name": "Name", + "description": "Description" + }, + "activity": { + "firstSeen": "First seen", + "listenings": "Listenings", + "favorited": "Favorited tracks", + "playlists": "Playlists" + }, + "audioContent": { + "cachedSize": "Cached size", + "totalSize": "Total size" + } + } }, "Base": { "title": "Manage Library", - "secondaryMenu": "Secondary menu", - "editsLink": "Edits", - "channelsLink": "Channels", - "artistsLink": "Artists", - "albumsLink": "Albums", - "tracksLink": "Tracks", - "librariesLink": "Libraries", - "uploadsLink": "Uploads", - "tagsLink": "Tags" + "menu": { + "secondary": "Secondary menu" + }, + "link": { + "edits": "Edits", + "channels": "Channels", + "artists": "Artists", + "albums": "Albums", + "tracks": "Tracks", + "libraries": "Libraries", + "uploads": "Uploads", + "tags": "Tags" + } }, "EditsList": { "title": "Edits", - "libraryEditsHeader": "Library edits" + "header": { + "edits": "Library edits" + } }, "LibraryDetail": { - "statsWarning": "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this object", - "localLabel": "Local", - "djangoLink": "View in Django's admin", - "remoteProfileLink": "Open remote profile", - "deleteButton": "Delete", - "deleteModalHeader": "Delete this library?", - "deleteModalMessage": "The library will be deleted, as well as associated uploads, tracks, favorites and listening history. This action is irreversible.", - "libraryDataHeader": "Library data", - "nameLabel": "Name", - "visibilityLabel": "Visibility", - "accountLabel": "Account", - "domainLabel": "Domain", - "descriptionLabel": "Description", - "activityHeader": "Activity", - "firstSeenLabel": "First seen", - "followersLabel": "Followers", - "linkedReportsLabel": "Linked reports", - "audioContentHeader": "Audio content", - "cachedSizeLabel": "Cached size", - "totalSizeLabel": "Total size", - "artistsLabel": "Artists", - "albumsLabel": "Albums", - "tracksLabel": "Tracks", - "uploadsLabel": "Uploads" + "warning": { + "stats": "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this object" + }, + "header": { + "local": "Local", + "libraryData": "Library data", + "activity": "Activity", + "audioContent": "Audio content" + }, + "link": { + "django": "View in Django's admin", + "remoteProfile": "Open remote profile", + "visibility": "Visibility", + "account": "Account", + "reports": "Linked reports", + "domain": "Domain", + "artists": "Artists", + "albums": "Albums", + "tracks": "Tracks", + "uploads": "Uploads" + }, + "button": { + "delete": "Delete" + }, + "modal": { + "delete": { + "header": "Delete this library?", + "content": { + "warning": "The library will be deleted, as well as associated uploads, tracks, favorites and listening history. This action is irreversible." + } + } + }, + "table": { + "library": { + "name": "Name", + "description": "Description" + }, + "activity": { + "firstSeen": "First seen", + "followers": "Followers" + }, + "audioContent": { + "cachedSize": "Cached size", + "totalSize": "Total size" + + } + } }, "TagDetail": { - "localProfileLink": "Open local profile", - "djangoLink": "View in Django's admin", - "deleteButton": "Delete", - "deleteModalHeader": "Delete this tag?", - "deleteModalMessage": "The tag will be removed and unlinked from any existing entity. This action is irreversible.", - "tagDataHeader": "Tag data", - "nameLabel": "Name", - "activityHeader": "Activity", - "firstSeenLabel": "First seen", - "audioContentHeader": "Audio content", - "artistsLabel": "Artists", - "albumsLabel": "Albums", - "tracksLabel": "Tracks" + "header": { + "tagData": "Tag data", + "activity": "Activity", + "audioContent": "Audio content" + }, + "link": { + "localProfile": "Open local profile", + "django": "View in Django's admin", + "artists": "Artists", + "albums": "Albums", + "tracks": "Tracks" + }, + "button": { + "delete": "Delete" + }, + "modal": { + "delete": { + "header": "Delete this tag?", + "content": { + "warning": "The tag will be removed and unlinked from any existing entity. This action is irreversible." + } + + } + }, + "table": { + "tag": { + "name": "Name" + }, + "activity": { + "firstSeen": "First seen" + } + } }, "TrackDetail": { - "statsWarning": "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this object", - "localLabel": "Local", - "localProfileLink": "Open local profile", - "djangoLink": "View in Django's admin", - "musicbrainzLink": "Open on MusicBrainz", - "remoteRefreshButton": "Refresh from remote server", - "remoteProfileLink": "Open remote profile", - "editButton": "Edit", - "deleteButton": "Delete", - "deleteModalHeader": "Delete this track?", - "deleteModalMessage": "The track will be deleted, as well as associated uploads, favorites and listening history. This action is irreversible.", - "trackDataHeader": "Track data", - "titleLabel": "Title", - "albumLabel": "Album", - "artistLabel": "Artist", - "albumArtistLabel": "Album artist", - "positionLabel": "Position", - "discNumberLabel": "Disc number", - "copyrightLabel": "Copyright", - "licenseLabel": "License", - "domainLabel": "Domain", - "descriptionLabel": "Description", - "activityHeader": "Activity", - "firstSeenLabel": "First seen", - "listeningsLabel": "Listenings", - "favoritedLabel": "Favorited tracks", - "playlistsLabel": "Playlists", - "linkedReportsLabel": "Linked reports", - "editsLabel": "Edits", - "cachedSizeLabel": "Cached size", - "totalSizeLabel": "Total size", - "librariesLabel": "Libraries", - "uploadsLabel": "Uploads" + "warning": { + "stats": "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this object" + }, + "header": { + "local": "Local", + "trackData": "Track data", + "activity": "Activity" + }, + "link": { + "localProfile": "Open local profile", + "django": "View in Django's admin", + "musicbrainz": "Open on MusicBrainz", + "remoteProfile": "Open remote profile", + "album": "Album", + "artist": "Artist", + "domain": "Domain", + "reports": "Linked reports", + "edits": "Edits", + "libraries": "Libraries", + "uploads": "Uploads", + "albumArtist": "Album artist" + }, + "button": { + "remoteRefresh": "Refresh from remote server", + "edit": "Edit", + "delete": "Delete" + }, + "modal": { + "delete": { + "header": "Delete this track?", + "content": { + "warning": "The track will be deleted, as well as associated uploads, favorites and listening history. This action is irreversible." + } + } + }, + "table": { + "track": { + "title": "Title", + "position": "Position", + "discNumber": "Disc number", + "copyright": "Copyright", + "license": "License", + "description": "Description" + }, + "activity": { + "firstSeen": "First seen", + "listenings": "Listenings", + "favorited": "Favorited tracks", + "playlists": "Playlists" + }, + "trackData": { + "cachedSize": "Cached size", + "totalSize": "Total size" + } + } }, "UploadDetail": { - "localLabel": "Local", - "djangoLink": "View in Django's admin", - "remoteProfileLink": "Open remote profile", - "downloadButton": "Download", - "deleteButton": "Delete", - "deleteModalHeader": "Delete this upload?", - "deleteModalMessage": "The upload will be removed. This action is irreversible.", - "uploadDataHeader": "Upload data", - "nameLabel": "Name", - "visibilityLabel": "Visibility", - "accountLabel": "Account", - "domainLabel": "Domain", - "importStatusLabel": "Import status", - "libraryLabel": "Library", - "activityHeader": "Activity", - "firstSeenLabel": "First seen", - "accessedDateLabel": "Accessed date", - "notApplicable": "N/A", - "audioContentHeader": "Audio content", - "trackLabel": "Track", - "cachedSizeLabel": "Cached size", - "sizeLabel": "Size", - "bitrateLabel": "Bitrate", - "bitrateValue": "{bitrate}/s", - "durationLabel": "Duration", - "typeLabel": "Type" + "header": { + "local": "Local", + "uploadData": "Upload data", + "activity": "Activity", + "audioContent": "Audio content" + }, + "button": { + "download": "Download", + "delete": "Delete" + }, + "link": { + "django": "View in Django's admin", + "remoteProfile": "Open remote profile", + "visibility": "Visibility", + "account": "Account", + "domain": "Domain", + "importStatus": "Import status", + "library": "Library", + "type": "Type" + }, + "modal": { + "delete": { + "header": "Delete this upload?", + "content": { + "warning": "The upload will be removed. This action is irreversible." + } + } + }, + "table": { + "upload": { + "name": "Name" + }, + "activity": { + "firstSeen": "First seen", + "accessedDate": "Accessed date" + }, + "audioContent": { + "track": "Track", + "cachedSize": "Cached size", + "size": "Size", + "bitrate": { + "label": "Bitrate", + "value": "{bitrate}/s" + }, + "duration": "Duration" + } + }, + "notApplicable": "N/A" } }, "moderation": { "AccountsDetail": { - "statsWarning": "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this object", - "uploadQuota": "Determine how much content the user can upload. Leave empty to use the default value of the instance.", - "libraryPermission": "Library", - "moderationPermission": "Moderation", - "settingsPermission": "Settings", - "localAccountLabel": "Local account", - "openProfileLink": "Open profile", - "djangoLink": "View in Django's admin", - "remoteProfileLink": "Open remote profile", - "noPolicyHeader": "You don't have any rule in place for this account.", - "policyDescription": "Moderation policies help you control how your instance interact with a given domain or account", - "addPolicyButton": "Add a moderation policy", - "activePolicyHeader": "This domain is subject to specific moderation rules", - "accountDataHeader": "Account data", - "usernameLabel": "Username", - "domainLabel": "Domain", - "displayNameLabel": "Display name", - "emailLabel": "Email address", - "loginStatusLabel": "Login status", - "enabledStatus": "Enabled", - "disabledStatus": "Disabled", - "permissionsLabel": "Permissions", - "userTypeLabel": "Type", - "lastCheckedLabel": "Last checked", - "notApplicable": "N/A", - "signupDateLabel": "Sign-up date", - "lastActivityLabel": "Last activity", - "activityHeader": "Activty", - "firstSeenLabel": "First seen", - "emittedMessagesLabel": "Emitted messages", - "receivedFollowsLabel": "Received library follows", - "emittedFollowsLabel": "Emitted library follows", - "linkedReportsLabel": "Linked reports", - "requestsLabel": "Requests", - "audioContentHeader": "Audio content", - "cachedSizeLabel": "Cached size", - "uploadQuotaLabel": "Upload quota", - "megabyteLabel": "MB", - "totalSizeLabel": "Total size", - "channelsLabel": "Channels", - "librariesLabel": "Libraries", - "uploadsLabel": "Uploads", - "artistsLabel": "Artists", - "albumsLabel": "Albums", - "tracksLabel": "Tracks" + "warning": { + "stats": "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this object" + }, + "tooltip": { + "uploadQuota": "Determine how much content the user can upload. Leave empty to use the default value of the instance." + }, + "option": { + "permission": { + "library": "Library", + "moderation": "Moderation", + "settings": "Settings" + } + }, + "header": { + "localAccount": "Local account", + "noPolicy": "You don't have any rule in place for this account.", + "activePolicy": "This domain is subject to specific moderation rules", + "accountData": "Account data", + "activity": "Activty", + "audioContent": "Audio content" + }, + "link": { + "openProfile": "Open profile", + "django": "View in Django's admin", + "remoteProfile": "Open remote profile", + "domain": "Domain", + "linkedReports": "Linked reports", + "requests": "Requests", + "channels": "Channels", + "libraries": "Libraries", + "uploads": "Uploads", + "artists": "Artists", + "albums": "Albums", + "tracks": "Tracks" + }, + "description": { + "policy": "Moderation policies help you control how your instance interact with a given domain or account" + }, + "button": { + "addPolicy": "Add a moderation policy" + }, + "table": { + "accountData": { + "username": "Username", + "displayName": "Display name", + "email": "Email address", + "loginStatus": { + "label": "Login status", + "enabled": "Enabled", + "disabled": "Disabled" + }, + "permissions": "Permissions", + "userType": "Type", + "lastChecked": "Last checked", + "signupDate": "Sign-up date", + "lastActivity": "Last activity" + }, + "activity": { + "firstSeen": "First seen", + "emittedMessages": "Emitted messages", + "receivedFollows": "Received library follows", + "emittedFollows": "Emitted library follows" + }, + "audioContent": { + "cachedSize": "Cached size", + "uploadQuota": "Upload quota", + "megabyte": "MB", + "totalSize": "Total size" + } + }, + "notApplicable": "N/A" }, "Base": { - "moderation": "Moderation", - "secondaryMenu": "Secondary menu", - "reportsLink": "Reports", - "userRequestsLink": "User Requests", - "domainsLink": "Domains", - "accountsLink": "Accounts" + "title": "Moderation", + "menu": { + "secondary": "Secondary menu" + }, + "link": { + "reports": "Reports", + "userRequests": "User Requests", + "domains": "Domains", + "accounts": "Accounts" + } }, "DomainsDetail": { - "statsWarning": "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this object", - "websiteLink": "Open website", - "djangoLink": "View in Django's admin", - "removeFromAllowList": "Remove from allow-list", - "addToAllowList": "Add to allow-list", - "noPolicyHeader": "You don't have any rule in place for this domain.", - "policyDescription": "Moderation policies help you control how your instance interact with a given domain or account", - "addPolicyButton": "Add a moderation policy", - "activePolicyHeader": "This domain is subject to specific moderation rules", - "instanceDataHeader": "Instance data", - "inAllowListLabel": "Is present on allow-list", - "inAllowListTrue": "Yes", - "inAllowListFalse": "No", - "lastCheckedLabel": "Last checked", - "notApplicable": "N/A", - "softwareLabel": "Software", - "softwareValue": "{name} ({version})", - "domainNameLabel": "Name", - "totalUsersLabel": "Total users", - "nodeInfoStatusLabel": "Status", - "nodeInfoFailureMessage": "Error while fetching node info", - "refreshNodeInfoButton": "Refresh node info", - "activityHeader": "Activty", - "firstSeenLabel": "First seen", - "knownAccountsLink": "Known accounts", - "emittedMessagesLabel": "Emitted messages", - "receivedFollowsLabel": "Received library follows", - "emittedFollowsLabel": "Emitted library follows", - "audioContentHeader": "Audio content", - "cachedSizeLabel": "Cached size", - "totalSizeLabel": "Total size", - "channelsLabel": "Channels", - "librariesLabel": "Libraries", - "uploadsLabel": "Uploads", - "artistsLabel": "Artists", - "albumsLabel": "Albums", - "tracksLabel": "Tracks" + "warning": { + "stats": "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this object" + }, + "link": { + "website": "Open website", + "django": "View in Django's admin", + "knownAccounts": "Known accounts", + "channels": "Channels", + "libraries": "Libraries", + "uploads": "Uploads", + "artists": "Artists", + "albums": "Albums", + "tracks": "Tracks" + }, + "button": { + "removeFromAllowList": "Remove from allow-list", + "addToAllowList": "Add to allow-list", + "addPolicy": "Add a moderation policy", + "refreshNodeInfo": "Refresh node info" + }, + "header": { + "noPolicy": "You don't have any rule in place for this domain.", + "activePolicy": "This domain is subject to specific moderation rules", + "instanceData": "Instance data", + "activity": "Activty", + "audioContent": "Audio content" + }, + "description": { + "policy": "Moderation policies help you control how your instance interact with a given domain or account" + }, + "table": { + "instanceData": { + "inAllowList": { + "label": "Is present on allow-list", + "true": "Yes", + "false": "No" + }, + "lastChecked": "Last checked", + "software": { + "label": "Software", + "value": "{name} ({version})" + }, + "domainName": "Name", + "totalUsers": "Total users", + "nodeInfoStatus": { + "label": "Status", + "value": "Error while fetching node info" + } + }, + "activity": { + "firstSeen": "First seen", + "emittedMessages": "Emitted messages", + "receivedFollows": "Received library follows", + "emittedFollows": "Emitted library follows" + }, + "audioContent": { + "cachedSize": "Cached size", + "totalSize": "Total size" + } + }, + "notApplicable": "N/A" }, "DomainsList": { "title": "Domains", - "failureHeader": "Error while creating domain", - "addDomainLabel": "Add a domain", - "addToAllowListLabel": "Add to allow-list", - "addButton": "Add" + "header": { + "domains": "Domains", + "failure": "Error while creating domain" + }, + "label": { + "addDomain": "Add a domain", + "addToAllowList": "Add to allow-list" + }, + "button": { + "add": "Add" + } }, "ReportsList": { "title": "Reports", - "searchPlaceholder": "Search by account, summary, domain…", - "searchLabel": "Search", - "statusLabel": "Status", - "allOption": "All", - "resolvedStatus": "Resolved", - "unresolvedStatus": "Unresolved", - "orderingLabel": "Ordering", - "orderingDirectionLabel": "Order", - "ascendingOrdering": "Ascending", - "descendingOrdering": "Descending" + "header": { + "reports": "Reports" + }, + "placeholder": { + "search": "Search by account, summary, domain…" + }, + "label": { + "search": "Search", + "status": "Status" + }, + "option": { + "status": { + "all": "All", + "resolved": "Resolved", + "unresolved": "Unresolved" + } + }, + "ordering": { + "label": "Ordering", + "direction": { + "label": "Order", + "ascending": "Ascending", + "descending": "Descending" + } + } }, "RequestsList": { "title": "User Requests", - "searchPlaceholder": "Search by username", - "searchLabel": "Search", - "statusLabel": "Status", - "allOption": "All", - "pendingStatus": "Pending", - "approvedStatus": "Approved", - "refusedStatus": "Refused", - "orderingLabel": "Ordering", - "orderingDirectionLabel": "Order", - "ascendingOrdering": "Ascending", - "descendingOrdering": "Descending" + "placeholder": { + "search": "Search by username" + }, + "header": { + "userRequests": "User Requests" + }, + "label": { + "search": "Search", + "status": "Status" + }, + "option": { + "status": { + "all": "All", + "pending": "Pending", + "approved": "Approved", + "refused": "Refused" + } + }, + "ordering": { + "label": "Ordering", + "direction": { + "label": "Order", + "ascending": "Ascending", + "descending": "Descending" + } + } } }, "users": { "Base": { "title": "Manage users", - "secondaryMenu": "Secondary menu", - "usersLink": "Users", - "invitationsLink": "Invitations" + "menu": { + "secondary": "Secondary menu" + }, + "link": { + "users": "Users", + "invitations": "Invitations" + } } } }, "auth": { "Callback": { - "loggingInHeader": "Logging in…" + "header": { + "loggingIn": "Logging in…" + } }, "EmailConfirm": { - "confirm": "Confirm your e-mail address", - "confirmFailureHeader": "Could not confirm your e-mail address", - "confirmationCodeLabel": "Confirmation code", - "backToLoginLink": "Return to login", - "confirmSuccessHeader": "E-mail address confirmed", - "confirmSuccessMessage": "You can now use the service without limitations", - "goToLoginLink": "Proceed to login" + "title": "Confirm your e-mail address", + "header": { + "failure": "Could not confirm your e-mail address", + "success": "E-mail address confirmed" + }, + "label": { + "confirmationCode": "Confirmation code" + }, + "link": { + "back": "Return to login", + "login": "Proceed to login" + }, + "message": { + "success": "You can now use the service without limitations" + } }, "Login": { "title": "Log in", - "loginHeader": "Log in to your Funkwhale account" + "header": { + "login": "Log in to your Funkwhale account" + } }, "PasswordReset": { - "placeholder": "Enter the e-mail address linked to your account", "title": "Reset your password", - "resetFailureHeader": "Error while asking for a password reset", - "resetFormDescription": "Use this form to request a password reset. We will send an e-mail to the given address with instructions to reset your password.", - "emailLabel": "Account's e-mail address", - "backToLoginLink": "Back to login", - "requestResetButton": "Ask for a password reset" + "placeholder": { + "email": "Enter the e-mail address linked to your account" + }, + "header": { + "reset": "Reset your password", + "failure": "Error while asking for a password reset" + }, + "help": { + "form": "Use this form to request a password reset. We will send an e-mail to the given address with instructions to reset your password." + }, + "label": { + "email": "Account's e-mail address" + }, + "link": { + "back": "Back to login" + }, + "button": { + "requestReset": "Ask for a password reset" + } }, "PasswordResetConfirm": { "title": "Change your password", - "changeFailureHeader": "Error while changing your password", - "newPasswordLabel": "New password", - "backToLoginLink": "Back to login", - "updatePasswordButton": "Update your password", - "requestSentMessage": "If the e-mail address provided in the previous step is valid and linked to a user account, you should receive an e-mail with reset instructions in the next couple of minutes.", - "changeSuccessHeader": "Password updated successfully", - "changeSuccessMessage": "Your password has been updated successfully.", - "goToLoginLink": "Proceed to login" + "header": { + "failure": "Error while changing your password", + "success": "Password updated successfully" + }, + "message": { + "success": "Your password has been updated successfully.", + "requestSent": "If the e-mail address provided in the previous step is valid and linked to a user account, you should receive an e-mail with reset instructions in the next couple of minutes." + }, + "link": { + "back": "Back to login", + "login": "Proceed to login" + }, + "label": { + "newPassword": "New password" + }, + "button": { + "update": "Update your password" + } }, "Plugins": { "title": "Manage plugins" }, "ProfileActivity": { - "recentlyListened": "Recently listened", - "recentlyFavorited": "Recently favorited", - "playlistsHeader": "Playlists" + "header": { + "recentlyListened": "Recently listened", + "recentlyFavorited": "Recently favorited", + "playlists": "Playlists" + } }, "ProfileBase": { "title": "{username}'s profile", - "domainViewLink": "View on {domain}", - "moderationLink": "Open in moderation interface", - "ownUserLabel": "This is you!", - "overviewLink": "Overview", - "activityLink": "Activity" + "link": { + "domainView": "View on {domain}", + "moderation": "Open in moderation interface", + "overview": "Overview", + "activity": "Activity" + }, + "label": { + "self": "This is you!" + } }, "ProfileOverview": { - "channelsHeader": "Channels", - "addNewLink": "Add New", - "librariesHeader": "User Libraries", - "sharedLibraries": "This user shared the following libraries", - "createChannelModalHeader": "Create channel", - "podcastChannelHeader": "Podcast channel", - "artistChannelHeader": "Artist channel", - "cancelButton": "Cancel", - "previousButton": "Previous step", - "nextButton": "Next step", - "createChannelButton": "Create channel" + "header": { + "libraries": "User Libraries", + "channels": "Channels", + "sharedLibraries": "This user shared the following libraries" + }, + "modal": { + "createChannel": { + "header": "Create channel", + "podcast": { + "header": "Podcast channel" + }, + "artist": { + "header": "Artist channel" + } + } + }, + "link": { + "addNew": "Add New" + }, + "button": { + "cancel": "Cancel", + "previous": "Previous step", + "next": "Next step", + "createChannel": "Create channel" + } }, "Signup": { "title": "Sign up", - "createAccountHeader": "Create a Funkwhale account" + "header": { + "createAccount": "Create a Funkwhale account" + } } }, "channels": { "DetailBase": { "title": "Channel", - "episodeCount": "No episodes | {count} episode | {count} episodes", - "trackCount": "No tracks | {count} track | {count} tracks", - "subscriberCount": "No subscribers | {count} subscriber | {count} subscribers", - "listeningsCount": "No listenings | {count} listening | {count} listenings", - "subscribeModalHeader": "Subscribe to this channel", - "subscribeOnFunkwhale": "Subscribe on Funkwhale", - "subscribeRss": "Subscribe via RSS", - "copyUrl": "Copy paste the following URL in your favorite podcatcher:", - "subscribeOnFediverse": "Subscribe on the Fediverse", - "subscribeOnFediverseDescription": "If you're using Mastodon or other fediverse applications, you can subscribe to this account:", - "cancelButton": "Cancel", - "embedButton": "Embed", - "domainViewLink": "View on {domain}", - "editButton": "Edit…", - "deleteButton": "Delete…", - "deleteModalHeader": "Delete this Channel?", - "deleteModalMessage": "The channel will be deleted, as well as any related files and data. This action is irreversible.", - "deleteModalConfirm": "Delete", - "moderationLink": "Open in moderation interface", - "mirroredLink": "Mirrored from {domain}", - "uploadButton": "Upload", - "playButton": "Play", - "embedModalHeader": "Embed this artist work on your website", - "podcastChannelHeader": "Podcast channel", - "artistChannelHeader": "Artist channel", - "updateChannelButton": "Update channel", - "channelOverview": "Overview", - "channelEpisodes": "All episodes", - "channelTracks": "Tracks" + "meta": { + "episodes": "No episodes | {count} episode | {count} episodes", + "tracks": "No tracks | {count} track | {count} tracks", + "subscribers": "No subscribers | {count} subscriber | {count} subscribers", + "listenings": "No listenings | {count} listening | {count} listenings" + }, + "header": { + "podcastChannel": "Podcast channel", + "artistChannel": "Artist channel" + }, + "modal": { + "subscribe": { + "header": "Subscribe to this channel", + "funkwhale": { + "header": "Subscribe on Funkwhale" + }, + "rss": { + "header": "Subscribe via RSS", + "content": { + "help": "Copy paste the following URL in your favorite podcatcher:" + } + }, + "fediverse": { + "header": "Subscribe on the Fediverse", + "content": { + "help": "If you're using Mastodon or other fediverse applications, you can subscribe to this account:" + } + } + }, + "delete": { + "header": "Delete this Channel?", + "content": { + "warning": "The channel will be deleted, as well as any related files and data. This action is irreversible." + } + }, + "embed": { + "header": "Embed this artist work on your website" + } + }, + "button": { + "cancel": "Cancel", + "embed": "Embed", + "edit": "Edit…", + "delete": "Delete…", + "upload": "Upload", + "play": "Play", + "updateChannel": "Update channel", + "confirm": "Delete" + }, + "link": { + "domainView": "View on {domain}", + "moderation": "Open in moderation interface", + "mirrored": "Mirrored from {domain}", + "channelOverview": "Overview", + "channelEpisodes": "All episodes", + "channelTracks": "Tracks" + } }, "DetailOverview": { - "uploadsSuccessHeader": "Uploads published successfully", - "uploadsProgress": "Processed uploads: {finished}/{total}", - "uploadsFailureHeader": "Some uploads couldn't be published", - "skippedUploadsLink": "View skipped uploads", - "erroredUploadsLink": "View errored uploads", - "uploadsProcessingHeader": "Uploads are being processed", - "uploadsProcessingMessage": "Your uploads are being processed by Funkwhale and will be live very soon.", - "latestEpisodes": "Latest episodes", - "latestTracks": "Latest tracks", - "seriesHeader": "Series", - "albumsHeader": "Albums", - "addAlbumLink": "Add new" + "header": { + "uploadsSuccess": "Uploads published successfully", + "uploadsFailure": "Some uploads couldn't be published", + "uploadsProcessing": "Uploads are being processed", + "latestEpisodes": "Latest episodes", + "latestTracks": "Latest tracks", + "series": "Series", + "albums": "Albums" + }, + "meta": { + "progress": "Processed uploads: {finished}/{total}" + }, + "link": { + "skippedUploads": "View skipped uploads", + "erroredUploads": "View errored uploads", + "addAlbum": "Add new" + }, + "message": { + "processing": "Your uploads are being processed by Funkwhale and will be live very soon." + } }, "SubscriptionsList": { "title": "Subscribed Channels", - "searchPlaceholder": "Filter by name…", - "addNewLink": "Add new", - "subscriptionModalHeader": "Subscription", - "cancelButton": "Cancel", - "subscribeButton": "Subscribe" + "placeholder": { + "search": "Filter by name…" + }, + "link": { + "addNew": "Add new" + }, + "modal": { + "subscription": { + "header": "Subscription" + } + }, + "button": { + "cancel": "Cancel", + "subscribe": "Subscribe" + } } }, "content": { "Base": { "title": "Add content", - "secondaryMenu": "Secondary menu", - "librariesLink": "Libraries", - "tracksLink": "Tracks" + "menu": { + "secondary": "Secondary menu" + }, + "link": { + "libraries": "Libraries", + "tracks": "Tracks" + } }, "Home": { "title": "Add and manage content", - "uploadQuota": "This instance offers up to {quota} of storage space for every user.", - "channelHeader": "Publish your work in a channel", - "channelDescription": "If you are a musician or a podcaster, channels are designed for you!", - "channelDescriptionContinued": "Share your work publicly and get subscribers on Funkwhale, the Fediverse or any podcasting application.", - "getStartedButton": "Get started", - "libraryUploadHeader": "Upload third-party content in a library", - "libraryUploadDescription": "Upload your personal music library to Funkwhale to enjoy it from anywhere and share it with friends and family.", - "followLibrariesHeader": "Follow remote libraries", - "followLibrariesDescription": "Follow libraries from other users to get access to new music. Public libraries can be followed immediately, while following a private library requires approval from its owner." + "help": { + "uploadQuota": "This instance offers up to {quota} of storage space for every user." + }, + "header": { + "channel": "Publish your work in a channel", + "upload": "Upload third-party content in a library", + "follow": "Follow remote libraries" + }, + "description": { + "channel": { + "1": "If you are a musician or a podcaster, channels are designed for you!", + "2": "Share your work publicly and get subscribers on Funkwhale, the Fediverse or any podcasting application." + }, + "upload": "Upload your personal music library to Funkwhale to enjoy it from anywhere and share it with friends and family.", + "follow": "Follow libraries from other users to get access to new music. Public libraries can be followed immediately, while following a private library requires approval from its owner." + }, + "button": { + "start": "Get started" + } }, "libraries": { "Card": { - "sizeLabel": "Total size of the files in this library", - "trackCount":"No tracks | {count} track | {count} tracks", - "uploadButton": "Upload", - "detailsLink": "Library Details" + "label": { + "size": "Total size of the files in this library" + }, + "meta": { + "tracks":"No tracks | {count} track | {count} tracks" + }, + "button": { + "upload": "Upload" + }, + "link": { + "details": "Library Details" + } }, "FilesTable": { - "deleteLabel": "Delete", - "restartImportLabel": "Restart import", - "searchPlaceholder": "Search by domain, title, artist, album…", - "showStatus": "Show information about the upload status for this track", - "searchLabel": "Search", - "importStatusLabel": "Import status", - "allOption": "All", - "draftStatus": "Draft", - "pendingStatus": "Pending", - "skippedStatus": "Skipped", - "failedStatus": "Failed", - "finishedStatus": "Finished", - "orderingLabel": "Ordering", - "orderingDirectionLabel": "Ordering direction", - "ascendingOrdering": "Ascending", - "descendingOrdering": "Descending", - "emptyState": "No tracks have been added to this libray yet", - "titleTableHeader": "Title", - "artistTableHeader": "Artist", - "albumTableHeader": "Album", - "uploadDateTableHeader": "Upload date", - "importStatusTableHeader": "Import status", - "durationTableHeader": "Duration", - "sizeTableHeader": "Size", - "notApplicable": "N/A", - "resultsDisplay":"Showing results {start}-{end} on {total}" + "action": { + "delete": "Delete", + "restartImport": "Restart import" + }, + "placeholder": { + "search": "Search by domain, title, artist, album…" + }, + "button": { + "showStatus": "Show information about the upload status for this track" + }, + "label": { + "search": "Search", + "importStatus": "Import status" + }, + "option": { + "status": { + "all": "All", + "draft": "Draft", + "pending": "Pending", + "skipped": "Skipped", + "failed": "Failed", + "finished": "Finished" + } + }, + "ordering": { + "label": "Ordering", + "direction": { + "label": "Ordering direction", + "ascending": "Ascending", + "descending": "Descending" + } + }, + "empty": { + "noTracks": "No tracks have been added to this libray yet" + }, + "table": { + "file": { + "header": { + "title": "Title", + "artist": "Artist", + "album": "Album", + "uploadDate": "Upload date", + "importStatus": "Import status", + "duration": "Duration", + "size": "Size" + } + } + }, + "pagination": { + "results": "Showing results {start}-{end} on {total}" + }, + "notApplicable": "N/A" }, "Form": { - "descriptionPlaceholder": "This library contains my personal music, I hope you like it.", - "namePlaceholder": "My awesome library", - "libraryUpdateMessage": "Library updated", - "libraryCreateMessage": "Library created", - "libraryDeleteMessage": "LIbrary deleted", - "libraryHelp": "Libraries help you organize and share your music collections. You can upload your own music collection to Funkwhale and share it with your friends and family.", - "failureHeader": "Error", - "nameLabel": "Name", - "descriptionLabel" :"Description", - "visibilityLabel": "Visibility", - "visibilityDescription": "You are able to share your library with other people, regardless of its visibilty.", - "updateButton": "Update library", - "createButton": "Create library", - "deleteButton": "Delete", - "deleteModalHeader": "Delete this library?", - "deleteModalMessage": "The library and all its tracks will be deleted. This can not be undone.", - "deleteModalConfirm": "Delete library" + "placeholder": { + "description": "This library contains my personal music, I hope you like it.", + "name": "My awesome library" + }, + "message": { + "libraryUpdated": "Library updated", + "libraryCreated": "Library created", + "libraryDeleted": "LIbrary deleted" + }, + "description": { + "library": "Libraries help you organize and share your music collections. You can upload your own music collection to Funkwhale and share it with your friends and family.", + "visibility": "You are able to share your library with other people, regardless of its visibilty." + }, + "header": { + "failure": "Error" + }, + "label": { + "name": "Name", + "description" :"Description", + "visibility": "Visibility" + }, + "button": { + "update": "Update library", + "create": "Create library", + "delete": "Delete", + "confirm": "Delete library" + }, + "modal": { + "delete": { + "header": "Delete this library?", + "content": { + "warning": "The library and all its tracks will be deleted. This can not be undone." + } + } + } }, "Home": { - "loadingLibraries": "Loading libraries…", - "ownLibrariesHeader": "My libraries", - "emptyState": "Looks like you don't have a library, it's time to create one.", - "createLibraryLink": "Create a new library" + "loading": { + "libraries": "Loading libraries…" + }, + "header":{ + "libraries": "My libraries" + }, + "empty": { + "noLibrary": "Looks like you don't have a library, it's time to create one." + }, + "link": { + "createLibrary": "Create a new library" + } }, "Quota": { - "currentUsageHeader": "Current usage", - "loadingMessage": "Loading usage data…", - "percentUsed": "{progress}%", - "currentUsage": "{amount} used on {max} allowed", - "pendingLabel": "Pending files", - "viewFilesLink": "View files", - "purgeButton": "Purge", - "purgePendingModalHeader": "Purge pending files?", - "purgePendingModalMessage": "Removes uploaded but yet to be processed tracks completely, adding the corresponding data to your quota.", - "skippedLabel": "Skipped files", - "purgeSkippedModalHeader": "Purge skipped files?", - "purgeSkippedModalMessage": "Removes uploaded tracks skipped during the import processes completely, adding the corresponding data to your quota.", - "erroredLabel": "Errored files", - "purgeErroredModalHeader": "Purge errored files?", - "purgeErroredModalMessage": "Removes uploaded tracks that could not be processed by the server completely, adding the corresponding data to your quota." - + "header": { + "currentUsage": "Current usage" + }, + "loading": { + "currentUsage": "Loading usage data…" + }, + "label": { + "percentUsed": "{progress}%", + "currentUsage": "{amount} used on {max} allowed", + "skipped": "Skipped files", + "errored": "Errored files", + "pending": "Pending files" + }, + "link": { + "viewFiles": "View files" + }, + "button": { + "purge": "Purge" + }, + "modal": { + "purgePending": { + "header": "Purge pending files?", + "content": { + "description": "Removes uploaded but yet to be processed tracks completely, adding the corresponding data to your quota." + } + }, + "purgeSkipped": { + "header": "Purge skipped files?", + "content": { + "description": "Removes uploaded tracks skipped during the import processes completely, adding the corresponding data to your quota." + } + }, + "purgeErrored": { + "header": "Purge errored files?", + "content": { + "description": "Removes uploaded tracks that could not be processed by the server completely, adding the corresponding data to your quota." + } + } + } } }, "remote": { "Card": { - "privateTooltip": "This library is private and your approval from its owner is needed to access its content", - "publicTooltip": "This library is public and you can access its content freely", - "scanSkipped": "Scan skipped (previous scan is too recent)", - "scanLaunched": "Scan launched", - "followError": "Cannot follow remote library: {error}", - "unfollowError": "Cannot unfollow remote library: {error}", - "trackCount": "No tracks | {count} track | {count} tracks", - "scanPending": "Scan pending", - "scanProgress": "Scanning ({progress})", - "scanFailure": "Problem during scanning", - "scanSuccess": "Scanned", - "scanPartialSuccess": "Scanned with errors", - "scanDetails": "Details", - "lastUpdate": "Last update: ", - "failedTracks": "Failed tracks: {tracks}", - "scanNowButton": "Scan now ", - "sharingLinkLabel": "Sharing link", - "followButton": "Follow", - "pendingApprovalButton": "Follow request pending approval", - "cancelFollowButton": "Cancel follow request", - "unfollowButton": "Unfollow", - "unfollowModalHeader": "Unfollow this libary?", - "unfollowModalMessage": "By unfollowing this library, you loose access to its content." + "tooltip": { + "private": "This library is private and your approval from its owner is needed to access its content", + "public": "This library is public and you can access its content freely" + }, + "message": { + "scanSkipped": "Scan skipped (previous scan is too recent)", + "scanLaunched": "Scan launched" + }, + "error": { + "follow": "Cannot follow remote library: {error}", + "unfollow": "Cannot unfollow remote library: {error}" + }, + "meta": { + "tracks": "No tracks | {count} track | {count} tracks", + "lastUpdate": "Last update: ", + "failedTracks": "Failed tracks: {tracks}" + }, + "button": { + "follow": "Follow", + "pending": "Follow request pending approval", + "cancel": "Cancel follow request", + "unfollow": "Unfollow" + }, + "link": { + "scanDetails": "Details", + "scan": "Scan now " + }, + "label": { + "sharingLink": "Sharing link", + "scanPending": "Scan pending", + "scanProgress": "Scanning ({progress})", + "scanFailure": "Problem during scanning", + "scanSuccess": "Scanned", + "scanPartialSuccess": "Scanned with errors" + }, + "modal": { + "unfollow": { + "header": "Unfollow this libary?", + "content": { + "warning": "By unfollowing this library, you loose access to its content." + } + } + } }, "Home": { - "loadingMessage": "Loading remote libraries…", - "remoteLibrariesHeader": "Remote libraries", - "remoteLibrariesDescription": "Remote libraries are owned by other users on the network. You can access them as long as they are public or you are granted access.", - "knownLibrariesHeader": "Known libraries", - "refreshButton": "Refresh" + "loading": { + "remoteLibraries": "Loading remote libraries…" + }, + "header": { + "remoteLibraries": "Remote libraries", + "knownLibraries": "Known libraries" + }, + "description": { + "remoteLibraries": "Remote libraries are owned by other users on the network. You can access them as long as they are public or you are granted access." + }, + "button": { + "refresh": "Refresh" + } }, "ScanForm": { - "placeholder": "Enter a library URL", - "submitLibrarySearch": "Submit search", - "failureHeader": "Could not fetch remote library", - "searchLabel": "Search a remote library" + "placeholder": { + "url": "Enter a library URL" + }, + "button": { + "submit": "Submit search" + }, + "label": { + "search": "Search a remote library" + }, + "header": { + "failure": "Could not fetch remote library" + } } } }, "library": { "DetailAlbums": { - "ownerEmptyState": "This library is empty, you should upload something in it!", - "viewerEmptyState": "You may need to follow this library to see its content." + "empty": { + "upload": "This library is empty, you should upload something in it!", + "follow": "You may need to follow this library to see its content." + } }, "DetailOverview": { - "ownerEmptyState": "This library is empty, you should upload something in it!", - "viewerEmptyState": "You may need to follow this library to see its content." + "empty": { + "upload": "This library is empty, you should upload something in it!", + "follow": "You may need to follow this library to see its content." + } }, "DetailTracks": { - "ownerEmptyState": "This library is empty, you should upload something in it!", - "viewerEmptyState": "You may need to follow this library to see its content." + "empty": { + "upload": "This library is empty, you should upload something in it!", + "follow": "You may need to follow this library to see its content." + } }, "Edit": { - "libraryContentsHeader": "Library contents", - "followersHeader": "Followers", - "loadingFollowers": "Loading followers…", - "userTableHeader": "User", - "dateTableHeader": "Date", - "statusTableHeader": "Status", - "actionTableHeader": "Action", - "pendingStatus": "Pending approval", - "acceptedStatus": "Accepted", - "rejectedStatus": "Rejected", - "acceptButton": "Accept", - "rejectButton": "Reject", - "noFollowers": "Nobody is following this library" + "header": { + "libraryContents": "Library contents", + "followers": "Followers" + }, + "button": { + "accept": "Accept", + "reject": "Reject" + }, + "loading": { + "followers": "Loading followers…" + }, + "table": { + "action": { + "header": { + "user": "User", + "date": "Date", + "status": "Status", + "action": "Action" + }, + "status": { + "pending": "Pending approval", + "accepted": "Accepted", + "rejected": "Rejected" + } + } + }, + "empty": { + "noFollowers": "Nobody is following this library" + } }, "LibraryBase": { "title": "Library", - "privateVisibility": "Private", - "instanceVisibility": "Restricted", - "publicVisibility": "Public", - "privateTooltip": "This library is private and your approval from its owner is needed to access its content", - "instanceTooltip": "This library is restricted to users on this pod only", - "publicTooltip": "This library is public and you can access its content freely", - "domainViewLink": "View on {domain}", - "moderationLink": "Open in moderation interface", - "ownerLink": "Owned by {username}", - "trackCount": "No tracks | {count} track | {count} tracks", - "sharingLinkLabel": "Sharing link", - "sharingLinkDescription": "Share this link with other users so they can request access to this library by copy-pasting it in their pod search bar.", - "artistsLink": "Artists", - "albumsLink": "Albums", - "tracksLink": "Tracks", - "uploadButton": "Upload", - "editButton": "Edit" + "label": { + "private": "Private", + "instance": "Restricted", + "public": "Public", + "sharingLink": "Sharing link" + }, + "tooltip": { + "private": "This library is private and your approval from its owner is needed to access its content", + "instance": "This library is restricted to users on this pod only", + "public": "This library is public and you can access its content freely" + }, + "description": { + "sharingLink": "Share this link with other users so they can request access to this library by copy-pasting it in their pod search bar." + }, + "link": { + "domain": "View on {domain}", + "moderation": "Open in moderation interface", + "owner": "Owned by {username}", + "artists": "Artists", + "albums": "Albums", + "tracks": "Tracks" + }, + "meta": { + "tracks": "No tracks | {count} track | {count} tracks" + }, + "button": { + "upload": "Upload", + "edit": "Edit" + } } }, "playlists": { "Detail": { "title": "Playlist", - "trackCount": "Playlist containing {count} track, by {username} | Playlist containing {count} tracks, by {username}", - "playAllButton": "Play all", - "stopEditButton": "Stop Editing", - "editButton": "Edit", - "embedButton": "Embed", - "deleteButton": "Delete", - "deleteModalHeader": "Do you want to delete the playlist {playlist}?", - "deleteModalMessage": "This will completely delete this playlist and cannot be undone.", - "deleteModalConfirm": "Delete playlist", - "embedModalHeader": "Embed this playlist on your website", - "cancelButton": "Cancel", - "tracksHeader": "Tracks", - "emptyState": "There are no tracks in this playlist yet" + "meta": { + "tracks": "Playlist containing {count} track, by {username} | Playlist containing {count} tracks, by {username}" + }, + "header": { + "tracks": "Tracks" + }, + "button": { + "playAll": "Play all", + "stopEdit": "Stop Editing", + "edit": "Edit", + "embed": "Embed", + "delete": "Delete", + "cancel": "Cancel", + "confirm": "Delete playlist" + }, + "modal": { + "delete": { + "header": "Do you want to delete the playlist {playlist}?", + "content": { + "warning": "This will completely delete this playlist and cannot be undone." + } + }, + "embed": { + "header": "Embed this playlist on your website" + } + }, + "empty": { + "noTracks": "There are no tracks in this playlist yet" + } }, "List": { - "playlistsHeader": "Playlists", - "searchPlaceholder": "Enter playlist name…", - "browsePlaylistsHeader": "Browsing playlists", - "manageButton": "Manage your playlists", - "searchLabel": "Search", - "orderingLabel": "Ordering", - "orderingDirectionLabel": "Order", - "ascendingOrdering": "Ascending", - "descendingOrdering": "Descending", - "resultsPerPage": "Results per page", - "emptyState": "No results matching your query", - "createPlaylistButton": "Create a playlist" + "header": { + "playlists": "Playlists", + "browse": "Browsing playlists" + }, + "placeholder": { + "search": "Enter playlist name…" + }, + "button": { + "manage": "Manage your playlists", + "create": "Create a playlist", + "search": "Search" + }, + "label": { + "search": "Search" + }, + "ordering": { + "label": "Ordering", + "direction": { + "label": "Order", + "ascending": "Ascending", + "descending": "Descending" + } + }, + "pagination": { + "results": "Results per page" + }, + "empty": { + "noResults": "No results matching your query" + } } }, "radios": { "Detail": { "title": "Radio", - "radioSubheader": "Radio containing {tracks} tracks, by ", - "editButton": "Edit…", - "deleteButton": "Delete", - "deleteModalHeader": "Do you want to delete the radio {radio}?", - "deleteModalMessage": "This will completely delete this radio and cannot be undone.", - "deleteModalConfirm": "Delete radio", - "tracksHeader": "Tracks", - "emptyState": "No tracks have been hadded to this radio yet" + "header": { + "radio": "Radio containing {tracks} tracks, by ", + "tracks": "Tracks" + }, + "button": { + "edit": "Edit…", + "delete": "Delete", + "confirm": "Delete radio" + }, + "modal": { + "delete": { + "header": "Do you want to delete the radio {radio}?", + "content": { + "warning": "This will completely delete this radio and cannot be undone." + } + } + }, + "empty": { + "noTracks": "No tracks have been hadded to this radio yet" + } } } } diff --git a/front/src/views/Notifications.vue b/front/src/views/Notifications.vue index 8b0377557..e330dd481 100644 --- a/front/src/views/Notifications.vue +++ b/front/src/views/Notifications.vue @@ -101,7 +101,7 @@ const markAllAsRead = async () => { class="ui container" >

- {{ $t('views.Notifications.messagesHeader') }} + {{ $t('views.Notifications.header.messages') }}

{ >

- {{ $t('views.Notifications.instanceSupportHeader') }} + {{ $t('views.Notifications.header.instanceSupport') }}

@@ -121,30 +121,30 @@ const markAllAsRead = async () => { >
@@ -156,10 +156,10 @@ const markAllAsRead = async () => { >

- {{ $t('views.Notifications.funkwhaleSupportHeader') }} + {{ $t('views.Notifications.header.funkwhaleSupport') }}

- {{ $t('views.Notifications.funkwhaleSupportMessage') }} + {{ $t('views.Notifications.message.funkwhaleSupport') }}

{ rel="noopener" class="ui primary inverted button" > - {{ $t('views.Notifications.funkwhaleSupportDonateLink') }} + {{ $t('views.Notifications.link.donate') }} { rel="noopener" class="ui secondary inverted button" > - {{ $t('views.Notifications.funkwhaleSupportHelpLink') }} + {{ $t('views.Notifications.link.help') }}
@@ -185,30 +185,30 @@ const markAllAsRead = async () => { >
@@ -217,7 +217,7 @@ const markAllAsRead = async () => {

- {{ $t('views.Notifications.notificationsHeader') }} + {{ $t('views.Notifications.header.notifications') }}

{ v-model="filters.is_read" type="checkbox" > - +
@@ -259,7 +259,7 @@ const markAllAsRead = async () => {

- {{ $t('views.Notifications.noNotifications') }} + {{ $t('views.Notifications.empty.notifications') }}

diff --git a/front/src/views/Search.vue b/front/src/views/Search.vue index 28e438be6..eedd8d07a 100644 --- a/front/src/views/Search.vue +++ b/front/src/views/Search.vue @@ -65,43 +65,43 @@ interface SearchType { const types = computed(() => [ { id: 'artists', - label: t('views.Search.artistsLabel'), + label: t('views.Search.label.artists'), includeChannels: true, contentCategory: 'music' }, { id: 'albums', - label: t('views.Search.albumsLabel'), + label: t('views.Search.label.albums'), includeChannels: true, contentCategory: 'music' }, { id: 'tracks', - label: t('views.Search.tracksLabel') + label: t('views.Search.label.tracks') }, { id: 'playlists', - label: t('views.Search.playlistsLabel') + label: t('views.Search.label.playlists') }, { id: 'radios', - label: t('views.Search.radiosLabel'), + label: t('views.Search.label.radios'), endpoint: 'radios/radios' }, { id: 'tags', - label: t('views.Search.tagsLabel') + label: t('views.Search.label.tags') }, { id: 'podcasts', - label: t('views.Search.podcastsLabel'), + label: t('views.Search.label.podcasts'), endpoint: '/artists', contentCategory: 'podcast', includeChannels: true }, { id: 'series', - label: t('views.Search.seriesLabel'), + label: t('views.Search.label.series'), endpoint: '/albums', includeChannels: true, contentCategory: 'podcast' @@ -181,11 +181,11 @@ const labels = computed(() => ({ title: id.value ? ( type.value === 'rss' - ? t('views.Search.rssTitle') - : t('views.Search.remoteTitle') + ? t('views.Search.header.rss') + : t('views.Search.header.remote') ) - : t('views.Search.searchTitle'), - submitSearch: t('views.Search.submitSearchLabel') + : t('views.Search.header.search'), + submitSearch: t('views.Search.button.submit') })) const radioConfig = computed(() => { @@ -236,7 +236,7 @@ const radioConfig = computed(() => { >

diff --git a/front/src/views/admin/ChannelDetail.vue b/front/src/views/admin/ChannelDetail.vue index fafebd227..bf48c8415 100644 --- a/front/src/views/admin/ChannelDetail.vue +++ b/front/src/views/admin/ChannelDetail.vue @@ -21,7 +21,7 @@ const { t } = useI18n() const router = useRouter() const labels = computed(() => ({ - statsWarning: t('views.admin.ChannelDetail.statsWarning') + statsWarning: t('views.admin.ChannelDetail.warning.stats') })) const isLoading = ref(false) @@ -106,7 +106,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"` @@ -129,7 +129,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"` :to="{name: 'channels.detail', params: {id: object.uuid }}" > - {{ $t('views.admin.ChannelDetail.localProfileLink') }} + {{ $t('views.admin.ChannelDetail.link.localProfile') }}
@@ -173,22 +173,22 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"` :class="['ui', {loading: isLoading}, 'basic danger button']" :action="remove" > - {{ $t('views.admin.ChannelDetail.deleteButton') }} + {{ $t('views.admin.ChannelDetail.button.delete') }} @@ -205,14 +205,14 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`

- {{ $t('views.admin.ChannelDetail.channelDataHeader') }} + {{ $t('views.admin.ChannelDetail.header.channelData') }}

`${field}:"${value}"`
- {{ $t('views.admin.ChannelDetail.nameLabel') }} + {{ $t('views.admin.ChannelDetail.table.channelData.name') }} {{ object.artist.name }} @@ -221,7 +221,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.ChannelDetail.categoryLabel') }} + {{ $t('views.admin.ChannelDetail.table.channelData.category') }} @@ -231,7 +231,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.ChannelDetail.accountLabel') }} + {{ $t('views.admin.ChannelDetail.table.channelData.account') }} @@ -241,7 +241,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.ChannelDetail.domainLabel') }} + {{ $t('views.admin.ChannelDetail.table.channelData.domain') }} @@ -250,7 +250,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.ChannelDetail.descriptionLabel') }} + {{ $t('views.admin.ChannelDetail.table.channelData.description') }}
- {{ $t('views.admin.ChannelDetail.urlLabel') }} + {{ $t('views.admin.ChannelDetail.table.channelData.url') }} `${field}:"${value}"`
- {{ $t('views.admin.ChannelDetail.rssLabel') }} + {{ $t('views.admin.ChannelDetail.table.channelData.rss') }} `${field}:"${value}"`

- {{ $t('views.admin.ChannelDetail.activityHeader') }}  + {{ $t('views.admin.ChannelDetail.header.activity') }} 

@@ -310,7 +310,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.ChannelDetail.firstSeenLabel') }} + {{ $t('views.admin.ChannelDetail.table.activity.firstSeen') }} @@ -318,7 +318,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.ChannelDetail.listeningsLabel') }} + {{ $t('views.admin.ChannelDetail.table.activity.listenings') }} {{ stats.listenings }} @@ -326,7 +326,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.ChannelDetail.favoritedLabel') }} + {{ $t('views.admin.ChannelDetail.table.activity.favorited') }} {{ stats.track_favorites }} @@ -334,7 +334,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.ChannelDetail.playlistsLabel') }} + {{ $t('views.admin.ChannelDetail.table.activity.playlists') }} {{ stats.playlists }} @@ -343,7 +343,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.ChannelDetail.linkedReportsLabel') }} + {{ $t('views.admin.ChannelDetail.table.activity.linkedReports') }} @@ -353,7 +353,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.ChannelDetail.editsLabel') }} + {{ $t('views.admin.ChannelDetail.table.activity.edits') }} @@ -369,7 +369,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`

- {{ $t('views.admin.ChannelDetail.audioContentHeader') }}  + {{ $t('views.admin.ChannelDetail.header.audioContent') }} 

@@ -389,7 +389,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.ChannelDetail.cachedSizeLabel') }} + {{ $t('views.admin.ChannelDetail.table.audioContent.cachedSize') }} {{ humanSize(stats.media_downloaded_size) }} @@ -397,7 +397,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.ChannelDetail.totalSizeLabel') }} + {{ $t('views.admin.ChannelDetail.table.audioContent.totalSize') }} {{ humanSize(stats.media_total_size) }} @@ -406,7 +406,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.ChannelDetail.uploadsLabel') }} + {{ $t('views.admin.ChannelDetail.table.audioContent.uploads') }} @@ -416,7 +416,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.ChannelDetail.albumsLabel') }} + {{ $t('views.admin.ChannelDetail.table.audioContent.albums') }} @@ -426,7 +426,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.ChannelDetail.tracksLabel') }} + {{ $t('views.admin.ChannelDetail.table.audioContent.tracks') }} diff --git a/front/src/views/admin/CommonList.vue b/front/src/views/admin/CommonList.vue index 882236aad..68ad077ac 100644 --- a/front/src/views/admin/CommonList.vue +++ b/front/src/views/admin/CommonList.vue @@ -27,16 +27,16 @@ const props = withDefaults(defineProps(), { const { t } = useI18n() const labels = computed(() => ({ - accounts: t('views.admin.CommonList.accountsLabel'), - albums: t('views.admin.CommonList.albumsLabel'), - artists: t('views.admin.CommonList.artistsLabel'), - channels: t('views.admin.CommonList.channelsLabel'), - invitations: t('views.admin.CommonList.invitationsLabel'), - libraries: t('views.admin.CommonList.librariesLabel'), - tags: t('views.admin.CommonList.tagsLabel'), - tracks: t('views.admin.CommonList.tracksLabel'), - uploads: t('views.admin.CommonList.uploadsLabel'), - users: t('views.admin.CommonList.usersLabel') + accounts: t('views.admin.CommonList.title.accounts'), + albums: t('views.admin.CommonList.title.albums'), + artists: t('views.admin.CommonList.title.artists'), + channels: t('views.admin.CommonList.title.channels'), + invitations: t('views.admin.CommonList.title.invitations'), + libraries: t('views.admin.CommonList.title.libraries'), + tags: t('views.admin.CommonList.title.tags'), + tracks: t('views.admin.CommonList.title.tracks'), + uploads: t('views.admin.CommonList.title.uploads'), + users: t('views.admin.CommonList.title.users') })) const title = computed(() => labels.value[props.type]) diff --git a/front/src/views/admin/Settings.vue b/front/src/views/admin/Settings.vue index 8e3051438..34889c866 100644 --- a/front/src/views/admin/Settings.vue +++ b/front/src/views/admin/Settings.vue @@ -20,7 +20,7 @@ const { t } = useI18n() const groups = computed(() => [ { - label: t('views.admin.Settings.instanceInfoLabel'), + label: t('views.admin.Settings.header.instanceInfo'), id: 'instance', settings: [ { name: 'instance__name' }, @@ -34,7 +34,7 @@ const groups = computed(() => [ ] }, { - label: t('views.admin.Settings.signupsLabel'), + label: t('views.admin.Settings.header.signups'), id: 'signup', settings: [ { name: 'users__registration_enabled' }, @@ -43,7 +43,7 @@ const groups = computed(() => [ ] }, { - label: t('views.admin.Settings.securityLabel'), + label: t('views.admin.Settings.header.security'), id: 'security', settings: [ { name: 'common__api_authentication_required' }, @@ -52,7 +52,7 @@ const groups = computed(() => [ ] }, { - label: t('views.admin.Settings.musicLabel'), + label: t('views.admin.Settings.header.music'), id: 'music', settings: [ { name: 'music__transcoding_enabled' }, @@ -60,7 +60,7 @@ const groups = computed(() => [ ] }, { - label: t('views.admin.Settings.channelsLabel'), + label: t('views.admin.Settings.header.channels'), id: 'channels', settings: [ { name: 'audio__channels_enabled' }, @@ -68,14 +68,14 @@ const groups = computed(() => [ ] }, { - label: t('views.admin.Settings.playlistsLabel'), + label: t('views.admin.Settings.header.playlists'), id: 'playlists', settings: [ { name: 'playlists__max_tracks' } ] }, { - label: t('views.admin.Settings.moderationLabel'), + label: t('views.admin.Settings.header.moderation'), id: 'moderation', settings: [ { name: 'moderation__allow_list_enabled' }, @@ -84,7 +84,7 @@ const groups = computed(() => [ ] }, { - label: t('views.admin.Settings.federationLabel'), + label: t('views.admin.Settings.header.federation'), id: 'federation', settings: [ { name: 'federation__enabled' }, @@ -95,14 +95,14 @@ const groups = computed(() => [ ] }, { - label: t('views.admin.Settings.subsonicLabel'), + label: t('views.admin.Settings.header.subsonic'), id: 'subsonic', settings: [ { name: 'subsonic__enabled' } ] }, { - label: t('views.admin.Settings.statsLabel'), + label: t('views.admin.Settings.header.stats'), id: 'ui', settings: [ { name: 'ui__custom_css' }, @@ -110,7 +110,7 @@ const groups = computed(() => [ ] }, { - label: t('views.admin.Settings.uiLabel'), + label: t('views.admin.Settings.header.ui'), id: 'statistics', settings: [ { name: 'instance__nodeinfo_stats_enabled' }, @@ -120,7 +120,7 @@ const groups = computed(() => [ ] as SettingsGroupType[]) const labels = computed(() => ({ - settings: t('views.admin.Settings.settingsLabel') + settings: t('views.admin.Settings.header.settings') })) const scrollTo = (id: string) => { @@ -186,7 +186,7 @@ await nextTick()
@@ -186,7 +186,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"` class="ui labeled icon button" > - {{ $t('views.admin.library.AlbumDetail.editButton') }} + {{ $t('views.admin.library.AlbumDetail.button.edit') }}
@@ -194,22 +194,22 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"` :class="['ui', {loading: isLoading}, 'basic danger button']" :action="remove" > - {{ $t('views.admin.library.AlbumDetail.deleteButton') }} + {{ $t('views.admin.library.AlbumDetail.button.delete') }} @@ -226,14 +226,14 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`

- {{ $t('views.admin.library.AlbumDetail.albumDataHeader') }} + {{ $t('views.admin.library.AlbumDetail.header.albumData') }}

`${field}:"${value}"`

- {{ $t('views.admin.library.AlbumDetail.activityHeader') }}  + {{ $t('views.admin.library.AlbumDetail.header.activity') }} 

@@ -297,7 +297,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.AlbumDetail.titleLabel') }} + {{ $t('views.admin.library.AlbumDetail.table.album.title') }} {{ object.title }} @@ -242,7 +242,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.AlbumDetail.artistLabel') }} + {{ $t('views.admin.library.AlbumDetail.link.artist') }} @@ -252,7 +252,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.AlbumDetail.domainLabel') }} + {{ $t('views.admin.library.AlbumDetail.link.domain') }} @@ -261,7 +261,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.AlbumDetail.descriptionLabel') }} + {{ $t('views.admin.library.AlbumDetail.table.album.description') }}
- {{ $t('views.admin.library.AlbumDetail.firstSeenLabel') }} + {{ $t('views.admin.library.AlbumDetail.table.activity.firstSeen') }} @@ -305,7 +305,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.AlbumDetail.listeningsLabel') }} + {{ $t('views.admin.library.AlbumDetail.table.activity.listenings') }} {{ stats.listenings }} @@ -313,7 +313,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.AlbumDetail.favoritedLabel') }} + {{ $t('views.admin.library.AlbumDetail.table.activity.favorited') }} {{ stats.track_favorites }} @@ -321,7 +321,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.AlbumDetail.playlistsLabel') }} + {{ $t('views.admin.library.AlbumDetail.table.activity.playlists') }} {{ stats.playlists }} @@ -330,7 +330,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.AlbumDetail.linkedReportsLabel') }} + {{ $t('views.admin.library.AlbumDetail.link.reports') }} @@ -340,7 +340,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.AlbumDetail.editsLabel') }} + {{ $t('views.admin.library.AlbumDetail.link.edits') }} @@ -356,7 +356,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`

- {{ $t('views.admin.library.AlbumDetail.audioContentHeader') }}  + {{ $t('views.admin.library.AlbumDetail.header.audioContent') }} 

@@ -376,7 +376,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.AlbumDetail.cachedSizeLabel') }} + {{ $t('views.admin.library.AlbumDetail.table.audioContent.cachedSize') }} {{ humanSize(stats.media_downloaded_size) }} @@ -384,7 +384,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.AlbumDetail.totalSizeLabel') }} + {{ $t('views.admin.library.AlbumDetail.table.audioContent.totalSize') }} {{ humanSize(stats.media_total_size) }} @@ -394,7 +394,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.AlbumDetail.librariesLabel') }} + {{ $t('views.admin.library.AlbumDetail.link.libraries') }} @@ -404,7 +404,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.AlbumDetail.uploadsLabel') }} + {{ $t('views.admin.library.AlbumDetail.link.uploads') }} @@ -414,7 +414,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.AlbumDetail.tracksLabel') }} + {{ $t('views.admin.library.AlbumDetail.link.tracks') }} diff --git a/front/src/views/admin/library/ArtistDetail.vue b/front/src/views/admin/library/ArtistDetail.vue index 71a883541..6cf6391d7 100644 --- a/front/src/views/admin/library/ArtistDetail.vue +++ b/front/src/views/admin/library/ArtistDetail.vue @@ -21,7 +21,7 @@ const { t } = useI18n() const router = useRouter() const labels = computed(() => ({ - statsWarning: t('views.admin.library.ArtistDetail.statsWarning') + statsWarning: t('views.admin.library.ArtistDetail.warning.stats') })) const isLoading = ref(false) @@ -106,7 +106,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"` @@ -129,7 +129,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"` :to="{name: 'library.artists.detail', params: {id: object.id }}" > - {{ $t('views.admin.library.ArtistDetail.localProfileLink') }} + {{ $t('views.admin.library.ArtistDetail.link.localProfile') }} @@ -185,7 +185,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"` class="ui labeled icon button" > - {{ $t('views.admin.library.ArtistDetail.editButton') }} + {{ $t('views.admin.library.ArtistDetail.button.edit') }}
@@ -193,22 +193,22 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"` :class="['ui', {loading: isLoading}, 'basic danger button']" :action="remove" > - {{ $t('views.admin.library.ArtistDetail.deleteButton') }} + {{ $t('views.admin.library.ArtistDetail.button.delete') }} @@ -225,14 +225,14 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`

- {{ $t('views.admin.library.ArtistDetail.artistDataHeader') }} + {{ $t('views.admin.library.ArtistDetail.header.artistData') }}

`${field}:"${value}"`

- {{ $t('views.admin.library.ArtistDetail.activityHeader') }}  + {{ $t('views.admin.library.ArtistDetail.header.activity') }} 

@@ -296,7 +296,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.ArtistDetail.nameLabel') }} + {{ $t('views.admin.library.ArtistDetail.table.artist.name') }} {{ object.name }} @@ -241,7 +241,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.ArtistDetail.categoryLabel') }} + {{ $t('views.admin.library.ArtistDetail.link.category') }} @@ -251,7 +251,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.ArtistDetail.domainLabel') }} + {{ $t('views.admin.library.ArtistDetail.link.domain') }} @@ -260,7 +260,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.ArtistDetail.descriptionLabel') }} + {{ $t('views.admin.library.ArtistDetail.table.artist.description') }}
- {{ $t('views.admin.library.ArtistDetail.firstSeenLabel') }} + {{ $t('views.admin.library.ArtistDetail.table.activity.firstSeen') }} @@ -304,7 +304,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.ArtistDetail.listeningsLabel') }} + {{ $t('views.admin.library.ArtistDetail.table.activity.listenings') }} {{ stats.listenings }} @@ -312,7 +312,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.ArtistDetail.favoritedLabel') }} + {{ $t('views.admin.library.ArtistDetail.table.activity.favorited') }} {{ stats.track_favorites }} @@ -320,7 +320,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.ArtistDetail.playlistsLabel') }} + {{ $t('views.admin.library.ArtistDetail.table.activity.playlists') }} {{ stats.playlists }} @@ -329,7 +329,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.ArtistDetail.linkedReportsLabel') }} + {{ $t('views.admin.library.ArtistDetail.link.reports') }} @@ -339,7 +339,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.ArtistDetail.editsLabel') }} + {{ $t('views.admin.library.ArtistDetail.link.edits') }} @@ -355,7 +355,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`

- {{ $t('views.admin.library.ArtistDetail.audioContentHeader') }}  + {{ $t('views.admin.library.ArtistDetail.header.audioContent') }} 

@@ -375,7 +375,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.ArtistDetail.cachedSizeLabel') }} + {{ $t('views.admin.library.ArtistDetail.table.audioContent.cachedSize') }} {{ humanSize(stats.media_downloaded_size) }} @@ -383,7 +383,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.ArtistDetail.totalSizeLabel') }} + {{ $t('views.admin.library.ArtistDetail.table.audioContent.totalSize') }} {{ humanSize(stats.media_total_size) }} @@ -393,7 +393,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.ArtistDetail.librariesLabel') }} + {{ $t('views.admin.library.ArtistDetail.link.libraries') }} @@ -403,7 +403,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.ArtistDetail.uploadsLabel') }} + {{ $t('views.admin.library.ArtistDetail.link.uploads') }} @@ -413,7 +413,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.ArtistDetail.albumsLabel') }} + {{ $t('views.admin.library.ArtistDetail.link.albums') }} @@ -423,7 +423,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.ArtistDetail.tracksLabel') }} + {{ $t('views.admin.library.ArtistDetail.link.tracks') }} diff --git a/front/src/views/admin/library/Base.vue b/front/src/views/admin/library/Base.vue index 8395914a6..36c566860 100644 --- a/front/src/views/admin/library/Base.vue +++ b/front/src/views/admin/library/Base.vue @@ -5,7 +5,7 @@ import { useI18n } from 'vue-i18n' const { t } = useI18n() const labels = computed(() => ({ title: t('views.admin.library.Base.title'), - secondaryMenu: t('views.admin.library.Base.secondaryMenu') + secondaryMenu: t('views.admin.library.Base.menu.secondary') })) @@ -23,49 +23,49 @@ const labels = computed(() => ({ class="ui item" :to="{name: 'manage.library.edits'}" > - {{ $t('views.admin.library.Base.editsLink') }} + {{ $t('views.admin.library.Base.link.edits') }} - {{ $t('views.admin.library.Base.channelsLink') }} + {{ $t('views.admin.library.Base.link.channels') }} - {{ $t('views.admin.library.Base.artistsLink') }} + {{ $t('views.admin.library.Base.link.artists') }} - {{ $t('views.admin.library.Base.albumsLink') }} + {{ $t('views.admin.library.Base.link.albums') }} - {{ $t('views.admin.library.Base.tracksLink') }} + {{ $t('views.admin.library.Base.link.tracks') }} - {{ $t('views.admin.library.Base.librariesLink') }} + {{ $t('views.admin.library.Base.link.libraries') }} - {{ $t('views.admin.library.Base.uploadsLink') }} + {{ $t('views.admin.library.Base.link.uploads') }} - {{ $t('views.admin.library.Base.tagsLink') }} + {{ $t('views.admin.library.Base.link.tags') }} diff --git a/front/src/views/admin/library/EditsList.vue b/front/src/views/admin/library/EditsList.vue index 930654a16..4c289e0df 100644 --- a/front/src/views/admin/library/EditsList.vue +++ b/front/src/views/admin/library/EditsList.vue @@ -26,7 +26,7 @@ const labels = computed(() => ({ :default-query="defaultQuery" >

- {{ $t('views.admin.library.EditsList.libraryEditsHeader') }} + {{ $t('views.admin.library.EditsList.header.edits') }}

diff --git a/front/src/views/admin/library/LibraryDetail.vue b/front/src/views/admin/library/LibraryDetail.vue index e607e2c11..23f8168ca 100644 --- a/front/src/views/admin/library/LibraryDetail.vue +++ b/front/src/views/admin/library/LibraryDetail.vue @@ -27,7 +27,7 @@ const router = useRouter() const logger = useLogger() const labels = computed(() => ({ - statsWarning: t('views.admin.library.LibraryDetail.statsWarning') + statsWarning: t('views.admin.library.LibraryDetail.warning.stats') })) const isLoading = ref(false) @@ -117,7 +117,7 @@ const updateObj = async (attr: string) => { @@ -134,7 +134,7 @@ const updateObj = async (attr: string) => { rel="noopener noreferrer" > - {{ $t('views.admin.library.LibraryDetail.djangoLink') }} + {{ $t('views.admin.library.LibraryDetail.link.django') }} @@ -169,22 +169,22 @@ const updateObj = async (attr: string) => { :class="['ui', {loading: isLoading}, 'basic danger button']" :action="remove" > - {{ $t('views.admin.library.LibraryDetail.deleteButton') }} + {{ $t('views.admin.library.LibraryDetail.button.delete') }} @@ -201,14 +201,14 @@ const updateObj = async (attr: string) => {

- {{ $t('views.admin.library.LibraryDetail.libraryDataHeader') }} + {{ $t('views.admin.library.LibraryDetail.header.libraryData') }}

- {{ $t('views.admin.library.LibraryDetail.nameLabel') }} + {{ $t('views.admin.library.LibraryDetail.table.library.name') }} {{ object.name }} @@ -217,7 +217,7 @@ const updateObj = async (attr: string) => {
- {{ $t('views.admin.library.LibraryDetail.visibilityLabel') }} + {{ $t('views.admin.library.LibraryDetail.link.visibility') }} @@ -244,7 +244,7 @@ const updateObj = async (attr: string) => {
- {{ $t('views.admin.library.LibraryDetail.accountLabel') }} + {{ $t('views.admin.library.LibraryDetail.link.account') }} @@ -254,7 +254,7 @@ const updateObj = async (attr: string) => {
- {{ $t('views.admin.library.LibraryDetail.domainLabel') }} + {{ $t('views.admin.library.LibraryDetail.link.domain') }} @@ -263,7 +263,7 @@ const updateObj = async (attr: string) => {
- {{ $t('views.admin.library.LibraryDetail.descriptionLabel') }} + {{ $t('views.admin.library.LibraryDetail.table.library.description') }} {{ object.description }} @@ -278,7 +278,7 @@ const updateObj = async (attr: string) => {

- {{ $t('views.admin.library.LibraryDetail.activityHeader') }}  + {{ $t('views.admin.library.LibraryDetail.header.activity') }} 

@@ -298,7 +298,7 @@ const updateObj = async (attr: string) => {
- {{ $t('views.admin.library.LibraryDetail.firstSeenLabel') }} + {{ $t('views.admin.library.LibraryDetail.table.activity.firstSeen') }} @@ -306,7 +306,7 @@ const updateObj = async (attr: string) => {
- {{ $t('views.admin.library.LibraryDetail.followersLabel') }} + {{ $t('views.admin.library.LibraryDetail.table.activity.followers') }} {{ stats.followers }} @@ -315,7 +315,7 @@ const updateObj = async (attr: string) => {
- {{ $t('views.admin.library.LibraryDetail.linkedReportsLabel') }} + {{ $t('views.admin.library.LibraryDetail.link.reports') }} @@ -331,7 +331,7 @@ const updateObj = async (attr: string) => {

- {{ $t('views.admin.library.LibraryDetail.audioContentHeader') }}  + {{ $t('views.admin.library.LibraryDetail.header.audioContent') }} 

@@ -351,7 +351,7 @@ const updateObj = async (attr: string) => {
- {{ $t('views.admin.library.LibraryDetail.cachedSizeLabel') }} + {{ $t('views.admin.library.LibraryDetail.table.audioContent.cachedSize') }} {{ humanSize(stats.media_downloaded_size) }} @@ -359,7 +359,7 @@ const updateObj = async (attr: string) => {
- {{ $t('views.admin.library.LibraryDetail.totalSizeLabel') }} + {{ $t('views.admin.library.LibraryDetail.table.audioContent.totalSize') }} {{ humanSize(stats.media_total_size) }} @@ -368,7 +368,7 @@ const updateObj = async (attr: string) => {
- {{ $t('views.admin.library.LibraryDetail.artistsLabel') }} + {{ $t('views.admin.library.LibraryDetail.link.artists') }} @@ -378,7 +378,7 @@ const updateObj = async (attr: string) => {
- {{ $t('views.admin.library.LibraryDetail.albumsLabel') }} + {{ $t('views.admin.library.LibraryDetail.link.albums') }} @@ -388,7 +388,7 @@ const updateObj = async (attr: string) => {
- {{ $t('views.admin.library.LibraryDetail.tracksLabel') }} + {{ $t('views.admin.library.LibraryDetail.link.tracks') }} @@ -398,7 +398,7 @@ const updateObj = async (attr: string) => {
- {{ $t('views.admin.library.LibraryDetail.uploadsLabel') }} + {{ $t('views.admin.library.LibraryDetail.link.uploads') }} diff --git a/front/src/views/admin/library/TagDetail.vue b/front/src/views/admin/library/TagDetail.vue index 0a3d20ee9..65afbe1a9 100644 --- a/front/src/views/admin/library/TagDetail.vue +++ b/front/src/views/admin/library/TagDetail.vue @@ -77,7 +77,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"` :to="{name: 'library.tags.detail', params: {id: object.name }}" > - {{ $t('views.admin.library.TagDetail.localProfileLink') }} + {{ $t('views.admin.library.TagDetail.link.localProfile') }} @@ -103,22 +103,22 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"` :class="['ui', {loading: isLoading}, 'basic danger button']" :action="remove" > - {{ $t('views.admin.library.TagDetail.deleteButton') }} + {{ $t('views.admin.library.TagDetail.button.delete') }} @@ -135,14 +135,14 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`

- {{ $t('views.admin.library.TagDetail.tagDataHeader') }} + {{ $t('views.admin.library.TagDetail.header.tagData') }}

- {{ $t('views.admin.library.TagDetail.nameLabel') }} + {{ $t('views.admin.library.TagDetail.table.tag.name') }} {{ object.name }} @@ -157,14 +157,14 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`

- {{ $t('views.admin.library.TagDetail.activityHeader') }}  + {{ $t('views.admin.library.TagDetail.header.activity') }} 

- {{ $t('views.admin.library.TagDetail.firstSeenLabel') }} + {{ $t('views.admin.library.TagDetail.table.activity.firstSeen') }} @@ -179,7 +179,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`

- {{ $t('views.admin.library.TagDetail.audioContentHeader') }}  + {{ $t('views.admin.library.TagDetail.header.audioContent') }} 

@@ -187,7 +187,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.TagDetail.artistsLabel') }} + {{ $t('views.admin.library.TagDetail.link.artists') }} @@ -197,7 +197,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.TagDetail.albumsLabel') }} + {{ $t('views.admin.library.TagDetail.link.albums') }} @@ -207,7 +207,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.TagDetail.tracksLabel') }} + {{ $t('views.admin.library.TagDetail.link.tracks') }} diff --git a/front/src/views/admin/library/TrackDetail.vue b/front/src/views/admin/library/TrackDetail.vue index 8b485a564..e5a57879e 100644 --- a/front/src/views/admin/library/TrackDetail.vue +++ b/front/src/views/admin/library/TrackDetail.vue @@ -19,7 +19,7 @@ const props = defineProps() const { t } = useI18n() const labels = computed(() => ({ - statsWarning: t('views.admin.library.TrackDetail.statsWarning') + statsWarning: t('views.admin.library.TrackDetail.warning.stats') })) const track = ref() @@ -105,7 +105,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"` @@ -129,7 +129,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"` :to="{name: 'library.tracks.detail', params: {id: track.id }}" > - {{ $t('views.admin.library.TrackDetail.localProfileLink') }} + {{ $t('views.admin.library.TrackDetail.link.localProfile') }} @@ -185,7 +185,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"` class="ui labeled icon button" > - {{ $t('views.admin.library.TrackDetail.editButton') }} + {{ $t('views.admin.library.TrackDetail.button.edit') }}
@@ -193,22 +193,22 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"` :class="['ui', {loading: isLoading}, 'basic danger button']" :action="remove" > - {{ $t('views.admin.library.TrackDetail.deleteButton') }} + {{ $t('views.admin.library.TrackDetail.button.delete') }} @@ -225,14 +225,14 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`

- {{ $t('views.admin.library.TrackDetail.trackDataHeader') }} + {{ $t('views.admin.library.TrackDetail.header.trackData') }}

`${field}:"${value}"`

- {{ $t('views.admin.library.TrackDetail.activityHeader') }}  + {{ $t('views.admin.library.TrackDetail.header.activity') }} 

@@ -349,7 +349,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.TrackDetail.titleLabel') }} + {{ $t('views.admin.library.TrackDetail.table.track.title') }} {{ track.title }} @@ -241,7 +241,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.TrackDetail.albumLabel') }} + {{ $t('views.admin.library.TrackDetail.link.album') }} @@ -252,7 +252,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.TrackDetail.artistLabel') }} + {{ $t('views.admin.library.TrackDetail.link.artist') }} @@ -262,7 +262,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.TrackDetail.albumArtistLabel') }} + {{ $t('views.admin.library.TrackDetail.link.albumArtist') }} @@ -271,7 +271,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.TrackDetail.positionLabel') }} + {{ $t('views.admin.library.TrackDetail.table.track.position') }} {{ track.position }} @@ -279,7 +279,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.TrackDetail.discNumberLabel') }} + {{ $t('views.admin.library.TrackDetail.table.track.discNumber') }} {{ track.disc_number }} @@ -287,13 +287,13 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.TrackDetail.copyrightLabel') }} + {{ $t('views.admin.library.TrackDetail.table.track.copyright') }} {{ track.copyright }}
- {{ $t('views.admin.library.TrackDetail.licenseLabel') }} + {{ $t('views.admin.library.TrackDetail.table.track.license') }} @@ -304,7 +304,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.TrackDetail.domainLabel') }} + {{ $t('views.admin.library.TrackDetail.link.domain') }} @@ -313,7 +313,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.TrackDetail.descriptionLabel') }} + {{ $t('views.admin.library.TrackDetail.table.track.description') }}
- {{ $t('views.admin.library.TrackDetail.firstSeenLabel') }} + {{ $t('views.admin.library.TrackDetail.table.activity.firstSeen') }} @@ -357,7 +357,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.TrackDetail.listeningsLabel') }} + {{ $t('views.admin.library.TrackDetail.table.activity.listenings') }} {{ stats.listenings }} @@ -365,7 +365,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.TrackDetail.favoritedLabel') }} + {{ $t('views.admin.library.TrackDetail.table.activity.favorited') }} {{ stats.track_favorites }} @@ -373,7 +373,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.TrackDetail.playlistsLabel') }} + {{ $t('views.admin.library.TrackDetail.table.activity.playlists') }} {{ stats.playlists }} @@ -382,7 +382,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.TrackDetail.linkedReportsLabel') }} + {{ $t('views.admin.library.TrackDetail.link.reports') }} @@ -392,7 +392,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.TrackDetail.editsLabel') }} + {{ $t('views.admin.library.TrackDetail.link.edits') }} @@ -408,7 +408,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`

- {{ $t('views.admin.library.TrackDetail.trackDataHeader') }}  + {{ $t('views.admin.library.TrackDetail.header.trackData') }} 

@@ -428,7 +428,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.TrackDetail.cachedSizeLabel') }} + {{ $t('views.admin.library.TrackDetail.table.trackData.cachedSize') }} {{ humanSize(stats.media_downloaded_size) }} @@ -436,7 +436,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.TrackDetail.totalSizeLabel') }} + {{ $t('views.admin.library.TrackDetail.table.trackData.totalSize') }} {{ humanSize(stats.media_total_size) }} @@ -446,7 +446,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.TrackDetail.librariesLabel') }} + {{ $t('views.admin.library.TrackDetail.link.libraries') }} @@ -456,7 +456,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
- {{ $t('views.admin.library.TrackDetail.uploadsLabel') }} + {{ $t('views.admin.library.TrackDetail.link.uploads') }} diff --git a/front/src/views/admin/library/UploadDetail.vue b/front/src/views/admin/library/UploadDetail.vue index 6c10ec8a6..cdf7f8319 100644 --- a/front/src/views/admin/library/UploadDetail.vue +++ b/front/src/views/admin/library/UploadDetail.vue @@ -89,7 +89,7 @@ const showUploadDetailModal = ref(false) @@ -106,7 +106,7 @@ const showUploadDetailModal = ref(false) rel="noopener noreferrer" > - {{ $t('views.admin.library.UploadDetail.djangoLink') }} + {{ $t('views.admin.library.UploadDetail.link.django') }} @@ -145,7 +145,7 @@ const showUploadDetailModal = ref(false) rel="noopener noreferrer" > - {{ $t('views.admin.library.UploadDetail.downloadButton') }} + {{ $t('views.admin.library.UploadDetail.button.download') }}
@@ -153,22 +153,22 @@ const showUploadDetailModal = ref(false) :class="['ui', {loading: isLoading}, 'basic danger button']" :action="remove" > - {{ $t('views.admin.library.UploadDetail.deleteButton') }} + {{ $t('views.admin.library.UploadDetail.button.delete') }} @@ -185,14 +185,14 @@ const showUploadDetailModal = ref(false)

- {{ $t('views.admin.library.UploadDetail.uploadDataHeader') }} + {{ $t('views.admin.library.UploadDetail.header.uploadData') }}

- {{ $t('views.admin.library.UploadDetail.nameLabel') }} + {{ $t('views.admin.library.UploadDetail.table.upload.name') }} {{ displayName(object) }} @@ -201,7 +201,7 @@ const showUploadDetailModal = ref(false)
- {{ $t('views.admin.library.UploadDetail.visibilityLabel') }} + {{ $t('views.admin.library.UploadDetail.link.visibility') }} @@ -211,7 +211,7 @@ const showUploadDetailModal = ref(false)
- {{ $t('views.admin.library.UploadDetail.accountLabel') }} + {{ $t('views.admin.library.UploadDetail.link.account') }} @@ -221,7 +221,7 @@ const showUploadDetailModal = ref(false)
- {{ $t('views.admin.library.UploadDetail.domainLabel') }} + {{ $t('views.admin.library.UploadDetail.link.domain') }} @@ -231,7 +231,7 @@ const showUploadDetailModal = ref(false)
- {{ $t('views.admin.library.UploadDetail.importStatusLabel') }} + {{ $t('views.admin.library.UploadDetail.link.importStatus') }} @@ -248,7 +248,7 @@ const showUploadDetailModal = ref(false)
- {{ $t('views.admin.library.UploadDetail.libraryLabel') }} + {{ $t('views.admin.library.UploadDetail.link.library') }} @@ -264,14 +264,14 @@ const showUploadDetailModal = ref(false)

- {{ $t('views.admin.library.UploadDetail.activityHeader') }}  + {{ $t('views.admin.library.UploadDetail.header.activity') }} 

- {{ $t('views.admin.library.UploadDetail.firstSeenLabel') }} + {{ $t('views.admin.library.UploadDetail.table.activity.firstSeen') }} @@ -279,7 +279,7 @@ const showUploadDetailModal = ref(false)
- {{ $t('views.admin.library.UploadDetail.accessedDateLabel') }} + {{ $t('views.admin.library.UploadDetail.table.activity.accessedDate') }}
- {{ $t('views.admin.library.UploadDetail.audioContentHeader') }}  + {{ $t('views.admin.library.UploadDetail.header.audioContent') }} 
@@ -310,7 +310,7 @@ const showUploadDetailModal = ref(false)
- {{ $t('views.admin.library.UploadDetail.trackLabel') }} + {{ $t('views.admin.library.UploadDetail.table.audioContent.track') }} @@ -319,7 +319,7 @@ const showUploadDetailModal = ref(false)
- {{ $t('views.admin.library.UploadDetail.cachedSizeLabel') }} + {{ $t('views.admin.library.UploadDetail.table.audioContent.cachedSize') }} { >

- {{ $t('views.admin.moderation.DomainsDetail.activePolicyHeader') }} + {{ $t('views.admin.moderation.DomainsDetail.header.activePolicy') }}

@@ -235,31 +235,31 @@ const setAllowList = async (value: boolean) => {

- {{ $t('views.admin.moderation.DomainsDetail.instanceDataHeader') }} + {{ $t('views.admin.moderation.DomainsDetail.header.instanceData') }}

- {{ $t('views.admin.moderation.DomainsDetail.inAllowListLabel') }} + {{ $t('views.admin.moderation.DomainsDetail.table.instanceData.inAllowList.label') }} - {{ $t('views.admin.moderation.DomainsDetail.inAllowListTrue') }} + {{ $t('views.admin.moderation.DomainsDetail.table.instanceData.inAllowList.true') }} - {{ $t('views.admin.moderation.DomainsDetail.inAllowListFalse') }} + {{ $t('views.admin.moderation.DomainsDetail.table.instanceData.inAllowList.false') }}
- {{ $t('views.admin.moderation.DomainsDetail.lastCheckedLabel') }} + {{ $t('views.admin.moderation.DomainsDetail.table.instanceData.lastChecked') }} {