Module:PartOfSpeech
Μετάβαση
- Module:PartOfSpeech >> Module:PartOfSpeech/pos <<< Module:PartOfSpeech/τεκμηρίωση
- Ελέχουμε
τ η ν Κατηγορία:Σελίδεςμ ε σφάλμασ τ ο ν κωδικό γλώσσας
Κάθε μέρος
Αναλυτικά:
- pos['xxx']
τ ο xxx είναιτ ο όνομαπ ο υ περιέχεταισ τ ο πρότυπογ ι α τ ο {{άρθρο}}
είναιη λέξη άρθροπ ο υ υπάρχεισ τ ο ν κώδικατ ο υ προτύπου: {{#invoke:PartOfSpeech|partofspeech|άρθρο}}
- ['link'] = '[[
χ χ χ |Χ Χ Χ ]]':τ ι θ α εμφανίζεταισ τ ο λήμμα,σ τ ο ν τίτλο της ενότητας, ως κείμενο.- Παλαιότερα, υπήρχαν σύνδεσμοι
σ τ α Μέρη Λόγου:Τ ο χ χ χ ήτανο σύνδεσμοςκ α ι τ ο Υ Υ Υ η εμφάνισηπ ο υ επιθυμούμε. γ ι α τ ο {{γερουνδιακό}}
είχαμε ['link'] = '[[Παράρτημα:Γραμματική_Λατινικής_Γλώσσας#Γερουνδιακό|Γερουνδιακό]]'.
- Παλαιότερα, υπήρχαν σύνδεσμοι
- ['κατηγορία'] = 'χχχ':
Η ονομασία της κατηγορίαςσ τ η ν οποίαθ α εντάσσεταιτ ο λήμμα. - inlangu
- ['inlangu'] = true
η ενότηταπ ο υ θ α περιέχειτ ο πρότυποθ α εντάσσεταισ τ η ν κατηγορία της γλώσσας. - ['inlangu'] = false
η ενότηταΔ Ε Ν θ α εντάσσεταισ τ η ν κατηγορία της γλώσσας.Γ ι α παράδειγματ ο legendusδ ε ν έχει ενταχθείσ τ η ν κατηγορία: Λατινική γλώσσα αλλά μόνοσ τ η ν κατηγορία: Γερουνδιακά (λατινικά). (Η οποίαμ ε τ η σειρά της είναι ενταγμένησ τ η ν κατηγορία Λατινική γλώσσα). Φυσικάα ν υπάρχουνκ α ι άλλα μέρητ ο υ λόγουσ τ ο λήμμαγ ι α τ α οποίατ ο ['inlangu'] = true τότεθ α ενταχθεί (όπωςπ .χ .τ ο secundus)
- ['inlangu'] = true
Εάν χρειαστεί
-- 2013 authors: [[wikt:el:Xoristzatziki]] [[wikt:el:Flyax]]
-- 2020 split [[Module:PartOfSpeech/pos]] κ α ι νέα στοιχεία [[wikt:el:Sarri.greek]]
-- 2022 reverse indices
--- 2013 @params παράμετροι:
---- μέροςτουλόγου :τ ο μέρος τ ο υ λόγου π ο υ θ α εμφανιστεί π .χ . Ουσιαστικό
---- γλώσσα: iso της γλώσσας π .χ . fr γ ι α τ α γαλλικά
---- τύπος: τ ο μέρος τ ο υ λόγου γ ι α τ η ν κατηγορία π .χ . Ουσιαστικά
---- Δ Ε ΧΡΗΣΙΜΟΠΟΙΕΤΑΙ Π Λ Ε Ο Ν : αριθ: ο αριθμός, α ν έχουμε περισσότερα από 1 (εδώ υπάρχει διαφωνία αλλά υπάρχει γ ι α π α ν ενδεχόμενο)
-- @required: [[Module:Languages]], [[Module:KleidaAll]]
--- γ ι α τ α αντίστροφα λεξικά: [[Module:Kleida-el]] [[Module:Kleida-la]]
-- ειδικές περιπτώσεις: κατηγορία2, ειδική κατηγορία πρόσθετη γ ι α ορισμένες γλώσσες. 2021.11. β λ [[Module talk:PartOfSpeech/pos]]
--[=[ Δ Ο Μ Η STRUCTURE
* required
* preliminaries and functions
* categories
* reverse index
* help notes
]=]--
p = {}
-- --------------------REQUIRED
local languages = mw.loadData("Module:Languages")
-- Module π ο υ θ α επεκταθεί σιγά σιγά κ α ι θ α περιέχει συναρτήσεις γ ι α κάθε γλώσσα π ο υ έχουμε
local ascii = require "Module:KleidaAll"
-- Τώρα περιέχει συναρτήσεις γ ι α τις παρακάτω γλώσσες
-- 'fr', 'de', 'es', 'ro', 'pt', 'tr', 'eo', 'vi'
local pos = require("Module:PartOfSpeech/pos")
-- reverse γ ι α τ α αντίστροφα λεξικά: [[Module:Kleida-el]] [[Module:Kleida-la]]
-- --------------------
--λίγο εκνευριστικό αλλά...
function exeikati(onearg)
return not (onearg == nil or mw.ustring.len(onearg) < 1)
end
errorhere = function(errstring)
return '<div class="error">' .. errstring .. '</div>[[Κατηγορία:Σελίδες μ ε σφάλματα]]'
end
-- --------------------
-- η κύρια συνάρτηση π ο υ θ α χρησιμοποιηθεί σ τ ο Πρότυπο
function p.partofspeech(frame)
local args = frame.args
local lemmaargs = frame:getParent().args
local pagename = mw.title.getCurrentTitle().text
local meros = args[1] --μέρος τ ο υ λόγου από τ ο πρότυπο
local lang = lemmaargs[1] or '' --γλώσσα από τ ο λήμμα
local specialnumber = '' -- not used (problem at Modules: for Tables of Content)
--α ν δ ε ν υπάρχει κάτι καταχωρισμένο σ τ ο ν πίνακα εδώ
--γ ι α τ ο συγκεκριμένο μέρος τ ο υ λόγου
if not exeikati(pos[meros]['κατηγορία']) then
return errorhere('Τ ο μέρος τ ο υ λόγου δ ε ν υπάρχει σ τ ο ν πίνακα.')
end
--βάλε τ η ν εικόνα, τ η ν αρχή τ ο υ span κ α ι τ ο μέρος τ ο υ λόγου
local output = '<span style="white-space:nowrap" class="partofspeech">[[File:OOjs_UI-like_arrow_empty-ltr_progressive.svg|25px|alt=|link=]] ' .. pos[meros]['link']
-- Δ Ε ΧΡΗΣΙΜΟΠΟΙΟΥΜΕ Π Λ Ε Ο Ν εσωτερική αρίθμηση, αλλά ==={{ουσιασιστικό|χ χ }} 1===
--α ν έχει αρίθμηση βάλε κ α ι ένα κενό σ υ ν τ ο ν αριθμό
-- if exeikati(lemmaargs['αριθ']) then
-- output = output .. ' ' .. lemmaargs['αριθ']
-- specialnumber = lemmaargs['αριθ']
-- end
--κλείσε τ ο span
output = output .. '</span>'
--Συνέχισε μ ε τις κατηγορίες μόνο γ ι α τ ο κύριο namespace
if mw.title.getCurrentTitle().nsText ~= '' then return output end
--α ν δ ε ν έχει δοθεί γλώσσα ή δ ε ν υπάρχει σ τ ο ν πίνακα τ ω ν γλωσσών ο κωδικός ή/κ α ι τ ο name
-- sublang είναι ποικιλίες, χωρίς κατηγορίες Γραμματικών κατηγοριών. Δ ε ν είναι αυτόνομες γλώσσες
-- status = 'main' δηλαδή σ α ν κανονικές γλώσσες, μόνο (μετά από συζήτηση κ α ι απόφαση) έγιναν η ελληνιστική grc-koi, τ α νεολατινικά (la-new} κ α ι η καθαρεύουσα
-- [[Βικιλεξικό:Βικιδημία/2021#3_υπαγόμενες_γλώσσες_μ ε _ιδιαίτερο_ρόλο]]
if lang == '' or languages[lang] == nil or (languages[lang].sublang == true and languages[lang].status ~= 'main') then
return
pos[meros]['link']..'[[Κατηγορία:Σελίδες μ ε σφάλμα σ τ ο ν κωδικό γλώσσας]]'
.. ' <b><span style="color:#b22222; font-size:14px;">o κωδικός γλώσσας δ ε ν υπάρχει γ ι α τ α μέρη λόγου</span></b>'
--Δ ε ν δόθηκε κωδικός γλώσσας ή δ ε ν είναι καταχωρισμένος σ τ ο ν πίνακα.')
else
-- Preferably add anchors at various senses / per language
--δημιουργία κρυφού χαρακτηριστικού γλώσσας γ ι α παραπομπές
-- σημείωση 2022: υπάρχει αυτόματο anchor από τ ο ToC (table of contents)
-- π .χ . [[όνομαλήμματος#elουσιαστικό]]
-- ή [[όνομαλήμματος#elουσιαστικό1]]
--προϋποθέτει ότι η γλωσσική ενότητα υπάρχει μία μόνο φορά
-- κ α ι ο ι διάφορες υποενότητες είναι αριθμημένες
output = '<span id="' .. lang .. meros .. specialnumber.. '"></span>' .. output
end
local kleida = ''
--Α ν ο χρήστης μάς έχει δώσει κλείδα, σ α ν δεύτερη αριθμητική παράμετρο σ τ ο λήμμα, τ η ν χρησιμοποιούμε
if exeikati(lemmaargs[2]) then
kleida = '|' .. lemmaargs[2]
--διαφορετικά κοιτάμε α ν υπάρχει ε τ ο ι μ η συνάρτηση γ ι α τ η συγκεκριμένη γλώσσα
elseif ascii.kleida[lang] ~= nil then
kleida = '|' .. ascii.kleida[lang](pagename)
end
-- -------------------- ΚΑΤΗΓΟΡΙΕΣ
if not exeikati(pos[meros]['κατηγορία']) then
return errorhere('Δ ε ν έχει καταχωρισθεί η κατηγορία σ τ ο ν πίνακα.')
else
if pos[meros]['inlangu'] then
output = output .. '[[Κατηγορία:' .. languages[lang].cat .. kleida .. ']]'
end
output = output .. '[[Κατηγορία:' .. pos[meros]['κατηγορία'] .. ' (' .. languages[lang].name .. ')' .. kleida .. ']]'
-- ειδικά γ ι α τις πολλές 'εκφράσεις'
if pos[meros]['κατηγορία2'] ~= '' and pos[meros]['κατηγορία2'] ~= nil then
output = output .. '[[Κατηγορία:' .. pos[meros]['κατηγορία2'] .. ' (' .. languages[lang].name .. ')' .. kleida .. ']]'
end
-- ειδικά γ ι α τ ο 'ρηματική φωνή' θέλουμε Κ Α Ι ρήματα (2021)
if pos[meros]['κατηγορία3'] ~= '' and pos[meros]['κατηγορία3'] ~= nil then
output = output .. '[[Κατηγορία:' .. pos[meros]['κατηγορία3'] .. ' (' .. languages[lang].name .. ')' .. kleida .. ']]'
end
-- ειδικά γ ι α καταλόγους ρημάτων ορισμένων γλωσσών π ο υ Ε Χ Ο Υ Ν μονολεκτική παθητική φωνή:
-- plus ειδική κατηγορία: Ρηματικές φωνές μ ε κατάλογο ενεργητικής+παθητικής
-- β λ [[Module talk:PartOfSpeech/pos]]
if pos[meros]['link'] == 'Ρήμα' then
if languages[lang]['iso'] == 'el' -- [[λύνω]] [[λύνομαι]] [[ψεύδομαι]]
or languages[lang]['iso'] == 'grc' -- [[λύω]] [[λύομαι]] [[ἡγέομαι]]
or languages[lang]['iso'] == 'grc-koi' or languages[lang]['iso'] == 'kath' or languages[lang]['iso'] == 'gkm'
-- probably add here other hellenic languages: tsd (τσακωνικά), pnt (ποντικά), ...
or languages[lang]['iso'] == 'la' -- [[amo]], [[amor]]
then
output = output .. '[[Κατηγορία:Ρηματικές φωνές' .. ' (' .. languages[lang].name .. ')' .. kleida .. ']]'
end
end -- close Ρήμα
-- control Surname categories
--[=[
if pos[meros]['link'] == 'Κύριο όνομα' and pos[meros]['inlangu'] == true then
if mw.ustring.find(page, "{{επώνυμο") -- and not mw.ustring.find(bodytext, "{{όνομα") and not mw.ustring.find(bodytext, "{{τόπος")
then pos[meros]['inlangu'] = false
else pos[meros]['inlangu'] = true
end
end
]=]--
-- control παθητική - μεσοπαθητική φωνή -- test [[λύομαι]] [[λύνομαι]]
-- DO NOT USE THIS: if pos[meros] == 'ρηματική φωνή' then
if args[1] == 'ρηματική φωνή' then
if (languages[lang]['iso'] == 'grc' or languages[lang]['iso'] == 'grc-koi')
then
--pos[meros]['κατηγορία3'] = "Ρήματα σ τ η μεσοπαθητική φωνή"
output = output .. '[[Κατηγορία:Ρήματα σ τ η μεσοπαθητική φωνή' .. ' (' .. languages[lang].name .. ')' .. kleida .. ']]'
else
--pos[meros]['κατηγορία3'] = "Ρήματα σ τ η ν παθητική φωνή"
output = output .. '[[Κατηγορία:Ρήματα σ τ η ν παθητική φωνή' .. ' (' .. languages[lang].name .. ')' .. kleida .. ']]'
end
end -- close ρηματική φωνή
-- -------------------- REVERSE INDEX (for inlangu=true) by language (a selection)
-- NOTE: [[Πρότυπο:κλείδα-ε λ λ ]] for [[Module:Kleida-el]], manually at all grk pages (ελληνικά όλων τ ω ν ειδών)
-- also see application at [[Template:list2]]
-- grk Hellenic languages
-- el [[:Κατηγορία:Αντίστροφο λεξικό (νέα ελληνικά)]] + καππαδοκικά, κατωιταλικά, ποντιακά, τσακωνικά
if (lang == 'el' or languages[iso] == 'el'
or lang == 'cpg' or languages[iso] == 'cpg'
or lang == 'grk-ita' or languages[iso] == 'grk-ita' or lang == 'pnt' or languages[iso] == 'pnt'
or lang == 'tsd' or languages[iso] == 'tsd')
and pos[meros]['inlangu'] == true then
output = output .. '{{DEFAULTSORT:{{#invoke:Kleida-el|kleida}}}}[[Κατηγορία:Αντίστροφο λεξικό (νέα ελληνικά)|{{#invoke:Kleida-el|reverseit}}]]'
end
-- gkm [[:Κατηγορία:Αντίστροφο λεξικό (μεσαιωνικά ελληνικά)]] check [[ξενοδόχος]] [[ξενοδόχον]]
if (lang == 'gkm' or languages[iso] == 'gkm') and pos[meros]['inlangu'] == true then
output = output .. '{{DEFAULTSORT:{{#invoke:Kleida-el|kleida}}}}[[Κατηγορία:Αντίστροφο λεξικό (μεσαιωνικά ελληνικά)|{{#invoke:Kleida-el|reverseit}}]]'
end
-- grc [[:Κατηγορία:Αντίστροφο λεξικό (αρχαία ελληνικά)]] + ελληνιστική κοινή
if (lang == 'grc' or languages[iso] == 'grc' or lang == 'grc-koi' or languages[iso] == 'grc-koi') and pos[meros]['inlangu'] == true then
output = output .. '{{DEFAULTSORT:{{#invoke:Kleida-el|kleida}}}}[[Κατηγορία:Αντίστροφο λεξικό (αρχαία ελληνικά)|{{#invoke:Kleida-el|reverseit}}]]'
end
-- other, by ISO a...z
-- de [[:Κατηγορία:Αντίστροφο λεξικό (γερμανικά)]]
if (lang == 'de' or languages[iso] == 'de') and pos[meros]['inlangu'] == true then
output = output .. '{{DEFAULTSORT:{{#invoke:Kleida-la|kleida}}}}[[Κατηγορία:Αντίστροφο λεξικό (γερμανικά)|{{#invoke:Kleida-la|reverseit}}]]'
end
-- en [[:Κατηγορία:Αντίστροφο λεξικό (αγγλικά)]] check [[work]] [[works]] [[put up]]
if (lang == 'en' or languages[iso] == 'en') and pos[meros]['inlangu'] == true then
output = output .. '{{DEFAULTSORT:{{#invoke:Kleida-la|kleida}}}}[[Κατηγορία:Αντίστροφο λεξικό (αγγλικά)|{{#invoke:Kleida-la|reverseit}}]]'
end
-- eo [[:Κατηγορία:Αντίστροφο λεξικό (εσπεράντο)]]
if (lang == 'eo' or languages[iso] == 'eo') and pos[meros]['inlangu'] == true then
output = output .. '{{DEFAULTSORT:{{#invoke:Kleida-la|kleida}}}}[[Κατηγορία:Αντίστροφο λεξικό (εσπεράντο)|{{#invoke:Kleida-la|reverseit}}]]'
end
-- es [[:Κατηγορία:Αντίστροφο λεξικό (ισπανικά)]]
if (lang == 'es' or languages[iso] == 'es') and pos[meros]['inlangu'] == true then
output = output .. '{{DEFAULTSORT:{{#invoke:Kleida-la|kleida}}}}[[Κατηγορία:Αντίστροφο λεξικό (ισπανικά)|{{#invoke:Kleida-la|reverseit}}]]'
end
-- fr [[:Κατηγορία:Αντίστροφο λεξικό (γαλλικά)]] check [[abbé]] [[thermomètre]] [[thermomètres]]
if (lang == 'fr' or languages[iso] == 'fr') and pos[meros]['inlangu'] == true then
output = output .. '{{DEFAULTSORT:{{#invoke:Kleida-la|kleida}}}}[[Κατηγορία:Αντίστροφο λεξικό (γαλλικά)|{{#invoke:Kleida-la|reverseit}}]]'
end
-- it [[:Κατηγορία:Αντίστροφο λεξικό (ιταλικά)]]
if (lang == 'it' or languages[iso] == 'it') and pos[meros]['inlangu'] == true then
output = output .. '{{DEFAULTSORT:{{#invoke:Kleida-la|kleida}}}}[[Κατηγορία:Αντίστροφο λεξικό (ιταλικά)|{{#invoke:Kleida-la|reverseit}}]]'
end
-- la [[:Κατηγορία:Αντίστροφο λεξικό (λατινικά)]] except for la-new (Χωρίς τ α νεολατινικά)
if (lang == 'la' or languages[iso] == 'la') and pos[meros]['inlangu'] == true then
output = output .. '{{DEFAULTSORT:{{#invoke:Kleida-la|kleida}}}}[[Κατηγορία:Αντίστροφο λεξικό (λατινικά)|{{#invoke:Kleida-la|reverseit}}]]'
end
-- pl [[:Κατηγορία:Αντίστροφο λεξικό (πολωνικά)]]
if (lang == 'pl' or languages[iso] == 'pl') and pos[meros]['inlangu'] == true then
output = output .. '{{DEFAULTSORT:{{#invoke:Kleida-la|kleida}}}}[[Κατηγορία:Αντίστροφο λεξικό (πολωνικά)|{{#invoke:Kleida-la|reverseit}}]]'
end
-- sh [[:Κατηγορία:Αντίστροφο λεξικό (σερβοκροατικά)]]
if (lang == 'sh' or languages[iso] == 'sh') and pos[meros]['inlangu'] == true then
output = output .. '{{DEFAULTSORT:{{#invoke:Kleida-la|kleida}}}}[[Κατηγορία:Αντίστροφο λεξικό (σερβοκροατικά)|{{#invoke:Kleida-la|reverseit}}]]'
end
-- tr [[:Κατηγορία:Αντίστροφο λεξικό (τουρκικά)]]
if (lang == 'tr' or languages[iso] == 'tr') and pos[meros]['inlangu'] == true then
output = output .. '{{DEFAULTSORT:{{#invoke:Kleida-la|kleida}}}}[[Κατηγορία:Αντίστροφο λεξικό (τουρκικά)|{{#invoke:Kleida-la|reverseit}}]]'
end
end -- close function
return frame:preprocess(output)
end
-- -------------------- η συνάρτηση γ ι α τις «Οδηγίες»
function p.help(frame)
local protpage = mw.title.getCurrentTitle()
local prot = protpage.text
local protns = protpage.namespace
if protns ~= 10 then
return [=[Η συνάρτηση πρέπει ν α κληθεί από πρότυπο. [[Κατηγορία:Σελίδες μ ε σφάλματα]] ]=]
end
local output = [=['''Οδηγίες χρήσης'''
Τ ο πρότυπο '''<nowiki>{{]=] .. prot .. [=[}}</nowiki>''' είναι ένας τίτλος τρίτου επιπέδου (κάτω από τ ο ν τίτλο της γλώσσας) κ α ι εισάγει μ ι α λέξη τύπου « ]=] .. pos[prot]['link'] .. [=[ ».
{| align=left style="border:1px" cellpadding=5
!colspan="2"| Παράμετροι
|-
| <tt>1</tt> || ''Υποχρεωτική.'' Κωδικός της γλώσσας (π χ el, en, fr κ λ π ). Όταν υπάρχει, κατηγοριοποιεί αυτόματα τ η σελίδα σ τ ο "]=] .. pos[prot]['κατηγορία'] .. [=[ (<γλώσσα>). Α ν λείπει ή α ν είναι λανθασμένος, η σελίδα εντάσσεται σ τ η ν [[:Κατηγορία:Σελίδες μ ε σφάλμα σ τ ο ν κωδικό γλώσσας]].
|-
| <tt>2</tt> || ''Προαιρετική.'' Κλείδα διαλογής ASCII γ ι α τ η ν αυτόματη κατηγοριοποίηση. Γ ι α τ α ελληνικά, γαλλικά, γερμανικά, ισπανικά, πολωνικά, πορτογαλικά, ρουμανικά, τουρκικά, εσπεράντο η κλείδα υπολογίζεται αυτόματα κ α ι δ ε ν χρειάζεται ν α γραφεί ως παράμετρος εδώ.
|}]=]
return frame:preprocess(output)
end
return p