공개 (@Tuwasduliebst 제보) 대응. - ckeditor5: 미참조 이미지 정리 엔진 신설 — 참조 판정(hash + 파일명 2토큰, filter_reference_sources 훅으로 확장 콘텐츠 등록) + 정리 커맨드(기본 꺼짐 옵트인, 3중 게이트) + 업로드 관리 화면(권한 분리·참조 배지·개별/선택 삭제) + 기설치본 설정 백필 upgrade step - board: 임시 첨부 GC(상시) + 소프트삭제 첨부 영구 정리(옵트인) + 설정 UI, 저장 payload 누락(F4)·빈 temp 디렉토리 잔존(F5) 수정 - ecommerce: 임시 상품 이미지 GC + 카테고리 삭제 시 이미지 파일 미삭제(S4) 수정 - page: 임시 첨부 GC - 코어: 고아 첨부 정리 커맨드(옵트인, site_logo 보호) + 사이트 로고 교체 시 구 로고 재편입 차단(S6) + DB 백업 미구현 501 정직화(B3) + 플러그인 관리자 메뉴 설치·업데이트 자동 동기화(F1·F7) - 동반: 플러그인 설정 검증 오류 필드명 라벨화(F3), Toggle 노드 type 정정 수평 전개(marketing 1.0.2 bump·gdpr·ecommerce), ja 언어팩 4종, API 문서, hooks.md, 시나리오 매니페스트 8종, Playwright E2E 4종
204 lines
11 KiB
PHP
204 lines
11 KiB
PHP
<?php
|
|
|
|
return [
|
|
// Settings related messages
|
|
'fetch_success' => 'Settings retrieved successfully.',
|
|
'fetch_failed' => 'Failed to retrieve settings.',
|
|
'save_success' => 'Settings saved successfully.',
|
|
'save_failed' => 'Failed to save settings.',
|
|
'update_success' => 'Settings updated successfully.',
|
|
'update_failed' => 'Failed to update settings.',
|
|
'delete_success' => 'Settings deleted successfully.',
|
|
'delete_failed' => 'Failed to delete settings.',
|
|
'save_error' => 'An error occurred while saving settings.',
|
|
'update_error' => 'An error occurred while updating settings.',
|
|
'cache_clear_success' => 'Cache cleared successfully.',
|
|
'cache_clear_failed' => 'Failed to clear cache.',
|
|
'cache_clear_error' => 'An error occurred while clearing cache.',
|
|
'optimize_success' => 'System optimized successfully.',
|
|
'optimize_failed' => 'Failed to optimize system.',
|
|
'optimize_error' => 'An error occurred while optimizing system.',
|
|
'backup_success' => 'Database backup started successfully.',
|
|
'backup_failed' => 'Failed to start database backup.',
|
|
'backup_error' => 'An error occurred while backing up database.',
|
|
'database_backup_unavailable' => 'Database backup is not available yet. Use the settings backup feature to back up your settings.',
|
|
'backup_path_required' => 'Please enter a backup path.',
|
|
'restore_success' => 'Settings restored successfully.',
|
|
'restore_failed' => 'Failed to restore settings.',
|
|
'restore_error' => 'An error occurred while restoring settings.',
|
|
'save_individual_failed' => 'Settings save failed: :error',
|
|
|
|
// App key related messages
|
|
'invalid_password' => 'Password does not match.',
|
|
'password_required' => 'Please enter your password.',
|
|
'app_key_regenerated' => 'Application key has been successfully regenerated.',
|
|
'app_key_regenerate_failed' => 'Failed to regenerate application key.',
|
|
'app_key_regenerate_warning' => 'Regenerating the key will invalidate all sessions. Do you want to continue?',
|
|
|
|
// System info related
|
|
'seconds' => 's',
|
|
|
|
// Driver labels (resolved per active language pack by DriverRegistryService)
|
|
'drivers' => [
|
|
'storage' => [
|
|
'local' => 'Local',
|
|
's3' => 'Amazon S3',
|
|
],
|
|
'public_asset' => [
|
|
'none' => 'Disabled (streaming)',
|
|
'public' => 'Public disk',
|
|
's3' => 'Amazon S3',
|
|
],
|
|
'cache' => [
|
|
'file' => 'File',
|
|
'redis' => 'Redis',
|
|
],
|
|
'session' => [
|
|
'file' => 'File',
|
|
'database' => 'Database',
|
|
'redis' => 'Redis',
|
|
],
|
|
'queue' => [
|
|
'sync' => 'Sync',
|
|
'database' => 'Database',
|
|
'redis' => 'Redis',
|
|
],
|
|
'log' => [
|
|
'single' => 'Single File',
|
|
'daily' => 'Daily File',
|
|
],
|
|
'websocket' => [
|
|
'reverb' => 'Laravel Reverb',
|
|
],
|
|
'mail' => [
|
|
'smtp' => 'SMTP',
|
|
'mailgun' => 'Mailgun',
|
|
'ses' => 'SES (Amazon)',
|
|
],
|
|
'search' => [
|
|
'mysql-fulltext' => 'MySQL Full-Text',
|
|
],
|
|
],
|
|
|
|
// Driver connection test messages
|
|
'driver_test_success' => 'All driver connection tests passed.',
|
|
'driver_test_partial' => 'Some driver connection tests failed.',
|
|
'driver_test_error' => 'An error occurred while testing driver connections.',
|
|
'unknown_driver' => 'Unknown driver.',
|
|
|
|
// S3 test messages
|
|
's3_test_success' => 'Successfully connected to S3 bucket.',
|
|
's3_test_failed' => 'Failed to connect to S3 bucket.',
|
|
's3_missing_config' => 'S3 configuration is missing. (bucket, region, access key, secret key)',
|
|
's3_sdk_missing' => 'AWS SDK is not installed.',
|
|
's3_adapter_missing' => 'S3 storage adapter (league/flysystem-aws-s3-v3) is not installed.',
|
|
's3_bucket_not_found' => 'S3 bucket not found.',
|
|
's3_access_denied' => 'Access to S3 bucket was denied.',
|
|
's3_invalid_credentials' => 'S3 credentials are invalid.',
|
|
|
|
// Redis test messages
|
|
'redis_test_success' => 'Successfully connected to Redis server.',
|
|
'redis_test_failed' => 'Failed to connect to Redis server.',
|
|
'redis_extension_missing' => 'Redis PHP extension is not installed.',
|
|
'redis_connection_failed' => 'Could not connect to Redis server.',
|
|
'redis_auth_failed' => 'Redis authentication failed.',
|
|
'redis_ping_failed' => 'No response from Redis PING.',
|
|
|
|
// Memcached test messages
|
|
'memcached_test_success' => 'Successfully connected to Memcached server.',
|
|
'memcached_test_failed' => 'Failed to connect to Memcached server.',
|
|
'memcached_extension_missing' => 'Memcached PHP extension is not installed.',
|
|
'memcached_connection_failed' => 'Could not connect to Memcached server.',
|
|
|
|
// Websocket test messages
|
|
'websocket_test_success' => 'Successfully connected to Websocket server.',
|
|
'websocket_test_failed' => 'Failed to connect to Websocket server.',
|
|
'websocket_server_test_failed' => 'Failed to connect to the Websocket server-side (backend broadcast) endpoint. The client endpoint is reachable.',
|
|
'driver_unusable_s3_adapter' => 'S3 storage adapter (league/flysystem-aws-s3-v3) is not installed.',
|
|
'driver_unusable_redis_client' => 'Neither the phpredis extension nor the predis library is available.',
|
|
'driver_unusable_memcached_extension' => 'The memcached PHP extension is not installed.',
|
|
'websocket_invalid_host' => 'The Websocket host setting is invalid. Enter the address only — credentials (@) and protocols other than http/https are not allowed.',
|
|
'websocket_connection_refused' => 'Could not connect to Websocket server. Please check if the server is running.',
|
|
|
|
// Test mail related messages
|
|
'invalid_email' => 'Invalid email address.',
|
|
'test_mail_subject' => ':app_name Test Mail',
|
|
'test_mail_body' => 'This is a test email from Gnuboard7. If you received this email, your mail settings are configured correctly.',
|
|
'test_mail_sent' => 'Test email sent successfully.',
|
|
'test_mail_failed' => 'Failed to send test email.',
|
|
'test_mail_error' => 'An error occurred while sending the test email.',
|
|
|
|
// Core update related messages
|
|
'core_update' => [
|
|
'check_success' => 'Update check completed.',
|
|
'check_failed' => 'Update check failed.',
|
|
'update_available' => 'A new update is available.',
|
|
'no_update' => 'You are on the latest version.',
|
|
'maintenance_mode_active' => 'System is under maintenance. Please try again later.',
|
|
'invalid_github_url' => 'Invalid GitHub repository URL.',
|
|
'download_failed' => 'Failed to download version :version.',
|
|
'zip_extract_failed' => 'Failed to extract ZIP file.',
|
|
'invalid_package' => 'Downloaded package is invalid.',
|
|
'invalid_package_not_g7' => 'The specified directory is not a Gnuboard7 project. config/app.php file with version setting is required.',
|
|
'composer_failed' => 'composer install failed.',
|
|
'pending_path_create_failed' => 'Failed to create pending directory (:path): :error',
|
|
'pending_path_not_writable' => 'Pending directory (:path) is not writable.',
|
|
'downloading' => 'Downloading update...',
|
|
'extracting' => 'Extracting...',
|
|
'validating' => 'Validating package...',
|
|
'running_composer' => 'Running composer install...',
|
|
'step_check' => 'Checking for updates...',
|
|
'step_validate_pending' => 'Validating environment...',
|
|
'step_maintenance' => 'Enabling maintenance mode...',
|
|
'step_download' => 'Downloading...',
|
|
'step_backup' => 'Creating backup...',
|
|
'step_apply' => 'Applying files...',
|
|
'step_composer' => 'Running composer install...',
|
|
'step_migration' => 'Running migrations...',
|
|
'step_upgrade' => 'Running upgrade steps...',
|
|
'step_composer_prod' => 'Running composer install in production directory...',
|
|
'step_cleanup' => 'Cleaning up...',
|
|
|
|
// File apply mode summary (Step 7)
|
|
'apply_mode_incremental' => 'File apply: only files actually changed by the core were applied (:added new, :changed changed). All other files were left untouched as-is.',
|
|
'apply_mode_incremental_prune_hint' => 'To also remove files deleted in the new version, re-run with the `--prune` option or use `php artisan hotfix:rollback-stale-files --prune`.',
|
|
'apply_mode_prune' => 'File apply: full overwrite plus cleanup of removed files was performed (--prune).',
|
|
'apply_mode_fallback' => 'File apply: no backup available, so incremental apply was skipped and a full overwrite was performed. To preserve custom files, keep the backup enabled on future updates.',
|
|
|
|
// GitHub API error messages
|
|
'github_url_not_configured' => 'GitHub repository URL is not configured.',
|
|
'github_api_failed' => 'Unable to connect to GitHub API.',
|
|
'github_token_required' => 'This is a private repository. Please configure a GitHub access token.',
|
|
'github_token_invalid' => 'GitHub access token is invalid or has insufficient permissions. (HTTP :status — :message)',
|
|
'github_repo_not_found' => 'GitHub repository not found. (HTTP :status — :message)',
|
|
'github_repo_not_found_no_token' => 'GitHub repository not found. If the repository is private, please configure an access token. (HTTP :status — :message)',
|
|
'github_api_error' => 'GitHub API error occurred. (HTTP :status — :message)',
|
|
'no_releases_found' => 'No releases found in the GitHub repository. (HTTP :status — :message)',
|
|
|
|
// Log messages
|
|
'log_api_call_failed' => 'Core update: GitHub API call failed',
|
|
'log_auth_failed' => 'Core update: GitHub authentication failed',
|
|
'log_not_found' => 'Core update: GitHub repository/release not found',
|
|
'log_unexpected_status' => 'Core update: Unexpected HTTP status code',
|
|
'log_version_check_error' => 'Core update: Error checking latest version',
|
|
|
|
'unknown_error' => 'An unknown error occurred.',
|
|
|
|
// System requirements
|
|
'system_requirements_failed' => 'System requirements are not met:',
|
|
'no_extract_method_available' => 'No archive extraction method available. Requires one of: PHP zip extension (ZipArchive) or unzip command (Linux). You can also use the --source option for manual update.',
|
|
'manual_update_guide' => 'Manual update: Download the release ZIP from GitHub, extract it, then run: php artisan core:update --source=/path/to/extracted',
|
|
|
|
// Extraction fallback chain
|
|
'archive_url_not_found' => ':type archive URL not found. Trying next method.',
|
|
'extracting_with' => 'Extracting with :method...',
|
|
'extract_empty' => 'Extracted directory is empty.',
|
|
'extract_fallback' => ':method failed: :error — Trying next method.',
|
|
'all_extract_methods_failed' => 'All archive extraction methods failed. Try manual update with --source option.',
|
|
'unzip_command_failed' => 'unzip command failed (exit code: :code). :output',
|
|
'zip_file_not_found' => 'Specified ZIP file not found: :path',
|
|
'source_vendor_missing' => 'No vendor directory in source. composer install may not have been executed.',
|
|
'composer_failed_with_output' => 'composer install failed.:output',
|
|
],
|
|
];
|