The GNU Project’s website uses SSI (Server Side Includes) to manage some
common parts that are the same in many of the articles. With the help
of GNUN their handling should be behind the scenes, but for some of them
manual intervention is needed. Here is a (possibly incomplete) list of
This file contains only
#include directives, so the
“translation” should be identical, with filenames modified to have the
Contains the top menu with useful “skip to” links.
This is the file containing the menus, the FSF widget, and any visible announcements made from time to time. If a string gets “fuzzy” or “new” here, it will appear in English in all translations, until server/po/body-include-2.lang.po is updated. Note that some validation errors originate from an error in server/body-include-2.lang.html or some other template file.
A link to the FSF page explaining how to report possible copyright infringements.
This is a very short file currently containing the “back to top” link. Also translatable via GNUN.
The declaration that is included in literally every file. It is
maintained manually, as it does not make much sense to put it under
GNUN’s control (there are no translatable strings). Remember to specify
lang attributes, and for RTL
dir attribute. For example, the file
header.ar.html should contain this line:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ar" lang="ar" dir="rtl">
This file (included from server/header.html) is very important:
the encoding is defined here. Note that it is applicable for all
translations, so it is not possible to have different articles in
different encodings. Even if a specific PO file is deliberately encoded
in another encoding, the generated HTML will contain the encoding
declared in the
<meta> element at
server/head-include-1.lang.html, so browsers will obey it.
The encoding should be UTF-8. This is required because the English text in the articles serves as a replacement of the translation when the latter is not complete, and because all translated pages share automatically generated lists of translations.
This file is included in newer pages using some entities introduced in HTML5 draft. We have to distinguish those pages since some features of HTML4 were rejected in HTML5, and our old pages don’t validate as HTML5.
Likewise, this file replaces head-include-1.html for HTML5 pages.
Imports the standard CSS, which can be overridden. See CSS.
This is a very short and simple file (at least at the time of writing),
#include directive. It is maintained
manually, so just add lang to the filename, in order the localized
footer-text.lang.html to be included.
This file is automatically included in outdated translations. It contains respective message with links to the English file and to a generated difference of the current revision of the English file against the most recent revision that has a complete translation. It is only included in articles affected by “grace period” because in those cases the outdated passages are replaced with English text, and it is evident without any notices that there is no complete and up to date translation.
The text for a link to the end of the autogenerated list of translations.
The text saying that the page is a translation.
Some of the licenses have the text of the license itself separated in another file. This serves two purposes: 1) to provide a “standalone” HTML version of the license without the gnu.org style; 2) to prevent strings sneaking in the .pot files, as licenses have only unofficial translations, hosted elsewhere. Nothing special should be done about these SSI directives; the files generated by GNUN include them verbatim as they should not be translated.
in the server sub-directory are what webmasters call “the
server templates”. These files are included in almost every article,
translated or not. They are somewhat important, as an error made in
translating them propagates everywhere. The server templates, the
homepages, and whatsnew (a.k.a. “GNU News”) are being rebuilt by
GNUN whenever there is a change in the original English files; the
GRACE variable has no effect for them. See Runtime
Variables in The GNUnited Nations Manual.