Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

ficheros .lng ¿cómo?

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: ficheros .lng ¿cómo? Responder citando

¿Alguien podría orientarme como hacer uso de ficheros .lng en mi aplicación?

Al seleccionar una u otra opción cargar un archivo de lenguaje u otro.

Gracias.
Volver arriba
Mensaje    Asunto: Ficheros .lng Responder citando

Por lo que yo he visto se trata de ficheros de una estructura similar a los .ini, así que usando el comando GetPrivateProfileString entiendo que no has de tenr problemas. Ahora bien, planteáte si te merece la pena la cantida de código necesario para redefinir el idioma de los controles: un GetPrivateProfileString y su correspondiente asignación. Por ejemplo:
Código:
char cLectura[100] = "\0";
GetPrivateProfileString("SECCION 1", "Control 1", "Por defecto", cLectura, 25, cFichero.lng);
Label1->Caption = AnsiString(cLectura);

Y esto para todos los controles que definas en cada uno de los formaularios. ¿Te merece la pena?
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Gracias Angel por tu tiempo:
No conocía la función GetPrivateProfileString así que ahora ya he aprendido una cosa más y cuando la pruebe ya te diré cosas.
Tienes toda la razón cuando dices que hay que pensarse bién si vale la pena o no ir escribiendo el código para cada control de la aplicación toda vez que si se tratara de un programa de gran envergadura podría resultar un "trabajo de xinos", pero en este caso al tratarse de una aplicación sencilla y pequeña tal vez lo intente.
Gracias de nuevo y hasta otra Wink .
Volver arriba
Mensaje    Asunto: Ficheros .lng Responder citando

Esas instrucciones te valen para ficheros del tipo .ini y similares. Por ejemplo, para poner un fichero de este tipo donde se ejecuta el programa:
Para crear el fichero yo lo haría así:
Código:
cIdioma = ExtractFilePath(Application->ExeName) + "Fichero.lng";
WritePrivateProfileString(NULL, NULL, NULL, cIdioma.c_str());

Las entradas se crean con la misma instrucción WritePro...:
Código:
WritePrivateProfileString("Zona", "Entrada", "Valor", cIdioma.c_str());

Siendo:
Cita:
Zona » El área del fichero donde se va a guardar. En los ficheros de tipo INI son las etiquetas entre corchetes.
Entrada » La clave a guardar, que estos ficheros va a la izquierda del igual.
Valor » El de la clave.
cIdioma » El fichero.

Para rescatar estos valores se usa GetPrivateProfileString:
Código:
GetPrivateProfileString("Zona", "Entrada", "Por defecto", "Valor" , Longitud, cIdioma.c_str());

Siendo:
Cita:
Zona, Entrada y Valor » Lo mismo que en la definición anterior.
Por defecto » Es el valor que tomará entrada si no existe en el fichero.
Longitud » Como son variables de tipo char hay que indicar cuantos bits hay que leer. No pasa nada si se ponde de más porque leerá hasta el pirmer final de línea que haya.

_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Muuuuuchas gracias Ángel, creo que voy entendiendo, me he puesto manos a la obra y antes de meterme en la aplicación definitiva he querido provar haciendo un experimento, pero no me funciona del todo, te voy a poner el código y también el fallo que me dá, a ver qué te parece:

En el fichero .LNG está lo siguiente:

[Seccion 1]
1=Inserció de dades
2=Inssertar
3=Llenguatge
4=Per defecte (Castellà)
5=Català

y en el OnClick de un botón :

char cLectura[100] = "\0";
GetPrivateProfileString("Seccion 1", "1", "Por defecto", cLectura, 25, "catala.ini");
Button2->Caption = AnsiString(cLectura);

Mi objetivo es que al pulsar el botón el caption del mismo cambie a "Inserció de dades" pero lo único que consigo es que se cambie a "Por defecto". Me parece que me estoy pasando algo por alto pero no acierto a adivinarlo.
Te agredecería un cable Rolling Eyes .
Volver arriba
Mensaje    Asunto: Ficheros .lng Responder citando

¿Como has llamado el fichero donde cargas los literales? Tal cual has puesto el código, el fichero debe llamarse catala.ini, y además ha de encontrarse en la misma carpeta que el ejecutable. Lo del valor por defecto (en tu caso Por defecto) se estable si no existe el fichero catala.ini o no existe la Seccion 1 o no existe la entrada 1 de esa sección.

De todas formas, y al margen de que evalues alguna de estas circunstancias, no le encunetro demsiado sentido a que se cambie el idioma al pulsar el botón; lo más lógico es que se cambie al crearse el formulario.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Ciertamente Ángel el idioma se va a cambiar en otro sitio lo de ponerlo ahora al pulsar un botón es sólo para hacer pruebas con esta función.
Y te confirmo los siguientes extremos:

- El fichero se llama catala.ini.
- Se halla en la misma carpeta del ejecutable.
- La Seccion 1 existe.
- La entrada 1 existe.

Pero aún así sigue sin funcionar Crying or Very sad .
He estado mirando en la ayuda del builder la información sobre todos estos parámetros y dice exactamente lo que tu me has enseñado por eso no entiendo como sigo con problemas.
Lejos de parecer pesado lo único que pretendo es aprender, aprender y aprender...
Gracias de nuevo.
Volver arriba
Mensaje    Asunto: ¡Lo encontré! Responder citando

Very Happy ¡Sí! ¡Por fin! He debido probar como 10 veces con el mismo código que has puesto y al final me he dado cuenta de cual era el fallo: el nombre del fichero DEBE INCLUIR de forma obligatoria la vía de acceso. Con este código a mi me ha funcionado:
Código:
AnsiString cFichero = ExtractFilePath(Application->ExeName) + "catala.ini";
char cLectura[100]  = "\0";
GetPrivateProfileString("Seccion 1", "1", "Por defecto", cLectura, 25, cFichero.c_str());
Button1->Caption = AnsiString(cLectura);

y me sale el texto del botón en catalán (Inserció de dades).

Por cierto: regístrate que muchas veces será más comodo mandar correos que estar cargando el foro.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

POR FIIIIIIIIINNN !!! Razz Laughing Very Happy Smile , Aleluyaaaaaaa !!! , eres un fenómeno Ángel. Soy asiduo a este foro y no dudes en que si algún día puedo hecharte un cable lo haré aunque con el nivel que tienes dudo que te haga falta Wink .

Por cierto me registré desde el primer día pero nunca me deja entrar con mis datos por eso siempre entro como invitado. Exclamation .

Bueno Ángel, lo dicho, ha sido un placer tratar contigo, muchas gracias y hasta otra Wink .
Volver arriba
Mensaje    Asunto: Sobre registro Responder citando

Pues yo me pondría en contacto con los administradores a ver qu está pasando. Wink
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.