کیبۆردی کوردی

سەرچاوەکراوە · نووسینی کوردی · v0.4.0

کیبۆردی کوردی

لە هەر شوێنێکی وێب بە کوردی بنووسە

کیبۆردێکی مەجازی کە دەخرێتە ناو هەر پەڕەیەکەوە، بۆ سۆرانی (خەتی عەرەبی) و کرمانجی (خەتی لاتینی). یەک ویجێت، بە Unicodeی یەکگرتوو کە لە بنەڕەتەوە دروستە.

npm install kurdish-keyboard
خەت
٢
داڕشتە
٣
پێویستی کاتی جێبەجێکردن
٠
codepointی پشتڕاستکراوە
٥٥

کرمانجی، QWERTY + ڕیز

داڕشتەی QWERTY لەگەڵ ڕیزێکی زیادە بۆ ç ê î ş û، چەپ بۆ ڕاست.

سۆرانی

داڕشتە لە داتای Unicode CLDRەوە، ڕاست بۆ چەپ.

بۆچی

یەک پیت، چەندین کۆد

دەقی کوردی لە وێبدا دەیان ساڵە کێشەی کۆدکردنی تێکچووی هەیە. ئەو پیتانەی وەک یەک دەردەکەون کۆدی جیاوازیان هەیە: ك و ک، ي و ی، ه و ە. ئەمە بێدەنگ گەڕان و ڕیزکردن و پشکنینی ڕێنووس دەشکێنێت. ئەم کیبۆردە تەنیا ئەو کۆدپۆینتە یەکگرتووانە دەنووسێت کە لە ستانداردی بەڕێوەبەرایەتیی تەکنەلۆژیای زانیاریی حکومەتی هەرێمی کوردستانەوە (KRG) هاتوون و بەرامبەر بنکەدراوەی پیتەکانی Unicode (UCD) پشکنراون. بۆیە هەموو ئەو دەقەی پێی دەنووسرێت لە بنەڕەتەوە دروستە.

پیشاندانی زیندوو

ئەمە سکرینشۆت نییە. ئەمە خودی ویجێتەکەیە.

کیبۆردەکانی ئەم پەڕەیە وێنە نین. خودی پاکێجە ڕاستەقینەکەن و بە تایبەتمەندییە خۆکردەکانی CSS تێم کراون. داڕشتەیەک هەڵبژێرە و بنووسە. ⇧ چینی دووەم دەردەخات؛ داڕشتە لاتینییەکان ⇪ Caps Lockیشیان هەیە. بە فلێشەکان بە ناو کلیلەکاندا دەجووڵێیت، و screen-readerەکانیش دەتوانن بەکاری بهێنن.

تایبەتمەندییەکان

هەموو ئەوەی نووسینێکی کوردی پێویستیەتی

  1. Unicodeی یەکگرتوو

    لە بنەڕەتەوە دروست.

    ویجێتەکە تەنیا دەتوانێت ئەو کۆدپۆینتانە بنووسێت کە بەرامبەر ستانداردی KRG و UCD پشتڕاستکراونەتەوە: هەمیشە ک نەک ك، هەمیشە ی نەک ي، و ە وەک ئەو بزوێنەی کە هەیە. دەقی پارچەپارچە لە ڕابردوودا دەمێنێتەوە.

  2. دوو خەت، سێ داڕشتە

    ڕاست بۆ چەپ و چەپ بۆ ڕاست، یەک ئینجین.

    داڕشتەیەکی سۆرانی کە لە داتای Unicode CLDRەوە دروستکراوە، لەگەڵ دوو داڕشتەی کرمانجیی کۆمەڵگا. بە setLayout() بە زیندوویی بیانگۆڕە؛ ئاراستە و چینەکان و Caps Lock خۆیان دێنە دوای.

  3. بۆ مۆبایل دروستکراوە

    ویجێتەکە خۆی کیبۆردەکەیە.

    بۆ هەر خانەیەک، inputmode="none" کیبۆردی مۆبایلەکە دەشارێتەوە و پانێڵێکی لکاو یان سەرئاو کاری نووسین دەکات. ئامانجی دەستلێدان بەپێی capability query دەگاتە ٤٤ پیکسڵ، هەرگیز بە ناسینەوەی user-agent نا.

  4. پشتگیریی Rich text

    خانەی contenteditable و دەستکاریکەرەکان.

    contenteditableی سادە ڕاستەوخۆ کار دەکات. دەستکاریکەرەکانی فرەیمۆرک وەک Lexical و ProseMirror و Slate بە adapterێکی بچووکی نووسین دەبەسترێنەوە.

  5. دەستڕاگەیشتنی بنەڕەتی

    ناوی گوتراو، tabindexی خولاو.

    ناڤیگەیشنی کیبۆرد بەپێی WAI-ARIA، فۆکەسی دیار، و labelەکانی screen-reader بە ئینگلیزی یان کوردی، کە لە کاتی کارکردندا (runtime) دەگۆڕدرێن.

  6. ڕێکخەری دەقی کۆن

    پاککردنەوەی دەیان ساڵ ك و ي.

    normalizeLegacy() سۆرانیی کۆنی پارچەپارچە دەگۆڕێت بۆ کۆدپۆینتە یەکگرتووەکان، بە هەمان ئەو فایلی داتایەی کە کیبۆردەکە بەکاری دەهێنێت. پێویستی بە DOM نییە، بۆیە لە Node و CLIشدا کار دەکات.

بنەماکان

چۆن دروستکراوە

  1. ستاندارد نەک داهێنانەوە

    کۆدپۆینتەکان لە ستانداردی کیبۆردی یەکگرتووی KRGەوە دێن، داڕشتەی سۆرانی لە Unicode CLDRەوە. لە شوێنێک ستاندارد هەبێت، هیچ شتێک بە دەست دروستناکرێت.

  2. داتا نەک کۆد

    داڕشتەکان فایلی JSONن و بە سکیمایەک پشتڕاستدەکرێنەوە. ئینجینەکە هەرگیز سەیری ناوی داڕشتەیەک ناکات. داڕشتەی نوێ واتە داتای نوێ، نەک کۆدی نوێ.

  3. پلاتفۆرمەکە خۆی بەسە

    setRangeText بۆ نووسین، inputmode بۆ مۆبایل، custom property بۆ تێم. سفر پێویستی کاتی جێبەجێکردن، ESM و CJS، داڕشتەی tree-shakable.

  4. پشتڕاستکراوە، نەک گریمانەکراو

    هەر کۆدپۆینتێک پیت بە پیت بەرامبەر سەرچاوە بنەڕەتییەکان پشکنراوە. پێش هەر بڵاوکردنەوەیەک، تاقیکردنەوەیەکی جێبەجێکراو پاکێجە بڵاوکراوەکە دەسەلمێنێت.

ڕێنمایی

ڕێنمایی تێکەڵکردن

هەموو ئەوەی پێویستتە بۆ زیادکردنی کیبۆردەکە بۆ ماڵپەڕەکەت. هەر نموونەیەک لە تەنیشت کۆدەکەیەوە بە زیندوویی کار دەکات.

دەستپێکی خێرا

بیبەستە، بنووسە، لێی بکەرەوە

بۆ هەر داڕشتەیەک یەک import، یەک بانگکردن. پانێڵەکە لە دوای خانەکە دەردەکەوێت. کلیلێک لە شوێنی نیشانەی نووسین دەنووسێت، هەر دەقێکی هەڵبژێردراو دەگۆڕێت، و فۆکەس لە خانەکەدا دەهێڵێتەوە. kb.detach() پانێڵەکە لادەبات و هەموو side effectـەکان دەگەڕێنێتەوە.

import { KurdishKeyboard } from "kurdish-keyboard";
import "kurdish-keyboard/styles.css"; // optional, recommended
import { soraniLayout } from "kurdish-keyboard/layouts/sorani";

const kb = KurdishKeyboard.attachTo(document.querySelector("input"), {
  layout: soraniLayout,
});
// later: kb.detach()

زیندوو

هەڵبژاردەجۆربنەڕەتچی دەکات
layoutLayoutپانێڵی کەمینەئەو داڕشتەیەی پیشان دەدرێت. بۆ هەر خەتێک یەکێک import بکە، یان هی خۆت بدە.
adapterInsertionAdapterناوخۆیینووسینی تایبەتی خۆت بۆ دەستکاریکەرەکانی فرەیمۆرک. بڕوانە «Rich text» لە خوارەوە.
suppressNativebooleanfalseنرخی inputmode="none" دادەنێت، بۆیە مۆبایلەکان کیبۆردی خۆیان شاراوە دەهێڵنەوە.
position'inline' | 'docked' | 'floating''inline'پانێڵەکە لە کوێ دابنرێت. بڕوانە «مۆبایل» لە خوارەوە.
labelLanguage'en' | 'ku''en'زمانی labelەکانی screen-reader (Shift، Space، …).

داڕشتەکان

سێ داڕشتە، گۆڕینی زیندوو

بۆ هەر داڕشتەیەک خاڵێکی هاتنەژوورەوەی جیا هەیە، بۆیە ماڵپەڕێکی تەنیا سۆرانی هەرگیز داتای کرمانجی لەگەڵ خۆی نابات. setLayout() بە زیندوویی دەیگۆڕێت: پانێڵەکە دووبارە دەکێشرێتەوە، ئاراستە لە نێوان ڕاست بۆ چەپ و چەپ بۆ ڕاست وەردەگەڕێت، و Shift و Caps Lock دەگەڕێنەوە دۆخی سەرەتا. داڕشتە لاتینییەکان ⇪ Caps Lockیان هەیە؛ Shift لە هەموو شوێنێک بۆ یەک کلیل کار دەکات.

داڕشتەی خۆت: داڕشتە داتای plainە. جۆری Layout export کراوە، و JSONەکە بەرامبەر سکیما بڵاوکراوەکە پشتڕاستدەکرێتەوە. کلیلەکان زنجیرە دەنووسن، نەک تاکە پیت: Shift+وی CLDR دەبێتە وو. خشتەی کۆدپۆینتە پشتڕاستکراوەکان وەک kurdish-keyboard/codepoints.json لەگەڵ پاکێجەکەدا دێت. خانە ڕاست بۆ چەپەکان: پانێڵەکە ئاراستەی خۆی دادەنێت، بەڵام dirی خانەکە بە دەستی تۆیە. بۆ خانە سۆرانییەکان dir="rtl" یان dir="auto" بەکاربهێنە؛ ئەگەر لەبیرت چوو، ویجێتەکە logێک لە کۆنسۆڵدا دەنووسێت.

import { soraniLayout } from "kurdish-keyboard/layouts/sorani";
import { kurmanjiPhonetic } from "kurdish-keyboard/layouts/kurmanji-phonetic";
import { kurmanjiOfficial } from "kurdish-keyboard/layouts/kurmanji-official";

kb.setLayout(kurmanjiPhonetic); // live swap, LTR
kb.setLayout(soraniLayout); // back to RTL

زیندوو

Rich text

خانەی contenteditable و adapterی خۆت

پانێڵەکە ڕاستەوخۆ بە ئێلێمێنتەکانی contenteditableەوە دەبەسترێت. نووسین بە کۆماندەکانی دەستکاریکردنی خودی وێبگەڕەکەدا تێدەپەڕێت، بۆیە نیشانەی نووسین و هەڵبژاردن و ڕووداوەکانی input وەک لێدانی ڕاستەقینەی کلیل ڕەفتار دەکەن. یەک یاسا: کلیلەکان تەنیا کاتێک کار دەکەن کە هەڵبژاردنەکە لەناو ئێلێمێنتە بەستراوەکەدا بێت. ئەگەر نیشانەی نووسین لە شوێنێکی تر بێت، کلیل هیچ ناکات؛ هەرگیز لە خانەی هەڵەدا نانووسێت.

دەستکاریکەرەکانی فرەیمۆرک وەک Lexical و ProseMirror و Slate بە ئەنقەست دەستکارییە دەرەکییەکان هەڵدەوەشێننەوە. بۆ ئەوان، adapterێک بدە. insertChar و deleteBack پێویستن؛ insertLineBreak و insertParagraph ئارەزوومەندانەن. پانێڵەکە تەنیا بۆ ئەو کردارانە کلیل پیشان دەدات کە adapterەکە هەیەتی: insertParagraph نەبێت، کلیلی ¶ نییە. adapterە ناوخۆییەکانیش export کراون (valueAdapter، contentEditableAdapter)، ئەگەر بتەوێت یەکێکیان بپێچیتەوە.

// Plain contenteditable: nothing new to learn
KurdishKeyboard.attachTo(document.querySelector("[contenteditable]"), {
  layout: soraniLayout,
});

// Lexical (e.g. Payload CMS): supply an editor-native adapter
import {
  $getSelection,
  DELETE_CHARACTER_COMMAND,
  INSERT_LINE_BREAK_COMMAND,
  INSERT_PARAGRAPH_COMMAND,
} from "lexical";

KurdishKeyboard.attachTo(editorRootElement, {
  layout: soraniLayout,
  adapter: {
    insertChar: (text) =>
      editor.update(() => $getSelection()?.insertText(text)),
    deleteBack: () => editor.dispatchCommand(DELETE_CHARACTER_COMMAND, true),
    insertLineBreak: () =>
      editor.dispatchCommand(INSERT_LINE_BREAK_COMMAND, false),
    insertParagraph: () =>
      editor.dispatchCommand(INSERT_PARAGRAPH_COMMAND, undefined),
  },
});

زیندوو

ناوچەی دەستکاریکردن (سۆرانی)

مۆبایل

ببە بە کیبۆردەکە

suppressNative نرخی inputmode="none" دادەنێت، کە ڕێگا ستانداردەکەیە بۆ ئەوەی بە مۆبایل بڵێیت «ئەم پەڕەیە کیبۆردی خۆی هەیە». نرخەکەی لەدەستدانی ڕاستکەرەوەی خۆکاری مۆبایلەکەیە بۆ ئەو خانەیە، بۆیە بۆ هەر خانەیەک بە جیا هەڵدەبژێردرێت. docked پانێڵەکە لە خوارەوەی شاشە دەچەسپێنێت و خانەکە بە دیاری دەهێڵێتەوە؛ floating لە نزیک گۆشەکە دەیهێڵێتەوە. ئامانجی دەستلێدان لە سکرینی دەستلێداندا دەگاتە ٤٤ پیکسڵ.

KurdishKeyboard.attachTo(field, {
  layout: soraniLayout,
  suppressNative: true,
  position: "docked", // or "floating"
});

زیندوو

لەسەر کۆمپیوتەر پانێڵە چەسپاوەکە دەبینیت. لەسەر مۆبایل، inputmode="none" کیبۆردی مۆبایلەکەش دوور دەخاتەوە.

تێم

تەنیا custom property، بێ CSS-in-JS

ستایلشیتەکە یەکجار import بکە، پاشان تایبەتمەندییەکانی --kkb-* لەسەر پانێڵەکە یان هەر توخمێکی باوان دابنێ. ستایلشیتەکە ئارەزوومەندانەیە؛ ویجێتەکە بەبێ ئەویش کار دەکات. جیاوازیی دوو کیبۆردەکەی خوارەوە تەنیا لە custom propertyـیەکاندایە.

تایبەتمەندییە ناوخۆییەکانی --_* لە ئەوانی ترەوە دەردەهێنرێن. تەنیا گشتییەکان بگۆڕە.

.theme-night {
  --kkb-key-bg: #1e293b;
  --kkb-key-color: #e2e8f0;
  --kkb-key-border: #334155;
  --kkb-pressed-bg: #334155;
  --kkb-focus-color: #38bdf8;
  --kkb-surface-bg: #1e293b;
}

بنەڕەت

تێمی تاریک، تەنیا بە --kkb-*

تایبەتمەندیبنەڕەتچی دەڕازێنێتەوە
--kkb-gap4pxبۆشایی نێوان کلیلەکان و ڕیزەکان
--kkb-key-size2.2rem · 44px لە شاشەی دەستلێدانداکەمترین پانی و بەرزیی کلیل
--kkb-key-font-size1.1rem · 1.3rem لە شاشەی دەستلێدانداقەبارەی نووسینی کلیل
--kkb-key-bgButtonFaceباکگراوندی کلیل
--kkb-key-colorButtonTextڕەنگی نووسینی کلیل
--kkb-key-borderButtonText 40%ڕەنگی لێواری کلیل
--kkb-key-radius4pxخڕیی گۆشەکانی کلیل
--kkb-pressed-bg#cbdceeباکگراوندی Shift و Caps Lockی چالاک
--kkb-focus-color#1a56a0ئەڵقەی فۆکەسی کیبۆرد
--kkb-surface-bgCanvasباکگراوندی پانێڵی لکاو یان سەرئاو

دەستڕاگەیشتن

ناڤیگەیشنی کیبۆرد، ناوی گوتراو

پانێڵەکە role="group"ێکی ناونراوە لە دوگمەی دیفۆڵت، بە شێوازی roving tabindexی WAI-ARIA. تەنیا یەک وەستانی Tabە. دوگمەکانی تیر بەپێی ئاراستەی بینراو لە نێوان کلیلەکاندا دەجووڵێن، بۆیە لە پانێڵە ڕاست بۆ چەپەکاندا پێچەوانە دەبنەوە. Home و End لە ناو ڕیزێکدا باز دەدەن؛ Enter و Space کلیل دادەگرن. ئەو کلیلانەی پیتێکی بینراویان نییە ناو وەردەگرن (Space، ZWNJ، ⇧ Shift، ⇪ Caps Lock). فۆکەس دوای دووبارە ڕێندەربوونەوە دەمێنێتەوە، و :focus-visible outlineێک پیشان دەدات بە لانیکەم ٣:١ کۆنتراست.

// at attach time…
KurdishKeyboard.attachTo(field, {
  layout: soraniLayout,
  labelLanguage: "ku",
});

// …or live
kb.setLabelLanguage("en");

زیندوو

کلیلی ⇧ دەڵێت:

بۆ چوونە ناو پانێڵەکە Tab دابگرە، پاشان دوگمەکانی تیر یان فلێشەکان بەکاربهێنە.

دەقی کۆن

دەقی کۆن پاک بکەرەوە

normalizeLegacy() سۆرانیی کۆنی پارچەپارچە (ك و يی عەرەبی، ه لە جیاتی ە) دەگۆڕێت بۆ کۆدپۆینتە یەکگرتووەکان. ئەم میتۆدە هەمان فایلی داتای کیبۆردەکە بەکاردەهێنێت. پێویستی بە DOM نییە، بۆیە لە Node و workerەکان و CLIشدا کار دەکات.

سەرەتا ئەمە بخوێنەوە: وا دادەنرێت کە دەقی هاتوو کوردییە. ك←ک و ي←ی هەمیشە جێبەجێ دەبن، بۆیە وتەی عەرەبیی ڕاستەقینەش دەگۆڕێن؛ زمانەکانی تر خۆت جیا بکەرەوە. یاسای ه←ە تەنیا سەیری شوێنی پیتەکە دەکات: ه لە کۆتایی وشەدا دەگۆڕێت (پێش ZWNJیش)؛ ه پێش پیتێکی تری خەتی عەرەبی، تەتویل یان حەرەکە ناگۆڕێت. بزوێنە کۆنەکانی ناوەڕاستی وشە نادۆزرێنەوە، و هیچ فەرهەنگێک نییە. دەقی لاتینی ناگۆڕێت.

import { normalizeLegacy } from "kurdish-keyboard/normalize";

normalizeLegacy("كوردي"); // → "کوردی"
normalizeLegacy("ئێمه"); // → "ئێمە"

زیندوو

ئەنجام

CDN

بێ هەنگاوی build

باندڵی سکریپتەکە KurdishKeyboardێکی گلۆباڵ دەدات. attachToـەکەی ناوی داڕشتە وەردەگرێت ('sorani'، 'kurmanji-phonetic'، 'kurmanji-official') یان ئۆبجێکتی Layout؛ ناوێکی نەناسراو هەڵەیەک لەگەڵ لیستی ناوەکان دەدات. هەروەها لیستی layouts و normalizeLegacyی تێدایە. ئەم باندڵە هەموو داڕشتەکانی تێدایە؛ ئەگەر bundler بەکاردەهێنیت، entryـیە مۆدیولییەکان (module) بەکاربهێنە.

<script src="https://unpkg.com/kurdish-keyboard"></script>
<script>
  KurdishKeyboard.attachTo(document.querySelector("input"), {
    layout: "sorani",
  });
</script>

فرەیمۆرکەکان

React و Vue و Svelte: پێویستیان بە wrapper نییە

هەر نووسینێک ڕووداوێکی inputی bubbling (inputType: 'insertText') لەسەر خانەکە دەنێرێت. بۆیە بایندینگی فرەیمۆرکەکان گۆڕانکارییەکە دەبینن وەک ئەوەی بەکارهێنەر خۆی نووسیبێتی. لە mountدا بیبەستە، لە unmountدا لێی بکەرەوە.

function KurdishInput() {
  const [value, setValue] = useState("");
  const ref = useRef(null);

  useEffect(() => {
    const kb = KurdishKeyboard.attachTo(ref.current, { layout: soraniLayout });
    return () => kb.detach();
  }, []);

  return (
    <input
      dir="rtl"
      ref={ref}
      value={value}
      onChange={(e) => setValue(e.target.value)}
    />
  );
}
<script setup>
const text = ref("");
const field = ref(null);
let kb;

onMounted(() => {
  kb = KurdishKeyboard.attachTo(field.value, { layout: soraniLayout });
});
onUnmounted(() => kb?.detach());
</script>

<template>
  <input dir="rtl" ref="field" v-model="text" />
</template>

<!-- Svelte: bind:value works the same way -->

سنوورەکان

چی ناتوانێت بکات، و بۆچی

ئەمانە ruleـەکانی وێبگەڕن، نەک تایبەتمەندیی miss بوو.

ناتوانێت لە ناو iframeی ماڵپەڕەکانی تردا بنووسێت
سیاسەتی same-origin هەموو دەستگەیشتنێک بەو پەڕانە قەدەغە دەکات کە لە originێکی ترەوە خراونەتە ناو پەڕەکەوە.
ناتوانێت لێدانی ڕاستەقینەی کلیل دروست بکات
ڕووداوەکانی کیبۆرد کە سکریپت دروستیان دەکات isTrusted: falseیان هەیە، و وێبگەڕەکان کاریگەرییەکەیان پشتگوێ دەخەن. بۆیە ویجێتەکە بە setRangeText() ڕاستەوخۆ نرخی خانەکە دەگۆڕێت. ئەمە لە هەموو شوێنێک کار دەکات، تەنانەت لە خانەی وشەی نهێنیشدا.
بە suppressNative ڕاستکەرەوەی خۆکار دەکوژێتەوە
inputmode="none" هەموو کیبۆردی مۆبایلەکە بۆ ئەو خانەیە لادەبات، ڕاستکەرەوەی خۆکاریش. میکانیزمەکە بەم شێوەیە کار دەکات، بۆیە بۆ هەر خانەیەک بە جیا هەڵدەبژێردرێت.
دەستکاریکەرەکانی فرەیمۆرک پێویستیان بە adapter هەیە
هەریەک لە Lexical و ProseMirror و Slate خاوەنی DOMی خۆیانن و دەستکارییە دەرەکییەکان هەڵدەوەشێننەوە. نووسین لە ئاستی وێبگەڕەوە ناتوانێت بە سەلامەتی کۆنترۆڵیان بکات؛ هەڵبژاردەی adapter بۆ ئەوانە. contenteditableی سادە ڕاستەوخۆ کار دەکات.
پشتگیریی وێبگەڕ
وێبگەڕە نوێبووەکانی نزیکەی سێ ساڵی ڕابردوو، لەگەڵ Safari 15.4+. تەنیا یەک کەموکوڕیی بچووک: لێواری بنەڕەتیی کلیل color-mix() بەکاردەهێنێت (Safari 16.2+). وێبگەڕە کۆنەکان کلیلەکان بەبێ لێوار پیشان دەدەن، یان خۆت --kkb-key-border دابنێ. هیچ polyfillێک لەگەڵیدا نییە.

وەریبگرە

بەخۆڕایی، وەک کیبۆردێک کە دەبێت وابێت

بەخۆڕایی

مۆڵەتی MIT · بێ پلە، بێ شوێنکەوتن، بێ بەندکردن

npm install kurdish-keyboard

وەشانی 0.4.0 لەسەر npm، یان لە کۆگای GitHubەوە دایبمەزرێنە.

لە GitHub ببینە

پرسیارەکان

وەڵام، پێش ئەوەی بپرسیت

کام وێبگەڕانە کار دەکەن؟
وێبگەڕە نوێبووەکانی سێ ساڵی ڕابردوو، لەگەڵ Safari 15.4+. هەموو ئەو APIـیانەی وێبگەڕ کە ویجێتەکە بەکاریان دەهێنێت بە بەرفراوانی بەردەستن، بۆیە هیچ polyfillێک لەگەڵیدا نییە.
لەگەڵ React و Vue و Svelte کار دەکات؟
بەڵێ. دوای هەر نووسینێک ویجێتەکە ڕووداوێکی inputی bubbling دەنێرێت، بۆیە بایندینگی فرەیمۆرکەکان بێ wrapper گۆڕانکارییەکە دەبینن.
دەتوانێت لە هەر خانەیەکدا بنووسێت؟
هەر input یان textarea یان توخمێکی contenteditable لە هەمان پەڕەدا، و دەستکاریکەرەکانی Rich text لە ڕێگەی adapterەوە. iframeی ماڵپەڕەکانی تر بەهۆی ئاسایشی وێبگەڕەوە قەدەغەن.
بۆچی کافی عەرەبی نانووسێت؟
لە دەقی کوردیدا ك تەنیا لە ک دەچێت، و بێدەنگ گەڕان و ڕیزکردن دەشکێنێت. بۆیە ویجێتەکە هەمیشە ک دەنووسێت. پیتە عەرەبییە ڕاستەقینەکان بۆ نووسینی ناوە عەرەبییەکان لەسەر چینی Shiftی سۆرانی هەن.
دەتوانم داڕشتەی خۆم دروست بکەم؟
بەڵێ. داڕشتەکان JSONی سادەن و بە سکیمایەکی بڵاوکراوە پشتڕاستدەکرێنەوە. ئینجینەکە هەر داڕشتەیەکی دروست وەک خۆی پیشان دەدات، بۆیە داڕشتەیەکی community زیادکردنێکە، نەک فۆرک.