Πολυγλωσσικό cms

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Άβαταρ μέλους
cn92
Δημοσιεύσεις: 232
Εγγραφή: 25 Ιαν 2008 19:00
Τοποθεσία: Γλυφαδα
Επικοινωνία:

Πολυγλωσσικό cms

Δημοσίευση από cn92 » 10 Ιουν 2011 01:47

Ετοιμάζω τη νέα έκδοση του cms που χρησιμοποιώ, και θέλω να υπάρχει δυνατότητα για περισσότερες από μία γλώσσες.

Αρχικά είχα σκεφτεί να δημιουργούνται νέα columns (id, ..., title_el, title_en, description_el, description_en κτλ.) στον πίνακα των άρθρων, όμως δεν ξέρω κατά πόσο θα καθυστερούσε τα queries.

Η καλύτερη λύση νομίζω είναι να δημιουργείται ένας νέος πίνακας για κάθε γλώσσα (πχ. articles_el, articles_en κτλ.).

Έχετε να προτείνετε καμία καλύτερη μέθοδο;

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6236
Εγγραφή: 30 Νοέμ 2004 03:09

Πολυγλωσσικό cms

Δημοσίευση από fafos » 10 Ιουν 2011 02:03

aplos prostheteis ena neo field ston pinaka, p.x. lang pou tha pairnei times en, gr, it klp..
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

Άβαταρ μέλους
ThyClub
Honorary Member
Δημοσιεύσεις: 5312
Εγγραφή: 17 Νοέμ 2003 00:21
Τοποθεσία: Hell's Kitchen
Επικοινωνία:

Πολυγλωσσικό cms

Δημοσίευση από ThyClub » 10 Ιουν 2011 02:06

Οπως και ενα ακομη που θα προσδιοριζει ποιανου αρθρου ειναι μεταφραση

Άβαταρ μέλους
jpk
Δημοσιεύσεις: 441
Εγγραφή: 09 Μαρ 2011 21:17

Πολυγλωσσικό cms

Δημοσίευση από jpk » 10 Ιουν 2011 02:12

cn92 έγραψε:Η καλύτερη λύση νομίζω είναι να δημιουργείται ένας νέος πίνακας για κάθε γλώσσα
Και εγώ πάντως αυτή την λύση χρησιμοποιώ συνήθως όταν έχω να κάνω με πολύγλωσσες εφαρμογές (εκτός από τα βασικά που μπαίνουν στα properties κάθε domain ή subdomain που αντιστοιχεί σε κάθε γλώσσα).

Αυτό βέβαια σημαίνει ότι έχεις ένα τελείως διαφορετικό σύνολο ανά γλώσσα. Αν θέλεις το σύνολο να είναι το ίδιο και π.χ. πατώντας ένα εικονίδιο αλλαγής γλώσσας σε ένα άρθρο να πηγαίνει στην αντίστοιχη μετάφραση του συγκεκριμένου άρθρου – σελίδας τότε αναγκαστικά πηγαίνεις στην λύση που προαναφέρθηκε ή σε κάποια παρεμφερή.

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Πολυγλωσσικό cms

Δημοσίευση από cherouvim » 10 Ιουν 2011 12:20

Σκέψου το εξής:

Κώδικας: Επιλογή όλων

table articles: id, created_at, created_by, category_id, state, ...

table article_translations: article_id, language, title, description, ...

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Πολυγλωσσικό cms

Δημοσίευση από korgr » 10 Ιουν 2011 15:31

cherouvim έγραψε:Σκέψου το εξής:

Κώδικας: Επιλογή όλων

table articles: id, created_at, created_by, category_id, state, ...

table article_translations: article_id, language, title, description, ...
+1

Κάποια πράγματα αναφέρθηκαν και στο http://www.freestuff.gr/forums/viewtopic.php?t=56543

pimpogio
Δημοσιεύσεις: 1080
Εγγραφή: 28 Δεκ 2010 14:08

Πολυγλωσσικό cms

Δημοσίευση από pimpogio » 10 Ιουν 2011 15:42

cherouvim έγραψε:Σκέψου το εξής:

Κώδικας: Επιλογή όλων

table articles: id, created_at, created_by, category_id, state, ...

table article_translations: article_id, language, title, description, ...
αυτο ειναι η σωστη απαντηση στη γενικη περιπτωση και το καλυτερο overall

το εξτρα πεδιο ειναι ποιο ευκολο στην υλοποιηση ειναι ποιο γρηγορο αλλα εχεις fixed
αριθμο σε γλωσσες το αλλο με εξτρα πινακα σε καθε γλωσσα ειναι λαθος.

Άβαταρ μέλους
jpk
Δημοσιεύσεις: 441
Εγγραφή: 09 Μαρ 2011 21:17

Πολυγλωσσικό cms

Δημοσίευση από jpk » 10 Ιουν 2011 15:53

pimpogio έγραψε:το αλλο με εξτρα πινακα σε καθε γλωσσα ειναι λαθος.
Αν έχεις σε μια τοποθεσία δυναμικές σελίδες και ενότητες δυναμικών σελίδων και δεν σε ενδιαφέρει όταν ο χρήστης είναι σε μια συγκεκριμένη σελίδα – άρθρο πατώντας το κουμπί άλλης γλώσσας να βλέπει την ίδια, αλλά να μεταβαίνει στο domain ή subdomain που αντιστοιχεί σε αυτή την γλώσσα γιατί είναι λάθος;

Το τι θα επιλέξεις ως μοντέλο δεδομένων σαφέστατα έχει να κάνει με το ποια ροή θέλεις να έχεις η εφαρμογή – τοποθεσία.

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Πολυγλωσσικό cms

Δημοσίευση από cherouvim » 10 Ιουν 2011 15:58

jpk έγραψε:
pimpogio έγραψε:το αλλο με εξτρα πινακα σε καθε γλωσσα ειναι λαθος.
...γιατί είναι λάθος;
Αν τα tables articles_el και articles_en είναι ίδια σε δομή τότε είναι λάθος σχεδίαση στη βάση γιατί έχουμε denormalization και μάλλον αρκετό copy/pasting κώδικα.

Προφανώς ανάλογα την περίπτωση βέβαια. Γιατί όσο μεγαλώνει ένα site τόσο περισσότερο μπορούμε να σπάσουμε τους κανόνες. Σε σενάρια archiving και sharding τέτοια ίδια πολλαπλά tables παίζουν πάρα πολύ. Στο συγκεκριμένο thread όμως δεν νομίζω να τίθεται τέτοιο θέμα.

pimpogio
Δημοσιεύσεις: 1080
Εγγραφή: 28 Δεκ 2010 14:08

Πολυγλωσσικό cms

Δημοσίευση από pimpogio » 10 Ιουν 2011 16:14

και κατι αλλο αυτο με το εξτρα πεδιο για καθε γλωσσα
εχει καποιες προγραμματιστικές ιδιαιτερότητες που πρεπει να τις προσεξεις..
γενικα ειναι υποψηφιο σε γνωστο απο πρωτα αριθμο γλωσσων που εχουμε 1-1 mapping του περιεχομενου.

Άβαταρ μέλους
jpk
Δημοσιεύσεις: 441
Εγγραφή: 09 Μαρ 2011 21:17

Πολυγλωσσικό cms

Δημοσίευση από jpk » 10 Ιουν 2011 16:19

Denormalization δεν νομίζω ότι έχεις γιατί αφενός δεν το κάνεις προσπαθώντας να βελτιστοποίησης την απόδοση της βάσης και αφετέρου γιατί αναφέρεσαι σε άλλη λογική ενότητα (το περιεχόμενο ενός site σε άλλη γλώσσα), και καθόλου copy/paste κώδικα δεν χρειάζεται, ο ίδιος κώδικας για όλα. Το ποια tables ή επιπλέων properties θα χρησιμοποιηθούν μπορεί να αντιστοιχίζεται από το κεντρικό αρχείο properties της εφαρμογής.

Πάντως αυτό που είπες για το denormalization μου έδωσε αφορμή και θα το ψάξω περισσότερο (έχει και ωραίο τίτλο :D )

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6236
Εγγραφή: 30 Νοέμ 2004 03:09

Πολυγλωσσικό cms

Δημοσίευση από fafos » 10 Ιουν 2011 16:35

ego proteino mia vash gia kathe glossa.. mhn po kai ena site gia kathe glossa.. :lol:
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Πολυγλωσσικό cms

Δημοσίευση από cherouvim » 10 Ιουν 2011 17:02

@jpk: Το normalization δεν το επιδιώκουμε τόσο για απόδοση αλλά για την ποιότητα του σχήματος και αντοχή στο χρόνο (συντήρηση, επεκτάσεις, αλλαγές).

Πχ η πιο κλασική δυσκολία σε αυτό το σχήμα είναι οτι αν έχεις 5 tables για άρθρα σε el, en, fr, de, it τότε η αλλαγή σχήματος της οντότητας του άρθρου συνιστά δομικές αλλαγές σε 5 tables αντί ενός.

Το κόλπο με το property για τη διαφοροποίηση του table name, ναι γίνεται, αλλά είναι κόλπο για να υλοποιήσεις κάτι που θα έπρεπε να γίνεται στη βάση. Με την ίδια λογική θα μπορούσα να σου πω οτι τα άρθρα αθλητισμού και τα άρθρα υγείας θα έπρεπε να είναι σε διαφορετικά tables, όπως επίσης και τα published με τα draft κτλ
Οπότε θα καταλήγαμε με τα εξής tables κάτι το οποίο είναι προφανώς λάθος:

Κώδικας: Επιλογή όλων

articles_el_sports_published
articles_el_sports_draft
articles_el_health_published
articles_el_health_draft
articles_en_sports_published
articles_en_sports_draft
articles_en_health_published
articles_en_health_draft

Άβαταρ μέλους
jpk
Δημοσιεύσεις: 441
Εγγραφή: 09 Μαρ 2011 21:17

Πολυγλωσσικό cms

Δημοσίευση από jpk » 10 Ιουν 2011 17:15

Χρήσιμες οι παρατηρήσεις σου cherouvim και θα τις σκεφτώ και ψάξω αρκετά την επόμενη φορά που θα σχεδιάσω μοντέλο δεδομένων πολύγλωσσης διαδικτυακής τοποθεσίας, thanks.

Άβαταρ μέλους
cn92
Δημοσιεύσεις: 232
Εγγραφή: 25 Ιαν 2008 19:00
Τοποθεσία: Γλυφαδα
Επικοινωνία:

Πολυγλωσσικό cms

Δημοσίευση από cn92 » 10 Ιουν 2011 18:14

σας ευχαριστώ όλους για τις άμεσες απαντήσεις..
λογικά θα ακολουθήσω τη μέθοδο του cherouvim με τους 2 πίνακες.
Θα δω και πιο αναλυτικά αυτά που αναφέρονται στο λινκ που έδωσε ο korgr.

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες