compiler/i18n: Added i18n strings to libec/ecc/ecp/ecs
authorJerome St-Louis <jerome@ecere.com>
Sun, 19 Feb 2012 11:43:33 +0000 (20:43 +0900)
committerJerome St-Louis <jerome@ecere.com>
Sun, 19 Feb 2012 11:43:33 +0000 (20:43 +0900)
71 files changed:
.gitignore
compiler/bootstrap/ecc/bootstrap/ecc.c
compiler/bootstrap/ecc/bootstrap/ecc.main.c
compiler/bootstrap/ecere/bootstrap/instance.c
compiler/bootstrap/ecp/bootstrap/ecp.c
compiler/bootstrap/ecp/bootstrap/ecp.main.c
compiler/bootstrap/ecs/bootstrap/ecs.c
compiler/bootstrap/ecs/bootstrap/ecs.main.c
compiler/bootstrap/libec/bootstrap/ast.c
compiler/bootstrap/libec/bootstrap/dbpass.c
compiler/bootstrap/libec/bootstrap/ec.main.c
compiler/bootstrap/libec/bootstrap/ecdefs.c
compiler/bootstrap/libec/bootstrap/expression.c
compiler/bootstrap/libec/bootstrap/firstPass.c
compiler/bootstrap/libec/bootstrap/grammar.c
compiler/bootstrap/libec/bootstrap/lexer.c
compiler/bootstrap/libec/bootstrap/loadSymbols.c
compiler/bootstrap/libec/bootstrap/pass0.c
compiler/bootstrap/libec/bootstrap/pass1.c
compiler/bootstrap/libec/bootstrap/pass15.c
compiler/bootstrap/libec/bootstrap/pass16.c
compiler/bootstrap/libec/bootstrap/pass2.c
compiler/bootstrap/libec/bootstrap/shortcuts.c
compiler/bootstrap/libec/bootstrap/type.c
compiler/ecc/Makefile
compiler/ecc/ecc.ec
compiler/ecc/ecc.epj
compiler/ecc/locale/zh_CN/LC_MESSAGES/ecc.mo [new file with mode: 0644]
compiler/ecc/locale/zh_CN/LC_MESSAGES/ecc.po [new file with mode: 0644]
compiler/ecp/Makefile
compiler/ecp/ecp.ec
compiler/ecp/ecp.epj
compiler/ecp/locale/zh_CN/LC_MESSAGES/ecp.mo [new file with mode: 0644]
compiler/ecp/locale/zh_CN/LC_MESSAGES/ecp.po [new file with mode: 0644]
compiler/ecs/Makefile
compiler/ecs/ecs.ec
compiler/ecs/ecs.epj
compiler/ecs/locale/zh_CN/LC_MESSAGES/ecs.mo [new file with mode: 0644]
compiler/ecs/locale/zh_CN/LC_MESSAGES/ecs.po [new file with mode: 0644]
compiler/libec/Makefile
compiler/libec/ec.epj
compiler/libec/locale/zh_CN/LC_MESSAGES/ec.mo [new file with mode: 0644]
compiler/libec/locale/zh_CN/LC_MESSAGES/ec.po [new file with mode: 0644]
compiler/libec/precompiled/expression.c
compiler/libec/precompiled/grammar.c
compiler/libec/precompiled/type.c
compiler/libec/src/ast.ec
compiler/libec/src/dbpass.ec
compiler/libec/src/ecdefs.ec
compiler/libec/src/expression.y
compiler/libec/src/firstPass.ec
compiler/libec/src/grammar.ec
compiler/libec/src/grammar.y
compiler/libec/src/lexer.ec
compiler/libec/src/lexer.l
compiler/libec/src/loadSymbols.ec
compiler/libec/src/pass0.ec
compiler/libec/src/pass1.ec
compiler/libec/src/pass15.ec
compiler/libec/src/pass16.ec
compiler/libec/src/pass2.ec
compiler/libec/src/shortcuts.ec
compiler/libec/src/type.ec
compiler/libec/src/type.y
ecere/Makefile.ecereCOM
ecere/ecereCOM.epj
ecere/src/com/instance.ec
ecere/src/sys/i18n.ec
eda/drivers/sqlite/Makefile
eda/drivers/sqliteCipher/Makefile
eda/libeda/Makefile

index 8ded86a..69fb162 100644 (file)
@@ -5,6 +5,8 @@
 *.imp
 *.sym
 *.main.ec
+*.pot
+*.bowl
 
 # Intermediate dirs
 #obj/**/*.c
index 16300da..a1a7c5f 100644 (file)
@@ -130,6 +130,7 @@ int simpleID;
 struct __ecereNameSpace__ecere__sys__BinaryTree templateTypes;
 struct ClassDefinition * classDef;
 unsigned int templateTypesOnly;
+unsigned int hasNameSpace;
 };
 
 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Instantiation;
@@ -301,6 +302,7 @@ struct __ecereNameSpace__ecere__sys__OldList *  templateParams;
 struct __ecereNameSpace__ecere__sys__OldList templatedClasses;
 struct Context * ctx;
 int isIterator;
+struct Expression * propCategory;
 };
 
 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Type;
@@ -637,6 +639,10 @@ extern char *  __ecereNameSpace__ecere__sys__ChangeExtension(char *  string, cha
 
 extern int printf(char * , ...);
 
+extern char *  __ecereNameSpace__ecere__GetTranslatedString(struct __ecereNameSpace__ecere__com__Instance * module, char *  string, char *  stringAndContext);
+
+extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
+
 extern void SetGlobalData(struct __ecereNameSpace__ecere__com__NameSpace *  nameSpace);
 
 extern void SetExcludedSymbols(struct __ecereNameSpace__ecere__sys__OldList *  list);
@@ -986,7 +992,7 @@ SetOutputFile(defaultOutputFile);
 }
 }
 if(!valid)
-printf("Syntax:\n   ecc [-t <target platform>] [-cpp <c preprocessor>] [-o <output>] [-symbols <outputdir>] [-I<includedir>]* [-isystem <sysincludedir>]* [-D<definition>]* -c <input>\n");
+printf(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Syntax:\n   ecc [-t <target platform>] [-cpp <c preprocessor>] [-o <output>] [-symbols <outputdir>] [-I<includedir>]* [-isystem <sysincludedir>]* [-D<definition>]* -c <input>\n", (((void *)0))));
 else
 {
 struct __ecereNameSpace__ecere__com__Instance * cppOutput;
@@ -1175,8 +1181,6 @@ struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace;
 struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace;
 };
 
-extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
-
 extern struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_AddMethod(struct __ecereNameSpace__ecere__com__Class * _class, char *  name, char *  type, void *  function, int declMode);
 
 void __ecereRegisterModule_ecc(struct __ecereNameSpace__ecere__com__Instance * module)
index 2d2835d..d6a23f4 100644 (file)
@@ -469,6 +469,8 @@ extern struct __ecereNameSpace__ecere__com__Property * __ecereNameSpace__ecere__
 
 extern struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_FindMethod(struct __ecereNameSpace__ecere__com__Class * _class, char *  name, struct __ecereNameSpace__ecere__com__Instance * module);
 
+extern void __ecereNameSpace__ecere__LoadTranslatedStrings(struct __ecereNameSpace__ecere__com__Instance * module, char *  name);
+
 extern void __ecereNameSpace__ecere__com__eInstance_Evolve(struct __ecereNameSpace__ecere__com__Instance **  instancePtr, struct __ecereNameSpace__ecere__com__Class * _class);
 
 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__NameSpace;
@@ -506,6 +508,8 @@ struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace;
 struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace;
 };
 
+extern void __ecereNameSpace__ecere__UnloadTranslatedStrings(struct __ecereNameSpace__ecere__com__Instance * module);
+
 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Application;
 
 struct __ecereNameSpace__ecere__com__Application
@@ -593,12 +597,14 @@ if(method)
 __ecereVMethodID___ecereNameSpace__ecere__sys__File_Write = method->vid;
 __ecereClass___ecereNameSpace__ecere__sys__OldList = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "ecere::sys::OldList");
 __ecereClass___ecereNameSpace__ecere__sys__TempFile = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "ecere::sys::TempFile");
+__ecereNameSpace__ecere__LoadTranslatedStrings(module, "ecc");
 _class = __ecereNameSpace__ecere__com__eSystem_FindClass(__currentModule, "CompilerApp");
 __ecereNameSpace__ecere__com__eInstance_Evolve((struct __ecereNameSpace__ecere__com__Instance **)&__currentModule, _class);
 __thisModule = __currentModule;
 __ecereCreateModuleInstances_ecc();
 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)__currentModule)->_vTbl[12](__currentModule);
 __ecereDestroyModuleInstances_ecc();
+__ecereNameSpace__ecere__UnloadTranslatedStrings(__currentModule);
 _class = __ecereNameSpace__ecere__com__eSystem_FindClass(__currentModule, "ecere::com::Application");
 exitCode = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Instance *)__currentModule) + 296)))->exitCode;
 (__ecereNameSpace__ecere__com__eInstance_DecRef(__currentModule), __currentModule = 0);
index 4c17fed..d641033 100644 (file)
@@ -1367,6 +1367,8 @@ static void __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(struct __ecer
 
 extern int printf(char * , ...);
 
+extern char *  __ecereNameSpace__ecere__GetTranslatedString(struct __ecereNameSpace__ecere__com__Instance * module, char *  string, char *  stringAndContext);
+
 static void __ecereNameSpace__ecere__com__NameSpace_Free(struct __ecereNameSpace__ecere__com__NameSpace * parentNameSpace);
 
 static struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereNameSpace__ecere__com__SearchNameSpace(struct __ecereNameSpace__ecere__com__NameSpace * nameSpace, char *  name, void *  listOffset);
@@ -1520,7 +1522,7 @@ __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(_class);
 if(!_class->internalDecl)
 {
 if(declMode != 4)
-printf("error: Redefinition of class %s\n", name);
+printf(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "error: Redefinition of class %s\n", (((void *)0))), name);
 else
 {
 _class->comRedefinition = 0x1;
index 4547eee..aec694e 100644 (file)
@@ -144,6 +144,7 @@ int simpleID;
 struct __ecereNameSpace__ecere__sys__BinaryTree templateTypes;
 struct ClassDefinition * classDef;
 unsigned int templateTypesOnly;
+unsigned int hasNameSpace;
 };
 
 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Instantiation;
@@ -580,6 +581,7 @@ struct __ecereNameSpace__ecere__sys__OldList *  templateParams;
 struct __ecereNameSpace__ecere__sys__OldList templatedClasses;
 struct Context * ctx;
 int isIterator;
+struct Expression * propCategory;
 };
 
 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Type;
@@ -882,7 +884,7 @@ struct Statement * issetStmt;
 struct Symbol * symbol;
 unsigned int conversion;
 unsigned int isWatchable;
-char *  category;
+struct Expression * category;
 };
 
 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyWatch;
@@ -2367,6 +2369,10 @@ extern char *  __ecereNameSpace__ecere__sys__ChangeExtension(char *  string, cha
 
 extern int printf(char * , ...);
 
+extern char *  __ecereNameSpace__ecere__GetTranslatedString(struct __ecereNameSpace__ecere__com__Instance * module, char *  string, char *  stringAndContext);
+
+extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
+
 extern void SetGlobalContext(struct Context * context);
 
 extern void SetTopContext(struct Context * context);
@@ -2620,7 +2626,7 @@ SetOutputFile(defaultSymFile);
 }
 }
 if(!valid)
-printf("Syntax:\n   ecp [-t <target platform>] [-cpp <c preprocessor>] [-o <output>] [-symbols <outputdir>] [-I<includedir>]* [-isystem <sysincludedir>]* [-D<definition>]* -c <input>\n");
+printf(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Syntax:\n   ecp [-t <target platform>] [-cpp <c preprocessor>] [-o <output>] [-symbols <outputdir>] [-I<includedir>]* [-isystem <sysincludedir>]* [-D<definition>]* -c <input>\n", (((void *)0))));
 else
 {
 char command[1024];
@@ -2727,8 +2733,6 @@ struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace;
 struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace;
 };
 
-extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
-
 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__GlobalFunction;
 
 struct __ecereNameSpace__ecere__com__GlobalFunction;
index a6a92e1..4861f10 100644 (file)
@@ -497,6 +497,8 @@ extern struct __ecereNameSpace__ecere__com__Property * __ecereNameSpace__ecere__
 
 extern struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_FindMethod(struct __ecereNameSpace__ecere__com__Class * _class, char *  name, struct __ecereNameSpace__ecere__com__Instance * module);
 
+extern void __ecereNameSpace__ecere__LoadTranslatedStrings(struct __ecereNameSpace__ecere__com__Instance * module, char *  name);
+
 extern void __ecereNameSpace__ecere__com__eInstance_Evolve(struct __ecereNameSpace__ecere__com__Instance **  instancePtr, struct __ecereNameSpace__ecere__com__Class * _class);
 
 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__NameSpace;
@@ -534,6 +536,8 @@ struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace;
 struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace;
 };
 
+extern void __ecereNameSpace__ecere__UnloadTranslatedStrings(struct __ecereNameSpace__ecere__com__Instance * module);
+
 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Application;
 
 struct __ecereNameSpace__ecere__com__Application
@@ -637,12 +641,14 @@ __ecereVMethodID___ecereNameSpace__ecere__sys__File_Write = method->vid;
 __ecereClass___ecereNameSpace__ecere__sys__NamedLink = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "ecere::sys::NamedLink");
 __ecereClass___ecereNameSpace__ecere__sys__OldList = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "ecere::sys::OldList");
 __ecereClass___ecereNameSpace__ecere__sys__TempFile = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "ecere::sys::TempFile");
+__ecereNameSpace__ecere__LoadTranslatedStrings(module, "ecp");
 _class = __ecereNameSpace__ecere__com__eSystem_FindClass(__currentModule, "PrecompApp");
 __ecereNameSpace__ecere__com__eInstance_Evolve((struct __ecereNameSpace__ecere__com__Instance **)&__currentModule, _class);
 __thisModule = __currentModule;
 __ecereCreateModuleInstances_ecp();
 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)__currentModule)->_vTbl[12](__currentModule);
 __ecereDestroyModuleInstances_ecp();
+__ecereNameSpace__ecere__UnloadTranslatedStrings(__currentModule);
 _class = __ecereNameSpace__ecere__com__eSystem_FindClass(__currentModule, "ecere::com::Application");
 exitCode = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Instance *)__currentModule) + 296)))->exitCode;
 (__ecereNameSpace__ecere__com__eInstance_DecRef(__currentModule), __currentModule = 0);
index 4162bcd..7b3c8be 100644 (file)
@@ -289,6 +289,7 @@ struct __ecereNameSpace__ecere__sys__OldList *  templateParams;
 struct __ecereNameSpace__ecere__sys__OldList templatedClasses;
 struct Context * ctx;
 int isIterator;
+struct Expression * propCategory;
 };
 
 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Type;
@@ -2140,6 +2141,10 @@ extern void SetSymbolsDir(char *  s);
 
 extern int printf(char * , ...);
 
+extern char *  __ecereNameSpace__ecere__GetTranslatedString(struct __ecereNameSpace__ecere__com__Instance * module, char *  string, char *  stringAndContext);
+
+extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
+
 extern char *  __ecereNameSpace__ecere__sys__GetExtension(char *  string, char *  output);
 
 extern void SetDefines(struct __ecereNameSpace__ecere__sys__OldList *  list);
@@ -2348,7 +2353,7 @@ valid = 0x0;
 if(!output)
 valid = 0x0;
 if(!valid)
-printf("Syntax:\n   ecs [-t <target platform>] <input>[, <input>]* -o <output>\n");
+printf(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Syntax:\n   ecs [-t <target platform>] <input>[, <input>]* -o <output>\n", (((void *)0))));
 else
 {
 int c;
@@ -2611,8 +2616,6 @@ SetSymbolsDir((((void *)0)));
 
 extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_RegisterClass(int type, char *  name, char *  baseName, int size, int sizeClass, unsigned int (* )(void * ), void (* )(void * ), struct __ecereNameSpace__ecere__com__Instance * module, int declMode, int inheritanceAccess);
 
-extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
-
 extern struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_AddMethod(struct __ecereNameSpace__ecere__com__Class * _class, char *  name, char *  type, void *  function, int declMode);
 
 void __ecereRegisterModule_ecs(struct __ecereNameSpace__ecere__com__Instance * module)
index aa000fc..df7c457 100644 (file)
@@ -507,6 +507,8 @@ extern struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__co
 
 extern struct __ecereNameSpace__ecere__com__Property * __ecereNameSpace__ecere__com__eClass_FindProperty(struct __ecereNameSpace__ecere__com__Class * _class, char *  name, struct __ecereNameSpace__ecere__com__Instance * module);
 
+extern void __ecereNameSpace__ecere__LoadTranslatedStrings(struct __ecereNameSpace__ecere__com__Instance * module, char *  name);
+
 extern void __ecereNameSpace__ecere__com__eInstance_Evolve(struct __ecereNameSpace__ecere__com__Instance **  instancePtr, struct __ecereNameSpace__ecere__com__Class * _class);
 
 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__NameSpace;
@@ -544,6 +546,8 @@ struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace;
 struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace;
 };
 
+extern void __ecereNameSpace__ecere__UnloadTranslatedStrings(struct __ecereNameSpace__ecere__com__Instance * module);
+
 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Application;
 
 struct __ecereNameSpace__ecere__com__Application
@@ -658,12 +662,14 @@ __ecereVMethodID___ecereNameSpace__ecere__sys__File_Write = method->vid;
 __ecereClass___ecereNameSpace__ecere__sys__OldLink = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "ecere::sys::OldLink");
 __ecereClass___ecereNameSpace__ecere__sys__OldList = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "ecere::sys::OldList");
 __ecereClass___ecereNameSpace__ecere__sys__TempFile = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "ecere::sys::TempFile");
+__ecereNameSpace__ecere__LoadTranslatedStrings(module, "ecs");
 _class = __ecereNameSpace__ecere__com__eSystem_FindClass(__currentModule, "SymbolgenApp");
 __ecereNameSpace__ecere__com__eInstance_Evolve((struct __ecereNameSpace__ecere__com__Instance **)&__currentModule, _class);
 __thisModule = __currentModule;
 __ecereCreateModuleInstances_ecs();
 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)__currentModule)->_vTbl[12](__currentModule);
 __ecereDestroyModuleInstances_ecs();
+__ecereNameSpace__ecere__UnloadTranslatedStrings(__currentModule);
 _class = __ecereNameSpace__ecere__com__eSystem_FindClass(__currentModule, "ecere::com::Application");
 exitCode = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Instance *)__currentModule) + 296)))->exitCode;
 (__ecereNameSpace__ecere__com__eInstance_DecRef(__currentModule), __currentModule = 0);
index 49529ca..cf20193 100644 (file)
@@ -1968,6 +1968,10 @@ extern unsigned int buildingECERECOMModule;
 
 extern void Compiler_Warning(char *  format, ...);
 
+extern char *  __ecereNameSpace__ecere__GetTranslatedString(struct __ecereNameSpace__ecere__com__Instance * module, char *  string, char *  stringAndContext);
+
+extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
+
 struct Declaration * MkDeclarationDefine(struct Identifier * id, struct Expression * exp)
 {
 struct Declaration * decl = (decl = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Declaration), decl->type = 3, decl->id = id, decl->exp = exp, decl->loc = yylloc, decl);
@@ -2004,7 +2008,7 @@ id->string = __ecereNameSpace__ecere__sys__CopyString(name);
 if(!__ecereNameSpace__ecere__com__eSystem_FindDefine(privateModule, id->string))
 __ecereNameSpace__ecere__com__eSystem_RegisterDefine(id->string, expString, privateModule, buildingECERECOMModule ? 4 : 1);
 else
-Compiler_Warning("Redefinition of %s ignored\n", id->string);
+Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Redefinition of %s ignored\n", (((void *)0))), id->string);
 return decl;
 }
 
@@ -2803,7 +2807,7 @@ break;
 FreeList(specs, FreeSpecifier);
 if(!spec)
 {
-Compiler_Error("Expecting class specifier\n");
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Expecting class specifier\n", (((void *)0))));
 inst->_class = MkSpecifierName("");
 }
 }
@@ -4364,8 +4368,6 @@ extern struct __ecereNameSpace__ecere__com__GlobalFunction * __ecereNameSpace__e
 
 extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_RegisterClass(int type, char *  name, char *  baseName, int size, int sizeClass, unsigned int (* )(void * ), void (* )(void * ), struct __ecereNameSpace__ecere__com__Instance * module, int declMode, int inheritanceAccess);
 
-extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
-
 extern struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_AddMethod(struct __ecereNameSpace__ecere__com__Class * _class, char *  name, char *  type, void *  function, int declMode);
 
 extern struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eClass_AddDataMember(struct __ecereNameSpace__ecere__com__Class * _class, char *  name, char *  type, unsigned int size, unsigned int alignment, int declMode);
index 87d6103..5482068 100644 (file)
@@ -626,6 +626,7 @@ struct __ecereNameSpace__ecere__sys__OldList *  templateParams;
 struct __ecereNameSpace__ecere__sys__OldList templatedClasses;
 struct Context * ctx;
 int isIterator;
+struct Expression * propCategory;
 };
 
 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Type;
@@ -947,7 +948,7 @@ struct Statement * issetStmt;
 struct Symbol * symbol;
 unsigned int conversion;
 unsigned int isWatchable;
-char *  category;
+struct Expression * category;
 };
 
 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyWatch;
@@ -1156,6 +1157,10 @@ extern struct Initializer * MkInitializerList(struct __ecereNameSpace__ecere__sy
 
 extern void Compiler_Error(char *  format, ...);
 
+extern char *  __ecereNameSpace__ecere__GetTranslatedString(struct __ecereNameSpace__ecere__com__Instance * module, char *  string, char *  stringAndContext);
+
+extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
+
 extern void *  __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
 
 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(struct __ecereNameSpace__ecere__sys__OldList * this, void *  item);
@@ -1347,7 +1352,7 @@ tableStatements = (((void *)0));
 else
 {
 FreeExpContents(exp);
-Compiler_Error("No database table defined in this module or database_open already used.\n");
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "No database table defined in this module or database_open already used.\n", (((void *)0))));
 exp->type = 16;
 }
 break;
@@ -2081,7 +2086,7 @@ external->declaration->declMode = table->declMode;
 needTable = 0x1;
 }
 else
-Compiler_Error("Multiple field index requires a name\n");
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Multiple field index requires a name\n", (((void *)0))));
 }
 else
 {
index b297350..7d3b34f 100644 (file)
@@ -647,6 +647,8 @@ extern struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__co
 
 extern struct __ecereNameSpace__ecere__com__Property * __ecereNameSpace__ecere__com__eClass_FindProperty(struct __ecereNameSpace__ecere__com__Class * _class, char *  name, struct __ecereNameSpace__ecere__com__Instance * module);
 
+extern void __ecereNameSpace__ecere__LoadTranslatedStrings(struct __ecereNameSpace__ecere__com__Instance * module, char *  name);
+
 unsigned int __ecereDll_Load_ec(struct __ecereNameSpace__ecere__com__Instance * module)
 {
 struct __ecereNameSpace__ecere__com__Class * _class;
@@ -808,6 +810,7 @@ __ecereClass___ecereNameSpace__ecere__sys__NamedLink = __ecereNameSpace__ecere__
 __ecereClass___ecereNameSpace__ecere__sys__OldLink = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "ecere::sys::OldLink");
 __ecereClass___ecereNameSpace__ecere__sys__OldList = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "ecere::sys::OldList");
 __ecereClass___ecereNameSpace__ecere__sys__TempFile = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "ecere::sys::TempFile");
+__ecereNameSpace__ecere__LoadTranslatedStrings(module, "ec");
 }
 if(__currentModule == module)
 {
@@ -817,12 +820,15 @@ __ecereCreateModuleInstances_loadSymbols();
 return 0x1;
 }
 
+extern void __ecereNameSpace__ecere__UnloadTranslatedStrings(struct __ecereNameSpace__ecere__com__Instance * module);
+
 unsigned int __ecereDll_Unload_ec(struct __ecereNameSpace__ecere__com__Instance * module)
 {
 if(__currentModule == module)
 {
 __ecereDestroyModuleInstances_ast();
 __ecereDestroyModuleInstances_loadSymbols();
+__ecereNameSpace__ecere__UnloadTranslatedStrings(__currentModule);
 }
 __ecereUnregisterModule_ast(module);
 __ecereUnregisterModule_copy(module);
index 148ce45..8e2857d 100644 (file)
@@ -1545,12 +1545,14 @@ extern char *  GetIncludeFileFromID(int id);
 
 extern int printf(char * , ...);
 
+extern char *  __ecereNameSpace__ecere__GetTranslatedString(struct __ecereNameSpace__ecere__com__Instance * module, char *  string, char *  stringAndContext);
+
+extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
+
 extern int vsprintf(char * , const char * , __builtin_va_list);
 
 extern int fputs(char * , void *  stream);
 
-extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
-
 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__NameSpace;
 
 struct __ecereNameSpace__ecere__com__NameSpace
@@ -1621,7 +1623,7 @@ __ecereNameSpace__ecere__sys__GetWorkingDir(string, sizeof string);
 __ecereNameSpace__ecere__sys__PathCat(string, sourceFile);
 }
 printf(string);
-printf(":%d:%d: error: ", yylloc.start.line, yylloc.start.charPos);
+printf(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, ":%d:%d: error: ", (((void *)0))), yylloc.start.line, yylloc.start.charPos);
 __builtin_va_start(args, format);
 vsprintf(string, format, args);
 __builtin_va_end(args);
@@ -1660,7 +1662,7 @@ __ecereNameSpace__ecere__sys__GetWorkingDir(string, sizeof string);
 __ecereNameSpace__ecere__sys__PathCat(string, sourceFile);
 }
 printf(string);
-printf(":%d:%d: warning: ", yylloc.start.line, yylloc.start.charPos);
+printf(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, ":%d:%d: warning: ", (((void *)0))), yylloc.start.line, yylloc.start.charPos);
 __builtin_va_start(args, format);
 vsprintf(string, format, args);
 __builtin_va_end(args);
@@ -1678,7 +1680,7 @@ int yyerror(char * s)
 if(!skipErrors)
 {
 parseError = 0x1;
-Compiler_Error("syntax error\n");
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "syntax error\n", (((void *)0))));
 }
 return 0;
 }
index 8aa0246..7b3897e 100644 (file)
@@ -802,7 +802,7 @@ struct Statement * issetStmt;
 struct Symbol * symbol;
 unsigned int conversion;
 unsigned int isWatchable;
-char *  category;
+struct Expression * category;
 };
 
 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyWatch;
index dea5442..f3d0704 100644 (file)
@@ -946,6 +946,10 @@ extern struct __ecereNameSpace__ecere__com__BitMember * __ecereNameSpace__ecere_
 
 extern void Compiler_Error(char *  format, ...);
 
+extern char *  __ecereNameSpace__ecere__GetTranslatedString(struct __ecereNameSpace__ecere__com__Instance * module, char *  string, char *  stringAndContext);
+
+extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
+
 extern void FreeType(struct Type * type);
 
 extern struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eMember_AddDataMember(struct __ecereNameSpace__ecere__com__DataMember * member, char *  name, char *  type, unsigned int size, unsigned int alignment, int declMode);
@@ -1050,7 +1054,7 @@ if(dataMember)
 dataMember->dataType = dataType;
 else
 {
-Compiler_Error("Member with same name already exists %s in class %s\n", declId->string, regClass->name);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Member with same name already exists %s in class %s\n", (((void *)0))), declId->string, regClass->name);
 FreeType(dataType);
 }
 }
@@ -1065,13 +1069,13 @@ if(member)
 {
 dataMember = __ecereNameSpace__ecere__com__eMember_AddDataMember(member, declId->string, typeString, 0, 0, def->memberAccess);
 if(!dataMember)
-Compiler_Error("Member with same name already exists %s in member %s\n", declId->string, member->name);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Member with same name already exists %s in member %s\n", (((void *)0))), declId->string, member->name);
 }
 else
 {
 dataMember = __ecereNameSpace__ecere__com__eClass_AddDataMember(regClass, declId->string, typeString, 0, 0, def->memberAccess);
 if(!dataMember)
-Compiler_Error("Member with same name already exists %s in class %s\n", declId->string, regClass->name);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Member with same name already exists %s in class %s\n", (((void *)0))), declId->string, regClass->name);
 }
 if(dataMember)
 dataMember->dataType = dataType;
@@ -1118,13 +1122,13 @@ if(member)
 {
 dataMember = __ecereNameSpace__ecere__com__eMember_AddDataMember(member, id->string, typeString, 0, 0, def->memberAccess);
 if(!dataMember)
-Compiler_Error("Member with same name already exists %s in member %s\n", id->string, member->name);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Member with same name already exists %s in member %s\n", (((void *)0))), id->string, member->name);
 }
 else
 {
 dataMember = __ecereNameSpace__ecere__com__eClass_AddDataMember(regClass, id->string, typeString, 0, 0, def->memberAccess);
 if(!dataMember)
-Compiler_Error("Member with same name already exists %s in class %s\n", id->string, regClass->name);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Member with same name already exists %s in class %s\n", (((void *)0))), id->string, regClass->name);
 }
 if(dataMember)
 dataMember->dataType = dataType;
@@ -1152,13 +1156,13 @@ if(member)
 {
 dataMember = __ecereNameSpace__ecere__com__eMember_AddDataMember(member, string, inst->_class->name, 0, 0, def->memberAccess);
 if(!dataMember)
-Compiler_Error("Member with same name already exists %s in member %s\n", string, member->name);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Member with same name already exists %s in member %s\n", (((void *)0))), string, member->name);
 }
 else
 {
 dataMember = __ecereNameSpace__ecere__com__eClass_AddDataMember(regClass, string, inst->_class->name, 0, 0, def->memberAccess);
 if(!dataMember)
-Compiler_Error("Member with same name already exists %s in class %s\n", string, regClass->name);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Member with same name already exists %s in class %s\n", (((void *)0))), string, regClass->name);
 }
 if(dataMember)
 dataMember->dataType = dataType;
@@ -1326,7 +1330,7 @@ redefinition = 0x1;
 if(inCompiler)
 {
 yylloc = *loc;
-Compiler_Error("redefinition of class %s\n", symbol->string);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "redefinition of class %s\n", (((void *)0))), symbol->string);
 return ;
 }
 }
@@ -1454,7 +1458,7 @@ char * typeString = StringFromSpecDecl(func->specifiers, func->declarator);
 
 method = __ecereNameSpace__ecere__com__eClass_AddMethod(regClass, id->string, typeString, inCompiler ? func->declarator->symbol : (((void *)0)), def->memberAccess);
 if(!method)
-Compiler_Error("Redefinition of method %s in class %s\n", id->string, regClass->name);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Redefinition of method %s in class %s\n", (((void *)0))), id->string, regClass->name);
 (__ecereNameSpace__ecere__com__eSystem_Delete(typeString), typeString = 0);
 }
 if(method && (method->type != 1 || method->_class == regClass))
index 847fa68..0bad510 100644 (file)
@@ -2659,6 +2659,10 @@ extern struct Statement * MkExpressionStmt(struct __ecereNameSpace__ecere__sys__
 
 extern void Compiler_Error(char *  format, ...);
 
+extern char *  __ecereNameSpace__ecere__GetTranslatedString(struct __ecereNameSpace__ecere__com__Instance * module, char *  string, char *  stringAndContext);
+
+extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
+
 extern struct AsmField * MkAsmField(char *  command, struct Expression * expression);
 
 extern struct Statement * MkAsmStmt(struct Specifier * spec, char *  statements, struct __ecereNameSpace__ecere__sys__OldList * inputFields, struct __ecereNameSpace__ecere__sys__OldList * outputFields, struct __ecereNameSpace__ecere__sys__OldList * clobberedFields);
@@ -10302,49 +10306,49 @@ break;
 case 1037:
 {
 yyval.stmt = yyvsp[(1) - (1)].stmt;
-Compiler_Error("syntax error\n");
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "syntax error\n", (((void *)0))));
 ;
 }
 break;
 case 1038:
 {
 yyval.stmt = yyvsp[(1) - (1)].stmt;
-Compiler_Error("syntax error\n");
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "syntax error\n", (((void *)0))));
 ;
 }
 break;
 case 1039:
 {
 yyval.stmt = yyvsp[(1) - (1)].stmt;
-Compiler_Error("syntax error\n");
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "syntax error\n", (((void *)0))));
 ;
 }
 break;
 case 1040:
 {
 yyval.stmt = yyvsp[(1) - (1)].stmt;
-Compiler_Error("syntax error\n");
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "syntax error\n", (((void *)0))));
 ;
 }
 break;
 case 1041:
 {
 yyval.stmt = yyvsp[(1) - (1)].stmt;
-Compiler_Error("syntax error\n");
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "syntax error\n", (((void *)0))));
 ;
 }
 break;
 case 1042:
 {
 yyval.stmt = yyvsp[(1) - (2)].stmt;
-Compiler_Error("syntax error\n");
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "syntax error\n", (((void *)0))));
 ;
 }
 break;
 case 1043:
 {
 yyval.stmt = MkExpressionStmt(yyvsp[(1) - (1)].list);
-Compiler_Error("syntax error\n");
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "syntax error\n", (((void *)0))));
 yyval.stmt->loc = (yylsp[(1) - (1)]);
 ;
 }
index b2bfb48..fc8594b 100644 (file)
@@ -2273,6 +2273,10 @@ extern int strncmp(const char * , const char * , int n);
 
 extern char *  strncpy(char * , const char * , int n);
 
+extern char *  __ecereNameSpace__ecere__GetTranslatedString(struct __ecereNameSpace__ecere__com__Instance * module, char *  string, char *  stringAndContext);
+
+extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
+
 extern unsigned int inCompiler;
 
 extern int FindIncludeFileID(char *  includeFile);
@@ -2387,7 +2391,7 @@ break;
 }
 if(include_stack_ptr >= (10))
 {
-fprintf((bsl_stderr()), "Includes nested too deeply");
+fprintf((bsl_stderr()), __ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Includes nested too deeply", (((void *)0))));
 exit(1);
 }
 if(inCompiler || !FindIncludeFileID(includeFile))
@@ -2483,8 +2487,6 @@ struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace;
 struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace;
 };
 
-extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
-
 extern struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eClass_AddDataMember(struct __ecereNameSpace__ecere__com__Class * _class, char *  name, char *  type, unsigned int size, unsigned int alignment, int declMode);
 
 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__GlobalFunction;
index 8255021..cbe45bd 100644 (file)
@@ -383,6 +383,7 @@ struct __ecereNameSpace__ecere__sys__OldList *  templateParams;
 struct __ecereNameSpace__ecere__sys__OldList templatedClasses;
 struct Context * ctx;
 int isIterator;
+struct Expression * propCategory;
 };
 
 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Type;
@@ -934,6 +935,10 @@ void ImportModule(char *  name, int importType, int importAccess, unsigned int l
 
 extern void Compiler_Error(char *  format, ...);
 
+extern char *  __ecereNameSpace__ecere__GetTranslatedString(struct __ecereNameSpace__ecere__com__Instance * module, char *  string, char *  stringAndContext);
+
+extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
+
 extern void *  __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
 
 int __ecereVMethodID___ecereNameSpace__ecere__sys__File_Eof;
@@ -1541,7 +1546,7 @@ importAccess = 1;
 }
 else if(importType != 4)
 {
-Compiler_Error("Couldn't open %s\n", fileName);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Couldn't open %s\n", (((void *)0))), fileName);
 }
 return globalInstance;
 }
@@ -1594,8 +1599,6 @@ struct __ecereNameSpace__ecere__com__IteratorPointer * pointer;
 
 extern struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__eModule_LoadStrict(struct __ecereNameSpace__ecere__com__Instance * fromModule, char *  name, int importAccess);
 
-extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
-
 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Module;
 
 struct __ecereNameSpace__ecere__com__Module
@@ -1933,7 +1936,7 @@ char type2String[1024] = "";
 PrintType(type1, type1String, 0x0, 0x1);
 PrintType(type2, type2String, 0x0, 0x1);
 if(strcmp(type1String, type2String))
-Compiler_Warning("Redefinition of %s (defining as %s, already defined as %s)\n", redefinition->name, type1String, type2String);
+Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Redefinition of %s (defining as %s, already defined as %s)\n", (((void *)0))), redefinition->name, type1String, type2String);
 FreeType(type1);
 FreeType(type2);
 }
index 846159f..85fc458 100644 (file)
@@ -655,6 +655,7 @@ struct __ecereNameSpace__ecere__sys__OldList *  templateParams;
 struct __ecereNameSpace__ecere__sys__OldList templatedClasses;
 struct Context * ctx;
 int isIterator;
+struct Expression * propCategory;
 };
 
 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Type;
@@ -969,7 +970,7 @@ struct Statement * issetStmt;
 struct Symbol * symbol;
 unsigned int conversion;
 unsigned int isWatchable;
-char *  category;
+struct Expression * category;
 };
 
 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyWatch;
@@ -1166,6 +1167,10 @@ return 0x0;
 
 extern void Compiler_Error(char *  format, ...);
 
+extern char *  __ecereNameSpace__ecere__GetTranslatedString(struct __ecereNameSpace__ecere__com__Instance * module, char *  string, char *  stringAndContext);
+
+extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
+
 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Module;
 
 struct __ecereNameSpace__ecere__com__Module
@@ -1212,14 +1217,14 @@ if(regClass->templateClass)
 regClass = regClass->templateClass;
 if(classSym->isStatic && access != 3)
 {
-Compiler_Error("Non-static %s making use of a static class\n", word);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Non-static %s making use of a static class\n", (((void *)0))), word);
 }
 else if(access == 1)
 {
 if(!NameSpaceContained(regClass->nameSpace, &((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)regClass->module + 12)))->application + 296)))->systemNameSpace))
 {
 if(NameSpaceContained(regClass->nameSpace, &((struct __ecereNameSpace__ecere__com__Module *)(((char *)regClass->module + 12)))->privateNameSpace) || !ModuleAccess(privateModule, regClass->module))
-Compiler_Error("Public %s making use of a private class\n", word);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Public %s making use of a private class\n", (((void *)0))), word);
 }
 }
 }
@@ -1476,7 +1481,7 @@ dataMember = link ? link->data : (((void *)0));
 else
 dataMember = __ecereNameSpace__ecere__com__eClass_FindDataMember(regClass, declId->string, privateModule, (((void *)0)), (((void *)0)));
 if(dataMember)
-CheckPublicDataType(dataMember->dataType, (def->memberAccess == 2) ? 2 : access, "class data member");
+CheckPublicDataType(dataMember->dataType, (def->memberAccess == 2) ? 2 : access, __ecereNameSpace__ecere__GetTranslatedString(__thisModule, "class data member", (((void *)0))));
 }
 }
 }
@@ -1503,7 +1508,7 @@ dataMember = link ? link->data : (((void *)0));
 else
 dataMember = __ecereNameSpace__ecere__com__eClass_FindDataMember(regClass, spec->id->string, privateModule, (((void *)0)), (((void *)0)));
 if(dataMember)
-CheckPublicDataType(dataMember->dataType, (def->memberAccess == 2) ? 2 : access, "class data member");
+CheckPublicDataType(dataMember->dataType, (def->memberAccess == 2) ? 2 : access, __ecereNameSpace__ecere__GetTranslatedString(__thisModule, "class data member", (((void *)0))));
 }
 }
 }
@@ -1511,7 +1516,7 @@ CheckPublicDataType(dataMember->dataType, (def->memberAccess == 2) ? 2 : access,
 }
 else if(decl->type == 2)
 {
-CheckPublicClass(decl->inst->_class->symbol, (def->memberAccess == 2) ? 2 : access, "class member instance");
+CheckPublicClass(decl->inst->_class->symbol, (def->memberAccess == 2) ? 2 : access, __ecereNameSpace__ecere__GetTranslatedString(__thisModule, "class member instance", (((void *)0))));
 }
 }
 }
@@ -1682,13 +1687,13 @@ if(!NameSpaceContained(regClass->nameSpace, &((struct __ecereNameSpace__ecere__c
 {
 if(!regClass->base->symbol)
 regClass->base->symbol = FindClass(regClass->base->fullName);
-CheckPublicClass(regClass->base->symbol, 1, "class");
+CheckPublicClass(regClass->base->symbol, 1, __ecereNameSpace__ecere__GetTranslatedString(__thisModule, "class", (((void *)0))));
 }
 else if(!symbol->isStatic && regClass->base)
 {
 if(!regClass->base->symbol)
 regClass->base->symbol = FindClass(regClass->base->fullName);
-CheckPublicClass(regClass->base->symbol, 2, "class");
+CheckPublicClass(regClass->base->symbol, 2, __ecereNameSpace__ecere__GetTranslatedString(__thisModule, "class", (((void *)0))));
 }
 }
 if(definitions != (((void *)0)))
@@ -1716,7 +1721,7 @@ __ecereNameSpace__ecere__com__eClass_AddMethod(regClass, def->id->string, (((voi
 else
 {
 yylloc = def->loc;
-Compiler_Error("Couldn't find member %s to override\n", def->id->string);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Couldn't find member %s to override\n", (((void *)0))), def->id->string);
 }
 }
 }
@@ -1826,7 +1831,7 @@ if(func->isDestructor)
 if(destructor)
 {
 yylloc = *loc;
-Compiler_Error("redefinition of destructor for class %s\n", symbol->string);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "redefinition of destructor for class %s\n", (((void *)0))), symbol->string);
 }
 else
 {
@@ -1845,7 +1850,7 @@ if(func->isConstructor)
 if(constructor)
 {
 yylloc = *loc;
-Compiler_Error("redefinition of constructor for class %s\n", symbol->string);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "redefinition of constructor for class %s\n", (((void *)0))), symbol->string);
 }
 else
 {
index f0b2a7c..cfd9c24 100644 (file)
@@ -1073,6 +1073,10 @@ extern unsigned int MatchTypes(struct Type * source, struct Type * dest, struct
 
 extern void Compiler_Error(char *  format, ...);
 
+extern char *  __ecereNameSpace__ecere__GetTranslatedString(struct __ecereNameSpace__ecere__com__Instance * module, char *  string, char *  stringAndContext);
+
+extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
+
 extern struct Declarator * GetFuncDecl(struct Declarator * decl);
 
 extern void FreeType(struct Type * type);
@@ -1186,7 +1190,7 @@ type->extraParam = 0x1;
 yylloc = func->loc;
 if(!MatchTypes(type, methodDataType, (((void *)0)), owningClass, method->_class, 0x1, 0x1, 0x1, 0x0))
 {
-Compiler_Error("Incompatible virtual function %s\n", method->name);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Incompatible virtual function %s\n", (((void *)0))), method->name);
 }
 else
 {
@@ -2185,7 +2189,7 @@ ListAdd(args, MkExpIdentifier(MkIdentifier(watcherName)));
 ListAdd(stmt->expressions, MkExpCall(MkExpIdentifier(MkIdentifier("eProperty_SelfWatch")), args));
 }
 else
-Compiler_Error("Property %s not found in class %s\n", propID->string, regClass->fullName);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Property %s not found in class %s\n", (((void *)0))), propID->string, regClass->fullName);
 }
 FreePropertyWatch(def->propertyWatch);
 def->propertyWatch = (struct PropertyWatch *)stmt;
index ce62bcf..3a1fbbd 100644 (file)
@@ -692,6 +692,7 @@ struct __ecereNameSpace__ecere__sys__OldList *  templateParams;
 struct __ecereNameSpace__ecere__sys__OldList templatedClasses;
 struct Context * ctx;
 int isIterator;
+struct Expression * propCategory;
 };
 
 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Type;
@@ -1045,7 +1046,7 @@ struct Statement * issetStmt;
 struct Symbol * symbol;
 unsigned int conversion;
 unsigned int isWatchable;
-char *  category;
+struct Expression * category;
 };
 
 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyWatch;
@@ -2361,6 +2362,10 @@ extern unsigned int inCompiler;
 
 extern void Compiler_Error(char *  format, ...);
 
+extern char *  __ecereNameSpace__ecere__GetTranslatedString(struct __ecereNameSpace__ecere__com__Instance * module, char *  string, char *  stringAndContext);
+
+extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
+
 extern int __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, char *  name);
 
 int ComputeTypeSize(struct Type * type)
@@ -2434,7 +2439,7 @@ type->arraySizeExp->expType = (((void *)0));
 yylloc = type->arraySizeExp->loc;
 if(inCompiler)
 PrintExpression(type->arraySizeExp, expression);
-Compiler_Error("Array size not constant int (%s)\n", expression);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Array size not constant int (%s)\n", (((void *)0))), expression);
 yylloc = oldLoc;
 }
 GetInt(type->arraySizeExp, &type->arraySize);
@@ -3117,7 +3122,7 @@ type = source;
 source->refCount++;
 }
 else
-Compiler_Error("cannot dereference type\n");
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "cannot dereference type\n", (((void *)0))));
 }
 return type;
 }
@@ -3439,12 +3444,12 @@ char expString[10240];
 expString[0] = '\0';
 PrintExpression(member->initializer->exp, expString);
 __ecereNameSpace__ecere__sys__ChangeCh(expString, '\n', ' ');
-Compiler_Error("unresolved symbol used as an instance method %s\n", expString);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "unresolved symbol used as an instance method %s\n", (((void *)0))), expString);
 }
 }
 else if(!MatchTypes(member->initializer->exp->expType, type, (((void *)0)), (((void *)0)), _class, 0x1, 0x1, 0x0, 0x0))
 {
-Compiler_Error("incompatible instance method %s\n", ident->string);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "incompatible instance method %s\n", (((void *)0))), ident->string);
 }
 }
 else if(member->initializer)
@@ -3476,17 +3481,17 @@ if(ident)
 {
 if(method)
 {
-Compiler_Error("couldn't find virtual method %s in class %s\n", ident->string, _class->fullName);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "couldn't find virtual method %s in class %s\n", (((void *)0))), ident->string, _class->fullName);
 }
 else if(_class)
 {
-Compiler_Error("couldn't find member %s in class %s\n", ident->string, _class->fullName);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "couldn't find member %s in class %s\n", (((void *)0))), ident->string, _class->fullName);
 if(inCompiler)
 __ecereNameSpace__ecere__com__eClass_AddDataMember(_class, ident->string, "int", 0, 0, 1);
 }
 }
 else if(_class)
-Compiler_Error("too many initializers for instantiation of class %s\n", _class->fullName);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "too many initializers for instantiation of class %s\n", (((void *)0))), _class->fullName);
 }
 }
 }
@@ -3592,7 +3597,7 @@ DeclareType(symbol->type, 0x1, 0x1);
 }
 else if(classSym)
 {
-Compiler_Error("couldn't find virtual method %s in class %s\n", unmangled, classSym->string);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "couldn't find virtual method %s in class %s\n", (((void *)0))), unmangled, classSym->string);
 }
 }
 createdExternal = ProcessClassFunction(classSym ? classSym->registered : (((void *)0)), members->function, ast, afterExternal, 0x1);
@@ -4595,9 +4600,9 @@ if((dest->staticMethod || (!dest->thisClass && !owningClassDest)) && !(source->s
 if(!paramDest || (!(paramDest->kind == 13 && paramDest->type && paramDest->type->kind == 0) && (paramDest->kind != 8 || !__ecereNameSpace__ecere__com__eClass_IsDerived(source->thisClass ? source->thisClass->registered : owningClassSource, paramDest->_class->registered))))
 {
 if(paramDest && paramDest->kind == 8)
-Compiler_Error("method class must be derived from %s\n", paramDest->_class->string);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "method class must be derived from %s\n", (((void *)0))), paramDest->_class->string);
 else
-Compiler_Error("method class should not take an object\n");
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "method class should not take an object\n", (((void *)0))));
 return 0x0;
 }
 paramDest = paramDest->next;
@@ -4610,7 +4615,7 @@ if(dest->thisClass)
 {
 if(!paramSource || paramSource->kind != 8 || !__ecereNameSpace__ecere__com__eClass_IsDerived(paramSource->_class->registered, dest->thisClass->registered))
 {
-Compiler_Error("method class must be derived from %s\n", dest->thisClass->string);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "method class must be derived from %s\n", (((void *)0))), dest->thisClass->string);
 return 0x0;
 }
 }
@@ -4619,9 +4624,9 @@ else
 if(!paramSource || paramSource->kind != 8 || (owningClassDest && !__ecereNameSpace__ecere__com__eClass_IsDerived(paramSource->_class->registered, owningClassDest)))
 {
 if(owningClassDest)
-Compiler_Error("%s expected to be derived from method class\n", owningClassDest->fullName);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "%s expected to be derived from method class\n", (((void *)0))), owningClassDest->fullName);
 else
-Compiler_Error("overriding class expected to be derived from method class\n");
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "overriding class expected to be derived from method class\n", (((void *)0))));
 return 0x0;
 }
 }
@@ -4633,7 +4638,7 @@ if(dest->thisClass)
 {
 if(!__ecereNameSpace__ecere__com__eClass_IsDerived(source->thisClass ? source->thisClass->registered : owningClassSource, dest->thisClass->registered))
 {
-Compiler_Error("method class must be derived from %s\n", dest->thisClass->string);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "method class must be derived from %s\n", (((void *)0))), dest->thisClass->string);
 return 0x0;
 }
 }
@@ -4641,7 +4646,7 @@ else
 {
 if(source->thisClass && source->thisClass->registered && owningClassDest && !__ecereNameSpace__ecere__com__eClass_IsDerived(source->thisClass->registered, owningClassDest))
 {
-Compiler_Error("%s expected to be derived from method class\n", source->thisClass->registered->fullName);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "%s expected to be derived from method class\n", (((void *)0))), source->thisClass->registered->fullName);
 return 0x0;
 }
 }
@@ -4649,14 +4654,14 @@ return 0x0;
 }
 if(!MatchTypes(source->returnType, dest->returnType, (((void *)0)), (((void *)0)), (((void *)0)), 0x1, 0x1, 0x0, 0x0))
 {
-Compiler_Warning("incompatible return type for function\n");
+Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "incompatible return type for function\n", (((void *)0))));
 return 0x0;
 }
 for(; paramDest; paramDest = paramDest->next)
 {
 if(!paramSource)
 {
-Compiler_Error("not enough parameters\n");
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "not enough parameters\n", (((void *)0))));
 return 0x0;
 }
 {
@@ -4705,7 +4710,7 @@ char type[1024];
 
 type[0] = (char)0;
 PrintType(paramDest, type, 0x0, 0x1);
-Compiler_Warning("incompatible parameter %s (expected %s)\n", paramSource->name, type);
+Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "incompatible parameter %s (expected %s)\n", (((void *)0))), paramSource->name, type);
 if(paramDestType != paramDest)
 FreeType(paramDestType);
 return 0x0;
@@ -4717,7 +4722,7 @@ paramSource = paramSource->next;
 }
 if(paramSource)
 {
-Compiler_Error("too many parameters\n");
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "too many parameters\n", (((void *)0))));
 return 0x0;
 }
 return 0x1;
@@ -9229,8 +9234,6 @@ int a;
 
 extern int __ecereVMethodID_class_OnGetString;
 
-extern int printf(char * , ...);
-
 static void PopulateInstanceProcessMember(struct Instantiation * inst, struct __ecereNameSpace__ecere__sys__OldList * memberList, struct __ecereNameSpace__ecere__com__DataMember * parentDataMember, unsigned int offset)
 {
 struct __ecereNameSpace__ecere__com__DataMember * dataMember;
@@ -9322,7 +9325,7 @@ exp->type = 2;
 break;
 }
 default:
-printf("error: unhandled type populating instance\n");
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Unhandled type populating instance\n", (((void *)0))));
 }
 }
 ListAdd(memberList, member);
@@ -9427,7 +9430,7 @@ exp->type = 2;
 break;
 }
 default:
-printf("error: unhandled type populating instance\n");
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Unhandled type populating instance\n", (((void *)0))));
 }
 }
 ListAdd(memberList, member);
@@ -11664,7 +11667,7 @@ else if(destType && e->expType && (e->expType->classObjectType == 3 || e->expTyp
 {
 if(destType->kind == 14)
 {
-Compiler_Error("Unspecified type\n");
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Unspecified type\n", (((void *)0))));
 }
 else if(!(destType->truth && e->expType->kind == 8 && e->expType->_class && e->expType->_class->registered && e->expType->_class->registered->type == 1))
 {
@@ -11922,7 +11925,7 @@ else
 {
 if(inCompiler)
 {
-Compiler_Error("Recursion in defined expression %s\n", id->string);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Recursion in defined expression %s\n", (((void *)0))), id->string);
 }
 }
 }
@@ -12225,7 +12228,7 @@ PrintExpression(exp->op.exp2, expString);
 if(type1 && type1->kind == 13)
 {
 if(exp->op.op == MUL_ASSIGN || exp->op.op == DIV_ASSIGN || exp->op.op == MOD_ASSIGN || exp->op.op == LEFT_ASSIGN || exp->op.op == RIGHT_ASSIGN || exp->op.op == AND_ASSIGN || exp->op.op == OR_ASSIGN)
-Compiler_Error("operator %s illegal on pointer\n", exp->op.op);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "operator %s illegal on pointer\n", (((void *)0))), exp->op.op);
 else if(exp->op.op == '=')
 {
 if(exp->op.exp2->destType)
@@ -12283,17 +12286,17 @@ if(assign && type1 && type1->kind == 13 && exp->op.exp2->expType)
 if(exp->op.exp2->expType->kind == 4 || exp->op.exp2->expType->kind == 3 || exp->op.exp2->expType->kind == 2 || exp->op.exp2->expType->kind == 1)
 {
 if(exp->op.op != '=' && type1->type->kind == 0)
-Compiler_Error("void *: unknown size\n");
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "void *: unknown size\n", (((void *)0))));
 }
 else if(exp->op.exp2->expType->kind == 13 || exp->op.exp2->expType->kind == 12 || exp->op.exp2->expType->kind == 11 || exp->op.exp2->expType->kind == 16 || (type1->type->kind == 0 && exp->op.exp2->expType->kind == 8 && exp->op.exp2->expType->_class->registered && (exp->op.exp2->expType->_class->registered->type == 0 || exp->op.exp2->expType->_class->registered->type == 1 || exp->op.exp2->expType->_class->registered->type == 5)))
 {
 if(exp->op.op == ADD_ASSIGN)
-Compiler_Error("cannot add two pointers\n");
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "cannot add two pointers\n", (((void *)0))));
 }
 else if((exp->op.exp2->expType->kind == 8 && type1->kind == 13 && type1->type->kind == 8 && type1->type->_class == exp->op.exp2->expType->_class && exp->op.exp2->expType->_class->registered && exp->op.exp2->expType->_class->registered->type == 1))
 {
 if(exp->op.op == ADD_ASSIGN)
-Compiler_Error("cannot add two pointers\n");
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "cannot add two pointers\n", (((void *)0))));
 }
 else if(inCompiler)
 {
@@ -12305,7 +12308,7 @@ type2String[0] = '\0';
 PrintType(exp->op.exp2->expType, type1String, 0x0, 0x1);
 PrintType(type1, type2String, 0x0, 0x1);
 __ecereNameSpace__ecere__sys__ChangeCh(expString, '\n', ' ');
-Compiler_Warning("incompatible expression %s (%s); expected %s\n", expString, type1String, type2String);
+Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "incompatible expression %s (%s); expected %s\n", (((void *)0))), expString, type1String, type2String);
 }
 }
 if(exp->op.exp2->destType == dummy)
@@ -12375,7 +12378,7 @@ FreeType(exp->op.exp1->destType);
 exp->op.exp1->destType = type2;
 type2->refCount++;
 if(!boolResult && type1->kind == 8 && (!exp->destType || exp->destType->kind != 8) && type1->_class->registered && type1->_class->registered->type == 3 && type2->_class->registered && type2->_class->registered->type == 3 && type1->_class->registered != type2->_class->registered)
-Compiler_Warning("operating on %s and %s with an untyped result, assuming %s\n", type1->_class->string, type2->_class->string, type1->_class->string);
+Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "operating on %s and %s with an untyped result, assuming %s\n", (((void *)0))), type1->_class->string, type2->_class->string, type1->_class->string);
 if(type1->kind == 13 && type1->type->kind == 20 && type2->kind != 13)
 {
 struct Expression * argExp = GetTemplateArgExp(type1->type->templateParameter, thisClass, 0x1);
@@ -12399,7 +12402,7 @@ ProcessExpressionType(exp->op.exp2);
 if(!boolResult && ((type1->kind == 13 || type1->kind == 12 || (type1->kind == 8 && !strcmp(type1->_class->string, "String"))) && (type2->kind == 4 || type2->kind == 3 || type2->kind == 2 || type2->kind == 1)))
 {
 if(type1->kind != 8 && type1->type->kind == 0)
-Compiler_Error("void *: unknown size\n");
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "void *: unknown size\n", (((void *)0))));
 exp->expType = type1;
 if(type1)
 type1->refCount++;
@@ -12407,14 +12410,14 @@ type1->refCount++;
 else if(!boolResult && ((type2->kind == 13 || type2->kind == 12 || (type2->kind == 8 && !strcmp(type2->_class->string, "String"))) && (type1->kind == 4 || type1->kind == 3 || type1->kind == 2 || type1->kind == 1)))
 {
 if(type2->kind != 8 && type2->type->kind == 0)
-Compiler_Error("void *: unknown size\n");
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "void *: unknown size\n", (((void *)0))));
 exp->expType = type2;
 if(type2)
 type2->refCount++;
 }
 else if((type1->kind == 13 && type2->kind != 13 && type2->kind != 12 && type2->kind != 11 && type2->kind != 16 && type2->kind != 8 && type2->kind != 19) || (type2->kind == 13 && type1->kind != 13 && type1->kind != 12 && type1->kind != 11 && type1->kind != 16 && type1->kind != 8 && type1->kind != 19))
 {
-Compiler_Warning("different levels of indirection\n");
+Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "different levels of indirection\n", (((void *)0))));
 }
 else
 {
@@ -12423,7 +12426,7 @@ unsigned int success = 0x0;
 if(type1->kind == 13 && type2->kind == 13)
 {
 if(exp->op.op == '+')
-Compiler_Error("cannot add two pointers\n");
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "cannot add two pointers\n", (((void *)0))));
 else if(exp->op.op == '-')
 {
 if(MatchTypes(type1->type, type2->type, (((void *)0)), (((void *)0)), (((void *)0)), 0x0, 0x0, 0x0, 0x0))
@@ -12511,7 +12514,7 @@ __ecereNameSpace__ecere__sys__ChangeCh(expString2, '\n', ' ');
 PrintType(exp->op.exp1->expType, type1, 0x0, 0x1);
 PrintType(exp->op.exp2->expType, type2, 0x0, 0x1);
 }
-Compiler_Warning("incompatible expressions %s (%s) and %s (%s)\n", expString1, type1, expString2, type2);
+Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "incompatible expressions %s (%s) and %s (%s)\n", (((void *)0))), expString1, type1, expString2, type2);
 }
 }
 }
@@ -12630,7 +12633,7 @@ __ecereNameSpace__ecere__sys__ChangeCh(expString2, '\n', ' ');
 PrintType(exp->op.exp1->expType, type1String, 0x0, 0x1);
 PrintType(exp->op.exp2->expType, type2String, 0x0, 0x1);
 }
-Compiler_Warning("incompatible expressions %s (%s) and %s (%s)\n", expString1, type1String, expString2, type2String);
+Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "incompatible expressions %s (%s) and %s (%s)\n", (((void *)0))), expString1, type1String, expString2, type2String);
 if(type1->kind == 8 && type1->_class && type1->_class->registered && type1->_class->registered->type == 4)
 {
 exp->expType = exp->op.exp1->expType;
@@ -12723,7 +12726,7 @@ PrintExpression(exp->op.exp1, expString);
 __ecereNameSpace__ecere__sys__ChangeCh(expString, '\n', ' ');
 }
 if(expString[0])
-Compiler_Error("couldn't determine type of %s\n", expString);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "couldn't determine type of %s\n", (((void *)0))), expString);
 }
 if(exp->op.exp2 && !exp->op.exp2->expType)
 {
@@ -12736,7 +12739,7 @@ PrintExpression(exp->op.exp2, expString);
 __ecereNameSpace__ecere__sys__ChangeCh(expString, '\n', ' ');
 }
 if(expString[0])
-Compiler_Error("couldn't determine type of %s\n", expString);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "couldn't determine type of %s\n", (((void *)0))), expString);
 }
 if(boolResult)
 {
@@ -13040,7 +13043,7 @@ functionType = type;
 }
 if(functionType && functionType->kind != 11)
 {
-Compiler_Error("called object %s is not a function\n", name);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "called object %s is not a function\n", (((void *)0))), name);
 }
 else if(functionType)
 {
@@ -13098,9 +13101,9 @@ if(!type && !emptyParams)
 {
 yylloc = e->loc;
 if(methodType && methodType->methodClass)
-Compiler_Error("too many arguments for method %s::%s (%d given, expected %d)\n", methodType->methodClass->fullName, methodType->method->name, (*exp->call.arguments).count, noParams ? 0 : functionType->params.count);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "too many arguments for method %s::%s (%d given, expected %d)\n", (((void *)0))), methodType->methodClass->fullName, methodType->method->name, (*exp->call.arguments).count, noParams ? 0 : functionType->params.count);
 else
-Compiler_Error("too many arguments for function %s (%d given, expected %d)\n", name, (*exp->call.arguments).count, noParams ? 0 : functionType->params.count);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "too many arguments for function %s (%d given, expected %d)\n", (((void *)0))), name, (*exp->call.arguments).count, noParams ? 0 : functionType->params.count);
 break;
 }
 if(methodType && type && type->kind == 20 && type->templateParameter->type == 0)
@@ -13180,9 +13183,9 @@ type = next;
 if(type && type->kind != 14)
 {
 if(methodType && methodType->methodClass)
-Compiler_Warning("not enough arguments for method %s::%s (%d given, expected %d)\n", methodType->methodClass->fullName, methodType->method->name, exp->call.arguments ? (*exp->call.arguments).count : 0, functionType->params.count + extra);
+Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "not enough arguments for method %s::%s (%d given, expected %d)\n", (((void *)0))), methodType->methodClass->fullName, methodType->method->name, exp->call.arguments ? (*exp->call.arguments).count : 0, functionType->params.count + extra);
 else
-Compiler_Warning("not enough arguments for function %s (%d given, expected %d)\n", name, exp->call.arguments ? (*exp->call.arguments).count : 0, functionType->params.count + extra);
+Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "not enough arguments for function %s (%d given, expected %d)\n", (((void *)0))), name, exp->call.arguments ? (*exp->call.arguments).count : 0, functionType->params.count + extra);
 }
 yylloc = oldyylloc;
 if(type && !type->refCount)
@@ -13204,7 +13207,7 @@ yylloc = exp->call.exp->identifier->loc;
 if(strstr(string, "__builtin_") == string)
 ;
 else
-Compiler_Warning("%s undefined; assuming extern returning int\n", string);
+Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "%s undefined; assuming extern returning int\n", (((void *)0))), string);
 symbol = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol), ((struct Symbol *)__ecereTemp1)->string = __ecereNameSpace__ecere__sys__CopyString(string), ((struct Symbol *)__ecereTemp1)->type = ProcessTypeString("int()", 0x1), ((struct Symbol *)__ecereTemp1));
 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&globalContext->symbols, (struct __ecereNameSpace__ecere__sys__BTNode *)symbol);
 if(strstr(symbol->string, "::"))
@@ -13216,7 +13219,7 @@ else if(exp->call.exp->type == 8)
 {
 }
 else
-Compiler_Warning("callable object undefined; extern assuming returning int\n");
+Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "callable object undefined; extern assuming returning int\n", (((void *)0))));
 if(!functionType->returnType)
 {
 functionType->returnType = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), ((struct Type *)__ecereTemp1)->refCount = 1, ((struct Type *)__ecereTemp1)->kind = 3, ((struct Type *)__ecereTemp1));
@@ -13456,7 +13459,7 @@ struct __ecereNameSpace__ecere__com__ClassProperty * classProp = (((void *)0));
 if(id && id->_class && id->_class->name && !strcmp(id->_class->name, "property"))
 exp->member.memberType = 1;
 if(id && id->_class && type->_class && !__ecereNameSpace__ecere__com__eClass_IsDerived(type->_class->registered, _class))
-Compiler_Error("invalid class specifier %s for object of class %s\n", _class->fullName, type->_class->string);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "invalid class specifier %s for object of class %s\n", (((void *)0))), _class->fullName, type->_class->string);
 if(typeKind != 19)
 {
 if((exp->member.memberType == 0 && thisPtr) || exp->member.memberType == 3)
@@ -13604,7 +13607,7 @@ ProcessExpressionType(exp);
 return ;
 }
 yylloc = exp->member.member->loc;
-Compiler_Error("couldn't find member %s in class %s\n", id->string, _class->fullName);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "couldn't find member %s in class %s\n", (((void *)0))), id->string, _class->fullName);
 if(inCompiler)
 __ecereNameSpace__ecere__com__eClass_AddDataMember(_class, id->string, "int", 0, 0, 1);
 }
@@ -13854,7 +13857,7 @@ FinishTemplatesContext(context);
 }
 }
 else
-Compiler_Error("undefined class %s\n", (id && (!id->_class || id->_class->name)) ? (id->classSym ? id->classSym->string : (type->_class ? type->_class->string : (((void *)0)))) : "(null)");
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "undefined class %s\n", (((void *)0))), (id && (!id->_class || id->_class->name)) ? (id->classSym ? id->classSym->string : (type->_class ? type->_class->string : (((void *)0)))) : "(null)");
 }
 else if(type && (type->kind == 9 || type->kind == 10))
 {
@@ -13877,7 +13880,7 @@ if(inCompiler)
 PrintExpression(exp, expString);
 __ecereNameSpace__ecere__sys__ChangeCh(expString, '\n', ' ');
 }
-Compiler_Error("member operator on non-structure type expression %s\n", expString);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "member operator on non-structure type expression %s\n", (((void *)0))), expString);
 }
 if(exp->expType && exp->expType->kind == 21 && (!exp->destType || exp->destType->kind != 21))
 {
@@ -14229,7 +14232,7 @@ ProcessExpressionType(expExt);
 else
 {
 exp->expType = ProcessTypeString("Container", 0x0);
-Compiler_Error("Couldn't determine type of array elements\n");
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Couldn't determine type of array elements\n", (((void *)0))));
 }
 break;
 }
@@ -14301,9 +14304,9 @@ PrintExpression(exp, expString);
 __ecereNameSpace__ecere__sys__ChangeCh(expString, '\n', ' ');
 }
 if(unresolved)
-Compiler_Error("unresolved identifier %s; expected %s\n", expString, type2);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "unresolved identifier %s; expected %s\n", (((void *)0))), expString, type2);
 else if(exp->type != 16)
-Compiler_Error("couldn't determine type of %s; expected %s\n", expString, type2);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "couldn't determine type of %s; expected %s\n", (((void *)0))), expString, type2);
 }
 }
 else
@@ -14317,9 +14320,9 @@ PrintExpression(exp, expString);
 __ecereNameSpace__ecere__sys__ChangeCh(expString, '\n', ' ');
 }
 if(unresolved)
-Compiler_Error("unresolved identifier %s\n", expString);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "unresolved identifier %s\n", (((void *)0))), expString);
 else if(exp->type != 16)
-Compiler_Error("couldn't determine type of %s\n", expString);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "couldn't determine type of %s\n", (((void *)0))), expString);
 }
 }
 else
@@ -14346,7 +14349,7 @@ if(inCompiler)
 PrintExpression(exp, expString);
 __ecereNameSpace__ecere__sys__ChangeCh(expString, '\n', ' ');
 }
-Compiler_Warning("incompatible expression %s (%s); expected %s\n", expString, type1, type2);
+Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "incompatible expression %s (%s); expected %s\n", (((void *)0))), expString, type1, type2);
 FreeType(exp->expType);
 exp->destType->refCount++;
 exp->expType = exp->destType;
@@ -14378,9 +14381,9 @@ exp->cast.exp = newExp;
 else if(unresolved)
 {
 if(exp->identifier->_class && exp->identifier->_class->name)
-Compiler_Error("unresolved identifier %s::%s\n", exp->identifier->_class->name, exp->identifier->string);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "unresolved identifier %s::%s\n", (((void *)0))), exp->identifier->_class->name, exp->identifier->string);
 else if(exp->identifier->string && exp->identifier->string[0])
-Compiler_Error("unresolved identifier %s\n", exp->identifier->string);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "unresolved identifier %s\n", (((void *)0))), exp->identifier->string);
 }
 else if(!exp->expType && exp->type != 16)
 {
@@ -14392,7 +14395,7 @@ if(inCompiler)
 PrintExpression(exp, expString);
 __ecereNameSpace__ecere__sys__ChangeCh(expString, '\n', ' ');
 }
-Compiler_Error("couldn't determine type of %s\n", expString);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "couldn't determine type of %s\n", (((void *)0))), expString);
 }
 ApplyAnyObjectLogic(exp);
 if(!notByReference && exp->expType && exp->expType->kind == 8 && exp->expType->_class && exp->expType->_class->registered && exp->expType->_class->registered->type == 5)
@@ -14542,7 +14545,7 @@ if(type && type->kind == 12)
 FreeType(initializerType);
 if(type && type->kind != 12 && type->kind != 9 && type->kind != 10 && (type->kind != 8 || !type->_class->registered || type->_class->registered->type != 1))
 {
-Compiler_Error("Assigning list initializer to non list\n");
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Assigning list initializer to non list\n", (((void *)0))));
 }
 break;
 }
@@ -15200,7 +15203,7 @@ FreeList(exp, FreeExpression);
 else
 {
 arrayExp->expType = ProcessTypeString("Container", 0x0);
-Compiler_Error("Couldn't determine type of array elements\n");
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Couldn't determine type of array elements\n", (((void *)0))));
 }
 }
 else if(isLinkList && !isList)
@@ -15281,7 +15284,7 @@ break;
 }
 else
 {
-Compiler_Error("Expression is not a container\n");
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Expression is not a container\n", (((void *)0))));
 }
 break;
 }
@@ -15439,12 +15442,12 @@ ListAdd(args, MkExpIdentifier(MkIdentifier(watcherName)));
 ListAdd(stmt->expressions, MkExpCall(MkExpIdentifier(MkIdentifier("ecere::com::eInstance_Watch")), args));
 }
 else
-Compiler_Error("Property %s not found in class %s\n", prop->name, _class->fullName);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Property %s not found in class %s\n", (((void *)0))), prop->name, _class->fullName);
 }
 }
 }
 else
-Compiler_Error("Invalid watched object\n");
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Invalid watched object\n", (((void *)0))));
 }
 curExternal = external;
 curContext = context;
@@ -15455,7 +15458,7 @@ FreeExpression(object);
 FreeList(watches, FreePropertyWatch);
 }
 else
-Compiler_Error("No observer specified and not inside a _class\n");
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "No observer specified and not inside a _class\n", (((void *)0))));
 }
 else
 {
@@ -15501,7 +15504,7 @@ if(prop)
 CreateFireWatcher(prop, object, stmt);
 }
 else
-Compiler_Error("Property %s not found in class %s\n", propID->string, _class->fullName);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Property %s not found in class %s\n", (((void *)0))), propID->string, _class->fullName);
 }
 }
 else
@@ -15525,7 +15528,7 @@ FreeExpression(object);
 FreeList(watches, FreeIdentifier);
 }
 else
-Compiler_Error("Invalid object specified and not inside a class\n");
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Invalid object specified and not inside a class\n", (((void *)0))));
 }
 break;
 }
@@ -15585,7 +15588,7 @@ ListAdd(args, watcher ? CopyExpression(watcher) : MkExpIdentifier(MkIdentifier("
 ListAdd(stmt->expressions, MkExpCall(MkExpIdentifier(MkIdentifier("ecere::com::eInstance_StopWatching")), args));
 }
 else
-Compiler_Error("Property %s not found in class %s\n", prop->name, _class->fullName);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Property %s not found in class %s\n", (((void *)0))), prop->name, _class->fullName);
 }
 }
 if(object)
@@ -15595,10 +15598,10 @@ FreeExpression(watcher);
 FreeList(watches, FreeIdentifier);
 }
 else
-Compiler_Error("Invalid object specified and not inside a class\n");
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Invalid object specified and not inside a class\n", (((void *)0))));
 }
 else
-Compiler_Error("No observer specified and not inside a class\n");
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "No observer specified and not inside a class\n", (((void *)0))));
 }
 break;
 }
@@ -16043,8 +16046,6 @@ extern struct __ecereNameSpace__ecere__com__GlobalFunction * __ecereNameSpace__e
 
 extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_RegisterClass(int type, char *  name, char *  baseName, int size, int sizeClass, unsigned int (* )(void * ), void (* )(void * ), struct __ecereNameSpace__ecere__com__Instance * module, int declMode, int inheritanceAccess);
 
-extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
-
 void __ecereRegisterModule_pass15(struct __ecereNameSpace__ecere__com__Instance * module)
 {
 struct __ecereNameSpace__ecere__com__Class * class;
index 739d54f..9195042 100644 (file)
@@ -664,6 +664,7 @@ struct __ecereNameSpace__ecere__sys__OldList *  templateParams;
 struct __ecereNameSpace__ecere__sys__OldList templatedClasses;
 struct Context * ctx;
 int isIterator;
+struct Expression * propCategory;
 };
 
 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Type;
@@ -999,7 +1000,7 @@ struct Statement * issetStmt;
 struct Symbol * symbol;
 unsigned int conversion;
 unsigned int isWatchable;
-char *  category;
+struct Expression * category;
 };
 
 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyWatch;
@@ -2761,6 +2762,10 @@ return 0x1;
 
 extern void Compiler_Error(char *  format, ...);
 
+extern char *  __ecereNameSpace__ecere__GetTranslatedString(struct __ecereNameSpace__ecere__com__Instance * module, char *  string, char *  stringAndContext);
+
+extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
+
 static unsigned int ProcessBracketInst(struct Instantiation * inst, struct __ecereNameSpace__ecere__sys__OldList * list)
 {
 static int recursionCount = 0;
@@ -2829,7 +2834,7 @@ if(dataMember->isProperty)
 {
 if(!((struct __ecereNameSpace__ecere__com__Property *)dataMember)->Set)
 {
-Compiler_Error("No set defined for property %s\n", dataMember->name);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "No set defined for property %s\n", (((void *)0))), dataMember->name);
 continue;
 }
 recursionCount--;
@@ -2888,7 +2893,7 @@ if(dataMember->isProperty)
 {
 if(!((struct __ecereNameSpace__ecere__com__Property *)dataMember)->Set)
 {
-Compiler_Error("No set defined for property %s\n", dataMember->name);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "No set defined for property %s\n", (((void *)0))), dataMember->name);
 continue;
 }
 recursionCount--;
index 7bb0cfe..4587221 100644 (file)
@@ -655,6 +655,7 @@ struct __ecereNameSpace__ecere__sys__OldList *  templateParams;
 struct __ecereNameSpace__ecere__sys__OldList templatedClasses;
 struct Context * ctx;
 int isIterator;
+struct Expression * propCategory;
 };
 
 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Type;
@@ -983,7 +984,7 @@ struct Statement * issetStmt;
 struct Symbol * symbol;
 unsigned int conversion;
 unsigned int isWatchable;
-char *  category;
+struct Expression * category;
 };
 
 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyWatch;
@@ -1361,6 +1362,10 @@ extern void FreeType(struct Type * type);
 
 extern void Compiler_Error(char *  format, ...);
 
+extern char *  __ecereNameSpace__ecere__GetTranslatedString(struct __ecereNameSpace__ecere__com__Instance * module, char *  string, char *  stringAndContext);
+
+extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
+
 extern struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_FindMethod(struct __ecereNameSpace__ecere__com__Class * _class, char *  name, struct __ecereNameSpace__ecere__com__Instance * module);
 
 extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_FindClass(struct __ecereNameSpace__ecere__com__Instance * module, char *  name);
@@ -2024,7 +2029,7 @@ if(member)
 memberExp->member.memberType = 3;
 }
 else
-Compiler_Error("no set defined for property %s of class %s\n", prop->name, prop->_class->fullName);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "no set defined for property %s of class %s\n", (((void *)0))), prop->name, prop->_class->fullName);
 }
 }
 else
@@ -2955,11 +2960,11 @@ prop = (((void *)0));
 else
 {
 if(((unsigned int)((exp->usage & 0x40) >> 6)))
-Compiler_Error("cannot obtain address of property\n");
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "cannot obtain address of property\n", (((void *)0))));
 else if(!prop->Get)
-Compiler_Error("no get defined for property %s of class %s\n", prop->name, prop->_class->fullName);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "no get defined for property %s of class %s\n", (((void *)0))), prop->name, prop->_class->fullName);
 else if(((unsigned int)((exp->usage & 0x80) >> 7)))
-Compiler_Error("no get defined for property %s of class %s\n", prop->name, prop->_class->fullName);
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "no get defined for property %s of class %s\n", (((void *)0))), prop->name, prop->_class->fullName);
 }
 }
 }
index 8dbbdcb..6af5b74 100644 (file)
@@ -606,6 +606,10 @@ extern void FreeTypeName(struct TypeName * typeName);
 
 extern void Compiler_Warning(char *  format, ...);
 
+extern char *  __ecereNameSpace__ecere__GetTranslatedString(struct __ecereNameSpace__ecere__com__Instance * module, char *  string, char *  stringAndContext);
+
+extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
+
 extern void *  __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
 
 int __ecereVMethodID___ecereNameSpace__ecere__sys__File_Write;
@@ -666,12 +670,12 @@ FreeTypeName(parsedType);
 parsedType = (((void *)0));
 if(parseTypeError)
 {
-Compiler_Warning("parsing type %s\n", string);
+Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "parsing type %s\n", (((void *)0))), string);
 }
 }
 else
 {
-Compiler_Warning("parsing type %s\n", string);
+Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "parsing type %s\n", (((void *)0))), string);
 decl = baseDecl;
 }
 yylloc = oldLocation;
index 11ec921..474b0ec 100644 (file)
@@ -828,7 +828,7 @@ struct Statement * issetStmt;
 struct Symbol * symbol;
 unsigned int conversion;
 unsigned int isWatchable;
-char *  category;
+struct Expression * category;
 };
 
 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyWatch;
index e79dfa6..f6ddcf5 100644 (file)
@@ -31,7 +31,8 @@ IMPORTS = \
 SOURCES = \
        ecc.ec
 
-RESOURCES =
+RESOURCES = \
+       locale/zh_CN/LC_MESSAGES/ecc.mo
 
 # CROSS-PLATFORM MAGIC
 
@@ -85,6 +86,7 @@ $(OBJECTS): | objdir
 $(TARGET): $(SOURCES) $(RESOURCES) $(SYMBOLS) $(OBJECTS) | objdir
        $(CC) $(OFLAGS) $(OBJECTS) $(LIBS) -o $(TARGET) $(INSTALLNAME)
        $(STRIP) $(STRIPOPT) $(TARGET)
+       $(EAR) awq $(TARGET) locale/zh_CN/LC_MESSAGES/ecc.mo "locale/zh_CN/LC_MESSAGES"
        $(call cpq,$(TARGET),../../obj/$(PLATFORM)/bin/)
 
 # SYMBOL RULES
index b173fba..de6ccd1 100644 (file)
@@ -305,7 +305,7 @@ class CompilerApp : Application
       }
 
       if(!valid)
-         printf("Syntax:\n   ecc [-t <target platform>] [-cpp <c preprocessor>] [-o <output>] [-symbols <outputdir>] [-I<includedir>]* [-isystem <sysincludedir>]* [-D<definition>]* -c <input>\n");
+         printf($"Syntax:\n   ecc [-t <target platform>] [-cpp <c preprocessor>] [-o <output>] [-symbols <outputdir>] [-I<includedir>]* [-isystem <sysincludedir>]* [-D<definition>]* -c <input>\n");
       else
       {
          DualPipe cppOutput;
index 61a2147..a1c4a30 100644 (file)
    ],
    "ResourcesPath" : "",
    "Resources" : [
-
+      {
+         "Folder" : "locale",
+         "Files" : [
+            {
+               "Folder" : "zh_CN",
+               "Files" : [
+                  {
+                     "Folder" : "LC_MESSAGES",
+                     "Files" : [
+                        "ecc.mo"
+                     ]
+                  }
+               ]
+            }
+         ]
+      }
    ]
 }
\ No newline at end of file
diff --git a/compiler/ecc/locale/zh_CN/LC_MESSAGES/ecc.mo b/compiler/ecc/locale/zh_CN/LC_MESSAGES/ecc.mo
new file mode 100644 (file)
index 0000000..af8c3ae
Binary files /dev/null and b/compiler/ecc/locale/zh_CN/LC_MESSAGES/ecc.mo differ
diff --git a/compiler/ecc/locale/zh_CN/LC_MESSAGES/ecc.po b/compiler/ecc/locale/zh_CN/LC_MESSAGES/ecc.po
new file mode 100644 (file)
index 0000000..6a83ed0
--- /dev/null
@@ -0,0 +1,659 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: ecere\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2012-02-19 20:14+0900\n"
+"Last-Translator: Jerome St-Louis <jerome@ecere.com>\n"
+"Language-Team: ec <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Basepath: ..\\..\\..\\\n"
+
+#: .\ecc.ec:308
+msgid ""
+"Syntax:\n"
+"   ecc [-t <target platform>] [-cpp <c preprocessor>] [-o <output>] [-symbols <outputdir>] [-I<includedir>]* [-isystem <sysincludedir>]* [-D<definition>]* -c <input>\n"
+msgstr ""
+"Syntax:\n"
+"   ecc [-t <target platform>] [-cpp <c preprocessor>] [-o <output>] [-symbols <outputdir>] [-I<includedir>]* [-isystem <sysincludedir>]* [-D<definition>]* -c <input>\n"
+
+#~ msgid "                  [Get]\n"
+#~ msgstr "                  [Get]\n"
+
+#~ msgid "                  [Set]\n"
+#~ msgstr "                  [Set]\n"
+
+#~ msgid "                  [Virtual]\n"
+#~ msgstr "                  [Virtual]\n"
+
+#~ msgid "               [Expression]\n"
+#~ msgstr "               [Expression]\n"
+
+#~ msgid "               [Identifier]\n"
+#~ msgstr "               [Identifier]\n"
+
+#~ msgid "               [None]\n"
+#~ msgstr "               [None]\n"
+
+#~ msgid "               [Type]\n"
+#~ msgstr "               [Type]\n"
+
+#~ msgid "            [Get]\n"
+#~ msgstr "            [Get]\n"
+
+#~ msgid "            [Imported Methods]\n"
+#~ msgstr "            [Imported Methods]\n"
+
+#~ msgid "            [Imported Properties]\n"
+#~ msgstr "            [Imported Properties]\n"
+
+#~ msgid "            [Instantiated]\n"
+#~ msgstr "            [Instantiated]\n"
+
+#~ msgid "            [Pos]\n"
+#~ msgstr "            [Pos]\n"
+
+#~ msgid "            [Private]\n"
+#~ msgstr "            [Private]\n"
+
+#~ msgid "            [Public]\n"
+#~ msgstr "            [Public]\n"
+
+#~ msgid "            [Remote]\n"
+#~ msgstr "            [Remote]\n"
+
+#~ msgid "            [Set]\n"
+#~ msgstr "            [Set]\n"
+
+#~ msgid "            [Size]\n"
+#~ msgstr "            [Size]\n"
+
+#~ msgid "            [Type]\n"
+#~ msgstr "            [Type]\n"
+
+#~ msgid "            [Virtual]\n"
+#~ msgstr "            [Virtual]\n"
+
+#~ msgid "            [Watchable]\n"
+#~ msgstr "            [Watchable]\n"
+
+#~ msgid "         [Conversion]\n"
+#~ msgstr "         [Conversion]\n"
+
+#~ msgid "         [None]\n"
+#~ msgstr "         [None]\n"
+
+#~ msgid "         [Template Parameters]\n"
+#~ msgstr "         [Template Parameters]\n"
+
+#~ msgid "      [Base]\n"
+#~ msgstr "      [Base]\n"
+
+#~ msgid "      [Bit]\n"
+#~ msgstr "      [Bit]\n"
+
+#~ msgid "      [Defined Class Properties]\n"
+#~ msgstr "      [Defined Class Properties]\n"
+
+#~ msgid "      [Defined Data Members]\n"
+#~ msgstr "      [Defined Data Members]\n"
+
+#~ msgid "      [Defined Methods]\n"
+#~ msgstr "      [Defined Methods]\n"
+
+#~ msgid "      [Defined Properties]\n"
+#~ msgstr "      [Defined Properties]\n"
+
+#~ msgid "      [Enum Values]\n"
+#~ msgstr "      [Enum Values]\n"
+
+#~ msgid "      [Enum]\n"
+#~ msgstr "      [Enum]\n"
+
+#~ msgid "      [Fixed]\n"
+#~ msgstr "      [Fixed]\n"
+
+#~ msgid "      [Imported Classes]\n"
+#~ msgstr "      [Imported Classes]\n"
+
+#~ msgid "      [Imported Functions]\n"
+#~ msgstr "      [Imported Functions]\n"
+
+#~ msgid "      [No Expansion]\n"
+#~ msgstr "      [No Expansion]\n"
+
+#~ msgid "      [NoHead]\n"
+#~ msgstr "      [NoHead]\n"
+
+#~ msgid "      [Private Base]\n"
+#~ msgstr "      [Private Base]\n"
+
+#~ msgid "      [Private]\n"
+#~ msgstr "      [Private]\n"
+
+#~ msgid "      [Public]\n"
+#~ msgstr "      [Public]\n"
+
+#~ msgid "      [Remote]\n"
+#~ msgstr "      [Remote]\n"
+
+#~ msgid "      [Static]\n"
+#~ msgstr "      [Static]\n"
+
+#~ msgid "      [Struct]\n"
+#~ msgstr "      [Struct]\n"
+
+#~ msgid "      [Type]\n"
+#~ msgstr "      [Type]\n"
+
+#~ msgid "      [Union]\n"
+#~ msgstr "      [Union]\n"
+
+#~ msgid "      [Unit]\n"
+#~ msgstr "      [Unit]\n"
+
+#~ msgid "      [Value]\n"
+#~ msgstr "      [Value]\n"
+
+#~ msgid "      [Watchable]\n"
+#~ msgstr "      [Watchable]\n"
+
+#~ msgid "   [Private]\n"
+#~ msgstr "   [Private]\n"
+
+#~ msgid "   [Remote]\n"
+#~ msgstr "   [Remote]\n"
+
+#~ msgid "   [Static]\n"
+#~ msgstr "   [Static]\n"
+
+#~ msgid "   [This]\n"
+#~ msgstr "   [This]\n"
+
+#~ msgid " or "
+#~ msgstr " or "
+
+#~ msgid "%s expected to be derived from method class\n"
+#~ msgstr "%s expected to be derived from method class\n"
+
+#~ msgid "%s undefined; assuming extern returning int\n"
+#~ msgstr "%s不确定,假设外部返回整数\n"
+
+#~ msgid "(StaticString)"
+#~ msgstr "(StaticString)"
+
+#~ msgid "(null identifier)"
+#~ msgstr "(空标识符)"
+
+#~ msgid ", expecting "
+#~ msgstr ", expecting "
+
+#~ msgid ":%d:%d: error: "
+#~ msgstr ":%d:%d: error: "
+
+#~ msgid ":%d:%d: warning: "
+#~ msgstr ":%d:%d: warning: "
+
+#~ msgid "Array size not constant int (%s)\n"
+#~ msgstr "数组大小不是常整型(%s)\n"
+
+#~ msgid "Assigning list initializer to non list\n"
+#~ msgstr "列表分配给非列表\n"
+
+#~ msgid "Couldn't determine type of array elements\n"
+#~ msgstr "无法确定数组元素的类型\n"
+
+#~ msgid "Couldn't find member %s to override\n"
+#~ msgstr "不能找到成员%s去继承\n"
+
+#~ msgid "Couldn't open %s\n"
+#~ msgstr "Couldn't open %s\n"
+
+#~ msgid "Deleting"
+#~ msgstr "Deleting"
+
+#~ msgid "Entering state %d\n"
+#~ msgstr "Entering state %d\n"
+
+#~ msgid "Error: discarding"
+#~ msgstr "Error: discarding"
+
+#~ msgid "Error: discarding lookahead"
+#~ msgstr "Error: discarding lookahead"
+
+#~ msgid "Error: popping"
+#~ msgstr "Error: popping"
+
+#~ msgid "Importing took %.3f seconds for %s\n"
+#~ msgstr "Importing took %.3f seconds for %s\n"
+
+#~ msgid "Includes nested too deeply"
+#~ msgstr "Includes nested too deeply"
+
+#~ msgid "Incompatible virtual function %s\n"
+#~ msgstr "不兼容虚函数%s\n"
+
+#~ msgid "Member with same name already exists %s in class %s\n"
+#~ msgstr "Member with same name already exists %s in class %s\n"
+
+#~ msgid "Member with same name already exists %s in member %s\n"
+#~ msgstr "Member with same name already exists %s in member %s\n"
+
+#~ msgid "Multiple field index requires a name\n"
+#~ msgstr "Multiple field index requires a name\n"
+
+#~ msgid "Next token is"
+#~ msgstr "Next token is"
+
+#~ msgid ""
+#~ "No database table defined in this module or database_open already used.\n"
+#~ msgstr ""
+#~ "No database table defined in this module or database_open already used.\n"
+
+#~ msgid "Non-static %s making use of a static class\n"
+#~ msgstr "非静态%s 使用静态类\n"
+
+#~ msgid "Not a type: %s\n"
+#~ msgstr "Not a type: %s\n"
+
+#~ msgid "Now at end of input.\n"
+#~ msgstr "Now at end of input.\n"
+
+#~ msgid "Property %s not found in class %s\n"
+#~ msgstr "属性%s在类%s中未能找到\n"
+
+#~ msgid "Public %s making use of a private class\n"
+#~ msgstr "公共的%s使用私有类\n"
+
+#~ msgid "Reading a token: "
+#~ msgstr "Reading a token: "
+
+#~ msgid "Recursion in defined expression %s\n"
+#~ msgstr "Recursion in defined expression %s\n"
+
+#~ msgid "Redefinition of %s (defining as %s, already defined as %s)\n"
+#~ msgstr "重复定义%s (定义%s, 已经存在定义%s)\n"
+
+#~ msgid "Redefinition of %s ignored\n"
+#~ msgstr "Redefinition of %s ignored\n"
+
+#~ msgid "Redefinition of method %s in class %s\n"
+#~ msgstr "Redefinition of method %s in class %s\n"
+
+#~ msgid "Reducing stack by rule %d (line %u), "
+#~ msgstr "Reducing stack by rule %d (line %u), "
+
+#~ msgid "Shifting"
+#~ msgstr "Shifting"
+
+#~ msgid "Stack now"
+#~ msgstr "Stack now"
+
+#~ msgid "Stack size increased to %lu\n"
+#~ msgstr "Stack size increased to %lu\n"
+
+#~ msgid "Starting parse\n"
+#~ msgstr "Starting parse\n"
+
+#~ msgid ""
+#~ "Syntax:\n"
+#~ "   ecp [-t <target platform>] [-cpp <c preprocessor>] [-o <output>] [-"
+#~ "symbols <outputdir>] [-I<includedir>]* [-isystem <sysincludedir>]* [-"
+#~ "D<definition>]* -c <input>\n"
+#~ msgstr ""
+#~ "Syntax:\n"
+#~ "   ecp [-t <target platform>] [-cpp <c preprocessor>] [-o <output>] [-"
+#~ "symbols <outputdir>] [-I<includedir>]* [-isystem <sysincludedir>]* [-"
+#~ "D<definition>]* -c <input>\n"
+
+#~ msgid ""
+#~ "Syntax:\n"
+#~ "   ecs [-t <target platform>] <input>[, <input>]* -o <output>\n"
+#~ msgstr ""
+#~ "Syntax:\n"
+#~ "   ecs [-t <target platform>] <input>[, <input>]* -o <output>\n"
+
+#~ msgid "[Base]"
+#~ msgstr "[Base]"
+
+#~ msgid "[Bit]"
+#~ msgstr "[Bit]"
+
+#~ msgid "[Conversion]"
+#~ msgstr "[Conversion]"
+
+#~ msgid "[Data member]"
+#~ msgstr "[Data member]"
+
+#~ msgid "[Defined Class Properties]"
+#~ msgstr "[Defined Class Properties]"
+
+#~ msgid "[Defined Classes]"
+#~ msgstr "[Defined Classes]"
+
+#~ msgid "[Defined Classes]\n"
+#~ msgstr "[Defined Classes]\n"
+
+#~ msgid "[Defined Data Members]"
+#~ msgstr "[Defined Data Members]"
+
+#~ msgid "[Defined Data]"
+#~ msgstr "[Defined Data]"
+
+#~ msgid "[Defined Data]\n"
+#~ msgstr "[Defined Data]\n"
+
+#~ msgid "[Defined Expressions]"
+#~ msgstr "[Defined Expressions]"
+
+#~ msgid "[Defined Expressions]\n"
+#~ msgstr "[Defined Expressions]\n"
+
+#~ msgid "[Defined Functions]"
+#~ msgstr "[Defined Functions]"
+
+#~ msgid "[Defined Functions]\n"
+#~ msgstr "[Defined Functions]\n"
+
+#~ msgid "[Defined Methods]"
+#~ msgstr "[Defined Methods]"
+
+#~ msgid "[Defined Properties]"
+#~ msgstr "[Defined Properties]"
+
+#~ msgid "[Enum Values]"
+#~ msgstr "[Enum Values]"
+
+#~ msgid "[Enum]"
+#~ msgstr "[Enum]"
+
+#~ msgid "[Expression]"
+#~ msgstr "[Expression]"
+
+#~ msgid "[Fixed]"
+#~ msgstr "[Fixed]"
+
+#~ msgid "[Get]"
+#~ msgstr "[Get]"
+
+#~ msgid "[Global Instance]"
+#~ msgstr "[Global Instance]"
+
+#~ msgid "[Global Instance]\n"
+#~ msgstr "[Global Instance]\n"
+
+#~ msgid "[Identifier]"
+#~ msgstr "[Identifier]"
+
+#~ msgid "[Imported Classes]"
+#~ msgstr "[Imported Classes]"
+
+#~ msgid "[Imported Functions]"
+#~ msgstr "[Imported Functions]"
+
+#~ msgid "[Imported Methods]"
+#~ msgstr "[Imported Methods]"
+
+#~ msgid "[Imported Modules]"
+#~ msgstr "[Imported Modules]"
+
+#~ msgid "[Imported Modules]\n"
+#~ msgstr "[Imported Modules]\n"
+
+#~ msgid "[Imported Properties]"
+#~ msgstr "[Imported Properties]"
+
+#~ msgid "[Instantiated]"
+#~ msgstr "[Instantiated]"
+
+#~ msgid "[Method]"
+#~ msgstr "[Method]"
+
+#~ msgid "[No Expansion]"
+#~ msgstr "[No Expansion]"
+
+#~ msgid "[NoHead]"
+#~ msgstr "[NoHead]"
+
+#~ msgid "[None]"
+#~ msgstr "[None]"
+
+#~ msgid "[Pos]"
+#~ msgstr "[Pos]"
+
+#~ msgid "[Private Base]"
+#~ msgstr "[Private Base]"
+
+#~ msgid "[Private]"
+#~ msgstr "[Private]"
+
+#~ msgid "[Property]"
+#~ msgstr "[Property]"
+
+#~ msgid "[Public]"
+#~ msgstr "[Public]"
+
+#~ msgid "[Remote]"
+#~ msgstr "[Remote]"
+
+#~ msgid "[Set]"
+#~ msgstr "[Set]"
+
+#~ msgid "[Size]"
+#~ msgstr "[Size]"
+
+#~ msgid "[Static]"
+#~ msgstr "[Static]"
+
+#~ msgid "[Struct]"
+#~ msgstr "[Struct]"
+
+#~ msgid "[Template Parameters]"
+#~ msgstr "[Template Parameters]"
+
+#~ msgid "[This]"
+#~ msgstr "[This]"
+
+#~ msgid "[Type]"
+#~ msgstr "[Type]"
+
+#~ msgid "[Union]"
+#~ msgstr "[Union]"
+
+#~ msgid "[Unit]"
+#~ msgstr "[Unit]"
+
+#~ msgid "[Value]"
+#~ msgstr "[Value]"
+
+#~ msgid "[Virtual]"
+#~ msgstr "[Virtual]"
+
+#~ msgid "[Watchable]"
+#~ msgstr "[Watchable]"
+
+#~ msgid "bad buffer in yy_scan_bytes()"
+#~ msgstr "bad buffer in yy_scan_bytes()"
+
+#~ msgid "callable object undefined; extern assuming returning int\n"
+#~ msgstr "可调用对象未定义,外部假设返回整数\n"
+
+#~ msgid "called object %s is not a function\n"
+#~ msgstr "调用对象%s不是一个函数\n"
+
+#~ msgid "cannot add two pointers\n"
+#~ msgstr "cannot add two pointers\n"
+
+#~ msgid "cannot dereference type\n"
+#~ msgstr "cannot dereference type\n"
+
+#~ msgid "class data member"
+#~ msgstr "类数据成员"
+
+#~ msgid "class member instance"
+#~ msgstr "类成员实例"
+
+#~ msgid "couldn't determine type of %s; expected %s\n"
+#~ msgstr "无法确定%s的类型; 期望%s\n"
+
+#~ msgid "couldn't determine type of %s\n"
+#~ msgstr "无法确定%s的类型\n"
+
+#~ msgid "couldn't find member %s in class %s\n"
+#~ msgstr "不能找到成员%s在类%s中\n"
+
+#~ msgid "couldn't find virtual method %s in class %s\n"
+#~ msgstr "不能找到虚方法%s在类%s中\n"
+
+#~ msgid "different levels of indirection\n"
+#~ msgstr "different levels of indirection\n"
+
+#~ msgid "error: unhandled type populating instance\n"
+#~ msgstr "error: unhandled type populating instance\n"
+
+#~ msgid "fatal error - scanner input buffer overflow"
+#~ msgstr "fatal error - scanner input buffer overflow"
+
+#~ msgid "fatal flex scanner internal error--end of buffer missed"
+#~ msgstr "fatal flex scanner internal error--end of buffer missed"
+
+#~ msgid "fatal flex scanner internal error--no action found"
+#~ msgstr "fatal flex scanner internal error--no action found"
+
+#~ msgid "flex scanner push-back overflow"
+#~ msgstr "flex scanner push-back overflow"
+
+#~ msgid "incompatible expression %s (%s); expected %s\n"
+#~ msgstr "incompatible expression %s (%s); expected %s\n"
+
+#~ msgid "incompatible expressions %s (%s) and %s (%s)\n"
+#~ msgstr "不兼容的表达示%s (%s) 和%s (%s)\n"
+
+#~ msgid "incompatible instance method %s\n"
+#~ msgstr "不兼容的实例方法%s\n"
+
+#~ msgid "incompatible parameter %s (expected %s)\n"
+#~ msgstr "不兼容参数%s (期望%s)\n"
+
+#~ msgid "incompatible return type for function\n"
+#~ msgstr "函数返回类型不兼容\n"
+
+#~ msgid ""
+#~ "input buffer overflow, can't enlarge buffer because scanner uses REJECT"
+#~ msgstr ""
+#~ "input buffer overflow, can't enlarge buffer because scanner uses REJECT"
+
+#~ msgid "input in flex scanner failed"
+#~ msgstr "input in flex scanner failed"
+
+#~ msgid "invalid class specifier %s for object of class %s\n"
+#~ msgstr "无效的类说明%s关于对象类%s\n"
+
+#~ msgid "member operator on non-structure type expression %s\n"
+#~ msgstr "成员操作符对非结构类型表达式%s\n"
+
+#~ msgid "method class must be derived from %s\n"
+#~ msgstr "method class must be derived from %s\n"
+
+#~ msgid "method class should not take an object\n"
+#~ msgstr "method class should not take an object\n"
+
+#~ msgid "not enough arguments for function %s (%d given, expected %d)\n"
+#~ msgstr "参数不够,函数%s (规定%d个, 期望%d个)\n"
+
+#~ msgid "not enough arguments for method %s::%s (%d given, expected %d)\n"
+#~ msgstr "参数不够,方法%s::%s(规定%d个, 期望%d个)\n"
+
+#~ msgid "not enough parameters\n"
+#~ msgstr "没有足够参数\n"
+
+#~ msgid "nterm %s ("
+#~ msgstr "nterm %s ("
+
+#~ msgid "operating on %s and %s with an untyped result, assuming %s\n"
+#~ msgstr "operating on %s and %s with an untyped result, assuming %s\n"
+
+#~ msgid "operator %s illegal on pointer\n"
+#~ msgstr "operator %s illegal on pointer\n"
+
+#~ msgid "out of dynamic memory in yy_create_buffer()"
+#~ msgstr "out of dynamic memory in yy_create_buffer()"
+
+#~ msgid "out of dynamic memory in yy_scan_buffer()"
+#~ msgstr "out of dynamic memory in yy_scan_buffer()"
+
+#~ msgid "out of dynamic memory in yy_scan_bytes()"
+#~ msgstr "out of dynamic memory in yy_scan_bytes()"
+
+#~ msgid "out of memory expanding start-condition stack"
+#~ msgstr "out of memory expanding start-condition stack"
+
+#~ msgid "overriding class expected to be derived from method class\n"
+#~ msgstr "overriding class expected to be derived from method class\n"
+
+#~ msgid "parser stack overflow"
+#~ msgstr "parser stack overflow"
+
+#~ msgid "redefinition of class %s\n"
+#~ msgstr "redefinition of class %s\n"
+
+#~ msgid "redefinition of constructor for class %s\n"
+#~ msgstr "重复定义构造类%s\n"
+
+#~ msgid "redefinition of destructor for class %s\n"
+#~ msgstr "重复定义析构类%s\n"
+
+#~ msgid "start-condition stack underflow"
+#~ msgstr "start-condition stack underflow"
+
+#~ msgid "syntax error"
+#~ msgstr "syntax error"
+
+#~ msgid "syntax error, unexpected "
+#~ msgstr "syntax error, unexpected "
+
+#~ msgid "syntax error: cannot back up"
+#~ msgstr "syntax error: cannot back up"
+
+#~ msgid "syntax error; also virtual memory exhausted"
+#~ msgstr "syntax error; also virtual memory exhausted"
+
+#~ msgid "syntax error\n"
+#~ msgstr "syntax error\n"
+
+#~ msgid "token %s ("
+#~ msgstr "token %s ("
+
+#~ msgid "too many arguments for function %s (%d given, expected %d)\n"
+#~ msgstr "参数太多,函数%s (规定%d个, 期望%d个)\n"
+
+#~ msgid "too many arguments for method %s::%s (%d given, expected %d)\n"
+#~ msgstr "参数太多,方法%s::%s(规定%d个, 期望%d个)\n"
+
+#~ msgid "too many initializers for instantiation of class %s\n"
+#~ msgstr "too many initializers for instantiation of class %s\n"
+
+#~ msgid "too many parameters\n"
+#~ msgstr "太多参数\n"
+
+#~ msgid "undefined class %s\n"
+#~ msgstr "未定义类%s\n"
+
+#~ msgid "unresolved identifier %s::%s\n"
+#~ msgstr "不确定的标识符%s::%s\n"
+
+#~ msgid "unresolved identifier %s; expected %s\n"
+#~ msgstr "不确定的标识符%s; 期望%s\n"
+
+#~ msgid "unresolved identifier %s\n"
+#~ msgstr "不确定的标识符%s\n"
+
+#~ msgid "unresolved symbol used as an instance method %s\n"
+#~ msgstr "unresolved symbol used as an instance method %s\n"
index a005576..f6ea9ca 100644 (file)
@@ -31,7 +31,8 @@ IMPORTS = \
 SOURCES = \
        ecp.ec
 
-RESOURCES =
+RESOURCES = \
+       locale/zh_CN/LC_MESSAGES/ecp.mo
 
 # CROSS-PLATFORM MAGIC
 
@@ -85,6 +86,7 @@ $(OBJECTS): | objdir
 $(TARGET): $(SOURCES) $(RESOURCES) $(SYMBOLS) $(OBJECTS) | objdir
        $(CC) $(OFLAGS) $(OBJECTS) $(LIBS) -o $(TARGET) $(INSTALLNAME)
        $(STRIP) $(STRIPOPT) $(TARGET)
+       $(EAR) awq $(TARGET) locale/zh_CN/LC_MESSAGES/ecp.mo "locale/zh_CN/LC_MESSAGES"
        $(call cpq,$(TARGET),../../obj/$(PLATFORM)/bin/)
 
 # SYMBOL RULES
index 65ae03c..19cb816 100644 (file)
@@ -1455,7 +1455,7 @@ class PrecompApp : Application
       }
       
       if(!valid)
-         printf("Syntax:\n   ecp [-t <target platform>] [-cpp <c preprocessor>] [-o <output>] [-symbols <outputdir>] [-I<includedir>]* [-isystem <sysincludedir>]* [-D<definition>]* -c <input>\n");
+         printf($"Syntax:\n   ecp [-t <target platform>] [-cpp <c preprocessor>] [-o <output>] [-symbols <outputdir>] [-I<includedir>]* [-isystem <sysincludedir>]* [-D<definition>]* -c <input>\n");
       else
       {
          char command[1024];
index 7475568..1b1b0b2 100644 (file)
    ],
    "ResourcesPath" : "",
    "Resources" : [
-
+      {
+         "Folder" : "locale",
+         "Files" : [
+            {
+               "Folder" : "zh_CN",
+               "Files" : [
+                  {
+                     "Folder" : "LC_MESSAGES",
+                     "Files" : [
+                        "ecp.mo"
+                     ]
+                  }
+               ]
+            }
+         ]
+      }
    ]
 }
\ No newline at end of file
diff --git a/compiler/ecp/locale/zh_CN/LC_MESSAGES/ecp.mo b/compiler/ecp/locale/zh_CN/LC_MESSAGES/ecp.mo
new file mode 100644 (file)
index 0000000..df89d88
Binary files /dev/null and b/compiler/ecp/locale/zh_CN/LC_MESSAGES/ecp.mo differ
diff --git a/compiler/ecp/locale/zh_CN/LC_MESSAGES/ecp.po b/compiler/ecp/locale/zh_CN/LC_MESSAGES/ecp.po
new file mode 100644 (file)
index 0000000..e8e48f4
--- /dev/null
@@ -0,0 +1,659 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: ecere\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2012-02-19 20:14+0900\n"
+"Last-Translator: Jerome St-Louis <jerome@ecere.com>\n"
+"Language-Team: ec <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Basepath: ..\\..\\..\\\n"
+
+#: .\ecp.ec:1458
+msgid ""
+"Syntax:\n"
+"   ecp [-t <target platform>] [-cpp <c preprocessor>] [-o <output>] [-symbols <outputdir>] [-I<includedir>]* [-isystem <sysincludedir>]* [-D<definition>]* -c <input>\n"
+msgstr ""
+"Syntax:\n"
+"   ecp [-t <target platform>] [-cpp <c preprocessor>] [-o <output>] [-symbols <outputdir>] [-I<includedir>]* [-isystem <sysincludedir>]* [-D<definition>]* -c <input>\n"
+
+#~ msgid "                  [Get]\n"
+#~ msgstr "                  [Get]\n"
+
+#~ msgid "                  [Set]\n"
+#~ msgstr "                  [Set]\n"
+
+#~ msgid "                  [Virtual]\n"
+#~ msgstr "                  [Virtual]\n"
+
+#~ msgid "               [Expression]\n"
+#~ msgstr "               [Expression]\n"
+
+#~ msgid "               [Identifier]\n"
+#~ msgstr "               [Identifier]\n"
+
+#~ msgid "               [None]\n"
+#~ msgstr "               [None]\n"
+
+#~ msgid "               [Type]\n"
+#~ msgstr "               [Type]\n"
+
+#~ msgid "            [Get]\n"
+#~ msgstr "            [Get]\n"
+
+#~ msgid "            [Imported Methods]\n"
+#~ msgstr "            [Imported Methods]\n"
+
+#~ msgid "            [Imported Properties]\n"
+#~ msgstr "            [Imported Properties]\n"
+
+#~ msgid "            [Instantiated]\n"
+#~ msgstr "            [Instantiated]\n"
+
+#~ msgid "            [Pos]\n"
+#~ msgstr "            [Pos]\n"
+
+#~ msgid "            [Private]\n"
+#~ msgstr "            [Private]\n"
+
+#~ msgid "            [Public]\n"
+#~ msgstr "            [Public]\n"
+
+#~ msgid "            [Remote]\n"
+#~ msgstr "            [Remote]\n"
+
+#~ msgid "            [Set]\n"
+#~ msgstr "            [Set]\n"
+
+#~ msgid "            [Size]\n"
+#~ msgstr "            [Size]\n"
+
+#~ msgid "            [Type]\n"
+#~ msgstr "            [Type]\n"
+
+#~ msgid "            [Virtual]\n"
+#~ msgstr "            [Virtual]\n"
+
+#~ msgid "            [Watchable]\n"
+#~ msgstr "            [Watchable]\n"
+
+#~ msgid "         [Conversion]\n"
+#~ msgstr "         [Conversion]\n"
+
+#~ msgid "         [None]\n"
+#~ msgstr "         [None]\n"
+
+#~ msgid "         [Template Parameters]\n"
+#~ msgstr "         [Template Parameters]\n"
+
+#~ msgid "      [Base]\n"
+#~ msgstr "      [Base]\n"
+
+#~ msgid "      [Bit]\n"
+#~ msgstr "      [Bit]\n"
+
+#~ msgid "      [Defined Class Properties]\n"
+#~ msgstr "      [Defined Class Properties]\n"
+
+#~ msgid "      [Defined Data Members]\n"
+#~ msgstr "      [Defined Data Members]\n"
+
+#~ msgid "      [Defined Methods]\n"
+#~ msgstr "      [Defined Methods]\n"
+
+#~ msgid "      [Defined Properties]\n"
+#~ msgstr "      [Defined Properties]\n"
+
+#~ msgid "      [Enum Values]\n"
+#~ msgstr "      [Enum Values]\n"
+
+#~ msgid "      [Enum]\n"
+#~ msgstr "      [Enum]\n"
+
+#~ msgid "      [Fixed]\n"
+#~ msgstr "      [Fixed]\n"
+
+#~ msgid "      [Imported Classes]\n"
+#~ msgstr "      [Imported Classes]\n"
+
+#~ msgid "      [Imported Functions]\n"
+#~ msgstr "      [Imported Functions]\n"
+
+#~ msgid "      [No Expansion]\n"
+#~ msgstr "      [No Expansion]\n"
+
+#~ msgid "      [NoHead]\n"
+#~ msgstr "      [NoHead]\n"
+
+#~ msgid "      [Private Base]\n"
+#~ msgstr "      [Private Base]\n"
+
+#~ msgid "      [Private]\n"
+#~ msgstr "      [Private]\n"
+
+#~ msgid "      [Public]\n"
+#~ msgstr "      [Public]\n"
+
+#~ msgid "      [Remote]\n"
+#~ msgstr "      [Remote]\n"
+
+#~ msgid "      [Static]\n"
+#~ msgstr "      [Static]\n"
+
+#~ msgid "      [Struct]\n"
+#~ msgstr "      [Struct]\n"
+
+#~ msgid "      [Type]\n"
+#~ msgstr "      [Type]\n"
+
+#~ msgid "      [Union]\n"
+#~ msgstr "      [Union]\n"
+
+#~ msgid "      [Unit]\n"
+#~ msgstr "      [Unit]\n"
+
+#~ msgid "      [Value]\n"
+#~ msgstr "      [Value]\n"
+
+#~ msgid "      [Watchable]\n"
+#~ msgstr "      [Watchable]\n"
+
+#~ msgid "   [Private]\n"
+#~ msgstr "   [Private]\n"
+
+#~ msgid "   [Remote]\n"
+#~ msgstr "   [Remote]\n"
+
+#~ msgid "   [Static]\n"
+#~ msgstr "   [Static]\n"
+
+#~ msgid "   [This]\n"
+#~ msgstr "   [This]\n"
+
+#~ msgid " or "
+#~ msgstr " or "
+
+#~ msgid "%s expected to be derived from method class\n"
+#~ msgstr "%s expected to be derived from method class\n"
+
+#~ msgid "%s undefined; assuming extern returning int\n"
+#~ msgstr "%s不确定,假设外部返回整数\n"
+
+#~ msgid "(StaticString)"
+#~ msgstr "(StaticString)"
+
+#~ msgid "(null identifier)"
+#~ msgstr "(空标识符)"
+
+#~ msgid ", expecting "
+#~ msgstr ", expecting "
+
+#~ msgid ":%d:%d: error: "
+#~ msgstr ":%d:%d: error: "
+
+#~ msgid ":%d:%d: warning: "
+#~ msgstr ":%d:%d: warning: "
+
+#~ msgid "Array size not constant int (%s)\n"
+#~ msgstr "数组大小不是常整型(%s)\n"
+
+#~ msgid "Assigning list initializer to non list\n"
+#~ msgstr "列表分配给非列表\n"
+
+#~ msgid "Couldn't determine type of array elements\n"
+#~ msgstr "无法确定数组元素的类型\n"
+
+#~ msgid "Couldn't find member %s to override\n"
+#~ msgstr "不能找到成员%s去继承\n"
+
+#~ msgid "Couldn't open %s\n"
+#~ msgstr "Couldn't open %s\n"
+
+#~ msgid "Deleting"
+#~ msgstr "Deleting"
+
+#~ msgid "Entering state %d\n"
+#~ msgstr "Entering state %d\n"
+
+#~ msgid "Error: discarding"
+#~ msgstr "Error: discarding"
+
+#~ msgid "Error: discarding lookahead"
+#~ msgstr "Error: discarding lookahead"
+
+#~ msgid "Error: popping"
+#~ msgstr "Error: popping"
+
+#~ msgid "Importing took %.3f seconds for %s\n"
+#~ msgstr "Importing took %.3f seconds for %s\n"
+
+#~ msgid "Includes nested too deeply"
+#~ msgstr "Includes nested too deeply"
+
+#~ msgid "Incompatible virtual function %s\n"
+#~ msgstr "不兼容虚函数%s\n"
+
+#~ msgid "Member with same name already exists %s in class %s\n"
+#~ msgstr "Member with same name already exists %s in class %s\n"
+
+#~ msgid "Member with same name already exists %s in member %s\n"
+#~ msgstr "Member with same name already exists %s in member %s\n"
+
+#~ msgid "Multiple field index requires a name\n"
+#~ msgstr "Multiple field index requires a name\n"
+
+#~ msgid "Next token is"
+#~ msgstr "Next token is"
+
+#~ msgid ""
+#~ "No database table defined in this module or database_open already used.\n"
+#~ msgstr ""
+#~ "No database table defined in this module or database_open already used.\n"
+
+#~ msgid "Non-static %s making use of a static class\n"
+#~ msgstr "非静态%s 使用静态类\n"
+
+#~ msgid "Not a type: %s\n"
+#~ msgstr "Not a type: %s\n"
+
+#~ msgid "Now at end of input.\n"
+#~ msgstr "Now at end of input.\n"
+
+#~ msgid "Property %s not found in class %s\n"
+#~ msgstr "属性%s在类%s中未能找到\n"
+
+#~ msgid "Public %s making use of a private class\n"
+#~ msgstr "公共的%s使用私有类\n"
+
+#~ msgid "Reading a token: "
+#~ msgstr "Reading a token: "
+
+#~ msgid "Recursion in defined expression %s\n"
+#~ msgstr "Recursion in defined expression %s\n"
+
+#~ msgid "Redefinition of %s (defining as %s, already defined as %s)\n"
+#~ msgstr "重复定义%s (定义%s, 已经存在定义%s)\n"
+
+#~ msgid "Redefinition of %s ignored\n"
+#~ msgstr "Redefinition of %s ignored\n"
+
+#~ msgid "Redefinition of method %s in class %s\n"
+#~ msgstr "Redefinition of method %s in class %s\n"
+
+#~ msgid "Reducing stack by rule %d (line %u), "
+#~ msgstr "Reducing stack by rule %d (line %u), "
+
+#~ msgid "Shifting"
+#~ msgstr "Shifting"
+
+#~ msgid "Stack now"
+#~ msgstr "Stack now"
+
+#~ msgid "Stack size increased to %lu\n"
+#~ msgstr "Stack size increased to %lu\n"
+
+#~ msgid "Starting parse\n"
+#~ msgstr "Starting parse\n"
+
+#~ msgid ""
+#~ "Syntax:\n"
+#~ "   ecc [-t <target platform>] [-cpp <c preprocessor>] [-o <output>] [-"
+#~ "symbols <outputdir>] [-I<includedir>]* [-isystem <sysincludedir>]* [-"
+#~ "D<definition>]* -c <input>\n"
+#~ msgstr ""
+#~ "Syntax:\n"
+#~ "   ecc [-t <target platform>] [-cpp <c preprocessor>] [-o <output>] [-"
+#~ "symbols <outputdir>] [-I<includedir>]* [-isystem <sysincludedir>]* [-"
+#~ "D<definition>]* -c <input>\n"
+
+#~ msgid ""
+#~ "Syntax:\n"
+#~ "   ecs [-t <target platform>] <input>[, <input>]* -o <output>\n"
+#~ msgstr ""
+#~ "Syntax:\n"
+#~ "   ecs [-t <target platform>] <input>[, <input>]* -o <output>\n"
+
+#~ msgid "[Base]"
+#~ msgstr "[Base]"
+
+#~ msgid "[Bit]"
+#~ msgstr "[Bit]"
+
+#~ msgid "[Conversion]"
+#~ msgstr "[Conversion]"
+
+#~ msgid "[Data member]"
+#~ msgstr "[Data member]"
+
+#~ msgid "[Defined Class Properties]"
+#~ msgstr "[Defined Class Properties]"
+
+#~ msgid "[Defined Classes]"
+#~ msgstr "[Defined Classes]"
+
+#~ msgid "[Defined Classes]\n"
+#~ msgstr "[Defined Classes]\n"
+
+#~ msgid "[Defined Data Members]"
+#~ msgstr "[Defined Data Members]"
+
+#~ msgid "[Defined Data]"
+#~ msgstr "[Defined Data]"
+
+#~ msgid "[Defined Data]\n"
+#~ msgstr "[Defined Data]\n"
+
+#~ msgid "[Defined Expressions]"
+#~ msgstr "[Defined Expressions]"
+
+#~ msgid "[Defined Expressions]\n"
+#~ msgstr "[Defined Expressions]\n"
+
+#~ msgid "[Defined Functions]"
+#~ msgstr "[Defined Functions]"
+
+#~ msgid "[Defined Functions]\n"
+#~ msgstr "[Defined Functions]\n"
+
+#~ msgid "[Defined Methods]"
+#~ msgstr "[Defined Methods]"
+
+#~ msgid "[Defined Properties]"
+#~ msgstr "[Defined Properties]"
+
+#~ msgid "[Enum Values]"
+#~ msgstr "[Enum Values]"
+
+#~ msgid "[Enum]"
+#~ msgstr "[Enum]"
+
+#~ msgid "[Expression]"
+#~ msgstr "[Expression]"
+
+#~ msgid "[Fixed]"
+#~ msgstr "[Fixed]"
+
+#~ msgid "[Get]"
+#~ msgstr "[Get]"
+
+#~ msgid "[Global Instance]"
+#~ msgstr "[Global Instance]"
+
+#~ msgid "[Global Instance]\n"
+#~ msgstr "[Global Instance]\n"
+
+#~ msgid "[Identifier]"
+#~ msgstr "[Identifier]"
+
+#~ msgid "[Imported Classes]"
+#~ msgstr "[Imported Classes]"
+
+#~ msgid "[Imported Functions]"
+#~ msgstr "[Imported Functions]"
+
+#~ msgid "[Imported Methods]"
+#~ msgstr "[Imported Methods]"
+
+#~ msgid "[Imported Modules]"
+#~ msgstr "[Imported Modules]"
+
+#~ msgid "[Imported Modules]\n"
+#~ msgstr "[Imported Modules]\n"
+
+#~ msgid "[Imported Properties]"
+#~ msgstr "[Imported Properties]"
+
+#~ msgid "[Instantiated]"
+#~ msgstr "[Instantiated]"
+
+#~ msgid "[Method]"
+#~ msgstr "[Method]"
+
+#~ msgid "[No Expansion]"
+#~ msgstr "[No Expansion]"
+
+#~ msgid "[NoHead]"
+#~ msgstr "[NoHead]"
+
+#~ msgid "[None]"
+#~ msgstr "[None]"
+
+#~ msgid "[Pos]"
+#~ msgstr "[Pos]"
+
+#~ msgid "[Private Base]"
+#~ msgstr "[Private Base]"
+
+#~ msgid "[Private]"
+#~ msgstr "[Private]"
+
+#~ msgid "[Property]"
+#~ msgstr "[Property]"
+
+#~ msgid "[Public]"
+#~ msgstr "[Public]"
+
+#~ msgid "[Remote]"
+#~ msgstr "[Remote]"
+
+#~ msgid "[Set]"
+#~ msgstr "[Set]"
+
+#~ msgid "[Size]"
+#~ msgstr "[Size]"
+
+#~ msgid "[Static]"
+#~ msgstr "[Static]"
+
+#~ msgid "[Struct]"
+#~ msgstr "[Struct]"
+
+#~ msgid "[Template Parameters]"
+#~ msgstr "[Template Parameters]"
+
+#~ msgid "[This]"
+#~ msgstr "[This]"
+
+#~ msgid "[Type]"
+#~ msgstr "[Type]"
+
+#~ msgid "[Union]"
+#~ msgstr "[Union]"
+
+#~ msgid "[Unit]"
+#~ msgstr "[Unit]"
+
+#~ msgid "[Value]"
+#~ msgstr "[Value]"
+
+#~ msgid "[Virtual]"
+#~ msgstr "[Virtual]"
+
+#~ msgid "[Watchable]"
+#~ msgstr "[Watchable]"
+
+#~ msgid "bad buffer in yy_scan_bytes()"
+#~ msgstr "bad buffer in yy_scan_bytes()"
+
+#~ msgid "callable object undefined; extern assuming returning int\n"
+#~ msgstr "可调用对象未定义,外部假设返回整数\n"
+
+#~ msgid "called object %s is not a function\n"
+#~ msgstr "调用对象%s不是一个函数\n"
+
+#~ msgid "cannot add two pointers\n"
+#~ msgstr "cannot add two pointers\n"
+
+#~ msgid "cannot dereference type\n"
+#~ msgstr "cannot dereference type\n"
+
+#~ msgid "class data member"
+#~ msgstr "类数据成员"
+
+#~ msgid "class member instance"
+#~ msgstr "类成员实例"
+
+#~ msgid "couldn't determine type of %s; expected %s\n"
+#~ msgstr "无法确定%s的类型; 期望%s\n"
+
+#~ msgid "couldn't determine type of %s\n"
+#~ msgstr "无法确定%s的类型\n"
+
+#~ msgid "couldn't find member %s in class %s\n"
+#~ msgstr "不能找到成员%s在类%s中\n"
+
+#~ msgid "couldn't find virtual method %s in class %s\n"
+#~ msgstr "不能找到虚方法%s在类%s中\n"
+
+#~ msgid "different levels of indirection\n"
+#~ msgstr "different levels of indirection\n"
+
+#~ msgid "error: unhandled type populating instance\n"
+#~ msgstr "error: unhandled type populating instance\n"
+
+#~ msgid "fatal error - scanner input buffer overflow"
+#~ msgstr "fatal error - scanner input buffer overflow"
+
+#~ msgid "fatal flex scanner internal error--end of buffer missed"
+#~ msgstr "fatal flex scanner internal error--end of buffer missed"
+
+#~ msgid "fatal flex scanner internal error--no action found"
+#~ msgstr "fatal flex scanner internal error--no action found"
+
+#~ msgid "flex scanner push-back overflow"
+#~ msgstr "flex scanner push-back overflow"
+
+#~ msgid "incompatible expression %s (%s); expected %s\n"
+#~ msgstr "incompatible expression %s (%s); expected %s\n"
+
+#~ msgid "incompatible expressions %s (%s) and %s (%s)\n"
+#~ msgstr "不兼容的表达示%s (%s) 和%s (%s)\n"
+
+#~ msgid "incompatible instance method %s\n"
+#~ msgstr "不兼容的实例方法%s\n"
+
+#~ msgid "incompatible parameter %s (expected %s)\n"
+#~ msgstr "不兼容参数%s (期望%s)\n"
+
+#~ msgid "incompatible return type for function\n"
+#~ msgstr "函数返回类型不兼容\n"
+
+#~ msgid ""
+#~ "input buffer overflow, can't enlarge buffer because scanner uses REJECT"
+#~ msgstr ""
+#~ "input buffer overflow, can't enlarge buffer because scanner uses REJECT"
+
+#~ msgid "input in flex scanner failed"
+#~ msgstr "input in flex scanner failed"
+
+#~ msgid "invalid class specifier %s for object of class %s\n"
+#~ msgstr "无效的类说明%s关于对象类%s\n"
+
+#~ msgid "member operator on non-structure type expression %s\n"
+#~ msgstr "成员操作符对非结构类型表达式%s\n"
+
+#~ msgid "method class must be derived from %s\n"
+#~ msgstr "method class must be derived from %s\n"
+
+#~ msgid "method class should not take an object\n"
+#~ msgstr "method class should not take an object\n"
+
+#~ msgid "not enough arguments for function %s (%d given, expected %d)\n"
+#~ msgstr "参数不够,函数%s (规定%d个, 期望%d个)\n"
+
+#~ msgid "not enough arguments for method %s::%s (%d given, expected %d)\n"
+#~ msgstr "参数不够,方法%s::%s(规定%d个, 期望%d个)\n"
+
+#~ msgid "not enough parameters\n"
+#~ msgstr "没有足够参数\n"
+
+#~ msgid "nterm %s ("
+#~ msgstr "nterm %s ("
+
+#~ msgid "operating on %s and %s with an untyped result, assuming %s\n"
+#~ msgstr "operating on %s and %s with an untyped result, assuming %s\n"
+
+#~ msgid "operator %s illegal on pointer\n"
+#~ msgstr "operator %s illegal on pointer\n"
+
+#~ msgid "out of dynamic memory in yy_create_buffer()"
+#~ msgstr "out of dynamic memory in yy_create_buffer()"
+
+#~ msgid "out of dynamic memory in yy_scan_buffer()"
+#~ msgstr "out of dynamic memory in yy_scan_buffer()"
+
+#~ msgid "out of dynamic memory in yy_scan_bytes()"
+#~ msgstr "out of dynamic memory in yy_scan_bytes()"
+
+#~ msgid "out of memory expanding start-condition stack"
+#~ msgstr "out of memory expanding start-condition stack"
+
+#~ msgid "overriding class expected to be derived from method class\n"
+#~ msgstr "overriding class expected to be derived from method class\n"
+
+#~ msgid "parser stack overflow"
+#~ msgstr "parser stack overflow"
+
+#~ msgid "redefinition of class %s\n"
+#~ msgstr "redefinition of class %s\n"
+
+#~ msgid "redefinition of constructor for class %s\n"
+#~ msgstr "重复定义构造类%s\n"
+
+#~ msgid "redefinition of destructor for class %s\n"
+#~ msgstr "重复定义析构类%s\n"
+
+#~ msgid "start-condition stack underflow"
+#~ msgstr "start-condition stack underflow"
+
+#~ msgid "syntax error"
+#~ msgstr "syntax error"
+
+#~ msgid "syntax error, unexpected "
+#~ msgstr "syntax error, unexpected "
+
+#~ msgid "syntax error: cannot back up"
+#~ msgstr "syntax error: cannot back up"
+
+#~ msgid "syntax error; also virtual memory exhausted"
+#~ msgstr "syntax error; also virtual memory exhausted"
+
+#~ msgid "syntax error\n"
+#~ msgstr "syntax error\n"
+
+#~ msgid "token %s ("
+#~ msgstr "token %s ("
+
+#~ msgid "too many arguments for function %s (%d given, expected %d)\n"
+#~ msgstr "参数太多,函数%s (规定%d个, 期望%d个)\n"
+
+#~ msgid "too many arguments for method %s::%s (%d given, expected %d)\n"
+#~ msgstr "参数太多,方法%s::%s(规定%d个, 期望%d个)\n"
+
+#~ msgid "too many initializers for instantiation of class %s\n"
+#~ msgstr "too many initializers for instantiation of class %s\n"
+
+#~ msgid "too many parameters\n"
+#~ msgstr "太多参数\n"
+
+#~ msgid "undefined class %s\n"
+#~ msgstr "未定义类%s\n"
+
+#~ msgid "unresolved identifier %s::%s\n"
+#~ msgstr "不确定的标识符%s::%s\n"
+
+#~ msgid "unresolved identifier %s; expected %s\n"
+#~ msgstr "不确定的标识符%s; 期望%s\n"
+
+#~ msgid "unresolved identifier %s\n"
+#~ msgstr "不确定的标识符%s\n"
+
+#~ msgid "unresolved symbol used as an instance method %s\n"
+#~ msgstr "unresolved symbol used as an instance method %s\n"
index 3d4325f..b228a34 100644 (file)
@@ -31,7 +31,8 @@ IMPORTS = \
 SOURCES = \
        ecs.ec
 
-RESOURCES =
+RESOURCES = \
+       locale/zh_CN/LC_MESSAGES/ecs.mo
 
 # CROSS-PLATFORM MAGIC
 
@@ -85,6 +86,7 @@ $(OBJECTS): | objdir
 $(TARGET): $(SOURCES) $(RESOURCES) $(SYMBOLS) $(OBJECTS) | objdir
        $(CC) $(OFLAGS) $(OBJECTS) $(LIBS) -o $(TARGET) $(INSTALLNAME)
        $(STRIP) $(STRIPOPT) $(TARGET)
+       $(EAR) awq $(TARGET) locale/zh_CN/LC_MESSAGES/ecs.mo "locale/zh_CN/LC_MESSAGES"
        $(call cpq,$(TARGET),../../obj/$(PLATFORM)/bin/)
 
 # SYMBOL RULES
index 9276f56..8004c54 100644 (file)
@@ -1701,7 +1701,7 @@ class SymbolgenApp : Application
          valid = false;
      
       if(!valid)
-         printf("Syntax:\n   ecs [-t <target platform>] <input>[, <input>]* -o <output>\n");
+         printf($"Syntax:\n   ecs [-t <target platform>] <input>[, <input>]* -o <output>\n");
       else
       {
          int c;
index 8484aa2..967d6ff 100644 (file)
    ],
    "ResourcesPath" : "",
    "Resources" : [
-
+      {
+         "Folder" : "locale",
+         "Files" : [
+            {
+               "Folder" : "zh_CN",
+               "Files" : [
+                  {
+                     "Folder" : "LC_MESSAGES",
+                     "Files" : [
+                        "ecs.mo"
+                     ]
+                  }
+               ]
+            }
+         ]
+      }
    ]
 }
\ No newline at end of file
diff --git a/compiler/ecs/locale/zh_CN/LC_MESSAGES/ecs.mo b/compiler/ecs/locale/zh_CN/LC_MESSAGES/ecs.mo
new file mode 100644 (file)
index 0000000..e32aa06
Binary files /dev/null and b/compiler/ecs/locale/zh_CN/LC_MESSAGES/ecs.mo differ
diff --git a/compiler/ecs/locale/zh_CN/LC_MESSAGES/ecs.po b/compiler/ecs/locale/zh_CN/LC_MESSAGES/ecs.po
new file mode 100644 (file)
index 0000000..a6aa21b
--- /dev/null
@@ -0,0 +1,663 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: ecere\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2012-02-19 20:14+0900\n"
+"Last-Translator: Jerome St-Louis <jerome@ecere.com>\n"
+"Language-Team: ec <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Basepath: ..\\..\\..\\\n"
+
+#: .\ecs.ec:1704
+msgid ""
+"Syntax:\n"
+"   ecs [-t <target platform>] <input>[, <input>]* -o <output>\n"
+msgstr ""
+"Syntax:\n"
+"   ecs [-t <target platform>] <input>[, <input>]* -o <output>\n"
+
+#~ msgid "                  [Get]\n"
+#~ msgstr "                  [Get]\n"
+
+#~ msgid "                  [Set]\n"
+#~ msgstr "                  [Set]\n"
+
+#~ msgid "                  [Virtual]\n"
+#~ msgstr "                  [Virtual]\n"
+
+#~ msgid "               [Expression]\n"
+#~ msgstr "               [Expression]\n"
+
+#~ msgid "               [Identifier]\n"
+#~ msgstr "               [Identifier]\n"
+
+#~ msgid "               [None]\n"
+#~ msgstr "               [None]\n"
+
+#~ msgid "               [Type]\n"
+#~ msgstr "               [Type]\n"
+
+#~ msgid "            [Get]\n"
+#~ msgstr "            [Get]\n"
+
+#~ msgid "            [Imported Methods]\n"
+#~ msgstr "            [Imported Methods]\n"
+
+#~ msgid "            [Imported Properties]\n"
+#~ msgstr "            [Imported Properties]\n"
+
+#~ msgid "            [Instantiated]\n"
+#~ msgstr "            [Instantiated]\n"
+
+#~ msgid "            [Pos]\n"
+#~ msgstr "            [Pos]\n"
+
+#~ msgid "            [Private]\n"
+#~ msgstr "            [Private]\n"
+
+#~ msgid "            [Public]\n"
+#~ msgstr "            [Public]\n"
+
+#~ msgid "            [Remote]\n"
+#~ msgstr "            [Remote]\n"
+
+#~ msgid "            [Set]\n"
+#~ msgstr "            [Set]\n"
+
+#~ msgid "            [Size]\n"
+#~ msgstr "            [Size]\n"
+
+#~ msgid "            [Type]\n"
+#~ msgstr "            [Type]\n"
+
+#~ msgid "            [Virtual]\n"
+#~ msgstr "            [Virtual]\n"
+
+#~ msgid "            [Watchable]\n"
+#~ msgstr "            [Watchable]\n"
+
+#~ msgid "         [Conversion]\n"
+#~ msgstr "         [Conversion]\n"
+
+#~ msgid "         [None]\n"
+#~ msgstr "         [None]\n"
+
+#~ msgid "         [Template Parameters]\n"
+#~ msgstr "         [Template Parameters]\n"
+
+#~ msgid "      [Base]\n"
+#~ msgstr "      [Base]\n"
+
+#~ msgid "      [Bit]\n"
+#~ msgstr "      [Bit]\n"
+
+#~ msgid "      [Defined Class Properties]\n"
+#~ msgstr "      [Defined Class Properties]\n"
+
+#~ msgid "      [Defined Data Members]\n"
+#~ msgstr "      [Defined Data Members]\n"
+
+#~ msgid "      [Defined Methods]\n"
+#~ msgstr "      [Defined Methods]\n"
+
+#~ msgid "      [Defined Properties]\n"
+#~ msgstr "      [Defined Properties]\n"
+
+#~ msgid "      [Enum Values]\n"
+#~ msgstr "      [Enum Values]\n"
+
+#~ msgid "      [Enum]\n"
+#~ msgstr "      [Enum]\n"
+
+#~ msgid "      [Fixed]\n"
+#~ msgstr "      [Fixed]\n"
+
+#~ msgid "      [Imported Classes]\n"
+#~ msgstr "      [Imported Classes]\n"
+
+#~ msgid "      [Imported Functions]\n"
+#~ msgstr "      [Imported Functions]\n"
+
+#~ msgid "      [No Expansion]\n"
+#~ msgstr "      [No Expansion]\n"
+
+#~ msgid "      [NoHead]\n"
+#~ msgstr "      [NoHead]\n"
+
+#~ msgid "      [Private Base]\n"
+#~ msgstr "      [Private Base]\n"
+
+#~ msgid "      [Private]\n"
+#~ msgstr "      [Private]\n"
+
+#~ msgid "      [Public]\n"
+#~ msgstr "      [Public]\n"
+
+#~ msgid "      [Remote]\n"
+#~ msgstr "      [Remote]\n"
+
+#~ msgid "      [Static]\n"
+#~ msgstr "      [Static]\n"
+
+#~ msgid "      [Struct]\n"
+#~ msgstr "      [Struct]\n"
+
+#~ msgid "      [Type]\n"
+#~ msgstr "      [Type]\n"
+
+#~ msgid "      [Union]\n"
+#~ msgstr "      [Union]\n"
+
+#~ msgid "      [Unit]\n"
+#~ msgstr "      [Unit]\n"
+
+#~ msgid "      [Value]\n"
+#~ msgstr "      [Value]\n"
+
+#~ msgid "      [Watchable]\n"
+#~ msgstr "      [Watchable]\n"
+
+#~ msgid "   [Private]\n"
+#~ msgstr "   [Private]\n"
+
+#~ msgid "   [Remote]\n"
+#~ msgstr "   [Remote]\n"
+
+#~ msgid "   [Static]\n"
+#~ msgstr "   [Static]\n"
+
+#~ msgid "   [This]\n"
+#~ msgstr "   [This]\n"
+
+#~ msgid " or "
+#~ msgstr " or "
+
+#~ msgid "%s expected to be derived from method class\n"
+#~ msgstr "%s expected to be derived from method class\n"
+
+#~ msgid "%s undefined; assuming extern returning int\n"
+#~ msgstr "%s不确定,假设外部返回整数\n"
+
+#~ msgid "(StaticString)"
+#~ msgstr "(StaticString)"
+
+#~ msgid "(null identifier)"
+#~ msgstr "(空标识符)"
+
+#~ msgid ", expecting "
+#~ msgstr ", expecting "
+
+#~ msgid ":%d:%d: error: "
+#~ msgstr ":%d:%d: error: "
+
+#~ msgid ":%d:%d: warning: "
+#~ msgstr ":%d:%d: warning: "
+
+#~ msgid "Array size not constant int (%s)\n"
+#~ msgstr "数组大小不是常整型(%s)\n"
+
+#~ msgid "Assigning list initializer to non list\n"
+#~ msgstr "列表分配给非列表\n"
+
+#~ msgid "Couldn't determine type of array elements\n"
+#~ msgstr "无法确定数组元素的类型\n"
+
+#~ msgid "Couldn't find member %s to override\n"
+#~ msgstr "不能找到成员%s去继承\n"
+
+#~ msgid "Couldn't open %s\n"
+#~ msgstr "Couldn't open %s\n"
+
+#~ msgid "Deleting"
+#~ msgstr "Deleting"
+
+#~ msgid "Entering state %d\n"
+#~ msgstr "Entering state %d\n"
+
+#~ msgid "Error: discarding"
+#~ msgstr "Error: discarding"
+
+#~ msgid "Error: discarding lookahead"
+#~ msgstr "Error: discarding lookahead"
+
+#~ msgid "Error: popping"
+#~ msgstr "Error: popping"
+
+#~ msgid "Importing took %.3f seconds for %s\n"
+#~ msgstr "Importing took %.3f seconds for %s\n"
+
+#~ msgid "Includes nested too deeply"
+#~ msgstr "Includes nested too deeply"
+
+#~ msgid "Incompatible virtual function %s\n"
+#~ msgstr "不兼容虚函数%s\n"
+
+#~ msgid "Member with same name already exists %s in class %s\n"
+#~ msgstr "Member with same name already exists %s in class %s\n"
+
+#~ msgid "Member with same name already exists %s in member %s\n"
+#~ msgstr "Member with same name already exists %s in member %s\n"
+
+#~ msgid "Multiple field index requires a name\n"
+#~ msgstr "Multiple field index requires a name\n"
+
+#~ msgid "Next token is"
+#~ msgstr "Next token is"
+
+#~ msgid ""
+#~ "No database table defined in this module or database_open already used.\n"
+#~ msgstr ""
+#~ "No database table defined in this module or database_open already used.\n"
+
+#~ msgid "Non-static %s making use of a static class\n"
+#~ msgstr "非静态%s 使用静态类\n"
+
+#~ msgid "Not a type: %s\n"
+#~ msgstr "Not a type: %s\n"
+
+#~ msgid "Now at end of input.\n"
+#~ msgstr "Now at end of input.\n"
+
+#~ msgid "Property %s not found in class %s\n"
+#~ msgstr "属性%s在类%s中未能找到\n"
+
+#~ msgid "Public %s making use of a private class\n"
+#~ msgstr "公共的%s使用私有类\n"
+
+#~ msgid "Reading a token: "
+#~ msgstr "Reading a token: "
+
+#~ msgid "Recursion in defined expression %s\n"
+#~ msgstr "Recursion in defined expression %s\n"
+
+#~ msgid "Redefinition of %s (defining as %s, already defined as %s)\n"
+#~ msgstr "重复定义%s (定义%s, 已经存在定义%s)\n"
+
+#~ msgid "Redefinition of %s ignored\n"
+#~ msgstr "Redefinition of %s ignored\n"
+
+#~ msgid "Redefinition of method %s in class %s\n"
+#~ msgstr "Redefinition of method %s in class %s\n"
+
+#~ msgid "Reducing stack by rule %d (line %u), "
+#~ msgstr "Reducing stack by rule %d (line %u), "
+
+#~ msgid "Shifting"
+#~ msgstr "Shifting"
+
+#~ msgid "Stack now"
+#~ msgstr "Stack now"
+
+#~ msgid "Stack size increased to %lu\n"
+#~ msgstr "Stack size increased to %lu\n"
+
+#~ msgid "Starting parse\n"
+#~ msgstr "Starting parse\n"
+
+#~ msgid ""
+#~ "Syntax:\n"
+#~ "   ecc [-t <target platform>] [-cpp <c preprocessor>] [-o <output>] [-"
+#~ "symbols <outputdir>] [-I<includedir>]* [-isystem <sysincludedir>]* [-"
+#~ "D<definition>]* -c <input>\n"
+#~ msgstr ""
+#~ "Syntax:\n"
+#~ "   ecc [-t <target platform>] [-cpp <c preprocessor>] [-o <output>] [-"
+#~ "symbols <outputdir>] [-I<includedir>]* [-isystem <sysincludedir>]* [-"
+#~ "D<definition>]* -c <input>\n"
+
+#~ msgid ""
+#~ "Syntax:\n"
+#~ "   ecp [-t <target platform>] [-cpp <c preprocessor>] [-o <output>] [-"
+#~ "symbols <outputdir>] [-I<includedir>]* [-isystem <sysincludedir>]* [-"
+#~ "D<definition>]* -c <input>\n"
+#~ msgstr ""
+#~ "Syntax:\n"
+#~ "   ecp [-t <target platform>] [-cpp <c preprocessor>] [-o <output>] [-"
+#~ "symbols <outputdir>] [-I<includedir>]* [-isystem <sysincludedir>]* [-"
+#~ "D<definition>]* -c <input>\n"
+
+#~ msgid "[Base]"
+#~ msgstr "[Base]"
+
+#~ msgid "[Bit]"
+#~ msgstr "[Bit]"
+
+#~ msgid "[Conversion]"
+#~ msgstr "[Conversion]"
+
+#~ msgid "[Data member]"
+#~ msgstr "[Data member]"
+
+#~ msgid "[Defined Class Properties]"
+#~ msgstr "[Defined Class Properties]"
+
+#~ msgid "[Defined Classes]"
+#~ msgstr "[Defined Classes]"
+
+#~ msgid "[Defined Classes]\n"
+#~ msgstr "[Defined Classes]\n"
+
+#~ msgid "[Defined Data Members]"
+#~ msgstr "[Defined Data Members]"
+
+#~ msgid "[Defined Data]"
+#~ msgstr "[Defined Data]"
+
+#~ msgid "[Defined Data]\n"
+#~ msgstr "[Defined Data]\n"
+
+#~ msgid "[Defined Expressions]"
+#~ msgstr "[Defined Expressions]"
+
+#~ msgid "[Defined Expressions]\n"
+#~ msgstr "[Defined Expressions]\n"
+
+#~ msgid "[Defined Functions]"
+#~ msgstr "[Defined Functions]"
+
+#~ msgid "[Defined Functions]\n"
+#~ msgstr "[Defined Functions]\n"
+
+#~ msgid "[Defined Methods]"
+#~ msgstr "[Defined Methods]"
+
+#~ msgid "[Defined Properties]"
+#~ msgstr "[Defined Properties]"
+
+#~ msgid "[Enum Values]"
+#~ msgstr "[Enum Values]"
+
+#~ msgid "[Enum]"
+#~ msgstr "[Enum]"
+
+#~ msgid "[Expression]"
+#~ msgstr "[Expression]"
+
+#~ msgid "[Fixed]"
+#~ msgstr "[Fixed]"
+
+#~ msgid "[Get]"
+#~ msgstr "[Get]"
+
+#~ msgid "[Global Instance]"
+#~ msgstr "[Global Instance]"
+
+#~ msgid "[Global Instance]\n"
+#~ msgstr "[Global Instance]\n"
+
+#~ msgid "[Identifier]"
+#~ msgstr "[Identifier]"
+
+#~ msgid "[Imported Classes]"
+#~ msgstr "[Imported Classes]"
+
+#~ msgid "[Imported Functions]"
+#~ msgstr "[Imported Functions]"
+
+#~ msgid "[Imported Methods]"
+#~ msgstr "[Imported Methods]"
+
+#~ msgid "[Imported Modules]"
+#~ msgstr "[Imported Modules]"
+
+#~ msgid "[Imported Modules]\n"
+#~ msgstr "[Imported Modules]\n"
+
+#~ msgid "[Imported Properties]"
+#~ msgstr "[Imported Properties]"
+
+#~ msgid "[Instantiated]"
+#~ msgstr "[Instantiated]"
+
+#~ msgid "[Method]"
+#~ msgstr "[Method]"
+
+#~ msgid "[No Expansion]"
+#~ msgstr "[No Expansion]"
+
+#~ msgid "[NoHead]"
+#~ msgstr "[NoHead]"
+
+#~ msgid "[None]"
+#~ msgstr "[None]"
+
+#~ msgid "[Pos]"
+#~ msgstr "[Pos]"
+
+#~ msgid "[Private Base]"
+#~ msgstr "[Private Base]"
+
+#~ msgid "[Private]"
+#~ msgstr "[Private]"
+
+#~ msgid "[Property]"
+#~ msgstr "[Property]"
+
+#~ msgid "[Public]"
+#~ msgstr "[Public]"
+
+#~ msgid "[Remote]"
+#~ msgstr "[Remote]"
+
+#~ msgid "[Set]"
+#~ msgstr "[Set]"
+
+#~ msgid "[Size]"
+#~ msgstr "[Size]"
+
+#~ msgid "[Static]"
+#~ msgstr "[Static]"
+
+#~ msgid "[Struct]"
+#~ msgstr "[Struct]"
+
+#~ msgid "[Template Parameters]"
+#~ msgstr "[Template Parameters]"
+
+#~ msgid "[This]"
+#~ msgstr "[This]"
+
+#~ msgid "[Type]"
+#~ msgstr "[Type]"
+
+#~ msgid "[Union]"
+#~ msgstr "[Union]"
+
+#~ msgid "[Unit]"
+#~ msgstr "[Unit]"
+
+#~ msgid "[Value]"
+#~ msgstr "[Value]"
+
+#~ msgid "[Virtual]"
+#~ msgstr "[Virtual]"
+
+#~ msgid "[Watchable]"
+#~ msgstr "[Watchable]"
+
+#~ msgid "bad buffer in yy_scan_bytes()"
+#~ msgstr "bad buffer in yy_scan_bytes()"
+
+#~ msgid "callable object undefined; extern assuming returning int\n"
+#~ msgstr "可调用对象未定义,外部假设返回整数\n"
+
+#~ msgid "called object %s is not a function\n"
+#~ msgstr "调用对象%s不是一个函数\n"
+
+#~ msgid "cannot add two pointers\n"
+#~ msgstr "cannot add two pointers\n"
+
+#~ msgid "cannot dereference type\n"
+#~ msgstr "cannot dereference type\n"
+
+#~ msgid "class data member"
+#~ msgstr "类数据成员"
+
+#~ msgid "class member instance"
+#~ msgstr "类成员实例"
+
+#~ msgid "couldn't determine type of %s; expected %s\n"
+#~ msgstr "无法确定%s的类型; 期望%s\n"
+
+#~ msgid "couldn't determine type of %s\n"
+#~ msgstr "无法确定%s的类型\n"
+
+#~ msgid "couldn't find member %s in class %s\n"
+#~ msgstr "不能找到成员%s在类%s中\n"
+
+#~ msgid "couldn't find virtual method %s in class %s\n"
+#~ msgstr "不能找到虚方法%s在类%s中\n"
+
+#~ msgid "different levels of indirection\n"
+#~ msgstr "different levels of indirection\n"
+
+#~ msgid "error: unhandled type populating instance\n"
+#~ msgstr "error: unhandled type populating instance\n"
+
+#~ msgid "fatal error - scanner input buffer overflow"
+#~ msgstr "fatal error - scanner input buffer overflow"
+
+#~ msgid "fatal flex scanner internal error--end of buffer missed"
+#~ msgstr "fatal flex scanner internal error--end of buffer missed"
+
+#~ msgid "fatal flex scanner internal error--no action found"
+#~ msgstr "fatal flex scanner internal error--no action found"
+
+#~ msgid "flex scanner push-back overflow"
+#~ msgstr "flex scanner push-back overflow"
+
+#~ msgid "incompatible expression %s (%s); expected %s\n"
+#~ msgstr "incompatible expression %s (%s); expected %s\n"
+
+#~ msgid "incompatible expressions %s (%s) and %s (%s)\n"
+#~ msgstr "不兼容的表达示%s (%s) 和%s (%s)\n"
+
+#~ msgid "incompatible instance method %s\n"
+#~ msgstr "不兼容的实例方法%s\n"
+
+#~ msgid "incompatible parameter %s (expected %s)\n"
+#~ msgstr "不兼容参数%s (期望%s)\n"
+
+#~ msgid "incompatible return type for function\n"
+#~ msgstr "函数返回类型不兼容\n"
+
+#~ msgid ""
+#~ "input buffer overflow, can't enlarge buffer because scanner uses REJECT"
+#~ msgstr ""
+#~ "input buffer overflow, can't enlarge buffer because scanner uses REJECT"
+
+#~ msgid "input in flex scanner failed"
+#~ msgstr "input in flex scanner failed"
+
+#~ msgid "invalid class specifier %s for object of class %s\n"
+#~ msgstr "无效的类说明%s关于对象类%s\n"
+
+#~ msgid "member operator on non-structure type expression %s\n"
+#~ msgstr "成员操作符对非结构类型表达式%s\n"
+
+#~ msgid "method class must be derived from %s\n"
+#~ msgstr "method class must be derived from %s\n"
+
+#~ msgid "method class should not take an object\n"
+#~ msgstr "method class should not take an object\n"
+
+#~ msgid "not enough arguments for function %s (%d given, expected %d)\n"
+#~ msgstr "参数不够,函数%s (规定%d个, 期望%d个)\n"
+
+#~ msgid "not enough arguments for method %s::%s (%d given, expected %d)\n"
+#~ msgstr "参数不够,方法%s::%s(规定%d个, 期望%d个)\n"
+
+#~ msgid "not enough parameters\n"
+#~ msgstr "没有足够参数\n"
+
+#~ msgid "nterm %s ("
+#~ msgstr "nterm %s ("
+
+#~ msgid "operating on %s and %s with an untyped result, assuming %s\n"
+#~ msgstr "operating on %s and %s with an untyped result, assuming %s\n"
+
+#~ msgid "operator %s illegal on pointer\n"
+#~ msgstr "operator %s illegal on pointer\n"
+
+#~ msgid "out of dynamic memory in yy_create_buffer()"
+#~ msgstr "out of dynamic memory in yy_create_buffer()"
+
+#~ msgid "out of dynamic memory in yy_scan_buffer()"
+#~ msgstr "out of dynamic memory in yy_scan_buffer()"
+
+#~ msgid "out of dynamic memory in yy_scan_bytes()"
+#~ msgstr "out of dynamic memory in yy_scan_bytes()"
+
+#~ msgid "out of memory expanding start-condition stack"
+#~ msgstr "out of memory expanding start-condition stack"
+
+#~ msgid "overriding class expected to be derived from method class\n"
+#~ msgstr "overriding class expected to be derived from method class\n"
+
+#~ msgid "parser stack overflow"
+#~ msgstr "parser stack overflow"
+
+#~ msgid "redefinition of class %s\n"
+#~ msgstr "redefinition of class %s\n"
+
+#~ msgid "redefinition of constructor for class %s\n"
+#~ msgstr "重复定义构造类%s\n"
+
+#~ msgid "redefinition of destructor for class %s\n"
+#~ msgstr "重复定义析构类%s\n"
+
+#~ msgid "start-condition stack underflow"
+#~ msgstr "start-condition stack underflow"
+
+#~ msgid "syntax error"
+#~ msgstr "syntax error"
+
+#~ msgid "syntax error, unexpected "
+#~ msgstr "syntax error, unexpected "
+
+#~ msgid "syntax error: cannot back up"
+#~ msgstr "syntax error: cannot back up"
+
+#~ msgid "syntax error; also virtual memory exhausted"
+#~ msgstr "syntax error; also virtual memory exhausted"
+
+#~ msgid "syntax error\n"
+#~ msgstr "syntax error\n"
+
+#~ msgid "token %s ("
+#~ msgstr "token %s ("
+
+#~ msgid "too many arguments for function %s (%d given, expected %d)\n"
+#~ msgstr "参数太多,函数%s (规定%d个, 期望%d个)\n"
+
+#~ msgid "too many arguments for method %s::%s (%d given, expected %d)\n"
+#~ msgstr "参数太多,方法%s::%s(规定%d个, 期望%d个)\n"
+
+#~ msgid "too many initializers for instantiation of class %s\n"
+#~ msgstr "too many initializers for instantiation of class %s\n"
+
+#~ msgid "too many parameters\n"
+#~ msgstr "太多参数\n"
+
+#~ msgid "undefined class %s\n"
+#~ msgstr "未定义类%s\n"
+
+#~ msgid "unresolved identifier %s::%s\n"
+#~ msgstr "不确定的标识符%s::%s\n"
+
+#~ msgid "unresolved identifier %s; expected %s\n"
+#~ msgstr "不确定的标识符%s; 期望%s\n"
+
+#~ msgid "unresolved identifier %s\n"
+#~ msgstr "不确定的标识符%s\n"
+
+#~ msgid "unresolved symbol used as an instance method %s\n"
+#~ msgstr "unresolved symbol used as an instance method %s\n"
index fd30b52..3c15aee 100644 (file)
@@ -132,7 +132,8 @@ SOURCES = \
        src/shortcuts.ec \
        src/type.ec
 
-RESOURCES =
+RESOURCES = \
+       locale/zh_CN/LC_MESSAGES/ec.mo
 
 # TOOLCHAIN
 
@@ -191,6 +192,7 @@ $(OBJECTS): | objdir
 $(TARGET): $(SOURCES) $(RESOURCES) $(SYMBOLS) $(OBJECTS) | objdir
        $(CC) $(OFLAGS) $(OBJECTS) $(LIBS) -o $(TARGET) $(INSTALLNAME)
        $(STRIP) $(STRIPOPT) $(TARGET)
+       $(EAR) awq $(TARGET) locale/zh_CN/LC_MESSAGES/ec.mo "locale/zh_CN/LC_MESSAGES"
        $(call cpq,$(TARGET),../../$(SODESTDIR))
 ifdef LINUX
        ln -sf $(LP)$(MODULE)$(SO).0.44 ../../$(SODESTDIR)$(LP)$(MODULE)$(SO).0
index 92bfb58..49f60a0 100644 (file)
    ],
    "ResourcesPath" : "",
    "Resources" : [
-
+      {
+         "Folder" : "locale",
+         "Files" : [
+            {
+               "Folder" : "zh_CN",
+               "Files" : [
+                  {
+                     "Folder" : "LC_MESSAGES",
+                     "Files" : [
+                        "ec.mo"
+                     ]
+                  }
+               ]
+            }
+         ]
+      }
    ]
 }
\ No newline at end of file
diff --git a/compiler/libec/locale/zh_CN/LC_MESSAGES/ec.mo b/compiler/libec/locale/zh_CN/LC_MESSAGES/ec.mo
new file mode 100644 (file)
index 0000000..ddd8b9b
Binary files /dev/null and b/compiler/libec/locale/zh_CN/LC_MESSAGES/ec.mo differ
diff --git a/compiler/libec/locale/zh_CN/LC_MESSAGES/ec.po b/compiler/libec/locale/zh_CN/LC_MESSAGES/ec.po
new file mode 100644 (file)
index 0000000..40c3746
--- /dev/null
@@ -0,0 +1,378 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: ecere\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2012-02-19 20:10+0900\n"
+"Last-Translator: Jerome St-Louis <jerome@ecere.com>\n"
+"Language-Team: ec <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Basepath: ..\\..\\..\\\n"
+
+#: .\src\pass15.ec:3240
+#: .\src\pass15.ec:3266
+#, fuzzy
+msgid "%s expected to be derived from method class\n"
+msgstr "%s expected to be derived from method class\n"
+
+#: .\src\pass15.ec:8804
+msgid "%s undefined; assuming extern returning int\n"
+msgstr "%s不确定,假设外部返回整数\n"
+
+#: .\src\ecdefs.ec:1223
+#, fuzzy
+msgid ":%d:%d: error: "
+msgstr ":%d:%d: error: "
+
+#: .\src\pass15.ec:804
+msgid "Array size not constant int (%s)\n"
+msgstr "数组大小不是常整型(%s)\n"
+
+#: .\src\pass15.ec:10320
+msgid "Assigning list initializer to non list\n"
+msgstr "列表分配给非列表\n"
+
+#: .\src\pass15.ec:9986
+#: .\src\pass15.ec:11031
+msgid "Couldn't determine type of array elements\n"
+msgstr "无法确定数组元素的类型\n"
+
+#: .\src\pass0.ec:570
+msgid "Couldn't find member %s to override\n"
+msgstr "不能找到成员%s去继承\n"
+
+#: .\src\loadSymbols.ec:716
+#, fuzzy
+msgid "Couldn't open %s\n"
+msgstr "Couldn't open %s\n"
+
+#: .\src\ast.ec:1436
+#, fuzzy
+msgid "Expecting class specifier\n"
+msgstr "Expecting class specifier\n"
+
+#: .\src\pass15.ec:11189
+#, fuzzy
+msgid "Expression is not a container\n"
+msgstr "Expression is not a container\n"
+
+#: .\src\lexer.ec:478
+#, fuzzy
+msgid "Includes nested too deeply"
+msgstr "Includes nested too deeply"
+
+#: .\src\pass1.ec:141
+msgid "Incompatible virtual function %s\n"
+msgstr "不兼容虚函数%s\n"
+
+#: .\src\pass15.ec:11463
+#: .\src\pass15.ec:11538
+msgid "Invalid object specified and not inside a class\n"
+msgstr "无效的类说明%s关于对象类%s\n"
+
+#: .\src\pass15.ec:11371
+#, fuzzy
+msgid "Invalid watched object\n"
+msgstr "Invalid watched object\n"
+
+#: .\src\firstPass.ec:79
+#: .\src\firstPass.ec:104
+#: .\src\firstPass.ec:165
+#: .\src\firstPass.ec:207
+#, fuzzy
+msgid "Member with same name already exists %s in class %s\n"
+msgstr "Member with same name already exists %s in class %s\n"
+
+#: .\src\firstPass.ec:97
+#: .\src\firstPass.ec:158
+#: .\src\firstPass.ec:200
+#, fuzzy
+msgid "Member with same name already exists %s in member %s\n"
+msgstr "Member with same name already exists %s in member %s\n"
+
+#: .\src\dbpass.ec:1073
+#, fuzzy
+msgid "Multiple field index requires a name\n"
+msgstr "Multiple field index requires a name\n"
+
+#: .\src\dbpass.ec:299
+#, fuzzy
+msgid "No database table defined in this module or database_open already used.\n"
+msgstr "No database table defined in this module or database_open already used.\n"
+
+#: .\src\pass15.ec:11384
+#, fuzzy
+msgid "No observer specified and not inside a _class\n"
+msgstr "No observer specified and not inside a _class\n"
+
+#: .\src\pass15.ec:11541
+#, fuzzy
+msgid "No observer specified and not inside a class\n"
+msgstr "No observer specified and not inside a class\n"
+
+#: .\src\pass16.ec:1905
+#: .\src\pass16.ec:1976
+#, fuzzy
+msgid "No set defined for property %s\n"
+msgstr "No set defined for property %s\n"
+
+#: .\src\pass0.ec:153
+msgid "Non-static %s making use of a static class\n"
+msgstr "非静态%s 使用静态类\n"
+
+#: .\src\pass1.ec:1035
+#: .\src\pass15.ec:11366
+#: .\src\pass15.ec:11438
+#: .\src\pass15.ec:11527
+msgid "Property %s not found in class %s\n"
+msgstr "属性%s在类%s中未能找到\n"
+
+#: .\src\pass0.ec:160
+msgid "Public %s making use of a private class\n"
+msgstr "公共的%s使用私有类\n"
+
+#: .\src\pass15.ec:7256
+#, fuzzy
+msgid "Recursion in defined expression %s\n"
+msgstr "Recursion in defined expression %s\n"
+
+#: .\src\loadSymbols.ec:1000
+msgid "Redefinition of %s (defining as %s, already defined as %s)\n"
+msgstr "重复定义%s (定义%s, 已经存在定义%s)\n"
+
+#: .\src\ast.ec:681
+#, fuzzy
+msgid "Redefinition of %s ignored\n"
+msgstr "Redefinition of %s ignored\n"
+
+#: .\src\firstPass.ec:440
+#, fuzzy
+msgid "Redefinition of method %s in class %s\n"
+msgstr "Redefinition of method %s in class %s\n"
+
+#: .\src\pass15.ec:4382
+#: .\src\pass15.ec:4483
+#, fuzzy
+msgid "Unhandled type populating instance\n"
+msgstr "Unhandled type populating instance\n"
+
+#: .\src\pass15.ec:6992
+#, fuzzy
+msgid "Unspecified type\n"
+msgstr "Unspecified type\n"
+
+#: .\src\pass15.ec:8819
+msgid "callable object undefined; extern assuming returning int\n"
+msgstr "可调用对象未定义,外部假设返回整数\n"
+
+#: .\src\pass15.ec:8629
+msgid "called object %s is not a function\n"
+msgstr "调用对象%s不是一个函数\n"
+
+#: .\src\pass15.ec:7718
+#: .\src\pass15.ec:7724
+#: .\src\pass15.ec:7888
+#, fuzzy
+msgid "cannot add two pointers\n"
+msgstr "cannot add two pointers\n"
+
+#: .\src\pass15.ec:1567
+#, fuzzy
+msgid "cannot dereference type\n"
+msgstr "cannot dereference type\n"
+
+#: .\src\pass2.ec:2214
+#, fuzzy
+msgid "cannot obtain address of property\n"
+msgstr "cannot add two pointers\n"
+
+#: .\src\pass15.ec:10061
+msgid "couldn't determine type of %s; expected %s\n"
+msgstr "无法确定%s的类型; 期望%s\n"
+
+#: .\src\pass15.ec:8265
+#: .\src\pass15.ec:8277
+#: .\src\pass15.ec:10073
+#: .\src\pass15.ec:10147
+msgid "couldn't determine type of %s\n"
+msgstr "无法确定%s的类型\n"
+
+#: .\src\pass15.ec:1939
+#: .\src\pass15.ec:9284
+msgid "couldn't find member %s in class %s\n"
+msgstr "不能找到成员%s在类%s中\n"
+
+#: .\src\pass15.ec:1935
+#: .\src\pass15.ec:2044
+msgid "couldn't find virtual method %s in class %s\n"
+msgstr "不能找到虚方法%s在类%s中\n"
+
+#: .\src\pass15.ec:7880
+#, fuzzy
+msgid "different levels of indirection\n"
+msgstr "different levels of indirection\n"
+
+#: .\src\pass15.ec:7736
+#: .\src\pass15.ec:10102
+#, fuzzy
+msgid "incompatible expression %s (%s); expected %s\n"
+msgstr "incompatible expression %s (%s); expected %s\n"
+
+#: .\src\pass15.ec:7997
+#: .\src\pass15.ec:8157
+msgid "incompatible expressions %s (%s) and %s (%s)\n"
+msgstr "不兼容的表达示%s (%s) 和%s (%s)\n"
+
+#: .\src\pass15.ec:1891
+msgid "incompatible instance method %s\n"
+msgstr "不兼容的实例方法%s\n"
+
+#: .\src\pass15.ec:3339
+msgid "incompatible parameter %s (expected %s)\n"
+msgstr "不兼容参数%s (期望%s)\n"
+
+#: .\src\pass15.ec:3279
+msgid "incompatible return type for function\n"
+msgstr "函数返回类型不兼容\n"
+
+#: .\src\pass15.ec:9098
+msgid "invalid class specifier %s for object of class %s\n"
+msgstr "无效的类说明%s关于对象类%s\n"
+
+#: .\src\pass15.ec:9568
+msgid "member operator on non-structure type expression %s\n"
+msgstr "成员操作符对非结构类型表达式%s\n"
+
+#: .\src\pass15.ec:3214
+#: .\src\pass15.ec:3229
+#: .\src\pass15.ec:3255
+#, fuzzy
+msgid "method class must be derived from %s\n"
+msgstr "method class must be derived from %s\n"
+
+#: .\src\pass15.ec:3216
+#, fuzzy
+msgid "method class should not take an object\n"
+msgstr "method class should not take an object\n"
+
+#: .\src\pass2.ec:2216
+#: .\src\pass2.ec:2218
+#, fuzzy
+msgid "no get defined for property %s of class %s\n"
+msgstr "Redefinition of method %s in class %s\n"
+
+#: .\src\pass2.ec:877
+msgid "no set defined for property %s of class %s\n"
+msgstr "无效的类说明%s关于对象类%s\n"
+
+#: .\src\pass15.ec:8778
+msgid "not enough arguments for function %s (%d given, expected %d)\n"
+msgstr "参数不够,函数%s (规定%d个, 期望%d个)\n"
+
+#: .\src\pass15.ec:8774
+msgid "not enough arguments for method %s::%s (%d given, expected %d)\n"
+msgstr "参数不够,方法%s::%s(规定%d个, 期望%d个)\n"
+
+#: .\src\pass15.ec:3290
+msgid "not enough parameters\n"
+msgstr "没有足够参数\n"
+
+#: .\src\pass15.ec:7823
+#, fuzzy
+msgid "operating on %s and %s with an untyped result, assuming %s\n"
+msgstr "operating on %s and %s with an untyped result, assuming %s\n"
+
+#: .\src\pass15.ec:7648
+#, fuzzy
+msgid "operator %s illegal on pointer\n"
+msgstr "operator %s illegal on pointer\n"
+
+#: .\src\pass15.ec:3242
+#, fuzzy
+msgid "overriding class expected to be derived from method class\n"
+msgstr "overriding class expected to be derived from method class\n"
+
+#: .\src\shortcuts.ec:218
+#: .\src\shortcuts.ec:224
+#, fuzzy
+msgid "parsing type %s\n"
+msgstr "Not a type: %s\n"
+
+#: .\src\firstPass.ec:306
+#, fuzzy
+msgid "redefinition of class %s\n"
+msgstr "redefinition of class %s\n"
+
+#: .\src\pass0.ec:720
+msgid "redefinition of constructor for class %s\n"
+msgstr "重复定义构造类%s\n"
+
+#: .\src\pass0.ec:697
+msgid "redefinition of destructor for class %s\n"
+msgstr "重复定义析构类%s\n"
+
+#: .\src\ecdefs.ec:1282
+#: .\src\grammar.ec:3082
+#: .\src\grammar.ec:3083
+#: .\src\grammar.ec:3084
+#: .\src\grammar.ec:3085
+#: .\src\grammar.ec:3086
+#: .\src\grammar.ec:3087
+#: .\src\grammar.ec:3088
+#, fuzzy
+msgid "syntax error\n"
+msgstr "syntax error\n"
+
+#: .\src\pass15.ec:8697
+msgid "too many arguments for function %s (%d given, expected %d)\n"
+msgstr "参数太多,函数%s (规定%d个, 期望%d个)\n"
+
+#: .\src\pass15.ec:8693
+msgid "too many arguments for method %s::%s (%d given, expected %d)\n"
+msgstr "参数太多,方法%s::%s(规定%d个, 期望%d个)\n"
+
+#: .\src\pass15.ec:1945
+#, fuzzy
+msgid "too many initializers for instantiation of class %s\n"
+msgstr "too many initializers for instantiation of class %s\n"
+
+#: .\src\pass15.ec:3353
+msgid "too many parameters\n"
+msgstr "太多参数\n"
+
+#: .\src\pass15.ec:9551
+msgid "undefined class %s\n"
+msgstr "未定义类%s\n"
+
+#: .\src\pass15.ec:10138
+msgid "unresolved identifier %s::%s\n"
+msgstr "不确定的标识符%s::%s\n"
+
+#: .\src\pass15.ec:10059
+msgid "unresolved identifier %s; expected %s\n"
+msgstr "不确定的标识符%s; 期望%s\n"
+
+#: .\src\pass15.ec:10071
+#: .\src\pass15.ec:10140
+msgid "unresolved identifier %s\n"
+msgstr "不确定的标识符%s\n"
+
+#: .\src\pass15.ec:1885
+#, fuzzy
+msgid "unresolved symbol used as an instance method %s\n"
+msgstr "unresolved symbol used as an instance method %s\n"
+
+#: .\src\pass15.ec:7709
+#: .\src\pass15.ec:7866
+#: .\src\pass15.ec:7873
+#, fuzzy
+msgid "void *: unknown size\n"
+msgstr "void *: unknown size\n"
+
index c0bc622..10846f8 100644 (file)
@@ -802,7 +802,7 @@ struct Statement * issetStmt;
 struct Symbol * symbol;
 unsigned int conversion;
 unsigned int isWatchable;
-char *  category;
+struct Expression * category;
 };
 
 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyWatch;
index 6c1fd32..1061375 100644 (file)
@@ -2659,6 +2659,10 @@ extern struct Statement * MkExpressionStmt(struct __ecereNameSpace__ecere__sys__
 
 extern void Compiler_Error(char *  format, ...);
 
+extern __declspec(dllexport) char *  __ecereNameSpace__ecere__GetTranslatedString(struct __ecereNameSpace__ecere__com__Instance * module, char *  string, char *  stringAndContext);
+
+extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
+
 extern struct AsmField * MkAsmField(char *  command, struct Expression * expression);
 
 extern struct Statement * MkAsmStmt(struct Specifier * spec, char *  statements, struct __ecereNameSpace__ecere__sys__OldList * inputFields, struct __ecereNameSpace__ecere__sys__OldList * outputFields, struct __ecereNameSpace__ecere__sys__OldList * clobberedFields);
@@ -10302,49 +10306,49 @@ break;
 case 1037:
 {
 yyval.stmt = yyvsp[(1) - (1)].stmt;
-Compiler_Error("syntax error\n");
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "syntax error\n", (((void *)0))));
 ;
 }
 break;
 case 1038:
 {
 yyval.stmt = yyvsp[(1) - (1)].stmt;
-Compiler_Error("syntax error\n");
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "syntax error\n", (((void *)0))));
 ;
 }
 break;
 case 1039:
 {
 yyval.stmt = yyvsp[(1) - (1)].stmt;
-Compiler_Error("syntax error\n");
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "syntax error\n", (((void *)0))));
 ;
 }
 break;
 case 1040:
 {
 yyval.stmt = yyvsp[(1) - (1)].stmt;
-Compiler_Error("syntax error\n");
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "syntax error\n", (((void *)0))));
 ;
 }
 break;
 case 1041:
 {
 yyval.stmt = yyvsp[(1) - (1)].stmt;
-Compiler_Error("syntax error\n");
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "syntax error\n", (((void *)0))));
 ;
 }
 break;
 case 1042:
 {
 yyval.stmt = yyvsp[(1) - (2)].stmt;
-Compiler_Error("syntax error\n");
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "syntax error\n", (((void *)0))));
 ;
 }
 break;
 case 1043:
 {
 yyval.stmt = MkExpressionStmt(yyvsp[(1) - (1)].list);
-Compiler_Error("syntax error\n");
+Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "syntax error\n", (((void *)0))));
 yyval.stmt->loc = (yylsp[(1) - (1)]);
 ;
 }
index 471040a..7a2da15 100644 (file)
@@ -828,7 +828,7 @@ struct Statement * issetStmt;
 struct Symbol * symbol;
 unsigned int conversion;
 unsigned int isWatchable;
-char *  category;
+struct Expression * category;
 };
 
 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_PropertyWatch;
index 7cea95e..f68fcd9 100644 (file)
@@ -678,7 +678,7 @@ Declaration MkDeclarationDefine(Identifier id, Expression exp)
    if(!eSystem_FindDefine(privateModule, id.string))
       eSystem_RegisterDefine(id.string, expString, privateModule, buildingECERECOMModule ? baseSystemAccess : publicAccess);
    else
-      Compiler_Warning("Redefinition of %s ignored\n", id.string);
+      Compiler_Warning($"Redefinition of %s ignored\n", id.string);
    return decl;
 }
 
@@ -1433,7 +1433,7 @@ Instantiation MkInstantiationNamed(OldList specs, Expression exp, OldList member
          
       if(!spec)
       {
-         Compiler_Error("Expecting class specifier\n");
+         Compiler_Error($"Expecting class specifier\n");
          inst._class = MkSpecifierName /*MkClassName*/("");
          //exit(1);
          //return null;
index c8b538a..3e93113 100644 (file)
@@ -296,7 +296,7 @@ static void ProcessExpression(Expression exp)
          else
          {
             FreeExpContents(exp);
-            Compiler_Error("No database table defined in this module or database_open already used.\n");
+            Compiler_Error($"No database table defined in this module or database_open already used.\n");
             exp.type = dummyExp;
          }
          break;
@@ -1070,7 +1070,7 @@ static void ProcessDBTable(DBTableDef table)
                         needTable = true;
                      }
                      else
-                        Compiler_Error("Multiple field index requires a name\n");
+                        Compiler_Error($"Multiple field index requires a name\n");
                   }
                   else
                   {
index d64b76f..063e88c 100644 (file)
@@ -1220,7 +1220,7 @@ void Compiler_Error(char * format, ...)
 #endif
 
          //printf("(%d, %d) : error: ", yylloc.start.line, yylloc.start.charPos);
-         printf(":%d:%d: error: ", yylloc.start.line, yylloc.start.charPos);
+         printf($":%d:%d: error: ", yylloc.start.line, yylloc.start.charPos);
          //printf(":%d: error: ", yylloc.start.line);
          va_start(args, format);
          vsprintf(string,format,args);
@@ -1260,7 +1260,7 @@ void Compiler_Warning(char * format, ...)
       printf(string);
 
       //printf("(%d, %d) : warning: ", yylloc.start.line, yylloc.start.charPos);
-      printf(":%d:%d: warning: ", yylloc.start.line, yylloc.start.charPos);
+      printf($":%d:%d: warning: ", yylloc.start.line, yylloc.start.charPos);
       //printf(":%d: warning: ", yylloc.start.line);
       va_start(args, format);
       vsprintf(string,format,args);
@@ -1279,7 +1279,7 @@ int yyerror(char * s)
        //fflush(stdout);
        //printf("\n%*s\n%*s\n", column, "^", column, s);
       parseError = true;
-      Compiler_Error("syntax error\n");
+      Compiler_Error($"syntax error\n");
    }
    return 0;
 }
index 3a922b0..b930d6c 100644 (file)
@@ -502,7 +502,7 @@ type:
       goto yysetstate;
    #else
       Location tmpLoc = yylloc; $$ = $2; yylloc = @1; 
-      Compiler_Error("Not a type: %s\n", $1.string);      
+      Compiler_Error($"Not a type: %s\n", $1.string);      
       yylloc = tmpLoc; $2.badID = $1; // FreeIdentifier($1);
    #endif
    }*/
index 552bbbf..0643b7b 100644 (file)
@@ -76,7 +76,7 @@ static void AddDefinitions(Class regClass, DataMember member, OldList definition
                               dataMember.dataType = dataType;
                            else
                            {
-                              Compiler_Error("Member with same name already exists %s in class %s\n", declId.string, regClass.name);
+                              Compiler_Error($"Member with same name already exists %s in class %s\n", declId.string, regClass.name);
                               FreeType(dataType);
                            }
                         }
@@ -94,14 +94,14 @@ static void AddDefinitions(Class regClass, DataMember member, OldList definition
                                  dataMember = eMember_AddDataMember(member, declId.string, 
                                     typeString, 0, 0 /*ComputeTypeSize(dataType)*/, def.memberAccess);
                                  if(!dataMember)
-                                    Compiler_Error("Member with same name already exists %s in member %s\n", declId.string, member.name);
+                                    Compiler_Error($"Member with same name already exists %s in member %s\n", declId.string, member.name);
                               }
                               else
                               {
                                  dataMember = eClass_AddDataMember(regClass, declId.string, 
                                     typeString, 0, 0 /*ComputeTypeSize(dataType)*/, def.memberAccess);
                                  if(!dataMember)
-                                    Compiler_Error("Member with same name already exists %s in class %s\n", declId.string, regClass.name);
+                                    Compiler_Error($"Member with same name already exists %s in class %s\n", declId.string, regClass.name);
                               }
 
                               //delete dataTypeString;
@@ -155,14 +155,14 @@ static void AddDefinitions(Class regClass, DataMember member, OldList definition
                                  dataMember = eMember_AddDataMember(member, id.string, 
                                     typeString, 0, 0 /*ComputeTypeSize(dataType)*/, def.memberAccess);
                                  if(!dataMember)
-                                    Compiler_Error("Member with same name already exists %s in member %s\n", id.string, member.name);
+                                    Compiler_Error($"Member with same name already exists %s in member %s\n", id.string, member.name);
                               }
                               else
                               {
                                  dataMember = eClass_AddDataMember(regClass, id.string, 
                                     typeString, 0, 0 /*ComputeTypeSize(dataType)*/, def.memberAccess);
                                  if(!dataMember)
-                                    Compiler_Error("Member with same name already exists %s in class %s\n", id.string, regClass.name);
+                                    Compiler_Error($"Member with same name already exists %s in class %s\n", id.string, regClass.name);
 
                               }
 
@@ -197,14 +197,14 @@ static void AddDefinitions(Class regClass, DataMember member, OldList definition
                      {
                         dataMember = eMember_AddDataMember(member, string, inst._class.name, 0, 0 /*ComputeTypeSize(dataType)*/, def.memberAccess);
                         if(!dataMember)
-                           Compiler_Error("Member with same name already exists %s in member %s\n", string, member.name);
+                           Compiler_Error($"Member with same name already exists %s in member %s\n", string, member.name);
 
                      }
                      else
                      {
                         dataMember = eClass_AddDataMember(regClass, string, inst._class.name, 0, 0 /*ComputeTypeSize(dataType)*/, def.memberAccess);
                         if(!dataMember)
-                           Compiler_Error("Member with same name already exists %s in class %s\n", string, regClass.name);
+                           Compiler_Error($"Member with same name already exists %s in class %s\n", string, regClass.name);
                      }
                      if(dataMember)
                         dataMember.dataType = dataType;
@@ -303,7 +303,7 @@ static void ProcessClass(ClassType classType, OldList definitions, Symbol symbol
       if(inCompiler)
       {
          yylloc = loc;
-         Compiler_Error("redefinition of class %s\n", symbol.string /*_class._class.name*/);
+         Compiler_Error($"redefinition of class %s\n", symbol.string /*_class._class.name*/);
          return;
       }
    }
@@ -437,7 +437,7 @@ static void ProcessClass(ClassType classType, OldList definitions, Symbol symbol
                   method = eClass_AddMethod(regClass, id.string, typeString, 
                      inCompiler ? func.declarator.symbol : null, def.memberAccess);
                   if(!method)
-                     Compiler_Error("Redefinition of method %s in class %s\n", id.string, regClass.name);
+                     Compiler_Error($"Redefinition of method %s in class %s\n", id.string, regClass.name);
                   delete typeString;
                }
                if(method && (method.type != virtualMethod || method._class == regClass))
index 30f2abd..567b93e 100644 (file)
@@ -12154,7 +12154,7 @@ yyreduce:
       goto yysetstate;
    #else
       Location tmpLoc = yylloc; (yyval.specifier) = (yyvsp[(2) - (2)].id); yylloc = (yylsp[(1) - (2)]); 
-      Compiler_Error("Not a type: %s\n", (yyvsp[(1) - (2)].id).string);      
+      Compiler_Error($"Not a type: %s\n", (yyvsp[(1) - (2)].id).string);      
       yylloc = tmpLoc; (yyvsp[(2) - (2)].id).badID = (yyvsp[(1) - (2)].id);
    #endif
    ;}
@@ -19159,49 +19159,49 @@ yyreduce:
 
 /* Line 1464 of yacc.c  */
 #line 3082 "grammar.y"
-    { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); Compiler_Error("syntax error\n"); ;}
+    { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); Compiler_Error($"syntax error\n"); ;}
     break;
 
   case 1038:
 
 /* Line 1464 of yacc.c  */
 #line 3083 "grammar.y"
-    { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); Compiler_Error("syntax error\n"); ;}
+    { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); Compiler_Error($"syntax error\n"); ;}
     break;
 
   case 1039:
 
 /* Line 1464 of yacc.c  */
 #line 3084 "grammar.y"
-    { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); Compiler_Error("syntax error\n"); ;}
+    { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); Compiler_Error($"syntax error\n"); ;}
     break;
 
   case 1040:
 
 /* Line 1464 of yacc.c  */
 #line 3085 "grammar.y"
-    { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); Compiler_Error("syntax error\n"); ;}
+    { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); Compiler_Error($"syntax error\n"); ;}
     break;
 
   case 1041:
 
 /* Line 1464 of yacc.c  */
 #line 3086 "grammar.y"
-    { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); Compiler_Error("syntax error\n"); ;}
+    { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); Compiler_Error($"syntax error\n"); ;}
     break;
 
   case 1042:
 
 /* Line 1464 of yacc.c  */
 #line 3087 "grammar.y"
-    { (yyval.stmt) = (yyvsp[(1) - (2)].stmt); Compiler_Error("syntax error\n"); ;}
+    { (yyval.stmt) = (yyvsp[(1) - (2)].stmt); Compiler_Error($"syntax error\n"); ;}
     break;
 
   case 1043:
 
 /* Line 1464 of yacc.c  */
 #line 3088 "grammar.y"
-    { (yyval.stmt) = MkExpressionStmt((yyvsp[(1) - (1)].list)); Compiler_Error("syntax error\n"); (yyval.stmt).loc = (yylsp[(1) - (1)]); ;}
+    { (yyval.stmt) = MkExpressionStmt((yyvsp[(1) - (1)].list)); Compiler_Error($"syntax error\n"); (yyval.stmt).loc = (yylsp[(1) - (1)]); ;}
     break;
 
   case 1044:
index 55fe92c..495e367 100644 (file)
@@ -379,7 +379,7 @@ type:
       goto yysetstate;
    #else
       Location tmpLoc = yylloc; $$ = $2; yylloc = @1; 
-      Compiler_Error("Not a type: %s\n", $1.string);      
+      Compiler_Error($"Not a type: %s\n", $1.string);      
       yylloc = tmpLoc; $2.badID = $1;
    #endif
    }
@@ -442,7 +442,7 @@ type:
       goto yysetstate;
    #else
       Location tmpLoc = yylloc; $$ = $2; yylloc = @1; 
-      Compiler_Error("Not a type: %s\n", $1.string);      
+      Compiler_Error($"Not a type: %s\n", $1.string);      
       yylloc = tmpLoc; $2.badID = $1;
    #endif
    }*/
@@ -3079,13 +3079,13 @@ statement:
        ;
 
 statement_error:
-       labeled_statement_error          { $$ = $1; Compiler_Error("syntax error\n"); } 
-   | iteration_statement_error      { $$ = $1; Compiler_Error("syntax error\n"); } 
-   | compound_statement_error       { $$ = $1; Compiler_Error("syntax error\n"); } 
-       | selection_statement_error      { $$ = $1; Compiler_Error("syntax error\n"); } 
-   | jump_statement_error           { $$ = $1; Compiler_Error("syntax error\n"); } 
-       | jump_statement error           { $$ = $1; Compiler_Error("syntax error\n"); } 
-   | expression_error { $$ = MkExpressionStmt($1); Compiler_Error("syntax error\n"); $$.loc = @1; }
+       labeled_statement_error          { $$ = $1; Compiler_Error($"syntax error\n"); } 
+   | iteration_statement_error      { $$ = $1; Compiler_Error($"syntax error\n"); } 
+   | compound_statement_error       { $$ = $1; Compiler_Error($"syntax error\n"); } 
+       | selection_statement_error      { $$ = $1; Compiler_Error($"syntax error\n"); } 
+   | jump_statement_error           { $$ = $1; Compiler_Error($"syntax error\n"); } 
+       | jump_statement error           { $$ = $1; Compiler_Error($"syntax error\n"); } 
+   | expression_error { $$ = MkExpressionStmt($1); Compiler_Error($"syntax error\n"); $$.loc = @1; }
    ;
 
 asm_field:
index 7727932..a420f51 100644 (file)
@@ -3427,7 +3427,7 @@ int preprocessor()
 
       if ( include_stack_ptr >= MAX_INCLUDE_DEPTH )
       {
-         fprintf( stderr, "Includes nested too deeply" );
+         fprintf( stderr, $"Includes nested too deeply" );
          exit( 1 );
       }
 
index 53497ff..043db65 100644 (file)
@@ -475,7 +475,7 @@ int preprocessor()
 
       if ( include_stack_ptr >= MAX_INCLUDE_DEPTH )
       {
-         fprintf( stderr, "Includes nested too deeply" );
+         fprintf( stderr, $"Includes nested too deeply" );
          exit( 1 );
       }
 
index 316e6e7..12e604e 100644 (file)
@@ -79,7 +79,7 @@ static void ReadDataMembers(Class regClass, DataMember member, File f)
             if(member)
             {
                if(!eMember_AddDataMember(member, name, line[0] ? line : 0, 0, 0 /*size *//*type->size*/, memberAccess))
-                  ;//Compiler_Error("Member with same name already exists %s in member %s\n", name, member->name);
+                  ;//Compiler_Error($"Member with same name already exists %s in member %s\n", name, member->name);
             }
             else if(regClass && regClass.type == bitClass)
             {
@@ -91,7 +91,7 @@ static void ReadDataMembers(Class regClass, DataMember member, File f)
             else if(regClass)
             {
                if(!eClass_AddDataMember(regClass, name, line[0] ? line : 0, 0, 0 /*size *//*type->size*/, memberAccess))
-                  ;//Compiler_Error("Member with same name already exists %s in class %s\n", name, regClass.fullName);
+                  ;//Compiler_Error($"Member with same name already exists %s in class %s\n", name, regClass.fullName);
             }
          }
          else if(!strcmp(line, "[Struct]") || !strcmp(line, "[Union]"))
@@ -101,12 +101,12 @@ static void ReadDataMembers(Class regClass, DataMember member, File f)
             if(member)
             {
                if(!eMember_AddMember(member, dataMember))
-                  ;//Compiler_Error("Member with same name already exists %s in member %s\n", name, member->name);
+                  ;//Compiler_Error($"Member with same name already exists %s in member %s\n", name, member->name);
             }
             else if(regClass)
             {
                if(!eClass_AddMember(regClass, dataMember))
-                  ;//Compiler_Error("Member with same name already exists %s in class %s\n", name, regClass.name);
+                  ;//Compiler_Error($"Member with same name already exists %s in class %s\n", name, regClass.name);
             }
          }
       }
@@ -213,7 +213,7 @@ public bool LoadSymbols(char * fileName, ImportType importType, bool loadDllOnly
                            //if(baseSymbol && !baseSymbol->registered)
                            /*if(classType != unitClass && classType != bitClass && classType != enumClass && baseName && !eSystem_FindClass(privateModule, baseName))
                            {
-                              Compiler_Error("Base class %s undefined\n", baseName);
+                              Compiler_Error($"Base class %s undefined\n", baseName);
                               DeclClass(0, name);
                               regClass = null;
                               continue;
@@ -713,7 +713,7 @@ public bool LoadSymbols(char * fileName, ImportType importType, bool loadDllOnly
    }
    else if(importType != comCheckImport)
    {
-      Compiler_Error("Couldn't open %s\n", fileName);
+      Compiler_Error($"Couldn't open %s\n", fileName);
    }
    return globalInstance;
 }
@@ -997,7 +997,7 @@ public void CheckDataRedefinitions()
       PrintType(type1, type1String, false, true);
       PrintType(type2, type2String, false, true);
       if(strcmp(type1String, type2String))
-         Compiler_Warning("Redefinition of %s (defining as %s, already defined as %s)\n", redefinition.name, type1String, type2String);
+         Compiler_Warning($"Redefinition of %s (defining as %s, already defined as %s)\n", redefinition.name, type1String, type2String);
       FreeType(type1);
       FreeType(type2);
    }
index eefe3bc..1f2b7d4 100644 (file)
@@ -150,14 +150,14 @@ static void CheckPublicClass(Symbol classSym, AccessMode access, char * word)
       // TODO: Will need to add checks for template parameter classes
       if(classSym.isStatic && access != staticAccess)
       {
-         Compiler_Error("Non-static %s making use of a static class\n", word);
+         Compiler_Error($"Non-static %s making use of a static class\n", word);
       }
       else if(access == publicAccess)
       {
          if(!NameSpaceContained(regClass.nameSpace, regClass.module.application.systemNameSpace))
          {
             if(NameSpaceContained(regClass.nameSpace, regClass.module.privateNameSpace) || !ModuleAccess(privateModule, regClass.module))
-               Compiler_Error("Public %s making use of a private class\n", word);
+               Compiler_Error($"Public %s making use of a private class\n", word);
          }
       }
    }
@@ -394,7 +394,7 @@ static void CheckMembersDefinitions(Class regClass, DataMember member, OldList d
                         else
                            dataMember = eClass_FindDataMember(regClass, declId.string, privateModule, null, null);
                         if(dataMember)
-                           CheckPublicDataType(dataMember.dataType,  (def.memberAccess == privateAccess) ? privateAccess : access, "class data member");
+                           CheckPublicDataType(dataMember.dataType,  (def.memberAccess == privateAccess) ? privateAccess : access, $"class data member");
                      }
                   }
                }
@@ -420,7 +420,7 @@ static void CheckMembersDefinitions(Class regClass, DataMember member, OldList d
                            else
                               dataMember = eClass_FindDataMember(regClass, spec.id.string, privateModule, null, null);
                            if(dataMember)
-                              CheckPublicDataType(dataMember.dataType,  (def.memberAccess == privateAccess) ? privateAccess : access, "class data member");
+                              CheckPublicDataType(dataMember.dataType,  (def.memberAccess == privateAccess) ? privateAccess : access, $"class data member");
                         }
                      }
                   }
@@ -428,7 +428,7 @@ static void CheckMembersDefinitions(Class regClass, DataMember member, OldList d
             }
             else if(decl.type == instDeclaration)
             {
-               CheckPublicClass(decl.inst._class.symbol /*FindClass(decl.inst._class.name)*/, (def.memberAccess == privateAccess) ? privateAccess : access, "class member instance");
+               CheckPublicClass(decl.inst._class.symbol /*FindClass(decl.inst._class.name)*/, (def.memberAccess == privateAccess) ? privateAccess : access, $"class member instance");
             }
          }
       }
@@ -482,13 +482,13 @@ static void ProcessClass(ClassType classType, OldList definitions, Symbol symbol
       {
          if(!regClass.base.symbol)
             regClass.base.symbol = FindClass(regClass.base.fullName);
-         CheckPublicClass(regClass.base.symbol, publicAccess, "class");
+         CheckPublicClass(regClass.base.symbol, publicAccess, $"class");
       }
       else if(!symbol.isStatic && regClass.base)
       {
          if(!regClass.base.symbol)
             regClass.base.symbol = FindClass(regClass.base.fullName);
-         CheckPublicClass(regClass.base.symbol, privateAccess, "class");
+         CheckPublicClass(regClass.base.symbol, privateAccess, $"class");
       }
    }
 
@@ -497,13 +497,13 @@ static void ProcessClass(ClassType classType, OldList definitions, Symbol symbol
    {
       if(regClass.inheritanceAccess == publicAccess && 
          (regClass.base.nameSpace == &regClass.base.module.privateNameSpace || !ModuleAccess(privateModule, regClass.base.module)))
-         Compiler_Error("Public class publicly inheriting off private base class\n");
+         Compiler_Error($"Public class publicly inheriting off private base class\n");
    }
    else if(!symbol.isStatic)
    {
       Symbol baseSym = FindClass(regClass.base.fullName);
       if(baseSym && baseSym.isStatic)
-         Compiler_Error("Non-static class inheriting off static base class\n");
+         Compiler_Error($"Non-static class inheriting off static base class\n");
    }
    */
 
@@ -567,7 +567,7 @@ static void ProcessClass(ClassType classType, OldList definitions, Symbol symbol
             else
             {
                yylloc = def.loc;
-               Compiler_Error("Couldn't find member %s to override\n", def.id.string);
+               Compiler_Error($"Couldn't find member %s to override\n", def.id.string);
             }
          }
       }
@@ -694,7 +694,7 @@ static void ProcessClass(ClassType classType, OldList definitions, Symbol symbol
                if(destructor)
                {
                   yylloc = loc;
-                  Compiler_Error("redefinition of destructor for class %s\n", symbol.string);
+                  Compiler_Error($"redefinition of destructor for class %s\n", symbol.string);
                }
                else
                {
@@ -717,7 +717,7 @@ static void ProcessClass(ClassType classType, OldList definitions, Symbol symbol
                if(constructor)
                {
                   yylloc = loc;
-                  Compiler_Error("redefinition of constructor for class %s\n", symbol.string);
+                  Compiler_Error($"redefinition of constructor for class %s\n", symbol.string);
                }
                else
                {
index eaa44fe..e7d334b 100644 (file)
@@ -138,7 +138,7 @@ External ProcessClassFunction(Class owningClass, ClassFunction func, OldList def
 #ifdef _DEBUG
                // MatchTypes(type, methodDataType, null, owningClass, owningClass, true, true, true, false);
 #endif
-               Compiler_Error("Incompatible virtual function %s\n", method.name);
+               Compiler_Error($"Incompatible virtual function %s\n", method.name);
             }
             else
             {
@@ -1032,7 +1032,7 @@ static void ProcessClass(ClassType classType, OldList definitions, Symbol symbol
                         ListAdd(stmt.expressions, MkExpCall(MkExpIdentifier(MkIdentifier("eProperty_SelfWatch")), args));
                      }
                      else
-                        Compiler_Error("Property %s not found in class %s\n", propID.string, regClass.fullName);
+                        Compiler_Error($"Property %s not found in class %s\n", propID.string, regClass.fullName);
                   }
                   FreePropertyWatch(def.propertyWatch);
                   def.propertyWatch = (PropertyWatch)stmt; // Store this here to use it after CreateRegisterModuleBody is done
index 36ff48d..0c37f0b 100644 (file)
@@ -801,7 +801,7 @@ public int ComputeTypeSize(Type type)
                   yylloc = type.arraySizeExp.loc;
                   if(inCompiler)
                      PrintExpression(type.arraySizeExp, expression);
-                  Compiler_Error("Array size not constant int (%s)\n", expression);
+                  Compiler_Error($"Array size not constant int (%s)\n", expression);
                   yylloc = oldLoc;
                }
                GetInt(type.arraySizeExp, &type.arraySize);
@@ -1564,7 +1564,7 @@ public Type Dereference(Type source)
          source.refCount++;
       }
       else
-         Compiler_Error("cannot dereference type\n");
+         Compiler_Error($"cannot dereference type\n");
    }
    return type;
 }
@@ -1882,13 +1882,13 @@ void ProcessMemberInitData(MemberInit member, Class _class, Class * curClass, Da
                expString[0] = '\0';
                PrintExpression(member.initializer.exp, expString);
                ChangeCh(expString, '\n', ' ');
-               Compiler_Error("unresolved symbol used as an instance method %s\n", expString);
+               Compiler_Error($"unresolved symbol used as an instance method %s\n", expString);
             }
          }
          //else if(!MatchTypes(member.exp.expType, type, null, _class, null, true, true, false, false))
          else if(!MatchTypes(member.initializer.exp.expType, type, null, null, _class, true, true, false, false))
          {
-            Compiler_Error("incompatible instance method %s\n", ident.string);
+            Compiler_Error($"incompatible instance method %s\n", ident.string);
          }
       }
       else if(member.initializer)
@@ -1932,17 +1932,17 @@ void ProcessMemberInitData(MemberInit member, Class _class, Class * curClass, Da
          {
             if(method)
             {
-               Compiler_Error("couldn't find virtual method %s in class %s\n", ident.string, _class.fullName);
+               Compiler_Error($"couldn't find virtual method %s in class %s\n", ident.string, _class.fullName);
             }
             else if(_class)
             {
-               Compiler_Error("couldn't find member %s in class %s\n", ident.string, _class.fullName);
+               Compiler_Error($"couldn't find member %s in class %s\n", ident.string, _class.fullName);
                if(inCompiler)
                   eClass_AddDataMember(_class, ident.string, "int", 0, 0, publicAccess);
             }
          }
          else if(_class)
-            Compiler_Error("too many initializers for instantiation of class %s\n", _class.fullName);
+            Compiler_Error($"too many initializers for instantiation of class %s\n", _class.fullName);
       }
    }
 }
@@ -2041,7 +2041,7 @@ void ProcessInstantiationType(Instantiation inst)
                      }
                      else if(classSym)
                      {
-                        Compiler_Error("couldn't find virtual method %s in class %s\n",
+                        Compiler_Error($"couldn't find virtual method %s in class %s\n",
                            unmangled, classSym.string);
                      }
                   }
@@ -3211,9 +3211,9 @@ public bool MatchTypes(Type source, Type dest, OldList conversions, Class owning
                !eClass_IsDerived(source.thisClass ? source.thisClass.registered : owningClassSource,paramDest._class.registered))))
             {
                if(paramDest && paramDest.kind == classType)
-                  Compiler_Error("method class must be derived from %s\n", paramDest._class.string);
+                  Compiler_Error($"method class must be derived from %s\n", paramDest._class.string);
                else
-                  Compiler_Error("method class should not take an object\n");
+                  Compiler_Error($"method class should not take an object\n");
                return false;
             }
             paramDest = paramDest.next;
@@ -3226,7 +3226,7 @@ public bool MatchTypes(Type source, Type dest, OldList conversions, Class owning
                {
                   if(!paramSource || paramSource.kind != classType || !eClass_IsDerived(paramSource._class.registered,dest.thisClass.registered))
                   {
-                     Compiler_Error("method class must be derived from %s\n", dest.thisClass.string);
+                     Compiler_Error($"method class must be derived from %s\n", dest.thisClass.string);
                      return false;
                   }
                }
@@ -3237,9 +3237,9 @@ public bool MatchTypes(Type source, Type dest, OldList conversions, Class owning
                   if(!paramSource || paramSource.kind != classType || (owningClassDest && !eClass_IsDerived(paramSource._class.registered, owningClassDest)))
                   {
                      if(owningClassDest)
-                       Compiler_Error("%s expected to be derived from method class\n", owningClassDest.fullName);
+                       Compiler_Error($"%s expected to be derived from method class\n", owningClassDest.fullName);
                      else
-                        Compiler_Error("overriding class expected to be derived from method class\n");      
+                        Compiler_Error($"overriding class expected to be derived from method class\n");      
                      return false;
                   }
                }
@@ -3252,7 +3252,7 @@ public bool MatchTypes(Type source, Type dest, OldList conversions, Class owning
                   // Source thisClass must be derived from destination thisClass
                   if(!eClass_IsDerived(source.thisClass ? source.thisClass.registered : owningClassSource, dest.thisClass.registered))
                   {
-                     Compiler_Error("method class must be derived from %s\n", dest.thisClass.string);
+                     Compiler_Error($"method class must be derived from %s\n", dest.thisClass.string);
                      return false;
                   }
                }
@@ -3263,9 +3263,9 @@ public bool MatchTypes(Type source, Type dest, OldList conversions, Class owning
                   if(source.thisClass && source.thisClass.registered && owningClassDest && !eClass_IsDerived(source.thisClass.registered, owningClassDest))
                   {
                      //if(owningClass)
-                        Compiler_Error("%s expected to be derived from method class\n", /*owningClass.name*/ source.thisClass.registered.fullName);
+                        Compiler_Error($"%s expected to be derived from method class\n", /*owningClass.name*/ source.thisClass.registered.fullName);
                      //else
-                        //Compiler_Error("overriding class expected to be derived from method class\n");      
+                        //Compiler_Error($"overriding class expected to be derived from method class\n");      
                      return false;
                   }
                }
@@ -3276,7 +3276,7 @@ public bool MatchTypes(Type source, Type dest, OldList conversions, Class owning
          // Source return type must be derived from destination return type
          if(!MatchTypes(source.returnType, dest.returnType, null, null, null, true, true, false, false))
          {
-            Compiler_Warning("incompatible return type for function\n");
+            Compiler_Warning($"incompatible return type for function\n");
             return false;
          }
 
@@ -3286,8 +3286,8 @@ public bool MatchTypes(Type source, Type dest, OldList conversions, Class owning
          {
             if(!paramSource)
             {
-               //Compiler_Warning("not enough parameters\n");
-               Compiler_Error("not enough parameters\n");
+               //Compiler_Warning($"not enough parameters\n");
+               Compiler_Error($"not enough parameters\n");
                return false;
             }
             {
@@ -3336,7 +3336,7 @@ public bool MatchTypes(Type source, Type dest, OldList conversions, Class owning
                   char type[1024];
                   type[0] = 0;
                   PrintType(paramDest, type, false, true);
-                  Compiler_Warning("incompatible parameter %s (expected %s)\n", paramSource.name, type);
+                  Compiler_Warning($"incompatible parameter %s (expected %s)\n", paramSource.name, type);
                   
                   if(paramDestType != paramDest)
                      FreeType(paramDestType);
@@ -3350,7 +3350,7 @@ public bool MatchTypes(Type source, Type dest, OldList conversions, Class owning
          }
          if(paramSource)
          {
-            Compiler_Error("too many parameters\n");
+            Compiler_Error($"too many parameters\n");
             return false;
          }
          return true;
@@ -4379,7 +4379,7 @@ static void PopulateInstanceProcessMember(Instantiation inst, OldList * memberLi
                   break;
                }
                default:
-                  printf("error: unhandled type populating instance\n");
+                  Compiler_Error($"Unhandled type populating instance\n");
             }
          }
          ListAdd(memberList, member);
@@ -4480,7 +4480,7 @@ void PopulateInstance(Instantiation inst)
                      break;
                   }
                   default:
-                     printf("error: unhandled type populating instance\n");
+                     Compiler_Error($"Unhandled type populating instance\n");
                }
             }
             ListAdd(memberList, member);
@@ -6989,7 +6989,7 @@ void ApplyAnyObjectLogic(Expression e)
    {
       if(destType.kind == ellipsisType)
       {
-         Compiler_Error("Unspecified type\n");
+         Compiler_Error($"Unspecified type\n");
       }
       else if(!(destType.truth && e.expType.kind == classType && e.expType._class && e.expType._class.registered && e.expType._class.registered.type == structClass))
       {
@@ -7253,7 +7253,7 @@ void ProcessExpressionType(Expression exp)
                   {
                      if(inCompiler)
                      {
-                        Compiler_Error("Recursion in defined expression %s\n", id.string);
+                        Compiler_Error($"Recursion in defined expression %s\n", id.string);
                      }
                   }
                }
@@ -7645,7 +7645,7 @@ void ProcessExpressionType(Expression exp)
                {
                   if(exp.op.op == MUL_ASSIGN || exp.op.op == DIV_ASSIGN ||exp.op.op == MOD_ASSIGN ||exp.op.op == LEFT_ASSIGN ||exp.op.op == RIGHT_ASSIGN ||
                      exp.op.op == AND_ASSIGN || exp.op.op == OR_ASSIGN)
-                     Compiler_Error("operator %s illegal on pointer\n", exp.op.op);
+                     Compiler_Error($"operator %s illegal on pointer\n", exp.op.op);
                   else if(exp.op.op == '=')
                   {
                      if(exp.op.exp2.destType) FreeType(exp.op.exp2.destType);
@@ -7706,7 +7706,7 @@ void ProcessExpressionType(Expression exp)
                if(exp.op.exp2.expType.kind == int64Type || exp.op.exp2.expType.kind == intType || exp.op.exp2.expType.kind == shortType || exp.op.exp2.expType.kind == charType)
                {
                   if(exp.op.op != '=' && type1.type.kind == voidType) 
-                     Compiler_Error("void *: unknown size\n");
+                     Compiler_Error($"void *: unknown size\n");
                }
                else if(exp.op.exp2.expType.kind == pointerType || exp.op.exp2.expType.kind == arrayType || exp.op.exp2.expType.kind == functionType || exp.op.exp2.expType.kind == methodType|| 
                            (type1.type.kind == voidType && exp.op.exp2.expType.kind == classType && exp.op.exp2.expType._class.registered &&
@@ -7715,13 +7715,13 @@ void ProcessExpressionType(Expression exp)
                               exp.op.exp2.expType._class.registered.type == noHeadClass)))
                {
                   if(exp.op.op == ADD_ASSIGN)
-                     Compiler_Error("cannot add two pointers\n");                   
+                     Compiler_Error($"cannot add two pointers\n");                   
                }
                else if((exp.op.exp2.expType.kind == classType && type1.kind == pointerType && type1.type.kind == classType && 
                   type1.type._class == exp.op.exp2.expType._class && exp.op.exp2.expType._class.registered && exp.op.exp2.expType._class.registered.type == structClass))
                {
                   if(exp.op.op == ADD_ASSIGN)
-                     Compiler_Error("cannot add two pointers\n");                   
+                     Compiler_Error($"cannot add two pointers\n");                   
                }
                else if(inCompiler)
                {
@@ -7733,7 +7733,7 @@ void ProcessExpressionType(Expression exp)
                   PrintType(exp.op.exp2.expType, type1String, false, true);
                   PrintType(type1, type2String, false, true);
                   ChangeCh(expString, '\n', ' ');
-                  Compiler_Warning("incompatible expression %s (%s); expected %s\n", expString, type1String, type2String);
+                  Compiler_Warning($"incompatible expression %s (%s); expected %s\n", expString, type1String, type2String);
                }
             }
 
@@ -7820,7 +7820,7 @@ void ProcessExpressionType(Expression exp)
                      type1._class.registered && type1._class.registered.type == unitClass && 
                      type2._class.registered && type2._class.registered.type == unitClass && 
                      type1._class.registered != type2._class.registered)
-                     Compiler_Warning("operating on %s and %s with an untyped result, assuming %s\n",
+                     Compiler_Warning($"operating on %s and %s with an untyped result, assuming %s\n",
                         type1._class.string, type2._class.string, type1._class.string);
 
                   if(type1.kind == pointerType && type1.type.kind == templateType && type2.kind != pointerType)
@@ -7863,21 +7863,21 @@ void ProcessExpressionType(Expression exp)
                   if(!boolResult && ((type1.kind == pointerType || type1.kind == arrayType || (type1.kind == classType && !strcmp(type1._class.string, "String"))) && (type2.kind == int64Type || type2.kind == intType || type2.kind == shortType || type2.kind == charType)))
                   {
                      if(type1.kind != classType && type1.type.kind == voidType) 
-                        Compiler_Error("void *: unknown size\n");
+                        Compiler_Error($"void *: unknown size\n");
                      exp.expType = type1;
                      if(type1) type1.refCount++;
                   }
                   else if(!boolResult && ((type2.kind == pointerType || type2.kind == arrayType || (type2.kind == classType && !strcmp(type2._class.string, "String"))) && (type1.kind == int64Type || type1.kind == intType || type1.kind == shortType || type1.kind == charType)))
                   {
                      if(type2.kind != classType && type2.type.kind == voidType) 
-                        Compiler_Error("void *: unknown size\n");
+                        Compiler_Error($"void *: unknown size\n");
                      exp.expType = type2;
                      if(type2) type2.refCount++;
                   }
                   else if((type1.kind == pointerType && type2.kind != pointerType && type2.kind != arrayType && type2.kind != functionType && type2.kind != methodType && type2.kind != classType && type2.kind != subClassType) ||
                           (type2.kind == pointerType && type1.kind != pointerType && type1.kind != arrayType && type1.kind != functionType && type1.kind != methodType && type1.kind != classType && type1.kind != subClassType))
                   {
-                     Compiler_Warning("different levels of indirection\n");
+                     Compiler_Warning($"different levels of indirection\n");
                   }
                   else 
                   {
@@ -7885,7 +7885,7 @@ void ProcessExpressionType(Expression exp)
                      if(type1.kind == pointerType && type2.kind == pointerType)
                      {
                         if(exp.op.op == '+')
-                           Compiler_Error("cannot add two pointers\n");
+                           Compiler_Error($"cannot add two pointers\n");
                         else if(exp.op.op == '-')
                         {
                            // Pointer Subtraction gives integer
@@ -7994,7 +7994,7 @@ void ProcessExpressionType(Expression exp)
                            PrintType(exp.op.exp2.expType, type2, false, true);
                         }
 
-                        Compiler_Warning("incompatible expressions %s (%s) and %s (%s)\n", expString1, type1, expString2, type2);
+                        Compiler_Warning($"incompatible expressions %s (%s) and %s (%s)\n", expString1, type1, expString2, type2);
                      }
                   }
                }
@@ -8154,7 +8154,7 @@ void ProcessExpressionType(Expression exp)
                            PrintType(exp.op.exp2.expType, type2String, false, true);
                         }
 
-                        Compiler_Warning("incompatible expressions %s (%s) and %s (%s)\n", expString1, type1String, expString2, type2String);
+                        Compiler_Warning($"incompatible expressions %s (%s) and %s (%s)\n", expString1, type1String, expString2, type2String);
 
                         if(type1.kind == classType && type1._class && type1._class.registered && type1._class.registered.type == enumClass)
                         {
@@ -8262,7 +8262,7 @@ void ProcessExpressionType(Expression exp)
                ChangeCh(expString, '\n', ' ');
             }
             if(expString[0])
-               Compiler_Error("couldn't determine type of %s\n", expString);
+               Compiler_Error($"couldn't determine type of %s\n", expString);
          }
          if(exp.op.exp2 && !exp.op.exp2.expType)
          {
@@ -8274,7 +8274,7 @@ void ProcessExpressionType(Expression exp)
                ChangeCh(expString, '\n', ' ');
             }
             if(expString[0])
-               Compiler_Error("couldn't determine type of %s\n", expString);
+               Compiler_Error($"couldn't determine type of %s\n", expString);
          }
 
          if(boolResult)
@@ -8626,7 +8626,7 @@ void ProcessExpressionType(Expression exp)
          }
          if(functionType && functionType.kind != TypeKind::functionType)
          {
-            Compiler_Error("called object %s is not a function\n", name);
+            Compiler_Error($"called object %s is not a function\n", name);
          }
          else if(functionType)
          {
@@ -8690,11 +8690,11 @@ void ProcessExpressionType(Expression exp)
                {
                   yylloc = e.loc;
                   if(methodType && methodType.methodClass)
-                     Compiler_Error("too many arguments for method %s::%s (%d given, expected %d)\n",
+                     Compiler_Error($"too many arguments for method %s::%s (%d given, expected %d)\n",
                         methodType.methodClass.fullName, methodType.method.name, exp.call.arguments->count,
                         noParams ? 0 : functionType.params.count);
                   else
-                     Compiler_Error("too many arguments for function %s (%d given, expected %d)\n",
+                     Compiler_Error($"too many arguments for function %s (%d given, expected %d)\n",
                         name /*exp.call.exp.identifier.string*/, exp.call.arguments->count,
                         noParams ? 0 : functionType.params.count);
                   break;
@@ -8771,11 +8771,11 @@ void ProcessExpressionType(Expression exp)
             if(type && type.kind != ellipsisType)
             {
                if(methodType && methodType.methodClass)
-                  Compiler_Warning("not enough arguments for method %s::%s (%d given, expected %d)\n",
+                  Compiler_Warning($"not enough arguments for method %s::%s (%d given, expected %d)\n",
                      methodType.methodClass.fullName, methodType.method.name, exp.call.arguments ? exp.call.arguments->count : 0,
                      functionType.params.count + extra);
                else
-                  Compiler_Warning("not enough arguments for function %s (%d given, expected %d)\n",
+                  Compiler_Warning($"not enough arguments for function %s (%d given, expected %d)\n",
                      name /*exp.call.exp.identifier.string*/, exp.call.arguments ? exp.call.arguments->count : 0,
                      functionType.params.count + extra);
             }
@@ -8801,7 +8801,7 @@ void ProcessExpressionType(Expression exp)
                   yylloc = exp.call.exp.identifier.loc;
                   if(strstr(string, "__builtin_") == string);
                   else
-                     Compiler_Warning("%s undefined; assuming extern returning int\n", string);
+                     Compiler_Warning($"%s undefined; assuming extern returning int\n", string);
                   symbol = Symbol { string = CopyString(string), type = ProcessTypeString("int()", true) };
                   globalContext.symbols.Add((BTNode)symbol);
                   if(strstr(symbol.string, "::"))
@@ -8812,11 +8812,11 @@ void ProcessExpressionType(Expression exp)
             }
             else if(exp.call.exp.type == memberExp)
             {
-               /*Compiler_Warning("%s undefined; assuming returning int\n",
+               /*Compiler_Warning($"%s undefined; assuming returning int\n",
                   exp.call.exp.member.member.string);*/
             }
             else
-               Compiler_Warning("callable object undefined; extern assuming returning int\n");
+               Compiler_Warning($"callable object undefined; extern assuming returning int\n");
 
             if(!functionType.returnType)
             {
@@ -9095,7 +9095,7 @@ void ProcessExpressionType(Expression exp)
                   exp.member.memberType = propertyMember;
 
                if(id && id._class && type._class && !eClass_IsDerived(type._class.registered, _class))
-                  Compiler_Error("invalid class specifier %s for object of class %s\n", _class.fullName, type._class.string);
+                  Compiler_Error($"invalid class specifier %s for object of class %s\n", _class.fullName, type._class.string);
 
                if(typeKind != subClassType)
                {
@@ -9281,7 +9281,7 @@ void ProcessExpressionType(Expression exp)
                      return;
                   }
                   yylloc = exp.member.member.loc;
-                  Compiler_Error("couldn't find member %s in class %s\n", id.string, _class.fullName);
+                  Compiler_Error($"couldn't find member %s in class %s\n", id.string, _class.fullName);
                   if(inCompiler)
                      eClass_AddDataMember(_class, id.string, "int", 0, 0, publicAccess);
                }
@@ -9548,7 +9548,7 @@ void ProcessExpressionType(Expression exp)
                }
             }
             else
-               Compiler_Error("undefined class %s\n", (id && (!id._class || id._class.name))? (id.classSym ? id.classSym.string : (type._class ? type._class.string : null)) : "(null)");
+               Compiler_Error($"undefined class %s\n", (id && (!id._class || id._class.name))? (id.classSym ? id.classSym.string : (type._class ? type._class.string : null)) : "(null)");
          }
          else if(type && (type.kind == structType || type.kind == unionType))
          {
@@ -9565,7 +9565,7 @@ void ProcessExpressionType(Expression exp)
             char expString[10240];
             expString[0] = '\0';
             if(inCompiler) { PrintExpression(exp, expString); ChangeCh(expString, '\n', ' '); }
-            Compiler_Error("member operator on non-structure type expression %s\n", expString);
+            Compiler_Error($"member operator on non-structure type expression %s\n", expString);
          }
 
          if(exp.expType && exp.expType.kind == thisClassType && (!exp.destType || exp.destType.kind != thisClassType))
@@ -9983,7 +9983,7 @@ void ProcessExpressionType(Expression exp)
          else
          {
             exp.expType = ProcessTypeString("Container", false);
-            Compiler_Error("Couldn't determine type of array elements\n");
+            Compiler_Error($"Couldn't determine type of array elements\n");
          }
          break;
       }
@@ -10056,9 +10056,9 @@ void ProcessExpressionType(Expression exp)
 
                      if(inCompiler) { PrintExpression(exp, expString); ChangeCh(expString, '\n', ' '); }
                      if(unresolved)
-                        Compiler_Error("unresolved identifier %s; expected %s\n", expString, type2);
+                        Compiler_Error($"unresolved identifier %s; expected %s\n", expString, type2);
                      else if(exp.type != dummyExp)
-                        Compiler_Error("couldn't determine type of %s; expected %s\n", expString, type2);
+                        Compiler_Error($"couldn't determine type of %s; expected %s\n", expString, type2);
                   }
                }
                else
@@ -10068,9 +10068,9 @@ void ProcessExpressionType(Expression exp)
                   if(inCompiler) { PrintExpression(exp, expString); ChangeCh(expString, '\n', ' '); }
 
                   if(unresolved)
-                     Compiler_Error("unresolved identifier %s\n", expString);
+                     Compiler_Error($"unresolved identifier %s\n", expString);
                   else if(exp.type != dummyExp)
-                     Compiler_Error("couldn't determine type of %s\n", expString);
+                     Compiler_Error($"couldn't determine type of %s\n", expString);
                }
             }
             else
@@ -10099,7 +10099,7 @@ void ProcessExpressionType(Expression exp)
 #ifdef _DEBUG
                   CheckExpressionType(exp, exp.destType, false);
 #endif
-                  Compiler_Warning("incompatible expression %s (%s); expected %s\n", expString, type1, type2);
+                  Compiler_Warning($"incompatible expression %s (%s); expected %s\n", expString, type1, type2);
 
                   // TO CHECK: FORCING HERE TO HELP DEBUGGER
                   FreeType(exp.expType);
@@ -10135,16 +10135,16 @@ void ProcessExpressionType(Expression exp)
    else if(unresolved)
    {
       if(exp.identifier._class && exp.identifier._class.name)
-         Compiler_Error("unresolved identifier %s::%s\n", exp.identifier._class.name, exp.identifier.string);
+         Compiler_Error($"unresolved identifier %s::%s\n", exp.identifier._class.name, exp.identifier.string);
       else if(exp.identifier.string && exp.identifier.string[0])
-         Compiler_Error("unresolved identifier %s\n", exp.identifier.string);
+         Compiler_Error($"unresolved identifier %s\n", exp.identifier.string);
    }
    else if(!exp.expType && exp.type != dummyExp)
    {
       char expString[10240];
       expString[0] = '\0';
       if(inCompiler) { PrintExpression(exp, expString); ChangeCh(expString, '\n', ' '); }
-      Compiler_Error("couldn't determine type of %s\n", expString);
+      Compiler_Error($"couldn't determine type of %s\n", expString);
    }
 
    // Let's try to support any_object & typed_object here:
@@ -10317,7 +10317,7 @@ static void ProcessInitializer(Initializer init, Type type)
 
          if(type && type.kind != arrayType && type.kind != structType && type.kind != unionType && (type.kind != classType || !type._class.registered || type._class.registered.type != structClass))
          {
-            Compiler_Error("Assigning list initializer to non list\n");
+            Compiler_Error($"Assigning list initializer to non list\n");
          }
          break;
       }
@@ -11028,7 +11028,7 @@ static void ProcessStatement(Statement stmt)
                else
                {
                   arrayExp.expType = ProcessTypeString("Container", false);
-                  Compiler_Error("Couldn't determine type of array elements\n");
+                  Compiler_Error($"Couldn't determine type of array elements\n");
                }
 
                /*
@@ -11186,7 +11186,7 @@ static void ProcessStatement(Statement stmt)
          }
          else
          {
-            Compiler_Error("Expression is not a container\n");
+            Compiler_Error($"Expression is not a container\n");
          }
          break;
       }
@@ -11363,12 +11363,12 @@ static void ProcessStatement(Statement stmt)
                               ListAdd(stmt.expressions, MkExpCall(MkExpIdentifier(MkIdentifier("ecere::com::eInstance_Watch")), args));
                            }
                            else
-                              Compiler_Error("Property %s not found in class %s\n", prop.name, _class.fullName);
+                              Compiler_Error($"Property %s not found in class %s\n", prop.name, _class.fullName);
                         }
                      }
                   }
                   else
-                     Compiler_Error("Invalid watched object\n");
+                     Compiler_Error($"Invalid watched object\n");
                }
 
                curExternal = external;
@@ -11381,7 +11381,7 @@ static void ProcessStatement(Statement stmt)
                FreeList(watches, FreePropertyWatch);
             }
             else
-               Compiler_Error("No observer specified and not inside a _class\n");
+               Compiler_Error($"No observer specified and not inside a _class\n");
          }
          else
          {
@@ -11423,7 +11423,7 @@ static void ProcessStatement(Statement stmt)
                }
                else if(!watches)
                {
-                  //Compiler_Error("No property specified and not inside a property set\n");
+                  //Compiler_Error($"No property specified and not inside a property set\n");
                }
                if(watches)
                {
@@ -11435,7 +11435,7 @@ static void ProcessStatement(Statement stmt)
                         CreateFireWatcher(prop, object, stmt);
                      }
                      else
-                        Compiler_Error("Property %s not found in class %s\n", propID.string, _class.fullName);
+                        Compiler_Error($"Property %s not found in class %s\n", propID.string, _class.fullName);
                   }
                }
                else
@@ -11460,7 +11460,7 @@ static void ProcessStatement(Statement stmt)
                FreeList(watches, FreeIdentifier);
             }
             else
-               Compiler_Error("Invalid object specified and not inside a class\n");
+               Compiler_Error($"Invalid object specified and not inside a class\n");
          }
          break;
       }
@@ -11524,7 +11524,7 @@ static void ProcessStatement(Statement stmt)
                            ListAdd(stmt.expressions, MkExpCall(MkExpIdentifier(MkIdentifier("ecere::com::eInstance_StopWatching")), args));
                         }
                         else
-                           Compiler_Error("Property %s not found in class %s\n", prop.name, _class.fullName);
+                           Compiler_Error($"Property %s not found in class %s\n", prop.name, _class.fullName);
                      }
                   }
 
@@ -11535,10 +11535,10 @@ static void ProcessStatement(Statement stmt)
                   FreeList(watches, FreeIdentifier);
                }
                else
-                  Compiler_Error("Invalid object specified and not inside a class\n");
+                  Compiler_Error($"Invalid object specified and not inside a class\n");
             }
             else
-               Compiler_Error("No observer specified and not inside a class\n");
+               Compiler_Error($"No observer specified and not inside a class\n");
          }
          break;
       }
index f6330dd..bd27241 100644 (file)
@@ -1902,7 +1902,7 @@ static bool ProcessBracketInst(Instantiation inst, OldList list)
                               {
                                  if(!((Property)dataMember).Set) 
                                  {
-                                    Compiler_Error("No set defined for property %s\n", dataMember.name);
+                                    Compiler_Error($"No set defined for property %s\n", dataMember.name);
                                     continue;
                                  }
                                  recursionCount--;
@@ -1973,7 +1973,7 @@ static bool ProcessBracketInst(Instantiation inst, OldList list)
                               {
                                  if(!((Property)dataMember).Set) 
                                  {
-                                    Compiler_Error("No set defined for property %s\n", dataMember.name);
+                                    Compiler_Error($"No set defined for property %s\n", dataMember.name);
                                     continue;
                                  }
                                  recursionCount--;
index a665b64..a588c4d 100644 (file)
@@ -874,7 +874,7 @@ static void ProcessExpression(Expression exp)
                                  memberExp.member.memberType = dataMember;
                               }
                               else
-                                 Compiler_Error("no set defined for property %s of class %s\n", prop.name, prop._class.fullName);
+                                 Compiler_Error($"no set defined for property %s of class %s\n", prop.name, prop._class.fullName);
                            }
                         }
                         else
@@ -2211,11 +2211,11 @@ static void ProcessExpression(Expression exp)
                   else 
                   {
                      if(exp.usage.usageRef)
-                        Compiler_Error("cannot obtain address of property\n");
+                        Compiler_Error($"cannot obtain address of property\n");
                      else if(!prop.Get)
-                        Compiler_Error("no get defined for property %s of class %s\n", prop.name, prop._class.fullName);
+                        Compiler_Error($"no get defined for property %s of class %s\n", prop.name, prop._class.fullName);
                      else if(exp.usage.usageDelete)
-                        Compiler_Error("no get defined for property %s of class %s\n", prop.name, prop._class.fullName);
+                        Compiler_Error($"no get defined for property %s of class %s\n", prop.name, prop._class.fullName);
                   }
                }
             }
index 0279d3f..537ac56 100644 (file)
@@ -215,14 +215,14 @@ public Declarator SpecDeclFromString(char * string, OldList * specs, Declarator
 
       if(parseTypeError)
       {
-         Compiler_Warning("parsing type %s\n", string);
-         // Compiler_Error("parsing type %s\n", string);
+         Compiler_Warning($"parsing type %s\n", string);
+         // Compiler_Error($"parsing type %s\n", string);
       }
    }
    else
    {
-      Compiler_Warning("parsing type %s\n", string);
-      // Compiler_Error("parsing type %s\n", string);
+      Compiler_Warning($"parsing type %s\n", string);
+      // Compiler_Error($"parsing type %s\n", string);
       //eSystem_Logf("parsing type %s\n", string);
       //exit(0);
       decl = baseDecl;
index e404bc7..cea89d7 100644 (file)
@@ -4760,7 +4760,7 @@ yyreduce:
       goto yysetstate;
    #else
       Location tmpLoc = yylloc; (yyval.specifier) = (yyvsp[(2) - (2)].id); yylloc = (yylsp[(1) - (2)]); 
-      Compiler_Error("Not a type: %s\n", (yyvsp[(1) - (2)].id).string);      
+      Compiler_Error($"Not a type: %s\n", (yyvsp[(1) - (2)].id).string);      
       yylloc = tmpLoc; (yyvsp[(2) - (2)].id).badID = (yyvsp[(1) - (2)].id); // FreeIdentifier($1);
    #endif
    ;}
index 6645e5b..db46806 100644 (file)
@@ -333,7 +333,7 @@ type:
       goto yysetstate;
    #else
       Location tmpLoc = yylloc; $$ = $2; yylloc = @1; 
-      Compiler_Error("Not a type: %s\n", $1.string);      
+      Compiler_Error($"Not a type: %s\n", $1.string);      
       yylloc = tmpLoc; $2.badID = $1; // FreeIdentifier($1);
    #endif
    }
index 65371d0..6614bda 100644 (file)
@@ -25,6 +25,7 @@ endif
 
 OBJECTS = \
        $(OBJ)Mutex.o \
+       $(OBJ)i18n.o \
        $(OBJ)Array.o \
        $(OBJ)AVLTree.o \
        $(OBJ)BuiltInContainer.o \
@@ -44,6 +45,7 @@ OBJECTS = \
 
 COBJECTS = \
        $(OBJ)Mutex.c \
+       $(OBJ)i18n.c \
        $(OBJ)Array.c \
        $(OBJ)AVLTree.c \
        $(OBJ)BuiltInContainer.c \
@@ -61,6 +63,7 @@ COBJECTS = \
 
 SYMBOLS = \
        $(OBJ)Mutex.sym \
+       $(OBJ)i18n.sym \
        $(OBJ)Array.sym \
        $(OBJ)AVLTree.sym \
        $(OBJ)BuiltInContainer.sym \
@@ -78,6 +81,7 @@ SYMBOLS = \
 
 IMPORTS = \
        $(OBJ)Mutex.imp \
+       $(OBJ)i18n.imp \
        $(OBJ)Array.imp \
        $(OBJ)AVLTree.imp \
        $(OBJ)BuiltInContainer.imp \
@@ -95,6 +99,7 @@ IMPORTS = \
 
 SOURCES = \
        src/sys/Mutex.ec \
+       src/sys/i18n.ec \
        src/com/containers/Array.ec \
        src/com/containers/AVLTree.ec \
        src/com/containers/BuiltInContainer.ec \
@@ -178,6 +183,9 @@ endif
 $(OBJ)Mutex.sym: src/sys/Mutex.ec
        $(ECP) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) -c src/sys/Mutex.ec -o $(OBJ)Mutex.sym
 
+$(OBJ)i18n.sym: src/sys/i18n.ec
+       $(ECP) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) -c src/sys/i18n.ec -o $(OBJ)i18n.sym
+
 $(OBJ)Array.sym: src/com/containers/Array.ec
        $(ECP) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) -c src/com/containers/Array.ec -o $(OBJ)Array.sym
 
@@ -225,6 +233,9 @@ $(OBJ)OldList.sym: src/com/OldList.ec
 $(OBJ)Mutex.c: src/sys/Mutex.ec $(OBJ)Mutex.sym | $(SYMBOLS)
        $(ECC) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) $(FVISIBILITY) -c src/sys/Mutex.ec -o $(OBJ)Mutex.c -symbols $(OBJ)
 
+$(OBJ)i18n.c: src/sys/i18n.ec $(OBJ)i18n.sym | $(SYMBOLS)
+       $(ECC) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) $(FVISIBILITY) -c src/sys/i18n.ec -o $(OBJ)i18n.c -symbols $(OBJ)
+
 $(OBJ)Array.c: src/com/containers/Array.ec $(OBJ)Array.sym | $(SYMBOLS)
        $(ECC) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) $(FVISIBILITY) -c src/com/containers/Array.ec -o $(OBJ)Array.c -symbols $(OBJ)
 
@@ -272,6 +283,9 @@ $(OBJ)OldList.c: src/com/OldList.ec $(OBJ)OldList.sym | $(SYMBOLS)
 $(OBJ)Mutex.o: $(OBJ)Mutex.c
        $(CC) $(CFLAGS) $(FVISIBILITY) -c $(OBJ)Mutex.c -o $(OBJ)Mutex.o
 
+$(OBJ)i18n.o: $(OBJ)i18n.c
+       $(CC) $(CFLAGS) $(FVISIBILITY) -c $(OBJ)i18n.c -o $(OBJ)i18n.o
+
 $(OBJ)Array.o: $(OBJ)Array.c
        $(CC) $(CFLAGS) $(FVISIBILITY) -c $(OBJ)Array.c -o $(OBJ)Array.o
 
index 6863bb2..23787a7 100644 (file)
@@ -76,7 +76,8 @@
             {
                "Folder" : "sys",
                "Files" : [
-                  "Mutex.ec"
+                  "Mutex.ec",
+                  "i18n.ec"
                ]
             },
             {
index 8669444..20ce704 100644 (file)
@@ -4,6 +4,7 @@ import "BinaryTree"
 import "OldList"
 import "String"
 import "dataTypes"
+import "i18n"
 
 #if defined(ECERE_BOOTSTRAP) || defined(ECERE_STATIC)
 #define dllexport
@@ -2277,7 +2278,7 @@ public dllexport Class eSystem_RegisterClass(ClassType type, char * name, char *
          if(!_class.internalDecl)
          {
             if(declMode != baseSystemAccess)
-               printf("error: Redefinition of class %s\n", name);
+               printf($"error: Redefinition of class %s\n", name);
             else
             {
                _class.comRedefinition = true;
index 66d4b90..13d284b 100644 (file)
@@ -1,4 +1,6 @@
+#ifndef ECERE_COM_MODULE
 import "File"
+#endif
 import "Map"
 
 #if defined(ECERE_BOOTSTRAP) || defined(ECERE_STATIC)
@@ -21,6 +23,7 @@ static Map<String, Map<String, String>> moduleMaps { };
 
 public dllexport void LoadTranslatedStrings(Module module, char * name)
 {
+#ifndef ECERE_COM_MODULE
    File f;
    char fileName[MAX_LOCATION];
 
@@ -134,6 +137,7 @@ public dllexport void LoadTranslatedStrings(Module module, char * name)
       }
       delete f;
    }
+#endif
 }
 
 public dllexport void UnloadTranslatedStrings(Module module)
index 1768910..d56bc20 100644 (file)
@@ -41,7 +41,8 @@ SOURCES = \
        sqlite3.c \
        EDASQLite.ec
 
-RESOURCES =
+RESOURCES = \
+       locale/zh_CN/LC_MESSAGES/EDASQLite.mo
 
 
 # TOOLCHAIN
@@ -106,6 +107,7 @@ $(OBJECTS): | objdir
 $(TARGET): $(SOURCES) $(RESOURCES) $(SYMBOLS) $(OBJECTS) | objdir
        $(CC) $(OFLAGS) $(OBJECTS) $(LIBS) -o $(TARGET) $(INSTALLNAME) $(SONAME)
        $(STRIP) $(STRIPOPT) $(TARGET)
+       $(EAR) awq $(TARGET) locale/zh_CN/LC_MESSAGES/EDASQLite.mo "locale/zh_CN/LC_MESSAGES"
        $(call cpq,$(TARGET),../../../$(SODESTDIR))
 ifdef LINUX
        ln -sf $(LP)$(MODULE)$(SO).0.44 ../../../$(SODESTDIR)$(LP)$(MODULE)$(SO).0
index 8c15823..3ffc34f 100644 (file)
@@ -46,7 +46,8 @@ SOURCES = \
        EDASQLiteCipher.ec \
        ../sqlite/EDASQLite.ec
 
-RESOURCES =
+RESOURCES = \
+       locale/zh_CN/LC_MESSAGES/EDASQLiteCipher.mo
 
 # TOOLCHAIN
 export LD_LIBRARY_PATH = ../../../obj/$(PLATFORM)/lib/
@@ -129,6 +130,7 @@ $(OBJECTS): | objdir
 $(TARGET): $(SOURCES) $(RESOURCES) $(SYMBOLS) $(OBJECTS) | objdir
        $(CC) $(OFLAGS) $(OBJECTS) $(LIBS) -o $(TARGET) $(INSTALLNAME) $(SONAME)
        $(STRIP) $(STRIPOPT) $(TARGET)
+       $(EAR) awq $(TARGET) locale/zh_CN/LC_MESSAGES/EDASQLiteCipher.mo "locale/zh_CN/LC_MESSAGES"
        $(call cpq,$(TARGET),../../../$(SODESTDIR))
 ifdef LINUX
        ln -sf $(LP)$(MODULE)$(SO).0.44 ../../../$(SODESTDIR)$(LP)$(MODULE)$(SO).0
index 58262b2..24b8400 100644 (file)
@@ -74,7 +74,8 @@ SOURCES = \
        src/gui.ec \
        src/idList.ec
 
-RESOURCES =
+RESOURCES = \
+       locale/zh_CN/LC_MESSAGES/eda.mo
 
 # TOOLCHAIN
 export LD_LIBRARY_PATH = ../../obj/$(PLATFORM)/lib/
@@ -124,6 +125,7 @@ $(OBJECTS): | objdir
 $(TARGET): $(SOURCES) $(RESOURCES) $(SYMBOLS) $(OBJECTS) | objdir
        $(CC) $(OFLAGS) $(OBJECTS) $(LIBS) -o $(TARGET) $(INSTALLNAME) $(SONAME)
        $(STRIP) $(STRIPOPT) $(TARGET)
+       $(EAR) awq $(TARGET) locale/zh_CN/LC_MESSAGES/eda.mo "locale/zh_CN/LC_MESSAGES"
        $(call cpq,$(TARGET),../../$(SODESTDIR))
 ifdef LINUX
        ln -sf $(LP)$(MODULE)$(SO).0.44 ../../$(SODESTDIR)$(LP)$(MODULE)$(SO).0