Files
landing-api/lang/en/panel.php
Josep Piguillem 70521d4bc9 Tell scheduling apart from unpublishing in the history
Giving a record a future date was recorded as "unpublished", and announced
to webhooks as such. The history now compares before and after.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 10:09:03 +02:00

843 lines
31 KiB
PHP

<?php
declare(strict_types=1);
return [
'untitled' => 'Untitled',
'duplicates' => [
'title' => 'Similar title',
'body' => 'Something very similar already exists: :titles',
'open' => 'Open existing record',
],
'sessions' => [
'title' => 'Sessions',
'this_one' => 'This session',
'unknown_device' => 'Unknown device',
'fields' => [
'ip_address' => 'IP address',
'device' => 'Device',
'last_activity' => 'Last activity',
],
'actions' => [
'revoke' => 'Sign out',
],
'revoked' => 'Session ended. That connection stops being valid on its next request.',
'empty' => [
'heading' => 'No open sessions',
'description' => 'Nobody has signed in with this account, or it has been idle for a while.',
],
],
'concurrency' => [
'title' => 'Not saved',
'body' => 'Somebody else changed this while you were editing it. Reload the page to see the current version — saving now would overwrite that change.',
'body_with_author' => ':name changed this while you were editing it. Reload the page to see their version — saving now would overwrite that change.',
],
'presence' => [
'title' => 'Somebody else has this open',
'body' => 'Also editing this right now: :names.',
],
'groups' => [
'collective' => 'Collective',
'content' => 'Content',
'administration' => 'Administration',
],
'language' => [
'label' => 'Language',
'switch' => 'Change language',
],
'pages' => [
'label' => 'Page',
'plural' => 'Pages',
'sections' => [
'content' => 'Content',
'content_hint' => 'Each tab is a language. The primary language is required; the others fall back to it when left empty.',
'publishing' => 'Publishing',
'seo' => 'SEO',
'seo_hint' => 'Metadata for search engines and social networks.',
],
'fields' => [
'title' => 'Title',
'slug' => 'Slug',
'excerpt' => 'Excerpt',
'body' => 'Body',
'meta_title' => 'Meta title',
'meta_description' => 'Meta description',
'category' => 'Category',
'author' => 'Author',
'status' => 'Status',
'featured_image' => 'Featured image',
'featured_image_alt' => 'Alt text',
'featured_image_alt_hint' => 'What the image shows, for someone who cannot see it. Leave empty if it is purely decorative.',
'is_featured' => 'Featured',
'published_at' => 'Published at',
'published_at_hint' => 'With a future date the page stays off the site until it arrives.',
'unpublish_at' => 'Take down on',
'unpublish_at_hint' => 'Optional. When it arrives the page drops off the site by itself. For notices with an expiry.',
'translations' => 'Translations',
],
'filters' => [
'translated_in' => 'Translated into',
'missing_translation' => 'Missing translation for',
],
'actions' => [
'publish' => 'Publish',
'unpublish' => 'Unpublish',
],
],
'categories' => [
'label' => 'Category',
'plural' => 'Categories',
'fields' => [
'name' => 'Name',
'slug' => 'Slug',
'description' => 'Description',
'color' => 'Colour',
'position' => 'Order',
'is_visible' => 'Visible',
'pages_count' => 'Pages',
],
],
'users' => [
'label' => 'User',
'plural' => 'Users',
'sections' => [
'identity' => 'Identity',
'identity_hint' => 'Managed by the OAuth server. Refreshed automatically on every sign-in.',
'access' => 'Access and permissions',
'access_hint' => 'Managed by this application.',
],
'fields' => [
'name' => 'Name',
'email' => 'Email',
'oauth_id' => 'OAuth server ID',
'roles' => 'Roles',
'locale' => 'Preferred language',
'is_active' => 'Active',
'last_login_at' => 'Last sign-in',
'remote_roles' => 'Remote roles',
'never' => 'Never',
],
'actions' => [
'activate' => 'Activate',
'deactivate' => 'Deactivate',
],
],
'roles' => [
'label' => 'Role',
'plural' => 'Roles',
'fields' => [
'name' => 'Name',
'permissions' => 'Permissions',
'users_count' => 'Users',
],
'protected' => 'Protected role: it cannot be deleted.',
'select_all' => 'Select all',
],
'permissions' => [
'groups' => [
'general' => 'General',
'projects' => 'Projects',
'members' => 'Members',
'services' => 'Services',
'clients' => 'Clients',
'testimonials' => 'Testimonials',
'talks' => 'Talks',
'technologies' => 'Technologies',
'calls' => 'Calls for help',
'applications' => 'Inbox',
'repositories' => 'Repositories',
'media' => 'Media',
'redirects' => 'Redirects',
'pages' => 'Pages',
'categories' => 'Categories',
'webhooks' => 'Webhooks',
'audit' => 'Audit log',
'users' => 'Users',
'roles' => 'Roles',
'settings' => 'Settings',
],
'abilities' => [
'sync' => 'Sync',
'maintenance' => 'Toggle maintenance mode',
'panel_access' => 'Access the panel',
'view_any' => 'List',
'view' => 'View details',
'create' => 'Create',
'update' => 'Edit',
'delete' => 'Delete',
'restore' => 'Restore',
'force_delete' => 'Delete permanently',
'publish' => 'Publish',
],
],
'actions' => [
'duplicate' => 'Duplicate',
'duplicate_heading' => 'Duplicate this record',
'duplicated' => 'Duplicated. Give it a slug and a date before publishing it.',
],
'preview' => [
'label' => 'Preview',
'heading' => 'Preview links',
'hint' => 'Shareable, and they expire in :hours hours. Each one only works for this record.',
'open' => 'Open',
'opens_new_tab' => '(opens in a new tab)',
'link_for' => 'Preview link for :language',
],
'trash' => [
'title' => 'Trash',
'subheading' => 'Everything deleted, together, with the undo button next to it.',
'empty' => 'The trash is empty.',
'deleted_at' => 'Deleted :when',
'restore' => 'Restore',
'erase' => 'Erase',
'erase_confirm' => 'This cannot be undone. Are you sure?',
'restored' => 'Restored',
'erased' => 'Erased for good',
],
'today' => [
'all_clear' => 'Nothing is waiting',
'all_clear_hint' => 'Nobody unanswered, nothing half-finished.',
],
'widgets' => [
'stats' => [
'pages' => 'Pages',
'published' => 'Published',
'users' => 'Active users',
'missing_translations' => 'Untranslated',
'missing_translations_hint' => 'Pages missing at least one language',
'projects' => 'Projects',
'projects_description' => 'Published projects',
'active_projects' => 'Active projects',
'active_projects_description' => 'Seeking contributors',
'members' => 'Members',
'members_description' => 'Active collective members',
'open_calls' => 'Open calls',
'open_calls_description' => 'Seeking participants',
'good_first_issues' => 'Good first issues',
'good_first_issues_description' => 'Available to claim',
'help_wanted' => 'Help wanted',
'help_wanted_description' => 'Open issues',
],
'growth_chart' => 'Growth over time',
'growth' => [
'projects' => 'Projects',
'members' => 'Members',
'issues' => 'Good first issues',
],
'languages_chart' => 'Languages distribution',
'languages' => [
'repositories' => 'Repositories',
],
],
'projects' => [
'label' => 'Project',
'plural' => 'Projects',
'sections' => [
'content' => 'Content',
'writeup' => 'Decisions and postmortem',
'writeup_hint' => 'What a consultancy cannot publish and you can. This is the content other developers actually read.',
'details' => 'Details',
],
'fields' => [
'title' => 'Title',
'slug' => 'Slug',
'tagline' => 'Tagline',
'description' => 'Description',
'decisions' => 'Technical decisions',
'decisions_hint' => 'Why you chose what you chose, and what you ruled out.',
'postmortem' => 'Postmortem',
'postmortem_hint' => 'What went wrong and what you learned. It does not have to be a success story.',
'status' => 'Status',
'published_at' => 'Published at',
'unpublish_at' => 'Take down on',
'unpublish_at_hint' => 'Optional. When it arrives the project drops off the site by itself.',
'published_at_hint' => 'Empty = not visible on the public site.',
'technologies' => 'Technologies',
'lead' => 'Lead',
'members' => 'Contributors',
'client' => 'Who for',
'client_hint' => 'The NGO, association or organisation it was built for. If it is not on the list, you can create it right here.',
'services' => 'Services',
'demo_url' => 'Demo',
'cover_image' => 'Cover image',
'cover_image_alt' => 'Alt text',
'cover_image_alt_hint' => 'What the cover shows, for someone who cannot see it. Leave empty if it is purely decorative.',
'started_at' => 'Started',
'ended_at' => 'Ended',
'is_featured' => 'Featured',
'needs_help' => 'Looking for help',
'needs_help_hint' => 'Surfaces it in the contribute section of the site.',
],
'filters' => ['unpublished' => 'Unpublished'],
'actions' => ['publish' => 'Publish'],
],
'members' => [
'label' => 'Member',
'plural' => 'Members',
'sections' => [
'profile' => 'Public profile',
'profile_hint' => 'This is each person\'s shop window — the currency volunteer work is paid in.',
'membership' => 'Membership',
],
'fields' => [
'name' => 'Name',
'slug' => 'Slug',
'headline' => 'Headline',
'bio' => 'Bio',
'avatar' => 'Photo',
'avatar_hint' => 'The alt text is the person\'s name, so there is nothing to write.',
'github_username' => 'GitHub username',
'user' => 'Panel account',
'user_hint' => 'Optional. Most members never need admin access.',
'technologies' => 'Technologies',
'projects' => 'Projects',
'is_public' => 'Visible on the site',
'is_founder' => 'Founder',
'position' => 'Order',
'joined_at' => 'Joined',
'left_at' => 'Left',
'left_at_hint' => 'Removes them from the current roster but keeps their history.',
],
'filters' => ['current' => 'Current only'],
],
'technologies' => [
'label' => 'Technology',
'plural' => 'Technologies',
'off_radar' => 'Off the radar',
'sections' => ['prose' => 'Description and radar note'],
'fields' => [
'name' => 'Name',
'slug' => 'Slug',
'category' => 'Category',
'radar_ring' => 'Radar ring',
'radar_ring_hint' => 'Empty = usable as a tag but kept off the public radar.',
'radar_note' => 'Radar note',
'radar_note_hint' => 'Why it sits in that ring. This is the part people read.',
'description' => 'Description',
'color' => 'Colour',
'logo' => 'Logo',
'logo_hint' => 'Preferably SVG, or PNG with a transparent background. It shows on the radar and on the cards.',
'website' => 'Website',
'position' => 'Order',
'projects' => 'Projects',
'members' => 'Members',
],
],
'calls' => [
'label' => 'Call for help',
'plural' => 'Calls for help',
'no_project' => 'General',
'sections' => [
'commitment' => 'Commitment',
'commitment_hint' => 'Time is the scarce resource here, not money. Being specific is what makes someone decide.',
],
'fields' => [
'title' => 'Title',
'slug' => 'Slug',
'description' => 'Description',
'what_you_get' => 'What you get',
'what_you_get_hint' => 'Learning, portfolio, references, mentoring. Saying it openly helps.',
'status' => 'Status',
'project' => 'Project',
'project_hint' => 'Empty = a general call from the collective.',
'technologies' => 'Technologies',
'hours_per_week' => 'Hours per week',
'duration_weeks' => 'Weeks',
'seniority' => 'Level',
'commitment' => 'Commitment',
'opens_at' => 'Opens',
'closes_at' => 'Closes',
],
'seniority' => ['any' => 'Any', 'junior' => 'Junior', 'mid' => 'Mid', 'senior' => 'Senior'],
'commitment_summary' => '{0}:hoursh/week|{1}:hoursh/week · :weeks week|[2,*]:hoursh/week · :weeks weeks',
],
'applications' => [
'label' => 'Submission',
'plural' => 'Inbox',
'general_enquiry' => 'General message',
'badge_tooltip' => 'People waiting for an answer',
'saved' => 'Notes saved',
'reply_subject' => 'Re: :subject',
'sections' => [
'message' => 'What they wrote',
'internal' => 'Internal follow-up',
'internal_hint' => 'Only you see this. The sender never does.',
],
'fields' => [
'name' => 'Name',
'email' => 'E-mail',
'organisation' => 'Organisation',
'kind' => 'Kind',
'subject' => 'About',
'call' => 'Call',
'hours_per_week' => 'Hours/week',
'hours_asked' => 'The call asked for :hours h/week',
'message' => 'Message',
'links' => 'Links',
'link_name' => 'Name',
'link_url' => 'URL',
'status' => 'Status',
'received_at' => 'Received',
'handled_by' => 'Handled by',
'handled_at' => 'Handled on',
'locale' => 'Wrote in',
'notes' => 'Notes',
'notes_empty' => 'No notes',
'notes_hint' => 'For the rest of the team: what was discussed, where it was left.',
],
'actions' => [
'group' => 'Mark as',
'open' => 'Open submission',
'reply' => 'Reply',
'notes' => 'Notes',
'contacted' => 'Contacted',
'accepted' => 'Accepted',
'declined' => 'Declined',
'spam' => 'Spam',
],
'tabs' => [
'pending' => 'Unanswered',
'contribute' => 'Offering help',
'request' => 'Asking for help',
'all' => 'All',
'spam' => 'Spam',
],
'empty' => [
'heading' => 'Nothing to answer',
'description' => 'Whatever people send from the public site arrives here.',
'call_heading' => 'Nobody has written yet',
],
'notification' => [
'contribute' => ':name wants to help out',
'request' => ':name is asking for help with a project',
],
'mail' => [
'greeting' => 'Somebody is waiting for an answer.',
'from' => 'From :name (:email)',
],
],
'publishing' => [
'published_count' => '{0}Nothing to publish: already live.|{1}Published 1 record.|[2,*]Published :count records.',
'scheduled' => 'Scheduled',
'expired' => 'Expired',
'expired_at' => 'Expired on :time',
'expires_in' => 'Expires :time',
'live' => 'Live',
'unpublished' => 'Unpublished',
],
'gallery' => [
'title' => 'Gallery',
'missing_alt' => 'Not described',
'pending' => 'Processing',
'fields' => [
'image' => 'Image',
'alt' => 'Alt text',
'alt_hint' => 'What it shows, for someone who cannot see it.',
'caption' => 'Caption',
'caption_hint' => 'Shown to everyone. "Before" and "after" go here.',
'size' => 'Size',
],
'actions' => [
'add' => 'Add image',
],
'empty' => [
'heading' => 'No images yet',
'description' => 'Screenshots, before and after, whatever makes the project understandable. Drag to reorder.',
],
],
'services' => [
'label' => 'Service',
'plural' => 'Services',
'no_projects' => 'Nothing behind it: that is a promise, not an offer.',
'sections' => [
'evidence' => 'What backs it',
'evidence_hint' => 'A service that cannot point at real work is a promise. Link the projects that prove it.',
'seo' => 'SEO',
],
'fields' => [
'title' => 'Title',
'slug' => 'Slug',
'tagline' => 'One-line summary',
'tagline_hint' => 'One line. It is what the card on the landing page shows.',
'description' => 'Description',
'projects' => 'Projects',
'technologies' => 'Technologies',
'icon' => 'Icon',
'icon_hint' => 'A Heroicons name, for example heroicon-o-code-bracket.',
'position' => 'Order',
'is_published' => 'Published',
'is_featured' => 'Featured',
'is_featured_hint' => 'So the landing page can pick a few.',
'published_at' => 'Publish on',
'published_at_hint' => 'With a future date it stays off the site until it arrives.',
'unpublish_at' => 'Take down on',
'unpublish_at_hint' => 'Optional. When it arrives it drops off the site by itself.',
'meta_title' => 'Meta title',
'meta_description' => 'Meta description',
'translations' => 'Translations',
],
'actions' => [
'publish' => 'Publish',
],
],
'clients' => [
'label' => 'Client',
'plural' => 'Clients',
'fields' => [
'name' => 'Name',
'slug' => 'Slug',
'sector' => 'Sector',
'logo' => 'Logo',
'logo_hint' => 'Preferably SVG, or PNG with a transparent background.',
'url' => 'Website',
'projects' => 'Projects',
'is_public' => 'May be shown',
'is_public_hint' => 'Uncheck it if the organisation would rather not appear on the site.',
'position' => 'Order',
],
'filters' => [
'without_logo' => 'Without a logo',
],
],
'testimonials' => [
'label' => 'Testimonial',
'plural' => 'Testimonials',
'sections' => [
'quote' => 'The quote',
'quote_hint' => 'Write what they actually said, in the language they said it in. The other tabs are your translations, and the site will say so.',
'author' => 'Who said it',
'about' => 'What it is about',
'about_hint' => 'Attach it to a client, a project or a service, so the site asks for the right ones per page instead of keeping a loose list.',
],
'fields' => [
'quote' => 'Quote',
'original_locale' => 'Original language',
'original_locale_hint' => 'The language it was said in. Translating a quote puts words in somebody\'s mouth, so the site says as much.',
'author_name' => 'Name',
'author_role' => 'Role',
'avatar' => 'Photo',
'client' => 'Client',
'project' => 'Project',
'service' => 'Service',
'is_public' => 'Visible',
'position' => 'Order',
'given_at' => 'Date',
],
],
'talks' => [
'label' => 'Talk',
'plural' => 'Talks',
'fields' => [
'title' => 'Title',
'title_hint' => 'Not translated: it is the name of a talk given once, in one language.',
'language' => 'Language',
'summary' => 'Summary',
'event' => 'Event',
'city' => 'City',
'held_at' => 'Date',
'video_url' => 'Video',
'slides_url' => 'Slides',
'member' => 'Speaker',
'member_hint' => 'It will show on their profile too, without writing it twice.',
'project' => 'Project',
'is_public' => 'Visible',
],
],
'repositories' => [
'label' => 'Repository',
'plural' => 'Repositories',
'never_synced' => 'Never',
'fields' => [
'provider' => 'Provider',
'full_name' => 'Repository',
'full_name_hint' => 'Format "owner/repo". Everything else is fetched automatically.',
'project' => 'Project',
'is_primary' => 'Primary',
'is_primary_hint' => 'The one representing the project when there are several.',
'show_publicly' => 'Visible on the site',
'language' => 'Language',
'contributors' => 'Contributors',
'good_first_issues' => 'Good first issues',
'pushed_at' => 'Last push',
'last_synced_at' => 'Synced',
],
'filters' => ['failing' => 'Failing', 'dormant' => 'Dormant'],
'actions' => ['sync' => 'Sync', 'sync_selected' => 'Sync selected'],
'notifications' => [
'synced' => 'Repository synced',
'synced_body' => ':stars★ · :issues good first issues',
'sync_failed' => 'Sync failed',
'queued' => ':count repositories queued',
],
],
'revisions' => [
'title' => 'History',
'system' => 'The system',
'before' => 'Before',
'after' => 'After',
'no_changes' => 'This entry records no field changes.',
'restored' => 'Values restored',
'restore_confirm' => 'The fields go back to what they said at that moment. Restoring is recorded too, so it can always be undone.',
'diff_heading' => 'Change by :author · :when',
'fields' => [
'event' => 'What happened',
'author' => 'Who',
'fields' => 'Fields',
'when' => 'When',
],
'events' => [
'created' => 'Created',
'updated' => 'Edited',
'published' => 'Published',
'unpublished' => 'Unpublished',
'scheduled' => 'Scheduled',
'deleted' => 'Deleted',
'restored' => 'Recovered',
'erased' => 'Erased for good',
],
'actions' => [
'diff' => 'See the change',
'restore' => 'Restore these values',
],
],
'media' => [
'label' => 'File',
'plural' => 'Media',
'subheading' => ':count files · :size MB on disk, derived versions included.',
'pending' => 'Not processed',
'in_use' => 'In use',
'orphan' => 'Unused',
'fields' => [
'file' => 'File',
'size' => 'Dimensions',
'versions' => 'Versions',
'weight' => 'Weight',
'used' => 'Use',
'error' => 'Error',
],
'filters' => [
'pending' => 'Not processed',
'failed' => 'Failed',
'orphans' => 'Nothing points at them',
'missing' => 'No file on disk',
],
'actions' => [
'open' => 'Open',
'reprocess' => 'Reprocess',
'reprocess_all' => 'Reprocess everything',
'reprocess_all_hint' => 'Regenerates dimensions, versions and placeholders for every image. This is what to do after changing the widths or adding a format.',
'reprocess_queued' => 'Queued. It runs as soon as the queue does.',
],
'empty' => [
'heading' => 'No files yet',
'description' => 'They appear here by themselves as images are uploaded on projects, pages, members or the showcase.',
],
],
'redirects' => [
'label' => 'Redirect',
'plural' => 'Redirects',
'hint' => 'Paths as the site sees them, leading slash included. Renaming a slug writes one by itself.',
'every_locale' => 'Every language',
'automatic' => 'Automatic',
'manual' => 'By hand',
'fields' => [
'from' => 'From',
'from_hint' => 'The address that stopped working.',
'to' => 'To',
'status' => 'Kind',
'status_hint' => 'Permanent is the usual one: it tells Google to update the link.',
'locale' => 'Language',
'locale_hint' => 'Leave empty to apply in all three.',
'is_enabled' => 'Enabled',
'hits' => 'Uses',
'origin' => 'Origin',
],
'statuses' => [
'301' => 'Permanent (301)',
'302' => 'Temporary (302)',
],
'filters' => [
'unused' => 'Never used yet',
],
'empty' => [
'heading' => 'No redirects yet',
'description' => 'They are written automatically when a published slug changes. Add the ones from links older than this site by hand.',
],
],
'translations' => [
'filters' => [
'stale' => 'Translation left behind',
],
],
'views' => [
'column' => 'Reads',
'column_hint' => 'Reads over the last 30 days, every language together. Empty until the frontend reports them.',
'in_days' => 'in :days days',
'filters' => [
'unread' => 'Published and unread',
],
],
'reviews' => [
'title' => 'Review',
'column' => 'Review',
'waiting' => 'Waiting',
'waiting_for_you' => 'Waiting for your review',
'waiting_for_you_hint' => 'Somebody finished something and cannot publish it.',
'anyone' => 'Anybody who can publish',
'requested' => 'Review requested. The people who can publish it have been told.',
'requested_count' => '{0}Nothing to ask for: already in review or published.|{1}Requested review on 1 record.|[2,*]Requested review on :count records.',
'returned' => 'Sent back to whoever wrote it, with your reason.',
'fields' => [
'reviewer' => 'Ask',
'reviewer_hint' => 'Leave empty and everyone who can publish this will see it.',
'note' => 'Note',
'note_hint' => 'Optional. What the reviewer needs to know before looking.',
'reason' => 'What needs changing',
'reason_hint' => 'Required: handing work back without saying why is what stops people using review at all.',
'event' => 'What happened',
'who' => 'Who',
'when' => 'When',
],
'filters' => [
'mine' => 'Waiting for my review',
],
'actions' => [
'request' => 'Ask for review',
'request_bulk' => 'Ask for review (selection)',
'request_heading' => 'Say this is ready',
'request_hint' => 'You cannot publish it yourself, so this tells the people who can.',
'return' => 'Send back',
'return_heading' => 'Send it back to whoever wrote it',
'comment' => 'Comment',
'open' => 'Open',
],
'notification' => [
'title' => ':name is asking you to review something',
'returned' => ':name has sent something back to you',
],
'empty' => [
'heading' => 'Nothing said yet',
'description' => 'What was asked, what was sent back and why. The part the change history cannot hold.',
],
],
'missing_urls' => [
'label' => 'Missing URL',
'plural' => 'Missing URLs',
'linked_from_us' => 'Linked from our own site',
'no_referrer' => 'No referrer',
'fields' => [
'path' => 'Address',
'hits' => 'Requests',
'locale' => 'Language',
'status' => 'Status',
'referrer' => 'Came from',
'last_seen' => 'Last seen',
],
'filters' => [
'internal' => 'Linked from our site',
'repeated' => 'More than one request',
],
'actions' => [
'redirect' => 'Create redirect',
'redirect_heading' => 'Send this address somewhere',
'redirect_hint' => 'The failing address is already filled in. All that is missing is where it should lead.',
'redirected' => 'Redirect created. This address stops returning 404.',
'locale_hint' => 'Taken from the language it was requested in. Empty to apply in all.',
'ignore' => 'Ignore',
'unignore' => 'Stop ignoring',
],
'empty' => [
'heading' => 'Nobody has hit a 404',
'description' => 'Addresses the site could not resolve show up here, ready to be redirected. The frontend reports them, so SITE_INGEST_TOKEN has to be set.',
],
],
'settings' => [
'label' => 'Setting',
'plural' => 'Settings',
'sections' => [
'general' => 'General',
],
'fields' => [
'key' => 'Key',
'value' => 'Value',
'value_hint' => 'The value exactly as it is, in JSON. Invalid JSON is refused.',
],
'actions' => [
'add_setting' => 'Add setting',
'delete_setting' => 'Delete setting',
],
],
'issues' => [
'label' => 'Issue',
'plural' => 'Issues',
'sections' => [
'details' => 'Details',
'classification' => 'Classification',
'metadata' => 'Metadata',
],
'fields' => [
'number' => 'Number',
'title' => 'Title',
'repository' => 'Repository',
'author' => 'Author',
'assignee' => 'Assignee',
'assignee_hint' => 'GitHub username or empty to mark as unclaimed',
'url' => 'URL',
'is_good_first_issue' => 'Good first issue',
'is_good_first_issue_hint' => 'Recommended for newcomers to the project',
'is_help_wanted' => 'Help wanted',
'is_help_wanted_hint' => 'Open to community contributions',
'comments' => 'Comments',
'issue_created_at' => 'Created',
'issue_updated_at' => 'Updated',
'labels' => 'Labels',
'unassigned' => 'Unassigned',
],
'filters' => [
'repository' => 'Repository',
'good_first_issue' => 'Good first issues',
'help_wanted' => 'Help wanted',
'unclaimed' => 'Unclaimed',
'claimed' => 'Claimed',
],
],
];