View Full Version : تغییر توماتیک زبان از فارسی به انگلیسی
  
Batman
چهارشنبه 18 آذر 1388, 07:26 صبح
با سلام
من زمانیکه برنامه رو Run میکنم از کد زیر برای فارسی کردن برنامه استفاده میکنم:
LoadKeyboardLayout('00000429',1);
اما نمیدونم چرا بعضی اوقات به صورت اتوماتیک زبان فارسی به انگلیسی تبدیل میشه(EN به Fa تبدیل میشه).
با تشکر
Batman
پنج شنبه 19 آذر 1388, 07:05 صبح
آقا تورو خدا یکی جواب بده.
لااقل کدهای مشابه رو بذارید شاید درست شد
Felony
پنج شنبه 19 آذر 1388, 07:37 صبح
میخوای اول چک کن اگه فارسی نبود بعد فارسیش کن ، توسط کد زیر میتونی چک کنی زبان فارسی هست یا نه :
if GetKeyBoardLayout(0)=69796905 then
Felony
پنج شنبه 19 آذر 1388, 07:40 صبح
این هم یک روال برای تغییر زبان :
type
  TLanguage=(Farsi, English);
procedure TForm1.SetLanguage (Lan:TLanguage) ;
begin
  if Lan = Farsi then
   Begin
    If HIBYTE(LOWORD(GetVersion)) = 0 Then
      LoadKeyBoardLayout ( '00000429', KLF_ACTIVATE)
    Else LoadKeyBoardLayout ( '00000429', KLF_ACTIVATE)
   End
  else 
نحوه ی استفاده :
  SetLanguage(Farsi);
  SetLanguage(English);
MToloo
یک شنبه 22 آذر 1388, 19:25 عصر
اين هم يك كد ديگه:
function GetLangName: string;
var
  a: array[0..9] of Char;
begin
  GetKeyboardLayoutName(a);
  Result:= a;
end;
function IsArabic: Boolean;
begin
  Result:= GetLangName= '00000401';
end;
function IsEnglish: Boolean;
begin
  Result:= GetLangName= '00000409';
end;
function IsFarsi:   Boolean;
begin
  Result:= GetLangName= '00000429';
end;
function SetFarsi: boolean;
var
  Count: integer;
begin
  Count:= 0;
    {Try to set Farsi}
  while (not IsFarsi) and (Count< 5) do
  begin
    ActivateKeyboardLayout(HKL_NEXT, 0);
    inc(Count);
  end;
      {If failed try to set arabic}
  if Count>= 5 then
  begin
    Count:= 0;
    while (not (IsArabic or IsFarsi)) and (Count< 5) do
    begin
      ActivateKeyboardLayout(HKL_NEXT, 0);
      inc(Count);
    end;
  end;
  
  Result:= Count< 5;
end;
function SetEnglish: Boolean;
var
  Count: integer;
begin
  Count:= 0;
  while (not IsEnglish) and (Count< 5) do
  begin
    ActivateKeyboardLayout(HKL_NEXT, 0);
    Inc(Count);
  end;
  Result:= Count< 5;
end;
masoud_z_65
سه شنبه 24 آذر 1388, 23:06 عصر
من این کد رو توی رویداد onshow  فرم اصلی گزاشتم و هروت برنامه اجرا میشه زبان فارسی میشه و مشکلی نداره
یکی از بچه های سایت گزاشته بود
Application.BiDiKeyboard:='00000429';
1سوال؟
هرجای خاصی از برنامه بخوام انگلیسی بشه مثلا وقتی کاربر یک Edit خاص را کلیک کرد باید چیکار کنم؟
رویداد Onclick رو بنویسم؟؟؟؟
اگه درست گفتم برا انگلیسی کدش چیه؟؟؟
بجای 00000429 برا انگلیسی چیه؟؟
Pr0grammer
سه شنبه 24 آذر 1388, 23:11 عصر
هرجای خاصی از برنامه بخوام انگلیسی بشه مثلا وقتی کاربر یک Edit خاص را کلیک کرد باید چیکار کنم؟
از این کد استفاده کنید :
Application.BiDiKeyboard:='00000409';
 رویداد Onclick رو بنویسم؟؟؟؟هر جا که بخواین می تونید از این کد استفاده کنید، مثلا در OnClick یک شئ یا OnEnter یک Edit و ...
masoud_z_65
پنج شنبه 26 آذر 1388, 03:03 صبح
من توی show فرم اصلی این کد رو گزاشتم:
Application.BiDiKeyboard:='00000409';
ام توی جاهای خاصی میخواستم به انگلیسی عوض نمیشد
ام از تابع دوست عزیز silver soft استفاده کردم درست شد:
procedure TForm_system.SetLanguage (Lan:TLanguage) ;
begin
  if Lan = Farsi then
   Begin
    If HIBYTE(LOWORD(GetVersion)) = 0 Then
      LoadKeyBoardLayout ( '00000429', KLF_ACTIVATE)
    Else LoadKeyBoardLayout ( '00000429', KLF_ACTIVATE)
   End
   else LoadKeyBoardLayout ( '00000409', KLF_ACTIVATE)
  end;
procedure TForm_system.Edit5Click(Sender: TObject);
begin
 // LoadKeyboardLayout('00000429',1);
 SetLanguage(English);
end;
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.