Skip to main content

Φτιάχνοντας πολυγλωσσικές διαδικτυακές εφαρμογές

Είναι σημαντικό προνόμιο για μια εφαρμογή το να μπορεί να υποστηρίζει πολλές γλώσσες. Πώς όμως μπορεί να γίνει αυτό;

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

Η διάταξη που θα χρησιμοποιήσουμε θα είναι η παρακάτω:

O φάκελος el-GR αποφασίζουμε ότι θα αφορά την ελληνική μετάφραση, ενώ ο en-GB την αγγλική. Έτσι λοιπόν, κάθε γλώσσα θα έχει το δικό της μέρος ως υποφάκελο του φακέλου language.

Το αρχείο language.php θα μοιάζει με το παρακάτω:
"title" => "Τίτλος",
"Undo" => "Αναίρεση",
"Redo" => "Επανάληψη",
"Link" => "Εισαγωγή Συνδέσμου",
"ΙnsertImage" => "Εισαγωγή Εικόνας",
"SelectFile" => "Επιλέξτε αρχείο",

"WriteEmptyFailedUnknown" => "Η προετοιμασία απέτυχε",
"WriteEmptyFailedFolder" => "Ο φάκελος temp δεν είναι εγγράψιμος!"

Ανάλογα την εφαρμογή που φτιάχνουμε, τα μηνύματα θα αλλάζουν φυσικά. Πχ. το παραπάνω θα μπορούσε να χρησιμοποιηθεί σε έναν WYSIWYG επεξεργαστή κειμένου, σε ένα webmail πρόγραμμα κτλ. Όταν, λοιπόν, κάποιος θέλει να μεταφράσει το πρόγραμμα, δε θα έχει παρά να πάρει το language.php, να το βάλει σε έναν φάκελο της επιλογής του και να το τροποποιήσει, σύμφωνα με τους τίτλους που δίνονται στα αγγλικά στο αριστερό μέρος(ως ονόματα των πεδίων του πίνακα $language).

Το αρχείο config.php θα περιέχει τις ρυθμίσεις του ιστοχώρου(πχ. στοιχεία της βάσης δεδομένων). Ανάμεσα σε αυτά θα βάλουμε και τις γραμμές:
*Set the language folder*

Όταν κάνουμε include το αρχείο config.php στον κώδικα του προγράμματός μας, θα εκτελούμε ακριβώς από κάτω την εντολή:

Από εκεί και πέρα, στα μηνύματα που εμφανίζουμε στον χρήστη, αντί πχ. για "Αναίρεση" θα γράψουμε:

Άρα αν επιλέξουμε στο config.php αντί για el-GR το en-GB, αντί για "Αναίρεση" θα εμφανιστεί "Undo". Όπως ακριβώς το δηλώσαμε στο αντίστοιχο αρχείο language.php!

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


Popular posts from this blog

Drupal: Allow registrations through Invite or Referral modules only

The Invite module provides invitations from existing users to their contacts. The Referral module, in contrary, creates a special URL for each existing user, which can be found in each user's profile, and allows new user registration. Even though, these two modules seem to provide the same functionality, they don't (and they shouldn't). Invite module, provides a mechanism for a site administrator to limit new registrations to "Invitations only". Referral module doesn't provide any of this functionality. Some users have requested the Invite module and Referral module to join in one module. Until now, there isn't anything to that direction. Wouldn't it be great though if there was a solution to limit drupal registration to referral or invitation only? Copy the functions below to a refinvite.module file in your sites→all→modules→refinvite folder and enable the module. Then go to http://<your-address-here>/admin/user/settings and enable the new …

Drupal: Status report problem: HTTP request status fails

Some of you may have encountered this problem in some cases. In "Status Report" page, accidentally appears the error below:

HTTP request status   FailsYour system or network configuration does not allow Drupal to access web pages, resulting in reduced functionality. This could be due to your webserver configuration or PHP settings, and should be resolved in order to download information about available updates, fetch aggregator feeds, sign in via OpenID, or use other network-dependent services.
What I did, was to recheck that my webserver had access to internet. Of course it had! The problem exists mostly when there is no information to resolve the domain name used with the local ip address of the webserver. This means that an error occurs in the entries of the DNS server.

In cases where DNS server is not existant(ex. local testing environment) all you have to do is inform the /etc/hosts file. For example if you use the domain http://www.example.local/ and your local ip addr…

Configure drupal_http_request() on the fly

The drupal_http_request() function supports connections using a proxy. You can configure a global proxy to use for all drupal_http_request() callbacks from the settings.php file of your website/installation by filling the following lines with the proper information:For those of you preferring a UI, then HTTP proxy module is for you.But what if you only want to use a proxy in some cases; like a custom module? In that case you will need the following function(modify accordingly):Now all you have to do is Call <?php _MYMODULE_change_proxy(); ?>.Do your drupal_http_request() calls.Call <?php _MYMODULE_change_proxy(TRUE); ?> to reset your previous settings.