[RISOLTO] i18n - Inserimento lingue diverse da codice PHP

9 contenuti / 0 new
Ultimo contenuto
[RISOLTO] i18n - Inserimento lingue diverse da codice PHP

Ciao a tutti!

Ogni tanto ho la necessità di inserire nel mio sito in 2 lingue il seguente script che stampa HTML in una lingua o nell'altra a seconda dell'interfaccia ITA/ENG in cui ci si trova e che funziona perfettamente...

Lo script:

<div id="contenitore">
<?php
global $language;
if (
$language->language == 'it') {
  print
"HTML Ita...";
}
else {
  print
"HTML Eng...";
}
?>

</div>

Come fare per farsì che mi accetti anche codice PHP??? ...in modo che uno scenario di questo tipo funzioni:

<div id="contenitore">
<?php
global $language;
if (
$language->language == 'it') {
  print
"Codice PHP Ita...";
}
else {
  print
"Codice PHP Eng...";
}
?>

</div>

...lo script lo devo inserire in un contesto di Theming "puro" in un node-mio_ctype.tpl.php, senza scendere troppo nel dettaglio... inutile dire che così NON funziona... non esce nessun errore ma non stampa nulla a video...

Sarebbe molto urgente... qualcuno è in grado di risolvermi questo problema?

Grazie

Ciao
Kipper

Guarda che il tuo codice funziona tuttavia ti consiglio di impostare il prefisso en nella configurazione della lingua inglese e utilizzare una opzione in più:

<?php
 
global $language;
//la riga sottostante è per il debug poi da togliere
print $language->language;
if (
$language->language == 'it') {
  print
"Codice PHP Ita...";
} elseif (
$language->language == 'en') {
} else {
  print
"Codice neutral language";
}
?>

Io ho testato questo codice in un punto qualsiasi di page.tpl.php e funziona.

Ciao!

Io punterei a:

<?php
print t('Codice neutral language');
?>

e nell'interfaccia di traduzione caricherei il testo con le relative traduzioni.

PRO: gestione traduzioni omogenizzata, caching degli elementi già gestita nella parte lingua, meno codice da scrivere e più semplice da mantenere..

Ciao
Marco
--
My blog
Working at @agavee

ciao danzisiweb e grazie per la risposta... e piacere di conoscerti, visto che è la prima volta che siamo in un thread direttamente... mi sembra...

detto questo si, funziona, ma hai provato a mettere uno script PHP nel "print" anzichè solo testo?
...per es. <?php print $mia_variabile ?> ...ti funziona anche così? ...a me no ...con questo piccolo script non ho provato ma credo NON funzioni - mi spiego meglio anzi, nel dettaglio...

sono abituato in certe situazioni ad inserire dei blocchi "Quick Tabs" > http://drupal.org/project/quicktabs nei miei node-my_ctype.tpl.php e per farlo, uso il seguente script che stampa i blocchi Quick Tabs perfettamente:

<?php
$qtid
= 218; // write here your quicktabs id.
$quicktabs = quicktabs_load($qtid);
print
theme('quicktabs', $quicktabs);
?>

Il problema è, che se inserisco questo codice nello script di esempio in questione non mi stampa nulla e ho il dubbio (anzi, deve essere proprio così...) che accetti solo testo e tag HTML etc etc... ma sempre HTML..

Ecco lo script completo che NON funziona:

<?php
global $language;
if (
$language->language == 'it') {
  print
"<?php
$qtid = 218; // write here your quicktabs id.
$quicktabs = quicktabs_load($qtid);
print theme('quicktabs',
$quicktabs);
?>
";
}
else {
  print "<?php
$qtid
= 219; // write here your quicktabs id.
$quicktabs = quicktabs_load($qtid);
print
theme('quicktabs', $quicktabs);
?>
";
}
?>

...e con il tuo - che purtroppo NON funziona ugualmente:

<?php
global $language;
//la riga sottostante è per il debug poi da togliere
print $language->language;
if (
$language->language == 'it') {
  print
"<?php
$qtid = 218; // write here your quicktabs id.
$quicktabs = quicktabs_load($qtid);
print theme('quicktabs',
$quicktabs);
?>
";
} elseif ($language->language == 'en') {
} else {
  print "<?php
$qtid
= 219; // write here your quicktabs id.
$quicktabs = quicktabs_load($qtid);
print
theme('quicktabs', $quicktabs);
?>
";
}
?>

spero di essermi spiegato bene...

P.S. col tuo esempio mi stampa "it" e "en" (proprio solo queste 2 lettere del "language") e con il mio non stampa nulla, bianco totale...

Se hai maggiori elementi per risolvere la questione te ne sarei veramente grato perchè sarebbe urgente...

Grazie

Ciao
Kipper

ciao mavimo

purtroppo anche con il tuo intervento NON risolvo... schermata bianca con errore di sintax error...

ho inserito questo:

<?php
global $language;
if (
$language->language == 'it') {
  print
t('<?php
$qtid = 218; // write here your quicktabs id.
$quicktabs = quicktabs_load($qtid);
print theme('
quicktabs', $quicktabs);
?>
');
}
else {
  print t('<?php
$qtid
= 219; // write here your quicktabs id.
$quicktabs = quicktabs_load($qtid);
print
theme('quicktabs', $quicktabs);
?>
');
}
?>

Mah... speriamo di risolvere...

P.S. ma sto notando che c'è un problema di formattazione del testo quando salvo il post qui sul forum > 'quicktabs' lo inserisco con i 2 apici correttamente e, dopo l'invio, se ne perde uno per strada almeno, sul mio monitor vedo così...

Grazie

Ciao
kipper

Ciao Kipper,
molto lieta di scriverti! Vedi il mio codice è stato visto dal grande mavimo che è UberAdmin !! niente po po di meno e ha corretto, giustamente, solo la riga di print t('Codice neutral language'); anzichè come ho scritto io, che volevo solo darti un esempio per il debug, print "Codice ecc..";

pertanto credimi il codice è corretto e testato! Ti riporto il tuo codice corretto, testato e funzionante (anche se io non ho quicktabs), in quanto qualche errore di sintassi c'era:

global $language;
if ($language->language == 'it') {
$qtid = 218;
$quicktabs = quicktabs_load($qtid);
print theme('quicktabs', $quicktabs);
  print $qtid;
  print $language->language;
} else {
$qtid = 219;
print $qtid;
print $language->language;
$quicktabs = quicktabs_load($qtid);
print theme('quicktabs', $quicktabs);
}

Occhio quindi alle aperture del tag < ? php

Ciao!

ciao danzisiweb e un grazie anche a mavimo... funziona ma c'è ancora un problema...

i QTabs vengono visualizzati correttamente/perfettamente ma, in interfaccia ITA appena sotto (il QTabs) appare "218it" e, vice-versa in quella ENG, appare sopra "219en"

ecco le schermate:

il codice che ho inserito nel mio node-my_ctype.tpl.php (l'ultimo che mi hai postato...):

<div id="contenitore">
<?php
global $language;
if (
$language->language == 'it') {
$qtid = 218;
$quicktabs = quicktabs_load($qtid);
print
theme('quicktabs', $quicktabs);
  print
$qtid;
  print
$language->language;
} else {
$qtid = 219;
print
$qtid;
print
$language->language;
$quicktabs = quicktabs_load($qtid);
print
theme('quicktabs', $quicktabs);
}
?>

</div>

Grazie ancora per la collaborazione...

Ciao
Kipper

[RISOLTO]
Grazie danzisiweb e grazie Mavimo!

Essendo un po stanco oggi non avevo visto i 2 print di troppo che andavano a stampare l'ID del QuickTabs e la lingua e cioè questi:

print $qtid;
print $language->language;

Togliendoli, adesso tutto è OK!

Grazie veramente per il prezioso aiuto.

Ciao
kipper

Ciao Ragazzi...
Ma in Drupal 7 come deve essere modificato questo codice?

Grazie mille!!!