Update next steps copy from 'fix the issue(s)' to 'fix the issues.'#77915
Update next steps copy from 'fix the issue(s)' to 'fix the issues.'#77915
Conversation
🦜 Polyglot Parrot! 🦜Squawk! Looks like you added some shiny new English strings. Allow me to parrot them back to you in other tongues: The diff is too large to include in this comment (71KB), so I've created a gist for you: 📋 View the translation diff here 📋 Note You can apply these changes to your branch by copying the patch to your clipboard, then running |
|
polyglot removed some eslint errors, we'll see if that was correct... |
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppAndroid: mWeb ChromeiOS: HybridAppiOS: mWeb SafariMacOS: Chrome / Safari |
src/languages/fr.ts
Outdated
| return `En attente que <strong>vos</strong> notes de frais soient automatiquement soumises${formattedETA}.`; | ||
| return `En attente que <strong>vos</strong> notes de frais soient envoyées automatiquement${formattedETA}.`; | ||
| case CONST.NEXT_STEP.ACTOR_TYPE.OTHER_USER: | ||
| return `En attente que les dépenses de <strong>${actor}</strong> soient automatiquement soumises${formattedETA}.`; | ||
| case CONST.NEXT_STEP.ACTOR_TYPE.UNSPECIFIED_ADMIN: | ||
| return `En attente de la soumission automatique des notes de frais d’un administrateur${formattedETA}.`; | ||
| return `En attente que les dépenses d’un administrateur soient automatiquement soumises${formattedETA}.`; |
There was a problem hiding this comment.
Looks like some of the updates in international files don't correspond to an update in the en.ts file - should we exclude those?
There was a problem hiding this comment.
Yeah maybe? I don't like that it changes things every time... it also removed some eslint-ignores as you'll see from the commit history. I think that makes sense to undo those changes
@roryabraham I think you worked on the parrot, right? Is there a way to tell it to only analyze changed lines in the future? For this PR I can do it manually.
There was a problem hiding this comment.
Is there a way to tell it to only analyze changed lines in the future?
It does its best to do only incremental translations for things you changed, but the way it works is it finds the keys you changed and retranslates those. In this PR, the values for the keys changed are kind of complex functions, with dangling strings in function returns (such as in the switch statements) needing to be translating.
When we're rebuilding the target file (such as fr.ts), we need a way to reference what was in the existing file (before the translation) in order to grab the existing translation and reuse it. There's no trivial way to take a random string from inside a function in en.ts and look up that exact same translated return statement from a switch statement in the existing translation file to see what it was before. So the best we can do is to find the key path in the object that was modified.
There was a problem hiding this comment.
it also removed some eslint-ignores
This sounds like a bug, but honestly maybe we shouldn't bother linting the generated translation files. As long as they're passing typecheck we should be good.
There was a problem hiding this comment.
Alternatively I could try to update the script to correctly copy comments over from en.ts to the target files. Currently it doesn't do that, but maybe it should...
There was a problem hiding this comment.
maybe we shouldn't bother linting the generated translation files
Fwiw I agree with this!
There was a problem hiding this comment.
Yeah I think the no linting solution makes sense if we're never touching it. Probably safer than having the LLM attempt to replicate comments? Though if we could do it programmatically that could work too.
And makes sense about the key paths! Is it worth considering adjusting paths like these ones with switches/more complex logic to be a bit simpler for the translation, or would it not be worth it? Not sure if we have specific best practices in this case
There was a problem hiding this comment.
Yeah, generally we should treat anything that's not a plain, dumb string in en.ts as a code smell. Some best practices are called out explicitly in https://github.com/Expensify/App/blob/1078c1f1bd5f6dec992ad22aa3038c179f394b96/contributingGuides/philosophies/INTERNATIONALIZATION.md, but not "avoid functions with multiple returns", which should be a best practice
Codecov Report✅ All modified and coverable lines are covered by tests. |
JmillsExpensify
left a comment
There was a problem hiding this comment.
Product review isn't strictly required, though good with the copy change!
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🚀 Deployed to staging by https://github.com/amyevans in version: 9.2.86-0 🚀
|
|
🚀 Deployed to production by https://github.com/marcaaron in version: 9.2.86-4 🚀
|
cc @jamesdeanexpensify
Explanation of Change
App version of https://github.com/Expensify/Web-Expensify/pull/49860
Fixed Issues
$
PROPOSAL:
Tests
N/A, copy change
Offline tests
QA Steps
No QA needed, copy change. NOTE: Please do not report a flash of copy between
issuesandissue(s), this will be resolved shortly with https://github.com/Expensify/Web-Expensify/pull/49860PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectioncanBeMissingparam foruseOnyxtoggleReportand notonIconClick)src/languages/*files and using the translation methodSTYLE.md) were followedAvatar, I verified the components usingAvatarare working as expected)StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))npm run compress-svg)Avataris modified, I verified thatAvataris working as expected in all cases)Designlabel and/or tagged@Expensify/designso the design team can review the changes.ScrollViewcomponent to make it scrollable when more elements are added to the page.mainbranch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTeststeps.Screenshots/Videos
Android: Native
Android: mWeb Chrome
iOS: Native
iOS: mWeb Safari
MacOS: Chrome / Safari