اذهب الي المحتوي
أوفيسنا

الردود الموصى بها

قام بنشر (معدل)

السلام عليكم ورحمة الله وبركاته ، أخواني وأساتذتي ومعلمينا ( دون استثناء )

اليوم جئتكم بفكرة جديدة وأعتقد أنه لم يسبقني أحد بهذا الطريق ؛ وهو إضافة اختيار واجهة اللغة إلى تطبيقات وبرامج ومشاريع الآكسيس بطريقة جديدة وتقدروا تقولوا 2024 :clapping:

في البداية سأقوم بشرح المطلوب داخل القاعدة التي سيتم التطبيق عليها ،

أولاً :- جدول واحد فقط يحتوي على حقل واحد فقط أيضاً وسنسميه بـ SettingsTable ، والحقل الذي بداخله هو Language من نوع نصي ( Text ) .

ثانياً :- نموذج Settings وهو طبعاً ليس له مصدر سجلات .

وبداخله كومبوبوكس Combo box سيكون اسمه cboLanguage نوع مصدر بياناته Value List ؛ ومصدر بياناته القيم التالية ( "العربية";"English" ) .

ثالثاً :- بجانب قاعدة البيانات سنقوم بإنشاء مجلد جديد وسيتم تسميته بـ Language .

 

Pan.png

الآن خطوات العمل :-

small.Blue-check.png.685b9b4d755a1579b52 الموديول Module :- قم بإنشاء Module جديد وسمه بـ Set_Language ؛ وهو مفتاح العمل والذي من خلاله سنعتمد على جلب الترجمة من الملفات التي سنقوم بإنشائها لاحقاً . وهذا الكود مع الشرح الكامل له بين السطور .

Option Compare Database
Option Explicit

' المتغير العام لتخزين اللغة الحالية
Public CurrentLanguage As String

' تحديث اللغة الحالية
Public Sub UpdateLanguage()
    On Error Resume Next

    ' احصل على اللغة المحددة من جدول الإعدادات
    CurrentLanguage = DLookup("Language", "SettingsTable")

    ' قم بتحديث العلامات في جميع النماذج
    UpdateLabelsInAllForms
End Sub

' تحديث العلامات في جميع النماذج
Private Sub UpdateLabelsInAllForms()
    Dim frm As AccessObject
    
    ' تحديث العلامات في جميع النماذج المحملة
    For Each frm In CurrentProject.AllForms
        If frm.IsLoaded Then
            UpdateLabelsInForm Forms(frm.Name)
        End If
    Next frm
End Sub

' تحديث العلامات في نموذج محدد
Private Sub UpdateLabelsInForm(frm As Object)
    Dim arFile As String, enFile As String
    Dim arLabels() As String, enLabels() As String
    Dim i As Integer

    ' احصل على ملف اللغة العربية واللغة الإنجليزية
    arFile = GetLanguageFilePath("Arabic.txt")
    enFile = GetLanguageFilePath("English.txt")
    
    ' اقرأ الملفات واملأ المصفوفات بالنصوص المترجمة
    arLabels = Split(ReadFile(arFile), vbCrLf, -1)
    enLabels = Split(ReadFile(enFile), vbCrLf, -1)
    
    ' قم بتحديث العلامات في النموذج
    For i = 0 To UBound(arLabels)
        UpdateLabel frm, "Label" & CStr(i + 1), arLabels(i), enLabels(i)
        UpdateLabel frm, "Command" & CStr(i + 1), arLabels(i), enLabels(i)
    Next i
End Sub

' احصل على مسار قاعدة البيانات الحالية
Private Function GetDatabasePath() As String
    Dim dbPath As String
    dbPath = CurrentDb.Name
    GetDatabasePath = Left(dbPath, InStrRev(dbPath, "\"))
End Function

' احصل على مسار ملف اللغة
Private Function GetLanguageFilePath(fileName As String) As String
    GetLanguageFilePath = GetDatabasePath() & "Language\" & fileName
End Function

' اقرأ ملف النص وارجع النص كنص نصي
Private Function ReadFile(filePath As String) As String
    Dim fileNumber As Integer
    fileNumber = FreeFile
    Open filePath For Input As fileNumber
    ReadFile = Input$(LOF(fileNumber), fileNumber)
    Close fileNumber
End Function

' تحديث علامة محددة في النموذج بناءً على اللغة الحالية
Private Sub UpdateLabel(frm As Object, labelName As String, arabicText As String, englishText As String)
    On Error Resume Next
    
    ' قم بتحديث العلامة بناءً على اللغة الحالية
    frm.Controls(labelName).Caption = IIf(CurrentLanguage = "العربية", arabicText, englishText)
    
    On Error GoTo 0
End Sub

* ملاحظة :- سنعتمد هنا على طريق بسيط جداً وهو المسميات في النماذج ، فمثلاً لو انشأنا زر في نموذج ما وكانت تسميته Caption هي حفظ وكان اسم الزر Command1 ؛ فعند الترجمة سيصبح كل زر في البرنامج باسم Command1 هو بمثابة زر الحفظ وستكون ترجمته Save ؛ لذا سنعتمد طريقة توحيد المسميات في النماذج وهذا سيجعل الأمر سهلاً جداً للصيانة ، وطبعاً لا يمكن أن يكون لعنصرين ( كائنين ) في النموذج لهما نفس الإسم .

 

Pan.png

 

رابعاً :- العودة إلى نموذج Settings الذي تم التحدث عنه في النقطة ( ثانياً ) ؛ سنقوم بدايةً باستكمال إنشاء الأكواد الخاصة بتغيير اللغة ، قبل الأحداث للـ Combo Box والنموذج .

small.Blue-check.png.685b9b4d755a1579b52 سنقوم بإدراج هذه الأكواد الثلاثة البسيطة :-

' تحديث العناصر في النموذج بناءً على اللغة المختارة
Private Sub UpdateLanguageForControls()
    On Error Resume Next
    Dim ctrl As AccessObject
    For Each ctrl In Me.Controls
        ' يمكنك هنا إضافة العناصر الأخرى التي تريد تحديثها بناءً على اللغة
        ' مثلا: If TypeOf ctrl Is ComboBox Then
    Next ctrl
End Sub

' حفظ اختيار اللغة في جدول SettingsTable
Private Sub SaveLanguageChoice()
    CurrentDb.Execute "UPDATE SettingsTable SET Language='" & Me.cboLanguage & "'"
End Sub

' تغيير اللغة وتحديث العناصر ذات الصلة
Private Sub ChangeLanguage(selectedLanguage As String)
    CurrentDb.Execute "UPDATE SettingsTable SET Language='" & selectedLanguage & "'"
    UpdateLanguageForControls
End Sub

small.Blue-check.png.685b9b4d755a1579b52 وفي حدث عند الفتح للنموذج سنقوم بإدراج هذا الكود :-

' حدث يتم تنفيذه عند فتح النموذج
Private Sub Form_Open(Cancel As Integer)
    UpdateLanguage
End Sub

small.Blue-check.png.685b9b4d755a1579b52 وفي حدث عند التحديث للكومبوبوكس سندرج الكود التالي :-

' حدث يتم تنفيذه بعد تحديث اختيار اللغة من ComboBox
Private Sub cboLanguage_AfterUpdate()
    Dim response As VbMsgBoxResult
    Dim Language As String

    ' احصل على اللغة المحددة من ComboBox
    Language = Me.cboLanguage.Value

    ' قم بتحديد الرسالة بناءً على اللغة المختارة
    If Language = "العربية" Then
        response = MsgBox("هل ترغب في تغيير اللغة إلى العربية؟", vbQuestion + vbYesNo, "التأكيد")
    ElseIf Language = "English" Then
        response = MsgBox("Do you want to change the language to English?", vbQuestion + vbYesNo, "Confirmation")
    End If

    ' قم باتخاذ الإجراء المناسب بناءً على رد المستخدم
    If response = vbYes Then
        SaveLanguageChoice
        Application.Quit
    Else
        SaveLanguageChoice
        DoCmd.Close
    End If
End Sub

 

Pan.png

 

الآن نأتي لأهم نقطة في هذا الموضوع ، ألا وهي . أين ستكون الترجمة ؟

طبعاً قمنا سابقاً بإنشاء المجلد Language بجانب قاعدة البيانات ، الآن سنذهب إليه وسنقوم بإنشاء ملفين نصيين Text الأول Arabic.txt ، والثاني English.txt .

في الأعلى افترضنا انه لدينا في النموذج زر اسمه Command1 والـ Caption له كانت حفظ ، الآن سنقوم بكتابة المسمى بالعربي وهو حفظ في ملف النص Arabic ، وفي الملف الثاني English سنكتب Save وهو أول أمر قمنا به كتجربة ( لاحظ أن Command يتبعها الرقم 1 ) وعليه فأن أي مسمى Command1 في أي نموذج سيكون اسمه حفظ أو Save عند اختيار الإنجليزية .

 

وفي النهاية سأترك مرفق يحتوي تطبيق لما تحدثنا به سابقاً .

والمتابعة لأي استفسار أو توضيح :rol:

 

Change Language.zip

تم تعديل بواسطه Foksh
  • Like 7
  • Thanks 3
  • Moosak pinned this topic
قام بنشر
4 دقائق مضت, ابوخليل said:

ما شاء الله تبارك الله

سلمت الأنامل .. عمل جميل ورائع .. وطريقة علمية سلسة

 

مشكور استاذنا ومعلمنا @ابوخليل ، هذا تعليمكم :wub:

قام بنشر

الجميل في هذا .. التوافق مع معالج اكسس لمستخدم النسخة الانجليزية .. لأن اكسس يعطي الازرار هذه التسمية Command1 و 2 ، 3 وهكذا

انا لم ادقق كثيرا .. هل تسميات الحقول والاشياء الأخرى  تتبع تسميات المعالج ايضا ؟

قام بنشر (معدل)
2 دقائق مضت, ابوخليل said:

الجميل في هذا .. التوافق مع معالج اكسس لمستخدم النسخة الانجليزية .. لأن اكسس يعطي الازرار هذه التسمية Command1 و 2 ، 3 وهكذا

انا لم ادقق كثيرا .. هل تسميات الحقول والاشياء الأخرى  تتبع تسميات المعالج ايضا ؟

نعم تتبع 100 %

في الاكواد يوجد ملاحظات لم اتطرق لها ، تركتها محور نقاش لأساتذتي 

تم تعديل بواسطه Foksh
قام بنشر

بكذا انت منحت من يقوم بالتصميم راحة تامة من معاناة اختيار التسميات ... مرة ومرتين ويعتاد على هذه التسميات 

:signthankspin:

  • Like 1
قام بنشر

عمل راااائع ما شاء الله تبارك الرحمن أخي @Foksh  :clapping:

عندي سؤال : لماذا لم تحفظ الترجمة في جدول بالبرنامج بدل حفظها في ملفات خارجية ؟ 🙂 

 

ثانيا : أضفت لمسة للبرنامج وهي أنه يقوم بإعادة تشغيل البرنامج تلقائيا بعد اختيار اللغة المطلوبة 🙂 

وذلك باستخدام هذا الكود :

Sub RestartAccess()
    Dim vbsFilePath As String
    vbsFilePath = CurrentProject.Path & "\Restart.vbs" ' Change the file path as needed
    
    Dim vbsContent As String
    vbsContent = "WScript.Sleep(2000)" & vbCrLf & _
                 "CreateObject(""Shell.Application"").Namespace(0).ParseName(""" & CurrentProject.FullName & """).InvokeVerb ""Open"""
    
    ' Create the VBS file and write the content
    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    Dim vbsFile As Object
    Set vbsFile = fso.CreateTextFile(vbsFilePath, True, False)
    vbsFile.Write vbsContent
    vbsFile.Close
    
    ' Shell execute the VBS file to restart Access
    Shell "wscript.exe """ & vbsFilePath & """", vbNormalFocus
    
    ' Exit Access
    Application.Quit
End Sub

 

 

Change Language.zip

  • Like 2
  • Thanks 2
قام بنشر
1 hour ago, Moosak said:

عمل راااائع ما شاء الله تبارك الرحمن أخي @Foksh  :clapping:

عندي سؤال : لماذا لم تحفظ الترجمة في جدول بالبرنامج بدل حفظها في ملفات خارجية ؟ 🙂 

 

ثانيا : أضفت لمسة للبرنامج وهي أنه يقوم بإعادة تشغيل البرنامج تلقائيا بعد اختيار اللغة المطلوبة 🙂 

وذلك باستخدام هذا الكود :

Sub RestartAccess()
    Dim vbsFilePath As String
    vbsFilePath = CurrentProject.Path & "\Restart.vbs" ' Change the file path as needed
    
    Dim vbsContent As String
    vbsContent = "WScript.Sleep(2000)" & vbCrLf & _
                 "CreateObject(""Shell.Application"").Namespace(0).ParseName(""" & CurrentProject.FullName & """).InvokeVerb ""Open"""
    
    ' Create the VBS file and write the content
    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    Dim vbsFile As Object
    Set vbsFile = fso.CreateTextFile(vbsFilePath, True, False)
    vbsFile.Write vbsContent
    vbsFile.Close
    
    ' Shell execute the VBS file to restart Access
    Shell "wscript.exe """ & vbsFilePath & """", vbNormalFocus
    
    ' Exit Access
    Application.Quit
End Sub

 

 

Change Language.zip 93.45 kB · 0 downloads

هل ممكن تغيير اتجاه مربعات النص جهة اليمين فى حين اختيار اللغه الانجليزيه

والعكس فى حين اختيار اللغه العربيه

  • Like 1
قام بنشر (معدل)

أستاذنا الغالي @Moosak ، نورتني بكلامك الجميل ، 

2 ساعات مضت, Moosak said:

عندي سؤال : لماذا لم تحفظ الترجمة في جدول بالبرنامج بدل حفظها في ملفات خارجية ؟ 🙂 

 

بصراحة حبيت يكون الموضوع مختلف عما قد يخطر في البال ، ومن جهة التعديل سيكون الأمر أسهل من خارج قاعدة البيانات .

 

2 ساعات مضت, Moosak said:

ثانيا : أضفت لمسة للبرنامج وهي أنه يقوم بإعادة تشغيل البرنامج تلقائيا بعد اختيار اللغة المطلوبة 🙂 

 

وبالنسبة للمستك السحرية ، فبارك الله فيك ، وهكذا زاد الجميل جمالاً بالنسبة لي :wub:

مع تصحيح اسم الدالة RestartAccess 

منذ ساعه, safaa salem5 said:

هل ممكن تغيير اتجاه مربعات النص جهة اليمين فى حين اختيار اللغه الانجليزيه

والعكس فى حين اختيار اللغه العربيه

أخت صفاء ، للأسف لم أقم بتطوير الفكرة لهذا الحد :biggrin: ؛ ومن وجهة نظري أعتقد أن لها تبعات أخرى ومشاكل بالنسبة لموضوع الإرتساء للكائنات .

تم تعديل بواسطه Foksh
  • Like 1
قام بنشر

💯💖مشكور على المجهود , مبدع

  • Thanks 1
قام بنشر
منذ ساعه, gavan said:

💯💖مشكور على المجهود , مبدع

يسعدني ويشرفني مرورك العطر 🥰

  • Like 1
قام بنشر
32 دقائق مضت, gamal gamal said:

سلمت يمينك يا غالى 

على الأفكار المفيدة

والأعمال المبدعة 

أشكرك مرورك وتعليقك اللطيف أخونا @gamal gamal :fff:

قام بنشر
5 ساعات مضت, عمر ضاحى said:

ما شاء الله :fff::fff::fff::fff::fff::fff:
مجهود كبير :fff::fff::fff::fff::fff::fff:

🤲 ربنا يجعله فى ميزان حسناتك 🤲

تسلم ايدك :fff::fff::fff::fff::fff::fff:

صديقي العزيز أستاذ عمر ، 🥰

أجمعين يا رب العالمين 🤲

يسعدني ويشرفني مرورك 🤗

قام بنشر
2 دقائق مضت, abofayez1 said:

رائع كعادتك ... شكرا لك 

مرورك الاروع صديقي العزيز 🥰

قام بنشر

الخبير الفا

في 13‏/1‏/2024 at 16:51, Foksh said:

السلام عليكم ورحمة الله وبركاته ، أخواني وأساتذتي ومعلمينا ( دون استثناء )

اليوم جئتكم بفكرة جديدة وأعتقد أنه لم يسبقني أحد بهذا الطريق ؛ وهو إضافة اختيار واجهة اللغة إلى تطبيقات وبرامج ومشاريع الآكسيس بطريقة جديدة وتقدروا تقولوا 2024 :clapping:

في البداية سأقوم بشرح المطلوب داخل القاعدة التي سيتم التطبيق عليها ،

أولاً :- جدول واحد فقط يحتوي على حقل واحد فقط أيضاً وسنسميه بـ SettingsTable ، والحقل الذي بداخله هو Language من نوع نصي ( Text ) .

ثانياً :- نموذج Settings وهو طبعاً ليس له مصدر سجلات .

وبداخله كومبوبوكس Combo box سيكون اسمه cboLanguage نوع مصدر بياناته Value List ؛ ومصدر بياناته القيم التالية ( "العربية";"English" ) .

ثالثاً :- بجانب قاعدة البيانات سنقوم بإنشاء مجلد جديد وسيتم تسميته بـ Language .

 

Pan.png

الآن خطوات العمل :-

small.Blue-check.png.685b9b4d755a1579b52 الموديول Module :- قم بإنشاء Module جديد وسمه بـ Set_Language ؛ وهو مفتاح العمل والذي من خلاله سنعتمد على جلب الترجمة من الملفات التي سنقوم بإنشائها لاحقاً . وهذا الكود مع الشرح الكامل له بين السطور .

Option Compare Database
Option Explicit

' المتغير العام لتخزين اللغة الحالية
Public CurrentLanguage As String

' تحديث اللغة الحالية
Public Sub UpdateLanguage()
    On Error Resume Next

    ' احصل على اللغة المحددة من جدول الإعدادات
    CurrentLanguage = DLookup("Language", "SettingsTable")

    ' قم بتحديث العلامات في جميع النماذج
    UpdateLabelsInAllForms
End Sub

' تحديث العلامات في جميع النماذج
Private Sub UpdateLabelsInAllForms()
    Dim frm As AccessObject
    
    ' تحديث العلامات في جميع النماذج المحملة
    For Each frm In CurrentProject.AllForms
        If frm.IsLoaded Then
            UpdateLabelsInForm Forms(frm.Name)
        End If
    Next frm
End Sub

' تحديث العلامات في نموذج محدد
Private Sub UpdateLabelsInForm(frm As Object)
    Dim arFile As String, enFile As String
    Dim arLabels() As String, enLabels() As String
    Dim i As Integer

    ' احصل على ملف اللغة العربية واللغة الإنجليزية
    arFile = GetLanguageFilePath("Arabic.txt")
    enFile = GetLanguageFilePath("English.txt")
    
    ' اقرأ الملفات واملأ المصفوفات بالنصوص المترجمة
    arLabels = Split(ReadFile(arFile), vbCrLf, -1)
    enLabels = Split(ReadFile(enFile), vbCrLf, -1)
    
    ' قم بتحديث العلامات في النموذج
    For i = 0 To UBound(arLabels)
        UpdateLabel frm, "Label" & CStr(i + 1), arLabels(i), enLabels(i)
        UpdateLabel frm, "Command" & CStr(i + 1), arLabels(i), enLabels(i)
    Next i
End Sub

' احصل على مسار قاعدة البيانات الحالية
Private Function GetDatabasePath() As String
    Dim dbPath As String
    dbPath = CurrentDb.Name
    GetDatabasePath = Left(dbPath, InStrRev(dbPath, "\"))
End Function

' احصل على مسار ملف اللغة
Private Function GetLanguageFilePath(fileName As String) As String
    GetLanguageFilePath = GetDatabasePath() & "Language\" & fileName
End Function

' اقرأ ملف النص وارجع النص كنص نصي
Private Function ReadFile(filePath As String) As String
    Dim fileNumber As Integer
    fileNumber = FreeFile
    Open filePath For Input As fileNumber
    ReadFile = Input$(LOF(fileNumber), fileNumber)
    Close fileNumber
End Function

' تحديث علامة محددة في النموذج بناءً على اللغة الحالية
Private Sub UpdateLabel(frm As Object, labelName As String, arabicText As String, englishText As String)
    On Error Resume Next
    
    ' قم بتحديث العلامة بناءً على اللغة الحالية
    frm.Controls(labelName).Caption = IIf(CurrentLanguage = "العربية", arabicText, englishText)
    
    On Error GoTo 0
End Sub

* ملاحظة :- سنعتمد هنا على طريق بسيط جداً وهو المسميات في النماذج ، فمثلاً لو انشأنا زر في نموذج ما وكانت تسميته Caption هي حفظ وكان اسم الزر Command1 ؛ فعند الترجمة سيصبح كل زر في البرنامج باسم Command1 هو بمثابة زر الحفظ وستكون ترجمته Save ؛ لذا سنعتمد طريقة توحيد المسميات في النماذج وهذا سيجعل الأمر سهلاً جداً للصيانة ، وطبعاً لا يمكن أن يكون لعنصرين ( كائنين ) في النموذج لهما نفس الإسم .

 

Pan.png

 

رابعاً :- العودة إلى نموذج Settings الذي تم التحدث عنه في النقطة ( ثانياً ) ؛ سنقوم بدايةً باستكمال إنشاء الأكواد الخاصة بتغيير اللغة ، قبل الأحداث للـ Combo Box والنموذج .

small.Blue-check.png.685b9b4d755a1579b52 سنقوم بإدراج هذه الأكواد الثلاثة البسيطة :-

' تحديث العناصر في النموذج بناءً على اللغة المختارة
Private Sub UpdateLanguageForControls()
    On Error Resume Next
    Dim ctrl As AccessObject
    For Each ctrl In Me.Controls
        ' يمكنك هنا إضافة العناصر الأخرى التي تريد تحديثها بناءً على اللغة
        ' مثلا: If TypeOf ctrl Is ComboBox Then
    Next ctrl
End Sub

' حفظ اختيار اللغة في جدول SettingsTable
Private Sub SaveLanguageChoice()
    CurrentDb.Execute "UPDATE SettingsTable SET Language='" & Me.cboLanguage & "'"
End Sub

' تغيير اللغة وتحديث العناصر ذات الصلة
Private Sub ChangeLanguage(selectedLanguage As String)
    CurrentDb.Execute "UPDATE SettingsTable SET Language='" & selectedLanguage & "'"
    UpdateLanguageForControls
End Sub

small.Blue-check.png.685b9b4d755a1579b52 وفي حدث عند الفتح للنموذج سنقوم بإدراج هذا الكود :-

' حدث يتم تنفيذه عند فتح النموذج
Private Sub Form_Open(Cancel As Integer)
    UpdateLanguage
End Sub

small.Blue-check.png.685b9b4d755a1579b52 وفي حدث عند التحديث للكومبوبوكس سندرج الكود التالي :-

' حدث يتم تنفيذه بعد تحديث اختيار اللغة من ComboBox
Private Sub cboLanguage_AfterUpdate()
    Dim response As VbMsgBoxResult
    Dim Language As String

    ' احصل على اللغة المحددة من ComboBox
    Language = Me.cboLanguage.Value

    ' قم بتحديد الرسالة بناءً على اللغة المختارة
    If Language = "العربية" Then
        response = MsgBox("هل ترغب في تغيير اللغة إلى العربية؟", vbQuestion + vbYesNo, "التأكيد")
    ElseIf Language = "English" Then
        response = MsgBox("Do you want to change the language to English?", vbQuestion + vbYesNo, "Confirmation")
    End If

    ' قم باتخاذ الإجراء المناسب بناءً على رد المستخدم
    If response = vbYes Then
        SaveLanguageChoice
        Application.Quit
    Else
        SaveLanguageChoice
        DoCmd.Close
    End If
End Sub

 

Pan.png

 

الآن نأتي لأهم نقطة في هذا الموضوع ، ألا وهي . أين ستكون الترجمة ؟

طبعاً قمنا سابقاً بإنشاء المجلد Language بجانب قاعدة البيانات ، الآن سنذهب إليه وسنقوم بإنشاء ملفين نصيين Text الأول Arabic.txt ، والثاني English.txt .

في الأعلى افترضنا انه لدينا في النموذج زر اسمه Command1 والـ Caption له كانت حفظ ، الآن سنقوم بكتابة المسمى بالعربي وهو حفظ في ملف النص Arabic ، وفي الملف الثاني English سنكتب Save وهو أول أمر قمنا به كتجربة ( لاحظ أن Command يتبعها الرقم 1 ) وعليه فأن أي مسمى Command1 في أي نموذج سيكون اسمه حفظ أو Save عند اختيار الإنجليزية .

 

وفي النهاية سأترك مرفق يحتوي تطبيق لما تحدثنا به سابقاً .

والمتابعة لأي استفسار أو توضيح :rol:

 

Change Language.zip 63.88 kB · 35 downloads

الخبير الفاضل والمعلم  المبدع Foksh

شكرا على ابدعاتك المتجددة

  • Thanks 1
قام بنشر
1 ساعه مضت, jo_2010 said:

الخبير الفا

الخبير الفاضل والمعلم  المبدع Foksh

شكرا على ابدعاتك المتجددة

يسعدني مرورك الكريم أخونا @jo_2010

قام بنشر (معدل)

في إحدى التجارب لي على ما تم طرحه في الموضوع ، قمت بتجربة لتجربة سابقة لي في التعامل مع ملفات الـ Dll الوهمية ( الملفات المُعاد تسمية لاحقتها 😅 ) .

فمثلاً بعد تطبيق المسميات للعناصر باللغتين ( العربية ، الإنجليزية ) داخل ملفات Arabic.txt و English.txt قمت بتغيير لاحقة الملفين من txt إلى dll وحتى من داخل الأكواد في المديول في هذين السطرين :-

في 13‏/1‏/2024 at 17:51, Foksh said:
GetLanguageFilePath("Arabic.txt")
    enFile = GetLanguageFilePath("English.txt")

ليصبحا بهذا التغيير :-

GetLanguageFilePath("Arabic.dll")
    enFile = GetLanguageFilePath("English.dll")

وقد كانت التجربة ناجحة 😀 بأن تم قراءة ترجمة المكونات المستهدفة لهذه الوظيفة .

small.Blue-check.png.685b9b4d755a1579b52 قد تكون الفكرة لغير المهتمين غير مجدية ؛ إلا أنها فكرة لحماية الملفات مؤقتا من أيدي العابثين 😅.

إلا أنني وددت مشاركتكم أصوات ( بنات أفكاري ) .

 

ودمتم بخير  🤗

تم تعديل بواسطه Foksh
  • Like 2
قام بنشر (معدل)

السلام عليكم ورحمة الله وبركاته 

في ملاحظة جانبية سأتطرق إليها للتوضيح في نقطة قد يتساءل البعض عنها في هذا الجزء

For i = 0 To UBound(arLabels)
        UpdateLabel frm, "Label" & CStr(i + 1), arLabels(i), enLabels(i)
        UpdateLabel frm, "Command" & CStr(i + 1), arLabels(i), enLabels(i)
    Next i
End Sub

تمت إضافة هذا الجزء من الكود ليشمل الـ Lable كما في الجزء الأول ، والـ Command في الجزء الثاني. حيث أن المسميات ستكون متبوعة برقم وهو الذي سيحدد رقم السطر في ملفات اللغة ( Arabic , English ) ، فهنا نستطيع التوحيد في مسميات البرنامج ( كتوحيد المقامات في الرياضيات 😅 ) طبعاً هنا سنحتاج جزء واحد من السطر ، ولنفترض أن الكود سيصبح بهذا الشكل:-

For i = 0 To UBound(arLabels)
        UpdateLabel frm, "Officna" & CStr(i + 1), arLabels(i), enLabels(i)
    Next i
End Sub

هنا قمت بتوحيد جميع العناصر والكائنات في المشروع ( مربعات نص ، ليبلات ، ازرار ..... إلخ ) تحت اسم Officna

وهنا يسهل علينا - وكما ذكر معلمنا الفاضل @ابوخليل - حفظ المسميات وسهولة الوصول إليها وتحديدها ..

 

ودمتم بخير 🤗

تم تعديل بواسطه Foksh
  • Like 2
قام بنشر
1 ساعه مضت, Moosak said:

أين وضعت الملف المحدث

تم تعديل العبارة بشكل تعبيري أفضل أستاذي الكبير @Moosak

شكراً لك تنبيهي لإعادة صياغة العبارة السابقة :wub:

قام بنشر
4 ساعات مضت, Foksh said:

تم تعديل العبارة بشكل تعبيري

حبيبنا @Foksh  أقترح عليك أن تضع آخر نسخة بالتحديثات وسنقوم بتحديثها في المشاركة الأولى .. وذلك لتسهيل العمل على المستفيدين والمتعلمين أمثالنا :smile:

  • Thanks 1
قام بنشر
19 دقائق مضت, Moosak said:

حبيبنا @Foksh  أقترح عليك أن تضع آخر نسخة بالتحديثات وسنقوم بتحديثها في المشاركة الأولى .. وذلك لتسهيل العمل على المستفيدين والمتعلمين أمثالنا :smile:

أستاذنا الكبير @Moosak

هو لم يكن تحديث بالمعنى الحرفي . أنا فقط اختلطت علي الأمور في التعبير أثناء كتابة الرد . وقمت بشرح نقطة كانت موجودة أساساً ولكني تطرقت إليها :rol:

 

وفي حال وجود تحديثات جديدة ، لن أتأخر في طرحها وتحديث الروابط :fff:

  • Like 1

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information