mirror of
https://https.git.savannah.gnu.org/git/gettext.git
synced 2026-01-27 01:44:30 +00:00
A new program: 'autopoint'. For CVS users.
This commit is contained in:
parent
126ee51e39
commit
9b72042fac
@ -1,3 +1,8 @@
|
||||
2002-05-01 Bruno Haible <bruno@clisp.org>
|
||||
|
||||
* configure.in (AC_OUTPUT): Add misc/autopoint. Make misc/autopoint
|
||||
executable.
|
||||
|
||||
2002-05-01 Bruno Haible <bruno@clisp.org>
|
||||
|
||||
* INSTALL: Remove the recommendation to set CPPFLAGS and LDFLAGS.
|
||||
|
||||
8
NEWS
8
NEWS
@ -1,3 +1,11 @@
|
||||
Version 0.11.3 - May 2002
|
||||
|
||||
* New program:
|
||||
autopoint - copies standard gettext infrastructure
|
||||
|
||||
* The documentation makes it clear that 'gettextize' is a wizard and
|
||||
migration tool.
|
||||
|
||||
Version 0.11.2 - April 2002
|
||||
|
||||
* Bug fixes in the gettext.m4 autoconf macros.
|
||||
|
||||
@ -180,7 +180,7 @@ AC_OUTPUT([Makefile \
|
||||
tests/Makefile \
|
||||
m4/Makefile \
|
||||
projects/Makefile \
|
||||
misc/Makefile misc/gettextize], [
|
||||
misc/Makefile misc/gettextize misc/autopoint], [
|
||||
dnl Fix unesthetic build commands generated by automake.
|
||||
for m in lib/Makefile src/Makefile tests/Makefile; do
|
||||
sed -e "s,\`test -f \\\$< || echo '\\\$(srcdir)/'\`\\\$<,\\\$<," < $m > $m.tmp
|
||||
@ -196,6 +196,6 @@ AC_OUTPUT([Makefile \
|
||||
sed -e '/cd \$(srcdir) && rm -f /d' < $m > $m.tmp
|
||||
mv $m.tmp $m
|
||||
done
|
||||
dnl Fix permissions of misc/gettextize.
|
||||
chmod a+x misc/gettextize
|
||||
dnl Fix permissions of misc/gettextize and misc/autopoint.
|
||||
chmod a+x misc/gettextize misc/autopoint
|
||||
])
|
||||
|
||||
@ -1,3 +1,11 @@
|
||||
2002-05-01 Bruno Haible <bruno@clisp.org>
|
||||
|
||||
* gettextize.texi: New file, mostly extracted from gettext.texi.
|
||||
* autopoint.texi: New file.
|
||||
* gettext.texi (gettextize Invocation): Move to gettextize.texi.
|
||||
(CVS Issues): New section.
|
||||
* Makefile.am (gettext_TEXINFOS): Add gettextize.texi, autopoint.texi.
|
||||
|
||||
2002-04-28 Bruno Haible <bruno@clisp.org>
|
||||
|
||||
* gettext.texi (gettextize Invocation): Document option --dry-run.
|
||||
|
||||
@ -36,7 +36,7 @@ gettext_TEXINFOS = \
|
||||
xgettext.texi msginit.texi msgmerge.texi msgcat.texi msgconv.texi \
|
||||
msggrep.texi msgfilter.texi msguniq.texi msgcomm.texi msgcmp.texi \
|
||||
msgattrib.texi msgen.texi msgexec.texi msgfmt.texi msgunfmt.texi \
|
||||
iso-639.texi iso-3166.texi
|
||||
gettextize.texi autopoint.texi iso-639.texi iso-3166.texi
|
||||
|
||||
EXTRA_DIST = iso-639.sed iso-3166.sed ISO_639 ISO_3166 nls.texi matrix.texi texi2html
|
||||
|
||||
|
||||
61
doc/autopoint.texi
Normal file
61
doc/autopoint.texi
Normal file
@ -0,0 +1,61 @@
|
||||
@pindex autopoint
|
||||
@cindex @code{autopoint} program, usage
|
||||
@example
|
||||
autopoint [@var{option}]...
|
||||
@end example
|
||||
|
||||
The @code{autopoint} program copies standard gettext infrastructure files
|
||||
into a source package. It extracts from an assignment of the form
|
||||
@code{GETTEXT_VERSION=@var{version}}, found in the package's
|
||||
@file{configure.in} or @file{configure.ac} file, the gettext version
|
||||
used by the package, and copies the infrastructure files belonging to
|
||||
this version into the package.
|
||||
|
||||
@subsubsection Options
|
||||
|
||||
@table @samp
|
||||
@item -f
|
||||
@itemx --force
|
||||
@opindex -f@r{, @code{autopoint} option}
|
||||
@opindex --force@r{, @code{autopoint} option}
|
||||
Force overwriting of files that already exist.
|
||||
|
||||
@item -n
|
||||
@itemx --dry-run
|
||||
@opindex -d@r{, @code{autopoint} option}
|
||||
@opindex --dry-run@r{, @code{autopoint} option}
|
||||
Print modifications but don't perform them. All file copying actions that
|
||||
@code{autopoint} would normally execute are inhibited and instead only
|
||||
listed on standard output.
|
||||
|
||||
@end table
|
||||
|
||||
@subsubsection Informative output
|
||||
|
||||
@table @samp
|
||||
@item --help
|
||||
@opindex --help@r{, @code{autopoint} option}
|
||||
Display this help and exit.
|
||||
|
||||
@item --version
|
||||
@opindex --version@r{, @code{autopoint} option}
|
||||
Output version information and exit.
|
||||
|
||||
@end table
|
||||
|
||||
@code{autopoint} supports the GNU @code{gettext} versions from 0.10.35 to
|
||||
the current one, @value{VERSION}. In order to apply @code{autopoint} to
|
||||
a package using a @code{gettext} version newer than @value{VERSION}, you
|
||||
need to install this same version of GNU @code{gettext} at least.
|
||||
|
||||
In packages using GNU @code{automake}, an invocation of @code{autopoint}
|
||||
should be followed by invocations of @code{aclocal} and then @code{autoconf}
|
||||
and @code{autoheader}. The reason is that @code{autopoint} installs some
|
||||
autoconf macro files, which are used by @code{aclocal} to create
|
||||
@file{aclocal.m4}, and the latter is used by @code{autoconf} to create the
|
||||
package's @file{configure} script and by @code{autoheader} to create the
|
||||
package's @file{config.h.in} include file template.
|
||||
|
||||
The name @samp{autopoint} is an abbreviation of @samp{auto-po-intl-m4};
|
||||
the tool copies or updates mostly files in the @file{po}, @file{intl},
|
||||
@file{m4} directories.
|
||||
260
doc/gettext.texi
260
doc/gettext.texi
@ -267,6 +267,7 @@ The Maintainer's View
|
||||
* gettextize Invocation:: Invoking the @code{gettextize} Program
|
||||
* Adjusting Files:: Files You Must Create or Alter
|
||||
* autoconf macros:: Autoconf macros for use in @file{configure.in}
|
||||
* CVS Issues:: Integrating with CVS
|
||||
|
||||
Files You Must Create or Alter
|
||||
|
||||
@ -288,6 +289,12 @@ Autoconf macros for use in @file{configure.in}
|
||||
* AM_GNU_GETTEXT:: AM_GNU_GETTEXT in @file{gettext.m4}
|
||||
* AM_ICONV:: AM_ICONV in @file{iconv.m4}
|
||||
|
||||
Integrating with CVS
|
||||
|
||||
* Distributed CVS:: Avoiding version mismatch in distributed development
|
||||
* Files under CVS:: Files to put under CVS version control
|
||||
* autopoint Invocation:: Invoking the @code{autopoint} Program
|
||||
|
||||
Other Programming Languages
|
||||
|
||||
* Language Implementors:: The Language Implementor's View
|
||||
@ -5539,6 +5546,7 @@ for changes.
|
||||
* gettextize Invocation:: Invoking the @code{gettextize} Program
|
||||
* Adjusting Files:: Files You Must Create or Alter
|
||||
* autoconf macros:: Autoconf macros for use in @file{configure.in}
|
||||
* CVS Issues:: Integrating with CVS
|
||||
@end menu
|
||||
|
||||
@node Flat and Non-Flat, Prerequisites, Maintainers, Maintainers
|
||||
@ -5655,131 +5663,7 @@ never try to @emph{solve} a team's problem on your own.
|
||||
@node gettextize Invocation, Adjusting Files, Prerequisites, Maintainers
|
||||
@section Invoking the @code{gettextize} Program
|
||||
|
||||
Some files are consistently and identically needed in every package
|
||||
internationalized through GNU @code{gettext}. As a matter of
|
||||
convenience, the @code{gettextize} program puts all these files right
|
||||
in your package. This program has the following synopsis:
|
||||
|
||||
@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 ans 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 @file{config.rpath} file is copied into the directory containing
|
||||
configuration support files. It is needed by the @code{AM_GNU_GETTEXT}
|
||||
autoconf macro.
|
||||
|
||||
@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}.
|
||||
|
||||
It is interesting to understand that most new files for supporting
|
||||
GNU @code{gettext} facilities in one package go in @file{intl/}
|
||||
and @file{po/} subdirectories. One distinction between these two
|
||||
directories is that @file{intl/} is meant to be completely identical
|
||||
in all packages using GNU @code{gettext}, while all newly created
|
||||
files, which have to be different, go into @file{po/}. There is a
|
||||
common @file{Makefile.in.in} in @file{po/}, because the @file{po/}
|
||||
directory needs its own @file{Makefile}, and it has been designed so
|
||||
it can be identical in all packages.
|
||||
@include gettextize.texi
|
||||
|
||||
@node Adjusting Files, autoconf macros, gettextize Invocation, Maintainers
|
||||
@section Files You Must Create or Alter
|
||||
@ -6347,7 +6231,7 @@ In other packages, it can go into the @file{src} directory.
|
||||
Do not install the @code{gettext.h} file in public locations. Every
|
||||
package that needs it should contain a copy of it on its own.
|
||||
|
||||
@node autoconf macros, , Adjusting Files, Maintainers
|
||||
@node autoconf macros, CVS Issues, Adjusting Files, Maintainers
|
||||
@section Autoconf macros for use in @file{configure.in}
|
||||
@cindex autoconf macros for @code{gettext}
|
||||
|
||||
@ -6493,6 +6377,130 @@ library support, like SCO.
|
||||
@file{iconv.m4} is distributed with the GNU gettext package because
|
||||
@file{gettext.m4} relies on it.
|
||||
|
||||
@node CVS Issues, , autoconf macros, Maintainers
|
||||
@section Integrating with CVS
|
||||
|
||||
Many projects use CVS for distributed development, version control and
|
||||
source backup. This section gives some advice how to manage the uses
|
||||
of @code{cvs}, @code{gettextize}, @code{autopoint} and @code{autoconf}.
|
||||
|
||||
@menu
|
||||
* Distributed CVS:: Avoiding version mismatch in distributed development
|
||||
* Files under CVS:: Files to put under CVS version control
|
||||
* autopoint Invocation:: Invoking the @code{autopoint} Program
|
||||
@end menu
|
||||
|
||||
@node Distributed CVS, Files under CVS, CVS Issues, CVS Issues
|
||||
@subsection Avoiding version mismatch in distributed development
|
||||
|
||||
In a project development with multiple developers, using CVS, there
|
||||
should be a single developer who occasionally - when there is desire to
|
||||
upgrade to a new @code{gettext} version - runs @code{gettextize} and
|
||||
performs the changes listed in @ref{Adjusting Files}, and then commits
|
||||
his changes to the CVS.
|
||||
|
||||
It is highly recommended that all developers on a project use the same
|
||||
version of GNU @code{gettext} in the package. In other words, if a
|
||||
developer runs @code{gettextize}, he should go the whole way, make the
|
||||
necessary remaining changes and commit his changes to the CVS.
|
||||
Otherwise the following damages will likely occur:
|
||||
|
||||
@itemize @bullet
|
||||
@item
|
||||
Apparent version mismatch between developers. Since some @code{gettext}
|
||||
specific portions in @file{configure.in}, @file{configure.ac} and
|
||||
@code{Makefile.am}, @code{Makefile.in} files depend on the @code{gettext}
|
||||
version, the use of infrastructure files belonging to different
|
||||
@code{gettext} versions can easily lead to build errors.
|
||||
|
||||
@item
|
||||
Hidden version mismatch. Such version mismatch can also lead to
|
||||
malfunctioning of the package, that may be undiscovered by the developers.
|
||||
The worst case of hidden version mismatch is that internationalization
|
||||
of the package doesn't work at all.
|
||||
|
||||
@item
|
||||
Release risks. All developers implicitly perform constant testing on
|
||||
a package. This is important in the days and weeks before a release.
|
||||
If the guy who makes the release tar files uses a different version
|
||||
of GNU @code{gettext} than the other developers, the distribution will
|
||||
be less well tested than if all had been using the same @code{gettext}
|
||||
version. For example, it is possible that a platform specific bug goes
|
||||
undiscovered due to this constellation.
|
||||
@end itemize
|
||||
|
||||
@node Files under CVS, autopoint Invocation, Distributed CVS, CVS Issues
|
||||
@subsection Files to put under CVS version control
|
||||
|
||||
There are basically three ways to deal with generated files in the
|
||||
context of a CVS repository, such as @file{configure} generated from
|
||||
@file{configure.in}, @code{@var{parser}.c} generated from
|
||||
@code{@var{parser}.y}, or @code{po/Makefile.in.in} autoinstalled by
|
||||
@code{gettextize} or @code{autopoint}.
|
||||
|
||||
@enumerate
|
||||
@item
|
||||
All generated files are always committed into the repository.
|
||||
|
||||
@item
|
||||
All generated files are committed into the repository occasionally,
|
||||
for example each time a release is made.
|
||||
|
||||
@item
|
||||
Generated files are never committed into the repository.
|
||||
@end enumerate
|
||||
|
||||
Each of these three approaches has different advantages and drawbacks.
|
||||
|
||||
@enumerate
|
||||
@item
|
||||
The advantage is that anyone can check out the CVS at any moment and
|
||||
gets a working build. The drawbacks are: 1a. It requires some frequent
|
||||
"cvs commit" actions by the maintainers. 1b. The reposity grows in size
|
||||
quite fast.
|
||||
|
||||
@item
|
||||
The advantage is that anyone can check out the CVS, and the usual
|
||||
"./configure; make" will work. The drawbacks are: 2a. The one who
|
||||
checks out the repository needs tools like GNU @code{automake},
|
||||
GNU @code{autoconf}, GNU @code{m4} installed in his PATH; sometimes
|
||||
he even needs particular versions of them. 2b. When a release is made
|
||||
and a commit is made on the generated files, the other developers get
|
||||
conflicts on the generated files after doing "cvs update". Although
|
||||
these conflicts are easy to resolve, they are annoying.
|
||||
|
||||
@item
|
||||
The advantage is less work for the maintainers. The drawback is that
|
||||
anyone who checks out the CVS not only needs tools like GNU @code{automake},
|
||||
GNU @code{autoconf}, GNU @code{m4} installed in his PATH, but also that
|
||||
he needs to perform a package specific pre-build step before being able
|
||||
to "./configure; make".
|
||||
@end enumerate
|
||||
|
||||
For the first and second approach, all files modified or brought in
|
||||
by the occasional @code{gettextize} invocation and update should be
|
||||
committed into the CVS.
|
||||
|
||||
For the third approach, the maintainer can omit from the CVS repository
|
||||
all the files that @code{gettextize} mentions as "copy". Instead, he
|
||||
adds to the @file{configure.in} or @file{configure.ac} a line of the
|
||||
form
|
||||
|
||||
@example
|
||||
GETTEXT_VERSION=@value{VERSION}
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
and adds to the package's pre-build script an invocation of
|
||||
@samp{autopoint}. For everyone who checks out the CVS, this
|
||||
@code{autopoint} invocation will copy into the right place the
|
||||
@code{gettext} infrastructure filss that have been omitted from the CVS.
|
||||
|
||||
@node autopoint Invocation, , Files under CVS, CVS Issues
|
||||
@subsection Invoking the @code{autopoint} Program
|
||||
|
||||
@include autopoint.texi
|
||||
|
||||
@node Programming Languages, Conclusion, Maintainers, Top
|
||||
@chapter Other Programming Languages
|
||||
|
||||
|
||||
180
doc/gettextize.texi
Normal file
180
doc/gettextize.texi
Normal file
@ -0,0 +1,180 @@
|
||||
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}.
|
||||
@ -1,3 +1,16 @@
|
||||
2002-05-01 Bruno Haible <bruno@clisp.org>
|
||||
|
||||
* autopoint-files: New directory.
|
||||
* add-to-autopoint-files: New file.
|
||||
* autopoint.in: New file.
|
||||
* Makefile.am (EXTRA_DIST): Add add-to-autopoint-files.
|
||||
(DISTCLEANFILES): Add autopoint.
|
||||
(gettextsrcdir): New variable.
|
||||
(gettextsrc_DATA): New variable.
|
||||
(archive.tar.gz): New rule.
|
||||
* gettextize.in: Bump GETTEXT_VERSION value in configure.in.
|
||||
Ask maintainer to acknowledge the remaining changes.
|
||||
|
||||
2002-04-28 Bruno Haible <bruno@clisp.org>
|
||||
|
||||
* gettextize.in: Avoid the remarks about po/Makevars and config.guess
|
||||
|
||||
@ -19,8 +19,14 @@
|
||||
|
||||
AUTOMAKE_OPTIONS = 1.2 gnits
|
||||
|
||||
EXTRA_DIST = gettext.perl gettext-sh tcl_gettext.c README-Tcl po-mode.el
|
||||
DISTCLEANFILES = gettextize
|
||||
EXTRA_DIST = gettext.perl gettext-sh tcl_gettext.c README-Tcl add-to-autopoint-files $(lisp_LISP)
|
||||
DISTCLEANFILES = gettextize autopoint
|
||||
lisp_LISP = po-mode.el po-compat.el
|
||||
|
||||
bin_SCRIPTS = gettextize
|
||||
bin_SCRIPTS = gettextize autopoint
|
||||
|
||||
gettextsrcdir = $(datadir)/gettext
|
||||
gettextsrc_DATA = archive.tar.gz
|
||||
|
||||
archive.tar.gz:
|
||||
(cd autopoint-files && tar cf - `find archive -type f | grep -v /CVS/`) | gzip -c -9 > $@
|
||||
|
||||
@ -31,6 +31,10 @@ func_usage ()
|
||||
{
|
||||
echo "\
|
||||
Usage: gettextize [OPTION]... [package-dir]
|
||||
|
||||
Prepares a source package to use gettext.
|
||||
|
||||
Options:
|
||||
--help print this help and exit
|
||||
--version print version information and exit
|
||||
-c, --copy copy files instead of making symlinks
|
||||
@ -38,6 +42,7 @@ Usage: gettextize [OPTION]... [package-dir]
|
||||
--intl install libintl in a subdirectory
|
||||
--no-changelog don't update or create ChangeLog files
|
||||
-n, --dry-run print modifications but don't perform them
|
||||
|
||||
Report bugs to <bug-gnu-gettext@gnu.org>."
|
||||
}
|
||||
|
||||
@ -862,6 +867,8 @@ sed -e 's%sed -e "/POTFILES =/r po/POTFILES" po/Makefile\.in > po/Makefile *;* *
|
||||
func_modify_configure_in "(AC_OUTPUT): Remove command that created po/Makefile."
|
||||
sed -e '/^\(dnl \|\)AC_LINK_FILES(\$nls_cv_header_libgt, \$nls_cv_header_intl)$/d' < "$srcdir/$configure_in" > "$srcdir/$configure_in.tmp"
|
||||
func_modify_configure_in "(AC_LINK_FILES): Remove invocation."
|
||||
sed -e 's/^GETTEXT_VERSION=\([-+_.0-9A-Za-z]*\)/GETTEXT_VERSION='"$version"'/' < "$srcdir/$configure_in" > "$srcdir/$configure_in.tmp"
|
||||
func_modify_configure_in "(GETTEXT_VERSION): Bump to $version."
|
||||
$do_changelog && func_ChangeLog_finish
|
||||
|
||||
# Recommend replacement for deprecated Makefile variables.
|
||||
@ -946,6 +953,20 @@ if $doit; then
|
||||
echo "It is a wrapper around <libintl.h> that implements the configure --disable-nls"
|
||||
echo "option."
|
||||
echo
|
||||
count=`echo "$please" | grep '^$' | wc -l`
|
||||
count=`echo "$count" | sed -e 's/[ ]//g'`
|
||||
case "$count" in
|
||||
1) count="paragraph";;
|
||||
2) count="two paragraphs";;
|
||||
3) count="three paragraphs";;
|
||||
4) count="four paragraphs";;
|
||||
5) count="five paragraphs";;
|
||||
*) count="$count paragraphs";;
|
||||
esac
|
||||
echo "Press Return to acknowledge the previous $count."
|
||||
# Read from /dev/tty, not stdin, so that gettextize cannot be abused by
|
||||
# non-interactive tools.
|
||||
read < /dev/tty
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user