Pagina 1 di 1
Utenti stranieri non vedono il sito
Inviato: 25/01/2007, 2:35
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
Inviato: 25/01/2007, 11:23
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.
Inviato: 25/01/2007, 13:21
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
Inviato: 25/01/2007, 17:06
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?
Inviato: 25/01/2007, 18:24
da maury2ma
i file sono propio quelli, scusa se sono stato troppo generico.
Inviato: 26/01/2007, 2:44
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
Inviato: 26/01/2007, 23:44
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?
Inviato: 27/01/2007, 11:46
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.
Inviato: 13/02/2007, 16:59
da mustafa
scusate, ma non capisco il problema. se disabilitate la lingua dal pannello, non vi basta?
Inviato: 13/02/2007, 18:51
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.
Inviato: 13/02/2007, 19:31
da mustafa
anche se disabiliti la lingua dal pannello (localizzazione -> lingue )?

Inviato: 13/02/2007, 20:02
da maury2ma
mustafa ha scritto:anche se disabiliti la lingua dal pannello (localizzazione -> lingue )?

onestamente non ho provato
Inviato: 13/02/2007, 20:05
da mustafa
ok. prova e vedrai che non c'è bisogno di alcuna patch
