Lingara Lingara Mwongozo Miongozo API Maktaba Programu Unda Programu ya wavuti
Lugha: Kiswahili

Kadi

Ukurasa huu umetafsiriwa kutoka Kiingereza. Ikiwa hizi mbili zinatofautiana, ukurasa wa Kiingereza ndio sahihi. Soma ukurasa wa Kiingereza

Kadi ni orodha fupi ya vipengele ambavyo Lingara huvichora kwa mtindo wake yenyewe. Hakuna sehemu za kuingiza data, picha, hati au markup. Programu haiwezi kuweka msimbo wake yenyewe au mwonekano wake yenyewe kwenye skrini ya mwanafunzi, kwa hivyo kila kadi inasomeka kama sehemu nyingine za Lingara. Jibu lako ni JSON: card inayobeba elements zake, na kwa hiari tutor_note (tazama Dokezo kwa mkufunzi).

Vipengele

Kila kipengele kina type, ambayo ni mojawapo ya hivi vinane:

KipengeleSehemuKinachoonyesha
headingtext, levelKichwa. level ni 1 au 2, na thamani nyingine yoyote inakuwa 2. Maandishi yake ni herufi 80 kwa upeo.
texttext, langAya ya herufi 600 kwa upeo. Ndiyo mahali pekee ambapo kivunja-mstari huhifadhiwa.
termword, reading, gloss, langNeno la kujifunza. word pekee ndiyo inayohitajika. Neno ni herufi 60 kwa upeo, usomaji 120 na maana 160.
listitemsHadi vipengee 20. Kila kipengee ni text au term, chenye sehemu zilezile kama kipengele chenye jina hilo.
progressvalue, labelUpau wa maendeleo. value huanzia 0 hadi 1, na lebo ni herufi 60 kwa upeo.
dividerMstari kati ya sehemu za kadi.
buttonlabel, action, styleKitufe kinachotuma action yake kwa seva yako. style ni primary au secondary, na lebo ni herufi 32 kwa upeo.
linklabel, urlKiungo ambacho mwanafunzi hukifungua kwenye kivinjari chake, baada ya Lingara kumuuliza. Lebo ni herufi 60 kwa upeo.

lang ni lebo ya lugha kama vile ja, ili Lingara ichore hati sahihi. Thamani ambayo si lebo ya lugha huondolewa.

Mipaka

  • Kadi hubeba vipengele 24 kwa upeo. Vipengele baada ya cha 24 huachwa.
  • Orodha hubeba vipengee 20 kwa upeo. Vipengee baada ya cha 20 huachwa, na orodha tupu huachwa.
  • Kadi hubeba vitufe 4 kwa upeo. Vitufe baada ya cha 4 huachwa.
  • Maandishi marefu kuliko kikomo chake hukatwa ili yatoshee na huishia kwa …. Herufi huhesabiwa kama thamani za scalar za Unicode.
  • Herufi za udhibiti na vibatilishi vya mwelekeo huondolewa kwenye kila mfuatano.
  • Kiungo ambacho anwani yake si HTTPS, inabeba jina la mtumiaji, au inaelekeza kwenye anwani ya IP huachwa.
  • Kitufe ambacho action yake ni ndefu kuliko herufi 64, au inatumia chochote isipokuwa herufi, tarakimu, _, ., : na -, huachwa.
  • Kipengele ambacho hakina maandishi yaliyobaki baada ya sheria hizi huachwa.

Sheria hizi ni za kusamehe: Lingara hukata au huacha kisichotoshea na huchora kilichobaki. Vifurushi hutumia sheria zilezile kabla hujajibu, kwa hivyo unaweza kuona kitakachobadilika.

Uchanganuzi mkali

Msamiati umefungwa. Aina ya kipengele isiyojulikana, sehemu ambayo kipengele hakina, thamani ya aina mbaya ya JSON, au jibu ambalo si JSON kabisa hugeuza jibu zima kuwa kadi mbadala. Lingara haichori kamwe sehemu ya kadi ambayo haikuweza kuisoma.

Ukubwa na muda

Jibu linaweza kuwa 32 KiB kwa upeo. Lingara huipa seva yako sekunde 3 kujibu render na sekunde 5 kujibu kitendo, na haijaribu tena yoyote kati ya hizo. Jibu lazima liwe na hali 200 na aina ya maudhui ya JSON. Uelekezaji upya haufuatwi.

Vitufe na vitendo

Mwanafunzi anapobonyeza kitufe, Lingara hutuma kwa seva yako ombi la kitendo linalobeba action ya kitufe hicho. Seva yako hujibu kwa kadi mpya, inayochukua nafasi ya ile ya zamani. Mbonyezo uleule unaweza kufika mara mbili, kwa hivyo hakikisha kila kitendo ni salama kurudiwa.

Kadi inaposhindwa

Lingara isipoweza kupata kadi inayoweza kuichora, mwanafunzi huona kadi ya Lingara yenyewe ya “Programu hii haikujibu” katika lugha yake, au kadi yako nzuri ya mwisho ikiwa imewekwa alama kuwa si ya hivi karibuni. Mwanafunzi haambiwi kamwe sababu. Ni wewe pekee, kama mmiliki wa programu, unayeona sababu:

  • Jibu lako: invalid (si kadi ambayo Lingara inaweza kusoma), empty (hakuna kilichobaki kuonyeshwa baada ya mipaka) au too_large (zaidi ya 32 KiB).
  • Kufikia seva yako: timeout, http_error (hali yoyote isipokuwa 200), transport (kushindwa kwa muunganisho au TLS, kama vile cheti kilichoisha muda) au blocked (render_url inayoelekeza kwenye anwani ya faragha au anwani halisi ya IP).
  • Upande wa Lingara: unavailable (Lingara haikuweza kutia sahihi ombi) au busy (maombi mengi mno tayari yanaendelea).
Lugha ya mfano wa msimbo

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