358 lines
12 KiB
TypeScript
358 lines
12 KiB
TypeScript
export default {
|
||
common: {
|
||
cancel: 'Cancel',
|
||
delete: 'Delete',
|
||
retry: 'Retry',
|
||
optional: '(optional)',
|
||
all: 'All',
|
||
seeAll: 'See all',
|
||
tryAgain: 'Please try again.',
|
||
loading: 'Loading…',
|
||
},
|
||
|
||
tabs: {
|
||
home: 'Home',
|
||
search: 'Search',
|
||
profile: 'Profile',
|
||
upload: 'Upload',
|
||
scan: 'Scan',
|
||
expiring: 'Expiring',
|
||
},
|
||
|
||
expiring: {
|
||
title: 'Expiring',
|
||
subtitle: { one: '%{count} document needs attention', other: '%{count} documents need attention' },
|
||
emptyTitle: 'Nothing expiring',
|
||
emptySubtitle: 'All your documents are up to date.',
|
||
},
|
||
|
||
login: {
|
||
tagline: 'Every property document, organized and always within reach.',
|
||
email: 'Email',
|
||
emailPlaceholder: 'you@example.com',
|
||
password: 'Password',
|
||
passwordPlaceholder: 'Your password',
|
||
show: 'Show',
|
||
hide: 'Hide',
|
||
signIn: 'Sign in',
|
||
missingFields: 'Enter your email and password.',
|
||
failed: 'Sign in failed. Check your credentials.',
|
||
demoHint: 'Demo mode — any credentials sign you in.',
|
||
forgot: 'Forgot your password?',
|
||
noAccount: 'No account yet?',
|
||
trust: 'Encrypted connection · secure cloud storage',
|
||
},
|
||
|
||
register: {
|
||
title: 'Create your account',
|
||
subtitle: 'One place for every document of every property you own.',
|
||
firstName: 'First name',
|
||
lastName: 'Last name',
|
||
passwordHint: 'At least %{count} characters',
|
||
submit: 'Create account',
|
||
haveAccount: 'Already have an account?',
|
||
badEmail: 'Enter a valid email address.',
|
||
shortPassword: 'The password must be at least %{count} characters.',
|
||
emailTaken: 'That email is already registered. Try signing in instead.',
|
||
},
|
||
|
||
verify: {
|
||
title: 'Check your email',
|
||
subtitle: 'We sent a 6-digit code to %{email}. Enter it below to finish.',
|
||
code: 'Verification code',
|
||
submit: 'Confirm',
|
||
resend: 'Send a new code',
|
||
resendIn: 'You can request a new code in %{count}s',
|
||
invalid: 'That code is not right. Check it and try again.',
|
||
expired: 'That code has expired. Request a new one.',
|
||
},
|
||
|
||
forgot: {
|
||
title: 'Reset your password',
|
||
subtitle: 'Enter your email and we will send you a code to set a new password.',
|
||
submit: 'Send code',
|
||
},
|
||
|
||
reset: {
|
||
title: 'Set a new password',
|
||
newPassword: 'New password',
|
||
submit: 'Save password',
|
||
doneTitle: 'Password changed',
|
||
doneBody: 'You have been signed out everywhere. Sign in with the new password.',
|
||
},
|
||
|
||
editProfile: {
|
||
title: 'Personal details',
|
||
save: 'Save changes',
|
||
phone: 'Phone',
|
||
address: 'Address',
|
||
emailReadOnly: 'Email cannot be changed here — contact support if you need to.',
|
||
failed: 'Could not save your details',
|
||
photo: 'Change photo',
|
||
},
|
||
|
||
changePassword: {
|
||
title: 'Change password',
|
||
current: 'Current password',
|
||
next: 'New password',
|
||
submit: 'Change password',
|
||
wrongCurrent: 'That is not your current password.',
|
||
doneTitle: 'Password changed',
|
||
doneBody: 'Other devices have been signed out.',
|
||
failed: 'Could not change the password',
|
||
},
|
||
|
||
properties: {
|
||
title: 'My Properties',
|
||
count: { one: '%{count} property', other: '%{count} properties' },
|
||
loading: 'Loading properties…',
|
||
loadError: "Couldn't load properties",
|
||
searchPlaceholder: 'Search documents by name or category…',
|
||
add: 'Add property',
|
||
emptyTitle: 'No properties yet',
|
||
emptySubtitle: 'Add your first property to start organizing its documents.',
|
||
docCount: { one: '%{count} document', other: '%{count} documents' },
|
||
expiringCount: '%{count} expiring',
|
||
allValid: 'All valid',
|
||
counting: 'Counting documents…',
|
||
noPhoto: 'No photo',
|
||
},
|
||
|
||
property: {
|
||
fallbackTitle: 'Property',
|
||
addDocument: 'Add document',
|
||
needAttention: {
|
||
one: '%{count} document needs attention',
|
||
other: '%{count} documents need attention',
|
||
},
|
||
categories: 'Categories',
|
||
folders: { one: '%{count} folder', other: '%{count} folders' },
|
||
noDocuments: 'No documents yet. Tap “Add document” to start.',
|
||
recent: 'Recent documents',
|
||
addAddress: 'Add an address',
|
||
noRecent: 'Recently uploaded documents will show up here.',
|
||
},
|
||
|
||
addProperty: {
|
||
title: 'Add property',
|
||
name: 'Property name',
|
||
namePlaceholder: 'e.g. Villa Bellavista',
|
||
type: 'Type',
|
||
address: 'Address',
|
||
addressPlaceholder: 'Street, number',
|
||
zip: 'ZIP',
|
||
city: 'City',
|
||
description: 'Description',
|
||
descriptionPlaceholder: 'Notes about this property…',
|
||
save: 'Save property',
|
||
nameRequired: 'Name required',
|
||
nameRequiredBody: 'Give the property a name.',
|
||
saveFailed: 'Could not save',
|
||
addPhoto: 'Add cover photo',
|
||
photoSourceTitle: 'Property photo',
|
||
takePhoto: 'Take a photo',
|
||
fromGallery: 'Choose from gallery',
|
||
changePhoto: 'Change photo',
|
||
photoFailed: 'Property saved, but the photo failed to upload',
|
||
},
|
||
|
||
location: {
|
||
title: 'Location',
|
||
field: 'Map location',
|
||
set: 'Pin on map',
|
||
change: 'Change location',
|
||
notSet: 'No location set',
|
||
noPin: 'Tap the map to drop a pin',
|
||
tapHint: 'Tap the map to place the pin',
|
||
fromAddress: 'Find from the address above',
|
||
confirm: 'Use this location',
|
||
notFound: 'Address not found',
|
||
notFoundBody: 'Try a more specific address, or drop the pin by hand.',
|
||
permission: 'Allow location access to use your current position.',
|
||
gpsFailed: "Couldn't get your position",
|
||
servicesOff: 'Turn on Location Services',
|
||
servicesOffBody:
|
||
'Location Services are off for this device. Turn them on in Settings → Privacy & Security → Location Services, then try again.',
|
||
fillTitle: 'Use this address?',
|
||
fillBody: 'The map knows this place as:\n\n%{address}\n\nReplace the address fields with it?',
|
||
fillApply: 'Replace',
|
||
fillKeep: 'Keep mine',
|
||
},
|
||
|
||
editProperty: {
|
||
title: 'Edit property',
|
||
save: 'Save changes',
|
||
action: 'Edit',
|
||
delete: 'Delete property',
|
||
deleteTitle: 'Delete this property?',
|
||
deleteBody: '“%{name}” will be permanently deleted. This cannot be undone.',
|
||
deleteBodyWithDocs:
|
||
'“%{name}” and its %{count} document(s) will be permanently deleted. This cannot be undone.',
|
||
deleteFailed: 'Could not delete the property',
|
||
},
|
||
|
||
editDocument: {
|
||
title: 'Edit document',
|
||
save: 'Save changes',
|
||
name: 'Document name',
|
||
namePlaceholder: 'Leave empty to use the default name',
|
||
note: 'Note',
|
||
notePlaceholder: 'Anything worth remembering about this document…',
|
||
noExpiry: 'No expiry date',
|
||
failed: 'Could not save',
|
||
hint: 'These details are updated without touching the stored file.',
|
||
file: 'File',
|
||
replace: 'Replace file',
|
||
replaceHint: 'Re-scan, pick another file or take a new photo — the document keeps its history.',
|
||
replacing: 'Replacing…',
|
||
replaced: 'File replaced',
|
||
replaceFailed: 'Could not replace the file',
|
||
},
|
||
|
||
propertyTypes: {
|
||
apartment: 'Apartment',
|
||
house: 'House',
|
||
villa: 'Villa',
|
||
commercial: 'Commercial',
|
||
land: 'Land',
|
||
building: 'Building',
|
||
},
|
||
|
||
documents: {
|
||
allTitle: 'All documents',
|
||
filterAttention: 'Needs attention',
|
||
filterValid: 'Valid',
|
||
filterExpiring: 'Expiring',
|
||
filterExpired: 'Expired',
|
||
emptyTitle: 'Nothing here',
|
||
emptySubtitle: 'No documents match this filter.',
|
||
},
|
||
|
||
document: {
|
||
title: 'Document',
|
||
expired: 'Expired',
|
||
expiringSoon: 'Expiring soon',
|
||
expiresOn: 'Expires %{date}.',
|
||
checkExpiry: 'Check the expiry date.',
|
||
loadingFile: 'Loading file…',
|
||
pages: { one: '%{count} page', other: '%{count} pages' },
|
||
uploaded: 'Uploaded',
|
||
expires: 'Expires',
|
||
fileSize: 'File size',
|
||
format: 'Format',
|
||
formatImage: 'Image',
|
||
formatPdf: 'PDF',
|
||
share: 'Save / Share',
|
||
openOnPhone: 'Open on my phone',
|
||
deleteTitle: 'Delete document',
|
||
deleteBody: 'This permanently removes the file. Continue?',
|
||
cannotOpen: 'Cannot open',
|
||
cannotOpenBody: 'The file could not be opened.',
|
||
cannotSave: 'Cannot save',
|
||
cannotSaveBody: 'The file could not be shared.',
|
||
pdfCard: 'PDF document',
|
||
pdfTapToOpen: 'Tap to open on your phone',
|
||
pdfPreparing: 'Preparing…',
|
||
},
|
||
|
||
upload: {
|
||
title: 'Add document',
|
||
source: 'Source',
|
||
scan: 'Scan',
|
||
scanning: 'Scanning…',
|
||
chooseFile: 'Choose file',
|
||
gallery: 'Gallery',
|
||
scanHint: 'Scan photographs multiple pages and combines them into a single PDF.',
|
||
readyToUpload: 'ready to upload',
|
||
name: 'Document name',
|
||
namePlaceholder: 'e.g. Energy Certificate 2026',
|
||
property: 'Property',
|
||
selectProperty: 'Select a property',
|
||
category: 'Category',
|
||
requirement: 'Document type',
|
||
selectRequirement: 'Choose a document type',
|
||
requirementHint: 'Picking the right type keeps the document where the portal expects it.',
|
||
noRequirementTitle: 'Choose a document type',
|
||
noRequirementBody: 'Pick which type of document this is, so it is filed correctly.',
|
||
expiry: 'Expiration date',
|
||
submit: 'Upload document',
|
||
scannedName: 'Scanned document',
|
||
photoName: 'Photo document',
|
||
noFileTitle: 'Add a file',
|
||
noFileBody: 'Choose, photograph or scan a document first.',
|
||
nameRequired: 'Name required',
|
||
nameRequiredBody: 'Give the document a name.',
|
||
noPropertyTitle: 'Select a property',
|
||
noPropertyBody: 'Pick which property this belongs to.',
|
||
failed: 'Upload failed',
|
||
scannerUnavailable: 'Scanner unavailable',
|
||
scannerUnavailableBody: 'Could not open the scanner.',
|
||
permissionTitle: 'Permission needed',
|
||
photoPermission: 'Allow photo access to attach an image.',
|
||
},
|
||
|
||
profile: {
|
||
title: 'Profile',
|
||
account: 'Account',
|
||
legal: 'Legal',
|
||
personalDetails: 'Personal details',
|
||
personalDetailsSub: 'Name, email, phone',
|
||
security: 'Password & security',
|
||
securitySub: 'Change password',
|
||
biometrics: 'Biometric sign-in',
|
||
biometricsSub: 'Faster, secure login',
|
||
signOut: 'Sign out',
|
||
demoMode: 'Demo mode · running on mock data',
|
||
language: 'Language',
|
||
languageSystem: 'System',
|
||
languageSystemSub: 'Follow the phone’s language',
|
||
dangerZone: 'Danger zone',
|
||
deleteAccount: 'Delete my account',
|
||
deleteAccountSub: 'Permanently erases your account, properties and documents',
|
||
deleteConfirmTitle: 'Delete your account?',
|
||
deleteConfirmBody:
|
||
'This permanently deletes your account together with every property and document you stored. It cannot be undone.',
|
||
deleteConfirmCta: 'Delete everything',
|
||
deleteFailed: 'Could not delete the account',
|
||
privacy: 'Privacy policy',
|
||
terms: 'Terms of use',
|
||
},
|
||
|
||
permissions: {
|
||
primerTitle: 'Camera access',
|
||
primerBody:
|
||
'CasaDoc uses the camera to scan documents into PDF. Nothing is uploaded until you tap Upload.',
|
||
continue: 'Continue',
|
||
notNow: 'Not now',
|
||
blockedTitle: 'Permission is switched off',
|
||
photosBody:
|
||
'Photo access is off. Tap “Open settings”, then choose Permissions › Photos and music (or Files) and allow it.',
|
||
cameraBody:
|
||
'Camera access is off. Tap “Open settings”, then choose Permissions › Camera and allow it.',
|
||
locationBody:
|
||
'Location access is off, and the address lookup needs it. Tap “Open settings”, then choose Permissions › Location and allow it. You can still place the pin by hand.',
|
||
openSettings: 'Open settings',
|
||
},
|
||
|
||
network: {
|
||
offline: 'No connection — showing saved data',
|
||
},
|
||
|
||
files: {
|
||
noFile: 'This document has no file attached.',
|
||
missingOnServer: 'The file is missing on the server (404).',
|
||
downloadFailed: 'Could not download the file (HTTP %{status}).',
|
||
noViewer: 'No app available to open this file.',
|
||
sharingUnavailable: 'Sharing is not available on this device.',
|
||
scannerNeedsDevBuild:
|
||
'Native document scanner is unavailable. Run a Dev Client / EAS build (not Expo Go).',
|
||
},
|
||
|
||
expiry: {
|
||
valid: 'Valid',
|
||
expired: 'Expired',
|
||
expiring: 'Expiring',
|
||
days: '%{count} days',
|
||
},
|
||
};
|