You can keep your code shorter by using
<foreach list="./i18n,./i18n/code,..." param="i18n-dir" target="i18n-files" />
and
<target name="i18n-files ... >
  <property name="pot-filename" value="${i18n-dir}/*.pot" override="true" /> 
  <foreach param="po-fname" absparam="po-filename" target="i18n-update">
    <fileset dir="${i18n-dir}">
      <include name="*.po" />
    </fileset>
  </foreach>
</target>