Skip to content

Latest commit

 

History

History

i18n

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Plugin Translations
===================

Run from plugin main directory:
ant pot
ant poimport
ant pomerge
ant lang

Detailed Version
----------------
* To kick off the translation of the plugin it is SVN committed.
  After a day the translatable strings are visible at Launchpad
  (https://translations.launchpad.net/josm/trunk/+pots/josm).
* After the Java code or the plugin description in build.xml was
  changed, you need to run "ant pot".  That creates/updates the
  template file po/plugin.pot.
* Download the latest translations from Launchpad and copy them into
  the directory po with "ant poimport".  This uses the version that is
  updated once a day.  For a more recent version you need to request a
  download from
  https://translations.launchpad.net/josm/trunk/+pots/josm/+export.
  Then run "ant -Dpoimport.tarball=URL poimport", replace URL with the
  translation download URL.
* Remove all untranslated strings and other translations with
  "ant pomerge".
* Create the language files in the data directory with "ant lang".
* SVN commit plugin changes, SVN update plugin directory, run
  "ant dist" to create a new plugin release, SVN commit new plugin
  release (../../dist/plugin.jar).  "ant dist" will add the
  translations of the plugin description to the manifest.

Additions to plugin build.xml:
    <!-- ** internationalization ** -->
    <import file="i18n/build-i18n.xml"/>
    <target name="pot" description="Extract translatable strings from source." depends="gettext-init">
        <mkdir dir="${plugin.po.dir}"/>
        <gettext-extract keysFile="${ant.project.name}.pot" poDirectory="${plugin.po.dir}" keywords="-k -ktrc:1c,2 -kmarktrc:1c,2 -ktr -kmarktr -ktrn:1,2 -ktrnc:1c,2,3">
            <fileset dir="${plugin.src.dir}" includes="**/*.java"/>
        </gettext-extract>
        <echo file="${plugin.po.dir}/${ant.project.name}.pot" append="true">
#. Plugin ${ant.project.name}
#: build.xml:1
msgid "${plugin.description}"
msgstr ""
</echo>
    </target>
    <target name="additional-manifest">
        <antcall target="mftrans"/>
    </target>

Local Translation
-----------------
To translate the strings locally, e.g. to check that they make sense:
* ant pot
* LL is a language code, CC is an optional country code
* If there is no PO file:
  msginit --input=po/*.pot --output-file=po/LL_CC.po --locale=LL_CC
* If a PO file exists:
  msgmerge --update po/LL_CC.po po/*.pot

Global Run
----------
From the global i18n directory the steps are:
./launchpad bzronly
ant -Dplugin=plugin singleplugintrans

* The command "launchpad bzronly" exports the latest revision of the
  Launchpas translations.
* "ant singleplugintrans" generates the language files in the plugin
  data directory.  Then it deletes to PO files.
* It is not possible to add the translations of the plugin description
  to the manifest.

See Language String Changes
---------------------------
To see what language strings changed in data/*.lang run this:
svn diff --diff-cmd i18n/diff_lang.pl --force data

To see just removed or modified strings:
svn diff --diff-cmd i18n/diff_lang.pl --force data | grep ^- | grep -v '^--- data/'

To display changes of a single file with tkdiff:
svn diff --diff-cmd i18n/diff_lang.pl --extensions --tkdiff --force data/<lang>.lang