trypost/lang/en/settings.php
Paulo Castellano 148a2f432f feat: AI image generation pipeline and post creation overhaul
Core changes:
- Replace Unsplash slide pipeline with gpt-image-2 via Laravel AI SDK.
  New AiImageClient builds prompts from a Blade template seeded by the
  workspace's ImageStyle enum, content language, brand color (mapped to a
  human-readable name via HexColorName helper) and brand description.
- Drop Template B from TemplateImageGenerator: every slide now renders as
  Template A (full-bleed photo + bottom gradient + white/grey overlay).
  Removes renderTemplateB, roundCorners, blendHex, ensureContrast and the
  closing-slide pipeline.
- StreamPostCreation creates the Post directly and dispatches
  PostCreationReady with post_id; the wizard kills its preview step and
  redirects straight to the post editor on completion. Finalize endpoint
  removed.
- New Workspace.image_style enum field with an 8-option visual picker
  shared by /workspaces/create and /settings/workspace/brand via a single
  BrandForm component (autofill is a prop). 8 sample webp thumbs ship
  under public/images/branding/image-styles/.
- Media items gain optional source ('ai'|'unsplash'|'giphy') and
  source_meta (recipe needed to regenerate AI images later); the gallery
  picker tags Unsplash/Giphy attachments.
- Brand-color autofill: new CssColorFrequencyExtractor parses every
  hex/rgb/hsl value in the homepage CSS, clusters perceptually similar
  shades in CIE LAB (Delta E 76 < 12), filters neutrals and returns the
  most frequent cluster. Solves Tailwind/utility-CSS sites where no
  semantic --primary variable is exposed.
- Credits: gpt-image-2 metered at 15 credits/image (low quality default).
- Layout: AuthSplitLayout right column is sticky/h-svh so the form
  textarea growth no longer stretches the marketing slider.
- i18n cleanup: localized labels follow the no-em-dash convention.
2026-05-08 13:38:30 -03:00

319 lines
13 KiB
PHP

<?php
return [
'title' => 'Settings',
'description' => 'Manage your profile and account settings',
'hub' => [
'title' => 'Settings',
'description' => 'Choose what you want to manage.',
'profile' => [
'title' => 'Profile',
'description' => 'Update your personal info, password, and notification preferences.',
],
'workspace' => [
'title' => 'Workspace',
'description' => 'Configure your workspace, brand, members, and API keys.',
],
'account' => [
'title' => 'Account',
'description' => 'Manage your account info, usage, and billing.',
],
],
'nav' => [
'profile' => 'Profile',
'authentication' => 'Authentication',
'workspace' => 'Workspace',
'members' => 'Members',
'notifications' => 'Notifications',
'billing' => 'Billing',
],
'notifications' => [
'title' => 'Notification preferences',
'heading' => 'Email notifications',
'description' => 'Choose which email notifications you want to receive',
'post_published' => 'Post published',
'post_published_description' => 'Receive an email when your post is published successfully',
'post_failed' => 'Post failed',
'post_failed_description' => 'Receive an email when your post fails to publish',
'account_disconnected' => 'Account disconnected',
'account_disconnected_description' => 'Receive an email when a social account is disconnected',
'save' => 'Save preferences',
],
'profile' => [
'title' => 'Profile settings',
'photo_heading' => 'Profile photo',
'photo_description' => 'Upload a profile photo',
'heading' => 'Profile information',
'description' => 'Update your name and email address',
'avatar' => 'Avatar',
'name' => 'Name',
'name_placeholder' => 'Full name',
'email' => 'Email address',
'email_placeholder' => 'Email address',
'email_unverified' => 'Your email address is unverified.',
'resend_verification' => 'Click here to resend the verification email.',
'verification_sent' => 'A new verification link has been sent to your email address.',
'save' => 'Save',
],
'authentication' => [
'title' => 'Authentication',
'page_title' => 'Authentication settings',
'sessions' => [
'title' => 'Active sessions',
'description' => 'If you notice anything suspicious, sign out of other devices.',
'unknown_browser' => 'Unknown browser',
'unknown_ip' => 'Unknown IP',
'on' => 'on',
'active_now' => 'Active now',
'log_out_others' => 'Log out other devices',
'modal_title' => 'Log out other devices',
'modal_description_password' => 'Enter your current password to confirm you want to log out other browser sessions.',
'modal_description_email' => 'Type your email address to confirm you want to log out other browser sessions.',
'password_placeholder' => 'Current password',
'email_placeholder' => 'Your account email',
'cancel' => 'Cancel',
'submit' => 'Log out other devices',
'email_mismatch' => 'The email address does not match your account.',
'flash_logged_out' => 'You have been logged out from other devices.',
],
'password' => [
'update_title' => 'Update password',
'set_title' => 'Set a password',
'update_description' => 'Ensure your account is using a long, random password to stay secure.',
'set_description' => 'Add a password so you can sign in without a connected provider.',
'current_password' => 'Current password',
'new_password' => 'New password',
'confirm_password' => 'Confirm password',
'save' => 'Save password',
'set' => 'Set password',
],
'providers' => [
'title' => 'Connected accounts',
'description' => 'Sign in faster with these connected providers.',
'connected' => 'Connected',
'not_connected' => 'Not connected',
'connect' => 'Connect',
'disconnect' => 'Disconnect',
'flash_disconnected' => ':provider disconnected successfully.',
'flash_connected' => ':provider connected successfully.',
'flash_already_linked' => 'That :provider account is already linked to another user.',
'flash_cannot_disconnect' => 'You cannot disconnect your only sign-in method. Set a password or connect another provider first.',
],
],
'delete_account' => [
'heading' => 'Delete account',
'description' => 'Delete your account and all of its resources',
'warning' => 'Warning',
'warning_message' => 'Please proceed with caution, this cannot be undone.',
'button' => 'Delete account',
'modal_title' => 'Are you sure you want to delete your account?',
'modal_description_password' => 'Once your account is deleted, all of its resources and data will also be permanently deleted. Please enter your password to confirm.',
'modal_description_email' => 'Once your account is deleted, all of its resources and data will also be permanently deleted. Please type your email address :email to confirm.',
'password' => 'Password',
'password_placeholder' => 'Password',
'email_placeholder' => 'Your account email',
'email_mismatch' => 'The email address does not match your account.',
'cancel' => 'Cancel',
'confirm' => 'Delete account',
],
'workspace' => [
'tabs' => [
'workspace' => 'Workspace',
'brand' => 'Brand',
'users' => 'Members',
'api_keys' => 'API Keys',
],
'title' => 'Workspace settings',
'logo_heading' => 'Workspace logo',
'logo_description' => 'Upload a logo for your workspace',
'heading' => 'Workspace name',
'description' => 'Update your workspace name',
'members_heading' => 'Members',
'members_description' => 'Manage workspace members and invitations',
'name' => 'Name',
'name_placeholder' => 'My Workspace',
'save' => 'Save',
],
'brand' => [
'title' => 'Brand',
'description' => 'Configure your brand identity for AI-generated content.',
'name' => 'Workspace name',
'name_placeholder' => 'My brand',
'website' => 'Website',
'website_placeholder' => 'https://yourbrand.com',
'brand_description' => 'Description',
'brand_description_placeholder' => 'Tell us about your brand, what you do, and who your audience is...',
'tone' => 'Tone of voice',
'tone_professional' => 'Professional',
'tone_casual' => 'Casual',
'tone_friendly' => 'Friendly',
'tone_bold' => 'Bold',
'tone_inspirational' => 'Inspirational',
'tone_humorous' => 'Humorous',
'tone_educational' => 'Educational',
'voice_notes' => 'Voice notes',
'voice_notes_placeholder' => 'Additional writing guidelines, words to avoid, style preferences...',
'brand_color' => 'Brand color',
'background_color' => 'Background color',
'text_color' => 'Text color',
'font' => 'Font',
'image_style' => 'Image style',
'image_style_description' => 'Visual style applied when generating slide and cover images for AI posts.',
'image_style_cinematic' => 'Cinematic',
'image_style_illustration' => 'Illustration',
'image_style_isometric_3d' => 'Isometric',
'image_style_cartoon' => 'Cartoon',
'image_style_typographic' => 'Typographic',
'image_style_infographic' => 'Infographic',
'image_style_minimalist' => 'Minimalist',
'image_style_mockup' => 'Mockup',
'content_language' => 'Content language',
'content_language_description' => 'Language used for AI-generated captions, hashtags, and any text inside generated images or videos.',
],
'members' => [
'title' => 'Members',
'heading' => 'Team members',
'description' => 'Manage members and invites for this workspace',
'cancel' => 'Cancel',
'remove' => 'Remove',
'make_admin' => 'Make admin',
'make_member' => 'Make member',
'invite' => [
'title' => 'Invite Member',
'description' => 'Send an email invite to add collaborators',
'email' => 'Email',
'email_placeholder' => 'collaborator@email.com',
'role' => 'Role',
'role_placeholder' => 'Select a role',
'submit' => 'Send Invite',
],
'pending' => [
'title' => 'Pending Invites',
'description' => 'Invites awaiting acceptance',
'empty' => 'No pending invites',
],
'list' => [
'title' => 'Members',
'description' => 'People with access to this workspace',
'empty' => 'No members besides the owner',
],
'remove_modal' => [
'title' => 'Remove member',
'description' => 'Are you sure you want to remove this member from the workspace? They will lose access to all workspace resources.',
'action' => 'Remove member',
],
'cancel_invite_modal' => [
'title' => 'Cancel invitation',
'description' => 'Are you sure you want to cancel this invitation?',
'action' => 'Cancel invitation',
],
'roles' => [
'owner' => 'Owner',
'admin' => 'Admin',
'member' => 'Member',
'viewer' => 'Viewer',
],
'flash' => [
'invite_sent' => 'Invite sent successfully!',
'invite_deleted' => 'Invite deleted.',
'member_removed' => 'Member removed successfully.',
'role_updated' => 'Member role updated.',
'wrong_email' => 'This invite is for a different email address.',
'already_member' => 'You are already a member of this workspace.',
'invite_accepted' => 'Welcome! You are now a member of the workspace.',
'invite_declined' => 'Invite declined.',
],
],
'account' => [
'tabs' => [
'account' => 'Account',
'usage' => 'Usage',
'billing' => 'Billing',
],
'title' => 'Account Settings',
'description' => 'Manage your account name and billing email',
'name' => 'Account Name',
'name_placeholder' => 'My Company',
'billing_email' => 'Billing Email',
'billing_email_placeholder' => 'billing@company.com',
'billing_email_hint' => 'This email will be used for invoices and billing communications from Stripe.',
'submit' => 'Save',
],
'flash' => [
'account_updated' => 'Account updated successfully!',
'profile_updated' => 'Profile updated successfully!',
'language_updated' => 'Language updated successfully!',
'password_updated' => 'Password updated successfully!',
'workspace_updated' => 'Settings updated successfully!',
'photo_updated' => 'Photo updated successfully!',
'photo_deleted' => 'Photo removed successfully!',
'logo_updated' => 'Logo uploaded successfully!',
'logo_deleted' => 'Logo removed successfully!',
'notifications_updated' => 'Notification preferences updated!',
],
'api_keys' => [
'title' => 'API Keys',
'page_title' => 'API Keys',
'heading' => 'API Keys',
'description' => 'Manage API keys for programmatic access to your workspace.',
'create' => 'Create API Key',
'copy' => 'Copy',
'new_token_message' => 'Your new API key has been created. Copy it now — you won\'t be able to see it again.',
'table' => [
'name' => 'Name',
'key' => 'Key',
'status' => 'Status',
'expires' => 'Expires',
'last_used' => 'Last Used',
'never' => 'Never',
],
'actions' => [
'copy_id' => 'Copy API Key ID',
'copy_id_success' => 'API Key ID copied to clipboard',
'delete' => 'Delete',
],
'empty' => [
'title' => 'No API keys yet',
'description' => 'Create an API key to access your workspace programmatically.',
],
'delete_modal' => [
'title' => 'Delete API key',
'description' => 'Are you sure you want to delete this API key? Any applications using this key will lose access immediately.',
'action' => 'Delete API key',
],
'create_dialog' => [
'title' => 'Create API Key',
'description' => 'Create a new API key for programmatic access to your workspace.',
'name' => 'Name',
'name_placeholder' => 'e.g. Production API Key',
'expires' => 'Expiration date (optional)',
'expires_placeholder' => 'No expiration',
'submit' => 'Create',
'cancel' => 'Cancel',
],
'flash' => [
'created' => 'API key created successfully!',
'deleted' => 'API key deleted successfully!',
],
],
];