Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Lazarus, FreePascal, Kylix, etc. (https://www.clubdelphi.com/foros/forumdisplay.php?f=14)
-   -   Literal semana y mes sale en inglés (https://www.clubdelphi.com/foros/showthread.php?t=68349)

fidel 08-06-2010 21:00:02

Literal semana y mes sale en inglés
 
En Lazarus con Ubuntu 10.04 instado en idioma español, pongo esta linea para ver la fecha en un Label y me sale en inglés

Tuesday, 8 de June de 2010

Código Delphi [-]
  LabelFecha.Caption := FormatDateTime('dddd", "d "de "mmmm "de "yyyy',Now);

¿Como tengo que configurar Ubuntu o Lázarus para que salga en español?

Gracias.

rretamar 08-06-2010 21:08:14

En este momento no tengo un Lazarus a mano, pero ante una duda así miraría en el código fuente de la función FormatDateTime para ver de dónde obtiene los nombres en tal o cual idioma.

Sí, no es un gran aporte, pero es lo primero que se me viene a la mente. Esa es una de las ventajas de tener el código fuente disponible.

Saludos !

Casimiro Notevi 08-06-2010 21:36:35

Cierto, lo acabo de probar, tengo ubuntu 8.04

También creo que he descubierto el motivo, en lugar de comprobar el idioma del sistema... lo lee directamente del fichero donde están las funciones, lo han puesto "fijo" :confused::eek::

Esto es un trozo del fichero sysinth.inc
Cita:

ShortMonthNames: ('Jan','Feb','Mar','Apr','May','Jun',
'Jul','Aug','Sep','Oct','Nov','Dec');
LongMonthNames: ('January','February','March','April','May','June',
'July','August','September','October','November','December');
ShortDayNames: ('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
LongDayNames: ('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');

Casimiro Notevi 08-06-2010 21:39:17

Sólo hay que modificar ese ficherito y poner los valores en castellano o el idioma que se quiera.
Pero si eso es así, me parece un poco chapuza lo que han hecho ahí :)

AzidRain 08-06-2010 21:54:01

Casimiro, parece que en efecto Lazarus esta lleno de chapuzas, recordemos que es colaboración de muchas personas y pues nunca falta un "prietito en el arroz".

Casimiro Notevi 08-06-2010 22:56:46

Me he limitado a seguir el código hasta llegar ahí, no sé si hay alguna configuración o algo para elegir idioma.

fidel 09-06-2010 16:26:44

He modificado el fichero /usr/share/fpcsrc/2.4.0/rtl/objpas/sysutis/sysinth.inc y me sigue saliendo en inglés

Cita:

LongTimeFormat: 'hh:nn:ss';
ShortMonthNames: ('Ene','Feb','Mar','Abr','May','Jun',
'Jul','Ago','Sep','Oct','Nov','Dic');
LongMonthNames: ('Enero','Febrero','Marzo','Abril','Mayo','Junio',
'Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre');
ShortDayNames: ('Dom','Lun','Mar','Mie','Jue','Vie','Sab');
LongDayNames: ('Domingo','Lunes','Martes','Miercoles','Jueves','Viernes','Sabado');
TwoDigitYearCenturyWindow: 50;
);
{ ---------------------------------------------------------------------
Date formatting settings
---------------------------------------------------------------------}
¿Alguna idea?

mightydragonlor 09-06-2010 21:51:34

reconstruye lazarus, bueno lo de si la toma en el idioma estoy seguro que si, ya había leído algo en la documentación de lazarus donde explican que debes hacer para que se cargue el programa que hagas con la configuración del S.O. no lo tengo a mano pero si lo encuentro lo pongo acá.
edito para poner el link =) http://wiki.lazarus.freepascal.org/G..._strings_right
Cita:

parece que en efecto Lazarus esta lleno de chapuza
No debemos menospreciar un proyecto por que tenga o no respaldo de una gran empresa, a veces ("y digo la mayoria de veces, casi un 99%") las cosas que queremos hacer y no las sabemos, le echamos la culpa a alguien diferente a nosotros.

Casimiro Notevi 10-06-2010 01:41:47

Rectifico con lo de chapuza, lo de los idiomas tal y como comenta mightydragonlor, está documentado y explican cómo cambiarlo, el único "problema" es que no están todavía las traducciones a algunos idiomas, entre ellos el español, pero al ser un proyecto open source cualquiera puede colaborar traduciéndolo ;)

fidel 11-06-2010 19:51:06

Encuentro tres obstaculos:

1. Mi inglés es demasiado pobre.
2. No me veo capacitado para modificar lo que ahí se supone que explica.
3. Al reconstruir Lazarus me da un error cuando llega a la reconstrucción de los ejemplos y se detiene.

Por lo tanto voy por el camino fácil y con unas líneas más de código pongo la fecha en español.

Código Delphi [-]
Const
  Mes: Array[1..12] of String = ('enero', 'febrero', 'marzo', 'abril',
       'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre',
       'noviembre', 'diciembre');
  DiaSemana: Array[1..7] of String = ('domingo','lunes', 'martes',
             'miércoles', 'jueves', 'viernes', 'sábado');

begin
  //fecha
  LFecha.Caption := DiaSemana[DayOfWeek(Date)] + ', ' +
  IntToStr(DayOf(Date)) + ' de ' + Mes[MonthOf(Date)] + ' de ' +
  IntToStr(YearOf(Date));

Gracias a todos.

Un saludo.

mightydragonlor 11-06-2010 20:09:45

Cita:

1. Mi inglés es demasiado pobre.
2. No me veo capacitado para modificar lo que ahí se supone que explica.
3. Al reconstruir Lazarus me da un error cuando llega a la reconstrucción de los ejemplos y se detiene.
Basicamente lo que debes hacer es:
Código Delphi [-]
uses translations;
Código Delphi [-]
procedure TranslateResStrings;     //del ejemplo editor en lazreport
begin
    TranslateUnitResourceStrings('LCLStrConsts','lclstrconsts.%s.po','es','');
end;

initialization
     {$I principal.lrs}
     TranslateResStrings;
end.
Esto lo he sacado de hispalazarus


La franja horaria es GMT +2. Ahora son las 21:39:51.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi