433 lines
14 KiB
JSON
433 lines
14 KiB
JSON
{
|
|
"common": {
|
|
"app_name": "Sea Gateway",
|
|
"footer_text": "Product of Mobifone v1.0",
|
|
"ok": "OK",
|
|
"confirm": "Confirm",
|
|
"cancel": "Cancel",
|
|
"done": "Done",
|
|
"save": "Save",
|
|
"delete": "Delete",
|
|
"edit": "Edit",
|
|
"add": "Add",
|
|
"close": "Close",
|
|
"back": "Back",
|
|
"next": "Next",
|
|
"previous": "Previous",
|
|
"loading": "Loading...",
|
|
"error": "Error",
|
|
"success": "Success",
|
|
"warning": "Warning",
|
|
"language": "Language",
|
|
"language_vi": "Vietnamese",
|
|
"language_en": "English",
|
|
"theme": "Theme",
|
|
"theme_light": "Light",
|
|
"theme_dark": "Dark",
|
|
"theme_system": "System",
|
|
"retry": "Retry"
|
|
},
|
|
"navigation": {
|
|
"home": "Monitor",
|
|
"diary": "Diary",
|
|
"sensor": "Sensor",
|
|
"trip": "Trip",
|
|
"setting": "Settings",
|
|
"manager": "Manager",
|
|
"warning": "Warning"
|
|
},
|
|
"home": {
|
|
"welcome": "Welcome",
|
|
"noData": "No data available",
|
|
"gpsInfo": "GPS Information",
|
|
"tripActive": "Active Trip",
|
|
"latitude": "Latitude",
|
|
"longitude": "Longitude",
|
|
"speed": "Speed",
|
|
"speed_units": "knots",
|
|
"heading": "Heading",
|
|
"offline": "Offline",
|
|
"online": "Online",
|
|
"sos": {
|
|
"title": "Emergency Alert",
|
|
"active": "In Emergency State",
|
|
"inactive": "Emergency",
|
|
"description": "Emergency Notification",
|
|
"content": "Content:",
|
|
"selectReason": "Select reason",
|
|
"statusInput": "Enter status",
|
|
"enterStatus": "Describe emergency status",
|
|
"confirm": "Confirm",
|
|
"cancel": "Cancel",
|
|
"statusRequired": "Please enter status",
|
|
"sendError": "Unable to send SOS signal"
|
|
}
|
|
},
|
|
"diary": {
|
|
"title": "Trip Diary",
|
|
"filter": "Filter",
|
|
"addTrip": "Add Trip",
|
|
"tripList": "Trip List",
|
|
"tripListCount": "Trip List ({{count}})",
|
|
"noTripsFound": "No matching trips found",
|
|
"loadingMore": "Loading more...",
|
|
"reset": "Reset",
|
|
"apply": "Apply",
|
|
"selectedFilters": "Selected filters:",
|
|
"statusLabel": "Status:",
|
|
"fromLabel": "From:",
|
|
"toLabel": "To:",
|
|
"shipLabel": "Ship:",
|
|
"statusDropdown": {
|
|
"label": "Status",
|
|
"placeholder": "Please select",
|
|
"created": "Created",
|
|
"pending": "Pending Approval",
|
|
"approved": "Approved",
|
|
"active": "Active",
|
|
"completed": "Completed",
|
|
"cancelled": "Cancelled"
|
|
},
|
|
"shipDropdown": {
|
|
"label": "Ship",
|
|
"placeholder": "Select ship",
|
|
"allShips": "All ships",
|
|
"searchPlaceholder": "Search ship...",
|
|
"noShipsFound": "No matching ships found"
|
|
},
|
|
"dateRangePicker": {
|
|
"label": "Trip Date",
|
|
"startDate": "Start Date",
|
|
"endDate": "End Date",
|
|
"selectStartDate": "Select start date",
|
|
"selectEndDate": "Select end date",
|
|
"done": "Done"
|
|
},
|
|
"tripCard": {
|
|
"shipCode": "Ship Code",
|
|
"shipName": "Ship Name",
|
|
"departure": "Departure",
|
|
"return": "Return",
|
|
"view": "View",
|
|
"edit": "Edit",
|
|
"team": "Team",
|
|
"send": "Send",
|
|
"delete": "Delete"
|
|
},
|
|
"tripStatus": {
|
|
"created": "Not approved, creating",
|
|
"pending": "Pending approval",
|
|
"approved": "Approved",
|
|
"departed": "Departed",
|
|
"completed": "Completed",
|
|
"cancelled": "Cancelled"
|
|
},
|
|
"createTrip": "Create Trip",
|
|
"shipSelector": "Select Ship",
|
|
"selectShip": "Select ship",
|
|
"searchShip": "Search ship...",
|
|
"noShipsFound": "No ships found",
|
|
"tripNameLabel": "Trip Name",
|
|
"tripNamePlaceholder": "Enter trip name",
|
|
"fishingGearList": "Fishing Gear List",
|
|
"addFishingGear": "Add Fishing Gear",
|
|
"gearName": "Name",
|
|
"gearNamePlaceholder": "Name",
|
|
"gearNumber": "Quantity",
|
|
"gearNumberPlaceholder": "Quantity",
|
|
"quantity": "Quantity",
|
|
"materialCostList": "Material Costs",
|
|
"addMaterialCost": "Add Material",
|
|
"costType": "Type",
|
|
"selectType": "Select type",
|
|
"amount": "Amount",
|
|
"unit": "Unit",
|
|
"unitPlaceholder": "Unit",
|
|
"costPerUnit": "Cost",
|
|
"totalCost": "Total Cost",
|
|
"tripDuration": "Trip Duration",
|
|
"currentTime": "Current Time",
|
|
"startDate": "Departure",
|
|
"endDate": "Arrival",
|
|
"date": "Date",
|
|
"time": "Time",
|
|
"selectDate": "Select Date",
|
|
"selectStartDate": "Select departure date",
|
|
"selectEndDate": "Select arrival date",
|
|
"selectStartTime": "Select departure time",
|
|
"selectEndTime": "Select arrival time",
|
|
"portLabel": "Port",
|
|
"departurePort": "Departure Port",
|
|
"arrivalPort": "Arrival Port",
|
|
"selectPort": "Select port",
|
|
"searchPort": "Search port...",
|
|
"noPortsFound": "No ports found",
|
|
"fishingGroundCodes": "Fishing Ground Codes",
|
|
"fishingGroundCodesHint": "Enter fishing ground codes (comma separated)",
|
|
"fishingGroundCodesPlaceholder": "e.g: 1,2,3",
|
|
"formSection": {
|
|
"basicInfo": "Basic Information",
|
|
"schedule": "Schedule & Location",
|
|
"equipment": "Fishing Gear",
|
|
"costs": "Trip Costs"
|
|
},
|
|
"autoFill": {
|
|
"title": "Auto-fill data",
|
|
"description": "Fill from the ship's last trip",
|
|
"selectShip": "Select ship",
|
|
"modalTitle": "Select ship to get data",
|
|
"loading": "Loading data...",
|
|
"success": "Data filled from last trip",
|
|
"error": "Unable to fetch trip data",
|
|
"noData": "No previous trip data available"
|
|
},
|
|
"validation": {
|
|
"shipRequired": "Please select a ship before creating the trip",
|
|
"datesRequired": "Please select departure and arrival dates",
|
|
"tripNameRequired": "Please enter a trip name",
|
|
"startDateNotInPast": "Departure time cannot be in the past",
|
|
"endDateAfterStart": "Arrival time must be after departure time"
|
|
},
|
|
"createTripSuccess": "Trip created successfully!",
|
|
"createTripError": "Unable to create trip. Please try again.",
|
|
"tripAlreadyExistsError": "There is an ongoing trip that has not been completed. Please complete the current trip before creating a new one.",
|
|
"editTrip": "Edit Trip",
|
|
"viewTrip": "Trip Details",
|
|
"saveChanges": "Save Changes",
|
|
"updateTripSuccess": "Trip updated successfully!",
|
|
"updateTripError": "Unable to update trip. Please try again.",
|
|
"cancelTripConfirmTitle": "Cancel Request Confirmation",
|
|
"cancelTripConfirmMessage": "Are you sure you want to cancel the approval request? The trip will be reset to initial status.",
|
|
"cancelTripError": "Unable to cancel request. Please try again.",
|
|
"crew": {
|
|
"title": "Crew Members",
|
|
"loading": "Loading crew members...",
|
|
"fetchError": "Unable to load crew members. Please try again.",
|
|
"noCrewMembers": "No crew members in this trip yet",
|
|
"totalMembers": "Total: {{count}} members",
|
|
"member": "Crew Member",
|
|
"phone": "Phone",
|
|
"personalId": "ID Number",
|
|
"joinedAt": "Joined Date",
|
|
"leftAt": "Left Date",
|
|
"note": "Note",
|
|
"deleteConfirmTitle": "Delete Crew Member",
|
|
"deleteConfirmMessage": "Are you sure you want to remove {{name}} from this trip?",
|
|
"deleteSuccess": "Crew member removed successfully",
|
|
"roles": {
|
|
"captain": "Captain",
|
|
"crew": "Crew",
|
|
"engineer": "Engineer",
|
|
"cook": "Cook"
|
|
},
|
|
"form": {
|
|
"addTitle": "Add Crew Member",
|
|
"editTitle": "Edit Crew Member",
|
|
"name": "Full Name",
|
|
"namePlaceholder": "Enter full name",
|
|
"nameRequired": "Please enter name",
|
|
"personalIdPlaceholder": "Enter ID number",
|
|
"personalIdRequired": "Please enter ID number",
|
|
"phonePlaceholder": "Enter phone number",
|
|
"role": "Role",
|
|
"address": "Address",
|
|
"addressPlaceholder": "Enter address",
|
|
"notePlaceholder": "Enter note (optional)",
|
|
"saveError": "Unable to save. Please try again.",
|
|
"searchHint": "Enter ID number, system will auto-search",
|
|
"waitingSearch": "Waiting to search...",
|
|
"searching": "Searching...",
|
|
"crewFound": "Crew member found, data has been auto-filled",
|
|
"crewNotFound": "Crew member not found, please enter information to create new",
|
|
"crewAlreadyExists": "This crew member is already in the trip"
|
|
}
|
|
},
|
|
"tripDetail": {
|
|
"title": "Trip Details",
|
|
"notFound": "Trip information not found",
|
|
"basicInfo": "Basic Information",
|
|
"shipName": "Ship Name",
|
|
"shipCode": "Ship Code",
|
|
"departureTime": "Departure Time",
|
|
"arrivalTime": "Arrival Time",
|
|
"departurePort": "Departure Port",
|
|
"arrivalPort": "Arrival Port",
|
|
"fishingGrounds": "Fishing Grounds",
|
|
"alerts": "Alert List",
|
|
"noAlerts": "No alerts",
|
|
"unknownAlert": "Unknown alert",
|
|
"confirmed": "Confirmed",
|
|
"costs": "Trip Costs",
|
|
"noCosts": "No costs",
|
|
"unknownCost": "Unknown cost",
|
|
"totalCost": "Total Cost",
|
|
"gears": "Fishing Gear List",
|
|
"noGears": "No fishing gear",
|
|
"unknownGear": "Unknown gear",
|
|
"quantity": "Quantity",
|
|
"crew": "Crew List",
|
|
"noCrew": "No crew",
|
|
"unknownCrew": "Unknown crew member",
|
|
"roleCaptain": "Captain",
|
|
"roleCrew": "Crew",
|
|
"roleEngineer": "Engineer",
|
|
"fishingLogs": "Fishing Log List",
|
|
"noFishingLogs": "No fishing logs",
|
|
"startTime": "Start",
|
|
"endTime": "End",
|
|
"startLocation": "Start Location",
|
|
"haulLocation": "Haul Location",
|
|
"catchInfo": "Catch Info",
|
|
"species": "species",
|
|
"unknownFish": "Unknown fish",
|
|
"more": "more species",
|
|
"logStatusProcessing": "Processing",
|
|
"logStatusSuccess": "Complete",
|
|
"logStatusCancelled": "Cancelled",
|
|
"logStatusUnknown": "Unknown"
|
|
}
|
|
},
|
|
"trip": {
|
|
"infoTrip": "Trip Information",
|
|
"createNewTrip": "Create New Trip",
|
|
"endTrip": "End Trip",
|
|
"cancelTrip": "Cancel Trip",
|
|
"tripStatus": "Trip Status",
|
|
"tripDuration": "Trip Duration",
|
|
"distance": "Distance",
|
|
"speed": "Speed",
|
|
"startTime": "Start Time",
|
|
"endTime": "End Time",
|
|
"startTrip": "Start Trip",
|
|
"endHaul": "End Haul",
|
|
"startHaul": "Start Haul",
|
|
"endHaulConfirm": "Are you sure you want to end this haul?",
|
|
"endHaulTitle": "End Haul",
|
|
"startHaulConfirm": "Do you want to start a new haul?",
|
|
"startHaulTitle": "Start Haul",
|
|
"cancelButton": "Cancel",
|
|
"endButton": "End",
|
|
"startButton": "Start",
|
|
"successTitle": "Success",
|
|
"endHaulSuccess": "Haul ended successfully!",
|
|
"startHaulSuccess": "New haul started successfully!",
|
|
"startTripSuccess": "Trip started successfully!",
|
|
"alreadyStarted": "Trip has already been started or completed.",
|
|
"finishCurrentHaul": "Please finish the current haul before starting a new one",
|
|
"createHaulFailed": "Failed to create new haul!",
|
|
"weatherDescription": "Clear",
|
|
"costTable": {
|
|
"title": "Trip Cost",
|
|
"typeHeader": "Type",
|
|
"totalCostHeader": "Total Cost",
|
|
"totalLabel": "Total",
|
|
"viewDetail": "View Details"
|
|
},
|
|
"fishingTools": {
|
|
"title": "Fishing Tools List",
|
|
"nameHeader": "Name",
|
|
"quantityHeader": "Quantity",
|
|
"totalLabel": "Total"
|
|
},
|
|
"crewList": {
|
|
"title": "Crew List",
|
|
"nameHeader": "Name",
|
|
"roleHeader": "Role",
|
|
"totalLabel": "Total"
|
|
},
|
|
"netList": {
|
|
"title": "Haul List",
|
|
"sttHeader": "No.",
|
|
"statusHeader": "Status",
|
|
"completed": "Completed",
|
|
"pending": "Pending",
|
|
"haulPrefix": "Haul"
|
|
},
|
|
"createHaulModal": {
|
|
"title": "Catch Information",
|
|
"addSuccess": "Catch added successfully",
|
|
"addError": "Failed to add catch",
|
|
"updateSuccess": "Catch updated successfully",
|
|
"updateError": "Failed to update catch",
|
|
"fishName": "Fish Name",
|
|
"selectFish": "Select fish species",
|
|
"quantity": "Quantity",
|
|
"unit": "Unit",
|
|
"size": "Size",
|
|
"optional": "Optional",
|
|
"addFish": "Add Fish",
|
|
"save": "Save",
|
|
"cancel": "Cancel",
|
|
"edit": "Edit",
|
|
"done": "Done",
|
|
"fishListNotReady": "Fish species list not ready",
|
|
"gpsError": "Unable to get current GPS data",
|
|
"validationError": "Please add at least 1 fish species"
|
|
},
|
|
"crewDetailModal": {
|
|
"title": "Crew Information",
|
|
"personalId": "Personal ID",
|
|
"fullName": "Full Name",
|
|
"role": "Role",
|
|
"birthDate": "Date of Birth",
|
|
"phone": "Phone",
|
|
"address": "Address",
|
|
"joinedDate": "Joined Date",
|
|
"note": "Note",
|
|
"status": "Status",
|
|
"working": "Working",
|
|
"resigned": "Resigned",
|
|
"notUpdated": "Not updated"
|
|
},
|
|
"costDetailModal": {
|
|
"title": "Trip Cost Details",
|
|
"costType": "Cost Type",
|
|
"quantity": "Quantity",
|
|
"unit": "Unit",
|
|
"costPerUnit": "Cost Per Unit (VND)",
|
|
"totalCost": "Total Cost",
|
|
"total": "Total",
|
|
"edit": "Edit",
|
|
"save": "Save",
|
|
"cancel": "Cancel",
|
|
"enterCostType": "Enter cost type",
|
|
"placeholder": "e.g. kg, liters",
|
|
"vnd": "VND"
|
|
},
|
|
"buttonEndTrip": {
|
|
"title": "End",
|
|
"endTrip": "End Trip"
|
|
},
|
|
"buttonCancelTrip": {
|
|
"title": "Cancel Trip"
|
|
},
|
|
"infoSection": {
|
|
"sttLabel": "No.",
|
|
"haulPrefix": "Haul",
|
|
"statusLabel": "Status",
|
|
"statusCompleted": "Completed",
|
|
"statusPending": "Pending",
|
|
"startTimeLabel": "Start Time",
|
|
"endTimeLabel": "End Time",
|
|
"notUpdated": "Not updated"
|
|
}
|
|
},
|
|
"alarm": {
|
|
"title": "Alarm",
|
|
"noAlarm": "No alarm",
|
|
"warning": "Warning",
|
|
"danger": "Danger",
|
|
"critical": "Critical"
|
|
},
|
|
"auth": {
|
|
"login": "Login",
|
|
"logout": "Logout",
|
|
"username": "Username",
|
|
"username_placeholder": "Enter username",
|
|
"password": "Password",
|
|
"password_placeholder": "Enter password",
|
|
"loginError": "Login failed. Please try again.",
|
|
"sessionExpired": "Your session has expired. Please login again."
|
|
}
|
|
}
|