Open jrwats opened 3 years ago
Use case (locale selector): https://github.com/facebook/fbt/discussions/190#discussion-1640104
Hey , can i work over this issue ?
Of course! We're not actively working on it internally.
Hey, Can you direct me to the file I need to contribute ?
NOTE: our babel-plugin-fbt
plugin is currently undergoing a massive refactor to finally address https://github.com/facebook/fbt/issues/35. So what's checked into Github differs greatly from v0.20.0. There's a lot of undocumented changes currently checked into the repo, so if you want to tackle this soon, you may want to check in with @kayhadrin and @pkqinys if you have any questions or whether there's risk for merge conflicts.
Here's where we currently process options. That locale
attribute will appear similar to author
or project
.
https://github.com/facebook/fbt/blob/743e2e55ee6103b781938f1b72925a0f2304394a/packages/babel-plugin-fbt/src/babel-processors/FbtFunctionCallProcessor.js#L433-L456
You'll need to add it to the "allowed" list of options https://github.com/facebook/fbt/blob/743e2e55ee6103b781938f1b72925a0f2304394a/packages/babel-plugin-fbt/src/FbtConstants.js#L23-L33
After that we need to decide on how we want this manifested at runtime. It can be a "reserved key" in the payload itself
similar to the __vcg
https://github.com/facebook/fbt/blob/743e2e55ee6103b781938f1b72925a0f2304394a/runtime/shared/fbt.js#L136
but, I think cleanest would be to add it to the options
runtime parameter
https://github.com/facebook/fbt/blob/743e2e55ee6103b781938f1b72925a0f2304394a/runtime/shared/fbt.js#L96
Following that, you'll want to process that option to change the lookup of the translations. This should be pretty straightforward. Update the signature here to take an optional locale
parameter and only read from the IntlViewerContext
if it's nullish.
https://github.com/facebook/fbt/blob/76debd6aa2c7076a2018ba7ab20a8caa5e9e5ebb/runtime/nonfb/FbtTranslations.js#L29
A potentially nice feature to add to the runtime and Babel parser would be to enable a
locale
override at the callsite.is a lot easier to reason about than updating
genTranslatedInput
to do what you want.Originally posted by @jrwats in https://github.com/facebook/fbt/discussions/190#discussioncomment-514257