Am Montag, den 23.05.2005, 20:18 +0200 schrieb Egon Willighagen: > On Monday 23 May 2005 19:07, Daniel Leidert wrote: > > Yes, this works nice. Then I can change from <apply> to <exec> and I > > don't have problems with existing targets. Really thanks. I'm currently > > rewriting the the script. > > I'm having a look now at how to get it going for the application...
After our discussion at IRC, I began to write an ant-script. The result is attached. This file should handle: initial creation of .pot template files, update of LANG.po files and translation into message_LANG.po files. Please have a look and tell me your opinion. TODO-notes are at the beginning of the file. PS: Subject adjusted Regards, Daniel --
<project name="Jmol-i18n" default="main" basedir="."> <!-- TODO: - Jmol.filelist and JmolApplet.filelist must be created - ant-contrib.jar needs to go into jars/ - should check for existance of gettext - should execute gettext commands depending on the os (os attribute) --> <!-- our properties section --> <property name="lib.dir" value="jars" /> <property name="src.dir" value="src" /> <property name="application.po.dir" value="src/org/translation/application" /> <property name="application.po.resource" value="src.org.translation.application" /> <property name="applet.po.dir" value="src/org/translation/applet" /> <property name="applet.po.resource" value="src.org.translation.applet" /> <property name="all.application.languages" value="de" /> <property name="all.applet.languages" value="de" /> <!-- <for list ...> construct needs ant-contrib.jar --> <taskdef resource="net/sf/antcontrib/antlib.xml"> <classpath> <pathelement location="${lib.dir}/ant-contrib.jar"/> </classpath> </taskdef> <!-- the main target --> <target name="main" id="main" depends="init,update-pot,update-po,update-catalog"/> <target name="init" id="init"> <tstamp/> </target> <!-- create initial gettext po-template files --> <target name="update-pot" id="update-pot" depends="create-application-pot,create-applet-pot" /> <!-- create Jmol.pot --> <target name="create-application-pot" id="create-application-pot"> <echo message="Generating Jmol.pot (gettext PO-template) file ..."/> <exec executable="xgettext" dir="${basedir}"> <arg line="xgettext -k_ -kGT._ -F -f Jmol.filelist -L Java --default-domain=Jmol"/> </exec> <move todir="${application.po.dir}" overwrite="true"> <fileset dir="${basedir}"> <include name="Jmol.po"/> </fileset> <mapper type="glob" from="*.po" to="*.pot"/> </move> </target> <!-- create JmolApplet.pot --> <target name="create-applet-pot" id="create-applet-pot"> <echo message="Generating JmolApplet.pot (gettext PO-template) file ..."/> <exec executable="xgettext" dir="${basedir}"> <arg line="xgettext -k_ -kGT._ -F -f JmolApplet.filelist -L Java --default-domain=JmolApplet"/> </exec> <move todir="${applet.po.dir}" overwrite="true"> <fileset dir="${basedir}"> <include name="JmolApplet.po"/> </fileset> <mapper type="glob" from="*.po" to="*.pot"/> </move> </target> <!-- update po files using newly created .pot files --> <target name="update-po" id="update-po" depends="update-application-po,update-applet-po" /> <!-- update Jmol po files using newly created Jmol.pot file --> <target name="update-application-po" id="update-application-po" depends="create-application-pot"> <for list="${all.application.languages}" delimiter="," param="current.application.language"> <sequential> <antcall target="update-application-po-lang"> <param name="application_lang_value" value="@{current.application.language}"/> </antcall> </sequential> </for> </target> <target name="update-application-po-lang" id="update-application-po-lang"> <echo message="Updating ${application_lang_value}.po gettext file for Jmol ..."/> <exec executable="msgmerge" dir="${application.po.dir}"> <arg line="-U ${application_lang_value}.po Jmol.pot"/> </exec> </target> <!-- update JmolApplet po files using newly created JmolApplet.pot file --> <target name="update-applet-po" id="update-applet-po" depends="create-applet-pot"> <for list="${all.applet.languages}" delimiter="," param="current.applet.language"> <sequential> <antcall target="update-applet-po-lang"> <param name="applet_lang_value" value="@{current.applet.language}"/> </antcall> </sequential> </for> </target> <target name="update-applet-po-lang" id="update-applet-po-lang"> <echo message="Updating ${application_lang_value}.po gettext file for JmolApplet ..."/> <exec executable="msgmerge" dir="${applet.po.dir}"> <arg line="-U ${applet_lang_value}.po JmolApplet.pot"/> </exec> </target> <!-- Update message cataloges and create messages_LANG.class files --> <target name="update-catalog" id="update-catalog" depends="update-application-catalog,update-applet-catalog" /> <!-- update Jmol po files using newly created Jmol.pot file --> <target name="update-application-catalog" id="update-application-catalog"> <for list="${all.application.languages}" delimiter="," param="current.application.language"> <sequential> <antcall target="update-application-catalog-lang"> <param name="application_lang_value" value="@{current.application.language}"/> </antcall> </sequential> </for> </target> <target name="update-application-catalog-lang" id="update-application-catalog-lang"> <echo message="Updating messages_${application_lang_value}.class file for Jmol ..."/> <exec executable="msgfmt" dir="${application.po.dir}"> <arg line="--statistics -j -l ${application_lang_value} -r ${application.po.resource} -d . ${application_lang_value}.po"/> </exec> </target> <!-- update JmolApplet po files using newly created JmolApplet.pot file --> <target name="update-applet-catalog" id="update-applet-catalog"> <for list="${all.applet.languages}" delimiter="," param="current.applet.language"> <sequential> <antcall target="update-applet-catalog-lang"> <param name="applet_lang_value" value="@{current.applet.language}"/> </antcall> </sequential> </for> </target> <target name="update-applet-catalog-lang" id="update-applet-catalog-lang"> <echo message="Updating messages_${applet_lang_value}.class file for JmolApplet ..."/> <exec executable="msgfmt" dir="${applet.po.dir}"> <arg line="--statistics -j -l ${applet_lang_value} -r ${applet.po.resource} -d . ${applet_lang_value}.po"/> </exec> </target> <!-- clean target: removes .pot files --> <target name="clean" id="clean"/> <!-- the following targets are for special purposes --> <target name="clean-pot" id="clean-pot"> <delete> <fileset dir="${application.po.dir}"> <include name="Jmol.pot" /> </fileset> <fileset dir="${applet.po.dir}"> <include name="JmolApplet.pot" /> </fileset> </delete> </target> <target name="clean-catalogs" id="clean-pot"> <delete> <fileset dir="${application.po.dir}"> <include name="messages*.class" /> </fileset> <fileset dir="${applet.po.dir}"> <include name="messages*.class" /> </fileset> </delete> </target> </project>