diff options
| -rw-r--r-- | indra/llxuixml/lltrans.cpp | 50 | ||||
| -rw-r--r-- | indra/llxuixml/lltrans.h | 4 | ||||
| -rw-r--r-- | indra/newview/lllogininstance.cpp | 1 | ||||
| -rw-r--r-- | indra/newview/llstartup.cpp | 37 | ||||
| -rw-r--r-- | indra/newview/llxmlrpclistener.cpp | 7 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/strings.xml | 77 | 
6 files changed, 153 insertions, 23 deletions
| diff --git a/indra/llxuixml/lltrans.cpp b/indra/llxuixml/lltrans.cpp index b403b86048..5388069c24 100644 --- a/indra/llxuixml/lltrans.cpp +++ b/indra/llxuixml/lltrans.cpp @@ -30,6 +30,7 @@  #include "llfasttimer.h"	// for call count statistics  #include "llxuiparser.h" +#include "llsd.h"  #include "llxmlnode.h"  #include <map> @@ -155,13 +156,28 @@ std::string LLTrans::getString(const std::string &xml_desc, const LLStringUtil::  	}  	else  	{ -		LLSD args; -		args["STRING_NAME"] = xml_desc;  		LL_WARNS_ONCE("configuration") << "Missing String in strings.xml: [" << xml_desc << "]" << LL_ENDL; +		return "MissingString("+xml_desc+")"; +	} +} -		//LLNotificationsUtil::add("MissingString", args); // *TODO: resurrect -		//return xml_desc; +//static +std::string LLTrans::getString(const std::string &xml_desc, const LLSD& msg_args) +{ +	// Don't care about time as much as call count.  Make sure we're not +	// calling LLTrans::getString() in an inner loop. JC +	LLFastTimer timer(FTM_GET_TRANS); +	template_map_t::iterator iter = sStringTemplates.find(xml_desc); +	if (iter != sStringTemplates.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+")";  	}  } @@ -183,11 +199,27 @@ bool LLTrans::findString(std::string &result, const std::string &xml_desc, const  	}  	else  	{ -		LLSD args; -		args["STRING_NAME"] = xml_desc; -		LL_WARNS_ONCE("configuration") << "Missing String in strings.xml: [" << xml_desc << "]" << LL_ENDL; -		//LLNotificationsUtil::add("MissingString", args); -		 +		LL_WARNS_ONCE("configuration") << "Missing String in strings.xml: [" << xml_desc << "]" << LL_ENDL;	 +		return false; +	} +} + +//static +bool LLTrans::findString(std::string &result, const std::string &xml_desc, const LLSD& msg_args) +{ +	LLFastTimer timer(FTM_GET_TRANS); + +	template_map_t::iterator iter = sStringTemplates.find(xml_desc); +	if (iter != sStringTemplates.end()) +	{ +		std::string text = iter->second.mText; +		LLStringUtil::format(text, msg_args); +		result = text; +		return true; +	} +	else +	{ +		LL_WARNS_ONCE("configuration") << "Missing String in strings.xml: [" << xml_desc << "]" << LL_ENDL;	  		return false;  	}  } diff --git a/indra/llxuixml/lltrans.h b/indra/llxuixml/lltrans.h index b7091f77e8..128b51d383 100644 --- a/indra/llxuixml/lltrans.h +++ b/indra/llxuixml/lltrans.h @@ -34,6 +34,8 @@  class LLXMLNode; +class LLSD; +  /**   * @brief String template loaded from strings.xml   */ @@ -74,7 +76,9 @@ public:  	 * @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 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);  	// Returns translated string with [COUNT] replaced with a number, following  	// special per-language logic for plural nouns.  For example, some languages diff --git a/indra/newview/lllogininstance.cpp b/indra/newview/lllogininstance.cpp index 36c5d12897..00de6a86e1 100644 --- a/indra/newview/lllogininstance.cpp +++ b/indra/newview/lllogininstance.cpp @@ -608,6 +608,7 @@ void LLLoginInstance::constructAuthParams(LLPointer<LLCredential> user_credentia  	request_params["channel"] = LLVersionInfo::getChannel();  	request_params["id0"] = mSerialNumber;  	request_params["host_id"] = gSavedSettings.getString("HostID"); +	request_params["extended_errors"] = true; // request message_id and message_args  	mRequestData.clear();  	mRequestData["method"] = "login_to_simulator"; diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index 277d2430ce..141a81c717 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -995,6 +995,7 @@ bool idle_startup()  	if(STATE_LOGIN_PROCESS_RESPONSE == LLStartUp::getStartupState())   	{ +		// Generic failure message  		std::ostringstream emsg;  		emsg << LLTrans::getString("LoginFailed") << "\n";  		if(LLLoginInstance::getInstance()->authFailure()) @@ -1003,24 +1004,32 @@ bool idle_startup()  			                      << LLLoginInstance::getInstance()->getResponse() << LL_ENDL;  			LLSD response = LLLoginInstance::getInstance()->getResponse();  			// Still have error conditions that may need some  -			// sort of handling. +			// sort of handling - dig up specific message  			std::string reason_response = response["reason"];  			std::string message_response = response["message"]; -	 -			if(!message_response.empty()) +			std::string message_id = response["message_id"]; +			std::string message; // actual string to show the user + +			if(!message_id.empty() && LLTrans::findString(message, message_id, response["message_args"]))  			{ -				// XUI: fix translation for strings returned during login -				// We need a generic table for translations -				std::string big_reason = LLAgent::sTeleportErrorMessages[ message_response ]; -				if ( big_reason.size() == 0 ) -				{ -					emsg << message_response; -				} -				else -				{ -					emsg << big_reason; -				} +				// message will be filled in with the template and arguments  			} +			else if(!message_response.empty()) +			{ +				// *HACK: "no_inventory_host" sent as the message itself. +				// Remove this clause when server is sending message_id as well. +				message = LLAgent::sTeleportErrorMessages[ message_response ]; +			} + +			if (message.empty()) +			{ +				// Fallback to server-supplied string; necessary since server +				// may add strings that this viewer is not yet aware of +				message = message_response; +			} + +			emsg << message; +  			if(reason_response == "key")  			{ diff --git a/indra/newview/llxmlrpclistener.cpp b/indra/newview/llxmlrpclistener.cpp index 2596f239ca..97a9eb7f5f 100644 --- a/indra/newview/llxmlrpclistener.cpp +++ b/indra/newview/llxmlrpclistener.cpp @@ -499,6 +499,13 @@ private:                  // 'array' as the value of this 'key'.                  responses.insert(key, array);              } +            else if (xmlrpc_type_struct == type) +            { +                LLSD submap = parseValues(status_string, +                                          STRINGIZE(key_pfx << key << ':'), +                                          current); +                responses.insert(key, submap); +            }              else              {                  // whoops - unrecognized type diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index 2eb3cd7397..2a6af23d3a 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -58,6 +58,83 @@  	<string name="Quit">Quit</string>  	<string name="create_account_url">http://join.secondlife.com/</string> +	<string name="LoginFailedViewerNotPermitted">
 +The viewer you are using can no longer access Second Life. Please visit the following page to download a new viewer:
 +http://secondlife.com/download
 +
 +For more information, see our FAQ below:
 +http://secondlife.com/viewer-access-faq</string>
 +	<string name="LoginIntermediateOptionalUpdateAvailable">Optional viewer update available: [VERSION]</string>
 +	<string name="LoginFailedRequiredUpdate">Required viewer update: [VERSION]</string>
 +	<string name="LoginFailedAlreadyLoggedIn">This agent is already logged in.
 +</string>
 +	<string name="LoginFailedAuthenticationFailed">Sorry! We couldn't log you in.
 +Please check to make sure you entered the right
 +    * Username (like bobsmith12 or steller.sunshine)
 +    * Password
 +Also, please make sure your Caps Lock key is off.</string>
 +	<string name="LoginFailedPasswordChanged">As a security precaution your password has been changed.
 +Please go to your account page at http://secondlife.com/password
 +and answer the security question to reset your password.
 +We are very sorry for the inconvenience.</string>
 +	<string name="LoginFailedPasswordReset">We made some changes to our system and you will need to reset your password.
 +Please go to your account page at http://secondlife.com/password
 +and answer the security question to reset your password.
 +We are very sorry for the inconvenience.</string>
 +	<string name="LoginFailedEmployeesOnly">Second Life is temporarily closed for maintenance.
 +Logins are currently restricted to employees only.
 +Check www.secondlife.com/status for updates.</string>
 +	<string name="LoginFailedPremiumOnly">Second Life logins are temporarily restricted in order to make sure that those in-world have the best possible experience.
 +	 	
 +People with free accounts will not be able to access Second Life during this time, to make room for those who have paid for Second Life.</string>
 +	<string name="LoginFailedComputerProhibited">Second Life cannot be accessed from this computer.
 +If you feel this is an error, please contact
 +support@secondlife.com.</string>
 +	<string name="LoginFailedAcountSuspended">Your account is not accessible until
 +[TIME] Pacific Time.</string>
 +	<string name="LoginFailedAccountDisabled">We are unable to complete your request at this time.
 +Please contact Second Life support for assistance at http://secondlife.com/support.
 +If you are unable to change your password, please call (866) 476-9763.</string>
 +	<string name="LoginFailedTransformError">Data inconsistency found during login.
 +Please contact support@secondlife.com.</string>
 +	<string name="LoginFailedAccountMaintenance">Your account is undergoing minor maintenance.
 +Your account is not accessible until
 +[TIME] Pacific Time.
 +If you feel this is an error, please contact support@secondlife.com.</string>
 +	<string name="LoginFailedPendingLogoutFault">Request for logout responded with a fault from simulator.</string>
 +	<string name="LoginFailedPendingLogout">The system is logging you out right now.
 +Your Account will not be available until
 +[TIME] Pacific Time.</string>
 +	<string name="LoginFailedUnableToCreateSession">Unable to create valid session.</string>
 +	<string name="LoginFailedUnableToConnectToSimulator">Unable to connect to a simulator.</string>
 +	<string name="LoginFailedRestrictedHours">Your account can only access Second Life
 +between [START] and [END] Pacific Time.
 +Please come back during those hours.
 +If you feel this is an error, please contact support@secondlife.com.</string>
 +	<string name="LoginFailedIncorrectParameters">Incorrect parameters.
 +If you feel this is an error, please contact support@secondlife.com.</string>
 +	<string name="LoginFailedFirstNameNotAlphanumeric">First name parameter must be alphanumeric.
 +If you feel this is an error, please contact support@secondlife.com.</string>
 +	<string name="LoginFailedLastNameNotAlphanumeric">Last name parameter must be alphanumeric.
 +If you feel this is an error, please contact support@secondlife.com.</string>
 +	<string name="LogoutFailedRegionGoingOffline">Region is going offline.
 +Please try logging in again in a minute.</string>
 +	<string name="LogoutFailedAgentNotInRegion">Agent not in region.
 +Please try logging in again in a minute.</string>
 +	<string name="LogoutFailedPendingLogin">The region was logging in another session.
 +Please try logging in again in a minute.</string>
 +	<string name="LogoutFailedLoggingOut">The region was logging out the previous session.
 +Please try logging in again in a minute.</string>
 +	<string name="LogoutFailedStillLoggingOut">The region is still logging out the previous session.
 +Please try logging in again in a minute.</string>
 +	<string name="LogoutSucceeded">Region has logged out last session.
 +Please try logging in again in a minute.</string>
 +	<string name="LogoutFailedLogoutBegun">Region has begun the logout process.
 +Please try logging in again in a minute.</string>
 +	<string name="LoginFailedLoggingOutSession">The system has begun logging out your last session.
 +Please try logging in again in a minute.</string>
 + +  	<!-- Disconnection -->  	<string name="AgentLostConnection">This region may be experiencing trouble.  Please check your connection to the Internet.</string>  	<string name="SavingSettings">Saving your settings...</string> | 
