//=========================================================================//
//                                                                         //
//  PonyProg - Serial Device Programmer                                    //
//                                                                         //
//  Copyright (C) 1997-2025   Claudio Lanconelli                           //
//                                                                         //
//  https://github.com/lancos/ponyprog                                        //
//                                                                         //
//-------------------------------------------------------------------------//
//                                                                         //
// This program is free software; you can redistribute it and/or           //
// modify it under the terms of the GNU  General Public License            //
// as published by the Free Software Foundation; either version2 of        //
// the License, or (at your option) any later version.                     //
//                                                                         //
// This program is distributed in the hope that it will be useful,         //
// but WITHOUT ANY WARRANTY; without even the implied warranty of          //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU       //
// General Public License for more details.                                //
//                                                                         //
// You should have received a copy of the GNU  General Public License      //
// along with this program (see LICENSE);     if not, write to the         //
// Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. //
//                                                                         //
//=========================================================================//

#ifndef LANGUAGE_HEADER
#define LANGUAGE_HEADER

#include <QString>
#include <QVector>



class cTranslator
{
  public:
	bool loadTranslation(const QString fname);
  public:
	static QString translate(int id);
	static QString engText[];
  private:
	QString convertString(const QString &s);
	//         Q_DISABLE_COPY(cTranslator);

  private:
	static QVector<QString> translateTable;
};

//
// all enums TR_CONSTS are for direct access to the text from engText or translateTable
// not over maps or text id's
//
enum TR_CONSTS
{
	STR_LANGUAGE_CODE = 0,
	MSG_TRANSLATORCREDITS,
	MSG_TRANSLATORNAME,

	STR_APPNAME_EXT,
	STR_APPDOWNLOAD1,
	STR_APPDOWNLOAD2,

	STR_NONAME,
	STR_BTNOK,
	STR_BTNCANC,
	STR_BTNHELP,
	STR_BTNPROBE,

	STR_BTNCHECKHW,

	STR_BTNNOTE,
	STR_BTNEDIT,


	//Dialog messages
	STR_MSGVERSION,
	STR_YES,
	STR_NO,
	STR_OK,
	STR_TEST,
	STR_MSGFAILED,
	STR_ABOUT,
	STR_MSGPAGE,
	STR_MSGUNKNOWN,
	STR_BUFCHANGED,
	STR_BUFCHANGED2,
	STR_NOTHINGSAVE,
	STR_NOTHINGLOAD,
	STR_NOTHINGPRINT,
	STR_NOTHINGWRITE,
	STR_NOTHINGVERIFY,
	STR_BUSCALIBRA1,
	STR_BUSCALIBRA2,
	STR_BUSCALIBRAOK,
	STR_BUSCALIBRAFAIL,
	STR_MSGNEEDCALIB,
	STR_MSGNEEDSETUP,
	STR_MSGREADING,
	STR_MSGREADOK,
	STR_ASKWRITE,
	STR_MSGWRITING,
	STR_MSGVERIFING,
	STR_MSGWRITEOK,
	STR_MSGWRITEFAIL,
	STR_MSGERASING,
	STR_MSGERASEOK,
	STR_MSGVERIFYFAIL1,
	STR_MSGVERIFYFAIL2,
	STR_MSGVERIFYOK,
	STR_MSGPROGRAMOK,
	STR_MSGPROGRAMFAIL,
	STR_MSGDEVRESET,
	STR_MSGWRITINGSEC,
	STR_MSGWRITESECFAIL,
	STR_MSGREADINGSEC,
	STR_MSGREADSECFAIL,
	STR_MSGREADINGFUSE,
	STR_MSGREADFUSEFAIL,
	STR_MSGWRITINGFUSE,
	STR_MSGWRITEFUSEFAIL,

	STR_MSGSCRIPTERROR,
	STR_MSGSCRIPTBADCOMMAND,
	STR_MSGSCRIPTBADARGUMENT,
	STR_MSGSCRIPTARGMISSING,
	STR_MSGDEFAULTPAUSE,

	STR_BUFEMPTY,
	STR_OPNOTSUP,
	STR_MSGINSPARAM,
	STR_MSGBADPARAM,
	STR_MSGACCEPTCMD,
	STR_MSGOPENFILE,
	STR_MSGOPENPROGFILE,
	STR_MSGOPENDATAFILE,
	STR_MSGFILENOTFOUND,
	STR_MSGFILESAVEFAIL,
	STR_MSGFILESAVEAS,
	STR_MSGFILESAVEPROG,
	STR_MSGFILESAVEDATA,
	STR_MSGCLOSEWINEXIT,
	STR_MSGCLOSEWINSAVE,
	STR_MSGOPENSCRIPT,


	//Menu entries

	//Main Menu
	STR_MENUFILE,
	STR_MENUEDIT,
	STR_MENUDEVICE,
	STR_MENUCMD,
	STR_MENUSCRIPT,
	STR_MENUUTIL,
	STR_MENUSETUP,
	STR_MENUOPTIONS,
	STR_MENUQMARK,

	//Menu File
	STR_NEWWIN,
	STR_OPEN,
	STR_OPENFLASH,
	STR_OPENDATA,
	STR_SAVE,
	STR_SAVEAS,
	STR_SAVEFLASH,
	STR_SAVEDATA,
	STR_RELOAD,
	STR_PRINT,
	STR_CLOSE,
	STR_EXIT,

	//Menu Edit
	STR_EDITNOTE,
	STR_EDITBUFENA,

	//Menu Command
	STR_READALL,
	STR_READPROG,
	STR_READDATA,
	STR_READSECBITS,
	STR_WRITEALL,
	STR_WRITEPROG,
	STR_WRITEDATA,
	STR_WRITESECBITS,
	STR_VERIFYALL,
	STR_VERIFYPROG,
	STR_VERIFYDATA,
	STR_VERIFYSECBITS,
	STR_ERASE,
	STR_GETINFO,
	STR_RESET,
	STR_PROGRAM,
	STR_PROGOPTION,

	//Menu Options
	STR_INTERFSETUP,
	STR_CALIBRATION,
	STR_REMOTEMODE,

	//Menu Utility
	STR_CLEARBUF,
	STR_FILLBUF,
	STR_DOUBLEBANK,
	STR_BYTESWAP,
	STR_DOWNSERNUM,
	STR_SERNUMCONF,

	//Menu Help
	STR_MENUHELP,
	STR_MENUABOUT,

	//Menu Options
	STR_MENULOG,

	//Menu Script
	STR_EDITSCR,
	STR_LOADSCR,
	STR_AUTOLOADSCR,
	STR_RUNSCR,

	//Tool Bar

	//Dialog Messages
	STR_MSGDEVTYPE,

	//Tool tips
	STR_TTOPENFILE,
	STR_TTSAVEFILE,
	STR_TTPRINT,
	STR_TTRELOAD,
	STR_TTREADALL,
	STR_TTREADPROG,
	STR_TTREADDATA,
	STR_TTREADSEC,
	STR_TTWRITEALL,
	STR_TTWRITEPROG,
	STR_TTWRITEDATA,
	//          STR_TTWRITESEC  = "Write Security and Configuration Bits"
	STR_TTVERIFYPROG,
	STR_TTVERIFYDATA,
	STR_TTVERIFYSEC,

	STR_TTSELFAMILY,
	STR_TTSELTYPE,

	STR_TTEDITNOTE,

	//Error Messages
	STR_DEVNOTRESP,
	STR_DEVBADTYPE,
	STR_DEVUNKNOWN,
	STR_DEVLOCKED,
	STR_OPABORTED,
	STR_OPENFAILED,
	STR_ACCDENIED,
	STR_NOTINST,
	STR_HWERROR,
	STR_BUSBUSY,
	STR_I2CNOACK,
	STR_I2CNODEV,
	STR_I2CTIMEOUT,
	STR_I2CSTOPERR,
	STR_WRITEERR,
	STR_BLANKCHECKERR,
	STR_ERRNO,
	STR_SCRIPTERROR,




	//----Setup dialog

	//Dialog title
	STR_DLGIOSETUP,
	STR_MSGINTSETUP,

	//Dialog messages
	STR_LBLCOMLPT,
	STR_LBLSERIAL,
	STR_LBLPARALLEL,
	STR_LBLINTERFSEL,
	STR_LBLINTERFTYPE,
	STR_LBLCOMSELECT,
	STR_LBLCOM1,
	STR_LBLUSBSELECT,
	STR_LBLUSB1,
	STR_LBLLPTSELECT,
	STR_LBLLPT1,
	STR_LBLSELPOLARITY,
	STR_LBLINVRESET,
	STR_LBLINVSCK,
	STR_LBLINVDATAIN,
	STR_LBLINVDATAOUT,

	//Tool tips

	STR_TTCOM1,
	STR_TTUSB1,
	STR_TTLPT1,

	//----Fill dialog

	//Dialog title
	STR_LBLFILLBUF,

	//Dialog messages: NB should be of the same size (number of char)
	STR_LBLFROM,
	STR_LBLTO,
	STR_LBLVALUE,

	//----Fuse dialog

	//Button captions
	STR_BTNCLRALL,
	STR_BTNSETALL,
	STR_BTNWRITE,
	STR_BTNREAD,

	//Dialog title
	STR_MSGFUSEDLG,

	//Dialog messages: NB should be of the same size (number of char)
	STR_MSGFIRSTBLK,
	STR_MSGNUMBLOCK,
	STR_MSGHIGHENDBLK,

	//Tool tips
	STR_TTCLRALL,
	STR_TTSETALL,
	STR_TTWRITE,
	STR_TTREAD,


	//----Info dialog

	//Button captions
	STR_BTNCLOSE,

	//Dialog title
	STR_MSGDEVINFO,

	//Dialog messages
	STR_MSGBANKROLL,
	STR_MSGSIZE,
	STR_MSGCRC,
	STR_MSGSECBLOCK,
	STR_HIGHENDURAN,


	//----Char Edit dialog

	//Dialog title
	STR_MSGEDITBUG,

	//Dialog messages: NB should be of the same size (number of char)
	STR_MSGHEX,
	STR_MSGDECIMAL,
	STR_MSGCHAR,

	STR_MSGINSNEWVAL,
	STR_MSGENTERTEXT,

	//Tool tips
	STR_TTHEX,
	STR_TTDECIMAL,
	STR_TTCHAR,

	//----Program Option dialog

	//Dialog title
	STR_MSGPROGOPT,

	//Dialog messages
	STR_MSGRELOAD,
	STR_MSGREADPROG,
	STR_MSGREADDATA,
	STR_MSGREADSERNUM,
	STR_MSGBYTESWAP,
	STR_MSGSERNUM,
	STR_MSGERASE,
	STR_MSGWRITEPROG,
	STR_MSGWRITEDATA,
	STR_MSGWRITESEC,
	STR_MSGVERIFYSEC,

	//----Serial Number dialog

	//Dialog title
	STR_MSGSERNUMCFG,

	//Dialog messages: NB should be of the same size (number of char)
	STR_MSGADDRESS,
	STR_MSGSIZE2,
	STR_MSGVALUE,
	STR_MSGFORMAT,

	//next 2 probably can't be translated
	STR_MSGLITTLEEND,
	STR_MSGBIGENDIAN,

	STR_MSGOFFSET,

	//Tool tips

	STR_TTSNMEMADDR,
	STR_TTSNSIZE,
	STR_TTSNVALUE,
	STR_TTSNOFFSET,
	STR_TTLITTLEEND,
	STR_TTBIGENDIAN,


	//----Retry dialog

	//Button captions
	STR_ABORT,
	STR_RETRY,
	STR_IGNORE,

	//Dialog title
	STR_MSGALERT,


	//----Notes dialog

	//Dialog title
	STR_MSGDEVNOTE,


	//----Progress dialog

	//Dialog title
	STR_MSGSTATUS,


	//----Hardware check dialog
	STR_MSGHWCHECKDLG,


	//----About dialog
	STR_LBLNOSOUND,

	STR_LBLSKIPMSG,


	//---- Oscillator Calibration Byte
	STR_MSGOSCCALIBCFG,

	STR_READOSCCALIB,
	STR_OSCCALIBOPTION,
	STR_MSGREADCALIBOK,

	STR_MSGCHIPID,
	STR_MSGNOTE,
	STR_MSGEEPSIZE,
	STR_MSGFLASHSIZE,

	STR_MSGSNAUTOINC,
	STR_TTSNAUTOINC,

	STR_MSGBANKROLLOVER,
	STR_BUFCHANGED3,

	STR_TTOPENPROG,
	STR_TTOPENDATA,
	STR_TTSAVEPROG,
	STR_TTSAVEDATA,
	STR_TTNEWWIN,
	STR_TTPROGRAM,
	STR_TTSCRIPT,
	STR_TTSETUP,
	STR_TTERASE,

	STR_SECBITS,
	STR_TTSECBITS,

	STR_LBLFUSEDLGHLP,
	STR_FUSEDLGNOTESET,
	STR_FUSEDLGNOTECLR,
	STR_CALIBRENABLED,

	STR_PREFERENCES,			//287
	STR_EXTRAPROBEMSG_FTPROG,
	STR_EXTRAPROBEMSG_EGGLINK
};


#endif
