Closed

Description
With angular's i18n
working quite good now, I wanted to start a general discussion about how the angular-cli
will be supposed to work with it.
According to this statement on StackOverflow from @Brocco, angular-cli
will eventually make use of AOT compilation. This means, that ngc
will be used, which in turn will respect xlf
files for translations. For JIT builds (development builds), we could make use of a raw webpack loader, which loads a xlf
file as string and provides this as translation.
Here are some questions which come to my mind and I think need to be considered in future development:
- Currently, for a production build, everything (vendor's code + application code) is bundled into one single
bundle.js
file. With multiple translations, will we be supposed to have one complete bundle for each language? This seems to be a very inpractical approach. Bundling every translation into thebundle.js
is not practical either, as in maybe 99% of all cases, one language is sufficient. Imagine a popular app, built with angular, which is used from people all over the world. We 1) don't want to ship abundle.js
containing all possible translations, because eventually they will blow up the bundle size. We 2) don't want to have hundrets of bundles, each for one language. Maybe it would be good to split thebundle.js
into two separate bundles: 1) vendors library code, 2) NgFactory code. For each language, a dedicatedngfactory-bundle.lang-LANG.js
would then be created. - What about libraries that support localization? For example a library which supplies some input components (like a calendar) which needs to be localized.
- How can we reliably detect the language and load the app accordingly? At the moment, this has to occur during bootstrap, but what about detecting the browser locale or maybe the users preference (this means: much later than bootstrap time; after a database request, fetching the user settings after auth)?
- As
ng
is a façade: would we need anng i18n
command to hide the possibly rather complexng-xi18n
call (regarding hiding passed parameters... a call could otherwise look like this:./node_modules/.bin/ng-xi18n -p src/tsconfig.json ......
)? Or could this be automated with some kind of watch (I don't think so, asng-xi18n
takes some time to complete, even with a small app)? - Where would we store the localization files? Maybe
src/i18n/
would be a good place for the start. If we would like to encourage a set of localization files for each module, it should be located atsrc/<module-name>/i18n/
or maybesrc/i18n/<module-name>/
. The latter approach would be better for translator-teams, or translation-tools I think