@Taazz, You might want to know about using hooks to receive language change notifications. Of course, may be you are already familiar with them and they are limited to Windows:
uses
..., Windows;
..
var
ShellHookHandle: HHOOK;
..
function LanguageChangeHook(nCode: longint; wParam: WPARAM; lParam: LParam): HRESULT; stdcall;
begin
if nCode = HSHELL_LANGUAGE then
begin
//Here goes your code
end;
Result := CallNextHookEx(ShellHookHandle, nCode, wParam, lParam);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ShellHookHandle := SetWindowsHookEx(WH_SHELL, @LanguageChangeHook, 0, GetCurrentThreadId);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
if ShellHookHandle<>0 then
begin
UnhookWindowsHookEx(ShellHookHandle);
ShellHookHandle := 0;
end;
end;