PHP - Problema con gettext y copy

   
Vista:

Problema con gettext y copy

Publicado por Zhukov zhukov81@hotmail.com (11 intervenciones) el 06/08/2012 12:09:27
Hola, esto ya lleva camino de odisea y escribo para ver si alguien tiene alguna idea de por donde tirar.

El caso es que estoy introduciendo multidioma a una pagina.
Lo primero de todo, en local (con xampp) funciona sin problemas, en el host no. Tras mirar... averigué que se podia deber al trabajo de esta función con la caché.

Bien, pues... para solucionar este problema proponen cambiar el nombre del fichero que lleva los archivos de traducción (.mo) cada vez que se realice un cambio, para ello una de las formas que se puede hacer, es renombrar el fichero con los datos de fecha/hora ejecución del script etc... con lo que de esta forma se obligaria a la caché a recargar los ficheros. ¿Cual es el problema?

Pues que al copiar --> copy($forigen,$fdestino); Siendo $forigen la ruta del fichero que quiero copiar (es el fichero .mo que está solo en la carpeta de idioma), y $fdestino que es la copia que quiero crear del fichero original en el mismo directorio me da el siguiente error

Warning: copy(includes/languages/en/LC_MESSAGES/messages_1344245273.mo) [function.copy]: failed to open stream: Permission denied in /furanet/sites/airpersons.com/web/htdocs/includes/languages/es/sobre-laboryou.php on line 42 y obviamente ... no realiza la copia.

Para prevenir en este aspecto... diré que toda la estructura de carpetas y archivos poseen permisos 755 por lo que por permisos yo creo que no es.

Llevo ya unos cuantos dias parado en este aspecto y al jefe no le está empezando a molar nada, agradecería cualquier ayuda.

Un saludo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Problema con gettext y copy

Publicado por xve (5522 intervenciones) el 06/08/2012 23:56:26
Hola Zhukov, el archivo .mo, como lo abres?? desde PHP o desde el navegador?? te lo digo porque la cache, únicamente se encuentra en el navegador, no en el servidor que es donde se ejecuta el php.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con gettext y copy

Publicado por Zhukov (11 intervenciones) el 07/08/2012 16:19:48
Hola

Lo primero, gracias por el interés puesto.

El archivo .mo se abre desde php.

Respecto a lo de la caché me has dejado un poco así, ya que yo tras la lectura de este artículo http://raohmaru.com/blog/php/gettext-y-la-cache/ consideraba que el gettext trabaja con la caché del servidor independientemente que luego al abrir se cargue también en el navegador :S

A continuación muestro el código de configuración del gettext por si sirve de ayuda:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
$locale = 'en';
if (isset($_GET['locale']) && !empty($_GET['locale']))
	$locale = $_GET['locale'];
 
putenv('LANGUAGE='.$locale);
putenv('LANG='.$locale);
putenv('LC_ALL='.$locale);
putenv('LC_MESSAGES='.$locale);
setlocale(LC_ALL,$locale);
setlocale(LC_CTYPE,$locale);
 
$textdomain="messages";
$locales_dir = dirname(dirname(__FILE__));
 
bindtextdomain($textdomain,$locales_dir);
bind_textdomain_codeset($textdomain, 'UTF-8');
textdomain($textdomain);
 
// Ruta de los ficheros .mo
$filename = "$locales_dir\\$locale\LC_MESSAGES\\$textdomain.mo";
 
 // Modificacion del archivo
$mtime = filemtime($filename);
 
// Ruta del nuevo fichero .mo (copia del inicial)
$filename_new = "$locales_dir\\$locale\LC_MESSAGES\\{$textdomain}_{$mtime}.mo";
 
if (!file_exists($filename_new)) {
      copy($filename,$filename_new);
}
 
// Se asignan los nuevos valores
$domain_new = "{$textdomain}_{$mtime}";
bindtextdomain($domain_new,$locales_dir);
textdomain($domain_new);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con gettext y copy

Publicado por Zhukov (11 intervenciones) el 08/08/2012 10:37:51
Tras mirar y remirar, he sido fruto de mi propia inexperiencia.

El problema si que residia en los permisos (SI A ALGUIEN LE PASA QUE LO REVISE BIEN TODO) xD que yo postee pensando que los tenia bien.. y mira...

La carpeta principal tenia bien los permisos pero la carpeta LC_MESSAGES no y ahí estaba el problema.

Ahora una vez solucionado esto... sigue sin traducir el gettext y no da ningún tipo de error así que no sé, si encuentro solución posteo por si a alguien le sucede lo mismo.

Un saludo y gracias por el interés prestado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar