File Release Notes and Changelog

Release Name: 0.31

Release Notes

* Major changes in release 0.31 (2007-05-07)

** Dependencies

  po4a-updatepo: New option --previous requires gettext 0.16.

** Bug fixes

  general: Don't hang when running in background with redirected stdout.
           Thanks to Jim Meyering.

** New features

  general: po4a now uses timestamps to avoid re-generating a translation
           if no changes are expected: if a translation is more recent
           than its associated PO, master document, addenda or
           configuration file, then there is no need to update it. For the
           documents which do not pass the translation threshold, a
           --stamp option was added to tell po4a to create files with a
           .po4a-stamp extension (you can also create them manually).
           This can save a lot of time when po4a knows that the
           translation will not be generated because there were no changes
           since the last po4a run.

  general: Beginning of a C extension. This provides speedup. Testers are

  po4a: New options: --msgid-bugs-address and --copyright-holder.

  po4a: Add new tag: [options] to set global options (i.e. for every
        documents in the configuration file).

  po4a: Update translations based on modification times. Use timestamp to
        avoid retrying generate uncompleted translations.

  man: New 'unknown_macros' option to specify the behavior of po4a with
       unknown groff macros.

  man: Reset the configuration between two runs. This permits to define
       different options for different files in a config file with the
       opt:"..." parameters.

Change Log

2007-05-07  Nicolas François  <>

        * po4a-updatepo: Make sure $msgmerge_opt is initialized.
        * NEWS: prepare the release, update the release date.

2007-04-30  Nicolas François  <>

        * po/bin/po4a.pot, po/pod/po4a-pod.pot: Regerated.
        * po/bin/*.po, po/pod/*.po: Synchronized with the POTs.

2007-04-30  Nicolas François  <>

        * po4a, po4a-updatepo: Do not make --previous a default option for
        msgmerge. Add options --previous and --msgmerge-opt.
        * NEWS: Documented.

2007-04-29  Nicolas François  <>

        * po/bin/fr.po, po/pod/fr.po: Updated French translation.

2007-04-22  Nicolas François  <>

        * po/bin/po4a.pot, po/pod/po4a-pod.pot: Regerated.
        * po/bin/*.po, po/pod/*.po: Synchronized with the POTs.

2007-04-18  Nicolas François  <>

        * lib/Locale/Po4a/ reset the configuration variables when
        the module is initialized. This avoid reusing configurations
        defined by options in previous runs (when a config file is used
        with opt:"..." parameters.

2007-04-17  Nicolas François  <>

        * po4a: Do not activate the creation of .po4a-stamp files by
        default. Some packages do not expect the creation of .po4a-stamp
        files and this broke at least adduser. Add a --stamp option.

2007-04-16  Nicolas François  <>

        * po4a: Fix the sorting algorithm. This caused some changes in the
        order of documents in the PO files.

2007-04-16  Nicolas François  <>

        * NEWS: document the timestamping mechanism in the NEWS file.

2007-04-16  Nicolas François  <>

        * lib/Locale/Po4a/ $VERSION is not defined. Use the full
        $Locale::Po4a::TransTractor::VERSION instead.

2007-04-16  Nicolas François  <>

        * lib/Locale/Po4a/ Prepare next release.
        Update the version to 0.31.

2007-04-16  Nicolas François  <>

        * po4a: Make sure the file exists before 'stat'ing it.

2007-04-16  Nicolas François  <>

        * po4a: Fix typo in a string.

2007-04-16  Nicolas François  <>

        * lib/Locale/Po4a/ New option 'unknown_macros' to specify
        the behavior when an unknown macro is found.

2007-03-26  Nicolas François  <>

        * po4a: Only re-generate translations if needed. Use a timestamp
        when a translation cannot be generated. (deactivated with

2007-03-24  Nicolas François  <>

        * po4a, po4a-updatepo: Use msgmerge with the --previous switch.
        This requires gettext >= 0.16

2007-03-24  Nicolas François  <>

        * po4a: In the sort subroutine, the null document can be the first
        or second argument.

2007-03-24  Nicolas François  <>

        * po4a: Allow quoted arguments in options. This permits to use
        spaces in arguments to modules options.

2007-03-24  Nicolas François  <>

        * po4a: Fix a typo in the documentation and comments.
        * po4a, lib/Locale/Po4a/ Add options --msgid-bugs-address
        and --copyright-holder.  Similar to the xgettext options.
        * po4a: Allow global options in the configuration file
        ([options] opt:"...").
        * NEWS: Document these changes.

2007-03-24  Nicolas François  <>

        * extension/: New directory. It will be used for a C extension to
        speed up po4a.
        * extension/Build.PL: Build system for the extension. For testing,
        you should add the links Locale and t, pointing to ../lib/Locale
        and ../t in the extension directory.
        * extension/lib/Locale/Po4a/Po.xs: First attempt for a C
        extension.  The extensions for canonize, unquote_text,
        get_charset, unescape_text, escape_text are complete, tested and
        provide a speed up.
        The Po object extension is not complete (Po_new, Po_DESTROY,
        Po_read, Po_push). The goal for the Po object extension is to
        fully rely on the gettext libraries. A Po object from the
        extension will not be binary compatible with a Po object from the
        Perl code, but it should provide the same API.
        * extension/lib/Locale/Po4a/Man.xs: First attempt for a C
        extension.  It provides a good speedup. It should be fully
        compatible with the Perl code.
        * extension/lib/Locale/Po4a/TransTractor.xs: First attempt for a C
        extension.  No speedup noticed. Provided as an example, but could
        be dropped latter.
        * extension/typemap, extension/lib/Locale/Po4a/Po.h,
        extension/lib/Locale/Po4a/str-list.h: Header files for the Po
        object extension.  At least on Debian, the gettext library is not
        directly useable if we want to play with the internal structure or
        advance internal functions.  This may be a temporary hack.
        * lib/Locale/Po4a/, lib/Locale/Po4a/,
        lib/Locale/Po4a/ Load the C extensions if they are
        available. This does not make po4a slower if the extension is not
        built and present on the system.
        * NEWS: Document the new C extension. Status of this extension.

2007-02-16  Nicolas François  <>

        * t/data-21/extract.po-ok, t/data-27/general-normalized.xml,
        t/data-27/general.po: The gettextized XML files indicate an UTF-8
        charset, it's normal that the POs' charset are set to utf-8.

2007-02-16  Nicolas François  <>

        * po/bin/fr.po: Unfuzzy.

2007-02-16  Nicolas François  <>

        Encode::from_to spends 40% of its time in find_encoding. As the
        encoding of the input file, output file and po files do not change
        a lot, it's faster to keep the encoders in the Transtractor or Po
        * lib/Locale/Po4a/ Use detected_charset to change
        the charset, even in the initialization (in process()).
        * lib/Locale/Po4a/ Add a file_out_encoder
        * lib/Locale/Po4a/ (encode_from_to): New function
        to replace Encode::from_to.
        * lib/Locale/Po4a/ Replace some occurences of
        Encode::from_to by encode_from_to, when the encoders are known.
        * lib/Locale/Po4a/ add an 'encoder' field to the po
        structure. It defaults to find_encoding("ascii"), and is changed
        every time the header's charset is changed.

2007-02-16  Nicolas François  <>
2007-02-16  Nicolas François  <>

        * lib/Locale/Po4a/ (post_trans, parse): Cache the result
        when we convert a non-breaking space to its representation in the
        input and output charset.

2007-02-14  Nicolas François  <>

        * lib/Locale/Po4a/ Fix minor typos in comments.
        * lib/Locale/Po4a/ (translate): Try to always provide a
        reference to do_fonts.
        * lib/Locale/Po4a/ (translate): There's no reasons
        to check whether file_in_charset is set to CHARSET.
        * lib/Locale/Po4a/ (translate): Be case insensitive
        to match the "ascii" encoding name.
        * lib/Locale/Po4a/ (detected_charset): Set
        ascii_input to 0 in case of non ascii charset.
        * lib/Locale/Po4a/ (process): Likewise.
        * lib/Locale/Po4a/ (read): Do not try to guess the
        encoding if the encoding was provided (speed up).

2007-02-14  Jim Meyering  <>

        Don't hang when running in background with redirected stdout.
        * lib/Locale/Po4a/ (BEGIN): Don't try to determine output
        terminal size when STDOUT is not a terminal.
Powered By FusionForge