ecere/compiler: Included i18n in bootstrap and updated tarball build Makefiles
authorJerome St-Louis <jerome@ecere.com>
Mon, 3 Oct 2011 04:52:45 +0000 (00:52 -0400)
committerJerome St-Louis <jerome@ecere.com>
Mon, 3 Oct 2011 04:52:45 +0000 (00:52 -0400)
compiler/bootstrap/ecere/Makefile
compiler/bootstrap/ecere/bootstrap/File.c
compiler/bootstrap/ecere/bootstrap/ecere.main.c
compiler/bootstrap/ecere/bootstrap/i18n.c [new file with mode: 0644]
compiler/bootstrap/ecs/bootstrap/ecs.c
ecere/Makefile
ecere/ecere.epj
ecere/src/sys/i18n.ec

index 04259ba..d64c4d1 100644 (file)
@@ -18,9 +18,9 @@ OBJECTS = $(OBJ)Array.o $(OBJ)AVLTree.o $(OBJ)BinaryTree.o $(OBJ)BTNode.o \
        $(OBJ)dataTypes.o $(OBJ)DualPipe.o $(OBJ)ecere.main.o $(OBJ)File.o $(OBJ)instance.o \
        $(OBJ)LinkList.o $(OBJ)List.o $(OBJ)Map.o $(OBJ)memory.o $(OBJ)OldList.o $(OBJ)String.o \
        $(OBJ)System.o $(OBJ)TempFile.o $(OBJ)instance.c.o $(OBJ)DualPipe.c.o $(OBJ)File.c.o \
-       $(OBJ)System.c.o
+       $(OBJ)System.c.o $(OBJ)i18n.o
 
-SOURCES = bootstrap/Array.c bootstrap/AVLTree.c bootstrap/BinaryTree.c \
+SOURCES = bootstrap/Array.c bootstrap/AVLTree.c bootstrap/BinaryTree.c bootstrap/i18n.c \
        bootstrap/BTNode.c bootstrap/BufferedFile.c bootstrap/BuiltInContainer.c bootstrap/Container.c \
        bootstrap/CustomAVLTree.c bootstrap/dataTypes.c bootstrap/DualPipe.c bootstrap/ecere.main.c \
        bootstrap/File.c bootstrap/instance.c bootstrap/LinkList.c bootstrap/List.c bootstrap/Map.c \
@@ -99,6 +99,9 @@ $(OBJ)File.o: bootstrap/File.c
 $(OBJ)instance.o: bootstrap/instance.c
        $(CC) $(CFLAGS) $(FVISIBILITY) -c bootstrap/instance.c -o $(OBJ)instance.o
 
+$(OBJ)i18n.o: bootstrap/i18n.c
+       $(CC) $(CFLAGS) $(FVISIBILITY) -c bootstrap/i18n.c -o $(OBJ)i18n.o
+
 $(OBJ)LinkList.o: bootstrap/LinkList.c
        $(CC) $(CFLAGS) $(FVISIBILITY) -c bootstrap/LinkList.c -o $(OBJ)LinkList.o
 
index b32516c..4ab8cf7 100644 (file)
@@ -901,6 +901,7 @@ result = 0x0;
 break;
 }
 }
+(__ecereNameSpace__ecere__com__eInstance_DecRef(f), f = 0);
 }
 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))this->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(this, 0, 0);
 return result;
index 329ad4a..dd243ec 100644 (file)
@@ -429,6 +429,8 @@ struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecer
 
 struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Iterator;
 
+struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__Iterator_data;
+
 struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__IteratorPointer;
 
 struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__LinkElement;
@@ -437,6 +439,14 @@ struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecer
 
 struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ListItem;
 
+struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Map_TPL_String__String_;
+
+struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Map_TPL_String__ecere__com__Map_TPL_String__String___;
+
+struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__MapIterator;
+
+struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__MapIterator_map;
+
 struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Method;
 
 struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Module;
@@ -559,6 +569,14 @@ void __ecereRegisterModule_TempFile(struct __ecereNameSpace__ecere__com__Instanc
 
 void __ecereUnregisterModule_TempFile(struct __ecereNameSpace__ecere__com__Instance * module);
 
+void __ecereRegisterModule_i18n(struct __ecereNameSpace__ecere__com__Instance * module);
+
+void __ecereUnregisterModule_i18n(struct __ecereNameSpace__ecere__com__Instance * module);
+
+void __ecereCreateModuleInstances_i18n();
+
+void __ecereDestroyModuleInstances_i18n();
+
 void __ecereRegisterModule_Array(struct __ecereNameSpace__ecere__com__Instance * module);
 
 void __ecereUnregisterModule_Array(struct __ecereNameSpace__ecere__com__Instance * module);
@@ -637,6 +655,7 @@ __ecereRegisterModule_File(module);
 __ecereRegisterModule_memory(module);
 __ecereRegisterModule_System(module);
 __ecereRegisterModule_TempFile(module);
+__ecereRegisterModule_i18n(module);
 __ecereRegisterModule_Array(module);
 __ecereRegisterModule_AVLTree(module);
 __ecereRegisterModule_BuiltInContainer(module);
@@ -891,10 +910,15 @@ if(method)
 __ecereVMethodID___ecereNameSpace__ecere__com__IOChannel_WriteData = method->vid;
 __ecereClass___ecereNameSpace__ecere__com__Instance = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "ecere::com::Instance");
 __ecereClass___ecereNameSpace__ecere__com__Iterator = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "ecere::com::Iterator");
+__ecereProp___ecereNameSpace__ecere__com__Iterator_data = _property = __ecereNameSpace__ecere__com__eClass_FindProperty(__ecereClass___ecereNameSpace__ecere__com__Iterator, "data", module);
 __ecereClass___ecereNameSpace__ecere__com__IteratorPointer = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "ecere::com::IteratorPointer");
 __ecereClass___ecereNameSpace__ecere__com__LinkElement = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "ecere::com::LinkElement");
 __ecereClass___ecereNameSpace__ecere__com__LinkList = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "ecere::com::LinkList");
 __ecereClass___ecereNameSpace__ecere__com__ListItem = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "ecere::com::ListItem");
+__ecereClass___ecereNameSpace__ecere__com__Map_TPL_String__String_ = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "ecere::com::Map<String, String>");
+__ecereClass___ecereNameSpace__ecere__com__Map_TPL_String__ecere__com__Map_TPL_String__String___ = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "ecere::com::Map<String, ecere::com::Map<String, String> >");
+__ecereClass___ecereNameSpace__ecere__com__MapIterator = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "ecere::com::MapIterator");
+__ecereProp___ecereNameSpace__ecere__com__MapIterator_map = _property = __ecereNameSpace__ecere__com__eClass_FindProperty(__ecereClass___ecereNameSpace__ecere__com__MapIterator, "map", module);
 __ecereClass___ecereNameSpace__ecere__com__Method = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "ecere::com::Method");
 __ecereClass___ecereNameSpace__ecere__com__Module = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "ecere::com::Module");
 __ecereClass___ecereNameSpace__ecere__com__NameSpace = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "ecere::com::NameSpace");
@@ -998,6 +1022,7 @@ __ecereClass_uint64 = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "u
 }
 if(__currentModule == module)
 {
+__ecereCreateModuleInstances_i18n();
 }
 return 0x1;
 }
@@ -1006,6 +1031,7 @@ unsigned int __ecereDll_Unload_ecere(struct __ecereNameSpace__ecere__com__Instan
 {
 if(__currentModule == module)
 {
+__ecereDestroyModuleInstances_i18n();
 }
 __ecereUnregisterModule_BufferedFile(module);
 __ecereUnregisterModule_DualPipe(module);
@@ -1013,6 +1039,7 @@ __ecereUnregisterModule_File(module);
 __ecereUnregisterModule_memory(module);
 __ecereUnregisterModule_System(module);
 __ecereUnregisterModule_TempFile(module);
+__ecereUnregisterModule_i18n(module);
 __ecereUnregisterModule_Array(module);
 __ecereUnregisterModule_AVLTree(module);
 __ecereUnregisterModule_BuiltInContainer(module);
diff --git a/compiler/bootstrap/ecere/bootstrap/i18n.c b/compiler/bootstrap/ecere/bootstrap/i18n.c
new file mode 100644 (file)
index 0000000..f7dbda4
--- /dev/null
@@ -0,0 +1,546 @@
+#if defined(__GNUC__)
+typedef long long int64;
+typedef unsigned long long uint64;
+#elif defined(__TINYC__)
+#include <stdarg.h>
+#define __builtin_va_list va_list
+#define __builtin_va_start va_start
+#define __builtin_va_end va_end
+#ifdef _WIN32
+#define strcasecmp stricmp
+#define strncasecmp strnicmp
+#define __declspec(x) __attribute__((x))
+#endif
+typedef long long int64;
+typedef unsigned long long uint64;
+#else
+typedef __int64 int64;
+typedef unsigned __int64 uint64;
+#endif
+#ifdef __BIG_ENDIAN__
+#define __ENDIAN_PAD(x) (8 - (x))
+#else
+#define __ENDIAN_PAD(x) 0
+#endif
+extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BTNode;
+
+struct __ecereNameSpace__ecere__sys__BTNode;
+
+extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BinaryTree;
+
+struct __ecereNameSpace__ecere__sys__BinaryTree
+{
+struct __ecereNameSpace__ecere__sys__BTNode * root;
+int count;
+int (*  CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, unsigned int a, unsigned int b);
+void (*  FreeKey)(void *  key);
+};
+
+extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldList;
+
+struct __ecereNameSpace__ecere__sys__OldList
+{
+void *  first;
+void *  last;
+int count;
+unsigned int offset;
+unsigned int circ;
+};
+
+extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Class;
+
+struct __ecereNameSpace__ecere__com__Class
+{
+struct __ecereNameSpace__ecere__com__Class * prev;
+struct __ecereNameSpace__ecere__com__Class * next;
+char *  name;
+int offset;
+int structSize;
+int (* *  _vTbl)();
+int vTblSize;
+int (*  Constructor)(struct __ecereNameSpace__ecere__com__Instance *);
+void (*  Destructor)(struct __ecereNameSpace__ecere__com__Instance *);
+int offsetClass;
+int sizeClass;
+struct __ecereNameSpace__ecere__com__Class * base;
+struct __ecereNameSpace__ecere__sys__BinaryTree methods;
+struct __ecereNameSpace__ecere__sys__BinaryTree members;
+struct __ecereNameSpace__ecere__sys__BinaryTree prop;
+struct __ecereNameSpace__ecere__sys__OldList membersAndProperties;
+struct __ecereNameSpace__ecere__sys__BinaryTree classProperties;
+struct __ecereNameSpace__ecere__sys__OldList derivatives;
+int memberID;
+int startMemberID;
+int type;
+struct __ecereNameSpace__ecere__com__Instance * module;
+struct __ecereNameSpace__ecere__com__NameSpace *  nameSpace;
+char *  dataTypeString;
+struct __ecereNameSpace__ecere__com__Instance * dataType;
+int typeSize;
+int defaultAlignment;
+void (*  Initialize)();
+int memberOffset;
+struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
+char *  designerClass;
+unsigned int noExpansion;
+char *  defaultProperty;
+unsigned int comRedefinition;
+int count;
+unsigned int isRemote;
+unsigned int internalDecl;
+void *  data;
+unsigned int computeSize;
+int structAlignment;
+int destructionWatchOffset;
+unsigned int fixed;
+struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
+int inheritanceAccess;
+char *  fullName;
+void *  symbol;
+struct __ecereNameSpace__ecere__sys__OldList conversions;
+struct __ecereNameSpace__ecere__sys__OldList templateParams;
+struct __ecereNameSpace__ecere__com__ClassTemplateArgument *  templateArgs;
+struct __ecereNameSpace__ecere__com__Class * templateClass;
+struct __ecereNameSpace__ecere__sys__OldList templatized;
+int numParams;
+};
+
+extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
+
+struct __ecereNameSpace__ecere__com__Instance
+{
+int (* *  _vTbl)();
+struct __ecereNameSpace__ecere__com__Class * _class;
+int _refCount;
+};
+
+extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Property;
+
+struct __ecereNameSpace__ecere__com__Property
+{
+struct __ecereNameSpace__ecere__com__Property * prev;
+struct __ecereNameSpace__ecere__com__Property * next;
+char *  name;
+unsigned int isProperty;
+int memberAccess;
+int id;
+struct __ecereNameSpace__ecere__com__Class * _class;
+char *  dataTypeString;
+struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
+struct __ecereNameSpace__ecere__com__Instance * dataType;
+void (*  Set)();
+int (*  Get)();
+unsigned int (*  IsSet)();
+void *  data;
+void *  symbol;
+int vid;
+unsigned int conversion;
+unsigned int watcherOffset;
+char *  category;
+unsigned int compiled;
+unsigned int selfWatchable;
+unsigned int isWatchable;
+};
+
+extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataMember;
+
+struct __ecereNameSpace__ecere__com__DataMember
+{
+struct __ecereNameSpace__ecere__com__DataMember * prev;
+struct __ecereNameSpace__ecere__com__DataMember * next;
+char *  name;
+unsigned int isProperty;
+int memberAccess;
+int id;
+struct __ecereNameSpace__ecere__com__Class * _class;
+char *  dataTypeString;
+struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
+struct __ecereNameSpace__ecere__com__Instance * dataType;
+int type;
+int offset;
+int memberID;
+struct __ecereNameSpace__ecere__sys__OldList members;
+struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
+int memberOffset;
+int structAlignment;
+};
+
+extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Method;
+
+struct __ecereNameSpace__ecere__com__Method
+{
+char *  name;
+struct __ecereNameSpace__ecere__com__Method * parent;
+struct __ecereNameSpace__ecere__com__Method * left;
+struct __ecereNameSpace__ecere__com__Method * right;
+int depth;
+int (*  function)();
+int vid;
+int type;
+struct __ecereNameSpace__ecere__com__Class * _class;
+void *  symbol;
+char *  dataTypeString;
+struct __ecereNameSpace__ecere__com__Instance * dataType;
+int memberAccess;
+};
+
+extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__SerialBuffer;
+
+struct __ecereNameSpace__ecere__com__SerialBuffer
+{
+unsigned char *  _buffer;
+unsigned int count;
+unsigned int _size;
+unsigned int pos;
+};
+
+extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__DataValue;
+
+struct __ecereNameSpace__ecere__com__DataValue
+{
+union
+{
+char c;
+unsigned char uc;
+short s;
+unsigned short us;
+int i;
+unsigned int ui;
+void *  p;
+float f;
+double d;
+long long i64;
+uint64 ui64;
+};
+};
+
+extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassTemplateArgument;
+
+struct __ecereNameSpace__ecere__com__ClassTemplateArgument
+{
+union
+{
+struct
+{
+char *  dataTypeString;
+struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
+};
+struct __ecereNameSpace__ecere__com__DataValue expression;
+struct
+{
+char *  memberString;
+union
+{
+struct __ecereNameSpace__ecere__com__DataMember * member;
+struct __ecereNameSpace__ecere__com__Property * prop;
+struct __ecereNameSpace__ecere__com__Method * method;
+};
+};
+};
+};
+
+struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__moduleMaps;
+
+extern char *  __ecereNameSpace__ecere__sys__GetEnvironment(char *  envName, char *  envValue, int max);
+
+extern char *  strcpy(char * , const char * );
+
+extern char *  strstr(char * , const char * );
+
+extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__NameSpace;
+
+struct __ecereNameSpace__ecere__com__NameSpace
+{
+char *  name;
+struct __ecereNameSpace__ecere__com__NameSpace *  btParent;
+struct __ecereNameSpace__ecere__com__NameSpace *  left;
+struct __ecereNameSpace__ecere__com__NameSpace *  right;
+int depth;
+struct __ecereNameSpace__ecere__com__NameSpace *  parent;
+struct __ecereNameSpace__ecere__sys__BinaryTree nameSpaces;
+struct __ecereNameSpace__ecere__sys__BinaryTree classes;
+struct __ecereNameSpace__ecere__sys__BinaryTree defines;
+struct __ecereNameSpace__ecere__sys__BinaryTree functions;
+};
+
+extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Module;
+
+struct __ecereNameSpace__ecere__com__Module
+{
+struct __ecereNameSpace__ecere__com__Instance * application;
+struct __ecereNameSpace__ecere__sys__OldList classes;
+struct __ecereNameSpace__ecere__sys__OldList defines;
+struct __ecereNameSpace__ecere__sys__OldList functions;
+struct __ecereNameSpace__ecere__sys__OldList modules;
+struct __ecereNameSpace__ecere__com__Instance * prev;
+struct __ecereNameSpace__ecere__com__Instance * next;
+char *  name;
+void *  library;
+void *  Unload;
+int importType;
+struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace;
+struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace;
+};
+
+extern int sprintf(char * , char * , ...);
+
+extern struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__sys__FileOpen(char *  fileName, int mode);
+
+extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__IteratorPointer;
+
+struct __ecereNameSpace__ecere__com__IteratorPointer;
+
+extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__MapIterator;
+
+struct __ecereNameSpace__ecere__com__MapIterator
+{
+struct __ecereNameSpace__ecere__com__Instance * container;
+struct __ecereNameSpace__ecere__com__IteratorPointer * pointer;
+};
+
+extern int printf(char * , ...);
+
+extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Map_TPL_String__ecere__com__Map_TPL_String__String___;
+
+extern void *  __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
+
+extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Map_TPL_String__String_;
+
+int __ecereVMethodID___ecereNameSpace__ecere__sys__File_Read;
+
+struct __ecereNameSpace__ecere__com__Instance * __ecereProp___ecereNameSpace__ecere__com__MapIterator_Get_map(struct __ecereNameSpace__ecere__com__MapIterator * this);
+
+void __ecereProp___ecereNameSpace__ecere__com__MapIterator_Set_map(struct __ecereNameSpace__ecere__com__MapIterator * this, struct __ecereNameSpace__ecere__com__Instance * value);
+
+extern struct __ecereNameSpace__ecere__com__Property ** __ecereProp___ecereNameSpace__ecere__com__MapIterator_map;
+
+unsigned int __ecereMethod___ecereNameSpace__ecere__com__Iterator_Index(struct __ecereNameSpace__ecere__com__Iterator * this, uint64 index, unsigned int create);
+
+extern void __ecereNameSpace__ecere__com__eInstance_DecRef(struct __ecereNameSpace__ecere__com__Instance * instance);
+
+extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Iterator;
+
+struct __ecereNameSpace__ecere__com__Iterator
+{
+struct __ecereNameSpace__ecere__com__Instance * container;
+struct __ecereNameSpace__ecere__com__IteratorPointer * pointer;
+};
+
+uint64 __ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(struct __ecereNameSpace__ecere__com__Iterator * this);
+
+void __ecereProp___ecereNameSpace__ecere__com__Iterator_Set_data(struct __ecereNameSpace__ecere__com__Iterator * this, uint64 value);
+
+extern struct __ecereNameSpace__ecere__com__Property ** __ecereProp___ecereNameSpace__ecere__com__Iterator_data;
+
+int __ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek;
+
+extern __declspec(dllexport) void __ecereNameSpace__ecere__LoadTranslatedStrings(struct __ecereNameSpace__ecere__com__Instance * module, char * name)
+{
+struct __ecereNameSpace__ecere__com__Instance * f;
+char fileName[797];
+char lcAll[256];
+char language[256];
+char lang[256];
+char lcMessages[256];
+char * locale = (((void *)0));
+
+if(__ecereNameSpace__ecere__sys__GetEnvironment("LANGUAGE", language, sizeof language))
+locale = language;
+else if(__ecereNameSpace__ecere__sys__GetEnvironment("LC_ALL", lcAll, sizeof lcAll))
+locale = lcAll;
+else if(__ecereNameSpace__ecere__sys__GetEnvironment("LC_MESSAGES", lcMessages, sizeof lcMessages))
+locale = lcMessages;
+else if(__ecereNameSpace__ecere__sys__GetEnvironment("LANG", lang, sizeof lang))
+locale = lang;
+if(locale)
+{
+char * dot;
+
+strcpy(language, locale);
+dot = strstr(language, ".");
+if(dot)
+*dot = (char)0;
+locale = language;
+}
+if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name)
+sprintf(fileName, "<:%s>/locale/%s/LC_MESSAGES/%s.mo", ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name, locale, name);
+else
+sprintf(fileName, ":locale/%s/LC_MESSAGES/%s.mo", locale, name);
+f = __ecereNameSpace__ecere__sys__FileOpen(fileName, 1);
+if(!f)
+{
+sprintf(fileName, "locale/%s/LC_MESSAGES/%s.mo", locale, name);
+f = __ecereNameSpace__ecere__sys__FileOpen(fileName, 1);
+}
+if(!f)
+{
+sprintf(fileName, "/usr/share/locale/%s/LC_MESSAGES/%s.mo", locale, name);
+f = __ecereNameSpace__ecere__sys__FileOpen(fileName, 1);
+}
+if(f)
+{
+unsigned int magic = 0;
+
+((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void *  buffer, unsigned int size, unsigned int count))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read])(f, &magic, sizeof(unsigned int), 1);
+if(magic == 0x950412de || magic == 0xde120495)
+{
+struct __ecereNameSpace__ecere__com__Instance * textMap;
+unsigned int swap = magic != 0x950412de;
+unsigned int revision = 0;
+unsigned int numStrings = 0;
+unsigned int origStrings = 0, transStrings = 0;
+unsigned int hashingSize = 0, hashingOffset = 0;
+int c;
+
+((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void *  buffer, unsigned int size, unsigned int count))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read])(f, &revision, sizeof(unsigned int), 1);
+if(swap)
+((((revision) & 0x000000ff) << 24) | (((revision) & 0x0000ff00) << 8) | (((revision) & 0x00ff0000) >> 8) | (((revision) & 0xff000000) >> 24));
+((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void *  buffer, unsigned int size, unsigned int count))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read])(f, &numStrings, sizeof(unsigned int), 1);
+if(swap)
+((((numStrings) & 0x000000ff) << 24) | (((numStrings) & 0x0000ff00) << 8) | (((numStrings) & 0x00ff0000) >> 8) | (((numStrings) & 0xff000000) >> 24));
+((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void *  buffer, unsigned int size, unsigned int count))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read])(f, &origStrings, sizeof(unsigned int), 1);
+if(swap)
+((((origStrings) & 0x000000ff) << 24) | (((origStrings) & 0x0000ff00) << 8) | (((origStrings) & 0x00ff0000) >> 8) | (((origStrings) & 0xff000000) >> 24));
+((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void *  buffer, unsigned int size, unsigned int count))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read])(f, &transStrings, sizeof(unsigned int), 1);
+if(swap)
+((((transStrings) & 0x000000ff) << 24) | (((transStrings) & 0x0000ff00) << 8) | (((transStrings) & 0x00ff0000) >> 8) | (((transStrings) & 0xff000000) >> 24));
+((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void *  buffer, unsigned int size, unsigned int count))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read])(f, &hashingSize, sizeof(unsigned int), 1);
+if(swap)
+((((hashingSize) & 0x000000ff) << 24) | (((hashingSize) & 0x0000ff00) << 8) | (((hashingSize) & 0x00ff0000) >> 8) | (((hashingSize) & 0xff000000) >> 24));
+((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void *  buffer, unsigned int size, unsigned int count))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read])(f, &hashingOffset, sizeof(unsigned int), 1);
+if(swap)
+((((hashingOffset) & 0x000000ff) << 24) | (((hashingOffset) & 0x0000ff00) << 8) | (((hashingOffset) & 0x00ff0000) >> 8) | (((hashingOffset) & 0xff000000) >> 24));
+if(!__ecereNameSpace__ecere__moduleMaps)
+__ecereNameSpace__ecere__moduleMaps = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__com__Map_TPL_String__ecere__com__Map_TPL_String__String___);
+{
+struct __ecereNameSpace__ecere__com__MapIterator it = (it.container = (void *)0, it.pointer = (void *)0, __ecereProp___ecereNameSpace__ecere__com__MapIterator_Set_map(&it, __ecereNameSpace__ecere__moduleMaps), it);
+
+if(__ecereMethod___ecereNameSpace__ecere__com__Iterator_Index(&it, (uint64)(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name), 0x0))
+(__ecereNameSpace__ecere__com__eInstance_DecRef(__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&it)), __ecereProp___ecereNameSpace__ecere__com__Iterator_Set_data(&it, 0));
+}
+__extension__ ({
+struct __ecereNameSpace__ecere__com__Iterator __internalIterator = 
+{
+__ecereNameSpace__ecere__moduleMaps, 0
+};
+
+__ecereMethod___ecereNameSpace__ecere__com__Iterator_Index(&__internalIterator, (uint64)(((uint64)(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name))), 0x1);
+__ecereProp___ecereNameSpace__ecere__com__Iterator_Set_data(&__internalIterator, textMap = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__com__Map_TPL_String__String_));
+});
+for(c = 0; c < numStrings; c++)
+{
+unsigned int len = 0, offset = 0;
+char * original = (((void *)0)), * translated = (((void *)0));
+
+((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(f, origStrings + c * 2 * sizeof(unsigned int), 0);
+((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void *  buffer, unsigned int size, unsigned int count))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read])(f, &len, sizeof(unsigned int), 1);
+if(swap)
+((((len) & 0x000000ff) << 24) | (((len) & 0x0000ff00) << 8) | (((len) & 0x00ff0000) >> 8) | (((len) & 0xff000000) >> 24));
+((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void *  buffer, unsigned int size, unsigned int count))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read])(f, &offset, sizeof(unsigned int), 1);
+if(swap)
+((((offset) & 0x000000ff) << 24) | (((offset) & 0x0000ff00) << 8) | (((offset) & 0x00ff0000) >> 8) | (((offset) & 0xff000000) >> 24));
+((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(f, offset, 0);
+original = __ecereNameSpace__ecere__com__eSystem_New(sizeof(unsigned char) * (len + 1));
+((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void *  buffer, unsigned int size, unsigned int count))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read])(f, original, 1, len + 1);
+((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(f, transStrings + c * 2 * sizeof(unsigned int), 0);
+((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void *  buffer, unsigned int size, unsigned int count))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read])(f, &len, sizeof(unsigned int), 1);
+if(swap)
+((((len) & 0x000000ff) << 24) | (((len) & 0x0000ff00) << 8) | (((len) & 0x00ff0000) >> 8) | (((len) & 0xff000000) >> 24));
+((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void *  buffer, unsigned int size, unsigned int count))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read])(f, &offset, sizeof(unsigned int), 1);
+if(swap)
+((((offset) & 0x000000ff) << 24) | (((offset) & 0x0000ff00) << 8) | (((offset) & 0x00ff0000) >> 8) | (((offset) & 0xff000000) >> 24));
+((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(f, offset, 0);
+translated = __ecereNameSpace__ecere__com__eSystem_New(sizeof(unsigned char) * (len + 1));
+((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void *  buffer, unsigned int size, unsigned int count))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read])(f, translated, 1, len + 1);
+if(len)
+__extension__ ({
+struct __ecereNameSpace__ecere__com__Iterator __internalIterator = 
+{
+textMap, 0
+};
+
+__ecereMethod___ecereNameSpace__ecere__com__Iterator_Index(&__internalIterator, (uint64)(((uint64)(original))), 0x1);
+__ecereProp___ecereNameSpace__ecere__com__Iterator_Set_data(&__internalIterator, translated);
+});
+else
+(__ecereNameSpace__ecere__com__eSystem_Delete(translated), translated = 0);
+(__ecereNameSpace__ecere__com__eSystem_Delete(original), original = 0);
+}
+}
+else
+{
+printf("Invalid format while loading %s\n", fileName);
+}
+(__ecereNameSpace__ecere__com__eInstance_DecRef(f), f = 0);
+}
+}
+
+int __ecereVMethodID___ecereNameSpace__ecere__com__Container_Free;
+
+int __ecereVMethodID___ecereNameSpace__ecere__com__Container_Delete;
+
+extern __declspec(dllexport) void __ecereNameSpace__ecere__UnloadTranslatedStrings(struct __ecereNameSpace__ecere__com__Instance * module)
+{
+struct __ecereNameSpace__ecere__com__MapIterator it = (it.container = (void *)0, it.pointer = (void *)0, __ecereProp___ecereNameSpace__ecere__com__MapIterator_Set_map(&it, __ecereNameSpace__ecere__moduleMaps), it);
+
+if(__ecereMethod___ecereNameSpace__ecere__com__Iterator_Index(&it, (uint64)(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name), 0x0))
+{
+((void (*)(struct __ecereNameSpace__ecere__com__Instance *))((struct __ecereNameSpace__ecere__com__Instance *)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&it))->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Free])(((struct __ecereNameSpace__ecere__com__Instance *)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&it)));
+((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * i))__ecereNameSpace__ecere__moduleMaps->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Delete])(__ecereNameSpace__ecere__moduleMaps, it.pointer);
+}
+}
+
+extern __declspec(dllexport) char * __ecereNameSpace__ecere__GetTranslatedString(struct __ecereNameSpace__ecere__com__Instance * module, char * string)
+{
+struct __ecereNameSpace__ecere__com__Instance * textMap = __ecereNameSpace__ecere__moduleMaps ? (__extension__ ({
+struct __ecereNameSpace__ecere__com__Iterator __internalIterator = 
+{
+__ecereNameSpace__ecere__moduleMaps, 0
+};
+
+__ecereMethod___ecereNameSpace__ecere__com__Iterator_Index(&__internalIterator, (uint64)(((uint64)(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->name))), 0x0);
+((struct __ecereNameSpace__ecere__com__Instance *)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&__internalIterator));
+})) : (((void *)0));
+
+return textMap ? (__extension__ ({
+struct __ecereNameSpace__ecere__com__Iterator __internalIterator = 
+{
+textMap, 0
+};
+
+__ecereMethod___ecereNameSpace__ecere__com__Iterator_Index(&__internalIterator, (uint64)(((uint64)(string))), 0x0);
+((char *)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&__internalIterator));
+})) : string;
+}
+
+extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__GlobalFunction;
+
+struct __ecereNameSpace__ecere__com__GlobalFunction;
+
+extern struct __ecereNameSpace__ecere__com__GlobalFunction * __ecereNameSpace__ecere__com__eSystem_RegisterFunction(char *  name, char *  type, void *  func, struct __ecereNameSpace__ecere__com__Instance * module, int declMode);
+
+void __ecereRegisterModule_i18n(struct __ecereNameSpace__ecere__com__Instance * module)
+{
+struct __ecereNameSpace__ecere__com__Class * class;
+
+__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::LoadTranslatedStrings", "dllexport void ecere::LoadTranslatedStrings(ecere::com::Module module, char * name)", __ecereNameSpace__ecere__LoadTranslatedStrings, module, 1);
+__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::UnloadTranslatedStrings", "dllexport void ecere::UnloadTranslatedStrings(ecere::com::Module module)", __ecereNameSpace__ecere__UnloadTranslatedStrings, module, 1);
+__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::GetTranslatedString", "dllexport char * ecere::GetTranslatedString(ecere::com::Module module, char * string)", __ecereNameSpace__ecere__GetTranslatedString, module, 1);
+}
+
+void __ecereUnregisterModule_i18n(struct __ecereNameSpace__ecere__com__Instance * module)
+{
+
+}
+
+void __ecereCreateModuleInstances_i18n()
+{
+__ecereNameSpace__ecere__moduleMaps = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__com__Map_TPL_String__ecere__com__Map_TPL_String__String___);
+__ecereNameSpace__ecere__com__eInstance_IncRef(__ecereNameSpace__ecere__moduleMaps);
+}
+
+void __ecereDestroyModuleInstances_i18n()
+{
+(__ecereNameSpace__ecere__com__eInstance_DecRef(__ecereNameSpace__ecere__moduleMaps), __ecereNameSpace__ecere__moduleMaps = 0);
+}
+
index d75e9e3..077443a 100644 (file)
@@ -889,8 +889,6 @@ __ecereNameSpace__ecere__sys__StripExtension(projectName);
 __ecereNameSpace__ecere__sys__ChangeCh(mainModuleName, '.', '_');
 __ecereNameSpace__ecere__sys__ChangeCh(mainModuleName, '-', '_');
 __ecereNameSpace__ecere__sys__ChangeCh(mainModuleName, ' ', '_');
-if(i18n)
-((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "#include <libintl.h>\n\n");
 if(targetPlatform == 1 && !isConsole && !isStaticLibrary && !isDynamicLibrary)
 {
 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "typedef void * HINSTANCE;\n");
@@ -1071,12 +1069,6 @@ else if(targetPlatform == 1 && !isConsole)
 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "   __thisModule = __currentModule = module = __ecere_COM_Initialize(1, 0, null);\n\n");
 else
 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "   __thisModule = __currentModule = module = __ecere_COM_Initialize(1, _argc, (void *)_argv);\n\n");
-if(i18n)
-{
-__ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   bindtextdomain(\"%s\", \"%s\");\n", projectName, ("locale"));
-__ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   textdomain(\"%s\");\n", projectName);
-__ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   bind_textdomain_codeset (\"%s\", \"utf-8\");\n", projectName);
-}
 if(_imports.count)
 {
 for(module = _imports.first; module; module = module->next)
@@ -1207,6 +1199,8 @@ if(isDynamicLibrary)
 {
 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "   }\n");
 }
+if(i18n)
+__ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   LoadTranslatedStrings(module, \"%s\");\n", projectName);
 if(!isDynamicLibrary && thisAppClass)
 {
 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   _class = eSystem_FindClass(__currentModule, \"%s\");\n", thisAppClass->name);
@@ -1277,6 +1271,8 @@ __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   __ecereDestroyMod
 }
 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\n");
 }
+if(i18n)
+__ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   UnloadTranslatedStrings(__currentModule);\n");
 if(isDynamicLibrary)
 {
 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "   }\n");
index 135d99f..e314336 100644 (file)
@@ -28,7 +28,7 @@ OBJECTS1 = $(OBJ)Archive.o $(OBJ)BufferedFile.o $(OBJ)Date.o $(OBJ)DualPipe.o \
        $(OBJ)EARArchive.o $(OBJ)File.o $(OBJ)FileMonitor.o $(OBJ)GlobalAppSettings.o $(OBJ)JSON.o \
        $(OBJ)JSONGlobalSettings.o $(OBJ)memory.o $(OBJ)Mutex.o $(OBJ)Semaphore.o $(OBJ)System.o $(OBJ)TempFile.o \
        $(OBJ)Thread.o $(OBJ)Time.o $(OBJ)unicode.o $(OBJ)units.o $(OBJ)File.c.o $(OBJ)DualPipe.c.o \
-       $(OBJ)System.c.o $(OBJ)Cube.o $(OBJ)SkyBox.o $(OBJ)Sphere.o $(OBJ)Object3DSFormat.o \
+       $(OBJ)System.c.o $(OBJ)i18n.o $(OBJ)Cube.o $(OBJ)SkyBox.o $(OBJ)Sphere.o $(OBJ)Object3DSFormat.o \
        $(OBJ)Camera.o $(OBJ)Matrix.o $(OBJ)Mesh.o $(OBJ)Object.o $(OBJ)Plane.o $(OBJ)Quaternion.o \
        $(OBJ)Vector3D.o $(OBJ)BMPFormat.o $(OBJ)GIFFormat.o $(OBJ)JPEGFormat.o $(OBJ)PCXFormat.o \
        $(OBJ)PNGFormat.o $(OBJ)RGBFormat.o $(OBJ)harfbuzz-freetype.o $(OBJ)harfbuzz-unicode-tables.o \
@@ -64,25 +64,25 @@ COBJECTS = $(COBJECTS1) $(COBJECTS2) $(COBJECTS3)
 COBJECTS1 = $(OBJ)Archive.c $(OBJ)BufferedFile.c $(OBJ)Date.c $(OBJ)DualPipe.c \
        $(OBJ)EARArchive.c $(OBJ)File.c $(OBJ)FileMonitor.c $(OBJ)GlobalAppSettings.c $(OBJ)JSON.c \
        $(OBJ)JSONGlobalSettings.c $(OBJ)memory.c $(OBJ)Mutex.c $(OBJ)Semaphore.c $(OBJ)System.c $(OBJ)TempFile.c \
-       $(OBJ)Thread.c $(OBJ)Time.c $(OBJ)unicode.c $(OBJ)units.c $(OBJ)Cube.c $(OBJ)SkyBox.c \
-       $(OBJ)Sphere.c $(OBJ)Object3DSFormat.c $(OBJ)Camera.c $(OBJ)Matrix.c $(OBJ)Mesh.c \
-       $(OBJ)Object.c $(OBJ)Plane.c $(OBJ)Quaternion.c $(OBJ)Vector3D.c $(OBJ)BMPFormat.c \
-       $(OBJ)GIFFormat.c $(OBJ)JPEGFormat.c $(OBJ)PCXFormat.c $(OBJ)PNGFormat.c $(OBJ)RGBFormat.c \
-       $(if $(WINDOWS),$(OBJ)Direct3D8DisplayDriver.c,) $(if $(WINDOWS),$(OBJ)Direct3D9DisplayDriver.c,) \
-       $(if $(WINDOWS),$(OBJ)DirectDrawDisplayDriver.c,) $(if $(WINDOWS),$(OBJ)GDIDisplayDriver.c,) $(OBJ)lfbBlit.c $(OBJ)lfbConvert.c \
-       $(OBJ)LFBDisplayDriver.c $(if $(or $(LINUX),$(OSX)),$(OBJ)NCursesDisplayDriver.c,) \
-       $(OBJ)OpenGLDisplayDriver.c
-COBJECTS2 = $(if $(WINDOWS),$(OBJ)Win32BitmapPrinterDisplayDriver.c,) \
-       $(if $(WINDOWS),$(OBJ)Win32ConsoleDisplayDriver.c,) $(if $(WINDOWS),$(OBJ)Win32PrinterDisplayDriver.c,) \
-       $(if $(LINUX),$(OBJ)XDisplayDriver.c,) $(OBJ)Bitmap.c $(OBJ)BitmapResource.c $(OBJ)Color.c $(OBJ)Display.c \
-       $(OBJ)DisplaySystem.c $(OBJ)FontResource.c $(OBJ)Resource.c $(OBJ)Surface.c $(OBJ)Button.c \
-       $(OBJ)CalendarControl.c $(OBJ)DataBox.c $(OBJ)DropBox.c $(OBJ)EditBox.c $(OBJ)Label.c $(OBJ)ListBox.c \
-       $(OBJ)Menu.c $(OBJ)Picture.c $(OBJ)ProgressBar.c $(OBJ)ScrollBar.c $(OBJ)StatusBar.c \
-       $(OBJ)TabControl.c $(OBJ)PaneSplitter.c $(OBJ)Stacker.c $(OBJ)PathBox.c $(OBJ)ColorPicker.c \
-       $(OBJ)FileDialog.c $(OBJ)FindDialog.c $(OBJ)GoToDialog.c $(OBJ)MessageBox.c $(OBJ)ReplaceDialog.c \
-       $(OBJ)WindowList.c $(if $(or $(LINUX),$(OSX)),$(OBJ)NCursesInterface.c,) \
-       $(if $(WINDOWS),$(OBJ)Win32Interface.c,) $(if $(WINDOWS),$(OBJ)Win32ConsoleInterface.c,) \
-       $(if $(or $(LINUX),$(OSX)),$(OBJ)XInterface.c,)
+       $(OBJ)Thread.c $(OBJ)Time.c $(OBJ)unicode.c $(OBJ)units.c $(OBJ)i18n.c $(OBJ)Cube.c \
+       $(OBJ)SkyBox.c $(OBJ)Sphere.c $(OBJ)Object3DSFormat.c $(OBJ)Camera.c $(OBJ)Matrix.c \
+       $(OBJ)Mesh.c $(OBJ)Object.c $(OBJ)Plane.c $(OBJ)Quaternion.c $(OBJ)Vector3D.c \
+       $(OBJ)BMPFormat.c $(OBJ)GIFFormat.c $(OBJ)JPEGFormat.c $(OBJ)PCXFormat.c $(OBJ)PNGFormat.c \
+       $(OBJ)RGBFormat.c $(if $(WINDOWS),$(OBJ)Direct3D8DisplayDriver.c,) \
+       $(if $(WINDOWS),$(OBJ)Direct3D9DisplayDriver.c,) $(if $(WINDOWS),$(OBJ)DirectDrawDisplayDriver.c,) \
+       $(if $(WINDOWS),$(OBJ)GDIDisplayDriver.c,) $(OBJ)lfbBlit.c $(OBJ)lfbConvert.c $(OBJ)LFBDisplayDriver.c \
+       $(if $(or $(LINUX),$(OSX)),$(OBJ)NCursesDisplayDriver.c,)
+COBJECTS2 = $(OBJ)OpenGLDisplayDriver.c \
+       $(if $(WINDOWS),$(OBJ)Win32BitmapPrinterDisplayDriver.c,) $(if $(WINDOWS),$(OBJ)Win32ConsoleDisplayDriver.c,) \
+       $(if $(WINDOWS),$(OBJ)Win32PrinterDisplayDriver.c,) $(if $(LINUX),$(OBJ)XDisplayDriver.c,) $(OBJ)Bitmap.c $(OBJ)BitmapResource.c \
+       $(OBJ)Color.c $(OBJ)Display.c $(OBJ)DisplaySystem.c $(OBJ)FontResource.c $(OBJ)Resource.c \
+       $(OBJ)Surface.c $(OBJ)Button.c $(OBJ)CalendarControl.c $(OBJ)DataBox.c $(OBJ)DropBox.c \
+       $(OBJ)EditBox.c $(OBJ)Label.c $(OBJ)ListBox.c $(OBJ)Menu.c $(OBJ)Picture.c $(OBJ)ProgressBar.c \
+       $(OBJ)ScrollBar.c $(OBJ)StatusBar.c $(OBJ)TabControl.c $(OBJ)PaneSplitter.c $(OBJ)Stacker.c \
+       $(OBJ)PathBox.c $(OBJ)ColorPicker.c $(OBJ)FileDialog.c $(OBJ)FindDialog.c $(OBJ)GoToDialog.c \
+       $(OBJ)MessageBox.c $(OBJ)ReplaceDialog.c $(OBJ)WindowList.c \
+       $(if $(or $(LINUX),$(OSX)),$(OBJ)NCursesInterface.c,) $(if $(WINDOWS),$(OBJ)Win32Interface.c,) \
+       $(if $(WINDOWS),$(OBJ)Win32ConsoleInterface.c,) $(if $(or $(LINUX),$(OSX)),$(OBJ)XInterface.c,)
 COBJECTS3 = $(OBJ)TVisionSkin.c $(OBJ)WindowsSkin.c $(OBJ)Anchor.c $(OBJ)ClipBoard.c \
        $(OBJ)Cursor.c $(OBJ)Desktop3D.c $(OBJ)FormDesigner.c $(OBJ)GuiApplication.c \
        $(OBJ)Interface.c $(OBJ)Key.c $(OBJ)Skin.c $(OBJ)Timer.c $(OBJ)typeEdit.c $(OBJ)Window.c \
@@ -96,7 +96,7 @@ SYMBOLS1 = $(OBJ)Archive.sym $(OBJ)BufferedFile.sym $(OBJ)Date.sym $(OBJ)DualPip
        $(OBJ)EARArchive.sym $(OBJ)File.sym $(OBJ)FileMonitor.sym $(OBJ)GlobalAppSettings.sym \
        $(OBJ)JSON.sym $(OBJ)JSONGlobalSettings.sym $(OBJ)memory.sym $(OBJ)Mutex.sym \
        $(OBJ)Semaphore.sym $(OBJ)System.sym $(OBJ)TempFile.sym $(OBJ)Thread.sym $(OBJ)Time.sym \
-       $(OBJ)unicode.sym $(OBJ)units.sym $(OBJ)Cube.sym $(OBJ)SkyBox.sym $(OBJ)Sphere.sym \
+       $(OBJ)unicode.sym $(OBJ)units.sym $(OBJ)i18n.sym $(OBJ)Cube.sym $(OBJ)SkyBox.sym $(OBJ)Sphere.sym \
        $(OBJ)Object3DSFormat.sym $(OBJ)Camera.sym $(OBJ)Matrix.sym $(OBJ)Mesh.sym $(OBJ)Object.sym \
        $(OBJ)Plane.sym $(OBJ)Quaternion.sym $(OBJ)Vector3D.sym $(OBJ)BMPFormat.sym \
        $(OBJ)GIFFormat.sym $(OBJ)JPEGFormat.sym $(OBJ)PCXFormat.sym $(OBJ)PNGFormat.sym \
@@ -129,7 +129,7 @@ IMPORTS1 = $(OBJ)Archive.imp $(OBJ)BufferedFile.imp $(OBJ)Date.imp $(OBJ)DualPip
        $(OBJ)EARArchive.imp $(OBJ)File.imp $(OBJ)FileMonitor.imp $(OBJ)GlobalAppSettings.imp \
        $(OBJ)JSON.imp $(OBJ)JSONGlobalSettings.imp $(OBJ)memory.imp $(OBJ)Mutex.imp \
        $(OBJ)Semaphore.imp $(OBJ)System.imp $(OBJ)TempFile.imp $(OBJ)Thread.imp $(OBJ)Time.imp \
-       $(OBJ)unicode.imp $(OBJ)units.imp $(OBJ)Cube.imp $(OBJ)SkyBox.imp $(OBJ)Sphere.imp \
+       $(OBJ)unicode.imp $(OBJ)units.imp $(OBJ)i18n.imp $(OBJ)Cube.imp $(OBJ)SkyBox.imp $(OBJ)Sphere.imp \
        $(OBJ)Object3DSFormat.imp $(OBJ)Camera.imp $(OBJ)Matrix.imp $(OBJ)Mesh.imp $(OBJ)Object.imp \
        $(OBJ)Plane.imp $(OBJ)Quaternion.imp $(OBJ)Vector3D.imp $(OBJ)BMPFormat.imp \
        $(OBJ)GIFFormat.imp $(OBJ)JPEGFormat.imp $(OBJ)PCXFormat.imp $(OBJ)PNGFormat.imp \
@@ -163,48 +163,50 @@ SOURCES1 = src/sys/Archive.ec src/sys/BufferedFile.ec src/sys/Date.ec src/sys/Du
        src/sys/JSON.ec src/sys/JSONGlobalSettings.ec src/sys/memory.ec src/sys/Mutex.ec \
        src/sys/Semaphore.ec src/sys/System.ec src/sys/TempFile.ec src/sys/Thread.ec src/sys/Time.ec \
        src/sys/unicode.ec src/sys/units.ec src/sys/File.c src/sys/DualPipe.c src/sys/System.c \
-       src/gfx/3D/meshes/Cube.ec src/gfx/3D/meshes/SkyBox.ec src/gfx/3D/meshes/Sphere.ec \
-       src/gfx/3D/models/Object3DSFormat.ec src/gfx/3D/Camera.ec src/gfx/3D/Matrix.ec src/gfx/3D/Mesh.ec \
-       src/gfx/3D/Object.ec src/gfx/3D/Plane.ec src/gfx/3D/Quaternion.ec src/gfx/3D/Vector3D.ec \
-       src/gfx/bitmaps/BMPFormat.ec src/gfx/bitmaps/GIFFormat.ec src/gfx/bitmaps/JPEGFormat.ec \
-       src/gfx/bitmaps/PCXFormat.ec src/gfx/bitmaps/PNGFormat.ec src/gfx/bitmaps/RGBFormat.ec \
+       src/sys/i18n.ec src/gfx/3D/meshes/Cube.ec src/gfx/3D/meshes/SkyBox.ec \
+       src/gfx/3D/meshes/Sphere.ec src/gfx/3D/models/Object3DSFormat.ec src/gfx/3D/Camera.ec \
+       src/gfx/3D/Matrix.ec src/gfx/3D/Mesh.ec src/gfx/3D/Object.ec src/gfx/3D/Plane.ec \
+       src/gfx/3D/Quaternion.ec src/gfx/3D/Vector3D.ec src/gfx/bitmaps/BMPFormat.ec \
+       src/gfx/bitmaps/GIFFormat.ec src/gfx/bitmaps/JPEGFormat.ec src/gfx/bitmaps/PCXFormat.ec \
+       src/gfx/bitmaps/PNGFormat.ec src/gfx/bitmaps/RGBFormat.ec \
        src/gfx/drivers/harfbuzz/unicode/harfbuzz-freetype.c src/gfx/drivers/harfbuzz/unicode/harfbuzz-unicode-tables.c \
        src/gfx/drivers/harfbuzz/unicode/harfbuzz-unicode.c src/gfx/drivers/harfbuzz/harfbuzz-arabic.c \
        src/gfx/drivers/harfbuzz/harfbuzz-buffer.c src/gfx/drivers/harfbuzz/harfbuzz-gdef.c \
        src/gfx/drivers/harfbuzz/harfbuzz-gpos.c src/gfx/drivers/harfbuzz/harfbuzz-gsub.c \
        src/gfx/drivers/harfbuzz/harfbuzz-hangul.c src/gfx/drivers/harfbuzz/harfbuzz-hebrew.c \
-       src/gfx/drivers/harfbuzz/harfbuzz-indic.c src/gfx/drivers/harfbuzz/harfbuzz-khmer.c
-SOURCES2 = src/gfx/drivers/harfbuzz/harfbuzz-myanmar.c \
-       src/gfx/drivers/harfbuzz/harfbuzz-open.c src/gfx/drivers/harfbuzz/harfbuzz-shaper.c \
-       src/gfx/drivers/harfbuzz/harfbuzz-stream.c src/gfx/drivers/harfbuzz/harfbuzz-tibetan.c \
-       src/gfx/drivers/harfbuzz/harfbuzz-impl.c src/gfx/drivers/harfbuzz/harfbuzz-thai.c \
-       $(if $(WINDOWS),src/gfx/drivers/Direct3D8DisplayDriver.ec,) $(if $(WINDOWS),src/gfx/drivers/Direct3D9DisplayDriver.ec,) \
-       $(if $(WINDOWS),src/gfx/drivers/DirectDrawDisplayDriver.ec,) $(if $(WINDOWS),src/gfx/drivers/GDIDisplayDriver.ec,) \
-       src/gfx/drivers/lfbBlit.ec src/gfx/drivers/lfbConvert.ec src/gfx/drivers/LFBDisplayDriver.ec \
-       $(if $(or $(LINUX),$(OSX)),src/gfx/drivers/NCursesDisplayDriver.ec,) src/gfx/drivers/OpenGLDisplayDriver.ec \
-       $(if $(WINDOWS),src/gfx/drivers/Win32BitmapPrinterDisplayDriver.ec,) $(if $(WINDOWS),src/gfx/drivers/Win32ConsoleDisplayDriver.ec,) \
-       $(if $(WINDOWS),src/gfx/drivers/Win32PrinterDisplayDriver.ec,) $(if $(LINUX),src/gfx/drivers/XDisplayDriver.ec,) src/gfx/Bitmap.ec \
-       src/gfx/BitmapResource.ec src/gfx/Color.ec src/gfx/Display.ec src/gfx/DisplaySystem.ec \
-       src/gfx/FontResource.ec src/gfx/Resource.ec src/gfx/Surface.ec src/gui/controls/Button.ec \
-       src/gui/controls/CalendarControl.ec src/gui/controls/DataBox.ec src/gui/controls/DropBox.ec \
-       src/gui/controls/EditBox.ec src/gui/controls/Label.ec src/gui/controls/ListBox.ec \
-       src/gui/controls/Menu.ec src/gui/controls/Picture.ec
-SOURCES3 = src/gui/controls/ProgressBar.ec src/gui/controls/ScrollBar.ec \
-       src/gui/controls/StatusBar.ec src/gui/controls/TabControl.ec src/gui/controls/PaneSplitter.ec \
-       src/gui/controls/Stacker.ec src/gui/controls/PathBox.ec src/gui/dialogs/ColorPicker.ec \
-       src/gui/dialogs/FileDialog.ec src/gui/dialogs/FindDialog.ec src/gui/dialogs/GoToDialog.ec \
-       src/gui/dialogs/MessageBox.ec src/gui/dialogs/ReplaceDialog.ec src/gui/dialogs/WindowList.ec \
-       $(if $(or $(LINUX),$(OSX)),src/gui/drivers/NCursesInterface.ec,) $(if $(WINDOWS),src/gui/drivers/Win32Interface.ec,) \
-       $(if $(WINDOWS),src/gui/drivers/Win32ConsoleInterface.ec,) $(if $(or $(LINUX),$(OSX)),src/gui/drivers/XInterface.ec,) \
-       src/gui/skins/TVisionSkin.ec src/gui/skins/WindowsSkin.ec src/gui/Anchor.ec src/gui/ClipBoard.ec \
-       src/gui/Cursor.ec src/gui/Desktop3D.ec src/gui/FormDesigner.ec src/gui/GuiApplication.ec \
-       src/gui/Interface.ec src/gui/Key.ec src/gui/Skin.ec src/gui/Timer.ec src/gui/typeEdit.ec \
-       src/gui/Window.ec src/net/dcom.ec src/net/HTTPFile.ec src/net/network.ec \
+       src/gfx/drivers/harfbuzz/harfbuzz-indic.c
+SOURCES2 = src/gfx/drivers/harfbuzz/harfbuzz-khmer.c \
+       src/gfx/drivers/harfbuzz/harfbuzz-myanmar.c src/gfx/drivers/harfbuzz/harfbuzz-open.c \
+       src/gfx/drivers/harfbuzz/harfbuzz-shaper.c src/gfx/drivers/harfbuzz/harfbuzz-stream.c \
+       src/gfx/drivers/harfbuzz/harfbuzz-tibetan.c src/gfx/drivers/harfbuzz/harfbuzz-impl.c \
+       src/gfx/drivers/harfbuzz/harfbuzz-thai.c $(if $(WINDOWS),src/gfx/drivers/Direct3D8DisplayDriver.ec,) \
+       $(if $(WINDOWS),src/gfx/drivers/Direct3D9DisplayDriver.ec,) $(if $(WINDOWS),src/gfx/drivers/DirectDrawDisplayDriver.ec,) \
+       $(if $(WINDOWS),src/gfx/drivers/GDIDisplayDriver.ec,) src/gfx/drivers/lfbBlit.ec src/gfx/drivers/lfbConvert.ec \
+       src/gfx/drivers/LFBDisplayDriver.ec $(if $(or $(LINUX),$(OSX)),src/gfx/drivers/NCursesDisplayDriver.ec,) \
+       src/gfx/drivers/OpenGLDisplayDriver.ec $(if $(WINDOWS),src/gfx/drivers/Win32BitmapPrinterDisplayDriver.ec,) \
+       $(if $(WINDOWS),src/gfx/drivers/Win32ConsoleDisplayDriver.ec,) $(if $(WINDOWS),src/gfx/drivers/Win32PrinterDisplayDriver.ec,) \
+       $(if $(LINUX),src/gfx/drivers/XDisplayDriver.ec,) src/gfx/Bitmap.ec src/gfx/BitmapResource.ec src/gfx/Color.ec \
+       src/gfx/Display.ec src/gfx/DisplaySystem.ec src/gfx/FontResource.ec src/gfx/Resource.ec \
+       src/gfx/Surface.ec src/gui/controls/Button.ec src/gui/controls/CalendarControl.ec \
+       src/gui/controls/DataBox.ec src/gui/controls/DropBox.ec src/gui/controls/EditBox.ec \
+       src/gui/controls/Label.ec src/gui/controls/ListBox.ec src/gui/controls/Menu.ec
+SOURCES3 = src/gui/controls/Picture.ec src/gui/controls/ProgressBar.ec \
+       src/gui/controls/ScrollBar.ec src/gui/controls/StatusBar.ec src/gui/controls/TabControl.ec \
+       src/gui/controls/PaneSplitter.ec src/gui/controls/Stacker.ec src/gui/controls/PathBox.ec \
+       src/gui/dialogs/ColorPicker.ec src/gui/dialogs/FileDialog.ec src/gui/dialogs/FindDialog.ec \
+       src/gui/dialogs/GoToDialog.ec src/gui/dialogs/MessageBox.ec src/gui/dialogs/ReplaceDialog.ec \
+       src/gui/dialogs/WindowList.ec $(if $(or $(LINUX),$(OSX)),src/gui/drivers/NCursesInterface.ec,) \
+       $(if $(WINDOWS),src/gui/drivers/Win32Interface.ec,) $(if $(WINDOWS),src/gui/drivers/Win32ConsoleInterface.ec,) \
+       $(if $(or $(LINUX),$(OSX)),src/gui/drivers/XInterface.ec,) src/gui/skins/TVisionSkin.ec src/gui/skins/WindowsSkin.ec src/gui/Anchor.ec \
+       src/gui/ClipBoard.ec src/gui/Cursor.ec src/gui/Desktop3D.ec src/gui/FormDesigner.ec \
+       src/gui/GuiApplication.ec src/gui/Interface.ec src/gui/Key.ec src/gui/Skin.ec src/gui/Timer.ec \
+       src/gui/typeEdit.ec src/gui/Window.ec src/net/dcom.ec src/net/HTTPFile.ec src/net/network.ec \
        src/net/NetworkClientFile.ec src/net/Service.ec src/net/Socket.ec src/com/containers/Array.ec \
        src/com/containers/AVLTree.ec src/com/containers/BuiltInContainer.ec src/com/containers/Container.ec \
        src/com/containers/CustomAVLTree.ec src/com/containers/LinkList.ec src/com/containers/List.ec \
-       src/com/containers/Map.ec src/com/BinaryTree.ec src/com/BTNode.ec src/com/dataTypes.ec
-SOURCES4 = src/com/instance.ec src/com/String.ec src/com/OldList.ec src/com/instance.c
+       src/com/containers/Map.ec src/com/BinaryTree.ec src/com/BTNode.ec
+SOURCES4 = src/com/dataTypes.ec src/com/instance.ec src/com/String.ec src/com/OldList.ec \
+       src/com/instance.c
 
 RESOURCES = $(RESOURCES1) $(RESOURCES2) $(RESOURCES3)
 RESOURCES1 = $(RES)actions/editFind.png $(RES)actions/folderNew.png \
@@ -444,6 +446,9 @@ $(OBJ)unicode.sym: src/sys/unicode.ec
 $(OBJ)units.sym: src/sys/units.ec
        $(ECP) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) -c src/sys/units.ec -o $(OBJ)units.sym
 
+$(OBJ)i18n.sym: src/sys/i18n.ec
+       $(ECP) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) -c src/sys/i18n.ec -o $(OBJ)i18n.sym
+
 $(OBJ)Cube.sym: src/gfx/3D/meshes/Cube.ec
        $(ECP) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) -c src/gfx/3D/meshes/Cube.ec -o $(OBJ)Cube.sym
 
@@ -800,6 +805,9 @@ $(OBJ)unicode.c: src/sys/unicode.ec $(OBJ)unicode.sym | $(SYMBOLS)
 $(OBJ)units.c: src/sys/units.ec $(OBJ)units.sym | $(SYMBOLS)
        $(ECC) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) $(FVISIBILITY) -c src/sys/units.ec -o $(OBJ)units.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)Cube.c: src/gfx/3D/meshes/Cube.ec $(OBJ)Cube.sym | $(SYMBOLS)
        $(ECC) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) $(FVISIBILITY) -c src/gfx/3D/meshes/Cube.ec -o $(OBJ)Cube.c -symbols $(OBJ)
 
@@ -1165,6 +1173,9 @@ $(OBJ)DualPipe.c.o: src/sys/DualPipe.c
 $(OBJ)System.c.o: src/sys/System.c
        $(CC) $(CFLAGS) -c src/sys/System.c -o $(OBJ)System.c.o
 
+$(OBJ)i18n.o: $(OBJ)i18n.c
+       $(CC) $(CFLAGS) $(FVISIBILITY) -c $(OBJ)i18n.c -o $(OBJ)i18n.o
+
 $(OBJ)Cube.o: $(OBJ)Cube.c
        $(CC) $(CFLAGS) $(FVISIBILITY) -c $(OBJ)Cube.c -o $(OBJ)Cube.o
 
index 343f200..be2944f 100644 (file)
@@ -140,7 +140,7 @@ from wherever you obtained them.",
                "../deps/jpeg-6b/obj/release.$(PLATFORM)",
                "../deps/libpng-1.4.0/obj/release.$(PLATFORM)",
                "../deps/libungif-4.1.1/obj/release.$(PLATFORM)",
-               "../deps/freetype-2.3.5/obj/release.$(PLATFORM)"
+               "../deps/freetype-2.3.12/obj/release.$(PLATFORM)"
             ]
          }
       },
@@ -500,7 +500,17 @@ from wherever you obtained them.",
                         }
                      ]
                   },
-                  "i18n.ec"
+                  {
+                     "FileName" : "i18n.ec",
+                     "Configurations" : [
+                        {
+                           "Name" : "Bootstrap",
+                           "Options" : {
+                              "ExcludeFromBuild" : false
+                           }
+                        }
+                     ]
+                  }
                ],
                "Configurations" : [
                   {
@@ -996,6 +1006,23 @@ from wherever you obtained them.",
                                        }
                                     }
                                  ]
+                              },
+                              {
+                                 "Name" : "Bootstrap",
+                                 "Platforms" : [
+                                    {
+                                       "Name" : "linux",
+                                       "Options" : {
+                                          "ExcludeFromBuild" : true
+                                       }
+                                    },
+                                    {
+                                       "Name" : "apple",
+                                       "Options" : {
+                                          "ExcludeFromBuild" : true
+                                       }
+                                    }
+                                 ]
                               }
                            ]
                         },
@@ -1342,6 +1369,12 @@ from wherever you obtained them.",
                                        "Options" : {
                                           "ExcludeFromBuild" : true
                                        }
+                                    },
+                                    {
+                                       "Name" : "apple",
+                                       "Options" : {
+                                          "ExcludeFromBuild" : true
+                                       }
                                     }
                                  ]
                               }
@@ -1448,6 +1481,12 @@ from wherever you obtained them.",
                                        "Options" : {
                                           "ExcludeFromBuild" : true
                                        }
+                                    },
+                                    {
+                                       "Name" : "apple",
+                                       "Options" : {
+                                          "ExcludeFromBuild" : true
+                                       }
                                     }
                                  ]
                               }
index 7061b96..74b3026 100644 (file)
@@ -1,6 +1,10 @@
 import "File"
 import "Map"
 
+#ifndef ECERE_BOOTSTRAP
+#define FileOpen FileOpenBuffered
+#endif
+
 Map<String, Map<String, String>> moduleMaps { };
 
 #define SWAP_DWORD(dword) ((((unsigned int)(dword) & 0x000000ff) << 24) \
@@ -41,16 +45,16 @@ public dllexport void LoadTranslatedStrings(Module module, char * name)
       sprintf(fileName, "<:%s>/locale/%s/LC_MESSAGES/%s.mo", module.name, locale, name);
    else
       sprintf(fileName, ":locale/%s/LC_MESSAGES/%s.mo", locale, name);
-   f = FileOpenBuffered(fileName, read);
+   f = FileOpen(fileName, read);
    if(!f)
    {
       sprintf(fileName, "locale/%s/LC_MESSAGES/%s.mo", locale, name);
-      f = FileOpenBuffered(fileName, read);
+      f = FileOpen(fileName, read);
    }
    if(!f)
    {
       sprintf(fileName, "/usr/share/locale/%s/LC_MESSAGES/%s.mo", locale, name);
-      f = FileOpenBuffered(fileName, read);
+      f = FileOpen(fileName, read);
    }
    if(f)
    {