PDA

View Full Version : چگونه زبان تعیین شده در regional languauge‌را تغییر دهیم



javad_hosseiny
چهارشنبه 17 فروردین 1384, 08:58 صبح
چگونه می توان با کدنویسی می توان در قسمت advance‌ مربوط به regional languauge‌ویندوز زبان non-unicode را به زبان دلخواه (مثلا عربی یا فارسی) تغییر داد

شکوه
چهارشنبه 17 فروردین 1384, 09:50 صبح
سلام دوستان
سال نو مبارک
اگه منظورت رو درست متوجه شده باشم
کد زیر صفحه کلید رو تغییر میده
کد زبان مورد نظر =: Application.BiDiKeyboard
انگلیسی 00020409
فارسی 00000429
موفق باشین

javad_hosseiny
چهارشنبه 17 فروردین 1384, 13:20 عصر
ممنون ولی منظورم این نیست (کد مربوطه جهت تغییر صفحه کلید است ) حال آنکه منظورم من تغییر کلی ساختار زبان non-unicode به زبان دیگر (مثلا عربی) است (مشکل اصلی از آنجا ناشی می شود که در برخی Object های مورد استفاده در برخی زبانها مانند: Listbox,grid,combox) زبان فارسی را به عنوان یک زبان right-to-left نمی شناسد و در متن فارسی را از سمت چپ تراز میکند که با تغییر گزینه موردنظر در کنترل پنل به زبان عربی این مشکل حل می شود و حال منظور من این است که این کار را در برنامه نصب با برنامه نویسی انجام بدهم تا نیازی به تغییر آن توسط کاربر نباشد

Farshad Paydar
چهارشنبه 17 فروردین 1384, 21:53 عصر
با سلام.
من فکر کنم موفق شدم بفهمم چه کلیدی باید در رجیستری تغییر کند تا این مشکل حل شود البته من فقط توانستم روی دو تا سیستم تست کنم . لطفا شما هم تست کنید و نتیجه را بگید . امیدوارم درست باشه :
برای اینکه زبان برنامه های non-unicode را به فارسی تغییر دهید به آدرس زیر در رجیستری بروید :

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contr ol\Nls\CodePage]و این مقادیر را set کنید :

"ACP"="1256"
"OEMCP"="720"
"MACCP"="10004"
همچنین به آدرس زیر بروید :

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contr ol\Nls\Language]
و مقدار زیر را set کنید :

"Default"="0429"

برای اینکه زبان برنامه های non-unicode را به انگلیسی تغییر دهید به آدرس زیر در رجیستری بروید :

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contr ol\Nls\CodePage]و مقادیر زیر را set کنید :

"ACP"="1252"
"OEMCP"="437"
"MACCP"="10000"
همچنین به آدرس زیر بروید :

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contr ol\Nls\Language]
و مقدار زیر را set کنید :

"Default"="0409"

موفق باشید .

شکوه
پنج شنبه 18 فروردین 1384, 11:26 صبح
سلام
"اقا شکوه ممنون "
من آقا نیستم

Touska
پنج شنبه 18 فروردین 1384, 18:03 عصر
ای ولا عالی بود :flower:

ebnsina
جمعه 19 فروردین 1384, 08:52 صبح
با تشکر از آقای Farshad Paydar :flower:

آیا این تغییرات فقط برای این کاربر ذخیره میشود یا برای تمام کاربران ؟

ma_mohsen
شنبه 20 فروردین 1384, 17:04 عصر
ضمنا کد پیچ سیستم را می توانی از طریق GetACP بدست بیاوری که اگر عربی تنظیم شده باشد 1256 خواهد داد.
البته در خصوص سوال مطرح شده جواب کاملتری در کتاب 296 برنامه دلفی 6 آمده است که آن هم از طریق رجیستری توضیح داده است.
گرچه من نه آن را تست کرده ام و نه کدی را که جناب فرشاد نوشتند.
(نیازمند تست بر روی چند سیستم و مقادیری وقت می باشد)

javad_hosseiny
یک شنبه 21 فروردین 1384, 09:08 صبح
اقا محسن میشه لطفا کنید اون نمونه برنامه مربوطه را که گفته اید در کتاب 296 برنامه دیده اید اینجا بگذارید؟
با تشکر

javad_hosseiny
شنبه 03 اردیبهشت 1384, 22:51 عصر
کسی نبود کد نویسی مربوط به این تغییرات رجیستری را بنویسه؟

vcldeveloper
یک شنبه 04 اردیبهشت 1384, 04:39 صبح
کلیدهای دیگری نیز وجود دارد یعنی بجای کلید CurrentControllset چیزی مثل Controllset001 وجود دارد که عینا همان مقادیر را دارد. من اینطور برداشت کردم که هر یک از Controllset ها به یک user مربوط است و CurrentControllSet به user فعلی . اما چون من خودم تست نکردم مطمین نیستم . اما فکر کنم اگر می خواهید برای تمام کاربران تنظیم شود باید در تمام ControllSet ها تغییر گفته شده را اعمال کنید .

در رجیستری سیستم می تونه چندین شاخه ControlSetXXX وجود داشته باشه. تعداد این شاخه بستگی به دفعاتی که تنظیمات سیستم رو تغییر میدید داره،
CurrentControlSet به یکی از COntrolSetهای موجود که فعال هست اشاره می کنه و خودش مقدار متفاوتی نداره. یعنی اگر در سیستم شما چهار ControlSet (از ControlSet001 تا ContrlSet004) وجود داشته باشه، مقدار CurrentControlSet برابر با یکی از اونها ست.

vcldeveloper
یک شنبه 04 اردیبهشت 1384, 04:42 صبح
کسی نبود کد نویسی مربوط به این تغییرات رجیستری را بنویسه؟


uses Registry;

type
TLanguageName = (Fa,En);

procedure NonUnicode_Lang(Language: TLanguageName);
var
Reg : TRegistry;
begin
Reg := TRegistry.Create;
with Reg do
try
RootKey := HKEY_LOCAL_MACHINE;
if OpenKey('SYSTEM\CurrentControlSet\Control\Nls\Code Page',False) then
case Language of
Fa : begin
WriteString('ACP','1256');
WriteString('OEMCP','720');
WriteString('MACCP','10004');
CloseKey;
end;
En : begin
WriteString('ACP','1252');
WriteString('OEMCP','437');
WriteString('MACCP','10000');
CloseKey;
end;
end;//case

if OpenKey('SYSTEM\CurrentControlSet\Control\Nls\Lang uage',False) then
case Language of
Fa : begin
WriteString('Default','0429');
CloseKey;
end;
En : begin
WriteString('Default','0409');
CloseKey;
end;
end;//case
finally
Reg.Free;
end;//try..finally
end;

javad_hosseiny
شنبه 24 اردیبهشت 1384, 20:24 عصر
با تشکر فراوان از آقای کشاورز
ولی مشکلی است و آن هم اینکه بعد از انجام این کار علامت مربوط به تغییر زبان در گوشه پایین سمت راست ویندوز از بین می رود
برای رفع این مشکل چاره ای هست

vcldeveloper
یک شنبه 25 اردیبهشت 1384, 02:05 صبح
ولی مشکلی است و آن هم اینکه بعد از انجام این کار علامت مربوط به تغییر زبان در گوشه پایین سمت راست ویندوز از بین می رود
برای رفع این مشکل چاره ای هست
من روی سیستم خودم همچین مشکلی ندارم.

javad_hosseiny
یک شنبه 25 اردیبهشت 1384, 08:39 صبح
اگر لطف کنید و به لینک زیر بروید و سورس بنده را ببنید ممنون می شوم (برنامه نصب مشابه اینستال شیلد)
http://www.barnamenevis.org/forum/viewtopic.php?t=25862

Mah
یک شنبه 25 اردیبهشت 1384, 11:54 صبح
سلام :
از همگی شما برای این اطلاعات خوبتان ممنونم .

sajioo
پنج شنبه 30 خرداد 1392, 20:07 عصر
با سلام.
من فکر کنم موفق شدم بفهمم چه کلیدی باید در رجیستری تغییر کند تا این مشکل حل شود البته من فقط توانستم روی دو تا سیستم تست کنم . لطفا شما هم تست کنید و نتیجه را بگید . امیدوارم درست باشه :
برای اینکه زبان برنامه های non-unicode را به فارسی تغییر دهید به آدرس زیر در رجیستری بروید :
1
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\C ontrol\Nls\CodePage]
و این مقادیر را set کنید :
1
2
3
"ACP"="1256"
"OEMCP"="720"
"MACCP"="10004"

همچنین به آدرس زیر بروید :
1
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\C ontrol\Nls\Language]

و مقدار زیر را set کنید :
1
"Default"="0429"


برای اینکه زبان برنامه های non-unicode را به انگلیسی تغییر دهید به آدرس زیر در رجیستری بروید :
1
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\C ontrol\Nls\CodePage]
و مقادیر زیر را set کنید :
1
2
3
"ACP"="1252"
"OEMCP"="437"
"MACCP"="10000"

همچنین به آدرس زیر بروید :
1
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\C ontrol\Nls\Language]

و مقدار زیر را set کنید :
1
"Default"="0409"


موفق باشید .
دوستان عزیز البته سیستم باید رسیت بشه تا تغییرات اعمال شود.