summaryrefslogblamecommitdiffstats
path: root/strings.c
blob: 254e837e11d1ab4d99f5038b465172272eec880a (plain) (tree)
1
                    




































































































































































































































































                                                                                                          

                                        




















































































































































































































































































                                                                                                                               


                                                 













































































































































































































































































































































































                                                                                                                              


                                                


































































































































































                                                                                                                            
// Strings.c v0.12.2

#include "common.h"
#define NL "\n"

char *STR_ID[DIM];
char *strings_it[DIM];
char *strings_en[DIM];


int strfind(const char* langid,const char* langfile){
	FILE* f=fopen(langfile,"r");
	char line[4096],*id,*string,*p;
	char temp[32];
	int i=0;
//	printf("file %s f=%d\n",langfile, f); fflush(stdout);
	if(f){
		temp[0]=0;
		for(;fgets(line,sizeof(line),f);){
			if(sscanf(line,"[%[^]]",temp)&&!strncmp(langid,temp,sizeof(temp))){
				strings=malloc(DIM*sizeof(char*));
				for(i=0;i<DIM;i++) strings[i]=0;
				for(;fgets(line,sizeof(line),f);){
					if(strlen(line)>0&&line[0]=='[') break; //start of new table
					id=strtok(line," \t");
					string=strtok(0,"\n");
					for(i=0;string&&i<DIM;i++){
						if(!strcmp(id,STR_ID[i])){
							for(;string&&string[0]&&string[0]=='\t';string++);
							for(;(p=strstr(string,"\\n"));){
								for(p[0]='\n';p[1];p++) p[1]=p[2];
							}
							for(;(p=strstr(string,"\\r"));){
								for(p[0]='\r';p[1];p++) p[1]=p[2];
							}
							strings[i]=malloc(strlen(string)+1);
							strcpy(strings[i],string);
							i=DIM;
						}
					}
				}
				for(i=0;i<DIM;i++){
					if(strings[i]==0){
						strings[i]=malloc(strlen(strings_en[i])+1);
						strcpy(strings[i],strings_en[i]);
					}
				}
			}
		}
		fclose(f);
	}
	return i;	//i=0 if language table was not found
}

void GenerateLangFile(const char* langid,const char* langfile){
	FILE* f=fopen(langfile,"a");
	int i,j;
	if(f){
		fprintf(f,"\n\n[%s]\n",langid?langid:"x");
		for(i=1;i<DIM;i++){
			fprintf(f,"%s\t\t",STR_ID[i]);
			for(j=0;strings_en[i][j];j++){
				if(strings_en[i][j]=='\n') fprintf(f,"%s","\\n");
				else if(strings_en[i][j]=='\r') fprintf(f,"%s","\\r");
				else fprintf(f,"%c",strings_en[i][j]);
			}
			fprintf(f,"\n");
		}
		fclose(f);
	}
}

void strinit()
{
	STR_ID[S_NL]=(char*) "S_NL";
	STR_ID[S_noprog]=(char*) "S_noprog";
	STR_ID[S_prog]="S_prog";
	STR_ID[S_progDev]="S_progDev";
	STR_ID[S_DevPermission]="S_DevPermission";
	STR_ID[S_nodev_r]="S_nodev_r";
	STR_ID[S_nodev_w]="S_nodev_w";
	STR_ID[S_nodev]="S_nodev";
	STR_ID[S_DevMismatch]="S_DevMismatch";
	STR_ID[S_noV33reg]="S_noV33reg";
	STR_ID[S_progver]="S_progver";
	STR_ID[S_progid]="S_progid";
	STR_ID[S_FWver2old]="S_FWver2old";
	STR_ID[S_lowUsbV]="S_lowUsbV";
	STR_ID[S_HiVPP]="S_HiVPP";
	STR_ID[S_LowVPP]="S_LowVPP";
	STR_ID[S_reg]="S_reg";
	STR_ID[S_dev_det]="S_dev_det";
	STR_ID[S_file]="S_file";
	STR_ID[S_file2]="S_file2";
	STR_ID[S_fileEEP]="S_fileEEP";
	STR_ID[S_noDLL]="S_noDLL";
	STR_ID[S_openEEfile]="S_openEEfile";
	STR_ID[S_saveEEfile]="S_saveEEfile";
	STR_ID[S_IhexShort]="S_IhexShort";
	STR_ID[S_IhexChecksum]="S_IhexChecksum";
	STR_ID[S_InvHandle]="S_InvHandle";
	STR_ID[S_LogFile]="S_LogFile";
	STR_ID[S_FileSaved]="S_FileSaved";
	STR_ID[S_HVICSP]="S_HVICSP";
	STR_ID[S_StartRead]="S_StartRead";
	STR_ID[S_Read]="S_Read";
	STR_ID[S_CodeReading]="S_CodeReading";
	STR_ID[S_CodeReading1]="S_CodeReading1";
	STR_ID[S_CodeReading2]="S_CodeReading2";
	STR_ID[S_ReadEnd]="S_ReadEnd";
	STR_ID[S_ReadID_CONFIG]="S_ReadID_CONFIG";
	STR_ID[S_Read_CONFIG_A]="S_Read_CONFIG_A";
	STR_ID[S_Read_EXE_A]="S_Read_EXE_A";
	STR_ID[S_ReadEE]="S_ReadEE";
	STR_ID[S_StartErase]="S_StartErase";
	STR_ID[S_Writing]="S_Writing";
	STR_ID[S_StartCodeProg]="S_StartCodeProg";
	STR_ID[S_CodeWriting]="S_CodeWriting";
	STR_ID[S_CodeWriting2]="S_CodeWriting2";
	STR_ID[S_IDW]="S_IDW";
	STR_ID[S_ConfigW]="S_ConfigW";
	STR_ID[S_ConfigAreaW]="S_ConfigAreaW";
	STR_ID[S_EEAreaW]="S_EEAreaW";
	STR_ID[S_FuseAreaW]="S_FuseAreaW";
	STR_ID[S_CodeV]="S_CodeV";
	STR_ID[S_CodeV2]="S_CodeV2";
	STR_ID[S_IDV]="S_IDV";
	STR_ID[S_ConfigV]="S_ConfigV";
	STR_ID[S_EEV]="S_EEV";
	STR_ID[S_IntW]="S_IntW";
	STR_ID[S_TotErr]="S_TotErr";
	STR_ID[S_ComplErr]="S_ComplErr";
	STR_ID[S_Compl]="S_Compl";
	STR_ID[S_Ready]="S_Ready";
	STR_ID[S_End]="S_End";
	STR_ID[S_EndErr]="S_EndErr";
	STR_ID[S_ProtErase]="S_ProtErase";
	STR_ID[S_Inohex]="S_Inohex";
	STR_ID[S_ReadErr]="S_ReadErr";
	STR_ID[S_ReadCodeErr]="S_ReadCodeErr";
	STR_ID[S_ReadCodeErr2]="S_ReadCodeErr2";
	STR_ID[S_ReadEEErr]="S_ReadEEErr";
	STR_ID[S_ConfigErr]="S_ConfigErr";
	STR_ID[S_ReadConfigErr]="S_ReadConfigErr";
	STR_ID[S_ErrOsccal]="S_ErrOsccal";
	STR_ID[S_CodeWError]="S_CodeWError";
	STR_ID[S_CodeWError2]="S_CodeWError2";
	STR_ID[S_CodeWError3]="S_CodeWError3";
	STR_ID[S_CodeWError4]="S_CodeWError4";
	STR_ID[S_ConfigWErr]="S_ConfigWErr";
	STR_ID[S_ConfigWErr2]="S_ConfigWErr2";
	STR_ID[S_ConfigWErr3]="S_ConfigWErr3";
	STR_ID[S_WErr1]="S_WErr1";
	STR_ID[S_WErr2]="S_WErr2";
	STR_ID[S_IDErr]="S_IDErr";
	STR_ID[S_ICDErr]="S_ICDErr";
	STR_ID[S_Calib1Err]="S_Calib1Err";
	STR_ID[S_Calib2Err]="S_Calib2Err";
	STR_ID[S_CodeVError]="S_CodeVError";
	STR_ID[S_CodeVError2]="S_CodeVError2";
	STR_ID[S_CodeVError3]="S_CodeVError3";
	STR_ID[S_ErrSing]="S_ErrSing";
	STR_ID[S_ErrPlur]="S_ErrPlur";
	STR_ID[S_MaxErr]="S_MaxErr";
	STR_ID[S_I2CInitErr]="S_I2CInitErr";
	STR_ID[S_I2CAckErr]="S_I2CAckErr";
	STR_ID[S_ComErr]="S_ComErr";
	STR_ID[S_InsErr]="S_InsErr";
	STR_ID[S_SyncErr]="S_SyncErr";
	STR_ID[S_HVregErr]="S_HVregErr";
	STR_ID[S_Log1]="S_Log1";
	STR_ID[S_Log2]="S_Log2";
	STR_ID[S_Log3]="S_Log3";
	STR_ID[S_Log4]="S_Log4";
	STR_ID[S_Log5]="S_Log5";
	STR_ID[S_Log6]="S_Log6";
	STR_ID[S_Log7]="S_Log7";
	STR_ID[S_Log8]="S_Log8";
	STR_ID[S_Log9]="S_Log9";
	STR_ID[S_comTimeout]="S_comTimeout";
	STR_ID[S_EraseTimeout]="S_EraseTimeout";
	STR_ID[S_ConfigTimeout]="S_ConfigTimeout";
	STR_ID[S_ConfigTimeout2]="S_ConfigTimeout2";
	STR_ID[S_CodeTimeout]="S_CodeTimeout";
	STR_ID[S_CodeTimeout2]="S_CodeTimeout2";
	STR_ID[S_OsccalTimeout]="S_OsccalTimeout";
	STR_ID[S_EETimeout]="S_EETimeout";
	STR_ID[S_ConfigWTimeout]="S_ConfigWTimeout";
	STR_ID[S_CodeWTimeout]="S_CodeWTimeout";
	STR_ID[S_ConfigWTimeout2]="S_ConfigWTimeout2";
	STR_ID[S_EEWTimeout]="S_EEWTimeout";
	STR_ID[S_IDWTimeout]="S_IDWTimeout";
	STR_ID[S_ConfigNWTimeout]="S_ConfigNWTimeout";
	STR_ID[S_CodeVTimeout]="S_CodeVTimeout";
	STR_ID[S_ConfigVTimeout]="S_ConfigVTimeout";
	STR_ID[S_ProgModeTimeout]="S_ProgModeTimeout";
	STR_ID[S_ProgModeXTimeout]="S_ProgModeXTimeout";
	STR_ID[S_LogTimeout]="S_LogTimeout";
	STR_ID[S_CodeMem]="S_CodeMem";
	STR_ID[S_EEMem]="S_EEMem";
	STR_ID[S_IDMem]="S_IDMem";
	STR_ID[S_ConfigMem]="S_ConfigMem";
	STR_ID[S_ConfigResMem]="S_ConfigResMem";
	STR_ID[S_CodeMem2]="S_CodeMem2";
	STR_ID[S_ExeMem]="S_ExeMem";
	STR_ID[S_LPOsc]="S_LPOsc";
	STR_ID[S_XTOsc]="S_XTOsc";
	STR_ID[S_IntOsc]="S_IntOsc";
	STR_ID[S_RCOsc]="S_RCOsc";
	STR_ID[S_WDTON]="S_WDTON";
	STR_ID[S_WDTOFF]="S_WDTOFF";
	STR_ID[S_CPOFF]="S_CPOFF";
	STR_ID[S_CPON]="S_CPON";
	STR_ID[S_MCLRON]="S_MCLRON";
	STR_ID[S_MCLROFF]="S_MCLROFF";
	STR_ID[S_ChipID]="S_ChipID";
	STR_ID[S_ChipID2]="S_ChipID2";
	STR_ID[S_BKOsccal]="S_BKOsccal";
	STR_ID[S_Osccal]="S_Osccal";
	STR_ID[S_DevID]="S_DevID";
	STR_ID[S_DevID2]="S_DevID2";
	STR_ID[S_DevREV]="S_DevREV";
	STR_ID[S_ConfigWord]="S_ConfigWord";
	STR_ID[S_ConfigWord2]="S_ConfigWord2";
	STR_ID[S_ConfigWordX]="S_ConfigWordX";
	STR_ID[S_ConfigWordH]="S_ConfigWordH";
	STR_ID[S_ConfigWordL]="S_ConfigWordL";
	STR_ID[S_Config2Cal1]="S_Config2Cal1";
	STR_ID[S_CalibWord1]="S_CalibWord1";
	STR_ID[S_Calib1_2]="S_Calib1_2";
	STR_ID[S_CalibWord2]="S_CalibWord2";
	STR_ID[S_CalibWordX]="S_CalibWordX";
	STR_ID[S_Protected]="S_Protected";
	STR_ID[S_CodeLim]="S_CodeLim";
	STR_ID[S_EELim]="S_EELim";
	STR_ID[S_ConfigLim]="S_ConfigLim";
	STR_ID[S_WbufLim]="S_WbufLim";
	STR_ID[S_MaxRetry]="S_MaxRetry";
	STR_ID[S_NoCode]="S_NoCode";
	STR_ID[S_NoCode2]="S_NoCode2";
	STR_ID[S_NoCalibW]="S_NoCalibW";
	STR_ID[S_NoEEMem]="S_NoEEMem";
	STR_ID[S_NoConfigW]="S_NoConfigW";
	STR_ID[S_NoConfigW2]="S_NoConfigW2";
	STR_ID[S_NoConfigW3]="S_NoConfigW3";
	STR_ID[S_NoConfigW4]="S_NoConfigW4";
	STR_ID[S_NoConfigW5]="S_NoConfigW5";
	STR_ID[S_NoConfigW6]="S_NoConfigW6";
	STR_ID[S_Empty]="S_Empty";
	STR_ID[S_NextIns]="S_NextIns";
	STR_ID[S_ForceConfigW]="S_ForceConfigW";
	STR_ID[S_ForceConfigWx]="S_ForceConfigWx";
	STR_ID[S_WarnFlashSize]="S_WarnFlashSize";
	STR_ID[I_Fopen]="I_Fopen";
	STR_ID[I_Fsave]="I_Fsave";
	STR_ID[I_DevR]="I_DevR";
	STR_ID[I_DevW]="I_DevW";
	STR_ID[I_Info]="I_Info";
	STR_ID[I_Data]="I_Data";
	STR_ID[I_Opt]="I_Opt";
	STR_ID[I_Dev]="I_Dev";
	STR_ID[I_Type]="I_Type";
	STR_ID[I_TypeFilt]="I_TypeFilt";
	STR_ID[I_Filt]="I_Filt";
	STR_ID[I_Speed]="I_Speed";
	STR_ID[I_ReadRes]="I_ReadRes";
	STR_ID[I_ID_BKo_W]="I_ID_BKo_W";
	STR_ID[I_EE]="I_EE";
	STR_ID[I_CalW]="I_CalW";
	STR_ID[I_OSCW]="I_OSCW";
	STR_ID[I_OSC]="I_OSC";
	STR_ID[I_BKOSC]="I_BKOSC";
	STR_ID[I_OSCF]="I_OSCF";
	STR_ID[I_CONN]="I_CONN";
	STR_ID[I_QUIT]="I_QUIT";
	STR_ID[I_LOG]="I_LOG";
	STR_ID[I_CK_V33]="I_CK_V33";
	STR_ID[I_LANG]="I_LANG";
	STR_ID[I_MAXERR]="I_MAXERR";
	STR_ID[I_ADDR]="I_ADDR";
	STR_ID[I_USBD]="I_USBD";
	STR_ID[I_I2CDATAOUT]="I_I2CDATAOUT";
	STR_ID[I_I2CDATATR]="I_I2CDATATR";
	STR_ID[I_I2C_NB]="I_I2C_NB";
	STR_ID[I_I2CMode]="I_I2CMode";
	STR_ID[I_I2CSend]="I_I2CSend";
	STR_ID[I_I2CReceive]="I_I2CReceive";
	STR_ID[I_TestHW]="I_TestHW";
	STR_ID[I_TestHWB]="I_TestHWB";
	STR_ID[I_TestMSG]="I_TestMSG";
	STR_ID[I_IO_Enable]="I_IO_Enable";
	STR_ID[I_IO_Commands]="I_IO_Commands";
	STR_ID[I_SPIMEM]="I_SPIMEM";
	STR_ID[I_I2CMEM]="I_I2CMEM";
	STR_ID[I_UWMEM]="I_UWMEM";
	STR_ID[I_OWMEM]="I_OWMEM";
	STR_ID[I_OWDEV]="I_OWDEV";
	STR_ID[I_UNIOMEM]="I_UNIOMEM";
	STR_ID[I_3V3REQUIRED]="I_3V3REQUIRED";
	STR_ID[I_PIC_FORCECW]="I_PIC_FORCECW";
	STR_ID[I_AT_FUSE]="I_AT_FUSE";
	STR_ID[I_AT_FUSEH]="I_AT_FUSEH";
	STR_ID[I_AT_FUSEX]="I_AT_FUSEX";
	STR_ID[I_AT_LOCK]="I_AT_LOCK";
	STR_ID[I_W_LANGFILE]="I_W_LANGFILE";
	STR_ID[I_AT_FUSELF]="I_AT_FUSELF";
	STR_ID[I_AT_COMM]="I_AT_COMM";
	STR_ID[I_WAITS1]="I_WAITS1";
	STR_ID[I_PRESSS1]="I_PRESSS1";
	STR_ID[S_WaitS1W]="S_WaitS1W";
	STR_ID[S_WaitS1R]="S_WaitS1R";
	STR_ID[I_ICD_ENABLE]="I_ICD_ENABLE";
	STR_ID[I_ICD_ADDRESS]="I_ICD_ADDRESS";
	STR_ID[I_LOAD_COFF]="I_LOAD_COFF";
	STR_ID[I_SHOW_PC]="I_SHOW_PC";
	STR_ID[I_SHOW_STATUS]="I_SHOW_STATUS";
	STR_ID[I_SHOW_BANK0]="I_SHOW_BANK0";
	STR_ID[I_SHOW_BANK1]="I_SHOW_BANK1";
	STR_ID[I_SHOW_BANK2]="I_SHOW_BANK2";
	STR_ID[I_SHOW_BANK3]="I_SHOW_BANK3";
	STR_ID[I_SHOW_EE]="I_SHOW_EE";
	STR_ID[I_STOP]="I_STOP";
	STR_ID[I_ICD_RUN]="I_ICD_RUN";
	STR_ID[I_ICD_HALT]="I_ICD_HALT";
	STR_ID[I_ICD_STEP]="I_ICD_STEP";
	STR_ID[I_ICD_STEPOVER]="I_ICD_STEPOVER";
	STR_ID[I_ICD_STOP]="I_ICD_STOP";
	STR_ID[I_ICD_REFRESH]="I_ICD_REFRESH";
	STR_ID[I_ICD_CMD]="I_ICD_CMD";
	STR_ID[I_ICD_HELP]="I_ICD_HELP";
	STR_ID[I_ICD_SOURCE]="I_ICD_SOURCE";
	STR_ID[I_ICD_STATUS]="I_ICD_STATUS";
	STR_ID[I_ICD_HELP_TXT]="I_ICD_HELP_TXT";
	STR_ID[I_GUI_CMD_HELP]="I_GUI_CMD_HELP";
	STR_ID[L_HELP]="L_HELP";
	STR_ID[L_OPTERR]="L_OPTERR";
	STR_ID[L_INFO1]="L_INFO1";
	STR_ID[L_INFO2]="L_INFO2";
	STR_ID[L_UNKNOWN]="L_UNKNOWN";
	STR_ID[L_NAME]="L_NAME";
	STR_ID[L_DEV_RO]="L_DEV_RO";
	STR_ID[L_DEV_RW]="L_DEV_RW";

	strings_it[S_NL]=NL;
	strings_it[S_noprog]="Programmatore non rilevato" NL;
	strings_it[S_prog]="Programmatore rilevato" NL;
	strings_it[S_progDev]="Programmatore rilevato su %s" NL;
	strings_it[S_DevPermission]="Impossibile aprire %s, assicurati di avere i diritti di lettura" NL;
	strings_it[S_nodev_r]="Dispositivo non supportato in lettura" NL;
	strings_it[S_nodev_w]="Dispositivo non supportato in scrittura" NL;
	strings_it[S_nodev]="Dispositivo sconosciuto" NL;
	strings_it[S_DevMismatch]="Attenzione: il dispositivo è diverso da quello specificato nei dati" NL;
	strings_it[S_noV33reg]="Regolatore a 3,3V non rilevato" NL;
	strings_it[S_progver]="Versione firmware %d.%d.%d" NL;
	strings_it[S_progid]="ID Hardware: %d.%d.%d";
	strings_it[S_FWver2old]="Questo firmware è troppo vecchio. E' richiesta la versione %s" NL;
	strings_it[S_lowUsbV]="Tensione USB troppo bassa (VUSB<4.5V)" NL;
	strings_it[S_HiVPP]="Attenzione: tensione regolatore troppo alta" NL NL;
	strings_it[S_LowVPP]="Attenzione: tensione regolatore troppo bassa" NL NL;
	strings_it[S_reg]="Regolatore avviato e funzionante dopo %dms VPP=%.1fV" NL NL;
	strings_it[S_dev_det]="Dispositivo rilevato: vid=0x%04X pid=0x%04X" NL "Percorso: %s" NL;
	strings_it[S_file]="File Hex8 (*.hex)|*.hex|Tutti i file (*.*)|*.*||";
	strings_it[S_file2]="File Hex8 (*.hex)|*.hex|File binari (*.bin)|*.bin|Tutti i file (*.*)|*.*||";
	strings_it[S_fileEEP]="File Hex8 (*.hex *.eep)|*.hex;*.eep|Tutti i file (*.*)|*.*||";
	strings_it[S_noDLL]="Impossibile aprire hid.dll";
	strings_it[S_openEEfile]="Apri file EEPROM";
	strings_it[S_saveEEfile]="Salva file EEPROM";
	strings_it[S_IhexShort]="Linea Ihex8 troppo corta:" NL "%s" NL;
	strings_it[S_IhexChecksum]="Errore di checksum nella linea Ihex8:" NL "%s" NL;
	strings_it[S_InvHandle]="Handle invalido" NL;
	strings_it[S_LogFile]="Registro.txt";
	strings_it[S_FileSaved]="Salvato %s" NL;
						//
	strings_it[S_HVICSP]="ICSP ad alta tensione" NL;
	strings_it[S_StartRead]="Inizio lettura..." NL;
	strings_it[S_Read]="Lettura ... ";
	strings_it[S_CodeReading1]="Lettura codice ... ";
	strings_it[S_CodeReading]="Lettura: %3d%%, ind. %03X";
	strings_it[S_CodeReading2]="Lettura: %3d%%, ind. %05X";
	strings_it[S_ReadEnd]="Lettura completata: %d word" NL;
	strings_it[S_ReadID_CONFIG]="Lettura ID e CONFIG";
	strings_it[S_Read_CONFIG_A]="Lettura area CONFIG ... ";
	strings_it[S_Read_EXE_A]="Lettura area Executive ... ";
	strings_it[S_ReadEE]="Lettura area EEPROM ... ";
	strings_it[S_StartErase]="Cancellazione ... ";
	strings_it[S_Writing]="Inizio scrittura..." NL;
	strings_it[S_StartCodeProg]="Scrittura codice ... ";
	strings_it[S_CodeWriting]="Scrittura: %3d%%, ind. %03X";
	strings_it[S_CodeWriting2]="Scrittura: %3d%%, ind. %04X";
	strings_it[S_IDW]="Scrittura ID ... ";
	strings_it[S_ConfigW]="Scrittura CONFIG ... ";
	strings_it[S_ConfigAreaW]="Scrittura area CONFIG ... ";
	strings_it[S_EEAreaW]="Scrittura area EEPROM ... ";
	strings_it[S_FuseAreaW]="Scrittura area FUSE ... ";
	strings_it[S_CodeV]="Verifica codice ... ";
	strings_it[S_CodeV2]="Verifica: %d%%, ind. %04X";
	strings_it[S_IDV]="Verifica ID ... ";
	strings_it[S_ConfigV]="Verifica CONFIG ... ";
	strings_it[S_EEV]="Verifica EEPROM ... ";
	strings_it[S_IntW]="Scrittura interrotta" NL;
	strings_it[S_TotErr]="completata, %d errori totali" NL;
	strings_it[S_ComplErr]="completata, %d errori" NL;
	strings_it[S_Compl]="completata" NL;
	strings_it[S_Ready]="pronto";
	strings_it[S_End]= NL "Fine (%.2f s)" NL NL;
	strings_it[S_EndErr]= NL "Fine (%.2f s) %d %s" NL NL;
	strings_it[S_ProtErase]="Il dispositivo è protetto, sovrascrivo la protezione." NL;
	strings_it[S_Inohex]="Errore: '%.4s' non sembra molto esadecimale, vero?" NL;
	strings_it[S_ReadErr]="Errore in lettura: word richieste=%d, lette=%d" NL;
	strings_it[S_ReadCodeErr]="Errore in lettura area programma, richieste %d word, lette %d" NL;
	strings_it[S_ReadCodeErr2]="Errore in lettura area programma, richiesti %d byte, letti %d" NL;
	strings_it[S_ReadEEErr]="Errore in lettura area EEPROM, richiesti %d byte, letti %d" NL;
	strings_it[S_ConfigErr]="Errore in lettura area configurazione, richieste %d word, lette %d" NL;
	strings_it[S_ReadConfigErr]="Errore in lettura area configurazione, richiesti %d byte, letti %d" NL;
	strings_it[S_ErrOsccal]="Errore in lettura OSCCAL e BKOSCCAL";
	strings_it[S_CodeWError]="Errore in scrittura all'indirizzo %3X: scritto %03X, letto %03X" NL;
	strings_it[S_CodeWError2]="Errore in scrittura all'indirizzo %3X: scritto %04X, letto %04X" NL;
	strings_it[S_CodeWError3]="Errore in scrittura all'indirizzo %4X: scritto %02X, letto %02X" NL;
	strings_it[S_CodeWError4]="Errore in scrittura area programma, richiesti %d byte, scritti %d" NL;
	strings_it[S_ConfigWErr]="Errore in scrittura config: scritto %03X, letto %03X" NL;
	strings_it[S_ConfigWErr2]="Errore in scrittura CONFIG";
	strings_it[S_ConfigWErr3]="Errore in scrittura config: scritto %04X, letto %04X" NL;
	strings_it[S_WErr1]="Errore in scrittura %s: scritto %02X, letto %02X" NL;
	strings_it[S_WErr2]="Errore in scrittura %s: scritto %04X, letto %04X" NL;
	strings_it[S_IDErr]="Errore in scrittura ID%d: scritto %04X, letto %04X" NL;
	strings_it[S_ICDErr]="Errore in scrittura ICD (0x%X): scritto %04X, letto %04X" NL;
	strings_it[S_Calib1Err]="Errore in scrittura Calib1: scritto %04X, letto %04X" NL;
	strings_it[S_Calib2Err]="Errore in scrittura Calib2: scritto %04X, letto %04X" NL;
	strings_it[S_CodeVError]="Errore in verifica, indirizzo %04X (%d), scritto %02X, letto %02X" NL;
	strings_it[S_CodeVError2]="Errore in verifica area programma, richiesti %d byte, letti %d" NL;
	strings_it[S_CodeVError3]="Errore in verifica area programma, richieste %d word, lette %d" NL;
	strings_it[S_ErrSing]="errore";
	strings_it[S_ErrPlur]="errori";
	strings_it[S_MaxErr]="Superato il massimo numero di errori (%d), scrittura interrotta" NL;
	strings_it[S_I2CInitErr]="Errore di inizializzazione bus I2C" NL;
	strings_it[S_I2CAckErr]="Errore di acknowledge I2C" NL;
	strings_it[S_ComErr]="Errore di comunicazione" NL;
	strings_it[S_InsErr]="Istruzione sconosciuta" NL;
	strings_it[S_SyncErr]="Errore di sincronizzazione" NL;
	strings_it[S_HVregErr]="Errore sul regolatore HV" NL;
	strings_it[S_WarnFlashSize]="Attenzione, la dimensione della flash non corrisponde a quella del dispositivo scelto" NL;
						//
	strings_it[S_Log1]="i=%d(0x%X), k=%d(0x%X)  NumberOfBytesRead=%d" NL;
	strings_it[S_Log2]="i=%d, k=%d, errori=%d, NumberOfBytesRead=%d" NL NL;
	strings_it[S_Log3]="i=%d, k2=%d NumberOfBytesRead=%d" NL;
	strings_it[S_Log4]="Area config. 	errori=%d   NumberOfBytesRead=%d" NL;
	strings_it[S_Log5]="dim=%d(0x%X), dimx=%d(0x%X), dimx/wbuf=%d " NL NL;
	strings_it[S_Log6]="i=%d(0x%X),  NumberOfBytesRead=%d" NL NL;
	strings_it[S_Log7]="i=%d(0x%X), k=%d(0x%X)" NL;
	strings_it[S_Log8]="i=%d(0x%X), k=%d(0x%X), errori=%d" NL;
	strings_it[S_Log9]="Area config. 	errori=%d" NL;
						//
	strings_it[S_comTimeout]="Timeout comunicazione" NL;
	strings_it[S_EraseTimeout]="Timeout in cancellazione" NL;
	strings_it[S_ConfigTimeout]="Timeout in lettura config" NL;
	strings_it[S_ConfigTimeout2]="Timeout in lettura area config" NL;
	strings_it[S_CodeTimeout]="Timeout in lettura, indirizzo %02X (%d)" NL;
	strings_it[S_CodeTimeout2]="Timeout in lettura, indirizzo %04X (%d)" NL;
	strings_it[S_OsccalTimeout]="Timeout in lettura osccal" NL;
	strings_it[S_EETimeout]="Timeout in lettura EEPROM, indirizzo %02X (%d)" NL;
	strings_it[S_ConfigWTimeout]="Timeout in verifica config" NL;
	strings_it[S_CodeWTimeout]="Timeout in scrittura, indirizzo %02X (%d)" NL;
	strings_it[S_ConfigWTimeout2]="Timeout in scrittura area config" NL;
	strings_it[S_EEWTimeout]="Timeout in scrittura EEPROM, indirizzo %03X (%d)" NL;
	strings_it[S_IDWTimeout]="Timeout in scrittura ID" NL;
	strings_it[S_ConfigNWTimeout]="Timeout in scrittura CONFIG%d" NL;
	strings_it[S_CodeVTimeout]="Timeout in verifica, indirizzo %04X (%d)" NL;
	strings_it[S_ConfigVTimeout]="Timeout in verifica area config" NL;
	strings_it[S_ProgModeTimeout]="Timeout in entrata program mode" NL;
	strings_it[S_ProgModeXTimeout]="Timeout in uscita programmazione" NL;
	strings_it[S_LogTimeout]="Timeout" NL;
						//
	strings_it[S_CodeMem]= NL "memoria CODICE:" NL;
	strings_it[S_EEMem]= NL "memoria EEPROM:" NL;
	strings_it[S_IDMem]= NL "memoria ID:" NL;
	strings_it[S_ConfigMem]= NL "memoria CONFIG:" NL;
	strings_it[S_ConfigResMem]= NL "Memoria configurazione e riservata:" NL;
	strings_it[S_CodeMem2]= NL "Memoria programma:" NL;
	strings_it[S_ExeMem]= NL "memoria Executive:" NL;
						//
	strings_it[S_LPOsc]="LP oscillator" NL;
	strings_it[S_XTOsc]="XT oscillator" NL;
	strings_it[S_IntOsc]="Internal osc." NL;
	strings_it[S_RCOsc]="RC oscillator" NL;
	strings_it[S_WDTON]="WDT ON" NL;
	strings_it[S_WDTOFF]="WDT OFF" NL;
	strings_it[S_CPOFF]="Code protection OFF" NL;
	strings_it[S_CPON]="Code protection ON" NL;
	strings_it[S_MCLRON]="Master clear ON" NL;
	strings_it[S_MCLROFF]="Master clear OFF" NL;
	strings_it[S_ChipID]="ID%d: 0x%03X   ID%d: 0x%03X" NL;
	strings_it[S_ChipID2]="ID%d: 0x%02X   ID%d: 0x%02X" NL;
	strings_it[S_BKOsccal]="Backup OSCCAL: 0x%03X" NL;
	strings_it[S_Osccal]="OSCCAL: 0x%03X" NL;
	strings_it[S_DevID]="DevID: 0x%04X" NL;
	strings_it[S_DevID2]="DevID: 0x%02X%02X" NL;
	strings_it[S_DevREV]="DevREV: 0x%04X" NL;
	strings_it[S_ConfigWord]="Configuration word: 0x%03X" NL;
	strings_it[S_Config2Cal1]="Configuration word2 o calibration word 1: 0x%03X" NL;
	strings_it[S_ConfigWord2]="Configuration word2: 0x%04X" NL;
	strings_it[S_ConfigWordX]="Configuration word %d: 0x%04X" NL;
	strings_it[S_ConfigWordH]="CONFIG%dH: 0x%02X\t";
	strings_it[S_ConfigWordL]="CONFIG%dL: 0x%02X" NL;
	strings_it[S_CalibWord1]="Calibration word1: 0x%04X" NL;
	strings_it[S_Calib1_2]="Calibration word 1 or 2: 0x%04X" NL;
	strings_it[S_CalibWord2]="Calibration word2: 0x%04X" NL;
	strings_it[S_CalibWordX]="Calibration word %d: 0x%04X" NL;
	strings_it[S_Protected]="Dispositivo protetto";
						//
	strings_it[S_CodeLim]="Dimensione programma oltre i limiti" NL;
	strings_it[S_EELim]="Dimensione eeprom oltre i limiti" NL;
	strings_it[S_ConfigLim]="Dimensione area config oltre i limiti" NL;
	strings_it[S_WbufLim]="Dimensione buffer scrittura oltre i limiti" NL;
	strings_it[S_MaxRetry]="Max tentativi di scrittura: %d" NL;
						//
	strings_it[S_NoCode]="Area dati vuota" NL;
	strings_it[S_NoCode2]="Niente da scrivere" NL;
	strings_it[S_NoCalibW]="Impossibile trovare i dati di calibrazione" NL;
	strings_it[S_NoEEMem]="Impossibile trovare i dati EEPROM" NL;
	strings_it[S_NoConfigW]="Impossibile leggere la config word" NL;
	strings_it[S_NoConfigW2]="Impossibile trovare la locazione CONFIG (0xFFF)" NL;
	strings_it[S_NoConfigW3]="Impossibile trovare la locazione CONFIG (0x2007)" NL "Fine" NL;
	strings_it[S_NoConfigW4]="Impossibile trovare la locazione CONFIG (0x2008)" NL "Fine" NL;
	strings_it[S_NoConfigW5]="Impossibile trovare la locazione CONFIG (0x8007-0x8008)" NL "Fine" NL;
	strings_it[S_NoConfigW6]="Impossibile trovare la locazione CONFIG (0x8007-0x800B)" NL "Fine" NL;
	strings_it[S_Empty]="(vuoto)" NL;
	strings_it[S_NextIns]="Prossima istruzione";
	strings_it[S_ForceConfigW]="Forzo config word" NL;
	strings_it[S_ForceConfigWx]="Forzo config word%d [0x%04X]=0x%04X" NL;
						//
	strings_it[I_CANCEL]="A_nnulla";
	strings_it[I_OPEN]="_Apri";
	strings_it[I_SAVE]="_Salva";
	strings_it[I_Fopen]="Apri file";
	strings_it[I_Fsave]="Salva file";
	strings_it[I_DevR]="Leggi dispositivo";
	strings_it[I_DevW]="Scrivi dispositivo";
	strings_it[I_Info]="Informazioni";
	strings_it[I_Data]="Dati";
	strings_it[I_Opt]="Opzioni";
	strings_it[I_Dev]="Dispositivo";
	strings_it[I_Type]="Tipo";
	strings_it[I_TypeFilt]="Filtra per tipo";
	strings_it[I_Filt]="Filtro";
	strings_it[I_Speed]="Velocità";
	strings_it[I_ReadRes]="Leggi area riservata";
	strings_it[I_ID_BKo_W]="Programma ID e BKosccal";
	strings_it[I_EE]="Leggi e programma EEPROM";
	strings_it[I_CalW]="Programma Calib1 e 2";
	strings_it[I_OSCW]="Scrivi OSCCal";
	strings_it[I_OSC]="OSCCal";
	strings_it[I_BKOSC]="Backup OSCCal";
	strings_it[I_OSCF]="Da File";
	strings_it[I_CONN]="Riconnetti";
	strings_it[I_QUIT]="Quit";
	strings_it[I_LOG]="Registra eventi su file";
	strings_it[I_CK_V33]="Salta controllo regolatore a 3,3V";
	strings_it[I_LANG]="Lingua";
	strings_it[I_MAXERR]="Max errori in scrittura";
	strings_it[I_ADDR]="Indirizzo";
	strings_it[I_USBD]="Ritardo minimo USB (ms)";
	strings_it[I_I2CDATAOUT]="Dati da scrivere";
	strings_it[I_I2CDATATR]="Dati trasferiti";
	strings_it[I_I2C_NB]="Byte da scrivere/leggere";
	strings_it[I_I2CMode]="Modalità";
	strings_it[I_I2CSend]="Invia";
	strings_it[I_I2CReceive]="Ricevi";
	strings_it[I_TestHW]="Test hardware: rimuovere eventuali dispositivi dal programmatore";
	strings_it[I_TestHWB]="Test hardware";
	strings_it[I_TestMSG]="Verifica sul programmatore il valore delle seguenti tensioni:";
	strings_it[I_IO_Enable]="Abilita IO";
	strings_it[I_IO_Commands]="Comandi manuali";
	strings_it[I_SPIMEM]="Memoria SPI";
	strings_it[I_I2CMEM]="Memoria I2C";
	strings_it[I_UWMEM]="Memoria Microwire";
	strings_it[I_OWMEM]="Memoria OneWire";
	strings_it[I_OWDEV]="Dispositivo OneWire";
	strings_it[I_UNIOMEM]="Memoria UNI/O";
	strings_it[I_3V3REQUIRED]="adattatore 3,3V";
	strings_it[I_PIC_FORCECW]="Forza config word";
	strings_it[I_AT_FUSE]="Scrivi Fuse Low";
	strings_it[I_AT_FUSEH]="Scrivi Fuse High";
	strings_it[I_AT_FUSEX]="Scrivi Extended Fuse";
	strings_it[I_AT_LOCK]="Scrivi Lock";
	strings_it[I_AT_FUSELF]="Scrivi Fuse Low @3kHz";
	strings_it[I_AT_COMM]="Comunicazione @ %.0f kbps" NL;
	strings_it[I_W_LANGFILE]="Scrivi file linguaggio";
	strings_it[I_WAITS1]="Inizia a scrivere/leggere con S1";
	strings_it[I_PRESSS1]="Premi S1 per iniziare" NL;
	strings_it[S_WaitS1W]="Premi S1 per programmare, un tasto per uscire" NL;
	strings_it[S_WaitS1R]="Premi S1 per leggere, un tasto per uscire" NL;
	strings_it[I_ICD_ENABLE]="Abilita ICD";
	strings_it[I_ICD_ADDRESS]="Indirizzo routine ICD";
	strings_it[I_LOAD_COFF]="Carica file COFF ...";
	strings_it[I_SHOW_PC]="Mostra Program Counter";
	strings_it[I_SHOW_STATUS]="Mostra Status";
	strings_it[I_SHOW_BANK0]="Mostra banco memoria 0";
	strings_it[I_SHOW_BANK1]="Mostra banco memoria 1";
	strings_it[I_SHOW_BANK2]="Mostra banco memoria 2";
	strings_it[I_SHOW_BANK3]="Mostra banco memoria 3";
	strings_it[I_SHOW_EE]="Mostra EEPROM";
	strings_it[I_STOP]="Fermato" NL;
	strings_it[I_ICD_RUN]="Vai/continua";
	strings_it[I_ICD_HALT]="Ferma";
	strings_it[I_ICD_STEP]="Passo";
	strings_it[I_ICD_STEPOVER]="Passo sopra";
	strings_it[I_ICD_STOP]="Arresta";
	strings_it[I_ICD_REFRESH]="Rinfresca";
	strings_it[I_ICD_CMD]="linea di comando";
	strings_it[I_ICD_HELP]="Aiuto";
	strings_it[I_ICD_SOURCE]="Sorgente";
	strings_it[I_ICD_STATUS]="Status";
	strings_it[I_ICD_HELP_TXT]=
		"Guida ICD" NL NL
		"Doppio click sul nome di una variabile per" NL
		"aggiungerla alla lista di osservazione;" NL
		"doppio click nuovamente per rimuoverla." NL
		"Scorciatoie:" NL
		" F1 guida" NL
		" F5 ferma" NL
		" F7 passo" NL
		" F8 passo sopra" NL
		" F9 vai" NL
		"Guida comandi:" NL
		" variabile=x         imposta variabile a x" NL
		" [var ind.]=x        imposta a x la variabile all'indirizzo ind." NL
		" help                guida comandi" NL
		" break <ind>         imposta breakpoint all'indirizzo <ind>" NL
		" freeze [on,off]     freeze periferiche" NL
		" h[alt]              ferma esecuzione" NL
		" list <ind>          mostra codice a partire da <ind>" NL
		" p[rint] 0x<ind>     osserva variabile all'indirizzo <ind>" NL
		" p[rint] <var>       osserva variabile <var>" NL
		" p[rint] bank <b>    osserva i registri nel banco <b>" NL
		" p[rint] p <ind>     osserva la memoria programma all'indirizzo <ind>" NL
		" p[rint] ee <ind>    osserva la memoria eeprom all'indirizzo <ind>" NL
		" p[rint] ee          osserva tutta la memoria eeprom" NL
		" r[un]               vai" NL
		" s[tep] [n]          passo singolo [n volte]" NL
		" step over / ss [n]  passo sopra le chiamate [n volte]" NL
		" version             leggi versione debugger" NL
		" w[atch] variabile   aggiungi/rimuovi variabile alla lista di osservazione" NL
		" w[atch] 0x<ind>     aggiungi/rimuovi variabile all'indirizzo <ind> alla lista di osservazione" NL;
	strings_it[I_GUI_CMD_HELP]=
		"Opzioni da linea di comando:" NL
		" ?,h,help            guida comandi" NL
		" command <messaggio> invia <messaggio> al programmatore ed esci." NL
		"                     Il messaggio è composto da byte esadecimali separati da uno spazio," NL
		"                     fino a un massimo di 64; quelli non specificati vengono posti a 0" NL
		" lang <lingua>       carica <lingua>" NL
		" langfile            scrivi tutte le stringhe su file" NL;
	strings_it[L_HELP]=
		"op [opzioni]" NL NL
		"-BKosccal                   carica BKosccal da file" NL
		"-calib                      carica calibration da file" NL
		"-command <messaggio>        invia <messaggio> al programmatore ed esci." NL
		"                            Il messaggio è composto da byte esadecimali separati da uno spazio," NL
		"                            fino a un massimo di 64; quelli non specificati vengono posti a 0" NL
		"-cwX <cw>                   forza config word X [1-7]" NL
		"-d, device <disp.>          dispositivo" NL
		"-ee                         usa eeprom" NL
		"-err <max>                  imposta massimo errori in scrittura" NL
		"-fuse <val>                 scrive il byte fuse low (solo Atmel)" NL
		"-fuseh <val>                scrive il byte fuse high (solo Atmel)" NL
		"-fusex <val>                scrive il byte extended fuse (solo Atmel)" NL
		"-fuse3k <val>               scrive il byte fuse low a 3kHz (solo Atmel)" NL
		"-h, help                    guida" NL
		"-HWtest                     test hardware" NL
		"-i, info                    informazioni programmatore" NL
		"-icd <val>                  abilita ICD (goto indirizzo)" NL
		"-i2c_r <N Ctr Ind>          leggi N byte dal bus I2C" NL
		"-i2c_r2 <N Ctr Ind(2)>      leggi N byte dal bus I2C (indirizzi 16b)" NL
		"-i2c_w <N Ctr Ind Dati>     scrivi N byte sul bus I2C" NL
		"-i2c_w2 <N Ctr Ind(2) Dati> scrivi N byte sul bus I2C (indirizzi 16b)" NL
		"-i2cspeed <s>               cambia velocità I2C: 0=100k,1=200k,2=500k,3=800k" NL
		"-id                         usa ID" NL
		"-l, log [=file]             salva registro" NL
		"-lang <lingua>              carica <lingua>" NL
		"-langfile                   scrivi tutte le stringhe su file" NL
		"-lock <val>                 scrive il byte lock (solo Atmel)" NL
		"-mode <mode>                SPI mode: 00,01,10,11" NL
		"-nolvcheck                  salta controllo regolatore a 3,3V" NL
		"-osccal                     carica osccal da file invece che dal valore salvato prima della cancellazione" NL
		"-p, path <percorso>         percorso programmatore [/dev/usb/hiddev0]" NL
		"-pid <pid>                  pid programmatore [0x100]" NL
		"-r, reserved                leggi area riservata" NL
		"-rep <n>                    dimensione report [64]" NL
		"-s1, S1                     Programmazione multipla comandata da S1" NL
		"-s, save <file>             salva su file Ihex" NL
		"-se, saveEE <file>          salva EEPROM su file Ihex (solo ATxxxx)" NL
		"-spi_r <N>                  leggi N byte dal bus SPI" NL
		"-spi_w <N Dati>             scrivi N byte sul bus SPI" NL
		"-spispeed <s>               cambia velocità SPI: 0=100k,1=200k,2=300k,3=500k" NL
		"-support                    dispositivi supportati" NL
		"-use_BKosccal               copia BKosccal su osccal" NL
		"-v, version                 versione" NL
		"-vid <vid>                  vid programmatore [0x4D8]" NL
		"-w, write <file>            scrivi file Ihex" NL
		"-we, writeEE <file>         scrivi EEPROM file Ihex (solo ATxxxx)" NL
		"" NL
		"es.  op -d 12F683 -s prova.hex" NL;
	strings_it[L_OPTERR]="Errore nelle opzioni" NL;
	strings_it[L_INFO1]="vid 0x%04hx pid 0x%04hx versione 0x%04hx ";
	strings_it[L_INFO2]= NL "bus: %d devnum: %d ifnum: %d" NL;
	strings_it[L_UNKNOWN]="sconosciuto";
	strings_it[L_NAME]="Il dispositivo su %s si chiama %s" NL;
	strings_it[L_DEV_RO]="Dispositivi supportati in sola lettura:";
	strings_it[L_DEV_RW]="Dispositivi supportati in lettura e scrittura:";

// ENGLISH strings
	strings_en[S_NL]=NL;
	strings_en[S_noprog]="Programmer not detected" NL;
	strings_en[S_prog]="Programmer detected" NL;
	strings_en[S_progDev]="Programmer detected on %s" NL;
	strings_en[S_DevPermission]="Cannot open %s, make sure you have read permission on it" NL;
	strings_en[S_nodev_r]="Device not supported for reading" NL;
	strings_en[S_nodev_w]="Device not supported for writing" NL;
	strings_en[S_nodev]="Unknown device" NL;
	strings_en[S_DevMismatch]="Warning: the device is different from what specified in source data" NL;
	strings_en[S_noV33reg]="3.3V Regulator not detected" NL;
	strings_en[S_progver]="Firmware version %d.%d.%d" NL;
	strings_en[S_progid]="Hardware ID: %d.%d.%d";
	strings_en[S_FWver2old]="This firmware is too old. Version %s is required" NL;
	strings_en[S_lowUsbV]="USB voltage too low (VUSB<4.5V)" NL;
	strings_en[S_HiVPP]="Warning: regulator voltage too high" NL NL;
	strings_en[S_LowVPP]="Warning: regulator voltage too low" NL NL;
	strings_en[S_reg]="Regulator up and running after %dms VPP=%.1fV" NL NL;
	strings_en[S_dev_det]="Device detected: vid=0x%04X pid=0x%04X" NL "Path: %s" NL;
	strings_en[S_file]="Hex8 files (*.hex)|*.hex|All files (*.*)|*.*||";
	strings_en[S_file2]="Hex8 files (*.hex)|*.hex|Binary files (*.bin)|*.bin|All files (*.*)|*.*||";
	strings_en[S_fileEEP]="Hex8 files (*.hex *.eep)|*.hex;*.eep|All files (*.*)|*.*||";
	strings_en[S_noDLL]="Error opening hid.dll";
	strings_en[S_openEEfile]="Open EEPROM file";
	strings_en[S_saveEEfile]="Save EEPROM file";
						//
	strings_en[S_IhexShort]="Intel hex8 line too short:" NL "%s" NL;
	strings_en[S_IhexChecksum]="Intel hex8 checksum error in line:" NL "%s" NL;
	strings_en[S_InvHandle]="Invalid handle" NL;
	strings_en[S_LogFile]="Log.txt";
	strings_en[S_FileSaved]="Saved file %s" NL;
		//
	strings_en[S_HVICSP]="High Voltage ICSP" NL;
	strings_en[S_StartRead]="Reading ..." NL;
	strings_en[S_Read]="Reading ... ";
	strings_en[S_CodeReading1]="Reading code ... ";
	strings_en[S_CodeReading]="Reading: %3d%%, add. %03X";
	strings_en[S_CodeReading2]="Reading: %3d%%, add. %05X";
	strings_en[S_ReadEnd]="Reading completed: %d words" NL;
	strings_en[S_ReadID_CONFIG]="Reading ID and CONFIG";
	strings_en[S_Read_CONFIG_A]="Reading CONFIG area ... ";
	strings_en[S_Read_EXE_A]="Reading Executive area ... ";
	strings_en[S_ReadEE]="Reading EEPROM ... ";
	strings_en[S_StartErase]="Erasing ... ";
	strings_en[S_Writing]="Writing ..." NL;
	strings_en[S_StartCodeProg]="Writing code ... ";
	strings_en[S_CodeWriting]="Writing: %3d%%, add. %03X";
	strings_en[S_CodeWriting2]="Writing: %3d%%, add. %04X";
	strings_en[S_IDW]="Writing ID ... ";
	strings_en[S_ConfigW]="Writing CONFIG ... ";
	strings_en[S_ConfigAreaW]="Writing CONFIG area ... ";
	strings_en[S_EEAreaW]="Writing EEPROM ... ";
	strings_en[S_FuseAreaW]="Writing FUSE area ... ";
	strings_en[S_CodeV]="Verifying code ... ";
	strings_en[S_CodeV2]="Verifying: %d%%, add. %04X";
	strings_en[S_IDV]="Verifying ID ... ";
	strings_en[S_ConfigV]="Verifying CONFIG ... ";
	strings_en[S_EEV]="Verifying EEPROM ... ";
	strings_en[S_IntW]="Write interrupted" NL;
	strings_en[S_TotErr]="completed, %d total errors" NL;
	strings_en[S_ComplErr]="completed, %d errors" NL;
	strings_en[S_Compl]="completed" NL;
	strings_en[S_Ready]="ready";
	strings_en[S_End]= NL "End (%.2f s)" NL NL;
	strings_en[S_EndErr]= NL "End (%.2f s) %d %s" NL NL;
	strings_en[S_ProtErase]="Device protected, overriding protection." NL;
		//
	strings_en[S_Inohex]="Error: '%.4s' doesn't look very hexadecimal, right?" NL;
	strings_en[S_ReadErr]="Read error: requested words=%d, read=%d" NL;
	strings_en[S_ReadCodeErr]="Error reading code area, requested %d words, read %d" NL;
	strings_en[S_ReadCodeErr2]="Error reading code area, requested %d bytes, read %d" NL;
	strings_en[S_ReadEEErr]="Error reading EEPROM area, requested %d bytes, read %d" NL;
	strings_en[S_ConfigErr]="Error reading configuration area, requested %d words, read %d" NL;
	strings_en[S_ReadConfigErr]="Error reading configuration area, requested %d bytes, read %d" NL;
	strings_en[S_ErrOsccal]="Error reading OSCCAL and BKOSCCAL";
	strings_en[S_CodeWError]="Error writing address %3X: written %03X, read %03X" NL;
	strings_en[S_CodeWError2]="Error writing address %3X: written %04X, read %04X" NL;
	strings_en[S_CodeWError3]="Error writing address %4X: written %02X, read %02X" NL;
	strings_en[S_CodeWError4]="Error writing code area, requested %d bytes, written %d" NL;
	strings_en[S_ConfigWErr]="Error writing config area: written %03X, read %03X" NL;
	strings_en[S_ConfigWErr2]="Error writing CONFIG";
	strings_en[S_ConfigWErr3]="Error writing config area: written %04X, read %04X" NL;
	strings_en[S_WErr1]="Error writing %s: written %02X, read %02X" NL;
	strings_en[S_WErr2]="Error writing %s: written %04X, read %04X" NL;
	strings_en[S_IDErr]="Error writing ID%d: written %04X, read %04X" NL;
	strings_en[S_ICDErr]="Error writing ICD (0x%X): written %04X, read %04X" NL;
	strings_en[S_Calib1Err]="Error writing Calib1: written %04X, read %04X" NL;
	strings_en[S_Calib2Err]="Error writing Calib2: written %04X, read %04X" NL;
	strings_en[S_CodeVError]="Error verifying address %04X (%d), written %02X, read %02X" NL;
	strings_en[S_CodeVError2]="Error verifying code area, requested %d bytes, read %d" NL;
	strings_en[S_CodeVError3]="Error verifying code area, requested %d words, read %d" NL;
	strings_en[S_ErrSing]="error";
	strings_en[S_ErrPlur]="errors";
	strings_en[S_MaxErr]="Exceeded maximum number of errors (%d), write interrupted" NL;
	strings_en[S_I2CInitErr]="Error initializing I2C bus" NL;
	strings_en[S_I2CAckErr]="I2C acknowledge error" NL;
	strings_en[S_ComErr]="Communication error" NL;
	strings_en[S_InsErr]="Unknown instruction" NL;
	strings_en[S_SyncErr]="Synchronization error" NL;
	strings_en[S_HVregErr]="HV regulator error" NL;
		//
	strings_en[S_Log1]="i=%d(0x%X), k=%d(0x%X)  NumberOfBytesRead=%d" NL;
	strings_en[S_Log2]="i=%d, k=%d, errors=%d, NumberOfBytesRead=%d" NL NL;
	strings_en[S_Log3]="i=%d, k2=%d NumberOfBytesRead=%d" NL;
	strings_en[S_Log4]="Config area. 	errors=%d   NumberOfBytesRead=%d" NL;
	strings_en[S_Log5]="dim=%d(0x%X), dimx=%d(0x%X), dimx/wbuf=%d " NL NL;
	strings_en[S_Log6]="i=%d(0x%X),  NumberOfBytesRead=%d" NL NL;
	strings_en[S_Log7]="i=%d(0x%X), k=%d(0x%X)" NL;
	strings_en[S_Log8]="i=%d(0x%X), k=%d(0x%X), errors=%d" NL;
	strings_en[S_Log9]="Config area. 	errors=%d" NL;
		//
	strings_en[S_comTimeout]="Communication timeout" NL;
	strings_en[S_EraseTimeout]="Timeout during erase" NL;
	strings_en[S_ConfigTimeout]="Timeout reading CONFIG" NL;
	strings_en[S_ConfigTimeout2]="Timeout reading config area" NL;
	strings_en[S_CodeTimeout]="Timeout reading address %02X (%d)" NL;
	strings_en[S_CodeTimeout2]="Timeout reading address %04X (%d)" NL;
	strings_en[S_OsccalTimeout]="Timeout reading osccal" NL;
	strings_en[S_EETimeout]="Timeout reading EEPROM, address %02X (%d)" NL;
	strings_en[S_ConfigWTimeout]="Timeout verifying config" NL;
	strings_en[S_CodeWTimeout]="Timeout writing address %02X (%d)" NL;
	strings_en[S_ConfigWTimeout2]="Timeout writing config area" NL;
	strings_en[S_EEWTimeout]="Timeout writing EEPROM, address %03X (%d)" NL;
	strings_en[S_IDWTimeout]="Timeout writing ID" NL;
	strings_en[S_ConfigNWTimeout]="Timeout writing CONFIG%d" NL;
	strings_en[S_CodeVTimeout]="Timeout verifying address %04X (%d)" NL;
	strings_en[S_ConfigVTimeout]="Timeout verifying config area" NL;
	strings_en[S_ProgModeTimeout]="Timeout entering program mode" NL;
	strings_en[S_ProgModeXTimeout]="Timeout exiting program mode" NL;
	strings_en[S_LogTimeout]="Timeout" NL;
		//
	strings_en[S_CodeMem]= NL "Code memory:" NL;
	strings_en[S_EEMem]= NL "EEPROM memory:" NL;
	strings_en[S_IDMem]= NL "ID:" NL;
	strings_en[S_ConfigMem]= NL "CONFIG:" NL;
	strings_en[S_ConfigResMem]= NL "Configuration and reserved memory:" NL;
	strings_en[S_CodeMem2]= NL "Code memory:" NL;
	strings_en[S_ExeMem]= NL "Executive memory:" NL;
		//
	strings_en[S_LPOsc]="LP oscillator" NL;
	strings_en[S_XTOsc]="XT oscillator" NL;
	strings_en[S_IntOsc]="Internal osc." NL;
	strings_en[S_RCOsc]="RC oscillator" NL;
	strings_en[S_WDTON]="WDT ON" NL;
	strings_en[S_WDTOFF]="WDT OFF" NL;
	strings_en[S_CPOFF]="Code protection OFF" NL;
	strings_en[S_CPON]="Code protection ON" NL;
	strings_en[S_MCLRON]="Master clear ON" NL;
	strings_en[S_MCLROFF]="Master clear OFF" NL;
	strings_en[S_ChipID]="ID%d: 0x%03X   ID%d: 0x%03X" NL;
	strings_en[S_ChipID2]="ID%d: 0x%02X   ID%d: 0x%02X" NL;
	strings_en[S_BKOsccal]="Backup OSCCAL: 0x%03X" NL;
	strings_en[S_Osccal]="OSCCAL: 0x%03X" NL;
	strings_en[S_DevID]="DevID: 0x%04X" NL;
	strings_en[S_DevID2]="DevID: 0x%02X%02X" NL;
	strings_en[S_DevREV]="DevREV: 0x%04X" NL;
	strings_en[S_ConfigWord]="Configuration word: 0x%03X" NL;
	strings_en[S_Config2Cal1]="Configuration word2 or calibration word 1: 0x%03X" NL;
	strings_en[S_ConfigWord2]="Configuration word2: 0x%04X" NL;
	strings_en[S_ConfigWordX]="Configuration word %d: 0x%04X" NL;
	strings_en[S_ConfigWordH]="CONFIG%dH: 0x%02X\t";
	strings_en[S_ConfigWordL]="CONFIG%dL: 0x%02X" NL;
	strings_en[S_CalibWord1]="Calibration word1: 0x%04X" NL;
	strings_en[S_Calib1_2]="Calibration word 1 or 2: 0x%04X" NL;
	strings_en[S_CalibWord2]="Calibration word2: 0x%04X" NL;
	strings_en[S_CalibWordX]="Calibration word %d: 0x%04X" NL;
	strings_en[S_Protected]="protected device";
		//
	strings_en[S_CodeLim]="Code size exceeds limits" NL;
	strings_en[S_EELim]="Eeprom size exceeds limits" NL;
	strings_en[S_ConfigLim]="Config area size exceeds limits" NL;
	strings_en[S_WbufLim]="Write buffer size exceeds limits" NL;
	strings_en[S_MaxRetry]="Max retries in writing: %d" NL;
		//
	strings_en[S_NoCode]="Data area is empty" NL;
	strings_en[S_NoCode2]="Nothing to write" NL;
	strings_en[S_NoCalibW]="Can't find calibration data" NL;
	strings_en[S_NoEEMem]="Can't find EEPROM data" NL;
	strings_en[S_NoConfigW]="Impossibile leggere la config word" NL;
	strings_en[S_NoConfigW2]="Can't find CONFIG location (0xFFF)" NL;
	strings_en[S_NoConfigW3]="Can't find CONFIG location (0x2007)" NL "End" NL;
	strings_en[S_NoConfigW4]="Can't find CONFIG location (0x2008)" NL "End" NL;
	strings_en[S_NoConfigW5]="Can't find CONFIG location (0x8007-0x8008)" NL "End" NL;
	strings_en[S_NoConfigW6]="Can't find CONFIG location (0x8007-0x800B)" NL "End" NL;
	strings_en[S_Empty]="(empty)" NL;
	strings_en[S_NextIns]="Next instruction";
	strings_en[S_ForceConfigW]="Forcing config words" NL;
	strings_en[S_ForceConfigWx]="Forcing config word%d [0x%04X]=0x%04X" NL;
	strings_en[S_WarnFlashSize]="Warning, flash size is different from the expected value" NL;
		//
	strings_en[I_CANCEL]="_Cancel";
	strings_en[I_OPEN]="_Open";
	strings_en[I_SAVE]="_Save";
	strings_en[I_Fopen]="Open file";
	strings_en[I_Fsave]="Save file";
	strings_en[I_DevR]="Read device";
	strings_en[I_DevW]="Write device";
	strings_en[I_Info]="Info";
	strings_en[I_Data]="Data";
	strings_en[I_Opt]="Options";
	strings_en[I_Dev]="Device";
	strings_en[I_Type]="Type";
	strings_en[I_TypeFilt]="Filter by type";
	strings_en[I_Filt]="Filter";
	strings_en[I_Speed]="Speed";
	strings_en[I_ReadRes]="Read reserved area";
	strings_en[I_ID_BKo_W]="Write ID and BKosccal";
	strings_en[I_EE]="Read and write EEPROM";
	strings_en[I_CalW]="Write Calib1 e 2";
	strings_en[I_OSCW]="Write OSCCal";
	strings_en[I_OSC]="OSCCal";
	strings_en[I_BKOSC]="Backup OSCCal";
	strings_en[I_OSCF]="From File";
	strings_en[I_CONN]="Reconnect";
	strings_en[I_QUIT]="Quit";
	strings_en[I_LOG]="Log activity";
	strings_en[I_CK_V33]="Skip 3.3V regulator check";
	strings_en[I_LANG]="Language";
	strings_en[I_MAXERR]="Max errors during write";
	strings_en[I_ADDR]="Address";
	strings_en[I_USBD]="Min USB delay (ms)";
	strings_en[I_I2CDATAOUT]="Data to send";
	strings_en[I_I2CDATATR]="Data transferred";
	strings_en[I_I2C_NB]="Bytes to read/write";
	strings_en[I_I2CMode]="Mode";
	strings_en[I_I2CSend]="Send";
	strings_en[I_I2CReceive]="Receive";
	strings_en[I_TestHW]="Hardware test: remove any device from programmer";
	strings_en[I_TestHWB]="Hardware test";
	strings_en[I_TestMSG]="Verify on the programmer the value of the following voltages:";
	strings_en[I_IO_Enable]="Enable IO";
	strings_en[I_IO_Commands]="Manual commands";
	strings_en[I_SPIMEM]="SPI Memory";
	strings_en[I_I2CMEM]="I2C Memory";
	strings_en[I_UWMEM]="Microwire Memory";
	strings_en[I_OWMEM]="OneWire Memory";
	strings_en[I_OWDEV]="OneWire Device";
	strings_en[I_UNIOMEM]="UNI/O Memory";
	strings_en[I_3V3REQUIRED]="3.3V adapter";
	strings_en[I_PIC_FORCECW]="Force config word";
	strings_en[I_AT_FUSE]="Write Fuse Low";
	strings_en[I_AT_FUSEH]="Write Fuse High";
	strings_en[I_AT_FUSEX]="Write Extended Fuse";
	strings_en[I_AT_LOCK]="Write Lock";
	strings_en[I_AT_FUSELF]="Write Fuse Low @3kHz";
	strings_en[I_AT_COMM]="Communicating @ %.0f kbps" NL;
	strings_en[I_W_LANGFILE]="Write language file";
	strings_en[I_WAITS1]="Wait for S1 before read/write";
	strings_en[I_PRESSS1]="Press S1 to start" NL;
	strings_en[S_WaitS1W]="Press S1 to program, any key to exit";
	strings_en[S_WaitS1R]="Press S1 to read, any key to exit";
	strings_en[I_ICD_ENABLE]="Enable ICD";
	strings_en[I_ICD_ADDRESS]="ICD routine address";
	strings_en[I_LOAD_COFF]="Load COFF file ...";
	strings_en[I_SHOW_PC]="Show Program Counter";
	strings_en[I_SHOW_STATUS]="Show status registers";
	strings_en[I_SHOW_BANK0]="Show memory bank 0";
	strings_en[I_SHOW_BANK1]="Show memory bank 1";
	strings_en[I_SHOW_BANK2]="Show memory bank 2";
	strings_en[I_SHOW_BANK3]="Show memory bank 3";
	strings_en[I_SHOW_EE]="show EEPROM";
	strings_en[I_STOP]="Stopped" NL;
	strings_en[I_ICD_RUN]="Run/Continue";
	strings_en[I_ICD_HALT]="Halt";
	strings_en[I_ICD_STEP]="Step";
	strings_en[I_ICD_STEPOVER]="Step over";
	strings_en[I_ICD_STOP]="Stop";
	strings_en[I_ICD_REFRESH]="Refresh";
	strings_en[I_ICD_CMD]="Command line";
	strings_en[I_ICD_HELP]="Help";
	strings_en[I_ICD_SOURCE]="Source";
	strings_en[I_ICD_STATUS]="Status";
	strings_en[I_ICD_HELP_TXT]=
		"ICD help" NL NL
		"Double click variable name to add to watch list;" NL
		"double click again to remove it." NL
		"Key shortcuts:" NL
		" F1 help" NL
		" F5 halt" NL
		" F7 step" NL
		" F8 step over" NL
		" F9 run" NL
		"Command-line help:" NL
		" variable=x          set variable to x" NL
		" [var addr]=x        set variable at addr to x" NL
		" help                command help" NL
		" break <addr>        set breakpoint at address <addr>" NL
		" freeze [on,off]     freeze peripherals" NL
		" h[alt]              halt execution" NL
		" list <addr>         show code starting from <addr>" NL
		" p[rint] 0x<addr>    print variable at address <addr>" NL
		" p[rint] <var>       print variable <var>" NL
		" p[rint] bank <b>    print registers in bank <b>" NL
		" p[rint] p <addr>    print program memory at address <addr>" NL
		" p[rint] ee <addr>   print eeprom memory at address <addr>" NL
		" p[rint] ee          print all eeprom memory" NL
		" r[un]               run" NL
		" s[tep] [n]          single step [n times]" NL
		" step over / ss [n]  step over calls [n times]" NL
		" version             read debugger version" NL
		" w[atch] variable    add/remove watch for variable" NL
		" w[atch] 0x<addr>    add/remove watch at address <addr>" NL;
	strings_en[I_GUI_CMD_HELP]=
		"Command line options:" NL
		" ?,h,help            this help" NL
		" command <message>   send <message> to the programmer and exit." NL
		"                     The message is composed of up to 64 hexadecimal bytes separated by a space;" NL
		"                     those not specified are 0" NL
		" lang <language>     load <language> strings" NL
		" langfile            write all strings to file" NL;
	strings_en[L_HELP]="op [options]" NL
		"-BKosccal                   load BKosccal from file" NL
		"-calib                      load calibration from file" NL
		"-command <message>          send <message> to the programmer and exit." NL
		"                            The message is composed of up to 64 hexadecimal bytes separated by a space;" NL
		"                            those not specified are 0" NL
		"-cwX <cw>                   force config word X [1-7]" NL
		"-d, device <dev.>           device" NL
		"-ee                         use eeprom" NL
		"-err <max>                  max errors during writing" NL
		"-fuse <val>                 write fuse low byte (Atmel only)" NL
		"-fuseh <val>                write fuse high byte (Atmel only)" NL
		"-fusex <val>                write extended fuse byte (Atmel only)" NL
		"-fuse3k <val>               write fuse low byte at 3 kHz (Atmel only)" NL
		"-h, help                    help" NL
		"-HWtest                     hardware test" NL
		"-i, info                    informations about programmer" NL
		"-i2c_r <N Ctr Addr>         read N bytes from I2C bus" NL
		"-i2c_r2 <N Ctr Addr(2)>     read N bytes from I2C bus (16b address)" NL
		"-i2c_w <N Ctr Addr Data>    write N bytes to I2C bus" NL
		"-i2c_w2 <N Ctr Addr(2) D.>  write N bytes to I2C bus (16b address)" NL
		"-i2cspeed <s>               set I2C speed: 0=100k,1=200k,2=500k,3=800k" NL
		"-id                         use ID" NL
		"-icd <val>                  enable ICD (goto address)" NL
		"-l, log [=file]             save log" NL
		"-lang <language>            load <language> strings" NL
		"-langfile                   write all strings to file" NL
		"-lock <val>                 write lock byte (Atmel only)" NL
		"-mode <mode>                SPI mode: 00,01,10,11" NL
		"-nolvcheck                  skip 3.3V regulator check" NL
		"-osccal                     loads osccal from file instead of using the value saved before erase" NL
		"-p, path <path>             programmer path [/dev/usb/hiddev0]" NL
		"-pid <pid>                  programmer pid [0x100]" NL
		"-r, reserved                read reserved area" NL
		"-rep <n>                    report size [64]" NL
		"-s1, S1                     Multiple programming triggered by S1" NL
		"-s, save <file>             save Ihex file" NL
		"-se, saveEE <file>          save EEPROM on Ihex file (ATxxxx only)" NL
		"-spi_r <N>                  read N bytes from SPI bus" NL
		"-spi_w <N Data>             write N bytes to SPI bus" NL
		"-spispeed <s>               set SPI speed: 0=100k,1=200k,2=500k,3=800k" NL
		"-support                    supported devices" NL
		"-use_BKosccal               copy BKosccal to osccal" NL
		"-v, version                 version" NL
		"-vid <vid>                  programmer vid [0x4D8]" NL
		"-w, write <file>            write Ihex file" NL
		"-we, writeEE <file>         write EEPROM on Ihex file (ATxxxx only)" NL
		"" NL
		"ex.  op -d 12F683 -s test.hex" NL;
	strings_en[L_OPTERR]="Error in command-line options" NL;
	strings_en[L_INFO1]="vid 0x%04hx pid 0x%04hx version 0x%04hx ";
	strings_en[L_INFO2]= NL "bus: %d devnum: %d ifnum: %d" NL;
	strings_en[L_UNKNOWN]="Unknown";
	strings_en[L_NAME]="The device on %s says its name is %s" NL;
	strings_en[L_DEV_RO]="Devices supported for reading only:";
	strings_en[L_DEV_RW]="Devices supported for reading and writing:";
}