Documentation for JIRA 4.3. Documentation for other versions of JIRA is available too.

JIRA (and most Java applications in general) determine what internationalization package to use by inheriting the System Locale, which is provided by the underlying operating system to the JAVA JVM. The language_default.jar is only chosen when the inherited locale does not map to any of the included languages.

This means that if you modify language_default.jar instead of your specific language pack (e.g. language_en_UK.jar) then you will need to remove language_en_UK.jar for JIRA to then default back to the modified language_default.jar.

Most user-accessible pages in JIRA have been 'internationalized', meaning the pages will display in the user's preferred language. All text snippets on JIRA pages are stored centrally in 'properties' files, separate from the pages they occur in. There is one set of properties files for each language, and one default (English) set.

This centralized storage of text snippets makes it easy to change some text in JIRA to anything you like. This page describes how it can be done.

Say we wish to reduce the verbosity of the 'view issue' page's text, from:

  • Assign this issue
  • Attach file to this issue
  • Attach screenshot to this issue
  • Comment on this issue
  • Delete this issue
  • Edit this issue
  • Link this issue to another issue
  • Move this issue to another project
to:
  • Assign
  • Attach file
  • Attach screenshot
  • Add Comment
  • Delete
  • Edit
  • Link to another issue
  • Move to another project
Properties files are stored in a packaged (jar) format in atlassian-jira/WEB-INF/lib:

[atlassian-jira-professional-2.6.1-standalone-tomcat ~/atlassian-jira/WEB-INF/lib]$ ls \-1 language\*
language_da_DK.jar
language_de_DE.jar
language_default.jar
language_en_UK.jar
language_pt_BR.jar
language_ru_RU.jar

We wish to extract the contents of one of these for editing. To do this, go to the atlassian-jira/WEB-INF/classes directory, and unzip the relevant file:

(info) jar files are actually zip files, so you can use a tool like WinZip to extract their contents. Here we use the 'jar' command that comes with Java

[atlassian-jira-enterprise-4.0.1-standalone/atlassian-jira/WEB-INF/lib]$ jar xvf language_default.jar 
  created: META-INF/
 inflated: META-INF/MANIFEST.MF
  created: com/
  created: com/atlassian/
  created: com/atlassian/jira/
  created: com/atlassian/jira/web/
  created: com/atlassian/jira/web/action/
 inflated: com/atlassian/jira/web/action/JiraWebActionSupport.properties

* If you are using the WAR/Webapp distribution of JIRA, you should extract the jar from webapp/WEB-INF/lib to edit-webapp/WEB-INF/classes and remove the webapp/WEB-INF/lib/language_default.jar and (if using English) webapp/WEB-INF/lib/language_en_UK.jar (using the correct jar for your language).

  • If you are using the standalone distribution of JIRA and you are running JIRA in an English locale, you should extract the jar from webapp/WEB-INF/lib to edit-webapp/WEB-INF/classes and remove the webapp/WEB-INF/lib/language_default.jar and webapp/WEB-INF/lib/language_en_UK.jar
  • If you are using the standalone distribution of JIRA and you are running JIRA in an non-English locale, you should extract the jar from webapp/WEB-INF/lib to edit-webapp/WEB-INF/classes and remove the webapp/WEB-INF/lib/language_default.jar only. Do not remove webapp/WEB-INF/lib/language_en_UK.jar, otherwise your users will not be able to select English as a language (See JRA-8266 for further details). You will need to update the text you wish to replace in the properties files (described in the next step) for both the language_default.jar and the language_en_UK.jar, for your changes to be reflected in JIRA.

Now search for the text you wish to replace. You will find most strings defined in com/atlassian/jira/web/action/JiraWebActionSupport.properties. The ones we are interested in are:

# issue operations
issue.operations.assign = {0}Assign{1} this issue
issue.operations.assign.tome = to me
issue.operations.attach = {0}Attach file{1} to this issue
issue.operations.attachscreenshot = {0}Attach screenshot{1} to this issue
issue.operations.comment = {0}Comment{1} on this issue
issue.operations.delete = {0}Delete{1} this issue
issue.operations.edit = {0}Edit{1} this issue
issue.operations.link = {0}Link{1} this issue to another issue
issue.operations.move = {0}Move{1} this issue to another project

In the text, {0} and {1} indicate sections that will be replaced by JIRA (here, the beginning and end of links), and should not be removed. Edit the text to look like:

# issue operations
issue.operations.assign = {0}Assign{1}
issue.operations.assign.tome = to me
issue.operations.attach = {0}Attach file{1}
issue.operations.attachscreenshot = {0}Attach screenshot{1}
issue.operations.comment = {0}Comment{1}
issue.operations.delete = {0}Delete{1}
issue.operations.edit = {0}Edit{1}
issue.operations.link = {0}Link{1} to another issue
issue.operations.move = {0}Move{1} this issue to another project

Standalone - Restart JIRA.
Webapp edition - Rebuild JIRA as per your App Server using the build scripts and restart the application server.
If you are deploying a .war to Tomcat - please note that Tomcat unpacks .war files into the webapps/ directory. Delete this directory (eg. webapps/ROOT between redeploys, or this old webapp will be deployed.

The changes should be visible when next you view the page.

  • No labels