diff --git a/.hgignore b/.hgignore
index e3ad4fe7b2476111e8f027a4bd07ee5696886be7..403b73df6d28a41d669ab8abd0236a1c3df808d0 100644
--- a/.hgignore
+++ b/.hgignore
@@ -66,3 +66,4 @@ glob:indra/newview/search_history.txt
 glob:indra/newview/filters.xml
 glob:indra/newview/avatar_icons_cache.txt
 glob:indra/newview/avatar_lad.log
+glob:*.diff
diff --git a/.hgtags b/.hgtags
index cf78c1ee49268ac1277cb7a5d0a30c9abfc40434..cd8c2b584ebc7005ed736d306083651dbe85e54f 100644
--- a/.hgtags
+++ b/.hgtags
@@ -215,3 +215,4 @@ e440cd1dfbd128d7d5467019e497f7f803640ad6 3.2.0-beta1
 2a13d30ee50ccfed50268238e36bb90d738ccc9e 3.2.0-beta3
 3150219d229d628f0c15e58e8a51511cbd97e58d DRTVWR-94_3.2.0-release
 3150219d229d628f0c15e58e8a51511cbd97e58d 3.2.0-release
+c4911ec8cd81e676dfd2af438b3e065407a94a7a 3.2.1-start
diff --git a/doc/contributions.txt b/doc/contributions.txt
index 988410701b741e0022592b6a1ca9c3305585a816..d719f64bafc4a9ee81860c870bfbc8467d31fe09 100644
--- a/doc/contributions.txt
+++ b/doc/contributions.txt
@@ -480,6 +480,7 @@ Ima Mechanique
 	OPEN-50
 	OPEN-61
 	OPEN-76
+	STORM-959
 	STORM-1175
 Imnotgoing Sideways
 Inma Rau
@@ -654,6 +655,8 @@ Lilly Zenovka
 Lizzy Macarthur
 Luban Yiyuan
 Luc Starsider
+Luminous Luminos
+	STORM-959
 Lunita Savira
 Maccus McCullough
 maciek marksman
diff --git a/indra/linux_crash_logger/llcrashloggerlinux.cpp b/indra/linux_crash_logger/llcrashloggerlinux.cpp
old mode 100644
new mode 100755
index 7316717193bbc1aa2b8f2ffaefdf90cbb01c76c1..62465f9937d486fd780fe4bd5a58738e35b89fcf
--- a/indra/linux_crash_logger/llcrashloggerlinux.cpp
+++ b/indra/linux_crash_logger/llcrashloggerlinux.cpp
@@ -133,6 +133,12 @@ bool LLCrashLoggerLinux::mainLoop()
 	return true;
 }
 
+bool LLCrashLoggerLinux::cleanup()
+{
+	commonCleanup();
+	return true;
+}
+
 void LLCrashLoggerLinux::updateApplication(const std::string& message)
 {
 	LLCrashLogger::updateApplication(message);
diff --git a/indra/linux_crash_logger/llcrashloggerlinux.h b/indra/linux_crash_logger/llcrashloggerlinux.h
old mode 100644
new mode 100755
index 65d5e4e653b8dc19b14b33a8463f77fd597fdb2b..dae6c46651ba642e401aa09874d4c2d2567eb92f
--- a/indra/linux_crash_logger/llcrashloggerlinux.h
+++ b/indra/linux_crash_logger/llcrashloggerlinux.h
@@ -39,6 +39,7 @@ class LLCrashLoggerLinux : public LLCrashLogger
 	virtual bool mainLoop();
 	virtual void updateApplication(const std::string& = LLStringUtil::null);
 	virtual void gatherPlatformSpecificFiles();
+	virtual bool cleanup();
 };
 
 #endif
diff --git a/indra/llcommon/llversionviewer.h b/indra/llcommon/llversionviewer.h
index 1dc22519d7532abe3c2d14596473286e7fccaa10..aa37a03ef85e65feb940ef13af3023bffcc38e4c 100644
--- a/indra/llcommon/llversionviewer.h
+++ b/indra/llcommon/llversionviewer.h
@@ -29,7 +29,7 @@
 
 const S32 LL_VERSION_MAJOR = 3;
 const S32 LL_VERSION_MINOR = 2;
-const S32 LL_VERSION_PATCH = 0;
+const S32 LL_VERSION_PATCH = 1;
 const S32 LL_VERSION_BUILD = 0;
 
 const char * const LL_CHANNEL = "Second Life Developer";
diff --git a/indra/llcrashlogger/llcrashlogger.cpp b/indra/llcrashlogger/llcrashlogger.cpp
old mode 100644
new mode 100755
index 331a1692ee8abff68e12d4d02173634011f1741d..3461aa3e6ccdc4b18dcc8a8a37d8b12f003a15a3
--- a/indra/llcrashlogger/llcrashlogger.cpp
+++ b/indra/llcrashlogger/llcrashlogger.cpp
@@ -42,6 +42,7 @@
 #include "llpumpio.h"
 #include "llhttpclient.h"
 #include "llsdserialize.h"
+#include "llproxy.h"
 
 LLPumpIO* gServicePump;
 BOOL gBreak = false;
@@ -428,3 +429,9 @@ bool LLCrashLogger::init()
 	
 	return true;
 }
+
+// For cleanup code common to all platforms.
+void LLCrashLogger::commonCleanup()
+{
+	LLProxy::cleanupClass();
+}
diff --git a/indra/llcrashlogger/llcrashlogger.h b/indra/llcrashlogger/llcrashlogger.h
old mode 100644
new mode 100755
index 5d0cb5931ce2875f40a5b790e7a17392b525b4e9..1510d7e0b3d33ea4d0acc4e012c496a824da1ac8
--- a/indra/llcrashlogger/llcrashlogger.h
+++ b/indra/llcrashlogger/llcrashlogger.h
@@ -48,7 +48,8 @@ class LLCrashLogger : public LLApp
 	virtual void updateApplication(const std::string& message = LLStringUtil::null);
 	virtual bool init();
 	virtual bool mainLoop() = 0;
-	virtual bool cleanup() { return true; }
+	virtual bool cleanup() = 0;
+	void commonCleanup();
 	void setUserText(const std::string& text) { mCrashInfo["UserNotes"] = text; }
 	S32 getCrashBehavior() { return mCrashBehavior; }
 	bool runCrashLogPost(std::string host, LLSD data, std::string msg, int retries, int timeout);
diff --git a/indra/llmath/lloctree.h b/indra/llmath/lloctree.h
index e5ca47da698efca948d96cc28998790c0b6e9185..3c1ae45d6862680e64101f2683756791675ce034 100644
--- a/indra/llmath/lloctree.h
+++ b/indra/llmath/lloctree.h
@@ -681,7 +681,7 @@ class LLOctreeRoot : public LLOctreeNode<T>
 
 		if (lt != 0x7)
 		{
-			OCT_ERRS << "!!! ELEMENT EXCEEDS RANGE OF SPATIAL PARTITION !!!" << llendl;
+			//OCT_ERRS << "!!! ELEMENT EXCEEDS RANGE OF SPATIAL PARTITION !!!" << llendl;
 			return false;
 		}
 
diff --git a/indra/llmessage/llcurl.h b/indra/llmessage/llcurl.h
old mode 100644
new mode 100755
diff --git a/indra/llui/lldockablefloater.cpp b/indra/llui/lldockablefloater.cpp
index aea58be12afaa3d6addcf5092ecbeca3fbce36bc..0fcd9373618968ccb72acd8e9870f7e123573b2c 100644
--- a/indra/llui/lldockablefloater.cpp
+++ b/indra/llui/lldockablefloater.cpp
@@ -239,8 +239,21 @@ void LLDockableFloater::setDockControl(LLDockControl* dockControl)
 	setDocked(isDocked());
 }
 
-const LLUIImagePtr& LLDockableFloater::getDockTongue()
+const LLUIImagePtr& LLDockableFloater::getDockTongue(LLDockControl::DocAt dock_side)
 {
+	switch(dock_side)
+	{
+	case LLDockControl::LEFT:
+		mDockTongue = LLUI::getUIImage("windows/Flyout_Left.png");
+		break;
+	case LLDockControl::RIGHT:
+		mDockTongue = LLUI::getUIImage("windows/Flyout_Right.png");
+		break;
+	default:
+		mDockTongue = LLUI::getUIImage("windows/Flyout_Pointer.png");
+		break;
+	}
+
 	return mDockTongue;
 }
 
diff --git a/indra/llui/lldockablefloater.h b/indra/llui/lldockablefloater.h
index 8deb6c1159fa111ec0698b97c274b5cb6bf1aa9a..89c9852f4af3349fe8e3f4bd53ea889205954c15 100644
--- a/indra/llui/lldockablefloater.h
+++ b/indra/llui/lldockablefloater.h
@@ -113,6 +113,8 @@ class LLDockableFloater : public LLFloater
 
 	bool getUniqueDocking() { return mUniqueDocking;	}
 	bool getUseTongue() { return mUseTongue; }
+
+	void setUseTongue(bool use_tongue) { mUseTongue = use_tongue;}
 private:
 	/**
 	 * Provides unique of dockable floater.
@@ -122,7 +124,7 @@ class LLDockableFloater : public LLFloater
 
 protected:
 	void setDockControl(LLDockControl* dockControl);
-	const LLUIImagePtr& getDockTongue();
+	const LLUIImagePtr& getDockTongue(LLDockControl::DocAt dock_side = LLDockControl::TOP);
 
 	// Checks if docking should be forced.
 	// It may be useful e.g. if floater created in mouselook mode (see EXT-5609)
diff --git a/indra/llui/lldockcontrol.cpp b/indra/llui/lldockcontrol.cpp
index 6397bbd0dec8dc0a95fea7a3585c8597bd6311d8..af39e41fa6bd4898e652accdd2a409b48cd7970a 100644
--- a/indra/llui/lldockcontrol.cpp
+++ b/indra/llui/lldockcontrol.cpp
@@ -100,12 +100,16 @@ void LLDockControl::repositionDockable()
 	if (!mDockWidget) return;
 	LLRect dockRect = mDockWidget->calcScreenRect();
 	LLRect rootRect;
+	LLRect floater_rect = mDockableFloater->calcScreenRect();
 	mGetAllowedRectCallback(rootRect);
 
-	// recalculate dockable position if dock position changed, dock visibility changed,
-	// root view rect changed or recalculation is forced
-	if (mPrevDockRect != dockRect  || mDockWidgetVisible != isDockVisible()
-			|| mRootRect != rootRect || mRecalculateDocablePosition)
+	// recalculate dockable position if:
+	if (mPrevDockRect != dockRect					//dock position   changed
+		|| mDockWidgetVisible != isDockVisible()	//dock visibility changed
+		|| mRootRect != rootRect					//root view rect  changed
+		|| mFloaterRect != floater_rect				//floater rect    changed
+		|| mRecalculateDockablePosition				//recalculation is forced
+	)
 	{
 		// undock dockable and off() if dock not visible
 		if (!isDockVisible())
@@ -136,7 +140,8 @@ void LLDockControl::repositionDockable()
 
 		mPrevDockRect = dockRect;
 		mRootRect = rootRect;
-		mRecalculateDocablePosition = false;
+		mFloaterRect = floater_rect;
+		mRecalculateDockablePosition = false;
 		mDockWidgetVisible = isDockVisible();
 	}
 }
@@ -203,21 +208,33 @@ void LLDockControl::moveDockable()
 	switch (mDockAt)
 	{
 	case LEFT:
-		x = dockRect.mLeft;
-		y = dockRect.mTop + mDockTongue->getHeight() + dockableRect.getHeight();
-		// check is dockable inside root view rect
-		if (x < rootRect.mLeft)
+
+		x = dockRect.mLeft - dockableRect.getWidth();
+		y = dockRect.getCenterY() + dockableRect.getHeight() / 2;
+		
+		if (use_tongue)
 		{
-			x = rootRect.mLeft;
+			x -= mDockTongue->getWidth();
 		}
-		if (x + dockableRect.getWidth() > rootRect.mRight)
+
+		mDockTongueX = dockableRect.mRight;
+		mDockTongueY = dockableRect.getCenterY() - mDockTongue->getHeight() / 2;
+		
+		break;
+
+	case RIGHT:
+
+		x = dockRect.mRight;
+		y = dockRect.getCenterY() + dockableRect.getHeight() / 2;
+
+		if (use_tongue)
 		{
-			x = rootRect.mRight - dockableRect.getWidth();
+			x += mDockTongue->getWidth();
 		}
-		
-		mDockTongueX = x + dockableRect.getWidth()/2 - mDockTongue->getWidth() / 2;
-		
-		mDockTongueY = dockRect.mTop;
+
+		mDockTongueX = dockRect.mRight;
+		mDockTongueY = dockableRect.getCenterY() - mDockTongue->getHeight() / 2;
+
 		break;
 
 	case TOP:
@@ -315,13 +332,12 @@ void LLDockControl::moveDockable()
 		dockableRect.setLeftTopAndSize(x, y, dockableRect.getWidth(),
 				dockableRect.getHeight());
 	}
+
 	LLRect localDocableParentRect;
-	mDockableFloater->getParent()->screenRectToLocal(dockableRect,
-			&localDocableParentRect);
-	mDockableFloater->setRect(localDocableParentRect);
 
-	mDockableFloater->screenPointToLocal(mDockTongueX, mDockTongueY,
-			&mDockTongueX, &mDockTongueY);
+	mDockableFloater->getParent()->screenRectToLocal(dockableRect, &localDocableParentRect);
+	mDockableFloater->setRect(localDocableParentRect);
+	mDockableFloater->screenPointToLocal(mDockTongueX, mDockTongueY, &mDockTongueX, &mDockTongueY);
 
 }
 
@@ -330,7 +346,7 @@ void LLDockControl::on()
 	 if (isDockVisible())
 	{
 		mEnabled = true;
-		mRecalculateDocablePosition = true;
+		mRecalculateDockablePosition = true;
 	}
 }
 
@@ -341,7 +357,7 @@ void LLDockControl::off()
 
 void LLDockControl::forceRecalculatePosition()
 {
-	mRecalculateDocablePosition = true;
+	mRecalculateDockablePosition = true;
 }
 
 void LLDockControl::drawToungue()
diff --git a/indra/llui/lldockcontrol.h b/indra/llui/lldockcontrol.h
index 2e7359245f35f7ed5d20dae6dac4d7db4fbcdc6d..c9602011f654d3c5a92fb8ead6ad71bb5695fe5a 100644
--- a/indra/llui/lldockcontrol.h
+++ b/indra/llui/lldockcontrol.h
@@ -43,6 +43,7 @@ class LLDockControl
 	{
 		TOP,
 		LEFT,
+		RIGHT,
 		BOTTOM
 	};
 
@@ -79,12 +80,13 @@ class LLDockControl
 private:
 	get_allowed_rect_callback_t mGetAllowedRectCallback;
 	bool mEnabled;
-	bool mRecalculateDocablePosition;
+	bool mRecalculateDockablePosition;
 	bool mDockWidgetVisible;
 	DocAt mDockAt;
 	LLView* mDockWidget;
 	LLRect mPrevDockRect;
 	LLRect mRootRect;
+	LLRect mFloaterRect;
 	LLFloater* mDockableFloater;
 	LLUIImagePtr mDockTongue;
 	S32 mDockTongueX;
diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp
index 7100ea13a7ec4035d7e102e298e84faa92d7631e..432397d3e9fb0fa902ffded0768d305e3d195976 100644
--- a/indra/llui/llfloater.cpp
+++ b/indra/llui/llfloater.cpp
@@ -935,7 +935,7 @@ void LLFloater::applyPositioning(LLFloater* other)
 
 	case LLFloaterEnums::OPEN_POSITIONING_CASCADE_GROUP:
 	case LLFloaterEnums::OPEN_POSITIONING_CASCADING:
-		if (other != NULL)
+		if (other != NULL && other != this)
 		{
 			stackWith(*other);
 		}
@@ -1070,7 +1070,7 @@ void LLFloater::handleReshape(const LLRect& new_rect, bool by_user)
 	const LLRect old_rect = getRect();
 	LLView::handleReshape(new_rect, by_user);
 
-	if (by_user)
+	if (by_user && !isMinimized())
 	{
 		storeRectControl();
 		mOpenPositioning = LLFloaterEnums::OPEN_POSITIONING_NONE;
diff --git a/indra/llui/llkeywords.cpp b/indra/llui/llkeywords.cpp
index ceec9c7eb117db89dca53f84b8e3bd4422a49a8c..c1cd04186bda56afc329e0a255bc46269f56408f 100644
--- a/indra/llui/llkeywords.cpp
+++ b/indra/llui/llkeywords.cpp
@@ -57,6 +57,22 @@ LLKeywords::LLKeywords() : mLoaded(FALSE)
 {
 }
 
+inline BOOL LLKeywordToken::isTail(const llwchar* s) const
+{
+	BOOL res = TRUE;
+	const llwchar* t = mDelimiter.c_str();
+	S32 len = mDelimiter.size();
+	for (S32 i=0; i<len; i++)
+	{
+		if (s[i] != t[i])
+		{
+			res = FALSE;
+			break;
+		}
+	}
+	return res;
+}
+
 LLKeywords::~LLKeywords()
 {
 	std::for_each(mWordTokenMap.begin(), mWordTokenMap.end(), DeletePairedPointer());
@@ -106,6 +122,7 @@ BOOL LLKeywords::loadFromFile( const std::string& filename )
 	std::string SOL_LINE("[line ");
 	std::string SOL_ONE_SIDED_DELIMITER("[one_sided_delimiter ");
 	std::string SOL_TWO_SIDED_DELIMITER("[two_sided_delimiter ");
+	std::string SOL_DOUBLE_QUOTATION_MARKS("[double_quotation_marks ");
 
 	LLColor3 cur_color( 1, 0, 0 );
 	LLKeywordToken::TOKEN_TYPE cur_type = LLKeywordToken::WORD;
@@ -137,6 +154,12 @@ BOOL LLKeywords::loadFromFile( const std::string& filename )
 			cur_type = LLKeywordToken::TWO_SIDED_DELIMITER;
 			continue;
 		}
+		else if( line.find(SOL_DOUBLE_QUOTATION_MARKS) == 0 )
+		{
+			cur_color = readColor( line.substr(SOL_DOUBLE_QUOTATION_MARKS.size()) );
+			cur_type = LLKeywordToken::DOUBLE_QUOTATION_MARKS;
+			continue;
+		}
 		else if( line.find(SOL_ONE_SIDED_DELIMITER) == 0 )	
 		{
 			cur_color = readColor( line.substr(SOL_ONE_SIDED_DELIMITER.size()) );
@@ -154,10 +177,26 @@ BOOL LLKeywords::loadFromFile( const std::string& filename )
 
 		if( !token_buffer.empty() && token_word_iter != word_tokens.end() )
 		{
-			// first word is keyword
+			// first word is the keyword or a left delimiter
 			std::string keyword = (*token_word_iter);
 			LLStringUtil::trim(keyword);
 
+			// second word may be a right delimiter
+			std::string delimiter;
+			if (cur_type == LLKeywordToken::TWO_SIDED_DELIMITER)
+			{
+				while (delimiter.length() == 0 && ++token_word_iter != word_tokens.end())
+				{
+					delimiter = *token_word_iter;
+					LLStringUtil::trim(delimiter);
+				}
+			}
+			else if (cur_type == LLKeywordToken::DOUBLE_QUOTATION_MARKS)
+			{
+				// Closing delimiter is identical to the opening one.
+				delimiter = keyword;
+			}
+
 			// following words are tooltip
 			std::string tool_tip;
 			while (++token_word_iter != word_tokens.end())
@@ -170,11 +209,11 @@ BOOL LLKeywords::loadFromFile( const std::string& filename )
 			{
 				// Replace : with \n for multi-line tool tips.
 				LLStringUtil::replaceChar( tool_tip, ':', '\n' );
-				addToken(cur_type, keyword, cur_color, tool_tip );
+				addToken(cur_type, keyword, cur_color, tool_tip, delimiter );
 			}
 			else
 			{
-				addToken(cur_type, keyword, cur_color, LLStringUtil::null );
+				addToken(cur_type, keyword, cur_color, LLStringUtil::null, delimiter );
 			}
 		}
 	}
@@ -189,23 +228,26 @@ BOOL LLKeywords::loadFromFile( const std::string& filename )
 void LLKeywords::addToken(LLKeywordToken::TOKEN_TYPE type,
 						  const std::string& key_in,
 						  const LLColor3& color,
-						  const std::string& tool_tip_in )
+						  const std::string& tool_tip_in,
+						  const std::string& delimiter_in)
 {
 	LLWString key = utf8str_to_wstring(key_in);
 	LLWString tool_tip = utf8str_to_wstring(tool_tip_in);
+	LLWString delimiter = utf8str_to_wstring(delimiter_in);
 	switch(type)
 	{
 	case LLKeywordToken::WORD:
-		mWordTokenMap[key] = new LLKeywordToken(type, color, key, tool_tip);
+		mWordTokenMap[key] = new LLKeywordToken(type, color, key, tool_tip, LLWStringUtil::null);
 		break;
 
 	case LLKeywordToken::LINE:
-		mLineTokenList.push_front(new LLKeywordToken(type, color, key, tool_tip));
+		mLineTokenList.push_front(new LLKeywordToken(type, color, key, tool_tip, LLWStringUtil::null));
 		break;
 
 	case LLKeywordToken::TWO_SIDED_DELIMITER:
+	case LLKeywordToken::DOUBLE_QUOTATION_MARKS:
 	case LLKeywordToken::ONE_SIDED_DELIMITER:
-		mDelimiterTokenList.push_front(new LLKeywordToken(type, color, key, tool_tip));
+		mDelimiterTokenList.push_front(new LLKeywordToken(type, color, key, tool_tip, delimiter));
 		break;
 
 	default:
@@ -357,7 +399,7 @@ void LLKeywords::findSegments(std::vector<LLTextSegmentPtr>* seg_list, const LLW
 			}
 
 			// cur is now at the first non-whitespace character of a new line	
-		
+
 			// Line start tokens
 			{
 				BOOL line_done = FALSE;
@@ -418,14 +460,15 @@ void LLKeywords::findSegments(std::vector<LLTextSegmentPtr>* seg_list, const LLW
 					S32 seg_end = 0;
 
 					seg_start = cur - base;
-					cur += cur_delimiter->getLength();
+					cur += cur_delimiter->getLengthHead();
 					
-					if( cur_delimiter->getType() == LLKeywordToken::TWO_SIDED_DELIMITER )
+					LLKeywordToken::TOKEN_TYPE type = cur_delimiter->getType();
+					if( type == LLKeywordToken::TWO_SIDED_DELIMITER || type == LLKeywordToken::DOUBLE_QUOTATION_MARKS )
 					{
-						while( *cur && !cur_delimiter->isHead(cur))
+						while( *cur && !cur_delimiter->isTail(cur))
 						{
 							// Check for an escape sequence.
-							if (*cur == '\\')
+							if (type == LLKeywordToken::DOUBLE_QUOTATION_MARKS && *cur == '\\')
 							{
 								// Count the number of backslashes.
 								S32 num_backslashes = 0;
@@ -435,10 +478,10 @@ void LLKeywords::findSegments(std::vector<LLTextSegmentPtr>* seg_list, const LLW
 									between_delimiters++;
 									cur++;
 								}
-								// Is the next character the end delimiter?
-								if (cur_delimiter->isHead(cur))
+								// If the next character is the end delimiter?
+								if (cur_delimiter->isTail(cur))
 								{
-									// Is there was an odd number of backslashes, then this delimiter
+									// If there was an odd number of backslashes, then this delimiter
 									// does not end the sequence.
 									if (num_backslashes % 2 == 1)
 									{
@@ -461,13 +504,13 @@ void LLKeywords::findSegments(std::vector<LLTextSegmentPtr>* seg_list, const LLW
 
 						if( *cur )
 						{
-							cur += cur_delimiter->getLength();
-							seg_end = seg_start + between_delimiters + 2 * cur_delimiter->getLength();
+							cur += cur_delimiter->getLengthHead();
+							seg_end = seg_start + between_delimiters + cur_delimiter->getLengthHead() + cur_delimiter->getLengthTail();
 						}
 						else
 						{
 							// eof
-							seg_end = seg_start + between_delimiters + cur_delimiter->getLength();
+							seg_end = seg_start + between_delimiters + cur_delimiter->getLengthHead();
 						}
 					}
 					else
@@ -479,7 +522,7 @@ void LLKeywords::findSegments(std::vector<LLTextSegmentPtr>* seg_list, const LLW
 							between_delimiters++;
 							cur++;
 						}
-						seg_end = seg_start + between_delimiters + cur_delimiter->getLength();
+						seg_end = seg_start + between_delimiters + cur_delimiter->getLengthHead();
 					}
 
 					insertSegments(wtext, *seg_list,cur_delimiter, text_len, seg_start, seg_end, defaultColor, editor);
diff --git a/indra/llui/llkeywords.h b/indra/llui/llkeywords.h
index f6d75b7e755f3b7e74d8c7bbda6e0013186124c1..d050cd7d7c806b42389b1c0fa2d78eaee73869e1 100644
--- a/indra/llui/llkeywords.h
+++ b/indra/llui/llkeywords.h
@@ -41,23 +41,44 @@ typedef LLPointer<LLTextSegment> LLTextSegmentPtr;
 class LLKeywordToken
 {
 public:
-	enum TOKEN_TYPE { WORD, LINE, TWO_SIDED_DELIMITER, ONE_SIDED_DELIMITER };
+	/** 
+	 * @brief Types of tokens/delimters being parsed.
+	 *
+	 * @desc Tokens/delimiters that need to be identified/highlighted. All are terminated if an EOF is encountered.
+	 * - WORD are keywords in the normal sense, i.e. constants, events, etc.
+	 * - LINE are for entire lines (currently only flow control labels use this).
+	 * - ONE_SIDED_DELIMITER are for open-ended delimiters which are terminated by EOL.
+	 * - TWO_SIDED_DELIMITER are for delimiters that end with a different delimiter than they open with.
+	 * - DOUBLE_QUOTATION_MARKS are for delimiting areas using the same delimiter to open and close.
+	 */
+	typedef enum TOKEN_TYPE
+	{
+		WORD,
+		LINE,
+		TWO_SIDED_DELIMITER,
+		ONE_SIDED_DELIMITER,
+		DOUBLE_QUOTATION_MARKS
+	};
 
-	LLKeywordToken( TOKEN_TYPE type, const LLColor3& color, const LLWString& token, const LLWString& tool_tip ) 
+	LLKeywordToken( TOKEN_TYPE type, const LLColor3& color, const LLWString& token, const LLWString& tool_tip, const LLWString& delimiter  ) 
 		:
 		mType( type ),
 		mToken( token ),
 		mColor( color ),
-		mToolTip( tool_tip )
+		mToolTip( tool_tip ),
+		mDelimiter( delimiter )		// right delimiter
 	{
 	}
 
-	S32					getLength() const		{ return mToken.size(); }
+	S32					getLengthHead() const	{ return mToken.size(); }
+	S32					getLengthTail() const	{ return mDelimiter.size(); }
 	BOOL				isHead(const llwchar* s) const;
+	BOOL				isTail(const llwchar* s) const;
 	const LLWString&	getToken() const		{ return mToken; }
 	const LLColor3&		getColor() const		{ return mColor; }
 	TOKEN_TYPE			getType()  const		{ return mType; }
 	const LLWString&	getToolTip() const		{ return mToolTip; }
+	const LLWString&	getDelimiter() const	{ return mDelimiter; }
 
 #ifdef _DEBUG
 	void		dump();
@@ -68,6 +89,7 @@ class LLKeywordToken
 	LLWString	mToken;
 	LLColor3	mColor;
 	LLWString	mToolTip;
+	LLWString	mDelimiter;
 };
 
 class LLKeywords
@@ -85,7 +107,8 @@ class LLKeywords
 	void addToken(LLKeywordToken::TOKEN_TYPE type,
 					const std::string& key,
 					const LLColor3& color,
-					const std::string& tool_tip = LLStringUtil::null);
+					const std::string& tool_tip = LLStringUtil::null,
+					const std::string& delimiter = LLStringUtil::null);
 	
 	// This class is here as a performance optimization.
 	// The word token map used to be defined as std::map<LLWString, LLKeywordToken*>.
diff --git a/indra/llui/lltoolbar.cpp b/indra/llui/lltoolbar.cpp
index 515605200ed4fef1a3316601fa5a3797410fe136..287e3e2b41b4ec3d98e884fb05f19a9d46c0b2db 100644
--- a/indra/llui/lltoolbar.cpp
+++ b/indra/llui/lltoolbar.cpp
@@ -112,6 +112,10 @@ LLToolBar::LLToolBar(const LLToolBar::Params& p)
 	mStartDragItemCallback(NULL),
 	mHandleDragItemCallback(NULL),
 	mHandleDropCallback(NULL),
+	mButtonAddSignal(NULL),
+	mButtonEnterSignal(NULL),
+	mButtonLeaveSignal(NULL),
+	mButtonRemoveSignal(NULL),
 	mDragAndDropTarget(false)
 {
 	mButtonParams[LLToolBarEnums::BTNTYPE_ICONS_WITH_TEXT] = p.button_icon_and_text;
@@ -121,6 +125,10 @@ LLToolBar::LLToolBar(const LLToolBar::Params& p)
 LLToolBar::~LLToolBar()
 {
 	delete mPopupMenuHandle.get();
+	delete mButtonAddSignal;
+	delete mButtonEnterSignal;
+	delete mButtonLeaveSignal;
+	delete mButtonRemoveSignal;
 }
 
 void LLToolBar::createContextMenu()
@@ -212,7 +220,6 @@ bool LLToolBar::addCommand(const LLCommandId& commandId, int rank)
 	mButtonPanel->addChild(button);
 	mButtonMap.insert(std::make_pair(commandId.uuid(), button));
 
-
 	// Insert the command and button in the right place in their respective lists
 	if ((rank >= mButtonCommands.size()) || (rank == RANK_NONE))
 	{
@@ -238,6 +245,14 @@ bool LLToolBar::addCommand(const LLCommandId& commandId, int rank)
 
 	mNeedsLayout = true;
 
+	updateLayoutAsNeeded();
+
+
+	if (mButtonAddSignal)
+	{
+		(*mButtonAddSignal)(button);
+	}
+
 	return true;
 }
 
@@ -264,6 +279,11 @@ int LLToolBar::removeCommand(const LLCommandId& commandId)
 		++rank;
 	}
 	
+	if (mButtonRemoveSignal)
+	{
+		(*mButtonRemoveSignal)(*it_button);
+	}
+	
 	// Delete the button and erase the command and button records
 	delete (*it_button);
 	mButtonCommands.erase(it_command);
@@ -352,6 +372,23 @@ bool LLToolBar::stopCommandInProgress(const LLCommandId& commandId)
 	return (command_button != NULL);
 }
 
+bool LLToolBar::flashCommand(const LLCommandId& commandId, bool flash)
+{
+	LLButton * command_button = NULL;
+
+	if (commandId != LLCommandId::null)
+	{
+		command_id_map::iterator it = mButtonMap.find(commandId.uuid());
+		if (it != mButtonMap.end())
+		{
+			command_button = it->second;
+			command_button->setFlashing(flash ? TRUE : FALSE);
+		}
+	}
+
+	return (command_button != NULL);
+}
+
 BOOL LLToolBar::handleRightMouseDown(S32 x, S32 y, MASK mask)
 {
 	LLRect button_panel_rect;
@@ -790,6 +827,11 @@ void LLToolBar::createButtons()
 {
 	BOOST_FOREACH(LLToolBarButton* button, mButtons)
 	{
+		if (mButtonRemoveSignal)
+		{
+			(*mButtonRemoveSignal)(button);
+		}
+		
 		delete button;
 	}
 	mButtons.clear();
@@ -801,6 +843,11 @@ void LLToolBar::createButtons()
 		mButtons.push_back(button);
 		mButtonPanel->addChild(button);
 		mButtonMap.insert(std::make_pair(command_id.uuid(), button));
+		
+		if (mButtonAddSignal)
+		{
+			(*mButtonAddSignal)(button);
+		}
 	}
 	mNeedsLayout = true;
 }
@@ -870,8 +917,7 @@ LLToolBarButton* LLToolBar::createButton(const LLCommandId& id)
 			button->setCommitCallback(executeParam);
 		}
 
-
-
+		// Set up "is running" query callback
 		const std::string& isRunningFunction = commandp->isRunningFunctionName();
 		if (isRunningFunction.length() > 0)
 		{
@@ -898,6 +944,36 @@ LLToolBarButton* LLToolBar::createButton(const LLCommandId& id)
 	return button;
 }
 
+boost::signals2::connection connectSignal(LLToolBar::button_signal_t*& signal, const LLToolBar::button_signal_t::slot_type& cb)
+{
+	if (!signal)
+	{
+		signal = new LLToolBar::button_signal_t();
+	}
+
+	return signal->connect(cb);
+}
+
+boost::signals2::connection LLToolBar::setButtonAddCallback(const button_signal_t::slot_type& cb)
+{
+	return connectSignal(mButtonAddSignal, cb);
+}
+
+boost::signals2::connection LLToolBar::setButtonEnterCallback(const button_signal_t::slot_type& cb)
+{
+	return connectSignal(mButtonEnterSignal, cb);
+}
+
+boost::signals2::connection LLToolBar::setButtonLeaveCallback(const button_signal_t::slot_type& cb)
+{
+	return connectSignal(mButtonLeaveSignal, cb);
+}
+
+boost::signals2::connection LLToolBar::setButtonRemoveCallback(const button_signal_t::slot_type& cb)
+{
+	return connectSignal(mButtonRemoveSignal, cb);
+}
+
 BOOL LLToolBar::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
 										EDragAndDropType cargo_type,
 										void* cargo_data,
@@ -969,8 +1045,6 @@ LLToolBarButton::LLToolBarButton(const Params& p)
 	mOriginalImageOverlayColor(p.image_overlay_color),
 	mOriginalImageOverlaySelectedColor(p.image_overlay_selected_color)
 {
-	mButtonFlashRate = 0.0;
-	mButtonFlashCount = 0;
 }
 
 LLToolBarButton::~LLToolBarButton()
@@ -1012,6 +1086,7 @@ BOOL LLToolBarButton::handleHover(S32 x, S32 y, MASK mask)
 	{
 		handled = LLButton::handleHover(x, y, mask);
 	}
+
 	return handled;
 }
 
@@ -1024,6 +1099,23 @@ void LLToolBarButton::onMouseEnter(S32 x, S32 y, MASK mask)
 	{
 		mNeedsHighlight = TRUE;
 	}
+
+	LLToolBar* parent_toolbar = getParentByType<LLToolBar>();
+	if (parent_toolbar && parent_toolbar->mButtonEnterSignal)
+	{
+		(*(parent_toolbar->mButtonEnterSignal))(this);
+	}
+}
+
+void LLToolBarButton::onMouseLeave(S32 x, S32 y, MASK mask)
+{
+	LLButton::onMouseLeave(x, y, mask);
+	
+	LLToolBar* parent_toolbar = getParentByType<LLToolBar>();
+	if (parent_toolbar && parent_toolbar->mButtonLeaveSignal)
+	{
+		(*(parent_toolbar->mButtonLeaveSignal))(this);
+	}	
 }
 
 void LLToolBarButton::onMouseCaptureLost()
@@ -1072,25 +1164,25 @@ void LLToolBarButton::setEnabled(BOOL enabled)
 	}
 }
 
-
 const std::string LLToolBarButton::getToolTip() const	
 { 
 	std::string tooltip;
+
 	if (labelIsTruncated() || getCurrentLabel().empty())
 	{
-		return LLTrans::getString(LLCommandManager::instance().getCommand(mId)->labelRef()) + " -- " + LLView::getToolTip();
+		tooltip = LLTrans::getString(LLCommandManager::instance().getCommand(mId)->labelRef()) + " -- " + LLView::getToolTip();
 	}
 	else
 	{
-		return LLView::getToolTip();
+		tooltip = LLView::getToolTip();
 	}
-}
-
-
-
-
-
-
 
+	LLToolBar* parent_toolbar = getParentByType<LLToolBar>();
+	if (parent_toolbar && parent_toolbar->mButtonTooltipSuffix.length() > 0)
+	{
+		tooltip = tooltip + "\n(" + parent_toolbar->mButtonTooltipSuffix + ")";
+	}
 
+	return tooltip;
+}
 
diff --git a/indra/llui/lltoolbar.h b/indra/llui/lltoolbar.h
index e634e57f93802d90456f8e519bb0417ed7cbb6c9..f10f39adc3f6f2d645ef8c91715497f19f0825f6 100644
--- a/indra/llui/lltoolbar.h
+++ b/indra/llui/lltoolbar.h
@@ -71,6 +71,7 @@ class LLToolBarButton : public LLButton
 	void setHandleDragCallback(tool_handledrag_callback_t cb) { mHandleDragItemCallback = cb; }
 
 	void onMouseEnter(S32 x, S32 y, MASK mask);
+	void onMouseLeave(S32 x, S32 y, MASK mask);
 	void onMouseCaptureLost();
 
 	void onCommit();
@@ -120,6 +121,8 @@ namespace LLToolBarEnums
 		SIDE_RIGHT,
 		SIDE_TOP,
 	};
+
+	LLLayoutStack::ELayoutOrientation getOrientation(SideType sideType);
 }
 
 // NOTE: This needs to occur before Param block declaration for proper compilation.
@@ -142,6 +145,7 @@ namespace LLInitParam
 class LLToolBar
 :	public LLUICtrl
 {
+	friend class LLToolBarButton;
 public:
 	struct Params : public LLInitParam::Block<Params, LLUICtrl::Params>
 	{
@@ -187,6 +191,7 @@ class LLToolBar
 	bool hasCommand(const LLCommandId& commandId) const;
 	bool enableCommand(const LLCommandId& commandId, bool enabled);
 	bool stopCommandInProgress(const LLCommandId& commandId);
+	bool flashCommand(const LLCommandId& commandId, bool flash);
 
 	void setStartDragCallback(tool_startdrag_callback_t cb)   { mStartDragItemCallback  = cb; }
 	void setHandleDragCallback(tool_handledrag_callback_t cb) { mHandleDragItemCallback = cb; }
@@ -195,6 +200,15 @@ class LLToolBar
 
 	LLToolBarButton* createButton(const LLCommandId& id);
 
+	typedef boost::signals2::signal<void (LLView* button)> button_signal_t;
+	boost::signals2::connection setButtonAddCallback(const button_signal_t::slot_type& cb);
+	boost::signals2::connection setButtonEnterCallback(const button_signal_t::slot_type& cb);
+	boost::signals2::connection setButtonLeaveCallback(const button_signal_t::slot_type& cb);
+	boost::signals2::connection setButtonRemoveCallback(const button_signal_t::slot_type& cb);
+
+	void setTooltipButtonSuffix(const std::string& suffix) { mButtonTooltipSuffix = suffix; }
+
+	LLToolBarEnums::SideType getSideType() const { return mSideType; }
 	bool hasButtons() const { return !mButtons.empty(); }
 	bool isModified() const { return mModified; }
 
@@ -254,7 +268,14 @@ class LLToolBar
 
 	LLToolBarButton::Params			mButtonParams[LLToolBarEnums::BTNTYPE_COUNT];
 
-	LLHandle<class LLContextMenu>			mPopupMenuHandle;
+	LLHandle<class LLContextMenu>	mPopupMenuHandle;
+
+	button_signal_t*				mButtonAddSignal;
+	button_signal_t*				mButtonEnterSignal;
+	button_signal_t*				mButtonLeaveSignal;
+	button_signal_t*				mButtonRemoveSignal;
+
+	std::string						mButtonTooltipSuffix;
 };
 
 
diff --git a/indra/mac_crash_logger/llcrashloggermac.cpp b/indra/mac_crash_logger/llcrashloggermac.cpp
old mode 100644
new mode 100755
index b555e92b96e563f42e167d1c3585aca610418338..8f1c1a2dd0fba32c849252a9cac5e4491fad7688
--- a/indra/mac_crash_logger/llcrashloggermac.cpp
+++ b/indra/mac_crash_logger/llcrashloggermac.cpp
@@ -249,5 +249,6 @@ void LLCrashLoggerMac::updateApplication(const std::string& message)
 
 bool LLCrashLoggerMac::cleanup()
 {
+	commonCleanup();
 	return true;
 }
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 7288bf6933889f1e9c984b8102c9c822d0919fc9..bef775cdb852056928da2df8ee9800a7822900c0 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -241,6 +241,7 @@ set(viewer_SOURCE_FILES
     llfloatertopobjects.cpp
     llfloatertos.cpp
     llfloatertoybox.cpp
+    llfloatertranslationsettings.cpp
     llfloateruipreview.cpp
     llfloaterurlentry.cpp
     llfloatervoiceeffect.cpp
@@ -807,6 +808,7 @@ set(viewer_HEADER_FILES
     llfloatertopobjects.h
     llfloatertos.h
     llfloatertoybox.h
+    llfloatertranslationsettings.h
     llfloateruipreview.h
     llfloaterurlentry.h
     llfloatervoiceeffect.h
@@ -1987,12 +1989,19 @@ if (LL_TESTS)
     llmediadataclient.cpp
     lllogininstance.cpp
     llremoteparcelrequest.cpp
+    lltranslate.cpp
     llviewerhelputil.cpp
     llversioninfo.cpp
     llworldmap.cpp
     llworldmipmap.cpp
   )
 
+  set_source_files_properties(
+    lltranslate.cpp
+    PROPERTIES
+    LL_TEST_ADDITIONAL_LIBRARIES "${JSONCPP_LIBRARIES}"
+  )
+
   ##################################################
   # DISABLING PRECOMPILED HEADERS USAGE FOR TESTS
   ##################################################
diff --git a/indra/newview/app_settings/keywords.ini b/indra/newview/app_settings/keywords.ini
index b5f105439cf037abb1b022ba2d389546b9d81654..82b43432eb32bcbbc2374e093af4d08e6158b90d 100644
--- a/indra/newview/app_settings/keywords.ini
+++ b/indra/newview/app_settings/keywords.ini
@@ -603,9 +603,11 @@ return				Leave current function or event handler
 # Comment
 [one_sided_delimiter .8, .3, .15]
 //					Comment:Non-functional commentary or disabled code
+[two_sided_delimiter .8, .3, .15]
+/* */				Comment:Non-functional commentary or disabled code
 
 # String literals
-[two_sided_delimiter 0, .2, 0]
+[double_quotation_marks 0, .2, 0]
 "					String literal
 
 #functions are supplied by the program now
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 9f01674efe13c1780f2e04f66ff8c482380fb894..5c0ea2f7744ea28eb2c3e4c2b2ad6710ec52a3c9 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -11014,6 +11014,39 @@
       <key>Value</key>
       <integer>0</integer>
     </map>
+    <key>TranslationService</key>
+    <map>
+      <key>Comment</key>
+      <string>Translation API to use. (google|bing)</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>String</string>
+      <key>Value</key>
+      <string>bing</string>
+    </map>
+    <key>GoogleTranslateAPIKey</key>
+    <map>
+      <key>Comment</key>
+      <string>Google Translate API key</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>String</string>
+      <key>Value</key>
+      <string></string>
+    </map>
+    <key>BingTranslateAPIKey</key>
+    <map>
+      <key>Comment</key>
+      <string>Bing AppID to use with the Microsoft Translator API</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>String</string>
+      <key>Value</key>
+      <string></string>
+    </map>
     <key>TutorialURL</key>
     <map>
       <key>Comment</key>
@@ -13350,7 +13383,7 @@
       <key>Comment</key>
       <string>Settings that are a applied per session (not saved).</string>
       <key>Persist</key>
-      <integer>1</integer>
+      <integer>0</integer>
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
@@ -13361,7 +13394,7 @@
       <key>Comment</key>
       <string>User settings that are a applied per session (not saved).</string>
       <key>Persist</key>
-      <integer>1</integer>
+      <integer>0</integer>
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
diff --git a/indra/newview/app_settings/settings_per_account.xml b/indra/newview/app_settings/settings_per_account.xml
index d8295ddb876a3d60eb6771f16f4a70fa1da17e29..6ed4480cb193050ed1db4bd24904f3763e66b92c 100644
--- a/indra/newview/app_settings/settings_per_account.xml
+++ b/indra/newview/app_settings/settings_per_account.xml
@@ -33,6 +33,17 @@
         <key>Value</key>
             <string />
         </map>
+    <key>DisplayDestinationsOnInitialRun</key>
+        <map>
+        <key>Comment</key>
+          <string>Display the destinations guide when a user first launches FUI.</string>
+        <key>Persist</key>
+          <integer>1</integer>
+        <key>Type</key>
+          <string>Boolean</string>
+        <key>Value</key>
+          <integer>1</integer>
+        </map>
     <key>LastInventoryInboxActivity</key>
         <map>
         <key>Comment</key>
diff --git a/indra/newview/character/avatar_lad.xml b/indra/newview/character/avatar_lad.xml
index 5d6b10c0470970367c0ea1b319ba4bf26217da07..6641c80b94b524e13c8a6efcab159673cf44b338 100644
--- a/indra/newview/character/avatar_lad.xml
+++ b/indra/newview/character/avatar_lad.xml
@@ -393,7 +393,26 @@
        max_attachment_offset="2.0"
        visible_in_first_person="true" />
        
-
+    <attachment_point
+       id="39"
+       group="9"
+       pie_slice="1"
+       name="Neck"
+       joint="mNeck"
+       position="0 0 0"
+       rotation="0 0 0"
+       visible_in_first_person="true" />
+  	
+  	<attachment_point
+       id="40"
+       group="9"
+       pie_slice="2"
+       name="Avatar Center"
+       joint="mRoot"
+       position="0 0 0"
+       rotation="0 0 0"
+       visible_in_first_person="true" />
+  	
     <param
        id="32"
        group="1"
diff --git a/indra/newview/featuretable.txt b/indra/newview/featuretable.txt
old mode 100644
new mode 100755
diff --git a/indra/newview/installers/windows/lang_ru.nsi b/indra/newview/installers/windows/lang_ru.nsi
index bd37e4ad4c1429750722df6f53214778d8a30cf7..de7affe08a3f5ff4f7e9619600ee715b0043e235 100644
Binary files a/indra/newview/installers/windows/lang_ru.nsi and b/indra/newview/installers/windows/lang_ru.nsi differ
diff --git a/indra/newview/installers/windows/lang_tr.nsi b/indra/newview/installers/windows/lang_tr.nsi
index 7b4ce358f3bce3f70189e3542a784bbd136f8bb1..5e7e3d797bc1b8e709396876d847798252a77ce4 100644
Binary files a/indra/newview/installers/windows/lang_tr.nsi and b/indra/newview/installers/windows/lang_tr.nsi differ
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
old mode 100644
new mode 100755
index ecfd101eebf2377263dccf11fd879829abff5270..dc88c81d6a675c5b19447d3da46d7b41e943d7c4
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -2825,48 +2825,15 @@ void LLAppViewer::initUpdater()
 
 void LLAppViewer::checkForCrash(void)
 {
-    
 #if LL_SEND_CRASH_REPORTS
 	if (gLastExecEvent == LAST_EXEC_FROZE)
     {
-        llinfos << "Last execution froze, requesting to send crash report." << llendl;
-        //
-        // Pop up a freeze or crash warning dialog
-        //
-        S32 choice;
-	const S32 cb = gCrashSettings.getS32("CrashSubmitBehavior");
-        if(cb == CRASH_BEHAVIOR_ASK)
-        {
-            std::ostringstream msg;
-			msg << LLTrans::getString("MBFrozenCrashed");
-			std::string alert = LLTrans::getString("APP_NAME") + " " + LLTrans::getString("MBAlert");
-            choice = OSMessageBox(msg.str(),
-                                  alert,
-                                  OSMB_YESNO);
-        } 
-        else if(cb == CRASH_BEHAVIOR_NEVER_SEND)
-        {
-            choice = OSBTN_NO;
-        }
-        else
-        {
-            choice = OSBTN_YES;
-        }
-
-        if (OSBTN_YES == choice)
-        {
-            llinfos << "Sending crash report." << llendl;
+        llinfos << "Last execution froze, sending a crash report." << llendl;
             
-            bool report_freeze = true;
-            handleCrashReporting(report_freeze);
-        }
-        else
-        {
-            llinfos << "Not sending crash report." << llendl;
-        }
+		bool report_freeze = true;
+		handleCrashReporting(report_freeze);
     }
 #endif // LL_SEND_CRASH_REPORTS    
-    
 }
 
 //
diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp
index 98de41887852ee6178b2f42256d68b922daab3e1..6c9058caf14425451f8421ad5de0b5bd480fca0f 100644
--- a/indra/newview/llfavoritesbar.cpp
+++ b/indra/newview/llfavoritesbar.cpp
@@ -443,17 +443,17 @@ BOOL LLFavoritesBarCtrl::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
 			{
 				setLandingTab(dest);
 			}
-			/*
-			 * the condition dest == NULL can be satisfied not only in the case
-			 * of dragging to the right from the last tab of the favbar. there is a
-			 * small gap between each tab. if the user drags something exactly there
-			 * then mLandingTab will be set to NULL and the dragged item will be pushed
-			 * to the end of the favorites bar. this is incorrect behavior. that's why
-			 * we need an additional check which excludes the case described previously
-			 * making sure that the mouse pointer is beyond the last tab.
-			 */
-			else if (mLastTab && x >= mLastTab->getRect().mRight)
+			else if (mLastTab && (x >= mLastTab->getRect().mRight))
 			{
+				/*
+				 * the condition dest == NULL can be satisfied not only in the case
+				 * of dragging to the right from the last tab of the favbar. there is a
+				 * small gap between each tab. if the user drags something exactly there
+				 * then mLandingTab will be set to NULL and the dragged item will be pushed
+				 * to the end of the favorites bar. this is incorrect behavior. that's why
+				 * we need an additional check which excludes the case described previously
+				 * making sure that the mouse pointer is beyond the last tab.
+				 */
 				setLandingTab(NULL);
 			}
 
@@ -467,7 +467,6 @@ BOOL LLFavoritesBarCtrl::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
 				if (drop)
 				{
 					handleExistingFavoriteDragAndDrop(x, y);
-					showDragMarker(FALSE);
 				}
 			}
 			else
@@ -490,7 +489,6 @@ BOOL LLFavoritesBarCtrl::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
 						setLandingTab(NULL);
 					}
 					handleNewFavoriteDragAndDrop(item, favorites_id, x, y);
-					showDragMarker(FALSE);
 				}
 			}
 		}
@@ -504,20 +502,29 @@ BOOL LLFavoritesBarCtrl::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
 
 void LLFavoritesBarCtrl::handleExistingFavoriteDragAndDrop(S32 x, S32 y)
 {
+	// Identify the button hovered and the side to drop
 	LLFavoriteLandmarkButton* dest = dynamic_cast<LLFavoriteLandmarkButton*>(mLandingTab);
+	bool insert_before = true;	
+	if (!dest)
+	{
+		insert_before = false;
+		dest = dynamic_cast<LLFavoriteLandmarkButton*>(mLastTab);
+	}
 
-	// there is no need to handle if an item was dragged onto itself
+	// There is no need to handle if an item was dragged onto itself
 	if (dest && dest->getLandmarkId() == mDragItemId)
 	{
 		return;
 	}
 
+	// Insert the dragged item in the right place
 	if (dest)
 	{
-		LLInventoryModel::updateItemsOrder(mItems, mDragItemId, dest->getLandmarkId());
+		LLInventoryModel::updateItemsOrder(mItems, mDragItemId, dest->getLandmarkId(), insert_before);
 	}
 	else
 	{
+		// This can happen when the item list is empty
 		mItems.push_back(gInventory.getItem(mDragItemId));
 	}
 
@@ -534,22 +541,35 @@ void LLFavoritesBarCtrl::handleExistingFavoriteDragAndDrop(S32 x, S32 y)
 
 void LLFavoritesBarCtrl::handleNewFavoriteDragAndDrop(LLInventoryItem *item, const LLUUID& favorites_id, S32 x, S32 y)
 {
-	LLFavoriteLandmarkButton* dest = dynamic_cast<LLFavoriteLandmarkButton*>(mLandingTab);
-
-	// there is no need to handle if an item was dragged onto itself
+	// Identify the button hovered and the side to drop
+	LLFavoriteLandmarkButton* dest = NULL;
+	bool insert_before = true;
+	if (!mItems.empty())
+	{
+		dest = dynamic_cast<LLFavoriteLandmarkButton*>(mLandingTab);
+		if (!dest)
+		{
+			insert_before = false;
+			dest = dynamic_cast<LLFavoriteLandmarkButton*>(mLastTab);
+		}
+	}
+	
+	// There is no need to handle if an item was dragged onto itself
 	if (dest && dest->getLandmarkId() == mDragItemId)
 	{
 		return;
 	}
-
+	
 	LLPointer<LLViewerInventoryItem> viewer_item = new LLViewerInventoryItem(item);
 
+	// Insert the dragged item in the right place
 	if (dest)
 	{
-		insertBeforeItem(mItems, dest->getLandmarkId(), viewer_item);
+		insertItem(mItems, dest->getLandmarkId(), viewer_item, insert_before);
 	}
 	else
 	{
+		// This can happen when the item list is empty
 		mItems.push_back(viewer_item);
 	}
 
@@ -642,7 +662,7 @@ void LLFavoritesBarCtrl::draw()
 		{
 			// mouse pointer hovers over an existing tab
 			LLRect rect = mLandingTab->getRect();
-			mImageDragIndication->draw(rect.mLeft - w/2, rect.getHeight(), w, h);
+			mImageDragIndication->draw(rect.mLeft, rect.getHeight(), w, h);
 		}
 		else if (mLastTab)
 		{
@@ -650,6 +670,8 @@ void LLFavoritesBarCtrl::draw()
 			LLRect rect = mLastTab->getRect();
 			mImageDragIndication->draw(rect.mRight, rect.getHeight(), w, h);
 		}
+		// Once drawn, mark this false so we won't draw it again (unless we hit the favorite bar again)
+		mShowDragMarker = FALSE;
 	}
 }
 
@@ -721,7 +743,7 @@ void LLFavoritesBarCtrl::updateButtons()
 	if (first_changed_item_index <= mItems.count())
 	{
 		// Rebuild the buttons only
-		// child_list_t is a linked list, so safe to erase from the middle if we pre-incrament the iterator
+		// child_list_t is a linked list, so safe to erase from the middle if we pre-increment the iterator
 
 		while (child_it != childs->end())
 		{
@@ -810,9 +832,9 @@ LLButton* LLFavoritesBarCtrl::createButton(const LLPointer<LLViewerInventoryItem
 
 	/**
 	 * WORKAROUND:
-	 * there are some problem with displaying of fonts in buttons. 
-	 * Empty space (or ...) is displaying instead of last symbols, even though the width of the button is enough.
-	 * Problem will gone, if we  stretch out the button. For that reason I have to put additional  20 pixels.
+	 * There are some problem with displaying of fonts in buttons. 
+	 * Empty space or ellipsis might be displayed instead of last symbols, even though the width of the button is enough.
+	 * The problem disappears if we pad the button with 20 pixels.
 	 */
 	int required_width = mFont->getWidth(item->getName()) + 20;
 	int width = required_width > def_button_width? def_button_width : required_width;
@@ -840,7 +862,6 @@ LLButton* LLFavoritesBarCtrl::createButton(const LLPointer<LLViewerInventoryItem
 	fav_btn->setRect(butt_rect);
 	// change only left and save bottom
 	fav_btn->setFont(mFont);
-	fav_btn->setName(item->getName());
 	fav_btn->setLabel(item->getName());
 	fav_btn->setToolTip(item->getName());
 	fav_btn->setCommitCallback(boost::bind(&LLFavoritesBarCtrl::onButtonClick, this, item->getUUID()));
@@ -1298,25 +1319,24 @@ BOOL LLFavoritesBarCtrl::handleHover(S32 x, S32 y, MASK mask)
 
 LLUICtrl* LLFavoritesBarCtrl::findChildByLocalCoords(S32 x, S32 y)
 {
-	LLUICtrl* ctrl = 0;
-	S32 screenX, screenY;
+	LLUICtrl* ctrl = NULL;
 	const child_list_t* list = getChildList();
 
-	localPointToScreen(x, y, &screenX, &screenY);
-
-	// look for a child which contains the point (screenX, screenY) in it's rectangle
 	for (child_list_const_iter_t i = list->begin(); i != list->end(); ++i)
 	{
-		LLRect rect;
-		localRectToScreen((*i)->getRect(), &rect);
-
-		if (rect.pointInRect(screenX, screenY))
+		// Look only for children that are favorite buttons
+		if ((*i)->getName() == "favorites_bar_btn")
 		{
-			ctrl = dynamic_cast<LLUICtrl*>(*i);
-			break;
+			LLRect rect = (*i)->getRect();
+			// We consider a button hit if the cursor is left of the right side
+			// This makes the hit a bit less finicky than hitting directly on the button itself
+			if (x <= rect.mRight)
+			{
+				ctrl = dynamic_cast<LLUICtrl*>(*i);
+				break;
+			}
 		}
 	}
-
 	return ctrl;
 }
 
@@ -1337,29 +1357,28 @@ BOOL LLFavoritesBarCtrl::needToSaveItemsOrder(const LLInventoryModel::item_array
 	return result;
 }
 
-LLInventoryModel::item_array_t::iterator LLFavoritesBarCtrl::findItemByUUID(LLInventoryModel::item_array_t& items, const LLUUID& id)
+void LLFavoritesBarCtrl::insertItem(LLInventoryModel::item_array_t& items, const LLUUID& dest_item_id, LLViewerInventoryItem* insertedItem, bool insert_before)
 {
-	LLInventoryModel::item_array_t::iterator result = items.end();
+	// Get the iterator to the destination item
+	LLInventoryModel::item_array_t::iterator it_dest = LLInventoryModel::findItemIterByUUID(items, dest_item_id);
+	if (it_dest == items.end())
+		return;
 
-	for (LLInventoryModel::item_array_t::iterator i = items.begin(); i != items.end(); ++i)
+	// Go to the next element if one wishes to insert after the dest element
+	if (!insert_before)
 	{
-		if ((*i)->getUUID() == id)
-		{
-			result = i;
-			break;
-		}
+		++it_dest;
 	}
-
-	return result;
-}
-
-void LLFavoritesBarCtrl::insertBeforeItem(LLInventoryModel::item_array_t& items, const LLUUID& beforeItemId, LLViewerInventoryItem* insertedItem)
-{
-	LLViewerInventoryItem* beforeItem = gInventory.getItem(beforeItemId);
-	llassert(beforeItem);
-	if (beforeItem)
+	
+	// Insert the source item in the right place
+	if (it_dest != items.end())
+	{
+		items.insert(it_dest, insertedItem);
+	}
+	else 
 	{
-		items.insert(findItemByUUID(items, beforeItem->getUUID()), insertedItem);
+		// Append to the list if it_dest reached the end
+		items.push_back(insertedItem);
 	}
 }
 
diff --git a/indra/newview/llfavoritesbar.h b/indra/newview/llfavoritesbar.h
index 1b11d6196e8c787d85f4190f235442f2490993ac..2f75b3bb0eec119a4b66a660c6dd4a2abd5ea656 100644
--- a/indra/newview/llfavoritesbar.h
+++ b/indra/newview/llfavoritesbar.h
@@ -130,7 +130,7 @@ class LLFavoritesBarCtrl : public LLUICtrl, public LLInventoryObserver
 	 * inserts an item identified by insertedItemId BEFORE an item identified by beforeItemId.
 	 * this function assumes that an item identified by insertedItemId doesn't exist in items array.
 	 */
-	void insertBeforeItem(LLInventoryModel::item_array_t& items, const LLUUID& beforeItemId, LLViewerInventoryItem* insertedItem);
+	void insertItem(LLInventoryModel::item_array_t& items, const LLUUID& dest_item_id, LLViewerInventoryItem* insertedItem, bool insert_before);
 
 	// finds an item by it's UUID in the items array
 	LLInventoryModel::item_array_t::iterator findItemByUUID(LLInventoryModel::item_array_t& items, const LLUUID& id);
diff --git a/indra/newview/llfloaterabout.cpp b/indra/newview/llfloaterabout.cpp
index 22f500ba150fdb5f60ae0c61a405c630073ad56a..83fb887d81b3e2ad2c19fa193886d19e7ba3aa3e 100644
--- a/indra/newview/llfloaterabout.cpp
+++ b/indra/newview/llfloaterabout.cpp
@@ -384,6 +384,9 @@ void LLFloaterAbout::setSupportText(const std::string& server_release_notes_url)
 	// Render the LLSD from getInfo() as a format_map_t
 	LLStringUtil::format_map_t args;
 
+	// allow the "Release Notes" URL label to be localized
+	args["ReleaseNotes"] = LLTrans::getString("ReleaseNotes");
+
 	for (LLSD::map_const_iterator ii(info.beginMap()), iend(info.endMap());
 		 ii != iend; ++ii)
 	{
diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index 5fdeb46daaf7088a57406ab5deb2031d53a5cc8d..a333989e7e5951319f38aa05027acc803965821e 100755
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -345,6 +345,7 @@ LLFloaterPreference::LLFloaterPreference(const LLSD& key)
 	mCommitCallbackRegistrar.add("Pref.MaturitySettings",		boost::bind(&LLFloaterPreference::onChangeMaturity, this));
 	mCommitCallbackRegistrar.add("Pref.BlockList",				boost::bind(&LLFloaterPreference::onClickBlockList, this));
 	mCommitCallbackRegistrar.add("Pref.Proxy",					boost::bind(&LLFloaterPreference::onClickProxySettings, this));
+	mCommitCallbackRegistrar.add("Pref.TranslationSettings",	boost::bind(&LLFloaterPreference::onClickTranslationSettings, this));
 	
 	sSkin = gSavedSettings.getString("SkinCurrent");
 
@@ -599,6 +600,9 @@ void LLFloaterPreference::cancel()
 	}
 	// hide joystick pref floater
 	LLFloaterReg::hideInstance("pref_joystick");
+
+	// hide translation settings floater
+	LLFloaterReg::hideInstance("prefs_translation");
 	
 	// cancel hardware menu
 	LLFloaterHardwareSettings* hardware_settings = LLFloaterReg::getTypedInstance<LLFloaterHardwareSettings>("prefs_hardware_settings");
@@ -1505,6 +1509,11 @@ void LLFloaterPreference::onClickProxySettings()
 	LLFloaterReg::showInstance("prefs_proxy");
 }
 
+void LLFloaterPreference::onClickTranslationSettings()
+{
+	LLFloaterReg::showInstance("prefs_translation");
+}
+
 void LLFloaterPreference::onClickActionChange()
 {
 	mClickActionDirty = true;
diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h
index 5c74e9f60ccedd72de6aa1e41d76bf46f39c739c..7ee3294478b9e6e2da634590c7a0ba76fca6eba8 100644
--- a/indra/newview/llfloaterpreference.h
+++ b/indra/newview/llfloaterpreference.h
@@ -156,6 +156,7 @@ class LLFloaterPreference : public LLFloater, public LLAvatarPropertiesObserver
 	void onChangeMaturity();
 	void onClickBlockList();
 	void onClickProxySettings();
+	void onClickTranslationSettings();
 	void applyUIColor(LLUICtrl* ctrl, const LLSD& param);
 	void getUIColor(LLUICtrl* ctrl, const LLSD& param);
 	
diff --git a/indra/newview/llfloatertoybox.cpp b/indra/newview/llfloatertoybox.cpp
index 66f644748eaef62735a83c1549a24f53d930bd15..f527937e8f5e20598618f3e40e15616e486d1a21 100644
--- a/indra/newview/llfloatertoybox.cpp
+++ b/indra/newview/llfloatertoybox.cpp
@@ -63,6 +63,7 @@ BOOL LLFloaterToybox::postBuild()
 	mToolBar->setStartDragCallback(boost::bind(LLToolBarView::startDragTool,_1,_2,_3));
 	mToolBar->setHandleDragCallback(boost::bind(LLToolBarView::handleDragTool,_1,_2,_3,_4));
 	mToolBar->setHandleDropCallback(boost::bind(LLToolBarView::handleDropTool,_1,_2,_3,_4));
+	mToolBar->setButtonEnterCallback(boost::bind(&LLFloaterToybox::onToolBarButtonEnter,this,_1));
 	
 	//
 	// Sort commands by localized labels so they will appear alphabetized in all languages
@@ -105,8 +106,8 @@ void LLFloaterToybox::draw()
 	{
 		const LLCommandId& id = *it;
 
-		const bool commandOnToolbar = gToolBarView->hasCommand(id);
-		mToolBar->enableCommand(id, !commandOnToolbar);
+		const bool command_not_present = (gToolBarView->hasCommand(id) == LLToolBarView::TOOLBAR_NONE);
+		mToolBar->enableCommand(id, command_not_present);
 	}
 
 	LLFloater::draw();
@@ -140,5 +141,30 @@ BOOL LLFloaterToybox::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
 	return mToolBar->handleDragAndDrop(local_x, local_y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg);
 }
 
+void LLFloaterToybox::onToolBarButtonEnter(LLView* button)
+{
+	std::string suffix = "";
+
+	LLCommandId commandId(button->getName());
+	LLCommand* command = LLCommandManager::instance().getCommand(commandId);
+
+	if (command)
+	{
+		S32 command_loc = gToolBarView->hasCommand(commandId);
+
+		switch(command_loc)
+		{
+		case LLToolBarView::TOOLBAR_BOTTOM:	suffix = LLTrans::getString("Toolbar_Bottom_Tooltip");	break;
+		case LLToolBarView::TOOLBAR_LEFT:	suffix = LLTrans::getString("Toolbar_Left_Tooltip");	break;
+		case LLToolBarView::TOOLBAR_RIGHT:	suffix = LLTrans::getString("Toolbar_Right_Tooltip");	break;
+
+		default:
+			break;
+		}
+	}
+
+	mToolBar->setTooltipButtonSuffix(suffix);
+}
+
 
 // eof
diff --git a/indra/newview/llfloatertoybox.h b/indra/newview/llfloatertoybox.h
index 62bf68680dafd73afb32d6e4e2df17ea07531a1e..6f0275b8fe20876d9f46574f8e710a923d7d4459 100644
--- a/indra/newview/llfloatertoybox.h
+++ b/indra/newview/llfloatertoybox.h
@@ -52,6 +52,8 @@ class LLFloaterToybox : public LLFloater
 protected:
 	void onBtnRestoreDefaults();
 
+	void onToolBarButtonEnter(LLView* button);
+
 public:
 	LLToolBar *	mToolBar;
 };
diff --git a/indra/newview/llfloatertranslationsettings.cpp b/indra/newview/llfloatertranslationsettings.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..959edff713fb35da98d6b18b7d5843d4da4a250b
--- /dev/null
+++ b/indra/newview/llfloatertranslationsettings.cpp
@@ -0,0 +1,296 @@
+/** 
+ * @file llfloatertranslationsettings.cpp
+ * @brief Machine translation settings for chat
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "llfloatertranslationsettings.h"
+
+// Viewer includes
+#include "lltranslate.h"
+#include "llviewercontrol.h" // for gSavedSettings
+
+// Linden library includes
+#include "llbutton.h"
+#include "llcheckboxctrl.h"
+#include "llcombobox.h"
+#include "llfloaterreg.h"
+#include "lllineeditor.h"
+#include "llnotificationsutil.h"
+#include "llradiogroup.h"
+
+class EnteredKeyVerifier : public LLTranslate::KeyVerificationReceiver
+{
+public:
+	EnteredKeyVerifier(LLTranslate::EService service, bool alert)
+	:	LLTranslate::KeyVerificationReceiver(service)
+	,	mAlert(alert)
+	{
+	}
+
+private:
+	/*virtual*/ void setVerificationStatus(bool ok)
+	{
+		LLFloaterTranslationSettings* floater =
+			LLFloaterReg::getTypedInstance<LLFloaterTranslationSettings>("prefs_translation");
+
+		if (!floater)
+		{
+			llwarns << "Cannot find translation settings floater" << llendl;
+			return;
+		}
+
+		switch (getService())
+		{
+		case LLTranslate::SERVICE_BING:
+			floater->setBingVerified(ok, mAlert);
+			break;
+		case LLTranslate::SERVICE_GOOGLE:
+			floater->setGoogleVerified(ok, mAlert);
+			break;
+		}
+	}
+
+	bool mAlert;
+};
+
+LLFloaterTranslationSettings::LLFloaterTranslationSettings(const LLSD& key)
+:	LLFloater(key)
+,	mMachineTranslationCB(NULL)
+,	mLanguageCombo(NULL)
+,	mTranslationServiceRadioGroup(NULL)
+,	mBingAPIKeyEditor(NULL)
+,	mGoogleAPIKeyEditor(NULL)
+,	mBingVerifyBtn(NULL)
+,	mGoogleVerifyBtn(NULL)
+,	mOKBtn(NULL)
+,	mBingKeyVerified(false)
+,	mGoogleKeyVerified(false)
+{
+}
+
+// virtual
+BOOL LLFloaterTranslationSettings::postBuild()
+{
+	mMachineTranslationCB = getChild<LLCheckBoxCtrl>("translate_chat_checkbox");
+	mLanguageCombo = getChild<LLComboBox>("translate_language_combo");
+	mTranslationServiceRadioGroup = getChild<LLRadioGroup>("translation_service_rg");
+	mBingAPIKeyEditor = getChild<LLLineEditor>("bing_api_key");
+	mGoogleAPIKeyEditor = getChild<LLLineEditor>("google_api_key");
+	mBingVerifyBtn = getChild<LLButton>("verify_bing_api_key_btn");
+	mGoogleVerifyBtn = getChild<LLButton>("verify_google_api_key_btn");
+	mOKBtn = getChild<LLButton>("ok_btn");
+
+	mMachineTranslationCB->setCommitCallback(boost::bind(&LLFloaterTranslationSettings::updateControlsEnabledState, this));
+	mTranslationServiceRadioGroup->setCommitCallback(boost::bind(&LLFloaterTranslationSettings::updateControlsEnabledState, this));
+	mOKBtn->setClickedCallback(boost::bind(&LLFloaterTranslationSettings::onBtnOK, this));
+	getChild<LLButton>("cancel_btn")->setClickedCallback(boost::bind(&LLFloater::closeFloater, this, false));
+	mBingVerifyBtn->setClickedCallback(boost::bind(&LLFloaterTranslationSettings::onBtnBingVerify, this));
+	mGoogleVerifyBtn->setClickedCallback(boost::bind(&LLFloaterTranslationSettings::onBtnGoogleVerify, this));
+
+	mBingAPIKeyEditor->setFocusReceivedCallback(boost::bind(&LLFloaterTranslationSettings::onEditorFocused, this, _1));
+	mBingAPIKeyEditor->setKeystrokeCallback(boost::bind(&LLFloaterTranslationSettings::onBingKeyEdited, this), NULL);
+	mGoogleAPIKeyEditor->setFocusReceivedCallback(boost::bind(&LLFloaterTranslationSettings::onEditorFocused, this, _1));
+	mGoogleAPIKeyEditor->setKeystrokeCallback(boost::bind(&LLFloaterTranslationSettings::onGoogleKeyEdited, this), NULL);
+
+	center();
+	return TRUE;
+}
+
+// virtual
+void LLFloaterTranslationSettings::onOpen(const LLSD& key)
+{
+	mMachineTranslationCB->setValue(gSavedSettings.getBOOL("TranslateChat"));
+	mLanguageCombo->setSelectedByValue(gSavedSettings.getString("TranslateLanguage"), TRUE);
+	mTranslationServiceRadioGroup->setSelectedByValue(gSavedSettings.getString("TranslationService"), TRUE);
+
+	std::string bing_key = gSavedSettings.getString("BingTranslateAPIKey");
+	if (!bing_key.empty())
+	{
+		mBingAPIKeyEditor->setText(bing_key);
+		mBingAPIKeyEditor->setTentative(FALSE);
+		verifyKey(LLTranslate::SERVICE_BING, bing_key, false);
+	}
+	else
+	{
+		mBingAPIKeyEditor->setTentative(TRUE);
+		mBingKeyVerified = FALSE;
+	}
+
+	std::string google_key = gSavedSettings.getString("GoogleTranslateAPIKey");
+	if (!google_key.empty())
+	{
+		mGoogleAPIKeyEditor->setText(google_key);
+		mGoogleAPIKeyEditor->setTentative(FALSE);
+		verifyKey(LLTranslate::SERVICE_GOOGLE, google_key, false);
+	}
+	else
+	{
+		mGoogleAPIKeyEditor->setTentative(TRUE);
+		mGoogleKeyVerified = FALSE;
+	}
+
+	updateControlsEnabledState();
+}
+
+void LLFloaterTranslationSettings::setBingVerified(bool ok, bool alert)
+{
+	if (alert)
+	{
+		showAlert(ok ? "bing_api_key_verified" : "bing_api_key_not_verified");
+	}
+
+	mBingKeyVerified = ok;
+	updateControlsEnabledState();
+}
+
+void LLFloaterTranslationSettings::setGoogleVerified(bool ok, bool alert)
+{
+	if (alert)
+	{
+		showAlert(ok ? "google_api_key_verified" : "google_api_key_not_verified");
+	}
+
+	mGoogleKeyVerified = ok;
+	updateControlsEnabledState();
+}
+
+std::string LLFloaterTranslationSettings::getSelectedService() const
+{
+	return mTranslationServiceRadioGroup->getSelectedValue().asString();
+}
+
+std::string LLFloaterTranslationSettings::getEnteredBingKey() const
+{
+	return mBingAPIKeyEditor->getTentative() ? LLStringUtil::null : mBingAPIKeyEditor->getText();
+}
+
+std::string LLFloaterTranslationSettings::getEnteredGoogleKey() const
+{
+	return mGoogleAPIKeyEditor->getTentative() ? LLStringUtil::null : mGoogleAPIKeyEditor->getText();
+}
+
+void LLFloaterTranslationSettings::showAlert(const std::string& msg_name) const
+{
+	LLSD args;
+	args["MESSAGE"] = getString(msg_name);
+	LLNotificationsUtil::add("GenericAlert", args);
+}
+
+void LLFloaterTranslationSettings::updateControlsEnabledState()
+{
+	// Enable/disable controls based on the checkbox value.
+	bool on = mMachineTranslationCB->getValue().asBoolean();
+	std::string service = getSelectedService();
+	bool bing_selected = service == "bing";
+	bool google_selected = service == "google";
+
+	mTranslationServiceRadioGroup->setEnabled(on);
+	mLanguageCombo->setEnabled(on);
+
+	getChild<LLTextBox>("bing_api_key_label")->setEnabled(on);
+	mBingAPIKeyEditor->setEnabled(on);
+
+	getChild<LLTextBox>("google_api_key_label")->setEnabled(on);
+	mGoogleAPIKeyEditor->setEnabled(on);
+
+	mBingAPIKeyEditor->setEnabled(on && bing_selected);
+	mGoogleAPIKeyEditor->setEnabled(on && google_selected);
+
+	mBingVerifyBtn->setEnabled(on && bing_selected &&
+		!mBingKeyVerified && !getEnteredBingKey().empty());
+	mGoogleVerifyBtn->setEnabled(on && google_selected &&
+		!mGoogleKeyVerified && !getEnteredGoogleKey().empty());
+
+	mOKBtn->setEnabled(
+		!on || (
+		(bing_selected && mBingKeyVerified) ||
+		(google_selected && mGoogleKeyVerified)
+	));
+}
+
+void LLFloaterTranslationSettings::verifyKey(int service, const std::string& key, bool alert)
+{
+	LLTranslate::KeyVerificationReceiverPtr receiver =
+		new EnteredKeyVerifier((LLTranslate::EService) service, alert);
+	LLTranslate::verifyKey(receiver, key);
+}
+
+void LLFloaterTranslationSettings::onEditorFocused(LLFocusableElement* control)
+{
+	LLLineEditor* editor = dynamic_cast<LLLineEditor*>(control);
+	if (editor && editor->hasTabStop()) // if enabled. getEnabled() doesn't work
+	{
+		if (editor->getTentative())
+		{
+			editor->setText(LLStringUtil::null);
+			editor->setTentative(FALSE);
+		}
+	}
+}
+
+void LLFloaterTranslationSettings::onBingKeyEdited()
+{
+	if (mBingAPIKeyEditor->isDirty())
+	{
+		setBingVerified(false, false);
+	}
+}
+
+void LLFloaterTranslationSettings::onGoogleKeyEdited()
+{
+	if (mGoogleAPIKeyEditor->isDirty())
+	{
+		setGoogleVerified(false, false);
+	}
+}
+
+void LLFloaterTranslationSettings::onBtnBingVerify()
+{
+	std::string key = getEnteredBingKey();
+	if (!key.empty())
+	{
+		verifyKey(LLTranslate::SERVICE_BING, key);
+	}
+}
+
+void LLFloaterTranslationSettings::onBtnGoogleVerify()
+{
+	std::string key = getEnteredGoogleKey();
+	if (!key.empty())
+	{
+		verifyKey(LLTranslate::SERVICE_GOOGLE, key);
+	}
+}
+
+void LLFloaterTranslationSettings::onBtnOK()
+{
+	gSavedSettings.setBOOL("TranslateChat", mMachineTranslationCB->getValue().asBoolean());
+	gSavedSettings.setString("TranslateLanguage", mLanguageCombo->getSelectedValue().asString());
+	gSavedSettings.setString("TranslationService", getSelectedService());
+	gSavedSettings.setString("BingTranslateAPIKey", getEnteredBingKey());
+	gSavedSettings.setString("GoogleTranslateAPIKey", getEnteredGoogleKey());
+	closeFloater(false);
+}
diff --git a/indra/newview/llfloatertranslationsettings.h b/indra/newview/llfloatertranslationsettings.h
new file mode 100644
index 0000000000000000000000000000000000000000..9b47ad72ed20bc16b7300c4c999bd982768f63fc
--- /dev/null
+++ b/indra/newview/llfloatertranslationsettings.h
@@ -0,0 +1,76 @@
+/** 
+ * @file llfloatertranslationsettings.h
+ * @brief Machine translation settings for chat
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLFLOATERTRANSLATIONSETTINGS_H
+#define LL_LLFLOATERTRANSLATIONSETTINGS_H
+
+#include "llfloater.h"
+
+class LLButton;
+class LLCheckBoxCtrl;
+class LLComboBox;
+class LLLineEditor;
+class LLRadioGroup;
+
+class LLFloaterTranslationSettings : public LLFloater
+{
+public:
+	LLFloaterTranslationSettings(const LLSD& key);
+	/*virtual*/ BOOL postBuild();
+	/*virtual*/ void onOpen(const LLSD& key);
+
+	void setBingVerified(bool ok, bool alert);
+	void setGoogleVerified(bool ok, bool alert);
+
+private:
+	std::string getSelectedService() const;
+	std::string getEnteredBingKey() const;
+	std::string getEnteredGoogleKey() const;
+	void showAlert(const std::string& msg_name) const;
+	void updateControlsEnabledState();
+	void verifyKey(int service, const std::string& key, bool alert = true);
+
+	void onEditorFocused(LLFocusableElement* control);
+	void onBingKeyEdited();
+	void onGoogleKeyEdited();
+	void onBtnBingVerify();
+	void onBtnGoogleVerify();
+	void onBtnOK();
+
+	LLCheckBoxCtrl* mMachineTranslationCB;
+	LLComboBox* mLanguageCombo;
+	LLLineEditor* mBingAPIKeyEditor;
+	LLLineEditor* mGoogleAPIKeyEditor;
+	LLRadioGroup* mTranslationServiceRadioGroup;
+	LLButton* mBingVerifyBtn;
+	LLButton* mGoogleVerifyBtn;
+	LLButton* mOKBtn;
+
+	bool mBingKeyVerified;
+	bool mGoogleKeyVerified;
+};
+
+#endif // LL_LLFLOATERTRANSLATIONSETTINGS_H
diff --git a/indra/newview/llglsandbox.cpp b/indra/newview/llglsandbox.cpp
index fa3f546157b17f35a8bdb7093c2ea9fb893b0911..2b9c113a72aac742b346230709be2f161235de69 100644
--- a/indra/newview/llglsandbox.cpp
+++ b/indra/newview/llglsandbox.cpp
@@ -240,7 +240,7 @@ void LLToolSelectRect::handleRectangleSelection(S32 x, S32 y, MASK mask)
 	gViewerWindow->setup3DRender();
 }
 
-const F32 WIND_ALTITUDE			= 180.f;
+const F32 WIND_RELATIVE_ALTITUDE			= 25.f;
 
 void LLWind::renderVectors()
 {
@@ -254,13 +254,13 @@ void LLWind::renderVectors()
 	gGL.pushMatrix();
 	LLVector3 origin_agent;
 	origin_agent = gAgent.getPosAgentFromGlobal(mOriginGlobal);
-	gGL.translatef(origin_agent.mV[VX], origin_agent.mV[VY], WIND_ALTITUDE);
+	gGL.translatef(origin_agent.mV[VX], origin_agent.mV[VY], gAgent.getPositionAgent().mV[VZ] + WIND_RELATIVE_ALTITUDE);
 	for (j = 0; j < mSize; j++)
 	{
 		for (i = 0; i < mSize; i++)
 		{
-			x = mCloudVelX[i + j*mSize] * WIND_SCALE_HACK;
-			y = mCloudVelY[i + j*mSize] * WIND_SCALE_HACK;
+			x = mVelX[i + j*mSize] * WIND_SCALE_HACK;
+			y = mVelY[i + j*mSize] * WIND_SCALE_HACK;
 			gGL.pushMatrix();
 			gGL.translatef((F32)i * region_width_meters/mSize, (F32)j * region_width_meters/mSize, 0.0);
 			gGL.color3f(0,1,0);
diff --git a/indra/newview/llimfloatercontainer.cpp b/indra/newview/llimfloatercontainer.cpp
index 33cb3a54a7cf69b772e7b4b7e6a0d43f8424a30a..c8e48b0d428f0980c44c181129c9f63268b4b3c1 100644
--- a/indra/newview/llimfloatercontainer.cpp
+++ b/indra/newview/llimfloatercontainer.cpp
@@ -47,12 +47,13 @@ LLIMFloaterContainer::LLIMFloaterContainer(const LLSD& seed)
 
 LLIMFloaterContainer::~LLIMFloaterContainer()
 {
+	mNewMessageConnection.disconnect();
 	LLTransientFloaterMgr::getInstance()->removeControlView(LLTransientFloaterMgr::IM, this);
 }
 
 BOOL LLIMFloaterContainer::postBuild()
 {
-	LLIMModel::instance().mNewMsgSignal.connect(boost::bind(&LLIMFloaterContainer::onNewMessageReceived, this, _1));
+	mNewMessageConnection = LLIMModel::instance().mNewMsgSignal.connect(boost::bind(&LLIMFloaterContainer::onNewMessageReceived, this, _1));
 	// Do not call base postBuild to not connect to mCloseSignal to not close all floaters via Close button
 	// mTabContainer will be initialized in LLMultiFloater::addChild()
 	return TRUE;
diff --git a/indra/newview/llimfloatercontainer.h b/indra/newview/llimfloatercontainer.h
index 53dfcd78ff1c7868a217f4b3ec4607828cc3b2c6..892ecef48d13ad5c07e64789b02a459612ebc7f5 100644
--- a/indra/newview/llimfloatercontainer.h
+++ b/indra/newview/llimfloatercontainer.h
@@ -62,7 +62,7 @@ class LLIMFloaterContainer : public LLMultiFloater
 private:
 	typedef std::map<LLUUID,LLFloater*> avatarID_panel_map_t;
 	avatarID_panel_map_t mSessions;
-
+	boost::signals2::connection mNewMessageConnection;
 
 	void onNewMessageReceived(const LLSD& data);
 };
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index 6e9baed5f2d12cea5dfde0c39614320723cff0d3..ed4bb727cd77043c0baebad5c881c37614df6420 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -1679,13 +1679,44 @@ BOOL LLCallDialog::postBuild()
 {
 	if (!LLDockableFloater::postBuild() || !gToolBarView)
 		return FALSE;
+	
+	dockToToolbarButton("speak");
+	
+	return TRUE;
+}
+
+void LLCallDialog::dockToToolbarButton(const std::string& toolbarButtonName)
+{
+	LLDockControl::DocAt dock_pos = getDockControlPos(toolbarButtonName);
+	LLView *anchor_panel = gToolBarView->findChildView(toolbarButtonName);
 
-	LLView *anchor_panel = gToolBarView->findChildView("speak");
-	setDockControl(new LLDockControl(anchor_panel, this, getDockTongue(), LLDockControl::TOP));
+	setUseTongue(anchor_panel);
 
-	return TRUE;
+	setDockControl(new LLDockControl(anchor_panel, this, getDockTongue(dock_pos), dock_pos));
 }
 
+LLDockControl::DocAt LLCallDialog::getDockControlPos(const std::string& toolbarButtonName)
+{
+	LLCommandId command_id(toolbarButtonName);
+	S32 toolbar_loc = gToolBarView->hasCommand(command_id);
+	
+	LLDockControl::DocAt doc_at = LLDockControl::TOP;
+	
+	switch (toolbar_loc)
+	{
+		case LLToolBarView::TOOLBAR_LEFT:
+			doc_at = LLDockControl::RIGHT;
+			break;
+			
+		case LLToolBarView::TOOLBAR_RIGHT:
+			doc_at = LLDockControl::LEFT;
+			break;
+	}
+	
+	return doc_at;
+}
+
+
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 // Class LLOutgoingCallDialog
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/indra/newview/llimview.h b/indra/newview/llimview.h
index 93b604d36aa2fe82216e7175f837c932899d9a99..b1be26a169ee962e80701cfed82cec74e1dd1e8e 100644
--- a/indra/newview/llimview.h
+++ b/indra/newview/llimview.h
@@ -491,14 +491,16 @@ class LLCallDialog : public LLDockableFloater
 {
 public:
 	LLCallDialog(const LLSD& payload);
-	~LLCallDialog();
+	virtual ~LLCallDialog();
 
 	virtual BOOL postBuild();
 
+	void dockToToolbarButton(const std::string& toolbarButtonName);
+	
 	// check timer state
 	/*virtual*/ void draw();
 	/*virtual*/ void onOpen(const LLSD& key);
-
+	
 protected:
 	// lifetime timer for a notification
 	LLTimer	mLifetimeTimer;
@@ -519,6 +521,9 @@ class LLCallDialog : public LLDockableFloater
 	void setIcon(const LLSD& session_id, const LLSD& participant_id);
 
 	LLSD mPayload;
+
+private:
+	LLDockControl::DocAt getDockControlPos(const std::string& toolbarButtonName);
 };
 
 class LLIncomingCallDialog : public LLCallDialog
diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp
index e86c427ae28630b7bf4768566f3cf144350146d4..fb02fe0ff7cc310a6a7b990739eaa1185f8dba4a 100644
--- a/indra/newview/llinventorymodel.cpp
+++ b/indra/newview/llinventorymodel.cpp
@@ -2879,40 +2879,62 @@ BOOL LLInventoryModel::getIsFirstTimeInViewer2()
 	return sFirstTimeInViewer2;
 }
 
-static LLInventoryModel::item_array_t::iterator find_item_iter_by_uuid(LLInventoryModel::item_array_t& items, const LLUUID& id)
+LLInventoryModel::item_array_t::iterator LLInventoryModel::findItemIterByUUID(LLInventoryModel::item_array_t& items, const LLUUID& id)
 {
-	LLInventoryModel::item_array_t::iterator result = items.end();
+	LLInventoryModel::item_array_t::iterator curr_item = items.begin();
 
-	for (LLInventoryModel::item_array_t::iterator i = items.begin(); i != items.end(); ++i)
+	while (curr_item != items.end())
 	{
-		if ((*i)->getUUID() == id)
+		if ((*curr_item)->getUUID() == id)
 		{
-			result = i;
 			break;
 		}
+		++curr_item;
 	}
 
-	return result;
+	return curr_item;
 }
 
 // static
 // * @param[in, out] items - vector with items to be updated. It should be sorted in a right way
 // * before calling this method.
 // * @param src_item_id - LLUUID of inventory item to be moved in new position
-// * @param dest_item_id - LLUUID of inventory item before which source item should be placed.
-void LLInventoryModel::updateItemsOrder(LLInventoryModel::item_array_t& items, const LLUUID& src_item_id, const LLUUID& dest_item_id)
+// * @param dest_item_id - LLUUID of inventory item before (or after) which source item should 
+// * be placed.
+// * @param insert_before - bool indicating if src_item_id should be placed before or after 
+// * dest_item_id. Default is true.
+void LLInventoryModel::updateItemsOrder(LLInventoryModel::item_array_t& items, const LLUUID& src_item_id, const LLUUID& dest_item_id, bool insert_before)
 {
-	LLInventoryModel::item_array_t::iterator it_src = find_item_iter_by_uuid(items, src_item_id);
-	LLInventoryModel::item_array_t::iterator it_dest = find_item_iter_by_uuid(items, dest_item_id);
+	LLInventoryModel::item_array_t::iterator it_src = findItemIterByUUID(items, src_item_id);
+	LLInventoryModel::item_array_t::iterator it_dest = findItemIterByUUID(items, dest_item_id);
 
-	if (it_src == items.end() || it_dest == items.end()) return;
+	// If one of the passed UUID is not in the item list, bail out
+	if ((it_src == items.end()) || (it_dest == items.end())) 
+		return;
 
+	// Erase the source element from the list, keep a copy before erasing.
 	LLViewerInventoryItem* src_item = *it_src;
 	items.erase(it_src);
 	
-	// target iterator can not be valid because the container was changed, so update it.
-	it_dest = find_item_iter_by_uuid(items, dest_item_id);
-	items.insert(it_dest, src_item);
+	// Note: Target iterator is not valid anymore because the container was changed, so update it.
+	it_dest = findItemIterByUUID(items, dest_item_id);
+	
+	// Go to the next element if one wishes to insert after the dest element
+	if (!insert_before)
+	{
+		++it_dest;
+	}
+	
+	// Reinsert the source item in the right place
+	if (it_dest != items.end())
+	{
+		items.insert(it_dest, src_item);
+	}
+	else 
+	{
+		// Append to the list if it_dest reached the end
+		items.push_back(src_item);
+	}
 }
 
 //* @param[in] items vector of items in order to be saved.
diff --git a/indra/newview/llinventorymodel.h b/indra/newview/llinventorymodel.h
index e0e81f10064adc4101230daf709abe659a5aa1c4..a0fd455cf3b75d8131734ff5fabd2542eeff367b 100644
--- a/indra/newview/llinventorymodel.h
+++ b/indra/newview/llinventorymodel.h
@@ -332,11 +332,16 @@ class LLInventoryModel
 	//--------------------------------------------------------------------
 public:
 	// Changes items order by insertion of the item identified by src_item_id
-	// before the item identified by dest_item_id. Both items must exist in items array.
-	// Sorting is stored after method is finished. Only src_item_id is moved before dest_item_id.
+	// before (or after) the item identified by dest_item_id. Both items must exist in items array.
+	// Sorting is stored after method is finished. Only src_item_id is moved before (or after) dest_item_id.
+	// The parameter "insert_before" controls on which side of dest_item_id src_item_id gets rensinserted.
 	static void updateItemsOrder(LLInventoryModel::item_array_t& items, 
 								 const LLUUID& src_item_id, 
-								 const LLUUID& dest_item_id);
+								 const LLUUID& dest_item_id,
+								 bool insert_before = true);
+	// Gets an iterator on an item vector knowing only the item UUID.
+	// Returns end() of the vector if not found.
+	static LLInventoryModel::item_array_t::iterator findItemIterByUUID(LLInventoryModel::item_array_t& items, const LLUUID& id);
 
 	// Saves current order of the passed items using inventory item sort field.
 	// Resets 'items' sort fields and saves them on server.
diff --git a/indra/newview/llnearbychatbar.cpp b/indra/newview/llnearbychatbar.cpp
index a8113322618d4058a1317e1acfeeab3bc223a037..4674c8532409e4498e7a6baad234fe341d2b0d46 100644
--- a/indra/newview/llnearbychatbar.cpp
+++ b/indra/newview/llnearbychatbar.cpp
@@ -147,12 +147,12 @@ LLNearbyChatBar* LLNearbyChatBar::getInstance()
 
 void LLNearbyChatBar::showHistory()
 {
+	openFloater();
+
 	if (!getChildView("nearby_chat")->getVisible())
 	{
 		onToggleNearbyChatPanel();
 	}
-	
-	openFloater();
 }
 
 void LLNearbyChatBar::draw()
@@ -379,7 +379,10 @@ void LLNearbyChatBar::onToggleNearbyChatPanel()
 
 	if (nearby_chat->getVisible())
 	{
-		mExpandedHeight = getRect().getHeight();
+		if (!isMinimized())
+		{
+			mExpandedHeight = getRect().getHeight();
+		}
 		setResizeLimits(getMinWidth(), COLLAPSED_HEIGHT);
 		nearby_chat->setVisible(FALSE);
 		reshape(getRect().getWidth(), COLLAPSED_HEIGHT);
@@ -396,6 +399,15 @@ void LLNearbyChatBar::onToggleNearbyChatPanel()
 	}
 }
 
+void LLNearbyChatBar::setMinimized(BOOL b)
+{
+	if (b != LLFloater::isMinimized())
+	{
+		LLFloater::setMinimized(b);
+		getChildView("nearby_chat")->setVisible(!b);
+	}
+}
+
 void LLNearbyChatBar::onChatBoxCommit()
 {
 	if (mChatBox->getText().length() > 0)
diff --git a/indra/newview/llnearbychatbar.h b/indra/newview/llnearbychatbar.h
index bc00c1b9fce9c209e27b4db3c9ee6ae42a4ff39e..e9734899b3118166265e88efcd004f34e8373c53 100644
--- a/indra/newview/llnearbychatbar.h
+++ b/indra/newview/llnearbychatbar.h
@@ -60,6 +60,7 @@ class LLNearbyChatBar :	public LLFloater
 	static void sendChatFromViewer(const LLWString &wtext, EChatType type, BOOL animate);
 
 	void showHistory();
+	/*virtual*/void setMinimized(BOOL b);
 
 protected:
 	static BOOL matchChatTypeTrigger(const std::string& in_str, std::string* out_str);
diff --git a/indra/newview/llnearbychathandler.cpp b/indra/newview/llnearbychathandler.cpp
index 330a21ef653a0fe4bca67c623402d4a7cc16e9e3..c43c95a366d4598a42261a3cffdfe44c04e8d9b0 100644
--- a/indra/newview/llnearbychathandler.cpp
+++ b/indra/newview/llnearbychathandler.cpp
@@ -568,7 +568,8 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg,		// WARNING - not
 	sChatWatcher->post(notification);
 
 
-	if( chat_bar->getVisible() && nearby_chat->getVisible() 
+	if( !chat_bar->isMinimized()
+		&& nearby_chat->isInVisibleChain() 
 		|| ( chat_msg.mSourceType == CHAT_SOURCE_AGENT
 			&& gSavedSettings.getBOOL("UseChatBubbles") )
 		|| !mChannel->getShowToasts() ) // to prevent toasts in Busy mode
diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp
index d6c407d5489eff9b1058c8670a2f80d89b905190..9944b51902dd52b9b7450b429ca7a7585e9b14f0 100644
--- a/indra/newview/llpanelmaininventory.cpp
+++ b/indra/newview/llpanelmaininventory.cpp
@@ -111,7 +111,7 @@ LLPanelMainInventory::LLPanelMainInventory(const LLPanel::Params& p)
 	mCommitCallbackRegistrar.add("Inventory.EmptyTrash", boost::bind(&LLInventoryModel::emptyFolderType, &gInventory, "ConfirmEmptyTrash", LLFolderType::FT_TRASH));
 	mCommitCallbackRegistrar.add("Inventory.EmptyLostAndFound", boost::bind(&LLInventoryModel::emptyFolderType, &gInventory, "ConfirmEmptyLostAndFound", LLFolderType::FT_LOST_AND_FOUND));
 	mCommitCallbackRegistrar.add("Inventory.DoCreate", boost::bind(&LLPanelMainInventory::doCreate, this, _2));
- 	mCommitCallbackRegistrar.add("Inventory.NewWindow", boost::bind(&LLPanelMainInventory::newWindow, this));
+ 	//mCommitCallbackRegistrar.add("Inventory.NewWindow", boost::bind(&LLPanelMainInventory::newWindow, this));
 	mCommitCallbackRegistrar.add("Inventory.ShowFilters", boost::bind(&LLPanelMainInventory::toggleFindOptions, this));
 	mCommitCallbackRegistrar.add("Inventory.ResetFilters", boost::bind(&LLPanelMainInventory::resetFilters, this));
 	mCommitCallbackRegistrar.add("Inventory.SetSortBy", boost::bind(&LLPanelMainInventory::setSortBy, this, _2));
diff --git a/indra/newview/llsyswellwindow.cpp b/indra/newview/llsyswellwindow.cpp
index ffe864e2207785e3436c9581bb0c300e2d850fd8..3aa6a3b7e5b7b428ffbd6e77ae6b55d91f2fab1f 100644
--- a/indra/newview/llsyswellwindow.cpp
+++ b/indra/newview/llsyswellwindow.cpp
@@ -203,10 +203,9 @@ void LLSysWellWindow::reshapeWindow()
 		{
 			new_window_height = MAX_WINDOW_HEIGHT;
 		}
-		S32 newY = curRect.mTop + new_window_height - curRect.getHeight();
-		S32 newWidth = curRect.getWidth() < MIN_WINDOW_WIDTH ? MIN_WINDOW_WIDTH
-			: curRect.getWidth();
-		curRect.setLeftTopAndSize(curRect.mLeft, newY, newWidth, new_window_height);
+		S32 newWidth = curRect.getWidth() < MIN_WINDOW_WIDTH ? MIN_WINDOW_WIDTH	: curRect.getWidth();
+
+		curRect.setLeftTopAndSize(curRect.mLeft, curRect.mTop, newWidth, new_window_height);
 		reshape(curRect.getWidth(), curRect.getHeight(), TRUE);
 		setRect(curRect);
 	}
diff --git a/indra/newview/lltoolbarview.cpp b/indra/newview/lltoolbarview.cpp
index 5d2cebe031aa1e48e552c34602a9d0e5951276e5..ed1dfbb8cd5cb3f3508fb6d556b697ac4bdd76a4 100644
--- a/indra/newview/lltoolbarview.cpp
+++ b/indra/newview/lltoolbarview.cpp
@@ -30,12 +30,16 @@
 #include "lltoolbarview.h"
 
 #include "llappviewer.h"
+#include "llbutton.h"
+#include "llclipboard.h"
 #include "lldir.h"
-#include "llxmlnode.h"
+#include "lldockablefloater.h"
+#include "lldockcontrol.h"
+#include "llimview.h"
+#include "lltransientfloatermgr.h"
 #include "lltoolbar.h"
-#include "llbutton.h"
 #include "lltooldraganddrop.h"
-#include "llclipboard.h"
+#include "llxmlnode.h"
 
 #include "llagent.h"  // HACK for destinations guide on startup
 #include "llfloaterreg.h"  // HACK for destinations guide on startup
@@ -68,13 +72,14 @@ LLToolBarView::ToolbarSet::ToolbarSet()
 
 LLToolBarView::LLToolBarView(const LLToolBarView::Params& p)
 :	LLUICtrl(p),
-	mToolbarLeft(NULL),
-	mToolbarRight(NULL),
-	mToolbarBottom(NULL),
 	mDragStarted(false),
 	mDragToolbarButton(NULL),
 	mToolbarsLoaded(false)
 {
+	for (S32 i = 0; i < TOOLBAR_COUNT; i++)
+	{
+		mToolbars[i] = NULL;
+	}
 }
 
 void LLToolBarView::initFromParams(const LLToolBarView::Params& p)
@@ -90,46 +95,100 @@ LLToolBarView::~LLToolBarView()
 
 BOOL LLToolBarView::postBuild()
 {
-	mToolbarLeft   = getChild<LLToolBar>("toolbar_left");
-	mToolbarRight  = getChild<LLToolBar>("toolbar_right");
-	mToolbarBottom = getChild<LLToolBar>("toolbar_bottom");
+	mToolbars[TOOLBAR_LEFT]   = getChild<LLToolBar>("toolbar_left");
+	mToolbars[TOOLBAR_RIGHT]  = getChild<LLToolBar>("toolbar_right");
+	mToolbars[TOOLBAR_BOTTOM] = getChild<LLToolBar>("toolbar_bottom");
 
-	mToolbarLeft->setStartDragCallback(boost::bind(LLToolBarView::startDragTool,_1,_2,_3));
-	mToolbarLeft->setHandleDragCallback(boost::bind(LLToolBarView::handleDragTool,_1,_2,_3,_4));
-	mToolbarLeft->setHandleDropCallback(boost::bind(LLToolBarView::handleDropTool,_1,_2,_3,_4));
-	
-	mToolbarRight->setStartDragCallback(boost::bind(LLToolBarView::startDragTool,_1,_2,_3));
-	mToolbarRight->setHandleDragCallback(boost::bind(LLToolBarView::handleDragTool,_1,_2,_3,_4));
-	mToolbarRight->setHandleDropCallback(boost::bind(LLToolBarView::handleDropTool,_1,_2,_3,_4));
-	
-	mToolbarBottom->setStartDragCallback(boost::bind(LLToolBarView::startDragTool,_1,_2,_3));
-	mToolbarBottom->setHandleDragCallback(boost::bind(LLToolBarView::handleDragTool,_1,_2,_3,_4));
-	mToolbarBottom->setHandleDropCallback(boost::bind(LLToolBarView::handleDropTool,_1,_2,_3,_4));
+	for (int i = TOOLBAR_FIRST; i <= TOOLBAR_LAST; i++)
+	{
+		mToolbars[i]->setStartDragCallback(boost::bind(LLToolBarView::startDragTool,_1,_2,_3));
+		mToolbars[i]->setHandleDragCallback(boost::bind(LLToolBarView::handleDragTool,_1,_2,_3,_4));
+		mToolbars[i]->setHandleDropCallback(boost::bind(LLToolBarView::handleDropTool,_1,_2,_3,_4));
+		mToolbars[i]->setButtonAddCallback(boost::bind(LLToolBarView::onToolBarButtonAdded,_1));
+		mToolbars[i]->setButtonRemoveCallback(boost::bind(LLToolBarView::onToolBarButtonRemoved,_1));
+	}
 
 	LLAppViewer::instance()->setOnLoginCompletedCallback(boost::bind(&handleLoginToolbarSetup));
 	
 	return TRUE;
 }
 
-bool LLToolBarView::hasCommand(const LLCommandId& commandId) const
+S32 LLToolBarView::hasCommand(const LLCommandId& commandId) const
+{
+	S32 command_location = TOOLBAR_NONE;
+
+	for (S32 loc = TOOLBAR_FIRST; loc <= TOOLBAR_LAST; loc++)
+	{
+		if (mToolbars[loc]->hasCommand(commandId))
+		{
+			command_location = loc;
+			break;
+		}
+	}
+
+	return command_location;
+}
+
+S32 LLToolBarView::addCommand(const LLCommandId& commandId, EToolBarLocation toolbar, int rank)
+{
+	int old_rank;
+	removeCommand(commandId, old_rank);
+
+	S32 command_location = mToolbars[toolbar]->addCommand(commandId, rank);
+
+	return command_location;
+}
+
+S32 LLToolBarView::removeCommand(const LLCommandId& commandId, int& rank)
 {
-	bool has_command = false;
-	if (mToolbarLeft && !has_command)
+	S32 command_location = hasCommand(commandId);
+	rank = LLToolBar::RANK_NONE;
+
+	if (command_location != TOOLBAR_NONE)
 	{
-		has_command = mToolbarLeft->hasCommand(commandId);
+		rank = mToolbars[command_location]->removeCommand(commandId);
 	}
-	if (mToolbarRight && !has_command)
+
+	return command_location;
+}
+
+S32 LLToolBarView::enableCommand(const LLCommandId& commandId, bool enabled)
+{
+	S32 command_location = hasCommand(commandId);
+
+	if (command_location != TOOLBAR_NONE)
+	{
+		mToolbars[command_location]->enableCommand(commandId, enabled);
+	}
+
+	return command_location;
+}
+
+S32 LLToolBarView::stopCommandInProgress(const LLCommandId& commandId)
+{
+	S32 command_location = hasCommand(commandId);
+
+	if (command_location != TOOLBAR_NONE)
 	{
-		has_command = mToolbarRight->hasCommand(commandId);
+		mToolbars[command_location]->stopCommandInProgress(commandId);
 	}
-	if (mToolbarBottom && !has_command)
+
+	return command_location;
+}
+
+S32 LLToolBarView::flashCommand(const LLCommandId& commandId, bool flash)
+{
+	S32 command_location = hasCommand(commandId);
+
+	if (command_location != TOOLBAR_NONE)
 	{
-		has_command = mToolbarBottom->hasCommand(commandId);
+		mToolbars[command_location]->flashCommand(commandId, flash);
 	}
-	return has_command;
+
+	return command_location;
 }
 
-bool LLToolBarView::addCommand(const LLCommandId& command, LLToolBar* toolbar)
+bool LLToolBarView::addCommandInternal(const LLCommandId& command, LLToolBar* toolbar)
 {
 	LLCommandManager& mgr = LLCommandManager::instance();
 	if (mgr.getCommand(command))
@@ -147,6 +206,7 @@ bool LLToolBarView::addCommand(const LLCommandId& command, LLToolBar* toolbar)
 bool LLToolBarView::loadToolbars(bool force_default)
 {
 	LLToolBarView::ToolbarSet toolbar_set;
+	bool err = false;
 	
 	// Load the toolbars.xml file
 	std::string toolbar_file = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "toolbars.xml");
@@ -164,80 +224,90 @@ bool LLToolBarView::loadToolbars(bool force_default)
 	if(!LLXMLNode::parseFile(toolbar_file, root, NULL))
 	{
 		llwarns << "Unable to load toolbars from file: " << toolbar_file << llendl;
-		return false;
+		err = true;
 	}
-	if(!root->hasName("toolbars"))
+	
+	if (!err && !root->hasName("toolbars"))
 	{
 		llwarns << toolbar_file << " is not a valid toolbars definition file" << llendl;
-		return false;
+		err = true;
 	}
 	
 	// Parse the toolbar settings
 	LLXUIParser parser;
+	if (!err)
+	{
 	parser.readXUI(root, toolbar_set, toolbar_file);
-	if (!toolbar_set.validateBlock())
+	}
+	if (!err && !toolbar_set.validateBlock())
 	{
-		llerrs << "Unable to validate toolbars from file: " << toolbar_file << llendl;
-		return false;
+		llwarns << "Unable to validate toolbars from file: " << toolbar_file << llendl;
+		err = true;
 	}
 	
-	// Clear the toolbars now before adding the loaded commands and settings
-	if (mToolbarLeft)
+	if (err)
 	{
-		mToolbarLeft->clearCommandsList();
+		if (force_default)
+		{
+			llerrs << "Unable to load toolbars from default file : " << toolbar_file << llendl;
+		return false;
 	}
-	if (mToolbarRight)
-	{
-		mToolbarRight->clearCommandsList();
+		// Try to load the default toolbars
+		return loadToolbars(true);
 	}
-	if (mToolbarBottom)
+	
+	// Clear the toolbars now before adding the loaded commands and settings
+	for (S32 i = TOOLBAR_FIRST; i <= TOOLBAR_LAST; i++)
 	{
-		mToolbarBottom->clearCommandsList();
+		if (mToolbars[i])
+		{
+			mToolbars[i]->clearCommandsList();
+		}
 	}
 	
 	// Add commands to each toolbar
-	if (toolbar_set.left_toolbar.isProvided() && mToolbarLeft)
+	if (toolbar_set.left_toolbar.isProvided() && mToolbars[TOOLBAR_LEFT])
 	{
 		if (toolbar_set.left_toolbar.button_display_mode.isProvided())
 		{
 			LLToolBarEnums::ButtonType button_type = toolbar_set.left_toolbar.button_display_mode;
-			mToolbarLeft->setButtonType(button_type);
+			mToolbars[TOOLBAR_LEFT]->setButtonType(button_type);
 		}
-		BOOST_FOREACH(const LLCommandId::Params& command_name_param, toolbar_set.left_toolbar.commands)
+		BOOST_FOREACH(const LLCommandId::Params& command_params, toolbar_set.left_toolbar.commands)
 		{
-			if (addCommand(LLCommandId(command_name_param), mToolbarLeft) == false)
+			if (addCommandInternal(LLCommandId(command_params), mToolbars[TOOLBAR_LEFT]))
 			{
-				llwarns << "Error adding command '" << command_name_param.name() << "' to left toolbar." << llendl;
+				llwarns << "Error adding command '" << command_params.name() << "' to left toolbar." << llendl;
 			}
 		}
 	}
-	if (toolbar_set.right_toolbar.isProvided() && mToolbarRight)
+	if (toolbar_set.right_toolbar.isProvided() && mToolbars[TOOLBAR_RIGHT])
 	{
 		if (toolbar_set.right_toolbar.button_display_mode.isProvided())
 		{
 			LLToolBarEnums::ButtonType button_type = toolbar_set.right_toolbar.button_display_mode;
-			mToolbarRight->setButtonType(button_type);
+			mToolbars[TOOLBAR_RIGHT]->setButtonType(button_type);
 		}
-		BOOST_FOREACH(const LLCommandId::Params& command_name_param, toolbar_set.right_toolbar.commands)
+		BOOST_FOREACH(const LLCommandId::Params& command_params, toolbar_set.right_toolbar.commands)
 		{
-			if (addCommand(LLCommandId(command_name_param), mToolbarRight) == false)
+			if (addCommandInternal(LLCommandId(command_params), mToolbars[TOOLBAR_RIGHT]))
 			{
-				llwarns << "Error adding command '" << command_name_param.name() << "' to right toolbar." << llendl;
+				llwarns << "Error adding command '" << command_params.name() << "' to right toolbar." << llendl;
 			}
 		}
 	}
-	if (toolbar_set.bottom_toolbar.isProvided() && mToolbarBottom)
+	if (toolbar_set.bottom_toolbar.isProvided() && mToolbars[TOOLBAR_BOTTOM])
 	{
 		if (toolbar_set.bottom_toolbar.button_display_mode.isProvided())
 		{
 			LLToolBarEnums::ButtonType button_type = toolbar_set.bottom_toolbar.button_display_mode;
-			mToolbarBottom->setButtonType(button_type);
+			mToolbars[TOOLBAR_BOTTOM]->setButtonType(button_type);
 		}
-		BOOST_FOREACH(const LLCommandId::Params& command_name_param, toolbar_set.bottom_toolbar.commands)
+		BOOST_FOREACH(const LLCommandId::Params& command_params, toolbar_set.bottom_toolbar.commands)
 		{
-			if (addCommand(LLCommandId(command_name_param), mToolbarBottom) == false)
+			if (addCommandInternal(LLCommandId(command_params), mToolbars[TOOLBAR_BOTTOM]))
 			{
-				llwarns << "Error adding command '" << command_name_param.name() << "' to bottom toolbar." << llendl;
+				llwarns << "Error adding command '" << command_params.name() << "' to bottom toolbar." << llendl;
 			}
 		}
 	}
@@ -269,20 +339,20 @@ void LLToolBarView::saveToolbars() const
 	
 	// Build the parameter tree from the toolbar data
 	LLToolBarView::ToolbarSet toolbar_set;
-	if (mToolbarLeft)
+	if (mToolbars[TOOLBAR_LEFT])
 	{
-		toolbar_set.left_toolbar.button_display_mode = mToolbarLeft->getButtonType();
-		addToToolset(mToolbarLeft->getCommandsList(),toolbar_set.left_toolbar);
+		toolbar_set.left_toolbar.button_display_mode = mToolbars[TOOLBAR_LEFT]->getButtonType();
+		addToToolset(mToolbars[TOOLBAR_LEFT]->getCommandsList(), toolbar_set.left_toolbar);
 	}
-	if (mToolbarRight)
+	if (mToolbars[TOOLBAR_RIGHT])
 	{
-		toolbar_set.right_toolbar.button_display_mode = mToolbarRight->getButtonType();
-		addToToolset(mToolbarRight->getCommandsList(),toolbar_set.right_toolbar);
+		toolbar_set.right_toolbar.button_display_mode = mToolbars[TOOLBAR_RIGHT]->getButtonType();
+		addToToolset(mToolbars[TOOLBAR_RIGHT]->getCommandsList(), toolbar_set.right_toolbar);
 	}
-	if (mToolbarBottom)
+	if (mToolbars[TOOLBAR_BOTTOM])
 	{
-		toolbar_set.bottom_toolbar.button_display_mode = mToolbarBottom->getButtonType();
-		addToToolset(mToolbarBottom->getCommandsList(),toolbar_set.bottom_toolbar);
+		toolbar_set.bottom_toolbar.button_display_mode = mToolbars[TOOLBAR_BOTTOM]->getButtonType();
+		addToToolset(mToolbars[TOOLBAR_BOTTOM]->getCommandsList(), toolbar_set.bottom_toolbar);
 	}
 	
 	// Serialize the parameter tree
@@ -323,35 +393,122 @@ void LLToolBarView::addToToolset(command_id_list_t& command_list, Toolbar& toolb
 	}
 }
 
-void LLToolBarView::draw()
+void LLToolBarView::onToolBarButtonAdded(LLView* button)
 {
-	//LLPanel* sizer_left = getChild<LLPanel>("sizer_left");
+	llassert(button);
 	
-	LLRect bottom_rect, left_rect, right_rect;
+	if (button->getName() == "speak")
+	{
+		// Add the "Speak" button as a control view in LLTransientFloaterMgr
+		// to prevent hiding the transient IM floater upon pressing "Speak".
+		LLTransientFloaterMgr::getInstance()->addControlView(button);
+		
+		// Redock incoming and/or outgoing call windows, if applicable
+		
+		LLFloater* incoming_floater = LLFloaterReg::getLastFloaterInGroup("incoming_call");
+		LLFloater* outgoing_floater = LLFloaterReg::getLastFloaterInGroup("outgoing_call");
+		
+		if (incoming_floater && incoming_floater->isShown())
+		{
+			LLCallDialog* incoming = dynamic_cast<LLCallDialog *>(incoming_floater);
+			llassert(incoming);
+			
+			LLDockControl* dock_control = incoming->getDockControl();
+			if (dock_control->getDock() == NULL)
+			{
+				incoming->dockToToolbarButton("speak");
+			}
+		}
+		
+		if (outgoing_floater && outgoing_floater->isShown())
+		{
+			LLCallDialog* outgoing = dynamic_cast<LLCallDialog *>(outgoing_floater);
+			llassert(outgoing);
+			
+			LLDockControl* dock_control = outgoing->getDockControl();
+			if (dock_control->getDock() == NULL)
+			{
+				outgoing->dockToToolbarButton("speak");
+			}
+		}
+	}
+	else if (button->getName() == "voice")
+	{
+		// Add the "Voice controls" button as a control view in LLTransientFloaterMgr
+		// to prevent hiding the transient IM floater upon pressing "Voice controls".
+		LLTransientFloaterMgr::getInstance()->addControlView(button);
+	}
+}
 
-	if (mToolbarBottom) 
+void LLToolBarView::onToolBarButtonRemoved(LLView* button)
+{
+	llassert(button);
+
+	if (button->getName() == "speak")
 	{
-		mToolbarBottom->getParent()->reshape(mToolbarBottom->getParent()->getRect().getWidth(), mToolbarBottom->getRect().getHeight());
-		mToolbarBottom->localRectToOtherView(mToolbarBottom->getLocalRect(), &bottom_rect, this);
+		LLTransientFloaterMgr::getInstance()->removeControlView(button);
+		
+		// Undock incoming and/or outgoing call windows
+		
+		LLFloater* incoming_floater = LLFloaterReg::getLastFloaterInGroup("incoming_call");
+		LLFloater* outgoing_floater = LLFloaterReg::getLastFloaterInGroup("outgoing_call");
+		
+		if (incoming_floater && incoming_floater->isShown())
+		{
+			LLDockableFloater* incoming = dynamic_cast<LLDockableFloater *>(incoming_floater);
+			llassert(incoming);
+
+			LLDockControl* dock_control = incoming->getDockControl();
+			dock_control->setDock(NULL);
+		}
+		
+		if (outgoing_floater && outgoing_floater->isShown())
+		{
+			LLDockableFloater* outgoing = dynamic_cast<LLDockableFloater *>(outgoing_floater);
+			llassert(outgoing);
+
+			LLDockControl* dock_control = outgoing->getDockControl();
+			dock_control->setDock(NULL);
+		}
 	}
-	if (mToolbarLeft)   
+	else if (button->getName() == "voice")
 	{
-		mToolbarLeft->getParent()->reshape(mToolbarLeft->getRect().getWidth(), mToolbarLeft->getParent()->getRect().getHeight());
-		mToolbarLeft->localRectToOtherView(mToolbarLeft->getLocalRect(), &left_rect, this);
+		LLTransientFloaterMgr::getInstance()->removeControlView(button);
 	}
-	if (mToolbarRight)  
+}
+
+void LLToolBarView::draw()
+{
+	LLRect toolbar_rects[TOOLBAR_COUNT];
+	
+	for (S32 i = TOOLBAR_FIRST; i <= TOOLBAR_LAST; i++)
 	{
-		mToolbarRight->getParent()->reshape(mToolbarRight->getRect().getWidth(), mToolbarRight->getParent()->getRect().getHeight());
-		mToolbarRight->localRectToOtherView(mToolbarRight->getLocalRect(), &right_rect, this);
+		if (mToolbars[i])
+		{
+			LLLayoutStack::ELayoutOrientation orientation = LLToolBarEnums::getOrientation(mToolbars[i]->getSideType());
+
+			if (orientation == LLLayoutStack::HORIZONTAL)
+			{
+				mToolbars[i]->getParent()->reshape(mToolbars[i]->getParent()->getRect().getWidth(), mToolbars[i]->getRect().getHeight());
+			}
+			else
+			{
+				mToolbars[i]->getParent()->reshape(mToolbars[i]->getRect().getWidth(), mToolbars[i]->getParent()->getRect().getHeight());
+			}
+
+			mToolbars[i]->localRectToOtherView(mToolbars[i]->getLocalRect(), &toolbar_rects[i], this);
+		}
 	}
 	
 	// Draw drop zones if drop of a tool is active
 	if (isToolDragged())
 	{
 		LLColor4 drop_color = LLUIColorTable::instance().getColor( "ToolbarDropZoneColor" );
-		gl_rect_2d(bottom_rect, drop_color, TRUE);
-		gl_rect_2d(left_rect, drop_color, TRUE);
-		gl_rect_2d(right_rect, drop_color, TRUE);
+
+		for (S32 i = TOOLBAR_FIRST; i <= TOOLBAR_LAST; i++)
+		{
+			gl_rect_2d(toolbar_rects[i], drop_color, TRUE);
+		}
 	}
 	
 	LLUICtrl::draw();
@@ -363,9 +520,9 @@ void LLToolBarView::draw()
 // ----------------------------------------
 
 
-void LLToolBarView::startDragTool(S32 x, S32 y, LLToolBarButton* button)
+void LLToolBarView::startDragTool(S32 x, S32 y, LLToolBarButton* toolbarButton)
 {
-	resetDragTool(button);
+	resetDragTool(toolbarButton);
 
 	// Flag the tool dragging but don't start it yet
 	LLToolDragAndDrop::getInstance()->setDragStart( x, y );
@@ -391,9 +548,7 @@ BOOL LLToolBarView::handleDragTool( S32 x, S32 y, const LLUUID& uuid, LLAssetTyp
 
 			// Second, stop the command if it is in progress and requires stopping!
 			LLCommandId command_id = LLCommandId(uuid);
-			gToolBarView->mToolbarLeft->stopCommandInProgress(command_id);
-			gToolBarView->mToolbarRight->stopCommandInProgress(command_id);
-			gToolBarView->mToolbarBottom->stopCommandInProgress(command_id);
+			gToolBarView->stopCommandInProgress(command_id);
 
 			gToolBarView->mDragStarted = true;
 			return TRUE;
@@ -424,10 +579,10 @@ BOOL LLToolBarView::handleDropTool( void* cargo_data, S32 x, S32 y, LLToolBar* t
 		{
 			// Suppress the command from the toolbars (including the one it's dropped in, 
 			// this will handle move position).
-			bool command_present = gToolBarView->hasCommand(command_id);
+			S32 old_toolbar_loc = gToolBarView->hasCommand(command_id);
 			LLToolBar* old_toolbar = NULL;
 
-			if (command_present)
+			if (old_toolbar_loc != TOOLBAR_NONE)
 			{
 				llassert(gToolBarView->mDragToolbarButton);
 				old_toolbar = gToolBarView->mDragToolbarButton->getParentByType<LLToolBar>();
@@ -437,9 +592,8 @@ BOOL LLToolBarView::handleDropTool( void* cargo_data, S32 x, S32 y, LLToolBar* t
 				}
 				else
 				{
-					gToolBarView->mToolbarBottom->removeCommand(command_id);
-					gToolBarView->mToolbarLeft->removeCommand(command_id);
-					gToolBarView->mToolbarRight->removeCommand(command_id);
+					int old_rank = LLToolBar::RANK_NONE;
+					gToolBarView->removeCommand(command_id, old_rank);
 				}
 			}
 
@@ -463,27 +617,29 @@ BOOL LLToolBarView::handleDropTool( void* cargo_data, S32 x, S32 y, LLToolBar* t
 	return handled;
 }
 
-void LLToolBarView::resetDragTool(LLToolBarButton* button)
+void LLToolBarView::resetDragTool(LLToolBarButton* toolbarButton)
 {
 	// Clear the saved command, toolbar and rank
 	gToolBarView->mDragStarted = false;
-	gToolBarView->mDragToolbarButton = button;
+	gToolBarView->mDragToolbarButton = toolbarButton;
 }
 
 void LLToolBarView::setToolBarsVisible(bool visible)
 {
-	mToolbarBottom->getParent()->setVisible(visible);
-	mToolbarLeft->getParent()->setVisible(visible);
-	mToolbarRight->getParent()->setVisible(visible);
+	for (S32 i = TOOLBAR_FIRST; i <= TOOLBAR_LAST; i++)
+	{
+		mToolbars[i]->getParent()->setVisible(visible);
+	}
 }
 
 bool LLToolBarView::isModified() const
 {
 	bool modified = false;
 
-	modified |= mToolbarBottom->isModified();
-	modified |= mToolbarLeft->isModified();
-	modified |= mToolbarRight->isModified();
+	for (S32 i = TOOLBAR_FIRST; i <= TOOLBAR_LAST; i++)
+	{
+		modified |= mToolbars[i]->isModified();
+	}
 
 	return modified;
 }
@@ -496,9 +652,11 @@ bool LLToolBarView::isModified() const
 void handleLoginToolbarSetup()
 {
 	// Open the destinations guide by default on first login, per Rhett
-	if (gSavedSettings.getBOOL("FirstLoginThisInstall") || gAgent.isFirstLogin())
+	if (gSavedPerAccountSettings.getBOOL("DisplayDestinationsOnInitialRun") || gAgent.isFirstLogin())
 	{
 		LLFloaterReg::showInstance("destinations");
+
+		gSavedPerAccountSettings.setBOOL("DisplayDestinationsOnInitialRun", FALSE);
 	}
 }
 
diff --git a/indra/newview/lltoolbarview.h b/indra/newview/lltoolbarview.h
index 2b26db3802332461ae8fba9c02ce43a3daa9102b..4307d1025804c082a5e3e8983fb2ba1b5129ff13 100644
--- a/indra/newview/lltoolbarview.h
+++ b/indra/newview/lltoolbarview.h
@@ -39,6 +39,19 @@ class LLUICtrlFactory;
 class LLToolBarView : public LLUICtrl
 {
 public:
+	typedef enum
+	{
+		TOOLBAR_NONE = 0,
+		TOOLBAR_LEFT,
+		TOOLBAR_RIGHT,
+		TOOLBAR_BOTTOM,
+
+		TOOLBAR_COUNT,
+
+		TOOLBAR_FIRST = TOOLBAR_LEFT,
+		TOOLBAR_LAST = TOOLBAR_BOTTOM,
+	} EToolBarLocation;
+
 	// Xui structure of the toolbar panel
 	struct Params : public LLInitParam::Block<Params, LLUICtrl::Params> {};
 
@@ -52,6 +65,7 @@ class LLToolBarView : public LLUICtrl
 	{
 		Mandatory<LLToolBarEnums::ButtonType>	button_display_mode;
 		Multiple<LLCommandId::Params>	commands;
+
 		Toolbar();
 	};
 	struct ToolbarSet : public LLInitParam::Block<ToolbarSet>
@@ -59,6 +73,7 @@ class LLToolBarView : public LLUICtrl
 		Optional<Toolbar>	left_toolbar,
 							right_toolbar,
 							bottom_toolbar;
+
 		ToolbarSet();
 	};
 
@@ -66,9 +81,16 @@ class LLToolBarView : public LLUICtrl
 	virtual ~LLToolBarView();
 	virtual BOOL postBuild();
 	virtual void draw();
+
 	// Toolbar view interface with the rest of the world
-	// Checks if the commandId is being used somewhere in one of the toolbars
-	bool hasCommand(const LLCommandId& commandId) const;
+	// Checks if the commandId is being used somewhere in one of the toolbars, returns EToolBarLocation
+	S32 hasCommand(const LLCommandId& commandId) const;
+	S32 addCommand(const LLCommandId& commandId, EToolBarLocation toolbar, int rank = LLToolBar::RANK_NONE);
+	S32 removeCommand(const LLCommandId& commandId, int& rank);	// Sets the rank the removed command was at, RANK_NONE if not found
+	S32 enableCommand(const LLCommandId& commandId, bool enabled);
+	S32 stopCommandInProgress(const LLCommandId& commandId);
+	S32 flashCommand(const LLCommandId& commandId, bool flash);
+
 	// Loads the toolbars from the existing user or default settings
 	bool loadToolbars(bool force_default = false);	// return false if load fails
 	
@@ -76,10 +98,10 @@ class LLToolBarView : public LLUICtrl
 
 	static bool loadDefaultToolbars();
 	
-	static void startDragTool(S32 x, S32 y, LLToolBarButton* button);
+	static void startDragTool(S32 x, S32 y, LLToolBarButton* toolbarButton);
 	static BOOL handleDragTool(S32 x, S32 y, const LLUUID& uuid, LLAssetType::EType type);
 	static BOOL handleDropTool(void* cargo_data, S32 x, S32 y, LLToolBar* toolbar);
-	static void resetDragTool(LLToolBarButton* button);
+	static void resetDragTool(LLToolBarButton* toolbarButton);
 
 	bool isModified() const;
 	
@@ -91,13 +113,14 @@ class LLToolBarView : public LLUICtrl
 
 private:
 	void	saveToolbars() const;
-	bool	addCommand(const LLCommandId& commandId, LLToolBar*	toolbar);
+	bool	addCommandInternal(const LLCommandId& commandId, LLToolBar*	toolbar);
 	void	addToToolset(command_id_list_t& command_list, Toolbar& toolbar) const;
 
+	static void	onToolBarButtonAdded(LLView* button);
+	static void onToolBarButtonRemoved(LLView* button);
+
 	// Pointers to the toolbars handled by the toolbar view
-	LLToolBar*	mToolbarLeft;
-	LLToolBar*	mToolbarRight;
-	LLToolBar*	mToolbarBottom;
+	LLToolBar*  mToolbars[TOOLBAR_COUNT];
 	bool		mToolbarsLoaded;
 	
 	bool				mDragStarted;
diff --git a/indra/newview/lltransientfloatermgr.cpp b/indra/newview/lltransientfloatermgr.cpp
index c648a6a28adc892ced97913667ebcf0cb61c36b3..3d68c104894f5f59815221ed7655116948beb52d 100644
--- a/indra/newview/lltransientfloatermgr.cpp
+++ b/indra/newview/lltransientfloatermgr.cpp
@@ -42,9 +42,9 @@ LLTransientFloaterMgr::LLTransientFloaterMgr()
 			&LLTransientFloaterMgr::leftMouseClickCallback, this, _2, _3, _4));
 	}
 
-	mGroupControls.insert(std::pair<ETransientGroup, std::set<LLView*> >(GLOBAL, std::set<LLView*>()));
-	mGroupControls.insert(std::pair<ETransientGroup, std::set<LLView*> >(DOCKED, std::set<LLView*>()));
-	mGroupControls.insert(std::pair<ETransientGroup, std::set<LLView*> >(IM, std::set<LLView*>()));
+	mGroupControls.insert(std::pair<ETransientGroup, controls_set_t >(GLOBAL, controls_set_t()));
+	mGroupControls.insert(std::pair<ETransientGroup, controls_set_t >(DOCKED, controls_set_t()));
+	mGroupControls.insert(std::pair<ETransientGroup, controls_set_t >(IM, controls_set_t()));
 }
 
 void LLTransientFloaterMgr::registerTransientFloater(LLTransientFloater* floater)
@@ -59,12 +59,16 @@ void LLTransientFloaterMgr::unregisterTransientFloater(LLTransientFloater* float
 
 void LLTransientFloaterMgr::addControlView(ETransientGroup group, LLView* view)
 {
-	mGroupControls.find(group)->second.insert(view);
+	if (!view) return;
+
+	mGroupControls.find(group)->second.insert(view->getHandle());
 }
 
 void LLTransientFloaterMgr::removeControlView(ETransientGroup group, LLView* view)
 {
-	mGroupControls.find(group)->second.erase(view);
+	if (!view) return;
+
+	mGroupControls.find(group)->second.erase(view->getHandle());
 }
 
 void LLTransientFloaterMgr::addControlView(LLView* view)
@@ -89,7 +93,7 @@ void LLTransientFloaterMgr::hideTransientFloaters(S32 x, S32 y)
 		{
 			ETransientGroup group = floater->getGroup();
 
-			bool hide = isControlClicked(mGroupControls.find(group)->second, x, y);
+			bool hide = isControlClicked(group, mGroupControls.find(group)->second, x, y);
 			if (hide)
 			{
 				floater->setTransientVisible(FALSE);
@@ -98,13 +102,25 @@ void LLTransientFloaterMgr::hideTransientFloaters(S32 x, S32 y)
 	}
 }
 
-bool LLTransientFloaterMgr::isControlClicked(std::set<LLView*>& set, S32 x, S32 y)
+bool LLTransientFloaterMgr::isControlClicked(ETransientGroup group, controls_set_t& set, S32 x, S32 y)
 {
+	std::list< LLHandle<LLView> > dead_handles;
+	
 	bool res = true;
 	for (controls_set_t::iterator it = set.begin(); it
 			!= set.end(); it++)
 	{
-		LLView* control_view = *it;
+		LLView* control_view = NULL;
+
+		LLHandle<LLView> handle = *it;
+		if (handle.isDead())
+		{
+			dead_handles.push_back(handle);
+			continue;
+		}
+
+		control_view = handle.get();
+
 		if (!control_view->getVisible())
 		{
 			continue;
@@ -118,6 +134,13 @@ bool LLTransientFloaterMgr::isControlClicked(std::set<LLView*>& set, S32 x, S32
 			break;
 		}
 	}
+
+	for (std::list< LLHandle<LLView> >::iterator it = dead_handles.begin(); it != dead_handles.end(); ++it)
+	{
+		LLHandle<LLView> handle = *it;
+		mGroupControls.find(group)->second.erase(handle);
+	}
+	
 	return res;
 }
 
@@ -130,8 +153,8 @@ void LLTransientFloaterMgr::leftMouseClickCallback(S32 x, S32 y,
 		return;
 	}
 
-	bool hide = isControlClicked(mGroupControls.find(DOCKED)->second, x, y)
-			&& isControlClicked(mGroupControls.find(GLOBAL)->second, x, y);
+	bool hide = isControlClicked(DOCKED, mGroupControls.find(DOCKED)->second, x, y)
+			&& isControlClicked(GLOBAL, mGroupControls.find(GLOBAL)->second, x, y);
 	if (hide)
 	{
 		hideTransientFloaters(x, y);
diff --git a/indra/newview/lltransientfloatermgr.h b/indra/newview/lltransientfloatermgr.h
index 2919244121bdbe80dd0979a8f18d76344f42ecae..b4611c8c87bb4d2954938fba16110e08d9c72a06 100644
--- a/indra/newview/lltransientfloatermgr.h
+++ b/indra/newview/lltransientfloatermgr.h
@@ -56,14 +56,15 @@ class LLTransientFloaterMgr: public LLSingleton<LLTransientFloaterMgr>
 	void removeControlView(LLView* view);
 
 private:
+	typedef std::set<LLHandle<LLView> > controls_set_t;
+	typedef std::map<ETransientGroup, controls_set_t > group_controls_t;
+
 	void hideTransientFloaters(S32 x, S32 y);
 	void leftMouseClickCallback(S32 x, S32 y, MASK mask);
-	bool isControlClicked(std::set<LLView*>& set, S32 x, S32 y);
-private:
+	bool isControlClicked(ETransientGroup group, controls_set_t& set, S32 x, S32 y);
+
 	std::set<LLTransientFloater*> mTransSet;
 
-	typedef std::set<LLView*> controls_set_t;
-	typedef std::map<ETransientGroup, std::set<LLView*> > group_controls_t;
 	group_controls_t mGroupControls;
 };
 
diff --git a/indra/newview/lltranslate.cpp b/indra/newview/lltranslate.cpp
index 2f60b6b90b4aa9c18fb91fbcf299fa7927337393..7eb54271f405eb8f96096ad99c3cd18f9b3aef95 100644
--- a/indra/newview/lltranslate.cpp
+++ b/indra/newview/lltranslate.cpp
@@ -31,82 +31,294 @@
 #include <curl/curl.h>
 
 #include "llbufferstream.h"
+#include "lltrans.h"
 #include "llui.h"
 #include "llversioninfo.h"
 #include "llviewercontrol.h"
 
 #include "reader.h"
 
-// These two are concatenated with the language specifiers to form a complete Google Translate URL
-const char* LLTranslate::m_GoogleURL = "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=";
-const char* LLTranslate::m_GoogleLangSpec = "&langpair=";
-float LLTranslate::m_GoogleTimeout = 5;
+// virtual
+void LLGoogleTranslationHandler::getTranslateURL(
+	std::string &url,
+	const std::string &from_lang,
+	const std::string &to_lang,
+	const std::string &text) const
+{
+	url = std::string("https://www.googleapis.com/language/translate/v2?key=")
+		+ getAPIKey() + "&q=" + LLURI::escape(text) + "&target=" + to_lang;
+	if (!from_lang.empty())
+	{
+		url += "&source=" + from_lang;
+	}
+}
 
-LLSD LLTranslate::m_Header;
-// These constants are for the GET header.
-const char* LLTranslate::m_AcceptHeader = "Accept";
-const char* LLTranslate::m_AcceptType = "text/plain";
-const char* LLTranslate::m_AgentHeader = "User-Agent";
+// virtual
+void LLGoogleTranslationHandler::getKeyVerificationURL(
+	std::string& url,
+	const std::string& key) const
+{
+	url = std::string("https://www.googleapis.com/language/translate/v2/languages?key=")
+		+ key + "&target=en";
+}
 
-// These constants are in the JSON returned from Google
-const char* LLTranslate::m_GoogleData = "responseData";
-const char* LLTranslate::m_GoogleTranslation = "translatedText";
-const char* LLTranslate::m_GoogleLanguage = "detectedSourceLanguage";
+// virtual
+bool LLGoogleTranslationHandler::parseResponse(
+	int& status,
+	const std::string& body,
+	std::string& translation,
+	std::string& detected_lang,
+	std::string& err_msg) const
+{
+	Json::Value root;
+	Json::Reader reader;
 
-//static
-void LLTranslate::translateMessage(LLHTTPClient::ResponderPtr &result, const std::string &from_lang, const std::string &to_lang, const std::string &mesg)
+	if (!reader.parse(body, root))
+	{
+		err_msg = reader.getFormatedErrorMessages();
+		return false;
+	}
+
+	if (!root.isObject()) // empty response? should not happen
+	{
+		return false;
+	}
+
+	if (status != STATUS_OK)
+	{
+		// Request failed. Extract error message from the response.
+		parseErrorResponse(root, status, err_msg);
+		return false;
+	}
+
+	// Request succeeded, extract translation from the response.
+	return parseTranslation(root, translation, detected_lang);
+}
+
+// static
+void LLGoogleTranslationHandler::parseErrorResponse(
+	const Json::Value& root,
+	int& status,
+	std::string& err_msg)
 {
-	std::string url;
-	getTranslateUrl(url, from_lang, to_lang, mesg);
+	const Json::Value& error = root.get("error", 0);
+	if (!error.isObject() || !error.isMember("message") || !error.isMember("code"))
+	{
+		return;
+	}
 
-    std::string user_agent = llformat("%s %d.%d.%d (%d)",
-		LLVersionInfo::getChannel().c_str(),
-		LLVersionInfo::getMajor(),
-		LLVersionInfo::getMinor(),
-		LLVersionInfo::getPatch(),
-		LLVersionInfo::getBuild());
+	err_msg = error["message"].asString();
+	status = error["code"].asInt();
+}
 
-	if (!m_Header.size())
+// static
+bool LLGoogleTranslationHandler::parseTranslation(
+	const Json::Value& root,
+	std::string& translation,
+	std::string& detected_lang)
+{
+	// JsonCpp is prone to aborting the program on failed assertions,
+	// so be super-careful and verify the response format.
+	const Json::Value& data = root.get("data", 0);
+	if (!data.isObject() || !data.isMember("translations"))
 	{
-		m_Header.insert(m_AcceptHeader, LLSD(m_AcceptType));
-		m_Header.insert(m_AgentHeader, LLSD(user_agent));
+		return false;
+	}
+
+	const Json::Value& translations = data["translations"];
+	if (!translations.isArray() || translations.size() == 0)
+	{
+		return false;
+	}
+
+	const Json::Value& first = translations[0U];
+	if (!first.isObject() || !first.isMember("translatedText"))
+	{
+		return false;
 	}
 
-	LLHTTPClient::get(url, result, m_Header, m_GoogleTimeout);
+	translation = first["translatedText"].asString();
+	detected_lang = first.get("detectedSourceLanguage", "").asString();
+	return true;
 }
 
-//static
-void LLTranslate::getTranslateUrl(std::string &translate_url, const std::string &from_lang, const std::string &to_lang, const std::string &mesg)
+// static
+std::string LLGoogleTranslationHandler::getAPIKey()
+{
+	return gSavedSettings.getString("GoogleTranslateAPIKey");
+}
+
+// virtual
+void LLBingTranslationHandler::getTranslateURL(
+	std::string &url,
+	const std::string &from_lang,
+	const std::string &to_lang,
+	const std::string &text) const
 {
-	char * curl_str = curl_escape(mesg.c_str(), mesg.size());
-	std::string const escaped_mesg(curl_str);
-	curl_free(curl_str);
+	url = std::string("http://api.microsofttranslator.com/v2/Http.svc/Translate?appId=")
+		+ getAPIKey() + "&text=" + LLURI::escape(text) + "&to=" + to_lang;
+	if (!from_lang.empty())
+	{
+		url += "&from=" + from_lang;
+	}
+}
 
-	translate_url = m_GoogleURL
-		+ escaped_mesg + m_GoogleLangSpec
-		+ from_lang // 'from' language; empty string for auto
-		+ "%7C" // |
-		+ to_lang; // 'to' language
+// virtual
+void LLBingTranslationHandler::getKeyVerificationURL(
+	std::string& url,
+	const std::string& key) const
+{
+	url = std::string("http://api.microsofttranslator.com/v2/Http.svc/GetLanguagesForTranslate?appId=")
+		+ key;
 }
 
-//static
-bool LLTranslate::parseGoogleTranslate(const std::string& body, std::string &translation, std::string &detected_language)
+// virtual
+bool LLBingTranslationHandler::parseResponse(
+	int& status,
+	const std::string& body,
+	std::string& translation,
+	std::string& detected_lang,
+	std::string& err_msg) const
 {
-	Json::Value root;
-	Json::Reader reader;
-	
-	bool success = reader.parse(body, root);
-	if (!success)
+	if (status != STATUS_OK)
 	{
-		LL_WARNS("Translate") << "Non valid response from Google Translate API: '" << reader.getFormatedErrorMessages() << "'" << LL_ENDL;
+		static const std::string MSG_BEGIN_MARKER = "Message: ";
+		size_t begin = body.find(MSG_BEGIN_MARKER);
+		if (begin != std::string::npos)
+		{
+			begin += MSG_BEGIN_MARKER.size();
+		}
+		else
+		{
+			begin = 0;
+			err_msg.clear();
+		}
+		size_t end = body.find("</p>", begin);
+		err_msg = body.substr(begin, end-begin);
+		LLStringUtil::replaceString(err_msg, "&#xD;", ""); // strip CR
 		return false;
 	}
-	
-	translation = 			root[m_GoogleData].get(m_GoogleTranslation, "").asString();
-	detected_language = 	root[m_GoogleData].get(m_GoogleLanguage, "").asString();
+
+	// Sample response: <string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">Hola</string>
+	size_t begin = body.find(">");
+	if (begin == std::string::npos || begin >= (body.size() - 1))
+	{
+		begin = 0;
+	}
+	else
+	{
+		++begin;
+	}
+
+	size_t end = body.find("</string>", begin);
+
+	detected_lang = ""; // unsupported by this API
+	translation = body.substr(begin, end-begin);
+	LLStringUtil::replaceString(translation, "&#xD;", ""); // strip CR
 	return true;
 }
 
+// static
+std::string LLBingTranslationHandler::getAPIKey()
+{
+	return gSavedSettings.getString("BingTranslateAPIKey");
+}
+
+LLTranslate::TranslationReceiver::TranslationReceiver(const std::string& from_lang, const std::string& to_lang)
+:	mFromLang(from_lang)
+,	mToLang(to_lang)
+,	mHandler(LLTranslate::getPreferredHandler())
+{
+}
+
+// virtual
+void LLTranslate::TranslationReceiver::completedRaw(
+	U32 http_status,
+	const std::string& reason,
+	const LLChannelDescriptors& channels,
+	const LLIOPipe::buffer_ptr_t& buffer)
+{
+	LLBufferStream istr(channels, buffer.get());
+	std::stringstream strstrm;
+	strstrm << istr.rdbuf();
+
+	const std::string body = strstrm.str();
+	std::string translation, detected_lang, err_msg;
+	int status = http_status;
+	LL_DEBUGS("Translate") << "HTTP status: " << status << " " << reason << LL_ENDL;
+	LL_DEBUGS("Translate") << "Response body: " << body << LL_ENDL;
+	if (mHandler.parseResponse(status, body, translation, detected_lang, err_msg))
+	{
+		// Fix up the response
+		LLStringUtil::replaceString(translation, "&lt;", "<");
+		LLStringUtil::replaceString(translation, "&gt;",">");
+		LLStringUtil::replaceString(translation, "&quot;","\"");
+		LLStringUtil::replaceString(translation, "&#39;","'");
+		LLStringUtil::replaceString(translation, "&amp;","&");
+		LLStringUtil::replaceString(translation, "&apos;","'");
+
+		handleResponse(translation, detected_lang);
+	}
+	else
+	{
+		if (err_msg.empty())
+		{
+			err_msg = LLTrans::getString("TranslationResponseParseError");
+		}
+
+		llwarns << "Translation request failed: " << err_msg << llendl;
+		handleFailure(status, err_msg);
+	}
+}
+
+LLTranslate::KeyVerificationReceiver::KeyVerificationReceiver(EService service)
+:	mService(service)
+{
+}
+
+LLTranslate::EService LLTranslate::KeyVerificationReceiver::getService() const
+{
+	return mService;
+}
+
+// virtual
+void LLTranslate::KeyVerificationReceiver::completedRaw(
+	U32 http_status,
+	const std::string& reason,
+	const LLChannelDescriptors& channels,
+	const LLIOPipe::buffer_ptr_t& buffer)
+{
+	bool ok = (http_status == 200);
+	setVerificationStatus(ok);
+}
+
+//static
+void LLTranslate::translateMessage(
+	TranslationReceiverPtr &receiver,
+	const std::string &from_lang,
+	const std::string &to_lang,
+	const std::string &mesg)
+{
+	std::string url;
+	receiver->mHandler.getTranslateURL(url, from_lang, to_lang, mesg);
+
+	LL_DEBUGS("Translate") << "Sending translation request: " << url << LL_ENDL;
+	sendRequest(url, receiver);
+}
+
+// static
+void LLTranslate::verifyKey(
+	KeyVerificationReceiverPtr& receiver,
+	const std::string& key)
+{
+	std::string url;
+	const LLTranslationAPIHandler& handler = getHandler(receiver->getService());
+	handler.getKeyVerificationURL(url, key);
+
+	LL_DEBUGS("Translate") << "Sending key verification request: " << url << LL_ENDL;
+	sendRequest(url, receiver);
+}
+
 //static
 std::string LLTranslate::getTranslateLanguage()
 {
@@ -119,3 +331,52 @@ std::string LLTranslate::getTranslateLanguage()
 	return language;
 }
 
+// static
+const LLTranslationAPIHandler& LLTranslate::getPreferredHandler()
+{
+	EService service = SERVICE_BING;
+
+	std::string service_str = gSavedSettings.getString("TranslationService");
+	if (service_str == "google")
+	{
+		service = SERVICE_GOOGLE;
+	}
+
+	return getHandler(service);
+}
+
+// static
+const LLTranslationAPIHandler& LLTranslate::getHandler(EService service)
+{
+	static LLGoogleTranslationHandler google;
+	static LLBingTranslationHandler bing;
+
+	if (service == SERVICE_GOOGLE)
+	{
+		return google;
+	}
+
+	return bing;
+}
+
+// static
+void LLTranslate::sendRequest(const std::string& url, LLHTTPClient::ResponderPtr responder)
+{
+	static const float REQUEST_TIMEOUT = 5;
+	static LLSD sHeader;
+
+	if (!sHeader.size())
+	{
+	    std::string user_agent = llformat("%s %d.%d.%d (%d)",
+			LLVersionInfo::getChannel().c_str(),
+			LLVersionInfo::getMajor(),
+			LLVersionInfo::getMinor(),
+			LLVersionInfo::getPatch(),
+			LLVersionInfo::getBuild());
+
+		sHeader.insert("Accept", "text/plain");
+		sHeader.insert("User-Agent", user_agent);
+	}
+
+	LLHTTPClient::get(url, responder, sHeader, REQUEST_TIMEOUT);
+}
diff --git a/indra/newview/lltranslate.h b/indra/newview/lltranslate.h
index e85a42e878d3116206c0cfc278d7497a8bc9904e..c2330daa8176628ca9a92cf560d10202d4823684 100644
--- a/indra/newview/lltranslate.h
+++ b/indra/newview/lltranslate.h
@@ -30,89 +30,257 @@
 #include "llhttpclient.h"
 #include "llbufferstream.h"
 
+namespace Json
+{
+    class Value;
+}
+
+/**
+ * Handler of an HTTP machine translation service.
+ *
+ * Derived classes know the service URL
+ * and how to parse the translation result.
+ */
+class LLTranslationAPIHandler
+{
+public:
+	/**
+	 * Get URL for translation of the given string.
+	 *
+	 * Sending HTTP GET request to the URL will initiate translation.
+	 *
+	 * @param[out] url        Place holder for the result.
+	 * @param      from_lang  Source language. Leave empty for auto-detection.
+	 * @param      to_lang    Target language.
+	 * @param      text       Text to translate.
+	 */
+	virtual void getTranslateURL(
+		std::string &url,
+		const std::string &from_lang,
+		const std::string &to_lang,
+		const std::string &text) const = 0;
+
+	/**
+	 * Get URL to verify the given API key.
+	 *
+	 * Sending request to the URL verifies the key.
+	 * Positive HTTP response (code 200) means that the key is valid.
+	 *
+	 * @param[out] url  Place holder for the URL.
+	 * @param[in]  key  Key to verify.
+	 */
+	virtual void getKeyVerificationURL(
+		std::string &url,
+		const std::string &key) const = 0;
+
+	/**
+	 * Parse translation response.
+	 *
+	 * @param[in,out] status        HTTP status. May be modified while parsing.
+	 * @param         body          Response text.
+	 * @param[out]    translation   Translated text.
+	 * @param[out]    detected_lang Detected source language. May be empty.
+	 * @param[out]    err_msg       Error message (in case of error).
+	 */
+	virtual bool parseResponse(
+		int& status,
+		const std::string& body,
+		std::string& translation,
+		std::string& detected_lang,
+		std::string& err_msg) const = 0;
+
+	virtual ~LLTranslationAPIHandler() {}
+
+protected:
+	static const int STATUS_OK = 200;
+};
+
+/// Google Translate v2 API handler.
+class LLGoogleTranslationHandler : public LLTranslationAPIHandler
+{
+	LOG_CLASS(LLGoogleTranslationHandler);
+
+public:
+	/*virtual*/ void getTranslateURL(
+		std::string &url,
+		const std::string &from_lang,
+		const std::string &to_lang,
+		const std::string &text) const;
+	/*virtual*/ void getKeyVerificationURL(
+		std::string &url,
+		const std::string &key) const;
+	/*virtual*/ bool parseResponse(
+		int& status,
+		const std::string& body,
+		std::string& translation,
+		std::string& detected_lang,
+		std::string& err_msg) const;
+
+private:
+	static void parseErrorResponse(
+		const Json::Value& root,
+		int& status,
+		std::string& err_msg);
+	static bool parseTranslation(
+		const Json::Value& root,
+		std::string& translation,
+		std::string& detected_lang);
+	static std::string getAPIKey();
+};
+
+/// Microsoft Translator v2 API handler.
+class LLBingTranslationHandler : public LLTranslationAPIHandler
+{
+	LOG_CLASS(LLBingTranslationHandler);
+
+public:
+	/*virtual*/ void getTranslateURL(
+		std::string &url,
+		const std::string &from_lang,
+		const std::string &to_lang,
+		const std::string &text) const;
+	/*virtual*/ void getKeyVerificationURL(
+		std::string &url,
+		const std::string &key) const;
+	/*virtual*/ bool parseResponse(
+		int& status,
+		const std::string& body,
+		std::string& translation,
+		std::string& detected_lang,
+		std::string& err_msg) const;
+private:
+	static std::string getAPIKey();
+};
+
+/**
+ * Entry point for machine translation services.
+ *
+ * Basically, to translate a string, we need to know the URL
+ * of a translation service, have a valid API for the service
+ * and be given the target language.
+ *
+ * Callers specify the string to translate and the target language,
+ * LLTranslate takes care of the rest.
+ *
+ * API keys for translation are taken from saved settings.
+ */
 class LLTranslate
 {
 	LOG_CLASS(LLTranslate);
+
 public :
+
+	typedef enum e_service {
+		SERVICE_BING,
+		SERVICE_GOOGLE,
+	} EService;
+
+	/**
+	 * Subclasses are supposed to handle translation results (e.g. show them in chat)
+	 */
 	class TranslationReceiver: public LLHTTPClient::Responder
 	{
+	public:
+
+		/**
+		 * Using mHandler, parse incoming response.
+		 *
+		 * Calls either handleResponse() or handleFailure()
+		 * depending on the HTTP status code and parsing success.
+		 *
+		 * @see handleResponse()
+		 * @see handleFailure()
+		 * @see mHandler
+		 */
+		/*virtual*/ void completedRaw(
+			U32 http_status,
+			const std::string& reason,
+			const LLChannelDescriptors& channels,
+			const LLIOPipe::buffer_ptr_t& buffer);
+
 	protected:
-		TranslationReceiver(const std::string &from_lang, const std::string &to_lang)
-			: m_fromLang(from_lang),
-			m_toLang(to_lang)
-		{
-		}
+		friend class LLTranslate;
 
-		virtual void handleResponse(const std::string &translation, const std::string &recognized_lang) {};
-		virtual void handleFailure() {};
+		/// Remember source and target languages for subclasses to be able to filter inappropriate results.
+		TranslationReceiver(const std::string& from_lang, const std::string& to_lang);
 
+		/// Override point to handle successful translation.
+		virtual void handleResponse(const std::string &translation, const std::string &recognized_lang) = 0;
+
+		/// Override point to handle unsuccessful translation.
+		virtual void handleFailure(int status, const std::string& err_msg) = 0;
+
+		std::string mFromLang;
+		std::string mToLang;
+		const LLTranslationAPIHandler& mHandler;
+	};
+
+	/**
+	 * Subclasses are supposed to handle API key verification result.
+	 */
+	class KeyVerificationReceiver: public LLHTTPClient::Responder
+	{
 	public:
-		~TranslationReceiver()
-		{
-		}
-
-		virtual void completedRaw(	U32 status,
-									const std::string& reason,
-									const LLChannelDescriptors& channels,
-									const LLIOPipe::buffer_ptr_t& buffer)
-		{
-			if (200 <= status && status < 300)
-			{
-				LLBufferStream istr(channels, buffer.get());
-				std::stringstream strstrm;
-				strstrm << istr.rdbuf();
-
-				const std::string result = strstrm.str();
-				std::string translation;
-				std::string detected_language;
-
-				if (!parseGoogleTranslate(result, translation, detected_language))
-				{
-					handleFailure();
-					return;
-				}
-				
-				// Fix up the response
-				LLStringUtil::replaceString(translation, "&lt;", "<");
-				LLStringUtil::replaceString(translation, "&gt;",">");
-				LLStringUtil::replaceString(translation, "&quot;","\"");
-				LLStringUtil::replaceString(translation, "&#39;","'");
-				LLStringUtil::replaceString(translation, "&amp;","&");
-				LLStringUtil::replaceString(translation, "&apos;","'");
-
-				handleResponse(translation, detected_language);
-			}
-			else
-			{
-				LL_WARNS("Translate") << "HTTP request for Google Translate failed with status " << status << ", reason: " << reason << LL_ENDL;
-				handleFailure();
-			}
-		}
+		EService getService() const;
 
 	protected:
-		const std::string m_toLang;
-		const std::string m_fromLang;
+		/**
+		 * Save the translation service the key belongs to.
+		 *
+		 * Subclasses need to know it.
+		 *
+		 * @see getService()
+		 */
+		KeyVerificationReceiver(EService service);
+
+		/**
+		 * Parse verification response.
+		 *
+		 * Calls setVerificationStatus() with the verification status,
+		 * which is true if HTTP status code is 200.
+		 *
+		 * @see setVerificationStatus()
+		 */
+		/*virtual*/ void completedRaw(
+			U32 http_status,
+			const std::string& reason,
+			const LLChannelDescriptors& channels,
+			const LLIOPipe::buffer_ptr_t& buffer);
+
+		/**
+		 * Override point for subclasses to handle key verification status.
+		 */
+		virtual void setVerificationStatus(bool ok) = 0;
+
+		EService mService;
 	};
 
-	static void translateMessage(LLHTTPClient::ResponderPtr &result, const std::string &from_lang, const std::string &to_lang, const std::string &mesg);
-	static float m_GoogleTimeout;
+	typedef boost::intrusive_ptr<TranslationReceiver> TranslationReceiverPtr;
+	typedef boost::intrusive_ptr<KeyVerificationReceiver> KeyVerificationReceiverPtr;
+
+	/**
+	 * Translate given text.
+	 *
+	 * @param receiver   Object to pass translation result to.
+	 * @param from_lang  Source language. Leave empty for auto-detection.
+	 * @param to_lang    Target language.
+	 * @param mesg       Text to translate.
+	 */
+	static void translateMessage(TranslationReceiverPtr &receiver, const std::string &from_lang, const std::string &to_lang, const std::string &mesg);
+
+	/**
+	 * Verify given API key of a translation service.
+	 *
+	 * @param receiver  Object to pass verification result to.
+	 * @param key       Key to verify.
+	 */
+	static void verifyKey(KeyVerificationReceiverPtr& receiver, const std::string& key);
 	static std::string getTranslateLanguage();
 
 private:
-	static void getTranslateUrl(std::string &translate_url, const std::string &from_lang, const std::string &to_lang, const std::string &text);
-	static bool parseGoogleTranslate(const std::string& body, std::string &translation, std::string &detected_language);
-
-	static LLSD m_Header;
-	static const char* m_GoogleURL;
-	static const char* m_GoogleLangSpec;
-	static const char* m_AcceptHeader;
-	static const char* m_AcceptType;
-	static const char* m_AgentHeader;
-	static const char* m_UserAgent;
-
-	static const char* m_GoogleData;
-	static const char* m_GoogleTranslation;
-	static const char* m_GoogleLanguage;
+	static const LLTranslationAPIHandler& getPreferredHandler();
+	static const LLTranslationAPIHandler& getHandler(EService service);
+	static void sendRequest(const std::string& url, LLHTTPClient::ResponderPtr responder);
 };
 
 #endif
diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp
index ba53540374680e821dbd19f6a65c03f311956ab1..c761969fcfaab2b49986ac5e8e1c966f2c07a84c 100644
--- a/indra/newview/llviewerfloaterreg.cpp
+++ b/indra/newview/llviewerfloaterreg.cpp
@@ -107,6 +107,7 @@
 #include "llfloatertos.h"
 #include "llfloatertopobjects.h"
 #include "llfloatertoybox.h"
+#include "llfloatertranslationsettings.h"
 #include "llfloateruipreview.h"
 #include "llfloatervoiceeffect.h"
 #include "llfloaterwhitelistentry.h"
@@ -248,6 +249,7 @@ void LLViewerFloaterReg::registerFloaters()
 	LLFloaterReg::add("preferences", "floater_preferences.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPreference>);
 	LLFloaterReg::add("prefs_proxy", "floater_preferences_proxy.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPreferenceProxy>);
 	LLFloaterReg::add("prefs_hardware_settings", "floater_hardware_settings.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterHardwareSettings>);
+	LLFloaterReg::add("prefs_translation", "floater_translation_settings.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterTranslationSettings>);
 	LLFloaterReg::add("perm_prefs", "floater_perm_prefs.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPerms>);
 	LLFloaterReg::add("picks", "floater_picks.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSidePanelContainer>);
 	LLFloaterReg::add("pref_joystick", "floater_joystick.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterJoystick>);
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 2345fbfd6a2377f41a4665261e8d61776d2593f6..22d95563d86d78f206ccdfe1c988ff46aa367e5c 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -968,6 +968,10 @@ U32 info_display_from_string(std::string info_display)
 	{
 		return LLPipeline::RENDER_DEBUG_SCULPTED;
 	}
+	else if ("wind vectors" == info_display)
+	{
+		return LLPipeline::RENDER_DEBUG_WIND_VECTORS;
+	}
 	else
 	{
 		return 0;
@@ -980,6 +984,8 @@ class LLAdvancedToggleInfoDisplay : public view_listener_t
 	{
 		U32 info_display = info_display_from_string( userdata.asString() );
 
+		LL_INFOS("ViewerMenu") << "toggle " << userdata.asString() << LL_ENDL;
+		
 		if ( info_display != 0 )
 		{
 			LLPipeline::toggleRenderDebug( (void*)info_display );
@@ -997,6 +1003,8 @@ class LLAdvancedCheckInfoDisplay : public view_listener_t
 		U32 info_display = info_display_from_string( userdata.asString() );
 		bool new_value = false;
 
+		LL_INFOS("ViewerMenu") << "check " << userdata.asString() << LL_ENDL;
+
 		if ( info_display != 0 )
 		{
 			new_value = LLPipeline::toggleRenderDebugControl( (void*)info_display );
@@ -7962,6 +7970,9 @@ void initialize_menus()
 
 	view_listener_t::addEnable(new LLUploadCostCalculator(), "Upload.CalculateCosts");
 
+
+	commit.add("Inventory.NewWindow", boost::bind(&LLFloaterInventory::showAgentInventory));
+
 	// Agent
 	commit.add("Agent.toggleFlying", boost::bind(&LLAgent::toggleFlying));
 	enable.add("Agent.enableFlying", boost::bind(&LLAgent::enableFlying));
@@ -8337,6 +8348,8 @@ void initialize_menus()
 	view_listener_t::addMenu(new LLGoToObject(), "GoToObject");
 	commit.add("PayObject", boost::bind(&handle_give_money_dialog));
 
+	commit.add("Inventory.NewWindow", boost::bind(&LLFloaterInventory::showAgentInventory));
+
 	enable.add("EnablePayObject", boost::bind(&enable_pay_object));
 	enable.add("EnablePayAvatar", boost::bind(&enable_pay_avatar));
 	enable.add("EnableEdit", boost::bind(&enable_object_edit));
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index f0d53668d40c567d13a2287541eb4294b1dbc65e..a9ca70fd26f8fe731db1066c25cf82fcca1f7330 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -3121,7 +3121,7 @@ public :
 	{
 		// filter out non-interesting responeses
 		if ( !translation.empty()
-			&& (m_toLang != detected_language)
+			&& (mToLang != detected_language)
 			&& (LLStringUtil::compareInsensitive(translation, m_origMesg) != 0) )
 		{
 			m_chat.mText += " (" + translation + ")";
@@ -3130,10 +3130,13 @@ public :
 		LLNotificationsUI::LLNotificationManager::instance().onChat(m_chat, m_toastArgs);
 	}
 
-	void handleFailure()
+	void handleFailure(int status, const std::string& err_msg)
 	{
-		LLTranslate::TranslationReceiver::handleFailure();
-		m_chat.mText += " (?)";
+		llwarns << "Translation failed for mesg " << m_origMesg << " toLang " << mToLang << " fromLang " << mFromLang << llendl;
+
+		std::string msg = LLTrans::getString("TranslationFailed", LLSD().with("[REASON]", err_msg));
+		LLStringUtil::replaceString(msg, "\n", " "); // we want one-line error messages
+		m_chat.mText += " (" + msg + ")";
 
 		LLNotificationsUI::LLNotificationManager::instance().onChat(m_chat, m_toastArgs);
 	}
@@ -3371,7 +3374,7 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)
 			const std::string from_lang = ""; // leave empty to trigger autodetect
 			const std::string to_lang = LLTranslate::getTranslateLanguage();
 
-			LLHTTPClient::ResponderPtr result = ChatTranslationReceiver::build(from_lang, to_lang, mesg, chat, args);
+			LLTranslate::TranslationReceiverPtr result = ChatTranslationReceiver::build(from_lang, to_lang, mesg, chat, args);
 			LLTranslate::translateMessage(result, from_lang, to_lang, mesg);
 		}
 		else
diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
old mode 100644
new mode 100755
diff --git a/indra/newview/llwind.cpp b/indra/newview/llwind.cpp
index 69d309044296bdbfca9c6ec5c8bb1fa44d2db54c..4c39fb5b749f304bdbff03dd844ea2ec5d9672f0 100644
--- a/indra/newview/llwind.cpp
+++ b/indra/newview/llwind.cpp
@@ -46,16 +46,12 @@
 #include "llworld.h"
 
 
-const F32 CLOUD_DIVERGENCE_COEF = 0.5f; 
-
-
 //////////////////////////////////////////////////////////////////////
 // Construction/Destruction
 //////////////////////////////////////////////////////////////////////
 
 LLWind::LLWind()
-:	mSize(16),
-	mCloudDensityp(NULL)
+:	mSize(16)
 {
 	init();
 }
@@ -65,8 +61,6 @@ LLWind::~LLWind()
 {
 	delete [] mVelX;
 	delete [] mVelY;
-	delete [] mCloudVelX;
-	delete [] mCloudVelY;
 }
 
 
@@ -77,31 +71,23 @@ LLWind::~LLWind()
 
 void LLWind::init()
 {
+	LL_DEBUGS("Wind") << "initializing wind size: "<< mSize << LL_ENDL;
+	
 	// Initialize vector data
 	mVelX = new F32[mSize*mSize];
 	mVelY = new F32[mSize*mSize];
 
-	mCloudVelX = new F32[mSize*mSize];
-	mCloudVelY = new F32[mSize*mSize];
-
 	S32 i;
 	for (i = 0; i < mSize*mSize; i++)
 	{
 		mVelX[i] = 0.5f;
 		mVelY[i] = 0.5f;
-		mCloudVelX[i] = 0.0f;
-		mCloudVelY[i] = 0.0f;
 	}
 }
 
 
 void LLWind::decompress(LLBitPack &bitpack, LLGroupHeader *group_headerp)
 {
-	if (!mCloudDensityp)
-	{
-		return;
-	}
-
 	LLPatchHeader  patch_header;
 	S32 buffer[16*16];
 
@@ -122,22 +108,15 @@ void LLWind::decompress(LLBitPack &bitpack, LLGroupHeader *group_headerp)
 	decode_patch(bitpack, buffer);
 	decompress_patch(mVelY, buffer, &patch_header);
 
-
-
 	S32 i, j, k;
-	// HACK -- mCloudVelXY is the same as mVelXY, except we add a divergence
-	// that is proportional to the gradient of the cloud density 
-	// ==> this helps to clump clouds together
-	// NOTE ASSUMPTION: cloud density has the same dimensions as the wind field
-	// This needs to be fixed... causes discrepency at region boundaries
 
 	for (j=1; j<mSize-1; j++)
 	{
 		for (i=1; i<mSize-1; i++)
 		{
 			k = i + j * mSize;
-			*(mCloudVelX + k) = *(mVelX + k) + CLOUD_DIVERGENCE_COEF * (*(mCloudDensityp + k + 1) - *(mCloudDensityp + k - 1));
-			*(mCloudVelY + k) = *(mVelY + k) + CLOUD_DIVERGENCE_COEF * (*(mCloudDensityp + k + mSize) - *(mCloudDensityp + k - mSize));
+			*(mVelX + k) = *(mVelX + k);
+			*(mVelY + k) = *(mVelY + k);
 		}
 	}
 
@@ -145,29 +124,29 @@ void LLWind::decompress(LLBitPack &bitpack, LLGroupHeader *group_headerp)
 	for (j=1; j<mSize-1; j++)
 	{
 		k = i + j * mSize;
-		*(mCloudVelX + k) = *(mVelX + k) + CLOUD_DIVERGENCE_COEF * (*(mCloudDensityp + k) - *(mCloudDensityp + k - 2));
-		*(mCloudVelY + k) = *(mVelY + k) + CLOUD_DIVERGENCE_COEF * (*(mCloudDensityp + k + mSize) - *(mCloudDensityp + k - mSize));
+		*(mVelX + k) = *(mVelX + k);
+		*(mVelY + k) = *(mVelY + k);
 	}
 	i = 0;
 	for (j=1; j<mSize-1; j++)
 	{
 		k = i + j * mSize;
-		*(mCloudVelX + k) = *(mVelX + k) + CLOUD_DIVERGENCE_COEF * (*(mCloudDensityp + k + 2) - *(mCloudDensityp + k));
-		*(mCloudVelY + k) = *(mVelY + k) + CLOUD_DIVERGENCE_COEF * (*(mCloudDensityp + k + mSize) - *(mCloudDensityp + k + mSize));
+		*(mVelX + k) = *(mVelX + k);
+		*(mVelY + k) = *(mVelY + k);
 	}
 	j = mSize - 1;
 	for (i=1; i<mSize-1; i++)
 	{
 		k = i + j * mSize;
-		*(mCloudVelX + k) = *(mVelX + k) + CLOUD_DIVERGENCE_COEF * (*(mCloudDensityp + k + 1) - *(mCloudDensityp + k - 1));
-		*(mCloudVelY + k) = *(mVelY + k) + CLOUD_DIVERGENCE_COEF * (*(mCloudDensityp + k) - *(mCloudDensityp + k - 2*mSize));
+		*(mVelX + k) = *(mVelX + k);
+		*(mVelY + k) = *(mVelY + k);
 	}
 	j = 0;
 	for (i=1; i<mSize-1; i++)
 	{
 		k = i + j * mSize;
-		*(mCloudVelX + k) = *(mVelX + k) + CLOUD_DIVERGENCE_COEF * (*(mCloudDensityp + k + 1) - *(mCloudDensityp + k -1));
-		*(mCloudVelY + k) = *(mVelY + k) + CLOUD_DIVERGENCE_COEF * (*(mCloudDensityp + k + 2*mSize) - *(mCloudDensityp + k));
+		*(mVelX + k) = *(mVelX + k);
+		*(mVelY + k) = *(mVelY + k);
 	}
 }
 
@@ -280,74 +259,6 @@ LLVector3 LLWind::getVelocity(const LLVector3 &pos_region)
 	return r_val * WIND_SCALE_HACK;
 }
 
-
-LLVector3 LLWind::getCloudVelocity(const LLVector3 &pos_region)
-{
-	llassert(mSize == 16);
-	// Resolves value of wind at a location relative to SW corner of region
-	//  
-	// Returns wind magnitude in X,Y components of vector3
-	LLVector3 r_val;
-	F32 dx,dy;
-	S32 k;
-
-	LLVector3 pos_clamped_region(pos_region);
-	
-	F32 region_width_meters = LLWorld::getInstance()->getRegionWidthInMeters();
-
-	if (pos_clamped_region.mV[VX] < 0.f)
-	{
-		pos_clamped_region.mV[VX] = 0.f;
-	}
-	else if (pos_clamped_region.mV[VX] >= region_width_meters)
-	{
-		pos_clamped_region.mV[VX] = (F32) fmod(pos_clamped_region.mV[VX], region_width_meters);
-	}
-
-	if (pos_clamped_region.mV[VY] < 0.f)
-	{
-		pos_clamped_region.mV[VY] = 0.f;
-	}
-	else if (pos_clamped_region.mV[VY] >= region_width_meters)
-	{
-		pos_clamped_region.mV[VY] = (F32) fmod(pos_clamped_region.mV[VY], region_width_meters);
-	}
-	
-	
-	S32 i = llfloor(pos_clamped_region.mV[VX] * mSize / region_width_meters);
-	S32 j = llfloor(pos_clamped_region.mV[VY] * mSize / region_width_meters);
-	k = i + j*mSize;
-	dx = ((pos_clamped_region.mV[VX] * mSize / region_width_meters) - (F32) i);
-	dy = ((pos_clamped_region.mV[VY] * mSize / region_width_meters) - (F32) j);
-
-	if ((i < mSize-1) && (j < mSize-1))
-	{
-		//  Interior points, no edges
-		r_val.mV[VX] =  mCloudVelX[k]*(1.0f - dx)*(1.0f - dy) + 
-						mCloudVelX[k + 1]*dx*(1.0f - dy) + 
-						mCloudVelX[k + mSize]*dy*(1.0f - dx) + 
-						mCloudVelX[k + mSize + 1]*dx*dy;
-		r_val.mV[VY] =  mCloudVelY[k]*(1.0f - dx)*(1.0f - dy) + 
-						mCloudVelY[k + 1]*dx*(1.0f - dy) + 
-						mCloudVelY[k + mSize]*dy*(1.0f - dx) + 
-						mCloudVelY[k + mSize + 1]*dx*dy;
-	}
-	else 
-	{
-		r_val.mV[VX] = mCloudVelX[k];
-		r_val.mV[VY] = mCloudVelY[k];
-	}
-
-	r_val.mV[VZ] = 0.f;
-	return r_val * WIND_SCALE_HACK;
-}
-
-
-void LLWind::setCloudDensityPointer(F32 *densityp)
-{
-	mCloudDensityp = densityp;
-}
-
 void LLWind::setOriginGlobal(const LLVector3d &origin_global)
 {
 	mOriginGlobal = origin_global;
diff --git a/indra/newview/llwind.h b/indra/newview/llwind.h
index 925cb6d6428c79bfb2cda780af9e560a93affd9f..3b57f07124d2ad0563c046e8324028b969b56daa 100644
--- a/indra/newview/llwind.h
+++ b/indra/newview/llwind.h
@@ -27,7 +27,6 @@
 #ifndef LL_LLWIND_H
 #define LL_LLWIND_H
 
-//#include "vmath.h"
 #include "llmath.h"
 #include "v3math.h"
 #include "v3dmath.h"
@@ -44,25 +43,21 @@ class LLWind
 	~LLWind();
 	void renderVectors();
 	LLVector3 getVelocity(const LLVector3 &location); // "location" is region-local
-	LLVector3 getCloudVelocity(const LLVector3 &location); // "location" is region-local
 	LLVector3 getVelocityNoisy(const LLVector3 &location, const F32 dim);	// "location" is region-local
 
 	void decompress(LLBitPack &bitpack, LLGroupHeader *group_headerp);
 	LLVector3 getAverage();
-	void setCloudDensityPointer(F32 *densityp);
 
 	void setOriginGlobal(const LLVector3d &origin_global);
 private:
 	S32 mSize;
 	F32 * mVelX;
 	F32 * mVelY;
-	F32 * mCloudVelX;
-	F32 * mCloudVelY;
-	F32 * mCloudDensityp;
 
 	LLVector3d mOriginGlobal;
 	void init();
 
+	LOG_CLASS(LLWind);
 };
 
 #endif
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index a50f66f2829d46690f2475c5a562f0d8a3ec224c..93354e65797e6e6f4c8e19790a077ed6ea451016 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -4383,6 +4383,11 @@ void LLPipeline::renderDebug()
 		}
 	}
 
+	if (mRenderDebugMask & RENDER_DEBUG_WIND_VECTORS)
+	{
+		gAgent.getRegion()->mWind.renderVectors();
+	}
+	
 	if (mRenderDebugMask & RENDER_DEBUG_COMPOSITION)
 	{
 		// Debug composition layers
diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h
index 27ee2745b502ded96937f976b86c7f161353ff34..0661de8cec237418f952910c6eaae08f78ca20a4 100644
--- a/indra/newview/pipeline.h
+++ b/indra/newview/pipeline.h
@@ -438,7 +438,7 @@ class LLPipeline
 		RENDER_DEBUG_VERIFY				= 0x0000002,
 		RENDER_DEBUG_BBOXES				= 0x0000004,
 		RENDER_DEBUG_OCTREE				= 0x0000008,
-		RENDER_DEBUG_PICKING			= 0x0000010,
+		RENDER_DEBUG_WIND_VECTORS		= 0x0000010,
 		RENDER_DEBUG_OCCLUSION			= 0x0000020,
 		RENDER_DEBUG_POINTS				= 0x0000040,
 		RENDER_DEBUG_TEXTURE_PRIORITY	= 0x0000080,
diff --git a/indra/newview/skins/default/textures/windows/Flyout_Left.png b/indra/newview/skins/default/textures/windows/Flyout_Left.png
new file mode 100644
index 0000000000000000000000000000000000000000..6ac9fe2efd4bad4f71070826fd23b1a64eb5080a
Binary files /dev/null and b/indra/newview/skins/default/textures/windows/Flyout_Left.png differ
diff --git a/indra/newview/skins/default/textures/windows/Flyout_Right.png b/indra/newview/skins/default/textures/windows/Flyout_Right.png
new file mode 100644
index 0000000000000000000000000000000000000000..aa1f0625aadf1c81e5034f21eb66ecfa88a451ae
Binary files /dev/null and b/indra/newview/skins/default/textures/windows/Flyout_Right.png differ
diff --git a/indra/newview/skins/default/xui/da/floater_about.xml b/indra/newview/skins/default/xui/da/floater_about.xml
index 0ccaab73bafb02d312ca3d07dabd073fd8713229..fc8bc33096d17eb5a96f689fb1511afe9ef87da1 100644
--- a/indra/newview/skins/default/xui/da/floater_about.xml
+++ b/indra/newview/skins/default/xui/da/floater_about.xml
@@ -10,7 +10,7 @@
 	<floater.string name="AboutPosition">
 		Du er ved [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] i regionen [REGION] lokaliseret ved &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt; ([HOSTIP])
 [SERVER_VERSION]
-[[SERVER_RELEASE_NOTES_URL] [ReleaseNotes]]
+[SERVER_RELEASE_NOTES_URL]
 	</floater.string>
 	<floater.string name="AboutSystem">
 		CPU: [CPU]
diff --git a/indra/newview/skins/default/xui/de/inspect_group.xml b/indra/newview/skins/default/xui/de/inspect_group.xml
index d85ca7ce4dde0b22a63db7e5b855dfd0938d5f6b..60fa8ff0d83b8bc47a08203732b2b0bf8ca8882f 100644
--- a/indra/newview/skins/default/xui/de/inspect_group.xml
+++ b/indra/newview/skins/default/xui/de/inspect_group.xml
@@ -26,7 +26,7 @@ Hoch solln sie leben!  Elche forever! Und auch Mungos!
 	<text name="group_cost">
 		Mitgliedschaft: 123 L$
 	</text>
-	<button label="Zusammen" name="join_btn"/>
+	<button label="Beitreten" name="join_btn"/>
 	<button label="Verlassen" name="leave_btn"/>
 	<button label="Profil anzeigen" name="view_profile_btn"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_general.xml b/indra/newview/skins/default/xui/de/panel_preferences_general.xml
index 5c8b8302c8ead0cd48a74abb41669d815d08a1bd..979ccba48d1fc4dbe72908f446a1f089953765b5 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_general.xml
@@ -16,7 +16,7 @@
 		<combo_box.item label="Русский (Russisch) – Beta" name="Russian"/>
 		<combo_box.item label="Türkçe (Türkisch) – Beta" name="Turkish"/>
 		<combo_box.item label="日本語 (Japanisch) - Beta" name="(Japanese)"/>
-		<combo_box.item label="正體 (Traditionelles Chinesisch) – Beta" name="Traditional Chinese"/>
+		<combo_box.item label="正體中文 (Traditionelles Chinesisch) – Beta" name="Traditional Chinese"/>
 	</combo_box>
 	<text name="language_textbox2">
 		(Erfordert Neustart)
diff --git a/indra/newview/skins/default/xui/en/floater_chat_bar.xml b/indra/newview/skins/default/xui/en/floater_chat_bar.xml
index 989b4a0580291b268ce78582cd65674b76793bbe..87606c1a2aaeb61e0ca8ebd30f8c02498fb776d6 100644
--- a/indra/newview/skins/default/xui/en/floater_chat_bar.xml
+++ b/indra/newview/skins/default/xui/en/floater_chat_bar.xml
@@ -15,6 +15,7 @@
  min_height="60"
  min_width="150"
  can_resize="true"
+ default_tab_group="1"
  name="chat_bar"
  width="380">
     <panel
@@ -26,50 +27,56 @@
         visible="false"
         filename="panel_nearby_chat.xml"
         name="nearby_chat" />
-    <panel width="380" height="31" left="0" bottom="-1" follows="left|right|bottom">
-    <line_editor
-     border_style="line"
-     border_thickness="1"
-     follows="left|right"
-     height="23"
-     label="Click here to chat."
-     layout="topleft"
-     left_delta="7"
-     left="0"
-     max_length_bytes="1023"
-     name="chat_box"
-     text_pad_left="5"
-     text_pad_right="25"
-     tool_tip="Press Enter to say, Ctrl+Enter to shout"
-     top="2"
-     width="335" />
-    <output_monitor
-     auto_update="true"
-     follows="right"
-     draw_border="false"
-     height="16"
-     layout="topleft"
-     left_pad="-24"
-     mouse_opaque="true"
-     name="chat_zone_indicator"
-     top="6"
-     visible="true"
-     width="20" />
-    <button
-     follows="right"
-     is_toggle="true"
-     width="20"
-     top="2"
-     layout="topleft"
-     left_pad="12"
-     image_disabled="ComboButton_UpOff"
-     image_unselected="ComboButton_UpOff"
-     image_selected="ComboButton_On"
-     image_pressed="ComboButton_UpSelected"
-     image_pressed_selected="ComboButton_Selected"
-     height="23"
-     name="show_nearby_chat"
-     tool_tip="Shows/hides nearby chat log">
-    </button>
+    <panel width="380" 
+           height="31" 
+           left="0" 
+           bottom="-1" 
+           follows="left|right|bottom" 
+           tab_group="1">
+      <line_editor
+        border_style="line"
+        border_thickness="1"
+        follows="left|right"
+        height="23"
+        label="Click here to chat."
+        layout="topleft"
+        left_delta="7"
+        left="0"
+        max_length_bytes="1023"
+        name="chat_box"
+        text_pad_left="5"
+        text_pad_right="25"
+        tool_tip="Press Enter to say, Ctrl+Enter to shout"
+        top="2"
+        width="335" />
+      <output_monitor
+        auto_update="true"
+        follows="right"
+        draw_border="false"
+        height="16"
+        layout="topleft"
+        left_pad="-24"
+        mouse_opaque="true"
+        name="chat_zone_indicator"
+        top="6"
+        visible="true"
+        width="20" />
+      <button
+        follows="right"
+        is_toggle="true"
+        width="20"
+        top="2"
+        layout="topleft"
+        left_pad="12"
+        image_disabled="ComboButton_UpOff"
+        image_unselected="ComboButton_UpOff"
+        image_selected="ComboButton_On"
+        image_pressed="ComboButton_UpSelected"
+        image_pressed_selected="ComboButton_Selected"
+        height="23"
+        chrome="true"
+        name="show_nearby_chat"
+        tool_tip="Shows/hides nearby chat log">
+      </button>
     </panel>
 </floater>
diff --git a/indra/newview/skins/default/xui/en/floater_model_preview.xml b/indra/newview/skins/default/xui/en/floater_model_preview.xml
old mode 100644
new mode 100755
diff --git a/indra/newview/skins/default/xui/en/floater_outgoing_call.xml b/indra/newview/skins/default/xui/en/floater_outgoing_call.xml
index 9db6568ee3965a766cdb9a9d5f45f2ae1c0dc407..ffbb6aa28b4af568d0d616d66b6bfaa7be4bb866 100644
--- a/indra/newview/skins/default/xui/en/floater_outgoing_call.xml
+++ b/indra/newview/skins/default/xui/en/floater_outgoing_call.xml
@@ -8,6 +8,7 @@
  layout="topleft"
  name="outgoing call"
  help_topic="outgoing_call"
+ save_dock_state="true"
  title="CALLING"
  width="410">
     <floater.string
diff --git a/indra/newview/skins/default/xui/en/floater_toybox.xml b/indra/newview/skins/default/xui/en/floater_toybox.xml
index c7e09bf45e2ed4f33b4b628f9c7b2d2fe2cfb3dc..ef3951a1cda3895e9e68a9d1c569bb8a63b26fe1 100644
--- a/indra/newview/skins/default/xui/en/floater_toybox.xml
+++ b/indra/newview/skins/default/xui/en/floater_toybox.xml
@@ -13,7 +13,7 @@
   open_positioning="centered"
   save_rect="true"
   single_instance="true"
-  title="CUSTOMIZE TOOLBARS"
+  title="TOOLBAR BUTTONS"
   width="650">
   <text
     follows="left|top"
diff --git a/indra/newview/skins/default/xui/en/floater_translation_settings.xml b/indra/newview/skins/default/xui/en/floater_translation_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c03f7512656885979c35150b31aca036d92c7c08
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_translation_settings.xml
@@ -0,0 +1,244 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ legacy_header_height="18"
+ height="310"
+ layout="topleft"
+ name="floater_translation_settings"
+ help_topic="environment_editor_floater"
+ save_rect="true"
+ title="CHAT TRANSLATION SETTINGS"
+ width="485">
+
+ <string name="bing_api_key_not_verified">Bing appID not verified. Please try again.</string>
+ <string name="google_api_key_not_verified">Google API key not verified. Please try again.</string>
+
+ <string name="bing_api_key_verified">Bing appID verified.</string>
+ <string name="google_api_key_verified">Google API key verified.</string>
+
+ <check_box
+  height="16"     
+  label="Enable machine translation while chatting"
+  layout="topleft"
+  left="10"
+  name="translate_chat_checkbox"
+  top="30"
+  width="20" />
+ <text
+  height="20"
+  follows="left|top"
+  layout="topleft"
+  left="40"
+  name="translate_language_label"
+  top_pad="20"
+  width="130">
+  Translate chat into: 
+ </text>
+ <combo_box
+  allow_text_entry="true"
+  follows="left|top"
+  height="23"
+  left_pad="10"
+  max_chars="135"
+  mouse_opaque="true"
+  name="translate_language_combo"
+  top_delta="-5"
+  width="190">
+  <combo_box.item
+   label="System Default"
+   name="System Default Language"
+   value="default" />
+  <combo_box.item
+   label="English"
+   name="English"
+   value="en" />
+  <!-- After "System Default" and "English", please keep the rest of these combo_box.items in alphabetical order by the first character in the string. -->
+  <combo_box.item
+   label="Dansk (Danish)"
+   name="Danish"
+   value="da" />
+  <combo_box.item
+   label="Deutsch (German)"
+   name="German"
+   value="de" />
+  <combo_box.item
+   label="Español (Spanish)"
+   name="Spanish"
+   value="es" />
+  <combo_box.item
+   label="Français (French)"
+   name="French"
+   value="fr" />
+  <combo_box.item
+   label="Italiano (Italian)"
+   name="Italian"
+   value="it" />
+  <combo_box.item
+   label="Magyar (Hungarian)"
+   name="Hungarian"
+   value="hu" />
+  <combo_box.item
+   label="Nederlands (Dutch)"
+   name="Dutch"
+   value="nl" />
+  <combo_box.item
+   label="Polski (Polish)"
+   name="Polish"
+   value="pl" />
+  <combo_box.item
+   label="Português (Portuguese)"
+   name="Portugese"
+   value="pt" />
+  <combo_box.item
+   label="Русский (Russian)"
+   name="Russian"
+   value="ru" />
+  <combo_box.item
+   label="Türkçe (Turkish)"
+   name="Turkish"
+   value="tr" />
+  <combo_box.item
+   label="Українська (Ukrainian)"
+   name="Ukrainian"
+   value="uk" />
+  <combo_box.item
+   label="中文 (正體) (Chinese)"
+   name="Chinese"
+   value="zh" />
+  <combo_box.item
+   label="日本語 (Japanese)"
+   name="Japanese"
+   value="ja" />
+  <combo_box.item
+   label="한국어 (Korean)"
+   name="Korean"
+   value="ko" />
+ </combo_box>
+
+ <text
+  follows="top|left|right"
+  height="15"
+  layout="topleft"
+  left="40"
+  name="tip"
+  top_pad="20"
+  width="330"
+  wrap="true">
+  Choose translation service:
+ </text>
+
+ <radio_group
+  follows="top|left"
+  height="80"
+  layout="topleft"
+  left_delta="10"
+  name="translation_service_rg"
+  top_pad="20"
+  width="320">
+  <radio_item
+   initial_value="bing"
+   label="Bing Translator"
+   layout="topleft"
+   name="bing" />
+  <radio_item
+   initial_value="google"
+   label="Google Translate"
+   layout="topleft"
+   name="google"
+   top_pad="55" />
+ </radio_group>
+
+ <text
+  type="string"
+  length="1"
+  follows="top|right"
+  height="20"
+  layout="topleft"
+  left="70"
+  name="bing_api_key_label"
+  top_pad="-55"
+  width="85">
+  Bing [http://www.bing.com/developers/createapp.aspx AppID]:
+  </text>
+ <line_editor
+  default_text="Enter Bing AppID and click &quot;Verify&quot;"
+  follows="top|left"
+  height="20"
+  layout="topleft"
+  left_pad="10"
+  max_length_chars="50"
+  top_delta="-4"
+  name="bing_api_key"
+  width="210" />
+ <button
+  follows="left|top"
+  height="23"
+  label="Verify"
+  layout="topleft"
+  left_pad="10"
+  name="verify_bing_api_key_btn"
+  top_delta="-2"
+  width="90" />	
+
+ <text
+  follows="top|right"
+  height="20"
+  layout="topleft"
+  left="70"
+  length="1"
+  name="google_api_key_label"
+  top_pad="50"
+  type="string"
+  width="85">
+  Google [http://code.google.com/apis/language/translate/v2/getting_started.html#auth API key]:
+ </text>
+ <line_editor
+  default_text="Enter Google API key and click &quot;Verify&quot;"
+  follows="top|left"
+  height="20"
+  layout="topleft"
+  left_pad="10"
+  max_length_chars="50"
+  top_delta="-4"
+  name="google_api_key"
+  width="210" />
+ <button
+  follows="left|top"
+  height="23"
+  label="Verify"
+  layout="topleft"
+  left_pad="10"
+  name="verify_google_api_key_btn"
+  top_delta="-2"
+  width="90" />	
+
+ <text
+  follows="top|right"
+  height="20"
+  layout="topleft"
+  left="185"
+  length="1"
+  name="google_links_text"
+  top_delta="-23"
+  type="string"
+  width="100">
+  [http://code.google.com/apis/language/translate/v2/pricing.html Pricing] | [https://code.google.com/apis/console Stats] 
+ </text>
+
+ <button
+  follows="left|top"
+  height="23"
+  label="OK"
+  layout="topleft"
+  right="-120"
+  name="ok_btn"
+  top="-30"
+  width="100" />
+ <button
+  follows="left|top"
+  height="23"
+  label="Cancel"
+  layout="topleft"
+  left_pad="10"
+  name="cancel_btn"
+  width="100" />	
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_voice_controls.xml b/indra/newview/skins/default/xui/en/floater_voice_controls.xml
index 93a04050b64025f869f924f0552ae9bb9df58b96..6807b01fa3ebe2eae75334b0a01aaa0dfc182efa 100644
--- a/indra/newview/skins/default/xui/en/floater_voice_controls.xml
+++ b/indra/newview/skins/default/xui/en/floater_voice_controls.xml
@@ -89,7 +89,7 @@
              visible="true"
              width="20" />
         </layout_panel>
-        <layout_panel name="leave_call_panel" height="26" auto_resize="false">
+        <layout_panel name="leave_call_panel" height="26" min_height="26" user_resize="false" auto_resize="false">
         <layout_stack
          clip="true"
          follows="left|top|right"
diff --git a/indra/newview/skins/default/xui/en/inspect_remote_object.xml b/indra/newview/skins/default/xui/en/inspect_remote_object.xml
index ef3dd844cd04fe8f2278bb9f08c4ba40e6993d14..e83257d2a0da096229b6c9eeee6295b3b8238e63 100644
--- a/indra/newview/skins/default/xui/en/inspect_remote_object.xml
+++ b/indra/newview/skins/default/xui/en/inspect_remote_object.xml
@@ -36,7 +36,7 @@
    height="16"
    left="8"
    name="object_owner_label"
-   width="55"
+   width="65"
    top_pad="12">
      Owner:
   </text>
diff --git a/indra/newview/skins/default/xui/en/menu_toolbars.xml b/indra/newview/skins/default/xui/en/menu_toolbars.xml
index 59912b5503639e7a1087d1496396e61740973c31..7384114d7d9036816b4105de14bf7c657f41e0f1 100644
--- a/indra/newview/skins/default/xui/en/menu_toolbars.xml
+++ b/indra/newview/skins/default/xui/en/menu_toolbars.xml
@@ -3,7 +3,7 @@
       layout="topleft"
       name="Toolbars Popup"
       visible="false">
-  <menu_item_call label="Choose buttons..."
+  <menu_item_call label="Toolbar buttons..."
                   layout="topleft"
                   name="Chose Buttons">
     <menu_item_call.on_click function="Floater.Show"
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index 63e50b0b9f7ceba094b453f89d22adca97e917f5..9c44d90a6ec7959d47b81955e1bca86b7849663d 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -43,6 +43,15 @@
          function="Floater.Toggle"
          parameter="inventory" />
       </menu_item_check>
+      <menu_item_call
+       label="New Inventory Window"
+       name="NewInventoryWindow"
+       shortcut="control|shift|I"
+       visible="false">
+        <menu_item_call.on_click
+         function="Inventory.NewWindow"
+         parameter="" />
+      </menu_item_call>
       <menu_item_check
        label="Gestures..."
        name="Gestures"
@@ -166,7 +175,7 @@
              parameter="preferences" />
         </menu_item_call>
          <menu_item_call
-         label="Toolbars..."
+         label="Toolbar buttons..."
          name="Toolbars"
          shortcut="control|T">
             <menu_item_call.on_click
@@ -2437,6 +2446,16 @@
            parameter="raycast" />
         </menu_item_check>
 		<menu_item_check
+         label="Wind Vectors"
+         name="Wind Vectors">
+          <menu_item_check.on_check
+           function="Advanced.CheckInfoDisplay"
+           parameter="wind vectors" />
+          <menu_item_check.on_click
+           function="Advanced.ToggleInfoDisplay"
+           parameter="wind vectors" />
+        </menu_item_check>
+        <menu_item_check
          label="Render Complexity"
          name="rendercomplexity">
           <menu_item_check.on_check
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_chat.xml b/indra/newview/skins/default/xui/en/panel_preferences_chat.xml
index 52be80526038a7b21f45f960c08e01038627fc45..caf7fc85f569d5d50a1cf40eeb4b98244885afd0 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_chat.xml
@@ -204,119 +204,16 @@
      name="nearby_toasts_fadingtime"
      top_pad="3"
      width="325" />
-    
-    <check_box
-     control_name="TranslateChat"
-     enabled="true"
-     height="16"     
-     layout="topleft"
-     left="30"
-     name="translate_chat_checkbox"
-     top_pad="5"
-     width="400" />
-     <!-- *HACK 
-     	After storm-1109 will be fixed: instead of using this text_box, word_wrap should be applied for "translate_chat_checkbox" check_box's label.-->
-     <text
-      follows="top|left"
-      height="15"
-      layout="topleft"
-      left="50"
-      name="translate_chb_label"
-      top_delta="1"
-      width="450"
-      wrap="true">
-      Use machine translation while chatting (powered by Google)
-     </text>
-    <text
-     top_pad="20"
-     name="translate_language_text"
-     follows="left|top"
-     layout="topleft"
-     left_delta="20"
-     height="20"
-     width="110">
-     Translate chat into: 
-    </text>
-    <combo_box
-     allow_text_entry="true"
-     bottom_delta="3"
-     control_name="TranslateLanguage"
-     enabled="true"
-     follows="left|top"
-     height="23"
-     left_delta="110"
-     max_chars="135"
-     mouse_opaque="true"
-     name="translate_language_combobox"
-     width="146">
-        <combo_box.item
-         label="System Default"
-         name="System Default Language"
-         value="default" />
-        <combo_box.item
-         label="English"
-         name="English"
-         value="en" />
-        <!-- After "System Default" and "English", please keep the rest of these combo_box.items in alphabetical order by the first character in the string. -->
-        <combo_box.item
-         label="Dansk (Danish)"
-         name="Danish"
-         value="da" />
-        <combo_box.item
-         label="Deutsch (German)"
-         name="German"
-         value="de" />
-        <combo_box.item
-         label="Español (Spanish)"
-         name="Spanish"
-         value="es" />
-        <combo_box.item
-         label="Français (French)"
-         name="French"
-         value="fr" />
-        <combo_box.item
-         label="Italiano (Italian)"
-         name="Italian"
-         value="it" />
-        <combo_box.item
-         label="Magyar (Hungarian)"
-         name="Hungarian"
-         value="hu" />
-        <combo_box.item
-         label="Nederlands (Dutch)"
-         name="Dutch"
-         value="nl" />
-        <combo_box.item
-         label="Polski (Polish)"
-         name="Polish"
-         value="pl" />
-        <combo_box.item
-         label="Português (Portuguese)"
-         name="Portugese"
-         value="pt" />
-        <combo_box.item
-         label="Русский (Russian)"
-         name="Russian"
-         value="ru" />
-        <combo_box.item
-         label="Türkçe (Turkish)"
-         name="Turkish"
-         value="tr" />
-        <combo_box.item
-         label="Українська (Ukrainian)"
-         name="Ukrainian"
-         value="uk" />
-        <combo_box.item
-         label="中文 (正體) (Chinese)"
-         name="Chinese"
-         value="zh" />
-        <combo_box.item
-         label="日本語 (Japanese)"
-         name="Japanese"
-         value="ja" />
-        <combo_box.item
-         label="한국어 (Korean)"
-         name="Korean"
-         value="ko" />
-    </combo_box>
+  <button
+   follows="left|top"
+   height="23"
+   label="Chat Translation Settings"
+   layout="topleft"
+   left="30"
+   name="ok_btn"
+   top="-40"
+   width="170">
+   <button.commit_callback
+    function="Pref.TranslationSettings" />
+  </button>
 </panel>
\ No newline at end of file
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_general.xml b/indra/newview/skins/default/xui/en/panel_preferences_general.xml
index 0a1c0872e92a00a1b7ef0edb101090e007382a15..4079a80924972fc55a5b92724d524faac1701323 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_general.xml
@@ -92,7 +92,7 @@
          value="ja" />
         <combo_box.item
          enabled="true"
-         label="正體 (Traditional Chinese) - Beta"
+         label="正體中文 (Traditional Chinese) - Beta"
          name="Traditional Chinese"
          value="zh" />
     </combo_box>
diff --git a/indra/newview/skins/default/xui/en/panel_status_bar.xml b/indra/newview/skins/default/xui/en/panel_status_bar.xml
index 422bbada7ff49071c79a6b9ebe129b69dc8963bf..3239c4e531f56f3ad379b60e8a5f7157e119ea25 100644
--- a/indra/newview/skins/default/xui/en/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_status_bar.xml
@@ -2,7 +2,7 @@
 <panel
  background_opaque="true"
  background_visible="true"
- bg_opaque_color="MouseGray"
+ bg_opaque_color="DkGray"
  chrome="true"
  follows="top|right"
  height="19"
@@ -39,10 +39,7 @@
     width="160"
     top="1"
     follows="right|top" 
-    name="balance_bg" 
-    bg_visible="true"
-    background_opaque="true" 
-    bg_opaque_image="bevel_background">
+    name="balance_bg">
     <text
      halign="center"
      font="SansSerifSmall"
diff --git a/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml b/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml
index 79f29777ce62d9e737d614c394cebcc4fb422401..fc527f5f9d2182fb20b04d31e68445c8e6acf7f2 100644
--- a/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml
@@ -4,7 +4,7 @@
  background_opaque="false"
  bg_opaque_color="Black_50"
  bg_alpha_color="Black_50"
- follows="left|top|right"
+ follows="left|top"
  height="19"
  layout="topleft"
  name="topinfo_bar"
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index c4031de0f875a7fd16626e37ac18334ec5519ccb..ec230773cc5a37074553c504dc32bccbd0892321 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -2183,6 +2183,8 @@ Returns a string with the requested data about the region
 	<string name="Stomach">Stomach</string>
 	<string name="Left Pec">Left Pec</string>
 	<string name="Right Pec">Right Pec</string>
+    <string name="Neck">Neck</string>
+    <string name="Avatar Center">Avatar Center</string>
 	<string name="Invalid Attachment">Invalid Attachment Point</string>
 
   <!-- Avatar age computation, see LLDateUtil::ageFromDate -->
@@ -2269,7 +2271,7 @@ Returns a string with the requested data about the region
 	<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="GroupColumn"          value="                      Group" />
 	<string name="Balance">Balance</string>
 	<string name="Credits">Credits</string>
 	<string name="Debits">Debits</string>
@@ -3529,6 +3531,10 @@ Try enclosing path to the editor with double quotes.
  <string name="ExternalEditorCommandParseError">Error parsing the external editor command.</string>
  <string name="ExternalEditorFailedToRun">External editor failed to run.</string>
 
+ <!--  Machine translation of chat messahes -->
+ <string name="TranslationFailed">Translation failed: [REASON]</string>
+ <string name="TranslationResponseParseError">Error parsing translation response.</string>
+
   <!-- Key names begin -->
   <string name="Esc">Esc</string>
   <string name="Space">Space</string>
@@ -3705,6 +3711,10 @@ Try enclosing path to the editor with double quotes.
   <string name="Command_View_Tooltip">Changing camera angle</string>
   <string name="Command_Voice_Tooltip">Volume controls for calls and people near you in world</string>
 
+  <string name="Toolbar_Bottom_Tooltip">currently in your bottom toolbar</string>
+  <string name="Toolbar_Left_Tooltip"  >currently in your left toolbar</string>
+  <string name="Toolbar_Right_Tooltip" >currently in your right toolbar</string>
+
  <!-- Mesh UI terms -->
   <string name="Retain%">Retain%</string>
   <string name="Detail">Detail</string>
diff --git a/indra/newview/skins/default/xui/en/widgets/toolbar.xml b/indra/newview/skins/default/xui/en/widgets/toolbar.xml
index 7e7a9c61cfc6399ada520398700fd74620e5e13b..0aa478ace9fc66945f817d827bad357f255d1f0b 100644
--- a/indra/newview/skins/default/xui/en/widgets/toolbar.xml
+++ b/indra/newview/skins/default/xui/en/widgets/toolbar.xml
@@ -30,6 +30,8 @@
                         image_overlay_alignment="left"
                         use_ellipses="true"
                         auto_resize="true"
+                        button_flash_count="99999"
+                        button_flash_rate="1.0"
                         flash_color="EmphasisColor"/>
   <button_icon pad_left="10"
                pad_right="10"
@@ -49,5 +51,7 @@
                chrome="true"
                use_ellipses="true"
                auto_resize="true"
+               button_flash_count="99999"
+               button_flash_rate="1.0"
                flash_color="EmphasisColor"/>
 </toolbar>
diff --git a/indra/newview/skins/default/xui/es/floater_about.xml b/indra/newview/skins/default/xui/es/floater_about.xml
index 93bb8444b453eb95e9050bda6ccf263aff0353e4..b7c9cc27acd730ba30bfa2c2df4e7c6d2154a303 100644
--- a/indra/newview/skins/default/xui/es/floater_about.xml
+++ b/indra/newview/skins/default/xui/es/floater_about.xml
@@ -10,7 +10,7 @@
 	<floater.string name="AboutPosition">
 		Estás en la posición [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1], de [REGION], alojada en &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt; ([HOSTIP])
 [SERVER_VERSION]
-[[SERVER_RELEASE_NOTES_URL] [ReleaseNotes]]
+[SERVER_RELEASE_NOTES_URL]
 	</floater.string>
 	<floater.string name="AboutSystem">
 		CPU: [CPU]
@@ -37,6 +37,9 @@ Versión del servidor de voz: [VOICE_VERSION]
 	<floater.string name="AboutTraffic">
 		Paquetes perdidos: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%)
 	</floater.string>
+	<floater.string name="ErrorFetchingServerReleaseNotesURL">
+		Error al obtener la URL de las notas de la versión del servidor.
+	</floater.string>
 	<tab_container name="about_tab">
 		<panel label="Información" name="support_panel">
 			<button label="Copiar al portapapeles" name="copy_btn" width="165"/>
diff --git a/indra/newview/skins/default/xui/es/floater_about_land.xml b/indra/newview/skins/default/xui/es/floater_about_land.xml
index 83749fc5359164220146850268c9c2e650bac8bd..b6391e28a01e73f51d3225b82962be1e692e0df0 100644
--- a/indra/newview/skins/default/xui/es/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/es/floater_about_land.xml
@@ -213,19 +213,19 @@ Vaya al menú Mundo &gt; Acerca del terreno o seleccione otra parcela para ver s
 				Plus de objetos en la región: [BONUS]
 			</text>
 			<text name="Simulator primitive usage:">
-				Uso de primitivas:
+				Capacidad de la región:
 			</text>
 			<text name="objects_available">
 				[COUNT] de un máx. de [MAX] ([AVAILABLE] disponibles)
 			</text>
 			<text name="Primitives parcel supports:">
-				Prims que admite la parcela:
+				Capacidad del terreno de la parcela:
 			</text>
 			<text name="object_contrib_text">
 				[COUNT]
 			</text>
 			<text name="Primitives on parcel:">
-				Prims en la parcela:
+				Impacto en el terreno de la parcela:
 			</text>
 			<text name="total_objects_text">
 				[COUNT]
diff --git a/indra/newview/skins/default/xui/es/floater_avatar.xml b/indra/newview/skins/default/xui/es/floater_avatar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7c87fbe01ccc128ba05e22766ae02aede90d8bfb
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_avatar.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Avatar" title="SELECTOR DE AVATAR"/>
diff --git a/indra/newview/skins/default/xui/es/floater_camera.xml b/indra/newview/skins/default/xui/es/floater_camera.xml
index 04f743b6590b04c6c0d2ab19d2f719ca1aa96265..cdcb9a146b2e0e10d9ae457fa803185e90919870 100644
--- a/indra/newview/skins/default/xui/es/floater_camera.xml
+++ b/indra/newview/skins/default/xui/es/floater_camera.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="camera_floater" title="">
+<floater name="camera_floater" title="VER">
 	<floater.string name="rotate_tooltip">
 		Girar la cámara alrededor de lo enfocado
 	</floater.string>
diff --git a/indra/newview/skins/default/xui/es/floater_chat_bar.xml b/indra/newview/skins/default/xui/es/floater_chat_bar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5e5ef616b8db3096fcfa4847dec79ac5bd62fba4
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_chat_bar.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="chat_bar" title="CHAT">
+	<panel>
+		<line_editor label="Pulsa aquí para chatear." name="chat_box" tool_tip="Pulsa Enter para decirlo o Ctrl+Enter para gritarlo"/>
+		<button name="show_nearby_chat" tool_tip="Muestra o esconde el registro del chat"/>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_destinations.xml b/indra/newview/skins/default/xui/es/floater_destinations.xml
new file mode 100644
index 0000000000000000000000000000000000000000..df18698d2fdf72b24538012fd39076e96204eeeb
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_destinations.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Destinations" title="DESTINOS"/>
diff --git a/indra/newview/skins/default/xui/es/floater_fast_timers.xml b/indra/newview/skins/default/xui/es/floater_fast_timers.xml
new file mode 100644
index 0000000000000000000000000000000000000000..eeb39583efcb84bc612d653da49fcfc3bbf60f2f
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_fast_timers.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="fast_timers">
+	<string name="pause">
+		Pausa
+	</string>
+	<string name="run">
+		Correr
+	</string>
+	<button label="Pausa" name="pause_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_how_to.xml b/indra/newview/skins/default/xui/es/floater_how_to.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4a57dc364370618a6e606801e852c21d7ea8ebd8
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_how_to.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_how_to" title="CÓMO"/>
diff --git a/indra/newview/skins/default/xui/es/floater_map.xml b/indra/newview/skins/default/xui/es/floater_map.xml
index 370b7f5053df72f5fe96d40bbe1dbeb938e2e02f..69f638418e4177423e3e4fce3bd7a27e94000ea5 100644
--- a/indra/newview/skins/default/xui/es/floater_map.xml
+++ b/indra/newview/skins/default/xui/es/floater_map.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Map" title="">
+<floater name="Map" title="MINIMAPA">
 	<floater.string name="ToolTipMsg">
 		[REGIÓN](Haz doble clic para abrir el mapa y pulsa la tecla Mayús y arrastra para obtener una vista panorámica)
 	</floater.string>
@@ -7,7 +7,7 @@
 		[REGION](Pulsa dos veces para teleportarte, pulsa mayús y arrastra para obtener una panorámica)
 	</floater.string>
 	<floater.string name="mini_map_caption">
-		MINIMAPA
+		Minimapa
 	</floater.string>
 	<text label="N" name="floater_map_north" text="N">
 		N
diff --git a/indra/newview/skins/default/xui/es/floater_model_preview.xml b/indra/newview/skins/default/xui/es/floater_model_preview.xml
index 36f988b25f2ca9f2b3188b4132e855b2ceb6f9fd..3e774536129a67e5b1553a481ca917321b618a8f 100644
--- a/indra/newview/skins/default/xui/es/floater_model_preview.xml
+++ b/indra/newview/skins/default/xui/es/floater_model_preview.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Model Preview" title="Cargar modelo">
-	<string name="status_idle">
-		Inactivo
-	</string>
+<floater name="Model Preview" title="SUBIR MODELO">
+	<string name="status_idle"/>
 	<string name="status_parse_error">
-		Problema de análisis de DAE - consulta los datos en el registro.
+		Error: Problema de análisis de DAE - consulta los datos en el registro.
 	</string>
 	<string name="status_reading_file">
 		Cargando...
@@ -51,6 +49,9 @@
 	<string name="mesh_status_missing_lod">
 		Falta un nivel de detalle requerido.
 	</string>
+	<string name="mesh_status_invalid_material_list">
+		Los materiales con niveles de detalle no son un subconjunto del modelo de referencia.
+	</string>
 	<string name="layer_all">
 		Todo
 	</string>
@@ -63,188 +64,211 @@
 	<string name="tbd">
 		TBD
 	</string>
-	<text name="name_label">
-		Nombre:
-	</text>
-	<text name="lod_label">
-		Vista previa:
-	</text>
-	<combo_box name="preview_lod_combo" tool_tip="Nivel de detalle disponible en la vista previa">
-		<combo_item name="high">
-			Nivel de detalle: Alto
-		</combo_item>
-		<combo_item name="medium">
-			Nivel de detalle: Media
-		</combo_item>
-		<combo_item name="low">
-			Nivel de detalle: Bajo
-		</combo_item>
-		<combo_item name="lowest">
-			Nivel de detalle: Mínimo
-		</combo_item>
-	</combo_box>
-	<text name="warning_title">
-		ATENCIÓN:
-	</text>
-	<text name="warning_message">
-		No podrás terminar de subir este modelo a los servidores de Second Life. [[VURL] Averigua cómo] puedes obtener autorización para subir modelos de malla.
-	</text>
-	<text name="weights_text">
-		Descargar:
-Física:
-Servidor:
-
-Equiv. en prims:
-	</text>
-	<text name="weights">
-		[ST]
-[PH]
-[SIM]
-
-[EQ]
-	</text>
-	<tab_container name="import_tab">
-		<panel label="Nivel de detalle" name="lod_panel">
-			<text name="lod_table_header">
-				Seleccionar nivel de detalle:
-			</text>
-			<text name="high_label" value="Alto"/>
-			<text name="high_triangles" value="0"/>
-			<text name="high_vertices" value="0"/>
-			<text name="medium_label" value="Media"/>
-			<text name="medium_triangles" value="0"/>
-			<text name="medium_vertices" value="0"/>
-			<text name="low_label" value="Bajo"/>
-			<text name="low_triangles" value="0"/>
-			<text name="low_vertices" value="0"/>
-			<text name="lowest_label" value="Mínimo"/>
-			<text name="lowest_triangles" value="0"/>
-			<text name="lowest_vertices" value="0"/>
-			<text name="lod_table_footer">
-				Nivel de detalle: [DETALLE]
-			</text>
-			<radio_group name="lod_file_or_limit" value="lod_from_file">
-				<radio_item label="Cargar desde el archivo" name="lod_from_file"/>
-				<radio_item label="Generar automáticamente" name="lod_auto_generate"/>
-				<radio_item label="Ninguno" name="lod_none"/>
-			</radio_group>
-			<button label="Examinar..." name="lod_browse"/>
-			<combo_box name="lod_mode">
-				<combo_item name="triangle_limit">
-					Límite de triángulo
-				</combo_item>
-				<combo_item name="error_threshold">
-					Margen de error
-				</combo_item>
-			</combo_box>
-			<text name="build_operator_text">
-				Crear operador:
+	<panel name="left_panel">
+		<panel name="model_name_representation_panel">
+			<text name="name_label">
+				Nombre del modelo:
 			</text>
-			<text name="queue_mode_text">
-				Modo de cola:
+			<text name="model_category_label">
+				Este modelo representa...
 			</text>
-			<combo_box name="build_operator">
-				<combo_item name="edge_collapse">
-					Cerrar bordes
-				</combo_item>
-				<combo_item name="half_edge_collapse">
-					Cerrar la mitad de los bordes
-				</combo_item>
-			</combo_box>
-			<combo_box name="queue_mode">
-				<combo_item name="greedy">
-					Egoísta
-				</combo_item>
-				<combo_item name="lazy">
-					Vago
-				</combo_item>
-				<combo_item name="independent">
-					Independiente
-				</combo_item>
+			<combo_box name="model_category_combo">
+				<combo_item label="Elegir uno..." name="Choose one"/>
+				<combo_item label="Forma del avatar" name="Avatar shape"/>
+				<combo_item label="Anexo del avatar" name="Avatar attachment"/>
+				<combo_item label="Objeto en movimiento (vehículo, animal)" name="Moving object (vehicle, animal)"/>
+				<combo_item label="Componente de construcción" name="Building Component"/>
+				<combo_item label="Grande, sin movimiento, etc." name="Large, non moving etc"/>
+				<combo_item label="Más pequeño, sin movimiento, etc." name="Smaller, non-moving etc"/>
+				<combo_item label="No es exactamente ninguno de estos" name="Not really any of these"/>
 			</combo_box>
-			<text name="border_mode_text">
-				Modo de borde:
-			</text>
-			<text name="share_tolderance_text">
-				Tolerancia de uso compartido:
-			</text>
-			<combo_box name="border_mode">
-				<combo_item name="border_unlock">
-					Desbloquear
-				</combo_item>
-				<combo_item name="border_lock">
-					Lock
-				</combo_item>
-			</combo_box>
-			<text name="crease_label">
-				Ángulo de marca:
-			</text>
-			<spinner name="crease_angle" value="75"/>
 		</panel>
-		<panel label="Física" name="physics_panel">
-			<panel name="physics geometry">
-				<radio_group name="physics_load_radio" value="physics_load_from_file">
-					<radio_item label="Archivo:" name="physics_load_from_file"/>
-					<radio_item label="Utilizar nivel de detalle:" name="physics_use_lod"/>
-				</radio_group>
-				<combo_box name="physics_lod_combo" tool_tip="Nivel de detalle para forma física">
-					<combo_item name="physics_lowest">
-						Mínimo
-					</combo_item>
-					<combo_item name="physics_low">
-						Bajo
-					</combo_item>
-					<combo_item name="physics_medium">
-						Media
-					</combo_item>
-					<combo_item name="physics_high">
-						Alto
-					</combo_item>
-				</combo_box>
-				<button label="Examinar..." name="physics_browse"/>
+		<tab_container name="import_tab">
+			<panel label="Nivel de detalle" name="lod_panel" title="Nivel de detalle">
+				<text initial_value="Origen" name="source" value="Origen"/>
+				<text initial_value="Triángulos" name="triangles" value="Triángulos"/>
+				<text initial_value="Vértices" name="vertices" value="Vértices"/>
+				<text initial_value="Alto" name="high_label" value="Alto"/>
+				<button label="Buscar..." name="lod_browse_high"/>
+				<text initial_value="0" name="high_triangles" value="0"/>
+				<text initial_value="0" name="high_vertices" value="0"/>
+				<text initial_value="Medio" name="medium_label" value="Medio"/>
+				<button label="Buscar..." name="lod_browse_medium"/>
+				<text initial_value="0" name="medium_triangles" value="0"/>
+				<text initial_value="0" name="medium_vertices" value="0"/>
+				<text initial_value="Bajo" name="low_label" value="Bajo"/>
+				<button label="Buscar..." name="lod_browse_low"/>
+				<text initial_value="0" name="low_triangles" value="0"/>
+				<text initial_value="0" name="low_vertices" value="0"/>
+				<text initial_value="Mínimo" name="lowest_label" value="Mínimo"/>
+				<button label="Buscar..." name="lod_browse_lowest"/>
+				<text initial_value="0" name="lowest_triangles" value="0"/>
+				<text initial_value="0" name="lowest_vertices" value="0"/>
+				<check_box label="Generar normales" name="gen_normals"/>
+				<text initial_value="Ángulo de pliegue:" name="crease_label" value="Ángulo de pliegue:"/>
+				<spinner name="crease_angle" value="75"/>
 			</panel>
-			<panel name="physics analysis">
-				<slider label="Leve:" name="Smooth"/>
-				<check_box label="Cerrar agujeros (lento)" name="Close Holes (Slow)"/>
-				<button label="Analizar" name="Decompose"/>
-				<button label="Cancelar" name="decompose_cancel"/>
+			<panel label="Física" name="physics_panel">
+				<panel name="physics geometry">
+					<text name="first_step_name">
+						Paso 1: Nivel de detalle
+					</text>
+					<combo_box name="physics_lod_combo" tool_tip="Niveles de detalle para utilizar con la forma física">
+						<combo_item name="choose_one">
+							Elegir uno...
+						</combo_item>
+						<combo_item name="physics_high">
+							Alto
+						</combo_item>
+						<combo_item name="physics_medium">
+							Medio
+						</combo_item>
+						<combo_item name="physics_low">
+							Bajo
+						</combo_item>
+						<combo_item name="physics_lowest">
+							Mínimo
+						</combo_item>
+						<combo_item name="load_from_file">
+							De archivo
+						</combo_item>
+					</combo_box>
+					<button label="Buscar..." name="physics_browse"/>
+				</panel>
+				<panel name="physics analysis">
+					<text name="method_label">
+						Paso 2: Analizar
+					</text>
+					<text name="analysis_method_label">
+						Método:
+					</text>
+					<text name="quality_label">
+						Calidad:
+					</text>
+					<text name="smooth_method_label">
+						Leve:
+					</text>
+					<check_box label="Cerrar agujeros" name="Close Holes (Slow)"/>
+					<button label="Analizar" name="Decompose"/>
+					<button label="Cancelar" name="decompose_cancel"/>
+				</panel>
+				<panel name="physics simplification">
+					<text name="second_step_label">
+						Paso 3: Simplificar
+					</text>
+					<text name="simp_method_header">
+						Método:
+					</text>
+					<text name="pass_method_header">
+						Pases:
+					</text>
+					<text name="Detail Scale label">
+						Escala de detalle:
+					</text>
+					<text name="Retain%_label">
+						Retención:
+					</text>
+					<combo_box name="Combine Quality" value="1"/>
+					<button label="Simplificar" name="Simplify"/>
+					<button label="Cancelar" name="simplify_cancel"/>
+				</panel>
+				<panel name="physics info">
+					<text name="results_text">
+						Resultados:
+					</text>
+					<text name="physics_triangles">
+						Triángulos: [TRIANGLES],
+					</text>
+					<text name="physics_points">
+						Vértices: [POINTS],
+					</text>
+					<text name="physics_hulls">
+						Apariencias: [HULLS]
+					</text>
+				</panel>
 			</panel>
-			<panel name="physics simplification">
-				<slider label="Pases:" name="Combine Quality"/>
-				<slider label="Escala de detalle:" name="Detail Scale"/>
-				<slider label="Retener:" name="Retain%"/>
-				<button label="Simplificar" name="Simplify"/>
-				<button label="Cancelar" name="simplify_cancel"/>
-			</panel>
-			<panel name="physics info">
-				<slider label="Ampliación de vista previa:" name="physics_explode"/>
-				<text name="physics_triangles">
-					Triángulos: [TRIÁNGULOS]
+			<panel label="Opciones de subida" name="modifiers_panel">
+				<text name="scale_label">
+					Escala (1=sin ajuste de escala):
+				</text>
+				<spinner name="import_scale" value="1.0"/>
+				<text name="dimensions_label">
+					Dimensiones:
 				</text>
-				<text name="physics_points">
-					Intersecciones: [PUNTOS]
+				<text name="import_dimensions">
+					[X] X [Y] X [Z]
 				</text>
-				<text name="physics_hulls">
-					Aspecto exterior: [ASPECTO EXTERIOR]
+				<check_box label="Incluir texturas" name="upload_textures"/>
+				<text name="include_label">
+					Solo para modelos de avatar:
 				</text>
+				<check_box label="Incluir el peso de la piel" name="upload_skin"/>
+				<check_box label="Incluir posturas de las articulaciones" name="upload_joints"/>
+				<text name="pelvis_offset_label">
+					Desplazamiento Z (subir o bajar el avatar):
+				</text>
+				<spinner name="pelvis_offset" value="0.0"/>
 			</panel>
-		</panel>
-		<panel label="Modificadores" name="modifiers_panel">
-			<spinner name="import_scale" value="1.0"/>
-			<text name="import_dimensions">
-				[X] x [Y] x [Z] m
+		</tab_container>
+		<panel name="weights_and_warning_panel">
+			<button label="Calcular pesos y precio" name="calculate_btn" tool_tip="Calcular pesos y precio"/>
+			<button label="Cancelar" name="cancel_btn"/>
+			<button label="subir" name="ok_btn" tool_tip="Subir al simulador"/>
+			<button label="Limpiar la configuración y reiniciar el formulario" name="reset_btn"/>
+			<text name="upload_fee">
+				Precio de subida: L$ [FEE]
+			</text>
+			<text name="prim_weight">
+				Impacto en el terreno: [EQ]
+			</text>
+			<text name="download_weight">
+				Descargar: [ST]
+			</text>
+			<text name="physics_weight">
+				Física: [PH]
+			</text>
+			<text name="server_weight">
+				Servidor: [SIM]
+			</text>
+			<text name="warning_title">
+				NOTA:
+			</text>
+			<text name="warning_message">
+				No tienes derechos para subir modelos de malla. [[VURL] Averigua cómo] puedes obtener la autorización.
+			</text>
+			<text name="status">
+				[STATUS]
 			</text>
-			<check_box label="Texturas" name="upload_textures"/>
-			<check_box label="Peso de la piel" name="upload_skin"/>
-			<check_box label="Posturas de las articulaciones" name="upload_joints"/>
-			<spinner name="pelvis_offset" value="0.0"/>
 		</panel>
-	</tab_container>
-	<text name="upload_fee">
-		Precio de subida: L$ [FEE]
+	</panel>
+	<text name="lod_label">
+		Vista previa:
 	</text>
-	<button label="Establecer en valores predeterminados" name="reset_btn" tool_tip="Establecer en valores predeterminados"/>
-	<button label="Calcular pesos y precio" name="calculate_btn" tool_tip="Calcular pesos y precio"/>
-	<button label="Subir" name="ok_btn" tool_tip="Cargar al simulador"/>
-	<button label="Cancelar" name="cancel_btn"/>
+	<panel name="right_panel">
+		<combo_box name="preview_lod_combo" tool_tip="LOD para ver en renderizado de prueba">
+			<combo_item name="high">
+				Alto
+			</combo_item>
+			<combo_item name="medium">
+				Media
+			</combo_item>
+			<combo_item name="low">
+				Bajo
+			</combo_item>
+			<combo_item name="lowest">
+				Mínimo
+			</combo_item>
+		</combo_box>
+		<text name="label_display">
+			Mostrar...
+		</text>
+		<check_box label="Bordes" name="show_edges"/>
+		<check_box label="Física" name="show_physics"/>
+		<check_box label="Texturas" name="show_textures"/>
+		<check_box label="Pesos de la piel" name="show_skin_weight"/>
+		<check_box label="Articulaciones" name="show_joint_positions"/>
+		<text name="physics_explode_label">
+			Ampliación de vista previa:
+		</text>
+	</panel>
 </floater>
diff --git a/indra/newview/skins/default/xui/es/floater_model_wizard.xml b/indra/newview/skins/default/xui/es/floater_model_wizard.xml
index 86de557ed9e819c1d3faf6ac7f03010003df37ef..c4eb5e955ad6fe7c8bfa6ecda19fc9b56bd64976 100644
--- a/indra/newview/skins/default/xui/es/floater_model_wizard.xml
+++ b/indra/newview/skins/default/xui/es/floater_model_wizard.xml
@@ -6,26 +6,20 @@
 	<button label="2. Optimizar" name="optimize_btn"/>
 	<button label="1. Seleccionar archivo" name="choose_file_btn"/>
 	<panel name="choose_file_panel">
-		<panel name="choose_file_header_panel">
-			<text name="choose_file_header_text">
+		<panel name="header_panel">
+			<text name="header_text">
 				Elige el archivo de modelo
 			</text>
 		</panel>
-		<panel name="choose_file_content_panel">
+		<panel name="content">
 			<text name="advanced_users_text">
 				Usuarios avanzados: si tienes experiencia con las herramientas de creación de contenidos 3D, quizá te interese utilizar la función de subida avanzada.
 			</text>
 			<button label="Cambiar al modo Avanzado" name="switch_to_advanced"/>
-			<text name="choose_model_file_label">
+			<text name="Cache location">
 				Elige el archivo de modelo que deseas subir
 			</text>
 			<button label="Buscar..." label_selected="Buscar..." name="browse"/>
-			<text name="support_collada_text">
-				‎Second Life admite los archivos COLLADA (.dae)
-			</text>
-			<text name="dimensions_label">
-				Dimensiones (metros):
-			</text>
 			<text name="dimensions">
 				X         Y         Z
 			</text>
@@ -38,18 +32,15 @@
 		</panel>
 	</panel>
 	<panel name="optimize_panel">
-		<panel name="optimize_header_panel">
-			<text name="optimize_header_text">
+		<panel name="header_panel">
+			<text name="header_text">
 				Optimizar el modelo
 			</text>
 		</panel>
-		<text name="optimize_hint">
+		<text name="description">
 			Hemos optimizado el rendimiento del modelo, pero puedes ajustarlo más si lo deseas.
 		</text>
-		<panel name="optimize_content_panel">
-			<text name="generating_lod_label">
-				Generando el nivel de detalle
-			</text>
+		<panel name="content">
 			<text name="high_detail_text">
 				Generar el nivel de detalle: Alto
 			</text>
@@ -64,123 +55,64 @@
 			</text>
 		</panel>
 		<panel name="content2">
-			<text name="optimize_performance_text">
-				Rendimiento
-			</text>
-			<text name="optimize_faster_rendering_text">
-				Renderizado más rápido
-Menos detalles
-Menos peso de prim
-			</text>
-			<text name="optimize_accuracy_text">
-				Precisión
-			</text>
-			<text name="optimize_slower_rendering_text">
-				Renderizado más lento
-Más detalles
-Más peso de prim
-			</text>
-			<text name="accuracy_slider_mark1">
-				&apos;
-			</text>
-			<text name="accuracy_slider_mark2">
-				&apos;
-			</text>
-			<text name="accuracy_slider_mark3">
-				&apos;
-			</text>
 			<button label="Recalcular la geometría" name="recalculate_geometry_btn"/>
-			<text name="geometry_preview_label">
+			<text name="lod_label">
 				Vista previa de geometría
 			</text>
 			<combo_box name="preview_lod_combo" tool_tip="LOD para ver en renderizado de prueba">
-				<combo_item name="preview_lod_high">
+				<combo_item name="high">
 					Detalle alto
 				</combo_item>
-				<combo_item name="preview_lod_medium">
+				<combo_item name="medium">
 					Detalles medios
 				</combo_item>
-				<combo_item name="preview_lod_low">
+				<combo_item name="low">
 					Detalle bajo
 				</combo_item>
-				<combo_item name="preview_lod_lowest">
+				<combo_item name="lowest">
 					Detalles mínimos
 				</combo_item>
 			</combo_box>
 		</panel>
 	</panel>
 	<panel name="physics_panel">
-		<panel name="physics_header_panel">
-			<text name="physics_header_text">
+		<panel name="header_panel">
+			<text name="header_text">
 				Ajustar la física
 			</text>
 		</panel>
-		<text name="physics_hint">
+		<text name="description">
 			Crearemos una forma para la apariencia exterior del modelo. Ajusta el nivel de detalle de la forma según se necesite para el propósito proyectado del modelo.
 		</text>
-		<panel name="physics_content_panel">
-			<text name="physics_performance_text">
-				Rendimiento
-			</text>
-			<text name="physics_faster_rendering_text">
-				Renderizado más rápido
-Menos detalles
-Menos peso de prim
-			</text>
-			<text name="physics_accuracy_text">
-				Precisión
-			</text>
-			<text name="physics_slower_dendering_text">
-				Renderizado más lento
-Más detalles
-Más peso de prim
-			</text>
-			<text name="physics_example_1">
-				Ejemplos:
-Objetos en movimiento
-Objetos voladores
-Vehículos
-			</text>
-			<text name="physics_example_2">
-				Ejemplos:
-Objetos estáticos pequeños
-Objetos con menos detalles
-Muebles sencillos
-			</text>
-			<text name="physics_example_3">
-				Ejemplos:
-Objetos estáticos
-Objetos con detalles
-Edificios
-			</text>
+		<panel name="content">
 			<button label="Recalcular física" name="recalculate_physics_btn"/>
 			<button label="Recalculando..." name="recalculating_physics_btn"/>
-			<text name="physics_preview_label">
+			<text name="lod_label">
 				Prueba de física
 			</text>
 			<combo_box name="preview_lod_combo2" tool_tip="LOD para ver en renderizado de prueba">
-				<combo_item name="preview_lod2_high">
+				<combo_item name="high">
 					Detalle alto
 				</combo_item>
-				<combo_item name="preview_lod2_medium">
+				<combo_item name="medium">
 					Detalles medios
 				</combo_item>
-				<combo_item name="preview_lod2_low">
+				<combo_item name="low">
 					Detalle bajo
 				</combo_item>
-				<combo_item name="preview_lod2_lowest">
+				<combo_item name="lowest">
 					Detalles mínimos
 				</combo_item>
 			</combo_box>
 		</panel>
 	</panel>
 	<panel name="review_panel">
-		<panel name="review_header_panel">
-			<text name="review_header_text">
+		<panel name="header_panel">
+			<text name="header_text">
 				Revisar
 			</text>
 		</panel>
-		<panel name="review_content_panel">
+		<panel name="content">
 			<text name="review_prim_equiv">
 				Impacto en la parcela/región: [EQUIV] equivalentes en prim
 			</text>
@@ -193,8 +125,8 @@ Edificios
 		</panel>
 	</panel>
 	<panel name="upload_panel">
-		<panel name="upload_header_panel">
-			<text name="upload_header_text">
+		<panel name="header_panel">
+			<text name="header_text">
 				Subida finalizada
 			</text>
 		</panel>
diff --git a/indra/newview/skins/default/xui/es/floater_moveview.xml b/indra/newview/skins/default/xui/es/floater_moveview.xml
index 258f84c36193e26ccab433cc809250aa7daeebe1..b29fe0484863622337e9fb478a1e8c6a4af1828f 100644
--- a/indra/newview/skins/default/xui/es/floater_moveview.xml
+++ b/indra/newview/skins/default/xui/es/floater_moveview.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="move_floater">
+<floater name="move_floater" title="MOVERME">
 	<string name="walk_forward_tooltip">
 		Caminar hacia adelante (cursor arriba o W)
 	</string>
@@ -58,14 +58,14 @@
 		Volar
 	</string>
 	<panel name="panel_actions">
-		<button label="" label_selected="" name="move up btn" tool_tip="Volar (pulsa E para subir)"/>
 		<button label="" label_selected="" name="turn left btn" tool_tip="Girar a la izq. (cursor izq. o A)"/>
 		<joystick_slide name="move left btn" tool_tip="Caminar a la izq. (pulsa Mayúsculas + cursor izq. o A)"/>
-		<button label="" label_selected="" name="move down btn" tool_tip="Volar (pulsa C para descender)"/>
 		<button label="" label_selected="" name="turn right btn" tool_tip="Girar a la der. (cursor der. o D)"/>
 		<joystick_slide name="move right btn" tool_tip="Caminar a la der. (pulsa Mayúsculas + cursor der. o D)"/>
 		<joystick_turn name="forward btn" tool_tip="Caminar hacia adelante (cursor arriba o W)"/>
 		<joystick_turn name="backward btn" tool_tip="Caminar de espaldas (cursor abajo o S)"/>
+		<button label="" label_selected="" name="move up btn" tool_tip="Volar (pulsa E para subir)"/>
+		<button label="" label_selected="" name="move down btn" tool_tip="Volar (pulsa C para descender)"/>
 	</panel>
 	<panel name="panel_modes">
 		<button label="" name="mode_walk_btn" tool_tip="Modo de caminar"/>
diff --git a/indra/newview/skins/default/xui/es/floater_my_appearance.xml b/indra/newview/skins/default/xui/es/floater_my_appearance.xml
new file mode 100644
index 0000000000000000000000000000000000000000..774babf04e7baf6a8c1fbbd97f804fd73b909b81
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_my_appearance.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_my_appearance" title="APARIENCIA">
+	<panel label="Modificar la apariencia" name="main_panel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_my_inventory.xml b/indra/newview/skins/default/xui/es/floater_my_inventory.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0efd9f1c6d5c0cc19adcc2429596c87d4a17f094
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_my_inventory.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_my_inventory" title="INVENTARIO"/>
diff --git a/indra/newview/skins/default/xui/es/floater_object_weights.xml b/indra/newview/skins/default/xui/es/floater_object_weights.xml
new file mode 100644
index 0000000000000000000000000000000000000000..50c4f0518d855867769d4cfd7ca7b45e363155ff
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_object_weights.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="object_weights" title="AVANZADAS">
+	<floater.string name="nothing_selected" value="--"/>
+	<text name="selected_text" value="SELECCIONADOS"/>
+	<text name="objects" value="--"/>
+	<text name="objects_label" value="Objetos"/>
+	<text name="prims" value="--"/>
+	<text name="prims_label" value="Primitivas"/>
+	<text name="weights_of_selected_text" value="PESOS DE SELECCIONADOS"/>
+	<text name="download" value="--"/>
+	<text name="download_label" value="Descargar"/>
+	<text name="physics" value="--"/>
+	<text name="physics_label" value="Física"/>
+	<text name="server" value="--"/>
+	<text name="server_label" value="Servidor"/>
+	<text name="display" value="--"/>
+	<text name="display_label" value="Mostrar"/>
+	<text name="land_impacts_text" value="IMPACTOS EN EL TERRENO"/>
+	<text name="selected" value="--"/>
+	<text name="selected_label" value="Seleccionados"/>
+	<text name="rezzed_on_land" value="--"/>
+	<text name="rezzed_on_land_label" value="Colocados en el terreno"/>
+	<text name="remaining_capacity" value="--"/>
+	<text name="remaining_capacity_label" value="Capacidad restante"/>
+	<text name="total_capacity" value="--"/>
+	<text name="total_capacity_label" value="Capacidad total"/>
+	<text name="help_SLURL" value="[secondlife:///app/help/object_weights ¿Qué es todo esto?...]"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/es/floater_outfit_save_as.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f48d0d2d0ca21b9d76f76627b9b012b6ac35b7dd
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_outfit_save_as.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="modal container" title="GUARDAR EL VESTUARIO"/>
diff --git a/indra/newview/skins/default/xui/es/floater_people.xml b/indra/newview/skins/default/xui/es/floater_people.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f5a3eab008517b3f5556ab986eb3f8d73a590592
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_people.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_people" title="GENTE">
+	<panel_container name="main_panel">
+		<panel label="Perfil del grupo" name="panel_group_info_sidetray"/>
+		<panel label="Residentes y objetos ignorados" name="panel_block_list_sidetray"/>
+	</panel_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_picks.xml b/indra/newview/skins/default/xui/es/floater_picks.xml
new file mode 100644
index 0000000000000000000000000000000000000000..255aa5dcdc1ebc1f649027a4373fa03e8ad4d0a0
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_picks.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_picks" title="Destacados"/>
diff --git a/indra/newview/skins/default/xui/es/floater_places.xml b/indra/newview/skins/default/xui/es/floater_places.xml
new file mode 100644
index 0000000000000000000000000000000000000000..12c6548205fb3a2bb018095f55c9502ca05dd2b7
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_places.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_places" title="LUGARES">
+	<panel label="Lugares" name="main_panel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_sound_devices.xml b/indra/newview/skins/default/xui/es/floater_sound_devices.xml
index a5ffbd517a1b22996a615d70b98d96b2946ba952..0291f9e7960e77751a775217837e4192a25c4357 100644
--- a/indra/newview/skins/default/xui/es/floater_sound_devices.xml
+++ b/indra/newview/skins/default/xui/es/floater_sound_devices.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_sound_devices" title="Dispositivos de sonido">
+<floater name="floater_sound_devices" title="DISPOSITIVOS DE SONIDO">
 	<text name="voice_label">
 		Chat de voz
 	</text>
diff --git a/indra/newview/skins/default/xui/es/floater_stats.xml b/indra/newview/skins/default/xui/es/floater_stats.xml
index 5f4fabf375e37f6d349c4086befd2c5852ab4ee8..ba4af2e8669b8426a95988549f094730b982f8e5 100644
--- a/indra/newview/skins/default/xui/es/floater_stats.xml
+++ b/indra/newview/skins/default/xui/es/floater_stats.xml
@@ -10,8 +10,8 @@
 			</stat_view>
 			<stat_view label="Avanzado" name="advanced">
 				<stat_view label="Renderización" name="render">
-					<stat_bar label="KTris generados" name="ktrisframe"/>
-					<stat_bar label="KTris generados" name="ktrissec"/>
+					<stat_bar label="KTris generados por fotograma" name="ktrisframe"/>
+					<stat_bar label="KTris generados por segundo" name="ktrissec"/>
 					<stat_bar label="Objetos en total" name="objs"/>
 					<stat_bar label="Objetos nuevos" name="newobjs"/>
 				</stat_view>
@@ -43,18 +43,6 @@
 					<stat_bar label="Pin de objetos" name="physicspinnedtasks"/>
 					<stat_bar label="Objetos con bajo nivel de detalle" name="physicslodtasks"/>
 					<stat_bar label="Memoria asignada" name="physicsmemoryallocated"/>
-					<stat_bar label="Agentes: actual./seg." name="simagentups"/>
-					<stat_bar label="Agentes del grid principal" name="simmainagents"/>
-					<stat_bar label="Agentes secundarios" name="simchildagents"/>
-					<stat_bar label="Objetos" name="simobjects"/>
-					<stat_bar label="Objetos activos" name="simactiveobjects"/>
-					<stat_bar label="Scripts activos" name="simactivescripts"/>
-					<stat_bar label="Eventos de scripts" name="simscripteps"/>
-					<stat_bar label="Paquetes salientes" name="siminpps"/>
-					<stat_bar label="Paquetes entrantes" name="simoutpps"/>
-					<stat_bar label="Descargas pendientes" name="simpendingdownloads"/>
-					<stat_bar label="Subidas pendientes" name="simpendinguploads"/>
-					<stat_bar label="Total de bytes no reconocidos" name="simtotalunackedbytes"/>
 				</stat_view>
 				<stat_view label="Tiempo (ms)" name="simperf">
 					<stat_bar label="Tiempo total de los frames" name="simframemsec"/>
@@ -64,6 +52,14 @@
 					<stat_bar label="Tiempo de los agentes" name="simagentmsec"/>
 					<stat_bar label="Tiempo de las imágenes" name="simimagesmsec"/>
 					<stat_bar label="Tiempo de los scripts" name="simscriptmsec"/>
+					<stat_bar label="Tiempo libre" name="simsparemsec"/>
+					<stat_view label="Datos de tiempo (ms)" name="timedetails">
+						<stat_bar label="Paso de física" name="simsimphysicsstepmsec"/>
+						<stat_bar label="Actualizar formas físicas" name="simsimphysicsshapeupdatemsec"/>
+						<stat_bar label="Otros (Física)" name="simsimphysicsothermsec"/>
+						<stat_bar label="Tiempo de suspensión" name="simsleepmsec"/>
+						<stat_bar label="E/S bombeo" name="simpumpiomsec"/>
+					</stat_view>
 				</stat_view>
 			</stat_view>
 		</container_view>
diff --git a/indra/newview/skins/default/xui/es/floater_tools.xml b/indra/newview/skins/default/xui/es/floater_tools.xml
index f6e246ebaea173390cef86c889ffa1ff29d8a5c0..650b4b457d41cf6ee94eec855278addb21864379 100644
--- a/indra/newview/skins/default/xui/es/floater_tools.xml
+++ b/indra/newview/skins/default/xui/es/floater_tools.xml
@@ -25,10 +25,10 @@
 		Pulsa y arrastra para seleccionar el terreno.
 	</floater.string>
 	<floater.string name="status_selectcount">
-		[OBJ_COUNT] objetos ( [PRIM_COUNT] prims[PE_STRING] ) seleccionados
+		[OBJ_COUNT] objetos seleccionados, impacto en el terreno [LAND_IMPACT]
 	</floater.string>
-	<floater.string name="status_selectprimequiv">
-		, [SEL_WEIGHT] equivalentes en prim
+	<floater.string name="status_remaining_capacity">
+		Capacidad restante [LAND_CAPACITY].
 	</floater.string>
 	<button label="" label_selected="" name="button focus" tool_tip="Visión"/>
 	<button label="" label_selected="" name="button move" tool_tip="Mover"/>
@@ -105,8 +105,8 @@
 	<text name="selection_empty">
 		No está seleccionado nada.
 	</text>
-	<text name="selection_weight">
-		Peso de física [PHYS_WEIGHT], Coste de renderizado [DISP_WEIGHT].
+	<text name="remaining_capacity">
+		[CAPACITY_STRING] [secondlife:///app/openfloater/object_weights Más información]
 	</text>
 	<tab_container name="Object Info Tabs" tab_max_width="62" tab_min_width="30" width="288">
 		<panel label="General" name="General">
@@ -319,7 +319,6 @@
 				Tipo de unión
 			</text>
 			<combo_box name="sculpt type control">
-				<combo_box.item label="(ninguna)" name="None"/>
 				<combo_box.item label="Esfera" name="Sphere"/>
 				<combo_box.item label="Toroide" name="Torus"/>
 				<combo_box.item label="Plano" name="Plane"/>
diff --git a/indra/newview/skins/default/xui/es/floater_toybox.xml b/indra/newview/skins/default/xui/es/floater_toybox.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b36a05a6e4bea3a8798725e735dc53190c4dffaa
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_toybox.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Toybox" title="PERSONALIZAR BARRAS DE HERRAMIENTAS">
+	<text name="toybox label 1">
+		Puedes agregar o quitar botones arrastrándolos a las barras de herramientas o desde ellas.
+	</text>
+	<text name="toybox label 2">
+		Los botones aparecerán como se muestra o solo como iconos, según la configuración de cada barra de herramientas.
+	</text>
+	<button label="Restaurar valores predeterminados" label_selected="Restaurar valores predeterminados" name="btn_restore_defaults"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_voice_controls.xml b/indra/newview/skins/default/xui/es/floater_voice_controls.xml
index f02855123c861081e142676a8b09ff6d3e9a260a..cefec2a7a16cfd2e5eea09837f379cc7978c1ab3 100644
--- a/indra/newview/skins/default/xui/es/floater_voice_controls.xml
+++ b/indra/newview/skins/default/xui/es/floater_voice_controls.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_voice_controls" title="Controles de Voz">
+<floater name="floater_voice_controls" title="CONTROLES DE LA VOZ">
 	<string name="title_nearby">
-		CHAT DE VOZ
+		Chat de voz
 	</string>
 	<string name="title_group">
 		Multiconferencia de voz con [GROUP]
diff --git a/indra/newview/skins/default/xui/es/menu_hide_navbar.xml b/indra/newview/skins/default/xui/es/menu_hide_navbar.xml
index 22a1873234ad48c587bd32c40930a7774743d4a0..9945908c4fb6bd7a63ae1a799f9045a7b2f41e35 100644
--- a/indra/newview/skins/default/xui/es/menu_hide_navbar.xml
+++ b/indra/newview/skins/default/xui/es/menu_hide_navbar.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="hide_navbar_menu">
-	<menu_item_check label="Mostrar la barra de navegación" name="ShowNavbarNavigationPanel"/>
+	<menu_item_check label="Mostrar la barra de navegación y de favoritos" name="ShowNavbarNavigationPanel"/>
 	<menu_item_check label="Mostrar la barra de favoritos" name="ShowNavbarFavoritesPanel"/>
 	<menu_item_check label="Mostrar mini-barra de ubicación" name="ShowMiniLocationPanel"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/es/menu_login.xml b/indra/newview/skins/default/xui/es/menu_login.xml
index cabcacaed52295d2e16f5e3e6e306aa2551867dc..e3abf7ad6295795919f834f1990b0c20505ce6bc 100644
--- a/indra/newview/skins/default/xui/es/menu_login.xml
+++ b/indra/newview/skins/default/xui/es/menu_login.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu_bar name="Login Menu">
 	<menu label="Yo" name="File">
-		<menu_item_call label="Preferencias" name="Preferences..."/>
+		<menu_item_call label="Preferencias..." name="Preferences..."/>
 		<menu_item_call label="Salir de [APP_NAME]" name="Quit"/>
 	</menu>
 	<menu label="Ayuda" name="Help">
diff --git a/indra/newview/skins/default/xui/es/menu_toolbars.xml b/indra/newview/skins/default/xui/es/menu_toolbars.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f8ed1c54ca3bdbc3b7e2c3885d3a55d4a7b5ed7f
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_toolbars.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Toolbars Popup">
+	<menu_item_call label="Elegir botones..." name="Chose Buttons"/>
+	<menu_item_check label="Iconos y etiquetas" name="icons_with_text"/>
+	<menu_item_check label="Solo iconos" name="icons_only"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_viewer.xml b/indra/newview/skins/default/xui/es/menu_viewer.xml
index bc8a5731ab9709bf59ffe5656120f302b5bb0038..0714e7f2c6b7246f40c8485f99766330581a03d3 100644
--- a/indra/newview/skins/default/xui/es/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/es/menu_viewer.xml
@@ -1,29 +1,30 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu_bar name="Main Menu">
 	<menu label="Yo" name="Me">
-		<menu_item_call label="Preferencias" name="Preferences"/>
-		<menu_item_call label="Mi panel de control" name="Manage My Account">
+		<menu_item_call label="Panel de control..." name="Manage My Account">
 			<menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=es"/>
 		</menu_item_call>
-		<menu_item_call label="Comprar L$" name="Buy and Sell L$"/>
-		<menu_item_call label="Mi perfil" name="Profile"/>
-		<menu_item_call label="Mi apariencia" name="ChangeOutfit"/>
-		<menu_item_check label="Mi Inventario" name="Inventory"/>
-		<menu_item_check label="Mi Inventario" name="ShowSidetrayInventory"/>
-		<menu_item_check label="Mis gestos" name="Gestures"/>
-		<menu_item_check label="Mi voz" name="ShowVoice"/>
+		<menu_item_call label="Perfil..." name="Profile"/>
+		<menu_item_call label="Apariencia" name="ChangeOutfit"/>
+		<menu_item_check label="Inventario..." name="Inventory"/>
+		<menu_item_check label="Gestos..." name="Gestures"/>
+		<menu_item_check label="Voz..." name="ShowVoice"/>
 		<menu label="Movimiento" name="Movement">
 			<menu_item_call label="Sentarte" name="Sit Down Here"/>
 			<menu_item_check label="Volar" name="Fly"/>
 			<menu_item_check label="Correr siempre" name="Always Run"/>
 			<menu_item_call label="Parar mis animaciones" name="Stop Animating My Avatar"/>
 		</menu>
-		<menu label="Mi estado" name="Status">
+		<menu label="Estado" name="Status">
 			<menu_item_call label="Ausente" name="Set Away"/>
 			<menu_item_call label="Ocupado" name="Set Busy"/>
 		</menu>
 		<menu_item_call label="Solicitar estatus de Administrador" name="Request Admin Options"/>
 		<menu_item_call label="Dejar el estatus de Administrador" name="Leave Admin Options"/>
+		<menu_item_call label="Comprar L$" name="Buy and Sell L$"/>
+		<menu_item_call label="Preferencias..." name="Preferences"/>
+		<menu_item_call label="Barras de herramientas..." name="Toolbars"/>
+		<menu_item_call label="Ocultar todos los controles" name="Hide UI"/>
 		<menu_item_call label="Salir de [APP_NAME]" name="Quit"/>
 	</menu>
 	<menu label="Comunicarme" name="Communicate">
@@ -145,7 +146,6 @@
 	</menu>
 	<menu label="Ayuda" name="Help">
 		<menu_item_call label="Ayuda de [SECOND_LIFE]" name="Second Life Help"/>
-		<menu_item_check label="Permitir consejos" name="Enable Hints"/>
 		<menu_item_call label="Denunciar una infracción" name="Report Abuse"/>
 		<menu_item_call label="Informar de un fallo" name="Report Bug"/>
 		<menu_item_call label="Acerca de [APP_NAME]" name="About Second Life"/>
@@ -161,7 +161,7 @@
 		<menu label="Herramientas de rendimiento" name="Performance Tools">
 			<menu_item_call label="Medidor de lag" name="Lag Meter"/>
 			<menu_item_check label="Estadísticas" name="Statistics Bar"/>
-			<menu_item_check label="Mostrar cuánto cuesta renderizar el avatar" name="Avatar Rendering Cost"/>
+			<menu_item_check label="Mostrar el peso del dibujo de los avatares" name="Avatar Rendering Cost"/>
 		</menu>
 		<menu label="Realzado y Visibilidad" name="Highlighting and Visibility">
 			<menu_item_check label="Baliza con destellos" name="Cheesy Beacon"/>
@@ -271,6 +271,7 @@
 			<menu_item_check label="Actualizar el tipo" name="Update Type"/>
 			<menu_item_check label="Información sobre el nivel de detalle" name="LOD Info"/>
 			<menu_item_check label="Crear cola" name="Build Queue"/>
+			<menu_item_check label="Complejidad del renderizado" name="rendercomplexity"/>
 			<menu_item_check label="Esculpir" name="Sculpt"/>
 		</menu>
 		<menu label="Rendering" name="Rendering">
diff --git a/indra/newview/skins/default/xui/es/notifications.xml b/indra/newview/skins/default/xui/es/notifications.xml
index 4fb29b942748da52283c2ea5498f85d8b85d7b45..3fe0072a200c0220d946758a5bae4de369ff8294 100644
--- a/indra/newview/skins/default/xui/es/notifications.xml
+++ b/indra/newview/skins/default/xui/es/notifications.xml
@@ -1919,6 +1919,12 @@ Dado que estos objetos tienen scripts, moverlos a tu inventario puede provocar u
 		¿Estás seguro de que quieres salir?
 		<usetemplate ignoretext="Confirmar antes de salir" name="okcancelignore" notext="No salir" yestext="Salir"/>
 	</notification>
+	<notification name="ConfirmRestoreToybox">
+		¿Estás seguro de que quieres restaurar los botones y barras de herramientas predeterminados? 
+    
+Esta acción no se puede deshacer.
+		<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/>
+	</notification>
 	<notification name="DeleteItems">
 		[QUESTION]
 		<usetemplate ignoretext="Confirmar antes de eliminar elementos" name="okcancelignore" notext="Cancelar" yestext="OK"/>
@@ -2999,10 +3005,6 @@ Al ocultar el botón Hablar se desactiva la función de voz.
 			<button name="cancel" text="Cancelar"/>
 		</form>
 	</notification>
-	<notification label="" name="ModeChange">
-		Para cambiar de modo tienes que salir y reiniciar.
-		<usetemplate name="okcancelbuttons" notext="No salir" yestext="Salir"/>
-	</notification>
 	<notification label="" name="NoClassifieds">
 		La creación y edición de clasificados sólo está disponible en el modo Avanzado. ¿Quieres salir y cambiar de modo? El selector de modo se encuentra en la pantalla de inicio de sesión.
 		<usetemplate name="okcancelbuttons" notext="No salir" yestext="Salir"/>
@@ -3047,6 +3049,10 @@ Al ocultar el botón Hablar se desactiva la función de voz.
 		Las búsquedas solo están disponibles en el modo Avanzado. ¿Quieres cerrar sesión y cambiar de modo?
 		<usetemplate name="okcancelbuttons" notext="No salir" yestext="Salir"/>
 	</notification>
+	<notification label="" name="ConfirmHideUI">
+		Esta acción ocultará todos los botones y elementos de menú. Para restaurarlos, pulsa otra vez en [SHORTCUT].
+		<usetemplate ignoretext="Confirmar antes de ocultar la IU" name="okcancelignore" notext="Cancelar" yestext="OK"/>
+	</notification>
 	<global name="UnsupportedGLRequirements">
 		Parece que no tienes el hardware apropiado para [APP_NAME]. [APP_NAME] requiere una tarjeta gráfica OpenGL que admita texturas múltiples (&apos;multitexture support&apos;). Si la tienes, comprueba que tienes los últimos &apos;drivers&apos; para tu tarjeta gráfica, así como los últimos parches y &apos;service packs&apos; para tu sistema operativo.
 
diff --git a/indra/newview/skins/default/xui/es/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/es/panel_chiclet_bar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..eaaa5dbe78a36ad5f7e2ee1ac5b422a557d04f00
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_chiclet_bar.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="chiclet_bar">
+	<layout_stack name="toolbar_stack">
+		<layout_panel name="im_well_panel">
+			<chiclet_im_well name="im_well">
+				<button name="Unread IM messages" tool_tip="Conversaciones"/>
+			</chiclet_im_well>
+		</layout_panel>
+		<layout_panel name="notification_well_panel">
+			<chiclet_notification name="notification_well">
+				<button name="Unread" tool_tip="Notificaciones"/>
+			</chiclet_notification>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_me.xml b/indra/newview/skins/default/xui/es/panel_me.xml
index ed253904aa3f7157f95dcd2c89ef6a595f8183f7..850cd6ec7190d824cdda70c3a998bac220dd2338 100644
--- a/indra/newview/skins/default/xui/es/panel_me.xml
+++ b/indra/newview/skins/default/xui/es/panel_me.xml
@@ -1,7 +1,4 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Mi perfil" name="panel_me">
-	<tab_container name="tabs">
-		<panel label="MI PERFIL" name="panel_profile"/>
-		<panel label="MIS DESTACADOS" name="panel_picks"/>
-	</tab_container>
+	<panel label="MIS DESTACADOS" name="panel_picks"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/es/panel_navigation_bar.xml b/indra/newview/skins/default/xui/es/panel_navigation_bar.xml
index 293c9ef1d9491fc8b21ff5dc62bc6db7dd281f86..1b7f5d5a9f43e9bc4c9015b453f8fa8ba7ed6a39 100644
--- a/indra/newview/skins/default/xui/es/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/es/panel_navigation_bar.xml
@@ -1,18 +1,23 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="navigation_bar">
-	<panel name="navigation_panel">
-		<pull_button name="back_btn" tool_tip="Volver a la localización anterior"/>
-		<pull_button name="forward_btn" tool_tip="Ir una localización adelante"/>
-		<button name="home_btn" tool_tip="Teleportar a mi Base"/>
-		<location_input label="Localización" name="location_combo"/>
-		<search_combo_box label="Buscar" name="search_combo_box" tool_tip="Buscar">
-			<combo_editor label="Buscar en [SECOND_LIFE]" name="search_combo_editor"/>
-		</search_combo_box>
-	</panel>
-	<favorites_bar name="favorite" tool_tip="¡Accede rápidamente a tus lugares favoritos de Second Life arrastrando hitos hasta aquí!">
-		<label name="favorites_bar_label" tool_tip="¡Accede rápidamente a tus lugares favoritos de Second Life arrastrando hitos hasta aquí!">
-			Barra de Favoritos
-		</label>
-		<chevron_button name="&gt;&gt;" tool_tip="Ver más de Mis favoritos"/>
-	</favorites_bar>
+	<layout_stack name="nvp_stack">
+		<layout_panel name="navigation_layout_panel">
+			<panel name="navigation_panel">
+				<pull_button name="back_btn" tool_tip="Volver a lo localización anterior"/>
+				<pull_button name="forward_btn" tool_tip="Ir una localización adelante"/>
+				<button name="home_btn" tool_tip="Teleportar a mi Base"/>
+				<location_input label="Lugar" name="location_combo"/>
+			</panel>
+		</layout_panel>
+		<layout_panel name="favorites_layout_panel">
+			<favorites_bar name="favorite" tool_tip="¡Accede rápidamente a tus lugares favoritos de Second Life arrastrando hitos hasta aquí!">
+				<label name="favorites_bar_label" tool_tip="¡Accede rápidamente a tus lugares favoritos de Second Life arrastrando hitos hasta aquí!">
+					Barra de Favoritos
+				</label>
+				<more_button name="&gt;&gt;" tool_tip="Ver más de Mis favoritos">
+					Más ▼
+				</more_button>
+			</favorites_bar>
+		</layout_panel>
+	</layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/es/panel_nearby_chat.xml b/indra/newview/skins/default/xui/es/panel_nearby_chat.xml
new file mode 100644
index 0000000000000000000000000000000000000000..95ce14c9a7b9b9b8956e095334013bf6926c3e06
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_nearby_chat.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="nearby_chat">
+	<check_box label="Traducir chat (mediante Google)" name="translate_chat_checkbox"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_chat.xml b/indra/newview/skins/default/xui/es/panel_preferences_chat.xml
index a15c8deaf93028d0c69030da39a8f4ec64d78ed8..4625075aa5772e20df290b46d0c5e8176e12633b 100644
--- a/indra/newview/skins/default/xui/es/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/es/panel_preferences_chat.xml
@@ -51,7 +51,7 @@
 		<combo_box.item label="Русский (ruso)" name="Russian"/>
 		<combo_box.item label="Türkçe (turco)" name="Turkish"/>
 		<combo_box.item label="Українська (ucraniano)" name="Ukrainian"/>
-		<combo_box.item label="中文 (正體) (chino)" name="Chinese"/>
+		<combo_box.item label="中文 (正體) (Chino)" name="Chinese"/>
 		<combo_box.item label="日本語 (japonés)" name="Japanese"/>
 		<combo_box.item label="한국어 (coreano)" name="Korean"/>
 	</combo_box>
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_general.xml b/indra/newview/skins/default/xui/es/panel_preferences_general.xml
index c762e6b7fef6684bfe6d3d15f1494b85346a8779..4fc163f5b67e02c5bed29c213356842c7e0844e9 100644
--- a/indra/newview/skins/default/xui/es/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/es/panel_preferences_general.xml
@@ -13,7 +13,10 @@
 		<combo_box.item label="Italiano - Beta" name="Italian"/>
 		<combo_box.item label="Polski (Polaco) - Beta" name="Polish"/>
 		<combo_box.item label="Português (portugués) - Beta" name="Portugese"/>
+		<combo_box.item label="Русский (Ruso) - Beta" name="Russian"/>
+		<combo_box.item label="Türkçe (Turco) - Beta" name="Turkish"/>
 		<combo_box.item label="日本語 (Japonés) - Beta" name="(Japanese)"/>
+		<combo_box.item label="正體中文 (Chino tradicional) - Beta" name="Traditional Chinese"/>
 	</combo_box>
 	<text name="language_textbox2">
 		(requiere reiniciar)
@@ -48,7 +51,6 @@
 	<check_box label="Títulos de grupos" name="show_all_title_checkbox1" tool_tip="Mostrar títulos de grupos, como Jefe o Miembro"/>
 	<check_box label="Realzar amigos" name="show_friends" tool_tip="Realzar las etiquetas de los nombres de tus amigos"/>
 	<check_box label="Ver nombres mostrados" name="display_names_check" tool_tip="Comprobar para utilizar nombres mostrados en chat, MI, etiquetas de nombres, etc."/>
-	<check_box label="Permitir los consejos de la IU del visor" name="viewer_hints_check"/>
 	<text name="inworld_typing_rg_label">
 		Si pulsas las teclas de letras:
 	</text>
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_move.xml b/indra/newview/skins/default/xui/es/panel_preferences_move.xml
index d95e1673612d60c55037570fe35aa21325e2c154..b2ff6b61c2db25ce0b3830aeb4fa2473f5b4ff99 100644
--- a/indra/newview/skins/default/xui/es/panel_preferences_move.xml
+++ b/indra/newview/skins/default/xui/es/panel_preferences_move.xml
@@ -7,18 +7,33 @@
 	</text>
 	<check_box label="Construir/Editar" name="edit_camera_movement" tool_tip="Usar el posicionamiento automático de la cámara al entrar en o salir del modo de edición"/>
 	<check_box label="Apariencia" name="appearance_camera_movement" tool_tip="Usar el posicionamiento automático de la cámara mientras se está editando"/>
-	<check_box initial_value="verdadero" label="Barra lateral" name="appearance_sidebar_positioning" tool_tip="Usar el posicionamiento automático de la cámara para la barra lateral"/>
+	<text name="keyboard_lbl">
+		Teclado:
+	</text>
+	<check_box label="Las teclas del cursor siempre para moverme" name="arrow_keys_move_avatar_check"/>
+	<check_box label="Correr siempre: atajo de teclado" name="tap_tap_hold_to_run"/>
+	<text name="mouse_lbl">
+		Ratón:
+	</text>
 	<check_box label="Verme en vista subjetiva" name="first_person_avatar_visible"/>
 	<text name=" Mouse Sensitivity">
 		Sensibilidad del ratón en la Vista subjetiva:
 	</text>
 	<check_box label="Invertir" name="invert_mouse"/>
-	<check_box label="Las teclas del cursor siempre para moverme" name="arrow_keys_move_avatar_check"/>
-	<check_box label="Correr siempre: atajo de teclado" name="tap_tap_hold_to_run"/>
-	<check_box label="Haz doble clic para:" name="double_click_chkbox"/>
-	<radio_group name="double_click_action">
-		<radio_item label="Teleportarte" name="radio_teleport"/>
-		<radio_item label="Piloto automático" name="radio_autopilot"/>
-	</radio_group>
+	<text name="single_click_action_lbl">
+		Un clic en el terreno:
+	</text>
+	<combo_box name="single_click_action_combo">
+		<combo_box.item label="Ninguna acción" name="0"/>
+		<combo_box.item label="Ir al punto seleccionado" name="1"/>
+	</combo_box>
+	<text name="double_click_action_lbl">
+		Doble clic en el terreno:
+	</text>
+	<combo_box name="double_click_action_combo">
+		<combo_box.item label="Ninguna acción" name="0"/>
+		<combo_box.item label="Ir al punto seleccionado" name="1"/>
+		<combo_box.item label="Teleportarte al punto seleccionado" name="2"/>
+	</combo_box>
 	<button label="Otros dispositivos" name="joystick_setup_button"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/es/panel_status_bar.xml b/indra/newview/skins/default/xui/es/panel_status_bar.xml
index 0391258b755d9d19f0fe99cb35ca62627a6490c1..d43790c8c6fe4cef88e71aebff2c70c825ee82d6 100644
--- a/indra/newview/skins/default/xui/es/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/es/panel_status_bar.xml
@@ -17,12 +17,9 @@
 	</panel.string>
 	<panel name="balance_bg">
 		<text name="balance" tool_tip="Haz clic para actualizar tu saldo en L$" value="20 L$"/>
-		<button label="COMPRAR L$" name="buyL" tool_tip="Pulsa para comprar más L$"/>
+		<button label="Comprar L$" name="buyL" tool_tip="Pulsa para comprar más L$"/>
+		<button label="Comprar" name="goShop" tool_tip="Abrir el mercado de Second Life"/>
 	</panel>
-	<combo_box name="mode_combo" tool_tip="Selecciona el modo. Elige Básico para una exploración rápida y fácil y para chatear. Elige Avanzado para tener acceso a más funciones.">
-		<combo_box.item label="Modo Básico" name="Basic"/>
-		<combo_box.item label="Modo Avanzado" name="Advanced"/>
-	</combo_box>
 	<text name="TimeText" tool_tip="Hora actual (Pacífico)">
 		24:00 AM PST
 	</text>
diff --git a/indra/newview/skins/default/xui/es/sidepanel_inventory.xml b/indra/newview/skins/default/xui/es/sidepanel_inventory.xml
index aae9bfc11355b194f9f7a7ff7f919f44137cd259..79d0cb84e8990b374ccf379d9b6b78a1d1b03680 100644
--- a/indra/newview/skins/default/xui/es/sidepanel_inventory.xml
+++ b/indra/newview/skins/default/xui/es/sidepanel_inventory.xml
@@ -14,7 +14,7 @@
 							</string>
 							<button label="Objetos recibidos" name="inbox_btn"/>
 							<text name="inbox_fresh_new_count">
-								[NUM] Nuevos
+								[NUM] nuevos
 							</text>
 							<panel tool_tip="Drag and drop items to your inventory to manage and use them">
 								<text name="inbox_inventory_placeholder">
diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml
index cc044ba416b3863c4ff0de1456b85d06be08bc65..83747b85c0318e02e23f2c7225b10b805a6c493d 100644
--- a/indra/newview/skins/default/xui/es/strings.xml
+++ b/indra/newview/skins/default/xui/es/strings.xml
@@ -34,6 +34,9 @@
 	<string name="ProgressChangingResolution">
 		Cambiando la resolución...
 	</string>
+	<string name="Fullbright">
+		Brillo al máximo (antiguo)
+	</string>
 	<string name="LoginInProgress">
 		Iniciando la sesión. [APP_NAME] debe de aparecer congelado. Por favor, espere.
 	</string>
@@ -116,7 +119,7 @@
 		No se pudo verificar la firma del certificado devuelta por el servidor de la cuadrícula. Ponte en contacto con el administrador de la cuadrícula.
 	</string>
 	<string name="LoginFailedNoNetwork">
-		Error de red: no se ha podido conectar; por favor, revisa tu conexión a Internet.
+		Error de red: no se ha podido conectar; por favor, revisa tu conexión a internet.
 	</string>
 	<string name="LoginFailed">
 		Error en el inicio de sesión.
@@ -1255,6 +1258,9 @@ Intenta iniciar sesión de nuevo en unos instantes.
 	<string name="Marketplace Error Internal Import">
 		Error: Este objeto tiene un problema. Vuelve a intentarlo más tarde.
 	</string>
+	<string name="Open landmarks">
+		Abrir hitos
+	</string>
 	<string name="no_transfer" value="(no transferible)"/>
 	<string name="no_modify" value="(no modificable)"/>
 	<string name="no_copy" value="(no copiable)"/>
@@ -4158,8 +4164,8 @@ Denuncia de infracción
 	<string name="Female - Wow">
 		Mujer - Admiración
 	</string>
-	<string name="/bow1">
-		/reverencia1
+	<string name="/bow">
+		/reverencia
 	</string>
 	<string name="/clap">
 		/aplaudir
@@ -4671,4 +4677,172 @@ Inténtalo incluyendo la ruta de acceso al editor entre comillas
 	<string name="ParticleHiding">
 		Ocultando las partículas
 	</string>
+	<string name="Command_AboutLand_Label">
+		Acerca del terreno
+	</string>
+	<string name="Command_Appearance_Label">
+		Apariencia
+	</string>
+	<string name="Command_Avatar_Label">
+		Avatar
+	</string>
+	<string name="Command_Build_Label">
+		Construir
+	</string>
+	<string name="Command_Chat_Label">
+		Chat
+	</string>
+	<string name="Command_Compass_Label">
+		Brújula
+	</string>
+	<string name="Command_Destinations_Label">
+		Destinos
+	</string>
+	<string name="Command_Gestures_Label">
+		Gestos
+	</string>
+	<string name="Command_HowTo_Label">
+		Cómo
+	</string>
+	<string name="Command_Inventory_Label">
+		Inventario
+	</string>
+	<string name="Command_Map_Label">
+		Mapa
+	</string>
+	<string name="Command_Marketplace_Label">
+		Mercado
+	</string>
+	<string name="Command_MiniMap_Label">
+		Minimapa
+	</string>
+	<string name="Command_Move_Label">
+		Moverme
+	</string>
+	<string name="Command_People_Label">
+		Gente
+	</string>
+	<string name="Command_Picks_Label">
+		Destacados
+	</string>
+	<string name="Command_Places_Label">
+		Lugares
+	</string>
+	<string name="Command_Preferences_Label">
+		Preferencias
+	</string>
+	<string name="Command_Profile_Label">
+		Perfil
+	</string>
+	<string name="Command_Search_Label">
+		Buscar
+	</string>
+	<string name="Command_Snapshot_Label">
+		Foto
+	</string>
+	<string name="Command_Speak_Label">
+		Hablar
+	</string>
+	<string name="Command_View_Label">
+		Visión
+	</string>
+	<string name="Command_Voice_Label">
+		Chat de voz
+	</string>
+	<string name="Command_AboutLand_Tooltip">
+		Información sobre el terreno que vas a visitar
+	</string>
+	<string name="Command_Appearance_Tooltip">
+		Cambiar tu avatar
+	</string>
+	<string name="Command_Avatar_Tooltip">
+		Elegir un avatar completo
+	</string>
+	<string name="Command_Build_Tooltip">
+		Construir objetos y modificar la forma del terreno
+	</string>
+	<string name="Command_Chat_Tooltip">
+		Habla por chat de texto con las personas próximas
+	</string>
+	<string name="Command_Compass_Tooltip">
+		Brújula
+	</string>
+	<string name="Command_Destinations_Tooltip">
+		Destinos de interés
+	</string>
+	<string name="Command_Gestures_Tooltip">
+		Gestos para tu avatar
+	</string>
+	<string name="Command_HowTo_Tooltip">
+		Cómo hacer las tareas habituales
+	</string>
+	<string name="Command_Inventory_Tooltip">
+		Ver y usar tus pertenencias
+	</string>
+	<string name="Command_Map_Tooltip">
+		Mapa del mundo
+	</string>
+	<string name="Command_Marketplace_Tooltip">
+		Ir de compras
+	</string>
+	<string name="Command_MiniMap_Tooltip">
+		Mostrar la gente que está cerca
+	</string>
+	<string name="Command_Move_Tooltip">
+		Desplazando el avatar
+	</string>
+	<string name="Command_People_Tooltip">
+		Amigos, grupos y personas próximas
+	</string>
+	<string name="Command_Picks_Tooltip">
+		Lugares que se mostrarán como favoritos en tu perfil
+	</string>
+	<string name="Command_Places_Tooltip">
+		Lugares que has guardado
+	</string>
+	<string name="Command_Preferences_Tooltip">
+		Preferencias
+	</string>
+	<string name="Command_Profile_Tooltip">
+		Consulta o edita tu perfil
+	</string>
+	<string name="Command_Search_Tooltip">
+		Buscar lugares, eventos y personas
+	</string>
+	<string name="Command_Snapshot_Tooltip">
+		Tomar una fotografía
+	</string>
+	<string name="Command_Speak_Tooltip">
+		Utiliza el micrófono para hablar con las personas próximas
+	</string>
+	<string name="Command_View_Tooltip">
+		Cambiando el ángulo de la cámara
+	</string>
+	<string name="Command_Voice_Tooltip">
+		Personas próximas con capacidad de voz
+	</string>
+	<string name="Retain%">
+		% retención
+	</string>
+	<string name="Detail">
+		Detalle
+	</string>
+	<string name="Better Detail">
+		Mejor detalle
+	</string>
+	<string name="Surface">
+		Superficie
+	</string>
+	<string name="Solid">
+		Sólido
+	</string>
+	<string name="Wrap">
+		Envoltura
+	</string>
+	<string name="Preview">
+		Vista previa
+	</string>
+	<string name="Normal">
+		Normal
+	</string>
 </strings>
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_general.xml b/indra/newview/skins/default/xui/fr/panel_preferences_general.xml
index dd4c1c9f63fbcc285be46c097231230c40a1c22d..66b84af3aa57168c81a6468b94cbde0052c2423e 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_general.xml
@@ -16,7 +16,7 @@
 		<combo_box.item label="Русский (Russe) - Bêta" name="Russian"/>
 		<combo_box.item label="Türkçe (Turc) - Bêta" name="Turkish"/>
 		<combo_box.item label="日本語 (Japonais) - Bêta" name="(Japanese)"/>
-		<combo_box.item label="正體 (Chinois traditionnel) - Bêta" name="Traditional Chinese"/>
+		<combo_box.item label="正體中文 (Chinois traditionnel) - Bêta" name="Traditional Chinese"/>
 	</combo_box>
 	<text name="language_textbox2">
 		(redémarrage requis)
diff --git a/indra/newview/skins/default/xui/it/panel_preferences_general.xml b/indra/newview/skins/default/xui/it/panel_preferences_general.xml
index 4f521054049338e961eb191e861d5e7cad896148..90a833471ceb4a019974a91346eae64ffce6f8ff 100644
--- a/indra/newview/skins/default/xui/it/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/it/panel_preferences_general.xml
@@ -16,7 +16,7 @@
 		<combo_box.item label="Русский (Russo) - Beta" name="Russian"/>
 		<combo_box.item label="Türkçe (Turco) - Beta" name="Turkish"/>
 		<combo_box.item label="日本語 (Giapponese) - Beta" name="(Japanese)"/>
-		<combo_box.item label="正體 (Cinese tradizionale) - Beta" name="Traditional Chinese"/>
+		<combo_box.item label="正體中文 (Cinese tradizionale) - Beta" name="Traditional Chinese"/>
 	</combo_box>
 	<text name="language_textbox2">
 		(Richiede il riavvio)
diff --git a/indra/newview/skins/default/xui/ja/floater_about.xml b/indra/newview/skins/default/xui/ja/floater_about.xml
index 47bb2455cf825d63730d434de493b1c47038ba38..c628ade43e75c02b7c91c146fac03ccb36fbc0af 100644
--- a/indra/newview/skins/default/xui/ja/floater_about.xml
+++ b/indra/newview/skins/default/xui/ja/floater_about.xml
@@ -10,7 +10,7 @@
 	<floater.string name="AboutPosition">
 		あなたの現在地は、[POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] の [REGION] です。位置は &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt; です。([HOSTIP])
 [SERVER_VERSION]
-[[SERVER_RELEASE_NOTES_URL] [リリースノート]]
+[SERVER_RELEASE_NOTES_URL]
 	</floater.string>
 	<floater.string name="AboutSystem">
 		CPU: [CPU]
@@ -37,6 +37,9 @@ Qt Webkit バージョン: [QT_WEBKIT_VERSION]
 	<floater.string name="AboutTraffic">
 		パケットロス: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%)
 	</floater.string>
+	<floater.string name="ErrorFetchingServerReleaseNotesURL">
+		サーバーのリリースノートの URL を取得中にエラーが発生しました。
+	</floater.string>
 	<tab_container name="about_tab">
 		<panel label="情報" name="support_panel">
 			<button label="クリップボードにコピー" name="copy_btn"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_about_land.xml b/indra/newview/skins/default/xui/ja/floater_about_land.xml
index e870a8ace931b22b1c5719c7f928d5e3c63f21c6..3c88c902f88c8f8757ffdea00c8197733d0c88af 100644
--- a/indra/newview/skins/default/xui/ja/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/ja/floater_about_land.xml
@@ -214,19 +214,19 @@
 				オブジェクトボーナス: [BONUS]
 			</text>
 			<text name="Simulator primitive usage:">
-				プリム使用状況:
+				リージョン(地域)の許容数:
 			</text>
 			<text name="objects_available">
 				[MAX] の内 [COUNT] ([AVAILABLE] 利用可能)
 			</text>
 			<text name="Primitives parcel supports:">
-				区画でサポートされるプリム数:
+				区画の許容数:
 			</text>
 			<text name="object_contrib_text">
 				[COUNT]
 			</text>
 			<text name="Primitives on parcel:">
-				区画上のプリム数:
+				区画の負荷:
 			</text>
 			<text name="total_objects_text">
 				[COUNT]
diff --git a/indra/newview/skins/default/xui/ja/floater_avatar.xml b/indra/newview/skins/default/xui/ja/floater_avatar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c4455282d2baddb28cef0a27a7c117ff695b522c
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_avatar.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Avatar" title="アバターピッカー"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_camera.xml b/indra/newview/skins/default/xui/ja/floater_camera.xml
index 71a20c8e187f183eebce5ae1ef4783e67a9ef8b3..5d3a048975617f76cd2c4db3dcd165e078c3965f 100644
--- a/indra/newview/skins/default/xui/ja/floater_camera.xml
+++ b/indra/newview/skins/default/xui/ja/floater_camera.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="camera_floater">
+<floater name="camera_floater" title="表示">
 	<floater.string name="rotate_tooltip">
 		フォーカスを中心にカメラを回転
 	</floater.string>
diff --git a/indra/newview/skins/default/xui/ja/floater_chat_bar.xml b/indra/newview/skins/default/xui/ja/floater_chat_bar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9735afb101edd670be8fe9047e747378a4996589
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_chat_bar.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="chat_bar" title="近くのチャット">
+	<panel>
+		<line_editor label="ここをクリックしてチャットを開始します。" name="chat_box" tool_tip="Enter キーを押して話し、Ctrl + Enter キーで叫びます。"/>
+		<button name="show_nearby_chat" tool_tip="近くのチャットログを表示・非表示"/>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_destinations.xml b/indra/newview/skins/default/xui/ja/floater_destinations.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b7f6ad4d4e3687ac3be57e42527831e55221f501
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_destinations.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Destinations" title="行き先"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_fast_timers.xml b/indra/newview/skins/default/xui/ja/floater_fast_timers.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5f538ecdb0ed2934c01e96f36e2ff1c337d7110e
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_fast_timers.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="fast_timers">
+	<string name="pause">
+		一時停止
+	</string>
+	<string name="run">
+		èµ°ã‚‹
+	</string>
+	<button label="一時停止" name="pause_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_how_to.xml b/indra/newview/skins/default/xui/ja/floater_how_to.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4cebe27226c2c7d3a60532a8dbb55423311e4c81
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_how_to.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_how_to" title="ハウツー"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_map.xml b/indra/newview/skins/default/xui/ja/floater_map.xml
index ff5a25fd7b1811ac1ebe8be92917202fdfb9cd47..11222034465da586228bc8ada3aebe565804913c 100644
--- a/indra/newview/skins/default/xui/ja/floater_map.xml
+++ b/indra/newview/skins/default/xui/ja/floater_map.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Map" title="">
+<floater name="Map" title="ミニマップ">
 	<floater.string name="ToolTipMsg">
 		[REGION](ダブルクリックで地図を開く。Shift‐ドラッグで水平・垂直移動)
 	</floater.string>
diff --git a/indra/newview/skins/default/xui/ja/floater_model_preview.xml b/indra/newview/skins/default/xui/ja/floater_model_preview.xml
index 07667bb697e0f12adc7a6a5737f80437b98e5a57..157c68a5705bd9e282ea57c7a2ea75773f08b3d4 100644
--- a/indra/newview/skins/default/xui/ja/floater_model_preview.xml
+++ b/indra/newview/skins/default/xui/ja/floater_model_preview.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Model Preview" title="モデルをアップロード">
-	<string name="status_idle">
-		待機状態
-	</string>
+<floater name="Model Preview" title="モデルウィザード">
+	<string name="status_idle"/>
 	<string name="status_parse_error">
-		Dae に問題が見つかりました - 詳細についてはログをご参照ください。
+		エラー:Dae に問題が見つかりました - 詳細についてはログをご参照ください。
 	</string>
 	<string name="status_reading_file">
 		ローディング...
@@ -51,6 +49,9 @@
 	<string name="mesh_status_missing_lod">
 		必要な描画詳細度が見つかりません。
 	</string>
+	<string name="mesh_status_invalid_material_list">
+		LOD 付きの材料は参考モデルのサブセットではありません。
+	</string>
 	<string name="layer_all">
 		全て
 	</string>
@@ -63,188 +64,211 @@
 	<string name="tbd">
 		未定
 	</string>
-	<text name="name_label">
-		名前:
-	</text>
-	<text name="lod_label">
-		プレビュー:
-	</text>
-	<combo_box name="preview_lod_combo" tool_tip="プレビュー表示のLOD設定">
-		<combo_item name="high">
-			描画詳細度:高
-		</combo_item>
-		<combo_item name="medium">
-			描画詳細度:中
-		</combo_item>
-		<combo_item name="low">
-			描画詳細度:低
-		</combo_item>
-		<combo_item name="lowest">
-			描画詳細度:最低
-		</combo_item>
-	</combo_box>
-	<text name="warning_title">
-		警告:
-	</text>
-	<text name="warning_message">
-		このモデルを Second Life サーバーにアップロードすることはできません。メッシュモデルのアップロード手順については [[VURL] こちらを参照してください]。
-	</text>
-	<text name="weights_text">
-		ダウンロード:
-物理演算:
-サーバー負荷:
-
-プリム換算:
-	</text>
-	<text name="weights">
-		[ST]
-[PH]
-[SIM]
-
-[EQ]
-	</text>
-	<tab_container name="import_tab">
-		<panel label="描画詳細度" name="lod_panel">
-			<text name="lod_table_header">
-				描画詳細度を選択:
-			</text>
-			<text name="high_label" value="高"/>
-			<text name="high_triangles" value="0"/>
-			<text name="high_vertices" value="0"/>
-			<text name="medium_label" value="中"/>
-			<text name="medium_triangles" value="0"/>
-			<text name="medium_vertices" value="0"/>
-			<text name="low_label" value="低"/>
-			<text name="low_triangles" value="0"/>
-			<text name="low_vertices" value="0"/>
-			<text name="lowest_label" value="最低"/>
-			<text name="lowest_triangles" value="0"/>
-			<text name="lowest_vertices" value="0"/>
-			<text name="lod_table_footer">
-				描画詳細度: [DETAIL]
-			</text>
-			<radio_group name="lod_file_or_limit" value="lod_from_file">
-				<radio_item label="ファイルからロード" name="lod_from_file"/>
-				<radio_item label="自動作成" name="lod_auto_generate"/>
-				<radio_item label="なし" name="lod_none"/>
-			</radio_group>
-			<button label="参照" name="lod_browse"/>
-			<combo_box name="lod_mode">
-				<combo_item name="triangle_limit">
-					三角形の限度数
-				</combo_item>
-				<combo_item name="error_threshold">
-					エラーしきい値
-				</combo_item>
-			</combo_box>
-			<text name="build_operator_text">
-				制作演算子:
+	<panel name="left_panel">
+		<panel name="model_name_representation_panel">
+			<text name="name_label">
+				モデル名:
 			</text>
-			<text name="queue_mode_text">
-				キューモード:
+			<text name="model_category_label">
+				このモデルは...
 			</text>
-			<combo_box name="build_operator">
-				<combo_item name="edge_collapse">
-					稜の完全複合
-				</combo_item>
-				<combo_item name="half_edge_collapse">
-					稜の半複合
-				</combo_item>
-			</combo_box>
-			<combo_box name="queue_mode">
-				<combo_item name="greedy">
-					グリーディ
-				</combo_item>
-				<combo_item name="lazy">
-					レイジー
-				</combo_item>
-				<combo_item name="independent">
-					インディペンデント
-				</combo_item>
+			<combo_box name="model_category_combo">
+				<combo_item label="1つを選択..." name="Choose one"/>
+				<combo_item label="アバターの形" name="Avatar shape"/>
+				<combo_item label="アバターのアタッチメント" name="Avatar attachment"/>
+				<combo_item label="動くオブジェクト(車、動物)" name="Moving object (vehicle, animal)"/>
+				<combo_item label="制作用コンポーネント" name="Building Component"/>
+				<combo_item label="大型、不動、等" name="Large, non moving etc"/>
+				<combo_item label="やや小型、不動、等" name="Smaller, non-moving etc"/>
+				<combo_item label="いずれにも該当しない" name="Not really any of these"/>
 			</combo_box>
-			<text name="border_mode_text">
-				境界線モード:
-			</text>
-			<text name="share_tolderance_text">
-				共有誤差:
-			</text>
-			<combo_box name="border_mode">
-				<combo_item name="border_unlock">
-					ロック解除
-				</combo_item>
-				<combo_item name="border_lock">
-					ロック
-				</combo_item>
-			</combo_box>
-			<text name="crease_label">
-				折れ角度:
-			</text>
-			<spinner name="crease_angle" value="75"/>
 		</panel>
-		<panel label="物理効果" name="physics_panel">
-			<panel name="physics geometry">
-				<radio_group name="physics_load_radio" value="physics_load_from_file">
-					<radio_item label="ファイル:" name="physics_load_from_file"/>
-					<radio_item label="次の描画詳細度を使用:" name="physics_use_lod"/>
-				</radio_group>
-				<combo_box name="physics_lod_combo" tool_tip="実像に適用するLOD">
-					<combo_item name="physics_lowest">
-						最低
-					</combo_item>
-					<combo_item name="physics_low">
-						低
-					</combo_item>
-					<combo_item name="physics_medium">
-						中
-					</combo_item>
-					<combo_item name="physics_high">
-						高
-					</combo_item>
-				</combo_box>
-				<button label="参照" name="physics_browse"/>
+		<tab_container name="import_tab">
+			<panel label="描画詳細度" name="lod_panel" title="描画詳細度">
+				<text initial_value="データ源" name="source" value="データ源"/>
+				<text initial_value="三角形" name="triangles" value="三角形"/>
+				<text initial_value="頂点" name="vertices" value="頂点"/>
+				<text initial_value="高" name="high_label" value="高"/>
+				<button label="参照" name="lod_browse_high"/>
+				<text initial_value="0" name="high_triangles" value="0"/>
+				<text initial_value="0" name="high_vertices" value="0"/>
+				<text initial_value="中" name="medium_label" value="中"/>
+				<button label="参照" name="lod_browse_medium"/>
+				<text initial_value="0" name="medium_triangles" value="0"/>
+				<text initial_value="0" name="medium_vertices" value="0"/>
+				<text initial_value="低" name="low_label" value="低"/>
+				<button label="参照" name="lod_browse_low"/>
+				<text initial_value="0" name="low_triangles" value="0"/>
+				<text initial_value="0" name="low_vertices" value="0"/>
+				<text initial_value="最低" name="lowest_label" value="最低"/>
+				<button label="参照" name="lod_browse_lowest"/>
+				<text initial_value="0" name="lowest_triangles" value="0"/>
+				<text initial_value="0" name="lowest_vertices" value="0"/>
+				<check_box label="ノーマルの作成" name="gen_normals"/>
+				<text initial_value="折れ角度:" name="crease_label" value="折れ角度:"/>
+				<spinner name="crease_angle" value="75"/>
 			</panel>
-			<panel name="physics analysis">
-				<slider label="滑らかさ:" name="Smooth"/>
-				<check_box label="穴を閉じる(スロー)" name="Close Holes (Slow)"/>
-				<button label="分析" name="Decompose"/>
-				<button label="取り消し" name="decompose_cancel"/>
+			<panel label="物理効果" name="physics_panel">
+				<panel name="physics geometry">
+					<text name="first_step_name">
+						手順1:描画詳細度
+					</text>
+					<combo_box name="physics_lod_combo" tool_tip="実像に適用するLOD">
+						<combo_item name="choose_one">
+							1つを選択...
+						</combo_item>
+						<combo_item name="physics_high">
+							高
+						</combo_item>
+						<combo_item name="physics_medium">
+							中
+						</combo_item>
+						<combo_item name="physics_low">
+							低
+						</combo_item>
+						<combo_item name="physics_lowest">
+							最低
+						</combo_item>
+						<combo_item name="load_from_file">
+							ファイルから
+						</combo_item>
+					</combo_box>
+					<button label="参照" name="physics_browse"/>
+				</panel>
+				<panel name="physics analysis">
+					<text name="method_label">
+						手順2:分析
+					</text>
+					<text name="analysis_method_label">
+						方法:
+					</text>
+					<text name="quality_label">
+						品質:
+					</text>
+					<text name="smooth_method_label">
+						滑らかさ:
+					</text>
+					<check_box label="穴を閉じる" name="Close Holes (Slow)"/>
+					<button label="分析" name="Decompose"/>
+					<button label="取り消し" name="decompose_cancel"/>
+				</panel>
+				<panel name="physics simplification">
+					<text name="second_step_label">
+						手順3:単純化
+					</text>
+					<text name="simp_method_header">
+						方法:
+					</text>
+					<text name="pass_method_header">
+						パス:
+					</text>
+					<text name="Detail Scale label">
+						詳細度:
+					</text>
+					<text name="Retain%_label">
+						維持率:
+					</text>
+					<combo_box name="Combine Quality" value="1"/>
+					<button label="単純化" name="Simplify"/>
+					<button label="取り消し" name="simplify_cancel"/>
+				</panel>
+				<panel name="physics info">
+					<text name="results_text">
+						結果:
+					</text>
+					<text name="physics_triangles">
+						三角形:[TRIANGLES],
+					</text>
+					<text name="physics_points">
+						頂点:[POINTS],
+					</text>
+					<text name="physics_hulls">
+						外殻構造:[HULLS]
+					</text>
+				</panel>
 			</panel>
-			<panel name="physics simplification">
-				<slider label="パス:" name="Combine Quality"/>
-				<slider label="詳細度:" name="Detail Scale"/>
-				<slider label="維持率:" name="Retain%"/>
-				<button label="単純化" name="Simplify"/>
-				<button label="取り消し" name="simplify_cancel"/>
-			</panel>
-			<panel name="physics info">
-				<slider label="プレビュースプレッド:" name="physics_explode"/>
-				<text name="physics_triangles">
-					三角形: [TRIANGLES]
+			<panel label="アップロードのオプション" name="modifiers_panel">
+				<text name="scale_label">
+					スケール(1=増減なし):
+				</text>
+				<spinner name="import_scale" value="1.0"/>
+				<text name="dimensions_label">
+					サイズ:
 				</text>
-				<text name="physics_points">
-					頂点: [POINTS]
+				<text name="import_dimensions">
+					[X] X [Y] X [Z]
 				</text>
-				<text name="physics_hulls">
-					外殻構造: [HULLS]
+				<check_box label="テクスチャを含む" name="upload_textures"/>
+				<text name="include_label">
+					アバターモデル専用:
 				</text>
+				<check_box label="スキンの重さを含む" name="upload_skin"/>
+				<check_box label="ジョイントポジションを含む" name="upload_joints"/>
+				<text name="pelvis_offset_label">
+					Z オフセット(アバターを上下調整):
+				</text>
+				<spinner name="pelvis_offset" value="0.0"/>
 			</panel>
-		</panel>
-		<panel label="修飾子" name="modifiers_panel">
-			<spinner name="import_scale" value="1.0"/>
-			<text name="import_dimensions">
-				[X] x [Y] x [Z] m
+		</tab_container>
+		<panel name="weights_and_warning_panel">
+			<button label="ウェイトと料金の計算" name="calculate_btn" tool_tip="ウェイトと料金の計算"/>
+			<button label="取り消し" name="cancel_btn"/>
+			<button label="アップロード" name="ok_btn" tool_tip="シミュレーターにアップロード"/>
+			<button label="設定をクリアしてフォームをリセット" name="reset_btn"/>
+			<text name="upload_fee">
+				アップロード料金:L$ [FEE]
+			</text>
+			<text name="prim_weight">
+				土地の負荷:[EQ]
+			</text>
+			<text name="download_weight">
+				ダウンロード:[ST]
+			</text>
+			<text name="physics_weight">
+				物理演算:[PH]
+			</text>
+			<text name="server_weight">
+				サーバー負荷:[SIM]
+			</text>
+			<text name="warning_title">
+				ご注意:
+			</text>
+			<text name="warning_message">
+				メッシュモデルをアップロードする権利がありません。権利の取得方法については [[VURL]] こちらを参照してください。
+			</text>
+			<text name="status">
+				[STATUS]
 			</text>
-			<check_box label="テクスチャ" name="upload_textures"/>
-			<check_box label="スキンの重さ" name="upload_skin"/>
-			<check_box label="ジョイントポジション" name="upload_joints"/>
-			<spinner name="pelvis_offset" value="0.0"/>
 		</panel>
-	</tab_container>
-	<text name="upload_fee">
-		アップロード料金:L$ [FEE]
+	</panel>
+	<text name="lod_label">
+		プレビュー:
 	</text>
-	<button label="デフォルトに設定" name="reset_btn" tool_tip="デフォルトに設定"/>
-	<button label="ウェイトと料金の計算" name="calculate_btn" tool_tip="ウェイトと料金の計算"/>
-	<button label="アップロード" name="ok_btn" tool_tip="シミュレーターにアップロード"/>
-	<button label="取り消し" name="cancel_btn"/>
+	<panel name="right_panel">
+		<combo_box name="preview_lod_combo" tool_tip="プレビュー表示の LOD 設定">
+			<combo_item name="high">
+				高
+			</combo_item>
+			<combo_item name="medium">
+				中
+			</combo_item>
+			<combo_item name="low">
+				低
+			</combo_item>
+			<combo_item name="lowest">
+				最低
+			</combo_item>
+		</combo_box>
+		<text name="label_display">
+			ディスプレイ...
+		</text>
+		<check_box label="稜" name="show_edges"/>
+		<check_box label="物理効果" name="show_physics"/>
+		<check_box label="テクスチャ" name="show_textures"/>
+		<check_box label="スキンの重さ" name="show_skin_weight"/>
+		<check_box label="ジョイント" name="show_joint_positions"/>
+		<text name="physics_explode_label">
+			プレビュースプレッド:
+		</text>
+	</panel>
 </floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_model_wizard.xml b/indra/newview/skins/default/xui/ja/floater_model_wizard.xml
index 2f336fcbdee32d475f7ec7fe39ff4cf0d88c56e3..915b37557f89a3bb2190d41b2bdbc278d8f68b9c 100644
--- a/indra/newview/skins/default/xui/ja/floater_model_wizard.xml
+++ b/indra/newview/skins/default/xui/ja/floater_model_wizard.xml
@@ -6,26 +6,20 @@
 	<button label="2. 最適化" name="optimize_btn"/>
 	<button label="1. ファイルを選択" name="choose_file_btn"/>
 	<panel name="choose_file_panel">
-		<panel name="choose_file_header_panel">
-			<text name="choose_file_header_text">
+		<panel name="header_panel">
+			<text name="header_text">
 				モデルファイルを選択
 			</text>
 		</panel>
-		<panel name="choose_file_content_panel">
+		<panel name="content">
 			<text name="advanced_users_text">
 				上級ユーザーの場合:3D コンテンツの制作ツールを使い慣れた方は、高度なアップローダーもお試しください。
 			</text>
 			<button label="アドバンスモードに切り替える" name="switch_to_advanced"/>
-			<text name="choose_model_file_label">
+			<text name="Cache location">
 				アップロードするモデルファイルの選択
 			</text>
 			<button label="参照" label_selected="参照" name="browse"/>
-			<text name="support_collada_text">
-				Second Life は COLLADA (.dae) ファイルをサポートします。
-			</text>
-			<text name="dimensions_label">
-				サイズ(メートル):
-			</text>
 			<text name="dimensions">
 				X         Y         Z
 			</text>
@@ -38,18 +32,15 @@
 		</panel>
 	</panel>
 	<panel name="optimize_panel">
-		<panel name="optimize_header_panel">
-			<text name="optimize_header_text">
+		<panel name="header_panel">
+			<text name="header_text">
 				モデルを最適化
 			</text>
 		</panel>
-		<text name="optimize_hint">
+		<text name="description">
 			パフォーマンスを重視してモデルを最適化しました。必要に応じて調整してください。
 		</text>
-		<panel name="optimize_content_panel">
-			<text name="generating_lod_label">
-				次の描画詳細度を作成
-			</text>
+		<panel name="content">
 			<text name="high_detail_text">
 				次の描画詳細度を作成:高
 			</text>
@@ -64,123 +55,64 @@
 			</text>
 		</panel>
 		<panel name="content2">
-			<text name="optimize_performance_text">
-				パフォーマンス
-			</text>
-			<text name="optimize_faster_rendering_text">
-				レンダリング速度の向上
-詳細度の低下
-プリム換算ウェイトの軽減
-			</text>
-			<text name="optimize_accuracy_text">
-				正確さ
-			</text>
-			<text name="optimize_slower_rendering_text">
-				レンダリング速度の低下
-詳細化
-プリム換算ウェイトの増加
-			</text>
-			<text name="accuracy_slider_mark1">
-				&apos;
-			</text>
-			<text name="accuracy_slider_mark2">
-				&apos;
-			</text>
-			<text name="accuracy_slider_mark3">
-				&apos;
-			</text>
 			<button label="ジオメトリを再計算" name="recalculate_geometry_btn"/>
-			<text name="geometry_preview_label">
+			<text name="lod_label">
 				ジオメトリのプレビュー
 			</text>
 			<combo_box name="preview_lod_combo" tool_tip="プレビュー表示の LOD 設定">
-				<combo_item name="preview_lod_high">
+				<combo_item name="high">
 					高い詳細度
 				</combo_item>
-				<combo_item name="preview_lod_medium">
+				<combo_item name="medium">
 					中の詳細度
 				</combo_item>
-				<combo_item name="preview_lod_low">
+				<combo_item name="low">
 					低い詳細度
 				</combo_item>
-				<combo_item name="preview_lod_lowest">
+				<combo_item name="lowest">
 					最低の詳細度
 				</combo_item>
 			</combo_box>
 		</panel>
 	</panel>
 	<panel name="physics_panel">
-		<panel name="physics_header_panel">
-			<text name="physics_header_text">
+		<panel name="header_panel">
+			<text name="header_text">
 				物理作用の調整
 			</text>
 		</panel>
-		<text name="physics_hint">
+		<text name="description">
 			モデルの外殻構造のシェイプは弊社が作成します。モデルの目的に応じてシェイプの詳細度を調整してください。
 		</text>
-		<panel name="physics_content_panel">
-			<text name="physics_performance_text">
-				パフォーマンス
-			</text>
-			<text name="physics_faster_rendering_text">
-				レンダリング速度の向上
-詳細度の低下
-プリム換算ウェイトの軽減
-			</text>
-			<text name="physics_accuracy_text">
-				正確
-			</text>
-			<text name="physics_slower_dendering_text">
-				レンダリング速度の低下
-詳細化
-プリム換算ウェイトの増加
-			</text>
-			<text name="physics_example_1">
-				例:
-動くオブジェクト
-飛行オブジェクト
-車
-			</text>
-			<text name="physics_example_2">
-				例:
-小さな静止オブジェクト
-比較的詳細度の低いオブジェクト
-シンプルな家具
-			</text>
-			<text name="physics_example_3">
-				例:
-静止オブジェクト
-詳細なオブジェクト
-建物
-			</text>
+		<panel name="content">
 			<button label="物理演算ウェイトを再計算" name="recalculate_physics_btn"/>
 			<button label="再計算中..." name="recalculating_physics_btn"/>
-			<text name="physics_preview_label">
+			<text name="lod_label">
 				物理作用のプレビュー
 			</text>
 			<combo_box name="preview_lod_combo2" tool_tip="プレビュー表示の LOD 設定">
-				<combo_item name="preview_lod2_high">
+				<combo_item name="high">
 					高い詳細度
 				</combo_item>
-				<combo_item name="preview_lod2_medium">
+				<combo_item name="medium">
 					中の詳細度
 				</combo_item>
-				<combo_item name="preview_lod2_low">
+				<combo_item name="low">
 					低い詳細度
 				</combo_item>
-				<combo_item name="preview_lod2_lowest">
+				<combo_item name="lowest">
 					最低の詳細度
 				</combo_item>
 			</combo_box>
 		</panel>
 	</panel>
 	<panel name="review_panel">
-		<panel name="review_header_panel">
-			<text name="review_header_text">
+		<panel name="header_panel">
+			<text name="header_text">
 				確認
 			</text>
 		</panel>
-		<panel name="review_content_panel">
+		<panel name="content">
 			<text name="review_prim_equiv">
 				区画/リージョンへの負荷:[EQUIV] プリム換算値
 			</text>
@@ -193,8 +125,8 @@
 		</panel>
 	</panel>
 	<panel name="upload_panel">
-		<panel name="upload_header_panel">
-			<text name="upload_header_text">
+		<panel name="header_panel">
+			<text name="header_text">
 				アップロード完了
 			</text>
 		</panel>
diff --git a/indra/newview/skins/default/xui/ja/floater_moveview.xml b/indra/newview/skins/default/xui/ja/floater_moveview.xml
index 57ab32f486c433da80291397493c6621757db122..88c1905b8a763adcb9b50c8884a0c32e41884cad 100644
--- a/indra/newview/skins/default/xui/ja/floater_moveview.xml
+++ b/indra/newview/skins/default/xui/ja/floater_moveview.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="move_floater">
+<floater name="move_floater" title="移動">
 	<string name="walk_forward_tooltip">
 		前に進む(上矢印か W を押す)
 	</string>
@@ -58,14 +58,14 @@
 		飛ぶ
 	</string>
 	<panel name="panel_actions">
-		<button label="" label_selected="" name="move up btn" tool_tip="上に移動(E を押す)"/>
 		<button label="" label_selected="" name="turn left btn" tool_tip="左を向く(左矢印か A を押す)"/>
 		<joystick_slide name="move left btn" tool_tip="左に歩く(Shift + 左矢印か A を押す)"/>
-		<button label="" label_selected="" name="move down btn" tool_tip="下に移動(C を押す)"/>
 		<button label="" label_selected="" name="turn right btn" tool_tip="右を向く(右矢印か D を押す)"/>
 		<joystick_slide name="move right btn" tool_tip="右に歩く(Shift + 右矢印か D を押す)"/>
 		<joystick_turn name="forward btn" tool_tip="前に進む(上矢印か W を押す)"/>
 		<joystick_turn name="backward btn" tool_tip="後ろに歩く(下矢印か S を押す)"/>
+		<button label="" label_selected="" name="move up btn" tool_tip="上に移動(E を押す)"/>
+		<button label="" label_selected="" name="move down btn" tool_tip="下に移動(C を押す)"/>
 	</panel>
 	<panel name="panel_modes">
 		<button label="" name="mode_walk_btn" tool_tip="歩行モード"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_my_appearance.xml b/indra/newview/skins/default/xui/ja/floater_my_appearance.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c9a0ecefd71575c77f8a6da304b1c26c838ff2ac
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_my_appearance.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_my_appearance" title="容姿">
+	<panel label="容姿の編集" name="main_panel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_my_inventory.xml b/indra/newview/skins/default/xui/ja/floater_my_inventory.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c6a789b63b19e73f4b2d82e93271666c5a4cac98
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_my_inventory.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_my_inventory" title="持ち物"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_object_weights.xml b/indra/newview/skins/default/xui/ja/floater_object_weights.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3bd9b6b069e232660631e482e7a3f50a34a0e2b7
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_object_weights.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="object_weights" title="詳しい設定">
+	<floater.string name="nothing_selected" value="--"/>
+	<text name="selected_text" value="選択済"/>
+	<text name="objects" value="--"/>
+	<text name="objects_label" value="オブジェクト"/>
+	<text name="prims" value="--"/>
+	<text name="prims_label" value="プリム"/>
+	<text name="weights_of_selected_text" value="選択済み項目のウエイト"/>
+	<text name="download" value="--"/>
+	<text name="download_label" value="ダウンロード"/>
+	<text name="physics" value="--"/>
+	<text name="physics_label" value="物理効果"/>
+	<text name="server" value="--"/>
+	<text name="server_label" value="サーバー"/>
+	<text name="display" value="--"/>
+	<text name="display_label" value="ディスプレイ"/>
+	<text name="land_impacts_text" value="土地の負荷"/>
+	<text name="selected" value="--"/>
+	<text name="selected_label" value="選択済"/>
+	<text name="rezzed_on_land" value="--"/>
+	<text name="rezzed_on_land_label" value="土地に Rez 済み"/>
+	<text name="remaining_capacity" value="--"/>
+	<text name="remaining_capacity_label" value="残りの許容数"/>
+	<text name="total_capacity" value="--"/>
+	<text name="total_capacity_label" value="許容合計"/>
+	<text name="help_SLURL" value="[secondlife:///app/help/object_weights オブジェクトのウェイトとは?]"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_people.xml b/indra/newview/skins/default/xui/ja/floater_people.xml
new file mode 100644
index 0000000000000000000000000000000000000000..08bee881034d19b182f8b99a1e51bee518ffae53
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_people.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_people" title="人">
+	<panel_container name="main_panel">
+		<panel label="グループ情報" name="panel_group_info_sidetray"/>
+		<panel label="ブロックされた住人とオブジェクト" name="panel_block_list_sidetray"/>
+	</panel_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_picks.xml b/indra/newview/skins/default/xui/ja/floater_picks.xml
new file mode 100644
index 0000000000000000000000000000000000000000..359585eb86b8b27d9f6fd2c2287f093079296ac5
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_picks.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_picks" title="ピック"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_places.xml b/indra/newview/skins/default/xui/ja/floater_places.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0d167444dbf8ea59b86065b163a21a72e6adb02e
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_places.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_places" title="場所">
+	<panel label="場所" name="main_panel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_stats.xml b/indra/newview/skins/default/xui/ja/floater_stats.xml
index 97927776c72f0805867e3babd8ec9664ab524463..6a1f34cfd85a6c69250911ca6f79c3db50937042 100644
--- a/indra/newview/skins/default/xui/ja/floater_stats.xml
+++ b/indra/newview/skins/default/xui/ja/floater_stats.xml
@@ -10,8 +10,8 @@
 			</stat_view>
 			<stat_view label="アドバンス" name="advanced">
 				<stat_view label="描画" name="render">
-					<stat_bar label="KTris 描画" name="ktrisframe"/>
-					<stat_bar label="KTris 描画" name="ktrissec"/>
+					<stat_bar label="フレームごとの KTris 描画" name="ktrisframe"/>
+					<stat_bar label="秒ごとの KTris 描画" name="ktrissec"/>
 					<stat_bar label="オブジェクト合計" name="objs"/>
 					<stat_bar label="新規オブジェクト" name="newobjs"/>
 				</stat_view>
@@ -64,6 +64,14 @@
 					<stat_bar label="エージェント時間" name="simagentmsec"/>
 					<stat_bar label="イメージ時間" name="simimagesmsec"/>
 					<stat_bar label="スクリプト時間" name="simscriptmsec"/>
+					<stat_bar label="余暇" name="simsparemsec"/>
+					<stat_view label="時間の詳細(ms)" name="timedetails">
+						<stat_bar label="物理効果の単位" name="simsimphysicsstepmsec"/>
+						<stat_bar label="物理形状を更新" name="simsimphysicsshapeupdatemsec"/>
+						<stat_bar label="他の物理効果" name="simsimphysicsothermsec"/>
+						<stat_bar label="スリープ時間" name="simsleepmsec"/>
+						<stat_bar label="ポンプ I/O" name="simpumpiomsec"/>
+					</stat_view>
 				</stat_view>
 			</stat_view>
 		</container_view>
diff --git a/indra/newview/skins/default/xui/ja/floater_tools.xml b/indra/newview/skins/default/xui/ja/floater_tools.xml
index a8b5febd5430c6ce0a27c95780033f6470ad2e44..8eddf55a44b680da114fa52cf81a07d6d64a178b 100644
--- a/indra/newview/skins/default/xui/ja/floater_tools.xml
+++ b/indra/newview/skins/default/xui/ja/floater_tools.xml
@@ -25,10 +25,10 @@
 		土地をクリックし、ドラッグして選択
 	</floater.string>
 	<floater.string name="status_selectcount">
-		[OBJ_COUNT] 個のオブジェクト([PRIM_COUNT] 個のプリム [PE_STRING])が選択されています
+		選択されているオブジェクトは [OBJ_COUNT] 個、土地の負荷は [LAND_IMPACT]
 	</floater.string>
-	<floater.string name="status_selectprimequiv">
-		, [SEL_WEIGHT] プリム換算値
+	<floater.string name="status_remaining_capacity">
+		残りの許容数 [LAND_CAPACITY]。
 	</floater.string>
 	<button label="" label_selected="" name="button focus" tool_tip="フォーカス"/>
 	<button label="" label_selected="" name="button move" tool_tip="動かす"/>
@@ -105,8 +105,8 @@
 	<text name="selection_empty">
 		何も選択されていません。
 	</text>
-	<text name="selection_weight">
-		物理演算ウェイト [PHYS_WEIGHT]、レンダリングコスト [DISP_WEIGHT]。
+	<text name="remaining_capacity">
+		[CAPACITY_STRING] [secondlife:///app/openfloater/object_weights 詳細]
 	</text>
 	<tab_container name="Object Info Tabs">
 		<panel label="一般" name="General">
@@ -325,7 +325,6 @@
 				縫い目のタイプ
 			</text>
 			<combo_box name="sculpt type control">
-				<combo_box.item label="(なし)" name="None"/>
 				<combo_box.item label="球体" name="Sphere"/>
 				<combo_box.item label="トーラス" name="Torus"/>
 				<combo_box.item label="平面" name="Plane"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_toybox.xml b/indra/newview/skins/default/xui/ja/floater_toybox.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d7056f806c62e6543b8149eb16074ff88d4bac5f
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_toybox.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Toybox" title="ツールバーをカスタマイズ">
+	<text name="toybox label 1">
+		ボタンをツールバーに追加または削除するにはボタンをドラッグします。
+	</text>
+	<text name="toybox label 2">
+		各ツールバーの設定に応じて、ボタンは以下のように表示されたり、アイコンのみで表示されます。
+	</text>
+	<button label="デフォルト設定を復元" label_selected="デフォルト設定を復元" name="btn_restore_defaults"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/menu_hide_navbar.xml b/indra/newview/skins/default/xui/ja/menu_hide_navbar.xml
index 3a1ae49700a752469433387ff02d4864afd691e0..2e633ae1b2c9aff0241a90edbfcacd71751349c2 100644
--- a/indra/newview/skins/default/xui/ja/menu_hide_navbar.xml
+++ b/indra/newview/skins/default/xui/ja/menu_hide_navbar.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="hide_navbar_menu">
-	<menu_item_check label="ナビゲーションバーを表示" name="ShowNavbarNavigationPanel"/>
+	<menu_item_check label="ナビゲーションバーとお気に入りバーを表示" name="ShowNavbarNavigationPanel"/>
 	<menu_item_check label="お気に入りバーを表示" name="ShowNavbarFavoritesPanel"/>
 	<menu_item_check label="「場所」のミニフィールドを表示" name="ShowMiniLocationPanel"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_login.xml b/indra/newview/skins/default/xui/ja/menu_login.xml
index dca872e9b8d01bd9e882b041d48e353cd76fa0e7..4c88f17f3dbdaec8e840b448b7cf1d7b662714ce 100644
--- a/indra/newview/skins/default/xui/ja/menu_login.xml
+++ b/indra/newview/skins/default/xui/ja/menu_login.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu_bar name="Login Menu">
 	<menu label="ミー" name="File">
-		<menu_item_call label="環境設定" name="Preferences..."/>
+		<menu_item_call label="環境設定..." name="Preferences..."/>
 		<menu_item_call label="[APP_NAME] を終了" name="Quit"/>
 	</menu>
 	<menu label="ヘルプ" name="Help">
diff --git a/indra/newview/skins/default/xui/ja/menu_toolbars.xml b/indra/newview/skins/default/xui/ja/menu_toolbars.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e911ca4a1341da48c02da31dd7cbbceebe4ea024
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/menu_toolbars.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Toolbars Popup">
+	<menu_item_call label="ボタンを選択..." name="Chose Buttons"/>
+	<menu_item_check label="アイコンとラベル" name="icons_with_text"/>
+	<menu_item_check label="アイコンのみ" name="icons_only"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_viewer.xml b/indra/newview/skins/default/xui/ja/menu_viewer.xml
index edce5c50fc2de98ed43bfc548a0b9e31789da424..b9dbb81c0ad4510db6d802ae6a5e0b2175f575bf 100644
--- a/indra/newview/skins/default/xui/ja/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/ja/menu_viewer.xml
@@ -1,29 +1,30 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu_bar name="Main Menu">
 	<menu label="ミー" name="Me">
-		<menu_item_call label="環境設定" name="Preferences"/>
-		<menu_item_call label="マイアカウント" name="Manage My Account">
+		<menu_item_call label="マイアカウント..." name="Manage My Account">
 			<menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=ja"/>
 		</menu_item_call>
-		<menu_item_call label="L$ の購入" name="Buy and Sell L$"/>
-		<menu_item_call label="プロフィール" name="Profile"/>
-		<menu_item_call label="容姿" name="ChangeOutfit"/>
-		<menu_item_check label="持ち物" name="Inventory"/>
-		<menu_item_check label="持ち物" name="ShowSidetrayInventory"/>
-		<menu_item_check label="ジェスチャー" name="Gestures"/>
-		<menu_item_check label="マイボイス" name="ShowVoice"/>
+		<menu_item_call label="プロフィール..." name="Profile"/>
+		<menu_item_call label="容姿..." name="ChangeOutfit"/>
+		<menu_item_check label="持ち物..." name="Inventory"/>
+		<menu_item_check label="ジェスチャー..." name="Gestures"/>
+		<menu_item_check label="ボイス..." name="ShowVoice"/>
 		<menu label="ムーブメント" name="Movement">
 			<menu_item_call label="座る" name="Sit Down Here"/>
 			<menu_item_check label="飛ぶ" name="Fly"/>
 			<menu_item_check label="常に走る" name="Always Run"/>
 			<menu_item_call label="私のアニメーションを停止する" name="Stop Animating My Avatar"/>
 		</menu>
-		<menu label="ログイン状態" name="Status">
+		<menu label="ログイン" name="Status">
 			<menu_item_call label="一時退席中" name="Set Away"/>
 			<menu_item_call label="取り込み中" name="Set Busy"/>
 		</menu>
 		<menu_item_call label="管理者権限のリクエスト" name="Request Admin Options"/>
 		<menu_item_call label="管理者ステータス解除" name="Leave Admin Options"/>
+		<menu_item_call label="L$ の購入" name="Buy and Sell L$"/>
+		<menu_item_call label="環境設定..." name="Preferences"/>
+		<menu_item_call label="ツールバー..." name="Toolbars"/>
+		<menu_item_call label="全てのコントロールを非表示にする" name="Hide UI"/>
 		<menu_item_call label="[APP_NAME] を終了" name="Quit"/>
 	</menu>
 	<menu label="コミュニケーション" name="Communicate">
@@ -145,7 +146,6 @@
 	</menu>
 	<menu label="ヘルプ" name="Help">
 		<menu_item_call label="[SECOND_LIFE] ヘルプ" name="Second Life Help"/>
-		<menu_item_check label="ヒントを有効にする" name="Enable Hints"/>
 		<menu_item_call label="嫌がらせを報告する" name="Report Abuse"/>
 		<menu_item_call label="バグを報告する" name="Report Bug"/>
 		<menu_item_call label="[APP_NAME] について" name="About Second Life"/>
@@ -161,7 +161,7 @@
 		<menu label="パフォーマンスツール" name="Performance Tools">
 			<menu_item_call label="ラグ計測器" name="Lag Meter"/>
 			<menu_item_check label="統計バー" name="Statistics Bar"/>
-			<menu_item_check label="アバターのレンダリングコストを表示する" name="Avatar Rendering Cost"/>
+			<menu_item_check label="アバターの描画ウェイトを表示" name="Avatar Rendering Cost"/>
 		</menu>
 		<menu label="ハイライトと目に見えるもの" name="Highlighting and Visibility">
 			<menu_item_check label="チージービーコン" name="Cheesy Beacon"/>
@@ -289,6 +289,7 @@
 			<menu_item_check label="å…‰" name="Lights"/>
 			<menu_item_check label="骨組みの衝突判定" name="Collision Skeleton"/>
 			<menu_item_check label="レイキャスト" name="Raycast"/>
+			<menu_item_check label="描画の詳細度" name="rendercomplexity"/>
 			<menu_item_check label="スカルプト" name="Sculpt"/>
 		</menu>
 		<menu label="レンダリング" name="Rendering">
diff --git a/indra/newview/skins/default/xui/ja/notifications.xml b/indra/newview/skins/default/xui/ja/notifications.xml
index c138aeb383d671b2c310f537e1a20f7250dc4f45..85f09b450098e4b8ccf2bd33ca7c3473ff2dfd1a 100644
--- a/indra/newview/skins/default/xui/ja/notifications.xml
+++ b/indra/newview/skins/default/xui/ja/notifications.xml
@@ -1953,6 +1953,12 @@ Adult 専用リージョンに入るには、住人のアカウントが年齢
 		終了しようとしています。続けますか?
 		<usetemplate ignoretext="終了時の確認" name="okcancelignore" notext="終了しない" yestext="終了"/>
 	</notification>
+	<notification name="ConfirmRestoreToybox">
+		デフォルトのボタンとツールバーを復元しますか? 
+    
+この操作は元に戻せません。
+		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+	</notification>
 	<notification name="DeleteItems">
 		[QUESTION]
 		<usetemplate ignoretext="アイテムを削除する前の確認" name="okcancelignore" notext="取り消し" yestext="OK"/>
@@ -3041,10 +3047,6 @@ M キーを押して変更します。
 			<button name="cancel" text="取り消し"/>
 		</form>
 	</notification>
-	<notification label="" name="ModeChange">
-		モードを変更するには終了して再起動する必要があります。
-		<usetemplate name="okcancelbuttons" notext="終了しない" yestext="終了"/>
-	</notification>
 	<notification label="" name="NoClassifieds">
 		クラシファイド広告の作成と編集はアドバンスモードでのみ利用できます。終了してモードを変更しますか?モードはログイン画面で選択できます。
 		<usetemplate name="okcancelbuttons" notext="終了しない" yestext="終了"/>
@@ -3089,6 +3091,10 @@ M キーを押して変更します。
 		検索はアドバンスモードでのみ利用できます。ログアウトしてモードを変更しますか?
 		<usetemplate name="okcancelbuttons" notext="終了しない" yestext="終了"/>
 	</notification>
+	<notification label="" name="ConfirmHideUI">
+		この操作により、全てのメニュー項目とボタンが非表示になります。再び表示するには [SHORTCUT] をもう一度クリックしてください。
+		<usetemplate ignoretext="UI を非表示にする前に確認" name="okcancelignore" notext="取り消し" yestext="OK"/>
+	</notification>
 	<global name="UnsupportedGLRequirements">
 		[APP_NAME] に必要なハードウェアがないようです。 [APP_NAME] にはマルチテクスチャをサポートする OpenGL グラフィックカードが必要です。 お使いのグラフィックカードの最新ドライバがインストールされているかどうか、オペレーティングシステムのサービスパックとパッチが入っているかをご確認ください。
 
diff --git a/indra/newview/skins/default/xui/ja/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/ja/panel_chiclet_bar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6717ba9ba39c9ef7d6032cafae3d5ba18585fd9c
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/panel_chiclet_bar.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="chiclet_bar">
+	<layout_stack name="toolbar_stack">
+		<layout_panel name="im_well_panel">
+			<chiclet_im_well name="im_well">
+				<button name="Unread IM messages" tool_tip="会話"/>
+			</chiclet_im_well>
+		</layout_panel>
+		<layout_panel name="notification_well_panel">
+			<chiclet_notification name="notification_well">
+				<button name="Unread" tool_tip="通知"/>
+			</chiclet_notification>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_me.xml b/indra/newview/skins/default/xui/ja/panel_me.xml
index dda5bc00097076ecc71890aa077a0bb3a69de4cd..896bbff0ee3abea6c5e007d7df179ff6bdc669c0 100644
--- a/indra/newview/skins/default/xui/ja/panel_me.xml
+++ b/indra/newview/skins/default/xui/ja/panel_me.xml
@@ -1,7 +1,4 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="マイ プロフィール" name="panel_me">
-	<tab_container name="tabs">
-		<panel label="マイ プロフィール" name="panel_profile"/>
-		<panel label="マイ ピック" name="panel_picks"/>
-	</tab_container>
+	<panel label="マイ ピック" name="panel_picks"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_navigation_bar.xml b/indra/newview/skins/default/xui/ja/panel_navigation_bar.xml
index 0426c4fe9a100e8d61f1802157e2da78c6c0e4ad..51402b2e009de368ca52446c161febcbf03a5c05 100644
--- a/indra/newview/skins/default/xui/ja/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/ja/panel_navigation_bar.xml
@@ -1,18 +1,23 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="navigation_bar">
-	<panel name="navigation_panel">
-		<pull_button name="back_btn" tool_tip="前の場所へ戻ります"/>
-		<pull_button name="forward_btn" tool_tip="次の場所へ進みます"/>
-		<button name="home_btn" tool_tip="「ホーム」にテレポート"/>
-		<location_input label="場所" name="location_combo"/>
-		<search_combo_box label="検索" name="search_combo_box" tool_tip="検索">
-			<combo_editor label="[SECOND_LIFE] を検索:" name="search_combo_editor"/>
-		</search_combo_box>
-	</panel>
-	<favorites_bar name="favorite" tool_tip="ランドマークをここにドラッグして、Second Lifeのお気に入りの場所に素早くアクセス!">
-		<label name="favorites_bar_label" tool_tip="ランドマークをここにドラッグして、Second Lifeのお気に入りの場所に素早くアクセス!">
-			お気に入りバー
-		</label>
-		<chevron_button name="&gt;&gt;" tool_tip="お気に入りをもっと表示"/>
-	</favorites_bar>
+	<layout_stack name="nvp_stack">
+		<layout_panel name="navigation_layout_panel">
+			<panel name="navigation_panel">
+				<pull_button name="back_btn" tool_tip="前の場所"/>
+				<pull_button name="forward_btn" tool_tip="次の場所"/>
+				<button name="home_btn" tool_tip="「ホーム」にテレポートします"/>
+				<location_input label="所在地" name="location_combo"/>
+			</panel>
+		</layout_panel>
+		<layout_panel name="favorites_layout_panel">
+			<favorites_bar name="favorite" tool_tip="ランドマークをここにドラッグして、Second Lifeのお気に入りの場所に素早くアクセス!">
+				<label name="favorites_bar_label" tool_tip="ランドマークをここにドラッグして、Second Lifeのお気に入りの場所に素早くアクセス!">
+					お気に入りバー
+				</label>
+				<more_button name="&gt;&gt;" tool_tip="お気に入りをもっと表示">
+					詳細 ▼
+				</more_button>
+			</favorites_bar>
+		</layout_panel>
+	</layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_nearby_chat.xml b/indra/newview/skins/default/xui/ja/panel_nearby_chat.xml
new file mode 100644
index 0000000000000000000000000000000000000000..43346595575248341acc4bd84fbea7e0608ba716
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/panel_nearby_chat.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="nearby_chat">
+	<check_box label="チャットを翻訳(Google翻訳)" name="translate_chat_checkbox"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml b/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml
index 20e17de5f1a535de881cb89104caad2aecfab8b6..c8584ccaae74fcee234bdaa2366ff5b6927f0e33 100644
--- a/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml
@@ -51,7 +51,7 @@
 		<combo_box.item label="Русский(ロシア語)" name="Russian"/>
 		<combo_box.item label="Türkçe(トルコ語)" name="Turkish"/>
 		<combo_box.item label="Українська(ウクライナ語)" name="Ukrainian"/>
-		<combo_box.item label="中文 (正體)(中国語)" name="Chinese"/>
+		<combo_box.item label="中文 (正體) (Chinese)" name="Chinese"/>
 		<combo_box.item label="日本語" name="Japanese"/>
 		<combo_box.item label="한국어(韓国語)" name="Korean"/>
 	</combo_box>
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_general.xml b/indra/newview/skins/default/xui/ja/panel_preferences_general.xml
index 4356f3d47f7fc9e8c0d8f583e17a1c64fd8d9442..1bafa52fbe1fbcc9ce2f77039e14a6028b7b6a1b 100644
--- a/indra/newview/skins/default/xui/ja/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_general.xml
@@ -13,7 +13,10 @@
 		<combo_box.item label="Italiano (イタリア語) - ベータ" name="Italian"/>
 		<combo_box.item label="Polski (ポーランド語) - ベータ" name="Polish"/>
 		<combo_box.item label="Português(ポルトガル語) - ベータ" name="Portugese"/>
+		<combo_box.item label="Русский (ロシア語) - ベータ" name="Russian"/>
+		<combo_box.item label="Türkçe (トルコ語) - ベータ" name="Turkish"/>
 		<combo_box.item label="日本語 – ベータ" name="(Japanese)"/>
+		<combo_box.item label="正體中文 (中国語 - 繁体字) - ベータ" name="Traditional Chinese"/>
 	</combo_box>
 	<text name="language_textbox2">
 		(再起動後に反映)
@@ -48,7 +51,6 @@
 	<check_box label="グループタイトル" name="show_all_title_checkbox1" tool_tip="オフィサーまたはメンバーなど、グループタイトルを表示"/>
 	<check_box label="フレンドをハイライト表示" name="show_friends" tool_tip="フレンドの名前をハイライト表示"/>
 	<check_box label="表示名を表示" name="display_names_check" tool_tip="これを選択すると、チャット、IM などで表示名が表示されます。"/>
-	<check_box label="ビューワの UI ヒントを有効にする" name="viewer_hints_check"/>
 	<text name="inworld_typing_rg_label">
 		文字キーを押して次の操作:
 	</text>
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_move.xml b/indra/newview/skins/default/xui/ja/panel_preferences_move.xml
index 806bcfc14a6182d362c00ca08a977eb9e020a08b..121bebfd52900be50d689c8839886d1de2b9713a 100644
--- a/indra/newview/skins/default/xui/ja/panel_preferences_move.xml
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_move.xml
@@ -7,18 +7,33 @@
 	</text>
 	<check_box label="制作・編集" name="edit_camera_movement" tool_tip="編集モードのオン・オフの切り替えに、自動カメラポジションを使います"/>
 	<check_box label="容姿" name="appearance_camera_movement" tool_tip="編集モードに入ったときに、自動カメラポジションを使います"/>
-	<check_box initial_value="true" label="サイドバー" name="appearance_sidebar_positioning" tool_tip="サイドバーに自動カメラポジションを使います"/>
+	<text name="keyboard_lbl">
+		キーボード:
+	</text>
+	<check_box label="常にキー操作で動くようにする" name="arrow_keys_move_avatar_check"/>
+	<check_box label="上矢印キー2度押し+長押しで走る" name="tap_tap_hold_to_run"/>
+	<text name="mouse_lbl">
+		マウス:
+	</text>
 	<check_box label="一人称視点で表示する" name="first_person_avatar_visible"/>
 	<text name=" Mouse Sensitivity">
 		一人称視点のマウスの感度:
 	</text>
 	<check_box label="切り替え" name="invert_mouse"/>
-	<check_box label="常にキー操作で動くようにする" name="arrow_keys_move_avatar_check"/>
-	<check_box label="上矢印キー2度押し+長押しで走る" name="tap_tap_hold_to_run"/>
-	<check_box label="ダブルクリックで次の操作:" name="double_click_chkbox"/>
-	<radio_group name="double_click_action">
-		<radio_item label="テレポート" name="radio_teleport"/>
-		<radio_item label="自動追跡" name="radio_autopilot"/>
-	</radio_group>
+	<text name="single_click_action_lbl">
+		土地をシングルクリック:
+	</text>
+	<combo_box name="single_click_action_combo">
+		<combo_box.item label="動作なし" name="0"/>
+		<combo_box.item label="クリックされた地点に移動" name="1"/>
+	</combo_box>
+	<text name="double_click_action_lbl">
+		土地をダブルクリック:
+	</text>
+	<combo_box name="double_click_action_combo">
+		<combo_box.item label="動作なし" name="0"/>
+		<combo_box.item label="クリックされた地点に移動" name="1"/>
+		<combo_box.item label="クリックされた地点にテレポート" name="2"/>
+	</combo_box>
 	<button label="その他のディバイス" name="joystick_setup_button"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_status_bar.xml b/indra/newview/skins/default/xui/ja/panel_status_bar.xml
index 35c1148cc18594fdaabb30e89f376c0eef4af2f4..93689b81af778d67ab21b7d49d8c9557a3262a28 100644
--- a/indra/newview/skins/default/xui/ja/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/ja/panel_status_bar.xml
@@ -18,11 +18,8 @@
 	<panel name="balance_bg">
 		<text name="balance" tool_tip="クリックして L$ 残高を更新" value="L$20"/>
 		<button label="L$ の購入" name="buyL" tool_tip="クリックして L$ を購入します"/>
+		<button label="店" name="goShop" tool_tip="Second Life マーケットプレイスを開く"/>
 	</panel>
-	<combo_box name="mode_combo" tool_tip="モードを選択します。ベーシックモードでは探索やチャットをすばやく簡単に実行でき、アドバンスモードでは、より多くの機能が利用できます。">
-		<combo_box.item label="ベーシックモード" name="Basic"/>
-		<combo_box.item label="アドバンスモード" name="Advanced"/>
-	</combo_box>
 	<text name="TimeText" tool_tip="現在時刻(太平洋)">
 		24:00 AM PST
 	</text>
diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml
index 41dc098ba257fff8904a565298caa4aaeba45d3d..f611b965020e69a1037e1fb69d3cb0d900164ced 100644
--- a/indra/newview/skins/default/xui/ja/strings.xml
+++ b/indra/newview/skins/default/xui/ja/strings.xml
@@ -77,10 +77,10 @@
 		キャッシュファイルを検証しています(所要時間は 60 ~ 90 秒)...
 	</string>
 	<string name="LoginProcessingResponse">
-		応答を処理しています...
+		対応を処理中です...
 	</string>
 	<string name="LoginInitializingWorld">
-		ワールドを初期化しています...
+		ワールドを初期化中です...
 	</string>
 	<string name="LoginDecodingImages">
 		画像をデコードしています...
@@ -128,7 +128,7 @@
 		グリッドサーバーが返した証明書の署名を認証できませんでした。グリッドの管理者にお問い合わせください。
 	</string>
 	<string name="LoginFailedNoNetwork">
-		ネットワークエラー: 接続を確立できませんでした。お使いのネットワーク接続をご確認ください。
+		ネットワークエラー:接続を確立できませんでした。お使いのネットワーク接続をご確認ください。
 	</string>
 	<string name="LoginFailed">
 		ログインに失敗しました。
@@ -1276,6 +1276,9 @@ support@secondlife.com にお問い合わせください。
 	<string name="Marketplace Error Internal Import">
 		エラー:この商品に関して問題が発生しました。しばらくしてからお試しください。
 	</string>
+	<string name="Open landmarks">
+		ランドマークを開く
+	</string>
 	<string name="no_transfer" value=" (再販・プレゼント不可)"/>
 	<string name="no_modify" value=" (編集不可)"/>
 	<string name="no_copy" value=" (コピー不可)"/>
@@ -4254,8 +4257,8 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
 	<string name="Female - Wow">
 		女性 - Wow
 	</string>
-	<string name="/bow1">
-		/bow1
+	<string name="/bow">
+		/おじぎする
 	</string>
 	<string name="/clap">
 		/拍手
@@ -4767,4 +4770,172 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
 	<string name="ParticleHiding">
 		パーティクルを非表示
 	</string>
+	<string name="Command_AboutLand_Label">
+		土地情報
+	</string>
+	<string name="Command_Appearance_Label">
+		容姿
+	</string>
+	<string name="Command_Avatar_Label">
+		アバター
+	</string>
+	<string name="Command_Build_Label">
+		制作
+	</string>
+	<string name="Command_Chat_Label">
+		チャット
+	</string>
+	<string name="Command_Compass_Label">
+		コンパス
+	</string>
+	<string name="Command_Destinations_Label">
+		行き先
+	</string>
+	<string name="Command_Gestures_Label">
+		ジェスチャー
+	</string>
+	<string name="Command_HowTo_Label">
+		ハウツー
+	</string>
+	<string name="Command_Inventory_Label">
+		持ち物
+	</string>
+	<string name="Command_Map_Label">
+		地図
+	</string>
+	<string name="Command_Marketplace_Label">
+		マーケットプレイス
+	</string>
+	<string name="Command_MiniMap_Label">
+		ミニマップ
+	</string>
+	<string name="Command_Move_Label">
+		移動
+	</string>
+	<string name="Command_People_Label">
+		人
+	</string>
+	<string name="Command_Picks_Label">
+		ピック
+	</string>
+	<string name="Command_Places_Label">
+		場所
+	</string>
+	<string name="Command_Preferences_Label">
+		環境設定
+	</string>
+	<string name="Command_Profile_Label">
+		プロフィール
+	</string>
+	<string name="Command_Search_Label">
+		検索
+	</string>
+	<string name="Command_Snapshot_Label">
+		スナップショット
+	</string>
+	<string name="Command_Speak_Label">
+		話す
+	</string>
+	<string name="Command_View_Label">
+		視界
+	</string>
+	<string name="Command_Voice_Label">
+		近くのボイス
+	</string>
+	<string name="Command_AboutLand_Tooltip">
+		訪問先に関する情報
+	</string>
+	<string name="Command_Appearance_Tooltip">
+		アバターを変更
+	</string>
+	<string name="Command_Avatar_Tooltip">
+		アバター一式を選択
+	</string>
+	<string name="Command_Build_Tooltip">
+		オブジェクトの制作と地形の変形
+	</string>
+	<string name="Command_Chat_Tooltip">
+		近くの人と文字チャットする
+	</string>
+	<string name="Command_Compass_Tooltip">
+		コンパス
+	</string>
+	<string name="Command_Destinations_Tooltip">
+		行ってみたい場所
+	</string>
+	<string name="Command_Gestures_Tooltip">
+		アバターのジェスチャー
+	</string>
+	<string name="Command_HowTo_Tooltip">
+		一般的タスクの実行方法
+	</string>
+	<string name="Command_Inventory_Tooltip">
+		持ち物を表示・使用
+	</string>
+	<string name="Command_Map_Tooltip">
+		世界地図
+	</string>
+	<string name="Command_Marketplace_Tooltip">
+		ショッピングに出掛ける
+	</string>
+	<string name="Command_MiniMap_Tooltip">
+		近くの人を表示する
+	</string>
+	<string name="Command_Move_Tooltip">
+		アバターの移動
+	</string>
+	<string name="Command_People_Tooltip">
+		フレンド、グループ、近くの人
+	</string>
+	<string name="Command_Picks_Tooltip">
+		プロフィールで紹介するお気に入りの場所
+	</string>
+	<string name="Command_Places_Tooltip">
+		保存済みの場所
+	</string>
+	<string name="Command_Preferences_Tooltip">
+		環境設定
+	</string>
+	<string name="Command_Profile_Tooltip">
+		プロフィールを編集・表示
+	</string>
+	<string name="Command_Search_Tooltip">
+		場所、イベント、人を検索
+	</string>
+	<string name="Command_Snapshot_Tooltip">
+		ピクチャを撮る
+	</string>
+	<string name="Command_Speak_Tooltip">
+		マイクを使って近くの人と話す
+	</string>
+	<string name="Command_View_Tooltip">
+		カメラの角度を変更
+	</string>
+	<string name="Command_Voice_Tooltip">
+		ボイスチャット機能を持つ近くの人
+	</string>
+	<string name="Retain%">
+		維持率
+	</string>
+	<string name="Detail">
+		詳細
+	</string>
+	<string name="Better Detail">
+		もっと詳しく
+	</string>
+	<string name="Surface">
+		表面
+	</string>
+	<string name="Solid">
+		ソリッド
+	</string>
+	<string name="Wrap">
+		ラップ
+	</string>
+	<string name="Preview">
+		プレビュー
+	</string>
+	<string name="Normal">
+		普通
+	</string>
 </strings>
diff --git a/indra/newview/skins/default/xui/pl/floater_about.xml b/indra/newview/skins/default/xui/pl/floater_about.xml
index 637325ddd022758643998bf8b51b227afc888be9..409429ffaa64b2f5584ed937ebbce14fac9dc3fb 100644
--- a/indra/newview/skins/default/xui/pl/floater_about.xml
+++ b/indra/newview/skins/default/xui/pl/floater_about.xml
@@ -10,7 +10,7 @@
 	<floater.string name="AboutPosition">
 		Położenie [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] w [REGION] zlokalizowanym w &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt; ([HOSTIP])
 [SERVER_VERSION]
-[[SERVER_RELEASE_NOTES_URL] [ReleaseNotes]]
+[SERVER_RELEASE_NOTES_URL]
 	</floater.string>
 	<floater.string name="AboutSystem">
 		Procesor: [CPU]
diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_general.xml b/indra/newview/skins/default/xui/pt/panel_preferences_general.xml
index 1c19a55de65bb5470b63ffeca3f9239e5b866c4d..c53aa7d5f70e72ecc45c06b5ac72ee0e69743960 100644
--- a/indra/newview/skins/default/xui/pt/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/pt/panel_preferences_general.xml
@@ -16,7 +16,7 @@
 		<combo_box.item label="Русский (Russo) - Beta" name="Russian"/>
 		<combo_box.item label="Türkçe (Turco) - Beta" name="Turkish"/>
 		<combo_box.item label="日本語 (Japonês) - Beta" name="(Japanese)"/>
-		<combo_box.item label="正體 (Chinês tradicional) - Beta" name="Traditional Chinese"/>
+		<combo_box.item label="正體中文 (Chinês tradicional) - Beta" name="Traditional Chinese"/>
 	</combo_box>
 	<text name="language_textbox2">
 		(Reinicie para trocar de idioma)
diff --git a/indra/newview/skins/default/xui/ru/floater_about.xml b/indra/newview/skins/default/xui/ru/floater_about.xml
index 6bc550c3fe9c88a430e2f3ba9d303ba3a5448972..deb6be319cf7e74945107d2c0c484c37ca626ddb 100644
--- a/indra/newview/skins/default/xui/ru/floater_about.xml
+++ b/indra/newview/skins/default/xui/ru/floater_about.xml
@@ -10,7 +10,7 @@
 	<floater.string name="AboutPosition">
 		Вы в точке [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] в регионе «[REGION]», расположенном на &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt; ([HOSTIP])
 [SERVER_VERSION]
-[[SERVER_RELEASE_NOTES_URL] [ReleaseNotes]]
+[SERVER_RELEASE_NOTES_URL]
 	</floater.string>
 	<floater.string name="AboutSystem">
 		ЦП: [CPU]
@@ -36,6 +36,9 @@
 	<floater.string name="AboutTraffic">
 		Потеряно пакетов: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%)
 	</floater.string>
+	<floater.string name="ErrorFetchingServerReleaseNotesURL">
+		Ошибка при получении URL-адреса заметок о выпуске сервера.
+	</floater.string>
 	<tab_container name="about_tab">
 		<panel label="Данные" name="support_panel">
 			<button label="Копировать в буфер обмена" name="copy_btn"/>
diff --git a/indra/newview/skins/default/xui/ru/floater_about_land.xml b/indra/newview/skins/default/xui/ru/floater_about_land.xml
index cf43f411073722d840c46231558e09168f09e6c5..488d2cda1703830dffbaabf338cb5b23a0221e3a 100644
--- a/indra/newview/skins/default/xui/ru/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/ru/floater_about_land.xml
@@ -212,19 +212,19 @@
 				Бонусный множитель для объектов: [BONUS]
 			</text>
 			<text name="Simulator primitive usage:">
-				Примитивов используется:
+				Емкость региона:
 			</text>
 			<text name="objects_available">
 				[COUNT] из [MAX] ([AVAILABLE] доступно)
 			</text>
 			<text name="Primitives parcel supports:">
-				Разрешено для размещения:
+				Емкость участка:
 			</text>
 			<text name="object_contrib_text">
 				[COUNT]
 			</text>
 			<text name="Primitives on parcel:">
-				Примитивов на участке:
+				Воздействие участка:
 			</text>
 			<text name="total_objects_text">
 				[COUNT]
diff --git a/indra/newview/skins/default/xui/ru/floater_avatar.xml b/indra/newview/skins/default/xui/ru/floater_avatar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6bdf81988098e0d202aebc5089a6879c272b053a
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_avatar.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Avatar" title="ВЫБОР АВАТАРА"/>
diff --git a/indra/newview/skins/default/xui/ru/floater_camera.xml b/indra/newview/skins/default/xui/ru/floater_camera.xml
index 495c5d55fc899190844f56989e86811c3ff8254d..7a1f530668a280e723af2d268b84fd6a4e0d8bbe 100644
--- a/indra/newview/skins/default/xui/ru/floater_camera.xml
+++ b/indra/newview/skins/default/xui/ru/floater_camera.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="camera_floater">
+<floater name="camera_floater" title="КАМЕРА">
 	<floater.string name="rotate_tooltip">
 		Повернуть камеру вокруг точки фокусировки
 	</floater.string>
diff --git a/indra/newview/skins/default/xui/ru/floater_chat_bar.xml b/indra/newview/skins/default/xui/ru/floater_chat_bar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..eceab1775a59844aded11fa4b94ed19629fae759
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_chat_bar.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="chat_bar" title="ЛОКАЛЬНЫЙ ЧАТ">
+	<panel>
+		<line_editor label="Щелкните здесь для общения." name="chat_box" tool_tip="Нажмите Enter, чтобы сказать, Ctrl+Enter, чтобы прокричать"/>
+		<button name="show_nearby_chat" tool_tip="Показать/скрыть лог локального чата"/>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_destinations.xml b/indra/newview/skins/default/xui/ru/floater_destinations.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e769812bebc2ab0840c517ce2aca3619c59e0743
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_destinations.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Destinations" title="МЕСТА"/>
diff --git a/indra/newview/skins/default/xui/ru/floater_fast_timers.xml b/indra/newview/skins/default/xui/ru/floater_fast_timers.xml
new file mode 100644
index 0000000000000000000000000000000000000000..20936b8494fff4a843401ee6c1891b798a1c0d26
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_fast_timers.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="fast_timers">
+	<string name="pause">
+		Пауза
+	</string>
+	<string name="run">
+		Бег
+	</string>
+	<button label="Пауза" name="pause_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_how_to.xml b/indra/newview/skins/default/xui/ru/floater_how_to.xml
new file mode 100644
index 0000000000000000000000000000000000000000..52525e5d333929f50122af78610aa22caf256156
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_how_to.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_how_to" title="ПОМОЩЬ"/>
diff --git a/indra/newview/skins/default/xui/ru/floater_map.xml b/indra/newview/skins/default/xui/ru/floater_map.xml
index 169bac5bd282fed084fc8bbaf322ccebeb7c8931..59ceb0a773bd8e0b54e7016719fe534815593767 100644
--- a/indra/newview/skins/default/xui/ru/floater_map.xml
+++ b/indra/newview/skins/default/xui/ru/floater_map.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Map" title="">
+<floater name="Map" title="МИНИКАРТА">
 	<floater.string name="ToolTipMsg">
 		[REGION](Двойной щелчок открывает карту, shift+перетягивание – обзор)
 	</floater.string>
@@ -7,7 +7,7 @@
 		[REGION](Двойной щелчок – телепортация, shift+перетягивание – обзор)
 	</floater.string>
 	<floater.string name="mini_map_caption">
-		МИНИКАРТА
+		Миникарта
 	</floater.string>
 	<text label="С" name="floater_map_north">
 		С
diff --git a/indra/newview/skins/default/xui/ru/floater_model_preview.xml b/indra/newview/skins/default/xui/ru/floater_model_preview.xml
index 53ef685f9ee51a29eaa8fb3bf04a9c782083c302..31517e722d91024cfb0f5c9ca6baf6154f7d0b61 100644
--- a/indra/newview/skins/default/xui/ru/floater_model_preview.xml
+++ b/indra/newview/skins/default/xui/ru/floater_model_preview.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Model Preview" title="Передать модель">
-	<string name="status_idle">
-		Неактивно
-	</string>
+<floater name="Model Preview" title="ПЕРЕДАЧА МОДЕЛИ">
+	<string name="status_idle"/>
 	<string name="status_parse_error">
-		Проблема при анализе файла DAE – см. подробности в журнале.
+		Ошибка. Проблема при анализе файла DAE – см. подробности в журнале.
 	</string>
 	<string name="status_reading_file">
 		Загрузка...
@@ -51,6 +49,9 @@
 	<string name="mesh_status_missing_lod">
 		Отсутствует необходимый уровень детализации.
 	</string>
+	<string name="mesh_status_invalid_material_list">
+		Материалы уровня детализации не входят в эталонную модель.
+	</string>
 	<string name="layer_all">
 		Все
 	</string>
@@ -63,186 +64,211 @@
 	<string name="tbd">
 		Позже
 	</string>
-	<text name="name_label">
-		Название:
-	</text>
-	<text name="lod_label">
-		Просмотр:
-	</text>
-	<combo_box name="preview_lod_combo" tool_tip="Уровень детализации при предварительном просмотре">
-		<combo_item name="high">
-			Уровень детализации: высокий
-		</combo_item>
-		<combo_item name="medium">
-			Уровень детализации: средний
-		</combo_item>
-		<combo_item name="low">
-			Уровень детализации: низкий
-		</combo_item>
-		<combo_item name="lowest">
-			Уровень детализации: самый низкий
-		</combo_item>
-	</combo_box>
-	<text name="warning_title">
-		ВНИМАНИЕ!
-	</text>
-	<text name="warning_message">
-		Вы не сможете завершить передачу этой модели на серверы Second Life. [[VURL] Узнайте, как] получить право на передачу сеточных моделей.
-	</text>
-	<text name="weights_text">
-		Загрузка:
-Физические данные:
-Сервер:
-Эквивалент в примитивах:
-	</text>
-	<text name="weights">
-		[ST]
-[PH]
-[SIM]
-[EQ]
-	</text>
-	<tab_container name="import_tab">
-		<panel label="Уровень детализации" name="lod_panel">
-			<text name="lod_table_header">
-				Выберите уровень детализации:
-			</text>
-			<text name="high_label" value="высокий"/>
-			<text name="high_triangles" value="0"/>
-			<text name="high_vertices" value="0"/>
-			<text name="medium_label" value="средний"/>
-			<text name="medium_triangles" value="0"/>
-			<text name="medium_vertices" value="0"/>
-			<text name="low_label" value="низкий"/>
-			<text name="low_triangles" value="0"/>
-			<text name="low_vertices" value="0"/>
-			<text name="lowest_label" value="самый низкий"/>
-			<text name="lowest_triangles" value="0"/>
-			<text name="lowest_vertices" value="0"/>
-			<text name="lod_table_footer">
-				Уровень детализации: [DETAIL]
-			</text>
-			<radio_group name="lod_file_or_limit" value="lod_from_file">
-				<radio_item label="Загрузка из файла" name="lod_from_file"/>
-				<radio_item label="Автосоздание" name="lod_auto_generate"/>
-				<radio_item label="Нет" name="lod_none"/>
-			</radio_group>
-			<button label="Обзор..." name="lod_browse"/>
-			<combo_box name="lod_mode">
-				<combo_item name="triangle_limit">
-					Предельное число треугольников
-				</combo_item>
-				<combo_item name="error_threshold">
-					Порог ошибки
-				</combo_item>
-			</combo_box>
-			<text name="build_operator_text">
-				Оператор построения:
+	<panel name="left_panel">
+		<panel name="model_name_representation_panel">
+			<text name="name_label">
+				Имя модели:
 			</text>
-			<text name="queue_mode_text">
-				Режим очереди:
+			<text name="model_category_label">
+				Эта модель представляет...
 			</text>
-			<combo_box name="build_operator">
-				<combo_item name="edge_collapse">
-					Слияние ребер
-				</combo_item>
-				<combo_item name="half_edge_collapse">
-					Слияние ребер к одной вершине
-				</combo_item>
-			</combo_box>
-			<combo_box name="queue_mode">
-				<combo_item name="greedy">
-					интенсивный
-				</combo_item>
-				<combo_item name="lazy">
-					медленный
-				</combo_item>
-				<combo_item name="independent">
-					независимый
-				</combo_item>
+			<combo_box name="model_category_combo">
+				<combo_item label="Выберите вариант..." name="Choose one"/>
+				<combo_item label="Форма аватара" name="Avatar shape"/>
+				<combo_item label="Присоединение аватара" name="Avatar attachment"/>
+				<combo_item label="Подвижный объект (машина, животное)" name="Moving object (vehicle, animal)"/>
+				<combo_item label="Строительный компонент" name="Building Component"/>
+				<combo_item label="Большая, неподвижная и т.д." name="Large, non moving etc"/>
+				<combo_item label="Малая, неподвижная и т.д." name="Smaller, non-moving etc"/>
+				<combo_item label="Ни один из них" name="Not really any of these"/>
 			</combo_box>
-			<text name="border_mode_text">
-				Границы:
-			</text>
-			<text name="share_tolderance_text">
-				Допуск на совпадение:
-			</text>
-			<combo_box name="border_mode">
-				<combo_item name="border_unlock">
-					нефиксированные
-				</combo_item>
-				<combo_item name="border_lock">
-					фиксированные
-				</combo_item>
-			</combo_box>
-			<text name="crease_label">
-				Угол сгиба:
-			</text>
-			<spinner name="crease_angle" value="75"/>
 		</panel>
-		<panel label="Физика" name="physics_panel">
-			<panel name="physics geometry">
-				<radio_group name="physics_load_radio" value="physics_load_from_file">
-					<radio_item label="Файл:" name="physics_load_from_file"/>
-					<radio_item label="Использовать уровни детализации:" name="physics_use_lod"/>
-				</radio_group>
-				<combo_box name="physics_lod_combo" tool_tip="Уровень детализации для физической формы">
-					<combo_item name="physics_lowest">
-						самый низкий
-					</combo_item>
-					<combo_item name="physics_low">
-						низкий
-					</combo_item>
-					<combo_item name="physics_medium">
-						средний
-					</combo_item>
-					<combo_item name="physics_high">
-						высокий
-					</combo_item>
-				</combo_box>
-				<button label="Обзор..." name="physics_browse"/>
+		<tab_container name="import_tab">
+			<panel label="Уровень детализации" name="lod_panel" title="Уровень детализации">
+				<text initial_value="Источник" name="source" value="Источник"/>
+				<text initial_value="Треугольники" name="triangles" value="Треугольники"/>
+				<text initial_value="Вершины" name="vertices" value="Вершины"/>
+				<text initial_value="Высокий" name="high_label" value="Высокий"/>
+				<button label="Обзор..." name="lod_browse_high"/>
+				<text initial_value="0" name="high_triangles" value="0"/>
+				<text initial_value="0" name="high_vertices" value="0"/>
+				<text initial_value="Средний" name="medium_label" value="Средний"/>
+				<button label="Обзор..." name="lod_browse_medium"/>
+				<text initial_value="0" name="medium_triangles" value="0"/>
+				<text initial_value="0" name="medium_vertices" value="0"/>
+				<text initial_value="Низкий" name="low_label" value="Низкий"/>
+				<button label="Обзор..." name="lod_browse_low"/>
+				<text initial_value="0" name="low_triangles" value="0"/>
+				<text initial_value="0" name="low_vertices" value="0"/>
+				<text initial_value="Самый низкий" name="lowest_label" value="Самый низкий"/>
+				<button label="Обзор..." name="lod_browse_lowest"/>
+				<text initial_value="0" name="lowest_triangles" value="0"/>
+				<text initial_value="0" name="lowest_vertices" value="0"/>
+				<check_box label="Генерировать нормали" name="gen_normals"/>
+				<text initial_value="Угол сгиба:" name="crease_label" value="Угол сгиба:"/>
+				<spinner name="crease_angle" value="75"/>
 			</panel>
-			<panel name="physics analysis">
-				<slider label="Гладкость:" name="Smooth"/>
-				<check_box label="Закрыть отверстия (медленно)" name="Close Holes (Slow)"/>
-				<button label="Анализ" name="Decompose"/>
-				<button label="Отмена" name="decompose_cancel"/>
+			<panel label="Физика" name="physics_panel">
+				<panel name="physics geometry">
+					<text name="first_step_name">
+						Шаг 1. Уровень детализации
+					</text>
+					<combo_box name="physics_lod_combo" tool_tip="Уровень детализации для физической формы">
+						<combo_item name="choose_one">
+							Выберите вариант...
+						</combo_item>
+						<combo_item name="physics_high">
+							Высокое
+						</combo_item>
+						<combo_item name="physics_medium">
+							Средний
+						</combo_item>
+						<combo_item name="physics_low">
+							Низкий
+						</combo_item>
+						<combo_item name="physics_lowest">
+							Самый низкий
+						</combo_item>
+						<combo_item name="load_from_file">
+							Из файла
+						</combo_item>
+					</combo_box>
+					<button label="Обзор..." name="physics_browse"/>
+				</panel>
+				<panel name="physics analysis">
+					<text name="method_label">
+						Шаг 2. Анализ
+					</text>
+					<text name="analysis_method_label">
+						Метод:
+					</text>
+					<text name="quality_label">
+						Качество:
+					</text>
+					<text name="smooth_method_label">
+						Гладкость:
+					</text>
+					<check_box label="Закрыть отверстия" name="Close Holes (Slow)"/>
+					<button label="Анализ" name="Decompose"/>
+					<button label="Отмена" name="decompose_cancel"/>
+				</panel>
+				<panel name="physics simplification">
+					<text name="second_step_label">
+						Шаг 3. Упрощение
+					</text>
+					<text name="simp_method_header">
+						Метод:
+					</text>
+					<text name="pass_method_header">
+						Проходов:
+					</text>
+					<text name="Detail Scale label">
+						Масштаб деталей:
+					</text>
+					<text name="Retain%_label">
+						Сохранять:
+					</text>
+					<combo_box name="Combine Quality" value="1"/>
+					<button label="Упрощение" name="Simplify"/>
+					<button label="Отмена" name="simplify_cancel"/>
+				</panel>
+				<panel name="physics info">
+					<text name="results_text">
+						Результаты:
+					</text>
+					<text name="physics_triangles">
+						Треугольников: [TRIANGLES],
+					</text>
+					<text name="physics_points">
+						Вершин: [POINTS],
+					</text>
+					<text name="physics_hulls">
+						Оболочек: [HULLS]
+					</text>
+				</panel>
 			</panel>
-			<panel name="physics simplification">
-				<slider label="Проходов:" name="Combine Quality"/>
-				<slider label="Масштаб деталей:" name="Detail Scale"/>
-				<slider label="Сохранять:" name="Retain%"/>
-				<button label="Упрощение" name="Simplify"/>
-				<button label="Отмена" name="simplify_cancel"/>
-			</panel>
-			<panel name="physics info">
-				<slider label="Просмотр разложения:" name="physics_explode"/>
-				<text name="physics_triangles">
-					Треугольников: [TRIANGLES]
+			<panel label="Параметры передачи" name="modifiers_panel">
+				<text name="scale_label">
+					Масштаб (1=не масштабировать):
+				</text>
+				<spinner name="import_scale" value="1.0"/>
+				<text name="dimensions_label">
+					Размеры:
 				</text>
-				<text name="physics_points">
-					Вершин: [POINTS]
+				<text name="import_dimensions">
+					[X] X [Y] X [Z]
 				</text>
-				<text name="physics_hulls">
-					Оболочек: [HULLS]
+				<check_box label="Включить текстуры" name="upload_textures"/>
+				<text name="include_label">
+					Только для моделей аватаров:
 				</text>
+				<check_box label="Включить вес кожи" name="upload_skin"/>
+				<check_box label="Включить положения суставов" name="upload_joints"/>
+				<text name="pelvis_offset_label">
+					Смещение по Z (поднять или опустить аватар):
+				</text>
+				<spinner name="pelvis_offset" value="0.0"/>
 			</panel>
-		</panel>
-		<panel label="Модификаторы" name="modifiers_panel">
-			<spinner name="import_scale" value="1.0"/>
-			<text name="import_dimensions">
-				[X] x [Y] x [Z] м
+		</tab_container>
+		<panel name="weights_and_warning_panel">
+			<button label="Рассчитать вес и плату" name="calculate_btn" tool_tip="Рассчитать вес и плату"/>
+			<button label="Отмена" name="cancel_btn"/>
+			<button label="Передать" name="ok_btn" tool_tip="Передать в симулятор"/>
+			<button label="Очистить настройки и сбросить форму" name="reset_btn"/>
+			<text name="upload_fee">
+				Плата за передачу: L$ [FEE]
+			</text>
+			<text name="prim_weight">
+				Влияние земли: [EQ]
+			</text>
+			<text name="download_weight">
+				Загрузка: [ST]
+			</text>
+			<text name="physics_weight">
+				Физика: [PH]
+			</text>
+			<text name="server_weight">
+				Сервер: [SIM]
+			</text>
+			<text name="warning_title">
+				ПРИМЕЧАНИЕ.
+			</text>
+			<text name="warning_message">
+				У вас нет прав на передачу сеточных моделей. [[VURL] Узнайте, как] получить их.
+			</text>
+			<text name="status">
+				[STATUS]
 			</text>
-			<check_box label="Текстуры" name="upload_textures"/>
-			<check_box label="Вес кожи" name="upload_skin"/>
-			<check_box label="Положение сочленений" name="upload_joints"/>
-			<spinner name="pelvis_offset" value="0.0"/>
 		</panel>
-	</tab_container>
-	<text name="upload_fee">
-		Плата за передачу: L$ [FEE]
+	</panel>
+	<text name="lod_label">
+		Просмотр:
 	</text>
-	<button label="По умолчанию" name="reset_btn" tool_tip="По умолчанию"/>
-	<button label="Рассчитать вес и плату" name="calculate_btn" tool_tip="Рассчитать вес и плату"/>
-	<button label="Передача" name="ok_btn" tool_tip="Передать в симулятор"/>
-	<button label="Отмена" name="cancel_btn"/>
+	<panel name="right_panel">
+		<combo_box name="preview_lod_combo" tool_tip="Уровень детализации при предварительном просмотре">
+			<combo_item name="high">
+				Высокий
+			</combo_item>
+			<combo_item name="medium">
+				Среднее
+			</combo_item>
+			<combo_item name="low">
+				Низкий
+			</combo_item>
+			<combo_item name="lowest">
+				Самый низкий
+			</combo_item>
+		</combo_box>
+		<text name="label_display">
+			Показать...
+		</text>
+		<check_box label="Ребра" name="show_edges"/>
+		<check_box label="Физика" name="show_physics"/>
+		<check_box label="Текстуры" name="show_textures"/>
+		<check_box label="Вес кожи" name="show_skin_weight"/>
+		<check_box label="Суставы" name="show_joint_positions"/>
+		<text name="physics_explode_label">
+			Просмотр разложения:
+		</text>
+	</panel>
 </floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_model_wizard.xml b/indra/newview/skins/default/xui/ru/floater_model_wizard.xml
index 9b2924a3db39d76017635a1ae4caf994984bcd78..204f752cd9fde8246a100b2efef638d979c2ea98 100644
--- a/indra/newview/skins/default/xui/ru/floater_model_wizard.xml
+++ b/indra/newview/skins/default/xui/ru/floater_model_wizard.xml
@@ -6,26 +6,20 @@
 	<button label="2. Оптимизировать" name="optimize_btn"/>
 	<button label="1. Выбрать файл" name="choose_file_btn"/>
 	<panel name="choose_file_panel">
-		<panel name="choose_file_header_panel">
-			<text name="choose_file_header_text">
-				Выберите файл
+		<panel name="header_panel">
+			<text name="header_text">
+				Выберите файл модели
 			</text>
 		</panel>
-		<panel name="choose_file_content_panel">
+		<panel name="content">
 			<text name="advanced_users_text">
 				Пользователям, работающим в расширенном режиме: если вы умеете создавать трехмерные графические объекты, то, возможно, захотите воспользоваться средством Advanced Uploader, которое предоставляет расширенные возможности передачи объектов.
 			</text>
 			<button label="Перейти в расширенный режим" name="switch_to_advanced"/>
-			<text name="choose_model_file_label">
+			<text name="Cache location">
 				Выберите файл модели для передачи
 			</text>
 			<button label="Обзор..." label_selected="Обзор..." name="browse"/>
-			<text name="support_collada_text">
-				В Second Life поддерживаются файлы COLLADA (DAE)
-			</text>
-			<text name="dimensions_label">
-				Размеры (в метрах):
-			</text>
 			<text name="dimensions">
 				X         Y         Z
 			</text>
@@ -38,18 +32,15 @@
 		</panel>
 	</panel>
 	<panel name="optimize_panel">
-		<panel name="optimize_header_panel">
-			<text name="optimize_header_text">
+		<panel name="header_panel">
+			<text name="header_text">
 				Оптимизировать модель
 			</text>
 		</panel>
-		<text name="optimize_hint">
+		<text name="description">
 			Мы оптимизировали модель для повышения быстродействия. По желанию можно выполнить дополнительную настройку.
 		</text>
-		<panel name="optimize_content_panel">
-			<text name="generating_lod_label">
-				Создается уровень детализации
-			</text>
+		<panel name="content">
 			<text name="high_detail_text">
 				Создать уровень детализации: высокий
 			</text>
@@ -64,123 +55,64 @@
 			</text>
 		</panel>
 		<panel name="content2">
-			<text name="optimize_performance_text">
-				Быстродействие
-			</text>
-			<text name="optimize_faster_rendering_text">
-				Ускорить прорисовку
-Меньше деталей
-Уменьшить вес примитива
-			</text>
-			<text name="optimize_accuracy_text">
-				Точность
-			</text>
-			<text name="optimize_slower_rendering_text">
-				Замедлить прорисовку
-Больше деталей
-Повысить вес примитива
-			</text>
-			<text name="accuracy_slider_mark1">
-				&apos;
-			</text>
-			<text name="accuracy_slider_mark2">
-				&apos;
-			</text>
-			<text name="accuracy_slider_mark3">
-				&apos;
-			</text>
 			<button label="Пересчитать геометрию" name="recalculate_geometry_btn"/>
-			<text name="geometry_preview_label">
+			<text name="lod_label">
 				Просмотр геометрии
 			</text>
 			<combo_box name="preview_lod_combo" tool_tip="Детализация при предварительном просмотре">
-				<combo_item name="preview_lod_high">
+				<combo_item name="high">
 					Детально
 				</combo_item>
-				<combo_item name="preview_lod_medium">
+				<combo_item name="medium">
 					Средняя детализация
 				</combo_item>
-				<combo_item name="preview_lod_low">
+				<combo_item name="low">
 					Мало деталей
 				</combo_item>
-				<combo_item name="preview_lod_lowest">
+				<combo_item name="lowest">
 					Минимум деталей
 				</combo_item>
 			</combo_box>
 		</panel>
 	</panel>
 	<panel name="physics_panel">
-		<panel name="physics_header_panel">
-			<text name="physics_header_text">
+		<panel name="header_panel">
+			<text name="header_text">
 				Настроить физические параметры
 			</text>
 		</panel>
-		<text name="physics_hint">
+		<text name="description">
 			Мы создадим форму для внешнего каркаса модели. Настройте уровень детализации формы в соответствии с целями, для которых предназначена модель.
 		</text>
-		<panel name="physics_content_panel">
-			<text name="physics_performance_text">
-				Быстродействие
-			</text>
-			<text name="physics_faster_rendering_text">
-				Ускорить прорисовку
-Меньше деталей
-Уменьшить вес примитива
-			</text>
-			<text name="physics_accuracy_text">
-				Точность
-			</text>
-			<text name="physics_slower_dendering_text">
-				Замедлить прорисовку
-Больше деталей
-Повысить вес примитива
-			</text>
-			<text name="physics_example_1">
-				Примеры:
-подвижные объекты;
-летающие объекты;
-транспорт.
-			</text>
-			<text name="physics_example_2">
-				Примеры:
-небольшие неподвижные объекты;
-простые объекты;
-простая мебель.
-			</text>
-			<text name="physics_example_3">
-				Примеры:
-неподвижные объекты;
-сложные объекты;
-здания.
-			</text>
+		<panel name="content">
 			<button label="Пересчитать физические данные" name="recalculate_physics_btn"/>
 			<button label="Пересчет..." name="recalculating_physics_btn"/>
-			<text name="physics_preview_label">
+			<text name="lod_label">
 				Просмотр физических данных
 			</text>
-			<combo_box name="preview_lod_combo2" tool_tip="Детализация при предварительном просмотре">
-				<combo_item name="preview_lod2_high">
+			<combo_box name="preview_lod_combo2" tool_tip="Уровень детализации при предварительном просмотре">
+				<combo_item name="high">
 					Детально
 				</combo_item>
-				<combo_item name="preview_lod2_medium">
+				<combo_item name="medium">
 					Средняя детализация
 				</combo_item>
-				<combo_item name="preview_lod2_low">
+				<combo_item name="low">
 					Мало деталей
 				</combo_item>
-				<combo_item name="preview_lod2_lowest">
+				<combo_item name="lowest">
 					Минимум деталей
 				</combo_item>
 			</combo_box>
 		</panel>
 	</panel>
 	<panel name="review_panel">
-		<panel name="review_header_panel">
-			<text name="review_header_text">
-				Пересмотреть
+		<panel name="header_panel">
+			<text name="header_text">
+				Просмотр
 			</text>
 		</panel>
-		<panel name="review_content_panel">
+		<panel name="content">
 			<text name="review_prim_equiv">
 				Воздействие на участок/регион: эквивалент в примитивах: [EQUIV]
 			</text>
@@ -193,8 +125,8 @@
 		</panel>
 	</panel>
 	<panel name="upload_panel">
-		<panel name="upload_header_panel">
-			<text name="upload_header_text">
+		<panel name="header_panel">
+			<text name="header_text">
 				Передача завершена
 			</text>
 		</panel>
diff --git a/indra/newview/skins/default/xui/ru/floater_moveview.xml b/indra/newview/skins/default/xui/ru/floater_moveview.xml
index c6ef4a06b39a8262cd31b2a33b07f74fda00148d..6e01f997e18482d0a8721a7947350ca2467ce8c4 100644
--- a/indra/newview/skins/default/xui/ru/floater_moveview.xml
+++ b/indra/newview/skins/default/xui/ru/floater_moveview.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="move_floater">
+<floater name="move_floater" title="ПЕРЕМЕЩЕНИЕ">
 	<string name="walk_forward_tooltip">
 		Идти вперед (нажмите стрелку вверх или клавишу W)
 	</string>
diff --git a/indra/newview/skins/default/xui/ru/floater_my_appearance.xml b/indra/newview/skins/default/xui/ru/floater_my_appearance.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b90d80f3fdd7e3769a649c23921a644b882e975f
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_my_appearance.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_my_appearance" title="ВНЕШНОСТЬ">
+	<panel label="Изменить внешний вид" name="main_panel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_my_inventory.xml b/indra/newview/skins/default/xui/ru/floater_my_inventory.xml
new file mode 100644
index 0000000000000000000000000000000000000000..534d2a5774a97fcecdf2c6be0f0552ee52709859
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_my_inventory.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_my_inventory" title="ИНВЕНТАРЬ"/>
diff --git a/indra/newview/skins/default/xui/ru/floater_object_weights.xml b/indra/newview/skins/default/xui/ru/floater_object_weights.xml
new file mode 100644
index 0000000000000000000000000000000000000000..41e01187320e1273dbaa05d25e05b7c4ee3af371
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_object_weights.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="object_weights" title="ДОПОЛНИТЕЛЬНО">
+	<floater.string name="nothing_selected" value="--"/>
+	<text name="selected_text" value="ВЫБРАНО"/>
+	<text name="objects" value="--"/>
+	<text name="objects_label" value="Объекты"/>
+	<text name="prims" value="--"/>
+	<text name="prims_label" value="Примитивы"/>
+	<text name="weights_of_selected_text" value="ВЕС ВЫБРАННОГО"/>
+	<text name="download" value="--"/>
+	<text name="download_label" value="Загрузить"/>
+	<text name="physics" value="--"/>
+	<text name="physics_label" value="Физика"/>
+	<text name="server" value="--"/>
+	<text name="server_label" value="Сервер"/>
+	<text name="display" value="--"/>
+	<text name="display_label" value="Показать"/>
+	<text name="land_impacts_text" value="ВОЗДЕЙСТВИЕ НА ЗЕМЛЮ"/>
+	<text name="selected" value="--"/>
+	<text name="selected_label" value="Выбрано"/>
+	<text name="rezzed_on_land" value="--"/>
+	<text name="rezzed_on_land_label" value="Выложено на землю"/>
+	<text name="remaining_capacity" value="--"/>
+	<text name="remaining_capacity_label" value="Остаток емкости"/>
+	<text name="total_capacity" value="--"/>
+	<text name="total_capacity_label" value="Общая емкость"/>
+	<text name="help_SLURL" value="[secondlife:///app/help/object_weights Что это такое?...]"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/ru/floater_outfit_save_as.xml
index 781ee8c77196eb906383d4f389604cf131cf36e9..301206e473a4e68343da7bf9774adc68c43fb7e0 100644
--- a/indra/newview/skins/default/xui/ru/floater_outfit_save_as.xml
+++ b/indra/newview/skins/default/xui/ru/floater_outfit_save_as.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="modal container" title="Сохранение костюма">
+<floater name="modal container" title="СОХРАНИТЬ КОСТЮМ">
 	<button label="Сохранить" label_selected="Сохранить" name="Save"/>
 	<button label="Отмена" label_selected="Отмена" name="Cancel"/>
 	<text name="Save item as:">
diff --git a/indra/newview/skins/default/xui/ru/floater_people.xml b/indra/newview/skins/default/xui/ru/floater_people.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7abc34986afacff922c682262d4f897be5f8b156
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_people.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_people" title="ЛЮДИ">
+	<panel_container name="main_panel">
+		<panel label="Профиль группы" name="panel_group_info_sidetray"/>
+		<panel label="Черный список жителей и объектов" name="panel_block_list_sidetray"/>
+	</panel_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_picks.xml b/indra/newview/skins/default/xui/ru/floater_picks.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e0ae8d6f0346c828fd2e50ca44451846f01b5519
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_picks.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_picks" title="Подборка"/>
diff --git a/indra/newview/skins/default/xui/ru/floater_places.xml b/indra/newview/skins/default/xui/ru/floater_places.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2a22a855ef0f230c444f0890f23f53adaac2c4e1
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_places.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_places" title="МЕСТА">
+	<panel label="Места" name="main_panel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_sound_devices.xml b/indra/newview/skins/default/xui/ru/floater_sound_devices.xml
index 809cea5aa1f8507a683e1b5eb7d089f6788cf022..fc8de858cd245e9a4697c3855ead936cf1500b8d 100644
--- a/indra/newview/skins/default/xui/ru/floater_sound_devices.xml
+++ b/indra/newview/skins/default/xui/ru/floater_sound_devices.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_sound_devices" title="Звуковые устройства">
+<floater name="floater_sound_devices" title="ЗВУКОВЫЕ УСТРОЙСТВА">
 	<text name="voice_label">
 		Голосовой чат
 	</text>
diff --git a/indra/newview/skins/default/xui/ru/floater_stats.xml b/indra/newview/skins/default/xui/ru/floater_stats.xml
index c5cccd4091f65008773c329db064d7822dc964fc..b1f60c8029be566bbb76584419a1ac0af9b5be03 100644
--- a/indra/newview/skins/default/xui/ru/floater_stats.xml
+++ b/indra/newview/skins/default/xui/ru/floater_stats.xml
@@ -10,8 +10,8 @@
 			</stat_view>
 			<stat_view label="Дополнительно" name="advanced">
 				<stat_view label="Отрисовка" name="render">
-					<stat_bar label="Треугольников за секунду" name="ktrisframe"/>
-					<stat_bar label="Треугольников за секунду" name="ktrissec"/>
+					<stat_bar label="Треугольников на кадр" name="ktrisframe"/>
+					<stat_bar label="Треугольников в секунду" name="ktrissec"/>
 					<stat_bar label="Всего объектов" name="objs"/>
 					<stat_bar label="Новых объектов" name="newobjs"/>
 				</stat_view>
@@ -32,7 +32,7 @@
 					<stat_bar label="Слои" name="layerskbitstat"/>
 					<stat_bar label="Действительный ввод" name="actualinkbitstat"/>
 					<stat_bar label="Действительный вывод" name="actualoutkbitstat"/>
-					<stat_bar label="Ожидающие оп-ции VFS" name="vfspendingoperations"/>
+					<stat_bar label="Ожидающие операции VFS" name="vfspendingoperations"/>
 				</stat_view>
 			</stat_view>
 			<stat_view label="Симулятор" name="sim">
@@ -64,6 +64,14 @@
 					<stat_bar label="Время на клиент" name="simagentmsec"/>
 					<stat_bar label="Время на изображения" name="simimagesmsec"/>
 					<stat_bar label="Время на скрипт" name="simscriptmsec"/>
+					<stat_bar label="Резервное время" name="simsparemsec"/>
+					<stat_view label="Данные времени (мс)" name="timedetails">
+						<stat_bar label="Шаг физики" name="simsimphysicsstepmsec"/>
+						<stat_bar label="Обновить физ. формы" name="simsimphysicsshapeupdatemsec"/>
+						<stat_bar label="Физика - прочее" name="simsimphysicsothermsec"/>
+						<stat_bar label="Время сна" name="simsleepmsec"/>
+						<stat_bar label="Ввод/вывод" name="simpumpiomsec"/>
+					</stat_view>
 				</stat_view>
 			</stat_view>
 		</container_view>
diff --git a/indra/newview/skins/default/xui/ru/floater_tools.xml b/indra/newview/skins/default/xui/ru/floater_tools.xml
index 7200ec80fa6eb8c5fbcf2f0334d09dd4607353c6..660eca51c6864e6eefde1df85d9a132d9c0c2b90 100644
--- a/indra/newview/skins/default/xui/ru/floater_tools.xml
+++ b/indra/newview/skins/default/xui/ru/floater_tools.xml
@@ -25,10 +25,10 @@
 		Щелкните и переместите для выделения земли
 	</floater.string>
 	<floater.string name="status_selectcount">
-		Выбрано объектов: [OBJ_COUNT] (примитивов: [PRIM_COUNT] [PE_STRING])
+		Выбрано объектов: [OBJ_COUNT], влияние на землю [LAND_IMPACT]
 	</floater.string>
-	<floater.string name="status_selectprimequiv">
-		, в примитивах: [SEL_WEIGHT]
+	<floater.string name="status_remaining_capacity">
+		Остаток емкости [LAND_CAPACITY].
 	</floater.string>
 	<button name="button focus" tool_tip="Отчетливость"/>
 	<button name="button move" tool_tip="Переместить"/>
@@ -107,8 +107,8 @@
 	<text name="selection_empty">
 		Ничего не выбрано.
 	</text>
-	<text name="selection_weight">
-		Вес физических параметров [PHYS_WEIGHT], стоимость прорисовки [DISP_WEIGHT].
+	<text name="remaining_capacity">
+		[CAPACITY_STRING] [secondlife:///app/openfloater/object_weights Дополнительная информация]
 	</text>
 	<tab_container name="Object Info Tabs">
 		<panel label="Общие" name="General">
@@ -321,7 +321,6 @@
 				Тип стыковки
 			</text>
 			<combo_box name="sculpt type control">
-				<combo_box.item label="(нет)" name="None"/>
 				<combo_box.item label="По сфере" name="Sphere"/>
 				<combo_box.item label="По тору" name="Torus"/>
 				<combo_box.item label="По плоскости" name="Plane"/>
diff --git a/indra/newview/skins/default/xui/ru/floater_toybox.xml b/indra/newview/skins/default/xui/ru/floater_toybox.xml
new file mode 100644
index 0000000000000000000000000000000000000000..eb03e8c8bf7f6217bddd913dbcca34bcb1d19eee
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_toybox.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Toybox" title="НАСТРОИТЬ ПАНЕЛИ ИНСТРУМЕНТОВ">
+	<text name="toybox label 1">
+		Добавьте или удалите кнопки, перетягивая их на панели инструментов или с них.
+	</text>
+	<text name="toybox label 2">
+		Кнопки будут отображены в исходном виде или в виде значков, в зависимости от настроек каждой панели инструментов.
+	</text>
+	<button label="Восстановить умолчания" label_selected="Восстановить умолчания" name="btn_restore_defaults"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_voice_controls.xml b/indra/newview/skins/default/xui/ru/floater_voice_controls.xml
index 9fd6518984d80073dd66c734fe193dfd533c7139..6520a4342c7ab29381346af06b4ee917e7f90fb6 100644
--- a/indra/newview/skins/default/xui/ru/floater_voice_controls.xml
+++ b/indra/newview/skins/default/xui/ru/floater_voice_controls.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_voice_controls" title="Управление голосом">
+<floater name="floater_voice_controls" title="УПРАВЛЕНИЕ ГОЛОСОМ">
 	<string name="title_nearby">
-		ЛОКАЛЬНЫЙ ГОЛОСОВОЙ ЧАТ
+		Голоса собеседников
 	</string>
 	<string name="title_group">
 		Звонок группе [GROUP]
diff --git a/indra/newview/skins/default/xui/ru/menu_hide_navbar.xml b/indra/newview/skins/default/xui/ru/menu_hide_navbar.xml
index f77896677d7422293b1c236c51d1d6aae355d01e..34e5f4c0e4a6226684c7ffd7b85de2e57a555b20 100644
--- a/indra/newview/skins/default/xui/ru/menu_hide_navbar.xml
+++ b/indra/newview/skins/default/xui/ru/menu_hide_navbar.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="hide_navbar_menu">
-	<menu_item_check label="Показать панель навигации" name="ShowNavbarNavigationPanel"/>
+	<menu_item_check label="Показать панель навигации и избранного" name="ShowNavbarNavigationPanel"/>
 	<menu_item_check label="Показать панель избранного" name="ShowNavbarFavoritesPanel"/>
 	<menu_item_check label="Показать мини-панель местоположения" name="ShowMiniLocationPanel"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_login.xml b/indra/newview/skins/default/xui/ru/menu_login.xml
index 3b545bf59354131ac4c9a0c460dcb690f43153ed..aa3570f1765557afaf7fe9abd946a02da3cf1a42 100644
--- a/indra/newview/skins/default/xui/ru/menu_login.xml
+++ b/indra/newview/skins/default/xui/ru/menu_login.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu_bar name="Login Menu">
 	<menu label="Я" name="File">
-		<menu_item_call label="Настройки" name="Preferences..."/>
+		<menu_item_call label="Настройки..." name="Preferences..."/>
 		<menu_item_call label="Выход из [APP_NAME]" name="Quit"/>
 	</menu>
 	<menu label="Справка" name="Help">
diff --git a/indra/newview/skins/default/xui/ru/menu_toolbars.xml b/indra/newview/skins/default/xui/ru/menu_toolbars.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e04a9ee57d2cbd09798cdb9dee3f21226c1bc5c6
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_toolbars.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Toolbars Popup">
+	<menu_item_call label="Выбор кнопок..." name="Chose Buttons"/>
+	<menu_item_check label="Значки и подписи" name="icons_with_text"/>
+	<menu_item_check label="Только значки" name="icons_only"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_viewer.xml b/indra/newview/skins/default/xui/ru/menu_viewer.xml
index c4e553f918620f435cfdedd5f1801d63803ab513..322a27003fd28c3f9e11e49bb6c201814e927635 100644
--- a/indra/newview/skins/default/xui/ru/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/ru/menu_viewer.xml
@@ -1,27 +1,28 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu_bar name="Main Menu">
 	<menu label="Я" name="Me">
-		<menu_item_call label="Настройки" name="Preferences"/>
-		<menu_item_call label="Моя информационная панель" name="Manage My Account"/>
-		<menu_item_call label="Купить L$" name="Buy and Sell L$"/>
-		<menu_item_call label="Мой профиль" name="Profile"/>
-		<menu_item_call label="Мой внешний вид" name="ChangeOutfit"/>
-		<menu_item_check label="Мой инвентарь" name="Inventory"/>
-		<menu_item_check label="Мой инвентарь" name="ShowSidetrayInventory"/>
-		<menu_item_check label="Мои жесты" name="Gestures"/>
-		<menu_item_check label="Мой голос" name="ShowVoice"/>
+		<menu_item_call label="Информационная панель..." name="Manage My Account"/>
+		<menu_item_call label="Профиль…" name="Profile"/>
+		<menu_item_call label="Внешность..." name="ChangeOutfit"/>
+		<menu_item_check label="Инвентарь..." name="Inventory"/>
+		<menu_item_check label="Жесты..." name="Gestures"/>
+		<menu_item_check label="Голос..." name="ShowVoice"/>
 		<menu label="Движение" name="Movement">
 			<menu_item_call label="Сесть" name="Sit Down Here"/>
 			<menu_item_check label="Полет" name="Fly"/>
 			<menu_item_check label="Всегда бегать" name="Always Run"/>
 			<menu_item_call label="Остановить анимацию" name="Stop Animating My Avatar"/>
 		</menu>
-		<menu label="Мой статус" name="Status">
+		<menu label="Статус" name="Status">
 			<menu_item_call label="Нет на месте" name="Set Away"/>
 			<menu_item_call label="Не беспокоить" name="Set Busy"/>
 		</menu>
 		<menu_item_call label="Запрос статуса администратора" name="Request Admin Options"/>
 		<menu_item_call label="Выход из статуса администратора" name="Leave Admin Options"/>
+		<menu_item_call label="Купить L$" name="Buy and Sell L$"/>
+		<menu_item_call label="Настройки..." name="Preferences"/>
+		<menu_item_call label="Панели инструментов..." name="Toolbars"/>
+		<menu_item_call label="Скрыть все элементы управления" name="Hide UI"/>
 		<menu_item_call label="Выход из [APP_NAME]" name="Quit"/>
 	</menu>
 	<menu label="Общение" name="Communicate">
@@ -32,7 +33,7 @@
 		<menu_item_check label="Голоса собеседников" name="Nearby Voice"/>
 	</menu>
 	<menu label="Мир" name="World">
-		<menu_item_check label="Мини-карта" name="Mini-Map"/>
+		<menu_item_check label="Миникарта" name="Mini-Map"/>
 		<menu_item_check label="Карта мира" name="World Map"/>
 		<menu_item_check label="Поиск" name="Search"/>
 		<menu_item_call label="Снимок" name="Take Snapshot"/>
@@ -144,7 +145,6 @@
 	</menu>
 	<menu label="Справка" name="Help">
 		<menu_item_call label="Справка по [SECOND_LIFE]" name="Second Life Help"/>
-		<menu_item_check label="Включить подсказки" name="Enable Hints"/>
 		<menu_item_call label="Жалоба" name="Report Abuse"/>
 		<menu_item_call label="Сообщить об ошибке" name="Report Bug"/>
 		<menu_item_call label="О [APP_NAME]" name="About Second Life"/>
@@ -160,7 +160,7 @@
 		<menu label="Производительность" name="Performance Tools">
 			<menu_item_call label="Запаздывание" name="Lag Meter"/>
 			<menu_item_check label="Статистика" name="Statistics Bar"/>
-			<menu_item_check label="Стоимость отрисовки аватара" name="Avatar Rendering Cost"/>
+			<menu_item_check label="Показать вес отрисовки для аватаров" name="Avatar Rendering Cost"/>
 		</menu>
 		<menu label="Подсветка и видимость" name="Highlighting and Visibility">
 			<menu_item_check label="Мигающий маяк" name="Cheesy Beacon"/>
@@ -288,6 +288,7 @@
 			<menu_item_check label="Освещение" name="Lights"/>
 			<menu_item_check label="Каркас столкновений" name="Collision Skeleton"/>
 			<menu_item_check label="Лучи" name="Raycast"/>
+			<menu_item_check label="Сложность визуализации" name="rendercomplexity"/>
 			<menu_item_check label="Лепка" name="Sculpt"/>
 		</menu>
 		<menu label="Визуализация" name="Rendering">
diff --git a/indra/newview/skins/default/xui/ru/notifications.xml b/indra/newview/skins/default/xui/ru/notifications.xml
index 91c8dbf761a6fefcc47c0856ea4873be414b1974..87ae9d06dd220544961d431e249f57c007df411b 100644
--- a/indra/newview/skins/default/xui/ru/notifications.xml
+++ b/indra/newview/skins/default/xui/ru/notifications.xml
@@ -1909,6 +1909,12 @@ http://secondlife.com/download.
 		Выйти из программы?
 		<usetemplate ignoretext="Подтверждать перед выходом" name="okcancelignore" notext="Не выходить" yestext="Выйти"/>
 	</notification>
+	<notification name="ConfirmRestoreToybox">
+		Вы действительно хотите восстановить принятые по умолчанию кнопки и панели инструментов? 
+    
+Это действие нельзя отменить.
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
 	<notification name="DeleteItems">
 		[QUESTION]
 		<usetemplate ignoretext="Подтверждать перед удалением предметов" name="okcancelignore" notext="Отмена" yestext="OK"/>
@@ -2995,10 +3001,6 @@ http://secondlife.com/download.
 			<button name="cancel" text="Отмена"/>
 		</form>
 	</notification>
-	<notification label="" name="ModeChange">
-		Для смены режима требуется выйти из программы и перезапустить ее.
-		<usetemplate name="okcancelbuttons" notext="Не выходить" yestext="Выйти"/>
-	</notification>
 	<notification label="" name="NoClassifieds">
 		Создание и редактирование рекламы доступно только в расширенном режиме. Выйти из программы и сменить режим? Меню смены режима находится на экране входа.
 		<usetemplate name="okcancelbuttons" notext="Не выходить" yestext="Выйти"/>
@@ -3043,6 +3045,10 @@ http://secondlife.com/download.
 		Поиск доступен только в расширенном режиме. Выйти из программы и сменить режим?
 		<usetemplate name="okcancelbuttons" notext="Не выходить" yestext="Выход"/>
 	</notification>
+	<notification label="" name="ConfirmHideUI">
+		Это действие приведет к скрытию всех меню и кнопок. Чтобы вернуть их, щелкните [SHORTCUT] снова.
+		<usetemplate ignoretext="Подтверждать перед скрытием интерфейса" name="okcancelignore" notext="Отмена" yestext="OK"/>
+	</notification>
 	<global name="UnsupportedGLRequirements">
 		По-видимому, ваше оборудование не удовлетворяет требованиям [APP_NAME]. Для работы [APP_NAME] необходима графическая карта OpenGL с поддержкой мультитекстур. Если у вас есть такая карта, убедитесь, что установлены новейшие версии драйверов для нее и пакеты обновлений и исправления для операционной системы.
 
diff --git a/indra/newview/skins/default/xui/ru/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/ru/panel_chiclet_bar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f203ecde4bbbf678349f741a4165202e238d6331
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_chiclet_bar.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="chiclet_bar">
+	<layout_stack name="toolbar_stack">
+		<layout_panel name="im_well_panel">
+			<chiclet_im_well name="im_well">
+				<button name="Unread IM messages" tool_tip="Разговоры"/>
+			</chiclet_im_well>
+		</layout_panel>
+		<layout_panel name="notification_well_panel">
+			<chiclet_notification name="notification_well">
+				<button name="Unread" tool_tip="Уведомления"/>
+			</chiclet_notification>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_me.xml b/indra/newview/skins/default/xui/ru/panel_me.xml
index b37627b4d95327b468526621bcb35d338f50196d..21a125af8762868339bb910e5b34da35bf9b36a5 100644
--- a/indra/newview/skins/default/xui/ru/panel_me.xml
+++ b/indra/newview/skins/default/xui/ru/panel_me.xml
@@ -1,7 +1,4 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Мой профиль" name="panel_me">
-	<tab_container name="tabs">
-		<panel label="МОЙ ПРОФИЛЬ" name="panel_profile"/>
-		<panel label="МОЯ ПОДБОРКА" name="panel_picks"/>
-	</tab_container>
+	<panel label="МОЯ ПОДБОРКА" name="panel_picks"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_navigation_bar.xml b/indra/newview/skins/default/xui/ru/panel_navigation_bar.xml
index 3bda315261314337198120cdbb79ae707d7ccc54..d9890acff21f6eade33a5e9519c25b2587b19ec8 100644
--- a/indra/newview/skins/default/xui/ru/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/ru/panel_navigation_bar.xml
@@ -1,18 +1,23 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="navigation_bar">
-	<panel name="navigation_panel">
-		<pull_button name="back_btn" tool_tip="Вернуться в предыдущее место"/>
-		<pull_button name="forward_btn" tool_tip="Перейти в следующее место"/>
-		<button name="home_btn" tool_tip="Телепортироваться домой"/>
-		<location_input label="Место" name="location_combo"/>
-		<search_combo_box label="Поиск" name="search_combo_box" tool_tip="Поиск">
-			<combo_editor label="Поиск [SECOND_LIFE]" name="search_combo_editor"/>
-		</search_combo_box>
-	</panel>
-	<favorites_bar name="favorite" tool_tip="Перетаскивайте сюда закладки, чтобы было удобнее переходить в любимые места в Second Life!">
-		<label name="favorites_bar_label" tool_tip="Перетаскивайте сюда закладки, чтобы было удобнее переходить в любимые места в Second Life!">
-			Панель «Избранное»
-		</label>
-		<chevron_button name="&gt;&gt;" tool_tip="Показать больше избранного"/>
-	</favorites_bar>
+	<layout_stack name="nvp_stack">
+		<layout_panel name="navigation_layout_panel">
+			<panel name="navigation_panel">
+				<pull_button name="back_btn" tool_tip="Вернуться в предыдущее место"/>
+				<pull_button name="forward_btn" tool_tip="Перейти в следующее место"/>
+				<button name="home_btn" tool_tip="Телепортация домой"/>
+				<location_input label="Место" name="location_combo"/>
+			</panel>
+		</layout_panel>
+		<layout_panel name="favorites_layout_panel">
+			<favorites_bar name="favorite" tool_tip="Перетаскивайте сюда закладки, чтобы было удобнее переходить в любимые места в Second Life!">
+				<label name="favorites_bar_label" tool_tip="Перетаскивайте сюда закладки, чтобы было удобнее переходить в любимые места в Second Life!">
+					Панель «Избранное»
+				</label>
+				<more_button name="&gt;&gt;" tool_tip="Показать больше избранного">
+					Больше ▼
+				</more_button>
+			</favorites_bar>
+		</layout_panel>
+	</layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_nearby_chat.xml b/indra/newview/skins/default/xui/ru/panel_nearby_chat.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a371040b74aca7799c5defc49519078d5dd64a29
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_nearby_chat.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="nearby_chat">
+	<check_box label="Перевод чата (технология Google)" name="translate_chat_checkbox"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_chat.xml b/indra/newview/skins/default/xui/ru/panel_preferences_chat.xml
index bc9e9a24ba2ab24272d7a7f94ae11a4effa4cf2b..5e4130667ffe7442714c128f6bf0d709bcf781eb 100644
--- a/indra/newview/skins/default/xui/ru/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/ru/panel_preferences_chat.xml
@@ -50,7 +50,7 @@
 		<combo_box.item label="Русский" name="Russian"/>
 		<combo_box.item label="Türkçe" name="Turkish"/>
 		<combo_box.item label="Українська" name="Ukrainian"/>
-		<combo_box.item label="中文 (简体) (Chinese)" name="Chinese"/>
+		<combo_box.item label="中文 (简体) (китайский)" name="Chinese"/>
 		<combo_box.item label="日本語 (Japanese)" name="Japanese"/>
 		<combo_box.item label="한국어 (Korean)" name="Korean"/>
 	</combo_box>
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_general.xml b/indra/newview/skins/default/xui/ru/panel_preferences_general.xml
index 28d08d77020ac3b4116e68c4b7501c5a9bd5018a..770c47b3d43e89da62e25df65c6338148ce1b916 100644
--- a/indra/newview/skins/default/xui/ru/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/ru/panel_preferences_general.xml
@@ -5,16 +5,18 @@
 	</text>
 	<combo_box name="language_combobox">
 		<combo_box.item label="Стандартная настройка системы" name="System Default Language"/>
-		<combo_box.item label="Английский" name="English"/>
+		<combo_box.item label="English - Английский" name="English"/>
 		<combo_box.item label="Dansk – датский (бета-версия)" name="Danish"/>
 		<combo_box.item label="Deutsch – немецкий (бета-версия)" name="Deutsch(German)"/>
 		<combo_box.item label="Español – испанский (бета-версия)" name="Spanish"/>
 		<combo_box.item label="Français – французский (бета-версия)" name="French"/>
 		<combo_box.item label="Italiano – итальянский (бета-версия)" name="Italian"/>
-		<combo_box.item label="Nederlands – нидерландский (бета-версия)" name="Dutch"/>
 		<combo_box.item label="Polski – польский (бета-версия)" name="Polish"/>
 		<combo_box.item label="Português – португальский (бета-версия)" name="Portugese"/>
+		<combo_box.item label="Русский (бета-версия)" name="Russian"/>
+		<combo_box.item label="Türkçe - турецкий (бета-версия)" name="Turkish"/>
 		<combo_box.item label="日本語 – японский (бета-версия)" name="(Japanese)"/>
+		<combo_box.item label="正體中文 - китайский, традиционное письмо (бета-версия)" name="Traditional Chinese"/>
 	</combo_box>
 	<text name="language_textbox2">
 		(Требуется перезапуск)
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_move.xml b/indra/newview/skins/default/xui/ru/panel_preferences_move.xml
index 331776902f42272f3edf3b5ab1840a551a3f3b10..8b3542a6d26a38278781b8c4043d7887ec973f03 100644
--- a/indra/newview/skins/default/xui/ru/panel_preferences_move.xml
+++ b/indra/newview/skins/default/xui/ru/panel_preferences_move.xml
@@ -7,18 +7,33 @@
 	</text>
 	<check_box label="Создания/редактирование" name="edit_camera_movement" tool_tip="Производить автоматическое позиционирование камеры при входе в режим редактирования и выходе из него"/>
 	<check_box label="Внешность" name="appearance_camera_movement" tool_tip="Производить автоматическое позиционирование камеры в режиме изменения внешности"/>
-	<check_box initial_value="истина" label="Боковая панель" name="appearance_sidebar_positioning" tool_tip="Производить автоматическое позиционирование камеры для боковой панели"/>
+	<text name="keyboard_lbl">
+		Клавиатура:
+	</text>
+	<check_box label="Клавиши стрелок всегда перемещают меня" name="arrow_keys_move_avatar_check"/>
+	<check_box label="Бег после двойного нажатия клавиши" name="tap_tap_hold_to_run"/>
+	<text name="mouse_lbl">
+		Мышь:
+	</text>
 	<check_box label="Показывать меня при обзоре мышью" name="first_person_avatar_visible"/>
 	<text name=" Mouse Sensitivity">
 		Чувствительность мыши:
 	</text>
 	<check_box label="Инвертировать" name="invert_mouse"/>
-	<check_box label="Клавиши стрелок всегда перемещают меня" name="arrow_keys_move_avatar_check"/>
-	<check_box label="Бег после двойного нажатия клавиши" name="tap_tap_hold_to_run"/>
-	<check_box label="Двойной щелчок для:" name="double_click_chkbox"/>
-	<radio_group name="double_click_action">
-		<radio_item label="Телепорт" name="radio_teleport"/>
-		<radio_item label="Автопилот" name="radio_autopilot"/>
-	</radio_group>
+	<text name="single_click_action_lbl">
+		Один щелчок на земле:
+	</text>
+	<combo_box name="single_click_action_combo">
+		<combo_box.item label="Без действия" name="0"/>
+		<combo_box.item label="Перемещение в точку щелчка" name="1"/>
+	</combo_box>
+	<text name="double_click_action_lbl">
+		Двойной щелчок на земле:
+	</text>
+	<combo_box name="double_click_action_combo">
+		<combo_box.item label="Без действия" name="0"/>
+		<combo_box.item label="Перемещение в точку щелчка" name="1"/>
+		<combo_box.item label="Телепортация в точку щелчка" name="2"/>
+	</combo_box>
 	<button label="Другие устройства" name="joystick_setup_button"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_status_bar.xml b/indra/newview/skins/default/xui/ru/panel_status_bar.xml
index ddf63d69c2fb3cc3015d0e5ce0eb05f5e00c822c..6822244196629c5cbd19839e6345f78b08af82b8 100644
--- a/indra/newview/skins/default/xui/ru/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/ru/panel_status_bar.xml
@@ -17,12 +17,9 @@
 	</panel.string>
 	<panel name="balance_bg">
 		<text name="balance" tool_tip="Щелкните для обновления вашего баланса L$" value="L$20"/>
-		<button label="КУПИТЬ L$" name="buyL" tool_tip="Щелкните для покупки L$"/>
+		<button label="Купить L$" name="buyL" tool_tip="Щелкните для покупки L$"/>
+		<button label="Торговый центр" name="goShop" tool_tip="Открыть торговый центр Second Life"/>
 	</panel>
-	<combo_box name="mode_combo" tool_tip="Выберите режим. Основной – для быстрого и простого ознакомления с игрой, а также общения. Расширенный – для доступа к более широким возможностям.">
-		<combo_box.item label="Основной режим" name="Basic"/>
-		<combo_box.item label="Расширенный режим" name="Advanced"/>
-	</combo_box>
 	<text name="TimeText" tool_tip="Текущее время (тихоокеанское)">
 		00:00 (тихоокеанское время)
 	</text>
diff --git a/indra/newview/skins/default/xui/ru/strings.xml b/indra/newview/skins/default/xui/ru/strings.xml
index 44440ea5421a977f7b54863f054f9d7b4cfbbe41..0134298166802fb8456a94e24f57efdfc03fed70 100644
--- a/indra/newview/skins/default/xui/ru/strings.xml
+++ b/indra/newview/skins/default/xui/ru/strings.xml
@@ -1273,6 +1273,9 @@ support@secondlife.com.
 	<string name="Marketplace Error Internal Import">
 		Ошибка. Эта вещь создает проблему.  Повторите попытку позже.
 	</string>
+	<string name="Open landmarks">
+		Открыть закладки
+	</string>
 	<string name="no_transfer" value="(не передается)"/>
 	<string name="no_modify" value="(не изменяется)"/>
 	<string name="no_copy" value="(не копируется)"/>
@@ -4248,8 +4251,8 @@ support@secondlife.com.
 	<string name="Female - Wow">
 		Женщина – ух ты!
 	</string>
-	<string name="/bow1">
-		/поклон1
+	<string name="/bow">
+		/поклон
 	</string>
 	<string name="/clap">
 		/хлопнуть
@@ -4772,4 +4775,172 @@ support@secondlife.com.
 	<string name="ParticleHiding">
 		Частицы скрыты
 	</string>
+	<string name="Command_AboutLand_Label">
+		О земле
+	</string>
+	<string name="Command_Appearance_Label">
+		Внешность
+	</string>
+	<string name="Command_Avatar_Label">
+		Аватар
+	</string>
+	<string name="Command_Build_Label">
+		Строительство
+	</string>
+	<string name="Command_Chat_Label">
+		Чат
+	</string>
+	<string name="Command_Compass_Label">
+		Компас
+	</string>
+	<string name="Command_Destinations_Label">
+		Места
+	</string>
+	<string name="Command_Gestures_Label">
+		Жесты
+	</string>
+	<string name="Command_HowTo_Label">
+		Инструкции
+	</string>
+	<string name="Command_Inventory_Label">
+		Инвентарь
+	</string>
+	<string name="Command_Map_Label">
+		Карта
+	</string>
+	<string name="Command_Marketplace_Label">
+		Торговый центр
+	</string>
+	<string name="Command_MiniMap_Label">
+		Миникарта
+	</string>
+	<string name="Command_Move_Label">
+		Переместить
+	</string>
+	<string name="Command_People_Label">
+		Люди
+	</string>
+	<string name="Command_Picks_Label">
+		Подборка
+	</string>
+	<string name="Command_Places_Label">
+		Места
+	</string>
+	<string name="Command_Preferences_Label">
+		Настройки
+	</string>
+	<string name="Command_Profile_Label">
+		Профиль
+	</string>
+	<string name="Command_Search_Label">
+		Поиск
+	</string>
+	<string name="Command_Snapshot_Label">
+		Снимок
+	</string>
+	<string name="Command_Speak_Label">
+		Говорить
+	</string>
+	<string name="Command_View_Label">
+		Вид
+	</string>
+	<string name="Command_Voice_Label">
+		Голоса собеседников
+	</string>
+	<string name="Command_AboutLand_Tooltip">
+		Информация о посещаемой вами земле
+	</string>
+	<string name="Command_Appearance_Tooltip">
+		Сменить аватар
+	</string>
+	<string name="Command_Avatar_Tooltip">
+		Выберите весь аватар
+	</string>
+	<string name="Command_Build_Tooltip">
+		Построение объектов и формирование ландшафта
+	</string>
+	<string name="Command_Chat_Tooltip">
+		Обменивайтесь текстовыми репликами с людьми вокруг вас
+	</string>
+	<string name="Command_Compass_Tooltip">
+		Компас
+	</string>
+	<string name="Command_Destinations_Tooltip">
+		Интересные места
+	</string>
+	<string name="Command_Gestures_Tooltip">
+		Жесты для аватара
+	</string>
+	<string name="Command_HowTo_Tooltip">
+		Выполнение типичных задач
+	</string>
+	<string name="Command_Inventory_Tooltip">
+		Просмотр и использование вашего имущества
+	</string>
+	<string name="Command_Map_Tooltip">
+		Карта мира
+	</string>
+	<string name="Command_Marketplace_Tooltip">
+		Покупки
+	</string>
+	<string name="Command_MiniMap_Tooltip">
+		Показать людей поблизости
+	</string>
+	<string name="Command_Move_Tooltip">
+		Перемещение аватара
+	</string>
+	<string name="Command_People_Tooltip">
+		Друзья, группы и люди поблизости
+	</string>
+	<string name="Command_Picks_Tooltip">
+		Места, которые будут показаны в вашем профиле как избранное
+	</string>
+	<string name="Command_Places_Tooltip">
+		Сохраненные вами места
+	</string>
+	<string name="Command_Preferences_Tooltip">
+		Настройки
+	</string>
+	<string name="Command_Profile_Tooltip">
+		Редактирование или просмотр вашего профиля
+	</string>
+	<string name="Command_Search_Tooltip">
+		Поиск мест, событий, людей
+	</string>
+	<string name="Command_Snapshot_Tooltip">
+		Сделать снимок
+	</string>
+	<string name="Command_Speak_Tooltip">
+		Говорите с людьми вокруг вас с помощью микрофона
+	</string>
+	<string name="Command_View_Tooltip">
+		Изменение угла камеры
+	</string>
+	<string name="Command_Voice_Tooltip">
+		Люди около вас с оспособностью говорить
+	</string>
+	<string name="Retain%">
+		Остаток%
+	</string>
+	<string name="Detail">
+		Детализация
+	</string>
+	<string name="Better Detail">
+		Более детально
+	</string>
+	<string name="Surface">
+		Поверхность
+	</string>
+	<string name="Solid">
+		Сплошной
+	</string>
+	<string name="Wrap">
+		Оболочка
+	</string>
+	<string name="Preview">
+		Предварительный просмотр
+	</string>
+	<string name="Normal">
+		Нормальный
+	</string>
 </strings>
diff --git a/indra/newview/skins/default/xui/tr/floater_about.xml b/indra/newview/skins/default/xui/tr/floater_about.xml
index 2fdbafdfb4dabf0e63a168eacaa21d7b68ddf342..998890b85c89da1d6a0e243d40af62a502164657 100644
--- a/indra/newview/skins/default/xui/tr/floater_about.xml
+++ b/indra/newview/skins/default/xui/tr/floater_about.xml
@@ -10,7 +10,7 @@
 	<floater.string name="AboutPosition">
 		&lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt; ([HOSTIP]) üzerinde bulunan [REGION] içerisinde [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] konumundasınız
 [SERVER_VERSION]
-[[SERVER_RELEASE_NOTES_URL] [Sürüm Notları]]
+[SERVER_RELEASE_NOTES_URL]
 	</floater.string>
 	<floater.string name="AboutSystem">
 		CPU: [CPU]
@@ -37,6 +37,9 @@ Ses Sunucusu Sürümü: [VOICE_VERSION]
 	<floater.string name="AboutTraffic">
 		Kaybolan Paketler: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%)
 	</floater.string>
+	<floater.string name="ErrorFetchingServerReleaseNotesURL">
+		Sunucu sürümü notları URL&apos;si alınırken hata oluştu.
+	</floater.string>
 	<tab_container name="about_tab">
 		<panel label="Bilgi" name="support_panel">
 			<button label="Panoya Kopyala" name="copy_btn"/>
diff --git a/indra/newview/skins/default/xui/tr/floater_about_land.xml b/indra/newview/skins/default/xui/tr/floater_about_land.xml
index 6256f954b259aa3c282085fe15581e8f95995dba..c44722f4baa0b81d2390c207d91120806cdc7115 100644
--- a/indra/newview/skins/default/xui/tr/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/tr/floater_about_land.xml
@@ -212,19 +212,19 @@
 				Bölge Nesne Bonusu Faktörü: [BONUS]
 			</text>
 			<text name="Simulator primitive usage:">
-				İlkel Kullanım:
+				Bölge kapasitesi:
 			</text>
 			<text name="objects_available">
 				[COUNT] / [MAX] ([AVAILABLE]) uygun
 			</text>
 			<text name="Primitives parcel supports:">
-				Prim parsel desteÄŸi:
+				Parsel arazi kapasitesi:
 			</text>
 			<text name="object_contrib_text">
 				[COUNT]
 			</text>
 			<text name="Primitives on parcel:">
-				Parseldeki prims:
+				Parsel arazi etkisi:
 			</text>
 			<text name="total_objects_text">
 				[COUNT]
diff --git a/indra/newview/skins/default/xui/tr/floater_avatar.xml b/indra/newview/skins/default/xui/tr/floater_avatar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..fc9e3c8a9b5c272c2d5336005c5a8fa9bdf5301f
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_avatar.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Avatar" title="AVATAR SEÇİCİ"/>
diff --git a/indra/newview/skins/default/xui/tr/floater_camera.xml b/indra/newview/skins/default/xui/tr/floater_camera.xml
index 066b7cc9333ba39061e07d74e7b27902267d3dbe..33b4338e2191d5fc529b7370525c4fd39698b6d3 100644
--- a/indra/newview/skins/default/xui/tr/floater_camera.xml
+++ b/indra/newview/skins/default/xui/tr/floater_camera.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="camera_floater">
+<floater name="camera_floater" title="GÖSTER">
 	<floater.string name="rotate_tooltip">
 		Odak Etrafında Kamerayı Döndür
 	</floater.string>
diff --git a/indra/newview/skins/default/xui/tr/floater_chat_bar.xml b/indra/newview/skins/default/xui/tr/floater_chat_bar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d2385e6be39ca6cf7b894b3f5400e020b628f7cd
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_chat_bar.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="chat_bar" title="YAKINDAKİ SOHBET">
+	<panel>
+		<line_editor label="Sohbet etmek için buraya tıklayın." name="chat_box" tool_tip="Söylemek için Enter, bağırmak için Ctrl+Enter yapın"/>
+		<button name="show_nearby_chat" tool_tip="yakın sohbet günlüğünü gösterir/gizler"/>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_destinations.xml b/indra/newview/skins/default/xui/tr/floater_destinations.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4504366d6376cac78f9c7d8b26cc1dde1468de13
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_destinations.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Destinations" title="HEDEF KONUMLAR"/>
diff --git a/indra/newview/skins/default/xui/tr/floater_fast_timers.xml b/indra/newview/skins/default/xui/tr/floater_fast_timers.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5736bda45eb66ff50d5d3bc150f6193e23ace531
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_fast_timers.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="fast_timers">
+	<string name="pause">
+		Duraklat
+	</string>
+	<string name="run">
+		KoÅŸ
+	</string>
+	<button label="Duraklat" name="pause_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_how_to.xml b/indra/newview/skins/default/xui/tr/floater_how_to.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a42fe0b1221080c63dbd045dcd812a475aa38229
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_how_to.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_how_to" title="NASIL YAPILIR"/>
diff --git a/indra/newview/skins/default/xui/tr/floater_map.xml b/indra/newview/skins/default/xui/tr/floater_map.xml
index 36ec097cc431289557924ecde189833cc69ffaae..7d6c314f04a10d104a49773a42569779b4b81738 100644
--- a/indra/newview/skins/default/xui/tr/floater_map.xml
+++ b/indra/newview/skins/default/xui/tr/floater_map.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Map" title="">
+<floater name="Map" title="MİNİ-HARİTA">
 	<floater.string name="ToolTipMsg">
 		[REGION](Haritayı açmak için çift tıkla, yatay hareket için shift çek)
 	</floater.string>
@@ -7,7 +7,7 @@
 		[REGION](Işınlamak için çift tıkla, yatay hareket için shift çek)
 	</floater.string>
 	<floater.string name="mini_map_caption">
-		MİNİHARİTA
+		Mini-harita
 	</floater.string>
 	<text label="K" name="floater_map_north">
 		K
diff --git a/indra/newview/skins/default/xui/tr/floater_model_preview.xml b/indra/newview/skins/default/xui/tr/floater_model_preview.xml
index 7388d236eda904dce0d3b95a000649dc6f96958b..339545f96e994cd5730a20fdbca58b627a596c3d 100644
--- a/indra/newview/skins/default/xui/tr/floater_model_preview.xml
+++ b/indra/newview/skins/default/xui/tr/floater_model_preview.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Model Preview" title="Modeli Karşıya Yükle">
-	<string name="status_idle">
-		BoÅŸta
-	</string>
+<floater name="Model Preview" title="MODELİ KARŞIYA YÜKLE">
+	<string name="status_idle"/>
 	<string name="status_parse_error">
-		Dae ayrıştırma sorunu - ayrıntılar için günlüğe bakın.
+		Hata: Tarih ayrıştırma sorunu - ayrıntılar için günlüğe bakın.
 	</string>
 	<string name="status_reading_file">
 		Yükleniyor...
@@ -51,6 +49,9 @@
 	<string name="mesh_status_missing_lod">
 		Gereken ayrıntı seviyesi eksik.
 	</string>
+	<string name="mesh_status_invalid_material_list">
+		Ayrıntı seviyesi malzemeleri, referans modelin bir alt kümesi değil.
+	</string>
 	<string name="layer_all">
 		Tümü
 	</string>
@@ -63,188 +64,211 @@
 	<string name="tbd">
 		ileride belirlenecektir
 	</string>
-	<text name="name_label">
-		Ad:
-	</text>
-	<text name="lod_label">
-		Önizleme:
-	</text>
-	<combo_box name="preview_lod_combo" tool_tip="Önizleme işlemesinde görülecek ayrıntı seviyesi">
-		<combo_item name="high">
-			Ayrıntı Seviyesi: Yüksek
-		</combo_item>
-		<combo_item name="medium">
-			Ayrıntı Seviyesi: Orta
-		</combo_item>
-		<combo_item name="low">
-			Ayrıntı Seviyesi: Düşük
-		</combo_item>
-		<combo_item name="lowest">
-			Ayrıntı Seviyesi: En Düşük
-		</combo_item>
-	</combo_box>
-	<text name="warning_title">
-		UYARI:
-	</text>
-	<text name="warning_message">
-		Bu modelin Second Life sunucularına nihai karşıya yüklemesini tamamlayamayacaksınız. Örgü modellerinin karşıya yüklenmesi için etkinleştirmenin [[VURL] nasıl yapılacağını öğrenin].
-	</text>
-	<text name="weights_text">
-		Karşıdan Yükle:
-Fizik:
-Sunucu:
-
-Prim eÅŸdeÄŸerleri:
-	</text>
-	<text name="weights">
-		[ST]
-[PH]
-[SIM]
-
-[EQ]
-	</text>
-	<tab_container name="import_tab">
-		<panel label="Ayrıntı Seviyesi" name="lod_panel">
-			<text name="lod_table_header">
-				Ayrıntı Seviyesini Seç:
-			</text>
-			<text name="high_label" value="Yüksek"/>
-			<text name="high_triangles" value="0"/>
-			<text name="high_vertices" value="0"/>
-			<text name="medium_label" value="Orta"/>
-			<text name="medium_triangles" value="0"/>
-			<text name="medium_vertices" value="0"/>
-			<text name="low_label" value="Düşük"/>
-			<text name="low_triangles" value="0"/>
-			<text name="low_vertices" value="0"/>
-			<text name="lowest_label" value="En Düşük"/>
-			<text name="lowest_triangles" value="0"/>
-			<text name="lowest_vertices" value="0"/>
-			<text name="lod_table_footer">
-				Ayrıntı Seviyesi: [DETAIL]
-			</text>
-			<radio_group name="lod_file_or_limit" value="lod_from_file">
-				<radio_item label="Dosyadan yükle" name="lod_from_file"/>
-				<radio_item label="Otomatik oluÅŸtur" name="lod_auto_generate"/>
-				<radio_item label="Hiçbiri" name="lod_none"/>
-			</radio_group>
-			<button label="Gözat..." name="lod_browse"/>
-			<combo_box name="lod_mode">
-				<combo_item name="triangle_limit">
-					Üçgen Limiti
-				</combo_item>
-				<combo_item name="error_threshold">
-					Hata EÅŸiÄŸi
-				</combo_item>
-			</combo_box>
-			<text name="build_operator_text">
-				İnşa İşleci:
+	<panel name="left_panel">
+		<panel name="model_name_representation_panel">
+			<text name="name_label">
+				Model adı:
 			</text>
-			<text name="queue_mode_text">
-				Kuyruk Modu:
+			<text name="model_category_label">
+				Bu modelin temsil ettiÄŸi...
 			</text>
-			<combo_box name="build_operator">
-				<combo_item name="edge_collapse">
-					Kenar Bütünleştirme
-				</combo_item>
-				<combo_item name="half_edge_collapse">
-					Yarım Kenar Bütünleştirme
-				</combo_item>
-			</combo_box>
-			<combo_box name="queue_mode">
-				<combo_item name="greedy">
-					Açgözlü
-				</combo_item>
-				<combo_item name="lazy">
-					Tembel
-				</combo_item>
-				<combo_item name="independent">
-					Bağımsız
-				</combo_item>
+			<combo_box name="model_category_combo">
+				<combo_item label="Birini Seçin..." name="Choose one"/>
+				<combo_item label="Avatar ÅŸekli" name="Avatar shape"/>
+				<combo_item label="Avatar aksesuarı" name="Avatar attachment"/>
+				<combo_item label="Hareket eden nesne (araç, hayvan)" name="Moving object (vehicle, animal)"/>
+				<combo_item label="Bina BileÅŸeni" name="Building Component"/>
+				<combo_item label="Büyük, hareketsiz, vs." name="Large, non moving etc"/>
+				<combo_item label="Daha küçük, hareketsiz, vs." name="Smaller, non-moving etc"/>
+				<combo_item label="Bunlardan herhangi biri deÄŸil" name="Not really any of these"/>
 			</combo_box>
-			<text name="border_mode_text">
-				Sınır Modu:
-			</text>
-			<text name="share_tolderance_text">
-				Paylaşma Toleransı:
-			</text>
-			<combo_box name="border_mode">
-				<combo_item name="border_unlock">
-					Kilidi Kaldır
-				</combo_item>
-				<combo_item name="border_lock">
-					Kilitle
-				</combo_item>
-			</combo_box>
-			<text name="crease_label">
-				Kıvrım Açısı:
-			</text>
-			<spinner name="crease_angle" value="75"/>
 		</panel>
-		<panel label="Fizik" name="physics_panel">
-			<panel name="physics geometry">
-				<radio_group name="physics_load_radio" value="physics_load_from_file">
-					<radio_item label="Dosya:" name="physics_load_from_file"/>
-					<radio_item label="Ayrıntı Seviyesini Kullan:" name="physics_use_lod"/>
-				</radio_group>
-				<combo_box name="physics_lod_combo" tool_tip="Fizik şekli için kullanılacak ayrıntı seviyesi">
-					<combo_item name="physics_lowest">
-						En Düşük
-					</combo_item>
-					<combo_item name="physics_low">
-						Düşük
-					</combo_item>
-					<combo_item name="physics_medium">
-						Orta
-					</combo_item>
-					<combo_item name="physics_high">
-						Yüksek
-					</combo_item>
-				</combo_box>
-				<button label="Gözat..." name="physics_browse"/>
+		<tab_container name="import_tab">
+			<panel label="Ayrıntı Seviyesi" name="lod_panel" title="Ayrıntı Seviyesi">
+				<text initial_value="Kaynak" name="source" value="Kaynak"/>
+				<text initial_value="Üçgenler" name="triangles" value="Üçgenler"/>
+				<text initial_value="Köşeler" name="vertices" value="Köşeler"/>
+				<text initial_value="Yüksek" name="high_label" value="Yüksek"/>
+				<button label="Gözat..." name="lod_browse_high"/>
+				<text initial_value="0" name="high_triangles" value="0"/>
+				<text initial_value="0" name="high_vertices" value="0"/>
+				<text initial_value="Orta" name="medium_label" value="Orta"/>
+				<button label="Gözat..." name="lod_browse_medium"/>
+				<text initial_value="0" name="medium_triangles" value="0"/>
+				<text initial_value="0" name="medium_vertices" value="0"/>
+				<text initial_value="Düşük" name="low_label" value="Düşük"/>
+				<button label="Gözat..." name="lod_browse_low"/>
+				<text initial_value="0" name="low_triangles" value="0"/>
+				<text initial_value="0" name="low_vertices" value="0"/>
+				<text initial_value="En Düşük" name="lowest_label" value="En Düşük"/>
+				<button label="Gözat..." name="lod_browse_lowest"/>
+				<text initial_value="0" name="lowest_triangles" value="0"/>
+				<text initial_value="0" name="lowest_vertices" value="0"/>
+				<check_box label="Normalleri OluÅŸtur" name="gen_normals"/>
+				<text initial_value="Kıvrım Açısı:" name="crease_label" value="Kıvrım Açısı:"/>
+				<spinner name="crease_angle" value="75"/>
 			</panel>
-			<panel name="physics analysis">
-				<slider label="Düzeltme:" name="Smooth"/>
-				<check_box label="Delikleri Kapa (yavaÅŸ)" name="Close Holes (Slow)"/>
-				<button label="Çözümle" name="Decompose"/>
-				<button label="İptal" name="decompose_cancel"/>
+			<panel label="Fizik" name="physics_panel">
+				<panel name="physics geometry">
+					<text name="first_step_name">
+						1. Adım: Ayrıntı Seviyesi
+					</text>
+					<combo_box name="physics_lod_combo" tool_tip="Fizik şekli için kullanılacak ayrıntı">
+						<combo_item name="choose_one">
+							Birini seçin...
+						</combo_item>
+						<combo_item name="physics_high">
+							Yüksek
+						</combo_item>
+						<combo_item name="physics_medium">
+							Orta
+						</combo_item>
+						<combo_item name="physics_low">
+							Düşük
+						</combo_item>
+						<combo_item name="physics_lowest">
+							En Düşük
+						</combo_item>
+						<combo_item name="load_from_file">
+							Dosyadan
+						</combo_item>
+					</combo_box>
+					<button label="Gözat..." name="physics_browse"/>
+				</panel>
+				<panel name="physics analysis">
+					<text name="method_label">
+						2. Adım: Çözümle
+					</text>
+					<text name="analysis_method_label">
+						Yöntem:
+					</text>
+					<text name="quality_label">
+						Kalite:
+					</text>
+					<text name="smooth_method_label">
+						Düzeltme:
+					</text>
+					<check_box label="Delikleri Kapat" name="Close Holes (Slow)"/>
+					<button label="Çözümle" name="Decompose"/>
+					<button label="İptal" name="decompose_cancel"/>
+				</panel>
+				<panel name="physics simplification">
+					<text name="second_step_label">
+						3. Adım: Basitleştir
+					</text>
+					<text name="simp_method_header">
+						Yöntem:
+					</text>
+					<text name="pass_method_header">
+						Geçişler:
+					</text>
+					<text name="Detail Scale label">
+						Ayrıntı ölçeği:
+					</text>
+					<text name="Retain%_label">
+						Koru:
+					</text>
+					<combo_box name="Combine Quality" value="1"/>
+					<button label="BasitleÅŸtir" name="Simplify"/>
+					<button label="İptal" name="simplify_cancel"/>
+				</panel>
+				<panel name="physics info">
+					<text name="results_text">
+						Sonuçlar:
+					</text>
+					<text name="physics_triangles">
+						Üçgenler: [TRIANGLES],
+					</text>
+					<text name="physics_points">
+						Köşeler: [POINTS],
+					</text>
+					<text name="physics_hulls">
+						Gövdeler: [HULLS]
+					</text>
+				</panel>
 			</panel>
-			<panel name="physics simplification">
-				<slider label="Geçişler:" name="Combine Quality"/>
-				<slider label="Ayrıntı Ölçeği:" name="Detail Scale"/>
-				<slider label="Koru:" name="Retain%"/>
-				<button label="BasitleÅŸtir" name="Simplify"/>
-				<button label="İptal" name="simplify_cancel"/>
-			</panel>
-			<panel name="physics info">
-				<slider label="Önizleme Yayılımı:" name="physics_explode"/>
-				<text name="physics_triangles">
-					Üçgenler: [TRIANGLES]
+			<panel label="Karşıya yükleme seçenekleri" name="modifiers_panel">
+				<text name="scale_label">
+					Ölçek (1=ölçekleme yok):
+				</text>
+				<spinner name="import_scale" value="1.0"/>
+				<text name="dimensions_label">
+					Boyutlar:
 				</text>
-				<text name="physics_points">
-					Köşeler: [POINTS]
+				<text name="import_dimensions">
+					[X] X [Y] X [Z]
 				</text>
-				<text name="physics_hulls">
-					Gövdeler: [HULLS]
+				<check_box label="Dokuları dahil et" name="upload_textures"/>
+				<text name="include_label">
+					Sadece avatar modelleri için:
 				</text>
+				<check_box label="Dış katman ağırlığını dahil et" name="upload_skin"/>
+				<check_box label="Eklem konumlarını dahil et" name="upload_joints"/>
+				<text name="pelvis_offset_label">
+					Z kayması (avatarı kaldırmak veya indirmek için):
+				</text>
+				<spinner name="pelvis_offset" value="0.0"/>
 			</panel>
-		</panel>
-		<panel label="DeÄŸiÅŸtiriciler" name="modifiers_panel">
-			<spinner name="import_scale" value="1.0"/>
-			<text name="import_dimensions">
-				[X] x [Y] x [Z] m
+		</tab_container>
+		<panel name="weights_and_warning_panel">
+			<button label="Ağırlıkları ve ücreti hesapla" name="calculate_btn" tool_tip="Ağırlıkları ve ücreti hesapla"/>
+			<button label="İptal" name="cancel_btn"/>
+			<button label="Karşıya Yükle" name="ok_btn" tool_tip="Simülatöre karşıya yükle"/>
+			<button label="Ayarları temizle ve formu sıfırla" name="reset_btn"/>
+			<text name="upload_fee">
+				Karşıya yükleme ücreti: L$ [FEE]
+			</text>
+			<text name="prim_weight">
+				Arazi etkisi [EQ]
+			</text>
+			<text name="download_weight">
+				Karşıdan Yükle: [ST]
+			</text>
+			<text name="physics_weight">
+				Fizik: [PH]
+			</text>
+			<text name="server_weight">
+				Sunucu: [SIM]
+			</text>
+			<text name="warning_title">
+				NOT:
+			</text>
+			<text name="warning_message">
+				Örgü modellerini karşıya yüklemeye hakkınız yok. Nasıl onaylanacağınızı [[VURL] öğrenin].
+			</text>
+			<text name="status">
+				[STATUS]
 			</text>
-			<check_box label="Dokular" name="upload_textures"/>
-			<check_box label="Dış katman ağırlığı" name="upload_skin"/>
-			<check_box label="Eklem konumları" name="upload_joints"/>
-			<spinner name="pelvis_offset" value="0.0"/>
 		</panel>
-	</tab_container>
-	<text name="upload_fee">
-		Karşıya yükleme ücreti: L$ [FEE]
+	</panel>
+	<text name="lod_label">
+		Önizleme:
 	</text>
-	<button label="Varsayılanlara ayarla" name="reset_btn" tool_tip="Varsayılanlara ayarla"/>
-	<button label="Ağırlıkları ve ücreti hesapla" name="calculate_btn" tool_tip="Ağırlıkları ve ücreti hesapla"/>
-	<button label="Karşıya Yükle" name="ok_btn" tool_tip="Simülatöre karşıya yükle"/>
-	<button label="İptal" name="cancel_btn"/>
+	<panel name="right_panel">
+		<combo_box name="preview_lod_combo" tool_tip="Önizleme işlemesinde görülecek ayrıntı seviyesi">
+			<combo_item name="high">
+				Yüksek
+			</combo_item>
+			<combo_item name="medium">
+				Orta
+			</combo_item>
+			<combo_item name="low">
+				Düşük
+			</combo_item>
+			<combo_item name="lowest">
+				En Düşük
+			</combo_item>
+		</combo_box>
+		<text name="label_display">
+			Ekran...
+		</text>
+		<check_box label="Kenarlar" name="show_edges"/>
+		<check_box label="Fizik" name="show_physics"/>
+		<check_box label="Dokular" name="show_textures"/>
+		<check_box label="Dış katman ağırlıkları" name="show_skin_weight"/>
+		<check_box label="Eklemler" name="show_joint_positions"/>
+		<text name="physics_explode_label">
+			Önizleme Yayılımı:
+		</text>
+	</panel>
 </floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_model_wizard.xml b/indra/newview/skins/default/xui/tr/floater_model_wizard.xml
index a0a67e2defdfb135b1660e1b1080c13cc8edc066..108d20cfac4473b68d7493de1d566a84fdd503a7 100644
--- a/indra/newview/skins/default/xui/tr/floater_model_wizard.xml
+++ b/indra/newview/skins/default/xui/tr/floater_model_wizard.xml
@@ -6,26 +6,20 @@
 	<button label="2. Optimize et" name="optimize_btn"/>
 	<button label="1. Dosya Seç" name="choose_file_btn"/>
 	<panel name="choose_file_panel">
-		<panel name="choose_file_header_panel">
-			<text name="choose_file_header_text">
+		<panel name="header_panel">
+			<text name="header_text">
 				Model dosyasını seçin
 			</text>
 		</panel>
-		<panel name="choose_file_content_panel">
+		<panel name="content">
 			<text name="advanced_users_text">
 				Gelişmiş kullanıcılar: Eğer 3B içerik oluşturma araçlarını kullanmayı biliyorsanız, Gelişmiş Karşıya Yükleyiciyi kullanmak isteyebilirsiniz.
 			</text>
 			<button label="Gelişmişe geç" name="switch_to_advanced"/>
-			<text name="choose_model_file_label">
+			<text name="Cache location">
 				Karşıya yüklenecek model dosyasını seçin
 			</text>
 			<button label="Gözat..." label_selected="Gözat..." name="browse"/>
-			<text name="support_collada_text">
-				Second Life, COLLADA (.dae) dosyalarını destekler
-			</text>
-			<text name="dimensions_label">
-				Boyutlar (metre):
-			</text>
 			<text name="dimensions">
 				X         Y         Z
 			</text>
@@ -38,18 +32,15 @@
 		</panel>
 	</panel>
 	<panel name="optimize_panel">
-		<panel name="optimize_header_panel">
-			<text name="optimize_header_text">
+		<panel name="header_panel">
+			<text name="header_text">
 				Modeli optimize et
 			</text>
 		</panel>
-		<text name="optimize_hint">
+		<text name="description">
 			Modeli performans için optimize ettik. İstiyorsanız daha da ayarlayabilirsiniz.
 		</text>
-		<panel name="optimize_content_panel">
-			<text name="generating_lod_label">
-				Ayrıntı Seviyesi Oluşturuluyor
-			</text>
+		<panel name="content">
 			<text name="high_detail_text">
 				Ayrıntı Seviyesi Oluştur: Yüksek
 			</text>
@@ -64,123 +55,64 @@
 			</text>
 		</panel>
 		<panel name="content2">
-			<text name="optimize_performance_text">
-				Performans
-			</text>
-			<text name="optimize_faster_rendering_text">
-				Daha hızlı işleme
-Daha az ayrıntı
-Daha düşük prim ağırlığı
-			</text>
-			<text name="optimize_accuracy_text">
-				Hassasiyet
-			</text>
-			<text name="optimize_slower_rendering_text">
-				Daha yavaÅŸ iÅŸleme
-Daha çok ayrıntı
-Daha yüksek prim ağırlığı
-			</text>
-			<text name="accuracy_slider_mark1">
-				&apos;
-			</text>
-			<text name="accuracy_slider_mark2">
-				&apos;
-			</text>
-			<text name="accuracy_slider_mark3">
-				&apos;
-			</text>
 			<button label="Geometri hesaplarını tekrar yap" name="recalculate_geometry_btn"/>
-			<text name="geometry_preview_label">
+			<text name="lod_label">
 				Geometri önizleme
 			</text>
 			<combo_box name="preview_lod_combo" tool_tip="Önizleme işlemesinde görülecek ayrıntı seviyesi">
-				<combo_item name="preview_lod_high">
+				<combo_item name="high">
 					Çok ayrıntı
 				</combo_item>
-				<combo_item name="preview_lod_medium">
+				<combo_item name="medium">
 					Orta düzey ayrıntı
 				</combo_item>
-				<combo_item name="preview_lod_low">
+				<combo_item name="low">
 					Az ayrıntı
 				</combo_item>
-				<combo_item name="preview_lod_lowest">
+				<combo_item name="lowest">
 					En az ayrıntı
 				</combo_item>
 			</combo_box>
 		</panel>
 	</panel>
 	<panel name="physics_panel">
-		<panel name="physics_header_panel">
-			<text name="physics_header_text">
+		<panel name="header_panel">
+			<text name="header_text">
 				Fizik ayarlarını yap
 			</text>
 		</panel>
-		<text name="physics_hint">
+		<text name="description">
 			Modelin dış gövdesi için bir şekil oluşturacağız. Modelinizin amacına uygun olarak şeklin ayrıntı seviyesini belirleyin.
 		</text>
-		<panel name="physics_content_panel">
-			<text name="physics_performance_text">
-				Performans
-			</text>
-			<text name="physics_faster_rendering_text">
-				Daha hızlı işleme
-Daha az ayrıntı
-Daha düşük prim ağırlığı
-			</text>
-			<text name="physics_accuracy_text">
-				Hassasiyet
-			</text>
-			<text name="physics_slower_dendering_text">
-				Daha yavaÅŸ iÅŸleme
-Daha çok ayrıntı
-Daha yüksek prim ağırlığı
-			</text>
-			<text name="physics_example_1">
-				Örnekler:
-Hareketli nesneler
-Uçan nesneler
-Araçlar
-			</text>
-			<text name="physics_example_2">
-				Örnekler:
-Küçük statik nesneler
-Daha az ayrıntılı nesneler
-Basit eÅŸyalar
-			</text>
-			<text name="physics_example_3">
-				Örnekler:
-Statik nesneler
-Ayrıntılı nesneler
-Binalar
-			</text>
+		<panel name="content">
 			<button label="Fizik hesaplarını tekrar yap" name="recalculate_physics_btn"/>
 			<button label="Tekrar hesaplanıyor..." name="recalculating_physics_btn"/>
-			<text name="physics_preview_label">
+			<text name="lod_label">
 				Fizik önizleme
 			</text>
 			<combo_box name="preview_lod_combo2" tool_tip="Önizleme işlemesinde görülecek ayrıntı seviyesi">
-				<combo_item name="preview_lod2_high">
+				<combo_item name="high">
 					Çok ayrıntı
 				</combo_item>
-				<combo_item name="preview_lod2_medium">
+				<combo_item name="medium">
 					Orta düzey ayrıntı
 				</combo_item>
-				<combo_item name="preview_lod2_low">
+				<combo_item name="low">
 					Az ayrıntı
 				</combo_item>
-				<combo_item name="preview_lod2_lowest">
+				<combo_item name="lowest">
 					En az ayrıntı
 				</combo_item>
 			</combo_box>
 		</panel>
 	</panel>
 	<panel name="review_panel">
-		<panel name="review_header_panel">
-			<text name="review_header_text">
+		<panel name="header_panel">
+			<text name="header_text">
 				İncele
 			</text>
 		</panel>
-		<panel name="review_content_panel">
+		<panel name="content">
 			<text name="review_prim_equiv">
 				Parsele/bölgeye etkisi: [EQUIV] prim eşdeğerleri
 			</text>
@@ -193,8 +125,8 @@ Binalar
 		</panel>
 	</panel>
 	<panel name="upload_panel">
-		<panel name="upload_header_panel">
-			<text name="upload_header_text">
+		<panel name="header_panel">
+			<text name="header_text">
 				Karşıya yükleme bitti
 			</text>
 		</panel>
diff --git a/indra/newview/skins/default/xui/tr/floater_moveview.xml b/indra/newview/skins/default/xui/tr/floater_moveview.xml
index 0d7c118f1ea4eebb60022fafe09b61e4cbd0c7df..74ed613a62a36ca834e5bc4f97c8fd8876ed45ce 100644
--- a/indra/newview/skins/default/xui/tr/floater_moveview.xml
+++ b/indra/newview/skins/default/xui/tr/floater_moveview.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="move_floater">
+<floater name="move_floater" title="HAREKET ET">
 	<string name="walk_forward_tooltip">
 		İleri Yürü (Yukarı Okuna veya W&apos;ye basın)
 	</string>
diff --git a/indra/newview/skins/default/xui/tr/floater_my_appearance.xml b/indra/newview/skins/default/xui/tr/floater_my_appearance.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4d71187a1fdd7ec79b5ad6a80e6b5c9a9abf950c
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_my_appearance.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_my_appearance" title="GÖRÜNÜM">
+	<panel label="Görünümü Düzenle" name="main_panel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_my_inventory.xml b/indra/newview/skins/default/xui/tr/floater_my_inventory.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8c62692a88a3654db95dd711b6a26a3129e2e7bc
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_my_inventory.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_my_inventory" title="ENVANTER"/>
diff --git a/indra/newview/skins/default/xui/tr/floater_object_weights.xml b/indra/newview/skins/default/xui/tr/floater_object_weights.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b57943f666ccea22dd59e4e9e4d43d753543a027
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_object_weights.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="object_weights" title="GELİŞMİŞ">
+	<floater.string name="nothing_selected" value="--"/>
+	<text name="selected_text" value="SEÇİLİ"/>
+	<text name="objects" value="--"/>
+	<text name="objects_label" value="Nesneler"/>
+	<text name="prims" value="--"/>
+	<text name="prims_label" value="Primler"/>
+	<text name="weights_of_selected_text" value="SEÇİLENLERİN AĞIRLIKLARI"/>
+	<text name="download" value="--"/>
+	<text name="download_label" value="Karşıdan yükle"/>
+	<text name="physics" value="--"/>
+	<text name="physics_label" value="Fizik"/>
+	<text name="server" value="--"/>
+	<text name="server_label" value="Sunucu"/>
+	<text name="display" value="--"/>
+	<text name="display_label" value="Ekran"/>
+	<text name="land_impacts_text" value="ARAZİ ETKİLERİ"/>
+	<text name="selected" value="--"/>
+	<text name="selected_label" value="Seçili"/>
+	<text name="rezzed_on_land" value="--"/>
+	<text name="rezzed_on_land_label" value="Arazide oluÅŸturulmuÅŸ"/>
+	<text name="remaining_capacity" value="--"/>
+	<text name="remaining_capacity_label" value="Kalan kapasite"/>
+	<text name="total_capacity" value="--"/>
+	<text name="total_capacity_label" value="Toplam kapasite"/>
+	<text name="help_SLURL" value="[secondlife:///app/help/object_weights Bunların tümü ne?...]"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/tr/floater_outfit_save_as.xml
index 849fdcdbbcf24b0e9359a3151b17156f2f54d0f9..7a9f507c936c78aa9cec0c384bb881d71a2fb3d8 100644
--- a/indra/newview/skins/default/xui/tr/floater_outfit_save_as.xml
+++ b/indra/newview/skins/default/xui/tr/floater_outfit_save_as.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="modal container" title="Dış Görünümü Kaydet">
+<floater name="modal container" title="DIŞ GÖRÜNÜMÜ KAYDET">
 	<button label="Kaydet" label_selected="Kaydet" name="Save"/>
 	<button label="İptal" label_selected="İptal" name="Cancel"/>
 	<text name="Save item as:">
diff --git a/indra/newview/skins/default/xui/tr/floater_people.xml b/indra/newview/skins/default/xui/tr/floater_people.xml
new file mode 100644
index 0000000000000000000000000000000000000000..94a27bff5774a20d75c7877e41af67fd9c1c36a6
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_people.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_people" title="KİŞİLER">
+	<panel_container name="main_panel">
+		<panel label="Grup Profili" name="panel_group_info_sidetray"/>
+		<panel label="EngellenmiÅŸ Sakinler ve Nesneler" name="panel_block_list_sidetray"/>
+	</panel_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_picks.xml b/indra/newview/skins/default/xui/tr/floater_picks.xml
new file mode 100644
index 0000000000000000000000000000000000000000..06a404447ec99f8cdfd3cb90ca8a95311e7ffca0
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_picks.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_picks" title="Favoriler"/>
diff --git a/indra/newview/skins/default/xui/tr/floater_places.xml b/indra/newview/skins/default/xui/tr/floater_places.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4e09a699f6a6ff12db86649d6c0c1ab56d170ada
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_places.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_places" title="YERLER">
+	<panel label="Yerler" name="main_panel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_sound_devices.xml b/indra/newview/skins/default/xui/tr/floater_sound_devices.xml
index 99c3bea954431e1f4a179c41fd047a7bc677c3c6..470a222d7ecbcce2ab360ff39880837bb988632f 100644
--- a/indra/newview/skins/default/xui/tr/floater_sound_devices.xml
+++ b/indra/newview/skins/default/xui/tr/floater_sound_devices.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_sound_devices" title="Ses Aygıtları">
+<floater name="floater_sound_devices" title="SES CİHAZLARI">
 	<text name="voice_label">
 		Sesli Sohbet
 	</text>
diff --git a/indra/newview/skins/default/xui/tr/floater_stats.xml b/indra/newview/skins/default/xui/tr/floater_stats.xml
index 2218060cc78adebef21ded9ec1bc5e762b05f1c8..17f1166c4681b99b185301fa5daae64cf98080a4 100644
--- a/indra/newview/skins/default/xui/tr/floater_stats.xml
+++ b/indra/newview/skins/default/xui/tr/floater_stats.xml
@@ -10,8 +10,8 @@
 			</stat_view>
 			<stat_view label="GeliÅŸmiÅŸ" name="advanced">
 				<stat_view label="İşle" name="render">
-					<stat_bar label="Çizilen Üçgenler" name="ktrisframe"/>
-					<stat_bar label="Çizilen Üçgenler" name="ktrissec"/>
+					<stat_bar label="Çerçeve Başına Çizilen Üçgenler" name="ktrisframe"/>
+					<stat_bar label="Saniyede Bir Çizilen Üçgenler" name="ktrissec"/>
 					<stat_bar label="Toplam Nesne" name="objs"/>
 					<stat_bar label="Yeni Nesne" name="newobjs"/>
 				</stat_view>
@@ -64,6 +64,14 @@
 					<stat_bar label="Aracı Süresi" name="simagentmsec"/>
 					<stat_bar label="Görüntü Süresi" name="simimagesmsec"/>
 					<stat_bar label="Komut Dosyası Süresi" name="simscriptmsec"/>
+					<stat_bar label="Yedek Zaman" name="simsparemsec"/>
+					<stat_view label="Zaman Ayrıntıları (ms)" name="timedetails">
+						<stat_bar label="Fizik Adımı" name="simsimphysicsstepmsec"/>
+						<stat_bar label="Fizik Şekillerini Güncelle" name="simsimphysicsshapeupdatemsec"/>
+						<stat_bar label="Fizik DiÄŸer" name="simsimphysicsothermsec"/>
+						<stat_bar label="Uyku Zamanı" name="simsleepmsec"/>
+						<stat_bar label="Pompa Giriş Çıkış" name="simpumpiomsec"/>
+					</stat_view>
 				</stat_view>
 			</stat_view>
 		</container_view>
diff --git a/indra/newview/skins/default/xui/tr/floater_tools.xml b/indra/newview/skins/default/xui/tr/floater_tools.xml
index 68c18d65e8c2ba52ae73cf549cd4d380a355000b..47299059af79ea819828c826cc33a6455fb03b65 100644
--- a/indra/newview/skins/default/xui/tr/floater_tools.xml
+++ b/indra/newview/skins/default/xui/tr/floater_tools.xml
@@ -25,10 +25,10 @@
 		Araziyi seçmek için tıklayın ve sürükleyin
 	</floater.string>
 	<floater.string name="status_selectcount">
-		[OBJ_COUNT] nesne ( [PRIM_COUNT] prim [PE_STRING] ) seçili
+		[OBJ_COUNT] nesne seçili, [LAND_IMPACT] arazi etkisi
 	</floater.string>
-	<floater.string name="status_selectprimequiv">
-		, [SEL_WEIGHT] prim eÅŸdeÄŸerleri
+	<floater.string name="status_remaining_capacity">
+		Kalan kapasite [LAND_CAPACITY].
 	</floater.string>
 	<button name="button focus" tool_tip="Odak"/>
 	<button name="button move" tool_tip="Hareket Et"/>
@@ -107,8 +107,8 @@
 	<text name="selection_empty">
 		Seçilen bir şey yok.
 	</text>
-	<text name="selection_weight">
-		Fizik ağırlığı [PHYS_WEIGHT], İşleme Maliyeti [DISP_WEIGHT].
+	<text name="remaining_capacity">
+		[CAPACITY_STRING] [secondlife:///app/openfloater/object_weights Ek bilgi]
 	</text>
 	<tab_container name="Object Info Tabs">
 		<panel label="Genel" name="General">
@@ -321,7 +321,6 @@
 				Dikiş türü
 			</text>
 			<combo_box name="sculpt type control">
-				<combo_box.item label="(hiçbiri)" name="None"/>
 				<combo_box.item label="Küre" name="Sphere"/>
 				<combo_box.item label="Torus" name="Torus"/>
 				<combo_box.item label="Düzlem" name="Plane"/>
diff --git a/indra/newview/skins/default/xui/tr/floater_toybox.xml b/indra/newview/skins/default/xui/tr/floater_toybox.xml
new file mode 100644
index 0000000000000000000000000000000000000000..05d3633df073095c7d22401f6e55293ecd215a62
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_toybox.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Toybox" title="ARAÇ ÇUBUKLARINI ÖZELLEŞTİR">
+	<text name="toybox label 1">
+		Düğmeleri araç çubuklarına veya araç çubuklarından sürükleyerek ekleyin ya da kaldırın.
+	</text>
+	<text name="toybox label 2">
+		Her bir araç çubuğunun ayarına göre düğmeler gösterilir veya sadece simgeleri yer alır.
+	</text>
+	<button label="Varsayılanları geri yükle" label_selected="Varsayılanları geri yükle" name="btn_restore_defaults"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_voice_controls.xml b/indra/newview/skins/default/xui/tr/floater_voice_controls.xml
index d5d6606e4e737b8e8bc93a350df81ad9bf4980b6..dac05d83273113af286a2904e6ebb4614bcdc8ca 100644
--- a/indra/newview/skins/default/xui/tr/floater_voice_controls.xml
+++ b/indra/newview/skins/default/xui/tr/floater_voice_controls.xml
@@ -1,13 +1,13 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_voice_controls" title="Ses Denetimleri">
+<floater name="floater_voice_controls" title="SES DENETİMLERİ">
 	<string name="title_nearby">
-		YAKINDAKİ SES
+		Yakındaki ses
 	</string>
 	<string name="title_group">
-		[GROUP] ile Grup Araması
+		[GROUP] ile grup araması
 	</string>
 	<string name="title_adhoc">
-		Konferans Araması
+		Konferans araması
 	</string>
 	<string name="title_peer_2_peer">
 		[NAME] ile arama
diff --git a/indra/newview/skins/default/xui/tr/menu_bottomtray.xml b/indra/newview/skins/default/xui/tr/menu_bottomtray.xml
index c4376697047ba31afdc3fa213bd0140086089b78..f17c0f997144c2c5f2a21c943f44ec0e5252bf1a 100644
--- a/indra/newview/skins/default/xui/tr/menu_bottomtray.xml
+++ b/indra/newview/skins/default/xui/tr/menu_bottomtray.xml
@@ -8,7 +8,7 @@
 	<menu_item_check label="İnşa Et düğmesi" name="ShowBuildButton"/>
 	<menu_item_check label="Arama düğmesi" name="ShowSearchButton"/>
 	<menu_item_check label="Harita düğmesi" name="ShowWorldMapButton"/>
-	<menu_item_check label="Mini-Harita düğmesi" name="ShowMiniMapButton"/>
+	<menu_item_check label="Mini-harita düğmesi" name="ShowMiniMapButton"/>
 	<menu_item_call label="Kes" name="NearbyChatBar_Cut"/>
 	<menu_item_call label="Kopyala" name="NearbyChatBar_Copy"/>
 	<menu_item_call label="Yapıştır" name="NearbyChatBar_Paste"/>
diff --git a/indra/newview/skins/default/xui/tr/menu_hide_navbar.xml b/indra/newview/skins/default/xui/tr/menu_hide_navbar.xml
index d9b99e040bb49cf486fed6c44d98db96b5821261..130c72e04ddf7052d54d7884659678c5f6a5bfa3 100644
--- a/indra/newview/skins/default/xui/tr/menu_hide_navbar.xml
+++ b/indra/newview/skins/default/xui/tr/menu_hide_navbar.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="hide_navbar_menu">
-	<menu_item_check label="Gezinme Çubuğunu Göster" name="ShowNavbarNavigationPanel"/>
+	<menu_item_check label="Gezinme ve Sık Kullanılanlar Çubuğunu Göster" name="ShowNavbarNavigationPanel"/>
 	<menu_item_check label="Sık Kullanılanlar Çubuğunu Göster" name="ShowNavbarFavoritesPanel"/>
 	<menu_item_check label="Mini Konum Çubuğunu Göster" name="ShowMiniLocationPanel"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_login.xml b/indra/newview/skins/default/xui/tr/menu_login.xml
index a726925bd3a0760c3a63092915aa4bb63cd108ad..4c3539b38b87181f5fe9db17db60ffb4942edd7f 100644
--- a/indra/newview/skins/default/xui/tr/menu_login.xml
+++ b/indra/newview/skins/default/xui/tr/menu_login.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu_bar name="Login Menu">
 	<menu label="Ben" name="File">
-		<menu_item_call label="Tercihler" name="Preferences..."/>
+		<menu_item_call label="Tercihler..." name="Preferences..."/>
 		<menu_item_call label="[APP_NAME]&apos;den Çık" name="Quit"/>
 	</menu>
 	<menu label="Yardım" name="Help">
diff --git a/indra/newview/skins/default/xui/tr/menu_toolbars.xml b/indra/newview/skins/default/xui/tr/menu_toolbars.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7cb3192ec49764292867e4e879f51b6f027fce8d
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_toolbars.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Toolbars Popup">
+	<menu_item_call label="Düğmeleri seç..." name="Chose Buttons"/>
+	<menu_item_check label="Simgeler ve etiketler" name="icons_with_text"/>
+	<menu_item_check label="Sadece simgeler" name="icons_only"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_viewer.xml b/indra/newview/skins/default/xui/tr/menu_viewer.xml
index fa09e42a141a4c4caea454b48097056f49741b0e..0877d8881b604406b490054345a530e5c0dc6901 100644
--- a/indra/newview/skins/default/xui/tr/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/tr/menu_viewer.xml
@@ -1,27 +1,28 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu_bar name="Main Menu">
 	<menu label="Ben" name="Me">
-		<menu_item_call label="Tercihler" name="Preferences"/>
-		<menu_item_call label="Kontrol Panelim" name="Manage My Account"/>
-		<menu_item_call label="L$ Satın Al" name="Buy and Sell L$"/>
-		<menu_item_call label="Profilim" name="Profile"/>
-		<menu_item_call label="Görünümüm" name="ChangeOutfit"/>
-		<menu_item_check label="Envanterim" name="Inventory"/>
-		<menu_item_check label="Envanterim" name="ShowSidetrayInventory"/>
-		<menu_item_check label="Mimiklerim" name="Gestures"/>
-		<menu_item_check label="Sesim" name="ShowVoice"/>
+		<menu_item_call label="Kontrol Paneli..." name="Manage My Account"/>
+		<menu_item_call label="Profil..." name="Profile"/>
+		<menu_item_call label="Görünüm..." name="ChangeOutfit"/>
+		<menu_item_check label="Envanter..." name="Inventory"/>
+		<menu_item_check label="Mimikler..." name="Gestures"/>
+		<menu_item_check label="Ses..." name="ShowVoice"/>
 		<menu label="Hareket" name="Movement">
 			<menu_item_call label="Otur" name="Sit Down Here"/>
 			<menu_item_check label="Uç" name="Fly"/>
 			<menu_item_check label="Daima KoÅŸ" name="Always Run"/>
 			<menu_item_call label="Beni Anime Etmeyi Durdur" name="Stop Animating My Avatar"/>
 		</menu>
-		<menu label="Durumum" name="Status">
+		<menu label="Durum" name="Status">
 			<menu_item_call label="Uzakta" name="Set Away"/>
 			<menu_item_call label="MeÅŸgul" name="Set Busy"/>
 		</menu>
 		<menu_item_call label="Yönetici Durumu Talep Et" name="Request Admin Options"/>
 		<menu_item_call label="Yönetici Durumundan Ayrıl" name="Leave Admin Options"/>
+		<menu_item_call label="L$ Satın Al" name="Buy and Sell L$"/>
+		<menu_item_call label="Tercihler..." name="Preferences"/>
+		<menu_item_call label="Araç çubukları..." name="Toolbars"/>
+		<menu_item_call label="Tüm denetimleri sakla" name="Hide UI"/>
 		<menu_item_call label="[APP_NAME]&apos;den Çık" name="Quit"/>
 	</menu>
 	<menu label="İletişim Kur" name="Communicate">
@@ -32,7 +33,7 @@
 		<menu_item_check label="Yakındaki Ses" name="Nearby Voice"/>
 	</menu>
 	<menu label="Dünya" name="World">
-		<menu_item_check label="Mini-Harita" name="Mini-Map"/>
+		<menu_item_check label="Mini-harita" name="Mini-Map"/>
 		<menu_item_check label="Dünya Haritası" name="World Map"/>
 		<menu_item_check label="Ara" name="Search"/>
 		<menu_item_call label="Anlık Görüntü" name="Take Snapshot"/>
@@ -144,7 +145,6 @@
 	</menu>
 	<menu label="Yardım" name="Help">
 		<menu_item_call label="[SECOND_LIFE] Yardımı" name="Second Life Help"/>
-		<menu_item_check label="İpuçlarını Etkinleştir" name="Enable Hints"/>
 		<menu_item_call label="Kötüye Kullanımı Bildir" name="Report Abuse"/>
 		<menu_item_call label="Hata Bildir" name="Report Bug"/>
 		<menu_item_call label="[APP_NAME] Hakkında" name="About Second Life"/>
@@ -160,7 +160,7 @@
 		<menu label="Performans Araçları" name="Performance Tools">
 			<menu_item_call label="Gecikme Ölçer" name="Lag Meter"/>
 			<menu_item_check label="İstatistik Çubuğu" name="Statistics Bar"/>
-			<menu_item_check label="Avatar İşlemi Maaliyetini Göster" name="Avatar Rendering Cost"/>
+			<menu_item_check label="Avatarlar İçin Çizim Ağırlığını Göster" name="Avatar Rendering Cost"/>
 		</menu>
 		<menu label="Vurgulama ve Görünürlük" name="Highlighting and Visibility">
 			<menu_item_check label="Yanıp Sönen İşaret" name="Cheesy Beacon"/>
@@ -288,6 +288,7 @@
 			<menu_item_check label="Işıklar" name="Lights"/>
 			<menu_item_check label="Çarpışma İskeleti" name="Collision Skeleton"/>
 			<menu_item_check label="Işın Yayını" name="Raycast"/>
+			<menu_item_check label="İşleme Karmaşıklığı" name="rendercomplexity"/>
 			<menu_item_check label="Åžekillendir" name="Sculpt"/>
 		</menu>
 		<menu label="İşleme" name="Rendering">
diff --git a/indra/newview/skins/default/xui/tr/notifications.xml b/indra/newview/skins/default/xui/tr/notifications.xml
index 5eff0cf5707e5c86976de78af1008572d9c5b165..b75307b67b03d063781d81d67715ad7e7c59b991 100644
--- a/indra/newview/skins/default/xui/tr/notifications.xml
+++ b/indra/newview/skins/default/xui/tr/notifications.xml
@@ -1909,6 +1909,12 @@ Envanter öğesi/öğeleri taşınsın mı?
 		Çıkmak istediğinize emin misiniz?
 		<usetemplate ignoretext="Çıkmadan önce doğrulama iste" name="okcancelignore" notext="Çıkma" yestext="Çık"/>
 	</notification>
+	<notification name="ConfirmRestoreToybox">
+		Varsayılan düğmelerinizi ve araç çubuklarınızı geri yüklemek istediğinize emin misiniz? 
+    
+Bu eylemi geri alamazsınız.
+		<usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
+	</notification>
 	<notification name="DeleteItems">
 		[QUESTION]
 		<usetemplate ignoretext="Öğeleri silmeden önce doğrulama iste" name="okcancelignore" notext="İptal" yestext="Tamam"/>
@@ -2995,10 +3001,6 @@ Görünümünüzü döndürmek için dünya üzerindeki herhangi bir yeri tıkla
 			<button name="cancel" text="İptal Et"/>
 		</form>
 	</notification>
-	<notification label="" name="ModeChange">
-		Mod değiştirme, uygulamadan çıkıp yeniden başlatmanızı gerektiriyor.
-		<usetemplate name="okcancelbuttons" notext="Çıkma" yestext="Çık"/>
-	</notification>
 	<notification label="" name="NoClassifieds">
 		İlan oluşturma ve düzenleme sadece Gelişmiş modda kullanılabilir. Uygulamadan çıkıp, mod değiştirmek ister misiniz? Mod seçici oturum açma ekranında bulunabilir.
 		<usetemplate name="okcancelbuttons" notext="Çıkma" yestext="Çık"/>
@@ -3043,6 +3045,10 @@ Görünümünüzü döndürmek için dünya üzerindeki herhangi bir yeri tıkla
 		Arama sadece Gelişmiş modda kullanılabilir. Oturumunuzu kapatıp, mod değiştirmek ister misiniz?
 		<usetemplate name="okcancelbuttons" notext="Çıkma" yestext="Çık"/>
 	</notification>
+	<notification label="" name="ConfirmHideUI">
+		Bu eylem tüm menü öğelerini ve düğmelerini gizler. Bunları geri almak için [SHORTCUT] üzerine tekrar tıklayın.
+		<usetemplate ignoretext="KA&apos;ni gizlemeden önce onayla" name="okcancelignore" notext="İptal" yestext="Tamam"/>
+	</notification>
 	<global name="UnsupportedGLRequirements">
 		[APP_NAME] uygulaması için gerekli donanım gereksinimlerine sahip olmadığınız görünüyor. [APP_NAME] çoklu doku desteği sunan bir OpenGL grafik kartı gerektiriyor. Eğer grafik kartınız bu özellikteyse, grafik kartınızın en son sürücülerine ve işletim sisteminiz için gerekli Service Pack ve yamalara sahip olup olmadığınızı kontrol etmeyi deneyebilirsiniz.
 
diff --git a/indra/newview/skins/default/xui/tr/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/tr/panel_chiclet_bar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a1e8190bbc3f7db060109fb4439a6f308697b472
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_chiclet_bar.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="chiclet_bar">
+	<layout_stack name="toolbar_stack">
+		<layout_panel name="im_well_panel">
+			<chiclet_im_well name="im_well">
+				<button name="Unread IM messages" tool_tip="Sohbetler"/>
+			</chiclet_im_well>
+		</layout_panel>
+		<layout_panel name="notification_well_panel">
+			<chiclet_notification name="notification_well">
+				<button name="Unread" tool_tip="Bildirimler"/>
+			</chiclet_notification>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_me.xml b/indra/newview/skins/default/xui/tr/panel_me.xml
index dcf4f19be2333a0c83dc7e60b98e631f2b3499d7..0441660f3cd77c36093d5d3c634ebc816cf2a946 100644
--- a/indra/newview/skins/default/xui/tr/panel_me.xml
+++ b/indra/newview/skins/default/xui/tr/panel_me.xml
@@ -1,7 +1,4 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Profilim" name="panel_me">
-	<tab_container name="tabs">
-		<panel label="PROFİLİM" name="panel_profile"/>
-		<panel label="FAVORİLERİM" name="panel_picks"/>
-	</tab_container>
+	<panel label="FAVORİLERİM" name="panel_picks"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_navigation_bar.xml b/indra/newview/skins/default/xui/tr/panel_navigation_bar.xml
index b28036228fa3d4e137b232c5bfe5cce4b054800b..b61ba0a12f40e91404aa2b95ec6f5662e38d89eb 100644
--- a/indra/newview/skins/default/xui/tr/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/tr/panel_navigation_bar.xml
@@ -1,18 +1,23 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="navigation_bar">
-	<panel name="navigation_panel">
-		<pull_button name="back_btn" tool_tip="Önceki konuma geri git"/>
-		<pull_button name="forward_btn" tool_tip="Bir konum ileri git"/>
-		<button name="home_btn" tool_tip="Ana konumuma ışınla"/>
-		<location_input label="Konum" name="location_combo"/>
-		<search_combo_box label="Ara" name="search_combo_box" tool_tip="Ara">
-			<combo_editor label="[SECOND_LIFE] içinde arama yap" name="search_combo_editor"/>
-		</search_combo_box>
-	</panel>
-	<favorites_bar name="favorite" tool_tip="Second Life içerisinde sık kullandığınız yerlere hızla erişmek için Yer İmlerini buraya sürükleyin!">
-		<label name="favorites_bar_label" tool_tip="Second Life içerisinde sık kullandığınız yerlere hızla erişmek için Yer İmlerini buraya sürükleyin!">
-			Sık Kullanılanlar Çubuğu
-		</label>
-		<chevron_button name="&gt;&gt;" tool_tip="Sık Kullanılanlarımdan daha çok göster"/>
-	</favorites_bar>
+	<layout_stack name="nvp_stack">
+		<layout_panel name="navigation_layout_panel">
+			<panel name="navigation_panel">
+				<pull_button name="back_btn" tool_tip="Önceki konuma geri git"/>
+				<pull_button name="forward_btn" tool_tip="Bir konum ileri git"/>
+				<button name="home_btn" tool_tip="Ana konumuma ışınla"/>
+				<location_input label="Konum" name="location_combo"/>
+			</panel>
+		</layout_panel>
+		<layout_panel name="favorites_layout_panel">
+			<favorites_bar name="favorite" tool_tip="Second Life içerisinde sık kullandığınız yerlere hızla erişmek için Yer İmlerini buraya sürükleyin!">
+				<label name="favorites_bar_label" tool_tip="Second Life içerisinde sık kullandığınız yerlere hızla erişmek için Yer İmlerini buraya sürükleyin!">
+					Sık Kullanılanlar Çubuğu
+				</label>
+				<more_button name="&gt;&gt;" tool_tip="Sık Kullanılanlarımdan daha çok göster">
+					Daha Fazla â–¼
+				</more_button>
+			</favorites_bar>
+		</layout_panel>
+	</layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_nearby_chat.xml b/indra/newview/skins/default/xui/tr/panel_nearby_chat.xml
new file mode 100644
index 0000000000000000000000000000000000000000..73da726cb27294c310ffba5ab01fc82e8c79321f
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_nearby_chat.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="nearby_chat">
+	<check_box label="Sohbeti çevir (Google tarafından desteklenir)" name="translate_chat_checkbox"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_chat.xml b/indra/newview/skins/default/xui/tr/panel_preferences_chat.xml
index bb7e6da68c95ed548b860ff7adaf05931a13cdd8..aeef737420c23558e66a7077bd814d63e7ccba2e 100644
--- a/indra/newview/skins/default/xui/tr/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/tr/panel_preferences_chat.xml
@@ -50,7 +50,7 @@
 		<combo_box.item label="Русский (Rusça)" name="Russian"/>
 		<combo_box.item label="Türkçe (Türkçe)" name="Turkish"/>
 		<combo_box.item label="Українська (Ukraynaca)" name="Ukrainian"/>
-		<combo_box.item label="中文 (简体) (Çince)" name="Chinese"/>
+		<combo_box.item label="中文 (正體) (Çince)" name="Chinese"/>
 		<combo_box.item label="日本語 (Japonca)" name="Japanese"/>
 		<combo_box.item label="한국어 (Korece)" name="Korean"/>
 	</combo_box>
diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_general.xml b/indra/newview/skins/default/xui/tr/panel_preferences_general.xml
index bd651049d09eb048663c9d83d5247696cc4ced35..fbfc07c4b8740bd9cb67378bde22ca6e721f195b 100644
--- a/indra/newview/skins/default/xui/tr/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/tr/panel_preferences_general.xml
@@ -5,16 +5,18 @@
 	</text>
 	<combo_box name="language_combobox">
 		<combo_box.item label="Sistem varsayılanı" name="System Default Language"/>
-		<combo_box.item label="İngilizce" name="English"/>
+		<combo_box.item label="English (İngilizce)" name="English"/>
 		<combo_box.item label="Dansk (Danca) - Beta" name="Danish"/>
 		<combo_box.item label="Deutsch (Almanca) - Beta" name="Deutsch(German)"/>
 		<combo_box.item label="Español (İspanyolca) - Beta" name="Spanish"/>
 		<combo_box.item label="Français (Fransızca) - Beta" name="French"/>
 		<combo_box.item label="Italiano (İtalyanca) - Beta" name="Italian"/>
-		<combo_box.item label="Nederlands (Felemekçe) - Beta" name="Dutch"/>
 		<combo_box.item label="Polski (Lehçe) - Beta" name="Polish"/>
 		<combo_box.item label="Português (Portekizce) - Beta" name="Portugese"/>
+		<combo_box.item label="Русский (Rusça) - Beta" name="Russian"/>
+		<combo_box.item label="Türkçe - Beta" name="Turkish"/>
 		<combo_box.item label="日本語 (Japonca) - Beta" name="(Japanese)"/>
+		<combo_box.item label="正體中文 (Geleneksel Çince) - Beta" name="Traditional Chinese"/>
 	</combo_box>
 	<text name="language_textbox2">
 		(Yeniden baÅŸlatma gerekir)
diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_move.xml b/indra/newview/skins/default/xui/tr/panel_preferences_move.xml
index da102b078cf9a15e3b963eac7ae86dbb00dde11f..c35eaec9c3169f1d03a28e74587761f77aca7e7e 100644
--- a/indra/newview/skins/default/xui/tr/panel_preferences_move.xml
+++ b/indra/newview/skins/default/xui/tr/panel_preferences_move.xml
@@ -7,18 +7,33 @@
 	</text>
 	<check_box label="İnşa Et/Düzenle" name="edit_camera_movement" tool_tip="Düzenleme moduna girerken ve düzenleme modundan çıkarken otomatik kamera konumunu kullanın"/>
 	<check_box label="Görünüm" name="appearance_camera_movement" tool_tip="Düzenleme modundayken otomatik kamera konumunu kullan"/>
-	<check_box initial_value="true" label="Kenar çubuğu" name="appearance_sidebar_positioning" tool_tip="Kenar çubuğu için otomatik kamera konumunu kullan"/>
+	<text name="keyboard_lbl">
+		Klavye:
+	</text>
+	<check_box label="Ok tuşları beni her zaman hareket ettirir" name="arrow_keys_move_avatar_check"/>
+	<check_box label="Koşmak için iki kez dokun ve tut" name="tap_tap_hold_to_run"/>
+	<text name="mouse_lbl">
+		Fare:
+	</text>
 	<check_box label="Fare üzerinden görünümde beni göster" name="first_person_avatar_visible"/>
 	<text name=" Mouse Sensitivity">
 		Fare üzerinden görünümde fare hassasiyeti
 	</text>
 	<check_box label="Tersine çevir" name="invert_mouse"/>
-	<check_box label="Ok tuşları beni her zaman hareket ettirir" name="arrow_keys_move_avatar_check"/>
-	<check_box label="Koşmak için iki kez dokun ve tut" name="tap_tap_hold_to_run"/>
-	<check_box label="Çift Tıklayınca şunu yap:" name="double_click_chkbox"/>
-	<radio_group name="double_click_action">
-		<radio_item label="Işınla" name="radio_teleport"/>
-		<radio_item label="Otomatik pilot" name="radio_autopilot"/>
-	</radio_group>
+	<text name="single_click_action_lbl">
+		Arazi üzerine tek tıklama:
+	</text>
+	<combo_box name="single_click_action_combo">
+		<combo_box.item label="Eylem yok" name="0"/>
+		<combo_box.item label="Tıklanan noktaya hareket et" name="1"/>
+	</combo_box>
+	<text name="double_click_action_lbl">
+		Arazi üzerine çift tıklama:
+	</text>
+	<combo_box name="double_click_action_combo">
+		<combo_box.item label="Eylem yok" name="0"/>
+		<combo_box.item label="Tıklanan noktaya hareket et" name="1"/>
+		<combo_box.item label="Tıklanan noktaya ışınla" name="2"/>
+	</combo_box>
 	<button label="Diğer Aygıtlar" name="joystick_setup_button"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_status_bar.xml b/indra/newview/skins/default/xui/tr/panel_status_bar.xml
index a7491e9c8870aead2ab287ca6f8ee6efb939512f..63726b94e2121d6a7c9f92de2ebc02f7baf34971 100644
--- a/indra/newview/skins/default/xui/tr/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/tr/panel_status_bar.xml
@@ -17,12 +17,9 @@
 	</panel.string>
 	<panel name="balance_bg">
 		<text name="balance" tool_tip="L$ bakiyenizi yenilemek için buraya tıklayın" value="L$20"/>
-		<button label="L$ SATIN AL" name="buyL" tool_tip="Daha fazla L$ satın almak için tıklayın"/>
+		<button label="L$ Satın Al" name="buyL" tool_tip="Daha fazla L$ satın almak için tıklayın"/>
+		<button label="Alışveriş yap" name="goShop" tool_tip="Second Life Pazaryeri Aç"/>
 	</panel>
-	<combo_box name="mode_combo" tool_tip="Modunuzu seçin. Hızlı ve kolay keşif yapmak ile sohbet etmek için Temel seçimini yapın. Daha fazla özelliğe erişmek için Gelişmiş seçimini yapın.">
-		<combo_box.item label="Temel Mod" name="Basic"/>
-		<combo_box.item label="GeliÅŸmiÅŸ Mod" name="Advanced"/>
-	</combo_box>
 	<text name="TimeText" tool_tip="Geçerli zaman (Pasifik)">
 		24:00 AM PST
 	</text>
diff --git a/indra/newview/skins/default/xui/tr/sidepanel_inventory.xml b/indra/newview/skins/default/xui/tr/sidepanel_inventory.xml
index e02eae1d92d18f4bd60cb626eabb3e12535469de..70c449b4024133eb2bb42d05947493bbc475635a 100644
--- a/indra/newview/skins/default/xui/tr/sidepanel_inventory.xml
+++ b/indra/newview/skins/default/xui/tr/sidepanel_inventory.xml
@@ -7,14 +7,14 @@
 					<layout_panel name="inbox_layout_panel">
 						<panel label="" name="marketplace_inbox">
 							<string name="InboxLabelWithArg">
-								Alınan Öğeler ([NUM])
+								Alınan öğeler ([NUM])
 							</string>
 							<string name="InboxLabelNoArg">
-								Alınan Öğeler
+								Alınan öğeler
 							</string>
-							<button label="Alınan Öğeler" name="inbox_btn"/>
+							<button label="Alınan öğeler" name="inbox_btn"/>
 							<text name="inbox_fresh_new_count">
-								[NUM] Yeni
+								[NUM] yeni
 							</text>
 							<panel tool_tip="Drag and drop items to your inventory to manage and use them">
 								<text name="inbox_inventory_placeholder">
@@ -26,12 +26,12 @@
 					<layout_panel name="outbox_layout_panel">
 						<panel label="" name="marketplace_outbox">
 							<string name="OutboxLabelWithArg">
-								Satıcı Giden Kutusu ([NUM])
+								Satıcı giden kutusu ([NUM])
 							</string>
 							<string name="OutboxLabelNoArg">
-								Satıcı Giden Kutusu
+								Satıcı giden kutusu
 							</string>
-							<button label="Satıcı Giden Kutusu" name="outbox_btn"/>
+							<button label="Satıcı giden kutusu" name="outbox_btn"/>
 							<button label="" name="outbox_sync_btn" tool_tip="Pazaryeri Vitrinime Gönder"/>
 							<panel>
 								<panel name="outbox_inventory_placeholder_panel">
diff --git a/indra/newview/skins/default/xui/tr/strings.xml b/indra/newview/skins/default/xui/tr/strings.xml
index 543989804aab78d1d9fdf04118a1262cfdf8cc36..e1885413bbd1a7c92101015c279d1da78cf0294f 100644
--- a/indra/newview/skins/default/xui/tr/strings.xml
+++ b/indra/newview/skins/default/xui/tr/strings.xml
@@ -29,22 +29,22 @@
 		Önbellek temizleniyor...
 	</string>
 	<string name="StartupInitializingTextureCache">
-		Doku Önbelleği Başlatılıyor...
+		Doku önbelleği başlatılıyor...
 	</string>
 	<string name="StartupInitializingVFS">
 		VFS Başlatılıyor...
 	</string>
 	<string name="StartupRequireDriverUpdate">
-		Grafik Başlatma Başarılamadı. Lütfen Grafik Sürücünüzü Güncelleştirin!
+		Grafik başlatma başarılamadı. Lütfen grafik sürücünüzü güncelleştirin!
 	</string>
 	<string name="ProgressRestoring">
 		Geri yükleniyor...
 	</string>
 	<string name="ProgressChangingResolution">
-		Çözünürlük Değiştiriliyor...
+		Çözünürlük değiştiriliyor...
 	</string>
 	<string name="Fullbright">
-		Tam Parlak (Eski)
+		Tam parlak (eski)
 	</string>
 	<string name="LoginInProgress">
 		Oturum açılıyor. [APP_NAME] kilitlenmiş görünebilir.  Lütfen bekleyin.
@@ -77,10 +77,10 @@
 		Önbellek dosyaları doğrulanıyor (60-90 saniye zaman alabilir)...
 	</string>
 	<string name="LoginProcessingResponse">
-		Yanıt İşleniyor...
+		Yanıt işleniyor...
 	</string>
 	<string name="LoginInitializingWorld">
-		Dünya Başlatılıyor...
+		Dünya başlatılıyor...
 	</string>
 	<string name="LoginDecodingImages">
 		Görüntülerin kodu çözülüyor...
@@ -128,7 +128,7 @@
 		Ağ sunucusu tarafından döndürülen sertifika imzası doğrulanamadı.  Lütfen Ağ yöneticinize başvurun.
 	</string>
 	<string name="LoginFailedNoNetwork">
-		Ağ Hatası: Bağlantı kurulamadı, lütfen ağ bağlantınızı kontrol edin.
+		Ağ hatası: Bağlantı kurulamadı, lütfen ağ bağlantınızı kontrol edin.
 	</string>
 	<string name="LoginFailed">
 		Oturum açılamadı.
@@ -1273,6 +1273,9 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin.
 	<string name="Marketplace Error Internal Import">
 		Hata: Bu öğede bir sorun var.  Daha sonra tekrar deneyin.
 	</string>
+	<string name="Open landmarks">
+		Açık yer imleri
+	</string>
 	<string name="no_transfer" value="(aktarım yok)"/>
 	<string name="no_modify" value="(deÄŸiÅŸtirme yok)"/>
 	<string name="no_copy" value="(kopya yok)"/>
@@ -4251,8 +4254,8 @@ Kötüye Kullanımı Bildirme
 	<string name="Female - Wow">
 		Kadın - Vay be
 	</string>
-	<string name="/bow1">
-		/selamlama1
+	<string name="/bow">
+		/selamlama
 	</string>
 	<string name="/clap">
 		/alkış
@@ -4776,4 +4779,172 @@ Düzenleyici yolunu çift tırnakla çevrelemeyi deneyin.
 	<string name="ParticleHiding">
 		Parçacıklar Gizleniyor
 	</string>
+	<string name="Command_AboutLand_Label">
+		Arazi hakkında
+	</string>
+	<string name="Command_Appearance_Label">
+		Görünüm
+	</string>
+	<string name="Command_Avatar_Label">
+		Avatar
+	</string>
+	<string name="Command_Build_Label">
+		İnşa Et
+	</string>
+	<string name="Command_Chat_Label">
+		Sohbet
+	</string>
+	<string name="Command_Compass_Label">
+		Pusula
+	</string>
+	<string name="Command_Destinations_Label">
+		Hedef Konumlar
+	</string>
+	<string name="Command_Gestures_Label">
+		Mimikler
+	</string>
+	<string name="Command_HowTo_Label">
+		Nasıl yapılır
+	</string>
+	<string name="Command_Inventory_Label">
+		Envanter
+	</string>
+	<string name="Command_Map_Label">
+		Harita
+	</string>
+	<string name="Command_Marketplace_Label">
+		Pazaryeri
+	</string>
+	<string name="Command_MiniMap_Label">
+		Mini-harita
+	</string>
+	<string name="Command_Move_Label">
+		Hareket Et
+	</string>
+	<string name="Command_People_Label">
+		KiÅŸiler
+	</string>
+	<string name="Command_Picks_Label">
+		Favoriler
+	</string>
+	<string name="Command_Places_Label">
+		Yerler
+	</string>
+	<string name="Command_Preferences_Label">
+		Tercihler
+	</string>
+	<string name="Command_Profile_Label">
+		Profil
+	</string>
+	<string name="Command_Search_Label">
+		Ara
+	</string>
+	<string name="Command_Snapshot_Label">
+		Anlık görüntü
+	</string>
+	<string name="Command_Speak_Label">
+		KonuÅŸ
+	</string>
+	<string name="Command_View_Label">
+		Görünüm
+	</string>
+	<string name="Command_Voice_Label">
+		Yakındaki ses
+	</string>
+	<string name="Command_AboutLand_Tooltip">
+		Ziyaret ettiÄŸiniz araziyle ilgili bilgi
+	</string>
+	<string name="Command_Appearance_Tooltip">
+		Avatarınızı değiştirin
+	</string>
+	<string name="Command_Avatar_Tooltip">
+		Eksiksiz bir avatar seçin
+	</string>
+	<string name="Command_Build_Tooltip">
+		Nesneler oluşturma ve yüzeyi şekillendirme
+	</string>
+	<string name="Command_Chat_Tooltip">
+		Metin kullanarak yakındaki kişilerle sohbet etmek
+	</string>
+	<string name="Command_Compass_Tooltip">
+		Pusula
+	</string>
+	<string name="Command_Destinations_Tooltip">
+		İlgilendiğiniz hedef konumlar
+	</string>
+	<string name="Command_Gestures_Tooltip">
+		Avatarınız için mimikler
+	</string>
+	<string name="Command_HowTo_Tooltip">
+		Genel görevleri nasıl yapacağınız
+	</string>
+	<string name="Command_Inventory_Tooltip">
+		Eşyalarınızı görüntüleyin ve kullanın
+	</string>
+	<string name="Command_Map_Tooltip">
+		Dünya haritası
+	</string>
+	<string name="Command_Marketplace_Tooltip">
+		Alışveriş yap
+	</string>
+	<string name="Command_MiniMap_Tooltip">
+		Yakındaki kişileri göster
+	</string>
+	<string name="Command_Move_Tooltip">
+		Avatarınızı hareket ettirmek
+	</string>
+	<string name="Command_People_Tooltip">
+		Arkadaşlar, gruplar ve yakındaki kişiler
+	</string>
+	<string name="Command_Picks_Tooltip">
+		Profilinizde sık kullanılan olarak gösterilecek yerler
+	</string>
+	<string name="Command_Places_Tooltip">
+		KaydettiÄŸiniz yerler
+	</string>
+	<string name="Command_Preferences_Tooltip">
+		Tercihler
+	</string>
+	<string name="Command_Profile_Tooltip">
+		Profilinizi düzenleyin veya görüntüleyin
+	</string>
+	<string name="Command_Search_Tooltip">
+		Yerler, etkinlikler ve kiÅŸiler bulmak
+	</string>
+	<string name="Command_Snapshot_Tooltip">
+		Resim çekin
+	</string>
+	<string name="Command_Speak_Tooltip">
+		Mikrofonunuzu kullanarak yakındaki kişilerle konuşun
+	</string>
+	<string name="Command_View_Tooltip">
+		Kamera açısını değiştirmek
+	</string>
+	<string name="Command_Voice_Tooltip">
+		Ses imkanına sahip yakındaki kişiler
+	</string>
+	<string name="Retain%">
+		Koru %
+	</string>
+	<string name="Detail">
+		Ayrıntı
+	</string>
+	<string name="Better Detail">
+		Daha İyi Ayrıntı
+	</string>
+	<string name="Surface">
+		Yüzey
+	</string>
+	<string name="Solid">
+		Katı
+	</string>
+	<string name="Wrap">
+		Sar
+	</string>
+	<string name="Preview">
+		Önizleme
+	</string>
+	<string name="Normal">
+		Normal
+	</string>
 </strings>
diff --git a/indra/newview/skins/default/xui/zh/floater_about.xml b/indra/newview/skins/default/xui/zh/floater_about.xml
index 0ac85d399e431eadb3df73d6c41bfeefcc21056d..7e19c124a18561dda3312da4cbfc4ffc31547cc2 100644
--- a/indra/newview/skins/default/xui/zh/floater_about.xml
+++ b/indra/newview/skins/default/xui/zh/floater_about.xml
@@ -10,7 +10,7 @@
 	<floater.string name="AboutPosition">
 		You are at [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] in [REGION] located at &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt; ([HOSTIP])
 [SERVER_VERSION]
-[[SERVER_RELEASE_NOTES_URL] [ReleaseNotes]]
+[SERVER_RELEASE_NOTES_URL]
 	</floater.string>
 	<floater.string name="AboutSystem">
 		CPU:[CPU]
diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_general.xml b/indra/newview/skins/default/xui/zh/panel_preferences_general.xml
index 29f9599c97481c979dbff065a9a051a9943f14ec..6827fab6e68db9213c3fae8cce5e0851b4a811ed 100644
--- a/indra/newview/skins/default/xui/zh/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/zh/panel_preferences_general.xml
@@ -5,15 +5,15 @@
 	</text>
 	<combo_box name="language_combobox">
 		<combo_box.item label="系統預設" name="System Default Language"/>
-		<combo_box.item label="英語" name="English"/>
-		<combo_box.item label="Dansk (Danish) - Beta" name="Danish"/>
-		<combo_box.item label="Deutsch (German) - Beta" name="Deutsch(German)"/>
-		<combo_box.item label="Español (Spanish) - Beta" name="Spanish"/>
-		<combo_box.item label="Français (French) - Beta" name="French"/>
-		<combo_box.item label="Italiano (Italian) - Beta" name="Italian"/>
-		<combo_box.item label="Polski (Polish) - Beta" name="Polish"/>
-		<combo_box.item label="Português (Portuguese) - Beta" name="Portugese"/>
-		<combo_box.item label="日本語 (Japanese) - Beta" name="(Japanese)"/>
+		<combo_box.item label="English (英語)" name="English"/>
+		<combo_box.item label="Dansk (丹麥語) - Beta" name="Danish"/>
+		<combo_box.item label="Deutsch (德語) - Beta" name="Deutsch(German)"/>
+		<combo_box.item label="Español (西班牙語) - Beta" name="Spanish"/>
+		<combo_box.item label="Français (法語) - Beta" name="French"/>
+		<combo_box.item label="Italiano (義大利語) - Beta" name="Italian"/>
+		<combo_box.item label="Polski (波蘭語) - Beta" name="Polish"/>
+		<combo_box.item label="Português (葡萄牙語) - Beta" name="Portugese"/>
+		<combo_box.item label="日本語 (日語) - Beta" name="(Japanese)"/>
 	</combo_box>
 	<text name="language_textbox2">
 		(須重新啟動)
diff --git a/indra/newview/tests/lltranslate_test.cpp b/indra/newview/tests/lltranslate_test.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..10e37fae97f8096e59166f5911dc6615bac25fc1
--- /dev/null
+++ b/indra/newview/tests/lltranslate_test.cpp
@@ -0,0 +1,345 @@
+/** 
+ * @file lltranslate_test.cpp
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#include "linden_common.h"
+
+#include "../test/lltut.h"
+#include "../lltranslate.h"
+#include "../llversioninfo.h"
+#include "../llviewercontrol.h"
+
+#include "llbufferstream.h"
+#include "lltrans.h"
+#include "llui.h"
+
+static const std::string GOOGLE_VALID_RESPONSE1 =
+"{\
+ \"data\": {\
+  \"translations\": [\
+   {\
+    \"translatedText\": \"привет\",\
+    \"detectedSourceLanguage\": \"es\"\
+   }\
+  ]\
+ }\
+}";
+
+static const std::string GOOGLE_VALID_RESPONSE2 =
+"{\
+ \"data\": {\
+  \"translations\": [\
+   {\
+    \"translatedText\": \"привет\"\
+   }\
+  ]\
+ }\
+}\
+";
+
+static const std::string GOOGLE_VALID_RESPONSE3 =
+"{\
+ \"error\": {\
+  \"errors\": [\
+   {\
+    \"domain\": \"global\",\
+    \"reason\": \"invalid\",\
+    \"message\": \"Invalid Value\"\
+   }\
+  ],\
+  \"code\": 400,\
+  \"message\": \"Invalid Value\"\
+ }\
+}";
+
+static const std::string BING_VALID_RESPONSE1 =
+"<string xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">Привет</string>";
+
+static const std::string BING_VALID_RESPONSE2 =
+"<html><body><h1>Argument Exception</h1><p>Method: Translate()</p><p>Parameter: </p>\
+<p>Message: 'from' must be a valid language</p><code></code>\
+<p>message id=3743.V2_Rest.Translate.58E8454F</p></body></html>";
+
+static const std::string BING_VALID_RESPONSE3 =
+"<html><body><h1>Argument Exception</h1><p>Method: Translate()</p>\
+<p>Parameter: appId</p><p>Message: Invalid appId&#xD;\nParameter name: appId</p>\
+<code></code><p>message id=3737.V2_Rest.Translate.56016759</p></body></html>";
+
+namespace tut
+{
+	class translate_test
+	{
+	protected:
+		void test_translation(
+			LLTranslationAPIHandler& handler,
+			int status, const std::string& resp,
+			const std::string& exp_trans, const std::string& exp_lang, const std::string& exp_err)
+		{
+			std::string translation, detected_lang, err_msg;
+			bool rc = handler.parseResponse(status, resp, translation, detected_lang, err_msg);
+			ensure_equals("rc", rc, (status == 200));
+			ensure_equals("err_msg", err_msg, exp_err);
+			ensure_equals("translation", translation, exp_trans);
+			ensure_equals("detected_lang", detected_lang,  exp_lang);
+		}
+
+		LLGoogleTranslationHandler mGoogle;
+		LLBingTranslationHandler mBing;
+	};
+
+	typedef test_group<translate_test> translate_test_group_t;
+	typedef translate_test_group_t::object translate_test_object_t;
+	tut::translate_test_group_t tut_translate("LLTranslate");
+
+	template<> template<>
+	void translate_test_object_t::test<1>()
+	{
+		test_translation(mGoogle, 200, GOOGLE_VALID_RESPONSE1, "привет", "es", "");
+	}
+
+	template<> template<>
+	void translate_test_object_t::test<2>()
+	{
+		test_translation(mGoogle, 200, GOOGLE_VALID_RESPONSE2, "привет", "", "");
+	}
+
+	template<> template<>
+	void translate_test_object_t::test<3>()
+	{
+		test_translation(mGoogle, 400, GOOGLE_VALID_RESPONSE3, "", "", "Invalid Value");
+	}
+
+	template<> template<>
+	void translate_test_object_t::test<4>()
+	{
+		test_translation(mGoogle, 400,
+			"",
+			"", "", "* Line 1, Column 1\n  Syntax error: value, object or array expected.\n");
+	}
+
+	template<> template<>
+	void translate_test_object_t::test<5>()
+	{
+		test_translation(mGoogle, 400,
+			"[]",
+			"", "", "");
+	}
+
+	template<> template<>
+	void translate_test_object_t::test<6>()
+	{
+		test_translation(mGoogle, 400,
+			"{\"oops\": \"invalid\"}",
+			"", "", "");
+	}
+
+	template<> template<>
+	void translate_test_object_t::test<7>()
+	{
+		test_translation(mGoogle, 400,
+			"{\"data\": {}}",
+			"", "", "");
+	}
+
+	template<> template<>
+	void translate_test_object_t::test<8>()
+	{
+		test_translation(mGoogle, 400,
+				"{\"data\": { \"translations\": [ {} ] }}",
+			"", "", "");
+	}
+
+	template<> template<>
+	void translate_test_object_t::test<9>()
+	{
+		test_translation(mGoogle, 400,
+				"{\"data\": { \"translations\": [ { \"translatedTextZZZ\": \"привет\", \"detectedSourceLanguageZZZ\": \"es\" } ] }}",
+			"", "", "");
+	}
+
+	template<> template<>
+	void translate_test_object_t::test<10>()
+	{
+		test_translation(mBing, 200, BING_VALID_RESPONSE1, "Привет", "", "");
+	}
+
+	template<> template<>
+	void translate_test_object_t::test<11>()
+	{
+		test_translation(mBing, 400, BING_VALID_RESPONSE2, "", "", "'from' must be a valid language");
+	}
+
+	template<> template<>
+	void translate_test_object_t::test<12>()
+	{
+		test_translation(mBing, 400, BING_VALID_RESPONSE3, "", "", "Invalid appId\nParameter name: appId");
+	}
+
+	template<> template<>
+	void translate_test_object_t::test<13>()
+	{
+		test_translation(mBing, 200,
+			"Привет</string>",
+			"Привет", "", "");
+	}
+
+	template<> template<>
+	void translate_test_object_t::test<14>()
+	{
+		test_translation(mBing, 200,
+			"<string xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">Привет",
+			"Привет", "", "");
+	}
+
+	template<> template<>
+	void translate_test_object_t::test<15>()
+	{
+		test_translation(mBing, 200,
+			"Привет",
+			"Привет", "", "");
+	}
+
+	template<> template<>
+	void translate_test_object_t::test<16>()
+	{
+		test_translation(mBing, 400,
+			"Message: some error</p>",
+			"", "", "some error");
+	}
+
+	template<> template<>
+	void translate_test_object_t::test<17>()
+	{
+		test_translation(mBing, 400,
+			"Message: some error",
+			"", "", "some error");
+	}
+
+	template<> template<>
+	void translate_test_object_t::test<18>()
+	{
+		test_translation(mBing, 400,
+			"some error</p>",
+			"", "", "some error");
+	}
+
+	template<> template<>
+	void translate_test_object_t::test<19>()
+	{
+		test_translation(mBing, 400,
+			"some error",
+			"", "", "some error");
+	}
+
+	template<> template<>
+	void translate_test_object_t::test<20>()
+	{
+		std::string url;
+		mBing.getTranslateURL(url, "en", "es", "hi");
+		ensure_equals("bing URL", url,
+			"http://api.microsofttranslator.com/v2/Http.svc/Translate?appId=dummy&text=hi&to=es&from=en");
+	}
+
+	template<> template<>
+	void translate_test_object_t::test<21>()
+	{
+		std::string url;
+		mBing.getTranslateURL(url, "", "es", "hi");
+		ensure_equals("bing URL", url,
+			"http://api.microsofttranslator.com/v2/Http.svc/Translate?appId=dummy&text=hi&to=es");
+	}
+
+	template<> template<>
+	void translate_test_object_t::test<22>()
+	{
+		std::string url;
+		mGoogle.getTranslateURL(url, "en", "es", "hi");
+		ensure_equals("google URL", url,
+			"https://www.googleapis.com/language/translate/v2?key=dummy&q=hi&target=es&source=en");
+	}
+
+	template<> template<>
+	void translate_test_object_t::test<23>()
+	{
+		std::string url;
+		mGoogle.getTranslateURL(url, "", "es", "hi");
+		ensure_equals("google URL", url,
+			"https://www.googleapis.com/language/translate/v2?key=dummy&q=hi&target=es");
+	}
+}
+
+//== Misc stubs ===============================================================
+LLControlGroup gSavedSettings("test");
+
+std::string LLUI::getLanguage() { return "en"; }
+std::string LLTrans::getString(const std::string &xml_desc, const LLStringUtil::format_map_t& args) { return "dummy"; }
+
+LLControlGroup::LLControlGroup(const std::string& name) : LLInstanceTracker<LLControlGroup, std::string>(name) {}
+std::string LLControlGroup::getString(const std::string& name) { return "dummy"; }
+LLControlGroup::~LLControlGroup() {}
+
+namespace boost {
+	void intrusive_ptr_add_ref(LLCurl::Responder*) {}
+	void intrusive_ptr_release(LLCurl::Responder*) {}
+}
+
+LLCurl::Responder::Responder() {}
+void LLCurl::Responder::completedHeader(U32, std::string const&, LLSD const&) {}
+void LLCurl::Responder::completedRaw(U32, const std::string&, const LLChannelDescriptors&, const LLIOPipe::buffer_ptr_t& buffer) {}
+void LLCurl::Responder::completed(U32, std::string const&, LLSD const&) {}
+void LLCurl::Responder::error(U32, std::string const&) {}
+void LLCurl::Responder::errorWithContent(U32, std::string const&, LLSD const&) {}
+void LLCurl::Responder::result(LLSD const&) {}
+LLCurl::Responder::~Responder() {}
+
+void LLHTTPClient::get(const std::string&, const LLSD&, ResponderPtr, const LLSD&, const F32) {}
+void LLHTTPClient::get(const std::string&, boost::intrusive_ptr<LLCurl::Responder>, const LLSD&, const F32) {}
+
+LLBufferStream::LLBufferStream(const LLChannelDescriptors& channels, LLBufferArray* buffer)
+:	std::iostream(&mStreamBuf), mStreamBuf(channels, buffer) {}
+LLBufferStream::~LLBufferStream() {}
+
+LLBufferStreamBuf::LLBufferStreamBuf(const LLChannelDescriptors&, LLBufferArray*) {}
+#if( LL_WINDOWS || __GNUC__ > 2)
+LLBufferStreamBuf::pos_type LLBufferStreamBuf::seekoff(
+	off_type off,
+	std::ios::seekdir way,
+	std::ios::openmode which)
+#else
+streampos LLBufferStreamBuf::seekoff(
+	streamoff off,
+	std::ios::seekdir way,
+	std::ios::openmode which)
+#endif
+{ return 0; }
+int LLBufferStreamBuf::sync() {return 0;}
+int LLBufferStreamBuf::underflow() {return 0;}
+int LLBufferStreamBuf::overflow(int) {return 0;}
+LLBufferStreamBuf::~LLBufferStreamBuf() {}
+
+S32 LLVersionInfo::getBuild() { return 0; }
+const std::string& LLVersionInfo::getChannel() {static std::string dummy; return dummy;}
+S32 LLVersionInfo::getMajor() { return 0; }
+S32 LLVersionInfo::getMinor() { return 0; }
+S32 LLVersionInfo::getPatch() { return 0; }
diff --git a/indra/win_crash_logger/llcrashloggerwindows.cpp b/indra/win_crash_logger/llcrashloggerwindows.cpp
old mode 100644
new mode 100755
index 170babbb985695ef22fcb6b78fd1b9e65003f9cf..36d988ead750b3d9689068d5592b9e380af5df39
--- a/indra/win_crash_logger/llcrashloggerwindows.cpp
+++ b/indra/win_crash_logger/llcrashloggerwindows.cpp
@@ -370,5 +370,6 @@ bool LLCrashLoggerWindows::cleanup()
 		sleep_and_pump_messages(3);
 	}
 	PostQuitMessage(0);
+	commonCleanup();
 	return true;
 }