mirror of
https://github.com/Tria-plc/emaui.git
synced 2026-08-26 19:12:50 +00:00
- Split MedicalVerificationPage into MedicalVerificationPage and SeaServiceVerificationPage for better separation of concerns. - Update navigation to include separate entries for Sea Service Verification and Medical Verification. - Enhance sea service columns to display additional vessel information and days served. - Add translations for new and updated labels in both English and Amharic. - Introduce seaServiceDays helper function to calculate days served based on engagement and discharge dates. - Remove deprecated MedicalCertificatePage from the portal. - Update routing to direct to the new sea service and medical pages.
1235 lines
42 KiB
TypeScript
1235 lines
42 KiB
TypeScript
import { landingEn } from '@ema-platform/ui';
|
||
|
||
export const en = {
|
||
landing: landingEn,
|
||
|
||
app: {
|
||
name: 'EMA Portal',
|
||
authority: 'Ethiopian Maritime Authority',
|
||
tagline: 'Maritime licensing & certification services',
|
||
},
|
||
|
||
msg: {
|
||
genericError: 'Something went wrong. Please try again.',
|
||
serverError: 'Server error. Please try again later.',
|
||
validationError: 'Please check your input and try again.',
|
||
authError: 'Your session has expired. Please sign in again.',
|
||
permissionError: "You don't have permission to perform this action.",
|
||
notFoundError: 'The requested item was not found.',
|
||
fileTooLarge: 'The file is too large to upload.',
|
||
networkError: 'Network error. Check your connection and try again.',
|
||
},
|
||
|
||
language: {
|
||
label: 'Language',
|
||
en: 'English',
|
||
am: 'አማርኛ',
|
||
},
|
||
|
||
nav: {
|
||
groupLicensing: 'Licensing',
|
||
groupSeafarer: 'Seafarer Services',
|
||
groupVessels: 'Vessels',
|
||
groupExaminations: 'Examinations',
|
||
groupAdministration: 'Administration',
|
||
groupAccount: 'Account',
|
||
soon: 'Soon',
|
||
details: 'Details',
|
||
locations: 'Locations',
|
||
myApplications: 'My Applications',
|
||
dashboard: 'Dashboard',
|
||
seafarerRegistry: 'Seafarer Registry',
|
||
seafarerRegistration: 'Seafarer Registration',
|
||
exams: 'Examinations',
|
||
seaRecords: 'My Sea Records',
|
||
seaService: 'Sea Service',
|
||
medical: 'Medical Certificate',
|
||
myApplication: 'My Application',
|
||
vesselRegistration: 'Vessel Registration',
|
||
vesselRegistrationDashboard: 'Vessel Registration Dashboard',
|
||
ownershipTransfer: 'Ownership Transfer',
|
||
logisticsDashboard: 'Logistics Licenses Dashboard',
|
||
freightForwarderLicense: 'Freight Forwarder License',
|
||
shippingAgentLicense: 'Shipping Agent License',
|
||
combinedLicense: 'Combined License',
|
||
jointInvestmentLicense: 'Joint Investment License',
|
||
mtoLicense: 'MTO License',
|
||
waiver: 'Waiver',
|
||
certificates: 'Certificates',
|
||
seamanBook: 'SeamanBook and BTC',
|
||
btc: 'Basic Training Certificate',
|
||
endorsements: 'Endorsements',
|
||
vesselRegistrations: 'Vessel Registration',
|
||
vesselTransfers: 'Vessel Transfers',
|
||
documents: 'My Documents',
|
||
notifications: 'Notifications',
|
||
profile: 'Profile',
|
||
support: 'Help & Support',
|
||
collapseSidebar: 'Collapse',
|
||
expandSidebar: 'Expand sidebar',
|
||
sectionSeafarerServices: 'Seafarer Services',
|
||
sectionVesselServices: 'Vessel Services',
|
||
sectionLogisticsLicensing: 'Logistics and Licensing',
|
||
sectionAccountManagement: 'Account Management',
|
||
},
|
||
|
||
common: {
|
||
select: 'Select',
|
||
back: 'Back',
|
||
continue: 'Continue',
|
||
submit: 'Submit',
|
||
cancel: 'Cancel',
|
||
save: 'Save changes',
|
||
saved: 'Changes saved',
|
||
viewAll: 'View all',
|
||
viewDetails: 'View details',
|
||
search: 'Search',
|
||
download: 'Download',
|
||
print: 'Print',
|
||
filter: 'Filter',
|
||
all: 'All',
|
||
status: 'Status',
|
||
date: 'Date',
|
||
actions: 'Actions',
|
||
loading: 'Loading…',
|
||
none: 'None',
|
||
optional: 'optional',
|
||
required: 'Required',
|
||
of: 'of',
|
||
backToList: 'Back to list',
|
||
notFound: 'Not found',
|
||
learnMore: 'Learn more',
|
||
toggleTheme: 'Toggle light / dark mode',
|
||
welcome: 'Welcome',
|
||
switchCalendar: 'Switch calendar type',
|
||
time: 'Time',
|
||
},
|
||
|
||
auth: {
|
||
login: 'Log in',
|
||
logout: 'Log out',
|
||
signup: 'Sign up',
|
||
account: 'Account',
|
||
guest: 'Guest user',
|
||
},
|
||
|
||
dashboard: {
|
||
title: 'Dashboard',
|
||
quickActions: 'Quick actions',
|
||
loading: 'Loading dashboard…',
|
||
welcome: 'Welcome back',
|
||
welcomeName: 'Welcome back, {{name}}',
|
||
waitingOnYou: 'Waiting on you',
|
||
noFee: 'No fee',
|
||
hero: {
|
||
summaryEmpty: 'Apply for a maritime or logistics licence and track it through to issue.',
|
||
summary: 'You have {{applications}} and {{licences}}.',
|
||
applicationsCount_one: '{{count}} application',
|
||
applicationsCount_other: '{{count}} applications',
|
||
licencesCount_one: '{{count}} active licence',
|
||
licencesCount_other: '{{count}} active licences',
|
||
},
|
||
actionRequired: {
|
||
messages: {
|
||
resubmit: 'A reviewer asked for corrections before this can proceed.',
|
||
paymentPending: 'Approved — {{amount}} due before the certificate is issued.',
|
||
draft: 'This application is still a draft and has not been filed.',
|
||
},
|
||
cta: {
|
||
fixNow: 'Fix now',
|
||
payNow: 'Pay now',
|
||
},
|
||
},
|
||
expiringSoon: {
|
||
detail: '{{certificateNumber}} expires in {{days}} days',
|
||
},
|
||
stats: {
|
||
expiringSoon: 'Expiring soon',
|
||
},
|
||
sections: {
|
||
myLicences: {
|
||
title: 'My licences',
|
||
},
|
||
myApplications: {
|
||
title: 'My applications',
|
||
empty: 'You have not filed any applications yet. Pick a licence below to get started.',
|
||
},
|
||
apply: {
|
||
title: 'Apply for a licence',
|
||
description: 'Choose the licence that matches the service your company provides.',
|
||
},
|
||
},
|
||
getStarted: {
|
||
title: 'Get started',
|
||
body: 'You have not filed an application yet. Choose the licence that matches what your company does — your applications and the licences issued to you will appear here as you go.',
|
||
},
|
||
table: {
|
||
application: 'Application',
|
||
},
|
||
},
|
||
|
||
applications: {
|
||
title: 'Licence applications',
|
||
subtitle: 'Track everything you have filed with EMA.',
|
||
newApplication: 'New application',
|
||
tabs: {
|
||
applications: 'Applications',
|
||
licences: 'Licences',
|
||
apply: 'Apply',
|
||
},
|
||
stats: {
|
||
needsYou: 'Needs your action',
|
||
inProgress: 'In progress',
|
||
completed: 'Completed',
|
||
activeLicences: 'Active licences',
|
||
},
|
||
filters: {
|
||
search: 'Search',
|
||
searchPlaceholder: 'Number or applicant',
|
||
status: 'Status',
|
||
any: 'Any',
|
||
from: 'From',
|
||
to: 'To',
|
||
clear: 'Clear',
|
||
},
|
||
empty: {
|
||
noneTitle: 'You have not filed any applications yet',
|
||
noneBody: 'Pick a licence from the Apply tab to get started.',
|
||
noMatchTitle: 'No applications match these filters',
|
||
noMatchBody: 'Try widening or clearing the filters.',
|
||
clearFilters: 'Clear filters',
|
||
browse: 'Browse licences',
|
||
},
|
||
card: {
|
||
submitted: 'Submitted {{date}}',
|
||
notFiled: 'Not filed yet',
|
||
feeDue: 'Fee due',
|
||
},
|
||
table: {
|
||
licence: 'Licence',
|
||
applicant: 'Applicant',
|
||
progress: 'Progress',
|
||
applicationNumber: 'Application №',
|
||
},
|
||
actions: {
|
||
continue: 'Continue',
|
||
fixResubmit: 'Fix & resubmit',
|
||
pay: 'Pay {{amount}} {{currency}}',
|
||
certificate: 'Certificate',
|
||
view: 'View',
|
||
bypass: 'Bypass payment',
|
||
renew: 'Renew',
|
||
},
|
||
notice: {
|
||
paymentReceived:
|
||
'Your payment has been received. The certificate is being prepared and will appear under Licences once it is issued.',
|
||
expiringSoon_one: 'A licence is expiring soon',
|
||
expiringSoon_other: '{{count}} licences are expiring soon',
|
||
},
|
||
licences: {
|
||
empty: 'No licence has been issued to you yet. One appears here once an application is approved and paid.',
|
||
},
|
||
status: {
|
||
DRAFT: 'Draft',
|
||
SUBMITTED: 'Submitted',
|
||
UNDER_REVIEW: 'Under Review',
|
||
UNDER_EVALUATION: 'Under Evaluation',
|
||
RESUBMIT_REQUIRED: 'Resubmit Required',
|
||
INSPECTION_PENDING: 'Inspection Pending',
|
||
INSPECTION_COMPLETED: 'Inspection Completed',
|
||
APPROVED: 'Approved',
|
||
REJECTED: 'Rejected',
|
||
ON_HOLD: 'On Hold',
|
||
PAYMENT_PENDING: 'Payment Pending',
|
||
PAID: 'Paid',
|
||
PAYMENT_CONFIRMED: 'Preparing Certificate',
|
||
CERTIFICATE_ISSUED: 'Certificate Issued',
|
||
COMPLETED: 'Completed',
|
||
},
|
||
},
|
||
|
||
/** Field labels shared by the completeness nudge and the requirement gates. */
|
||
profileFields: {
|
||
firstName: 'First name',
|
||
middleName: 'Middle name',
|
||
lastName: 'Last name',
|
||
gender: 'Gender',
|
||
dob: 'Date of birth',
|
||
pob: 'Place of birth',
|
||
maritalStatus: 'Marital status',
|
||
professionId: 'Profession',
|
||
idType: 'ID type',
|
||
idNumber: 'ID number',
|
||
nationality: 'Nationality',
|
||
primaryPhoneNumber: 'Phone number',
|
||
email: 'Email address',
|
||
regionId: 'Region',
|
||
cityId: 'City',
|
||
subCityId: 'Sub-city',
|
||
woredaId: 'Woreda',
|
||
streetAddress: 'Street address',
|
||
emergencyContactName: 'Emergency contact name',
|
||
emergencyContactPhone: 'Emergency contact phone',
|
||
emergencyContactRelation: 'Emergency contact relationship',
|
||
},
|
||
|
||
profileNudge: {
|
||
title: 'Finish setting up your profile',
|
||
body: 'Still needed: {{fields}}',
|
||
andMore: 'and {{count}} more',
|
||
action: 'Complete profile',
|
||
dismiss: 'Dismiss',
|
||
},
|
||
|
||
profileGate: {
|
||
title_one: 'We need {{count}} more detail before you continue',
|
||
title_other: 'We need {{count}} more details before you continue',
|
||
addDetails: 'Add these details',
|
||
viewProfile: 'View full profile',
|
||
seafarerReason:
|
||
'Seafarer registration is built from your profile — these details fill it in for you.',
|
||
seafarerBanner:
|
||
'Seafarer registration asks for these details and updates your profile once approved. Filling them in here first saves you typing them there.',
|
||
checkingProfile: 'Checking seafarer profile…',
|
||
},
|
||
|
||
profileSections: {
|
||
personal: 'Personal',
|
||
address: 'Identity & Address',
|
||
emergency: 'Emergency Contact',
|
||
documents: 'Documents',
|
||
completeness: '{{value}}% complete',
|
||
saveSection: 'Save this section',
|
||
sectionSaved: 'Saved',
|
||
},
|
||
|
||
profile: {
|
||
title: 'My Profile',
|
||
subtitle: 'Manage your account details and preferences.',
|
||
personal: 'Personal information',
|
||
contact: 'Contact',
|
||
preferences: 'Preferences',
|
||
security: 'Security',
|
||
securityHint: 'Choose a strong password you do not use anywhere else.',
|
||
changePassword: 'Change password',
|
||
updatePassword: 'Update password',
|
||
updateProfile: 'Save changes',
|
||
savePreferences: 'Save preferences',
|
||
cancel: 'Cancel',
|
||
verified: 'Verified',
|
||
unverified: 'Unverified',
|
||
tabs: {
|
||
personal: 'Personal',
|
||
profile: 'Profile',
|
||
address: 'Address',
|
||
operations: 'Operations',
|
||
security: 'Security',
|
||
preferences: 'Preferences',
|
||
},
|
||
maritimeSection: {
|
||
title: 'Maritime Profile',
|
||
subtitle: 'Your professional maritime details',
|
||
noProfile: 'No profile found. Complete your profile setup first.',
|
||
save: 'Save Profile',
|
||
},
|
||
addressSection: {
|
||
title: 'Address & Contact',
|
||
subtitle: 'Your identity documents, contact details and emergency contact',
|
||
save: 'Save Address',
|
||
},
|
||
addressSaved: 'Address saved',
|
||
nameMismatch: 'Profile name must match the name in the Personal tab.',
|
||
languageFull: {
|
||
en: 'English (United States)',
|
||
am: 'Amharic',
|
||
},
|
||
personalHint: 'Your name as it appears on official EMA documents.',
|
||
languageTitle: 'Language',
|
||
languageHint: 'Choose the language used across the EMA portal.',
|
||
appearance: {
|
||
title: 'Appearance',
|
||
subtitle: 'Select how the portal looks on your device.',
|
||
light: 'Light',
|
||
dark: 'Dark',
|
||
system: 'System',
|
||
},
|
||
sessions: {
|
||
title: 'Active sessions',
|
||
hint: 'Devices currently signed in to your account. Revoke any you do not recognise.',
|
||
columns: {
|
||
device: 'IP address',
|
||
signedIn: 'Signed in',
|
||
expires: 'Expires',
|
||
status: 'Status',
|
||
actions: 'Actions',
|
||
},
|
||
select: 'Select',
|
||
selectAll: 'Select all sessions',
|
||
selectRow: 'Select session from {{device}}',
|
||
thisDevice: 'This device',
|
||
revoke: 'Revoke',
|
||
cannotRevokeCurrent: 'This is the session you are using now.',
|
||
revokeSelected_one: 'Revoke {{count}} selected',
|
||
revokeSelected_other: 'Revoke {{count}} selected',
|
||
signOutOthers: 'Sign out everywhere else',
|
||
empty: 'No active sessions.',
|
||
confirm: {
|
||
title: 'Revoke session',
|
||
one: 'The session from {{device}} will be signed out immediately.',
|
||
selected_one: '{{count}} session will be signed out immediately.',
|
||
selected_other: '{{count}} sessions will be signed out immediately.',
|
||
others: 'Every other session will be signed out immediately.',
|
||
unknownDevice: 'This may include the device you are using now.',
|
||
},
|
||
revoked_one: '{{count}} session revoked',
|
||
revoked_other: '{{count}} sessions revoked',
|
||
},
|
||
twoStep: {
|
||
title: 'Two-step verification',
|
||
desc: 'Require a one-time code from your phone each time you sign in.',
|
||
saved: 'Two-step verification updated',
|
||
},
|
||
notifications: {
|
||
title: 'Email notifications',
|
||
desc: 'Receive updates about your license applications and account activity by email.',
|
||
},
|
||
strength: {
|
||
label: 'Password strength',
|
||
weak: 'Weak',
|
||
fair: 'Fair',
|
||
good: 'Good',
|
||
strong: 'Strong',
|
||
},
|
||
profileUpdated: 'Profile updated successfully',
|
||
passwordChanged: 'Password changed successfully',
|
||
updateFailed: 'Could not update profile. Please try again.',
|
||
passwordFailed:
|
||
'Could not change password. Check your current password and try again.',
|
||
fields: {
|
||
fullNameEn: 'Full name (English)',
|
||
fullNameAm: 'Full name (Amharic)',
|
||
username: 'Username',
|
||
usernameHint: 'Username cannot be changed',
|
||
organization: 'Organization',
|
||
email: 'Email address',
|
||
phone: 'Phone number',
|
||
address: 'Address',
|
||
language: 'Preferred language',
|
||
currentPassword: 'Current password',
|
||
newPassword: 'New password',
|
||
confirmPassword: 'Confirm new password',
|
||
},
|
||
validation: {
|
||
nameRequired: 'Name is required',
|
||
emailInvalid: 'Enter a valid email',
|
||
usernameRequired: 'Username is required',
|
||
phoneRequired: 'Phone number is required',
|
||
passwordMin: 'Password must be at least 8 characters',
|
||
passwordMismatch: 'Passwords do not match',
|
||
},
|
||
},
|
||
|
||
profileForm: {
|
||
placeholders: {
|
||
firstName: 'Enter first name',
|
||
middleName: 'Enter middle name',
|
||
lastName: 'Enter last name',
|
||
pob: 'City, Region',
|
||
},
|
||
genders: {
|
||
MALE: 'Male',
|
||
FEMALE: 'Female',
|
||
},
|
||
maritalStatuses: {
|
||
SINGLE: 'Single',
|
||
MARRIED: 'Married',
|
||
DIVORCED: 'Divorced',
|
||
WIDOWED: 'Widowed',
|
||
},
|
||
validation: {
|
||
professionRequired: 'Select your profession',
|
||
firstNameMin: 'First name must be at least 3 characters',
|
||
middleNameMin: 'Middle name must be at least 3 characters',
|
||
lastNameMin: 'Last name must be at least 3 characters',
|
||
genderRequired: 'Select your gender',
|
||
dobRequired: 'Select your date of birth',
|
||
dobMinAge: 'You must be at least 18 years old',
|
||
maritalStatusRequired: 'Select your marital status',
|
||
nameParts: 'Enter your first, middle, and last name',
|
||
},
|
||
},
|
||
|
||
country: {
|
||
select: 'Select a country',
|
||
notFound: 'No countries found',
|
||
},
|
||
|
||
location: {
|
||
select: 'Select...',
|
||
noOptions: 'No options found',
|
||
noLocationsAvailable: 'No locations available',
|
||
chooseFirst: 'Choose a location first',
|
||
loading: 'Loading locations...',
|
||
loadFailed: 'Could not load locations',
|
||
},
|
||
|
||
support: {
|
||
title: 'Help & Support',
|
||
subtitle: 'Guidance, contact channels and answers to common questions.',
|
||
contact: 'Contact the Authority',
|
||
phone: 'Phone',
|
||
email: 'Email',
|
||
office: 'Head office',
|
||
officeValue: 'Addis Ababa, Ethiopia',
|
||
hours: 'Working hours',
|
||
hoursValue: 'Mon–Fri, 8:30 AM – 5:00 PM',
|
||
faq: 'Frequently asked questions',
|
||
faqs: {
|
||
q1: 'How long does licence processing take?',
|
||
a1: 'Most applications are reviewed within 5–15 working days, depending on the licence type and completeness of your documents.',
|
||
q2: 'What happens after I submit an application?',
|
||
a2: 'Your application is assigned to a licensing officer who verifies your documents. You can track every status change from the My Applications page.',
|
||
q3: 'How do I renew an expiring licence?',
|
||
a3: 'Open the licence from My Licences and choose Renew, or start a new application and select the Renewal request type.',
|
||
q4: 'What if EMA requests more information?',
|
||
a4: 'You will see an "Action required" notice on the application. Provide the requested document or detail to resume the review.',
|
||
},
|
||
},
|
||
|
||
waiver: {
|
||
title: 'Maritime Waiver',
|
||
subtitle: 'Apply for a waiver when Ethiopian Shipping & Logistics cannot carry your shipment. Approval issues the bank waiver letter.',
|
||
preWaiver: {
|
||
title: 'Pre-waiver',
|
||
body: 'The cargo has not yet arrived. Applying before arrival avoids the post-waiver penalty.',
|
||
apply: 'Apply for a pre-waiver',
|
||
},
|
||
postWaiver: {
|
||
title: 'Post-waiver',
|
||
body: 'The cargo has already arrived. Granted once per shipment, and only against a settled penalty with the receipt attached.',
|
||
apply: 'Apply for a post-waiver',
|
||
},
|
||
oneShipmentNotice: 'Each waiver covers one shipment, identified by its bill of lading. A second application quoting the same bill of lading is refused while the first is live.',
|
||
inProgress: 'Applications in progress',
|
||
issuedLetters: 'Issued waiver letters',
|
||
emptyLetters: 'No waiver letters issued yet.',
|
||
columns: {
|
||
reference: 'Reference',
|
||
kind: 'Kind',
|
||
issued: 'Issued',
|
||
status: 'Status',
|
||
},
|
||
letter: 'Letter',
|
||
fetchFailed: 'Could not fetch the letter',
|
||
licenseStatus: {
|
||
ACTIVE: 'Active',
|
||
EXPIRED: 'Expired',
|
||
SUSPENDED: 'Suspended',
|
||
CANCELLED: 'Cancelled',
|
||
SUPERSEDED: 'Superseded',
|
||
},
|
||
},
|
||
|
||
authShell: {
|
||
toggleTheme: 'Toggle theme',
|
||
brandTitle: 'Maritime licensing, made simple.',
|
||
brandSubtitle: 'Apply for vessel and seafarer licenses, upload documents, and track every application in one secure portal.',
|
||
feature1: 'Submit applications online, 24/7',
|
||
feature2: 'Real-time status tracking & alerts',
|
||
feature3: 'Available in English & አማርኛ',
|
||
copyright: '© 2026 Ethiopian Maritime Authority',
|
||
},
|
||
|
||
login: {
|
||
emailOrPhoneInvalid: 'Enter a valid email or phone number (+2519xxxxxxxx)',
|
||
passwordMinLength: 'Password must be at least 8 characters',
|
||
welcome: 'Welcome to {{appName}}',
|
||
subtitle: 'Sign in to access your account.',
|
||
emailOrPhoneLabel: 'Email or phone',
|
||
emailOrPhonePlaceholder: 'you@example.com',
|
||
passwordLabel: 'Password',
|
||
passwordPlaceholder: 'Your password',
|
||
rememberMe: 'Remember me',
|
||
forgotPassword: 'Forgot password?',
|
||
signIn: 'Sign in',
|
||
noAccount: "Don't have an account? ",
|
||
createOne: 'Create one',
|
||
},
|
||
|
||
signup: {
|
||
usernameMinLength: 'Username must be at least 3 characters',
|
||
nameEnRequired: 'Name (English) is required',
|
||
nameEnFullNameRequired: 'Please enter your full name (first, middle, and last)',
|
||
phoneRequired: 'Phone number is required',
|
||
confirmPasswordRequired: 'Confirm your password',
|
||
passwordsDontMatch: 'Passwords do not match',
|
||
brandTitle: "Join {{appName}}'s community.",
|
||
brandSubtitle: 'Create your account to access {{appName}} features.',
|
||
title: 'Create account',
|
||
subtitle: 'It only takes a minute to get started.',
|
||
nameEnLabel: 'Full name (English)',
|
||
nameEnPlaceholder: 'Abebe Bekele',
|
||
nameAmLabel: 'Name (Amharic)',
|
||
nameAmPlaceholder: 'ስም',
|
||
emailLabel: 'Email address',
|
||
emailPlaceholder: 'you@example.com',
|
||
usernameLabel: 'Username',
|
||
usernamePlaceholder: 'Choose a username',
|
||
phoneLabel: 'Phone number',
|
||
phonePlaceholder: '+251 911 234 567',
|
||
passwordLabel: 'Password',
|
||
passwordPlaceholder: 'At least 8 characters',
|
||
confirmPasswordLabel: 'Confirm password',
|
||
confirmPasswordPlaceholder: 'Re-enter password',
|
||
agreeToThe: 'I agree to the ',
|
||
termsAndPrivacy: 'Terms & Privacy Policy',
|
||
createAccount: 'Create account',
|
||
haveAccount: 'Already have an account? ',
|
||
signIn: 'Sign in',
|
||
passwordRule: {
|
||
minLength: 'At least {{min}} characters',
|
||
lowercase: 'One lowercase letter',
|
||
uppercase: 'One uppercase letter',
|
||
number: 'One number',
|
||
special: 'One special character',
|
||
},
|
||
},
|
||
|
||
errorBoundary: {
|
||
title: 'Something went wrong',
|
||
message: 'An unexpected error occurred.',
|
||
reload: 'Reload page',
|
||
},
|
||
featureUnavailable: {
|
||
documents: {
|
||
title: 'My documents',
|
||
description: 'A central document vault is not connected to the backend yet. Documents you upload with a licence application are stored with that application.',
|
||
},
|
||
medical: {
|
||
title: 'Medical certificate',
|
||
description: 'Medical certificates are not connected to the backend yet.',
|
||
},
|
||
basicSafetyTraining: {
|
||
title: 'Basic Safety Training',
|
||
description: 'BST records are not connected to the backend yet.',
|
||
},
|
||
seamanBook: {
|
||
title: 'Seaman Book',
|
||
description: 'Seaman Book applications are not connected to the backend yet.',
|
||
},
|
||
seamanBookApplication: {
|
||
title: 'Apply for a Seaman Book',
|
||
description: 'Seaman Book applications are not connected to the backend yet.',
|
||
},
|
||
},
|
||
|
||
notifications: {
|
||
title: 'Notifications',
|
||
unread_one: '{{count}} unread',
|
||
unread_other: '{{count}} unread',
|
||
allCaughtUp: 'You are all caught up',
|
||
tabs: {
|
||
all: 'All',
|
||
unseen: 'Unseen',
|
||
seen: 'Seen',
|
||
},
|
||
empty: {
|
||
all: 'No notifications yet.',
|
||
unseen: 'Nothing unread.',
|
||
seen: 'No read notifications.',
|
||
},
|
||
emptyBody: 'You will be notified as your applications progress.',
|
||
new: 'new',
|
||
markRead: 'Mark read',
|
||
loading: 'Loading Notifications…',
|
||
},
|
||
onboarding: {
|
||
checkingProfile: 'Checking operations profile…',
|
||
operations: {
|
||
title: 'What do you operate as?',
|
||
body: 'The Authority licenses by mode of operation. Tell us what your company does and we will show you the licences you can apply for — you can change this later from your profile.',
|
||
},
|
||
},
|
||
payments: {
|
||
myApplications: 'My applications',
|
||
fields: {
|
||
amount: 'Amount',
|
||
method: 'Method',
|
||
reference: 'Reference',
|
||
paid: 'Paid',
|
||
},
|
||
check: {
|
||
notFoundTitle: 'We could not identify this payment',
|
||
notFoundBody: 'Open the application from your list to check its payment status.',
|
||
stillConfirmingTitle: 'Still confirming your payment',
|
||
stillConfirmingBody: 'Telebirr has not confirmed this payment yet. If the money has left your account it will be applied automatically — there is no need to pay again.',
|
||
checkAgain: 'Check again',
|
||
confirmingTitle: 'Confirming your payment…',
|
||
confirmingBody: 'This usually takes a few seconds. Please do not close this page.',
|
||
},
|
||
failure: {
|
||
title: 'Payment not completed',
|
||
defaultReason: 'The payment was not completed. Nothing has been charged.',
|
||
unchanged: 'Your application is unchanged and you can try again at any time.',
|
||
},
|
||
success: {
|
||
title: 'Payment received',
|
||
body: 'Thank you. Your licence fee has been paid and your application is being finalised. You will be notified when your certificate is ready.',
|
||
backToApplications: 'Back to my applications',
|
||
},
|
||
},
|
||
|
||
profileAddress: {
|
||
secondaryPhoneNumber: 'Secondary Phone',
|
||
postalAddress: 'Postal Address',
|
||
addressSection: 'Address',
|
||
emergencyContactSection: 'Emergency Contact',
|
||
emergencyContactOptional: '(optional)',
|
||
contactName: 'Contact Name',
|
||
contactPhone: 'Contact Phone',
|
||
relationship: 'Relationship',
|
||
accountManagedHint: 'From your account, edit it in the Personal tab',
|
||
idTypePlaceholder: 'Select',
|
||
idNumberPlaceholder: 'Enter ID number',
|
||
phonePlaceholder: '+251 9XX XXX XXX',
|
||
streetAddressPlaceholder: 'Street name, house number',
|
||
postalAddressPlaceholder: 'P.O. Box',
|
||
contactNamePlaceholder: 'Full name',
|
||
relationshipPlaceholder: 'Spouse, Parent, etc.',
|
||
idTypeOptions: {
|
||
NID: 'National Id',
|
||
VITAL: 'Vital ID',
|
||
PASSPORT: 'Passport',
|
||
DRIVERS_LICENSE: "Driver's License",
|
||
},
|
||
validation: {
|
||
idTypeRequired: 'Select ID type',
|
||
idNumberRequired: 'Enter ID number',
|
||
nationalityRequired: 'Select nationality',
|
||
emailInvalid: 'Invalid email',
|
||
},
|
||
},
|
||
|
||
profileOperations: {
|
||
title: 'Mode of operation',
|
||
description: 'What your company operates as. This decides which licences you are offered — you can change it whenever your business changes.',
|
||
current: 'Current',
|
||
emptyState: 'No licence types are configured yet. Contact EMA if you were expecting one.',
|
||
noneSelectedTitle: 'No operations selected',
|
||
noneSelectedBody: 'With none selected you will not be offered any licence to apply for. Existing applications and issued licences are unaffected.',
|
||
lastChanged: 'Last changed {{date}}',
|
||
notSetYet: 'Not set yet',
|
||
discardChanges: 'Discard changes',
|
||
saveOperations: 'Save operations',
|
||
removeModalTitle: 'Remove from your operations?',
|
||
removingPrefix: 'You are removing',
|
||
removeConsequence: 'You will no longer be offered a new application of that type. Applications already filed carry on as they are, and licences already issued to you stay valid and can still be renewed.',
|
||
removeAndSave: 'Remove and save',
|
||
updateSuccessTitle: 'Operations updated',
|
||
updateSuccessBody: 'The licences you can apply for have been updated to match.',
|
||
updateErrorTitle: 'Could not save',
|
||
},
|
||
|
||
licensing: {
|
||
vesselPicker: {
|
||
placeholder: 'Select a registered vessel',
|
||
},
|
||
msg: {
|
||
fileTooLarge: 'File exceeds 5MB limit ({{size}}).',
|
||
},
|
||
documents: {
|
||
conditional: 'conditional',
|
||
uploaded: 'uploaded',
|
||
officerRemark: 'Officer: {{name}}',
|
||
view: 'View',
|
||
replace: 'Replace',
|
||
upload: 'Upload',
|
||
},
|
||
card: {
|
||
fallbackName: 'Licence',
|
||
expired: 'Expired',
|
||
expiredOn: 'Expired on {{date}}',
|
||
validUntil: 'Valid until {{date}}',
|
||
downloadCertificate: 'Download certificate',
|
||
renewExpired: 'Renew — this licence has expired',
|
||
renewDays_one: 'Renew — expires in {{count}} day',
|
||
renewDays_other: 'Renew — expires in {{count}} days',
|
||
renewFailed: 'Could not start the renewal',
|
||
},
|
||
catalogue: {
|
||
emptyTitle: 'Tell us what you operate as',
|
||
emptyBody:
|
||
'Licences are offered against your mode of operation — freight forwarder, shipping agent, multimodal transport operator and so on. Choose yours and the licences you can apply for appear here.',
|
||
setOperations: 'Set my operations',
|
||
browseAll: 'Browse all licences',
|
||
showOnlyMine: 'Show only mine',
|
||
noneAvailable: 'No licence types are available yet. Contact EMA if you were expecting one.',
|
||
showingAll: 'Showing every licence, including ones outside your operations.',
|
||
showingMine: 'Only licences matching your declared operations are shown.',
|
||
otherLicences: 'Other licences',
|
||
otherLicencesDescription: 'Licence types that have not been assigned a category.',
|
||
noFee: 'No fee',
|
||
capitalTooltip: 'Minimum capital that must be evidenced by a bank letter',
|
||
capitalBadge: 'Capital {{amount}}',
|
||
validityBadge: '{{months}} months',
|
||
evaluationTooltip: 'Concludes with an EMA decision rather than a certificate',
|
||
evaluationOnly: 'Evaluation only',
|
||
startApplication: 'Start application',
|
||
addToOperations: 'Add to my operations',
|
||
},
|
||
},
|
||
|
||
certificates: {
|
||
title: 'My Certificates',
|
||
loading: 'Loading Certificates…',
|
||
fetchFailed: 'Could not fetch certificate',
|
||
eligibility: {
|
||
title: 'Eligibility',
|
||
registered: 'Registered seafarer ({{number}})',
|
||
registrationRequired: 'Active seafarer registration required',
|
||
medicalCurrent: 'Current medical certificate on file',
|
||
medicalRequired: 'A current medical certificate is required',
|
||
seaTime: 'Verified sea time: {{days}} days (CoC needs 360, CoP 90)',
|
||
},
|
||
applyCoc: 'Apply for CoC',
|
||
applyCop: 'Apply for CoP',
|
||
registrationNotice: {
|
||
prefix: 'Complete your',
|
||
link: 'seafarer registration',
|
||
suffix: 'first — certificate applications are refused without it.',
|
||
},
|
||
inProgress: 'Applications in progress',
|
||
issuedCertificates: 'Issued certificates',
|
||
emptyIssued: 'No certificates issued yet.',
|
||
columns: {
|
||
certificateNumber: 'Certificate №',
|
||
type: 'Type',
|
||
issued: 'Issued',
|
||
expires: 'Expires',
|
||
licenseStatus: {
|
||
ACTIVE: 'Active',
|
||
EXPIRED: 'Expired',
|
||
SUSPENDED: 'Suspended',
|
||
CANCELLED: 'Cancelled',
|
||
SUPERSEDED: 'Superseded',
|
||
},
|
||
},
|
||
},
|
||
|
||
licenseApplication: {
|
||
loading: 'Loading Application…',
|
||
fee: 'Fee: {{amount}} {{currency}}',
|
||
review: 'Review',
|
||
resubmitCorrections: 'Resubmit corrections',
|
||
submitApplication: 'Submit application',
|
||
sectionLocked: 'This section was accepted and is locked for this round.',
|
||
correctionsRequested: {
|
||
title: 'Corrections requested',
|
||
onlyListed: 'Only the items listed above can be changed.',
|
||
},
|
||
stillMissing: {
|
||
title: 'Still missing',
|
||
},
|
||
staff: {
|
||
addStaffMember: 'Add staff member',
|
||
fullName: 'Full name',
|
||
position: 'Position',
|
||
yearsOfExperience: 'Years of experience',
|
||
add: 'Add',
|
||
complete: 'complete',
|
||
requiredCount: '{{count}} of {{min}} required',
|
||
eachNeeds: '· each needs {{items}}',
|
||
yearsSuffix: '· {{count}} yrs',
|
||
},
|
||
notifications: {
|
||
startFailed: {
|
||
title: 'Could not start application',
|
||
},
|
||
saveFailed: {
|
||
title: 'Could not save',
|
||
},
|
||
incomplete: {
|
||
title: 'Incomplete',
|
||
message: 'Complete the highlighted fields before submitting.',
|
||
},
|
||
incompleteFields_one: 'Complete {{count}} required field to continue.',
|
||
incompleteFields_other: 'Complete {{count}} required fields to continue.',
|
||
resubmitted: {
|
||
title: 'Resubmitted',
|
||
message: 'Your corrections were sent back to the reviewing officer.',
|
||
},
|
||
submitted: {
|
||
title: 'Application submitted',
|
||
message: 'You will be notified as it progresses.',
|
||
},
|
||
applicationIncomplete: {
|
||
title: 'Application incomplete',
|
||
itemsNeedAttention_one: '{{count}} item still needs attention.',
|
||
itemsNeedAttention_other: '{{count}} items still need attention.',
|
||
},
|
||
staffIncomplete: {
|
||
title: 'Staff incomplete',
|
||
message: 'Still needed: {{items}}.',
|
||
roleRequired: '{{name}} ({{count}} required)',
|
||
},
|
||
documentsMissing: {
|
||
title: 'Documents missing',
|
||
message: 'Upload: {{items}}.',
|
||
andMore: 'and {{count}} more',
|
||
},
|
||
},
|
||
},
|
||
|
||
exams: {
|
||
title: 'Examinations',
|
||
openSessions: 'Open sessions',
|
||
noOpenSessions: 'No upcoming sessions are open for registration.',
|
||
registered: 'Registered',
|
||
register: 'Register',
|
||
myRegistrations: 'My registrations',
|
||
myResults: 'My results',
|
||
noRegistrations: 'No exam registrations yet.',
|
||
noResults:
|
||
'No results have been published yet. Marks appear here once the authority approves and publishes them.',
|
||
loading: 'Loading Exam Schedule…',
|
||
notify: {
|
||
registered: 'Registered — admission number {{admissionNumber}}',
|
||
admissionNumberPending: 'issued',
|
||
registerFailed: 'Could not register',
|
||
seafarerRequired:
|
||
'An active seafarer registration is required to sit examinations.',
|
||
alreadyRegistered: 'You are already registered for this session.',
|
||
alreadyPassed:
|
||
'You have already passed this subject — a resit is not needed.',
|
||
slipFailed: 'Could not generate the admission slip',
|
||
appealSubmitted: 'Appeal {{appealNumber}} submitted',
|
||
appealFailed: 'Could not submit the appeal',
|
||
appealWindowClosed:
|
||
'The appeal window ({{days}} days from publication) has closed.',
|
||
appealAlreadyOpen: 'An appeal on this result is already being considered.',
|
||
},
|
||
appealModal: {
|
||
title: 'Request a review of this result',
|
||
body: 'Explain what you believe went wrong with the marking or the administration of {{examTitle}}. Appeals must be lodged within 14 days of publication.',
|
||
defaultExamTitle: 'this examination',
|
||
reasonLabel: 'Grounds for appeal',
|
||
submit: 'Submit appeal',
|
||
},
|
||
columns: {
|
||
admission: 'Admission №',
|
||
examination: 'Examination',
|
||
date: 'Date',
|
||
venue: 'Venue',
|
||
attempt: 'Attempt',
|
||
attendance: 'Attendance',
|
||
slip: 'Slip',
|
||
published: 'Published',
|
||
score: 'Score',
|
||
outcome: 'Outcome',
|
||
appeal: 'Appeal',
|
||
retake: 'Retake · {{n}}',
|
||
firstSitting: 'First sitting',
|
||
attendanceStatus: {
|
||
REGISTERED: 'Not called',
|
||
PRESENT: 'Present',
|
||
ABSENT: 'Absent',
|
||
LATE: 'Late',
|
||
WITHDRAWN: 'Withdrawn',
|
||
DISQUALIFIED: 'Disqualified',
|
||
},
|
||
outcomeStatus: {
|
||
PASSED: 'Passed',
|
||
FAILED: 'Failed',
|
||
},
|
||
appealStatus: {
|
||
SUBMITTED: 'Submitted',
|
||
UNDER_REVIEW: 'Under review',
|
||
UPHELD: 'Upheld',
|
||
REJECTED: 'Rejected',
|
||
},
|
||
},
|
||
},
|
||
|
||
endorsement: {
|
||
title: 'My Endorsements',
|
||
loading: 'Loading Endorsements…',
|
||
fetchFailed: 'Could not fetch endorsement',
|
||
eligibility: {
|
||
title: 'Eligibility',
|
||
registered: 'Registered seafarer ({{number}})',
|
||
registrationRequired: 'Active seafarer registration required',
|
||
},
|
||
endorseCoc: 'Endorse a CoC',
|
||
endorseGoc: 'Endorse a GOC',
|
||
registrationNotice: {
|
||
prefix: 'Complete your',
|
||
link: 'seafarer registration',
|
||
suffix: 'first — endorsement applications are refused without it.',
|
||
},
|
||
inProgress: 'Applications in progress',
|
||
issuedEndorsements: 'Issued endorsements',
|
||
emptyIssued: 'No endorsements issued yet.',
|
||
columns: {
|
||
certificateNumber: 'Certificate №',
|
||
type: 'Type',
|
||
issued: 'Issued',
|
||
expires: 'Expires',
|
||
licenseStatus: {
|
||
ACTIVE: 'Active',
|
||
EXPIRED: 'Expired',
|
||
SUSPENDED: 'Suspended',
|
||
CANCELLED: 'Cancelled',
|
||
SUPERSEDED: 'Superseded',
|
||
},
|
||
},
|
||
},
|
||
|
||
seafarer: {
|
||
title: 'Seafarer Registration',
|
||
status: {
|
||
ACTIVE: 'Active',
|
||
PENDING: 'Pending',
|
||
SUSPENDED: 'Suspended',
|
||
INACTIVE: 'Inactive',
|
||
},
|
||
departments: {
|
||
DECK: 'Deck',
|
||
ENGINE: 'Engine',
|
||
CATERING: 'Catering',
|
||
},
|
||
registered: {
|
||
badgeTitle: 'Registered Seafarer',
|
||
badgeSubtitle: 'Your official seafarer profile with the Ethiopian Maritime Authority.',
|
||
seafarerNumber: 'Seafarer Number',
|
||
department: 'Department',
|
||
suspendedAlert: 'Your profile is suspended: {{reason}}',
|
||
recordsTitle: 'Sea service & medical records',
|
||
recordsSubtitle: 'Keep your sea-service history and medical certificates up to date — certificate and seaman-book applications draw on them.',
|
||
myRecords: 'My records',
|
||
},
|
||
inFlight: {
|
||
subtitle: 'Submitted registrations are reviewed by an EMA registration officer; you will be notified of every decision.',
|
||
needsAction: 'The registration officer asked for corrections. Open the application to see exactly what needs fixing.',
|
||
continueRegistration: 'Continue registration',
|
||
fixAndResubmit: 'Fix and resubmit',
|
||
viewApplication: 'View application',
|
||
},
|
||
notStarted: {
|
||
rejectedTitle: 'Previous registration rejected',
|
||
rejectedDefault: 'Your previous registration was rejected. You may register again.',
|
||
heading: 'Register as a seafarer',
|
||
body: 'Approval creates your official seafarer profile with a unique seafarer number — the identity every maritime service builds on.',
|
||
needsTitle: 'You will need:',
|
||
checklist: {
|
||
photo: 'A passport-size photograph',
|
||
id: 'Your National ID (Fayda) or Kebele ID',
|
||
certificate: 'Your educational certificate',
|
||
medical: 'A medical fitness certificate and passport, if you already hold them',
|
||
},
|
||
start: 'Start registration',
|
||
},
|
||
},
|
||
|
||
seaRecords: {
|
||
title: 'My Sea Records',
|
||
pageIntro: 'Records you add here are submitted for EMA verification. Once verified they are frozen and count toward certificate eligibility.',
|
||
tabs: {
|
||
seaService: 'Sea Service',
|
||
medical: 'Medical Certificates',
|
||
},
|
||
evidence: {
|
||
title: 'Evidence',
|
||
none: 'No evidence uploaded yet.',
|
||
upload: 'Upload evidence',
|
||
uploaded: 'Evidence uploaded',
|
||
},
|
||
seaService: {
|
||
description: 'Every engagement aboard a vessel, with its evidence. Verified records feed certificate eligibility.',
|
||
approvedSeaTime: 'Approved sea time: {{days}} days',
|
||
add: 'Add sea service',
|
||
empty: 'No sea-service records yet.',
|
||
tableName: 'Sea service',
|
||
modal: {
|
||
editTitle: 'Edit sea service',
|
||
addTitle: 'Add sea service',
|
||
},
|
||
fields: {
|
||
vesselName: 'Vessel name',
|
||
imoNumber: 'IMO number',
|
||
vesselType: 'Vessel type',
|
||
flagState: 'Flag state',
|
||
grossTonnage: 'Gross tonnage',
|
||
rank: 'Rank / capacity',
|
||
engagementDate: 'Engagement date',
|
||
dischargeDate: 'Discharge date',
|
||
duties: 'Duties',
|
||
},
|
||
addRecord: 'Add record',
|
||
updated: 'Sea-service record updated',
|
||
added: 'Sea-service record added',
|
||
saveFailed: 'Could not save the record',
|
||
withdrawn: 'Record withdrawn',
|
||
deleteFailed: 'Could not delete the record',
|
||
},
|
||
medical: {
|
||
description: 'STCW medical fitness certificates. An expired certificate blocks new applications that require one.',
|
||
add: 'Add certificate',
|
||
empty: 'No medical certificates yet.',
|
||
tableName: 'Medical certificates',
|
||
modal: {
|
||
editTitle: 'Edit medical certificate',
|
||
addTitle: 'Add medical certificate',
|
||
},
|
||
fields: {
|
||
issuerName: 'Issuing clinic / physician',
|
||
certificateNumber: 'Certificate number',
|
||
issueDate: 'Issue date',
|
||
expiryDate: 'Expiry date',
|
||
fitnessOutcome: 'Fitness outcome',
|
||
restrictions: 'Restrictions',
|
||
},
|
||
updated: 'Medical certificate updated',
|
||
added: 'Medical certificate added',
|
||
saveFailed: 'Could not save the certificate',
|
||
withdrawn: 'Certificate withdrawn',
|
||
deleteFailed: 'Could not delete the certificate',
|
||
},
|
||
columns: {
|
||
vessel: 'Vessel',
|
||
imo: 'IMO {{number}}',
|
||
rank: 'Rank',
|
||
from: 'From',
|
||
to: 'To',
|
||
issuer: 'Issuer',
|
||
certNumber: '№ {{number}}',
|
||
issued: 'Issued',
|
||
expires: 'Expires',
|
||
expired: 'Expired',
|
||
fitness: 'Fitness',
|
||
fitnessOptions: {
|
||
FIT: 'Fit',
|
||
FIT_WITH_RESTRICTIONS: 'Fit with restrictions',
|
||
UNFIT: 'Unfit',
|
||
},
|
||
recordStatus: {
|
||
SUBMITTED: 'Submitted',
|
||
VERIFIED: 'Verified',
|
||
REJECTED: 'Rejected',
|
||
},
|
||
},
|
||
actions: {
|
||
evidence: 'Evidence',
|
||
scanEvidence: 'Scan / evidence',
|
||
edit: 'Edit',
|
||
delete: 'Delete',
|
||
frozen: 'Verified records are frozen',
|
||
certificatesFrozen: 'Verified certificates are frozen',
|
||
},
|
||
},
|
||
|
||
vesselRegistration: {
|
||
title: 'Vessel Registration',
|
||
registerButton: 'Register a vessel',
|
||
suspendedAlert:
|
||
'A suspended vessel may not operate. Contact the Ethiopian Maritime Authority about reinstatement.',
|
||
inFlight: {
|
||
title: 'Registrations in progress',
|
||
renewalBadge: 'Renewal',
|
||
fix: 'Fix',
|
||
view: 'View',
|
||
},
|
||
myVessels: {
|
||
title: 'My vessels',
|
||
empty: {
|
||
title: 'No registered vessels yet',
|
||
body: 'Register an inland-waterway or sea-going vessel. Approval issues the registration certificate and enters the vessel in the national register.',
|
||
cta: 'Start registration',
|
||
},
|
||
},
|
||
notify: {
|
||
comingSoon: 'Amendment and duplicate-certificate services are coming in a later release.',
|
||
},
|
||
incident: {
|
||
modalTitle: 'Report incident — {{vesselName}}',
|
||
dateLabel: 'Date of occurrence',
|
||
locationLabel: 'Location',
|
||
descriptionLabel: 'What happened',
|
||
submit: 'Record incident',
|
||
recorded: 'Incident recorded',
|
||
recordFailed: 'Could not record the incident',
|
||
},
|
||
certificate: {
|
||
fetchFailed: 'Could not fetch the certificate',
|
||
},
|
||
renewal: {
|
||
startFailed: 'Could not start the renewal',
|
||
},
|
||
columns: {
|
||
registrationNumber: 'Registration №',
|
||
vessel: 'Vessel',
|
||
category: 'Category',
|
||
certificate: 'Certificate',
|
||
expiresIn: 'Expires in {{count}}d',
|
||
renew: 'Renew',
|
||
renewTooltip: 'Renew the registration',
|
||
certificateTooltip: 'Download certificate',
|
||
incident: 'Incident',
|
||
incidentTooltip: 'Report accident / incident',
|
||
categories: {
|
||
INLAND_WATERWAY: 'Inland Waterway',
|
||
SEA_GOING: 'Sea-going',
|
||
},
|
||
},
|
||
status: {
|
||
notFound: 'Registration not found.',
|
||
title: 'Registration Status',
|
||
submitted: 'Submitted {{date}}',
|
||
officerRemarks: 'Officer Remarks',
|
||
pending: 'Pending',
|
||
resubmit: 'Resubmit Application',
|
||
certificatesTitle: 'Certificates',
|
||
certificateNumber: 'Certificate No. {{number}} — Issued {{date}}',
|
||
downloadedCount_one: 'Downloaded {{count}} time',
|
||
downloadedCount_other: 'Downloaded {{count}} times',
|
||
downloadedNotify: '{{certName}} downloaded.',
|
||
renewalOverdue: 'Registration is overdue for renewal.',
|
||
renewalOverdueWithExpiry: 'Registration is overdue for renewal — expires {{date}}.',
|
||
renewalDueSoon: 'Registration is due for renewal soon.',
|
||
renewalDueSoonWithExpiry: 'Registration is due for renewal soon — expires {{date}}.',
|
||
},
|
||
},
|
||
|
||
vesselTransfer: {
|
||
title: 'Ownership Transfer',
|
||
startTransfer: 'Start transfer',
|
||
startTransferDisabledTooltip: "Register a vessel first — there's nothing to transfer yet",
|
||
inFlight: {
|
||
title: 'Transfers in progress',
|
||
fix: 'Fix',
|
||
view: 'View',
|
||
},
|
||
myVessels: {
|
||
title: 'My vessels',
|
||
empty: {
|
||
title: 'No registered vessels yet',
|
||
body: 'Ownership can only be transferred for a vessel already on the register.',
|
||
cta: 'Go to Vessel Registration',
|
||
},
|
||
},
|
||
table: {
|
||
registrationNumber: 'Registration №',
|
||
vessel: 'Vessel',
|
||
category: 'Category',
|
||
transfer: 'Transfer',
|
||
transferTooltip: 'Start an ownership transfer for this vessel',
|
||
notTransferable: 'Not transferable',
|
||
categories: {
|
||
INLAND_WATERWAY: 'Inland Waterway',
|
||
SEA_GOING: 'Sea-going',
|
||
},
|
||
},
|
||
},
|
||
};
|
||
|
||
export type Translations = typeof en;
|