Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Email: Refine copy of Email Comparison pages #60303

Merged
merged 7 commits into from
Feb 15, 2022

Conversation

stephanethomas
Copy link
Contributor

@stephanethomas stephanethomas commented Jan 20, 2022

This pull request updates the copy of the Email Comparison page as well as the In-Depth Comparison page to address a number of comments made internally on Slack. I've also made a number of refinements with the aim of making this copy more consistent as well as providing users with more points of comparison, so that they can chose the most appropriate solution for their needs (some features such as real-time collaboration should make it more obvious why Google Workspace and Professional Email have different price points):

Email Comparison page
Before After
image image
In-Depth Comparison page (desktop)
Before After
image

image
In-Depth Comparison page (mobile)
Before After
image






image
Purchases page

Note I've also updated the label of Google Workspace on the Purchases page, so it mentions mailboxes rather than productivity tools first:

Before After
BEFORE AFTER

Testing instructions

Note you will have to append ?flags=emails/in-depth-comparison to the url of the page (and reload it) if you're testing those changes on a live branch as this feature has not been enabled on this environment yet:

  1. Run git checkout update/copy-in-email-comparison-pages and start your server, or access a live branch
  2. Log into a WordPress.com account with a domain but no email
  3. Open the Emails page
  4. Click the Add Email button of that domain to access the Email Comparison page
  5. Assert that the page looks like the screenshots above
  6. Click the See how they compare link to access the In-Depth Comparison page
  7. Assert that the page looks like the screenshots above on desktop and mobile
  8. Navigate to the Purchases page
  9. Assert that Google Workspace and G Suite subscriptions have the right label

@stephanethomas stephanethomas added G Suite Professional Email Issues with Professional Email powered by Titan labels Jan 20, 2022
@stephanethomas stephanethomas self-assigned this Jan 20, 2022
@github-actions
Copy link

github-actions bot commented Jan 20, 2022

@stephanethomas stephanethomas force-pushed the update/copy-in-email-comparison-pages branch from 7dfe5b1 to 515dcf0 Compare January 20, 2022 17:08
@@ -673,7 +673,7 @@ function purchaseType( purchase ) {
}

if ( isGSuiteOrGoogleWorkspace( purchase ) ) {
return i18n.translate( 'Productivity Tools and Mailboxes at %(domain)s', {
return i18n.translate( 'Mailboxes and Productivity Tools at %(domain)s', {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ This change will be queued for retranslation. We'll display the English text until then.

@@ -41,10 +41,10 @@ export function getSublabel( serverCartItem: ResponseCartProduct ): string {

if ( isGoogleWorkspace( serverCartItem ) || isGSuiteOrExtraLicenseProductSlug( productSlug ) ) {
if ( isRenewalItem ) {
return String( translate( 'Productivity Tools and Mailboxes Renewal' ) );
return String( translate( 'Mailboxes and Productivity Tools Renewal' ) );
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ This change will be queued for retranslation. We'll display the English text until then.
ℹ️ String reuse speeds up translation and improves consistency. The following string might make a good alternative and has already been translated 18 times:
translate( 'Productivity Tools and Mailboxes' ) ES Score: 9

}

return String( translate( 'Productivity Tools and Mailboxes' ) );
return String( translate( 'Mailboxes and Productivity Tools' ) );
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ This change will be queued for retranslation. We'll display the English text until then.
ℹ️ String reuse speeds up translation and improves consistency. The following string might make a good alternative and has already been translated 18 times:
translate( 'Productivity Tools and Mailboxes Renewal' ) ES Score: 12

@matticbot
Copy link
Contributor

matticbot commented Jan 20, 2022

Here is how your PR affects size of JS and CSS bundles shipped to the user's browser:

Sections (~129 bytes added 📈 [gzipped])

name     parsed_size           gzip_size
email        +1209 B  (+0.2%)     +122 B  (+0.1%)
domains        +46 B  (+0.0%)      +10 B  (+0.0%)

Sections contain code specific for a given set of routes. Is downloaded and parsed only when a particular route is navigated to.

Legend

What is parsed and gzip size?

Parsed Size: Uncompressed size of the JS and CSS files. This much code needs to be parsed and stored in memory.
Gzip Size: Compressed size of the JS and CSS files. This much data needs to be downloaded over network.

Generated by performance advisor bot at iscalypsofastyet.com.

@stephanethomas stephanethomas force-pushed the update/copy-in-email-comparison-pages branch from 515dcf0 to b4a4f44 Compare January 24, 2022 14:05

<tr className="email-providers-in-depth-comparison-table__separator">
<td className="email-providers-in-depth-comparison-table__feature">
{ translate( 'Collaboration' ) }
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ℹ️ String reuse speeds up translation and improves consistency. The following string might make a good alternative and has already been translated 36 times:
translate( 'Collaboration', { context: 'Theme Showcase term name'} ) ES Score: 18
See 1 additional suggestions in the PR translation status page

support: translate( '24/7 support via email' ),
tools: translate( 'Gmail, Calendar, Meet, Chat, Drive, Docs, Sheets, Slides and more' ),
tools: translate(
'Gmail, Calendar, Contacts, Meet, Chat, Drive, Docs, Sheets, Slides and more'
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🆗 This change will be queued for retranslation. We'll use the existing translations in the meantime.

},
supportUrl: ADDING_GSUITE_TO_YOUR_SITE,
table: {
access: translate( 'Online & offline' ),
collaboration: translate( 'Real-time' ),
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ℹ️ String reuse speeds up translation and improves consistency. The following string might make a good alternative and has already been translated 22 times:
translate( 'Real-time', { context: 'Real-time VaultPress Backups'} ) ES Score: 14
See 1 additional suggestions in the PR translation status page

@stephanethomas stephanethomas marked this pull request as ready for review January 24, 2022 14:28
@stephanethomas stephanethomas requested review from a team as code owners January 24, 2022 14:28
@matticbot matticbot added the [Status] Needs Review The PR is ready for review. This also triggers e2e canary tests and wp-desktop tests automatically. label Jan 24, 2022
@sirbrillig sirbrillig removed the request for review from a team January 24, 2022 16:53
Copy link

@poligilad-auto poligilad-auto left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me 👍
WDYT @semihakocer?

Actually, one thing that bothers me, when adding new comparison points to emphasize why Google is a good solution, it seems like we are showing Professional email as a partial/not so good solution.

Copy link
Contributor

@daledupreez daledupreez left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Functionally, this is working as noted, but I do have some comments on the content.

Comment on lines 43 to 47
EmailProviderFeatures.propTypes = {
features: PropTypes.oneOfType( [ PropTypes.node, PropTypes.string ] ),
features: PropTypes.arrayOf( PropTypes.oneOfType( [ PropTypes.node, PropTypes.string ] ) )
.isRequired,
logos: PropTypes.arrayOf( PropTypes.object ),
};
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor note, but it may be worth using TS-in-JSDoc comments rather than PropTypes, especially for functional components. As an example, this could be something like:

/**
 * @param { { features: TranslateResult[], logos?: Component[] }} features should be a list of features to list, and logos should be a list of logo objects.
 */
function EmailProviderFeatures( { features, logos } ) {

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for providing an example. I think it would be better to convert this component to TypeScript but that's for another day 🙂.

client/my-sites/email/email-providers-comparison/index.jsx Outdated Show resolved Hide resolved
translate( '30GB storage' ),
translate( 'Email, calendars, and contacts' ),
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we call out that users can access their email from WordPress.com as a feature? We may need to wait for the embedded inbox to ship before we promote that feature.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can add it for now without highlighting it maybe.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would vote for waiting to avoid confusing users.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds good

@stephanethomas stephanethomas force-pushed the update/copy-in-email-comparison-pages branch from b4a4f44 to 522faa4 Compare February 2, 2022 15:06
@@ -64,7 +65,9 @@ const professionalEmailCardInformation: ProviderCardProps = {
expandButtonLabel: translate( 'Select' ),
providerKey: 'titan',
showExpandButton: true,
description: translate( 'Integrated email solution for your WordPress.com site.' ),
description: translate(
'Integrated email solution with powerful features. Manage your email and more on any device.'
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ℹ️ String reuse speeds up translation and improves consistency. The following string might make a good alternative and has already been translated 19 times:
translate( 'Easy-to-use email with incredibly powerful features. Manage your email and more on any device.' ) ES Score: 6

support: translate( '24/7 support via email' ),
tools: translate( 'Integrated email management, Inbox, Calendar and Contacts' ),
tools: translate( 'Inbox, Calendar and Contacts' ),
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ℹ️ String reuse speeds up translation and improves consistency. The following string might make a good alternative and has already been translated 18 times:
translate( 'Inbox, calendars, and contacts' ) ES Score: 11

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've removed Integrated email management as it's not a tool per see. Or maybe I don't understand what it refers to? If that means that we can manage mailboxes from Calypso then it's also the case for Google Workspace.

importing: translate( 'Easy to import your existing emails and contacts' ),
storage: translate( '30GB storage' ),
storage: translate( '30GB storage for emails and cloud storage' ),
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ℹ️ String reuse speeds up translation and improves consistency. The following string might make a good alternative and has already been translated 22 times:
translate( '30GB or unlimited cloud storage' ) ES Score: 7
See 1 additional suggestions in the PR translation status page

@@ -64,7 +66,7 @@ const getTitanFeatures = ( isMonthlyProduct = true ) => {
translate( 'Send and receive from your custom domain' ),
translate( '30GB storage' ),
translate( 'Email, calendars, and contacts' ),
translate( 'One-click import of existing emails and contacts' ),
translate( '24/7 support via email' ),
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These changes are for the old Email Comparison page that we only show in the domain upsell flow. I'm just making sure that we use the same list of features here.

if ( ! domain ) {
return <></>;
}

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This fixes an error triggered when refreshing the In-Depth Comparison page.

@stephanethomas
Copy link
Contributor Author

@daledupreez @semihakocer : I've took your feedback into account, and refined the copy again. This is still open for debate, so do not hesitate to comment 🙂. I've also made some very minor CSS tweaks.

@semihakocer
Copy link

The changes look good to me @stephanethomas! Thanks for all your work 🚢

Copy link
Contributor

@daledupreez daledupreez left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This LGTM! My only request is that we change two uses of "Include" to "Includes" before we request translation.

I also want to note that we have additional comments for the Professional Email features that we should look at in a follow-up PR, possibly after further discussion: p1643385695547649/1643101084.008900-slack-C01QR3S1QJH

client/me/purchases/manage-purchase/index.jsx Outdated Show resolved Hide resolved
client/my-sites/email/email-providers-comparison/index.jsx Outdated Show resolved Hide resolved
@stephanethomas stephanethomas force-pushed the update/copy-in-email-comparison-pages branch from 522faa4 to 8ffd43a Compare February 3, 2022 11:03
@stephanethomas stephanethomas added the [Status] String Freeze Add the [Status] String Freeze label to your PR to ensure new strings are translated before merging label Feb 3, 2022
@a8ci18n
Copy link

a8ci18n commented Feb 3, 2022

This Pull Request is now available for translation here: https://translate.wordpress.com/deliverables/7124224

Thank you @stephanethomas for including a screenshot in the description! This is really helpful for our translators.

@a8ci18n
Copy link

a8ci18n commented Feb 11, 2022

Translation for this Pull Request has now been finished.

…price component

This fixes the following error:

Uncaught TypeError: Cannot read properties of undefined (reading 'type')
    at isRegisteredDomain (registered-domains.js:13:17)
    at eval (gsuite-supported-domain.js:28:100)
    at Array.filter (<anonymous>)
    at getGSuiteSupportedDomains (gsuite-supported-domain.js:23:18)
    at hasGSuiteSupportedDomain (gsuite-supported-domain.js:45:10)
    at GoogleWorkspacePrice (google-workspace.tsx:51:127)
    at renderWithHooks (react-dom.development.js:14985:18)
    at mountIndeterminateComponent (react-dom.development.js:17811:13)
    at beginWork (react-dom.development.js:19049:16)
    at HTMLUnknownElement.callCallback (react-dom.development.js:3945:14)
@stephanethomas stephanethomas force-pushed the update/copy-in-email-comparison-pages branch from 8ffd43a to 0da85c9 Compare February 15, 2022 13:05
@stephanethomas stephanethomas merged commit 957609d into trunk Feb 15, 2022
@stephanethomas stephanethomas deleted the update/copy-in-email-comparison-pages branch February 15, 2022 13:33
@github-actions github-actions bot removed [Status] Needs Review The PR is ready for review. This also triggers e2e canary tests and wp-desktop tests automatically. [Status] String Freeze Add the [Status] String Freeze label to your PR to ensure new strings are translated before merging labels Feb 15, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
G Suite Professional Email Issues with Professional Email powered by Titan
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants