Movatterモバイル変換


[0]ホーム

URL:


Jump to content
Wikimedia Meta-Wiki
Search

Module:TNT

Permanently protected module
From Meta, a Wikimedia project coordination wiki
Module documentation
warningWarning:Do not edit. This page is maintained byan automated tool. All edits should be done atmediawiki.org. (translate this warning)
Please helptranslate this page.
Note as of 2024 sync appears to be broken
This module is rated asready for general use. It has reached a mature form and is thought to be bug-free and ready for use wherever appropriate. It is ready to mention on help pages and other MetaWiki resources as an option for new users to learn. To reduce server load and bad output, it should be improved bysandbox testing rather than repeated trial-and-error editing.

Module Quality

Module:TNTsuccess: 6, error: 1, skipped: 0
Module:TNT/sandboxsuccess: 6, error: 1, skipped: 0
The abovedocumentation istranscluded fromModule:TNT/doc.(edit |history)
Editors can experiment in this module’ssandbox(edit |diff) andtestcases(edit) pages.
Please add categories to the/doc subpage.Subpages of this module.

---- INTRO:   (!!! DO NOT RENAME THIS PAGE !!!)--    This module allows any template or module to be copy/pasted between--    wikis without any translation changes. All translation text is stored--    in the global  Data:*.tab  pages on Commons, and used everywhere.---- SEE:   https://www.mediawiki.org/wiki/Multilingual_Templates_and_Modules---- ATTENTION:--    Please do NOT rename this module - it has to be identical on all wikis.--    This code is maintained at https://www.mediawiki.org/wiki/Module:TNT--    Please do not modify it anywhere else, as it may get copied and override your changes.--    Suggestions can be made at https://www.mediawiki.org/wiki/Module_talk:TNT---- DESCRIPTION:--    The "msg" function uses a Commons dataset to translate a message--    with a given key (e.g. source-table), plus optional arguments--    to the wiki markup in the current content language.--    Use lang=xx to set language.  Example:----    {{#invoke:TNT | msg--     | I18n/Template:Graphs.tab  <!-- https://commons.wikimedia.org/wiki/Data:I18n/Template:Graphs.tab -->--     | source-table              <!-- uses a translation message with id = "source-table" -->--     | param1 }}                 <!-- optional parameter -->------    The "doc" function will generate the <templatedata> parameter documentation for templates.--    This way all template parameters can be stored and localized in a single Commons dataset.--    NOTE: "doc" assumes that all documentation is located in Data:Templatedata/* on Commons.----    {{#invoke:TNT | doc | Graph:Lines }}--        uses https://commons.wikimedia.org/wiki/Data:Templatedata/Graph:Lines.tab--        if the current page is Template:Graph:Lines/doc--localp={}locali18nDataset='I18n/Module:TNT.tab'-- Forward declaration of the local functionslocalsanitizeDataset,loadData,link,formatMessagefunctionp.msg(frame)localdataset,idlocalparams={}locallang=nilfork,vinpairs(frame.args)doifk==1thendataset=mw.text.trim(v)elseifk==2thenid=mw.text.trim(v)elseiftype(k)=='number'thenparams[k-2]=mw.text.trim(v)elseifk=='lang'andv~='_'thenlang=mw.text.trim(v)endendreturnformatMessage(dataset,id,params,lang)end-- Identical to p.msg() above, but used from other lua modules-- Parameters:  name of dataset, message key, optional arguments-- Example with 2 params:  format('I18n/Module:TNT', 'error_bad_msgkey', 'my-key', 'my-dataset')functionp.format(dataset,key,...)localcheckType=require('libraryUtil').checkTypecheckType('format',1,dataset,'string')checkType('format',2,key,'string')returnformatMessage(dataset,key,{...})end-- Identical to p.msg() above, but used from other lua modules with the language param-- Parameters:  language code, name of dataset, message key, optional arguments-- Example with 2 params:  formatInLanguage('es', I18n/Module:TNT', 'error_bad_msgkey', 'my-key', 'my-dataset')functionp.formatInLanguage(lang,dataset,key,...)localcheckType=require('libraryUtil').checkTypecheckType('formatInLanguage',1,lang,'string')checkType('formatInLanguage',2,dataset,'string')checkType('formatInLanguage',3,key,'string')returnformatMessage(dataset,key,{...},lang)end-- Obsolete function that adds a 'c:' prefix to the first param.-- "Sandbox/Sample.tab" -> 'c:Data:Sandbox/Sample.tab'functionp.link(frame)returnlink(frame.args[1])endfunctionp.doc(frame)localdataset='Templatedata/'..sanitizeDataset(frame.args[1])returnframe:extensionTag('templatedata',p.getTemplateData(dataset))..formatMessage(i18nDataset,'edit_doc',{link(dataset)})endfunctionp.getTemplateData(dataset)-- TODO: add '_' parameter once lua starts reindexing properly for "all" languageslocaldata=loadData(dataset)localnames={}for_,fieldinipairs(data.schema.fields)dotable.insert(names,field.name)endlocalnumOnly=truelocalparams={}localparamOrder={}for_,rowinipairs(data.data)dolocalnewVal={}localname=nilforpos,columnNameinipairs(names)doifcolumnName=='name'thenname=row[pos]elsenewVal[columnName]=row[pos]endendifnamethenif((type(name)~="number")and((type(name)~="string")ornotstring.match(name,"^%d+$")))thennumOnly=falseendparams[name]=newValtable.insert(paramOrder,name)endend-- Work around json encoding treating {"1":{...}} as an [{...}]ifnumOnlythenparams['zzz123']=''endlocaljson=mw.text.jsonEncode({params=params,paramOrder=paramOrder,description=data.description,})ifnumOnlythenjson=string.gsub(json,'"zzz123":"",?',"")endreturnjsonend-- Local functionssanitizeDataset=function(dataset)ifnotdatasetthenreturnnilenddataset=mw.text.trim(dataset)ifdataset==''thenreturnnilelseifstring.sub(dataset,-4)~='.tab'thenreturndataset..'.tab'elsereturndatasetendendloadData=function(dataset,lang)dataset=sanitizeDataset(dataset)ifnotdatasetthenerror(formatMessage(i18nDataset,'error_no_dataset',{}))end-- Give helpful error to thirdparties who try and copy this module.ifnotmw.extornotmw.ext.dataornotmw.ext.data.getthenerror(string.format([['''Missing JsonConfig extension, or not properly configured;Cannot load https://commons.wikimedia.org/wiki/Data:%s.See https://www.mediawiki.org/wiki/Extension:JsonConfig#Supporting_Wikimedia_templates''']],dataset))endlocaldata=mw.ext.data.get(dataset,lang)ifdata==falsethenifdataset==i18nDatasetthen-- Prevent cyclical callserror('Missing Commons dataset '..i18nDataset)elseerror(formatMessage(i18nDataset,'error_bad_dataset',{link(dataset)}))endendreturndataend-- Given a dataset name, convert it to a title with the 'commons:data:' prefixlink=function(dataset)return'c:Data:'..mw.text.trim(datasetor'')endformatMessage=function(dataset,key,params,lang)for_,rowinpairs(loadData(dataset,lang).data)dolocalid,msg=unpack(row)ifid==keythenlocalresult=mw.message.newRawMessage(msg,unpack(paramsor{}))returnresult:plain()endendifdataset==i18nDatasetthen-- Prevent cyclical callserror('Invalid message key "'..key..'"')elseerror(formatMessage(i18nDataset,'error_bad_msgkey',{key,link(dataset)}))endendreturnp
Retrieved from "https://meta.wikimedia.org/w/index.php?title=Module:TNT&oldid=28624302"
Categories:
Hidden category:

[8]ページ先頭

©2009-2025 Movatter.jp