00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #include "i18n.h"
00024 #include <string>
00025 #include <stdio.h>
00026 #include <stdarg.h>
00027 #include "debug.h"
00028 #include "../config.h"
00029 #include "../game/config.h"
00030
00031
00032 #ifdef WIN32
00033 #define PACKAGE "Wormux"
00034 #endif
00035
00036 #define GETTEXT_DOMAIN PACKAGE
00037
00038 std::string Format(const char *format, ...){
00039 const int bufferSize = 256;
00040 char buffer[bufferSize];
00041 va_list argp;
00042 std::string result;
00043
00044 va_start(argp, format);
00045
00046 int size = vsnprintf(buffer, bufferSize, format, argp);
00047
00048 if( size < 0 )
00049 Error( "Error formating string...");
00050
00051 if( size < bufferSize)
00052 result = std::string(buffer);
00053 else{
00054 char *bigBuffer = (char *)malloc( (size + 1) * sizeof(char) );
00055 if( bigBuffer == NULL)
00056 Error( "Out of memory !");
00057
00058 size = vsnprintf(bigBuffer, size + 1, format, argp);
00059 if( size < 0 )
00060 Error( "Error formating string...");
00061
00062 result = std::string(bigBuffer);
00063 free(bigBuffer);
00064 }
00065
00066 va_end(argp);
00067
00068 return result;
00069 }
00070
00071 void I18N_SetDir(const std::string &dir){
00072 bindtextdomain(GETTEXT_DOMAIN, dir.c_str());
00073 bind_textdomain_codeset (GETTEXT_DOMAIN, "UTF-8");
00074 }
00075
00076 void InitI18N(const std::string &dir){
00077 setlocale (LC_ALL, "");
00078 I18N_SetDir (dir);
00079 textdomain(GETTEXT_DOMAIN);
00080 }
00081