24/01/17 22:14
Buon sera a tutti. Vi espongo subito il quesito:
Mi piacerebbe immettere la possibilità di scegliere la lingua nei miei applicativi. (Da input se possibile)
Sono riuscito a cambiare lingua tramite #define
Ometto le ltre lingue per brevità, ma sono tutte strutturate come it.h
In questo modo ho 1 header per ogni linuga, nel main() posso mettere
cosi da capire ugualmente la stringa. Però devo ricompilare ogni volta che voglio cambiare lingua.
il secodo metodo (uso di una DLL) :
Creo la DLL, e poi nel main dei miei progetti:
Qui ho il vantaggio che posso caricare qualsiasi lingua sostituendo la DLL, ma ogni DLL deve avere lo stesso nome delll'altra e non posso modificarlo a programma partito.
Mi chiedevo se ci fossero metodi per il C miglior dei due postati o se si potesse scegliere la lingua via console a programma avviato (magari scegliendo la DLL da caricare avendole tutte nella cartella dell'eseguibile).
Grazie a tutti per le risposte.
Mi piacerebbe immettere la possibilità di scegliere la lingua nei miei applicativi. (Da input se possibile)
Sono riuscito a cambiare lingua tramite #define
// translation.h #pragma once #ifdef ITALIANO #include "it.h" #elif INGLESE #include "en.h" #else FRANCESE #include "fr.h" #endif // altri linugaggi se voglio //it.h #pragma once #define _PRIMO "Primo" #define _SECONDO "Secondo" #define _METODO "Metodo" #define _PRIMO_METODO "Primo Metodo" #define _SECONDO_METODO "Secondo Metodo" //main.c #include <stdio.h> #define ITALIANO 1 #include "Translation.h" int main( int argc , char ** argv ) { printf( "\n" _PRIMO _METODO ); return 0; }
Ometto le ltre lingue per brevità, ma sono tutte strutturate come it.h
In questo modo ho 1 header per ogni linuga, nel main() posso mettere
printf("%s",_YES);
cosi da capire ugualmente la stringa. Però devo ricompilare ogni volta che voglio cambiare lingua.
il secodo metodo (uso di una DLL) :
//file.h uguale per ogni lingua #pragma once #ifdef TRANSLATION_EXPORTS #define FUNCSDLL_API __declspec(dllexport) #else #define FUNCSDLL_API __declspec(dllimport) #endif #define _PRIMO 0 #define _SECONDO 1 #define _METODO 2 #define _PRIMO_METODO 3 #define _SECONDO_METODO 4 FUNCSDLL_API char* frasi( int i ); //file.c a seconda della lingua #include "Intestazione.h" FUNCSDLL_API char* frasi( int i ) { char *stringhe[] = { "Primo", "Secondo", "Metodo", "Primo Metodo", "Secondo Metodo" }; return stringhe[i]; }
Creo la DLL, e poi nel main dei miei progetti:
#include <stdio.h> #include "Intestazione.h" int main( int argc , char ** argv ) { puts(frasi( _PRIMO )); puts(frasi( _SECONDO )); puts(frasi( _METODO )); puts(frasi( _PRIMO_METODO )); puts(frasi( _SECONDO_METODO)); return 0; }
Qui ho il vantaggio che posso caricare qualsiasi lingua sostituendo la DLL, ma ogni DLL deve avere lo stesso nome delll'altra e non posso modificarlo a programma partito.
Mi chiedevo se ci fossero metodi per il C miglior dei due postati o se si potesse scegliere la lingua via console a programma avviato (magari scegliendo la DLL da caricare avendole tutte nella cartella dell'eseguibile).
Grazie a tutti per le risposte.
Ultima modifica effettuata da 24/01/17 22:15