This commit is contained in:
280
www/i18n.js
280
www/i18n.js
@@ -74,6 +74,9 @@
|
||||
"nav.maps": "Maps",
|
||||
"nav.sounds": "Sounds",
|
||||
"nav.transitions": "Transitions",
|
||||
"nav.user-groups": "User groups",
|
||||
"nav.io-modules": "I/O modules",
|
||||
"nav.users": "Users",
|
||||
"nav.build-robot": "Build Robot",
|
||||
"nav.monitoring-log": "System log",
|
||||
"nav.integrations": "Tích hợp",
|
||||
@@ -194,6 +197,15 @@
|
||||
"dashboard.widget.map_locked": "Locked map",
|
||||
"dashboard.widget.map": "Map",
|
||||
"dashboard.widget.robot_summary": "Robot summary",
|
||||
"dashboard.widget.io_connect": "Connect I/O module",
|
||||
"dashboard.widget.io_status": "I/O status",
|
||||
"dashboard.widget.io_connectAction": "Connect",
|
||||
"dashboard.widget.io_disconnect": "Disconnect",
|
||||
"dashboard.widget.io_configuration": "I/O configuration",
|
||||
"dashboard.widget.ioPort": "Port {port}",
|
||||
"dashboard.widget.ioOn": "ON",
|
||||
"dashboard.widget.ioOff": "OFF",
|
||||
"dashboard.widget.field.ioModule": "I/O module",
|
||||
"dashboard.widget.field.map": "Map",
|
||||
"dashboard.widget.mapActive": "Active map (robot)",
|
||||
"dashboard.widget.mapHint": "Chọn map cố định hoặc để «Active map» dùng map đang gắn với robot.",
|
||||
@@ -304,6 +316,8 @@
|
||||
"maps.activeHint": "Map đang hoạt động: {name}",
|
||||
"maps.view": "Xem",
|
||||
"maps.importComingSoon": "Import site sẽ có trong phiên bản sau.",
|
||||
"maps.importNoSite": "Chọn site trước khi import.",
|
||||
"maps.importSuccess": "Import xong: {maps} map(s), {io} I/O module(s), {transitions} transition(s).",
|
||||
"maps.helpTitle": "Trợ giúp Maps",
|
||||
"maps.helpText": "Tạo map mới, upload ảnh PNG qua menu ⋮, sau đó kích hoạt map cho robot.",
|
||||
"maps.createDialog.title": "Tạo map",
|
||||
@@ -555,6 +569,129 @@
|
||||
"transitions.deleteConfirmText": "Xóa transition {from} → {to}?",
|
||||
"transitions.error.missing": "Thiếu trường bắt buộc.",
|
||||
|
||||
"users.title": "Users",
|
||||
"users.subtitle": "Tạo và chỉnh sửa users.",
|
||||
"users.helpTitle": "Trợ giúp Users",
|
||||
"users.helpBody": "Mỗi người cần user profile. Name hiển thị góc phải khi đăng nhập; Username dùng để login. Quyền theo User group (§4.6). PIN 4 số chỉ cho nhóm cho phép. User tự đổi password qua menu góc phải.",
|
||||
"users.create": "Tạo user",
|
||||
"users.clearFilters": "Xóa bộ lọc",
|
||||
"users.filterLabel": "Lọc:",
|
||||
"users.filterPlaceholder": "Lọc theo tên hoặc username...",
|
||||
"users.itemsFound": "{n} mục",
|
||||
"users.pageOf": "Trang {page} / {total}",
|
||||
"users.colName": "Name",
|
||||
"users.colUsername": "Username",
|
||||
"users.colGroup": "User group",
|
||||
"users.colEmail": "Email",
|
||||
"users.colPin": "PIN",
|
||||
"users.colFunctions": "Functions",
|
||||
"users.empty": "Chưa có user.",
|
||||
"users.emptyFilter": "Không có user khớp bộ lọc.",
|
||||
"users.createTitle": "Tạo user",
|
||||
"users.editTitle": "Sửa user",
|
||||
"users.fieldName": "Name",
|
||||
"users.fieldUsername": "Username",
|
||||
"users.fieldPassword": "Password",
|
||||
"users.fieldEmail": "Email address",
|
||||
"users.fieldGroup": "User group",
|
||||
"users.fieldEnabled": "Enabled",
|
||||
"users.fieldPinEnable": "Cho phép đăng nhập PIN",
|
||||
"users.fieldPin": "Mã PIN (4 số)",
|
||||
"users.passwordEditHint": "User tự đổi password qua menu góc phải trên.",
|
||||
"users.pinGroupHint": "PIN chỉ dùng được với user group cho phép PIN.",
|
||||
"users.pinYes": "Có",
|
||||
"users.pinNo": "Không",
|
||||
"users.save": "Lưu",
|
||||
"users.deleteTitle": "Xóa user?",
|
||||
"users.deleteConfirmText": "Xóa user \"{name}\"?",
|
||||
"users.deleteHint": "Chỉ xóa hồ sơ user. Map, mission và dữ liệu khác do user tạo vẫn giữ nguyên.",
|
||||
"users.error.missing": "Thiếu trường bắt buộc.",
|
||||
"users.error.passwordRequired": "Nhập password khi tạo user.",
|
||||
"users.error.pinInvalid": "PIN phải đúng 4 chữ số.",
|
||||
|
||||
"userGroups.title": "User groups",
|
||||
"userGroups.subtitle": "Tạo và chỉnh sửa user groups.",
|
||||
"userGroups.helpTitle": "Trợ giúp User groups",
|
||||
"userGroups.helpBody": "Mỗi user thuộc một user group. Quyền (none/read/write) áp dụng cho từng module. Tạo group trước khi tạo user. PIN chỉ dùng khi bật Allow PIN sign-in.",
|
||||
"userGroups.create": "Tạo user group",
|
||||
"userGroups.clearFilters": "Xóa bộ lọc",
|
||||
"userGroups.filterLabel": "Lọc:",
|
||||
"userGroups.filterPlaceholder": "Lọc theo tên...",
|
||||
"userGroups.itemsFound": "{n} mục",
|
||||
"userGroups.pageOf": "Trang {page} / {total}",
|
||||
"userGroups.colName": "Name",
|
||||
"userGroups.colUsers": "Users",
|
||||
"userGroups.colPin": "PIN sign-in",
|
||||
"userGroups.colPermissions": "Permissions",
|
||||
"userGroups.colFunctions": "Functions",
|
||||
"userGroups.empty": "Chưa có user group.",
|
||||
"userGroups.emptyFilter": "Không có user group khớp bộ lọc.",
|
||||
"userGroups.createTitle": "Tạo user group",
|
||||
"userGroups.editTitle": "Sửa user group",
|
||||
"userGroups.fieldName": "Name",
|
||||
"userGroups.fieldAllowPin": "Cho phép đăng nhập PIN",
|
||||
"userGroups.permissionsTitle": "Permissions",
|
||||
"userGroups.permissionsHint": "Gán quyền read hoặc write cho từng module. None ẩn module khỏi menu.",
|
||||
"userGroups.permColModule": "Module",
|
||||
"userGroups.permColAccess": "Access",
|
||||
"userGroups.perm.dashboard": "Dashboards",
|
||||
"userGroups.perm.config": "Build robot",
|
||||
"userGroups.perm.maps": "Maps",
|
||||
"userGroups.perm.missions": "Missions",
|
||||
"userGroups.perm.sounds": "Sounds",
|
||||
"userGroups.perm.integrations": "Integrations",
|
||||
"userGroups.perm.users": "Users & User groups",
|
||||
"userGroups.permLevel.none": "None",
|
||||
"userGroups.permLevel.read": "Read",
|
||||
"userGroups.permLevel.write": "Write",
|
||||
"userGroups.permSummaryAllWrite": "Full write",
|
||||
"userGroups.permSummaryNone": "No access",
|
||||
"userGroups.permSummaryMixed": "{write} write, {read} read",
|
||||
"userGroups.pinYes": "Có",
|
||||
"userGroups.pinNo": "Không",
|
||||
"userGroups.userCount": "{n} user(s)",
|
||||
"userGroups.save": "Lưu",
|
||||
"userGroups.deleteTitle": "Xóa user group?",
|
||||
"userGroups.deleteConfirmText": "Xóa user group \"{name}\"?",
|
||||
"userGroups.deleteHint": "Phải chuyển users sang group khác trước khi xóa.",
|
||||
"userGroups.error.missing": "Thiếu trường bắt buộc.",
|
||||
|
||||
"ioModules.title": "I/O modules",
|
||||
"ioModules.subtitle": "Tạo và quản lý kết nối I/O.",
|
||||
"ioModules.helpTitle": "Trợ giúp I/O modules",
|
||||
"ioModules.helpBody": "I/O module (Bluetooth hoặc WISE) dùng để giao tiếp cửa, thang nâng, băng tải… Nhập IP và chọn loại module. Dùng trong mission (Set output / Wait for input) và I/O zones trên map.",
|
||||
"ioModules.create": "Tạo I/O connection",
|
||||
"ioModules.clearFilters": "Xóa bộ lọc",
|
||||
"ioModules.filterLabel": "Lọc:",
|
||||
"ioModules.filterPlaceholder": "Lọc theo tên hoặc IP...",
|
||||
"ioModules.itemsFound": "{n} mục",
|
||||
"ioModules.pageOf": "Trang {page} / {total}",
|
||||
"ioModules.colName": "Name",
|
||||
"ioModules.colType": "Type",
|
||||
"ioModules.colIp": "IP address",
|
||||
"ioModules.colStatus": "Status",
|
||||
"ioModules.colFunctions": "Functions",
|
||||
"ioModules.empty": "Chưa có I/O module.",
|
||||
"ioModules.emptyFilter": "Không có I/O module khớp bộ lọc.",
|
||||
"ioModules.createTitle": "Tạo I/O connection",
|
||||
"ioModules.editTitle": "Sửa I/O connection",
|
||||
"ioModules.fieldSite": "Site",
|
||||
"ioModules.fieldName": "Name",
|
||||
"ioModules.fieldType": "I/O module type",
|
||||
"ioModules.fieldIp": "IP address",
|
||||
"ioModules.type.bluetooth": "Bluetooth",
|
||||
"ioModules.type.wise": "WISE",
|
||||
"ioModules.typeHint.bluetooth": "Output ports 1–4.",
|
||||
"ioModules.typeHint.wise": "Output ports 0–3.",
|
||||
"ioModules.status.connected": "Connected",
|
||||
"ioModules.status.disconnected": "Disconnected",
|
||||
"ioModules.save": "Lưu",
|
||||
"ioModules.deleteTitle": "Xóa I/O connection?",
|
||||
"ioModules.deleteConfirmText": "Xóa I/O module \"{name}\"?",
|
||||
"ioModules.error.missing": "Thiếu trường bắt buộc.",
|
||||
"ioModules.testConnection": "Kiểm tra kết nối",
|
||||
"ioModules.testOk": "Kết nối TCP thành công.",
|
||||
|
||||
"missions.title": "Missions",
|
||||
"missions.subtitle": "Setup → Missions — danh sách nhiệm vụ robot.",
|
||||
"missions.create": "Tạo mission",
|
||||
@@ -618,6 +755,9 @@
|
||||
"missions.action.pause": "Pause",
|
||||
"missions.action.set_digital_output": "Set digital output",
|
||||
"missions.action.wait_digital_input": "Wait for digital input",
|
||||
"missions.action.connect_bluetooth": "Connect Bluetooth module",
|
||||
"missions.action.disconnect_bluetooth": "Disconnect Bluetooth module",
|
||||
"missions.action.while": "While",
|
||||
"missions.action.set_plc_register": "Set PLC register",
|
||||
"missions.action.pick_cart": "Pick cart",
|
||||
"missions.action.drop_cart": "Drop cart",
|
||||
@@ -745,6 +885,9 @@
|
||||
"nav.maps": "Maps",
|
||||
"nav.sounds": "Sounds",
|
||||
"nav.transitions": "Transitions",
|
||||
"nav.user-groups": "User groups",
|
||||
"nav.io-modules": "I/O modules",
|
||||
"nav.users": "Users",
|
||||
"nav.build-robot": "Build Robot",
|
||||
"nav.monitoring-log": "System log",
|
||||
"nav.integrations": "Integrations",
|
||||
@@ -865,6 +1008,15 @@
|
||||
"dashboard.widget.map_locked": "Locked map",
|
||||
"dashboard.widget.map": "Map",
|
||||
"dashboard.widget.robot_summary": "Robot summary",
|
||||
"dashboard.widget.io_connect": "Connect I/O module",
|
||||
"dashboard.widget.io_status": "I/O status",
|
||||
"dashboard.widget.io_connectAction": "Connect",
|
||||
"dashboard.widget.io_disconnect": "Disconnect",
|
||||
"dashboard.widget.io_configuration": "I/O configuration",
|
||||
"dashboard.widget.ioPort": "Port {port}",
|
||||
"dashboard.widget.ioOn": "ON",
|
||||
"dashboard.widget.ioOff": "OFF",
|
||||
"dashboard.widget.field.ioModule": "I/O module",
|
||||
"dashboard.widget.field.map": "Map",
|
||||
"dashboard.widget.mapActive": "Active map (robot)",
|
||||
"dashboard.widget.mapHint": "Pick a fixed map or leave «Active map» to follow the robot's current map.",
|
||||
@@ -975,6 +1127,8 @@
|
||||
"maps.activeHint": "Active map: {name}",
|
||||
"maps.view": "View",
|
||||
"maps.importComingSoon": "Import site will be available in a future release.",
|
||||
"maps.importNoSite": "Select a site before importing.",
|
||||
"maps.importSuccess": "Import complete: {maps} map(s), {io} I/O module(s), {transitions} transition(s).",
|
||||
"maps.helpTitle": "Maps help",
|
||||
"maps.helpText": "Create a new map, upload a PNG via the ⋮ menu, then activate the map for the robot.",
|
||||
"maps.createDialog.title": "Create map",
|
||||
@@ -1226,6 +1380,129 @@
|
||||
"transitions.deleteConfirmText": "Delete transition {from} → {to}?",
|
||||
"transitions.error.missing": "Missing required fields.",
|
||||
|
||||
"users.title": "Users",
|
||||
"users.subtitle": "Create and edit users.",
|
||||
"users.helpTitle": "Users help",
|
||||
"users.helpBody": "Everyone needs a user profile. Name is shown in the upper right when signed in; Username is used to log in. Permissions come from the user group (§4.6). PIN is only for groups that allow PIN sign-in. Users change their own password from the menu in the upper right.",
|
||||
"users.create": "Create user",
|
||||
"users.clearFilters": "Clear filters",
|
||||
"users.filterLabel": "Filter:",
|
||||
"users.filterPlaceholder": "Filter by name or username...",
|
||||
"users.itemsFound": "{n} item(s) found",
|
||||
"users.pageOf": "Page {page} of {total}",
|
||||
"users.colName": "Name",
|
||||
"users.colUsername": "Username",
|
||||
"users.colGroup": "User group",
|
||||
"users.colEmail": "Email",
|
||||
"users.colPin": "PIN",
|
||||
"users.colFunctions": "Functions",
|
||||
"users.empty": "No users yet.",
|
||||
"users.emptyFilter": "No users match the filter.",
|
||||
"users.createTitle": "Create user",
|
||||
"users.editTitle": "Edit user",
|
||||
"users.fieldName": "Name",
|
||||
"users.fieldUsername": "Username",
|
||||
"users.fieldPassword": "Password",
|
||||
"users.fieldEmail": "Email address",
|
||||
"users.fieldGroup": "User group",
|
||||
"users.fieldEnabled": "Enabled",
|
||||
"users.fieldPinEnable": "Allow PIN sign-in",
|
||||
"users.fieldPin": "PIN code (4 digits)",
|
||||
"users.passwordEditHint": "Users change their own password from the menu in the upper right corner.",
|
||||
"users.pinGroupHint": "PIN is only available for user groups that allow PIN sign-in.",
|
||||
"users.pinYes": "Yes",
|
||||
"users.pinNo": "No",
|
||||
"users.save": "Save",
|
||||
"users.deleteTitle": "Delete user?",
|
||||
"users.deleteConfirmText": "Delete user \"{name}\"?",
|
||||
"users.deleteHint": "Only the user profile is removed. Maps, missions and other data created by this user remain unchanged.",
|
||||
"users.error.missing": "Missing required fields.",
|
||||
"users.error.passwordRequired": "Enter a password when creating a user.",
|
||||
"users.error.pinInvalid": "PIN must be exactly 4 digits.",
|
||||
|
||||
"userGroups.title": "User groups",
|
||||
"userGroups.subtitle": "Create and edit user groups.",
|
||||
"userGroups.helpTitle": "User groups help",
|
||||
"userGroups.helpBody": "Each user belongs to one user group. Permissions (none/read/write) apply per module. Create groups before users. PIN sign-in works only when Allow PIN sign-in is enabled.",
|
||||
"userGroups.create": "Create user group",
|
||||
"userGroups.clearFilters": "Clear filters",
|
||||
"userGroups.filterLabel": "Filter:",
|
||||
"userGroups.filterPlaceholder": "Filter by name...",
|
||||
"userGroups.itemsFound": "{n} item(s) found",
|
||||
"userGroups.pageOf": "Page {page} of {total}",
|
||||
"userGroups.colName": "Name",
|
||||
"userGroups.colUsers": "Users",
|
||||
"userGroups.colPin": "PIN sign-in",
|
||||
"userGroups.colPermissions": "Permissions",
|
||||
"userGroups.colFunctions": "Functions",
|
||||
"userGroups.empty": "No user groups yet.",
|
||||
"userGroups.emptyFilter": "No user groups match the filter.",
|
||||
"userGroups.createTitle": "Create user group",
|
||||
"userGroups.editTitle": "Edit user group",
|
||||
"userGroups.fieldName": "Name",
|
||||
"userGroups.fieldAllowPin": "Allow PIN sign-in",
|
||||
"userGroups.permissionsTitle": "Permissions",
|
||||
"userGroups.permissionsHint": "Set read or write access per module. None hides the module from the menu.",
|
||||
"userGroups.permColModule": "Module",
|
||||
"userGroups.permColAccess": "Access",
|
||||
"userGroups.perm.dashboard": "Dashboards",
|
||||
"userGroups.perm.config": "Build robot",
|
||||
"userGroups.perm.maps": "Maps",
|
||||
"userGroups.perm.missions": "Missions",
|
||||
"userGroups.perm.sounds": "Sounds",
|
||||
"userGroups.perm.integrations": "Integrations",
|
||||
"userGroups.perm.users": "Users & User groups",
|
||||
"userGroups.permLevel.none": "None",
|
||||
"userGroups.permLevel.read": "Read",
|
||||
"userGroups.permLevel.write": "Write",
|
||||
"userGroups.permSummaryAllWrite": "Full write",
|
||||
"userGroups.permSummaryNone": "No access",
|
||||
"userGroups.permSummaryMixed": "{write} write, {read} read",
|
||||
"userGroups.pinYes": "Yes",
|
||||
"userGroups.pinNo": "No",
|
||||
"userGroups.userCount": "{n} user(s)",
|
||||
"userGroups.save": "Save",
|
||||
"userGroups.deleteTitle": "Delete user group?",
|
||||
"userGroups.deleteConfirmText": "Delete user group \"{name}\"?",
|
||||
"userGroups.deleteHint": "Users must be moved to another group before this group can be deleted.",
|
||||
"userGroups.error.missing": "Missing required fields.",
|
||||
|
||||
"ioModules.title": "I/O modules",
|
||||
"ioModules.subtitle": "Create and manage I/O connections.",
|
||||
"ioModules.helpTitle": "I/O modules help",
|
||||
"ioModules.helpBody": "I/O modules (Bluetooth or WISE) communicate with doors, lifts, conveyors, etc. Enter the IP and module type. Use in missions (Set output / Wait for input) and I/O zones on maps.",
|
||||
"ioModules.create": "Create I/O connection",
|
||||
"ioModules.clearFilters": "Clear filters",
|
||||
"ioModules.filterLabel": "Filter:",
|
||||
"ioModules.filterPlaceholder": "Filter by name or IP...",
|
||||
"ioModules.itemsFound": "{n} item(s) found",
|
||||
"ioModules.pageOf": "Page {page} of {total}",
|
||||
"ioModules.colName": "Name",
|
||||
"ioModules.colType": "Type",
|
||||
"ioModules.colIp": "IP address",
|
||||
"ioModules.colStatus": "Status",
|
||||
"ioModules.colFunctions": "Functions",
|
||||
"ioModules.empty": "No I/O modules yet.",
|
||||
"ioModules.emptyFilter": "No I/O modules match the filter.",
|
||||
"ioModules.createTitle": "Create I/O connection",
|
||||
"ioModules.editTitle": "Edit I/O connection",
|
||||
"ioModules.fieldSite": "Site",
|
||||
"ioModules.fieldName": "Name",
|
||||
"ioModules.fieldType": "I/O module type",
|
||||
"ioModules.fieldIp": "IP address",
|
||||
"ioModules.type.bluetooth": "Bluetooth",
|
||||
"ioModules.type.wise": "WISE",
|
||||
"ioModules.typeHint.bluetooth": "Output ports 1–4.",
|
||||
"ioModules.typeHint.wise": "Output ports 0–3.",
|
||||
"ioModules.status.connected": "Connected",
|
||||
"ioModules.status.disconnected": "Disconnected",
|
||||
"ioModules.save": "Save",
|
||||
"ioModules.deleteTitle": "Delete I/O connection?",
|
||||
"ioModules.deleteConfirmText": "Delete I/O module \"{name}\"?",
|
||||
"ioModules.error.missing": "Missing required fields.",
|
||||
"ioModules.testConnection": "Test connection",
|
||||
"ioModules.testOk": "TCP connection successful.",
|
||||
|
||||
"missions.title": "Missions",
|
||||
"missions.subtitle": "Setup → Missions — robot task list.",
|
||||
"missions.create": "Create mission",
|
||||
@@ -1289,6 +1566,9 @@
|
||||
"missions.action.pause": "Pause",
|
||||
"missions.action.set_digital_output": "Set digital output",
|
||||
"missions.action.wait_digital_input": "Wait for digital input",
|
||||
"missions.action.connect_bluetooth": "Connect Bluetooth module",
|
||||
"missions.action.disconnect_bluetooth": "Disconnect Bluetooth module",
|
||||
"missions.action.while": "While",
|
||||
"missions.action.set_plc_register": "Set PLC register",
|
||||
"missions.action.pick_cart": "Pick cart",
|
||||
"missions.action.drop_cart": "Drop cart",
|
||||
|
||||
Reference in New Issue
Block a user