Lingara Lingara Documentatie Gidsen API Bibliotheken Apps Bouwen Webapp
Taal: Nederlands

De tutornotitie

Deze pagina is vertaald uit het Engels. Als de twee verschillen, is de Engelse pagina juist. Lees de Engelse pagina

Je app kan de tutor van Lingara één regel context meegeven, zoals welke woorden de leerder net heeft geoefend, door een tutor_note aan zijn antwoord toe te voegen. De notitie bereikt de tutor alleen wanneer je manifest haar declareert en de leerder haar heeft ingeschakeld toen hij je app installeerde. Om die keuze te wijzigen, deïnstalleert de leerder je app en installeert hij hem opnieuw.

Wat Lingara ermee doet

  • Een regeleinde wordt een spatie.
  • Besturingstekens en richtingsoverschrijvingen worden verwijderd.
  • Een notitie langer dan 280 tekens wordt ingekort tot 280 en eindigt op …. Tekens worden geteld als Unicode-scalaire waarden, niet als bytes of glyphs op het scherm.
  • Een notitie die je manifest niet declareert, of die de leerder niet heeft toegestaan, wordt weggelaten.

Hoe de tutor haar leest

De tutor leest je notitie als geciteerde tekst van een derde partij, nooit als instructie. Een notitie die de veiligheidscontrole van Lingara weigert, wordt weggelaten, en de beurt van de leerder gaat zonder haar verder. De leerder ziet de notitie nooit.

Een goede notitie

Een goede notitie is één eenvoudig feit dat de tutor kan gebruiken, zoals “De leerder heeft net 5 woorden uit zijn Japanse plan herhaald.” Ze zegt wat de leerder doet, niet wat de tutor moet doen. Laat instructies, oordelen over de leerder en alles wat de leerder niet op je kaart heeft gezien weg.

Taal van het codevoorbeeld

TypeScript

function withNote(request: AppRenderRequest) {
  const note = planLine(request);
  // Plain text, at most 280 characters; the tutor reads it, the learner does not.
  return note === "" ? todayCard(0) : reply(todayCard(0)).tutorNote(note);
}

Rust

async fn render(seen: Seen, request: AppRenderRequest) -> Result<Reply, BoxError> {
    let (lang, progress) = shared_plan(&request);
    let count = seen.lock().map_err(|_| "poisoned")?.get(&request.subject).copied().unwrap_or(0);
    let card = today_card("Today's five", &lang)?;
    // Plain text the learner's tutor can read: at most 280 characters.
    let note = match progress {
        Some((done, total)) => format!("The learner has reviewed {count} words with this app today; {done} of {total} sets done."),
        None => format!("The learner has reviewed {count} words with this app today."),
    };
    Ok(reply(card).tutor_note(note)?)
}

Go

card, err := lingaraapps.NewCard().Heading("Daily five", 1).Text("雨 · 雪 · 风 · 云 · 雷").Build()
if err != nil {
	return nil, err
}
// Plain text, at most 280 characters, for Lingara's tutor to use.
return lingaraapps.Reply(card).
	TutorNote("The learner is reviewing weather words today."), nil

Java

import com.getlingara.apps.Card;
import com.getlingara.apps.Reply;

Card card = Card.card().heading("Today's five", 1).term("雨", "yǔ", "rain", "zh").build();
// Plain text, at most 280 characters; the tutor reads it beside the card.
return Reply.reply(card).tutorNote("The learner is reviewing weather words today.");

Kotlin

import com.getlingara.apps.kotlin.Reply
import com.getlingara.apps.kotlin.card
import com.getlingara.apps.kotlin.reply

val c =
    card {
        heading("Today's five", 1)
        term("雨", reading = "yǔ", gloss = "rain", lang = "zh")
    }
// Plain text, at most 280 characters; the tutor reads it beside the card.
return reply(c).tutorNote("The learner is reviewing weather words today.")

Ruby

note = plan_line(request)
# Plain text, at most 280 characters; the tutor reads it, the learner does not.
note.empty? ? today_card(0) : Lingara::Apps.reply(today_card(0)).tutor_note(note)

PHP

use Lingara\Apps\Reply;

function withNote(AppRenderRequest $request): CardModel|Reply
{
    $note = planLine($request);
    // Plain text, at most 280 characters; the tutor reads it, the learner does not.
    return $note === '' ? todayCard(0) : Reply::of(todayCard(0))->tutorNote($note);
}