تغيير اللغة الافتراضية
#1
السلام عليكم ورحمة الله

لدي مشكلة من فترة سالت عنها ولم اجد اجابة كافية 
عند تحديد  الخيار لدولة عربية من    control panel->region->formats
الذي يحدث ان كل الارقام داخل التطبيق الخاص بي تكتب باللغة العربية وهذا يسبب لي اشكالية 
ماهو الكود الذي من خلاله اجعل الارقام باللغة الانجليزية حتى لو كان الخيار من لوحة التحكم للغة العربية
الرد
#2
السلام عليكم

ان كنت تريد تغيير الارقام يكفي تغيير LOCALE_IDIGITSUBSTITUTION الي 0 او 1 و سوف يلغي استعمال الارقام المحلية
و لكن هذا سيقوم بتغيير اعدادات المستخدم .

لا ادري ان كانت وندوز تسمح بالغاء اعدادات المستخدم على برنامج محدد .

كود :
  SetLocaleInfo(LOCALE_USER_DEFAULT, $1014,                 '1');
[-] كل من 1 user says قال شكرا ل Ndagor على المشاركة المفيدة
  • محمد الدرة
الرد
#3
السلام عليكم
شكل الأرقام ليس شرطا يكون متعلق باللغة
من لوحة التحكم ثم تنسيقات الوقت أو التاريخ أو الأرقام ثم إعدادات اضافية غير خيار :
استخدام الأرقام الأصلية إلى أبدا مثل الصورة التالية
[صورة: attachment.php?aid=4812]


الملفات المرفقة
.jpg   9966333.jpg (الحجم : 135.91 ك ب / التحميلات : 50)
[-] كل من 1 user says قال شكرا ل صالح حمادي على المشاركة المفيدة
  • محمد الدرة
الرد
#4
(18-01-2024, 04:51 PM)Ndagor كتب : السلام عليكم

ان كنت تريد تغيير الارقام يكفي تغيير LOCALE_IDIGITSUBSTITUTION الي 0 او 1 و سوف يلغي استعمال الارقام المحلية
و لكن هذا سيقوم بتغيير اعدادات المستخدم .

لا ادري ان كانت وندوز تسمح بالغاء  اعدادات المستخدم على برنامج محدد .

كود :
   SetLocaleInfo(LOCALE_USER_DEFAULT, $1014,                  '1');

الكود يشتغل تمام لكن يقوم بتعديل الاعدادات الخاصة بالمستخدم لجميع الانظمة
هل يوجد خيار لتفعيله  على مستوى النظام الحالي فقط بحيث لايتم تاثيره على بقية الانظمة

(18-01-2024, 05:44 PM)صالح حمادي كتب : السلام عليكم
شكل الأرقام ليس شرطا يكون متعلق باللغة
من لوحة التحكم ثم تنسيقات الوقت أو التاريخ أو الأرقام ثم إعدادات اضافية غير خيار :
استخدام الأرقام الأصلية إلى أبدا مثل الصورة التالية
[صورة: attachment.php?aid=4812]

نعم هو هذا المطلوب لكني اريده برمجيا كما في رد الاخ Ndagor 
الكود الذي اعطاني ينجز المهمة المطلوبة التي ذكرتها لكن يبقى اشكاليه انها تقوم بتغيير اعدادت النظام بالكامل وانا اريد تغييرها على المستخدم داخل التطبيق فقط وليس كاعداد خاص بالويندوز بالكامل او المستخدم
الرد
#5
الحل الذي اراه هو تقوم باستخدام مكونات لا تستخدم ادوات الرسم الداخلية للوندوز
او استعمال font معدل لا يحتوي الارقام العربية الهندية و تحميله اثناء انطلاق البرنامج
الرد
#6
السلام عليكم
يمكنك استخدام الحدث OnGetText التابع للـ Field فقط اذا كانت البيانات كبيرة سيحدث ثقل للبرنامج

[size=1][صورة: L0AfTRn.png][/size]

كود :
function TForm2.ArrToEn(ArrChar: string): string; begin   if ArrChar =  '١' then Result := '1' else   if ArrChar = '٢' then Result := '2' else   if ArrChar = '٣' then Result := '3' else   if ArrChar = '٤' then Result := '4' else   if ArrChar = '٥' then Result := '5' else   if ArrChar = '٦' then Result := '6' else   if ArrChar = '٧' then Result := '7' else   if ArrChar = '٨' then Result := '8' else   if ArrChar = '٩' then Result := '9'; end; procedure TForm2.FDQuery1ARRGetText(Sender: TField; var Text: string;   DisplayText: Boolean); begin   Text := ArrToEn(FDQuery1.FieldByName('Arr').AsWideString); end;
و لرب نازلة يضيق لها الفتى ذرعا و عند الله منها المخرج
ضاقت فلما استحكمت حلقاتها فرجت و كنت اضنها لا تفرج
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم