Proper l10n for date/time
parent
14e2910f83
commit
139592bc00
|
@ -1813,9 +1813,13 @@ void CApplication::SetLanguage(Language language)
|
||||||
|
|
||||||
char* defaultLocale = setlocale(LC_ALL, ""); // Load system locale
|
char* defaultLocale = setlocale(LC_ALL, ""); // Load system locale
|
||||||
GetLogger()->Debug("Default system locale: %s\n", defaultLocale);
|
GetLogger()->Debug("Default system locale: %s\n", defaultLocale);
|
||||||
|
if (!locale.empty()) // Override system locale?
|
||||||
|
{
|
||||||
|
setlocale(LC_ALL, locale.c_str());
|
||||||
|
}
|
||||||
setlocale(LC_NUMERIC, "C"); // Force numeric locale to "C" (fixes decimal point problems)
|
setlocale(LC_NUMERIC, "C"); // Force numeric locale to "C" (fixes decimal point problems)
|
||||||
char* systemLocale = setlocale(LC_ALL, nullptr); // Get current locale configuration
|
std::string systemLocale = setlocale(LC_ALL, nullptr); // Get current locale configuration
|
||||||
GetLogger()->Debug("Setting locale: %s\n", systemLocale);
|
GetLogger()->Debug("Setting locale: %s\n", systemLocale.c_str());
|
||||||
// Update C++ locale
|
// Update C++ locale
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
|
@ -186,55 +186,6 @@ char GetToLower(char letter)
|
||||||
return tolower(letter);
|
return tolower(letter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Converting time to string.
|
|
||||||
|
|
||||||
void TimeToAscii(time_t time, char *buffer)
|
|
||||||
{
|
|
||||||
struct tm when;
|
|
||||||
int year;
|
|
||||||
|
|
||||||
when = *localtime(&time);
|
|
||||||
year = when.tm_year+1900;
|
|
||||||
if ( year < 2000 ) year -= 1900;
|
|
||||||
else year -= 2000;
|
|
||||||
char format[10];
|
|
||||||
int hour;
|
|
||||||
|
|
||||||
hour = when.tm_hour; // 0..23
|
|
||||||
if ( hour < 12 ) // morning?
|
|
||||||
{
|
|
||||||
strcpy(format, "am");
|
|
||||||
}
|
|
||||||
else // afternoon?
|
|
||||||
{
|
|
||||||
strcpy(format, "pm");
|
|
||||||
hour -= 12; // 0..11
|
|
||||||
}
|
|
||||||
if ( hour == 0 ) hour = 12;
|
|
||||||
|
|
||||||
sprintf(buffer, "%.2d.%.2d.%.2d %.2d:%.2d %s",
|
|
||||||
when.tm_mon+1, when.tm_mday, year,
|
|
||||||
hour, when.tm_min, format);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Converting time to string.
|
|
||||||
|
|
||||||
void TimeToAsciiClean(time_t time, char *buffer)
|
|
||||||
{
|
|
||||||
struct tm when;
|
|
||||||
int year;
|
|
||||||
|
|
||||||
when = *localtime(&time);
|
|
||||||
year = when.tm_year+1900;
|
|
||||||
if ( year < 2000 ) year -= 1900;
|
|
||||||
else year -= 2000;
|
|
||||||
|
|
||||||
sprintf(buffer, "%.2d%.2d%.2d%.2d%.2d",
|
|
||||||
year, when.tm_mon+1, when.tm_mday,
|
|
||||||
when.tm_hour, when.tm_min);
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string TimeFormat(float time)
|
std::string TimeFormat(float time)
|
||||||
{
|
{
|
||||||
int minutes = floor(time/60);
|
int minutes = floor(time/60);
|
||||||
|
@ -254,8 +205,3 @@ void AddExt(char* filename, const char* ext)
|
||||||
if ( strchr(filename, '.') != nullptr ) return; // already an extension?
|
if ( strchr(filename, '.') != nullptr ) return; // already an extension?
|
||||||
strcat(filename, ext);
|
strcat(filename, ext);
|
||||||
}
|
}
|
||||||
|
|
||||||
int GetCurrentTimestamp()
|
|
||||||
{
|
|
||||||
return std::chrono::seconds(std::time(nullptr)).count();
|
|
||||||
}
|
|
||||||
|
|
|
@ -31,10 +31,6 @@ extern char GetNoAccent(char letter);
|
||||||
extern char GetToUpper(char letter);
|
extern char GetToUpper(char letter);
|
||||||
extern char GetToLower(char letter);
|
extern char GetToLower(char letter);
|
||||||
|
|
||||||
extern void TimeToAscii(time_t time, char *buffer);
|
|
||||||
extern void TimeToAsciiClean(time_t time, char *buffer);
|
|
||||||
extern std::string TimeFormat(float time);
|
extern std::string TimeFormat(float time);
|
||||||
|
|
||||||
extern void AddExt(char* filename, const char* ext);
|
extern void AddExt(char* filename, const char* ext);
|
||||||
|
|
||||||
extern int GetCurrentTimestamp();
|
|
||||||
|
|
|
@ -50,6 +50,10 @@ CLevelParserParam::CLevelParserParam(int value)
|
||||||
: m_value(boost::lexical_cast<std::string>(value))
|
: m_value(boost::lexical_cast<std::string>(value))
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
CLevelParserParam::CLevelParserParam(long value)
|
||||||
|
: m_value(boost::lexical_cast<std::string>(value))
|
||||||
|
{}
|
||||||
|
|
||||||
CLevelParserParam::CLevelParserParam(float value)
|
CLevelParserParam::CLevelParserParam(float value)
|
||||||
: m_value(boost::lexical_cast<std::string>(value))
|
: m_value(boost::lexical_cast<std::string>(value))
|
||||||
{}
|
{}
|
||||||
|
|
|
@ -54,6 +54,7 @@ public:
|
||||||
//! Create param with given value
|
//! Create param with given value
|
||||||
//@{
|
//@{
|
||||||
CLevelParserParam(int value);
|
CLevelParserParam(int value);
|
||||||
|
CLevelParserParam(long value);
|
||||||
CLevelParserParam(float value);
|
CLevelParserParam(float value);
|
||||||
CLevelParserParam(std::string value);
|
CLevelParserParam(std::string value);
|
||||||
CLevelParserParam(bool value);
|
CLevelParserParam(bool value);
|
||||||
|
|
|
@ -4646,7 +4646,7 @@ bool CRobotMain::IOWriteScene(std::string filename, std::string filecbot, std::s
|
||||||
|
|
||||||
|
|
||||||
line = MakeUnique<CLevelParserLine>("Created");
|
line = MakeUnique<CLevelParserLine>("Created");
|
||||||
line->AddParam("date", MakeUnique<CLevelParserParam>(GetCurrentTimestamp()));
|
line->AddParam("date", MakeUnique<CLevelParserParam>(time(nullptr)));
|
||||||
levelParser.AddLine(std::move(line));
|
levelParser.AddLine(std::move(line));
|
||||||
|
|
||||||
line = MakeUnique<CLevelParserLine>("Mission");
|
line = MakeUnique<CLevelParserLine>("Mission");
|
||||||
|
@ -5700,7 +5700,8 @@ void CRobotMain::Autosave()
|
||||||
std::string dir = m_playerProfile->GetSaveFile("autosave" + boost::lexical_cast<std::string>(id));
|
std::string dir = m_playerProfile->GetSaveFile("autosave" + boost::lexical_cast<std::string>(id));
|
||||||
|
|
||||||
char timestr[100];
|
char timestr[100];
|
||||||
TimeToAscii(time(nullptr), timestr);
|
time_t now = time(nullptr);
|
||||||
|
strftime(timestr, 99, "%x %X", localtime(&now));
|
||||||
std::string info = std::string("[AUTOSAVE] ")+timestr;
|
std::string info = std::string("[AUTOSAVE] ")+timestr;
|
||||||
|
|
||||||
m_playerProfile->SaveScene(dir, info);
|
m_playerProfile->SaveScene(dir, info);
|
||||||
|
|
|
@ -81,7 +81,7 @@ void CScreenIO::IOReadName()
|
||||||
}
|
}
|
||||||
|
|
||||||
time(&now);
|
time(&now);
|
||||||
TimeToAsciiClean(now, line);
|
strftime(line, 99, "%y%m%d%H%M", localtime(&now));
|
||||||
sprintf(name, "%s - %s %d", line, resume.c_str(), m_main->GetLevelRank());
|
sprintf(name, "%s - %s %d", line, resume.c_str(), m_main->GetLevelRank());
|
||||||
|
|
||||||
pe->SetText(name);
|
pe->SetText(name);
|
||||||
|
|
|
@ -1282,9 +1282,9 @@ void CStudio::AdjustDialog()
|
||||||
{
|
{
|
||||||
pli->SetPos(ppos);
|
pli->SetPos(ppos);
|
||||||
pli->SetDim(ddim);
|
pli->SetDim(ddim);
|
||||||
pli->SetTabs(0, ddim.x-(50.0f+130.0f+16.0f)/640.0f);
|
pli->SetTabs(0, ddim.x-(50.0f+140.0f+16.0f)/640.0f);
|
||||||
pli->SetTabs(1, 50.0f/640.0f, Gfx::TEXT_ALIGN_RIGHT);
|
pli->SetTabs(1, 50.0f/640.0f, Gfx::TEXT_ALIGN_RIGHT);
|
||||||
pli->SetTabs(2, 130.0f/640.0f);
|
pli->SetTabs(2, 140.0f/640.0f);
|
||||||
//? pli->ShowSelect();
|
//? pli->ShowSelect();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1575,7 +1575,7 @@ void CStudio::UpdateDialogList()
|
||||||
CWindow* pw;
|
CWindow* pw;
|
||||||
CList* pl;
|
CList* pl;
|
||||||
int i = 0;
|
int i = 0;
|
||||||
char time[100];
|
char timestr[100];
|
||||||
|
|
||||||
pw = static_cast< CWindow* >(m_interface->SearchControl(EVENT_WINDOW9));
|
pw = static_cast< CWindow* >(m_interface->SearchControl(EVENT_WINDOW9));
|
||||||
if ( pw == nullptr ) return;
|
if ( pw == nullptr ) return;
|
||||||
|
@ -1590,8 +1590,9 @@ void CStudio::UpdateDialogList()
|
||||||
for (auto& prog : programs)
|
for (auto& prog : programs)
|
||||||
{
|
{
|
||||||
std::ostringstream temp;
|
std::ostringstream temp;
|
||||||
TimeToAscii(CResourceManager::GetLastModificationTime(SearchDirectory(false) + prog), time);
|
time_t now = CResourceManager::GetLastModificationTime(SearchDirectory(false) + prog);
|
||||||
temp << prog << '\t' << CResourceManager::GetFileSize(SearchDirectory(false) + prog) << " \t" << time;
|
strftime(timestr, 99, "%x %X", localtime(&now));
|
||||||
|
temp << prog << '\t' << CResourceManager::GetFileSize(SearchDirectory(false) + prog) << " \t" << timestr;
|
||||||
pl->SetItemName(i++, temp.str().c_str());
|
pl->SetItemName(i++, temp.str().c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue