mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
Fix gettext on MSVC
This commit is contained in:
parent
e102cbd840
commit
d302629392
3 changed files with 31 additions and 25 deletions
|
@ -26,24 +26,24 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||
#include "log.h"
|
||||
|
||||
#if USE_GETTEXT && defined(_MSC_VER)
|
||||
#include <WinNls.h>
|
||||
#include <windows.h>
|
||||
#include <map>
|
||||
#include <direct.h>
|
||||
#include "filesys.h"
|
||||
|
||||
#define setlocale(category,localename) \
|
||||
setlocale(category,MSVC_LocaleLookup(localename))
|
||||
#define setlocale(category, localename) \
|
||||
setlocale(category, MSVC_LocaleLookup(localename))
|
||||
|
||||
static std::map<std::wstring,std::wstring> glb_supported_locales;
|
||||
static std::map<std::wstring, std::wstring> glb_supported_locales;
|
||||
|
||||
/******************************************************************************/
|
||||
BOOL CALLBACK UpdateLocaleCallback(LPTSTR pStr)
|
||||
{
|
||||
char* endptr = 0;
|
||||
int LOCALEID = strtol(pStr,&endptr,16);
|
||||
int LOCALEID = strtol(pStr, &endptr,16);
|
||||
|
||||
wchar_t buffer[LOCALE_NAME_MAX_LENGTH];
|
||||
memset(buffer,0,sizeof(buffer));
|
||||
memset(buffer, 0, sizeof(buffer));
|
||||
if (GetLocaleInfoW(
|
||||
LOCALEID,
|
||||
LOCALE_SISO639LANGNAME,
|
||||
|
@ -52,7 +52,7 @@ BOOL CALLBACK UpdateLocaleCallback(LPTSTR pStr)
|
|||
|
||||
std::wstring name = buffer;
|
||||
|
||||
memset(buffer,0,sizeof(buffer));
|
||||
memset(buffer, 0, sizeof(buffer));
|
||||
GetLocaleInfoW(
|
||||
LOCALEID,
|
||||
LOCALE_SISO3166CTRYNAME,
|
||||
|
@ -61,7 +61,7 @@ BOOL CALLBACK UpdateLocaleCallback(LPTSTR pStr)
|
|||
|
||||
std::wstring country = buffer;
|
||||
|
||||
memset(buffer,0,sizeof(buffer));
|
||||
memset(buffer, 0, sizeof(buffer));
|
||||
GetLocaleInfoW(
|
||||
LOCALEID,
|
||||
LOCALE_SENGLISHLANGUAGENAME,
|
||||
|
@ -96,7 +96,7 @@ const char* MSVC_LocaleLookup(const char* raw_shortname) {
|
|||
}
|
||||
|
||||
if (first_use) {
|
||||
EnumSystemLocalesA(UpdateLocaleCallback,LCID_SUPPORTED | LCID_ALTERNATE_SORTS);
|
||||
EnumSystemLocalesA(UpdateLocaleCallback, LCID_SUPPORTED | LCID_ALTERNATE_SORTS);
|
||||
first_use = false;
|
||||
}
|
||||
|
||||
|
@ -148,8 +148,8 @@ void init_gettext(const char *path, const std::string &configured_language) {
|
|||
if (current_language_var != configured_language) {
|
||||
STARTUPINFO startupinfo;
|
||||
PROCESS_INFORMATION processinfo;
|
||||
memset(&startupinfo,0,sizeof(startupinfo));
|
||||
memset(&processinfo,0,sizeof(processinfo));
|
||||
memset(&startupinfo, 0, sizeof(startupinfo));
|
||||
memset(&processinfo, 0, sizeof(processinfo));
|
||||
errorstream << "MSVC localization workaround active restating minetest in new environment!" << std::endl;
|
||||
|
||||
std::string parameters = "";
|
||||
|
@ -169,7 +169,7 @@ void init_gettext(const char *path, const std::string &configured_language) {
|
|||
|
||||
/** users may start by short name in commandline without extention **/
|
||||
std::string appname = argv[0];
|
||||
if (appname.substr(appname.length() -4) != ".exe") {
|
||||
if (appname.substr(appname.length() - 4) != ".exe") {
|
||||
appname += ".exe";
|
||||
}
|
||||
|
||||
|
@ -260,7 +260,7 @@ void init_gettext(const char *path, const std::string &configured_language) {
|
|||
/* no matter what locale is used we need number format to be "C" */
|
||||
/* to ensure formspec parameters are evaluated correct! */
|
||||
|
||||
setlocale(LC_NUMERIC,"C");
|
||||
setlocale(LC_NUMERIC, "C");
|
||||
infostream << "Message locale is now set to: "
|
||||
<< setlocale(LC_ALL, 0) << std::endl;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue