توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : تنظیم خودکار text-align و direction
amirreza22
October 8th, 2010, 12:01
مي توني بگي براي كجا مي خواي ؟ چون شناسايي كاراكتر هاي فارسي از انگليسي دردسر هاي خاص خودش رو داره، عبارات باقاعده و ...
ولي اگر بتوني بيشتر توضيح بدي براي چجور جايي مي خواي و استفاده و كاربردش در چيه شايد بشه روش بهتري رو پياده سازي كرد.
خوبــه شما یه جوابی دادید،ممنون;)
من از Wordpress استفاده میکنم، میخواستم با این اسکریپت فرضاً اگه عنوان مطالبم انگلیسی بود از چپ به راست نوشته بشه و اگه فارسی از راست به چپ.
یا در قسمت نظرات اگه کسی فینگیلیش تایپ کرد، متنش از چپ به راست باشه...
در مورد عبارات باقاعده خیلی متوجه منظورتون نشدم ولی خوب میشه یه اسکریپت نوشت که:
تووش همه حروف انگلیسی رو از aتا z بنویسیم، بعد با یه دستور بفهمونیم اگه اول یه نوشته یکی از این حروف بود، متن از چپ به راست نمایش داده بشه، در غیر این صورت از راست به چپ..
توی بلاگفا یه کدی دیدم که به نظر جالب میومد:
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;
}
و همینطور یه کد خیلی بهتر که با جاوا اسکریپت انگار امکان فارسی نوشتن رو فراهم میسازه که خیلی جالبه...:
/* 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.slic e(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 (http://pooyak.com/p/persianjavascript/)
این سوال در انجمنهای مجیدآنلاین،P30World،iranphp،WP-Persian مطرح شده ولی کسی نتوسته جواب بده=D>
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.