Note: If you run Citadel and WebCit using the containerized (Docker) version, all language packs, gettext libraries, and UTF-8 locales are already installed and configured for you automatically out of the box. You will not need to manage host locales manually.
WebCit supports multilingual user interfaces through GNU gettext. In normal operation, WebCit negotiates the display language automatically based on each user's browser settings (the HTTP Accept-Language header) or individual user preferences.
If WebCit appears stuck on a single language regardless of client browser settings:
LANGUAGE environment variable is set in the shell or systemd service environment where WebCit was launched, it overrides per-user language negotiation. Unsetting LANGUAGE or ensuring it is not exported to the WebCit process resolves this.WEBCIT_LANG environment variable (for example, WEBCIT_LANG=de_DE.UTF-8) in your WebCit startup environment.To provide translations for users in languages other than English, the host operating system must have the corresponding UTF-8 locales generated.
On Debian, Ubuntu, and derivative systems, you can generate the required locales by running:
dpkg-reconfigure locales
Select the locales you wish to support (make sure to choose the .UTF-8 variants, such as es_ES.UTF-8, fr_FR.UTF-8, or de_DE.UTF-8), or edit /etc/locale.gen and run:
locale-gen
After generating new locales, restart WebCit so it can recognize them:
systemctl restart webcit-http systemctl restart webcit-https
For more details on how gettext evaluates locale variables, refer to the GNU gettext environment variables documentation.