fix: remove duplicate value i18n (#8547)
* fix: remove duplicate value i18n Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in> * feat: add duplicate check in next config Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in> * fix: remove more duplicates Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in> * fix: description on two factor page Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in> * Update apps/web/next.config.js * Update apps/web/next.config.js --------- Signed-off-by: Udit Takkar <udit.07814802719@cse.mait.ac.in> Co-authored-by: Hariom Balhara <hariombalhara@gmail.com> Co-authored-by: Keith Williams <keithwillcode@gmail.com> Co-authored-by: Peer Richelsen <peeroke@gmail.com>
This commit is contained in:
parent
4417097f97
commit
9b28b7f78a
|
@ -24,7 +24,7 @@ export function AvailableEventLocations({ locations }: { locations: Props["event
|
|||
}
|
||||
|
||||
const translateAbleKeys = [
|
||||
"attendee_in_person",
|
||||
"in_person_attendee_address",
|
||||
"in_person",
|
||||
"attendee_phone_number",
|
||||
"link_meeting",
|
||||
|
|
|
@ -55,7 +55,7 @@ export const RescheduleDialog = (props: IRescheduleDialog) => {
|
|||
</p>
|
||||
<TextArea
|
||||
data-testid="reschedule_reason"
|
||||
name={t("reschedule_reason")}
|
||||
name={t("reason_for_reschedule")}
|
||||
value={rescheduleReason}
|
||||
onChange={(e) => setRescheduleReason(e.target.value)}
|
||||
className="mb-5 sm:mb-6"
|
||||
|
|
|
@ -185,7 +185,7 @@ function EventTypeSingleLayout({
|
|||
info:
|
||||
isManagedEventType || isChildrenManagedEventType
|
||||
? eventType.schedule === null
|
||||
? "member_default_schedule"
|
||||
? "members_default_schedule"
|
||||
: isChildrenManagedEventType
|
||||
? `${
|
||||
eventType.scheduleName
|
||||
|
|
|
@ -2,7 +2,7 @@ require("dotenv").config({ path: "../../.env" });
|
|||
const CopyWebpackPlugin = require("copy-webpack-plugin");
|
||||
const os = require("os");
|
||||
const glob = require("glob");
|
||||
|
||||
const englishTranslation = require("./public/static/locales/en/common.json");
|
||||
const { withAxiom } = require("next-axiom");
|
||||
const { i18n } = require("./next-i18next.config");
|
||||
|
||||
|
@ -57,6 +57,20 @@ if (process.env.GOOGLE_API_CREDENTIALS && !validJson(process.env.GOOGLE_API_CRED
|
|||
);
|
||||
}
|
||||
|
||||
const informAboutDuplicateTranslations = () => {
|
||||
const valueSet = new Set();
|
||||
|
||||
for (const key in englishTranslation) {
|
||||
if (valueSet.has(englishTranslation[key])) {
|
||||
console.warn("\x1b[33mDuplicate value found in:", "\x1b[0m", key);
|
||||
} else {
|
||||
valueSet.add(englishTranslation[key]);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
informAboutDuplicateTranslations();
|
||||
|
||||
const plugins = [];
|
||||
if (process.env.ANALYZE === "true") {
|
||||
// only load dependency if env `ANALYZE` was set
|
||||
|
|
|
@ -182,7 +182,7 @@ const IntegrationsList = ({ data, handleDisconnect, variant }: IntegrationsListP
|
|||
setBulkUpdateModal(true);
|
||||
}
|
||||
}}>
|
||||
{t("change_default_conferencing_app")}
|
||||
{t("set_as_default")}
|
||||
</DropdownItem>
|
||||
</DropdownMenuItem>
|
||||
)}
|
||||
|
|
|
@ -363,7 +363,7 @@ export default function Success(props: SuccessProps) {
|
|||
id="modal-headline">
|
||||
{needsConfirmation && !isCancelled
|
||||
? props.recurringBookings
|
||||
? t("submitted_recurring")
|
||||
? t("booking_submitted_recurring")
|
||||
: t("booking_submitted")
|
||||
: isCancelled
|
||||
? seatReferenceUid
|
||||
|
|
|
@ -25,7 +25,7 @@ const Heading = () => {
|
|||
return (
|
||||
<div className="min-w-52 hidden md:block">
|
||||
<h3 className="font-cal max-w-28 sm:max-w-72 md:max-w-80 text-emphasis truncate text-xl font-semibold tracking-wide xl:max-w-full">
|
||||
{t("analytics_for_organisation")}
|
||||
{t("insights")}
|
||||
</h3>
|
||||
<p className="text-default hidden text-sm md:block">{t("subtitle_analytics")}</p>
|
||||
</div>
|
||||
|
|
|
@ -47,15 +47,13 @@ const BillingView = () => {
|
|||
<>
|
||||
<Meta title={t("billing")} description={t("manage_billing_description")} />
|
||||
<div className="space-y-6 text-sm sm:space-y-8">
|
||||
<CtaRow
|
||||
title={t("billing_manage_details_title")}
|
||||
description={t("billing_manage_details_description")}>
|
||||
<CtaRow title={t("view_and_manage_billing_details")} description={t("view_and_edit_billing_details")}>
|
||||
<Button color="primary" href={billingHref} target="_blank" EndIcon={ExternalLink}>
|
||||
{t("billing_portal")}
|
||||
</Button>
|
||||
</CtaRow>
|
||||
|
||||
<CtaRow title={t("billing_help_title")} description={t("billing_help_description")}>
|
||||
<CtaRow title={t("need_anything_else")} description={t("further_billing_help")}>
|
||||
<Button color="secondary" onClick={onContactSupportClick}>
|
||||
{t("contact_support")}
|
||||
</Button>
|
||||
|
|
|
@ -129,14 +129,14 @@ const AppearanceView = () => {
|
|||
<ThemeLabel
|
||||
variant="light"
|
||||
value="light"
|
||||
label={t("theme_light")}
|
||||
label={t("light")}
|
||||
defaultChecked={user.theme === "light"}
|
||||
register={formMethods.register}
|
||||
/>
|
||||
<ThemeLabel
|
||||
variant="dark"
|
||||
value="dark"
|
||||
label={t("theme_dark")}
|
||||
label={t("dark")}
|
||||
defaultChecked={user.theme === "dark"}
|
||||
register={formMethods.register}
|
||||
/>
|
||||
|
|
|
@ -149,7 +149,7 @@ const ConferencingLayout = () => {
|
|||
});
|
||||
}
|
||||
}}>
|
||||
{t("change_default_conferencing_app")}
|
||||
{t("set_as_default")}
|
||||
</DropdownItem>
|
||||
</DropdownMenuItem>
|
||||
)}
|
||||
|
|
|
@ -36,7 +36,7 @@ const TwoFactorAuthView = () => {
|
|||
const isCalProvider = user?.identityProvider === "CAL";
|
||||
return (
|
||||
<>
|
||||
<Meta title={t("2fa")} description={t("2fa_description")} />
|
||||
<Meta title={t("2fa")} description={t("set_up_two_factor_authentication")} />
|
||||
{!isCalProvider && <Alert severity="neutral" message={t("2fa_disabled")} />}
|
||||
<div className="mt-6 flex items-start space-x-4">
|
||||
<Switch
|
||||
|
|
|
@ -15,7 +15,6 @@
|
|||
"check_your_email": "Check your email",
|
||||
"verify_email_page_body": "We've sent an email to {{email}}. It is important to verify your email address to guarantee the best email and calendar deliverability from {{appName}}.",
|
||||
"verify_email_banner_body": "Please verify your email adress to guarantee the best email and calendar deliverability from {{appName}}.",
|
||||
"verify_email_banner_button": "Send email",
|
||||
"verify_email_email_header": "Verify your email address",
|
||||
"verify_email_email_button": "Verify email",
|
||||
"verify_email_email_body": "Please verify your email address by clicking the button below.",
|
||||
|
@ -87,13 +86,11 @@
|
|||
"your_meeting_has_been_booked": "Your meeting has been booked",
|
||||
"event_type_has_been_rescheduled_on_time_date": "Your {{title}} has been rescheduled to {{date}}.",
|
||||
"event_has_been_rescheduled": "Updated - Your event has been rescheduled",
|
||||
"request_reschedule_title_attendee": "Request to reschedule your booking",
|
||||
"request_reschedule_subtitle": "{{organizer}} has cancelled the booking and requested you to pick another time.",
|
||||
"request_reschedule_title_organizer": "You have requested {{attendee}} to reschedule",
|
||||
"request_reschedule_subtitle_organizer": "You have cancelled the booking and {{attendee}} should pick a new booking time with you.",
|
||||
"rescheduled_event_type_subject": "Request for reschedule sent: {{eventType}} with {{name}} at {{date}}",
|
||||
"requested_to_reschedule_subject_attendee": "Action Required Reschedule: Please book a new time for {{eventType}} with {{name}}",
|
||||
"reschedule_reason": "Reason for reschedule",
|
||||
"hi_user_name": "Hi {{name}}",
|
||||
"ics_event_title": "{{eventType}} with {{name}}",
|
||||
"new_event_subject": "New event: {{attendeeName}} - {{date}} - {{eventType}}",
|
||||
|
@ -262,7 +259,6 @@
|
|||
"welcome_to_calcom": "Welcome to {{appName}}",
|
||||
"welcome_instructions": "Tell us what to call you and let us know what timezone you’re in. You’ll be able to edit this later.",
|
||||
"connect_caldav": "Connect to CalDav (Beta)",
|
||||
"credentials_stored_and_encrypted": "Your credentials will be stored and encrypted.",
|
||||
"connect": "Connect",
|
||||
"try_for_free": "Try it for free",
|
||||
"create_booking_link_with_calcom": "Create your own booking link with {{appName}}",
|
||||
|
@ -283,7 +279,6 @@
|
|||
"user_needs_to_confirm_or_reject_booking_recurring": "{{user}} still needs to confirm or reject each booking of the recurring meeting.",
|
||||
"meeting_is_scheduled": "This meeting is scheduled",
|
||||
"meeting_is_scheduled_recurring": "The recurring events are scheduled",
|
||||
"submitted_recurring": "Your recurring meeting has been submitted",
|
||||
"booking_submitted": "Your booking has been submitted",
|
||||
"booking_submitted_recurring": "Your recurring meeting has been submitted",
|
||||
"booking_confirmed": "Your booking has been confirmed",
|
||||
|
@ -341,7 +336,6 @@
|
|||
"booking_already_accepted_rejected": "This booking was already accepted or rejected",
|
||||
"go_back_home": "Go back home",
|
||||
"or_go_back_home": "Or go back home",
|
||||
"no_availability": "Unavailable",
|
||||
"no_meeting_found": "No Meeting Found",
|
||||
"no_meeting_found_description": "This meeting does not exist. Contact the meeting owner for an updated link.",
|
||||
"no_status_bookings_yet": "No {{status}} bookings",
|
||||
|
@ -473,7 +467,6 @@
|
|||
"invalid_password_hint": "The password must be a minimum of {{passwordLength}} characters long containing at least one number and have a mixture of uppercase and lowercase letters",
|
||||
"incorrect_password": "Password is incorrect.",
|
||||
"incorrect_username_password": "Username or password is incorrect.",
|
||||
"24_h": "24h",
|
||||
"use_setting": "Use setting",
|
||||
"am_pm": "am/pm",
|
||||
"time_options": "Time options",
|
||||
|
@ -516,15 +509,11 @@
|
|||
"booking_confirmation": "Confirm your {{eventTypeTitle}} with {{profileName}}",
|
||||
"booking_reschedule_confirmation": "Reschedule your {{eventTypeTitle}} with {{profileName}}",
|
||||
"in_person_meeting": "In-person meeting",
|
||||
"attendee_in_person": "In Person (Attendee Address)",
|
||||
"in_person": "In Person (Organizer Address)",
|
||||
"link_meeting": "Link meeting",
|
||||
"phone_call": "Attendee Phone Number",
|
||||
"your_number": "Your phone number",
|
||||
"phone_number": "Phone Number",
|
||||
"attendee_phone_number": "Attendee Phone Number",
|
||||
"organizer_phone_number": "Organizer Phone Number",
|
||||
"host_phone_number": "Your Phone Number",
|
||||
"enter_phone_number": "Enter phone number",
|
||||
"reschedule": "Reschedule",
|
||||
"reschedule_this": "Reschedule instead",
|
||||
|
@ -650,9 +639,6 @@
|
|||
"new_event_type_btn": "New event type",
|
||||
"new_event_type_heading": "Create your first event type",
|
||||
"new_event_type_description": "Event types enable you to share links that show available times on your calendar and allow people to make bookings with you.",
|
||||
"new_event_title": "Add a new event type",
|
||||
"new_team_event": "Add a new team event type",
|
||||
"new_event_description": "Create a new event type for people to book times with.",
|
||||
"event_type_created_successfully": "{{eventTypeTitle}} event type created successfully",
|
||||
"event_type_updated_successfully": "{{eventTypeTitle}} event type updated successfully",
|
||||
"event_type_deleted_successfully": "Event type deleted successfully",
|
||||
|
@ -821,7 +807,6 @@
|
|||
"automation": "Automation",
|
||||
"configure_how_your_event_types_interact": "Configure how your event types should interact with your calendars.",
|
||||
"toggle_calendars_conflict": "Toggle the calendars you want to check for conflicts to prevent double bookings.",
|
||||
"select_destination_calendar": "Create events on",
|
||||
"connect_additional_calendar": "Connect additional calendar",
|
||||
"calendar_updated_successfully": "Calendar updated successfully",
|
||||
"conferencing": "Conferencing",
|
||||
|
@ -855,7 +840,6 @@
|
|||
"number_apps_other": "{{count}} Apps",
|
||||
"trending_apps": "Trending Apps",
|
||||
"most_popular": "Most Popular",
|
||||
"explore_apps": "{{category}} apps",
|
||||
"installed_apps": "Installed Apps",
|
||||
"free_to_use_apps": "Free",
|
||||
"no_category_apps": "No {{category}} apps",
|
||||
|
@ -867,7 +851,6 @@
|
|||
"no_category_apps_description_other": "Add any other type of app to do all sorts of things",
|
||||
"no_category_apps_description_web3": "Add a web3 app for your booking pages",
|
||||
"installed_app_calendar_description": "Set the calendars to check for conflicts to prevent double bookings.",
|
||||
"installed_app_conferencing_description": "Add your favourite video conferencing apps for your meetings",
|
||||
"installed_app_payment_description": "Configure which payment processing services to use when charging your clients.",
|
||||
"installed_app_analytics_description": "Configure which analytics apps to use for your booking pages",
|
||||
"installed_app_other_description": "All your installed apps from other categories.",
|
||||
|
@ -893,7 +876,6 @@
|
|||
"terms_of_service": "Terms of Service",
|
||||
"remove": "Remove",
|
||||
"add": "Add",
|
||||
"installed_one": "Installed",
|
||||
"installed_other": "{{count}} installed",
|
||||
"verify_wallet": "Verify Wallet",
|
||||
"create_events_on": "Create events on",
|
||||
|
@ -921,7 +903,6 @@
|
|||
"availability_updated_successfully": "{{scheduleName}} schedule updated successfully",
|
||||
"schedule_deleted_successfully": "Schedule deleted successfully",
|
||||
"default_schedule_name": "Working Hours",
|
||||
"member_default_schedule":"Member's default schedule",
|
||||
"new_schedule_heading": "Create an availability schedule",
|
||||
"new_schedule_description": "Creating availability schedules allows you to manage availability across event types. They can be applied to one or more event types.",
|
||||
"requires_ownership_of_a_token": "Requires ownership of a token belonging to the following address:",
|
||||
|
@ -958,8 +939,6 @@
|
|||
"api_key_no_note": "Nameless API key",
|
||||
"api_key_never_expires": "This API key has no expiration date",
|
||||
"edit_api_key": "Edit API key",
|
||||
"never_expire_key": "Never expires",
|
||||
"delete_api_key": "Revoke API key",
|
||||
"success_api_key_created": "API key created successfully",
|
||||
"success_api_key_edited": "API key updated successfully",
|
||||
"create": "Create",
|
||||
|
@ -1000,7 +979,6 @@
|
|||
"event_location_changed": "Updated - Your event changed the location",
|
||||
"location_changed_event_type_subject": "Location Changed: {{eventType}} with {{name}} at {{date}}",
|
||||
"current_location": "Current Location",
|
||||
"user_phone": "Your phone number",
|
||||
"new_location": "New Location",
|
||||
"session": "Session",
|
||||
"session_description": "Control your account session",
|
||||
|
@ -1026,7 +1004,6 @@
|
|||
"zapier_setup_instructions": "<0>Log into your Zapier account and create a new Zap.</0><1>Select Cal.com as your Trigger app. Also choose a Trigger event.</1><2>Choose your account and then enter your Unique API Key.</2><3>Test your Trigger.</3><4>You're set!</4>",
|
||||
"install_zapier_app": "Please first install the Zapier App in the app store.",
|
||||
"connect_apple_server": "Connect to Apple Server",
|
||||
"connect_caldav_server": "Connect to CalDav (Beta)",
|
||||
"calendar_url": "Calendar URL",
|
||||
"apple_server_generate_password": "Generate an app specific password to use with {{appName}} at",
|
||||
"credentials_stored_encrypted": "Your credentials will be stored and encrypted.",
|
||||
|
@ -1058,7 +1035,6 @@
|
|||
"go_to": "Go to: ",
|
||||
"zapier_invite_link": "Zapier Invite Link",
|
||||
"meeting_url_provided_after_confirmed": "A Meeting URL will be created once the event is confirmed.",
|
||||
"attendees_name": "Attendee's name",
|
||||
"dynamically_display_attendee_or_organizer": "Dynamically display the name of your attendee for you, or your name if it's viewed by your attendee",
|
||||
"event_location": "Event's location",
|
||||
"reschedule_optional": "Reason for rescheduling (optional)",
|
||||
|
@ -1133,7 +1109,6 @@
|
|||
"add_exchange2016": "Connect Exchange 2016 Server",
|
||||
"custom_template": "Custom template",
|
||||
"email_body": "Email body",
|
||||
"subject": "Email subject",
|
||||
"text_message": "Text message",
|
||||
"specific_issue": "Have a specific issue?",
|
||||
"browse_our_docs": "browse our docs",
|
||||
|
@ -1161,12 +1136,9 @@
|
|||
"new_seat_title": "Someone has added themselves to an event",
|
||||
"variable": "Variable",
|
||||
"event_name_variable": "Event name",
|
||||
"organizer_name_variable": "Organizer",
|
||||
"attendee_name_variable": "Attendee",
|
||||
"event_date_variable": "Event date",
|
||||
"event_time_variable": "Event time",
|
||||
"location_variable": "Location",
|
||||
"additional_notes_variable": "Additional notes",
|
||||
"app_upgrade_description": "In order to use this feature, you need to upgrade to a Pro account.",
|
||||
"invalid_number": "Invalid phone number",
|
||||
"navigate": "Navigate",
|
||||
|
@ -1260,7 +1232,6 @@
|
|||
"recurring_event_tab_description": "Set up a repeating schedule",
|
||||
"today": "today",
|
||||
"appearance": "Appearance",
|
||||
"appearance_subtitle": "Manage settings for your booking appearance",
|
||||
"my_account": "My account",
|
||||
"general": "General",
|
||||
"calendars": "Calendars",
|
||||
|
@ -1280,7 +1251,7 @@
|
|||
"conferencing_description": "Add your favourite video conferencing apps for your meetings",
|
||||
"add_conferencing_app": "Add Conferencing App",
|
||||
"password_description": "Manage settings for your account passwords",
|
||||
"2fa_description": "Manage settings for your account passwords",
|
||||
"set_up_two_factor_authentication": "Set up your Two-factor authentication",
|
||||
"we_just_need_basic_info": "We just need some basic info to get your profile setup.",
|
||||
"skip": "Skip",
|
||||
"do_this_later": "Do this later",
|
||||
|
@ -1304,7 +1275,6 @@
|
|||
"event_date_info": "The event date",
|
||||
"event_time_info": "The event start time",
|
||||
"location_info": "The location of the event",
|
||||
"organizer_name_info": "Your name",
|
||||
"additional_notes_info": "The additional notes of booking",
|
||||
"attendee_name_info": "The person booking's name",
|
||||
"to": "To",
|
||||
|
@ -1369,8 +1339,6 @@
|
|||
"copy_link_to_form": "Copy link to form",
|
||||
"theme": "Theme",
|
||||
"theme_applies_note": "This only applies to your public booking pages",
|
||||
"theme_light": "Light",
|
||||
"theme_dark": "Dark",
|
||||
"theme_system": "System default",
|
||||
"add_a_team": "Add a team",
|
||||
"add_webhook_description": "Receive meeting data in real-time when something happens in {{appName}}",
|
||||
|
@ -1379,7 +1347,6 @@
|
|||
"enable_webhook": "Enable Webhook",
|
||||
"add_webhook": "Add Webhook",
|
||||
"webhook_edited_successfully": "Webhook saved",
|
||||
"webhooks_description": "Receive meeting data in real-time when something happens in {{appName}}",
|
||||
"api_keys_description": "Generate API keys for accessing your own account",
|
||||
"new_api_key": "New API key",
|
||||
"active": "active",
|
||||
|
@ -1421,11 +1388,7 @@
|
|||
"billing_freeplan_title": "You're currently on the FREE plan",
|
||||
"billing_freeplan_description": "We work better in teams. Extend your workflows with round-robin and collective events and make advanced routing forms",
|
||||
"billing_freeplan_cta": "Try now",
|
||||
"billing_manage_details_title": "View and manage your billing details",
|
||||
"billing_manage_details_description": "View and edit your billing details, as well as cancel your subscription.",
|
||||
"billing_portal": "Billing portal",
|
||||
"billing_help_title": "Need anything else?",
|
||||
"billing_help_description": "If you need any further help with billing, our support team are here to help.",
|
||||
"billing_help_cta": "Contact support",
|
||||
"ignore_special_characters_booking_questions": "Ignore special characters in your booking question identifier. Use only letters and numbers",
|
||||
"retry": "Retry",
|
||||
|
@ -1433,7 +1396,6 @@
|
|||
"calendar_connection_fail": "Calendar connection failed",
|
||||
"booking_confirmation_success": "Booking confirmation succeeded",
|
||||
"booking_rejection_success": "Booking rejection succeeded",
|
||||
"booking_confirmation_fail": "Booking confirmation failed",
|
||||
"booking_tentative": "This booking is tentative",
|
||||
"booking_accept_intent": "Oops, I want to accept",
|
||||
"we_wont_show_again": "We won't show this again",
|
||||
|
@ -1456,7 +1418,6 @@
|
|||
"new_event_type_availability": "{{eventTypeTitle}} Availability",
|
||||
"error_editing_availability": "Error editing availability",
|
||||
"dont_have_permission": "You don't have permission to access this resource.",
|
||||
"saml_config": "Single Sign-On",
|
||||
"saml_configuration_placeholder": "Please paste the SAML metadata from your Identity Provider here",
|
||||
"saml_email_required": "Please enter an email so we can find your SAML Identity Provider",
|
||||
"saml_sp_title": "Service Provider Details",
|
||||
|
@ -1465,7 +1426,6 @@
|
|||
"saml_sp_entity_id": "SP Entity ID",
|
||||
"saml_sp_acs_url_copied": "ACS URL copied!",
|
||||
"saml_sp_entity_id_copied": "SP Entity ID copied!",
|
||||
"saml_btn_configure": "Configure",
|
||||
"add_calendar": "Add Calendar",
|
||||
"limit_future_bookings": "Limit future bookings",
|
||||
"limit_future_bookings_description": "Limit how far in the future this event can be booked",
|
||||
|
@ -1648,7 +1608,6 @@
|
|||
"delete_sso_configuration_confirmation": "Yes, delete {{connectionType}} configuration",
|
||||
"delete_sso_configuration_confirmation_description": "Are you sure you want to delete the {{connectionType}} configuration? Your team members who use {{connectionType}} login will no longer be able to access Cal.com.",
|
||||
"organizer_timezone": "Organizer timezone",
|
||||
"email_no_user_cta": "Create your account",
|
||||
"email_user_cta": "View Invitation",
|
||||
"email_no_user_invite_heading": "You’ve been invited to join a team on {{appName}}",
|
||||
"email_no_user_invite_subheading": "{{invitedBy}} has invited you to join their team on {{appName}}. {{appName}} is the event-juggling scheduler that enables you and your team to schedule meetings without the email tennis.",
|
||||
|
@ -1678,7 +1637,6 @@
|
|||
"create_event_on": "Create event on",
|
||||
"default_app_link_title": "Set a default app link",
|
||||
"default_app_link_description": "Setting a default app link allows all newly created event types to use the app link you set.",
|
||||
"change_default_conferencing_app": "Set as default",
|
||||
"organizer_default_conferencing_app": "Organizer's default app",
|
||||
"under_maintenance": "Down for maintenance",
|
||||
"under_maintenance_description": "The {{appName}} team are performing scheduled maintenance. If you have any questions, please contact support.",
|
||||
|
@ -1694,8 +1652,7 @@
|
|||
"booking_confirmation_failed": "Booking confirmation failed",
|
||||
"not_enough_seats": "Not enough seats",
|
||||
"form_builder_field_already_exists": "A field with this name already exists",
|
||||
"form_builder_field_add_subtitle": "Customize the questions asked on the booking page",
|
||||
"show_on_booking_page": "Show on booking page",
|
||||
"show_on_booking_page":"Show on booking page",
|
||||
"get_started_zapier_templates": "Get started with Zapier templates",
|
||||
"team_is_unpublished": "{{team}} is unpublished",
|
||||
"team_is_unpublished_description": "This team link is currently not available. Please contact the team owner or ask them publish it.",
|
||||
|
@ -1747,7 +1704,6 @@
|
|||
"verification_code": "Verification code",
|
||||
"can_you_try_again": "Can you try again with a different time?",
|
||||
"verify": "Verify",
|
||||
"timezone_variable": "Timezone",
|
||||
"timezone_info": "The timezone of the person receiving",
|
||||
"event_end_time_variable": "Event end time",
|
||||
"event_end_time_info": "The event end time",
|
||||
|
@ -1796,7 +1752,6 @@
|
|||
"events_rescheduled": "Events Rescheduled",
|
||||
"from_last_period": "from last period",
|
||||
"from_to_date_period": "From: {{startDate}} To: {{endDate}}",
|
||||
"analytics_for_organisation": "Insights",
|
||||
"subtitle_analytics": "Learn more about your team's activity",
|
||||
"redirect_url_warning": "Adding a redirect will disable the success page. Make sure to mention \"Booking Confirmed\" on your custom success page.",
|
||||
"event_trends": "Event Trends",
|
||||
|
@ -1836,7 +1791,6 @@
|
|||
"one_day": "1 day",
|
||||
"seven_days": "7 days",
|
||||
"thirty_days": "30 days",
|
||||
"never_expire": "Never expires",
|
||||
"team_invite_received": "You have been invited to join {{teamName}}",
|
||||
"currency_string": "{{amount, currency}}",
|
||||
"charge_card_dialog_body": "You are about to charge the attendee {{amount, currency}}. Are you sure you want to continue?",
|
||||
|
|
|
@ -33,7 +33,7 @@ export default function CalDavCalendarSetup() {
|
|||
/>
|
||||
</div>
|
||||
<div className="flex w-10/12 flex-col">
|
||||
<h1 className="text-default">{t("connect_caldav_server")}</h1>
|
||||
<h1 className="text-default">{t("connect_caldav")}</h1>
|
||||
<div className="mt-1 text-sm">{t("credentials_stored_encrypted")}</div>
|
||||
<div className="my-2 mt-3">
|
||||
<Form
|
||||
|
|
|
@ -74,7 +74,7 @@ export const defaultLocations: DefaultEventLocationType[] = [
|
|||
{
|
||||
default: true,
|
||||
type: DefaultEventLocationTypeEnum.AttendeeInPerson,
|
||||
label: "attendee_in_person",
|
||||
label: "in_person_attendee_address",
|
||||
variable: "address",
|
||||
organizerInputType: null,
|
||||
messageForOrganizer: "Cal will ask your invitee to enter an address before scheduling.",
|
||||
|
|
|
@ -8,7 +8,7 @@ export const AttendeeWasRequestedToRescheduleEmail = (
|
|||
return (
|
||||
<OrganizerScheduledEmail
|
||||
t={t}
|
||||
title="request_reschedule_title_attendee"
|
||||
title="request_reschedule_booking"
|
||||
subtitle={
|
||||
<>
|
||||
{t("request_reschedule_subtitle", {
|
||||
|
|
|
@ -67,7 +67,7 @@ export const BaseScheduledEmail = (
|
|||
<Info
|
||||
label={t(
|
||||
props.calEvent.cancellationReason.startsWith("$RCH$")
|
||||
? "reschedule_reason"
|
||||
? "reason_for_reschedule"
|
||||
: "cancellation_reason"
|
||||
)}
|
||||
description={
|
||||
|
|
|
@ -59,7 +59,7 @@ export const TeamInviteEmail = (
|
|||
</p>
|
||||
<div style={{ display: "flex", justifyContent: "center" }}>
|
||||
<CallToAction
|
||||
label={props.language(props.isCalcomMember ? "email_user_cta" : "email_not_cal_member_cta")}
|
||||
label={props.language(props.isCalcomMember ? "email_user_cta" : "create_your_account")}
|
||||
href={props.joinLink}
|
||||
endIconName="linkIcon"
|
||||
/>
|
||||
|
|
|
@ -86,7 +86,7 @@ export default class AttendeeWasRequestedToRescheduleEmail extends OrganizerSche
|
|||
|
||||
protected getTextBody(): string {
|
||||
return `
|
||||
${this.t("request_reschedule_title_attendee")}
|
||||
${this.t("request_reschedule_booking")}
|
||||
${this.t("request_reschedule_subtitle", {
|
||||
organizer: this.calEvent.organizer.name,
|
||||
})},
|
||||
|
|
|
@ -241,7 +241,7 @@ export const ensureBookingInputsHaveSystemFields = ({
|
|||
],
|
||||
},
|
||||
{
|
||||
defaultLabel: "reschedule_reason",
|
||||
defaultLabel: "reason_for_reschedule",
|
||||
type: "textarea",
|
||||
editable: "system-but-optional",
|
||||
name: "rescheduleReason",
|
||||
|
|
|
@ -66,7 +66,7 @@ const DestinationCalendarSelector = ({
|
|||
width: "100%",
|
||||
display: "flex",
|
||||
":before": {
|
||||
content: `'${t("select_destination_calendar")}:'`,
|
||||
content: `'${t("create_events_on")}:'`,
|
||||
display: "block",
|
||||
marginRight: 8,
|
||||
},
|
||||
|
@ -121,12 +121,12 @@ const DestinationCalendarSelector = ({
|
|||
const queryDestinationCalendar = query.data.destinationCalendar;
|
||||
|
||||
return (
|
||||
<div className="relative" title={`${t("select_destination_calendar")}: ${selectedOption?.label || ""}`}>
|
||||
<div className="relative" title={`${t("create_events_on")}: ${selectedOption?.label || ""}`}>
|
||||
<Select
|
||||
name="primarySelectedCalendar"
|
||||
placeholder={
|
||||
!hidePlaceholder ? (
|
||||
`${t("select_destination_calendar")}`
|
||||
`${t("create_events_on")}`
|
||||
) : (
|
||||
<span className="text-default min-w-0 overflow-hidden truncate whitespace-nowrap">
|
||||
{t("default_calendar_selected")}{" "}
|
||||
|
|
|
@ -81,7 +81,7 @@ export default function ApiKeyDialogForm({
|
|||
</div>
|
||||
<span className="text-muted text-sm">
|
||||
{apiKeyDetails.neverExpires
|
||||
? t("never_expire_key")
|
||||
? t("never_expires")
|
||||
: `${t("expires")} ${apiKeyDetails?.expiresAt?.toLocaleDateString()}`}
|
||||
</span>
|
||||
</div>
|
||||
|
@ -140,7 +140,7 @@ export default function ApiKeyDialogForm({
|
|||
control={form.control}
|
||||
render={({ field: { onChange, value } }) => (
|
||||
<Switch
|
||||
label={t("never_expire_key")}
|
||||
label={t("never_expires")}
|
||||
onCheckedChange={onChange}
|
||||
checked={value}
|
||||
disabled={!!defaultValues}
|
||||
|
|
|
@ -28,7 +28,7 @@ export default function SSOConfiguration({ teamId }: { teamId: number | null })
|
|||
if (errorMessage) {
|
||||
return (
|
||||
<>
|
||||
<Meta title={t("saml_config")} description={t("saml_description")} />
|
||||
<Meta title={t("sso_configuration")} description={t("saml_description")} />
|
||||
<Alert severity="warning" message={t(errorMessage)} className="mb-4 " />
|
||||
</>
|
||||
);
|
||||
|
|
|
@ -49,7 +49,7 @@ export default function InviteLinkSettingsModal(props: InvitationLinkSettingsMod
|
|||
{ value: 1, label: t("one_day") },
|
||||
{ value: 7, label: t("seven_days") },
|
||||
{ value: 30, label: t("thirty_days") },
|
||||
{ value: undefined, label: t("never_expire") },
|
||||
{ value: undefined, label: t("never_expires") },
|
||||
];
|
||||
}, [t]);
|
||||
|
||||
|
|
|
@ -105,7 +105,7 @@ export default function TeamList(props: Props) {
|
|||
icon={<Edit className="h-5 w-5 text-purple-700" />}
|
||||
variant="basic"
|
||||
title={t("appearance")}
|
||||
description={t("appearance_subtitle")}
|
||||
description={t("appearance_description")}
|
||||
actionButton={{
|
||||
href: "/settings/teams/" + team.id + "/appearance",
|
||||
child: t("edit"),
|
||||
|
|
|
@ -120,14 +120,14 @@ const ProfileView = () => {
|
|||
<ThemeLabel
|
||||
variant="light"
|
||||
value="light"
|
||||
label={t("theme_light")}
|
||||
label={t("light")}
|
||||
defaultChecked={team.theme === "light"}
|
||||
register={form.register}
|
||||
/>
|
||||
<ThemeLabel
|
||||
variant="dark"
|
||||
value="dark"
|
||||
label={t("theme_dark")}
|
||||
label={t("dark")}
|
||||
defaultChecked={team.theme === "dark"}
|
||||
register={form.register}
|
||||
/>
|
||||
|
|
|
@ -17,8 +17,8 @@ const BillingView = () => {
|
|||
<Meta title={t("team_billing")} description={t("team_billing_description")} />
|
||||
<div className="text-default flex flex-col text-sm sm:flex-row">
|
||||
<div>
|
||||
<h2 className="font-medium">{t("billing_manage_details_title")}</h2>
|
||||
<p>{t("billing_manage_details_description")}</p>
|
||||
<h2 className="font-medium">{t("view_and_manage_billing_details")}</h2>
|
||||
<p>{t("view_and_edit_billing_details")}</p>
|
||||
</div>
|
||||
<div className="flex-shrink-0 pt-3 sm:ml-auto sm:pt-0 sm:pl-3">
|
||||
<Button color="primary" href={billingHref} target="_blank" EndIcon={ExternalLink}>
|
||||
|
|
|
@ -86,7 +86,7 @@ const WorkflowListItem = (props: ItemProps) => {
|
|||
workflow.steps.forEach((step) => {
|
||||
switch (step.action) {
|
||||
case WorkflowActions.EMAIL_HOST:
|
||||
sendTo.add(t("organizer_name_variable"));
|
||||
sendTo.add(t("organizer"));
|
||||
break;
|
||||
case WorkflowActions.EMAIL_ATTENDEE:
|
||||
sendTo.add(t("attendee_name_variable"));
|
||||
|
|
|
@ -674,7 +674,7 @@ export default function WorkflowStepContainer(props: WorkflowStepProps) {
|
|||
<div className="mb-6">
|
||||
<div className="flex items-center">
|
||||
<Label className={classNames("flex-none", props.readOnly ? "mb-2" : "mb-0")}>
|
||||
{t("subject")}
|
||||
{t("email_subject")}
|
||||
</Label>
|
||||
{!props.readOnly && (
|
||||
<div className="flex-grow text-right">
|
||||
|
|
|
@ -425,10 +425,10 @@ export const FormBuilder = function FormBuilder({
|
|||
})
|
||||
}>
|
||||
<DialogContent className="max-h-none p-0" data-testid="edit-field-dialog">
|
||||
<div className="h-auto max-h-[85vh] overflow-auto px-8 pt-8 pb-10">
|
||||
<div className="h-auto max-h-[85vh] overflow-auto px-8 pt-8 pb-7">
|
||||
<DialogHeader
|
||||
title={t("add_a_booking_question")}
|
||||
subtitle={t("form_builder_field_add_subtitle")}
|
||||
subtitle={t("booking_questions_description")}
|
||||
/>
|
||||
<Form
|
||||
id="form-builder"
|
||||
|
|
|
@ -98,7 +98,7 @@ const tabs: VerticalTabItemProps[] = [
|
|||
tabs.find((tab) => {
|
||||
// Add "SAML SSO" to the tab
|
||||
if (tab.name === "security" && !HOSTED_CAL_FEATURES) {
|
||||
tab.children?.push({ name: "saml_config", href: "/settings/security/sso" });
|
||||
tab.children?.push({ name: "sso_configuration", href: "/settings/security/sso" });
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -321,7 +321,7 @@ const SettingsSidebarContainer = ({
|
|||
/>
|
||||
{HOSTED_CAL_FEATURES && (
|
||||
<VerticalTabItem
|
||||
name={t("saml_config")}
|
||||
name={t("sso_configuration")}
|
||||
href={`/settings/teams/${team.id}/sso`}
|
||||
textClassNames="px-3 text-emphasis font-medium text-sm"
|
||||
disableChevron
|
||||
|
|
|
@ -25,7 +25,7 @@ function VerifyEmailBanner() {
|
|||
mutation.mutate();
|
||||
showToast(t("email_sent"), "success");
|
||||
}}>
|
||||
{t("verify_email_banner_button")}
|
||||
{t("send_email")}
|
||||
</Button>
|
||||
}
|
||||
/>
|
||||
|
|
|
@ -39,7 +39,7 @@ const WebhooksView = () => {
|
|||
<>
|
||||
<Meta
|
||||
title="Webhooks"
|
||||
description={t("webhooks_description", { appName: APP_NAME })}
|
||||
description={t("add_webhook_description", { appName: APP_NAME })}
|
||||
CTA={data && data.webhookGroups.length > 0 ? <NewWebhookButton profiles={profiles} /> : <></>}
|
||||
/>
|
||||
<div>
|
||||
|
|
|
@ -70,7 +70,7 @@ function CategoryTab({ selectedCategory, categories, searchText }: CategoryTabPr
|
|||
<h2 className="text-emphasis hidden text-base font-semibold leading-none sm:block">
|
||||
{searchText
|
||||
? t("search")
|
||||
: t("explore_apps", {
|
||||
: t("category_apps", {
|
||||
category:
|
||||
(selectedCategory && selectedCategory[0].toUpperCase() + selectedCategory.slice(1)) ||
|
||||
t("all_apps"),
|
||||
|
|
Loading…
Reference in New Issue
Block a user