Jump to content
Wikipedia The Free Encyclopedia

Module:Wd/i18n

From Wikipedia, the free encyclopedia
Module documentation[view] [edit] [history] [purge]
Warning This Lua module is used on approximately 1,850,000 pages, or roughly 3% of all pages .
To avoid major disruption and server load, any changes should be tested in the module's /sandbox or /testcases subpages, or in your own module sandbox. The tested changes can be added to this page in a single edit. Consider discussing changes on the talk page before implementing them.

This submodule is used by Module:Wd for internationalization (i18n ) purposes and has been separated to allow for locale-independent updating of the module's logic.

The above documentation is transcluded from Module:Wd/i18n/doc. (edit | history)
Editors can experiment in this module's sandbox (edit | diff) and testcases (create) pages.
Subpages of this module.

 -- The values and functions in this submodule should be localized per wiki.

 localp={}

 functionp.init(aliasesP)
 p={
 ["version"]="8",-- increment this each time the below parameters are changed to avoid reference conflict errors
 ["errors"]={
 ["unknown-data-type"]="Unknown or unsupported datatype '%s'.",
 ["missing-required-parameter"]="No required parameters defined, needing at least one",
 ["extra-required-parameter"]="Parameter '%s' must be defined as optional",
 ["no-function-specified"]="You must specify a function to call",-- equal to the standard module error message
 ["main-called-twice"]='The function "main" cannot be called twice',
 ["no-such-function"]='The function "%s" does not exist',-- equal to the standard module error message
 ["no-such-reference-template"]='Error: template "%s", which is set in %s as the output template for the citation-output type "%s", does not exist',
 -- Parts of the error message signalling a malformed reference.
 ["malformed-reference-header"]="<span style=\"color:#dd3333\">\nError: Unable to display the reference from Wikidata properly. Technical details:\n",
 ["malformed-reference-footer"]="See [[Module:wd/doc#References|the documentation]] for further details.\n</span>\n[[Category:Module:Wd reference errors]]",
 ["template-failure-reason"]="* Reason for the failure of {{tl|%s}}: %s\n",
 ["missing-mandatory-param"]='The output template call would miss the mandatory parameter <code>%s</code>.',
 ["unknown-property-in-ref"]='The Wikidata reference contains the property {{property|%s}}, which is not assigned to any parameter of this template.'
 },
 ["info"]={
 ["edit-on-wikidata"]="Edit this on Wikidata"
 },
 ["numeric"]={
 ["decimal-mark"]=".",
 ["delimiter"]=","
 },
 ["datetime"]={
 ["prefixes"]={
 ["decade-period"]=""
 },
 ["suffixes"]={
 ["decade-period"]="s",
 ["millennium"]=" millennium",
 ["century"]=" century",
 ["million-years"]=" million years",
 ["billion-years"]=" billion years",
 ["year"]=" year",
 ["years"]=" years"
 },
 ["julian-calendar"]="Julian calendar",-- linked page title
 ["julian"]="Julian",
 ["BCE"]="BCE",
 ["CE"]="CE",
 ["common-era"]="Common Era"-- linked page title
 },
 ["coord"]={
 ["latitude-north"]="N",
 ["latitude-south"]="S",
 ["longitude-east"]="E",
 ["longitude-west"]="W",
 ["degrees"]="°",
 ["minutes"]="'",
 ["seconds"]='"',
 ["separator"]=", "
 },
 ["values"]={
 ["unknown"]="unknown",
 ["none"]="none"
 },
 ["cite"]={
 ["output-types"]={"web","q"},-- In this order, the output types will be tried
 ["param-mapping"]={
 ["web"]={
 -- <= left side: all allowed reference properties for *web page sources* per https://www.wikidata.org/wiki/Help:Sources
 -- => right side: corresponding parameter names in (equivalent of) [[:en:Template:Cite web]] (if non-existent, keep empty i.e. "")
 [aliasesP.statedIn]="website",
 [aliasesP.referenceURL]="url",
 [aliasesP.publicationDate]="date",
 [aliasesP.lastUpdate]="date",
 [aliasesP.retrieved]="access-date",
 [aliasesP.title]="title",
 [aliasesP.subjectNamedAs]="title",
 [aliasesP.archiveURL]="archive-url",
 [aliasesP.archiveDate]="archive-date",
 [aliasesP.language]="language",
 [aliasesP.author]="author",
 [aliasesP.authorNameString]="author",
 [aliasesP.publisher]="publisher",
 [aliasesP.quote]="quote",
 [aliasesP.pages]="pages",-- extra option
 [aliasesP.publishedIn]="website",
 [aliasesP.sectionVerseOrParagraph]="at"
 },
 ["q"]={
 -- <= left side: all allowed reference properties for *sources other than web pages* per https://www.wikidata.org/wiki/Help:Sources
 -- => right side: corresponding parameter names in (equivalent of) [[:en:Template:Cite Q]] (if non-existent, keep empty i.e. "")
 [aliasesP.statedIn]="1",
 [aliasesP.pages]="pages",
 [aliasesP.column]="at",
 [aliasesP.chapter]="chapter",
 [aliasesP.sectionVerseOrParagraph]="section",
 ["external-id"]="id",-- used for any type of database property ID
 [aliasesP.title]="title",
 [aliasesP.publicationDate]="date",
 [aliasesP.lastUpdate]="date",
 [aliasesP.retrieved]="access-date"
 }
 },
 ["config"]={
 -- supported fields:
 -- - template: name of the template used for output
 -- - numbered-params: citation params accepting an arbitrary number of values by numbering the params (e.g. author1, author2)
 -- - raw-value-params: params taking a raw value (which means the property is rendered with getValue with raw=true)
 -- - mandatory-params: params that are required be in the template call (after potentially appending numbers to params listed in numbered-params)
 -- - prioritization: table associating a list of properties, in the order in which they are preferred, to template parameters;
 -- properties not mentioned here have the lowest priority;
 -- prioritization of properties handled through additionalProcessedProperties is unsupported;
 -- no key of this table can be from numbered-params 
 -- Leaving out the "template" field causes the output type to be ignored.
 ["web"]={
 ["template"]="Cite web",
 ["numbered-params"]={"author"},
 ["mandatory-params"]={"url"},
 ["prioritization"]={
 ["date"]={aliasesP.lastUpdate,aliasesP.publicationDate},
 ["title"]={aliasesP.title,aliasesP.subjectNamedAs}
 }
 },
 ["q"]={
 ["template"]="Cite Q",
 ["raw-value-params"]={"1"},-- the first, unnamed parameter of CiteQ takes a QID, not the name of the item cited
 ["mandatory-params"]={"1"},
 ["prioritization"]={
 ["date"]={aliasesP.lastUpdate,aliasesP.publicationDate}
 }
 }
 }
 }
 }

 p.getOrdinalSuffix=function(num)
 iftostring(num):sub(-2,-2)=='1'then
 return"th"-- 10th, 11th, 12th, 13th, ... 19th
 end

 num=tostring(num):sub(-1)

 ifnum=='1'then
 return"st"
 elseifnum=='2'then
 return"nd"
 elseifnum=='3'then
 return"rd"
 else
 return"th"
 end
 end

 p.addDelimiters=function(n)
 localleft,num,right=string.match(n,"^([^%d]*%d)(%d*)(.-)$")

 ifleftandnumandrightthen
 returnleft..(num:reverse():gsub("(%d%d%d)","%1"..p['numeric']['delimiter']):reverse())..right
 else
 returnn
 end
 end

 returnp
 end

 returnp

AltStyle によって変換されたページ (->オリジナル) /