diff --git a/app/Http/Controllers/Admin/AdvertisementController.php b/app/Http/Controllers/Admin/AdvertisementController.php index 295bee8..76e589f 100644 --- a/app/Http/Controllers/Admin/AdvertisementController.php +++ b/app/Http/Controllers/Admin/AdvertisementController.php @@ -20,7 +20,22 @@ class AdvertisementController extends AdminController $tab = $request->input('tab', 'list'); // Tab 1: 廣告列表 - $advertisements = Advertisement::with('company')->latest()->paginate(10); + $query = Advertisement::with('company'); + + if ($request->filled('search')) { + $search = $request->search; + $query->where('name', 'like', "%{$search}%"); + } + + if ($request->filled('type')) { + $query->where('type', $request->type); + } + + if ($request->filled('company_id')) { + $query->where('company_id', $request->company_id); + } + + $advertisements = $query->latest()->paginate(10); // Tab 2: 機台廣告設置 (所需資料) - 隱藏已過期的廣告 $allAds = Advertisement::playing()->get(); diff --git a/app/Http/Controllers/Admin/BasicSettings/MachineSettingController.php b/app/Http/Controllers/Admin/BasicSettings/MachineSettingController.php index 9d4f922..c10316c 100644 --- a/app/Http/Controllers/Admin/BasicSettings/MachineSettingController.php +++ b/app/Http/Controllers/Admin/BasicSettings/MachineSettingController.php @@ -126,6 +126,9 @@ class MachineSettingController extends AdminController 'machine_model_id' => 'required|exists:machine_models,id', 'payment_config_id' => 'nullable|exists:payment_configs,id', 'location' => 'nullable|string|max:255', + 'address' => 'nullable|string|max:255', + 'latitude' => 'nullable|numeric|between:-90,90', + 'longitude' => 'nullable|numeric|between:-180,180', 'images.*' => 'image|mimes:jpeg,png,jpg,gif,webp|max:10240', // Increase to 10MB ]); @@ -194,6 +197,9 @@ class MachineSettingController extends AdminController 'machine_model_id' => 'required|exists:machine_models,id', 'payment_config_id' => 'nullable|exists:payment_configs,id', 'location' => 'nullable|string|max:255', + 'address' => 'nullable|string|max:255', + 'latitude' => 'nullable|numeric|between:-90,90', + 'longitude' => 'nullable|numeric|between:-180,180', 'image_0' => 'nullable|image|mimes:jpeg,png,jpg,gif,webp|max:10240', 'image_1' => 'nullable|image|mimes:jpeg,png,jpg,gif,webp|max:10240', 'image_2' => 'nullable|image|mimes:jpeg,png,jpg,gif,webp|max:10240', @@ -281,5 +287,15 @@ class MachineSettingController extends AdminController ]); } + /** + * 公開機台分布地圖 + */ + public function distribution(): View + { + $machines = Machine::whereNotNull('latitude') + ->whereNotNull('longitude') + ->get(['id', 'name', 'serial_no', 'address', 'location', 'latitude', 'longitude', 'status']); + return view('admin.basic-settings.machines.distribution', compact('machines')); + } } diff --git a/app/Http/Controllers/Admin/GeocodingController.php b/app/Http/Controllers/Admin/GeocodingController.php new file mode 100644 index 0000000..e7ce15c --- /dev/null +++ b/app/Http/Controllers/Admin/GeocodingController.php @@ -0,0 +1,137 @@ +validate([ + 'address' => 'required|string|max:255', + ]); + + $address = $request->input('address'); + + // 策略 1:結構化搜尋(台灣地址精確度最高) + $parsed = $this->parseTaiwanAddress($address); + + if ($parsed['street']) { + $response = Http::withHeaders([ + 'User-Agent' => 'StarCloud/1.0 (admin@starcloud.com)', + ])->get('https://nominatim.openstreetmap.org/search', [ + 'format' => 'json', + 'street' => $parsed['street'], + 'city' => $parsed['city'], + 'country' => 'Taiwan', + 'limit' => 1, + ]); + + if ($response->successful()) { + $data = $response->json(); + if (!empty($data)) { + return response()->json([ + 'success' => true, + 'lat' => (float) $data[0]['lat'], + 'lon' => (float) $data[0]['lon'], + 'display_name' => $data[0]['display_name'] ?? '', + ]); + } + } + } + + // 策略 2:自由搜尋 + 台灣限定 + $searchQuery = $address; + if (!str_contains($searchQuery, '台灣') && !str_contains($searchQuery, 'Taiwan')) { + $searchQuery .= ', 台灣'; + } + + $response = Http::withHeaders([ + 'User-Agent' => 'StarCloud/1.0 (admin@starcloud.com)', + ])->get('https://nominatim.openstreetmap.org/search', [ + 'format' => 'json', + 'q' => $searchQuery, + 'countrycodes' => 'tw', + 'limit' => 1, + ]); + + if ($response->successful()) { + $data = $response->json(); + if (!empty($data)) { + return response()->json([ + 'success' => true, + 'lat' => (float) $data[0]['lat'], + 'lon' => (float) $data[0]['lon'], + 'display_name' => $data[0]['display_name'] ?? '', + ]); + } + } + + return response()->json([ + 'success' => false, + 'message' => __('Location not found'), + ], 404); + } + + /** + * 解析台灣地址格式為結構化參數 + * 例如:「台中市北區興進路90之3號」→ city: "台中市 北區", street: "90之3 興進路" + */ + private function parseTaiwanAddress(string $address): array + { + $address = trim($address); + + // 解析城市 (市/縣) + preg_match('/^(.+?[市縣])/u', $address, $cityMatch); + $city = $cityMatch[1] ?? ''; + + // 解析區域 (區/鄉/鎮) — 排除「市」以避免與城市混淆 + preg_match('/[市縣](.+?[區鄉鎮])/u', $address, $districtMatch); + $district = $districtMatch[1] ?? ''; + + // 取得路街部分:從最後一個「區/鄉/鎮」之後開始截取 + if ($district) { + // 精確定位到 district 結束後的部分 + $pos = mb_strpos($address, $district); + if ($pos !== false) { + $streetPart = mb_substr($address, $pos + mb_strlen($district)); + } else { + $streetPart = $address; + } + } else { + $streetPart = $address; + } + + // 拆分路名與門牌號碼 + preg_match('/^(.+?(?:路|街|大道|巷|弄)(?:[一二三四五六七八九十]+段)?)\s*(.*)/u', $streetPart, $roadMatch); + + $street = ''; + $houseNumber = ''; + if ($roadMatch) { + $street = $roadMatch[1]; + $houseNumber = str_replace('號', '', $roadMatch[2] ?? ''); + } else { + $street = $streetPart; + } + + $fullStreet = ($houseNumber ? $houseNumber . ' ' : '') . $street; + $fullCity = $city . ($district ? ' ' . $district : ''); + + return [ + 'city' => $fullCity, + 'street' => $fullStreet, + ]; + } +} diff --git a/app/Http/Controllers/Admin/WarehouseController.php b/app/Http/Controllers/Admin/WarehouseController.php index 6563c84..34058ed 100644 --- a/app/Http/Controllers/Admin/WarehouseController.php +++ b/app/Http/Controllers/Admin/WarehouseController.php @@ -26,6 +26,7 @@ class WarehouseController extends Controller public function index(Request $request) { $query = Warehouse::query() + ->with(['company']) ->withCount('stocks as products_count') ->withSum('stocks as total_stock', 'quantity'); @@ -52,33 +53,71 @@ class WarehouseController extends Controller ->whereHas('warehouse', fn($q) => $q)->count(), ]; - return view('admin.warehouses.index', compact('warehouses', 'stats')); + $companies = collect(); + if (Auth::user()->isSystemAdmin()) { + $companies = \App\Models\System\Company::active()->orderBy('name')->get(); + } + + return view('admin.warehouses.index', compact('warehouses', 'stats', 'companies')); } public function store(Request $request) { $validated = $request->validate([ + 'company_id' => Auth::user()->isSystemAdmin() ? 'nullable|exists:companies,id' : 'nullable', 'name' => 'required|string|max:255', 'type' => 'required|in:main,branch', 'address' => 'nullable|string|max:500', + ], [], [ + 'name' => __('Warehouse Name'), + 'type' => __('Warehouse Type'), + 'company_id' => __('Company Name'), ]); - $validated['company_id'] = Auth::user()->company_id; + + if (!Auth::user()->isSystemAdmin()) { + $validated['company_id'] = Auth::user()->company_id; + } + Warehouse::create($validated); + if ($request->ajax() || $request->wantsJson()) { + return response()->json([ + 'success' => true, + 'message' => __('Warehouse created successfully'), + ]); + } + return redirect()->route('admin.warehouses.index') ->with('success', __('Warehouse created successfully')); } public function update(Request $request, Warehouse $warehouse) { - $validated = $request->validate([ + $rules = [ 'name' => 'required|string|max:255', 'type' => 'required|in:main,branch', 'address' => 'nullable|string|max:500', 'is_active' => 'required|boolean', + ]; + + if (Auth::user()->isSystemAdmin()) { + $rules['company_id'] = 'nullable|exists:companies,id'; + } + + $validated = $request->validate($rules, [], [ + 'name' => __('Warehouse Name'), + 'type' => __('Warehouse Type'), + 'company_id' => __('Company Name'), ]); $warehouse->update($validated); + if ($request->ajax() || $request->wantsJson()) { + return response()->json([ + 'success' => true, + 'message' => __('Warehouse updated successfully'), + ]); + } + return redirect()->route('admin.warehouses.index') ->with('success', __('Warehouse updated successfully')); } @@ -108,23 +147,27 @@ class WarehouseController extends Controller public function inventory(Request $request) { - $tab = $request->input('tab', 'stock'); + $tab = $request->input('tab', 'stock-in'); $warehouses = Warehouse::active()->orderBy('name')->get(); $data = compact('warehouses', 'tab'); if ($tab === 'stock') { - $query = WarehouseStock::with(['warehouse:id,name,type', 'product:id,name,image_url']) - ->whereHas('warehouse', fn($q) => $q); + $inventory_warehouses = Warehouse::active()->orderBy('name')->get(['id', 'name', 'type']); + + $query = Product::with(['stocks' => function($q) { + $q->select('id', 'product_id', 'warehouse_id', 'quantity', 'safety_stock'); + }, 'translations']); if ($request->filled('warehouse_id')) { - $query->where('warehouse_id', $request->input('warehouse_id')); + $query->whereHas('stocks', fn($q) => $q->where('warehouse_id', $request->input('warehouse_id'))); } if ($search = $request->input('search')) { - $query->whereHas('product', fn($q) => $q->where('name', 'like', "%{$search}%")); + $query->where('name', 'like', "%{$search}%"); } - $data['stocks'] = $query->orderBy('warehouse_id') + $data['inventory_warehouses'] = $inventory_warehouses; + $data['products'] = $query->orderBy('name') ->paginate($request->input('per_page', 15)) ->withQueryString(); @@ -135,7 +178,7 @@ class WarehouseController extends Controller if ($request->filled('status')) { $query->where('status', $request->input('status')); } - $data['orders'] = $query->paginate(10)->withQueryString(); + $data['orders'] = $query->paginate($request->input('per_page', 10))->withQueryString(); $data['products'] = Product::orderBy('name')->get(['id', 'name', 'image_url']); } elseif ($tab === 'movements') { @@ -148,7 +191,15 @@ class WarehouseController extends Controller if ($request->filled('type')) { $query->where('type', $request->input('type')); } - $data['movements'] = $query->paginate(15)->withQueryString(); + $data['movements'] = $query->paginate($request->input('per_page', 15))->withQueryString(); + } + + if ($request->ajax()) { + return response()->json([ + 'success' => true, + 'tab' => $tab, + 'html' => view('admin.warehouses.partials.tab-' . $tab, $data)->render() + ]); } return view('admin.warehouses.inventory', $data); @@ -182,6 +233,13 @@ class WarehouseController extends Controller } }); + if ($request->ajax()) { + return response()->json([ + 'success' => true, + 'message' => __('Stock-in order created') + ]); + } + return redirect()->route('admin.warehouses.inventory', ['tab' => 'stock-in']) ->with('success', __('Stock-in order created')); } @@ -288,6 +346,13 @@ class WarehouseController extends Controller } }); + if ($request->ajax()) { + return response()->json([ + 'success' => true, + 'message' => __('Transfer order created') + ]); + } + return redirect()->route('admin.warehouses.transfers') ->with('success', __('Transfer order created')); } @@ -451,6 +516,13 @@ class WarehouseController extends Controller } }); + if ($request->ajax()) { + return response()->json([ + 'success' => true, + 'message' => __('Replenishment order created') + ]); + } + return redirect()->route('admin.warehouses.replenishments') ->with('success', __('Replenishment order created')); } @@ -506,4 +578,189 @@ class WarehouseController extends Controller return back()->with('success', __('Replenishment completed')); } + /** + * AJAX:取得來源庫存(倉庫或機台) + */ + public function getStockAjax(Request $request) + { + $warehouseId = $request->input('warehouse_id'); + $machineId = $request->input('machine_id'); + + try { + if ($warehouseId) { + // Warehouse uses TenantScoped, findOrFail will respect it + $warehouse = Warehouse::findOrFail($warehouseId); + $stocks = WarehouseStock::with('product:id,name,image_url') + ->where('warehouse_id', $warehouse->id) + ->where('quantity', '>', 0) + ->get(); + + $data = $stocks->map(fn($s) => [ + 'id' => $s->product_id, + 'name' => $s->product?->name ?? 'Unknown', + 'quantity' => $s->quantity, + 'image' => $s->product?->image_url + ]); + } elseif ($machineId) { + // Machine uses TenantScoped and machine_access scope + $machine = Machine::findOrFail($machineId); + $slots = MachineSlot::with('product:id,name,image_url') + ->where('machine_id', $machine->id) + ->where('stock', '>', 0) + ->get() + ->groupBy('product_id'); + + $data = $slots->map(function($group) { + $p = $group->first()->product; + return [ + 'id' => $group->first()->product_id, + 'name' => $p?->name ?? 'Unknown', + 'quantity' => $group->sum('stock'), + 'image' => $p?->image_url + ]; + })->values(); + } else { + return response()->json(['success' => false, 'message' => 'No source provided']); + } + } catch (\Exception $e) { + return response()->json(['success' => false, 'message' => __('Unauthorized or not found')]); + } + + return response()->json(['success' => true, 'data' => $data]); + } + + /** + * AJAX:取得倉庫商品庫存詳情 (用於滑出面板) + */ + public function warehouseStocks(Warehouse $warehouse, Request $request) + { + $query = $warehouse->stocks()->with('product:id,name,image_url'); + + if ($search = $request->input('search')) { + $query->whereHas('product', fn($q) => $q->where('name', 'like', "%{$search}%")); + } + + $stocks = $query->get(); + + return response()->json([ + 'success' => true, + 'warehouse' => [ + 'id' => $warehouse->id, + 'name' => $warehouse->name, + 'type' => $warehouse->type, + ], + 'stocks' => $stocks->map(fn($s) => [ + 'id' => $s->id, + 'product_id' => $s->product_id, + 'product_name' => $s->product?->name ?? 'Unknown', + 'image_url' => $s->product?->image_url, + 'quantity' => (int)$s->quantity, + 'safety_stock' => (int)$s->safety_stock, + ]) + ]); + } + + /** + * AJAX:取得進貨單詳情 + */ + public function stockInOrderDetails(StockInOrder $order) + { + $order->load(['warehouse', 'creator', 'items.product']); + + return response()->json([ + 'success' => true, + 'order' => [ + 'id' => $order->id, + 'order_no' => $order->order_no, + 'status' => $order->status, + 'warehouse_name' => $order->warehouse?->name, + 'creator_name' => $order->creator?->name, + 'created_at' => $order->created_at?->format('Y-m-d H:i:s'), + 'completed_at' => $order->completed_at?->format('Y-m-d H:i:s'), + 'note' => $order->note, + ], + 'items' => $order->items->map(fn($item) => [ + 'product_name' => $item->product?->name ?? 'Unknown', + 'image_url' => $item->product?->image_url, + 'quantity' => $item->quantity, + ]) + ]); + } + /** + * Get replenishment order details for AJAX. + */ + public function replenishmentOrderDetails(Request $request, $id) + { + $order = \App\Models\WarehouseReplenishment::with(['machine', 'warehouse', 'creator']) + ->where('id', $id) + ->firstOrFail(); + + $items = \App\Models\WarehouseReplenishmentItem::with('product') + ->where('replenishment_id', $id) + ->get() + ->map(function($item) { + return [ + 'product_id' => $item->product_id, + 'product_name' => $item->product?->name ?? 'Unknown', + 'image_url' => $item->product?->image_url, + 'quantity' => $item->quantity, + 'slot_no' => $item->slot_no, + ]; + }); + + return response()->json([ + 'success' => true, + 'order' => [ + 'id' => $order->id, + 'order_no' => $order->order_no, + 'status' => $order->status, + 'machine_name' => $order->machine?->name, + 'warehouse_name' => $order->warehouse?->name, + 'creator_name' => $order->creator?->name, + 'note' => $order->note, + 'created_at' => $order->created_at->format('Y-m-d H:i:s'), + 'completed_at' => $order->completed_at?->format('Y-m-d H:i:s'), + ], + 'items' => $items + ]); + } + + /** + * Get transfer order details for AJAX. + */ + public function transferOrderDetails(Request $request, $id) + { + $order = \App\Models\WarehouseTransfer::with(['fromWarehouse', 'toWarehouse', 'fromMachine', 'creator']) + ->where('id', $id) + ->firstOrFail(); + + $items = \App\Models\WarehouseTransferItem::with('product') + ->where('transfer_id', $id) + ->get() + ->map(function($item) { + return [ + 'product_id' => $item->product_id, + 'product_name' => $item->product?->name ?? 'Unknown', + 'image_url' => $item->product?->image_url, + 'quantity' => $item->quantity, + ]; + }); + + return response()->json([ + 'success' => true, + 'order' => [ + 'id' => $order->id, + 'order_no' => $order->order_no, + 'status' => $order->status, + 'type' => $order->type, + 'from_name' => $order->type === 'warehouse_to_warehouse' ? $order->fromWarehouse?->name : $order->fromMachine?->name, + 'to_warehouse_name' => $order->toWarehouse?->name, + 'creator_name' => $order->creator?->name, + 'note' => $order->note, + 'created_at' => $order->created_at->format('Y-m-d H:i:s'), + 'completed_at' => $order->completed_at?->format('Y-m-d H:i:s'), + ], + 'items' => $items + ]); + } } diff --git a/app/Models/Machine/Machine.php b/app/Models/Machine/Machine.php index d22fe74..8b50ed7 100644 --- a/app/Models/Machine/Machine.php +++ b/app/Models/Machine/Machine.php @@ -53,6 +53,9 @@ class Machine extends Model 'serial_no', 'model', 'location', + 'address', + 'latitude', + 'longitude', 'status', 'current_page', 'door_status', diff --git a/app/Models/Product/Product.php b/app/Models/Product/Product.php index 8fceeac..e9fa4c5 100644 --- a/app/Models/Product/Product.php +++ b/app/Models/Product/Product.php @@ -90,4 +90,12 @@ class Product extends Model return $this->hasMany(\App\Models\System\Translation::class, 'key', 'name_dictionary_key') ->where('group', 'product'); } + + /** + * 倉庫庫存紀錄 + */ + public function stocks() + { + return $this->hasMany(\App\Models\Warehouse\WarehouseStock::class); + } } diff --git a/app/Models/System/Company.php b/app/Models/System/Company.php index f0f9202..5fba9d7 100644 --- a/app/Models/System/Company.php +++ b/app/Models/System/Company.php @@ -67,4 +67,12 @@ class Company extends Model { return $this->hasMany(Machine::class); } + + /** + * Scope:僅篩選啟用的公司 + */ + public function scopeActive($query) + { + return $query->where('status', 1); + } } diff --git a/app/Models/Warehouse/Warehouse.php b/app/Models/Warehouse/Warehouse.php index d4ec8e5..f846543 100644 --- a/app/Models/Warehouse/Warehouse.php +++ b/app/Models/Warehouse/Warehouse.php @@ -79,4 +79,12 @@ class Warehouse extends Model { return $this->hasMany(StockInOrder::class); } + + /** + * 所屬公司 + */ + public function company() + { + return $this->belongsTo(\App\Models\System\Company::class); + } } diff --git a/database/migrations/2026_04_23_140000_add_address_to_machines_table.php b/database/migrations/2026_04_23_140000_add_address_to_machines_table.php new file mode 100644 index 0000000..5b9e319 --- /dev/null +++ b/database/migrations/2026_04_23_140000_add_address_to_machines_table.php @@ -0,0 +1,30 @@ +string('address')->nullable()->after('location'); + $table->decimal('latitude', 10, 8)->nullable()->after('address'); + $table->decimal('longitude', 11, 8)->nullable()->after('latitude'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('machines', function (Blueprint $table) { + $table->dropColumn(['address', 'latitude', 'longitude']); + }); + } +}; diff --git a/lang/en.json b/lang/en.json index b458396..eb4c89e 100644 --- a/lang/en.json +++ b/lang/en.json @@ -3,21 +3,30 @@ "30 Seconds": "30 Seconds", "60 Seconds": "60 Seconds", "A new verification link has been sent to your email address.": "A new verification link has been sent to your email address.", + "AI Prediction": "AI Prediction", + "API Token": "API Token", + "API Token Copied": "API Token Copied", + "API Token regenerated successfully.": "API Token regenerated successfully.", + "APK Versions": "APK Versions", + "APP Features": "APP Features", + "APP Management": "APP Management", + "APP Version": "APP Version", + "APP_ID": "APP_ID", + "APP_KEY": "APP_KEY", "Abnormal": "Abnormal", "Account": "Account", "Account :name status has been changed to :status.": "Account :name status has been changed to :status.", - "Account created successfully.": "Account created successfully.", - "Account deleted successfully.": "Account deleted successfully.", "Account Info": "Account Info", "Account List": "Account List", "Account Management": "Account Management", "Account Name": "Account Name", "Account Settings": "Account Settings", "Account Status": "Account Status", + "Account created successfully.": "Account created successfully.", + "Account deleted successfully.": "Account deleted successfully.", "Account updated successfully.": "Account updated successfully.", "Account:": "Account:", - "accounts": "Account Management", - "Accounts / Machines": "Accounts / Machines", + "Accounts \/ Machines": "Accounts \/ Machines", "Action": "Action", "Actions": "Actions", "Active": "Active", @@ -27,35 +36,37 @@ "Add Advertisement": "Add Advertisement", "Add Category": "Add Category", "Add Customer": "Add Customer", + "Add Item": "Add Item", "Add Machine": "Add Machine", "Add Machine Model": "Add Machine Model", "Add Maintenance Record": "Add Maintenance Record", "Add Product": "Add Product", "Add Role": "Add Role", + "Add Warehouse": "Add Warehouse", + "Address": "Address", "Adjust Stock": "Adjust Stock", "Adjust Stock & Expiry": "Adjust Stock & Expiry", + "Adjustment": "Adjustment", "Admin": "Admin", - "admin": "管理員", - "Admin display name": "Admin display name", "Admin Name": "Admin Name", "Admin Page": "Admin Page", "Admin Sellable Products": "Admin Sellable Products", + "Admin display name": "Admin display name", "Administrator": "Administrator", + "Advertisement List": "Advertisement List", + "Advertisement Management": "Advertisement Management", + "Advertisement Video\/Image": "Advertisement Video\/Image", "Advertisement assigned successfully": "Advertisement assigned successfully", "Advertisement assigned successfully.": "Advertisement assigned successfully.", "Advertisement created successfully": "Advertisement created successfully", "Advertisement created successfully.": "Advertisement created successfully.", "Advertisement deleted successfully": "Advertisement deleted successfully", "Advertisement deleted successfully.": "Advertisement deleted successfully.", - "Advertisement List": "Advertisement List", - "Advertisement Management": "Advertisement Management", "Advertisement updated successfully": "Advertisement updated successfully", "Advertisement updated successfully.": "Advertisement updated successfully.", - "Advertisement Video/Image": "Advertisement Video/Image", "Affiliated Company": "Affiliated Company", "Affiliated Unit": "Company Name", "Affiliation": "Company Name", - "AI Prediction": "AI Prediction", "Alert Summary": "Alert Summary", "Alerts": "Alerts", "Alerts Pending": "Alerts Pending", @@ -66,31 +77,24 @@ "All Levels": "All Levels", "All Machines": "All Machines", "All Stable": "All Stable", + "All Status": "All Status", + "All Statuses": "All Statuses", "All Times System Timezone": "All times are in system timezone", - "Inventory Alerts": "Inventory Alerts", - "Inventory Stable": "Inventory Stable", + "All Types": "All Types", + "All Warehouses": "All Warehouses", "Amount": "Amount", "An error occurred while saving.": "An error occurred while saving.", - "analysis": "Analysis Management", "Analysis Management": "Analysis Management", "Analysis Permissions": "Analysis Permissions", - "API Token": "API Token", - "API Token Copied": "API Token Copied", - "API Token regenerated successfully.": "API Token regenerated successfully.", - "APK Versions": "APK Versions", - "app": "APP Management", - "APP Features": "APP Features", - "APP Management": "APP Management", - "APP Version": "APP Version", - "APP_ID": "APP_ID", - "APP_KEY": "APP_KEY", "Apply changes to all identical products in this machine": "Apply changes to all identical products in this machine", "Apply to all identical products in this machine": "Apply to all identical products in this machine", + "Approved At": "Approved At", "Are you sure to delete this customer?": "Are you sure to delete this customer?", "Are you sure you want to change the status of this item? This will affect its visibility on vending machines.": "Are you sure you want to change the status of this item? This will affect its visibility on vending machines.", "Are you sure you want to change the status of this product? Disabled products will not be visible on the machine.": "Are you sure you want to change the status of this product? Disabled products will not be visible on the machine.", "Are you sure you want to change the status? After disabling, this account will no longer be able to log in to the system.": "Are you sure you want to change the status? After disabling, this account will no longer be able to log in to the system.", "Are you sure you want to change the status? This may affect associated accounts.": "Are you sure you want to change the status? This may affect associated accounts.", + "Are you sure you want to confirm this stock-in order? This action will update your inventory levels.": "Are you sure you want to confirm this stock-in order? This action will update your inventory levels.", "Are you sure you want to deactivate this account? After deactivating, this account will no longer be able to log in to the system.": "Are you sure you want to deactivate this account? After deactivating, this account will no longer be able to log in to the system.", "Are you sure you want to delete this account?": "Are you sure you want to delete this account?", "Are you sure you want to delete this account? This action cannot be undone.": "Are you sure you want to delete this account? This action cannot be undone.", @@ -110,9 +114,10 @@ "Assign": "Assign", "Assign Advertisement": "Assign Advertisement", "Assign Machines": "Assign Machines", + "Assign replenishment staff": "Assign replenishment staff", + "Assign warehouse managers": "Assign warehouse managers", "Assigned Machines": "Assigned Machines", "Assignment removed successfully.": "Assignment removed successfully.", - "audit": "Audit Management", "Audit Management": "Audit Management", "Audit Permissions": "Audit Permissions", "Authorization updated successfully": "Authorization updated successfully", @@ -131,34 +136,41 @@ "Back to List": "Back to List", "Badge Settings": "Badge Settings", "Barcode": "Barcode", - "Barcode / Material": "Barcode / Material", + "Barcode \/ Material": "Barcode \/ Material", "Basic Information": "Basic Information", "Basic Settings": "Basic Settings", "Basic Specifications": "Basic Specifications", - "basic-settings": "Basic Settings", - "basic.machines": "機台設定", - "basic.payment-configs": "客戶金流設定", "Batch": "Batch", "Batch No": "Batch No", "Batch Number": "Batch Number", "Belongs To": "Company Name", "Belongs To Company": "Company Name", + "Branch": "Branch", + "Branch Warehouses": "Branch Warehouses", "Business Type": "Business Type", "Buyout": "Buyout", + "CASH": "CASH", + "CREATE STOCK TRANSFERS BETWEEN WAREHOUSES AND MACHINE RETURNS": "Create stock transfers between warehouses and machine returns", "Cancel": "Cancel", "Cancel Purchase": "Cancel Purchase", + "Cancelled": "Cancelled", + "Cannot Delete Role": "Cannot Delete Role", "Cannot change Super Admin status.": "Cannot change Super Admin status.", "Cannot delete advertisement being used by machines.": "Cannot delete advertisement being used by machines.", "Cannot delete company with active accounts.": "Cannot delete company with active accounts.", "Cannot delete model that is currently in use by machines.": "Cannot delete model that is currently in use by machines.", - "Cannot Delete Role": "Cannot Delete Role", "Cannot delete role with active users.": "Cannot delete role with active users.", + "Cannot delete warehouse with existing stock": "Cannot delete warehouse with existing stock", "Card Reader": "Card Reader", "Card Reader No": "Card Reader No", "Card Reader Reboot": "Card Reader Reboot", "Card Reader Restart": "Card Reader Restart", "Card Reader Seconds": "Card Reader Seconds", + "Card System": "Card System", "Card Terminal": "Card Terminal", + "Card Terminal System": "Card Terminal System", + "Cash Module": "Cash Module", + "Cash Module Feature": "Cash Module Feature", "Category": "Category", "Category Management": "Category Management", "Category Name": "Category Name", @@ -166,9 +178,10 @@ "Category Name (ja)": "Category Name (Japanese)", "Category Name (zh_TW)": "Category Name (Traditional Chinese)", "Change": "Change", + "Change Note": "Change Note", "Change Stock": "Change Stock", "Channel Limits": "Channel Limits", - "Channel Limits (Track/Spring)": "Channel Limits (Track/Spring)", + "Channel Limits (Track\/Spring)": "Channel Limits (Track\/Spring)", "Channel Limits Configuration": "Channel Limits Configuration", "ChannelId": "ChannelId", "ChannelSecret": "ChannelSecret", @@ -181,18 +194,21 @@ "Click to Open Dashboard": "Click to Open Dashboard", "Click to upload": "Click to upload", "Close Panel": "Close Panel", + "Coin\/Bill Acceptor": "Coin\/Bill Acceptor", "Command Center": "Command Center", "Command Confirmation": "Command Confirmation", + "Command Type": "Command Type", "Command error:": "Command error:", "Command has been queued successfully.": "Command has been queued successfully.", + "Command not found": "Command not found", "Command queued successfully.": "Command queued successfully.", - "Command Type": "Command Type", - "companies": "Customer Management", "Company": "Company", "Company Code": "Company Code", "Company Information": "Company Information", "Company Level": "Company Level", "Company Name": "Company Name", + "Complete movement history log": "Complete movement history log", + "Completed": "Completed", "Config Name": "Config Name", "Configuration Name": "Configuration Name", "Confirm": "Confirm", @@ -203,6 +219,10 @@ "Confirm Deletion": "Confirm Deletion", "Confirm Password": "Confirm Password", "Confirm Status Change": "Confirm Status Change", + "Confirm Stock-in Order": "Confirm Stock-in Order", + "Confirm replenishment completed?": "Confirm replenishment completed?", + "Confirm this stock-in order?": "Confirm this stock-in order?", + "Confirm this transfer?": "Confirm this transfer?", "Connected": "Connected", "Connecting...": "Connecting...", "Connectivity Status": "Connectivity Status", @@ -212,21 +232,39 @@ "Contact Info": "Contact Info", "Contact Name": "Contact Name", "Contact Phone": "Contact Phone", + "Contract": "Contract", + "Contract End": "Contract End", + "Contract History": "Contract History", + "Contract History Detail": "Contract History Detail", + "Contract Model": "Contract Model", "Contract Period": "Contract Period", + "Contract Start": "Contract Start", "Contract Until (Optional)": "Contract Until (Optional)", + "Contract information updated": "Contract information updated", "Control": "Control", "Cost": "Cost", "Coupons": "Coupons", "Create": "Create", - "Create a new role and assign permissions.": "Create a new role and assign permissions.", "Create Config": "Create Config", "Create Machine": "Create Machine", "Create New Role": "Create New Role", "Create Payment Config": "Create Payment Config", "Create Product": "Create Product", + "Create Replenishment Order": "Create Replenishment Order", "Create Role": "Create Role", "Create Sub Account Role": "Create Sub Account Role", + "Create Transfer Order": "Create Transfer Order", + "Create a new role and assign permissions.": "Create a new role and assign permissions.", + "Create and manage replenishment orders from warehouse to machines": "Create and manage replenishment orders from warehouse to machines", + "Create main and branch warehouses": "Create main and branch warehouses", + "Create replenishment orders and manage restocking from warehouse to machines": "Create replenishment orders and manage restocking from warehouse to machines", + "Create stock transfers between warehouses and machine returns": "Create stock transfers between warehouses and machine returns", + "Create stock-in orders": "Create stock-in orders", + "Created At": "Created At", + "Created By": "Created By", "Creation Time": "Creation Time", + "Creator": "Creator", + "Credit Card \/ Contactless": "Credit Card \/ Contactless", "Critical": "Critical", "Current": "Current", "Current Password": "Current Password", @@ -234,24 +272,22 @@ "Current Stock": "Current Stock", "Current Type": "Current Type", "Current:": "Cur:", - "Customer and associated accounts disabled successfully.": "Customer and associated accounts disabled successfully.", - "Customer created successfully.": "Customer created successfully", - "Customer deleted successfully.": "Customer deleted successfully.", "Customer Details": "Customer Details", - "Customer enabled successfully.": "Customer enabled successfully.", "Customer Info": "Customer Info", "Customer Management": "Customer Management", "Customer Payment Config": "Customer Payment Config", + "Customer and associated accounts disabled successfully.": "Customer and associated accounts disabled successfully.", + "Customer created successfully.": "Customer created successfully", + "Customer deleted successfully.": "Customer deleted successfully.", + "Customer enabled successfully.": "Customer enabled successfully.", "Customer updated successfully.": "Customer updated successfully.", "Cycle Efficiency": "Cycle Efficiency", "Daily Revenue": "Daily Revenue", + "Damage": "Damage", "Danger Zone: Delete Account": "Danger Zone: Delete Account", "Dashboard": "Dashboard", "Data Configuration": "Data Configuration", "Data Configuration Permissions": "Data Configuration Permissions", - "data-config": "Data Configuration", - "data-config.sub-account-roles": "子帳號角色", - "data-config.sub-accounts": "子帳號管理", "Date Range": "Date Range", "Day Before": "Day Before", "Default Donate": "Default Donate", @@ -265,6 +301,12 @@ "Delete Permanently": "Delete Permanently", "Delete Product": "Delete Product", "Delete Product Confirmation": "Delete Product Confirmation", + "Delivering": "Delivering", + "Delivering product": "Delivering product", + "Delivery door close error": "Delivery door close error", + "Delivery door closed": "Delivery door closed", + "Delivery door open error": "Delivery door open error", + "Delivery door opened": "Delivery door opened", "Deposit Bonus": "Deposit Bonus", "Describe the repair or maintenance status...": "Describe the repair or maintenance status...", "Deselect All": "Deselect All", @@ -278,25 +320,28 @@ "Discord Notifications": "Discord Notifications", "Dispense Failed": "Dispense Failed", "Dispense Success": "Dispense Success", + "Dispense error (0407)": "Dispense error (0407)", + "Dispense error (0408)": "Dispense error (0408)", + "Dispense error (0409)": "Dispense error (0409)", + "Dispense error (040A)": "Dispense error (040A)", + "Dispense stopped": "Dispense stopped", + "Dispense successful": "Dispense successful", "Dispensing": "Dispensing", + "Dispensing in progress": "Dispensing in progress", + "Display Material Code": "Display Material Code", + "Door Closed": "Door Closed", + "Door Opened": "Door Opened", + "Draft": "Draft", "Duration": "Duration", "Duration (Seconds)": "Duration (Seconds)", - "e.g. 500ml / 300g": "e.g. 500ml / 300g", - "e.g. John Doe": "e.g. John Doe", - "e.g. johndoe": "e.g. johndoe", - "e.g. Taiwan Star": "e.g. Taiwan Star", - "e.g. TWSTAR": "e.g. TWSTAR", - "e.g., Beverage": "e.g., Beverage", - "e.g., Company Standard Pay": "e.g., Company Standard Pay", - "e.g., Drinks": "e.g., Drinks", - "e.g., Taipei Station": "e.g., Taipei Station", - "e.g., お飲み物": "e.g., O-Nomimono", - "ESUN": "ESUN", + "E.SUN QR Pay": "E.SUN QR Pay", "E.SUN QR Scan": "E.SUN QR Scan", "E.SUN QR Scan Settings Description": "E.SUN Bank QR Scan Payment Settings", "EASY_MERCHANT_ID": "EASY_MERCHANT_ID", "ECPay Invoice": "ECPay Invoice", "ECPay Invoice Settings Description": "ECPay Electronic Invoice Settings", + "ESUN": "ESUN", + "ESUN Scan Pay": "ESUN Scan Pay", "Edit": "Edit", "Edit Account": "Edit Account", "Edit Advertisement": "Edit Advertisement", @@ -315,18 +360,28 @@ "Edit Settings": "Edit Settings", "Edit Slot": "Edit Slot", "Edit Sub Account Role": "Edit Sub Account Role", + "Electronic Invoice": "Electronic Invoice", + "Elevator descending": "Elevator descending", + "Elevator descent error": "Elevator descent error", + "Elevator failure": "Elevator failure", + "Elevator rise error": "Elevator rise error", + "Elevator rising": "Elevator rising", + "Elevator sensor error": "Elevator sensor error", "Email": "Email", - "Enabled Features": "Enabled Features", + "Empty": "Empty", "Enable": "Enable", "Enable Material Code": "Enable Material Code", "Enable Points": "Enable Points", + "Enable Points Mechanism": "Enable Points Mechanism", "Enabled": "Enabled", - "Enabled/Disabled": "Enabled/Disabled", + "Enabled Features": "Enabled Features", + "Enabled\/Disabled": "Enabled\/Disabled", "End Date": "End Date", "Engineer": "Engineer", "English": "English", "Ensure your account is using a long, random password to stay secure.": "Ensure your account is using a long, random password to stay secure.", "Enter ad material name": "Enter ad material name", + "Enter full address": "Enter full address", "Enter login ID": "Enter login ID", "Enter machine location": "Enter machine location", "Enter machine name": "Enter machine name", @@ -339,36 +394,43 @@ "Equipment efficiency and OEE metrics": "設備效能與 OEE 綜合指標", "Error": "Error", "Error processing request": "Error processing request", + "Error report accepted": "Error report accepted", + "Error: :message (:code)": "Error: :message (:code)", "Execute": "Execute", "Execute Change": "Execute Change", "Execute Delivery Now": "Execute Delivery Now", - "Execute maintenance and operational commands remotely": "Execute maintenance and operational commands remotely", "Execute Remote Change": "Execute Remote Change", + "Execute maintenance and operational commands remotely": "Execute maintenance and operational commands remotely", "Execution Time": "Execution Time", "Exp": "Exp", "Expired": "Expired", - "Expired / Disabled": "Expired / Disabled", + "Expired \/ Disabled": "Expired \/ Disabled", + "Expired Time": "Expired Time", "Expiring": "Expiring", "Expiry": "Expiry", "Expiry Date": "Expiry Date", "Expiry Management": "Expiry Management", + "Expiry date tracking and warnings": "Expiry date tracking and warnings", "Failed": "Failed", - "failed": "failed", "Failed to fetch machine data.": "Failed to fetch machine data.", "Failed to load permissions": "Failed to load permissions", + "Failed to load tab content": "Failed to load tab content", "Failed to save permissions.": "Failed to save permissions.", "Failed to update machine images: ": "Failed to update machine images: ", "Feature Settings": "Feature Settings", "Feature Toggles": "Feature Toggles", - "files selected": "files selected", + "Fill Rate": "Fill Rate", "Fill in the device repair or maintenance details": "Fill in the device repair or maintenance details", "Fill in the product details below": "Fill in the product details below", "Firmware Version": "Firmware Version", + "Firmware updated to :version": "Firmware updated to :version", "Fleet Avg OEE": "Fleet Avg OEE", "Fleet Performance": "Fleet Performance", - "Force end current session": "Force end current session", "Force End Session": "Force End Session", + "Force end current session": "Force end current session", "From": "From", + "From Machine": "From Machine", + "From Warehouse": "From Warehouse", "From:": "From:", "Full Access": "Full Access", "Full Name": "Full Name", @@ -377,6 +439,7 @@ "General permissions not linked to a specific menu.": "未連結到特定選單的一般權限。", "Gift Definitions": "Gift Definitions", "Global roles accessible by all administrators.": "Global roles accessible by all administrators.", + "Goods & System Settings": "Goods & System Settings", "Got it": "Got it", "Grant UI Access": "Grant UI Access", "Half Points": "Half Points", @@ -391,23 +454,40 @@ "Heating Start Time": "Heating Start Time", "Helper": "Helper", "Home Page": "Home Page", - "hours ago": "hours ago", + "Hopper empty": "Hopper empty", + "Hopper empty (0212)": "Hopper empty (0212)", + "Hopper error (0424)": "Hopper error (0424)", + "Hopper heating timeout": "Hopper heating timeout", + "Hopper overheated": "Hopper overheated", + "ITEM": "ITEM", "Identity & Codes": "Identity & Codes", - "image": "image", + "Image": "Image", + "Immediate": "Immediate", + "In Stock": "In Stock", + "Includes Credit Card\/Mobile Pay": "Includes Credit Card\/Mobile Pay", + "Indefinite": "Indefinite", "Info": "Info", "Initial Admin Account": "Initial Admin Account", "Initial Role": "Initial Role", + "Initial contract registration": "Initial contract registration", "Installation": "Installation", + "Inventory Alerts": "Inventory Alerts", + "Inventory Management": "Inventory Management", + "Inventory Stable": "Inventory Stable", + "Inventory synced with machine": "Inventory synced with machine", "Invoice Status": "Invoice Status", "Items": "Items", - "items": "items", - "Japanese": "Japanese", "JKO_MERCHANT_ID": "JKO_MERCHANT_ID", - "john@example.com": "john@example.com", + "Japanese": "Japanese", "Joined": "Joined", "Just now": "Just now", "Key": "Key", "Key No": "Key No", + "LEVEL TYPE": "LEVEL TYPE", + "LINE Pay Direct": "LINE Pay Direct", + "LINE Pay Direct Settings Description": "LINE Pay Official Direct Connection Settings", + "LINE_MERCHANT_ID": "LINE_MERCHANT_ID", + "LIVE": "LIVE", "Last Communication": "Last Communication", "Last Heartbeat": "Last Heartbeat", "Last Page": "Last Page", @@ -415,75 +495,90 @@ "Last Sync": "Last Sync", "Last Time": "Last Time", "Last Updated": "Last Updated", + "Latitude": "Latitude", "Lease": "Lease", "Level": "Level", - "LEVEL TYPE": "LEVEL TYPE", - "line": "Line Management", "Line Coupons": "Line Coupons", "Line Machines": "Line Machines", "Line Management": "Line Management", "Line Members": "Line Members", "Line Official Account": "Line Official Account", "Line Orders": "Line Orders", - "LINE Pay Direct": "LINE Pay Direct", - "LINE Pay Direct Settings Description": "LINE Pay Official Direct Connection Settings", "Line Permissions": "Line Permissions", "Line Products": "Line Products", - "LINE_MERCHANT_ID": "LINE_MERCHANT_ID", - "LIVE": "LIVE", + "LinePay": "LinePay", + "LinePay Payment": "LinePay Payment", "Live Fleet Updates": "Live Fleet Updates", "Loading Cabinet...": "Loading Cabinet...", + "Loading Data": "Loading Data", "Loading machines...": "Loading machines...", "Loading...": "Loading...", "Location": "Location", + "Location found!": "Location found!", + "Location not found": "Location not found", "Lock": "Lock", "Lock Now": "Lock Now", "Lock Page": "Lock Page", "Lock Page Lock": "Lock Page", "Lock Page Unlock": "Unlock Locked Page", "Locked Page": "Locked Page", + "Log Time": "Log Time", "Login History": "Login History", + "Login failed: :account": "Login failed: :account", "Logout": "Logout", "Logs": "Logs", + "Longitude": "Longitude", "Low": "Low Stock", "Low Stock": "Low Stock", + "Low Stock Alerts": "Low Stock Alerts", + "Low stock and out-of-stock alerts": "Low stock and out-of-stock alerts", "Loyalty & Features": "Loyalty & Features", "Machine Advertisement Settings": "Machine Advertisement Settings", "Machine Count": "Machine Count", - "Machine created successfully.": "Machine created successfully.", "Machine Details": "Machine Details", + "Machine Distribution": "Machine Distribution", + "Machine Distribution Map": "Machine Distribution Map", "Machine Images": "Machine Images", - "Machine images updated successfully.": "Machine images updated successfully.", "Machine Info": "Machine Info", "Machine Information": "Machine Information", "Machine Inventory": "Machine Inventory", - "Machine is heartbeat normal": "Machine is heartbeat normal", + "Machine Inventory Overview": "Machine Inventory Overview", "Machine List": "Machine List", "Machine Login Logs": "Machine Login Logs", "Machine Logs": "Machine Logs", "Machine Management": "Machine Management", "Machine Management Permissions": "Machine Management Permissions", "Machine Model": "Machine Model", - "Machine model created successfully.": "Machine model created successfully.", - "Machine model deleted successfully.": "Machine model deleted successfully.", "Machine Model Settings": "Machine Model Settings", - "Machine model updated successfully.": "Machine model updated successfully.", "Machine Name": "Machine Name", - "Machine Serial No": "Machine Serial No", "Machine Permissions": "Machine Permissions", "Machine Reboot": "Machine Reboot", "Machine Registry": "Machine Registry", + "Machine Replenishment": "Machine Replenishment", "Machine Reports": "Machine Reports", "Machine Restart": "Machine Restart", + "Machine Return": "Machine Return", + "Machine Serial No": "Machine Serial No", "Machine Settings": "Machine Settings", - "Machine settings updated successfully.": "Machine settings updated successfully.", "Machine Status": "Machine Status", "Machine Status List": "Machine Status List", - "Machine updated successfully.": "Machine updated successfully.", "Machine Utilization": "Machine Utilization", + "Machine created successfully.": "Machine created successfully.", + "Machine images updated successfully.": "Machine images updated successfully.", + "Machine is heartbeat normal": "Machine is heartbeat normal", + "Machine model created successfully.": "Machine model created successfully.", + "Machine model deleted successfully.": "Machine model deleted successfully.", + "Machine model updated successfully.": "Machine model updated successfully.", + "Machine normal": "Machine normal", + "Machine not found": "Machine not found", + "Machine settings updated successfully.": "Machine settings updated successfully.", + "Machine to Warehouse": "Machine to Warehouse", + "Machine to warehouse returns": "Machine to warehouse returns", + "Machine updated successfully.": "Machine updated successfully.", "Machines": "Machines", - "machines": "Machine Management", "Machines Online": "Machines Online", + "Main": "Main", + "Main Warehouses": "Main Warehouses", "Maintenance": "Maintenance", "Maintenance Content": "Maintenance Content", "Maintenance Date": "Maintenance Date", @@ -492,21 +587,25 @@ "Maintenance Photos": "Maintenance Photos", "Maintenance QR": "Maintenance QR", "Maintenance QR Code": "Maintenance QR Code", - "Maintenance record created successfully": "Maintenance record created successfully", "Maintenance Records": "Maintenance Records", + "Maintenance record created successfully": "Maintenance record created successfully", "Manage": "Manage", "Manage Account Access": "管理帳號存取", + "Manage Expiry": "Manage Expiry", "Manage ad materials and machine playback settings": "Manage ad materials and machine playback settings", "Manage administrative and tenant accounts": "Manage administrative and tenant accounts", "Manage all tenant accounts and validity": "Manage all tenant accounts and validity", - "Manage Expiry": "Manage Expiry", "Manage inventory and monitor expiry dates across all machines": "Manage inventory and monitor expiry dates across all machines", "Manage machine access permissions": "Manage machine access permissions", + "Manage stock levels, stock-in orders, and movement history": "Manage stock levels, stock-in orders, and movement history", + "Manage stock transfers between warehouses and machine returns": "Manage stock transfers between warehouses and machine returns", + "Manage warehouse stock levels, stock-in orders, adjustments, and movement history": "Manage warehouse stock levels, stock-in orders, adjustments, and movement history", "Manage your ad material details": "Manage your ad material details", "Manage your catalog, categories, and inventory settings.": "Manage your catalog, categories, and inventory settings.", "Manage your catalog, prices, and multilingual details.": "Manage your catalog, prices, and multilingual details.", "Manage your machine fleet and operational data": "Manage your machine fleet and operational data", "Manage your profile information, security settings, and login history": "Manage your profile information, security settings, and login history", + "Manage your warehouses, including main and branch warehouses": "Manage your warehouses, including main and branch warehouses", "Management of operational parameters": "Management of operational parameters", "Management of operational parameters and models": "Management of operational parameters and models", "Manufacturer": "Manufacturer", @@ -525,9 +624,691 @@ "Member Price": "Member Price", "Member Status": "Member Status", "Member System": "Member System", - "members": "Member Management", "Membership Tiers": "Membership Tiers", "Menu Permissions": "Menu Permissions", + "Merchant IDs": "Merchant IDs", + "Merchant payment gateway settings management": "Merchant payment gateway settings management", + "Message": "Message", + "Message Content": "Message Content", + "Message Display": "Message Display", + "Microwave door error": "Microwave door error", + "Microwave door opened": "Microwave door opened", + "Min 8 characters": "Min 8 characters", + "Model": "Model", + "Model Name": "Model Name", + "Model changed to :model": "Model changed to :model", + "Models": "Models", + "Modification History": "Modification History", + "Modifying your own administrative permissions may result in losing access to certain system functions.": "Modifying your own administrative permissions may result in losing access to certain system functions.", + "Monitor and manage stock levels across your fleet": "Monitor and manage stock levels across your fleet", + "Monitor events and system activity across your vending fleet.": "Monitor events and system activity across your vending fleet.", + "Monitor warehouse stock summary": "Monitor warehouse stock summary", + "Monthly Transactions": "Monthly Transactions", + "Monthly cumulative revenue overview": "Monthly cumulative revenue overview", + "Motor not stopped": "Motor not stopped", + "Movement History": "Movement History", + "Movement Logs": "Movement Logs", + "Multilingual Names": "Multilingual Names", + "N\/A": "N\/A", + "Name": "Name", + "Name in English": "Name in English", + "Name in Japanese": "Name in Japanese", + "Name in Traditional Chinese": "Name in Traditional Chinese", + "Never Connected": "Never Connected", + "New Command": "New Command", + "New Machine Name": "New Machine Name", + "New Password": "New Password", + "New Password (leave blank to keep current)": "New Password (leave blank to keep current)", + "New Record": "New Record", + "New Replenishment": "New Replenishment", + "New Role": "New Role", + "New Stock-In Order": "New Stock-In Order", + "New Sub Account Role": "New Sub Account Role", + "New Transfer": "New Transfer", + "Next": "Next", + "No Company": "No Company", + "No Invoice": "No Invoice", + "No Machine Selected": "No Machine Selected", + "No accounts found": "No accounts found", + "No active cargo lanes found": "No active cargo lanes found", + "No additional notes": "No additional notes", + "No address information": "No address information", + "No advertisements found.": "No advertisements found.", + "No alert summary": "No alert summary", + "No assignments": "No assignments", + "No categories found.": "No categories found.", + "No command history": "No command history", + "No configurations found": "No configurations found", + "No content provided": "No content provided", + "No customers found": "No customers found", + "No data available": "No data available", + "No file uploaded.": "No file uploaded.", + "No heartbeat for over 30 seconds": "No heartbeat for over 30 seconds", + "No history records": "No history records", + "No images uploaded": "No images uploaded", + "No location set": "No location set", + "No login history yet": "No login history yet", + "No logs found": "No logs found", + "No machines assigned": "未分配機台", + "No machines available": "No machines available", + "No machines available in this company.": "此客戶目前沒有可供分配的機台。", + "No machines found": "No machines found", + "No maintenance records found": "No maintenance records found", + "No matching logs found": "No matching logs found", + "No matching machines": "No matching machines", + "No materials available": "No materials available", + "No movement records found": "No movement records found", + "No permissions": "No permissions", + "No products found in this warehouse": "No products found in this warehouse", + "No products found matching your criteria.": "No products found matching your criteria.", + "No records found": "No records found", + "No replenishment orders found": "No replenishment orders found", + "No roles available": "No roles available", + "No roles found.": "No roles found.", + "No slot data": "No slot data", + "No slot data available": "No slot data available", + "No slots found": "No slots found", + "No stock data found": "No stock data found", + "No stock-in orders found": "No stock-in orders found", + "No transfer orders found": "No transfer orders found", + "No users found": "No users found", + "None": "None", + "Normal": "Normal", + "Not Used": "Not Used", + "Not Used Description": "不使用第三方支付介接", + "Note": "Note", + "Note (optional)": "Note (optional)", + "Notes": "Notes", + "OEE": "OEE", + "OEE Efficiency Trend": "OEE Efficiency Trend", + "OEE Score": "OEE Score", + "OEE.Activity": "Activity", + "OEE.Errors": "Errors", + "OEE.Hours": "Hours", + "OEE.Orders": "Orders", + "OEE.Sales": "Sales", + "Offline": "Offline", + "Offline Machines": "Offline Machines", + "Once your account is deleted, all of its resources and data will be permanently deleted. Before deleting your account, please download any data or information that you wish to retain.": "Once your account is deleted, all of its resources and data will be permanently deleted. Before deleting your account, please download any data or information that you wish to retain.", + "Once your account is deleted, all of its resources and data will be permanently deleted. Please enter your password to confirm you would like to permanently delete your account.": "Once your account is deleted, all of its resources and data will be permanently deleted. Please enter your password to confirm you would like to permanently delete your account.", + "One-click replenishment order generation": "One-click replenishment order generation", + "Ongoing": "Ongoing", + "Online": "Online", + "Online Duration": "Online Duration", + "Online Machines": "Online Machines", + "Online Status": "Online Status", + "Only system roles can be assigned to platform administrative accounts.": "Only system roles can be assigned to platform administrative accounts.", + "Operation Note": "Operation Note", + "Operation Records": "Operation Records", + "Operational Parameters": "Operational Parameters", + "Operations": "Operations", + "Operator": "Operator", + "Optimal": "Optimal", + "Optimized Performance": "Optimized Performance", + "Optimized for display. Supported formats: JPG, PNG, WebP.": "Optimized for display. Supported formats: JPG, PNG, WebP.", + "Optional": "Optional", + "Order Details": "Order Details", + "Order Management": "Order Management", + "Order No.": "Order No.", + "Orders": "Orders", + "Original": "Original", + "Original Type": "Original Type", + "Original:": "Ori:", + "Other Features": "Other Features", + "Other Permissions": "Other Permissions", + "Others": "Others", + "Out of Stock": "Out of Stock", + "Out of stock.": "Out of stock.", + "Output Count": "Output Count", + "Owner": "Company Name", + "PARTNER_KEY": "PARTNER_KEY", + "PI_MERCHANT_ID": "PI_MERCHANT_ID", + "PNG, JPG up to 2MB": "PNG, JPG up to 2MB", + "PNG, JPG, WEBP up to 10MB": "PNG, JPG, WEBP up to 10MB", + "POS Reboot": "POS Reboot", + "PS_LEVEL": "PS_LEVEL", + "PS_MERCHANT_ID": "PS_MERCHANT_ID", + "Page 0": "Offline", + "Page 1": "Home", + "Page 2": "Vending", + "Page 3": "Admin", + "Page 4": "Restock", + "Page 5": "Tutorial", + "Page 6": "Purchasing", + "Page 60": "Dispense Success", + "Page 61": "Slot Test", + "Page 610": "Purchase Ended", + "Page 611": "Store Gift", + "Page 612": "Dispense Failed", + "Page 62": "Payment Selection", + "Page 63": "Waiting for Payment", + "Page 64": "Dispensing", + "Page 65": "Receipt", + "Page 66": "Passcode", + "Page 67": "Pickup Code", + "Page 68": "Message", + "Page 69": "Purchase Cancelled", + "Page 7": "Locked", + "Page Lock Status": "Page Lock Status", + "Parameters": "Parameters", + "Pass Code": "Pass Code", + "Pass Codes": "Pass Codes", + "Password": "Password", + "Password updated successfully.": "密碼已成功變更。", + "Payment & Invoice": "Payment & Invoice", + "Payment Buffer Seconds": "Payment Buffer Seconds", + "Payment Config": "Payment Config", + "Payment Configuration": "Payment Configuration", + "Payment Configuration created successfully.": "Payment Configuration created successfully.", + "Payment Configuration deleted successfully.": "Payment Configuration deleted successfully.", + "Payment Configuration updated successfully.": "Payment Configuration updated successfully.", + "Payment Selection": "Payment Selection", + "Pending": "Pending", + "Performance": "Performance", + "Permanent": "Permanent", + "Permanently Delete Account": "Permanently Delete Account", + "Permission Settings": "Permission Settings", + "Permissions": "Permissions", + "Permissions updated successfully": "Authorization updated successfully", + "Phone": "Phone", + "Photo Slot": "Photo Slot", + "Picked up": "Picked up", + "Picked up Time": "Picked up Time", + "Pickup Code": "Pickup Code", + "Pickup Codes": "Pickup Codes", + "Pickup door closed": "Pickup door closed", + "Pickup door error": "Pickup door error", + "Pickup door not closed": "Pickup door not closed", + "Playback Order": "Playback Order", + "Please check the following errors:": "Please check the following errors:", + "Please check the form for errors.": "Please check the form for errors.", + "Please confirm the details below": "Please confirm the details below", + "Please enter address first": "Please enter address first", + "Please select a machine first": "Please select a machine first", + "Please select a machine model": "Please select a machine model", + "Please select a machine to view and manage its advertisements.": "Please select a machine to view and manage its advertisements.", + "Please select a machine to view metrics": "請選擇機台以查看數據", + "Please select a material": "Please select a material", + "Please select a slot": "Please select a slot", + "Point Rules": "Point Rules", + "Point Settings": "Point Settings", + "Points": "Points", + "Points Rule": "Points Rule", + "Points Settings": "Points Settings", + "Points toggle": "Points toggle", + "Position": "Position", + "Prepared": "Prepared", + "Preview": "Preview", + "Previous": "Previous", + "Price \/ Member": "Price \/ Member", + "Pricing Information": "Pricing Information", + "Product": "Product", + "Product Count": "Product Count", + "Product Details": "Product Details", + "Product ID": "Product ID", + "Product Image": "Product Image", + "Product Info": "Product Info", + "Product List": "Product List", + "Product Management": "Product Management", + "Product Name (Multilingual)": "Product Name (Multilingual)", + "Product Reports": "Product Reports", + "Product Status": "商品狀態", + "Product created successfully": "Product created successfully", + "Product deleted successfully": "Product deleted successfully", + "Product empty": "Product empty", + "Product status updated to :status": "Product status updated to :status", + "Product updated successfully": "Product updated successfully", + "Production Company": "Production Company", + "Products": "Products", + "Products \/ Stock": "Products \/ Stock", + "Profile": "Profile", + "Profile Information": "Profile Information", + "Profile Settings": "Profile Settings", + "Profile updated successfully.": "Profile updated successfully.", + "Promotions": "Promotions", + "Protected": "Protected", + "Publish": "Publish", + "Publish Time": "Publish Time", + "Purchase Audit": "Purchase Audit", + "Purchase Finished": "Purchase Finished", + "Purchases": "Purchases", + "Purchasing": "Purchasing", + "QR Scan Payment": "QR Scan Payment", + "Qty": "Qty", + "Qty Change": "Qty Change", + "Quality": "品質 (Quality)", + "Quantity": "Quantity", + "Questionnaire": "Questionnaire", + "Quick Expiry Check": "Quick Expiry Check", + "Quick Maintenance": "Quick Maintenance", + "Quick Select": "快速選取", + "Quick replenishment from this view": "Quick replenishment from this view", + "Quick search...": "Quick search...", + "Real-time OEE analysis awaits": "即時 OEE 分析預備中", + "Real-time Operation Logs (Last 50)": "Real-time Operation Logs (Last 50)", + "Real-time fleet efficiency and OEE metrics": "Real-time fleet efficiency and OEE metrics", + "Real-time inventory status across all machines with expiry tracking": "Real-time inventory status across all machines with expiry tracking", + "Real-time monitoring across all machines": "Real-time monitoring across all machines", + "Real-time monitoring and adjustment of cargo lane inventory and expiration dates": "Real-time monitoring and adjustment of cargo lane inventory and expiration dates", + "Real-time performance analytics": "Real-time performance analytics", + "Real-time slot-level inventory across all machines": "Real-time slot-level inventory across all machines", + "Real-time status monitoring": "Real-time status monitoring", + "Reason for this command...": "Reason for this command...", + "Receipt Printing": "Receipt Printing", + "Recent Commands": "Recent Commands", + "Recent Login": "Recent Login", + "Recently reported errors or warnings in logs": "Recently reported errors or warnings in logs", + "Regenerate": "Regenerate", + "Regenerating the token will disconnect the physical machine until it is updated. Continue?": "Regenerating the token will disconnect the physical machine until it is updated. Continue?", + "Remote Change": "Remote Change", + "Remote Checkout": "Remote Checkout", + "Remote Command Center": "Remote Command Center", + "Remote Dispense": "Remote Dispense", + "Remote Lock": "Remote Lock", + "Remote Management": "Remote Management", + "Remote Permissions": "Remote Permissions", + "Remote Reboot": "Remote Checkout", + "Remote Settlement": "Remote Settlement", + "Remote dispense successful for slot :slot": "Remote dispense successful for slot :slot", + "Removal": "Removal", + "Repair": "Repair", + "Replenishment Audit": "Replenishment Audit", + "Replenishment Items": "Replenishment Items", + "Replenishment Orders": "Replenishment Orders", + "Replenishment Page": "Replenishment Page", + "Replenishment Records": "Replenishment Records", + "Replenishment history": "Replenishment history", + "Replenishments": "Replenishments", + "Reporting Period": "Reporting Period", + "Reservation Members": "Reservation Members", + "Reservation System": "Reservation System", + "Reservations": "Reservations", + "Reset Filters": "Reset Filters", + "Reset POS terminal": "Reset POS terminal", + "Resolve Coordinates": "Resolve Coordinates", + "Restart entire machine": "Restart entire machine", + "Restock report accepted": "Restock report accepted", + "Restrict UI Access": "Restrict UI Access", + "Restrict machine UI access": "Restrict machine UI access", + "Result reported": "Result reported", + "Retail Price": "Retail Price", + "Returns": "Returns", + "Risk": "Risk", + "Role": "Role", + "Role Identification": "Role Identification", + "Role Management": "Role Management", + "Role Name": "Role Name", + "Role Permissions": "Role Permissions", + "Role Settings": "Role Permissions", + "Role Type": "Role Type", + "Role created successfully.": "Role created successfully.", + "Role deleted successfully.": "Role deleted successfully.", + "Role name already exists in this company.": "Role name already exists in this company.", + "Role not found.": "Role not found.", + "Role updated successfully.": "Role updated successfully.", + "Roles": "Role Permissions", + "Roles scoped to specific customer companies.": "Roles scoped to specific customer companies.", + "Running": "Running", + "Running Status": "Running Status", + "SYSTEM": "SYSTEM", + "Safety Stock": "Safety Stock", + "Sale Price": "Sale Price", + "Sales": "Sales", + "Sales Activity": "Sales Activity", + "Sales Management": "Sales Management", + "Sales Permissions": "Sales Permissions", + "Sales Records": "Sales Records", + "Save": "Save", + "Save Changes": "Save Changes", + "Save Config": "Save Config", + "Save Material": "Save Material", + "Save Permissions": "Save Permissions", + "Save Settings": "Save Settings", + "Save error:": "Save error:", + "Saved.": "Saved.", + "Saving...": "Saving...", + "Scale level and access control": "Scale level and access control", + "Scan Pay": "Scan Pay", + "Scan this code to quickly access the maintenance form for this device.": "Scan this code to quickly access the maintenance form for this device.", + "Schedule": "Schedule", + "Search Company Title...": "Search Company Title...", + "Search Machine...": "Search Machine...", + "Search Product": "Search Product", + "Search accounts...": "Search accounts...", + "Search by name or S\/N...": "Search by name or S\/N...", + "Search by name...": "Search by name...", + "Search cargo lane": "Search cargo lane", + "Search categories...": "Search categories...", + "Search company...": "Search company...", + "Search configurations...": "Search configurations...", + "Search customers...": "Search customers...", + "Search machines by name or serial...": "Search machines by name or serial...", + "Search machines...": "Search machines...", + "Search models...": "Search models...", + "Search products...": "Search products...", + "Search roles...": "Search roles...", + "Search serial no or name...": "Search serial no or name...", + "Search serial or machine...": "Search serial or machine...", + "Search serial or name...": "Search serial or name...", + "Search users...": "Search users...", + "Search warehouses...": "Search warehouses...", + "Search...": "Search...", + "Searching...": "Searching...", + "Seconds": "Seconds", + "Security & State": "Security & State", + "Security Controls": "Security Controls", + "Select All": "Select All", + "Select Cargo Lane": "Select Cargo Lane", + "Select Category": "Select Category", + "Select Company": "Select Company Name", + "Select Company (Default: System)": "Select Company (Default: System)", + "Select Machine": "Select Machine", + "Select Machine to view metrics": "Please select a machine to view metrics", + "Select Material": "Select Material", + "Select Model": "Select Model", + "Select Owner": "Select Company Name", + "Select Product": "Select Product", + "Select Slot...": "Select Slot...", + "Select Target Slot": "Select Target Slot", + "Select Warehouse": "Select Warehouse", + "Select a machine to deep dive": "Please select a machine to deep dive", + "Select a material to play on this machine": "Select a material to play on this machine", + "Select an asset from the left to start analysis": "Select an asset from the left to start analysis", + "Select date to sync data": "Select date to sync data", + "Select...": "Select...", + "Selected": "Selected", + "Selected Date": "Search Date", + "Selection": "Selection", + "Sent": "Picked up by Machine", + "Serial & Version": "Serial & Version", + "Serial NO": "SERIAL NO", + "Serial No": "Serial No", + "Serial No.": "Serial No.", + "Serial Number": "Serial Number", + "Service Periods": "Service Periods", + "Service Terms": "Service Periods", + "Settlement": "Settlement", + "Shopping Cart": "Shopping Cart", + "Shopping Cart Feature": "Shopping Cart Feature", + "Show": "Show", + "Show material code field in products": "Show material code field in products", + "Show points rules in products": "Show points rules in products", + "Showing": "Showing", + "Showing :from to :to of :total items": "Showing :from to :to of :total items", + "Sign in to your account": "Sign in to your account", + "Signed in as": "Signed in as", + "Slot": "Slot", + "Slot Mechanism (default: Conveyor, check for Spring)": "Slot Mechanism (default: Conveyor, check for Spring)", + "Slot No": "Slot No", + "Slot Status": "Slot Status", + "Slot Test": "Slot Test", + "Slot empty": "Slot empty", + "Slot jammed": "Slot jammed", + "Slot motor error (0207)": "Slot motor error (0207)", + "Slot motor error (0208)": "Slot motor error (0208)", + "Slot motor error (0209)": "Slot motor error (0209)", + "Slot normal": "Slot normal", + "Slot not closed": "Slot not closed", + "Slot not found": "Slot not found", + "Slot report synchronized success": "Slot report synchronized success", + "Slot updated successfully.": "Slot updated successfully.", + "Smallest number plays first.": "Smallest number plays first.", + "Smart replenishment suggestions": "Smart replenishment suggestions", + "Software": "Software", + "Software End": "Software End", + "Software Service": "Software Service", + "Software Start": "Software Start", + "Some fields need attention": "Some fields need attention", + "Sort Order": "Sort Order", + "Source Warehouse": "Source Warehouse", + "Special Permission": "Special Permission", + "Specification": "Specification", + "Specifications": "Specifications", + "Spring Channel Limit": "Spring Channel Limit", + "Spring Limit": "Spring Limit", + "Staff Stock": "Staff Stock", + "Standby": "Standby", + "Standby Ad": "Standby Ad", + "Start Date": "Start Date", + "Statistics": "Statistics", + "Status": "Status", + "Status \/ Temp \/ Sub \/ Card \/ Scan": "Status \/ Temp \/ Sub \/ Card \/ Scan", + "Stock": "Stock", + "Stock & Expiry": "Stock & Expiry", + "Stock & Expiry Management": "Stock & Expiry Management", + "Stock & Expiry Overview": "Stock & Expiry Overview", + "Stock In": "Stock In", + "Stock Levels": "Stock Levels", + "Stock Management": "Stock Management", + "Stock Out": "Stock Out", + "Stock Quantity": "Stock Quantity", + "Stock adjustments and damage reports": "Stock adjustments and damage reports", + "Stock flow history": "Stock flow history", + "Stock overview by warehouse": "Stock overview by warehouse", + "Stock-In Management": "Stock-In Management", + "Stock-In Orders": "Stock-In Orders", + "Stock-In Orders Tab": "Stock-In Orders", + "Stock:": "Stock:", + "Store Gifts": "Store Gifts", + "Store ID": "Store ID", + "Store Management": "Store Management", + "StoreID": "StoreID", + "Sub \/ Card \/ Scan": "Sub \/ Card \/ Scan", + "Sub Account Management": "Sub Account Management", + "Sub Account Roles": "Sub Account Roles", + "Sub Accounts": "Sub Accounts", + "Sub-actions": "子項目", + "Sub-machine Status Request": "Sub-machine Status", + "Submit Record": "Submit Record", + "Success": "Success", + "Super Admin": "Super Admin", + "Super-admin role cannot be assigned to tenant accounts.": "Super-admin role cannot be assigned to tenant accounts.", + "Superseded": "Superseded", + "Superseded by new adjustment": "Superseded by new adjustment", + "Superseded by new command": "Superseded by new command", + "Survey Analysis": "Survey Analysis", + "Syncing": "Syncing", + "Syncing Permissions...": "Syncing Permissions...", + "System": "System", + "System & Security Control": "System & Security Control", + "System Default": "System Default", + "System Default (All Companies)": "System Default (All Companies)", + "System Default (Common)": "System Default (Common)", + "System Level": "System Level", + "System Official": "System Official", + "System Reboot": "System Reboot", + "System Role": "System Role", + "System Settings": "System Settings", + "System role name cannot be modified.": "System role name cannot be modified.", + "System roles cannot be deleted by tenant administrators.": "System roles cannot be deleted by tenant administrators.", + "System roles cannot be modified by tenant administrators.": "System roles cannot be modified by tenant administrators.", + "System settings updated successfully.": "System settings updated successfully.", + "System super admin accounts cannot be deleted.": "System super admin accounts cannot be deleted.", + "System super admin accounts cannot be modified via this interface.": "System super admin accounts cannot be modified via this interface.", + "Systems Initializing": "Systems Initializing", + "TapPay Integration": "TapPay Integration", + "TapPay Integration Settings Description": "TapPay Payment Integration Settings", + "Target": "目標", + "Target Machine": "Target Machine", + "Target Position": "Target Position", + "Target Warehouse": "Target Warehouse", + "Tax ID": "Tax ID", + "Tax ID (Optional)": "Tax ID (Optional)", + "Tax System": "Tax System", + "Taxation System": "Taxation System", + "Temperature": "Temperature", + "Temperature reported: :temp°C": "Temperature reported: :temp°C", + "Temperature updated to :temp°C": "Temperature updated to :temp°C", + "TermID": "TermID", + "The Super Admin role cannot be deleted.": "The Super Admin role cannot be deleted.", + "The Super Admin role is immutable.": "The Super Admin role is immutable.", + "The Super Admin role name cannot be modified.": "The Super Admin role name cannot be modified.", + "The image is too large. Please upload an image smaller than 1MB.": "The image is too large. Please upload an image smaller than 1MB.", + "This is a system administrator role. Its name is locked to ensure system stability.": "This is a system administrator role. Its name is locked to ensure system stability.", + "This role belongs to another company and cannot be assigned.": "This role belongs to another company and cannot be assigned.", + "This slot has a pending command. Please wait.": "This slot has a pending command. Please wait.", + "This slot has a pending update. Please wait for the previous command to complete.": "This slot has a pending update. Please wait for the previous command to complete.", + "This slot is syncing with the machine. Please wait.": "This slot is syncing with the machine. Please wait.", + "Time": "Time", + "Time Slots": "Time Slots", + "Timer": "Timer", + "Timestamp": "Timestamp", + "To": "To", + "To Warehouse": "To Warehouse", + "To:": "To:", + "Today Cumulative Sales": "Today Cumulative Sales", + "Today's Transactions": "Today's Transactions", + "Total": "Total", + "Total Connected": "Total Connected", + "Total Customers": "Total Customers", + "Total Daily Sales": "Today's Total Sales", + "Total Gross Value": "Total Gross Value", + "Total Logins": "Total Logins", + "Total Machines": "Total Machines", + "Total Selected": "Total Selected", + "Total Slots": "Total Slots", + "Total Stock": "Total Stock", + "Total Warehouses": "Total Warehouses", + "Total items": "Total items: :count", + "Track Channel Limit": "Track Channel Limit", + "Track Limit": "Track Limit", + "Track Limit (Track\/Spring)": "Track Limit (Track\/Spring)", + "Track device health and maintenance history": "Track device health and maintenance history", + "Track stock levels, stock-in orders, and movement history": "Track stock levels, stock-in orders, and movement history", + "Track stock-in orders and movement history": "Track stock-in orders and movement history", + "Traditional Chinese": "Traditional Chinese", + "Transaction processed: :id": "Transaction processed: :id", + "Transfer Audit": "Transfer Audit", + "Transfer In": "Transfer In", + "Transfer Orders": "Transfer Orders", + "Transfer Out": "Transfer Out", + "Transfer Type": "Transfer Type", + "Transfer order status tracking": "Transfer order status tracking", + "Transfers": "Transfers", + "Trigger": "Trigger", + "Trigger Dispense": "Trigger Dispense", + "Trigger Remote Dispense": "Trigger Remote Dispense", + "Tutorial Page": "Tutorial Page", + "Type": "Type", + "Type to search or leave blank for system defaults.": "Type to search or leave blank for system defaults.", + "UI Elements": "UI Elements", + "Unauthorized Status": "Unauthorized", + "Unauthorized login attempt: :account": "Unauthorized login attempt: :account", + "Unauthorized: Account not authorized for this machine": "Unauthorized: Account not authorized for this machine", + "Unauthorized: Account not found": "Unauthorized: Account not found", + "Uncategorized": "Uncategorized", + "Unified Operational Timeline": "Unified Operational Timeline", + "Units": "Units", + "Unknown": "Unknown", + "Unknown error": "Unknown error", + "Unlimited": "Unlimited", + "Unlock": "Unlock", + "Unlock Now": "Unlock Now", + "Unlock Page": "Unlock Page", + "Unpublish": "Unpublish", + "Update": "Update", + "Update Authorization": "Update Authorization", + "Update Customer": "Update Customer", + "Update Password": "Update Password", + "Update Product": "Update Product", + "Update Settings": "Update Settings", + "Update existing role and permissions.": "Update existing role and permissions.", + "Update identification for your asset": "Update identification for your asset", + "Update your account's profile information and email address.": "Update your account's profile information and email address.", + "Upload Image": "Upload Image", + "Upload New Images": "Upload New Images", + "Upload Video": "Upload Video", + "Uploading new images will replace all existing images.": "Uploading new images will replace all existing images.", + "User": "User", + "User Info": "User Info", + "User logged in: :name": "User logged in: :name", + "Username": "Username", + "Users": "Users", + "Utilization Rate": "Utilization Rate", + "Utilization Timeline": "稼動時序", + "Utilization, OEE and Operational Intelligence": "稼動率、OEE 與營運情報", + "Utilized Time": "Utilized Time", + "Valid Until": "Valid Until", + "Validation Error": "Validation Error", + "Vending": "Vending", + "Vending Page": "Vending Page", + "Venue Management": "Venue Management", + "Video": "Video", + "View Details": "View Details", + "View Full History": "View Full History", + "View Inventory": "View Inventory", + "View Logs": "View Logs", + "View More": "View More", + "View Slots": "View Slots", + "View all warehouses": "View all warehouses", + "View slot-level inventory for each machine": "View slot-level inventory for each machine", + "Visit Gift": "Visit Gift", + "Waiting": "Waiting", + "Waiting for Payment": "Waiting for Payment", + "Warehouse": "Warehouse", + "Warehouse Info": "Warehouse Info", + "Warehouse Inventory": "Warehouse Inventory", + "Warehouse List": "Warehouse List", + "Warehouse List (All)": "Warehouse List (All)", + "Warehouse List (Individual)": "Warehouse List (Individual)", + "Warehouse Management": "Warehouse Management", + "Warehouse Overview": "Warehouse Overview", + "Warehouse Permissions": "Warehouse Permissions", + "Warehouse Transfer": "Warehouse Transfer", + "Warehouse created successfully.": "Warehouse created successfully.", + "Warehouse deleted successfully.": "Warehouse deleted successfully.", + "Warehouse purchase records": "Warehouse purchase records", + "Warehouse to Warehouse": "Warehouse to Warehouse", + "Warehouse to warehouse transfers": "Warehouse to warehouse transfers", + "Warehouse updated successfully.": "Warehouse updated successfully.", + "Warning": "Warning", + "Warning: You are editing your own role!": "Warning: You are editing your own role!", + "Warranty": "Warranty", + "Warranty End": "Warranty End", + "Warranty Service": "Warranty Service", + "Warranty Start": "Warranty Start", + "Welcome Gift": "Welcome Gift", + "Welcome Gift Feature": "Welcome Gift Feature", + "Welcome Gift Status": "Welcome Gift Status", + "Work Content": "Work Content", + "Yes, regenerate": "Yes, regenerate", + "Yesterday": "Yesterday", + "You cannot assign permissions you do not possess.": "You cannot assign permissions you do not possess.", + "You cannot delete your own account.": "You cannot delete your own account.", + "Your email address is unverified.": "Your email address is unverified.", + "Your recent account activity": "Your recent account activity", + "accounts": "Account Management", + "admin": "管理員", + "analysis": "Analysis Management", + "app": "APP Management", + "audit": "Audit Management", + "basic-settings": "Basic Settings", + "basic.machines": "機台設定", + "basic.payment-configs": "客戶金流設定", + "by": "by", + "companies": "Customer Management", + "data-config": "Data Configuration", + "data-config.sub-account-roles": "子帳號角色", + "data-config.sub-accounts": "子帳號管理", + "e.g. 500ml \/ 300g": "e.g. 500ml \/ 300g", + "e.g. John Doe": "e.g. John Doe", + "e.g. TWSTAR": "e.g. TWSTAR", + "e.g. Taiwan Star": "e.g. Taiwan Star", + "e.g. johndoe": "e.g. johndoe", + "e.g., Beverage": "e.g., Beverage", + "e.g., Company Standard Pay": "e.g., Company Standard Pay", + "e.g., Drinks": "e.g., Drinks", + "e.g., Taipei Station": "e.g., Taipei Station", + "e.g., お飲み物": "e.g., O-Nomimono", + "failed": "failed", + "files selected": "files selected", + "hours ago": "hours ago", + "image": "image", + "items": "items", + "john@example.com": "john@example.com", + "line": "Line Management", + "machines": "Machine Management", + "members": "Member Management", "menu.analysis": "Analysis Management", "menu.app": "APP Management", "menu.audit": "Audit Management", @@ -559,795 +1340,31 @@ "menu.sales": "Sales Management", "menu.special-permission": "Special Permission", "menu.warehouses": "Warehouse Management", - "Merchant IDs": "Merchant IDs", - "Merchant payment gateway settings management": "Merchant payment gateway settings management", - "Message": "Message", - "Message Content": "Message Content", - "Message Display": "Message Display", "min": "min", - "Min 8 characters": "Min 8 characters", "mins ago": "mins ago", - "Model": "Model", - "Model Name": "Model Name", - "Models": "Models", - "Modifying your own administrative permissions may result in losing access to certain system functions.": "Modifying your own administrative permissions may result in losing access to certain system functions.", - "Monitor and manage stock levels across your fleet": "Monitor and manage stock levels across your fleet", - "Monitor events and system activity across your vending fleet.": "Monitor events and system activity across your vending fleet.", - "Monthly cumulative revenue overview": "Monthly cumulative revenue overview", - "Monthly Transactions": "Monthly Transactions", - "Multilingual Names": "Multilingual Names", - "N/A": "N/A", - "Name": "Name", - "Name in English": "Name in English", - "Name in Japanese": "Name in Japanese", - "Name in Traditional Chinese": "Name in Traditional Chinese", - "Never Connected": "Never Connected", - "New Command": "New Command", - "New Machine Name": "New Machine Name", - "New Password": "New Password", - "New Password (leave blank to keep current)": "New Password (leave blank to keep current)", - "New Record": "New Record", - "New Role": "New Role", - "New Sub Account Role": "New Sub Account Role", - "Next": "Next", - "No accounts found": "No accounts found", - "No active cargo lanes found": "No active cargo lanes found", - "No additional notes": "No additional notes", - "No advertisements found.": "No advertisements found.", - "No alert summary": "No alert summary", - "No assignments": "No assignments", - "No command history": "No command history", - "No Company": "No Company", - "No configurations found": "No configurations found", - "No content provided": "No content provided", - "No customers found": "No customers found", - "No data available": "No data available", - "No file uploaded.": "No file uploaded.", - "No heartbeat for over 30 seconds": "No heartbeat for over 30 seconds", - "No images uploaded": "No images uploaded", - "No Invoice": "No Invoice", - "No location set": "No location set", - "No login history yet": "No login history yet", - "No logs found": "No logs found", - "No Machine Selected": "No Machine Selected", - "No machines assigned": "未分配機台", - "No machines available": "No machines available", - "No machines available in this company.": "此客戶目前沒有可供分配的機台。", - "No maintenance records found": "No maintenance records found", - "No matching logs found": "No matching logs found", - "No matching machines": "No matching machines", - "No materials available": "No materials available", - "No permissions": "No permissions", - "No records found": "No records found", - "No roles available": "No roles available", - "No roles found.": "No roles found.", - "No slots found": "No slots found", - "No slot data available": "No slot data available", - "No users found": "No users found", - "None": "None", - "Normal": "Normal", - "Not Used": "Not Used", - "Not Used Description": "不使用第三方支付介接", - "Notes": "Notes", - "OEE": "OEE", - "OEE Efficiency Trend": "OEE Efficiency Trend", - "OEE Score": "OEE Score", - "OEE.Activity": "Activity", - "OEE.Errors": "Errors", - "OEE.Hours": "Hours", - "OEE.Orders": "Orders", - "OEE.Sales": "Sales", "of": "of", - "Offline": "Offline", - "Offline Machines": "Offline Machines", - "Once your account is deleted, all of its resources and data will be permanently deleted. Before deleting your account, please download any data or information that you wish to retain.": "Once your account is deleted, all of its resources and data will be permanently deleted. Before deleting your account, please download any data or information that you wish to retain.", - "Once your account is deleted, all of its resources and data will be permanently deleted. Please enter your password to confirm you would like to permanently delete your account.": "Once your account is deleted, all of its resources and data will be permanently deleted. Please enter your password to confirm you would like to permanently delete your account.", - "Online": "Online", - "Online Duration": "Online Duration", - "Online Machines": "Online Machines", - "Online Status": "Online Status", - "Only system roles can be assigned to platform administrative accounts.": "Only system roles can be assigned to platform administrative accounts.", - "Operation Note": "Operation Note", - "Operation Records": "Operation Records", - "Operational Parameters": "Operational Parameters", - "Operations": "Operations", - "Operator": "Operator", - "Optimal": "Optimal", - "Optimized for display. Supported formats: JPG, PNG, WebP.": "Optimized for display. Supported formats: JPG, PNG, WebP.", - "Optimized Performance": "Optimized Performance", - "Optional": "Optional", - "Order Management": "Order Management", - "Orders": "Orders", - "Original": "Original", - "Original Type": "Original Type", - "Original:": "Ori:", - "Other Permissions": "Other Permissions", - "Others": "Others", - "Output Count": "Output Count", - "Owner": "Company Name", - "Page Lock Status": "Page Lock Status", - "Parameters": "Parameters", - "PARTNER_KEY": "PARTNER_KEY", - "Pass Code": "Pass Code", - "Pass Codes": "Pass Codes", - "Password": "Password", - "Password updated successfully.": "密碼已成功變更。", - "Payment & Invoice": "Payment & Invoice", - "Payment Buffer Seconds": "Payment Buffer Seconds", - "Payment Config": "Payment Config", - "Payment Configuration": "Payment Configuration", - "Payment Configuration created successfully.": "Payment Configuration created successfully.", - "Payment Configuration deleted successfully.": "Payment Configuration deleted successfully.", - "Payment Configuration updated successfully.": "Payment Configuration updated successfully.", - "Payment Selection": "Payment Selection", - "Pending": "Waiting for Machine", "pending": "pending", - "Performance": "Performance", - "Permanent": "Permanent", - "Permanently Delete Account": "Permanently Delete Account", - "Permission Settings": "Permission Settings", - "Permissions": "Permissions", "permissions": "permissions", - "Permissions updated successfully": "Authorization updated successfully", "permissions.accounts": "permissions.accounts", "permissions.companies": "permissions.companies", "permissions.roles": "permissions.roles", - "Phone": "Phone", - "Photo Slot": "Photo Slot", - "PI_MERCHANT_ID": "PI_MERCHANT_ID", - "Picked up": "Picked up", - "Picked up Time": "Picked up Time", - "Pickup Code": "Pickup Code", - "Pickup Codes": "Pickup Codes", - "Playback Order": "Playback Order", - "Please check the following errors:": "Please check the following errors:", - "Please check the form for errors.": "Please check the form for errors.", - "Please confirm the details below": "Please confirm the details below", - "Please select a machine first": "Please select a machine first", - "Please select a machine model": "Please select a machine model", - "Please select a machine to view and manage its advertisements.": "Please select a machine to view and manage its advertisements.", - "Please select a machine to view metrics": "請選擇機台以查看數據", - "Please select a material": "Please select a material", - "Please select a slot": "Please select a slot", - "PNG, JPG up to 2MB": "PNG, JPG up to 2MB", - "PNG, JPG, WEBP up to 10MB": "PNG, JPG, WEBP up to 10MB", - "Points": "Points", - "Point Rules": "Point Rules", - "Point Settings": "Point Settings", - "Points Rule": "Points Rule", - "Points Settings": "Points Settings", - "Points toggle": "Points toggle", - "POS Reboot": "POS Reboot", - "Position": "Position", - "Preview": "Preview", - "Previous": "Previous", - "Price / Member": "Price / Member", - "Pricing Information": "Pricing Information", - "Product Count": "Product Count", - "Product created successfully": "Product created successfully", - "Product deleted successfully": "Product deleted successfully", - "Product Details": "Product Details", - "Product Image": "Product Image", - "Product Info": "Product Info", - "Product List": "Product List", - "Product Management": "Product Management", - "Product Name (Multilingual)": "Product Name (Multilingual)", - "Product Reports": "Product Reports", - "Product Status": "商品狀態", - "Product status updated to :status": "Product status updated to :status", - "Product updated successfully": "Product updated successfully", - "Production Company": "Production Company", - "Profile": "Profile", - "Profile Information": "Profile Information", - "Profile Settings": "Profile Settings", - "Profile updated successfully.": "Profile updated successfully.", - "Promotions": "Promotions", - "Protected": "Protected", - "PS_LEVEL": "PS_LEVEL", - "PS_MERCHANT_ID": "PS_MERCHANT_ID", - "Purchase Audit": "Purchase Audit", - "Purchase Finished": "Purchase Finished", - "Purchases": "Purchases", - "Purchasing": "Purchasing", - "Qty": "Qty", - "Quality": "品質 (Quality)", - "Questionnaire": "Questionnaire", - "Quick Expiry Check": "Quick Expiry Check", - "Quick Maintenance": "Quick Maintenance", - "Quick search...": "Quick search...", - "Quick Select": "快速選取", - "Real-time fleet efficiency and OEE metrics": "Real-time fleet efficiency and OEE metrics", - "Real-time monitoring across all machines": "Real-time monitoring across all machines", - "Real-time monitoring and adjustment of cargo lane inventory and expiration dates": "Real-time monitoring and adjustment of cargo lane inventory and expiration dates", - "Real-time OEE analysis awaits": "即時 OEE 分析預備中", - "Real-time Operation Logs (Last 50)": "Real-time Operation Logs (Last 50)", - "Real-time performance analytics": "Real-time performance analytics", - "Real-time status monitoring": "Real-time status monitoring", - "Reason for this command...": "Reason for this command...", - "Receipt Printing": "Receipt Printing", - "Recent Commands": "Recent Commands", - "Recent Login": "Recent Login", - "Recently reported errors or warnings in logs": "Recently reported errors or warnings in logs", - "Regenerate": "Regenerate", - "Regenerating the token will disconnect the physical machine until it is updated. Continue?": "Regenerating the token will disconnect the physical machine until it is updated. Continue?", "remote": "remote", - "Remote Change": "Remote Change", - "Remote Checkout": "Remote Checkout", - "Remote Command Center": "Remote Command Center", - "Remote Dispense": "Remote Dispense", - "Remote Lock": "Remote Lock", - "Remote Management": "Remote Management", - "Remote Permissions": "Remote Permissions", - "Remote Reboot": "Remote Checkout", - "Remote Settlement": "Remote Settlement", - "Removal": "Removal", - "Repair": "Repair", - "Replenishment Audit": "Replenishment Audit", - "Replenishment Page": "Replenishment Page", - "Replenishment Records": "Replenishment Records", - "Replenishments": "Replenishments", - "Reporting Period": "Reporting Period", "reservation": "reservation", - "Reservation Members": "Reservation Members", - "Reservation System": "Reservation System", - "Reservations": "Reservations", - "Reset POS terminal": "Reset POS terminal", - "Restart entire machine": "Restart entire machine", - "Restrict machine UI access": "Restrict machine UI access", - "Restrict UI Access": "Restrict UI Access", - "Retail Price": "Retail Price", - "Returns": "Returns", - "Risk": "Risk", - "Role": "Role", - "Role created successfully.": "Role created successfully.", - "Role deleted successfully.": "Role deleted successfully.", - "Role Identification": "Role Identification", - "Role Management": "Role Management", - "Role Name": "Role Name", - "Role name already exists in this company.": "Role name already exists in this company.", - "Role not found.": "Role not found.", - "Role Permissions": "Role Permissions", - "Role Settings": "Role Permissions", - "Role Type": "Role Type", - "Role updated successfully.": "Role updated successfully.", - "Roles": "Role Permissions", "roles": "roles", - "Roles scoped to specific customer companies.": "Roles scoped to specific customer companies.", - "Running": "Running", - "Running Status": "Running Status", "s": "s", - "Sale Price": "Sale Price", - "Sales": "Sales", "sales": "sales", - "Sales Activity": "Sales Activity", - "Sales Management": "Sales Management", - "Sales Permissions": "Sales Permissions", - "Sales Records": "Sales Records", - "Save": "Save", - "Save Changes": "Save Changes", - "Save Config": "Save Config", - "Save Material": "Save Material", - "Save Permissions": "Save Permissions", - "Saved.": "Saved.", - "Saving...": "Saving...", - "Scale level and access control": "Scale level and access control", - "Scan this code to quickly access the maintenance form for this device.": "Scan this code to quickly access the maintenance form for this device.", - "Search accounts...": "Search accounts...", - "Search by name or S/N...": "Search by name or S/N...", - "Search cargo lane": "Search cargo lane", - "Search Company Title...": "Search Company Title...", - "Search categories...": "Search categories...", - "Search company...": "Search company...", - "Search configurations...": "Search configurations...", - "Search customers...": "Search customers...", - "Search Machine...": "Search Machine...", - "Search machines by name or serial...": "Search machines by name or serial...", - "Search machines...": "Search machines...", - "Search models...": "Search models...", - "Search products...": "Search products...", - "Search roles...": "Search roles...", - "Search serial no or name...": "Search serial no or name...", - "Search serial or machine...": "Search serial or machine...", - "Search serial or name...": "Search serial or name...", - "Search users...": "Search users...", - "Search...": "Search...", - "Seconds": "Seconds", - "Security & State": "Security & State", - "Security Controls": "Security Controls", - "Select a machine to deep dive": "Please select a machine to deep dive", - "Select a material to play on this machine": "Select a material to play on this machine", - "Select All": "Select All", - "Select an asset from the left to start analysis": "Select an asset from the left to start analysis", - "Select Cargo Lane": "Select Cargo Lane", - "Select Category": "Select Category", - "Select Company": "Select Company Name", - "Select Company (Default: System)": "Select Company (Default: System)", - "Select date to sync data": "Select date to sync data", - "Select Machine": "Select Machine", - "Select Machine to view metrics": "Please select a machine to view metrics", - "Select Material": "Select Material", - "Select Model": "Select Model", - "Select Owner": "Select Company Name", - "Select Slot...": "Select Slot...", - "Select Target Slot": "Select Target Slot", - "Select...": "Select...", - "Selected": "Selected", - "Selected Date": "Search Date", - "Selection": "Selection", - "Sent": "Picked up by Machine", "sent": "sent", - "Serial & Version": "Serial & Version", - "Serial NO": "SERIAL NO", - "Serial No": "Serial No", - "Serial Number": "Serial Number", "set": "set", - "Settlement": "Settlement", - "Show": "Show", - "Show material code field in products": "Show material code field in products", - "Show points rules in products": "Show points rules in products", - "Showing": "Showing", - "Showing :from to :to of :total items": "Showing :from to :to of :total items", - "Sign in to your account": "Sign in to your account", - "Signed in as": "Signed in as", - "Slot Mechanism (default: Conveyor, check for Spring)": "Slot Mechanism (default: Conveyor, check for Spring)", - "Slot No": "Slot No", - "Slot Status": "Slot Status", - "Slot Test": "Slot Test", - "Slot updated successfully.": "Slot updated successfully.", - "Smallest number plays first.": "Smallest number plays first.", - "Some fields need attention": "Some fields need attention", - "Sort Order": "Sort Order", - "Special Permission": "Special Permission", "special-permission": "special-permission", - "Specification": "Specification", - "Specifications": "Specifications", - "Spring Channel Limit": "Spring Channel Limit", - "Spring Limit": "Spring Limit", - "Staff Stock": "Staff Stock", - "Standby": "Standby", "standby": "standby", - "Standby Ad": "Standby Ad", - "Start Date": "Start Date", - "Statistics": "Statistics", - "Status": "Status", - "Sub / Card / Scan": "Sub / Card / Scan", - "Status / Temp / Sub / Card / Scan": "Status / Temp / Sub / Card / Scan", - "Stock": "Stock", - "Stock & Expiry": "Stock & Expiry", - "Stock & Expiry Management": "Stock & Expiry Management", - "Stock & Expiry Overview": "Stock & Expiry Overview", - "Stock Management": "Stock Management", - "Stock Quantity": "Stock Quantity", - "Stock:": "Stock:", - "Store Gifts": "Store Gifts", - "Store ID": "Store ID", - "Store Management": "Store Management", - "StoreID": "StoreID", - "Sub Account Management": "Sub Account Management", - "Sub Account Roles": "Sub Account Roles", - "Sub Accounts": "Sub Accounts", - "Sub-actions": "子項目", - "Sub-machine Status Request": "Sub-machine Status", - "Submit Record": "Submit Record", - "Success": "Success", "success": "success", - "Super Admin": "Super Admin", "super-admin": "super-admin", - "Super-admin role cannot be assigned to tenant accounts.": "Super-admin role cannot be assigned to tenant accounts.", - "Superseded": "Superseded", - "Superseded by new adjustment": "Superseded by new adjustment", - "Superseded by new command": "Superseded by new command", - "Survey Analysis": "Survey Analysis", - "Syncing Permissions...": "Syncing Permissions...", - "SYSTEM": "SYSTEM", - "System": "System", - "System & Security Control": "System & Security Control", - "System Default": "System Default", - "System Default (All Companies)": "System Default (All Companies)", - "System Default (Common)": "System Default (Common)", - "System Level": "System Level", - "System Official": "System Official", - "System Reboot": "System Reboot", - "System Role": "System Role", - "System role name cannot be modified.": "System role name cannot be modified.", - "System roles cannot be deleted by tenant administrators.": "System roles cannot be deleted by tenant administrators.", - "System roles cannot be modified by tenant administrators.": "System roles cannot be modified by tenant administrators.", - "System super admin accounts cannot be deleted.": "System super admin accounts cannot be deleted.", - "System super admin accounts cannot be modified via this interface.": "System super admin accounts cannot be modified via this interface.", - "Systems Initializing": "Systems Initializing", - "TapPay Integration": "TapPay Integration", - "TapPay Integration Settings Description": "TapPay Payment Integration Settings", - "Target": "目標", - "Target Position": "Target Position", - "Tax ID": "Tax ID", - "Tax ID (Optional)": "Tax ID (Optional)", - "Temperature": "Temperature", - "TermID": "TermID", - "The image is too large. Please upload an image smaller than 1MB.": "The image is too large. Please upload an image smaller than 1MB.", - "The Super Admin role cannot be deleted.": "The Super Admin role cannot be deleted.", - "The Super Admin role is immutable.": "The Super Admin role is immutable.", - "The Super Admin role name cannot be modified.": "The Super Admin role name cannot be modified.", - "This is a system administrator role. Its name is locked to ensure system stability.": "This is a system administrator role. Its name is locked to ensure system stability.", - "This role belongs to another company and cannot be assigned.": "This role belongs to another company and cannot be assigned.", - "Time": "Time", - "Time Slots": "Time Slots", - "Timer": "Timer", - "Timestamp": "Timestamp", - "To": "To", "to": "to", - "To:": "To:", - "Today Cumulative Sales": "Today Cumulative Sales", - "Today's Transactions": "Today's Transactions", - "Total": "Total", - "Total Connected": "Total Connected", - "Total Customers": "Total Customers", - "Total Daily Sales": "Today's Total Sales", - "Total Gross Value": "Total Gross Value", - "Total items": "Total items: :count", - "Total Logins": "Total Logins", - "Total Selected": "Total Selected", - "Total Slots": "Total Slots", - "Track Channel Limit": "Track Channel Limit", - "Track device health and maintenance history": "Track device health and maintenance history", - "Track Limit": "Track Limit", - "Traditional Chinese": "Traditional Chinese", - "Transfer Audit": "Transfer Audit", - "Transfers": "Transfers", - "Trigger": "Trigger", - "Trigger Dispense": "Trigger Dispense", - "Trigger Remote Dispense": "Trigger Remote Dispense", - "Tutorial Page": "Tutorial Page", - "Type": "Type", - "Type to search or leave blank for system defaults.": "Type to search or leave blank for system defaults.", - "UI Elements": "UI Elements", - "Unauthorized Status": "Unauthorized", - "Uncategorized": "Uncategorized", - "Unified Operational Timeline": "Unified Operational Timeline", - "Units": "Units", - "Unknown": "Unknown", - "Unlock": "Unlock", - "Unlock Now": "Unlock Now", - "Unlock Page": "Unlock Page", - "Update": "Update", - "Update Authorization": "Update Authorization", - "Update Customer": "Update Customer", - "Update existing role and permissions.": "Update existing role and permissions.", - "Update identification for your asset": "Update identification for your asset", - "Update Password": "Update Password", - "Update Product": "Update Product", - "Update your account's profile information and email address.": "Update your account's profile information and email address.", - "Upload Image": "Upload Image", - "Upload New Images": "Upload New Images", - "Upload Video": "Upload Video", - "Uploading new images will replace all existing images.": "Uploading new images will replace all existing images.", - "User": "User", "user": "user", - "User Info": "User Info", - "Username": "Username", - "Users": "Users", - "Utilization Rate": "Utilization Rate", - "Utilization Timeline": "稼動時序", - "Utilization, OEE and Operational Intelligence": "稼動率、OEE 與營運情報", - "Utilized Time": "Utilized Time", - "Valid Until": "Valid Until", - "Validation Error": "Validation Error", - "Vending": "Vending", "vending": "vending", - "Vending Page": "Vending Page", - "Venue Management": "Venue Management", "video": "video", - "View Details": "View Details", - "View Inventory": "View Inventory", - "View Logs": "View Logs", - "View More": "View More", - "Visit Gift": "Visit Gift", "visit_gift": "visit_gift", "vs Yesterday": "vs Yesterday", - "Waiting for Payment": "Waiting for Payment", - "Warehouse List": "Warehouse List", - "Warehouse List (All)": "Warehouse List (All)", - "Warehouse List (Individual)": "Warehouse List (Individual)", - "Warehouse Management": "Warehouse Management", - "Warehouse Permissions": "Warehouse Permissions", "warehouses": "warehouses", - "Warning": "Warning", - "Warning: You are editing your own role!": "Warning: You are editing your own role!", - "Welcome Gift": "Welcome Gift", - "Welcome Gift Status": "Welcome Gift Status", - "Work Content": "Work Content", - "Yes, regenerate": "Yes, regenerate", - "Yesterday": "Yesterday", - "You cannot assign permissions you do not possess.": "You cannot assign permissions you do not possess.", - "You cannot delete your own account.": "You cannot delete your own account.", - "Your email address is unverified.": "Your email address is unverified.", - "Your recent account activity": "Your recent account activity", - "待填寫": "待填寫", - "Dispensing in progress": "Dispensing in progress", - "Dispense successful": "Dispense successful", - "Slot jammed": "Slot jammed", - "Motor not stopped": "Motor not stopped", - "Slot not found": "Slot not found", - "Dispense error (0407)": "Dispense error (0407)", - "Dispense error (0408)": "Dispense error (0408)", - "Dispense error (0409)": "Dispense error (0409)", - "Dispense error (040A)": "Dispense error (040A)", - "Elevator rising": "Elevator rising", - "Elevator descending": "Elevator descending", - "Elevator rise error": "Elevator rise error", - "Elevator descent error": "Elevator descent error", - "Pickup door closed": "Pickup door closed", - "Pickup door error": "Pickup door error", - "Delivery door opened": "Delivery door opened", - "Delivery door open error": "Delivery door open error", - "Delivering product": "Delivering product", - "Delivery door closed": "Delivery door closed", - "Delivery door close error": "Delivery door close error", - "Hopper empty": "Hopper empty", - "Hopper overheated": "Hopper overheated", - "Hopper heating timeout": "Hopper heating timeout", - "Hopper error (0424)": "Hopper error (0424)", - "Microwave door opened": "Microwave door opened", - "Microwave door error": "Microwave door error", - "Dispense stopped": "Dispense stopped", - "Slot normal": "Slot normal", - "Product empty": "Product empty", - "Slot empty": "Slot empty", - "Slot not closed": "Slot not closed", - "Slot motor error (0207)": "Slot motor error (0207)", - "Slot motor error (0208)": "Slot motor error (0208)", - "Slot motor error (0209)": "Slot motor error (0209)", - "Hopper empty (0212)": "Hopper empty (0212)", - "Machine normal": "Machine normal", - "Elevator sensor error": "Elevator sensor error", - "Pickup door not closed": "Pickup door not closed", - "Elevator failure": "Elevator failure", - "Slot": "Slot", - "Page 0": "Offline", - "Page 1": "Home", - "Page 2": "Vending", - "Page 3": "Admin", - "Page 4": "Restock", - "Page 5": "Tutorial", - "Page 6": "Purchasing", - "Page 7": "Locked", - "Page 60": "Dispense Success", - "Page 61": "Slot Test", - "Page 62": "Payment Selection", - "Page 63": "Waiting for Payment", - "Page 64": "Dispensing", - "Page 65": "Receipt", - "Page 66": "Passcode", - "Page 67": "Pickup Code", - "Page 68": "Message", - "Page 69": "Purchase Cancelled", - "Page 610": "Purchase Ended", - "Page 611": "Store Gift", - "Page 612": "Dispense Failed", - "Door Opened": "Door Opened", - "Door Closed": "Door Closed", - "Firmware updated to :version": "Firmware updated to :version", - "Model changed to :model": "Model changed to :model", - "User logged in: :name": "User logged in: :name", - "Login failed: :account": "Login failed: :account", - "Unauthorized login attempt: :account": "Unauthorized login attempt: :account", - "Contract Model": "Contract Model", - "Warranty Service": "Warranty Service", - "Software Service": "Software Service", - "Modification History": "Modification History", - "No history records": "No history records", - "Initial contract registration": "Initial contract registration", - "Contract information updated": "Contract information updated", - "Warranty Start": "Warranty Start", - "Warranty End": "Warranty End", - "Software Start": "Software Start", - "Software End": "Software End", - "Contract History": "Contract History", - "Unlimited": "Unlimited", - "Change Note": "Change Note", - "Log Time": "Log Time", - "Service Periods": "Service Periods", - "Creator": "Creator", - "View Full History": "View Full History", - "Contract Start": "Contract Start", - "Contract End": "Contract End", - "Contract History Detail": "Contract History Detail", - "by": "by", - "Service Terms": "Service Periods", - "Contract": "Contract", - "Warranty": "Warranty", - "Software": "Software", - "Schedule": "Schedule", - "Immediate": "Immediate", - "Indefinite": "Indefinite", - "Ongoing": "Ongoing", - "Waiting": "Waiting", - "Publish Time": "Publish Time", - "Expired Time": "Expired Time", - "Inventory synced with machine": "Inventory synced with machine", - "Failed to load tab content": "Failed to load tab content", - "No machines found": "No machines found", - "No products found matching your criteria.": "No products found matching your criteria.", - "No categories found.": "No categories found.", - "Track Limit (Track/Spring)": "Track Limit (Track/Spring)", - "Temperature reported: :temp°C": "Temperature reported: :temp°C", - "Temperature updated to :temp°C": "Temperature updated to :temp°C", - "Transaction processed: :id": "Transaction processed: :id", - "Unknown error": "Unknown error", - "Remote dispense successful for slot :slot": "Remote dispense successful for slot :slot", - "Machine not found": "Machine not found", - "Command not found": "Command not found", - "Restock report accepted": "Restock report accepted", - "Result reported": "Result reported", - "Error report accepted": "Error report accepted", - "Unauthorized: Account not found": "Unauthorized: Account not found", - "Unauthorized: Account not authorized for this machine": "Unauthorized: Account not authorized for this machine", - "Slot report synchronized success": "Slot report synchronized success", - "Error: :message (:code)": "Error: :message (:code)", - "Syncing": "Syncing", - "This slot is syncing with the machine. Please wait.": "This slot is syncing with the machine. Please wait.", - "Loading Data": "Loading Data", - "All Status": "All Status", - "CASH": "CASH", - "ITEM": "ITEM", - "This slot has a pending update. Please wait for the previous command to complete.": "This slot has a pending update. Please wait for the previous command to complete.", - "This slot has a pending command. Please wait.": "This slot has a pending command. Please wait.", - "Out of stock.": "Out of stock.", - "Save error:": "Save error:", - "Warehouse Overview": "Warehouse Overview", - "Inventory Management": "Inventory Management", - "Transfer Orders": "Transfer Orders", - "Machine Replenishment": "Machine Replenishment", - "Machine Inventory Overview": "Machine Inventory Overview", - "Manage your warehouses, including main and branch warehouses": "Manage your warehouses, including main and branch warehouses", - "View all warehouses": "View all warehouses", - "Create main and branch warehouses": "Create main and branch warehouses", - "Assign warehouse managers": "Assign warehouse managers", - "Monitor warehouse stock summary": "Monitor warehouse stock summary", - "Manage warehouse stock levels, stock-in orders, adjustments, and movement history": "Manage warehouse stock levels, stock-in orders, adjustments, and movement history", - "Stock overview by warehouse": "Stock overview by warehouse", - "Create stock-in orders": "Create stock-in orders", - "Stock adjustments and damage reports": "Stock adjustments and damage reports", - "Complete movement history log": "Complete movement history log", - "Manage stock transfers between warehouses and machine returns": "Manage stock transfers between warehouses and machine returns", - "Warehouse to warehouse transfers": "Warehouse to warehouse transfers", - "Machine to warehouse returns": "Machine to warehouse returns", - "Transfer order status tracking": "Transfer order status tracking", - "Create replenishment orders and manage restocking from warehouse to machines": "Create replenishment orders and manage restocking from warehouse to machines", - "Smart replenishment suggestions": "Smart replenishment suggestions", - "One-click replenishment order generation": "One-click replenishment order generation", - "Assign replenishment staff": "Assign replenishment staff", - "Replenishment history": "Replenishment history", - "Real-time inventory status across all machines with expiry tracking": "Real-time inventory status across all machines with expiry tracking", - "View slot-level inventory for each machine": "View slot-level inventory for each machine", - "Low stock and out-of-stock alerts": "Low stock and out-of-stock alerts", - "Expiry date tracking and warnings": "Expiry date tracking and warnings", - "Quick replenishment from this view": "Quick replenishment from this view", - "Cash Module": "Cash Module", - "Save Settings": "Save Settings", - "System Settings": "System Settings", - "Tax System": "Tax System", - "Electronic Invoice": "Electronic Invoice", - "Card System": "Card System", - "Credit Card / Contactless": "Credit Card / Contactless", - "Scan Pay": "Scan Pay", - "ESUN Scan Pay": "ESUN Scan Pay", - "LinePay": "LinePay", - "Other Features": "Other Features", - "Shopping Cart": "Shopping Cart", - "Goods & System Settings": "Goods & System Settings", - "Display Material Code": "Display Material Code", - "Enable Points Mechanism": "Enable Points Mechanism", - "Taxation System": "Taxation System", - "Card Terminal System": "Card Terminal System", - "QR Scan Payment": "QR Scan Payment", - "Shopping Cart Feature": "Shopping Cart Feature", - "Welcome Gift Feature": "Welcome Gift Feature", - "Cash Module Feature": "Cash Module Feature", - "Includes Credit Card/Mobile Pay": "Includes Credit Card/Mobile Pay", - "E.SUN QR Pay": "E.SUN QR Pay", - "LinePay Payment": "LinePay Payment", - "Coin/Bill Acceptor": "Coin/Bill Acceptor", - "System settings updated successfully.": "System settings updated successfully.", - "Update Settings": "Update Settings", - "Material Code": "Material Code", - "Points": "Points", - "Warehouse Management": "Warehouse Management", - "Warehouse Overview": "Warehouse Overview", - "Add Warehouse": "Add Warehouse", - "Total Warehouses": "Total Warehouses", - "Main Warehouses": "Main Warehouses", - "Branch Warehouses": "Branch Warehouses", - "Low Stock Alerts": "Low Stock Alerts", - "Search warehouses...": "Search warehouses...", - "Main": "Main", - "Branch": "Branch", - "Warehouse Info": "Warehouse Info", - "Products / Stock": "Products / Stock", - "Products": "Products", - "Stock": "Stock", - "Warehouse created successfully.": "Warehouse created successfully.", - "Warehouse updated successfully.": "Warehouse updated successfully.", - "Warehouse deleted successfully.": "Warehouse deleted successfully.", - "Cannot delete warehouse with existing stock": "Cannot delete warehouse with existing stock", - "Inventory Management": "Inventory Management", - "Track stock levels, stock-in orders, and movement history": "Track stock levels, stock-in orders, and movement history", - "New Stock-In Order": "New Stock-In Order", - "Stock Levels": "Stock Levels", - "Stock-In Orders": "Stock-In Orders", - "Movement History": "Movement History", - "Search products...": "Search products...", - "All Warehouses": "All Warehouses", - "Product": "Product", - "Warehouse": "Warehouse", - "Quantity": "Quantity", - "Safety Stock": "Safety Stock", - "Low Stock": "Low Stock", - "Out of Stock": "Out of Stock", - "Normal": "Normal", - "No stock data found": "No stock data found", - "Order No.": "Order No.", - "Created By": "Created By", - "Created At": "Created At", - "Draft": "Draft", - "Completed": "Completed", - "Confirm this stock-in order?": "Confirm this stock-in order?", - "Confirm": "Confirm", - "No stock-in orders found": "No stock-in orders found", - "Time": "Time", - "Qty Change": "Qty Change", - "No movement records found": "No movement records found", - "Target Warehouse": "Target Warehouse", - "Select Warehouse": "Select Warehouse", - "Add Item": "Add Item", - "Select Product": "Select Product", - "Qty": "Qty", - "Note": "Note", - "Optional": "Optional", - "Transfer Orders": "Transfer Orders", - "Manage stock transfers between warehouses and machine returns": "Manage stock transfers between warehouses and machine returns", - "New Transfer": "New Transfer", - "All Types": "All Types", - "Warehouse to Warehouse": "Warehouse to Warehouse", - "Machine to Warehouse": "Machine to Warehouse", - "All Statuses": "All Statuses", - "Cancelled": "Cancelled", - "From": "From", - "To": "To", - "Confirm this transfer?": "Confirm this transfer?", - "No transfer orders found": "No transfer orders found", - "Transfer Type": "Transfer Type", - "From Warehouse": "From Warehouse", - "From Machine": "From Machine", - "Select Machine": "Select Machine", - "To Warehouse": "To Warehouse", - "Note (optional)": "Note (optional)", - "Machine Inventory Overview": "Machine Inventory Overview", - "Real-time slot-level inventory across all machines": "Real-time slot-level inventory across all machines", - "Search machines...": "Search machines...", - "Serial No.": "Serial No.", - "Total Stock": "Total Stock", - "Fill Rate": "Fill Rate", - "View Slots": "View Slots", - "Loading...": "Loading...", - "Empty": "Empty", - "Expiry": "Expiry", - "No slot data": "No slot data", - "Machine Replenishment": "Machine Replenishment", - "Create and manage replenishment orders from warehouse to machines": "Create and manage replenishment orders from warehouse to machines", - "New Replenishment": "New Replenishment", - "Pending": "Pending", - "Prepared": "Prepared", - "Delivering": "Delivering", - "Confirm replenishment completed?": "Confirm replenishment completed?", - "No replenishment orders found": "No replenishment orders found", - "Source Warehouse": "Source Warehouse", - "Target Machine": "Target Machine", - "Replenishment Items": "Replenishment Items", - "Slot": "Slot", - "Stock In": "Stock In", - "Stock Out": "Stock Out", - "Adjustment": "Adjustment", - "Damage": "Damage", - "Transfer In": "Transfer In", - "Transfer Out": "Transfer Out" + "待填寫": "待填寫" } \ No newline at end of file diff --git a/lang/ja.json b/lang/ja.json index e96f473..bbe4a4a 100644 --- a/lang/ja.json +++ b/lang/ja.json @@ -1,128 +1,165 @@ { - "Goods & System Settings": "商品とシステム設定", - "Display Material Code": "素材コードを表示", - "Enable Points Mechanism": "ポイント機能を有効化", - "Taxation System": "税務システム", - "Card Terminal System": "カード端末システム", - "QR Scan Payment": "QRスキャン決済機能", - "Shopping Cart Feature": "ショッピングカート機能", - "Welcome Gift Feature": "来店特典機能", - "Cash Module Feature": "現金モジュール機能", - "Includes Credit Card/Mobile Pay": "クレジットカード/モバイル決済を含む", - "E.SUN QR Pay": "玉山QR決済", - "LinePay Payment": "LinePay決済", - "Coin/Bill Acceptor": "コイン/紙幣機", - "System settings updated successfully.": "システム設定が正常に更新されました。", - "Update Settings": "設定を更新", - "Enabled Features": "有効な機能", - "Material Code": "素材コード", - "Points": "ポイント", - "Electronic Invoice": "電子翻訳", + "Actions": "操作", + "Add Item": "項目を追加", + "Add Warehouse": "倉庫を追加", + "Adjustment": "在庫調整", + "All Companies": "すべての会社", + "All Statuses": "すべてのステータス", + "All Types": "すべてのタイプ", + "All Warehouses": "すべての倉庫", + "Approved At": "承認日時", + "Are you sure you want to confirm this stock-in order? This action will update your inventory levels.": "この入庫伝票を確定してもよろしいですか?この操作により在庫レベルが更新されます。", + "Branch": "分倉庫", + "Branch Warehouses": "分倉庫数", + "CREATE STOCK TRANSFERS BETWEEN WAREHOUSES AND MACHINE RETURNS": "倉庫間の転送および機台からの返品伝票を作成", + "Cancelled": "キャンセル済み", + "Cannot delete warehouse with existing stock": "在庫がある倉庫は削除できません。", "Card System": "カード決済システム", - "ESUN": "玉山銀行 (ESUN)", - "LinePay": "LinePay", - "Shopping Cart": "ショッピングカート", - "Welcome Gift": "登録特典", + "Card Terminal System": "カード端末システム", "Cash Module": "現金決済モジュール", + "Cash Module Feature": "現金モジュール機能", + "Coin\/Bill Acceptor": "コイン\/紙幣機", + "Completed": "完了", + "Confirm": "確認", + "Confirm Stock-in Order": "入庫伝票を確認", + "Confirm replenishment completed?": "補充が完了したことを確認しますか?", + "Confirm this stock-in order?": "この入庫伝票を確認しますか?", + "Confirm this transfer?": "この転送を確認しますか?", + "Create Replenishment Order": "補充伝票を作成", + "Create Transfer Order": "転送伝票を作成", + "Create and manage replenishment orders from warehouse to machines": "倉庫から機台への補充伝票の作成と管理", + "Create stock transfers between warehouses and machine returns": "倉庫間の転送および機台からの返品伝票を作成", + "Created At": "作成日時", + "Created By": "作成者", + "Damage": "破損", + "Delivering": "配送中", + "Display Material Code": "素材コードを表示", + "Draft": "下書き", + "E.SUN QR Pay": "玉山QR決済", + "ESUN": "玉山銀行 (ESUN)", + "Electronic Invoice": "電子翻訳", + "Empty": "空", + "Enable Points Mechanism": "ポイント機能を有効化", + "Enabled Features": "有効な機能", + "Expiry": "有効期限", + "Fill Rate": "充填率", + "From": "発送元", + "From Machine": "発送元機台", + "From Warehouse": "発送元倉庫", + "Goods & System Settings": "商品とシステム設定", + "Image": "画像", + "In Stock": "現在庫", + "Includes Credit Card\/Mobile Pay": "クレジットカード\/モバイル決済を含む", + "Inventory Management": "在庫管理", + "LinePay": "LinePay", + "LinePay Payment": "LinePay決済", + "Loading...": "読み込み中...", + "Low Stock": "在庫不足", + "Low Stock Alerts": "低在庫アラート", + "Machine Inventory Overview": "機台在庫概要", + "Machine Replenishment": "機台補充", + "Machine Return": "機台返品", + "Machine to Warehouse": "機台から倉庫", + "Main": "総倉庫", + "Main Warehouses": "総倉庫数", + "Manage stock levels, stock-in orders, and movement history": "在庫レベル、入庫伝票、および移動履歴の管理", + "Manage stock transfers between warehouses and machine returns": "倉庫間の転送および機台からの返品伝票を作成", + "Material Code": "素材コード", + "Movement History": "移動履歴", + "Movement Logs": "移動ログ", + "New Replenishment": "新規補充", + "New Stock-In Order": "新規入庫伝票", + "New Transfer": "新規転送", + "No movement records found": "移動履歴が見つかりません", + "No products found in this warehouse": "この倉庫に在庫はありません", + "No replenishment orders found": "補充伝票が見つかりません", + "No slot data": "貨道データなし", + "No stock data found": "在庫データが見つかりません", + "No stock-in orders found": "入庫伝票が見つかりません", + "No transfer orders found": "転送伝票が見つかりません", + "Normal": "通常", + "Note": "備考", + "Note (optional)": "備考 (任意)", + "Optional": "任意", + "Order Details": "入庫伝票詳細", + "Order No.": "伝票番号", + "Out of Stock": "在庫切れ", + "Pending": "保留中", "Please enter configuration name": "設定名を入力してください", "Please select a company": "会社を選択してください", + "Points": "ポイント", + "Prepared": "準備済み", + "Product": "商品", + "Product Details": "商品詳細", + "Product ID": "商品ID", + "Products": "商品", + "Products \/ Stock": "商品 \/ 在庫", + "Publish": "配信開始", + "QR Scan Payment": "QRスキャン決済機能", + "Qty": "数量", + "Qty Change": "数量変更", + "Quantity": "数量", + "Real-time slot-level inventory across all machines": "すべての機台におけるリアルタイムの貨道別在庫", + "Replenishment Items": "補充項目", + "Replenishment Orders": "機台補充伝票", + "Reset Filters": "フィルターをリセット", + "Safety Stock": "安全在庫", + "Search Product": "商品を検索", + "Search by name...": "名称で検索...", + "Search machines...": "機台を検索...", + "Search products...": "商品を検索...", + "Search warehouses...": "倉庫を検索...", + "Select Machine": "機台を選択", + "Select Product": "商品を選択", + "Select Warehouse": "倉庫を選択", + "Serial No.": "シリアル番号", + "Shopping Cart": "ショッピングカート", + "Shopping Cart Feature": "ショッピングカート機能", + "Slot": "貨道", + "Source Warehouse": "発送元倉庫", + "Status": "ステータス", + "Stock": "在庫", + "Stock In": "入庫", + "Stock Levels": "在庫レベル", + "Stock Out": "出庫", + "Stock flow history": "在庫移動履歴", + "Stock-In Management": "入庫管理", + "Stock-In Orders": "入庫伝票", + "Stock-In Orders Tab": "入庫伝票", + "System settings updated successfully.": "システム設定が正常に更新されました。", + "Target Machine": "対象機台", + "Target Warehouse": "対象倉庫", + "Taxation System": "税務システム", + "Time": "時間", + "To": "配送先", + "To Warehouse": "配送先倉庫", + "Total Stock": "総在庫", + "Total Warehouses": "倉庫総数", + "Track stock levels, stock-in orders, and movement history": "在庫レベル、入庫伝票、および移動履歴の追跡", + "Track stock-in orders and movement history": "入庫伝票および移動履歴の追跡", + "Transfer Audit": "転送監査", + "Transfer In": "転送入", + "Transfer Orders": "転送伝票", + "Transfer Out": "転送出", + "Transfer Type": "転送タイプ", + "Transfers": "転送", + "Unpublish": "配信終了", + "Update Settings": "設定を更新", + "Video": "動画", + "View Details": "詳細を表示", + "View Inventory": "在庫を表示", + "View Slots": "貨道を表示", + "Warehouse": "倉庫", + "Warehouse Info": "倉庫情報", + "Warehouse Inventory": "倉庫在庫状況", "Warehouse Management": "倉庫管理", "Warehouse Overview": "倉庫概要", - "Add Warehouse": "倉庫を追加", - "Total Warehouses": "倉庫総数", - "Main Warehouses": "総倉庫数", - "Branch Warehouses": "分倉庫数", - "Low Stock Alerts": "低在庫アラート", - "Search warehouses...": "倉庫を検索...", - "Main": "総倉庫", - "Branch": "分倉庫", - "Warehouse Info": "倉庫情報", - "Products / Stock": "商品 / 在庫", - "Products": "商品", - "Stock": "在庫", + "Warehouse Transfer": "倉庫転送", "Warehouse created successfully.": "倉庫が正常に作成されました。", - "Warehouse updated successfully.": "倉庫が正常に更新されました。", "Warehouse deleted successfully.": "倉庫が正常に削除されました。", - "Cannot delete warehouse with existing stock": "在庫がある倉庫は削除できません。", - "Inventory Management": "在庫管理", - "Track stock levels, stock-in orders, and movement history": "在庫レベル、入庫伝票、および移動履歴の追跡", - "New Stock-In Order": "新規入庫伝票", - "Stock Levels": "在庫レベル", - "Stock-In Orders": "入庫伝票", - "Movement History": "移動履歴", - "Search products...": "商品を検索...", - "All Warehouses": "すべての倉庫", - "Product": "商品", - "Warehouse": "倉庫", - "Quantity": "数量", - "Safety Stock": "安全在庫", - "Low Stock": "在庫不足", - "Out of Stock": "在庫切れ", - "Normal": "通常", - "No stock data found": "在庫データが見つかりません", - "Order No.": "伝票番号", - "Created By": "作成者", - "Created At": "作成日時", - "Draft": "下書き", - "Completed": "完了", - "Confirm this stock-in order?": "この入庫伝票を確認しますか?", - "Confirm": "確認", - "No stock-in orders found": "入庫伝票が見つかりません", - "Time": "時間", - "Qty Change": "数量変更", - "No movement records found": "移動履歴が見つかりません", - "Target Warehouse": "対象倉庫", - "Select Warehouse": "倉庫を選択", - "Add Item": "項目を追加", - "Select Product": "商品を選択", - "Qty": "数量", - "Note": "備考", - "Optional": "任意", - "Transfer Orders": "転送伝票", - "Manage stock transfers between warehouses and machine returns": "倉庫間の転送および機台からの返品の管理", - "New Transfer": "新規転送", - "All Types": "すべてのタイプ", + "Warehouse purchase records": "倉庫購入記録", "Warehouse to Warehouse": "倉庫間転送", - "Machine to Warehouse": "機台から倉庫", - "All Statuses": "すべてのステータス", - "Cancelled": "キャンセル済み", - "From": "発送元", - "To": "配送先", - "Confirm this transfer?": "この転送を確認しますか?", - "No transfer orders found": "転送伝票が見つかりません", - "Transfer Type": "転送タイプ", - "From Warehouse": "発送元倉庫", - "From Machine": "発送元機台", - "Select Machine": "機台を選択", - "To Warehouse": "配送先倉庫", - "Note (optional)": "備考 (任意)", - "Machine Inventory Overview": "機台在庫概要", - "Real-time slot-level inventory across all machines": "すべての機台におけるリアルタイムの貨道別在庫", - "Search machines...": "機台を検索...", - "Serial No.": "シリアル番号", - "Total Stock": "総在庫", - "Fill Rate": "充填率", - "View Slots": "貨道を表示", - "Loading...": "読み込み中...", - "Empty": "空", - "Expiry": "有効期限", - "No slot data": "貨道データなし", - "Machine Replenishment": "機台補充", - "Create and manage replenishment orders from warehouse to machines": "倉庫から機台への補充伝票の作成と管理", - "New Replenishment": "新規補充", - "Pending": "保留中", - "Prepared": "準備済み", - "Delivering": "配送中", - "Confirm replenishment completed?": "補充が完了したことを確認しますか?", - "No replenishment orders found": "補充伝票が見つかりません", - "Source Warehouse": "発送元倉庫", - "Target Machine": "対象機台", - "Replenishment Items": "補充項目", - "Slot": "貨道", - "Stock In": "入庫", - "Stock Out": "出庫", - "Adjustment": "在庫調整", - "Damage": "破損", - "Transfer In": "転送入", - "Transfer Out": "転送出" + "Warehouse updated successfully.": "倉庫が正常に更新されました。", + "Welcome Gift": "登録特典", + "Welcome Gift Feature": "来店特典機能" } \ No newline at end of file diff --git a/lang/zh_TW.json b/lang/zh_TW.json index 25622de..e26bad8 100644 --- a/lang/zh_TW.json +++ b/lang/zh_TW.json @@ -3,21 +3,30 @@ "30 Seconds": "30 秒", "60 Seconds": "60 秒", "A new verification link has been sent to your email address.": "已將新的驗證連結發送至您的電子郵件地址。", + "AI Prediction": "AI智能預測", + "API Token": "API 金鑰", + "API Token Copied": "API 金鑰已複製", + "API Token regenerated successfully.": "API 金鑰重新產生成功。", + "APK Versions": "APK版本", + "APP Features": "APP功能", + "APP Management": "APP管理", + "APP Version": "APP版本號", + "APP_ID": "APP_ID", + "APP_KEY": "APP_KEY", "Abnormal": "異常", "Account": "帳號", "Account :name status has been changed to :status.": "帳號 :name 的狀態已變更為 :status。", - "Account created successfully.": "帳號已成功建立。", - "Account deleted successfully.": "帳號已成功刪除。", "Account Info": "帳號資訊", "Account List": "帳號列表", "Account Management": "帳號管理", "Account Name": "帳號名稱", "Account Settings": "帳戶設定", "Account Status": "帳號狀態", + "Account created successfully.": "帳號已成功建立。", + "Account deleted successfully.": "帳號已成功刪除。", "Account updated successfully.": "帳號已成功更新。", "Account:": "帳號:", - "accounts": "帳號管理", - "Accounts / Machines": "帳號 / 機台", + "Accounts \/ Machines": "帳號 \/ 機台", "Action": "操作", "Actions": "操作", "Active": "使用中", @@ -27,35 +36,38 @@ "Add Advertisement": "新增廣告", "Add Category": "新增分類", "Add Customer": "新增客戶", + "Add Item": "新增項目", "Add Machine": "新增機台", "Add Machine Model": "新增機台型號", "Add Maintenance Record": "新增維修管理單", "Add Product": "新增商品", "Add Role": "新增角色", + "Add Warehouse": "新增倉庫", + "Add new inventory items to your warehouse": "將新商品入庫至您的倉庫", + "Address": "地址", "Adjust Stock": "調整庫存", "Adjust Stock & Expiry": "調整庫存與效期", + "Adjustment": "庫存調整", "Admin": "管理員", - "admin": "管理員", - "Admin display name": "管理員顯示名稱", "Admin Name": "名稱", "Admin Page": "管理頁", "Admin Sellable Products": "管理者可賣", + "Admin display name": "管理員顯示名稱", "Administrator": "管理員", + "Advertisement List": "廣告列表", + "Advertisement Management": "廣告管理", + "Advertisement Video\/Image": "廣告影片\/圖片", "Advertisement assigned successfully": "廣告投放完成", "Advertisement assigned successfully.": "廣告投放完成。", "Advertisement created successfully": "廣告建立成功", "Advertisement created successfully.": "廣告建立成功。", "Advertisement deleted successfully": "廣告刪除成功", "Advertisement deleted successfully.": "廣告刪除成功。", - "Advertisement List": "廣告列表", - "Advertisement Management": "廣告管理", "Advertisement updated successfully": "廣告更新成功", "Advertisement updated successfully.": "廣告更新成功。", - "Advertisement Video/Image": "廣告影片/圖片", "Affiliated Company": "公司名稱", "Affiliated Unit": "公司名稱", "Affiliation": "所屬單位", - "AI Prediction": "AI智能預測", "Alert Summary": "告警摘要", "Alerts": "警示", "Alerts Pending": "待處理告警", @@ -66,31 +78,27 @@ "All Companies": "所有公司", "All Levels": "所有層級", "All Machines": "所有機台", - "All Status": "所有狀態", "All Stable": "狀態穩定", + "All Status": "所有狀態", + "All Statuses": "所有狀態", "All Times System Timezone": "所有時間為系統時區", + "All Types": "所有類型", + "All Warehouses": "所有倉庫", "Amount": "金額", "An error occurred while saving.": "儲存時發生錯誤。", - "analysis": "分析管理", "Analysis Management": "分析管理", "Analysis Permissions": "分析管理權限", - "API Token": "API 金鑰", - "API Token Copied": "API 金鑰已複製", - "API Token regenerated successfully.": "API 金鑰重新產生成功。", - "APK Versions": "APK版本", - "app": "APP 管理", - "APP Features": "APP功能", - "APP Management": "APP管理", - "APP Version": "APP版本號", - "APP_ID": "APP_ID", - "APP_KEY": "APP_KEY", "Apply changes to all identical products in this machine": "同步套用至此機台內的所有相同商品", "Apply to all identical products in this machine": "同步套用至此機台內的所有相同商品", - "Are you sure to delete this customer?": "您確定要刪除此客戶嗎?", + "Approved At": "審核時間", + "Are you sure to delete this customer?": "確定要刪除此客戶嗎?", + "Are you sure to delete this warehouse? This action cannot be undone.": "確定要刪除此倉庫嗎?此操作無法復原。", + "Are you sure to disable this warehouse?": "確定要停用此倉庫嗎?", "Are you sure you want to change the status of this item? This will affect its visibility on vending machines.": "您確定要變更此項目的狀態嗎?這將會影響其在販賣機上的顯示內容。", "Are you sure you want to change the status of this product? Disabled products will not be visible on the machine.": "確定要變更此商品的狀態嗎?停用的商品將不會在機台上顯示。", "Are you sure you want to change the status? After disabling, this account will no longer be able to log in to the system.": "您確定要變更狀態嗎?停用之後,該帳號將會立即被登出且無法再登入系統。", "Are you sure you want to change the status? This may affect associated accounts.": "您確定要變更狀態嗎?這可能會影響相關帳號的權限效力。", + "Are you sure you want to confirm this stock-in order? This action will update your inventory levels.": "您確定要確認此進貨單嗎?此操作將會更新您的庫存數量。", "Are you sure you want to deactivate this account? After deactivating, this account will no longer be able to log in to the system.": "確定要停用此帳號嗎?停用後將無法登入系統。", "Are you sure you want to delete this account?": "您確定要刪除此帳號嗎?", "Are you sure you want to delete this account? This action cannot be undone.": "確定要刪除此帳號嗎?此操作無法復原。", @@ -110,9 +118,10 @@ "Assign": "分配所屬機台", "Assign Advertisement": "投放廣告", "Assign Machines": "分配機台", + "Assign replenishment staff": "指派補貨人員", + "Assign warehouse managers": "指派倉庫負責人", "Assigned Machines": "授權機台", "Assignment removed successfully.": "廣告投放已移除。", - "audit": "稽核管理", "Audit Management": "稽核管理", "Audit Permissions": "稽核管理權限", "Authorization updated successfully": "授權更新成功", @@ -131,34 +140,41 @@ "Back to List": "返回列表", "Badge Settings": "識別證", "Barcode": "條碼", - "Barcode / Material": "條碼 / 物料編碼", + "Barcode \/ Material": "條碼 \/ 物料編碼", "Basic Information": "基本資訊", "Basic Settings": "基本設定", "Basic Specifications": "基本規格", - "basic-settings": "基本設定", - "basic.machines": "機台設定", - "basic.payment-configs": "客戶金流設定", "Batch": "批號", "Batch No": "批號", "Batch Number": "批號", "Belongs To": "公司名稱", "Belongs To Company": "公司名稱", + "Branch": "分倉", + "Branch Warehouses": "分倉數量", "Business Type": "業務類型", "Buyout": "買斷", + "CASH": "CASH", + "CREATE STOCK TRANSFERS BETWEEN WAREHOUSES AND MACHINE RETURNS": "建立倉庫間調撥或機台退庫單", "Cancel": "取消", "Cancel Purchase": "取消購買", + "Cancelled": "已取消", + "Cannot Delete Role": "無法刪除該角色", "Cannot change Super Admin status.": "無法變更超級管理員的狀態。", "Cannot delete advertisement being used by machines.": "無法刪除正在使用的廣告素材。", "Cannot delete company with active accounts.": "無法刪除仍有客用帳號的客戶。", "Cannot delete model that is currently in use by machines.": "無法刪除目前正在被機台使用的型號。", - "Cannot Delete Role": "無法刪除該角色", "Cannot delete role with active users.": "無法刪除已有綁定帳號的角色。", + "Cannot delete warehouse with existing stock": "無法刪除仍有庫存的倉庫", "Card Reader": "刷卡機", "Card Reader No": "刷卡機編號", "Card Reader Reboot": "刷卡機重啟", "Card Reader Restart": "卡機重啟", "Card Reader Seconds": "刷卡機秒數", + "Card System": "刷卡機系統", "Card Terminal": "刷卡機端", + "Card Terminal System": "刷卡機系統", + "Cash Module": "硬幣機 \/ 紙鈔機模組", + "Cash Module Feature": "現金模組功能", "Category": "類別", "Category Management": "分類管理", "Category Name": "分類名稱", @@ -166,9 +182,10 @@ "Category Name (ja)": "分類名稱 (日文)", "Category Name (zh_TW)": "分類名稱 (繁體中文)", "Change": "更換", + "Change Note": "異動備註", "Change Stock": "零錢庫存", "Channel Limits": "貨道上限", - "Channel Limits (Track/Spring)": "貨道上限 (履帶/彈簧)", + "Channel Limits (Track\/Spring)": "貨道上限 (履帶\/彈簧)", "Channel Limits Configuration": "貨道上限配置", "ChannelId": "ChannelId", "ChannelSecret": "ChannelSecret", @@ -180,19 +197,23 @@ "Click here to re-send the verification email.": "點擊此處重新發送驗證郵件。", "Click to Open Dashboard": "點擊開啟儀表板", "Click to upload": "點擊上傳", - "Close Panel": "關閉控制面板", + "Close Panel": "關閉面板", + "Coin\/Bill Acceptor": "硬幣機\/紙鈔機", "Command Center": "指令中心", "Command Confirmation": "指令確認", + "Command Type": "指令類型", "Command error:": "指令錯誤:", "Command has been queued successfully.": "指令已成功排入佇列。", + "Command not found": "找不到指令", "Command queued successfully.": "指令已加入佇列。", - "Command Type": "指令類型", - "companies": "客戶管理", "Company": "客戶公司", "Company Code": "公司代碼", "Company Information": "公司資訊", "Company Level": "公司層級", "Company Name": "公司名稱", + "Complete": "完成", + "Complete movement history log": "完整的庫存異動歷程", + "Completed": "已完成", "Config Name": "設定名稱", "Configuration Name": "設定名稱", "Confirm": "確認", @@ -203,8 +224,16 @@ "Confirm Deletion": "確認刪除資料", "Confirm Password": "確認新密碼", "Confirm Status Change": "確認變更狀態", + "Confirm Stock-In": "確認進貨", + "Confirm Stock-in Order": "確認進貨單", + "Confirm replenishment completed?": "確定補貨已完成?", + "Confirm this stock-in order?": "確定要確認此進貨單嗎?", + "Confirm this transfer?": "確定要確認此調撥作業嗎?", + "Current Stocks": "目前庫存", "Connected": "通訊中", "Connecting...": "連線中", + "Connection lost (LWT)": "連線中斷", + "Connection restored": "連線恢復", "Connectivity Status": "連線狀態概況", "Connectivity vs Sales Correlation": "連線狀態與銷售關聯分析", "Contact & Details": "聯絡資訊與詳情", @@ -212,21 +241,39 @@ "Contact Info": "聯絡資訊", "Contact Name": "聯絡人姓名", "Contact Phone": "聯絡人電話", + "Contract": "合約", + "Contract End": "合約結束", + "Contract History": "合約歷程", + "Contract History Detail": "合約歷程詳情", + "Contract Model": "合約模式", "Contract Period": "合約期間", + "Contract Start": "合約起始", "Contract Until (Optional)": "合約到期日 (選填)", + "Contract information updated": "合約資訊已更新", "Control": "監控操作", "Cost": "成本", "Coupons": "優惠券", "Create": "建立", - "Create a new role and assign permissions.": "建立新角色並分配對應權限。", "Create Config": "建立配置", "Create Machine": "新增機台", "Create New Role": "建立新角色", "Create Payment Config": "新增金流配置", "Create Product": "建立商品", + "Create Replenishment Order": "建立補貨單", "Create Role": "建立角色", "Create Sub Account Role": "建立子帳號角色", + "Create Transfer Order": "建立調撥單", + "Create a new role and assign permissions.": "建立新角色並分配對應權限。", + "Create and manage replenishment orders from warehouse to machines": "建立並管理從倉庫到機台的補貨單", + "Create main and branch warehouses": "建立總倉與分倉", + "Create replenishment orders and manage restocking from warehouse to machines": "建立補貨單,管理從倉庫到機台的補貨流程", + "Create stock transfers between warehouses and machine returns": "建立倉庫間調撥或機台退庫單", + "Create stock-in orders": "建立入庫單", + "Created At": "建立時間", + "Created By": "建立者", "Creation Time": "建立時間", + "Creator": "建立者", + "Credit Card \/ Contactless": "支援信用卡 \/ 感應支付", "Critical": "嚴重", "Current": "當前", "Current Password": "當前密碼", @@ -234,25 +281,24 @@ "Current Stock": "當前庫存", "Current Type": "當前類型", "Current:": "現:", - "Customer and associated accounts disabled successfully.": "客戶及其關聯帳號已成功停用。", - "Customer created successfully.": "客戶新增成功。", - "Customer deleted successfully.": "客戶已成功刪除。", "Customer Details": "客戶詳情", - "Customer enabled successfully.": "客戶已成功啟用。", "Customer Info": "客戶資訊", "Customer List": "客戶列表", "Customer Management": "客戶管理", "Customer Payment Config": "客戶金流設定", + "Customer and associated accounts disabled successfully.": "客戶及其關聯帳號已成功停用。", + "Customer created successfully.": "客戶新增成功。", + "Customer deleted successfully.": "客戶已成功刪除。", + "Customer enabled successfully.": "客戶已成功啟用。", "Customer updated successfully.": "客戶更新成功。", "Cycle Efficiency": "週期效率", "Daily Revenue": "當日營收", + "Damage": "報廢", "Danger Zone: Delete Account": "危險區域:刪除帳號", "Dashboard": "儀表板", "Data Configuration": "資料設定", "Data Configuration Permissions": "資料設定權限", - "data-config": "資料設定", - "data-config.sub-account-roles": "子帳號角色", - "data-config.sub-accounts": "子帳號管理", + "Date": "日期", "Date Range": "日期區間", "Day Before": "前日", "Default Donate": "預設捐贈", @@ -263,9 +309,16 @@ "Delete Account": "刪除帳號", "Delete Advertisement": "刪除廣告", "Delete Advertisement Confirmation": "刪除廣告確認", + "Delete Customer": "刪除客戶", "Delete Permanently": "確認永久刪除資料", "Delete Product": "刪除商品", "Delete Product Confirmation": "刪除商品確認", + "Delivering": "配送中", + "Delivering product": "正在送出商品", + "Delivery door close error": "送貨門關閉異常", + "Delivery door closed": "送貨門關閉", + "Delivery door open error": "送貨門開啟異常", + "Delivery door opened": "送貨門開啟", "Deposit Bonus": "儲值回饋", "Describe the repair or maintenance status...": "請描述維修或保養狀況...", "Deselect All": "取消全選", @@ -274,30 +327,37 @@ "Device Status Logs": "設備狀態紀錄", "Devices": "台設備", "Disable": "停用", + "Disable Customer Confirmation": "停用客戶確認", "Disable Product Confirmation": "停用商品確認", + "Disable Warehouse": "停用倉庫", "Disabled": "已停用", + "Disabling this customer will also disable all accounts under this customer. Are you sure you want to continue?": "停用此客戶將會連帶停用該客戶下的所有帳號,確定要繼續嗎?", "Discord Notifications": "Discord通知", "Dispense Failed": "出貨失敗", "Dispense Success": "出貨成功", - "Displaying": "目前顯示", + "Dispense error (0407)": "出貨過程異常 (0407)", + "Dispense error (0408)": "出貨過程異常 (0408)", + "Dispense error (0409)": "出貨過程異常 (0409)", + "Dispense error (040A)": "出貨過程異常 (040A)", + "Dispense stopped": "出貨停止", + "Dispense successful": "出貨成功", "Dispensing": "出貨", + "Dispensing in progress": "正在出貨中", + "Display Material Code": "顯示物料代碼", + "Displaying": "目前顯示", + "Door Closed": "機門已關閉", + "Door Opened": "機門已開啟", + "Draft": "草稿", "Duration": "時長", "Duration (Seconds)": "播放秒數", - "e.g. 500ml / 300g": "例如:500ml / 300g", - "e.g. John Doe": "例如:張曉明", - "e.g. johndoe": "例如:xiaoming", - "e.g. Taiwan Star": "例如:台灣之星", - "e.g. TWSTAR": "例如:TWSTAR", - "e.g., Beverage": "例如:飲料", - "e.g., Company Standard Pay": "例如:公司標準支付", - "e.g., Drinks": "例如:Drinks", - "e.g., Taipei Station": "例如:台北車站", - "e.g., お飲み物": "例如:お飲み物", + "E.SUN QR Pay": "玉山掃碼支付", "E.SUN QR Scan": "玉山銀行標籤支付", "E.SUN QR Scan Settings Description": "玉山銀行掃碼支付設定", "EASY_MERCHANT_ID": "悠遊付 商店代號", "ECPay Invoice": "綠界電子發票", "ECPay Invoice Settings Description": "綠界科技電子發票設定", + "ESUN": "玉山銀行", + "ESUN Scan Pay": "玉山掃碼支付", "Edit": "編輯", "Edit Account": "編輯帳號", "Edit Advertisement": "編輯廣告", @@ -316,19 +376,30 @@ "Edit Settings": "編輯設定", "Edit Slot": "編輯貨道", "Edit Sub Account Role": "編輯子帳號角色", + "Edit Warehouse": "編輯倉庫", + "Electronic Invoice": "電子發票", + "Elevator descending": "升降平台下降中", + "Elevator descent error": "升降平台下降異常", + "Elevator failure": "升降系統故障", + "Elevator rise error": "升降平台上升異常", + "Elevator rising": "升降平台上升中", + "Elevator sensor error": "升降箱感測異常", "Email": "電子郵件", - "Emblem / Label": "標章 / 標籤", - "Enabled Features": "啟用功能", + "Emblem \/ Label": "標章 \/ 標籤", + "Empty": "空白", "Enable": "啟用", "Enable Material Code": "啟用物料編號", "Enable Points": "啟用點數規則", + "Enable Points Mechanism": "啟用點數機制", "Enabled": "已啟用", - "Enabled/Disabled": "啟用/停用", + "Enabled Features": "啟用功能", + "Enabled\/Disabled": "啟用\/停用", "End Date": "截止日", "Engineer": "維修人員", "English": "英文", "Ensure your account is using a long, random password to stay secure.": "確保您的帳號使用了足夠強度的隨機密碼以維持安全。", "Enter ad material name": "輸入廣告素材名稱", + "Enter full address": "輸入完整地址", "Enter login ID": "請輸入登入帳號", "Enter machine location": "請輸入機台地點", "Enter machine name": "請輸入機台名稱", @@ -341,36 +412,44 @@ "Equipment efficiency and OEE metrics": "設備效能與 OEE 綜合指標", "Error": "異常", "Error processing request": "處理請求時發生錯誤", + "Error report accepted": "錯誤回報已受理", + "Error: :message (:code)": "錯誤::message (:code)", "Execute": "執行", "Execute Change": "執行找零", "Execute Delivery Now": "立即執行出貨", - "Execute maintenance and operational commands remotely": "遠端執行維護與各項營運指令", "Execute Remote Change": "執行遠端找零", + "Execute maintenance and operational commands remotely": "遠端執行維護與各項營運指令", "Execution Time": "執行時間", "Exp": "效期", "Expired": "已過期", - "Expired / Disabled": "已過期 / 停用", + "Expired \/ Disabled": "已過期 \/ 停用", + "Expired Time": "下架時間", "Expiring": "效期將屆", "Expiry": "效期", "Expiry Date": "有效日期", "Expiry Management": "效期管理", - "failed": "失敗", + "Expiry date tracking and warnings": "有效期限追蹤與預警", "Failed": "執行失敗", "Failed to fetch machine data.": "無法取得機台資料。", "Failed to load permissions": "載入權限失敗", + "Failed to load tab content": "載入分頁內容失敗", "Failed to save permissions.": "無法儲存權限設定。", "Failed to update machine images: ": "更新機台圖片失敗:", "Feature Settings": "功能設定", "Feature Toggles": "功能開關", - "files selected": "個檔案已選擇", + "Filter": "篩選", + "Fill Rate": "滿載率", "Fill in the device repair or maintenance details": "填寫設備維修或保養詳情", "Fill in the product details below": "請在下方填寫商品的詳細資訊", "Firmware Version": "韌體版本", + "Firmware updated to :version": "韌體版本更新 : :version", "Fleet Avg OEE": "全機台平均 OEE", "Fleet Performance": "全機台效能", - "Force end current session": "強制結束目前的連線", "Force End Session": "強制結束當前會話", - "From": "從", + "Force end current session": "強制結束目前的連線", + "From": "來源", + "From Machine": "來源機台", + "From Warehouse": "來源倉庫", "From:": "起:", "Full Access": "全機台授權", "Full Name": "名稱", @@ -379,6 +458,7 @@ "General permissions not linked to a specific menu.": "未連結到特定選單的一般權限。", "Gift Definitions": "禮品設定", "Global roles accessible by all administrators.": "適用於所有管理者的全域角色。", + "Goods & System Settings": "商品與系統設定", "Got it": "知道了", "Grant UI Access": "開放 UI 存取權限", "Half Points": "半點數", @@ -393,25 +473,42 @@ "Heating Start Time": "開啟-加熱時間", "Helper": "小幫手", "Home Page": "主頁面", - "hours ago": "小時前", + "Hopper empty": "料斗箱空", + "Hopper empty (0212)": "料斗空 (0212)", + "Hopper error (0424)": "料斗箱異常 (0424)", + "Hopper heating timeout": "料斗箱加熱逾時", + "Hopper overheated": "料斗箱過熱", + "ITEM": "ITEM", "Identity & Codes": "識別與代碼", - "image": "圖片", + "Image": "圖片", + "Immediate": "立即", + "In Stock": "當前庫存", + "Includes Credit Card\/Mobile Pay": "包括 \/信用卡\/卡片支付\/手機支付", + "Indefinite": "無限期", "Info": "一般", "Initial Admin Account": "初始管理帳號", "Initial Role": "初始角色", + "Initial contract registration": "初始合約註冊", "Installation": "裝機", + "Insufficient stock for transfer": "庫存不足,無法調撥", "Inventory Alerts": "庫存警示", + "Inventory Management": "庫存管理", "Inventory Stable": "庫存穩定", + "Inventory synced with machine": "庫存已與機台同步", "Invoice Status": "發票開立狀態", + "Item List": "商品清單", "Items": "筆", - "items": "筆項目", - "Japanese": "日文", "JKO_MERCHANT_ID": "街口支付 商店代號", - "john@example.com": "john@example.com", + "Japanese": "日文", "Joined": "加入日期", "Just now": "剛剛", "Key": "金鑰 (Key)", "Key No": "鑰匙編號", + "LEVEL TYPE": "層級類型", + "LINE Pay Direct": "LINE Pay 官方直連", + "LINE Pay Direct Settings Description": "LINE Pay 官方直連設定", + "LINE_MERCHANT_ID": "LINE Pay 商店代號", + "LIVE": "實時", "Last Communication": "最後通訊", "Last Heartbeat": "最後心跳時間", "Last Page": "最後頁面", @@ -419,76 +516,91 @@ "Last Sync": "最後通訊", "Last Time": "最後時間", "Last Updated": "最後更新日期", + "Latitude": "緯度", "Lease": "租賃", "Level": "層級", - "LEVEL TYPE": "層級類型", - "line": "Line 管理", "Line Coupons": "Line優惠券", "Line Machines": "Line機台", "Line Management": "Line管理", "Line Members": "Line會員", "Line Official Account": "Line生活圈", "Line Orders": "Line訂單", - "LINE Pay Direct": "LINE Pay 官方直連", - "LINE Pay Direct Settings Description": "LINE Pay 官方直連設定", "Line Permissions": "Line 管理權限", "Line Products": "Line商品", - "LINE_MERCHANT_ID": "LINE Pay 商店代號", - "LIVE": "實時", + "LinePay": "LinePay", + "LinePay Payment": "LinePay 支付", "Live Fleet Updates": "即時數據更新", "Loading Cabinet...": "正在載入機台貨盤...", + "Loading Data": "載入資料中", "Loading machines...": "正在載入機台...", "Loading...": "載入中...", "Location": "位置", + "Location found!": "已成功獲取座標!", + "Location not found": "找不到該地址的座標", "Lock": "鎖定", "Lock Now": "立即鎖定", "Lock Page": "頁面鎖定", "Lock Page Lock": "鎖定頁鎖定", "Lock Page Unlock": "鎖定頁解鎖", "Locked Page": "鎖定頁", + "Log Time": "記錄時間", "Login History": "登入歷史", + "Login failed: :account": "登入失敗::account", "Logout": "登出", "Logs": "日誌", - "Low": "庫存不足", - "Low Stock": "低庫存", + "Longitude": "經度", + "Low": "低", + "Low Stock": "庫存過低", + "Low Stock Alerts": "低庫存警示", + "Low stock and out-of-stock alerts": "低庫存與缺貨警示", "Loyalty & Features": "行銷與點數", "Machine Advertisement Settings": "機台廣告設置", "Machine Count": "機台數量", - "Machine created successfully.": "機台已成功建立。", "Machine Details": "機台詳情", + "Machine Distribution": "機台分布", + "Machine Distribution Map": "機台分布地圖", "Machine Images": "機台照片", - "Machine images updated successfully.": "機台圖片已成功更新。", "Machine Info": "機台資訊", "Machine Information": "機台資訊", "Machine Inventory": "機台庫存", - "Machine is heartbeat normal": "機台通訊正常", + "Machine Inventory Overview": "機台庫存概覽", "Machine List": "機台列表", "Machine Login Logs": "機台登入紀錄", "Machine Logs": "機台日誌", "Machine Management": "機台管理", "Machine Management Permissions": "機台管理權限", "Machine Model": "機台型號", - "Machine model created successfully.": "機台型號已成功建立。", - "Machine model deleted successfully.": "機台型號已成功刪除。", "Machine Model Settings": "機台型號設定", - "Machine model updated successfully.": "機台型號已成功更新。", - "Machine permissions updated successfully.": "機台權限已成功更新。", "Machine Name": "機台名稱", - "Machine Serial No": "機台序號", "Machine Permissions": "機台權限", "Machine Reboot": "機台重啟", "Machine Registry": "機台清冊", + "Machine Replenishment": "機台補貨單", "Machine Reports": "機台報表", "Machine Restart": "機台重啟", + "Machine Return": "機台退庫", + "Machine Serial No": "機台序號", "Machine Settings": "機台設定", - "Machine settings updated successfully.": "機台設定已成功更新。", "Machine Status": "機台狀態", "Machine Status List": "機台運行狀態列表", - "Machine updated successfully.": "機台更新成功。", "Machine Utilization": "機台稼動率", + "Machine created successfully.": "機台已成功建立。", + "Machine images updated successfully.": "機台圖片已成功更新。", + "Machine is heartbeat normal": "機台通訊正常", + "Machine model created successfully.": "機台型號已成功建立。", + "Machine model deleted successfully.": "機台型號已成功刪除。", + "Machine model updated successfully.": "機台型號已成功更新。", + "Machine normal": "機台系統正常", + "Machine not found": "找不到機台", + "Machine permissions updated successfully.": "機台權限已成功更新。", + "Machine settings updated successfully.": "機台設定已成功更新。", + "Machine to Warehouse": "機台對倉庫", + "Machine to warehouse returns": "機台退回倉庫", + "Machine updated successfully.": "機台更新成功。", "Machines": "機台列表", - "machines": "機台管理", "Machines Online": "在線機台數", + "Main": "總倉", + "Main Warehouses": "總倉數量", "Maintenance": "保養", "Maintenance Content": "維修內容", "Maintenance Date": "維修日期", @@ -497,21 +609,25 @@ "Maintenance Photos": "維修照片", "Maintenance QR": "維修掃描碼", "Maintenance QR Code": "維修掃描碼", - "Maintenance record created successfully": "維修紀錄已成功建立", "Maintenance Records": "維修管理單", + "Maintenance record created successfully": "維修紀錄已成功建立", "Manage": "管理", "Manage Account Access": "管理帳號存取", + "Manage Expiry": "進入效期管理", "Manage ad materials and machine playback settings": "管理廣告素材與機台播放設定", "Manage administrative and tenant accounts": "管理系統管理者與租戶帳號", - "Manage all tenant accounts and validity": "管理所有租戶帳號與合約效期", - "Manage Expiry": "進入效期管理", + "Manage all tenant accounts and validity": "管理所有租戶帳號及其效期", "Manage inventory and monitor expiry dates across all machines": "管理各機台庫存架位與效期監控", "Manage machine access permissions": "管理機台存取權限", + "Manage stock levels, stock-in orders, and movement history": "追蹤庫存水位、進貨單與異動紀錄", + "Manage stock transfers between warehouses and machine returns": "建立倉庫間調撥或機台退庫單", + "Manage warehouse stock levels, stock-in orders, adjustments, and movement history": "管理倉庫庫存水位、入庫單、盤點調整與異動紀錄", "Manage your ad material details": "管理您的廣告素材詳情", "Manage your catalog, categories, and inventory settings.": "管理您的商品型錄、分類及庫存設定。", "Manage your catalog, prices, and multilingual details.": "管理您的商品型錄、價格及多語系詳情。", "Manage your machine fleet and operational data": "管理您的機台群組與營運數據", "Manage your profile information, security settings, and login history": "管理您的個人資訊、安全設定與登入紀錄", + "Manage your warehouses, including main and branch warehouses": "管理您的倉庫,包含總倉與分倉設定", "Management of operational parameters": "機台運作參數管理", "Management of operational parameters and models": "管理運作參數與型號", "Manufacturer": "製造商", @@ -530,9 +646,724 @@ "Member Price": "會員價", "Member Status": "會員狀態", "Member System": "會員系統", - "members": "會員管理", "Membership Tiers": "會員等級", "Menu Permissions": "選單權限", + "Merchant IDs": "特店代號清單", + "Merchant payment gateway settings management": "特約商店支付網關參數管理", + "Message": "訊息", + "Message Content": "日誌內容", + "Message Display": "訊息顯示", + "Microwave door error": "微波爐門異常", + "Microwave door opened": "微波爐門開啟", + "Min 8 characters": "至少 8 個字元", + "Model": "機台型號", + "Model Name": "型號名稱", + "Model changed to :model": "型號變更::model", + "Models": "型號列表", + "Modification History": "異動歷程", + "Modifying your own administrative permissions may result in losing access to certain system functions.": "修改自身管理權限可能導致失去對部分系統功能的控制權。", + "Monitor and manage stock levels across your fleet": "監控並管理所有機台的庫存水位", + "Monitor events and system activity across your vending fleet.": "跨機台連線動態與系統日誌監控。", + "Monitor warehouse stock summary": "監控倉庫庫存摘要", + "Monthly Transactions": "本月交易統計", + "Monthly cumulative revenue overview": "本月累計營收概況", + "Motor not stopped": "電機未停止", + "Movement History": "異動紀錄", + "Movement Logs": "異動紀錄", + "Multilingual Names": "多語系名稱", + "N\/A": "不適用", + "Name": "名稱", + "Name in English": "英文名稱", + "Name in Japanese": "日文名稱", + "Name in Traditional Chinese": "繁體中文名稱", + "Never Connected": "從未連線", + "New Command": "新增指令", + "New Machine Name": "新機台名稱", + "New Password": "新密碼", + "New Password (leave blank to keep current)": "新密碼 (若不修改請留空)", + "New Record": "新增單據", + "New Replenishment": "新增補貨單", + "New Role": "新角色", + "New Stock-In Order": "新增進貨單", + "New Sub Account Role": "新增子帳號角色", + "New Transfer": "新增調撥單", + "Next": "下一頁", + "No Company": "系統", + "No Invoice": "不開立發票", + "No Machine Selected": "尚未選擇機台", + "No accounts found": "找不到帳號資料", + "No active cargo lanes found": "未找到活動貨道", + "No additional notes": "無額外備註", + "No address information": "暫無地址資訊", + "No advertisements found.": "未找到廣告素材。", + "No alert summary": "暫無告警記錄", + "No assignments": "尚未投放", + "No categories found.": "找不到分類。", + "No command history": "尚無指令紀錄", + "No configurations found": "暫無相關配置", + "No content provided": "未提供內容", + "No customers found": "找不到客戶資料", + "No data available": "暫無資料", + "No file uploaded.": "未上傳任何檔案。", + "No heartbeat for over 30 seconds": "超過 30 秒未收到心跳", + "No history records": "尚無歷史紀錄", + "No images uploaded": "尚未上傳照片", + "No location set": "尚未設定位置", + "No login history yet": "尚無登入紀錄", + "No logs found": "暫無相關日誌", + "No machines assigned": "未分配機台", + "No machines available": "目前沒有可供分配的機台", + "No machines available in this company.": "此客戶目前沒有可供分配的機台。", + "No machines found": "未找到機台", + "No maintenance records found": "找不到維修紀錄", + "No matching logs found": "找不到符合條件的日誌", + "No matching machines": "查無匹配機台", + "No materials available": "沒有可用的素材", + "No movement records found": "查無異動紀錄", + "No permissions": "無權限項目", + "No products found in this warehouse": "此倉庫目前無商品庫存", + "No products found matching your criteria.": "找不到符合條件的商品。", + "No records found": "未找到相關紀錄", + "No replenishment orders found": "查無補貨單紀錄", + "No roles available": "目前沒有角色資料。", + "No roles found.": "找不到角色資料。", + "No slot data": "找不到貨道資料", + "No slot data available": "尚無貨道資料", + "No slots found": "未找到貨道資訊", + "No stock data found": "查無庫存資料", + "No stock-in orders found": "查無進貨單紀錄", + "No transfer orders found": "查無調撥單紀錄", + "No users found": "找不到用戶資料", + "No warehouses found": "未找到倉庫", + "None": "無", + "Normal": "正常", + "Not Used": "不使用", + "Not Used Description": "不使用第三方支付介接", + "Note": "備註", + "Note (optional)": "備註 (選填)", + "Notes": "備註", + "OEE": "OEE", + "OEE Efficiency Trend": "OEE 效率趨勢", + "OEE Score": "OEE 綜合評分", + "OEE.Activity": "營運活動", + "OEE.Errors": "異常", + "OEE.Hours": "小時", + "OEE.Orders": "訂單", + "OEE.Sales": "銷售", + "Offline": "離線", + "Offline Machines": "離線機台", + "Once your account is deleted, all of its resources and data will be permanently deleted. Before deleting your account, please download any data or information that you wish to retain.": "一旦您的帳號被刪除,其所有資源和數據將被永久刪除。在刪除帳號之前,請下載您希望保留的任何數據或資訊。", + "Once your account is deleted, all of its resources and data will be permanently deleted. Please enter your password to confirm you would like to permanently delete your account.": "帳號一旦刪除,所有關連數據將被永久移除。請輸入您的密碼以確認您希望永久刪除此帳號。", + "One-click replenishment order generation": "一鍵產生補貨單", + "Ongoing": "進行中", + "Online": "線上", + "Online Duration": "累積連線時數", + "Online Machines": "在線機台", + "Online Status": "在線狀態", + "Only system roles can be assigned to platform administrative accounts.": "僅系統角色可指派給平台管理帳號。", + "Operation Note": "操作備註", + "Operation Records": "操作紀錄", + "Operational Parameters": "運作參數", + "Operations": "運作設定", + "Operator": "操作人員", + "Optimal": "良好", + "Optimized Performance": "效能最佳化", + "Optimized for display. Supported formats: JPG, PNG, WebP.": "已針對顯示進行優化。支援格式:JPG, PNG, WebP。", + "Optional": "選填", + "Optional remarks...": "選填備註...", + "Order Details": "進貨單詳情", + "Order Info": "單據資訊", + "Order Management": "訂單管理", + "Order No.": "單號", + "Order already completed": "訂單已完成", + "Order already processed": "訂單已處理", + "Orders": "購買單", + "Original": "原始", + "Original Type": "原始類型", + "Original:": "原:", + "Other Features": "其他功能", + "Other Permissions": "其他權限", + "Others": "其他功能", + "Out of Stock": "缺貨", + "Out of stock.": "庫存不足。", + "Output Count": "出貨次數", + "Owner": "公司名稱", + "PARTNER_KEY": "PARTNER_KEY", + "PI_MERCHANT_ID": "Pi 拍錢包 商店代號", + "PNG, JPG up to 2MB": "支援 PNG, JPG (最大 2MB)", + "PNG, JPG, WEBP up to 10MB": "支援 PNG, JPG, WEBP 格式,且不超過 10MB", + "POS Reboot": "刷卡重啟", + "PS_LEVEL": "PS_LEVEL", + "PS_MERCHANT_ID": "全盈+Pay 商店代號", + "Page 0": "離線", + "Page 1": "主頁面", + "Page 2": "販賣頁", + "Page 3": "管理頁", + "Page 4": "補貨頁", + "Page 5": "教學頁", + "Page 6": "購買中", + "Page 60": "出貨成功", + "Page 61": "貨道測試", + "Page 610": "購買結束", + "Page 611": "來店禮", + "Page 612": "出貨失敗", + "Page 62": "付款選擇", + "Page 63": "等待付款", + "Page 64": "出貨", + "Page 65": "收據簽單", + "Page 66": "通行碼", + "Page 67": "取貨碼", + "Page 68": "訊息顯示", + "Page 69": "取消購買", + "Page 7": "鎖定頁", + "Page Lock Status": "頁面鎖定狀態", + "Parameters": "參數設定", + "Pass Code": "通行碼", + "Pass Codes": "通行碼", + "Password": "密碼", + "Password updated successfully.": "密碼已成功變更。", + "Payment & Invoice": "金流與發票", + "Payment Buffer Seconds": "金流緩衝時間(s)", + "Payment Config": "金流配置", + "Payment Configuration": "客戶金流設定", + "Payment Configuration created successfully.": "金流設定已成功建立。", + "Payment Configuration deleted successfully.": "金流設定已成功刪除。", + "Payment Configuration updated successfully.": "金流設定已成功更新。", + "Payment Selection": "付款選擇", + "Pending": "待處理", + "Performance": "效能 (Performance)", + "Permanent": "永久", + "Permanently Delete Account": "永久刪除帳號", + "Permission Settings": "權限設定", + "Permissions": "權限", + "Permissions updated successfully": "授權更新成功", + "Phone": "手機號碼", + "Photo Slot": "照片欄位", + "Picked up": "領取", + "Picked up Time": "領取時間", + "Pickup Code": "取貨碼", + "Pickup Codes": "取貨碼", + "Pickup door closed": "取貨門已關閉", + "Pickup door error": "取貨門運作異常", + "Pickup door not closed": "取貨門未關閉", + "Playback Order": "播放順序", + "Please check the following errors:": "請檢查以下錯誤:", + "Please check the form for errors.": "請檢查欄位內容是否正確。", + "Please enter address first": "請先輸入地址", + "Please enter configuration name": "請輸入設定名稱", + "Please select a company": "請選擇公司", + "Please select a machine first": "請先選擇機台", + "Please select a machine model": "請選擇機台型號", + "Please select a machine to view and manage its advertisements.": "請選擇一個機台以查看並管理其廣告。", + "Please select a machine to view metrics": "請選擇機台以查看數據", + "Please select a material": "請選擇素材", + "Please select a slot": "請選擇貨道", + "Point Rules": "點數規則", + "Point Settings": "點數設定", + "Points": "點數功能", + "Points Rule": "點數規則", + "Points Settings": "點數設定", + "Points toggle": "點數開關", + "Position": "投放位置", + "Prepared": "已備貨", + "Preview": "預覽", + "Previous": "上一頁", + "Price \/ Member": "售價 \/ 會員價", + "Pricing Information": "價格資訊", + "Product": "商品", + "Product / Stock": "商品 / 庫存", + "Product Count": "商品數量", + "Product Details": "商品細項", + "Product ID": "商品編號", + "Product Image": "商品圖片", + "Product Info": "商品資訊", + "Product List": "商品清單", + "Product Management": "商品管理", + "Product Name (Multilingual)": "商品名稱 (多語系)", + "Product Reports": "商品報表", + "Product Status": "商品狀態", + "Product created successfully": "商品已成功建立", + "Product deleted successfully": "商品已成功刪除", + "Product empty": "貨道缺貨 (PDT_EMPTY)", + "Product status updated to :status": "商品狀態已更新為 :status", + "Product updated successfully": "商品已成功更新", + "Production Company": "生產公司", + "Products": "商品", + "Products \/ Stock": "商品 \/ 庫存", + "Profile": "個人檔案", + "Profile Information": "個人基本資料", + "Profile Settings": "個人設定", + "Profile updated successfully.": "個人資料已成功更新。", + "Promotions": "促銷時段", + "Protected": "受保護", + "Publish": "發布", + "Publish Time": "發布時間", + "Purchase Audit": "採購單", + "Purchase Finished": "購買結束", + "Purchases": "採購單", + "Purchasing": "購買中", + "QR Scan Payment": "掃碼支付功能", + "Qty": "數量", + "Qty Change": "異動數量", + "Quality": "品質 (Quality)", + "Quantity": "數量", + "Questionnaire": "問卷", + "Quick Expiry Check": "效期快速檢查", + "Quick Maintenance": "快速維護", + "Quick Select": "快速選取", + "Quick replenishment from this view": "從此畫面快速補貨", + "Quick search...": "快速搜尋...", + "Real-time OEE analysis awaits": "即時 OEE 分析預備中", + "Real-time Operation Logs (Last 50)": "即時操作日誌 (最後 50 筆)", + "Real-time fleet efficiency and OEE metrics": "全機台即時效率與 OEE 指標", + "Real-time inventory status across all machines with expiry tracking": "即時掌握所有機台庫存狀態與有效期限追蹤", + "Real-time monitoring across all machines": "跨機台即時狀態監控", + "Real-time monitoring and adjustment of cargo lane inventory and expiration dates": "即時監控與調整各機台貨道庫存與效期狀態", + "Real-time performance analytics": "即時效能分析", + "Real-time slot-level inventory across all machines": "跨機台的即時貨道庫存追蹤", + "Real-time status monitoring": "即時監控機台連線動態", + "Reason for this command...": "請輸入執行此指令的原因...", + "Receipt Printing": "收據簽單", + "Recent Commands": "最近指令", + "Recent Login": "最近登入", + "Recently reported errors or warnings in logs": "近期日誌中有錯誤或警告回報", + "Regenerate": "重新產生", + "Regenerating the token will disconnect the physical machine until it is updated. Continue?": "重新產生金鑰將導致實體機台暫時失去連線,必須於機台端更新此新金鑰才能恢復。確定繼續嗎?", + "Remote Change": "遠端找零", + "Remote Checkout": "遠端結帳", + "Remote Command Center": "遠端指令中心", + "Remote Dispense": "遠端出貨", + "Remote Lock": "遠端鎖定", + "Remote Management": "遠端管理", + "Remote Permissions": "遠端管理權限", + "Remote Reboot": "遠端結帳", + "Remote Settlement": "遠端結帳", + "Remote dispense successful for slot :slot": "貨道 :slot 遠端出貨成功", + "Removal": "撤機", + "Repair": "維修", + "Replenishment": "補貨", + "Replenishment Audit": "補貨單", + "Replenishment Items": "補貨項目", + "Replenishment Orders": "機台補貨單", + "Replenishment Page": "補貨頁", + "Replenishment Records": "機台補貨紀錄", + "Replenishment completed": "補貨完成", + "Replenishment history": "補貨歷史紀錄", + "Replenishment order created": "補貨單已建立", + "Replenishments": "機台補貨單", + "Reporting Period": "報表區間", + "Reservation Members": "預約會員", + "Reservation System": "預約系統", + "Reservations": "預約管理", + "Reset Filters": "重設篩選", + "Reset POS terminal": "重設 POS 終端", + "Resolve Coordinates": "獲取座標", + "Restart entire machine": "重啟整台機台", + "Restock report accepted": "補貨回報已受理", + "Restrict UI Access": "限制 UI 存取權限", + "Restrict machine UI access": "限制機台介面存取", + "Result reported": "結果已回報", + "Retail Price": "零售價", + "Returns": "回庫單", + "Risk": "風險狀態", + "Role": "角色", + "Role Identification": "角色識別資訊", + "Role Management": "角色權限管理", + "Role Name": "角色名稱", + "Role Permissions": "角色權限", + "Role Settings": "角色權限", + "Role Type": "角色類型", + "Role created successfully.": "角色已成功建立。", + "Role deleted successfully.": "角色已成功刪除。", + "Role name already exists in this company.": "該公司已存在相同名稱的角色。", + "Role not found.": "角色不存在。", + "Role updated successfully.": "角色已成功更新。", + "Roles": "角色權限", + "Roles scoped to specific customer companies.": "適用於各個客戶公司的特定角色。", + "Running": "運行中", + "Running Status": "運行狀態", + "SYSTEM": "系統層級", + "Safety Stock": "安全庫存", + "Sale Price": "售價", + "Sales": "銷售管理", + "Sales Activity": "銷售活動", + "Sales Management": "銷售管理", + "Sales Permissions": "銷售管理權限", + "Sales Records": "銷售紀錄", + "Save": "儲存變更", + "Save Changes": "儲存變更", + "Save Config": "儲存配置", + "Save Material": "儲存素材", + "Save Permissions": "儲存權限", + "Save Settings": "儲存設定", + "Save error:": "儲存錯誤:", + "Saved.": "已儲存", + "Saving...": "儲存中...", + "Scale level and access control": "層級與存取控制", + "Scan Pay": "掃碼支付", + "Scan this code to quickly access the maintenance form for this device.": "掃描此 QR Code 即可快速進入此設備的維修單填寫頁面。", + "Schedule": "排程區間", + "Search Company Title...": "搜尋公司名稱...", + "Search Machine...": "搜尋機台...", + "Search Product": "搜尋商品", + "Search accounts...": "搜尋帳號...", + "Search by name or S\/N...": "搜尋名稱或序號...", + "Search by name...": "搜尋名稱...", + "Search cargo lane": "搜尋貨道編號或商品名稱", + "Search categories...": "搜尋分類...", + "Search company...": "搜尋公司...", + "Search configurations...": "搜尋設定...", + "Search customers...": "搜尋客戶...", + "Search machines by name or serial...": "搜尋機台名稱或序號...", + "Search machines...": "搜尋機台...", + "Search models...": "搜尋型號...", + "Search order number...": "搜尋單號...", + "Search products...": "搜尋商品名稱...", + "Search roles...": "搜尋角色...", + "Search serial no or name...": "搜尋序號或機台名稱...", + "Search serial or machine...": "搜尋序號或機台名稱...", + "Search serial or name...": "搜尋序號或機台名稱...", + "Search users...": "搜尋用戶...", + "Search warehouses...": "搜尋倉庫...", + "Search...": "搜尋...", + "Searching...": "搜尋中...", + "Seconds": "秒", + "Security & State": "安全性與狀態", + "Security Controls": "安全控制", + "Select All": "全選", + "Select Cargo Lane": "選擇貨道", + "Select Category": "選擇類別", + "Select Company": "選擇公司名稱", + "Select Company (Default: System)": "選擇公司 (預設:系統)", + "Select Date Range": "選擇建立日期區間", + "Select Machine": "選擇機台", + "Select Machine to view metrics": "請選擇機台以查看指標", + "Select Material": "選擇素材", + "Select Model": "選擇型號", + "Select Owner": "選擇公司名稱", + "Select Product": "選擇商品", + "Select Slot...": "選擇貨道...", + "Select Target Slot": "選擇目標貨道", + "Select Warehouse": "選擇倉庫", + "Select a machine to deep dive": "請選擇機台以開始深度分析", + "Select a material to play on this machine": "選擇要在此機台播放的素材", + "Select an asset from the left to start analysis": "選擇左側機台以開始分析數據", + "Select date to sync data": "選擇日期以同步數據", + "Select...": "請選擇...", + "Selected": "已選擇", + "Selected Date": "查詢日期", + "Selection": "已選擇", + "Sent": "機台已接收", + "Serial & Version": "序號與版本", + "Serial NO": "機台序號", + "Serial No": "機台序號", + "Serial No.": "序列號", + "Serial Number": "機台序號", + "Service Periods": "服務區間", + "Service Terms": "服務期程", + "Settings Saved": "設定已儲存", + "Settlement": "結帳處理", + "Shopping Cart": "購物車功能", + "Shopping Cart Feature": "購物車功能", + "Show": "顯示", + "Show material code field in products": "在商品資料中顯示物料編號欄位", + "Show points rules in products": "在商品資料中顯示點數規則相關欄位", + "Showing": "目前顯示", + "Showing :from to :to of :total items": "顯示第 :from 到 :to 項,共 :total 項", + "Sign in to your account": "隨時隨地掌控您的業務。", + "Signed in as": "登入身份", + "Slot": "貨道", + "Slot Mechanism (default: Conveyor, check for Spring)": "貨道機制 (預設履帶,勾選為彈簧)", + "Slot No": "貨道編號", + "Slot Status": "貨道效期", + "Slot Test": "貨道測試", + "Slot empty": "貨道空 (SLOT_EMPTY)", + "Slot jammed": "貨道卡貨 (K-PDT)", + "Slot motor error (0207)": "貨道電機故障 (0207)", + "Slot motor error (0208)": "貨道電機故障 (0208)", + "Slot motor error (0209)": "貨道電機故障 (0209)", + "Slot normal": "貨道正常", + "Slot not closed": "貨道未關閉", + "Slot not found": "找不到指定貨道", + "Slot report synchronized success": "貨道狀態同步成功", + "Slot updated successfully.": "貨道更新成功。", + "Slots": "貨道數", + "Smallest number plays first.": "數字愈小愈先播放。", + "Smart replenishment suggestions": "智能補貨建議", + "Software": "軟體", + "Software End": "軟體結束", + "Software Service": "軟體服務", + "Software Start": "軟體起始", + "Some fields need attention": "部分欄位需要注意", + "Sort Order": "排序", + "Source Warehouse": "來源倉庫", + "Special Permission": "特殊權限", + "Specification": "規格", + "Specifications": "規格", + "Spring": "彈簧", + "Spring Channel Limit": "彈簧貨道上限", + "Spring Limit": "彈簧貨道上限", + "Staff Stock": "人員庫存", + "Standby": "待機廣告", + "Standby Ad": "待機廣告", + "Start Date": "起始日", + "Statistics": "數據統計", + "Status": "狀態", + "Status \/ Temp \/ Sub \/ Card \/ Scan": "狀態 \/ 溫度 \/ 下位機 \/ 刷卡機 \/ 掃碼機", + "Stock": "庫存", + "Stock & Expiry": "庫存與效期", + "Stock & Expiry Management": "庫存與效期管理", + "Stock & Expiry Overview": "庫存與效期一覽", + "Stock In": "庫存入庫", + "Stock Levels": "庫存水準", + "Stock Management": "庫存管理單", + "Stock Out": "庫存出庫", + "Stock Quantity": "庫存數量", + "Stock Update": "同步庫存", + "Stock adjustments and damage reports": "庫存調整與報損處理", + "Stock flow history": "庫存流向歷史", + "Stock overview by warehouse": "依倉庫查看庫存概況", + "Stock-In Management": "進貨管理", + "Stock-In Orders": "進貨單管理", + "Stock-In Orders Tab": "進貨單管理", + "Stock-in order": "入庫單", + "Stock-in order confirmed and inventory updated": "入庫單已確認,庫存已更新", + "Stock-in order created": "入庫單已建立", + "Stock:": "庫存:", + "Store Gifts": "來店禮", + "Store ID": "商店代號", + "Store Management": "店家管理", + "StoreID": "商店代號 (StoreID)", + "Sub \/ Card \/ Scan": "下位機 \/ 刷卡機 \/ 掃碼機", + "Sub Account Management": "子帳號管理", + "Sub Account Roles": "子帳號角色", + "Sub Accounts": "子帳號", + "Sub-actions": "子項目", + "Sub-machine Status Request": "下位機狀態回傳", + "Submit Record": "提交紀錄", + "Success": "執行成功", + "Super Admin": "超級管理員", + "Super-admin role cannot be assigned to tenant accounts.": "超級管理員角色無法指派給租戶帳號。", + "Superseded": "已取代", + "Superseded by new adjustment": "此指令已由後面最新的調整所取代", + "Superseded by new command": "此指令已由後面最新的指令所取代", + "Survey Analysis": "問卷分析", + "Syncing": "同步中", + "Syncing Permissions...": "正在同步權限...", + "System": "系統", + "System & Security Control": "系統與安全控制", + "System Default": "系統預設", + "System Default (All Companies)": "系統預設 (所有公司)", + "System Default (Common)": "系統預設 (通用)", + "System Level": "系統層級", + "System Official": "系統層", + "System Reboot": "系統重啟", + "System Role": "系統角色", + "System Settings": "系統設定", + "System role name cannot be modified.": "內建系統角色的名稱無法修改。", + "System roles cannot be deleted by tenant administrators.": "租戶管理員無法刪除系統角色。", + "System roles cannot be modified by tenant administrators.": "租戶管理員無法修改系統角色。", + "System settings updated successfully.": "系統設定更新成功。", + "System super admin accounts cannot be deleted.": "系統超級管理員帳號無法刪除。", + "System super admin accounts cannot be modified via this interface.": "系統超級管理員帳號無法透過此介面修改。", + "Systems Initializing": "系統初始化中", + "TapPay Integration": "TapPay 支付串接", + "TapPay Integration Settings Description": "喬睿科技支付串接設定", + "Target": "目標", + "Target Machine": "目標機台", + "Target Position": "投放位置", + "Target Warehouse": "目標倉庫", + "Tax ID": "統一編號", + "Tax ID (Optional)": "統一編號 (選填)", + "Tax System": "稅務系統", + "Taxation System": "稅務系統", + "Temperature": "溫度", + "Temperature reported: :temp°C": "回報溫度 : :temp°C", + "Temperature updated to :temp°C": "溫度已更新為::temp°C", + "TermID": "終端代號 (TermID)", + "The Super Admin role cannot be deleted.": "超級管理員角色不可刪除。", + "The Super Admin role is immutable.": "超級管理員角色不可修改。", + "The Super Admin role name cannot be modified.": "超級管理員角色的名稱無法修改。", + "The image is too large. Please upload an image smaller than 1MB.": "圖片檔案太大,請上傳小於 1MB 的圖片。", + "This is a system administrator role. Its name is locked to ensure system stability.": "這是系統管理員角色,名稱已鎖定以確保系統穩定性。", + "This role belongs to another company and cannot be assigned.": "此角色屬於其他公司,無法指派。", + "This slot has a pending command. Please wait.": "此貨道已有指令正在執行,請稍後。", + "This slot has a pending update. Please wait for the previous command to complete.": "此貨道已有更新指令在執行中,請等候前一個指令完成。", + "This slot is syncing with the machine. Please wait.": "此貨道正在與機台同步中,請稍候。", + "Time": "時間", + "Time Slots": "時段組合", + "Timer": "計時器", + "Timestamp": "時間戳記", + "To": "目的地", + "To Warehouse": "目標倉庫", + "To:": "終:", + "Today Cumulative Sales": "今日累積銷售", + "Today's Transactions": "今日交易額", + "Total": "總計", + "Total Connected": "總計連線數", + "Total Customers": "客戶總數", + "Total Daily Sales": "本日累計銷量", + "Total Gross Value": "銷售總額", + "Total Logins": "總登入次數", + "Total Machines": "機台總數", + "Total Selected": "已選擇總數", + "Total Slots": "總貨道數", + "Total Stock": "總庫存", + "Total Warehouses": "倉庫總數", + "Total items": "總計 :count 項", + "Track": "履帶", + "Track Channel Limit": "履帶貨道上限", + "Track Limit": "履帶貨道上限", + "Track Limit (Track\/Spring)": "貨道上限(履帶\/彈簧)", + "Track device health and maintenance history": "追蹤設備健康與維修歷史", + "Track stock levels, stock-in orders, and movement history": "追蹤庫存水位、進貨單與異動紀錄", + "Track stock-in orders and movement history": "追蹤進貨單據與庫存異動紀錄", + "Traditional Chinese": "繁體中文", + "Transaction processed: :id": "交易處理完成::id", + "Transfer Audit": "調撥單", + "Transfer In": "調撥轉入", + "Transfer Orders": "調撥單管理", + "Transfer Out": "調撥轉出", + "Transfer Type": "調撥類型", + "Transfer completed": "調撥完成", + "Transfer in": "調撥調入", + "Transfer order created": "調撥單已建立", + "Transfer order status tracking": "調撥單狀態追蹤", + "Transfer out": "調撥調出", + "Transfers": "調撥單", + "Trigger": "執行", + "Trigger Dispense": "觸發出貨", + "Trigger Remote Dispense": "觸發遠端出貨", + "Tutorial Page": "教學頁", + "Type": "類型", + "Type to search or leave blank for system defaults.": "輸入關鍵字搜尋,或留空以使用系統預設。", + "UI Elements": "UI元素", + "Unauthorized Status": "未授權", + "Unauthorized login attempt: :account": "越權登入嘗試::account", + "Unauthorized: Account not authorized for this machine": "授權失敗:此帳號無存取該機台的權限", + "Unauthorized: Account not found": "授權失敗:找不到帳號", + "Uncategorized": "未分類", + "Unified Operational Timeline": "整合式營運時序圖", + "Units": "台", + "Unknown": "未知", + "Unknown error": "未知的錯誤", + "Unlimited": "無限期", + "Unlock": "解鎖", + "Unlock Now": "立即解鎖", + "Unlock Page": "頁面解鎖", + "Unpublish": "下架", + "Update": "更新", + "Update Authorization": "更新授權", + "Update Customer": "更新客戶", + "Update Password": "更改密碼", + "Update Product": "更新商品", + "Update Settings": "更新設定", + "Update existing role and permissions.": "更新現有角色與權限設定。", + "Update identification for your asset": "更新您的資產識別名稱", + "Update your account's profile information and email address.": "更新您的帳號名稱、手機號碼與電子郵件地址。", + "Upload Image": "上傳圖片", + "Upload New Images": "上傳新照片", + "Upload Video": "上傳影片", + "Uploading new images will replace all existing images.": "上傳新照片將會取代所有現有照片。", + "User": "一般用戶", + "User Info": "用戶資訊", + "User logged in: :name": "使用者登入::name", + "Username": "使用者帳號", + "Users": "帳號數", + "Utilization Rate": "機台稼動率", + "Utilization Timeline": "稼動時序", + "Utilization, OEE and Operational Intelligence": "稼動率、OEE 與營運情報", + "Utilized Time": "稼動持續時間", + "Valid Until": "合約到期日", + "Validation Error": "驗證錯誤", + "Vending": "販賣頁", + "Vending Page": "販賣頁", + "Venue Management": "場地管理", + "Video": "影片", + "View Details": "查看細單", + "View Full History": "查看完整歷程", + "View Inventory": "查看庫存", + "View Logs": "查看日誌", + "View More": "查看更多", + "View Slots": "查看貨道", + "View all warehouses": "查看所有倉庫", + "View slot-level inventory for each machine": "查看各機台貨道庫存", + "Visit Gift": "來店禮", + "Waiting": "等待中", + "Waiting for Payment": "等待付款", + "Warehouse": "倉庫", + "Warehouse :status successfully": "倉庫已:status", + "Warehouse Info": "倉庫資訊", + "Warehouse Inventory": "倉庫商品詳情", + "Warehouse List": "倉庫清單", + "Warehouse List (All)": "倉庫列表(全)", + "Warehouse List (Individual)": "倉庫列表(個)", + "Warehouse Management": "倉儲管理", + "Warehouse Name": "倉庫名稱", + "Warehouse Overview": "倉庫總覽", + "Warehouse Permissions": "倉庫管理權限", + "Warehouse Transfer": "倉庫調撥", + "Warehouse Type": "倉庫類型", + "Warehouse created successfully": "倉庫建立成功", + "Warehouse created successfully.": "倉庫已成功建立。", + "Warehouse deleted successfully": "倉庫已刪除", + "Warehouse deleted successfully.": "倉庫已成功刪除。", + "Warehouse purchase records": "倉庫採購進貨紀錄", + "Warehouse to Warehouse": "倉庫對倉庫", + "Warehouse to warehouse transfers": "倉庫對倉庫調撥", + "Warehouse updated successfully": "倉庫更新成功", + "Warehouse updated successfully.": "倉庫已成功更新。", + "Warning": "即將過期", + "Warning: You are editing your own role!": "警告:您正在編輯目前使用的角色!", + "Warranty": "保固", + "Warranty End": "保固結束", + "Warranty Service": "保固服務", + "Warranty Start": "保固起始", + "Welcome Gift": "來店禮", + "Welcome Gift Feature": "來店禮功能", + "Welcome Gift Status": "來店禮", + "Work Content": "工作內容", + "Yes, regenerate": "確認重新產生", + "Yesterday": "昨日", + "You cannot assign permissions you do not possess.": "您無法指派您自身不具備的權限。", + "You cannot delete your own account.": "您無法刪除自己的帳號。", + "Your email address is unverified.": "您的電子郵件地址尚未驗證。", + "Your recent account activity": "最近的帳號活動", + "accounts": "帳號管理", + "admin": "管理員", + "analysis": "分析管理", + "app": "APP 管理", + "audit": "稽核管理", + "basic-settings": "基本設定", + "basic.machines": "機台設定", + "basic.payment-configs": "客戶金流設定", + "by": "由", + "companies": "客戶管理", + "data-config": "資料設定", + "data-config.sub-account-roles": "子帳號角色", + "data-config.sub-accounts": "子帳號管理", + "disabled": "停用", + "e.g. 500ml \/ 300g": "例如:500ml \/ 300g", + "e.g. John Doe": "例如:張曉明", + "e.g. Main Warehouse": "如:總倉A", + "e.g. TWSTAR": "例如:TWSTAR", + "e.g. Taiwan Star": "例如:台灣之星", + "e.g. johndoe": "例如:xiaoming", + "e.g., Beverage": "例如:飲料", + "e.g., Company Standard Pay": "例如:公司標準支付", + "e.g., Drinks": "例如:Drinks", + "e.g., Taipei Station": "例如:台北車站", + "e.g., お飲み物": "例如:お飲み物", + "enabled": "啟用", + "failed": "失敗", + "files selected": "個檔案已選擇", + "hours ago": "小時前", + "image": "圖片", + "items": "筆項目", + "john@example.com": "john@example.com", + "line": "Line 管理", + "machines": "機台管理", + "members": "會員管理", "menu.analysis": "數據分析", "menu.app": "APP 運維", "menu.audit": "審核管理", @@ -563,918 +1394,34 @@ "menu.reservation": "預約管理", "menu.sales": "銷售報表", "menu.special-permission": "特殊權限", - "menu.warehouses": "Warehouse Management", - "Merchant IDs": "特店代號清單", - "Merchant payment gateway settings management": "特約商店支付網關參數管理", - "Message": "訊息", - "Message Content": "日誌內容", - "Message Display": "訊息顯示", + "menu.warehouses": "倉儲管理", "min": "分", - "Min 8 characters": "至少 8 個字元", "mins ago": "分鐘前", - "Model": "機台型號", - "Model Name": "型號名稱", - "Models": "型號列表", - "Modifying your own administrative permissions may result in losing access to certain system functions.": "修改自身管理權限可能導致失去對部分系統功能的控制權。", - "Monitor and manage stock levels across your fleet": "監控並管理所有機台的庫存水位", - "Monitor events and system activity across your vending fleet.": "跨機台連線動態與系統日誌監控。", - "Monthly cumulative revenue overview": "本月累計營收概況", - "Monthly Transactions": "本月交易統計", - "Multilingual Names": "多語系名稱", - "N/A": "不適用", - "Name": "名稱", - "Name in English": "英文名稱", - "Name in Japanese": "日文名稱", - "Name in Traditional Chinese": "繁體中文名稱", - "Never Connected": "從未連線", - "New Command": "新增指令", - "New Machine Name": "新機台名稱", - "New Password": "新密碼", - "New Password (leave blank to keep current)": "新密碼 (若不修改請留空)", - "New Record": "新增單據", - "New Role": "新角色", - "New Sub Account Role": "新增子帳號角色", - "Next": "下一頁", - "No accounts found": "找不到帳號資料", - "No active cargo lanes found": "未找到活動貨道", - "No additional notes": "無額外備註", - "No advertisements found.": "未找到廣告素材。", - "No alert summary": "暫無告警記錄", - "No assignments": "尚未投放", - "No command history": "尚無指令紀錄", - "No Company": "系統", - "No configurations found": "暫無相關配置", - "No content provided": "未提供內容", - "No customers found": "找不到客戶資料", - "No data available": "暫無資料", - "No file uploaded.": "未上傳任何檔案。", - "No heartbeat for over 30 seconds": "超過 30 秒未收到心跳", - "No images uploaded": "尚未上傳照片", - "No Invoice": "不開立發票", - "No location set": "尚未設定位置", - "No login history yet": "尚無登入紀錄", - "No logs found": "暫無相關日誌", - "No Machine Selected": "尚未選擇機台", - "No machines assigned": "未分配機台", - "No machines available": "目前沒有可供分配的機台", - "No machines available in this company.": "此客戶目前沒有可供分配的機台。", - "No maintenance records found": "找不到維修紀錄", - "No matching logs found": "找不到符合條件的日誌", - "No matching machines": "查無匹配機台", - "No materials available": "沒有可用的素材", - "No permissions": "無權限項目", - "No records found": "未找到相關紀錄", - "No roles available": "目前沒有角色資料。", - "No roles found.": "找不到角色資料。", - "No slots found": "未找到貨道資訊", - "No slot data available": "尚無貨道資料", - "No users found": "找不到用戶資料", - "None": "無", - "Normal": "正常", - "Not Used": "不使用", - "Not Used Description": "不使用第三方支付介接", - "Notes": "備註", - "OEE": "OEE", - "OEE Efficiency Trend": "OEE 效率趨勢", - "OEE Score": "OEE 綜合評分", - "OEE.Activity": "營運活動", - "OEE.Errors": "異常", - "OEE.Hours": "小時", - "OEE.Orders": "訂單", - "OEE.Sales": "銷售", "of": "/共", - "Offline": "離線", "of items": "筆項目", - "Offline Machines": "離線機台", - "Once your account is deleted, all of its resources and data will be permanently deleted. Before deleting your account, please download any data or information that you wish to retain.": "一旦您的帳號被刪除,其所有資源和數據將被永久刪除。在刪除帳號之前,請下載您希望保留的任何數據或資訊。", - "Once your account is deleted, all of its resources and data will be permanently deleted. Please enter your password to confirm you would like to permanently delete your account.": "帳號一旦刪除,所有關連數據將被永久移除。請輸入您的密碼以確認您希望永久刪除此帳號。", - "Online": "線上", - "Online Duration": "累積連線時數", - "Online Machines": "在線機台", - "Online Status": "在線狀態", - "Only system roles can be assigned to platform administrative accounts.": "僅系統角色可指派給平台管理帳號。", - "Operation Note": "操作備註", - "Operation Records": "操作紀錄", - "Operational Parameters": "運作參數", - "Operations": "運作設定", - "Operator": "操作者", - "Optimal": "良好", - "Optimized for display. Supported formats: JPG, PNG, WebP.": "已針對顯示進行優化。支援格式:JPG, PNG, WebP。", - "Optimized Performance": "效能最佳化", - "Optional": "選填", - "Order Management": "訂單管理", - "Orders": "購買單", - "Original": "原始", - "Original Type": "原始類型", - "Original:": "原:", - "Other Permissions": "其他權限", - "Others": "其他功能", - "Output Count": "出貨次數", - "Owner": "公司名稱", - "Page Lock Status": "頁面鎖定狀態", - "Parameters": "參數設定", - "PARTNER_KEY": "PARTNER_KEY", - "Pass Code": "通行碼", - "Pass Codes": "通行碼", - "Password": "密碼", - "Password updated successfully.": "密碼已成功變更。", - "Payment & Invoice": "金流與發票", - "Payment Buffer Seconds": "金流緩衝時間(s)", - "Payment Config": "金流配置", - "Payment Configuration": "客戶金流設定", - "Payment Configuration created successfully.": "金流設定已成功建立。", - "Payment Configuration deleted successfully.": "金流設定已成功刪除。", - "Payment Configuration updated successfully.": "金流設定已成功更新。", - "Payment Selection": "付款選擇", - "Pending": "等待機台領取", "pending": "等待機台領取", - "Performance": "效能 (Performance)", - "Permanent": "永久", - "Permanently Delete Account": "永久刪除帳號", - "Permission Settings": "權限設定", - "Permissions": "權限", "permissions": "權限設定", - "Permissions updated successfully": "授權更新成功", "permissions.accounts": "帳號管理", "permissions.companies": "客戶管理", "permissions.roles": "角色權限管理", - "Phone": "手機號碼", - "Photo Slot": "照片欄位", - "PI_MERCHANT_ID": "Pi 拍錢包 商店代號", - "Picked up": "領取", - "Picked up Time": "領取時間", - "Pickup Code": "取貨碼", - "Pickup Codes": "取貨碼", - "Playback Order": "播放順序", - "Please check the following errors:": "請檢查以下錯誤:", - "Please check the form for errors.": "請檢查欄位內容是否正確。", - "Please enter configuration name": "請輸入設定名稱", - "Please select a company": "請選擇公司", - "Please select a machine first": "請先選擇機台", - "Please select a machine model": "請選擇機台型號", - "Please select a machine to view and manage its advertisements.": "請選擇一個機台以查看並管理其廣告。", - "Please select a machine to view metrics": "請選擇機台以查看數據", - "Please select a material": "請選擇素材", - "Please select a slot": "請選擇貨道", - "PNG, JPG up to 2MB": "支援 PNG, JPG (最大 2MB)", - "PNG, JPG, WEBP up to 10MB": "支援 PNG, JPG, WEBP 格式,且不超過 10MB", - "Point Rules": "點數規則", - "Point Settings": "點數設定", - "Points": "點數功能", - "Points Rule": "點數規則", - "Points Settings": "點數設定", - "Points toggle": "點數開關", - "POS Reboot": "刷卡重啟", - "Position": "投放位置", - "Preview": "預覽", - "Previous": "上一頁", - "Price / Member": "售價 / 會員價", - "Pricing Information": "價格資訊", - "Product Count": "商品數量", - "Product created successfully": "商品已成功建立", - "Product deleted successfully": "商品已成功刪除", - "Product Details": "商品詳情", - "Product Image": "商品圖片", - "Product Info": "商品資訊", - "Product List": "商品清單", - "Product Management": "商品管理", - "Product Name (Multilingual)": "商品名稱 (多語系)", - "Product Reports": "商品報表", - "Product Status": "商品狀態", - "Product status updated to :status": "商品狀態已更新為 :status", - "Product updated successfully": "商品已成功更新", - "Production Company": "生產公司", - "Profile": "個人檔案", - "Profile Information": "個人基本資料", - "Profile Settings": "個人設定", - "Profile updated successfully.": "個人資料已成功更新。", - "Promotions": "促銷時段", - "Protected": "受保護", - "PS_LEVEL": "PS_LEVEL", - "PS_MERCHANT_ID": "全盈+Pay 商店代號", - "Purchase Audit": "採購單", - "Purchase Finished": "購買結束", - "Purchases": "採購單", - "Purchasing": "購買中", - "Qty": "數量", - "Quality": "品質 (Quality)", - "Questionnaire": "問卷", - "Quick Expiry Check": "效期快速檢查", - "Quick Maintenance": "快速維護", - "Quick search...": "快速搜尋...", - "Quick Select": "快速選取", - "Real-time fleet efficiency and OEE metrics": "全機台即時效率與 OEE 指標", - "Real-time monitoring across all machines": "跨機台即時狀態監控", - "Real-time monitoring and adjustment of cargo lane inventory and expiration dates": "即時監控與調整各機台貨道庫存與效期狀態", - "Real-time OEE analysis awaits": "即時 OEE 分析預備中", - "Real-time Operation Logs (Last 50)": "即時操作日誌 (最後 50 筆)", - "Real-time performance analytics": "即時效能分析", - "Real-time status monitoring": "即時監控機台連線動態", - "Reason for this command...": "請輸入執行此指令的原因...", - "Receipt Printing": "收據簽單", - "Recent Commands": "最近指令", - "Recent Login": "最近登入", - "Recently reported errors or warnings in logs": "近期日誌中有錯誤或警告回報", - "Regenerate": "重新產生", - "Regenerating the token will disconnect the physical machine until it is updated. Continue?": "重新產生金鑰將導致實體機台暫時失去連線,必須於機台端更新此新金鑰才能恢復。確定繼續嗎?", "remote": "遠端管理", - "Remote Change": "遠端找零", - "Remote Checkout": "遠端結帳", - "Remote Command Center": "遠端指令中心", - "Remote Dispense": "遠端出貨", - "Remote Lock": "遠端鎖定", - "Remote Management": "遠端管理", - "Remote Permissions": "遠端管理權限", - "Remote Reboot": "遠端結帳", - "Remote Settlement": "遠端結帳", - "Removal": "撤機", - "Repair": "維修", - "Replenishment Audit": "補貨單", - "Replenishment Page": "補貨頁", - "Replenishment Records": "機台補貨紀錄", - "Replenishments": "機台補貨單", - "Reporting Period": "報表區間", "reservation": "預約系統", - "Reservation Members": "預約會員", - "Reservation System": "預約系統", - "Reservations": "預約管理", - "Reset POS terminal": "重設 POS 終端", - "Restart entire machine": "重啟整台機台", - "Restrict machine UI access": "限制機台介面存取", - "Restrict UI Access": "限制 UI 存取權限", - "Retail Price": "零售價", - "Returns": "回庫單", - "Risk": "風險狀態", - "Role": "角色", - "Role created successfully.": "角色已成功建立。", - "Role deleted successfully.": "角色已成功刪除。", - "Role Identification": "角色識別資訊", - "Role Management": "角色權限管理", - "Role Name": "角色名稱", - "Role name already exists in this company.": "該公司已存在相同名稱的角色。", - "Role not found.": "角色不存在。", - "Role Permissions": "角色權限", - "Role Settings": "角色權限", - "Role Type": "角色類型", - "Role updated successfully.": "角色已成功更新。", - "Roles": "角色權限", "roles": "角色權限", - "Roles scoped to specific customer companies.": "適用於各個客戶公司的特定角色。", - "Running": "運行中", - "Running Status": "運行狀態", "s": "秒", - "Sale Price": "售價", - "Sales": "銷售管理", "sales": "銷售管理", - "Sales Activity": "銷售活動", - "Sales Management": "銷售管理", - "Sales Permissions": "銷售管理權限", - "Sales Records": "銷售紀錄", - "Save": "儲存變更", - "Save Changes": "儲存變更", - "Save Config": "儲存配置", - "Save Material": "儲存素材", - "Save Permissions": "儲存權限", - "Saved.": "已儲存", - "Saving...": "儲存中...", - "Scale level and access control": "層級與存取控制", - "Scan this code to quickly access the maintenance form for this device.": "掃描此 QR Code 即可快速進入此設備的維修單填寫頁面。", - "Search accounts...": "搜尋帳號...", - "Search by name or S/N...": "搜尋名稱或序號...", - "Search cargo lane": "搜尋貨道編號或商品名稱", - "Search Company Title...": "搜尋公司名稱...", - "Search categories...": "搜尋分類...", - "Search company...": "搜尋公司...", - "Search configurations...": "搜尋設定...", - "Search customers...": "搜尋客戶...", - "Search Machine...": "搜尋機台...", - "Search machines by name or serial...": "搜尋機台名稱或序號...", - "Search machines...": "搜尋機台...", - "Search models...": "搜尋型號...", - "Search products...": "搜尋商品...", - "Search roles...": "搜尋角色...", - "Search serial no or name...": "搜尋序號或機台名稱...", - "Search serial or machine...": "搜尋序號或機台名稱...", - "Search serial or name...": "搜尋序號或機台名稱...", - "Search users...": "搜尋用戶...", - "Search...": "搜尋...", - "Seconds": "秒", - "Security & State": "安全性與狀態", - "Security Controls": "安全控制", - "Select a machine to deep dive": "請選擇機台以開始深度分析", - "Select a material to play on this machine": "選擇要在此機台播放的素材", - "Select All": "全選", - "Select an asset from the left to start analysis": "選擇左側機台以開始分析數據", - "Select Cargo Lane": "選擇貨道", - "Select Category": "選擇類別", - "Select Company": "選擇公司名稱", - "Select Company (Default: System)": "選擇公司 (預設:系統)", - "Select Date Range": "選擇建立日期區間", - "Select date to sync data": "選擇日期以同步數據", - "Select Machine": "選擇機台", - "Select Machine to view metrics": "請選擇機台以查看指標", - "Select Material": "選擇素材", - "Select Model": "選擇型號", - "Select Owner": "選擇公司名稱", - "Select Slot...": "選擇貨道...", - "Select Target Slot": "選擇目標貨道", - "Select...": "請選擇...", - "Selected": "已選擇", - "Selected Date": "查詢日期", - "Selection": "已選擇", "sent": "機台已接收", - "Sent": "機台已接收", - "Serial & Version": "序號與版本", - "Serial NO": "機台序號", - "Serial No": "機台序號", - "Serial Number": "機台序號", "set": "已設定", - "Settlement": "結帳處理", - "Show": "顯示", - "Show material code field in products": "在商品資料中顯示物料編號欄位", - "Show points rules in products": "在商品資料中顯示點數規則相關欄位", - "Showing": "目前顯示", - "Showing :from to :to of :total items": "顯示第 :from 到 :to 項,共 :total 項", - "Sign in to your account": "隨時隨地掌控您的業務。", - "Signed in as": "登入身份", - "Slot Mechanism (default: Conveyor, check for Spring)": "貨道機制 (預設履帶,勾選為彈簧)", - "Slot No": "貨道編號", - "Slot Status": "貨道效期", - "Slot Test": "貨道測試", - "Slot updated successfully.": "貨道更新成功。", - "Smallest number plays first.": "數字愈小愈先播放。", - "Some fields need attention": "部分欄位需要注意", - "Sort Order": "排序", - "Special Permission": "特殊權限", "special-permission": "特殊權限", - "Specification": "規格", - "Specifications": "規格", - "Spring Channel Limit": "彈簧貨道上限", - "Spring Limit": "彈簧貨道上限", - "Staff Stock": "人員庫存", - "Standby": "待機廣告", "standby": "待機廣告", - "Standby Ad": "待機廣告", - "Start Date": "起始日", - "Statistics": "數據統計", - "Status": "狀態", - "Sub / Card / Scan": "下位機 / 刷卡機 / 掃碼機", - "Status / Temp / Sub / Card / Scan": "狀態 / 溫度 / 下位機 / 刷卡機 / 掃碼機", - "Stock": "庫存", - "Stock & Expiry": "庫存與效期", - "Stock & Expiry Management": "庫存與效期管理", - "Stock & Expiry Overview": "庫存與效期一覽", - "Stock Management": "庫存管理單", - "Stock Quantity": "庫存數量", - "Stock Update": "同步庫存", - "Stock:": "庫存:", - "Store Gifts": "來店禮", - "Store ID": "商店代號", - "Store Management": "店家管理", - "StoreID": "商店代號 (StoreID)", - "Sub Account Management": "子帳號管理", - "Sub Account Roles": "子帳號角色", - "Sub Accounts": "子帳號", - "Sub-actions": "子項目", - "Sub-machine Status Request": "下位機狀態回傳", - "Submit Record": "提交紀錄", - "Success": "執行成功", "success": "成功", - "Super Admin": "超級管理員", "super-admin": "超級管理員", - "Super-admin role cannot be assigned to tenant accounts.": "超級管理員角色無法指派給租戶帳號。", - "Superseded": "已取代", - "Superseded by new adjustment": "此指令已由後面最新的調整所取代", - "Superseded by new command": "此指令已由後面最新的指令所取代", - "Survey Analysis": "問卷分析", - "Syncing Permissions...": "正在同步權限...", - "SYSTEM": "系統層級", - "System": "系統", - "System & Security Control": "系統與安全控制", - "System Default": "系統預設", - "System Default (All Companies)": "系統預設 (所有公司)", - "System Default (Common)": "系統預設 (通用)", - "System Level": "系統層級", - "System Official": "系統層", - "System Reboot": "系統重啟", - "System Role": "系統角色", - "System role name cannot be modified.": "內建系統角色的名稱無法修改。", - "System roles cannot be deleted by tenant administrators.": "租戶管理員無法刪除系統角色。", - "System roles cannot be modified by tenant administrators.": "租戶管理員無法修改系統角色。", - "System super admin accounts cannot be deleted.": "系統超級管理員帳號無法刪除。", - "System super admin accounts cannot be modified via this interface.": "系統超級管理員帳號無法透過此介面修改。", - "Systems Initializing": "系統初始化中", - "TapPay Integration": "TapPay 支付串接", - "TapPay Integration Settings Description": "喬睿科技支付串接設定", - "Target": "目標", - "Target Position": "投放位置", - "Tax ID": "統一編號", - "Tax ID (Optional)": "統一編號 (選填)", - "Temperature": "溫度", - "TermID": "終端代號 (TermID)", - "The image is too large. Please upload an image smaller than 1MB.": "圖片檔案太大,請上傳小於 1MB 的圖片。", - "The Super Admin role cannot be deleted.": "超級管理員角色不可刪除。", - "The Super Admin role is immutable.": "超級管理員角色不可修改。", - "The Super Admin role name cannot be modified.": "超級管理員角色的名稱無法修改。", - "This is a system administrator role. Its name is locked to ensure system stability.": "這是系統管理員角色,名稱已鎖定以確保系統穩定性。", - "This role belongs to another company and cannot be assigned.": "此角色屬於其他公司,無法指派。", - "Time": "時間", - "Time Slots": "時段組合", - "Timer": "計時器", - "Timestamp": "時間戳記", - "To": "至", "to": "至", - "To:": "終:", - "Today Cumulative Sales": "今日累積銷售", - "Today's Transactions": "今日交易額", - "Total": "總計", - "Total Connected": "總計連線數", - "Total Customers": "客戶總數", - "Total Daily Sales": "本日累計銷量", - "Total Gross Value": "銷售總額", - "Total items": "總計 :count 項", - "Total Logins": "總登入次數", - "Total Selected": "已選擇總數", - "Total Slots": "總貨道數", - "Track Channel Limit": "履帶貨道上限", - "Track device health and maintenance history": "追蹤設備健康與維修歷史", - "Track Limit": "履帶貨道上限", - "Track Limit (Track/Spring)": "貨道上限(履帶/彈簧)", - "Traditional Chinese": "繁體中文", - "Track": "履帶", - "Spring": "彈簧", - "Transfer Audit": "調撥單", - "Transfers": "調撥單", - "Trigger": "執行", - "Trigger Dispense": "觸發出貨", - "Trigger Remote Dispense": "觸發遠端出貨", - "Tutorial Page": "教學頁", - "Type": "類型", - "Type to search or leave blank for system defaults.": "輸入關鍵字搜尋,或留空以使用系統預設。", - "UI Elements": "UI元素", - "Unauthorized Status": "未授權", - "Uncategorized": "未分類", - "Unified Operational Timeline": "整合式營運時序圖", - "Units": "台", - "Unknown": "未知", - "Unlock": "解鎖", - "Unlock Now": "立即解鎖", - "Unlock Page": "頁面解鎖", - "Update": "更新", - "Update Authorization": "更新授權", - "Update Customer": "更新客戶", - "Update existing role and permissions.": "更新現有角色與權限設定。", - "Update identification for your asset": "更新您的資產識別名稱", - "Update Password": "更改密碼", - "Update Product": "更新商品", - "Update your account's profile information and email address.": "更新您的帳號名稱、手機號碼與電子郵件地址。", - "Upload Image": "上傳圖片", - "Upload New Images": "上傳新照片", - "Upload Video": "上傳影片", - "Uploading new images will replace all existing images.": "上傳新照片將會取代所有現有照片。", - "User": "一般用戶", "user": "一般用戶", - "User Info": "用戶資訊", - "Username": "使用者帳號", - "Users": "帳號數", - "Utilization Rate": "機台稼動率", - "Utilization Timeline": "稼動時序", - "Utilization, OEE and Operational Intelligence": "稼動率、OEE 與營運情報", - "Utilized Time": "稼動持續時間", - "Valid Until": "合約到期日", - "Validation Error": "驗證錯誤", - "Vending": "販賣頁", "vending": "販賣頁", - "Vending Page": "販賣頁", - "Venue Management": "場地管理", "video": "影片", - "View Details": "查看詳情", - "View Inventory": "查看庫存", - "View Logs": "查看日誌", - "View More": "查看更多", - "Visit Gift": "來店禮", "visit_gift": "來店禮", "vs Yesterday": "較昨日", - "Waiting for Payment": "等待付款", - "Warehouse List": "倉庫清單", - "Warehouse List (All)": "倉庫列表(全)", - "Warehouse List (Individual)": "倉庫列表(個)", - "Warehouse Management": "倉庫管理", - "Warehouse Permissions": "倉庫管理權限", "warehouses": "倉庫管理", - "Warning": "即將過期", - "Warning: You are editing your own role!": "警告:您正在編輯目前使用的角色!", - "Welcome Gift": "來店禮", - "Welcome Gift Status": "來店禮", - "Work Content": "工作內容", - "Yes, regenerate": "確認重新產生", - "Yesterday": "昨日", - "You cannot assign permissions you do not possess.": "您無法指派您自身不具備的權限。", - "You cannot delete your own account.": "您無法刪除自己的帳號。", - "Your email address is unverified.": "您的電子郵件地址尚未驗證。", - "Your recent account activity": "最近的帳號活動", - "待填寫": "待填寫", - "Dispensing in progress": "正在出貨中", - "Dispense successful": "出貨成功", - "Slot jammed": "貨道卡貨 (K-PDT)", - "Motor not stopped": "電機未停止", - "Slot not found": "找不到指定貨道", - "Dispense error (0407)": "出貨過程異常 (0407)", - "Dispense error (0408)": "出貨過程異常 (0408)", - "Dispense error (0409)": "出貨過程異常 (0409)", - "Dispense error (040A)": "出貨過程異常 (040A)", - "Elevator rising": "升降平台上升中", - "Elevator descending": "升降平台下降中", - "Elevator rise error": "升降平台上升異常", - "Elevator descent error": "升降平台下降異常", - "Pickup door closed": "取貨門已關閉", - "Pickup door error": "取貨門運作異常", - "Delivery door opened": "送貨門開啟", - "Delivery door open error": "送貨門開啟異常", - "Delivering product": "正在送出商品", - "Delivery door closed": "送貨門關閉", - "Delivery door close error": "送貨門關閉異常", - "Hopper empty": "料斗箱空", - "Hopper overheated": "料斗箱過熱", - "Hopper heating timeout": "料斗箱加熱逾時", - "Hopper error (0424)": "料斗箱異常 (0424)", - "Microwave door opened": "微波爐門開啟", - "Microwave door error": "微波爐門異常", - "Dispense stopped": "出貨停止", - "Slot normal": "貨道正常", - "Product empty": "貨道缺貨 (PDT_EMPTY)", - "Slot empty": "貨道空 (SLOT_EMPTY)", - "Slot not closed": "貨道未關閉", - "Slot motor error (0207)": "貨道電機故障 (0207)", - "Slot motor error (0208)": "貨道電機故障 (0208)", - "Slot motor error (0209)": "貨道電機故障 (0209)", - "Hopper empty (0212)": "料斗空 (0212)", - "Machine normal": "機台系統正常", - "Elevator sensor error": "升降箱感測異常", - "Pickup door not closed": "取貨門未關閉", - "Elevator failure": "升降系統故障", - "Slot": "貨道", - "Page 0": "離線", - "Page 1": "主頁面", - "Page 2": "販賣頁", - "Page 3": "管理頁", - "Page 4": "補貨頁", - "Page 5": "教學頁", - "Page 6": "購買中", - "Page 7": "鎖定頁", - "Page 60": "出貨成功", - "Page 61": "貨道測試", - "Page 62": "付款選擇", - "Page 63": "等待付款", - "Page 64": "出貨", - "Page 65": "收據簽單", - "Page 66": "通行碼", - "Page 67": "取貨碼", - "Page 68": "訊息顯示", - "Page 69": "取消購買", - "Page 610": "購買結束", - "Page 611": "來店禮", - "Page 612": "出貨失敗", - "Door Opened": "機門已開啟", - "Door Closed": "機門已關閉", - "Firmware updated to :version": "韌體版本更新 : :version", - "Model changed to :model": "型號變更::model", - "User logged in: :name": "使用者登入::name", - "Login failed: :account": "登入失敗::account", - "Unauthorized login attempt: :account": "越權登入嘗試::account", - "Contract Model": "合約模式", - "Warranty Service": "保固服務", - "Software Service": "軟體服務", - "Modification History": "異動歷程", - "No history records": "尚無歷史紀錄", - "Initial contract registration": "初始合約註冊", - "Contract information updated": "合約資訊已更新", - "Warranty Start": "保固起始", - "Warranty End": "保固結束", - "Software Start": "軟體起始", - "Software End": "軟體結束", - "Contract History": "合約歷程", - "Unlimited": "無限期", - "Change Note": "異動備註", - "Log Time": "記錄時間", - "Service Periods": "服務區間", - "Creator": "建立者", - "View Full History": "查看完整歷程", - "Contract Start": "合約起始", - "Contract End": "合約結束", - "Contract History Detail": "合約歷程詳情", - "by": "由", - "Service Terms": "服務期程", - "Contract": "合約", - "Warranty": "保固", - "Software": "軟體", - "Schedule": "排程區間", - "Immediate": "立即", - "Indefinite": "無限期", - "Ongoing": "進行中", - "Waiting": "等待中", - "Publish Time": "發布時間", - "Expired Time": "下架時間", - "Inventory synced with machine": "庫存已與機台同步", - "Failed to load tab content": "載入分頁內容失敗", - "No machines found": "未找到機台", - "No products found matching your criteria.": "找不到符合條件的商品。", - "No categories found.": "找不到分類。", - "Connection lost (LWT)": "連線中斷", - "Connection restored": "連線恢復", - "Temperature reported: :temp°C": "回報溫度 : :temp°C", - "Temperature updated to :temp°C": "溫度已更新為::temp°C", - "Transaction processed: :id": "交易處理完成::id", - "Unknown error": "未知的錯誤", - "Remote dispense successful for slot :slot": "貨道 :slot 遠端出貨成功", - "Machine not found": "找不到機台", - "Command not found": "找不到指令", - "Restock report accepted": "補貨回報已受理", - "Result reported": "結果已回報", - "Error report accepted": "錯誤回報已受理", - "Unauthorized: Account not found": "授權失敗:找不到帳號", - "Unauthorized: Account not authorized for this machine": "授權失敗:此帳號無存取該機台的權限", - "Slot report synchronized success": "貨道狀態同步成功", - "Error: :message (:code)": "錯誤::message (:code)", - "Syncing": "同步中", - "This slot is syncing with the machine. Please wait.": "此貨道正在與機台同步中,請稍候。", - "Loading Data": "載入資料中", - "CASH": "CASH", - "ITEM": "ITEM", - "This slot has a pending update. Please wait for the previous command to complete.": "此貨道已有更新指令在執行中,請等候前一個指令完成。", - "This slot has a pending command. Please wait.": "此貨道已有指令正在執行,請稍後。", - "Out of stock.": "庫存不足。", - "Save error:": "儲存錯誤:", - "Warehouse Overview": "倉庫總覽", - "Inventory Management": "庫存管理", - "Transfer Orders": "調撥單", - "Machine Replenishment": "機台補貨", - "Machine Inventory Overview": "機台庫存總覽", - "Manage your warehouses, including main and branch warehouses": "管理您的倉庫,包含總倉與分倉設定", - "View all warehouses": "查看所有倉庫", - "Create main and branch warehouses": "建立總倉與分倉", - "Assign warehouse managers": "指派倉庫負責人", - "Monitor warehouse stock summary": "監控倉庫庫存摘要", - "Manage warehouse stock levels, stock-in orders, adjustments, and movement history": "管理倉庫庫存水位、入庫單、盤點調整與異動紀錄", - "Stock overview by warehouse": "依倉庫查看庫存概況", - "Create stock-in orders": "建立入庫單", - "Stock adjustments and damage reports": "庫存調整與報損處理", - "Complete movement history log": "完整的庫存異動歷程", - "Manage stock transfers between warehouses and machine returns": "管理倉庫間調撥與機台退回作業", - "Warehouse to warehouse transfers": "倉庫對倉庫調撥", - "Machine to warehouse returns": "機台退回倉庫", - "Transfer order status tracking": "調撥單狀態追蹤", - "Create replenishment orders and manage restocking from warehouse to machines": "建立補貨單,管理從倉庫到機台的補貨流程", - "Smart replenishment suggestions": "智能補貨建議", - "One-click replenishment order generation": "一鍵產生補貨單", - "Assign replenishment staff": "指派補貨人員", - "Replenishment history": "補貨歷史紀錄", - "Real-time inventory status across all machines with expiry tracking": "即時掌握所有機台庫存狀態與有效期限追蹤", - "View slot-level inventory for each machine": "查看各機台貨道庫存", - "Low stock and out-of-stock alerts": "低庫存與缺貨警示", - "Expiry date tracking and warnings": "有效期限追蹤與預警", - "Quick replenishment from this view": "從此畫面快速補貨", - "Add Warehouse": "新增倉庫", - "Edit Warehouse": "編輯倉庫", - "Warehouse Name": "倉庫名稱", - "Warehouse Type": "倉庫類型", - "Warehouse Info": "倉庫資訊", - "Total Warehouses": "倉庫總數", - "Main Warehouses": "總倉數量", - "Branch Warehouses": "分倉數量", - "Low Stock Alerts": "低庫存警示", - "Products / Stock": "商品 / 庫存", - "Search warehouses...": "搜尋倉庫...", - "e.g. Main Warehouse": "如:總倉A", - "Warehouse created successfully": "倉庫建立成功", - "Warehouse updated successfully": "倉庫更新成功", - "Warehouse deleted successfully": "倉庫已刪除", - "Cannot delete warehouse with existing stock": "無法刪除仍有庫存的倉庫", - "Warehouse :status successfully": "倉庫已:status", - "enabled": "啟用", - "disabled": "停用", - "No warehouses found": "未找到倉庫", - "Disable Warehouse": "停用倉庫", - "Are you sure to delete this warehouse? This action cannot be undone.": "確定要刪除此倉庫嗎?此操作無法復原。", - "Are you sure to disable this warehouse?": "確定要停用此倉庫嗎?", - "System Settings": "系統設定", - "Tax System": "稅務系統", - "Electronic Invoice": "電子發票", - "Card System": "刷卡機系統", - "Credit Card / Contactless": "支援信用卡 / 感應支付", - "Scan Pay": "掃碼支付", - "ESUN": "玉山銀行", - "ESUN Scan Pay": "玉山掃碼支付", - "LinePay": "LinePay", - "Other Features": "其他功能", - "Shopping Cart": "購物車功能", - "Cash Module": "硬幣機 / 紙鈔機模組", - "Save Settings": "儲存設定", - "Track stock levels, stock-in orders, and movement history": "追蹤庫存水位、入庫單與異動紀錄", - "Stock Levels": "庫存水位", - "Stock-In Orders": "入庫單", - "Movement History": "異動紀錄", - "New Stock-In Order": "新增入庫單", - "All Warehouses": "所有倉庫", - "Quantity": "數量", - "Safety Stock": "安全庫存", - "Low Stock": "低庫存", - "Out of Stock": "缺貨", - "Normal": "正常", - "No stock data found": "未找到庫存資料", - "Order No.": "單號", - "Created By": "建立者", - "Confirm": "確認", - "Confirm this stock-in order?": "確認此入庫單?", - "No stock-in orders found": "未找到入庫單", - "All Types": "所有類型", - "All Statuses": "所有狀態", - "Stock In": "入庫", - "Stock Out": "出庫", - "Adjustment": "調整", - "Damage": "報損", - "Transfer In": "調入", - "Transfer Out": "調出", - "Qty Change": "數量變動", - "Operator": "操作人員", - "No movement records found": "未找到異動紀錄", - "Target Warehouse": "目標倉庫", - "Select Warehouse": "選擇倉庫", - "Select Product": "選擇商品", - "Add Item": "新增項目", - "Qty": "數量", - "Stock-in order created": "入庫單已建立", - "Order already processed": "訂單已處理", - "Stock-in order confirmed and inventory updated": "入庫單已確認,庫存已更新", - "Stock-in order": "入庫單", - "Manage stock transfers between warehouses and machine returns": "管理倉庫間調撥與機台退貨", - "New Transfer": "新增調撥", - "Transfer Type": "調撥類型", - "Warehouse to Warehouse": "倉庫對倉庫", - "Machine to Warehouse": "機台退回倉庫", - "From Warehouse": "來源倉庫", - "From Machine": "來源機台", - "To Warehouse": "目標倉庫", - "Select Machine": "選擇機台", - "Note (optional)": "備註(選填)", - "From": "來源", - "To": "目標", - "No transfer orders found": "未找到調撥單", - "Transfer order created": "調撥單已建立", - "Confirm this transfer?": "確認此調撥?", - "Insufficient stock for transfer": "庫存不足,無法調撥", - "Transfer completed": "調撥完成", - "Transfer out": "調出", - "Transfer in": "調入", - "Real-time slot-level inventory across all machines": "即時查看各機台貨道庫存", - "Serial No.": "序號", - "Slots": "貨道數", - "Total Stock": "總庫存", - "Fill Rate": "補貨率", - "View Slots": "查看貨道", - "Search machines...": "搜尋機台...", - "Empty": "空置", - "Expiry": "有效期限", - "No slot data": "無貨道資料", - "Create and manage replenishment orders from warehouse to machines": "建立及管理從倉庫到機台的補貨單", - "New Replenishment": "新增補貨單", - "Source Warehouse": "來源倉庫", - "Target Machine": "目標機台", - "Replenishment Items": "補貨項目", - "Slot": "貨道", - "Pending": "待處理", - "Prepared": "已備貨", - "Delivering": "配送中", - "No replenishment orders found": "未找到補貨單", - "Replenishment order created": "補貨單已建立", - "Order already completed": "訂單已完成", - "Replenishment completed": "補貨完成", - "Replenishment": "補貨", - "Confirm replenishment completed?": "確認補貨已完成?", - "Complete": "完成", - "Goods & System Settings": "商品與系統設定", - "Display Material Code": "顯示物料代碼", - "Enable Points Mechanism": "啟用點數機制", - "Taxation System": "稅務系統", - "Card Terminal System": "刷卡機系統", - "QR Scan Payment": "掃碼支付功能", - "Shopping Cart Feature": "購物車功能", - "Welcome Gift Feature": "來店禮功能", - "Cash Module Feature": "現金模組功能", - "Includes Credit Card/Mobile Pay": "包括 /信用卡/卡片支付/手機支付", - "E.SUN QR Pay": "玉山掃碼支付", - "LinePay Payment": "LinePay 支付", - "Coin/Bill Acceptor": "硬幣機/紙鈔機", - "System settings updated successfully.": "系統設定更新成功。", - "Update Settings": "更新設定", - "Disable Customer Confirmation": "停用客戶確認", - "Disabling this customer will also disable all accounts under this customer. Are you sure you want to continue?": "停用此客戶將會連帶停用該客戶下的所有帳號,確定要繼續嗎?", - "Are you sure to delete this customer?": "確定要刪除此客戶嗎?", - "Customer List": "客戶列表", - "Manage all tenant accounts and validity": "管理所有租戶帳號及其效期", - "Add Customer": "新增客戶", - "Edit Settings": "編輯設定", - "Delete Customer": "刪除客戶", - "Customer Details": "客戶詳情", - "Close Panel": "關閉面板", - "Settings Saved": "設定已儲存", - "Warehouse Management": "倉庫管理", - "Warehouse Overview": "倉庫總覽", - "Add Warehouse": "新增倉庫", - "Total Warehouses": "倉庫總數", - "Main Warehouses": "總倉數量", - "Branch Warehouses": "分倉數量", - "Low Stock Alerts": "低庫存警示", - "Search warehouses...": "搜尋倉庫...", - "Main": "總倉", - "Branch": "分倉", - "Warehouse Info": "倉庫資訊", - "Products / Stock": "商品 / 庫存", - "Products": "商品", - "Stock": "庫存", - "Warehouse created successfully.": "倉庫已成功建立。", - "Warehouse updated successfully.": "倉庫已成功更新。", - "Warehouse deleted successfully.": "倉庫已成功刪除。", - "Cannot delete warehouse with existing stock": "無法刪除仍有庫存的倉庫", - "Inventory Management": "庫存管理", - "Track stock levels, stock-in orders, and movement history": "追蹤庫存水準、進貨單與異動紀錄", - "New Stock-In Order": "新增進貨單", - "Stock Levels": "庫存水準", - "Stock-In Orders": "進貨紀錄", - "Movement History": "異動紀錄", - "Search products...": "搜尋商品...", - "All Warehouses": "所有倉庫", - "Product": "商品", - "Warehouse": "倉庫", - "Quantity": "數量", - "Safety Stock": "安全庫存", - "Low Stock": "庫存過低", - "Out of Stock": "缺貨", - "Normal": "正常", - "No stock data found": "找不到庫存資料", - "Order No.": "單號", - "Created By": "建立者", - "Created At": "建立時間", - "Draft": "草稿", - "Completed": "已完成", - "Confirm this stock-in order?": "確定要確認此進貨單嗎?", - "Confirm": "確認", - "No stock-in orders found": "找不到進貨單", - "Time": "時間", - "Qty Change": "異動數量", - "No movement records found": "找不到異動紀錄", - "Target Warehouse": "目標倉庫", - "Select Warehouse": "選擇倉庫", - "Add Item": "新增項目", - "Select Product": "選擇商品", - "Qty": "數量", - "Note": "備註", - "Optional": "選填", - "Transfer Orders": "轉倉單", - "Manage stock transfers between warehouses and machine returns": "管理倉庫間轉倉與機台退庫作業", - "New Transfer": "新增轉倉", - "All Types": "所有類型", - "Warehouse to Warehouse": "倉庫轉倉庫", - "Machine to Warehouse": "機台退庫", - "All Statuses": "所有狀態", - "Cancelled": "已取消", - "From": "來源", - "To": "目的地", - "Confirm this transfer?": "確定要確認此轉倉作業嗎?", - "No transfer orders found": "找不到轉倉單", - "Transfer Type": "轉倉類型", - "From Warehouse": "來源倉庫", - "From Machine": "來源機台", - "Select Machine": "選擇機台", - "To Warehouse": "目標倉庫", - "Note (optional)": "備註 (選填)", - "Machine Inventory Overview": "機台庫存概覽", - "Real-time slot-level inventory across all machines": "跨機台的即時貨道庫存追蹤", - "Search machines...": "搜尋機台...", - "Serial No.": "序列號", - "Total Stock": "總庫存", - "Fill Rate": "滿載率", - "View Slots": "查看貨道", - "Loading...": "載入中...", - "Empty": "空白", - "Expiry": "效期", - "No slot data": "找不到貨道資料", - "Machine Replenishment": "機台補貨", - "Create and manage replenishment orders from warehouse to machines": "建立並管理從倉庫到機台的補貨單", - "New Replenishment": "新增補貨", - "Pending": "待處理", - "Prepared": "已備貨", - "Delivering": "配送中", - "Confirm replenishment completed?": "確定補貨已完成?", - "No replenishment orders found": "找不到補貨單", - "Source Warehouse": "來源倉庫", - "Target Machine": "目標機台", - "Replenishment Items": "補貨項目", - "Slot": "貨道", - "Stock In": "庫存入庫", - "Stock Out": "庫存出庫", - "Adjustment": "庫存調整", - "Damage": "報廢", - "Transfer In": "轉入", - "Transfer Out": "轉出" + "Filter by Warehouse Presence": "依據倉庫存貨篩選", + "待填寫": "待填寫" } \ No newline at end of file diff --git a/resources/views/admin/ads/index.blade.php b/resources/views/admin/ads/index.blade.php index 984c33c..0e0cae0 100644 --- a/resources/views/admin/ads/index.blade.php +++ b/resources/views/admin/ads/index.blade.php @@ -91,7 +91,63 @@ $baseRoute = 'admin.data-config.advertisements';

{{ __('Loading Data') }}...

-
+ +
+
+
+ +
+ + + + + + + +
+ +
+ + + + + + @if(auth()->user()->isSystemAdmin()) + + @endif +
+
+ + +
+
+ +
+
@@ -141,8 +197,8 @@ $baseRoute = 'admin.data-config.advertisements';
- {{ __('From') }}: {{ $ad->start_at?->format('Y-m-d H:i') ?? __('Immediate') }} - {{ __('To') }}: {{ $ad->end_at?->format('Y-m-d H:i') ?? __('Indefinite') }} + {{ __('Publish') }}: {{ $ad->start_at?->format('Y-m-d H:i') ?? __('Immediate') }} + {{ __('Unpublish') }}: {{ $ad->end_at?->format('Y-m-d H:i') ?? __('Indefinite') }}
@@ -185,7 +241,8 @@ $baseRoute = 'admin.data-config.advertisements';
- {{ $advertisements->links('vendor.pagination.luxury') }} + {{ $advertisements->appends(request()->query())->links('vendor.pagination.luxury') }} +
@@ -481,22 +538,22 @@ $baseRoute = 'admin.data-config.advertisements'; const parser = new DOMParser(); const doc = parser.parseFromString(html, 'text/html'); - // Update table contents - const newTableBody = doc.querySelector('tbody'); - const currentTableBody = document.querySelector('tbody'); - if (newTableBody && currentTableBody) { - currentTableBody.innerHTML = newTableBody.innerHTML; - } - - // Update pagination - const newPagination = doc.querySelector('.mt-8'); - const currentPagination = document.querySelector('.mt-8'); - if (newPagination && currentPagination) { - currentPagination.innerHTML = newPagination.innerHTML; + // Update main content container + const newContent = doc.querySelector('#ajax-content-container'); + const currentContent = document.querySelector('#ajax-content-container'); + if (newContent && currentContent) { + currentContent.innerHTML = newContent.innerHTML; } // Update URL without reload window.history.pushState({}, '', url); + + // Re-initialize Preline UI + this.$nextTick(() => { + if (window.HSStaticMethods) { + window.HSStaticMethods.autoInit(); + } + }); } catch (error) { console.error('Error fetching page:', error); diff --git a/resources/views/admin/basic-settings/machines/distribution.blade.php b/resources/views/admin/basic-settings/machines/distribution.blade.php new file mode 100644 index 0000000..e6962a2 --- /dev/null +++ b/resources/views/admin/basic-settings/machines/distribution.blade.php @@ -0,0 +1,193 @@ + + + + + + {{ __('Machine Distribution Map') }} | Star Cloud + + + + + + + + + + @vite(['resources/css/app.css', 'resources/js/app.js']) + + + + +
+ + + + +
+
+ + +
+
+
+

+ {{ __('Machine Distribution Map') }} +

+
+
+ + + + +
+
+
+
+
+ + + + + + + diff --git a/resources/views/admin/basic-settings/machines/edit.blade.php b/resources/views/admin/basic-settings/machines/edit.blade.php index f6045af..b995832 100644 --- a/resources/views/admin/basic-settings/machines/edit.blade.php +++ b/resources/views/admin/basic-settings/machines/edit.blade.php @@ -130,6 +130,7 @@ +
{{ $message }}

@enderror
@endif + +
+
+ +
+ + +
+
+
+ + +
+
+ + +
+
@@ -388,3 +420,46 @@ @endsection + +@section('scripts') + +@endsection + diff --git a/resources/views/admin/basic-settings/machines/index.blade.php b/resources/views/admin/basic-settings/machines/index.blade.php index 9b38016..11215d2 100644 --- a/resources/views/admin/basic-settings/machines/index.blade.php +++ b/resources/views/admin/basic-settings/machines/index.blade.php @@ -309,6 +309,12 @@

{{ __('Management of operational parameters and models') }}

+ + + + + {{ __('Machine Distribution') }} +
+ +
+
+ +
+ + +
+
+
+ + +
+
+ + +
+
+@endsection + +@section('scripts') + @endsection \ No newline at end of file diff --git a/resources/views/admin/data-config/accounts.blade.php b/resources/views/admin/data-config/accounts.blade.php index 4ebf9a2..3931ffa 100644 --- a/resources/views/admin/data-config/accounts.blade.php +++ b/resources/views/admin/data-config/accounts.blade.php @@ -416,7 +416,6 @@ $roleSelectConfig = [ @endif -
diff --git a/resources/views/admin/warehouses/index.blade.php b/resources/views/admin/warehouses/index.blade.php index 97e797e..9427c66 100644 --- a/resources/views/admin/warehouses/index.blade.php +++ b/resources/views/admin/warehouses/index.blade.php @@ -1,28 +1,157 @@ @extends('layouts.admin') @section('content') -
+}" @ajax:navigate.window.prevent="fetchPage($event.detail.url); $event.stopImmediatePropagation();"> + +
+
+
+
+
+
+ + + +
+
+

{{ + __('Loading Data') }}...

+
{{-- Header --}}
@@ -30,7 +159,9 @@

{{ __('Manage your warehouses, including main and branch warehouses') }}

@@ -56,27 +187,39 @@
{{-- Table Card --}} -
+
{{-- Filters --}}
-
+ - + + + + - +
-
- + {{ __('All') }} {{ __('Main') }} {{ __('Branch') }} @@ -88,58 +231,103 @@ - - - - - + + @if(auth()->user()->isSystemAdmin()) + + @endif + + + + @forelse($warehouses as $warehouse) - + @if(auth()->user()->isSystemAdmin()) + + @endif @empty -
{{ __('Warehouse Info') }}{{ __('Type') }}{{ __('Products / Stock') }}{{ __('Status') }}{{ __('Actions') }} + {{ __('Warehouse Info') }} + {{ __('Company Name') }} + {{ __('Type') }} + {{ __('Products / Stock') }} + {{ __('Status') }} + {{ __('Actions') }}
+
-
- +
+ + +
- {{ $warehouse->name }} + {{ + $warehouse->name }} @if($warehouse->address) - {{ $warehouse->address }} + {{ + $warehouse->address }} @endif
+ + {{ $warehouse->company->name ?? __('System Default') }} + + @if($warehouse->type === 'main')
- {{ __('Main') }} + {{ + __('Main') }}
@else
- {{ __('Branch') }} + {{ + __('Branch') }}
@endif
- {{ $warehouse->products_count ?? 0 }} - {{ __('Products') }} + {{ + $warehouse->products_count ?? 0 }} + {{ + __('Products') }}
- {{ (int)($warehouse->total_stock ?? 0) }} - {{ __('Stock') }} + {{ + (int)($warehouse->total_stock ?? 0) }} + {{ + __('Stock') }}
@if($warehouse->is_active) - {{ __('Active') }} + {{ + __('Active') }} @else - {{ __('Disabled') }} + {{ + __('Disabled') }} @endif @@ -149,36 +337,68 @@ @click="toggleFormAction = '{{ route('admin.warehouses.toggle-status', $warehouse->id) }}'; isStatusConfirmOpen = true" class="p-2.5 rounded-lg bg-slate-50 dark:bg-slate-800 text-slate-400 hover:text-amber-500 hover:bg-amber-500/5 transition-all border border-transparent hover:border-amber-500/20" title="{{ __('Disable') }}"> - + + + @else @endif +
+
-
- +
+ + +

{{ __('No warehouses found') }}

@@ -198,26 +418,47 @@ {{-- Create/Edit Modal --}}
-
+
+
-
+
-

-
-
+ @csrf
- - + +
- -
+ +
+ + @if(auth()->user()->isSystemAdmin())
- - + + +
+ @else + + @endif + +
+ +
- - +
@@ -268,5 +537,122 @@ @csrf @method('PATCH') -
-@endsection + + + +
+@endsection \ No newline at end of file diff --git a/resources/views/admin/warehouses/inventory.blade.php b/resources/views/admin/warehouses/inventory.blade.php index 764704c..b9d1e77 100644 --- a/resources/views/admin/warehouses/inventory.blade.php +++ b/resources/views/admin/warehouses/inventory.blade.php @@ -1,275 +1,636 @@ @extends('layouts.admin') @section('content') -
- {{-- Header --}} + + +
+ + +

{{ __('Inventory Management') }}

-

{{ __('Track stock levels, stock-in orders, and movement history') }}

+

+ {{ __('Track stock-in orders and movement history') }} +

-
- +
+
- {{-- Tab Navigation --}} -
- - {{ __('Stock Levels') }} - - + - {{-- Tab: Stock Levels --}} - @if($tab === 'stock') -
-
- -
- - + +
+ +
+ + +
+
+
+
+
+ + + +
+
+

{{ __('Loading Data') }}...

-
- -
- -
- - - - - - - - - - - - @forelse($stocks as $stock) - - - - - - - - @empty - - @endforelse - -
{{ __('Product') }}{{ __('Warehouse') }}{{ __('Quantity') }}{{ __('Safety Stock') }}{{ __('Status') }}
-
-
- @if($stock->product?->image_url) - - @else - - @endif -
- {{ $stock->product?->name ?? '-' }} +
+ @if($tab === 'stock') @include('admin.warehouses.partials.tab-stock') @endif +
+
+ + + +
+ + +
+
+
+
+
+ + + +
+
+

{{ __('Loading Data') }}...

+
+ +
+ @if($tab === 'stock-in') @include('admin.warehouses.partials.tab-stock-in') @endif +
+
+ + +
+ + +
+
+
+
+
+ + + +
+
+

{{ __('Loading Data') }}...

+
+ +
+ @if($tab === 'movements') @include('admin.warehouses.partials.tab-movements') @endif +
+
+ + + +
- {{ $stock->warehouse?->name ?? '-' }} - @if($stock->warehouse?->type === 'main') - {{ __('Main') }} - @endif - - {{ $stock->quantity }} - - {{ $stock->safety_stock }} - - @if($stock->safety_stock > 0 && $stock->quantity <= $stock->safety_stock) - {{ __('Low Stock') }} - @elseif($stock->quantity === 0) - {{ __('Out of Stock') }} - @else - {{ __('Normal') }} - @endif -
{{ __('No stock data found') }}
-
-
{{ $stocks->links('vendor.pagination.luxury') }}
-
- @endif - - {{-- Tab: Stock-In Orders --}} - @if($tab === 'stock-in') -
-
- - - - - - - - - - - - - @forelse($orders as $order) - - - - - - - - - @empty - - @endforelse - -
{{ __('Order No.') }}{{ __('Warehouse') }}{{ __('Status') }}{{ __('Created By') }}{{ __('Created At') }}{{ __('Actions') }}
{{ $order->order_no }}{{ $order->warehouse?->name }} - @if($order->status === 'draft') - {{ __('Draft') }} - @else - {{ __('Completed') }} - @endif - {{ $order->creator?->name ?? '-' }}{{ $order->created_at?->format('Y-m-d H:i') }} - @if($order->status === 'draft') - - @csrf @method('PATCH') - - - @else - {{ $order->completed_at?->format('Y-m-d H:i') }} - @endif -
{{ __('No stock-in orders found') }}
-
-
{{ $orders->links('vendor.pagination.luxury') }}
-
- @endif - - {{-- Tab: Movement History --}} - @if($tab === 'movements') -
-
- - - -
- -
- - - - - - - - - - - - - @forelse($movements as $mv) - - - - - - - - - @empty - - @endforelse - -
{{ __('Time') }}{{ __('Warehouse') }}{{ __('Product') }}{{ __('Type') }}{{ __('Qty Change') }}{{ __('Operator') }}
{{ $mv->created_at?->format('m-d H:i') }}{{ $mv->warehouse?->name }}{{ $mv->product?->name }} - @php $typeColor = in_array($mv->type, ['in', 'transfer_in']) ? 'emerald' : (in_array($mv->type, ['out', 'transfer_out']) ? 'rose' : 'amber'); @endphp - {{ __(\App\Models\Warehouse\StockMovement::TYPE_LABELS[$mv->type] ?? $mv->type) }} - - {{ in_array($mv->type, ['in', 'transfer_in']) ? '+' : '-' }}{{ $mv->quantity }} - ({{ $mv->before_qty }}→{{ $mv->after_qty }}) - {{ $mv->creator?->name ?? '-' }}
{{ __('No movement records found') }}
-
-
{{ $movements->links('vendor.pagination.luxury') }}
-
- @endif - - {{-- Stock-In Modal --}} -
-
-
-
-

{{ __('New Stock-In Order') }}

-
- @csrf -
- - -
-
- - -
-
-
- -
- \ No newline at end of file diff --git a/resources/views/components/searchable-select.blade.php b/resources/views/components/searchable-select.blade.php index ebdca96..e44ab51 100644 --- a/resources/views/components/searchable-select.blade.php +++ b/resources/views/components/searchable-select.blade.php @@ -23,7 +23,7 @@ "searchWrapperClasses" => "sticky top-0 bg-white/95 dark:bg-slate-900/95 backdrop-blur-md p-2 z-10", "toggleClasses" => "hs-select-toggle luxury-select-toggle", "toggleTemplate" => '', - "dropdownClasses" => "hs-select-menu w-full bg-white dark:bg-slate-900 border border-slate-200 dark:border-white/10 rounded-xl shadow-[0_20px_50px_rgba(0,0,0,0.3)] mt-2 z-[100] animate-luxury-in", + "dropdownClasses" => "hs-select-menu w-full bg-white dark:bg-slate-900 border border-slate-200 dark:border-white/10 rounded-xl shadow-[0_20px_50px_rgba(0,0,0,0.3)] mt-2 z-[150] animate-luxury-in", "optionClasses" => "hs-select-option py-2.5 px-3 mb-0.5 text-sm text-slate-800 dark:text-slate-300 cursor-pointer hover:bg-slate-100 dark:hover:bg-cyan-500/10 dark:hover:text-cyan-400 rounded-lg flex items-center justify-between transition-all duration-300", "optionTemplate" => '
' ]; diff --git a/routes/web.php b/routes/web.php index 6bca167..d90c2a4 100644 --- a/routes/web.php +++ b/routes/web.php @@ -21,6 +21,9 @@ Route::get('/', function () { return redirect()->route('login'); }); +// 公開機台分布地圖 (無需登入) +Route::get('/machines/distribution', [App\Http\Controllers\Admin\BasicSettings\MachineSettingController::class, 'distribution'])->name('machines.distribution'); + Route::get('/dashboard', function () { return redirect()->route('admin.dashboard'); })->middleware(['auth', 'verified'])->name('dashboard'); @@ -81,11 +84,13 @@ Route::middleware(['auth', 'verified', 'tenant.access'])->prefix('admin')->name( Route::get('/inventory', [App\Http\Controllers\Admin\WarehouseController::class, 'inventory'])->name('inventory'); Route::post('/inventory/stock-in', [App\Http\Controllers\Admin\WarehouseController::class, 'storeStockIn'])->name('inventory.stock-in.store'); Route::patch('/inventory/stock-in/{stockInOrder}/confirm', [App\Http\Controllers\Admin\WarehouseController::class, 'confirmStockIn'])->name('inventory.stock-in.confirm'); + Route::get('/inventory/stock-in/{order}/details', [App\Http\Controllers\Admin\WarehouseController::class, 'stockInOrderDetails'])->name('inventory.stock-in.details'); // 模組 3:調撥單 Route::get('/transfers', [App\Http\Controllers\Admin\WarehouseController::class, 'transfers'])->name('transfers'); Route::post('/transfers', [App\Http\Controllers\Admin\WarehouseController::class, 'storeTransfer'])->name('transfers.store'); Route::patch('/transfers/{transferOrder}/confirm', [App\Http\Controllers\Admin\WarehouseController::class, 'confirmTransfer'])->name('transfers.confirm'); + Route::get('/transfers/{order}/details', [App\Http\Controllers\Admin\WarehouseController::class, 'transferOrderDetails'])->name('transfers.details'); // 模組 4:機台庫存總覽 Route::get('/machine-inventory', [App\Http\Controllers\Admin\WarehouseController::class, 'machineInventory'])->name('machine-inventory'); @@ -95,6 +100,11 @@ Route::middleware(['auth', 'verified', 'tenant.access'])->prefix('admin')->name( Route::get('/replenishments', [App\Http\Controllers\Admin\WarehouseController::class, 'replenishments'])->name('replenishments'); Route::post('/replenishments', [App\Http\Controllers\Admin\WarehouseController::class, 'storeReplenishment'])->name('replenishments.store'); Route::patch('/replenishments/{replenishmentOrder}/confirm', [App\Http\Controllers\Admin\WarehouseController::class, 'confirmReplenishment'])->name('replenishments.confirm'); + Route::get('/replenishments/{order}/details', [App\Http\Controllers\Admin\WarehouseController::class, 'replenishmentOrderDetails'])->name('replenishments.details'); + + // AJAX 庫存查詢 + Route::get('/ajax/stock', [App\Http\Controllers\Admin\WarehouseController::class, 'getStockAjax'])->name('ajax.stock'); + Route::get('/{warehouse}/inventory-ajax', [App\Http\Controllers\Admin\WarehouseController::class, 'warehouseStocks'])->name('inventory-ajax'); }); // 6. 銷售管理 @@ -203,6 +213,9 @@ Route::middleware(['auth', 'verified', 'tenant.access'])->prefix('admin')->name( Route::put('/{machine}', [App\Http\Controllers\Admin\BasicSettings\MachineSettingController::class, 'update'])->name('update'); Route::post('/', [App\Http\Controllers\Admin\BasicSettings\MachineSettingController::class, 'store'])->name('store'); Route::post('/{machine}/regenerate-token', [App\Http\Controllers\Admin\BasicSettings\MachineSettingController::class, 'regenerateToken'])->name('regenerate-token'); + + // 地址轉座標 (Geocoding Proxy) + Route::post('/geocode', [App\Http\Controllers\Admin\GeocodingController::class, 'resolve'])->name('geocode'); }); // 客戶金流設定 diff --git a/scratch/dedupe_lang.py b/scratch/dedupe_lang.py new file mode 100644 index 0000000..6022d1b --- /dev/null +++ b/scratch/dedupe_lang.py @@ -0,0 +1,253 @@ +import json +import os + +files = { + 'zh_TW': '/home/mama/projects/star-cloud/lang/zh_TW.json', + 'en': '/home/mama/projects/star-cloud/lang/en.json', + 'ja': '/home/mama/projects/star-cloud/lang/ja.json' +} + +new_keys = { + "CREATE STOCK TRANSFERS BETWEEN WAREHOUSES AND MACHINE RETURNS": { + "zh_TW": "建立倉庫間調撥或機台退庫單", + "en": "Create stock transfers between warehouses and machine returns", + "ja": "倉庫間の転送および機台からの返品伝票を作成" + }, + "Create and manage replenishment orders from warehouse to machines": { + "zh_TW": "建立並管理從倉庫到機台的補貨單", + "en": "Create and manage replenishment orders from warehouse to machines", + "ja": "倉庫から機台への補充伝票の作成と管理" + }, + "Create stock transfers between warehouses and machine returns": { + "zh_TW": "建立倉庫間調撥或機台退庫單", + "en": "Create stock transfers between warehouses and machine returns", + "ja": "倉庫間の転送および機台からの返品伝票を作成" + }, + "Create Transfer Order": { + "zh_TW": "建立調撥單", + "en": "Create Transfer Order", + "ja": "転送伝票を作成" + }, + "Create Replenishment Order": { + "zh_TW": "建立補貨單", + "en": "Create Replenishment Order", + "ja": "補充伝票を作成" + }, + "New Transfer": { + "zh_TW": "新增調撥單", + "en": "New Transfer", + "ja": "新規転送" + }, + "New Replenishment": { + "zh_TW": "新增補貨單", + "en": "New Replenishment", + "ja": "新規補充" + }, + "New Stock-In Order": { + "zh_TW": "新增進貨單", + "en": "New Stock-In Order", + "ja": "新規入庫伝票" + }, + "No transfer orders found": { + "zh_TW": "查無調撥單紀錄", + "en": "No transfer orders found", + "ja": "転送伝票が見つかりません" + }, + "No replenishment orders found": { + "zh_TW": "查無補貨單紀錄", + "en": "No replenishment orders found", + "ja": "補充伝票が見つかりません" + }, + "No stock data found": { + "zh_TW": "查無庫存資料", + "en": "No stock data found", + "ja": "在庫データが見つかりません" + }, + "No stock-in orders found": { + "zh_TW": "查無進貨單紀錄", + "en": "No stock-in orders found", + "ja": "入庫伝票が見つかりません" + }, + "No movement records found": { + "zh_TW": "查無異動紀錄", + "en": "No movement records found", + "ja": "移動履歴が見つかりません" + }, + "Replenishment Orders": { + "zh_TW": "機台補貨單", + "en": "Replenishment Orders", + "ja": "機台補充伝票" + }, + "Search products...": { + "zh_TW": "搜尋商品...", + "en": "Search products...", + "ja": "商品を検索..." + }, + "Search Product": { + "zh_TW": "搜尋商品", + "en": "Search Product", + "ja": "商品を検索" + }, + "Select Warehouse": { + "zh_TW": "選擇倉庫", + "en": "Select Warehouse", + "ja": "倉庫を選択" + }, + "Select Machine": { + "zh_TW": "選擇機台", + "en": "Select Machine", + "ja": "機台を選択" + }, + "Select Product": { + "zh_TW": "選擇商品", + "en": "Select Product", + "ja": "商品を選択" + }, + "Source Warehouse": { + "zh_TW": "來源倉庫", + "en": "Source Warehouse", + "ja": "発送元倉庫" + }, + "Target Warehouse": { + "zh_TW": "目標倉庫", + "en": "Target Warehouse", + "ja": "対象倉庫" + }, + "Stock-In Orders": { + "zh_TW": "進貨單管理", + "en": "Stock-In Orders", + "ja": "入庫伝票" + }, + "Stock-In Management": { + "zh_TW": "進貨管理", + "en": "Stock-In Management", + "ja": "入庫管理" + }, + "Stock flow history": { + "zh_TW": "庫存流向歷史", + "en": "Stock flow history", + "ja": "在庫移動履歴" + }, + "Stock-In Orders Tab": { + "zh_TW": "進貨單管理", + "en": "Stock-In Orders", + "ja": "入庫伝票" + }, + "Transfer Orders": { + "zh_TW": "調撥單管理", + "en": "Transfer Orders", + "ja": "転送伝票" + }, + "Track stock-in orders and movement history": { + "zh_TW": "追蹤進貨單據與庫存異動紀錄", + "en": "Track stock-in orders and movement history", + "ja": "入庫伝票および移動履歴の追跡" + }, + "Warehouse to Warehouse": { + "zh_TW": "倉庫對倉庫", + "en": "Warehouse to Warehouse", + "ja": "倉庫間転送" + }, + "Warehouse Transfer": { + "zh_TW": "倉庫調撥", + "en": "Warehouse Transfer", + "ja": "倉庫転送" + }, + "Warehouse Management": { + "zh_TW": "倉儲管理", + "en": "Warehouse Management", + "ja": "倉庫管理" + }, + "Warehouse purchase records": { + "zh_TW": "倉庫採購進貨紀錄", + "en": "Warehouse purchase records", + "ja": "倉庫購入記録" + }, + "Machine to Warehouse": { + "zh_TW": "機台對倉庫", + "en": "Machine to Warehouse", + "ja": "機台から倉庫" + }, + "Machine Return": { + "zh_TW": "機台退庫", + "en": "Machine Return", + "ja": "機台返品" + }, + "Machine Replenishment": { + "zh_TW": "機台補貨單", + "en": "Machine Replenishment", + "ja": "機台補充" + }, + "Movement History": { + "zh_TW": "異動紀錄", + "en": "Movement History", + "ja": "移動履歴" + }, + "Movement Logs": { + "zh_TW": "異動紀錄", + "en": "Movement Logs", + "ja": "移動ログ" + }, + "Manage stock transfers between warehouses and machine returns": { + "zh_TW": "建立倉庫間調撥或機台退庫單", + "en": "Manage stock transfers between warehouses and machine returns", + "ja": "倉庫間の転送および機台からの返品伝票を作成" + }, + "Main": { + "zh_TW": "總倉", + "en": "Main", + "ja": "総倉庫" + }, + "Note": { + "zh_TW": "備註", + "en": "Note", + "ja": "備考" + }, + "Transfer Audit": { + "zh_TW": "調撥單", + "en": "Transfer Audit", + "ja": "転送監査" + }, + "Transfers": { + "zh_TW": "調撥單", + "en": "Transfers", + "ja": "転送" + }, + "Inventory Management": { + "zh_TW": "庫存管理", + "en": "Inventory Management", + "ja": "在庫管理" + }, + "Manage stock levels, stock-in orders, and movement history": { + "zh_TW": "追蹤庫存水位、進貨單與異動紀錄", + "en": "Manage stock levels, stock-in orders, and movement history", + "ja": "在庫レベル、入庫伝票、および移動履歴の管理" + }, + "Track stock levels, stock-in orders, and movement history": { + "zh_TW": "追蹤庫存水位、進貨單與異動紀錄", + "en": "Track stock levels, stock-in orders, and movement history", + "ja": "在庫レベル、入庫伝票、および移動履歴の追跡" + } +} + +for lang, path in files.items(): + if not os.path.exists(path): + continue + + with open(path, 'r', encoding='utf-8') as f: + data = json.load(f) + + # Update menu.warehouses + if lang == 'zh_TW': + data['menu.warehouses'] = "倉儲管理" + + # Add/Update keys + for k, v in new_keys.items(): + if lang in v: + data[k] = v[lang] + elif lang == 'en': + data[k] = k + + # Sort keys and write back + with open(path, 'w', encoding='utf-8') as f: + json.dump(data, f, ensure_ascii=False, indent=4, sort_keys=True) diff --git a/scratch/test_breadcrumbs.php b/scratch/test_breadcrumbs.php new file mode 100644 index 0000000..e76c2e6 --- /dev/null +++ b/scratch/test_breadcrumbs.php @@ -0,0 +1,66 @@ + __('Dashboard'), + 'url' => '/admin/dashboard', + 'active' => $routeName === 'admin.dashboard' + ]; + + $moduleMap = [ + 'admin.warehouses' => __('Warehouse Management'), + // ... simplified + ]; + + $foundModule = null; + foreach ($moduleMap as $prefix => $label) { + if (str_starts_with($routeName, $prefix)) { + $foundModule = [ + 'label' => $label, + 'url' => '#', + 'active' => false + ]; + break; + } + } + + if ($foundModule) { + $links[] = $foundModule; + } + + $segments = explode('.', $routeName); + $lastSegment = end($segments); + + // Simplifed page labels + $pageLabel = match($lastSegment) { + 'inventory' => __('Inventory Management'), + 'index' => 'Warehouse Overview', + default => null, + }; + + if ($pageLabel) { + $links[] = [ + 'label' => $pageLabel, + 'active' => true + ]; + } + + echo "Route: $routeName\n"; + foreach ($links as $link) { + echo " - " . $link['label'] . ($link['active'] ? " (active)" : "") . "\n"; + } + echo "\n"; +} + +testBreadcrumbs('admin.warehouses.inventory'); +testBreadcrumbs('admin.warehouses.index');