User interface objects are stored in a user interface object archive which is a database physically located in the shared library of an associated application program. In order to facilitate "localization", or preparation of an application developed in one language for use in an "area" or a locale which uses another language, the user interface objects are stored in a hierarchical locale tree within the archive. All objects are stored in the base or root of the hierarchy, but only those objects which require a translation are stored in an area associated with a more specific locale. At runtime, a complete collection of objects is assembled by starting at the desired locale and proceeding up the hierarchy level-by-level. Translated objects at lower levels of the hierarchy "override" those at higher levels so that the most complete translations of each object are obtained during this search. The user interface objects which are stored in an archive are actually created via a predefined "constructor" program, and, in order to allow newly-created user interface objects to use the predesigned constructor program, each user interface object is contained in a special "escort" object that interfaces with the constructor program. A user can edit an existing object, and change its class. This results in a new object of the new class being created. The existing attributes of the old object are transferred to the new object. Only the attributes known to the common base class or classes of the two objects are transferred. The new object is substituted for the old object, and the old object is deleted.