From f955ccdef907fae63e621cd71050b7d0abb7dcb8 Mon Sep 17 00:00:00 2001 From: Mihai C <34626017+mihaic195@users.noreply.github.com> Date: Thu, 14 Oct 2021 17:24:21 +0300 Subject: [PATCH] i18n: continued (#949) * more extractions * fix: failing build --- pages/404.tsx | 71 +++++++++--------- pages/auth/error.tsx | 11 +-- pages/auth/forgot-password/[id].tsx | 33 +++++---- pages/auth/forgot-password/index.tsx | 23 +++--- pages/auth/login.tsx | 41 +++++----- pages/auth/logout.tsx | 12 ++- pages/auth/signup.tsx | 18 +++-- pages/getting-started.tsx | 107 +++++++++++++-------------- pages/success.tsx | 29 ++++---- public/static/locales/en/common.json | 97 ++++++++++++++++++++++-- 10 files changed, 269 insertions(+), 173 deletions(-) diff --git a/pages/404.tsx b/pages/404.tsx index 316a1ad5..28801cfb 100644 --- a/pages/404.tsx +++ b/pages/404.tsx @@ -4,40 +4,42 @@ import Link from "next/link"; import { useRouter } from "next/router"; import React from "react"; +import { useLocale } from "@lib/hooks/useLocale"; + import { HeadSeo } from "@components/seo/head-seo"; -const links = [ - { - title: "Documentation", - description: "Learn how to integrate our tools with your app", - icon: DocumentTextIcon, - href: "https://docs.cal.com", - }, - { - title: "API Reference", - description: "A complete API reference for our libraries", - icon: CodeIcon, - href: "https://api.docs.cal.com", - }, - { - title: "Blog", - description: "Read our latest news and articles", - icon: BookOpenIcon, - href: "https://cal.com/blog", - }, -]; - export default function Custom404() { + const { t } = useLocale(); const router = useRouter(); const username = router.asPath.replace("%20", "-"); + const links = [ + { + title: t("documentation"), + description: t("documentation_description"), + icon: DocumentTextIcon, + href: "https://docs.cal.com", + }, + { + title: t("api_reference"), + description: t("api_reference_description"), + icon: CodeIcon, + href: "https://api.docs.cal.com", + }, + { + title: t("blog"), + description: t("blog_description"), + icon: BookOpenIcon, + href: "https://cal.com/blog", + }, + ]; const isEventType404 = router.asPath.includes("/event-types"); return ( <>

404 error

- This page does not exist. + {t("page_doesnt_exist")}

{isEventType404 ? ( - - Check for spelling mistakes or go back to the previous page. - + {t("check_spelling_mistakes_or_go_back")} ) : ( - The username cal.com{username} is still available.{" "} - Register now. + {t("the_username")} cal.com{username}{" "} + {t("is_still_available")} {t("register_now")}. )}
-

Popular pages

+

+ {t("popular_pages")} +

{!isEventType404 && (
- Go back to the login page + {t("go_back_login")}
diff --git a/pages/auth/forgot-password/[id].tsx b/pages/auth/forgot-password/[id].tsx index 27d75761..bc065850 100644 --- a/pages/auth/forgot-password/[id].tsx +++ b/pages/auth/forgot-password/[id].tsx @@ -6,6 +6,7 @@ import { getCsrfToken } from "next-auth/client"; import Link from "next/link"; import React, { useMemo } from "react"; +import { useLocale } from "@lib/hooks/useLocale"; import prisma from "@lib/prisma"; import { HeadSeo } from "@components/seo/head-seo"; @@ -17,6 +18,7 @@ type Props = { }; export default function Page({ resetPasswordRequest, csrfToken }: Props) { + const { t } = useLocale(); const [loading, setLoading] = React.useState(false); const [error, setError] = React.useState(null); const [success, setSuccess] = React.useState(false); @@ -46,7 +48,7 @@ export default function Page({ resetPasswordRequest, csrfToken }: Props) { return json; } catch (reason) { - setError({ message: "An unexpected error occurred. Try again." }); + setError({ message: t("unexpected_error_try_again") }); } finally { setLoading(false); } @@ -77,14 +79,16 @@ export default function Page({ resetPasswordRequest, csrfToken }: Props) { <>
-

Success

+

+ {t("success")} +

-

Your password has been reset. You can now login with your newly created password.

+

{t("password_has_been_reset_login")}

@@ -97,18 +101,15 @@ export default function Page({ resetPasswordRequest, csrfToken }: Props) { <>
-

Whoops

-

That Request is Expired.

+

{t("whoops")}

+

{t("request_is_expired")}

-

- That request is expired. You can back and enter the email associated with your account and we will - you another link to reset your password. -

+

{t("request_is_expired_instructions")}

@@ -123,7 +124,7 @@ export default function Page({ resetPasswordRequest, csrfToken }: Props) { return (
- +
{isRequestExpired && } @@ -131,16 +132,16 @@ export default function Page({ resetPasswordRequest, csrfToken }: Props) { <>

- Reset Password + {t("reset_password")}

-

Enter the new password you'd like for your account.

+

{t("enter_new_password")}

{error &&

{error.message}

}
)} - Submit + {t("submit")}
diff --git a/pages/auth/forgot-password/index.tsx b/pages/auth/forgot-password/index.tsx index 6d17b9fc..be94247b 100644 --- a/pages/auth/forgot-password/index.tsx +++ b/pages/auth/forgot-password/index.tsx @@ -4,10 +4,12 @@ import Link from "next/link"; import React from "react"; import { getSession } from "@lib/auth"; +import { useLocale } from "@lib/hooks/useLocale"; import { HeadSeo } from "@components/seo/head-seo"; export default function ForgotPassword({ csrfToken }) { + const { t } = useLocale(); const [loading, setLoading] = React.useState(false); const [error, setError] = React.useState(null); const [success, setSuccess] = React.useState(false); @@ -36,7 +38,7 @@ export default function ForgotPassword({ csrfToken }) { return json; } catch (reason) { - setError({ message: "An unexpected error occurred. Try again." }); + setError({ message: t("unexpected_error_try_again") }); } finally { setLoading(false); } @@ -65,8 +67,8 @@ export default function ForgotPassword({ csrfToken }) { const Success = () => { return (
-

Done

-

Check your email. We sent you a link to reset your password.

+

{t("done")}

+

{t("check_email_reset_password")}

{error &&

{error.message}

}
); @@ -74,7 +76,7 @@ export default function ForgotPassword({ csrfToken }) { return (
- +
{success && } @@ -82,19 +84,16 @@ export default function ForgotPassword({ csrfToken }) { <>

- Forgot Password + {t("forgot_password")}

-

- Enter the email address associated with your account and we will send you a link to reset - your password. -

+

{t("reset_instructions")}

{error &&

{error.message}

}
)} - Request Password Reset + {t("request_password_reset")}
@@ -145,7 +144,7 @@ export default function ForgotPassword({ csrfToken }) {
diff --git a/pages/auth/login.tsx b/pages/auth/login.tsx index a622b703..3d77ca84 100644 --- a/pages/auth/login.tsx +++ b/pages/auth/login.tsx @@ -4,22 +4,14 @@ import { useRouter } from "next/router"; import { useState } from "react"; import { ErrorCode, getSession } from "@lib/auth"; +import { useLocale } from "@lib/hooks/useLocale"; import AddToHomescreen from "@components/AddToHomescreen"; import Loader from "@components/Loader"; import { HeadSeo } from "@components/seo/head-seo"; -const errorMessages: { [key: string]: string } = { - [ErrorCode.SecondFactorRequired]: - "Two-factor authentication enabled. Please enter the six-digit code from your authenticator app.", - [ErrorCode.IncorrectPassword]: "Password is incorrect. Please try again.", - [ErrorCode.UserNotFound]: "No account exists matching that email address.", - [ErrorCode.IncorrectTwoFactorCode]: "Two-factor code is incorrect. Please try again.", - [ErrorCode.InternalServerError]: - "Something went wrong. Please try again and contact us if the issue persists.", -}; - export default function Login({ csrfToken }) { + const { t } = useLocale(); const router = useRouter(); const [email, setEmail] = useState(""); const [password, setPassword] = useState(""); @@ -27,6 +19,13 @@ export default function Login({ csrfToken }) { const [isSubmitting, setIsSubmitting] = useState(false); const [secondFactorRequired, setSecondFactorRequired] = useState(false); const [errorMessage, setErrorMessage] = useState(null); + const errorMessages: { [key: string]: string } = { + [ErrorCode.SecondFactorRequired]: t("2fa_enabled_instructions"), + [ErrorCode.IncorrectPassword]: `${t("incorrect_password")} ${t("please_try_again")}`, + [ErrorCode.UserNotFound]: t("no_account_exists"), + [ErrorCode.IncorrectTwoFactorCode]: `${t("incorrect_2fa_code")} ${t("please_try_again")}`, + [ErrorCode.InternalServerError]: `${t("something_went_wrong")} ${t("please_try_again_and_contact_us")}`, + }; const callbackUrl = typeof router.query?.callbackUrl === "string" ? router.query.callbackUrl : "/"; @@ -62,18 +61,18 @@ export default function Login({ csrfToken }) { setSecondFactorRequired(true); setErrorMessage(errorMessages[ErrorCode.SecondFactorRequired]); } else { - setErrorMessage(errorMessages[response.error] || "Something went wrong."); + setErrorMessage(errorMessages[response.error] || t("something_went_wrong")); } setIsSubmitting(false); } catch (e) { - setErrorMessage("Something went wrong."); + setErrorMessage(t("something_went_wrong")); setIsSubmitting(false); } } return (
- + {isSubmitting && (
@@ -84,7 +83,7 @@ export default function Login({ csrfToken }) {
Cal.com Logo

- Sign in to your account + {t("sign_in_account")}

@@ -94,7 +93,7 @@ export default function Login({ csrfToken }) {
@@ -143,7 +142,7 @@ export default function Login({ csrfToken }) { {secondFactorRequired && (
- Sign in + {t("sign_in")}
@@ -174,9 +173,9 @@ export default function Login({ csrfToken }) {
- Don't have an account? {/* replace this with your account creation flow */} + {t("dont_have_an_account")} {/* replace this with your account creation flow */} - Create an account + {t("create_an_account")}
diff --git a/pages/auth/logout.tsx b/pages/auth/logout.tsx index 52d13a18..85663996 100644 --- a/pages/auth/logout.tsx +++ b/pages/auth/logout.tsx @@ -1,16 +1,20 @@ import { CheckIcon } from "@heroicons/react/outline"; import Link from "next/link"; +import { useLocale } from "@lib/hooks/useLocale"; + import { HeadSeo } from "@components/seo/head-seo"; export default function Logout() { + const { t } = useLocale(); + return (
- +
-

We hope to see you again soon!

+

{t("hope_to_see_you_soon")}

diff --git a/pages/auth/signup.tsx b/pages/auth/signup.tsx index 750d8246..ab40ead5 100644 --- a/pages/auth/signup.tsx +++ b/pages/auth/signup.tsx @@ -2,6 +2,7 @@ import { signIn } from "next-auth/client"; import { useRouter } from "next/router"; import { useState } from "react"; +import { useLocale } from "@lib/hooks/useLocale"; import prisma from "@lib/prisma"; import { HeadSeo } from "@components/seo/head-seo"; @@ -9,6 +10,7 @@ import { UsernameInput } from "@components/ui/UsernameInput"; import ErrorAlert from "@components/ui/alerts/Error"; export default function Signup(props) { + const { t } = useLocale(); const router = useRouter(); const [hasErrors, setHasErrors] = useState(false); @@ -56,9 +58,11 @@ export default function Signup(props) { aria-labelledby="modal-title" role="dialog" aria-modal="true"> - +
-

Create your account

+

+ {t("create_your_account")} +

@@ -70,7 +74,7 @@ export default function Signup(props) {
diff --git a/pages/getting-started.tsx b/pages/getting-started.tsx index 9d3394e4..94b16818 100644 --- a/pages/getting-started.tsx +++ b/pages/getting-started.tsx @@ -21,6 +21,7 @@ import React, { useEffect, useRef, useState } from "react"; import TimezoneSelect from "react-timezone-select"; import { getSession } from "@lib/auth"; +import { useLocale } from "@lib/hooks/useLocale"; import AddCalDavIntegration, { ADD_CALDAV_INTEGRATION_FORM_TITLE, } from "@lib/integrations/CalDav/components/AddCalDavIntegration"; @@ -40,25 +41,6 @@ import getEventTypes from "../lib/queries/event-types/get-event-types"; dayjs.extend(utc); dayjs.extend(timezone); -const DEFAULT_EVENT_TYPES = [ - { - title: "15 Min Meeting", - slug: "15min", - length: 15, - }, - { - title: "30 Min Meeting", - slug: "30min", - length: 30, - }, - { - title: "Secret Meeting", - slug: "secret", - length: 15, - hidden: true, - }, -]; - type OnboardingProps = { user: User; integrations?: Record[]; @@ -67,8 +49,28 @@ type OnboardingProps = { }; export default function Onboarding(props: OnboardingProps) { + const { t } = useLocale(); const router = useRouter(); + const DEFAULT_EVENT_TYPES = [ + { + title: t("15min_meeting"), + slug: "15min", + length: 15, + }, + { + title: t("30min_meeting"), + slug: "30min", + length: 30, + }, + { + title: t("secret_meeting"), + slug: "secret", + length: 15, + hidden: true, + }, + ]; + const [isSubmitting, setSubmitting] = React.useState(false); const [enteredName, setEnteredName] = React.useState(); const Sess = useSession(); @@ -159,7 +161,7 @@ export default function Onboarding(props: OnboardingProps) {
@@ -229,14 +231,11 @@ export default function Onboarding(props: OnboardingProps) { open={isAddCalDavIntegrationDialogOpen} onOpenChange={(isOpen) => setIsAddCalDavIntegrationDialogOpen(isOpen)}> - +
{addCalDavError && (

- Error: + {t("error")}: {addCalDavError.message}

)} @@ -250,14 +249,14 @@ export default function Onboarding(props: OnboardingProps) { type="submit" form={ADD_CALDAV_INTEGRATION_FORM_TITLE} className="flex justify-center py-2 px-4 border border-transparent rounded-sm shadow-sm text-sm font-medium text-white bg-neutral-900 hover:bg-neutral-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-neutral-900"> - Save + {t("save")} { setIsAddCalDavIntegrationDialogOpen(false); }} asChild> - +
@@ -367,16 +366,15 @@ export default function Onboarding(props: OnboardingProps) { const steps = [ { - id: "welcome", - title: "Welcome to Cal.com", - description: - "Tell us what to call you and let us know what timezone you’re in. You’ll be able to edit this later.", + id: t("welcome"), + title: t("welcome_to_calcom"), + description: t("welcome_instructions"), Component: (
- Current time:  + {t("current_time")}:  {currentTime}
@@ -412,9 +410,9 @@ export default function Onboarding(props: OnboardingProps) { ), hideConfirm: false, - confirmText: "Continue", + confirmText: t("continue"), showCancel: true, - cancelText: "Set up later", + cancelText: t("set_up_later"), onComplete: async () => { try { setSubmitting(true); @@ -432,9 +430,8 @@ export default function Onboarding(props: OnboardingProps) { }, { id: "connect-calendar", - title: "Connect your calendar", - description: - "Connect your calendar to automatically check for busy times and new events as they’re scheduled.", + title: t("connect_your_calendar"), + description: t("connect_your_calendar_instructions"), Component: (
    {props.integrations.map((integration) => { @@ -443,15 +440,14 @@ export default function Onboarding(props: OnboardingProps) {
), hideConfirm: true, - confirmText: "Continue", + confirmText: t("continue"), showCancel: true, - cancelText: "Continue without calendar", + cancelText: t("continue_without_calendar"), }, { id: "set-availability", - title: "Set your availability", - description: - "Define ranges of time when you are available on a recurring basis. You can create more of these later and assign them to different calendars.", + title: t("set_availability"), + description: t("set_availability_instructions"), Component: ( <>
@@ -472,7 +468,7 @@ export default function Onboarding(props: OnboardingProps) {
@@ -482,15 +478,14 @@ export default function Onboarding(props: OnboardingProps) { }, { id: "profile", - title: "Nearly there", - description: - "Last thing, a brief description about you and a photo really help you get bookings and let people know who they’re booking with.", + title: t("nearly_there"), + description: t("nearly_there_instructions"), Component: (
- A few sentences about yourself. This will appear on your personal url page. + {t("few_sentences_about_yourself")}
), hideConfirm: false, - confirmText: "Finish", + confirmText: t("finish"), showCancel: true, - cancelText: "Set up later", + cancelText: t("set_up_later"), onComplete: async () => { try { setSubmitting(true); @@ -557,7 +552,7 @@ export default function Onboarding(props: OnboardingProps) { return (
- Cal.com - Getting Started + Cal.com - {t("getting_started")} diff --git a/pages/success.tsx b/pages/success.tsx index b708b237..13237d53 100644 --- a/pages/success.tsx +++ b/pages/success.tsx @@ -11,6 +11,7 @@ import { useEffect, useState } from "react"; import { asStringOrNull } from "@lib/asStringOrNull"; import { getEventName } from "@lib/event"; +import { useLocale } from "@lib/hooks/useLocale"; import useTheme from "@lib/hooks/useTheme"; import { isBrandingHidden } from "@lib/isBrandingHidden"; import prisma from "@lib/prisma"; @@ -24,6 +25,7 @@ dayjs.extend(toArray); dayjs.extend(timezone); export default function Success(props: inferSSRProps) { + const { t } = useLocale(); const router = useRouter(); const { location, name, reschedule } = router.query; @@ -71,8 +73,8 @@ export default function Success(props: inferSSRProps) (isReady && (
@@ -95,21 +97,21 @@ export default function Success(props: inferSSRProps)

{needsConfirmation ? props.profile.name !== null - ? `${props.profile.name} still needs to confirm or reject the booking.` - : "Your booking still needs to be confirmed or rejected." - : `We emailed you and the other attendees a calendar invitation with all the details.`} + ? t("user_needs_to_confirm_or_reject_booking", { user: props.profile.name }) + : t("needs_to_be_confirmed_or_rejected") + : t("emailed_you_and_attendees")}

-
What
+
{t("what")}
{eventName}
-
When
+
{t("when")}
{date.format("dddd, DD MMMM YYYY")}
@@ -120,7 +122,7 @@ export default function Success(props: inferSSRProps)
{location && ( <> -
Where
+
{t("where")}
{location}
)} @@ -130,7 +132,7 @@ export default function Success(props: inferSSRProps) {!needsConfirmation && (
- Add to calendar + {t("add_to_calendar")}
) xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 1000" className="inline-block -mt-1 mr-1 w-4 h-4"> - Other + {t("other")} @@ -227,7 +229,7 @@ export default function Success(props: inferSSRProps) )} {!props.hideBranding && (
- Create your own booking link with Cal.com + {t("create_booking_link_with_calcom")}
{ @@ -245,7 +247,7 @@ export default function Success(props: inferSSRProps) placeholder="rick.astley@cal.com" />
@@ -263,6 +265,7 @@ export default function Success(props: inferSSRProps) export async function getServerSideProps(context: GetServerSidePropsContext) { const typeId = parseInt(asStringOrNull(context.query.type) ?? ""); + if (isNaN(typeId)) { return { notFound: true, diff --git a/public/static/locales/en/common.json b/public/static/locales/en/common.json index a73136a2..9ac67ebd 100644 --- a/public/static/locales/en/common.json +++ b/public/static/locales/en/common.json @@ -1,4 +1,91 @@ { + "the_username": "The username", + "is_still_available": "is still available.", + "documentation": "Documentation", + "documentation_description": "Learn how to integrate our tools with your app", + "api_reference": "API Reference", + "api_reference_description": "A complete API reference for our libraries", + "blog": "Blog", + "blog_description": "Read our latest news and articles", + "join_our_community": "Join our community", + "claim_username_and_schedule_events": "Claim your username and schedule events", + "popular_pages": "Popular pages", + "register_now": "Register now", + "register": "Register", + "page_doesnt_exist": "This page does not exist.", + "check_spelling_mistakes_or_go_back": "Check for spelling mistakes or go back to the previous page.", + "404_page_not_found": "404: This page could not be found.", + "getting_started": "Getting Started", + "15min_meeting": "15 Min Meeting", + "30min_meeting": "30 Min Meeting", + "secret_meeting": "Secret Meeting", + "login_instead": "Login instead", + "create_account": "Create Account", + "confirm_password": "Confirm password", + "create_your_account": "Create your account", + "sign_up": "Sign up", + "youve_been_logged_out": "You've been logged out", + "hope_to_see_you_soon": "We hope to see you again soon!", + "logged_out": "Logged out", + "please_try_again_and_contact_us": "Please try again and contact us if the issue persists.", + "incorrect_2fa_code": "Two-factor code is incorrect.", + "no_account_exists": "No account exists matching that email address.", + "2fa_enabled_instructions": "Two-factor authentication enabled. Please enter the six-digit code from your authenticator app.", + "create_an_account": "Create an account", + "dont_have_an_account": "Don't have an account?", + "2fa_code": "Two-Factor Code", + "sign_in_account": "Sign in to your account", + "sign_in": "Sign in", + "go_back_login": "Go back to the login page", + "error_during_login": "An error occurred when logging you in. Head back to the login screen and try again.", + "request_password_reset": "Request Password Reset", + "forgot_password": "Forgot Password", + "forgot": "Forgot?", + "done": "Done", + "check_email_reset_password": "Check your email. We sent you a link to reset your password.", + "finish": "Finish", + "few_sentences_about_yourself": "A few sentences about yourself. This will appear on your personal url page.", + "nearly_there": "Nearly there", + "nearly_there_instructions": "Last thing, a brief description about you and a photo really help you get bookings and let people know who they’re booking with.", + "set_availability_instructions": "Define ranges of time when you are available on a recurring basis. You can create more of these later and assign them to different calendars.", + "set_availability": "Set your availability", + "continue_without_calendar": "Continue without calendar", + "connect_your_calendar": "Connect your calendar", + "connect_your_calendar_instructions": "Connect your calendar to automatically check for busy times and new events as they’re scheduled.", + "set_up_later": "Set up later", + "current_time": "Current time", + "welcome": "Welcome", + "welcome_to_calcom": "Welcome to Cal.com", + "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 Server", + "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 Cal.com", + "what": "What", + "when": "When", + "where": "Where", + "add_to_calendar": "Add to calendar", + "other": "Other", + "emailed_you_and_attendees": "We emailed you and the other attendees a calendar invitation with all the details.", + "needs_to_be_confirmed_or_rejected": "Your booking still needs to be confirmed or rejected.", + "user_needs_to_confirm_or_reject_booking": "{{user}} still needs to confirm or reject the booking.", + "meeting_is_scheduled": "This meeting is scheduled", + "submitted": "Submitted", + "booking_submitted": "Booking Submitted", + "booking_confirmed": "Booking Confirmed", + "enter_new_password": "Enter the new password you'd like for your account.", + "reset_password": "Reset Password", + "change_your_password": "Change your password", + "try_again": "Try Again", + "request_is_expired": "That Request is Expired.", + "reset_instructions": "Enter the email address associated with your account and we will send you a link to reset your password.", + "request_is_expired_instructions": "That request is expired. Go back and enter the email associated with your account and we will send you another link to reset your password.", + "whoops": "Whoops", + "login": "Login", + "success": "Success", + "password_has_been_reset_login": "Your password has been reset. You can now login with your newly created password.", + "unexpected_error_try_again": "An unexpected error occurred. Try again.", "back_to_bookings": "Back to bookings", "free_to_pick_another_event_type": "Feel free to pick another event anytime.", "cancelled": "Cancelled", @@ -10,6 +97,7 @@ "error_with_status_code_occured": "An error with status code {{status}} occurred.", "booking_already_cancelled": "This booking was already cancelled", "go_back_home": "Go back home", + "or_go_back_home": "Or go back home", "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, yet", @@ -22,7 +110,6 @@ "on": "on", "and": "and", "calendar_shows_busy_between": "Your calendar shows you as busy between", - "calendar_no_busy_slots": "Your don't have busy slots in this date.", "troubleshoot": "Troubleshoot", "troubleshoot_description": "Understand why certain times are available and others are blocked.", "overview_of_day": "Here is an overview of your day on", @@ -91,9 +178,9 @@ "password_updated_successfully": "Password updated successfully", "password_has_been_changed": "Your password has been successfully changed.", "error_changing_password": "Error changing password", - "something_went_wrong": "Something went wrong", + "something_went_wrong": "Something went wrong.", "something_doesnt_look_right": "Something doesn't look right?", - "please_try_again": "Please try again", + "please_try_again": "Please try again.", "super_secure_new_password": "Your super secure new password", "new_password": "New Password", "your_old_password": "Your old password", @@ -101,7 +188,7 @@ "change_password": "Change Password", "new_password_matches_old_password": "New password matches your old password. Please choose a different password.", "current_incorrect_password": "Current password is incorrect", - "incorrect_password": "Password is incorrect", + "incorrect_password": "Password is incorrect.", "1_on_1": "1-on-1", "24_h": "24h", "use_setting": "Use setting", @@ -162,7 +249,7 @@ "team_updated_successfully": "Team updated successfully", "your_team_updated_successfully": "Your team has been updated successfully.", "about": "About", - "team_description": "A few sentences about your team. This will appear on your team's URL page.", + "team_description": "A few sentences about your team. This will appear on your team's URL page.", "members": "Members", "member": "Member", "owner": "Owner",