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.
}