فهرست مستندات پروژه
اصلاح کیبورد
تبدیل متن تایپشده با چیدمان اشتباه بین کیبورد فارسی و انگلیسی.
KeyboardFixer کلیدهای QWERTY انگلیسی و چیدمان استاندارد فارسی ایران را به هم تبدیل میکند. مثلا اگر کاربر برای نوشتن «سلام» کلید زده ولی کیبورد انگلیسی بوده، متن sghl را اصلاح میکند.
<?php
require 'vendor/autoload.php';
use Eram\Abzar\Text\KeyboardFixer;
echo KeyboardFixer::enToFa('sghl'), "\n";
echo KeyboardFixer::faToEn('سلام'), "\n";
echo KeyboardFixer::enToFa('ldBv,l'), "\n";
var_dump(KeyboardFixer::detect('hello'));
سلام
sghl
میروم
bool(false)
رفتار
حروف لاتین و چند علامت نگاشت میشوند. ارقام، فاصله و کاراکترهای خارج از نگاشت حفظ میشوند. در enToFa() متن فارسی، کشیده و نیمفاصله دستنخورده میمانند.
حروف بزرگ مطابق لایه Shift استاندارد ISIRI 9147 هستند: H به آ، C به ژ، M به ء، B به نیمفاصله، K و L به » و «، A به ؤ و S به ئ تبدیل میشوند. faToEn() جهت برعکس را انجام میدهد؛ مثلا faToEn(enToFa('Hfhn')) همان Hfhn است. [ و ] انگلیسی در faToEn() تغییر نمیکنند.
Caps Lock با Shift یکسان نیست. اگر ورودی واقعا با Caps Lock تایپ شده، قبل از تبدیل از strtolower() استفاده کنید. نسخههای قبل از 0.7 همیشه ورودی را lowercase میکردند. چیدمانهای دری، پشتو و سایر انواع منطقهای پوشش داده نمیشوند.
تشخیص و اشتباههای رایج
detect() فقط یک حدس بر پایه حروف و نسبت واکههای انگلیسی است. اگر Script در ورودی کاراکتر فارسی یا عربی پیدا کند، نتیجه false است. بعد از lowercase، فقط حروف ASCII شمرده میشوند. حداقل دو حرف و نسبت واکه کمتر از ۲۵ درصد نتیجه true میدهد. رقم، نشانهگذاری و خطهای دیگر در شمارش نادیده گرفته میشوند؛ این متد تشخیص عمومی متن ترکیبی نیست. این متد دستور زبان یا معنی را نمیفهمد. نام برند، acronym و واژه فنی مثل chatgpt ممکن است اشتباه تشخیص داده شود.
از نتیجه برای پیشنهاد به کاربر استفاده کنید و اجازه رد پیشنهاد بدهید. تبدیل خودکار و بیقید ممکن است متن درست را خراب کند. این API آوانویسی یا اصلاح املا نیست.