[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