An Internationalized Software Project With Auto Tools |
Prev |
Overview |
Next |
Copyright (c) 2006 by Heinrich Eichmann.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
Texts. A copy of the license is included here.
Note: As in germany links to other pages are a high legal risk, this cource is link free. If you need more details or
want to download something mentioned here, use the internet search engine of your choice!
Feel free to send any comments to h.eichmann@gmx.de
Overview
This little documentation is the result of some experiments on how to write internationalized, documented and portable
software projects with gnu auto tool support. What does this mean?
- Software project: Some code has to be compiled into an executable file.
- Internationalized: All visible text output should be made in all languages, where this text was translated into. The
translations must be maintainable (with respect to changes in the source texts).
- Documented: A documentation should exists as well, which should be available in the same languages.
- Portable: The project should run on as many platforms as possible, not only unix/linux, but possibly also windows.
- Gnu auto tools: To support the developer, translator and the user, an easy to use build and install environment should exist.
To solve this requirements, the project was developed in C (or C++) with gettext, which allows the internationalization. The
documentation is written in docbook, which can be converted into html help. po4a is used to make the documentation
translatable as well. The portability is achieved with the wxWidgets toolkit and by choosing html help as help file target
format. The build environment is the gnu auto tools, e.g. automake, autoconf and friends.
Unfortunately the usage of the gnu auto tools is quite complicated.
Therefore much time was spent to set up these gnu auto tools properly. Most of this document is about using the gnu auto tools,
as all other aspects (coding, internationalization, documentation, portability) are nicely documented elsewhere.
The main topic here is: gnu auto tools.
Important note: The gnu auto tool support was made by reading documentation, searching the internet and loking into
other projects. The result configuration files may be wrong, as I am also a total auto tool beginner. If an expert
accidentially drops into these pages, any comment is welcome!
The project itself is developed step by step. Topics with higher interest are discussed first so that the reader might
stop reading, before the not so interesting parts begin. The general order is:
- Creating the project,
- adding auto tool support,
- adding libtool support,
- adding gettext support,
- adding the documentation,
- adding po4 a support and
- moving to wxWidgets
Also some minor steps, like correct internationalization or revision control are discussed. Note, that the steps are
performed on a FreeBSD with csh as a shell. On other operating systems the involved commands might be spelled different.
Other shells require different shell commands (like environment variable setting). The shell prompt in the
examples here is a hash ('#').
The contents of this document is split into:
A Simple C Project
Auto Tools Overview
Adding Auto Tools Support
Revision Control
Adding a Module
Adding libtool Support
gettext Overview
Adding gettext Support
Using gettext
Internationalization Tips
Documentation Overview
Adding HTML Help Documentation
Internationalization of the Documentation
wxWidgets Overview
Using wxWidgets
Compiling under windows
Conclusion
Prev |
Home |
Next |
|
|
A Simple C Project |