| 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
- Assign
- Attach file
- Attach screenshot
- Add Comment
- Delete
- Edit
- Link to another issue
- Move to another project
[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).
- 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.






Comments (18)
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.
Aug 05, 2006
Neal Applebaum says:
OK - I think I understand now.OK - I think I understand now.
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
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
Oct 12, 2006
Carl Jones says:
Ahhhhh..... Got it! thanks.Ahhhhh.....
Got it! thanks.
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.
Jan 11, 2007
Michelle de Guzman says:
Hi there, All the properties files within 'language_en_UK.jar' are extracted to...Hi there,
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:
No
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
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).
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.
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.
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.
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".
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.
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?
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.
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.
Jun 03, 2008
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
Nov 11
Randy Hall says:
I used this to rename Priority to Severity. That worked great, except that...I used this to rename Priority to Severity. That worked great, except that now when we use the advanced search in Jira 4.0 what all my users know as "Severity" shows up as "priority", as in search for "priority = Blocker".
I understand why, and I doubt there is any easy way around this without modifying the source and building myself. I'm posting partly as a warning, and partly to see if there is another trick to fix this.