Βικιλεξικό:Lua/2013

Από Βικιλεξικό
Μετάβαση στην πλοήγηση Πήδηση στην αναζήτηση
Βικιλεξικό:Lua
Αρχείο συζητήσεων

201320142019
202020212022 • 2023 • 2024

Πρότυπο τ

Έκανα μια απόπειρα να μετατρέψω το {{τ}} σε Lua. Ο κώδικας είναι στο Module:protypo:t και μερικές δοκιμές στο Χρήστης:Flyax/Αμμοδοχείο. Προς το παρόν φαίνεται να δουλεύει. --Flyax (συζήτηση) 17:20, 24 Μαΐου 2013 (UTC)[απάντηση]

Είναι εύκολα αναγνώσιμος και δεν βρήκα κάπου που θα μπορούσε να προκαλέσει πρόβλημα. Δύο προτάσεις-παρατηρήσεις.

  • Να προσθέσουμε στο Module:Languages την παράμετρο nowiki (σαν True-False) (οπότε δε θα χρειάζεται η παράμετρος nowiki στο "τ") και
  • Να χρησιμοποιηθεί (το ίδιο Module) ώστε η παραπομπή (στο εδώ Βικιλεξικό) να γίνεται και στην αντίστοιχη ενότητα γλώσσας (παράμετρος link στο Languages).
  • Να μπαίνει σε κρυφή κατηγορία σελίδων με προβλήματα όταν λείπει ο κωδικός γλώσσας (γιατί σκέτο το "κοκκίνισμα" εμφανίζεται μόνο σε όποιον δει τη σελίδα) π.χ.
 output="<span style='color:red'>Λείπει ο κωδικός γλώσσας</span>[[Κατηγορία:Σελίδες με σφάλματα στο πρότυπο]]"

(Προβληματισμοί σχετικοί με τις προτάσεις; Αν δεν υπάρχει ακόμα εκεί η γλώσσα, το εσωτερικό link ή ενημερωμένο "nowiki", επειδή αφορά μια γλώσσα που δεν έχουμε ακόμα αλλά μόλις προστέθηκε; Μήπως η ενσωμάτωση του καταλόγου των γλωσσών αυξάνει τόσο την επεξεργασία ώστε να δημιουργεί πρόβλημα; Τότε μήπως είναι καλύτερα να έχουμε 2-3 χωριστούς πίνακες π.χ. έναν μόνο με τις παραμέτρους link και nowiki και άλλον με τις υπόλοιπες παραμέτρους;) --Xoristzatziki (συζήτηση) 06:39, 27 Μαΐου 2013 (UTC)[απάντηση]

Σωστές οι προτάσεις σου. Αν κάνουμε την αλλαγή, ας προσθέσουμε μεγαλύτερη λειτουργικότητα. Το να πηγαίνει ο χρήστης στη σωστή γλώσσα κάνοντας κλικ στη μετάφραση είναι κάτι που το ήθελα από χρόνια.
Δεν νομίζω ότι είναι σωστό να έχουμε 2-3 καταλόγους γλωσσών. Ο συγχρονισμός μεταξύ τους θα είναι προβληματικός. Καλύτερα όλα μαζί σε ένα. Σχετικά με τον χρόνο επεξεργασίας, θα υπάρχει τρόπος να μετρηθεί. Θα ξεκινήσω να αλλάζω το module και βλέπουμε. --Flyax (συζήτηση) 10:30, 28 Μαΐου 2013 (UTC)[απάντηση]

Αντέγραψα ένα σύνολο μεταφράσεων στο Χρήστης:Flyax/Αμμοδοχείο/γη (παλιό πρότυπο τ) και στο Χρήστης:Flyax/Αμμοδοχείο/γη1 (νέο πρότυπο με lua. Οι διαφορές στο χρόνο του html rendering είναι αμελητέες (γύρω στα 2 δευτερόλεπτα για αποθήκευση με 110 κλήσεις του προτύπου). --Flyax (συζήτηση) 16:11, 28 Μαΐου 2013 (UTC)[απάντηση]

Φόρτωσα στις δύο σελίδες 3080 μεταφράσεις και βέβαια οι χρόνοι εκτοξεύτηκαν προς τα πάνω: 28 δεύτερα περίπου με τη Lua και λίγο παραπάνω με το παλιό πρότυπο. Επίσης: στατιστικά από το page source. Σχόλια; --Flyax (συζήτηση) 08:41, 29 Μαΐου 2013 (UTC)[απάντηση]

Τελευταία δοκιμή: άλλαξα προσωρινά το module και άφησα μόμο μία γραμμή (return "0"). Κοίταξα τον χρόνο αποθήκευσης της σελίδας Χρήστης:Flyax/Αμμοδοχείο/γη1 και είχε πέσει μόλις στα 22,511 δεύτερα. Το συμπέρασμά μου είναι πως ό,τι και να κάνουμε με το τ ή οποιοδήποτε άλλο πρότυπο, με Lua και χωρίς Lua, με κλήση εξωτερικών δεδομένων ή χωρίς κλήση, εφόσον το καλούμε τόσες πολλές φορές, οι χρόνοι αποθήκευσης θα είναι μεγάλοι. --Flyax (συζήτηση) 16:24, 31 Μαΐου 2013 (UTC)[απάντηση]

Έγινε η αλλαγή του προτύπου. Θα διαγράψω τις προσωρινές σελίδες αμμοδοχείου και το προσωρινό πρότυπο τ1. Προσοχή στην Κατηγορία:Σελίδες με προβλήματα στο πρότυπο τ. --Flyax (συζήτηση) 19:02, 2 Ιουλίου 2013 (UTC)[απάντηση]

Για τα Πρότυπα κλίσης

Η ιδέα είναι η εξής: έχουμε ένα κύριο module (π.χ. Module:Klisi-el-oys) που έχει τις γενικές συναρτήσεις:

  1. δημιουργίας του τελικού πίνακα από απλές μεταβλητές (δηλαδή το fulltable2 στο Module:Table-el-1)
  2. χκ (εμφάνιση κατάληξης με άλλο χρώμα)
  3. αφαίρεση τονισμού από το θέμα
  4. (άλλες που μπορεί να προκύψουν)

Σε άλλα (ή άλλο module π.χ. Module:Klisi-el-oys-1) δημιουργούμε τις παραμέτρους και τις περνάμε στον τελικό πίνακα. Αυτά μπορούν να χρησιμοποιούν τις όποιες γενικές συναρτήσεις περιέχει το "καταληκτικό" module. Θα μπορούσε εκεί να χρησιμοποιηθεί κάτι σαν:

local genika = require "Module:XXXXX" --π.χ. Module:Klisi-el-oys

function _p.klisi(frame)
    local args = frame.args
    PAGENAME = mw.title.getCurrentTitle().text
    local lemma = PAGENAME:match( "^%s*(.-)%s*$" )
    args['λήμμα'] = lemma
    if args['είδος'] == "τσάι" then
        tableready = _p.klisi1(args) 
    end
    if args['είδος'] == "οδός" then
        tableready = _p.klisi2(args) 
    end
    ...
    ...
    return frame:preprocess(tableready)    
end

function  _p.klisi1(args)
--για το τσάι
... (δημιουργία των παραμέτρων που χρειάζονται)
... 
    return (genika.fulltable2(args))
end

ή να μπουν σε μια λίστα-πίνακα:

eidos = {"οδός" = _p.klisi1,"τσάι" = _p.klisi2, ...}

και να χρησιμοποιηθεί κάτι σαν:

function _p.klisi(frame)
    local args = frame.args
    PAGENAME = mw.title.getCurrentTitle().text
    local lemma = PAGENAME:match( "^%s*(.-)%s*$" )
    args['λήμμα'] = lemma
    tableready = eidos[args['είδος']](args) 
    return frame:preprocess(tableready)    
end

Με αυτόν το τρόπο:

  • νέα ή παλιά πρότυπα μπορούν να περνούν κατευθείαν τις παραμέτρους για όλες τις πτώσεις και αριθμούς (για χρήστες που δεν μπορούν να μπερδευτούν με τη Lua)
  • Μπορούν να δημιουργούνται συναρτήσεις για κάθε υπάρχον ή νέο πρότυπο που θα περιέχουν μόνο το "είδος" και τις γενικές παραμέτρους{{#invoke:Klisi-el-oys-1|είδος=τσάι|α={{{α|}}}|παρατήρηση = {{{παρατήρηση|}}}}} (το local pargs = frame:getParent().args φέρνει τις παραμέτρους -π.χ. α=εν κλπ.- από το λήμμα οπότε μάλλον δεν χρειάζεται να τις περνάει το Πρότυπο)

--Xoristzatziki (συζήτηση) 2 Ιουλίου 2013 (UTC)

Έχω έναν ενδοιασμό ως προς την ύπαρξη περισσότερων του ενός modules (αλήθεια, πότε θα βρούμε μετάφραση γι' αυτόν τον όρο;). Εσύ όμως έχει ασχοληθεί σε βάθος με το θέμα, άρα προχώρα όπως νομίζεις. Εντωμεταξύ δεν ξέρω τι να κάνω με τα πρότυπα τύπου ώρα, νίκη κλπ Ο κώδικας που έχεις στο αμμοδοχείο σου δουλεύει μια χαρά (και για τη γκέισα). Να τον βάλω σε εφαρμογή ή να περιμένω να ολοκληρώσεις αυτό που έχεις στο μυαλό σου; --Flyax (συζήτηση) 12:41, 10 Ιουλίου 2013 (UTC)[απάντηση]
Λίγη "υπομονή" ακόμα επειδή κοιτάζω και κάποιες ιδέες που βρίσκω σε άλλα βικιεγχειρήματα. Η μετάφραση δεν αφορά μόνο εμάς. Ρώτησα και στη Βικιπαίδεια w:Βικιπαίδεια:Αγορά/Αρχείο 2013/Μάρτιος 21-31 αλλά εκτός από το γλαύκο (που μου υπέδειξε και μια παλιότερη συζήτηση) δεν δόθηκε άλλη επέκταση. Πάντως μερικοί έχουν αρχίσει και τα μεταφράζουν (cs Modul, pl Moduł). Προσωπικά βρίσκω τα Μονάδα και Άρθρωμα πιο κοντά.--Xoristzatziki (συζήτηση) 13:26, 10 Ιουλίου 2013 (UTC)[απάντηση]

Πώς κατεβάζουμε τον τόνο

Ήδη υπάρχει τρόπος να αφαιρεθεί ο τόνος από το θέμα σε πρότυπα κλίσης όπως 'ώρα', 'νίκη' κλπ. Απομένει να βρούμε πώς θα κατεβάσουμε τον τόνο μέσα στο θέμα σε πρότυπα κλίσης όπως 'άνθρωπος', 'δύναμη' κλπ. Νομίζω ότι σε όλες αυτές τις περιπτώσεις ο τόνος κατεβαίνει στο τελευταίο φωνήεν του θέματος. Επομένως μια συνάρτηση σαν κι αυτή, θα κάνει τη δουλειά που θέλουμε, εφόσον την τροφοδοτήσουμε με το άτονο θέμα.

atona = { ['Α'] = 'Ά', ['α'] = 'ά', ['ε'] = 'έ', ['Ε'] = 'Έ', 
        ['Η'] = 'Ή', ['η'] = 'ή', ['ι'] = 'Ί', ['ι'] = 'ί', ['ϊ'] = 'ΐ', 
        ['Ο'] = 'Ό', ['ο'] = 'ό', ['Υ'] = 'Ύ', ['υ'] = 'ύ', ['ϋ'] = 'ΰ', 
        ['Ω'] = 'Ώ', ['ω'] = 'ώ' }
-- Η συνάρτηση αρχίζει από το τελευταίο γράμμα του θέματος και πηγαίνει προς το πρώτο. 
-- Όταν συναντήσει το πρώτο (άτονο) φωνήεν, το τονίζει και τέλος
-- Εννοείται ότι η μεταβλητή stem δεν πρέπει να περιέχει τονισμένα φωνήεντα.

function _module.neostonos(stem)
    stempoint = mw.ustring.len(stem)
    wordproduced = ""
    while stempoint > 0 do
       mychar = mw.ustring.sub(stem, stempoint, stempoint)
       newchar = atona[mychar]
       if newchar ~= nil then
           return mw.ustring.sub(stem, 1, stempoint-1 ) .. newchar .. wordproduced
       else
           wordproduced = mychar .. wordproduced
           stempoint = stempoint -1
       end
    end
    return wordproduced
end

--Flyax (συζήτηση) 14:15, 11 Ιουλίου 2013 (UTC)[απάντηση]

Η συνάρτηση φαίνεται εντάξει (πάντα με το σκεπτικό ότι ο τόνος κατεβαίνει στο τελευταίο φωνήεν του θέματος). Απομένει ο τρόπος ενσωμάτωσής της στο module ώστε να είναι απλή για το πρότυπο.

Μένει επίσης η ονοματοδοσία των συναρτήσεων που θα καλούνται από το πρότυπο. Έχουμε μέχρι στιγμής (εκτός από την παράμετρο που χρησιμεύει για τη δημιουργία του θέματος):

  1. χωρίς άλλη παράμετρο (πρόταση klisi1)
  2. με δεύτερη παράμετρο το θέμα άτονο (πρόταση klisi2a)
  3. με δεύτερη παράμετρο το θέμα με τόνο στο τέλος (πρόταση klisi2b) (προφανώς θα δημιουργεί πρώτα το άτονο θέμα και μετά θα το τονίζει)
  4. με δεύτερη και τρίτη παράμετρο (το θέμα με τόνο στο τέλος και το θέμα άτονο) (πρόταση klisi3)

ή να δημιουργήσουμε μία παράμετρο που θα ελέγχεται (από το module) και θα "στέλνει" στις αντίστοιχες συναρτήσεις (που και πάλι θέλουν όνομα...) π.χ. παράμετρος "είδος" ή παράμετρος "τονισμοί" ή κάτι άλλο. --Xoristzatziki (συζήτηση) 09:12, 13 Ιουλίου 2013 (UTC)[απάντηση]

(α) Σχετικά με τη συνάρτηση. Αν υπήρχε η (μη) λέξη νέραϊδα που θα είχε γενική νεράιδων, τότε θα είχαμε πρόβλημα. Πιστεύω ότι δεν υπάρχουν τέτοιες λέξεις αλλά και πάλι χρειάζεται ένας έλεγχος.
(β) Το ζήτημα πώς θα καλείται η κατάλληλη συνάρτηση κλίσης είναι καθαρά τεχνικό και έχει πολλές λύσεις. Εμένα με απασχολεί άλλο. Πώς θα ξέρει ο κώδικας σε ποιες πτώσεις να αποδώσει το σωστό θέμα (άτονο, παροξύτονο κλπ); Πχ στο άνθρωπος έχουμε παροξύτονο θέμα και στην αιτ. πληθ. ενώ στο όνομα χρειαζόμαστε το ονόμ σε τρεις πτώσεις του πληθ κλπ κλπ
--Flyax (συζήτηση) 12:24, 13 Ιουλίου 2013 (UTC)[απάντηση]

Η μία λύση είναι να αριθμήσουμε τα "θέματα":

  1. κύριο θέμα
  2. άτονο θέμα
  3. θέμα με κατεβασμένο τόνο

Και χρησιμοποιώντας αυτήν την αρίθμηση είτε από το πρότυπο να στέλνεται ένα αλφαριθμητικό που θα προσδιορίζει ποια πτώση παίρνει τι π.χ. για το el-κλίσ-'άγγελος' θα είναι 13111311.για το el-κλίσ-'όνομα' θα είναι 13113233 (Με αυτόν τον τρόπο δε θα χρειάζεται επέμβαση στο module αν χρειαστούμε και άλλο πρότυπο).
Είτε θα στέλνουμε το όνομα του πρότυπου και θα υπάρχει λίστα για το κάθε "πρότυπο" (με το παραπάνω αλφαριθμητικό). Τότε θα πρέπει να προσθέτουμε και στη λίστα κάθε νέο πρότυπο.

Δεν έχω βρει ακόμα αν είναι εφικτό το να βρίσκουμε το όνομα του Προτύπου που κάλεσε τη συνάρτηση. (ίσως είναι κάποια μεταβλητή του frame:getParent();). Αν όμως το "διαβάζουμε" με κώδικα θα πρέπει να είμαστε προσεκτικοί για την περίπτωση που το πρότυπο έχει κληθεί από άλλο, τρίτο πρότυπο (αν και κανονικά δεν θα πρέπει να κάνουμε τέτοιου είδους χρήση). --Xoristzatziki (συζήτηση) 18:30, 13 Ιουλίου 2013 (UTC)[απάντηση]

Μια άλλη προσέγγιση για τα απλά πρότυπα:

  • Για όλα τα απλά οξύτονα θα καλείται από το πρότυπο μία συνάρτηση μόνο με τις παραμέτρους για τις καταλήξεις οε,γε,αε κλπ

Το θέμα θα βρίσκεται από το μήκος του οε (ή του οπ αν στο λήμμα έχει δοθεί α=πλ) Και είναι το μοναδικό που θα χρησιμοποιηθεί, σε συνεργασία με τις παραμέτρους "α=" και "παρατήρηση" από το λήμμα. Επίσης μπορούμε από το λήμμα να στέλνουμε αν θα έχει ή όχι γενική πληθυντικού.

  • Για τα απλά παροξύτονα, προπαροξύτονα που χρησιμοποιούν μόνο μία επιπλέον παράμετρο με άτονο θέμα μπορούμε να βρίσκουμε που θα χρησιμοποιηθεί το άτονο ελέγχοντας σε ποιες καταλήξεις έχει τόνο.

--Xoristzatziki (συζήτηση) 07:36, 14 Ιουλίου 2013 (UTC)[απάντηση]

Προς τη λύση

Έφτιαξα το Module:el-nouns-decl και το χρησιμοποίησα σε πρότυπα με κατεβασμένο τόνο καθώς και σε πρότυπα με ένα μόνο θέμα. Κανένα σχόλιο, υπόδειξη, αντίρρηση; --Flyax (συζήτηση) 06:11, 29 Ιουλίου 2013 (UTC)[απάντηση]

Πρότυπα ετυμολογίας

Δημιούργησα ένα προσωρινό πρότυπο (το έβαλα όπως στο Αγγλικό λεξικό, με βάση το όνομα χρήστη) για την ετυμολογία. Μπορεί να απλοποιήσει τα περισσότερα πρότυπα. Χρειάζεται λίγη δουλειά ακόμα. --Xoristzatziki (συζήτηση) 2 Ιουλίου 2013 (UTC)

Κώδικας και πρότυπα για τα μέρη του λόγου

Είναι καιρός νομίζω να προχωρήσουμε στην αλλαγή των προτύπων για τα μέρη του λόγου και ταυτόχρονα να απαλλαγούμε από την υποχρέωση να γράφουμε σε αυτά την κλείδα ταξινόμησης των ξένων λέξεων. Είχε φτιαχτεί ήδη το Module:PartOfSpeech και το τροποποίησα λιγάκι. Παράλληλα, στο Module:KleidaAll υπάρχουν πια συναρτήσεις για την κατασκευή της κλείδας στις γλώσσες fr, tr, pt, es, de, ro και σε λίγο για τις eo, pl. Έχω μια ιδέα για την αλλαγή του τρόπου ταξινόμησης των αρχικών γραμμάτων και την εξέθεσα στη ΒΔ, αλλά δεν πήρα κάποια απάντηση. Επίσης στο Πρότυπο:δοκιμή2 υπάρχει το περιεχόμενο που θα πάρει το Πρότυπο:ουσιαστικό και με παρόμοιο τρόπο τα υπόλοιπα. Απομένει να συμπληρωθούν όλα τα πεδία cat στο Module:Languages και θα είμαστε έτοιμοι για το πέρασμα σε νέα πρότυπα. Υπάρχει κάποια παρατήρηση ή σχόλιο; Έχω ξεχάσει κάτι; Υπάρχει διαφωνία για το Ουσιαστικό 1, Ουσιαστικό 2 στα ομόγραφα; --Flyax (συζήτηση) 22:04, 18 Σεπτεμβρίου 2013 (UTC)[απάντηση]

Με τις νέες τροποποιήσεις του Xoristzatziki, απλουστεύτηκε αρκετά το πρότυπο. Μακάρι να υπάρχει τρόπος να αποφύγουμε τελείως την παράμετρο μέροςτουλόγου εφόσον είναι ταυτόσημη με το όνομα του προτύπου. Συμπλήρωσα τον πίνακα στο Module:Languages (εκτός από τις παραμέτρους wiki) και τον πίνακα με τα μέρη του λόγου στο Module:PartOfSpeech. Ας τα δει και ένα άλλο μάτι και είμαστε νομίζω έτοιμοι. --Flyax (συζήτηση) 20:54, 21 Σεπτεμβρίου 2013 (UTC)[απάντηση]