[jsword-devel] Simplifying translation of BibleDesktop and JSword
DM Smith
dmsmith555 at yahoo.com
Sat Feb 16 20:27:27 MST 2008
If you are interested. Here is documentation on the inner workings:
The ActionFactory is responsible for creating CWActions and making
them available to the program. Each Action is constructed from
resources of the form: ActionName.field=value where ActionName is the
ACTION_COMMAND_KEY value and field is one of the CWAction constants,
e.g. LargeIcon.
Field is one of:
Name - This is required. The value is used for the text of the Action.
Mnemonic - An upper case letter or other character in the value of the
Name field. If found, using a case insensitive search, the mnemonic
will cause the corresponding character to be underlined. In a platform
dependent way it provides a keyboard mechanism to fire the action. For
example, on Windows, alt + mnemonic will cause a visible, active
element with that mnemonic to fire. For this reason, it is important
to ensure that two visible, active elements do not have the same
mnemonic.
Note: Mnemonics are suppressed on MacOSX.
ToolTip - A tip to show when the mouse is over an element. If not
present, Name is used. This is likely to change. It is redundant to
show a tooltip that is identical to the shown text.
SmallIcon - A 16x16 pixel image to be shown for the item. The value
for this is a path which can be found as a resource.
Note: the small icon will be used when actions are tied to menu items
and buttons.
LargeIcon - A 24x24 pixel image to be shown for the item when large
items are shown. Currently, these are only used for the ToolBar, when
a large toolbar is requested. The value is a resource path to the image.
AcceleratorKey - A key on the keyboard, which may be specified with
0x25 kind of notation.
Accelerators are global key combinations that work within an
application to fire the action. When the action is shown as a menu
item the accelerator will be listed with the name. Note: The
accelerator key and it's modifiers are converted into a KeyStroke with
KeyStroke.getKeyStroke(key, modifierMask);
AcceleratorKey.Modifier - A comma separated list of ctrl, alt, and
shift, indicating what modifiers are necessary for the accelerator.
Note: ctrl will use a platform's command key. On MacOSX this is the
Apple/Command key. Other platforms use Ctrl.
Enabled - Defaults to true when not present. It is disabled when the
value does not match "true" regardless of case. This is used to
initialize widgets tied to actions to disabled. Once the action is
created, it's state can be changed and the tied widgets will behave
appropriately.
In order to facilitate easier translation, Enabled, SmallIcon and
LargeIcon can be specified in a parallel resource, whose name is
suffixed with "_control" as in Desktop_control. This is meant to
extrapolate the constant behavior of an action into a file that
probably does not need to be internationalized. If it does, for
example, to suppress the display of icons, then one would create a
resource further suffixed with the language and perhaps country, as in
Desktop_control_fa.
To add another twist, several actions may have the same name and
mnemonic, differing perhaps by tooltip. To facilitate the sharing of
these definitions, an Aliases resource is defined to contain common
values. If the value of a ActionName.Name is prefixed with "Alias.",
as in Go.Name=Alias.Go, then Go will be used as the ActionName to look
up values in the Aliases resource.
Aliases defines defaults that can be overridden by the referring
resource file. The only value that cannot be overridden is Name.
When an action is fired, this class, as a listener, reflects the
action on the class providing the resource. For example,
DesktopActions creates an ActionFactory from the Desktop
ResourceBundle. When the Exit action is fired, ActionFactory calls
DesktopActions.doExit(ActionEvent event) or DesktopActions.doExit(),
if the first did not exist.
On Feb 16, 2008, at 9:23 PM, DM Smith wrote:
> I've implemented this change. With one more addition: If a ToolTip is
> not present, then the Name field is used. I know it is redundant and I
> am thinking of suppressing tooltips when the tooltip is the same as
> the name.
>
> On Feb 16, 2008, at 7:22 PM, DM Smith wrote:
>
>> While working on aliases as a way of simplifying translations of
>> action property files, I thought I'd look to see how ShortDescription
>> and LongDescription are used by BibleDesktop.
>>
>> LongDescription is only used in one place: When hovering over a menu
>> entry, the long description is shown in the status bar.
>>
>> ShortDescription is used for tool tips and for the text of tool bar
>> buttons.
>>
>> (The reason it is use instead of the Name for the tool bar buttons is
>> that some Names end with "...". I'm changing it from ShortDescription
>> to Name).
>>
>> When either only one of the descriptions is present, it is also used
>> for the other.
>>
>> If neither is present, there is no ToolTip, but sometimes Bible
>> Desktop will show a small square with nothing in it. (I've seen this
>> regarding buttons in the Edit Sites screen).
>>
>> I'd like to hear your opinions on:
>> Changing the code to ignore LongDescription and use ShortDescription.
>> Renaming ShortDescription to ToolTip. (I think this would make it
>> much
>> clearer)
>> Use Name for ToolTip when it would be otherwise identical.
>>
>> I'll be glad to do the rename. I'll also volunteer to delete
>> LongDescription wherever it is identical to ShortDescription, but
>> leave it otherwise for you to delete.
>>
>> Going forward, this should significantly reduce the translation
>> effort.
>>
>> In Him,
>> DM
>>
>>
>>
>>
>> _______________________________________________
>> jsword-devel mailing list
>> jsword-devel at crosswire.org
>> http://www.crosswire.org/mailman/listinfo/jsword-devel
>
>
>
> _______________________________________________
> jsword-devel mailing list
> jsword-devel at crosswire.org
> http://www.crosswire.org/mailman/listinfo/jsword-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.crosswire.org/pipermail/jsword-devel/attachments/20080216/e0521028/attachment.html
More information about the jsword-devel
mailing list