Utenti stranieri non vedono il sito

Postate qui discussioni di carattere generale riguardo a problemi di installazione e configurazione di osCommerce

Moderatore: mod Generali

Rispondi
Corsaretto
membro Junior
membro Junior
Messaggi: 35
Iscritto il: 11/09/2006, 1:26

Utenti stranieri non vedono il sito

Messaggio da Corsaretto »

Ho verificato un problema a seguito delle segnalazioni di utenti che cercano di accedere al mio shop on-line.

In pratica viene restituito loro un errore (perché il browser è cpnfigurato per l'inglese o per altre lingue):

Warning: main(includes/languages/.php) [function.main]: failed to open stream: No such file or directory in /web/htdocs/www.aquariumline.com/home/catalog/inclu ... on_top.php on line 285

Fatal error: main() [function.require]: Failed opening required 'includes/languages/.php' (include_path='.:/php/lib/php/') in /web/htdocs/www.aquariumline.com/home/catalog/inclu ... on_top.php on line 285

Qualcuno può aiutarmi? Non sò proprio cosa fare anche perché il PHP npn lo mastico ...

Grazie per l'aiuto che vorrete darmi
maury2ma
membro Master
membro Master
Messaggi: 1669
Iscritto il: 10/02/2006, 14:04
Contatta:

Messaggio da maury2ma »

e' un problema noto di oscommerce.

se non hai la lingua installata lui non riesce a visualizzare la pagina.

qualcuno sa dell'esistenza di una patch ?

io ho risolto cosi' :

in application_top.php (catalogo ed admin)

ho modificato il codice in modo che se non ha nessuna lingua mette l'inglese:

Codice: Seleziona tutto

// set the language
  if (!tep_session_is_registered('language') || isset($_GET['language'])) {
    if (!tep_session_is_registered('language')) {
      tep_session_register('language');
      tep_session_register('languages_id');
    }

    include(DIR_WS_CLASSES . 'language.php');
    $lng = new language();

    if (isset($_GET['language']) && tep_not_null($_GET['language'])) {
      $lng->set_language($_GET['language']);
    } else {
      $lng->get_browser_language();
    }

    $language = $lng->language['directory'];
    $languages_id = $lng->language['id'];
  }

// include the language translations
// correct missed language in admin
  if ($language == null) $language = 'english';
// end missed language
  require(DIR_WS_LANGUAGES . $language . '.php');
  $current_page = basename($PHP_SELF);
  if (file_exists(DIR_WS_LANGUAGES . $language . '/' . $current_page)) {
    include(DIR_WS_LANGUAGES . $language . '/' . $current_page);
  }
non e' una soluzione completa... ma funziona.
unico problema mette la lingua inglese tutte le volte apri il sito, poi tu lo cambi in italiano.
maury2ma
membro Master
membro Master
Messaggi: 1669
Iscritto il: 10/02/2006, 14:04
Contatta:

Messaggio da maury2ma »

forse un'alternativa piu' valida sta' nel sostituire il codice postato prima

Codice: Seleziona tutto

// correct missed language in admin
  if ($language == null) $language = 'english';
// end missed language 
con questa variante :

Codice: Seleziona tutto

// correct missed language in admin
  if (!is_file(DIR_WS_LANGUAGES . $language . '.php')) {
    $language = 'english';
  }
// end missed language
direi che e' piu' efficace.
ma se qualcuno ha qualche suggerimento in merito spari pure
Avatar utente
essevi2001
membro Baby
membro Baby
Messaggi: 60
Iscritto il: 26/12/2006, 18:33

Messaggio da essevi2001 »

Ciao a tutti!
Maurizio, le directory da modificare sono:
catalog/includes/application_top.php
catalog/admin/includes/application_top.php

E' corretto o non ho capito bene io?
maury2ma
membro Master
membro Master
Messaggi: 1669
Iscritto il: 10/02/2006, 14:04
Contatta:

Messaggio da maury2ma »

i file sono propio quelli, scusa se sono stato troppo generico.
Corsaretto
membro Junior
membro Junior
Messaggi: 35
Iscritto il: 11/09/2006, 1:26

Messaggio da Corsaretto »

Innanzi tutto ringrazio per l'aiuto.

Nel suggerimento fornito non capisco quando si verifica il problema?

In pratica $language == null quando si verifica?

Si verifica forse quando il browser dell'utente visitatore non trasmette l'informazione sulla lingua?

E allora perché non metterci:
if ($language == null) $language = 'italian'; ?

Ho forse detto una cosa sbagliata? Se sì fatemi capire dove sbaglio
Corsaretto
membro Junior
membro Junior
Messaggi: 35
Iscritto il: 11/09/2006, 1:26

Messaggio da Corsaretto »

Ragazzi scusate se ritorno sull'argomento ma ho rilevato un problema.

In particolare con riferimento al codice:

Codice: Seleziona tutto

// include the language translations 
// correct missed language in admin 
  if ($language == null) $language = 'english'; 
// end missed language 
  require(DIR_WS_LANGUAGES . $language . '.php'); 
  $current_page = basename($PHP_SELF); 
  if (file_exists(DIR_WS_LANGUAGES . $language . '/' . $current_page)) { 
    include(DIR_WS_LANGUAGES . $language . '/' . $current_page); 
  } 
nel mio file non mi ritrovo il pezzo di codice:

Codice: Seleziona tutto

  $current_page = basename($PHP_SELF); 
  if (file_exists(DIR_WS_LANGUAGES . $language . '/' . $current_page)) { 
    include(DIR_WS_LANGUAGES . $language . '/' . $current_page); 
  }
Devo aggiungerlo? oppure fa' parte di una personalizzazione?
maury2ma
membro Master
membro Master
Messaggi: 1669
Iscritto il: 10/02/2006, 14:04
Contatta:

Messaggio da maury2ma »

riepilogo per maggiore chiarezza, scusate la confusione:
in application_top.php
sia in /admin/includes/
che in /includes/

sostituite il seguente codice:

Codice: Seleziona tutto

// include the language translations
  require(DIR_WS_LANGUAGES . $language . '.php');
con questo:

Codice: Seleziona tutto

// include the language translations
// correct missed language in admin
  if (! is_file(DIR_WS_LANGUAGES . $language . '.php')) {
    $language = 'english';
  }
// end missed language
  require(DIR_WS_LANGUAGES . $language . '.php');
il controllo funziona cosi':
se trova il file della stessa lingua del browser lo usa, se non lo trova mette inglese come default.
potete sostituire english con italian, ma per gli utenti esteri... io lascerei inglese.
mustafa
membro Senior
membro Senior
Messaggi: 357
Iscritto il: 15/06/2004, 0:00
Località: Lecce

Messaggio da mustafa »

scusate, ma non capisco il problema. se disabilitate la lingua dal pannello, non vi basta?
maury2ma
membro Master
membro Master
Messaggi: 1669
Iscritto il: 10/02/2006, 14:04
Contatta:

Messaggio da maury2ma »

il problema sorge quando tu hai un sito con una sola lingua installata.
esempio tu cancelli tutte le lingue e lasci solo l'italiano.

un cliente francese od inglese visita il sito e trova solo pagine d'errore invece di vedere il sito in italiano.

per correggere il bug basta apportare le modifiche al codice come ho indicato sopra.

se usi opera, firefox, nescape ed IE noterai che ogni tanto il problema delle lingue si manifesta.
mustafa
membro Senior
membro Senior
Messaggi: 357
Iscritto il: 15/06/2004, 0:00
Località: Lecce

Messaggio da mustafa »

anche se disabiliti la lingua dal pannello (localizzazione -> lingue )? :o
maury2ma
membro Master
membro Master
Messaggi: 1669
Iscritto il: 10/02/2006, 14:04
Contatta:

Messaggio da maury2ma »

mustafa ha scritto:anche se disabiliti la lingua dal pannello (localizzazione -> lingue )? :o
onestamente non ho provato
mustafa
membro Senior
membro Senior
Messaggi: 357
Iscritto il: 15/06/2004, 0:00
Località: Lecce

Messaggio da mustafa »

ok. prova e vedrai che non c'è bisogno di alcuna patch :)
Rispondi