Subversion Repositories Projects

Rev

Rev 1465 | Blame | Compare with Previous | Last modification | View Log | RSS feed


/****************************************************************/
/*                                                                                                                                                                                                                                                      */
/*                                                                       NG-Video 5,8GHz                                                                                                                */
/*                                                                                                                                                                                                                                                      */
/*                                                      Copyright (C) 2011 - gebad                                                                                      */
/*                                                                                                                                                                                                                                                      */
/*      This code is distributed under the GNU Public License                           */
/*      which can be found at http://www.gnu.org/licenses/gpl.txt               */
/*                                                                                                                                                                                                                                                      */
/*      using                                                                                                                                                                                                                           */
/*      http://www.avrfreaks.net/                                                                                                                                               */
/*      index.php?name=PNphpBB2&file=viewtopic&t=71985&view=previous*/
/*                                                                                                                                                                                                                                                      */
/****************************************************************/

#include "messages.h"

#define MSG_TABLE(l,n) mt ## l ## _ ## n
                         
#define MSG_STRING(l,n,s) \
        const char mt ## l ## _ ## n [] PROGMEM = s ;


MSG_STRING(INTERNAT, MSG_RSSI_MIN, INTERNAT_RSSI_MIN)
MSG_STRING(INTERNAT, MSG_RSSI_MAX, INTERNAT_RSSI_MAX)
MSG_STRING(INTERNAT, MSG_DIVERSITY, INTERNAT_DIVERSITY)
MSG_STRING(INTERNAT, MSG_LCD, INTERNAT_LCD)
MSG_STRING(INTERNAT, MSG_AV1, INTERNAT_AV1)
MSG_STRING(INTERNAT, MSG_AV2, INTERNAT_AV2)
MSG_STRING(INTERNAT, MSG_RX1, INTERNAT_RX1)
MSG_STRING(INTERNAT, MSG_RX2, INTERNAT_RX2)
MSG_STRING(INTERNAT, MSG_STEPS_255, INTERNAT_STEPS_255)
MSG_STRING(INTERNAT, MSG_STEPS_1023, INTERNAT_STEPS_1023)
MSG_STRING(INTERNAT, MSG_SERVO, INTERNAT_SERVO)
MSG_STRING(INTERNAT, MSG_SERVO1, INTERNAT_SERVO1)
MSG_STRING(INTERNAT, MSG_SERVO2, INTERNAT_SERVO2)
MSG_STRING(INTERNAT, MSG_TEST_SERVO,            INTERNAT_TEST_SERVO)
MSG_STRING(INTERNAT, MSG_TRACK_RSSI, INTERNAT_TRACK_RSSI)
MSG_STRING(INTERNAT, MSG_TRACK_MKCOCKPIT, INTERNAT_TRACK_MKCOCKPIT)
MSG_STRING(INTERNAT, MSG_TRACK_SERVO_HYTERESE, INTERNAT_TRACK_SERVO_HYTERESE)
MSG_STRING(INTERNAT, MSG_BAUDRATE, INTERNAT_BAUDRATE)
MSG_STRING(INTERNAT, MSG_UHW5V, INTERNAT_UHW5V)
MSG_STRING(INTERNAT, MSG_VERSION1, INTERNAT_VERSION1)
MSG_STRING(INTERNAT, MSG_VERSION2, INTERNAT_VERSION2)

MSG_STRING(GERMAN, MSG_LANGUAGE, GERMAN_LANGUAGE)
MSG_STRING(GERMAN, MSG_GERMAN, GERMAN_GERMAN)
MSG_STRING(GERMAN, MSG_ENGLISH, GERMAN_ENGLISH)
MSG_STRING(GERMAN, MSG_FRENCH, GERMAN_FRENCH)
MSG_STRING(GERMAN, MSG_RETURN, GERMAN_RETURN)
MSG_STRING(GERMAN, MSG_AV_SOURCE, GERMAN_AV_SOURCE)
MSG_STRING(GERMAN, MSG_RX_CHANNEL, GERMAN_RX_CHANNEL)
MSG_STRING(GERMAN, MSG_RSSI_CALIBR, GERMAN_RSSI_CALIBR)
MSG_STRING(GERMAN, MSG_RSSI_MIN_ALL, GERMAN_RSSI_MIN_ALL)
MSG_STRING(GERMAN, MSG_CALIB, GERMAN_CALIB)
MSG_STRING(GERMAN, MSG_TX, GERMAN_TX)
MSG_STRING(GERMAN, MSG_TX_OFF, GERMAN_TX_OFF)
MSG_STRING(GERMAN, MSG_TX_ON, GERMAN_TX_ON)
MSG_STRING(GERMAN, MSG_CONTINUE, GERMAN_CONTINUE)
MSG_STRING(GERMAN, MSG_CONTRAST, GERMAN_CONTRAST)
MSG_STRING(GERMAN, MSG_BACKGR_LIGHT, GERMAN_BACKGR_LIGHT)
MSG_STRING(GERMAN, MSG_LIGHT, GERMAN_LIGHT)
MSG_STRING(GERMAN, MSG_LIGHT_OFF, GERMAN_LIGHT_OFF)
MSG_STRING(GERMAN, MSG_LIGHT_ON, GERMAN_LIGHT_ON)
MSG_STRING(GERMAN, MSG_SEC, GERMAN_SEC)
MSG_STRING(GERMAN, MSG_BATTERY, GERMAN_BATTERY)
MSG_STRING(GERMAN, MSG_U_MIN, GERMAN_U_MIN)
MSG_STRING(GERMAN, MSG_U_SETUP, GERMAN_U_SETUP)
MSG_STRING(GERMAN, MSG_U_OFFSET, GERMAN_U_OFFSET)
MSG_STRING(GERMAN, MSG_MK_BATTERY, GERMAN_MSG_MK_BATTERY)
MSG_STRING(GERMAN, MSG_MK_BAT_NR, GERMAN_MSG_MK_BAT_NR)
MSG_STRING(GERMAN, MSG_MK_BAT_CAPACITY, GERMAN_MSG_MK_BAT_CAPACITY)
MSG_STRING(GERMAN, MSG_MK_I_OFFSET, GERMAN_MSG_MK_I_OFFSET)
MSG_STRING(GERMAN, MSG_MK_I_FAKTOR, GERMAN_MSG_MK_I_FAKTOR)
MSG_STRING(GERMAN, MSG_MK_W_FAKTOR, GERMAN_MSG_MK_W_FAKTOR)
MSG_STRING(GERMAN, MSG_CALIBRATION, GERMAN_CALIBRATION)
MSG_STRING(GERMAN, MSG_RUNNING, GERMAN_RUNNING)
MSG_STRING(GERMAN, MSG_ERROR, GERMAN_ERROR)
MSG_STRING(GERMAN, MSG_TX_NOT, GERMAN_TX_NOT)
MSG_STRING(GERMAN, MSG_ACCU_LOW, GERMAN_ACCU_LOW)
MSG_STRING(GERMAN, MSG_SERVO_CALIBR, GERMAN_SERVO_CALIBR)
MSG_STRING(GERMAN, MSG_SERVO_STEPS, GERMAN_SERVO_STEPS)
MSG_STRING(GERMAN, MSG_SERVO1_REVERSE, GERMAN_SERVO1_REVERSE)
MSG_STRING(GERMAN, MSG_CALIB1_LEFT, GERMAN_CALIB1_LEFT)
MSG_STRING(GERMAN, MSG_CALIB1_RIGHT, GERMAN_CALIB1_RIGHT)
MSG_STRING(GERMAN, MSG_CALIB1_MIDDLE, GERMAN_CALIB1_MIDDLE)
MSG_STRING(GERMAN, MSG_SERVO2_REVERSE, GERMAN_SERVO2_REVERSE)
MSG_STRING(GERMAN, MSG_CALIB2_LEFT, GERMAN_CALIB2_LEFT)
MSG_STRING(GERMAN, MSG_CALIB2_RIGHT, GERMAN_CALIB2_RIGHT)
MSG_STRING(GERMAN, MSG_CALIB2_MIDDLE, GERMAN_CALIB2_MIDDLE)
MSG_STRING(GERMAN, MSG_FRAME, GERMAN_FRAME)
MSG_STRING(GERMAN, MSG_PULSE_WIDTH, GERMAN_PULSE_WIDTH)
MSG_STRING(GERMAN, MSG_CONTINOUS, GERMAN_CONTINOUS)
MSG_STRING(GERMAN, MSG_SINGLE_STE, GERMAN_SINGLE_STEP)
MSG_STRING(GERMAN, MSG_REPEAT, GERMAN_REPEAT)
MSG_STRING(GERMAN, MSG_PAUSE, GERMAN_PAUSE)
MSG_STRING(GERMAN, MSG_PAUSE_STEP, GERMAN_PAUSE_STEP)
MSG_STRING(GERMAN, MSG_COUNTER, GERMAN_COUNTER)
MSG_STRING(GERMAN, MSG_START, GERMAN_START)
MSG_STRING(GERMAN, MSG_OFF, GERMAN_OFF)
MSG_STRING(GERMAN, MSG_ON, GERMAN_ON)
MSG_STRING(GERMAN, MSG_TRACKING, GERMAN_TRACKING)
MSG_STRING(GERMAN, MSG_TRACK_GPS, GERMAN_TRACK_GPS)
MSG_STRING(GERMAN, MSG_TRACK_NMEA, GERMAN_TRACK_NMEA)
MSG_STRING(GERMAN, MSG_TRACK_TX_OSD_DATA, GERMAN_TRACK_TX_OSD_DATA)
MSG_STRING(GERMAN, MSG_HYSTERESE, GERMAN_HYSTERESE)
MSG_STRING(GERMAN, MSG_TRACK_TX_ON, GERMAN_TRACK_TX_ON)
MSG_STRING(GERMAN, MSG_GPS_DISPLAY, GERMAN_GPS_DISPLAY)
MSG_STRING(GERMAN, MSG_GPS_CALCULATE, GERMAN_GPS_CALCULATE)
MSG_STRING(GERMAN, MSG_GPS_CURRENT, GERMAN_GPS_CURRENT)
MSG_STRING(GERMAN, MSG_GPS_HOME, GERMAN_GPS_HOME)
MSG_STRING(GERMAN, MSG_GPS_MISC, GERMAN_GPS_MISC)
MSG_STRING(GERMAN, MSG_GPS_NO_DATA, GERMAN_GPS_NO_DATA)
MSG_STRING(GERMAN, MSG_RX_TIME, GERMAN_RX_TIME)
MSG_STRING(GERMAN, MSG_COM, GERMAN_COM)
MSG_STRING(GERMAN, MSG_KOMMA, GERMAN_KOMMA)
MSG_STRING(GERMAN, MSG_UHW33V, GERMAN_UHW33V)

MSG_STRING(ENGLISH, MSG_LANGUAGE, ENGLISH_LANGUAGE)
MSG_STRING(ENGLISH, MSG_GERMAN, ENGLISH_GERMAN)
MSG_STRING(ENGLISH, MSG_ENGLISH, ENGLISH_ENGLISH)
MSG_STRING(ENGLISH, MSG_FRENCH, ENGLISH_FRENCH)
MSG_STRING(ENGLISH, MSG_RETURN, ENGLISH_RETURN)
MSG_STRING(ENGLISH, MSG_AV_SOURCE, ENGLISH_AV_SOURCE)
MSG_STRING(ENGLISH, MSG_RX_CHANNEL, ENGLISH_RX_CHANNEL)
MSG_STRING(ENGLISH, MSG_RSSI_CALIBR, ENGLISH_RSSI_CALIBR)
MSG_STRING(ENGLISH, MSG_RSSI_MIN_ALL, ENGLISH_RSSI_MIN_ALL)
MSG_STRING(ENGLISH, MSG_CALIB, ENGLISH_CALIB)
MSG_STRING(ENGLISH, MSG_TX, ENGLISH_TX)
MSG_STRING(ENGLISH, MSG_TX_OFF, ENGLISH_TX_OFF)
MSG_STRING(ENGLISH, MSG_TX_ON, ENGLISH_TX_ON)
MSG_STRING(ENGLISH, MSG_CONTINUE, ENGLISH_CONTINUE)
MSG_STRING(ENGLISH, MSG_CONTRAST, ENGLISH_CONTRAST)
MSG_STRING(ENGLISH, MSG_BACKGR_LIGHT, ENGLISH_BACKGR_LIGHT)
MSG_STRING(ENGLISH, MSG_LIGHT, ENGLISH_LIGHT)
MSG_STRING(ENGLISH, MSG_LIGHT_OFF, ENGLISH_LIGHT_OFF)
MSG_STRING(ENGLISH, MSG_LIGHT_ON, ENGLISH_LIGHT_ON)
MSG_STRING(ENGLISH, MSG_SEC, ENGLISH_SEC)
MSG_STRING(ENGLISH, MSG_BATTERY, ENGLISH_BATTERY)
MSG_STRING(ENGLISH, MSG_U_MIN, ENGLISH_U_MIN)
MSG_STRING(ENGLISH, MSG_U_SETUP, ENGLISH_U_SETUP)
MSG_STRING(ENGLISH, MSG_U_OFFSET, ENGLISH_U_OFFSET)
MSG_STRING(ENGLISH, MSG_MK_BATTERY, ENGLISH_MSG_MK_BATTERY)
MSG_STRING(ENGLISH, MSG_MK_BAT_NR, ENGLISH_MSG_MK_BAT_NR)
MSG_STRING(ENGLISH, MSG_MK_BAT_CAPACITY, ENGLISH_MSG_MK_BAT_CAPACITY)
MSG_STRING(ENGLISH, MSG_MK_I_OFFSET, ENGLISH_MSG_MK_I_OFFSET)
MSG_STRING(ENGLISH, MSG_MK_I_FAKTOR, ENGLISH_MSG_MK_I_FAKTOR)
MSG_STRING(ENGLISH, MSG_MK_W_FAKTOR, ENGLISH_MSG_MK_W_FAKTOR)
MSG_STRING(ENGLISH, MSG_CALIBRATION, ENGLISH_CALIBRATION)
MSG_STRING(ENGLISH, MSG_RUNNING, ENGLISH_RUNNING)
MSG_STRING(ENGLISH, MSG_ERROR, ENGLISH_ERROR)
MSG_STRING(ENGLISH, MSG_TX_NOT, ENGLISH_TX_NOT)
MSG_STRING(ENGLISH, MSG_ACCU_LOW, ENGLISH_ACCU_LOW)
MSG_STRING(ENGLISH, MSG_SERVO_CALIBR, ENGLISH_SERVO_CALIBR)
MSG_STRING(ENGLISH, MSG_SERVO_STEPS, ENGLISH_SERVO_STEPS)
MSG_STRING(ENGLISH, MSG_SERVO1_REVERSE, ENGLISH_SERVO1_REVERSE)
MSG_STRING(ENGLISH, MSG_CALIB1_LEFT, ENGLISH_CALIB1_LEFT)
MSG_STRING(ENGLISH, MSG_CALIB1_RIGHT, ENGLISH_CALIB1_RIGHT)
MSG_STRING(ENGLISH, MSG_CALIB1_MIDDLE, ENGLISH_CALIB1_MIDDLE)
MSG_STRING(ENGLISH, MSG_SERVO2_REVERSE, ENGLISH_SERVO2_REVERSE)
MSG_STRING(ENGLISH, MSG_CALIB2_LEFT, ENGLISH_CALIB2_LEFT)
MSG_STRING(ENGLISH, MSG_CALIB2_RIGHT, ENGLISH_CALIB2_RIGHT)
MSG_STRING(ENGLISH, MSG_CALIB2_MIDDLE, ENGLISH_CALIB2_MIDDLE)
MSG_STRING(ENGLISH, MSG_FRAME, ENGLISH_FRAME)
MSG_STRING(ENGLISH, MSG_PULSE_WIDTH, ENGLISH_PULSE_WIDTH)
MSG_STRING(ENGLISH, MSG_CONTINOUS, ENGLISH_CONTINOUS)
MSG_STRING(ENGLISH, MSG_SINGLE_STE, ENGLISH_SINGLE_STEP)
MSG_STRING(ENGLISH, MSG_REPEAT, ENGLISH_REPEAT)
MSG_STRING(ENGLISH, MSG_PAUSE, ENGLISH_PAUSE)
MSG_STRING(ENGLISH, MSG_PAUSE_STEP, ENGLISH_PAUSE_STEP)
MSG_STRING(ENGLISH, MSG_COUNTER, ENGLISH_COUNTER)
MSG_STRING(ENGLISH, MSG_START, ENGLISH_START)
MSG_STRING(ENGLISH, MSG_OFF, ENGLISH_OFF)
MSG_STRING(ENGLISH, MSG_ON, ENGLISH_ON)
MSG_STRING(ENGLISH, MSG_TRACKING, ENGLISH_TRACKING)
MSG_STRING(ENGLISH, MSG_TRACK_GPS, ENGLISH_TRACK_GPS)
MSG_STRING(ENGLISH, MSG_TRACK_NMEA, ENGLISH_TRACK_NMEA)
MSG_STRING(ENGLISH, MSG_TRACK_TX_OSD_DATA, ENGLISH_TRACK_TX_OSD_DATA)
MSG_STRING(ENGLISH, MSG_HYSTERESE, ENGLISH_HYSTERESE)
MSG_STRING(ENGLISH, MSG_TRACK_TX_ON, ENGLISH_TRACK_TX_ON)
MSG_STRING(ENGLISH, MSG_GPS_DISPLAY, ENGLISH_GPS_DISPLAY)
MSG_STRING(ENGLISH, MSG_GPS_CALCULATE, ENGLISH_GPS_CALCULATE)
MSG_STRING(ENGLISH, MSG_GPS_CURRENT, ENGLISH_GPS_CURRENT)
MSG_STRING(ENGLISH, MSG_GPS_HOME, ENGLISH_GPS_HOME)
MSG_STRING(ENGLISH, MSG_GPS_MISC, ENGLISH_GPS_MISC)
MSG_STRING(ENGLISH, MSG_GPS_NO_DATA, ENGLISH_GPS_NO_DATA)
MSG_STRING(ENGLISH, MSG_RX_TIME, ENGLISH_RX_TIME)
MSG_STRING(ENGLISH, MSG_COM, ENGLISH_COM)
MSG_STRING(ENGLISH, MSG_KOMMA, ENGLISH_KOMMA)
MSG_STRING(ENGLISH, MSG_UHW33V, ENGLISH_UHW33V)

MSG_STRING(FRENCH, MSG_LANGUAGE, FRENCH_LANGUAGE)
MSG_STRING(FRENCH, MSG_GERMAN, FRENCH_GERMAN)
MSG_STRING(FRENCH, MSG_ENGLISH, FRENCH_ENGLISH)
MSG_STRING(FRENCH, MSG_FRENCH, FRENCH_FRENCH)
MSG_STRING(FRENCH, MSG_RETURN, FRENCH_RETURN)
MSG_STRING(FRENCH, MSG_AV_SOURCE, FRENCH_AV_SOURCE)
MSG_STRING(FRENCH, MSG_RX_CHANNEL, FRENCH_RX_CHANNEL)
MSG_STRING(FRENCH, MSG_RSSI_CALIBR, FRENCH_RSSI_CALIBR)
MSG_STRING(FRENCH, MSG_RSSI_MIN_ALL, FRENCH_RSSI_MIN_ALL)
MSG_STRING(FRENCH, MSG_CALIB, FRENCH_CALIB)
MSG_STRING(FRENCH, MSG_TX, FRENCH_TX)
MSG_STRING(FRENCH, MSG_TX_OFF, FRENCH_TX_OFF)
MSG_STRING(FRENCH, MSG_TX_ON, FRENCH_TX_ON)
MSG_STRING(FRENCH, MSG_CONTINUE, FRENCH_CONTINUE)
MSG_STRING(FRENCH, MSG_CONTRAST, FRENCH_CONTRAST)
MSG_STRING(FRENCH, MSG_BACKGR_LIGHT, FRENCH_BACKGR_LIGHT)
MSG_STRING(FRENCH, MSG_LIGHT, FRENCH_LIGHT)
MSG_STRING(FRENCH, MSG_LIGHT_OFF, FRENCH_LIGHT_OFF)
MSG_STRING(FRENCH, MSG_LIGHT_ON, FRENCH_LIGHT_ON)
MSG_STRING(FRENCH, MSG_SEC, FRENCH_SEC)
MSG_STRING(FRENCH, MSG_BATTERY, FRENCH_BATTERY)
MSG_STRING(FRENCH, MSG_U_MIN, FRENCH_U_MIN)
MSG_STRING(FRENCH, MSG_U_SETUP, FRENCH_U_SETUP)
MSG_STRING(FRENCH, MSG_U_OFFSET, FRENCH_U_OFFSET)
MSG_STRING(FRENCH, MSG_MK_BATTERY, FRENCH_MSG_MK_BATTERY)
MSG_STRING(FRENCH, MSG_MK_BAT_NR, FRENCH_MSG_MK_BAT_NR)
MSG_STRING(FRENCH, MSG_MK_BAT_CAPACITY, FRENCH_MSG_MK_BAT_CAPACITY)
MSG_STRING(FRENCH, MSG_MK_I_OFFSET, FRENCH_MSG_MK_I_OFFSET)
MSG_STRING(FRENCH, MSG_MK_I_FAKTOR, FRENCH_MSG_MK_I_FAKTOR)
MSG_STRING(FRENCH, MSG_MK_W_FAKTOR, FRENCH_MSG_MK_W_FAKTOR)
MSG_STRING(FRENCH, MSG_CALIBRATION, FRENCH_CALIBRATION)
MSG_STRING(FRENCH, MSG_RUNNING, FRENCH_RUNNING)
MSG_STRING(FRENCH, MSG_ERROR, FRENCH_ERROR)
MSG_STRING(FRENCH, MSG_TX_NOT, FRENCH_TX_NOT)
MSG_STRING(FRENCH, MSG_ACCU_LOW, FRENCH_ACCU_LOW)
MSG_STRING(FRENCH, MSG_SERVO_CALIBR, FRENCH_SERVO_CALIBR)
MSG_STRING(FRENCH, MSG_SERVO_STEPS, FRENCH_SERVO_STEPS)
MSG_STRING(FRENCH, MSG_SERVO1_REVERSE, FRENCH_SERVO1_REVERSE)
MSG_STRING(FRENCH, MSG_CALIB1_LEFT, FRENCH_CALIB1_LEFT)
MSG_STRING(FRENCH, MSG_CALIB1_RIGHT, FRENCH_CALIB1_RIGHT)
MSG_STRING(FRENCH, MSG_CALIB1_MIDDLE, FRENCH_CALIB1_MIDDLE)
MSG_STRING(FRENCH, MSG_SERVO2_REVERSE, FRENCH_SERVO2_REVERSE)
MSG_STRING(FRENCH, MSG_CALIB2_LEFT, FRENCH_CALIB2_LEFT)
MSG_STRING(FRENCH, MSG_CALIB2_RIGHT, FRENCH_CALIB2_RIGHT)
MSG_STRING(FRENCH, MSG_CALIB2_MIDDLE, FRENCH_CALIB2_MIDDLE)
MSG_STRING(FRENCH, MSG_FRAME, FRENCH_FRAME)
MSG_STRING(FRENCH, MSG_PULSE_WIDTH, FRENCH_PULSE_WIDTH)
MSG_STRING(FRENCH, MSG_CONTINOUS, FRENCH_CONTINOUS)
MSG_STRING(FRENCH, MSG_SINGLE_STE, FRENCH_SINGLE_STEP)
MSG_STRING(FRENCH, MSG_REPEAT, FRENCH_REPEAT)
MSG_STRING(FRENCH, MSG_PAUSE, FRENCH_PAUSE)
MSG_STRING(FRENCH, MSG_PAUSE_STEP, FRENCH_PAUSE_STEP)
MSG_STRING(FRENCH, MSG_COUNTER, FRENCH_COUNTER)
MSG_STRING(FRENCH, MSG_START, FRENCH_START)
MSG_STRING(FRENCH, MSG_OFF, FRENCH_OFF)
MSG_STRING(FRENCH, MSG_ON, FRENCH_ON)
MSG_STRING(FRENCH, MSG_TRACKING, FRENCH_TRACKING)
MSG_STRING(FRENCH, MSG_TRACK_GPS, FRENCH_TRACK_GPS)
MSG_STRING(FRENCH, MSG_TRACK_NMEA, FRENCH_TRACK_NMEA)
MSG_STRING(FRENCH, MSG_TRACK_TX_OSD_DATA, FRENCH_TRACK_TX_OSD_DATA)
MSG_STRING(FRENCH, MSG_HYSTERESE, FRENCH_HYSTERESE)
MSG_STRING(FRENCH, MSG_TRACK_TX_ON, FRENCH_TRACK_TX_ON)
MSG_STRING(FRENCH, MSG_GPS_DISPLAY, FRENCH_GPS_DISPLAY)
MSG_STRING(FRENCH, MSG_GPS_CALCULATE, FRENCH_GPS_CALCULATE)
MSG_STRING(FRENCH, MSG_GPS_CURRENT, FRENCH_GPS_CURRENT)
MSG_STRING(FRENCH, MSG_GPS_HOME, FRENCH_GPS_HOME)
MSG_STRING(FRENCH, MSG_GPS_MISC, FRENCH_GPS_MISC)
MSG_STRING(FRENCH, MSG_GPS_NO_DATA, FRENCH_GPS_NO_DATA)
MSG_STRING(FRENCH, MSG_RX_TIME, FRENCH_RX_TIME)
MSG_STRING(FRENCH, MSG_COM, FRENCH_COM)
MSG_STRING(FRENCH, MSG_KOMMA, FRENCH_KOMMA)
MSG_STRING(FRENCH, MSG_UHW33V, FRENCH_UHW33V)

PGM_P MessageTableGerman[LAST_NAT_MESSAGE+1] PROGMEM = {
        MSG_TABLE(GERMAN, MSG_LANGUAGE),
        MSG_TABLE(GERMAN, MSG_GERMAN),
        MSG_TABLE(GERMAN, MSG_ENGLISH),
        MSG_TABLE(GERMAN, MSG_FRENCH),
        MSG_TABLE(GERMAN, MSG_RETURN),
        MSG_TABLE(GERMAN, MSG_AV_SOURCE),
        MSG_TABLE(GERMAN, MSG_RX_CHANNEL),
        MSG_TABLE(GERMAN, MSG_RSSI_CALIBR),
        MSG_TABLE(GERMAN, MSG_RSSI_MIN_ALL),
        MSG_TABLE(GERMAN, MSG_CALIB),
        MSG_TABLE(GERMAN, MSG_TX),
        MSG_TABLE(GERMAN, MSG_TX_OFF),
        MSG_TABLE(GERMAN, MSG_TX_ON),
        MSG_TABLE(GERMAN, MSG_CONTINUE),
        MSG_TABLE(GERMAN, MSG_CONTRAST),
        MSG_TABLE(GERMAN, MSG_BACKGR_LIGHT),
        MSG_TABLE(GERMAN, MSG_LIGHT),
        MSG_TABLE(GERMAN, MSG_LIGHT_OFF),
        MSG_TABLE(GERMAN, MSG_LIGHT_ON),
        MSG_TABLE(GERMAN, MSG_SEC),
        MSG_TABLE(GERMAN, MSG_BATTERY),
        MSG_TABLE(GERMAN, MSG_U_MIN),
        MSG_TABLE(GERMAN, MSG_U_SETUP),
        MSG_TABLE(GERMAN, MSG_U_OFFSET),
        MSG_TABLE(GERMAN, MSG_MK_BATTERY),
        MSG_TABLE(GERMAN, MSG_MK_BAT_NR),
        MSG_TABLE(GERMAN, MSG_MK_BAT_CAPACITY),
        MSG_TABLE(GERMAN, MSG_MK_I_OFFSET),
        MSG_TABLE(GERMAN, MSG_MK_I_FAKTOR),
        MSG_TABLE(GERMAN, MSG_MK_W_FAKTOR),
        MSG_TABLE(GERMAN, MSG_CALIBRATION),
        MSG_TABLE(GERMAN, MSG_RUNNING),
        MSG_TABLE(GERMAN, MSG_ERROR),
        MSG_TABLE(GERMAN, MSG_TX_NOT),
        MSG_TABLE(GERMAN, MSG_ACCU_LOW),
        MSG_TABLE(GERMAN, MSG_SERVO_CALIBR),
        MSG_TABLE(GERMAN, MSG_SERVO_STEPS),
        MSG_TABLE(GERMAN, MSG_SERVO1_REVERSE),
        MSG_TABLE(GERMAN, MSG_CALIB1_LEFT),
        MSG_TABLE(GERMAN, MSG_CALIB1_RIGHT),
        MSG_TABLE(GERMAN, MSG_CALIB1_MIDDLE),
        MSG_TABLE(GERMAN, MSG_SERVO2_REVERSE),
        MSG_TABLE(GERMAN, MSG_CALIB2_LEFT),
        MSG_TABLE(GERMAN, MSG_CALIB2_RIGHT),
        MSG_TABLE(GERMAN, MSG_CALIB2_MIDDLE),
        MSG_TABLE(GERMAN, MSG_FRAME),
        MSG_TABLE(GERMAN, MSG_PULSE_WIDTH),
        MSG_TABLE(GERMAN, MSG_CONTINOUS),
        MSG_TABLE(GERMAN, MSG_SINGLE_STE),
        MSG_TABLE(GERMAN, MSG_REPEAT),
        MSG_TABLE(GERMAN, MSG_PAUSE),
        MSG_TABLE(GERMAN, MSG_PAUSE_STEP),
        MSG_TABLE(GERMAN, MSG_COUNTER),
        MSG_TABLE(GERMAN, MSG_START),
        MSG_TABLE(GERMAN, MSG_OFF),
        MSG_TABLE(GERMAN, MSG_ON),
        MSG_TABLE(GERMAN, MSG_TRACKING),
        MSG_TABLE(GERMAN, MSG_TRACK_GPS),
        MSG_TABLE(GERMAN, MSG_TRACK_NMEA),
        MSG_TABLE(GERMAN, MSG_TRACK_TX_OSD_DATA),
        MSG_TABLE(GERMAN, MSG_HYSTERESE),
        MSG_TABLE(GERMAN, MSG_TRACK_TX_ON),
        MSG_TABLE(GERMAN, MSG_GPS_DISPLAY),
        MSG_TABLE(GERMAN, MSG_GPS_CALCULATE),
        MSG_TABLE(GERMAN, MSG_GPS_CURRENT),
        MSG_TABLE(GERMAN, MSG_GPS_HOME),
        MSG_TABLE(GERMAN, MSG_GPS_MISC),
        MSG_TABLE(GERMAN, MSG_GPS_NO_DATA),
        MSG_TABLE(GERMAN, MSG_RX_TIME),
        MSG_TABLE(GERMAN, MSG_COM),
        MSG_TABLE(GERMAN, MSG_KOMMA),
        MSG_TABLE(GERMAN, MSG_UHW33V),
};

PGM_P MessageTableEnglish[LAST_NAT_MESSAGE+1] PROGMEM = {
        MSG_TABLE(ENGLISH, MSG_LANGUAGE),
        MSG_TABLE(ENGLISH, MSG_GERMAN),
        MSG_TABLE(ENGLISH, MSG_ENGLISH),
        MSG_TABLE(ENGLISH, MSG_FRENCH),
        MSG_TABLE(ENGLISH, MSG_RETURN),
        MSG_TABLE(ENGLISH, MSG_AV_SOURCE),
        MSG_TABLE(ENGLISH, MSG_RX_CHANNEL),
        MSG_TABLE(ENGLISH, MSG_RSSI_CALIBR),
        MSG_TABLE(ENGLISH, MSG_RSSI_MIN_ALL),
        MSG_TABLE(ENGLISH, MSG_CALIB),
        MSG_TABLE(ENGLISH, MSG_TX),
        MSG_TABLE(ENGLISH, MSG_TX_OFF),
        MSG_TABLE(ENGLISH, MSG_TX_ON),
        MSG_TABLE(ENGLISH, MSG_CONTINUE),
        MSG_TABLE(ENGLISH, MSG_CONTRAST),
        MSG_TABLE(ENGLISH, MSG_BACKGR_LIGHT),
        MSG_TABLE(ENGLISH, MSG_LIGHT),
        MSG_TABLE(ENGLISH, MSG_LIGHT_OFF),
        MSG_TABLE(ENGLISH, MSG_LIGHT_ON),
        MSG_TABLE(ENGLISH, MSG_SEC),
        MSG_TABLE(ENGLISH, MSG_BATTERY),
        MSG_TABLE(ENGLISH, MSG_U_MIN),
        MSG_TABLE(ENGLISH, MSG_U_SETUP),
        MSG_TABLE(ENGLISH, MSG_U_OFFSET),
        MSG_TABLE(ENGLISH, MSG_MK_BATTERY),
        MSG_TABLE(ENGLISH, MSG_MK_BAT_NR),
        MSG_TABLE(ENGLISH, MSG_MK_BAT_CAPACITY),
        MSG_TABLE(ENGLISH, MSG_MK_I_OFFSET),
        MSG_TABLE(ENGLISH, MSG_MK_I_FAKTOR),
        MSG_TABLE(ENGLISH, MSG_MK_W_FAKTOR),
        MSG_TABLE(ENGLISH, MSG_CALIBRATION),
        MSG_TABLE(ENGLISH, MSG_RUNNING),
        MSG_TABLE(ENGLISH, MSG_ERROR),
        MSG_TABLE(ENGLISH, MSG_TX_NOT),
        MSG_TABLE(ENGLISH, MSG_ACCU_LOW),
        MSG_TABLE(ENGLISH, MSG_SERVO_CALIBR),
        MSG_TABLE(ENGLISH, MSG_SERVO_STEPS),
        MSG_TABLE(ENGLISH, MSG_SERVO1_REVERSE),
        MSG_TABLE(ENGLISH, MSG_CALIB1_LEFT),
        MSG_TABLE(ENGLISH, MSG_CALIB1_RIGHT),
        MSG_TABLE(ENGLISH, MSG_CALIB1_MIDDLE),
        MSG_TABLE(ENGLISH, MSG_SERVO2_REVERSE),
        MSG_TABLE(ENGLISH, MSG_CALIB2_LEFT),
        MSG_TABLE(ENGLISH, MSG_CALIB2_RIGHT),
        MSG_TABLE(ENGLISH, MSG_CALIB2_MIDDLE),
        MSG_TABLE(ENGLISH, MSG_FRAME),
        MSG_TABLE(ENGLISH, MSG_PULSE_WIDTH),
        MSG_TABLE(ENGLISH, MSG_CONTINOUS),
        MSG_TABLE(ENGLISH, MSG_SINGLE_STE),
        MSG_TABLE(ENGLISH, MSG_REPEAT),
        MSG_TABLE(ENGLISH, MSG_PAUSE),
        MSG_TABLE(ENGLISH, MSG_PAUSE_STEP),
        MSG_TABLE(ENGLISH, MSG_COUNTER),
        MSG_TABLE(ENGLISH, MSG_START),
        MSG_TABLE(ENGLISH, MSG_OFF),
        MSG_TABLE(ENGLISH, MSG_ON),
        MSG_TABLE(ENGLISH, MSG_TRACKING),
        MSG_TABLE(ENGLISH, MSG_TRACK_GPS),
        MSG_TABLE(ENGLISH, MSG_TRACK_NMEA),
        MSG_TABLE(ENGLISH, MSG_TRACK_TX_OSD_DATA),
        MSG_TABLE(ENGLISH, MSG_HYSTERESE),
        MSG_TABLE(ENGLISH, MSG_TRACK_TX_ON),
        MSG_TABLE(ENGLISH, MSG_GPS_DISPLAY),
        MSG_TABLE(ENGLISH, MSG_GPS_CALCULATE),
        MSG_TABLE(ENGLISH, MSG_GPS_CURRENT),
        MSG_TABLE(ENGLISH, MSG_GPS_HOME),
        MSG_TABLE(ENGLISH, MSG_GPS_MISC),
        MSG_TABLE(ENGLISH, MSG_GPS_NO_DATA),
        MSG_TABLE(ENGLISH, MSG_RX_TIME),
        MSG_TABLE(ENGLISH, MSG_COM),
        MSG_TABLE(ENGLISH, MSG_KOMMA),
        MSG_TABLE(ENGLISH, MSG_UHW33V),
};

PGM_P MessageTableFrench[LAST_NAT_MESSAGE+1] PROGMEM = {
        MSG_TABLE(FRENCH, MSG_LANGUAGE),
        MSG_TABLE(FRENCH, MSG_GERMAN),
        MSG_TABLE(FRENCH, MSG_ENGLISH),
        MSG_TABLE(FRENCH, MSG_FRENCH),
        MSG_TABLE(FRENCH, MSG_RETURN),
        MSG_TABLE(FRENCH, MSG_AV_SOURCE),
        MSG_TABLE(FRENCH, MSG_RX_CHANNEL),
        MSG_TABLE(FRENCH, MSG_RSSI_CALIBR),
        MSG_TABLE(FRENCH, MSG_RSSI_MIN_ALL),
        MSG_TABLE(FRENCH, MSG_CALIB),
        MSG_TABLE(FRENCH, MSG_TX),
        MSG_TABLE(FRENCH, MSG_TX_OFF),
        MSG_TABLE(FRENCH, MSG_TX_ON),
        MSG_TABLE(FRENCH, MSG_CONTINUE),
        MSG_TABLE(FRENCH, MSG_CONTRAST),
        MSG_TABLE(FRENCH, MSG_BACKGR_LIGHT),
        MSG_TABLE(FRENCH, MSG_LIGHT),
        MSG_TABLE(FRENCH, MSG_LIGHT_OFF),
        MSG_TABLE(FRENCH, MSG_LIGHT_ON),
        MSG_TABLE(FRENCH, MSG_SEC),
        MSG_TABLE(FRENCH, MSG_BATTERY),
        MSG_TABLE(FRENCH, MSG_U_MIN),
        MSG_TABLE(FRENCH, MSG_U_SETUP),
        MSG_TABLE(FRENCH, MSG_U_OFFSET),
        MSG_TABLE(FRENCH, MSG_MK_BATTERY),
        MSG_TABLE(FRENCH, MSG_MK_BAT_NR),
        MSG_TABLE(FRENCH, MSG_MK_BAT_CAPACITY),
        MSG_TABLE(FRENCH, MSG_MK_I_OFFSET),
        MSG_TABLE(FRENCH, MSG_MK_I_FAKTOR),
        MSG_TABLE(FRENCH, MSG_MK_W_FAKTOR),
        MSG_TABLE(FRENCH, MSG_CALIBRATION),
        MSG_TABLE(FRENCH, MSG_RUNNING),
        MSG_TABLE(FRENCH, MSG_ERROR),
        MSG_TABLE(FRENCH, MSG_TX_NOT),
        MSG_TABLE(FRENCH, MSG_ACCU_LOW),
        MSG_TABLE(FRENCH, MSG_SERVO_CALIBR),
        MSG_TABLE(FRENCH, MSG_SERVO_STEPS),
        MSG_TABLE(FRENCH, MSG_SERVO1_REVERSE),
        MSG_TABLE(FRENCH, MSG_CALIB1_LEFT),
        MSG_TABLE(FRENCH, MSG_CALIB1_RIGHT),
        MSG_TABLE(FRENCH, MSG_CALIB1_MIDDLE),
        MSG_TABLE(FRENCH, MSG_SERVO2_REVERSE),
        MSG_TABLE(FRENCH, MSG_CALIB2_LEFT),
        MSG_TABLE(FRENCH, MSG_CALIB2_RIGHT),
        MSG_TABLE(FRENCH, MSG_CALIB2_MIDDLE),
        MSG_TABLE(FRENCH, MSG_FRAME),
        MSG_TABLE(FRENCH, MSG_PULSE_WIDTH),
        MSG_TABLE(FRENCH, MSG_CONTINOUS),
        MSG_TABLE(FRENCH, MSG_SINGLE_STE),
        MSG_TABLE(FRENCH, MSG_REPEAT),
        MSG_TABLE(FRENCH, MSG_PAUSE),
        MSG_TABLE(FRENCH, MSG_PAUSE_STEP),
        MSG_TABLE(FRENCH, MSG_COUNTER),
        MSG_TABLE(FRENCH, MSG_START),
        MSG_TABLE(FRENCH, MSG_OFF),
        MSG_TABLE(FRENCH, MSG_ON),
        MSG_TABLE(FRENCH, MSG_TRACKING),
        MSG_TABLE(FRENCH, MSG_TRACK_GPS),
        MSG_TABLE(FRENCH, MSG_TRACK_NMEA),
        MSG_TABLE(FRENCH, MSG_TRACK_TX_OSD_DATA),
        MSG_TABLE(FRENCH, MSG_HYSTERESE),
        MSG_TABLE(FRENCH, MSG_TRACK_TX_ON),
        MSG_TABLE(FRENCH, MSG_GPS_DISPLAY),
        MSG_TABLE(FRENCH, MSG_GPS_CALCULATE),
        MSG_TABLE(FRENCH, MSG_GPS_CURRENT),
        MSG_TABLE(FRENCH, MSG_GPS_HOME),
        MSG_TABLE(FRENCH, MSG_GPS_MISC),
        MSG_TABLE(FRENCH, MSG_GPS_NO_DATA),
        MSG_TABLE(FRENCH, MSG_RX_TIME),
        MSG_TABLE(FRENCH, MSG_COM),
        MSG_TABLE(FRENCH, MSG_KOMMA),
        MSG_TABLE(FRENCH, MSG_UHW33V),
};

PGM_P MessageTableInternational[MESSAGE_LAST_MESSAGE+1] PROGMEM = {
        MSG_TABLE(INTERNAT, MSG_RSSI_MIN),
        MSG_TABLE(INTERNAT, MSG_RSSI_MAX),
        MSG_TABLE(INTERNAT, MSG_DIVERSITY),
        MSG_TABLE(INTERNAT, MSG_LCD),
        MSG_TABLE(INTERNAT, MSG_AV1),
        MSG_TABLE(INTERNAT, MSG_AV2),
        MSG_TABLE(INTERNAT, MSG_RX1),
        MSG_TABLE(INTERNAT, MSG_RX2),
        MSG_TABLE(INTERNAT, MSG_STEPS_255),
        MSG_TABLE(INTERNAT, MSG_STEPS_1023),
        MSG_TABLE(INTERNAT, MSG_SERVO),
        MSG_TABLE(INTERNAT, MSG_SERVO1),
        MSG_TABLE(INTERNAT, MSG_SERVO2),
        MSG_TABLE(INTERNAT, MSG_TEST_SERVO),
        MSG_TABLE(INTERNAT, MSG_TRACK_RSSI),
        MSG_TABLE(INTERNAT, MSG_TRACK_MKCOCKPIT),
        MSG_TABLE(INTERNAT, MSG_TRACK_SERVO_HYTERESE),
        MSG_TABLE(INTERNAT, MSG_BAUDRATE),
        MSG_TABLE(INTERNAT, MSG_UHW5V),
        MSG_TABLE(INTERNAT, MSG_VERSION1),
        MSG_TABLE(INTERNAT, MSG_VERSION2)
};

char* Msg(MessageType Message)
{ static char Str[LCD_LINES * LCD_COLS + 1];

        if (Message > LAST_NAT_MESSAGE)
                strcpy_P(Str, (const char*)( pgm_read_word( &(MessageTableInternational[Message - LAST_NAT_MESSAGE - 1]))));
        else
                switch (language) {
                        case ENGLISH: strcpy_P(Str, (const char*)( pgm_read_word( &(MessageTableEnglish[Message]))));
                                                                                break;
                        case FRENCH : strcpy_P(Str, (const char*)( pgm_read_word( &(MessageTableFrench[Message]))));
                                                                                break;
                        default:                        strcpy_P(Str, (const char*)( pgm_read_word( &(MessageTableGerman[Message]))));
        }
        return(Str);
}