Elxis CMS Forum

Ελληνικό Forum => Γλώσσες - Πολυγλωσσία => Topic started by: thanasis on August 02, 2013, 19:11:06

Title: Ερώτηση για "επιλεκτική" Πολυγλωσσία
Post by: thanasis on August 02, 2013, 19:11:06
Καλησπέρα,
Υπάρχει η δυνατότητα στην έκδοση 4. να εμφανίζονται κάποια από τα αντικείμενα περιεχομένου (και αντικείμενα μενού) σε 1 μόνο γλώσσα και κάποια άλλα σε περισσότερες;
Title: Re: Ερώτηση για "επιλεκτική" Πολυγλωσσία
Post by: thanasis on August 29, 2013, 18:11:23
Να υποθέσω πως όχι ;
Title: Re: Ερώτηση για "επιλεκτική" Πολυγλωσσία
Post by: datahell on August 30, 2013, 10:44:48
Κανονικά όχι, αλλά και ναι ;D
Στο elxis 4.x έχουμε μεταφράσεις, όταν για ένα αντικείμενο δεν υπάρχει μετάφραση χρησιμοποιείται η κύρια γλώσσα. Οπότε για τις διάφορες γλώσσες έχουμε ίδιες δομές περιεχομένου, μενού, κλπ. Ωστόσο μπορείς να εμφανίσεις διαφορετικά πράγματα ανάλογα με την τρέχουσα γλώσσα είτε δημιουργώντας δικά σου module που δουλεύουν όπως θέλεις εσύ είτε επεξεργαζόμενος τα υπάρχοντα. Ο βασικός έλεγχος που απαιτείται είναι να βρούμε την τρέχουσα γλώσσα και κατόπιν με if statements να αλλάξουμε την εμφάνιση ανάλογα με την γλώσσα.

Τρέχουσα γλώσσα (en, el, de, fr, it, κλπ):
$lng = eFactory::getLang()->currentLang();

Ανάλογα με την γλώσσα κάνε διαφορετικά πράγματα (στο module ή στο index.php του template):

if ($lng == 'de') {
    //εμφάνισε το γερμανικό μενού
} else if ($lng == 'el') {
    //εμφάνισε το ελληνικό μενού
} else {
    //εμφάνισε το γενικό μενού
}

Μία ιδέα (υπάρχουν πολλές διαφορετικές λύσεις) του πως να εμφανίσουμε διαφορετικά μενού ανάλογα με την γλώσσα.

Φτιάξτε για κάθε γλώσσα που θέλετε να έχει διαφορετικό μενού ένα μενού στο elxis και βάλτε το σε αντίστοιχες μοναδικές θέσεις module.
Για παράδειγμα φτιάξτε το μενού "greekmenu" και βάλτε το στη θέλει "greekmenu", φτιάξτε το μενού "italianmenu" και βάλτε το στη θέλει "italianmenu", κλπ.
Τώρα, στο index.php του template εκεί που φορτώνεται το module του menu βάλτε αυτόν τον έλεγχο που εγραψα παραπάνω και φορτώστε άλλο module μενού ανάλογα με την γλώσσα.

Παράδειγμα (template Delta)

Code: [Select]
<div class="delta_menu">
<?php 
switch ($eLang->currentLang()) {
     case &
#39;el&#39;: $eDoc->modules(&#39;greekmenu&#39;, &#39;none&#39;); break;
     
case &#39;it&#39;: $eDoc->modules(&#39;italianmenu&#39;, &#39;none&#39;); break;
     
default: $eDoc->modules(&#39;menu&#39;, &#39;none&#39;); break;
}
?>

</div>
Title: Re: Ερώτηση για "επιλεκτική" Πολυγλωσσία
Post by: thanasis on August 30, 2013, 16:29:58
Τέλεια... ευχαριστώ πολύ datahell !
Title: Sitemap - Re: Ερώτηση για "επιλεκτική" Πολυγλωσσία
Post by: thanasis on August 31, 2013, 16:05:04
Έστω ότι έχουμε δύο δημοσιευμένες γλώσσες στο site (el / en)
και
έχουμε Άρθρο-Α μόνο el και Άρθρο-Β el / en

Το component sitemap δημιουργεί αντίστοιχα 2 χάρτες:

/sitemap/sitemap.html
Άρθρο-Α
Άρθρο-Β


/en/sitemap/sitemap.html
Άρθρο-Α  <------- Γίνεται να μην εμφανίσει αυτό?
Article-B
Title: Re: Ερώτηση για "επιλεκτική" Πολυγλωσσία
Post by: datahell on August 31, 2013, 17:20:15
Όχι, θα πρέπει να επέμβεις στον κώδικα του component για να το κάνεις.