2026-06-20 12:37:38 +03:30
{
"common" : {
2026-08-19 02:41:05 +03:30
"appName" : "Nudentic" ,
2026-06-20 12:37:38 +03:30
"loading" : "Loading..." ,
"loadingApp" : "Loading app..." ,
"loadingWorkspace" : "Loading workspace..." ,
"continue" : "Continue" ,
"back" : "Back" ,
"save" : "Save" ,
2026-06-20 14:51:43 +03:30
"cancel" : "Cancel" ,
"delete" : "Delete" ,
"edit" : "Edit" ,
"next" : "Next" ,
"dismiss" : "Dismiss" ,
"or" : "Or" ,
"and" : "and" ,
"close" : "Close" ,
"redirecting" : "Redirecting…" ,
"readOnlyAccess" : "Read-only access for this organization." ,
"errorGeneric" : "Something went wrong" ,
"loadingEllipsis" : "Loading..." ,
"search" : "Search" ,
"action" : "Action" ,
"status" : "Status" ,
"name" : "Name" ,
"email" : "Email" ,
"date" : "Date" ,
"organization" : "Organization" ,
"backToApp" : "← Back to app" ,
"copied" : "Copied" ,
"copyLink" : "Copy link" ,
"none" : "None" ,
2026-07-11 17:10:02 +03:30
"preview" : "Preview" ,
"openMenu" : "Open menu" ,
"closeMenu" : "Close menu"
2026-06-20 12:37:38 +03:30
} ,
"language" : {
"label" : "Language" ,
"selectLanguage" : "Select language" ,
"en" : "English" ,
"fa" : "Persian" ,
"nl" : "Dutch"
} ,
"theme" : {
"switchToLight" : "Switch to light mode" ,
"switchToDark" : "Switch to dark mode" ,
"lightMode" : "Light mode" ,
"darkMode" : "Dark mode"
} ,
"nav" : {
"dashboard" : "Dashboard" ,
"staff" : "Staff" ,
"patients" : "Patients" ,
"appointment" : "Appointment" ,
"treatment" : "Treatment" ,
2026-06-28 14:59:06 +03:30
"cases" : "Cases" ,
2026-06-28 22:56:56 +03:30
"tasks" : "Tasks" ,
2026-06-20 12:37:38 +03:30
"billing" : "Billing" ,
"reports" : "Reports" ,
"clinics" : "Clinics" ,
"labs" : "Labs"
} ,
"auth" : {
"login" : "Login" ,
"signIn" : "Sign in" ,
"signOut" : "Log out" ,
"register" : "Register" ,
"startTrial" : "Start Trial" ,
2026-07-11 17:10:02 +03:30
"startTrialShort" : "Try free" ,
2026-06-20 12:37:38 +03:30
"startFreeTrial" : "Start Free Trial" ,
"dashboard" : "Dashboard" ,
"signInTitle" : "Sign in to your account" ,
"signInPrompt" : "Or {link}" ,
"startTrialLink" : "start your free trial" ,
"registerTitle" : "Start your 30-day free trial" ,
"registerPrompt" : "Already have an account?" ,
"signInLink" : "Sign in" ,
"email" : "Email address" ,
"password" : "Password" ,
"confirmPassword" : "Confirm password" ,
"fullName" : "Full name" ,
"rememberMe" : "Remember me" ,
2026-07-10 19:04:10 +03:30
"showPassword" : "Show password" ,
"hidePassword" : "Hide password" ,
2026-06-20 12:37:38 +03:30
"forgotPassword" : "Forgot your password?" ,
"invalidCredentials" : "Invalid email or password" ,
"loginFailed" : "Login failed" ,
"registrationFailed" : "Registration failed. Please try again." ,
"startMyFreeTrial" : "Start my free trial" ,
"trialIncludes" : "Your trial includes:" ,
"trialTeamMembers" : "Up to 5 team members" ,
"trialFullAccess" : "Full access to all features" ,
"trialNoCard" : "30 days free, no credit card required" ,
"termsAgreement" : "By signing up, you agree to our {terms} and {privacy}" ,
"termsOfService" : "Terms of Service" ,
"privacyPolicy" : "Privacy Policy" ,
"signedIn" : "Signed in" ,
"switchOrganization" : "Switch organization" ,
"subscriptions" : "Subscriptions" ,
2026-06-20 14:51:43 +03:30
"account" : "Account" ,
"emailPlaceholder" : "you@example.com" ,
"passwordPlaceholder" : "••••••••" ,
"namePlaceholder" : "John Doe" ,
"termsIntro" : "By signing up, you agree to our" ,
"errorRegistrationFailed" : "Registration failed" ,
"errorLoginFailed" : "Login failed" ,
"errorCreateOrganization" : "Failed to create organization" ,
"acceptInviteTitle" : "Accept invitation" ,
"loadingInvitation" : "Loading invitation..." ,
"invalidInvitationLink" : "Invalid invitation link" ,
"invitationAlreadyAccepted" : "This invitation is already accepted. You can log in now." ,
"errorLoadInvitation" : "Could not load invitation" ,
"organizationLabel" : "Organization:" ,
"emailLabel" : "Email:" ,
"nameRequired" : "Name is required" ,
"passwordMinLength8" : "Password must be at least 8 characters" ,
"passwordsDoNotMatch" : "Passwords do not match" ,
"labelName" : "Name" ,
"labelCreatePassword" : "Create password" ,
"labelConfirmPassword" : "Confirm password" ,
"activateAccount" : "Activate account" ,
2026-08-19 00:39:31 +03:30
"invitationAcceptedRedirect" : "Invitation accepted. Opening your workspace..." ,
"invitationAcceptedSignInFailed" : "Account activated, but sign-in failed. Please log in with your password." ,
2026-06-20 14:51:43 +03:30
"errorAcceptInvitation" : "Could not accept invitation" ,
"alreadyHaveAccess" : "Already have access?" ,
"goToLogin" : "Go to login" ,
"acceptOrganizationTitle" : "Accept organization invitation" ,
"alreadyHaveAccount" : "Already have an account?" ,
"invitedBy" : "Invited by:" ,
"ownerEmail" : "Owner email" ,
"activateOrganization" : "Activate organization" ,
2026-08-19 00:39:31 +03:30
"organizationAcceptedRedirect" : "Invitation accepted. Opening your workspace..." ,
2026-06-20 14:51:43 +03:30
"stepAccount" : "Account" ,
"stepOrganization" : "Organization" ,
"organizationName" : "Organization name" ,
"organizationNamePlaceholder" : "Sunshine Dental Clinic" ,
"organizationEmail" : "Organization email" ,
"organizationEmailPlaceholder" : "contact@sunshineclinic.com" ,
"organizationType" : "Organization type" ,
"dentalClinic" : "Dental Clinic" ,
2026-07-04 00:01:58 +03:30
"dentalLab" : "Dental Lab" ,
"mobile" : "Mobile number" ,
"mobilePlaceholder" : "0912 345 6789" ,
"forgotPasswordTitle" : "Reset your password" ,
"forgotPasswordSubtitle" : "Enter the mobile number on your account. We will send a verification code." ,
"codeSentHint" : "Enter the verification code we sent to your mobile." ,
"sendCode" : "Send verification code" ,
"verificationCode" : "Verification code" ,
"verificationCodePlaceholder" : "12345" ,
"verifyAndContinue" : "Verify and continue" ,
"backToSignIn" : "Back to sign in" ,
"codeSendFailed" : "Could not send verification code. Please try again." ,
"verifyFailed" : "Invalid or expired verification code."
2026-06-20 12:37:38 +03:30
} ,
"landing" : {
"heroTitle" : "Connect Dental Clinics & Labs" ,
"heroHighlight" : "Seamlessly" ,
"heroSubtitle" : "Streamline communication between dental professionals. Start with a 30-day free trial, no credit card required." ,
"featureClinicsTitle" : "For Clinics" ,
"featureClinicsDescription" : "Manage patients, appointments, and send cases to labs instantly." ,
"featureLabsTitle" : "For Labs" ,
"featureLabsDescription" : "Receive cases, track progress, and communicate with clinics." ,
"featureTeamTitle" : "Team Management" ,
"featureTeamDescription" : "Add up to 5 team members during trial. Scale as you grow." ,
"featureTrialTitle" : "30-Day Trial" ,
"featureTrialDescription" : "Full access to all features. No credit card required." ,
"featureRealtimeTitle" : "Real-time Updates" ,
"featureRealtimeDescription" : "Get instant notifications on case status changes." ,
"featureSecurityTitle" : "Secure & Compliant" ,
"featureSecurityDescription" : "HIPAA-compliant with enterprise-grade security." ,
2026-08-19 02:41:05 +03:30
"footerCopyright" : "© 2026 Nudentic. All rights reserved." ,
2026-06-20 12:37:38 +03:30
"termsAndConditions" : "Terms & Conditions"
} ,
"accountMenu" : {
"noActiveSubscription" : "No active subscription — review Subscriptions" ,
"trialEnded" : "Trial ended — review Subscriptions" ,
"trialEndingSoon" : "Trial ending soon — review Subscriptions" ,
"seatsLow" : "Seats running low — review Subscriptions" ,
"reviewSubscriptions" : "Review Subscriptions"
} ,
"validation" : {
"emailInvalid" : "Please enter a valid email address" ,
"passwordRequired" : "Password is required" ,
"nameMinLength" : "Name must be at least 2 characters" ,
"passwordMinLength" : "Password must be at least 8 characters" ,
"passwordUppercase" : "Password must contain at least one uppercase letter" ,
"passwordNumber" : "Password must contain at least one number" ,
"organizationNameMinLength" : "Organization name must be at least 2 characters" ,
"organizationEmailInvalid" : "Please enter a valid organization email" ,
"organizationTypeRequired" : "Please select organization type" ,
2026-07-04 00:01:58 +03:30
"passwordsDoNotMatch" : "Passwords don't match" ,
"mobileRequired" : "Mobile number is required" ,
"mobileInvalid" : "Please enter a valid Iranian mobile number" ,
"codeRequired" : "Verification code is required"
2026-06-20 14:51:43 +03:30
} ,
"today" : {
"welcomeBack" : "Welcome back!!" ,
"noSubscriptionNotice" : "This organization does not have an active subscription yet." ,
"choosePlanLink" : "Choose a plan" ,
"noSubscriptionCta" : "to start the purchase process." ,
2026-07-11 00:07:48 +03:30
"noWidgets" : "No dashboard metrics are available for your current permissions." ,
"loadError" : "Could not load dashboard metrics." ,
"seatsUnlimited" : "Unlimited plan" ,
"widgetAppointmentsToday" : "Today's Appointments" ,
"widgetPatientsToday" : "Patients Today" ,
"widgetTreatmentsToday" : "Treatments Today" ,
"widgetDraftTreatments" : "Draft Treatments" ,
"widgetLabCasesPendingSend" : "Lab Cases Pending Send" ,
"widgetCasesReceivedToday" : "Cases Received Today" ,
2026-07-11 03:12:56 +03:30
"widgetCasesInProgress" : "Cases In Progress" ,
2026-07-11 00:07:48 +03:30
"widgetTasksInProgress" : "Tasks In Progress" ,
"widgetImportantTasks" : "Important Tasks" ,
2026-07-14 03:06:56 +03:30
"widgetOverdueCases" : "Overdue Cases" ,
"widgetUnassignedTasks" : "Unassigned Tasks" ,
2026-07-11 00:07:48 +03:30
"widgetPendingConnections" : "Pending Connections" ,
2026-07-11 03:12:56 +03:30
"widgetProvidersWithoutWorkingHours" : "Providers Without Working Hours" ,
2026-07-11 00:34:38 +03:30
"widgetPendingStaffInvites" : "Pending Staff Invites" ,
2026-07-11 22:32:37 +03:30
"widgetSubscription" : "Subscription" ,
"subscriptionSeatsLabel" : "Seats used" ,
"subscriptionSeatsRemainingLabel" : "Seats left" ,
"subscriptionSeatsPercent" : "{percent}%" ,
"subscriptionSeatsUnlimitedShort" : "Unlimited" ,
"subscriptionPeriodLabel" : "Plan period" ,
"subscriptionPeriodRemainingLabel" : "Days left" ,
"subscriptionPeriodPercent" : "{percent}%" ,
"subscriptionPeriodDays" : "{elapsed}/{total} days" ,
"subscriptionNoPlan" : "No active plan" ,
2026-07-19 00:37:59 +03:30
"chartAppointmentsWeekAllTitle" : "Appointments" ,
2026-07-11 03:12:56 +03:30
"chartAppointmentsWeekAllSubtitle" : "All providers — last 7 days" ,
2026-07-19 00:37:59 +03:30
"chartAppointmentsWeekMineTitle" : "My Appointments" ,
2026-07-11 03:12:56 +03:30
"chartAppointmentsWeekMineSubtitle" : "Your schedule — last 7 days" ,
"chartLabTaskActivityTitle" : "Lab Task Activity" ,
"chartLabTaskActivitySubtitle" : "Last 7 days" ,
"chartLabTaskCompletedLegend" : "Completed" ,
"chartLabTaskReceivedLegend" : "Received" ,
"chartAppointmentsByProviderTitle" : "Appointments by Provider" ,
"chartAppointmentsByProviderSubtitle" : "Today" ,
2026-07-11 00:34:38 +03:30
"chartTreatmentMixTitle" : "Treatment Mix" ,
"chartTreatmentMixSubtitle" : "Last 7 days" ,
2026-07-11 03:12:56 +03:30
"chartCaseCompletionTitle" : "Case Completion" ,
"chartCaseCompletionSubtitle" : "All active cases" ,
"chartCaseCompletionPercent" : "{percent}%" ,
"chartCaseCompletionTasks" : "Tasks completed" ,
2026-07-12 02:08:54 +03:30
"chartTreatmentPlanCompletionTitle" : "Treatment Plan Completion" ,
"chartTreatmentPlanCompletionSubtitle" : "All appointments" ,
"chartTreatmentPlanCompletionRatio" : "With treatment plan" ,
2026-07-12 00:28:43 +03:30
"chartTasksByProsthesisTitle" : "In-Progress Tasks by Prosthesis" ,
"chartTasksByProsthesisSubtitle" : "Current workload mix" ,
2026-07-19 00:37:59 +03:30
"chartCasesDueWeekTitle" : "Cases Due" ,
2026-07-14 03:06:56 +03:30
"chartCasesDueWeekSubtitle" : "Active cases with a due date in the next 7 days" ,
2026-07-12 02:08:54 +03:30
"chartCasePartnersClinicTitle" : "Cases by Lab" ,
"chartCasePartnersLabTitle" : "Cases by Clinic" ,
"chartCasePartnersSubtitle" : "Last 30 days" ,
"chartCasePartnersSentLegend" : "Sent" ,
"chartCasePartnersOpenLegend" : "In progress" ,
2026-07-11 22:32:37 +03:30
"chartEfficiencyReportTitle" : "Efficiency Report" ,
"chartEfficiencyReportSubtitleClinic" : "Treatments created by staff — last 30 days" ,
"chartEfficiencyReportSubtitleLab" : "Tasks completed by staff — last 30 days" ,
2026-07-11 00:48:35 +03:30
"chartEmpty" : "No data for this period yet." ,
2026-07-19 00:37:59 +03:30
"periodWeek" : "Week" ,
"periodMonth" : "Month" ,
"periodYear" : "Year" ,
"periodSelectAria" : "Chart time period" ,
2026-07-11 00:48:35 +03:30
"upcomingAppointmentsTitle" : "Upcoming Today" ,
"upcomingAppointmentsSubtitle" : "Appointments not yet finished" ,
"viewAllAppointments" : "View schedule" ,
2026-07-11 00:53:40 +03:30
"noUpcomingAppointments" : "No upcoming appointments for the rest of today." ,
"retryLoad" : "Try again" ,
"sectionLoadError" : "This section could not be displayed." ,
"lastUpdated" : "Updated at {time}"
2026-06-20 14:51:43 +03:30
} ,
"staff" : {
"redirecting" : "Redirecting…" ,
"title" : "Staff Management" ,
"subtitle" : "Invite teammates, set tab access, and stay within your plan seat limit." ,
"inviteMember" : "Invite member" ,
"seatsLabel" : "Seats:" ,
"unlimitedPlan" : "(unlimited plan)" ,
"seatLimitReached" : "Plan seat limit reached for this organization." ,
"noActivePlan" : "No active plan selected for this organization. Choose a subscription plan to invite members." ,
"invitedPending" : "Invitation is pending until they open the link, set a password, and log in." ,
"invitedAccepted" : "Invitation was accepted immediately." ,
"inviteLinkHeading" : "Invite link" ,
"shareLinkHint" : "Share this link manually via SMS or email. A new link is generated if the previous one expired or was lost." ,
"loadingTeam" : "Loading team…" ,
"tableName" : "Name" ,
"tableEmail" : "Email" ,
"tableRole" : "Role" ,
"tableStatus" : "Status" ,
"tableAccess" : "Access" ,
"tableAction" : "Action" ,
"roleOwner" : "Owner" ,
"roleStaff" : "Staff" ,
"statusActive" : "Active" ,
"statusPending" : "Pending" ,
"statusDisabled" : "Disabled" ,
"statusExpired" : "Expired" ,
"allFeatures" : "All features" ,
"inviteModalTitle" : "Invite team member" ,
"stepOf" : "Step {step} of 2" ,
"permissionView" : "View" ,
"permissionEdit" : "Edit" ,
"labelEmail" : "Email" ,
"labelDisplayName" : "Display name" ,
"tabAccess" : "Tab access" ,
"sendInvite" : "Send invite" ,
"skipForNow" : "Skip for now" ,
"enableModalTitle" : "Enable team member" ,
"enableConfirm" : "Enable {name} ({email})?" ,
"enableBullet1" : "They can sign in to this organization again with their existing account." ,
"enableBullet2" : "No new invitation is sent and no data was removed while they were disabled." ,
"enableBullet3" : "Enabling uses one seat on your plan." ,
"noSeatsAvailable" : "No seats are available. Disable another member or upgrade your plan before enabling this person." ,
"enableMemberButton" : "Enable member" ,
"disableModalTitle" : "Disable team member" ,
"disableConfirm" : "Disable {name} ({email})?" ,
"disableBullet1" : "They will not be able to sign in to this organization." ,
"disableBullet2" : "No data will be removed." ,
"disableBullet3" : "Disabling frees one seat on your plan so you can invite someone else." ,
"disableMemberButton" : "Disable member" ,
"editModalTitle" : "Edit member" ,
"loadingWorkingHours" : "Loading working hours…" ,
"errorLoadStaff" : "Failed to load staff." ,
"errorCopyInvite" : "Could not copy invitation link." ,
"errorSendInvite" : "Failed to send invitation." ,
"errorLoadWorkingHours" : "Failed to load working hours." ,
"successMemberUpdated" : "Member updated." ,
"errorUpdateMember" : "Failed to update member." ,
"errorDeleteNotImplemented" : "Delete is not implemented yet." ,
"successMemberDisabled" : "{name} was disabled. A seat is now available." ,
"errorDisableMember" : "Failed to disable member." ,
"successMemberEnabled" : "{name} was enabled and can sign in again." ,
"errorEnableMember" : "Failed to enable member." ,
"successInvited" : "{name} ({email}) was invited." ,
"copyInviteLink" : "Copy invitation link" ,
"copyInviteLinkTitle" : "Copy invitation link (generates a new link if needed)" ,
"enableMemberAria" : "Enable member" ,
"enableMemberTitle" : "Enable member (uses a seat)" ,
"disableMemberAria" : "Disable member" ,
"disableMemberTitle" : "Disable member (frees a seat)" ,
"editMemberAria" : "Edit member" ,
"deleteMemberAria" : "Delete member" ,
"deleteMemberTitle" : "Delete member (not implemented)" ,
"features" : {
"featureToday" : "Today" ,
"featureStaff" : "Staff" ,
"featureOrganizations" : "Organizations" ,
"featureClinics" : "Clinics" ,
"featureLabs" : "Labs" ,
"featurePatients" : "Patients" ,
"featureAppointment" : "Appointment" ,
"featureTreatment" : "Treatment" ,
2026-06-28 14:59:06 +03:30
"featureCases" : "Cases" ,
2026-06-28 22:56:56 +03:30
"featureTasks" : "Tasks" ,
2026-06-20 14:51:43 +03:30
"featureBilling" : "Billing" ,
"featureReports" : "Reports" ,
"noTabAccess" : "No tab access" ,
"readOnlySuffix" : "(Read only)"
} ,
"workingHours" : {
"recommendedTitle" : "Working hours recommended" ,
"recommendedBody" : "Staff with treatment edit access appear as provider columns in Appointments. Set their weekly hours so the schedule grid shows the right bookable times." ,
"intro" : "Set weekly working hours for this provider. The appointments grid uses these hours to show bookable time slots." ,
"workingDay" : "Working day" ,
"start" : "Start" ,
"end" : "End" ,
"removeShift" : "Remove shift" ,
"addShift" : "Add shift" ,
"autoRepeatWeekly" : "Repeat these hours at the start of each week (copy forward on Monday)" ,
"weekdayMon" : "Mon" ,
"weekdayTue" : "Tue" ,
"weekdayWed" : "Wed" ,
"weekdayThu" : "Thu" ,
"weekdayFri" : "Fri" ,
"weekdaySat" : "Sat" ,
"weekdaySun" : "Sun" ,
"validationNeedsShift" : "{day} needs at least one shift or should be marked off." ,
"validationEndAfterStart" : "{day} shift end time must be after start time." ,
"validationOverlap" : "{day} shifts cannot overlap."
}
} ,
"patients" : {
"title" : "Patients" ,
"newPatient" : "New Patient" ,
"errorLoadPatients" : "Failed to load patients." ,
"successPatientSaved" : "Patient {firstName} {lastName} was saved successfully." ,
"errorSavePatient" : "Failed to save patient." ,
"firstName" : "First name" ,
"lastName" : "Last name" ,
2026-06-28 14:49:37 +03:30
"mobile" : "Mobile" ,
"mobilePlaceholder" : "09121234567" ,
"mobileLabel" : "Mobile:" ,
"patientAlreadyExists" : "A patient with this mobile already exists: {firstName} {lastName}. They were selected for you." ,
2026-06-20 14:51:43 +03:30
"savePatient" : "Save Patient" ,
"dialogTitle" : "New patient" ,
2026-06-28 14:49:37 +03:30
"searchPlaceholder" : "Search patients by name, mobile, email" ,
2026-06-20 14:51:43 +03:30
"loadingPatients" : "Loading patients..." ,
"noResults" : "No patients found for this search." ,
"noContact" : "No contact" ,
"selectPatient" : "Select a patient to view details." ,
"emailLabel" : "Email:" ,
"statusLabel" : "Status:" ,
"statusActive" : "Active" ,
"statusInactive" : "Inactive" ,
2026-07-12 18:56:01 +03:30
"emptyValue" : "-" ,
"requiredMark" : "*" ,
"requiredFieldsHint" : "Fields marked with * are required. Email is optional." ,
"firstNameRequired" : "First name is required." ,
"lastNameRequired" : "Last name is required." ,
"emailOptional" : "Email (optional)" ,
"emailOptionalSummary" : "Email (optional):" ,
"appointmentHistoryTitle" : "Appointment history" ,
"appointmentHistorySubtitle" : "Past and upcoming appointments for this patient at your clinic." ,
"appointmentHistoryLoading" : "Loading appointment history…" ,
"appointmentHistoryEmpty" : "No appointments recorded for this patient yet." ,
"appointmentHistoryError" : "Could not load appointment history." ,
"appointmentHistoryProvider" : "Provider: {name}" ,
"appointmentHistoryUnknownProvider" : "Unknown provider"
2026-06-20 14:51:43 +03:30
} ,
2026-06-28 14:59:06 +03:30
"cases" : {
"title" : "Cases" ,
2026-07-07 15:31:09 +03:30
"subtitle" : "Lab cases sent from linked clinics. Track progress and flag important tasks." ,
2026-06-28 16:46:42 +03:30
"searchPlaceholder" : "Search by patient name or mobile…" ,
"emptyList" : "No cases received yet." ,
"selectCaseHint" : "Select a case from the list to view tasks." ,
"fromClinic" : "From {name}" ,
"sentAt" : "Sent {date}" ,
2026-07-13 16:30:36 +03:30
"dueDateLabel" : "Due {date}" ,
"overdueBadge" : "Overdue" ,
2026-06-28 16:46:42 +03:30
"taskProgressLabel" : "Tasks: {completed} of {total} completed" ,
"taskProgressShort" : "{progress} tasks" ,
"treatmentDetails" : "Treatment details" ,
"teethLabel" : "Teeth" ,
2026-07-07 15:31:09 +03:30
"tasksByTooth" : "Tasks" ,
"toothGroupTitle" : "Teeth {teeth} · {prosthesis}" ,
2026-06-28 16:46:42 +03:30
"noTasks" : "No tasks were generated for this case." ,
"statusInProgress" : "In progress" ,
"statusCompleted" : "Completed" ,
2026-07-07 15:31:09 +03:30
"importantLabel" : "Important" ,
2026-07-13 17:44:44 +03:30
"unreadCase" : "Unread updates" ,
2026-07-18 22:00:44 +03:30
"markCaseImportant" : "Important Case" ,
2026-07-07 15:31:09 +03:30
"markImportant" : "Mark as important" ,
"lastUpdatedBy" : "Updated by {name}" ,
"lastUpdatedUnknown" : "Not started yet" ,
"timelineTitle" : "History" ,
"timelineEntry" : "{status} · {name} · {date}" ,
2026-06-28 16:46:42 +03:30
"errorLoadList" : "Failed to load cases." ,
"errorLoadDetail" : "Failed to load case details." ,
2026-06-28 17:49:40 +03:30
"errorUpdateTask" : "Failed to update task." ,
2026-07-13 15:47:32 +03:30
"errorAssignTask" : "Failed to assign task." ,
"assigneeLabel" : "Assigned to" ,
"assigneeUnassigned" : "Unassigned" ,
"assignedTo" : "Assigned to {name}" ,
2026-06-28 17:49:40 +03:30
"filterClinic" : "Clinic" ,
"filterClinicAll" : "All clinics" ,
2026-07-14 03:06:56 +03:30
"filterProsthesisType" : "Prosthesis type" ,
"filterProsthesisTypeAll" : "All types" ,
2026-06-28 17:49:40 +03:30
"filterSentFrom" : "Sent from" ,
"filterSentTo" : "Sent to" ,
"clearFilters" : "Clear filters" ,
"patientMobile" : "Mobile" ,
2026-07-07 17:14:31 +03:30
"showComments" : "Comments" ,
"commentsCount" : "Comments ({count})" ,
2026-07-08 02:53:47 +03:30
"viewAttachments" : "View all attachments" ,
"attachmentsDialogTitle" : "Case attachments" ,
"attachmentsDialogSubtitle" : "Preview and download files shared with this case." ,
"noAttachments" : "No attachments were shared with this case." ,
"downloadAttachment" : "Download" ,
"downloadAllAttachments" : "Download all" ,
"attachmentPreviewUnavailable" : "Preview unavailable" ,
2026-06-28 17:49:40 +03:30
"prevPage" : "Previous" ,
"nextPage" : "Next" ,
2026-06-28 22:56:56 +03:30
"pageSummary" : "Page {page} of {totalPages} ({total} cases)" ,
2026-07-14 21:07:05 +03:30
"statusLabel" : "Status" ,
"viewShareQr" : "View case QR code and share link" ,
"shareQrDialogTitle" : "Case share link" ,
"shareQrDialogSubtitle" : "Scan the QR code or copy the link to open this case’ s tasks." ,
"copyShareLink" : "Copy link" ,
"shareLinkCopied" : "Link copied to clipboard" ,
2026-07-18 22:00:44 +03:30
"shareQrUnavailable" : "QR preview unavailable" ,
"downloadCaseSheet" : "Download PDF" ,
"caseSheetTitle" : "Case Sheet" ,
"caseSheetOrderNumber" : "Order number" ,
"caseSheetOrderDate" : "Order date" ,
"caseSheetDateDue" : "Date due" ,
"caseSheetSender" : "Sender" ,
"caseSheetRecipient" : "Recipient" ,
"caseSheetPatient" : "Patient" ,
"caseSheetPatientId" : "Mobile" ,
"caseSheetProsthesis" : "Prosthesis" ,
"caseSheetToothChart" : "Tooth Chart" ,
"caseSheetComments" : "Comments" ,
"caseSheetNoComments" : "No comments." ,
"errorDownloadCaseSheet" : "Could not download the case sheet PDF." ,
"externalCodePlaceholder" : "external code e.g. exocad code" ,
2026-08-19 15:05:58 +03:30
"errorUpdateExternalCode" : "Could not save the external code." ,
"addCase" : "Add case" ,
"addCaseTitle" : "New case" ,
"addCaseSubtitle" : "Enter the referring clinic or patient, then add prosthesis lines. Start when the case is ready." ,
"startCase" : "Start" ,
"draftBadge" : "Draft" ,
"referringClinic" : "Referring clinic" ,
"referringDentist" : "Dentist" ,
"patientName" : "Patient name" ,
"partnerClinic" : "Linked clinic" ,
"partnerClinicNone" : "None" ,
"dueDateField" : "Due date" ,
"caseLinesTitle" : "Work lines" ,
"addLine" : "Add line" ,
"lineChip" : "Line {n}" ,
"removeLineAria" : "Remove line {n}" ,
"errorCreateCase" : "Could not create the case." ,
"errorSaveCase" : "Could not save the case." ,
"errorStartCase" : "Could not start the case."
2026-07-14 21:07:05 +03:30
} ,
"labCaseAccess" : {
"pageTitle" : "Case tasks" ,
"loading" : "Loading case…" ,
"accessDeniedTitle" : "Access denied" ,
"accessDenied" : "You do not have permission to view this case. Sign in with a lab or clinic account that has access, and make sure you are the treatment provider for clinic access." ,
"emptyTasks" : "No tasks found for this case." ,
"caseSummary" : "{clinic} · {patient}" ,
"labName" : "Lab: {name}"
2026-06-28 22:56:56 +03:30
} ,
"tasks" : {
"title" : "Tasks" ,
2026-07-07 15:31:09 +03:30
"subtitle" : "All lab tasks from connected clinics. Filter, sort, and update the status of each step." ,
"subtitleOwner" : "All lab tasks from connected clinics. Filter, sort, and update the status of each step." ,
2026-06-28 22:56:56 +03:30
"loading" : "Loading tasks…" ,
2026-07-07 15:31:09 +03:30
"emptyList" : "No tasks match the current filters." ,
"emptyListOwner" : "No tasks match the current filters." ,
2026-06-28 22:56:56 +03:30
"noPermissionTitle" : "Tasks" ,
"noPermissionBody" : "You do not have permission to view tasks for this organization." ,
"fromClinic" : "From {name}" ,
"patientLabel" : "Patient" ,
"taskDate" : "{date}" ,
2026-07-07 15:31:09 +03:30
"teethLabel" : "Teeth {teeth}" ,
"importantBadge" : "Important" ,
"lastUpdatedBy" : "Updated by {name}" ,
2026-06-28 22:56:56 +03:30
"statusInProgress" : "In progress" ,
"statusCompleted" : "Completed" ,
2026-07-07 15:31:09 +03:30
"searchPlaceholder" : "Search patient or clinic…" ,
"filterClinic" : "Clinic" ,
"filterClinicAll" : "All clinics" ,
"filterStatus" : "Status" ,
"filterStatusAll" : "All statuses" ,
2026-07-13 02:09:49 +03:30
"filterStepCompleted" : "Step completed" ,
"filterStepCompletedAll" : "Any step" ,
2026-07-07 15:31:09 +03:30
"showCompleted" : "Show completed" ,
2026-07-13 13:22:38 +03:30
"importantOnly" : "Important first" ,
2026-07-13 15:47:32 +03:30
"assignedToMe" : "Assigned to me" ,
2026-07-13 16:30:36 +03:30
"overdueOnly" : "Overdue cases only" ,
2026-07-14 03:06:56 +03:30
"unassignedOnly" : "Unassigned only" ,
2026-07-13 15:47:32 +03:30
"assignedToStaff" : "Assigned to {name}" ,
2026-07-13 13:22:38 +03:30
"resetView" : "Reset filters & sort" ,
"showInCase" : "Show in case" ,
"showInCaseNotFound" : "This task is not in the default in-progress list." ,
"showInCaseError" : "Could not locate this task in the list." ,
"locatingCase" : "Finding case in list…" ,
"taskCompletedToast" : "Step completed — nice work!" ,
"taskCompletedFlash" : "Done" ,
2026-07-07 15:31:09 +03:30
"filterSentFrom" : "From" ,
"filterSentTo" : "To" ,
"sortBy" : "Sort by" ,
"sortDate" : "Date" ,
2026-07-13 16:30:36 +03:30
"sortDueDate" : "Case due date" ,
2026-07-07 15:31:09 +03:30
"sortStatus" : "Status" ,
"sortClinic" : "Clinic" ,
"sortPatient" : "Patient" ,
"sortImportant" : "Important" ,
2026-07-08 02:53:47 +03:30
"sortProsthesis" : "Prosthesis type" ,
"sortTaskType" : "Task type" ,
2026-07-07 17:14:31 +03:30
"sortDirection" : "Sort direction" ,
2026-07-13 02:09:49 +03:30
"groupingOffClinic" : "Sorted by clinic — case grouping is off." ,
"groupingOffPatient" : "Sorted by patient — case grouping is off." ,
"groupingOffProsthesis" : "Sorted by prosthesis type — case grouping is off." ,
"groupingOffTaskType" : "Sorted by task type — case grouping is off." ,
"groupingOffStatus" : "Sorted by status — case grouping is off." ,
2026-07-13 16:30:36 +03:30
"groupingOffDueDate" : "Sorted by due date — case grouping is off." ,
2026-07-13 02:09:49 +03:30
"caseReceivedAt" : "Received {date}" ,
2026-07-13 16:30:36 +03:30
"caseDueDate" : "Due {date}" ,
"overdueBadge" : "Overdue" ,
2026-07-13 02:09:49 +03:30
"caseTaskProgress" : "{completed}/{total} tasks on this page" ,
2026-07-07 15:31:09 +03:30
"clearFilters" : "Clear filters" ,
"commentsButton" : "Comments" ,
2026-06-28 22:56:56 +03:30
"errorLoadList" : "Failed to load tasks." ,
"errorUpdateTask" : "Failed to update task." ,
"pageSummary" : "Page {page} of {totalPages} ({total} tasks)"
2026-06-28 14:59:06 +03:30
} ,
2026-07-07 15:31:09 +03:30
"caseComments" : {
"title" : "Comments" ,
"placeholder" : "Write a comment…" ,
"reply" : "Reply…" ,
"post" : "Post" ,
"empty" : "No comments yet." ,
"visibleToClinicToggle" : "Visible to clinic" ,
"clinicCanSee" : "Clinic can see this" ,
"hiddenFromClinic" : "Hidden from clinic" ,
"makeVisible" : "Make visible to clinic" ,
"makeHidden" : "Hide from clinic" ,
"labAuthor" : "Lab" ,
"clinicAuthor" : "Clinic" ,
"errorLoad" : "Failed to load comments." ,
"errorPost" : "Failed to post comment." ,
2026-07-08 02:53:47 +03:30
"errorToggle" : "Failed to update comment visibility." ,
"send" : "Send comment" ,
"composerVisible" : "Visible to clinic" ,
"composerHidden" : "Hidden from clinic"
2026-07-07 15:31:09 +03:30
} ,
2026-06-20 14:51:43 +03:30
"appointments" : {
"title" : "Appointments" ,
"subtitle" : "Search a patient, pick a date, then click a time slot under a provider to book." ,
"loadingSchedule" : "Loading schedule…" ,
"infoPastViewOnly" : "Past appointments are view-only." ,
2026-07-17 11:21:08 +03:30
"infoEditBlockedHasTreatment" : "This appointment cannot be edited because a treatment is linked to it." ,
2026-06-20 14:51:43 +03:30
"infoSelectPatient" : "Select a patient before booking." ,
"errorOutsideHours" : "This appointment falls outside the provider's current working hours and cannot be edited." ,
"successUpdated" : "Appointment updated." ,
"successSaved" : "Appointment saved." ,
"errorUpdate" : "Could not update appointment." ,
"errorSave" : "Could not save appointment." ,
"confirmRemove" : "Remove this appointment?" ,
"successRemoved" : "Appointment removed." ,
"errorDelete" : "Could not delete appointment." ,
2026-07-16 22:35:02 +03:30
"deleteBlockedHint" : "This appointment cannot be deleted because a treatment is linked to it." ,
2026-06-20 14:51:43 +03:30
"errorLoadSchedule" : "Failed to load schedule." ,
"successPatientSaved" : "Patient {firstName} {lastName} was saved." ,
"searchPlaceholder" : "Search existing patients" ,
"searching" : "Searching…" ,
"searchHint" : "Type to search patients by name, phone, or email." ,
"noPermissionAdd" : "You do not have permission to add patients." ,
"editTitle" : "Edit appointment" ,
"newTitle" : "New appointment" ,
"providerLabel" : "Provider:" ,
"patientLabel" : "Patient" ,
"startLabel" : "Start" ,
"endLabel" : "End" ,
"purposeLabel" : "Purpose" ,
"errorSelectPatient" : "Select a patient first." ,
2026-07-12 22:07:11 +03:30
"patientSearchPlaceholder" : "Search patients by name, phone, or email" ,
"patientSearchEmpty" : "No patients match this search." ,
"patientLockedHint" : "Patient cannot be changed because a treatment is linked to this appointment." ,
2026-06-20 14:51:43 +03:30
"errorEndAfterStart" : "End time must be after start time." ,
"errorPastSchedule" : "Cannot schedule in the past." ,
"errorPastViewOnly" : "Past appointments are view-only." ,
"errorMissingDetails" : "Missing appointment details." ,
"noProviders" : "No providers available. Add staff with treatment edit access to see columns here." ,
"noWorkingHours" : "No working hours are configured for this day. Set provider working hours in Staff management." ,
"noHoursSet" : "No hours set" ,
"offToday" : "Off today" ,
"slotOffToday" : "Provider is off today" ,
"slotHoursNotConfigured" : "Working hours not configured" ,
"slotOutsideHours" : "Outside working hours" ,
"slotCannotCreate" : "You cannot create appointments" ,
"slotBookAt" : "Book {time}" ,
"outsideHoursBlocked" : "Outside working hours — editing blocked" ,
"overlappingChoose" : "{count} overlapping — click to choose" ,
"overlapping" : "{count} overlapping" ,
"legend" : "Legend" ,
"overlappingTitle" : "Overlapping appointments ({count})" ,
"purposeConsultation" : "Consultation" ,
"purposeFilling" : "Filling" ,
"purposeEndo" : "Endo" ,
"purposeVisit" : "Visit" ,
"purposeHygiene" : "Hygiene"
} ,
"treatment" : {
"loading" : "Loading…" ,
"noPermissionTitle" : "Treatment workspace" ,
"noPermissionBody" : "You do not have permission to view the Treatment tab for this organization." ,
"title" : "Treatment" ,
"subtitleEdit" : "Document cases for your appointments, save drafts, and send work to linked organizations." ,
2026-06-28 17:14:02 +03:30
"subtitleEditPhase4" : "Plan treatment details first, then group lab-dependent work into shipments in the lab dispatch panel." ,
2026-06-20 14:51:43 +03:30
"subtitleReadOnly" : "View-only access — you can review appointments and treatment history but cannot edit." ,
"pastDayNotice" : "Past days are view-only. You can review appointments and history, but treatment cases cannot be added or changed." ,
"selectedPatient" : "Selected patient" ,
"purposeLabel" : "Purpose:" ,
"loadingAppointments" : "Loading appointments…" ,
"selectDayWithAppointment" : "Select a day with at least one appointment." ,
"confirmDiscard" : "You have unsaved changes. Discard them and continue?" ,
"errorChooseOrg" : "Choose at least one active organization to send this case." ,
"successCaseSent" : "Case sent to selected organizations." ,
"successFilesUploaded" : "{count} file(s) uploaded successfully." ,
"errorLoadAppointments" : "Failed to load appointments." ,
"errorLoadOrgs" : "Failed to load linked organizations." ,
"errorLoadHistory" : "Failed to load treatment history." ,
"errorLoadDraft" : "Failed to load treatment draft." ,
"errorUpload" : "Failed to upload attachments." ,
"errorSaveDraft" : "Failed to save treatment draft." ,
"errorSendCase" : "Failed to send case." ,
"errorCaseMustSave" : "Case must be saved before sending." ,
2026-06-28 21:45:33 +03:30
"treatmentPlanTitle" : "Treatment · {patientName}" ,
2026-06-20 14:51:43 +03:30
"hiddenMessage" : "Appointments are hidden." ,
"showAppointments" : "Show appointments" ,
"appointmentsTitle" : "My appointments" ,
"hideAppointments" : "Hide appointments" ,
2026-08-19 15:05:58 +03:30
"emptyDay" : "No appointments or unscheduled treatments assigned to you on this day." ,
"unscheduledHeading" : "Without appointment" ,
"noAppointment" : "No appointment" ,
"walkIn" : "Walk-in" ,
"newTreatment" : "New treatment" ,
"newWalkInTreatment" : "Walk-in treatment" ,
"errorCreateTreatment" : "Could not create treatment." ,
"deleteEmptyTreatment" : "Delete empty treatment" ,
"confirmDeleteEmptyTreatment" : "Delete this treatment? It has no details yet." ,
"errorDeleteTreatment" : "Could not delete treatment." ,
2026-06-20 14:51:43 +03:30
"casesTitle" : "Treatment cases" ,
"casesSubtitle" : "Each case has its own teeth, notes, attachments, and destinations for send." ,
2026-06-28 17:14:02 +03:30
"detailsTitle" : "Treatment details" ,
"detailsSubtitle" : "Plan teeth, type, notes, and attachments for each detail line." ,
"addDetail" : "Add detail" ,
2026-07-16 22:45:37 +03:30
"confirmRemoveDetail" : "Remove this treatment detail?" ,
2026-07-17 00:39:32 +03:30
"removeDetailAria" : "Remove detail {n}" ,
2026-06-28 17:14:02 +03:30
"detailLabel" : "Detail {n}" ,
"detailSentBadge" : "sent" ,
"detailLockedInShipment" : "This detail was sent to a lab and can no longer be edited." ,
"detailsSaveHint" : "Lab dispatch is configured separately below." ,
2026-06-20 14:51:43 +03:30
"addCase" : "Add case" ,
"caseLabel" : "Case {n}" ,
2026-07-17 12:30:43 +03:30
"comments" : "Notes" ,
"commentsPlaceholder" : "Write clinical notes for this detail…" ,
2026-06-20 14:51:43 +03:30
"treatmentType" : "Treatment type" ,
2026-07-13 01:03:26 +03:30
"treatmentTypePlaceholder" : "Select treatment type…" ,
"treatmentTypeNotSelected" : "Type not selected" ,
2026-06-20 14:51:43 +03:30
"typeConsultation" : "consultation" ,
"typeFilling" : "filling" ,
"typeEndo" : "endo" ,
"typeVisit" : "visit" ,
"typeHygiene" : "hygiene" ,
"attachments" : "Attachments" ,
"attachFiles" : "Attach files for this treatment case" ,
"chooseFiles" : "Choose files" ,
"sendToOrgs" : "Send this case to linked organizations" ,
"searchOrgsPlaceholder" : "Search active organizations..." ,
"recent" : "Recent:" ,
"noOrgMatch" : "No active organization matches your search." ,
2026-07-13 01:03:26 +03:30
"inviteLab" : "Invite a lab" ,
"noOrgInvitePermission" : "You do not have permission to invite labs. Contact your organization owner." ,
2026-06-20 14:51:43 +03:30
"sendThisCase" : "Send this case" ,
2026-06-28 17:14:02 +03:30
"labDispatchTitle" : "Lab dispatch" ,
"labDispatchSubtitle" : "Group lab-dependent details into shipments and send them to linked labs." ,
2026-06-28 18:08:29 +03:30
"labDispatchSendHint" : "Shipment grouping is saved when you send to the lab." ,
2026-06-28 17:14:02 +03:30
"addLabShipment" : "Add lab shipment" ,
"labShipmentLabel" : "Shipment {n}" ,
"includeDetails" : "Include treatment details" ,
2026-06-28 18:48:06 +03:30
"labShipmentIncludedDetails" : "Included in this shipment" ,
"labShipmentNoIncludedDetails" : "No details were included in this shipment." ,
"labShipmentNoDetailsAvailable" : "All lab details are already in other shipments or have been sent." ,
2026-06-28 17:14:02 +03:30
"labDetailLine" : "Detail {n} · {type} · {teeth}" ,
2026-07-06 20:40:19 +03:30
"noLabDetails" : "No prosthesis treatment details yet. Add prosthesis in treatment details above." ,
2026-06-28 17:14:02 +03:30
"labDispatchEmpty" : "Add a lab shipment to group details and send them to a lab." ,
2026-07-06 20:40:19 +03:30
"prosthesisTypesTitle" : "Prosthesis types" ,
"prosthesisApplyAll" : "Apply to all teeth" ,
"prosthesisSelectPlaceholder" : "Select prosthesis type…" ,
"prosthesisColTooth" : "Tooth" ,
"prosthesisColDetail" : "Detail" ,
"prosthesisColType" : "Prosthesis type" ,
2026-07-13 22:53:23 +03:30
"prosthesisUnassigned" : "Unassigned" ,
2026-06-28 17:14:02 +03:30
"selectLab" : "Destination lab" ,
"selectLabPlaceholder" : "Choose a linked lab…" ,
"sendToLab" : "Send to lab" ,
2026-07-13 16:30:36 +03:30
"dueDateLabel" : "Due date" ,
"dueDateOptional" : "optional" ,
"dueDateLockedCompleted" : "Due date cannot be changed after all tasks are completed." ,
"dueDateUpdateError" : "Failed to update due date." ,
2026-06-28 17:14:02 +03:30
"saveLabShipments" : "Save lab shipments" ,
"labDispatchSaveHint" : "Saves shipment grouping without sending." ,
"successLabShipmentsSaved" : "Lab shipments saved." ,
"errorSaveLabShipments" : "Failed to save lab shipments." ,
"errorLabCaseNeedsDetails" : "Select at least one treatment detail for this shipment." ,
2026-06-20 14:51:43 +03:30
"unsavedChanges" : "Unsaved changes" ,
2026-06-28 18:08:29 +03:30
"saveStatusSaving" : "Saving…" ,
"saveStatusSaved" : "All changes saved" ,
"saveStatusError" : "Could not save — check your connection" ,
2026-06-20 14:51:43 +03:30
"sendSavesFirst" : "Sending is per case and saves first automatically." ,
"historyTitle" : "Previous treatments" ,
2026-07-13 01:03:26 +03:30
"historyPatientScope" : "Previous treatments for {patientName}" ,
"historyCurrentAppointment" : "This appointment" ,
"historySubtitle" : "Click a past plan to preview it, then load it into the workspace if needed." ,
"historyFilterNotShipped" : "Not shipped to lab" ,
"historyFilterDate" : "Date" ,
"historyClearFilters" : "Remove filters" ,
"historyFilterEmpty" : "No treatments match these filters." ,
"labShipmentBlockedTitle" : "Lab shipment not available yet" ,
"labShipmentBlockedBody" : "Select at least one tooth on this prosthesis detail before you can create a lab shipment." ,
"labCaseCommentsTitle" : "Lab case comments" ,
"labCaseCommentsHint" : "Message the lab while this case is still in progress. Comments close when all lab tasks are completed." ,
2026-07-13 22:53:23 +03:30
"labShipmentsTitle" : "Lab shipments" ,
"labShipmentsSubtitle" : "Sent cases for this patient — open one to follow progress and messages." ,
"labShipmentsPatientScope" : "Sent cases for {patientName} — open one to follow progress and messages." ,
"labShipmentsUpdatesScope" : "Cases with new lab activity — open one to review and clear the update." ,
"labShipmentsScopePatient" : "This patient" ,
"labShipmentsScopeUpdates" : "All updates ({count})" ,
"labShipmentsOtherPatientsUnread" : "{count, plural, one {# update on another patient} other {# updates on other patients}}" ,
"labShipmentsUpdatesEmpty" : "No cases with new lab activity." ,
"labShipmentsEmpty" : "No lab shipments for this patient yet." ,
"labShipmentTeethCount" : "{count, plural, one {# tooth} other {# teeth}}" ,
"historyShowFilters" : "Show filters" ,
"historyHideFilters" : "Hide filters" ,
"labTrackerExpand" : "View activity" ,
"labTrackerCollapse" : "Hide activity" ,
"activityFeedTitle" : "Activity" ,
"activityFeedEmpty" : "No activity recorded yet." ,
"unreadLabCase" : "Unread lab updates" ,
"overdueBadge" : "Overdue" ,
"activityUnknownActor" : "Someone" ,
"activityUnknownStep" : "Task" ,
"activityCaseSent" : "Case sent to lab · {date}" ,
"activityClinicComment" : "{actor}: “{preview}” · {date}" ,
"activityLabComment" : "{actor}: “{preview}” · {date}" ,
"activityTaskCompleted" : "{step} completed by {actor} · {date}" ,
2026-07-18 17:23:47 +03:30
"activityTaskAssigned" : "{step} assigned by {actor} · {date}" ,
2026-07-13 22:53:23 +03:30
"activityCaseImportant" : "Marked important by {actor} · {date}" ,
"activityCaseAmended" : "Case updated by {actor} · {date}" ,
"activityGeneric" : "Update · {date}" ,
2026-06-20 14:51:43 +03:30
"loadingHistory" : "Loading history…" ,
2026-06-28 21:45:33 +03:30
"historyEmpty" : "No other treatments recorded for this patient yet." ,
"historyDetailLabel" : "Detail {n} · {type}" ,
2026-07-13 01:03:26 +03:30
"previewCurrentDraft" : "Current draft" ,
"previewBrowsingTitle" : "Previewing saved plan" ,
"browseBanner" : "Viewing {date} — this plan is not loaded in the editor yet." ,
"loadIntoWorkspace" : "Load into workspace" ,
"backToCurrentDraft" : "Back to current draft" ,
"labAttentionTitle" : "Lab dispatch needed" ,
"labAttentionSubtitle" : "These lab-dependent details have not been sent to a lab yet." ,
"labAttentionCurrentDraft" : "Current appointment" ,
"labAttentionGoDispatch" : "Go to dispatch" ,
"labAttentionLoadDispatch" : "Load & dispatch" ,
2026-06-28 21:45:33 +03:30
"previewTitle" : "Treatment preview" ,
"openTreatment" : "Open" ,
"selectAppointment" : "Select an appointment to preview its treatment." ,
"detailCount" : "{n} detail(s)" ,
"detailSummary" : "Detail {n}: {type}" ,
"detailAttachmentCount" : "{n, plural, one {# file} other {# files}}" ,
"detailNotSentToLab" : "Not sent to lab" ,
"detailPendingLabSend" : "This lab detail has not been sent yet." ,
2026-06-20 14:51:43 +03:30
"teethLabel" : "Teeth:" ,
"teethNone" : "None selected" ,
2026-06-28 21:45:33 +03:30
"historicalReadonlyNotice" : "You are viewing a past treatment (read-only)." ,
"errorNoAppointmentForTreatment" : "This treatment has no linked appointment and cannot be opened." ,
2026-07-13 22:53:23 +03:30
"errorNoTreatmentForPatient" : "This patient has no treatment records yet." ,
2026-06-20 14:51:43 +03:30
"noCases" : "No cases in this treatment." ,
2026-06-28 21:45:33 +03:30
"noDetails" : "No treatment details yet." ,
2026-06-20 14:51:43 +03:30
"typeLabel" : "Type:" ,
"commentsLabel" : "Comments:" ,
"commentsEmpty" : "Comments: —" ,
"attachFilesShort" : "Attach files" ,
"sendCase" : "Send this case" ,
"sendToLinkedOrgs" : "Send to linked organizations" ,
"noActiveOrgs" : "No active linked organizations." ,
"confirmSend" : "Confirm send" ,
"toothChartTitle" : "FDI tooth chart" ,
2026-07-17 00:39:32 +03:30
"entryWizardLabel" : "Treatment entry steps" ,
"entryStepTeeth" : "Teeth" ,
"entryStepContent" : "Content" ,
"entryStepLab" : "Lab" ,
"entryStepBack" : "Back" ,
"entryStepNext" : "Next" ,
"entryStepLabUnavailable" : "Lab dispatch is available after you save a lab-dependent detail with teeth selected." ,
2026-07-07 18:43:10 +03:30
"toothChartTitleCompact" : "Tooth chart" ,
2026-08-19 00:06:21 +03:30
"toothChartHint" : "Tap teeth to select or deselect. When two neighbors are selected, an empty circle appears between them — tap it to connect (or tap a filled circle to disconnect). Shift-click a range to select all in between (not connected until you fill the circles)." ,
2026-07-17 00:39:32 +03:30
"toothConnectedHint" : "Connected selection" ,
2026-08-19 00:06:21 +03:30
"toothLinkHint" : "Connect these teeth" ,
"toothUnlinkHint" : "Disconnect these teeth" ,
"toothLinkAria" : "Connect teeth {a} and {b}" ,
"toothUnlinkAria" : "Disconnect teeth {a} and {b}" ,
2026-07-17 00:39:32 +03:30
"toothConnectedSuffix" : " (connected)" ,
"connectedBadge" : "Connected" ,
"prosthesisConnectedLabel" : "Connected teeth prosthesis type" ,
2026-07-13 22:53:23 +03:30
"toothChartWholePlan" : "Full View" ,
2026-07-07 18:43:10 +03:30
"labShipmentAttachments" : "Files for the lab" ,
"labShipmentAttachmentsHint" : "Select which attachments from this detail are included in this shipment. None are sent by default." ,
2026-06-20 14:51:43 +03:30
"selectedLabel" : "Selected:" ,
"selectedEmpty" : "—" ,
"upperArch" : "Upper arch" ,
"lowerArch" : "Lower arch" ,
"toothAria" : "FDI tooth {fdi}" ,
"toothSelectedSuffix" : ", selected" ,
"sentToAt" : "Sent to {orgName} at {datetime}" ,
"fallbackOrgName" : "organization"
} ,
"organizations" : {
"loadingOrganization" : "Loading organization..." ,
2026-08-19 02:41:05 +03:30
"subtitle" : "Search organizations, send connection requests to existing accounts, or invitation links when they are not on Nudentic yet." ,
2026-06-20 14:51:43 +03:30
"invitationHistory" : "Invitation History" ,
"searchPlaceholder" : "Search {counterpart} by name, email, or phone..." ,
"backToList" : "Back to list" ,
"tableOrganization" : "Organization" ,
"tableOwnerEmail" : "Owner email" ,
"tableDate" : "Date" ,
"tableStatus" : "Status" ,
"tableAction" : "Action" ,
"emptyConnections" : "No connections yet. Search to send a connection request or an invitation link." ,
"statusInvitationPending" : "Invitation pending" ,
"statusConnectionPending" : "Connection request pending" ,
"statusConnected" : "Connected" ,
"statusDeclined" : "Connection request declined" ,
"statusFound" : "Found" ,
"statusToday" : "Today" ,
"acceptRequest" : "Accept connection request" ,
"declineRequest" : "Decline connection request" ,
"removeConnection" : "Remove connection" ,
"sendRequest" : "Send connection request" ,
"noDirectoryResults" : "No organization found in directory search." ,
"hideInvitationFields" : "Hide invitation fields" ,
"sendInvitationLink" : "Send invitation link" ,
"counterpartNameLabel" : "{counterpart} name" ,
"ownerEmailLabel" : "Owner email" ,
"sendInvitation" : "Send invitation" ,
"successConnectionSent" : "{counterpart} connection request sent." ,
"successInviteCreated" : "Invitation link created for {email}" ,
"successLinkCopied" : "Invitation link copied to clipboard." ,
"successAccepted" : "Connection request accepted." ,
"successDeclined" : "Connection request declined." ,
"successRemoved" : "Connection removed." ,
"historyTitle" : "Invitation History" ,
"loadingHistory" : "Loading invitation history..." ,
"historyEmpty" : "No invitations yet." ,
"tableInvitationLink" : "Invitation link" ,
"statusPending" : "Invitation pending" ,
"statusAccepted" : "Invitation accepted" ,
"statusRejected" : "Invitation rejected" ,
"statusExpired" : "Invitation expired" ,
"copyInvitationLink" : "Copy invitation link" ,
"copyInvitationLinkTitle" : "Copy invitation link (generates a new link if needed)" ,
"selectorTitle" : "Organizations" ,
"selectorSubtitleWithCreate" : "Select an organization to continue, or create a new one." ,
"selectorSubtitleSelectOnly" : "Select an organization to continue." ,
"createOrganization" : "Create Organization" ,
"createAndContinue" : "Create and Continue" ,
"emptyCanCreate" : "No organizations found. Create your first one to continue." ,
"emptyAskOwner" : "No organizations found. Ask an organization owner to invite you." ,
"continueArrow" : "Continue →" ,
"planLabel" : "Plan: {name} • {maxUsers} users" ,
"counterpartClinic" : "Clinic" ,
2026-06-28 23:19:33 +03:30
"counterpartLab" : "Lab" ,
"viewCaseHistory" : "View case history" ,
"caseHistoryBackToConnections" : "← Back to connections" ,
"caseHistoryTitle" : "Case history with {name}" ,
2026-07-13 22:53:23 +03:30
"caseHistorySlimClinicBody" : "Follow lab cases in Treatment for each patient." ,
"caseHistorySlimClinicHint" : "Open Treatment, select the patient, and use Lab shipments in the left panel to track cases sent to {name}." ,
"caseHistorySlimClinicCta" : "Open Treatment" ,
"caseHistorySlimLabBody" : "Production cases for this clinic live on the Cases tab." ,
"caseHistorySlimLabHint" : "Use Cases to work cases received from {name}. Filter by this clinic if needed." ,
"caseHistorySlimLabCta" : "Open Cases"
2026-06-20 14:51:43 +03:30
} ,
"settings" : {
"accountTitle" : "Account" ,
"accountSubtitle" : "Profile and security settings for your login." ,
2026-07-12 15:11:50 +03:30
"participationSectionTitle" : "Clinical participation" ,
"participationSectionSubtitle" : "Choose whether you personally take part in clinical or lab work for this organization." ,
"participateInTreatments" : "I want to participate in treatments" ,
"participateInTasks" : "I want to participate in tasks" ,
"participateWorkingHoursTitle" : "Working hours" ,
"participateWorkingHoursSubtitle" : "Set your schedule so appointments can be booked for you." ,
"participateSaveHours" : "Save and participate" ,
"participateEnabledTreatments" : "You are now participating in treatments." ,
"participateEnabledTasks" : "You are now participating in tasks." ,
"participateDisabledTreatments" : "You are no longer participating in treatments." ,
"participateDisabledTasks" : "You are no longer participating in tasks." ,
"participateUpdateFailed" : "Could not update participation settings. Please try again." ,
"participateConfirmRevokeTitle" : "Stop participating?" ,
"participateConfirmRevokeBodyTreatments" : "You will lose treatment access and be removed from the appointments schedule. Your saved working hours will be kept." ,
"participateConfirmRevokeBodyTasks" : "You will lose task edit access and be removed from the efficiency report." ,
"participateConfirmRevokeConfirm" : "Stop participating" ,
"changePasswordOption" : "Change password" ,
2026-07-04 00:01:58 +03:30
"changePasswordTitle" : "Change password" ,
"resetPasswordTitle" : "Set a new password" ,
"resetPasswordSubtitle" : "Your mobile was verified. Choose a new password for your account." ,
"currentPassword" : "Current password" ,
"newPassword" : "New password" ,
"confirmNewPassword" : "Confirm new password" ,
"updatePassword" : "Update password" ,
"setNewPassword" : "Save new password" ,
"passwordChanged" : "Password updated. Please sign in again." ,
"passwordChangeFailed" : "Could not update password. Please try again." ,
2026-06-20 14:51:43 +03:30
"subscriptionsTitle" : "Subscriptions" ,
2026-08-19 02:41:05 +03:30
"subscriptionsSubtitle" : "Your Nudentic workspace plan and seats for {orgName}. Clinic and lab income tracking stays under the sidebar Billing tab." ,
2026-06-20 14:51:43 +03:30
"noSubscriptionNotice" : "This organization has no active subscription. Select a plan below to start the purchase process." ,
"currentPlan" : "Current plan" ,
"planPrice" : "Plan price" ,
"seatsUsed" : "Seats used" ,
"seatsRemaining" : "Seats remaining" ,
"daysRemaining" : "Days remaining" ,
"unlimited" : "Unlimited" ,
"unlimitedSeats" : "Unlimited seats" ,
"seatsCount" : "{n} seats" ,
"pricePerMonth" : "${price} / month" ,
"noActiveSubscription" : "No active subscription for this organization." ,
"trialEnded" : "Trial period has ended. Choose a plan when checkout is available." ,
"trialEndsIn" : "Trial ends in {days} day(s)." ,
"seatsLow" : "Seat usage is high for this organization." ,
"choosePlanIntro" : "Choose a plan to continue. Purchase integration is not active yet, so this currently prepares the selection step only." ,
"planSolo" : "Solo" ,
"planSmall" : "Small" ,
"planMedium" : "Medium" ,
"planLarge" : "Large" ,
"planEnterprise" : "Enterprise" ,
"startPurchase" : "Start purchase process" ,
"purchaseNotice" : "Purchase flow will be enabled soon. {plan} is selected and ready for checkout setup."
} ,
"schedule" : {
"defaultLabel" : "Schedule date" ,
"previousDay" : "Previous day" ,
"nextDay" : "Next day" ,
"chooseDate" : "Choose schedule date" ,
2026-07-12 21:16:38 +03:30
"today" : "Today" ,
2026-06-20 14:51:43 +03:30
"year" : "Year" ,
"month" : "Month" ,
"day" : "Day" ,
"monthJanuary" : "January" ,
"monthFebruary" : "February" ,
"monthMarch" : "March" ,
"monthApril" : "April" ,
"monthMay" : "May" ,
"monthJune" : "June" ,
"monthJuly" : "July" ,
"monthAugust" : "August" ,
"monthSeptember" : "September" ,
"monthOctober" : "October" ,
"monthNovember" : "November" ,
"monthDecember" : "December"
2026-07-12 18:27:38 +03:30
} ,
2026-07-18 01:09:54 +03:30
"notifications" : {
"bellAria" : "Notifications" ,
"unreadCount" : "{count} unread notifications" ,
"dropdownTitle" : "Notifications" ,
"viewAll" : "View all" ,
"pageTitle" : "Notifications" ,
"pageSubtitle" : "Updates from cases, tasks, organizations, and staff." ,
"loading" : "Loading notifications…" ,
"empty" : "No notifications yet." ,
"loadMore" : "Load more" ,
"markAllRead" : "Mark all as read" ,
"errorLoad" : "Could not load notifications." ,
"errorMarkRead" : "Could not update notification." ,
"typeCaseSent" : "New lab case received" ,
"typeClinicComment" : "New clinic comment on a case" ,
"typeLabComment" : "New lab comment on a case" ,
"typeLabCommentClinic" : "New lab comment on your case" ,
"typeCaseImportant" : "Case marked as important" ,
"typeTaskCompleted" : "Lab task completed" ,
"typeTaskAssigned" : "A task was assigned to you" ,
"typeConnectionRequest" : "New organization connection request" ,
"typeStaffInvite" : "Staff invitation created" ,
2026-07-18 16:57:13 +03:30
"typeUnknown" : "Notification" ,
"destCases" : "Open Cases" ,
"destTasks" : "Open Tasks" ,
"destTreatment" : "Open Treatment" ,
"destOrganizations" : "Open Organizations" ,
"destStaff" : "Open Staff" ,
"destOpen" : "Open"
2026-07-18 01:09:54 +03:30
} ,
2026-07-12 18:27:38 +03:30
"errors" : {
"GENERIC" : "Something went wrong. Please try again." ,
"NETWORK_ERROR" : "Could not reach the server. Check your connection and try again." ,
"TIMEOUT" : "The request took too long. Please try again." ,
"AUTH_INVALID_CREDENTIALS" : "Incorrect email or password." ,
"AUTH_UNAUTHORIZED" : "Your session has expired. Please sign in again." ,
"AUTH_REFRESH_TOKEN_NOT_FOUND" : "Your session has expired. Please sign in again." ,
"AUTH_REFRESH_TOKEN_INVALID" : "Your session has expired. Please sign in again." ,
"AUTH_SESSION_EXPIRED" : "Your session has expired. Please sign in again." ,
"AUTH_USER_NOT_FOUND" : "We could not find your account." ,
"AUTH_ORG_NOT_SELECTED" : "Please select an organization to continue." ,
"AUTH_ORG_ACCESS_DENIED" : "You do not have access to this organization." ,
"AUTH_INVITATION_PENDING" : "Your invitation is still pending. Ask an administrator to activate your account." ,
"AUTH_REGISTRATION_EMAIL_EXISTS" : "An account with this email already exists. Sign in to add a new organization from your account." ,
"AUTH_REGISTRATION_MOBILE_EXISTS" : "This mobile number is already registered." ,
"AUTH_REGISTRATION_MOBILE_INVALID" : "Please enter a valid mobile number." ,
"AUTH_REGISTRATION_FAILED" : "Registration could not be completed. Please try again." ,
"AUTH_PASSWORD_INCORRECT" : "Current password is incorrect." ,
"AUTH_PASSWORD_RESET_EXPIRED" : "Password reset verification expired. Please verify your mobile number again." ,
"AUTH_VERIFICATION_CODE_INVALID" : "Invalid or expired verification code." ,
"AUTH_VERIFICATION_RATE_LIMIT" : "Please wait a moment before requesting another code." ,
"AUTH_SELECT_ORG_FIRST" : "Select an organization before creating a new one." ,
"AUTH_CREATE_ORG_OWNER_ONLY" : "Only owners of the current organization can create new organizations." ,
"AUTH_PASSWORD_CURRENT_REQUIRED" : "Current password is required." ,
"PERMISSION_DENIED" : "You do not have permission to perform this action." ,
"PERMISSION_ORG_MANAGE" : "You do not have permission to manage organizations." ,
"PERMISSION_CLINIC_ONLY" : "This action is only available for clinic organizations." ,
"PERMISSION_LAB_ONLY" : "This action is only available for lab organizations." ,
"PERMISSION_NOT_MEMBER" : "You are not a member of this organization." ,
"PERMISSION_OWNER_ONLY" : "Only organization owners can perform this action." ,
"PERMISSION_PARTICIPATION_SUBSCRIPTION" : "An active subscription is required to participate in treatments or tasks." ,
"PERMISSION_ENABLE_PARTICIPATION_FIRST" : "Enable treatment participation before setting working hours." ,
"PERMISSION_CLINIC_WORKING_HOURS" : "Working hours are only available for clinic organizations." ,
"PERMISSION_ACCESS_APPOINTMENTS" : "You do not have access to appointments." ,
"PERMISSION_EDIT_APPOINTMENTS" : "You cannot create or modify appointments." ,
"PERMISSION_ACCESS_TREATMENTS" : "You do not have access to treatments." ,
"PERMISSION_EDIT_TREATMENTS" : "You cannot edit treatments." ,
"PERMISSION_ACCESS_TASKS" : "You do not have access to tasks." ,
"PERMISSION_EDIT_TASKS" : "You cannot edit tasks." ,
"PERMISSION_ACCESS_CASES" : "You do not have access to cases." ,
2026-07-14 21:07:05 +03:30
"LAB_CASE_ACCESS_DENIED" : "You do not have permission to view this shared case." ,
2026-07-12 18:27:38 +03:30
"PERMISSION_ACCESS_STAFF" : "You do not have access to staff management." ,
"PERMISSION_EDIT_STAFF" : "You cannot manage staff working hours." ,
"PERMISSION_ORG_NOT_FOUND" : "Organization not found." ,
"VALIDATION_FAILED" : "Please check the form and try again." ,
"VALIDATION_EMAIL_INVALID" : "Please enter a valid email address." ,
"VALIDATION_PASSWORD_TOO_SHORT" : "Password is too short." ,
"VALIDATION_PASSWORD_REQUIRED" : "Password is required." ,
"VALIDATION_MOBILE_INVALID" : "Please enter a valid mobile number." ,
"VALIDATION_NAME_TOO_SHORT" : "Name is too short." ,
"VALIDATION_ORGANIZATION_NAME_REQUIRED" : "Organization name is required." ,
"VALIDATION_ORGANIZATION_TYPE_INVALID" : "Please select a valid organization type." ,
"VALIDATION_TOKEN_REQUIRED" : "This link is invalid or incomplete." ,
"VALIDATION_FIELD_REQUIRED" : "Please fill in all required fields." ,
"VALIDATION_LANGUAGE_INVALID" : "Please select a supported language." ,
"VALIDATION_INVALID_REQUEST" : "The request contains invalid data." ,
2026-08-19 01:43:50 +03:30
"VALIDATION_TIMEZONE_INVALID" : "Your timezone could not be determined. Refresh the page and try again." ,
"APPOINTMENT_INVALID_TIME" : "The appointment start or end time is invalid." ,
"APPOINTMENT_END_BEFORE_START" : "End time must be after start time." ,
"APPOINTMENT_TOO_LONG" : "An appointment cannot last more than 24 hours." ,
"APPOINTMENT_IN_PAST" : "You cannot book an appointment in the past." ,
"APPOINTMENT_INVALID_RANGE" : "The date range is invalid." ,
"APPOINTMENT_INVALID_RANGE_ORDER" : "The end of the range must be after the start." ,
"APPOINTMENT_INVALID_DATE" : "The selected date is invalid." ,
"APPOINTMENT_PROVIDER_NOT_MEMBER" : "This provider is not a member of the organization." ,
"APPOINTMENT_PROVIDER_INACTIVE" : "This provider is not an active staff member." ,
"APPOINTMENT_PROVIDER_NO_TREATMENT_EDIT" : "This provider cannot take treatment appointments." ,
"APPOINTMENT_PROVIDER_NO_WORKING_HOURS" : "This provider has no working hours set." ,
"APPOINTMENT_PROVIDER_NOT_WORKING_DAY" : "This provider does not work on the selected day." ,
"APPOINTMENT_OUTSIDE_WORKING_HOURS" : "This time is outside the provider’ s working hours." ,
"APPOINTMENT_NOT_FOUND" : "Appointment not found." ,
"APPOINTMENT_NOT_PROVIDER" : "You are not the provider for this appointment." ,
"PATIENT_NOT_FOUND" : "Patient not found." ,
"WORKING_HOURS_INVALID" : "Working hours are invalid. Check that shifts do not overlap." ,
"WORKING_HOURS_OWNER_NOT_ALLOWED" : "Set owner working hours from account settings." ,
"WORKING_HOURS_CONFLICTS_WITH_APPOINTMENTS" : "These hours conflict with upcoming appointments. Reschedule or remove those appointments first." ,
"STAFF_UNKNOWN_PERMISSIONS" : "One or more selected permissions are not valid." ,
"STAFF_NO_SUBSCRIPTION" : "Choose a plan before adding staff." ,
"STAFF_SEAT_LIMIT" : "Your plan has no free seats. Disable a member or upgrade to add more." ,
"STAFF_INVITE_OWNER_EMAIL" : "The organization owner is already a member." ,
"STAFF_ALREADY_MEMBER" : "This person is already a member." ,
"STAFF_OWNER_NO_INVITE_LINK" : "The owner does not use an invitation link." ,
"STAFF_ALREADY_ACCEPTED" : "This member has already accepted their invitation." ,
"STAFF_INVITE_MISSING" : "No invitation was found for this member." ,
"STAFF_INVITE_ALREADY_ACCEPTED" : "This invitation has already been accepted." ,
"STAFF_INVITE_INVALID" : "This invitation is no longer valid." ,
"STAFF_INVITE_REVOKED" : "This invitation has been revoked." ,
"STAFF_INVITE_EXPIRED" : "This invitation has expired." ,
"STAFF_ALREADY_ACTIVE" : "This member is already active." ,
"STAFF_ALREADY_DISABLED" : "This member is already disabled or pending." ,
"STAFF_CANNOT_DISABLE_SELF" : "You cannot disable your own access." ,
"STAFF_MEMBER_NOT_FOUND" : "Staff member not found." ,
"STAFF_CANNOT_EDIT_OWNER" : "The owner’ s membership cannot be edited here." ,
"STAFF_CANNOT_ENABLE_OWNER" : "The organization owner cannot be enabled this way." ,
"STAFF_CANNOT_DISABLE_OWNER" : "The organization owner cannot be disabled." ,
"STAFF_CANNOT_REMOVE_OWNER" : "The organization owner cannot be removed." ,
"ORG_CANNOT_LINK_SELF" : "You cannot link an organization to itself." ,
"ORG_LINK_WRONG_TYPE" : "You can only link to the matching organization type (clinic or lab)." ,
"ORG_TARGET_NO_SUBSCRIPTION" : "The other organization does not have an active subscription." ,
"ORG_LINK_EXISTS" : "These organizations are already linked." ,
"ORG_REQUEST_NOT_PENDING" : "Only pending connection requests can be answered." ,
"ORG_CANNOT_RESPOND_OWN" : "You cannot respond to your own connection request." ,
"ORG_INVITE_ALREADY_ACCEPTED" : "This invitation has already been accepted." ,
"ORG_INVITE_INVALID" : "This invitation is no longer valid." ,
"ORG_INVITE_REVOKED" : "This invitation has been revoked." ,
"ORG_INVITE_EXPIRED" : "This invitation has expired." ,
"ORG_INVITE_TYPE_MISMATCH" : "Organization type does not match this invitation." ,
"ORG_INVITE_OWNER_HAS_ORG" : "This owner already has an organization. Find it in search instead of sending an invitation." ,
"ORG_UNKNOWN_TYPE" : "Unknown organization type." ,
"ORG_COUNTERPART_NOT_LAB" : "The connected organization is not a lab." ,
"ORG_COUNTERPART_NOT_CLINIC" : "The connected organization is not a clinic." ,
"ORG_CONNECTION_NOT_FOUND" : "Connected organization not found." ,
"ORG_INVITE_NOT_FOUND" : "Invitation not found." ,
"ORG_ONLY_CLINIC_COMMENT" : "Only the clinic can comment on this case." ,
"CATALOG_UNKNOWN_TREATMENT_TYPE" : "Unknown treatment type." ,
"CATALOG_UNKNOWN_PROSTHESIS_TYPE" : "Unknown prosthesis type." ,
"CATALOG_TREATMENT_NOT_LAB_DEPENDENT" : "This treatment type is completed in the clinic and cannot be sent to a lab." ,
"TREATMENT_SAVE_DETAILS_BEFORE_LAB" : "Save treatment details before creating lab cases." ,
"TREATMENT_DETAIL_ONE_CASE" : "Each treatment detail can belong to only one lab case." ,
"TREATMENT_DETAILS_NOT_FOUND" : "One or more treatment details were not found." ,
"TREATMENT_DEST_NOT_LINKED" : "That organization is not an active linked lab." ,
"TREATMENT_TEETH_REQUIRED_TO_SHIP" : "Select teeth before sending this work to a lab." ,
"TREATMENT_TOOTH_UNKNOWN_DETAIL" : "A tooth is linked to an unknown treatment detail." ,
"TREATMENT_TOOTH_NOT_ON_DETAIL" : "A selected tooth is not on this treatment detail." ,
"TREATMENT_CASE_NO_DEST" : "This lab case has no destination organization." ,
"TREATMENT_CASE_NEEDS_DETAIL" : "A lab case must include a treatment detail." ,
"TREATMENT_CASE_ONE_DETAIL" : "A lab case can include only one treatment detail." ,
"TREATMENT_ONLY_PROVIDER_SEND" : "Only the treatment provider can send this lab case." ,
"TREATMENT_CASE_ALREADY_SENT" : "This case was already sent to that lab." ,
"TREATMENT_DUE_DATE_LOCKED" : "The due date cannot be changed after all tasks are completed." ,
"TREATMENT_INVALID_DUE_DATE" : "The due date is invalid." ,
"TREATMENT_DETAIL_KEY_REQUIRED" : "A treatment detail is required for this upload." ,
"TREATMENT_FILE_REQUIRED" : "At least one file is required." ,
"TREATMENT_ATTACHMENT_NOT_FOUND" : "Attachment not found." ,
"TREATMENT_FILE_UNAVAILABLE" : "This file is no longer available." ,
"TREATMENT_CASE_INVALID_ATTACHMENTS" : "One or more attachments are not valid for this lab case." ,
"TREATMENT_TOOTH_PROSTHESIS_INCOMPLETE" : "Each tooth needs a prosthesis type before sending." ,
"LAB_CASE_NOT_FOUND" : "Lab case not found." ,
"TASK_ASSIGNEE_INVALID" : "The selected person cannot be assigned this task." ,
"TASK_ASSIGNED_TO_OTHER" : "This task is assigned to another staff member." ,
"TASK_PAGE_DATE_SORT_ONLY" : "Jumping to a task in the list is only available when sorted by date." ,
"INVALID_SENT_FROM" : "The start date of the range is invalid." ,
"INVALID_SENT_TO" : "The end date of the range is invalid." ,
"CASE_NOT_FOUND" : "Case not found." ,
"CASE_ATTACHMENT_NOT_FOUND" : "Attachment not found." ,
"CASE_ATTACHMENT_MISSING_FILE" : "The attachment file is missing." ,
"CASE_TASK_NOT_FOUND" : "Task not found." ,
"COMMENT_NOT_FOUND" : "Comment not found." ,
"COMMENT_VISIBILITY_LAB_ONLY" : "Only lab comments can change visibility." ,
"TODAY_INVALID_RANGE" : "The date range is invalid." ,
"TODAY_INVALID_RANGE_ORDER" : "The end of the range must be after the start." ,
2026-07-12 18:27:38 +03:30
"NOT_FOUND" : "The requested item was not found." ,
"CONFLICT" : "This action conflicts with existing data." ,
"CONFLICT_FUTURE_APPOINTMENTS" : "You cannot stop participating in treatments while you have future appointments. Reassign or cancel them first." ,
2026-07-12 22:07:11 +03:30
"APPOINTMENT_PATIENT_LOCKED" : "Cannot change the patient while a treatment is linked to this appointment." ,
2026-07-16 22:35:02 +03:30
"APPOINTMENT_HAS_TREATMENT" : "This appointment cannot be deleted because a treatment is linked to it." ,
2026-07-16 22:45:37 +03:30
"TREATMENT_DETAIL_SENT" : "This detail was sent to a lab and can no longer be changed." ,
2026-08-19 15:05:58 +03:30
"TREATMENT_NOT_FOUND" : "Treatment not found." ,
"TREATMENT_PATIENT_OR_WALK_IN" : "Choose a patient or create a walk-in treatment." ,
"TREATMENT_NOT_STANDALONE" : "Only treatments without an appointment can be deleted this way." ,
"TREATMENT_HAS_DETAILS" : "This treatment has details and cannot be deleted." ,
"LAB_CASE_NOT_EDITABLE" : "This case can no longer be edited." ,
"LAB_CASE_ALREADY_STARTED" : "This case has already been started." ,
"LAB_CASE_LINES_REQUIRED" : "Add at least one work line with teeth and a prosthesis type." ,
"LAB_CASE_START_INCOMPLETE" : "Complete teeth and prosthesis types before starting this case." ,
"LAB_CASE_CLIENT_REQUIRED" : "Enter a clinic name or a patient name for this case." ,
2026-07-12 18:27:38 +03:30
"BAD_REQUEST" : "The request could not be processed." ,
"INTERNAL_ERROR" : "Something went wrong on our end. Please try again later."
2026-06-20 12:37:38 +03:30
}
}