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

Use LanguagePicker in Calypso #46328

Closed
wants to merge 19 commits into from
Closed

Conversation

sarayourfriend
Copy link
Contributor

@sarayourfriend sarayourfriend commented Oct 9, 2020

Changes proposed in this Pull Request

Testing instructions

  • Verify that /new?flags=gutenboarding/language-picker (click the language picker in the upper right-hand corner), /me/account and /settings/general/:site's language pickers match the spec from @olaolusoga and @ollierozdarz here: p9oQ9f-kT-p2
  • Verify that search works as expected (it should filter exactly the same as the previous search implementation)
  • Verify that selecting a new language and saving works
  • Verify that selecting a new language and dismissing the modal without apply changes does not save the new language selection

@matticbot
Copy link
Contributor

{ shouldDisplayRegions ? (
<>
<div className="language-picker__regions-label">{ __( 'regions' ) }</div>
<div className="language-picker__languages-label">{ __( 'language' ) }</div>
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 17 times:
translate( 'Language', { context: 'logged-out-homepage'} ) ES Score: 8
See 2 additional suggestions in the PR translation status page

<div className="language-picker__languages-label">{ __( 'language' ) }</div>
</>
) : (
<div className="language-picker__search-results-label">{ __( 'search result' ) }</div>
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 67 times:
translate( 'Search results' ) ES Score: 6
See 2 additional suggestions in the PR translation status page

@matticbot
Copy link
Contributor

matticbot commented Oct 9, 2020

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

Webpack Runtime (~244 bytes removed 📉 [gzipped])

name      parsed_size           gzip_size
manifest       -812 B  (-1.1%)     -244 B  (-1.6%)

Webpack runtime for loading modules. It is included in the HTML page as an inline script. Is downloaded and parsed every time the app is loaded.

App Entrypoints (~27099 bytes added 📈 [gzipped])

name                   parsed_size           gzip_size
entry-gutenboarding       +81815 B  (+4.5%)   +27330 B  (+5.7%)
entry-main                 -2488 B  (-0.2%)     -113 B  (-0.0%)
entry-login                 -389 B  (-0.0%)      -58 B  (-0.0%)
entry-domains-landing       -389 B  (-0.1%)      -60 B  (-0.0%)

Common code that is always downloaded and parsed every time the app is loaded, no matter which route is used.

Sections (~152483 bytes added 📈 [gzipped])

name                  parsed_size            gzip_size
account                 +182304 B  (+48.3%)   +56037 B  (+54.5%)
woocommerce             +181029 B   (+8.3%)   +53585 B   (+9.2%)
settings                +180611 B  (+35.3%)   +51792 B  (+37.5%)
jetpack-connect           +1329 B   (+0.1%)     -100 B   (-0.0%)
accept-invite             +1217 B   (+0.2%)     +237 B   (+0.2%)
signup                    +1185 B   (+0.2%)     +209 B   (+0.2%)
devdocs                    +451 B   (+0.2%)      -87 B   (-0.2%)
earn                       -242 B   (-0.1%)     -762 B   (-0.9%)
backup                     -235 B   (-0.0%)    -1276 B   (-1.1%)
settings-writing           -229 B   (-0.0%)     -778 B   (-0.5%)
email                      -193 B   (-0.1%)    -1470 B   (-1.6%)
settings-security          -186 B   (-0.1%)     -624 B   (-0.7%)
settings-performance       -186 B   (-0.0%)     -580 B   (-0.5%)
settings-discussion        -186 B   (-0.1%)     -667 B   (-1.0%)
wp-super-cache             -170 B   (-0.1%)     -799 B   (-1.2%)
settings-jetpack           -170 B   (-0.1%)     -921 B   (-1.4%)
reader                     -152 B   (-0.0%)     -213 B   (-0.1%)
scan                       -130 B   (-0.0%)     -578 B   (-0.6%)
plugins                    -112 B   (-0.0%)      -40 B   (-0.0%)
marketing                  -109 B   (-0.0%)      +45 B   (+0.0%)
posts-custom                -91 B   (-0.0%)      +35 B   (+0.0%)
posts                       -91 B   (-0.0%)      +13 B   (+0.0%)
domains                     -86 B   (-0.0%)     +570 B   (+0.2%)
themes                      -82 B   (-0.0%)    -1082 B   (-1.0%)
theme                       -82 B   (-0.0%)    -1090 B   (-1.3%)
concierge                   +75 B   (+0.0%)     +798 B   (+1.0%)
gutenberg-editor            -57 B   (-0.0%)     -447 B   (-0.3%)
site-purchases              -39 B   (-0.0%)     +507 B   (+0.2%)
checkout                    -39 B   (-0.0%)      -32 B   (-0.0%)
purchases                   -30 B   (-0.0%)     +198 B   (+0.1%)
pages                       -25 B   (-0.0%)      -10 B   (-0.0%)
media                       -18 B   (-0.0%)      +13 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.

Async-loaded Components (~194138 bytes added 📈 [gzipped])

name                                                 parsed_size             gzip_size
async-load-design-playground                           +180769 B   (+10.4%)   +53026 B   (+13.4%)
async-load-design                                      +180552 B    (+9.7%)   +53471 B   (+12.6%)
async-load-quick-language-switcher                     +152227 B  (+232.3%)   +48022 B  (+242.8%)
async-load-design-blocks                               +112870 B    (+3.9%)   +38112 B    (+5.7%)
async-load-calypso-blocks-editor-launch-modal            +1217 B    (+0.7%)     +253 B    (+0.6%)
async-load-design-wordpress-components-gallery            +340 B    (+0.0%)     +937 B    (+0.4%)
async-load-calypso-components-web-preview-component       -322 B    (-0.1%)    -1040 B    (-0.7%)
async-load-signup-steps-clone-point                       +103 B    (+0.1%)    +1108 B    (+3.1%)
async-load-signup-steps-domains                            -55 B    (-0.0%)      -14 B    (-0.0%)
async-load-calypso-blocks-editor-checkout-modal            -39 B    (-0.0%)     +263 B    (+0.1%)

React components that are loaded lazily, when a certain part of UI is displayed for the first time.

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.

{ shouldDisplayRegions ? (
<>
<div className="language-picker-component__regions-label">{ __( 'regions' ) }</div>
<div className="language-picker-component__languages-label">{ __( 'language' ) }</div>
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 17 times:
translate( 'Language', { context: 'logged-out-homepage'} ) ES Score: 8
See 2 additional suggestions in the PR translation status page

@sarayourfriend sarayourfriend marked this pull request as ready for review October 29, 2020 22:09
{ shouldDisplayRegions ? (
<>
<div className="language-picker-component__regions-label">{ __( 'regions' ) }</div>
<div className="language-picker-component__languages-label">{ __( 'languages' ) }</div>
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 48 times:
translate( 'Languages', { context: 'Help topic'} ) ES Score: 10

@sarayourfriend sarayourfriend requested review from tyxla and a team October 29, 2020 22:14
@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 Oct 29, 2020
@sarayourfriend sarayourfriend requested a review from a team October 29, 2020 22:14
};

const LanguagePickerModal = ( {
languages,
Copy link
Member

Choose a reason for hiding this comment

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

Hi!

Was there any reason not to fetch the localized languages from the /i18n/language-names endpoint (to enable localized searching)?

Granted, there is a bit of data mashing to get the filtered results, but we're removing a feature so I just wanted to make sure it's intentional.

We're using a query component for that at the moment <QueryLanguageNames /> in the deleted modal picker file.

Also asked here p9oQ9f-kT-p2#comment-548

Thanks!

cc @Automattic/i18n

Copy link
Contributor Author

@sarayourfriend sarayourfriend Oct 30, 2020

Choose a reason for hiding this comment

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

@ramonjd Do you have any pointers on how to do this from within Gutenboarding? We just need to get the response and the LanguagePicker component can already handle the result. I can see how to retrieve it in Calypso just using the existing query component, but that doesn't seem like it will work in Gutenboarding. I'm not at all familiar with how the data stores and all that stuff works.

Scratch that: You can see from my latest pushes that I've been able to retrieve the localized language names. However, they don't come back for the correct locale and I'm unsure how to fix this, I'm wondering if you could help with that instead?

Also, I accomplished this by adding a new i18n store to data-stores. I'm not sure if this is the right way to go so open to suggestions for other places to put that new store.

Copy link
Member

Choose a reason for hiding this comment

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

they don't come back for the correct locale

The endpoint doesn't check the user's default locale (assuming a user is logged in), but relies on the _locale query parameter.

https://public-api.wordpress.com/wpcom/v2/i18n/language-names?_locale=es

Otherwise the "localized" names will be in English.

So, I guess we'd have to pass the current locale to the selector (and indirectly to the resolver).

Normally, the locale will be stored in the URL fragment, e.g., /new/es, or /new/language-modal/de

I see that getLocale exists to check the URL for the existence of a valid locale.

You can test with the Language picker enabled by adding the following flag: /new/?flags=gutenboarding/language-picker

Having said all this, one of our tasks for i18n Gutenboarding was to enable the language picker, so if you get the data-store/i18n selector/resolver/apiFetch accepting a locale then we could look at passing the right one from Gutenboarding later if you run out of time.

adding a new i18n store to data-stores

👍 That's what I was going to suggest - nice work. It's where most of the state-related stuff for Gutenboarding lives. I'll still ping @razvanpapadopol and @yansern, who know the Gutenboarding architecture back to front to make sure. :)

Copy link
Member

Choose a reason for hiding this comment

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

The _locale query parameter should be added automatically to every REST request, based on what's currently in Redux state.ui.language. There is a dedicated wpcom interceptor handler for that. For the older WP.COM endpoints (as opposed to the newer WP REST ones), the parameter name is locale, without the _.

Gutenberg's apiFetch code has a similar handler that, however, always adds _locale=user, telling the server to use the logged-in user's locale rather than default en. In logged-out mode, however, this does nothing.

The Core REST code seems to not support anything other than user: https://github.com/WordPress/WordPress/blob/master/wp-includes/l10n.php#L143-L145 But an endpoint like i18n/language-names can check the _locale param on its own.

Normally, the locale will be stored in the URL fragment, e.g., /new/es, or /new/language-modal/de

In most cases, the locale is determined from the current logged in user. But the locale from URL should make its way to the Redux and i18n-calypso, too. The Signup and Login handlers that use these locale suffixes should have code for that.

Hopefully the above will be helpful when debugging the _locale param. Calypso code should always add it, and Gutenberg code will probably need to add it explicitly.

return (
<Dialog
isVisible
onClose={ onClose }
Copy link
Member

Choose a reason for hiding this comment

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

We're also removing an existing tracking event.

Copy link
Contributor Author

@sarayourfriend sarayourfriend Oct 30, 2020

Choose a reason for hiding this comment

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

This event was added to track whether search was being used to make a decision about whether to keep search. We decided to keep search independent of the event so I think the event can be safely removed now.

@ramonjd
Copy link
Member

ramonjd commented Oct 30, 2020

It's looking really nice! ❤️

I just have a few questions about dissimilarities between this and the current search functionality.

I'll leave the design 👀 to @Automattic/dotcom-create-design

  • Verify that search works as expected (it should filter exactly the same as the previous search implementation) ⚠️ I can no longer search for languages using my current locale (or in English) and we seem to no longer be making a tracking call (calypso_languagepicker_closed).
  • Verify that selecting a new language and saving works ✅
  • Verify that selecting a new language and dismissing the modal without apply changes does not save the new language selection ✅

There are also a few missing translations, but I expect that they're new.

Screen Shot 2020-10-30 at 12 30 47 pm

@sarayourfriend
Copy link
Contributor Author

This PR is also missing the empathy mode checkbox as well as the percent translated information. This is missing from the designs so I'm not sure where to put it. I've pinged design here p9oQ9f-kT-p2#comment-552

Copy link
Member

@tyxla tyxla left a comment

Choose a reason for hiding this comment

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

Thanks for getting this running, it's exciting to see it working!

I'd say this is great work overall! I've left some comments and questions for things I've found while testing.

Furthermore, I'd love it if on top of @Automattic/ganon, @Automattic/i18n could also take a look. I remember @yuliyan has been spending some time with the language picker.

languages={ languages }
onClose={ this.handleClose }
onSelected={ this.selectLanguage }
Copy link
Member

Choose a reason for hiding this comment

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

So selectedLanguage won't be necessary anymore and can be removed?

languages={ languages }
onClose={ this.handleClose }
onSelected={ this.selectLanguage }
Copy link
Member

Choose a reason for hiding this comment

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

Related to no longer using this.selectedLanguage here, is it concerning we remove the support for empathyMode and useFallbackForIncompleteLanguages that were also set here previously?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

We'll want to re-incorporate those two checkboxes, I've pinged design (link above) to get information about how to handle those things.

Copy link
Member

Choose a reason for hiding this comment

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

Sounds good, looking forward to what comes out from that conversation.

<div className="language-picker-component__language-buttons">
{ getFilteredLanguages().map( ( language ) => (
{ languagesToRender.map( ( language ) => (
Copy link
Member

Choose a reason for hiding this comment

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

I seem to have visual glitches here, where the regions on the left push the languages further, and that causes a misalignment with the headings:

/>
</div>
<div className="language-picker-component__search-desktop">
<Search
Copy link
Member

Choose a reason for hiding this comment

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

FWIW when searching for a language and pressing "enter / return", a form seems to get submitted in the background (props @yuliyan for noticing that)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Oh good catch, I forgot to stopPropagation on the form event.

<FlexBlock className="language-picker-component__heading">
<Flex justify="space-between" align="left">
<FlexItem className="language-picker-component__title wp-brand-font">
{ headingTitle || __( 'Select a language', __i18n_text_domain__ ) }
Copy link
Member

Choose a reason for hiding this comment

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

In some instances we use a textdomain, and in some we don't. What is the rationale behind that?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

It should be being used for all instances. Places that aren't are a mistake I believe (except for createLanguageGroups where the passed in __ will have a text domain configured I believe... perhaps that is incorrect?).

Copy link
Member

Choose a reason for hiding this comment

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

It should be being used for all instances.
Gotcha. That's aligned to pbAok1-1Ao-p2 so we should be good.

createLanguageGroups where the passed in __ will have a text domain configured I believe

I think that's not the case, it doesn't have the textdomain configured, but it doesn't need to have a textdomain, because where we pass __ is used only in Calypso context, where we don't need to specify a textdomain. If the package is used externally, then we can just pass a bound __() that specifies a textdomain, which isn't ideal, but will do the job.

Copy link
Contributor Author

@sarayourfriend sarayourfriend Nov 3, 2020

Choose a reason for hiding this comment

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

Hmmm... In that case, we might as well pass __i18n_text_domain__ in createLanguageGroups right? The signature should allow us to regardless and it doesn't cost anything right?

Copy link
Member

Choose a reason for hiding this comment

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

we might as well pass __i18n_text_domain__ in createLanguageGroups

I'm assuming yes, but I'm not 100% sure what you mean, could you please demonstrate it with an example?

onChange={ ( { selectedItem } ) => selectedItem && setFilter( selectedItem.key ) }
/>
<div className="language-picker-component__search-mobile">
<Search
Copy link
Member

Choose a reason for hiding this comment

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

There is an odd popping when opening the search on mobile; you can see that the "Select a Language" title moves for a little before returning to its place. I haven't investigated what it is, but it seems like the search bar gets too wide for a second when opening.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@tyxla Do you mind recording your screen with this happening? I can't reproduce it at the moment.

Copy link
Member

Choose a reason for hiding this comment

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

Would love to do that, but for some reason I'm getting an error when trying to build with the latest branch:

@automattic/data-stores: src/auth/actions.ts(4,24): error TS7016: Could not find a declaration file for module '@wordpress/data-controls'

Are you able to reproduce that?

Copy link
Contributor Author

@sarayourfriend sarayourfriend Nov 4, 2020

Choose a reason for hiding this comment

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

It looks like the CI is failing on this as well. I can't reproduce it locally but I'll rebase against master and see if that changes anything.

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 should be fixed now that search is only 240px wide on desktop. Let me know if you can still reproduce it @tyxla, thanks! 🚀

Copy link
Member

Choose a reason for hiding this comment

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

Can't reproduce anymore, I think it's working well now. The only nit I have here is that while the search is opening, there's a scroll appearing. It disappears once the search box ends in its place. Is this something we can easily prevent?

@yuliyan yuliyan self-requested a review November 2, 2020 18:15
@sarayourfriend sarayourfriend force-pushed the add/use-lp-in-calypso branch 3 times, most recently from 464a217 to 6b715ab Compare November 4, 2020 21:21
@ramonjd ramonjd mentioned this pull request Nov 5, 2020
46 tasks
@sarayourfriend
Copy link
Contributor Author

@scinos Do you mind taking a look at the test failure? I believe it may have something to do with recent changes to module resolution in tests. The module works fine when running the app but fails to resolve the language picker when running tests.

@scinos
Copy link
Contributor

scinos commented Nov 6, 2020

I think the unit test are failing because the changes in #47002 .

After that change we don't produce dist/cjs by default anymore so pkg.main points to a missing file. And because Jest resolver only uses pkg.main or pkg["calypso:src"], it is not able to resolve the package.

A potential solution would be to change ./test/module-resolver.js to use pkg.module when the module comes from packages/*

/cc @saramarcondes @jsnajdr

@jsnajdr
Copy link
Member

jsnajdr commented Nov 6, 2020

Yes, the unit tests are failing because the Jest resolver wants to use the dist/cjs files 🙁 I tried to fix this with returning the module value in the module-resolver, as @scinos suggests, but then something else broke: files in node_modules are not transformed by Babel, and then Jest/Node don't understand the import/export syntax. Trying to fix transformIgnorePatterns didn't work for some reason.

Debugging @jest/transform by inserting console.log statements also failed me, because the package is duplicated several times in the node_modules tree and I was unable to find the right one to patch 🤦

As this is a too deep rabbit hole that I'm not willing to descend into right now, I simply partially reverted #47002 in d62a0fc and enabled build:cjs in the prepare tasks.

We should try to remove the build:cjs step again, this time making sure Jest is happy. But let's just unblock this PR quickly for now.

@scinos
Copy link
Contributor

scinos commented Nov 6, 2020

@jsnajdr I didn't know you were working on it. I tried to fix it by changing the resolver (and limiting it to only packages from ./packages) and seems to be working: #47180

@sarayourfriend
Copy link
Contributor Author

@ollierozdarz Hi there! Do you mind giving this PR a spin for a design review? It can be accessed here: https://calypso.live/?branch=add/use-lp-in-calypso

Please follow the instructions in the PR description for how to access the relevant areas 🙂

@@ -19321,6 +19278,11 @@ lodash@*, lodash@^4.0.0, lodash@^4.1.1, lodash@^4.13.1, lodash@^4.15.0, lodash@^
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==

[email protected], lodash@^4.16.4, lodash@^4.17.20:
Copy link
Contributor

Choose a reason for hiding this comment

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

Looks like we can dedupe this one with the previous lodash?

Copy link
Member

@yuliyan yuliyan left a comment

Choose a reason for hiding this comment

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

It looks very nice and seems to be working well!

I noticed one small glitch with the layout shifting during the search expansion transition. Tested in Chrome:
CleanShot 2020-11-18 at 16 47 36
(Transitions at 10% speed, it's less noticeable at 1x)

@sarayourfriend
Copy link
Contributor Author

@yuliyan Thank you for the bug report! I can't reproduce it in Firefox but indeed see it happening in Chrome. Good catch! I wonder if this is what @tyxla was talking about happening?

@sarayourfriend
Copy link
Contributor Author

@yuliyan Fix is up! Thanks again!

@yuliyan
Copy link
Member

yuliyan commented Nov 18, 2020

@yuliyan Thank you for the bug report! I can't reproduce it in Firefox but indeed see it happening in Chrome.

@saramarcondes, I tested in Firefox, and it seems like it has the same bug but it's less noticeable. From what I see, the container that holds the search bar overflows horizontally in both browsers, but the difference between Chrome and Firefox is that, Firefox keeps the scroll position of the container to the left and Chrome scrolls right to keep the overflown elements in view.

Edit: Just saw the fix, looks good 👍

@ollierozdarz
Copy link

Hi @saramarcondes, I think this meets the functionally we have been chatting about. Good job. If it's not too late, I'd probably suggest putting a Grey border around the search input in it's unselected state for the desktop view, as I worry it's easy to miss.

Example:
Screen Shot 2020-11-19 at 10 12 52 am

Copy link
Member

@tyxla tyxla left a comment

Choose a reason for hiding this comment

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

Thanks for your continuous great work on this one, @saramarcondes!

One thing that I noticed was that on mobile (480px), things looked misaligned a little bit:

Perhaps that impression is caused by several facts:

  • The search button is a bit too wide, and it's not aligned to the right.
  • The cancel button is not left aligned with anything because of the inner button padding
  • Title seems to be more indented than the select box and the list below.

That's just my personal opinion, though, and it might be best to consult with a designer on this one.

Also, I've started reviewing the entirety of this PR today, but I'm afraid it's grown beyond the point where it should be a single PR already. Reviewing such high-impact PRs can be really difficult, and I personally can't be confident that I'm not missing a bunch of stuff when reviewing and testing it. Have you considered splitting it into multiple PRs? One way we could split it to multiple PRs could be:

  • Introducing i18n functionality to the data-stores package
  • Changes to the language-picker package
  • Changes to the search package
  • Updating language picker in Gutenboading
  • Updating language picker in Calypso language picker component

Sorry for proposing this so late, but I'm starting to feel that I can miss something while reviewing, and I'm not reviewing it thoroughly and with the usual quality.

What do you think @saramarcondes?

@yuliyan
Copy link
Member

yuliyan commented Nov 19, 2020

I agree with @tyxla that splitting the PR could improve the review process. For me personally, there are changes in some packages and areas of the code that I'm unfamiliar with, and if those were separated it would've been easier to only get involved in PRs where I can provide more valuable input.

However, given that the PR is already in late stage, I'm not sure how much effort would it take to split it and if would be worth it. I don't want to influence your decision in any way, just sharing my thoughts.

@sarayourfriend
Copy link
Contributor Author

@yuliyan and @tyxla re: splitting the PR.

I agree with both of y'all. I'm a little wary as it will extend an already long process but that should be okay, there's no real rush for this work.

@sarayourfriend sarayourfriend changed the base branch from master to trunk November 20, 2020 16:11
@matticbot matticbot removed the [Status] Needs Review The PR is ready for review. This also triggers e2e canary tests and wp-desktop tests automatically. label Dec 22, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants