MAINT-8180 Add the way to get default string despite of current localiztion
parent
6e445e82e2
commit
22050467f5
|
|
@ -36,6 +36,7 @@
|
|||
#include <map>
|
||||
|
||||
LLTrans::template_map_t LLTrans::sStringTemplates;
|
||||
LLTrans::template_map_t LLTrans::sDefaultStringTemplates;
|
||||
LLStringUtil::format_map_t LLTrans::sDefaultArgs;
|
||||
|
||||
struct StringDef : public LLInitParam::Block<StringDef>
|
||||
|
|
@ -76,7 +77,7 @@ bool LLTrans::parseStrings(LLXMLNodePtr &root, const std::set<std::string>& defa
|
|||
LL_ERRS() << "Problem reading strings: " << xml_filename << LL_ENDL;
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool default_strings_init = false;
|
||||
sStringTemplates.clear();
|
||||
sDefaultArgs.clear();
|
||||
|
||||
|
|
@ -86,7 +87,10 @@ bool LLTrans::parseStrings(LLXMLNodePtr &root, const std::set<std::string>& defa
|
|||
{
|
||||
LLTransTemplate xml_template(it->name, it->value);
|
||||
sStringTemplates[xml_template.mName] = xml_template;
|
||||
|
||||
if (!default_strings_init)
|
||||
{
|
||||
sDefaultStringTemplates[xml_template.mName] = xml_template;
|
||||
}
|
||||
std::set<std::string>::const_iterator iter = default_args.find(xml_template.mName);
|
||||
if (iter != default_args.end())
|
||||
{
|
||||
|
|
@ -96,6 +100,7 @@ bool LLTrans::parseStrings(LLXMLNodePtr &root, const std::set<std::string>& defa
|
|||
sDefaultArgs[name] = xml_template.mText;
|
||||
}
|
||||
}
|
||||
default_strings_init = true;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
@ -138,12 +143,17 @@ bool LLTrans::parseLanguageStrings(LLXMLNodePtr &root)
|
|||
static LLTrace::BlockTimerStatHandle FTM_GET_TRANS("Translate string");
|
||||
|
||||
//static
|
||||
std::string LLTrans::getString(const std::string &xml_desc, const LLStringUtil::format_map_t& msg_args)
|
||||
std::string LLTrans::getString(const std::string &xml_desc, const LLStringUtil::format_map_t& msg_args, bool def_string)
|
||||
{
|
||||
// Don't care about time as much as call count. Make sure we're not
|
||||
// calling LLTrans::getString() in an inner loop. JC
|
||||
LL_RECORD_BLOCK_TIME(FTM_GET_TRANS);
|
||||
|
||||
if (def_string)
|
||||
{
|
||||
return getDefString(xml_desc, msg_args);
|
||||
}
|
||||
|
||||
template_map_t::iterator iter = sStringTemplates.find(xml_desc);
|
||||
if (iter != sStringTemplates.end())
|
||||
{
|
||||
|
|
@ -161,13 +171,38 @@ std::string LLTrans::getString(const std::string &xml_desc, const LLStringUtil::
|
|||
}
|
||||
}
|
||||
|
||||
//static
|
||||
std::string LLTrans::getDefString(const std::string &xml_desc, const LLStringUtil::format_map_t& msg_args)
|
||||
{
|
||||
template_map_t::iterator iter = sDefaultStringTemplates.find(xml_desc);
|
||||
if (iter != sDefaultStringTemplates.end())
|
||||
{
|
||||
std::string text = iter->second.mText;
|
||||
LLStringUtil::format_map_t args = sDefaultArgs;
|
||||
args.insert(msg_args.begin(), msg_args.end());
|
||||
LLStringUtil::format(text, args);
|
||||
|
||||
return text;
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_WARNS_ONCE("configuration") << "Missing String in strings.xml: [" << xml_desc << "]" << LL_ENDL;
|
||||
return "MissingString(" + xml_desc + ")";
|
||||
}
|
||||
}
|
||||
|
||||
//static
|
||||
std::string LLTrans::getString(const std::string &xml_desc, const LLSD& msg_args)
|
||||
std::string LLTrans::getString(const std::string &xml_desc, const LLSD& msg_args, bool def_string)
|
||||
{
|
||||
// Don't care about time as much as call count. Make sure we're not
|
||||
// calling LLTrans::getString() in an inner loop. JC
|
||||
LL_RECORD_BLOCK_TIME(FTM_GET_TRANS);
|
||||
|
||||
if (def_string)
|
||||
{
|
||||
return getDefString(xml_desc, msg_args);
|
||||
}
|
||||
|
||||
template_map_t::iterator iter = sStringTemplates.find(xml_desc);
|
||||
if (iter != sStringTemplates.end())
|
||||
{
|
||||
|
|
@ -182,6 +217,23 @@ std::string LLTrans::getString(const std::string &xml_desc, const LLSD& msg_args
|
|||
}
|
||||
}
|
||||
|
||||
//static
|
||||
std::string LLTrans::getDefString(const std::string &xml_desc, const LLSD& msg_args)
|
||||
{
|
||||
template_map_t::iterator iter = sDefaultStringTemplates.find(xml_desc);
|
||||
if (iter != sDefaultStringTemplates.end())
|
||||
{
|
||||
std::string text = iter->second.mText;
|
||||
LLStringUtil::format(text, msg_args);
|
||||
return text;
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_WARNS_ONCE("configuration") << "Missing String in strings.xml: [" << xml_desc << "]" << LL_ENDL;
|
||||
return "MissingString(" + xml_desc + ")";
|
||||
}
|
||||
}
|
||||
|
||||
//static
|
||||
bool LLTrans::findString(std::string &result, const std::string &xml_desc, const LLStringUtil::format_map_t& msg_args)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -76,8 +76,10 @@ public:
|
|||
* @param args A list of substrings to replace in the string
|
||||
* @returns Translated string
|
||||
*/
|
||||
static std::string getString(const std::string &xml_desc, const LLStringUtil::format_map_t& args);
|
||||
static std::string getString(const std::string &xml_desc, const LLSD& args);
|
||||
static std::string getString(const std::string &xml_desc, const LLStringUtil::format_map_t& args, bool def_string = false);
|
||||
static std::string getDefString(const std::string &xml_desc, const LLStringUtil::format_map_t& args);
|
||||
static std::string getString(const std::string &xml_desc, const LLSD& args, bool def_string = false);
|
||||
static std::string getDefString(const std::string &xml_desc, const LLSD& args);
|
||||
static bool findString(std::string &result, const std::string &xml_desc, const LLStringUtil::format_map_t& args);
|
||||
static bool findString(std::string &result, const std::string &xml_desc, const LLSD& args);
|
||||
|
||||
|
|
@ -92,7 +94,7 @@ public:
|
|||
* @param xml_desc String's description
|
||||
* @returns Translated string
|
||||
*/
|
||||
static std::string getString(const std::string &xml_desc)
|
||||
static std::string getString(const std::string &xml_desc, bool def_string = false)
|
||||
{
|
||||
LLStringUtil::format_map_t empty;
|
||||
return getString(xml_desc, empty);
|
||||
|
|
@ -128,6 +130,7 @@ public:
|
|||
private:
|
||||
typedef std::map<std::string, LLTransTemplate > template_map_t;
|
||||
static template_map_t sStringTemplates;
|
||||
static template_map_t LLTrans::sDefaultStringTemplates;
|
||||
static LLStringUtil::format_map_t sDefaultArgs;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -3218,7 +3218,7 @@ LLSD LLAppViewer::getViewerInfo() const
|
|||
return info;
|
||||
}
|
||||
|
||||
std::string LLAppViewer::getViewerInfoString() const
|
||||
std::string LLAppViewer::getViewerInfoString(bool default_string) const
|
||||
{
|
||||
std::ostringstream support;
|
||||
|
||||
|
|
@ -3228,7 +3228,7 @@ std::string LLAppViewer::getViewerInfoString() const
|
|||
LLStringUtil::format_map_t args;
|
||||
|
||||
// allow the "Release Notes" URL label to be localized
|
||||
args["ReleaseNotes"] = LLTrans::getString("ReleaseNotes");
|
||||
args["ReleaseNotes"] = LLTrans::getString("ReleaseNotes", default_string);
|
||||
|
||||
for (LLSD::map_const_iterator ii(info.beginMap()), iend(info.endMap());
|
||||
ii != iend; ++ii)
|
||||
|
|
@ -3238,7 +3238,7 @@ std::string LLAppViewer::getViewerInfoString() const
|
|||
// Scalar value
|
||||
if (ii->second.isUndefined())
|
||||
{
|
||||
args[ii->first] = LLTrans::getString("none_text");
|
||||
args[ii->first] = LLTrans::getString("none_text", default_string);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -3257,101 +3257,37 @@ std::string LLAppViewer::getViewerInfoString() const
|
|||
}
|
||||
|
||||
// Now build the various pieces
|
||||
support << LLTrans::getString("AboutHeader", args);
|
||||
support << LLTrans::getString("AboutHeader", args, default_string);
|
||||
if (info.has("BUILD_CONFIG"))
|
||||
{
|
||||
support << "\n" << LLTrans::getString("BuildConfig", args);
|
||||
support << "\n" << LLTrans::getString("BuildConfig", args, default_string);
|
||||
}
|
||||
if (info.has("REGION"))
|
||||
{
|
||||
support << "\n\n" << LLTrans::getString("AboutPosition", args);
|
||||
support << "\n\n" << LLTrans::getString("AboutPosition", args, default_string);
|
||||
}
|
||||
support << "\n\n" << LLTrans::getString("AboutSystem", args);
|
||||
support << "\n\n" << LLTrans::getString("AboutSystem", args, default_string);
|
||||
support << "\n";
|
||||
if (info.has("GRAPHICS_DRIVER_VERSION"))
|
||||
{
|
||||
support << "\n" << LLTrans::getString("AboutDriver", args);
|
||||
support << "\n" << LLTrans::getString("AboutDriver", args, default_string);
|
||||
}
|
||||
support << "\n" << LLTrans::getString("AboutOGL", args);
|
||||
support << "\n\n" << LLTrans::getString("AboutSettings", args);
|
||||
support << "\n\n" << LLTrans::getString("AboutLibs", args);
|
||||
support << "\n" << LLTrans::getString("AboutOGL", args, default_string);
|
||||
support << "\n\n" << LLTrans::getString("AboutSettings", args, default_string);
|
||||
support << "\n\n" << LLTrans::getString("AboutLibs", args, default_string);
|
||||
if (info.has("COMPILER"))
|
||||
{
|
||||
support << "\n" << LLTrans::getString("AboutCompiler", args);
|
||||
support << "\n" << LLTrans::getString("AboutCompiler", args, default_string);
|
||||
}
|
||||
if (info.has("PACKETS_IN"))
|
||||
{
|
||||
support << '\n' << LLTrans::getString("AboutTraffic", args);
|
||||
support << '\n' << LLTrans::getString("AboutTraffic", args, default_string);
|
||||
}
|
||||
|
||||
// SLT timestamp
|
||||
LLSD substitution;
|
||||
substitution["datetime"] = (S32)time(NULL);//(S32)time_corrected();
|
||||
support << "\n" << LLTrans::getString("AboutTime", substitution);
|
||||
|
||||
return support.str();
|
||||
}
|
||||
|
||||
std::string LLAppViewer::getShortViewerInfoString() const
|
||||
{
|
||||
std::ostringstream support;
|
||||
LLSD info(getViewerInfo());
|
||||
|
||||
support << info["CHANNEL"].asString() << " ";
|
||||
support << info["VIEWER_VERSION_STR"].asString() << " (" << info["ADDRESS_SIZE"].asString() << "bit)";
|
||||
if (info.has("BUILD_CONFIG"))
|
||||
{
|
||||
support << "\n" << "Build Configuration " << info["BUILD_CONFIG"].asString();
|
||||
}
|
||||
if (info.has("REGION"))
|
||||
{
|
||||
support << "\n\n" << "You are at " << ll_vector3_from_sd(info["POSITION_LOCAL"]) << " in " << info["REGION"].asString();
|
||||
support << " located at " << info["HOSTNAME"].asString() << " (" << info["HOSTIP"].asString() << ")";
|
||||
support << "\n" << "SLURL: " << info["SLURL"].asString();
|
||||
support << "\n" << "(Global coordinates " << ll_vector3_from_sd(info["POSITION"]) << ")";
|
||||
support << "\n" << info["SERVER_VERSION"].asString();
|
||||
}
|
||||
|
||||
support << "\n\n" << "CPU: " << info["CPU"].asString();
|
||||
support << "\n" << "Memory: " << info["MEMORY_MB"].asString() << " MB";
|
||||
support << "\n" << "OS: " << info["OS_VERSION"].asString();
|
||||
support << "\n" << "Graphics Card: " << info["GRAPHICS_CARD"].asString() << " (" << info["GRAPHICS_CARD_VENDOR"].asString() << ")";
|
||||
|
||||
if (info.has("GRAPHICS_DRIVER_VERSION"))
|
||||
{
|
||||
support << "\n" << "Windows Graphics Driver Version: " << info["GRAPHICS_DRIVER_VERSION"].asString();
|
||||
}
|
||||
|
||||
support << "\n" << "OpenGL Version: " << info["OPENGL_VERSION"].asString();
|
||||
|
||||
support << "\n\n" << "Window size:" << info["WINDOW_WIDTH"].asString() << "x" << info["WINDOW_HEIGHT"].asString();
|
||||
support << "\n" << "Language: " << LLUI::getLanguage();
|
||||
support << "\n" << "Font Size Adjustment: " << info["FONT_SIZE_ADJUSTMENT"].asString() << "pt";
|
||||
support << "\n" << "UI Scaling: " << info["UI_SCALE"].asString();
|
||||
support << "\n" << "Draw distance: " << info["DRAW_DISTANCE"].asString();
|
||||
support << "\n" << "Bandwidth: " << info["NET_BANDWITH"].asString() << "kbit/s";
|
||||
support << "\n" << "LOD factor: " << info["LOD_FACTOR"].asString();
|
||||
support << "\n" << "Render quality: " << info["RENDER_QUALITY"].asString() << " / 7";
|
||||
support << "\n" << "ALM: " << info["GPU_SHADERS"].asString();
|
||||
support << "\n" << "Texture memory: " << info["TEXTURE_MEMORY"].asString() << "MB";
|
||||
support << "\n" << "VFS (cache) creation time: " << info["VFS_TIME"].asString();
|
||||
|
||||
support << "\n\n" << "J2C Decoder: " << info["J2C_VERSION"].asString();
|
||||
support << "\n" << "Audio Driver: " << info["AUDIO_DRIVER_VERSION"].asString();
|
||||
support << "\n" << "LLCEFLib/CEF: " << info["LLCEFLIB_VERSION"].asString();
|
||||
support << "\n" << "LibVLC: " << info["LIBVLC_VERSION"].asString();
|
||||
support << "\n" << "Voice Server: " << info["VOICE_VERSION"].asString();
|
||||
|
||||
if (info.has("PACKETS_IN"))
|
||||
{
|
||||
support << "\n" << "Packets Lost: " << info["PACKETS_LOST"].asInteger() << "/" << info["PACKETS_IN"].asInteger();
|
||||
F32 packets_pct = info["PACKETS_PCT"].asReal();
|
||||
support << " (" << ll_round(packets_pct, 0.001f) << "%)";
|
||||
}
|
||||
|
||||
LLSD substitution;
|
||||
substitution["datetime"] = (S32)time(NULL);
|
||||
support << "\n" << LLTrans::getString("AboutTime", substitution);
|
||||
support << "\n" << LLTrans::getString("AboutTime", substitution, default_string);
|
||||
|
||||
return support.str();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -99,8 +99,7 @@ public:
|
|||
|
||||
void setServerReleaseNotesURL(const std::string& url) { mServerReleaseNotesURL = url; }
|
||||
LLSD getViewerInfo() const;
|
||||
std::string getViewerInfoString() const;
|
||||
std::string getShortViewerInfoString() const;
|
||||
std::string getViewerInfoString(bool default_string = false) const;
|
||||
|
||||
// Report true if under the control of a debugger. A null-op default.
|
||||
virtual bool beingDebugged() { return false; }
|
||||
|
|
|
|||
|
|
@ -8001,7 +8001,7 @@ void handle_report_bug(const LLSD& param)
|
|||
LLUIString url(param.asString());
|
||||
|
||||
LLStringUtil::format_map_t replace;
|
||||
replace["[ENVIRONMENT]"] = LLURI::escape(LLAppViewer::instance()->getShortViewerInfoString());
|
||||
replace["[ENVIRONMENT]"] = LLURI::escape(LLAppViewer::instance()->getViewerInfoString(true));
|
||||
LLSLURL location_url;
|
||||
LLAgentUI::buildSLURL(location_url);
|
||||
replace["[LOCATION]"] = LLURI::escape(location_url.getSLURLString());
|
||||
|
|
|
|||
Loading…
Reference in New Issue