Lingara Lingara Belge Rêbername API Pirtûkxane Sepan Avakirin Sepana webê
Ziman: Kurdî

Kart

Ev rûpel ji Îngilîzî hatiye wergerandin. Heke her du ji hev cuda bin, rûpela Îngilîzî rast e. Rûpela Îngilîzî bixwîne

Kartek lîsteyeke kurt a hêmanan e ku Lingara bi şêwaza xwe dikişîne. Tu têketin, wêne, skrîpt an markup tune ne. Sepanek nikare koda xwe an xuyanga xwe deyne ser ekrana xwendekar, ji ber vê yekê her kart wek beşên din ên Lingara xuya dike. Bersiva te JSON e: card ku elements dihewîne, û bi vebijarkî tutor_note (binêre Nota mamoste).

Hêman

Her hêmanekê type heye, ku yek ji van heştan e:

HêmanQadÇi nîşan dide
headingtext, levelSernavek. level 1 an 2 ye, û her nirxekî din dibe 2. Nivîsa wê herî zêde 80 tîp e.
texttext, langParagrafek ji herî zêde 600 tîpan. Ew tenê cih e ku tê de rêzbirîn tê parastin.
termword, reading, gloss, langPeyveke ji bo fêrbûnê. Tenê word pêwîst e. Peyv herî zêde 60 tîp e, xwendin 120 û wate 160.
listitemsHeta 20 babetan. Her babet text an term e, bi heman qadên hêmana bi wî navî.
progressvalue, labelBarek pêşketinê. value ji 0 heta 1 diçe, û etîket herî zêde 60 tîp e.
dividerXetek di navbera beşên kartê de.
buttonlabel, action, styleBişkokek ku action a xwe dişîne servera te. style primary an secondary e, û etîket herî zêde 32 tîp e.
linklabel, urlGirêdanek ku xwendekar, piştî ku Lingara jê dipirse, di geroka xwe de vedike. Etîket herî zêde 60 tîp e.

lang etîketeke zimên e wek ja, da ku Lingara tîpnivîsa rast bikişîne. Nirxekî ku ne etîketeke zimên be tê rakirin.

Sînor

  • Kartek herî zêde 24 hêmanan dihewîne. Hêmanên piştî ya 24-an têne avêtin.
  • Lîsteyek herî zêde 20 babetan dihewîne. Babetên piştî ya 20-an têne avêtin, û lîsteyeke vala tê avêtin.
  • Kartek herî zêde 4 bişkokan dihewîne. Bişkokên piştî ya 4-an têne avêtin.
  • Nivîsa ji sînorê xwe dirêjtir tê birîn da ku bi cih bibe û bi … diqede. Tîp wek nirxên skalar ên Unicode têne hejmartin.
  • Tîpên kontrolê û serdestkirinên alî ji her rêzikê têne rakirin.
  • Girêdaneke ku navnîşana wê ne HTTPS be, navê bikarhênerekî hilgire, an nîşanî navnîşaneke IP bide tê avêtin.
  • Bişkokeke ku action a wê ji 64 tîpan dirêjtir be, an ji bilî tîp, hejmar, _, ., : û - tiştekî din bi kar bîne, tê avêtin.
  • Hêmaneke ku piştî van rêzikan tu nivîs tê de nemabe tê avêtin.

Ev rêzik nerm in: Lingara tiştê ku bi cih nabe dibire an davêje û yên mayî dikişîne. Kît berî ku tu bersiv bidî heman rêzikan bi kar tînin, da ku tu bibînî ka dê çi biguhere.

Parsekirina hişk

Ferheng girtî ye. Cureyekî hêmanê yê nenas, qadeke ku hêmanek ne xwedî wê ye, nirxekî bi cureyê JSON ê xelet, an bersivek ku qet ne JSON be, tevahiya bersivê dike karteke cîgir. Lingara qet beşek ji kartekê ku nikaribû bixwîne nakişîne.

Mezinahî û dem

Bersivek dikare herî zêde 32 KiB be. Lingara 3 çirkeyan dide servera te da ku bersiva render bide û 5 çirkeyan da ku bersiva çalakiyekê bide, û yek ji wan jî dubare naceribîne. Divê bersiv xwedî rewşa 200 û cureyê naveroka JSON be. Beralîkirin nayên şopandin.

Bişkok û çalakî

Dema ku xwendekar bişkokekê pêl dike, Lingara daxwazeke çalakiyê ku action a wê bişkokê hildigire ji servera te re dişîne. Servera te bi karteke nû bersiv dide, ku cihê ya kevn digire. Heman pêlkirin dikare du caran bigihêje, ji ber vê yekê her çalakiyê wisa çêke ku dubarekirina wê bê xetere be.

Dema ku kartek têk diçe

Dema ku Lingara nikaribe kartekê ku dikare bikişîne bistîne, xwendekar bi zimanê xwe karta Lingara bi xwe ya “Vê sepanê bersiv neda” dibîne, an karta te ya baş a dawî ku wek ne rojane hatiye nîşankirin. Qet ji xwendekar re nayê gotin çima. Tenê tu, wek xwediyê sepanê, sedemê dibînî:

  • Bersiva te: invalid (ne kartek e ku Lingara dikare bixwîne), empty (piştî sînoran tiştek ji bo nîşandanê nemabû) an too_large (ji 32 KiB zêdetir).
  • Gihîştina servera te: timeout, http_error (her rewşek ji bilî 200), transport (têkçûna girêdanê an TLS, wek sertîfîkayeke ku dema wê derbas bûye) an blocked (render_url ku dibe ber navnîşaneke taybet an navnîşaneke IP ya rasterast).
  • Aliyê Lingara: unavailable (Lingara nikaribû daxwazê îmze bike) an busy (jixwe gelek daxwaz di rê de ne).
Zimanê mînaka kodê

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