Support different domains config at runtime
Environment
- Operating System: Linux
- Node Version: v18.14.2
- Nuxt Version: 3.8.2
- CLI Version: 3.10.0
- Nitro Version: 2.8.1
- Package Manager: [email protected]
- Builder: -
- User Config: devtools, modules, pages, runtimeConfig, i18n
- Runtime Modules: @nuxtjs/[email protected]
- Build Modules: -
Reproduction
The code https://stackblitz.com/edit/nuxt-starter-lm7gng
And a minimal Apache configuration
<VirtualHost *:443>
ServerName fr.localhost
ServerAlias fr.localhost2
ServerAlias en.localhost
ServerAlias es.localhost
SSLEngine on
SSLCertificateFile /etc/ssl/certs/localhost.crt
SSLCertificateKeyFile /etc/ssl/certs/localhost.key
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
</VirtualHost>
Describe the bug
I'm encountering an issue with the Nuxt i18n module where its behavior differs between the development and production environments, specifically after a single build process.
Development Environment:
- The module functions as expected, aligning with the values set in the
.envfile.
Production Environment:
-
After building the project, I observed two different behaviors based on how the application is started:
-
First Start (
npm run start):- The application behaves as expected. The default domain value from the build process is utilized.
Accessing https://fr.localhost/, the following is displayed:{ code: "fr", domain: process.env.NUXT_PUBLIC_I18N_LOCALES_FR_DOMAIN || "fr.localhost", file: "fr-FR.json", }- Index Page
- "Bienvenue"
- Locale: fr
- Site name: My Site Name
- The application behaves as expected. The default domain value from the build process is utilized.
-
Second Start (
npm run start:2):- When accessed via https://fr.localhost2/, the results are inconsistent:
- Index Page
- "Welcome"
- Locale: en (unexpectedly switches to the default locale)
- Site name: My Site Name 2
In this case, while the
NUXT_PUBLIC_SITE_NAMEvariable is correctly recognized at runtime, theNUXT_PUBLIC_I18N_LOCALES_FR_DOMAINvariable is not, and the application defaults to the default locale. - When accessed via https://fr.localhost2/, the results are inconsistent:
-
I suspect there might be an issue with how the i18n module handles domain values in production, particularly after the initial build. Any insights or suggestions on resolving this discrepancy would be greatly appreciated.
Additional context
No response
Logs
No response
Hi all, Agree with @bcadu, hosting on different domains using process.env variables doesn't work. By adding domains in runtimeConfig, it seems that NuxtLinks are well updated but hosting directly on the runtimeConfig domain does not work. https://github.com/nuxt-modules/i18n/blob/main/specs/different_domains.spec.ts#L121 => Serving on "kr.staging.nuxt-app.localhost" does not work. Thanks :)
I coded the fix + tests but I'm unable to push my branch to the repository. @rchl do I need any permissions for this?
Hi @existe-deja, We're also waiting for a patch for this feature, which we absolutely need. Would it be possible to get yours? Thanks
Hi All, Agree with @melaniehuet , I'm also trying to host on different domain for me the env variables are recognized as domain names but I still get language prefixes for all other languages than the default one. I have also tried to use 'no_prefix' strategy but that one is buggy when it is together with differentDomains: true, so it cannot be used. Looking forward for the patch, thank you in advance
Hello, We're also looking forward to this feature working as intended :) We look forward to the patch. Thanks
Any update on this?
I coded the fix + tests but I'm unable to push my branch to the repository. @rchl do I need any permissions for this?
You probably need to fork the project, and submit a PR after adding your fix. Can I see your fix anywhere?
any update or maybe workaround?
none that I'm aware of.. still waiting for these domains issues to be resolved
fyi: NUXT_PUBLIC_I18N_BASE_URL not works in runtime too
Any update or workaround for this issue?
I didn't manage to update my fix on time. Now there is a v9 version so it needs to be tested and fixed if it's still broken