DSpace supports a number of languages & you can even add your own translation. This may also be referred to as Localization (l10n) or Internationalization (i18n).
Multilingual Support on the Backend (REST API)
In order to deploy a multilingual version of DSpace you have to configure two parameters in
- default.locale, e.g.
default.locale = en
- webui.supported locales, e.g.
webui.supported.locales = en, de
The Locales might have the form country, country_language, country_language_variant.
According to the languages you wish to support, you have to make sure that all the i18n related files are available.
Where to find the message catalog
The latest English message catalog is part of the main DSpace distribution and can be found at:
The different translations for this message catalog are being managed separately from the DSpace core project, in order to release updates for these files more frequently than the DSpace software itself. Visit the dspace-api-lang project on Github.
Where to edit the message catalog
In some cases you may want to add additional keys to the message catalog or changing the particular wording of DSpace concepts. For example, you may want to change "Communities" into "Departments". These kind of changes may get automatically overwritten again when you upgrade to the newest version of DSpace. It is therefore advised to keep such changes isolated in the following location:
After rebuilding DSpace, any messages files placed in this directory will be automatically included in the Server web application. Files of the same name will override any default files. By default, this full directory path may not exist or may be empty. If it does not exist, you can simply create it. You can place any number of translation catalogues in this directory. To add additional translations, just add another copy of the Messages.properties file translated into the specific language and country variant you need.
For more information about the
[dspace-source]/dspace/modules/ directory, and how it may be used to "overlay" (or customize) the default Server Webapp, classes and files, please see: Advanced Customisation
Localization of email messages
All email templates used by DSpace can be found in
The contents of the emails can be edited and translated.
DSpace associates each metadata field value with a language code (though it may be left empty, e.g. for numeric values).
Localization of submission-forms.xml
The display labels for submission-forms.xml are currently not managed in the messages catalogs. To localize this file, you can create versions of this file in the same folders, appending _COUNTRY at the end of the filename, before the extension. For example,
submission-forms_de.xml can be used to translate the submission form labels in German.
There is a known bug that any translated submission forms (e.g. submission-forms_de.xml) must include all the form-definitions available in the system. When they are not all included, DSpace will fall back to the default submission forms / locale. See https://github.com/DSpace/DSpace/issues/2827
Localization of license.default
The text in the default submission license (license.default) is currently not managed in the messages catalogs. It is translatable by appending _COUNTRY at the end of the filename, before the extension like for the localization of the input-forms.xml.
Multilingual Support on the Frontend (UI)
By default, DSpace will look at the user's browser language. If it has a language file in the user's language, it will render the interface in that language. If not, it will default to English or another default that you have configured.
The User Interface translations can be found in the
/src/assets/i18n/ folder of your UI's codebase. You can add additional translations & contribute them back to the project. For details see DSpace 7 Translation - Internationalization (i18n) - Localization (l10n)
All translations of the UI are provided in JSON5 format, which includes support for inline comments.
You can choose which languages you wish to enable/support in your UI by modifying the language section of your config.prod.yml file, which in turn, will generate a section like this in your
environment.prod.ts configuration file:
As shown above, the "defaultLanguage" is the language that your UI will use by default , if the user's browser has not specified a preferred language
The array of "languages" are all of the additional languages you wish to support.
- The "code" must match the prefix of a
*.json5language file located in your
- The "label" is the text you want to display in the UI language selector (the globe in the header)
- The "active" setting allows you to decide whether that language appears in the UI language selector or not.
Any changes to the language settings require rebuilding & redeploying your UI.