Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-05-2007
Isabel_AS Isabel_AS is offline
Registrado
 
Registrado: ene 2007
Posts: 9
Poder: 0
Isabel_AS Va por buen camino
¿Se puede modificar el idioma predeterminado por código?

Hola,
Me gustaría saber como se modifica por código la configuración regional y de idioma, para poner el idioma a portugués(Portugal), hacer una impresión, y volver a cambiarlo a lo que tuviera antes.
He encontrado las funciones GetSystemDefaultLangID y GetUserDefaultLangID para ver el idioma que hay, pero ¿me puede decir alguien cuáles hay para modificarlo?
Gracias de antemano.
Responder Con Cita
  #2  
Antiguo 21-05-2007
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Cool Sipi

Todo se puede... revisa éste link

Suerte!

Última edición por cHackAll fecha: 21-05-2007 a las 21:32:25.
Responder Con Cita
  #3  
Antiguo 22-05-2007
Isabel_AS Isabel_AS is offline
Registrado
 
Registrado: ene 2007
Posts: 9
Poder: 0
Isabel_AS Va por buen camino
No soy capaz de conseguirlo por ese camino.
Estoy intentando esto:

Código Delphi [-]
          
          if Mensaje('¿ Imprimir Contrato en Portugués ?', '', '', True) then begin
             SysLocale.DefaultLCID := 2070;
             SysLocale.PriLangID   := LANG_PORTUGUESE;
             SysLocale.SubLangID   := SUBLANG_PORTUGUESE;
          end
          else begin
             SysLocale.DefaultLCID := 3082;
             SysLocale.PriLangID   := LANG_SPANISH;
             SysLocale.SubLangID   := SUBLANG_SPANISH;
          end;

pero no lo pilla. El caso es que cuando cambio manualmente por el panel de control el idioma los valores de SysLocale son esos.
¿Sabe alguien qué está mal aquí?
Gracias
Responder Con Cita
  #4  
Antiguo 24-05-2007
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Cool Mmm...

Isabel, SysLocale es un objeto utilizado por la funcion FormatDateTime para interpretar las fechas, no cambiará la lengua que usa el S.O. Procuraré analizar el caso... intentando ayudarte; hasta entonces por qué no nos cuentas más especificamente lo que necesitas: acaso quieres imprimirlo en Word? o es que quieres usar sierto grupo de caracteres? por que necesitas eso? Pregunto pues talvez haya una forma más sencilla de solucionar el problema.

Saludos.
Responder Con Cita
  #5  
Antiguo 24-05-2007
Isabel_AS Isabel_AS is offline
Registrado
 
Registrado: ene 2007
Posts: 9
Poder: 0
Isabel_AS Va por buen camino
Muchas gracias por tu interés cHackAll.

Lo que quiero es imprimir en word, tengo dos ficheros base, uno en español y otro en portugues con una serie de marcadores, que relleno desde delphi (datos del cliente y demás). El tema del idioma viene por la fecha del contrato, que cojo del sistema.
También utilizo:
ShortDateFormat := 'dddd, d "de" mmmm "de" yyyy';
para que me salgan los nombres del día y del mes, y, claro, lo que quiero es que me salgan en español y en portugués dependiendo del caso.... y, esto sale muy bien..... cambiándolo desde el panel de control... ya solo me falta saber cambiarlo yo
Responder Con Cita
  #6  
Antiguo 24-05-2007
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Cool Solucion

Tengo entendido que el meollo del asunto está en los nombres de los días y los meses... Siendo éste el caso divagué entre APIs y la unidad SysUtils para producir tu resultado, espero sea lo que necesitas.

Código Delphi [-]
function GetLocaleStr(const Locale, LCType: Cardinal): ShortString;
begin
 Result[0] := Char(GetLocaleInfo(Locale, LCType, @Result[1], 255) - 1);
 Result[1] := Char(Byte(Result[1]) and not $20);
end;

function GetDateStr(DateTime: TDateTime; Lang: Cardinal): string;
var SystemTime: TSystemTime; Locale, LCID: Cardinal;
begin
 LCID := GetThreadLocale;
 SetThreadLocale(Lang);
 Locale := GetThreadLocale;
 DateTimeToSystemTime(DateTime, SystemTime);
 Result := GetLocaleStr(Locale, LOCALE_SDAYNAME1 + Word(SystemTime.wDayOfWeek - 1) mod $FFF9) + ', ' + IntToStr(SystemTime.wDay) + ' de ' +
           GetLocaleStr(Locale, LOCALE_SMONTHNAME1 + SystemTime.wMonth - 1) + ' del ' + IntToStr(SystemTime.wYear);
 SetThreadLocale(LCID);
end;
 
procedure TForm1.FormCreate(Sender: TObject);
var xxx: string;
begin
 DateTimeToString(xxx, 'dddd, d "de" mmmm "de" yyyy', Now);
 Caption := xxx + ' ~ ' + GetDateStr(Now, LANG_PORTUGUESE) + ' ~ ' + GetDateStr(Now, LANG_ENGLISH) + ' ~ ' + GetDateStr(Now, LANG_SPANISH);
end;

Saludos

Última edición por cHackAll fecha: 24-05-2007 a las 19:07:27.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
¿Se puede modificar el valor de una constante? DarKraZY Varios 3 27-08-2006 14:13:07
Modificar DSN desde código Iuconlas Conexión con bases de datos 0 20-07-2006 10:57:10
Modificar NetDir por código Delphi arex400 Conexión con bases de datos 2 24-08-2005 15:48:23
Modificar una gráfica por código hogol Servers 0 02-12-2003 21:55:13
Modificar LOCAL SHARE por código Lepe Conexión con bases de datos 2 16-09-2003 16:22:44


La franja horaria es GMT +2. Ahora son las 13:39:54.


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
Copyright 1996-2007 Club Delphi