diff options
Diffstat (limited to 'cpp/demo/IceGrid/icebox/HelloI.cpp')
-rw-r--r-- | cpp/demo/IceGrid/icebox/HelloI.cpp | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/cpp/demo/IceGrid/icebox/HelloI.cpp b/cpp/demo/IceGrid/icebox/HelloI.cpp index c2c0a037fa4..40736c95b78 100644 --- a/cpp/demo/IceGrid/icebox/HelloI.cpp +++ b/cpp/demo/IceGrid/icebox/HelloI.cpp @@ -20,5 +20,33 @@ HelloI::HelloI(const string& serviceName) : void HelloI::sayHello(const Ice::Current&) { - cout << "Hello from " << _serviceName << endl; +#ifdef _WIN32 + vector<wchar_t> buf; + buf.resize(1024); + DWORD val = GetEnvironmentVariableW(IceUtil::stringToWstring("LANG").c_str(), &buf[0], + static_cast<DWORD>(buf.size())); + string lang = (val > 0 && val < buf.size()) ? IceUtil::wstringToString(&buf[0]) : string("en"); +#else + char* val = getenv("LANG"); + string lang = val ? string(val) : "en"; +#endif + + string greeting = "Hello, "; + if(lang == "fr") + { + greeting = "Bonjour, "; + } + else if(lang == "de") + { + greeting = "Hallo, "; + } + else if(lang == "es") + { + greeting = "Hola, "; + } + else if(lang == "it") + { + greeting = "Ciao, "; + } + cout << greeting << _serviceName << endl; } |