2016-03-25 01:19:46 -05:00
|
|
|
/**
|
2016-03-24 13:01:20 -05:00
|
|
|
* Marlin 3D Printer Firmware
|
|
|
|
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
|
|
|
*
|
|
|
|
* Based on Sprinter and grbl.
|
|
|
|
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
|
|
|
*
|
|
|
|
* 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 version 3 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. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
2013-07-23 14:49:37 -05:00
|
|
|
#ifndef LANGUAGE_H
|
|
|
|
#define LANGUAGE_H
|
|
|
|
|
2016-07-26 01:04:19 -05:00
|
|
|
#include "MarlinConfig.h"
|
2015-01-30 03:31:58 -06:00
|
|
|
|
2016-12-12 09:18:53 -06:00
|
|
|
#define _UxGT(a) a
|
|
|
|
|
2016-08-15 21:06:04 -05:00
|
|
|
// Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h
|
|
|
|
//#define SIMULATE_ROMFONT
|
2016-08-15 21:00:45 -05:00
|
|
|
|
2016-04-27 01:32:15 -05:00
|
|
|
// Fallback if no language is set. DON'T CHANGE
|
|
|
|
#ifndef LCD_LANGUAGE
|
|
|
|
#define LCD_LANGUAGE en
|
|
|
|
#endif
|
2014-12-29 11:43:19 -06:00
|
|
|
|
2016-04-27 00:25:50 -05:00
|
|
|
// For character-based LCD controllers (DISPLAY_CHARSET_HD44780)
|
|
|
|
#define JAPANESE 1
|
|
|
|
#define WESTERN 2
|
|
|
|
#define CYRILLIC 3
|
2014-12-29 11:43:19 -06:00
|
|
|
|
2014-12-18 11:31:19 -06:00
|
|
|
// NOTE: IF YOU CHANGE LANGUAGE FILES OR MERGE A FILE WITH CHANGES
|
2013-07-23 14:49:37 -05:00
|
|
|
//
|
2014-12-29 11:43:19 -06:00
|
|
|
// ==> ALWAYS TRY TO COMPILE MARLIN WITH/WITHOUT "ULTIPANEL" / "ULTRALCD" / "SDSUPPORT" #define IN "Configuration.h"
|
|
|
|
// ==> ALSO TRY ALL AVAILABLE LANGUAGE OPTIONS
|
2016-03-22 05:58:41 -05:00
|
|
|
// See also https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language
|
2013-07-23 14:49:37 -05:00
|
|
|
|
|
|
|
// Languages
|
2016-06-16 00:02:12 -05:00
|
|
|
// an Aragonese
|
|
|
|
// bg Bulgarian
|
|
|
|
// ca Catalan
|
|
|
|
// cn Chinese
|
|
|
|
// cz Czech
|
2016-03-20 18:14:24 -05:00
|
|
|
// de German
|
2016-07-10 20:59:04 -05:00
|
|
|
// el Greek
|
|
|
|
// el-gr Greek (Greece)
|
2016-06-16 00:02:12 -05:00
|
|
|
// en English
|
2016-03-20 18:14:24 -05:00
|
|
|
// es Spanish
|
2016-06-16 00:02:12 -05:00
|
|
|
// eu Basque-Euskera
|
2016-03-20 18:14:24 -05:00
|
|
|
// fi Finnish
|
2016-06-16 00:02:12 -05:00
|
|
|
// fr French
|
2016-03-20 18:14:24 -05:00
|
|
|
// gl Galician
|
2016-06-16 00:02:12 -05:00
|
|
|
// hr Croatian
|
|
|
|
// it Italian
|
2016-03-20 18:14:24 -05:00
|
|
|
// kana Japanese
|
|
|
|
// kana_utf8 Japanese (UTF8)
|
2016-06-16 00:02:12 -05:00
|
|
|
// nl Dutch
|
|
|
|
// pl Polish
|
|
|
|
// pt Portuguese
|
|
|
|
// pt-br Portuguese (Brazilian)
|
|
|
|
// pt-br_utf8 Portuguese (Brazilian UTF8)
|
|
|
|
// pt_utf8 Portuguese (UTF8)
|
|
|
|
// ru Russian
|
2016-11-06 08:59:02 -06:00
|
|
|
// tr Turkish
|
2016-11-29 06:49:45 -06:00
|
|
|
// uk Ukrainian
|
2013-07-23 14:49:37 -05:00
|
|
|
|
2016-04-22 10:07:26 -05:00
|
|
|
#ifdef DEFAULT_SOURCE_CODE_URL
|
|
|
|
#undef SOURCE_CODE_URL
|
|
|
|
#define SOURCE_CODE_URL DEFAULT_SOURCE_CODE_URL
|
2016-04-02 20:41:01 -05:00
|
|
|
#endif
|
|
|
|
|
2015-02-06 10:17:17 -06:00
|
|
|
#ifdef CUSTOM_MACHINE_NAME
|
2016-04-22 10:07:26 -05:00
|
|
|
#undef MACHINE_NAME
|
2015-02-06 10:17:17 -06:00
|
|
|
#define MACHINE_NAME CUSTOM_MACHINE_NAME
|
2016-02-22 16:05:23 -06:00
|
|
|
#else
|
2016-04-22 10:07:26 -05:00
|
|
|
#ifdef DEFAULT_MACHINE_NAME
|
|
|
|
#undef MACHINE_NAME
|
|
|
|
#define MACHINE_NAME DEFAULT_MACHINE_NAME
|
|
|
|
#endif
|
2015-01-31 23:42:53 -06:00
|
|
|
#endif
|
2014-02-11 16:38:01 -06:00
|
|
|
|
2016-03-11 07:34:48 -06:00
|
|
|
#ifndef MACHINE_UUID
|
2016-04-22 10:07:26 -05:00
|
|
|
#define MACHINE_UUID DEFAULT_MACHINE_UUID
|
2013-11-10 09:36:37 -06:00
|
|
|
#endif
|
|
|
|
|
2016-04-22 10:07:26 -05:00
|
|
|
#ifdef DEFAULT_WEBSITE_URL
|
|
|
|
#undef WEBSITE_URL
|
|
|
|
#define WEBSITE_URL DEFAULT_WEBSITE_URL
|
|
|
|
#endif
|
2014-02-11 16:38:01 -06:00
|
|
|
|
2014-02-12 07:21:26 -06:00
|
|
|
// Common LCD messages
|
2014-12-18 11:31:19 -06:00
|
|
|
|
|
|
|
/* nothing here yet */
|
2014-02-12 07:21:26 -06:00
|
|
|
|
|
|
|
// Common serial messages
|
|
|
|
#define MSG_MARLIN "Marlin"
|
|
|
|
|
2014-08-29 11:02:59 -05:00
|
|
|
// Serial Console Messages (do not translate those!)
|
|
|
|
|
2015-04-13 19:17:36 -05:00
|
|
|
#define MSG_Enqueueing "enqueueing \""
|
2014-12-18 12:33:00 -06:00
|
|
|
#define MSG_POWERUP "PowerUp"
|
|
|
|
#define MSG_EXTERNAL_RESET " External Reset"
|
|
|
|
#define MSG_BROWNOUT_RESET " Brown out Reset"
|
|
|
|
#define MSG_WATCHDOG_RESET " Watchdog Reset"
|
|
|
|
#define MSG_SOFTWARE_RESET " Software Reset"
|
|
|
|
#define MSG_AUTHOR " | Author: "
|
|
|
|
#define MSG_CONFIGURATION_VER " Last Updated: "
|
|
|
|
#define MSG_FREE_MEMORY " Free Memory: "
|
|
|
|
#define MSG_PLANNER_BUFFER_BYTES " PlannerBufferBytes: "
|
|
|
|
#define MSG_OK "ok"
|
2015-04-16 06:07:20 -05:00
|
|
|
#define MSG_WAIT "wait"
|
2016-07-13 20:18:59 -05:00
|
|
|
#define MSG_STATS "Stats: "
|
2014-12-18 12:33:00 -06:00
|
|
|
#define MSG_FILE_SAVED "Done saving file."
|
|
|
|
#define MSG_ERR_LINE_NO "Line Number is not Last Line Number+1, Last Line: "
|
|
|
|
#define MSG_ERR_CHECKSUM_MISMATCH "checksum mismatch, Last Line: "
|
|
|
|
#define MSG_ERR_NO_CHECKSUM "No Checksum with line number, Last Line: "
|
2014-08-29 11:02:59 -05:00
|
|
|
#define MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM "No Line Number with checksum, Last Line: "
|
2014-12-18 12:33:00 -06:00
|
|
|
#define MSG_FILE_PRINTED "Done printing file"
|
|
|
|
#define MSG_BEGIN_FILE_LIST "Begin file list"
|
|
|
|
#define MSG_END_FILE_LIST "End file list"
|
2015-05-01 23:38:32 -05:00
|
|
|
#define MSG_INVALID_EXTRUDER "Invalid extruder"
|
|
|
|
#define MSG_INVALID_SOLENOID "Invalid solenoid"
|
2014-12-18 12:33:00 -06:00
|
|
|
#define MSG_ERR_NO_THERMISTORS "No thermistors - no temperature"
|
2016-11-08 18:05:59 -06:00
|
|
|
#define MSG_M115_REPORT "FIRMWARE_NAME:Marlin " DETAILED_BUILD_VERSION " SOURCE_CODE_URL:" SOURCE_CODE_URL " PROTOCOL_VERSION:" PROTOCOL_VERSION " MACHINE_TYPE:" MACHINE_NAME " EXTRUDER_COUNT:" STRINGIFY(EXTRUDERS) " UUID:" MACHINE_UUID
|
2014-12-18 12:33:00 -06:00
|
|
|
#define MSG_COUNT_X " Count X: "
|
2016-02-11 20:18:22 -06:00
|
|
|
#define MSG_COUNT_A " Count A: "
|
2014-12-18 12:33:00 -06:00
|
|
|
#define MSG_ERR_KILLED "Printer halted. kill() called!"
|
|
|
|
#define MSG_ERR_STOPPED "Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)"
|
2016-03-07 05:48:14 -06:00
|
|
|
#define MSG_BUSY_PROCESSING "busy: processing"
|
|
|
|
#define MSG_BUSY_PAUSED_FOR_USER "busy: paused for user"
|
|
|
|
#define MSG_BUSY_PAUSED_FOR_INPUT "busy: paused for input"
|
2014-12-18 12:33:00 -06:00
|
|
|
#define MSG_RESEND "Resend: "
|
|
|
|
#define MSG_UNKNOWN_COMMAND "Unknown command: \""
|
|
|
|
#define MSG_ACTIVE_EXTRUDER "Active Extruder: "
|
|
|
|
#define MSG_X_MIN "x_min: "
|
|
|
|
#define MSG_X_MAX "x_max: "
|
|
|
|
#define MSG_Y_MIN "y_min: "
|
|
|
|
#define MSG_Y_MAX "y_max: "
|
|
|
|
#define MSG_Z_MIN "z_min: "
|
|
|
|
#define MSG_Z_MAX "z_max: "
|
2016-10-29 01:54:02 -05:00
|
|
|
#define MSG_Z2_MIN "z2_min: "
|
2015-03-24 12:06:44 -05:00
|
|
|
#define MSG_Z2_MAX "z2_max: "
|
2015-04-01 19:22:05 -05:00
|
|
|
#define MSG_Z_PROBE "z_probe: "
|
2015-04-26 20:44:01 -05:00
|
|
|
#define MSG_ERR_MATERIAL_INDEX "M145 S<index> out of range (0-1)"
|
2016-05-21 21:06:27 -05:00
|
|
|
#define MSG_ERR_M421_PARAMETERS "M421 requires XYZ or IJZ parameters"
|
2016-05-20 17:18:09 -05:00
|
|
|
#define MSG_ERR_MESH_XY "Mesh XY or IJ cannot be resolved"
|
2016-09-18 20:23:01 -05:00
|
|
|
#define MSG_ERR_ARC_ARGS "G2/G3 bad parameters"
|
2016-09-22 04:32:31 -05:00
|
|
|
#define MSG_ERR_PROTECTED_PIN "Protected Pin"
|
2015-04-29 21:05:48 -05:00
|
|
|
#define MSG_ERR_M428_TOO_FAR "Too far from reference point"
|
2016-04-18 21:01:49 -05:00
|
|
|
#define MSG_ERR_M303_DISABLED "PIDTEMP disabled"
|
2014-12-18 12:33:00 -06:00
|
|
|
#define MSG_M119_REPORT "Reporting endstop status"
|
|
|
|
#define MSG_ENDSTOP_HIT "TRIGGERED"
|
|
|
|
#define MSG_ENDSTOP_OPEN "open"
|
|
|
|
#define MSG_HOTEND_OFFSET "Hotend offsets:"
|
2016-07-20 12:30:10 -05:00
|
|
|
#define MSG_DUPLICATION_MODE "Duplication mode: "
|
2016-09-12 17:49:35 -05:00
|
|
|
#define MSG_SOFT_ENDSTOPS "Soft endstops: "
|
|
|
|
#define MSG_SOFT_MIN " Min: "
|
|
|
|
#define MSG_SOFT_MAX " Max: "
|
2014-12-18 12:33:00 -06:00
|
|
|
|
2016-06-27 18:29:35 -05:00
|
|
|
#define MSG_SD_CANT_OPEN_SUBDIR "Cannot open subdir "
|
2014-12-18 12:33:00 -06:00
|
|
|
#define MSG_SD_INIT_FAIL "SD init fail"
|
|
|
|
#define MSG_SD_VOL_INIT_FAIL "volume.init failed"
|
|
|
|
#define MSG_SD_OPENROOT_FAIL "openRoot failed"
|
|
|
|
#define MSG_SD_CARD_OK "SD card ok"
|
|
|
|
#define MSG_SD_WORKDIR_FAIL "workDir open failed"
|
|
|
|
#define MSG_SD_OPEN_FILE_FAIL "open failed, File: "
|
|
|
|
#define MSG_SD_FILE_OPENED "File opened: "
|
|
|
|
#define MSG_SD_SIZE " Size: "
|
|
|
|
#define MSG_SD_FILE_SELECTED "File selected"
|
|
|
|
#define MSG_SD_WRITE_TO_FILE "Writing to file: "
|
|
|
|
#define MSG_SD_PRINTING_BYTE "SD printing byte "
|
|
|
|
#define MSG_SD_NOT_PRINTING "Not SD printing"
|
|
|
|
#define MSG_SD_ERR_WRITE_TO_FILE "error writing to file"
|
2016-06-19 19:14:56 -05:00
|
|
|
#define MSG_SD_ERR_READ "SD read error"
|
2014-12-21 20:57:41 -06:00
|
|
|
#define MSG_SD_CANT_ENTER_SUBDIR "Cannot enter subdir: "
|
2014-12-18 12:33:00 -06:00
|
|
|
|
|
|
|
#define MSG_STEPPER_TOO_HIGH "Steprate too high: "
|
|
|
|
#define MSG_ENDSTOPS_HIT "endstops hit: "
|
|
|
|
#define MSG_ERR_COLD_EXTRUDE_STOP " cold extrusion prevented"
|
|
|
|
#define MSG_ERR_LONG_EXTRUDE_STOP " too long extrusion prevented"
|
2015-06-15 19:50:26 -05:00
|
|
|
#define MSG_TOO_COLD_FOR_M600 "M600 Hotend too cold to change filament"
|
2014-12-18 12:33:00 -06:00
|
|
|
#define MSG_BABYSTEPPING_X "Babystepping X"
|
|
|
|
#define MSG_BABYSTEPPING_Y "Babystepping Y"
|
|
|
|
#define MSG_BABYSTEPPING_Z "Babystepping Z"
|
2014-12-21 20:57:41 -06:00
|
|
|
#define MSG_SERIAL_ERROR_MENU_STRUCTURE "Error in menu structure"
|
2014-12-18 12:33:00 -06:00
|
|
|
|
2015-01-28 23:19:51 -06:00
|
|
|
#define MSG_ERR_EEPROM_WRITE "Error writing to EEPROM!"
|
|
|
|
|
2015-02-25 01:03:08 -06:00
|
|
|
// temperature.cpp strings
|
|
|
|
#define MSG_PID_AUTOTUNE "PID Autotune"
|
|
|
|
#define MSG_PID_AUTOTUNE_START MSG_PID_AUTOTUNE " start"
|
|
|
|
#define MSG_PID_AUTOTUNE_FAILED MSG_PID_AUTOTUNE " failed!"
|
|
|
|
#define MSG_PID_BAD_EXTRUDER_NUM MSG_PID_AUTOTUNE_FAILED " Bad extruder number"
|
|
|
|
#define MSG_PID_TEMP_TOO_HIGH MSG_PID_AUTOTUNE_FAILED " Temperature too high"
|
|
|
|
#define MSG_PID_TIMEOUT MSG_PID_AUTOTUNE_FAILED " timeout"
|
|
|
|
#define MSG_BIAS " bias: "
|
|
|
|
#define MSG_D " d: "
|
2015-03-05 17:25:44 -06:00
|
|
|
#define MSG_T_MIN " min: "
|
|
|
|
#define MSG_T_MAX " max: "
|
2015-02-25 01:03:08 -06:00
|
|
|
#define MSG_KU " Ku: "
|
|
|
|
#define MSG_TU " Tu: "
|
|
|
|
#define MSG_CLASSIC_PID " Classic PID "
|
|
|
|
#define MSG_KP " Kp: "
|
|
|
|
#define MSG_KI " Ki: "
|
|
|
|
#define MSG_KD " Kd: "
|
2015-06-10 01:27:56 -05:00
|
|
|
#define MSG_B "B:"
|
|
|
|
#define MSG_T "T:"
|
2015-02-25 01:03:08 -06:00
|
|
|
#define MSG_AT " @:"
|
2015-04-17 04:15:09 -05:00
|
|
|
#define MSG_PID_AUTOTUNE_FINISHED MSG_PID_AUTOTUNE " finished! Put the last Kp, Ki and Kd constants from below into Configuration.h"
|
2015-02-25 01:03:08 -06:00
|
|
|
#define MSG_PID_DEBUG " PID_DEBUG "
|
|
|
|
#define MSG_PID_DEBUG_INPUT ": Input "
|
|
|
|
#define MSG_PID_DEBUG_OUTPUT " Output "
|
|
|
|
#define MSG_PID_DEBUG_PTERM " pTerm "
|
|
|
|
#define MSG_PID_DEBUG_ITERM " iTerm "
|
|
|
|
#define MSG_PID_DEBUG_DTERM " dTerm "
|
2015-08-30 21:04:30 -05:00
|
|
|
#define MSG_PID_DEBUG_CTERM " cTerm "
|
2015-02-25 01:03:08 -06:00
|
|
|
#define MSG_INVALID_EXTRUDER_NUM " - Invalid extruder number !"
|
2015-05-18 13:26:25 -05:00
|
|
|
|
|
|
|
#define MSG_HEATER_BED "bed"
|
|
|
|
#define MSG_STOPPED_HEATER ", system stopped! Heater_ID: "
|
|
|
|
#define MSG_REDUNDANCY "Heater switched off. Temperature difference between temp sensors is too high !"
|
|
|
|
#define MSG_T_HEATING_FAILED "Heating failed"
|
|
|
|
#define MSG_T_THERMAL_RUNAWAY "Thermal Runaway"
|
|
|
|
#define MSG_T_MAXTEMP "MAXTEMP triggered"
|
|
|
|
#define MSG_T_MINTEMP "MINTEMP triggered"
|
|
|
|
|
2015-06-03 01:18:27 -05:00
|
|
|
// Debug
|
2016-04-04 17:36:07 -05:00
|
|
|
#define MSG_DEBUG_PREFIX "DEBUG:"
|
2016-03-29 21:18:45 -05:00
|
|
|
#define MSG_DEBUG_OFF "off"
|
|
|
|
#define MSG_DEBUG_ECHO "ECHO"
|
|
|
|
#define MSG_DEBUG_INFO "INFO"
|
|
|
|
#define MSG_DEBUG_ERRORS "ERRORS"
|
|
|
|
#define MSG_DEBUG_DRYRUN "DRYRUN"
|
|
|
|
#define MSG_DEBUG_COMMUNICATION "COMMUNICATION"
|
|
|
|
#define MSG_DEBUG_LEVELING "LEVELING"
|
2015-02-25 01:03:08 -06:00
|
|
|
|
2014-12-18 12:33:00 -06:00
|
|
|
// LCD Menu Messages
|
2014-02-12 07:21:26 -06:00
|
|
|
|
2016-04-27 01:32:15 -05:00
|
|
|
#define LANGUAGE_INCL_(M) STRINGIFY_(language_##M.h)
|
|
|
|
#define LANGUAGE_INCL(M) LANGUAGE_INCL_(M)
|
|
|
|
#define INCLUDE_LANGUAGE LANGUAGE_INCL(LCD_LANGUAGE)
|
|
|
|
|
2016-08-18 21:00:44 -05:00
|
|
|
// Never translate these strings
|
|
|
|
#define MSG_X "X"
|
|
|
|
#define MSG_Y "Y"
|
|
|
|
#define MSG_Z "Z"
|
|
|
|
#define MSG_E "E"
|
|
|
|
#define MSG_H1 "1"
|
|
|
|
#define MSG_H2 "2"
|
|
|
|
#define MSG_H3 "3"
|
|
|
|
#define MSG_H4 "4"
|
|
|
|
#define MSG_N1 " 1"
|
|
|
|
#define MSG_N2 " 2"
|
|
|
|
#define MSG_N3 " 3"
|
|
|
|
#define MSG_N4 " 4"
|
2016-12-08 04:57:41 -06:00
|
|
|
#define MSG_E1 "E1"
|
|
|
|
#define MSG_E2 "E2"
|
|
|
|
#define MSG_E3 "E3"
|
|
|
|
#define MSG_E4 "E4"
|
2016-08-18 21:00:44 -05:00
|
|
|
#define MSG_MOVE_E1 "1"
|
|
|
|
#define MSG_MOVE_E2 "2"
|
|
|
|
#define MSG_MOVE_E3 "3"
|
|
|
|
#define MSG_MOVE_E4 "4"
|
|
|
|
#define MSG_DIAM_E1 " 1"
|
|
|
|
#define MSG_DIAM_E2 " 2"
|
|
|
|
#define MSG_DIAM_E3 " 3"
|
|
|
|
#define MSG_DIAM_E4 " 4"
|
|
|
|
|
2016-04-27 01:32:15 -05:00
|
|
|
#include INCLUDE_LANGUAGE
|
2016-08-15 21:00:45 -05:00
|
|
|
|
2016-11-26 05:54:46 -06:00
|
|
|
#if DISABLED(SIMULATE_ROMFONT) \
|
|
|
|
&& DISABLED(DISPLAY_CHARSET_ISO10646_1) \
|
|
|
|
&& DISABLED(DISPLAY_CHARSET_ISO10646_5) \
|
|
|
|
&& DISABLED(DISPLAY_CHARSET_ISO10646_KANA) \
|
|
|
|
&& DISABLED(DISPLAY_CHARSET_ISO10646_GREEK) \
|
|
|
|
&& DISABLED(DISPLAY_CHARSET_ISO10646_CN) \
|
|
|
|
&& DISABLED(DISPLAY_CHARSET_ISO10646_TR)
|
2016-08-15 21:00:45 -05:00
|
|
|
#define DISPLAY_CHARSET_ISO10646_1 // use the better font on full graphic displays.
|
|
|
|
#endif
|
|
|
|
|
2015-02-08 13:41:20 -06:00
|
|
|
#include "language_en.h"
|
2014-03-23 04:30:08 -05:00
|
|
|
|
2014-12-18 12:33:00 -06:00
|
|
|
#endif //__LANGUAGE_H
|