STORM-1221 FIXED Hard coded dates made localizable under Group Profile Land/Assets.
Added a function for parsing a date string of specific format. Added strings defining the date format in Group Profile Land/Assets that should be localized.master
parent
4dc0850da7
commit
cf8c7701df
|
|
@ -27,10 +27,16 @@
|
|||
|
||||
#include "lldateutil.h"
|
||||
|
||||
#include <boost/date_time/gregorian/gregorian.hpp>
|
||||
#include <boost/date_time/posix_time/ptime.hpp>
|
||||
|
||||
// Linden libraries
|
||||
#include "lltrans.h"
|
||||
#include "llui.h"
|
||||
|
||||
using namespace boost::gregorian;
|
||||
using namespace boost::posix_time;
|
||||
|
||||
static S32 DAYS_PER_MONTH_NOLEAP[] =
|
||||
{ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
|
||||
static S32 DAYS_PER_MONTH_LEAP[] =
|
||||
|
|
@ -186,3 +192,24 @@ std::string LLDateUtil::ageFromDate(const std::string& date_string)
|
|||
//{
|
||||
// return ageFromDateISO(date_string, LLDate::now());
|
||||
//}
|
||||
|
||||
S32 LLDateUtil::secondsSinceEpochFromString(const std::string& format, const std::string& str)
|
||||
{
|
||||
date_input_facet *facet = new date_input_facet(format);
|
||||
|
||||
std::stringstream ss;
|
||||
ss << str;
|
||||
ss.imbue(std::locale(ss.getloc(), facet));
|
||||
|
||||
date d;
|
||||
ss >> d;
|
||||
|
||||
ptime time_t_date(d);
|
||||
ptime time_t_epoch(date(1970,1,1));
|
||||
|
||||
// We assume that the date defined by str is in UTC, so the difference
|
||||
// is calculated with no time zone corrections.
|
||||
time_duration diff = time_t_date - time_t_epoch;
|
||||
|
||||
return diff.total_seconds();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -69,6 +69,20 @@ namespace LLDateUtil
|
|||
//std::string ageFromDateISO(const std::string& date_string);
|
||||
|
||||
//std::string ageFromDate(S32 born_year, S32 born_month, S32 born_day, const LLDate& now);
|
||||
|
||||
/**
|
||||
* Convert a string of a specified date format into seconds since the Epoch.
|
||||
*
|
||||
* Many of the format flags are those used by strftime(...), but not all.
|
||||
* For the full list of supported time format specifiers
|
||||
* see http://www.boost.org/doc/libs/1_47_0/doc/html/date_time/date_time_io.html#date_time.format_flags
|
||||
*
|
||||
* @param format Format characters string. Example: "%A %b %d, %Y"
|
||||
* @param str Date string containing the time in specified format.
|
||||
*
|
||||
* @return Number of seconds since 01/01/1970 UTC.
|
||||
*/
|
||||
S32 secondsSinceEpochFromString(const std::string& format, const std::string& str);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@
|
|||
#include "llqueryflags.h"
|
||||
|
||||
#include "llagent.h"
|
||||
#include "lldateutil.h"
|
||||
#include "lliconctrl.h"
|
||||
#include "llfloaterreg.h"
|
||||
#include "lllineeditor.h"
|
||||
|
|
@ -1056,6 +1057,14 @@ void LLGroupMoneyDetailsTabEventHandler::processReply(LLMessageSystem* msg,
|
|||
msg->getS32Fast(_PREHASH_MoneyData, _PREHASH_CurrentInterval, current_interval );
|
||||
msg->getStringFast(_PREHASH_MoneyData, _PREHASH_StartDate, start_date);
|
||||
|
||||
std::string time_str = LLTrans::getString("GroupMoneyDate");
|
||||
LLSD substitution;
|
||||
|
||||
// We don't do time zone corrections of the calculated number of seconds
|
||||
// because we don't have a full time stamp, only a date.
|
||||
substitution["datetime"] = LLDateUtil::secondsSinceEpochFromString("%A %b %d, %Y", start_date);
|
||||
LLStringUtil::format (time_str, substitution);
|
||||
|
||||
if ( interval_days != mImplementationp->mIntervalLength ||
|
||||
current_interval != mImplementationp->mCurrentInterval )
|
||||
{
|
||||
|
|
@ -1064,7 +1073,7 @@ void LLGroupMoneyDetailsTabEventHandler::processReply(LLMessageSystem* msg,
|
|||
return;
|
||||
}
|
||||
|
||||
std::string text = start_date;
|
||||
std::string text = time_str;
|
||||
text.append("\n\n");
|
||||
|
||||
S32 total_amount = 0;
|
||||
|
|
@ -1203,7 +1212,15 @@ void LLGroupMoneySalesTabEventHandler::processReply(LLMessageSystem* msg,
|
|||
// Start with the date.
|
||||
if (text == mImplementationp->mLoadingText)
|
||||
{
|
||||
text = start_date + "\n\n";
|
||||
std::string time_str = LLTrans::getString("GroupMoneyDate");
|
||||
LLSD substitution;
|
||||
|
||||
// We don't do time zone corrections of the calculated number of seconds
|
||||
// because we don't have a full time stamp, only a date.
|
||||
substitution["datetime"] = LLDateUtil::secondsSinceEpochFromString("%A %b %d, %Y", start_date);
|
||||
LLStringUtil::format (time_str, substitution);
|
||||
|
||||
text = time_str + "\n\n";
|
||||
}
|
||||
|
||||
S32 transactions = msg->getNumberOfBlocksFast(_PREHASH_HistoryData);
|
||||
|
|
@ -1408,12 +1425,26 @@ void LLGroupMoneyPlanningTabEventHandler::processReply(LLMessageSystem* msg,
|
|||
}
|
||||
|
||||
text.append(LLTrans::getString("SummaryForTheWeek"));
|
||||
text.append(start_date);
|
||||
|
||||
std::string date_format_str = LLTrans::getString("GroupPlanningDate");
|
||||
std::string time_str = date_format_str;
|
||||
LLSD substitution;
|
||||
// We don't do time zone corrections of the calculated number of seconds
|
||||
// because we don't have a full time stamp, only a date.
|
||||
substitution["datetime"] = LLDateUtil::secondsSinceEpochFromString("%m/%d/%Y", start_date);
|
||||
LLStringUtil::format (time_str, substitution);
|
||||
|
||||
text.append(time_str);
|
||||
|
||||
if (current_interval == 0)
|
||||
{
|
||||
text.append(LLTrans::getString("NextStipendDay"));
|
||||
text.append(next_stipend_date);
|
||||
|
||||
time_str = date_format_str;
|
||||
substitution["datetime"] = LLDateUtil::secondsSinceEpochFromString("%m/%d/%Y", next_stipend_date);
|
||||
LLStringUtil::format (time_str, substitution);
|
||||
|
||||
text.append(time_str);
|
||||
text.append("\n\n");
|
||||
text.append(llformat("%-24sL$%6d\n", LLTrans::getString("GroupMoneyBalance").c_str(), balance ));
|
||||
text.append(1, '\n');
|
||||
|
|
|
|||
|
|
@ -2238,6 +2238,7 @@ Returns a string with the requested data about the region
|
|||
<string name="Unknown">(Unknown)</string>
|
||||
<string name="SummaryForTheWeek" value="Summary for this week, beginning on " />
|
||||
<string name="NextStipendDay" value="The next stipend day is " />
|
||||
<string name="GroupPlanningDate">[mthnum,datetime,utc]/[day,datetime,utc]/[year,datetime,utc]</string>
|
||||
<string name="GroupIndividualShare" value=" Group Individual Share" />
|
||||
<string name="GroupColumn" value=" Group" />
|
||||
<string name="Balance">Balance</string>
|
||||
|
|
@ -2394,6 +2395,7 @@ Returns a string with the requested data about the region
|
|||
<string name="GroupMoneyBalance">Balance</string>
|
||||
<string name="GroupMoneyCredits">Credits</string>
|
||||
<string name="GroupMoneyDebits">Debits</string>
|
||||
<string name="GroupMoneyDate">[weekday,datetime,utc] [mth,datetime,utc] [day,datetime,utc], [year,datetime,utc]</string>
|
||||
|
||||
<!-- viewer object -->
|
||||
<string name="ViewerObjectContents">Contents</string>
|
||||
|
|
|
|||
Loading…
Reference in New Issue