نمایش نتایج 1 تا 16 از 16

نام تاپیک: تشخیص زبان متن

  1. #1
    کاربر دائمی آواتار milade
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    شیراز
    پست
    2,189

    تشخیص زبان متن

    سلام
    ببخشید من یه Textbox دارم که داخلش کاربر یه متن مینویسه .
    حالا میخوام زبان متن رو تشخیص بدم ، حالا چه فارسی ، انگلیسی و ...
    اولا اگه دارید یه نمونه کد بیدید
    اگه هم نه کلاسش رو بگید تا خودم استفاده کنم .
    (نظر خودم کد اسکی هست . این چه طوره؟)
    ممنون از همگی

  2. #2
    کاربر دائمی آواتار nokhodsiah2001
    تاریخ عضویت
    اردیبهشت 1386
    محل زندگی
    مشهد
    پست
    222

    نقل قول: تشخیص زبان متن

    سلام عزیز
    فکر کنم با تشخیص زبان کی بورد مشکلت حل می شه البته من ابتدا برنامه زبان رو فارسی میکنم ولی تا حالا سعی نکردم مثل شما عمل کنم
    اینو ببین


    Public
    DeclareFunction LoadKeyboardLayout Lib"user32"Alias"LoadKeyboardLayoutA" (ByVal pwszKLID AsString, ByVal flags AsInteger) AsInteger


    برای فارسی کردن کی بورد هم از این استفاده میکنم


    LoadKeyboardLayout(
    "00000429", 1)


    نمی دونم به دردتون می خوره یا من اشتباه متوجه شدم

  3. #3
    کاربر دائمی آواتار milade
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    شیراز
    پست
    2,189

    نقل قول: تشخیص زبان متن

    با تشکر از شما
    اما فکر کنم بد عنوان کردم
    ببینید کاربر یه متن رو که من نمیدونم چی هست مثلا از یه جایی کپی میکنه ( مثلا چینی )
    خوب حالا حتما الزام نیست که کیبورد هم چینی باشه چون در حد یه کپی و paste هستش
    خوب حالا میخوام برنامه بتونه تشخیص بده زبان چیه !
    با تشکر فراوان

  4. #4

    نقل قول: تشخیص زبان متن

    سلام آقا ميلاد
    اتفاقاً اين كاري كه شما مي‌فرماييد، همانند Auto Keyboard Switching از نرم‌افزارهاي Microsoft Office هست.
    كاش مي‌توانستم كمكتون كنم. خودم هم خيلي دنبال جواب اين مسئله بودم، به صورت انگليسي و فارسي نيز در Google جستجو كردم و هيچي پيدا نكردم.
    خودم يك راه حلي به نظرم رسيد كه حوصله نكردم آن را اجرا كنم. آن هم اين كه بايد يك روال يا ماژول بنويسيد و حروف مختلف از زبان‌هاي مختلف را در آن تعريف كنيد.
    سپس اين روال هميشه بايد در حال جستجوي متن باشد. مثلاً با استفاده از تايمر مشخص نماييد كه اين روال هر چند ثانيه يا كمتر، متن موجود در محل Cursor را چك كند و اگر متن فارسي بود، Keyboard را با استفاده از كدي كه دوست عزيزمون دادند، فارسي كند و اگر انگليسي بود، انگليسي كنه.
    براي زبان‌هاي ديگر هم همين طور.
    اين تنها راه حلي است كه به ذهن من مي‌رسد.
    اميدوارم كمكتون كنه.
    خودم كه حوصله نكردم اين طرح را پياده كنم.
    البته اين توضيح لازمه كه من در VB6 اين كار را مي‌خواستم انجام بدهم. شايد VB.Net خود به خود اين كار را انجام بده.
    در ضمن اگر كسي اين كد را به هر شيوه‌اي، نوشت، خواهشاً در اختيار بقيه قرار بده كه خيلي لازمه.
    در هر صورت، اميدوارم شما بتوانيد.

  5. #5
    کاربر دائمی آواتار nafasak
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    وب
    پست
    151

    Exclamation نقل قول: تشخیص زبان متن

    نقل قول نوشته شده توسط nokhodsiah2001 مشاهده تاپیک
    برای فارسی کردن کی بورد هم از این استفاده میکنم


    LoadKeyboardLayout("00000429", 1)

    سلام،

    ببخشید کد بالا رو کجا باید نوشت ؟؟

  6. #6

    Smile شكايت از دوستان محترم اين سايت

    با سلام به دوستان گرامي و عرض خسته نباشيد
    ابتدا جواب جناب nafasak
    همان طور كه دوست عزيزمون جناب nokhodsiah2001 فرمودند، شما بايد ابتدا كد زير را در ابتداي قسمت كد نويسي برنامة خودتان وارد كنيد. همة اين كد كاملاً در يك خط قرار مي‌گيرد. منظور از ابتداي قسمت كد نويسي را عرض مي‌كنم. شما روي Form دو بار كليك كنيد. صفحة كد نويسي باز مي‌شود. سپس در بالاترين قسمت آن، كه Declaration نام دارد، اين كد را Copy & Paste كنيد.



    Public Declare Function LoadKeyboardLayout Lib "user32" Alias "LoadKeyboardLayoutA" (ByVal pwszKLID As String, ByVal flags As Long) As Long
    Private Declare Function LoadKeyboardLayout Lib "user32" Alias "LoadKeyboardLayoutA" (ByVal pwszKLID As String, ByVal flags As Long) As Long



    سپس مي‌توانيد از كد زير در يك CommandBotton يا يك روال در هر جاي فرم براي تغيير زبان استفاده نماييد. فقط اين توضيح لازمه كه براي زبان فارسي از عدد "00000429" و براي زبان لاتين از عدد "00000409" استفاده نماييد.

    LoadKeyboardLayout("00000429", 1)


    خوب حالا از دوستان محترم و برنامه‌نويسان اين سايت شكايت دارم.
    يعني يك نفر در اين سايت به اين بزرگي كه مرجع برنامه‌نويسان فارسي زبان در دنيا است، وجود ندارد كه قبلاً روي «تشخيص زبان متن» كار كرده باشد.
    من كه خودم هر چه سعي كردم نتوانستم اين كار را انجام بدهم. از دوستان خواهشمندم اگر كسي هست، لطفاً جواب بده.
    مي‌خواهم وقتي در يك TextBox، وقتي كاربر، روي متن داخل TextBox كليك كرد، برنامه خودش تشخيص بدهد كه زبان اين متن فارسي يا لاتين است. و سپس به طور خودكار زبان جاري صفحه كليد را عوض كند.
    عوض كردن زبان كه در بالا آمده و دوستان در چندين پست مختلف آن را مطرح كردند. يك نمونه هم در همين پست وجود دارد.
    اما «تشخيص زبان متن» به جواب نرسيده؟

    قبلاً از كمك همة دوستان سپاسگزارم.
    آخرین ویرایش به وسیله minamorad : شنبه 01 خرداد 1389 در 07:58 صبح دلیل: تصحيح مجدد تابع API

  7. #7

    نقل قول: تشخیص زبان متن

    برای انجام این کار (اگر فقط دو زبان فارسی و انگلیسی مدنظر باشند) میتوانید از روش مقایسه کد های اسکی استفاده کنی.
    نقطه شروع و پایان کد های اسکی در زبان های فارسی و انگلیسی با هم متفاوت است که میتوانید بررسی کنید که در صورتی که کد اسکی X در رنج کد های اسکی انگلیسی بود متن انگلیسی و اگر در رنج کد های فارسی بود، فارسی است. برای بالا بردن دقت عمل میتوانید تمام کاراکتر ها را چک کنید که در صورتی که از هر دوزبان استفاده شده بود برنامه به درستی پاسخ دهد.
    دانلود حسابخانه مانی، برنامه مدیریت درآمد و هزینه رایگان

    هر آنچه که هستیم، نتیجه افکاریست که در گذشته داشته ایم. (بودا)
    واحد فاصله «متر» نیست، «اشتیاق» است. اگر مشتاقش باشی حتی يک قدم هم فاصله ای دور است.

    رنگ رنگی | آموزش

  8. #8

    Smile نقل قول: تشخیص زبان متن

    با سلام و تشكر فراوان، جناب Mani_rf

    از اين كه جواب اينجانب رو داديد واقعاً متشكرم. ولي يك مشكلي هست، (البته در VB) و آن اين كه من نتونستم اين كار را انجام بدم. البته مدت زيادي روي اين مسئله فكر كردم. ولي به هيچ نتيجه‌اي نرسيدم.
    البته، همان طور كه در پست 4 گفتم، مي‌خواهم كاري كنم كه تقريباً شبيه به Auto Keyboard Switching برنامة Microsoft Office بشه. يعني زماني كه روي هر كلمه يا حرف كليك مي‌كنيد، يا Cursor را در TextBox حركت مي‌دهيد، وقتي به كلمه‌اي از زبان ديگر مي‌رسيد، به صورت خودكار زبان را تشخيص بدهد و زبان را عوض كند.
    شما برنامة نمونه داريد. آيا قبلاً براي اين كار كدي نوشته‌ايد؟
    اگر نوشتيد، مي‌توانم خواهش كنم آن را براي استفاده قرار بدهيد.
    اگر تمايل به ارائة كدتان نداريد، خواهش مي‌كنم بيشتر راهنمايي كنيد.

    باز هم از راهنمايي شما سپاسگزارم.
    آخرین ویرایش به وسیله minamorad : شنبه 01 خرداد 1389 در 08:00 صبح دلیل: تصحيح و اضافه نمودن تقاضا

  9. #9
    کاربر دائمی آواتار naser_feb8646
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    زیر سایه امیرالمومنین
    پست
    244

    نقل قول: تشخیص زبان متن

    سلام
    خوب دوست عزیز شما از همان روشی که Mani_rf برای تعیین زبان استفاده کنید و در رویداد کلیک و چنج تکست باکس قرارش بدین و بعد با تشخیص نوع زبان صفحه کلید رو عوض کنید

  10. #10

    Smile لطفاً اين برنامه را تست و عيب‌يابي كنيد (تشخيص زبان متن)

    سلام مخصوص خدمت جناب Mani_rf
    از راهنمايي خوبتون در پست 7 متشكرم

    بعد از اين كه دوباره سعي كردم، توانستم برنامه‌اي بنويسم كه اين كار را انجام بده، ولي حالا به مشكلات ديگري برخورد كردم.
    سورس كد (VB6) را با مقداري توضيح برايتان مي‌گذارم، لطفاً راهنمايي كنيد.

    روال GetChar
    اين روال از TextBox جاري، و از محل جاري مكان‌نما يك حرف را انتخاب مي‌كند، در صورتي كه حرف مساوي با يكي از حروف زير بود، بدون انجام هيچ عملي و بدون تغيير زبان، از روال خارج مي‌شود.
    حروف ممنوع: ".:!@#$%^&*()_+-=<>/\|" و حرف فاصله يا Space " " (جمعاً 22 حرف)
    توضيح: چون اين حروف به صورت پيش‌فرض در VB6 به صورت لاتين شناخته مي‌شوند، به همين دليل به محض تشخيص آنها، دستور Exit را قرار دادم. اگر كسي پيشنهاد يا راه حل بهتري دارد، لطفاً ارائه نمايد.
    در صورتي كه حرف انتخاب شده، ممنوع نبود، آن حرف به روال FindCharAsciiCode ارسال مي‌شود.

    در ضمن به جاي lblCursorPosition.Caption عبارت txtText.SelStart را وارد نماييد.


    Public Sub GetChar()
    Dim lngStart As Long
    Dim lngEnd As Long
    Dim strChar As String

    If txtText(intID).Text = "" Then
    Exit Sub
    End If

    lngStart = CLng(Val(lblCursorPosition.Caption))
    lngEnd = Len(txtText(intID).Text)

    If lngStart >= lngEnd Then
    lngStart = lngEnd - 1
    End If

    strChar = Mid(txtText(intID).Text, lngStart + 1, 1)

    If strChar = " " Or strChar = "." _
    Or strChar = ":" Or strChar = "!" _
    Or strChar = "@" Or strChar = "#" _
    Or strChar = "$" Or strChar = "%" _
    Or strChar = "^" Or strChar = "&" _
    Or strChar = "*" Or strChar = "(" _
    Or strChar = ")" Or strChar = "_" _
    Or strChar = "+" Or strChar = "-" _
    Or strChar = "=" Or strChar = "<" _
    Or strChar = ">" Or strChar = "/" _
    Or strChar = "\" Or strChar = "|" Then
    Exit Sub
    End If

    FindCharAsciiCode strChar
    End Sub


    روال FindCharAsciiCode
    اين روال حرف دريافت شده را در دو حلقة For بررسي مي‌نمايد. اگر كد اسكي اين حرف، با عدد شمارندة حلقه (يعني lngLatin يا lngFarsi) برابر بود، متغير بولين كه قبلاً در قسمت Declaration مربوط به Form تعريف شده، متناسب با كد حرف و زبان مورد نظر True يا False مي‌شود.
    در اين برنامه نام اين متغير بولين blnFarsi است. اگر حرف مورد نظر لاتين بود، اين متغير False و اگر فارسي بود، True مي‌شود.
    سپس روال Language اجرا مي‌شود.



    Public Sub FindCharAsciiCode(ByVal Char As String)
    On Error Resume Next

    Dim lngLatin As Long
    Dim lngFarsi As Long

    For lngLatin = 32 To 128
    If Asc(Char) = lngLatin Then
    blnFarsi = False
    End If
    Next lngLatin

    For lngFarsi = 129 To 254
    If Asc(Char) = lngFarsi Then
    blnFarsi = True
    End If
    Next lngFarsi

    Language
    End Sub


    روال Language
    اين روال با يك حلقة شرطي IF غلط (False) يا درست (True) بودن متغير blnFarsi را بررسي مي‌نمايد.
    اگر متغير blnFarsi برابر False باشد، زبان صفحه كليد با استفاده از تابع API با نام LoadKeyboardLayout لاتين مي‌شود و اگر True باشد زبان صفحه كليد فارسي مي‌شود.



    Public Sub Language()
    If blnFarsi = False Then
    lblLanguage.Caption = strEn
    LoadKeyboardLayout "00000409", 1
    ElseIf blnFarsi = True Then
    lblLanguage.Caption = strFa
    LoadKeyboardLayout "00000429", 1
    End If
    End Sub



    راستي، كامپيوترم ويروسيه، وگرنه Source مي‌گذاشتم.
    از كمك و راهنمايي‌هاي همة شما سپاسگزارم.
    آخرین ویرایش به وسیله minamorad : یک شنبه 02 خرداد 1389 در 07:24 صبح دلیل: تصحيح متن

  11. #11

    Smile خواهش مي‌كنم اين متن را بخوانيد

    سلام

    يعني يك نفر هم پيدا نشد كه برنامة من را تست كند و انتقادي، پيشنهادي چيزي داشته باشد.

    از شما دوستان عزيز خواهش مي‌كنم.
    من مبتدي هستم و خيلي به برنامه‌نويسي وارد نيستم!
    اگر شما كمكم نكنيد و انتقاد و پيشنهاد ندهيد، در آينده نمي‌توانم برنامه‌نويس خوبي باشم.

    پس بي‌صبرانه خواهش مي‌كنم، برنامه پست قبل را تست كنيد.

    اميد من، اول به خداست بعد هم به شما.

    متشكرم.

  12. #12

    نقل قول: تشخیص زبان متن

    شما برای این کار کافی است زمانی که مکان ، مکان نما عوض شدن حرف قبلی و بعدی آن را چک کنی تا بتوانی زبان مورد نظر را بیابی و زبان کیبرد را عوض کنی.
    من متوجه نشدم با VB6 کار میکنی یا با VB.NET؟
    دانلود حسابخانه مانی، برنامه مدیریت درآمد و هزینه رایگان

    هر آنچه که هستیم، نتیجه افکاریست که در گذشته داشته ایم. (بودا)
    واحد فاصله «متر» نیست، «اشتیاق» است. اگر مشتاقش باشی حتی يک قدم هم فاصله ای دور است.

    رنگ رنگی | آموزش

  13. #13

    Smile تقاضاي تست برنامه Source (تشخیص زبان متن)

    سلام به همة دوستان و جناب Mani_rf

    از اين كه مجدداً شما اولين نفري هستيد كه به كمك بنده آمديد، از شما ممنونم.
    البته من هر چه سعي كردم، فقط توانستم حرف بعدي مكان‌نما را بخوانم و چك كنم. توي برنامه‌اي كه گذاشتم امتحان نماييد، متوجه مي‌شويد. به راهنمايي شما و همة دوستان محتاجم.

    چون، توي كل سايت برنامه‌نويس به دنبال «تشخيص زبان متن» گشتم و چيزي پيدا نكردم، و فقط همين يك تاپيك را پيدا كردم، به خاطر همين مجبور شدم سئوالم را اينجا مطرح كنم.

    من با زبان VB6 كار مي‌كنم. باز هم عذر مي‌خواهم اگر سئوال من از يك زبان قديميه. مي‌دانم كه نبايد در تاپيك مخصوص VB.Net سئوال VB بپرسم. خواهش مي‌كنم به بزرگواري خودتان ببخشيد.

    در ضمن خدمت همه عرض مي‌كنم كه Source با آنتي ويروس جديد McAfee و به روز چك شده و آن را براي تست در اختيار دوستان قرار مي‌دهم.

    متشكرم
    فایل های ضمیمه فایل های ضمیمه

  14. #14

    Smile چشم انتظار نظر اساتيد برنامه‌نويسي

    سلام

    خيلي شرمنده‌ام كرديد با تمام نظرها، انتقادات و پيشنهادات سازنده‌تان.

    خواهش مي‌كنم هر كس اين برنامه را تست كرده، هر انتقادي يا پيشنهادي براي بهتر شدن برنامه دارد، بگويد.
    من منتظر نظر همة دوستان در اين مورد هستم.
    تو رو خدا من رو بيشتر از اين منتظر نگذاريد.

    متشكرم.

  15. #15

    Smile كسي نتونست مشكل اين برنامه را بگه

    سلام.

    خودم يك مشكل پيدا كردم. ولي راه حلي ندارم. با توجه به Source كه در اختيارتان قرار گرفته، لطف كنيد راهنمايي كنيد.
    مشكل: وقتي Cursor در يك كلمة فارسي قرار دارد، اگر كليدهاي Alt+Left Shift را بزنيد. به صورت اتوماتيك، مجدداً زبان به فارسي تغيير مي‌كند! كسي راه حلي نداره.
    البته يك راه حل هست، و آن هم اين كه دستورات داده شده در رويداد Timer را حذف كنم. ولي با اين كار ديگه «تشخيص زبان متن» تقريباً از كار مي‌افته.
    لطفاً راهنمايي كنيد.

    متشكرم.

  16. #16

    Smile چه قدر من حرفه‌اي هستم

    سلام

    تا به حال اين قدر از بي‌جواب ماندن خوشحال نشده بودم. چون الآن فكر مي‌كنم برنامه‌نويس از من حرفه‌اي‌تر پيدا نمي‌شه كه نتونسته يك اشكال از اين برنامه بگيره.

    جاي تعجب داره كه بنده خودم سئوال مطرح مي‌كنم و خودم هم بايد دنبال جوابش باشم.

    خواهش مي‌كنم كمك كنيد. انتقاد، پيشنهاد، ايراد يا اشكال برنامه را به من بگوييد.

    متشكرم.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •