diff --git a/scripts/moodle_to_json.php b/scripts/moodle_to_json.php
index fbca5914c..817c6db2b 100644
--- a/scripts/moodle_to_json.php
+++ b/scripts/moodle_to_json.php
@@ -25,64 +25,19 @@ if (isset($_SERVER['REMOTE_ADDR'])) {
define('MOODLE_INTERNAL', 1);
define('LANGPACKSFOLDER', '../../moodle-langpacks');
define('ASSETSPATH', '../src/assets/lang/');
+define('CONFIG', '../src/config.json');
+
+$config = file_get_contents(CONFIG);
+$config = (array) json_decode($config);
+$config_langs = array_keys(get_object_vars($config['languages']));
// Set languages to do. If script is called using a language it will be used as unique.
if (isset($argv[1]) && !empty($argv[1])) {
+ $forcedetect = false;
$languages = explode(',', $argv[1]);
} else {
- $languages = array();
- $files = scandir(ASSETSPATH);
- foreach ($files as $f) {
- if (strpos($f, ".json")) {
- $languages[] = str_replace(".json", "", $f);
- }
- }
- $languages = array_unique($languages);
-}
-
-if (empty($languages)) {
- $languages = array(
- 'ar',
- 'bg',
- 'ca',
- 'cs',
- 'da',
- 'de-du',
- 'de',
- 'el',
- 'en-us',
- 'en',
- 'es-mx',
- 'es',
- 'eu',
- 'fa',
- 'fi',
- 'fr',
- 'he',
- 'hr',
- 'hu',
- 'it',
- 'ja',
- 'kn',
- 'ko',
- 'lt',
- 'mr',
- 'nl',
- 'no',
- 'pl',
- 'pt-br',
- 'pt',
- 'ro',
- 'ru',
- 'sr-cr',
- 'sr-lt',
- 'sv',
- 'tg',
- 'tr',
- 'uk',
- 'zh-cn',
- 'zh-tw'
- );
+ $forcedetect = true;
+ $languages = $config_langs;
}
// Process the index file, just once.
@@ -139,18 +94,89 @@ foreach ($keys as $key => $value) {
}
$total = count ($keys);
+echo "Total strings to translate $total\n";
+
+$add_langs = array();
// Process the languages.
foreach ($languages as $lang) {
- $translations = [];
- $success = 0;
- $langfoldername = str_replace('-', '_', $lang);
+ $ok = build_lang($lang, $keys, $total);
+ if ($ok) {
+ $add_langs[$lang] = $lang;
+ }
+}
- if (!is_dir(LANGPACKSFOLDER.'/'.$langfoldername)) {
- echo "Cannot translate $langfoldername, folder not found";
- continue;
+if ($forcedetect) {
+ echo "\n\n\n";
+
+ $all_languages = glob(LANGPACKSFOLDER.'/*' , GLOB_ONLYDIR);
+ function get_lang_from_dir($dir) {
+ return str_replace('_', '-', explode('/', $dir)[3]);
+ }
+ $all_languages = array_map('get_lang_from_dir', $all_languages);
+ $detect_lang = array_diff($all_languages, $languages);
+ $new_langs = array();
+ foreach ($detect_lang as $lang) {
+ $new = detect_lang($lang, $keys, $total);
+ if ($new) {
+ $new_langs[$lang] = $lang;
+ }
+ }
+
+ if (!empty($new_langs)) {
+ echo "\n\n\nThe following languages are going to be added\n\n\n";
+ foreach ($new_langs as $lang) {
+ $ok = build_lang($lang, $keys, $total);
+ if ($ok) {
+ $add_langs[$lang] = $lang;
+ }
+ }
+ add_langs_to_config($add_langs, $config);
+ }
+} else {
+ add_langs_to_config($add_langs, $config);
+}
+
+function add_langs_to_config($langs, $config) {
+ $changed = false;
+ $config_langs = get_object_vars($config['languages']);
+ foreach ($langs as $lang) {
+ if (!isset($config_langs[$lang])) {
+ $langfoldername = str_replace('-', '_', $lang);
+
+ $string = [];
+ include(LANGPACKSFOLDER.'/'.$langfoldername.'/langconfig.php');
+ $config['languages']->$lang = $string['thislanguage'];
+ $changed = true;
+ }
+ }
+
+ if ($changed) {
+ $config['languages'] = json_decode( json_encode( $config['languages'] ), true );
+ ksort($config['languages']);
+ $config['languages'] = json_decode( json_encode( $config['languages'] ), false );
+ file_put_contents(CONFIG, json_encode($config, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT));
+ }
+}
+
+function build_lang($lang, $keys, $total) {
+ $local = 0;
+ $translations = [];
+ $langfoldername = str_replace('-', '_', $lang);
+
+ if (!is_dir(LANGPACKSFOLDER.'/'.$langfoldername) || !is_file(LANGPACKSFOLDER.'/'.$langfoldername.'/langconfig.php')) {
+ echo "Cannot translate $langfoldername, folder not found";
+ return false;
+ }
+
+ $string = [];
+ include(LANGPACKSFOLDER.'/'.$langfoldername.'/langconfig.php');
+ $parent = isset($string['parentlanguage']) ? $string['parentlanguage'] : "";
+
+ echo "Processing $lang";
+ if ($parent != "" && $parent != $lang) {
+ echo "($parent)";
}
- echo "Processing language $lang";
// Add the translation to the array.
foreach ($keys as $key => $value) {
@@ -178,16 +204,84 @@ foreach ($languages as $lang) {
$text = str_replace('}', '}}', $text);
// Prevent double.
$text = str_replace(array('{{{', '}}}'), array('{{', '}}'), $text);
+ } else {
+ $local++;
}
$translations[$key] = $text;
- $success++;
}
// Sort and save.
ksort($translations);
file_put_contents(ASSETSPATH.$lang.'.json', str_replace('\/', '/', json_encode($translations, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT)));
+ $success = count($translations);
$percentage = floor($success/$total *100);
- echo " -> Processed $success of $total -> $percentage%\n";
+ echo "\t\t$success of $total -> $percentage% ($local local)\n";
+
+ return true;
}
+
+function detect_lang($lang, $keys, $total) {
+ $success = 0;
+ $local = 0;
+ $langfoldername = str_replace('-', '_', $lang);
+
+ if (!is_dir(LANGPACKSFOLDER.'/'.$langfoldername) || !is_file(LANGPACKSFOLDER.'/'.$langfoldername.'/langconfig.php')) {
+ echo "Cannot translate $langfoldername, folder not found";
+ return false;
+ }
+
+ $string = [];
+ include(LANGPACKSFOLDER.'/'.$langfoldername.'/langconfig.php');
+ $parent = isset($string['parentlanguage']) ? $string['parentlanguage'] : "";
+ if (!isset($string['thislanguage'])) {
+ echo "Cannot translate $langfoldername, name not found";
+ return false;
+ }
+
+ echo "Checking $lang";
+ if ($parent != "" && $parent != $lang) {
+ echo "($parent)";
+ }
+ $langname = $string['thislanguage'];
+ echo " ".$langname." -D";
+
+ // Add the translation to the array.
+ foreach ($keys as $key => $value) {
+ $file = LANGPACKSFOLDER.'/'.$langfoldername.'/'.$value->file.'.php';
+ // Apply translations.
+ if (!file_exists($file)) {
+ continue;
+ }
+
+ $string = [];
+ include($file);
+
+ if (!isset($string[$value->string])) {
+ if ($value->file != 'local_moodlemobileapp' || !isset($string[$value->string_local])) {
+ continue;
+ }
+ $text = $string[$value->string_local];
+ } else {
+ $text = $string[$value->string];
+ }
+
+ if ($value->file == 'local_moodlemobileapp') {
+ $local++;
+ }
+
+ $success++;
+ }
+
+ $percentage = floor($success/$total *100);
+ echo "\t\t$success of $total -> $percentage% ($local local)";
+ if (($percentage > 75 && $local > 50) || ($percentage > 50 && $local > 75)) {
+ echo " \t DETECTED\n";
+ return true;
+ }
+ echo "\n";
+
+ return false;
+}
+
diff --git a/src/assets/lang/id.json b/src/assets/lang/id.json
new file mode 100644
index 000000000..8140f029e
--- /dev/null
+++ b/src/assets/lang/id.json
@@ -0,0 +1,1020 @@
+{
+ "addon.calendar.calendar": "Kalender",
+ "addon.calendar.calendarevents": "Kalender Acara",
+ "addon.calendar.defaultnotificationtime": "Pemberitahuan waktu default",
+ "addon.calendar.errorloadevent": "Terjadi kesalahan saat memuat acara",
+ "addon.calendar.errorloadevents": "Terjadi kesalahan saat memuat acara",
+ "addon.calendar.eventendtime": "Waktu selesai",
+ "addon.calendar.eventstarttime": "Waktu mulai",
+ "addon.calendar.noevents": "Tidak ada acara",
+ "addon.calendar.notifications": "Pemberitahuan",
+ "addon.calendar.typecourse": "Agenda kursus",
+ "addon.calendar.typegroup": "Agenda grup",
+ "addon.calendar.typesite": "Agenda situs",
+ "addon.calendar.typeuser": "Agenda pengguna",
+ "addon.competency.errornocompetenciesfound": "Tidak ditemukan kompetensi",
+ "addon.competency.nocompetencies": "Tidak ada kompetensi",
+ "addon.coursecompletion.complete": "Lengkap",
+ "addon.coursecompletion.completed": "Selesai",
+ "addon.coursecompletion.completiondate": "Tanggal penyelesaian",
+ "addon.coursecompletion.couldnotloadreport": "Tidak dapat memuat laporan penyelesaian materi",
+ "addon.coursecompletion.coursecompletion": "Penyelesaian materi",
+ "addon.coursecompletion.criteria": "Kriteria",
+ "addon.coursecompletion.criteriagroup": "Kelompok kriteria",
+ "addon.coursecompletion.criteriarequiredall": "Semua kriteria di bawah ini diperlukan",
+ "addon.coursecompletion.criteriarequiredany": "Kriteria apapun di bawah ini diperlukan",
+ "addon.coursecompletion.inprogress": "Dalam proses",
+ "addon.coursecompletion.manualselfcompletion": "Panduan penyelesaian manual",
+ "addon.coursecompletion.notyetstarted": "Belum dimulai",
+ "addon.coursecompletion.pending": "Tertunda",
+ "addon.coursecompletion.required": "Wajib",
+ "addon.coursecompletion.requiredcriteria": "Kriteria wajib",
+ "addon.coursecompletion.requirement": "Persyaratan",
+ "addon.coursecompletion.status": "Status",
+ "addon.coursecompletion.viewcoursereport": "Lihat laporan materi",
+ "addon.files.couldnotloadfiles": "Daftar file tidak dapat dimuat",
+ "addon.files.emptyfilelist": "Tidak ada file yang bisa ditampilkan.",
+ "addon.files.erroruploadnotworking": "Sayang sekali saat ini tidak memungkinkan untuk mengunggah file ke situs Anda.",
+ "addon.files.files": "File",
+ "addon.files.privatefiles": "File pribadi",
+ "addon.files.sitefiles": "File situs",
+ "addon.messageoutput_airnotifier.processorsettingsdesc": "Konfigurasikan perangkat",
+ "addon.messages.addcontact": "Tambahkan kontak",
+ "addon.messages.blockcontact": "Blokir kontak",
+ "addon.messages.blockcontactconfirm": "Anda akan berhenti menerima pesan dari kontak ini.",
+ "addon.messages.blocknoncontacts": "Cegah pengguna yang tidak ada dalam kontak untuk mengirim pesan kepada saya",
+ "addon.messages.contactlistempty": "Daftar kontak kosong.",
+ "addon.messages.contactname": "Nama kontak",
+ "addon.messages.contacts": "Kontak",
+ "addon.messages.errordeletemessage": "Terjadi kesalahan saat menghapus pesan ini.",
+ "addon.messages.errorwhileretrievingcontacts": "Terjadi kesalahan saat mengambil kontak dari server.",
+ "addon.messages.errorwhileretrievingdiscussions": "Terjadi kesalahan saat mengambil diskusi dari server.",
+ "addon.messages.errorwhileretrievingmessages": "Terjadi kesalahan saat mengambil pesan dari server.",
+ "addon.messages.message": "Pesan",
+ "addon.messages.messagenotsent": "Pesan tidak terkirim. Silahkan coba lagi.",
+ "addon.messages.messages": "Pesan-pesan",
+ "addon.messages.newmessages": "Pesan baru",
+ "addon.messages.nousersfound": "Tidak ada pengguna ditemukan",
+ "addon.messages.removecontact": "Hapus kontak",
+ "addon.messages.removecontactconfirm": "Kontak akan dihapus dari daftar kontak Anda.",
+ "addon.messages.type_blocked": "Blokir",
+ "addon.messages.type_offline": "Ofline",
+ "addon.messages.type_online": "Online",
+ "addon.messages.type_search": "Hasil pencarian",
+ "addon.messages.type_strangers": "Lainnya",
+ "addon.messages.unblockcontact": "Buka blokiran kontak",
+ "addon.messages.warningmessagenotsent": "Tidak dapat mengirim pesan ke pengguna {{user}}. {{kesalahan}}",
+ "addon.mod_assign.acceptsubmissionstatement": "Mohon terima pernyataan penyerahan.",
+ "addon.mod_assign.addsubmission": "Tambahkan pengajuan (tugas/laporan)",
+ "addon.mod_assign.allowsubmissionsfromdate": "Ijinkan kiriman dari",
+ "addon.mod_assign.cannoteditduetostatementsubmission": "Anda tidak dapat menambahkan atau mengedit pengajuan di aplikasi karena kami tidak dapat mengambil pernyataan pengiriman dari situs.",
+ "addon.mod_assign.cannotgradefromapp": "Beberapa metode penilaian belum didukung oleh aplikasi dan tidak bisa dimodifikasi.",
+ "addon.mod_assign.cannotsubmitduetostatementsubmission": "Anda tidak dapat mengajukan penilaian di aplikasi karena kami tidak dapat mengambil pernyataan pengiriman dari situs.",
+ "addon.mod_assign.erroreditpluginsnotsupported": "Anda tidak dapat mengajukan penilaian di aplikasi karena beberapa plugin tidak didukung untuk mengedit.",
+ "addon.mod_assign.errorshowinginformation": "Kami tidak dapat menampilkan infomasi pengumpulan.",
+ "addon.mod_assign.feedbacknotsupported": "Umpan balik ini tidak didukung oleh aplikasi danmungkin tidak menyimpan semua informasi.",
+ "addon.mod_assign.grade": "Nilai",
+ "addon.mod_assign.gradenotsynced": "Nilai belum disinkronisasi.",
+ "addon.mod_assign.notallparticipantsareshown": "Peserta yang tidak mengumpulkan tidak ditampilkan.",
+ "addon.mod_assign.numwords": "{{$a}} kata",
+ "addon.mod_assign.savechanges": "Simpan perubahan",
+ "addon.mod_assign.submissionnotsupported": "Pengajuan ini tidak didukung oleh aplikasi dan mungkin tidak berisi semua informasi",
+ "addon.mod_assign.userwithid": "Pengguna dengan id {{id}}",
+ "addon.mod_assign.warningsubmissiongrademodified": "Pengajuan nilai telah dimodifikasi dalam situs.",
+ "addon.mod_assign.warningsubmissionmodified": "Pengajuan pengguna telah dimodifikasi pada situs.",
+ "addon.mod_assign.wordlimit": "Batas kata",
+ "addon.mod_assign_feedback_comments.pluginname": "Komentar umpan balik.",
+ "addon.mod_assign_submission_file.pluginname": "Pengiriman berkas",
+ "addon.mod_assign_submission_onlinetext.pluginname": "Pengiriman teks daring",
+ "addon.mod_chat.beep": "Beep",
+ "addon.mod_chat.currentusers": "Pengguna saat ini",
+ "addon.mod_chat.enterchat": "Klik disini untuk masuk chat sekarang",
+ "addon.mod_chat.entermessage": "Tulis pesan Anda",
+ "addon.mod_chat.errorwhileconnecting": "Terjadi kesalahan ketika terhubung ke obrolan.",
+ "addon.mod_chat.errorwhilegettingchatdata": "Terjadi kesalahan ketika mengumpulkan data obrolan.",
+ "addon.mod_chat.errorwhilegettingchatusers": "Terjadi kesalahan ketika mendapatkan pengguna obrolan.",
+ "addon.mod_chat.errorwhileretrievingmessages": "Terjadi kesalahan saat mengambil pesan dari server.",
+ "addon.mod_chat.errorwhilesendingmessage": "Terjadi kesalahan saat mengirim pesan.",
+ "addon.mod_chat.messagebeepsyou": "{{$a}} baru saja membeep Anda!",
+ "addon.mod_chat.messageenter": "{{$a}} baru saja memasuki obrolan ini",
+ "addon.mod_chat.messageexit": "{{$a}} telah meninggalkan obrolan ini",
+ "addon.mod_chat.mustbeonlinetosendmessages": "Anda harus online untuk mengirim pesan.",
+ "addon.mod_chat.nomessages": "Tidak ada pesan",
+ "addon.mod_chat.send": "Kirim",
+ "addon.mod_chat.sessionstart": "Sesi percakapan selanjutnya akan mulai pada {{$a}}",
+ "addon.mod_chat.talk": "Cakap",
+ "addon.mod_choice.errorgetchoice": "Terjadi kesalahan saat medapatkan data pilihan.",
+ "addon.mod_choice.responsesresultgraphdescription": "{{number}}% pengguna yang telah memilih pilihanof : {{text}}.",
+ "addon.mod_choice.resultsnotsynced": "Hasil tidak termasuk respon terakhir Anda. Silahkan sinkronisasi untuk update.",
+ "addon.mod_data.errorapproving": "Terjadi kesalahan saat menyetujui atau tidak menyetujui entri.",
+ "addon.mod_data.errordeleting": "Terjadi kesalahan saat menghapus entri.",
+ "addon.mod_feedback.captchaofflinewarning": "Umpan balik dengan captcha tidak dapat diselesaikan secara offline, atau jika tidak dikonfigurasi, atau jika server sedang down.",
+ "addon.mod_feedback.feedback_submitted_offline": "Umpan balik ini telah disimpan untuk disampaikan kemudian.",
+ "addon.mod_feedback.preview": "Pra-tampil",
+ "addon.mod_folder.emptyfilelist": "Tidak ada file untuk ditampilkan.",
+ "addon.mod_forum.addanewdiscussion": "Tambah topik diskusi baru",
+ "addon.mod_forum.addanewquestion": "Tambah pertanyaan baru",
+ "addon.mod_forum.addanewtopic": "Tambah topik baru",
+ "addon.mod_forum.cannotadddiscussion": "Anda harus menjadi member grup untuk menambahkan diskusi ke forum ini",
+ "addon.mod_forum.cannotadddiscussionall": "Anda tidak punya wewenang untuk menambahkan topik diskusi baru untuk semua partisipan.",
+ "addon.mod_forum.cannotcreatediscussion": "Tidak dapat membuat diskusi baru",
+ "addon.mod_forum.couldnotadd": "Could not add your post due to an unknown error",
+ "addon.mod_forum.discussion": "Diskusi",
+ "addon.mod_forum.discussionlocked": "This discussion has been locked so you can no longer reply to it.",
+ "addon.mod_forum.discussionpinned": "Sematkan",
+ "addon.mod_forum.discussionsubscription": "Diskusi berlangganan",
+ "addon.mod_forum.edit": "Edit",
+ "addon.mod_forum.erroremptymessage": "Post message cannot be empty",
+ "addon.mod_forum.erroremptysubject": "Post subject cannot be empty.",
+ "addon.mod_forum.errorgetforum": "Terjadi kesalahan saat mendapatkan data forum.",
+ "addon.mod_forum.errorgetgroups": "Terjadi kesalahan saat mendapatkan pengaturan grup.",
+ "addon.mod_forum.forumnodiscussionsyet": "Tidak ada topik diskusi di forum ini.",
+ "addon.mod_forum.group": "Grup",
+ "addon.mod_forum.message": "Pesan",
+ "addon.mod_forum.modeflatnewestfirst": "Tampilkan tanggapan secara secara flat, dari yang terbaru",
+ "addon.mod_forum.modeflatoldestfirst": "Tampilkan tanggapan secara secara flat, dari yang terlama",
+ "addon.mod_forum.modenested": "Tampilkan tanggapan dalam bentuk sarang",
+ "addon.mod_forum.numdiscussions": "{{numdiscussions}} diskusi",
+ "addon.mod_forum.numreplies": "{{numreplies}} jawaban",
+ "addon.mod_forum.posttoforum": "Post ke forum",
+ "addon.mod_forum.re": "Re:",
+ "addon.mod_forum.refreshdiscussions": "Muat ulang diskusi",
+ "addon.mod_forum.refreshposts": "Muat ulang pos diskusi.",
+ "addon.mod_forum.reply": "Tanggapi",
+ "addon.mod_forum.subject": "Subjek",
+ "addon.mod_forum.unread": "Belum dibaca",
+ "addon.mod_forum.unreadpostsnumber": "{{$a}} postingan belum dibaca",
+ "addon.mod_glossary.browsemode": "Jelajah entri",
+ "addon.mod_glossary.byalphabet": "Menurut abjad",
+ "addon.mod_glossary.byauthor": "Kelompok berdasarkan penulis",
+ "addon.mod_glossary.bycategory": "Kelompok berdasarkan kategori",
+ "addon.mod_glossary.bynewestfirst": "Terbaru lebih dahulu",
+ "addon.mod_glossary.byrecentlyupdated": "Baru saja diperbarui",
+ "addon.mod_glossary.bysearch": "Cari",
+ "addon.mod_glossary.cannoteditentry": "Tidak dapat mengedit entri",
+ "addon.mod_glossary.entriestobesynced": "Entri yang akan disinkronkan",
+ "addon.mod_glossary.entrypendingapproval": "Entri ini menunggu persetujuan.",
+ "addon.mod_glossary.errorloadingentries": "Terjadi kesalahan saat memuat entri-entri.",
+ "addon.mod_glossary.errorloadingentry": "Terjadi kesalahan saat memuat entri.",
+ "addon.mod_glossary.errorloadingglossary": "Terjadi kesalahan saat memuat glosarium.",
+ "addon.mod_glossary.noentriesfound": "Tidak ada entri ditemukan.",
+ "addon.mod_glossary.searchquery": "Penelusuran queri.",
+ "addon.mod_imscp.showmoduledescription": "Menampilkan deskripsi.",
+ "addon.mod_lesson.answer": "Jawaban",
+ "addon.mod_lesson.attempt": "Percobaan ke: {{$a}}",
+ "addon.mod_lesson.attemptsremaining": "Anda masih memiliki {{$a}} percobaan",
+ "addon.mod_lesson.averagescore": "Nilai rata-rata",
+ "addon.mod_lesson.averagetime": "Waktu rata-rata",
+ "addon.mod_lesson.branchtable": "Tabel Percabangan",
+ "addon.mod_lesson.clusterjump": "Pertanyaan yang belum dilihat di dalam kelompok",
+ "addon.mod_lesson.completed": "Selesai",
+ "addon.mod_lesson.congratulations": "Selamat - Akhir dari pelajaran telah sampai",
+ "addon.mod_lesson.continue": "Melanjutkan",
+ "addon.mod_lesson.defaultessayresponse": "Essai Anda akan dinilai oleh instruktur kursus.",
+ "addon.mod_lesson.detailedstats": "Statistik yang terperinci",
+ "addon.mod_lesson.didnotanswerquestion": "Tidak menjawab pertanyaan ini.",
+ "addon.mod_lesson.displayofgrade": "Tampilan peringkat (hanya untuk siswa)",
+ "addon.mod_lesson.displayscorewithessays": "Anda mendapatkan skor {{$a.score}} dari total {{$a.tempmaxgrade}} untuk pertanyaan yang dinilai secara otomatis.
{{$a.essayquestions}} pertanyaan essai Anda akan dinilai dan ditambahkan
dengan skor akhir Anda pada tanggal yang ditentukan.
Nilai Anda sekarang tanpa pertanyaan essai adalah {{$a.score}} dari total {{$a.grade}}",
+ "addon.mod_lesson.displayscorewithoutessays": "Nilai Anda adalah {{$a.score}} (dari {{$a.grade}}).",
+ "addon.mod_lesson.enterpassword": "Harap masukkan password:",
+ "addon.mod_lesson.eolstudentoutoftimenoanswers": "Anda tidak menjawab soal apapun. Nilai Anda 0 untuk pelajaran ini.",
+ "addon.mod_lesson.errorprefetchrandombranch": "Pelajaran ini berisi lompatan ke halaman konten acak, ini tidak dapat dicoba di aplikasi sampai dimulai di web.",
+ "addon.mod_lesson.errorreviewretakenotlast": "Upaya ini tidak bisa lagi ditinjau ulang karena usaha lain telah selesai.",
+ "addon.mod_lesson.finishretakeoffline": "Upaya ini telah selesai secara offline.",
+ "addon.mod_lesson.firstwrong": "Sayang sekali Anda tidak mendapatkan satu poin ini, karena respon Anda tidak tepat. Apakah Anda tetap ingin menebak-nebak, hanya untuk kesenangan belaka (tetapi tidak untuk kredit poin)?",
+ "addon.mod_lesson.grade": "Nilai",
+ "addon.mod_lesson.highscore": "Daftar nilai tertinggi",
+ "addon.mod_lesson.hightime": "Waktu terlama",
+ "addon.mod_lesson.leftduringtimed": "Anda telah pergi sebelum waktu pelajaran usai.
Klik pada Melanjutkan untuk mengulangi pelajaran.",
+ "addon.mod_lesson.leftduringtimednoretake": "Anda telah pergi sebelum waktu pelajaran usai dan Anda
tidak dibolehkan untuk lanjut atau mengambil ulang pelajaran.",
+ "addon.mod_lesson.lessonmenu": "Menu pelajaran",
+ "addon.mod_lesson.lessonstats": "Statistik pelajaran",
+ "addon.mod_lesson.linkedmedia": "Media yang terhubung",
+ "addon.mod_lesson.loginfail": "Login gagal, coba lagi...",
+ "addon.mod_lesson.lowscore": "Daftar nilai terendah",
+ "addon.mod_lesson.lowtime": "Daftar waktu terendah",
+ "addon.mod_lesson.maximumnumberofattemptsreached": "Sudah mencapai jumlah maksimum dari percobaan-Lanjut ke halaman berikutnya",
+ "addon.mod_lesson.modattemptsnoteacher": "Siswa hanya boleh meninjau pekerjaan siswa.",
+ "addon.mod_lesson.noanswer": "Tidak ada jawaban diberikan",
+ "addon.mod_lesson.nolessonattempts": "Belum ada percobaan yang dilakukan pada pelajaran kali ini.",
+ "addon.mod_lesson.notcompleted": "Tidak selesai",
+ "addon.mod_lesson.numberofcorrectanswers": "Jumlah jawaban yang benar: {{$a}}",
+ "addon.mod_lesson.numberofpagesviewed": "Jumlah halaman yang dilihat: {{$a}}",
+ "addon.mod_lesson.numberofpagesviewednotice": "Jumlah pertanyaan yang telah dijawab: {{$a.nquestions}}; (Anda seharusnya menjawab minimal: {{$a.minquestions}})",
+ "addon.mod_lesson.ongoingcustom": "Anda telah mendapat {{$a.score}} poin dari {{$a.currenthigh}} poin sejauh ini.",
+ "addon.mod_lesson.ongoingnormal": "Anda telah menjawab {{$a.correct}} soal benar dari {{$a.viewed}} kali percobaan.",
+ "addon.mod_lesson.or": "ATAU",
+ "addon.mod_lesson.overview": "Tinjau luas",
+ "addon.mod_lesson.preview": "Tinjau sebelumnya",
+ "addon.mod_lesson.question": "Pertanyaan",
+ "addon.mod_lesson.rawgrade": "Nilai buruk",
+ "addon.mod_lesson.reports": "Laporan",
+ "addon.mod_lesson.response": "Respon",
+ "addon.mod_lesson.retakefinishedinsync": "Sebuah upaya offline telah disinkronisasi. Apakah Anda ingin meninjaunya?",
+ "addon.mod_lesson.retakelabelfull": "{{retake}}: {{grade}} {{timestart}} ({{duration}})",
+ "addon.mod_lesson.retakelabelshort": "{{retake}}: {{grade}} {{timestart}}",
+ "addon.mod_lesson.review": "Tinjau ulang",
+ "addon.mod_lesson.reviewlesson": "Tinjau ulang pelajaran",
+ "addon.mod_lesson.reviewquestionback": "Ya, saya ingin mencoba lagi",
+ "addon.mod_lesson.reviewquestioncontinue": "Tidak, saya hanya ingin lanjut ke pertanyaan selamjutnya",
+ "addon.mod_lesson.secondpluswrong": "Belum tepat. Mau coba lagi?",
+ "addon.mod_lesson.teacherjumpwarning": "Lompatan {{$a.cluster}} atau lompatan {{$a.unseen}} sedang dipakai dalam pelajaran ini. Lompatan Halaman Selanjutnya akana digunakan otomatis. Login sebagai siswa untuk mengetesnya",
+ "addon.mod_lesson.teacherongoingwarning": "Nilai yang akan datang hanya ditampilkan untuk siswa. Login sebagai siswa untuk mngetesnya",
+ "addon.mod_lesson.teachertimerwarning": "Timer hanya bekerja untuk siswa. Tes timer dengan log in sebagai siswa.",
+ "addon.mod_lesson.thatsthecorrectanswer": "Itu adalah jawaban yang benar",
+ "addon.mod_lesson.thatsthewronganswer": "Itu adalah jawaban yang salah",
+ "addon.mod_lesson.timeremaining": "Waktu tersisa",
+ "addon.mod_lesson.timetaken": "Waktu yang terambil",
+ "addon.mod_lesson.unseenpageinbranch": "Pertanyaan yang belum dilihat di dalam percabangan",
+ "addon.mod_lesson.warningretakefinished": "Upaya telah selesai di website.",
+ "addon.mod_lesson.welldone": "Bagus!",
+ "addon.mod_lesson.youhaveseen": "Anda telah melihat lebih dari satu halaman dari pelajaran ini.
Anda ingin mulai dari halaman terakhir yang Anda lihat?",
+ "addon.mod_lesson.youranswer": "Jawaban Anda",
+ "addon.mod_lesson.yourcurrentgradeisoutof": "Nilai Anda adalah {{$a.grade}} dari total {{$a.total}}",
+ "addon.mod_lesson.youshouldview": "Anda seharusnya menjawab sekurangnya: {{$a}}",
+ "addon.mod_lti.errorgetlti": "Terjadi kesalahan saat mendapatkan modul data.",
+ "addon.mod_lti.errorinvalidlaunchurl": "URL peluncuran tidak valid",
+ "addon.mod_lti.launchactivity": "Luncurkan kegiatan.",
+ "addon.mod_page.errorwhileloadingthepage": "Terjadi kesalahan saat memuat halaman konten.",
+ "addon.mod_quiz.attemptfirst": "Nilai Pertama",
+ "addon.mod_quiz.attemptlast": "Nilai Terakhir",
+ "addon.mod_quiz.attemptquiznow": "Mencoba kuis sekarang",
+ "addon.mod_quiz.cannotsubmitquizdueto": "Upaya kuis ini tidak dapat diajukan karena alasan berikut:",
+ "addon.mod_quiz.confirmcontinueoffline": "Upaya ini belum disinkronkan sejak {{$ a}}. Jika Anda terus melakukan upaya ini di perangkat lain sejak saat itu, Anda mungkin kehilangan data.",
+ "addon.mod_quiz.confirmleavequizonerror": "Terjadi kesalahan saat menyimpan jawabannya. Apakah Anda yakin ingin meninggalkan kuis?",
+ "addon.mod_quiz.errorbehaviournotsupported": "Kuis ini tidak dapat dicoba di aplikasi karena tindakan tidak didukung oleh aplikasi:",
+ "addon.mod_quiz.errordownloading": "Terjadi kesalahan saat mengunduh data yang diperlukan.",
+ "addon.mod_quiz.errorgetattempt": "Terjadi kesalahan mendapatkan data percobaan",
+ "addon.mod_quiz.errorgetquestions": "Terjadi kesalahan mendapatkan pertanyaan.",
+ "addon.mod_quiz.errorgetquiz": "Terjadi kesalahan mendapatkan data kuis.",
+ "addon.mod_quiz.errorparsequestions": "Terjadi kesalahan ketika membaca pertanyaan ini. Silahkan upayakan kuis ini di web browser.",
+ "addon.mod_quiz.errorquestionsnotsupported": "Kuis ini tidak bisa diupayakan di aplikasi karena mengandung pertanyaan yang tidak didukung oleh aplikasi.",
+ "addon.mod_quiz.errorrulesnotsupported": "Kuis ini tidak dapat dicoba di aplikasi karena memiliki aturan akses yang tidak didukung oleh aplikasi:",
+ "addon.mod_quiz.errorsaveattempt": "Terjadi kesalahan saat menyimpan data percobaan.",
+ "addon.mod_quiz.feedback": "Saran",
+ "addon.mod_quiz.finishnotsynced": "Selesai tapi belum tersinkronisasi.",
+ "addon.mod_quiz.gradeaverage": "Nilai Rata-rata",
+ "addon.mod_quiz.gradehighest": "Nilai Tertinggi",
+ "addon.mod_quiz.grademethod": "Metode penilaian",
+ "addon.mod_quiz.marks": "Tanda",
+ "addon.mod_quiz.noquestions": "Belum ada pertanyaan yang dimasukkan",
+ "addon.mod_quiz.opentoc": "Buka navigasi popover.",
+ "addon.mod_quiz.question": "Pertanyaan",
+ "addon.mod_quiz.quizpassword": "Password Kuis",
+ "addon.mod_quiz.review": "Ulasan",
+ "addon.mod_quiz.timetaken": "Waktu yang digunakan",
+ "addon.mod_quiz.warningattemptfinished": "Upaya offline telah dibuang seperti telah selesai di situs atau tidak ditemukan.",
+ "addon.mod_quiz.warningdatadiscarded": "Beberapa jawaban offline telah dibuang karena pertanyaan telah dimodifikasi secara online.",
+ "addon.mod_quiz.warningdatadiscardedfromfinished": "Upaya tidak terselesaikan karena beberapa jawaban ofline telah dibuang. Harap tinjau kembali jawaban Anda kemudian submit ulang.",
+ "addon.mod_quiz.yourfinalgradeis": "Nilai akhir Anda untuk kuis ini adalah {{$a}}",
+ "addon.mod_resource.errorwhileloadingthecontent": "Terjadi kesalahan ketika memuat konten.",
+ "addon.mod_resource.openthefile": "Membuka file.",
+ "addon.mod_scorm.cannotcalculategrade": "Nilai tidak bisa dihitung.",
+ "addon.mod_scorm.dataattemptshown": "Data ini termasuk nomor percobaan {{number}}.",
+ "addon.mod_scorm.errorcreateofflineattempt": "Terjadi kesalahan saat membuat percobaan offline baru. Silahkan coba lagi",
+ "addon.mod_scorm.errordownloadscorm": "Terjadi kesalahan saat mengunduh SCORM: \"{{name}}\".",
+ "addon.mod_scorm.errorgetscorm": "Terjadi kesalahan saat mendapatkan data SCORM.",
+ "addon.mod_scorm.errorinvalidversion": "Maaf, aplikasi hanya mendukung SCORM 1.2.",
+ "addon.mod_scorm.errornotdownloadable": "Unduhan paket SCORM dinonaktifkan di situs Moodle Anda. Silahkan hubungi administrator situs Moodle Anda.",
+ "addon.mod_scorm.errornovalidsco": "SCORM ini tidak memiliki SCO yang terlihat untuk dimuat.",
+ "addon.mod_scorm.errorpackagefile": "Maaf, aplikasi ini hanya mendukung paket ZIP.",
+ "addon.mod_scorm.errorsyncscorm": "Terjadi kesalahan saat sinkronisasi. Silahkan coba lagi.",
+ "addon.mod_scorm.offlineattemptnote": "Upaya ini memiliki data yang belum tersinkronisasi.",
+ "addon.mod_scorm.offlineattemptovermax": "Upaya ini tidak dapat dikirim karena Anda melampaui jumlah upaya maksimal.",
+ "addon.mod_scorm.scormstatusnotdownloaded": "SCORM ini tidak diunduh Ini akan otomatis diunduh saat Anda membukanya.",
+ "addon.mod_scorm.scormstatusoutdated": "SCORM ini telah dimodifikasi sejak pengunduhan terakhir. Ini akan otomatis diunduh saat Anda membukanya.",
+ "addon.mod_scorm.warningofflinedatadeleted": "Beberapa upaya data offline {{number}} telah dihapus karena tidak dapat dibuat menjadi upaya baru.",
+ "addon.mod_scorm.warningsynconlineincomplete": "Beberapa upaya tidak bisa disinkronisasi dengan situs karena upaya online terakhir tidak selesai. Silahkan selesaikan upaya online terlebih dahulu.",
+ "addon.mod_survey.cannotsubmitsurvey": "Maaf, terdapat masalah saat mengumpulkan survey Anda. Silahkan coba lagi.",
+ "addon.mod_survey.errorgetsurvey": "Terjadi kesalahan mendapatkan data survey.",
+ "addon.mod_survey.ifoundthat": "Saya menemukan bahwa",
+ "addon.mod_survey.ipreferthat": "Saya lebih menyukai bahwa",
+ "addon.mod_survey.results": "Hasil.",
+ "addon.mod_url.accessurl": "Akses URL",
+ "addon.mod_url.pointingtourl": "URL poin sumber ini ke",
+ "addon.mod_wiki.errorloadingpage": "Terjadi kesalahan saat memuat halaman.",
+ "addon.mod_wiki.errornowikiavailable": "Wiki belum memiliki konten.",
+ "addon.mod_wiki.gowikihome": "Ke Beranda Wiki.",
+ "addon.mod_wiki.subwiki": "Subwiki",
+ "addon.mod_wiki.titleshouldnotbeempty": "Judul tidak boleh kosong",
+ "addon.mod_wiki.viewpage": "Lihat halaman",
+ "addon.mod_wiki.wikipage": "Halaman Wiki",
+ "addon.mod_workshop_assessment_rubric.mustchooseone": "Anda harus memilih salah satu dari item ini:",
+ "addon.notes.userwithid": "Pengguna dengan id {{id}}",
+ "addon.notes.warningnotenotsent": "Tidak bisa menambah catatan ke materi {{course}}. {{error}}",
+ "addon.notifications.errorgetnotifications": "Terjadi kesalahan saat mendapatkan pemberitahuan.",
+ "addon.notifications.markallread": "Tandai semua telah dibaca",
+ "addon.notifications.notifications": "Pemberitahuan",
+ "addon.notifications.playsound": "Putar suara",
+ "addon.notifications.therearentnotificationsyet": "Tidak ada pemberitahuan",
+ "assets.countries.AD": "Andorra",
+ "assets.countries.AE": "Uni Emirat Arab",
+ "assets.countries.AF": "Afghanistan",
+ "assets.countries.AG": "Antigua And Barbuda",
+ "assets.countries.AI": "Anguilla",
+ "assets.countries.AL": "Albania",
+ "assets.countries.AM": "Armenia",
+ "assets.countries.AO": "Angola",
+ "assets.countries.AQ": "Antartika",
+ "assets.countries.AR": "Argentina",
+ "assets.countries.AS": "Samoa Amerika",
+ "assets.countries.AT": "Austria",
+ "assets.countries.AU": "Australia",
+ "assets.countries.AW": "Aruba",
+ "assets.countries.AX": "Kepulauan Åland",
+ "assets.countries.AZ": "Azerbaijan",
+ "assets.countries.BA": "Bosnia Herzegovina",
+ "assets.countries.BB": "Barbados",
+ "assets.countries.BD": "Bangladesh",
+ "assets.countries.BE": "Belgia",
+ "assets.countries.BF": "Burkina Faso",
+ "assets.countries.BG": "Bulgaria",
+ "assets.countries.BH": "Bahrain",
+ "assets.countries.BI": "Burundi",
+ "assets.countries.BJ": "Benin",
+ "assets.countries.BL": "Saint Barthélemy",
+ "assets.countries.BM": "Bermuda",
+ "assets.countries.BN": "Brunei Darussalam",
+ "assets.countries.BO": "Bolivia",
+ "assets.countries.BQ": "Bonaire, Sint Eustatius dan Saba",
+ "assets.countries.BR": "Brasil",
+ "assets.countries.BS": "Bahama",
+ "assets.countries.BT": "Bhutan",
+ "assets.countries.BV": "Pulau Bouvet",
+ "assets.countries.BW": "Botswana",
+ "assets.countries.BY": "Belarusia",
+ "assets.countries.BZ": "Belize",
+ "assets.countries.CA": "Kanada",
+ "assets.countries.CC": "Kepulauan Cocos (Keeling)",
+ "assets.countries.CD": "Republik Demokratik Kongo",
+ "assets.countries.CF": "Afrika Tengah",
+ "assets.countries.CG": "Kongo",
+ "assets.countries.CH": "Swiss",
+ "assets.countries.CI": "Pantai Gading",
+ "assets.countries.CK": "Kepulauan Cook",
+ "assets.countries.CL": "Chili",
+ "assets.countries.CM": "Kamerun",
+ "assets.countries.CN": "Cina",
+ "assets.countries.CO": "Kolombia",
+ "assets.countries.CR": "Kosta Rika",
+ "assets.countries.CU": "Kuba",
+ "assets.countries.CV": "Tanjung Verde",
+ "assets.countries.CW": "Curacao",
+ "assets.countries.CX": "Pulau Christmas",
+ "assets.countries.CY": "Siprus",
+ "assets.countries.CZ": "Republik Ceko",
+ "assets.countries.DE": "Jerman",
+ "assets.countries.DJ": "Djibouti",
+ "assets.countries.DK": "Denmark",
+ "assets.countries.DM": "Dominika",
+ "assets.countries.DO": "Republik Dominika",
+ "assets.countries.DZ": "Algeria",
+ "assets.countries.EC": "Ekuador",
+ "assets.countries.EE": "Estonia",
+ "assets.countries.EG": "Mesir",
+ "assets.countries.EH": "Sahara Barat",
+ "assets.countries.ER": "Eritrea",
+ "assets.countries.ES": "Spanyol",
+ "assets.countries.ET": "Ethiopia",
+ "assets.countries.FI": "Finlandia",
+ "assets.countries.FJ": "Fiji",
+ "assets.countries.FK": "Kepulauan Falkland (Malvinas)",
+ "assets.countries.FM": "Federasi Mikronesia",
+ "assets.countries.FO": "Kepulauan Faroe",
+ "assets.countries.FR": "Perancis",
+ "assets.countries.GA": "Gabon",
+ "assets.countries.GB": "Inggris",
+ "assets.countries.GD": "Grenada",
+ "assets.countries.GE": "Georgia",
+ "assets.countries.GF": "Guinea Prancis",
+ "assets.countries.GG": "Guernsey",
+ "assets.countries.GH": "Ghana",
+ "assets.countries.GI": "Gibraltar",
+ "assets.countries.GL": "Greenland",
+ "assets.countries.GM": "Gambia",
+ "assets.countries.GN": "Guinea",
+ "assets.countries.GP": "Guadeloupe",
+ "assets.countries.GQ": "Guinea Khatulistiwa",
+ "assets.countries.GR": "Yunani",
+ "assets.countries.GS": "Georgia Selatan dan Kepulauan Sandwich Selatan",
+ "assets.countries.GT": "Guatemala",
+ "assets.countries.GU": "Guam",
+ "assets.countries.GW": "Guinea-Bissau",
+ "assets.countries.GY": "Guyana",
+ "assets.countries.HK": "Hongkong",
+ "assets.countries.HM": "Pulau Heard dan Kepulauan McDonald",
+ "assets.countries.HN": "Honduras",
+ "assets.countries.HR": "Kroasia",
+ "assets.countries.HT": "Haiti",
+ "assets.countries.HU": "Hungaria",
+ "assets.countries.ID": "Indonesia",
+ "assets.countries.IE": "Irlandia",
+ "assets.countries.IL": "Israel",
+ "assets.countries.IM": "Isle Of Man",
+ "assets.countries.IN": "India",
+ "assets.countries.IO": "British Indian Ocean Territory",
+ "assets.countries.IQ": "Irak",
+ "assets.countries.IR": "Iran",
+ "assets.countries.IS": "Islandia",
+ "assets.countries.IT": "Italia",
+ "assets.countries.JE": "Jersey",
+ "assets.countries.JM": "Jamaika",
+ "assets.countries.JO": "Yordania",
+ "assets.countries.JP": "Jepang",
+ "assets.countries.KE": "Kenya",
+ "assets.countries.KG": "Kirgistan",
+ "assets.countries.KH": "Kamboja",
+ "assets.countries.KI": "Kirbati",
+ "assets.countries.KM": "Komoro",
+ "assets.countries.KN": "Saint Kitts dan Nevis",
+ "assets.countries.KP": "Korea",
+ "assets.countries.KR": "Korea Selatan",
+ "assets.countries.KW": "Kuwait",
+ "assets.countries.KY": "Kepulauan Cayman",
+ "assets.countries.KZ": "Kazakhstan",
+ "assets.countries.LA": "Laos",
+ "assets.countries.LB": "Libanon",
+ "assets.countries.LC": "Saint Lucia",
+ "assets.countries.LI": "Liechtenstein",
+ "assets.countries.LK": "Srilangka",
+ "assets.countries.LR": "Liberia",
+ "assets.countries.LS": "Lesotho",
+ "assets.countries.LT": "Lithuania",
+ "assets.countries.LU": "Luksemburg",
+ "assets.countries.LV": "Latvia",
+ "assets.countries.LY": "Libia",
+ "assets.countries.MA": "Moroko",
+ "assets.countries.MC": "Monako",
+ "assets.countries.MD": "Moldova",
+ "assets.countries.ME": "Montenegro",
+ "assets.countries.MF": "Saint Martin",
+ "assets.countries.MG": "Madagaskar",
+ "assets.countries.MH": "Kepulauan Marshall",
+ "assets.countries.MK": "Macedonia",
+ "assets.countries.ML": "Mali",
+ "assets.countries.MM": "Myanmar",
+ "assets.countries.MN": "Mongolia",
+ "assets.countries.MO": "Macao",
+ "assets.countries.MP": "Northern Mariana Islands",
+ "assets.countries.MQ": "Martinique",
+ "assets.countries.MR": "Mauritania",
+ "assets.countries.MS": "Montserrat",
+ "assets.countries.MT": "Malta",
+ "assets.countries.MU": "Mauritius",
+ "assets.countries.MV": "Moldova",
+ "assets.countries.MW": "Malawi",
+ "assets.countries.MX": "Meksiko",
+ "assets.countries.MY": "Malaysia",
+ "assets.countries.MZ": "Mozambik",
+ "assets.countries.NA": "Namibia",
+ "assets.countries.NC": "Kaledonia Baru",
+ "assets.countries.NE": "Niger",
+ "assets.countries.NF": "Pulau Norfolk",
+ "assets.countries.NG": "Nigeria",
+ "assets.countries.NI": "Nicaragua",
+ "assets.countries.NL": "Belanda",
+ "assets.countries.NO": "Norwegia",
+ "assets.countries.NP": "Nepal",
+ "assets.countries.NR": "Nauru",
+ "assets.countries.NU": "Niue",
+ "assets.countries.NZ": "Selandia Baru",
+ "assets.countries.OM": "Oman",
+ "assets.countries.PA": "Panama",
+ "assets.countries.PE": "Peru",
+ "assets.countries.PF": "Polinesia Prancis",
+ "assets.countries.PG": "Papua Nugini",
+ "assets.countries.PH": "Filipina",
+ "assets.countries.PK": "Pakistan",
+ "assets.countries.PL": "Polandia",
+ "assets.countries.PM": "Saint Pierre Dan Miquelon",
+ "assets.countries.PN": "Pitcairn",
+ "assets.countries.PR": "Puerto Riko",
+ "assets.countries.PS": "Palesina",
+ "assets.countries.PT": "Portugal",
+ "assets.countries.PW": "Palau",
+ "assets.countries.PY": "Paraguay",
+ "assets.countries.QA": "Qatar",
+ "assets.countries.RE": "Réunion",
+ "assets.countries.RO": "Rumania",
+ "assets.countries.RS": "Serbia",
+ "assets.countries.RU": "Federasi Rusia",
+ "assets.countries.RW": "Ruwanda",
+ "assets.countries.SA": "Arab Saudi",
+ "assets.countries.SB": "Kepulauan Solomon",
+ "assets.countries.SC": "Seychelles",
+ "assets.countries.SD": "Sudan",
+ "assets.countries.SE": "Swedia",
+ "assets.countries.SG": "Singapura",
+ "assets.countries.SH": "Saint Helena",
+ "assets.countries.SI": "Slovenia",
+ "assets.countries.SJ": "Svalbard dan Jan Mayen",
+ "assets.countries.SK": "Slovakia",
+ "assets.countries.SL": "Sierra Leone",
+ "assets.countries.SM": "San Marino",
+ "assets.countries.SN": "Senegal",
+ "assets.countries.SO": "Somalia",
+ "assets.countries.SR": "Suriname",
+ "assets.countries.SS": "Sudan Selatan",
+ "assets.countries.ST": "Sao Tome Dan Principe",
+ "assets.countries.SV": "El Salvador",
+ "assets.countries.SY": "Syria",
+ "assets.countries.SZ": "Swaziland",
+ "assets.countries.TC": "Turks Dan Kepulauan Caicos",
+ "assets.countries.TD": "Chad",
+ "assets.countries.TF": "Teritori Prancis Selatan",
+ "assets.countries.TG": "Togo",
+ "assets.countries.TH": "Thailand",
+ "assets.countries.TJ": "Tajikistan",
+ "assets.countries.TK": "Tokelau",
+ "assets.countries.TL": "Timor-Leste",
+ "assets.countries.TM": "Turkmenistan",
+ "assets.countries.TN": "Tunisia",
+ "assets.countries.TO": "Tonga",
+ "assets.countries.TR": "Turki",
+ "assets.countries.TT": "Trinidad Dan Tobago",
+ "assets.countries.TV": "Tuvalu",
+ "assets.countries.TW": "Taiwan",
+ "assets.countries.TZ": "Tanzania",
+ "assets.countries.UA": "Ukraina",
+ "assets.countries.UG": "Uganda",
+ "assets.countries.UM": "United States Minor Outlying Islands",
+ "assets.countries.US": "Amerika Serikat",
+ "assets.countries.UY": "Uruguay",
+ "assets.countries.UZ": "Uzbekistan",
+ "assets.countries.VA": "Tahta Suci Vatikan",
+ "assets.countries.VC": "Saint Vincent And The Grenadines",
+ "assets.countries.VE": "Venezuela",
+ "assets.countries.VG": "Kepulauan Virgin, Inggris",
+ "assets.countries.VI": "Kepulauan Virgin, Amerika Serikat",
+ "assets.countries.VN": "Vietnam",
+ "assets.countries.VU": "Vanuatu",
+ "assets.countries.WF": "Wallis Dan Futuna",
+ "assets.countries.WS": "Samoa",
+ "assets.countries.YE": "Yaman",
+ "assets.countries.YT": "Mayotte",
+ "assets.countries.ZA": "Afrika Selatan",
+ "assets.countries.ZM": "Zambia",
+ "assets.countries.ZW": "Zimbabwe",
+ "core.accounts": "Akun",
+ "core.add": "Tambah",
+ "core.agelocationverification": "Verifikasi usia dan lokasi",
+ "core.allparticipants": "Semua peserta",
+ "core.android": "Android",
+ "core.answer": "Jawaban",
+ "core.areyousure": "Anda yakin?",
+ "core.back": "Kembali",
+ "core.cancel": "Batal",
+ "core.cannotconnect": "Tidak dapat terhubung: Verifikasi bahwa Anda telah mengetik dengan benar URL dan situs Anda menggunakan Moodle 2.4 atau yang lebih baru.",
+ "core.cannotdownloadfiles": "Pengunduhan file dinonaktifkan di layanan Mobile Anda. Tolong, hubungi administrator situs Anda.",
+ "core.captureaudio": "Rekam audio",
+ "core.capturedimage": "Gambar diambil",
+ "core.captureimage": "Ambil gambar",
+ "core.capturevideo": "Rekam video",
+ "core.category": "Kategori",
+ "core.choose": "Pilih",
+ "core.choosedots": "Pilih...",
+ "core.clearsearch": "Hapus pencarian",
+ "core.clicktohideshow": "Klik untuk membuka atau menutup",
+ "core.clicktoseefull": "Klik untuk melihat konten lengkap",
+ "core.comments": "Komentar",
+ "core.commentscount": "Komentar ({{$a}})",
+ "core.commentsnotworking": "Komentar tidak dapat diambil",
+ "core.confirmcanceledit": "Apakah Anda yakin ingin meninggalkan halaman ini? Semua perubahan akan hilang.",
+ "core.confirmloss": "Apakah Anda yakin? Semua perubahan akan hilang",
+ "core.confirmopeninbrowser": "Apakah Anda ingin membukanya di browse?",
+ "core.content": "Konten",
+ "core.contenteditingsynced": "Komentar yang Anda edit telah disinkronisasi.",
+ "core.contentlinks.chooseaccount": "Pilih akun",
+ "core.contentlinks.chooseaccounttoopenlink": "Pilih akun untuk membuka link.",
+ "core.contentlinks.confirmurlothersite": "Link milik situs lain. Apakah Anda ingin membukanya?",
+ "core.contentlinks.errornoactions": "Tidak dapat menemukan tindakan yang akan dilakukan dengan tautan ini.",
+ "core.contentlinks.errornosites": "Tidak dapat menemukan situs apapun untuk mengendalikan link ini.",
+ "core.continue": "lanjut",
+ "core.copiedtoclipboard": "Teks disalin ke clipboard",
+ "core.course": "Kursus",
+ "core.course.activitydisabled": "Organisasi Anda telah menonaktifkan aktifitas ini di aplikasi mobile.",
+ "core.course.activitynotyetviewableremoteaddon": "Organisasi Anda menginstall plugin yang belum didukung.",
+ "core.course.activitynotyetviewablesiteupgradeneeded": "Instalasi Moodle organisasi Anda butuh pembaruan.",
+ "core.course.allsections": "Semua",
+ "core.course.askadmintosupport": "Hubungi admin situs dan sampaikan Anda ingin menggunakan aktifitas ini dengan aplikasi Moodle mobile.",
+ "core.course.confirmdeletemodulefiles": "Anda yakin ingin menghapus file modul ini?",
+ "core.course.confirmdownload": "Anda akan mengunduh {{size}}. Apa Anda ingin melanjutkan?",
+ "core.course.confirmdownloadunknownsize": "Kami tidak dapat menghitung ukuran unduhan. Anda yakin ingin mengunduh?",
+ "core.course.confirmpartialdownloadsize": "Anda akan mendownload at least {{size}}. Apakah anda yakin ingin melanjutkan?",
+ "core.course.contents": "Konten",
+ "core.course.couldnotloadsectioncontent": "Tidak dapat memuat bagian konten. Silahkan Coba lagi nanti.",
+ "core.course.couldnotloadsections": "Tidak dapat memuat bagian. Silahkan Coba lagi nanti.",
+ "core.course.coursesummary": "Ringkasan kursus",
+ "core.course.errordownloadingsection": "Terjadi kesalahan saat mengunduh bagian.",
+ "core.course.errorgetmodule": "Terjadi kesalahan saat mendapatkan data modul.",
+ "core.course.hiddenfromstudents": "Tersembunyi dari siswa",
+ "core.course.hiddenoncoursepage": "Tersedia tapi tidak ditampilkan di halaman kursus",
+ "core.course.nocontentavailable": "Tidak ada konten tersedia untuk saat ini.",
+ "core.course.overriddennotice": "Nilai akhir anda fari aktifitas ini telah disesuaikan secara manual.",
+ "core.course.sections": "Bagian",
+ "core.course.useactivityonbrowser": "Anda masih dapat menggunakannya dengan perangkat pencarian.",
+ "core.coursedetails": "Detil kursus",
+ "core.courses.allowguests": "Kursus ini membolehkan pengunjung tamu untuk masuk",
+ "core.courses.availablecourses": "Kursus yang tersedia",
+ "core.courses.cannotretrievemorecategories": "Kategori yang lebih dalam dari tingkat {{$ a}} tidak dapat diambil.",
+ "core.courses.categories": "Kategori Kursus",
+ "core.courses.confirmselfenrol": "Apakah Anda yakin ingin mendaftarkan diri mengikuti materi ini?",
+ "core.courses.courseoverview": "Tinjauan luas kursus",
+ "core.courses.courses": "Kursus",
+ "core.courses.enrolme": "Daftarkan saya",
+ "core.courses.errorloadcategories": "Terjadi kesalahan saat memuat kategori.",
+ "core.courses.errorloadcourses": "Terjadi kesalahan saat memuat materi",
+ "core.courses.errorsearching": "Terjadi kesalahan saat mencari.",
+ "core.courses.errorselfenrol": "Terjadi kesalahan saat mendaftarkan diri.",
+ "core.courses.filtermycourses": "Saring materi saya",
+ "core.courses.frontpage": "Halaman depan",
+ "core.courses.mycourses": "Kursus Yang Saya Ikuti",
+ "core.courses.nocourses": "Tidak ada informasi materi untuk ditampilkan",
+ "core.courses.nocoursesoverview": "Tidak ada kursus",
+ "core.courses.nocoursesyet": "Belum ada kursus saat ini",
+ "core.courses.notenrollable": "Anda tidak dapat mendaftarkan diri ke materi.",
+ "core.courses.password": "kunci pendaftaran",
+ "core.courses.paymentrequired": "Kursus ini membutuhkan pembayaran untuk mengikutinya.",
+ "core.courses.search": "Cari",
+ "core.courses.searchcourses": "Cari kursus",
+ "core.courses.searchcoursesadvice": "Anda dapat menggunakan tombol pencarian materi untuk mengakses sebagai tamu atau mendaftarkan diri Anda dalam materi yang memungkinkannya.",
+ "core.courses.selfenrolment": "Pendaftaran sendiri",
+ "core.courses.totalcoursesearchresults": "Total materi {{$a}}",
+ "core.currentdevice": "Perangkat sekarang",
+ "core.datastoredoffline": "Data disimpan dalam perangkat karena tidak dapat terkirim. Data akan otomatis dikirim kemudian.",
+ "core.date": "Tanggal",
+ "core.day": "hari",
+ "core.days": "hari",
+ "core.decsep": ",",
+ "core.delete": "Hapus",
+ "core.deleting": "Menghapus",
+ "core.description": "Keterangan",
+ "core.dfdaymonthyear": "MM-DD-YYYY",
+ "core.dfdayweekmonth": "ddd, D MMM",
+ "core.dffulldate": "dddd, D MMMM YYYY h[:]mm A",
+ "core.dflastweekdate": "ddd",
+ "core.dfmediumdate": "LLL",
+ "core.dftimedate": "h[:]mm A",
+ "core.discard": "Membuang",
+ "core.dismiss": "Menghilangkan",
+ "core.done": "Selesai",
+ "core.download": "Unduh",
+ "core.downloading": "Mengunduh",
+ "core.edit": "Ubah",
+ "core.emptysplit": "Halaman kosong akan muncul jika panel sebelah kiri kosong atau sedang memuat.",
+ "core.error": "Kesalahan",
+ "core.errorchangecompletion": "Terjadi kesalahan saat mengubah status kelengkapan. Silahkan coba lagi.",
+ "core.errordeletefile": "Terjadi kesalahan saat menghapus file. Silahkan coba lagi.",
+ "core.errordownloading": "Terjadi kesalahan saat mengunduh file",
+ "core.errordownloadingsomefiles": "Terjadi kesalahan saat mengunduh file modul. beberapa file mungkin hilang.",
+ "core.errorfileexistssamename": "Sudah ada file dengan nama ini.",
+ "core.errorinvalidform": "Form berisi data yang tidak valid. Pastikan untuk mengisi kolom wajib sehingga data menjadi valid.",
+ "core.errorinvalidresponse": "Respon tidak valid diterima. Silahkan kontak administrator Moodle Anda jika kesalahan berlanjut.",
+ "core.errorloadingcontent": "Terjadi kesalahan saat memuat konten.",
+ "core.erroropenfilenoapp": "Terjadi kesalahan saat membuka file: tidak ditemukan aplikasi untuk membuka jenis file ini.",
+ "core.erroropenfilenoextension": "Terjadi kesalahan saat membuka file: file tidak memiliki ekstensi",
+ "core.erroropenpopup": "Aktifitas ini mencoba membuka popup. Ini tidak didukung oleh aplikasi.",
+ "core.errorrenamefile": "Terjadi kesalahan saat mengubah nama file. silahkan coba lagi.",
+ "core.errorsync": "Sebuah kesalahan terjadi ketika sinkronisasi",
+ "core.errorsyncblocked": "{{$a}} ini tidak dapat disinkronisasi sekarang karena adanya proses yang sedang berlangsung. Silahkan coba lagi nanti. Jika masalah masih berlanjut, coba restart aplikasi.",
+ "core.explanationdigitalminor": "Informasi ini diperlukan untuk menentukan apakah usia Anda melebihi usia digital dari persetujuan. Ini adalah usia ketika seorang individu dapat menyetujui syarat dan ketentuan dan data mereka secara hukum disimpan dan diproses.",
+ "core.filenameexist": "Nama file sudah tersedia: {{$a}}",
+ "core.fileuploader.addfiletext": "Tamvah file",
+ "core.fileuploader.audio": "Audio",
+ "core.fileuploader.camera": "Kamera",
+ "core.fileuploader.confirmuploadfile": "Anda akan mengunggah file {{size}}. Apakah Anda yakin ingin melanjutkan?",
+ "core.fileuploader.confirmuploadunknownsize": "Kami tidak dapat menghitung ukuran pengunggahan. Apakah Anda yakin ingin melanjutkan?",
+ "core.fileuploader.errorcapturingaudio": "Terjadi kesalahan saat pengambilan audio.",
+ "core.fileuploader.errorcapturingimage": "Terjadi kesalahan saat pengambilan gambar.",
+ "core.fileuploader.errorcapturingvideo": "Terjadi kesalahan saat pengambilan video.",
+ "core.fileuploader.errorgettingimagealbum": "Terjadi kesalahan saat mendapatkan gambar dari album.",
+ "core.fileuploader.errormustbeonlinetoupload": "Anda harus online untuk mengunggah file.",
+ "core.fileuploader.errornoapp": "Anda tidak memiliki aplikasi terinstal untuk menjalankan ini.",
+ "core.fileuploader.errorreadingfile": "Terjadi kesalahan saat memuat file.",
+ "core.fileuploader.errorwhileuploading": "Terjadi kesalahan saat mengunggah file.",
+ "core.fileuploader.file": "File",
+ "core.fileuploader.fileuploaded": "File berhasil diunggah.",
+ "core.fileuploader.maxbytesfile": "File terlalu besar {{$a.file}}. Ukuran maksimal yang dapat diunggah adalah {{$a.size}}.",
+ "core.fileuploader.photoalbums": "Album foto",
+ "core.fileuploader.readingfile": "Membaca file",
+ "core.fileuploader.selectafile": "Memilih sebuah file",
+ "core.fileuploader.uploadafile": "Mengunggah file",
+ "core.fileuploader.uploading": "Sedang mengunggah",
+ "core.fileuploader.uploadingperc": "Sedang mengunggah: {{$a}}%",
+ "core.fileuploader.video": "Video",
+ "core.folder": "Folder",
+ "core.forcepasswordchangenotice": "Anda harus mengubah kata sandi Anda untuk memproses lebih lanjut.",
+ "core.fulllistofcourses": "Materi Kursus yang sudah tersedia",
+ "core.fullnameandsitename": "{{namalengkap}} ({{{{namalengkap}} ({{namasitus}})namasitus}})",
+ "core.grades.average": "Rata-rata",
+ "core.grades.badgrade": "Nilai yang dimasukkan tidak benar",
+ "core.grades.contributiontocoursetotal": "Sumbangsih terhadap total kursus",
+ "core.grades.feedback": "Umpan balik",
+ "core.grades.grade": "Nilai",
+ "core.grades.gradeitem": "Butir nilai",
+ "core.grades.grades": "Nilai-nilai",
+ "core.grades.lettergrade": "Nilai huruf",
+ "core.grades.nogradesreturned": "Tidak ada nilai kembali",
+ "core.grades.nooutcome": "Tidak ada hasil",
+ "core.grades.percentage": "Persentase",
+ "core.grades.range": "Rentang",
+ "core.grades.rank": "Tingkat",
+ "core.grades.weight": "Bobot",
+ "core.groupsseparate": "Grup terpisah",
+ "core.groupsvisible": "Grup yang terlihat",
+ "core.hasdatatosync": "{{$ A}} ini memiliki data offline yang akan disinkronkan.",
+ "core.help": "Bantuan",
+ "core.hide": "Sembunyikan",
+ "core.hour": "jam",
+ "core.hours": "jam",
+ "core.humanreadablesize": "{{size}} {{unit}}",
+ "core.image": "Gambar",
+ "core.imageviewer": "Penampil gambar",
+ "core.info": "Informasi",
+ "core.ios": "iOS",
+ "core.labelsep": ":",
+ "core.lastaccess": "Terakhir akses",
+ "core.lastdownloaded": "Terakhir diunduh",
+ "core.lastmodified": "Terakhir diperbaharui",
+ "core.lastsync": "Terakhir disinkronisasi",
+ "core.list": "daftar",
+ "core.listsep": ";",
+ "core.loading": "Memuat",
+ "core.loadmore": "Muat lebih banyak",
+ "core.location": "Lokasi",
+ "core.login.auth_email": "Otentikasi berdasarkan Email",
+ "core.login.authenticating": "Mengotentikasi",
+ "core.login.cancel": "Batal",
+ "core.login.checksiteversion": "Pastikan situs Anda menggunakan Moodle 2.4 atau yang terbaru.",
+ "core.login.confirmdeletesite": "Apakah Anda yakin ingin menghapus situs {{sitename}}?",
+ "core.login.connect": "Terhubung!",
+ "core.login.connecttomoodle": "Terhubung ke Moodle",
+ "core.login.contactyouradministrator": "HUbungi Administrator Anda untuk bantuan lebih lanjut.",
+ "core.login.contactyouradministratorissue": "Silahkan bertanya kepada Administrator Anda untuk memeriksa masalah berikut: {{$a}}",
+ "core.login.createaccount": "Buat keanggotaan baru",
+ "core.login.createuserandpass": "Buat nama dan password pengguna baru untuk penggunaan login",
+ "core.login.credentialsdescription": "Silahkan masukkan username dan password untuk log in",
+ "core.login.emailconfirmsent": "
An email should have been sent to your address at {{$a}}
It contains easy instructions to complete your registration.
If you continue to have difficulty, contact the site administrator.
", + "core.login.emailnotmatch": "Email tidak sesuai", + "core.login.enterthewordsabove": "Masukkan kata-kata di atas", + "core.login.erroraccesscontrolalloworigin": "Panggilan Cross-Origin yang coba Anda lakukan telah ditolak. Harap periksa https://docs.moodle.org/dev/Moodle_Mobile_development_using_Chrome_or_Chromium", + "core.login.errordeletesite": "Terjadi kesalahan saat menghapus situs. Silahkan coba lagi.", + "core.login.errorupdatesite": "Terjadi kesalahan saat memperbaharui situs. Silahkan coba lagi.", + "core.login.firsttime": "Ini yang pertama kali Anda kesini?", + "core.login.forgotten": "Lupa nama pengguna dan password Anda?", + "core.login.getanothercaptcha": "Dapatkan CAPTCHA lainnya", + "core.login.help": "Bantuan", + "core.login.helpmelogin": "Ada banyak situs Moodle di seluruh duinia. Aplikasi ini hanya bisa terhubung ke situs Moodle yang akses Aplikasi Mobilenya telah diaktifkan
Jika Anda tidak bisa terhubung ke situs Moodle Anda maka Anda butuh menghubungi administrator di tempat dimana Anda ingin terhubung dan menginginkan mereka untuk membacanya http://docs.moodle.org/en/Mobile_app
To test the app in a Moodle demo site type teacher or student in the Site address field and click the Connect button.
", + "core.login.instructions": "Instruksi", + "core.login.invalidaccount": "Silahkan periksa rincian login Anda atau tanyakan pada administrator situs Anda untuk memeriksa konfigurasi situs.", + "core.login.invaliddate": "Tanggal tidak valid.", + "core.login.invalidemail": "Kesalahan pada alamat email", + "core.login.invalidmoodleversion": "Versi Moodle tidak valid.versi minimum yang dibutuhkan adalah 2.4.", + "core.login.invalidsite": "Situs URL tidak valid.", + "core.login.invalidtime": "Waktu tidak valid.", + "core.login.invalidvaluemax": "Maksimal nilai adalah {{$a}}", + "core.login.invalidvaluemin": "Minimum nilai adalah {{$a}}", + "core.login.localmobileunexpectedresponse": "Fitur Tambahan Moodle Mobile mengembalikan respons yang tak terduga, Anda akan diautentikasi menggunakan layanan Mobile standar.", + "core.login.loggedoutssodescription": "Anda harus mengautentikasi ulang. Anda harus log in ke situs di sebuah jendela browser.", + "core.login.login": "Masuk", + "core.login.loginbutton": "Masuk", + "core.login.logininsiterequired": "Anda butuh log in ke situs di jendela browser.", + "core.login.loginsteps": "Hallo! Untuk akses penuh pada kursus Anda perlu dalam beberapa\n menit membuat keanggotaan baru untuk Anda sendiri pada situs ini.\n Setiap kursus juga nantinya akan membutuhkan satu kali memasukkan\n "Kunci Masuk", yang mungkin Anda butuhkan nanti. Ini adalah\n langkah-langkahnya:\n