342 lines
22 KiB
PHP
342 lines
22 KiB
PHP
<?php
|
|
|
|
return [
|
|
'title' => '템플릿 관리',
|
|
|
|
'errors' => [
|
|
'force_update_no_source' => ':template 을(를) 강제 업데이트할 소스를 찾을 수 없습니다. 번들 및 GitHub URL이 모두 없습니다.',
|
|
'downgrade_blocked' => '다운그레이드가 차단되었습니다 (:from → :to). 의도적 다운그레이드는 --force 옵션을 사용하세요.',
|
|
'not_found' => '템플릿을 찾을 수 없습니다. (:template)',
|
|
'not_installed' => '템플릿이 설치되지 않았습니다. (:template)',
|
|
'already_active' => '이미 활성화된 템플릿입니다.',
|
|
'invalid_format' => '잘못된 템플릿 형식입니다.',
|
|
'activation_failed' => '템플릿 활성화에 실패했습니다: :error',
|
|
'file_copy_failed' => '파일 복사에 실패했습니다: :error',
|
|
'dist_directory_not_found' => '템플릿 빌드 결과물(dist)을 찾을 수 없습니다.',
|
|
'invalid_directory_name' => '잘못된 디렉토리명입니다. vendor-name 형식을 사용하세요.',
|
|
'dependency_not_met' => '필수 의존성 :dependency (:type)이 충족되지 않았습니다.',
|
|
'version_mismatch' => ':dependency 버전이 맞지 않습니다. (필요: :required, 설치됨: :installed)',
|
|
'deactivation_failed' => '템플릿 비활성화에 실패했습니다: :error',
|
|
'installation_failed' => '템플릿 설치에 실패했습니다: :error',
|
|
'uninstallation_failed' => '템플릿 제거에 실패했습니다: :error',
|
|
'template_json_not_found' => 'template.json 파일을 찾을 수 없습니다.',
|
|
'template_json_invalid' => 'template.json 파일이 유효하지 않습니다.',
|
|
'missing_required_fields' => '필수 필드가 누락되었습니다.',
|
|
'invalid_type' => '잘못된 템플릿 타입입니다. (admin 또는 user만 허용)',
|
|
'copy_rollback_failed' => '파일 복사 롤백에 실패했습니다: :error',
|
|
'invalid_layout_json' => '레이아웃 JSON 파일이 유효하지 않습니다.',
|
|
'missing_layout_name' => '레이아웃 JSON에 layout_name 필드가 누락되었습니다.',
|
|
'layout_registration_failed' => '레이아웃 등록에 실패했습니다: :error',
|
|
'layout_validation_failed' => ':template 템플릿의 레이아웃 검증에 실패했습니다. (:count개 오류)',
|
|
'layout_validation_json_error' => ':file - JSON 파싱 오류: :error',
|
|
'layout_validation_missing_name' => ':file - layout_name 필드가 누락되었습니다.',
|
|
'layout_validation_partial_error' => ':file - Partial 처리 오류 (:partial): :error',
|
|
'override_layout_registration_failed' => '오버라이드 레이아웃 등록에 실패했습니다: :error',
|
|
'file_not_found' => '파일을 찾을 수 없습니다.',
|
|
'file_type_not_allowed' => '허용되지 않은 파일 타입입니다.',
|
|
'components_not_found' => '컴포넌트 정의 파일을 찾을 수 없습니다.',
|
|
'locale_not_supported' => ':template 템플릿은 :locale 언어를 지원하지 않습니다.',
|
|
'language_file_not_found' => ':locale 언어 파일을 찾을 수 없습니다.',
|
|
'invalid_json' => '유효하지 않은 JSON 형식입니다.',
|
|
'invalid_cache_data' => '캐시 데이터가 손상되었습니다. 다시 시도해주세요.',
|
|
'unknown_error' => '알 수 없는 오류가 발생했습니다.',
|
|
'zip_open_failed' => 'ZIP 파일을 열 수 없습니다: :error',
|
|
'identifier_missing' => '템플릿 식별자가 누락되었습니다.',
|
|
'already_installed' => '이미 설치된 템플릿입니다.',
|
|
'install_failed' => '템플릿 설치에 실패했습니다: :error',
|
|
'github_url_invalid' => '유효하지 않은 GitHub URL 형식입니다.',
|
|
'github_download_failed' => 'GitHub에서 다운로드에 실패했습니다: :error',
|
|
'github_repo_not_found' => 'GitHub 저장소를 찾을 수 없습니다.',
|
|
'refresh_layouts_failed' => '레이아웃 갱신에 실패했습니다: :error',
|
|
'routes_not_found' => '라우트 파일을 찾을 수 없습니다.',
|
|
|
|
// 템플릿 엔진 에러 메시지
|
|
'no_active_template' => '활성화된 템플릿이 없습니다',
|
|
'layout_load_failed' => '레이아웃을 불러오는데 실패했습니다: :error',
|
|
'component_load_failed' => '컴포넌트를 불러오는데 실패했습니다: :error',
|
|
'translation_load_failed' => '다국어 파일을 불러오는데 실패했습니다: :error',
|
|
'template_init_error' => '템플릿 엔진을 초기화하는 중 오류가 발생했습니다',
|
|
'contact_admin_for_template' => '시스템 관리자에게 문의하여 템플릿을 활성화해주세요.',
|
|
|
|
// 에러 레이아웃 검증 메시지
|
|
'missing_error_config' => '템플릿에 error_config 섹션이 없습니다. 에러 페이지 레이아웃 설정이 필요합니다.',
|
|
'missing_error_layout' => ':code 에러 레이아웃이 정의되지 않았습니다.',
|
|
'error_layout_not_found' => ':code 에러 레이아웃 파일을 찾을 수 없습니다: :path',
|
|
|
|
// 템플릿 상태 에러
|
|
'template_not_found' => '템플릿을 찾을 수 없습니다: :identifier',
|
|
'template_not_active' => '템플릿이 활성화되어 있지 않습니다: :identifier',
|
|
|
|
// 의존성 관련 에러
|
|
'dependencies_not_met' => '템플릿의 필수 의존성이 충족되지 않았습니다.',
|
|
'service_unavailable' => '서비스를 일시적으로 사용할 수 없습니다.',
|
|
'contact_admin' => '관리자에게 문의하세요.',
|
|
|
|
// 업데이트 관련 에러
|
|
'operation_in_progress' => '템플릿 ":name"이(가) 현재 :status 상태입니다. 작업이 완료될 때까지 기다려 주세요.',
|
|
'github_api_failed' => 'GitHub API 호출에 실패했습니다: :error',
|
|
'invalid_github_url' => '유효하지 않은 GitHub URL입니다.',
|
|
'zip_url_not_found' => 'ZIP 다운로드 URL을 찾을 수 없습니다.',
|
|
'download_failed' => '템플릿 ":template" :version 버전 다운로드에 실패했습니다: :error',
|
|
'zip_extract_failed' => 'ZIP 압축 해제에 실패했습니다: :error',
|
|
'extracted_dir_not_found' => '압축 해제된 디렉토리를 찾을 수 없습니다.',
|
|
'reload_failed' => '템플릿 다시 로드에 실패했습니다: :error',
|
|
'delete_directory_failed' => '템플릿 디렉토리 삭제에 실패했습니다: :error',
|
|
'update_failed' => '템플릿 ":template" 업데이트에 실패했습니다: :error',
|
|
'invalid_layout_strategy' => '유효하지 않은 레이아웃 전략입니다. (overwrite 또는 keep만 허용)',
|
|
],
|
|
|
|
'messages' => [
|
|
'activated' => '템플릿이 활성화되었습니다.',
|
|
'deactivated' => '템플릿이 비활성화되었습니다.',
|
|
'installed' => '템플릿이 설치되었습니다.',
|
|
'uninstalled' => '템플릿이 제거되었습니다.',
|
|
'previous_template_deactivated' => '이전 활성 템플릿이 비활성화되었습니다.',
|
|
'files_copied' => '템플릿 파일이 복사되었습니다.',
|
|
'files_removed' => '템플릿 파일이 제거되었습니다.',
|
|
'routes_retrieved' => '템플릿 라우트 정보를 조회했습니다.',
|
|
'routes_not_found' => '템플릿 라우트를 찾을 수 없습니다.',
|
|
'layout_served' => '레이아웃이 제공되었습니다.',
|
|
'config_retrieved' => '템플릿 설정 정보를 조회했습니다.',
|
|
'template_activated' => '템플릿이 활성화되었습니다.',
|
|
'template_deactivated' => '템플릿이 비활성화되었습니다.',
|
|
'template_uninstalled' => '템플릿이 제거되었습니다.',
|
|
'editor_spec_empty' => '편집기 스펙이 비어 있습니다.',
|
|
'editor_spec_retrieved' => '편집기 스펙을 조회했습니다.',
|
|
'editor_assets_retrieved' => '편집기 자산 정보를 조회했습니다.',
|
|
'editor_assets_missing' => '편집기 자산 매니페스트가 없습니다 (빌드되지 않음).',
|
|
'language_retrieved' => '다국어 데이터를 조회했습니다.',
|
|
'language_empty' => '다국어 데이터가 비어 있습니다.',
|
|
],
|
|
|
|
'not_found' => '템플릿 :template을(를) 찾을 수 없습니다.',
|
|
'layout_not_found' => '레이아웃을 찾을 수 없습니다.',
|
|
|
|
'info' => [
|
|
'scanning' => '템플릿 디렉토리를 스캔하는 중...',
|
|
'loading' => '템플릿을 로드하는 중...',
|
|
'validating_dependencies' => '의존성을 검증하는 중...',
|
|
'copying_files' => '파일을 복사하는 중...',
|
|
'removing_files' => '파일을 제거하는 중...',
|
|
'template_found' => '템플릿을 발견했습니다.',
|
|
'no_templates_found' => '템플릿을 발견하지 못했습니다.',
|
|
'public_directory_cleaned' => 'public 디렉토리가 정리되었습니다.',
|
|
'no_layouts_directory' => '레이아웃 디렉토리가 존재하지 않습니다.',
|
|
'no_layout_files' => '레이아웃 JSON 파일이 존재하지 않습니다.',
|
|
'layout_registered' => '레이아웃이 등록되었습니다.',
|
|
'layouts_deleted' => '레이아웃이 삭제되었습니다.',
|
|
'cache_cleared' => '템플릿 캐시가 삭제되었습니다.',
|
|
'cache_warmed' => '템플릿 캐시가 생성되었습니다.',
|
|
'no_overrides_directory' => '오버라이드 디렉토리가 존재하지 않습니다.',
|
|
'no_override_modules' => '오버라이드할 모듈 디렉토리가 존재하지 않습니다.',
|
|
'no_override_layouts_for_module' => '해당 모듈에 대한 오버라이드 레이아웃이 없습니다.',
|
|
'override_layout_registered' => '오버라이드 레이아웃이 등록되었습니다.',
|
|
'override_layouts_registered' => '오버라이드 레이아웃이 등록되었습니다.',
|
|
'override_layouts_cache_invalidated' => '오버라이드 레이아웃 캐시가 무효화되었습니다.',
|
|
'override_layouts_cache_invalidation_error' => '오버라이드 레이아웃 캐시 무효화 중 오류가 발생했습니다.',
|
|
],
|
|
|
|
'status' => [
|
|
'active' => '활성',
|
|
'inactive' => '비활성',
|
|
'installing' => '설치 중',
|
|
'uninstalling' => '제거 중',
|
|
'updating' => '업데이트 중',
|
|
],
|
|
|
|
'types' => [
|
|
'admin' => '관리자용',
|
|
'user' => '사용자용',
|
|
],
|
|
|
|
'dependencies' => [
|
|
'section_title' => '의존성',
|
|
'modules' => '필수 모듈',
|
|
'plugins' => '필수 플러그인',
|
|
'status_met' => '충족',
|
|
'status_unmet' => '미충족',
|
|
'no_dependencies' => '의존성 없음',
|
|
'version_required' => '필요 버전: :version',
|
|
'version_installed' => '설치된 버전: :version',
|
|
'not_installed' => '미설치',
|
|
'not_active' => '비활성',
|
|
],
|
|
|
|
'validation' => [
|
|
'name_required' => '템플릿 이름은 필수입니다.',
|
|
'name_string' => '템플릿 이름은 문자열이어야 합니다.',
|
|
'name_max' => '템플릿 이름은 255자를 초과할 수 없습니다.',
|
|
'file_required' => '파일은 필수입니다.',
|
|
'file_invalid' => '유효한 파일이 아닙니다.',
|
|
'file_must_be_zip' => 'ZIP 파일만 업로드 가능합니다.',
|
|
'file_max_size' => '파일 크기는 :sizeMB를 초과할 수 없습니다.',
|
|
'github_url_required' => 'GitHub URL은 필수입니다.',
|
|
'github_url_invalid' => 'GitHub URL이 올바르지 않습니다.',
|
|
'github_url_format' => 'GitHub URL 형식이 올바르지 않습니다. (예: https://github.com/owner/repo)',
|
|
|
|
// 목록 조회 검증
|
|
'type_in' => '템플릿 타입은 user 또는 admin만 허용됩니다.',
|
|
'search_max' => '검색어는 255자를 초과할 수 없습니다.',
|
|
'filters_max' => '검색 필터는 최대 10개까지 허용됩니다.',
|
|
'filter_field_required' => '필터 필드는 필수입니다.',
|
|
'filter_field_invalid' => '허용되지 않은 필터 필드입니다.',
|
|
'filter_value_required' => '필터 값은 필수입니다.',
|
|
'filter_value_max' => '필터 값은 255자를 초과할 수 없습니다.',
|
|
'filter_operator_invalid' => '허용되지 않은 필터 연산자입니다. (like, eq, starts_with, ends_with만 허용)',
|
|
'status_invalid' => '허용되지 않은 상태 값입니다. (installed, not_installed, active, inactive만 허용)',
|
|
'per_page_min' => '페이지당 항목 수는 최소 1개 이상이어야 합니다.',
|
|
'per_page_max' => '페이지당 항목 수는 최대 100개까지 허용됩니다.',
|
|
'page_min' => '페이지 번호는 최소 1 이상이어야 합니다.',
|
|
],
|
|
|
|
'install_success' => '템플릿이 성공적으로 설치되었습니다.',
|
|
'install_failed' => '템플릿 설치에 실패했습니다: :error',
|
|
'preview_success' => 'manifest 미리보기를 완료했습니다.',
|
|
'preview_failed' => 'manifest 미리보기에 실패했습니다: :error',
|
|
'uninstall_success' => '템플릿이 성공적으로 제거되었습니다.',
|
|
'uninstall_failed' => '템플릿 제거에 실패했습니다: :error',
|
|
'activate_success' => '템플릿이 활성화되었습니다.',
|
|
'activate_failed' => '템플릿 활성화에 실패했습니다: :error',
|
|
'activate_warning' => '템플릿 활성화를 위해 필요한 의존성이 충족되지 않았습니다.',
|
|
|
|
// 경고 메시지
|
|
'warnings' => [
|
|
'missing_dependencies' => '이 템플릿을 활성화하려면 다음 의존성이 필요합니다.',
|
|
],
|
|
|
|
'deactivate_success' => '템플릿이 비활성화되었습니다.',
|
|
'deactivate_failed' => '템플릿 비활성화에 실패했습니다: :error',
|
|
'fetch_success' => '템플릿 정보를 성공적으로 가져왔습니다.',
|
|
'license_not_found' => '템플릿 라이선스 파일을 찾을 수 없습니다.',
|
|
'refresh_layouts_success' => '템플릿 레이아웃이 성공적으로 갱신되었습니다.',
|
|
'refresh_layouts_failed' => '템플릿 레이아웃 갱신에 실패했습니다: :error',
|
|
|
|
// 업데이트 관련 메시지
|
|
'update_success' => '템플릿 ":template"이(가) :version 버전으로 업데이트되었습니다.',
|
|
'update_failed' => '템플릿 업데이트에 실패했습니다: :error',
|
|
'update_hook_failed' => '템플릿 업데이트 훅 실행에 실패했습니다: :error',
|
|
'no_update_available' => '업데이트할 내용이 없습니다.',
|
|
'check_updates_success' => '업데이트 확인이 완료되었습니다.',
|
|
'check_updates_failed' => '업데이트 확인에 실패했습니다: :error',
|
|
'not_installed' => '템플릿 ":template"이(가) 설치되지 않았습니다.',
|
|
'check_modified_layouts_success' => '수정된 레이아웃 확인이 완료되었습니다.',
|
|
'check_modified_layouts_failed' => '수정된 레이아웃 확인에 실패했습니다: :error',
|
|
|
|
// _pending 관련 메시지
|
|
'pending_not_found' => '설치 대기 목록에서 템플릿 ":template"을(를) 찾을 수 없습니다.',
|
|
'already_exists' => '템플릿 ":template"이(가) 이미 존재합니다.',
|
|
'move_failed' => '템플릿 ":template" 이동에 실패했습니다: :error',
|
|
|
|
'commands' => [
|
|
'install' => [
|
|
'success' => '템플릿 ":template" 설치 완료',
|
|
'already_installed' => '템플릿 ":template"이(가) 이미 설치되어 있습니다.',
|
|
'force_reinstall' => '템플릿 ":template" 을(를) 강제 재설치합니다 (활성 디렉토리 덮어쓰기)...',
|
|
'layouts_created' => '레이아웃 :count개 생성됨',
|
|
'type' => '타입: :type',
|
|
'version' => '버전: :version',
|
|
'directory_not_found' => '템플릿 디렉토리를 찾을 수 없습니다: :path',
|
|
'config_not_found' => 'template.json 파일을 찾을 수 없습니다',
|
|
],
|
|
'activate' => [
|
|
'success' => '템플릿 ":template" 활성화 완료',
|
|
'not_installed' => '템플릿 ":template"이(가) 설치되지 않았습니다.',
|
|
'deactivated_previous' => '기존 :type 템플릿 ":previous" 비활성화',
|
|
],
|
|
'deactivate' => [
|
|
'success' => '템플릿 ":template" 비활성화 완료',
|
|
'not_active' => '템플릿 ":template"이(가) 활성화되지 않았습니다.',
|
|
'no_active_warning' => '현재 활성화된 :type 템플릿이 없습니다.',
|
|
],
|
|
'uninstall' => [
|
|
'success' => '템플릿 ":template" 삭제 완료',
|
|
'confirm_prompt' => '템플릿 ":template"을(를) 삭제하시겠습니까?',
|
|
'confirm_details' => [
|
|
'layouts' => '- 레이아웃 :count개가 삭제됩니다',
|
|
'versions' => '- user 타입 템플릿의 경우 버전 히스토리도 삭제됩니다',
|
|
],
|
|
'confirm_question' => '계속하시겠습니까?',
|
|
'layouts_deleted' => '레이아웃 :count개 삭제됨',
|
|
'versions_deleted' => '버전 히스토리 :count개 삭제됨',
|
|
'aborted' => '삭제가 취소되었습니다.',
|
|
],
|
|
'list' => [
|
|
'no_templates' => '등록된 템플릿이 없습니다.',
|
|
'invalid_type' => '잘못된 타입입니다. admin 또는 user만 사용 가능합니다.',
|
|
'invalid_status' => '잘못된 상태입니다. installed, uninstalled, active, inactive만 사용 가능합니다.',
|
|
'headers' => [
|
|
'identifier' => '식별자',
|
|
'name' => '이름',
|
|
'type' => '타입',
|
|
'version' => '버전',
|
|
'status' => '상태',
|
|
],
|
|
'status' => [
|
|
'uninstalled' => '미설치',
|
|
],
|
|
'summary' => '총 :total개 템플릿 (설치됨: :installed개, 활성: :active개)',
|
|
],
|
|
'cache_clear' => [
|
|
'clearing_single' => '템플릿 ":template" 캐시 삭제 중...',
|
|
'clearing_all' => '모든 템플릿 캐시 삭제 중...',
|
|
'success_single' => '템플릿 ":template" 캐시 :count개 삭제 완료',
|
|
'success_all' => '전체 템플릿 캐시 :count개 삭제 완료',
|
|
],
|
|
'check_updates' => [
|
|
'not_installed' => '템플릿 ":template"이(가) 설치되지 않았습니다.',
|
|
'no_installed' => '설치된 템플릿이 없습니다.',
|
|
'update_available' => '업데이트 가능',
|
|
'up_to_date' => '최신',
|
|
'headers' => [
|
|
'identifier' => '식별자',
|
|
'current_version' => '현재 버전',
|
|
'latest_version' => '최신 버전',
|
|
'source' => '소스',
|
|
'status' => '상태',
|
|
],
|
|
'summary' => '총 :total개 확인 (업데이트 가능: :updates개)',
|
|
'single_up_to_date' => '템플릿 ":template"은(는) 최신 버전입니다. (v:version)',
|
|
'single_update_available' => '템플릿 ":template" 업데이트 가능: v:current → v:latest (:source)',
|
|
],
|
|
'update' => [
|
|
'success' => '템플릿 ":template" 업데이트 완료',
|
|
'version_change' => 'v:from → v:to',
|
|
'no_update' => '템플릿 ":template"에 사용 가능한 업데이트가 없습니다.',
|
|
'not_installed' => '템플릿 ":template"이(가) 설치되지 않았습니다.',
|
|
'invalid_strategy' => '잘못된 레이아웃 전략입니다. overwrite 또는 keep만 사용 가능합니다.',
|
|
'current_version' => '현재 버전: :version',
|
|
'latest_version' => '최신 버전: :version',
|
|
'update_source' => '업데이트 소스: :source',
|
|
'layout_strategy' => '레이아웃 전략: :strategy',
|
|
'modified_layouts_warning' => '수정된 레이아웃 :count개가 덮어씌워집니다:',
|
|
'modified_layout_item' => ' - :name (수정일: :date)',
|
|
'confirm_question' => '업데이트를 진행하시겠습니까?',
|
|
'aborted' => '업데이트가 취소되었습니다.',
|
|
'backup_restored' => '백업에서 이전 버전이 복원되었습니다.',
|
|
'force_mode' => '강제 업데이트 모드: 버전 비교를 건너뛰고 재설치합니다.',
|
|
],
|
|
],
|
|
|
|
// 레이아웃 첨부 파일 (배경 이미지 등)
|
|
'layout_attachments' => [
|
|
'messages' => [
|
|
'uploaded' => '첨부 파일을 업로드했습니다.',
|
|
'listed' => '첨부 파일 목록을 조회했습니다.',
|
|
'deleted' => '첨부 파일을 삭제했습니다.',
|
|
],
|
|
'errors' => [
|
|
'upload_failed' => '첨부 파일 업로드에 실패했습니다.',
|
|
'delete_failed' => '첨부 파일 삭제에 실패했습니다.',
|
|
'not_found' => '첨부 파일을 찾을 수 없습니다.',
|
|
],
|
|
'validation' => [
|
|
'file_required' => '업로드할 파일을 선택해 주세요.',
|
|
'file_invalid' => '올바른 파일이 아닙니다.',
|
|
'file_image' => '이미지 파일만 업로드할 수 있습니다.',
|
|
'file_mimes' => '지원하는 이미지 형식이 아닙니다 (jpg, jpeg, png, gif, webp, svg).',
|
|
'file_max' => '파일 크기는 최대 :max MB까지 허용됩니다.',
|
|
'layout_name_max' => '레이아웃 이름은 최대 150자까지 허용됩니다.',
|
|
],
|
|
],
|
|
];
|