Lingara Lingara بەڵگەنامەکان ڕێنماییەکان API کتێبخانەکان ئەپەکان دروستکردن ئەپی وێب
زمان: سۆرانی

کارتەکان

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

کارت لیستێکی کورتی توخمەکانە کە Lingara بە شێوازی خۆی هەڵیدەکێشێت. هیچ خانەی تێخستن، وێنە، سکریپت یان مارکئەپێک نییە. ئەپێک ناتوانێت کۆدی خۆی یان ڕووخساری خۆی بخاتە سەر شاشەی فێرخواز، بۆیە هەموو کارتێک وەک باقی Lingara دەخوێنرێتەوە. وەڵامەکەت JSON ـە: card ێک کە elements ەکانی خۆی هەڵدەگرێت، و بە ئارەزووی خۆت tutor_note ێک (بڕوانە تێبینیی مامۆستا).

توخمەکان

هەر توخمێک type ێکی هەیە، کە یەکێکە لەم هەشتە:

توخمخانەکانئەوەی نیشانی دەدات
headingtext, levelسەردێڕێک. level یان 1 ـە یان 2، و هەر بەهایەکی تر دەبێتە 2. دەقەکەی لانیزۆر 80 پیتە.
texttext, langبڕگەیەک کە لانیزۆر 600 پیتە. تاکە شوێنە کە تێیدا شکاندنی دێڕ دەپارێزرێت.
termword, reading, gloss, langوشەیەک بۆ فێربوون. تەنها word پێویستە. وشەکە لانیزۆر 60 پیتە، خوێندنەوەکە 120 و ڕوونکردنەوەکە 160.
listitemsتا 20 بڕگە. هەر بڕگەیەک text ێک یان term ێکە، بە هەمان خانەکانی توخمی هاوناو.
progressvalue, labelشریتی پێشکەوتن. value لە 0 ەوە تا 1 دەڕوات، و ناونیشانەکە لانیزۆر 60 پیتە.
dividerهێڵێک لە نێوان بەشەکانی کارتەکەدا.
buttonlabel, action, styleدوگمەیەک کە action ەکەی خۆی بۆ ڕاژەکارەکەت دەنێرێت. style یان primary ـە یان secondary، و ناونیشانەکە لانیزۆر 32 پیتە.
linklabel, urlبەستەرێک کە فێرخوازەکە لە وێبگەڕەکەیدا دەیکاتەوە، دوای ئەوەی Lingara پرسیاری لێ دەکات. ناونیشانەکە لانیزۆر 60 پیتە.

lang تاگێکی زمانە وەک ja، بۆ ئەوەی Lingara ڕێنووسی دروست هەڵبکێشێت. بەهایەک کە تاگی زمان نەبێت لادەبرێت.

سنوورەکان

  • کارتێک لانیزۆر 24 توخم هەڵدەگرێت. توخمەکانی دوای توخمی 24 فڕێ دەدرێن.
  • لیستێک لانیزۆر 20 بڕگە هەڵدەگرێت. بڕگەکانی دوای بڕگەی 20 فڕێ دەدرێن، و لیستی بەتاڵیش فڕێ دەدرێت.
  • کارتێک لانیزۆر 4 دوگمە هەڵدەگرێت. دوگمەکانی دوای دوگمەی 4 فڕێ دەدرێن.
  • دەقێک کە لە سنوورەکەی درێژتر بێت دەبڕدرێت تا جێی ببێتەوە و بە … کۆتایی دێت. پیتەکان وەک بەهای سکەیلەری Unicode دەژمێردرێن.
  • پیتە کۆنترۆڵییەکان و پیتەکانی گۆڕینی ئاراستە لە هەموو زنجیرەیەک لادەبرێن.
  • بەستەرێک کە ناونیشانەکەی HTTPS نەبێت، ناوی بەکارهێنەر هەڵبگرێت، یان ئاماژە بە ناونیشانێکی IP بکات فڕێ دەدرێت.
  • دوگمەیەک کە action ەکەی لە 64 پیت درێژتر بێت، یان جگە لە پیت، ژمارە، _، .، : و - شتێکی تر بەکاربهێنێت، فڕێ دەدرێت.
  • توخمێک کە دوای ئەم یاسایانە هیچ دەقێکی تێدا نەمێنێت فڕێ دەدرێت.

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

شیکردنەوەی توند

وشەسازییەکە داخراوە. جۆرێکی نەناسراوی توخم، خانەیەک کە توخمەکە نییەتی، بەهایەک بە جۆرێکی هەڵەی JSON، یان وەڵامێک کە هەر JSON نییە، هەموو وەڵامەکە دەکات بە کارتی جێگرەوە. Lingara هەرگیز بەشێک لە کارتێک هەڵناکێشێت کە نەیتوانیبێت بیخوێنێتەوە.

قەبارە و کات

وەڵامێک لانیزۆر دەتوانێت 32 KiB بێت. Lingara 3 چرکە دەدات بە ڕاژەکارەکەت بۆ وەڵامدانەوەی ڕێندەرێک و 5 چرکە بۆ وەڵامدانەوەی کردارێک، و هیچ کامیان دووبارە هەوڵ نادات. وەڵامێک دەبێت دۆخی 200 و جۆری ناوەڕۆکی JSON ی هەبێت. ئاڕاستەکردنەوەکان پەیڕەو ناکرێن.

دوگمەکان و کردارەکان

کاتێک فێرخوازەکە دوگمەیەک دادەگرێت، Lingara داواکارییەکی کردار بۆ ڕاژەکارەکەت دەنێرێت کە action ی ئەو دوگمەیە هەڵدەگرێت. ڕاژەکارەکەت بە کارتێکی نوێ وەڵام دەداتەوە، کە جێگەی کۆنەکە دەگرێتەوە. هەمان داگرتن لەوانەیە دوو جار بگات، بۆیە هەر کردارێک بۆ دووبارەبوونەوە سەلامەت بکە.

کاتێک کارتێک شکست دەهێنێت

کاتێک Lingara ناتوانێت کارتێک بەدەست بهێنێت کە بتوانێت هەڵیبکێشێت، فێرخوازەکە کارتی خودی Lingara ی «ئەم ئەپە وەڵامی نەدایەوە» بە زمانی خۆی دەبینێت، یان دوایین کارتی دروستی تۆ بە نیشانەی «نوێ نییە». هەرگیز هۆکارەکە بە فێرخوازەکە ناوترێت. تەنها تۆ، وەک خاوەنی ئەپەکە، هۆکارەکە دەبینیت:

  • وەڵامەکەت: invalid (کارتێک نییە کە Lingara بتوانێت بیخوێنێتەوە)، empty (دوای سنوورەکان هیچ نەماوە بۆ نیشاندان) یان too_large (زیاتر لە 32 KiB).
  • گەیشتن بە ڕاژەکارەکەت: timeout، http_error (هەر دۆخێک جگە لە 200)، transport (شکستی پەیوەندی یان TLS، وەک بڕوانامەیەکی بەسەرچوو) یان blocked (render_url ێک کە دەگاتە ناونیشانێکی تایبەت یان ناونیشانێکی IP ی ڕاستەوخۆ).
  • لای Lingara: unavailable (Lingara نەیتوانی داواکارییەکە واژوو بکات) یان busy (پێشتر داواکاریی زۆر لە جێبەجێکردندان).
زمانی نموونەی کۆد

TypeScript

function todayCard(streak: number): Card {
  return card()
    .heading("Today's five", 1)
    .term({ word: "雨", reading: "yǔ", gloss: "rain", lang: "zh" })
    .list([item.text("Review 3 words"), item.term({ word: "二", reading: "èr" })])
    .button(`Done (${streak})`, "done")
    .build(); // Throws CardLimitError naming the rule the relay would clamp.
}

Rust

fn today_card(title: &str, lang: &str) -> Result<lingara_apps::Card, BoxError> {
    Ok(card()
        .heading(title, 1)
        .term(Term::new("雨").reading("yǔ").gloss("rain").lang(lang))
        .list([item::text("Say it aloud"), item::term(Term::new("下雨").gloss("to rain"))])
        .button("Next word", "next")
        .build()?)
}

Go

card, err := lingaraapps.NewCard().
	Heading("Today", 1).
	Term(lingaraapps.Term{Word: "雨", Reading: "yǔ", Gloss: "rain", Lang: "zh"}).
	List(
		lingaraapps.Item.Text("Say it aloud three times."),
		lingaraapps.Item.Term(lingaraapps.Term{Word: "雨天", Gloss: "rainy day", Lang: "zh"}),
	).
	Button("Next", "next").
	Build()
if err != nil {
	// A *lingaraapps.CardLimitError names the rule the card breaks,
	// such as text_length or list_items. Nothing is cut for you.
	return lingaraapps.Card{}, err
}

Java

import com.getlingara.apps.Card;
import com.getlingara.apps.Item;

Card card =
    Card.card()
        .heading("Today's five", 1)
        .term("雨", "yǔ", "rain", "zh")
        .list(Item.text("Say it aloud"), Item.term("二", "èr", "two", "zh"))
        .button("Next", "next")
        .build(); // a CardLimitException names the first rule the card breaks

Kotlin

import com.getlingara.apps.kotlin.Card
import com.getlingara.apps.kotlin.card

val c =
    card {
        heading("Today's five", 1)
        term("雨", reading = "yǔ", gloss = "rain", lang = "zh")
        list(item.text("Say it aloud"), item.term("二", reading = "èr", gloss = "two", lang = "zh"))
        button("Next", "next")
    } // a CardLimitException names the first rule the card breaks

Ruby

def self.today_card(streak)
  Lingara::Apps.card
    .heading("Today's five", 1)
    .term(word: "雨", reading: "yǔ", gloss: "rain", lang: "zh")
    .list([Lingara::Apps.item.text("Review 3 words"), Lingara::Apps.item.term(word: "二", reading: "èr")])
    .button("Done (#{streak})", "done")
    .build # Raises Lingara::Apps::CardLimitError naming the rule Lingara would clamp.
end

PHP

use Lingara\Apps\Card;
use Lingara\Apps\Generated\Card as CardModel;
use Lingara\Apps\Item;

function todayCard(int $streak): CardModel
{
    return Card::create()
        ->heading("Today's five", 1)
        ->term('雨', reading: 'yǔ', gloss: 'rain', lang: 'zh')
        ->list([Item::text('Review 3 words'), Item::term('二', reading: 'èr')])
        ->button("Done ({$streak})", 'done')
        ->build(); // Throws CardLimitException naming the rule the relay would clamp.
}