Questa configurazione permette la categorizzazione automatica per linguaggio di programmazione e per licenza delle voci che utilizzano il template {{Software}}.

Vale anche per le categorie che utilizzano il template {{Categoria software}}.

Linguaggi di programmazione

Ogni voce può avere linguaggi di programmazione espressi sia in Wikidata alla proprietà linguaggio di programmazione (P277), oppure può averlo espresso direttamente nel template {{Software}} tramite alcuni parametri.

Aggiunte

Per aggiungere un linguaggio, bisogna in primis aggiungere una nuova riga in config.language, variando alcuni parametri a seconda di quante categorie abilitare per tale linguaggio.

Linguaggio poco diffuso

In particolare, questa riga permette la categoria Categoria:Software in Action!:

Q343587 = langcat('Action!')

Notando che Q343587 è il codice dell'elemento Wikidata Action! (Q343587).

Linguaggio discretamente diffuso

Questa permette la categoria Categoria:Software in Delphi ed eventualmente Categoria:Software libero in Delphi:

Q487378 = langcat('Delphi', true)
Linguaggio diffuso

Questa permette la categoria Categoria:Software in C ed eventualmente Categoria:Software libero in C e Categoria:Software proprietario in C:

Q15777 = langcat('C', true, true)

Inoltre, è necessario aggiungere una nuova riga in config.languageSlugToWikidata inserendo:

['alias del linguaggio per il parametro del template'] = 'proprietà del linguaggio su Wikidata',

quindi, ad esempio:

['action'] = 'Q343587',

con la possibilità di includere anche le varianti:

['action!'] = 'Q343587',

Licenze

Le licenze sono lette dalla proprietà Wikidata licenza (P275).

La configurazione config.licenseCategory serve a creare una categoria associata ad una certa licenza. Alcune licenze minori possono convergere.

Esempio

Se la voce ha licenza (P275)=licenza MIT (Q334661) allora sarà categorizzata in Categoria:Software con licenza MIT grazie a questa riga:

config.licenseCategory = {Q334661 = 'MIT'}
Abbreviata

Se la categoria della licenza è in una forma abbreviata si deve aggiungere l'eccezione in config.licenseCategoryShorter. Ad esempio:

config.licenseCategoryShorter = { Q178285 = 1}

Se la voce ha la licenza freeware (Q178285) allora si avrà la Categoria:Software freeware invece che Categoria:Software con licenza freeware.

Librerie

Al momento le librerie sono recuperate dalla proprietà toolkit o framework dell'interfaccia grafica (P1414) e trattate in maniera riconducibile ai #Linguaggi di programmazione.

Pagine correlate


local config = {}

--[[
* Qualificatori Wikidata associati ai codici per il Template:Software/Linguaggio
]]
config.wikidataToLanguageSlug = {
	Q154755  = 'ada',
	Q343587  = 'action!',
	Q234657  = 'actionscript',
	Q165436  = 'assembly',
	Q189248  = 'bash',
	Q42979   = 'basic',
	Q15777   = 'c',
	Q2407    = 'c++',
	Q2370    = 'c#',
	Q487378  = 'delphi',
	Q334879  = 'erlang',
	Q83303   = 'fortran',
	Q37227   = 'go',
	Q504453  = 'groovy',
	Q34010   = 'haskell',
	Q8811    = 'html',
	Q2053    = 'html5',
	Q251     = 'java',
	Q2005    = 'javascript',
	Q132874  = 'lisp',
	Q207316  = 'lua',
	Q188531  = 'objective-c',
	Q633894  = 'object pascal',
	Q81571   = 'pascal',
	Q59      = 'php',
	Q28865   = 'python',
	Q42478   = 'perl',
	Q2044345 = 'pl',
	Q161053  = 'ruby',
	Q460584  = 'scala',
	Q187560  = 'scheme',
	Q5301    = 'tex',
	Q201904  = 'qt',
	Q5288    = 'tcl',
	Q1138939 = 'vala',
	Q726218  = 'xul'
}

--[[
* Alias da mantenere per ragioni storiche del Template:Software/Linguaggio
]]
config.languageSlugAlias = {
	['action']             = 'action!',
	['c ++']               = 'c++',
	['cpp']                = 'c++',
	['c sharp']            = 'c#',
	['c #']                = 'c#',
	['embarcadero delphi'] = 'delphi',
	['js']                 = 'javascript',
	['objective c']        = 'objective-c',
	['pl']                 = 'pl',
	['pgsql']              = 'pl',
	['pl-pgsql']           = 'pl',
	['pl/pgsql']           = 'pl'
}

--[[
* Categoria:Software in licenza $1
* Vediamo se proseguire con questa configurazione o se fruire della proprietà Wikidata short name P1813
]]
config.licenseCategory = {
	Q7603      = 'GNU GPL',
	Q27126812  = 'GNU GPL v1',
	Q27016750  = 'GNU GPL v1+',
	Q10513450  = 'GNU GPL v2',
	Q27016752  = 'GNU GPL v2+',
	Q10513445  = 'GNU GPL v3',
	Q27016754  = 'GNU GPL v3+',
	Q192897    = 'GNU LGPL',
	Q23035974  = 'GNU LGPL v2',
	Q27016756  = 'GNU LGPL v2',
	Q18534390  = 'GNU LGPL v2.1',
	Q27016757  = 'GNU LGPL v2.1+',
	Q18534393  = 'GNU LGPL v3',
	Q27016762  = 'GNU LGPL v3+',
	Q1131681   = 'GNU AGPL',
	Q27017230  = 'GNU AGPL v1',
	Q27017232  = 'GNU AGPL v3',
	Q27020062  = 'GNU AGPL v3+',
	Q616526    = 'Apache',
	Q13785927  = 'Apache 2.0',
	Q334661    = 'MIT',
	Q191307    = 'BSD',
	Q18517294  = 'BSD 2-clausole',
	Q18491847  = 'BSD 3-clausole',
	Q21503790  = 'BSD 4-clausole',

-- Override di categorie minori da far (temporaneamente?) convergere:

	Q27126812  = 'GNU GPL',  -- GNU GPL v1
	Q27016750  = 'GNU GPL',  -- GNU GPL v1+

	Q27017230  = 'GNU AGPL', -- GNU AGPL v1
	Q27017232  = 'GNU AGPL', -- GNU AGPL v3
	Q27020062  = 'GNU AGPL', -- GNU AGPL v3-

	Q23035974  = 'GNU LGPL', -- GNU LGPL v2
	Q27016756  = 'GNU LGPL', -- GNU LGPL v2+
	Q18534390  = 'GNU LGPL', -- GNU LGPL v2.1
	Q27016757  = 'GNU LGPL', -- GNU LGPL v2.1+
	Q18534393  = 'GNU LGPL', -- GNU LGPL v3
	Q27016762  = 'GNU LGPL', -- GNU LGPL v3+

	Q18517294  = 'BSD',      -- BSD 2-clausole
	Q18491847  = 'BSD',      -- BSD 3-clausole
	Q21503790  = 'BSD',      -- BSD 4-clausole

	Q13785927  = 'Apache'    -- Apache 2.0
}

return config