السلام عليكم :)
في بعض الاحيان نعمل برنامج بلغة معينة (العربية مثلاً) ، ثم لاحقا نريد هذا البرنامج لمستعملين بلغة اخرى (الانجليزية او الفرنسية مثلاً) ، مما يضطرنا ان نعمل نسخة اخرى من البرنامج :(
اضع بين يديكم طريقة عمل برنامج بعدة لغات ، والطريقة هي الاحتفاظ بالمعلومات المطلوبة (ولا اقصد البيانات) في جدول.
1. هذه هي البيانات بلغات 3 ، العربية والانجليزية والفرنسية (والكلمات تم ترجمتها من الانجليزية الى الفرنسية عن طريق Google Translation):
الخانات الموجودة بسيطة ومعرفة معناها لا يأخذ وقت ، اما تنسيق الحقل فهو:1. اسم الخط ، 2. حجم الخط ، 3. ثخانة الخط ، 4. منحني ، 5. تحته خط ، 6. لون الخط:
2. النموذج الرئيسي ، به واجهة البرنامج (والتي سنراها على الجهة اليمنى من الشرائح التالية) ،
واول نموذج هو لعمل التغييرات على تنسيق الحقل ، وذلك بالنقر المزدوج في الحقل ، فتنفتح لنا نافذة اختيار الخط ،
وعندما نطمئن لإختيارنا للخط ، يجب ان نحفظ هذا التنسيق ، وذللك للّغة التي نريدها:
3. اما النتائج المرجوة من البرنامج ، فتظهر لنا في هذا النموذج:
باللغة العربية:
باللغة الانجليزية:
وباللغة الفرنسية:
والكود الذي يقوم بجلب الكلمات والتنسيق هو التالي ، ولا يوجد حاجة الى تغيير الكود ، وانما العمل يكون بإضافة الخانات في الجدول:
Private Sub Form_Load()
On Error GoTo err_Form_Load
mySQL = "Select * From tbl_Controls_Properties"
mySQL = mySQL & " WHERE Form_Name='" & Me.Name & "'"
mySQL = mySQL & " AND Language='" & Forms!frm_Main!Lang & "'"
Dim rst As DAO.Recordset
Dim x() As String
Set rst = CurrentDb.OpenRecordset(mySQL)
rst.MoveLast: rst.MoveFirst
iTwips = 576 '576 twips/cm , 1440 twips/inch
For i = 1 To rst.RecordCount
Me(rst!ctl_Name).Caption = rst!ctl_Caption
Me(rst!ctl_Name).Left = rst!ctl_Left * iTwips
If Len(rst!ctl_Style & "") <> 0 Then
x = Split(rst!ctl_Style, "|")
With Me(rst!ctl_Name)
.FontName = x(0)
.FontSize = x(1)
.FontWeight = x(2)
.FontItalic = x(3)
.FontUnderline = x(4)
.ForeColor = x(5)
If rst!Language = "A" Then
'0=General
'1=Left
'2=Center
'3=Right
'4=Distribute
.TextAlign = 3
Else
.TextAlign = 1
End If
End With
End If
rst.MoveNext
Next i
Exit Sub
err_Form_Load:
If Err.Number = 438 Or Err.Number = 13 Then
'ignor,
Resume Next
Else
MsgBox Err.Number & vbCrLf & Err.Description
End If
End Subوهذا الكود الذي يفتح لنا msgbox :
Public Function aRemark(N)
'call the Arabic Remarks in Table tbl_Controls_Properties
aRemark = DLookup("[Remark]", "tbl_Controls_Properties", "[Form_Name]='" & Me.Name & _
"' And [Language]='" & Forms!frm_Main!Lang & _
"' And [Remark_ID] = " & N)
End Functionهذا البرنامج برنامج بدائي ، والذي يمكن تطويره :)
ومرفق البرنامج اعلاه :)
جعفر


