Added conditional required validation and format validation for tenant email. Changes: - Tenant email is now required when autoTenantNotification is enabled - Added email format validation using Zod's built-in email validator - Email field validates format even when autoTenantNotification is off (if not empty) - Added localization strings for validation errors (Croatian/English) Validation logic: - Format validation: Always checks if email is valid format (when not empty) - Required validation: Email required when autoTenantNotification is true - Error messages: "email address is invalid" for format, "tenant email is missing" for required 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
172 lines
7.8 KiB
JSON
172 lines
7.8 KiB
JSON
{
|
|
"Index": {
|
|
"title": "Welcome!"
|
|
},
|
|
"PageFooter": {
|
|
"app-description": "Helping you to stay on top of your utility bills",
|
|
"links": {
|
|
"home": "Home",
|
|
"privacy-policy": "Privacy Policy",
|
|
"terms-of-service": "Terms of Service"
|
|
}
|
|
},
|
|
"login-page": {
|
|
"main-card": {
|
|
"title-1": "Which bills are due?",
|
|
"title-2": "Which are payed?",
|
|
"title-3": "How much are my expenses?",
|
|
"text-1": "These are the questions this simple and free app will help you with ...",
|
|
"text-2": "... try it & use it completly free!",
|
|
"in-app-browser-warning": "<strong>WARNING:</strong> we detected you're using an in-app browser.<br></br>This might prevent this app to work properly.<hint>Please use a regular browser to sign in (rezije.app) 😉</hint>",
|
|
"video-url": "/welcome-demo-vp9-25fps-1500bps.webm",
|
|
"image-url": "/hero.png",
|
|
"video-title": "Demo osnovnih koraka u aplikaciji"
|
|
},
|
|
"card-1": {
|
|
"title": "Easy copy of expenditures",
|
|
"text": "All your realestate and utilitys are automatically copied to the next month, so you don't neeed to do it by hand.",
|
|
"video-url": "/kopiranje-mjeseca-demo.webm",
|
|
"image-url": "/status-color-demo.png",
|
|
"video-title": "Demo kopiranja mjeseca"
|
|
},
|
|
"card-2": {
|
|
"title": "Color signals status",
|
|
"text": "Each of the utility bills is color coded - at a glance you can see which bill was received and which one is payed.",
|
|
"image-url": "/bar-code-demo.png",
|
|
"image-alt": "Boje označavaju status računa"
|
|
},
|
|
"card-3": {
|
|
"title": "Color signals status",
|
|
"text": "If the attached dokument contains a 2D bar code, it is automatically extracted and shown on the page, so you can scan it without opening the PDF document.",
|
|
"video-url": "/welcome-demo-vp9-25fps-1500bps.webm",
|
|
"image-url": "/bar-code-demo.png",
|
|
"video-title": "Demo osnovnih koraka u aplikaciji"
|
|
},
|
|
"sign-in-button": "Sign in with"
|
|
},
|
|
"home-page": {
|
|
"add-location-button": {
|
|
"tooltip": "Add a new realestate"
|
|
},
|
|
"add-month-button": {
|
|
"tooltip": "Add next mont"
|
|
},
|
|
"location-card": {
|
|
"edit-card-tooltip": "Edit realestate",
|
|
"add-bill-button-tooltip": "Add a new bill",
|
|
"payed-total-label": "Payed total:",
|
|
"link-copy-message": "Link copied to clipboard"
|
|
},
|
|
"month-card": {
|
|
"payed-total-label": "Total monthly expenditure:",
|
|
"print-codes-tooltip": "Print 2D codes",
|
|
"print-codes-label": "Print codes"
|
|
},
|
|
"print-preview": {
|
|
"title": "2D Barcode Print Preview",
|
|
"barcodes-found": "barcodes found",
|
|
"barcode-singular": "barcode found",
|
|
"print-button": "Print Barcodes",
|
|
"print-footer": "Generated on {date} • Evidencija Režija Print System",
|
|
"table-header-index": "#",
|
|
"table-header-bill-info": "Bill Information",
|
|
"table-header-barcode": "2D Barcode",
|
|
"empty-state-title": "No Barcode Data Found",
|
|
"empty-state-message": "No bills with 2D barcodes found for {yearMonth}"
|
|
},
|
|
"profile-saved-message": "Profile updated successfully",
|
|
"bill-saved-message": "Bill saved successfully",
|
|
"bill-deleted-message": "Bill deleted successfully",
|
|
"location-saved-message": "Location saved successfully",
|
|
"location-deleted-message": "Location deleted successfully"
|
|
},
|
|
"bill-delete-form": {
|
|
"text": "Please confirm deletion of bill \"<strong>{bill_name}</strong>\" at \"<strong>{location_name}</strong>\".",
|
|
"cancel-button": "Cancel",
|
|
"confirm-button": "Confirm",
|
|
"delete-in-subsequent-months": "Also delete in all subsequent months",
|
|
"warning-title": "Warning",
|
|
"warning-message": "This operation cannot be undone and will delete the bill in all future months!"
|
|
},
|
|
"bill-edit-form": {
|
|
"bill-name-placeholder": "Bill name",
|
|
"paid-checkbox": "Paid",
|
|
"scanning-pdf": "🕵️♂️ Scanning document for 2D codes ...",
|
|
"multiple-barcode-results-notification": "✅ Multiple 2D barcodes found. Pick the one which you want to use:",
|
|
"payed-amount": "Amount",
|
|
"barcode-disclaimer": "After scanning the code make sure the information is correct.<br></br>We are not liable in case of an incorrect payment.",
|
|
"notes-placeholder": "Notes",
|
|
"save-button": "Save",
|
|
"cancel-button": "Cancel",
|
|
"delete-tooltip": "Delete bill",
|
|
"add-to-subsequent-months": "Add to all subsequent months",
|
|
"validation": {
|
|
"bill-name-required": "Bill name is required",
|
|
"payed-amount-required": "Payed amount is required",
|
|
"not-a-number": "Not a number",
|
|
"negative-number": "Value must be a positive number",
|
|
"form-error-message": "Form validation error. Please check the form and try again."
|
|
},
|
|
"attachment": "Attachment",
|
|
"back-button": "Back",
|
|
"billed-to-label": "Billed to",
|
|
"billed-to-tenant-option": "tenant",
|
|
"billed-to-landlord-option": "landlord"
|
|
},
|
|
"location-delete-form": {
|
|
"text": "Please confirm deletion of realestate \"<strong>{name}</strong>\".",
|
|
"cancel-button": "Cancel",
|
|
"confirm-button": "Confirm",
|
|
"delete-in-subsequent-months": "Also delete in all subsequent months",
|
|
"warning-title": "Warning",
|
|
"warning-message": "This operation cannot be undone and will delete the location in all future months!"
|
|
},
|
|
"location-edit-form": {
|
|
"location-name-placeholder": "Realestate name",
|
|
"notes-placeholder": "Notes",
|
|
"generate-tenant-code": "Generate 2D code for tenant",
|
|
"tenant-first-name-label": "Tenant First Name",
|
|
"tenant-first-name-placeholder": "Enter tenant's first name",
|
|
"tenant-last-name-label": "Tenant Last Name",
|
|
"tenant-last-name-placeholder": "Enter tenant's last name",
|
|
"auto-tenant-notification": "Notify tenant automatically",
|
|
"tenant-email-label": "Tenant Email",
|
|
"tenant-email-placeholder": "Enter tenant's email",
|
|
"warning-missing-tenant-names": "Warning: Tenant first and last name are missing. The 2D barcode will not be displayed to the tenant when they open the shared link until both fields are filled in.",
|
|
"save-button": "Save",
|
|
"cancel-button": "Cancel",
|
|
"delete-tooltip": "Delete realestate",
|
|
"add-to-subsequent-months": "Add to all subsequent months",
|
|
"update-scope": "Update scope:",
|
|
"update-current-month": "current month only",
|
|
"update-subsequent-months": "current and all future months",
|
|
"update-all-months": "all months",
|
|
"validation": {
|
|
"location-name-required": "Relaestate name is required",
|
|
"tenant-first-name-required": "tenant first name is missing",
|
|
"tenant-last-name-required": "tenant last name is missing",
|
|
"tenant-email-required": "tenant email is missing",
|
|
"tenant-email-invalid": "email address is invalid",
|
|
"validation-failed": "Validation failed. Please check the form and try again."
|
|
}
|
|
},
|
|
"account-form": {
|
|
"title": "Profile Information",
|
|
"info-box-message": "This information will be used to generate a 2D barcode displayed in the bill view, allowing tenants to scan it and refund the money you have spent on paying utility bills in their name.",
|
|
"warning-missing-data": "Warning: Some profile fields are missing. The 2D barcode will not be displayed to tenants on the shared bill view until all fields are filled in.",
|
|
"first-name-label": "First Name",
|
|
"first-name-placeholder": "Enter your first name",
|
|
"last-name-label": "Last Name",
|
|
"last-name-placeholder": "Enter your last name",
|
|
"address-label": "Address",
|
|
"address-placeholder": "Enter your address",
|
|
"iban-label": "IBAN",
|
|
"iban-placeholder": "Enter your IBAN",
|
|
"save-button": "Save",
|
|
"cancel-button": "Cancel",
|
|
"validation": {
|
|
"iban-invalid": "Invalid IBAN format. Please enter a valid IBAN",
|
|
"validation-failed": "Validation failed. Please check the form and try again."
|
|
}
|
|
}
|
|
} |