Let's say you've done all that. Your application is fully internationalized. Now you want to localize it to three different languages, and I don't care what those languages are. You don't want to compile for all of those languages because that becomes a lot of permutations very quickly.
My default GWT compile is six different permutations per language. Three languages are 18 permutations, or 24 if you compile a "default" permutation. It takes me 10 minutes on my old computer to do just a six permutation build. I don't want a 40 minute compile, especially if I know ahead of time that whoever uses this application is going to want French only.
I'm also using ant as my build tool.
So I decided to take advantage of a little bit of automation.
Step 1: Create a new module file for each language.
This module file inherits the old module file and customizes the language only. Filename is App_2.gwt.xml.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.4.0//EN" "http://google-web-toolkit.googlecode.com/svn/tags/2.4.0/distro-source/core/src/gwt-module.dtd">
<module rename-to='app'>
<inherits name="com.app.App" />
<!-- Language specific compilation -->
<extend-property name="locale" values="fr_CA" />
<set-property-fallback name="locale" value="fr_CA" />
</module>
Step 2: Modify the ant script to build using this language file.
<java failonerror="true" fork="true" classname="com.google.gwt.dev.Compiler">
<classpath>
<path refid="project.class.path" />
</classpath>
<arg line="-war" />
<arg value="war" />
<arg value="com.app.App_2" />
</java>
I just changed the name of the GWT module that's being built, the rest of it's the same.Step 3: Modify the ant script to copy the correct module over before the GWT compile even happens.
<copy todir="src/com/app" file="lang/App_2.gwt.xml" overwrite="true" />
All done. Now I can add new languages and all I need to maintain is a module file specifying which languages to include in a particular compilation. (And of course the language files themselves.)
No comments:
Post a Comment