Locale-Maketext-Gettext change log

2021-02-07	version 1.31
	 1. Updated .gitignore.
	 2. Added MANIFEST.SKIP.
	 3. MANIFEST, META.json, META.yml, SIGNATURE: Generated files
	    removed from the Git repository.
	 4. COPYING: Removed the redundant and irrelevant GPL license.
	 5. BUGS, INSTALL, README, THANKS, TODO, README.md: Replaced the
	    messy GNU-styled documents with a single Markdown README.md,
	    and updated the URLs.
	 6. Gettext.pm, Functions.pm, maketext, 11-command-line.t,
	    12-cache.t, Changes: Various fixes to avoid JetBrains IDE
	    problem detection.

2019-09-17	version 1.30
	 1. 12-cache.t: Fixed so that it works on MS-Win32.  I forgot to
	    issue binmode when copying the MO files.
	 2. 00-signature.t: Removed TEST_SIGNATURE, as this does not work
	    on everybody who does not have my GPG public key, but me.
	 3. 03-errors.t: Removed the debugging output.

2019-09-09	version 1.29
	 Fix after 10 years.
	 1. Gettext.pm: Added support to purge the lexicon cache and
	    reread the MO file on calling textdomain() when MO file is
	    updated automatically.  This enables MO file live update with
	    persistent applications like Mojolicious or mod_perl.
	 2. Source is now on Github.  See:
	    https://github.com/imacat/Locale-Maketext-Gettext

2009-06-27	version 1.28
	 Build script fix.  No code changes.
	 1. Build.PL: Removed the build_requires, as they are not
	    required by the build process, but by the test process.
	    The build process should not be blocked by them.
	    Suggested by Ryan Niebur <ryanryan52@gmail.com> and
	    Adam Kennedy <adamkennedybackup@gmail.com>
	    (and Audrey Tang).

2009-04-28	version 1.27
	 Test suite fix.  No code changes.
	 1. t/03-errors.t: Fixed the find_system_mo() subroutine to
	    exclude MO files with special characters that might be
	    considered as code by Locale::Maketext.
	 2. t/02-big-endian.t: Fixed the native-built MO file test
	    and moved the $POfile and $MOfile file name assignment
	    to the beginning, to ensure that their values are
	    assigned even if GNU gettext is not installed and
	    the test is skipped on the target test system.

2008-11-11
	 1. INSTALL: Fixed the grammar, changed "none" to "None.".

2008-04-22	version 1.26
	Documentation fix.  No code changes.
	 1. bin/maketext: Moved to script/maketext.

2008-04-21
	 1. TODO: Added.
	 2. Artistic and COPYING: Added.
	 3. INSTALL: Added.  Installation instructions moved from README
	    to INSTALL.

2008-04-11	version 1.25
	Test suite fix.  No code changes.
	 1. t/03-errors.t and t/08-f-errors.t: Added find_system_mo(), to
	    select a system MO file that we can use.

2008-02-26	version 1.24
	Test and build suite fix.  No code changes.
	 1. t/02-big-endian.t: Added creating PO at run time, in order
	    to work with GNU gettext < 0.15 whose msgfmt does not support
	    msgctxt yet.  This should work with both older and newer
	    GNU gettext.
	 2. t/test_native.po: Removed.  It is now generated by
	    t/02-big-endian.t at run time.
	 3. Makefile.PL: Added "clean" to clean-up possible existing
	    test_native.po and test_native.mo.
	 4. Build.PL: Added "add_to_cleanup" to clean-up possible existing
	    test_native.po and test_native.mo.
	 5. Build.PL: Added "build_requires".
	 6. t/08-f-errors.t: Fixed so that it finds the newest MO file
	    found on the system, in order to avoid legacy MO files.
	    (gettext 0.10 in 1995?)
	 7. t/08-f-errors.t: Fixed test 38 so that it skips in the eval()
	    block, and dumps the error on failure.
	 8. Changes: Added several missing change notes in version 1.23.

2008-02-19	version 1.23
	Added support for GNU gettext pgettext() as pmaketext(), to
	translate text messages in a particular context.
	 1. Gettext.pm: Added the pmaketext() method as an equivalent of
	    the pgettext() function in GNU gettext, to look up the text
	    message in a particular context, according to the suggestion
	    by Chris Travers.
	 2. Functions.pm: Added the pmaketext() function as an equivalent
	    of the pgettext() function in GNU gettext, and the dpmaketext()
	    function as an equivalent of the dpgettext() function in GNU
	    gettext, to look up the text message in a particular context,
	    according to the suggestion by Chris Travers.
	 3. Gettext.pm and Functions.pm: Fixed documentation and comments.
	    Changed "perl" as "Perl".  Removed contractions and replaced
	    them with full sayings, in order to work with syntax
	    highlighting.  Removed emotional marks for the same reason.
	 4. Makefile.PL: Added conditional checks for whether LICENSE is
	    available in ExtUtils::MakeMaker.
	 5. Gettext.pm and Functions.pm: Added xgettext keyword notation
	    for dmaketext(), pmaketext() and dpmaketext().
	 6. t/locale/*/LC_MESSAGES/*.mo, t/test_native.po: Added messages
	    with contexts for pmaketext() testings.
	 7. t/*.t: Added tests for pmaketext() and dpmaketext().
	 8. Gettext.pm: Fixed the failure_handler_auto() method to remove
	    the message context from the message key before sending to
	    the failure lexicon.  The failure_handler_auto() method
	    differs from its Locale::Maketext parent from now on.

2007-03-28	version 1.22
	 1. t/*-f-*.t: Moved Locale::Maketext::Gettext::Functions::_reset()
	    from the end of each set of tests, to the front of each set of
	    tests.  If at the end of the test set, it would not be run if
	    the eval{} block fails.
	 2. Gettext.pm, Functions.pm and maketext: Updated the URL of the
	    GNU gettext manual in the their POD documents.
	 3. Functions.pm: The example in its POD document is updated to show
	    more of the nature of Locale::Maketext.

2007-03-28	version 1.21
	 1. 04-encodings.t and 09-f-encodings.t: Inserted test#26 to test the
	    $@ error message.  It is an encode() error that is not affected
	    by the Locale::Maketext $@ change with "local $@".
	 2. 06-racing.t: Added $LOOKUP_FAILURE as look-up failure flag.  Added
	    a simple subroutine to handle lookup failure.  Test that to see if
	    we are really die from lookup failure.
	 3. Gettext.pm, Functions.pm and 09-f-encodings.t: Renamed
	    ENCODING_SET to USERSET_ENCODING.  USERSET_ENCODING is set to
	    the encoding user specified.  Future test should use "exists",
	    but not "defined", as user may supply undef on this.
	 4. Gettext.pm: Renaming _lmg_failure_handler_auto() to
	    failure_handler_auto().  It should be OK to override it, and this
	    help subclasses to employ our version.
	 5. Functions.pm: Note why we don't use $@ but @ as the prototypes of
	    __(), N_(), maketext().
	 6. Functions.pm: Removed unused global variable $ENCODING.
	 7. Functions.pm: Renamed %VARS to %PARAMS.  Changed $KEY_ENCODING
	    to $PARAMS{"KEY_ENCODING"}.  Changed $DIE_FOR_LOOKUP_FAILURES to
	    $PARAMS{"DIE_FOR_LOOKUP_FAILURES"}.  Changed $ENCODE_FAILURE to
	    $PARAMS{"ENCODE_FAILURE"}.
	 8. Gettext.pm and Functions.pm: Changed the returning line of
	    encoding(), key_encoding() and die_for_lookup_failures() to one
	    conditional line.  This is more neat.
	 9. Functions.pm: Updated _reset(), resetting $PARAMS{"KEY_ENCODING"} to
	    "US-ASCII" instead of undef, add resetting
	    $PARAMS{"DIE_FOR_LOOKUP_FAILURES"} to 0;
	10. Gettext.pm: Updated failure_handler_auto(), check if this method
	    is revoked statically.
	11. t/*-f-*.t: Added Locale::Maketext::Gettext::Functions::_reset() to
	    the end of each set of tests, to reset the environment.
	12. Gettext.pm: Added fail_with() as a wrapper to record the user set
	    lookup failure handler, so that we can safely switch with
	    die_for_lookup_failures().  A new attribute {"USERSET_FAIL"} is
	    added to record it.  All references to fail_with() in other places
	    of the code are changed to SUPER::fail_with().  fail_with() is
	    only for the user since it will update the registered user
	    preference.
	13. Gettext.pm and Functions.pm: In maketext(), check if the key is
	    Perl utf8 text with Encode::is_utf8() first before decode() the
	    key, so that user can safely run a multibyte-aware script.
	14. Gettext.pm and Functions.pm: In maketext(), check if the key is
	    Perl utf8 text with Encode::is_utf8() first before encode(), for
	    empty/invalid lexicon with key_encoding() set but no output
	    encoding, so that we can have a real pass through.  In the case
	    of an empty/invalid lexicon, the user should be responsible for
	    the output encoding.  Added $keyd as the decoded() $key, so
	    that we can check the original $key later.
	15. Functions.pm: In __(), removed unused variables $encoding,
	    $lh_encoding and $key_encoding.
	16. maketext: In parse_args(), check the return value of the eval { }
	    block instead of $@, and remove the extra new line when writing
	    the error in $@.
	17. maketext: Added an example at the DESCRIPTION chapter of the
	    POD documentation.
	18. Gettext.pm: Added a note on the relation of fail_with()
	    die_for_lookup_failures() at the description of the
	    die_for_lookup_failures() method at the METHODS section
	    of the POD documentation.
	19. Makefile.PL: Added LICENSE attribute as "perl".

2007-03-28	version 1.20
	Rewrite to follow the error handler design of Locale::Maketext, i.e.
	the fail_with() method, instead of our own.
	Clean up encoding mess.  You may need to check if your application
	was depending on the previous wrong, hard-to-handle behavior on look
	up failures.  The new behavior should be easier to deal with.
	 1. Gettext.pm: In the textdomain() function, make sure {"ENCODING"}
	    is not set to undef when MO file does not exists.
	 2. Functions.pm: In the encoding() function, removed a piece of long
	    gone, commented code.
	 3. Gettext.pm and Functions.pm: In the encoding(), textdomain() and
	    the _get_handle() function, add a flag {"ENCODING_SET"} to tag if
	    we should respect the encoding() setting of the user.  If there is
	    no user preferred encoding(), when obtaining language handle with
	    _get_handle() or textdomain(), encoding() will change to the
	    output encoding() to that of the corresponding MO file.
	 4. 09-f-encoding.t: Added "delete $VARS{"ENCODING_SET"}" in the end
	    of each test to clean up the environment.
	 5. Gettext.pm: Update the version number to 1.20.
	 6. Functions.pm: Update the version number to 0.10.
	 7. t/99-pod.t: Added.
	 8. Makefile.PL: Stylish clean-up and update.  Added "SIGN".
	 9. Build.PL: Added.

2007-03-27
	 1. Gettext.pm: Added _lmg_failure_handler_auto(), as a replacement
	    of Locale::Maketext's failure_handler_auto().  Locale::Maketext's
	    failure_handler_auto() until version 1.10 has problem with
	    message keys without any brackets.  See bug#33938 on rt.cpan.org.
	    It's content was simply copied from failure_handler_auto().
	 2. Gettext.pm: Removed classes Locale::Maketext::Gettext::_AUTO,
	    Locale::Maketext::Gettext::_AUTO::i_default,
	    Locale::Maketext::Gettext::_EMPTY and
	    Locale::Maketext::Gettext::_EMPTY::i_default.  We are using
	    Locale::Maketext's fail_with() method to deal with look up errors
	    rather than making dummy language handles and deal with them by
	    ourselves.  This simplify things, making the code more compatible
	    with Locale::Maketext.  As a result, Locale::Maketext's
	    fail_with() method and {"fail"} attribute are working now.
	 3. Gettext.pm: In the maketext() method, removed the code that deal
	    with look up errors by ourselves.  Now we handle this with the
	    {"fail"} attribute and the _lmg_failure_handler_auto() method,
	    following the original Locale::Maketext's design.
	 4. Gettext.pm: In the textdomain() method, added clear_isa_scan() in
	    the end to clear the ISA handler look up cache table.  This way we
	    are not affected by the cache of _lmg_failure_handler_auto()
	    when switching domain with textdomain().
	 5. Gettext.pm and Functions.pm: In encoding() and key_encoding(),
	    feeding undef delete the property.  This is to unify the practice
	    of "exists" and "defined" tests.  All tests should use "exists"
	    instead of "defined" now.
	 6. Functions.pm: Added classes
	    Locale::Maketext::Gettext::Functions::_EMPTY and
	    Locale::Maketext::Gettext::Functions::_EMPTY::i_default as a
	    dummy locale.
	 7. Functions.pm: Add _get_empty_handle() to return the dummy locale,
	    with die_for_lookup_failures() properly set.  This replaces the
	    $_EMPTY setting in the beginning of the file.
	 8. Functions.pm: In the _get_handle() method added unset the
	    key_encoding() before returning the language handle.
	    key_encoding() is handled by Locale::Maketext::Gettext::Functions.
	    Locale::Maketext::Gettext does not need to handle key_encoding().
	    This is to follow the nature of functional API that
	    key_encoding() should apply to all the following session in
	    functional API.
	 9. Gettext.pm and Functions.pm: In maketext(), stop playing magic
	    with encoding() and key_encoding() that automatically encode()
	    text back to key_encoding() when lookup fails.  The result is
	    too unpredictable.  The application should specify which encoding
	    they want themselves.

2007-03-22	version 1.18
	Fixes for Perl 5.9.  Locale::Maketext in Perl 5.9 does not set $@
	as its error message.  Tests replying on $@ may fail for this.  But
	I should check the return value of the eval{} block rather than	$@
	anyway.
	 1. t/*.t: Addition of $r as the return value of the eval{} blocks.
	    Addition of "return 1;" to the eval{} blocks to specify the return
	    values.  Changing tests "ok($@, "");" to "ok($r, 1);".  Changing
	    tests "ok($@, qr/maketext doesn't know how to say/);" and
	    "ok($@, qr/does not map to/);" to "ok($r, undef)".  This is to
	    be refined.  It is necessary to test if it fails by our expected
	    reason rather than only knowing that it fails.
	 2. Update the version number of Locale::Maketext::Gettext to match
	    the distribution version.

2005-04-27	version 1.17
	 1. Changes: Typo fixed.

2005-04-26	version 1.16
	Test suite fixes.
	 1. 02-big-endian.t: In test 7, 8, $MOfile and $POfile are quoted
	    when sending to the shell (backticks), to be safe to spaces and
	    other special shell characters in their paths.
	 2. 11-command-line.t: In all tests $maketext is quoted when sending
	    to the shell (backticks), to be safe to spaces and other special
	    shell characters in its path.  This should solve the CPAN tester
	    failures 200029, 200332 and 200331.  Thanks to Max Maischein
	    <corion@corion.net> for testing and reporting this.
	 3. Changes: File edited to widen line limit from 60 columns to 79
	    columns, to ease the reading.
	 4. THANKS: Updated.

2005-04-26	version 1.15
	 1. SIGNATURE: Included Modules::Signature gpg signature file added.
	 2. 00-signature.t: Added.

2005-04-21	version 1.14
	 1. maketext: Prototypes of the following subroutines are
	    declared first now: main() and parse_args().

2005-04-20	version 1.13
	 1. Changes: Addition of new unencoded UTF-8 tests is appended to the
	    change log.
	 2. Changes: Addition of warning of key_encoding() is appended to the
	    change log.
	 3. Changes: Typo fixed: "Vesion" should be "Version".
	 4. Changes: Typo fixed: 2005-04-10 should be 2005-04-20.

2005-04-20	version 1.12
	Documentation fixes.
	 1. Update the copyright year on the updated files.
	 2. Changes: Version number added.

2005-04-19	version 1.11
	 1. Gettext.pm: Using undef as encoding or key_encoding.  Methods
	    encoding() and key_encoding() now check the number of arguments
	    instead of the argument value.  When undef, the unencoded UTF-8
	    text is returned.
	 2. Gettext.pm: Prototype of subroutine read_mo() is declared first
	    now.
	 3. Gettext.pm: Deprecated subroutine readmo() is removed.
	 4. Functions.pm: Prototypes of the following subroutines are declared
	    first now: bindtextdomain(), textdomain(), get_handle(),
	    maketext(), __(), N_(), dmaketext(), reload_text(), encoding(),
	    key_encoding(), encode_failure(), die_for_lookup_failures(),
	    _declare_class(), _catclass(), _init_textdomain(), _get_langs(),
	    _get_handle(), _reset(), _new_rid(), _k() and _lang().
	 5. 07-f-basic.t: Locale environment variables are cleared before
	    running tests, to avoid confusion from the user's current locale.
	 6. 10-f-switching.t: Locale environment variables are cleared before
	    running tests, to avoid confusion from the user's current locale.
	 7. Gettext.pm: Default KEY_ENCODING to US-ASCII.  It is always
	    decoded to UTF-8 first when looked up in the _AUTO lexicon, to
	    ensure that the resulted text is always in UTF-8.
	 8. Gettext.pm: Avoid caching undefined MO file encoding when MO file
	    is not available.
	 9. Gettext.pm: New attribute "MO_ENCODING" is added to to record the
	    encoding of the MO file.
	10. Functions.pm: Default KEY_ENCODING to US-ASCII.  It is always
	    decoded to UTF-8 first when looked up in the _AUTO lexicon, to
	    ensure that the resulted text is always in UTF-8.
	11. 04-encodings.t: Tests 28-33 added to test returning unencoded
	    UTF-8 text.
	12. 09-f-encodings.t: Tests 28-33 added to test returning unencoded
	    UTF-8 text.
	13. Gettext.pm: Warning is added to the use of key_encoding().
	14. Functions.pm: Warning is added to the use of key_encoding().

2005-04-05
	 1. Gettext.pm: Subroutine attribute "method" is tagged on the
	    following methods: encoding(), key_encoding(), new(),
	    subclass_init(), bindtextdomain(), textdomain(), maketext(),
	    reload_text(), die_for_lookup_failures() and encode_failure().

2003-05-12
	 1. Gettext.pm: key_encoding applied to "not found" keys only, so that
	    it can be looked up in their original encoding in the %Lexicon.

2003-05-09	version 1.10
	 1. Functions.pm: _get_handle: Fallback language handler changed from
	    the failed language handler $FLH to the empty lexicon $_EMPTY.
	    This has no real effect, since lookup failures are always handled
	    by $FLH, but not the current language handler $LH.  But this
	    matches the reality.

2003-05-08
	 1. Changes: typo (version 1.07 should be version 1.09)

2003-05-07
	 1. Changes: An excess blank line is removed.

2003-05-07	version 1.09
	Test suite fix.
	 1. 02-big-endian.t: Fix on $MSGFMT so that it works on more
	    platforms.

2003-05-07	version 1.08
	Fixes mistakes from version 1.07
	 1. Return the interpreter line to the maketext script.  It was a
	    misunderstanding at 1.07
	 2. Content-Transfer-Encoding is fixed from 8bit to 7bit in the
	    English MO files.
	 3. t/test_native.po: Added.
	 4. 02-big-endian.t: Test suite for native-built MO files are added.
	    Please report your failures.

2003-05-05	version 1.07
	Bug fixes.
	 1. Fix to the interpreter line in the maketext script so that it can
	    be replaced with correct interpreter at make time.
	 2. 11-command-line.t: script location changed from lib/maketext to
	    blib/script/maketext.
	 3. C locale is added to the test suite.
	 4. 11-command-line.t: Locales en, zh_TW, zh_CN are remove from the
	    test suite, to avoid perl warnings from  systems that did not
	    install these locales.
	 5. 11-command-line.t: $ENV{"LANGUAGE"} controls added.

2003-05-04	version 1.06
	 1. Language function override is not available for L::M::G::F and the
	    maketext script.  I almost forgot this problem.  Notice is added
	    to the documentation.  Suggestions are welcome.

2003-05-03	version 1.06
	Introducing "maketext", a command line interface to
	Locale::Maketext::Gettext (and Locale::Maketext).
	 1. The maketext script is added, a command line interface to
	    Locale::Maketext::Gettext (and Locale::Maketext).

2003-05-03	version 1.05
	Test suites fixes.  This fixes the failures reported from CPAN
	testers.  Failures reported from CPAN testers are caused by
	Archive-Tar called by CPANPLUS, but not by Locale::Maketext::Gettext
	itself.  Bug report concerning this problem is already submitted to
	Archive-Tar.
	 1. Test suite temporarily files test_dyn.mo are removed from
	    MANIFEST.
	 2. File::Copy is used instead of link in the test suites to enable
	    tests on platforms that does not support hard links (Win32, for
	    example).
	 3. Temporarily files are cleaned up at the end of 05-switching.t and
	    10-f-switching.t.
	Upgrade is not required if you are using version 1.04.

2003-05-02	version 1.04
	 1. Support for MO files without encoding specified was added.  I
	    don't know there are MO files born without its encoding. ^^;
	 2. L::M::G::F: textdomain() now works for default system locale
	    directories, too.  For domains that are not bound with
	    bindtextdomain(), it searches the system locale directories to
	    find the domain MO files.  Unlike textdomain() in L::M::G, it
	    remembers the search result in order to build the index key.
	 3. Tests for default system locale directory search are added.  It
	    may be skipped, though.

2003-05-02	version 1.03
	 1. L::M::G: A algorithm bug about key_encoding with auto-lexicon was
	    fixed.
	 2. L::M::G::F: I decide to give up mod_perl safety for encoding,
	    key_encoding, encode_failure and die_for_lookup_failures().
	    POSIX::setlocale() didn't solve this problem, either.  Use L::M::G
	    if you need that.  Suggestions and solutions are welcome.
	 3. L::M::G: FLH (Failure language handler) is added to
	    help switching the die_for_lookup_failures() setting.
	    Maketext can be slightly faster.

2003-05-01
	Labor's Day!
	A Major rewrite to Locale::Maketext::Gettext::Functions.
	 1. Packages are declared by a random class ID, instead of by its text
	    domain previously, in order for a text domain to be redeclared
	    with different sets of languages infinitely.  This solves the
	    problem where languages cannot to be removed at run-time.  You can
	    add/remove languages/MO files at run time now.  You can also
	    bindtextdomain() to another directory after setting textdomain().
	    This is not possible to the object interface of
	    Locale::Maketext::Gettext (and Locale::Maketext).
	 2. fork_and_test is removed from the test suite.  It does not seem to
	    be required by the current random class ID system anymore.
	 3. The used of ($t1..$t6) is replaced by ($_[0]..$_[5]) in to
	    05-switching.t.
	 4. Garbage collection is added.  Language handles associated with
	    abandoned localization classes are dropped in time, in order to
	    reduce memory used.

2003-04-30
	 1. L::M::G::F: I forgot to document dmaketext, too. ^^;
	    But, no, I will not put a third release today!
	 2. L::M::G::F: Fixes to documentation typos.
	 3. maketext() and __() are exchanged.  maketext() is a wrapper to
	    __() now.  The speed of __() should be slightly faster.

2003-04-30	version 1.02
	Documentation fixes.
	 1. L::M::G::F: Documentation fixes.  get_handle was not included in
	    the documentation. ^^;  I forgot to put it in.
	 2. README was updated.  L::M::G::F is included in the README.  Also,
	    the installation procedure is updated, too.  I forgot to update it
	    last time.

2003-04-30	version 1.01
	Improvements to Locale::Maketext::Gettext::Functions.
	 1. L::M::G::F: Documentation fixes.  Lots of errors sit there in the
	    previous documentation.  It's impossible to work if you follow the
	    previous documentation. ^^;  Ha ha...
	 2. L::M::G: Map the language i-default to the locale C.
	 3. L::M::G::F: Map the locale C to the language i-default.
	 4. fork_and_test is added to the test suite to test without polluting
	    the package space.  It is slow, though. ^^;
	 5. L::M::G::F: Several test suites are added.
	 6. L::M::G::F: Error tolerance is largely improved.
	 7. L::M::G: New method subclass_init() is added.  Object
	    initialization is moved from the new method to the subclass_init()
	    method, so that another subclass may inherit it further.
	 8. L::M::G::F: The "experimental" warning is removed.  Large amount of
	    errors can be handled gracefully now.

2003-04-28
	 1. TestPkg/L10N.pm is renamed as T_L10N.pm.  It is neater.  A
	    TestPkg/ subdirectory is not necessary.
	 2. Change log is fixed.  I forgot to put the version number 0.07.
	 3. Also, the version number should become 1.00, for the joining of
	    Locale::Maketext::Gettext::Functions. ^_*'

2003-04-28	version 0.07 (1.00)
	Introducing Locale::Maketext::Gettext::Functions, a functional
	interface to Locale::Maketext::Gettext.
	 1. The first Locale::Maketext::Gettext::Functions is out.  It works!
	    ^_*'  But it is still experimental.  It cannot deal with real
	    world problems still. ^^;
	 2. Documentation was fixed so that it is neater.

2003-04-27
	 1. The name of the _AUTO lexicon package is shorten to
	    Locale::Maketext::Gettext::_AUTO.
	 2. Documentation rearrange.

2003-04-27	version 0.06
	Improvements.
	 1. textdomain() works for default system locale directories now.  For
	    domains that are not bound with bindtextdomain(), it searches the
	    system locale directories to find the MO file.  No test suite is
	    available for this functionality.  I cannot predict what MO files
	    are available in your system locale directories. ^^;  Please
	    report bugs if it does not work.
	 2. Slave package Locale::Maketext::Gettext::_AUTO::L10N is added, in
	    order to process the _AUTO Lexicon separately.  This saves
	    resources when user change the die_for_lookup_failures() setting.
	    Changing die_for_lookup_failures() setting won't trigger copying
	    and replacing your whole %Lexicon anymore.  As an effect, the
	    cached compiled result of the _AUTO lexicon is preserved and the
	    compilation overhead from Locale::Maketext is greatly reduced.
	 3. read_mo() is added to retire the readmo().  Use of readmo() is
	    deprecated.  This idea is inspired by the implementation of
	    readmo() as "parse_mo" in Locale::Maketext::Lexicon by Autrijus.
	    There is far too much meta information to be returned other than
	    its encoding.  It's not possible to change the API for each new
	    requirement.  To enable sharing of the algorithm used in read_mo()
	    with whoever need it, it's necessary to limit its function to read
	    and return the raw data, leaving all the other jobs to its caller.
	 4. For the same reason, caching control is removed from read_mo(),
	    too.  read_mo() read the MO file and return the %Lexicon only.  It
	    really reads.  Nothing more. ^_*'

2003-04-27	version 0.05
	Bug and documentation fixes.
	 1. New method key_encoding was added.  The _AUTO lexicon is itself
	    not multibyte-safe.  You can specify the encoding of your keys if
	    you are using non-ASCII keys.  This is not a solution, but a
	    workaround.
	 2. New method encode_failure was added.  The default action when
	    encode fails changed from FB_CROAK to FB_DEFAULT.  I have changed
	    my mind.  GNU gettext never fails.
	 3. The paragraph about Locale::Maketext::Lexicon at the NOTES section
	    in the documentation is updated.  The paragraph about msgunfmt is
	    removed.
	 4. The README file was updated.
	 5. The strange line "exists ${"$class\::Lexicon"}{$key};" is removed.
	    That problem seems to be solved.  It is not required anymore.

2003-04-25	version 0.04
	Documentation fixes.  Upgrade is not required if you are using version
	0.03.

2003-04-25	version 0.03
	Bug fixes.
	 1. Fixed clashing of the die_for_lookup_failures() setting from
	    multiple instances.
	 2. Change log is rewritten, to my own format.
	 3. A new racing test suite is added.  The old racing test suite was
	    renamed as t-switching.
	 4. Redundant initialization of $LH->{"LOCALEDIRS"} in
	    bindtextdomain() is removed.
	 5. An old line at die_for_lookup_failures() which initialize a wrong
	    $LH->{"LOCALE"} is removed.
	 6. Removed 2 incorrect notice in the documentation.  There will not
	    be infinite loops for bindtextdomain() and textdomain(), whatever
	    value it takes.  Apparently I had made a mistake. ^^;
	 7. Several typos in the comments are fixed.
	 8. Sanity checks to the MO file is moved into readmo().  Cache now
	    has a higher precedence than the sanity checks, which conforms
	    with the global design.
	 9. More documentation was added to the SYNOPSIS.
	10. Sanity checks for whether a method is invoked as a static method
	    are added.  Maketext use static variables.  We should not clash
	    them.
	11. As a result of the above, the maketext method is no more static.
	    It is an instance method, meaning that MyPkg::L10N::en->maketext
	    does not work anymore.
	12. Instance lexicon is initialized in the new method.  I almost
	    forgot it.  Thanks to the test suite. :p

2003-04-25	version 0.02
	Class/object design fixes.
	 1. I did tell the difference from class variables to instance
	    variables.  Forgive me, I had no experience with object-oriented
	    programming at all, not even OO for perl. :p  Just a few Java
	    books.  Anyway, the problem with clashing class variables is
	    fixed.  Most class variables are moved into instance variables.
	 2. Solved the default output encoding problem by using the encoding
	    of the MO file as the default encoding.
	 3. reload_text method is added to purge the MO file cache, so that
	    applications do not need to be restarted when their MO file
	    updates.
         4. MO files of different byte orders are supported now.  Big-endian
            MO files support is added.
	 5. die_for_lookup_failures() method was added.  The default behavior
	    changed to "never fails", as GNU gettext does.
	 6. A test suite is added.

2003-04-24	version 0.01
