3 Ant utilities to help with internationalisation of Jalview.
4 Require the additional antcontrib targets (jar file).
6 <project name="jalviewLang" default="checkLang" basedir="..">
8 <taskdef resource="net/sf/antcontrib/antcontrib.properties">
10 <pathelement location="${basedir}/utils/ant-contrib-0.3.jar"/>
13 <taskdef resource="net/sf/antcontrib/antlib.xml"/>
15 <target name="checkLang" description="Reports missing entries in language bundles compared to Message.properties">
16 <!-- adapted from http://stackoverflow.com/questions/14381660/ant-task-to-compare-two-properties-files -->
17 <!-- reduce logging level so 'reportMissingProperty' does not clutter up the output -->
18 <script language="javascript">
19 var logger = project.getBuildListeners( ).firstElement( );
20 logger.setMessageOutputLevel( 1 );
22 <echo message="Missing message labels compared to Messages.properties"/>
23 <foreach target="compareProperties" param="file2">
25 <fileset dir="${basedir}/resources/lang">
26 <exclude name="Messages.properties" />
32 <target name="compareProperties" description="reports missing entries in one message bundle">
33 <loadproperties srcFile="resources/lang/Messages.properties" prefix="prefixfile1"/>
34 <loadproperties srcFile="${file2}" prefix="prefixfile2"/>
36 <propertyselector property="file1.list" delimiter="," match="prefixfile1\.(.+)" select="\1"/>
37 <propertyselector property="file2.list" delimiter="," match="prefixfile2\.(.+)" select="\1"/>
40 <echo message="*** ${file2}:" />
41 <for list="${file1.list}" param="file1.property">
45 <matches pattern=",@{file1.property}," string=",${file2.list}," />
48 <property name="some_missing" value="true"/>
49 <antcall target="reportMissingProperty">
50 <param name="textLabel" value="@{file1.property}"/>
51 <param name="prefixedPropertyName" value="prefixfile1.@{file1.property}" />
59 <isset property="some_missing"/>
62 <echo>No labels missing :-)</echo>
67 <target name="reportMissingProperty" description="double dereference 'prefixedPropertyName' and report missing language property">
68 <propertycopy name="textValue" from="${prefixedPropertyName}"/>
69 <!-- output the property name (message label) and value (English text) -->
70 <echo message="${textLabel}=${textValue}"/>