export default { sessionInitialization: { OIDC_AUTH: 'Loading user data', STEERING_INITIALIZATION: 'Initializing content management session', TANK_INITIALIZATION: 'Initializing file storage session', }, loginScreen: { intro: 'AURA is radio automation software for the special needs of community radios. AURA has been developed in several Austrian community radios and it is open source.', }, showManager: { title: 'Radio shows', generalSettings: 'General settings for show', }, myShows: { title: 'My Shows', itemsPerPage: 'Shows per page', searchLabel: 'Search by name', searchPlaceholder: 'Name of the show...', showCount: 'Showing %{count} of %{total} shows.', showOrder: 'Order of Shows', sortShows: 'Order Shows', }, showListGrid: { otherShows: 'Other Shows', }, show: { singular: 'Show', plural: 'Shows', fields: { categoryIds: 'Categories', cbaSeriesId: 'CBA ID', description: 'Description', email: 'Email', fundingCategoryId: 'Funding category', hostIds: 'Editorial staff', id: 'ID', imageId: 'Image', internalNote: 'Internal note', isActive: 'Active', isOwner: 'Administrated by me', languageIds: 'Languages', links: 'Links', logoId: 'Logo', musicFocusIds: 'Music genres', name: 'Title', ownerIds: 'Administrators', predecessorId: 'Predecessor', shortDescription: 'Subtitle / short description', slug: 'Slug', topicIds: 'Topics', typeId: 'Type', updatedAt: 'Last modification', updatedBy: 'Modified by', }, slugDetail: { title: 'Slug', editRemark: 'The show slug can be modified in the <a href="#%{dangerZoneId}">%{dangerZone}</a>.', }, housekeeping: { title: 'Danger Zone', flows: { archival: 'Archiving', deletion: 'Deletion', slugRenaming: 'Renaming the URL slug', }, }, section: { basic: { title: 'Basic information' }, content: { title: 'Content information' }, contact: { title: 'Editors & Contact' }, administrative: { title: 'Administration' }, media: { title: 'Default media sources' }, }, editor: { deactivation: { label: 'Deactivate show', description: 'Archives the show and removes all planned broadcasts.', confirm: { text: 'All future <strong>timeslots</strong> and related information <strong>will be removed</strong>. ' + 'Are you sure you want to deactivate <strong>%{show}</strong>?', prompt: 'Please enter <code>%{challenge}</code> in order to confirm.', confirmLabel: 'Deactivate <strong>%{show}</strong>', }, }, activation: { label: 'Activate show', description: 'Dearchives the show. New broadcast schedules must be created.', }, deletion: { label: 'Delete show', description: 'Removes the show and all related information including schedules and broadcasts.', confirm: { text: 'All information on this series will be <strong>irretrievably deleted</strong>. It is not possible to restore it later. Are you sure you want to delete <strong>%{show}</strong>?', prompt: 'Please enter <code>%{challenge}</code> in order to confirm.', confirmLabel: 'Delete <strong>%{show}</strong>', }, }, slugRenaming: { dialogTitle: 'Renaming the URL slug', label: 'Rename', description: 'Renames the URL slug of the show. The slug is used in website links. A change will therefore destroy existing links to the show and should be carefully considered.', confirm: { text: 'The URL slug will be renamed. This will most likely destroy existing web links to this show. Are you sure you want to rename the slug for <strong>%{show}</strong>?', prompt: 'Please enter <code>%{challenge}</code> in order to confirm.', confirmLabel: 'Rename URL slug for <strong>%{show}</strong>', }, }, }, }, showFilter: { order: { choices: { id: { name: 'ID', directions: { asc: '0 - 9', desc: '9 - 0' } }, slug: { name: 'Name', directions: { asc: 'A - Z', desc: 'Z - A' } }, is_active: { name: 'Active', directions: { asc: 'No - Yes', desc: 'Yes - No' } }, is_owner: { name: 'Administrated by me', directions: { asc: 'No - Yes', desc: 'Yes - No' }, }, updated_at: { name: 'Last modification', directions: { asc: 'Oldest first', desc: 'Newest first' }, }, updated_by: { name: 'Modified by', directions: { asc: 'A - Z', desc: 'Z - A' } }, }, }, }, showEpisode: { title: 'Episode from %{start}', }, filePlaylistManager: { title: 'Media', files: 'Files', playlists: 'Playlists', }, credits: { title: 'Credits', intro: 'AURA is developed under the GNU Affero General Public License v3.', contributors: 'Contributors', contributorLabel: 'Current and former developers are:', moreInfo: 'For more infos visit the <a href="https://gitlab.servus.at/aura/dashboard">Dashboard repository</a>.<br>To get started with AURA, visit <a href="https://aura.radio">aura.radio</a>.<br>All AURA repositories can be found at <a href="https://code.aura.radio">https://code.aura.radio</a>.', }, generalDocumentation: 'Help & Documentation', // Layout loadMoreItems: 'Load more %{items}', loadingData: 'Loading %{items}', loading: 'Loading..', cancel: 'Cancel', delete: 'Delete', new: 'New', add: 'Add', save: 'Save', goBack: 'Go back to previous page', ok: 'OK', browse: 'Browse', drop: 'Drop file here', edit: 'Edit', slug: 'Slug', unimplemented: 'By the mighty witchcraftry of the mother of time!\n\nThis feature is not implemented yet.', noneSetMasculine: '(none set)', noneSetFeminine: '(none set)', noneSetNeuter: '(none set)', noAssignedShows: 'You have not been assigned any shows yet.<br>They can be assigned in the <a href="%{adminUrl}">administration interface</a>.', by: 'by', auth: { signOut: 'Sign out', signIn: 'Sign in', permissionError: 'You are not permitted to view this page', }, construction: { label: 'Construction Site', }, navigation: { _title: 'Navigation', home: 'Home', shows: 'Shows', show: { episodes: 'Episodes & Schedules', basicData: 'Basic Settings', }, episode: { _title: 'Episode from %{start}', details: 'Description', }, filesPlaylists: 'Media', calendar: 'Calendar', settings: 'Settings', profile: 'Profile', help: 'Help', }, footer: { tagline: 'All the UI you need to run a community radio', }, // Specific components header: { showMoreDesktop: 'Hit menu button for more', showMoreMobile: 'For more options tap the menu button on the right', }, emissionTable: { title: 'Title of emission', start: 'Broadcast date', duration: 'Duration', playlist: 'Media sources', actions: 'Actions', missingPlaylistData: 'Information for this playlist is currently not available. Switch to the show of this emission.', }, input: { unknown: 'Unknown Input', }, file: { url: 'URL', unnamed: 'Unnamed file', duration: 'Duration', durationUnknown: 'Unknown duration', durationPlaceholder: 'e.g. 2m6s', uploadProgress: 'Progress of the file upload', uploadError: 'Error during upload', retryUpload: 'Retry upload', metadata: { _title: 'Metadata', album: 'Album', artist: 'Artist', title: 'Title', fromAlbum: 'From the album <em>%{album}</em>.', byArtist: 'By <em>%{artist}</em>.', byArtistFromAlbum: 'By <em>%{artist}</em> from their album <em>%{album}</em>.', }, importLog: { title: 'File import logs', showImportLog: 'Show import logs', start: '# %{title} started at %{time}', type: { fetch: 'Fetch log', normalize: 'Normalization log' }, }, }, playlist: { duration: 'Duration', editor: { title: 'Media sources', expertMode: 'Expert mode', isSaving: 'Media sources are being saved', editPlaylistEntry: 'Edit media sources', deletePlaylistEntry: 'Delete media source', noEntries: 'No media sources have been assigned.', entriesAdd: { retry: 'Try again', discard: 'Discard', error: 'Some of the media sources could not be added.', }, upload: { pending: 'Pending uploads', step: { fetching: 'Importing', normalizing: 'Normalizing', unknown: 'Processing', }, }, control: { _or: '- or -', dropFiles: 'Drag files on this area', selectFiles: 'Select local file', importFile: 'Import file from URL', addStream: 'Add stream', addInput: 'Add input', }, importFileDialog: { title: 'Import file from URL', saveLabel: 'Add file', }, addInputDialog: { title: 'Add input as media source', saveLabel: 'Add input', }, addStreamDialog: { title: 'Add stream as media source', saveLabel: 'Add stream', }, }, state: { ok: { title: 'Perfect' }, missing: { title: 'Missing' }, indeterminate: { title: 'Unknown duration', description: `At least one of the media sources does not have a fixed duration. It is therefore not possible to check whether your sources exceed or fall short of the broadcast duration. The media you have provided should have a total length of <strong>%{totalTime}</strong>. The current sources are deviating from this by <strong>%{offset}</strong>.`, }, tooShort: { title: 'Too short', description: `The media sources you have provided fall short of the duration of the broadcast by <strong>%{offset}</strong>. <br>Please add further content to your episode.`, }, tooLong: { title: 'Too long', description: `The media sources you have provided exceed the duration of the broadcast by <strong>%{offset}</strong>. <br>Please shorten your episode content accordingly.`, }, }, }, playlistTable: { // Our translation framework automatically picks singular/plural items: '%{smart_count} item |||| %{smart_count} items', assign: 'Assign', unset: 'Unset', index: 'Nr', description: 'Description', entries: 'Entries', duration: 'Duration', lastEdit: 'Last edited', type: 'Type', source: 'Source', actions: 'Actions', }, linkType: { inactive: 'Obsolete', }, link: { urlExample: 'i.e. https://aura.radio', fields: { typeId: 'Link type', url: 'Web Address', }, }, showSelector: { keyboardShortcut: 'Alt + K', selectShowMany: 'Select show:', selectShow: 'Select a radio show', noData: 'No shows have been created yet.', noDataMatch: 'There are no shows that match your search criteria.', showState: { label: 'Show status', active: 'Active', inactive: 'Inactive', }, }, showSchedules: { title: 'Schedules', times: 'Airtime', rhythm: 'Rhythm', firstBroadcast: 'Start date', lastBroadcast: 'End date', noSchedulesAvailable: 'There currently is no active schedule for this show.', showAll: 'Show All', hide: 'Hide', scheduleDescription: '%{rhythm} beginning %{startDate} from %{startTime} to %{endTime} respectively.', scheduleDescriptionFinite: '%{rhythm} beginning %{startDate} through %{endDate} from %{startTime} to %{endTime} respectively.', selection: { all: 'All', relevant: 'Current', }, }, showTimeslots: { title: 'Episodes', noTimeslotsScheduled: 'No episodes are scheduled within the given timeframe.', editDescription: 'Edit description', editPlaylist: 'Edit playlist', openPlayer: 'Open player', downloadRecording: 'Download recording', uploadToCba: 'Upload recording to CBA', numberOfSlots: 'Episodes per page', start: 'From', direction: { past: 'Past', future: 'Future', }, }, languageSelector: { label: 'Choose a language', }, user: { username: 'Username', name: 'Name', email: 'Email', }, noteEditor: { _title: 'Episode description', title: 'Title', titlePlaceholder: 'Enter a title', summary: 'Summary', summaryPlaceholder: 'Enter a summary', content: 'Content', contentPlaceholder: 'Describe the content of the show', image: 'Image', tags: 'Tags', contributors: 'Contributors', languages: 'Languages', topics: 'Topics', links: 'Platform & Social Media Links', }, error: { server: { unknown: 'An unknown error occurred.', exception: 'An unknown server error occurred.', permission_denied: 'You have insufficient permissions.', invalid: 'This field value is invalid.', null: 'This field cannot be empty.', blank: 'This field cannot be empty.', unique: 'The value of this field must be unique.', connection: 'Unable to save your changes because the server cannot be reached. ' + 'This may be caused by a temporary issue with your internet connection or a problem with the server.', }, }, imagePicker: { title: 'Pick an Image', browseImages: 'Browse Images', editCurrentImage: 'Edit the current image', saveChanges: 'Save changes', useImage: 'Use this image', chooseAnImage: 'Choose image', uploadImage: 'Upload new image', abort: 'Abort', reset: 'Reset Image', error: { default: 'Could not upload image.', tooLarge: 'The image you’ve selected is too large in filesize.', }, }, image: { altText: 'Alternative Text (for screen readers)', license: 'License', credits: 'Credits / Author', isUseExplicitlyGrantedByAuthor: 'Use was explicitly granted by author', }, license: { validation: { requiresExpressPermissionForPublication: 'The license requires explicit consent for publication on the part of the author.', requiresCredits: 'The license requires attribution of the author. Please indicate their name.', }, }, saveIndicator: { label: { pending: 'Saving', success: 'Saved successfully', failure: 'Error on save', }, }, showCreator: { title: 'Create new show', missingShowTypes: 'No show types have been created yet. You can add them in the <a href="%{adminUrl}/program/type/add/" target="_blank">administration interface</a>.', missingShowFundingCategories: 'No funding categories have been created yet. You can add them in the <a href="%{adminUrl}/program/fundingcategory/add/" target="_blank">administration interface</a>.', }, conflictResolution: { title: 'Conflict resolution for new schedule', titleModal: 'Resolve a timeslot conflict', titleNoConflict: 'No conflict to resolve', noConflict: 'This timeslot does not have a conflict. Great!', conflictingSlot: 'New Timeslot', projectedSlot: 'The new timeslot runs on <b>%{firstDate}</b> from <b>%{startTime}</b> to <b>%{endTime}</b>', conflictsWith: 'It conflicts with the following timeslots', newSchedule: 'from <b>%{firstDate}, %{startTime}</b> to <b>%{endTime}</b>', recurringSchedule: 'This schedule repeats <b>%{rrule}</b> until <b>%{lastDate}</b>', recurringScheduleNoEnd: 'This schedule repeats <b>%{rrule}</b>.', leftToResolve: '%{smart_count} conflicts left to resolve |||| %{smart_count} conflict left to resolve', noneLeftToResolve: 'No more conflicts to resolve!', applySolution: 'Apply solution', from: 'From', to: 'To', showName: 'Show name', whichStrategy: 'Which solution should be applied?', strategies: { ours: 'Insert new timeslot, delete old one', theirs: 'Delete new timeslot, keep old one', theirsStart: 'Insert new timeslot after old timeslot', theirsEnd: 'Insert new timeslot before old timeslot', theirsBoth: 'Insert new timeslot with interruption by old timeslot', oursStart: 'ours-start (TODO: Better description)', oursEnd: 'ours-end (TODO: Better description)', oursBoth: 'ours-both (TODO: Better description)', }, }, paginator: { itemsPerPage: 'Items per Page', gotoFirst: 'Go to first page', gotoPrev: 'Go to previous page', goto: 'Go to page %{page}', gotoNext: 'Go to next page', gotoLast: 'Go to last page', range: 'Showing %{start} to %{end} of %{count} entries.', }, scheduleEditor: { titleCreate: 'Create new schedule for "%{show}"', titleEdit: 'Edit schedule for "%{show}"', timeslotRuns: 'This timeslot runs on <b>%{firstDate}</b> from <b>%{startTime}</b> to <b>%{endTime}</b>', recurringSchedule: 'This schedule repeats from <b>%{rrule}</b> to <b>%{lastDate}</b>', singleEmission: 'This timeslot is a one-time emission.', coexistingTimeslot: 'But due to a conflict resolution there is another timeslot on <b>%{firstDate}</b> from <b>%{startTime}</b> to <b>%{endTime}</b>', addFallbackTitle: 'Add fallback for schedule', currentlySelectedPlaylist: 'Currently selected playlist', assignPlaylist: 'Assign playlist', start: 'Start', end: 'End', projectedDuration: '<b>Projected duration:</b> %{duration}', pastEventWarning: 'Past events will be ignored. Start date was set to today!<br>Try again or change the start date to something in the future.', from: 'From', to: 'To', fromDate: 'Starting', toDate: 'Until <span class="tw-font-normal tw-text-gray-500">(Date)</span>', addRepetition: 'Add repetition schedule', whenToRepeat: 'When to repeat?', useSameTime: 'Use same start and end time', repeatAt: 'Repeat at', addNoOfDays: 'How many days later?', onlyBusinessDays: 'Only count business days', delete: { delete: 'Delete', timeslotsTitle: 'Deleting timeslots', both: 'Delete both', scheduleTimeslots: 'Delete schedule and all timeslots', timeslot: 'Delete timeslot', allTimeslots: 'Delete all future timeslots', }, repetition: { followingDay: 'On the following day', followingBusinessDay: 'On the following business day', numberOfDaysLater: 'A number of days later', }, }, editingMetadata: { timeSpecific: 'on %{date} at %{time}', lastModified: 'Last modified %{time} by %{author}.', created: 'Created %{time} by %{author}.', }, calendar: { today: 'Today', empty: 'No playlist', fallback: 'Fallback playlist', repetition: 'Repetition', view: { day: 'Day view', week: 'Week view', }, switchShow: 'Switch to “%{show}” show', editTimeslot: 'Sendung bearbeiten', intermission: 'Program intermission', mismatchedLength: 'wrong duration', playing: 'Currently playing', }, // Etc metadata: { artist: 'Artist', album: 'Album', title: 'Title', source: 'Source', size: 'File size', }, humanJoin: { default: ', ', and: ', and ', or: ', or ', }, rrule: { rrule: 'Repetition rule', unknown: 'Unable to create an automated description of the repetition rule. Please file an issue for the aura/dashboard project.', once: 'once', daily: 'every day |||| every %{smart_count} days', weekly: 'every week |||| every %{smart_count} weeks', monthly: 'every month |||| every %{smart_count} months', yearly: 'every year |||| every %{smart_count} years', businessDay: 'business day |||| business days', onDays: 'on %{days}', position: { '-1': 'on the last', 1: 'on the first', 2: 'on the second', 3: 'on the third', 4: 'on the fourth', 5: 'on the fifth', }, }, steeringErrorCodes: { 'no-start-after-end': 'The start date cannot be after the end date.', 'no-same-day-start-and-end': 'The start and end date cannot be on the same day.', 'one-solution-per-conflict': 'Exactly one solution is required per conflict. You either submitted no or more than one solution.', }, }