Personally I can strongly recommend Sphinx Document Generator:
- Free, Gratis & Open Source
- Cross platform
- One set of base files, in ReStructuredText format which are easily version controllable.
- Simple inclusion of screenshots, etc.
- Output formats: HTML (including Windows HTML Help), LaTeX (for printable PDF versions), ePub, Texinfo, manual pages, plain text.
- Mechanisms for Internationalisation where the text words & phrases are translated rather than the entire document.
- Multiple styles
- Automatic generation of Table of Contents, Index, Cross References, Glossary, Citations, etc.
- Multi-language & extensible syntax highlighting
- Used by 100s of projects so large user base and lots of support.
Notes on internationalisation
To expand on the internationalisation, often called I18N because it is a lot less to type, Sphinx uses the same tried and tested that the majority of open source projects have used since gettext was released in 1995.
You use a Message Catalogue Builder tool within Sphinx to produce a set of
pot files which are message catalogues, strictly portable object templates, containing words, phrases & paragraphs from your original document. Copies of these go off to the translator(s) for the desired language(s) who use a tool such as Pootle or poedit to provide their individual translations and return them as portable object,
.po files. Note that this can all be done collaboratively using services such as Transfex.
.po files are run through the gettext msgfmt tool to produce message objects,
.mo files. Once these have been added into your project, at a language specific location, you can run Sphinx again specifying the output language and your documents will be output in the requested language. Any missing translations will remain as the original text.
One of the big advantages of this approach is that if you make changes to your documents, as inevitably happens, the tool chain shows the translator(s) what is already translated and they only have to update the new/changed items and any incorrect items. Another is that you never have to maintain multiple copies of your source document, (usually this ends up as one per language), just of your translation files.
Workflow courtsey of the Sphinx web site, stick figure originally from XKCD commic
Diagrams & Charts
If your documentation includes diagrams with text you can use one of a number of Sphinx extensions, such as the Graphviz extensions to generate the diagrams automatically, in the case of Graphviz using the dot language, or you can Generate diagrams & charts by embedding some python in your document which will allow your diagrams & charts to be automatically updated at the time of building your document, you can even overlay text on images & photographs this way. The nice things with this is that you are embedding some text that produces the chart, etc., rather than embedding them directly which is better for both version control & internationalisation. There are also extensions for Google Charts & Maps