I am about to start design/development for a web based application. The technologies/frameworks under consideration are Java. Struts, Spring, Hibernate e.t.c The intended market is Europe. Considering the language differences prevalent the application most definitely has to provide for Internationalization and Localization. Struts framework provides for this.
Now this application is pretty huge and hence the Resource Bundles are going to be huge. So instead of loading up all of them in one go I was thinking of manually loading the resources based on say the modules so that application start up time is not too big. The same applies for information saved in the database.
Can anybody think of more 'pitfalls' that ought to be taken into consideration? It would be great if members could mention their past experiences with anything similar.
My consideration is not just related to properties files for managing I18n. The images/flash clips associated also would change based on the location. I feel that loading of images and flash would take relatively more time.
The current deployment strategy employed is that the developers move the class files directly to the deployment folders which would make it a hot deployment (Move the files to a development environment and then after the QA have a go they get moved to the production). I am aware of the related issues but they claim to be happy the way things are now. I intend to make this more process oriented i.e to have a build script in place for generation of the war file and automate the whole operation. As after I joined this team there have been a few integration issues arising from this approach. Seems all are concerned with the downtime for the server but I feel that the war file build process has to be put in place.
Getting back to your question -
Server start-up is not the main consideration. Even with a decent server configuration, would not loading all the resources and maintaining the same throughout the application life-cycle cause an overhead considering that the application has quite a few modules. I was considering the option of loading the associated resources in parts (as opposed to loading them all in one go) probably based on parameters in the request. A filter could be easily set-up for that. Say for instance load a basic set of resources and as the user moves from module to another of the application, load up resources related with that particular module.
I would also have to maintain a database level support for different languages. The labels would not be stored in the database but the dynamic values would have to be stored in all supported languages which would then be selected based on the locale. The intended application would not be deployed in a clustered environment.