پودمان:Documentation: تفاوت میان نسخه‌ها

    بدون خلاصۀ ویرایش
    fa>Wikinoor.ir
    جز (update code comment according to Special:Diff/989669779)
    خط ۱: خط ۱:
    -- برای فارسی‌سازی بهتر، بعضی از قسمت‌های این پودمان تغییر کرده‌است. لطفاً هنگام به‌روزرسانی به توضیحات پودمان توجه کنید.
    -- This module implements {{documentation}}.
    -- This module implements {{documentation}}.


    -- Get required modules.
    -- Get required modules.
    local getArgs = require('Module:Arguments').getArgs
    local getArgs = require('Module:Arguments').getArgs
    local messageBox = require('Module:Message box')


    -- Get the config table.
    -- Get the config table.
    خط ۳۴: خط ۳۲:
    expectType = expectType or 'string'
    expectType = expectType or 'string'
    if type(msg) ~= expectType then
    if type(msg) ~= expectType then
    error('پیام: خطای نوع در متن cfg.' .. cfgKey .. ' (' .. expectType .. ' انتظار می‌رفت، ' .. type(msg) .. ' بدست آمد)', 2)
    error('message: type error in message cfg.' .. cfgKey .. ' (' .. expectType .. ' expected, got ' .. type(msg) .. ')', 2)
    end
    end
    if not valArray then
    if not valArray then
    خط ۴۲: خط ۴۰:
    local function getMessageVal(match)
    local function getMessageVal(match)
    match = tonumber(match)
    match = tonumber(match)
    -- برای فارسی‌سازی بهتر، ساختار خطای نمایشی خط زیر تغییر کرده‌است
    return valArray[match] or error('message: no value found for key $' .. match .. ' in message cfg.' .. cfgKey, 4)
    return valArray[match] or error('پیام: هیچ مقداری برای کلید $' .. match .. ' در متن cfg.' .. cfgKey .. ' یافت نشد', 4)
    end
    end


    local ret = ugsub(msg, '$([1-9][0-9]*)', getMessageVal)
    return ugsub(msg, '$([1-9][0-9]*)', getMessageVal)
    return ret
    end
    end


    خط ۸۴: خط ۸۰:
    ret[#ret + 1] = select(i, ...)
    ret[#ret + 1] = select(i, ...)
    end
    end
    return '<small style="font-style: normal;">(' .. table.concat(ret, ' &#124; ') .. ')</small>'
    -- 'documentation-toolbar'
    return '<span class="' .. message('toolbar-class') .. '">('
    .. table.concat(ret, ' &#124; ') .. ')</span>'
    end
    end


    خط ۱۱۴: خط ۱۱۲:


    ----------------------------------------------------------------------------
    ----------------------------------------------------------------------------
    -- Main function
    -- Entry points
    ----------------------------------------------------------------------------
    ----------------------------------------------------------------------------
    function p.nonexistent(frame)
    if mw.title.getCurrentTitle().subpageText == 'testcases' then
    return frame:expandTemplate{title = 'module test cases notice'}
    else
    return p.main(frame)
    end
    end


    p.main = makeInvokeFunc('_main')
    p.main = makeInvokeFunc('_main')
    خط ۱۲۳: خط ۱۲۹:
    -- This function defines logic flow for the module.
    -- This function defines logic flow for the module.
    -- @args - table of arguments passed by the user
    -- @args - table of arguments passed by the user
    --
    -- Messages:
    -- 'main-div-id' --> 'template-documentation'
    -- 'main-div-classes' --> 'template-documentation iezoomfix'
    --]]
    --]]
    local env = p.getEnvironment(args)
    local env = p.getEnvironment(args)
    local root = mw.html.create()
    local root = mw.html.create()
    root
    root
    :wikitext(p._getModuleWikitext(args, env))
    :wikitext(p.protectionTemplate(env))
    :wikitext(p.protectionTemplate(env))
    :wikitext(p.sandboxNotice(args, env))
    :wikitext(p.sandboxNotice(args, env))
    -- This div tag is from {{documentation/start box}}, but moving it here
    -- so that we don't have to worry about unclosed tags.
    :tag('div')
    :tag('div')
    :attr('id', message('main-div-id'))
    -- 'documentation-container'
    :addClass(message('main-div-classes'))
    :addClass(message('container'))
    :attr('role', 'complementary')
    :attr('aria-labelledby', args.heading ~= '' and 'documentation-heading' or nil)
    :attr('aria-label', args.heading == '' and 'Documentation' or nil)
    :newline()
    :newline()
    :wikitext(p._startBox(args, env))
    :wikitext(p._content(args, env))
    :tag('div')
    :tag('div')
    :css('clear', 'both') -- So right or left floating items don't stick out of the doc box.
    -- 'documentation'
    :addClass(message('main-div-classes'))
    :newline()
    :wikitext(p._startBox(args, env))
    :wikitext(p._content(args, env))
    :tag('div')
    -- 'documentation-clear'
    :addClass(message('clear'))
    :done()
    :newline()
    :newline()
    :done()
    :done()
    :wikitext(p._endBox(args, env))
    :done()
    :done()
    :wikitext(p._endBox(args, env))
    :wikitext(p.addTrackingCategories(env))
    :wikitext(p.addTrackingCategories(env))
    return tostring(root)
    -- 'Module:Documentation/styles.css'
    return mw.getCurrentFrame():extensionTag (
    'templatestyles', '', {src=cfg['templatestyles']
    }) .. tostring(root)
    end
    end


    خط ۱۵۷: خط ۱۷۰:
    function p.getEnvironment(args)
    function p.getEnvironment(args)
    --[[
    --[[
    -- Returns a table with information about the environment, including title objects and other namespace- or
    -- Returns a table with information about the environment, including title
    -- path-related data.
    -- objects and other namespace- or path-related data.
    -- @args - table of arguments passed by the user
    -- @args - table of arguments passed by the user
    --
    --
    خط ۱۶۷: خط ۱۸۰:
    -- env.sandboxTitle - the /sandbox subpage.
    -- env.sandboxTitle - the /sandbox subpage.
    -- env.testcasesTitle - the /testcases subpage.
    -- env.testcasesTitle - the /testcases subpage.
    -- env.printTitle - the print version of the template, located at the /Print subpage.
    --
    --
    -- Data includes:
    -- Data includes:
    خط ۲۶۱: خط ۲۷۳:
    --]]
    --]]
    return mw.title.new(env.docpageBase .. '/' .. message('testcases-subpage'))
    return mw.title.new(env.docpageBase .. '/' .. message('testcases-subpage'))
    end
    function envFuncs.printTitle()
    --[[
    -- Title object for the /Print subpage.
    -- Messages:
    -- 'print-subpage' --> 'Print'
    --]]
    return env.templateTitle:subPageTitle(message('print-subpage'))
    end
    end


    خط ۲۸۳: خط ۲۸۶:


    function envFuncs.docSpace()
    function envFuncs.docSpace()
    -- The documentation namespace number. For most namespaces this is the same as the
    -- The documentation namespace number. For most namespaces this is the
    -- subject namespace. However, pages in the Article, File, MediaWiki or Category
    -- same as the subject namespace. However, pages in the Article, File,
    -- namespaces must have their /doc, /sandbox and /testcases pages in talk space.
    -- MediaWiki or Category namespaces must have their /doc, /sandbox and
    -- /testcases pages in talk space.
    local subjectSpace = env.subjectSpace
    local subjectSpace = env.subjectSpace
    if subjectSpace == 0 or subjectSpace == 6 or subjectSpace == 8 or subjectSpace == 14 then
    if subjectSpace == 0 or subjectSpace == 6 or subjectSpace == 8 or subjectSpace == 14 then
    خط ۳۱۰: خط ۳۱۴:
    if templateTitle.exists and sandboxTitle.exists then
    if templateTitle.exists and sandboxTitle.exists then
    local compareUrl = mw.uri.fullUrl(
    local compareUrl = mw.uri.fullUrl(
    'ویژه:مقایسهٔ صفحات',
    'Special:ComparePages',
    {page1 = templateTitle.prefixedText, page2 = sandboxTitle.prefixedText}
    { page1 = templateTitle.prefixedText, page2 = sandboxTitle.prefixedText}
    )
    )
    return tostring(compareUrl)
    return tostring(compareUrl)
    خط ۳۲۵: خط ۳۲۹:
    -- Auxiliary templates
    -- Auxiliary templates
    ----------------------------------------------------------------------------
    ----------------------------------------------------------------------------
    p.getModuleWikitext = makeInvokeFunc('_getModuleWikitext')
    function p._getModuleWikitext(args, env)
    local currentTitle = mw.title.getCurrentTitle()
    if currentTitle.contentModel ~= 'Scribunto' then return end
    pcall(require, currentTitle.prefixedText) -- if it fails, we don't care
    local moduleWikitext =  package.loaded["Module:Module wikitext"]
    if moduleWikitext then
    return moduleWikitext.main()
    end
    end


    function p.sandboxNotice(args, env)
    function p.sandboxNotice(args, env)
    خط ۳۳۳: خط ۳۴۹:
    --  
    --  
    -- Messages:
    -- Messages:
    -- 'sandbox-notice-image' --> '[[Image:Sandbox.svg|50px|alt=|link=]]'
    -- 'sandbox-notice-image' --> '[[File:Sandbox.svg|50px|alt=|link=]]'
    -- 'sandbox-notice-blurb' --> 'This is the $1 for $2.'
    -- 'sandbox-notice-blurb' --> 'This is the $1 for $2.'
    -- 'sandbox-notice-diff-blurb' --> 'This is the $1 for $2 ($3).'
    -- 'sandbox-notice-diff-blurb' --> 'This is the $1 for $2 ($3).'
    خط ۳۴۸: خط ۳۶۴:
    local templateTitle = env.templateTitle
    local templateTitle = env.templateTitle
    local subjectSpace = env.subjectSpace
    local subjectSpace = env.subjectSpace
    if not (subjectSpace and title and sandboxTitle and templateTitle and mw.title.equals(title, sandboxTitle)) then
    if not (subjectSpace and title and sandboxTitle and templateTitle
    and mw.title.equals(title, sandboxTitle)) then
    return nil
    return nil
    end
    end
    خط ۳۵۷: خط ۳۷۴:
    -- "This is the template sandbox for [[Template:Foo]] (diff)."
    -- "This is the template sandbox for [[Template:Foo]] (diff)."
    local text = ''
    local text = ''
    local frame = mw.getCurrentFrame()
    local isPreviewing = frame:preprocess('{{REVISIONID}}') == '' -- True if the page is being previewed.
    local pagetype
    local pagetype
    if subjectSpace == 10 then
    if subjectSpace == 10 then
    خط ۳۶۹: خط ۳۸۴:
    local templateLink = makeWikilink(templateTitle.prefixedText)
    local templateLink = makeWikilink(templateTitle.prefixedText)
    local compareUrl = env.compareUrl
    local compareUrl = env.compareUrl
    if isPreviewing or not compareUrl then
    if compareUrl then
    text = text .. message('sandbox-notice-blurb', {pagetype, templateLink})
    else
    local compareDisplay = message('sandbox-notice-compare-link-display')
    local compareDisplay = message('sandbox-notice-compare-link-display')
    local compareLink = makeUrlLink(compareUrl, compareDisplay)
    local compareLink = makeUrlLink(compareUrl, compareDisplay)
    text = text .. message('sandbox-notice-diff-blurb', {pagetype, templateLink, compareLink})
    text = text .. message('sandbox-notice-diff-blurb', {pagetype, templateLink, compareLink})
    else
    text = text .. message('sandbox-notice-blurb', {pagetype, templateLink})
    end
    end
    -- Get the test cases page blurb if the page exists. This is something like
    -- Get the test cases page blurb if the page exists. This is something like
    خط ۳۸۰: خط ۳۹۵:
    local testcasesTitle = env.testcasesTitle
    local testcasesTitle = env.testcasesTitle
    if testcasesTitle and testcasesTitle.exists then
    if testcasesTitle and testcasesTitle.exists then
    if testcasesTitle.namespace == mw.site.namespaces.Module.id then
    if testcasesTitle.contentModel == "Scribunto" then
    local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display')
    local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display')
    local testcasesRunLinkDisplay = message('sandbox-notice-testcases-run-link-display')
    local testcasesRunLinkDisplay = message('sandbox-notice-testcases-run-link-display')
    خط ۳۹۳: خط ۴۰۸:
    end
    end
    -- Add the sandbox to the sandbox category.
    -- Add the sandbox to the sandbox category.
    text = text .. makeCategoryLink(message('sandbox-category'))
    omargs.text = text .. makeCategoryLink(message('sandbox-category'))
    omargs.text = text
     
    local ret = '<div style="clear: both;"></div>'
    -- 'documentation-clear'
    ret = ret .. messageBox.main('ombox', omargs)
    return '<div class="' .. message('clear') .. '"></div>'
    return ret
    .. require('Module:Message box').main('ombox', omargs)
    end
    end


    خط ۴۰۶: خط ۴۲۱:
    -- 'protection-template' --> 'pp-template'
    -- 'protection-template' --> 'pp-template'
    -- 'protection-template-args' --> {docusage = 'yes'}
    -- 'protection-template-args' --> {docusage = 'yes'}
    local protectionLevels, mProtectionBanner
    local protectionLevels = env.protectionLevels
    local title = env.title
    if title.namespace ~= 10 and title.namespace ~= 828 then
    -- Don't display the protection template if we are not in the template or module namespaces.
    return nil
    end
    protectionLevels = env.protectionLevels
    if not protectionLevels then
    if not protectionLevels then
    return nil
    return nil
    خط ۴۲۰: خط ۴۲۹:
    if editProt then
    if editProt then
    -- The page is edit-protected.
    -- The page is edit-protected.
    mProtectionBanner = require('Module:Protection banner')
    return require('Module:Protection banner')._main{
    local reason = message('protection-reason-edit')
    message('protection-reason-edit'), small = true
    return mProtectionBanner._main{reason, small = true}
    }
    elseif moveProt and moveProt ~= 'autoconfirmed' then
    elseif moveProt and moveProt ~= 'autoconfirmed' then
    -- The page is move-protected but not edit-protected. Exclude move
    -- The page is move-protected but not edit-protected. Exclude move
    -- protection with the level "autoconfirmed", as this is equivalent to
    -- protection with the level "autoconfirmed", as this is equivalent to
    -- no move protection at all.
    -- no move protection at all.
    mProtectionBanner = require('Module:Protection banner')
    return require('Module:Protection banner')._main{
    return mProtectionBanner._main{action = 'move', small = true}
    action = 'move', small = true
    }
    else
    else
    return nil
    return nil
    خط ۴۵۳: خط ۴۶۳:
    local links
    local links
    local content = args.content
    local content = args.content
    if not content then
    if not content or args[1] then
    -- No need to include the links if the documentation is on the template page itself.
    -- No need to include the links if the documentation is on the template page itself.
    local linksData = p.makeStartBoxLinksData(args, env)
    local linksData = p.makeStartBoxLinksData(args, env)
    خط ۴۸۱: خط ۴۹۱:
    -- 'history-link-display' --> 'history'
    -- 'history-link-display' --> 'history'
    -- 'purge-link-display' --> 'purge'
    -- 'purge-link-display' --> 'purge'
    -- 'file-docpage-preload' --> 'Template:Documentation/preload-filespace'
    -- 'module-preload' --> 'Template:Documentation/preload-module-doc'
    -- 'module-preload' --> 'Template:Documentation/preload-module-doc'
    -- 'docpage-preload' --> 'Template:Documentation/preload'
    -- 'docpage-preload' --> 'Template:Documentation/preload'
    خط ۴۹۱: خط ۵۰۰:
    if not title or not docTitle then
    if not title or not docTitle then
    return nil
    return nil
    end
    if docTitle.isRedirect then
    docTitle = docTitle.redirectTarget
    end
    end


    خط ۵۰۴: خط ۵۱۶:
    local preload = args.preload
    local preload = args.preload
    if not preload then
    if not preload then
    if subjectSpace == 6 then -- File namespace
    if subjectSpace == 828 then -- Module namespace
    preload = message('file-docpage-preload')
    elseif subjectSpace == 828 then -- Module namespace
    preload = message('module-preload')
    preload = message('module-preload')
    else
    else
    خط ۵۱۹: خط ۵۲۹:
    function p.renderStartBoxLinks(data)
    function p.renderStartBoxLinks(data)
    --[[
    --[[
    -- Generates the [view][edit][history][purge] or [create] links from the data table.
    -- Generates the [view][edit][history][purge] or [create][purge] links from the data table.
    -- @data - a table of data generated by p.makeStartBoxLinksData
    -- @data - a table of data generated by p.makeStartBoxLinksData
    --]]
    --]]
    خط ۵۳۳: خط ۵۴۳:
    local docTitle = data.docTitle
    local docTitle = data.docTitle
    local title = data.title
    local title = data.title
    local purgeLink = makeUrlLink(title:fullUrl{action = 'purge'}, data.purgeLinkDisplay)
    if docTitle.exists then
    if docTitle.exists then
    local viewLink = makeWikilink(docTitle.prefixedText, data.viewLinkDisplay)
    local viewLink = makeWikilink(docTitle.prefixedText, data.viewLinkDisplay)
    local editLink = makeUrlLink(docTitle:fullUrl{action = 'edit'}, data.editLinkDisplay)
    local editLink = makeUrlLink(docTitle:fullUrl{action = 'edit'}, data.editLinkDisplay)
    local historyLink = makeUrlLink(docTitle:fullUrl{action = 'history'}, data.historyLinkDisplay)
    local historyLink = makeUrlLink(docTitle:fullUrl{action = 'history'}, data.historyLinkDisplay)
    local purgeLink = makeUrlLink(title:fullUrl{action = 'purge'}, data.purgeLinkDisplay)
    ret = '[%s] [%s] [%s] [%s]'
    ret = '[%s] [%s] [%s] [%s]'
    ret = escapeBrackets(ret)
    ret = escapeBrackets(ret)
    خط ۵۴۳: خط ۵۵۳:
    else
    else
    local createLink = makeUrlLink(docTitle:fullUrl{action = 'edit', preload = data.preload}, data.createLinkDisplay)
    local createLink = makeUrlLink(docTitle:fullUrl{action = 'edit', preload = data.preload}, data.createLinkDisplay)
    ret = '[%s]'
    ret = '[%s] [%s]'
    ret = escapeBrackets(ret)
    ret = escapeBrackets(ret)
    ret = mw.ustring.format(ret, createLink)
    ret = mw.ustring.format(ret, createLink, purgeLink)
    end
    end
    return ret
    return ret
    خط ۵۵۸: خط ۵۶۸:
    --
    --
    -- Messages:
    -- Messages:
    -- 'documentation-icon-wikitext' --> '[[File:Test Template Info-Icon - Version (2).svg.png|link=|alt=Documentation icon]]'
    -- 'documentation-icon-wikitext' --> '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]'
    -- 'template-namespace-heading' --> 'Template documentation'
    -- 'template-namespace-heading' --> 'Template documentation'
    -- 'module-namespace-heading' --> 'Module documentation'
    -- 'module-namespace-heading' --> 'Module documentation'
    -- 'file-namespace-heading' --> 'Summary'
    -- 'file-namespace-heading' --> 'Summary'
    -- 'other-namespaces-heading' --> 'Documentation'
    -- 'other-namespaces-heading' --> 'Documentation'
    -- 'start-box-linkclasses' --> 'mw-editsection-like plainlinks'
    -- 'start-box-link-id' --> 'doc_editlinks'
    -- 'testcases-create-link-display' --> 'create'
    -- 'testcases-create-link-display' --> 'create'
    --]=]
    --]=]
    خط ۵۹۷: خط ۶۰۵:
    if headingStyle then
    if headingStyle then
    data.headingStyleText = headingStyle
    data.headingStyleText = headingStyle
    elseif subjectSpace == 10 then
    -- We are in the template or template talk namespaces.
    data.headingFontWeight = 'bold'
    data.headingFontSize = '125%'
    else
    else
    data.headingFontSize = '150%'
    -- 'documentation-heading'
    data.headingClass = message('main-div-heading-class')
    end
    end
    -- Data for the [view][edit][history][purge] or [create] links.
    -- Data for the [view][edit][history][purge] or [create] links.
    if links then
    if links then
    data.linksClass = message('start-box-linkclasses')
    -- 'mw-editsection-like plainlinks'
    data.linksId = message('start-box-link-id')
    data.linksClass = message('start-box-link-classes')
    data.links = links
    data.links = links
    end
    end
    خط ۶۲۰: خط ۶۲۵:
    local sbox = mw.html.create('div')
    local sbox = mw.html.create('div')
    sbox
    sbox
    :css('padding-bottom', '3px')
    -- 'documentation-startbox'
    :css('border-bottom', '1px solid #aaa')
    :addClass(message('start-box-class'))
    :css('margin-bottom', '1ex')
    :newline()
    :newline()
    :tag('span')
    :tag('span')
    :addClass(data.headingClass)
    :attr('id', 'documentation-heading')
    :cssText(data.headingStyleText)
    :cssText(data.headingStyleText)
    :css('font-weight', data.headingFontWeight)
    :css('font-size', data.headingFontSize)
    :wikitext(data.heading)
    :wikitext(data.heading)
    local links = data.links
    local links = data.links
    خط ۶۸۴: خط ۶۸۸:
    -- @env - environment table containing title objects, etc., generated with p.getEnvironment
    -- @env - environment table containing title objects, etc., generated with p.getEnvironment
    --  
    --  
    -- Messages:
    -- 'fmbox-id' --> 'documentation-meta-data'
    -- 'fmbox-style' --> 'background-color: #ecfcf4'
    -- 'fmbox-textstyle' --> 'font-style: italic'
    --
    -- The HTML is generated by the {{fmbox}} template, courtesy of [[Module:Message box]].
    --]=]
    --]=]
    خط ۷۱۵: خط ۷۱۳:
    end
    end


    -- Assemble the arguments for {{fmbox}}.
    -- Assemble the link box.
    local fmargs = {}
    fmargs.id = message('fmbox-id') -- Sets 'documentation-meta-data'
    fmargs.image = 'none'
    fmargs.style = message('fmbox-style') -- Sets 'background-color: #ecfcf4'
    fmargs.textstyle = message('fmbox-textstyle') -- 'font-style: italic;'
     
    -- Assemble the fmbox text field.
    local text = ''
    local text = ''
    if linkBox then
    if linkBox then
    خط ۷۳۲: خط ۷۲۳:
    -- Add sandbox and testcases links.
    -- Add sandbox and testcases links.
    -- "Editors can experiment in this template's sandbox and testcases pages."
    -- "Editors can experiment in this template's sandbox and testcases pages."
    text = text .. (p.makeExperimentBlurb(args, env) or '')
    text = text .. (p.makeExperimentBlurb(args, env) or '') .. '<br />'
    text = text .. '<br />'
    if not args.content and not args[1] then
    if not args.content and not args[1] then
    -- "Please add categories to the /doc subpage."
    -- "Please add categories to the /doc subpage."
    خط ۷۴۱: خط ۷۳۱:
    end
    end
    text = text .. ' ' .. (p.makeSubpagesBlurb(args, env) or '') --"Subpages of this template"
    text = text .. ' ' .. (p.makeSubpagesBlurb(args, env) or '') --"Subpages of this template"
    local printBlurb = p.makePrintBlurb(args, env) -- Two-line blurb about print versions of templates.
    if printBlurb then
    text = text .. '<br />' .. printBlurb
    end
    end
    end
    end
    end
    fmargs.text = text
    local box = mw.html.create('div')
    -- 'documentation-metadata'
    box:attr('role', 'note')
    :addClass(message('end-box-class'))
    -- 'plainlinks'
    :addClass(message('end-box-plainlinks'))
    :wikitext(text)
    :done()


    return messageBox.main('fmbox', fmargs)
    return '\n' .. tostring(box)
    end
    end


    خط ۷۶۳: خط ۷۵۷:
    -- 'transcluded-from-blurb' -->  
    -- 'transcluded-from-blurb' -->  
    -- 'The above [[Wikipedia:Template documentation|documentation]]  
    -- 'The above [[Wikipedia:Template documentation|documentation]]  
    -- is [[Wikipedia:Transclusion|transcluded]] from $1.'
    -- is [[Help:Transclusion|transcluded]] from $1.'
    -- 'module-preload' --> 'Template:Documentation/preload-module-doc'
    -- 'module-preload' --> 'Template:Documentation/preload-module-doc'
    -- 'create-link-display' --> 'create'
    -- 'create-link-display' --> 'create'
    خط ۸۱۳: خط ۸۰۷:
    -- 'mirror-edit-summary' --> 'Create sandbox version of $1'
    -- 'mirror-edit-summary' --> 'Create sandbox version of $1'
    -- 'mirror-link-display' --> 'mirror'
    -- 'mirror-link-display' --> 'mirror'
    -- 'mirror-link-preload' --> 'Template:Documentation/mirror'
    -- 'sandbox-link-display' --> 'sandbox'
    -- 'sandbox-link-display' --> 'sandbox'
    -- 'testcases-link-display' --> 'testcases'
    -- 'testcases-link-display' --> 'testcases'
    -- 'testcases-edit-link-display'--> 'edit'
    -- 'testcases-edit-link-display'--> 'edit'
    -- 'module-testcases-preload' --> 'Template:Documentation/preload-module-testcases'
    -- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox'
    -- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox'
    -- 'testcases-create-link-display' --> 'create'
    -- 'testcases-create-link-display' --> 'create'
    خط ۸۶۱: خط ۸۵۵:
    local sandboxCreateLink = makeUrlLink(sandboxCreateUrl, sandboxCreateDisplay)
    local sandboxCreateLink = makeUrlLink(sandboxCreateUrl, sandboxCreateDisplay)
    local mirrorSummary = message('mirror-edit-summary', {makeWikilink(templatePage)})
    local mirrorSummary = message('mirror-edit-summary', {makeWikilink(templatePage)})
    local mirrorUrl = sandboxTitle:fullUrl{action = 'edit', preload = templatePage, summary = mirrorSummary}
    local mirrorPreload = message('mirror-link-preload')
    local mirrorUrl = sandboxTitle:fullUrl{action = 'edit', preload = mirrorPreload, summary = mirrorSummary}
    if subjectSpace == 828 then
    mirrorUrl = sandboxTitle:fullUrl{action = 'edit', preload = templateTitle.prefixedText, summary = mirrorSummary}
    end
    local mirrorDisplay = message('mirror-link-display')
    local mirrorDisplay = message('mirror-link-display')
    local mirrorLink = makeUrlLink(mirrorUrl, mirrorDisplay)
    local mirrorLink = makeUrlLink(mirrorUrl, mirrorDisplay)
    خط ۸۷۳: خط ۸۷۱:
    local testcasesEditDisplay = message('testcases-edit-link-display')
    local testcasesEditDisplay = message('testcases-edit-link-display')
    local testcasesEditLink = makeUrlLink(testcasesEditUrl, testcasesEditDisplay)
    local testcasesEditLink = makeUrlLink(testcasesEditUrl, testcasesEditDisplay)
    testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink)
    -- for Modules, add testcases run link if exists
    if testcasesTitle.contentModel == "Scribunto"  and testcasesTitle.talkPageTitle and testcasesTitle.talkPageTitle.exists then
    local testcasesRunLinkDisplay = message('testcases-run-link-display')
    local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay)
    testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink, testcasesRunLink)
    else
    testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink)
    end
    else
    else
    local testcasesPreload
    local testcasesPreload
    خط ۹۳۸: خط ۹۴۳:
    end
    end
    local subpagesLink = makeWikilink(
    local subpagesLink = makeWikilink(
    'ویژه:نمایه پیشوندی/' .. templateTitle.prefixedText .. '/',
    'Special:PrefixIndex/' .. templateTitle.prefixedText .. '/',
    message('subpages-link-display', {pagetype})
    message('subpages-link-display', {pagetype})
    )
    )
    return message('subpages-blurb', {subpagesLink})
    return message('subpages-blurb', {subpagesLink})
    end
    function p.makePrintBlurb(args, env)
    --[=[
    -- Generates the blurb displayed when there is a print version of the template available.
    -- @args - a table of arguments passed by the user
    -- @env - environment table containing title objects, etc., generated with p.getEnvironment
    --
    -- Messages:
    -- 'print-link-display' --> '/Print'
    -- 'print-blurb' --> 'A [[Help:Books/for experts#Improving the book layout|print version]]'
    -- .. ' of this template exists at $1.'
    -- .. ' If you make a change to this template, please update the print version as well.'
    -- 'display-print-category' --> true
    -- 'print-category' --> 'Templates with print versions'
    --]=]
    local printTitle = env.printTitle
    if not printTitle then
    return nil
    end
    local ret
    if printTitle.exists then
    local printLink = makeWikilink(printTitle.prefixedText, message('print-link-display'))
    ret = message('print-blurb', {printLink})
    local displayPrintCategory = message('display-print-category', nil, 'boolean')
    if displayPrintCategory then
    ret = ret .. makeCategoryLink(message('print-category'))
    end
    end
    return ret
    end
    end