The language packs (messages files) contributed by the community are available on github. They are managed outside of the core DSpace project to allow more regular updates and releases.
Aside from the message catalogs included in these projects, there is a number of other files that can be localized. These include help pages, input forms and email templates. They are currently kept here until they are moved into the message catalogs in the future.
If you supply new translations, make sure, they correspond to a stable release of DSpace and do not contain English tags nor references to your DSpace instance (e.g. name of your Institution). In partially translated Messages_xx.properties, just omit the untranslated tags. Messages.properties will be used as a fallback and untranslated tags are easier detectable with tools like the Eclipse Resource Bundle Editor if omitted.
Language | Locale | initial | 1.3.1 | 1.3.2 | 1.4 | 1.4.1 | 1.4.2 | 1.5 | 1.5.1 | 1.5.2 | 1.6.0 | 1.6.1 | 1.6.2 | 1.7.0 | 1.7.1 | 1.8.0 | 1.8.1 | 1.8.2 | 3.0 | 3.1 | 3.2 | 4.0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Basque | eu |
|
|
|
|
|
|
|
| X |
|
|
|
|
|
|
| |||||
Bulgarian | bg |
|
|
|
|
|
|
|
|
| X |
| X | X |
| X | X | |||||
Catalan | ca |
| x | x |
| X |
|
|
|
|
|
|
|
|
|
| ||||||
Chinese CN | zh_cn | X |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |||||
Chinese TW | zh_tw | X |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |||||
Czech | cs | X |
|
|
|
|
| X | X | X | X |
| X |
|
|
| ||||||
French | fr | X |
| X |
| X |
|
|
|
|
|
|
|
|
|
| ||||||
Galician | gl | X |
|
|
|
| X |
|
|
|
|
|
|
|
|
| ||||||
German | de | X |
|
| X | X | X | X | X | X | X | X | X | X | X | X | X | |||||
Greek | el | X |
|
| X |
|
|
|
|
|
|
|
|
|
|
|
| |||||
Hungarian | hu | X |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |||||
Indonesian | id | X |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |||||
Italian | it | X |
| X | X |
|
|
|
| X |
|
|
|
|
|
|
| |||||
Japanese | ja | X |
| X | X |
|
|
| X |
|
|
|
| X |
|
|
| |||||
Norwegian | no | X |
| X |
|
| X |
|
|
|
|
|
|
|
|
| ||||||
Polish | pl | X |
| X | X |
|
|
|
|
|
|
|
|
|
|
|
| |||||
Portuguese | pt |
|
|
|
|
|
| X | X |
|
|
|
|
|
|
|
| |||||
Portuguese PT | pt_PT | X |
|
| X |
|
| X | X | X |
|
|
|
|
|
|
| |||||
Portuguese BR | pt_BR | X |
| X |
|
|
| X |
|
|
|
|
|
|
|
|
| |||||
Russian | ru | X |
| X | X |
|
|
|
|
|
|
|
|
|
|
|
| |||||
Spanish | es | X |
|
|
| X |
|
| X |
|
|
|
|
|
|
|
| |||||
Swedish | sv | X |
|
| X |
|
| X | X |
|
|
|
|
|
|
|
| |||||
Thai | th |
|
|
|
|
| X |
| X |
|
|
|
|
|
|
|
| |||||
Ukrainian | uk |
|
|
|
| X |
|
|
| x |
|
|
|
|
|
| ||||||
Welsh | cy |
|
|
|
| X | X | X | X |
|
|
|
|
|
|
|
|
Language | Locale | 1.5 | 1.5.1 | 1.5.2 | 1.6.0 | 1.6.1 | 1.6.2 | 1.7.0 | 1.7.1 | 1.8.0 | 1.8.1 | 1.8.2 | 3.0 | 3.1 | 3.2 | 4.0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
German | de | x | x | x | x | x | x | x | x | x | x | |||||
Greek | el |
| x |
|
|
|
|
|
|
|
| |||||
Catalan | ca | x | x |
|
|
|
|
|
| x |
| |||||
Catalan (Central) | ca_ES |
|
| x |
|
|
|
|
|
|
| |||||
Czech | cs |
|
| x | x | x |
| x | x | x |
| |||||
Italian | it | x |
| x |
|
|
|
|
|
|
| |||||
Japanese | ja |
| x |
|
|
|
| x | x |
|
| |||||
Portuguese | pt_BR |
| x |
|
|
| x |
|
|
|
| |||||
Spanish | es | x | x |
|
|
|
| x | x |
|
|
Language (code) | Provided by | Status | Files | Comments |
---|---|---|---|---|
Simplified Chinese (chs) | JiehHsiang | open to review and extention | Based on v1.3.1 of Messages.properties | |
Traditional Chinese (cht) | JiehHsiang | open to review and extention | Based on v1.3.1 of Messages.properties |
File | French | German | Italian | Russian |
---|---|---|---|---|
all available files | ||||
|
| |||
|
| |||
|
|
| ||
|
| |||
|
|
|
| |
|
| |||
|
| |||
|
| |||
|
|
| ||
|
| |||
|
|
|
| |
|
|
|
| |
|
|
|
| |
|
|
|
| |
|
|
| ||
|
|
| ||
|
|
|
Language (code) | Provided by | Content | Files | Comments |
---|---|---|---|---|
Russian (ru) | Andrew Barhatov | State rubricator of scientific and technical information |
|
The Java Standard Tag Library v1.0 is used.
Basic steps for using Tags in a JSP:
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
config/Messages.properties
config/Messages_xx.properties
file. This must be done at build-time, because it is placed in the dspace.war.Old JSP
<h1>Search Results</h1> |
New JSP
<h1><fmt:message key="jsp.search.results.title" /></h1> |
Messages.properties
jsp.search.results.title = Search Results |
Phrases may have parameters to be passed in, to make the job of translating easier, reduce the number of 'keys' and to allow translators to make the translated text flow more appropriately for the target language.
Old JSP
<p>Results <%= r.getFirst() %> to <%= r.getLast() %> of <%= r.getTotal() %></p> |
New JSP
<fmt:message key="jsp.search.results.text"> <fmt:param><%= r.getFirst() %></fmt:param> <fmt:param><%= r.getLast() %></fmt:param> <fmt:param><%= r.getTotal() %></fmt:param> </fmt:message> |
Messages.properties
<p>jsp.search.results.text = Results \{0\}-\{1\} of \{2\}</p> |
(Note: JSTL 1.0 does not seem to allow JSP <%= %>
expressions to be passed in as values of attribute in <fmt:param value=""/>
)
The list of stop words is configured in DSAnalyzer.java. Like any other change in the DSpace source code, you are required to rebuild DSpace after modifying the list of stop words.
Given the English original (messages.xml or Messages.properties) and the corresponding translation file, this script will report both strings missing in the translation file and extra strings that shouldn't be in the translation. Tested on Python 2.7, requires ElementTree (wrapper for libxml2) for checking XML and/or jprops for testing .properties.
#!/usr/bin/env python import sys class MessagesXmlParser(): def __init__(self, filename): import xml.etree.ElementTree as etree self.keys = [] tree = etree.parse(filename) root = tree.getroot() for message in root: self.keys.append(message.attrib['key']) class MessagesPropertiesParser(): def __init__(self, filename): try: import jprops except: print('Error: jprops module for parsing .properties files is missing. Download and follow installation instructions from http://mgood.github.com/jprops/') sys.exit(2) self.keys = [] with open(filename) as fp: for key, value in jprops.iter_properties(fp): self.keys.append(key) if __name__ == "__main__": if len(sys.argv) != 3: print("Usage:") print(" %s messages.xml messages_XX.xml" % (sys.argv[0])) print("or") print(" %s Messages.properties Messages_XX.properties" % (sys.argv[0])) sys.exit(1) testfile = open(sys.argv[1], 'rb') if testfile.readline().find('<?xml') != -1: # xml file detected, assume messages.xml messages_tmpl = MessagesXmlParser(sys.argv[1]) messages_in = MessagesXmlParser(sys.argv[2]) else: # assume Messages.properties messages_tmpl = MessagesPropertiesParser(sys.argv[1]) messages_in = MessagesPropertiesParser(sys.argv[2]) print "Present in %s but missing in %s:" % (sys.argv[1], sys.argv[2]) for i in set(messages_tmpl.keys) - set(messages_in.keys): print i print "\nPresent in %s but missing in %s:" % (sys.argv[2], sys.argv[1]) for i in set(messages_in.keys) - set(messages_tmpl.keys): print i |
Here's a useful Perl script that finds all of the dictionary keys in the JSPs and the `Messages.properties` file, and prints out keys that are used in the JSPs but aren't in the dictionary, and vice versa. Missing File: Find-unused-keys.pl Note: slightly out of date, can't detect message keys used in e.g. LocaleSupport.getLocalizedMessage()
You'll need to change the variables at the top of the file to point to your DSpace source dir.
The Eclipse Resource Bundle Editor is a usefull tool to create and manage Messages.properties files. It is an "Eclipse plugin for editing Java resource bundles. Lets you manage all localized properties files in one screen. Some features: sorted keys, warning icons on missing keys/values, conversion to/from Unicode, hierarchical view of keys, more..."
The University of Patras in Greece have done the initial hard work of separating out text from the JSPs into a dictionary file and linking to it. MARTON Jozsef has build on this by parameterising the UI text.