diff options
Diffstat (limited to 'indra')
950 files changed, 44041 insertions, 2713 deletions
diff --git a/indra/linux_crash_logger/llcrashloggerlinux.cpp b/indra/linux_crash_logger/llcrashloggerlinux.cpp index 7316717193..62465f9937 100644..100755 --- 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 index 65d5e4e653..dae6c46651 100644..100755 --- a/indra/linux_crash_logger/llcrashloggerlinux.h +++ b/indra/linux_crash_logger/llcrashloggerlinux.h @@ -39,6 +39,7 @@ public: virtual bool mainLoop(); virtual void updateApplication(const std::string& = LLStringUtil::null); virtual void gatherPlatformSpecificFiles(); + virtual bool cleanup(); }; #endif diff --git a/indra/llcommon/llinstancetracker.h b/indra/llcommon/llinstancetracker.h index 5a3990a8df..34d841a4e0 100644 --- a/indra/llcommon/llinstancetracker.h +++ b/indra/llcommon/llinstancetracker.h @@ -193,7 +193,12 @@ public: } protected: - LLInstanceTracker(KEY key) { add_(key); } + LLInstanceTracker(KEY key) + { + // make sure static data outlives all instances + getStatic(); + add_(key); + } virtual ~LLInstanceTracker() { // it's unsafe to delete instances of this type while all instances are being iterated over. @@ -281,7 +286,8 @@ public: protected: LLInstanceTracker() { - // it's safe but unpredictable to create instances of this type while all instances are being iterated over. I hate unpredictable. This assert will probably be turned on early in the next development cycle. + // make sure static data outlives all instances + getStatic(); getSet_().insert(static_cast<T*>(this)); } virtual ~LLInstanceTracker() diff --git a/indra/llcrashlogger/llcrashlogger.cpp b/indra/llcrashlogger/llcrashlogger.cpp index 331a1692ee..3461aa3e6c 100644..100755 --- 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 index 5d0cb5931c..1510d7e0b3 100644..100755 --- a/indra/llcrashlogger/llcrashlogger.h +++ b/indra/llcrashlogger/llcrashlogger.h @@ -48,7 +48,8 @@ public: 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/llmessage/llcurl.h b/indra/llmessage/llcurl.h index 87de202717..87de202717 100644..100755 --- a/indra/llmessage/llcurl.h +++ b/indra/llmessage/llcurl.h diff --git a/indra/llui/llcommandmanager.cpp b/indra/llui/llcommandmanager.cpp index 128ba609cb..0e2f3f1961 100644 --- a/indra/llui/llcommandmanager.cpp +++ b/indra/llui/llcommandmanager.cpp @@ -41,7 +41,7 @@ // LLCommandId class // -const LLCommandId LLCommandId::null = LLCommandId(); +const LLCommandId LLCommandId::null = LLCommandId("null command"); // // LLCommand class @@ -67,10 +67,11 @@ LLCommand::Params::Params() } LLCommand::LLCommand(const LLCommand::Params& p) - : mAvailableInToybox(p.available_in_toybox) + : mIdentifier(p.name) + , mAvailableInToybox(p.available_in_toybox) , mIcon(p.icon) - , mIdentifier(p.name) , mLabelRef(p.label_ref) + , mName(p.name) , mTooltipRef(p.tooltip_ref) , mExecuteFunction(p.execute_function) , mExecuteParameters(p.execute_parameters) @@ -134,7 +135,7 @@ void LLCommandManager::addCommand(LLCommand * command) mCommandIndices[command_id.uuid()] = mCommands.size(); mCommands.push_back(command); - lldebugs << "Successfully added command: " << command->id().name() << llendl; + lldebugs << "Successfully added command: " << command->name() << llendl; } //static diff --git a/indra/llui/llcommandmanager.h b/indra/llui/llcommandmanager.h index 9b93ab735a..a7276a48aa 100644 --- a/indra/llui/llcommandmanager.h +++ b/indra/llui/llcommandmanager.h @@ -50,31 +50,20 @@ public: {} }; - LLCommandId() - : mName("null command") - { - mUUID = LLUUID::generateNewID(mName); - } - LLCommandId(const std::string& name) - : mName(name) { mUUID = LLUUID::generateNewID(name); } LLCommandId(const Params& p) - : mName(p.name) { mUUID = LLUUID::generateNewID(p.name); } LLCommandId(const LLUUID& uuid) - : mName(""), - mUUID(uuid) - { - } + : mUUID(uuid) + {} - const std::string& name() const { return mName; } const LLUUID& uuid() const { return mUUID; } bool operator!=(const LLCommandId& command) const @@ -87,15 +76,9 @@ public: return (mUUID == command.mUUID); } - bool operator<(const LLCommandId& command) const - { - return (mName < command.mName); - } - static const LLCommandId null; private: - std::string mName; LLUUID mUUID; }; @@ -137,6 +120,7 @@ public: const std::string& icon() const { return mIcon; } const LLCommandId& id() const { return mIdentifier; } const std::string& labelRef() const { return mLabelRef; } + const std::string& name() const { return mName; } const std::string& tooltipRef() const { return mTooltipRef; } const std::string& executeFunctionName() const { return mExecuteFunction; } @@ -160,6 +144,7 @@ private: bool mAvailableInToybox; std::string mIcon; std::string mLabelRef; + std::string mName; std::string mTooltipRef; std::string mExecuteFunction; diff --git a/indra/llui/lldockablefloater.cpp b/indra/llui/lldockablefloater.cpp index ca2dc644a4..aea58be12a 100644 --- a/indra/llui/lldockablefloater.cpp +++ b/indra/llui/lldockablefloater.cpp @@ -162,10 +162,15 @@ void LLDockableFloater::setVisible(BOOL visible) void LLDockableFloater::setMinimized(BOOL minimize) { - if(minimize) + if(minimize && isDocked()) { + // minimizing a docked floater just hides it setVisible(FALSE); } + else + { + LLFloater::setMinimized(minimize); + } } LLView * LLDockableFloater::getDockWidget() diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp index d1d840729d..7100ea13a7 100644 --- a/indra/llui/llfloater.cpp +++ b/indra/llui/llfloater.cpp @@ -165,6 +165,7 @@ LLFloater::Params::Params() : title("title"), short_title("short_title"), single_instance("single_instance", false), + reuse_instance("reuse_instance", false), can_resize("can_resize", false), can_minimize("can_minimize", true), can_close("can_close", true), @@ -174,6 +175,7 @@ LLFloater::Params::Params() save_rect("save_rect", false), save_visibility("save_visibility", false), can_dock("can_dock", false), + show_title("show_title", true), open_positioning("open_positioning", LLFloaterEnums::OPEN_POSITIONING_NONE), specified_left("specified_left"), specified_bottom("specified_bottom"), @@ -238,6 +240,7 @@ LLFloater::LLFloater(const LLSD& key, const LLFloater::Params& p) mTitle(p.title), mShortTitle(p.short_title), mSingleInstance(p.single_instance), + mReuseInstance(p.reuse_instance.isProvided() ? p.reuse_instance : p.single_instance), // reuse single-instance floaters by default mKey(key), mCanTearOff(p.can_tear_off), mCanMinimize(p.can_minimize), @@ -538,7 +541,6 @@ LLFloater::~LLFloater() delete mResizeHandle[i]; } - storeRectControl(); setVisible(false); // We're not visible if we're destroyed storeVisibilityControl(); storeDockStateControl(); @@ -683,7 +685,12 @@ void LLFloater::openFloater(const LLSD& key) } else { - applyControlsAndPosition(LLFloaterReg::getLastFloaterCascading()); + LLFloater* floater_to_stack = LLFloaterReg::getLastFloaterInGroup(mInstanceName); + if (!floater_to_stack) + { + floater_to_stack = LLFloaterReg::getLastFloaterCascading(); + } + applyControlsAndPosition(floater_to_stack); setMinimized(FALSE); setVisibleAndFrontmost(mAutoFocus); } @@ -776,12 +783,19 @@ void LLFloater::closeFloater(bool app_quitting) else { setVisible(FALSE); + if (!mReuseInstance) + { + destroy(); + } } } else { setVisible(FALSE); // hide before destroying (so handleVisibilityChange() gets called) - destroy(); + if (!mReuseInstance) + { + destroy(); + } } } } @@ -861,9 +875,16 @@ bool LLFloater::applyRectControl() { bool saved_rect = false; - // If we have a saved rect, use it - if (mRectControl.size() > 1) + LLFloater* last_in_group = LLFloaterReg::getLastFloaterInGroup(mInstanceName); + if (last_in_group && last_in_group != this) { + // other floaters in our group, position ourselves relative to them and don't save the rect + mRectControl.clear(); + mOpenPositioning = LLFloaterEnums::OPEN_POSITIONING_CASCADE_GROUP; + } + else if (mRectControl.size() > 1) + { + // If we have a saved rect, use it const LLRect& rect = getControlGroup()->getRect(mRectControl); saved_rect = rect.notEmpty(); if (saved_rect) @@ -912,6 +933,7 @@ void LLFloater::applyPositioning(LLFloater* other) } break; + case LLFloaterEnums::OPEN_POSITIONING_CASCADE_GROUP: case LLFloaterEnums::OPEN_POSITIONING_CASCADING: if (other != NULL) { @@ -1051,6 +1073,7 @@ void LLFloater::handleReshape(const LLRect& new_rect, bool by_user) if (by_user) { storeRectControl(); + mOpenPositioning = LLFloaterEnums::OPEN_POSITIONING_NONE; } // if not minimized, adjust all snapped dependents to new shape @@ -1142,10 +1165,6 @@ void LLFloater::setMinimized(BOOL minimize) mButtonsEnabled[BUTTON_RESTORE] = TRUE; } - if (mDragHandle) - { - mDragHandle->setVisible(TRUE); - } setBorderVisible(TRUE); for(handle_set_iter_t dependent_it = mDependents.begin(); @@ -1296,19 +1315,9 @@ void LLFloater::setIsChrome(BOOL is_chrome) mButtons[BUTTON_CLOSE]->setToolTip(LLStringExplicit(getButtonTooltip(Params(), BUTTON_CLOSE, is_chrome))); } - // no titles displayed on "chrome" floaters - if (mDragHandle) - mDragHandle->setTitleVisible(!is_chrome); - LLPanel::setIsChrome(is_chrome); } -void LLFloater::setTitleVisible(bool visible) -{ - if (mDragHandle) - mDragHandle->setTitleVisible(visible); -} - // Change the draw style to account for the foreground state. void LLFloater::setForeground(BOOL front) { @@ -1396,7 +1405,10 @@ void LLFloater::moveResizeHandlesToFront() BOOL LLFloater::isFrontmost() { - return gFloaterView && gFloaterView->getFrontmost() == this && getVisible(); + LLFloaterView* floater_view = getParentByType<LLFloaterView>(); + return getVisible() + && (floater_view + && floater_view->getFrontmost() == this); } void LLFloater::addDependentFloater(LLFloater* floaterp, BOOL reposition) @@ -1469,6 +1481,7 @@ BOOL LLFloater::handleMouseDown(S32 x, S32 y, MASK mask) if(offerClickToButton(x, y, mask, BUTTON_CLOSE)) return TRUE; if(offerClickToButton(x, y, mask, BUTTON_RESTORE)) return TRUE; if(offerClickToButton(x, y, mask, BUTTON_TEAR_OFF)) return TRUE; + if(offerClickToButton(x, y, mask, BUTTON_DOCK)) return TRUE; // Otherwise pass to drag handle for movement return mDragHandle->handleMouseDown(x, y, mask); @@ -1574,6 +1587,13 @@ void LLFloater::setDocked(bool docked, bool pop_on_undock) { mDocked = docked; mButtonsEnabled[BUTTON_DOCK] = !mDocked; + + if (mDocked) + { + setMinimized(FALSE); + mOpenPositioning = LLFloaterEnums::OPEN_POSITIONING_NONE; + } + updateTitleButtons(); storeDockStateControl(); @@ -1812,7 +1832,7 @@ void LLFloater::draw() { drawChild(mButtons[i]); } - drawChild(mDragHandle); + drawChild(mDragHandle, 0, 0, TRUE); } else { @@ -2963,6 +2983,7 @@ void LLFloater::initFromParams(const LLFloater::Params& p) mHeaderHeight = p.header_height; mLegacyHeaderHeight = p.legacy_header_height; mSingleInstance = p.single_instance; + mReuseInstance = p.reuse_instance.isProvided() ? p.reuse_instance : p.single_instance; mOpenPositioning = p.open_positioning; mSpecifiedLeft = p.specified_left; @@ -2991,6 +3012,11 @@ void LLFloater::initFromParams(const LLFloater::Params& p) { setCloseCallback(initCommitCallback(p.close_callback)); } + + if (mDragHandle) + { + mDragHandle->setTitleVisible(p.show_title); + } } boost::signals2::connection LLFloater::setMinimizeCallback( const commit_signal_t::slot_type& cb ) @@ -3239,7 +3265,6 @@ void LLFloater::stackWith(LLFloater& other) next_rect.setLeftTopAndSize(next_rect.mLeft, next_rect.mTop, getRect().getWidth(), getRect().getHeight()); - mRectControl.clear(); // don't save rect of stacked floaters setShape(next_rect); } diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h index 8beb11507e..73e9c9e831 100644 --- a/indra/llui/llfloater.h +++ b/indra/llui/llfloater.h @@ -66,9 +66,9 @@ namespace LLFloaterEnums { OPEN_POSITIONING_NONE, OPEN_POSITIONING_CASCADING, + OPEN_POSITIONING_CASCADE_GROUP, OPEN_POSITIONING_CENTERED, OPEN_POSITIONING_SPECIFIED, - OPEN_POSITIONING_COUNT }; } @@ -120,6 +120,7 @@ public: short_title; Optional<bool> single_instance, + reuse_instance, can_resize, can_minimize, can_close, @@ -128,7 +129,8 @@ public: save_rect, save_visibility, save_dock_state, - can_dock; + can_dock, + show_title; Optional<LLFloaterEnums::EOpenPositioning> open_positioning; Optional<S32> specified_left; @@ -209,7 +211,6 @@ public: std::string getTitle() const; void setShortTitle( const std::string& short_title ); std::string getShortTitle() const; - void setTitleVisible(bool visible); virtual void setMinimized(BOOL b); void moveResizeHandlesToFront(); void addDependentFloater(LLFloater* dependent, BOOL reposition = TRUE); @@ -409,6 +410,7 @@ private: LLUIString mShortTitle; BOOL mSingleInstance; // TRUE if there is only ever one instance of the floater + bool mReuseInstance; // true if we want to hide the floater when we close it instead of destroying it std::string mInstanceName; // Store the instance name so we can remove ourselves from the list BOOL mCanTearOff; diff --git a/indra/llui/llfloaterreg.cpp b/indra/llui/llfloaterreg.cpp index 0edfc8da2d..e144b68f5e 100644 --- a/indra/llui/llfloaterreg.cpp +++ b/indra/llui/llfloaterreg.cpp @@ -167,6 +167,7 @@ LLFloater* LLFloaterReg::getInstance(const std::string& name, const LLSD& key) res->setInstanceName(name); LLFloater *last_floater = (list.empty() ? NULL : list.back()); + res->applyControlsAndPosition(last_floater); gFloaterView->adjustToFitScreen(res, false); @@ -462,16 +463,16 @@ void LLFloaterReg::toggleInstanceOrBringToFront(const LLSD& sdname, const LLSD& else if (instance->isMinimized()) { instance->setMinimized(FALSE); - instance->setFocus(TRUE); + instance->setVisibleAndFrontmost(); } else if (!instance->isShown()) { instance->openFloater(key); - instance->setFocus(TRUE); + instance->setVisibleAndFrontmost(); } - else if (!instance->hasFocus() && !instance->getIsChrome()) + else if (!instance->isFrontmost()) { - instance->setFocus(TRUE); + instance->setVisibleAndFrontmost(); } else { diff --git a/indra/llui/llkeywords.cpp b/indra/llui/llkeywords.cpp index ceec9c7eb1..c1cd04186b 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 f6d75b7e75..d050cd7d7c 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 @@ private: LLWString mToken; LLColor3 mColor; LLWString mToolTip; + LLWString mDelimiter; }; class LLKeywords @@ -85,7 +107,8 @@ public: 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/lllayoutstack.cpp b/indra/llui/lllayoutstack.cpp index 4991c4afa6..0e7060e22c 100644 --- a/indra/llui/lllayoutstack.cpp +++ b/indra/llui/lllayoutstack.cpp @@ -47,6 +47,19 @@ void LLLayoutStack::OrientationNames::declareValues() // // LLLayoutPanel // +LLLayoutPanel::Params::Params() +: expanded_min_dim("expanded_min_dim", 0), + min_dim("min_dim", 0), + max_dim("max_dim", S32_MAX), + user_resize("user_resize", true), + auto_resize("auto_resize", true) +{ + addSynonym(min_dim, "min_width"); + addSynonym(min_dim, "min_height"); + addSynonym(max_dim, "max_width"); + addSynonym(max_dim, "max_height"); +} + LLLayoutPanel::LLLayoutPanel(const Params& p) : LLPanel(p), mExpandedMinDimSpecified(false), @@ -527,8 +540,8 @@ void LLLayoutStack::updateLayout(BOOL force_resize) // not enough room to fit existing contents if (force_resize == FALSE // layout did not complete by reaching target position - && ((mOrientation == VERTICAL && cur_y != -mPanelSpacing) - || (mOrientation == HORIZONTAL && cur_x != getRect().getWidth() + mPanelSpacing))) + && ((mOrientation == VERTICAL && llround(cur_y) != -mPanelSpacing) + || (mOrientation == HORIZONTAL && llround(cur_x) != getRect().getWidth() + mPanelSpacing))) { // do another layout pass with all stacked elements contributing // even those that don't usually resize diff --git a/indra/llui/lllayoutstack.h b/indra/llui/lllayoutstack.h index 5d79505fc3..ede6149a80 100644 --- a/indra/llui/lllayoutstack.h +++ b/indra/llui/lllayoutstack.h @@ -161,18 +161,7 @@ public: Optional<bool> user_resize, auto_resize; - Params() - : expanded_min_dim("expanded_min_dim", 0), - min_dim("min_dim", 0), - max_dim("max_dim", 0), - user_resize("user_resize", true), - auto_resize("auto_resize", true) - { - addSynonym(min_dim, "min_width"); - addSynonym(min_dim, "min_height"); - addSynonym(max_dim, "max_width"); - addSynonym(max_dim, "max_height"); - } + Params(); }; ~LLLayoutPanel(); diff --git a/indra/llui/lltabcontainer.cpp b/indra/llui/lltabcontainer.cpp index 9c6a76822c..ad1f3c504d 100644 --- a/indra/llui/lltabcontainer.cpp +++ b/indra/llui/lltabcontainer.cpp @@ -548,23 +548,23 @@ BOOL LLTabContainer::handleMouseDown( S32 x, S32 y, MASK mask ) } S32 tab_count = getTabCount(); - if (tab_count > 0) + if (tab_count > 0 && !getTabsHidden()) { LLTabTuple* firsttuple = getTab(0); LLRect tab_rect; if (mIsVertical) { tab_rect = LLRect(firsttuple->mButton->getRect().mLeft, - has_scroll_arrows ? mPrevArrowBtn->getRect().mBottom - tabcntrv_pad : mPrevArrowBtn->getRect().mTop, - firsttuple->mButton->getRect().mRight, - has_scroll_arrows ? mNextArrowBtn->getRect().mTop + tabcntrv_pad : mNextArrowBtn->getRect().mBottom ); + has_scroll_arrows ? mPrevArrowBtn->getRect().mBottom - tabcntrv_pad : mPrevArrowBtn->getRect().mTop, + firsttuple->mButton->getRect().mRight, + has_scroll_arrows ? mNextArrowBtn->getRect().mTop + tabcntrv_pad : mNextArrowBtn->getRect().mBottom ); } else { tab_rect = LLRect(has_scroll_arrows ? mPrevArrowBtn->getRect().mRight : mJumpPrevArrowBtn->getRect().mLeft, - firsttuple->mButton->getRect().mTop, - has_scroll_arrows ? mNextArrowBtn->getRect().mLeft : mJumpNextArrowBtn->getRect().mRight, - firsttuple->mButton->getRect().mBottom ); + firsttuple->mButton->getRect().mTop, + has_scroll_arrows ? mNextArrowBtn->getRect().mLeft : mJumpNextArrowBtn->getRect().mRight, + firsttuple->mButton->getRect().mBottom ); } if( tab_rect.pointInRect( x, y ) ) { @@ -681,7 +681,7 @@ BOOL LLTabContainer::handleToolTip( S32 x, S32 y, MASK mask) { static LLUICachedControl<S32> tabcntrv_pad ("UITabCntrvPad", 0); BOOL handled = LLPanel::handleToolTip( x, y, mask); - if (!handled && getTabCount() > 0) + if (!handled && getTabCount() > 0 && !getTabsHidden()) { LLTabTuple* firsttuple = getTab(0); @@ -812,7 +812,9 @@ BOOL LLTabContainer::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, EDrag { BOOL has_scroll_arrows = (getMaxScrollPos() > 0); - if( mDragAndDropDelayTimer.getStarted() && mDragAndDropDelayTimer.getElapsedTimeF32() > SCROLL_DELAY_TIME ) + if( !getTabsHidden() + && mDragAndDropDelayTimer.getStarted() + && mDragAndDropDelayTimer.getElapsedTimeF32() > SCROLL_DELAY_TIME ) { if (has_scroll_arrows) { diff --git a/indra/llui/lltoolbar.cpp b/indra/llui/lltoolbar.cpp index 629c7d9bc7..515605200e 100644 --- a/indra/llui/lltoolbar.cpp +++ b/indra/llui/lltoolbar.cpp @@ -217,7 +217,7 @@ bool LLToolBar::addCommand(const LLCommandId& commandId, int rank) if ((rank >= mButtonCommands.size()) || (rank == RANK_NONE)) { // In that case, back load - mButtonCommands.push_back(commandId); + mButtonCommands.push_back(command->id()); mButtons.push_back(button); } else @@ -232,7 +232,7 @@ bool LLToolBar::addCommand(const LLCommandId& commandId, int rank) rank--; } // ...then insert - mButtonCommands.insert(it_command,commandId); + mButtonCommands.insert(it_command, command->id()); mButtons.insert(it_button,button); } @@ -302,7 +302,50 @@ bool LLToolBar::enableCommand(const LLCommandId& commandId, bool enabled) command_id_map::iterator it = mButtonMap.find(commandId.uuid()); if (it != mButtonMap.end()) { - it->second->setEnabled(enabled); + command_button = it->second; + command_button->setEnabled(enabled); + } + } + + return (command_button != NULL); +} + +bool LLToolBar::stopCommandInProgress(const LLCommandId& commandId) +{ + // + // Note from Leslie: + // + // This implementation was largely put in place to handle EXP-1348 which is related to + // dragging and dropping the "speak" button. The "speak" button can be in one of two + // modes, i.e., either a toggle action or a push-to-talk action. Because of this it + // responds to mouse down and mouse up in different ways, based on which behavior the + // button is currently set to obey. This was the simplest way of getting the button + // to turn off the microphone for both behaviors without risking duplicate state. + // + + LLToolBarButton * command_button = NULL; + + if (commandId != LLCommandId::null) + { + LLCommand* command = LLCommandManager::instance().getCommand(commandId); + llassert(command); + + // If this command has an explicit function for execution stop + if (command->executeStopFunctionName().length() > 0) + { + command_id_map::iterator it = mButtonMap.find(commandId.uuid()); + if (it != mButtonMap.end()) + { + command_button = it->second; + llassert(command_button->mIsRunningSignal); + + // Check to see if it is running + if ((*command_button->mIsRunningSignal)(command_button, command->isRunningParameters())) + { + // Trigger an additional button commit, which calls mouse down, mouse up and commit + command_button->onCommit(); + } + } } } @@ -778,7 +821,7 @@ LLToolBarButton* LLToolBar::createButton(const LLCommandId& id) if (!commandp) return NULL; LLToolBarButton::Params button_p; - button_p.name = id.name(); + button_p.name = commandp->name(); button_p.label = LLTrans::getString(commandp->labelRef()); button_p.tool_tip = LLTrans::getString(commandp->tooltipRef()); button_p.image_overlay = LLUI::getUIImage(commandp->icon()); @@ -956,13 +999,13 @@ BOOL LLToolBarButton::handleHover(S32 x, S32 y, MASK mask) { if (!mIsDragged) { - mStartDragItemCallback(x,y,mId.uuid()); + mStartDragItemCallback(x, y, this); mIsDragged = true; handled = TRUE; } else { - handled = mHandleDragItemCallback(x,y,mId.uuid(),LLAssetType::AT_WIDGET); + handled = mHandleDragItemCallback(x, y, mId.uuid(), LLAssetType::AT_WIDGET); } } else diff --git a/indra/llui/lltoolbar.h b/indra/llui/lltoolbar.h index 616710ea70..e634e57f93 100644 --- a/indra/llui/lltoolbar.h +++ b/indra/llui/lltoolbar.h @@ -36,8 +36,9 @@ #include "llassettype.h" class LLToolBar; +class LLToolBarButton; -typedef boost::function<void (S32 x, S32 y, const LLUUID& uuid)> tool_startdrag_callback_t; +typedef boost::function<void (S32 x, S32 y, LLToolBarButton* button)> tool_startdrag_callback_t; typedef boost::function<BOOL (S32 x, S32 y, const LLUUID& uuid, LLAssetType::EType type)> tool_handledrag_callback_t; typedef boost::function<BOOL (void* data, S32 x, S32 y, LLToolBar* toolbar)> tool_handledrop_callback_t; @@ -185,6 +186,7 @@ public: int removeCommand(const LLCommandId& commandId); // Returns the rank the removed command was at, RANK_NONE if not found bool hasCommand(const LLCommandId& commandId) const; bool enableCommand(const LLCommandId& commandId, bool enabled); + bool stopCommandInProgress(const LLCommandId& commandId); void setStartDragCallback(tool_startdrag_callback_t cb) { mStartDragItemCallback = cb; } void setHandleDragCallback(tool_handledrag_callback_t cb) { mHandleDragItemCallback = cb; } diff --git a/indra/llui/llview.cpp b/indra/llui/llview.cpp index fdb84f1ec5..3fd7e48428 100644 --- a/indra/llui/llview.cpp +++ b/indra/llui/llview.cpp @@ -721,7 +721,7 @@ LLView* LLView::childrenHandleCharEvent(const std::string& desc, const METHOD& m // XDATA might be MASK, or S32 clicks template <typename METHOD, typename XDATA> -LLView* LLView::childrenHandleMouseEvent(const METHOD& method, S32 x, S32 y, XDATA extra) +LLView* LLView::childrenHandleMouseEvent(const METHOD& method, S32 x, S32 y, XDATA extra, bool allow_mouse_block) { BOOST_FOREACH(LLView* viewp, mChildList) { @@ -734,7 +734,7 @@ LLView* LLView::childrenHandleMouseEvent(const METHOD& method, S32 x, S32 y, XDA } if ((viewp->*method)( local_x, local_y, extra ) - || viewp->blockMouseEvent( local_x, local_y )) + || (allow_mouse_block && viewp->blockMouseEvent( local_x, local_y ))) { viewp->logMouseEvent(); return viewp; @@ -1021,7 +1021,7 @@ BOOL LLView::handleMiddleMouseUp(S32 x, S32 y, MASK mask) LLView* LLView::childrenHandleScrollWheel(S32 x, S32 y, S32 clicks) { - return childrenHandleMouseEvent(&LLView::handleScrollWheel, x, y, clicks); + return childrenHandleMouseEvent(&LLView::handleScrollWheel, x, y, clicks, false); } // Called during downward traversal diff --git a/indra/llui/llview.h b/indra/llui/llview.h index 6d1dda90af..08828e55e6 100644 --- a/indra/llui/llview.h +++ b/indra/llui/llview.h @@ -565,7 +565,7 @@ protected: private: template <typename METHOD, typename XDATA> - LLView* childrenHandleMouseEvent(const METHOD& method, S32 x, S32 y, XDATA extra); + LLView* childrenHandleMouseEvent(const METHOD& method, S32 x, S32 y, XDATA extra, bool allow_mouse_block = true); template <typename METHOD, typename CHARTYPE> LLView* childrenHandleCharEvent(const std::string& desc, const METHOD& method, diff --git a/indra/llxuixml/llinitparam.h b/indra/llxuixml/llinitparam.h index 1e295ada2d..183472450d 100644 --- a/indra/llxuixml/llinitparam.h +++ b/indra/llxuixml/llinitparam.h @@ -982,7 +982,7 @@ namespace LLInitParam if (parser.readValue(name)) { // try to parse a per type named value - if (name_value_lookup_t::getValueFromName(name, typed_param.mValues)) + if (name_value_lookup_t::getValueFromName(name, value)) { typed_param.add(value); typed_param.mValues.back().setValueName(name); @@ -1013,7 +1013,7 @@ namespace LLInitParam bool value_written = parser.writeValue(*it, name_stack); if (!value_written) { - std::string calculated_key = typed_param.calcValueName(typed_param.getValue()); + std::string calculated_key = it->calcValueName(key); if (!parser.writeValue(calculated_key, name_stack)) { break; diff --git a/indra/llxuixml/llxuiparser.cpp b/indra/llxuixml/llxuiparser.cpp index d4556113ea..878f992178 100644 --- a/indra/llxuixml/llxuiparser.cpp +++ b/indra/llxuixml/llxuiparser.cpp @@ -51,6 +51,14 @@ static LLInitParam::Parser::parser_read_func_map_t sXSDReadFuncs; static LLInitParam::Parser::parser_write_func_map_t sXSDWriteFuncs; static LLInitParam::Parser::parser_inspect_func_map_t sXSDInspectFuncs; +static LLInitParam::Parser::parser_read_func_map_t sSimpleXUIReadFuncs; +static LLInitParam::Parser::parser_write_func_map_t sSimpleXUIWriteFuncs; +static LLInitParam::Parser::parser_inspect_func_map_t sSimpleXUIInspectFuncs; + +const char* NO_VALUE_MARKER = "no_value"; + +const S32 LINE_NUMBER_HERE = 0; + struct MaxOccur : public LLInitParam::ChoiceBlock<MaxOccur> { Alternative<int> count; @@ -1190,12 +1198,6 @@ struct ScopedFile LLFILE* mFile; }; -static LLInitParam::Parser::parser_read_func_map_t sSimpleXUIReadFuncs; -static LLInitParam::Parser::parser_write_func_map_t sSimpleXUIWriteFuncs; -static LLInitParam::Parser::parser_inspect_func_map_t sSimpleXUIInspectFuncs; - -const char* NO_VALUE_MARKER = "no_value"; - LLSimpleXUIParser::LLSimpleXUIParser(LLSimpleXUIParser::element_start_callback_t element_cb) : Parser(sSimpleXUIReadFuncs, sSimpleXUIWriteFuncs, sSimpleXUIInspectFuncs), mCurReadDepth(0), @@ -1300,6 +1302,11 @@ void LLSimpleXUIParser::characterDataHandler(void *userData, const char *s, int self->characterData(s, len); } +void LLSimpleXUIParser::characterData(const char *s, int len) +{ + mTextContents += std::string(s, len); +} + void LLSimpleXUIParser::startElement(const char *name, const char **atts) { processText(); @@ -1372,6 +1379,37 @@ void LLSimpleXUIParser::startElement(const char *name, const char **atts) } +void LLSimpleXUIParser::endElement(const char *name) +{ + bool has_text = processText(); + + // no text, attributes, or children + if (!has_text && mEmptyLeafNode.back()) + { + // submit this as a valueless name (even though there might be text contents we haven't seen yet) + mCurAttributeValueBegin = NO_VALUE_MARKER; + mOutputStack.back().first->submitValue(mNameStack, *this, mParseSilently); + } + + if (--mOutputStack.back().second == 0) + { + if (mOutputStack.empty()) + { + LL_ERRS("ReadXUI") << "Parameter block output stack popped while empty." << LL_ENDL; + } + mOutputStack.pop_back(); + } + + S32 num_tokens_to_pop = mTokenSizeStack.back(); + mTokenSizeStack.pop_back(); + while(num_tokens_to_pop-- > 0) + { + mNameStack.pop_back(); + } + mScope.pop_back(); + mEmptyLeafNode.pop_back(); +} + bool LLSimpleXUIParser::readAttributes(const char **atts) { typedef boost::tokenizer<boost::char_separator<char> > tokenizer; @@ -1421,43 +1459,6 @@ bool LLSimpleXUIParser::processText() return false; } -void LLSimpleXUIParser::endElement(const char *name) -{ - bool has_text = processText(); - - // no text, attributes, or children - if (!has_text && mEmptyLeafNode.back()) - { - // submit this as a valueless name (even though there might be text contents we haven't seen yet) - mCurAttributeValueBegin = NO_VALUE_MARKER; - mOutputStack.back().first->submitValue(mNameStack, *this, mParseSilently); - } - - if (--mOutputStack.back().second == 0) - { - if (mOutputStack.empty()) - { - LL_ERRS("ReadXUI") << "Parameter block output stack popped while empty." << LL_ENDL; - } - mOutputStack.pop_back(); - } - - S32 num_tokens_to_pop = mTokenSizeStack.back(); - mTokenSizeStack.pop_back(); - while(num_tokens_to_pop-- > 0) - { - mNameStack.pop_back(); - } - mScope.pop_back(); - mEmptyLeafNode.pop_back(); -} - -void LLSimpleXUIParser::characterData(const char *s, int len) -{ - mTextContents += std::string(s, len); -} - - /*virtual*/ std::string LLSimpleXUIParser::getCurrentElementName() { std::string full_name; @@ -1471,8 +1472,6 @@ void LLSimpleXUIParser::characterData(const char *s, int len) return full_name; } -const S32 LINE_NUMBER_HERE = 0; - void LLSimpleXUIParser::parserWarning(const std::string& message) { #ifdef LL_WINDOWS diff --git a/indra/mac_crash_logger/llcrashloggermac.cpp b/indra/mac_crash_logger/llcrashloggermac.cpp index b555e92b96..8f1c1a2dd0 100644..100755 --- 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 7288bf6933..bef775cdb8 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/commands.xml b/indra/newview/app_settings/commands.xml index 391a864846..a44b895f7b 100644 --- a/indra/newview/app_settings/commands.xml +++ b/indra/newview/app_settings/commands.xml @@ -10,7 +10,7 @@ is_running_function="Floater.IsOpen" is_running_parameters="about_land" /> - <command name="appearance" + <command name="appearance" available_in_toybox="true" icon="Command_Appearance_Icon" label_ref="Command_Appearance_Label" diff --git a/indra/newview/app_settings/keywords.ini b/indra/newview/app_settings/keywords.ini index b5f105439c..82b43432eb 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 7396209e27..7cfbba3160 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -1836,7 +1836,7 @@ <key>Type</key> <string>Boolean</string> <key>Value</key> - <integer>0</integer> + <integer>1</integer> </map> <key>Cursor3D</key> <map> @@ -4257,7 +4257,7 @@ <key>Type</key> <string>Boolean</string> <key>Value</key> - <integer>1</integer> + <integer>0</integer> </map> <key>InventoryDisplayOutbox</key> <map> @@ -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> diff --git a/indra/newview/character/avatar_lad.xml b/indra/newview/character/avatar_lad.xml index 5d6b10c047..6641c80b94 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 index 9ad313a9a7..9ad313a9a7 100644..100755 --- a/indra/newview/featuretable.txt +++ b/indra/newview/featuretable.txt diff --git a/indra/newview/installers/windows/lang_ru.nsi b/indra/newview/installers/windows/lang_ru.nsi Binary files differindex 23a0252200..de7affe08a 100644 --- a/indra/newview/installers/windows/lang_ru.nsi +++ b/indra/newview/installers/windows/lang_ru.nsi diff --git a/indra/newview/installers/windows/lang_tr.nsi b/indra/newview/installers/windows/lang_tr.nsi Binary files differindex e5468c6e9d..5e7e3d797b 100644 --- a/indra/newview/installers/windows/lang_tr.nsi +++ b/indra/newview/installers/windows/lang_tr.nsi diff --git a/indra/newview/installers/windows/lang_zh.nsi b/indra/newview/installers/windows/lang_zh.nsi Binary files differindex f4fb70a726..ecf1185fbb 100644 --- a/indra/newview/installers/windows/lang_zh.nsi +++ b/indra/newview/installers/windows/lang_zh.nsi diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index 773e20eda7..f8b204eca0 100755 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -175,7 +175,9 @@ bool LLAgent::isActionAllowed(const LLSD& sdname) } else if (param == "speak") { - if ( gAgent.isVoiceConnected() ) + if ( gAgent.isVoiceConnected() && + LLViewerParcelMgr::getInstance()->allowAgentVoice() && + ! LLVoiceClient::getInstance()->inTuningMode() ) { retval = true; } @@ -305,13 +307,6 @@ LLAgent::LLAgent() : mListener.reset(new LLAgentListener(*this)); mMoveTimer.stop(); - - LLViewerParcelMgr::getInstance()->addAgentParcelChangedCallback(boost::bind(&LLAgent::parcelChangedCallback)); - - LLUICtrl::EnableCallbackRegistry::currentRegistrar().add("Agent.IsActionAllowed", boost::bind(&LLAgent::isActionAllowed, _2)); - LLUICtrl::CommitCallbackRegistry::currentRegistrar().add("Agent.PressMicrophone", boost::bind(&LLAgent::pressMicrophone, _2)); - LLUICtrl::CommitCallbackRegistry::currentRegistrar().add("Agent.ReleaseMicrophone", boost::bind(&LLAgent::releaseMicrophone, _2)); - LLUICtrl::EnableCallbackRegistry::currentRegistrar().add("Agent.IsMicrophoneOn", boost::bind(&LLAgent::isMicrophoneOn, _2)); } // Requires gSavedSettings to be initialized. @@ -333,6 +328,14 @@ void LLAgent::init() gSavedSettings.getControl("PreferredMaturity")->getValidateSignal()->connect(boost::bind(&LLAgent::validateMaturity, this, _2)); gSavedSettings.getControl("PreferredMaturity")->getSignal()->connect(boost::bind(&LLAgent::handleMaturity, this, _2)); + + LLViewerParcelMgr::getInstance()->addAgentParcelChangedCallback(boost::bind(&LLAgent::parcelChangedCallback)); + + LLUICtrl::EnableCallbackRegistry::currentRegistrar().add("Agent.IsActionAllowed", boost::bind(&LLAgent::isActionAllowed, _2)); + LLUICtrl::CommitCallbackRegistry::currentRegistrar().add("Agent.PressMicrophone", boost::bind(&LLAgent::pressMicrophone, _2)); + LLUICtrl::CommitCallbackRegistry::currentRegistrar().add("Agent.ReleaseMicrophone", boost::bind(&LLAgent::releaseMicrophone, _2)); + LLUICtrl::EnableCallbackRegistry::currentRegistrar().add("Agent.IsMicrophoneOn", boost::bind(&LLAgent::isMicrophoneOn, _2)); + mInitialized = TRUE; } diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index e38f86d0fc..dc88c81d6a 100644..100755 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -89,6 +89,7 @@ #include "llweb.h" #include "llsecondlifeurls.h" #include "llupdaterservice.h" +#include "llcallfloater.h" // Linden library includes #include "llavatarnamecache.h" @@ -112,6 +113,7 @@ #include <boost/foreach.hpp> + #if LL_WINDOWS # include <share.h> // For _SH_DENYWR in initMarkerFile #else @@ -1183,6 +1185,7 @@ bool LLAppViewer::mainLoop() LLVoiceChannel::initClass(); LLVoiceClient::getInstance()->init(gServicePump); + LLVoiceChannel::setCurrentVoiceChannelChangedCallback(boost::bind(&LLCallFloater::sOnCurrentChannelChanged, _1), true); LLTimer frameTimer,idleTimer; LLTimer debugTime; LLViewerJoystick* joystick(LLViewerJoystick::getInstance()); @@ -2822,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/llcallfloater.cpp b/indra/newview/llcallfloater.cpp index cc2a189b76..e3217668c5 100644 --- a/indra/newview/llcallfloater.cpp +++ b/indra/newview/llcallfloater.cpp @@ -44,6 +44,7 @@ #include "llparticipantlist.h" #include "llspeakers.h" #include "lltextutil.h" +#include "lltransientfloatermgr.h" #include "llviewercontrol.h" #include "llviewerdisplayname.h" #include "llviewerwindow.h" @@ -96,7 +97,7 @@ static void* create_non_avatar_caller(void*) LLVoiceChannel* LLCallFloater::sCurrentVoiceChannel = NULL; LLCallFloater::LLCallFloater(const LLSD& key) -: LLFloater(key) +: LLTransientDockableFloater(NULL, false, key) , mSpeakerManager(NULL) , mParticipants(NULL) , mAvatarList(NULL) @@ -112,6 +113,7 @@ LLCallFloater::LLCallFloater(const LLSD& key) mFactoryMap["non_avatar_caller"] = LLCallbackMap(create_non_avatar_caller, NULL); LLVoiceClient::instance().addObserver(this); + LLTransientFloaterMgr::getInstance()->addControlView(this); // update the agent's name if display name setting change LLAvatarNameCache::addUseDisplayNamesCallback(boost::bind(&LLCallFloater::updateAgentModeratorState, this)); @@ -134,6 +136,7 @@ LLCallFloater::~LLCallFloater() { LLVoiceClient::getInstance()->removeObserver(this); } + LLTransientFloaterMgr::getInstance()->removeControlView(this); } // virtual @@ -151,10 +154,6 @@ BOOL LLCallFloater::postBuild() connectToChannel(LLVoiceChannel::getCurrentVoiceChannel()); - setIsChrome(true); - //chrome="true" hides floater caption - if (mDragHandle) - mDragHandle->setTitleVisible(TRUE); updateTransparency(TT_ACTIVE); // force using active floater transparency (STORM-730) updateSession(); diff --git a/indra/newview/llcallfloater.h b/indra/newview/llcallfloater.h index 7282f7a8be..00a3f76e56 100644 --- a/indra/newview/llcallfloater.h +++ b/indra/newview/llcallfloater.h @@ -28,7 +28,7 @@ #ifndef LL_LLCALLFLOATER_H #define LL_LLCALLFLOATER_H -#include "llfloater.h" +#include "lltransientdockablefloater.h" #include "llvoicechannel.h" #include "llvoiceclient.h" @@ -52,7 +52,7 @@ class LLSpeakersDelayActionsStorage; * When the Resident is engaged in any chat except Nearby Chat, the Voice Control Panel * also provides a 'Leave Call' button to allow the Resident to leave that voice channel. */ -class LLCallFloater : public LLFloater, LLVoiceClientParticipantObserver +class LLCallFloater : public LLTransientDockableFloater, LLVoiceClientParticipantObserver { public: @@ -262,6 +262,9 @@ private: */ static LLVoiceChannel* sCurrentVoiceChannel; + /* virtual */ + LLTransientFloaterMgr::ETransientGroup getGroup() { return LLTransientFloaterMgr::IM; } + boost::signals2::connection mVoiceChannelStateChangeConnection; }; diff --git a/indra/newview/lldebugview.cpp b/indra/newview/lldebugview.cpp index cc6ba05e7e..ba511a3693 100644 --- a/indra/newview/lldebugview.cpp +++ b/indra/newview/lldebugview.cpp @@ -147,3 +147,12 @@ LLDebugView::~LLDebugView() gTextureCategoryView = NULL; } +void LLDebugView::draw() +{ + LLView* floater_snap_region = getRootView()->getChildView("floater_snap_region"); + LLRect debug_rect; + floater_snap_region->localRectToOtherView(floater_snap_region->getLocalRect(), &debug_rect, getParent()); + + setShape(debug_rect); + LLView::draw(); +} diff --git a/indra/newview/lldebugview.h b/indra/newview/lldebugview.h index 20262fc89e..907a42c981 100644 --- a/indra/newview/lldebugview.h +++ b/indra/newview/lldebugview.h @@ -55,6 +55,7 @@ public: ~LLDebugView(); void init(); + void draw(); void setStatsVisible(BOOL visible); diff --git a/indra/newview/llfloaterabout.cpp b/indra/newview/llfloaterabout.cpp index 22f500ba15..83fb887d81 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/llfloatercamera.cpp b/indra/newview/llfloatercamera.cpp index aa78bc4f29..b33dea4890 100644 --- a/indra/newview/llfloatercamera.cpp +++ b/indra/newview/llfloatercamera.cpp @@ -347,13 +347,12 @@ LLFloaterCamera::LLFloaterCamera(const LLSD& val) mPrevMode(CAMERA_CTRL_MODE_PAN) { LLHints::registerHintTarget("view_popup", LLView::getHandle()); + mCommitCallbackRegistrar.add("CameraPresets.ChangeView", boost::bind(&LLFloaterCamera::onClickCameraItem, _2)); } // virtual BOOL LLFloaterCamera::postBuild() { - setIsChrome(TRUE); - setTitleVisible(TRUE); // restore title visibility after chrome applying updateTransparency(TT_ACTIVE); // force using active floater transparency (STORM-730) mRotate = getChild<LLJoystickCameraRotate>(ORBIT); diff --git a/indra/newview/llfloaterhud.cpp b/indra/newview/llfloaterhud.cpp index 4181d1906e..58c76a0b85 100644 --- a/indra/newview/llfloaterhud.cpp +++ b/indra/newview/llfloaterhud.cpp @@ -54,14 +54,6 @@ LLFloaterHUD::LLFloaterHUD(const LLSD& key) return; } - // Don't grab the focus as it will impede performing in-world actions - // while using the HUD - setIsChrome(TRUE); - - // Chrome doesn't show the window title by default, but here we - // want to show it. - setTitleVisible(true); - // Opaque background since we never get the focus setBackgroundOpaque(TRUE); } diff --git a/indra/newview/llfloaterinventory.cpp b/indra/newview/llfloaterinventory.cpp index df769bdd88..9b9b90e521 100644 --- a/indra/newview/llfloaterinventory.cpp +++ b/indra/newview/llfloaterinventory.cpp @@ -98,3 +98,12 @@ void LLFloaterInventory::onOpen(const LLSD& key) { //LLFirstUse::useInventory(); } + +void LLFloaterInventory::onClose(bool app_quitting) +{ + LLFloater::onClose(app_quitting); + if (mKey.asInteger() > 1) + { + destroy(); + } +} diff --git a/indra/newview/llfloaterinventory.h b/indra/newview/llfloaterinventory.h index f59a015b07..823c4903b4 100644 --- a/indra/newview/llfloaterinventory.h +++ b/indra/newview/llfloaterinventory.h @@ -58,6 +58,7 @@ public: // Inherited functionality /*virtual*/ void onOpen(const LLSD& key); + /*virtual*/ void onClose(bool app_quitting); LLInventoryPanel* getPanel(); LLPanelMainInventory* getMainInventoryPanel() { return mPanelMainInventory;} diff --git a/indra/newview/llfloatermap.cpp b/indra/newview/llfloatermap.cpp index 8713513054..a65e9e911a 100644 --- a/indra/newview/llfloatermap.cpp +++ b/indra/newview/llfloatermap.cpp @@ -105,9 +105,6 @@ BOOL LLFloaterMap::postBuild() // Get the drag handle all the way in back sendChildToBack(getDragHandle()); - //setIsChrome(TRUE); - //getDragHandle()->setTitleVisible(TRUE); - // keep onscreen gFloaterView->adjustToFitScreen(this, FALSE); diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index 5fdeb46daa..a333989e7e 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 5c74e9f60c..7ee3294478 100644 --- a/indra/newview/llfloaterpreference.h +++ b/indra/newview/llfloaterpreference.h @@ -156,6 +156,7 @@ public: 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/llfloatersounddevices.cpp b/indra/newview/llfloatersounddevices.cpp index 56c0806546..72c077d215 100644 --- a/indra/newview/llfloatersounddevices.cpp +++ b/indra/newview/llfloatersounddevices.cpp @@ -55,9 +55,6 @@ BOOL LLFloaterSoundDevices::postBuild() { LLTransientDockableFloater::postBuild(); - setIsChrome(TRUE); - if (mDragHandle) - mDragHandle->setTitleVisible(TRUE); updateTransparency(TT_ACTIVE); // force using active floater transparency (STORM-730) LLPanelVoiceDeviceSettings* panel = findChild<LLPanelVoiceDeviceSettings>("device_settings_panel"); diff --git a/indra/newview/llfloatertoybox.cpp b/indra/newview/llfloatertoybox.cpp index b4c9894271..66f644748e 100644 --- a/indra/newview/llfloatertoybox.cpp +++ b/indra/newview/llfloatertoybox.cpp @@ -39,7 +39,6 @@ LLFloaterToybox::LLFloaterToybox(const LLSD& key) : LLFloater(key) - , mBtnRestoreDefaults(NULL) , mToolBar(NULL) { mCommitCallbackRegistrar.add("Toybox.RestoreDefaults", boost::bind(&LLFloaterToybox::onBtnRestoreDefaults, this)); @@ -59,20 +58,19 @@ bool compare_localized_command_labels(LLCommand * cmd1, LLCommand * cmd2) BOOL LLFloaterToybox::postBuild() { - mBtnRestoreDefaults = getChild<LLButton>("btn_restore_defaults"); mToolBar = getChild<LLToolBar>("toybox_toolbar"); + 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)); - LLCommandManager& cmdMgr = LLCommandManager::instance(); - // // Sort commands by localized labels so they will appear alphabetized in all languages // std::list<LLCommand *> alphabetized_commands; + LLCommandManager& cmdMgr = LLCommandManager::instance(); for (U32 i = 0; i < cmdMgr.commandCount(); i++) { LLCommand * command = cmdMgr.getCommand(i); diff --git a/indra/newview/llfloatertoybox.h b/indra/newview/llfloatertoybox.h index f0a6cf1a8b..62bf68680d 100644 --- a/indra/newview/llfloatertoybox.h +++ b/indra/newview/llfloatertoybox.h @@ -53,7 +53,6 @@ protected: void onBtnRestoreDefaults(); public: - LLButton * mBtnRestoreDefaults; LLToolBar * mToolBar; }; diff --git a/indra/newview/llfloatertranslationsettings.cpp b/indra/newview/llfloatertranslationsettings.cpp new file mode 100644 index 0000000000..959edff713 --- /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 0000000000..9b47ad72ed --- /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 fa3f546157..2b9c113a72 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/llhudeffectblob.cpp b/indra/newview/llhudeffectblob.cpp index d8687eed8d..c909551b51 100644 --- a/indra/newview/llhudeffectblob.cpp +++ b/indra/newview/llhudeffectblob.cpp @@ -44,12 +44,20 @@ LLHUDEffectBlob::~LLHUDEffectBlob() { } +void LLHUDEffectBlob::markDead() +{ + mImage = NULL; + + LLHUDEffect::markDead(); +} + void LLHUDEffectBlob::render() { F32 time = mTimer.getElapsedTimeF32(); if (mDuration < time) { markDead(); + return; } LLVector3 pos_agent = gAgent.getPosAgentFromGlobal(mPositionGlobal); diff --git a/indra/newview/llhudeffectblob.h b/indra/newview/llhudeffectblob.h index f4c1691108..ce3e8500fc 100644 --- a/indra/newview/llhudeffectblob.h +++ b/indra/newview/llhudeffectblob.h @@ -35,6 +35,8 @@ class LLHUDEffectBlob : public LLHUDEffect public: friend class LLHUDObject; + void markDead(); + void setPixelSize(S32 pixels) { mPixelSize = pixels; } protected: diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp index 67d745248f..3418462192 100644 --- a/indra/newview/llnearbychat.cpp +++ b/indra/newview/llnearbychat.cpp @@ -214,9 +214,10 @@ void LLNearbyChat::updateChatHistoryStyle() //static void LLNearbyChat::processChatHistoryStyleUpdate(const LLSD& newvalue) { - //LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD()); - //if(nearby_chat) - // nearby_chat->updateChatHistoryStyle(); + LLFloater* chat_bar = LLFloaterReg::getInstance("chat_bar"); + LLNearbyChat* nearby_chat = chat_bar->findChild<LLNearbyChat>("nearby_chat"); + if(nearby_chat) + nearby_chat->updateChatHistoryStyle(); } bool isWordsName(const std::string& name) diff --git a/indra/newview/llnearbychatbar.cpp b/indra/newview/llnearbychatbar.cpp index 3e4228cfb6..a811332261 100644 --- a/indra/newview/llnearbychatbar.cpp +++ b/indra/newview/llnearbychatbar.cpp @@ -53,6 +53,8 @@ S32 LLNearbyChatBar::sLastSpecialChatChannel = 0; const S32 EXPANDED_HEIGHT = 300; +const S32 COLLAPSED_HEIGHT = 60; +const S32 EXPANDED_MIN_HEIGHT = 150; // legacy callback glue void send_chat_from_viewer(const std::string& utf8_out_text, EChatType type, S32 channel); @@ -102,7 +104,7 @@ BOOL LLNearbyChatBar::postBuild() // Register for font change notifications LLViewerChat::setFontChangedCallback(boost::bind(&LLNearbyChatBar::onChatFontChange, this, _1)); - mExpandedHeight = getMinHeight() + EXPANDED_HEIGHT; + mExpandedHeight = COLLAPSED_HEIGHT + EXPANDED_HEIGHT; enableResizeCtrls(true, true, false); @@ -112,14 +114,19 @@ BOOL LLNearbyChatBar::postBuild() bool LLNearbyChatBar::applyRectControl() { bool rect_controlled = LLFloater::applyRectControl(); - - if (getRect().getHeight() > getMinHeight()) + + LLView* nearby_chat = getChildView("nearby_chat"); + if (!nearby_chat->getVisible()) + { + reshape(getRect().getWidth(), getMinHeight()); + enableResizeCtrls(true, true, false); + } + else { - getChildView("nearby_chat")->setVisible(true); - mExpandedHeight = getRect().getHeight(); enableResizeCtrls(true); + setResizeLimits(getMinWidth(), EXPANDED_MIN_HEIGHT); } - + return rect_controlled; } @@ -373,15 +380,19 @@ void LLNearbyChatBar::onToggleNearbyChatPanel() if (nearby_chat->getVisible()) { mExpandedHeight = getRect().getHeight(); + setResizeLimits(getMinWidth(), COLLAPSED_HEIGHT); nearby_chat->setVisible(FALSE); - reshape(getRect().getWidth(), getMinHeight()); + reshape(getRect().getWidth(), COLLAPSED_HEIGHT); enableResizeCtrls(true, true, false); + storeRectControl(); } else { nearby_chat->setVisible(TRUE); + setResizeLimits(getMinWidth(), EXPANDED_MIN_HEIGHT); reshape(getRect().getWidth(), mExpandedHeight); enableResizeCtrls(true); + storeRectControl(); } } diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp index 79171dbcb9..d3543daff0 100644 --- a/indra/newview/llpanelteleporthistory.cpp +++ b/indra/newview/llpanelteleporthistory.cpp @@ -389,6 +389,7 @@ LLTeleportHistoryPanel::~LLTeleportHistoryPanel() { LLTeleportHistoryFlatItemStorage::instance().purge(); delete mGearMenuHandle.get(); + mTeleportHistoryChangedConnection.disconnect(); } BOOL LLTeleportHistoryPanel::postBuild() @@ -679,29 +680,32 @@ void LLTeleportHistoryPanel::refresh() // tab_boundary_date would be earliest possible date for this tab S32 tab_idx = 0; getNextTab(date, tab_idx, tab_boundary_date); - - LLAccordionCtrlTab* tab = mItemContainers.get(mItemContainers.size() - 1 - tab_idx); - tab->setVisible(true); - - // Expand all accordion tabs when filtering - if(!sFilterSubString.empty()) + tab_idx = mItemContainers.size() - 1 - tab_idx; + if (tab_idx >= 0) { - //store accordion tab state when filter is not empty - tab->notifyChildren(LLSD().with("action","store_state")); - - tab->setDisplayChildren(true); - } - // Restore each tab's expand state when not filtering - else - { - bool collapsed = isAccordionCollapsedByUser(tab); - tab->setDisplayChildren(!collapsed); + LLAccordionCtrlTab* tab = mItemContainers.get(tab_idx); + tab->setVisible(true); + + // Expand all accordion tabs when filtering + if(!sFilterSubString.empty()) + { + //store accordion tab state when filter is not empty + tab->notifyChildren(LLSD().with("action","store_state")); - //restore accordion state after all those accodrion tabmanipulations - tab->notifyChildren(LLSD().with("action","restore_state")); - } + tab->setDisplayChildren(true); + } + // Restore each tab's expand state when not filtering + else + { + bool collapsed = isAccordionCollapsedByUser(tab); + tab->setDisplayChildren(!collapsed); + + //restore accordion state after all those accodrion tabmanipulations + tab->notifyChildren(LLSD().with("action","restore_state")); + } - curr_flat_view = getFlatListViewFromTab(tab); + curr_flat_view = getFlatListViewFromTab(tab); + } } if (curr_flat_view) @@ -760,7 +764,12 @@ void LLTeleportHistoryPanel::onTeleportHistoryChange(S32 removed_index) void LLTeleportHistoryPanel::replaceItem(S32 removed_index) { // Flat list for 'Today' (mItemContainers keeps accordion tabs in reverse order) - LLFlatListView* fv = getFlatListViewFromTab(mItemContainers[mItemContainers.size() - 1]); + LLFlatListView* fv = NULL; + + if (mItemContainers.size() > 0) + { + fv = getFlatListViewFromTab(mItemContainers[mItemContainers.size() - 1]); + } // Empty flat list for 'Today' means that other flat lists are empty as well, // so all items from teleport history should be added. @@ -828,19 +837,27 @@ void LLTeleportHistoryPanel::showTeleportHistory() // Starting to add items from last one, in reverse order, // since TeleportHistory keeps most recent item at the end + if (!mTeleportHistory) + { + mTeleportHistory = LLTeleportHistoryStorage::getInstance(); + } + mCurrentItem = mTeleportHistory->getItems().size() - 1; for (S32 n = mItemContainers.size() - 1; n >= 0; --n) { LLAccordionCtrlTab* tab = mItemContainers.get(n); - tab->setVisible(false); - - LLFlatListView* fv = getFlatListViewFromTab(tab); - if (fv) + if (tab) { - // Detached panels are managed by LLTeleportHistoryFlatItemStorage - std::vector<LLPanel*> detached_items; - fv->detachItems(detached_items); + tab->setVisible(false); + + LLFlatListView* fv = getFlatListViewFromTab(tab); + if (fv) + { + // Detached panels are managed by LLTeleportHistoryFlatItemStorage + std::vector<LLPanel*> detached_items; + fv->detachItems(detached_items); + } } } } diff --git a/indra/newview/llteleporthistory.cpp b/indra/newview/llteleporthistory.cpp index 0d8b45db1f..50a088b799 100644 --- a/indra/newview/llteleporthistory.cpp +++ b/indra/newview/llteleporthistory.cpp @@ -56,7 +56,8 @@ const std::string& LLTeleportHistoryItem::getTitle() const LLTeleportHistory::LLTeleportHistory(): mCurrentItem(-1), mRequestedItem(-1), - mGotInitialUpdate(false) + mGotInitialUpdate(false), + mTeleportHistoryStorage(NULL) { mTeleportFinishedConn = LLViewerParcelMgr::getInstance()-> setTeleportFinishedCallback(boost::bind(&LLTeleportHistory::updateCurrentLocation, this, _1)); @@ -115,6 +116,10 @@ void LLTeleportHistory::handleLoginComplete() void LLTeleportHistory::updateCurrentLocation(const LLVector3d& new_pos) { + if (!mTeleportHistoryStorage) + { + mTeleportHistoryStorage = LLTeleportHistoryStorage::getInstance(); + } if (mRequestedItem != -1) // teleport within the history in progress? { mCurrentItem = mRequestedItem; @@ -152,7 +157,7 @@ void LLTeleportHistory::updateCurrentLocation(const LLVector3d& new_pos) if (mCurrentItem < 0 || mCurrentItem >= (int) mItems.size()) // sanity check { llwarns << "Invalid current item. (this should not happen)" << llendl; - llassert(!"Invalid current teleport histiry item"); + llassert(!"Invalid current teleport history item"); return; } LLVector3 new_pos_local = gAgent.getPosAgentFromGlobal(new_pos); diff --git a/indra/newview/llteleporthistory.h b/indra/newview/llteleporthistory.h index e45dc28f9b..e9c29c39bf 100644 --- a/indra/newview/llteleporthistory.h +++ b/indra/newview/llteleporthistory.h @@ -33,6 +33,7 @@ #include <string> #include <boost/function.hpp> #include <boost/signals2.hpp> +#include "llteleporthistorystorage.h" /** @@ -210,6 +211,8 @@ private: */ bool mGotInitialUpdate; + LLTeleportHistoryStorage* mTeleportHistoryStorage; + /** * Signal emitted when the history gets changed. * diff --git a/indra/newview/llteleporthistorystorage.cpp b/indra/newview/llteleporthistorystorage.cpp index 0ba455e7d5..af5a047da4 100644 --- a/indra/newview/llteleporthistorystorage.cpp +++ b/indra/newview/llteleporthistorystorage.cpp @@ -66,6 +66,7 @@ struct LLSortItemsByDate LLTeleportHistoryStorage::LLTeleportHistoryStorage() : mFilename("teleport_history.txt") { + mItems.clear(); LLTeleportHistory *th = LLTeleportHistory::getInstance(); if (th) th->setHistoryChangedCallback(boost::bind(&LLTeleportHistoryStorage::onTeleportHistoryChange, this)); diff --git a/indra/newview/llteleporthistorystorage.h b/indra/newview/llteleporthistorystorage.h index 6cae0a3454..cf4c85a991 100644 --- a/indra/newview/llteleporthistorystorage.h +++ b/indra/newview/llteleporthistorystorage.h @@ -93,9 +93,6 @@ public: void removeItem(S32 idx); void save(); - void load(); - - void dump() const; /** * Set a callback to be called upon history changes. @@ -113,6 +110,9 @@ public: private: + void load(); + void dump() const; + void onTeleportHistoryChange(); bool compareByTitleAndGlobalPos(const LLTeleportHistoryPersistentItem& a, const LLTeleportHistoryPersistentItem& b); diff --git a/indra/newview/lltoastnotifypanel.cpp b/indra/newview/lltoastnotifypanel.cpp index 6873cf058a..de305bf3d9 100644 --- a/indra/newview/lltoastnotifypanel.cpp +++ b/indra/newview/lltoastnotifypanel.cpp @@ -91,8 +91,6 @@ mCloseNotificationOnDestroy(true) sFont = LLFontGL::getFontSansSerif(); sFontSmall = LLFontGL::getFontSansSerifSmall(); } - // clicking on a button does not steal current focus - setIsChrome(TRUE); // initialize setFocusRoot(!mIsTip); // get a form for the notification diff --git a/indra/newview/lltoolbarview.cpp b/indra/newview/lltoolbarview.cpp index 21e682f072..5d2cebe031 100644 --- a/indra/newview/lltoolbarview.cpp +++ b/indra/newview/lltoolbarview.cpp @@ -29,6 +29,7 @@ #include "lltoolbarview.h" +#include "llappviewer.h" #include "lldir.h" #include "llxmlnode.h" #include "lltoolbar.h" @@ -36,12 +37,18 @@ #include "lltooldraganddrop.h" #include "llclipboard.h" +#include "llagent.h" // HACK for destinations guide on startup +#include "llfloaterreg.h" // HACK for destinations guide on startup +#include "llviewercontrol.h" // HACK for destinations guide on startup + #include <boost/foreach.hpp> LLToolBarView* gToolBarView = NULL; static LLDefaultChildRegistry::Register<LLToolBarView> r("toolbar_view"); +void handleLoginToolbarSetup(); + bool isToolDragged() { return (LLToolDragAndDrop::getInstance()->getSource() == LLToolDragAndDrop::SOURCE_VIEWER); @@ -63,7 +70,10 @@ LLToolBarView::LLToolBarView(const LLToolBarView::Params& p) : LLUICtrl(p), mToolbarLeft(NULL), mToolbarRight(NULL), - mToolbarBottom(NULL) + mToolbarBottom(NULL), + mDragStarted(false), + mDragToolbarButton(NULL), + mToolbarsLoaded(false) { } @@ -95,6 +105,8 @@ BOOL LLToolBarView::postBuild() 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)); + + LLAppViewer::instance()->setOnLoginCompletedCallback(boost::bind(&handleLoginToolbarSetup)); return TRUE; } @@ -126,7 +138,7 @@ bool LLToolBarView::addCommand(const LLCommandId& command, LLToolBar* toolbar) } else { - llwarns << "Toolbars creation : the command " << command.name() << " cannot be found in the command manager" << llendl; + llwarns << "Toolbars creation : the command with id " << command.uuid().asString() << " cannot be found in the command manager" << llendl; return false; } return true; @@ -191,9 +203,12 @@ bool LLToolBarView::loadToolbars(bool force_default) LLToolBarEnums::ButtonType button_type = toolbar_set.left_toolbar.button_display_mode; mToolbarLeft->setButtonType(button_type); } - BOOST_FOREACH(LLCommandId::Params& command, toolbar_set.left_toolbar.commands) + BOOST_FOREACH(const LLCommandId::Params& command_name_param, toolbar_set.left_toolbar.commands) { - addCommand(LLCommandId(command),mToolbarLeft); + if (addCommand(LLCommandId(command_name_param), mToolbarLeft) == false) + { + llwarns << "Error adding command '" << command_name_param.name() << "' to left toolbar." << llendl; + } } } if (toolbar_set.right_toolbar.isProvided() && mToolbarRight) @@ -203,9 +218,12 @@ bool LLToolBarView::loadToolbars(bool force_default) LLToolBarEnums::ButtonType button_type = toolbar_set.right_toolbar.button_display_mode; mToolbarRight->setButtonType(button_type); } - BOOST_FOREACH(LLCommandId::Params& command, toolbar_set.right_toolbar.commands) + BOOST_FOREACH(const LLCommandId::Params& command_name_param, toolbar_set.right_toolbar.commands) { - addCommand(LLCommandId(command),mToolbarRight); + if (addCommand(LLCommandId(command_name_param), mToolbarRight) == false) + { + llwarns << "Error adding command '" << command_name_param.name() << "' to right toolbar." << llendl; + } } } if (toolbar_set.bottom_toolbar.isProvided() && mToolbarBottom) @@ -215,11 +233,15 @@ bool LLToolBarView::loadToolbars(bool force_default) LLToolBarEnums::ButtonType button_type = toolbar_set.bottom_toolbar.button_display_mode; mToolbarBottom->setButtonType(button_type); } - BOOST_FOREACH(LLCommandId::Params& command, toolbar_set.bottom_toolbar.commands) + BOOST_FOREACH(const LLCommandId::Params& command_name_param, toolbar_set.bottom_toolbar.commands) { - addCommand(LLCommandId(command),mToolbarBottom); + if (addCommand(LLCommandId(command_name_param), mToolbarBottom) == false) + { + llwarns << "Error adding command '" << command_name_param.name() << "' to bottom toolbar." << llendl; + } } } + mToolbarsLoaded = true; return true; } @@ -231,6 +253,10 @@ bool LLToolBarView::loadDefaultToolbars() if (gToolBarView) { retval = gToolBarView->loadToolbars(true); + if (retval) + { + gToolBarView->saveToolbars(); + } } return retval; @@ -238,6 +264,9 @@ bool LLToolBarView::loadDefaultToolbars() void LLToolBarView::saveToolbars() const { + if (!mToolbarsLoaded) + return; + // Build the parameter tree from the toolbar data LLToolBarView::ToolbarSet toolbar_set; if (mToolbarLeft) @@ -278,13 +307,19 @@ void LLToolBarView::saveToolbars() const // Enumerate the commands in command_list and add them as Params to the toolbar void LLToolBarView::addToToolset(command_id_list_t& command_list, Toolbar& toolbar) const { + LLCommandManager& mgr = LLCommandManager::instance(); + for (command_id_list_t::const_iterator it = command_list.begin(); it != command_list.end(); ++it) { - LLCommandId::Params command; - command.name = it->name(); - toolbar.commands.add(command); + LLCommand* command = mgr.getCommand(*it); + if (command) + { + LLCommandId::Params command_name_param; + command_name_param.name = command->name(); + toolbar.commands.add(command_name_param); + } } } @@ -328,13 +363,11 @@ void LLToolBarView::draw() // ---------------------------------------- -void LLToolBarView::startDragTool( S32 x, S32 y, const LLUUID& uuid) +void LLToolBarView::startDragTool(S32 x, S32 y, LLToolBarButton* button) { + resetDragTool(button); + // Flag the tool dragging but don't start it yet - gToolBarView->mDragStarted = false; - gToolBarView->mDragCommand = LLCommandId::null; - gToolBarView->mDragRank = LLToolBar::RANK_NONE; - gToolBarView->mDragToolbar = NULL; LLToolDragAndDrop::getInstance()->setDragStart( x, y ); } @@ -355,30 +388,12 @@ BOOL LLToolBarView::handleDragTool( S32 x, S32 y, const LLUUID& uuid, LLAssetTyp LLToolDragAndDrop::ESource src = LLToolDragAndDrop::SOURCE_VIEWER; LLUUID srcID; LLToolDragAndDrop::getInstance()->beginMultiDrag(types, cargo_ids, src, srcID); - - // Second, check if the command is present in one of the 3 toolbars - // If it is, store the command, the toolbar and the rank in the toolbar and - // set a callback on end drag so that we reinsert the command if no drop happened - /* - gToolBarView->mDragCommand = LLCommandId(uuid); - if ((gToolBarView->mDragRank = gToolBarView->mToolbarLeft->removeCommand(gToolBarView->mDragCommand)) != LLToolBar::RANK_NONE) - { - gToolBarView->mDragToolbar = gToolBarView->mToolbarLeft; - } - else if ((gToolBarView->mDragRank = gToolBarView->mToolbarRight->removeCommand(gToolBarView->mDragCommand)) != LLToolBar::RANK_NONE) - { - gToolBarView->mDragToolbar = gToolBarView->mToolbarRight; - } - else if ((gToolBarView->mDragRank = gToolBarView->mToolbarBottom->removeCommand(gToolBarView->mDragCommand)) != LLToolBar::RANK_NONE) - { - gToolBarView->mDragToolbar = gToolBarView->mToolbarBottom; - } - if (gToolBarView->mDragRank != LLToolBar::RANK_NONE) - { - llinfos << "Merov debug: rank of dragged tool = " << gToolBarView->mDragRank << llendl; - LLToolDragAndDrop::getInstance()->setEndDragCallback(boost::bind(&LLToolBarView::onEndDrag, gToolBarView)); - } - */ + + // 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->mDragStarted = true; return TRUE; @@ -407,70 +422,52 @@ BOOL LLToolBarView::handleDropTool( void* cargo_data, S32 x, S32 y, LLToolBar* t LLCommand* command = mgr.getCommand(command_id); if (command) { - // Convert the (x,y) position in rank in toolbar - int new_rank = LLToolBar::RANK_NONE; - if (!toolbar->isReadOnly()) - { - new_rank = toolbar->getRankFromPosition(x,y); - } // Suppress the command from the toolbars (including the one it's dropped in, // this will handle move position). - int old_rank = LLToolBar::RANK_NONE; + bool command_present = gToolBarView->hasCommand(command_id); LLToolBar* old_toolbar = NULL; - int rank; - if ((rank = gToolBarView->mToolbarLeft->removeCommand(command_id)) != LLToolBar::RANK_NONE) - { - old_rank = rank; - old_toolbar = gToolBarView->mToolbarLeft; - } - if ((rank = gToolBarView->mToolbarRight->removeCommand(command_id)) != LLToolBar::RANK_NONE) - { - old_rank = rank; - old_toolbar = gToolBarView->mToolbarRight; - } - if ((rank = gToolBarView->mToolbarBottom->removeCommand(command_id)) != LLToolBar::RANK_NONE) + + if (command_present) { - old_rank = rank; - old_toolbar = gToolBarView->mToolbarBottom; + llassert(gToolBarView->mDragToolbarButton); + old_toolbar = gToolBarView->mDragToolbarButton->getParentByType<LLToolBar>(); + if (old_toolbar->isReadOnly() && toolbar->isReadOnly()) + { + // do nothing + } + else + { + gToolBarView->mToolbarBottom->removeCommand(command_id); + gToolBarView->mToolbarLeft->removeCommand(command_id); + gToolBarView->mToolbarRight->removeCommand(command_id); + } } - // Now insert it in the toolbar at the detected rank + + // Convert the (x,y) position in rank in toolbar if (!toolbar->isReadOnly()) { - if ((old_toolbar == toolbar) && (old_rank != LLToolBar::RANK_NONE) && (old_rank < new_rank)) - { - // If we just removed the command from the same toolbar, we need to consider that it might - // change the target rank. - new_rank -= 1; - } - toolbar->addCommand(command->id(),new_rank); + int new_rank = toolbar->getRankFromPosition(x,y); + toolbar->addCommand(command_id, new_rank); } + + // Save the new toolbars configuration + gToolBarView->saveToolbars(); } else { llwarns << "Command couldn't be found in command manager" << llendl; } } - stopDragTool(); + + resetDragTool(NULL); return handled; } -void LLToolBarView::stopDragTool() +void LLToolBarView::resetDragTool(LLToolBarButton* button) { // Clear the saved command, toolbar and rank gToolBarView->mDragStarted = false; - gToolBarView->mDragCommand = LLCommandId::null; - gToolBarView->mDragRank = LLToolBar::RANK_NONE; - gToolBarView->mDragToolbar = NULL; -} - -void LLToolBarView::onEndDrag() -{ - // If there's a saved command, reinsert it in the saved toolbar - if (gToolBarView->mDragRank != LLToolBar::RANK_NONE) - { - gToolBarView->mDragToolbar->addCommand(gToolBarView->mDragCommand,gToolBarView->mDragRank); - } - stopDragTool(); + gToolBarView->mDragToolbarButton = button; } void LLToolBarView::setToolBarsVisible(bool visible) @@ -490,3 +487,18 @@ bool LLToolBarView::isModified() const return modified; } + + +// +// HACK to bring up destinations guide at startup +// + +void handleLoginToolbarSetup() +{ + // Open the destinations guide by default on first login, per Rhett + if (gSavedSettings.getBOOL("FirstLoginThisInstall") || gAgent.isFirstLogin()) + { + LLFloaterReg::showInstance("destinations"); + } +} + diff --git a/indra/newview/lltoolbarview.h b/indra/newview/lltoolbarview.h index 8b3af43875..2b26db3802 100644 --- a/indra/newview/lltoolbarview.h +++ b/indra/newview/lltoolbarview.h @@ -76,11 +76,10 @@ public: static bool loadDefaultToolbars(); - static void startDragTool( S32 x, S32 y, const LLUUID& uuid); - 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 stopDragTool(); - void onEndDrag(); + static void startDragTool(S32 x, S32 y, LLToolBarButton* button); + 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); bool isModified() const; @@ -99,11 +98,10 @@ private: LLToolBar* mToolbarLeft; LLToolBar* mToolbarRight; LLToolBar* mToolbarBottom; + bool mToolbarsLoaded; - LLCommandId mDragCommand; - int mDragRank; - LLToolBar* mDragToolbar; - bool mDragStarted; + bool mDragStarted; + LLToolBarButton* mDragToolbarButton; }; extern LLToolBarView* gToolBarView; diff --git a/indra/newview/lltoolmgr.cpp b/indra/newview/lltoolmgr.cpp index 51c0e2eeed..6bc7c6de11 100644 --- a/indra/newview/lltoolmgr.cpp +++ b/indra/newview/lltoolmgr.cpp @@ -247,24 +247,10 @@ bool LLToolMgr::canEdit() void LLToolMgr::toggleBuildMode() { - if (inBuildMode()) - { - if (gSavedSettings.getBOOL("EditCameraMovement")) - { - // just reset the view, will pull us out of edit mode - handle_reset_view(); - } - else - { - // manually disable edit mode, but do not affect the camera - gAgentCamera.resetView(false); - LLFloaterReg::hideInstance("build"); - gViewerWindow->showCursor(); - } - // avoid spurious avatar movements pulling out of edit mode - LLViewerJoystick::getInstance()->setNeedsReset(); - } - else + LLFloaterReg::toggleInstanceOrBringToFront("build"); + + bool build_visible = LLFloaterReg::instanceVisible("build"); + if (build_visible) { ECameraMode camMode = gAgentCamera.getCameraMode(); if (CAMERA_MODE_MOUSELOOK == camMode || CAMERA_MODE_CUSTOMIZE_AVATAR == camMode) @@ -291,7 +277,7 @@ void LLToolMgr::toggleBuildMode() } } - + setCurrentToolset(gBasicToolset); getCurrentToolset()->selectTool( LLToolCompCreate::getInstance() ); @@ -304,6 +290,24 @@ void LLToolMgr::toggleBuildMode() LLViewerJoystick::getInstance()->setNeedsReset(); } + else + { + if (gSavedSettings.getBOOL("EditCameraMovement")) + { + // just reset the view, will pull us out of edit mode + handle_reset_view(); + } + else + { + // manually disable edit mode, but do not affect the camera + gAgentCamera.resetView(false); + LLFloaterReg::hideInstance("build"); + gViewerWindow->showCursor(); + } + // avoid spurious avatar movements pulling out of edit mode + LLViewerJoystick::getInstance()->setNeedsReset(); + } + } bool LLToolMgr::inBuildMode() diff --git a/indra/newview/lltracker.cpp b/indra/newview/lltracker.cpp index 983108391f..efe9bb8da7 100644 --- a/indra/newview/lltracker.cpp +++ b/indra/newview/lltracker.cpp @@ -53,10 +53,12 @@ #include "llinventorymodel.h" #include "llinventoryobserver.h" #include "lllandmarklist.h" +#include "llprogressview.h" #include "llsky.h" #include "llui.h" #include "llviewercamera.h" #include "llviewerinventory.h" +#include "llviewerwindow.h" #include "llworld.h" #include "llworldmapview.h" #include "llviewercontrol.h" @@ -111,6 +113,8 @@ void LLTracker::drawHUDArrow() { if (!gSavedSettings.getBOOL("RenderTrackerBeacon")) return; + if (gViewerWindow->getProgressView()->getVisible()) return; + static LLUIColor map_track_color = LLUIColorTable::instance().getColor("MapTrackColor", LLColor4::white); /* tracking autopilot destination has been disabled diff --git a/indra/newview/lltranslate.cpp b/indra/newview/lltranslate.cpp index 2f60b6b90b..7eb54271f4 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, "
", ""); // 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, "
", ""); // 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, "<", "<"); + LLStringUtil::replaceString(translation, ">",">"); + LLStringUtil::replaceString(translation, ""","\""); + LLStringUtil::replaceString(translation, "'","'"); + LLStringUtil::replaceString(translation, "&","&"); + LLStringUtil::replaceString(translation, "'","'"); + + 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 e85a42e878..c2330daa81 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 { - protected: - TranslationReceiver(const std::string &from_lang, const std::string &to_lang) - : m_fromLang(from_lang), - m_toLang(to_lang) - { - } + public: - virtual void handleResponse(const std::string &translation, const std::string &recognized_lang) {}; - virtual void handleFailure() {}; + /** + * 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); - public: - ~TranslationReceiver() - { - } + protected: + friend class LLTranslate; - 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(); + /// 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); - const std::string result = strstrm.str(); - std::string translation; - std::string detected_language; + /// Override point to handle successful translation. + virtual void handleResponse(const std::string &translation, const std::string &recognized_lang) = 0; - if (!parseGoogleTranslate(result, translation, detected_language)) - { - handleFailure(); - return; - } - - // Fix up the response - LLStringUtil::replaceString(translation, "<", "<"); - LLStringUtil::replaceString(translation, ">",">"); - LLStringUtil::replaceString(translation, ""","\""); - LLStringUtil::replaceString(translation, "'","'"); - LLStringUtil::replaceString(translation, "&","&"); - LLStringUtil::replaceString(translation, "'","'"); + /// Override point to handle unsuccessful translation. + virtual void handleFailure(int status, const std::string& err_msg) = 0; - handleResponse(translation, detected_language); - } - else - { - LL_WARNS("Translate") << "HTTP request for Google Translate failed with status " << status << ", reason: " << reason << LL_ENDL; - handleFailure(); - } - } + std::string mFromLang; + std::string mToLang; + const LLTranslationAPIHandler& mHandler; + }; + + /** + * Subclasses are supposed to handle API key verification result. + */ + class KeyVerificationReceiver: public LLHTTPClient::Responder + { + public: + 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; - static std::string getTranslateLanguage(); + typedef boost::intrusive_ptr<TranslationReceiver> TranslationReceiverPtr; + typedef boost::intrusive_ptr<KeyVerificationReceiver> KeyVerificationReceiverPtr; -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); + /** + * 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); - 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; + /** + * 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(); - static const char* m_GoogleData; - static const char* m_GoogleTranslation; - static const char* m_GoogleLanguage; +private: + 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 ba53540374..c761969fcf 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 2345fbfd6a..0909714951 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 ); diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index f0d53668d4..a9ca70fd26 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -3121,7 +3121,7 @@ protected: { // 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 @@ protected: 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 index 46e4fc3b02..46e4fc3b02 100644..100755 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 8576d81196..6fcbc401af 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -3174,7 +3174,7 @@ void LLViewerWindow::updateLayout() //gMenuBarView->setItemVisible("BuildTools", gFloaterTools->getVisible()); } - LLFloaterBuildOptions* build_options_floater = LLFloaterReg::getTypedInstance<LLFloaterBuildOptions>("build_options"); + LLFloaterBuildOptions* build_options_floater = LLFloaterReg::findTypedInstance<LLFloaterBuildOptions>("build_options"); if (build_options_floater && build_options_floater->getVisible()) { build_options_floater->updateGridMode(); diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 380d63c77b..380d63c77b 100644..100755 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp diff --git a/indra/newview/llwind.cpp b/indra/newview/llwind.cpp index 69d3090442..4c39fb5b74 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 925cb6d642..3b57f07124 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 @@ public: ~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 a50f66f282..93354e6579 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 27ee2745b5..0661de8cec 100644 --- a/indra/newview/pipeline.h +++ b/indra/newview/pipeline.h @@ -438,7 +438,7 @@ public: 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/xui/da/floater_about.xml b/indra/newview/skins/default/xui/da/floater_about.xml index 0ccaab73ba..fc8bc33096 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 <nolink>[HOSTNAME]</nolink> ([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/floater_about.xml b/indra/newview/skins/default/xui/de/floater_about.xml index 519efe9ce8..145cc1e30b 100644 --- a/indra/newview/skins/default/xui/de/floater_about.xml +++ b/indra/newview/skins/default/xui/de/floater_about.xml @@ -10,7 +10,7 @@ <floater.string name="AboutPosition"> Sie befinden sich in [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] in [REGION] auf <nolink>[HOSTNAME]</nolink> ([HOSTIP]) [SERVER_VERSION] -[[SERVER_RELEASE_NOTES_URL] [ReleaseNotes]] +[SERVER_RELEASE_NOTES_URL] </floater.string> <floater.string name="AboutSystem"> CPU: [CPU] @@ -37,6 +37,9 @@ Voice-Serverversion: [VOICE_VERSION] <floater.string name="AboutTraffic"> Paketverlust: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%) </floater.string> + <floater.string name="ErrorFetchingServerReleaseNotesURL"> + Fehler beim Abrufen der URL für die Server-Versionshinweise. + </floater.string> <tab_container name="about_tab"> <panel label="Info" name="support_panel"> <button label="In Zwischenablage kopieren" name="copy_btn"/> diff --git a/indra/newview/skins/default/xui/de/floater_about_land.xml b/indra/newview/skins/default/xui/de/floater_about_land.xml index c65dc5f41d..3cf3a16247 100644 --- a/indra/newview/skins/default/xui/de/floater_about_land.xml +++ b/indra/newview/skins/default/xui/de/floater_about_land.xml @@ -214,19 +214,19 @@ werden. Objektbonusfaktor in Region: [BONUS] </text> <text name="Simulator primitive usage:"> - Prim-Verwendung: + Regionskapazität: </text> <text name="objects_available"> [COUNT] von [MAX] ([AVAILABLE] verfügbar) </text> <text name="Primitives parcel supports:"> - Von Parzelle unterstützte Prims: + Parzellenlandkapazität: </text> <text name="object_contrib_text"> [COUNT] </text> <text name="Primitives on parcel:"> - Prims auf Parzelle: + Parzellenlandauswirkung: </text> <text name="total_objects_text"> [COUNT] diff --git a/indra/newview/skins/default/xui/de/floater_avatar.xml b/indra/newview/skins/default/xui/de/floater_avatar.xml new file mode 100644 index 0000000000..1470c4bcd6 --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_avatar.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Avatar" title="AVATAR-AUSWAHL"/> diff --git a/indra/newview/skins/default/xui/de/floater_camera.xml b/indra/newview/skins/default/xui/de/floater_camera.xml index d49c207f98..bbf1c8af60 100644 --- a/indra/newview/skins/default/xui/de/floater_camera.xml +++ b/indra/newview/skins/default/xui/de/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="ANSICHT"> <floater.string name="rotate_tooltip"> Kamera um Fokus drehen </floater.string> diff --git a/indra/newview/skins/default/xui/de/floater_chat_bar.xml b/indra/newview/skins/default/xui/de/floater_chat_bar.xml new file mode 100644 index 0000000000..dc5a7cd681 --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_chat_bar.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="chat_bar" title="CHAT IN DER NÄHE"> + <panel> + <line_editor label="Zum Chatten hier klicken." name="chat_box" tool_tip="Eingabetaste zum Sprechen, Strg+Eingabe zum Rufen"/> + <button name="show_nearby_chat" tool_tip="Chatprotokoll in der Nähe ein-/ausblenden"/> + </panel> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_destinations.xml b/indra/newview/skins/default/xui/de/floater_destinations.xml new file mode 100644 index 0000000000..57881488fd --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_destinations.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Destinations" title="ZIELE"/> diff --git a/indra/newview/skins/default/xui/de/floater_fast_timers.xml b/indra/newview/skins/default/xui/de/floater_fast_timers.xml new file mode 100644 index 0000000000..e61e542688 --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_fast_timers.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="fast_timers"> + <string name="pause"> + Pause + </string> + <string name="run"> + Rennen + </string> + <button label="Pause" name="pause_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_how_to.xml b/indra/newview/skins/default/xui/de/floater_how_to.xml new file mode 100644 index 0000000000..caea221f83 --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_how_to.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_how_to" title="INFOS"/> diff --git a/indra/newview/skins/default/xui/de/floater_map.xml b/indra/newview/skins/default/xui/de/floater_map.xml index f6d9db8d53..c4c42af66d 100644 --- a/indra/newview/skins/default/xui/de/floater_map.xml +++ b/indra/newview/skins/default/xui/de/floater_map.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Map" title=""> +<floater name="Map" title="MINIKARTE"> <floater.string name="ToolTipMsg"> [REGION](Doppelklicken, um Karte zu öffnen; Umschalt-Taste gedrückt halten und ziehen, um zu schwenken) </floater.string> @@ -7,7 +7,7 @@ [REGION](Doppelklicken, um zu teleportieren; Umschalttaste gedrückt halten und ziehen, um zu schwenken) </floater.string> <floater.string name="mini_map_caption"> - MINI-KARTE + Minikarte </floater.string> <text label="N" name="floater_map_north" text="N"> N diff --git a/indra/newview/skins/default/xui/de/floater_model_preview.xml b/indra/newview/skins/default/xui/de/floater_model_preview.xml index 330893c326..7f6cd9944f 100644 --- a/indra/newview/skins/default/xui/de/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/de/floater_model_preview.xml @@ -1,10 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Model Preview" title="Modell hochladen"> - <string name="status_idle"> - Inaktiv - </string> +<floater name="Model Preview" title="MODELL HOCHLADEN"> + <string name="status_idle"/> <string name="status_parse_error"> - DAE-Parsing-Fehler. Details siehe Protokoll. + Fehler: Fehler beim DAE-Parsen – Details siehe Protokoll. </string> <string name="status_reading_file"> Laden... @@ -51,6 +49,9 @@ <string name="mesh_status_missing_lod"> Erforderliche Detailstufe fehlt. </string> + <string name="mesh_status_invalid_material_list"> + Detailstufenmaterial ist keine Teilmenge des Referenzmodells. + </string> <string name="layer_all"> Alle </string> @@ -63,188 +64,211 @@ <string name="tbd"> noch nicht festgelegt </string> - <text name="name_label"> - Name: - </text> - <text name="lod_label"> - Vorschau: - </text> - <combo_box name="preview_lod_combo" tool_tip="Detailstufe zur Anzeige in Vorschaudarstellung"> - <combo_item name="high"> - Detailstufe: Hoch - </combo_item> - <combo_item name="medium"> - Detailstufe: Mittel - </combo_item> - <combo_item name="low"> - Detailstufe: Niedrig - </combo_item> - <combo_item name="lowest"> - Detailstufe: Niedrigste - </combo_item> - </combo_box> - <text name="warning_title"> - ACHTUNG: - </text> - <text name="warning_message"> - Sie können dieses Modell nicht auf die Second Life-Server hochladen. [[VURL] Weitere Infos], wie Sie das Hochladen von Netzmodellen freischalten können. - </text> - <text name="weights_text"> - Herunterladen: -Physik: -Server: - -Prim-Äquivalenz: - </text> - <text name="weights"> - [ST] -[PH] -[SIM] - -[EQ] - </text> - <tab_container name="import_tab"> - <panel label="Detailstufe" name="lod_panel"> - <text name="lod_table_header"> - Detailstufe auswählen - </text> - <text name="high_label" value="Hoch"/> - <text name="high_triangles" value="0"/> - <text name="high_vertices" value="0"/> - <text name="medium_label" value="Mittel"/> - <text name="medium_triangles" value="0"/> - <text name="medium_vertices" value="0"/> - <text name="low_label" value="Niedrig"/> - <text name="low_triangles" value="0"/> - <text name="low_vertices" value="0"/> - <text name="lowest_label" value="Niedrigste"/> - <text name="lowest_triangles" value="0"/> - <text name="lowest_vertices" value="0"/> - <text name="lod_table_footer"> - Detailstufe: [DETAIL] - </text> - <radio_group name="lod_file_or_limit" value="lod_from_file"> - <radio_item label="Aus Datei laden" name="lod_from_file"/> - <radio_item label="Automatisch generieren" name="lod_auto_generate"/> - <radio_item label="Keine" name="lod_none"/> - </radio_group> - <button label="Durchsuchen..." name="lod_browse"/> - <combo_box name="lod_mode"> - <combo_item name="triangle_limit"> - Dreiecklimit - </combo_item> - <combo_item name="error_threshold"> - Fehlerschwelle - </combo_item> - </combo_box> - <text name="build_operator_text"> - Konstruktionsoperator: + <panel name="left_panel"> + <panel name="model_name_representation_panel"> + <text name="name_label"> + Modellname: </text> - <text name="queue_mode_text"> - Warteschlangenmodus: + <text name="model_category_label"> + Dieses Modell repräsentiert... </text> - <combo_box name="build_operator"> - <combo_item name="edge_collapse"> - Kantenkollaps - </combo_item> - <combo_item name="half_edge_collapse"> - Halbkantenkollaps - </combo_item> - </combo_box> - <combo_box name="queue_mode"> - <combo_item name="greedy"> - Strikt - </combo_item> - <combo_item name="lazy"> - Locker - </combo_item> - <combo_item name="independent"> - Unabhängig - </combo_item> + <combo_box name="model_category_combo"> + <combo_item label="Eine auswählen..." name="Choose one"/> + <combo_item label="Avatarform" name="Avatar shape"/> + <combo_item label="Avatar-Anhang" name="Avatar attachment"/> + <combo_item label="Mobile Objekte (Fahrzeug, Tier)" name="Moving object (vehicle, animal)"/> + <combo_item label="Baukomponenten" name="Building Component"/> + <combo_item label="Groß, unbeweglich usw." name="Large, non moving etc"/> + <combo_item label="Kleiner, unbeweglich usw." name="Smaller, non-moving etc"/> + <combo_item label="Keine der oben genannten" name="Not really any of these"/> </combo_box> - <text name="border_mode_text"> - Grenzenmodus: - </text> - <text name="share_tolderance_text"> - Sharetoleranz: - </text> - <combo_box name="border_mode"> - <combo_item name="border_unlock"> - Freigeben - </combo_item> - <combo_item name="border_lock"> - Sperren - </combo_item> - </combo_box> - <text name="crease_label"> - Knitterwinkel: - </text> - <spinner name="crease_angle" value="75"/> </panel> - <panel label="Physik" name="physics_panel"> - <panel name="physics geometry"> - <radio_group name="physics_load_radio" value="physics_load_from_file"> - <radio_item label="Datei:" name="physics_load_from_file"/> - <radio_item label="Detailstufe verwenden:" name="physics_use_lod"/> - </radio_group> - <combo_box name="physics_lod_combo" tool_tip="Detailstufe für physische Form"> - <combo_item name="physics_lowest"> - Niedrigste - </combo_item> - <combo_item name="physics_low"> - Niedrig - </combo_item> - <combo_item name="physics_medium"> - Mittel - </combo_item> - <combo_item name="physics_high"> - Hoch - </combo_item> - </combo_box> - <button label="Durchsuchen..." name="physics_browse"/> + <tab_container name="import_tab"> + <panel label="Detailstufe" name="lod_panel" title="Detailstufe"> + <text initial_value="Quelle" name="source" value="Quelle"/> + <text initial_value="Dreiecke" name="triangles" value="Dreiecke"/> + <text initial_value="Scheitelpunkte" name="vertices" value="Scheitelpunkte"/> + <text initial_value="Hoch" name="high_label" value="Hoch"/> + <button label="Durchsuchen..." 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="Mittel" name="medium_label" value="Mittel"/> + <button label="Durchsuchen..." 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="Niedrig" name="low_label" value="Niedrig"/> + <button label="Durchsuchen..." 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="Niedrigste" name="lowest_label" value="Niedrigste"/> + <button label="Durchsuchen..." 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="Normalen generieren" name="gen_normals"/> + <text initial_value="Knitterwinkel:" name="crease_label" value="Knitterwinkel:"/> + <spinner name="crease_angle" value="75"/> </panel> - <panel name="physics analysis"> - <slider label="Glätten:" name="Smooth"/> - <check_box label="Löcher schließen (langsam)" name="Close Holes (Slow)"/> - <button label="Analysieren" name="Decompose"/> - <button label="Abbrechen" name="decompose_cancel"/> + <panel label="Physik" name="physics_panel"> + <panel name="physics geometry"> + <text name="first_step_name"> + Schritt 1: Detailstufe + </text> + <combo_box name="physics_lod_combo" tool_tip="Detailstufe für Physikform"> + <combo_item name="choose_one"> + Eine auswählen... + </combo_item> + <combo_item name="physics_high"> + Hoch + </combo_item> + <combo_item name="physics_medium"> + Mittel + </combo_item> + <combo_item name="physics_low"> + Niedrig + </combo_item> + <combo_item name="physics_lowest"> + Niedrigste + </combo_item> + <combo_item name="load_from_file"> + Aus Datei + </combo_item> + </combo_box> + <button label="Durchsuchen..." name="physics_browse"/> + </panel> + <panel name="physics analysis"> + <text name="method_label"> + Schritt 2: Analyse + </text> + <text name="analysis_method_label"> + Methode: + </text> + <text name="quality_label"> + Qualität: + </text> + <text name="smooth_method_label"> + Glätten: + </text> + <check_box label="Löcher schließen" name="Close Holes (Slow)"/> + <button label="Analysieren" name="Decompose"/> + <button label="Abbrechen" name="decompose_cancel"/> + </panel> + <panel name="physics simplification"> + <text name="second_step_label"> + Schritt 3: Vereinfachen + </text> + <text name="simp_method_header"> + Methode: + </text> + <text name="pass_method_header"> + Durchläufe: + </text> + <text name="Detail Scale label"> + Detailskalierung: + </text> + <text name="Retain%_label"> + Beibehalten: + </text> + <combo_box name="Combine Quality" value="1"/> + <button label="Vereinfachen" name="Simplify"/> + <button label="Abbrechen" name="simplify_cancel"/> + </panel> + <panel name="physics info"> + <text name="results_text"> + Ergebnisse: + </text> + <text name="physics_triangles"> + Dreiecke: [TRIANGLES], + </text> + <text name="physics_points"> + Scheitelpunkte: [POINTS], + </text> + <text name="physics_hulls"> + Hüllen: [HULLS] + </text> + </panel> </panel> - <panel name="physics simplification"> - <slider label="Durchläufe:" name="Combine Quality"/> - <slider label="Detailskala:" name="Detail Scale"/> - <slider label="Beibehalten:" name="Retain%"/> - <button label="Vereinfachen" name="Simplify"/> - <button label="Abbrechen" name="simplify_cancel"/> - </panel> - <panel name="physics info"> - <slider label="Vorschaudehnung:" name="physics_explode"/> - <text name="physics_triangles"> - Dreiecke: [TRIANGLES] + <panel label="Hochladeoptionen" name="modifiers_panel"> + <text name="scale_label"> + Skalierung (1=keine Skalierung): + </text> + <spinner name="import_scale" value="1.0"/> + <text name="dimensions_label"> + Dimensionen: </text> - <text name="physics_points"> - Vertices: [POINTS] + <text name="import_dimensions"> + [X] X [Y] X [Z] </text> - <text name="physics_hulls"> - Hüllen: [HULLS] + <check_box label="Texturen einschließen" name="upload_textures"/> + <text name="include_label"> + Nur für Avatarmodelle: </text> + <check_box label="Skingewicht einschließen" name="upload_skin"/> + <check_box label="Gelenkpositionen einschließen" name="upload_joints"/> + <text name="pelvis_offset_label"> + Z-Offset (Avatar anheben oder senken): + </text> + <spinner name="pelvis_offset" value="0.0"/> </panel> - </panel> - <panel label="Modifizierer" 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="Gewichte und Gebühr berechnen" name="calculate_btn" tool_tip="Gewichte und Gebühr berechnen"/> + <button label="Abbrechen" name="cancel_btn"/> + <button label="Hochladen" name="ok_btn" tool_tip="Auf Simulator hochladen"/> + <button label="Einstellungen löschen und Formular zurücksetzen" name="reset_btn"/> + <text name="upload_fee"> + Gebühr für Hochladen: [FEE] L$ + </text> + <text name="prim_weight"> + Auswirkung auf Land: [EQ] + </text> + <text name="download_weight"> + Herunterladen: [ST] + </text> + <text name="physics_weight"> + Physik: [PH] + </text> + <text name="server_weight"> + Server: [SIM] + </text> + <text name="warning_title"> + HINWEIS: + </text> + <text name="warning_message"> + Sie haben keine Berechtigung zum Hochladen von Netzmodellen. [[VURL] Weitere Infos], wie Sie sich zertifizieren lassen können. + </text> + <text name="status"> + [STATUS] </text> - <check_box label="Texturen" name="upload_textures"/> - <check_box label="Skingewicht" name="upload_skin"/> - <check_box label="Gelenkpositionen" name="upload_joints"/> - <spinner name="pelvis_offset" value="0,0"/> </panel> - </tab_container> - <text name="upload_fee"> - Gebühr für Hochladen: [FEE] L$ + </panel> + <text name="lod_label"> + Vorschau: </text> - <button label="Auf Standardwerte setzen" name="reset_btn" tool_tip="Auf Standardwerte setzen"/> - <button label="Gewichte und Gebühr berechnen" name="calculate_btn" tool_tip="Gewichte und Gebühr berechnen"/> - <button label="Hochladen" name="ok_btn" tool_tip="An Simulator hochladen"/> - <button label="Abbrechen" name="cancel_btn"/> + <panel name="right_panel"> + <combo_box name="preview_lod_combo" tool_tip="Detailstufe zur Anzeige in Vorschaudarstellung"> + <combo_item name="high"> + Hoch + </combo_item> + <combo_item name="medium"> + Mittel + </combo_item> + <combo_item name="low"> + Niedrig + </combo_item> + <combo_item name="lowest"> + Niedrigste + </combo_item> + </combo_box> + <text name="label_display"> + Anzeige... + </text> + <check_box label="Kanten" name="show_edges"/> + <check_box label="Physik" name="show_physics"/> + <check_box label="Texturen" name="show_textures"/> + <check_box label="Skingewichte" name="show_skin_weight"/> + <check_box label="Gelenke" name="show_joint_positions"/> + <text name="physics_explode_label"> + Vorschaudehnung: + </text> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_model_wizard.xml b/indra/newview/skins/default/xui/de/floater_model_wizard.xml index 7103757b40..354a505901 100644 --- a/indra/newview/skins/default/xui/de/floater_model_wizard.xml +++ b/indra/newview/skins/default/xui/de/floater_model_wizard.xml @@ -6,26 +6,20 @@ <button label="2. Optimieren" name="optimize_btn"/> <button label="1. Datei auswählen" 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"> Modelldatei auswählen </text> </panel> - <panel name="choose_file_content_panel"> + <panel name="content"> <text name="advanced_users_text"> Fortgeschrittene Benutzer: Wenn Sie bereits mit Tools zur Erstellung von 3D-Inhalten vertraut sind, können Sie den erweiterten Uploader verwenden. </text> <button label="Auf Erweitert wechseln" name="switch_to_advanced"/> - <text name="choose_model_file_label"> + <text name="Cache location"> Hochzuladende Modelldatei auswählen </text> <button label="Durchsuchen..." label_selected="Durchsuchen..." name="browse"/> - <text name="support_collada_text"> - Second Life unterstützt COLLADA-Dateien (.dae). - </text> - <text name="dimensions_label"> - Abmessungen (m): - </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"> Modell optimieren </text> </panel> - <text name="optimize_hint"> + <text name="description"> Wir haben das Modell auf Leistung optimiert. Sie können es bei Bedarf weiter anpassen. </text> - <panel name="optimize_content_panel"> - <text name="generating_lod_label"> - Detailstufe generieren - </text> + <panel name="content"> <text name="high_detail_text"> Detailstufe generieren: Hoch </text> @@ -64,123 +55,64 @@ </text> </panel> <panel name="content2"> - <text name="optimize_performance_text"> - Leistung - </text> - <text name="optimize_faster_rendering_text"> - Schnellere Darstellung -Weniger Details -Niedrigeres Prim-Gewicht - </text> - <text name="optimize_accuracy_text"> - Genauigkeit - </text> - <text name="optimize_slower_rendering_text"> - Langsamere Darstellung -Mehr Details -Höheres Prim-Gewicht - </text> - <text name="accuracy_slider_mark1"> - ' - </text> - <text name="accuracy_slider_mark2"> - ' - </text> - <text name="accuracy_slider_mark3"> - ' - </text> <button label="Geometrie neu berechnen" name="recalculate_geometry_btn"/> - <text name="geometry_preview_label"> + <text name="lod_label"> Geometrievorschau </text> <combo_box name="preview_lod_combo" tool_tip="Detailstufe zur Anzeige in Vorschaudarstellung"> - <combo_item name="preview_lod_high"> + <combo_item name="high"> Viel Details </combo_item> - <combo_item name="preview_lod_medium"> + <combo_item name="medium"> Mittlere Details </combo_item> - <combo_item name="preview_lod_low"> + <combo_item name="low"> Wenig Details </combo_item> - <combo_item name="preview_lod_lowest"> + <combo_item name="lowest"> Wenigste Details </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"> Physik anpassen </text> </panel> - <text name="physics_hint"> + <text name="description"> Wir erstellen eine Form für die Außenhülle des Modells. Passen Sie die Detailstufe der Form wie für den beabsichtigten Zweck erforderlich an. </text> - <panel name="physics_content_panel"> - <text name="physics_performance_text"> - Leistung - </text> - <text name="physics_faster_rendering_text"> - Schnellere Darstellung -Weniger Details -Niedrigeres Prim-Gewicht - </text> - <text name="physics_accuracy_text"> - Genauigkeit - </text> - <text name="physics_slower_dendering_text"> - Langsamere Darstellung -Mehr Details -Höheres Prim-Gewicht - </text> - <text name="physics_example_1"> - Beispiele: -Mobile Objekte -Fliegende Objekte -Fahrzeuge - </text> - <text name="physics_example_2"> - Beispiele: -Kleine statische Objekte -Objekte mit weniger Details -Einfache Möbel - </text> - <text name="physics_example_3"> - Beispiele: -Statische Objekte -Objekte mit viel Details -Gebäude - </text> + <panel name="content"> <button label="Physik neu berechnen" name="recalculate_physics_btn"/> <button label="Neu berechnen..." name="recalculating_physics_btn"/> - <text name="physics_preview_label"> + <text name="lod_label"> Physikvorschau </text> <combo_box name="preview_lod_combo2" tool_tip="Detailstufe zur Anzeige in Vorschaudarstellung"> - <combo_item name="preview_lod2_high"> + <combo_item name="high"> Viel Details </combo_item> - <combo_item name="preview_lod2_medium"> + <combo_item name="medium"> Mittlere Details </combo_item> - <combo_item name="preview_lod2_low"> + <combo_item name="low"> Wenig Details </combo_item> - <combo_item name="preview_lod2_lowest"> + <combo_item name="lowest"> Wenigste Details </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"> Überprüfen </text> </panel> - <panel name="review_content_panel"> + <panel name="content"> <text name="review_prim_equiv"> Auswirkung auf Parzelle/Region: Prim-Äquivalenzwert [EQUIV] </text> @@ -193,8 +125,8 @@ Gebäude </panel> </panel> <panel name="upload_panel"> - <panel name="upload_header_panel"> - <text name="upload_header_text"> + <panel name="header_panel"> + <text name="header_text"> Upload abgeschlossen </text> </panel> diff --git a/indra/newview/skins/default/xui/de/floater_moveview.xml b/indra/newview/skins/default/xui/de/floater_moveview.xml index 4333392582..e8cc77c038 100644 --- a/indra/newview/skins/default/xui/de/floater_moveview.xml +++ b/indra/newview/skins/default/xui/de/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="BEWEGEN"> <string name="walk_forward_tooltip"> Vorwärts gehen (Nach-oben-Pfeil oder W drücken) </string> @@ -58,14 +58,14 @@ Fliegen </string> <panel name="panel_actions"> - <button label="" label_selected="" name="move up btn" tool_tip="Nach oben fliegen, „E" drücken"/> <button label="" label_selected="" name="turn left btn" tool_tip="Nach links (Links-Pfeil oder A drücken)"/> <joystick_slide name="move left btn" tool_tip="Nach links gehen (Umschalt + Links-Pfeil oder A drücken)"/> - <button label="" label_selected="" name="move down btn" tool_tip="Nach unten fliegen, „C" drücken"/> <button label="" label_selected="" name="turn right btn" tool_tip="Nach rechts (Rechts-Pfeil oder D drücken)"/> <joystick_slide name="move right btn" tool_tip="Nach rechts fliegen (Umschalt + Rechts-Pfeil oder D drücken)"/> <joystick_turn name="forward btn" tool_tip="Vorwärts gehen (Nach-oben-Pfeil oder W drücken)"/> <joystick_turn name="backward btn" tool_tip="Rückwärts gehen (Nach-Unten-Pfeil oder S drücken)"/> + <button label="" label_selected="" name="move up btn" tool_tip="Nach oben fliegen, „E" drücken"/> + <button label="" label_selected="" name="move down btn" tool_tip="Nach unten fliegen, „C" drücken"/> </panel> <panel name="panel_modes"> <button label="" name="mode_walk_btn" tool_tip="Gehen"/> diff --git a/indra/newview/skins/default/xui/de/floater_my_appearance.xml b/indra/newview/skins/default/xui/de/floater_my_appearance.xml new file mode 100644 index 0000000000..e26b2434cc --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_my_appearance.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_my_appearance" title="AUSSEHEN"> + <panel label="Aussehen bearbeiten" name="main_panel"/> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_my_inventory.xml b/indra/newview/skins/default/xui/de/floater_my_inventory.xml new file mode 100644 index 0000000000..0cfa17562e --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_my_inventory.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_my_inventory" title="INVENTAR"/> diff --git a/indra/newview/skins/default/xui/de/floater_object_weights.xml b/indra/newview/skins/default/xui/de/floater_object_weights.xml new file mode 100644 index 0000000000..e6641d3d18 --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_object_weights.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="object_weights" title="ERWEITERT"> + <floater.string name="nothing_selected" value="--"/> + <text name="selected_text" value="AUSGEWÄHLT"/> + <text name="objects" value="--"/> + <text name="objects_label" value="Objekte"/> + <text name="prims" value="--"/> + <text name="prims_label" value="Primitive"/> + <text name="weights_of_selected_text" value="GEWICHT DER AUSGEWÄHLTEN"/> + <text name="download" value="--"/> + <text name="download_label" value="Herunterladen"/> + <text name="physics" value="--"/> + <text name="physics_label" value="Physik"/> + <text name="server" value="--"/> + <text name="server_label" value="Server"/> + <text name="display" value="--"/> + <text name="display_label" value="Anzeige"/> + <text name="land_impacts_text" value="AUSWIRKUNGEN AUF LAND"/> + <text name="selected" value="--"/> + <text name="selected_label" value="Ausgewählt"/> + <text name="rezzed_on_land" value="--"/> + <text name="rezzed_on_land_label" value="Auf Land gerezzt"/> + <text name="remaining_capacity" value="--"/> + <text name="remaining_capacity_label" value="Verbleibende Kapazität"/> + <text name="total_capacity" value="--"/> + <text name="total_capacity_label" value="Gesamtkapazität"/> + <text name="help_SLURL" value="[secondlife:///app/help/object_weights Was ist das?...]"/> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/de/floater_outfit_save_as.xml index 8c110e5516..7481e6d4b7 100644 --- a/indra/newview/skins/default/xui/de/floater_outfit_save_as.xml +++ b/indra/newview/skins/default/xui/de/floater_outfit_save_as.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="modal container" title="Outfit speichern"> +<floater name="modal container" title="OUTFIT SPEICHERN"> <button label="Speichern" label_selected="Speichern" name="Save"/> <button label="Abbrechen" label_selected="Abbrechen" name="Cancel"/> <text name="Save item as:"> diff --git a/indra/newview/skins/default/xui/de/floater_people.xml b/indra/newview/skins/default/xui/de/floater_people.xml new file mode 100644 index 0000000000..fd1db148ac --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_people.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_people" title="LEUTE"> + <panel_container name="main_panel"> + <panel label="Gruppenprofil" name="panel_group_info_sidetray"/> + <panel label="Blockierte Einwohner und Objekte" name="panel_block_list_sidetray"/> + </panel_container> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_picks.xml b/indra/newview/skins/default/xui/de/floater_picks.xml new file mode 100644 index 0000000000..2521920e83 --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_picks.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_picks" title="Auswahlen"/> diff --git a/indra/newview/skins/default/xui/de/floater_places.xml b/indra/newview/skins/default/xui/de/floater_places.xml new file mode 100644 index 0000000000..80a1490afd --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_places.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_places" title="ORTE"> + <panel label="Orte" name="main_panel"/> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_sound_devices.xml b/indra/newview/skins/default/xui/de/floater_sound_devices.xml index 7575ad9e2a..22ccb2c1a2 100644 --- a/indra/newview/skins/default/xui/de/floater_sound_devices.xml +++ b/indra/newview/skins/default/xui/de/floater_sound_devices.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_sound_devices" title="Audiogeräte"> +<floater name="floater_sound_devices" title="SOUNDGERÄTE"> <text name="voice_label"> Voice-Chat </text> diff --git a/indra/newview/skins/default/xui/de/floater_stats.xml b/indra/newview/skins/default/xui/de/floater_stats.xml index 1eb2dd4288..f6dc9fe15d 100644 --- a/indra/newview/skins/default/xui/de/floater_stats.xml +++ b/indra/newview/skins/default/xui/de/floater_stats.xml @@ -10,8 +10,8 @@ </stat_view> <stat_view label="Erweitert" name="advanced"> <stat_view label="Darstellung" name="render"> - <stat_bar label="Gezeichnete KTris" name="ktrisframe"/> - <stat_bar label="Gezeichnete KTris" name="ktrissec"/> + <stat_bar label="Pro Frame gezeichnete KTris" name="ktrisframe"/> + <stat_bar label="Pro Sek. gezeichnete KTris" name="ktrissec"/> <stat_bar label="Objektanzahl" name="objs"/> <stat_bar label="Neue Objekte" name="newobjs"/> </stat_view> @@ -32,7 +32,7 @@ <stat_bar label="Ebenen" name="layerskbitstat"/> <stat_bar label="Tatsächlicher Eingang" name="actualinkbitstat"/> <stat_bar label="Tatsächlicher Ausgang" name="actualoutkbitstat"/> - <stat_bar label="VFS Ausstehende Ops" name="vfspendingoperations"/> + <stat_bar label="Ausstehende Vorgänge im VFS" name="vfspendingoperations"/> </stat_view> </stat_view> <stat_view label="Simulator" name="sim"> @@ -64,6 +64,14 @@ <stat_bar label="Agent-Zeit" name="simagentmsec"/> <stat_bar label="Bilder-Zeit" name="simimagesmsec"/> <stat_bar label="Skript-Zeit" name="simscriptmsec"/> + <stat_bar label="Verbleib. Zeit" name="simsparemsec"/> + <stat_view label="Zeitdetails (ms)" name="timedetails"> + <stat_bar label="Physik-Schritt" name="simsimphysicsstepmsec"/> + <stat_bar label="Phys. Formen aktualisieren" name="simsimphysicsshapeupdatemsec"/> + <stat_bar label="Physik – andere" name="simsimphysicsothermsec"/> + <stat_bar label="Schlafzeit" name="simsleepmsec"/> + <stat_bar label="Pump IO" name="simpumpiomsec"/> + </stat_view> </stat_view> </stat_view> </container_view> diff --git a/indra/newview/skins/default/xui/de/floater_tools.xml b/indra/newview/skins/default/xui/de/floater_tools.xml index 49b133e10f..cf1d03f32d 100644 --- a/indra/newview/skins/default/xui/de/floater_tools.xml +++ b/indra/newview/skins/default/xui/de/floater_tools.xml @@ -25,10 +25,10 @@ Klicken und ziehen, um Land auszuwählen </floater.string> <floater.string name="status_selectcount"> - [OBJ_COUNT] Objekte ([PRIM_COUNT] Prims [PE_STRING]) ausgewählt + [OBJ_COUNT] Objekte ausgewählt, Auswirkung auf Land [LAND_IMPACT] </floater.string> - <floater.string name="status_selectprimequiv"> - , Prim-Äquivalenz [SEL_WEIGHT] + <floater.string name="status_remaining_capacity"> + Verbleibende Kapazität [LAND_CAPACITY]. </floater.string> <button label="" label_selected="" name="button focus" tool_tip="Fokus"/> <button label="" label_selected="" name="button move" tool_tip="Verschieben"/> @@ -105,8 +105,8 @@ <text name="selection_empty"> Nichts ausgewählt. </text> - <text name="selection_weight"> - Physikgewicht [PHYS_WEIGHT], Darstellungskosten [DISP_WEIGHT]. + <text name="remaining_capacity"> + [CAPACITY_STRING] [secondlife:///app/openfloater/object_weights Weitere Infos] </text> <tab_container name="Object Info Tabs"> <panel label="Allgemein" name="General"> @@ -322,7 +322,6 @@ Naht </text> <combo_box name="sculpt type control"> - <combo_box.item label="(keiner)" name="None"/> <combo_box.item label="Kugel" name="Sphere"/> <combo_box.item label="Torus" name="Torus"/> <combo_box.item label="Fläche" name="Plane"/> diff --git a/indra/newview/skins/default/xui/de/floater_toybox.xml b/indra/newview/skins/default/xui/de/floater_toybox.xml new file mode 100644 index 0000000000..23ec9c2e58 --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_toybox.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Toybox" title="SYMBOLLEISTEN ANPASSEN"> + <text name="toybox label 1"> + Sie können Schaltflächen durch Ziehen zu Symbolleisten hinzufügen oder daraus entfernen. + </text> + <text name="toybox label 2"> + Je nach Einstellung erscheinen Schaltflächen wie dargestellt oder nur als Symbol. + </text> + <button label="Standards wiederherstellen" label_selected="Standards wiederherstellen" name="btn_restore_defaults"/> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_voice_controls.xml b/indra/newview/skins/default/xui/de/floater_voice_controls.xml index c97852b6e7..18d53841b8 100644 --- a/indra/newview/skins/default/xui/de/floater_voice_controls.xml +++ b/indra/newview/skins/default/xui/de/floater_voice_controls.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_voice_controls" title="Voice-Steuerung"> +<floater name="floater_voice_controls" title="SPRACHSTEUERUNGEN"> <string name="title_nearby"> - VOICE IN DER NÄHE + Stimme in der Nähe </string> <string name="title_group"> Gruppengespräch mit [GROUP] diff --git a/indra/newview/skins/default/xui/de/menu_bottomtray.xml b/indra/newview/skins/default/xui/de/menu_bottomtray.xml index da36be59d0..cb0082f944 100644 --- a/indra/newview/skins/default/xui/de/menu_bottomtray.xml +++ b/indra/newview/skins/default/xui/de/menu_bottomtray.xml @@ -8,7 +8,7 @@ <menu_item_check label="Schaltfläche „Bauen“" name="ShowBuildButton"/> <menu_item_check label="Schaltfläche „Suchen“" name="ShowSearchButton"/> <menu_item_check label="Schaltfläche „Karte“" name="ShowWorldMapButton"/> - <menu_item_check label="Schaltfläche „Minikarte“" name="ShowMiniMapButton"/> + <menu_item_check label="Minikarten-Schaltfläche" name="ShowMiniMapButton"/> <menu_item_call label="Ausschneiden" name="NearbyChatBar_Cut"/> <menu_item_call label="Kopieren" name="NearbyChatBar_Copy"/> <menu_item_call label="Einfügen" name="NearbyChatBar_Paste"/> diff --git a/indra/newview/skins/default/xui/de/menu_hide_navbar.xml b/indra/newview/skins/default/xui/de/menu_hide_navbar.xml index 9acf96dc6d..33d55e85bd 100644 --- a/indra/newview/skins/default/xui/de/menu_hide_navbar.xml +++ b/indra/newview/skins/default/xui/de/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="Navigationsleiste anzeigen" name="ShowNavbarNavigationPanel"/> + <menu_item_check label="Navigations- und Favoritenleiste anzeigen" name="ShowNavbarNavigationPanel"/> <menu_item_check label="Favoritenleiste anzeigen" name="ShowNavbarFavoritesPanel"/> <menu_item_check label="Mini-Standortleiste anzeigen" name="ShowMiniLocationPanel"/> </menu> diff --git a/indra/newview/skins/default/xui/de/menu_login.xml b/indra/newview/skins/default/xui/de/menu_login.xml index d932234cd1..c90205fbe4 100644 --- a/indra/newview/skins/default/xui/de/menu_login.xml +++ b/indra/newview/skins/default/xui/de/menu_login.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu_bar name="Login Menu"> <menu label="Ich" name="File"> - <menu_item_call label="Einstellungen" name="Preferences..."/> + <menu_item_call label="Einstellungen..." name="Preferences..."/> <menu_item_call label="[APP_NAME] schließen" name="Quit"/> </menu> <menu label="Hilfe" name="Help"> diff --git a/indra/newview/skins/default/xui/de/menu_toolbars.xml b/indra/newview/skins/default/xui/de/menu_toolbars.xml new file mode 100644 index 0000000000..cfeae3deca --- /dev/null +++ b/indra/newview/skins/default/xui/de/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="Schaltflächen auswählen..." name="Chose Buttons"/> + <menu_item_check label="Symbole und Beschriftungen" name="icons_with_text"/> + <menu_item_check label="Nur Symbole" name="icons_only"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_viewer.xml b/indra/newview/skins/default/xui/de/menu_viewer.xml index 7c6918a4ee..e6135aa100 100644 --- a/indra/newview/skins/default/xui/de/menu_viewer.xml +++ b/indra/newview/skins/default/xui/de/menu_viewer.xml @@ -1,29 +1,30 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu_bar name="Main Menu"> <menu label="Ich" name="Me"> - <menu_item_call label="Einstellungen" name="Preferences"/> - <menu_item_call label="Meine Startseite" name="Manage My Account"> + <menu_item_call label="Dashboard..." name="Manage My Account"> <menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=de"/> </menu_item_call> - <menu_item_call label="L$ kaufen" name="Buy and Sell L$"/> - <menu_item_call label="Mein Profil" name="Profile"/> - <menu_item_call label="Mein Aussehen" name="ChangeOutfit"/> - <menu_item_check label="Mein Inventar" name="Inventory"/> - <menu_item_check label="Mein Inventar" name="ShowSidetrayInventory"/> - <menu_item_check label="Meine Gesten" name="Gestures"/> - <menu_item_check label="Meine Stimme" name="ShowVoice"/> + <menu_item_call label="Profil..." name="Profile"/> + <menu_item_call label="Aussehen..." name="ChangeOutfit"/> + <menu_item_check label="Inventar..." name="Inventory"/> + <menu_item_check label="Gesten..." name="Gestures"/> + <menu_item_check label="Stimme..." name="ShowVoice"/> <menu label="Bewegung" name="Movement"> <menu_item_call label="Hinsetzen" name="Sit Down Here"/> <menu_item_check label="Fliegen" name="Fly"/> <menu_item_check label="Immer rennen" name="Always Run"/> <menu_item_call label="Animation meines Avatars stoppen" name="Stop Animating My Avatar"/> </menu> - <menu label="Mein Status" name="Status"> + <menu label="Status" name="Status"> <menu_item_call label="Abwesend" name="Set Away"/> <menu_item_call label="Beschäftigt" name="Set Busy"/> </menu> <menu_item_call label="Admin-Status anfordern" name="Request Admin Options"/> <menu_item_call label="Admin-Status verlassen" name="Leave Admin Options"/> + <menu_item_call label="L$ kaufen" name="Buy and Sell L$"/> + <menu_item_call label="Einstellungen..." name="Preferences"/> + <menu_item_call label="Symbolleisten..." name="Toolbars"/> + <menu_item_call label="Alle Steuerelemente ausblenden" name="Hide UI"/> <menu_item_call label="[APP_NAME] schließen" name="Quit"/> </menu> <menu label="Unterhalten" name="Communicate"> @@ -145,7 +146,6 @@ </menu> <menu label="Hilfe" name="Help"> <menu_item_call label="[SECOND_LIFE]-Hilfe" name="Second Life Help"/> - <menu_item_check label="Hinweise aktivieren" name="Enable Hints"/> <menu_item_call label="Missbrauch melden" name="Report Abuse"/> <menu_item_call label="Fehler melden" name="Report Bug"/> <menu_item_call label="INFO ÜBER [APP_NAME]" name="About Second Life"/> @@ -161,7 +161,7 @@ <menu label="Performance Tools" name="Performance Tools"> <menu_item_call label="Lag-Anzeige" name="Lag Meter"/> <menu_item_check label="Statistikleiste" name="Statistics Bar"/> - <menu_item_check label="Avatar-Darstellungskosten anzeigen" name="Avatar Rendering Cost"/> + <menu_item_check label="Zuggewicht für Avatare anzeigen" name="Avatar Rendering Cost"/> </menu> <menu label="Hervorhebung und Sichtbarkeit" name="Highlighting and Visibility"> <menu_item_check label="Pulsierender Strahl" name="Cheesy Beacon"/> @@ -289,6 +289,7 @@ <menu_item_check label="Lichter" name="Lights"/> <menu_item_check label="Gelenkpunkte" name="Collision Skeleton"/> <menu_item_check label="Raycast" name="Raycast"/> + <menu_item_check label="Komplexität beim Rendern" name="rendercomplexity"/> <menu_item_check label="Formen" name="Sculpt"/> </menu> <menu label="Rendering" name="Rendering"> diff --git a/indra/newview/skins/default/xui/de/notifications.xml b/indra/newview/skins/default/xui/de/notifications.xml index 4c53c40d86..fc38608df5 100644 --- a/indra/newview/skins/default/xui/de/notifications.xml +++ b/indra/newview/skins/default/xui/de/notifications.xml @@ -1925,6 +1925,12 @@ Inventarobjekt(e) verschieben? Wirklich beenden? <usetemplate ignoretext="Bestätigen, bevor Sitzung beendet wird" name="okcancelignore" notext="Nicht beenden" yestext="Beenden"/> </notification> + <notification name="ConfirmRestoreToybox"> + Möchten Sie wirklich Ihre Standardschaltflächen und -symbolleisten wiederherstellen? + +Diese Aktion kann nicht rückgängig gemacht werden. + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> <notification name="DeleteItems"> [QUESTION] <usetemplate ignoretext="Vor dem Löschen von Objekten bestätigen" name="okcancelignore" notext="Abbrechen" yestext="OK"/> @@ -3008,10 +3014,6 @@ Durch Ausblenden der Schaltfläche „Sprechen“ wird die Sprechfunktion deakti <button name="cancel" text="Abbrechen"/> </form> </notification> - <notification label="" name="ModeChange"> - Zum Wechsel des Modus müssen Sie das Programm beenden und neu starten. - <usetemplate name="okcancelbuttons" notext="Nicht beenden" yestext="Beenden"/> - </notification> <notification label="" name="NoClassifieds"> Die Erstellung und Bearbeitung von Anzeigen ist nur im Modus „Erweitert“ möglich. Möchten Sie das Programm beenden und den Modus wechseln? Die Modusauswahl ist auf dem Anmeldebildschirm zu finden. <usetemplate name="okcancelbuttons" notext="Nicht beenden" yestext="Beenden"/> @@ -3056,6 +3058,10 @@ Durch Ausblenden der Schaltfläche „Sprechen“ wird die Sprechfunktion deakti Die Suche ist nur im Modus „Erweitert“ möglich. Möchten Sie sich abmelden und den Modus wechseln? <usetemplate name="okcancelbuttons" notext="Nicht beenden" yestext="Beenden"/> </notification> + <notification label="" name="ConfirmHideUI"> + Durch diese Aktion werden alle Menüelemente und Schaltflächen ausgeblendet. Um sie wieder anzuzeigen, klicken Sie erneut auf [SHORTCUT]. + <usetemplate ignoretext="Vor Ausblenden der UI bestätigen" name="okcancelignore" notext="Abbrechen" yestext="OK"/> + </notification> <global name="UnsupportedGLRequirements"> Ihr Computer entspricht nicht den Hardwareanforderungen von [APP_NAME]. [APP_NAME] setzt eine OpenGL-Grafikkarte mit Multitextur-Unterstützung voraus. Falls Ihre Grafikkarte diese Funktion unterstützt, installieren Sie die neuesten Treiber sowie die aktuellen Service Packs und Patches für Ihr Betriebssystem. diff --git a/indra/newview/skins/default/xui/de/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/de/panel_chiclet_bar.xml new file mode 100644 index 0000000000..bcc6772bb9 --- /dev/null +++ b/indra/newview/skins/default/xui/de/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="Unterhaltungen"/> + </chiclet_im_well> + </layout_panel> + <layout_panel name="notification_well_panel"> + <chiclet_notification name="notification_well"> + <button name="Unread" tool_tip="Benachrichtigungen"/> + </chiclet_notification> + </layout_panel> + </layout_stack> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_me.xml b/indra/newview/skins/default/xui/de/panel_me.xml index 26b9812212..f49446fbbf 100644 --- a/indra/newview/skins/default/xui/de/panel_me.xml +++ b/indra/newview/skins/default/xui/de/panel_me.xml @@ -1,7 +1,4 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Mein Profil" name="panel_me"> - <tab_container name="tabs"> - <panel label="MEIN PROFIL" name="panel_profile"/> - <panel label="MEINE AUSWAHL" name="panel_picks"/> - </tab_container> + <panel label="MEINE AUSWAHLEN" name="panel_picks"/> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_navigation_bar.xml b/indra/newview/skins/default/xui/de/panel_navigation_bar.xml index ee1a543aac..53794b6619 100644 --- a/indra/newview/skins/default/xui/de/panel_navigation_bar.xml +++ b/indra/newview/skins/default/xui/de/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="Zurück zum vorherigen Standort teleportieren"/> - <pull_button name="forward_btn" tool_tip="Um einen Standort weiter teleportieren"/> - <button name="home_btn" tool_tip="Zu meinem Zuhause teleportieren"/> - <location_input label="Standort" name="location_combo"/> - <search_combo_box label="Suche" name="search_combo_box" tool_tip="Suche"> - <combo_editor label="[SECOND_LIFE] durchsuchen" name="search_combo_editor"/> - </search_combo_box> - </panel> - <favorites_bar name="favorite" tool_tip="Ziehen Sie Landmarken hier hin, damit Sie schnell zu Ihren Lieblingsplätzen in Second Life gelangen können!"> - <label name="favorites_bar_label" tool_tip="Ziehen Sie Landmarken hier hin, damit Sie schnell zu Ihren Lieblingsplätzen in Second Life gelangen können!"> - Favoritenleiste - </label> - <chevron_button name=">>" tool_tip="Mehr meiner Favoriten anzeigen"/> - </favorites_bar> + <layout_stack name="nvp_stack"> + <layout_panel name="navigation_layout_panel"> + <panel name="navigation_panel"> + <pull_button name="back_btn" tool_tip="Zum vorherigen Standort zurückgehen"/> + <pull_button name="forward_btn" tool_tip="Einen Standort weiter gehen"/> + <button name="home_btn" tool_tip="Zu meinem Zuhause teleportieren"/> + <location_input label="Standort" name="location_combo"/> + </panel> + </layout_panel> + <layout_panel name="favorites_layout_panel"> + <favorites_bar name="favorite" tool_tip="Landmarken hierher ziehen für schnellen Zugriff auf Lieblingsorte in Second Life."> + <label name="favorites_bar_label" tool_tip="Landmarken hierher ziehen für schnellen Zugriff auf Lieblingsorte in Second Life."> + Favoritenleiste + </label> + <more_button name=">>" tool_tip="Mehr meiner Favoriten anzeigen"> + Mehr ▼ + </more_button> + </favorites_bar> + </layout_panel> + </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_nearby_chat.xml b/indra/newview/skins/default/xui/de/panel_nearby_chat.xml new file mode 100644 index 0000000000..c3ce42efa1 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_nearby_chat.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="nearby_chat"> + <check_box label="Chat übersetzen (von Google bereitgestellt)" name="translate_chat_checkbox"/> +</panel> 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 ed22e05a7c..5c8b8302c8 100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_general.xml @@ -13,7 +13,10 @@ <combo_box.item label="Italiano (Italienisch) - Beta" name="Italian"/> <combo_box.item label="Polski (Polnisch) - Beta" name="Polish"/> <combo_box.item label="Português (Portugiesisch) - Beta" name="Portugese"/> + <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> <text name="language_textbox2"> (Erfordert Neustart) @@ -48,7 +51,6 @@ <check_box label="Gruppentitel" name="show_all_title_checkbox1" tool_tip="Gruppentitel wie „Vorstand“ oder „Mitglied“"/> <check_box label="Freunde hervorheben" name="show_friends" tool_tip="Avatarnamen Ihrer Freunde hervorheben"/> <check_box label="Anzeigenamen anzeigen" name="display_names_check" tool_tip="Aktivieren Sie diese Option, um Anzeigenamen in Chat, IM, Avatarnamen usw. zu verwenden."/> - <check_box label="Viewer-UI-Tipps aktivieren" name="viewer_hints_check"/> <text name="inworld_typing_rg_label"> Drücken von Buchstabentasten: </text> diff --git a/indra/newview/skins/default/xui/de/panel_preferences_move.xml b/indra/newview/skins/default/xui/de/panel_preferences_move.xml index fb749a16d7..3e248f0bf0 100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_move.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_move.xml @@ -7,18 +7,33 @@ </text> <check_box label="Bauen/Bearbeiten" name="edit_camera_movement" tool_tip="Automatische Kamerapositionierung bei Wechsel in und aus dem Bearbeitungsmodus verwenden"/> <check_box label="Aussehen" name="appearance_camera_movement" tool_tip="Automatische Kamerapositionierung im Bearbeitenmodus verwenden"/> - <check_box initial_value="true" label="Seitenleiste" name="appearance_sidebar_positioning" tool_tip="Automatische Kameraposition für Seitenleiste verwenden"/> + <text name="keyboard_lbl"> + Tastatur: + </text> + <check_box label="Mit Pfeiltasten bewegen" name="arrow_keys_move_avatar_check"/> + <check_box label="Drücken-drücken-halten, um zu rennen" name="tap_tap_hold_to_run"/> + <text name="mouse_lbl"> + Maus: + </text> <check_box label="Mich im Mouselook anzeigen" name="first_person_avatar_visible"/> <text name=" Mouse Sensitivity"> Mausempfindlichkeit für Mouselook: </text> <check_box label="Umkehren" name="invert_mouse"/> - <check_box label="Mit Pfeiltasten bewegen" name="arrow_keys_move_avatar_check"/> - <check_box label="Drücken-drücken-halten, um zu rennen" name="tap_tap_hold_to_run"/> - <check_box label="Doppelklicken:" name="double_click_chkbox"/> - <radio_group name="double_click_action"> - <radio_item label="Teleportieren" name="radio_teleport"/> - <radio_item label="Autopilot" name="radio_autopilot"/> - </radio_group> + <text name="single_click_action_lbl"> + Einmal auf Land klicken: + </text> + <combo_box name="single_click_action_combo"> + <combo_box.item label="Keine Aktion" name="0"/> + <combo_box.item label="Zu angeklicktem Ort bewegen" name="1"/> + </combo_box> + <text name="double_click_action_lbl"> + Auf Land doppelklicken: + </text> + <combo_box name="double_click_action_combo"> + <combo_box.item label="Keine Aktion" name="0"/> + <combo_box.item label="Zu angeklicktem Ort bewegen" name="1"/> + <combo_box.item label="Zu angeklicktem Ort teleportieren" name="2"/> + </combo_box> <button label="Andere Geräte" name="joystick_setup_button"/> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_status_bar.xml b/indra/newview/skins/default/xui/de/panel_status_bar.xml index e9de350ee7..d34fcf70bc 100644 --- a/indra/newview/skins/default/xui/de/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/de/panel_status_bar.xml @@ -18,11 +18,8 @@ <panel name="balance_bg"> <text name="balance" tool_tip="Klicken, um L$-Guthaben zu aktualisieren" value="20 L$"/> <button label="L$ kaufen" name="buyL" tool_tip="Hier klicken, um mehr L$ zu kaufen"/> + <button label="Einkaufen" name="goShop" tool_tip="Second Life-Marktplatz öffnen"/> </panel> - <combo_box name="mode_combo" tool_tip="Wählen Sie den gewünschten Modus aus. Basismodus: Second Life schnell und einfach erkunden und chatten. Erweiterter Modus: Zugriff auf zusätzliche Funktionen."> - <combo_box.item label="Basismodus" name="Basic"/> - <combo_box.item label="Erweiterter Modus" name="Advanced"/> - </combo_box> <text name="TimeText" tool_tip="Aktuelle Zeit (Pazifik)"> 24:00 H PST </text> diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml index 435f3494b0..2929556d43 100644 --- a/indra/newview/skins/default/xui/de/strings.xml +++ b/indra/newview/skins/default/xui/de/strings.xml @@ -128,7 +128,7 @@ Die Zertifikatsunterschrift des Gridservers konnte nicht bestätigt werden. Bitte kontaktieren Sie Ihren Grid-Administrator. </string> <string name="LoginFailedNoNetwork"> - Netzwerk Fehler: Eine Verbindung konnte nicht hergestellt werden. Bitte überprüfen Sie Ihre Netzwerkverbindung. + Netzwerkfehler: Verbindung konnte nicht hergestellt werden. Bitte überprüfen Sie Ihre Netzwerkverbindung. </string> <string name="LoginFailed"> Anmeldung fehlgeschlagen @@ -1276,6 +1276,9 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden. <string name="Marketplace Error Internal Import"> Fehler: Bei diesem Artikel ist ein Problem aufgetreten. Versuchen Sie es später erneut. </string> + <string name="Open landmarks"> + Landmarken öffnen + </string> <string name="no_transfer" value=" (kein Transferieren)"/> <string name="no_modify" value=" (kein Bearbeiten)"/> <string name="no_copy" value=" (kein Kopieren)"/> @@ -4254,7 +4257,7 @@ Missbrauchsbericht <string name="Female - Wow"> Weiblich - Wow </string> - <string name="/bow1"> + <string name="/bow"> /verbeugen </string> <string name="/clap"> @@ -4767,4 +4770,172 @@ Setzen Sie den Editorpfad in Anführungszeichen <string name="ParticleHiding"> Partikel werden ausgeblendet </string> + <string name="Command_AboutLand_Label"> + Landinformationen + </string> + <string name="Command_Appearance_Label"> + Aussehen + </string> + <string name="Command_Avatar_Label"> + Avatar + </string> + <string name="Command_Build_Label"> + Bauen + </string> + <string name="Command_Chat_Label"> + Chat + </string> + <string name="Command_Compass_Label"> + Kompass + </string> + <string name="Command_Destinations_Label"> + Ziele + </string> + <string name="Command_Gestures_Label"> + Gesten + </string> + <string name="Command_HowTo_Label"> + Infos + </string> + <string name="Command_Inventory_Label"> + Inventar + </string> + <string name="Command_Map_Label"> + Karte + </string> + <string name="Command_Marketplace_Label"> + Marktplatz + </string> + <string name="Command_MiniMap_Label"> + Minikarte + </string> + <string name="Command_Move_Label"> + Bewegen + </string> + <string name="Command_People_Label"> + Leute + </string> + <string name="Command_Picks_Label"> + Auswahlen + </string> + <string name="Command_Places_Label"> + Orte + </string> + <string name="Command_Preferences_Label"> + Einstellungen + </string> + <string name="Command_Profile_Label"> + Profil + </string> + <string name="Command_Search_Label"> + Suchen + </string> + <string name="Command_Snapshot_Label"> + Foto + </string> + <string name="Command_Speak_Label"> + Sprechen + </string> + <string name="Command_View_Label"> + Ansicht + </string> + <string name="Command_Voice_Label"> + Stimme in der Nähe + </string> + <string name="Command_AboutLand_Tooltip"> + Informationen zu dem von Ihnen besuchten Land + </string> + <string name="Command_Appearance_Tooltip"> + Avatar ändern + </string> + <string name="Command_Avatar_Tooltip"> + Kompletten Avatar auswählen + </string> + <string name="Command_Build_Tooltip"> + Objekte bauen und Terrain umformen + </string> + <string name="Command_Chat_Tooltip"> + Mit Leuten in der Nähe chatten + </string> + <string name="Command_Compass_Tooltip"> + Kompass + </string> + <string name="Command_Destinations_Tooltip"> + Ziele von Interesse + </string> + <string name="Command_Gestures_Tooltip"> + Gesten für Ihren Avatar + </string> + <string name="Command_HowTo_Tooltip"> + Wie führe ich gängige Aufgaben aus? + </string> + <string name="Command_Inventory_Tooltip"> + Ihr Eigentum anzeigen und benutzen + </string> + <string name="Command_Map_Tooltip"> + Weltkarte + </string> + <string name="Command_Marketplace_Tooltip"> + Einkaufen gehen + </string> + <string name="Command_MiniMap_Tooltip"> + Leute in der Nähe anzeigen + </string> + <string name="Command_Move_Tooltip"> + Ihren Avatar bewegen + </string> + <string name="Command_People_Tooltip"> + Freunde, Gruppen und Leute in der Nähe + </string> + <string name="Command_Picks_Tooltip"> + Orte, die in Ihrem Profil als Favoriten angezeigt werden sollen + </string> + <string name="Command_Places_Tooltip"> + Von Ihnen gespeicherte Orte + </string> + <string name="Command_Preferences_Tooltip"> + Einstellungen + </string> + <string name="Command_Profile_Tooltip"> + Ihr Profil bearbeiten oder anzeigen + </string> + <string name="Command_Search_Tooltip"> + Orte, Veranstaltungen, Leute finden + </string> + <string name="Command_Snapshot_Tooltip"> + Foto aufnehmen + </string> + <string name="Command_Speak_Tooltip"> + Über Ihr Mikrofon mit Leuten in der Nähe sprechen + </string> + <string name="Command_View_Tooltip"> + Kamerawinkel ändern + </string> + <string name="Command_Voice_Tooltip"> + Leute in der Nähe mit Sprechfähigkeit + </string> + <string name="Retain%"> + % zurückbehalten + </string> + <string name="Detail"> + Details + </string> + <string name="Better Detail"> + Bessere Details + </string> + <string name="Surface"> + Oberfläche + </string> + <string name="Solid"> + Fest + </string> + <string name="Wrap"> + Wickeln + </string> + <string name="Preview"> + Vorschau + </string> + <string name="Normal"> + Normal + </string> </strings> diff --git a/indra/newview/skins/default/xui/en/floater_avatar.xml b/indra/newview/skins/default/xui/en/floater_avatar.xml index 3c7de6f334..2d973e7d90 100644 --- a/indra/newview/skins/default/xui/en/floater_avatar.xml +++ b/indra/newview/skins/default/xui/en/floater_avatar.xml @@ -1,5 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + open_positioning="cascading" + ignore_ui_scale="false" legacy_header_height="225" can_minimize="true" can_close="true" @@ -12,6 +14,7 @@ single_instance="true" help_topic="avatar" save_rect="true" + save_visibility="true" title="AVATAR PICKER" width="635"> <web_browser diff --git a/indra/newview/skins/default/xui/en/floater_camera.xml b/indra/newview/skins/default/xui/en/floater_camera.xml index afe8584a2d..e7f5207271 100644 --- a/indra/newview/skins/default/xui/en/floater_camera.xml +++ b/indra/newview/skins/default/xui/en/floater_camera.xml @@ -14,6 +14,7 @@ save_visibility="true" single_instance="true" title="VIEW" + chrome="true" save_rect="true" width="228"> <floater.string @@ -166,14 +167,10 @@ <joystick_rotate follows="top|left" height="78" - image_selected="Cam_Rotate_In" - image_unselected="Cam_Rotate_Out" layout="topleft" left="7" - mouse_opaque="false" name="cam_rotate_stick" quadrant="left" - scale_image="false" sound_flags="3" visible="true" tool_tip="Orbit camera around focus" diff --git a/indra/newview/skins/default/xui/en/floater_destinations.xml b/indra/newview/skins/default/xui/en/floater_destinations.xml index e63dc02a57..373114a1eb 100644 --- a/indra/newview/skins/default/xui/en/floater_destinations.xml +++ b/indra/newview/skins/default/xui/en/floater_destinations.xml @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater open_positioning="cascading" + ignore_ui_scale="false" legacy_header_height="225" can_minimize="true" can_close="true" @@ -14,6 +15,7 @@ single_instance="true" help_topic="destinations" save_rect="true" + save_visibility="true" title="DESTINATIONS" width="840"> <web_browser diff --git a/indra/newview/skins/default/xui/en/floater_how_to.xml b/indra/newview/skins/default/xui/en/floater_how_to.xml index 0369ecbeff..8c0077a8cc 100644 --- a/indra/newview/skins/default/xui/en/floater_how_to.xml +++ b/indra/newview/skins/default/xui/en/floater_how_to.xml @@ -10,6 +10,7 @@ top="10" min_width="335" name="floater_how_to" + help_topic="how_to" single_instance="true" save_rect="true" title="HOW TO" diff --git a/indra/newview/skins/default/xui/en/floater_hud.xml b/indra/newview/skins/default/xui/en/floater_hud.xml index 99a6a95828..e2d860881a 100644 --- a/indra/newview/skins/default/xui/en/floater_hud.xml +++ b/indra/newview/skins/default/xui/en/floater_hud.xml @@ -8,6 +8,7 @@ help_topic="floater_hud" save_rect="true" save_visibility="true" + chrome="true" title="TUTORIAL" width="362"> <web_browser diff --git a/indra/newview/skins/default/xui/en/floater_map.xml b/indra/newview/skins/default/xui/en/floater_map.xml index 58d67c8221..31972d4122 100644 --- a/indra/newview/skins/default/xui/en/floater_map.xml +++ b/indra/newview/skins/default/xui/en/floater_map.xml @@ -3,6 +3,7 @@ open_positioning="cascading" can_minimize="true" can_resize="true" + chrome="true" follows="top|right" height="200" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_model_preview.xml b/indra/newview/skins/default/xui/en/floater_model_preview.xml index eebc5ddc72..eebc5ddc72 100644..100755 --- a/indra/newview/skins/default/xui/en/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_model_preview.xml diff --git a/indra/newview/skins/default/xui/en/floater_moveview.xml b/indra/newview/skins/default/xui/en/floater_moveview.xml index b7370580af..e96039a3e1 100644 --- a/indra/newview/skins/default/xui/en/floater_moveview.xml +++ b/indra/newview/skins/default/xui/en/floater_moveview.xml @@ -14,7 +14,8 @@ help_topic="move_floater" save_rect="true" save_visibility="true" - save_dock_state="true" + single_instance="true" + chrome="true" title="MOVE" width="133"> <string diff --git a/indra/newview/skins/default/xui/en/floater_my_appearance.xml b/indra/newview/skins/default/xui/en/floater_my_appearance.xml index d9f3f1e13f..a40393aed8 100644 --- a/indra/newview/skins/default/xui/en/floater_my_appearance.xml +++ b/indra/newview/skins/default/xui/en/floater_my_appearance.xml @@ -10,6 +10,7 @@ help_topic="appearance" save_rect="true" single_instance="true" + reuse_instance="true" title="APPEARANCE" min_height="260" min_width="333" diff --git a/indra/newview/skins/default/xui/en/floater_my_inventory.xml b/indra/newview/skins/default/xui/en/floater_my_inventory.xml index 44491c671f..cd0b59dc51 100644 --- a/indra/newview/skins/default/xui/en/floater_my_inventory.xml +++ b/indra/newview/skins/default/xui/en/floater_my_inventory.xml @@ -10,6 +10,7 @@ name="floater_my_inventory" save_rect="true" save_visibility="true" + reuse_instance="true" title="INVENTORY" width="333" > <panel diff --git a/indra/newview/skins/default/xui/en/floater_people.xml b/indra/newview/skins/default/xui/en/floater_people.xml index 9c1d121433..32dda1b694 100644 --- a/indra/newview/skins/default/xui/en/floater_people.xml +++ b/indra/newview/skins/default/xui/en/floater_people.xml @@ -12,6 +12,7 @@ name="floater_people" save_rect="true" single_instance="true" + reuse_instance="true" title="PEOPLE" width="333"> <panel_container diff --git a/indra/newview/skins/default/xui/en/floater_picks.xml b/indra/newview/skins/default/xui/en/floater_picks.xml index 2d307028e4..7882116662 100644 --- a/indra/newview/skins/default/xui/en/floater_picks.xml +++ b/indra/newview/skins/default/xui/en/floater_picks.xml @@ -10,6 +10,7 @@ name="floater_picks" save_rect="true" save_visibility="true" + reuse_instance="true" title="Picks" width="333" > <panel diff --git a/indra/newview/skins/default/xui/en/floater_places.xml b/indra/newview/skins/default/xui/en/floater_places.xml index b7cb86b468..6484b54360 100644 --- a/indra/newview/skins/default/xui/en/floater_places.xml +++ b/indra/newview/skins/default/xui/en/floater_places.xml @@ -9,6 +9,7 @@ name="floater_places" help_topic="floater_places" save_rect="true" + reuse_instance="true" title="PLACES" min_height="230" min_width="333" diff --git a/indra/newview/skins/default/xui/en/floater_sound_devices.xml b/indra/newview/skins/default/xui/en/floater_sound_devices.xml index 3dbe4adf28..dec0e9b6c6 100644 --- a/indra/newview/skins/default/xui/en/floater_sound_devices.xml +++ b/indra/newview/skins/default/xui/en/floater_sound_devices.xml @@ -6,6 +6,7 @@ can_minimize="true" can_resize="false" can_close="false" + chrome="true" save_dock_state="true" save_visibility="true" save_rect="true" 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 0000000000..c03f751265 --- /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 "Verify"" + 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 "Verify"" + 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 3f5768bc0b..93a04050b6 100644 --- a/indra/newview/skins/default/xui/en/floater_voice_controls.xml +++ b/indra/newview/skins/default/xui/en/floater_voice_controls.xml @@ -4,6 +4,7 @@ can_resize="true" can_minimize="true" can_close="true" + chrome="true" height="205" layout="topleft" min_height="124" @@ -18,19 +19,19 @@ width="282"> <string name="title_nearby"> - Nearby voice + VOICE SETTINGS </string> <string name="title_group"> - Group call with [GROUP] + GROUP CALL WITH [GROUP] </string> <string name="title_adhoc"> - Conference call + CONFERENCE CALL </string> <string name="title_peer_2_peer"> - Call with [NAME] + CALL WITH [NAME] </string> <string name="no_one_near"> @@ -51,6 +52,7 @@ user_resize="false" auto_resize="false" layout="topleft" + min_height="20" height="20" name="my_panel"> <avatar_icon @@ -132,6 +134,7 @@ height="132" name="callers_panel" user_resize="false" + auto_resize="true" width="280"> <avatar_list follows="all" diff --git a/indra/newview/skins/default/xui/en/menu_bottomtray.xml b/indra/newview/skins/default/xui/en/menu_bottomtray.xml deleted file mode 100644 index 1a102c21bb..0000000000 --- a/indra/newview/skins/default/xui/en/menu_bottomtray.xml +++ /dev/null @@ -1,163 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<menu - height="201" - layout="topleft" - left="100" - mouse_opaque="false" - name="hide_camera_move_controls_menu" - top="624" - visible="false" - width="128"> - <menu_item_check - label="Speak Button" - layout="topleft" - name="EnableVoiceChat"> - <menu_item_check.on_click - function="ToggleControl" - parameter="EnableVoiceChat" /> - <menu_item_check.on_check - function="CheckControl" - parameter="EnableVoiceChat" /> - </menu_item_check> - <menu_item_check - label="Gesture button" - layout="topleft" - name="ShowGestureButton"> - <menu_item_check.on_click - function="ToggleControl" - parameter="ShowGestureButton" /> - <menu_item_check.on_check - function="CheckControl" - parameter="ShowGestureButton" /> - </menu_item_check> - <menu_item_check - label="Move button" - layout="topleft" - name="ShowMoveButton"> - <menu_item_check.on_click - function="ToggleControl" - parameter="ShowMoveButton" /> - <menu_item_check.on_check - function="CheckControl" - parameter="ShowMoveButton" /> - </menu_item_check> - <menu_item_check - label="View button" - layout="topleft" - name="ShowCameraButton"> - <menu_item_check.on_click - function="ToggleControl" - parameter="ShowCameraButton" /> - <menu_item_check.on_check - function="CheckControl" - parameter="ShowCameraButton" /> - </menu_item_check> - <menu_item_check - label="Snapshot button" - layout="topleft" - name="ShowSnapshotButton"> - <menu_item_check.on_click - function="ToggleControl" - parameter="ShowSnapshotButton" /> - <menu_item_check.on_check - function="CheckControl" - parameter="ShowSnapshotButton" /> - </menu_item_check> - <menu_item_check - label="Build button" - layout="topleft" - name="ShowBuildButton"> - <menu_item_check.on_click - function="ToggleControl" - parameter="ShowBuildButton" /> - <menu_item_check.on_check - function="CheckControl" - parameter="ShowBuildButton" /> - </menu_item_check> - <menu_item_check - label="Search button" - layout="topleft" - name="ShowSearchButton"> - <menu_item_check.on_click - function="ToggleControl" - parameter="ShowSearchButton" /> - <menu_item_check.on_check - function="CheckControl" - parameter="ShowSearchButton" /> - </menu_item_check> - <menu_item_check - label="Map button" - layout="topleft" - name="ShowWorldMapButton"> - <menu_item_check.on_click - function="ToggleControl" - parameter="ShowWorldMapButton" /> - <menu_item_check.on_check - function="CheckControl" - parameter="ShowWorldMapButton" /> - </menu_item_check> - <menu_item_check - label="Mini-map button" - layout="topleft" - name="ShowMiniMapButton"> - <menu_item_check.on_click - function="ToggleControl" - parameter="ShowMiniMapButton" /> - <menu_item_check.on_check - function="CheckControl" - parameter="ShowMiniMapButton" /> - </menu_item_check> - <menu_item_separator - name="Separator" /> - <menu_item_call - label="Cut" - name="NearbyChatBar_Cut"> - <menu_item_call.on_click - function="NearbyChatBar.Action" - parameter="cut" /> - <menu_item_call.on_enable - function="NearbyChatBar.EnableMenuItem" - parameter="can_cut" /> - </menu_item_call> - <menu_item_call - label="Copy" - name="NearbyChatBar_Copy"> - <menu_item_call.on_click - function="NearbyChatBar.Action" - parameter="copy" /> - <menu_item_call.on_enable - function="NearbyChatBar.EnableMenuItem" - parameter="can_copy" /> - </menu_item_call> - <menu_item_call - label="Paste" - name="NearbyChatBar_Paste"> - <menu_item_call.on_click - function="NearbyChatBar.Action" - parameter="paste" /> - <menu_item_call.on_enable - function="NearbyChatBar.EnableMenuItem" - parameter="can_paste" /> - </menu_item_call> - <menu_item_call - label="Delete" - name="NearbyChatBar_Delete"> - <menu_item_call.on_click - function="NearbyChatBar.Action" - parameter="delete" /> - <menu_item_call.on_enable - function="NearbyChatBar.EnableMenuItem" - parameter="can_delete" /> - </menu_item_call> - <menu_item_call - label="Select All" - name="NearbyChatBar_Select_All"> - <menu_item_call.on_click - function="NearbyChatBar.Action" - parameter="select_all" /> - <menu_item_call.on_enable - function="NearbyChatBar.EnableMenuItem" - parameter="can_select_all" /> - </menu_item_call> - -</menu> diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index 63e50b0b9f..01f9c23afd 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -2437,6 +2437,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/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 6720d8131e..3ed8c30ca8 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -5432,21 +5432,23 @@ Your calling card was declined. </notification> <notification - icon="notifytip.tga" - name="TeleportToLandmark" - type="notifytip"> -You can teleport to locations like '[NAME]' by opening the Places panel on the right side of your screen, and then select the Landmarks tab. -Click on any landmark to select it, then click 'Teleport' at the bottom of the panel. -(You can also double-click on the landmark, or right-click it and choose 'Teleport'.) + icon="notifytip.tga" + name="TeleportToLandmark" + type="notifytip"> + To teleport to locations like '[NAME]', click on the "Places" button, + then select the Landmarks tab in the window that opens. Click on any + landmark to select it, then click 'Teleport' at the bottom of the window. + (You can also double-click on the landmark, or right-click it and + choose 'Teleport'.) </notification> <notification icon="notifytip.tga" name="TeleportToPerson" type="notifytip"> -You can contact Residents like '[NAME]' by opening the People panel on the right side of your screen. -Select the Resident from the list, then click 'IM' at the bottom of the panel. -(You can also double-click on their name in the list, or right-click and choose 'IM'). + To contact Residents like '[NAME]', click on the "People" button , select a Resident from the window that opens, then click 'IM' at the + bottom of the window. + (You can also double-click on their name in the list, or right-click and choose 'IM'). </notification> <notification diff --git a/indra/newview/skins/default/xui/en/panel_chat_item.xml b/indra/newview/skins/default/xui/en/panel_chat_item.xml index 34c6e02684..6af1105400 100644 --- a/indra/newview/skins/default/xui/en/panel_chat_item.xml +++ b/indra/newview/skins/default/xui/en/panel_chat_item.xml @@ -2,7 +2,7 @@ <!-- All our XML is utf-8 encoded. --> <panel name="instant_message" - width="315" + width="300" height="180" follows="all"> <avatar_icon @@ -22,6 +22,7 @@ text_color="white" word_wrap="true" mouse_opaque="true" + valign="bottom" name="msg_text"> </text_chat> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/en/panel_chiclet_bar.xml index 355a76e05f..41d1036a4d 100644 --- a/indra/newview/skins/default/xui/en/panel_chiclet_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_chiclet_bar.xml @@ -42,7 +42,7 @@ top="7" width="189"> <button - auto_resize="true" + auto_resize="false" follows="right" height="29" image_hover_selected="SegmentedBtn_Left_Over" @@ -57,9 +57,9 @@ tab_stop="false" top="-28" visible="false" - width="7" /> + width="12" /> <button - auto_resize="true" + auto_resize="false" follows="right" height="29" image_hover_selected="SegmentedBtn_Right_Over" @@ -74,7 +74,7 @@ tab_stop="false" top="-28" visible="false" - width="7" /> + width="12" /> </chiclet_panel> </layout_panel> <layout_panel auto_resize="false" @@ -110,7 +110,7 @@ image_pressed "Lit" - there are new messages image_pressed_selected "Lit" + "Selected" - there are new messages and the Well is open --> <button - auto_resize="true" + auto_resize="false" follows="right" halign="center" height="23" @@ -151,7 +151,7 @@ image_pressed_selected "Lit" + "Selected" - there are new messages and the Well top="5" width="35"> <button - auto_resize="true" + auto_resize="false" bottom_pad="3" follows="right" halign="center" diff --git a/indra/newview/skins/default/xui/en/panel_notification.xml b/indra/newview/skins/default/xui/en/panel_notification.xml index 59ead84127..f6f62ac54e 100644 --- a/indra/newview/skins/default/xui/en/panel_notification.xml +++ b/indra/newview/skins/default/xui/en/panel_notification.xml @@ -9,6 +9,8 @@ layout="topleft" left="0" name="notification_panel" + chrome="true" + show_title="false" top="0" height="140" translate="false" 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 52be805260..caf7fc85f5 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/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index db7c07f2f8..24cec13c4c 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -2028,7 +2028,7 @@ Returns a string with the requested data about the region <string name="PlacesNoMatchingItems">Didn't find what you're looking for? Try [secondlife:///app/search/places/[SEARCH_TERM] Search].</string> <string name="FavoritesNoMatchingItems">Drag a landmark here to add it to your favorites.</string> <string name="InventoryNoTexture">You do not have a copy of this texture in your inventory</string> - <string name="InventoryInboxNoItems">Items purchased through the marketplace will be delivered here.</string> + <string name="InventoryInboxNoItems">When you purchase or otherwise receive an item, it will appear here so you can drag it to a folder in your inventory, or delete it if you do not wish to keep it.</string> <string name="MarketplaceURL">http://marketplace.[DOMAIN_NAME]</string> <string name="MarketplaceURL_CreateStore">http://marketplace.[DOMAIN_NAME]/create_store</string> <string name="MarketplaceURL_LearnMore">http://marketplace.[DOMAIN_NAME]/learn_more</string> @@ -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 --> @@ -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> @@ -3678,7 +3684,7 @@ Try enclosing path to the editor with double quotes. <string name="Command_Snapshot_Label">Snapshot</string> <string name="Command_Speak_Label">Speak</string> <string name="Command_View_Label">View</string> - <string name="Command_Voice_Label">Nearby voice</string> + <string name="Command_Voice_Label">Voice settings</string> <string name="Command_AboutLand_Tooltip">Information about the land you're visiting</string> <string name="Command_Appearance_Tooltip">Change your avatar</string> @@ -3703,7 +3709,7 @@ Try enclosing path to the editor with double quotes. <string name="Command_Snapshot_Tooltip">Take a picture</string> <string name="Command_Speak_Tooltip">Speak with people nearby using your microphone</string> <string name="Command_View_Tooltip">Changing camera angle</string> - <string name="Command_Voice_Tooltip">People nearby with voice capability</string> + <string name="Command_Voice_Tooltip">Volume controls for calls and people near you in world</string> <!-- Mesh UI terms --> <string name="Retain%">Retain%</string> diff --git a/indra/newview/skins/default/xui/en/widgets/joystick_rotate.xml b/indra/newview/skins/default/xui/en/widgets/joystick_rotate.xml new file mode 100644 index 0000000000..a190da3909 --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/joystick_rotate.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<joystick_rotate + image_selected="Cam_Rotate_In" + image_unselected="Cam_Rotate_Out" + scale_image="false" + mouse_opaque="false" + held_down_delay.seconds="0"/> diff --git a/indra/newview/skins/default/xui/es/floater_about.xml b/indra/newview/skins/default/xui/es/floater_about.xml index 93bb8444b4..b7c9cc27ac 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 <nolink>[HOSTNAME]</nolink> ([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 83749fc535..b6391e28a0 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 > 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 0000000000..7c87fbe01c --- /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 04f743b659..cdcb9a146b 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 0000000000..5e5ef616b8 --- /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 0000000000..df18698d2f --- /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 0000000000..eeb39583ef --- /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 0000000000..4a57dc3643 --- /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 370b7f5053..69f638418e 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 36f988b25f..3e77453612 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 86de557ed9..c4eb5e955a 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"> - ' - </text> - <text name="accuracy_slider_mark2"> - ' - </text> - <text name="accuracy_slider_mark3"> - ' - </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 258f84c361..b29fe04848 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 0000000000..774babf04e --- /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 0000000000..0efd9f1c6d --- /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 0000000000..50c4f0518d --- /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 0000000000..f48d0d2d0c --- /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 0000000000..f5a3eab008 --- /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 0000000000..255aa5dcdc --- /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 0000000000..12c6548205 --- /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 a5ffbd517a..0291f9e796 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 5f4fabf375..ba4af2e866 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 f6e246ebae..650b4b457d 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 0000000000..b36a05a6e4 --- /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 f02855123c..cefec2a7a1 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 22a1873234..9945908c4f 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 cabcacaed5..e3abf7ad62 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 0000000000..f8ed1c54ca --- /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 bc8a5731ab..0714e7f2c6 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 4fb29b9427..3fe0072a20 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 ('multitexture support'). Si la tienes, comprueba que tienes los últimos 'drivers' para tu tarjeta gráfica, así como los últimos parches y 'service packs' 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 0000000000..eaaa5dbe78 --- /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 ed253904aa..850cd6ec71 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 293c9ef1d9..1b7f5d5a9f 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=">>" 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=">>" 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 0000000000..95ce14c9a7 --- /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 a15c8deaf9..4625075aa5 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 c762e6b7fe..920729bb07 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 d95e167361..b2ff6b61c2 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 0391258b75..d43790c8c6 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 aae9bfc113..79d0cb84e8 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 cc044ba416..83747b85c0 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/it/floater_about.xml b/indra/newview/skins/default/xui/it/floater_about.xml index db4dbe02e2..68d073a766 100644 --- a/indra/newview/skins/default/xui/it/floater_about.xml +++ b/indra/newview/skins/default/xui/it/floater_about.xml @@ -8,9 +8,9 @@ Generato con [COMPILER] versione [COMPILER_VERSION] </floater.string> <floater.string name="AboutPosition"> - Tu sei [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] in [REGION] located at <nolink>[HOSTNAME]</nolink> ([HOSTIP]) + Tu sei [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] in [REGION] che si trova a <nolink>[HOSTNAME]</nolink> ([HOSTIP]) [SERVER_VERSION] -[[SERVER_RELEASE_NOTES_URL] [ReleaseNotes]] +[SERVER_RELEASE_NOTES_URL] </floater.string> <floater.string name="AboutSystem"> CPU: [CPU] @@ -37,6 +37,9 @@ Versione Server voice: [VOICE_VERSION] <floater.string name="AboutTraffic"> Pacchetti perduti: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%) Informazioni </floater.string> + <floater.string name="ErrorFetchingServerReleaseNotesURL"> + Errore nel recupero URL note rilascio versione + </floater.string> <tab_container name="about_tab"> <panel label="Informazioni" name="support_panel"> <button label="Copia negli appunti" name="copy_btn"/> diff --git a/indra/newview/skins/default/xui/it/floater_about_land.xml b/indra/newview/skins/default/xui/it/floater_about_land.xml index cf0f8f2f6f..b6bfb4aadf 100644 --- a/indra/newview/skins/default/xui/it/floater_about_land.xml +++ b/indra/newview/skins/default/xui/it/floater_about_land.xml @@ -218,19 +218,19 @@ o suddivisa. Fattore bonus degli oggetti della regione: [BONUS] </text> <text name="Simulator primitive usage:"> - Uso delle primitive: + Capacità regione: </text> <text name="objects_available"> [COUNT] dei [MAX] ([AVAILABLE] dsponibili) </text> <text name="Primitives parcel supports:"> - Oggetti che il terreno supporta: + Capacità lotto di terreno: </text> <text name="object_contrib_text"> [COUNT] </text> <text name="Primitives on parcel:"> - Oggetti sul terreno: + Impatto lotto di terreno: </text> <text name="total_objects_text"> [COUNT] diff --git a/indra/newview/skins/default/xui/it/floater_avatar.xml b/indra/newview/skins/default/xui/it/floater_avatar.xml new file mode 100644 index 0000000000..1587c347a5 --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_avatar.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Avatar" title="SCELTA AVATAR"/> diff --git a/indra/newview/skins/default/xui/it/floater_camera.xml b/indra/newview/skins/default/xui/it/floater_camera.xml index 3fdf4f48a2..be4b8e210d 100644 --- a/indra/newview/skins/default/xui/it/floater_camera.xml +++ b/indra/newview/skins/default/xui/it/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="VISTA"> <floater.string name="rotate_tooltip"> Ruota la telecamera Intorno all'Inquadratura </floater.string> diff --git a/indra/newview/skins/default/xui/it/floater_chat_bar.xml b/indra/newview/skins/default/xui/it/floater_chat_bar.xml new file mode 100644 index 0000000000..6c5c8fbea0 --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_chat_bar.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="chat_bar" title="CHAT NEI DINTORNI"> + <panel> + <line_editor label="Clicca qui per la chat." name="chat_box" tool_tip="Premi Invio per parlare, Ctrl+Invio per gridare"/> + <button name="show_nearby_chat" tool_tip="Mostra/Nasconde il registro della chat nei dintorni"/> + </panel> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_destinations.xml b/indra/newview/skins/default/xui/it/floater_destinations.xml new file mode 100644 index 0000000000..242403e431 --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_destinations.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Destinations" title="DESTINAZIONI"/> diff --git a/indra/newview/skins/default/xui/it/floater_fast_timers.xml b/indra/newview/skins/default/xui/it/floater_fast_timers.xml new file mode 100644 index 0000000000..52ab6b0c3d --- /dev/null +++ b/indra/newview/skins/default/xui/it/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"> + Correre + </string> + <button label="Pausa" name="pause_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_how_to.xml b/indra/newview/skins/default/xui/it/floater_how_to.xml new file mode 100644 index 0000000000..8f0e210571 --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_how_to.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_how_to" title="ISTRUZIONI"/> diff --git a/indra/newview/skins/default/xui/it/floater_map.xml b/indra/newview/skins/default/xui/it/floater_map.xml index bf19ba6674..5e4e4abca4 100644 --- a/indra/newview/skins/default/xui/it/floater_map.xml +++ b/indra/newview/skins/default/xui/it/floater_map.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Map" title=""> +<floater name="Map" title="MINI MAPPA"> <floater.string name="ToolTipMsg"> [REGION](Fai doppio clic per aprire la Mappa, premi il tasto Maiusc e trascina per la panoramica) </floater.string> @@ -7,7 +7,7 @@ [REGION](Fai doppio clic per teleportarti, premi il tasto Maiusc e trascina per la panoramica) </floater.string> <floater.string name="mini_map_caption"> - MINI MAPPA + Mini mappa </floater.string> <text label="N" name="floater_map_north" text="N"> N diff --git a/indra/newview/skins/default/xui/it/floater_model_preview.xml b/indra/newview/skins/default/xui/it/floater_model_preview.xml index 931fe7d382..03102f5f81 100644 --- a/indra/newview/skins/default/xui/it/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/it/floater_model_preview.xml @@ -1,10 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Model Preview" title="Carica modello"> - <string name="status_idle"> - Pausa - </string> +<floater name="Model Preview" title="CARICAMENTO MODELLO"> + <string name="status_idle"/> <string name="status_parse_error"> - Problema nell'elaborazione DAE - vedi il registro per informazioni al riguardo. + Errore: Errore elaborazione Dae - vedere il registro per informazioni dettagliate. </string> <string name="status_reading_file"> Caricamento in corso... @@ -51,6 +49,9 @@ <string name="mesh_status_missing_lod"> Livello di dettaglio minimo mancante. </string> + <string name="mesh_status_invalid_material_list"> + I materiali per il livello di dettaglio non sono un sottoinsieme del modello di riferimento. + </string> <string name="layer_all"> Tutto </string> @@ -63,188 +64,211 @@ <string name="tbd"> Da definire </string> - <text name="name_label"> - Nome: - </text> - <text name="lod_label"> - Anteprima: - </text> - <combo_box name="preview_lod_combo" tool_tip="Livello di dettaglio per anteprima rendering"> - <combo_item name="high"> - Livello di dettaglio: Alto - </combo_item> - <combo_item name="medium"> - Livello di dettaglio: Medio - </combo_item> - <combo_item name="low"> - Livello di dettaglio: Basso - </combo_item> - <combo_item name="lowest"> - Livello di dettaglio: Bassissimo - </combo_item> - </combo_box> - <text name="warning_title"> - ATTENZIONE: - </text> - <text name="warning_message"> - Non sarà possibile completare il caricamento finale di questo modello sui server di Second Life. [[VURL] Scopri come] ricevere l'autorizzazione per il caricamento dei modelli con reticolo. - </text> - <text name="weights_text"> - Download: -Fisica: -Server: - -Prim equivalenti: - </text> - <text name="weights"> - [ST] -[PH] -[SIM] - -[EQ] - </text> - <tab_container name="import_tab"> - <panel label="Livello di dettaglio" name="lod_panel"> - <text name="lod_table_header"> - Seleziona livello di dettaglio: - </text> - <text name="high_label" value="Alto"/> - <text name="high_triangles" value="0"/> - <text name="high_vertices" value="0"/> - <text name="medium_label" value="Medio"/> - <text name="medium_triangles" value="0"/> - <text name="medium_vertices" value="0"/> - <text name="low_label" value="Basso"/> - <text name="low_triangles" value="0"/> - <text name="low_vertices" value="0"/> - <text name="lowest_label" value="Bassissimo"/> - <text name="lowest_triangles" value="0"/> - <text name="lowest_vertices" value="0"/> - <text name="lod_table_footer"> - Livello di dettaglio: [DETAIL] - </text> - <radio_group name="lod_file_or_limit" value="lod_from_file"> - <radio_item label="Carica da file" name="lod_from_file"/> - <radio_item label="Genera automaticamente" name="lod_auto_generate"/> - <radio_item label="Nessuno" name="lod_none"/> - </radio_group> - <button label="Sfoglia..." name="lod_browse"/> - <combo_box name="lod_mode"> - <combo_item name="triangle_limit"> - Limite triangoli - </combo_item> - <combo_item name="error_threshold"> - Limite errori - </combo_item> - </combo_box> - <text name="build_operator_text"> - Operatore costruzione: + <panel name="left_panel"> + <panel name="model_name_representation_panel"> + <text name="name_label"> + Nome modello: </text> - <text name="queue_mode_text"> - Modalità di coda: + <text name="model_category_label"> + Questo modello rappresenta... </text> - <combo_box name="build_operator"> - <combo_item name="edge_collapse"> - Collassa bordo - </combo_item> - <combo_item name="half_edge_collapse"> - Collassa mezzo bordo - </combo_item> - </combo_box> - <combo_box name="queue_mode"> - <combo_item name="greedy"> - Ingordo - </combo_item> - <combo_item name="lazy"> - Pigro - </combo_item> - <combo_item name="independent"> - Indipendente - </combo_item> + <combo_box name="model_category_combo"> + <combo_item label="Seleziona uno..." name="Choose one"/> + <combo_item label="Forma avatar" name="Avatar shape"/> + <combo_item label="Elemento collegato all'avatar" name="Avatar attachment"/> + <combo_item label="Oggetto mobile (veicolo, animale)" name="Moving object (vehicle, animal)"/> + <combo_item label="Componente edificio" name="Building Component"/> + <combo_item label="Grande, immobile, ecc." name="Large, non moving etc"/> + <combo_item label="Piccolo, immobile, ecc." name="Smaller, non-moving etc"/> + <combo_item label="Nessuno di questi" name="Not really any of these"/> </combo_box> - <text name="border_mode_text"> - Modalità bordo: - </text> - <text name="share_tolderance_text"> - Tolleranza condivisione: - </text> - <combo_box name="border_mode"> - <combo_item name="border_unlock"> - Sblocca - </combo_item> - <combo_item name="border_lock"> - Blocca - </combo_item> - </combo_box> - <text name="crease_label"> - Angolo piega: - </text> - <spinner name="crease_angle" value="75"/> </panel> - <panel label="Fisica" name="physics_panel"> - <panel name="physics geometry"> - <radio_group name="physics_load_radio" value="physics_load_from_file"> - <radio_item label="File:" name="physics_load_from_file"/> - <radio_item label="Usa livello di dettaglio:" name="physics_use_lod"/> - </radio_group> - <combo_box name="physics_lod_combo" tool_tip="Livello di dettaglio per forma fisica"> - <combo_item name="physics_lowest"> - Bassissimo - </combo_item> - <combo_item name="physics_low"> - Basso - </combo_item> - <combo_item name="physics_medium"> - Medio - </combo_item> - <combo_item name="physics_high"> - Alto - </combo_item> - </combo_box> - <button label="Sfoglia..." name="physics_browse"/> + <tab_container name="import_tab"> + <panel label="Livello di dettaglio" name="lod_panel" title="Livello di dettaglio"> + <text initial_value="Fonte" name="source" value="Fonte"/> + <text initial_value="Triangoli" name="triangles" value="Triangoli"/> + <text initial_value="Vertici" name="vertices" value="Vertici"/> + <text initial_value="Alto" name="high_label" value="Alto"/> + <button label="Sfoglia..." 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="Sfoglia..." 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="Basso" name="low_label" value="Basso"/> + <button label="Sfoglia..." 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="Bassissimo" name="lowest_label" value="Bassissimo"/> + <button label="Sfoglia..." 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="Genera normali" name="gen_normals"/> + <text initial_value="Angolo piega:" name="crease_label" value="Angolo piega:"/> + <spinner name="crease_angle" value="75"/> </panel> - <panel name="physics analysis"> - <slider label="Liscia:" name="Smooth"/> - <check_box label="Chiudi fori (lento)" name="Close Holes (Slow)"/> - <button label="Analizza" name="Decompose"/> - <button label="Annulla" name="decompose_cancel"/> + <panel label="Fisica" name="physics_panel"> + <panel name="physics geometry"> + <text name="first_step_name"> + Passaggio 1: Livello di dettaglio + </text> + <combo_box name="physics_lod_combo" tool_tip="Livello di dettaglio per forma fisica"> + <combo_item name="choose_one"> + Seleziona uno... + </combo_item> + <combo_item name="physics_high"> + Alto + </combo_item> + <combo_item name="physics_medium"> + Medio + </combo_item> + <combo_item name="physics_low"> + Basso + </combo_item> + <combo_item name="physics_lowest"> + Bassissimo + </combo_item> + <combo_item name="load_from_file"> + Da file + </combo_item> + </combo_box> + <button label="Sfoglia..." name="physics_browse"/> + </panel> + <panel name="physics analysis"> + <text name="method_label"> + Passaggio 2: Analizza + </text> + <text name="analysis_method_label"> + Metodo: + </text> + <text name="quality_label"> + Qualità: + </text> + <text name="smooth_method_label"> + Liscia: + </text> + <check_box label="Chiudi fori" name="Close Holes (Slow)"/> + <button label="Analizza" name="Decompose"/> + <button label="Annulla" name="decompose_cancel"/> + </panel> + <panel name="physics simplification"> + <text name="second_step_label"> + Passaggio 3: Semplifica + </text> + <text name="simp_method_header"> + Metodo: + </text> + <text name="pass_method_header"> + Passaggi: + </text> + <text name="Detail Scale label"> + Scala dettagli: + </text> + <text name="Retain%_label"> + Mantieni: + </text> + <combo_box name="Combine Quality" value="1"/> + <button label="Semplifica" name="Simplify"/> + <button label="Annulla" name="simplify_cancel"/> + </panel> + <panel name="physics info"> + <text name="results_text"> + Risultati: + </text> + <text name="physics_triangles"> + Triangoli: [TRIANGLES], + </text> + <text name="physics_points"> + Vertici: [POINTS], + </text> + <text name="physics_hulls"> + Scafi: [HULLS] + </text> + </panel> </panel> - <panel name="physics simplification"> - <slider label="Passaggi:" name="Combine Quality"/> - <slider label="Scala dettagli:" name="Detail Scale"/> - <slider label="Mantieni:" name="Retain%"/> - <button label="Semplifica" name="Simplify"/> - <button label="Annulla" name="simplify_cancel"/> - </panel> - <panel name="physics info"> - <slider label="Ampiezza anteprima:" name="physics_explode"/> - <text name="physics_triangles"> - Triangoli: [TRIANGLES] + <panel label="Carica opzioni" name="modifiers_panel"> + <text name="scale_label"> + Scala (1=nessuna scala): + </text> + <spinner name="import_scale" value="1.0"/> + <text name="dimensions_label"> + Dimensioni: </text> - <text name="physics_points"> - Vertici: [POINTS] + <text name="import_dimensions"> + [X] X [Y] X [Z] </text> - <text name="physics_hulls"> - Inviluppi: [HULLS] + <check_box label="Includi texture" name="upload_textures"/> + <text name="include_label"> + Solo per modelli avatar: </text> + <check_box label="Includi peso pelle" name="upload_skin"/> + <check_box label="Includi posizioni giunti" name="upload_joints"/> + <text name="pelvis_offset_label"> + Spostamento Z (sposta l'avatar in alto o in basso): + </text> + <spinner name="pelvis_offset" value="0.0"/> </panel> - </panel> - <panel label="Modificatori" 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="Calcolare pesi e tariffa" name="calculate_btn" tool_tip="Calcolare pesi e tariffa"/> + <button label="Annulla" name="cancel_btn"/> + <button label="Carica" name="ok_btn" tool_tip="Carica al simulatore"/> + <button label="Annulla impostazioni e ripristina modulo" name="reset_btn"/> + <text name="upload_fee"> + Costo caricamento: L$ [FEE] + </text> + <text name="prim_weight"> + Impatto sul terreno: [EQ] + </text> + <text name="download_weight"> + Download: [ST] + </text> + <text name="physics_weight"> + Fisica: [PH] + </text> + <text name="server_weight"> + Server: [SIM] + </text> + <text name="warning_title"> + NOTA: + </text> + <text name="warning_message"> + Non hai l'autorizzazione per caricare i modelli di reticolo. [[VURL] Scopri come] ottenere la certificazione. + </text> + <text name="status"> + [STATUS] </text> - <check_box label="Texture" name="upload_textures"/> - <check_box label="Peso pelle" name="upload_skin"/> - <check_box label="Posizioni giunti" name="upload_joints"/> - <spinner name="pelvis_offset" value="0.0"/> </panel> - </tab_container> - <text name="upload_fee"> - Costo caricamento: L$ [FEE] + </panel> + <text name="lod_label"> + Anteprima: </text> - <button label="Imposta sui valori predefiniti" name="reset_btn" tool_tip="Imposta sui valori predefiniti"/> - <button label="Calcolare pesi e tariffa" name="calculate_btn" tool_tip="Calcolare pesi e tariffa"/> - <button label="Carica sul server" name="ok_btn" tool_tip="Carica al simulatore"/> - <button label="Annulla" name="cancel_btn"/> + <panel name="right_panel"> + <combo_box name="preview_lod_combo" tool_tip="Livello di dettaglio per anteprima rendering"> + <combo_item name="high"> + Alto + </combo_item> + <combo_item name="medium"> + Medio + </combo_item> + <combo_item name="low"> + Basso + </combo_item> + <combo_item name="lowest"> + Bassissimo + </combo_item> + </combo_box> + <text name="label_display"> + Visualizzazione... + </text> + <check_box label="Bordi" name="show_edges"/> + <check_box label="Fisica" name="show_physics"/> + <check_box label="Texture" name="show_textures"/> + <check_box label="Pesi pelle" name="show_skin_weight"/> + <check_box label="Giunti" name="show_joint_positions"/> + <text name="physics_explode_label"> + Anteprima spaziatura: + </text> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_model_wizard.xml b/indra/newview/skins/default/xui/it/floater_model_wizard.xml index dbf41e2daf..e6d0a7c4bc 100644 --- a/indra/newview/skins/default/xui/it/floater_model_wizard.xml +++ b/indra/newview/skins/default/xui/it/floater_model_wizard.xml @@ -6,26 +6,20 @@ <button label="2. Ottimizza" name="optimize_btn"/> <button label="1. Seleziona file" 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"> Seleziona file modello </text> </panel> - <panel name="choose_file_content_panel"> + <panel name="content"> <text name="advanced_users_text"> Utenti avanzati: Gli utenti che hanno dimestichezza con gli strumenti di creazione 3D possono usare le opzioni di caricamento avanzate. </text> <button label="Passa a modalità avanzata" name="switch_to_advanced"/> - <text name="choose_model_file_label"> + <text name="Cache location"> Scegli il file del modello da caricare </text> <button label="Sfoglia..." label_selected="Sfoglia..." name="browse"/> - <text name="support_collada_text"> - Second Life supporta file COLLADA (.dae) - </text> - <text name="dimensions_label"> - Dimensioni (metri): - </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"> Ottimizza modello </text> </panel> - <text name="optimize_hint"> + <text name="description"> Abbiamo ottimizzato il modello per migliorare le prestazioni. Se necessario, può essere regolato ulteriormente. </text> - <panel name="optimize_content_panel"> - <text name="generating_lod_label"> - Generazione livello di dettaglio - </text> + <panel name="content"> <text name="high_detail_text"> Genera livello di dettaglio: Alto </text> @@ -64,123 +55,64 @@ </text> </panel> <panel name="content2"> - <text name="optimize_performance_text"> - Prestazioni - </text> - <text name="optimize_faster_rendering_text"> - Rendering più veloce -Meno dettagli -Peso prim più basso - </text> - <text name="optimize_accuracy_text"> - Fedeltà - </text> - <text name="optimize_slower_rendering_text"> - Rendering più lento -Più dettagli -Peso prim più elevato - </text> - <text name="accuracy_slider_mark1"> - ' - </text> - <text name="accuracy_slider_mark2"> - ' - </text> - <text name="accuracy_slider_mark3"> - ' - </text> <button label="Ricalcola geometria" name="recalculate_geometry_btn"/> - <text name="geometry_preview_label"> + <text name="lod_label"> Anteprima geometria </text> <combo_box name="preview_lod_combo" tool_tip="Livello di dettaglio per anteprima rendering"> - <combo_item name="preview_lod_high"> + <combo_item name="high"> Molti dettagli </combo_item> - <combo_item name="preview_lod_medium"> + <combo_item name="medium"> Dettagli medi </combo_item> - <combo_item name="preview_lod_low"> + <combo_item name="low"> Meno dettagli </combo_item> - <combo_item name="preview_lod_lowest"> + <combo_item name="lowest"> Dettaglio minimo </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"> Modifica fisica </text> </panel> - <text name="physics_hint"> + <text name="description"> Verrà creata una forma per lo scafo esterno del modello. Regola il livello di dettaglio della forma in base al fine desiderato del modello. </text> - <panel name="physics_content_panel"> - <text name="physics_performance_text"> - Prestazioni - </text> - <text name="physics_faster_rendering_text"> - Rendering più veloce -Meno dettagli -Peso prim più basso - </text> - <text name="physics_accuracy_text"> - Fedeltà - </text> - <text name="physics_slower_dendering_text"> - Rendering più lento -Più dettagli -Peso prim più elevato - </text> - <text name="physics_example_1"> - Esempi: -Oggetti in movimento -Oggetti in volo -Veicoli - </text> - <text name="physics_example_2"> - Esempi: -Piccoli oggetti statici -Oggetti meno dettagliati -Mobili semplici - </text> - <text name="physics_example_3"> - Esempi: -Oggetti statici -Oggetti dettagliati -Edifici - </text> + <panel name="content"> <button label="Ricalcola fisica" name="recalculate_physics_btn"/> <button label="Ricalcolo in corso..." name="recalculating_physics_btn"/> - <text name="physics_preview_label"> + <text name="lod_label"> Anteprima fisica </text> <combo_box name="preview_lod_combo2" tool_tip="Livello di dettaglio per anteprima rendering"> - <combo_item name="preview_lod2_high"> + <combo_item name="high"> Molti dettagli </combo_item> - <combo_item name="preview_lod2_medium"> + <combo_item name="medium"> Dettagli medi </combo_item> - <combo_item name="preview_lod2_low"> + <combo_item name="low"> Meno dettagli </combo_item> - <combo_item name="preview_lod2_lowest"> + <combo_item name="lowest"> Dettaglio minimo </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"> Rivedi </text> </panel> - <panel name="review_content_panel"> + <panel name="content"> <text name="review_prim_equiv"> Impatto sul lotto o sulla regione: [EQUIV] prim equivalenti </text> @@ -193,8 +125,8 @@ Edifici </panel> </panel> <panel name="upload_panel"> - <panel name="upload_header_panel"> - <text name="upload_header_text"> + <panel name="header_panel"> + <text name="header_text"> Caricamento completato </text> </panel> diff --git a/indra/newview/skins/default/xui/it/floater_moveview.xml b/indra/newview/skins/default/xui/it/floater_moveview.xml index cdafdb0089..6e820a335c 100644 --- a/indra/newview/skins/default/xui/it/floater_moveview.xml +++ b/indra/newview/skins/default/xui/it/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="SPOSTA"> <string name="walk_forward_tooltip"> Cammina in avanti (premi freccia su o W) </string> @@ -58,14 +58,14 @@ Vola </string> <panel name="panel_actions"> - <button label="" label_selected="" name="move up btn" tool_tip="Vola in alto (premi E)"/> <button label="" label_selected="" name="turn left btn" tool_tip="Gira a sinistra (premi freccia sinistra o A)"/> <joystick_slide name="move left btn" tool_tip="Cammina a sinistra (premi Maiusc + freccia sinistra o A)"/> - <button label="" label_selected="" name="move down btn" tool_tip="Vola in basso (premi C)"/> <button label="" label_selected="" name="turn right btn" tool_tip="Gira a destra (premi freccia destra o D)"/> <joystick_slide name="move right btn" tool_tip="Cammina a destra (premi Maiusc + freccia destra o D)"/> <joystick_turn name="forward btn" tool_tip="Cammina in avanti (premi freccia su o W)"/> <joystick_turn name="backward btn" tool_tip="Cammina indietro (premi freccia giù o S)"/> + <button label="" label_selected="" name="move up btn" tool_tip="Vola in alto (premi E)"/> + <button label="" label_selected="" name="move down btn" tool_tip="Vola in basso (premi C)"/> </panel> <panel name="panel_modes"> <button label="" name="mode_walk_btn" tool_tip="Modalità cammina"/> diff --git a/indra/newview/skins/default/xui/it/floater_my_appearance.xml b/indra/newview/skins/default/xui/it/floater_my_appearance.xml new file mode 100644 index 0000000000..39ddd6186a --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_my_appearance.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_my_appearance" title="ASPETTO"> + <panel label="Modifica aspetto" name="main_panel"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_my_inventory.xml b/indra/newview/skins/default/xui/it/floater_my_inventory.xml new file mode 100644 index 0000000000..0efd9f1c6d --- /dev/null +++ b/indra/newview/skins/default/xui/it/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/it/floater_object_weights.xml b/indra/newview/skins/default/xui/it/floater_object_weights.xml new file mode 100644 index 0000000000..fdcb732dee --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_object_weights.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="object_weights" title="AVANZATE"> + <floater.string name="nothing_selected" value="--"/> + <text name="selected_text" value="SELEZIONATI"/> + <text name="objects" value="--"/> + <text name="objects_label" value="Oggetti"/> + <text name="prims" value="--"/> + <text name="prims_label" value="Prim"/> + <text name="weights_of_selected_text" value="PESO ELEMENTI SELEZIONATI"/> + <text name="download" value="--"/> + <text name="download_label" value="Scarica"/> + <text name="physics" value="--"/> + <text name="physics_label" value="Fisica"/> + <text name="server" value="--"/> + <text name="server_label" value="Server"/> + <text name="display" value="--"/> + <text name="display_label" value="Visualizzazione"/> + <text name="land_impacts_text" value="IMPATTO TERRENO"/> + <text name="selected" value="--"/> + <text name="selected_label" value="Selezionati"/> + <text name="rezzed_on_land" value="--"/> + <text name="rezzed_on_land_label" value="Rezzati sul terreno"/> + <text name="remaining_capacity" value="--"/> + <text name="remaining_capacity_label" value="Capacità restante"/> + <text name="total_capacity" value="--"/> + <text name="total_capacity_label" value="Capacità totale"/> + <text name="help_SLURL" value="[secondlife:///app/help/object_weights Di cosa si tratta?...]"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/it/floater_outfit_save_as.xml new file mode 100644 index 0000000000..55bb5adb1e --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_outfit_save_as.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="modal container" title="SALVA ABITO"/> diff --git a/indra/newview/skins/default/xui/it/floater_people.xml b/indra/newview/skins/default/xui/it/floater_people.xml new file mode 100644 index 0000000000..1acc3cbf19 --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_people.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_people" title="PERSONE"> + <panel_container name="main_panel"> + <panel label="Profilo del gruppo" name="panel_group_info_sidetray"/> + <panel label="Residenti e oggetti bloccati" name="panel_block_list_sidetray"/> + </panel_container> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_picks.xml b/indra/newview/skins/default/xui/it/floater_picks.xml new file mode 100644 index 0000000000..dfc539da66 --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_picks.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_picks" title="Preferiti"/> diff --git a/indra/newview/skins/default/xui/it/floater_places.xml b/indra/newview/skins/default/xui/it/floater_places.xml new file mode 100644 index 0000000000..cd46cf8b59 --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_places.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_places" title="LUOGHI"> + <panel label="Luoghi" name="main_panel"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_sound_devices.xml b/indra/newview/skins/default/xui/it/floater_sound_devices.xml index df4b8f4878..9799b48d89 100644 --- a/indra/newview/skins/default/xui/it/floater_sound_devices.xml +++ b/indra/newview/skins/default/xui/it/floater_sound_devices.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_sound_devices" title="Dispositivi sonori"> +<floater name="floater_sound_devices" title="DISPOSITIVI AUDIO"> <text name="voice_label"> Chat vocale </text> diff --git a/indra/newview/skins/default/xui/it/floater_stats.xml b/indra/newview/skins/default/xui/it/floater_stats.xml index aed2a03a21..ad6ef6b54b 100644 --- a/indra/newview/skins/default/xui/it/floater_stats.xml +++ b/indra/newview/skins/default/xui/it/floater_stats.xml @@ -10,8 +10,8 @@ </stat_view> <stat_view label="Avanzata" name="advanced"> <stat_view label="Render" name="render"> - <stat_bar label="KTris disegnate" name="ktrisframe"/> - <stat_bar label="KTris disegnate" name="ktrissec"/> + <stat_bar label="KTris disegnato per fotogramma" name="ktrisframe"/> + <stat_bar label="KTris disegnato per secondo" name="ktrissec"/> <stat_bar label="Totale oggetti" name="objs"/> <stat_bar label="Nuovi oggetti" name="newobjs"/> </stat_view> @@ -32,7 +32,7 @@ <stat_bar label="Layer" name="layerskbitstat"/> <stat_bar label="Effettivi in ingresso" name="actualinkbitstat"/> <stat_bar label="Effettivi in uscita" name="actualoutkbitstat"/> - <stat_bar label="Operazioni pendenti VFS" name="vfspendingoperations"/> + <stat_bar label="Operazioni VFS in sospeso" name="vfspendingoperations"/> </stat_view> </stat_view> <stat_view label="Simulatore" name="sim"> @@ -43,18 +43,6 @@ <stat_bar label="Oggetti pinzati" name="physicspinnedtasks"/> <stat_bar label="Oggetti a basso LOD" name="physicslodtasks"/> <stat_bar label="Memoria allocata" name="physicsmemoryallocated"/> - <stat_bar label="Aggiornamenti agenti al sec" name="simagentups"/> - <stat_bar label="Avatar principali" name="simmainagents"/> - <stat_bar label="Avatar secondari" name="simchildagents"/> - <stat_bar label="Oggetti" name="simobjects"/> - <stat_bar label="Oggetti attivi" name="simactiveobjects"/> - <stat_bar label="Script attivi" name="simactivescripts"/> - <stat_bar label="Eventi di script" name="simscripteps"/> - <stat_bar label="Pacchetti in ingresso" name="siminpps"/> - <stat_bar label="Pacchetti in uscita" name="simoutpps"/> - <stat_bar label="Download in attesa" name="simpendingdownloads"/> - <stat_bar label="Caricamenti in attesa" name="simpendinguploads"/> - <stat_bar label="Numero totale byte non confermati (Unacked)" name="simtotalunackedbytes"/> </stat_view> <stat_view label="Tempo (ms)" name="simperf"> <stat_bar label="Tempo totale Frame" name="simframemsec"/> @@ -64,6 +52,14 @@ <stat_bar label="Tempo avatar" name="simagentmsec"/> <stat_bar label="Tempo immagini" name="simimagesmsec"/> <stat_bar label="Tempo script" name="simscriptmsec"/> + <stat_bar label="Tempo libero" name="simsparemsec"/> + <stat_view label="Dettagli tempo (ms)" name="timedetails"> + <stat_bar label="Passaggio fisica" name="simsimphysicsstepmsec"/> + <stat_bar label="Aggiorna forme fisica" name="simsimphysicsshapeupdatemsec"/> + <stat_bar label="Altro fisica" name="simsimphysicsothermsec"/> + <stat_bar label="Tempo pausa" name="simsleepmsec"/> + <stat_bar label="IO pompa" name="simpumpiomsec"/> + </stat_view> </stat_view> </stat_view> </container_view> diff --git a/indra/newview/skins/default/xui/it/floater_tools.xml b/indra/newview/skins/default/xui/it/floater_tools.xml index d3b1503742..0d981e2424 100644 --- a/indra/newview/skins/default/xui/it/floater_tools.xml +++ b/indra/newview/skins/default/xui/it/floater_tools.xml @@ -25,10 +25,10 @@ Clicca e trascina per selezionare il terreno </floater.string> <floater.string name="status_selectcount"> - [OBJ_COUNT] oggetti ( [PRIM_COUNT] prim [PE_STRING] ) selezionati + [OBJ_COUNT] oggetti selezionati, impatto terreno [LAND_IMPACT] </floater.string> - <floater.string name="status_selectprimequiv"> - , [SEL_WEIGHT] prim equivalenti + <floater.string name="status_remaining_capacity"> + Capacità restante [LAND_CAPACITY]. </floater.string> <button label="" label_selected="" name="button focus" tool_tip="Ingrandisci"/> <button label="" label_selected="" name="button move" tool_tip="Sposta"/> @@ -106,8 +106,8 @@ <text name="selection_empty"> Nessuna selezione. </text> - <text name="selection_weight"> - Peso fisica [PHYS_WEIGHT], costo rendering [DISP_WEIGHT]. + <text name="remaining_capacity"> + [CAPACITY_STRING] [secondlife:///app/openfloater/object_weights Maggiori informazioni] </text> <tab_container name="Object Info Tabs"> <panel label="Generale" name="General"> @@ -326,7 +326,6 @@ Tipo di congiunzione </text> <combo_box name="sculpt type control"> - <combo_box.item label="(nessuna)" name="None"/> <combo_box.item label="Sferica" name="Sphere"/> <combo_box.item label="Toroidale" name="Torus"/> <combo_box.item label="Piana" name="Plane"/> diff --git a/indra/newview/skins/default/xui/it/floater_toybox.xml b/indra/newview/skins/default/xui/it/floater_toybox.xml new file mode 100644 index 0000000000..c8d5f1ed7c --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_toybox.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Toybox" title="PERSONALIZZA BARRE STRUMENTI"> + <text name="toybox label 1"> + Aggiungere o rimuovere pulsanti trascinandoli dentro o fuori dalle barre strumenti. + </text> + <text name="toybox label 2"> + I pulsanti verranno visualizzati come mostrato o solo come icone, a seconda delle impostazioni della singola barra degli strumenti. + </text> + <button label="Ripristina predefiniti" label_selected="Ripristina predefiniti" name="btn_restore_defaults"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_voice_controls.xml b/indra/newview/skins/default/xui/it/floater_voice_controls.xml index 0f0467757d..d0ac815b8b 100644 --- a/indra/newview/skins/default/xui/it/floater_voice_controls.xml +++ b/indra/newview/skins/default/xui/it/floater_voice_controls.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_voice_controls" title="Regolazione voce"> +<floater name="floater_voice_controls" title="CONTROLLI VOCE"> <string name="title_nearby"> - VOCE NEI DINTORNI + Voce vicina </string> <string name="title_group"> Chiamata di gruppo con [GROUP] diff --git a/indra/newview/skins/default/xui/it/menu_hide_navbar.xml b/indra/newview/skins/default/xui/it/menu_hide_navbar.xml index 2c2c6c4bc5..48f6691fd8 100644 --- a/indra/newview/skins/default/xui/it/menu_hide_navbar.xml +++ b/indra/newview/skins/default/xui/it/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="Mostra la barra di navigazione" name="ShowNavbarNavigationPanel"/> + <menu_item_check label="Mostra navigazione e barra dei Preferiti" name="ShowNavbarNavigationPanel"/> <menu_item_check label="Mostra la barra dei Preferiti" name="ShowNavbarFavoritesPanel"/> <menu_item_check label="Mostra mini barra del luogo" name="ShowMiniLocationPanel"/> </menu> diff --git a/indra/newview/skins/default/xui/it/menu_login.xml b/indra/newview/skins/default/xui/it/menu_login.xml index fe8bf703aa..834db974da 100644 --- a/indra/newview/skins/default/xui/it/menu_login.xml +++ b/indra/newview/skins/default/xui/it/menu_login.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu_bar name="Login Menu"> <menu label="Io" name="File"> - <menu_item_call label="Preferenze" name="Preferences..."/> + <menu_item_call label="Preferenze..." name="Preferences..."/> <menu_item_call label="Esci da [APP_NAME]" name="Quit"/> </menu> <menu label="Aiuto" name="Help"> diff --git a/indra/newview/skins/default/xui/it/menu_toolbars.xml b/indra/newview/skins/default/xui/it/menu_toolbars.xml new file mode 100644 index 0000000000..784ecd262c --- /dev/null +++ b/indra/newview/skins/default/xui/it/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="Seleziona pulsanti..." name="Chose Buttons"/> + <menu_item_check label="Icone ed etichette" name="icons_with_text"/> + <menu_item_check label="Solo icone" name="icons_only"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/it/menu_viewer.xml b/indra/newview/skins/default/xui/it/menu_viewer.xml index 7e3b344117..815f6f58ed 100644 --- a/indra/newview/skins/default/xui/it/menu_viewer.xml +++ b/indra/newview/skins/default/xui/it/menu_viewer.xml @@ -1,29 +1,30 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu_bar name="Main Menu"> <menu label="Io" name="Me"> - <menu_item_call label="Preferenze" name="Preferences"/> - <menu_item_call label="Il mio Dashboard" name="Manage My Account"> + <menu_item_call label="Dashboard..." name="Manage My Account"> <menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=it"/> </menu_item_call> - <menu_item_call label="Compra L$" name="Buy and Sell L$"/> - <menu_item_call label="Il mio profilo" name="Profile"/> - <menu_item_call label="Il mio aspetto" name="ChangeOutfit"/> - <menu_item_check label="Il mio inventario" name="Inventory"/> - <menu_item_check label="Il mio inventario" name="ShowSidetrayInventory"/> - <menu_item_check label="Le mie gesture" name="Gestures"/> - <menu_item_check label="La mia voce" name="ShowVoice"/> + <menu_item_call label="Profilo..." name="Profile"/> + <menu_item_call label="Aspetto fisico..." name="ChangeOutfit"/> + <menu_item_check label="Inventario..." name="Inventory"/> + <menu_item_check label="Gesture..." name="Gestures"/> + <menu_item_check label="Voce..." name="ShowVoice"/> <menu label="Spostamento" name="Movement"> <menu_item_call label="Siedi" name="Sit Down Here"/> <menu_item_check label="Vola" name="Fly"/> <menu_item_check label="Corri sempre" name="Always Run"/> <menu_item_call label="Ferma animazione" name="Stop Animating My Avatar"/> </menu> - <menu label="Il mio stato" name="Status"> + <menu label="Stato" name="Status"> <menu_item_call label="Assente" name="Set Away"/> <menu_item_call label="Non disponibile" name="Set Busy"/> </menu> <menu_item_call label="Richiedi diritti Admin" name="Request Admin Options"/> <menu_item_call label="Lascia stato Admin" name="Leave Admin Options"/> + <menu_item_call label="Compra L$" name="Buy and Sell L$"/> + <menu_item_call label="Preferenze..." name="Preferences"/> + <menu_item_call label="Barre strumenti..." name="Toolbars"/> + <menu_item_call label="Nascondi tutti i controlli" name="Hide UI"/> <menu_item_call label="Esci da [APP_NAME]" name="Quit"/> </menu> <menu label="Comunica" name="Communicate"> @@ -145,7 +146,6 @@ </menu> <menu label="Aiuto" name="Help"> <menu_item_call label="Aiuto di [SECOND_LIFE]" name="Second Life Help"/> - <menu_item_check label="Attiva suggerimenti" name="Enable Hints"/> <menu_item_call label="Segnala abuso" name="Report Abuse"/> <menu_item_call label="Segnala bug" name="Report Bug"/> <menu_item_call label="Informazioni su [APP_NAME]" name="About Second Life"/> @@ -161,7 +161,7 @@ <menu label="Strumenti di performance" name="Performance Tools"> <menu_item_call label="Misuratore lag" name="Lag Meter"/> <menu_item_check label="Barra statistiche" name="Statistics Bar"/> - <menu_item_check label="Mostra costo di rendering dell'avatar" name="Avatar Rendering Cost"/> + <menu_item_check label="Mostra peso visualizzazione per avatar" name="Avatar Rendering Cost"/> </menu> <menu label="Evidenziazione e visibilità" name="Highlighting and Visibility"> <menu_item_check label="Effetto marcatore lampeggiante" name="Cheesy Beacon"/> @@ -271,6 +271,7 @@ <menu_item_check label="Aggiorna tipo" name="Update Type"/> <menu_item_check label="Info livello dettaglio" name="LOD Info"/> <menu_item_check label="Crea coda" name="Build Queue"/> + <menu_item_check label="Complessità rendering" name="rendercomplexity"/> <menu_item_check label="Scolpisci" name="Sculpt"/> </menu> <menu label="Rendering" name="Rendering"> diff --git a/indra/newview/skins/default/xui/it/notifications.xml b/indra/newview/skins/default/xui/it/notifications.xml index ab9de43e6e..e19b84912a 100644 --- a/indra/newview/skins/default/xui/it/notifications.xml +++ b/indra/newview/skins/default/xui/it/notifications.xml @@ -1915,6 +1915,12 @@ Trasferisci gli elementi nell'inventario? Confermi di voler uscire? <usetemplate ignoretext="Conferma prima di uscire" name="okcancelignore" notext="Non uscire" yestext="Esci"/> </notification> + <notification name="ConfirmRestoreToybox"> + Passare ai pulsanti e alle barre strumenti predefinite? + +Questa azione non può essere ripristinata + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> <notification name="DeleteItems"> [QUESTION] <usetemplate ignoretext="Conferma prima di cancellare gli elementi" name="okcancelignore" notext="Annulla" yestext="OK"/> @@ -2997,10 +3003,6 @@ Clicca e trascina dovunque nel mondo per ruotare la visuale <button name="cancel" text="Annulla"/> </form> </notification> - <notification label="" name="ModeChange"> - Per cambiare la modalità è necessario uscire e riavviare. - <usetemplate name="okcancelbuttons" notext="Non uscire" yestext="Esci"/> - </notification> <notification label="" name="NoClassifieds"> La creazione e la modifica degli annunci sono disponibili solo in modalità Avanzata. Uscire e cambiare la modalità? Sulla schermata di accesso si può selezionare la modalità. <usetemplate name="okcancelbuttons" notext="Non uscire" yestext="Esci"/> @@ -3045,6 +3047,10 @@ Clicca e trascina dovunque nel mondo per ruotare la visuale La ricerca è disponibile solo in modalità Avanzata. Eseguire il logout e cambiare la modalità? <usetemplate name="okcancelbuttons" notext="Non uscire" yestext="Esci"/> </notification> + <notification label="" name="ConfirmHideUI"> + Questa azione cancellerà tutte le voci di menu e i pulsanti. Per visualizzarli nuovamente cliccare ancora [SHORTCUT]. + <usetemplate ignoretext="Conferma prima di nascondere l'interfaccia" name="okcancelignore" notext="Annulla" yestext="OK"/> + </notification> <global name="UnsupportedGLRequirements"> Non sembra che tu abbia i requisiti hardware adeguati per [APP_NAME]. [APP_NAME] richiede una scheda grafica OpenGL con supporto multitexture. Se ne hai una in dotazione, accertati di avere i driver, i service pack e i patch più recenti per la scheda grafica e per il sistema operativo. diff --git a/indra/newview/skins/default/xui/it/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/it/panel_chiclet_bar.xml new file mode 100644 index 0000000000..66bf3f140f --- /dev/null +++ b/indra/newview/skins/default/xui/it/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="Conversazioni"/> + </chiclet_im_well> + </layout_panel> + <layout_panel name="notification_well_panel"> + <chiclet_notification name="notification_well"> + <button name="Unread" tool_tip="Notifiche"/> + </chiclet_notification> + </layout_panel> + </layout_stack> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_me.xml b/indra/newview/skins/default/xui/it/panel_me.xml index 66601aa165..a134f6f1de 100644 --- a/indra/newview/skins/default/xui/it/panel_me.xml +++ b/indra/newview/skins/default/xui/it/panel_me.xml @@ -1,7 +1,4 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Il mio profilo" name="panel_me"> - <tab_container name="tabs"> - <panel label="IL MIO PROFILO" name="panel_profile"/> - <panel label="I MIEI PREFERITI" name="panel_picks"/> - </tab_container> + <panel label="I MIEI PREFERITI" name="panel_picks"/> </panel> diff --git a/indra/newview/skins/default/xui/it/panel_navigation_bar.xml b/indra/newview/skins/default/xui/it/panel_navigation_bar.xml index 8e72167759..0299e2a532 100644 --- a/indra/newview/skins/default/xui/it/panel_navigation_bar.xml +++ b/indra/newview/skins/default/xui/it/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="Torna al luogo precedente"/> - <pull_button name="forward_btn" tool_tip="Procedi un luogo in avanti"/> - <button name="home_btn" tool_tip="Teleport a casa"/> - <location_input label="Posizione" name="location_combo"/> - <search_combo_box label="Cerca" name="search_combo_box" tool_tip="Cerca"> - <combo_editor label="Cerca [SECOND_LIFE]" name="search_combo_editor"/> - </search_combo_box> - </panel> - <favorites_bar name="favorite" tool_tip="Trascina qui i punti di riferimento per un accesso rapido ai tuoi posti preferiti in Second Life."> - <label name="favorites_bar_label" tool_tip="Trascina qui i punti di riferimento per un accesso rapido ai tuoi posti preferiti in Second Life."> - Barra dei Preferiti - </label> - <chevron_button name=">>" tool_tip="Mostra altri Preferiti"/> - </favorites_bar> + <layout_stack name="nvp_stack"> + <layout_panel name="navigation_layout_panel"> + <panel name="navigation_panel"> + <pull_button name="back_btn" tool_tip="Torna al luogo precedente"/> + <pull_button name="forward_btn" tool_tip="Procedi un luogo in avanti"/> + <button name="home_btn" tool_tip="Teleport a casa"/> + <location_input label="Posizione" name="location_combo"/> + </panel> + </layout_panel> + <layout_panel name="favorites_layout_panel"> + <favorites_bar name="favorite" tool_tip="Trascina qui i punti di riferimento per un accesso rapido ai tuoi posti preferiti in Second Life."> + <label name="favorites_bar_label" tool_tip="Trascina qui i punti di riferimento per un accesso rapido ai tuoi posti preferiti in Second Life."> + Barra dei Preferiti + </label> + <more_button name=">>" tool_tip="Mostra altri Preferiti"> + Altro ▼ + </more_button> + </favorites_bar> + </layout_panel> + </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/it/panel_nearby_chat.xml b/indra/newview/skins/default/xui/it/panel_nearby_chat.xml new file mode 100644 index 0000000000..7afc3cd7e7 --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_nearby_chat.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="nearby_chat"> + <check_box label="Traduci chat (tecnologia Google)" name="translate_chat_checkbox"/> +</panel> 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 ee52ee7cb1..4f52105404 100644 --- a/indra/newview/skins/default/xui/it/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/it/panel_preferences_general.xml @@ -13,7 +13,10 @@ <combo_box.item label="Italiano - Beta" name="Italian"/> <combo_box.item label="Polski (Polacco) - Beta" name="Polish"/> <combo_box.item label="Português (Portoghese) - Beta" name="Portugese"/> + <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> <text name="language_textbox2"> (Richiede il riavvio) @@ -48,7 +51,6 @@ <check_box label="TItoli gruppo" name="show_all_title_checkbox1" tool_tip="Mostra titoli di gruppo, come Funzionario o Membro"/> <check_box label="Evidenzia amici" name="show_friends" tool_tip="Evidenzia le etichette dei nomi dei tuoi amici"/> <check_box label="Mostra nomi visualizzati" name="display_names_check" tool_tip="Seleziona per visualizzare i nomi in chat, IM, etichette, ecc."/> - <check_box label="Attiva suggerimenti UI Viewer" name="viewer_hints_check"/> <text name="inworld_typing_rg_label"> Premere i tasti lettera: </text> diff --git a/indra/newview/skins/default/xui/it/panel_preferences_move.xml b/indra/newview/skins/default/xui/it/panel_preferences_move.xml index 56d75bb3e3..8d172bb8bb 100644 --- a/indra/newview/skins/default/xui/it/panel_preferences_move.xml +++ b/indra/newview/skins/default/xui/it/panel_preferences_move.xml @@ -7,18 +7,33 @@ </text> <check_box label="Costruire/Modificare" name="edit_camera_movement" tool_tip="Utilizza il posizionamento automatico della fotocamera entrando o uscendo dalla modalità modifica"/> <check_box label="Aspetto fisico" name="appearance_camera_movement" tool_tip="Utilizza il posizionamento automatico della camera in modalità modifica"/> - <check_box initial_value="vero" label="Barra laterale" name="appearance_sidebar_positioning" tool_tip="Utilizza il posizionamento automatico della fotocamera per la barra laterale"/> + <text name="keyboard_lbl"> + Tastiera: + </text> + <check_box label="Le frecce di direzione mi fanno sempre spostare" name="arrow_keys_move_avatar_check"/> + <check_box label="Doppio click e tieni premuto per correre" name="tap_tap_hold_to_run"/> + <text name="mouse_lbl"> + Mouse: + </text> <check_box label="Mostra in modalità Mouselook" name="first_person_avatar_visible"/> <text name=" Mouse Sensitivity"> Sensibilità mouse visuale soggettiva: </text> <check_box label="Inverti" name="invert_mouse"/> - <check_box label="Le frecce di direzione mi fanno sempre spostare" name="arrow_keys_move_avatar_check"/> - <check_box label="Doppio click e tieni premuto per correre" name="tap_tap_hold_to_run"/> - <check_box label="Doppio clic per:" name="double_click_chkbox"/> - <radio_group name="double_click_action"> - <radio_item label="Teleport" name="radio_teleport"/> - <radio_item label="Autopilota" name="radio_autopilot"/> - </radio_group> + <text name="single_click_action_lbl"> + Un solo clic sul terreno: + </text> + <combo_box name="single_click_action_combo"> + <combo_box.item label="Nessuna azione" name="0"/> + <combo_box.item label="Passa al punto cliccato" name="1"/> + </combo_box> + <text name="double_click_action_lbl"> + Doppio clic sul terreno: + </text> + <combo_box name="double_click_action_combo"> + <combo_box.item label="Nessuna azione" name="0"/> + <combo_box.item label="Passa al punto cliccato" name="1"/> + <combo_box.item label="Teleport al punto cliccato" name="2"/> + </combo_box> <button label="Altri dispositivi" name="joystick_setup_button"/> </panel> diff --git a/indra/newview/skins/default/xui/it/panel_status_bar.xml b/indra/newview/skins/default/xui/it/panel_status_bar.xml index 0569107999..fadaa575ea 100644 --- a/indra/newview/skins/default/xui/it/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/it/panel_status_bar.xml @@ -17,12 +17,9 @@ </panel.string> <panel name="balance_bg"> <text name="balance" tool_tip="Clicca per aggiornare il tuo saldo in L$" value="L$ 20"/> - <button label="ACQUISTA L$" name="buyL" tool_tip="Clicca per acquistare più L$"/> + <button label="Acquista L$" name="buyL" tool_tip="Clicca per acquistare più L$"/> + <button label="Acquisti" name="goShop" tool_tip="Apri Mercato Second Life"/> </panel> - <combo_box name="mode_combo" tool_tip="Seleziona la modalità. Seleziona Di base per esplorare facilmente e rapidamente e per la chat. Seleziona Avanzata per accedere ad altre funzionalità."> - <combo_box.item label="Modalità di base" name="Basic"/> - <combo_box.item label="Modalità Avanzata" name="Advanced"/> - </combo_box> <text name="TimeText" tool_tip="Orario attuale (Pacifico)"> 24:00, ora del Pacifico </text> diff --git a/indra/newview/skins/default/xui/it/sidepanel_inventory.xml b/indra/newview/skins/default/xui/it/sidepanel_inventory.xml index 54fa6df407..5d6c7681f9 100644 --- a/indra/newview/skins/default/xui/it/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/it/sidepanel_inventory.xml @@ -14,7 +14,7 @@ </string> <button label="Oggetti ricevuti" name="inbox_btn"/> <text name="inbox_fresh_new_count"> - [NUM] Nuovo + [NUM] nuovi </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/it/strings.xml b/indra/newview/skins/default/xui/it/strings.xml index 9918934e12..e58ce0cd70 100644 --- a/indra/newview/skins/default/xui/it/strings.xml +++ b/indra/newview/skins/default/xui/it/strings.xml @@ -40,6 +40,9 @@ <string name="ProgressChangingResolution"> Modifica della risoluzione... </string> + <string name="Fullbright"> + Luminosità massima (vers. precedente) + </string> <string name="LoginInProgress"> In connessione. [APP_NAME] può sembrare rallentata. Attendi. </string> @@ -74,7 +77,7 @@ Elaborazione risposta... </string> <string name="LoginInitializingWorld"> - Inizializzazione... + Inizializzazione mondo... </string> <string name="LoginDecodingImages"> Decodifica immagini... @@ -1261,6 +1264,9 @@ Prova ad accedere nuovamente tra un minuto. <string name="Marketplace Error Internal Import"> Errore: problema con questo elemento. Riprova più tardi. </string> + <string name="Open landmarks"> + Apri luoghi di riferimento + </string> <string name="no_transfer" value="(nessun trasferimento)"/> <string name="no_modify" value="(nessuna modifica)"/> <string name="no_copy" value="(nessuna copia)"/> @@ -4158,7 +4164,7 @@ Segnala abuso <string name="Female - Wow"> Femmina - Accipicchia </string> - <string name="/bow1"> + <string name="/bow"> /inchino </string> <string name="/clap"> @@ -4671,4 +4677,172 @@ Prova a racchiudere il percorso dell'editor in doppie virgolette. <string name="ParticleHiding"> Particelle nascoste </string> + <string name="Command_AboutLand_Label"> + Informazioni sul terreno + </string> + <string name="Command_Appearance_Label"> + Aspetto fisico + </string> + <string name="Command_Avatar_Label"> + Avatar + </string> + <string name="Command_Build_Label"> + Costruisci + </string> + <string name="Command_Chat_Label"> + Chat + </string> + <string name="Command_Compass_Label"> + Bussola + </string> + <string name="Command_Destinations_Label"> + Destinazioni + </string> + <string name="Command_Gestures_Label"> + Gesture + </string> + <string name="Command_HowTo_Label"> + Istruzioni + </string> + <string name="Command_Inventory_Label"> + Inventario + </string> + <string name="Command_Map_Label"> + Mappa + </string> + <string name="Command_Marketplace_Label"> + Mercato + </string> + <string name="Command_MiniMap_Label"> + Mini mappa + </string> + <string name="Command_Move_Label"> + Movimento + </string> + <string name="Command_People_Label"> + Persone + </string> + <string name="Command_Picks_Label"> + Preferiti + </string> + <string name="Command_Places_Label"> + Luoghi + </string> + <string name="Command_Preferences_Label"> + Preferenze + </string> + <string name="Command_Profile_Label"> + Profilo + </string> + <string name="Command_Search_Label"> + Ricerca + </string> + <string name="Command_Snapshot_Label"> + Istantanea + </string> + <string name="Command_Speak_Label"> + Parla + </string> + <string name="Command_View_Label"> + Visuale + </string> + <string name="Command_Voice_Label"> + Voce vicina + </string> + <string name="Command_AboutLand_Tooltip"> + Informazioni sul terreno che visiti + </string> + <string name="Command_Appearance_Tooltip"> + Cambia l'avatar + </string> + <string name="Command_Avatar_Tooltip"> + Seleziona un avatar completo + </string> + <string name="Command_Build_Tooltip"> + Costruzione oggetti e modifica terreno + </string> + <string name="Command_Chat_Tooltip"> + Chatta con persone vicine usando il testo + </string> + <string name="Command_Compass_Tooltip"> + Bussola + </string> + <string name="Command_Destinations_Tooltip"> + Destinazioni interessanti + </string> + <string name="Command_Gestures_Tooltip"> + Gesti per il tuo avatar + </string> + <string name="Command_HowTo_Tooltip"> + Come eseguire le attività più comuni + </string> + <string name="Command_Inventory_Tooltip"> + Visualizza e usa le tue cose + </string> + <string name="Command_Map_Tooltip"> + Mappa del mondo + </string> + <string name="Command_Marketplace_Tooltip"> + Vai allo shopping + </string> + <string name="Command_MiniMap_Tooltip"> + Mostra le persone vicine + </string> + <string name="Command_Move_Tooltip"> + Movimento avatar + </string> + <string name="Command_People_Tooltip"> + Amici, gruppi e persone vicine + </string> + <string name="Command_Picks_Tooltip"> + Luoghi da mostrare come preferiti nel profilo + </string> + <string name="Command_Places_Tooltip"> + Luoghi salvati + </string> + <string name="Command_Preferences_Tooltip"> + Preferenze + </string> + <string name="Command_Profile_Tooltip"> + Modifica o visualizza il tuo profilo + </string> + <string name="Command_Search_Tooltip"> + Trova luoghi, eventi, persone + </string> + <string name="Command_Snapshot_Tooltip"> + Scatta una foto + </string> + <string name="Command_Speak_Tooltip"> + Parla con persone vicine usando il microfono + </string> + <string name="Command_View_Tooltip"> + Modifica angolo fotocamera + </string> + <string name="Command_Voice_Tooltip"> + Persona vicine con funzioni voce + </string> + <string name="Retain%"> + Mantieni% + </string> + <string name="Detail"> + Dettagli + </string> + <string name="Better Detail"> + Migliori dettagli + </string> + <string name="Surface"> + Superficie + </string> + <string name="Solid"> + Solido + </string> + <string name="Wrap"> + Involucro + </string> + <string name="Preview"> + Anteprima + </string> + <string name="Normal"> + Normale + </string> </strings> diff --git a/indra/newview/skins/default/xui/ja/floater_about.xml b/indra/newview/skins/default/xui/ja/floater_about.xml index 47bb2455cf..c628ade43e 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] です。位置は <nolink>[HOSTNAME]</nolink> です。([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 e870a8ace9..3c88c902f8 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 0000000000..c4455282d2 --- /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 71a20c8e18..5d3a048975 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 0000000000..9735afb101 --- /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 0000000000..b7f6ad4d4e --- /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 0000000000..5f538ecdb0 --- /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 0000000000..4cebe27226 --- /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 ff5a25fd7b..1122203446 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 07667bb697..157c68a570 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 2f336fcbde..915b37557f 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"> - ' - </text> - <text name="accuracy_slider_mark2"> - ' - </text> - <text name="accuracy_slider_mark3"> - ' - </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 57ab32f486..88c1905b8a 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 0000000000..c9a0ecefd7 --- /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 0000000000..c6a789b63b --- /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 0000000000..3bd9b6b069 --- /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 0000000000..08bee88103 --- /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 0000000000..359585eb86 --- /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 0000000000..0d167444db --- /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 97927776c7..6a1f34cfd8 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 a8b5febd54..8eddf55a44 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 0000000000..d7056f806c --- /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 3a1ae49700..2e633ae1b2 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 dca872e9b8..4c88f17f3d 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 0000000000..e911ca4a13 --- /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 edce5c50fc..b9dbb81c0a 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 c138aeb383..85f09b4500 100644 --- a/indra/newview/skins/default/xui/ja/notifications.xml +++ b/indra/newview/skins/default/xui/ja/notifications.xml |
