>>> Based on your response it appears that Intl is only suppose to add the phrase once regardless of any hotkey configuration?
>
>That is correct. One glitch, however, comes from INTL's optimizations. If you let INTL open STRINGS.DBF, everything should be fine. If you open STRINGS yourself, and dicker with the active index, then INTL won't notice that, and for good reason: INTL does not check the index for each lookup because that is expensive and very adversely affects run-time performance. So if STRINGS is open INTL assumes it's fine and if it isn't, you get what you currently see.
An approach I developed to insulate strings (and MsgSvc) is to do the following:
DEFINE CLASS INTLDataSession AS Form
DataSession = 2 && Private Datasession to insulate INTL tables
PROC Init()
SET PROC TO ADDPROP5.FLL ADDITIVE
this.AddObject("oINTL","INTL")
AddProp(_SCREEN,"oINTL")
_SCREEN.oINTL = this.oINTL
ENDPROC
PROC Destroy()
_SCREEN.oINTL = .NULL.
ENDPROC
ENDDEFINE
Objects run in the datasession they are instantiated in. Therefore I create a private datasession within a form, add the INTL object to it: it is now in its own private datasession. I use AddProp to create a property on _SCREEN.oINTL and then point it at the INTL object on the form: INTL behaves as normal because it is still accessed as _SCREEN.oINTL.