[FIX] 修正 APK 版本管理 UI 間距、深色模式 Bug 與三語系翻譯對齊
1. 將 APK 列表與新增頁面的自定義 Header 改用系統標準 <x-page-header> 元件,外層容器垂直間距統一調整為 space-y-4,完美對齊麵包屑與後台標準比例。 2. 修正前端 Alpine.js x-text 指令中誤用 PHP 二元運算子 ?: 導致機台 APP 版本號渲染空白的 JavaScript 語法 Bug。 3. 修正 Modal 表格清單的 thead 背景誤用不存在的 slate-850 導致深色模式下顯示突兀純白的問題,調整為更具層次感的 bg-slate-50/50 dark:bg-slate-950/40。 4. 補齊 Version Info、Forced Update 與 Optional Update 等三語系翻譯,並移除舊文案,採用 ksort 自動完成三語系 Perfect Align 字母排序對齊。 5. 優化強制更新與重要注意事項的文案及視覺樣式,調整強制更新啟用時的玫瑰紅 (rose) 警示背景,並放大重要通知的字體以提高可讀性。
This commit is contained in:
parent
7dee52a00a
commit
93845c990e
50
lang/en.json
50
lang/en.json
@ -13,7 +13,10 @@
|
||||
"API Token Copied": "API Token Copied",
|
||||
"API Token has been regenerated due to serial number change.": "API Token has been regenerated due to serial number change.",
|
||||
"API Token regenerated successfully.": "API Token regenerated successfully.",
|
||||
"APK Source": "APK Source",
|
||||
"APK Versions": "APK Versions",
|
||||
"APK version deleted successfully.": "APK version deleted successfully.",
|
||||
"APK version uploaded successfully.": "APK version uploaded successfully.",
|
||||
"APP Features": "APP Features",
|
||||
"APP Management": "APP Management",
|
||||
"APP Version": "APP Version",
|
||||
@ -124,6 +127,7 @@
|
||||
"Analysis Management": "Analysis Management",
|
||||
"Analysis Permissions": "Analysis Permissions",
|
||||
"Analyze Solely": "Analyze Solely",
|
||||
"App Version": "App Version",
|
||||
"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",
|
||||
@ -145,6 +149,7 @@
|
||||
"Are you sure you want to confirm this transfer? This will deduct stock from source and add to target.": "Are you sure you want to confirm this transfer? This will deduct stock from source and add to target.",
|
||||
"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 deactivate this pass code? It will no longer be usable for authentication.": "Are you sure you want to deactivate this pass code? It will no longer be usable for authentication.",
|
||||
"Are you sure you want to delete this APK version? This action will permanently remove the record and file.": "Are you sure you want to delete this APK version? This action will permanently remove the record and file.",
|
||||
"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.",
|
||||
"Are you sure you want to delete this advertisement? This will also remove all assignments to machines.": "Are you sure you want to delete this advertisement? This will also remove all assignments to machines.",
|
||||
@ -351,6 +356,7 @@
|
||||
"Contract Until (Optional)": "Contract Until (Optional)",
|
||||
"Contract information updated": "Contract information updated",
|
||||
"Control": "Control",
|
||||
"Control deployment behavior": "Control deployment behavior",
|
||||
"Copy": "Copy",
|
||||
"Copy Code": "Copy Code",
|
||||
"Copy Link": "Copy Link",
|
||||
@ -458,7 +464,10 @@
|
||||
"Delivery door open error": "Delivery door open error",
|
||||
"Delivery door opened": "Delivery door opened",
|
||||
"Delta": "Delta",
|
||||
"Deploy Update": "Deploy Update",
|
||||
"Deploy version": "Deploy version",
|
||||
"Deposit Bonus": "Deposit Bonus",
|
||||
"Describe the changes in this version...": "Describe the changes in this version...",
|
||||
"Describe the repair or maintenance status...": "Describe the repair or maintenance status...",
|
||||
"Description / Name": "Description / Name",
|
||||
"Deselect All": "Deselect All",
|
||||
@ -471,6 +480,7 @@
|
||||
"Device Status Logs": "Device Status Logs",
|
||||
"Device connection drops or minor warnings.": "Device connection drops or minor warnings.",
|
||||
"Devices": "Devices",
|
||||
"Devices Selected": "Devices Selected",
|
||||
"Disable": "Disable",
|
||||
"Disable Advertisement Confirmation": "Disable Advertisement Confirmation",
|
||||
"Disable Code": "Disable Code",
|
||||
@ -511,9 +521,12 @@
|
||||
"Door Opened": "Door Opened",
|
||||
"Download Image": "Download Image",
|
||||
"Download Template": "Download Template",
|
||||
"Download URL": "Download URL",
|
||||
"Draft": "Draft",
|
||||
"Drag & drop your APK here": "Drag & drop your APK here",
|
||||
"Duration": "Duration",
|
||||
"Duration (Seconds)": "Duration (Seconds)",
|
||||
"During OTA deployment, the device will install directly in the background without user confirmation.": "During OTA deployment, the device will install directly in the background without user confirmation.",
|
||||
"E-Ticket (EasyCard/iPass)": "E-Ticket (EasyCard/iPass)",
|
||||
"E.SUN Bank Scan": "E.SUN Bank Scan",
|
||||
"E.SUN Pay": "E.SUN Pay",
|
||||
@ -626,6 +639,7 @@
|
||||
"Export Report": "Export Report",
|
||||
"Export to CSV": "Export to CSV",
|
||||
"Export to Excel": "Export to Excel",
|
||||
"External URL": "External URL",
|
||||
"Failed": "Failed",
|
||||
"Failed to fetch machine data.": "Failed to fetch machine data.",
|
||||
"Failed to load permissions": "Failed to load permissions",
|
||||
@ -641,6 +655,7 @@
|
||||
"Feature Settings": "Feature Settings",
|
||||
"Feature Toggles": "Feature Toggles",
|
||||
"Field": "Field",
|
||||
"File Upload": "File Upload",
|
||||
"Fill Quantity": "Fill Quantity",
|
||||
"Fill Rate": "Fill Rate",
|
||||
"Fill in the device repair or maintenance details": "Fill in the device repair or maintenance details",
|
||||
@ -649,6 +664,7 @@
|
||||
"Filter by Company": "Filter by Company",
|
||||
"Filter by Warehouse Presence": "Filter by Warehouse Presence",
|
||||
"Firmware Version": "Firmware Version",
|
||||
"Firmware identification details": "Firmware identification details",
|
||||
"Firmware updated to :version": "Firmware updated to :version",
|
||||
"Fleet Avg OEE": "Fleet Avg OEE",
|
||||
"Fleet Performance": "Fleet Performance",
|
||||
@ -736,6 +752,8 @@
|
||||
"Flow ID / Time": "Flow ID / Time",
|
||||
"Force End Session": "Force End Session",
|
||||
"Force end current session": "Force end current session",
|
||||
"Forced Update": "Forced Update",
|
||||
"Format: Major_Minor_Patch_R": "Format: Major_Minor_Patch_R",
|
||||
"From": "From",
|
||||
"From Machine": "From Machine",
|
||||
"From Warehouse": "From Warehouse",
|
||||
@ -793,6 +811,7 @@
|
||||
"Import Excel": "Import Excel",
|
||||
"Import Staff Cards": "Import Staff Cards",
|
||||
"Import failed": "Import failed",
|
||||
"Important Notice": "Important Notice",
|
||||
"In Stock": "In Stock",
|
||||
"Inactive": "Inactive",
|
||||
"Includes Credit Card/Mobile Pay": "Includes Credit Card/Mobile Pay",
|
||||
@ -908,10 +927,12 @@
|
||||
"Machine Connectivity Lost": "Connection Lost",
|
||||
"Machine Connectivity Restored": "Connection Restored",
|
||||
"Machine Count": "Machine Count",
|
||||
"Machine Detail": "Machine Detail",
|
||||
"Machine Details": "Machine Details",
|
||||
"Machine Discord notification settings updated successfully.": "Machine Discord notification settings updated successfully.",
|
||||
"Machine Distribution": "Machine Distribution",
|
||||
"Machine Distribution Map": "Machine Distribution Map",
|
||||
"Machine Flavor": "Machine Flavor",
|
||||
"Machine Flow ID": "Machine Flow ID",
|
||||
"Machine Flow ID / Time": "Machine Flow ID / Time",
|
||||
"Machine Images": "Machine Images",
|
||||
@ -1015,6 +1036,7 @@
|
||||
"Max Capacity": "Max Capacity",
|
||||
"Max Capacity:": "Max Capacity:",
|
||||
"Max Stock": "Max Stock",
|
||||
"Maximum file size: 100MB": "Maximum file size: 100MB",
|
||||
"Member": "Member",
|
||||
"Member & External": "Member & External",
|
||||
"Member + 1": "Member + 1",
|
||||
@ -1065,6 +1087,7 @@
|
||||
"Movement History": "Movement History",
|
||||
"Movement Logs": "Movement Logs",
|
||||
"Multilingual Names": "Multilingual Names",
|
||||
"Must be strictly greater than previous version": "Must be strictly greater than previous version",
|
||||
"N/A": "N/A",
|
||||
"Name": "Name",
|
||||
"Name / Machine": "Name / Machine",
|
||||
@ -1120,6 +1143,7 @@
|
||||
"No machines available": "No machines available",
|
||||
"No machines available in this company.": "No machines available in this company.",
|
||||
"No machines found": "No machines found",
|
||||
"No machines match your criteria": "No machines match your criteria",
|
||||
"No maintenance records found": "No maintenance records found",
|
||||
"No matching logs found": "No matching logs found",
|
||||
"No matching machines": "No matching machines",
|
||||
@ -1153,6 +1177,7 @@
|
||||
"No usage logs found": "No usage logs found",
|
||||
"No usage logs found.": "No usage logs found.",
|
||||
"No users found": "No users found",
|
||||
"No versions found": "No versions found",
|
||||
"No warehouses found": "No warehouses found",
|
||||
"No welcome gifts found": "No welcome gifts found",
|
||||
"None": "None",
|
||||
@ -1172,6 +1197,9 @@
|
||||
"OEE.Hours": "OEE.Hours",
|
||||
"OEE.Orders": "OEE.Orders",
|
||||
"OEE.Sales": "OEE.Sales",
|
||||
"OTA Update Deployment": "OTA Update Deployment",
|
||||
"OTA command sent to %d devices successfully.": "OTA command sent to %d devices successfully.",
|
||||
"OTA firmware update and version control": "OTA firmware update and version control",
|
||||
"Off": "Off",
|
||||
"Offline": "Offline",
|
||||
"Offline + 1": "Offline + 1",
|
||||
@ -1195,6 +1223,7 @@
|
||||
"Online": "Online",
|
||||
"Online Duration": "Online Duration",
|
||||
"Online Machines": "Online Machines",
|
||||
"Online Only": "Online Only",
|
||||
"Online Status": "Online Status",
|
||||
"Only .xlsx, .xls, .csv files are supported (Max 5MB)": "Only .xlsx, .xls, .csv files are supported (Max 5MB)",
|
||||
"Only machines under the same company can be cloned for security.": "Only machines under the same company can be cloned for security.",
|
||||
@ -1210,6 +1239,7 @@
|
||||
"Optimized Performance": "Optimized Performance",
|
||||
"Optimized for display. Supported formats: JPG, PNG, WebP.": "Optimized for display. Supported formats: JPG, PNG, WebP.",
|
||||
"Optional": "Optional",
|
||||
"Optional Update": "Optional Update",
|
||||
"Optional notes...": "Optional notes...",
|
||||
"Optional remarks": "Optional remarks",
|
||||
"Optional remarks...": "Optional remarks...",
|
||||
@ -1334,7 +1364,9 @@
|
||||
"Please enter Webhook URL first.": "Please enter Webhook URL first.",
|
||||
"Please enter address first": "Please enter address first",
|
||||
"Please enter configuration name": "Please enter configuration name",
|
||||
"Please enter version name": "Please enter version name",
|
||||
"Please make sure to enable \"Background graphics\" in your browser print settings to print product images and styled components correctly.": "Please make sure to enable \"Background graphics\" in your browser print settings to print product images and styled components correctly.",
|
||||
"Please provide a download URL": "Please provide a download URL",
|
||||
"Please select a company": "Please select a company",
|
||||
"Please select a company.": "Please select a company.",
|
||||
"Please select a machine": "Please select a machine",
|
||||
@ -1344,6 +1376,7 @@
|
||||
"Please select a machine to view metrics": "Please select a machine to view metrics",
|
||||
"Please select a material": "Please select a material",
|
||||
"Please select a slot": "Please select a slot",
|
||||
"Please select an APK file to upload": "Please select an APK file to upload",
|
||||
"Please select warehouse and machine": "Please select warehouse and machine",
|
||||
"Please use our standard template to ensure data compatibility.": "Please use our standard template to ensure data compatibility.",
|
||||
"PlusPay": "PlusPay",
|
||||
@ -1401,6 +1434,7 @@
|
||||
"Profile updated successfully.": "Profile updated successfully.",
|
||||
"Promotions": "Promotions",
|
||||
"Protected": "Protected",
|
||||
"Provide a publicly accessible direct download link": "Provide a publicly accessible direct download link",
|
||||
"Publish": "Publish",
|
||||
"Publish Time": "Publish Time",
|
||||
"Purchase Audit": "Purchase Audit",
|
||||
@ -1454,6 +1488,8 @@
|
||||
"Refunded": "Refunded",
|
||||
"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?",
|
||||
"Register a new firmware version for OTA deployment": "Register a new firmware version for OTA deployment",
|
||||
"Release Notes": "Release Notes",
|
||||
"Remark": "Remark",
|
||||
"Remote Change": "Remote Change",
|
||||
"Remote Checkout": "Remote Checkout",
|
||||
@ -1540,6 +1576,7 @@
|
||||
"Save Material": "Save Material",
|
||||
"Save Permissions": "Save Permissions",
|
||||
"Save Settings": "Save Settings",
|
||||
"Save Version": "Save Version",
|
||||
"Save error:": "Save error:",
|
||||
"Saved.": "Saved.",
|
||||
"Saving...": "Saving...",
|
||||
@ -1579,6 +1616,7 @@
|
||||
"Search customers...": "Search customers...",
|
||||
"Search logs...": "Search logs...",
|
||||
"Search machine name or SN...": "Search machine name or SN...",
|
||||
"Search machine name, S/N, or location...": "Search machine name, S/N, or location...",
|
||||
"Search machines by name or serial...": "Search machines by name or serial...",
|
||||
"Search machines...": "Search machines...",
|
||||
"Search models...": "Search models...",
|
||||
@ -1624,6 +1662,7 @@
|
||||
"Select all slots": "Select all slots",
|
||||
"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 flavor...": "Select flavor...",
|
||||
"Select...": "Select...",
|
||||
"Selected": "Selected",
|
||||
"Selected Date": "Selected Date",
|
||||
@ -1803,6 +1842,7 @@
|
||||
"Target Machine": "Target Machine",
|
||||
"Target Position": "Target Position",
|
||||
"Target Warehouse": "Target Warehouse",
|
||||
"Target hardware flavor for this APK": "Target hardware flavor for this APK",
|
||||
"Tax ID": "Tax ID",
|
||||
"Tax ID (Optional)": "Tax ID (Optional)",
|
||||
"Tax System": "Tax System",
|
||||
@ -1935,6 +1975,7 @@
|
||||
"Update": "Update",
|
||||
"Update Authorization": "Update Authorization",
|
||||
"Update Customer": "Update Customer",
|
||||
"Update Mode": "Update Mode",
|
||||
"Update Pass Code": "Update Pass Code",
|
||||
"Update Password": "Update Password",
|
||||
"Update Product": "Update Product",
|
||||
@ -1945,9 +1986,11 @@
|
||||
"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 APK": "Upload New APK",
|
||||
"Upload New Images": "Upload New Images",
|
||||
"Upload Video": "Upload Video",
|
||||
"Upload failed, please try again": "Upload failed, please try again",
|
||||
"Upload file or provide URL": "Upload file or provide URL",
|
||||
"Uploading new images will replace all existing images.": "Uploading new images will replace all existing images.",
|
||||
"Uploading...": "Uploading...",
|
||||
"Usage Completed": "Usage Completed",
|
||||
@ -1981,6 +2024,12 @@
|
||||
"Venue Management": "Venue Management",
|
||||
"Verified": "Verified",
|
||||
"Verified Only": "Verified Only",
|
||||
"Version Code": "Version Code",
|
||||
"Version Code must be strictly greater than the previous release, otherwise the OTA silent installation on the device will fail with INSTALL_FAILED_ALREADY_EXISTS.": "Version Code must be strictly greater than the previous release, otherwise the OTA silent installation on the device will fail with INSTALL_FAILED_ALREADY_EXISTS.",
|
||||
"Version Info": "Version Info",
|
||||
"Version Information": "Version Information",
|
||||
"Version Name": "Version Name",
|
||||
"Version code must be a positive integer": "Version code must be a positive integer",
|
||||
"Video": "Video",
|
||||
"View Details": "View Details",
|
||||
"View Full History": "View Full History",
|
||||
@ -2148,6 +2197,7 @@
|
||||
"menu.app": "APP Maintenance",
|
||||
"menu.audit": "Audit Management",
|
||||
"menu.basic": "Basic Settings",
|
||||
"menu.basic.apk-versions": "menu.basic.apk-versions",
|
||||
"menu.basic.discord-notifications": "Discord Notifications",
|
||||
"menu.basic.machines": "Machine Settings",
|
||||
"menu.basic.payment-configs": "Customer Payment Config",
|
||||
|
||||
50
lang/ja.json
50
lang/ja.json
@ -13,7 +13,10 @@
|
||||
"API Token Copied": "APIトークンをコピーしました",
|
||||
"API Token has been regenerated due to serial number change.": "シリアル番号の変更により、APIトークンが再生成されました。",
|
||||
"API Token regenerated successfully.": "APIトークンの再生成が成功しました。",
|
||||
"APK Source": "APK Source",
|
||||
"APK Versions": "APKバージョン",
|
||||
"APK version deleted successfully.": "APK version deleted successfully.",
|
||||
"APK version uploaded successfully.": "APK version uploaded successfully.",
|
||||
"APP Features": "アプリ機能",
|
||||
"APP Management": "アプリ管理",
|
||||
"APP Version": "アプリバージョン",
|
||||
@ -124,6 +127,7 @@
|
||||
"Analysis Management": "分析管理",
|
||||
"Analysis Permissions": "分析権限",
|
||||
"Analyze Solely": "個別分析",
|
||||
"App Version": "App Version",
|
||||
"Apply changes to all identical products in this machine": "この機器内のすべての同一商品に変更を適用",
|
||||
"Apply to all identical products in this machine": "この機器内のすべての同一商品に適用",
|
||||
"Approved At": "承認日時",
|
||||
@ -145,6 +149,7 @@
|
||||
"Are you sure you want to confirm this transfer? This will deduct stock from source and add to target.": "この在庫移動を確認してもよろしいですか?元から引かれ、先に加算されます。",
|
||||
"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 pass code? It will no longer be usable for authentication.": "このパスコードを無効にしてもよろしいですか?認証に使用できなくなります。",
|
||||
"Are you sure you want to delete this APK version? This action will permanently remove the record and file.": "Are you sure you want to delete this APK version? This action will permanently remove the record and file.",
|
||||
"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 advertisement? This will also remove all assignments to machines.": "この広告を削除してもよろしいですか?機器への配信設定も削除されます。",
|
||||
@ -351,6 +356,7 @@
|
||||
"Contract Until (Optional)": "契約満了日 (任意)",
|
||||
"Contract information updated": "契約情報が更新されました",
|
||||
"Control": "監視操作",
|
||||
"Control deployment behavior": "Control deployment behavior",
|
||||
"Copy": "コピー",
|
||||
"Copy Code": "コードをコピー",
|
||||
"Copy Link": "リンクをコピー",
|
||||
@ -458,7 +464,10 @@
|
||||
"Delivery door open error": "搬出口開放エラー",
|
||||
"Delivery door opened": "搬出口開放",
|
||||
"Delta": "変動量",
|
||||
"Deploy Update": "Deploy Update",
|
||||
"Deploy version": "Deploy version",
|
||||
"Deposit Bonus": "チャージボーナス",
|
||||
"Describe the changes in this version...": "Describe the changes in this version...",
|
||||
"Describe the repair or maintenance status...": "修理やメンテナンスの状況を説明してください...",
|
||||
"Description / Name": "説明 / 名前",
|
||||
"Deselect All": "すべて解除",
|
||||
@ -471,6 +480,7 @@
|
||||
"Device Status Logs": "デバイスステータスログ",
|
||||
"Device connection drops or minor warnings.": "機台の接続切断または軽微な警告。",
|
||||
"Devices": "台のデバイス",
|
||||
"Devices Selected": "Devices Selected",
|
||||
"Disable": "無効",
|
||||
"Disable Advertisement Confirmation": "広告無効化の確認",
|
||||
"Disable Code": "パスコード無効化",
|
||||
@ -511,9 +521,12 @@
|
||||
"Door Opened": "扉が開きました",
|
||||
"Download Image": "画像をダウンロード",
|
||||
"Download Template": "テンプレートのダウンロード",
|
||||
"Download URL": "Download URL",
|
||||
"Draft": "下書き",
|
||||
"Drag & drop your APK here": "Drag & drop your APK here",
|
||||
"Duration": "時間",
|
||||
"Duration (Seconds)": "再生秒数",
|
||||
"During OTA deployment, the device will install directly in the background without user confirmation.": "OTAデプロイ時、デバイスはユーザーの確認なしでバックグラウンドで直接インストールされます。",
|
||||
"E-Ticket (EasyCard/iPass)": "電子チケット (EasyCard/iPass)",
|
||||
"E.SUN Bank Scan": "玉山銀行スキャン",
|
||||
"E.SUN Pay": "玉山 Pay",
|
||||
@ -626,6 +639,7 @@
|
||||
"Export Report": "レポートのエクスポート",
|
||||
"Export to CSV": "CSVエクスポート",
|
||||
"Export to Excel": "Excelエクスポート",
|
||||
"External URL": "External URL",
|
||||
"Failed": "失敗",
|
||||
"Failed to fetch machine data.": "機器データの取得に失敗しました。",
|
||||
"Failed to load permissions": "権限の読み込みに失敗しました",
|
||||
@ -641,6 +655,7 @@
|
||||
"Feature Settings": "機能設定",
|
||||
"Feature Toggles": "機能切り替え",
|
||||
"Field": "Field",
|
||||
"File Upload": "File Upload",
|
||||
"Fill Quantity": "補充数",
|
||||
"Fill Rate": "充填率",
|
||||
"Fill in the device repair or maintenance details": "デバイスの修理またはメンテナンスの詳細を入力",
|
||||
@ -649,6 +664,7 @@
|
||||
"Filter by Company": "Filter by Company",
|
||||
"Filter by Warehouse Presence": "倉庫の在庫状況で絞り込む",
|
||||
"Firmware Version": "ファームウェアバージョン",
|
||||
"Firmware identification details": "Firmware identification details",
|
||||
"Firmware updated to :version": "ファームウェア更新完了 : :version",
|
||||
"Fleet Avg OEE": "全機器平均 OEE",
|
||||
"Fleet Performance": "全機器パフォーマンス",
|
||||
@ -736,6 +752,8 @@
|
||||
"Flow ID / Time": "フローID / 時間",
|
||||
"Force End Session": "セッションを強制終了",
|
||||
"Force end current session": "現在のセッションを強制終了",
|
||||
"Forced Update": "強制アップデート",
|
||||
"Format: Major_Minor_Patch_R": "Format: Major_Minor_Patch_R",
|
||||
"From": "元",
|
||||
"From Machine": "元機器",
|
||||
"From Warehouse": "元倉庫",
|
||||
@ -793,6 +811,7 @@
|
||||
"Import Excel": "Excel インポート",
|
||||
"Import Staff Cards": "スタッフカードのインポート",
|
||||
"Import failed": "インポート失敗",
|
||||
"Important Notice": "Important Notice",
|
||||
"In Stock": "現在庫",
|
||||
"Inactive": "停止中",
|
||||
"Includes Credit Card/Mobile Pay": "クレジット/QR決済を含む",
|
||||
@ -908,10 +927,12 @@
|
||||
"Machine Connectivity Lost": "マシン接続切断",
|
||||
"Machine Connectivity Restored": "マシン接続復旧",
|
||||
"Machine Count": "機器数",
|
||||
"Machine Detail": "Machine Detail",
|
||||
"Machine Details": "機器詳細",
|
||||
"Machine Discord notification settings updated successfully.": "機器の Discord 通知設定が正常に更新されました。",
|
||||
"Machine Distribution": "機器分布",
|
||||
"Machine Distribution Map": "機器分布マップ",
|
||||
"Machine Flavor": "Machine Flavor",
|
||||
"Machine Flow ID": "機器フローID",
|
||||
"Machine Flow ID / Time": "機器フローID / 時間",
|
||||
"Machine Images": "機器写真",
|
||||
@ -1015,6 +1036,7 @@
|
||||
"Max Capacity": "最大容量",
|
||||
"Max Capacity:": "最大容量:",
|
||||
"Max Stock": "在庫上限",
|
||||
"Maximum file size: 100MB": "Maximum file size: 100MB",
|
||||
"Member": "会員価格",
|
||||
"Member & External": "会員および外部システム",
|
||||
"Member + 1": "会員 + 1",
|
||||
@ -1065,6 +1087,7 @@
|
||||
"Movement History": "変動履歴",
|
||||
"Movement Logs": "変動ログ",
|
||||
"Multilingual Names": "多言語名",
|
||||
"Must be strictly greater than previous version": "Must be strictly greater than previous version",
|
||||
"N/A": "なし",
|
||||
"Name": "名前",
|
||||
"Name / Machine": "名前 / 機器",
|
||||
@ -1120,6 +1143,7 @@
|
||||
"No machines available": "利用可能な機器がありません",
|
||||
"No machines available in this company.": "この会社で利用可能な機器がありません。",
|
||||
"No machines found": "機器が見つかりません",
|
||||
"No machines match your criteria": "No machines match your criteria",
|
||||
"No maintenance records found": "メンテナンス記録が見つかりません",
|
||||
"No matching logs found": "一致するログが見つかりません",
|
||||
"No matching machines": "一致する機器がありません",
|
||||
@ -1153,6 +1177,7 @@
|
||||
"No usage logs found": "使用履歴が見つかりません",
|
||||
"No usage logs found.": "使用履歴が見つかりません。",
|
||||
"No users found": "ユーザーが見つかりません",
|
||||
"No versions found": "No versions found",
|
||||
"No warehouses found": "倉庫が見つかりません",
|
||||
"No welcome gifts found": "ウェルカムギフトが見つかりません",
|
||||
"None": "なし",
|
||||
@ -1172,6 +1197,9 @@
|
||||
"OEE.Hours": "時間",
|
||||
"OEE.Orders": "注文",
|
||||
"OEE.Sales": "販売",
|
||||
"OTA Update Deployment": "OTA Update Deployment",
|
||||
"OTA command sent to %d devices successfully.": "OTA command sent to %d devices successfully.",
|
||||
"OTA firmware update and version control": "OTA firmware update and version control",
|
||||
"Off": "オフ",
|
||||
"Offline": "オフライン",
|
||||
"Offline + 1": "オフライン + 1",
|
||||
@ -1195,6 +1223,7 @@
|
||||
"Online": "オンライン",
|
||||
"Online Duration": "累積オンライン時間",
|
||||
"Online Machines": "オンライン機器",
|
||||
"Online Only": "Online Only",
|
||||
"Online Status": "オンラインステータス",
|
||||
"Only .xlsx, .xls, .csv files are supported (Max 5MB)": ".xlsx, .xls, .csv ファイルのみサポートされています (最大 5MB)",
|
||||
"Only machines under the same company can be cloned for security.": "セキュリティのため、同じ会社の機器設定のみコピーできます。",
|
||||
@ -1210,6 +1239,7 @@
|
||||
"Optimized Performance": "最適化されたパフォーマンス",
|
||||
"Optimized for display. Supported formats: JPG, PNG, WebP.": "表示用に最適化。対応フォーマット: JPG, PNG, WebP。",
|
||||
"Optional": "任意",
|
||||
"Optional Update": "一般アップデート",
|
||||
"Optional notes...": "任意のメモ...",
|
||||
"Optional remarks": "任意の備考",
|
||||
"Optional remarks...": "任意の備考...",
|
||||
@ -1334,7 +1364,9 @@
|
||||
"Please enter Webhook URL first.": "最初にWebhook URLを入力してください。",
|
||||
"Please enter address first": "先に住所を入力してください",
|
||||
"Please enter configuration name": "設定名を入力してください",
|
||||
"Please enter version name": "Please enter version name",
|
||||
"Please make sure to enable \"Background graphics\" in your browser print settings to print product images and styled components correctly.": "商品の画像やスタイル付きコンポーネントを正しく印刷するために、ブラウザの印刷設定で『背景のグラフィック』を有効にしてください。",
|
||||
"Please provide a download URL": "Please provide a download URL",
|
||||
"Please select a company": "会社を選択してください",
|
||||
"Please select a company.": "会社を選択してください。",
|
||||
"Please select a machine": "機器を選択してください",
|
||||
@ -1344,6 +1376,7 @@
|
||||
"Please select a machine to view metrics": "指標を表示する機器を選択してください",
|
||||
"Please select a material": "素材を選択してください",
|
||||
"Please select a slot": "スロットを選択してください",
|
||||
"Please select an APK file to upload": "Please select an APK file to upload",
|
||||
"Please select warehouse and machine": "倉庫と機器を選択してください",
|
||||
"Please use our standard template to ensure data compatibility.": "データの互換性を確保するために、標準テンプレートを使用してください。",
|
||||
"PlusPay": "全盈+PAY (PlusPay)",
|
||||
@ -1401,6 +1434,7 @@
|
||||
"Profile updated successfully.": "プロフィールが正常に更新されました。",
|
||||
"Promotions": "プロモーション期間",
|
||||
"Protected": "保護されています",
|
||||
"Provide a publicly accessible direct download link": "Provide a publicly accessible direct download link",
|
||||
"Publish": "公開",
|
||||
"Publish Time": "公開時間",
|
||||
"Purchase Audit": "購入監査",
|
||||
@ -1454,6 +1488,8 @@
|
||||
"Refunded": "返金済み",
|
||||
"Regenerate": "再生成",
|
||||
"Regenerating the token will disconnect the physical machine until it is updated. Continue?": "トークンを再生成すると、更新されるまで物理機器の接続が切断されます。続行しますか?",
|
||||
"Register a new firmware version for OTA deployment": "Register a new firmware version for OTA deployment",
|
||||
"Release Notes": "Release Notes",
|
||||
"Remark": "備考",
|
||||
"Remote Change": "遠隔お釣り",
|
||||
"Remote Checkout": "遠隔決済",
|
||||
@ -1540,6 +1576,7 @@
|
||||
"Save Material": "素材を保存",
|
||||
"Save Permissions": "権限を保存",
|
||||
"Save Settings": "設定を保存",
|
||||
"Save Version": "Save Version",
|
||||
"Save error:": "保存エラー:",
|
||||
"Saved.": "保存しました。",
|
||||
"Saving...": "保存中...",
|
||||
@ -1579,6 +1616,7 @@
|
||||
"Search customers...": "顧客を検索...",
|
||||
"Search logs...": "ログを検索...",
|
||||
"Search machine name or SN...": "機器名またはシリアル番号で検索...",
|
||||
"Search machine name, S/N, or location...": "Search machine name, S/N, or location...",
|
||||
"Search machines by name or serial...": "機器名またはシリアルで検索...",
|
||||
"Search machines...": "機器を検索...",
|
||||
"Search models...": "モデルを検索...",
|
||||
@ -1624,6 +1662,7 @@
|
||||
"Select all slots": "すべてのスロットを選択",
|
||||
"Select an asset from the left to start analysis": "左側から機器を選択して分析を開始",
|
||||
"Select date to sync data": "データを同期する日付を選択",
|
||||
"Select flavor...": "Select flavor...",
|
||||
"Select...": "選択してください...",
|
||||
"Selected": "選択中",
|
||||
"Selected Date": "選択日",
|
||||
@ -1803,6 +1842,7 @@
|
||||
"Target Machine": "対象機器",
|
||||
"Target Position": "ターゲット位置",
|
||||
"Target Warehouse": "対象倉庫",
|
||||
"Target hardware flavor for this APK": "Target hardware flavor for this APK",
|
||||
"Tax ID": "統一企業番号",
|
||||
"Tax ID (Optional)": "統一企業番号 (任意)",
|
||||
"Tax System": "税務システム",
|
||||
@ -1935,6 +1975,7 @@
|
||||
"Update": "更新",
|
||||
"Update Authorization": "権限更新",
|
||||
"Update Customer": "顧客更新",
|
||||
"Update Mode": "Update Mode",
|
||||
"Update Pass Code": "パスコード更新",
|
||||
"Update Password": "パスワード更新",
|
||||
"Update Product": "商品更新",
|
||||
@ -1945,9 +1986,11 @@
|
||||
"Update identification for your asset": "資産の識別情報を更新",
|
||||
"Update your account's profile information and email address.": "アカウントのプロフィール情報とメールアドレスを更新します。",
|
||||
"Upload Image": "画像をアップロード",
|
||||
"Upload New APK": "Upload New APK",
|
||||
"Upload New Images": "新しい写真をアップロード",
|
||||
"Upload Video": "動画をアップロード",
|
||||
"Upload failed, please try again": "アップロードに失敗しました、再試行してください",
|
||||
"Upload file or provide URL": "Upload file or provide URL",
|
||||
"Uploading new images will replace all existing images.": "新しい写真をアップロードすると、既存のすべての写真が置き換えられます。",
|
||||
"Uploading...": "アップロード中...",
|
||||
"Usage Completed": "使用完了",
|
||||
@ -1981,6 +2024,12 @@
|
||||
"Venue Management": "施設管理",
|
||||
"Verified": "検証済み",
|
||||
"Verified Only": "検証済みのみ",
|
||||
"Version Code": "Version Code",
|
||||
"Version Code must be strictly greater than the previous release, otherwise the OTA silent installation on the device will fail with INSTALL_FAILED_ALREADY_EXISTS.": "Version Code must be strictly greater than the previous release, otherwise the OTA silent installation on the device will fail with INSTALL_FAILED_ALREADY_EXISTS.",
|
||||
"Version Info": "バージョン情報",
|
||||
"Version Information": "Version Information",
|
||||
"Version Name": "Version Name",
|
||||
"Version code must be a positive integer": "Version code must be a positive integer",
|
||||
"Video": "動画",
|
||||
"View Details": "詳細を見る",
|
||||
"View Full History": "完全な履歴を見る",
|
||||
@ -2148,6 +2197,7 @@
|
||||
"menu.app": "APP 運用保守",
|
||||
"menu.audit": "監査管理",
|
||||
"menu.basic": "基本設定",
|
||||
"menu.basic.apk-versions": "menu.basic.apk-versions",
|
||||
"menu.basic.discord-notifications": "Discord通知設定",
|
||||
"menu.basic.machines": "機器設定",
|
||||
"menu.basic.payment-configs": "顧客決済設定",
|
||||
|
||||
@ -13,7 +13,10 @@
|
||||
"API Token Copied": "API 金鑰已複製",
|
||||
"API Token has been regenerated due to serial number change.": "由於序號變更,API 金鑰已重新產生。",
|
||||
"API Token regenerated successfully.": "API 金鑰重新產生成功。",
|
||||
"APK Source": "APK 來源",
|
||||
"APK Versions": "APK版本",
|
||||
"APK version deleted successfully.": "APK 版本刪除成功。",
|
||||
"APK version uploaded successfully.": "APK 版本上傳成功。",
|
||||
"APP Features": "APP功能",
|
||||
"APP Management": "APP管理",
|
||||
"APP Version": "APP版本號",
|
||||
@ -124,6 +127,7 @@
|
||||
"Analysis Management": "分析管理",
|
||||
"Analysis Permissions": "分析管理權限",
|
||||
"Analyze Solely": "單獨分析",
|
||||
"App Version": "App 版本",
|
||||
"Apply changes to all identical products in this machine": "同步套用至此機台內的所有相同商品",
|
||||
"Apply to all identical products in this machine": "同步套用至此機台內的所有相同商品",
|
||||
"Approved At": "審核時間",
|
||||
@ -145,6 +149,7 @@
|
||||
"Are you sure you want to confirm this transfer? This will deduct stock from source and add to target.": "您確定要確認此調撥單嗎?此操作將會扣除來源庫存並增加目標庫存。",
|
||||
"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 pass code? It will no longer be usable for authentication.": "您確定要停用此通行碼嗎?停用後將無法再用於驗證。",
|
||||
"Are you sure you want to delete this APK version? This action will permanently remove the record and file.": "您確定要刪除此 APK 版本嗎?此操作將永久移除該紀錄與檔案。",
|
||||
"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 advertisement? This will also remove all assignments to machines.": "您確定要刪除此廣告嗎?這也將移除所有對機台的投放。",
|
||||
@ -351,6 +356,7 @@
|
||||
"Contract Until (Optional)": "合約到期日 (選填)",
|
||||
"Contract information updated": "合約資訊已更新",
|
||||
"Control": "監控操作",
|
||||
"Control deployment behavior": "控制部署行為",
|
||||
"Copy": "複製",
|
||||
"Copy Code": "複製代碼",
|
||||
"Copy Link": "複製連結",
|
||||
@ -458,7 +464,10 @@
|
||||
"Delivery door open error": "送貨門開啟異常",
|
||||
"Delivery door opened": "送貨門開啟",
|
||||
"Delta": "變化量",
|
||||
"Deploy Update": "部署更新",
|
||||
"Deploy version": "部署版本",
|
||||
"Deposit Bonus": "儲值回饋",
|
||||
"Describe the changes in this version...": "描述此版本的變更...",
|
||||
"Describe the repair or maintenance status...": "請描述維修或保養狀況...",
|
||||
"Description / Name": "描述 / 名稱",
|
||||
"Deselect All": "取消全選",
|
||||
@ -471,6 +480,7 @@
|
||||
"Device Status Logs": "設備狀態紀錄",
|
||||
"Device connection drops or minor warnings.": "機台連線中斷或輕微警報。",
|
||||
"Devices": "台設備",
|
||||
"Devices Selected": "個設備已選擇",
|
||||
"Disable": "停用",
|
||||
"Disable Advertisement Confirmation": "停用廣告確認",
|
||||
"Disable Code": "停用通行碼",
|
||||
@ -511,9 +521,12 @@
|
||||
"Door Opened": "機門已開啟",
|
||||
"Download Image": "下載圖片",
|
||||
"Download Template": "下載範例檔",
|
||||
"Download URL": "下載連結",
|
||||
"Draft": "草稿",
|
||||
"Drag & drop your APK here": "拖曳 APK 檔案至此",
|
||||
"Duration": "時長",
|
||||
"Duration (Seconds)": "播放秒數",
|
||||
"During OTA deployment, the device will install directly in the background without user confirmation.": "未來執行 OTA 部署時,機台將跳過詢問並直接自動安裝(靜默安裝)。",
|
||||
"E-Ticket (EasyCard/iPass)": "電子票證 (悠遊卡/一卡通)",
|
||||
"E.SUN Bank Scan": "玉山銀行掃碼",
|
||||
"E.SUN Pay": "玉山 Pay",
|
||||
@ -626,6 +639,7 @@
|
||||
"Export Report": "匯出報表",
|
||||
"Export to CSV": "匯出成 CSV",
|
||||
"Export to Excel": "匯出成 Excel",
|
||||
"External URL": "外連 URL",
|
||||
"Failed": "失敗",
|
||||
"Failed to fetch machine data.": "無法取得機台資料。",
|
||||
"Failed to load permissions": "載入權限失敗",
|
||||
@ -641,6 +655,7 @@
|
||||
"Feature Settings": "功能設定",
|
||||
"Feature Toggles": "功能開關",
|
||||
"Field": "欄位",
|
||||
"File Upload": "檔案上傳",
|
||||
"Fill Quantity": "補貨數量",
|
||||
"Fill Rate": "滿載率",
|
||||
"Fill in the device repair or maintenance details": "填寫設備維修或保養詳情",
|
||||
@ -649,6 +664,7 @@
|
||||
"Filter by Company": "依公司篩選",
|
||||
"Filter by Warehouse Presence": "依據倉庫存貨篩選",
|
||||
"Firmware Version": "韌體版本",
|
||||
"Firmware identification details": "韌體識別詳情",
|
||||
"Firmware updated to :version": "韌體版本更新 : :version",
|
||||
"Fleet Avg OEE": "全機台平均 OEE",
|
||||
"Fleet Performance": "全機台效能",
|
||||
@ -736,6 +752,8 @@
|
||||
"Flow ID / Time": "流水號 / 時間",
|
||||
"Force End Session": "強制結束當前會話",
|
||||
"Force end current session": "強制結束目前的連線",
|
||||
"Forced Update": "強制更新",
|
||||
"Format: Major_Minor_Patch_R": "格式:Major_Minor_Patch_R",
|
||||
"From": "來源",
|
||||
"From Machine": "來源機台",
|
||||
"From Warehouse": "來源倉庫",
|
||||
@ -793,6 +811,7 @@
|
||||
"Import Excel": "Excel 匯入",
|
||||
"Import Staff Cards": "匯入員工識別卡",
|
||||
"Import failed": "匯入失敗",
|
||||
"Important Notice": "重要通知",
|
||||
"In Stock": "當前庫存",
|
||||
"Inactive": "已停用",
|
||||
"Includes Credit Card/Mobile Pay": "含信用卡/行動支付",
|
||||
@ -908,10 +927,12 @@
|
||||
"Machine Connectivity Lost": "機台連線中斷",
|
||||
"Machine Connectivity Restored": "機台連線恢復",
|
||||
"Machine Count": "機台數量",
|
||||
"Machine Detail": "機台詳情",
|
||||
"Machine Details": "機台詳情",
|
||||
"Machine Discord notification settings updated successfully.": "機台 Discord 通知設定已成功更新。",
|
||||
"Machine Distribution": "機台分布",
|
||||
"Machine Distribution Map": "機台分布地圖",
|
||||
"Machine Flavor": "機台風味",
|
||||
"Machine Flow ID": "機台流水號",
|
||||
"Machine Flow ID / Time": "機台流水號 / 時間",
|
||||
"Machine Images": "機台照片",
|
||||
@ -1015,6 +1036,7 @@
|
||||
"Max Capacity": "最大容量",
|
||||
"Max Capacity:": "最大容量:",
|
||||
"Max Stock": "庫存上限",
|
||||
"Maximum file size: 100MB": "檔案大小上限:100MB",
|
||||
"Member": "會員價",
|
||||
"Member & External": "會員與外部系統",
|
||||
"Member + 1": "會員 + 1",
|
||||
@ -1065,6 +1087,7 @@
|
||||
"Movement History": "異動紀錄",
|
||||
"Movement Logs": "異動紀錄",
|
||||
"Multilingual Names": "多語系名稱",
|
||||
"Must be strictly greater than previous version": "必須嚴格大於上一個版本代碼",
|
||||
"N/A": "不適用",
|
||||
"Name": "名稱",
|
||||
"Name / Machine": "名稱 / 機台",
|
||||
@ -1120,6 +1143,7 @@
|
||||
"No machines available": "目前沒有可供分配的機台",
|
||||
"No machines available in this company.": "此客戶目前沒有可供分配的機台。",
|
||||
"No machines found": "未找到機台",
|
||||
"No machines match your criteria": "沒有符合條件的機台",
|
||||
"No maintenance records found": "找不到維修紀錄",
|
||||
"No matching logs found": "找不到符合條件的日誌",
|
||||
"No matching machines": "查無匹配機台",
|
||||
@ -1153,6 +1177,7 @@
|
||||
"No usage logs found": "找不到使用日誌",
|
||||
"No usage logs found.": "找不到使用日誌。",
|
||||
"No users found": "找不到用戶資料",
|
||||
"No versions found": "未找到任何版本",
|
||||
"No warehouses found": "未找到倉庫",
|
||||
"No welcome gifts found": "找不到來店禮資料",
|
||||
"None": "無",
|
||||
@ -1172,6 +1197,9 @@
|
||||
"OEE.Hours": "小時",
|
||||
"OEE.Orders": "訂單",
|
||||
"OEE.Sales": "銷售",
|
||||
"OTA Update Deployment": "OTA 更新部署",
|
||||
"OTA command sent to %d devices successfully.": "OTA 指令已成功發送至 %d 台設備。",
|
||||
"OTA firmware update and version control": "OTA 韌體更新與版本控制",
|
||||
"Off": "關閉",
|
||||
"Offline": "離線",
|
||||
"Offline + 1": "離線 + 1",
|
||||
@ -1195,6 +1223,7 @@
|
||||
"Online": "線上",
|
||||
"Online Duration": "累積連線時數",
|
||||
"Online Machines": "在線機台",
|
||||
"Online Only": "僅限線上機台",
|
||||
"Online Status": "在線狀態",
|
||||
"Only .xlsx, .xls, .csv files are supported (Max 5MB)": "僅支援 .xlsx, .xls, .csv 檔案 (最大 5MB)",
|
||||
"Only machines under the same company can be cloned for security.": "基於安全性,僅限複製同公司旗下的機台設定。",
|
||||
@ -1210,6 +1239,7 @@
|
||||
"Optimized Performance": "效能最佳化",
|
||||
"Optimized for display. Supported formats: JPG, PNG, WebP.": "已針對顯示進行優化。支援格式:JPG, PNG, WebP。",
|
||||
"Optional": "選填",
|
||||
"Optional Update": "一般更新",
|
||||
"Optional notes...": "備註內容(選填)...",
|
||||
"Optional remarks": "選填備註",
|
||||
"Optional remarks...": "選填備註...",
|
||||
@ -1334,7 +1364,9 @@
|
||||
"Please enter Webhook URL first.": "請先輸入 Webhook 網址。",
|
||||
"Please enter address first": "請先輸入地址",
|
||||
"Please enter configuration name": "請輸入設定名稱",
|
||||
"Please enter version name": "請輸入版本名稱",
|
||||
"Please make sure to enable \"Background graphics\" in your browser print settings to print product images and styled components correctly.": "請確保在瀏覽器列印設定中啟用「背景圖形」,以便正確列印商品圖片和樣式元件。",
|
||||
"Please provide a download URL": "請提供下載連結",
|
||||
"Please select a company": "請選擇公司",
|
||||
"Please select a company.": "請選擇公司",
|
||||
"Please select a machine": "請選擇機台",
|
||||
@ -1344,6 +1376,7 @@
|
||||
"Please select a machine to view metrics": "請選擇機台以查看數據",
|
||||
"Please select a material": "請選擇素材",
|
||||
"Please select a slot": "請選擇貨道",
|
||||
"Please select an APK file to upload": "請選擇要上傳的 APK 檔案",
|
||||
"Please select warehouse and machine": "請選擇倉庫和機台",
|
||||
"Please use our standard template to ensure data compatibility.": "請使用標準範例檔以確保資料相容性。",
|
||||
"PlusPay": "全盈+PAY",
|
||||
@ -1401,6 +1434,7 @@
|
||||
"Profile updated successfully.": "個人資料已成功更新。",
|
||||
"Promotions": "促銷時段",
|
||||
"Protected": "受保護",
|
||||
"Provide a publicly accessible direct download link": "提供公開且可直接下載的連結",
|
||||
"Publish": "發布",
|
||||
"Publish Time": "發布時間",
|
||||
"Purchase Audit": "採購單",
|
||||
@ -1454,6 +1488,8 @@
|
||||
"Refunded": "已退款",
|
||||
"Regenerate": "重新產生",
|
||||
"Regenerating the token will disconnect the physical machine until it is updated. Continue?": "重新產生金鑰將導致實體機台暫時失去連線,必須於機台端更新此新金鑰才能恢復。確定繼續嗎?",
|
||||
"Register a new firmware version for OTA deployment": "註冊新韌體版本以進行 OTA 部署",
|
||||
"Release Notes": "更新說明",
|
||||
"Remark": "備註",
|
||||
"Remote Change": "遠端找零",
|
||||
"Remote Checkout": "遠端結帳",
|
||||
@ -1540,6 +1576,7 @@
|
||||
"Save Material": "儲存素材",
|
||||
"Save Permissions": "儲存權限",
|
||||
"Save Settings": "儲存設定",
|
||||
"Save Version": "儲存版本",
|
||||
"Save error:": "儲存錯誤:",
|
||||
"Saved.": "已儲存",
|
||||
"Saving...": "儲存中...",
|
||||
@ -1579,6 +1616,7 @@
|
||||
"Search customers...": "搜尋客戶...",
|
||||
"Search logs...": "搜尋紀錄...",
|
||||
"Search machine name or SN...": "搜尋機台名稱或序號...",
|
||||
"Search machine name, S/N, or location...": "搜尋機台名稱、序號 (S/N) 或位置...",
|
||||
"Search machines by name or serial...": "搜尋機台名稱或序號...",
|
||||
"Search machines...": "搜尋機台...",
|
||||
"Search models...": "搜尋型號...",
|
||||
@ -1624,6 +1662,7 @@
|
||||
"Select all slots": "選擇所有貨道",
|
||||
"Select an asset from the left to start analysis": "選擇左側機台以開始分析數據",
|
||||
"Select date to sync data": "選擇日期以同步數據",
|
||||
"Select flavor...": "選擇風味...",
|
||||
"Select...": "請選擇...",
|
||||
"Selected": "已選擇",
|
||||
"Selected Date": "查詢日期",
|
||||
@ -1803,6 +1842,7 @@
|
||||
"Target Machine": "目標機台",
|
||||
"Target Position": "投放位置",
|
||||
"Target Warehouse": "目標倉庫",
|
||||
"Target hardware flavor for this APK": "此 APK 的目標硬體風味",
|
||||
"Tax ID": "統一編號",
|
||||
"Tax ID (Optional)": "統一編號 (選填)",
|
||||
"Tax System": "稅務系統",
|
||||
@ -1935,6 +1975,7 @@
|
||||
"Update": "編輯",
|
||||
"Update Authorization": "更新授權",
|
||||
"Update Customer": "更新客戶",
|
||||
"Update Mode": "更新模式",
|
||||
"Update Pass Code": "更新通行碼",
|
||||
"Update Password": "更改密碼",
|
||||
"Update Product": "更新商品",
|
||||
@ -1945,9 +1986,11 @@
|
||||
"Update identification for your asset": "更新您的資產識別名稱",
|
||||
"Update your account's profile information and email address.": "更新您的帳號名稱、手機號碼與電子郵件地址。",
|
||||
"Upload Image": "上傳圖片",
|
||||
"Upload New APK": "上傳新 APK",
|
||||
"Upload New Images": "上傳新照片",
|
||||
"Upload Video": "上傳影片",
|
||||
"Upload failed, please try again": "上傳失敗,請重試",
|
||||
"Upload file or provide URL": "上傳檔案或提供連結",
|
||||
"Uploading new images will replace all existing images.": "上傳新照片將會取代所有現有照片。",
|
||||
"Uploading...": "上傳中...",
|
||||
"Usage Completed": "使用完成",
|
||||
@ -1981,6 +2024,12 @@
|
||||
"Venue Management": "場地管理",
|
||||
"Verified": "驗證成功",
|
||||
"Verified Only": "僅限驗證",
|
||||
"Version Code": "版本代碼",
|
||||
"Version Code must be strictly greater than the previous release, otherwise the OTA silent installation on the device will fail with INSTALL_FAILED_ALREADY_EXISTS.": "版本代碼必須嚴格大於先前的版本,否則機台端的 OTA 靜默安裝將會失敗並出現 INSTALL_FAILED_ALREADY_EXISTS 錯誤。",
|
||||
"Version Info": "版本資訊",
|
||||
"Version Information": "版本資訊",
|
||||
"Version Name": "版本名稱",
|
||||
"Version code must be a positive integer": "版本代碼必須是正整數",
|
||||
"Video": "影片",
|
||||
"View Details": "查看詳情",
|
||||
"View Full History": "查看完整歷程",
|
||||
@ -2148,10 +2197,10 @@
|
||||
"menu.app": "APP 運維",
|
||||
"menu.audit": "審核管理",
|
||||
"menu.basic": "基本設定",
|
||||
"menu.basic.apk-versions": "APK版本",
|
||||
"menu.basic.discord-notifications": "Discord通知設定",
|
||||
"menu.basic.machines": "機台設定",
|
||||
"menu.basic.payment-configs": "客戶金流設定",
|
||||
"menu.basic.apk-versions": "APK版本",
|
||||
"menu.data-config": "資料設定",
|
||||
"menu.data-config.admin-products": "商品狀態",
|
||||
"menu.data-config.advertisements": "廣告管理",
|
||||
@ -2253,51 +2302,5 @@
|
||||
"visit_gift": "來店禮",
|
||||
"vs Yesterday": "較昨日",
|
||||
"warehouses": "倉庫管理",
|
||||
"warning": "警告",
|
||||
"OTA firmware update and version control": "OTA 韌體更新與版本控制",
|
||||
"Upload New APK": "上傳新 APK",
|
||||
"No versions found": "未找到任何版本",
|
||||
"Are you sure you want to delete this APK version? This action will permanently remove the record and file.": "您確定要刪除此 APK 版本嗎?此操作將永久移除該紀錄與檔案。",
|
||||
"OTA Update Deployment": "OTA 更新部署",
|
||||
"Deploy version": "部署版本",
|
||||
"Search machine name, S/N, or location...": "搜尋機台名稱、序號 (S/N) 或位置...",
|
||||
"Online Only": "僅限線上機台",
|
||||
"Machine Detail": "機台詳情",
|
||||
"App Version": "App 版本",
|
||||
"No machines match your criteria": "沒有符合條件的機台",
|
||||
"Devices Selected": "個設備已選擇",
|
||||
"Deploy Update": "部署更新",
|
||||
"Register a new firmware version for OTA deployment": "註冊新韌體版本以進行 OTA 部署",
|
||||
"Save Version": "儲存版本",
|
||||
"Please enter version name": "請輸入版本名稱",
|
||||
"Version code must be a positive integer": "版本代碼必須是正整數",
|
||||
"Please select an APK file to upload": "請選擇要上傳的 APK 檔案",
|
||||
"Please provide a download URL": "請提供下載連結",
|
||||
"Version Information": "版本資訊",
|
||||
"Firmware identification details": "韌體識別詳情",
|
||||
"Version Name": "版本名稱",
|
||||
"Format: Major_Minor_Patch_R": "格式:Major_Minor_Patch_R",
|
||||
"Version Code": "版本代碼",
|
||||
"Must be strictly greater than previous version": "必須嚴格大於上一個版本代碼",
|
||||
"Machine Flavor": "機台風味",
|
||||
"Select flavor...": "選擇風味...",
|
||||
"Target hardware flavor for this APK": "此 APK 的目標硬體風味",
|
||||
"Release Notes": "更新說明",
|
||||
"Describe the changes in this version...": "描述此版本的變更...",
|
||||
"APK Source": "APK 來源",
|
||||
"Upload file or provide URL": "上傳檔案或提供連結",
|
||||
"File Upload": "檔案上傳",
|
||||
"External URL": "外連 URL",
|
||||
"Drag & drop your APK here": "拖曳 APK 檔案至此",
|
||||
"Maximum file size: 100MB": "檔案大小上限:100MB",
|
||||
"Download URL": "下載連結",
|
||||
"Provide a publicly accessible direct download link": "提供公開且可直接下載的連結",
|
||||
"Update Mode": "更新模式",
|
||||
"Control deployment behavior": "控制部署行為",
|
||||
"Device will install immediately without user confirmation": "設備將立即安裝,無需使用者確認",
|
||||
"Important Notice": "重要通知",
|
||||
"Version Code must be strictly greater than the previous release, otherwise the OTA silent installation on the device will fail with INSTALL_FAILED_ALREADY_EXISTS.": "版本代碼必須嚴格大於先前的版本,否則機台端的 OTA 靜默安裝將會失敗並出現 INSTALL_FAILED_ALREADY_EXISTS 錯誤。",
|
||||
"APK version uploaded successfully.": "APK 版本上傳成功。",
|
||||
"APK version deleted successfully.": "APK 版本刪除成功。",
|
||||
"OTA command sent to %d devices successfully.": "OTA 指令已成功發送至 %d 台設備。"
|
||||
"warning": "警告"
|
||||
}
|
||||
|
||||
@ -1,25 +1,22 @@
|
||||
@extends('layouts.admin')
|
||||
|
||||
@section('content')
|
||||
<div class="space-y-6 pb-20">
|
||||
{{-- Header --}}
|
||||
<div class="flex flex-col md:flex-row md:items-center md:justify-between gap-6">
|
||||
<div class="flex items-center gap-4">
|
||||
<a href="{{ route('admin.basic-settings.apk-versions.index') }}" class="p-2.5 rounded-xl bg-white dark:bg-slate-900 border border-slate-100 dark:border-slate-800 text-slate-500 hover:text-cyan-500 transition-all shadow-sm">
|
||||
<div class="space-y-4 pb-20">
|
||||
<!-- Header -->
|
||||
<x-page-header
|
||||
:title="__('Upload New APK')"
|
||||
:subtitle="__('Register a new firmware version for OTA deployment')"
|
||||
>
|
||||
<x-slot name="back">
|
||||
<a href="{{ route('admin.basic-settings.apk-versions.index') }}" class="p-2.5 rounded-xl bg-white dark:bg-slate-900 border border-slate-100 dark:border-slate-800 text-slate-500 hover:text-cyan-500 transition-all shadow-sm flex items-center justify-center">
|
||||
<svg class="w-5 h-5 stroke-[2.5]" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="M10.5 19.5 3 12m0 0 7.5-7.5M3 12h18"/></svg>
|
||||
</a>
|
||||
<div>
|
||||
<h1 class="text-2xl font-black text-slate-800 dark:text-white tracking-tight font-display">{{ __('Upload New APK') }}</h1>
|
||||
<p class="text-xs font-bold text-slate-500 dark:text-slate-400 mt-1 uppercase tracking-widest">{{ __('Register a new firmware version for OTA deployment') }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex items-center gap-3">
|
||||
<button type="submit" form="create-apk-form" class="btn-luxury-primary px-8 flex items-center gap-2">
|
||||
<svg class="w-4 h-4 stroke-[2.5]" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="m4.5 12.75 6 6 9-13.5"/></svg>
|
||||
<span>{{ __('Save Version') }}</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</x-slot>
|
||||
<button type="submit" form="create-apk-form" class="btn-luxury-primary px-8 flex items-center gap-2">
|
||||
<svg class="w-4 h-4 stroke-[2.5]" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="m4.5 12.75 6 6 9-13.5"/></svg>
|
||||
<span>{{ __('Save Version') }}</span>
|
||||
</button>
|
||||
</x-page-header>
|
||||
|
||||
<form id="create-apk-form"
|
||||
x-data="{
|
||||
@ -248,8 +245,10 @@
|
||||
</div>
|
||||
|
||||
{{-- 強制更新開關 --}}
|
||||
<div class="flex items-center justify-between p-5 rounded-2xl bg-slate-50/80 dark:bg-slate-800/40 border border-slate-100 dark:border-slate-800/80 transition-all duration-300"
|
||||
:class="isForced ? 'border-rose-200 dark:border-rose-900/30 bg-rose-50/50 dark:bg-rose-900/10' : ''">
|
||||
<div class="flex items-center justify-between p-5 rounded-2xl border transition-all duration-300"
|
||||
:class="isForced
|
||||
? 'bg-rose-500/10 dark:bg-rose-500/10 border-rose-500/20 dark:border-rose-500/30 text-rose-600 dark:text-rose-400 shadow-sm shadow-rose-500/5'
|
||||
: 'bg-slate-50/80 dark:bg-slate-800/40 border-slate-100 dark:border-slate-800/80 text-slate-700 dark:text-slate-200'">
|
||||
<div class="flex items-center gap-4">
|
||||
<div class="w-10 h-10 rounded-xl flex items-center justify-center transition-all duration-300"
|
||||
:class="isForced ? 'bg-rose-500/10 text-rose-500' : 'bg-slate-100 dark:bg-slate-800 text-slate-400'">
|
||||
@ -258,7 +257,7 @@
|
||||
<div>
|
||||
<p class="text-sm font-extrabold transition-colors"
|
||||
:class="isForced ? 'text-rose-600 dark:text-rose-400' : 'text-slate-700 dark:text-slate-200'">{{ __('Forced Update') }}</p>
|
||||
<p class="text-[10px] font-bold text-slate-400 dark:text-slate-500 tracking-wide mt-0.5">{{ __('Device will install immediately without user confirmation') }}</p>
|
||||
<p class="text-[10px] font-bold text-slate-400 dark:text-slate-500 tracking-wide mt-0.5">{{ __('During OTA deployment, the device will install directly in the background without user confirmation.') }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<label class="relative inline-flex items-center cursor-pointer shrink-0">
|
||||
@ -269,12 +268,12 @@
|
||||
</div>
|
||||
|
||||
{{-- 注意事項 --}}
|
||||
<div class="mt-6 p-4 rounded-xl bg-amber-500/5 border border-amber-500/10">
|
||||
<div class="flex items-start gap-3">
|
||||
<svg class="w-4 h-4 stroke-[2.5] text-amber-500 shrink-0 mt-0.5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m9-.75a9 9 0 11-18 0 9 9 0 0118 0zm-9 3.75h.008v.008H12v-.008z"/></svg>
|
||||
<div class="text-[10px] font-bold text-amber-700/80 dark:text-amber-400/80 tracking-wide leading-relaxed">
|
||||
<p class="font-black uppercase tracking-widest mb-1">{{ __('Important Notice') }}</p>
|
||||
<p>{{ __('Version Code must be strictly greater than the previous release, otherwise the OTA silent installation on the device will fail with INSTALL_FAILED_ALREADY_EXISTS.') }}</p>
|
||||
<div class="mt-6 p-5 rounded-2xl bg-amber-500/10 border border-amber-500/20 shadow-sm shadow-amber-500/5">
|
||||
<div class="flex items-start gap-4">
|
||||
<svg class="w-5 h-5 stroke-[2.5] text-amber-500 shrink-0 mt-0.5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m9-.75a9 9 0 11-18 0 9 9 0 0118 0zm-9 3.75h.008v.008H12v-.008z"/></svg>
|
||||
<div class="text-xs font-bold text-amber-800 dark:text-amber-300 tracking-wide leading-relaxed">
|
||||
<p class="text-sm font-black uppercase tracking-widest mb-1.5 flex items-center gap-1">{{ __('Important Notice') }}</p>
|
||||
<p class="font-bold opacity-90 leading-relaxed">{{ __('Version Code must be strictly greater than the previous release, otherwise the OTA silent installation on the device will fail with INSTALL_FAILED_ALREADY_EXISTS.') }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -107,20 +107,17 @@
|
||||
};
|
||||
</script>
|
||||
|
||||
<div class="space-y-6 pb-20" x-data="apkVersionApp()">
|
||||
<div class="space-y-4 pb-20" x-data="apkVersionApp()">
|
||||
<!-- Header -->
|
||||
<div class="flex flex-col md:flex-row md:items-center md:justify-between gap-6">
|
||||
<div>
|
||||
<h1 class="text-3xl font-black text-slate-800 dark:text-white tracking-tight font-display">{{ __('APK Versions') }}</h1>
|
||||
<p class="text-sm font-bold text-slate-500 dark:text-slate-400 mt-1 uppercase tracking-widest">{{ __('OTA firmware update and version control') }}</p>
|
||||
</div>
|
||||
<div>
|
||||
<a href="{{ route('admin.basic-settings.apk-versions.create') }}" class="btn-luxury-primary flex items-center gap-2">
|
||||
<svg class="w-5 h-5 stroke-[2.5]" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="M12 4.5v15m7.5-7.5h-15"/></svg>
|
||||
<span>{{ __('Upload New APK') }}</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<x-page-header
|
||||
:title="__('APK Versions')"
|
||||
:subtitle="__('OTA firmware update and version control')"
|
||||
>
|
||||
<a href="{{ route('admin.basic-settings.apk-versions.create') }}" class="btn-luxury-primary flex items-center gap-2">
|
||||
<svg class="w-5 h-5 stroke-[2.5]" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="M12 4.5v15m7.5-7.5h-15"/></svg>
|
||||
<span>{{ __('Upload New APK') }}</span>
|
||||
</a>
|
||||
</x-page-header>
|
||||
|
||||
<!-- Content Container with Loading State -->
|
||||
<div id="ajax-content-container"
|
||||
@ -319,7 +316,7 @@
|
||||
@csrf
|
||||
<div class="border border-slate-100 dark:border-slate-800/80 rounded-2xl overflow-hidden">
|
||||
<table class="w-full text-left">
|
||||
<thead class="bg-slate-50 dark:bg-slate-850/50">
|
||||
<thead class="bg-slate-50/50 dark:bg-slate-950/40">
|
||||
<tr>
|
||||
<th class="px-6 py-3 w-12 text-[11px] font-black text-slate-400 uppercase tracking-[0.2em]">
|
||||
<input type="checkbox"
|
||||
@ -351,13 +348,13 @@
|
||||
<span class="w-2.5 h-2.5 rounded-full"
|
||||
:class="machine.status === 'online' ? 'bg-emerald-500' : 'bg-slate-300 dark:bg-slate-600'"></span>
|
||||
<span class="text-xs font-bold uppercase tracking-wider text-slate-500 dark:text-slate-400"
|
||||
x-text="machine.status === 'online' ? 'Online' : 'Offline'"></span>
|
||||
x-text="machine.status === 'online' ? '{{ __('Online') }}' : '{{ __('Offline') }}'"></span>
|
||||
</div>
|
||||
</td>
|
||||
<td class="px-6 py-3">
|
||||
<span class="px-2 py-0.5 rounded text-[10px] font-mono font-bold"
|
||||
:class="machine.firmware_version.toLowerCase().includes(selectedFlavor.toLowerCase()) && selectedFlavor !== '' ? 'bg-cyan-500/10 text-cyan-500 dark:bg-cyan-500/20 border border-cyan-500/20' : 'bg-slate-100 text-slate-500 dark:bg-slate-800 dark:text-slate-400 border border-transparent'"
|
||||
x-text="machine.firmware_version ?: '-'"></span>
|
||||
x-text="machine.firmware_version || '-'"></span>
|
||||
</td>
|
||||
</tr>
|
||||
</template>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user