feat(project): base smatec's frontend

This commit is contained in:
Tran Anh Tuan
2026-01-21 11:48:57 +07:00
commit 5c2a909bed
138 changed files with 43666 additions and 0 deletions

63
src/locales/en-US.ts Normal file
View File

@@ -0,0 +1,63 @@
import masterEn from './en-US/master/master-en';
import gmsEn from './en-US/slave/gms/gms-en';
import sgwEn from './en-US/slave/sgw/sgw-en';
import spoleEn from './en-US/slave/spole/spole-en';
export default {
'app.copyright.produced': 'Produced by Mobifone.',
'common.save': 'Save',
'common.cancel': 'Cancel',
'common.delete': 'Delete',
'common.delete_confirm': 'Confirm delete?',
'common.delete_messgage': 'Do you want to delete',
'common.deleting': 'Deleting...',
'common.edit': 'Edit',
'common.add': 'Add',
'common.actions': 'Actions',
'common.search': 'Search',
'common.filter': 'Filter',
'common.loading': 'Loading...',
'common.updating': 'Updating...',
'common.confirm': 'Confirm',
'common.notification': 'Notification',
'common.back': 'Back',
'common.next': 'Next',
'common.logout': 'Log out',
'common.yes': 'Yes',
'common.sure': 'Sure',
'common.no': 'No',
'common.ok': 'OK',
'common.error': 'Error',
'common.vietnamese': 'Vietnamese',
'common.english': 'English',
'common.theme.light': 'Light Theme',
'common.theme.dark': 'Dark Theme',
'common.paginations.things': 'things',
'common.paginations.of': 'of',
'common.name': 'Name',
'common.name.required': 'Name is required',
'common.type': 'Type',
'common.type.placeholder': 'Select Type',
'common.status': 'Status',
'common.province': 'Province',
'common.description': 'Description',
'common.description.required': 'Description is required',
'common.description.placeholder': 'Enter description',
'common.active': 'Active',
'common.inactive': 'Inactive',
'common.created_at': 'Created At',
'common.updated_at': 'Updated At',
'common.undefined': 'Undefined',
'common.not_empty': 'Cannot be empty!',
'common.level.normal': 'Normal',
'common.level.warning': 'Warning',
'common.level.critical': 'Critical',
'common.level.sos': 'SOS',
'common.unaccess': 'Sorry, you do not have permission to access this page',
'common.notfound': 'The page you visited does not exist',
'common.internalserver': 'Sorry, something went wrong on the server',
'common.required_field': 'This field cannot be empty',
...masterEn,
...sgwEn,
...gmsEn,
...spoleEn,
};

View File

@@ -0,0 +1,17 @@
export default {
'master.alarms.table.pagination': 'alarms',
'master.alarms.severity': 'Severity',
'master.alarms.occurred_at': 'Occurred time',
'master.alarms.confirmed': 'Confirmed',
'master.alarms.confirm.description.required': 'The description is required',
'master.alarms.confirm.title': 'Confirm Alarm',
'master.alarms.confirm.success': 'Confirm alarm successfully',
'master.alarms.confirm.fail': 'Confirm alarm failed',
'master.alarms.unconfirm.title': 'Unconfirm',
'master.alarms.unconfirm.body':
'Are you sure you want to unconfirm this alarm?',
'master.alarms.unconfirm.success': 'Unconfirm alarm successfully',
'master.alarms.unconfirm.fail': 'Unconfirm alarm failed',
'master.alarms.not_found': 'Alarm has expired or does not exist',
'master.alarms.filter_things': 'Filter by device group',
};

View File

@@ -0,0 +1,15 @@
export default {
// Authentication
'master.auth.login.title': 'Login',
'master.auth.login.email': 'Email',
'master.auth.validation.email': 'Email is required',
'master.auth.password': 'Password',
'master.auth.validation.password': 'Password is required',
'master.auth.login.subtitle': 'Ship Monitoring System',
'master.auth.login.description': 'Login to continue monitoring vessels',
'master.auth.login.invalid': 'Invalid username or password',
'master.auth.login.success': 'Login successful',
'master.auth.logout.title': 'Logout',
'master.auth.logout.confirm': 'Are you sure you want to logout?',
'master.auth.logout.success': 'Logout successful',
};

View File

@@ -0,0 +1,18 @@
import masterAlarmEn from './master-alarm-en';
import masterAuthEn from './master-auth-en';
import masterGroupEn from './master-group-en';
import masterSysLogEn from './master-log-en';
import masterMenuEn from './master-menu-en';
import masterMenuProfileEn from './master-profile-en';
import masterThingEn from './master-thing-en';
import masterUserEn from './master-user-en';
export default {
...masterAuthEn,
...masterMenuEn,
...masterMenuProfileEn,
...masterAlarmEn,
...masterThingEn,
...masterSysLogEn,
...masterUserEn,
...masterGroupEn,
};

View File

@@ -0,0 +1,21 @@
export default {
'master.groups.root': 'Add root',
'master.groups.cannot-add-group':
'Cannot add child to a group that has things',
'master.groups.add': 'Add child',
'master.groups.delete.confirm': 'Are you sure you want to delete this group?',
'master.groups.code': 'Code',
'master.groups.code.exists': 'The code already exists',
'master.groups.short_name': 'Short name',
'master.groups.short_name.exists': 'The short name already exists',
'master.groups.update.success': 'Updated group successfully',
'master.groups.update.failed': 'Update group failed, please try again!',
'master.groups.create.success': 'Created group successfully',
'master.groups.create.failed': 'Create group failed, please try again!',
'master.groups.delete.success': 'Deleted group successfully',
'master.groups.delete.failed': 'Delete group failed',
'master.groups.delete.failed_internal':
'The group contains devices or users and cannot be deleted',
'master.groups.parent': 'Parent',
'master.groups.treeselect.placeholder': 'Please select group',
};

View File

@@ -0,0 +1,51 @@
export default {
'master.logs.search.yesterday': 'Yesterday',
'master.logs.search.last_week': 'Last week',
'master.logs.search.last_month': 'Last month',
'master.logs.table.pagination': 'activities',
'master.logs.things.create': 'Create new thing',
'master.logs.things.update': 'Update thing',
'master.logs.things.remove': 'Remove thing',
'master.logs.things.share': 'Share thing',
'master.logs.things.unshare': 'Unshare thing',
'master.logs.things.update_key': 'Update key thing',
'master.logs.users.create': 'Register user',
'master.logs.users.update': 'Update user',
'master.logs.users.remove': 'Remove user',
'master.logs.users.share': 'User share',
'master.logs.groups.create': 'Create new group',
'master.logs.groups.update': 'Update group',
'master.logs.groups.remove': 'Remove group',
'master.logs.groups.assign_thing': 'Assign thing to group',
'master.logs.groups.assign_user': 'Assign user to group',
'master.logs.groups.unassign_thing': 'Remove thing from group',
'master.logs.groups.unassign_user': 'Remove user from group',
'master.logs.action.text': 'Action',
'master.logs.email.text': 'Email',
'master.logs.date.text': 'Date',
'master.logs.things.alarm.confirm': 'Alarm confirm',
'master.logs.things.alarm.unconfirm': 'Alarm unconfirm',
'master.logs.users.login': 'User login',
'master.logs.title': 'Logs',
'master.logs.things.confirm': 'Confirm',
'master.logs.things.unconfirm': 'Unconfirm',
'master.logs.things': 'Things',
'master.logs.users': 'Users',
'master.logs.groups': 'Groups',
'master.logs.ships': 'Ships',
'master.logs.ships.create': 'Create new ship',
'master.logs.ships.update': 'Update ship',
'master.logs.ships.remove': 'Remove ship',
'master.logs.ships.assign_thing': 'Assign device to ship',
'master.logs.ships.assign_user': 'Assign user to ship',
'master.logs.ships.unassign_thing': 'Remove device from ship',
'master.logs.ships.unassign_user': 'Remove user from ship',
'master.logs.trips': 'Trips',
'master.logs.trips.create': 'Create new trip',
'master.logs.trips.update': 'Update trip',
'master.logs.trips.remove': 'Remove trip',
'master.logs.trips.approve': 'Approve trip',
'master.logs.trips.request_approve': 'Request approval for trip',
'master.logs.trips.unassign_thing': 'Remove device from trip',
'master.logs.trips.unassign_user': 'Remove user from trip',
};

View File

@@ -0,0 +1,10 @@
export default {
'menu.alarms': 'Alarms',
'menu.monitoring': 'Monitoring',
'menu.manager': 'Manager',
'menu.manager.devices': 'Devices',
'menu.manager.groups': 'Groups',
'menu.manager.users': 'Users',
'menu.manager.logs': 'Logs',
'menu.profile': 'Profile',
};

View File

@@ -0,0 +1,20 @@
export default {
'master.profile.change-profile': 'Basic Information',
'master.profile.change-password': 'Change Password',
'master.profile.two-factor-authentication': 'Two-Factor Authentication',
'master.profile.change-profile.title': 'Update Personal Information',
'master.profile.change-profile.full_name': 'Full Name',
'master.profile.change-profile.phone_number': 'Phone Number',
'master.profile.change-password.old_password': 'Old Password',
'master.profile.change-password.new_password': 'New Password',
'master.profile.change-password.confirm_password': 'Confirm Password',
'master.profile.change-password.password_not_match':
'Password confirmation does not match',
'master.profile.change-profile.update-success':
'Update information successfully',
'master.profile.change-profile.update-fail': 'Update information failed',
'master.profile.change-password.success': 'Change password successfully',
'master.profile.change-password.fail': 'Change password failed',
'master.profile.change-password.password.strong':
'A password contains at least 8 characters, including at least one number and includes both lower and uppercase letters and special characters, for example #, ?, !',
};

View File

@@ -0,0 +1,6 @@
export default {
'master.thing.name': 'Name',
'master.thing.external_id': 'External ID',
'master.thing.group': 'Group',
'master.thing.address': 'Address',
};

View File

@@ -0,0 +1,35 @@
export default {
'master.users.title': 'Users',
'master.users.table.pagination': 'users',
'master.users.register': 'Register',
'master.users.register.title': 'Register user',
'master.users.email.exists': 'The email is exists',
'master.users.email': 'Email',
'master.users.email.tip': 'The email is the unique key',
'master.users.email.required': 'The email is required',
'master.users.email.invalid': 'Invalid email address',
'master.users.role': 'Role',
'master.users.role.placeholder': 'Please select a role',
'master.users.role.tip': 'The role is the unique key',
'master.users.password.required': 'Password is required',
'master.users.password.minimum': 'Minimum password length is 8',
'master.users.password': 'Password',
'master.users.full_name': 'Full name',
'master.users.full_name.placeholder': 'Enter full name',
'master.users.full_name.required': 'Please enter full name',
'master.users.password.placeholder': 'Password',
'master.users.confirmpassword.required': 'Confirm password is required',
'master.users.email.placeholder': 'Email',
'master.users.phone_number': 'Phone number',
'master.users.phone_number.tip': 'The phone number is the unique key',
'master.users.phone_number.required': 'The phone number is required',
'master.users.phone_number.notvalid': 'Invalid phone number',
'master.users.groups': 'Groups',
'master.users.groups.required': 'Please select groups',
'master.users.role.sysadmin': 'System Administrator',
'master.users.role.admin': 'Unit Manager',
'master.users.role.user': 'Unit Supervisor',
'master.users.role.sgw.end_user': 'Ship Owner',
'master.users.create.error': 'User creation failed',
'master.users.create.success': 'User created successfully',
};

View File

@@ -0,0 +1,5 @@
import gmsMenuEn from './gms-menu-en';
export default {
'gms.title': 'SmartGMS',
...gmsMenuEn,
};

View File

@@ -0,0 +1,3 @@
export default {
'menu.gms.monitor': 'Monitor',
};

View File

@@ -0,0 +1,6 @@
import sgwMenu from './sgw-menu-en';
export default {
'sgw.title': 'Sea Gateway',
'sgw.ship': 'Ship',
...sgwMenu,
};

View File

@@ -0,0 +1,6 @@
export default {
'menu.sgw.map': 'Maps',
'menu.sgw.trips': 'Trips',
'menu.manager.sgw.fishes': 'Fishes',
'menu.manager.sgw.zones': 'Zones',
};

View File

@@ -0,0 +1,5 @@
import spoleMenuEN from './spole-menu-en';
export default {
'spole.title': 'Spole',
...spoleMenuEN,
};

View File

@@ -0,0 +1,8 @@
export default {
'menu.spole.monitoring': 'Monitoring',
'menu.spole.mira': 'Mira',
'menu.spole.miva': 'Miva',
'menu.spole.traffic-light': 'Traffic Light',
'menu.spole.street-light': 'Street Light',
'menu.spole.media': 'Media',
};

64
src/locales/vi-VN.ts Normal file
View File

@@ -0,0 +1,64 @@
import masterVI from './vi-VN/master/master-vi';
import gmsVI from './vi-VN/slave/gms/gms-vi';
import sgwVI from './vi-VN/slave/sgw/sgw-vi';
import spoleVI from './vi-VN/slave/spole/spole-vi';
export default {
'app.copyright.produced': 'Sản phẩm của Mobifone.',
'common.save': 'Lưu',
'common.cancel': 'Hủy',
'common.delete': 'Xóa',
'common.delete_confirm': 'Xác nhận xóa?',
'common.deleting': 'Đang xóa...',
'common.edit': 'Chỉnh sửa',
'common.add': 'Thêm',
'common.actions': 'Hoạt động',
'common.search': 'Tìm kiếm',
'common.filter': 'Bộ lọc',
'common.loading': 'Đang tải...',
'common.updating': 'Đang cập nhật...',
'common.confirm': 'Xác nhận',
'common.notification': 'Thông báo',
'common.back': 'Quay lại',
'common.next': 'Tiếp theo',
'common.logout': 'Đăng xuất',
'common.yes': 'Có',
'common.sure': 'Chắc chắn',
'common.no': 'Không',
'common.ok': 'OK',
'common.error': 'Lỗi',
'common.vietnamese': 'Tiếng Việt',
'common.english': 'Tiếng Anh',
'common.theme.light': 'Sáng',
'common.theme.dark': 'Tối',
'common.paginations.things': 'thiết bị',
'common.paginations.of': 'trên',
'common.name': 'Tên',
'common.name.required': 'Tên không được để trống',
'common.note': 'Ghi chú',
'common.image': 'Ảnh',
'common.type': 'Loại',
'common.type.placeholder': 'Chọn loại',
'common.status': 'Trạng thái',
'common.province': 'Tỉnh',
'common.description': 'Mô tả',
'common.description.required': 'Mô tả không được để trống',
'common.description.placeholder': 'Nhập mô tả',
'common.active': 'Kích hoạt',
'common.inactive': 'Vô hiệu hóa',
'common.created_at': 'Ngày tạo',
'common.updated_at': 'Ngày cập nhật',
'common.undefined': 'Chưa xác định',
'common.not_empty': 'Không được để trống!',
'common.level.normal': 'Bình thường',
'common.level.warning': 'Cảnh báo',
'common.level.critical': 'Nguy hiểm',
'common.level.sos': 'Khẩn cấp',
'common.unaccess': 'Bạn không có quyền truy cập trang này',
'common.notfound': 'Trang bạn tìm kiếm không tồn tại',
'common.internalserver': 'Xin lỗi, đã có lỗi xảy ra ở máy chủ',
'common.required_field': 'Trường này không được để trống',
...masterVI,
...sgwVI,
...gmsVI,
...spoleVI,
};

View File

@@ -0,0 +1,16 @@
export default {
'master.alarms.table.pagination': 'cảnh báo',
'master.alarms.severity': 'Mức độ',
'master.alarms.occurred_at': 'Thời gian xảy ra',
'master.alarms.confirmed': 'Đã xác nhận',
'master.alarms.confirm.description.required': 'Mô tả không được để trống',
'master.alarms.confirm.title': 'Xác nhận cảnh báo',
'master.alarms.confirm.success': 'Xác nhận cảnh báo thành công',
'master.alarms.confirm.fail': 'Xác nhận cảnh báo thất bại',
'master.alarms.unconfirm.title': 'Ngừng xác nhận',
'master.alarms.unconfirm.body': 'Bạn chắc chắn ngừng xác nhận cảnh báo này?',
'master.alarms.unconfirm.success': 'Ngừng xác nhận cảnh báo thành công',
'master.alarms.unconfirm.fail': 'Ngừng xác nhận cảnh báo thất bại',
'master.alarms.not_found': 'Cảnh báo đã hết hạn hoặc không tồn tại',
'master.alarms.filter_things': 'Lọc theo nhóm thiết bị',
};

View File

@@ -0,0 +1,15 @@
export default {
// Authentication
'master.auth.login.email': 'Email',
'master.auth.login.title': 'Đăng nhập',
'master.auth.login.subtitle': 'Hệ thống giám sát tàu cá',
'master.auth.login.description': 'Đăng nhập để tiếp tục giám sát tàu thuyền',
'master.auth.login.invalid': 'Tên người dùng hoặc mật khẩu không hợp lệ',
'master.auth.login.success': 'Đăng nhập thành công',
'master.auth.logout.title': 'Đăng xuất',
'master.auth.logout.confirm': 'Bạn có chắc chắn muốn đăng xuất?',
'master.auth.logout.success': 'Đăng xuất thành công',
'master.auth.validation.email': 'Email không được để trống!',
'master.auth.password': 'Mật khẩu',
'master.auth.validation.password': 'Mật khẩu không được để trống!',
};

View File

@@ -0,0 +1,22 @@
export default {
'master.groups.root': 'Thêm gốc',
'master.groups.cannot-add-group':
'Không thể tạo đơn vị con khi gốc đã có thiết bị',
'master.groups.add': 'Tạo đơn vị cấp dưới',
'master.groups.delete.confirm': 'Bạn có chắc muốn xóa nhóm này không?',
'master.groups.code': 'Mã',
'master.groups.code.exists': 'Mã đã tồn tại',
'master.groups.short_name': 'Tên viết tắt',
'master.groups.short_name.exists': 'Tên viết tắt đã tồn tại',
'master.groups.update.success': 'Cập nhật đơn vị thành công',
'master.groups.update.failed': 'Cập nhật đơn vị thất bại, vui lòng thử lại!',
'master.groups.create.success': 'Tạo đơn vị thành công',
'master.groups.create.failed': 'Tạo đơn vị thất bại, vui lòng thử lại!',
'master.groups.delete.success': 'Xóa đơn vị thành công',
'master.groups.delete.failed': 'Xóa đơn vị thất bại',
'master.groups.delete.failed_internal':
'Đơn vị có chứa thiết bị hoặc người dùng, không thể xóa',
'master.groups.parent': 'Nhóm gốc',
'master.groups.treeselect.placeholder': 'Chọn khu vực',
};

View File

@@ -0,0 +1,51 @@
export default {
'master.logs.search.yesterday': 'Hôm qua',
'master.logs.search.last_week': 'Tuần trước',
'master.logs.search.last_month': 'Tháng trước',
'master.logs.table.pagination': 'hoạt động',
'master.logs.things.create': 'Tạo mới thiết bị',
'master.logs.things.update': 'Sửa thông tin thiết bị',
'master.logs.things.remove': 'Xoá thiết bị',
'master.logs.things.share': 'Chia sẻ thiết bị',
'master.logs.things.unshare': 'Ngừng chia sẻ thiết bị',
'master.logs.things.update_key': 'Cập nhật mã khoá thiết bị',
'master.logs.users.create': 'Đăng kí người dùng mới',
'master.logs.users.update': 'Cập nhật thông tin người dùng',
'master.logs.users.remove': 'Xoá người dùng',
'master.logs.users.share': 'Đăng nhập',
'master.logs.groups.create': 'Tạo mới đơn vị',
'master.logs.groups.update': 'Sửa thông tin đơn vị',
'master.logs.groups.remove': 'Xoá đơn vị',
'master.logs.groups.assign_thing': 'Thêm thiết bị vào đơn vị',
'master.logs.groups.assign_user': 'Thêm người dùng vào đơn vị',
'master.logs.groups.unassign_thing': 'Xoá thiết bị khỏi đơn vị',
'master.logs.groups.unassign_user': 'Xoá người dùng khỏi đơn vị',
'master.logs.action.text': 'Thao tác',
'master.logs.email.text': 'Người dùng',
'master.logs.date.text': 'Ngày giờ',
'master.logs.things.alarm.confirm': 'Xác nhận cảnh báo',
'master.logs.things.alarm.unconfirm': 'Ngừng xác nhận cảnh báo',
'master.logs.users.login': 'Đăng nhập',
'master.logs.title': 'Nhật ký',
'master.logs.things.confirm': 'Xác nhận',
'master.logs.things.unconfirm': 'Ngừng xác nhận',
'master.logs.things': 'Thiết bị',
'master.logs.users': 'Người dùng',
'master.logs.groups': 'Đơn vị',
'master.logs.ships': 'Tàu',
'master.logs.ships.create': 'Tạo mới tàu',
'master.logs.ships.update': 'Sửa thông tin tàu',
'master.logs.ships.remove': 'Xoá tàu',
'master.logs.ships.assign_thing': 'Thêm thiết bị vào tàu',
'master.logs.ships.assign_user': 'Thêm người dùng vào tàu',
'master.logs.ships.unassign_thing': 'Xoá thiết bị khỏi tàu',
'master.logs.ships.unassign_user': 'Xoá người dùng khỏi tàu',
'master.logs.trips': 'Chuyến đi',
'master.logs.trips.create': 'Tạo mới chuyến đi',
'master.logs.trips.update': 'Sửa thông tin chuyến đi',
'master.logs.trips.remove': 'Xoá chuyến đi',
'master.logs.trips.approve': 'Duyệt chuyến đi',
'master.logs.trips.request_approve': 'Yêu cầu xác nhận chuyến đi',
'master.logs.trips.unassign_thing': 'Xoá thiết bị khỏi chuyến đi',
'master.logs.trips.unassign_user': 'Xoá người dùng khỏi chuyến đi',
};

View File

@@ -0,0 +1,10 @@
export default {
'menu.monitoring': 'Giám sát',
'menu.alarms': 'Cảnh báo',
'menu.manager': 'Quản lý',
'menu.manager.devices': 'Thiết bị',
'menu.manager.groups': 'Đơn vị',
'menu.manager.users': 'Người dùng',
'menu.manager.logs': 'Hoạt động',
'menu.profile': 'Thông tin cá nhân',
};

View File

@@ -0,0 +1,20 @@
export default {
'master.profile.change-profile': 'Thông tin cơ bản',
'master.profile.change-password': 'Đổi mật khẩu',
'master.profile.two-factor-authentication': 'Xác thực 2 bước',
'master.profile.change-profile.title': 'Cập nhật thông tin cá nhân',
'master.profile.change-profile.full_name': 'Họ và tên',
'master.profile.change-profile.phone_number': 'Số điện thoại',
'master.profile.change-password.old_password': 'Mật khẩu cũ',
'master.profile.change-password.new_password': 'Mật khẩu mới',
'master.profile.change-password.password.strong':
'Mật khẩu phải chứa ít nhất 8 ký tự, bao gồm ít nhất một số và bao gồm cả chữ thường, chữ hoa và ký tự đặc biệt, ví dụ #, ?, !',
'master.profile.change-password.confirm_password': 'Xác nhận mật khẩu',
'master.profile.change-password.password_not_match':
'Mật khẩu xác nhận không khớp',
'master.profile.change-profile.update-success':
'Cập nhật thông tin thành công',
'master.profile.change-profile.update-fail': 'Cập nhật thông tin thất bại',
'master.profile.change-password.success': 'Đổi mật khẩu thành công',
'master.profile.change-password.fail': 'Đổi mật khẩu thất bại',
};

View File

@@ -0,0 +1,6 @@
export default {
'master.thing.name': 'Tên',
'master.thing.external_id': 'External ID',
'master.thing.group': 'Nhóm',
'master.thing.address': 'Địa chỉ',
};

View File

@@ -0,0 +1,35 @@
export default {
'master.users.title': 'Quản lý người dùng',
'master.users.table.pagination': 'người dùng',
'master.users.register': 'Thêm người dùng',
'master.users.register.title': 'Đăng kí người dùng mới',
'master.users.email': 'Email',
'master.users.email.tip': 'Email là duy nhất',
'master.users.email.required': 'Vui lòng nhập email',
'master.users.email.invalid': 'Email không hợp lệ',
'master.users.email.exists': 'Email đã sử dụng',
'master.users.role': 'Vai trò',
'master.users.role.placeholder': 'Vui lòng chọn vai trò',
'master.users.role.tip': 'Vai trò là duy nhất',
'master.users.password.required': 'Vui lòng nhập mật khẩu',
'master.users.password.minimum': 'Mật khẩu ít nhất 8 kí tự',
'master.users.password': 'Mật khẩu',
'master.users.password.placeholder': 'Nhập mật khẩu',
'master.users.confirmpassword.required': 'Vui lòng nhập lại mật khẩu',
'master.users.full_name': 'Tên đầy đủ',
'master.users.full_name.placeholder': 'Nhập tên đầy đủ',
'master.users.full_name.required': 'Vui lòng nhập tên đầy đủ',
'master.users.email.placeholder': 'Email',
'master.users.phone_number': 'Số điện thoại',
'master.users.phone_number.tip': 'Số điện thoại là duy nhất',
'master.users.phone_number.required': 'Vui lòng nhập số điện thoại',
'master.users.phone_number.notvalid': 'Số điện thoại không hợp lệ',
'master.users.groups': 'Đơn vị',
'master.users.groups.required': 'Vui lòng chọn đơn vị',
'master.users.role.sysadmin': 'Quản lý hệ thống',
'master.users.role.admin': 'Quản lý đơn vị',
'master.users.role.user': 'Giám sát đơn vị',
'master.users.role.sgw.end_user': 'Chủ tàu',
'master.users.create.error': 'Tạo người dùng lỗi',
'master.users.create.success': 'Tạo người dùng thành công',
};

View File

@@ -0,0 +1,18 @@
import masterAlarmVi from './master-alarm-vi';
import masterAuthVi from './master-auth-vi';
import masterGroupVi from './master-group-vi';
import masterSysLogVi from './master-log-vi';
import masterMenuVi from './master-menu-vi';
import masterProfileVi from './master-profile-vi';
import masterThingVi from './master-thing-vi';
import masterUserVi from './master-user-vi';
export default {
...masterAuthVi,
...masterMenuVi,
...masterProfileVi,
...masterAlarmVi,
...masterThingVi,
...masterSysLogVi,
...masterUserVi,
...masterGroupVi,
};

View File

@@ -0,0 +1,3 @@
export default {
'menu.gms.monitor': 'Giám sát',
};

View File

@@ -0,0 +1,5 @@
import gmsMenuVi from './gms-menu-vi';
export default {
'gms.title': 'Quản lý giám sát thông minh',
...gmsMenuVi,
};

View File

@@ -0,0 +1,6 @@
export default {
'menu.sgw.map': 'Bản đồ',
'menu.sgw.trips': 'Chuyến đi',
'menu.manager.sgw.fishes': 'Loài cá',
'menu.manager.sgw.zones': 'Khu vực',
};

View File

@@ -0,0 +1,6 @@
import sgwMenu from './sgw-menu-vi';
export default {
'sgw.title': 'Hệ thống giám sát tàu cá',
'sgw.ship': 'Tàu',
...sgwMenu,
};

View File

@@ -0,0 +1,8 @@
export default {
'menu.spole.monitoring': 'Giám sát',
'menu.spole.mira': 'Mira',
'menu.spole.miva': 'Miva',
'menu.spole.traffic-light': 'Đèn giao thông',
'menu.spole.street-light': 'Đèn',
'menu.spole.media': 'Media',
};

View File

@@ -0,0 +1,5 @@
import spoleMenuVI from './spole-menu-vi';
export default {
'spole.title': 'Quản lý giám sát thông minh',
...spoleMenuVI,
};