From 39cf857db9b926c47f545cba1d7113267260c40e Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Mon, 13 Jun 2011 16:56:37 +0200 Subject: Internationalization -- initial step, make _ return a std::string to prevent memory leaks --- src/externui.h | 1 + src/qt/bitcoin.cpp | 8 ++++++++ src/qt/transactiondesc.cpp | 1 + src/rpc.cpp | 4 ++-- src/util.cpp | 10 ++++------ src/util.h | 8 ++++---- 6 files changed, 20 insertions(+), 12 deletions(-) diff --git a/src/externui.h b/src/externui.h index e58ccc2242..3243164c10 100644 --- a/src/externui.h +++ b/src/externui.h @@ -41,5 +41,6 @@ extern bool ThreadSafeAskFee(int64 nFeeRequired, const std::string& strCaption, extern void CalledSetStatusBar(const std::string& strText, int nField); extern void UIThreadCall(boost::function0 fn); extern void MainFrameRepaint(); +extern std::string _(const char* psz); #endif diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp index e003267426..a71c348254 100644 --- a/src/qt/bitcoin.cpp +++ b/src/qt/bitcoin.cpp @@ -87,6 +87,14 @@ void MainFrameRepaint() { } +/* + Translate string to current locale using Qt. + */ +std::string _(const char* psz) +{ + return QCoreApplication::translate("bitcoin-core", psz).toStdString(); +} + int main(int argc, char *argv[]) { QApplication app(argc, argv); diff --git a/src/qt/transactiondesc.cpp b/src/qt/transactiondesc.cpp index 4d8a55e99a..a9e55d5a6a 100644 --- a/src/qt/transactiondesc.cpp +++ b/src/qt/transactiondesc.cpp @@ -2,6 +2,7 @@ #include "guiutil.h" #include "main.h" +#include "externui.h" #include diff --git a/src/rpc.cpp b/src/rpc.cpp index 530bef4a43..ca88bec91b 100644 --- a/src/rpc.cpp +++ b/src/rpc.cpp @@ -40,13 +40,13 @@ Object JSONRPCError(int code, const string& message) } -void PrintConsole(const char* format, ...) +void PrintConsole(const std::string &format, ...) { char buffer[50000]; int limit = sizeof(buffer); va_list arg_ptr; va_start(arg_ptr, format); - int ret = _vsnprintf(buffer, limit, format, arg_ptr); + int ret = _vsnprintf(buffer, limit, format.c_str(), arg_ptr); va_end(arg_ptr); if (ret < 0 || ret >= limit) { diff --git a/src/util.cpp b/src/util.cpp index 6199109289..fd4a9e459c 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -255,8 +255,7 @@ int my_snprintf(char* buffer, size_t limit, const char* format, ...) return ret; } - -string strprintf(const char* format, ...) +string strprintf(const std::string &format, ...) { char buffer[50000]; char* p = buffer; @@ -266,7 +265,7 @@ string strprintf(const char* format, ...) { va_list arg_ptr; va_start(arg_ptr, format); - ret = _vsnprintf(p, limit, format, arg_ptr); + ret = _vsnprintf(p, limit, format.c_str(), arg_ptr); va_end(arg_ptr); if (ret >= 0 && ret < limit) break; @@ -283,14 +282,13 @@ string strprintf(const char* format, ...) return str; } - -bool error(const char* format, ...) +bool error(const std::string &format, ...) { char buffer[50000]; int limit = sizeof(buffer); va_list arg_ptr; va_start(arg_ptr, format); - int ret = _vsnprintf(buffer, limit, format, arg_ptr); + int ret = _vsnprintf(buffer, limit, format.c_str(), arg_ptr); va_end(arg_ptr); if (ret < 0 || ret >= limit) { diff --git a/src/util.h b/src/util.h index 25e1f77fd7..4759e8c1ce 100644 --- a/src/util.h +++ b/src/util.h @@ -140,14 +140,14 @@ inline int myclosesocket(SOCKET& hSocket) return ret; } #define closesocket(s) myclosesocket(s) - +#if 0 #ifndef GUI inline const char* _(const char* psz) { return psz; } #endif - +#endif @@ -177,8 +177,8 @@ void RandAddSeed(); void RandAddSeedPerfmon(); int OutputDebugStringF(const char* pszFormat, ...); int my_snprintf(char* buffer, size_t limit, const char* format, ...); -std::string strprintf(const char* format, ...); -bool error(const char* format, ...); +std::string strprintf(const std::string &format, ...); +bool error(const std::string &format, ...); void LogException(std::exception* pex, const char* pszThread); void PrintException(std::exception* pex, const char* pszThread); void PrintExceptionContinue(std::exception* pex, const char* pszThread); -- cgit v1.2.3