181 lines
7.2 KiB
Plaintext
181 lines
7.2 KiB
Plaintext
The @code{gettextize} program is an interactive tool that helps the
|
|
maintainer of a package internationalized through GNU @code{gettext}.
|
|
It is used for two purposes:
|
|
|
|
@itemize @bullet
|
|
@item
|
|
As a wizard, when a package is modified to use GNU @code{gettext} for
|
|
the first time.
|
|
|
|
@item
|
|
As a migration tool, for upgrading the GNU @code{gettext} support in
|
|
a package from a previous to a newer version of GNU @code{gettext}.
|
|
@end itemize
|
|
|
|
This program performs the following tasks:
|
|
|
|
@itemize @bullet
|
|
@item
|
|
It copies into the package some files that are consistently and
|
|
identically needed in every package internationalized through
|
|
GNU @code{gettext}.
|
|
|
|
@item It performs as many of the tasks mentioned in the next section
|
|
@ref{Adjusting Files} as can be performed automatically.
|
|
|
|
@item It removes obsolete files and idioms used for previous GNU
|
|
@code{gettext} versions to the form recommended for the current GNU
|
|
@code{gettext} version.
|
|
|
|
@item It prints a summary of the tasks that ought to be done manually
|
|
and could not be done automatically by @code{gettextize}.
|
|
@end itemize
|
|
|
|
It can be invoked as follows:
|
|
|
|
@pindex gettextize
|
|
@cindex @code{gettextize} program, usage
|
|
@example
|
|
gettextize [ @var{option}@dots{} ] [ @var{directory} ]
|
|
@end example
|
|
|
|
@noindent
|
|
and accepts the following options:
|
|
|
|
@table @samp
|
|
@item -c
|
|
@itemx --copy
|
|
@opindex -c@r{, @code{gettextize} option}
|
|
@opindex --copy@r{, @code{gettextize} option}
|
|
Copy the needed files instead of making symbolic links. Using links
|
|
would allow the package to always use the latest @code{gettext} code
|
|
available on the system, but it might disturb some mechanism the
|
|
maintainer is used to apply to the sources. Because running
|
|
@code{gettextize} is easy there shouldn't be problems with using copies.
|
|
|
|
@item -f
|
|
@itemx --force
|
|
@opindex -f@r{, @code{gettextize} option}
|
|
@opindex --force@r{, @code{gettextize} option}
|
|
Force replacement of files which already exist.
|
|
|
|
@item --intl
|
|
@opindex --intl@r{, @code{gettextize} option}
|
|
Install the libintl sources in a subdirectory named @file{intl/}.
|
|
This libintl will be used to provide internationalization on systems
|
|
that don't have GNU libintl installed. If this option is omitted,
|
|
the call to @code{AM_GNU_GETTEXT} in @file{configure.in} should read:
|
|
@samp{AM_GNU_GETTEXT([external])}, and internationalization will not
|
|
be enabled on systems lacking GNU gettext.
|
|
|
|
@item --no-changelog
|
|
@opindex --no-changelog@r{, @code{gettextize} option}
|
|
Don't update or create ChangeLog files. By default, @code{gettextize}
|
|
logs all changes (file additions, modifications and removals) in a
|
|
file called @samp{ChangeLog} in each affected directory.
|
|
|
|
@item -n
|
|
@itemx --dry-run
|
|
@opindex -d@r{, @code{gettextize} option}
|
|
@opindex --dry-run@r{, @code{gettextize} option}
|
|
Print modifications but don't perform them. All actions that
|
|
@code{gettextize} would normally execute are inhibited and instead only
|
|
listed on standard output.
|
|
|
|
@item --help
|
|
@opindex --help@r{, @code{gettextize} option}
|
|
Display this help and exit.
|
|
|
|
@item --version
|
|
@opindex --version@r{, @code{gettextize} option}
|
|
Output version information and exit.
|
|
|
|
@end table
|
|
|
|
If @var{directory} is given, this is the top level directory of a
|
|
package to prepare for using GNU @code{gettext}. If not given, it
|
|
is assumed that the current directory is the top level directory of
|
|
such a package.
|
|
|
|
The program @code{gettextize} provides the following files. However,
|
|
no existing file will be replaced unless the option @code{--force}
|
|
(@code{-f}) is specified.
|
|
|
|
@enumerate
|
|
@item
|
|
The @file{ABOUT-NLS} file is copied in the main directory of your package,
|
|
the one being at the top level. This file gives the main indications
|
|
about how to install and use the Native Language Support features
|
|
of your program. You might elect to use a more recent copy of this
|
|
@file{ABOUT-NLS} file than the one provided through @code{gettextize},
|
|
if you have one handy. You may also fetch a more recent copy of file
|
|
@file{ABOUT-NLS} from Translation Project sites, and from most GNU
|
|
archive sites.
|
|
|
|
@item
|
|
A @file{po/} directory is created for eventually holding
|
|
all translation files, but initially only containing the file
|
|
@file{po/Makefile.in.in} from the GNU @code{gettext} distribution
|
|
(beware the double @samp{.in} in the file name) and a few auxiliary
|
|
files. If the @file{po/} directory already exists, it will be preserved
|
|
along with the files it contains, and only @file{Makefile.in.in} and
|
|
the auxiliary files will be overwritten.
|
|
|
|
@item
|
|
Only if @samp{--intl} has been specified:
|
|
A @file{intl/} directory is created and filled with most of the files
|
|
originally in the @file{intl/} directory of the GNU @code{gettext}
|
|
distribution. Also, if option @code{--force} (@code{-f}) is given,
|
|
the @file{intl/} directory is emptied first.
|
|
|
|
@item
|
|
The files @file{config.rpath} and @file{mkinstalldirs} are copied into
|
|
the directory containing configuration support files. It is needed by
|
|
the @code{AM_GNU_GETTEXT} autoconf macro.
|
|
|
|
@item
|
|
Only if the project is using GNU @code{automake}:
|
|
A set of @code{autoconf} macro files is copied into the package's
|
|
@code{autoconf} macro repository, usually in a directory called @file{m4/}.
|
|
@end enumerate
|
|
|
|
If your site support symbolic links, @code{gettextize} will not
|
|
actually copy the files into your package, but establish symbolic
|
|
links instead. This avoids duplicating the disk space needed in
|
|
all packages. Merely using the @samp{-h} option while creating the
|
|
@code{tar} archive of your distribution will resolve each link by an
|
|
actual copy in the distribution archive. So, to insist, you really
|
|
should use @samp{-h} option with @code{tar} within your @code{dist}
|
|
goal of your main @file{Makefile.in}.
|
|
|
|
Furthermore, @code{gettextize} will update all @file{Makefile.am} files
|
|
in each affected directory, as well as the top level @file{configure.in}
|
|
or @file{configure.ac} file.
|
|
|
|
It is interesting to understand that most new files for supporting
|
|
GNU @code{gettext} facilities in one package go in @file{intl/},
|
|
@file{po/} and @file{m4/} subdirectories. One distinction between
|
|
@file{intl/} and the two other directories is that @file{intl/} is
|
|
meant to be completely identical in all packages using GNU @code{gettext},
|
|
while the other directories will mostly contain package dependent
|
|
files.
|
|
|
|
The @code{gettextize} program makes backup files for all files it
|
|
replaces or changes, and also write ChangeLog entries about these
|
|
changes. This way, the careful maintainer can check after running
|
|
@code{gettextize} whether its changes are acceptable to him, and
|
|
possibly adjust them. An exception to this rule is the @file{intl/}
|
|
directory, which is added or replaced or removed as a whole.
|
|
|
|
It is important to understand that @code{gettextize} can not do the
|
|
entire job of adapting a package for using GNU @code{gettext}. The
|
|
amount of remaining work depends on whether the package uses GNU
|
|
@code{automake} or not. But in any case, the maintainer should still
|
|
read the section @ref{Adjusting Files} after invoking @code{gettextize}.
|
|
|
|
It is also important to understand that @code{gettextize} is not part
|
|
of the GNU build system, in the sense that it should not be invoked
|
|
automatically, and not be invoked by someone who doesn't assume the
|
|
responsibilities of a package maintainer. For the latter purpose, a
|
|
separate tool is provided, see @ref{autopoint Invocation}.
|