Kamis, 22 Oktober 2026
00:40 WIB
TERKINI
Tuba Barat Tulangbawang Barat Unggul dalam Penanggulangan TBC, Lampaui Target Provinsi Bandar Lampung Prioritas Keselamatan Terabaikan: Akses Rumah Aman Korban KDRT di Lampung Lampung Tengah Gerebek Dua Lokasi, Polres Lampung Tengah Tangkap Pengedar Sabu 7,40 Gram Pemprov Lampung Kolaborasi Pemprov Padamkan Kebakaran TPA Bandarjaya, Tol Bakter Terganggu Asap Tebal Bandar Lampung Lampung Agendakan Beragam Rapat Penting, Revitalisasi Stadion Pahoman Jadi Sorotan Utama Lampung Selatan Kulkas Bekas Raib, Tiga Pria di Lampung Selatan Terancam Tujuh Tahun Penjara Hiburan Wendy Red Velvet Bersiap Comeback Solo November 2026, Janjikan Eksplorasi Vokal Hiburan Eiichiro Oda Ambil Jeda Dua Pekan, One Piece Chapter 1197 Tayang November 2026 Lampung Cuaca Lampung 20 Oktober 2026: Cerah Berawan Dominan, Waspada Hujan Lokal Lampung Tengah Kebakaran Landa TPA Bandarjaya Lampung Tengah, Gas Metan Diduga Pemicu Utama Tuba Barat Tulangbawang Barat Unggul dalam Penanggulangan TBC, Lampaui Target Provinsi Bandar Lampung Prioritas Keselamatan Terabaikan: Akses Rumah Aman Korban KDRT di Lampung Lampung Tengah Gerebek Dua Lokasi, Polres Lampung Tengah Tangkap Pengedar Sabu 7,40 Gram Pemprov Lampung Kolaborasi Pemprov Padamkan Kebakaran TPA Bandarjaya, Tol Bakter Terganggu Asap Tebal Bandar Lampung Lampung Agendakan Beragam Rapat Penting, Revitalisasi Stadion Pahoman Jadi Sorotan Utama Lampung Selatan Kulkas Bekas Raib, Tiga Pria di Lampung Selatan Terancam Tujuh Tahun Penjara Hiburan Wendy Red Velvet Bersiap Comeback Solo November 2026, Janjikan Eksplorasi Vokal Hiburan Eiichiro Oda Ambil Jeda Dua Pekan, One Piece Chapter 1197 Tayang November 2026 Lampung Cuaca Lampung 20 Oktober 2026: Cerah Berawan Dominan, Waspada Hujan Lokal Lampung Tengah Kebakaran Landa TPA Bandarjaya Lampung Tengah, Gas Metan Diduga Pemicu Utama

Modul:Spoken Wikipedia

Wikimedia module

Bagikan:
Dokumentasi modullihatsuntingriwayatsegarkan
DiproteksiModul ini dilindungi. Modul ini sangat mencolok yang digunakan oleh banyak halaman, atau sangat sering disubstitusikan. Karena vandalisme atau kesalahan akan mempengaruhi banyak halaman, dan suntingan kecil dapat memberi beban besar pada server, modul ini dilindungi dari penyuntingan.
Modul ini menggunakan Lua:
CSSModul ini menggunakan TemplateStyles:

Mengimplementasikan {{Wikipedia Lisan}}. Lihat kasus ujinya di Templat:Wikipedia Lisan/kasus uji.

PenggunaanPenggunaan

{{#invoke:Spoken Wikipedia|main}}

ParametersParameters

Parameter wajibParameter wajib

|1=, |2=, |3=...
Nama berkas audio
|date=
Tanggal versi halaman saat direkam

Parameter opsionalParameter opsional

|page=
Mengganti teks "artikel ini" dengan tautan wiki—untuk penempatan templat artikel di halaman lain.
|nocat=true
Buang kategorisasi.

Lihat pulaLihat pula

Dokumentasi di atas ditransklusikan dari Modul:Spoken Wikipedia/doc. (sunting | riwayat)
Penyunting dapat melakukan uji coba pada halaman bak pasir (buat | cermin) dan kasus uji (buat) modul ini.
Subhalaman modul ini.
localgetArgs=require('Module:Arguments').getArgs
localyesno=require('Module:Yesno')
localDate=require('Module:Date')._Date
locallang=mw.language.new('en')
localcfg=mw.loadData('Modul:Spoken Wikipedia/konfigurasi')
p={}
localfunctionwikiError(message)
localret=mw.html.create('div')
:addClass(cfg.i18n.class.err)
:wikitext(message)
:done()
returntostring(ret)
end
localfunctioncategory(c,nocat)
ifnocatthen
return''
else
returnc
end
end
localfunctionformatPageText(page)
ifpagethen
return'<span class="fn">[['..page..']]</span>'
end
ifmw.title.getCurrentTitle().namespace==0then
returncfg.i18n.this_article
else
returncfg.i18n.this_page
end
end
localfunctionformatFileLength(filenames)
locallength=0
for_,filenameinipairs(filenames)do
localfileTitle=mw.title.new(filename,'Media')
iffileTitleandfileTitle.fileandfileTitle.file.existsthen
length=length+fileTitle.file.length
end
end
-- Add 30 to offset the rounding down
localintervals=lang:getDurationIntervals(length+30,{'hours','minutes'})
localret=string.format(
'<span class="min">%s</span> %s',
intervals.minutesor0,
intervals.minutes==1andcfg.i18n.minuteorcfg.i18n.minutes
)
ifintervals.hoursthen
ret=string.format(
'<span class="h">%s</span> %s dan %s',
intervals.hours,
intervals.hours==1andcfg.i18n.hourorcfg.i18n.hours,
ret
)
end
return'<span class="duration">'..ret..'</span>'
end
localfunctionformatHeader(filenames,page)
locallistento=mw.html.create('span')
:addClass(cfg.i18n.class.listento)
:wikitext(string.format(
cfg.i18n.listento,
formatPageText(page)
))
:done()
localfile_length
if#filenames>1then
file_length=string.format(
cfg.i18n.n_files_length,
tostring(#filenames),
formatFileLength(filenames)
)
else
file_length=string.format(
cfg.i18n.one_file_length,
formatFileLength(filenames)
)
end
returnmw.html.create('div')
:addClass(cfg.i18n.class.header)
:node(listento)
:wikitext(file_length)
:done()
end
localfunctionformatIcon()
returnmw.html.create('div')
:addClass(cfg.i18n.class.icon)
:wikitext(cfg.i18n.icon)
:done()
end
localfunctionformatFiles(filenames,nocat)
if#filenames==0then
returnwikiError(cfg.i18n.err.no_filename)..
category(cfg.i18n.cat.no_filename,nocat)
end
-- TODO: the else branch really wants to be a mw.html <ol> object rather than wikitext
-- version of the same, so that we can style the numbers nicer
localfiles={}
if#filenames==1then
table.insert(files,string.format(cfg.i18n.one_file,filenames[1]))
else
fori,filenameinipairs(filenames)do
table.insert(files,string.format(cfg.i18n.n_files,filename,i))
end
end
returnmw.html.create('div')
:addClass(cfg.i18n.class.files)
:wikitext(table.concat(files))
:done()
:newline()
end
localfunctionformatDateText(frame,dateArg,nocat)
locald=dateArgandDate(dateArg)ornil
returndandframe:expandTemplate{
title='Start date',args={
d.year,
d.month,
d.day,
df='y'
}
}or(wikiError(cfg.i18n.err.no_date)..category(cfg.i18n.cat.no_date,nocat))
end
localfunctionformatDisclaimer(frame,filenames,page,dateArg,nocat)
localthisFileText=''
localdisclaimer
if#filenames==1then
thisFileText=filenames[1]
disclaimer=cfg.i18n.one_file_disclaimer
else
disclaimer=cfg.i18n.n_files_disclaimer
end
returnmw.html.create('div')
:addClass(cfg.i18n.class.disclaimer)
:wikitext(string.format(
disclaimer,
thisFileText,
formatPageText(page),
formatDateText(frame,dateArg,nocat)
))
:done()
end
localfunctionformatFooter()
returnmw.html.create('div')
:addClass(cfg.i18n.class.footer)
:wikitext(cfg.i18n.footer)
:done()
end
localfunctionformatTopicon(frame,filenames)
localwikilink
if#filenames>0then
wikilink='Berkas:'..filenames[1]
else
wikilink=cfg.i18n.topicon_multiwikilink
end
returnframe:expandTemplate{
title="Top icon",
args={
imagename='Sound-icon.svg',
wikilink=wikilink,
text='Dengarkan artikel ini',
id='spoken-icon'
}
}
end
localfunctionextractFilenames(args)
localfilenames={}
forkey,rawValueinipairs(args)do
localvalue=mw.text.trim(rawValue)
iftype(key)=="number"andvalue~=''then
table.insert(filenames,value)
end
end
returnfilenames
end
localfunctionsidebox(nodes)
root=mw.html.create('div')
:addClass(cfg.i18n.class.box)
for_,nodeinipairs(nodes)do
root:node(node)
end
returnroot
end
functionmain(frame)
localargs=getArgs(frame)
-- Mandatory parameters
localfilenames=extractFilenames(args)
localdateArg=args['date']
-- Optional parameters
localpage=args['page']
localnocat=yesno(args['nocat'],false)orfalse
localroot=sidebox({
formatHeader(filenames,page),
formatFiles(filenames,nocat),
formatIcon(),
formatDisclaimer(frame,filenames,page,dateArg,nocat),
formatFooter()
})
ifmw.title.getCurrentTitle().namespace==0then
root:wikitext(formatTopicon(frame,filenames))
root:wikitext(category(cfg.i18n.cat.articles,nocat))
end
returnframe:extensionTag{
name='templatestyles',args={src=cfg.templatestyles}
}..tostring(root)
end
p.main=main
returnp
Konten disalin dari Wikipedia Bahasa Indonesia (lisensi CC BY-SA) Lihat versi asli di Wikipedia

Rekomendasi Pilihan