Repository 32bit  Forum
Repository 64bit  Wiki

sito bilingue

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.

sito bilingue

Messaggioda samiel » sab mag 25, 2013 23:59

Ciao gente di Slaacky!
Dovrei realizzare un piccolissimo sito, ma bilingue, italiano e inglese.
Ho spulciato un po' in giro... A vostri giudizio, che soluzione mi conviene adottare?
Vorrei che cliccando sulle solite bandierine apparisse il sito in una lingua
o nell'altra, menu incluso. Con un codice di questo tipo:
Codice: Seleziona tutto
<div id="navlist">
        <ul>
<?php
isset($_REQUEST["pagina"]) ? $pagina=$_REQUEST["pagina"] : $pagina="home";

if ($lang == "it")
$leftmenu=array(
    "home"=>"",
    "camera"=>"Sistemazione",
    "prezzi"=>"Prezzi",
    "dovesiamo" =>"Dove siamo",
    "prenotazione"=>"Prenotazione",
    "contatti"=>"Contattaci",
    "link"=>"Link utili"
);
else if ($lang == "en")
$leftmenu=array(
    "home"=>"",
    "camera"=>"Accomodation",
    "prezzi"=>"Prices",
    "dovesiamo" =>"Where are we",
    "prenotazione"=>"Reservatio",
    "contatti"=>"Contacts",
    "link"=>"Useful links"
);

$activemenu=0; $folder="home";

foreach($leftmenu as $kmenu=>$vmenu) { if(array_key_exists($pagina,$vmenu) |
    $pagina==$kmenu) { $activemenu=$leftmenu[$kmenu]; $folder=$kmenu; } }
    if ($lang == "it")
    $vocimenu=array(
   "home"=>"Home",
   "camera"=>"Sistemazione",
   "prezzi"=>"Prezzi",
    "dovesiamo"=>"Dove siamo",
   "prenotazione"=>"Prenotazione",
   "contatti"=>"Contatti",
   "link"=>"Link utili"
    );
    else if ($lang == "en")
    $vocimenu=array(
    "home"=>"",
    "camera"=>"Accomodation",
    "prezzi"=>"Prices",
    "dovesiamo" =>"Where are we",
    "prenotazione"=>"Reservatio",
    "contatti"=>"Contacts",
    "link"=>"Useful links"
);

foreach($vocimenu as $voce=>$vocevisualizzata) { echo '<li>';
if($pagina!=$voce) { echo $voce=="home" ? '<a href=".">' : '<a
    href="index.php?pagina='.$voce.'">'; } echo $vocevisualizzata;
if($pagina!=$voce) echo "</a>"; echo "</li>"; } echo "\n";
?>
        </ul>
</div><!--navlist-->

come faccio poi a passare le pagine nelle due lingue?
O c'è una soluzione migliore?

Grazie
m
samiel
Staff
Staff
 
Messaggi: 5500
Iscritto il: ven gen 16, 2004 0:00
Località: Venezia
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian

Re: sito biingue

Messaggioda conraid » dom mag 26, 2013 11:41

così proprio no, diventi matto per ogni modifica o magari aggiunta di una lingua in futuro.
Secondo me ci sono due strade:
- file con costanti delle lingue
- gettext

nel primo caso fai un file con
define('_CASA_', 'Home');
etc
oppure un array

nel secondo caso crei un file .po con i vari strumenti a disposizione, come nei programmi compilati. Io uso podedit

Per vedere degli esempi, il primo caso mediawiki (usa gli array) ed un po' tutto i "vecchi" software. Per il secondo wordpress o phpmyadmin tra gli altri.

Altro modo sarebbe usare tabelle mysql, file xml, etc...
Avatar utente
conraid
Staff
Staff
 
Messaggi: 12022
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: sito bilingue

Messaggioda samiel » dom mag 26, 2013 18:21

Nel primo caso devo usare i cookies?
Dovre trovo codice pronto da analizzare?
Finora ho trovato in rete cosa banali,
come siti costituiti da una sola pagina.
Il mio sito è molto piccolo, ma in ogni caso
costituito da più pagine. Devo costruire file
per le varie lingue (e questo non è un problema),
e poi darli in pasto a index.php?

Poedit non so nemmeno cosa sia,
devo documentarmi...

m
samiel
Staff
Staff
 
Messaggi: 5500
Iscritto il: ven gen 16, 2004 0:00
Località: Venezia
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian

Re: sito bilingue

Messaggioda samiel » dom mag 26, 2013 20:43

Ho trovato qualcosa ma mi manca molto...
Parto da un index.php che contiene
Codice: Seleziona tutto
<!-- HeadSectionDl BEGIN -->
<div id="languages">
<a href="index.php?lang=en"><img src="images/en.png" /></a>
<a href="index.php?lang=de"><img src="images/de.png" /></a>
<a href="index.php?lang=es"><img src="images/es.png" /></a>
</div><!--languages-->

<div id="WSTitleDL"><?php echo $lang['HEADER_TITLE']; ?></div>
<div id="WSubTitleDL"><?php echo $lang['SLOGAN']; ?></div>
</div><!-- HeadSectionDl END -->

<div id="TopHzNavSectionDl">
<!-- HeadSectionDl BEGIN -->
  <div class="HzNavCntDL">
    <ul>
      <li><a href="#"><?php echo $lang['MENU_HOME']; ?></a></li>
      <li><a href="#"><?php echo $lang['MENU_CAMERA']; ?></a></li>
     <li><a href="#"><?php echo $lang['MENU_PREZZI']; ?></a></li>
      <li><a href="#"><?php echo $lang['MENU_PRENOTAZIONE']; ?></a></li>
      <li><a href="#"><?php echo $lang['MENU_CONTATTI']; ?></a></li>
      <li><a href="#"><?php echo $lang['MENU_LINK']; ?></a></li>
    </ul>
  </div>
</div>

Poi un common.php con i riferimenti ai vari file di linguaggio:
Codice: Seleziona tutto
<?php
session_start();
header('Cache-control: private'); // IE 6 FIX

if(isSet($_GET['lang']))
{
$lang = $_GET['lang'];

// register the session and set the cookie
$_SESSION['lang'] = $lang;

setcookie("lang", $lang, time() + (3600 * 24 * 30));
}
else if(isSet($_SESSION['lang']))
{
$lang = $_SESSION['lang'];
}
else if(isSet($_COOKIE['lang']))
{
$lang = $_COOKIE['lang'];
}
else
{
$lang = 'en';
}

switch ($lang) {
  case 'it':
  $lang_file = 'lang.it.php';
  break;

  case 'en':
  $lang_file = 'lang.en.php';
  break;

  case 'de':
  $lang_file = 'lang.de.php';
  break;

  case 'es':
  $lang_file = 'lang.es.php';
  break;

  default:
  $lang_file = 'lang.it.php';

}

include_once 'languages/'.$lang_file;
?>

Nel caso poi dell'inglese poi ho un lang.en.php
Codice: Seleziona tutto
<?php
/*
------------------
Language: English
------------------
*/

$lang = array();

$lang['PAGE_TITLE'] = 'My website page title';
$lang['HEADER_TITLE'] = 'My website header title';
$lang['SITE_NAME'] = 'My Website';
$lang['SLOGAN'] = 'My slogan here';
$lang['HEADING'] = 'Heading';

// Menu

$lang['MENU_HOME'] = 'Home';
$lang['MENU_CAMERA'] = 'Accomodation';
$lang['MENU_PREZZI'] = 'Prices';
$lang['MENU_DOVESIAMO'] = 'Where are we';
$lang['MENU_PRENOTAZIONE'] = 'Reservation';
$lang['MENU_CONTATTI'] = 'Contacts';
$lang['MENU_LINK'] = 'Useful links';
?>

Così può funzionare? Ma soprattutto, come e dove
integro gli effettivi link alle pagine?

grazie!
m
samiel
Staff
Staff
 
Messaggi: 5500
Iscritto il: ven gen 16, 2004 0:00
Località: Venezia
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian

Re: sito bilingue

Messaggioda aschenaz » dom mag 26, 2013 21:16

Piuttosto che alle session, io mi affiderei ai cookie: infatti, se uno sceglie una lingua, non credo lo faccia per una singola sessione. Per cui, imposterei un cookie, che so, per un anno...
pensieriemotivi.aschenaz.eu - music-blog
Avatar utente
aschenaz
Staff
Staff
 
Messaggi: 4435
Iscritto il: mar lug 27, 2004 23:00
Località: Reggio Calabria
Nome Cognome: Nino
Slackware: current 64bit
Kernel: 3.14.18
Desktop: KDE 4.10.5

Re: sito bilingue

Messaggioda samiel » dom mag 26, 2013 21:33

In termini di codice?

Ma non è "invasiva" per l'utente la soluzione dei cookies ?

m
samiel
Staff
Staff
 
Messaggi: 5500
Iscritto il: ven gen 16, 2004 0:00
Località: Venezia
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian

Re: sito bilingue

Messaggioda aschenaz » dom mag 26, 2013 21:52

Ciao Mauro! Andavo così di fretta che non mi ero accorto che eri tu! :lol:

Beh, navigando, ti becchi centinaia di cookie al giorno. In un certo senso, sono sì invasivi perché scrivono sul tuo computer, ma in certi frangenti sono quasi insostituibili. Questo è uno di quei casi.

Domani, se riesco, posto un po' di codice...
pensieriemotivi.aschenaz.eu - music-blog
Avatar utente
aschenaz
Staff
Staff
 
Messaggi: 4435
Iscritto il: mar lug 27, 2004 23:00
Località: Reggio Calabria
Nome Cognome: Nino
Slackware: current 64bit
Kernel: 3.14.18
Desktop: KDE 4.10.5

Re: sito bilingue

Messaggioda samiel » dom mag 26, 2013 22:07

Eh sì, sono io! Come va, Nino?

comunque io ho disabilitato i cookies,
tranne abilitarli sono in qualche caso indispensabile...

Grazie mille, sto googolando, ma - come scrivevo -
il codice in giro è banale, serve solo per soluzioni
elementarissime, siti di una pagina...

m
samiel
Staff
Staff
 
Messaggi: 5500
Iscritto il: ven gen 16, 2004 0:00
Località: Venezia
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian

Re: sito bilingue

Messaggioda teox99 » lun mag 27, 2013 10:40

a prescidere dal fatto che personalmente penso che gettext sia il miglior modo di procedere ...
vorrei prendere la palla al balzo e chiedervi se ci sono tra voi delle persone che lo utilizzano ...
Avatar utente
teox99
Linux 2.6
Linux 2.6
 
Messaggi: 735
Iscritto il: ven lug 25, 2008 13:54
Località: Roma[Eur]
Slackware: 13.37
Desktop: KDE - Xfce

Re: sito bilingue

Messaggioda conraid » lun mag 27, 2013 11:15

teox99 ha scritto:a prescidere dal fatto che personalmente penso che gettext sia il miglior modo di procedere ...
vorrei prendere la palla al balzo e chiedervi se ci sono tra voi delle persone che lo utilizzano ...


io l'ho usato qualche volta, il problema è sempre quello di capire cosa riescono ad usare meglio i traduttori

samiel ha scritto:Nel primo caso devo usare i cookies?


in entrambi i casi io uso le sessioni

per gli esempi non saprei, guarda i software più famosi come fanno.

esempi veloci trovati al volo sono vecchiotti, tipo questo
http://www.phpsimplicity.com/tips.php?id=15
usa gli array ma cambia poco con le costanti

qui usa un cookie e/o sessioni
http://techbrush.org/simplest-way-to-cr ... l-website/
Avatar utente
conraid
Staff
Staff
 
Messaggi: 12022
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: sito bilingue

Messaggioda teox99 » lun mag 27, 2013 11:29

la mia domanda in effetti è in ambito teorico, volevo sapere se nelle stringhe da tradurre includete i tag html e in tal caso come vi comportate con gli accenti?
Avatar utente
teox99
Linux 2.6
Linux 2.6
 
Messaggi: 735
Iscritto il: ven lug 25, 2008 13:54
Località: Roma[Eur]
Slackware: 13.37
Desktop: KDE - Xfce

Re: sito bilingue

Messaggioda conraid » lun mag 27, 2013 11:46

per i tag html solitamente no, preferisco evitare, anche se ho visto che per esempio per wordpress li inglobano. Per gli accenti c'è utf8 :-)
Avatar utente
conraid
Staff
Staff
 
Messaggi: 12022
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: sito bilingue

Messaggioda teox99 » lun mag 27, 2013 12:16

il file po e' codificato utf-8
ma come tu ben sai un carattere accentato non vieve correttamente visualizzato se non uso htmlentities ... e non ho voglia di riscrivere tutti i comandi gettext con davanti htmlenetitis ... come fare?
Avatar utente
teox99
Linux 2.6
Linux 2.6
 
Messaggi: 735
Iscritto il: ven lug 25, 2008 13:54
Località: Roma[Eur]
Slackware: 13.37
Desktop: KDE - Xfce

Re: sito bilingue

Messaggioda conraid » lun mag 27, 2013 12:21

perché no? se il sito usa la codifica utf8 viene visualizzato correttamente, l'importante è usare la stessa codifica
Avatar utente
conraid
Staff
Staff
 
Messaggi: 12022
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: sito bilingue

Messaggioda teox99 » lun mag 27, 2013 12:41

OK, ho provveduto ad usare
charset=utf-8
ora mi rimane da risolvere il problema dei tag nelle traduzioni, forse l'unico modo è di spiegare ai traduttori a cosa servono e quindi riprodurli nella traduzione.
Diciamo che si tratta solo del tag <strong> per il grassetto ...
Avatar utente
teox99
Linux 2.6
Linux 2.6
 
Messaggi: 735
Iscritto il: ven lug 25, 2008 13:54
Località: Roma[Eur]
Slackware: 13.37
Desktop: KDE - Xfce

Prossimo

Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti