Modul:Documentation: Unterschied zwischen den Versionen
Aus DragonballWiki
Weitere Optionen
Inhalt gelöscht Inhalt hinzugefügt
| Zeile 3: | Zeile 3: | ||
local hatnote = require( 'Module:Hatnote' )._hatnote |
local hatnote = require( 'Module:Hatnote' )._hatnote |
||
local mbox = require( 'Module:Mbox' )._mbox |
local mbox = require( 'Module:Mbox' )._mbox |
||
local i18n = require( 'Module:i18n' ):new() |
|||
local TNT = require( 'Module:Translate' ):new() |
local TNT = require( 'Module:Translate' ):new() |
||
local lang = mw.getContentLanguage() |
local lang = mw.getContentLanguage() |
||
local p = {} |
local p = {} |
||
--- Wrapper function for Module:i18n.translate |
|||
--- |
|||
--- @param key string The translation key |
|||
--- @return string If the key was not found, the key is returned |
|||
local function t( key ) |
|||
return i18n:translate( key ) |
|||
end |
|||
| Zeile 27: | Zeile 37: | ||
local title = mw.title.getCurrentTitle() |
local title = mw.title.getCurrentTitle() |
||
local args = frame:getParent().args |
local args = frame:getParent().args |
||
local page = args[1] or |
local page = args[1] or string.gsub( title.fullText, '/[Dd]o[ck]u?$', '' ) |
||
local ret, cats, ret1, ret2, ret3 |
local ret, cats, ret1, ret2, ret3 |
||
local pageType = title.namespace == 828 and |
local pageType = title.namespace == 828 and 'module' or 'template' |
||
-- subpage header |
-- subpage header |
||
| Zeile 35: | Zeile 45: | ||
ret = mbox( |
ret = mbox( |
||
translate( 'message_subpage_title', page ), |
translate( 'message_subpage_title', page ), |
||
translate( 'message_subpage_desc', page, pageType ), |
translate( 'message_subpage_desc', page, translate( pageType ) ), |
||
{ icon = 'WikimediaUI-Notice.svg' } |
{ icon = 'WikimediaUI-Notice.svg' } |
||
) |
) |
||
if title.namespace == 10 then -- Template namespace |
if title.namespace == 10 then -- Template namespace |
||
cats = '[[Category:' .. |
cats = '[[Category:' .. string.format( t( 'category_documentation' ), t( 'category_' .. pageType ) ) .. '|' .. title.baseText .. ']]' |
||
ret2 = dependencyList._main() |
ret2 = dependencyList._main() |
||
elseif title.namespace == 828 then -- Module namespace |
elseif title.namespace == 828 then -- Module namespace |
||
cats = '[[Category:' .. |
cats = '[[Category:' .. string.format( t( 'category_documentation' ), t( 'category_' .. pageType ) ) .. '|' .. title.baseText .. ']]' |
||
ret2 = dependencyList._main() |
ret2 = dependencyList._main() |
||
ret2 = ret2 .. require('Module:Module toc').main() |
ret2 = ret2 .. require('Module:Module toc').main() |
||
| Zeile 93: | Zeile 103: | ||
'message_shared_across', |
'message_shared_across', |
||
title.fullText, |
title.fullText, |
||
title. |
mw.uri.encode( title.text, 'PATH' ) |
||
), |
), |
||
translate( |
translate( |
||
| Zeile 103: | Zeile 113: | ||
) |
) |
||
--- Set category |
--- Set category |
||
table.insert( ret3, '[[Category:' .. |
table.insert( ret3, '[[Category:' .. string.format( t( 'category_shared_by_the_star_citizen_wikis' ), lang:ucfirst( pageType ) ) .. ']]' ) |
||
--- Interlanguage link |
--- Interlanguage link |
||
--- TODO: Make this into a for loop when there are more wikis |
--- TODO: Make this into a for loop when there are more wikis |
||
| Zeile 130: | Zeile 140: | ||
) |
) |
||
--- Set category |
--- Set category |
||
table.insert( ret3, '[[Category:' .. |
table.insert( ret3, '[[Category:' .. string.format( t( 'category_imported_from_wikipedia' ), lang:ucfirst( pageType ) ) .. ']]' ) |
||
end |
end |
||
| Zeile 174: | Zeile 184: | ||
end |
end |
||
table.insert( ret3, string.format( '[[Category:%s]]', |
table.insert( ret3, string.format( '[[Category:%s]]', t( 'category_module' ) ) ) |
||
end |
end |
||
Aktuelle Version vom 12. Februar 2025, 23:36 Uhr
Diese Dokumentation wird von Modul:Documentation/doc aus übernommen. Änderungen können auf der Diskussionsseite vorgeschlagen werden.
Modul:Documentation wird von den Star Citizen Wikis verwendet.
Dieses module wird über die Star Citizen Wikis geteilt. Alle Änderungen sollten auch an das GitHub-Repository weitergeleitet werden.
Modul:Documentation lädt Sprachen von Modul:Documentation/i18n.json.
Dieses Modul ist sprachneutral konzipiert. Alle Meldungen werden auf der Unterseite i18n.json gespeichert.
Dieses Modul wird nicht verwendet.
Dieses Modul wird weder von einer Vorlage aufgerufen noch von einem anderen Modul benötigt/geladen. Wenn dies ein Fehler ist, stelle bitte sicher, dass
{{Dokumentation}}/{{Keine Dokumentation}} auf der Dokumentationsseite der Vorlage oder des Moduls eingebunden ist.Modul:Documentation benötigt 6 Module
Modul:Dokumentation implementiert Vorlage:Dokumentation für Vorlagen und Module.
-- <nowiki>
local dependencyList = require( 'Module:DependencyList' )
local hatnote = require( 'Module:Hatnote' )._hatnote
local mbox = require( 'Module:Mbox' )._mbox
local i18n = require( 'Module:i18n' ):new()
local TNT = require( 'Module:Translate' ):new()
local lang = mw.getContentLanguage()
local p = {}
--- Wrapper function for Module:i18n.translate
---
--- @param key string The translation key
--- @return string If the key was not found, the key is returned
local function t( key )
return i18n:translate( key )
end
--- FIXME: This should go to somewhere else, like Module:Common
--- Calls TNT with the given key
---
--- @param key string The translation key
--- @return string If the key was not found in the .tab page, the key is returned
local function translate( key, ... )
local success, translation = pcall( TNT.format, 'Module:Documentation/i18n.json', key or '', ... )
if not success or translation == nil then
return key
end
return translation
end
function p.doc( frame )
local title = mw.title.getCurrentTitle()
local args = frame:getParent().args
local page = args[1] or string.gsub( title.fullText, '/[Dd]o[ck]u?$', '' )
local ret, cats, ret1, ret2, ret3
local pageType = title.namespace == 828 and 'module' or 'template'
-- subpage header
if title.subpageText == 'doc' then
ret = mbox(
translate( 'message_subpage_title', page ),
translate( 'message_subpage_desc', page, translate( pageType ) ),
{ icon = 'WikimediaUI-Notice.svg' }
)
if title.namespace == 10 then -- Template namespace
cats = '[[Category:' .. string.format( t( 'category_documentation' ), t( 'category_' .. pageType ) ) .. '|' .. title.baseText .. ']]'
ret2 = dependencyList._main()
elseif title.namespace == 828 then -- Module namespace
cats = '[[Category:' .. string.format( t( 'category_documentation' ), t( 'category_' .. pageType ) ) .. '|' .. title.baseText .. ']]'
ret2 = dependencyList._main()
ret2 = ret2 .. require('Module:Module toc').main()
else
cats = ''
ret2 = ''
end
return tostring( ret ) .. ret2 .. cats
end
-- template header
-- don't use mw.html as we aren't closing the main div tag
ret1 = '<div class="documentation">'
ret2 = mw.html.create( nil )
:tag( 'div' )
:addClass( 'documentation-header' )
:tag( 'span' )
:addClass( 'documentation-title' )
:wikitext( lang:ucfirst( translate('message_documentation_title', pageType ) ) )
:done()
:tag( 'span' )
:addClass( 'documentation-links plainlinks' )
:wikitext(
'[[' .. tostring( mw.uri.fullUrl( page .. '/doc', {action='view'} ) ) .. ' view]]' ..
'[[' .. tostring( mw.uri.fullUrl( page .. '/doc', {action='edit'} ) ) .. ' edit]]' ..
'[[' .. tostring( mw.uri.fullUrl( page .. '/doc', {action='history'} ) ) .. ' history]]' ..
'[<span class="jsPurgeLink">[' .. tostring( mw.uri.fullUrl( title.fullText, { action = 'purge' } ) ) .. ' purge]</span>]'
)
:done()
:done()
:tag( 'div' )
:addClass( 'documentation-subheader' )
:tag( 'span' )
:addClass( 'documentation-documentation' )
:wikitext( translate( 'message_transclude_desc', page ) )
:done()
:wikitext( frame:extensionTag{ name = 'templatestyles', args = { src = 'Module:Documentation/styles.css'} } )
:done()
ret3 = {}
if args.scwShared then
--- Message box
table.insert( ret3,
mbox(
translate(
'message_shared_across',
title.fullText,
mw.uri.encode( title.text, 'PATH' )
),
translate(
'message_shared_across_subtext',
pageType
),
{ icon = 'WikimediaUI-ArticleDisambiguation-ltr.svg' }
)
)
--- Set category
table.insert( ret3, '[[Category:' .. string.format( t( 'category_shared_by_the_star_citizen_wikis' ), lang:ucfirst( pageType ) ) .. ']]' )
--- Interlanguage link
--- TODO: Make this into a for loop when there are more wikis
for _, code in pairs{ 'de', 'en' } do
if lang:getCode() ~= code then
table.insert( ret3, string.format( '[[%s:%s]]', code, title.fullText ) )
end
end
end
if args.fromWikipedia then
table.insert( ret3,
mbox(
translate(
'message_from_wikipedia',
title.fullText,
mw.uri.encode( page, 'WIKI' ),
page
),
translate(
'message_from_wikipedia_subtext',
pageType
),
{ icon = 'WikimediaUI-Logo-Wikipedia.svg' }
)
)
--- Set category
table.insert( ret3, '[[Category:' .. string.format( t( 'category_imported_from_wikipedia' ), lang:ucfirst( pageType ) ) .. ']]' )
end
if title.namespace == 828 then
-- Has config
if mw.title.new( title.fullText .. '/config.json', 'Module' ).exists then
table.insert( ret3,
mbox(
translate(
'message_module_configuration',
title.fullText,
title.fullText
),
translate( 'message_module_configuration_subtext' ),
{ icon = 'WikimediaUI-Settings.svg' }
)
)
end
-- Has localization
if mw.title.new( title.fullText .. '/i18n.json', 'Module' ).exists then
table.insert( ret3,
mbox(
translate(
'message_module_i18n',
title.fullText,
title.fullText
),
translate( 'message_module_i18n_subtext' ),
{ icon = 'WikimediaUI-Language.svg' }
)
)
end
-- Testcase page
if title.subpageText == 'testcases' then
table.insert( ret3,
hatnote(
translate( 'message_module_tests', title.baseText ),
{ icon = 'WikimediaUI-LabFlask.svg' }
)
)
end
table.insert( ret3, string.format( '[[Category:%s]]', t( 'category_module' ) ) )
end
--- Dependency list
table.insert( ret3, dependencyList._main( nil, args.category, args.isUsed ) )
-- Has templatestyles
if mw.title.new( title.fullText .. '/styles.css' ).exists then
table.insert( ret3,
hatnote(
translate( 'message_styles', title.fullText, title.fullText ),
{ icon = 'WikimediaUI-Palette.svg' }
)
)
end
--- Module stats bar
if title.namespace == 828 then
table.insert( ret3, '<div class="documentation-modulestats">' )
-- Function list
table.insert( ret3, require( 'Module:Module toc' ).main() )
-- Unit tests
local testcaseTitle = title.baseText .. '/testcases'
if mw.title.new( testcaseTitle, 'Module' ).exists then
-- There is probably a better way :P
table.insert( ret3, frame:preprocess( '{{#invoke:' .. testcaseTitle .. '|run}}' ) )
end
table.insert( ret3, '</div>' )
end
return ret1 .. tostring( ret2 ) .. '<div class="documentation-content">' .. table.concat( ret3 )
end
return p
-- </nowiki>