اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

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

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

اليوم جئتكم بفكرة جديدة وأعتقد أنه لم يسبقني أحد بهذا الطريق ؛ وهو إضافة اختيار واجهة اللغة إلى تطبيقات وبرامج ومشاريع الآكسيس بطريقة جديدة وتقدروا تقولوا 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
رابط هذا التعليق
شارك

عمل راااائع ما شاء الله تبارك الرحمن أخي @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
رابط هذا التعليق
شارك

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:

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

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

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

رابط هذا التعليق
شارك

الخبير الفا

في 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