Quellcode durchsuchen

Merge pull request #24576 from overleaf/ii-flexible-group-licensing-replace-users-with-licenses

[web] Replace "users" with "licenses" in flexible licensing

GitOrigin-RevId: c262f802c92e7ce82f8dc60badf8e6147c5da4e5
ilkin-overleaf vor 1 Jahr
Ursprung
Commit
b223bb8da8

+ 18 - 18
services/web/frontend/extracted-translations.json

@@ -72,10 +72,11 @@
   "add_error_assist_annual_to_your_projects": "",
   "add_error_assist_to_your_projects": "",
   "add_files": "",
+  "add_licenses": "",
   "add_more_editors": "",
+  "add_more_licenses": "",
+  "add_more_licenses_to_my_plan": "",
   "add_more_managers": "",
-  "add_more_users": "",
-  "add_more_users_to_my_plan": "",
   "add_new_email": "",
   "add_on": "",
   "add_ons": "",
@@ -88,7 +89,6 @@
   "add_role_and_department": "",
   "add_to_dictionary": "",
   "add_to_tag": "",
-  "add_users": "",
   "add_your_comment_here": "",
   "add_your_first_group_member_now": "",
   "added_by_on": "",
@@ -508,7 +508,7 @@
   "enter_image_url": "",
   "enter_the_code": "",
   "enter_the_confirmation_code": "",
-  "enter_the_number_of_users_youd_like_to_add_to_see_the_cost_breakdown": "",
+  "enter_the_number_of_licenses_youd_like_to_add_to_see_the_cost_breakdown": "",
   "equation_generator": "",
   "equation_preview": "",
   "error": "",
@@ -735,7 +735,7 @@
   "hotkey_undo": "",
   "hotkeys": "",
   "how_it_works": "",
-  "how_many_users_do_you_want_to_add": "",
+  "how_many_licenses_do_you_want_to_add": "",
   "how_to_create_tables": "",
   "how_to_insert_images": "",
   "how_we_use_your_data": "",
@@ -745,8 +745,8 @@
   "id": "",
   "identify_errors_with_your_compile": "",
   "if_you_need_to_customize_your_table_further_you_can": "",
-  "if_you_want_more_than_x_users_on_your_plan_we_need_to_add_them_for_you": "",
-  "if_you_want_to_reduce_the_number_of_users_please_contact_support": "",
+  "if_you_want_more_than_x_licenses_on_your_plan_we_need_to_add_them_for_you": "",
+  "if_you_want_to_reduce_the_number_of_licenses_please_contact_support": "",
   "if_your_occupation_not_listed_type_full_name": "",
   "ignore_validation_errors": "",
   "ill_take_it": "",
@@ -1161,8 +1161,8 @@
   "pending_additional_licenses": "",
   "pending_addon_cancellation": "",
   "pending_invite": "",
+  "per_license": "",
   "per_month": "",
-  "per_user": "",
   "percent_is_the_percentage_of_the_line_width": "",
   "permanently_disables_the_preview": "",
   "personal_library": "",
@@ -1195,7 +1195,7 @@
   "please_wait": "",
   "plus_additional_collaborators_document_history_track_changes_and_more": "",
   "plus_more": "",
-  "plus_x_additional_licenses_for_a_total_of_y_users": "",
+  "plus_x_additional_licenses_for_a_total_of_y_licenses": "",
   "postal_code": "",
   "postal_code_sentence_case": "",
   "premium": "",
@@ -1621,7 +1621,7 @@
   "suggestion_applied": "",
   "suggests_code_completions_while_typing": "",
   "support_for_your_browser_is_ending_soon": "",
-  "supports_up_to_x_users": "",
+  "supports_up_to_x_licenses": "",
   "sure_you_want_to_cancel_plan_change": "",
   "sure_you_want_to_change_plan": "",
   "sure_you_want_to_delete": "",
@@ -1976,7 +1976,7 @@
   "we_logged_you_in": "",
   "we_sent_code": "",
   "we_sent_new_code": "",
-  "we_will_charge_you_now_for_the_cost_of_your_additional_users_based_on_remaining_months": "",
+  "we_will_charge_you_now_for_the_cost_of_your_additional_licenses_based_on_remaining_months": "",
   "we_will_charge_you_now_for_your_new_plan_based_on_the_remaining_months_of_your_current_subscription": "",
   "we_will_use_your_existing_payment_method": "",
   "webinars": "",
@@ -2051,13 +2051,13 @@
   "you_dont_have_any_repositories": "",
   "you_have_0_free_suggestions_left": "",
   "you_have_1_free_suggestion_left": "",
-  "you_have_1_user_and_your_plan_supports_up_to_y": "",
+  "you_have_1_license_and_your_plan_supports_up_to_y": "",
   "you_have_added_x_of_group_size_y": "",
   "you_have_been_invited_to_transfer_management_of_your_account": "",
   "you_have_been_invited_to_transfer_management_of_your_account_to": "",
   "you_have_been_removed_from_this_project_and_will_be_redirected_to_project_dashboard": "",
-  "you_have_x_users_and_your_plan_supports_up_to_y": "",
-  "you_have_x_users_on_your_subscription": "",
+  "you_have_x_licenses_and_your_plan_supports_up_to_y": "",
+  "you_have_x_licenses_on_your_subscription": "",
   "you_need_to_configure_your_sso_settings": "",
   "you_unpaused_your_subscription": "",
   "you_will_be_able_to_reassign_subscription": "",
@@ -2073,7 +2073,7 @@
   "your_compile_timed_out": "",
   "your_current_plan": "",
   "your_current_plan_gives_you": "",
-  "your_current_plan_supports_up_to_x_users": "",
+  "your_current_plan_supports_up_to_x_licenses": "",
   "your_current_project_will_revert_to_the_version_from_time": "",
   "your_git_access_info": "",
   "your_git_access_info_bullet_1": "",
@@ -2105,14 +2105,14 @@
   "youre_about_to_disable_single_sign_on": "",
   "youre_about_to_enable_single_sign_on": "",
   "youre_about_to_enable_single_sign_on_sso_only": "",
-  "youre_adding_x_users_to_your_plan_giving_you_a_total_of_y_users": "",
+  "youre_adding_x_licenses_to_your_plan_giving_you_a_total_of_y_licenses": "",
   "youre_already_setup_for_sso": "",
   "youre_helping_us_shape_the_future_of_overleaf": "",
   "youre_joining": "",
   "youre_on_free_trial_which_ends_on": "",
   "youre_signed_in_as_logout": "",
-  "youve_added_more_users": "",
-  "youve_added_x_more_users_to_your_subscription_invite_people": "",
+  "youve_added_more_licenses": "",
+  "youve_added_x_more_licenses_to_your_subscription_invite_people": "",
   "youve_lost_edit_access": "",
   "youve_paused_your_subscription": "",
   "youve_unlinked_all_users": "",

+ 8 - 8
services/web/frontend/js/features/group-management/components/add-seats/add-seats.tsx

@@ -226,10 +226,10 @@ function AddSeats() {
       <RequestStatus
         variant="primary"
         icon="check_circle"
-        title={t('youve_added_more_users')}
+        title={t('youve_added_more_licenses')}
         content={
           <Trans
-            i18nKey="youve_added_x_more_users_to_your_subscription_invite_people"
+            i18nKey="youve_added_x_more_licenses_to_your_subscription_invite_people"
             components={[
               // eslint-disable-next-line jsx-a11y/anchor-has-content, react/jsx-key
               <a
@@ -281,16 +281,16 @@ function AddSeats() {
               >
                 <div className="d-grid gap-1">
                   <h4 className="fw-bold m-0 card-description-secondary">
-                    {t('add_more_users')}
+                    {t('add_more_licenses')}
                   </h4>
                   <div>
-                    {t('your_current_plan_supports_up_to_x_users', {
+                    {t('your_current_plan_supports_up_to_x_licenses', {
                       users: totalLicenses,
                     })}
                   </div>
                   <div>
                     <Trans
-                      i18nKey="if_you_want_to_reduce_the_number_of_users_please_contact_support"
+                      i18nKey="if_you_want_to_reduce_the_number_of_licenses_please_contact_support"
                       components={[
                         // eslint-disable-next-line jsx-a11y/anchor-has-content, react/jsx-key
                         <a
@@ -308,7 +308,7 @@ function AddSeats() {
                 <div>
                   <FormGroup controlId="number-of-users-input">
                     <FormLabel>
-                      {t('how_many_users_do_you_want_to_add')}
+                      {t('how_many_licenses_do_you_want_to_add')}
                     </FormLabel>
                     <FormControl
                       type="text"
@@ -366,7 +366,7 @@ function AddSeats() {
                     }
                     isLoading={isAddingSeats || isSendingMailToSales}
                   >
-                    {shouldContactSales ? t('send_request') : t('add_users')}
+                    {shouldContactSales ? t('send_request') : t('add_licenses')}
                   </Button>
                 </div>
               </form>
@@ -406,7 +406,7 @@ function CostSummarySection({
       <Notification
         content={
           <Trans
-            i18nKey="if_you_want_more_than_x_users_on_your_plan_we_need_to_add_them_for_you"
+            i18nKey="if_you_want_more_than_x_licenses_on_your_plan_we_need_to_add_them_for_you"
             // eslint-disable-next-line react/jsx-key
             components={[<b />]}
             values={{ count: MAX_NUMBER_OF_USERS }}

+ 3 - 3
services/web/frontend/js/features/group-management/components/add-seats/cost-summary.tsx

@@ -30,7 +30,7 @@ function CostSummary({ subscriptionChange, totalLicenses }: CostSummaryProps) {
           <div className="fw-bold">{t('cost_summary')}</div>
           {subscriptionChange ? (
             <Trans
-              i18nKey="youre_adding_x_users_to_your_plan_giving_you_a_total_of_y_users"
+              i18nKey="youre_adding_x_licenses_to_your_plan_giving_you_a_total_of_y_licenses"
               components={[
                 <b />, // eslint-disable-line react/jsx-key
                 <b />, // eslint-disable-line react/jsx-key
@@ -49,7 +49,7 @@ function CostSummary({ subscriptionChange, totalLicenses }: CostSummaryProps) {
             />
           ) : (
             t(
-              'enter_the_number_of_users_youd_like_to_add_to_see_the_cost_breakdown'
+              'enter_the_number_of_licenses_youd_like_to_add_to_see_the_cost_breakdown'
             )
           )}
         </div>
@@ -122,7 +122,7 @@ function CostSummary({ subscriptionChange, totalLicenses }: CostSummaryProps) {
             </div>
             <div>
               {t(
-                'we_will_charge_you_now_for_the_cost_of_your_additional_users_based_on_remaining_months'
+                'we_will_charge_you_now_for_the_cost_of_your_additional_licenses_based_on_remaining_months'
               )}
             </div>
             <div>

+ 3 - 3
services/web/frontend/js/features/group-management/components/group-members.tsx

@@ -58,10 +58,10 @@ export default function GroupMembers() {
         <small data-testid="group-size-details">
           <strong>
             {users.length === 1
-              ? t('you_have_1_user_and_your_plan_supports_up_to_y', {
+              ? t('you_have_1_license_and_your_plan_supports_up_to_y', {
                   groupSize,
                 })
-              : t('you_have_x_users_and_your_plan_supports_up_to_y', {
+              : t('you_have_x_licenses_and_your_plan_supports_up_to_y', {
                   addedUsersSize: users.length,
                   groupSize,
                 })}
@@ -74,7 +74,7 @@ export default function GroupMembers() {
                 rel="noreferrer noopener"
                 onClick={() => sendMB('flex-add-users')}
               >
-                {t('add_more_users')}.
+                {t('add_more_licenses')}.
               </a>
             </>
           )}

+ 1 - 1
services/web/frontend/js/features/group-management/components/upgrade-subscription/upgrade-subscription-plan-details.tsx

@@ -48,7 +48,7 @@ function UpgradeSubscriptionPlanDetails() {
             </span>
           </Col>
           <Col className="d-flex flex-column justify-content-center">
-            <div className="per-user-price-text">{t('per_user')}</div>
+            <div className="per-user-price-text">{t('per_license')}</div>
             <div className="per-user-price-text">{t('billed_yearly')}</div>
           </Col>
         </Row>

+ 1 - 1
services/web/frontend/js/features/group-management/components/upgrade-subscription/upgrade-subscription-upgrade-summary.tsx

@@ -27,7 +27,7 @@ function UpgradeSummary({ subscriptionChange }: UpgradeSummaryProps) {
       <Card.Body className="d-grid gap-2 p-3">
         <div>
           <div className="fw-bold">{t('upgrade_summary')}</div>
-          {t('you_have_x_users_on_your_subscription', {
+          {t('you_have_x_licenses_on_your_subscription', {
             groupSize: totalLicenses,
           })}
         </div>

+ 1 - 1
services/web/frontend/js/features/group-management/components/upgrade-subscription/upgrade-subscription.tsx

@@ -116,7 +116,7 @@ function UpgradeSubscription() {
                   className="me-auto"
                   onClick={() => sendMB('flex-add-users')}
                 >
-                  {t('add_more_users_to_my_plan')}
+                  {t('add_more_licenses_to_my_plan')}
                 </a>
                 <Button
                   href="/user/subscription"

+ 3 - 3
services/web/frontend/js/features/subscription/components/dashboard/states/active/active-new.tsx

@@ -190,7 +190,7 @@ export function ActiveSubscriptionNew({
         <p className="mb-1">
           {isLegacyPlan && subscription.recurly.additionalLicenses > 0 ? (
             <Trans
-              i18nKey="plus_x_additional_licenses_for_a_total_of_y_users"
+              i18nKey="plus_x_additional_licenses_for_a_total_of_y_licenses"
               values={{
                 count: subscription.recurly.totalLicenses,
                 additionalLicenses: subscription.recurly.additionalLicenses,
@@ -201,7 +201,7 @@ export function ActiveSubscriptionNew({
             />
           ) : (
             <Trans
-              i18nKey="supports_up_to_x_users"
+              i18nKey="supports_up_to_x_licenses"
               values={{ count: subscription.recurly.totalLicenses }}
               shouldUnescape
               tOptions={{ interpolation: { escapeValue: true } }}
@@ -376,7 +376,7 @@ function FlexibleGroupLicensingActions({
           href="/user/subscription/group/add-users"
           onClick={() => sendMB('flex-add-users')}
         >
-          {t('add_more_users')}
+          {t('add_more_licenses')}
         </OLButton>
       )}
     </>

+ 18 - 18
services/web/locales/en.json

@@ -87,10 +87,11 @@
   "add_error_assist_annual_to_your_projects": "Add Error Assist Annual <sparkle/> to your projects and get unlimited AI help to fix LaTeX errors faster.",
   "add_error_assist_to_your_projects": "Add Error Assist <sparkle/> to your projects and get unlimited AI help to fix LaTeX errors faster.",
   "add_files": "Add Files",
+  "add_licenses": "Add licenses",
   "add_more_editors": "Add more editors",
+  "add_more_licenses": "Add more licenses",
+  "add_more_licenses_to_my_plan": "Add more licenses to my plan",
   "add_more_managers": "Add more managers",
-  "add_more_users": "Add more users",
-  "add_more_users_to_my_plan": "Add more users to my plan",
   "add_new_email": "Add new email",
   "add_on": "Add-on",
   "add_ons": "Add-ons",
@@ -103,7 +104,6 @@
   "add_role_and_department": "Add role and department",
   "add_to_dictionary": "Add to Dictionary",
   "add_to_tag": "Add to tag",
-  "add_users": "Add users",
   "add_your_comment_here": "Add your comment here",
   "add_your_first_group_member_now": "Add your first group members now",
   "added": "added",
@@ -657,7 +657,7 @@
   "enter_image_url": "Enter image URL",
   "enter_the_code": "Enter the 6-digit code sent to __email__.",
   "enter_the_confirmation_code": "Enter the 6-digit confirmation code sent to __email__.",
-  "enter_the_number_of_users_youd_like_to_add_to_see_the_cost_breakdown": "Enter the number of users you’d like to add to see the cost breakdown.",
+  "enter_the_number_of_licenses_youd_like_to_add_to_see_the_cost_breakdown": "Enter the number of licenses you’d like to add to see the cost breakdown.",
   "enter_your_email_address": "Enter your email address",
   "enter_your_email_address_below_and_we_will_send_you_a_link_to_reset_your_password": "Enter your email address below, and we will send you a link to reset your password",
   "enter_your_new_password": "Enter your new password",
@@ -957,8 +957,8 @@
   "hotkey_undo": "Undo",
   "hotkeys": "Hotkeys",
   "how_it_works": "How it works",
+  "how_many_licenses_do_you_want_to_add": "How many licenses do you want to add?",
   "how_many_users_do_you_need": "How many users do you need?",
-  "how_many_users_do_you_want_to_add": "How many users do you want to add?",
   "how_to_create_tables": "How to create tables",
   "how_to_insert_images": "How to insert images",
   "how_we_use_your_data": "How we use your data",
@@ -971,8 +971,8 @@
   "if_have_existing_can_link": "If you have an existing <b>__appName__</b> account on another email, you can link it to your <b>__institutionName__</b> account by clicking <b>__clickText__</b>.",
   "if_owner_can_link": "If you own the <b>__appName__</b> account with <b>__email__</b>, you will be allowed to link it to your <b>__institutionName__</b> institutional account.",
   "if_you_need_to_customize_your_table_further_you_can": "If you need to customize your table further, you can. Using LaTeX code, you can change anything from table styles and border styles to colors and column widths. <0>Read our guide</0> to using tables in LaTeX to help you get started.",
-  "if_you_want_more_than_x_users_on_your_plan_we_need_to_add_them_for_you": "If you want more than __count__ users on your plan, we need to add them for you. Just click <0>Send request</0> below and we’ll be happy to help.",
-  "if_you_want_to_reduce_the_number_of_users_please_contact_support": "If you want to reduce the number of users on your plan, please <0>contact customer support</0>.",
+  "if_you_want_more_than_x_licenses_on_your_plan_we_need_to_add_them_for_you": "If you want more than __count__ licenses on your plan, we need to add them for you. Just click <0>Send request</0> below and we’ll be happy to help.",
+  "if_you_want_to_reduce_the_number_of_licenses_please_contact_support": "If you want to reduce the number of licenses on your plan, please <0>contact customer support</0>.",
   "if_your_occupation_not_listed_type_full_name": "If your __occupation__ isn’t listed, you can type the full name.",
   "ignore_and_continue_institution_linking": "You can also ignore this and <a href=\"__link__\">continue to __appName__ with your <b>__email__</b> account</a>.",
   "ignore_validation_errors": "Don’t check syntax",
@@ -1551,9 +1551,9 @@
   "pending_additional_licenses": "Your subscription is changing to include <0>__pendingAdditionalLicenses__</0> additional license(s) for a total of <1>__pendingTotalLicenses__</1> licenses.",
   "pending_addon_cancellation": "Your subscription will change to remove the <strong>__addOnName__</strong> add-on at the end of the current billing period.",
   "pending_invite": "Pending invite",
+  "per_license": "per license",
   "per_month": "per month",
   "per_month_billed_annually": "per month, billed annually",
-  "per_user": "per user",
   "per_user_month": "per user / month",
   "per_user_year": "per user / year",
   "per_year": "per year",
@@ -1601,7 +1601,7 @@
   "please_wait": "Please wait",
   "plus_additional_collaborators_document_history_track_changes_and_more": "(plus additional collaborators, document history, track changes, and more).",
   "plus_more": "plus more",
-  "plus_x_additional_licenses_for_a_total_of_y_users": "Plus <0>__additionalLicenses__</0> additional license(s) for a total of <1>__count__ users</1>",
+  "plus_x_additional_licenses_for_a_total_of_y_licenses": "Plus <0>__additionalLicenses__</0> additional license(s) for a total of <1>__count__ licenses</1>",
   "popular_tags": "Popular Tags",
   "portal_add_affiliation_to_join": "It looks like you are already logged in to __appName__. If you have a __portalTitle__ email you can add it now.",
   "position": "Position",
@@ -2119,7 +2119,7 @@
   "suggests_code_completions_while_typing": "Suggests code completions while typing",
   "support": "Support",
   "support_for_your_browser_is_ending_soon": "Support for your browser is ending soon",
-  "supports_up_to_x_users": "Supports up to <0>__count__ users</0>",
+  "supports_up_to_x_licenses": "Supports up to <0>__count__ licenses</0>",
   "sure_you_want_to_cancel_plan_change": "Are you sure you want to revert your scheduled plan change? You will remain subscribed to the <0>__planName__</0> plan.",
   "sure_you_want_to_change_plan": "Are you sure you want to change plan to <0>__planName__</0>?",
   "sure_you_want_to_delete": "Are you sure you want to permanently delete the following files?",
@@ -2526,7 +2526,7 @@
   "we_may_also_contact_you_from_time_to_time_by_email_with_a_survey": "<0>We may also contact you</0> from time to time by email with a survey, or to see if you would like to participate in other user research initiatives",
   "we_sent_code": "We’ve sent you a confirmation code",
   "we_sent_new_code": "We’ve sent a new code. If it doesn’t arrive, make sure to check your spam and any promotions folders.",
-  "we_will_charge_you_now_for_the_cost_of_your_additional_users_based_on_remaining_months": "We’ll charge you now for the cost of your additional users based on the remaining months of your current subscription.",
+  "we_will_charge_you_now_for_the_cost_of_your_additional_licenses_based_on_remaining_months": "We’ll charge you now for the cost of your additional licenses based on the remaining months of your current subscription.",
   "we_will_charge_you_now_for_your_new_plan_based_on_the_remaining_months_of_your_current_subscription": "We’ll charge you now for your new plan based on the remaining months of your current subscription.",
   "we_will_use_your_existing_payment_method": "We’ll use your existing payment method <strong>__paymentMethod__</strong>.",
   "webinars": "Webinars",
@@ -2610,13 +2610,13 @@
   "you_dont_have_any_repositories": "You don’t have any repositories",
   "you_have_0_free_suggestions_left": "You have 0 free suggestions left",
   "you_have_1_free_suggestion_left": "You have 1 free suggestion left",
-  "you_have_1_user_and_your_plan_supports_up_to_y": "You have 1 user and your plan supports up to __groupSize__.",
+  "you_have_1_license_and_your_plan_supports_up_to_y": "You have 1 license and your plan supports up to __groupSize__.",
   "you_have_added_x_of_group_size_y": "You have added <0>__addedUsersSize__</0> of <1>__groupSize__</1> available members",
   "you_have_been_invited_to_transfer_management_of_your_account": "You have been invited to transfer management of your account.",
   "you_have_been_invited_to_transfer_management_of_your_account_to": "You have been invited to transfer management of your account to __groupName__.",
   "you_have_been_removed_from_this_project_and_will_be_redirected_to_project_dashboard": "You have been removed from this project, and will no longer have access to it. You will be redirected to your project dashboard momentarily.",
-  "you_have_x_users_and_your_plan_supports_up_to_y": "You have __addedUsersSize__ users and your plan supports up to __groupSize__.",
-  "you_have_x_users_on_your_subscription": "You have __groupSize__ users on your subscription.",
+  "you_have_x_licenses_and_your_plan_supports_up_to_y": "You have __addedUsersSize__ licenses and your plan supports up to __groupSize__.",
+  "you_have_x_licenses_on_your_subscription": "You have __groupSize__ licenses on your subscription.",
   "you_need_to_configure_your_sso_settings": "You need to configure and test your SSO settings before enabling SSO",
   "you_unpaused_your_subscription": "You unpaused your subscription.",
   "you_will_be_able_to_contact_us_any_time_to_share_your_feedback": "<0>You will be able to contact us</0> any time to share your feedback",
@@ -2634,7 +2634,7 @@
   "your_compile_timed_out": "Your compile timed out",
   "your_current_plan": "Your current plan",
   "your_current_plan_gives_you": "By pausing your subscription, you’ll be able to access your premium features faster when you need them again.",
-  "your_current_plan_supports_up_to_x_users": "Your current plan supports up to __users__ users.",
+  "your_current_plan_supports_up_to_x_licenses": "Your current plan supports up to __users__ licenses.",
   "your_current_project_will_revert_to_the_version_from_time": "Your current project will revert to the version from __timestamp__",
   "your_git_access_info": "Your Git authentication tokens should be entered whenever you’re prompted for a password.",
   "your_git_access_info_bullet_1": "You can have up to 10 tokens.",
@@ -2669,15 +2669,15 @@
   "youre_about_to_disable_single_sign_on": "You’re about to disable single sign-on for all group members.",
   "youre_about_to_enable_single_sign_on": "You’re about to enable single sign-on (SSO). Before you do this, you should ensure you’re confident the SSO configuration is correct and all your group members have managed user accounts.",
   "youre_about_to_enable_single_sign_on_sso_only": "You’re about to enable single sign-on (SSO). Before you do this, you should ensure you’re confident the SSO configuration is correct.",
-  "youre_adding_x_users_to_your_plan_giving_you_a_total_of_y_users": "You’re adding <0>__adding__</0> users to your plan giving you a total of <1>__total__</1> users.",
+  "youre_adding_x_licenses_to_your_plan_giving_you_a_total_of_y_licenses": "You’re adding <0>__adding__</0> licenses to your plan giving you a total of <1>__total__</1> licenses.",
   "youre_already_setup_for_sso": "You’re already set up for SSO",
   "youre_helping_us_shape_the_future_of_overleaf": "You’re helping us shape the future of Overleaf",
   "youre_joining": "You’re joining",
   "youre_on_free_trial_which_ends_on": "You’re on a free trial which ends on <0>__date__</0>.",
   "youre_signed_in_as_logout": "You’re signed in as <0>__email__</0>. <1>Log out.</1>",
   "youre_signed_up": "You’re signed up",
-  "youve_added_more_users": "You’ve added more user(s)!",
-  "youve_added_x_more_users_to_your_subscription_invite_people": "You’ve added __users__ more user(s) to your subscription. <0>Invite people</0>.",
+  "youve_added_more_licenses": "You’ve added more license(s)!",
+  "youve_added_x_more_licenses_to_your_subscription_invite_people": "You’ve added __users__ more license(s) to your subscription. <0>Invite people</0>.",
   "youve_lost_edit_access": "You’ve lost edit access",
   "youve_paused_your_subscription": "Your <0>__planName__</0> subscription is paused until <0>__reactivationDate__</0>, then it’ll automatically unpause. You can unpause early at any time.",
   "youve_unlinked_all_users": "You’ve unlinked all users",

+ 15 - 15
services/web/test/frontend/features/group-management/components/add-seats.spec.tsx

@@ -15,7 +15,7 @@ describe('<AddSeats />', function () {
 
     cy.mount(<AddSeats />)
 
-    cy.findByRole('button', { name: /add users/i })
+    cy.findByRole('button', { name: /add licenses/i })
     cy.findByTestId('add-more-users-group-form')
   })
 
@@ -35,22 +35,22 @@ describe('<AddSeats />', function () {
     })
   })
 
-  it('shows the "Add more users" label', function () {
-    cy.findByText(/add more users/i)
+  it('shows the "Add more licenses" label', function () {
+    cy.findByText(/add more licenses/i)
   })
 
   it('shows the maximum supported users', function () {
     cy.findByText(
       new RegExp(
-        `your current plan supports up to ${this.totalLicenses} users`,
+        `your current plan supports up to ${this.totalLicenses} licenses`,
         'i'
       )
     )
   })
 
-  it('shows instructions on how to reduce users on a plan', function () {
+  it('shows instructions on how to reduce licenses on a plan', function () {
     cy.contains(
-      /if you want to reduce the number of users on your plan, please contact customer support/i
+      /if you want to reduce the number of licenses on your plan, please contact customer support/i
     ).within(() => {
       cy.findByRole('link', { name: /contact customer support/i }).should(
         'have.attr',
@@ -90,7 +90,7 @@ describe('<AddSeats />', function () {
 
   describe('cost summary', function () {
     beforeEach(function () {
-      cy.findByLabelText(/how many users do you want to add/i).as('input')
+      cy.findByLabelText(/how many licenses do you want to add/i).as('input')
     })
 
     it('shows the title', function () {
@@ -103,7 +103,7 @@ describe('<AddSeats />', function () {
       afterEach(function () {
         cy.findByTestId('cost-summary').within(() => {
           cy.findByText(
-            /enter the number of users you’d like to add to see the cost breakdown/i
+            /enter the number of licenses you’d like to add to see the cost breakdown/i
           )
         })
       })
@@ -139,7 +139,7 @@ describe('<AddSeats />', function () {
         this.numberOfUsersExceedingMaxLimit = MAX_NUMBER_OF_USERS + 1
 
         cy.get('@input').type(this.numberOfUsersExceedingMaxLimit.toString())
-        cy.findByRole('button', { name: /add users/i }).should('not.exist')
+        cy.findByRole('button', { name: /add licenses/i }).should('not.exist')
         cy.findByRole('button', { name: /send request/i }).as('sendRequestBtn')
       })
 
@@ -147,7 +147,7 @@ describe('<AddSeats />', function () {
         cy.findByTestId('cost-summary').should('not.exist')
         cy.findByRole('alert').should(
           'contain.text',
-          `If you want more than ${MAX_NUMBER_OF_USERS} users on your plan, we need to add them for you. Just click Send request below and we’ll be happy to help.`
+          `If you want more than ${MAX_NUMBER_OF_USERS} licenses on your plan, we need to add them for you. Just click Send request below and we’ll be happy to help.`
         )
       })
 
@@ -237,7 +237,7 @@ describe('<AddSeats />', function () {
           },
         }
 
-        cy.findByRole('button', { name: /add users/i }).as('addUsersBtn')
+        cy.findByRole('button', { name: /add licenses/i }).as('addUsersBtn')
         cy.findByRole('button', { name: /send request/i }).should('not.exist')
       })
 
@@ -251,7 +251,7 @@ describe('<AddSeats />', function () {
         cy.findByTestId('cost-summary').within(() => {
           cy.contains(
             new RegExp(
-              `you’re adding ${this.adding} users to your plan giving you a total of ${this.body.change.addOn.quantity} users`,
+              `you’re adding ${this.adding} licenses to your plan giving you a total of ${this.body.change.addOn.quantity} licenses`,
               'i'
             )
           )
@@ -287,7 +287,7 @@ describe('<AddSeats />', function () {
           })
 
           cy.findByText(
-            /we’ll charge you now for the cost of your additional users based on the remaining months of your current subscription/i
+            /we’ll charge you now for the cost of your additional licenses based on the remaining months of your current subscription/i
           )
           cy.findByText(
             /after that, we’ll bill you \$1,000\.00 \(\$895\.00 \+ \$105\.00 tax\) annually on December 1, unless you cancel/i
@@ -342,9 +342,9 @@ describe('<AddSeats />', function () {
           makeRequest(204, this.adding.toString())
           cy.findByTestId('title').should(
             'contain.text',
-            'You’ve added more user(s)'
+            'You’ve added more license(s)'
           )
-          cy.findByText(/you’ve added more user\(s\) to your subscription/i)
+          cy.findByText(/you’ve added more license\(s\) to your subscription/i)
           cy.findByRole('link', { name: /invite people/i }).should(
             'have.attr',
             'href',

+ 5 - 5
services/web/test/frontend/features/group-management/components/group-members.spec.tsx

@@ -532,7 +532,7 @@ describe('GroupMembers', function () {
       )
 
       cy.findByTestId('group-size-details').contains(
-        'You have 2 users and your plan supports up to 10. Add more users.'
+        'You have 2 licenses and your plan supports up to 10. Add more licenses.'
       )
       cy.findByTestId('add-more-members-form').within(() => {
         cy.contains('Invite more members')
@@ -552,11 +552,11 @@ describe('GroupMembers', function () {
       )
 
       cy.findByTestId('group-size-details').contains(
-        'You have 1 user and your plan supports up to 10. Add more users.'
+        'You have 1 license and your plan supports up to 10. Add more licenses.'
       )
     })
 
-    it('renders the group members page without "add more users" link when not admin', function () {
+    it('renders the group members page without "add more licenses" link when not admin', function () {
       cy.window().then(win => {
         win.metaAttributesCache.set('ol-users', [this.JOHN_DOE])
         win.metaAttributesCache.set('ol-canUseAddSeatsFeature', false)
@@ -569,8 +569,8 @@ describe('GroupMembers', function () {
       )
 
       cy.findByTestId('group-size-details').within(() => {
-        cy.findByText(/you have \d+ user and your plan supports up to \d+/i)
-        cy.findByText(/add more users/i).should('not.exist')
+        cy.findByText(/you have \d+ license and your plan supports up to \d+/i)
+        cy.findByText(/add more licenses/i).should('not.exist')
       })
     })
   })

+ 3 - 3
services/web/test/frontend/features/group-management/components/upgrade-subscription.spec.tsx

@@ -56,8 +56,8 @@ describe('<UpgradeSubscription />', function () {
     })
   })
 
-  it('shows the "Add more users to my plan" label', function () {
-    cy.findByText(/add more users to my plan/i).should(
+  it('shows the "Add more licenses to my plan" label', function () {
+    cy.findByText(/add more licenses to my plan/i).should(
       'have.attr',
       'href',
       '/user/subscription/group/add-users'
@@ -126,7 +126,7 @@ describe('<UpgradeSubscription />', function () {
     })
 
     it('shows total users', function () {
-      cy.findByText(/you have 2 users on your subscription./i)
+      cy.findByText(/you have 2 licenses on your subscription./i)
     })
   })