فهرست مستندات پروژه
ساخت رابط بازبینی
ورودی اصلی را نگه دارید، گزینهها را امن نمایش دهید و نتیجه بازبینیشده را کپی کنید.
ورودی و خروجی را جدا نگه دارید
ورودی اصلی و شناسه بازبینی آن را جدا از آخرین نتیجه موتور و انتخابهای کاربر نگه دارید. خروجی را به صورت پیشنمایش نشان دهید؛ هنگام هر کلید، متن در حال تایپ را جایگزین نکنید. اگر نام یا واژه مبهم اشتباه تبدیل شود، کاربر باید به متن اصلی دسترسی داشته باشد.
برای نمایش از textContent یا درج متن معمول چارچوب رابط استفاده کنید. خروجی از متن کاربر میآید و HTML قابل اعتماد نیست. زبان ظرف خروجی را فارسی و جهت آن را راستبهچپ قرار دهید و بخشهای لاتین کپیشده را با عناصر مناسب متن دوجهته جدا کنید. جهت کد و ورودی را متناسب با محتوا، چپبهراست یا خودکار بگذارید. منبع محیط آزمایش نمونه انتخاب بخشها و کنترل صفحهکلید را دارد، ولی وابستگی لازم رابط شما نیست.
اعمال گزینه انتخابشده
این تابع تایپاسکریپت بخشی از رابط است: به نتیجه یک موتور تنظیمشده و نگاشت انتخابهای برنامه نیاز دارد. خودش تبدیل انجام نمیدهد و مدل یا دادهای وارد نمیکند.
import type { TransliterationResult } from "tiny-finglish";
export function reviewedText(
result: TransliterationResult,
choices: ReadonlyMap<number, string>,
): string {
return result.spans.map((span, index) => {
const choice = choices.get(index);
return choice !== undefined && span.action === "convert" &&
span.candidates?.some(candidate => candidate.output === choice)
? choice : span.output;
}).join("");
}
فقط در محدوده یک نتیجه مشخص، شماره بخش را کلید انتخاب قرار دهید. با تغییر متن منبع، گزینههای حفظ، تنظیم موتور یا نتیجه، انتخابها را پاک کنید. نگهداری پیشرفته انتخابها باید هم متن توکن اصلی و هم جای آن را بررسی کند؛ تنها موقعیت بعد از ویرایش کافی نیست. با موقعیتهای ورودی، خروجی را برش نزنید.
برای نتیجه آزمایششده hamele در راهنمای نتیجه، انتخاب new Map([[0, "حامل"]]) با این تابع خروجی حامل میدهد. این املای انتخابشده کاربر است، نه پیشبینی تازه موتور. تغییر محلی گزینه، امتیازدهی جمله را دوباره اجرا نمیکند، result.confidence را عوض نمیکند و ترجیحی به موتور نمیآموزد. alternatives کل متن را به صورت پیشنهادهای جدا نشان دهید و ویرایششدن متن نمایشی را مشخص کنید.
بازبینی را دسترسپذیر کنید
برای بخشهای تبدیلشده دارای گزینه، کنترل قابل فوکوس بسازید، Enter و Space را پشتیبانی کنید، با Escape فهرست را ببندید و فوکوس را به کنترل آغازگر برگردانید. متن اصلی را کنار گزینهها نشان دهید. وضعیت تبدیل و بارگذاری را اعلام کنید، بدون اینکه پس از هر کلید کل پیام خوانده شود. بخش با خروجی خالی را به واژه تعاملی تبدیل نکنید، اما آن را در داده نتیجه نگه دارید.
آستانه برجستهکردن موارد نامطمئن، انتخاب برنامه است و تضمین کتابخانه نیست. امتیاز را نشانه رتبهبندی معرفی کنید، نه احتمال درستبودن املا. رشتههای دلیل گزینهها بیشتر برای عیبیابیاند و ممکن است برای بازدیدکننده بیش از حد فنی باشند.
متن نمایشی را کپی کنید
در رویدادی که کاربر آغاز میکند، navigator.clipboard.writeText(reviewedText(result, choices)) را اجرا کنید، منتظر پایان بمانید و فقط بعد از موفقیت پیام تایید بدهید. مجوز کلیپبورد یا نبود محیط امن ممکن است باعث رد درخواست شود؛ انتخاب و کپی دستی را هم ممکن کنید. اگر کاربر خروجی را در فیلد متنی ویرایش میکند، مقدار فعلی همان فیلد را کپی کنید. مراقب باشید نتیجه قدیمی یا ورودی پنهان کپی نشود.
محدودیت طول، تاخیر کوتاه هنگام تایپ، لغو، ذخیرهسازی، آمارگیری، دسترسی کلیپبورد و رابط تلاش دوباره مسئولیت برنامهاند. محدودیت ورودی وبسایت ۴۰۰ نویسه است و محدودیت کتابخانه نیست. راهاندازی Worker به پاسخگو ماندن رابط و کنارگذاشتن نتیجه قدیمی کمک میکند.