String Externalization Improvements
This document contains possible work items to improve the externalization of strings. It is under continuous refinement. Feedback welcome.
Last edited: 19.07.2005

Possible Work Items

  • improve Java Editor
    • 3.1 navigate from selected key in Java editor to definition in properties file editor
      • navigate to start of file if the key is not yet defined
    • 3.1 show value when hovering over key in Java editor
      • 3.1 show value as is in the properties file
      • show value as returned by the accessor class (substitute parameters with defaults)
    • offer a new Quick Fix to mark all strings on a line as non-externalizable at once
    • offer a new Quick Fix which externalizes just that string
      • ideas:
        • open corresponding properties file, add key, be in linked mode in CU editor
        • make it a refactoring
        • allow to type the key at the place of the string and add the new code
        • the hover which shows the value is an action hover which allows to change the value
      • should support parametrized strings (see below)
    • provide a Quick Assist to rename a property key and all places where it is used
    • allow to invoke the NLS Quick Fixes even if NLS warning is disabled (⇒ Quick Assists?)
  • improve Properties File editor
    • 3.1 syntax coloring for Properties File Editor (comments, keys and values)
    • 3.1 provide separate double-click strategy for key and value part
    • 3.1 navigate from selected key and value in properties file to location in Java editor and Plug-in Manifest editor
    • 3.1 spell checking
    • ensure correct ISO-8859-1 encoding when writing a properties file. Convert to ascii upon save. If using native2ascii tool a preference is needed to specify it (try to auto-detected).
    • allow to sort alphabetically
    • allow to group by first common prefix up to a specified separator (preference)
    • context-sensitive search: Search Reference
    • provide a Quick Assist to rename a property key and all places where it is used
    • problem reporter which reports temporary problems (builder might be added later)
      • duplicate keys
      • unused keys
      • invalid format strings being passed to MessageFormat causing IllegalArgumentException
    • offer Quick Fixes to solve above errors:
      • remove unused key (plus value)
      • correct invalid strings that cause MessageFormat to fail
    • offer folding via first common prefix up to a specified separator (preference)
    • offer an Outline (request from Adam - asked him via e-mail)
      • along a separator (e.g. . or _) or common prefix
      • allow to sort the file
      • allow to add, remove, paste, sort, ...
      • allow to change the key
      • allow to change the value
  • improve Externalize Strings wizard
    • spell checking
    • ensure correct ISO-8859-1 encoding when writing a properties file. Convert to ascii upon save. If using native2ascii tool a preference is needed to specify it (try to auto-detected)
    • improve setting of default values
    • improve accessor class (and properties file) selection dialog
      • replace it: instead of a dialog make it the first page of the wizard
      • add an Advanced >> button
      • correctly fill in values (detect and make read-only if accessor class has been chosen)
    • find duplicate keys: currently the scope is limited to the keys inside the CU instead of the whole properties file
    • keep a history of values, especially which property file belongs to which accessor (if it can't be detected from the accessor)
    • support parametrized strings:
      • allow to generate accessor method with parameters
      • suggest string with  {0}, {1}, ...
      • correctly pass the parameters to the accessor method
  • improve NLS Search
    • improve setting of default values in NLS Search page
    • reduce wrong matches reported by NLS Search
    • improve visibility (the tool is not well known)
      • possible solution: integrate NLS Search into the Externalize Strings wizard or the new Java Properties view
  • improve property handling when moving and copying CUs
    • add refactoring, move and copy participants which help take care of properties
    • offer a command to inline the property values into the CU
      • this is already available as "Internalize" from the Externalize Strings wizard
      • problems:
        • comments might get lost
        • keys might have to be entered again
      • for one CU and it CU members
      • for multiple CUs i.e. for a selection with CUs, packages, source folders and projects
  • provide a builder which generates
    • problems on properties files for unused keys
    • problems on properties files for duplicate keys
    • problems on properties files for invalid format strings being passed to MessageFormat
    • problems on CUs for non-existent keys
    • problems on CUs for unused keys
  • investigate
    • provide the functionality of the Externalize Strings wizard through a new Java Properties view which allows to externalize the strings of the currently selected element
    • make the NLS hover an action hover: user can activate it and directly change the value
    • add a preview to the Properties File editor which shows the file in ascii mode
    • show the UI (e.g. error dialog) where a select a property is used
    • NLS manager which allows to manage key/values per Java project / plug-in
      • show all key/values, find duplicate values, allow to cut/copy/paste key/value pairs
      • find all unused keys
      • fix spell check errors
      • find duplicates

Legend
item is under development. item is under investigation.
item is finished. ( ) item is time permitted.
[xyz] item is deferred to or continues in xyz. new