نمایش نتایج: از شماره 1 تا 5 , از مجموع 5

موضوع: تنظیم خودکار text-align و direction

  1. #1
    عضو جدید amirreza22 آواتار ها
    تاریخ عضویت
    Dec 2009
    محل سکونت
    تهران
    نوشته ها
    47
    تشکر تشکر کرده 
    92
    تشکر تشکر شده 
    31
    تشکر شده در
    26 پست

    پیش فرض تنظیم خودکار text-align و direction

    یه اسکریپتی، کدی،چیزی نمی شناسید باهاش مثل سایت فیس بوک و Google Translate بشه چپ چین یا راست چین بودن متن رو با توجه به زبان نوشتن یعنی فارسی یا انگلیسی تغییر بده؟

    من سورس Google Translate رو که نگاه میکردم، انگار از یه کدجاوا اسکریپت برای تغییر direction و text-align استفاده میکرد.

    کلی گشتم اما نتونستم کدی برای اینکار پیدا کنم.

    اگه بتونیم یه کد صاف و صاف بنویسیم مطمئنا به درد خیلی ها میخوره.

  2. # ADS




     

  3. #2
    عضو دائم Rezash آواتار ها
    تاریخ عضویت
    Feb 2010
    محل سکونت
    مشهد
    نوشته ها
    1,923
    تشکر تشکر کرده 
    889
    تشکر تشکر شده 
    2,385
    تشکر شده در
    1,535 پست

    پیش فرض پاسخ : تنظیم خودکار text-align و direction

    مي توني بگي براي كجا مي خواي ؟ چون شناسايي كاراكتر هاي فارسي از انگليسي دردسر هاي خاص خودش رو داره، عبارات باقاعده و ...
    ولي اگر بتوني بيشتر توضيح بدي براي چجور جايي مي خواي و استفاده و كاربردش در چيه شايد بشه روش بهتري رو پياده سازي كرد.
    بک آپ بگیرید قبل از آنکه پشیمان شوید!
    تشخیص سیستم مدیریت محتوای سایت - سایت شخصی

  4. تعداد تشکر ها ازRezash به دلیل پست مفید


  5. #3
    عضو جدید amirreza22 آواتار ها
    تاریخ عضویت
    Dec 2009
    محل سکونت
    تهران
    نوشته ها
    47
    تشکر تشکر کرده 
    92
    تشکر تشکر شده 
    31
    تشکر شده در
    26 پست

    پیش فرض پاسخ : تنظیم خودکار text-align و direction

    نقل قول نوشته اصلی توسط hello نمایش پست ها
    مي توني بگي براي كجا مي خواي ؟ چون شناسايي كاراكتر هاي فارسي از انگليسي دردسر هاي خاص خودش رو داره، عبارات باقاعده و ...
    ولي اگر بتوني بيشتر توضيح بدي براي چجور جايي مي خواي و استفاده و كاربردش در چيه شايد بشه روش بهتري رو پياده سازي كرد.
    خوبــه شما یه جوابی دادید،ممنون
    من از Wordpress استفاده میکنم، میخواستم با این اسکریپت فرضاً اگه عنوان مطالبم انگلیسی بود از چپ به راست نوشته بشه و اگه فارسی از راست به چپ.
    یا در قسمت نظرات اگه کسی فینگیلیش تایپ کرد، متنش از چپ به راست باشه...

    در مورد عبارات باقاعده خیلی متوجه منظورتون نشدم ولی خوب میشه یه اسکریپت نوشت که:
    تووش همه حروف انگلیسی رو از aتا z بنویسیم، بعد با یه دستور بفهمونیم اگه اول یه نوشته یکی از این حروف بود، متن از چپ به راست نمایش داده بشه، در غیر این صورت از راست به چپ..

    توی بلاگفا یه کدی دیدم که به نظر جالب میومد:
    کد HTML:
    var KeylangFarsi=true;
    // for keypress
    function farsikey(myfield,e)
    {
    var key;
    var basestring=' !"#$%،گ)(×+و-./0123456789:ک,=.؟@ِذ}ىُىلآ÷ـ،/’د×؛َءٍف‘{ًْإ~جژچ^_پشذزیثبلاهتنمئدخحضقسفعرصطغظ<|>ّ';
    if (window.event)
     key = window.event.keyCode;
    else if (e)
     key = e.which;
    
    if (key < 0x0020 || key >= 0x00FF) return true; 
    if (KeylangFarsi==true)
    {
    	if (window.event)
    	 window.event.keyCode=basestring.charCodeAt(key-32);
    	else if (e)
    	 e.which=basestring.charCodeAt(key-32);
    }
     return true;
    }
    
    // function for keydown
    function changelang(objtext1)
    {
    	if (window.event.keyCode==119) 
    		KeylangFarsi =(KeylangFarsi==true) ? false : true ;
        if (window.event.altKey && window.event.shiftKey )  
    		KeylangFarsi = false ;
    	 return true;
    }
    و همینطور یه کد خیلی بهتر که با جاوا اسکریپت انگار امکان فارسی نوشتن رو فراهم میسازه که خیلی جالبه...:
    کد HTML:
    /* isiri2901.js - Standard Persian keyboard driver for JavaScript
     *
     * Copyright (C) 2000  Roozbeh Pournader
     * Copyright (C) 2003, 2005  Behdad Esfahbod
     * Copyright (C) 2005, 2006  Pooya Karimian
     * Copyright (C) 2005  Behnam Esfahbod
     * Copyright (C) 2005  Artyom Lukanin
     *
     * ChangeLog:
     * Mar 05, 2005  Pooya Karimian, FireFox/Mozilla support added.
     * Mar 20, 2005  Behdad Esfahbod, random fixes in Firefox support.
     * Apr 14, 2005  Behnam Esfahbod, U+0654, U+0670, U+00F7 added.
     * Apr 21, 2005  Behdad Esfahbod, Minimal Opera 8.0 support added.
     *               Alt+Ctrl+anything now is known to switch language.
     * Sep 06, 2005  Artyom Lukanin, FireFox 1.0.6 support added.
     * Sep 09, 2005  Behdad Esfahbod, Added fallback support back in,
     *               removed Opera code that doesn't was not worth it.
     * Sep 09, 2005  Behdad Esfahbod, Make toggleDir() with no object
     *               passed changing language, actually work.
     * Sep 09, 2005  Added U+FDFC RIAL SIGN!
     * Sep 09, 2005  Assigned U+0653 to shift+X.
     * Dec 02, 2005  Pooya Karimian, Fixing vertical & horizontal scrolling
     * Apr 13, 2006  Pooya Karimian, initKeyEvent is back in Firefox 1.5.0.2 (FF Bug#303713)
     *
     * Licensed under GNU GPL.
     */
    
    var isiri2901_lang = 1;        // 1: Persian, 0: English
    var isiri2901_nativelang = 0;  // 1: Persian, 0: English
    
    // Persian keyboard map based on ISIRI-2901
    
    var isirikey = [
      0x0020, 0x0021, 0x061B, 0x066B, 0xFDFC, 0x066A, 0x060C, 0x06AF,
      0x0029, 0x0028, 0x002A, 0x002B, 0x0648, 0x002D, 0x002E, 0x002F,
      0x06F0, 0x06F1, 0x06F2, 0x06F3, 0x06F4, 0x06F5, 0x06F6, 0x06F7,
      0x06F8, 0x06F9, 0x003A, 0x06A9, 0x003E, 0x003D, 0x003C, 0x061F,
      0x066C, 0x0624, 0x200C, 0x0698, 0x064A, 0x064D, 0x0625, 0x0623,
      0x0622, 0x0651, 0x0629, 0x00BB, 0x00AB, 0x0621, 0x0654, 0x005D,
      0x005B, 0x0652, 0x064B, 0x0626, 0x064F, 0x064E, 0x0670, 0x064C,
      0x0653, 0x0650, 0x0643, 0x062C, 0x005C, 0x0686, 0x00D7, 0x0640,
      0x200D, 0x0634, 0x0630, 0x0632, 0x06CC, 0x062B, 0x0628, 0x0644,
      0x0627, 0x0647, 0x062A, 0x0646, 0x0645, 0x067E, 0x062F, 0x062E,
      0x062D, 0x0636, 0x0642, 0x0633, 0x0641, 0x0639, 0x0631, 0x0635,
      0x0637, 0x063A, 0x0638, 0x007D, 0x007C, 0x007B, 0x007E
    ];
    
    // on Alt+Ctrl+anything, switch language
    function PersianKeyDown(e)
    {
      if (window.event)
        e = window.event;
      if (e.ctrlKey && e.altKey) {
        if (isiri2901_lang == 0)
          setPersian();
        else
          setEnglish();
        try {
          e.preventDefault();
        } catch (err) {
        }
        return false;
      }
      return true;
    }
    
    var pk_test_ev;
    
    function PersianKeyPress(e)
    {
      var key;
      var obj;
    
    
      if (window.event) {
        e = window.event;
        obj = e.srcElement;
        key = e.keyCode;
      } else {
        obj = e.target;
        key = e.charCode;
      }
    
      if (e.bubbles==false)
        return true;
    
     //   This cannot be used anymore, in FF 1.5.0.2, as a new event will call keypress again.
     //  Change to English, if user is using an OS non-English keyboard
      if (key >= 0x00FF) {
        isiri2901_nativelang = 1;
        setPersian();
      } else
        if (isiri2901_nativelang == 1) {
          isiri2901_nativelang = 0;
          setEnglish();
        }
    
    
      // Avoid processing if control or higher than ASCII
      // Or ctrl or alt is pressed.
      if (key < 0x0020 || key >= 0x007F || e.ctrlKey || e.altKey || e.metaKey)
        return true;
    
      if (isiri2901_lang == 1) { //If Persian
    
        // rewrite key
        var newkey;
        if (key == 0x0020 && e.shiftKey) // Shift-space -> ZWNJ
          newkey = 0x200C;
        else
          newkey = isirikey[key - 0x0020];
        
        if (newkey == key) 
          return true;
        
    
        try {
          // Gecko 
          var new_event=document.createEvent("KeyEvents");
          new_event.initKeyEvent("keypress", false, true, document.defaultView, false, false, false, false, 0, newkey);
          obj.dispatchEvent(new_event);
          e.preventDefault();
        } catch (err) {
        try {
          // Windows
          e.keyCode = newkey;
        } catch (err) {
        try {
          // Gecko after banning fake key emission (FF 1.0.6 to FF 1.5.0.1)
          // Try inserting at cursor position
          pnhMozStringInsert(obj, String.fromCharCode(newkey));
          e.preventDefault();
        } catch (err) {
          // Everything else, simply add to the end of buffer
          obj.value += String.fromCharCode(newkey);
          e.preventDefault();
        }}}
      }
      return true;
    }
    
    
    function setPersian (obj, quiet)
    {
      isiri2901_lang = 1;
      if (obj) {
        obj.style.textAlign = "right";
        obj.style.direction = "rtl";
        obj.focus();
      }
      if (!quiet)
        window.defaultStatus = "Persian Keyboard (Press Ctrl+Alt+Space to change to English)";
    }
    
    
    function setEnglish (obj, quiet)
    {
      isiri2901_lang = 0;
      if (obj) {
        obj.style.textAlign = "left";
        obj.style.direction = "ltr";
        obj.focus();
      }
      if (!quiet)
        window.defaultStatus = "English Keyboard (Press Ctrl+Alt+Space to change to Persian)";
    }
    
    
    function toggleDir (obj, quiet) {
      var isrtl = 0;
      if (obj)
        isrtl = obj.style.direction != 'ltr';
      else
        isrtl = isiri2901_lang;
      if (isrtl)
       setEnglish(obj, quiet);
      else
       setPersian(obj, quiet);
    }
    
    // Inserts a string at cursor
    function pnhMozStringInsert(elt, newtext) {
    	var posStart = elt.selectionStart;
    	var posEnd = elt.selectionEnd;
    	var scrollTop = elt.scrollTop;
    	var scrollLeft = elt.scrollLeft;
    	
            elt.value = elt.value.slice(0,posStart)+newtext+elt.value.slice(posEnd);
            var newpos = posStart+newtext.length;
            elt.selectionStart = newpos;
            elt.selectionEnd = newpos;	
            elt.scrollTop = scrollTop;
            elt.scrollLeft = scrollLeft;
            elt.focus();
    	
    }
    اطلاعات بیشتر در مورد کد دوم در اینجا : Persian Javascript | Codes | Pooya Karimian

    این سوال در انجمنهای مجیدآنلاین،P30World،iranphp،WP-Persian مطرح شده ولی کسی نتوسته جواب بده
    ویرایش توسط amirreza22 : October 8th, 2010 در ساعت 12:17

  6. #4
    عضو دائم Rezash آواتار ها
    تاریخ عضویت
    Feb 2010
    محل سکونت
    مشهد
    نوشته ها
    1,923
    تشکر تشکر کرده 
    889
    تشکر تشکر شده 
    2,385
    تشکر شده در
    1,535 پست

    پیش فرض پاسخ : تنظیم خودکار text-align و direction

    اگر قرار باشه خود متن رو تجزيه و تحليل كنيم و ببينيم راست چين باشه يا چپ چين در خيلي از موارد خطا و اشتباه زياد هست...خيلي رو بولد كردم چون در بيشتر موارد هست !
    به نظر من بهتر هست براي بخش نظرات و ارسال مطلب يك اديتور بذاريد (فكر كنم wp چنين امكاني رو داشته باشه) و كاربر دستي با فشردن يك دكمه هر جاي متنش رو كه خواست راست چين يا چپ چين كنه
    گاهي در يك متن ما هم جملات فارسي داريم و هم انگليسي...
    بهر حال قابل پياده سازي هست و مي تونيم يك آرايه از حروف فارسي رو بسازيم.
    متن وارد شده رو حرف به حرف بررسي كنيم و اگر در آرايه بود راست چين كنيم و عمليات بررسي حروف رو تا وقتي ادامه بديم كه يا به يك حرف فارسي برسيم يا حروف تموم بشه
    بهر حال توصيه من اديتور هست كه دست كاربر رو باز تر ميذاره و روشي هم كه گفتم يك روش پيشنهادي هست.
    بک آپ بگیرید قبل از آنکه پشیمان شوید!
    تشخیص سیستم مدیریت محتوای سایت - سایت شخصی

  7. #5
    عضو جدید amirreza22 آواتار ها
    تاریخ عضویت
    Dec 2009
    محل سکونت
    تهران
    نوشته ها
    47
    تشکر تشکر کرده 
    92
    تشکر تشکر شده 
    31
    تشکر شده در
    26 پست

    پیش فرض پاسخ : تنظیم خودکار text-align و direction

    یک کد که اولین حرف از متن رو چک کنه و ببینه فارسی هست یا انگلیسی به نظرم کافیه،حداقل برای عناوین مطالب..

اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

موضوعات مشابه

  1. دریافت اطلاعات با متد با php و ذخیره در فایل text
    توسط iransmspanel.com در انجمن PHP-MySQL
    پاسخ ها: 5
    آخرين نوشته: July 12th, 2015, 02:06
  2. کار با ابزار Text Tools در فتوشاپ
    توسط makranvps.ir در انجمن مباحث دیگر
    پاسخ ها: 0
    آخرين نوشته: August 14th, 2013, 02:02
  3. عدم اجرای کد vertical-align
    توسط sm_pakdel در انجمن PHP-MySQL
    پاسخ ها: 4
    آخرين نوشته: July 22nd, 2011, 23:57
  4. سوال در مورد محاسبه مقدار text bob
    توسط aghaee در انجمن PHP-MySQL
    پاسخ ها: 0
    آخرين نوشته: December 28th, 2010, 23:43

مجوز های ارسال و ویرایش

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