Customizing text

JIRA Documentation

Index

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:

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-professional-2.6.1-standalone-tomcat ~/atlassian-jira/WEB-INF/lib]$ cd ../classes
[atlassian-jira-professional-2.6.1-standalone-tomcat ~/atlassian-jira/WEB-INF/classes]$ jar xvf ../lib/language_default.jar
 created: META-INF/
extracted: META-INF/MANIFEST.MF
 inflating: language-descriptor.xml
 created: com/
 created: com/atlassian/
 created: com/atlassian/jira/
 created: com/atlassian/jira/web/
 created: com/atlassian/jira/web/action/
 created: com/atlassian/jira/web/action/filter/
 created: com/atlassian/jira/web/action/issue/
 created: com/atlassian/jira/web/action/portal/
 created: com/atlassian/jira/web/action/setup/
 created: com/atlassian/jira/web/action/user/
extracted: com/atlassian/jira/web/action/filter/ManageFilters.properties
extracted: com/atlassian/jira/web/action/AbstractViewIssueColumns.properties
extracted: com/atlassian/jira/web/action/Dashboard.properties
extracted: com/atlassian/jira/web/action/IssueActionSupport.properties
extracted: com/atlassian/jira/web/action/JiraWebActionSupport.properties
extracted: com/atlassian/jira/web/action/issue/AbstractCommentableIssue.properties
extracted: com/atlassian/jira/web/action/issue/AbstractIssueSelectAction.properties
extracted: com/atlassian/jira/web/action/issue/AddComment.properties
extracted: com/atlassian/jira/web/action/issue/AssignIssue.properties
extracted: com/atlassian/jira/web/action/issue/AttachFile.properties
extracted: com/atlassian/jira/web/action/issue/CreateIssue.properties
extracted: com/atlassian/jira/web/action/issue/DeleteIssue.properties
extracted: com/atlassian/jira/web/action/issue/EditIssue.properties
extracted: com/atlassian/jira/web/action/issue/IssueNavigator.properties
extracted: com/atlassian/jira/web/action/issue/LinkExistingIssue.properties
extracted: com/atlassian/jira/web/action/issue/LogWork.properties
extracted: com/atlassian/jira/web/action/issue/MoveIssue.properties
extracted: com/atlassian/jira/web/action/issue/ResolveIssue.properties
extracted: com/atlassian/jira/web/action/issue/ManageAttachments.properties
extracted: com/atlassian/jira/web/action/portal/AbstractConfigurePortal.properties
extracted: com/atlassian/jira/web/action/setup/AbstractSetupAction.properties
extracted: com/atlassian/jira/web/action/setup/Setup.properties
extracted: com/atlassian/jira/web/action/setup/Setup2.properties
extracted: com/atlassian/jira/web/action/setup/Setup3.properties
extracted: com/atlassian/jira/web/action/setup/Setup2Existing.properties
extracted: com/atlassian/jira/web/action/user/AddPortlet.properties
extracted: com/atlassian/jira/web/action/user/ChangePassword.properties
extracted: com/atlassian/jira/web/action/user/ConfigurePortal.properties
extracted: com/atlassian/jira/web/action/user/EditProfile.properties
extracted: com/atlassian/jira/web/action/user/UserVotes.properties
extracted: com/atlassian/jira/web/action/user/UserWatches.properties
extracted: com/atlassian/jira/web/action/user/ViewProfile.properties
[atlassian-jira-professional-2.6.1-standalone-tomcat ~/atlassian-jira/WEB-INF/classes]$

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).

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 - Now delete the jar file you unpacked the properties from (atlassian-jira/WEB-INF/lib/language_default.jar and restart Jira
Webapp edition - Delete the file from webapp/WEB-INF/lib/language_default.jar, 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.

Labels:

Enter labels to add to this page:
Wait Image 
Looking for a label? Just start typing.
  1. Aug 05, 2006

    Neal Applebaum says:

    Jeff - I don't understand your instructions. If I delete the .jar file, don't I ...

    Jeff - I don't understand your instructions. If I delete the .jar file, don't I have to replace it with a new one, after I edit it? That's not in your instructions. I am confused.

    1. Aug 05, 2006

      Neal Applebaum says:

      OK - I think I understand now.

      OK - I think I understand now.

      1. Sep 29, 2006

        Carl Jones says:

        I don't.  Could someone elaborate?  I'd definitely like to do this.&nb...

        I don't.  Could someone elaborate?  I'd definitely like to do this.  Particularly for the column headings in the issue navigator as well

  2. Sep 29, 2006

    Michelle de Guzman says:

    Hi Carl, The .jar file you extracted above remains in the lib directory even af...

    Hi Carl,

    The .jar file you extracted above remains in the lib directory even after extraction. Therefore, once you make your changes to the file that you need to edit it is essential that you delete the old language jar from the lib directory so that your edited file that you were working on from the classes directory will take affect after the re-start.

    Hope that makes a bit more sense.

    Cheers,
    Michelle

    1. Oct 12, 2006

      Carl Jones says:

      Ahhhhh..... Got it!  thanks.

      Ahhhhh.....

      Got it!  thanks.

  3. Jan 11, 2007

    experiment 626 says:

    Hopefully you are willing to go through it again for someone that doesn't have i...

    Hopefully you are willing to go through it again for someone that doesn't have it working.

     Using the standalone version:

    All the properties files within 'language_en_UK.jar' are extracted to WEB-INF\classes

    The 'language_en_UK.jar' within WEB-INF\lib is renamed to 'Old language_en_UK.jar'

    The 'language_default.jar' within WEB-INF\lib is renamed to 'Old language_default.jar'

    Exited the browser and brought down TomCat.

    then restarted TomCat and brought up Jira .... with no apparant change.

    1. Jan 11, 2007

      Michelle de Guzman says:

      Hi there, All the properties files within 'language_en_UK.jar' are extracted to...

      Hi there,

      All the properties files within 'language_en_UK.jar' are extracted to WEB-INF\classes

      Two new folders are created called META-INF and com in the classes directory. The properties files are all extracted into the com folder as shown by:

      created: com/
      created: com/atlassian/
      created: com/atlassian/jira/
      created: com/atlassian/jira/web/
      created: com/atlassian/jira/web/action/
      created: com/atlassian/jira/web/action/filter/
      created: com/atlassian/jira/web/action/issue/
      created: com/atlassian/jira/web/action/portal/
      created: com/atlassian/jira/web/action/setup/
      created: com/atlassian/jira/web/action/user/
      extracted: com/atlassian/jira/web/action/filter/ManageFilters.properties
      extracted: com/atlassian/jira/web/action/AbstractViewIssueColumns.properties
      extracted: com/atlassian/jira/web/action/Dashboard.properties
      extracted: com/atlassian/jira/web/action/IssueActionSupport.properties
      extracted: com/atlassian/jira/web/action/JiraWebActionSupport.properties
      extracted: com/atlassian/jira/web/action/issue/AbstractCommentableIssue.properties
      extracted: com/atlassian/jira/web/action/issue/AbstractIssueSelectAction.properties
      extracted: com/atlassian/jira/web/action/issue/AddComment.properties
      extracted: com/atlassian/jira/web/action/issue/AssignIssue.properties
      extracted: com/atlassian/jira/web/action/issue/AttachFile.properties
      extracted: com/atlassian/jira/web/action/issue/CreateIssue.properties
      extracted: com/atlassian/jira/web/action/issue/DeleteIssue.properties
      extracted: com/atlassian/jira/web/action/issue/EditIssue.properties
      extracted: com/atlassian/jira/web/action/issue/IssueNavigator.properties
      extracted: com/atlassian/jira/web/action/issue/LinkExistingIssue.properties
      extracted: com/atlassian/jira/web/action/issue/LogWork.properties
      extracted: com/atlassian/jira/web/action/issue/MoveIssue.properties
      extracted: com/atlassian/jira/web/action/issue/ResolveIssue.properties
      extracted: com/atlassian/jira/web/action/issue/ManageAttachments.properties
      extracted: com/atlassian/jira/web/action/portal/AbstractConfigurePortal.properties
      extracted: com/atlassian/jira/web/action/setup/AbstractSetupAction.properties
      extracted: com/atlassian/jira/web/action/setup/Setup.properties
      extracted: com/atlassian/jira/web/action/setup/Setup2.properties
      extracted: com/atlassian/jira/web/action/setup/Setup3.properties
      extracted: com/atlassian/jira/web/action/setup/Setup2Existing.properties
      extracted: com/atlassian/jira/web/action/user/AddPortlet.properties
      extracted: com/atlassian/jira/web/action/user/ChangePassword.properties
      extracted: com/atlassian/jira/web/action/user/ConfigurePortal.properties
      extracted: com/atlassian/jira/web/action/user/EditProfile.properties
      extracted: com/atlassian/jira/web/action/user/UserVotes.properties
      extracted: com/atlassian/jira/web/action/user/UserWatches.properties
      extracted: com/atlassian/jira/web/action/user/ViewProfile.properties
      

      The 'language_en_UK.jar' within WEB-INF\lib is renamed to 'Old language_en_UK.jar'

      No

      The 'language_default.jar' within WEB-INF\lib is renamed to 'Old language_default.jar'

      No

      The old/existing language_default.jar will still be in the WEb-INF\lib directory so you need to remove/delete it. Then when JIRA is re-started it will then use the changes that you made to the extracted files in WEB-INF\classes\com\..\..

      Is that a little more clearer? Please let us know.

      Cheers,
      Michelle

    2. Jan 26, 2007

      Brill Pappin says:

      No... you must delete it or it will still be found by the classloader (which doe...

      No... you must delete it or it will still be found by the classloader (which doesn't care what you call it).

  4. May 09, 2007

    msmartt says:

    I don't see either the default or the eng_UK jar files.  I have tried searc...

    I don't see either the default or the eng_UK jar files.  I have tried searching the JIRA files for *default*.jar and  *langauge*.jar and the results don't show the default language jar files.  Is this because JIRA is still running?  When I shut down JIRA to make the text changes will I then be able to see the jar files in the directory?

    I shut down JIRA and still do not see those two jar files.  I was able to start up JIRA and the default language jar file is still not there.  I have run *.jar searches on all local drives and the file never gets displayed. All the other language files do.  I need help please.

    1. May 10, 2007

      msmartt says:

      I was able to make the changes to JIRA.  The two language files were not on...

      I was able to make the changes to JIRA.  The two language files were not on my C drive however I was able to update the JiraWebActionSupport_en.properties file at atlassian-jira\WEB-INF\classes\com\atlassian\jira\web\action.  I tried just editting the JiraWebActionSupport.properties file but the changes didn't take.  Once I editted the _en .properties file everything was fine.

      The directions above are confusing and should be rewritten.  I first turned down my JIRA, found the properties file and editted it, saved it and restarted JIRA.  There was no need to extract the JAR files.  The directions above read as if you extract, make edits, delete the file, and restart.  I was able to stop JIRA, edit and restart with my changes intact.  The two language files are still not on my server.

      Thanks to Jeff for his support in helping me better understand this process.

      1. May 14, 2007

        Jeff Turner says:

        > There was no need to extract the JAR files. The directions above read as i...

        > There was no need to extract the JAR files. The directions above read as if you extract, make edits, delete the file, and restart.

        The properties files were there for you because you had previously unzipped them, and deleted the jars. If you look in an unmodified JIRA Standalone, only the jars are there.

  5. Jul 05, 2007

    Will Rau says:

    Is this how one would also change the labels for default fields?  I want to...

    Is this how one would also change the labels for default fields?  I want to change some.  for example, I'd like to change "Fix Version" to "Resolve(d) in Version".

    1. Oct 17, 2007

      Urs Reupke says:

      That should be the way, Will. Just look for your text in the .properties and cha...

      That should be the way, Will. Just look for your text in the .properties and change as detailed above.

  6. Nov 14, 2007

    Dick Wallace says:

    I was able to change the text per the example above. However, what I'm really tr...

    I was able to change the text per the example above. However, what I'm really trying to do is to have the automatic 'None' choice in editing controls say '<not set>'. In JiraWebActionSupport.properties I changed common.words.none = None to common.words.none = <not set>, but the automatic choice still said 'None'. Is there some other place to change this label?

  7. Nov 15, 2007

    Dmitry Beransky says:

    keep in mind, guys, that if you use this hack to rename built-in fields, you hav...

    keep in mind, guys, that if you use this hack to rename built-in fields, you have to do this after every Jira upgrade that changed anything in the language.jar, and probably just to be sure, you SHOULD do this after every upgrade.  I just can't believe how much maintenance overhead every little Jira customization adds.  For me, it's really getting out of hand.

  8. Jan 08, 2008

    Mark Thomas says:

    A little confusion here: The doc mentions deleting both the language_default.jar...

    A little confusion here: The doc mentions deleting both the language_default.jar and the specific language version (language_en_UK.jar in my case). It only talks about extracting language_default.jar. Do I need to extract both or just one? Delete both or just one?

     In my specific case I need to rename issue priority to severity.

    Thanks.

  9. Mar 31, 2008

    Brian Williams says:

    I am also trying to rename priority to severity.  I followed the instructio...

    I am also trying to rename priority to severity.  I followed the instructions, editing the properties file, and removed language_default.jar.  I am using American English so I thought that would be sufficient.  I found that my changes did not take effect.  Then I tried removing language_en_UK.jar as well.  Then my changes took effect.

      

  10. Jun 03

    Justin Traenkenschuh says:

    FYI - If you just remove the language_default.jar (I removed the language_en_UK....

    FYI - If you just remove the language_default.jar (I removed the language_en_UK.jar as well) without unpacking any jars and restart JIRA you'll get a view of all the screen items as they are named, i.e. "alt.text.findissues" instead of "Find Issues" in the Navigator Bar. This was useful for me to find the properties that I needed to change in a visual format. It didn't allow me to view tkts though and I would only recommend doing this in a test environment.

    After replacing both the jar files and restarting JIRA the dashboard was restored.

    Screenshot