If I wanted to make a control remember the last used language I would read the currently used keyboard layout with GetKeyboardLayout function during losefocus.
I would had an inherited object of that sle_control with an instance variable for the keyboard layout.
On getfocus, I would use ActivateKeyboardLayout to set the layout to my instance variable. After that I would change all my sle controls to my inherited one (very easy to do).
But this requires that the OP thought about this "issue" from the beginning. If this isn't the case, then this logic should be applied in any used object, so if you have 10 sle controls, you will have to do some coding for all of them. But if I had to use a window in powerbuilder with 10 sle controls, then I should prefer to use a datawindow (external freeform object). This would give a complete solution to the problem, as in datawindows that issue is now parametrized. Also do not forget all the advantages that a datawindow gives. Example: Zooming without any coding!
Andreas.