Open fetis opened 4 years ago
@fetis I think you can achieve that by using an APP_INITIALIZER Token. Here is the article where Netanel nicely describes implementation. link
I think one option would be to use ng build --watch --localize
and then run your own local server in the dist
folder. The build will generate folders for each locale, and will run whenever you change anything (similar to ng serve
) and you should be able to jump between locales by changing the URL.
@vugar005 it's about how to load data before the app load, but my problem is different -- it's how to provide data for translations
@petebacondarwin this can be taken as a temporary workaround, but it doubles the build time after every change for my project and makes ng serve
useless. Do you have any plans to bring translations merging back in JIT mode? This would be very handy for development.
I am going to transfer this over to the CLI project because changes to ng serve
will primarily be handled there.
We're starting to look into dynamic i18n to be able to change locales at runtime. It's still in the early stages and isn't highly prioritized at the moment.
As an alternative, www.locl.app provides a library can includes this functionality. That can act as a workaround while we evaluate more official support in Angular.
@dgp1130 do you want to say that I can use locl.app on top of built-in i18n for development mode only?
@fetis, I haven't used locl
myself, but I'm sure there's a way to apply it to dev builds only if that's what you want.
Hi :) Have you found a solution?
🐞 bug report
Affected Package
@angular/localize
Is this a regression?
Yes, it's a regression from v8
Description
In v8 was a very handy solution to load your translation data for development. It's described on this documentation page https://v8.angular.io/guide/i18n#merge-with-the-jit-compiler
With the migration to v9 there's no corresponding solution that will allow to quickly switch locales during runtime for development. As far as I understand, the suggested replacement is to run
ng serve
with the desired locale every time.A little bit background here. We have 2 applications, every with 4 languages. For production, we build it with AOT as suggested. For development we use JIT and load corresponding translation depending on the browser URL (German for
/de/
for example), this mimics prod behavior. So, to switch translation and check how the interface looks in a different language, you just need to pick up another item in the language menu. The page reloads at the same URL but with a different language. Starting from v9 it's not supported, so we would have to runng serve
every time for a new language and start from the home page for every language again.What would be a suggested way repeat v8 behavior? I checked
loadTranslatios
but it accepts a key-value object, not a XLIFF data. Is any function that can transform from XLIFF to a format understandable forloadTranslations
🌍 Your Environment
Angular Version: