Lingara Lingara ឯកសារ មគ្គុទ្ទេសក៍សិក្សា API បណ្ណាល័យ កម្មវិធី បង្កើត កម្មវិធីលើបណ្ដាញ
ភាសា: ខ្មែរ

កាត

ទំព័រនេះត្រូវបានបកប្រែពីភាសាអង់គ្លេស។ ប្រសិនបើទាំងពីរខុសគ្នា ទំព័រភាសាអង់គ្លេសគឺត្រឹមត្រូវ។ អានទំព័រភាសាអង់គ្លេស

កាតគឺជាបញ្ជីខ្លីនៃធាតុដែល Lingara គូរតាមរចនាប័ទ្មផ្ទាល់របស់វា។ គ្មានប្រអប់បញ្ចូល រូបភាព ស្គ្រីប ឬ markup ទេ។ កម្មវិធីមិនអាចដាក់កូដផ្ទាល់ខ្លួន ឬរូបរាងផ្ទាល់ខ្លួនរបស់វាលើអេក្រង់របស់អ្នករៀនបានទេ ដូច្នេះកាតនីមួយៗមើលទៅដូចផ្នែកផ្សេងទៀតរបស់ 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 scalar value។
  • តួអក្សរបញ្ជា និងតួអក្សរប្ដូរទិស (direction override) ត្រូវបានលុបចេញពីខ្សែអក្សរនីមួយៗ។
  • តំណដែលអាសយដ្ឋានមិនមែនជា HTTPS មានឈ្មោះអ្នកប្រើ ឬចង្អុលទៅអាសយដ្ឋាន IP ត្រូវបានទម្លាក់ចោល។
  • ប៊ូតុងដែល action វែងជាង 64 តួអក្សរ ឬប្រើអ្វីផ្សេងក្រៅពីអក្សរ លេខ _ . : និង - ត្រូវបានទម្លាក់ចោល។
  • ធាតុដែលគ្មានអត្ថបទនៅសល់បន្ទាប់ពីច្បាប់ទាំងនេះត្រូវបានទម្លាក់ចោល។

ច្បាប់ទាំងនេះមានភាពបត់បែន៖ Lingara កាត់ ឬទម្លាក់អ្វីដែលមិនសម ហើយគូរផ្នែកដែលនៅសល់។ កញ្ចប់ឧបករណ៍អនុវត្តច្បាប់ដូចគ្នាមុនពេលអ្នកឆ្លើយតប ដូច្នេះអ្នកអាចមើលឃើញថាអ្វីនឹងផ្លាស់ប្ដូរ។

ការញែកយ៉ាងតឹងរ៉ឹង

វាក្យសព្ទត្រូវបានបិទ។ ប្រភេទធាតុដែលមិនស្គាល់ វាលដែលធាតុមួយមិនមាន តម្លៃដែលមានប្រភេទ JSON ខុស ឬការឆ្លើយតបដែលមិនមែនជា JSON សោះ ធ្វើឲ្យការឆ្លើយតបទាំងមូលក្លាយជាកាតជំនួស។ Lingara មិនដែលគូរផ្នែកណាមួយនៃកាតដែលវាមិនអាចអានបានឡើយ។

ទំហំ និងពេលវេលា

ការឆ្លើយតបមួយអាចមានទំហំយ៉ាងច្រើន 32 KiB។ Lingara ផ្ដល់ពេលឲ្យម៉ាស៊ីនមេរបស់អ្នក 3 វិនាទី ដើម្បីឆ្លើយតបការ render និង 5 វិនាទី ដើម្បីឆ្លើយតបសកម្មភាព ហើយមិនព្យាយាមម្ដងទៀតសម្រាប់ទាំងពីរ។ ការឆ្លើយតបត្រូវតែមានស្ថានភាព 200 និងប្រភេទមាតិកា JSON។ ការបញ្ជូនបន្ត (redirect) មិនត្រូវបានធ្វើតាមទេ។

ប៊ូតុង និងសកម្មភាព

នៅពេលអ្នករៀនចុចប៊ូតុង 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.
}