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

Muktadha na ridhaa

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

Programu yako hujua kuhusu mwanafunzi kupitia vipande vya muktadha pekee. Kila kipande ni rekodi ndogo yenye sehemu zisizobadilika. Manifest yako huorodhesha vipande inavyoomba, mwanafunzi hukubali kila kimoja anaposakinisha programu yako, na Lingara hutuma kipande tu wakati yote mawili bado ni kweli.

Vipande

KipandeSehemuKinachobeba
languagessource_langLugha ambayo mwanafunzi hujifunzia kutoka kwayo, kama lebo ya lugha kama vile en.
target_langLugha anayojifunza.
levelKiwango chake katika lugha hiyo, kutoka 1 hadi 9, ikiwa amekiweka.
plan_summaryplan_idKitambulisho cha mpango wake wa somo wa hivi karibuni, ambacho hutofautisha mpango mmoja na mwingine. Programu yako haiwezi kuuchukua mpango kwa kitambulisho hicho, kwa sababu tokeni ya programu yako husoma akaunti yako mwenyewe, si ya mwanafunzi.
titleKichwa kilichotengenezwa cha mpango, herufi 120 kwa upeo, ikiwa kipo.
target_langLugha ambayo mpango unafundisha.
set_countIdadi ya seti ambazo mpango unazo, 200 kwa upeo.
sets_completedIdadi ya seti hizo ambazo mwanafunzi amemaliza.
review_duedueIdadi ya kadi za kujifunzia zinazosubiri sasa, 100000 kwa upeo.
learnedIdadi ya maneno aliyojifunza, 100000 kwa upeo.
tutor_topictopicGumzo lake la hivi karibuni na mkufunzi linahusu nini, kutoka herufi 1 hadi 120. Hutoka kwenye kichwa cha mpango au skrini aliyopo, kamwe si kutoka kwa maneno yake mwenyewe.

Kile ambacho hakuna kipande kinabeba

Hakuna kipande kinachobeba anwani ya barua pepe, jina, kitambulisho cha mtumiaji au chochote alichoandika mwanafunzi. Programu yako hujua mwanafunzi ni nani kutoka kwa subject ya ombi, thamani thabiti iliyo tofauti kwa kila programu. Tokeni ya programu yako husoma akaunti yako mwenyewe, kamwe si ya mwanafunzi, kwa hivyo vipande ndivyo vyote ambavyo programu yako inajua kumhusu.

Ridhaa

  • Mwanafunzi hukubali kila kipande anaposakinisha programu yako. Ili kubadilisha alichokubali, huondoa programu yako na kuisakinisha tena.
  • Ukihariri manifest yako ili kuomba vipande vichache, vile ulivyoviondoa husimama mara moja.
  • Ukiihariri ili kuomba vingi zaidi, vipande vipya havimfikii mwanafunzi yeyote hadi atakaposakinisha upya.
  • Lingara hukagua ridhaa tena kwenye kila ombi, na huacha kipande chochote ambacho mwanafunzi hakukikubali au ambacho manifest yako haikiombi tena. Kipande kisichotoshea rekodi yake pia huachwa, kamwe si ombi zima.

Sampuli iliyo hapa chini hutunga mstari wake kutoka kwa vipande ilivyopewa na haiiti API yoyote.

Lugha ya mfano wa msimbo

TypeScript

// The app's own client reads its owner's account, never the learner's. The
// slices are all a render knows about the learner.
function planLine(request: AppRenderRequest): string {
  let line = "";
  for (const slice of request.context) {
    // A slice is present only when the learner agreed to share it.
    if (slice.kind === "languages") line += `${slice.source_lang} → ${slice.target_lang}. `;
    if (slice.kind === "plan_summary") line += `${slice.sets_completed}/${slice.set_count} sets.`;
  }
  return line;
}

Rust

// The app's own client reads its owner's account, never the learner's. The
// slices are all a render knows about the learner.
/// The learner's target language and, when they shared their plan, its
/// `(sets_completed, set_count)`.
fn shared_plan(request: &AppRenderRequest) -> (String, Option<(u32, u32)>) {
    let (mut target_lang, mut progress) = (String::from("zh"), None);
    for slice in &request.context {
        match slice {
            ContextSlice::Languages(languages) => target_lang = languages.target_lang.clone(),
            ContextSlice::PlanSummary(summary) => progress = Some((summary.sets_completed, summary.set_count)),
            _ => {}
        }
    }
    (target_lang, progress)
}

Go

// The app's own client reads its owner's account, never the learner's.
// The slices are all a render knows about the learner.
//
// Each slice is present only when the learner agreed to share it.
card := lingaraapps.NewCard().Heading("Your plan", 1)
for _, slice := range req.Context {
	switch s := slice.(type) {
	case lingaraapps.ContextSliceLanguages:
		card.Text(fmt.Sprintf("Learning %s from %s", s.TargetLang, s.SourceLang))
	case lingaraapps.ContextSlicePlanSummary:
		card.Text(fmt.Sprintf("%d of %d sets done", s.SetsCompleted, s.SetCount))
	}
}

Java

import com.getlingara.apps.Card;
import com.getlingara.apps.Reply;
import com.getlingara.apps.model.AppRenderRequest;
import com.getlingara.apps.model.ContextSlice;
import com.getlingara.apps.model.ContextSliceLanguages;
import com.getlingara.apps.model.ContextSlicePlanSummary;

// The app's own client reads its owner's account, never the learner's. The slices are all a
// render knows about the learner.
static Reply render(AppRenderRequest request) {
  Card.Builder card = Card.card();
  // A slice is present only when the learner agreed to share it; the context is read-only.
  for (ContextSlice slice : request.getContext()) {
    if (slice instanceof ContextSliceLanguages languages) {
      card.heading("Learning " + languages.targetLang(), 1);
    } else if (slice instanceof ContextSlicePlanSummary summary) {
      card.text(summary.setsCompleted() + " of " + summary.setCount() + " sets done");
    }
  }
  return card.heading("Today", 2).build();
}

Kotlin

import com.getlingara.apps.kotlin.Reply
import com.getlingara.apps.kotlin.card
import com.getlingara.apps.kotlin.model.AppRenderRequest
import com.getlingara.apps.kotlin.model.ContextSliceLanguages
import com.getlingara.apps.kotlin.model.ContextSlicePlanSummary

// The app's own client reads its owner's account, never the learner's. The slices are all a
// render knows about the learner.
fun renderWithContext(request: AppRenderRequest): Reply {
    // A slice is present only when the learner agreed to share it; the context is read-only.
    val languages = request.context.filterIsInstance<ContextSliceLanguages>().firstOrNull()
    val summary = request.context.filterIsInstance<ContextSlicePlanSummary>().firstOrNull()
    return card {
        heading("Learning ${languages?.targetLang ?: "today"}", 1)
        if (summary != null) {
            text("${summary.setsCompleted} of ${summary.setCount} sets done")
        }
    }
}

Ruby

# The app's own client reads its owner's account, never the learner's. The
# slices are all a render knows about the learner.
#
# A slice is present only when the learner agreed to share it.
request.context.filter_map do |slice|
  case slice
  in Lingara::Apps::ContextSliceLanguages(source_lang:, target_lang:)
    "#{source_lang} → #{target_lang}."
  in Lingara::Apps::ContextSlicePlanSummary(sets_completed:, set_count:)
    "#{sets_completed}/#{set_count} sets."
  else nil
  end
end.join(" ")

PHP

use Lingara\Apps\Generated\ContextSliceLanguages;
use Lingara\Apps\Generated\ContextSlicePlanSummary;

function planLine(AppRenderRequest $request): string
{
    // The app's own client reads its owner's account, never the learner's. The
    // slices are all a render knows about the learner.
    $line = '';
    // A slice is present only when the learner agreed to share it.
    foreach ($request->getContext() as $slice) {
        if ($slice instanceof ContextSliceLanguages) {
            $line .= "{$slice->sourceLang} → {$slice->targetLang}. ";
        } elseif ($slice instanceof ContextSlicePlanSummary) {
            $line .= "{$slice->setsCompleted}/{$slice->setCount} sets.";
        }
    }
    return $line;
}

Tazama pia