-
-
Notifications
You must be signed in to change notification settings - Fork 762
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
feat: Disable FS backend when user provides one #930
Conversation
Tried this modification on my app, it works really well. |
Your comment, doesn't it mean you gotta have |
Outside, |
I will rebase this with the branch with the new changes @isaachinman just merged |
Sounds good, thanks! |
src/createClient/node.ts
Outdated
@@ -8,7 +8,9 @@ export default (config: InternalConfig): CreateClientReturn => { | |||
let initPromise: InitPromise | |||
|
|||
if (!instance.isInitialized) { | |||
instance.use(i18nextFSBackend) | |||
const hasCustomBackend = config?.use?.some((b) => b.type === 'backend') | |||
if (!hasCustomBackend) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's use curly braces here, please.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sure thing!
types.d.ts
Outdated
@@ -23,6 +23,7 @@ export type UserConfig = { | |||
use?: any[] | |||
} & InitOptions | |||
|
|||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Shouldn't be necessary.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
My bad, removed
* Core changes to support NextJs v10 * Add default config file reading functionality * Reimplement hoistNonReactStatics * Update dependencies * Strip out tests and unnecessary dependencies * Fix linting setup * Upgrade core dependencies * Migrate config options to mirror NextJs * v8.0.0-beta.0 * Remove deprecated config options and types * Update example lockfile * Remove need for locales and defaultLocale entirely * Update example to use hooks * Add documentation * v8.0.0-beta.1 * Add NodeJs v14 to CircleCI * Create serverSideTranslations.d.ts * v8.0.0-beta.2 * fix: TS issues for v8-beta (#922) * fix: export appWithTranslation type also changed AppWithTranslation type: param is a React Component, not a React Component instance * chore: remove unused NextI18Next exports * fix: run-example prod script by adding the build step before it * v8.0.0-beta.3 * fix: Remove server side code from client bundle (#926) * Remove static dir entirely * v8.0.0-beta.4 * feat: Add an ESM entry point to allow better bundle optimizations (#937) * Add an ESM entry point to allow better tree-shaking & module concatenation * Include ie11 * fix: added Trans to TS definition v8-beta (#951) * added Trans to types * fix: removed unused typess * refactor: Use serialize-javascript (#954) * refactor: Use NextJs i18n config API (#955) * test: Add tests for config and consoleMessage (#956) * test: Add coverage for createClient (#957) * refactor: Update eslint config (#958) * refactor: Update eslint config * Fix lint * test: Add e2e coverage via Cypress (#959) * feat: Disable FS backend when user provides one (#930) * feat: Disable FS backend when user provides one * fixup! feat: Disable FS backend when user provides one * fixup! feat: Disable FS backend when user provides one * fixup! feat: Disable FS backend when user provides one * test: Add test coverage to appWithTranslation and serverSideTranslations (#960) * docs: Update README (#961) * v8.0.0-beta.5 * docs: Update README (#962) * v8.0.0-beta.6 * chore: Update example lockfile (#964) * chore: Update example lockfile * Update package.json * fix: Deep merge options.backend, closes #848 (#849) * fix: Make create-config defaultFile use localeStructure (#966) use @cescoallegrini modifications from #934 * Update README.md Co-authored-by: Léonard Drouillas <leonard.drouillas@gmail.com> * chore: Lint examples dir (#969) * fix: Add server side loading of fallbackLng (#970) * refactor: Remove i18next-http-backend (#971) * refactor: Remove i18next-http-backend * Update config.yml * Update basic.e2e.ts * refactor: Add react-i18next useSuspense (#973) * docs: Update README (#975) * refactor: Add typeof window check to createConfig (#976) * refactor: Remove serialize-javascript and add configOverride to appWithTranslation (#972) * refactor: Remove serialize-javascript and add configOverride to appWithTranslation * Add serializeConfig option * Add docs * Update README.md * docs: Update README (#977) * Update peerDependencies and version Co-authored-by: Francesco Moro <franzmoro@users.noreply.github.com> Co-authored-by: Felix Mosheev <9304194+felixmosh@users.noreply.github.com> Co-authored-by: Tobias Koller <34249734+TKone7@users.noreply.github.com> Co-authored-by: Filipe Medeiros <filipesilvamedeiros@gmail.com> Co-authored-by: Léonard Drouillas <leonard.drouillas@gmail.com>
One thing to note is that it seemed necessary to make the changes to the way we handle the passing of the config to the client.
Next cannot serialize stuff like functions, so we cannot return everything and assume it's serializable, especially the
use
array and thebackend
prop (with the props inside).The way this was done now requires the user to pass the same config to
appWithTranslation
that they pass toserverSideTranslations
. This is kind of repetitive and limiting (same client side config for the whole app). We could allow the user the to pass a function that decides what config to use based on the current page, but that seems troublesome.Let me know what you think!