Files
Gnuboard7/modules/_bundled/sirsoft-ecommerce/src/lang/en/messages.php
T
HeuJung 55bc9399e6 fix(ecommerce): 배송비 구간 경계 포함 + 무게/부피 단위 환산
구간별 배송비의 종료값이 구간에 포함되지 않아 경계값이 무료배송으로
새고, 상품 옵션의 g/cm³ 저장값을 정책의 kg/L 로 환산하지 않아 금액이
1000배로 청구되던 문제를 수정한다.

- 구간 매칭을 종료값 오름차순 사다리로 교체 — 시작값은 표시 전용이
 되어 기존 저장 데이터의 두 형태 모두에서 정확히 계산된다
- 단위 환산을 배송비 계산 한 지점으로 모으고, 부피무게와 실무게를
 같은 kg 단위로 비교하도록 교정
- 계산이 조용히 0원이 되는 설정(구간 미등록·단위값/기준금액 누락·
 중간 구간 무제한·계산 API 폴백 0원)을 저장 시점에 차단하고,
 런타임 잔여 경로에는 경고 로그를 남긴다
- 연속성 규칙을 정책 타입별로 분리해 소수 구간(2.5kg) 저장을 허용
- 상품 옵션 무게/부피 응답 왕복, 주문 총 무게/부피 실값 기록
2026-08-12 23:43:08 +09:00

1267 lines
58 KiB
PHP

<?php
/**
* Ecommerce Module Messages
*
* Controller response messages
*/
return [
// Locale-specific suffix appended to names on copy (used by ProductNoticeTemplateRepository, etc.)
'copy_suffix' => ' (Copy)',
'categories' => [
'list_retrieved' => 'Category list retrieved successfully.',
'retrieved' => 'Category information retrieved successfully.',
'not_found' => 'Category not found.',
'created' => 'Category has been created.',
'updated' => 'Category has been updated.',
'deleted' => 'Category has been deleted.',
'has_products' => '(:count linked products)',
'fetch_success' => 'Category list retrieved successfully.',
'fetch_failed' => 'Failed to retrieve the category list.',
'status_changed' => 'Category status has been changed.',
'order_updated' => 'Category order has been changed.',
],
'settings' => [
'fetch_success' => 'Settings retrieved successfully.',
'fetch_failed' => 'Failed to retrieve settings.',
'save_success' => 'Settings have been saved.',
'save_failed' => 'Failed to save settings.',
'save_error' => 'An error occurred while saving settings.',
'update_success' => 'Settings have been updated.',
'update_failed' => 'Failed to update settings.',
'update_error' => 'An error occurred while updating settings.',
'cache_clear_success' => 'Settings cache has been cleared.',
'cache_clear_error' => 'An error occurred while clearing the settings cache.',
],
'payment' => [
'provider_not_found' => 'Payment method not found.',
'client_config_success' => 'Payment configuration retrieved successfully.',
],
'products' => [
'not_found' => 'Product not found.',
'created' => 'Product has been created.',
'updated' => 'Product has been updated.',
'deleted' => 'Product has been deleted.',
'fetch_success' => 'Product information retrieved successfully.',
'fetch_failed' => 'Failed to retrieve product information.',
'create_failed' => 'Failed to create product.',
'update_failed' => 'Failed to update product.',
'delete_failed' => 'Failed to delete product.',
'can_delete_checked' => 'Checked if product can be deleted.',
'can_delete_check_failed' => 'Failed to check if product can be deleted.',
'has_order_history' => 'This product has :count order(s) and cannot be deleted.',
'bulk_updated' => ':count products have been updated.',
'bulk_price_updated' => 'Prices of :count products have been updated.',
'bulk_stock_updated' => 'Stock of :count products have been updated.',
'bulk_price_update_failed' => 'Failed to update product prices.',
'bulk_stock_update_failed' => 'Failed to update product stock.',
'stock_mismatch' => 'Product stock (:product_stock) does not match option stock sum (:option_stock_sum).',
'bulk_update_success' => ':products_count products and :options_count options have been updated.',
'bulk_update_failed' => 'Bulk update failed.',
'code_generated' => 'Product code has been generated.',
'code_generation_failed' => 'Failed to generate product code.',
'logs_fetch_success' => 'Product activity logs retrieved successfully.',
'logs_fetch_failed' => 'Failed to retrieve product activity logs.',
'options_fetch_success' => 'Product options retrieved successfully.',
'options_fetch_failed' => 'Failed to retrieve product options.',
],
'presets' => [
'created' => 'Search preset has been saved.',
'updated' => 'Search preset has been updated.',
'deleted' => 'Search preset has been deleted.',
'name_exists' => 'A preset with the same name already exists.',
'not_owner' => 'You do not have permission to modify this preset.',
'fetch_success' => 'Search preset list retrieved successfully.',
],
'product_image' => [
'not_found' => 'Product image not found.',
],
'product_images' => [
'uploaded' => 'Image has been uploaded.',
'deleted' => 'Image has been deleted.',
'reordered' => 'Image order has been changed.',
'thumbnail_set' => 'Thumbnail has been set.',
'not_found' => 'Product image not found.',
],
'category_images' => [
'uploaded' => 'Image has been uploaded.',
'deleted' => 'Image has been deleted.',
'reordered' => 'Image order has been changed.',
'not_found' => 'Category image not found.',
],
'brands' => [
'list_retrieved' => 'Brand list retrieved successfully.',
'retrieved' => 'Brand information retrieved successfully.',
'not_found' => 'Brand not found.',
'created' => 'Brand has been created.',
'updated' => 'Brand has been updated.',
'deleted' => 'Brand has been deleted.',
'status_changed' => 'Brand status has been changed.',
'has_products' => '(:count linked products)',
],
'options' => [
'bulk_price_updated' => 'Prices of :count options have been updated.',
'bulk_price_update_failed' => 'Failed to update option prices.',
'bulk_stock_updated' => 'Stock of :count options have been updated.',
'bulk_stock_update_failed' => 'Failed to update option stock.',
'bulk_update_success' => ':count options have been updated.',
'bulk_update_failed' => 'Option bulk update failed.',
'has_order_history' => 'Options with order history cannot be deleted.',
'bulk_updated' => ':count option(s) have been updated.',
],
// Order (singular) - User-facing order messages
'order' => [
// 주문 생성
'created' => 'Your order has been placed.',
'create_failed' => 'Failed to create order.',
// 주문 상태
'status_changed' => 'Order status has been changed.',
'cancelled' => 'Order has been cancelled.',
'cancel_failed' => 'Failed to cancel order.',
// 자동 취소
'auto_cancel_expired_reason' => 'Automatically cancelled due to payment deadline expiration.',
// 결제
'payment_pending' => 'Awaiting payment.',
'payment_completed' => 'Payment has been completed.',
'payment_failed' => 'Payment has failed.',
// 재고
'stock_insufficient' => 'Insufficient stock.',
'stock_restored' => 'Stock has been restored.',
// 검증
'not_found' => 'Order not found.',
'invalid_status' => 'Invalid order status.',
'amount_mismatch' => 'Payment amount does not match.',
'estimate_refund_success' => 'Refund estimate retrieved successfully.',
'payment_cancelled' => 'Payment has been cancelled.',
'confirmed' => 'Purchase has been confirmed.',
'cannot_confirm' => 'Cannot confirm purchase in current status.',
],
// Coupon Messages
'coupons' => [
'list_retrieved' => 'Coupon list retrieved successfully.',
'retrieved' => 'Coupon information retrieved successfully.',
'not_found' => 'Coupon not found.',
'created' => 'Coupon has been created.',
'updated' => 'Coupon has been updated.',
'deleted' => 'Coupon has been deleted.',
'status_changed' => 'Issue status of :count coupons has been updated.',
'direct_issued' => 'Coupon issued to :issued member(s).',
'direct_issued_with_skip' => 'Coupon issued to :issued member(s). (:skipped excluded for not meeting issue conditions)',
'issue_cancelled' => 'Coupon issuance has been cancelled.',
'issues_retrieved' => 'Coupon issue history retrieved successfully.',
'has_issues' => '(:count issues)',
// Formatting (for Coupon model accessors)
'benefit_fixed_format' => ':amount off',
'benefit_rate_format' => ':rate% off',
'benefit_rate_with_max_format' => ':rate% off (max :max)',
'valid_days_format' => ':days days from issue date',
'issue_period_unlimited' => 'Always available',
'unlimited' => 'Unlimited',
],
// Order Messages
'orders' => [
'list_retrieved' => 'Order list retrieved successfully.',
'retrieved' => 'Order information retrieved successfully.',
'not_found' => 'Order not found.',
'updated' => 'Order has been updated.',
'deleted' => 'Order has been deleted.',
'bulk_updated' => ':count orders have been updated.',
'bulk_status_updated' => 'Status of :count orders has been updated.',
'bulk_shipping_updated' => 'Shipping information of :count orders has been updated.',
'bulk_update_failed' => 'Bulk update failed.',
'status_changed' => 'Order status has been changed to :status.',
'update_failed' => 'Failed to update the order.',
'delete_failed' => 'Failed to delete the order.',
'shipping_registered' => 'Shipping information has been registered.',
'export_success' => 'Excel file has been created.',
'export_failed' => 'Failed to create Excel file.',
'export_no_data' => 'No orders to export.',
'cannot_cancel' => 'This order cannot be cancelled.',
'cannot_refund' => 'This order cannot be refunded.',
'statistics_retrieved' => 'Order statistics retrieved successfully.',
'option_status_changed' => 'Status of :count options has been changed.',
'option_status_change_failed' => 'Failed to change option status.',
'shipping_address_updated' => 'Shipping address has been updated.',
'cannot_modify_address' => 'Shipping address can only be changed before shipping.',
'logs_fetch_success' => 'Order process logs retrieved successfully.',
'logs_fetch_failed' => 'Failed to retrieve order process logs.',
'log_status_changed' => 'Order status changed: :old → :new',
'log_updated' => 'Order information has been updated.',
'log_bulk_updated' => ':count orders have been bulk updated.',
'email_sent' => 'Email has been sent successfully.',
'email_send_failed' => 'Failed to send email.',
'email_subject' => '[:app_name] Regarding Order :order_number',
'fetch_success' => 'Order information retrieved successfully.',
'fetch_failed' => 'Failed to retrieve order information.',
'cancelled' => 'Order has been cancelled.',
'cancel_failed' => 'Failed to cancel order.',
'estimate_refund_success' => 'Refund estimate retrieved successfully.',
'estimate_refund_failed' => 'Failed to calculate refund estimate.',
'guest_password_reset_success' => 'Guest lookup password has been reset.',
'guest_password_reset_failed' => 'Failed to reset guest lookup password.',
'guest_password_reset_not_guest' => 'Only guest orders can have their lookup password reset.',
'deposit_confirmed' => 'Deposit confirmed and the order has been marked as paid.',
'deposit_confirm_failed' => 'Failed to confirm the deposit.',
'deposit_amount_mismatch' => 'The deposit amount does not match the amount due.',
'deposit_not_dbank' => 'Only bank transfer (manual deposit) orders can be confirmed.',
'deposit_not_pending' => 'Only unpaid orders can have their deposit confirmed.',
'payment_name_summary' => ':name and :count more',
'deposit' => [
'amount' => 'Deposit amount',
'depositor_name' => 'Depositor name',
],
],
// Product Label Messages
'labels' => [
'fetch_success' => 'Label list retrieved successfully.',
'retrieved' => 'Label information retrieved successfully.',
'not_found' => 'Label not found.',
'created' => 'Label has been created.',
'updated' => 'Label has been updated.',
'deleted' => 'Label has been deleted.',
'toggle_success' => 'Label status has been changed.',
// Controller message keys
'create_success' => 'Label has been created.',
'update_success' => 'Label has been updated.',
'delete_success' => 'Label has been deleted.',
'status_changed' => 'Label status has been changed.',
'update_failed' => 'Failed to update label.',
'delete_failed' => 'Failed to delete label.',
],
// Currency units (for price formatting)
'currency' => [
'suffix' => [
'KRW' => '',
'JPY' => '',
'CNY' => '',
'USD' => '',
'EUR' => '',
],
'prefix' => [
'KRW' => '₩',
'JPY' => '¥',
'CNY' => '元',
'USD' => '$',
'EUR' => '€',
],
],
// Cart Messages
'cart' => [
'list_retrieved' => 'Cart items retrieved successfully.',
'added' => 'Item has been added to cart.',
'bulk_added' => ':count items have been added to cart.',
'quantity_updated' => 'Quantity has been updated.',
'option_changed' => 'Option has been changed.',
'deleted' => 'Item has been removed from cart.',
'bulk_deleted' => ':count items have been removed.',
'merged' => ':count items have been merged to cart.',
'empty' => 'Cart is empty.',
'cart_key_issued' => 'Cart key has been issued.',
'item_count' => 'You have :count items in your cart.',
'key_issued' => 'Cart key has been issued.',
'key_issue_failed' => 'Failed to issue cart key.',
'fetched' => 'Cart items retrieved successfully.',
'fetch_failed' => 'Failed to retrieve cart items.',
'add_failed' => 'Failed to add item to cart.',
'reorder_added' => 'Items from your past order have been added to the cart.',
'reorder_failed' => 'Reorder failed.',
'reorder_option_not_found' => 'Product option no longer exists.',
'unknown_product' => 'Unknown product',
'update_failed' => 'Failed to update cart.',
'delete_failed' => 'Failed to delete cart item.',
'deleted_multiple' => ':deleted_count items have been removed.',
'deleted_all' => 'Cart has been cleared. :deleted_count items removed.',
'login_required' => 'Login is required.',
'cart_key_required' => 'Cart key is required.',
'invalid_cart_key' => 'Invalid cart key format.',
'merge_failed' => 'Failed to merge cart.',
'count_fetched' => 'Cart count retrieved successfully.',
// Order Summary UI i18n
'order_summary' => 'Order Summary',
'selected_items' => 'Selected Items',
'selected_count' => ':selected / :total items',
'product_amount' => 'Product Amount',
'taxable_amount' => 'Taxable Amount',
'tax_free_amount' => 'Tax-free Amount',
'discount_total' => 'Discount',
'coupon_discount' => 'Coupon Discount',
'code_discount' => 'Discount Code',
'order_discount' => 'Order Discount',
'shipping_fee' => 'Shipping',
'base_shipping' => 'Base Shipping',
'extra_shipping' => 'Extra Shipping',
'shipping_discount' => 'Shipping Discount',
'payment_amount' => 'Payment Amount',
'expected_mileage' => 'Mileage Earned',
'total' => 'Total',
'select_items_message' => 'Please select items',
'checkout' => 'Checkout',
'continue_shopping' => 'Continue Shopping',
],
// Checkout Messages
'checkout' => [
'created' => 'Checkout has been created.',
'fetched' => 'Checkout information retrieved successfully.',
'updated' => 'Checkout has been updated.',
'deleted' => 'Checkout has been deleted.',
'extended' => 'Checkout validity has been extended.',
'create_failed' => 'Failed to create checkout.',
'fetch_failed' => 'Failed to retrieve checkout.',
'update_failed' => 'Failed to update checkout.',
'delete_failed' => 'Failed to delete checkout.',
'extend_failed' => 'Failed to extend checkout validity.',
'free_shipping' => 'Free shipping',
],
// User Coupon Messages (마이페이지/체크아웃용)
'coupon' => [
'list_fetched' => 'Coupon list retrieved successfully.',
'list_fetch_failed' => 'Failed to retrieve coupon list.',
'available_fetched' => 'Available coupons retrieved successfully.',
'available_fetch_failed' => 'Failed to retrieve available coupons.',
'download_success' => 'Coupon downloaded successfully.',
'download_failed' => 'Failed to download coupon.',
'downloadable_fetched' => 'Downloadable coupons fetched.',
'downloadable_fetch_failed' => 'Failed to fetch downloadable coupons.',
'already_downloaded' => 'Coupon already downloaded.',
'download_limit_exceeded' => 'Download limit exceeded.',
'not_downloadable' => 'This coupon is not available for download.',
'quantity_exhausted' => 'Coupon quantity exhausted.',
'issue_period_expired' => 'Coupon issue period has ended.',
'validity_not_configured' => 'This coupon cannot be issued because its validity period is not configured. Please contact the administrator.',
// Coupon validation errors (DTO/ValidationError)
'expired' => 'This coupon has expired.',
'min_amount_not_met' => 'Minimum order amount not met.',
'not_combinable' => 'This coupon cannot be used with other coupons.',
'invalid_target' => 'This coupon is not applicable to the selected products.',
'already_used' => 'This coupon has already been used.',
'not_found' => 'Coupon not found.',
'per_user_limit_exceeded' => 'You have exceeded the usage limit for this coupon.',
],
// User Mileage Messages (마이페이지/체크아웃용)
'mileage' => [
'balance_fetched' => 'Mileage balance retrieved successfully.',
'balance_fetch_failed' => 'Failed to retrieve mileage balance.',
'max_usable_fetched' => 'Maximum usable mileage retrieved successfully.',
'max_usable_fetch_failed' => 'Failed to retrieve usable mileage.',
'list_retrieved' => 'Mileage history retrieved successfully.',
'transaction_created' => 'Mileage transaction processed successfully.',
'transaction_updated' => 'Mileage transaction updated successfully.',
'expiry_extended' => 'Mileage expiry extended successfully.',
'linked_retrieved' => 'Linked transactions retrieved successfully.',
'not_found' => 'Mileage transaction not found.',
'validation_failed' => 'Failed to process mileage.',
'not_earning' => 'Only earning transactions can be edited.',
'expiry_not_editable' => 'Expiry cannot be changed for already-expired or fully-used earnings.',
'expiry_before_earned' => 'Expiry cannot be earlier than the earned date.',
],
// Temporary Order Messages
'temp_order' => [
'created' => 'Order form has been created.',
'retrieved' => 'Order form retrieved successfully.',
'updated' => 'Order form has been updated.',
'deleted' => 'Order form has been deleted.',
'expired' => 'Order form has expired. Please try again.',
'extended' => 'Order form validity has been extended.',
'not_found' => 'Order form not found.',
'cleanup_completed' => ':count expired order forms have been cleaned up.',
],
// Product Notice Template Messages
'notice_templates' => [
'fetch_success' => 'Product notice template list retrieved successfully.',
'created' => 'Product notice template has been created.',
'updated' => 'Product notice template has been updated.',
'deleted' => 'Product notice template has been deleted.',
'copied' => 'Product notice template has been copied.',
'activated' => 'Product notice template has been activated.',
'deactivated' => 'Product notice template has been deactivated.',
'not_found' => 'Product notice template not found.',
],
// Common Info Messages
'common_infos' => [
'fetch_success' => 'Common info list retrieved successfully.',
'created' => 'Common info has been created.',
'updated' => 'Common info has been updated.',
'deleted' => 'Common info has been deleted.',
'not_found' => 'Common info not found.',
'activated' => 'Common info has been activated.',
'deactivated' => 'Common info has been deactivated.',
],
// Shipping Carrier Messages
'shipping_carriers' => [
'list_retrieved' => 'Shipping carrier list retrieved successfully.',
'retrieved' => 'Shipping carrier retrieved successfully.',
'not_found' => 'Shipping carrier not found.',
'created' => 'Shipping carrier has been created.',
'updated' => 'Shipping carrier has been updated.',
'deleted' => 'Shipping carrier has been deleted.',
'toggled' => 'Shipping carrier status has been changed.',
'status_changed' => 'Shipping carrier status has been changed.',
'delete_failed_in_use' => 'Cannot delete a carrier in use by orders. We recommend deactivating it instead.',
'type_domestic' => 'Domestic',
'type_international' => 'International',
// Shipping Settings Tab - Carrier Management Section
'section_title' => 'Carrier Management',
'add_button' => 'Add Carrier',
'empty' => 'No carriers registered.',
'columns' => [
'code' => 'Code',
'name' => 'Name',
'type' => 'Type',
'tracking_url' => 'Tracking URL',
'is_active' => 'Active',
'actions' => 'Actions',
],
'form' => [
'code' => 'Carrier Code',
'code_placeholder' => 'Lowercase letters, numbers, hyphens (e.g., cj, fedex)',
'name' => 'Carrier Name',
'type' => 'Type',
'type_domestic' => 'Domestic',
'type_international' => 'International',
'tracking_url' => 'Tracking URL',
'tracking_url_placeholder' => 'https://example.com/track?no={tracking_number}',
'tracking_url_help' => '{tracking_number} will be replaced with the tracking number.',
'is_active' => 'Active',
'sort_order' => 'Sort Order',
'cancel' => 'Cancel',
'save' => 'Save',
],
'confirm_delete' => 'Are you sure you want to delete this carrier?',
],
// Claim Reason Messages
'claim_reasons' => [
'list_retrieved' => 'Claim reason list retrieved successfully.',
'retrieved' => 'Claim reason retrieved successfully.',
'not_found' => 'Claim reason not found.',
'created' => 'Claim reason has been created.',
'updated' => 'Claim reason has been updated.',
'deleted' => 'Claim reason has been deleted.',
'toggled' => 'Claim reason status has been changed.',
'delete_failed_in_use' => 'Cannot delete a reason in use by order cancellations. We recommend deactivating it instead.',
],
// Shipping Policy Messages
'shipping_policy' => [
'list_retrieved' => 'Shipping policy list retrieved successfully.',
'retrieved' => 'Shipping policy retrieved successfully.',
'not_found' => 'Shipping policy not found.',
'created' => 'Shipping policy has been created.',
'updated' => 'Shipping policy has been updated.',
'deleted' => 'Shipping policy has been deleted.',
'toggled' => 'Shipping policy status has been changed.',
'copied' => 'Shipping policy has been copied.',
'bulk_deleted' => ':count shipping policies have been deleted.',
'active_list_retrieved' => 'Active shipping policy list retrieved successfully.',
'bulk_toggled' => ':count shipping policies status have been changed.',
'set_default_success' => 'Default shipping policy has been set.',
'api_test_done' => 'Calculation API test call completed.',
'fee_summary' => [
'free' => 'Free Shipping',
'fixed' => 'Shipping: :fee',
'conditional' => 'Under :threshold: :fee / Over :threshold: Free',
'api' => 'External API (Real-time calculation)',
'per_quantity' => ':fee per :unit items',
'per_weight' => ':fee per :unit kg',
'per_volume' => ':fee per :unit L',
'per_volume_weight' => ':fee per :unit kg',
'per_amount' => ':fee per :unit',
// Tier boundary units for range policies (derived from the charge policy, not stored data)
'range_unit' => [
'quantity' => ' items',
'weight' => ' kg',
'volume' => ' L',
],
],
'fee_details' => [
'base_fee' => 'Shipping Fee',
'free_threshold' => 'Free Shipping Threshold',
'range_header' => 'Tiered Shipping Fees',
'extra_fee' => 'Extra Fee (Remote Areas)',
],
],
// Admin UI i18n (for layouts)
'admin' => [
'order' => [
'title' => 'Order Management',
'description' => 'Manage customer orders.',
// Action buttons
'action' => [
'excel_download' => 'Download Excel',
'reset' => 'Reset',
'save_preset' => 'Save Preset',
'search' => 'Search',
'search_by_orderer' => 'Search by Orderer',
'view_detail' => 'View Detail',
'view_member' => 'View Member',
],
// Batch change
'batch' => [
'batch_change' => 'Batch Change',
'carrier' => 'Carrier',
'selected_count' => ':count selected',
'shipping_process' => 'Process Shipping',
'status_change' => 'Change Status',
'tracking_number' => 'Tracking Number',
],
// Bulk action
'bulk' => [
'apply' => 'Apply',
'apply_full' => 'Apply All',
'courier_placeholder' => 'Select Carrier',
'selected_count' => ':count selected',
'shipping_label' => 'Shipping Info',
'status_placeholder' => 'Select Status',
'success' => 'Bulk action completed successfully.',
'tracking_placeholder' => 'Enter Tracking Number',
],
// Claim status
'claim' => [
'exchange' => [
'approved' => 'Exchange Approved',
'completed' => 'Exchange Completed',
'hold' => 'Exchange Hold',
'payment_pending' => 'Additional Payment Pending',
'pickup_completed' => 'Pickup Completed',
'pickup_in_progress' => 'Pickup In Progress',
'rejected' => 'Exchange Rejected',
'requested' => 'Exchange Requested',
'reshipping' => 'Reshipping',
'reshipping_completed' => 'Reshipping Completed',
],
'refund' => [
'approved' => 'Refund Approved',
'completed' => 'Refund Completed',
'hold' => 'Refund Hold',
'rejected' => 'Refund Rejected',
'requested' => 'Refund Requested',
],
'return' => [
'approved' => 'Return Approved',
'completed' => 'Return Completed',
'hold' => 'Return Hold',
'payment_pending' => 'Additional Payment Pending',
'pickup_completed' => 'Pickup Completed',
'pickup_in_progress' => 'Pickup In Progress',
'rejected' => 'Return Rejected',
'requested' => 'Return Requested',
],
],
// Columns
'column' => [
'country' => 'Country',
'delivery_method' => 'Delivery Method',
'order_amount' => 'Order Amount',
'order_date' => 'Order Date',
'order_number' => 'Order Number',
'order_status' => 'Order Status',
'orderer' => 'Orderer',
'payment_method' => 'Payment Method',
'product' => 'Product Info',
],
// DataGrid
'datagrid' => [
'total_count' => 'Total :count',
],
// Detail page
'detail' => [
'title' => 'Order Detail',
'description' => 'View order details.',
'order_date' => 'Order Date',
'order_number' => 'Order Number',
'status' => 'Order Status',
// Claim history
'claim_history' => [
'title' => 'Claim History',
'items_count' => ':count items',
'per_page' => ':count per page',
'view_exchange_management' => 'View Exchange Management',
'view_refund_management' => 'View Refund Management',
'view_return_management' => 'View Return Management',
'tabs' => [
'exchange' => 'Exchange',
'refund' => 'Refund',
'return' => 'Return',
],
'columns' => [
'amount_info' => 'Amount Info',
'exchange_number' => 'Exchange No.',
'exchange_reason' => 'Exchange Reason',
'exchange_status' => 'Exchange Status',
'product_info' => 'Product Info',
'quantity' => 'Qty',
'refund_method' => 'Refund Method',
'refund_number' => 'Refund No.',
'refund_reason' => 'Refund Reason',
'refund_status' => 'Refund Status',
'request_date' => 'Request Date',
'return_number' => 'Return No.',
'return_reason' => 'Return Reason',
'return_status' => 'Return Status',
],
'amount' => [
'actual_price' => 'Actual Price',
'actual_refund' => 'Actual Refund',
'difference' => 'Difference',
'expected_refund' => 'Expected Refund',
'original_order' => 'Original Amount',
'return_request' => 'Return Request Amount',
],
'delivery' => [
'carrier' => 'Carrier',
'pickup_fee' => 'Pickup Fee',
'round_trip_fee' => 'Round Trip Fee',
'tracking_number' => 'Tracking Number',
],
'method' => [
'deposit' => 'Bank Deposit',
'direct_refund' => 'Direct Refund',
],
'product' => [
'color' => 'Color',
'exchange_product' => 'Exchange Product',
'original_product' => 'Original Product',
'same_product' => 'Same Product',
'size' => 'Size',
],
'reason' => [
'customer_fault' => 'Customer Request',
'defective_product' => 'Defective',
'seller_fault' => 'Seller Fault',
'simple_change' => 'Simple Change',
'size_exchange' => 'Size Exchange',
'wrong_color' => 'Wrong Color',
],
'sort' => [
'label' => 'Sort',
'request_date_desc' => 'Latest Request',
],
'status' => [
'exchange_completed' => 'Exchange Completed',
'exchange_shipping' => 'Exchange Shipping',
'refund_hold' => 'Refund Hold',
'refund_rejected' => 'Refund Rejected',
'return_completed' => 'Return Completed',
'return_pickup_in_progress' => 'Return Pickup In Progress',
],
],
// Modal
'modal' => [
'batch_change' => [
'cancel' => 'Cancel',
'carrier_label' => 'Carrier',
'confirm' => 'Confirm',
'confirm_prefix' => 'Are you sure you want to batch change',
'confirm_suffix' => 'orders?',
'title' => 'Batch Change',
'tracking_label' => 'Tracking Number',
],
'send_email' => [
'cancel' => 'Cancel',
'char_count' => ':count chars',
'description' => 'Send email to customer.',
'email' => 'Email',
'email_placeholder' => 'Enter email address',
'message' => 'Message',
'message_placeholder' => 'Enter email message',
'send' => 'Send',
'title' => 'Send Email',
],
'send_sms' => [
'cancel' => 'Cancel',
'char_count' => ':count chars',
'description' => 'Send SMS to customer.',
'message' => 'Message',
'message_placeholder' => 'Enter SMS message',
'phone' => 'Phone',
'phone_placeholder' => 'Enter phone number',
'plugin_label' => 'SMS Plugin',
'send' => 'Send',
'title' => 'Send SMS',
],
'cancel' => [
'title' => 'Cancel Order',
'description' => 'Cancel the order for selected products. Please review the estimated refund amount before proceeding.',
'cancel_pg' => 'Cancel PG payment as well',
'cancel_pg_hint' => 'If unchecked, only the order status will be changed without PG cancellation.',
'reason' => 'Cancel Reason',
'reason_placeholder' => 'Select a cancel reason',
'reason_detail' => 'Detailed Reason',
'reason_detail_placeholder' => 'Enter detailed reason (optional)',
'refund_estimate' => 'Estimated Refund',
'refund_loading' => 'Calculating refund amount...',
'refund_product_amount' => 'Product Refund',
'refund_shipping_diff' => 'Shipping Difference',
'refund_discount_diff' => 'Discount Adjustment',
'refund_points' => 'Points Refund',
'refund_total' => 'Total Estimated Refund',
'confirm' => 'Cancel Order',
'close' => 'Close',
'product_name' => 'Product',
'unit_price' => 'Unit Price',
'cancel_quantity' => 'Cancel Qty',
'current_status' => 'Status',
'pg_error_title' => 'PG Refund Error',
'validation_error_title' => 'Validation Error',
'cancel_success' => 'Order has been cancelled.',
'cancel_failed' => 'Failed to cancel order.',
'estimate_failed' => 'Failed to calculate estimated refund.',
],
],
// Order info
'order_info' => [
'title' => 'Order Information',
'order_products' => 'Order Products',
'save' => 'Save',
'select_all' => 'Select All',
'selected_count' => ':count selected',
'batch_change' => 'Batch Change',
'carrier' => 'Carrier',
'change_status' => 'Change Status',
'tracking_number' => 'Tracking Number',
'admin_memo' => [
'placeholder' => 'Enter admin memo',
'title' => 'Admin Memo',
],
'columns' => [
'actual_price' => 'Actual Price',
'delivery' => 'Delivery Info',
'discount' => 'Discount',
'points' => 'Points',
'price' => 'Price',
'product_info' => 'Product Info',
'quantity' => 'Qty',
'status' => 'Status',
'subtotal' => 'Subtotal',
],
'orderer_info' => [
'email' => 'Email',
'name' => 'Name',
'phone' => 'Phone',
'send' => 'Send',
'tel' => 'Tel',
'title' => 'Orderer Info',
],
'receiver_info' => [
'address' => 'Address',
'address_detail' => 'Address Detail',
'delivery_message' => 'Delivery Message',
'find_zipcode' => 'Find Zipcode',
'name' => 'Recipient',
'phone' => 'Phone',
'send' => 'Send',
'tel' => 'Tel',
'title' => 'Recipient Info',
'zipcode' => 'Zipcode',
],
'summary' => [
'total' => 'Total',
],
],
// Payment info
'payment_info' => [
'title' => 'Payment Information',
'coupon' => 'Coupon Discount',
'deposit_used' => 'Deposit Used',
'discount_code' => 'Discount Code',
'due_date' => 'Due Date',
'event' => 'Event',
'expected_points' => 'Expected Points',
'final_amount' => 'Final Amount',
'mileage_used' => 'Mileage Used',
'order_amount' => 'Order Amount',
'payment_date' => 'Payment Date',
'payment_method' => 'Payment Method',
'payment_request_date' => 'Payment Request Date',
'referral' => 'Referral',
'shipping_fee' => 'Shipping Fee',
'taxable_amount' => 'Taxable Amount',
'total_discount' => 'Total Discount',
'vat' => 'VAT',
'method' => [
'bank_transfer' => 'Bank Transfer',
'credit_card' => 'Credit Card',
'virtual_account' => 'Virtual Account',
],
'status' => [
'completed' => 'Completed',
'pending' => 'Pending',
],
'type' => [
'additional_shipping' => 'Additional Shipping',
'admin_manual' => 'Admin Adjustment',
'original' => 'Original Order',
],
],
// Activity log
'activity_log' => [
'title' => 'Activity Log',
'items_count' => ':count items',
'per_page_option' => ':count items',
'sort' => [
'date_desc' => 'Latest',
'date_asc' => 'Oldest',
'label' => 'Sort',
],
],
],
// Excel download
'excel' => [
'title' => 'Download Excel',
'description' => 'Download order list as Excel file.',
'download' => 'Download',
'download_success' => 'Excel file has been created.',
'option_search' => 'Search Results',
'option_search_desc' => 'Download orders matching current search criteria.',
'option_selected' => 'Selected Items',
'option_selected_desc' => 'Download selected orders only.',
],
// Filter
'filter' => [
'category' => 'Category',
'category_level' => 'Level :level',
'category_placeholder' => 'Select Category',
'claim_exchange' => 'Exchange Status',
'claim_exchange_options' => [
'approved' => 'Approved',
'completed' => 'Completed',
'hold' => 'Hold',
'payment_pending' => 'Payment Pending',
'pickup_completed' => 'Pickup Completed',
'pickup_in_progress' => 'Pickup In Progress',
'rejected' => 'Rejected',
'requested' => 'Requested',
'reshipping' => 'Reshipping',
'reshipping_completed' => 'Reshipping Completed',
],
'claim_mode' => 'Claim Mode',
'claim_module_link' => 'Go to Claim Module',
'claim_refund' => 'Refund Status',
'claim_refund_options' => [
'approved' => 'Approved',
'completed' => 'Completed',
'hold' => 'Hold',
'rejected' => 'Rejected',
'requested' => 'Requested',
],
'claim_return' => 'Return Status',
'claim_return_options' => [
'approved' => 'Approved',
'completed' => 'Completed',
'hold' => 'Hold',
'payment_pending' => 'Payment Pending',
'pickup_completed' => 'Pickup Completed',
'pickup_in_progress' => 'Pickup In Progress',
'rejected' => 'Rejected',
'requested' => 'Requested',
],
'claim_status' => 'Claim Status',
'country' => 'Country',
'country_options' => [
'cn' => 'China',
'jp' => 'Japan',
'kr' => 'South Korea',
'ru' => 'Russia',
'tw' => 'Taiwan',
'us' => 'United States',
],
'currency' => 'Currency',
'date' => 'Date',
'date_quick' => [
'1_month' => '1 Month',
'1_year' => '1 Year',
'3_months' => '3 Months',
'6_months' => '6 Months',
'today' => 'Today',
'week' => '1 Week',
],
'date_type' => [
'order_date' => 'Order Date',
'payment_date' => 'Payment Date',
'shipping_date' => 'Shipping Date',
],
'delivery_method' => 'Delivery Method',
'delivery_options' => [
'direct' => 'Direct Delivery',
'mail' => 'Registered Mail',
'parcel' => 'Parcel',
'pickup' => 'Pickup',
'quick' => 'Quick Delivery',
],
'detail_title' => 'Advanced Search',
'device' => 'Device',
'device_options' => [
'mobile' => 'Mobile',
'pc' => 'PC',
],
'end_date' => 'End Date',
'max_price' => 'Max Price',
'min_price' => 'Min Price',
'order_status' => 'Order Status',
'order_status_options' => [
'cancelled' => 'Cancelled',
'confirmed' => 'Confirmed',
'delivered' => 'Delivered',
'payment_complete' => 'Payment Complete',
'payment_pending' => 'Payment Pending',
'preparing' => 'Preparing',
'shipping' => 'Shipping',
'shipping_hold' => 'Shipping Hold',
'shipping_ready' => 'Shipping Ready',
'waiting' => 'Order Received',
],
'payment_method' => 'Payment Method',
'payment_options' => [
'bank' => 'Bank Transfer',
'card' => 'Credit Card',
'kakao' => 'Kakao Pay',
'naver' => 'Naver Pay',
'toss' => 'Toss Pay',
'virtual' => 'Virtual Account',
],
'price' => 'Order Amount',
'start_date' => 'Start Date',
],
// Message
'message' => [
'no_orders' => 'No orders found.',
],
// Mobile
'mobile' => [
'country' => 'Country',
'orderer' => 'Orderer',
'payment_delivery' => 'Payment/Delivery',
],
// Modal
'modal' => [
'excel_download' => [
'cancel' => 'Cancel',
'description' => 'Download order list as Excel file.',
'download' => 'Download',
'option_search' => 'Search Results',
'option_search_desc' => 'Download orders matching current search criteria.',
'option_selected' => 'Selected Items',
'option_selected_desc' => 'Download selected orders only.',
'title' => 'Download Excel',
],
'preset_delete' => [
'confirm' => 'Are you sure you want to delete ":name" preset?',
'title' => 'Delete Preset',
],
'preset_edit' => [
'title' => 'Edit Preset',
],
'preset_manage' => [
'add_new' => 'Add New Preset',
'add_preset' => 'Add Preset',
'description' => 'Save and manage frequently used search conditions.',
'empty' => 'No saved presets.',
'title' => 'Manage Presets',
],
'preset_save' => [
'description' => 'Save current search conditions as a preset.',
'placeholder' => 'Enter preset name',
'save' => 'Save',
'title' => 'Save Preset',
],
],
// Preset
'preset' => [
'applied' => ':name preset has been applied.',
'bank_pending' => 'Bank Transfer Pending',
'label' => 'Presets',
'more' => 'More',
'save_title' => 'Save Preset',
'today_payment' => 'Today Payment Complete',
],
// Search
'search' => [
'column_select' => 'Select Columns',
'detail_search' => 'Advanced Search',
'edit_search' => 'Edit Search',
'field' => [
'all' => 'All',
'email' => 'Email',
'order_number' => 'Order Number',
'orderer_name' => 'Orderer Name',
'phone' => 'Phone',
'product_name' => 'Product Name',
'receiver_name' => 'Recipient Name',
],
'placeholder' => 'Enter search keyword',
'preset_manage' => 'Manage Presets',
],
// Sort
'sort' => [
'highest_amount' => 'Highest Amount',
'latest_order' => 'Latest Order',
'latest_payment' => 'Latest Payment',
'latest_shipping' => 'Latest Shipping',
'lowest_amount' => 'Lowest Amount',
'oldest_order' => 'Oldest Order',
'oldest_payment' => 'Oldest Payment',
'oldest_shipping' => 'Oldest Shipping',
],
// Status
'status' => [
'cancelled' => 'Cancelled',
'confirmed' => 'Confirmed',
'delivered' => 'Delivered',
'payment_complete' => 'Payment Complete',
'payment_pending' => 'Payment Pending',
'preparing' => 'Preparing',
'shipping' => 'Shipping',
'shipping_hold' => 'Shipping Hold',
'shipping_ready' => 'Shipping Ready',
'waiting' => 'Order Received',
],
// Table
'table' => [
'columns' => [
'actions' => 'Actions',
'country' => 'Country',
'delivery_method' => 'Delivery Method',
'order_amount' => 'Order Amount',
'order_date' => 'Order Date',
'order_number' => 'Order Number',
'order_status' => 'Order Status',
'orderer' => 'Orderer',
'payment_method' => 'Payment Method',
'product' => 'Product Info',
],
'excel_download' => 'Download Excel',
'per_page' => ':count per page',
'sort' => [
'amount_high' => 'Highest Amount',
'amount_low' => 'Lowest Amount',
'latest' => 'Latest',
'oldest' => 'Oldest',
],
'total_count' => 'Total :count',
],
],
'shipping_policy' => [
'table' => [
'column' => [
'is_default' => 'Default',
'is_default_header' => 'Default',
],
],
'modal' => [
'set_default' => [
'title' => 'Set Default Shipping Policy',
'message' => 'Set :name as default shipping policy?',
'confirm' => 'Set',
'cancel' => 'Cancel',
'success' => 'Default shipping policy has been set.',
],
],
],
'product' => [
'bulk' => [
'no_selection' => 'No items selected.',
'update_success' => ':products products and :options options have been updated.',
'update_error' => 'Bulk update failed.',
'option_update_success' => ':count options have been updated.',
'option_update_error' => 'Option bulk update failed.',
],
'messages' => [
'bulk_summary_sales_status' => 'Sales status: :status',
'bulk_summary_display_status' => 'Display status: :status',
'bulk_summary_name_changed' => 'Name changed',
'bulk_summary_list_price' => 'List price: :price',
'bulk_summary_selling_price' => 'Selling price: :price',
'bulk_summary_inline_modified' => 'Inline modified',
'bulk_summary_bulk_applied' => 'Bulk changes applied',
'bulk_summary_price_adjustment' => 'Price adjustment: :method :value',
'bulk_summary_stock' => 'Stock: :method :value',
'bulk_summary_option_name' => 'Option name: :name',
'bulk_summary_sku' => 'SKU: :sku',
'bulk_summary_selected' => 'Selected',
],
],
],
// Activity Log Messages
'logs' => [
'product_created' => 'Product Created',
'product_deleted' => 'Product Deleted',
'description_changed' => 'Description changed: :old_length chars → :new_length chars',
'category_changed' => 'Category changed',
'options_changed' => 'Product options changed',
'additional_options_changed' => 'Additional options changed',
'images_added' => ':count image(s) added',
'images_removed' => ':count image(s) removed',
'set' => 'set',
'removed' => 'removed',
'changed' => 'changed',
],
// Stock messages
'stock' => [
'insufficient' => 'Insufficient stock for :product_name (:option_name). (Available: :available, Requested: :requested)',
'option_not_found' => 'Product option not found. (Option ID: :option_id)',
],
// Product Review Messages
'reviews' => [
'fetch_success' => 'Reviews retrieved successfully.',
'fetch_failed' => 'Failed to retrieve reviews.',
'created' => 'Review has been created.',
'create_failed' => 'Failed to create review.',
'can_write_checked' => 'Review eligibility checked.',
'can_write_check_failed' => 'Failed to check review eligibility.',
'cannot_write' => 'Cannot write a review. (Reason: :reason)',
'forbidden' => 'You do not have permission.',
'deleted' => 'Review has been deleted.',
'delete_failed' => 'Failed to delete review.',
'updated' => 'Review has been updated.',
'update_failed' => 'Failed to update review.',
'reply_saved' => 'Reply has been saved.',
'reply_save_failed' => 'Failed to save reply.',
'reply_deleted' => 'Reply has been deleted.',
'reply_delete_failed' => 'Failed to delete reply.',
'bulk_deleted' => 'Selected reviews have been deleted.',
'bulk_updated' => 'Status of selected reviews has been changed.',
'bulk_failed' => 'Bulk operation failed.',
'image_uploaded' => 'Review image has been uploaded.',
'image_upload_failed' => 'Failed to upload review image.',
'image_deleted' => 'Review image has been deleted.',
'image_delete_failed' => 'Failed to delete review image.',
'image_not_found' => 'Image not found.',
],
'wishlist' => [
'added' => 'Product has been added to wishlist.',
'removed' => 'Product has been removed from wishlist.',
'retrieved' => 'Wishlist retrieved successfully.',
'not_found' => 'Wishlist item not found.',
'toggle_failed' => 'Failed to toggle wishlist.',
'retrieve_failed' => 'Failed to retrieve wishlist.',
'delete_failed' => 'Failed to delete wishlist item.',
],
'extra_fee_template' => [
'list_retrieved' => 'Extra fee templates retrieved successfully.',
'retrieved' => 'Extra fee template retrieved successfully.',
'not_found' => 'Extra fee template not found.',
'created' => 'Extra fee template has been created.',
'updated' => 'Extra fee template has been updated.',
'deleted' => 'Extra fee template has been deleted.',
'toggled' => 'Extra fee template status has been changed.',
'bulk_deleted' => ':count extra fee templates have been deleted.',
'bulk_toggled' => ':count extra fee templates status have been changed.',
'bulk_created' => ':count extra fee templates have been created.',
'settings_retrieved' => 'Active extra fee template settings retrieved successfully.',
],
// Product 1:1 Inquiries
'inquiries' => [
'fetch_success' => 'Inquiry list retrieved successfully.',
'fetch_failed' => 'Failed to retrieve inquiry list.',
'created' => 'Your inquiry has been submitted.',
'create_failed' => 'Failed to submit inquiry.',
'updated' => 'Your inquiry has been updated.',
'update_failed' => 'Failed to update inquiry.',
'deleted' => 'Inquiry has been deleted.',
'delete_failed' => 'Failed to delete inquiry.',
'not_found' => 'Inquiry not found.',
'forbidden' => 'You do not have permission for this inquiry.',
'board_not_configured' => 'Inquiry board is not configured.',
'board_unavailable' => 'Board module is unavailable. Please contact the administrator.',
'board_changed' => 'The board configuration has changed and the post could not be found. Please contact the administrator.',
'reply_created' => 'Reply has been submitted.',
'reply_failed' => 'Failed to submit reply.',
'reply_updated' => 'Reply has been updated.',
'reply_update_failed' => 'Failed to update reply.',
'reply_deleted' => 'Reply has been deleted.',
'reply_delete_failed' => 'Failed to delete reply.',
'reply_not_found' => 'Reply not found.',
// 서비스가 던진 사유를 그대로 덧붙여, 실패 원인을 서버 기록 없이도 알 수 있게 한다
'operation_failed_reason' => ':reason',
],
// User addresses
'address' => [
'created' => 'Address has been added.',
'create_failed' => 'Failed to add address.',
'updated' => 'Address has been updated.',
'update_failed' => 'Failed to update address.',
'deleted' => 'Address has been deleted.',
'delete_failed' => 'Failed to delete address.',
'not_found' => 'Address not found.',
'fetched' => 'Address retrieved.',
'fetch_failed' => 'Failed to retrieve address.',
'list_fetched' => 'Address list retrieved.',
'list_fetch_failed' => 'Failed to retrieve address list.',
'set_default' => 'Set as default address.',
'default_set' => 'Set as default address.',
'set_default_failed' => 'Failed to set default address.',
'name_duplicate' => 'An address with the same name already exists. Do you want to overwrite it?',
'auto_saved_label' => 'New Address',
],
// Payment currency settings (A3)
'user_currency' => [
'fetched' => 'Payment currency retrieved.',
'updated' => 'Payment currency updated.',
'update_failed' => 'Failed to update payment currency.',
],
'user_shipping_country' => [
'fetched' => 'Shipping country retrieved.',
'updated' => 'Shipping country updated.',
'update_failed' => 'Failed to update shipping country.',
],
// Dashboard
'dashboard' => [
'fetch_success' => 'Dashboard data loaded.',
],
];