Locale::Maketext::Gettext - Joins the gettext and Maketext frameworks
=====================================================================

Locale::Maketext::Gettext joins the [GNU gettext] and [Maketext]
frameworks.  It is a subclass of Locale::Maketext that follows the
way GNU gettext works.  It works seamlessly, both in the sense of
GNU gettext and Maketext.  As a result, you enjoy both their
advantages, and get rid of both their problems, too.

You start as a usual GNU gettext localization project:  Work on
PO files with the help of translators, reviewers and Emacs.  Turn
them into MO files with `msgfmt`.  Copy them into the appropriate
locale directory, such as
`/usr/share/locale/de/LC_MESSAGES/myapp.mo`.

Then, build your Maketext localization class, with your base class
changed from Locale::Maketext to Locale::Maketext::Gettext.  That's
all. ^_*'

[GNU gettext]: https://www.gnu.org/software/gettext/
[Maketext]: https://perldoc.perl.org/Locale::Maketext


Locale::Maketext::Gettext::Functions
------------------------------------

Locale::Maketext::Gettext::Functions is a functional
interface to Locale::Maketext::Gettext (and Locale::Maketext).
It works completely the GNU gettext way.  It plays magic to
Locale::Maketext.  No more localization class/subclasses and language
handles are required.


The `maketext` script
---------------------

The `maketext` script is a command-line interface to
Locale::Maketext::Gettext (and Locale::Maketext).  It can be used in
shell scripts, etc, to translate, maketext and return the
result.  It enables Maketext to be integrated into other programming
languages/systems, like bash/csh, python, PHP, C, etc.  It works
like the command-line program `gettext`.


System Requirements
-------------------

1. Perl, version 5.8.0 or above.  Locale::Maketext::Gettext uses the
   utf8 text internally that is only available since 5.8.0.  You can
   run `perl -v` to see your current Perl version.  If you don't have
   Perl, or if you have an older version of Perl, you can download and
   install/upgrade it from the [Perl website].  If you are using
   MS-Windows, you can download and install [ActiveState ActivePerl].

2. Required Perl modules: None.

3. Optional Perl modules: None.

[Perl website]: https://www.perl.org
[ActiveState ActivePerl]: https://www.activestate.com


Download
--------

Locale::Maketext::Gettext is hosted is on…

* [Locale-Maketext-Gettext on GitHub]

* [Locale-Maketext-Gettext on MetaCPAN]

[Locale-Maketext-Gettext on GitHub]: https://github.com/imacat/Locale-Maketext-Gettext
[Locale-Maketext-Gettext on MetaCPAN]: https://metacpan.org/release/Locale-Maketext-Gettext


Install
-------

### Install with [ExtUtils::MakeMaker]

Locale-Maketext-Gettext uses standard Perl installation with
ExtUtils::MakeMaker.  Follow these steps:

    % perl Makefile.PL
    % make
    % make test
    % make install

When running `make install`, make sure you have the privilege to write
to the installation location.  This usually requires the `root`
privilege.

If you are using ActivePerl under MS-Windows, you should use `nmake`
instead of `make`.  [nmake can be obtained from the Microsoft FTP site.]

If you want to install into another location, you can set the
`PREFIX`.  For example, to install into your home when you are not
`root`:

    % perl Makefile.PL PREFIX=/home/jessica

Refer to the documentation of ExtUtils::MakeMaker for more
installation options (by running perldoc ExtUtils::MakeMaker).


### Install with [Module::Build]

You can install with Module::Build instead, if you prefer.  Follow
these steps:

    % perl Build.PL
    % ./Build
    % ./Build test
    % ./Build install

When running `./Build install`, make sure you have the privilege to
write to the installation location.  This usually requires the `root`
privilege.

If you want to install into another location, you can set the
`--prefix`.  For example, to install into your home when you are not
``root``:

    % perl Build.PL --prefix=/home/jessica

Refer to the documentation of Module::Build for more
installation options (by running perldoc Module::Build).


### Install with the CPAN Shell

You can install with the CPAN shell, if you prefer.  CPAN shell
takes care of ExtUtils::MakeMaker and Module::Build for you:

    % cpan Locale::Maketext::Gettext

Make sure you have the privilege to write to the installation
location.  This usually requires the `root` privilege.  Since CPAN
shell 1.81 you can set `make_install_make_command` and
`mbuild_install_build_command` in your CPAN configuration to switch
to `root` just before install:

    % cpan
    cpan> o conf make_install_make_command "sudo make"
    cpan> o conf mbuild_install_build_command "sudo ./Build"
    cpan> install Locale::Maketext::Gettext

If you want to install into another location, you can set `makepl_arg`
and `mbuild_arg` in your CPAN configuration.  For example, to install
into your home when you are not `root`:

    % cpan
    cpan> o conf makepl_arg "PREFIX=/home/jessica"
    cpan> o conf mbuild_arg "--prefix=/home/jessica"
    cpan> install Locale::Maketext::Gettext

Refer to the documentation of cpan for more CPAN shell commands
(by running perldoc cpan).


### Install with the CPANPLUS Shell

You can install with the CPANPLUS shell, if you prefer.  CPANPLUS
shell takes care of ExtUtils::MakeMaker and Module::Build for you:

    % cpanp -i Locale::Maketext::Gettext

Make sure you have the privilege to write to the installation
location.  This usually requires the `root` privilege.

If you want to install into another location, you can set
`makemakerflags` and `buildflags` in your CPANPLUS configuration.
For example, to install into your home when you are not `root`:

    % cpanp
    CPAN Terminal> s conf makemakerflags "PREFIX=/home/jessica"
    CPAN Terminal> s conf buildflags "--prefix=/home/jessica"
    CPAN Terminal> install Locale::Maketext::Gettext

Refer to the documentation of `cpanp` for more CPANPLUS shell
commands (by running `perldoc cpanp`).

[ExtUtils::MakeMaker]: https://metacpan.org/release/ExtUtils-MakeMaker
[nmake can be obtained from the Microsoft FTP site.]: ftp://ftp.microsoft.com/Softlib/MSLFILES/nmake15.exe
[Module::Build]: https://metacpan.org/release/Module-Build


Source
------

Source is now on Github.  See
https://github.com/imacat/Locale-Maketext-Gettext.


Support
-------

The Locale-Maketext-Gettext project is hosted on GitHub.  Address your
issues on the GitHub issue tracker
https://github.com/imacat/Locale-Maketext-Gettext/issues.


News, Changes and Updates
-------------------------

Refer to the Changes for changes, bug fixes, updates, new functions, etc.


Thanks
------

* Thanks to [Max Maischein] for reporting CPAN tester failures 200029,
  200332 and 200331, that helps me find the shell character escape
  problem on my test suite.

* Thanks to [Andreas Koenig] for reporting CPAN tester failures 387357
  and submitting [rt bug 23956], informing me the base class
  Locale::Maketext has updated its error handling behavior in the Perl
  5.9.

* Thanks to [Chris Travers] for suggestion to implement `pgettext()`
  in GNU gettext as `pmaketext()`.

[Max Maischein]: mailto:corion@corion.net
[Andreas Koenig]: mailto:andk@cpan.org
[rt bug 23956]: https://rt.cpan.org/Public/Bug/Display.html?id=23956
[Chris Travers]: mailto:chris.travers@gmail.com


To Do
-----

* Design a way to install the MO file through ExtUtils::MakeMaker and
  Module::Build.


Copyright
---------

    Copyright (c) 2003-2021 imacat. All rights reserved. This program is free
    software; you can redistribute it and/or modify it under the same terms
    as Perl itself.
