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>

Reply via email to