Ορίζοντας πολυγλωσσικό περιεχόμενο στο Odyssey CMS

συζητήσεις για το Ελληνικό Odyssey CMS

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

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

Ορίζοντας πολυγλωσσικό περιεχόμενο στο Odyssey CMS

Δημοσίευση από korgr » 25 Απρ 2012 19:33

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

Φυσικά καλό θα ήταν να αντιμετωπίζουμε ως πολυγλωσσικό, ακόμα και ένα site που το δημιουργούμε γνωρίζοντας πως θα παρουσιάζεται μόνο σε μία γλώσσα (πχ ελληνικά). Ο λόγος είναι απλούστατος και δεν είναι άλλος από το ότι πρέπει πάντα να δημιουργούμε τις προϋποθέσεις για μελλοντική επέκταση του site και σε άλλες γλώσσες.

Κατ' αρχήν ας προσδιορίσουμε όλες τις περιπτώσεις, όπου το περιεχόμενο σχετίζεται με την πολυγλωσσικότητα.

Η συνηθέστερη περίπτωση είναι η καταχώρηση περιεχομένου (πχ κάποιου άρθρου) από τον πίνακα διαχείρισης (Admin Panel). Ο web designer σ' αυτή την περίπτωση δεν έχει να ασχοληθεί με κάτι, αφού ο διαχειριστής του site, το μόνο που χρειάζεται να κάνει είναι να ενεργοποιήσει τις γλώσσες που επιθυμεί από το Admin Panel. Μετά από αυτή την ενέργεια, αυτομάτως οι φόρμες εισαγωγής δεδομένων θα μας παρέχουν τα αντίστοιχα πεδία για κάθε ενεργή γλώσσα.

Ας δούμε όμως τις περιπτώσεις που αφορούν τον δημιουργό του template (web designer) ή τον web developer που θα πρέπει να αντιμετωπίσει τα όποια πολυγλωσσικά θέματα εκτός template (για παράδειγμα στην δημιουργία κάποιου controller, module, plugin κλπ).

Το Odyssey χρησιμοποιεί για την μεταγλώττιση την μέθοδο key->value, δηλαδή την αντιστοίχιση μεταφράσεων σε εκφράσεις-κλειδιά της βασικής γλώσσας. Για παράδειγμα αν ως βασική γλώσσα θεωρούμε την ελληνική, και θέλουμε να μεταφράσουμε την έκφραση «όχι» σε αγγλικά και γερμανικά, το σύστημα θα αντιστοιχίσει στην συγκεκριμένη έκφραση-κλειδί τις μεταφράσεις «no» και «kein».
Αυτό έχει ως πλεονέκτημα το ότι μπορούμε να θεωρήσουμε ως βασική γλώσσα αυτήν που μας είναι πιο οικεία, και ο κώδικάς μας να περιέχει μόνο αυτές τις εκφράσεις-κλειδιά. Να σημειωθεί πως μια έκφραση-κλειδί μπορεί να αποτελείται από μία λέξη ή από ολόκληρη πρόταση!

Για να μεταγλωτίσει το Odyssey την έκφραση «όχι» χρησιμοποιεί την μέθοδο getText της class language. Επειδή όμως δεν είναι χρηστικό να γράφουμε συνεχώς στον κώδικά μας:

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

$language->getText("όχι")
έχουμε στη διάθεση μας την συντόμευση t() από το αρχικό του translate.
Αν δηλαδή θέλουμε να χρησιμοποιήσουμε σε κάποιο σημείο του template μας την έκφραση «όχι» και να είμαστε σίγουροι πως θα μεταγλωτίζεται σωστά σε κάθε επιλεγμένη γλώσσα, αρκεί να γράψουμε σε php:

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

t("όχι")
Τι γίνεται όμως όταν θέλουμε να χρησιμοποιήσουμε μια έκφραση-κλειδί σε περιεχόμενο που δεν μπορούμε να έχουμε κώδικα php;
Τέτοιες περιπτώσεις είναι σε πεδία κειμένου των παραμέτρων ενός module, σε κάποιο javascript αρχείο κλπ.
Σ' αυτές τις περιπτώσεις το μόνο που χρειάζεται είναι να συμπεριλάβετε τις εκφράσεις-κλειδιά σε {{ }}.

Ας δούμε ένα παράδειγμα από περιεχόμενο html σε πεδίo κειμένου των παραμέτρων ενός module, το οποίο περιέχει τρεις προτάσεις που χρειάζεται να μεταγλωττίζονται:

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

<div>
&#123;&#123;Με το Odyssey CMS μπορεί ο καθένας να δημιουργήσει λειτουργικές ιστοσελίδες&#125;&#125;! <br>
&#123;&#123;Οι δυνατότητες είναι απεριόριστες και εξαρτώνται από το επίπεδο των γνώσεων σας&#125;&#125;. 
<br>
&#123;&#123;Έτσι από τον απλό χρήστη έως τον έμπειρο developer, το σύστημα θα καλύψει τις αντίστοιχες ανάγκες&#125;&#125;...
</div>
Άλλο ένα παράδειγμα, αυτή τη φορά από js αρχείο:

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

$&#40;"a&#91;data-rel='external'&#93;"&#41;.attr&#40;&#123;
target&#58; "_blank", title&#58; "&#123;&#123;Ο σύνδεσμος αυτός ανοίγει σε νέο παράθυρο&#125;&#125;"
&#125;&#41;;
Μια τελευταία περίπτωση που μπορεί να μας απασχολήσει στα πολύγλωσσα sites, είναι οι εικόνες που περιέχουν θέμα εξαρτώμενο από την επιλεγμένη γλώσσα. Για παράδειγμα μπορεί να είναι κάποιο slogan με χαρακτηριστική γραφή, λογότυπα που πλαισιώνονται από προσδιορισμούς κλπ.
Στην περίπτωση αυτή έχουμε πάντα στη διάθεσή μας την καθολική (global) μεταβλητή $urlExtension. Αυτή περιέχει πάντα την επέκταση της κάθε γλώσσας σε μορφή όπως η _en. Τις επεκτάσεις των γλωσσών μπορείτε να τις δείτε στο Admin Panel στην ενότητα «ΔΙΑΧΕΙΡΙΣΗ ΓΛΩΣΣΩΝ->ΕΠΕΞΕΡΓΑΣΙΑ». Για την default γλώσσα (πχ ελληνικά) δεν χρειάζεται να ορίσουμε κάποια επέκταση.
Ο λόγος που η επέκταση αρχίζει με underscore ( _ ) είναι για να μπορείτε να την προσαρτάτε στο τέλος του ονόματος κάθε πολυγλωσσικής εικόνας. Ας δούμε το παράδειγμα μιας εικόνας στο template μας, και συγκεκριμένα του logo. Αν υποθέσουμε πως χρειαζόμαστε εκδόσεις της εικόνας σε ελληνικά, αγγλικά και γερμανικά, τα ονόματα των αρχείων αντίστοιχα θα πρέπει να είναι:
για ελληνικά logo.png (χωρίς κάποια γλωσσική επέκταση η εξ ορισμού γλώσσα)
για αγγλικά logo_en.png
για γερμανικά logo_de.png

Αφού δημιουργήσουμε όλες τις απαραίτητες εκδόσεις του logo, μπορούμε να αναφερόμαστε σ' αυτό μέσα στον κώδικα του template μας με:

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

<img src="<?php echo $p;?>images/logo<?php echo $urlExtension;?>.png" alt="logo">
Με τον τρόπο αυτό θα φορτώνεται κάθε φορά η κατάλληλη έκδοση της εικόνας ανάλογα την επιλεγμένη γλώσσα παρουσίασης. Η $p δεν χρειάζεται να σας μπερδεύει, απλά πρέπει να την χρησιμοποιούμε γιατί περιέχει την διαδρομή (path) προς τον φάκελο images του τρέχοντος template. Περισσότερα γι' αυτή, αλλά και για άλλες τέτοιες χρήσιμες μεταβλητές, θα αναλύσουμε στα άρθρα που αναφέρονται στην δημιουργία templates...

Πηγή: http://odyssey.webpage.gr/gr/articles/n ... eriexomeno

Απάντηση

Επιστροφή στο “Odyssey CMS”

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

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