diff options
author | Roxie Linden <roxie@lindenlab.com> | 2010-02-25 18:24:07 -0800 |
---|---|---|
committer | Roxie Linden <roxie@lindenlab.com> | 2010-02-25 18:24:07 -0800 |
commit | 9b05fecbf6b3d65dae5a010fc35821dc116a44d0 (patch) | |
tree | 9c0df85bb3a8b5c4e58655179e1b29ee31594cfc /indra | |
parent | 5ed6e0720af1b6cdf1a983e2c040eeb5d8ae33ba (diff) | |
parent | db4e46e93d06c03520cb7c781b8e41b6d374414d (diff) |
automated merge from trunk
Diffstat (limited to 'indra')
457 files changed, 7345 insertions, 3488 deletions
diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt index ac7cc2cdac..9ead183a9e 100644 --- a/indra/llcommon/CMakeLists.txt +++ b/indra/llcommon/CMakeLists.txt @@ -50,7 +50,7 @@ set(llcommon_SOURCE_FILES lleventdispatcher.cpp lleventfilter.cpp llevents.cpp - llfasttimer.cpp + llfasttimer_class.cpp llfile.cpp llfindlocale.cpp llfixedbuffer.cpp @@ -250,7 +250,7 @@ list(APPEND llcommon_SOURCE_FILES ${llcommon_HEADER_FILES}) if(LLCOMMON_LINK_SHARED) add_library (llcommon SHARED ${llcommon_SOURCE_FILES}) - ll_stage_sharedlib(llcommon) + ll_stage_sharedlib(llcommon) else(LLCOMMON_LINK_SHARED) add_library (llcommon ${llcommon_SOURCE_FILES}) endif(LLCOMMON_LINK_SHARED) diff --git a/indra/llcommon/llallocator_heap_profile.cpp b/indra/llcommon/llallocator_heap_profile.cpp index 0a807702d0..e50d59fd4b 100644 --- a/indra/llcommon/llallocator_heap_profile.cpp +++ b/indra/llcommon/llallocator_heap_profile.cpp @@ -113,21 +113,24 @@ void LLAllocatorHeapProfile::parse(std::string const & prof_text) ++j; while(j != line_elems.end() && j->empty()) { ++j; } // skip any separator tokens - llassert_always(j != line_elems.end()); - ++j; // skip the '@' - - mLines.push_back(line(live_count, live_size, tot_count, tot_size)); - line & current_line = mLines.back(); - - for(; j != line_elems.end(); ++j) - { - if(!j->empty()) { - U32 marker = boost::lexical_cast<U32>(*j); - current_line.mTrace.push_back(marker); - } - } + llassert(j != line_elems.end()); + if (j != line_elems.end()) + { + ++j; // skip the '@' + + mLines.push_back(line(live_count, live_size, tot_count, tot_size)); + line & current_line = mLines.back(); + + for(; j != line_elems.end(); ++j) + { + if(!j->empty()) + { + U32 marker = boost::lexical_cast<U32>(*j); + current_line.mTrace.push_back(marker); + } + } + } } - // *TODO - parse MAPPED_LIBRARIES section here if we're ever interested in it } diff --git a/indra/llcommon/llchat.h b/indra/llcommon/llchat.h index 5af7991006..46456882ba 100644 --- a/indra/llcommon/llchat.h +++ b/indra/llcommon/llchat.h @@ -87,7 +87,8 @@ public: mTimeStr(), mPosAgent(), mURL(), - mChatStyle(CHAT_STYLE_NORMAL) + mChatStyle(CHAT_STYLE_NORMAL), + mSessionID() { } std::string mText; // UTF-8 line of text @@ -102,6 +103,7 @@ public: LLVector3 mPosAgent; std::string mURL; EChatStyle mChatStyle; + LLUUID mSessionID; }; #endif diff --git a/indra/llcommon/lldate.cpp b/indra/llcommon/lldate.cpp index ca7e471bf2..de7f2ead74 100644 --- a/indra/llcommon/lldate.cpp +++ b/indra/llcommon/lldate.cpp @@ -152,7 +152,8 @@ void LLDate::toStream(std::ostream& s) const s << '.' << std::setw(2) << (int)(exp_time.tm_usec / (LL_APR_USEC_PER_SEC / 100)); } - s << 'Z'; + s << 'Z' + << std::setfill(' '); } bool LLDate::split(S32 *year, S32 *month, S32 *day, S32 *hour, S32 *min, S32 *sec) const diff --git a/indra/llcommon/llerrorlegacy.h b/indra/llcommon/llerrorlegacy.h index 9920921a58..476d75380f 100644 --- a/indra/llcommon/llerrorlegacy.h +++ b/indra/llcommon/llerrorlegacy.h @@ -34,7 +34,7 @@ #ifndef LL_LLERRORLEGACY_H #define LL_LLERRORLEGACY_H - +#include "llpreprocessor.h" /* LEGACY -- DO NOT USE THIS STUFF ANYMORE @@ -107,7 +107,7 @@ const int LL_ERR_PRICE_MISMATCH = -23018; #define llwarning(msg, num) llwarns << "Warning # " << num << ": " << msg << llendl; -#define llassert_always(func) if (!(func)) llerrs << "ASSERT (" << #func << ")" << llendl; +#define llassert_always(func) if (LL_UNLIKELY(!(func))) llerrs << "ASSERT (" << #func << ")" << llendl; #ifdef SHOW_ASSERT #define llassert(func) llassert_always(func) diff --git a/indra/llcommon/llfasttimer.h b/indra/llcommon/llfasttimer.h index 8af79c90fd..48461df6ae 100644 --- a/indra/llcommon/llfasttimer.h +++ b/indra/llcommon/llfasttimer.h @@ -1,6 +1,6 @@ /** * @file llfasttimer.h - * @brief Declaration of a fast timer. + * @brief Inline implementations of fast timers. * * $LicenseInfo:firstyear=2004&license=viewergpl$ * @@ -33,13 +33,13 @@ #ifndef LL_FASTTIMER_H #define LL_FASTTIMER_H -#include "llinstancetracker.h" - -#define FAST_TIMER_ON 1 -#define TIME_FAST_TIMERS 0 +// pull in the actual class definition +#include "llfasttimer_class.h" #if LL_WINDOWS -#define LL_INLINE __forceinline +// +// Windows implementation of CPU clock +// // // NOTE: put back in when we aren't using platform sdk anymore @@ -52,21 +52,21 @@ //#undef _interlockedbittestandset //#undef _interlockedbittestandreset -//inline U32 get_cpu_clock_count_32() +//inline U32 LLFastTimer::getCPUClockCount32() //{ // U64 time_stamp = __rdtsc(); // return (U32)(time_stamp >> 8); //} // //// return full timer value, *not* shifted by 8 bits -//inline U64 get_cpu_clock_count_64() +//inline U64 LLFastTimer::getCPUClockCount64() //{ // return __rdtsc(); //} // shift off lower 8 bits for lower resolution but longer term timing // on 1Ghz machine, a 32-bit word will hold ~1000 seconds of timing -inline U32 get_cpu_clock_count_32() +inline U32 LLFastTimer::getCPUClockCount32() { U32 ret_val; __asm @@ -82,7 +82,7 @@ inline U32 get_cpu_clock_count_32() } // return full timer value, *not* shifted by 8 bits -inline U64 get_cpu_clock_count_64() +inline U64 LLFastTimer::getCPUClockCount64() { U64 ret_val; __asm @@ -96,269 +96,71 @@ inline U64 get_cpu_clock_count_64() } return ret_val; } -#else -#define LL_INLINE #endif -#if (LL_LINUX || LL_SOLARIS || LL_DARWIN) && (defined(__i386__) || defined(__amd64__)) -inline U32 get_cpu_clock_count_32() + +#if LL_LINUX || LL_SOLARIS +// +// Linux and Solaris implementation of CPU clock - all architectures. +// +// Try to use the MONOTONIC clock if available, this is a constant time counter +// with nanosecond resolution (but not necessarily accuracy) and attempts are made +// to synchronize this value between cores at kernel start. It should not be affected +// by CPU frequency. If not available use the REALTIME clock, but this may be affected by +// NTP adjustments or other user activity affecting the system time. +inline U64 LLFastTimer::getCPUClockCount64() +{ + struct timespec tp; + +#ifdef CLOCK_MONOTONIC // MONOTONIC supported at build-time? + if (-1 == clock_gettime(CLOCK_MONOTONIC,&tp)) // if MONOTONIC isn't supported at runtime then ouch, try REALTIME +#endif + clock_gettime(CLOCK_REALTIME,&tp); + + return (tp.tv_sec*LLFastTimer::sClockResolution)+tp.tv_nsec; +} + +inline U32 LLFastTimer::getCPUClockCount32() +{ + return (U32)(LLFastTimer::getCPUClockCount64() >> 8); +} +#endif // (LL_LINUX || LL_SOLARIS)) + + +#if (LL_DARWIN) && (defined(__i386__) || defined(__amd64__)) +// +// Mac x86 implementation of CPU clock +inline U32 LLFastTimer::getCPUClockCount32() { U64 x; __asm__ volatile (".byte 0x0f, 0x31": "=A"(x)); - return (U32)x >> 8; + return (U32)(x >> 8); } -inline U32 get_cpu_clock_count_64() +inline U64 LLFastTimer::getCPUClockCount64() { U64 x; __asm__ volatile (".byte 0x0f, 0x31": "=A"(x)); - return x >> 8; + return x; } #endif -#if ( LL_DARWIN && !(defined(__i386__) || defined(__amd64__))) || (LL_SOLARIS && defined(__sparc__)) + +#if ( LL_DARWIN && !(defined(__i386__) || defined(__amd64__))) // -// Mac PPC (deprecated) & Solaris SPARC implementation of CPU clock +// Mac PPC (deprecated) implementation of CPU clock // // Just use gettimeofday implementation for now -inline U32 get_cpu_clock_count_32() +inline U32 LLFastTimer::getCPUClockCount32() { - return (U32)get_clock_count(); + return (U32)(get_clock_count()>>8); } -inline U32 get_cpu_clock_count_64() +inline U64 LLFastTimer::getCPUClockCount64() { return get_clock_count(); } #endif -class LLMutex; - -#include <queue> -#include "llsd.h" - -class LL_COMMON_API LLFastTimer -{ -public: - - class NamedTimer; - - struct LL_COMMON_API FrameState - { - FrameState(NamedTimer* timerp); - - U32 mSelfTimeCounter; - U32 mCalls; - FrameState* mParent; // info for caller timer - FrameState* mLastCaller; // used to bootstrap tree construction - NamedTimer* mTimer; - U16 mActiveCount; // number of timers with this ID active on stack - bool mMoveUpTree; // needs to be moved up the tree of timers at the end of frame - }; - - // stores a "named" timer instance to be reused via multiple LLFastTimer stack instances - class LL_COMMON_API NamedTimer - : public LLInstanceTracker<NamedTimer> - { - friend class DeclareTimer; - public: - ~NamedTimer(); - - enum { HISTORY_NUM = 60 }; - - const std::string& getName() const { return mName; } - NamedTimer* getParent() const { return mParent; } - void setParent(NamedTimer* parent); - S32 getDepth(); - std::string getToolTip(S32 history_index = -1); - - typedef std::vector<NamedTimer*>::const_iterator child_const_iter; - child_const_iter beginChildren(); - child_const_iter endChildren(); - std::vector<NamedTimer*>& getChildren(); - - void setCollapsed(bool collapsed) { mCollapsed = collapsed; } - bool getCollapsed() const { return mCollapsed; } - - U32 getCountAverage() const { return mCountAverage; } - U32 getCallAverage() const { return mCallAverage; } - - U32 getHistoricalCount(S32 history_index = 0) const; - U32 getHistoricalCalls(S32 history_index = 0) const; - - static NamedTimer& getRootNamedTimer(); - - S32 getFrameStateIndex() const { return mFrameStateIndex; } - - FrameState& getFrameState() const; - - private: - friend class LLFastTimer; - friend class NamedTimerFactory; - - // - // methods - // - NamedTimer(const std::string& name); - // recursive call to gather total time from children - static void accumulateTimings(); - - // updates cumulative times and hierarchy, - // can be called multiple times in a frame, at any point - static void processTimes(); - - static void buildHierarchy(); - static void resetFrame(); - static void reset(); - - // - // members - // - S32 mFrameStateIndex; - - std::string mName; - - U32 mTotalTimeCounter; - - U32 mCountAverage; - U32 mCallAverage; - - U32* mCountHistory; - U32* mCallHistory; - - // tree structure - NamedTimer* mParent; // NamedTimer of caller(parent) - std::vector<NamedTimer*> mChildren; - bool mCollapsed; // don't show children - bool mNeedsSorting; // sort children whenever child added - }; - - // used to statically declare a new named timer - class LL_COMMON_API DeclareTimer - : public LLInstanceTracker<DeclareTimer> - { - friend class LLFastTimer; - public: - DeclareTimer(const std::string& name, bool open); - DeclareTimer(const std::string& name); - - static void updateCachedPointers(); - - private: - NamedTimer& mTimer; - FrameState* mFrameState; - }; - -public: - LLFastTimer(LLFastTimer::FrameState* state); - - LL_INLINE LLFastTimer(LLFastTimer::DeclareTimer& timer) - : mFrameState(timer.mFrameState) - { -#if TIME_FAST_TIMERS - U64 timer_start = get_cpu_clock_count_64(); -#endif -#if FAST_TIMER_ON - LLFastTimer::FrameState* frame_state = mFrameState; - mStartTime = get_cpu_clock_count_32(); - - frame_state->mActiveCount++; - frame_state->mCalls++; - // keep current parent as long as it is active when we are - frame_state->mMoveUpTree |= (frame_state->mParent->mActiveCount == 0); - - LLFastTimer::CurTimerData* cur_timer_data = &LLFastTimer::sCurTimerData; - mLastTimerData = *cur_timer_data; - cur_timer_data->mCurTimer = this; - cur_timer_data->mFrameState = frame_state; - cur_timer_data->mChildTime = 0; -#endif -#if TIME_FAST_TIMERS - U64 timer_end = get_cpu_clock_count_64(); - sTimerCycles += timer_end - timer_start; -#endif - } - - LL_INLINE ~LLFastTimer() - { -#if TIME_FAST_TIMERS - U64 timer_start = get_cpu_clock_count_64(); -#endif -#if FAST_TIMER_ON - LLFastTimer::FrameState* frame_state = mFrameState; - U32 total_time = get_cpu_clock_count_32() - mStartTime; - - frame_state->mSelfTimeCounter += total_time - LLFastTimer::sCurTimerData.mChildTime; - frame_state->mActiveCount--; - - // store last caller to bootstrap tree creation - // do this in the destructor in case of recursion to get topmost caller - frame_state->mLastCaller = mLastTimerData.mFrameState; - - // we are only tracking self time, so subtract our total time delta from parents - mLastTimerData.mChildTime += total_time; - - LLFastTimer::sCurTimerData = mLastTimerData; -#endif -#if TIME_FAST_TIMERS - U64 timer_end = get_cpu_clock_count_64(); - sTimerCycles += timer_end - timer_start; - sTimerCalls++; -#endif - } - -public: - static LLMutex* sLogLock; - static std::queue<LLSD> sLogQueue; - static BOOL sLog; - static BOOL sMetricLog; - static bool sPauseHistory; - static bool sResetHistory; - static U64 sTimerCycles; - static U32 sTimerCalls; - - typedef std::vector<FrameState> info_list_t; - static info_list_t& getFrameStateList(); - - - // call this once a frame to reset timers - static void nextFrame(); - - // dumps current cumulative frame stats to log - // call nextFrame() to reset timers - static void dumpCurTimes(); - - // call this to reset timer hierarchy, averages, etc. - static void reset(); - - static U64 countsPerSecond(); - static S32 getLastFrameIndex() { return sLastFrameIndex; } - static S32 getCurFrameIndex() { return sCurFrameIndex; } - - static void writeLog(std::ostream& os); - static const NamedTimer* getTimerByName(const std::string& name); - - struct CurTimerData - { - LLFastTimer* mCurTimer; - FrameState* mFrameState; - U32 mChildTime; - }; - static CurTimerData sCurTimerData; - -private: - static S32 sCurFrameIndex; - static S32 sLastFrameIndex; - static U64 sLastFrameTime; - static info_list_t* sTimerInfos; - - U32 mStartTime; - LLFastTimer::FrameState* mFrameState; - LLFastTimer::CurTimerData mLastTimerData; - -}; - -typedef class LLFastTimer LLFastTimer; - #endif // LL_LLFASTTIMER_H diff --git a/indra/llcommon/llfasttimer_class.cpp b/indra/llcommon/llfasttimer_class.cpp new file mode 100644 index 0000000000..fae0a66873 --- /dev/null +++ b/indra/llcommon/llfasttimer_class.cpp @@ -0,0 +1,751 @@ +/** + * @file llfasttimer_class.cpp + * @brief Implementation of the fast timer. + * + * $LicenseInfo:firstyear=2004&license=viewergpl$ + * + * Copyright (c) 2004-2007, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlife.com/developers/opensource/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at http://secondlife.com/developers/opensource/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS."LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ +#include "linden_common.h" + +#include "llfasttimer.h" + +#include "llmemory.h" +#include "llprocessor.h" +#include "llsingleton.h" +#include "lltreeiterators.h" +#include "llsdserialize.h" + +#include <boost/bind.hpp> + +#if LL_WINDOWS +#elif LL_LINUX || LL_SOLARIS +#include <sys/time.h> +#include <sched.h> +#elif LL_DARWIN +#include <sys/time.h> +#include "lltimer.h" // get_clock_count() +#else +#error "architecture not supported" +#endif + +////////////////////////////////////////////////////////////////////////////// +// statics + +S32 LLFastTimer::sCurFrameIndex = -1; +S32 LLFastTimer::sLastFrameIndex = -1; +U64 LLFastTimer::sLastFrameTime = LLFastTimer::getCPUClockCount64(); +bool LLFastTimer::sPauseHistory = 0; +bool LLFastTimer::sResetHistory = 0; +LLFastTimer::CurTimerData LLFastTimer::sCurTimerData; +BOOL LLFastTimer::sLog = FALSE; +BOOL LLFastTimer::sMetricLog = FALSE; +LLMutex* LLFastTimer::sLogLock = NULL; +std::queue<LLSD> LLFastTimer::sLogQueue; + +#if LL_LINUX || LL_SOLARIS +U64 LLFastTimer::sClockResolution = 1000000000; // Nanosecond resolution +#else +U64 LLFastTimer::sClockResolution = 1000000; // Microsecond resolution +#endif + +std::vector<LLFastTimer::FrameState>* LLFastTimer::sTimerInfos = NULL; +U64 LLFastTimer::sTimerCycles = 0; +U32 LLFastTimer::sTimerCalls = 0; + + +// FIXME: move these declarations to the relevant modules + +// helper functions +typedef LLTreeDFSPostIter<LLFastTimer::NamedTimer, LLFastTimer::NamedTimer::child_const_iter> timer_tree_bottom_up_iterator_t; + +static timer_tree_bottom_up_iterator_t begin_timer_tree_bottom_up(LLFastTimer::NamedTimer& id) +{ + return timer_tree_bottom_up_iterator_t(&id, + boost::bind(boost::mem_fn(&LLFastTimer::NamedTimer::beginChildren), _1), + boost::bind(boost::mem_fn(&LLFastTimer::NamedTimer::endChildren), _1)); +} + +static timer_tree_bottom_up_iterator_t end_timer_tree_bottom_up() +{ + return timer_tree_bottom_up_iterator_t(); +} + +typedef LLTreeDFSIter<LLFastTimer::NamedTimer, LLFastTimer::NamedTimer::child_const_iter> timer_tree_dfs_iterator_t; + + +static timer_tree_dfs_iterator_t begin_timer_tree(LLFastTimer::NamedTimer& id) +{ + return timer_tree_dfs_iterator_t(&id, + boost::bind(boost::mem_fn(&LLFastTimer::NamedTimer::beginChildren), _1), + boost::bind(boost::mem_fn(&LLFastTimer::NamedTimer::endChildren), _1)); +} + +static timer_tree_dfs_iterator_t end_timer_tree() +{ + return timer_tree_dfs_iterator_t(); +} + + + +// factory class that creates NamedTimers via static DeclareTimer objects +class NamedTimerFactory : public LLSingleton<NamedTimerFactory> +{ +public: + NamedTimerFactory() + {} + + /*virtual */ void initSingleton() + { + mTimerRoot = new LLFastTimer::NamedTimer("root"); + + mActiveTimerRoot = new LLFastTimer::NamedTimer("Frame"); + mActiveTimerRoot->setCollapsed(false); + + mRootFrameState = new LLFastTimer::FrameState(mActiveTimerRoot); + mRootFrameState->mParent = &mTimerRoot->getFrameState(); + mActiveTimerRoot->setParent(mTimerRoot); + + mAppTimer = new LLFastTimer(mRootFrameState); + } + + ~NamedTimerFactory() + { + std::for_each(mTimers.begin(), mTimers.end(), DeletePairedPointer()); + + delete mAppTimer; + delete mActiveTimerRoot; + delete mTimerRoot; + delete mRootFrameState; + } + + LLFastTimer::NamedTimer& createNamedTimer(const std::string& name) + { + timer_map_t::iterator found_it = mTimers.find(name); + if (found_it != mTimers.end()) + { + return *found_it->second; + } + + LLFastTimer::NamedTimer* timer = new LLFastTimer::NamedTimer(name); + timer->setParent(mTimerRoot); + mTimers.insert(std::make_pair(name, timer)); + + return *timer; + } + + LLFastTimer::NamedTimer* getTimerByName(const std::string& name) + { + timer_map_t::iterator found_it = mTimers.find(name); + if (found_it != mTimers.end()) + { + return found_it->second; + } + return NULL; + } + + LLFastTimer::NamedTimer* getActiveRootTimer() { return mActiveTimerRoot; } + LLFastTimer::NamedTimer* getRootTimer() { return mTimerRoot; } + const LLFastTimer* getAppTimer() { return mAppTimer; } + LLFastTimer::FrameState& getRootFrameState() { return *mRootFrameState; } + + typedef std::map<std::string, LLFastTimer::NamedTimer*> timer_map_t; + timer_map_t::iterator beginTimers() { return mTimers.begin(); } + timer_map_t::iterator endTimers() { return mTimers.end(); } + S32 timerCount() { return mTimers.size(); } + +private: + timer_map_t mTimers; + + LLFastTimer::NamedTimer* mActiveTimerRoot; + LLFastTimer::NamedTimer* mTimerRoot; + LLFastTimer* mAppTimer; + LLFastTimer::FrameState* mRootFrameState; +}; + +void update_cached_pointers_if_changed() +{ + // detect when elements have moved and update cached pointers + static LLFastTimer::FrameState* sFirstTimerAddress = NULL; + if (&*(LLFastTimer::getFrameStateList().begin()) != sFirstTimerAddress) + { + LLFastTimer::DeclareTimer::updateCachedPointers(); + } + sFirstTimerAddress = &*(LLFastTimer::getFrameStateList().begin()); +} + +LLFastTimer::DeclareTimer::DeclareTimer(const std::string& name, bool open ) +: mTimer(NamedTimerFactory::instance().createNamedTimer(name)) +{ + mTimer.setCollapsed(!open); + mFrameState = &mTimer.getFrameState(); + update_cached_pointers_if_changed(); +} + +LLFastTimer::DeclareTimer::DeclareTimer(const std::string& name) +: mTimer(NamedTimerFactory::instance().createNamedTimer(name)) +{ + mFrameState = &mTimer.getFrameState(); + update_cached_pointers_if_changed(); +} + +// static +void LLFastTimer::DeclareTimer::updateCachedPointers() +{ + // propagate frame state pointers to timer declarations + for (DeclareTimer::instance_iter it = DeclareTimer::beginInstances(); + it != DeclareTimer::endInstances(); + ++it) + { + // update cached pointer + it->mFrameState = &it->mTimer.getFrameState(); + } +} + +//static +#if LL_LINUX || LL_SOLARIS || ( LL_DARWIN && !(defined(__i386__) || defined(__amd64__)) ) +U64 LLFastTimer::countsPerSecond() // counts per second for the *32-bit* timer +{ + return sClockResolution >> 8; +} +#else // windows or x86-mac +U64 LLFastTimer::countsPerSecond() // counts per second for the *32-bit* timer +{ + static U64 sCPUClockFrequency = U64(CProcessor().GetCPUFrequency(50)); + + // we drop the low-order byte in out timers, so report a lower frequency + return sCPUClockFrequency >> 8; +} +#endif + +LLFastTimer::FrameState::FrameState(LLFastTimer::NamedTimer* timerp) +: mActiveCount(0), + mCalls(0), + mSelfTimeCounter(0), + mParent(NULL), + mLastCaller(NULL), + mMoveUpTree(false), + mTimer(timerp) +{} + + +LLFastTimer::NamedTimer::NamedTimer(const std::string& name) +: mName(name), + mCollapsed(true), + mParent(NULL), + mTotalTimeCounter(0), + mCountAverage(0), + mCallAverage(0), + mNeedsSorting(false) +{ + info_list_t& frame_state_list = getFrameStateList(); + mFrameStateIndex = frame_state_list.size(); + getFrameStateList().push_back(FrameState(this)); + + mCountHistory = new U32[HISTORY_NUM]; + memset(mCountHistory, 0, sizeof(U32) * HISTORY_NUM); + mCallHistory = new U32[HISTORY_NUM]; + memset(mCallHistory, 0, sizeof(U32) * HISTORY_NUM); +} + +LLFastTimer::NamedTimer::~NamedTimer() +{ + delete[] mCountHistory; + delete[] mCallHistory; +} + +std::string LLFastTimer::NamedTimer::getToolTip(S32 history_idx) +{ + if (history_idx < 0) + { + // by default, show average number of calls + return llformat("%s (%d calls)", getName().c_str(), (S32)getCallAverage()); + } + else + { + return llformat("%s (%d calls)", getName().c_str(), (S32)getHistoricalCalls(history_idx)); + } +} + +void LLFastTimer::NamedTimer::setParent(NamedTimer* parent) +{ + llassert_always(parent != this); + llassert_always(parent != NULL); + + if (mParent) + { + // subtract our accumulated from previous parent + for (S32 i = 0; i < HISTORY_NUM; i++) + { + mParent->mCountHistory[i] -= mCountHistory[i]; + } + + // subtract average timing from previous parent + mParent->mCountAverage -= mCountAverage; + + std::vector<NamedTimer*>& children = mParent->getChildren(); + std::vector<NamedTimer*>::iterator found_it = std::find(children.begin(), children.end(), this); + if (found_it != children.end()) + { + children.erase(found_it); + } + } + + mParent = parent; + if (parent) + { + getFrameState().mParent = &parent->getFrameState(); + parent->getChildren().push_back(this); + parent->mNeedsSorting = true; + } +} + +S32 LLFastTimer::NamedTimer::getDepth() +{ + S32 depth = 0; + NamedTimer* timerp = mParent; + while(timerp) + { + depth++; + timerp = timerp->mParent; + } + return depth; +} + +// static +void LLFastTimer::NamedTimer::processTimes() +{ + if (sCurFrameIndex < 0) return; + + buildHierarchy(); + accumulateTimings(); +} + +// sort timer info structs by depth first traversal order +struct SortTimersDFS +{ + bool operator()(const LLFastTimer::FrameState& i1, const LLFastTimer::FrameState& i2) + { + return i1.mTimer->getFrameStateIndex() < i2.mTimer->getFrameStateIndex(); + } +}; + +// sort child timers by name +struct SortTimerByName +{ + bool operator()(const LLFastTimer::NamedTimer* i1, const LLFastTimer::NamedTimer* i2) + { + return i1->getName() < i2->getName(); + } +}; + +//static +void LLFastTimer::NamedTimer::buildHierarchy() +{ + if (sCurFrameIndex < 0 ) return; + + // set up initial tree + for (instance_iter it = NamedTimer::beginInstances(); + it != endInstances(); + ++it) + { + NamedTimer& timer = *it; + if (&timer == NamedTimerFactory::instance().getRootTimer()) continue; + + // bootstrap tree construction by attaching to last timer to be on stack + // when this timer was called + if (timer.getFrameState().mLastCaller && timer.mParent == NamedTimerFactory::instance().getRootTimer()) + { + timer.setParent(timer.getFrameState().mLastCaller->mTimer); + // no need to push up tree on first use, flag can be set spuriously + timer.getFrameState().mMoveUpTree = false; + } + } + + // bump timers up tree if they've been flagged as being in the wrong place + // do this in a bottom up order to promote descendants first before promoting ancestors + // this preserves partial order derived from current frame's observations + for(timer_tree_bottom_up_iterator_t it = begin_timer_tree_bottom_up(*NamedTimerFactory::instance().getRootTimer()); + it != end_timer_tree_bottom_up(); + ++it) + { + NamedTimer* timerp = *it; + // skip root timer + if (timerp == NamedTimerFactory::instance().getRootTimer()) continue; + + if (timerp->getFrameState().mMoveUpTree) + { + // since ancestors have already been visited, reparenting won't affect tree traversal + //step up tree, bringing our descendants with us + //llinfos << "Moving " << timerp->getName() << " from child of " << timerp->getParent()->getName() << + // " to child of " << timerp->getParent()->getParent()->getName() << llendl; + timerp->setParent(timerp->getParent()->getParent()); + timerp->getFrameState().mMoveUpTree = false; + + // don't bubble up any ancestors until descendants are done bubbling up + it.skipAncestors(); + } + } + + // sort timers by time last called, so call graph makes sense + for(timer_tree_dfs_iterator_t it = begin_timer_tree(*NamedTimerFactory::instance().getRootTimer()); + it != end_timer_tree(); + ++it) + { + NamedTimer* timerp = (*it); + if (timerp->mNeedsSorting) + { + std::sort(timerp->getChildren().begin(), timerp->getChildren().end(), SortTimerByName()); + } + timerp->mNeedsSorting = false; + } +} + +//static +void LLFastTimer::NamedTimer::accumulateTimings() +{ + U32 cur_time = getCPUClockCount32(); + + // walk up stack of active timers and accumulate current time while leaving timing structures active + LLFastTimer* cur_timer = sCurTimerData.mCurTimer; + // root defined by parent pointing to self + CurTimerData* cur_data = &sCurTimerData; + while(cur_timer->mLastTimerData.mCurTimer != cur_timer) + { + U32 cumulative_time_delta = cur_time - cur_timer->mStartTime; + U32 self_time_delta = cumulative_time_delta - cur_data->mChildTime; + cur_data->mChildTime = 0; + cur_timer->mFrameState->mSelfTimeCounter += self_time_delta; + cur_timer->mStartTime = cur_time; + + cur_data = &cur_timer->mLastTimerData; + cur_data->mChildTime += cumulative_time_delta; + + cur_timer = cur_timer->mLastTimerData.mCurTimer; + } + + // traverse tree in DFS post order, or bottom up + for(timer_tree_bottom_up_iterator_t it = begin_timer_tree_bottom_up(*NamedTimerFactory::instance().getActiveRootTimer()); + it != end_timer_tree_bottom_up(); + ++it) + { + NamedTimer* timerp = (*it); + timerp->mTotalTimeCounter = timerp->getFrameState().mSelfTimeCounter; + for (child_const_iter child_it = timerp->beginChildren(); child_it != timerp->endChildren(); ++child_it) + { + timerp->mTotalTimeCounter += (*child_it)->mTotalTimeCounter; + } + + S32 cur_frame = sCurFrameIndex; + if (cur_frame >= 0) + { + // update timer history + int hidx = cur_frame % HISTORY_NUM; + + timerp->mCountHistory[hidx] = timerp->mTotalTimeCounter; + timerp->mCountAverage = (timerp->mCountAverage * cur_frame + timerp->mTotalTimeCounter) / (cur_frame+1); + timerp->mCallHistory[hidx] = timerp->getFrameState().mCalls; + timerp->mCallAverage = (timerp->mCallAverage * cur_frame + timerp->getFrameState().mCalls) / (cur_frame+1); + } + } +} + +// static +void LLFastTimer::NamedTimer::resetFrame() +{ + if (sLog) + { //output current frame counts to performance log + F64 iclock_freq = 1000.0 / countsPerSecond(); // good place to calculate clock frequency + + F64 total_time = 0; + LLSD sd; + + for (NamedTimer::instance_iter it = NamedTimer::beginInstances(); + it != NamedTimer::endInstances(); + ++it) + { + NamedTimer& timer = *it; + FrameState& info = timer.getFrameState(); + sd[timer.getName()]["Time"] = (LLSD::Real) (info.mSelfTimeCounter*iclock_freq); + sd[timer.getName()]["Calls"] = (LLSD::Integer) info.mCalls; + + // computing total time here because getting the root timer's getCountHistory + // doesn't work correctly on the first frame + total_time = total_time + info.mSelfTimeCounter * iclock_freq; + } + + sd["Total"]["Time"] = (LLSD::Real) total_time; + sd["Total"]["Calls"] = (LLSD::Integer) 1; + + { + LLMutexLock lock(sLogLock); + sLogQueue.push(sd); + } + } + + + // tag timers by position in depth first traversal of tree + S32 index = 0; + for(timer_tree_dfs_iterator_t it = begin_timer_tree(*NamedTimerFactory::instance().getRootTimer()); + it != end_timer_tree(); + ++it) + { + NamedTimer* timerp = (*it); + + timerp->mFrameStateIndex = index; + index++; + + llassert_always(timerp->mFrameStateIndex < (S32)getFrameStateList().size()); + } + + // sort timers by dfs traversal order to improve cache coherency + std::sort(getFrameStateList().begin(), getFrameStateList().end(), SortTimersDFS()); + + // update pointers into framestatelist now that we've sorted it + DeclareTimer::updateCachedPointers(); + + // reset for next frame + for (NamedTimer::instance_iter it = NamedTimer::beginInstances(); + it != NamedTimer::endInstances(); + ++it) + { + NamedTimer& timer = *it; + + FrameState& info = timer.getFrameState(); + info.mSelfTimeCounter = 0; + info.mCalls = 0; + info.mLastCaller = NULL; + info.mMoveUpTree = false; + // update parent pointer in timer state struct + if (timer.mParent) + { + info.mParent = &timer.mParent->getFrameState(); + } + } + + //sTimerCycles = 0; + //sTimerCalls = 0; +} + +//static +void LLFastTimer::NamedTimer::reset() +{ + resetFrame(); // reset frame data + + // walk up stack of active timers and reset start times to current time + // effectively zeroing out any accumulated time + U32 cur_time = getCPUClockCount32(); + + // root defined by parent pointing to self + CurTimerData* cur_data = &sCurTimerData; + LLFastTimer* cur_timer = cur_data->mCurTimer; + while(cur_timer->mLastTimerData.mCurTimer != cur_timer) + { + cur_timer->mStartTime = cur_time; + cur_data->mChildTime = 0; + + cur_data = &cur_timer->mLastTimerData; + cur_timer = cur_data->mCurTimer; + } + + // reset all history + for (NamedTimer::instance_iter it = NamedTimer::beginInstances(); + it != NamedTimer::endInstances(); + ++it) + { + NamedTimer& timer = *it; + if (&timer != NamedTimerFactory::instance().getRootTimer()) + { + timer.setParent(NamedTimerFactory::instance().getRootTimer()); + } + + timer.mCountAverage = 0; + timer.mCallAverage = 0; + memset(timer.mCountHistory, 0, sizeof(U32) * HISTORY_NUM); + memset(timer.mCallHistory, 0, sizeof(U32) * HISTORY_NUM); + } + + sLastFrameIndex = 0; + sCurFrameIndex = 0; +} + +//static +LLFastTimer::info_list_t& LLFastTimer::getFrameStateList() +{ + if (!sTimerInfos) + { + sTimerInfos = new info_list_t(); + } + return *sTimerInfos; +} + + +U32 LLFastTimer::NamedTimer::getHistoricalCount(S32 history_index) const +{ + S32 history_idx = (getLastFrameIndex() + history_index) % LLFastTimer::NamedTimer::HISTORY_NUM; + return mCountHistory[history_idx]; +} + +U32 LLFastTimer::NamedTimer::getHistoricalCalls(S32 history_index ) const +{ + S32 history_idx = (getLastFrameIndex() + history_index) % LLFastTimer::NamedTimer::HISTORY_NUM; + return mCallHistory[history_idx]; +} + +LLFastTimer::FrameState& LLFastTimer::NamedTimer::getFrameState() const +{ + llassert_always(mFrameStateIndex >= 0); + if (this == NamedTimerFactory::instance().getActiveRootTimer()) + { + return NamedTimerFactory::instance().getRootFrameState(); + } + return getFrameStateList()[mFrameStateIndex]; +} + +// static +LLFastTimer::NamedTimer& LLFastTimer::NamedTimer::getRootNamedTimer() +{ + return *NamedTimerFactory::instance().getActiveRootTimer(); +} + +std::vector<LLFastTimer::NamedTimer*>::const_iterator LLFastTimer::NamedTimer::beginChildren() +{ + return mChildren.begin(); +} + +std::vector<LLFastTimer::NamedTimer*>::const_iterator LLFastTimer::NamedTimer::endChildren() +{ + return mChildren.end(); +} + +std::vector<LLFastTimer::NamedTimer*>& LLFastTimer::NamedTimer::getChildren() +{ + return mChildren; +} + +//static +void LLFastTimer::nextFrame() +{ + countsPerSecond(); // good place to calculate clock frequency + U64 frame_time = getCPUClockCount64(); + if ((frame_time - sLastFrameTime) >> 8 > 0xffffffff) + { + llinfos << "Slow frame, fast timers inaccurate" << llendl; + } + + if (sPauseHistory) + { + sResetHistory = true; + } + else if (sResetHistory) + { + sLastFrameIndex = 0; + sCurFrameIndex = 0; + sResetHistory = false; + } + else // not paused + { + NamedTimer::processTimes(); + sLastFrameIndex = sCurFrameIndex++; + } + + // get ready for next frame + NamedTimer::resetFrame(); + sLastFrameTime = frame_time; +} + +//static +void LLFastTimer::dumpCurTimes() +{ + // accumulate timings, etc. + NamedTimer::processTimes(); + + F64 clock_freq = (F64)countsPerSecond(); + F64 iclock_freq = 1000.0 / clock_freq; // clock_ticks -> milliseconds + + // walk over timers in depth order and output timings + for(timer_tree_dfs_iterator_t it = begin_timer_tree(*NamedTimerFactory::instance().getRootTimer()); + it != end_timer_tree(); + ++it) + { + NamedTimer* timerp = (*it); + F64 total_time_ms = ((F64)timerp->getHistoricalCount(0) * iclock_freq); + // Don't bother with really brief times, keep output concise + if (total_time_ms < 0.1) continue; + + std::ostringstream out_str; + for (S32 i = 0; i < timerp->getDepth(); i++) + { + out_str << "\t"; + } + + + out_str << timerp->getName() << " " + << std::setprecision(3) << total_time_ms << " ms, " + << timerp->getHistoricalCalls(0) << " calls"; + + llinfos << out_str.str() << llendl; + } +} + +//static +void LLFastTimer::reset() +{ + NamedTimer::reset(); +} + + +//static +void LLFastTimer::writeLog(std::ostream& os) +{ + while (!sLogQueue.empty()) + { + LLSD& sd = sLogQueue.front(); + LLSDSerialize::toXML(sd, os); + LLMutexLock lock(sLogLock); + sLogQueue.pop(); + } +} + +//static +const LLFastTimer::NamedTimer* LLFastTimer::getTimerByName(const std::string& name) +{ + return NamedTimerFactory::instance().getTimerByName(name); +} + +LLFastTimer::LLFastTimer(LLFastTimer::FrameState* state) +: mFrameState(state) +{ + U32 start_time = getCPUClockCount32(); + mStartTime = start_time; + mFrameState->mActiveCount++; + LLFastTimer::sCurTimerData.mCurTimer = this; + LLFastTimer::sCurTimerData.mFrameState = mFrameState; + LLFastTimer::sCurTimerData.mChildTime = 0; + mLastTimerData = LLFastTimer::sCurTimerData; +} + + +////////////////////////////////////////////////////////////////////////////// diff --git a/indra/llcommon/llfasttimer_class.h b/indra/llcommon/llfasttimer_class.h new file mode 100644 index 0000000000..ddb1a74793 --- /dev/null +++ b/indra/llcommon/llfasttimer_class.h @@ -0,0 +1,272 @@ +/** + * @file llfasttimer_class.h + * @brief Declaration of a fast timer. + * + * $LicenseInfo:firstyear=2004&license=viewergpl$ + * + * Copyright (c) 2004-2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#ifndef LL_FASTTIMER_CLASS_H +#define LL_FASTTIMER_CLASS_H + +#include "llinstancetracker.h" + +#define FAST_TIMER_ON 1 +#define TIME_FAST_TIMERS 0 + +class LLMutex; + +#include <queue> +#include "llsd.h" + +class LL_COMMON_API LLFastTimer +{ +public: + class NamedTimer; + + struct LL_COMMON_API FrameState + { + FrameState(NamedTimer* timerp); + + U32 mSelfTimeCounter; + U32 mCalls; + FrameState* mParent; // info for caller timer + FrameState* mLastCaller; // used to bootstrap tree construction + NamedTimer* mTimer; + U16 mActiveCount; // number of timers with this ID active on stack + bool mMoveUpTree; // needs to be moved up the tree of timers at the end of frame + }; + + // stores a "named" timer instance to be reused via multiple LLFastTimer stack instances + class LL_COMMON_API NamedTimer + : public LLInstanceTracker<NamedTimer> + { + friend class DeclareTimer; + public: + ~NamedTimer(); + + enum { HISTORY_NUM = 60 }; + + const std::string& getName() const { return mName; } + NamedTimer* getParent() const { return mParent; } + void setParent(NamedTimer* parent); + S32 getDepth(); + std::string getToolTip(S32 history_index = -1); + + typedef std::vector<NamedTimer*>::const_iterator child_const_iter; + child_const_iter beginChildren(); + child_const_iter endChildren(); + std::vector<NamedTimer*>& getChildren(); + + void setCollapsed(bool collapsed) { mCollapsed = collapsed; } + bool getCollapsed() const { return mCollapsed; } + + U32 getCountAverage() const { return mCountAverage; } + U32 getCallAverage() const { return mCallAverage; } + + U32 getHistoricalCount(S32 history_index = 0) const; + U32 getHistoricalCalls(S32 history_index = 0) const; + + static NamedTimer& getRootNamedTimer(); + + S32 getFrameStateIndex() const { return mFrameStateIndex; } + + FrameState& getFrameState() const; + + private: + friend class LLFastTimer; + friend class NamedTimerFactory; + + // + // methods + // + NamedTimer(const std::string& name); + // recursive call to gather total time from children + static void accumulateTimings(); + + // updates cumulative times and hierarchy, + // can be called multiple times in a frame, at any point + static void processTimes(); + + static void buildHierarchy(); + static void resetFrame(); + static void reset(); + + // + // members + // + S32 mFrameStateIndex; + + std::string mName; + + U32 mTotalTimeCounter; + + U32 mCountAverage; + U32 mCallAverage; + + U32* mCountHistory; + U32* mCallHistory; + + // tree structure + NamedTimer* mParent; // NamedTimer of caller(parent) + std::vector<NamedTimer*> mChildren; + bool mCollapsed; // don't show children + bool mNeedsSorting; // sort children whenever child added + }; + + // used to statically declare a new named timer + class LL_COMMON_API DeclareTimer + : public LLInstanceTracker<DeclareTimer> + { + friend class LLFastTimer; + public: + DeclareTimer(const std::string& name, bool open); + DeclareTimer(const std::string& name); + + static void updateCachedPointers(); + + private: + NamedTimer& mTimer; + FrameState* mFrameState; + }; + +public: + LLFastTimer(LLFastTimer::FrameState* state); + + LL_FORCE_INLINE LLFastTimer(LLFastTimer::DeclareTimer& timer) + : mFrameState(timer.mFrameState) + { +#if TIME_FAST_TIMERS + U64 timer_start = getCPUClockCount64(); +#endif +#if FAST_TIMER_ON + LLFastTimer::FrameState* frame_state = mFrameState; + mStartTime = getCPUClockCount32(); + + frame_state->mActiveCount++; + frame_state->mCalls++; + // keep current parent as long as it is active when we are + frame_state->mMoveUpTree |= (frame_state->mParent->mActiveCount == 0); + + LLFastTimer::CurTimerData* cur_timer_data = &LLFastTimer::sCurTimerData; + mLastTimerData = *cur_timer_data; + cur_timer_data->mCurTimer = this; + cur_timer_data->mFrameState = frame_state; + cur_timer_data->mChildTime = 0; +#endif +#if TIME_FAST_TIMERS + U64 timer_end = getCPUClockCount64(); + sTimerCycles += timer_end - timer_start; +#endif + } + + LL_FORCE_INLINE ~LLFastTimer() + { +#if TIME_FAST_TIMERS + U64 timer_start = getCPUClockCount64(); +#endif +#if FAST_TIMER_ON + LLFastTimer::FrameState* frame_state = mFrameState; + U32 total_time = getCPUClockCount32() - mStartTime; + + frame_state->mSelfTimeCounter += total_time - LLFastTimer::sCurTimerData.mChildTime; + frame_state->mActiveCount--; + + // store last caller to bootstrap tree creation + // do this in the destructor in case of recursion to get topmost caller + frame_state->mLastCaller = mLastTimerData.mFrameState; + + // we are only tracking self time, so subtract our total time delta from parents + mLastTimerData.mChildTime += total_time; + + LLFastTimer::sCurTimerData = mLastTimerData; +#endif +#if TIME_FAST_TIMERS + U64 timer_end = getCPUClockCount64(); + sTimerCycles += timer_end - timer_start; + sTimerCalls++; +#endif + } + +public: + static LLMutex* sLogLock; + static std::queue<LLSD> sLogQueue; + static BOOL sLog; + static BOOL sMetricLog; + static bool sPauseHistory; + static bool sResetHistory; + static U64 sTimerCycles; + static U32 sTimerCalls; + + typedef std::vector<FrameState> info_list_t; + static info_list_t& getFrameStateList(); + + + // call this once a frame to reset timers + static void nextFrame(); + + // dumps current cumulative frame stats to log + // call nextFrame() to reset timers + static void dumpCurTimes(); + + // call this to reset timer hierarchy, averages, etc. + static void reset(); + + static U64 countsPerSecond(); + static S32 getLastFrameIndex() { return sLastFrameIndex; } + static S32 getCurFrameIndex() { return sCurFrameIndex; } + + static void writeLog(std::ostream& os); + static const NamedTimer* getTimerByName(const std::string& name); + + struct CurTimerData + { + LLFastTimer* mCurTimer; + FrameState* mFrameState; + U32 mChildTime; + }; + static CurTimerData sCurTimerData; + +private: + static U32 getCPUClockCount32(); + static U64 getCPUClockCount64(); + static U64 sClockResolution; + + static S32 sCurFrameIndex; + static S32 sLastFrameIndex; + static U64 sLastFrameTime; + static info_list_t* sTimerInfos; + + U32 mStartTime; + LLFastTimer::FrameState* mFrameState; + LLFastTimer::CurTimerData mLastTimerData; + +}; + +typedef class LLFastTimer LLFastTimer; + +#endif // LL_LLFASTTIMER_CLASS_H diff --git a/indra/llcommon/llpreprocessor.h b/indra/llcommon/llpreprocessor.h index 5eefa6a16b..1c1503ca7b 100644 --- a/indra/llcommon/llpreprocessor.h +++ b/indra/llcommon/llpreprocessor.h @@ -55,13 +55,28 @@ #define LL_BIG_ENDIAN 1 #endif + // Per-compiler switches + #ifdef __GNUC__ #define LL_FORCE_INLINE inline __attribute__((always_inline)) #else #define LL_FORCE_INLINE __forceinline #endif +// Mark-up expressions with branch prediction hints. Do NOT use +// this with reckless abandon - it's an obfuscating micro-optimization +// outside of inner loops or other places where you are OVERWHELMINGLY +// sure which way an expression almost-always evaluates. +#if __GNUC__ >= 3 +# define LL_LIKELY(EXPR) __builtin_expect (!!(EXPR), true) +# define LL_UNLIKELY(EXPR) __builtin_expect (!!(EXPR), false) +#else +# define LL_LIKELY(EXPR) (EXPR) +# define LL_UNLIKELY(EXPR) (EXPR) +#endif + + // Figure out differences between compilers #if defined(__GNUC__) #define GCC_VERSION (__GNUC__ * 10000 \ diff --git a/indra/llcommon/llprocessor.cpp b/indra/llcommon/llprocessor.cpp index 469e544b16..8a4a4a8f9a 100644 --- a/indra/llcommon/llprocessor.cpp +++ b/indra/llcommon/llprocessor.cpp @@ -281,7 +281,8 @@ bool CProcessor::AnalyzeIntelProcessor() // already have a string here from GetCPUInfo(). JC if ( CPUInfo.uiBrandID < LL_ARRAY_SIZE(INTEL_BRAND) ) { - strcpy(CPUInfo.strBrandID, INTEL_BRAND[CPUInfo.uiBrandID]); + strncpy(CPUInfo.strBrandID, INTEL_BRAND[CPUInfo.uiBrandID], sizeof(CPUInfo.strBrandID)-1); + CPUInfo.strBrandID[sizeof(CPUInfo.strBrandID)-1]='\0'; if (CPUInfo.uiBrandID == 3 && CPUInfo.uiModel == 6) { diff --git a/indra/llcommon/llstring.h b/indra/llcommon/llstring.h index 31e70e0fe4..62cedcde4e 100644 --- a/indra/llcommon/llstring.h +++ b/indra/llcommon/llstring.h @@ -882,6 +882,7 @@ void LLStringUtilBase<T>::addCRLF(std::basic_string<T>& string) } string.assign(t, size); + delete[] t; } } diff --git a/indra/llcommon/lluri.cpp b/indra/llcommon/lluri.cpp index b28657e2f4..0e8f3f0f73 100644 --- a/indra/llcommon/lluri.cpp +++ b/indra/llcommon/lluri.cpp @@ -46,10 +46,21 @@ void encode_character(std::ostream& ostr, std::string::value_type val) { - ostr << "%" << std::uppercase << std::hex << std::setw(2) << std::setfill('0') + ostr << "%" + + << std::uppercase + << std::hex + << std::setw(2) + << std::setfill('0') + // VWR-4010 Cannot cast to U32 because sign-extension on // chars > 128 will result in FFFFFFC3 instead of F3. - << static_cast<S32>(static_cast<U8>(val)); + << static_cast<S32>(static_cast<U8>(val)) + + // reset stream state + << std::nouppercase + << std::dec + << std::setfill(' '); } // static diff --git a/indra/llmath/llinterp.h b/indra/llmath/llinterp.h index 36ca2e9865..88af004170 100644 --- a/indra/llmath/llinterp.h +++ b/indra/llmath/llinterp.h @@ -54,7 +54,7 @@ template <typename Type> class LLInterp { public: - LLInterp(); + LLInterp(); virtual ~LLInterp() {} virtual void start(); @@ -151,6 +151,7 @@ protected: template <typename Type> LLInterp<Type>::LLInterp() +: mStartVal(Type()), mEndVal(Type()), mCurVal(Type()) { mStartTime = 0.f; mEndTime = 1.f; diff --git a/indra/llmath/lloctree.h b/indra/llmath/lloctree.h index ba8776690a..2f34fb1bb0 100644 --- a/indra/llmath/lloctree.h +++ b/indra/llmath/lloctree.h @@ -183,7 +183,6 @@ public: { mMax.mdV[i] = mCenter.mdV[i] + mSize.mdV[i]; mMin.mdV[i] = mCenter.mdV[i] - mSize.mdV[i]; - mCenter.mdV[i] = mCenter.mdV[i]; } } diff --git a/indra/llmessage/llcachename.cpp b/indra/llmessage/llcachename.cpp index 3078d80552..dbec2816c8 100644 --- a/indra/llmessage/llcachename.cpp +++ b/indra/llmessage/llcachename.cpp @@ -125,7 +125,7 @@ private: }; ReplySender::ReplySender(LLMessageSystem* msg) - : mMsg(msg), mPending(false) + : mMsg(msg), mPending(false), mCurrIsGroup(false) { } ReplySender::~ReplySender() diff --git a/indra/llmessage/llmessagetemplateparser.cpp b/indra/llmessage/llmessagetemplateparser.cpp index 283547ea00..2ddbf3e0df 100644 --- a/indra/llmessage/llmessagetemplateparser.cpp +++ b/indra/llmessage/llmessagetemplateparser.cpp @@ -403,6 +403,10 @@ LLTemplateParser::LLTemplateParser(LLTemplateTokenizer & tokens): { mMessages.push_back(templatep); } + else + { + delete templatep; + } } if(!tokens.wantEOF()) diff --git a/indra/llmessage/llnamevalue.cpp b/indra/llmessage/llnamevalue.cpp index 01e922eba2..43429b0ab3 100644 --- a/indra/llmessage/llnamevalue.cpp +++ b/indra/llmessage/llnamevalue.cpp @@ -963,6 +963,7 @@ std::ostream& operator<<(std::ostream& s, const LLNameValue &a) U64_to_str(*a.mNameValueReference.u64, u64_string, sizeof(u64_string)); s << u64_string; } + break; case NVT_VEC3: s << *(a.mNameValueReference.vec3); break; diff --git a/indra/llmessage/lltemplatemessagebuilder.cpp b/indra/llmessage/lltemplatemessagebuilder.cpp index 6400310c46..55379fc6fd 100644 --- a/indra/llmessage/lltemplatemessagebuilder.cpp +++ b/indra/llmessage/lltemplatemessagebuilder.cpp @@ -737,10 +737,14 @@ static S32 buildBlock(U8* buffer, S32 buffer_size, const LLMessageBlock* templat } --block_count; - ++block_iter; + if (block_iter != message_data->mMemberBlocks.end()) { - mbci = block_iter->second; + ++block_iter; + if (block_iter != message_data->mMemberBlocks.end()) + { + mbci = block_iter->second; + } } } diff --git a/indra/llmessage/lltransfermanager.cpp b/indra/llmessage/lltransfermanager.cpp index d67911e8e2..0a71ad95f2 100644 --- a/indra/llmessage/lltransfermanager.cpp +++ b/indra/llmessage/lltransfermanager.cpp @@ -855,6 +855,7 @@ void LLTransferSourceChannel::updateTransfers() break; case LLTS_ERROR: llwarns << "Error in transfer dataCallback!" << llendl; + // fall through case LLTS_DONE: // We need to clean up this transfer source. //llinfos << "LLTransferSourceChannel::updateTransfers() " << tsp->getID() << " done" << llendl; diff --git a/indra/llplugin/llpluginprocesschild.cpp b/indra/llplugin/llpluginprocesschild.cpp index 07fc82c770..11c924cadf 100644 --- a/indra/llplugin/llpluginprocesschild.cpp +++ b/indra/llplugin/llpluginprocesschild.cpp @@ -359,6 +359,7 @@ void LLPluginProcessChild::receiveMessageRaw(const std::string &message) else { LL_WARNS("Plugin") << "Couldn't create a shared memory segment!" << LL_ENDL; + delete region; } } diff --git a/indra/llplugin/slplugin/slplugin.cpp b/indra/llplugin/slplugin/slplugin.cpp index 23dc532ba5..77240ce546 100644 --- a/indra/llplugin/slplugin/slplugin.cpp +++ b/indra/llplugin/slplugin/slplugin.cpp @@ -156,7 +156,7 @@ bool checkExceptionHandler() if (prev_filter == NULL) { ok = FALSE; - if (myWin32ExceptionHandler == NULL) + if (NULL == myWin32ExceptionHandler) { LL_WARNS("AppInit") << "Exception handler uninitialized." << LL_ENDL; } diff --git a/indra/llprimitive/llprimitive.cpp b/indra/llprimitive/llprimitive.cpp index 5ad758072c..b75d1b0f67 100644 --- a/indra/llprimitive/llprimitive.cpp +++ b/indra/llprimitive/llprimitive.cpp @@ -154,6 +154,7 @@ bool LLPrimitive::cleanupVolumeManager() //=============================================================== LLPrimitive::LLPrimitive() : mTextureList(), + mNumTEs(0), mMiscFlags(0) { mPrimitiveCode = 0; diff --git a/indra/llrender/llfontbitmapcache.cpp b/indra/llrender/llfontbitmapcache.cpp index f01878642a..fa231c9e6a 100644 --- a/indra/llrender/llfontbitmapcache.cpp +++ b/indra/llrender/llfontbitmapcache.cpp @@ -64,7 +64,7 @@ void LLFontBitmapCache::init(S32 num_components, LLImageRaw *LLFontBitmapCache::getImageRaw(U32 bitmap_num) const { - if ((bitmap_num < 0) || (bitmap_num >= mImageRawVec.size())) + if (bitmap_num >= mImageRawVec.size()) return NULL; return mImageRawVec[bitmap_num]; @@ -72,7 +72,7 @@ LLImageRaw *LLFontBitmapCache::getImageRaw(U32 bitmap_num) const LLImageGL *LLFontBitmapCache::getImageGL(U32 bitmap_num) const { - if ((bitmap_num < 0) || (bitmap_num >= mImageGLVec.size())) + if (bitmap_num >= mImageGLVec.size()) return NULL; return mImageGLVec[bitmap_num]; diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp index cd493481d5..8bcc4723ae 100644 --- a/indra/llrender/llimagegl.cpp +++ b/indra/llrender/llimagegl.cpp @@ -436,6 +436,8 @@ void LLImageGL::init(BOOL usemipmaps) mLastBindTime = 0.f; mPickMask = NULL; + mPickMaskWidth = 0; + mPickMaskHeight = 0; mUseMipMaps = usemipmaps; mHasExplicitFormat = FALSE; mAutoGenMips = FALSE; @@ -527,7 +529,12 @@ void LLImageGL::setSize(S32 width, S32 height, S32 ncomponents) // llwarns << "Setting Size of LLImageGL with existing mTexName = " << mTexName << llendl; destroyGLTexture(); } - + + // pickmask validity depends on old image size, delete it + delete [] mPickMask; + mPickMask = NULL; + mPickMaskWidth = mPickMaskHeight = 0; + mWidth = width; mHeight = height; mComponents = ncomponents; @@ -1675,12 +1682,14 @@ void LLImageGL::updatePickMask(S32 width, S32 height, const U8* data_in) return ; } + delete [] mPickMask; + mPickMask = NULL; + mPickMaskWidth = mPickMaskHeight = 0; + if (mFormatType != GL_UNSIGNED_BYTE || mFormatPrimary != GL_RGBA) { //cannot generate a pick mask for this texture - delete [] mPickMask; - mPickMask = NULL; return; } @@ -1688,11 +1697,10 @@ void LLImageGL::updatePickMask(S32 width, S32 height, const U8* data_in) U32 pick_height = height/2; U32 size = llmax(pick_width, (U32) 1) * llmax(pick_height, (U32) 1); - size = size/8 + 1; - - delete[] mPickMask; mPickMask = new U8[size]; + mPickMaskWidth = pick_width; + mPickMaskHeight = pick_height; memset(mPickMask, 0, sizeof(U8) * size); @@ -1708,10 +1716,7 @@ void LLImageGL::updatePickMask(S32 width, S32 height, const U8* data_in) { U32 pick_idx = pick_bit/8; U32 pick_offset = pick_bit%8; - if (pick_idx >= size) - { - llerrs << "WTF?" << llendl; - } + llassert(pick_idx < size); mPickMask[pick_idx] |= 1 << pick_offset; } @@ -1727,35 +1732,34 @@ BOOL LLImageGL::getMask(const LLVector2 &tc) if (mPickMask) { - S32 width = getWidth()/2; - S32 height = getHeight()/2; - F32 u = tc.mV[0] - floorf(tc.mV[0]); F32 v = tc.mV[1] - floorf(tc.mV[1]); - if (u < 0.f || u > 1.f || - v < 0.f || v > 1.f) + if (LL_UNLIKELY(u < 0.f || u > 1.f || + v < 0.f || v > 1.f)) { LL_WARNS_ONCE("render") << "Ugh, u/v out of range in image mask pick" << LL_ENDL; u = v = 0.f; llassert(false); } + + llassert(mPickMaskWidth > 0 && mPickMaskHeight > 0); - S32 x = (S32)(u * width); - S32 y = (S32)(v * height); + S32 x = (S32)(u * mPickMaskWidth); + S32 y = (S32)(v * mPickMaskHeight); - if (x >= width) + if (LL_UNLIKELY(x >= mPickMaskWidth)) { LL_WARNS_ONCE("render") << "Ooh, width overrun on pick mask read, that coulda been bad." << LL_ENDL; - x = llmax(0, width-1); + x = llmax(0, mPickMaskWidth-1); } - if (y >= height) + if (LL_UNLIKELY(y >= mPickMaskHeight)) { LL_WARNS_ONCE("render") << "Ooh, height overrun on pick mask read, that woulda been bad." << LL_ENDL; - y = llmax(0, height-1); + y = llmax(0, mPickMaskHeight-1); } - S32 idx = y*width+x; + S32 idx = y*mPickMaskWidth+x; S32 offset = idx%8; res = mPickMask[idx/8] & (1 << offset) ? TRUE : FALSE; diff --git a/indra/llrender/llimagegl.h b/indra/llrender/llimagegl.h index facfb7bd62..f0870c3fc4 100644 --- a/indra/llrender/llimagegl.h +++ b/indra/llrender/llimagegl.h @@ -193,6 +193,8 @@ public: private: LLPointer<LLImageRaw> mSaveData; // used for destroyGL/restoreGL U8* mPickMask; //downsampled bitmap approximation of alpha channel. NULL if no alpha channel + U16 mPickMaskWidth; + U16 mPickMaskHeight; S8 mUseMipMaps; S8 mHasExplicitFormat; // If false (default), GL format is f(mComponents) S8 mAutoGenMips; diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp index 572ae13909..ecfe845b34 100644 --- a/indra/llrender/llvertexbuffer.cpp +++ b/indra/llrender/llvertexbuffer.cpp @@ -237,7 +237,7 @@ void LLVertexBuffer::drawRange(U32 mode, U32 start, U32 end, U32 count, U32 indi llerrs << "Wrong vertex buffer bound." << llendl; } - if (mode > LLRender::NUM_MODES) + if (mode >= LLRender::NUM_MODES) { llerrs << "Invalid draw mode: " << mode << llendl; return; @@ -267,7 +267,7 @@ void LLVertexBuffer::draw(U32 mode, U32 count, U32 indices_offset) const llerrs << "Wrong vertex buffer bound." << llendl; } - if (mode > LLRender::NUM_MODES) + if (mode >= LLRender::NUM_MODES) { llerrs << "Invalid draw mode: " << mode << llendl; return; @@ -292,7 +292,7 @@ void LLVertexBuffer::drawArrays(U32 mode, U32 first, U32 count) const llerrs << "Wrong vertex buffer bound." << llendl; } - if (mode > LLRender::NUM_MODES) + if (mode >= LLRender::NUM_MODES) { llerrs << "Invalid draw mode: " << mode << llendl; return; diff --git a/indra/llui/llaccordionctrl.cpp b/indra/llui/llaccordionctrl.cpp index b5e870228a..d0c73fbfbc 100644 --- a/indra/llui/llaccordionctrl.cpp +++ b/indra/llui/llaccordionctrl.cpp @@ -63,6 +63,8 @@ static LLDefaultChildRegistry::Register<LLAccordionCtrl> t2("accordion"); LLAccordionCtrl::LLAccordionCtrl(const Params& params):LLPanel(params) , mFitParent(params.fit_parent) + , mAutoScrolling( false ) + , mAutoScrollRate( 0.f ) { mSingleExpansion = params.single_expansion; if(mFitParent && !mSingleExpansion) @@ -72,6 +74,8 @@ LLAccordionCtrl::LLAccordionCtrl(const Params& params):LLPanel(params) } LLAccordionCtrl::LLAccordionCtrl() : LLPanel() + , mAutoScrolling( false ) + , mAutoScrollRate( 0.f ) { mSingleExpansion = false; mFitParent = false; @@ -81,6 +85,19 @@ LLAccordionCtrl::LLAccordionCtrl() : LLPanel() //--------------------------------------------------------------------------------- void LLAccordionCtrl::draw() { + if (mAutoScrolling) + { + // add acceleration to autoscroll + mAutoScrollRate = llmin(mAutoScrollRate + (LLFrameTimer::getFrameDeltaTimeF32() * AUTO_SCROLL_RATE_ACCEL), MAX_AUTO_SCROLL_RATE); + } + else + { + // reset to minimum for next time + mAutoScrollRate = MIN_AUTO_SCROLL_RATE; + } + // clear this flag to be set on next call to autoScroll + mAutoScrolling = false; + LLRect local_rect(0, getRect().getHeight(), getRect().getWidth(), 0); LLLocalClipRect clip(local_rect); @@ -420,6 +437,64 @@ BOOL LLAccordionCtrl::handleKeyHere (KEY key, MASK mask) return LLPanel::handleKeyHere(key,mask); } +BOOL LLAccordionCtrl::handleDragAndDrop (S32 x, S32 y, MASK mask, + BOOL drop, + EDragAndDropType cargo_type, + void* cargo_data, + EAcceptance* accept, + std::string& tooltip_msg) +{ + // Scroll folder view if needed. Never accepts a drag or drop. + *accept = ACCEPT_NO; + BOOL handled = autoScroll(x, y); + + if( !handled ) + { + handled = childrenHandleDragAndDrop(x, y, mask, drop, cargo_type, + cargo_data, accept, tooltip_msg) != NULL; + } + return TRUE; +} + +BOOL LLAccordionCtrl::autoScroll (S32 x, S32 y) +{ + static LLUICachedControl<S32> scrollbar_size ("UIScrollbarSize", 0); + + bool scrolling = false; + if( mScrollbar->getVisible() ) + { + LLRect rect_local( 0, getRect().getHeight(), getRect().getWidth() - scrollbar_size, 0 ); + LLRect screen_local_extents; + + // clip rect against root view + screenRectToLocal(getRootView()->getLocalRect(), &screen_local_extents); + rect_local.intersectWith(screen_local_extents); + + // autoscroll region should take up no more than one third of visible scroller area + S32 auto_scroll_region_height = llmin(rect_local.getHeight() / 3, 10); + S32 auto_scroll_speed = llround(mAutoScrollRate * LLFrameTimer::getFrameDeltaTimeF32()); + + LLRect bottom_scroll_rect = screen_local_extents; + bottom_scroll_rect.mTop = rect_local.mBottom + auto_scroll_region_height; + if( bottom_scroll_rect.pointInRect( x, y ) && (mScrollbar->getDocPos() < mScrollbar->getDocPosMax()) ) + { + mScrollbar->setDocPos( mScrollbar->getDocPos() + auto_scroll_speed ); + mAutoScrolling = true; + scrolling = true; + } + + LLRect top_scroll_rect = screen_local_extents; + top_scroll_rect.mBottom = rect_local.mTop - auto_scroll_region_height; + if( top_scroll_rect.pointInRect( x, y ) && (mScrollbar->getDocPos() > 0) ) + { + mScrollbar->setDocPos( mScrollbar->getDocPos() - auto_scroll_speed ); + mAutoScrolling = true; + scrolling = true; + } + } + return scrolling; +} + void LLAccordionCtrl::updateLayout (S32 width, S32 height) { S32 panel_top = height - BORDER_MARGIN ; diff --git a/indra/llui/llaccordionctrl.h b/indra/llui/llaccordionctrl.h index 4cb0f38281..d57a42df32 100644 --- a/indra/llui/llaccordionctrl.h +++ b/indra/llui/llaccordionctrl.h @@ -81,6 +81,11 @@ public: virtual BOOL handleRightMouseDown ( S32 x, S32 y, MASK mask); virtual BOOL handleScrollWheel ( S32 x, S32 y, S32 clicks ); virtual BOOL handleKeyHere (KEY key, MASK mask); + virtual BOOL handleDragAndDrop (S32 x, S32 y, MASK mask, BOOL drop, + EDragAndDropType cargo_type, + void* cargo_data, + EAcceptance* accept, + std::string& tooltip_msg); // // Call reshape after changing splitter's size @@ -112,11 +117,15 @@ private: void showScrollbar (S32 width, S32 height); void hideScrollbar (S32 width, S32 height); + BOOL autoScroll (S32 x, S32 y); + private: LLRect mInnerRect; LLScrollbar* mScrollbar; bool mSingleExpansion; bool mFitParent; + bool mAutoScrolling; + F32 mAutoScrollRate; }; diff --git a/indra/llui/llaccordionctrltab.cpp b/indra/llui/llaccordionctrltab.cpp index 4bfe44135a..daa9e08f14 100644 --- a/indra/llui/llaccordionctrltab.cpp +++ b/indra/llui/llaccordionctrltab.cpp @@ -45,6 +45,7 @@ static const std::string DD_HEADER_NAME = "dd_header"; static const S32 HEADER_HEIGHT = 20; static const S32 HEADER_IMAGE_LEFT_OFFSET = 5; static const S32 HEADER_TEXT_LEFT_OFFSET = 30; +static const F32 AUTO_OPEN_TIME = 1.f; static LLDefaultChildRegistry::Register<LLAccordionCtrlTab> t1("accordion_tab"); @@ -73,6 +74,11 @@ public: virtual void onMouseEnter(S32 x, S32 y, MASK mask); virtual void onMouseLeave(S32 x, S32 y, MASK mask); virtual BOOL handleKey(KEY key, MASK mask, BOOL called_from_parent); + virtual BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, + EDragAndDropType cargo_type, + void* cargo_data, + EAcceptance* accept, + std::string& tooltip_msg); private: LLTextBox* mHeaderTextbox; @@ -92,6 +98,8 @@ private: LLUIColor mHeaderBGColor; bool mNeedsHighlight; + + LLFrameTimer mAutoOpenTimer; }; LLAccordionCtrlTab::LLAccordionCtrlTabHeader::Params::Params() @@ -209,6 +217,7 @@ void LLAccordionCtrlTab::LLAccordionCtrlTabHeader::onMouseLeave(S32 x, S32 y, MA { LLUICtrl::onMouseLeave(x, y, mask); mNeedsHighlight = false; + mAutoOpenTimer.stop(); } BOOL LLAccordionCtrlTab::LLAccordionCtrlTabHeader::handleKey(KEY key, MASK mask, BOOL called_from_parent) { @@ -218,8 +227,33 @@ BOOL LLAccordionCtrlTab::LLAccordionCtrlTabHeader::handleKey(KEY key, MASK mask, } return LLUICtrl::handleKey(key, mask, called_from_parent); } +BOOL LLAccordionCtrlTab::LLAccordionCtrlTabHeader::handleDragAndDrop(S32 x, S32 y, MASK mask, + BOOL drop, + EDragAndDropType cargo_type, + void* cargo_data, + EAcceptance* accept, + std::string& tooltip_msg) +{ + LLAccordionCtrlTab* parent = dynamic_cast<LLAccordionCtrlTab*>(getParent()); + if ( parent && !parent->getDisplayChildren() && parent->getCollapsible() && parent->canOpenClose() ) + { + if (mAutoOpenTimer.getStarted()) + { + if (mAutoOpenTimer.getElapsedTimeF32() > AUTO_OPEN_TIME) + { + parent->changeOpenClose(false); + mAutoOpenTimer.stop(); + return TRUE; + } + } + else + mAutoOpenTimer.start(); + } + return LLUICtrl::handleDragAndDrop(x, y, mask, drop, cargo_type, + cargo_data, accept, tooltip_msg); +} LLAccordionCtrlTab::Params::Params() : title("title") ,display_children("expanded", true) diff --git a/indra/llui/llaccordionctrltab.h b/indra/llui/llaccordionctrltab.h index b200d43438..2e0260ab16 100644 --- a/indra/llui/llaccordionctrltab.h +++ b/indra/llui/llaccordionctrltab.h @@ -115,6 +115,7 @@ public: void changeOpenClose(bool is_open); void canOpenClose(bool can_open_close) { mCanOpenClose = can_open_close;}; + bool canOpenClose() const { return mCanOpenClose; }; virtual BOOL postBuild(); diff --git a/indra/llui/llbutton.cpp b/indra/llui/llbutton.cpp index 9ce8ce8d55..4944ed4fe7 100644 --- a/indra/llui/llbutton.cpp +++ b/indra/llui/llbutton.cpp @@ -81,6 +81,10 @@ LLButton::Params::Params() image_pressed_selected("image_pressed_selected"), image_overlay("image_overlay"), image_overlay_alignment("image_overlay_alignment", std::string("center")), + image_left_pad("image_left_pad"), + image_right_pad("image_right_pad"), + image_top_pad("image_top_pad"), + image_bottom_pad("image_bottom_pad"), label_color("label_color"), label_color_selected("label_color_selected"), // requires is_toggle true label_color_disabled("label_color_disabled"), @@ -140,6 +144,10 @@ LLButton::LLButton(const LLButton::Params& p) mImageOverlay(p.image_overlay()), mImageOverlayColor(p.image_overlay_color()), mImageOverlayAlignment(LLFontGL::hAlignFromName(p.image_overlay_alignment)), + mImageOverlayLeftPad(p.image_left_pad), + mImageOverlayRightPad(p.image_right_pad), + mImageOverlayTopPad(p.image_top_pad), + mImageOverlayBottomPad(p.image_bottom_pad), mIsToggle(p.is_toggle), mScaleImage(p.scale_image), mDropShadowedText(p.label_shadow), @@ -763,6 +771,12 @@ void LLButton::draw() center_x++; } + S32 text_width_delta = overlay_width + 1; + // if image paddings set, they should participate in scaling process + S32 image_size_delta = mImageOverlayTopPad + mImageOverlayBottomPad; + overlay_width = overlay_width - image_size_delta; + overlay_height = overlay_height - image_size_delta; + // fade out overlay images on disabled buttons LLColor4 overlay_color = mImageOverlayColor.get(); if (!enabled) @@ -774,8 +788,8 @@ void LLButton::draw() switch(mImageOverlayAlignment) { case LLFontGL::LEFT: - text_left += overlay_width + 1; - text_width -= overlay_width + 1; + text_left += overlay_width + mImageOverlayRightPad + 1; + text_width -= text_width_delta; mImageOverlay->draw( mLeftHPad, center_y - (overlay_height / 2), @@ -792,8 +806,8 @@ void LLButton::draw() overlay_color); break; case LLFontGL::RIGHT: - text_right -= overlay_width + 1; - text_width -= overlay_width + 1; + text_right -= overlay_width + mImageOverlayLeftPad+ 1; + text_width -= text_width_delta; mImageOverlay->draw( getRect().getWidth() - mRightHPad - overlay_width, center_y - (overlay_height / 2), diff --git a/indra/llui/llbutton.h b/indra/llui/llbutton.h index cd149e3113..8e5f19602f 100644 --- a/indra/llui/llbutton.h +++ b/indra/llui/llbutton.h @@ -106,6 +106,12 @@ public: Optional<S32> pad_left; Optional<S32> pad_bottom; // under text label + //image overlay paddings + Optional<S32> image_left_pad; + Optional<S32> image_right_pad; + Optional<S32> image_top_pad; + Optional<S32> image_bottom_pad; + // callbacks Optional<CommitCallbackParam> click_callback, // alias -> commit_callback mouse_down_callback, @@ -186,6 +192,15 @@ public: void setLeftHPad( S32 pad ) { mLeftHPad = pad; } void setRightHPad( S32 pad ) { mRightHPad = pad; } + void setImageOverlayLeftPad( S32 pad ) { mImageOverlayLeftPad = pad; } + S32 getImageOverlayLeftPad() const { return mImageOverlayLeftPad; } + void setImageOverlayRightPad( S32 pad ) { mImageOverlayRightPad = pad; } + S32 getImageOverlayRightPad() const { return mImageOverlayRightPad; } + void setImageOverlayTopPad( S32 pad ) { mImageOverlayTopPad = pad; } + S32 getImageOverlayTopPad() const { return mImageOverlayTopPad; } + void setImageOverlayBottomPad( S32 pad ) { mImageOverlayBottomPad = pad; } + S32 getImageOverlayBottomPad() const { return mImageOverlayBottomPad; } + const std::string getLabelUnselected() const { return wstring_to_utf8str(mUnselectedLabel); } const std::string getLabelSelected() const { return wstring_to_utf8str(mSelectedLabel); } @@ -313,6 +328,11 @@ private: S32 mRightHPad; S32 mBottomVPad; // under text label + S32 mImageOverlayLeftPad; + S32 mImageOverlayRightPad; + S32 mImageOverlayTopPad; + S32 mImageOverlayBottomPad; + F32 mHoverGlowStrength; F32 mCurGlowStrength; diff --git a/indra/llui/llcombobox.cpp b/indra/llui/llcombobox.cpp index f29e8785eb..9d23daf56d 100644 --- a/indra/llui/llcombobox.cpp +++ b/indra/llui/llcombobox.cpp @@ -103,7 +103,8 @@ LLComboBox::LLComboBox(const LLComboBox::Params& p) mPrearrangeCallback(p.prearrange_callback()), mTextEntryCallback(p.text_entry_callback()), mListPosition(p.list_position), - mLastSelectedIndex(-1) + mLastSelectedIndex(-1), + mLabel(p.label) { // Text label button @@ -490,6 +491,7 @@ void LLComboBox::createLineEditor(const LLComboBox::Params& p) params.handle_edit_keys_directly(true); params.commit_on_focus_lost(false); params.follows.flags(FOLLOWS_ALL); + params.label(mLabel); mTextEntry = LLUICtrlFactory::create<LLLineEditor> (params); mTextEntry->setText(cur_label); mTextEntry->setIgnoreTab(TRUE); @@ -505,7 +507,8 @@ void LLComboBox::createLineEditor(const LLComboBox::Params& p) mButton->setRect(rect); mButton->setTabStop(TRUE); mButton->setHAlign(LLFontGL::LEFT); - + mButton->setLabel(mLabel.getString()); + if (mTextEntry) { mTextEntry->setVisible(FALSE); @@ -633,7 +636,7 @@ void LLComboBox::hideList() if(mLastSelectedIndex >= 0) mList->selectNthItem(mLastSelectedIndex); } - else + else if(mLastSelectedIndex >= 0) mList->selectNthItem(mLastSelectedIndex); mButton->setToggleState(FALSE); diff --git a/indra/llui/lldraghandle.cpp b/indra/llui/lldraghandle.cpp index a93c666648..832f148902 100644 --- a/indra/llui/lldraghandle.cpp +++ b/indra/llui/lldraghandle.cpp @@ -113,6 +113,7 @@ void LLDragHandleTop::setTitle(const std::string& title) params.follows.flags(FOLLOWS_TOP | FOLLOWS_LEFT | FOLLOWS_RIGHT); params.font_shadow(LLFontGL::DROP_SHADOW_SOFT); params.use_ellipses = true; + params.allow_html = false; //cancel URL replacement in floater title mTitleBox = LLUICtrlFactory::create<LLTextBox> (params); addChild( mTitleBox ); } diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp index 79d8f90fec..de46d89d6f 100644 --- a/indra/llui/llfloater.cpp +++ b/indra/llui/llfloater.cpp @@ -1916,9 +1916,10 @@ static LLDefaultChildRegistry::Register<LLFloaterView> r("floater_view"); LLFloaterView::LLFloaterView (const Params& p) : LLUICtrl (p), + mFocusCycleMode(FALSE), - mSnapOffsetBottom(0) - ,mSnapOffsetRight(0) + mSnapOffsetBottom(0), + mSnapOffsetRight(0) { } diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h index f70495c0f0..8c9dacbd20 100644 --- a/indra/llui/llfloater.h +++ b/indra/llui/llfloater.h @@ -468,9 +468,6 @@ public: void setSnapOffsetRight(S32 offset) { mSnapOffsetRight = offset; } private: - S32 mColumn; - S32 mNextLeft; - S32 mNextTop; BOOL mFocusCycleMode; S32 mSnapOffsetBottom; S32 mSnapOffsetRight; diff --git a/indra/llui/lllineeditor.cpp b/indra/llui/lllineeditor.cpp index 73e4d126f3..cb5aea272d 100644 --- a/indra/llui/lllineeditor.cpp +++ b/indra/llui/lllineeditor.cpp @@ -70,6 +70,8 @@ const S32 SCROLL_INCREMENT_DEL = 4; // make space for baskspacing const F32 AUTO_SCROLL_TIME = 0.05f; const F32 TRIPLE_CLICK_INTERVAL = 0.3f; // delay between double and triple click. *TODO: make this equal to the double click interval? +const std::string PASSWORD_ASTERISK( "\xE2\x97\x8F" ); // U+25CF BLACK CIRCLE + static LLDefaultChildRegistry::Register<LLLineEditor> r1("line_editor"); // Compiler optimization, generate extern template @@ -401,7 +403,7 @@ void LLLineEditor::setCursorAtLocalPos( S32 local_mouse_x ) { for (S32 i = 0; i < mText.length(); i++) { - asterix_text += '*'; + asterix_text += utf8str_to_wstring(PASSWORD_ASTERISK); } wtext = asterix_text.c_str(); } @@ -1599,7 +1601,7 @@ void LLLineEditor::draw() std::string text; for (S32 i = 0; i < mText.length(); i++) { - text += '*'; + text += PASSWORD_ASTERISK; } mText = text; } diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp index c172a2b714..7fa9a88059 100644 --- a/indra/llui/llmenugl.cpp +++ b/indra/llui/llmenugl.cpp @@ -1651,6 +1651,7 @@ LLMenuGL::LLMenuGL(const LLMenuGL::Params& p) mBackgroundColor( p.bg_color() ), mBgVisible( p.bg_visible ), mDropShadowed( p.drop_shadow ), + mHasSelection(false), mHorizontalLayout( p.horizontal_layout ), mScrollable(mHorizontalLayout ? FALSE : p.scrollable), // Scrolling is supported only for vertical layout mMaxScrollableItems(p.max_scrollable_items), @@ -1875,17 +1876,21 @@ void LLMenuGL::scrollItemsDown() item_list_t::iterator next_item_iter; - for (next_item_iter = ++cur_item_iter; next_item_iter != mItems.end(); next_item_iter++) + if (cur_item_iter != mItems.end()) { - if( (*next_item_iter)->getVisible()) + for (next_item_iter = ++cur_item_iter; next_item_iter != mItems.end(); next_item_iter++) { - break; + if( (*next_item_iter)->getVisible()) + { + break; + } + } + + if (next_item_iter != mItems.end() && + (*next_item_iter)->getVisible()) + { + mFirstVisibleItem = *next_item_iter; } - } - - if ((*next_item_iter)->getVisible()) - { - mFirstVisibleItem = *next_item_iter; } mNeedsArrange = TRUE; @@ -2809,7 +2814,7 @@ BOOL LLMenuGL::handleHover( S32 x, S32 y, MASK mask ) ((LLMenuItemGL*)viewp)->setHighlight(TRUE); LLMenuGL::setKeyboardMode(FALSE); } - mHasSelection = TRUE; + mHasSelection = true; } } } @@ -2888,7 +2893,7 @@ void LLMenuGL::setVisible(BOOL visible) } else { - mHasSelection = FALSE; + mHasSelection = true; mFadeTimer.stop(); } diff --git a/indra/llui/llmenugl.h b/indra/llui/llmenugl.h index 61e06f9e5f..8441aaadd4 100644 --- a/indra/llui/llmenugl.h +++ b/indra/llui/llmenugl.h @@ -546,7 +546,7 @@ private: LLHandle<LLView> mParentMenuItem; LLUIString mLabel; BOOL mDropShadowed; // Whether to drop shadow - BOOL mHasSelection; + bool mHasSelection; LLFrameTimer mFadeTimer; LLTimer mScrollItemsTimer; BOOL mTornOff; diff --git a/indra/llui/llnotifications.cpp b/indra/llui/llnotifications.cpp index 86989012ee..a67094b8ce 100644 --- a/indra/llui/llnotifications.cpp +++ b/indra/llui/llnotifications.cpp @@ -1058,6 +1058,7 @@ LLNotificationChannelPtr LLNotifications::getChannel(const std::string& channelN if(p == mChannels.end()) { llerrs << "Did not find channel named " << channelName << llendl; + return LLNotificationChannelPtr(); } return p->second; } diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp index 4e84013db0..478e270c98 100644 --- a/indra/llui/llscrolllistctrl.cpp +++ b/indra/llui/llscrolllistctrl.cpp @@ -498,7 +498,7 @@ void LLScrollListCtrl::fitContents(S32 max_width, S32 max_height) { S32 height = llmin( getRequiredRect().getHeight(), max_height ); if(mPageLines) - height = llmin( mPageLines * mLineHeight + (mDisplayColumnHeaders ? mHeadingHeight : 0), height ); + height = llmin( mPageLines * mLineHeight + 2*mBorderThickness + (mDisplayColumnHeaders ? mHeadingHeight : 0), height ); S32 width = getRect().getWidth(); @@ -1534,7 +1534,7 @@ LLRect LLScrollListCtrl::getCellRect(S32 row_index, S32 column_index) S32 rect_bottom = getRowOffsetFromIndex(row_index); LLScrollListColumn* columnp = getColumn(column_index); cell_rect.setOriginAndSize(rect_left, rect_bottom, - rect_left + columnp->getWidth(), mLineHeight); + /*rect_left + */columnp->getWidth(), mLineHeight); return cell_rect; } @@ -2760,9 +2760,13 @@ LLScrollListItem* LLScrollListCtrl::addElement(const LLSD& element, EAddPosition LLScrollListItem* LLScrollListCtrl::addRow(const LLScrollListItem::Params& item_p, EAddPosition pos) { - if (!item_p.validateBlock()) return NULL; - LLScrollListItem *new_item = new LLScrollListItem(item_p); + return addRow(new_item, item_p, pos); +} + +LLScrollListItem* LLScrollListCtrl::addRow(LLScrollListItem *new_item, const LLScrollListItem::Params& item_p, EAddPosition pos) +{ + if (!item_p.validateBlock() || !new_item) return NULL; new_item->setNumColumns(mColumns.size()); // Add any columns we don't already have diff --git a/indra/llui/llscrolllistctrl.h b/indra/llui/llscrolllistctrl.h index 907dc90bea..d2d2379328 100644 --- a/indra/llui/llscrolllistctrl.h +++ b/indra/llui/llscrolllistctrl.h @@ -148,6 +148,7 @@ public: // "columns" => [ "column" => column name, "value" => value, "type" => type, "font" => font, "font-style" => style ], "id" => uuid // Creates missing columns automatically. virtual LLScrollListItem* addElement(const LLSD& element, EAddPosition pos = ADD_BOTTOM, void* userdata = NULL); + virtual LLScrollListItem* addRow(LLScrollListItem *new_item, const LLScrollListItem::Params& value, EAddPosition pos = ADD_BOTTOM); virtual LLScrollListItem* addRow(const LLScrollListItem::Params& value, EAddPosition pos = ADD_BOTTOM); // Simple add element. Takes a single array of: // [ "value" => value, "font" => font, "font-style" => style ] diff --git a/indra/llui/llscrolllistitem.h b/indra/llui/llscrolllistitem.h index 15b86cc945..25ce846d90 100644 --- a/indra/llui/llscrolllistitem.h +++ b/indra/llui/llscrolllistitem.h @@ -95,7 +95,7 @@ public: void setUserdata( void* userdata ) { mUserdata = userdata; } void* getUserdata() const { return mUserdata; } - LLUUID getUUID() const { return mItemValue.asUUID(); } + virtual LLUUID getUUID() const { return mItemValue.asUUID(); } LLSD getValue() const { return mItemValue; } void setRect(LLRect rect) { mRectangle = rect; } diff --git a/indra/llui/llstyle.cpp b/indra/llui/llstyle.cpp index 71511f69a4..b8f93b6a0e 100644 --- a/indra/llui/llstyle.cpp +++ b/indra/llui/llstyle.cpp @@ -49,7 +49,10 @@ LLStyle::Params::Params() LLStyle::LLStyle(const LLStyle::Params& p) -: mVisible(p.visible), +: mItalic(FALSE), + mBold(FALSE), + mUnderline(FALSE), + mVisible(p.visible), mColor(p.color()), mReadOnlyColor(p.readonly_color()), mFont(p.font()), diff --git a/indra/llui/lltabcontainer.cpp b/indra/llui/lltabcontainer.cpp index 43c44f2253..6be76605fd 100644 --- a/indra/llui/lltabcontainer.cpp +++ b/indra/llui/lltabcontainer.cpp @@ -1373,6 +1373,8 @@ BOOL LLTabContainer::setTab(S32 which) { LLTabTuple* tuple = *iter; BOOL is_selected = ( tuple == selected_tuple ); + tuple->mButton->setUseEllipses(TRUE); + tuple->mButton->setHAlign(LLFontGL::LEFT); tuple->mTabPanel->setVisible( is_selected ); // tuple->mTabPanel->setFocus(is_selected); // not clear that we want to do this here. tuple->mButton->setToggleState( is_selected ); @@ -1478,63 +1480,54 @@ void LLTabContainer::setTabPanelFlashing(LLPanel* child, BOOL state ) void LLTabContainer::setTabImage(LLPanel* child, std::string image_name, const LLColor4& color) { - static LLUICachedControl<S32> tab_padding ("UITabPadding", 0); LLTabTuple* tuple = getTabByPanel(child); if( tuple ) { - tuple->mButton->setImageOverlay(image_name, LLFontGL::RIGHT, color); - - if (!mIsVertical) - { - // remove current width from total tab strip width - mTotalTabWidth -= tuple->mButton->getRect().getWidth(); - - S32 image_overlay_width = tuple->mButton->getImageOverlay().notNull() ? - tuple->mButton->getImageOverlay()->getImage()->getWidth(0) : - 0; - - tuple->mPadding = image_overlay_width; - - tuple->mButton->setRightHPad(6); - tuple->mButton->reshape(llclamp(mFont->getWidth(tuple->mButton->getLabelSelected()) + tab_padding + tuple->mPadding, mMinTabWidth, mMaxTabWidth), - tuple->mButton->getRect().getHeight()); - // add back in button width to total tab strip width - mTotalTabWidth += tuple->mButton->getRect().getWidth(); - - // tabs have changed size, might need to scroll to see current tab - updateMaxScrollPos(); - } + tuple->mButton->setImageOverlay(image_name, LLFontGL::LEFT, color); + reshape_tuple(tuple); } } void LLTabContainer::setTabImage(LLPanel* child, const LLUUID& image_id, const LLColor4& color) { - static LLUICachedControl<S32> tab_padding ("UITabPadding", 0); LLTabTuple* tuple = getTabByPanel(child); if( tuple ) { - tuple->mButton->setImageOverlay(image_id, LLFontGL::RIGHT, color); + tuple->mButton->setImageOverlay(image_id, LLFontGL::LEFT, color); + reshape_tuple(tuple); + } +} - if (!mIsVertical) - { - // remove current width from total tab strip width - mTotalTabWidth -= tuple->mButton->getRect().getWidth(); +void LLTabContainer::reshape_tuple(LLTabTuple* tuple) +{ + static LLUICachedControl<S32> tab_padding ("UITabPadding", 0); + static LLUICachedControl<S32> image_left_padding ("UIButtonImageLeftPadding", 4); + static LLUICachedControl<S32> image_right_padding ("UIButtonImageRightPadding", 4); + static LLUICachedControl<S32> image_top_padding ("UIButtonImageTopPadding", 2); + static LLUICachedControl<S32> image_bottom_padding ("UIButtonImageBottomPadding", 2); - S32 image_overlay_width = tuple->mButton->getImageOverlay().notNull() ? - tuple->mButton->getImageOverlay()->getImage()->getWidth(0) : - 0; + if (!mIsVertical) + { + tuple->mButton->setImageOverlayLeftPad(image_left_padding); + tuple->mButton->setImageOverlayRightPad(image_right_padding); + tuple->mButton->setImageOverlayTopPad(image_top_padding); + tuple->mButton->setImageOverlayBottomPad(image_bottom_padding); - tuple->mPadding = image_overlay_width; + // remove current width from total tab strip width + mTotalTabWidth -= tuple->mButton->getRect().getWidth(); - tuple->mButton->setRightHPad(6); - tuple->mButton->reshape(llclamp(mFont->getWidth(tuple->mButton->getLabelSelected()) + tab_padding + tuple->mPadding, mMinTabWidth, mMaxTabWidth), - tuple->mButton->getRect().getHeight()); - // add back in button width to total tab strip width - mTotalTabWidth += tuple->mButton->getRect().getWidth(); + S32 image_overlay_width = tuple->mButton->getImageOverlay().notNull() ? + tuple->mButton->getImageOverlay()->getImage()->getWidth(0) : 0; - // tabs have changed size, might need to scroll to see current tab - updateMaxScrollPos(); - } + tuple->mPadding = image_overlay_width; + + tuple->mButton->reshape(llclamp(mFont->getWidth(tuple->mButton->getLabelSelected()) + tab_padding + tuple->mPadding, mMinTabWidth, mMaxTabWidth), + tuple->mButton->getRect().getHeight()); + // add back in button width to total tab strip width + mTotalTabWidth += tuple->mButton->getRect().getWidth(); + + // tabs have changed size, might need to scroll to see current tab + updateMaxScrollPos(); } } @@ -1597,7 +1590,10 @@ void LLTabContainer::onTabBtn( const LLSD& data, LLPanel* panel ) LLTabTuple* tuple = getTabByPanel(panel); selectTabPanel( panel ); - tuple->mTabPanel->setFocus(TRUE); + if (tuple) + { + tuple->mTabPanel->setFocus(TRUE); + } } void LLTabContainer::onNextBtn( const LLSD& data ) diff --git a/indra/llui/lltabcontainer.h b/indra/llui/lltabcontainer.h index 33c49e0d6f..2a55877d3c 100644 --- a/indra/llui/lltabcontainer.h +++ b/indra/llui/lltabcontainer.h @@ -228,6 +228,7 @@ private: // updates tab button images given the tuple, tab position and the corresponding params void update_images(LLTabTuple* tuple, TabParams params, LLTabContainer::TabPosition pos); + void reshape_tuple(LLTabTuple* tuple); // Variables diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp index 47db990a37..8abbc833e5 100644 --- a/indra/llui/lltextbase.cpp +++ b/indra/llui/lltextbase.cpp @@ -244,7 +244,8 @@ LLTextBase::LLTextBase(const LLTextBase::Params &p) LLTextBase::~LLTextBase() { - delete mPopupMenu; + // Menu, like any other LLUICtrl, is deleted by its parent - gMenuHolder + clearSegments(); } @@ -1511,6 +1512,25 @@ void LLTextBase::setText(const LLStringExplicit &utf8str, const LLStyle::Params& onValueChange(0, getLength()); } +void LLTextBase::addBlackListUrl(const std::string &url) +{ + mBlackListUrls.push_back(url); +} + +bool LLTextBase::isBlackListUrl(const std::string &url) const +{ + std::vector<std::string>::const_iterator it; + for (it = mBlackListUrls.begin(); it != mBlackListUrls.end(); ++it) + { + const std::string &blacklist_url = *it; + if (url.find(blacklist_url) != std::string::npos) + { + return true; + } + } + return false; +} + //virtual std::string LLTextBase::getText() const { @@ -1585,20 +1605,29 @@ void LLTextBase::appendText(const std::string &new_text, bool prepend_newline, c prepend_newline = false; } } - // output the styled Url - appendAndHighlightText(match.getLabel(), prepend_newline, part, link_params); - prepend_newline = false; - // set the tooltip for the Url label - if (! match.getTooltip().empty()) + // output the styled Url (unless we've been asked to suppress it) + if (isBlackListUrl(match.getUrl())) { - segment_set_t::iterator it = getSegIterContaining(getLength()-1); - if (it != mSegments.end()) + std::string orig_url = text.substr(start, end-start); + appendAndHighlightText(orig_url, prepend_newline, part, style_params); + } + else + { + appendAndHighlightText(match.getLabel(), prepend_newline, part, link_params); + + // set the tooltip for the Url label + if (! match.getTooltip().empty()) { - LLTextSegmentPtr segment = *it; - segment->setToolTip(match.getTooltip()); + segment_set_t::iterator it = getSegIterContaining(getLength()-1); + if (it != mSegments.end()) + { + LLTextSegmentPtr segment = *it; + segment->setToolTip(match.getTooltip()); + } } } + prepend_newline = false; // move on to the rest of the text after the Url if (end < (S32)text.length()) diff --git a/indra/llui/lltextbase.h b/indra/llui/lltextbase.h index 038b9eaa62..e1c6cc36ab 100644 --- a/indra/llui/lltextbase.h +++ b/indra/llui/lltextbase.h @@ -41,6 +41,7 @@ #include "llpanel.h" #include <string> +#include <vector> #include <set> #include <boost/signals2.hpp> @@ -186,6 +187,9 @@ public: const LLFontGL* getDefaultFont() const { return mDefaultFont; } LLStyle::Params getDefaultStyle(); + // tell the text object to suppress auto highlighting of a specific URL + void addBlackListUrl(const std::string &url); + public: // Fired when a URL link is clicked commit_signal_t mURLClickSignal; @@ -308,6 +312,7 @@ protected: void updateRects(); void needsScroll() { mScrollNeeded = TRUE; } void replaceUrlLabel(const std::string &url, const std::string &label); + bool isBlackListUrl(const std::string &url) const; protected: // text segmentation and flow @@ -359,6 +364,9 @@ protected: LLView* mDocumentView; class LLScrollContainer* mScroller; + // list of URLs to suppress from automatic hyperlinking + std::vector<std::string> mBlackListUrls; + // transient state bool mReflowNeeded; // need to reflow text because of change to text contents or display region bool mScrollNeeded; // need to change scroll region because of change to cursor position diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp index f2c3879a6c..06ba0d80e9 100644 --- a/indra/llui/lltexteditor.cpp +++ b/indra/llui/lltexteditor.cpp @@ -2040,6 +2040,20 @@ void LLTextEditor::showContextMenu(S32 x, S32 y) LLMenuHolderGL::child_registry_t::instance()); } + // Route menu to this class + // previously this was done in ::handleRightMoseDown: + //if(hasTabStop()) + // setFocus(TRUE) - why? weird... + // and then inside setFocus + // .... + // gEditMenuHandler = this; + // .... + // but this didn't work in all cases and just weird... + //why not here? + // (all this was done for EXT-4443) + + gEditMenuHandler = this; + S32 screen_x, screen_y; localPointToScreen(x, y, &screen_x, &screen_y); mContextMenu->show(screen_x, screen_y); diff --git a/indra/llui/lltooltip.cpp b/indra/llui/lltooltip.cpp index 01c7a81309..173fde8e76 100644 --- a/indra/llui/lltooltip.cpp +++ b/indra/llui/lltooltip.cpp @@ -400,7 +400,8 @@ bool LLToolTip::hasClickCallback() // LLToolTipMgr::LLToolTipMgr() -: mToolTip(NULL), +: mToolTipsBlocked(false), + mToolTip(NULL), mNeedsToolTip(false) {} diff --git a/indra/llui/lluistring.h b/indra/llui/lluistring.h index 7ec0fd603a..32cfc0d9cd 100644 --- a/indra/llui/lluistring.h +++ b/indra/llui/lluistring.h @@ -64,7 +64,7 @@ class LLUIString public: // These methods all perform appropriate argument substitution // and modify mOrig where appropriate - LLUIString() {} + LLUIString() : mNeedsResult(false), mNeedsWResult(false) {} LLUIString(const std::string& instring, const LLStringUtil::format_map_t& args); LLUIString(const std::string& instring) { assign(instring); } diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index d86e158e50..d9155377c1 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -157,13 +157,11 @@ set(viewer_SOURCE_FILES llfloaterbuycurrency.cpp llfloaterbuyland.cpp llfloatercamera.cpp - llfloaterchatterbox.cpp llfloatercolorpicker.cpp llfloatercustomize.cpp llfloaterdaycycle.cpp llfloaterenvsettings.cpp llfloaterfonttest.cpp - llfloaterfriends.cpp llfloatergesture.cpp llfloatergodtools.cpp llfloatergroupinvite.cpp @@ -242,7 +240,6 @@ set(viewer_SOURCE_FILES llimfloater.cpp llimfloatercontainer.cpp llimhandler.cpp - llimpanel.cpp llimview.cpp llinspect.cpp llinspectavatar.cpp @@ -274,7 +271,6 @@ set(viewer_SOURCE_FILES llmaniptranslate.cpp llmediactrl.cpp llmediadataclient.cpp - llmediaremotectrl.cpp llmemoryview.cpp llmenucommands.cpp llmetricperformancetester.cpp @@ -298,7 +294,6 @@ set(viewer_SOURCE_FILES llnotificationscripthandler.cpp llnotificationtiphandler.cpp lloutputmonitorctrl.cpp - lloverlaybar.cpp llpanelavatar.cpp llpanelavatartag.cpp llpanelblockedlist.cpp @@ -344,7 +339,6 @@ set(viewer_SOURCE_FILES llpanelprimmediacontrols.cpp llpanelprofile.cpp llpanelprofileview.cpp - llpanelshower.cpp llpanelteleporthistory.cpp llpanelvolume.cpp llpanelvolumepulldown.cpp @@ -422,7 +416,6 @@ set(viewer_SOURCE_FILES lltoastnotifypanel.cpp lltoastpanel.cpp lltool.cpp - lltoolbar.cpp lltoolbrush.cpp lltoolcomp.cpp lltooldraganddrop.cpp @@ -517,7 +510,6 @@ set(viewer_SOURCE_FILES llvoicechannel.cpp llvoiceclient.cpp llvoicedw.cpp - llvoiceremotectrl.cpp llvoicevisualizer.cpp llvoicevivox.cpp llvoinventorylistener.cpp @@ -668,13 +660,11 @@ set(viewer_HEADER_FILES llfloaterbuycurrency.h llfloaterbuyland.h llfloatercamera.h - llfloaterchatterbox.h llfloatercolorpicker.h llfloatercustomize.h llfloaterdaycycle.h llfloaterenvsettings.h llfloaterfonttest.h - llfloaterfriends.h llfloatergesture.h llfloatergodtools.h llfloatergroupinvite.h @@ -752,7 +742,6 @@ set(viewer_HEADER_FILES llhudview.h llimfloater.h llimfloatercontainer.h - llimpanel.h llimview.h llinspect.h llinspectavatar.h @@ -785,7 +774,6 @@ set(viewer_HEADER_FILES llmaniptranslate.h llmediactrl.h llmediadataclient.h - llmediaremotectrl.h llmemoryview.h llmenucommands.h llmetricperformancetester.h @@ -804,7 +792,6 @@ set(viewer_HEADER_FILES llnotificationhandler.h llnotificationmanager.h lloutputmonitorctrl.h - lloverlaybar.h llpanelavatar.h llpanelavatartag.h llpanelblockedlist.h @@ -850,7 +837,6 @@ set(viewer_HEADER_FILES llpanelprimmediacontrols.h llpanelprofile.h llpanelprofileview.h - llpanelshower.h llpanelteleporthistory.h llpanelvolume.h llpanelvolumepulldown.h @@ -931,7 +917,6 @@ set(viewer_HEADER_FILES lltoastnotifypanel.h lltoastpanel.h lltool.h - lltoolbar.h lltoolbrush.h lltoolcomp.h lltooldraganddrop.h @@ -1024,7 +1009,6 @@ set(viewer_HEADER_FILES llvoicechannel.h llvoiceclient.h llvoicedw.h - llvoiceremotectrl.h llvoicevisualizer.h llvoicevivox.h llvoinventorylistener.h @@ -1073,11 +1057,13 @@ if (DARWIN) find_library(APPKIT_LIBRARY AppKit) find_library(COCOA_LIBRARY Cocoa) find_library(IOKIT_LIBRARY IOKit) + find_library(COREAUDIO_LIBRARY CoreAudio) set(viewer_LIBRARIES ${COCOA_LIBRARY} ${AGL_LIBRARY} ${IOKIT_LIBRARY} + ${COREAUDIO_LIBRARY} ) # Add resource files to the project. @@ -1587,7 +1573,10 @@ if (WINDOWS) DEPENDS ${VIEWER_BINARY_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py ) - add_custom_target(package ALL DEPENDS ${CMAKE_CFG_INTDIR}/touched.bat) + add_custom_target(package ALL DEPENDS + ${CMAKE_CFG_INTDIR}/touched.bat + windows-setup-build-all + ) # temporarily disable packaging of event_host until hg subrepos get # sorted out on the parabuild cluster... #${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/event_host.tar.bz2) diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index f4a0bdb077..d0eb00b4aa 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -298,17 +298,6 @@ <key>Value</key> <integer>1</integer> </map> - <key>AudioStreamingVideo</key> - <map> - <key>Comment</key> - <string>Enable streaming video</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> <key>AuditTexture</key> <map> <key>Comment</key> @@ -2410,6 +2399,17 @@ <key>Value</key> <integer>0</integer> </map> + <key>DisableMouseWarp</key> + <map> + <key>Comment</key> + <string>Disable warping of the mouse to the center of the screen during alt-zoom and mouse look. Useful with certain input devices, mouse sharing programs like Synergy, or running under Parallels.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> + </map> <key>DisableRendering</key> <map> <key>Comment</key> @@ -9960,6 +9960,50 @@ <key>Value</key> <integer>15</integer> </map> + <key>UIButtonImageLeftPadding</key> + <map> + <key>Comment</key> + <string>Button Overlay Image Left Padding</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>S32</string> + <key>Value</key> + <integer>4</integer> + </map> + <key>UIButtonImageRightPadding</key> + <map> + <key>Comment</key> + <string>Button Overlay Image Right Padding</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>S32</string> + <key>Value</key> + <integer>4</integer> + </map> + <key>UIButtonImageTopPadding</key> + <map> + <key>Comment</key> + <string>Button Overlay Image Top Padding</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>S32</string> + <key>Value</key> + <integer>2</integer> + </map> + <key>UIButtonImageBottomPadding</key> + <map> + <key>Comment</key> + <string>Button Overlay Image Bottom Padding</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>S32</string> + <key>Value</key> + <integer>2</integer> + </map> <key>UploadBakedTexOld</key> <map> <key>Comment</key> diff --git a/indra/newview/gpu_table.txt b/indra/newview/gpu_table.txt index cc8f6780e3..887dab66d1 100644 --- a/indra/newview/gpu_table.txt +++ b/indra/newview/gpu_table.txt @@ -192,9 +192,9 @@ NVIDIA GeForce 7100 .*NVIDIA.*GeForce 71.* 0 1 NVIDIA GeForce 7200 .*NVIDIA.*GeForce 72.* 1 1 NVIDIA GeForce 7300 .*NVIDIA.*GeForce 73.* 1 1 NVIDIA GeForce 7500 .*NVIDIA.*GeForce 75.* 1 1 -NVIDIA GeForce 7600 .*NVIDIA.*GeForce 76.* 2 1 -NVIDIA GeForce 7800 .*NVIDIA.*GeForce.*78.* 2 1 -NVIDIA GeForce 7900 .*NVIDIA.*GeForce.*79.* 2 1 +NVIDIA GeForce 7600 .*NVIDIA.*GeForce 76.* 3 1 +NVIDIA GeForce 7800 .*NVIDIA.*GeForce.*78.* 3 1 +NVIDIA GeForce 7900 .*NVIDIA.*GeForce.*79.* 3 1 NVIDIA GeForce 8100 .*NVIDIA.*GeForce 81.* 1 1 NVIDIA GeForce 8200 .*NVIDIA.*GeForce 82.* 1 1 NVIDIA GeForce 8300 .*NVIDIA.*GeForce 83.* 1 1 @@ -207,8 +207,8 @@ NVIDIA GeForce 8800 .*NVIDIA.*GeForce 88.* 3 1 NVIDIA GeForce 9300M .*NVIDIA.*GeForce 9300M.* 1 1 NVIDIA GeForce 9400M .*NVIDIA.*GeForce 9400M.* 1 1 NVIDIA GeForce 9500M .*NVIDIA.*GeForce 9500M.* 2 1 -NVIDIA GeForce 9600M .*NVIDIA.*GeForce 9600M.* 2 1 -NVIDIA GeForce 9700M .*NVIDIA.*GeForce 9700M.* 2 1 +NVIDIA GeForce 9600M .*NVIDIA.*GeForce 9600M.* 3 1 +NVIDIA GeForce 9700M .*NVIDIA.*GeForce 9700M.* 3 1 NVIDIA GeForce 9300 .*NVIDIA.*GeForce 93.* 1 1 NVIDIA GeForce 9400 .*GeForce 94.* 1 1 NVIDIA GeForce 9500 .*NVIDIA.*GeForce 95.* 2 1 diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp index c21cdf9508..b0ff3a5626 100644 --- a/indra/newview/llagentwearables.cpp +++ b/indra/newview/llagentwearables.cpp @@ -1130,8 +1130,9 @@ void LLAgentWearables::addLocalTextureObject(const EWearableType wearable_type, if (!wearable) { llerrs << "Tried to add local texture object to invalid wearable with type " << wearable_type << " and index " << wearable_index << llendl; + return; } - LLLocalTextureObject* lto = new LLLocalTextureObject(); + LLLocalTextureObject lto; wearable->setLocalTextureObject(texture_type, lto); } @@ -2527,6 +2528,7 @@ void LLInitialWearablesFetch::processWearablesMessage() { llinfos << "Invalid wearable, type " << wearable_data->mType << " itemID " << wearable_data->mItemID << " assetID " << wearable_data->mAssetID << llendl; + delete wearable_data; } } diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index 03180b6a9d..8f4ce4498e 100644 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -35,6 +35,7 @@ #include "llagent.h" #include "llagentwearables.h" #include "llappearancemgr.h" +#include "llcommandhandler.h" #include "llfloatercustomize.h" #include "llgesturemgr.h" #include "llinventorybridge.h" @@ -47,6 +48,23 @@ #include "llviewerregion.h" #include "llwearablelist.h" +// support for secondlife:///app/appearance SLapps +class LLAppearanceHandler : public LLCommandHandler +{ +public: + // requests will be throttled from a non-trusted browser + LLAppearanceHandler() : LLCommandHandler("appearance", UNTRUSTED_THROTTLE) {} + + bool handle(const LLSD& params, const LLSD& query_map, LLMediaCtrl* web) + { + // support secondlife:///app/appearance/show, but for now we just + // make all secondlife:///app/appearance SLapps behave this way + LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD()); + return true; + } +}; +LLAppearanceHandler gAppearanceHandler; + class LLWearInventoryCategoryCallback : public LLInventoryCallback { public: @@ -274,11 +292,11 @@ private: struct LLFoundData { - LLFoundData() {} + LLFoundData() : mAssetType(LLAssetType::AT_NONE), mWearable(NULL) {} LLFoundData(const LLUUID& item_id, - const LLUUID& asset_id, - const std::string& name, - LLAssetType::EType asset_type) : + const LLUUID& asset_id, + const std::string& name, + LLAssetType::EType asset_type) : mItemID(item_id), mAssetID(asset_id), mName(name), diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h index dd50b482cf..38d1e01d08 100644 --- a/indra/newview/llappearancemgr.h +++ b/indra/newview/llappearancemgr.h @@ -35,11 +35,11 @@ #include "llsingleton.h" #include "llinventorymodel.h" -#include "llviewerinventory.h" #include "llcallbacklist.h" class LLWearable; class LLWearableHoldingPattern; +class LLInventoryCallback; class LLAppearanceManager: public LLSingleton<LLAppearanceManager> { diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index d38278864b..4da49862c8 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -163,7 +163,6 @@ #include "llvotree.h" #include "llvoavatar.h" #include "llfolderview.h" -#include "lltoolbar.h" #include "llagentpilot.h" #include "llvovolume.h" #include "llflexibleobject.h" @@ -417,7 +416,6 @@ static void settings_to_globals() LLVOAvatar::sVisibleInFirstPerson = gSavedSettings.getBOOL("FirstPersonAvatarVisible"); // clamp auto-open time to some minimum usable value LLFolderView::sAutoOpenTime = llmax(0.25f, gSavedSettings.getF32("FolderAutoOpenDelay")); - LLToolBar::sInventoryAutoOpenTime = gSavedSettings.getF32("InventoryAutoOpenDelay"); LLSelectMgr::sRectSelectInclusive = gSavedSettings.getBOOL("RectangleSelectInclusive"); LLSelectMgr::sRenderHiddenSelections = gSavedSettings.getBOOL("RenderHiddenSelections"); LLSelectMgr::sRenderLightRadius = gSavedSettings.getBOOL("RenderLightRadius"); @@ -2639,7 +2637,7 @@ void LLAppViewer::handleViewerCrash() gMessageSystem->stopLogging(); } - //LLWorld::getInstance()->getInfo(gDebugInfo); + if (LLWorld::instanceExists()) LLWorld::getInstance()->getInfo(gDebugInfo); // Close the debug file //pApp->writeDebugInfo(); @@ -4359,3 +4357,15 @@ void LLAppViewer::launchUpdater() // LLAppViewer::instance()->forceQuit(); } + +//virtual +void LLAppViewer::setMasterSystemAudioMute(bool mute) +{ + gSavedSettings.setBOOL("MuteAudio", mute); +} + +//virtual +bool LLAppViewer::getMasterSystemAudioMute() +{ + return gSavedSettings.getBOOL("MuteAudio"); +} diff --git a/indra/newview/llappviewer.h b/indra/newview/llappviewer.h index 870d47aa79..899004a533 100644 --- a/indra/newview/llappviewer.h +++ b/indra/newview/llappviewer.h @@ -168,6 +168,10 @@ public: void purgeCache(); // Clear the local cache. + // mute/unmute the system's master audio + virtual void setMasterSystemAudioMute(bool mute); + virtual bool getMasterSystemAudioMute(); + protected: virtual bool initWindow(); // Initialize the viewer's window. virtual bool initLogging(); // Initialize log files, logging system, return false on failure. diff --git a/indra/newview/llappviewermacosx.cpp b/indra/newview/llappviewermacosx.cpp index d8c4a7d9d9..e195f6c856 100644 --- a/indra/newview/llappviewermacosx.cpp +++ b/indra/newview/llappviewermacosx.cpp @@ -49,6 +49,7 @@ #include <Carbon/Carbon.h> #include "lldir.h" #include <signal.h> +#include <CoreAudio/CoreAudio.h> // for systemwide mute class LLMediaCtrl; // for LLURLDispatcher namespace @@ -443,6 +444,59 @@ std::string LLAppViewerMacOSX::generateSerialNumber() return serial_md5; } +static AudioDeviceID get_default_audio_output_device(void) +{ + AudioDeviceID device = 0; + UInt32 size; + OSStatus err; + + size = sizeof(device); + err = AudioHardwareGetProperty(kAudioHardwarePropertyDefaultOutputDevice, &size, &device); + if(err != noErr) + { + LL_DEBUGS("SystemMute") << "Couldn't get default audio output device (0x" << std::hex << err << ")" << LL_ENDL; + } + + return device; +} + +//virtual +void LLAppViewerMacOSX::setMasterSystemAudioMute(bool new_mute) +{ + AudioDeviceID device = get_default_audio_output_device(); + + if(device != 0) + { + UInt32 mute = new_mute; + OSStatus err = AudioDeviceSetProperty(device, NULL, 0, false, kAudioDevicePropertyMute, sizeof(mute), &mute); + if(err != noErr) + { + LL_INFOS("SystemMute") << "Couldn't set audio mute property (0x" << std::hex << err << ")" << LL_ENDL; + } + } +} + +//virtual +bool LLAppViewerMacOSX::getMasterSystemAudioMute() +{ + // Assume the system isn't muted + UInt32 mute = 0; + + AudioDeviceID device = get_default_audio_output_device(); + + if(device != 0) + { + UInt32 size = sizeof(mute); + OSStatus err = AudioDeviceGetProperty(device, 0, false, kAudioDevicePropertyMute, &size, &mute); + if(err != noErr) + { + LL_DEBUGS("SystemMute") << "Couldn't get audio mute property (0x" << std::hex << err << ")" << LL_ENDL; + } + } + + return (mute != 0); +} + OSErr AEGURLHandler(const AppleEvent *messagein, AppleEvent *reply, long refIn) { OSErr result = noErr; diff --git a/indra/newview/llappviewermacosx.h b/indra/newview/llappviewermacosx.h index bc841fc3a7..cbf7e6c209 100644 --- a/indra/newview/llappviewermacosx.h +++ b/indra/newview/llappviewermacosx.h @@ -48,6 +48,9 @@ public: // virtual bool init(); // Override to do application initialization + // mute/unmute the system's master audio + virtual void setMasterSystemAudioMute(bool mute); + virtual bool getMasterSystemAudioMute(); protected: virtual bool restoreErrorTrap(); diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp index ae081882f8..39d1efa49a 100644 --- a/indra/newview/llavataractions.cpp +++ b/indra/newview/llavataractions.cpp @@ -250,17 +250,20 @@ void LLAvatarActions::startAdhocCall(const std::vector<LLUUID>& ids) make_ui_sound("UISndStartIM"); } +/* AD *TODO: Is this function needed any more? + I fixed it a bit(added check for canCall), but it appears that it is not used + anywhere. Maybe it should be removed? // static bool LLAvatarActions::isCalling(const LLUUID &id) { - if (id.isNull()) + if (id.isNull() || !canCall()) { return false; } LLUUID session_id = gIMMgr->computeSessionID(IM_NOTHING_SPECIAL, id); return (LLIMModel::getInstance()->findIMSession(session_id) != NULL); -} +}*/ //static bool LLAvatarActions::canCall() diff --git a/indra/newview/llavataractions.h b/indra/newview/llavataractions.h index ebfd40b796..c751661acf 100644 --- a/indra/newview/llavataractions.h +++ b/indra/newview/llavataractions.h @@ -126,7 +126,10 @@ public: /** * Return true if the avatar is in a P2P voice call with a given user */ - static bool isCalling(const LLUUID &id); + /* AD *TODO: Is this function needed any more? + I fixed it a bit(added check for canCall), but it appears that it is not used + anywhere. Maybe it should be removed? + static bool isCalling(const LLUUID &id);*/ /** * @return true if call to the resident can be made diff --git a/indra/newview/llcallfloater.cpp b/indra/newview/llcallfloater.cpp index 1640081ee6..7ac9153b21 100644 --- a/indra/newview/llcallfloater.cpp +++ b/indra/newview/llcallfloater.cpp @@ -163,6 +163,8 @@ BOOL LLCallFloater::postBuild() //chrome="true" hides floater caption if (mDragHandle) mDragHandle->setTitleVisible(TRUE); + + updateSession(); return TRUE; } @@ -245,8 +247,7 @@ void LLCallFloater::updateSession() } } - const LLUUID& session_id = voice_channel->getSessionID(); - LL_DEBUGS("Voice") << "Set speaker manager for session: " << session_id << LL_ENDL; + const LLUUID& session_id = voice_channel ? voice_channel->getSessionID() : LLUUID::null; LLIMModel::LLIMSession* im_session = LLIMModel::getInstance()->findIMSession(session_id); if (im_session) @@ -566,33 +567,46 @@ void LLCallFloater::updateParticipantsVoiceState() if (!found) { - // If an avatarID is not found in a speakers list from VoiceClient and - // a panel with this ID has a JOINED status this means that this person - // HAS LEFT the call. - if ((getState(participant_id) == STATE_JOINED)) - { - setState(item, STATE_LEFT); + updateNotInVoiceParticipantState(item); + } + } +} - LLPointer<LLSpeaker> speaker = mSpeakerManager->findSpeaker(item->getAvatarId()); - if (speaker.isNull()) - { - continue; - } +void LLCallFloater::updateNotInVoiceParticipantState(LLAvatarListItem* item) +{ + LLUUID participant_id = item->getAvatarId(); + ESpeakerState current_state = getState(participant_id); - speaker->mHasLeftCurrentCall = TRUE; - } - // If an avatarID is not found in a speakers list from VoiceClient and - // a panel with this ID has a LEFT status this means that this person - // HAS ENTERED session but it is not in voice chat yet. So, set INVITED status - else if ((getState(participant_id) != STATE_LEFT)) - { - setState(item, STATE_INVITED); - } - else + switch (current_state) + { + case STATE_JOINED: + // If an avatarID is not found in a speakers list from VoiceClient and + // a panel with this ID has a JOINED status this means that this person + // HAS LEFT the call. + setState(item, STATE_LEFT); + + { + LLPointer<LLSpeaker> speaker = mSpeakerManager->findSpeaker(participant_id); + if (speaker.notNull()) { - llwarns << "Unsupported (" << getState(participant_id) << ") state: " << item->getAvatarName() << LL_ENDL; + speaker->mHasLeftCurrentCall = TRUE; } } + break; + case STATE_INVITED: + case STATE_LEFT: + // nothing to do. These states should not be changed. + break; + case STATE_UNKNOWN: + // If an avatarID is not found in a speakers list from VoiceClient and + // a panel with this ID has an UNKNOWN status this means that this person + // HAS ENTERED session but it is not in voice chat yet. So, set INVITED status + setState(item, STATE_INVITED); + break; + default: + // for possible new future states. + llwarns << "Unsupported (" << getState(participant_id) << ") state for: " << item->getAvatarName() << llendl; + break; } } diff --git a/indra/newview/llcallfloater.h b/indra/newview/llcallfloater.h index eded3a426b..766191379b 100644 --- a/indra/newview/llcallfloater.h +++ b/indra/newview/llcallfloater.h @@ -145,6 +145,10 @@ private: */ void updateParticipantsVoiceState(); + /** + * Updates voice state of participant not in current voice channel depend on its current state. + */ + void updateNotInVoiceParticipantState(LLAvatarListItem* item); void setState(LLAvatarListItem* item, ESpeakerState state); void setState(const LLUUID& speaker_id, ESpeakerState state) { diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp index a46cd84b60..5ec18dab29 100644 --- a/indra/newview/llchathistory.cpp +++ b/indra/newview/llchathistory.cpp @@ -34,7 +34,9 @@ #include "llinstantmessage.h" +#include "llimview.h" #include "llchathistory.h" +#include "llcommandhandler.h" #include "llpanel.h" #include "lluictrlfactory.h" #include "llscrollcontainer.h" @@ -46,8 +48,11 @@ #include "llfloaterreg.h" #include "llmutelist.h" #include "llstylemap.h" +#include "llslurl.h" #include "lllayoutstack.h" #include "llagent.h" +#include "llviewerregion.h" +#include "llworld.h" #include "llsidetray.h"//for blocked objects panel @@ -55,6 +60,38 @@ static LLDefaultChildRegistry::Register<LLChatHistory> r("chat_history"); const static std::string NEW_LINE(rawstr_to_utf8("\n")); +// support for secondlife:///app/objectim/{UUID}/ SLapps +class LLObjectIMHandler : public LLCommandHandler +{ +public: + // requests will be throttled from a non-trusted browser + LLObjectIMHandler() : LLCommandHandler("objectim", UNTRUSTED_THROTTLE) {} + + bool handle(const LLSD& params, const LLSD& query_map, LLMediaCtrl* web) + { + if (params.size() < 1) + { + return false; + } + + LLUUID object_id; + if (!object_id.set(params[0], FALSE)) + { + return false; + } + + LLSD payload; + payload["object_id"] = object_id; + payload["owner_id"] = query_map["owner"]; + payload["name"] = query_map["name"]; + payload["slurl"] = query_map["slurl"]; + payload["group_owned"] = query_map["groupowned"]; + LLFloaterReg::showInstance("inspect_remote_object", payload); + return true; + } +}; +LLObjectIMHandler gObjectIMHandler; + class LLChatHistoryHeader: public LLPanel { public: @@ -183,6 +220,7 @@ public: void setup(const LLChat& chat,const LLStyle::Params& style_params) { mAvatarID = chat.mFromID; + mSessionID = chat.mSessionID; mSourceType = chat.mSourceType; gCacheName->get(mAvatarID, FALSE, boost::bind(&LLChatHistoryHeader::nameUpdatedCallback, this, _1, _2, _3, _4)); if(chat.mFromID.isNull()) @@ -305,6 +343,11 @@ protected: menu->setItemEnabled("Remove Friend", false); } + if (mSessionID == LLIMMgr::computeSessionID(IM_NOTHING_SPECIAL, mAvatarID)) + { + menu->setItemVisible("Send IM", false); + } + menu->buildDrawLabels(); menu->updateParent(LLMenuGL::sMenuContainer); LLMenuGL::showPopup(this, menu, x, y); @@ -344,6 +387,7 @@ protected: std::string mFirstName; std::string mLastName; std::string mFrom; + LLUUID mSessionID; S32 mMinUserNameWidth; }; @@ -457,8 +501,9 @@ void LLChatHistory::clear() mLastFromID = LLUUID::null; } -void LLChatHistory::appendMessage(const LLChat& chat, const bool use_plain_text_chat_history, const LLStyle::Params& input_append_params) +void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LLStyle::Params& input_append_params) { + bool use_plain_text_chat_history = args["use_plain_text_chat_history"].asBoolean(); if (!mEditor->scrolledToEnd() && chat.mFromID != gAgent.getID() && !chat.mFromName.empty()) { mUnreadChatSources.insert(chat.mFromName); @@ -524,7 +569,27 @@ void LLChatHistory::appendMessage(const LLChat& chat, const bool use_plain_text_ if (utf8str_trim(chat.mFromName).size() != 0) { // Don't hotlink any messages from the system (e.g. "Second Life:"), so just add those in plain text. - if ( chat.mFromName != SYSTEM_FROM && chat.mFromID.notNull() ) + if ( chat.mSourceType == CHAT_SOURCE_OBJECT ) + { + // for object IMs, create a secondlife:///app/objectim SLapp + std::string url = LLSLURL("objectim", chat.mFromID, "").getSLURLString(); + url += "?name=" + chat.mFromName; + url += "&owner=" + args["owner_id"].asString(); + + LLViewerRegion *region = LLWorld::getInstance()->getRegionFromPosAgent(chat.mPosAgent); + if (region) + { + LLSLURL region_slurl(region->getName(), chat.mPosAgent); + url += "&slurl=" + region_slurl.getLocationString(); + } + + // set the link for the object name to be the objectim SLapp + LLStyle::Params link_params(style_params); + link_params.color.control = "HTMLLinkColor"; + link_params.link_href = url; + mEditor->appendText(chat.mFromName + delimiter, false, link_params); + } + else if ( chat.mFromName != SYSTEM_FROM && chat.mFromID.notNull() ) { LLStyle::Params link_params(style_params); link_params.fillFrom(LLStyleMap::instance().lookupAgent(chat.mFromID)); @@ -550,8 +615,8 @@ void LLChatHistory::appendMessage(const LLChat& chat, const bool use_plain_text_ if (mLastFromName == chat.mFromName && mLastFromID == chat.mFromID && mLastMessageTime.notNull() - && (new_message_time.secondsSinceEpoch() - mLastMessageTime.secondsSinceEpoch()) < 60.0 - ) + && (new_message_time.secondsSinceEpoch() - mLastMessageTime.secondsSinceEpoch()) < 60.0 + && mLastMessageTimeStr.size() == chat.mTimeStr.size()) //*HACK to distinguish between current and previous chat session's histories { view = getSeparator(); p.top_pad = mTopSeparatorPad; @@ -585,6 +650,7 @@ void LLChatHistory::appendMessage(const LLChat& chat, const bool use_plain_text_ mLastFromName = chat.mFromName; mLastFromID = chat.mFromID; mLastMessageTime = new_message_time; + mLastMessageTimeStr = chat.mTimeStr; } std::string message = irc_me ? chat.mText.substr(3) : chat.mText; diff --git a/indra/newview/llchathistory.h b/indra/newview/llchathistory.h index f2d403f639..32600bb71d 100644 --- a/indra/newview/llchathistory.h +++ b/indra/newview/llchathistory.h @@ -113,11 +113,14 @@ class LLChatHistory : public LLUICtrl * Appends a widget message. * If last user appended message, concurs with current user, * separator is added before the message, otherwise header is added. + * The args LLSD contains: + * - use_plain_text_chat_history (bool) - whether to add message as plain text. + * - owner_id (LLUUID) - the owner ID for object chat * @param chat - base chat message. - * @param use_plain_text_chat_history - whether to add message as plain text. + * @param args - additional arguments * @param input_append_params - font style. */ - void appendMessage(const LLChat& chat, const bool use_plain_text_chat_history = false, const LLStyle::Params& input_append_params = LLStyle::Params()); + void appendMessage(const LLChat& chat, const LLSD &args = LLSD(), const LLStyle::Params& input_append_params = LLStyle::Params()); /*virtual*/ void clear(); /*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE); @@ -125,6 +128,8 @@ class LLChatHistory : public LLUICtrl std::string mLastFromName; LLUUID mLastFromID; LLDate mLastMessageTime; + std::string mLastMessageTimeStr; + std::string mMessageHeaderFilename; std::string mMessageSeparatorFilename; diff --git a/indra/newview/llchatitemscontainerctrl.h b/indra/newview/llchatitemscontainerctrl.h index f4b8655054..4d730573d9 100644 --- a/indra/newview/llchatitemscontainerctrl.h +++ b/indra/newview/llchatitemscontainerctrl.h @@ -1,5 +1,5 @@ /** - * @file llchatitemscontainer.h + * @file llchatitemscontainerctrl.h * @brief chat history scrolling panel implementation * * $LicenseInfo:firstyear=2004&license=viewergpl$ @@ -30,12 +30,12 @@ * $/LicenseInfo$ */ -#ifndef LL_LLCHATITEMSCONTAINER_H_ -#define LL_LLCHATITEMSCONTAINER_H_ +#ifndef LL_LLCHATITEMSCONTAINERCTRL_H_ +#define LL_LLCHATITEMSCONTAINERCTRL_H_ +#include "llchat.h" #include "llpanel.h" #include "llscrollbar.h" -#include "string" #include "llviewerchat.h" #include "lltoastpanel.h" @@ -49,10 +49,12 @@ typedef enum e_show_item_header class LLNearbyChatToastPanel: public LLToastPanelBase { protected: - LLNearbyChatToastPanel():mIsDirty(false){}; + LLNearbyChatToastPanel() + : + mIsDirty(false), + mSourceType(CHAT_SOURCE_OBJECT) + {}; public: - - ~LLNearbyChatToastPanel(){} static LLNearbyChatToastPanel* createInstance(); diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp index f1de4e2982..f646bcccb5 100644 --- a/indra/newview/llchiclet.cpp +++ b/indra/newview/llchiclet.cpp @@ -459,6 +459,14 @@ LLIMChiclet::LLIMChiclet(const LLIMChiclet::Params& p) enableCounterControl(p.enable_counter); } +/* virtual*/ +BOOL LLIMChiclet::postBuild() +{ + mChicletButton = getChild<LLButton>("chiclet_button"); + mChicletButton->setCommitCallback(boost::bind(&LLIMChiclet::onMouseDown, this)); + mChicletButton->setDoubleClickCallback(boost::bind(&LLIMChiclet::onMouseDown, this)); + return TRUE; +} void LLIMChiclet::setShowSpeaker(bool show) { bool needs_resize = getShowSpeaker() != show; @@ -583,12 +591,6 @@ void LLIMChiclet::setToggleState(bool toggle) mChicletButton->setToggleState(toggle); } -BOOL LLIMChiclet::handleMouseDown(S32 x, S32 y, MASK mask) -{ - onMouseDown(); - return LLChiclet::handleMouseDown(x, y, mask); -} - void LLIMChiclet::draw() { LLUICtrl::draw(); @@ -1905,12 +1907,6 @@ void LLScriptChiclet::onMouseDown() LLScriptFloaterManager::getInstance()->toggleScriptFloater(getSessionId()); } -BOOL LLScriptChiclet::handleMouseDown(S32 x, S32 y, MASK mask) -{ - onMouseDown(); - return LLChiclet::handleMouseDown(x, y, mask); -} - ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// @@ -1975,10 +1971,4 @@ void LLInvOfferChiclet::onMouseDown() LLScriptFloaterManager::instance().toggleScriptFloater(getSessionId()); } -BOOL LLInvOfferChiclet::handleMouseDown(S32 x, S32 y, MASK mask) -{ - onMouseDown(); - return LLChiclet::handleMouseDown(x, y, mask); -} - // EOF diff --git a/indra/newview/llchiclet.h b/indra/newview/llchiclet.h index bb4846aa57..b006ae3420 100644 --- a/indra/newview/llchiclet.h +++ b/indra/newview/llchiclet.h @@ -328,6 +328,10 @@ public: virtual ~LLIMChiclet() {}; /** + * It is used for default setting up of chicklet:click handler, etc. + */ + BOOL postBuild(); + /** * Sets IM session name. This name will be displayed in chiclet tooltip. */ virtual void setIMSessionName(const std::string& name) { setToolTip(name); } @@ -428,8 +432,6 @@ protected: LLIMChiclet(const LLIMChiclet::Params& p); - /*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask); - protected: bool mShowSpeaker; @@ -640,11 +642,6 @@ public: */ /*virtual*/ void onMouseDown(); - /** - * Override default handler - */ - /*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask); - protected: LLScriptChiclet(const Params&); @@ -684,12 +681,6 @@ public: */ /*virtual*/ void onMouseDown(); - /** - * Override default handler - */ - /*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask); - - protected: LLInvOfferChiclet(const Params&); friend class LLUICtrlFactory; diff --git a/indra/newview/llcompilequeue.cpp b/indra/newview/llcompilequeue.cpp index 47f1b7c9f5..a96981a108 100644 --- a/indra/newview/llcompilequeue.cpp +++ b/indra/newview/llcompilequeue.cpp @@ -92,7 +92,8 @@ struct LLScriptQueueData // Default constructor LLFloaterScriptQueue::LLFloaterScriptQueue(const LLSD& key) : LLFloater(key), - mDone(FALSE) + mDone(false), + mMono(false) { //Called from floater reg: LLUICtrlFactory::getInstance()->buildFloater(this,"floater_script_queue.xml", FALSE); } @@ -216,7 +217,7 @@ BOOL LLFloaterScriptQueue::nextObject() } while((mObjectIDs.count() > 0) && !successful_start); if(isDone() && !mDone) { - mDone = TRUE; + mDone = true; getChild<LLScrollListCtrl>("queue output")->setCommentText(getString("Done")); childSetEnabled("close",TRUE); } @@ -446,19 +447,17 @@ void LLFloaterCompileQueue::scriptArrived(LLVFS *vfs, const LLUUID& asset_id, if( LL_ERR_ASSET_REQUEST_NOT_IN_DATABASE == status ) { - //TODO* CHAT: how to show this? - //LLSD args; - //args["MESSAGE"] = LLTrans::getString("CompileQueueScriptNotFound); - //LLNotificationsUtil::add("SystemMessage", args); + LLSD args; + args["MESSAGE"] = LLTrans::getString("CompileQueueScriptNotFound"); + LLNotificationsUtil::add("SystemMessage", args); buffer = LLTrans::getString("CompileQueueProblemDownloading") + (": ") + data->mScriptName; } else if (LL_ERR_INSUFFICIENT_PERMISSIONS == status) { - //TODO* CHAT: how to show this? - //LLSD args; - //args["MESSAGE"] = LLTrans::getString("CompileQueueScriptNotFound); - //LLNotificationsUtil::add("SystemMessage", args); + LLSD args; + args["MESSAGE"] = LLTrans::getString("CompileQueueInsufficientPermDownload"); + LLNotificationsUtil::add("SystemMessage", args); buffer = LLTrans::getString("CompileQueueInsufficientPermFor") + (": ") + data->mScriptName; } diff --git a/indra/newview/llcompilequeue.h b/indra/newview/llcompilequeue.h index 063d573239..2d061f5d8a 100644 --- a/indra/newview/llcompilequeue.h +++ b/indra/newview/llcompilequeue.h @@ -104,10 +104,10 @@ protected: // Object Queue LLDynamicArray<LLUUID> mObjectIDs; LLUUID mCurrentObjectID; - BOOL mDone; + bool mDone; std::string mStartString; - BOOL mMono; + bool mMono; }; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/indra/newview/lldirpicker.cpp b/indra/newview/lldirpicker.cpp index a720dc46b5..d1abbb0f51 100644 --- a/indra/newview/lldirpicker.cpp +++ b/indra/newview/lldirpicker.cpp @@ -61,7 +61,9 @@ LLDirPicker LLDirPicker::sInstance; // #if LL_WINDOWS -LLDirPicker::LLDirPicker() +LLDirPicker::LLDirPicker() : + mFileName(NULL), + mLocked(false) { } @@ -125,7 +127,9 @@ std::string LLDirPicker::getDirName() /////////////////////////////////////////////DARWIN #elif LL_DARWIN -LLDirPicker::LLDirPicker() +LLDirPicker::LLDirPicker() : + mFileName(NULL), + mLocked(false) { reset(); @@ -262,13 +266,15 @@ std::string LLDirPicker::getDirName() void LLDirPicker::reset() { - mLocked = FALSE; + mLocked = false; mDir.clear(); } #elif LL_LINUX || LL_SOLARIS -LLDirPicker::LLDirPicker() +LLDirPicker::LLDirPicker() : + mFileName(NULL), + mLocked(false) { mFilePicker = new LLFilePicker(); reset(); diff --git a/indra/newview/lldirpicker.h b/indra/newview/lldirpicker.h index 26f76915ae..b48d2c66c4 100644 --- a/indra/newview/lldirpicker.h +++ b/indra/newview/lldirpicker.h @@ -97,7 +97,7 @@ private: std::string* mFileName; std::string mDir; - BOOL mLocked; + bool mLocked; static LLDirPicker sInstance; diff --git a/indra/newview/lleventinfo.h b/indra/newview/lleventinfo.h index 493c659983..4f33a7925a 100644 --- a/indra/newview/lleventinfo.h +++ b/indra/newview/lleventinfo.h @@ -43,7 +43,15 @@ class LLMessageSystem; class LLEventInfo { public: - LLEventInfo() {} + LLEventInfo() : + mID(0), + mDuration(0), + mUnixTime(0), + mHasCover(FALSE), + mCover(0), + mEventFlags(0), + mSelected(FALSE) + {} void unpack(LLMessageSystem *msg); diff --git a/indra/newview/lleventnotifier.cpp b/indra/newview/lleventnotifier.cpp index edfb9dc864..f096ba604f 100644 --- a/indra/newview/lleventnotifier.cpp +++ b/indra/newview/lleventnotifier.cpp @@ -174,6 +174,7 @@ void LLEventNotifier::remove(const U32 event_id) LLEventNotification::LLEventNotification() : mEventID(0), + mEventDate(0), mEventName("") { } diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp index eef774426a..965ac1cad0 100644 --- a/indra/newview/llface.cpp +++ b/indra/newview/llface.cpp @@ -157,6 +157,7 @@ void LLFace::init(LLDrawable* drawablep, LLViewerObject* objp) mGeomIndex = 0; mIndicesCount = 0; mIndicesIndex = 0; + mIndexInTex = 0; mTexture = NULL; mTEOffset = -1; diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp index 0e42ff09d8..57e6619470 100644 --- a/indra/newview/llfavoritesbar.cpp +++ b/indra/newview/llfavoritesbar.cpp @@ -685,7 +685,7 @@ void LLFavoritesBarCtrl::updateButtons() { // an child's order and mItems should be same if (button->getLandmarkId() != item->getUUID() // sort order has been changed - || button->getLabelSelected() != item->getDisplayName() // favorite's name has been changed + || button->getLabelSelected() != item->getName() // favorite's name has been changed || button->getRect().mRight < rightest_point) // favbar's width has been changed { break; @@ -780,7 +780,7 @@ LLButton* LLFavoritesBarCtrl::createButton(const LLPointer<LLViewerInventoryItem * Empty space (or ...) is displaying instead of last symbols, even though the width of the button is enough. * Problem will gone, if we stretch out the button. For that reason I have to put additional 20 pixels. */ - int requred_width = mFont->getWidth(item->getDisplayName()) + 20; + int requred_width = mFont->getWidth(item->getName()) + 20; int width = requred_width > def_button_width? def_button_width : requred_width; LLFavoriteLandmarkButton* fav_btn = NULL; diff --git a/indra/newview/llfilepicker.cpp b/indra/newview/llfilepicker.cpp index 028e1cc098..2873057c19 100644 --- a/indra/newview/llfilepicker.cpp +++ b/indra/newview/llfilepicker.cpp @@ -68,7 +68,7 @@ LLFilePicker LLFilePicker::sInstance; // LLFilePicker::LLFilePicker() : mCurrentFile(0), - mLocked(FALSE) + mLocked(false) { reset(); @@ -92,6 +92,7 @@ LLFilePicker::LLFilePicker() mOFN.lCustData = 0L; mOFN.lpfnHook = NULL; mOFN.lpTemplateName = NULL; + mFilesW[0] = '\0'; #endif #if LL_DARWIN @@ -120,7 +121,7 @@ const std::string LLFilePicker::getNextFile() { if (mCurrentFile >= getFileCount()) { - mLocked = FALSE; + mLocked = false; return std::string(); } else @@ -133,7 +134,7 @@ const std::string LLFilePicker::getCurFile() { if (mCurrentFile >= getFileCount()) { - mLocked = FALSE; + mLocked = false; return std::string(); } else @@ -144,7 +145,7 @@ const std::string LLFilePicker::getCurFile() void LLFilePicker::reset() { - mLocked = FALSE; + mLocked = false; mFiles.clear(); mCurrentFile = 0; } @@ -276,7 +277,7 @@ BOOL LLFilePicker::getMultipleOpenFiles(ELoadFilter filter) } else { - mLocked = TRUE; + mLocked = true; WCHAR* tptrw = mFilesW; std::string dirname; while(1) @@ -866,7 +867,7 @@ BOOL LLFilePicker::getMultipleOpenFiles(ELoadFilter filter) if (getFileCount()) success = true; if (getFileCount() > 1) - mLocked = TRUE; + mLocked = true; } // Account for the fact that the app has been stalled. diff --git a/indra/newview/llfilepicker.h b/indra/newview/llfilepicker.h index 7ecbc3db60..4f254ff67e 100644 --- a/indra/newview/llfilepicker.h +++ b/indra/newview/llfilepicker.h @@ -176,8 +176,7 @@ private: std::vector<std::string> mFiles; S32 mCurrentFile; - BOOL mLocked; - BOOL mMultiFile; + bool mLocked; static LLFilePicker sInstance; diff --git a/indra/newview/llflexibleobject.cpp b/indra/newview/llflexibleobject.cpp index fc8790c172..aea2de8e92 100644 --- a/indra/newview/llflexibleobject.cpp +++ b/indra/newview/llflexibleobject.cpp @@ -66,6 +66,7 @@ LLVolumeImplFlexible::LLVolumeImplFlexible(LLViewerObject* vo, LLFlexibleObjectD mInitializedRes = -1; mSimulateRes = 0; mFrameNum = 0; + mCollisionSphereRadius = 0.f; mRenderRes = 1; if(mVO->mDrawable.notNull()) diff --git a/indra/newview/llfloaterabout.cpp b/indra/newview/llfloaterabout.cpp index 56bc4a7933..4b6e17d548 100644 --- a/indra/newview/llfloaterabout.cpp +++ b/indra/newview/llfloaterabout.cpp @@ -187,6 +187,12 @@ BOOL LLFloaterAbout::postBuild() support << '\n' << getString("AboutTraffic", args); } + // don't make the sim hostname be a hyperlink + if (info.has("HOSTNAME")) + { + support_widget->addBlackListUrl(info["HOSTNAME"].asString()); + } + support_widget->appendText(support.str(), FALSE, LLStyle::Params() diff --git a/indra/newview/llfloateranimpreview.h b/indra/newview/llfloateranimpreview.h index dd2c0b809a..3ee1f419ab 100644 --- a/indra/newview/llfloateranimpreview.h +++ b/indra/newview/llfloateranimpreview.h @@ -127,7 +127,6 @@ protected: LLRectf mPreviewImageRect; LLAssetID mMotionID; LLTransactionID mTransactionID; - BOOL mEnabled; LLAnimPauseRequest mPauseRequest; std::map<std::string, LLUUID> mIDList; diff --git a/indra/newview/llfloaterbulkpermission.cpp b/indra/newview/llfloaterbulkpermission.cpp index 5c3a54e34b..b2f700069f 100644 --- a/indra/newview/llfloaterbulkpermission.cpp +++ b/indra/newview/llfloaterbulkpermission.cpp @@ -43,6 +43,7 @@ #include "llviewerregion.h" #include "lscript_rt_interface.h" #include "llviewercontrol.h" +#include "llviewerinventory.h" #include "llviewerobject.h" #include "llviewerregion.h" #include "llresmgr.h" diff --git a/indra/newview/llfloaterbulkpermission.h b/indra/newview/llfloaterbulkpermission.h index 31f4f5c3e1..bffcff7059 100644 --- a/indra/newview/llfloaterbulkpermission.h +++ b/indra/newview/llfloaterbulkpermission.h @@ -44,8 +44,6 @@ #include "llfloater.h" #include "llscrolllistctrl.h" -#include "llviewerinventory.h" - class LLFloaterBulkPermission : public LLFloater, public LLVOInventoryListener { friend class LLFloaterReg; diff --git a/indra/newview/llfloaterchatterbox.cpp b/indra/newview/llfloaterchatterbox.cpp index da6d436e2e..a15cef7ea4 100644 --- a/indra/newview/llfloaterchatterbox.cpp +++ b/indra/newview/llfloaterchatterbox.cpp @@ -216,11 +216,11 @@ void LLFloaterChatterBox::onOpen(const LLSD& key) } else if (key.isDefined()) { - LLFloaterIMPanel* impanel = gIMMgr->findFloaterBySession(key.asUUID()); + /*LLFloaterIMPanel* impanel = gIMMgr->findFloaterBySession(key.asUUID()); if (impanel) { impanel->openFloater(); - } + }*/ } } diff --git a/indra/newview/llfloatergesture.cpp b/indra/newview/llfloatergesture.cpp index de65c6f876..b684e1f985 100644 --- a/indra/newview/llfloatergesture.cpp +++ b/indra/newview/llfloatergesture.cpp @@ -367,7 +367,14 @@ void LLFloaterGesture::addGesture(const LLUUID& item_id , LLMultiGesture* gestur element["columns"][3]["font"]["name"] = "SANSSERIF"; element["columns"][3]["font"]["style"] = font_style; } - list->addElement(element, ADD_BOTTOM); + + LLScrollListItem* sl_item = list->addElement(element, ADD_BOTTOM); + if(sl_item) + { + LLFontGL::StyleFlags style = LLGestureManager::getInstance()->isGestureActive(item_id) ? LLFontGL::BOLD : LLFontGL::NORMAL; + // *TODO find out why ["font"]["style"] does not affect font style + ((LLScrollListText*)sl_item->getColumn(0))->setFontStyle(style); + } } void LLFloaterGesture::getSelectedIds(std::vector<LLUUID>& ids) @@ -401,8 +408,7 @@ bool LLFloaterGesture::isActionEnabled(const LLSD& command) } return false; } - else if("copy_uuid" == command_name || "edit_gesture" == command_name - || "inspect" == command_name) + else if("copy_uuid" == command_name || "edit_gesture" == command_name) { return mGestureList->getAllSelected().size() == 1; } diff --git a/indra/newview/llfloaterhardwaresettings.cpp b/indra/newview/llfloaterhardwaresettings.cpp index 31b494b590..b2564eb2b6 100644 --- a/indra/newview/llfloaterhardwaresettings.cpp +++ b/indra/newview/llfloaterhardwaresettings.cpp @@ -50,7 +50,17 @@ #include "llsliderctrl.h" LLFloaterHardwareSettings::LLFloaterHardwareSettings(const LLSD& key) - : LLFloater(key) + : LLFloater(key), + + // these should be set on imminent refresh() call, + // but init them anyway + mUseVBO(0), + mUseAniso(0), + mFSAASamples(0), + mGamma(0.0), + mVideoCardMem(0), + mFogRatio(0.0), + mProbeHardwareOnStartup(FALSE) { //LLUICtrlFactory::getInstance()->buildFloater(this, "floater_hardware_settings.xml"); } diff --git a/indra/newview/llfloaterjoystick.cpp b/indra/newview/llfloaterjoystick.cpp index 06fe2a84c8..78bc63ac8c 100644 --- a/indra/newview/llfloaterjoystick.cpp +++ b/indra/newview/llfloaterjoystick.cpp @@ -52,6 +52,7 @@ LLFloaterJoystick::LLFloaterJoystick(const LLSD& data) { //Called from floater reg: LLUICtrlFactory::getInstance()->buildFloater(this, "floater_joystick.xml"); + initFromSettings(); } void LLFloaterJoystick::draw() @@ -123,10 +124,8 @@ void LLFloaterJoystick::apply() { } -void LLFloaterJoystick::refresh() +void LLFloaterJoystick::initFromSettings() { - LLFloater::refresh(); - mJoystickEnabled = gSavedSettings.getBOOL("JoystickEnabled"); mJoystickAxis[0] = gSavedSettings.getS32("JoystickAxis0"); @@ -194,6 +193,12 @@ void LLFloaterJoystick::refresh() mFlycamFeathering = gSavedSettings.getF32("FlycamFeathering"); } +void LLFloaterJoystick::refresh() +{ + LLFloater::refresh(); + initFromSettings(); +} + void LLFloaterJoystick::cancel() { gSavedSettings.setBOOL("JoystickEnabled", mJoystickEnabled); diff --git a/indra/newview/llfloaterjoystick.h b/indra/newview/llfloaterjoystick.h index f3559c28e9..7a2f497c69 100644 --- a/indra/newview/llfloaterjoystick.h +++ b/indra/newview/llfloaterjoystick.h @@ -55,6 +55,8 @@ private: LLFloaterJoystick(const LLSD& data); virtual ~LLFloaterJoystick(); + + void initFromSettings(); static void onCommitJoystickEnabled(LLUICtrl*, void*); static void onClickRestoreSNDefaults(void*); diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp index e61cca046b..1d177d8dba 100644 --- a/indra/newview/llfloaterland.cpp +++ b/indra/newview/llfloaterland.cpp @@ -1028,7 +1028,30 @@ void LLPanelLandGeneral::onClickStopSellLand(void* data) //--------------------------------------------------------------------------- LLPanelLandObjects::LLPanelLandObjects(LLParcelSelectionHandle& parcel) : LLPanel(), - mParcel(parcel) + + mParcel(parcel), + mParcelObjectBonus(NULL), + mSWTotalObjects(NULL), + mObjectContribution(NULL), + mTotalObjects(NULL), + mOwnerObjects(NULL), + mBtnShowOwnerObjects(NULL), + mBtnReturnOwnerObjects(NULL), + mGroupObjects(NULL), + mBtnShowGroupObjects(NULL), + mBtnReturnGroupObjects(NULL), + mOtherObjects(NULL), + mBtnShowOtherObjects(NULL), + mBtnReturnOtherObjects(NULL), + mSelectedObjects(NULL), + mCleanOtherObjectsTime(NULL), + mOtherTime(0), + mBtnRefresh(NULL), + mBtnReturnOwnerList(NULL), + mOwnerList(NULL), + mFirstReply(TRUE), + mSelectedCount(0), + mSelectedIsGroup(FALSE) { } diff --git a/indra/newview/llfloatermap.cpp b/indra/newview/llfloatermap.cpp index d18f127f85..568f4b254e 100644 --- a/indra/newview/llfloatermap.cpp +++ b/indra/newview/llfloatermap.cpp @@ -112,6 +112,7 @@ BOOL LLFloaterMap::postBuild() sendChildToBack(getDragHandle()); setIsChrome(TRUE); + getDragHandle()->setTitleVisible(TRUE); // keep onscreen gFloaterView->adjustToFitScreen(this, FALSE); diff --git a/indra/newview/llfloaterpay.cpp b/indra/newview/llfloaterpay.cpp index c2389e73a0..00959322e5 100644 --- a/indra/newview/llfloaterpay.cpp +++ b/indra/newview/llfloaterpay.cpp @@ -135,7 +135,8 @@ LLFloaterPay::LLFloaterPay(const LLSD& key) mCallback(NULL), mObjectNameText(NULL), mTargetUUID(key.asUUID()), - mTargetIsGroup(FALSE) + mTargetIsGroup(FALSE), + mHaveName(FALSE) { } diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index df57085ae1..da1cad305c 100644 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -327,6 +327,7 @@ LLFloaterPreference::LLFloaterPreference(const LLSD& key) mCommitCallbackRegistrar.add("Pref.AutoDetectAspect", boost::bind(&LLFloaterPreference::onCommitAutoDetectAspect, this)); mCommitCallbackRegistrar.add("Pref.ParcelMediaAutoPlayEnable", boost::bind(&LLFloaterPreference::onCommitParcelMediaAutoPlayEnable, this)); mCommitCallbackRegistrar.add("Pref.MediaEnabled", boost::bind(&LLFloaterPreference::onCommitMediaEnabled, this)); + mCommitCallbackRegistrar.add("Pref.MusicEnabled", boost::bind(&LLFloaterPreference::onCommitMusicEnabled, this)); mCommitCallbackRegistrar.add("Pref.onSelectAspectRatio", boost::bind(&LLFloaterPreference::onKeystrokeAspectRatio, this)); mCommitCallbackRegistrar.add("Pref.QualityPerformance", boost::bind(&LLFloaterPreference::onChangeQuality, this, _2)); mCommitCallbackRegistrar.add("Pref.applyUIColor", boost::bind(&LLFloaterPreference::applyUIColor, this ,_1, _2)); @@ -1001,12 +1002,14 @@ void LLFloaterPreference::onCommitMediaEnabled() { LLCheckBoxCtrl *media_enabled_ctrl = getChild<LLCheckBoxCtrl>("media_enabled"); bool enabled = media_enabled_ctrl->get(); - gSavedSettings.setBOOL("AudioStreamingVideo", enabled); - gSavedSettings.setBOOL("AudioStreamingMusic", enabled); gSavedSettings.setBOOL("AudioStreamingMedia", enabled); - media_enabled_ctrl->setTentative(false); - // Update enabled state of the "autoplay" checkbox - getChild<LLCheckBoxCtrl>("autoplay_enabled")->setEnabled(enabled); +} + +void LLFloaterPreference::onCommitMusicEnabled() +{ + LLCheckBoxCtrl *music_enabled_ctrl = getChild<LLCheckBoxCtrl>("music_enabled"); + bool enabled = music_enabled_ctrl->get(); + gSavedSettings.setBOOL("AudioStreamingMusic", enabled); } void LLFloaterPreference::refresh() @@ -1424,18 +1427,16 @@ BOOL LLPanelPreference::postBuild() } //////////////////////PanelPrivacy /////////////////// - if(hasChild("media_enabled")) + if (hasChild("media_enabled")) { - bool video_enabled = gSavedSettings.getBOOL("AudioStreamingVideo"); - bool music_enabled = gSavedSettings.getBOOL("AudioStreamingMusic"); bool media_enabled = gSavedSettings.getBOOL("AudioStreamingMedia"); - bool enabled = video_enabled || music_enabled || media_enabled; - - LLCheckBoxCtrl *media_enabled_ctrl = getChild<LLCheckBoxCtrl>("media_enabled"); - media_enabled_ctrl->set(enabled); - media_enabled_ctrl->setTentative(!(video_enabled == music_enabled == media_enabled)); - getChild<LLCheckBoxCtrl>("autoplay_enabled")->setEnabled(enabled); getChild<LLCheckBoxCtrl>("voice_call_friends_only_check")->setCommitCallback(boost::bind(&showFriendsOnlyWarning, _1, _2)); + getChild<LLCheckBoxCtrl>("media_enabled")->set(media_enabled); + getChild<LLCheckBoxCtrl>("autoplay_enabled")->setEnabled(media_enabled); + } + if (hasChild("music_enabled")) + { + getChild<LLCheckBoxCtrl>("music_enabled")->set(gSavedSettings.getBOOL("AudioStreamingMusic")); } apply(); diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h index 8b02a4049d..8778d76a5a 100644 --- a/indra/newview/llfloaterpreference.h +++ b/indra/newview/llfloaterpreference.h @@ -134,6 +134,7 @@ public: void onCommitAutoDetectAspect(); void onCommitParcelMediaAutoPlayEnable(); void onCommitMediaEnabled(); + void onCommitMusicEnabled(); void applyResolution(); void applyUIColor(LLUICtrl* ctrl, const LLSD& param); void getUIColor(LLUICtrl* ctrl, const LLSD& param); diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp index 120b9cf65d..39916eba1d 100644 --- a/indra/newview/llfloaterregioninfo.cpp +++ b/indra/newview/llfloaterregioninfo.cpp @@ -1521,11 +1521,6 @@ void LLPanelEstateInfo::onClickRemoveEstateManager(void* user_data) //--------------------------------------------------------------------------- // Kick from estate methods //--------------------------------------------------------------------------- -struct LLKickFromEstateInfo -{ - LLPanelEstateInfo *mEstatePanelp; - LLUUID mAgentID; -}; void LLPanelEstateInfo::onClickKickUser() { @@ -1547,11 +1542,6 @@ void LLPanelEstateInfo::onKickUserCommit(const std::vector<std::string>& names, return; } - //keep track of what user they want to kick and other misc info - LLKickFromEstateInfo *kick_info = new LLKickFromEstateInfo(); - kick_info->mEstatePanelp = this; - kick_info->mAgentID = ids[0]; - //Bring up a confirmation dialog LLSD args; args["EVIL_USER"] = names[0]; @@ -2544,7 +2534,9 @@ bool LLPanelEstateInfo::onMessageCommit(const LLSD& notification, const LLSD& re } LLPanelEstateCovenant::LLPanelEstateCovenant() -: mCovenantID(LLUUID::null) + : + mCovenantID(LLUUID::null), + mAssetStatus(ASSET_ERROR) { } diff --git a/indra/newview/llfloaterscriptlimits.cpp b/indra/newview/llfloaterscriptlimits.cpp index 0964ad7f91..8875e35821 100644 --- a/indra/newview/llfloaterscriptlimits.cpp +++ b/indra/newview/llfloaterscriptlimits.cpp @@ -528,7 +528,16 @@ BOOL LLPanelScriptLimitsRegionMemory::postBuild() std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestWaiting"); childSetValue("loading_text", LLSD(msg_waiting)); - + + LLScrollListCtrl *list = getChild<LLScrollListCtrl>("scripts_list"); + + //set all columns to resizable mode even if some columns will be empty + for(S32 column = 0; column < list->getNumColumns(); column++) + { + LLScrollListColumn* columnp = list->getColumn(column); + columnp->mHeader->setHasResizableElement(TRUE); + } + return StartRequestChain(); } diff --git a/indra/newview/llfloaterscriptlimits.h b/indra/newview/llfloaterscriptlimits.h index 7e2b536eb6..e675d14515 100644 --- a/indra/newview/llfloaterscriptlimits.h +++ b/indra/newview/llfloaterscriptlimits.h @@ -145,7 +145,14 @@ class LLPanelScriptLimitsRegionMemory : public LLPanelScriptLimitsInfo, LLRemote public: LLPanelScriptLimitsRegionMemory() - : LLPanelScriptLimitsInfo(), LLRemoteParcelInfoObserver(), mParcelId(LLUUID()), mGotParcelMemoryUsed(FALSE), mGotParcelMemoryMax(FALSE) {}; + : LLPanelScriptLimitsInfo(), LLRemoteParcelInfoObserver(), + + mParcelId(LLUUID()), + mGotParcelMemoryUsed(FALSE), + mGotParcelMemoryMax(FALSE), + mParcelMemoryMax(0), + mParcelMemoryUsed(0) {}; + ~LLPanelScriptLimitsRegionMemory() { LLRemoteParcelInfoProcessor::getInstance()->removeObserver(mParcelId, this); @@ -167,9 +174,9 @@ public: private: - void onNameCache( const LLUUID& id, - const std::string& first_name, - const std::string& last_name); + void onNameCache(const LLUUID& id, + const std::string& first_name, + const std::string& last_name); LLUUID mParcelId; BOOL mGotParcelMemoryUsed; @@ -200,7 +207,16 @@ class LLPanelScriptLimitsRegionURLs : public LLPanelScriptLimitsInfo public: LLPanelScriptLimitsRegionURLs() - : LLPanelScriptLimitsInfo(), mParcelId(LLUUID()), mGotParcelURLsUsed(FALSE), mGotParcelURLsMax(FALSE) {}; + : LLPanelScriptLimitsInfo(), + + mParcelId(LLUUID()), + mGotParcelURLsUsed(FALSE), + mGotParcelURLsMax(FALSE), + mParcelURLsMax(0), + mParcelURLsUsed(0) + { + }; + ~LLPanelScriptLimitsRegionURLs() { }; diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp index afb58c9407..94c7ff6f94 100644 --- a/indra/newview/llfloatersnapshot.cpp +++ b/indra/newview/llfloatersnapshot.cpp @@ -1028,7 +1028,8 @@ class LLFloaterSnapshot::Impl public: Impl() : mAvatarPauseHandles(), - mLastToolset(NULL) + mLastToolset(NULL), + mAspectRatioCheckOff(false) { } ~Impl() @@ -1079,7 +1080,7 @@ public: LLToolset* mLastToolset; LLHandle<LLView> mPreviewHandle; - BOOL mAspectRatioCheckOff ; + bool mAspectRatioCheckOff ; }; // static @@ -1606,7 +1607,7 @@ void LLFloaterSnapshot::Impl::checkAspectRatio(LLFloaterSnapshot *view, S32 inde if(0 == index) //current window size { - view->impl.mAspectRatioCheckOff = TRUE ; + view->impl.mAspectRatioCheckOff = true ; view->childSetEnabled("keep_aspect_check", FALSE) ; if(previewp) @@ -1616,7 +1617,7 @@ void LLFloaterSnapshot::Impl::checkAspectRatio(LLFloaterSnapshot *view, S32 inde } else if(-1 == index) //custom { - view->impl.mAspectRatioCheckOff = FALSE ; + view->impl.mAspectRatioCheckOff = false ; //if(LLSnapshotLivePreview::SNAPSHOT_TEXTURE != gSavedSettings.getS32("LastSnapshotType")) { view->childSetEnabled("keep_aspect_check", TRUE) ; @@ -1629,7 +1630,7 @@ void LLFloaterSnapshot::Impl::checkAspectRatio(LLFloaterSnapshot *view, S32 inde } else { - view->impl.mAspectRatioCheckOff = TRUE ; + view->impl.mAspectRatioCheckOff = true ; view->childSetEnabled("keep_aspect_check", FALSE) ; if(previewp) diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp index b833c611bf..c6135d3bc3 100644 --- a/indra/newview/llfolderview.cpp +++ b/indra/newview/llfolderview.cpp @@ -1508,10 +1508,26 @@ BOOL LLFolderView::handleKeyHere( KEY key, MASK mask ) { if (next == last_selected) { + //special case for LLAccordionCtrl + if(notifyParent(LLSD().with("action","select_next")) > 0 )//message was processed + { + clearSelection(); + return TRUE; + } return FALSE; } setSelection( next, FALSE, TRUE ); } + else + { + //special case for LLAccordionCtrl + if(notifyParent(LLSD().with("action","select_next")) > 0 )//message was processed + { + clearSelection(); + return TRUE; + } + return FALSE; + } } scrollToShowSelection(); mSearchString.clear(); @@ -1556,6 +1572,13 @@ BOOL LLFolderView::handleKeyHere( KEY key, MASK mask ) { if (prev == this) { + // If case we are in accordion tab notify parent to go to the previous accordion + if(notifyParent(LLSD().with("action","select_prev")) > 0 )//message was processed + { + clearSelection(); + return TRUE; + } + return FALSE; } setSelection( prev, FALSE, TRUE ); @@ -2241,6 +2264,83 @@ void LLFolderView::updateRenamerPosition() } } +bool LLFolderView::selectFirstItem() +{ + for (folders_t::iterator iter = mFolders.begin(); + iter != mFolders.end();) + { + LLFolderViewFolder* folder = (*iter ); + if (folder->getVisible()) + { + LLFolderViewItem* itemp = folder->getNextFromChild(0,true); + if(itemp) + setSelection(itemp,FALSE,TRUE); + return true; + } + + } + for(items_t::iterator iit = mItems.begin(); + iit != mItems.end(); ++iit) + { + LLFolderViewItem* itemp = (*iit); + if (itemp->getVisible()) + { + setSelection(itemp,FALSE,TRUE); + return true; + } + } + return false; +} +bool LLFolderView::selectLastItem() +{ + for(items_t::reverse_iterator iit = mItems.rbegin(); + iit != mItems.rend(); ++iit) + { + LLFolderViewItem* itemp = (*iit); + if (itemp->getVisible()) + { + setSelection(itemp,FALSE,TRUE); + return true; + } + } + for (folders_t::reverse_iterator iter = mFolders.rbegin(); + iter != mFolders.rend();) + { + LLFolderViewFolder* folder = (*iter); + if (folder->getVisible()) + { + LLFolderViewItem* itemp = folder->getPreviousFromChild(0,true); + if(itemp) + setSelection(itemp,FALSE,TRUE); + return true; + } + } + return false; +} + + +S32 LLFolderView::notify(const LLSD& info) +{ + if(info.has("action")) + { + std::string str_action = info["action"]; + if(str_action == "select_first") + { + setFocus(true); + selectFirstItem(); + return 1; + + } + else if(str_action == "select_last") + { + setFocus(true); + selectLastItem(); + return 1; + } + } + return 0; +} + ///---------------------------------------------------------------------------- /// Local function definitions diff --git a/indra/newview/llfolderview.h b/indra/newview/llfolderview.h index 89e1865e35..56ebdfcf79 100644 --- a/indra/newview/llfolderview.h +++ b/indra/newview/llfolderview.h @@ -266,6 +266,8 @@ public: LLPanel* getParentPanel() { return mParentPanel; } // DEBUG only void dumpSelectionInformation(); + + virtual S32 notify(const LLSD& info) ; private: void updateRenamerPosition(); @@ -278,6 +280,9 @@ protected: void finishRenamingItem( void ); void closeRenamer( void ); + + bool selectFirstItem(); + bool selectLastItem(); protected: LLHandle<LLView> mPopupMenuHandle; diff --git a/indra/newview/llfolderviewitem.cpp b/indra/newview/llfolderviewitem.cpp index 4b48626b22..b05eb84e52 100644 --- a/indra/newview/llfolderviewitem.cpp +++ b/indra/newview/llfolderviewitem.cpp @@ -40,7 +40,6 @@ #include "llinventoryfilter.h" #include "llpanel.h" #include "llviewercontrol.h" // gSavedSettings -#include "llviewerinventory.h" #include "llviewerwindow.h" // Argh, only for setCursor() // linden library includes diff --git a/indra/newview/llgroupactions.cpp b/indra/newview/llgroupactions.cpp index d6e2bb0445..3653371d76 100644 --- a/indra/newview/llgroupactions.cpp +++ b/indra/newview/llgroupactions.cpp @@ -75,11 +75,12 @@ public: return false; } + //*TODO by what to replace showing groups floater? if (tokens[0].asString() == "list") { if (tokens[1].asString() == "show") { - LLFloaterReg::showInstance("contacts", "groups"); + //LLFloaterReg::showInstance("contacts", "groups"); return true; } return false; diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp index af58e81ca4..8bd0e520c3 100644 --- a/indra/newview/llgroupmgr.cpp +++ b/indra/newview/llgroupmgr.cpp @@ -762,6 +762,14 @@ void LLGroupMgr::addObserver(LLGroupMgrObserver* observer) mObservers.insert(std::pair<LLUUID, LLGroupMgrObserver*>(observer->getID(), observer)); } +void LLGroupMgr::addObserver(const LLUUID& group_id, LLParticularGroupMgrObserver* observer) +{ + if(group_id.notNull() && observer) + { + mParticularObservers[group_id].insert(observer); + } +} + void LLGroupMgr::removeObserver(LLGroupMgrObserver* observer) { if (!observer) @@ -784,6 +792,23 @@ void LLGroupMgr::removeObserver(LLGroupMgrObserver* observer) } } +void LLGroupMgr::removeObserver(const LLUUID& group_id, LLParticularGroupMgrObserver* observer) +{ + if(group_id.isNull() || !observer) + { + return; + } + + observer_map_t::iterator obs_it = mParticularObservers.find(group_id); + if(obs_it == mParticularObservers.end()) + return; + + obs_it->second.erase(observer); + + if (obs_it->second.size() == 0) + mParticularObservers.erase(obs_it); +} + LLGroupMgrGroupData* LLGroupMgr::getGroupData(const LLUUID& id) { group_map_t::iterator gi = mGroups.find(id); @@ -1325,6 +1350,7 @@ void LLGroupMgr::notifyObservers(LLGroupChange gc) LLUUID group_id = gi->first; if (gi->second->mChanged) { + // notify LLGroupMgrObserver // Copy the map because observers may remove themselves on update observer_multimap_t observers = mObservers; @@ -1336,6 +1362,18 @@ void LLGroupMgr::notifyObservers(LLGroupChange gc) oi->second->changed(gc); } gi->second->mChanged = FALSE; + + + // notify LLParticularGroupMgrObserver + observer_map_t::iterator obs_it = mParticularObservers.find(group_id); + if(obs_it == mParticularObservers.end()) + return; + + observer_set_t& obs = obs_it->second; + for (observer_set_t::iterator ob_it = obs.begin(); ob_it != obs.end(); ++ob_it) + { + (*ob_it)->changed(group_id, gc); + } } } } diff --git a/indra/newview/llgroupmgr.h b/indra/newview/llgroupmgr.h index 487fdd4c5b..588b4a9034 100644 --- a/indra/newview/llgroupmgr.h +++ b/indra/newview/llgroupmgr.h @@ -53,6 +53,13 @@ protected: LLUUID mID; }; +class LLParticularGroupMgrObserver +{ +public: + virtual ~LLParticularGroupMgrObserver(){} + virtual void changed(const LLUUID& group_id, LLGroupChange gc) = 0; +}; + class LLGroupRoleData; class LLGroupMemberData @@ -306,7 +313,9 @@ public: ~LLGroupMgr(); void addObserver(LLGroupMgrObserver* observer); + void addObserver(const LLUUID& group_id, LLParticularGroupMgrObserver* observer); void removeObserver(LLGroupMgrObserver* observer); + void removeObserver(const LLUUID& group_id, LLParticularGroupMgrObserver* observer); LLGroupMgrGroupData* getGroupData(const LLUUID& id); void sendGroupPropertiesRequest(const LLUUID& group_id); @@ -355,13 +364,19 @@ public: private: void notifyObservers(LLGroupChange gc); + void notifyObserver(const LLUUID& group_id, LLGroupChange gc); void addGroup(LLGroupMgrGroupData* group_datap); LLGroupMgrGroupData* createGroupData(const LLUUID &id); typedef std::multimap<LLUUID,LLGroupMgrObserver*> observer_multimap_t; observer_multimap_t mObservers; + typedef std::map<LLUUID, LLGroupMgrGroupData*> group_map_t; group_map_t mGroups; + + typedef std::set<LLParticularGroupMgrObserver*> observer_set_t; + typedef std::map<LLUUID,observer_set_t> observer_map_t; + observer_map_t mParticularObservers; }; diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp index a39753aa55..d4425a70f7 100644 --- a/indra/newview/llimfloater.cpp +++ b/indra/newview/llimfloater.cpp @@ -598,6 +598,7 @@ void LLIMFloater::updateMessages() LLChat chat; chat.mFromID = from_id; + chat.mSessionID = mSessionID; chat.mFromName = from; chat.mText = message; chat.mTimeStr = time; diff --git a/indra/newview/llimfloatercontainer.cpp b/indra/newview/llimfloatercontainer.cpp index 06a7b4a29c..784c2eaaf9 100644 --- a/indra/newview/llimfloatercontainer.cpp +++ b/indra/newview/llimfloatercontainer.cpp @@ -48,10 +48,7 @@ LLIMFloaterContainer::LLIMFloaterContainer(const LLSD& seed) mAutoResize = FALSE; } -LLIMFloaterContainer::~LLIMFloaterContainer() -{ - LLGroupMgr::getInstance()->removeObserver(this); -} +LLIMFloaterContainer::~LLIMFloaterContainer(){} BOOL LLIMFloaterContainer::postBuild() { @@ -95,11 +92,10 @@ void LLIMFloaterContainer::addFloater(LLFloater* floaterp, if(gAgent.isInGroup(session_id)) { mSessions[session_id] = floaterp; - mID = session_id; - mGroupID.push_back(session_id); LLGroupMgrGroupData* group_data = LLGroupMgr::getInstance()->getGroupData(session_id); LLGroupMgr* gm = LLGroupMgr::getInstance(); - gm->addObserver(this); + gm->addObserver(session_id, this); + floaterp->mCloseSignal.connect(boost::bind(&LLIMFloaterContainer::onCloseFloater, this, session_id)); if (group_data && group_data->mInsigniaID.notNull()) { @@ -107,6 +103,7 @@ void LLIMFloaterContainer::addFloater(LLFloater* floaterp, } else { + mTabContainer->setTabImage(floaterp, "Generic_Group"); gm->sendGroupPropertiesRequest(session_id); } } @@ -119,13 +116,14 @@ void LLIMFloaterContainer::addFloater(LLFloater* floaterp, mSessions[avatar_id] = floaterp; LLUUID* icon_id_ptr = LLAvatarIconIDCache::getInstance()->get(avatar_id); - if(!icon_id_ptr) + if(icon_id_ptr && icon_id_ptr->notNull()) { - app.sendAvatarPropertiesRequest(avatar_id); + mTabContainer->setTabImage(floaterp, *icon_id_ptr); } else { - mTabContainer->setTabImage(floaterp, *icon_id_ptr); + mTabContainer->setTabImage(floaterp, "Generic_Person"); + app.sendAvatarPropertiesRequest(avatar_id); } } } @@ -134,31 +132,28 @@ void LLIMFloaterContainer::processProperties(void* data, enum EAvatarProcessorTy { if (APT_PROPERTIES == type) { - LLAvatarData* avatar_data = static_cast<LLAvatarData*>(data); - if (avatar_data) + LLAvatarData* avatar_data = static_cast<LLAvatarData*>(data); + if (avatar_data) + { + LLUUID avatar_id = avatar_data->avatar_id; + LLUUID* cached_avatarId = LLAvatarIconIDCache::getInstance()->get(avatar_id); + if(cached_avatarId && cached_avatarId->notNull() && avatar_data->image_id != *cached_avatarId) { - LLUUID avatar_id = avatar_data->avatar_id; - if(avatar_data->image_id != *LLAvatarIconIDCache::getInstance()->get(avatar_id)) - { - LLAvatarIconIDCache::getInstance()->add(avatar_id,avatar_data->image_id); - } + LLAvatarIconIDCache::getInstance()->add(avatar_id,avatar_data->image_id); mTabContainer->setTabImage(get_ptr_in_map(mSessions, avatar_id), avatar_data->image_id); } + } } } -void LLIMFloaterContainer::changed(LLGroupChange gc) +void LLIMFloaterContainer::changed(const LLUUID& group_id, LLGroupChange gc) { if (GC_PROPERTIES == gc) { - for(groupIDs_t::iterator it = mGroupID.begin(); it!=mGroupID.end(); it++) + LLGroupMgrGroupData* group_data = LLGroupMgr::getInstance()->getGroupData(group_id); + if (group_data && group_data->mInsigniaID.notNull()) { - LLUUID group_id = *it; - LLGroupMgrGroupData* group_data = LLGroupMgr::getInstance()->getGroupData(group_id); - if (group_data && group_data->mInsigniaID.notNull()) - { - mTabContainer->setTabImage(get_ptr_in_map(mSessions, group_id), group_data->mInsigniaID); - } + mTabContainer->setTabImage(get_ptr_in_map(mSessions, group_id), group_data->mInsigniaID); } } } @@ -166,6 +161,7 @@ void LLIMFloaterContainer::changed(LLGroupChange gc) void LLIMFloaterContainer::onCloseFloater(LLUUID id) { LLAvatarPropertiesProcessor::instance().removeObserver(id, this); + LLGroupMgr::instance().removeObserver(id, this); } LLIMFloaterContainer* LLIMFloaterContainer::findInstance() diff --git a/indra/newview/llimfloatercontainer.h b/indra/newview/llimfloatercontainer.h index 1333b098bc..e4a32dbe1d 100644 --- a/indra/newview/llimfloatercontainer.h +++ b/indra/newview/llimfloatercontainer.h @@ -43,7 +43,7 @@ class LLTabContainer; -class LLIMFloaterContainer : public LLMultiFloater, public LLAvatarPropertiesObserver, public LLGroupMgrObserver +class LLIMFloaterContainer : public LLMultiFloater, public LLAvatarPropertiesObserver, public LLParticularGroupMgrObserver { public: LLIMFloaterContainer(const LLSD& seed); @@ -57,7 +57,7 @@ public: LLTabContainer::eInsertionPoint insertion_point = LLTabContainer::END); void processProperties(void* data, EAvatarProcessorType type); - void changed(LLGroupChange gc); + void changed(const LLUUID& group_id, LLGroupChange gc); static LLFloater* getCurrentVoiceFloater(); @@ -69,9 +69,6 @@ private: typedef std::map<LLUUID,LLPanel*> avatarID_panel_map_t; avatarID_panel_map_t mSessions; - typedef std::vector<LLUUID> groupIDs_t; - groupIDs_t mGroupID; - void onCloseFloater(LLUUID avatar_id); }; diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 265c10aebd..49a193e719 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -52,7 +52,6 @@ #include "llbottomtray.h" #include "llcallingcard.h" #include "llchat.h" -#include "llfloaterchatterbox.h" #include "llimfloater.h" #include "llgroupiconctrl.h" #include "llmd5.h" @@ -64,8 +63,10 @@ #include "llnotificationsutil.h" #include "llnearbychat.h" #include "llspeakers.h" //for LLIMSpeakerMgr +#include "lltextbox.h" #include "lltextutil.h" #include "llviewercontrol.h" +#include "llviewerparcelmgr.h" const static std::string IM_TIME("time"); @@ -95,7 +96,8 @@ void toast_callback(const LLSD& msg){ } // check whether incoming IM belongs to an active session or not - if (LLIMModel::getInstance()->getActiveSessionID() == msg["session_id"]) + if (LLIMModel::getInstance()->getActiveSessionID().notNull() + && LLIMModel::getInstance()->getActiveSessionID() == msg["session_id"]) { return; } @@ -536,13 +538,6 @@ void LLIMModel::processSessionInitializedReply(const LLUUID& old_session_id, con gIMMgr->startCall(new_session_id); } } - - //*TODO remove this "floater" stuff when Communicate Floater is gone - LLFloaterIMPanel* floater = gIMMgr->findFloaterBySession(old_session_id); - if (floater) - { - floater->sessionInitReplyReceived(new_session_id); - } } void LLIMModel::testMessages() @@ -677,15 +672,6 @@ bool LLIMModel::proccessOnlineOfflineNotification( const LLUUID& session_id, const std::string& utf8_text) { - // Add message to old one floater - LLFloaterIMPanel *floater = gIMMgr->findFloaterBySession(session_id); - if ( floater ) - { - if ( !utf8_text.empty() ) - { - floater->addHistoryLine(utf8_text, LLUIColorTable::instance().getColor("SystemChatColor")); - } - } // Add system message to history return addMessage(session_id, SYSTEM_FROM, LLUUID::null, utf8_text); } @@ -953,9 +939,6 @@ void LLIMModel::sendMessage(const std::string& utf8_text, history_echo += ": " + utf8_text; - LLFloaterIMPanel* floater = gIMMgr->findFloaterBySession(im_session_id); - if (floater) floater->addHistoryLine(history_echo, LLUIColorTable::instance().getColor("IMChatColor"), true, gAgent.getID()); - LLIMSpeakerMgr* speaker_mgr = LLIMModel::getInstance()->getSpeakerManager(im_session_id); if (speaker_mgr) { @@ -1273,33 +1256,16 @@ LLUUID LLIMMgr::computeSessionID( return session_id; } -inline LLFloater* getFloaterBySessionID(const LLUUID session_id) -{ - LLFloater* floater = NULL; - if ( gIMMgr ) - { - floater = dynamic_cast < LLFloater* > - ( gIMMgr->findFloaterBySession(session_id) ); - } - if ( !floater ) - { - floater = dynamic_cast < LLFloater* > - ( LLIMFloater::findInstance(session_id) ); - } - return floater; -} - void LLIMMgr::showSessionStartError( const std::string& error_string, const LLUUID session_id) { - const LLFloater* floater = getFloaterBySessionID (session_id); - if (!floater) return; + if (!hasSession(session_id)) return; LLSD args; args["REASON"] = LLTrans::getString(error_string); - args["RECIPIENT"] = floater->getTitle(); + args["RECIPIENT"] = LLIMModel::getInstance()->getName(session_id); LLSD payload; payload["session_id"] = session_id; @@ -1337,12 +1303,11 @@ LLIMMgr::showSessionForceClose( const std::string& reason_string, const LLUUID session_id) { - const LLFloater* floater = getFloaterBySessionID (session_id); - if (!floater) return; + if (!hasSession(session_id)) return; LLSD args; - args["NAME"] = floater->getTitle(); + args["NAME"] = LLIMModel::getInstance()->getName(session_id); args["REASON"] = LLTrans::getString(reason_string); LLSD payload; @@ -1364,7 +1329,7 @@ LLIMMgr::onConfirmForceCloseError( //only 1 option really LLUUID session_id = notification["payload"]["session_id"]; - LLFloater* floater = getFloaterBySessionID (session_id); + LLFloater* floater = LLIMFloater::findInstance(session_id); if ( floater ) { floater->closeFloater(FALSE); @@ -1496,9 +1461,11 @@ void LLCallDialogManager::onVoiceChannelStateChanged(const LLVoiceChannel::EStat //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Class LLCallDialog //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -LLCallDialog::LLCallDialog(const LLSD& payload) : -LLDockableFloater(NULL, false, payload), -mPayload(payload) +LLCallDialog::LLCallDialog(const LLSD& payload) + : LLDockableFloater(NULL, false, payload), + + mPayload(payload), + mLifetime(DEFAULT_LIFETIME) { } @@ -1577,7 +1544,7 @@ void LLCallDialog::setIcon(const LLSD& session_id, const LLSD& participant_id) } } -bool LLOutgoingCallDialog::lifetimeHasExpired() +bool LLCallDialog::lifetimeHasExpired() { if (mLifetimeTimer.getStarted()) { @@ -1590,7 +1557,7 @@ bool LLOutgoingCallDialog::lifetimeHasExpired() return false; } -void LLOutgoingCallDialog::onLifetimeExpired() +void LLCallDialog::onLifetimeExpired() { mLifetimeTimer.stop(); closeFloater(); @@ -1600,6 +1567,9 @@ void LLOutgoingCallDialog::show(const LLSD& key) { mPayload = key; + //will be false only if voice in parcel is disabled and channel we leave is nearby(checked further) + bool show_oldchannel = LLViewerParcelMgr::getInstance()->allowAgentVoice(); + // hide all text at first hideAllText(); @@ -1623,10 +1593,11 @@ void LLOutgoingCallDialog::show(const LLSD& key) } childSetTextArg("leaving", "[CURRENT_CHAT]", old_caller_name); + show_oldchannel = true; } else { - childSetTextArg("leaving", "[CURRENT_CHAT]", getString("localchat")); + childSetTextArg("leaving", "[CURRENT_CHAT]", getString("localchat")); } if (!mPayload["disconnected_channel_name"].asString().empty()) @@ -1671,15 +1642,22 @@ void LLOutgoingCallDialog::show(const LLSD& key) { case LLVoiceChannel::STATE_CALL_STARTED : getChild<LLTextBox>("calling")->setVisible(true); - getChild<LLTextBox>("leaving")->setVisible(true); + if(show_oldchannel) + { + getChild<LLTextBox>("leaving")->setVisible(true); + } break; case LLVoiceChannel::STATE_RINGING : - getChild<LLTextBox>("leaving")->setVisible(true); + if(show_oldchannel) + { + getChild<LLTextBox>("leaving")->setVisible(true); + } getChild<LLTextBox>("connecting")->setVisible(true); break; case LLVoiceChannel::STATE_ERROR : getChild<LLTextBox>("noanswer")->setVisible(true); getChild<LLButton>("Cancel")->setVisible(false); + setCanClose(true); mLifetimeTimer.start(); break; case LLVoiceChannel::STATE_HUNG_UP : @@ -1692,6 +1670,7 @@ void LLOutgoingCallDialog::show(const LLSD& key) getChild<LLTextBox>("nearby")->setVisible(true); } getChild<LLButton>("Cancel")->setVisible(false); + setCanClose(true); mLifetimeTimer.start(); } @@ -1742,19 +1721,6 @@ LLCallDialog(payload) { } -bool LLIncomingCallDialog::lifetimeHasExpired() -{ - if (mLifetimeTimer.getStarted()) - { - F32 elapsed_time = mLifetimeTimer.getElapsedTimeF32(); - if (elapsed_time > mLifetime) - { - return true; - } - } - return false; -} - void LLIncomingCallDialog::onLifetimeExpired() { // check whether a call is valid or not @@ -2112,8 +2078,7 @@ bool inviteUserResponse(const LLSD& notification, const LLSD& response) // Member Functions // -LLIMMgr::LLIMMgr() : - mIMReceived(FALSE) +LLIMMgr::LLIMMgr() { mPendingInvitations = LLSD::emptyMap(); mPendingAgentListUpdates = LLSD::emptyMap(); @@ -2144,7 +2109,6 @@ void LLIMMgr::addMessage( return; } - LLFloaterIMPanel* floater; LLUUID new_session_id = session_id; if (new_session_id.isNull()) { @@ -2163,32 +2127,7 @@ void LLIMMgr::addMessage( if (new_session) { LLIMModel::getInstance()->newSession(new_session_id, fixed_session_name, dialog, other_participant_id); - } - - floater = findFloaterBySession(new_session_id); - if (!floater) - { - floater = findFloaterBySession(other_participant_id); - if (floater) - { - llinfos << "found the IM session " << session_id - << " by participant " << other_participant_id << llendl; - } - } - - // create IM window as necessary - if(!floater) - { - floater = createFloater( - new_session_id, - other_participant_id, - fixed_session_name, - dialog, - FALSE); - } - if (new_session) - { // When we get a new IM, and if you are a god, display a bit // of information about the source. This is to help liaisons // when answering questions. @@ -2207,50 +2146,13 @@ void LLIMMgr::addMessage( //<< "*** region_id: " << region_id << std::endl //<< "*** position: " << position << std::endl; - floater->addHistoryLine(bonus_info.str(), LLUIColorTable::instance().getColor("SystemChatColor")); LLIMModel::instance().addMessage(new_session_id, from, other_participant_id, bonus_info.str()); } make_ui_sound("UISndNewIncomingIMSession"); } - // now add message to floater - bool is_from_system = target_id.isNull() || (from == SYSTEM_FROM); - const LLColor4& color = ( is_from_system ? - LLUIColorTable::instance().getColor("SystemChatColor") : - LLUIColorTable::instance().getColor("IMChatColor")); - if ( !link_name ) - { - floater->addHistoryLine(msg,color); // No name to prepend, so just add the message normally - } - else - { - floater->addHistoryLine(msg, color, true, other_participant_id, from); // Insert linked name to front of message - } - LLIMModel::instance().addMessage(new_session_id, from, other_participant_id, msg); - - if( !LLFloaterReg::instanceVisible("communicate") && !floater->getVisible()) - { - LLFloaterChatterBox* chat_floater = LLFloaterChatterBox::getInstance(); - - //if the IM window is not open and the floater is not visible (i.e. not torn off) - LLFloater* previouslyActiveFloater = chat_floater->getActiveFloater(); - - // select the newly added floater (or the floater with the new line added to it). - // it should be there. - chat_floater->selectFloater(floater); - - //there was a previously unseen IM, make that old tab flashing - //it is assumed that the most recently unseen IM tab is the one current selected/active - if ( previouslyActiveFloater && getIMReceived() ) - { - chat_floater->setFloaterFlashing(previouslyActiveFloater, TRUE); - } - - //notify of a new IM - notifyNewIM(); - } } void LLIMMgr::addSystemMessage(const LLUUID& session_id, const std::string& message_name, const LLSD& args) @@ -2283,14 +2185,6 @@ void LLIMMgr::addSystemMessage(const LLUUID& session_id, const std::string& mess } } -void LLIMMgr::notifyNewIM() -{ - if(!LLFloaterReg::instanceVisible("communicate")) - { - mIMReceived = TRUE; - } -} - S32 LLIMMgr::getNumberOfUnreadIM() { std::map<LLUUID, LLIMModel::LLIMSession*>::iterator it; @@ -2317,16 +2211,6 @@ S32 LLIMMgr::getNumberOfUnreadParticipantMessages() return num; } -void LLIMMgr::clearNewIMNotification() -{ - mIMReceived = FALSE; -} - -BOOL LLIMMgr::getIMReceived() const -{ - return mIMReceived; -} - void LLIMMgr::autoStartCallOnStartup(const LLUUID& session_id) { LLIMModel::LLIMSession *session = LLIMModel::getInstance()->findIMSession(session_id); @@ -2414,21 +2298,6 @@ LLUUID LLIMMgr::addSession( LLIMModel::getInstance()->newSession(session_id, name, dialog, other_participant_id, ids, voice); } - //*TODO remove this "floater" thing when Communicate Floater's gone - LLFloaterIMPanel* floater = findFloaterBySession(session_id); - if(!floater) - { - // On creation, use the first element of ids as the - // "other_participant_id" - floater = createFloater( - session_id, - other_participant_id, - name, - dialog, - TRUE, - ids); - } - //we don't need to show notes about online/offline, mute/unmute users' statuses for existing sessions if (!new_session) return session_id; @@ -2439,7 +2308,7 @@ LLUUID LLIMMgr::addSession( // Only warn for regular IMs - not group IMs if( dialog == IM_NOTHING_SPECIAL ) { - noteMutedUsers(session_id, floater, ids); + noteMutedUsers(session_id, ids); } return session_id; @@ -2460,14 +2329,6 @@ void LLIMMgr::removeSession(const LLUUID& session_id) { llassert_always(hasSession(session_id)); - //*TODO remove this floater thing when Communicate Floater is being deleted (IB) - LLFloaterIMPanel* floater = findFloaterBySession(session_id); - if(floater) - { - mFloaters.erase(floater->getHandle()); - LLFloaterChatterBox::getInstance()->removeFloater(floater); - } - clearPendingInvitation(session_id); clearPendingAgentListUpdates(session_id); @@ -2577,50 +2438,12 @@ void LLIMMgr::onInviteNameLookup(LLSD payload, const LLUUID& id, const std::stri LLFloaterReg::showInstance("incoming_call", payload, TRUE); } +//*TODO disconnects all sessions void LLIMMgr::disconnectAllSessions() { - LLFloaterIMPanel* floater = NULL; - std::set<LLHandle<LLFloater> >::iterator handle_it; - for(handle_it = mFloaters.begin(); - handle_it != mFloaters.end(); - ) - { - floater = (LLFloaterIMPanel*)handle_it->get(); - - // MUST do this BEFORE calling floater->onClose() because that may remove the item from the set, causing the subsequent increment to crash. - ++handle_it; - - if (floater) - { - floater->setEnabled(FALSE); - floater->closeFloater(TRUE); - } - } + //*TODO disconnects all IM sessions } - -// This method returns the im panel corresponding to the uuid -// provided. The uuid can either be a session id or an agent -// id. Returns NULL if there is no matching panel. -LLFloaterIMPanel* LLIMMgr::findFloaterBySession(const LLUUID& session_id) -{ - LLFloaterIMPanel* rv = NULL; - std::set<LLHandle<LLFloater> >::iterator handle_it; - for(handle_it = mFloaters.begin(); - handle_it != mFloaters.end(); - ++handle_it) - { - rv = (LLFloaterIMPanel*)handle_it->get(); - if(rv && session_id == rv->getSessionID()) - { - break; - } - rv = NULL; - } - return rv; -} - - BOOL LLIMMgr::hasSession(const LLUUID& session_id) { return LLIMModel::getInstance()->findIMSession(session_id) != NULL; @@ -2804,49 +2627,14 @@ bool LLIMMgr::isVoiceCall(const LLUUID& session_id) return im_session->mStartedAsIMCall; } -// create a floater and update internal representation for -// consistency. Returns the pointer, caller (the class instance since -// it is a private method) is not responsible for deleting the -// pointer. Add the floater to this but do not select it. -LLFloaterIMPanel* LLIMMgr::createFloater( - const LLUUID& session_id, - const LLUUID& other_participant_id, - const std::string& session_label, - EInstantMessage dialog, - BOOL user_initiated, - const LLDynamicArray<LLUUID>& ids) -{ - if (session_id.isNull()) - { - llwarns << "Creating LLFloaterIMPanel with null session ID" << llendl; - } - - llinfos << "LLIMMgr::createFloater: from " << other_participant_id - << " in session " << session_id << llendl; - LLFloaterIMPanel* floater = new LLFloaterIMPanel(session_label, - session_id, - other_participant_id, - ids, - dialog); - LLTabContainer::eInsertionPoint i_pt = user_initiated ? LLTabContainer::RIGHT_OF_CURRENT : LLTabContainer::END; - LLFloaterChatterBox::getInstance()->addFloater(floater, FALSE, i_pt); - mFloaters.insert(floater->getHandle()); - return floater; -} - void LLIMMgr::noteOfflineUsers( const LLUUID& session_id, - LLFloaterIMPanel* floater, const LLDynamicArray<LLUUID>& ids) { S32 count = ids.count(); if(count == 0) { const std::string& only_user = LLTrans::getString("only_user_message"); - if (floater) - { - floater->addHistoryLine(only_user, LLUIColorTable::instance().getColor("SystemChatColor")); - } LLIMModel::getInstance()->addMessage(session_id, SYSTEM_FROM, LLUUID::null, only_user); } else @@ -2870,7 +2658,7 @@ void LLIMMgr::noteOfflineUsers( } } -void LLIMMgr::noteMutedUsers(const LLUUID& session_id, LLFloaterIMPanel* floater, +void LLIMMgr::noteMutedUsers(const LLUUID& session_id, const LLDynamicArray<LLUUID>& ids) { // Don't do this if we don't have a mute list. @@ -2891,9 +2679,6 @@ void LLIMMgr::noteMutedUsers(const LLUUID& session_id, LLFloaterIMPanel* floater { LLUIString muted = LLTrans::getString("muted_message"); - //*TODO remove this "floater" thing when Communicate Floater's gone - floater->addHistoryLine(muted); - im_model->addMessage(session_id, SYSTEM_FROM, LLUUID::null, muted); break; } @@ -2914,12 +2699,6 @@ void LLIMMgr::processIMTypingStop(const LLIMInfo* im_info) void LLIMMgr::processIMTypingCore(const LLIMInfo* im_info, BOOL typing) { LLUUID session_id = computeSessionID(im_info->mIMType, im_info->mFromID); - LLFloaterIMPanel* floater = findFloaterBySession(session_id); - if (floater) - { - floater->processIMTyping(im_info, typing); - } - LLIMFloater* im_floater = LLIMFloater::findInstance(session_id); if ( im_floater ) { @@ -2965,15 +2744,6 @@ public: speaker_mgr->updateSpeakers(gIMMgr->getPendingAgentListUpdates(session_id)); } - LLFloaterIMPanel* floaterp = gIMMgr->findFloaterBySession(session_id); - if (floaterp) - { - if ( body.has("session_info") ) - { - floaterp->processSessionUpdate(body["session_info"]); - } - } - LLIMFloater* im_floater = LLIMFloater::findInstance(session_id); if ( im_floater ) { @@ -3068,11 +2838,6 @@ public: const LLSD& input) const { LLUUID session_id = input["body"]["session_id"].asUUID(); - LLFloaterIMPanel* floaterp = gIMMgr->findFloaterBySession(session_id); - if (floaterp) - { - floaterp->processSessionUpdate(input["body"]["info"]); - } LLIMFloater* im_floater = LLIMFloater::findInstance(session_id); if ( im_floater ) { @@ -3217,6 +2982,48 @@ public: } }; +LLCallInfoDialog::LLCallInfoDialog(const LLSD& payload) : LLCallDialog(payload) +{ +} + +BOOL LLCallInfoDialog::postBuild() +{ + // init notification's lifetime + std::istringstream ss( getString("lifetime") ); + if (!(ss >> mLifetime)) + { + mLifetime = DEFAULT_LIFETIME; + } + return LLCallDialog::postBuild(); +} + +void LLCallInfoDialog::onOpen(const LLSD& key) +{ + if(key.has("msg")) + { + std::string msg = key["msg"]; + getChild<LLTextBox>("msg")->setValue(msg); + } + + mLifetimeTimer.start(); +} + +void LLCallInfoDialog::show(const std::string& status_name, const LLSD& args) +{ + LLUIString message = LLTrans::getString(status_name); + message.setArgs(args); + + LLSD payload; + payload["msg"] = message; + LLFloater* inst = LLFloaterReg::findInstance("call_info"); + + // avoid recreate instance with the same message + if (inst == NULL || message.getString() != inst->getChild<LLTextBox>("msg")->getValue()) + { + LLFloaterReg::showInstance("call_info", payload); + } +} + LLHTTPRegistration<LLViewerChatterBoxSessionStartReply> gHTTPRegistrationMessageChatterboxsessionstartreply( "/message/ChatterBoxSessionStartReply"); diff --git a/indra/newview/llimview.h b/indra/newview/llimview.h index a3b4f78af0..b573490fa3 100644 --- a/indra/newview/llimview.h +++ b/indra/newview/llimview.h @@ -39,9 +39,8 @@ #include "lllogchat.h" #include "llvoicechannel.h" -class LLFloaterChatterBox; -class LLUUID; -class LLFloaterIMPanel; + + class LLFriendObserver; class LLCallDialogManager; class LLIMSpeakerMgr; @@ -361,15 +360,9 @@ public: void processIMTypingStart(const LLIMInfo* im_info); void processIMTypingStop(const LLIMInfo* im_info); - void notifyNewIM(); - void clearNewIMNotification(); - // automatically start a call once the session has initialized void autoStartCallOnStartup(const LLUUID& session_id); - // IM received that you haven't seen yet - BOOL getIMReceived() const; - // Calc number of all unread IMs S32 getNumberOfUnreadIM(); @@ -386,11 +379,6 @@ public: BOOL hasSession(const LLUUID& session_id); - // This method returns the im panel corresponding to the uuid - // provided. The uuid must be a session id. Returns NULL if there - // is no matching panel. - LLFloaterIMPanel* findFloaterBySession(const LLUUID& session_id); - static LLUUID computeSessionID(EInstantMessage dialog, const LLUUID& other_participant_id); void clearPendingInvitation(const LLUUID& session_id); @@ -402,10 +390,6 @@ public: const LLSD& updates); void clearPendingAgentListUpdates(const LLUUID& session_id); - //HACK: need a better way of enumerating existing session, or listening to session create/destroy events - //@deprecated, is used only by LLToolBox, which is not used anywhere, right? (IB) - const std::set<LLHandle<LLFloater> >& getIMFloaterHandles() { return mFloaters; } - void addSessionObserver(LLIMSessionObserver *); void removeSessionObserver(LLIMSessionObserver *); @@ -436,23 +420,12 @@ private: */ void removeSession(const LLUUID& session_id); - // create a panel and update internal representation for - // consistency. Returns the pointer, caller (the class instance - // since it is a private method) is not responsible for deleting - // the pointer. - LLFloaterIMPanel* createFloater(const LLUUID& session_id, - const LLUUID& target_id, - const std::string& name, - EInstantMessage dialog, - BOOL user_initiated = FALSE, - const LLDynamicArray<LLUUID>& ids = LLDynamicArray<LLUUID>()); - // This simple method just iterates through all of the ids, and // prints a simple message if they are not online. Used to help // reduce 'hello' messages to the linden employees unlucky enough // to have their calling card in the default inventory. - void noteOfflineUsers(const LLUUID& session_id, LLFloaterIMPanel* panel, const LLDynamicArray<LLUUID>& ids); - void noteMutedUsers(const LLUUID& session_id, LLFloaterIMPanel* panel, const LLDynamicArray<LLUUID>& ids); + void noteOfflineUsers(const LLUUID& session_id, const LLDynamicArray<LLUUID>& ids); + void noteMutedUsers(const LLUUID& session_id, const LLDynamicArray<LLUUID>& ids); void processIMTypingCore(const LLIMInfo* im_info, BOOL typing); @@ -464,15 +437,9 @@ private: private: - //*TODO should be deleted when Communicate Floater is being deleted - std::set<LLHandle<LLFloater> > mFloaters; - typedef std::list <LLIMSessionObserver *> session_observers_list_t; session_observers_list_t mSessionObservers; - // An IM has been received that you haven't seen yet. - BOOL mIMReceived; - LLSD mPendingInvitations; LLSD mPendingAgentListUpdates; }; @@ -512,8 +479,8 @@ protected: // notification's lifetime in seconds S32 mLifetime; static const S32 DEFAULT_LIFETIME = 5; - virtual bool lifetimeHasExpired() {return false;}; - virtual void onLifetimeExpired() {}; + virtual bool lifetimeHasExpired(); + virtual void onLifetimeExpired(); virtual void getAllowedRect(LLRect& rect); @@ -543,7 +510,6 @@ public: static void onStartIM(void* user_data); private: - /*virtual*/ bool lifetimeHasExpired(); /*virtual*/ void onLifetimeExpired(); void processCallResponse(S32 response); }; @@ -562,8 +528,16 @@ public: private: // hide all text boxes void hideAllText(); - /*virtual*/ bool lifetimeHasExpired(); - /*virtual*/ void onLifetimeExpired(); +}; + +class LLCallInfoDialog : public LLCallDialog +{ +public: + LLCallInfoDialog(const LLSD& payload); + /*virtual*/ BOOL postBuild(); + /*virtual*/ void onOpen(const LLSD& key); + + static void show(const std::string& status_name, const LLSD& args); }; // Globals diff --git a/indra/newview/llinspectavatar.cpp b/indra/newview/llinspectavatar.cpp index 8aaa95364c..857abed811 100644 --- a/indra/newview/llinspectavatar.cpp +++ b/indra/newview/llinspectavatar.cpp @@ -229,6 +229,7 @@ LLInspectAvatar::LLInspectAvatar(const LLSD& sd) mEnableCallbackRegistrar.add("InspectAvatar.VisibleZoomIn", boost::bind(&LLInspectAvatar::onVisibleZoomIn, this)); mEnableCallbackRegistrar.add("InspectAvatar.Gear.Enable", boost::bind(&LLInspectAvatar::isNotFriend, this)); + mEnableCallbackRegistrar.add("InspectAvatar.Gear.EnableCall", boost::bind(&LLAvatarActions::canCall)); mEnableCallbackRegistrar.add("InspectAvatar.EnableMute", boost::bind(&LLInspectAvatar::enableMute, this)); mEnableCallbackRegistrar.add("InspectAvatar.EnableUnmute", boost::bind(&LLInspectAvatar::enableUnmute, this)); diff --git a/indra/newview/llinspectremoteobject.cpp b/indra/newview/llinspectremoteobject.cpp index 7319bd0331..892dce588f 100644 --- a/indra/newview/llinspectremoteobject.cpp +++ b/indra/newview/llinspectremoteobject.cpp @@ -31,17 +31,16 @@ #include "llviewerprecompiledheaders.h" +#include "llfloaterreg.h" #include "llinspectremoteobject.h" #include "llinspect.h" -#include "llslurl.h" #include "llmutelist.h" -#include "llurlaction.h" #include "llpanelblockedlist.h" -#include "llfloaterreg.h" +#include "llslurl.h" +#include "lltrans.h" #include "llui.h" #include "lluictrl.h" - -class LLViewerObject; +#include "llurlaction.h" ////////////////////////////////////////////////////////////////////////////// // LLInspectRemoteObject @@ -183,11 +182,25 @@ void LLInspectRemoteObject::update() owner = LLSLURL("agent", mOwnerID, "about").getSLURLString(); } } + else + { + owner = LLTrans::getString("Unknown"); + } getChild<LLUICtrl>("object_owner")->setValue(owner); // display the object's SLurl - click it to teleport - std::string url = "secondlife:///app/teleport/" + mSLurl; + std::string url; + if (! mSLurl.empty()) + { + std::string url = "secondlife:///app/teleport/" + mSLurl; + } getChild<LLUICtrl>("object_slurl")->setValue(url); + + // disable the Map button if we don't have a SLurl + getChild<LLUICtrl>("map_btn")->setEnabled(! mSLurl.empty()); + + // disable the Block button if we don't have the owner ID + getChild<LLUICtrl>("block_btn")->setEnabled(! mOwnerID.isNull()); } ////////////////////////////////////////////////////////////////////////////// diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index 6c9c7d15be..e04d3ec5a0 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -5079,7 +5079,7 @@ void LLLandmarkBridgeAction::doIt() payload["asset_id"] = item->getAssetUUID(); LLSD args; - args["LOCATION"] = item->getDisplayName(); + args["LOCATION"] = item->getName(); LLNotificationsUtil::add("TeleportFromLandmark", args, payload); } diff --git a/indra/newview/llinventorybridge.h b/indra/newview/llinventorybridge.h index 759d0cba18..eeb8246b11 100644 --- a/indra/newview/llinventorybridge.h +++ b/indra/newview/llinventorybridge.h @@ -320,8 +320,12 @@ public: LLViewerInventoryCategory* getCategory() const; protected: - LLFolderBridge(LLInventoryPanel* inventory, const LLUUID& uuid) : - LLInvFVBridge(inventory, uuid), mCallingCards(FALSE), mWearables(FALSE) {} + LLFolderBridge(LLInventoryPanel* inventory, const LLUUID& uuid) + : LLInvFVBridge(inventory, uuid), + + mCallingCards(FALSE), + mWearables(FALSE), + mMenu(NULL) {} // menu callbacks static void pasteClipboard(void* user_data); diff --git a/indra/newview/llinventoryfilter.cpp b/indra/newview/llinventoryfilter.cpp index b4dcb566e4..cd20d64ca8 100644 --- a/indra/newview/llinventoryfilter.cpp +++ b/indra/newview/llinventoryfilter.cpp @@ -39,7 +39,6 @@ #include "llfolderviewitem.h" #include "llinventorymodel.h" // gInventory.backgroundFetchActive() #include "llviewercontrol.h" -#include "llviewerinventory.h" #include "llfolderview.h" // linden library includes diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp index 2885ba13fa..33623539e9 100644 --- a/indra/newview/llinventoryfunctions.cpp +++ b/indra/newview/llinventoryfunctions.cpp @@ -76,7 +76,6 @@ #include "lltabcontainer.h" #include "lltooldraganddrop.h" #include "lluictrlfactory.h" -#include "llviewerinventory.h" #include "llviewermessage.h" #include "llviewerobjectlist.h" #include "llviewerregion.h" diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp index bd766e8519..0af584e7dc 100644 --- a/indra/newview/llinventorymodel.cpp +++ b/indra/newview/llinventorymodel.cpp @@ -142,6 +142,105 @@ bool LLCanCache::operator()(LLInventoryCategory* cat, LLInventoryItem* item) return rv; } +/* +This namespace contains a functionality to remove LM prefixes were used to store sort order of +Favorite Landmarks in landmarks' names. +Once being in Favorites folder LM inventory Item has such prefix. +Due to another solution is implemented in EXT-3985 these prefixes should be removed. + +*NOTE: It will be unnecessary after the first successful session in viewer 2.0. +Can be removed before public release. + +Implementation details: +At the first run with this patch it patches all cached landmarks: removes LM sort prefixes and +updates them on the viewer and server sides. +Also it calls fetching agent's inventory to process not yet loaded landmarks too. +If fetching is successfully done it will store special per-agent empty file-marker +in the user temporary folder (where cached inventory is loaded) while caching agent's inventory. +After that in will not affect the viewer until cached marker is removed. +*/ +namespace LMSortPrefix +{ + bool cleanup_done = false; + const std::string getMarkerPath() + { + std::string path(gDirUtilp->getExpandedFilename(LL_PATH_CACHE, gAgentID.asString())); + std::string marker_filename = llformat("%s-lm_prefix_marker", path.c_str()); + + return marker_filename; + } + bool wasClean() + { + static bool was_clean = false; + static bool already_init = false; + if (already_init) return was_clean; + + already_init = true; + std::string path_to_marker = getMarkerPath(); + was_clean = LLFile::isfile(path_to_marker); + + return was_clean; + } + + void setLandmarksWereCleaned() + { + if (cleanup_done) + { + std::string path_to_marker = getMarkerPath(); + LLFILE* file = LLFile::fopen(path_to_marker, "w"); + if(!file) + { + llwarns << "unable to save marker that LM prefixes were removed: " << path_to_marker << llendl; + return; + } + + fclose(file); + } + } + + void removePrefix(LLPointer<LLViewerInventoryItem> inv_item) + { + if (wasClean()) + { + LL_INFOS_ONCE("") << "Inventory was cleaned for this avatar. Patch can be removed." << LL_ENDL; + return; + } + + if (LLInventoryType::IT_LANDMARK != inv_item->getInventoryType()) return; + + std::string old_name = inv_item->getName(); + + S32 sort_field = -1; + std::string display_name; + BOOL exists = LLViewerInventoryItem::extractSortFieldAndDisplayName(old_name, &sort_field, &display_name); + if (exists && sort_field != -1) + { + llinfos << "Removing Landmark sort field and separator for: " << old_name << " | " << inv_item->getUUID() << llendl; + LLUUID parent_uuid = inv_item->getParentUUID(); + if (gInventory.getCategory(parent_uuid)) + { + llinfos << "parent folder is: " << gInventory.getCategory(parent_uuid)->getName() << llendl; + } + + + // mark item completed to avoid error while copying and updating server + inv_item->setComplete(TRUE); + LLPointer<LLViewerInventoryItem> new_item = new LLViewerInventoryItem(inv_item.get()); + new_item->rename(display_name); + gInventory.updateItem(new_item); + new_item->updateServer(FALSE); + + gInventory.notifyObservers(); + } + } + + void completeCleanup() + { + // background fetch is completed. can save marker + cleanup_done = true; + } +} + ///---------------------------------------------------------------------------- /// Class LLInventoryModel ///---------------------------------------------------------------------------- @@ -1741,6 +1840,8 @@ void LLInventoryModel::stopBackgroundFetch() gIdleCallbacks.deleteFunction(&LLInventoryModel::backgroundFetch, NULL); sBulkFetchCount=0; sMinTimeBetweenFetches=0.0f; + + LMSortPrefix::completeCleanup(); } } @@ -1887,6 +1988,13 @@ void LLInventoryModel::cache( const LLUUID& parent_folder_id, const LLUUID& agent_id) { + if (getRootFolderID() == parent_folder_id) + { + // *TODO: mantipov: can be removed before public release, EXT-3985 + //save marker to avoid fetching inventory on future sessions + LMSortPrefix::setLandmarksWereCleaned(); + } + lldebugs << "Caching " << parent_folder_id << " for " << agent_id << llendl; LLViewerInventoryCategory* root_cat = getCategory(parent_folder_id); @@ -2697,6 +2805,28 @@ void LLInventoryModel::buildParentChildMap() // The inv tree is built. mIsAgentInvUsable = true; + {// *TODO: mantipov: can be removed before public release, EXT-3985 + /* + *HACK: mantipov: to cleanup landmarks were marked with sort index prefix in name. + Is necessary to be called once per account after EXT-3985 is implemented. + So, let fetch agent's inventory, processing will be done in processInventoryDescendents() + Should be removed before public release. + */ + if (!LMSortPrefix::wasClean()) + { + cat_array_t cats; + item_array_t items; + collectDescendents(agent_inv_root_id, cats, items, INCLUDE_TRASH); + + for (item_array_t::const_iterator it= items.begin(); it != items.end(); ++it) + { + LMSortPrefix::removePrefix(*it); + } + + gInventory.startBackgroundFetch(agent_inv_root_id); + } + } + llinfos << "Inventory initialized, notifying observers" << llendl; addChangedMask(LLInventoryObserver::ALL, LLUUID::null); notifyObservers(); @@ -3462,6 +3592,10 @@ void LLInventoryModel::processInventoryDescendents(LLMessageSystem* msg,void**) continue; } gInventory.updateItem(titem); + + {// *TODO: mantipov: can be removed before public release, EXT-3985 + LMSortPrefix::removePrefix(titem); + } } // set version and descendentcount according to message. diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp index 7e71ac90b4..12a2c370d2 100644 --- a/indra/newview/llinventorypanel.cpp +++ b/indra/newview/llinventorypanel.cpp @@ -759,7 +759,9 @@ bool LLInventoryPanel::beginIMSession() S32 count = item_array.count(); if(count > 0) { - LLFloaterReg::showInstance("communicate"); + //*TODO by what to replace that? + //LLFloaterReg::showInstance("communicate"); + // create the session LLAvatarTracker& at = LLAvatarTracker::instance(); LLUUID id; diff --git a/indra/newview/lllocaltextureobject.cpp b/indra/newview/lllocaltextureobject.cpp index 6bcbe6f58c..69eb5fce2f 100644 --- a/indra/newview/lllocaltextureobject.cpp +++ b/indra/newview/lllocaltextureobject.cpp @@ -47,7 +47,9 @@ LLLocalTextureObject::LLLocalTextureObject() : mImage = NULL; } -LLLocalTextureObject::LLLocalTextureObject(LLViewerFetchedTexture* image, const LLUUID& id) +LLLocalTextureObject::LLLocalTextureObject(LLViewerFetchedTexture* image, const LLUUID& id) : + mIsBakedReady(FALSE), + mDiscard(MAX_DISCARD_LEVEL+1) { mImage = image; gGL.getTexUnit(0)->bind(mImage); diff --git a/indra/newview/lllocationhistory.cpp b/indra/newview/lllocationhistory.cpp index ae1b8f8540..df93930d33 100644 --- a/indra/newview/lllocationhistory.cpp +++ b/indra/newview/lllocationhistory.cpp @@ -50,18 +50,19 @@ void LLLocationHistory::addItem(const LLLocationHistoryItem& item) { // check if this item doesn't duplicate any existing one location_list_t::iterator item_iter = std::find(mItems.begin(), mItems.end(),item); - if(item_iter != mItems.end()){ + if(item_iter != mItems.end()) // if it already exists, erase the old one + { mItems.erase(item_iter); } mItems.push_back(item); - // If the vector size exceeds the maximum, purge the oldest items. - if ((S32)mItems.size() > max_items) { - for(location_list_t::iterator i = mItems.begin(); i != mItems.end()-max_items; ++i) { - mItems.erase(i); - } + // If the vector size exceeds the maximum, purge the oldest items (at the start of the mItems vector). + if ((S32)mItems.size() > max_items) + { + mItems.erase(mItems.begin(), mItems.end()-max_items); } + llassert((S32)mItems.size() <= max_items); } /* diff --git a/indra/newview/lllocationinputctrl.cpp b/indra/newview/lllocationinputctrl.cpp index 8956a5e1bb..73fb124e9e 100644 --- a/indra/newview/lllocationinputctrl.cpp +++ b/indra/newview/lllocationinputctrl.cpp @@ -39,6 +39,7 @@ #include "llbutton.h" #include "llfocusmgr.h" #include "llmenugl.h" +#include "llparcel.h" #include "llstring.h" #include "lltrans.h" #include "lluictrlfactory.h" @@ -671,11 +672,12 @@ void LLLocationInputCtrl::refreshParcelIcons() if (show_properties) { LLViewerParcelMgr* vpm = LLViewerParcelMgr::getInstance(); - bool allow_buy = vpm->canAgentBuyParcel( vpm->getAgentParcel(), false); + LLParcel* agent_parcel = vpm->getAgentParcel(); + bool allow_buy = vpm->canAgentBuyParcel( agent_parcel, false); bool allow_voice = vpm->allowAgentVoice(); bool allow_fly = vpm->allowAgentFly(); bool allow_push = vpm->allowAgentPush(); - bool allow_build = vpm->allowAgentBuild(); + bool allow_build = agent_parcel && agent_parcel->getAllowModify(); // true when anyone is allowed to build. See EXT-4610. bool allow_scripts = vpm->allowAgentScripts(); bool allow_damage = vpm->allowAgentDamage(); diff --git a/indra/newview/llmanipscale.cpp b/indra/newview/llmanipscale.cpp index 84a5eb7352..ee3ffa2450 100644 --- a/indra/newview/llmanipscale.cpp +++ b/indra/newview/llmanipscale.cpp @@ -180,6 +180,7 @@ LLManipScale::LLManipScale( LLToolComposite* composite ) mScaleSnapUnit2(1.f), mSnapRegimeOffset(0.f), mSnapGuideLength(0.f), + mInSnapRegime(FALSE), mScaleSnapValue(0.f) { mManipulatorScales = new F32[NUM_MANIPULATORS]; diff --git a/indra/newview/llmaniptranslate.cpp b/indra/newview/llmaniptranslate.cpp index 5f30ab4e01..52fe31fbba 100644 --- a/indra/newview/llmaniptranslate.cpp +++ b/indra/newview/llmaniptranslate.cpp @@ -123,9 +123,13 @@ LLManipTranslate::LLManipTranslate( LLToolComposite* composite ) mAxisArrowLength(50), mConeSize(0), mArrowLengthMeters(0.f), + mGridSizeMeters(1.f), mPlaneManipOffsetMeters(0.f), mUpdateTimer(), mSnapOffsetMeters(0.f), + mSubdivisions(10.f), + mInSnapRegime(FALSE), + mSnapped(FALSE), mArrowScales(1.f, 1.f, 1.f), mPlaneScales(1.f, 1.f, 1.f), mPlaneManipPositions(1.f, 1.f, 1.f, 1.f) diff --git a/indra/newview/llmoveview.cpp b/indra/newview/llmoveview.cpp index 0ab3b07aea..4bf2bac649 100644 --- a/indra/newview/llmoveview.cpp +++ b/indra/newview/llmoveview.cpp @@ -589,8 +589,16 @@ void LLPanelStandStopFlying::setVisible(BOOL visible) updatePosition(); } - //change visibility of parent layout_panel to animate in/out - if (getParent()) getParent()->setVisible(visible); + // do not change parent visibility in case panel is attached into Move Floater: EXT-3632, EXT-4646 + if (!mAttached) + { + //change visibility of parent layout_panel to animate in/out. EXT-2504 + if (getParent()) getParent()->setVisible(visible); + } + + // also change own visibility to avoid displaying the panel in mouselook (broken when EXT-2504 was implemented). + // See EXT-4718. + LLPanel::setVisible(visible); } BOOL LLPanelStandStopFlying::handleToolTip(S32 x, S32 y, MASK mask) @@ -614,7 +622,7 @@ void LLPanelStandStopFlying::reparent(LLFloaterMove* move_view) LLPanel* parent = dynamic_cast<LLPanel*>(getParent()); if (!parent) { - llwarns << "Stand/stop flying panel parent is unset" << llendl; + llwarns << "Stand/stop flying panel parent is unset, already attached?: " << mAttached << ", new parent: " << (move_view == NULL ? "NULL" : "Move Floater") << llendl; return; } @@ -643,6 +651,9 @@ void LLPanelStandStopFlying::reparent(LLFloaterMove* move_view) // Detach from movement controls. parent->removeChild(this); mOriginalParent.get()->addChild(this); + // update parent with self visibility (it is changed in setVisible()). EXT-4743 + mOriginalParent.get()->setVisible(getVisible()); + mAttached = false; updatePosition(); // don't defer until next draw() to avoid flicker } @@ -684,6 +695,7 @@ void LLPanelStandStopFlying::onStopFlyingButtonClick() gAgent.setFlying(FALSE); setFocus(FALSE); // EXT-482 + setVisible(FALSE); } /** diff --git a/indra/newview/llmutelist.cpp b/indra/newview/llmutelist.cpp index c1666f5666..2d3c4b187e 100644 --- a/indra/newview/llmutelist.cpp +++ b/indra/newview/llmutelist.cpp @@ -58,7 +58,6 @@ #include "llagent.h" #include "llviewergenericmessage.h" // for gGenericDispatcher #include "llworld.h" //for particle system banning -#include "llimpanel.h" #include "llimview.h" #include "llnotifications.h" #include "llviewerobjectlist.h" @@ -472,12 +471,6 @@ void notify_automute_callback(const LLUUID& agent_id, const std::string& first_n if (reason == LLMuteList::AR_IM) { - LLFloaterIMPanel *timp = gIMMgr->findFloaterBySession(agent_id); - if (timp) - { - timp->addHistoryLine(message); - } - LLIMModel::getInstance()->addMessage(agent_id, SYSTEM_FROM, LLUUID::null, message); } } diff --git a/indra/newview/llnamelistctrl.cpp b/indra/newview/llnamelistctrl.cpp index 6375362ae2..9f04558d50 100644 --- a/indra/newview/llnamelistctrl.cpp +++ b/indra/newview/llnamelistctrl.cpp @@ -148,7 +148,7 @@ BOOL LLNameListCtrl::handleToolTip(S32 x, S32 y, MASK mask) && column_index == mNameColumnIndex) { // ...this is the column with the avatar name - LLUUID avatar_id = getItemId(hit_item); + LLUUID avatar_id = hit_item->getUUID(); if (avatar_id.notNull()) { // ...valid avatar id @@ -230,14 +230,15 @@ LLScrollListItem* LLNameListCtrl::addNameItemRow( std::string& suffix) { LLUUID id = name_item.value().asUUID(); - LLScrollListItem* item = NULL; + LLNameListItem* item = NULL; // Store item type so that we can invoke the proper inspector. // *TODO Vadim: Is there a more proper way of storing additional item data? { - LLNameListCtrl::NameItem name_item_(name_item); - name_item_.value = LLSD().with("uuid", id).with("is_group", name_item.target() == GROUP); - item = LLScrollListCtrl::addRow(name_item_, pos); + LLNameListCtrl::NameItem item_p(name_item); + item_p.value = LLSD().with("uuid", id).with("is_group", name_item.target() == GROUP); + item = new LLNameListItem(item_p); + LLScrollListCtrl::addRow(item, item_p, pos); } if (!item) return NULL; @@ -298,7 +299,7 @@ void LLNameListCtrl::removeNameItem(const LLUUID& agent_id) for (item_list::iterator it = getItemList().begin(); it != getItemList().end(); it++) { LLScrollListItem* item = *it; - if (getItemId(item) == agent_id) + if (item->getUUID() == agent_id) { idx = getItemIndex(item); break; @@ -335,7 +336,7 @@ void LLNameListCtrl::refresh(const LLUUID& id, const std::string& first, for (iter = getItemList().begin(); iter != getItemList().end(); iter++) { LLScrollListItem* item = *iter; - if (getItemId(item) == id) + if (item->getUUID() == id) { LLScrollListCell* cell = (LLScrollListCell*)item->getColumn(0); cell = item->getColumn(mNameColumnIndex); @@ -375,9 +376,3 @@ void LLNameListCtrl::updateColumns() } } } - -// static -LLUUID LLNameListCtrl::getItemId(LLScrollListItem* item) -{ - return item->getValue()["uuid"].asUUID(); -} diff --git a/indra/newview/llnamelistctrl.h b/indra/newview/llnamelistctrl.h index 192a3a5afa..23b1cb6897 100644 --- a/indra/newview/llnamelistctrl.h +++ b/indra/newview/llnamelistctrl.h @@ -122,7 +122,6 @@ public: /*virtual*/ void updateColumns(); private: void showInspector(const LLUUID& avatar_id, bool is_group); - static LLUUID getItemId(LLScrollListItem* item); private: S32 mNameColumnIndex; @@ -130,4 +129,24 @@ private: BOOL mAllowCallingCardDrop; }; +/** + * LLNameListCtrl item + * + * We don't use LLScrollListItem to be able to override getUUID(), which is needed + * because the name list item value is not simply an UUID but a map (uuid, is_group). + */ +class LLNameListItem : public LLScrollListItem +{ +public: + LLUUID getUUID() const { return getValue()["uuid"].asUUID(); } + +protected: + friend class LLNameListCtrl; + + LLNameListItem( const LLScrollListItem::Params& p ) + : LLScrollListItem(p) + { + } +}; + #endif diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp index 0a8d020b4f..90482eb74d 100644 --- a/indra/newview/llnearbychat.cpp +++ b/indra/newview/llnearbychat.cpp @@ -153,7 +153,7 @@ std::string appendTime() } -void LLNearbyChat::addMessage(const LLChat& chat,bool archive) +void LLNearbyChat::addMessage(const LLChat& chat,bool archive,const LLSD &args) { if (chat.mChatType == CHAT_TYPE_DEBUG_MSG) { @@ -184,7 +184,9 @@ void LLNearbyChat::addMessage(const LLChat& chat,bool archive) if (!chat.mMuted) { tmp_chat.mFromName = chat.mFromName; - mChatHistory->appendMessage(chat, use_plain_text_chat_history); + LLSD chat_args = args; + chat_args["use_plain_text_chat_history"] = use_plain_text_chat_history; + mChatHistory->appendMessage(chat, chat_args); } if(archive) diff --git a/indra/newview/llnearbychat.h b/indra/newview/llnearbychat.h index 938b77df7a..5fb8ade19e 100644 --- a/indra/newview/llnearbychat.h +++ b/indra/newview/llnearbychat.h @@ -47,7 +47,7 @@ public: ~LLNearbyChat(); BOOL postBuild (); - void addMessage (const LLChat& message,bool archive = true); + void addMessage (const LLChat& message,bool archive = true, const LLSD &args = LLSD()); void onNearbyChatContextMenuItemClicked(const LLSD& userdata); bool onNearbyChatCheckContextMenuItem(const LLSD& userdata); diff --git a/indra/newview/llnearbychathandler.cpp b/indra/newview/llnearbychathandler.cpp index c50e049d4c..c08ca30bab 100644 --- a/indra/newview/llnearbychathandler.cpp +++ b/indra/newview/llnearbychathandler.cpp @@ -319,7 +319,7 @@ void LLNearbyChatHandler::initChannel() -void LLNearbyChatHandler::processChat(const LLChat& chat_msg) +void LLNearbyChatHandler::processChat(const LLChat& chat_msg, const LLSD &args) { if(chat_msg.mMuted == TRUE) return; @@ -337,7 +337,7 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg) //if(tmp_chat.mFromName.empty() && tmp_chat.mFromID!= LLUUID::null) // tmp_chat.mFromName = tmp_chat.mFromID.asString(); } - nearby_chat->addMessage(chat_msg); + nearby_chat->addMessage(chat_msg, true, args); if(nearby_chat->getVisible()) return;//no need in toast if chat is visible @@ -356,12 +356,17 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg) initChannel(); } + /* + //comment all this due to EXT-4432 + ..may clean up after some time... + //only messages from AGENTS if(CHAT_SOURCE_OBJECT == chat_msg.mSourceType) { if(chat_msg.mChatType == CHAT_TYPE_DEBUG_MSG) return;//ok for now we don't skip messeges from object, so skip only debug messages } + */ LLUUID id; id.generate(); diff --git a/indra/newview/llnearbychathandler.h b/indra/newview/llnearbychathandler.h index fb2abac6a4..01a6de5610 100644 --- a/indra/newview/llnearbychathandler.h +++ b/indra/newview/llnearbychathandler.h @@ -45,7 +45,7 @@ public: virtual ~LLNearbyChatHandler(); - virtual void processChat(const LLChat& chat_msg); + virtual void processChat(const LLChat& chat_msg, const LLSD &args); protected: virtual void onDeleteToast(LLToast* toast); diff --git a/indra/newview/llnotificationhandler.h b/indra/newview/llnotificationhandler.h index 0fb438bfe9..e57674d31c 100644 --- a/indra/newview/llnotificationhandler.h +++ b/indra/newview/llnotificationhandler.h @@ -135,7 +135,7 @@ class LLChatHandler : public LLEventHandler public: virtual ~LLChatHandler() {}; - virtual void processChat(const LLChat& chat_msg)=0; + virtual void processChat(const LLChat& chat_msg, const LLSD &args)=0; }; /** diff --git a/indra/newview/llnotificationhandlerutil.cpp b/indra/newview/llnotificationhandlerutil.cpp index fba5773602..02f948eca9 100644 --- a/indra/newview/llnotificationhandlerutil.cpp +++ b/indra/newview/llnotificationhandlerutil.cpp @@ -123,7 +123,14 @@ void LLHandlerUtil::logToIM(const EInstantMessage& session_type, message); // restore active session id - LLIMModel::instance().setActiveSessionID(active_session_id); + if (active_session_id.isNull()) + { + LLIMModel::instance().resetActiveSessionID(); + } + else + { + LLIMModel::instance().setActiveSessionID(active_session_id); + } } } diff --git a/indra/newview/llnotificationmanager.cpp b/indra/newview/llnotificationmanager.cpp index 66bc217d15..4401bb953f 100644 --- a/indra/newview/llnotificationmanager.cpp +++ b/indra/newview/llnotificationmanager.cpp @@ -107,16 +107,17 @@ bool LLNotificationManager::onNotification(const LLSD& notify) } //-------------------------------------------------------------------------- -void LLNotificationManager::onChat(const LLChat& msg,ENotificationType type) +void LLNotificationManager::onChat(const LLChat& msg, const LLSD &args) { - switch(type) + // check ENotificationType argument + switch(args["type"].asInteger()) { case NT_NEARBYCHAT: { LLNearbyChatHandler* handle = dynamic_cast<LLNearbyChatHandler*>(mNotifyHandlers["nearbychat"].get()); if(handle) - handle->processChat(msg); + handle->processChat(msg, args); } break; default: //no need to handle all enum types diff --git a/indra/newview/llnotificationmanager.h b/indra/newview/llnotificationmanager.h index 072fc6f24c..575aa69c4d 100644 --- a/indra/newview/llnotificationmanager.h +++ b/indra/newview/llnotificationmanager.h @@ -66,7 +66,7 @@ public: bool onNotification(const LLSD& notification); // this method reacts on chat notifications and calls an appropriate handler - void onChat(const LLChat& msg,ENotificationType type); + void onChat(const LLChat& msg, const LLSD &args); // get a handler for a certain type of notification LLEventHandler* getHandlerForNotification(std::string notification_type); diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp index dc40ed9c6a..03d3c11b76 100644 --- a/indra/newview/llpanelavatar.cpp +++ b/indra/newview/llpanelavatar.cpp @@ -635,6 +635,9 @@ void LLPanelAvatarProfile::fillCommonData(const LLAvatarData* avatar_data) childSetValue("2nd_life_pic", avatar_data->image_id); childSetValue("real_world_pic", avatar_data->fl_image_id); childSetValue("homepage_edit", avatar_data->profile_url); + + // Hide home page textbox if no page was set to fix "homepage URL appears clickable without URL - EXT-4734" + childSetVisible("homepage_edit", !avatar_data->profile_url.empty()); } void LLPanelAvatarProfile::fillPartnerData(const LLAvatarData* avatar_data) diff --git a/indra/newview/llpanelcontents.cpp b/indra/newview/llpanelcontents.cpp index 9d591ef43d..2a7d097f94 100644 --- a/indra/newview/llpanelcontents.cpp +++ b/indra/newview/llpanelcontents.cpp @@ -50,7 +50,6 @@ // project includes #include "llagent.h" -#include "llfloaterbulkpermission.h" #include "llpanelobjectinventory.h" #include "llpreviewscript.h" #include "llresmgr.h" @@ -60,6 +59,7 @@ #include "lltoolmgr.h" #include "lltrans.h" #include "llviewerassettype.h" +#include "llviewerinventory.h" #include "llviewerobject.h" #include "llviewerregion.h" #include "llviewerwindow.h" diff --git a/indra/newview/llpanelgroup.cpp b/indra/newview/llpanelgroup.cpp index c37fc59745..28abcab99e 100644 --- a/indra/newview/llpanelgroup.cpp +++ b/indra/newview/llpanelgroup.cpp @@ -89,8 +89,8 @@ BOOL LLPanelGroupTab::postBuild() LLPanelGroup::LLPanelGroup() : LLPanel(), LLGroupMgrObserver( LLUUID() ), - mAllowEdit( TRUE ) - ,mShowingNotifyDialog(false) + mSkipRefresh(FALSE), + mShowingNotifyDialog(false) { // Set up the factory callbacks. // Roles sub tabs @@ -168,7 +168,6 @@ BOOL LLPanelGroup::postBuild() button = getChild<LLButton>("btn_refresh"); button->setClickedCallback(onBtnRefresh, this); - button->setVisible(mAllowEdit); getChild<LLButton>("btn_create")->setVisible(false); @@ -492,7 +491,12 @@ bool LLPanelGroup::apply(LLPanelGroupTab* tab) std::string apply_mesg; if(tab->apply( apply_mesg ) ) + { + //we skip refreshing group after ew manually apply changes since its very annoying + //for those who are editing group + mSkipRefresh = TRUE; return true; + } if ( !apply_mesg.empty() ) { @@ -539,6 +543,11 @@ void LLPanelGroup::draw() void LLPanelGroup::refreshData() { + if(mSkipRefresh) + { + mSkipRefresh = FALSE; + return; + } LLGroupMgr::getInstance()->clearGroupData(getID()); setGroupID(getID()); @@ -560,10 +569,10 @@ void LLPanelGroup::chatGroup() } void LLPanelGroup::showNotice(const std::string& subject, - const std::string& message, - const bool& has_inventory, - const std::string& inventory_name, - LLOfferInfo* inventory_offer) + const std::string& message, + const bool& has_inventory, + const std::string& inventory_name, + LLOfferInfo* inventory_offer) { LLPanelGroupNotices* panel_notices = findChild<LLPanelGroupNotices>("group_notices_tab_panel"); if(!panel_notices) diff --git a/indra/newview/llpanelgroup.h b/indra/newview/llpanelgroup.h index 8c84695677..6e23eedffb 100644 --- a/indra/newview/llpanelgroup.h +++ b/indra/newview/llpanelgroup.h @@ -85,9 +85,6 @@ public: virtual void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE); - void setAllowEdit(BOOL v) { mAllowEdit = v; } - - static void refreshCreatedGroup(const LLUUID& group_id); static void showNotice(const std::string& subject, @@ -126,7 +123,7 @@ protected: LLTimer mRefreshTimer; - BOOL mAllowEdit; + BOOL mSkipRefresh; std::string mDefaultNeedsApplyMesg; std::string mWantApplyMesg; @@ -169,8 +166,6 @@ public: virtual BOOL isVisibleByAgent(LLAgent* agentp); - void setAllowEdit(BOOL v) { mAllowEdit = v; } - virtual void setGroupID(const LLUUID& id) {mGroupID = id;}; void notifyObservers() {}; diff --git a/indra/newview/llpanelgroupnotices.cpp b/indra/newview/llpanelgroupnotices.cpp index 45fc3d4688..6210973dae 100644 --- a/indra/newview/llpanelgroupnotices.cpp +++ b/indra/newview/llpanelgroupnotices.cpp @@ -614,7 +614,7 @@ void LLPanelGroupNotices::showNotice(const std::string& subject, mViewInventoryIcon->setVisible(TRUE); std::stringstream ss; - ss << " " << LLViewerInventoryItem::getDisplayName(inventory_name); + ss << " " << inventory_name; mViewInventoryName->setText(ss.str()); mBtnOpenAttachment->setEnabled(TRUE); diff --git a/indra/newview/llpanelgrouproles.cpp b/indra/newview/llpanelgrouproles.cpp index 45f0381d6f..c6287472fe 100644 --- a/indra/newview/llpanelgrouproles.cpp +++ b/indra/newview/llpanelgrouproles.cpp @@ -867,7 +867,7 @@ void LLPanelGroupMembersSubTab::handleMemberSelect() for (itor = selection.begin(); itor != selection.end(); ++itor) { - LLUUID member_id = (*itor)->getValue()["uuid"]; + LLUUID member_id = (*itor)->getUUID(); selected_members.push_back( member_id ); // Get this member's power mask including any unsaved changes @@ -1093,7 +1093,7 @@ void LLPanelGroupMembersSubTab::handleEjectMembers() for (itor = selection.begin() ; itor != selection.end(); ++itor) { - LLUUID member_id = (*itor)->getValue()["uuid"]; + LLUUID member_id = (*itor)->getUUID(); selected_members.push_back( member_id ); } @@ -1151,7 +1151,7 @@ void LLPanelGroupMembersSubTab::handleRoleCheck(const LLUUID& role_id, itor != selection.end(); ++itor) { - member_id = (*itor)->getValue()["uuid"]; + member_id = (*itor)->getUUID(); //see if we requested a change for this member before if ( mMemberRoleChangeData.find(member_id) == mMemberRoleChangeData.end() ) @@ -1242,7 +1242,7 @@ void LLPanelGroupMembersSubTab::handleMemberDoubleClick() LLScrollListItem* selected = mMembersList->getFirstSelected(); if (selected) { - LLUUID member_id = selected->getValue()["uuid"]; + LLUUID member_id = selected->getUUID(); LLAvatarActions::showProfile( member_id ); } } @@ -1632,7 +1632,7 @@ void LLPanelGroupMembersSubTab::updateMembers() LLScrollListItem* member = mMembersList->addElement(row);//, ADD_SORTED); - LLUUID id = member->getValue()["uuid"]; + LLUUID id = member->getUUID(); mHasMatch = TRUE; } } diff --git a/indra/newview/llpanellandmarkinfo.cpp b/indra/newview/llpanellandmarkinfo.cpp index 9654e17659..36a542cfa0 100644 --- a/indra/newview/llpanellandmarkinfo.cpp +++ b/indra/newview/llpanellandmarkinfo.cpp @@ -98,17 +98,17 @@ void LLPanelLandmarkInfo::resetLocation() { LLPanelPlaceInfo::resetLocation(); - std::string not_available = getString("not_available"); - mCreator->setText(not_available); - mOwner->setText(not_available); - mCreated->setText(not_available); + std::string loading = LLTrans::getString("LoadingData"); + mCreator->setText(loading); + mOwner->setText(loading); + mCreated->setText(loading); mLandmarkTitle->setText(LLStringUtil::null); mLandmarkTitleEditor->setText(LLStringUtil::null); mNotesEditor->setText(LLStringUtil::null); } // virtual -void LLPanelLandmarkInfo::setInfoType(INFO_TYPE type) +void LLPanelLandmarkInfo::setInfoType(EInfoType type) { LLPanel* landmark_info_panel = getChild<LLPanel>("landmark_info_panel"); @@ -367,7 +367,6 @@ void LLPanelLandmarkInfo::createLandmark(const LLUUID& folder_id) } LLStringUtil::replaceChar(desc, '\n', ' '); - LLViewerInventoryItem::insertDefaultSortField(name); // If no folder chosen use the "Landmarks" folder. LLLandmarkActions::createLandmarkHere(name, desc, diff --git a/indra/newview/llpanellandmarkinfo.h b/indra/newview/llpanellandmarkinfo.h index 2a9949ae41..b3dc3f5ad9 100644 --- a/indra/newview/llpanellandmarkinfo.h +++ b/indra/newview/llpanellandmarkinfo.h @@ -49,7 +49,7 @@ public: /*virtual*/ void resetLocation(); - /*virtual*/ void setInfoType(INFO_TYPE type); + /*virtual*/ void setInfoType(EInfoType type); /*virtual*/ void processParcelInfo(const LLParcelData& parcel_data); diff --git a/indra/newview/llpanelobject.cpp b/indra/newview/llpanelobject.cpp index d17c287cc7..30221da12a 100644 --- a/indra/newview/llpanelobject.cpp +++ b/indra/newview/llpanelobject.cpp @@ -316,11 +316,14 @@ BOOL LLPanelObject::postBuild() LLPanelObject::LLPanelObject() : LLPanel(), + mComboMaterialItemCount(0), mIsPhysical(FALSE), mIsTemporary(FALSE), mIsPhantom(FALSE), mCastShadows(TRUE), - mSelectedType(MI_BOX) + mSelectedType(MI_BOX), + mSculptTextureRevert(LLUUID::null), + mSculptTypeRevert(0) { } diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp index d4376550d6..5c5c35141e 100644 --- a/indra/newview/llpanelobjectinventory.cpp +++ b/indra/newview/llpanelobjectinventory.cpp @@ -463,10 +463,6 @@ BOOL LLTaskInvFVBridge::removeItem() } else { - remove_data_t* data = new remove_data_t; - data->first = mPanel; - data->second.first = mPanel->getTaskUUID(); - data->second.second.push_back(mUUID); LLSD payload; payload["task_id"] = mPanel->getTaskUUID(); payload["inventory_ids"].append(mUUID); diff --git a/indra/newview/llpanelpeoplemenus.cpp b/indra/newview/llpanelpeoplemenus.cpp index d9651a6045..470cfca8fe 100644 --- a/indra/newview/llpanelpeoplemenus.cpp +++ b/indra/newview/llpanelpeoplemenus.cpp @@ -55,6 +55,22 @@ ContextMenu::ContextMenu() { } +ContextMenu::~ContextMenu() +{ + // do not forget delete LLContextMenu* mMenu. + // It can have registered Enable callbacks which are called from the LLMenuHolderGL::draw() + // via selected item (menu_item_call) by calling LLMenuItemCallGL::buildDrawLabel. + // we can have a crash via using callbacks of deleted instance of ContextMenu. EXT-4725 + + // menu holder deletes its menus on viewer exit, so we have no way to determine if instance + // of mMenu has already been deleted except of using LLHandle. EXT-4762. + if (!mMenuHandle.isDead()) + { + mMenu->die(); + mMenu = NULL; + } +} + void ContextMenu::show(LLView* spawning_view, const std::vector<LLUUID>& uuids, S32 x, S32 y) { if (mMenu) @@ -77,6 +93,7 @@ void ContextMenu::show(LLView* spawning_view, const std::vector<LLUUID>& uuids, std::copy(uuids.begin(), uuids.end(), mUUIDs.begin()); mMenu = createMenu(); + mMenuHandle = mMenu->getHandle(); mMenu->show(x, y); LLMenuGL::showPopup(spawning_view, mMenu, x, y); } diff --git a/indra/newview/llpanelpeoplemenus.h b/indra/newview/llpanelpeoplemenus.h index 14ae2985f0..913638d8c8 100644 --- a/indra/newview/llpanelpeoplemenus.h +++ b/indra/newview/llpanelpeoplemenus.h @@ -45,7 +45,7 @@ class ContextMenu : public LLAvatarListItem::ContextMenu { public: ContextMenu(); - virtual ~ContextMenu() {} + virtual ~ContextMenu(); /** * Show the menu at specified coordinates. @@ -62,6 +62,7 @@ protected: std::vector<LLUUID> mUUIDs; LLContextMenu* mMenu; + LLHandle<LLView> mMenuHandle; }; /** diff --git a/indra/newview/llpanelplaceinfo.cpp b/indra/newview/llpanelplaceinfo.cpp index 0c10f11bfc..9ebc8ca2b9 100644 --- a/indra/newview/llpanelplaceinfo.cpp +++ b/indra/newview/llpanelplaceinfo.cpp @@ -43,6 +43,8 @@ #include "lliconctrl.h" #include "lltextbox.h" +#include "lltrans.h" + #include "llagent.h" #include "llexpandabletextbox.h" #include "llpanelpick.h" @@ -56,6 +58,7 @@ LLPanelPlaceInfo::LLPanelPlaceInfo() mPosRegion(), mScrollingPanelMinHeight(0), mScrollingPanelWidth(0), + mInfoType(UNKNOWN), mScrollingPanel(NULL), mScrollContainer(NULL) {} @@ -99,12 +102,12 @@ void LLPanelPlaceInfo::resetLocation() mRequestedID.setNull(); mPosRegion.clearVec(); - std::string not_available = getString("not_available"); - mMaturityRatingIcon->setValue(not_available); - mMaturityRatingText->setValue(not_available); - mRegionName->setText(not_available); - mParcelName->setText(not_available); - mDescEditor->setText(not_available); + std::string loading = LLTrans::getString("LoadingData"); + mMaturityRatingIcon->setValue(loading); + mMaturityRatingText->setValue(loading); + mRegionName->setText(loading); + mParcelName->setText(loading); + mDescEditor->setText(loading); mSnapshotCtrl->setImageAssetID(LLUUID::null); mSnapshotCtrl->setFallbackImageName("default_land_picture.j2c"); @@ -118,7 +121,7 @@ void LLPanelPlaceInfo::setParcelID(const LLUUID& parcel_id) } //virtual -void LLPanelPlaceInfo::setInfoType(INFO_TYPE type) +void LLPanelPlaceInfo::setInfoType(EInfoType type) { mTitle->setText(mCurrentTitle); @@ -206,6 +209,10 @@ void LLPanelPlaceInfo::processParcelInfo(const LLParcelData& parcel_data) { mDescEditor->setText(parcel_data.desc); } + else + { + mDescEditor->setText(getString("not_available")); + } S32 region_x; S32 region_y; diff --git a/indra/newview/llpanelplaceinfo.h b/indra/newview/llpanelplaceinfo.h index 3091f7ed24..deedbd2b0f 100644 --- a/indra/newview/llpanelplaceinfo.h +++ b/indra/newview/llpanelplaceinfo.h @@ -54,8 +54,10 @@ class LLViewerInventoryCategory; class LLPanelPlaceInfo : public LLPanel, LLRemoteParcelInfoObserver { public: - enum INFO_TYPE + enum EInfoType { + UNKNOWN, + AGENT, CREATE_LANDMARK, LANDMARK, @@ -79,7 +81,7 @@ public: // Depending on how the panel was triggered // (from landmark or current location, or other) // sets a corresponding title and contents. - virtual void setInfoType(INFO_TYPE type); + virtual void setInfoType(EInfoType type); // Requests remote parcel info by parcel ID. void sendParcelInfoRequest(); @@ -114,7 +116,7 @@ protected: std::string mCurrentTitle; S32 mScrollingPanelMinHeight; S32 mScrollingPanelWidth; - INFO_TYPE mInfoType; + EInfoType mInfoType; LLScrollContainer* mScrollContainer; LLPanel* mScrollingPanel; diff --git a/indra/newview/llpanelplaceprofile.cpp b/indra/newview/llpanelplaceprofile.cpp index d892e2885b..8d689b2c5e 100644 --- a/indra/newview/llpanelplaceprofile.cpp +++ b/indra/newview/llpanelplaceprofile.cpp @@ -42,6 +42,8 @@ #include "lltextbox.h" #include "lltexteditor.h" +#include "lltrans.h" + #include "llaccordionctrl.h" #include "llaccordionctrltab.h" #include "llagent.h" @@ -163,49 +165,49 @@ void LLPanelPlaceProfile::resetLocation() mForSalePanel->setVisible(FALSE); mYouAreHerePanel->setVisible(FALSE); - std::string not_available = getString("not_available"); - mParcelOwner->setValue(not_available); - - mParcelRatingIcon->setValue(not_available); - mParcelRatingText->setText(not_available); - mVoiceIcon->setValue(not_available); - mVoiceText->setText(not_available); - mFlyIcon->setValue(not_available); - mFlyText->setText(not_available); - mPushIcon->setValue(not_available); - mPushText->setText(not_available); - mBuildIcon->setValue(not_available); - mBuildText->setText(not_available); - mScriptsIcon->setValue(not_available); - mScriptsText->setText(not_available); - mDamageIcon->setValue(not_available); - mDamageText->setText(not_available); - - mRegionNameText->setValue(not_available); - mRegionTypeText->setValue(not_available); - mRegionRatingIcon->setValue(not_available); - mRegionRatingText->setValue(not_available); - mRegionOwnerText->setValue(not_available); - mRegionGroupText->setValue(not_available); - - mEstateNameText->setValue(not_available); - mEstateRatingText->setValue(not_available); - mEstateOwnerText->setValue(not_available); - mCovenantText->setValue(not_available); - - mSalesPriceText->setValue(not_available); - mAreaText->setValue(not_available); - mTrafficText->setValue(not_available); - mPrimitivesText->setValue(not_available); - mParcelScriptsText->setValue(not_available); - mTerraformLimitsText->setValue(not_available); - mSubdivideText->setValue(not_available); - mResaleText->setValue(not_available); - mSaleToText->setValue(not_available); + std::string loading = LLTrans::getString("LoadingData"); + mParcelOwner->setValue(loading); + + mParcelRatingIcon->setValue(loading); + mParcelRatingText->setText(loading); + mVoiceIcon->setValue(loading); + mVoiceText->setText(loading); + mFlyIcon->setValue(loading); + mFlyText->setText(loading); + mPushIcon->setValue(loading); + mPushText->setText(loading); + mBuildIcon->setValue(loading); + mBuildText->setText(loading); + mScriptsIcon->setValue(loading); + mScriptsText->setText(loading); + mDamageIcon->setValue(loading); + mDamageText->setText(loading); + + mRegionNameText->setValue(loading); + mRegionTypeText->setValue(loading); + mRegionRatingIcon->setValue(loading); + mRegionRatingText->setValue(loading); + mRegionOwnerText->setValue(loading); + mRegionGroupText->setValue(loading); + + mEstateNameText->setValue(loading); + mEstateRatingText->setValue(loading); + mEstateOwnerText->setValue(loading); + mCovenantText->setValue(loading); + + mSalesPriceText->setValue(loading); + mAreaText->setValue(loading); + mTrafficText->setValue(loading); + mPrimitivesText->setValue(loading); + mParcelScriptsText->setValue(loading); + mTerraformLimitsText->setValue(loading); + mSubdivideText->setValue(loading); + mResaleText->setValue(loading); + mSaleToText->setValue(loading); } // virtual -void LLPanelPlaceProfile::setInfoType(INFO_TYPE type) +void LLPanelPlaceProfile::setInfoType(EInfoType type) { bool is_info_type_agent = type == AGENT; diff --git a/indra/newview/llpanelplaceprofile.h b/indra/newview/llpanelplaceprofile.h index 8ca9526875..e77b441567 100644 --- a/indra/newview/llpanelplaceprofile.h +++ b/indra/newview/llpanelplaceprofile.h @@ -48,7 +48,7 @@ public: /*virtual*/ void resetLocation(); - /*virtual*/ void setInfoType(INFO_TYPE type); + /*virtual*/ void setInfoType(EInfoType type); /*virtual*/ void processParcelInfo(const LLParcelData& parcel_data); diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp index a8a9717750..29cfbbe606 100644 --- a/indra/newview/llpanelplaces.cpp +++ b/indra/newview/llpanelplaces.cpp @@ -34,7 +34,7 @@ #include "llpanelplaces.h" #include "llassettype.h" -#include "llwindow.h" +#include "lltimer.h" #include "llinventory.h" #include "lllandmark.h" @@ -49,6 +49,8 @@ #include "lltrans.h" #include "lluictrlfactory.h" +#include "llwindow.h" + #include "llagent.h" #include "llagentpicksinfo.h" #include "llavatarpropertiesprocessor.h" @@ -73,6 +75,7 @@ #include "llviewerwindow.h" static const S32 LANDMARK_FOLDERS_MENU_WIDTH = 250; +static const F32 PLACE_INFO_UPDATE_INTERVAL = 3.0; static const std::string AGENT_INFO_TYPE = "agent"; static const std::string CREATE_LANDMARK_INFO_TYPE = "create_landmark"; static const std::string LANDMARK_INFO_TYPE = "landmark"; @@ -269,11 +272,11 @@ BOOL LLPanelPlaces::postBuild() if (!mPlaceProfile || !mLandmarkInfo) return FALSE; - LLButton* back_btn = mPlaceProfile->getChild<LLButton>("back_btn"); - back_btn->setClickedCallback(boost::bind(&LLPanelPlaces::onBackButtonClicked, this)); + mPlaceProfileBackBtn = mPlaceProfile->getChild<LLButton>("back_btn"); + mPlaceProfileBackBtn->setClickedCallback(boost::bind(&LLPanelPlaces::onBackButtonClicked, this)); - back_btn = mLandmarkInfo->getChild<LLButton>("back_btn"); - back_btn->setClickedCallback(boost::bind(&LLPanelPlaces::onBackButtonClicked, this)); + mLandmarkInfoBackBtn = mLandmarkInfo->getChild<LLButton>("back_btn"); + mLandmarkInfoBackBtn->setClickedCallback(boost::bind(&LLPanelPlaces::onBackButtonClicked, this)); LLLineEditor* title_editor = mLandmarkInfo->getChild<LLLineEditor>("title_editor"); title_editor->setKeystrokeCallback(boost::bind(&LLPanelPlaces::onEditButtonClicked, this), NULL); @@ -324,9 +327,12 @@ void LLPanelPlaces::onOpen(const LLSD& key) mLandmarkInfo->displayParcelInfo(LLUUID(), mPosGlobal); - // Disable Save button because there is no item to save yet. - // The button will be enabled in onLandmarkLoaded callback. + // Disabling "Save", "Close" and "Back" buttons to prevent closing "Create Landmark" + // panel before created landmark is loaded. + // These buttons will be enabled when created landmark is added to inventory. mSaveBtn->setEnabled(FALSE); + mCloseBtn->setEnabled(FALSE); + mLandmarkInfoBackBtn->setEnabled(FALSE); } else if (mPlaceInfoType == LANDMARK_INFO_TYPE) { @@ -434,6 +440,8 @@ void LLPanelPlaces::setItem(LLInventoryItem* item) mEditBtn->setEnabled(is_landmark_editable); mSaveBtn->setEnabled(is_landmark_editable); + mCloseBtn->setEnabled(TRUE); + mLandmarkInfoBackBtn->setEnabled(TRUE); if (is_landmark_editable) { @@ -485,8 +493,6 @@ void LLPanelPlaces::onLandmarkLoaded(LLLandmark* landmark) landmark->getGlobalPos(mPosGlobal); mLandmarkInfo->displayParcelInfo(region_id, mPosGlobal); - mSaveBtn->setEnabled(TRUE); - updateVerbs(); } @@ -830,6 +836,10 @@ void LLPanelPlaces::togglePlaceInfoPanel(BOOL visible) { mPlaceProfile->resetLocation(); + // Do not reset location info until mResetInfoTimer has expired + // to avoid text blinking. + mResetInfoTimer.setTimerExpirySec(PLACE_INFO_UPDATE_INTERVAL); + LLRect rect = getRect(); LLRect new_rect = LLRect(rect.mLeft, rect.mTop, rect.mRight, mTabContainer->getRect().mBottom); mPlaceProfile->reshape(new_rect.getWidth(), new_rect.getHeight()); @@ -920,11 +930,12 @@ void LLPanelPlaces::changedParcelSelection() } } - // Reset location info only if global position is changed - // to reduce unnecessary text and icons updates. - if (prev_pos_global != mPosGlobal) + // Reset location info only if global position has changed + // and update timer has expired to reduce unnecessary text and icons updates. + if (prev_pos_global != mPosGlobal && mResetInfoTimer.hasExpired()) { mPlaceProfile->resetLocation(); + mResetInfoTimer.setTimerExpirySec(PLACE_INFO_UPDATE_INTERVAL); } mPlaceProfile->displaySelectedParcelInfo(parcel, region, mPosGlobal, is_current_parcel); @@ -1022,6 +1033,13 @@ void LLPanelPlaces::updateVerbs() { mTeleportBtn->setEnabled(have_3d_pos); } + + // Do not enable landmark info Back button when we are waiting + // for newly created landmark to load. + if (!is_create_landmark_visible) + { + mLandmarkInfoBackBtn->setEnabled(TRUE); + } } else { diff --git a/indra/newview/llpanelplaces.h b/indra/newview/llpanelplaces.h index 0eba7f3afc..110d7a1054 100644 --- a/indra/newview/llpanelplaces.h +++ b/indra/newview/llpanelplaces.h @@ -32,6 +32,8 @@ #ifndef LL_LLPANELPLACES_H #define LL_LLPANELPLACES_H +#include "lltimer.h" + #include "llpanel.h" class LLInventoryItem; @@ -113,6 +115,8 @@ private: LLToggleableMenu* mPlaceMenu; LLToggleableMenu* mLandmarkMenu; + LLButton* mPlaceProfileBackBtn; + LLButton* mLandmarkInfoBackBtn; LLButton* mTeleportBtn; LLButton* mShowOnMapBtn; LLButton* mEditBtn; @@ -132,6 +136,10 @@ private: // be available (hence zero) LLVector3d mPosGlobal; + // Sets a period of time during which the requested place information + // is expected to be updated and doesn't need to be reset. + LLTimer mResetInfoTimer; + // Information type currently shown in Place Information panel std::string mPlaceInfoType; diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp index 1b8fb49641..43e0f9a88c 100644 --- a/indra/newview/llpanelteleporthistory.cpp +++ b/indra/newview/llpanelteleporthistory.cpp @@ -46,7 +46,6 @@ #include "llnotificationsutil.h" #include "lltextbox.h" #include "llviewermenu.h" -#include "llviewerinventory.h" #include "lllandmarkactions.h" #include "llclipboard.h" @@ -308,7 +307,7 @@ void LLTeleportHistoryFlatItemStorage::purge() //////////////////////////////////////////////////////////////////////////////// LLTeleportHistoryPanel::ContextMenu::ContextMenu() : - mMenu(NULL) + mMenu(NULL), mIndex(0) { } diff --git a/indra/newview/llparticipantlist.cpp b/indra/newview/llparticipantlist.cpp index e64d297326..dc0839c774 100644 --- a/indra/newview/llparticipantlist.cpp +++ b/indra/newview/llparticipantlist.cpp @@ -627,7 +627,9 @@ bool LLParticipantList::LLParticipantListMenu::enableContextMenuItem(const LLSD& } else if (item == "can_call") { - return LLVoiceClient::getInstance()->voiceEnabled()&&LLVoiceClient::getInstance()->isVoiceWorking(); + bool not_agent = mUUIDs.front() != gAgentID; + bool can_call = not_agent && LLVoiceClient::getInstance()->voiceEnabled() && LLVoiceClient::getInstance()->isVoiceWorking(); + return can_call; } return true; diff --git a/indra/newview/llplacesinventorypanel.cpp b/indra/newview/llplacesinventorypanel.cpp index 4de953a59d..8edeebaeeb 100644 --- a/indra/newview/llplacesinventorypanel.cpp +++ b/indra/newview/llplacesinventorypanel.cpp @@ -143,6 +143,23 @@ void LLPlacesInventoryPanel::restoreFolderState() getRootFolder()->scrollToShowSelection(); } +S32 LLPlacesInventoryPanel::notify(const LLSD& info) +{ + if(info.has("action")) + { + std::string str_action = info["action"]; + if(str_action == "select_first") + { + return getRootFolder()->notify(info); + } + else if(str_action == "select_last") + { + return getRootFolder()->notify(info); + } + } + return 0; +} + /************************************************************************/ /* PROTECTED METHODS */ /************************************************************************/ diff --git a/indra/newview/llplacesinventorypanel.h b/indra/newview/llplacesinventorypanel.h index 7b34045d32..86937e7c7f 100644 --- a/indra/newview/llplacesinventorypanel.h +++ b/indra/newview/llplacesinventorypanel.h @@ -57,6 +57,8 @@ public: void saveFolderState(); void restoreFolderState(); + virtual S32 notify(const LLSD& info) ; + private: LLSaveFolderState* mSavedFolderState; }; diff --git a/indra/newview/llpreviewgesture.cpp b/indra/newview/llpreviewgesture.cpp index 84bdaafacf..53e351e66e 100644 --- a/indra/newview/llpreviewgesture.cpp +++ b/indra/newview/llpreviewgesture.cpp @@ -155,6 +155,12 @@ LLPreviewGesture* LLPreviewGesture::show(const LLUUID& item_id, const LLUUID& ob return preview; } +void LLPreviewGesture::draw() +{ + // Skip LLPreview::draw() to avoid description update + LLFloater::draw(); +} + // virtual BOOL LLPreviewGesture::handleKeyHere(KEY key, MASK mask) { @@ -497,11 +503,9 @@ BOOL LLPreviewGesture::postBuild() if (item) { - childSetCommitCallback("desc", LLPreview::onText, this); childSetText("desc", item->getDescription()); childSetPrevalidate("desc", &LLLineEditor::prevalidateASCIIPrintableNoPipe); - childSetCommitCallback("name", LLPreview::onText, this); childSetText("name", item->getName()); childSetPrevalidate("name", &LLLineEditor::prevalidateASCIIPrintableNoPipe); } @@ -1077,6 +1081,8 @@ void LLPreviewGesture::saveIfNeeded() } else { + LLPreview::onCommit(); + // Every save gets a new UUID. Yup. LLTransactionID tid; LLAssetID asset_id; diff --git a/indra/newview/llpreviewgesture.h b/indra/newview/llpreviewgesture.h index 19fa1dcc37..5968e936ef 100644 --- a/indra/newview/llpreviewgesture.h +++ b/indra/newview/llpreviewgesture.h @@ -60,6 +60,7 @@ public: virtual ~LLPreviewGesture(); // LLView + /*virtual*/ void draw(); /*virtual*/ BOOL handleKeyHere(KEY key, MASK mask); /*virtual*/ BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, EDragAndDropType cargo_type, diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp index 36ed1c466b..9835bfc082 100644 --- a/indra/newview/llselectmgr.cpp +++ b/indra/newview/llselectmgr.cpp @@ -218,7 +218,8 @@ LLSelectMgr::LLSelectMgr() mHoverObjects = new LLObjectSelection(); mHighlightedObjects = new LLObjectSelection(); - + mForceSelection = FALSE; + mShowSelection = FALSE; } @@ -5093,6 +5094,7 @@ LLSelectNode::LLSelectNode(const LLSelectNode& nodep) mName = nodep.mName; mDescription = nodep.mDescription; mCategory = nodep.mCategory; + mInventorySerial = 0; mSavedPositionLocal = nodep.mSavedPositionLocal; mSavedPositionGlobal = nodep.mSavedPositionGlobal; mSavedScale = nodep.mSavedScale; diff --git a/indra/newview/llsidepanelinventorysubpanel.cpp b/indra/newview/llsidepanelinventorysubpanel.cpp index 56e342c3ce..f51462dcce 100644 --- a/indra/newview/llsidepanelinventorysubpanel.cpp +++ b/indra/newview/llsidepanelinventorysubpanel.cpp @@ -44,7 +44,6 @@ #include "lllineeditor.h" #include "llradiogroup.h" #include "llviewercontrol.h" -#include "llviewerinventory.h" #include "llviewerobjectlist.h" diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp index 514d8facb4..2a57d48f16 100644 --- a/indra/newview/llspatialpartition.cpp +++ b/indra/newview/llspatialpartition.cpp @@ -294,7 +294,7 @@ LLSpatialGroup::~LLSpatialGroup() sNodeCount--; - if (gGLManager.mHasOcclusionQuery && mOcclusionQuery) + if (gGLManager.mHasOcclusionQuery && mOcclusionQuery[LLViewerCamera::sCurCameraID]) { sQueryPool.release(mOcclusionQuery[LLViewerCamera::sCurCameraID]); } @@ -2607,6 +2607,7 @@ void renderBoundingBox(LLDrawable* drawable, BOOL set_color = TRUE) break; case LL_PCODE_LEGACY_TREE: gGL.color4f(0,0.5f,0,1); + break; default: gGL.color4f(1,0,1,1); break; diff --git a/indra/newview/llstatusbar.cpp b/indra/newview/llstatusbar.cpp index 8a36475510..bff32af228 100644 --- a/indra/newview/llstatusbar.cpp +++ b/indra/newview/llstatusbar.cpp @@ -354,7 +354,7 @@ void LLStatusBar::refresh() childSetEnabled("stat_btn", net_stats_visible); // update the master volume button state - BOOL mute_audio = gSavedSettings.getBOOL("MuteAudio"); + bool mute_audio = LLAppViewer::instance()->getMasterSystemAudioMute(); mBtnVolume->setToggleState(mute_audio); } @@ -523,8 +523,8 @@ void LLStatusBar::onMouseEnterVolume(LLUICtrl* ctrl) static void onClickVolume(void* data) { // toggle the master mute setting - BOOL mute_audio = gSavedSettings.getBOOL("MuteAudio"); - gSavedSettings.setBOOL("MuteAudio", !mute_audio); + bool mute_audio = LLAppViewer::instance()->getMasterSystemAudioMute(); + LLAppViewer::instance()->setMasterSystemAudioMute(!mute_audio); } // sets the static variables necessary for the date diff --git a/indra/newview/llsurfacepatch.cpp b/indra/newview/llsurfacepatch.cpp index 0ce794addb..48e4a6ccc7 100644 --- a/indra/newview/llsurfacepatch.cpp +++ b/indra/newview/llsurfacepatch.cpp @@ -60,6 +60,7 @@ LLSurfacePatch::LLSurfacePatch() : mHeightsGenerated(FALSE), mDataOffset(0), mDataZ(NULL), + mDataNorm(NULL), mVObjp(NULL), mOriginRegion(0.f, 0.f, 0.f), mCenterRegion(0.f, 0.f, 0.f), @@ -355,12 +356,14 @@ void LLSurfacePatch::calcNormal(const U32 x, const U32 y, const U32 stride) normal %= c2; normal.normVec(); + llassert(mDataNorm); *(mDataNorm + surface_stride * y + x) = normal; } const LLVector3 &LLSurfacePatch::getNormal(const U32 x, const U32 y) const { U32 surface_stride = mSurfacep->getGridsPerEdge(); + llassert(mDataNorm); return *(mDataNorm + surface_stride * y + x); } @@ -402,6 +405,7 @@ void LLSurfacePatch::updateVerticalStats() U32 i, j, k; F32 z, total; + llassert(mDataZ); z = *(mDataZ); mMinZ = z; diff --git a/indra/newview/lltexlayer.cpp b/indra/newview/lltexlayer.cpp index 84c8b9d5f0..ddb6405c41 100644 --- a/indra/newview/lltexlayer.cpp +++ b/indra/newview/lltexlayer.cpp @@ -567,6 +567,7 @@ LLTexLayerSet::LLTexLayerSet(LLVOAvatarSelf* const avatar) : mAvatar( avatar ), mUpdatesEnabled( FALSE ), mIsVisible( TRUE ), + mBakedTexIndex(LLVOAvatarDefines::BAKED_HEAD), mInfo( NULL ) { } @@ -1860,7 +1861,7 @@ U32 LLTexLayerTemplate::updateWearableCache() } LLTexLayer* LLTexLayerTemplate::getLayer(U32 i) { - if (mWearableCache.size() <= i || i < 0) + if (mWearableCache.size() <= i) { return NULL; } diff --git a/indra/newview/lltexturecache.cpp b/indra/newview/lltexturecache.cpp index 051c189013..a7f26f1df1 100644 --- a/indra/newview/lltexturecache.cpp +++ b/indra/newview/lltexturecache.cpp @@ -1617,20 +1617,20 @@ bool LLTextureCache::writeComplete(handle_t handle, bool abort) { lockWorkers(); handle_map_t::iterator iter = mWriters.find(handle); - llassert_always(iter != mWriters.end()); - LLTextureCacheWorker* worker = iter->second; - if (worker->complete() || abort) - { - mWriters.erase(handle); - unlockWorkers(); - worker->scheduleDelete(); - return true; - } - else + llassert(iter != mWriters.end()); + if (iter != mWriters.end()) { - unlockWorkers(); - return false; + LLTextureCacheWorker* worker = iter->second; + if (worker->complete() || abort) + { + mWriters.erase(handle); + unlockWorkers(); + worker->scheduleDelete(); + return true; + } } + unlockWorkers(); + return false; } void LLTextureCache::prioritizeWrite(handle_t handle) diff --git a/indra/newview/lltexturecache.h b/indra/newview/lltexturecache.h index 4203cbbc43..64ec881fc3 100644 --- a/indra/newview/lltexturecache.h +++ b/indra/newview/lltexturecache.h @@ -59,7 +59,12 @@ private: }; struct Entry { - Entry() {} + Entry() : + mBodySize(0), + mImageSize(0), + mTime(0) + { + } Entry(const LLUUID& id, S32 imagesize, S32 bodysize, U32 time) : mID(id), mImageSize(imagesize), mBodySize(bodysize), mTime(time) {} void init(const LLUUID& id, U32 time) { mID = id, mImageSize = 0; mBodySize = 0; mTime = time; } diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp index 5ce6884239..404b79bfaf 100644 --- a/indra/newview/lltexturefetch.cpp +++ b/indra/newview/lltexturefetch.cpp @@ -661,6 +661,8 @@ bool LLTextureFetchWorker::doWork(S32 param) } setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority); mState = SEND_HTTP_REQ; + delete responder; + responder = NULL; } } diff --git a/indra/newview/lltoastalertpanel.cpp b/indra/newview/lltoastalertpanel.cpp index c3ccb9380b..da31bb3e73 100644 --- a/indra/newview/lltoastalertpanel.cpp +++ b/indra/newview/lltoastalertpanel.cpp @@ -170,6 +170,7 @@ LLToastAlertPanel::LLToastAlertPanel( LLNotificationPtr notification, bool modal params.tab_stop(false); params.wrap(true); params.follows.flags(FOLLOWS_LEFT | FOLLOWS_TOP); + params.allow_html(false); LLTextBox * msg_box = LLUICtrlFactory::create<LLTextBox> (params); // Compute max allowable height for the dialog text, so we can allocate diff --git a/indra/newview/lltoastgroupnotifypanel.cpp b/indra/newview/lltoastgroupnotifypanel.cpp index e49044cdca..add61c00cf 100644 --- a/indra/newview/lltoastgroupnotifypanel.cpp +++ b/indra/newview/lltoastgroupnotifypanel.cpp @@ -127,17 +127,7 @@ LLToastGroupNotifyPanel::LLToastGroupNotifyPanel(LLNotificationPtr& notification pAttachLink->setVisible(hasInventory); pAttachIcon->setVisible(hasInventory); if (hasInventory) { - std::string dis_name; - std::string inv_name = payload["inventory_name"]; - - if (LLViewerInventoryItem::extractSortFieldAndDisplayName(inv_name, NULL, &dis_name)) - { - pAttachLink->setValue(dis_name); - } - else - { - pAttachLink->setValue(inv_name); - } + pAttachLink->setValue(payload["inventory_name"]); mInventoryOffer = new LLOfferInfo(payload["inventory_offer"]); childSetActionTextbox("attachment", boost::bind( diff --git a/indra/newview/lltoastimpanel.cpp b/indra/newview/lltoastimpanel.cpp index d62017cc2f..89a58cd736 100644 --- a/indra/newview/lltoastimpanel.cpp +++ b/indra/newview/lltoastimpanel.cpp @@ -33,22 +33,25 @@ #include "llviewerprecompiledheaders.h" #include "lltoastimpanel.h" +#include "llfloaterreg.h" #include "llnotifications.h" #include "llinstantmessage.h" +#include "lltooltip.h" + #include "llviewerchat.h" const S32 LLToastIMPanel::DEFAULT_MESSAGE_MAX_LINE_COUNT = 6; //-------------------------------------------------------------------------- LLToastIMPanel::LLToastIMPanel(LLToastIMPanel::Params &p) : LLToastPanel(p.notification), - mAvatar(NULL), mUserName(NULL), + mAvatarIcon(NULL), mAvatarName(NULL), mTime(NULL), mMessage(NULL) { LLUICtrlFactory::getInstance()->buildPanel(this, "panel_instant_message.xml"); LLIconCtrl* sys_msg_icon = getChild<LLIconCtrl>("sys_msg_icon"); - mAvatar = getChild<LLAvatarIconCtrl>("avatar_icon"); - mUserName = getChild<LLTextBox>("user_name"); + mAvatarIcon = getChild<LLAvatarIconCtrl>("avatar_icon"); + mAvatarName = getChild<LLTextBox>("user_name"); mTime = getChild<LLTextBox>("time_box"); mMessage = getChild<LLTextBox>("message"); @@ -77,22 +80,23 @@ LLToastIMPanel::LLToastIMPanel(LLToastIMPanel::Params &p) : LLToastPanel(p.notif mMessage->setValue(p.message); } - mUserName->setValue(p.from); + mAvatarName->setValue(p.from); mTime->setValue(p.time); mSessionID = p.session_id; + mAvatarID = p.avatar_id; mNotification = p.notification; if(p.from == SYSTEM_FROM) { - mAvatar->setVisible(FALSE); + mAvatarIcon->setVisible(FALSE); sys_msg_icon->setVisible(TRUE); } else { - mAvatar->setVisible(TRUE); + mAvatarIcon->setVisible(TRUE); sys_msg_icon->setVisible(FALSE); - mAvatar->setValue(p.avatar_id); + mAvatarIcon->setValue(p.avatar_id); } S32 maxLinesCount; @@ -119,3 +123,36 @@ BOOL LLToastIMPanel::handleMouseDown(S32 x, S32 y, MASK mask) return TRUE; } + +//virtual +BOOL LLToastIMPanel::handleToolTip(S32 x, S32 y, MASK mask) +{ + // It's not our direct child, so parentPointInView() doesn't work. + LLRect name_rect; + mAvatarName->localRectToOtherView(mAvatarName->getLocalRect(), &name_rect, this); + if (!name_rect.pointInRect(x, y)) + return LLToastPanel::handleToolTip(x, y, mask); + + // Spawn at right side of the name textbox. + LLRect sticky_rect = mAvatarName->calcScreenRect(); + S32 icon_x = llmin(sticky_rect.mLeft + mAvatarName->getTextPixelWidth() + 3, sticky_rect.mRight - 16); + LLCoordGL pos(icon_x, sticky_rect.mTop); + + LLToolTip::Params params; + params.background_visible(false); + params.click_callback(boost::bind(&LLToastIMPanel::showInspector, this)); + params.delay_time(0.0f); // spawn instantly on hover + params.image(LLUI::getUIImage("Info_Small")); + params.message(""); + params.padding(0); + params.pos(pos); + params.sticky_rect(sticky_rect); + + LLToolTipMgr::getInstance()->show(params); + return TRUE; +} + +void LLToastIMPanel::showInspector() +{ + LLFloaterReg::showInstance("inspect_avatar", LLSD().with("avatar_id", mAvatarID)); +} diff --git a/indra/newview/lltoastimpanel.h b/indra/newview/lltoastimpanel.h index 53661f2cf6..154e6dae16 100644 --- a/indra/newview/lltoastimpanel.h +++ b/indra/newview/lltoastimpanel.h @@ -58,13 +58,16 @@ public: LLToastIMPanel(LLToastIMPanel::Params &p); virtual ~LLToastIMPanel(); /*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask); + /*virtual*/ BOOL handleToolTip(S32 x, S32 y, MASK mask); private: + void showInspector(); static const S32 DEFAULT_MESSAGE_MAX_LINE_COUNT; LLNotificationPtr mNotification; LLUUID mSessionID; - LLAvatarIconCtrl* mAvatar; - LLTextBox* mUserName; + LLUUID mAvatarID; + LLAvatarIconCtrl* mAvatarIcon; + LLTextBox* mAvatarName; LLTextBox* mTime; LLTextBox* mMessage; }; diff --git a/indra/newview/lltoolbar.cpp b/indra/newview/lltoolbar.cpp index edbaa0d45a..404eab9249 100644 --- a/indra/newview/lltoolbar.cpp +++ b/indra/newview/lltoolbar.cpp @@ -54,7 +54,6 @@ #include "lltooldraganddrop.h" #include "llfloaterinventory.h" #include "llfloaterchatterbox.h" -#include "llfloaterfriends.h" #include "llfloatersnapshot.h" #include "llinventorypanel.h" #include "lltoolmgr.h" @@ -70,7 +69,6 @@ #include "llviewerwindow.h" #include "lltoolgrab.h" #include "llcombobox.h" -#include "llimpanel.h" #include "lllayoutstack.h" #if LL_DARWIN @@ -95,7 +93,10 @@ F32 LLToolBar::sInventoryAutoOpenTime = 1.f; // LLToolBar::LLToolBar() -: LLPanel() + : LLPanel(), + + mInventoryAutoOpen(FALSE), + mNumUnreadIMs(0) #if LL_DARWIN , mResizeHandle(NULL) #endif // LL_DARWIN @@ -262,12 +263,12 @@ void LLToolBar::updateCommunicateList() communicate_button->removeall(); - LLFloater* frontmost_floater = LLFloaterChatterBox::getInstance()->getActiveFloater(); + //LLFloater* frontmost_floater = LLFloaterChatterBox::getInstance()->getActiveFloater(); LLScrollListItem* itemp = NULL; LLSD contact_sd; contact_sd["value"] = "contacts"; - contact_sd["columns"][0]["value"] = LLFloaterMyFriends::getInstance()->getShortTitle(); + /*contact_sd["columns"][0]["value"] = LLFloaterMyFriends::getInstance()->getShortTitle(); if (LLFloaterMyFriends::getInstance() == frontmost_floater) { contact_sd["columns"][0]["font"]["name"] = "SANSSERIF_SMALL"; @@ -277,7 +278,7 @@ void LLToolBar::updateCommunicateList() { selected = "contacts"; } - } + }*/ itemp = communicate_button->addElement(contact_sd, ADD_TOP); communicate_button->addSeparator(ADD_TOP); @@ -287,7 +288,7 @@ void LLToolBar::updateCommunicateList() std::set<LLHandle<LLFloater> >::const_iterator floater_handle_it; - if (gIMMgr->getIMFloaterHandles().size() > 0) + /*if (gIMMgr->getIMFloaterHandles().size() > 0) { communicate_button->addSeparator(ADD_TOP); } @@ -313,7 +314,7 @@ void LLToolBar::updateCommunicateList() } itemp = communicate_button->addElement(im_sd, ADD_TOP); } - } + }*/ communicate_button->setValue(selected); } @@ -337,7 +338,7 @@ void LLToolBar::onClickCommunicate(LLUICtrl* ctrl, const LLSD& user_data) } else if (selected_option.asString() == "redock") { - LLFloaterChatterBox* chatterbox_instance = LLFloaterChatterBox::getInstance(); + /*LLFloaterChatterBox* chatterbox_instance = LLFloaterChatterBox::getInstance(); if(chatterbox_instance) { chatterbox_instance->addFloater(LLFloaterMyFriends::getInstance(), FALSE); @@ -358,7 +359,7 @@ void LLToolBar::onClickCommunicate(LLUICtrl* ctrl, const LLSD& user_data) } } LLFloaterReg::showInstance("communicate", session_to_show); - } + }*/ } else if (selected_option.asString() == "mute list") { @@ -366,11 +367,11 @@ void LLToolBar::onClickCommunicate(LLUICtrl* ctrl, const LLSD& user_data) } else if (selected_option.isUndefined()) // user just clicked the communicate button, treat as toggle { - LLFloaterReg::toggleInstance("communicate"); + /*LLFloaterReg::toggleInstance("communicate");*/ } else // otherwise selection_option is undifined or a specific IM session id { - LLFloaterReg::showInstance("communicate", selected_option); + /*LLFloaterReg::showInstance("communicate", selected_option);*/ } } diff --git a/indra/newview/lltooldraganddrop.cpp b/indra/newview/lltooldraganddrop.cpp index 4420b046d8..125c62474e 100644 --- a/indra/newview/lltooldraganddrop.cpp +++ b/indra/newview/lltooldraganddrop.cpp @@ -1404,18 +1404,6 @@ void LLToolDragAndDrop::dropInventory(LLViewerObject* hit_obj, gFloaterTools->dirty(); } -struct LLGiveInventoryInfo -{ - LLUUID mToAgentID; - LLUUID mInventoryObjectID; - LLUUID mIMSessionID; - LLGiveInventoryInfo(const LLUUID& to_agent, const LLUUID& obj_id, const LLUUID &im_session_id = LLUUID::null) : - mToAgentID(to_agent), - mInventoryObjectID(obj_id), - mIMSessionID(im_session_id) - {} -}; - void LLToolDragAndDrop::giveInventory(const LLUUID& to_agent, LLInventoryItem* item, const LLUUID& im_session_id) @@ -1584,8 +1572,6 @@ void LLToolDragAndDrop::giveInventoryCategory(const LLUUID& to_agent, } else { - LLGiveInventoryInfo* info = NULL; - info = new LLGiveInventoryInfo(to_agent, cat->getUUID(), im_session_id); LLSD args; args["COUNT"] = llformat("%d",giveable.countNoCopy()); LLSD payload; diff --git a/indra/newview/lltoolgrab.cpp b/indra/newview/lltoolgrab.cpp index 26dbe6a489..d837a334f1 100644 --- a/indra/newview/lltoolgrab.cpp +++ b/indra/newview/lltoolgrab.cpp @@ -78,9 +78,15 @@ LLToolGrab::LLToolGrab( LLToolComposite* composite ) : LLTool( std::string("Grab"), composite ), mMode( GRAB_INACTIVE ), mVerticalDragging( FALSE ), + mHitLand(FALSE), + mLastMouseX(0), + mLastMouseY(0), + mAccumDeltaX(0), + mAccumDeltaY(0), mHasMoved( FALSE ), mOutsideSlop(FALSE), mDeselectedThisClick(FALSE), + mLastFace(0), mSpinGrabbing( FALSE ), mSpinRotation(), mHideBuildHighlight(FALSE) diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp index c79a66892d..39e71974fd 100644 --- a/indra/newview/lltoolpie.cpp +++ b/indra/newview/lltoolpie.cpp @@ -922,7 +922,7 @@ BOOL LLToolPie::handleTooltipObject( LLViewerObject* hover_object, std::string l const LLMediaEntry* mep = tep->hasMedia() ? tep->getMediaData() : NULL; if (mep) { - viewer_media_t media_impl = mep ? LLViewerMedia::getMediaImplFromTextureID(mep->getMediaID()) : NULL; + viewer_media_t media_impl = LLViewerMedia::getMediaImplFromTextureID(mep->getMediaID()); LLPluginClassMedia* media_plugin = NULL; if (media_impl.notNull() && (media_impl->hasMedia())) diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp index 7be45c649c..d2baf2d02b 100644 --- a/indra/newview/llviewercontrol.cpp +++ b/indra/newview/llviewercontrol.cpp @@ -63,7 +63,6 @@ #include "llviewerjoystick.h" #include "llviewerparcelmgr.h" #include "llparcel.h" -#include "lloverlaybar.h" #include "llkeyboard.h" #include "llerrorcontrol.h" #include "llappviewer.h" @@ -257,35 +256,6 @@ static bool handleJoystickChanged(const LLSD& newvalue) return true; } -static bool handleAudioStreamMusicChanged(const LLSD& newvalue) -{ - if (gAudiop) - { - if ( newvalue.asBoolean() ) - { - if (LLViewerParcelMgr::getInstance()->getAgentParcel() - && !LLViewerParcelMgr::getInstance()->getAgentParcel()->getMusicURL().empty()) - { - // if music isn't playing, start it - if (gOverlayBar && !gOverlayBar->musicPlaying()) - { - LLOverlayBar::toggleMusicPlay(NULL); - } - } - } - else - { - // if music is playing, stop it. - if (gOverlayBar && gOverlayBar->musicPlaying()) - { - LLOverlayBar::toggleMusicPlay(NULL); - } - - } - } - return true; -} - static bool handleUseOcclusionChanged(const LLSD& newvalue) { LLPipeline::sUseOcclusion = (newvalue.asBoolean() && gGLManager.mHasOcclusionQuery @@ -592,7 +562,6 @@ void settings_setup_listeners() gSavedSettings.getControl("AudioLevelVoice")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _2)); gSavedSettings.getControl("AudioLevelDoppler")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _2)); gSavedSettings.getControl("AudioLevelRolloff")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _2)); - gSavedSettings.getControl("AudioStreamingMusic")->getSignal()->connect(boost::bind(&handleAudioStreamMusicChanged, _2)); gSavedSettings.getControl("MuteAudio")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _2)); gSavedSettings.getControl("MuteMusic")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _2)); gSavedSettings.getControl("MuteMedia")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _2)); diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp index 3a834e7532..658d1c9ddd 100644 --- a/indra/newview/llviewerfloaterreg.cpp +++ b/indra/newview/llviewerfloaterreg.cpp @@ -54,7 +54,6 @@ #include "llfloaterbulkpermission.h" #include "llfloaterbump.h" #include "llfloatercamera.h" -#include "llfloaterchatterbox.h" #include "llfloaterdaycycle.h" #include "llfloatersearch.h" #include "llfloaterenvsettings.h" @@ -69,7 +68,6 @@ #include "llfloaterhud.h" #include "llfloaterimagepreview.h" #include "llimfloater.h" -#include "llimpanel.h" #include "llfloaterinspect.h" #include "llfloaterinventory.h" #include "llfloaterjoystick.h" @@ -116,7 +114,6 @@ #include "llinspectobject.h" #include "llinspectremoteobject.h" #include "llinspecttoast.h" -#include "llmediaremotectrl.h" #include "llmoveview.h" #include "llnearbychat.h" #include "llpanelblockedlist.h" @@ -155,9 +152,8 @@ void LLViewerFloaterReg::registerFloaters() LLFloaterReg::add("camera", "floater_camera.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterCamera>); //LLFloaterReg::add("chat", "floater_chat_history.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterChat>); LLFloaterReg::add("nearby_chat", "floater_nearby_chat.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLNearbyChat>); - LLFloaterReg::add("communicate", "floater_chatterbox.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterChatterBox>); + LLFloaterReg::add("compile_queue", "floater_script_queue.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterCompileQueue>); - LLFloaterReg::add("contacts", "floater_my_friends.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterMyFriends>); LLFloaterReg::add("env_day_cycle", "floater_day_cycle_options.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterDayCycle>); LLFloaterReg::add("env_post_process", "floater_post_process.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPostProcess>); @@ -204,6 +200,7 @@ void LLViewerFloaterReg::registerFloaters() LLFloaterReg::add("openobject", "floater_openobject.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterOpenObject>); LLFloaterReg::add("outgoing_call", "floater_outgoing_call.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLOutgoingCallDialog>); + LLFloaterReg::add("call_info", "floater_call_info.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLCallInfoDialog>); LLFloaterReg::add("parcel_info", "floater_preview_url.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterParcelInfo>); LLFloaterPayUtil::registerFloater(); @@ -264,8 +261,5 @@ void LLViewerFloaterReg::registerFloaters() // *NOTE: Please keep these alphabetized for easier merges - // debug use only - LLFloaterReg::add("media_remote_ctrl", "floater_media_remote.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterMediaRemoteCtrl>); - LLFloaterReg::registerControlVariables(); // Make sure visibility and rect controls get preserved when saving } diff --git a/indra/newview/llviewerhelp.cpp b/indra/newview/llviewerhelp.cpp index 5af79b4fd3..b82538dacb 100644 --- a/indra/newview/llviewerhelp.cpp +++ b/indra/newview/llviewerhelp.cpp @@ -33,6 +33,7 @@ #include "llviewerprecompiledheaders.h" +#include "llcommandhandler.h" #include "llfloaterhelpbrowser.h" #include "llfloaterreg.h" #include "llfocusmgr.h" @@ -43,6 +44,33 @@ #include "llviewerhelputil.h" #include "llviewerhelp.h" +// support for secondlife:///app/help/{TOPIC} SLapps +class LLHelpHandler : public LLCommandHandler +{ +public: + // requests will be throttled from a non-trusted browser + LLHelpHandler() : LLCommandHandler("help", UNTRUSTED_THROTTLE) {} + + bool handle(const LLSD& params, const LLSD& query_map, LLMediaCtrl* web) + { + LLViewerHelp* vhelp = LLViewerHelp::getInstance(); + if (! vhelp) + { + return false; + } + + // get the requested help topic name, or use the fallback if none + std::string help_topic = vhelp->defaultTopic(); + if (params.size() >= 1) + { + help_topic = params[0].asString(); + } + + vhelp->showTopic(help_topic); + return true; + } +}; +LLHelpHandler gHelpHandler; ////////////////////////////// // implement LLHelp interface @@ -65,18 +93,16 @@ void LLViewerHelp::showTopic(const std::string &topic) help_topic = defaultTopic(); } - // f1 help topic means: if user not logged in yet, show the - // pre-login topic, otherwise show help for the focused item + // f1 help topic means: if the user is not logged in yet, show + // the pre-login topic instead of the default fallback topic, + // otherwise show help for the focused item if (help_topic == f1HelpTopic()) { - if (! LLLoginInstance::getInstance()->authSuccess()) + help_topic = getTopicFromFocus(); + if (help_topic == defaultTopic() && ! LLLoginInstance::getInstance()->authSuccess()) { help_topic = preLoginTopic(); } - else - { - help_topic = getTopicFromFocus(); - } } // work out the URL for this topic and display it diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp index 6387133a86..bfac7e4b8b 100644 --- a/indra/newview/llviewerinventory.cpp +++ b/indra/newview/llviewerinventory.cpp @@ -34,6 +34,7 @@ #include "llviewerinventory.h" #include "llnotificationsutil.h" +#include "llsdserialize.h" #include "message.h" #include "llagent.h" @@ -1174,81 +1175,196 @@ const std::string& LLViewerInventoryItem::getName() const return linked_category->getName(); } - return getDisplayName(); + return LLInventoryItem::getName(); } -const std::string& LLViewerInventoryItem::getDisplayName() const +/** + * Class to store sorting order of favorites landmarks in a local file. EXT-3985. + * It replaced previously implemented solution to store sort index in landmark's name as a "<N>@" prefix. + * Data are stored in user home directory. + */ +class LLFavoritesOrderStorage : public LLSingleton<LLFavoritesOrderStorage> + , public LLDestroyClass<LLFavoritesOrderStorage> { - std::string result; - BOOL hasSortField = extractSortFieldAndDisplayName(0, &result); +public: + /** + * Sets sort index for specified with LLUUID favorite landmark + */ + void setSortIndex(const LLUUID& inv_item_id, S32 sort_index); + + /** + * Gets sort index for specified with LLUUID favorite landmark + */ + S32 getSortIndex(const LLUUID& inv_item_id); + void removeSortIndex(const LLUUID& inv_item_id); + + /** + * Implementation of LLDestroyClass. Calls cleanup() instance method. + * + * It is important this callback is called before gInventory is cleaned. + * For now it is called from LLAppViewer::cleanup() -> LLAppViewer::disconnectViewer(), + * Inventory is cleaned later from LLAppViewer::cleanup() after LLAppViewer::disconnectViewer() is called. + * @see cleanup() + */ + static void destroyClass(); + + const static S32 NO_INDEX; +private: + friend class LLSingleton<LLFavoritesOrderStorage>; + LLFavoritesOrderStorage() : mIsDirty(false) { load(); } + ~LLFavoritesOrderStorage() { save(); } + + /** + * Removes sort indexes for items which are not in Favorites bar for now. + */ + void cleanup(); + + const static std::string SORTING_DATA_FILE_NAME; + + void load(); + void save(); + + typedef std::map<LLUUID, S32> sort_index_map_t; + sort_index_map_t mSortIndexes; + + bool mIsDirty; + + struct IsNotInFavorites + { + IsNotInFavorites(const LLInventoryModel::item_array_t& items) + : mFavoriteItems(items) + { - return mDisplayName = hasSortField ? result : LLInventoryItem::getName(); -} + } -// static -std::string LLViewerInventoryItem::getDisplayName(const std::string& name) -{ - std::string result; - BOOL hasSortField = extractSortFieldAndDisplayName(name, 0, &result); + /** + * Returns true if specified item is not found among inventory items + */ + bool operator()(const sort_index_map_t::value_type& id_index_pair) const + { + LLPointer<LLViewerInventoryItem> item = gInventory.getItem(id_index_pair.first); + if (item.isNull()) return true; - return hasSortField ? result : name; -} + LLInventoryModel::item_array_t::const_iterator found_it = + std::find(mFavoriteItems.begin(), mFavoriteItems.end(), item); -S32 LLViewerInventoryItem::getSortField() const -{ - S32 result; - BOOL hasSortField = extractSortFieldAndDisplayName(&result, 0); + return found_it == mFavoriteItems.end(); + } + private: + LLInventoryModel::item_array_t mFavoriteItems; + }; + +}; + +const std::string LLFavoritesOrderStorage::SORTING_DATA_FILE_NAME = "landmarks_sorting.xml"; +const S32 LLFavoritesOrderStorage::NO_INDEX = -1; - return hasSortField ? result : -1; +void LLFavoritesOrderStorage::setSortIndex(const LLUUID& inv_item_id, S32 sort_index) +{ + mSortIndexes[inv_item_id] = sort_index; + mIsDirty = true; } -void LLViewerInventoryItem::setSortField(S32 sortField) +S32 LLFavoritesOrderStorage::getSortIndex(const LLUUID& inv_item_id) { - using std::string; + sort_index_map_t::const_iterator it = mSortIndexes.find(inv_item_id); + if (it != mSortIndexes.end()) + { + return it->second; + } + return NO_INDEX; +} - std::stringstream ss; - ss << sortField; +void LLFavoritesOrderStorage::removeSortIndex(const LLUUID& inv_item_id) +{ + mSortIndexes.erase(inv_item_id); + mIsDirty = true; +} - string newSortField = ss.str(); +// static +void LLFavoritesOrderStorage::destroyClass() +{ + LLFavoritesOrderStorage::instance().cleanup(); +} - const char separator = getSeparator(); - const string::size_type separatorPos = mName.find(separator, 0); +void LLFavoritesOrderStorage::load() +{ + // load per-resident sorting information + std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, SORTING_DATA_FILE_NAME); - if (separatorPos < string::npos) + LLSD settings_llsd; + llifstream file; + file.open(filename); + if (file.is_open()) { - // the name of the LLViewerInventoryItem already consists of sort field and display name. - mName = newSortField + separator + mName.substr(separatorPos + 1, string::npos); + LLSDSerialize::fromXML(settings_llsd, file); } - else + + for (LLSD::map_const_iterator iter = settings_llsd.beginMap(); + iter != settings_llsd.endMap(); ++iter) { - // there is no sort field in the name of LLViewerInventoryItem, we should add it - mName = newSortField + separator + mName; + mSortIndexes.insert(std::make_pair(LLUUID(iter->first), (S32)iter->second.asInteger())); } } -void LLViewerInventoryItem::rename(const std::string& n) +void LLFavoritesOrderStorage::save() { - using std::string; + // nothing to save if clean + if (!mIsDirty) return; - string new_name(n); - LLStringUtil::replaceNonstandardASCII(new_name, ' '); - LLStringUtil::replaceChar(new_name, '|', ' '); - LLStringUtil::trim(new_name); - LLStringUtil::truncate(new_name, DB_INV_ITEM_NAME_STR_LEN); + // If we quit from the login screen we will not have an SL account + // name. Don't try to save, otherwise we'll dump a file in + // C:\Program Files\SecondLife\ or similar. JC + std::string user_dir = gDirUtilp->getLindenUserDir(); + if (!user_dir.empty()) + { + std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, SORTING_DATA_FILE_NAME); + LLSD settings_llsd; - const char separator = getSeparator(); - const string::size_type separatorPos = mName.find(separator, 0); + for(sort_index_map_t::const_iterator iter = mSortIndexes.begin(); iter != mSortIndexes.end(); ++iter) + { + settings_llsd[iter->first.asString()] = iter->second; + } - if (separatorPos < string::npos) - { - mName.replace(separatorPos + 1, string::npos, new_name); - } - else - { - mName = new_name; + llofstream file; + file.open(filename); + LLSDSerialize::toPrettyXML(settings_llsd, file); } } +void LLFavoritesOrderStorage::cleanup() +{ + // nothing to clean + if (!mIsDirty) return; + + const LLUUID fav_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE); + LLInventoryModel::cat_array_t cats; + LLInventoryModel::item_array_t items; + gInventory.collectDescendents(fav_id, cats, items, LLInventoryModel::EXCLUDE_TRASH); + + IsNotInFavorites is_not_in_fav(items); + + sort_index_map_t aTempMap; + //copy unremoved values from mSortIndexes to aTempMap + std::remove_copy_if(mSortIndexes.begin(), mSortIndexes.end(), + inserter(aTempMap, aTempMap.begin()), + is_not_in_fav); + + //Swap the contents of mSortIndexes and aTempMap + mSortIndexes.swap(aTempMap); +} + + +S32 LLViewerInventoryItem::getSortField() const +{ + return LLFavoritesOrderStorage::instance().getSortIndex(mUUID); +} + +void LLViewerInventoryItem::setSortField(S32 sortField) +{ + LLFavoritesOrderStorage::instance().setSortIndex(mUUID, sortField); +} + const LLPermissions& LLViewerInventoryItem::getPermissions() const { // Use the actual permissions of the symlink, not its parent. @@ -1337,6 +1453,8 @@ U32 LLViewerInventoryItem::getCRC32() const return LLInventoryItem::getCRC32(); } +// *TODO: mantipov: should be removed with LMSortPrefix patch in llinventorymodel.cpp, EXT-3985 +static char getSeparator() { return '@'; } BOOL LLViewerInventoryItem::extractSortFieldAndDisplayName(const std::string& name, S32* sortField, std::string* displayName) { using std::string; @@ -1372,12 +1490,6 @@ BOOL LLViewerInventoryItem::extractSortFieldAndDisplayName(const std::string& na return result; } -void LLViewerInventoryItem::insertDefaultSortField(std::string& name) -{ - name.insert(0, std::string("1") + getSeparator()); -} - - // This returns true if the item that this item points to // doesn't exist in memory (i.e. LLInventoryModel). The baseitem // might still be in the database but just not loaded yet. diff --git a/indra/newview/llviewerinventory.h b/indra/newview/llviewerinventory.h index 917b8747ea..c24f76c87a 100644 --- a/indra/newview/llviewerinventory.h +++ b/indra/newview/llviewerinventory.h @@ -58,18 +58,14 @@ public: protected: ~LLViewerInventoryItem( void ); // ref counted BOOL extractSortFieldAndDisplayName(S32* sortField, std::string* displayName) const { return extractSortFieldAndDisplayName(mName, sortField, displayName); } - static char getSeparator() { return '@'; } mutable std::string mDisplayName; public: virtual LLAssetType::EType getType() const; virtual const LLUUID& getAssetUUID() const; virtual const std::string& getName() const; - virtual const std::string& getDisplayName() const; - static std::string getDisplayName(const std::string& name); virtual S32 getSortField() const; virtual void setSortField(S32 sortField); - virtual void rename(const std::string& new_name); virtual const LLPermissions& getPermissions() const; virtual const LLUUID& getCreatorUUID() const; virtual const std::string& getDescription() const; @@ -82,7 +78,6 @@ public: virtual U32 getCRC32() const; // really more of a checksum. static BOOL extractSortFieldAndDisplayName(const std::string& name, S32* sortField, std::string* displayName); - static void insertDefaultSortField(std::string& name); // construct a complete viewer inventory item LLViewerInventoryItem(const LLUUID& uuid, const LLUUID& parent_uuid, diff --git a/indra/newview/llviewerjoint.cpp b/indra/newview/llviewerjoint.cpp index c2591ac8d7..95f05b5f5f 100644 --- a/indra/newview/llviewerjoint.cpp +++ b/indra/newview/llviewerjoint.cpp @@ -59,13 +59,9 @@ BOOL LLViewerJoint::sDisableLOD = FALSE; // Class Constructor //----------------------------------------------------------------------------- LLViewerJoint::LLViewerJoint() + : LLJoint() { - mUpdateXform = TRUE; - mValid = FALSE; - mComponents = SC_JOINT | SC_BONE | SC_AXES; - mMinPixelArea = DEFAULT_LOD; - mPickName = PN_DEFAULT; - mVisible = TRUE; + init(); } @@ -73,13 +69,21 @@ LLViewerJoint::LLViewerJoint() // LLViewerJoint() // Class Constructor //----------------------------------------------------------------------------- -LLViewerJoint::LLViewerJoint(const std::string &name, LLJoint *parent) : - LLJoint(name, parent) +LLViewerJoint::LLViewerJoint(const std::string &name, LLJoint *parent) + : LLJoint(name, parent) +{ + init(); +} + + +void LLViewerJoint::init() { mValid = FALSE; mComponents = SC_JOINT | SC_BONE | SC_AXES; mMinPixelArea = DEFAULT_LOD; mPickName = PN_DEFAULT; + mVisible = TRUE; + mMeshID = 0; } diff --git a/indra/newview/llviewerjoint.h b/indra/newview/llviewerjoint.h index 08c4ec36fd..0d3092a044 100644 --- a/indra/newview/llviewerjoint.h +++ b/indra/newview/llviewerjoint.h @@ -142,6 +142,8 @@ public: void setMeshID( S32 id ) {mMeshID = id;} protected: + void init(); + BOOL mValid; U32 mComponents; F32 mMinPixelArea; diff --git a/indra/newview/llviewerjointmesh.cpp b/indra/newview/llviewerjointmesh.cpp index 5b8902dec4..1a67fc0966 100644 --- a/indra/newview/llviewerjointmesh.cpp +++ b/indra/newview/llviewerjointmesh.cpp @@ -147,6 +147,7 @@ LLViewerJointMesh::LLViewerJointMesh() mTexture( NULL ), mLayerSet( NULL ), mTestImageName( 0 ), + mFaceIndexCount(0), mIsTransparent(FALSE) { diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index d712446d83..9ced0194a2 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -940,7 +940,6 @@ bool LLViewerMedia::firstRunCallback(const LLSD& notification, const LLSD& respo { // user has elected to automatically play media. gSavedSettings.setBOOL(LLViewerMedia::AUTO_PLAY_MEDIA_SETTING, TRUE); - gSavedSettings.setBOOL("AudioStreamingVideo", TRUE); gSavedSettings.setBOOL("AudioStreamingMusic", TRUE); gSavedSettings.setBOOL("AudioStreamingMedia", TRUE); @@ -961,7 +960,6 @@ bool LLViewerMedia::firstRunCallback(const LLSD& notification, const LLSD& respo { gSavedSettings.setBOOL(LLViewerMedia::AUTO_PLAY_MEDIA_SETTING, FALSE); gSavedSettings.setBOOL("AudioStreamingMedia", FALSE); - gSavedSettings.setBOOL("AudioStreamingVideo", FALSE); gSavedSettings.setBOOL("AudioStreamingMusic", FALSE); } return false; @@ -1813,11 +1811,6 @@ void LLViewerMediaImpl::navigateStop() bool LLViewerMediaImpl::handleKeyHere(KEY key, MASK mask) { bool result = false; - // *NOTE:Mani - if this doesn't exist llmozlib goes crashy in the debug build. - // LLMozlib::init wants to write some files to <exe_dir>/components - std::string debug_init_component_dir( gDirUtilp->getExecutableDir() ); - debug_init_component_dir += "/components"; - LLAPRFile::makeDir(debug_init_component_dir.c_str()); if (mMediaSource) { diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 455b572537..51dbe4b64b 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -53,7 +53,6 @@ #include "llfloaterbuycontents.h" #include "llfloaterbuycurrency.h" #include "llfloatercustomize.h" -#include "llfloaterchatterbox.h" #include "llfloatergodtools.h" #include "llfloaterinventory.h" #include "llfloaterland.h" @@ -82,7 +81,6 @@ #include "llsidetray.h" #include "llstatusbar.h" #include "lltextureview.h" -#include "lltoolbar.h" #include "lltoolcomp.h" #include "lltoolmgr.h" #include "lltoolpie.h" @@ -6389,10 +6387,9 @@ void handle_selected_texture_info(void*) msg.assign("Texture info for: "); msg.append(node->mName); - //TODO* CHAT: how to show this? - //LLSD args; - //args["MESSAGE"] = msg; - //LLNotificationsUtil::add("SystemMessage", args); + LLSD args; + args["MESSAGE"] = msg; + LLNotificationsUtil::add("SystemMessage", args); U8 te_count = node->getObject()->getNumTEs(); // map from texture ID to list of faces using it @@ -6425,10 +6422,9 @@ void handle_selected_texture_info(void*) msg.append( llformat("%d ", (S32)(it->second[i]))); } - //TODO* CHAT: how to show this? - //LLSD args; - //args["MESSAGE"] = msg; - //LLNotificationsUtil::add("SystemMessage", args); + LLSD args; + args["MESSAGE"] = msg; + LLNotificationsUtil::add("SystemMessage", args); } } } @@ -7959,6 +7955,7 @@ void initialize_menus() commit.add("Avatar.Eject", boost::bind(&handle_avatar_eject, LLSD())); view_listener_t::addMenu(new LLAvatarSendIM(), "Avatar.SendIM"); view_listener_t::addMenu(new LLAvatarCall(), "Avatar.Call"); + enable.add("Avatar.EnableCall", boost::bind(&LLAvatarActions::canCall)); view_listener_t::addMenu(new LLAvatarReportAbuse(), "Avatar.ReportAbuse"); view_listener_t::addMenu(new LLAvatarEnableAddFriend(), "Avatar.EnableAddFriend"); diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index fccd2b2e54..317eecb7a3 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -906,7 +906,7 @@ void open_inventory_offer(const std::vector<LLUUID>& items, const std::string& f if ("inventory_handler" == from_name) { //we have to filter inventory_handler messages to avoid notification displaying - LLSideTray::getInstance()->showPanel("panel_places", + LLSideTray::getInstance()->showPanel("panel_places", LLSD().with("type", "landmark").with("id", item->getUUID())); } else if("group_offer" == from_name) @@ -925,8 +925,9 @@ void open_inventory_offer(const std::vector<LLUUID>& items, const std::string& f args["FOLDER_NAME"] = std::string(parent_folder ? parent_folder->getName() : "unknown"); LLNotificationsUtil::add("LandmarkCreated", args); // Created landmark is passed to Places panel to allow its editing. In fact panel should be already displayed. + // If the panel is closed we don't reopen it until created landmark is loaded. //TODO*:: dserduk(7/12/09) remove LLPanelPlaces dependency from here - LLPanelPlaces *places_panel = dynamic_cast<LLPanelPlaces*>(LLSideTray::getInstance()->showPanel("panel_places", LLSD())); + LLPanelPlaces *places_panel = dynamic_cast<LLPanelPlaces*>(LLSideTray::getInstance()->getPanel("panel_places")); if (places_panel) { // we are creating a landmark @@ -1365,10 +1366,9 @@ bool LLOfferInfo::inventory_task_offer_callback(const LLSD& notification, const if (check_offer_throttle(mFromName, true)) { log_message = chatHistory_string + " " + LLTrans::getString("InvOfferGaveYou") + " " + mDesc + LLTrans::getString("."); - //TODO* CHAT: how to show this? - //LLSD args; - //args["MESSAGE"] = log_message; - //LLNotificationsUtil::add("SystemMessage", args); + LLSD args; + args["MESSAGE"] = log_message; + LLNotificationsUtil::add("SystemMessage", args); } // we will want to open this item when it comes back. @@ -1410,11 +1410,10 @@ bool LLOfferInfo::inventory_task_offer_callback(const LLSD& notification, const // send the message msg->sendReliable(mHost); - //TODO* CHAT: how to show this? - //log_message = LLTrans::getString("InvOfferYouDecline") + " " + mDesc + " " + LLTrans::getString("InvOfferFrom") + " " + mFromName +"."; - //LLSD args; - //args["MESSAGE"] = log_message; - //LLNotificationsUtil::add("SystemMessage", args); + log_message = LLTrans::getString("InvOfferYouDecline") + " " + mDesc + " " + LLTrans::getString("InvOfferFrom") + " " + mFromName +"."; + LLSD args; + args["MESSAGE"] = log_message; + LLNotificationsUtil::add("SystemMessage", args); if (busy && (!mFromGroup && !mFromObject)) { @@ -1473,11 +1472,6 @@ void inventory_offer_handler(LLOfferInfo* info) LLStringUtil::truncate(msg, indx); } - if(LLAssetType::AT_LANDMARK == info->mType) - { - msg = LLViewerInventoryItem::getDisplayName(msg); - } - LLSD args; args["[OBJECTNAME]"] = msg; @@ -1843,11 +1837,9 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) // history. Pretend the chat is from a local agent, // so it will go into the history but not be shown on screen. - //TODO* CHAT: how to show this? - //and this is not system message... - //LLSD args; - //args["MESSAGE"] = buffer; - //LLNotificationsUtil::add("SystemMessage", args); + LLSD args; + args["MESSAGE"] = buffer; + LLNotificationsUtil::add("SystemMessageTip", args); } } break; @@ -1911,7 +1903,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) if (has_inventory) { - info = new LLOfferInfo; + info = new LLOfferInfo(); info->mIM = IM_GROUP_NOTICE; info->mFromID = from_id; @@ -1965,6 +1957,10 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) LLPanelGroup::showNotice(subj,mes,group_id,has_inventory,item_name,info); } + else + { + delete info; + } } break; case IM_GROUP_INVITATION: @@ -2025,6 +2021,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) if (sizeof(offer_agent_bucket_t) != binary_bucket_size) { LL_WARNS("Messaging") << "Malformed inventory offer from agent" << LL_ENDL; + delete info; break; } bucketp = (struct offer_agent_bucket_t*) &binary_bucket[0]; @@ -2036,6 +2033,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) if (sizeof(S8) != binary_bucket_size) { LL_WARNS("Messaging") << "Malformed inventory offer from object" << LL_ENDL; + delete info; break; } info->mType = (LLAssetType::EType) binary_bucket[0]; @@ -2181,10 +2179,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) query_string["groupowned"] = "true"; } - std::ostringstream link; - link << "secondlife:///app/objectim/" << session_id << LLURI::mapToQueryString(query_string); - - chat.mURL = link.str(); + chat.mURL = LLSLURL("objectim", session_id, "").getSLURLString(); chat.mText = message; chat.mSourceType = CHAT_SOURCE_OBJECT; @@ -2215,7 +2210,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) payload["SESSION_NAME"] = session_name; if (from_group) { - payload["groupowned"] = "true"; + payload["group_owned"] = "true"; } LLNotificationsUtil::add("ServerObjectMessage", substitutions, payload); } @@ -2517,7 +2512,7 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) // Object owner for objects msg->getUUID("ChatData", "OwnerID", owner_id); - + msg->getU8Fast(_PREHASH_ChatData, _PREHASH_SourceType, source_temp); chat.mSourceType = (EChatSourceType)source_temp; @@ -2546,7 +2541,7 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) if (chatter) { chat.mPosAgent = chatter->getPositionAgent(); - + // Make swirly things only for talking objects. (not script debug messages, though) if (chat.mSourceType == CHAT_SOURCE_OBJECT && chat.mChatType != CHAT_TYPE_DEBUG_MSG) @@ -2691,8 +2686,13 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) chat.mMuted = is_muted && !is_linden; - LLNotificationsUI::LLNotificationManager::instance().onChat( - chat, LLNotificationsUI::NT_NEARBYCHAT); + // pass owner_id to chat so that we can display the remote + // object inspect for an object that is chatting with you + LLSD args; + args["type"] = LLNotificationsUI::NT_NEARBYCHAT; + args["owner_id"] = owner_id; + + LLNotificationsUI::LLNotificationManager::instance().onChat(chat, args); } } @@ -3078,10 +3078,9 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**) { // Chat the "back" SLURL. (DEV-4907) - //TODO* CHAT: how to show this? - //LLSD args; - //args["MESSAGE"] = message; - //LLNotificationsUtil::add("SystemMessage", args); + LLSD args; + args["MESSAGE"] = "Teleport completed from " + gAgent.getTeleportSourceSLURL().getSLURLString(); + LLNotificationsUtil::add("SystemMessageTip", args); // Set the new position avatarp->setPositionAgent(agent_pos); diff --git a/indra/newview/llviewermessage.h b/indra/newview/llviewermessage.h index 8404d6fde0..1415c16090 100644 --- a/indra/newview/llviewermessage.h +++ b/indra/newview/llviewermessage.h @@ -205,7 +205,9 @@ void open_inventory_offer(const std::vector<LLUUID>& items, const std::string& f struct LLOfferInfo { - LLOfferInfo() {}; + LLOfferInfo() + : mFromGroup(FALSE), mFromObject(FALSE), + mIM(IM_NOTHING_SPECIAL), mType(LLAssetType::AT_NONE) {}; LLOfferInfo(const LLSD& sd); void forceResponse(InventoryOfferResponse response); diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index ce7b45bc11..202ad30287 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -861,6 +861,7 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys, htonmemcpy(collision_plane.mV, &data[count], MVT_LLVector4, sizeof(LLVector4)); ((LLVOAvatar*)this)->setFootPlane(collision_plane); count += sizeof(LLVector4); + // fall through case 60: this_update_precision = 32; // this is a terse update @@ -900,6 +901,7 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys, htonmemcpy(collision_plane.mV, &data[count], MVT_LLVector4, sizeof(LLVector4)); ((LLVOAvatar*)this)->setFootPlane(collision_plane); count += sizeof(LLVector4); + // fall through case 32: this_update_precision = 16; test_pos_parent.quantize16(-0.5f*size, 1.5f*size, MIN_HEIGHT, MAX_HEIGHT); @@ -1172,6 +1174,7 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys, htonmemcpy(collision_plane.mV, &data[count], MVT_LLVector4, sizeof(LLVector4)); ((LLVOAvatar*)this)->setFootPlane(collision_plane); count += sizeof(LLVector4); + // fall through case 60: // this is a terse 32 update // pos @@ -1211,6 +1214,7 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys, htonmemcpy(collision_plane.mV, &data[count], MVT_LLVector4, sizeof(LLVector4)); ((LLVOAvatar*)this)->setFootPlane(collision_plane); count += sizeof(LLVector4); + // fall through case 32: // this is a terse 16 update this_update_precision = 16; diff --git a/indra/newview/llviewerparcelmedia.cpp b/indra/newview/llviewerparcelmedia.cpp index e87dbe5c07..c4fc2e5cab 100644 --- a/indra/newview/llviewerparcelmedia.cpp +++ b/indra/newview/llviewerparcelmedia.cpp @@ -179,7 +179,7 @@ void LLViewerParcelMedia::play(LLParcel* parcel) if (!parcel) return; - if (!gSavedSettings.getBOOL("AudioStreamingMedia") || !gSavedSettings.getBOOL("AudioStreamingVideo")) + if (!gSavedSettings.getBOOL("AudioStreamingMedia")) return; std::string media_url = parcel->getMediaURL(); diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp index 10a95443f1..c537865937 100644 --- a/indra/newview/llviewerparcelmgr.cpp +++ b/indra/newview/llviewerparcelmgr.cpp @@ -69,7 +69,6 @@ #include "llviewerparceloverlay.h" #include "llviewerregion.h" #include "llworld.h" -#include "lloverlaybar.h" #include "roles_constants.h" #include "llweb.h" @@ -706,8 +705,8 @@ bool LLViewerParcelMgr::allowAgentScripts() const bool LLViewerParcelMgr::allowAgentDamage() const { LLViewerRegion* region = gAgent.getRegion(); - return region && region->getAllowDamage() - && mAgentParcel && mAgentParcel->getAllowDamage(); + return (region && region->getAllowDamage()) + || (mAgentParcel && mAgentParcel->getAllowDamage()); } BOOL LLViewerParcelMgr::isOwnedAt(const LLVector3d& pos_global) const diff --git a/indra/newview/llviewerpartsim.cpp b/indra/newview/llviewerpartsim.cpp index 841a7ccc5e..6b480ccf8e 100644 --- a/indra/newview/llviewerpartsim.cpp +++ b/indra/newview/llviewerpartsim.cpp @@ -81,6 +81,7 @@ F32 calc_desired_size(LLViewerCamera* camera, LLVector3 pos, LLVector2 scale) LLViewerPart::LLViewerPart() : mPartID(0), mLastUpdateTime(0.f), + mSkipOffset(0.f), mVPCallback(NULL), mImagep(NULL) { diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp index 6dc9f5c465..86b1a8c910 100644 --- a/indra/newview/llviewershadermgr.cpp +++ b/indra/newview/llviewershadermgr.cpp @@ -135,7 +135,8 @@ LLGLSLShader gLuminanceGatherProgram; GLint gAvatarMatrixParam; LLViewerShaderMgr::LLViewerShaderMgr() : - mVertexShaderLevel(SHADER_COUNT, 0) + mVertexShaderLevel(SHADER_COUNT, 0), + mMaxAvatarShaderLevel(0) { /// Make sure WL Sky is the first program mShaderList.push_back(&gWLSkyProgram); diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp index 3f42cba561..0ad269392d 100644 --- a/indra/newview/llviewertexture.cpp +++ b/indra/newview/llviewertexture.cpp @@ -1029,6 +1029,8 @@ void LLViewerFetchedTexture::init(bool firstinit) // does not contain this image. mIsMissingAsset = FALSE; + mLoadedCallbackDesiredDiscardLevel = 0; + mNeedsCreateTexture = FALSE; mIsRawImageValid = FALSE; @@ -1041,6 +1043,7 @@ void LLViewerFetchedTexture::init(bool firstinit) mFetchPriority = 0; mDownloadProgress = 0.f; mFetchDeltaTime = 999999.f; + mRequestDeltaTime = 0.f; mForSculpt = FALSE ; mIsFetched = FALSE ; @@ -2777,7 +2780,6 @@ void LLViewerMediaTexture::updateClass() #if 0 //force to play media. gSavedSettings.setBOOL("AudioStreamingMedia", true) ; - gSavedSettings.setBOOL("AudioStreamingVideo", true) ; #endif for(media_map_t::iterator iter = sMediaMap.begin() ; iter != sMediaMap.end(); ) diff --git a/indra/newview/llviewervisualparam.cpp b/indra/newview/llviewervisualparam.cpp index b088ef0730..fad398e00b 100644 --- a/indra/newview/llviewervisualparam.cpp +++ b/indra/newview/llviewervisualparam.cpp @@ -46,6 +46,7 @@ LLViewerVisualParamInfo::LLViewerVisualParamInfo() : mWearableType( WT_INVALID ), + mCrossWearable(FALSE), mCamDist( 0.5f ), mCamAngle( 0.f ), mCamElevation( 0.f ), diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index b2ee7f4469..0c756d122c 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -101,7 +101,6 @@ #include "llfloaterbuildoptions.h" #include "llfloaterbuyland.h" #include "llfloatercamera.h" -#include "llfloaterchatterbox.h" #include "llfloatercustomize.h" #include "llfloaterland.h" #include "llfloaterinspect.h" @@ -128,7 +127,6 @@ #include "llmorphview.h" #include "llmoveview.h" #include "llnavigationbar.h" -#include "lloverlaybar.h" #include "llpreviewtexture.h" #include "llprogressview.h" #include "llresmgr.h" @@ -147,7 +145,6 @@ #include "lltexturefetch.h" #include "lltextureview.h" #include "lltool.h" -#include "lltoolbar.h" #include "lltoolcomp.h" #include "lltooldraganddrop.h" #include "lltoolface.h" @@ -1463,10 +1460,6 @@ void LLViewerWindow::initWorldUI() bottom_tray_container->addChild(bottom_tray); bottom_tray_container->setVisible(TRUE); - // Pre initialize instance communicate instance; - // currently needs to happen before initializing chat or IM - LLFloaterReg::getInstance("communicate"); - LLRect morph_view_rect = full_window; morph_view_rect.stretch( -STATUS_BAR_HEIGHT ); morph_view_rect.mTop = full_window.mTop - 32; @@ -1659,6 +1652,9 @@ LLViewerWindow::~LLViewerWindow() { llinfos << "Destroying Window" << llendl; destroyWindow(); + + delete mDebugText; + mDebugText = NULL; } @@ -2266,15 +2262,18 @@ void LLViewerWindow::handleScrollWheel(S32 clicks) void LLViewerWindow::moveCursorToCenter() { - S32 x = getWorldViewWidthScaled() / 2; - S32 y = getWorldViewHeightScaled() / 2; + if (! gSavedSettings.getBOOL("DisableMouseWarp")) + { + S32 x = getWorldViewWidthScaled() / 2; + S32 y = getWorldViewHeightScaled() / 2; - //on a forced move, all deltas get zeroed out to prevent jumping - mCurrentMousePoint.set(x,y); - mLastMousePoint.set(x,y); - mCurrentMouseDelta.set(0,0); + //on a forced move, all deltas get zeroed out to prevent jumping + mCurrentMousePoint.set(x,y); + mLastMousePoint.set(x,y); + mCurrentMouseDelta.set(0,0); - LLUI::setMousePositionScreen(x, y); + LLUI::setMousePositionScreen(x, y); + } } @@ -4846,10 +4845,10 @@ LLPickInfo::LLPickInfo() } LLPickInfo::LLPickInfo(const LLCoordGL& mouse_pos, - MASK keyboard_mask, - BOOL pick_transparent, - BOOL pick_uv_coords, - void (*pick_callback)(const LLPickInfo& pick_info)) + MASK keyboard_mask, + BOOL pick_transparent, + BOOL pick_uv_coords, + void (*pick_callback)(const LLPickInfo& pick_info)) : mMousePt(mouse_pos), mKeyMask(keyboard_mask), mPickCallback(pick_callback), diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h index b488276a18..c0a9180b53 100644 --- a/indra/newview/llviewerwindow.h +++ b/indra/newview/llviewerwindow.h @@ -126,9 +126,6 @@ private: void updateXYCoords(); BOOL mWantSurfaceInfo; // do we populate mUVCoord, mNormal, mBinormal? - U8 mPickBuffer[PICK_DIAMETER * PICK_DIAMETER * 4]; - F32 mPickDepthBuffer[PICK_DIAMETER * PICK_DIAMETER]; - BOOL mPickParcelWall; }; diff --git a/indra/newview/llviewerwindowlistener.cpp b/indra/newview/llviewerwindowlistener.cpp index de57788271..fae98cf49a 100644 --- a/indra/newview/llviewerwindowlistener.cpp +++ b/indra/newview/llviewerwindowlistener.cpp @@ -77,6 +77,7 @@ void LLViewerWindowListener::saveSnapshot(const LLSD& event) const { LL_ERRS("LLViewerWindowListener") << "LLViewerWindowListener::saveSnapshot(): " << "unrecognized type " << event["type"] << LL_ENDL; + return; } type = found->second; } diff --git a/indra/newview/llvoicechannel.cpp b/indra/newview/llvoicechannel.cpp index 4388f473b4..202abe2833 100644 --- a/indra/newview/llvoicechannel.cpp +++ b/indra/newview/llvoicechannel.cpp @@ -395,13 +395,13 @@ void LLVoiceChannel::setState(EState state) switch(state) { case STATE_RINGING: - gIMMgr->addSystemMessage(mSessionID, "ringing", mNotifyArgs); + LLCallInfoDialog::show("ringing", mNotifyArgs); break; case STATE_CONNECTED: - gIMMgr->addSystemMessage(mSessionID, "connected", mNotifyArgs); + LLCallInfoDialog::show("connected", mNotifyArgs); break; case STATE_HUNG_UP: - gIMMgr->addSystemMessage(mSessionID, "hang_up", mNotifyArgs); + LLCallInfoDialog::show("hang_up", mNotifyArgs); break; default: break; @@ -640,7 +640,7 @@ void LLVoiceChannelGroup::setState(EState state) case STATE_RINGING: if ( !mIsRetrying ) { - gIMMgr->addSystemMessage(mSessionID, "ringing", mNotifyArgs); + LLCallInfoDialog::show("ringing", mNotifyArgs); } doSetState(state); @@ -702,7 +702,11 @@ void LLVoiceChannelProximal::handleStatusChange(EStatusType status) // do not notify user when leaving proximal channel return; case STATUS_VOICE_DISABLED: - gIMMgr->addSystemMessage(LLUUID::null, "unavailable", mNotifyArgs); + //skip showing "Voice not available at your current location" when agent voice is disabled (EXT-4749) + if(LLVoiceClient::getInstance()->voiceEnabled() && LLVoiceClient::getInstance()->isVoiceWorking()) + { + LLCallInfoDialog::show("unavailable", mNotifyArgs); + } return; default: break; @@ -901,7 +905,7 @@ void LLVoiceChannelP2P::setState(EState state) // so provide a special purpose message here if (mReceivedCall && state == STATE_RINGING) { - gIMMgr->addSystemMessage(mSessionID, "answering", mNotifyArgs); + LLCallInfoDialog::show("answering", mNotifyArgs); doSetState(state); return; } diff --git a/indra/newview/llvoicevivox.cpp b/indra/newview/llvoicevivox.cpp index 232171cab6..a1bfda1e2a 100644 --- a/indra/newview/llvoicevivox.cpp +++ b/indra/newview/llvoicevivox.cpp @@ -5493,6 +5493,7 @@ void LLVivoxVoiceClient::filePlaybackSetMode(bool vox, float speed) } LLVivoxVoiceClient::sessionState::sessionState() : + mErrorStatusCode(0), mMediaStreamState(streamStateUnknown), mTextStreamState(streamStateUnknown), mCreateInProgress(false), @@ -6230,8 +6231,14 @@ void LLVivoxProtocolParser::reset() ignoringTags = false; accumulateText = false; energy = 0.f; + hasText = false; + hasAudio = false; + hasVideo = false; + terminated = false; ignoreDepth = 0; isChannel = false; + incoming = false; + enabled = false; isEvent = false; isLocallyMuted = false; isModeratorMuted = false; diff --git a/indra/newview/llvosky.cpp b/indra/newview/llvosky.cpp index 5ff8f0d267..0550ed770b 100644 --- a/indra/newview/llvosky.cpp +++ b/indra/newview/llvosky.cpp @@ -343,7 +343,6 @@ LLVOSky::LLVOSky(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp) cloud_pos_density1 = LLColor3(); cloud_pos_density2 = LLColor3(); - mInitialized = FALSE; mbCanSelect = FALSE; mUpdateTimer.reset(); @@ -385,6 +384,10 @@ LLVOSky::LLVOSky(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp) mBloomTexturep->setAddressMode(LLTexUnit::TAM_CLAMP); mHeavenlyBodyUpdated = FALSE ; + + mDrawRefl = 0; + mHazeConcentration = 0.f; + mInterpVal = 0.f; } @@ -1072,10 +1075,10 @@ BOOL LLVOSky::updateSky() ++next_frame; next_frame = next_frame % cycle_frame_no; - sInterpVal = (!mInitialized) ? 1 : (F32)next_frame / cycle_frame_no; + mInterpVal = (!mInitialized) ? 1 : (F32)next_frame / cycle_frame_no; // sInterpVal = (F32)next_frame / cycle_frame_no; - LLSkyTex::setInterpVal( sInterpVal ); - LLHeavenBody::setInterpVal( sInterpVal ); + LLSkyTex::setInterpVal( mInterpVal ); + LLHeavenBody::setInterpVal( mInterpVal ); calcAtmospherics(); if (mForceUpdate || total_no_tiles == frame) diff --git a/indra/newview/llvosky.h b/indra/newview/llvosky.h index ef74324e58..8366909755 100644 --- a/indra/newview/llvosky.h +++ b/indra/newview/llvosky.h @@ -613,7 +613,7 @@ protected: LLColor3 mLastTotalAmbient; F32 mAmbientScale; LLColor3 mNightColorShift; - F32 sInterpVal; + F32 mInterpVal; LLColor4 mFogColor; LLColor4 mGLFogCol; @@ -636,8 +636,8 @@ protected: public: //by bao //fake vertex buffer updating - //to guaranttee at least updating one VBO buffer every frame - //to walk around the bug caused by ATI card --> DEV-3855 + //to guarantee at least updating one VBO buffer every frame + //to work around the bug caused by ATI card --> DEV-3855 // void createDummyVertexBuffer() ; void updateDummyVertexBuffer() ; diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 295c0c8010..bfe38c14ba 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -180,8 +180,10 @@ LLVOVolume::LLVOVolume(const LLUUID &id, const LLPCode pcode, LLViewerRegion *re mRelativeXform.setIdentity(); mRelativeXformInvTrans.setIdentity(); + mFaceMappingChanged = FALSE; mLOD = MIN_LOD; mTextureAnimp = NULL; + mVolumeChanged = FALSE; mVObjRadius = LLVector3(1,1,0.5f).length(); mNumFaces = 0; mLODChanged = FALSE; diff --git a/indra/newview/llwearable.cpp b/indra/newview/llwearable.cpp index b789bd3650..d093031bea 100644 --- a/indra/newview/llwearable.cpp +++ b/indra/newview/llwearable.cpp @@ -818,16 +818,13 @@ const LLLocalTextureObject* LLWearable::getConstLocalTextureObject(S32 index) co return NULL; } -void LLWearable::setLocalTextureObject(S32 index, LLLocalTextureObject *lto) +void LLWearable::setLocalTextureObject(S32 index, LLLocalTextureObject <o) { if( mTEMap.find(index) != mTEMap.end() ) { mTEMap.erase(index); } - if( lto ) - { - mTEMap[index] = new LLLocalTextureObject(*lto); - } + mTEMap[index] = new LLLocalTextureObject(lto); } diff --git a/indra/newview/llwearable.h b/indra/newview/llwearable.h index 7a579b248e..dae983bcf3 100644 --- a/indra/newview/llwearable.h +++ b/indra/newview/llwearable.h @@ -114,7 +114,7 @@ public: LLLocalTextureObject* getLocalTextureObject(S32 index); const LLLocalTextureObject* getConstLocalTextureObject(S32 index) const; - void setLocalTextureObject(S32 index, LLLocalTextureObject *lto); + void setLocalTextureObject(S32 index, LLLocalTextureObject <o); void addVisualParam(LLVisualParam *param); void setVisualParams(); void setVisualParamWeight(S32 index, F32 value, BOOL upload_bake); diff --git a/indra/newview/llwearablelist.cpp b/indra/newview/llwearablelist.cpp index 5636256856..d6a9837b86 100644 --- a/indra/newview/llwearablelist.cpp +++ b/indra/newview/llwearablelist.cpp @@ -38,7 +38,6 @@ #include "llassetstorage.h" #include "llagent.h" #include "llvoavatar.h" -#include "llviewerinventory.h" #include "llviewerstats.h" #include "llnotificationsutil.h" #include "llinventorymodel.h" 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 af489d39d2..cd5abf86e0 100644 --- a/indra/newview/skins/default/xui/de/floater_about_land.xml +++ b/indra/newview/skins/default/xui/de/floater_about_land.xml @@ -13,7 +13,7 @@ Restzeit </floater.string> <tab_container name="landtab"> - <panel label="Allgemein" name="land_general_panel"> + <panel label="ALLGEMEIN" name="land_general_panel"> <panel.string name="new users only"> Nur neue Benutzer </panel.string> @@ -36,10 +36,10 @@ (In Gruppenbesitz) </panel.string> <panel.string name="profile_text"> - Profil... + Profil </panel.string> <panel.string name="info_text"> - Info... + Info </panel.string> <panel.string name="public_text"> (öffentlich) @@ -52,7 +52,6 @@ </panel.string> <panel.string name="no_selection_text"> Keine Parzelle ausgewählt. -Öffnen Sie „Welt“ > „Land-Info“ oder wählen Sie eine andere Parzelle aus, um Informationen darüber anzuzeigen. </panel.string> <text name="Name:"> Name: @@ -78,33 +77,35 @@ <text name="OwnerText"> Leyla Linden </text> - <button label="Profil..." label_selected="Profil..." name="Profile..."/> <text name="Group:"> Gruppe: </text> - <button label="Einstellen..." label_selected="Einstellen..." name="Set..."/> + <text name="GroupText"> + Leyla Linden + </text> + <button label="Festlegen" label_selected="Einstellen..." name="Set..."/> <check_box label="Übertragung an Gruppe zulassen" name="check deed" tool_tip="Ein Gruppen-Officer kann dieses Land der Gruppe übertragen. Das Land wird dann über die Landzuteilung der Gruppe verwaltet."/> - <button label="Übertragen..." label_selected="Übertragen..." name="Deed..." tool_tip="Sie können Land nur übertragen, wenn Sie in der ausgewählten Gruppe Officer sind."/> + <button label="Übertragung" label_selected="Übertragen..." name="Deed..." tool_tip="Sie können Land nur übertragen, wenn Sie in der ausgewählten Gruppe Officer sind."/> <check_box label="Eigentümer leistet Beitrag durch Übertragung" name="check contrib" tool_tip="Wenn das Land an die Gruppe übertragen wird, trägt der frühere Eigentümer ausreichend Landnutzungsrechte bei, um es zu halten."/> <text name="For Sale:"> Zum Verkauf: </text> <text name="Not for sale."> - Nicht zu verkaufen. + Nicht zu verkaufen </text> <text name="For Sale: Price L$[PRICE]."> - Preis: [PRICE] L$ ([PRICE_PER_SQM]L$/m²). + Preis: [PRICE] L$ ([PRICE_PER_SQM]L$/m²) </text> <text name="SalePending"/> - <button bottom="-222" label="Land verkaufen..." label_selected="Land verkaufen..." name="Sell Land..."/> + <button bottom="-222" label="Land verkaufen" label_selected="Land verkaufen..." name="Sell Land..."/> <text name="For sale to"> Zum Verkauf an: [BUYER] </text> <text name="Sell with landowners objects in parcel." width="210"> - Objekte sind im Verkauf eingeschlossen. + Objekte sind im Verkauf eingeschlossen </text> <text name="Selling with no objects in parcel." width="237"> - Objekte sind im Verkauf nicht eingeschlossen. + Objekte sind im Verkauf nicht eingeschlossen </text> <button bottom="-222" label="Landverkauf abbrechen" label_selected="Landverkauf abbrechen" name="Cancel Land Sale"/> <text name="Claimed:"> @@ -125,14 +126,15 @@ <text name="DwellText"> 0 </text> - <button label="Land kaufen..." label_selected="Land kaufen..." name="Buy Land..."/> - <button label="Für Gruppe kaufen..." label_selected="Für Gruppe kaufen..." name="Buy For Group..."/> - <button label="Pass kaufen..." label_selected="Pass kaufen..." name="Buy Pass..." tool_tip="Ein Pass gibt Ihnen zeitbegrenzten Zugang zu diesem Land."/> - <button label="Land aufgeben..." label_selected="Land aufgeben..." name="Abandon Land..."/> - <button label="Land in Besitz nehmen..." label_selected="Land in Besitz nehmen..." name="Reclaim Land..."/> - <button label="Linden-Verkauf..." label_selected="Linden-Verkauf..." name="Linden Sale..." tool_tip="Land muss Eigentum und auf Inhalt gesetzt sein und nicht zur Auktion stehen."/> + <button label="Land kaufen" label_selected="Land kaufen..." name="Buy Land..."/> + <button label="Skriptinfo" name="Scripts..."/> + <button label="Für Gruppe kaufen" label_selected="Für Gruppe kaufen..." name="Buy For Group..."/> + <button label="Pass kaufen" label_selected="Pass kaufen..." name="Buy Pass..." tool_tip="Ein Pass gibt Ihnen zeitbegrenzten Zugang zu diesem Land."/> + <button label="Land aufgeben" label_selected="Land aufgeben..." name="Abandon Land..."/> + <button label="Land in Besitz nehmen" label_selected="Land in Besitz nehmen..." name="Reclaim Land..."/> + <button label="Linden-Verkauf" label_selected="Linden-Verkauf..." name="Linden Sale..." tool_tip="Land muss Eigentum und auf Inhalt gesetzt sein und nicht zur Auktion stehen."/> </panel> - <panel label="Vertrag" name="land_covenant_panel"> + <panel label="VERTRAG" name="land_covenant_panel"> <panel.string name="can_resell"> Gekauftes Land in dieser Region kann wiederverkauft werden. </panel.string> @@ -150,9 +152,6 @@ und geteilt werden. <text name="estate_section_lbl"> Grundstück: </text> - <text name="estate_name_lbl"> - Name: - </text> <text name="estate_name_text"> Mainland </text> @@ -171,11 +170,8 @@ und geteilt werden. <text name="region_section_lbl"> Region: </text> - <text name="region_name_lbl"> - Name: - </text> <text name="region_name_text"> - leyla + EricaVille </text> <text name="region_landtype_lbl"> Typ: @@ -203,7 +199,7 @@ und geteilt werden. werden. </text> </panel> - <panel label="Objekte" name="land_objects_panel"> + <panel label="OBJEKTE" name="land_objects_panel"> <panel.string name="objects_available_text"> [COUNT] von [MAX] ([AVAILABLE] verfügbar) </panel.string> @@ -214,19 +210,19 @@ werden. Objektbonusfaktor in Region: [BONUS] </text> <text name="Simulator primitive usage:"> - Primitive in Simulator: + Prim-Verwendung: </text> <text name="objects_available"> [COUNT] von [MAX] ([AVAILABLE] verfügbar) </text> <text name="Primitives parcel supports:" width="200"> - Von Parzelle unterstützte Primitiva: + Von Parzelle unterstützte Prims: </text> <text left="204" name="object_contrib_text" width="152"> [COUNT] </text> <text name="Primitives on parcel:"> - Primitiva auf Parzelle: + Prims auf Parzelle: </text> <text left="204" name="total_objects_text" width="48"> [COUNT] @@ -238,7 +234,7 @@ werden. [COUNT] </text> <button label="Anzeigen" label_selected="Anzeigen" name="ShowOwner" right="-135" width="60"/> - <button label="Zurückgeben..." label_selected="Zurückgeben..." name="ReturnOwner..." right="-10" tool_tip="Objekte an ihre Eigentümer zurückgeben." width="119"/> + <button label="Zurückgeben" label_selected="Zurückgeben..." name="ReturnOwner..." right="-10" tool_tip="Objekte an ihre Eigentümer zurückgeben." width="119"/> <text left="14" name="Set to group:"> Der Gruppe zugeordnet: </text> @@ -246,7 +242,7 @@ werden. [COUNT] </text> <button label="Anzeigen" label_selected="Anzeigen" name="ShowGroup" right="-135" width="60"/> - <button label="Zurückgeben..." label_selected="Zurückgeben..." name="ReturnGroup..." right="-10" tool_tip="Objekte an ihre Eigentümer zurückgeben." width="119"/> + <button label="Zurückgeben" label_selected="Zurückgeben..." name="ReturnGroup..." right="-10" tool_tip="Objekte an ihre Eigentümer zurückgeben." width="119"/> <text left="14" name="Owned by others:" width="128"> Im Eigentum anderer: </text> @@ -254,7 +250,7 @@ werden. [COUNT] </text> <button label="Anzeigen" label_selected="Anzeigen" name="ShowOther" right="-135" width="60"/> - <button label="Zurückgeben..." label_selected="Zurückgeben..." name="ReturnOther..." right="-10" tool_tip="Objekte an ihre Eigentümer zurückgeben." width="119"/> + <button label="Zurückgeben" label_selected="Zurückgeben..." name="ReturnOther..." right="-10" tool_tip="Objekte an ihre Eigentümer zurückgeben." width="119"/> <text left="14" name="Selected / sat upon:" width="140"> Ausgewählt/gesessen auf: </text> @@ -268,8 +264,8 @@ werden. <text name="Object Owners:"> Objekteigentümer: </text> - <button label="Liste aktualisieren" label_selected="Liste aktualisieren" name="Refresh List"/> - <button label="Objekte zurückgeben..." label_selected="Objekte zurückgeben..." name="Return objects..."/> + <button label="Liste aktualisieren" label_selected="Liste aktualisieren" name="Refresh List" tool_tip="Objektliste aktualisieren"/> + <button label="Objekte zurückgeben" label_selected="Objekte zurückgeben..." name="Return objects..."/> <name_list name="owner list"> <name_list.columns label="Typ" name="type"/> <name_list.columns label="Name" name="name"/> @@ -277,7 +273,7 @@ werden. <name_list.columns label="Aktuellster" name="mostrecent"/> </name_list> </panel> - <panel label="Optionen" name="land_options_panel"> + <panel label="OPTIONEN" name="land_options_panel"> <panel.string name="search_enabled_tooltip"> Diese Parzelle in Suchergebnissen anzeigen. </panel.string> @@ -289,13 +285,13 @@ Nur große Parzellen können in der Suche aufgeführt werden. Diese Option ist nicht aktiviert, da Sie die Parzellenoptionen nicht verändern können. </panel.string> <panel.string name="mature_check_mature"> - Mature-Inhalt + Moderater Inhalt </panel.string> <panel.string name="mature_check_adult"> Adult-Inhalt </panel.string> <panel.string name="mature_check_mature_tooltip"> - Die Informationen oder Inhalte Ihrer Parzelle sind „Mature“. + Die Informationen oder Inhalte Ihrer Parzelle sind „Moderat“. </panel.string> <panel.string name="mature_check_adult_tooltip"> Die Informationen oder Inhalte Ihrer Parzelle sind „Adult“. @@ -315,26 +311,26 @@ Nur große Parzellen können in der Suche aufgeführt werden. <check_box label="Terrain bearbeiten" name="edit land check" tool_tip="Falls aktiviert, kann jeder Ihr Land terraformen. Am besten ist es, wenn Sie diese Option deaktiviert lassen. Sie können Ihr eigenes Land jederzeit bearbeiten."/> <check_box label="Fliegen" name="check fly" tool_tip="Falls aktiviert, können Einwohner auf Ihrem Land fliegen. Falls nicht aktiviert, können Einwohner lediglich auf Ihr Land fliegen und dort landen (dann jedoch nicht wieder weiterfliegen) oder über Ihr Land hinweg fliegen."/> <text name="allow_label2"> - Objekte erstellen: + Bauen: </text> - <check_box label="Alle Einwohner" name="edit objects check"/> + <check_box label="Jeder" name="edit objects check"/> <check_box label="Gruppe" name="edit group objects check"/> <text name="allow_label3"> Objekteintritt: </text> - <check_box label="Alle Einwohner" name="all object entry check"/> + <check_box label="Jeder" name="all object entry check"/> <check_box label="Gruppe" name="group object entry check"/> <text name="allow_label4"> Skripts ausführen: </text> - <check_box label="Alle Einwohner" name="check other scripts"/> + <check_box label="Jeder" name="check other scripts"/> <check_box label="Gruppe" name="check group scripts"/> <text name="land_options_label"> Landoptionen: </text> <check_box label="Sicher (kein Schaden)" name="check safe" tool_tip="Falls aktiviert, wird Land auf Option „Sicher“ eingestellt, Kampfschäden sind deaktiviert. Falls nicht aktiviert, sind Kampfschäden aktiviert."/> <check_box label="Kein Stoßen" name="PushRestrictCheck" tool_tip="Verhindert Skripte am Stoßen. Durch Aktivieren dieser Option verhindern Sie störendes Verhalten auf Ihrem Land."/> - <check_box label="Ort in Suche anzeigen (30 L$/Woche) unter" name="ShowDirectoryCheck" tool_tip="Diese Parzelle in Suchergebnissen anzeigen."/> + <check_box label="Ort in Suche anzeigen (30 L$/Woche)" name="ShowDirectoryCheck" tool_tip="Diese Parzelle in Suchergebnissen anzeigen."/> <combo_box name="land category with adult"> <combo_box.item label="Alle Kategorien" name="item0"/> <combo_box.item label="Lindenort" name="item1"/> @@ -364,7 +360,7 @@ Nur große Parzellen können in der Suche aufgeführt werden. <combo_box.item label="Shopping" name="item11"/> <combo_box.item label="Sonstige" name="item12"/> </combo_box> - <check_box label="Mature-Inhalt" name="MatureCheck" tool_tip=""/> + <check_box label="Moderater Inhalt" name="MatureCheck" tool_tip=""/> <text name="Snapshot:"> Foto: </text> @@ -383,33 +379,30 @@ Nur große Parzellen können in der Suche aufgeführt werden. <combo_box.item label="Überall" name="Anywhere"/> </combo_box> </panel> - <panel label="Medien" name="land_media_panel"> + <panel label="MEDIEN" name="land_media_panel"> <text name="with media:"> Typ: </text> <combo_box name="media type" tool_tip="Geben Sie einen URL für den Film, die Webseite oder ein anderes Medium ein"/> <text name="at URL:"> - Start URL: + Homepage: </text> - <button label="Einstellen..." label_selected="Einstellen..." name="set_media_url"/> + <button label="Festlegen" label_selected="Einstellen..." name="set_media_url"/> <text name="CurrentURL:"> - Aktuelle URL: + Aktuelle Seite: </text> - <button label="Zurücksetzen..." label_selected="Zurücksetzen..." name="reset_media_url"/> + <button label="Zurücksetzen..." label_selected="Zurücksetzen..." name="reset_media_url" tool_tip="URL aktualisieren"/> <check_box label="URL ausblenden" name="hide_media_url" tool_tip="Aktivieren Sie diese Option, wenn Sie nicht möchten, dass unautorisierte Personen die Medien-URL sehen können. Diese Option ist für HTML-Medien nicht verfügbar."/> <text name="Description:"> Inhalt: </text> <line_editor name="url_description" tool_tip="Text, der neben der Abspielen/Laden-Schaltfläche angezeigt wird"/> <text name="Media texture:"> - Textur -ersetzen: + Textur ersetzen: </text> <texture_picker label="" name="media texture" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/> <text name="replace_texture_help"> - Objekte, die diese Textur verwenden, werden den Film oder die Webseite anzeigen, nachdem Sie auf den Pfeil (Wiedergabe) klicken. - -Wählen Sie das kleine Bild aus, um eine andere Textur auszuwählen. + Objekte, die diese Textur verwenden, werden den Film oder die Webseite anzeigen, nachdem Sie auf den Pfeil (Wiedergabe) klicken. Wählen Sie das kleine Bild aus, um eine andere Textur auszuwählen. </text> <check_box label="Automatisch skalieren" name="media_auto_scale" tool_tip="Aktivieren Sie diese Option, um den Inhalt für diese Parzelle automatisch zu skalieren. Dies ist eventuell langsamer und die Qualität ist schlechter, aber Sie müssen keine weitere Texturskalierung oder -anpassung vornehmen."/> <text name="media_size" tool_tip="Darstellungsgröße von Webmedien, für Standard bei 0 belassen."> @@ -425,7 +418,7 @@ Wählen Sie das kleine Bild aus, um eine andere Textur auszuwählen. </text> <check_box label="Schleife" name="media_loop" tool_tip="Spielt das Medium in einer Schleife ab. Der Abspielvorgang wird immer wieder von vorne fortgesetzt."/> </panel> - <panel label="Audio" name="land_audio_panel"> + <panel label="SOUND" name="land_audio_panel"> <text name="MusicURL:"> Musik-URL: </text> @@ -440,19 +433,22 @@ Wählen Sie das kleine Bild aus, um eine andere Textur auszuwählen. <check_box label="Voice aktivieren (vom Grundstück eingerichtet)" name="parcel_enable_voice_channel_is_estate_disabled"/> <check_box label="Voice auf diese Parzelle beschränken" name="parcel_enable_voice_channel_parcel"/> </panel> - <panel label="Zugang" name="land_access_panel"> + <panel label="ZUGANG" name="land_access_panel"> + <panel.string name="access_estate_defined"> + (Durch Grundstück festgelegt) + </panel.string> <panel.string name="estate_override"> Eine oder mehrere dieser Optionen gelten auf Grundstücksebene </panel.string> <text name="Limit access to this parcel to:"> Zugang zu dieser Parzelle </text> - <check_box label="Freien Zugang erlauben" name="public_access"/> + <check_box label="Öffentlichen Zugang erlauben [MATURITY]" name="public_access"/> <text name="Only Allow"> - Zugang verweigern für: + Zugang auf Einwohner beschränken, die überprüft wurden von: </text> - <check_box label="Einwohner, die keine Zahlungsinformationen bei Linden Lab hinterlegt haben" name="limit_payment" tool_tip="Nicht identifizierte Einwohner verbannen."/> - <check_box label="Einwohner, die keine altersgeprüften Erwachsenen sind" name="limit_age_verified" tool_tip="Einwohner ohne Altersüberprüfung verbannen. Weitere Informationen finden Sie auf [SUPPORT_SITE]."/> + <check_box label="Zahlungsinformation gespeichert [ESTATE_PAYMENT_LIMIT]" name="limit_payment" tool_tip="Nicht identifizierte Einwohner verbannen."/> + <check_box label="Altersüberprüfung [ESTATE_AGE_LIMIT]" name="limit_age_verified" tool_tip="Einwohner ohne Altersüberprüfung verbannen. Weitere Informationen finden Sie auf [SUPPORT_SITE]."/> <check_box label="Gruppenzugang erlauben: [GROUP]" name="GroupCheck" tool_tip="Gruppe im Register „Allgemein“ festlegen."/> <check_box label="Pässe verkaufen an:" name="PassCheck" tool_tip="Ermöglicht befristeten Zugang zu dieser Parzelle"/> <combo_box name="pass_combo"> @@ -461,18 +457,22 @@ Wählen Sie das kleine Bild aus, um eine andere Textur auszuwählen. </combo_box> <spinner label="Preis in L$:" name="PriceSpin"/> <spinner label="Online-Zeit:" name="HoursSpin"/> - <text label="Immer erlauben" name="AllowedText"> - Zulässige Einwohner - </text> - <name_list name="AccessList" tool_tip="([LISTED] angezeigt, max. [MAX])"/> - <button label="Hinzufügen..." label_selected="Hinzufügen..." name="add_allowed"/> - <button label="Entfernen" label_selected="Entfernen" name="remove_allowed"/> - <text label="Verbannen" name="BanCheck"> - Verbannte Einwohner - </text> - <name_list name="BannedList" tool_tip="([LISTED] angezeigt, max. [MAX])"/> - <button label="Hinzufügen..." label_selected="Hinzufügen..." name="add_banned"/> - <button label="Entfernen" label_selected="Entfernen" name="remove_banned"/> + <panel name="Allowed_layout_panel"> + <text label="Immer erlauben" name="AllowedText"> + Zulässige Einwohner + </text> + <name_list name="AccessList" tool_tip="([LISTED] aufgeführt, [MAX] max)"/> + <button label="Hinzufügen" name="add_allowed"/> + <button label="Entfernen" label_selected="Entfernen" name="remove_allowed"/> + </panel> + <panel name="Banned_layout_panel"> + <text label="Verbannen" name="BanCheck"> + Verbannte Einwohner + </text> + <name_list name="BannedList" tool_tip="([LISTED] aufgeführt, [MAX] max)"/> + <button label="Hinzufügen" name="add_banned"/> + <button label="Entfernen" label_selected="Entfernen" name="remove_banned"/> + </panel> </panel> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_animation_preview.xml b/indra/newview/skins/default/xui/de/floater_animation_preview.xml index 4b4067f186..ce971d158d 100644 --- a/indra/newview/skins/default/xui/de/floater_animation_preview.xml +++ b/indra/newview/skins/default/xui/de/floater_animation_preview.xml @@ -171,7 +171,8 @@ Maximal erlaubt sind [MAX_LENGTH] Sekunden. </combo_box> <spinner label="Eingang glätten (s)" label_width="105" name="ease_in_time" tool_tip="Einblendungsgeschwindigkeit von Animationen (in Sekunden)" width="175"/> <spinner bottom_delta="-20" label="Ausgang glätten (s)" label_width="105" left="10" name="ease_out_time" tool_tip="Ausblendegeschwindigkeit von Animationen (in Sekunden)" width="175"/> - <button bottom_delta="-32" label="" name="play_btn" tool_tip="Animation stoppen/wiedergeben"/> + <button bottom_delta="-32" label="" name="play_btn" tool_tip="Ihre Animation abspielen"/> + <button name="pause_btn" tool_tip="Ihre Animation pausieren"/> <button label="" name="stop_btn" tool_tip="Animation anhalten"/> <slider label="" name="playback_slider"/> <text name="bad_animation_text"> @@ -179,6 +180,6 @@ Maximal erlaubt sind [MAX_LENGTH] Sekunden. Wir empfehlen exportierte BVH-Dateien aus Poser 4. </text> - <button label="Abbrechen" name="cancel_btn"/> <button label="Hochladen ([AMOUNT] L$)" name="ok_btn"/> + <button label="Abbrechen" name="cancel_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_avatar_picker.xml b/indra/newview/skins/default/xui/de/floater_avatar_picker.xml index ed8de62b69..bc78ccd7f8 100644 --- a/indra/newview/skins/default/xui/de/floater_avatar_picker.xml +++ b/indra/newview/skins/default/xui/de/floater_avatar_picker.xml @@ -34,7 +34,7 @@ </panel> <panel label="In meiner Nähe" name="NearMePanel"> <text name="InstructSelectResident"> - Wählen Sie eine Person aus, die sich in der Nähe befindet: + Wählen Sie eine Person aus: </text> <slider bottom_delta="-36" label="Bereich" name="near_me_range"/> <text name="meters"> diff --git a/indra/newview/skins/default/xui/de/floater_avatar_textures.xml b/indra/newview/skins/default/xui/de/floater_avatar_textures.xml index 6f5fe23d4c..3be5194a8f 100644 --- a/indra/newview/skins/default/xui/de/floater_avatar_textures.xml +++ b/indra/newview/skins/default/xui/de/floater_avatar_textures.xml @@ -10,33 +10,37 @@ Zusammengesetzte Texturen </text> <button label="Läd IDs in Konsole ab" label_selected="Abladen" name="Dump"/> - <texture_picker label="Haare" name="hair-baked"/> - <texture_picker label="Haare" name="hair_grain"/> - <texture_picker label="Alpha: Haare" name="hair_alpha"/> - <texture_picker label="Kopf" name="head-baked"/> - <texture_picker label="Make-Uup" name="head_bodypaint"/> - <texture_picker label="Kopf: Alpha" name="head_alpha"/> - <texture_picker label="Kopftattoo" name="head_tattoo"/> - <texture_picker label="Augen" name="eyes-baked"/> - <texture_picker label="Auge" name="eyes_iris"/> - <texture_picker label="Alpha: Augen" name="eyes_alpha"/> - <texture_picker label="Oberkörper" name="upper-baked"/> - <texture_picker label="Oberkörper: Körperfarbe" name="upper_bodypaint"/> - <texture_picker label="Unterhemd" name="upper_undershirt"/> - <texture_picker label="Handschuhe" name="upper_gloves"/> - <texture_picker label="Hemd" name="upper_shirt"/> - <texture_picker label="Oberjacke" name="upper_jacket"/> - <texture_picker label="Alpha: Oben" name="upper_alpha"/> - <texture_picker label="Obere Tattoos" name="upper_tattoo"/> - <texture_picker label="Unterkörper" name="lower-baked"/> - <texture_picker label="Unterkörper: Körperfarbe" name="lower_bodypaint"/> - <texture_picker label="Unterhose" name="lower_underpants"/> - <texture_picker label="Socken" name="lower_socks"/> - <texture_picker label="Schuhe" name="lower_shoes"/> - <texture_picker label="Hose" name="lower_pants"/> - <texture_picker label="Jacke" name="lower_jacket"/> - <texture_picker label="Alpha: Unten" name="lower_alpha"/> - <texture_picker label="Untere Tattoos" name="lower_tattoo"/> - <texture_picker label="Rock" name="skirt-baked"/> - <texture_picker label="Rock" name="skirt"/> + <scroll_container name="profile_scroll"> + <panel name="scroll_content_panel"> + <texture_picker label="Haare" name="hair-baked"/> + <texture_picker label="Haare" name="hair_grain"/> + <texture_picker label="Alpha: Haare" name="hair_alpha"/> + <texture_picker label="Kopf" name="head-baked"/> + <texture_picker label="Make-Uup" name="head_bodypaint"/> + <texture_picker label="Kopf: Alpha" name="head_alpha"/> + <texture_picker label="Kopftattoo" name="head_tattoo"/> + <texture_picker label="Augen" name="eyes-baked"/> + <texture_picker label="Auge" name="eyes_iris"/> + <texture_picker label="Alpha: Augen" name="eyes_alpha"/> + <texture_picker label="Oberkörper" name="upper-baked"/> + <texture_picker label="Oberkörper: Körperfarbe" name="upper_bodypaint"/> + <texture_picker label="Unterhemd" name="upper_undershirt"/> + <texture_picker label="Handschuhe" name="upper_gloves"/> + <texture_picker label="Hemd" name="upper_shirt"/> + <texture_picker label="Oberjacke" name="upper_jacket"/> + <texture_picker label="Alpha: Oben" name="upper_alpha"/> + <texture_picker label="Obere Tattoos" name="upper_tattoo"/> + <texture_picker label="Unterkörper" name="lower-baked"/> + <texture_picker label="Unterkörper: Körperfarbe" name="lower_bodypaint"/> + <texture_picker label="Unterhose" name="lower_underpants"/> + <texture_picker label="Socken" name="lower_socks"/> + <texture_picker label="Schuhe" name="lower_shoes"/> + <texture_picker label="Hose" name="lower_pants"/> + <texture_picker label="Jacke" name="lower_jacket"/> + <texture_picker label="Alpha: Unten" name="lower_alpha"/> + <texture_picker label="Untere Tattoos" name="lower_tattoo"/> + <texture_picker label="Rock" name="skirt-baked"/> + <texture_picker label="Rock" name="skirt"/> + </panel> + </scroll_container> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_buy_currency.xml b/indra/newview/skins/default/xui/de/floater_buy_currency.xml index 287b16273a..aa6201ec26 100644 --- a/indra/newview/skins/default/xui/de/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/de/floater_buy_currency.xml @@ -46,7 +46,7 @@ [AMT] L$ </text> <text name="currency_links"> - [http://www.secondlife.com/my/account/payment_method_management.php?lang=de-DE payment method] | [http://www.secondlife.com/my/account/currency.php?lang=de-DE currency] | [http://www.secondlife.com/my/account/exchange_rates.php?lang=de-DE exchange rate] + [http://www.secondlife.com/my/account/payment_method_management.php?lang=de-DE Zahlungsart] | [http://www.secondlife.com/my/account/currency.php?lang=de-DE Währung] | [http://www.secondlife.com/my/account/exchange_rates.php?lang=de-DE Umtauschrate] </text> <text name="exchange_rate_note"> Geben Sie den Betrag erneut ein, um die aktuellste Umtauschrate anzuzeigen. diff --git a/indra/newview/skins/default/xui/de/floater_color_picker.xml b/indra/newview/skins/default/xui/de/floater_color_picker.xml index 552bd2e2bf..aed4bacb30 100644 --- a/indra/newview/skins/default/xui/de/floater_color_picker.xml +++ b/indra/newview/skins/default/xui/de/floater_color_picker.xml @@ -26,6 +26,6 @@ Aktuelle Farbe: </text> <text name="(Drag below to save.)"> - (Zum Speichern nach unten ziehen.) + (Nach unten ziehen) </text> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_customize.xml b/indra/newview/skins/default/xui/de/floater_customize.xml index 34aa17bbe0..a2bf45852a 100644 --- a/indra/newview/skins/default/xui/de/floater_customize.xml +++ b/indra/newview/skins/default/xui/de/floater_customize.xml @@ -1,7 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater customize" title="AUSSEHEN"> <tab_container name="customize tab container"> - <placeholder label="Körperteile" name="body_parts_placeholder"/> + <text label="Körperteile" name="body_parts_placeholder"> + Körperteile + </text> <panel label="Form" name="Shape"> <button font="SansSerifSmall" label="Zurücksetzen" label_selected="Zurücksetzen" name="Revert"/> <button label="Körper" label_selected="Körper" name="Body"/> @@ -14,8 +16,8 @@ <button label="Oberkörper" label_selected="Oberkörper" name="Torso"/> <button label="Beine" label_selected="Beine" name="Legs"/> <radio_group name="sex radio"> - <radio_item label="Weiblich" name="radio"/> - <radio_item label="Männlich" name="radio2"/> + <radio_item label="Weiblich" name="radio" value="0"/> + <radio_item label="Männlich" name="radio2" value="1"/> </radio_group> <text name="title"> [DESC] @@ -33,9 +35,7 @@ In [PATH] </text> <text name="not worn instructions"> - Ziehen Sie eine Körperform aus dem Inventar auf Ihren Avatar, -um sie zu tragen. Sie können auch eine neue Körperform erstellen -und diese anziehen. + Ziehen Sie eine neue Form aus dem Inventar auf Ihren Avatar, um diese anzulegen. Sie können aber auch eine neue erstellen und diese anlegen. </text> <text name="no modify instructions"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. @@ -68,9 +68,7 @@ und diese anziehen. In [PATH] </text> <text name="not worn instructions"> - Ziehen Sie eine Haut aus dem Inventar auf Ihren Avatar, -um sie zu tragen. Sie können auch eine neue Haut erstellen -und diese anziehen. + Ziehen Sie eine neue Skin (Haut) aus dem Inventar auf Ihren Avatar, um diese anzulegen. Sie können aber auch eine neue erstellen und diese anlegen. </text> <text name="no modify instructions"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. @@ -107,9 +105,7 @@ und diese anziehen. In [PATH] </text> <text name="not worn instructions"> - Ziehen Sie Haare aus dem Inventar auf Ihren Avatar, -um sie zu tragen. Sie können auch neue Haare erstellen -und diese anziehen. + Ziehen Sie Haar aus dem Inventar auf Ihren Avatar, um dieses anzulegen. Sie können aber auch eine neue erstellen und diese anlegen. </text> <text name="no modify instructions"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. @@ -140,9 +136,7 @@ und diese anziehen. In [PATH] </text> <text name="not worn instructions"> - Ziehen Sie Augen aus dem Inventar auf Ihren Avatar, -um sie zu tragen. Sie können auch neue Augen erstellen -und diese anziehen. + Ziehen Sie neue Augen aus dem Inventar auf Ihren Avatar, um diese anzulegen. Sie können aber auch eine neue erstellen und diese anlegen. </text> <text name="no modify instructions"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. @@ -156,7 +150,9 @@ und diese anziehen. <button font="SansSerifSmall" label="Speichern unter..." label_selected="Speichern unter..." left="194" name="Save As" width="105"/> <button font="SansSerifSmall" label="Zurücksetzen" label_selected="Zurücksetzen" name="Revert"/> </panel> - <placeholder label="Kleidung" name="clothes_placeholder"/> + <text label="Kleidung" name="clothes_placeholder"> + Kleidung + </text> <panel label="Hemd" name="Shirt"> <texture_picker label="Stoff" name="Fabric" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/> <color_swatch label="Farbe/Ton" name="Color/Tint" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/> @@ -181,9 +177,7 @@ und diese anziehen. In [PATH] </text> <text name="not worn instructions"> - Ziehen Sie ein Hemd aus dem Inventar auf Ihren Avatar, -um es zu tragen. Sie können auch ein neues Hemd erstellen -und dieses anziehen. + Ziehen Sie ein neues Hemd aus dem Inventar auf Ihren Avatar, um dieses anzuziehen. Sie können aber auch eine neue erstellen und diese anlegen. </text> <text name="no modify instructions"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. @@ -216,9 +210,7 @@ und dieses anziehen. In [PATH] </text> <text name="not worn instructions"> - Ziehen Sie eine Hose aus dem Inventar auf Ihren Avatar, -um sie zu tragen. Sie können auch eine neue Hose erstellen -und diese anziehen. + Ziehen Sie eine neue Hose aus dem Inventar auf Ihren Avatar, um diese anzuziehen. Sie können aber auch eine neue erstellen und diese anlegen. </text> <text name="no modify instructions"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. @@ -244,9 +236,7 @@ und diese anziehen. In [PATH] </text> <text name="not worn instructions"> - Ziehen Sie Schuhe aus dem Inventar auf Ihren Avatar, -um sie zu tragen. Sie können auch neue Schuhe erstellen -und diese anziehen. + Ziehen Sie neue Schuhe aus dem Inventar auf Ihren Avatar, um diese anzuziehen. Sie können aber auch eine neue erstellen und diese anlegen. </text> <text name="no modify instructions"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. @@ -279,9 +269,7 @@ und diese anziehen. In [PATH] </text> <text name="not worn instructions"> - Ziehen Sie Socken aus dem Inventar auf Ihren Avatar, -um sie zu tragen. Sie können auch neue Socken erstellen -und diese anziehen. + Ziehen Sie neue Strümpfe aus dem Inventar auf Ihren Avatar, um diese anzuziehen. Sie können aber auch eine neue erstellen und diese anlegen. </text> <text name="no modify instructions"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. @@ -314,9 +302,7 @@ und diese anziehen. In [PATH] </text> <text name="not worn instructions"> - Ziehen Sie eine Jacke aus dem Inventar auf Ihren Avatar, -um sie zu tragen. Sie können auch eine neue Jacke erstellen -und diese anziehen. + Ziehen Sie eine neue Jacke aus dem Inventar auf Ihren Avatar, um diese anzuziehen. Sie können aber auch eine neue erstellen und diese anlegen. </text> <text name="no modify instructions"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. @@ -350,9 +336,7 @@ und diese anziehen. In [PATH] </text> <text name="not worn instructions"> - Ziehen Sie Handschuhe aus dem Inventar auf Ihren Avatar, -um sie zu tragen. Sie können auch neue Handschuhe erstellen -und diese anziehen. + Ziehen Sie neue Handschuhe aus dem Inventar auf Ihren Avatar, um diese anzuziehen. Sie können aber auch eine neue erstellen und diese anlegen. </text> <text name="no modify instructions"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. @@ -385,9 +369,7 @@ und diese anziehen. In [PATH] </text> <text name="not worn instructions"> - Ziehen Sie ein Unterhemd aus dem Inventar auf Ihren Avatar, -um es zu tragen. Sie können auch ein neues Unterhemd erstellen -und dieses anziehen. + Ziehen Sie ein neues Unterhemd aus dem Inventar auf Ihren Avatar, um dieses anzuziehen. Sie können aber auch eine neue erstellen und diese anlegen. </text> <text name="no modify instructions"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. @@ -420,9 +402,7 @@ und dieses anziehen. In [PATH] </text> <text name="not worn instructions"> - Ziehen Sie eine Unterhose aus dem Inventar auf Ihren Avatar, -um sie zu tragen. Sie können auch eine neue Unterhose erstellen -und diese anziehen. + Ziehen Sie eine neue Unterhose aus dem Inventar auf Ihren Avatar, um diese anzuziehen. Sie können aber auch eine neue erstellen und diese anlegen. </text> <text name="no modify instructions"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. @@ -455,9 +435,7 @@ und diese anziehen. In [PATH] </text> <text name="not worn instructions"> - Ziehen Sie einen Rock aus dem Inventar auf Ihren Avatar, -um ihn zu tragen. Sie können auch einen neuen Rock erstellen -und diesen anziehen. + Ziehen Sie einen neuen Rock aus dem Inventar auf Ihren Avatar, um diesen anzuziehen. Sie können aber auch eine neue erstellen und diese anlegen. </text> <text name="no modify instructions"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. @@ -490,8 +468,7 @@ und diesen anziehen. Befindet sich in [PATH] </text> <text name="not worn instructions"> - Sie können eine neue Alpha-Maske anlegen, indem Sie eine von Ihrem Inventar auf Ihren Avatar ziehen. -Sie können aber auch eine neue erstellen und diese anlegen. + Sie können eine neue Alpha-Maske anlegen, indem Sie eine von Ihrem Inventar auf Ihren Avatar ziehen. Sie können aber auch eine neue erstellen und diese anlegen. </text> <text name="no modify instructions"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. @@ -527,8 +504,7 @@ Sie können aber auch eine neue erstellen und diese anlegen. Befindet sich in [PATH] </text> <text name="not worn instructions"> - Ziehen Sie eine neue Tätowierung aus dem Inventar auf Ihren Avatar, um diese anzulegen. -Sie können aber auch eine neue erstellen und diese anlegen. + Ziehen Sie eine neue Tätowierung aus dem Inventar auf Ihren Avatar, um diese anzulegen. Sie können aber auch eine neue erstellen und diese anlegen. </text> <text name="no modify instructions"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. @@ -546,6 +522,7 @@ Sie können aber auch eine neue erstellen und diese anlegen. <button label="Zurücksetzen" label_selected="Zurücksetzen" name="Revert"/> </panel> </tab_container> + <button label="Skriptinfo" label_selected="Skriptinfo" name="script_info"/> <button label="Outfit erstellen" label_selected="Outfit erstellen" name="make_outfit_btn"/> <button label="Abbrechen" label_selected="Abbrechen" name="Cancel"/> <button label="OK" label_selected="OK" name="Ok"/> diff --git a/indra/newview/skins/default/xui/de/floater_god_tools.xml b/indra/newview/skins/default/xui/de/floater_god_tools.xml index e790420efb..716165bb6b 100644 --- a/indra/newview/skins/default/xui/de/floater_god_tools.xml +++ b/indra/newview/skins/default/xui/de/floater_god_tools.xml @@ -11,8 +11,7 @@ </text> <check_box label="Startbereich Einleitung" name="check prelude" tool_tip="Diese Region zu einem Startbereich machen."/> <check_box label="Sonne fest" name="check fixed sun" tool_tip="Fixiert den Sonnenstand (wie in „Region/Grundstück“ > „Terrain“."/> - <check_box height="32" label="Zuhause auf Teleport -zurücksetzen" name="check reset home" tool_tip="Wenn Einwohner wegteleportieren, ihr Zuhause auf Zielposition setzen."/> + <check_box height="32" label="Zuhause auf Teleport zurücksetzen" name="check reset home" tool_tip="Wenn Einwohner weg teleportieren, ihr Zuhause auf Zielposition setzen."/> <check_box bottom_delta="-32" label="Sichtbar" name="check visible" tool_tip="Diese Region für Nicht-Götter sichtbar machen."/> <check_box label="Schaden" name="check damage" tool_tip="Schaden in dieser Region aktivieren."/> <check_box label="Trafficüberwachung blockieren" name="block dwell" tool_tip="In dieser Region die Traffic-Berechnung abschalten."/> @@ -59,10 +58,8 @@ zurücksetzen" name="check reset home" tool_tip="Wenn Einwohner wegteleportieren <text name="region name"> Welsh </text> - <check_box label="Skripts -deaktivieren" name="disable scripts" tool_tip="Skripts in dieser Region komplett abschalten"/> - <check_box label="Kollisionen -deaktivieren" name="disable collisions" tool_tip="Nicht-Avatar-Kollisionen in dieser Region komplett abschalten"/> + <check_box label="Skripts deaktivieren" name="disable scripts" tool_tip="Skripts in dieser Region komplett abschalten"/> + <check_box label="Kollisionen deaktivieren" name="disable collisions" tool_tip="Nicht-Avatar-Kollisionen in dieser Region komplett abschalten"/> <check_box label="Physik deaktivieren" name="disable physics" tool_tip="Die Physik in dieser Region komplett abschalten"/> <button label="Übernehmen" label_selected="Übernehmen" name="Apply" tool_tip="Klicken Sie hier, um die obigen Änderungen zu übernehmen."/> <button label="Ziel festlegen" label_selected="Ziel festlegen" name="Set Target" tool_tip="Den Ziel-Avatar für das Löschen von Objekten auswählen."/> diff --git a/indra/newview/skins/default/xui/de/floater_im_container.xml b/indra/newview/skins/default/xui/de/floater_im_container.xml index 62578c00d5..95eda97938 100644 --- a/indra/newview/skins/default/xui/de/floater_im_container.xml +++ b/indra/newview/skins/default/xui/de/floater_im_container.xml @@ -1,2 +1,2 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<multi_floater name="floater_im_box" title="Sofortnachrichten"/> +<multi_floater name="floater_im_box" title="GESPRÄCHE"/> diff --git a/indra/newview/skins/default/xui/de/floater_incoming_call.xml b/indra/newview/skins/default/xui/de/floater_incoming_call.xml index e40d57976f..740085599f 100644 --- a/indra/newview/skins/default/xui/de/floater_incoming_call.xml +++ b/indra/newview/skins/default/xui/de/floater_incoming_call.xml @@ -1,5 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="incoming call" title="ANRUF VON UNBEKANNT"> + <floater.string name="lifetime"> + 5 + </floater.string> <floater.string name="localchat"> Voice-Chat in der Nähe </floater.string> @@ -12,6 +15,9 @@ <floater.string name="VoiceInviteAdHoc"> ist einem Voice-Konferenz-Chat beigetreten. </floater.string> + <floater.string name="VoiceInviteGroup"> + ist einem Voice-Chat mit der Gruppe [GROUP] beigetreten. + </floater.string> <text name="question"> Möchten Sie [CURRENT_CHAT] verlassen und diesem Voice-Chat beitreten? </text> diff --git a/indra/newview/skins/default/xui/de/floater_lsl_guide.xml b/indra/newview/skins/default/xui/de/floater_lsl_guide.xml index 5e90076487..1d6f690d3c 100644 --- a/indra/newview/skins/default/xui/de/floater_lsl_guide.xml +++ b/indra/newview/skins/default/xui/de/floater_lsl_guide.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="script ed float" title="LSL-WIKI"> +<floater name="script ed float" title="LSL-REFERENZ"> <check_box label="Cursor folgen" name="lock_check"/> <combo_box label="Sperren" name="history_combo"/> <button label="Zurück" name="back_btn"/> diff --git a/indra/newview/skins/default/xui/de/floater_media_browser.xml b/indra/newview/skins/default/xui/de/floater_media_browser.xml index 62a047b8fe..18adb5ee7f 100644 --- a/indra/newview/skins/default/xui/de/floater_media_browser.xml +++ b/indra/newview/skins/default/xui/de/floater_media_browser.xml @@ -19,7 +19,7 @@ <button label="vorwärts" name="seek"/> </layout_panel> <layout_panel name="parcel_owner_controls"> - <button label="Aktuelle URL an Parzelle senden" name="assign"/> + <button label="Aktuelle Seite an Parzelle senden" name="assign"/> </layout_panel> <layout_panel name="external_controls"> <button label="In meinem Browser öffnen" name="open_browser"/> diff --git a/indra/newview/skins/default/xui/de/floater_notification.xml b/indra/newview/skins/default/xui/de/floater_notification.xml index c0806ef50c..7752d22b52 100644 --- a/indra/newview/skins/default/xui/de/floater_notification.xml +++ b/indra/newview/skins/default/xui/de/floater_notification.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="notification" title="BENACHRICHTIGUNGEN"> +<floater name="notification" title="MELDUNGEN"> <text_editor name="payload"> Wird geladen... </text_editor> 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 new file mode 100644 index 0000000000..42cb91ccbb --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_outfit_save_as.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="modal container"> + <button label="Speichern" label_selected="Speichern" name="Save"/> + <button label="Abbrechen" label_selected="Abbrechen" name="Cancel"/> + <text name="Save item as:"> + Outfit speichern als: + </text> + <line_editor name="name ed"> + [BESCHR] + </line_editor> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_outgoing_call.xml b/indra/newview/skins/default/xui/de/floater_outgoing_call.xml index 65f2fe10e2..99ef0e900e 100644 --- a/indra/newview/skins/default/xui/de/floater_outgoing_call.xml +++ b/indra/newview/skins/default/xui/de/floater_outgoing_call.xml @@ -1,5 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="outgoing call" title="ANRUF"> + <floater.string name="lifetime"> + 5 + </floater.string> <floater.string name="localchat"> Voice-Chat in der Nähe </floater.string> @@ -21,6 +24,12 @@ <text name="noanswer"> Der Anruf wurde nicht entgegengenommen. Bitte versuchen Sie es später erneut. </text> + <text name="nearby"> + Die Verbindung zu [VOICE_CHANNEL_NAME] wurde abgebrochen. Sie werden nun wieder mit dem Chat in Ihrer Nähe verbunden. + </text> + <text name="nearby_P2P"> + [VOICE_CHANNEL_NAME] hat den Anruf beendet. Sie werden nun wieder mit dem Chat in Ihrer Nähe verbunden. + </text> <text name="leaving"> [CURRENT_CHAT] wird verlassen. </text> diff --git a/indra/newview/skins/default/xui/de/floater_preview_gesture.xml b/indra/newview/skins/default/xui/de/floater_preview_gesture.xml index 16e2fc18cb..51c41a3209 100644 --- a/indra/newview/skins/default/xui/de/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/de/floater_preview_gesture.xml @@ -24,6 +24,9 @@ <floater.string name="Title"> Gesten: [NAME] </floater.string> + <text name="name_text"> + Name: + </text> <text name="desc_label"> Beschreibung: </text> diff --git a/indra/newview/skins/default/xui/de/floater_preview_notecard.xml b/indra/newview/skins/default/xui/de/floater_preview_notecard.xml index a02a58ee0e..62f9e1e9e5 100644 --- a/indra/newview/skins/default/xui/de/floater_preview_notecard.xml +++ b/indra/newview/skins/default/xui/de/floater_preview_notecard.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="preview notecard" title="HINWEIS:"> +<floater name="preview notecard" title="NOTIZKARTE:"> <floater.string name="no_object"> - Es wurde kein Objekt gefunden, das diese Notiz enthält. + Es wurde kein Objekt gefunden, das diese Notizkarte enthält. </floater.string> <floater.string name="not_allowed"> Ihnen fehlt die Berechtigung zur Anzeige dieser Notizkarte. diff --git a/indra/newview/skins/default/xui/de/floater_preview_texture.xml b/indra/newview/skins/default/xui/de/floater_preview_texture.xml index 95d1db1877..ac6a61cde6 100644 --- a/indra/newview/skins/default/xui/de/floater_preview_texture.xml +++ b/indra/newview/skins/default/xui/de/floater_preview_texture.xml @@ -9,8 +9,6 @@ <text name="desc txt"> Beschreibung: </text> - <button label="OK" name="Keep"/> - <button label="Abbrechen" name="Discard"/> <text name="dimensions"> [WIDTH]px x [HEIGHT]px </text> @@ -43,4 +41,7 @@ 2:1 </combo_item> </combo_box> + <button label="OK" name="Keep"/> + <button label="Abbrechen" name="Discard"/> + <button label="Speichern unter" name="save_tex_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_report_abuse.xml b/indra/newview/skins/default/xui/de/floater_report_abuse.xml index 3e4cf86a75..3edf5959a2 100644 --- a/indra/newview/skins/default/xui/de/floater_report_abuse.xml +++ b/indra/newview/skins/default/xui/de/floater_report_abuse.xml @@ -41,7 +41,7 @@ <combo_box name="category_combo" tool_tip="Kategorie -- wählen Sie die Kategorie aus, die am besten auf diesen Bericht zutrifft"> <combo_box.item label="Kategorie auswählen" name="Select_category"/> <combo_box.item label="Alter> Age-Play" name="Age__Age_play"/> - <combo_box.item label="Alter> Erwachsener Einwohner in Teen Second Life" name="Age__Adult_resident_on_Teen_Second_Life"/> + <combo_box.item label="Alter > Erwachsener Einwohner in Teen Second Life" name="Age__Adult_resident_on_Teen_Second_Life"/> <combo_box.item label="Alter > Minderjähriger Einwohner außerhalb Teen Second Life" name="Age__Underage_resident_outside_of_Teen_Second_Life"/> <combo_box.item label="Angriff> Kampf-Sandbox / unsichere Region" name="Assault__Combat_sandbox___unsafe_area"/> <combo_box.item label="Angriff> Sichere Region" name="Assault__Safe_area"/> @@ -68,7 +68,7 @@ <combo_box.item label="Unanständigkeit > Anstößige Inhalte oder Handlungen in der Öffentlichkeit" name="Indecency__Broadly_offensive_content_or_conduct"/> <combo_box.item label="Unanständigkeit > Anstößiger Avatarname" name="Indecency__Inappropriate_avatar_name"/> <combo_box.item label="Unanständigkeit > Unangemessener Inhalt oder unangemessenes Verhalten in PG-Region" name="Indecency__Mature_content_in_PG_region"/> - <combo_box.item label="Unanständigkeit > Unangemessener Inhalt oder unangemessenes Verhalten in Mature-Region" name="Indecency__Inappropriate_content_in_Mature_region"/> + <combo_box.item label="Unanständigkeit > Unangemessener Inhalt oder unangemessenes Verhalten in moderater Region" name="Indecency__Inappropriate_content_in_Mature_region"/> <combo_box.item label="Urheberrechtsverletzung > Entfernen von Inhalten" name="Intellectual_property_infringement_Content_Removal"/> <combo_box.item label="Urheberrechtsverletzung > CopyBot oder Berechtigungs-Exploit" name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit"/> <combo_box.item label="Intoleranz" name="Intolerance"/> diff --git a/indra/newview/skins/default/xui/de/floater_script_limits.xml b/indra/newview/skins/default/xui/de/floater_script_limits.xml new file mode 100644 index 0000000000..94a24a97ae --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_script_limits.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="scriptlimits" title="SKRIPT-INFORMATION"/> diff --git a/indra/newview/skins/default/xui/de/floater_search.xml b/indra/newview/skins/default/xui/de/floater_search.xml index 3401db1a39..d44ad44aea 100644 --- a/indra/newview/skins/default/xui/de/floater_search.xml +++ b/indra/newview/skins/default/xui/de/floater_search.xml @@ -6,4 +6,11 @@ <floater.string name="done_text"> Fertig </floater.string> + <layout_stack name="stack1"> + <layout_panel name="browser_layout"> + <text name="refresh_search"> + Suche wiederholen, um aktuellen Gott-Level zu berücksichtigen + </text> + </layout_panel> + </layout_stack> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_select_key.xml b/indra/newview/skins/default/xui/de/floater_select_key.xml index 6094d11359..8ab9db520a 100644 --- a/indra/newview/skins/default/xui/de/floater_select_key.xml +++ b/indra/newview/skins/default/xui/de/floater_select_key.xml @@ -1,8 +1,7 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="modal container"> - <button label="Abbrechen" label_selected="Abbrechen" name="Cancel" /> + <button label="Abbrechen" label_selected="Abbrechen" name="Cancel"/> <text name="Save item as:"> - Zur Auswahl gewünschte -Taste drücken. + Eine Taste drücken, um die Auslösetaste zum Sprechen festzulegen. </text> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_sell_land.xml b/indra/newview/skins/default/xui/de/floater_sell_land.xml index c9e21a6c4f..2bc7356e65 100644 --- a/indra/newview/skins/default/xui/de/floater_sell_land.xml +++ b/indra/newview/skins/default/xui/de/floater_sell_land.xml @@ -39,7 +39,7 @@ Wählen Sie, ob der Verkauf offen oder auf eine bestimmte Person beschränkt ist. </text> <combo_box bottom_delta="-32" height="16" left="72" name="sell_to" width="140"> - <combo_box.item label="-- Wählen --" name="--selectone--"/> + <combo_box.item label="-- Auswählen --" name="--selectone--"/> <combo_box.item label="Jeder" name="Anyone"/> <combo_box.item label="Bestimmte Person:" name="Specificuser:"/> </combo_box> diff --git a/indra/newview/skins/default/xui/de/floater_snapshot.xml b/indra/newview/skins/default/xui/de/floater_snapshot.xml index 8aa1ef5497..80573d69ad 100644 --- a/indra/newview/skins/default/xui/de/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/de/floater_snapshot.xml @@ -4,12 +4,12 @@ Zweck des Fotos </text> <radio_group label="Fototyp" name="snapshot_type_radio"> - <radio_item label="Per E-Mail senden" name="postcard"/> - <radio_item label="Im Inventar speichern ([AMOUNT] L$)" name="texture"/> - <radio_item label="Auf Festplatte speichern" name="local"/> + <radio_item label="Email-Adresse" name="postcard"/> + <radio_item label="Mein Inventar ([AMOUNT] L$)" name="texture"/> + <radio_item label="Auf meinem Computer speichern" name="local"/> </radio_group> <text name="file_size_label"> - Dateigröße: [SIZE] KB + [SIZE] KB </text> <button label="Foto aktualisieren" name="new_snapshot_btn"/> <button label="Senden" name="send_btn"/> @@ -19,8 +19,8 @@ <flyout_button_item label="Speichern unter..." name="saveas_item"/> </flyout_button> <button label="Abbrechen" name="discard_btn"/> - <button label="Mehr >>" name="more_btn" tool_tip="Erweiterte Optionen"/> - <button label="<< Weniger" name="less_btn" tool_tip="Erweiterte Optionen"/> + <button label="Mehr" name="more_btn" tool_tip="Erweiterte Optionen"/> + <button label="Weniger" name="less_btn" tool_tip="Erweiterte Optionen"/> <text name="type_label2"> Größe </text> @@ -68,10 +68,10 @@ <combo_box.item label="Tiefe" name="Depth"/> <combo_box.item label="Objektmasken" name="ObjectMattes"/> </combo_box> - <check_box label="Interface auf Foto anzeigen" name="ui_check"/> - <check_box label="HUD-Objekte auf Foto anzeigen" name="hud_check"/> + <check_box label="Schnittstelle" name="ui_check"/> + <check_box label="HUDs" name="hud_check"/> <check_box label="Nach dem Speichern offen lassen" name="keep_open_check"/> - <check_box label="Frame einfrieren (Vollbildvorschau)" name="freeze_frame_check"/> + <check_box label="Frame einfrieren (Vollbild)" name="freeze_frame_check"/> <check_box label="Automatisch aktualisieren" name="auto_snapshot_check"/> <string name="unknown"> unbekannt diff --git a/indra/newview/skins/default/xui/de/floater_sys_well.xml b/indra/newview/skins/default/xui/de/floater_sys_well.xml index bcf0cbd419..982786b66e 100644 --- a/indra/newview/skins/default/xui/de/floater_sys_well.xml +++ b/indra/newview/skins/default/xui/de/floater_sys_well.xml @@ -1,2 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="notification_chiclet" title="BENACHRICHTIGUNGEN"/> +<floater name="notification_chiclet" title="MELDUNGEN"> + <string name="title_im_well_window"> + IM-SITZUNGEN + </string> + <string name="title_notification_well_window"> + BENACHRICHTIGUNGEN + </string> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_telehub.xml b/indra/newview/skins/default/xui/de/floater_telehub.xml index f348371e4d..923b4c0079 100644 --- a/indra/newview/skins/default/xui/de/floater_telehub.xml +++ b/indra/newview/skins/default/xui/de/floater_telehub.xml @@ -21,12 +21,9 @@ <button label="Spawn hinzufügen" name="add_spawn_point_btn"/> <button label="Spawn entfernen" name="remove_spawn_point_btn"/> <text name="spawn_point_help"> - Wählen Sie ein Objekt und klicken zur -Positionsangabe auf „Hinzufügen“. Anschließend -können sie das Objekt verschieben oder löschen. -Positionsangaben sind relativ zum -Telehub-Mittelpunkt. -Wählen Sie ein Objekt aus, um seine Position in -der Welt anzuzeigen. + Wählen Sie ein Objekt und klicken zur Positionsangabe auf Spawn hinzufügen. +Anschließend können Sie das Objekt verschieben oder löschen. +Positionsangaben sind relativ zum Telehub-Mittelpunkt. +Wählen Sie ein Objekt aus der Liste aus, um dieses inworld zu markieren. </text> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_tools.xml b/indra/newview/skins/default/xui/de/floater_tools.xml index 48887191e0..b2f8cbed45 100644 --- a/indra/newview/skins/default/xui/de/floater_tools.xml +++ b/indra/newview/skins/default/xui/de/floater_tools.xml @@ -454,12 +454,12 @@ <spinner label="Vertikal (V)" name="TexOffsetV"/> <panel name="Add_Media"> <text name="media_tex"> - Medien-URL + Medien </text> <button name="add_media" tool_tip="Medien hinzufügen"/> <button name="delete_media" tool_tip="Diese Medien-Textur löschen"/> <button name="edit_media" tool_tip="Diese Medien bearbeiten"/> - <button label="Ausrichten" label_selected="Medien angleichen" name="button align"/> + <button label="Ausrichten" label_selected="Medien angleichen" name="button align" tool_tip="Medientexturen angleichen (müssen zunächst geladen werden)"/> </panel> </panel> <panel label="Inhalt" name="Contents"> @@ -478,14 +478,7 @@ Gebiet: [AREA] m². </text> <button label="Über Land" label_selected="Über Land" name="button about land"/> - <check_box label="Eigentümer anzeigen" name="checkbox show owners" tool_tip="Die Parzellen farblich nach Eigentümtertyp anzeigen - -Grün = Ihr Land -Blau = Das Land Ihrer Gruppe -Rot = Im Eigentum anderer -Geld = Zum Verkauf -Lila = Zur Auktion -Grau = Öffentlich"/> + <check_box label="Eigentümer anzeigen" name="checkbox show owners" tool_tip="Die Parzellen farblich nach Eigentümtertyp anzeigen Grün = Ihr Land Blau = Das Land Ihrer Gruppe Rot = Im Eigentum anderer Geld = Zum Verkauf Lila = Zur Auktion Grau = Öffentlich"/> <text name="label_parcel_modify"> Parzelle ändern </text> diff --git a/indra/newview/skins/default/xui/de/floater_top_objects.xml b/indra/newview/skins/default/xui/de/floater_top_objects.xml index 579e5cbe7e..dad550227e 100644 --- a/indra/newview/skins/default/xui/de/floater_top_objects.xml +++ b/indra/newview/skins/default/xui/de/floater_top_objects.xml @@ -1,15 +1,40 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="top_objects" title="WIRD GELDADEN..."> +<floater name="top_objects" title="Top-Objekte"> + <floater.string name="top_scripts_title"> + Top-Skripts + </floater.string> + <floater.string name="top_scripts_text"> + [COUNT] Skripts benötigen insgesamt [TIME] ms + </floater.string> + <floater.string name="scripts_score_label"> + Zeit + </floater.string> + <floater.string name="scripts_mono_time_label"> + Mono-Uhrzeit: + </floater.string> + <floater.string name="top_colliders_title"> + Top-Kollisionsobjekte + </floater.string> + <floater.string name="top_colliders_text"> + Top [COUNT] Objekte mit vielen potenziellen Kollisionen + </floater.string> + <floater.string name="colliders_score_label"> + Wertung + </floater.string> + <floater.string name="none_descriptor"> + Nicht gefunden. + </floater.string> <text name="title_text"> Wird geladen... </text> <scroll_list name="objects_list"> - <column label="Wertung" name="score" width="65"/> - <column label="Name" name="name" width="135"/> - <column label="Eigentümer" name="owner"/> - <column label="Position" name="location" width="125"/> - <column label="Uhrzeit" name="time"/> - <column label="Mono-Uhrzeit:" name="mono_time"/> + <scroll_list.columns label="Wertung" name="score" width="65"/> + <scroll_list.columns label="Name" name="name" width="135"/> + <scroll_list.columns label="Eigentümer" name="owner"/> + <scroll_list.columns label="Position" name="location" width="125"/> + <scroll_list.columns label="Uhrzeit" name="time"/> + <scroll_list.columns label="Mono-Uhrzeit:" name="mono_time"/> + <scroll_list.columns label="URLs" name="URLs"/> </scroll_list> <text name="id_text"> Objekt-ID: @@ -22,37 +47,13 @@ <line_editor bg_readonly_color="clear" bottom_delta="3" enabled="false" follows="left|bottom|right" font="SansSerifSmall" height="20" left="80" name="object_name_editor" text_readonly_color="white" width="244"/> <button bottom_delta="0" follows="bottom|right" height="20" label="Filter" name="filter_object_btn" right="-10" width="110"/> <text name="owner_name_text"> - Eigentümername: + Eigentümer: </text> <line_editor bg_readonly_color="clear" bottom_delta="3" enabled="true" follows="left|bottom|right" font="SansSerifSmall" height="20" left="106" name="owner_name_editor" text_readonly_color="white" width="218"/> <button bottom_delta="0" follows="bottom|right" height="20" label="Filter" name="filter_owner_btn" right="-10" width="110"/> + <button bottom_delta="0" follows="bottom|right" height="20" label="Aktualisieren" name="refresh_btn" right="-10" width="110"/> <button bottom="35" follows="bottom|left" height="20" label="Auswahl zurückgeben" left="10" name="return_selected_btn" width="134"/> <button bottom="35" follows="bottom|left" height="20" label="Alle zurückgeben" left="150" name="return_all_btn" width="134"/> <button bottom="10" follows="bottom|left" height="20" label="Auswahl deaktivieren" left="10" name="disable_selected_btn" width="134"/> <button bottom="10" follows="bottom|left" height="20" label="Alle deaktivieren" left="150" name="disable_all_btn" width="134"/> - <button bottom_delta="0" follows="bottom|right" height="20" label="Aktualisieren" name="refresh_btn" right="-10" width="110"/> - <string name="top_scripts_title"> - Top-Skripts - </string> - <string name="top_scripts_text"> - [COUNT] Skripts benötigen insgesamt [TIME] ms - </string> - <string name="scripts_score_label"> - Zeit - </string> - <string name="scripts_mono_time_label"> - Mono-Uhrzeit: - </string> - <string name="top_colliders_title"> - Top-Kollisionsobjekte - </string> - <string name="top_colliders_text"> - Top [COUNT] Objekte mit vielen potenziellen Kollisionen - </string> - <string name="colliders_score_label"> - Wertung - </string> - <string name="none_descriptor"> - Nicht gefunden. - </string> </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 39675beb45..f978042cc2 100644 --- a/indra/newview/skins/default/xui/de/floater_voice_controls.xml +++ b/indra/newview/skins/default/xui/de/floater_voice_controls.xml @@ -1,13 +1,23 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_voice_controls" title="Voice-Steuerung"> - <panel name="control_panel"> - <panel name="my_panel"> - <text name="user_text" value="Mein Avatar:"/> - </panel> - <layout_stack> - <layout_panel> - <slider_bar name="volume_slider_bar" tool_tip="Master-Lautstärke"/> - </layout_panel> - </layout_stack> - </panel> + <string name="title_nearby"> + VOICE IN DER NÄHE + </string> + <string name="title_group"> + Gruppengespräch mit [GROUP] + </string> + <string name="title_adhoc"> + Konferenzgespräch + </string> + <string name="title_peer_2_peer"> + Gespräch mit [NAME] + </string> + <string name="no_one_near"> + Es ist niemand in der Nähe, der Voice aktiviert hat. + </string> + <layout_stack name="my_call_stack"> + <layout_panel name="leave_call_btn_panel"> + <button label="Anruf beenden" name="leave_call_btn"/> + </layout_panel> + </layout_stack> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/de/floater_whitelist_entry.xml index a0bfc57e42..35a5ec35f7 100644 --- a/indra/newview/skins/default/xui/de/floater_whitelist_entry.xml +++ b/indra/newview/skins/default/xui/de/floater_whitelist_entry.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="whitelist_entry"> +<floater name="whitelist_entry" title="WHITELISTEN-EINTRAG"> <text name="media_label"> Eine URL oder URL </text> diff --git a/indra/newview/skins/default/xui/de/floater_window_size.xml b/indra/newview/skins/default/xui/de/floater_window_size.xml new file mode 100644 index 0000000000..a2a53e0567 --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_window_size.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="window_size" title="FENSTERGRÖSSE"> + <string name="resolution_format"> + [RES_X] x [RES_Y] + </string> + <text name="windowsize_text"> + Fenstergröße einstellen: + </text> + <combo_box name="window_size_combo" tool_tip="Breite x Höhe"> + <combo_box.item label="1000 x 700 (Standard)" name="item0"/> + <combo_box.item label="1024 x 768" name="item1"/> + <combo_box.item label="1280 x 720 (720p)" name="item2"/> + <combo_box.item label="1920 x 1080 (1080p)" name="item3"/> + </combo_box> + <button label="Festlegen" name="set_btn"/> + <button label="Abbrechen" name="cancel_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_world_map.xml b/indra/newview/skins/default/xui/de/floater_world_map.xml index dd13623f91..accc023b8f 100644 --- a/indra/newview/skins/default/xui/de/floater_world_map.xml +++ b/indra/newview/skins/default/xui/de/floater_world_map.xml @@ -1,53 +1,81 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="worldmap" title="KARTE"> - <text name="you_label"> - Sie - </text> - <text name="home_label"> - Zuhause - </text> - <text name="auction_label"> - Auktion - </text> - <text font="SansSerifSmall" name="land_for_sale_label"> - Land zum Verkauf - </text> - <button label="Nach Hause" label_selected="Nach Hause" name="Go Home" tool_tip="Nach Hause teleportieren"/> - <check_box label="Einwohner" name="people_chk"/> - <check_box label="Infohub" name="infohub_chk"/> - <check_box label="Telehub" name="telehub_chk"/> - <check_box label="Land zu verkaufen" name="land_for_sale_chk"/> - <text name="events_label"> - Events: - </text> - <check_box label="PG" name="event_chk"/> - <check_box initial_value="true" label="Mature" name="event_mature_chk"/> - <check_box label="Adult" name="event_adult_chk"/> - <combo_box label="Online-Freunde" name="friend combo" tool_tip="Freund, der auf Karte angezeigt werden soll"> - <combo_box.item label="Online-Freunde" name="item1"/> - </combo_box> - <combo_box label="Landmarken" name="landmark combo" tool_tip="Landmarke, die auf Karte angezeigt werden soll"> - <combo_box.item label="Landmarken" name="item1"/> - </combo_box> - <line_editor label="Nach Regionsname suchen" name="location" tool_tip="Geben Sie den Namen einer Region ein"/> - <button label="Suchen" name="DoSearch" tool_tip="Nach einer Region suchen"/> - <text name="search_label"> - Suchergebnisse: - </text> - <scroll_list name="search_results"> - <scroll_list.columns label="" name="icon"/> - <scroll_list.columns label="" name="sim_name"/> - </scroll_list> - <text name="location_label"> - Standort: - </text> - <spinner name="spin x" tool_tip="X-Koordinate der Position auf der Karte"/> - <spinner name="spin y" tool_tip="Y-Koordinate der Position auf der Karte"/> - <spinner name="spin z" tool_tip="Z-Koordinate der Position auf der Karte"/> - <button label="Teleportieren" label_selected="Teleportieren" name="Teleport" tool_tip="Zu ausgewählter Position teleportieren"/> - <button label="Gesuchte Position" label_selected="Ziel anzeigen" name="Show Destination" tool_tip="Karte auf ausgewählte Position zentrieren"/> - <button label="Löschen" label_selected="Löschen" name="Clear" tool_tip="Verfolgung abschalten"/> - <button label="Meine Position" label_selected="Wo bin ich?" name="Show My Location" tool_tip="Karte auf Position Ihres Avatars zentrieren"/> - <button font="SansSerifSmall" label="SLurl in die Zwischenablage kopieren" name="copy_slurl" tool_tip="Kopiert die aktuelle Position als SLurl zur Verwendung im Web."/> - <slider label="Zoom" name="zoom slider"/> + <panel name="layout_panel_1"> + <text name="events_label"> + Legende + </text> + </panel> + <panel> + <button label="Meine Position" label_selected="Wo bin ich?" name="Show My Location" tool_tip="Karte auf Position meines Avatars zentrieren"/> + <text name="me_label"> + Ich + </text> + <check_box label="Einwohner" name="people_chk"/> + <text name="person_label"> + Person + </text> + <check_box label="Infohub" name="infohub_chk"/> + <text name="infohub_label"> + Infohub + </text> + <check_box label="Land zu verkaufen" name="land_for_sale_chk"/> + <text name="land_sale_label"> + Land-Verkauf + </text> + <text name="by_owner_label"> + durch Besitzer + </text> + <text name="auction_label"> + Land-Auktion + </text> + <button label="Nach Hause" label_selected="Nach Hause" name="Go Home" tool_tip="Nach Hause teleportieren"/> + <text name="Home_label"> + Startseite + </text> + <text name="events_label"> + Events: + </text> + <check_box label="PG" name="event_chk"/> + <text name="pg_label"> + Allgemein + </text> + <check_box initial_value="true" label="Mature" name="event_mature_chk"/> + <text name="mature_label"> + Moderat + </text> + <check_box label="Adult" name="event_adult_chk"/> + <text name="adult_label"> + Adult + </text> + </panel> + <panel> + <text name="find_on_map_label"> + Auf Karte anzeigen + </text> + </panel> + <panel> + <combo_box label="Online-Freunde" name="friend combo" tool_tip="Freunde auf Karte anzeigen"> + <combo_box.item label="Meine Freunde: Online" name="item1"/> + </combo_box> + <combo_box label="Meine Landmarken" name="landmark combo" tool_tip="Landmarke, die auf Karte angezeigt werden soll"> + <combo_box.item label="Meine Landmarken" name="item1"/> + </combo_box> + <search_editor label="Regionen nach Name" name="location" tool_tip="Geben Sie den Namen einer Region ein"/> + <button label="Suchen" name="DoSearch" tool_tip="Nach einer Region suchen"/> + <scroll_list name="search_results"> + <scroll_list.columns label="" name="icon"/> + <scroll_list.columns label="" name="sim_name"/> + </scroll_list> + <button label="Teleportieren" label_selected="Teleportieren" name="Teleport" tool_tip="Zu ausgewählter Position teleportieren"/> + <button font="SansSerifSmall" label="SLurl kopieren" name="copy_slurl" tool_tip="Kopiert die aktuelle Position als SLurl zur Verwendung im Web."/> + <button label="Auswahl anzeigen" label_selected="Ziel anzeigen" name="Show Destination" tool_tip="Karte auf ausgewählte Position zentrieren"/> + </panel> + <panel> + <text name="zoom_label"> + Zoom + </text> + </panel> + <panel> + <slider label="Zoom" name="zoom slider"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/de/inspect_avatar.xml b/indra/newview/skins/default/xui/de/inspect_avatar.xml index 91b7650376..489e257867 100644 --- a/indra/newview/skins/default/xui/de/inspect_avatar.xml +++ b/indra/newview/skins/default/xui/de/inspect_avatar.xml @@ -10,19 +10,17 @@ <string name="Details"> [SL_PROFILE] </string> - <string name="Partner"> - Partner: [PARTNER] - </string> <text name="user_name" value="Grumpity ProductEngine"/> <text name="user_subtitle" value="11 Monate und 3 Tage alt"/> <text name="user_details"> Dies ist meine Beschreibung und ich finde sie wirklich gut! </text> - <text name="user_partner"> - Erica Linden - </text> <slider name="volume_slider" tool_tip="Lautstärke" value="0.5"/> <button label="Freund hinzufügen" name="add_friend_btn"/> <button label="IM" name="im_btn"/> <button label="Mehr" name="view_profile_btn"/> + <panel name="moderator_panel"> + <button label="Voice deaktivieren" name="disable_voice"/> + <button label="Voice aktivieren" name="enable_voice"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/de/inspect_group.xml b/indra/newview/skins/default/xui/de/inspect_group.xml index fa9764e420..81d946be9d 100644 --- a/indra/newview/skins/default/xui/de/inspect_group.xml +++ b/indra/newview/skins/default/xui/de/inspect_group.xml @@ -31,4 +31,5 @@ Hoch solln sie leben! Elche forever! Und auch Mungos! </text> <button label="Zusammen" name="join_btn"/> <button label="Verlassen" name="leave_btn"/> + <button label="Profil anzeigen" name="view_profile_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/de/menu_attachment_other.xml b/indra/newview/skins/default/xui/de/menu_attachment_other.xml new file mode 100644 index 0000000000..33cff066a2 --- /dev/null +++ b/indra/newview/skins/default/xui/de/menu_attachment_other.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- *NOTE: See also menu_avatar_other.xml --> +<context_menu name="Avatar Pie"> + <menu_item_call label="Profil anzeigen" name="Profile..."/> + <menu_item_call label="Freund hinzufügen" name="Add Friend"/> + <menu_item_call label="IM" name="Send IM..."/> + <menu_item_call label="Anrufen" name="Call"/> + <menu_item_call label="In Gruppe einladen" name="Invite..."/> + <menu_item_call label="Ignorieren" name="Avatar Mute"/> + <menu_item_call label="Melden" name="abuse"/> + <menu_item_call label="Einfrieren" name="Freeze..."/> + <menu_item_call label="Hinauswerfen" name="Eject..."/> + <menu_item_call label="Debug" name="Debug..."/> + <menu_item_call label="Hineinzoomen" name="Zoom In"/> + <menu_item_call label="Zahlen" name="Pay..."/> + <menu_item_call label="Objektprofil" name="Object Inspect"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_attachment_self.xml b/indra/newview/skins/default/xui/de/menu_attachment_self.xml new file mode 100644 index 0000000000..bc33b9b93d --- /dev/null +++ b/indra/newview/skins/default/xui/de/menu_attachment_self.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Attachment Pie"> + <menu_item_call label="Berühren" name="Attachment Object Touch"/> + <menu_item_call label="Bearbeiten" name="Edit..."/> + <menu_item_call label="Abnehmen" name="Detach"/> + <menu_item_call label="Fallen lassen" name="Drop"/> + <menu_item_call label="Aufstehen" name="Stand Up"/> + <menu_item_call label="Mein Aussehen" name="Appearance..."/> + <menu_item_call label="Meine Freunde" name="Friends..."/> + <menu_item_call label="Meine Gruppen" name="Groups..."/> + <menu_item_call label="Mein Profil" name="Profile..."/> +</context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_avatar_icon.xml b/indra/newview/skins/default/xui/de/menu_avatar_icon.xml index b1e119c66a..c036cf5515 100644 --- a/indra/newview/skins/default/xui/de/menu_avatar_icon.xml +++ b/indra/newview/skins/default/xui/de/menu_avatar_icon.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="Avatar Icon Menu"> - <menu_item_call label="Profil anzeigen..." name="Show Profile"/> + <menu_item_call label="Profil anzeigen" name="Show Profile"/> <menu_item_call label="IM senden..." name="Send IM"/> <menu_item_call label="Freund hinzufügen..." name="Add Friend"/> <menu_item_call label="Freund entfernen..." name="Remove Friend"/> diff --git a/indra/newview/skins/default/xui/de/menu_avatar_other.xml b/indra/newview/skins/default/xui/de/menu_avatar_other.xml new file mode 100644 index 0000000000..85db648119 --- /dev/null +++ b/indra/newview/skins/default/xui/de/menu_avatar_other.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- *NOTE: See also menu_attachment_other.xml --> +<context_menu name="Avatar Pie"> + <menu_item_call label="Profil anzeigen" name="Profile..."/> + <menu_item_call label="Freund hinzufügen" name="Add Friend"/> + <menu_item_call label="IM" name="Send IM..."/> + <menu_item_call label="Anrufen" name="Call"/> + <menu_item_call label="In Gruppe einladen" name="Invite..."/> + <menu_item_call label="Ignorieren" name="Avatar Mute"/> + <menu_item_call label="Melden" name="abuse"/> + <menu_item_call label="Einfrieren" name="Freeze..."/> + <menu_item_call label="Hinauswerfen" name="Eject..."/> + <menu_item_call label="Debug" name="Debug..."/> + <menu_item_call label="Hineinzoomen" name="Zoom In"/> + <menu_item_call label="Zahlen" name="Pay..."/> +</context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_avatar_self.xml b/indra/newview/skins/default/xui/de/menu_avatar_self.xml new file mode 100644 index 0000000000..5f9856a9cb --- /dev/null +++ b/indra/newview/skins/default/xui/de/menu_avatar_self.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Self Pie"> + <menu_item_call label="Aufstehen" name="Stand Up"/> + <context_menu label="Ausziehen >" name="Take Off >"> + <context_menu label="Kleidung >" name="Clothes >"> + <menu_item_call label="Hemd" name="Shirt"/> + <menu_item_call label="Hose" name="Pants"/> + <menu_item_call label="Rock" name="Skirt"/> + <menu_item_call label="Schuhe" name="Shoes"/> + <menu_item_call label="Strümpfe" name="Socks"/> + <menu_item_call label="Jacke" name="Jacket"/> + <menu_item_call label="Handschuhe" name="Gloves"/> + <menu_item_call label="Unterhemd" name="Self Undershirt"/> + <menu_item_call label="Unterhose" name="Self Underpants"/> + <menu_item_call label="Tätowierung" name="Self Tattoo"/> + <menu_item_call label="Alpha" name="Self Alpha"/> + <menu_item_call label="Alle Kleider" name="All Clothes"/> + </context_menu> + <context_menu label="HUD >" name="Object Detach HUD"/> + <context_menu label="Abnehmen >" name="Object Detach"/> + <menu_item_call label="Alles abnehmen" name="Detach All"/> + </context_menu> + <menu_item_call label="Mein Aussehen" name="Appearance..."/> + <menu_item_call label="Meine Freunde" name="Friends..."/> + <menu_item_call label="Meine Gruppen" name="Groups..."/> + <menu_item_call label="Mein Profil" name="Profile..."/> +</context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_bottomtray.xml b/indra/newview/skins/default/xui/de/menu_bottomtray.xml index 246275bee1..3f12906adc 100644 --- a/indra/newview/skins/default/xui/de/menu_bottomtray.xml +++ b/indra/newview/skins/default/xui/de/menu_bottomtray.xml @@ -4,4 +4,9 @@ <menu_item_check label="Schaltfläche Bewegungssteuerung" name="ShowMoveButton"/> <menu_item_check label="Schaltfläche Ansicht" name="ShowCameraButton"/> <menu_item_check label="Schaltfläche Foto" name="ShowSnapshotButton"/> + <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"/> + <menu_item_call label="Löschen" name="NearbyChatBar_Delete"/> + <menu_item_call label="Alle auswählen" name="NearbyChatBar_Select_All"/> </menu> diff --git a/indra/newview/skins/default/xui/de/menu_im_well_button.xml b/indra/newview/skins/default/xui/de/menu_im_well_button.xml new file mode 100644 index 0000000000..f464b71f4a --- /dev/null +++ b/indra/newview/skins/default/xui/de/menu_im_well_button.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="IM Well Button Context Menu"> + <menu_item_call label="Alle schließen" name="Close All"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/de/menu_imchiclet_adhoc.xml new file mode 100644 index 0000000000..11f93f47b4 --- /dev/null +++ b/indra/newview/skins/default/xui/de/menu_imchiclet_adhoc.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="IMChiclet AdHoc Menu"> + <menu_item_call label="Sitzung beenden" name="End Session"/> +</menu> diff --git a/indra/newview/skins/default/xui/de/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/de/menu_inspect_avatar_gear.xml index 128bcdb86a..9b6a6b2c4a 100644 --- a/indra/newview/skins/default/xui/de/menu_inspect_avatar_gear.xml +++ b/indra/newview/skins/default/xui/de/menu_inspect_avatar_gear.xml @@ -7,6 +7,7 @@ <menu_item_call label="Teleportieren" name="teleport"/> <menu_item_call label="In Gruppe einladen" name="invite_to_group"/> <menu_item_call label="Ignorieren" name="block"/> + <menu_item_call label="Freischalten" name="unblock"/> <menu_item_call label="Melden" name="report"/> <menu_item_call label="Einfrieren" name="freeze"/> <menu_item_call label="Hinauswerfen" name="eject"/> diff --git a/indra/newview/skins/default/xui/de/menu_inventory.xml b/indra/newview/skins/default/xui/de/menu_inventory.xml index fcdfc8b9e0..77c012d045 100644 --- a/indra/newview/skins/default/xui/de/menu_inventory.xml +++ b/indra/newview/skins/default/xui/de/menu_inventory.xml @@ -10,7 +10,7 @@ <menu_item_call label="Fundstücke ausleeren" name="Empty Lost And Found"/> <menu_item_call label="Neuer Ordner" name="New Folder"/> <menu_item_call label="Neues Skript" name="New Script"/> - <menu_item_call label="Neue Notiz" name="New Note"/> + <menu_item_call label="Neue Notizkarte" name="New Note"/> <menu_item_call label="Neue Geste" name="New Gesture"/> <menu label="Neue Kleider" name="New Clothes"> <menu_item_call label="Neues Hemd" name="New Shirt"/> @@ -46,6 +46,9 @@ <menu_item_call label="Teleportieren" name="Landmark Open"/> <menu_item_call label="Öffnen" name="Animation Open"/> <menu_item_call label="Öffnen" name="Sound Open"/> + <menu_item_call label="Aktuelles Outfit ersetzen" name="Replace Outfit"/> + <menu_item_call label="Zum aktuellen Outfit hinzufügen" name="Add To Outfit"/> + <menu_item_call label="Vom aktuellen Outfit entfernen" name="Remove From Outfit"/> <menu_item_call label="Objekt löschen" name="Purge Item"/> <menu_item_call label="Objekt wiederherstellen" name="Restore Item"/> <menu_item_call label="Original suchen" name="Find Original"/> @@ -56,10 +59,9 @@ <menu_item_call label="Kopieren" name="Copy"/> <menu_item_call label="Einfügen" name="Paste"/> <menu_item_call label="Als Link einfügen" name="Paste As Link"/> + <menu_item_call label="Link entfernen" name="Remove Link"/> <menu_item_call label="Löschen" name="Delete"/> - <menu_item_call label="Von Outfit entfernen" name="Remove From Outfit"/> - <menu_item_call label="Zum Outfit hinzufügen" name="Add To Outfit"/> - <menu_item_call label="Outfit ersetzen" name="Replace Outfit"/> + <menu_item_call label="Systemordner löschen" name="Delete System Folder"/> <menu_item_call label="Konferenz-Chat starten" name="Conference Chat Folder"/> <menu_item_call label="Wiedergeben/Abspielen" name="Sound Play"/> <menu_item_call label="Landmarken-Info" name="About Landmark"/> diff --git a/indra/newview/skins/default/xui/de/menu_inventory_add.xml b/indra/newview/skins/default/xui/de/menu_inventory_add.xml index f6b7e51325..448b1d80bf 100644 --- a/indra/newview/skins/default/xui/de/menu_inventory_add.xml +++ b/indra/newview/skins/default/xui/de/menu_inventory_add.xml @@ -8,7 +8,7 @@ </menu> <menu_item_call label="Neuer Ordner" name="New Folder"/> <menu_item_call label="Neues Skript" name="New Script"/> - <menu_item_call label="Neue Notiz" name="New Note"/> + <menu_item_call label="Neue Notizkarte" name="New Note"/> <menu_item_call label="Neue Geste" name="New Gesture"/> <menu label="Neue Kleider" name="New Clothes"> <menu_item_call label="Neues Hemd" name="New Shirt"/> diff --git a/indra/newview/skins/default/xui/de/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/de/menu_inventory_gear_default.xml index 69f9b86d75..e2b980c7b6 100644 --- a/indra/newview/skins/default/xui/de/menu_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/de/menu_inventory_gear_default.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="menu_gear_default"> - <menu_item_call label="Fenster: Neues Inventar" name="new_window"/> + <menu_item_call label="Neues Inventar-Fenster" name="new_window"/> <menu_item_call label="Nach Name sortieren" name="sort_by_name"/> <menu_item_call label="Nach aktuellesten Objekten sortieren" name="sort_by_recent"/> <menu_item_call label="Filter anzeigen" name="show_filters"/> @@ -9,4 +9,6 @@ <menu_item_call label="Papierkorb ausleeren" name="empty_trash"/> <menu_item_call label="Fundbüro ausleeren" name="empty_lostnfound"/> <menu_item_call label="Textur speichern als" name="Save Texture As"/> + <menu_item_call label="Original suchen" name="Find Original"/> + <menu_item_call label="Alle Links suchen" name="Find All Links"/> </menu> diff --git a/indra/newview/skins/default/xui/de/menu_land.xml b/indra/newview/skins/default/xui/de/menu_land.xml new file mode 100644 index 0000000000..9b1e6727b7 --- /dev/null +++ b/indra/newview/skins/default/xui/de/menu_land.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Land Pie"> + <menu_item_call label="Land-Info" name="Place Information..."/> + <menu_item_call label="Hier sitzen" name="Sit Here"/> + <menu_item_call label="Dieses Land kaufen" name="Land Buy"/> + <menu_item_call label="Pass kaufen" name="Land Buy Pass"/> + <menu_item_call label="Bauen" name="Create"/> + <menu_item_call label="Terrain bearbeiten" name="Edit Terrain"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_login.xml b/indra/newview/skins/default/xui/de/menu_login.xml index 26c2a4c2f4..fffa056cac 100644 --- a/indra/newview/skins/default/xui/de/menu_login.xml +++ b/indra/newview/skins/default/xui/de/menu_login.xml @@ -23,10 +23,8 @@ <menu_item_call label="Debug-Einstellungen anzeigen" name="Debug Settings"/> <menu_item_call label="UI/Farb-Einstellungen" name="UI/Color Settings"/> <menu_item_call label="XUI-Editor" name="UI Preview Tool"/> - <menu_item_call label="Seitenleiste anzeigen" name="Show Side Tray"/> - <menu_item_call label="Widget testen" name="Widget Test"/> - <menu_item_call label="Inspektor-Test" name="Inspectors Test"/> - <menu_item_check label="Reg In Client Test (Neustart)" name="Reg In Client Test (restart)"/> + <menu label="UI-Tests" name="UI Tests"/> + <menu_item_call label="Fenstergröße einstellen..." name="Set Window Size..."/> <menu_item_call label="Servicebedingungen anzeigen" name="TOS"/> <menu_item_call label="Wichtige Meldung anzeigen" name="Critical"/> <menu_item_call label="Web-Browser-Test" name="Web Browser Test"/> diff --git a/indra/newview/skins/default/xui/de/menu_notification_well_button.xml b/indra/newview/skins/default/xui/de/menu_notification_well_button.xml new file mode 100644 index 0000000000..0f2784f160 --- /dev/null +++ b/indra/newview/skins/default/xui/de/menu_notification_well_button.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Notification Well Button Context Menu"> + <menu_item_call label="Alle schließen" name="Close All"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_object.xml b/indra/newview/skins/default/xui/de/menu_object.xml new file mode 100644 index 0000000000..6f8d85ecb8 --- /dev/null +++ b/indra/newview/skins/default/xui/de/menu_object.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Object Pie"> + <menu_item_call label="Berühren" name="Object Touch"/> + <menu_item_call label="Bearbeiten" name="Edit..."/> + <menu_item_call label="Bauen" name="Build"/> + <menu_item_call label="Öffnen" name="Open"/> + <menu_item_call label="Hier sitzen" name="Object Sit"/> + <menu_item_call label="Objektprofil" name="Object Inspect"/> + <menu_item_call label="Hineinzoomen" name="Zoom In"/> + <context_menu label="Anziehen >" name="Put On"> + <menu_item_call label="Anziehen" name="Wear"/> + <context_menu label="Anhängen >" name="Object Attach"/> + <context_menu label="HUD anhängen >" name="Object Attach HUD"/> + </context_menu> + <context_menu label="Entfernen >" name="Remove"> + <menu_item_call label="Nehmen" name="Pie Object Take"/> + <menu_item_call label="Missbrauch melden" name="Report Abuse..."/> + <menu_item_call label="Ignorieren" name="Object Mute"/> + <menu_item_call label="Zurückgeben" name="Return..."/> + <menu_item_call label="Löschen" name="Delete"/> + </context_menu> + <menu_item_call label="Kopie nehmen" name="Take Copy"/> + <menu_item_call label="Zahlen" name="Pay..."/> + <menu_item_call label="Kaufen" name="Buy..."/> +</context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_participant_list.xml b/indra/newview/skins/default/xui/de/menu_participant_list.xml index 042123cde4..15c957cee3 100644 --- a/indra/newview/skins/default/xui/de/menu_participant_list.xml +++ b/indra/newview/skins/default/xui/de/menu_participant_list.xml @@ -1,5 +1,20 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Participant List Context Menu"> - <menu_item_check label="Text stummschalten" name="MuteText"/> - <menu_item_check label="Text-Chat zulassen" name="AllowTextChat"/> + <menu_item_check label="Nach Name sortieren" name="SortByName"/> + <menu_item_check label="Nach letzten Sprechern sortieren" name="SortByRecentSpeakers"/> + <menu_item_call label="Profil anzeigen" name="View Profile"/> + <menu_item_call label="Freund hinzufügen" name="Add Friend"/> + <menu_item_call label="IM" name="IM"/> + <menu_item_call label="Anrufen" name="Call"/> + <menu_item_call label="Teilen" name="Share"/> + <menu_item_call label="Zahlen" name="Pay"/> + <menu_item_check label="Voice ignorieren" name="Block/Unblock"/> + <menu_item_check label="Text ignorieren" name="MuteText"/> + <context_menu label="Moderator-Optionen >" name="Moderator Options"> + <menu_item_check label="Text-Chat zulassen" name="AllowTextChat"/> + <menu_item_call label="Diesen Teilnehmer stummschalten" name="ModerateVoiceMuteSelected"/> + <menu_item_call label="Alle anderen stummschalten" name="ModerateVoiceMuteOthers"/> + <menu_item_call label="Stummschaltung für diesen Teilnehmer aufheben" name="ModerateVoiceUnMuteSelected"/> + <menu_item_call label="Stummschaltung für alle anderen aufheben" name="ModerateVoiceUnMuteOthers"/> + </context_menu> </context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_people_groups.xml b/indra/newview/skins/default/xui/de/menu_people_groups.xml new file mode 100644 index 0000000000..87f43d27e6 --- /dev/null +++ b/indra/newview/skins/default/xui/de/menu_people_groups.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_group_plus"> + <menu_item_call label="Ansichts-Info" name="View Info"/> + <menu_item_call label="Chat" name="Chat"/> + <menu_item_call label="Anrufen" name="Call"/> + <menu_item_call label="Aktivieren" name="Activate"/> + <menu_item_call label="Verlassen" name="Leave"/> +</menu> diff --git a/indra/newview/skins/default/xui/de/menu_people_nearby.xml b/indra/newview/skins/default/xui/de/menu_people_nearby.xml index ef58b4136e..9fa5db5fa3 100644 --- a/indra/newview/skins/default/xui/de/menu_people_nearby.xml +++ b/indra/newview/skins/default/xui/de/menu_people_nearby.xml @@ -7,4 +7,5 @@ <menu_item_call label="Teilen" name="Share"/> <menu_item_call label="Zahlen" name="Pay"/> <menu_item_check label="Ignorieren/Freischalten" name="Block/Unblock"/> + <menu_item_call label="Teleport anbieten" name="teleport"/> </context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_profile_overflow.xml b/indra/newview/skins/default/xui/de/menu_profile_overflow.xml index 89b56d1571..f5cedf5464 100644 --- a/indra/newview/skins/default/xui/de/menu_profile_overflow.xml +++ b/indra/newview/skins/default/xui/de/menu_profile_overflow.xml @@ -2,4 +2,8 @@ <toggleable_menu name="profile_overflow_menu"> <menu_item_call label="Zahlen" name="pay"/> <menu_item_call label="Teilen" name="share"/> + <menu_item_call label="Hinauswerfen" name="kick"/> + <menu_item_call label="Einfrieren" name="freeze"/> + <menu_item_call label="Auftauen" name="unfreeze"/> + <menu_item_call label="CSR" name="csr"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/de/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/de/menu_teleport_history_gear.xml index 2bfdadf22a..68b8e21802 100644 --- a/indra/newview/skins/default/xui/de/menu_teleport_history_gear.xml +++ b/indra/newview/skins/default/xui/de/menu_teleport_history_gear.xml @@ -2,5 +2,5 @@ <menu name="Teleport History Gear Context Menu"> <menu_item_call label="Alle Ordner aufklappen" name="Expand all folders"/> <menu_item_call label="Alle Ordner schließen" name="Collapse all folders"/> - <menu_item_call label="Teleport-Verlauf löschen" name="Clear Teleport History"/> + <menu_item_call label="Teleport-Liste löschen" name="Clear Teleport History"/> </menu> diff --git a/indra/newview/skins/default/xui/de/menu_viewer.xml b/indra/newview/skins/default/xui/de/menu_viewer.xml index ee2f1ee7c9..c6bbea285f 100644 --- a/indra/newview/skins/default/xui/de/menu_viewer.xml +++ b/indra/newview/skins/default/xui/de/menu_viewer.xml @@ -9,7 +9,7 @@ <menu_item_call label="Mein Profil" name="Profile"/> <menu_item_call label="Mein Aussehen" name="Appearance"/> <menu_item_check label="Mein Inventar" name="Inventory"/> - <menu_item_call label="Inventar in Seitenleiste anzeigen" name="ShowSidetrayInventory"/> + <menu_item_call label="Inventar auf Seitenleiste anzeigen" name="ShowSidetrayInventory"/> <menu_item_call label="Meine Gesten" name="Gestures"/> <menu label="Mein Status" name="Status"> <menu_item_call label="Abwesend" name="Set Away"/> @@ -23,38 +23,32 @@ <menu_item_call label="Meine Freunde" name="My Friends"/> <menu_item_call label="Meine Gruppen" name="My Groups"/> <menu_item_check label="Lokaler Chat" name="Nearby Chat"/> - <menu_item_call label="Leute in dern Nähe" name="Active Speakers"/> + <menu_item_call label="Leute in der Nähe" name="Active Speakers"/> <menu_item_check label="Medien in der Nähe" name="Nearby Media"/> - <menu_item_check label="(Legacy) Kommunikation" name="Instant Message"/> - <menu_item_call label="(Temp) Mediensteuerung" name="Preferences"/> </menu> <menu label="Welt" name="World"> - <menu_item_check label="Bewegen" name="Movement Controls"/> - <menu_item_check label="Ansicht" name="Camera Controls"/> - <menu_item_call label="Über Land" name="About Land"/> - <menu_item_call label="Region/Grundstück" name="Region/Estate"/> - <menu_item_call label="Land kaufen" name="Buy Land"/> - <menu_item_call label="Mein Land" name="My Land"/> - <menu label="Anzeigen" name="Land"> - <menu_item_check label="Bannlinien" name="Ban Lines"/> - <menu_item_check label="Strahlen" name="beacons"/> - <menu_item_check label="Grundstücksgrenzen" name="Property Lines"/> - <menu_item_check label="Landeigentümer" name="Land Owners"/> - </menu> - <menu label="Landmarken" name="Landmarks"> - <menu_item_call label="Landmarke hier setzen" name="Create Landmark Here"/> - <menu_item_call label="Hier als Zuhause wählen" name="Set Home to Here"/> - </menu> - <menu_item_call label="Startseite" name="Teleport Home"/> <menu_item_check label="Minikarte" name="Mini-Map"/> <menu_item_check label="Weltkarte" name="World Map"/> <menu_item_call label="Foto" name="Take Snapshot"/> + <menu_item_call label="Landmarke für diesen Ort setzen" name="Create Landmark Here"/> + <menu label="Ortsprofil" name="Land"> + <menu_item_call label="Land-Info" name="About Land"/> + <menu_item_call label="Region/Grundstück" name="Region/Estate"/> + </menu> + <menu_item_call label="Dieses Land kaufen" name="Buy Land"/> + <menu_item_call label="Mein Land" name="My Land"/> + <menu label="Anzeigen" name="LandShow"> + <menu_item_check label="Bewegungssteuerung" name="Movement Controls"/> + <menu_item_check label="Ansichtsteuerung" name="Camera Controls"/> + </menu> + <menu_item_call label="Teleport nach Hause" name="Teleport Home"/> + <menu_item_call label="Hier als Zuhause wählen" name="Set Home to Here"/> <menu label="Sonne" name="Environment Settings"> <menu_item_call label="Sonnenaufgang" name="Sunrise"/> <menu_item_call label="Mittag" name="Noon"/> <menu_item_call label="Sonnenuntergang" name="Sunset"/> <menu_item_call label="Mitternacht" name="Midnight"/> - <menu_item_call label="Grundstückszeit verwenden" name="Revert to Region Default"/> + <menu_item_call label="Grundstückszeit" name="Revert to Region Default"/> <menu_item_call label="Umwelt-Editor" name="Environment Editor"/> </menu> </menu> @@ -125,21 +119,20 @@ </menu> <menu label="Hilfe" name="Help"> <menu_item_call label="[SECOND_LIFE]-Hilfe" name="Second Life Help"/> - <menu_item_call label="Tutorial" name="Tutorial"/> <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"/> </menu> <menu label="Erweitert" name="Advanced"> - <menu_item_check label="Nach 30 Min auf Abwesend stellen" name="Go Away/AFK When Idle"/> <menu_item_call label="Animation meines Avatars stoppen" name="Stop Animating My Avatar"/> <menu_item_call label="Textur neu laden" name="Rebake Texture"/> <menu_item_call label="UI-Größe auf Standard setzen" name="Set UI Size to Default"/> + <menu_item_call label="Fenstergröße einstellen..." name="Set Window Size..."/> <menu_item_check label="Auswahldistanz einschränken" name="Limit Select Distance"/> <menu_item_check label="Kamerabeschränkungen deaktivieren" name="Disable Camera Distance"/> <menu_item_check label="Foto (hohe Auflösung)" name="HighResSnapshot"/> <menu_item_check label="Fotos auf Festplatte leise speichern" name="QuietSnapshotsToDisk"/> <menu_item_check label="Fotos auf Festplatte komprimieren" name="CompressSnapshotsToDisk"/> - <menu_item_call label="Textur speichern als" name="Save Texture As"/> <menu label="Performance Tools" name="Performance Tools"> <menu_item_call label="Lag-Anzeige" name="Lag Meter"/> <menu_item_check label="Statistikleiste" name="Statistics Bar"/> @@ -215,7 +208,7 @@ <menu label="Konsolen" name="Consoles"> <menu_item_check label="Textur" name="Texture Console"/> <menu_item_check label="Fehler beseitigen" name="Debug Console"/> - <menu_item_call label="Konsole: Meldungen" name="Notifications"/> + <menu_item_call label="Meldungen" name="Notifications"/> <menu_item_check label="Texturgröße" name="Texture Size"/> <menu_item_check label="Texture-Kategorie" name="Texture Category"/> <menu_item_check label="Schnelle Timer" name="Fast Timers"/> @@ -288,7 +281,7 @@ <menu label="Netzwerk" name="Network"> <menu_item_check label="Agent pausieren" name="AgentPause"/> <menu_item_call label="Meldungsprotokoll aktivieren" name="Enable Message Log"/> - <menu_item_call label="Meldungs-Protokoll deaktivieren" name="Disable Message Log"/> + <menu_item_call label="Meldungsprotokoll deaktivieren" name="Disable Message Log"/> <menu_item_check label="Objektposition laut Geschwindigkeit interpolieren" name="Velocity Interpolate Objects"/> <menu_item_check label="Positionen der interpolierten Objekte anfragen" name="Ping Interpolate Object Positions"/> <menu_item_call label="Ein Paket fallenlassen" name="Drop a Packet"/> @@ -333,7 +326,6 @@ <menu_item_call label="Als XML speichern" name="Save to XML"/> <menu_item_check label="XUI-Namen anzeigen" name="Show XUI Names"/> <menu_item_call label="Test-IMs senden" name="Send Test IMs"/> - <menu_item_call label="Inspektoren testen" name="Test Inspectors"/> </menu> <menu label="Avatar" name="Character"> <menu label="Geladene Textur nehmen" name="Grab Baked Texture"> @@ -366,6 +358,7 @@ <menu_item_call label="Fehler in Avatar-Texturen beseitigen" name="Debug Avatar Textures"/> <menu_item_call label="Lokale Texturen ausgeben" name="Dump Local Textures"/> </menu> + <menu_item_check label="HTTP-Texturen" name="HTTP Textures"/> <menu_item_call label="Bilder komprimieren" name="Compress Images"/> <menu_item_check label="Ausgabe Fehlerbeseitigung ausgeben" name="Output Debug Minidump"/> <menu_item_check label="Bei nächster Ausführung Fenster öffnen" name="Console Window"/> @@ -383,7 +376,7 @@ <menu_item_call label="Asset-ID zulassen" name="Get Assets IDs"/> </menu> <menu label="Parzelle" name="Parcel"> - <menu_item_call label="Besitzer zu mir" name="Owner To Me"/> + <menu_item_call label="Besitzer zu mir zwingen" name="Owner To Me"/> <menu_item_call label="Auf Linden-Inhalt festlegen" name="Set to Linden Content"/> <menu_item_call label="Öffentiches Land in Besitz nehmen" name="Claim Public Land"/> </menu> @@ -410,7 +403,6 @@ <menu_item_call label="Tätowierung" name="Tattoo"/> <menu_item_call label="Alle Kleider" name="All Clothes"/> </menu> - <menu_item_check label="Werkzeugleiste anzeigen" name="Show Toolbar"/> <menu label="Hilfe" name="Help"> <menu_item_call label="Offizielles Linden-Blog" name="Official Linden Blog"/> <menu_item_call label="Scripting-Portal" name="Scripting Portal"/> diff --git a/indra/newview/skins/default/xui/de/mime_types_linux.xml b/indra/newview/skins/default/xui/de/mime_types_linux.xml new file mode 100644 index 0000000000..e4b5c53292 --- /dev/null +++ b/indra/newview/skins/default/xui/de/mime_types_linux.xml @@ -0,0 +1,217 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<mimetypes name="default"> + <widgetset name="web"> + <label name="web_label"> + Webinhalt + </label> + <tooltip name="web_tooltip"> + Dieser Ort verfügt über Webinhalte + </tooltip> + <playtip name="web_playtip"> + Webinhalt anzeigen + </playtip> + </widgetset> + <widgetset name="movie"> + <label name="movie_label"> + Video + </label> + <tooltip name="movie_tooltip"> + Ein Video wurde gefunden. + </tooltip> + <playtip name="movie_playtip"> + Video wiedergeben + </playtip> + </widgetset> + <widgetset name="image"> + <label name="image_label"> + Bild + </label> + <tooltip name="image_tooltip"> + Dieser Ort verfügt über Bildinhalte + </tooltip> + <playtip name="image_playtip"> + Das Bild an diesem Ort anzeigen + </playtip> + </widgetset> + <widgetset name="audio"> + <label name="audio_label"> + Audio + </label> + <tooltip name="audio_tooltip"> + Dieser Ort verfügt über Audioinhalte + </tooltip> + <playtip name="audio_playtip"> + Das Audio dieses Standorts abspielen + </playtip> + </widgetset> + <scheme name="rtsp"> + <label name="rtsp_label"> + Echtzeit-Streaming + </label> + </scheme> + <mimetype name="blank"> + <label name="blank_label"> + - Keine - + </label> + </mimetype> + <mimetype name="none/none"> + <label name="none/none_label"> + - Keine - + </label> + </mimetype> + <mimetype name="audio/*"> + <label name="audio2_label"> + Audio + </label> + </mimetype> + <mimetype name="video/*"> + <label name="video2_label"> + Video + </label> + </mimetype> + <mimetype name="image/*"> + <label name="image2_label"> + Bild + </label> + </mimetype> + <mimetype name="video/vnd.secondlife.qt.legacy"> + <label name="vnd.secondlife.qt.legacy_label"> + Video (QuickTime) + </label> + </mimetype> + <mimetype name="application/javascript"> + <label name="application/javascript_label"> + Javascript + </label> + </mimetype> + <mimetype name="application/ogg"> + <label name="application/ogg_label"> + Ogg Audio/Video + </label> + </mimetype> + <mimetype name="application/pdf"> + <label name="application/pdf_label"> + PDF-Dokument + </label> + </mimetype> + <mimetype name="application/postscript"> + <label name="application/postscript_label"> + Postscript-Dokument + </label> + </mimetype> + <mimetype name="application/rtf"> + <label name="application/rtf_label"> + Rich Text (RTF) + </label> + </mimetype> + <mimetype name="application/smil"> + <label name="application/smil_label"> + Synchronized Multimedia Integration Language (SMIL) + </label> + </mimetype> + <mimetype name="application/xhtml+xml"> + <label name="application/xhtml+xml_label"> + Webseite (XHTML) + </label> + </mimetype> + <mimetype name="application/x-director"> + <label name="application/x-director_label"> + Macromedia Director + </label> + </mimetype> + <mimetype name="audio/mid"> + <label name="audio/mid_label"> + Audio (MIDI) + </label> + </mimetype> + <mimetype name="audio/mpeg"> + <label name="audio/mpeg_label"> + Audio (MP3) + </label> + </mimetype> + <mimetype name="audio/x-aiff"> + <label name="audio/x-aiff_label"> + Audio (AIFF) + </label> + </mimetype> + <mimetype name="audio/x-wav"> + <label name="audio/x-wav_label"> + Audio (WAV) + </label> + </mimetype> + <mimetype name="image/bmp"> + <label name="image/bmp_label"> + Bild (BMP) + </label> + </mimetype> + <mimetype name="image/gif"> + <label name="image/gif_label"> + Bild (GIF) + </label> + </mimetype> + <mimetype name="image/jpeg"> + <label name="image/jpeg_label"> + Bild (JPEG) + </label> + </mimetype> + <mimetype name="image/png"> + <label name="image/png_label"> + Bild (PNG) + </label> + </mimetype> + <mimetype name="image/svg+xml"> + <label name="image/svg+xml_label"> + Bild (SVG) + </label> + </mimetype> + <mimetype name="image/tiff"> + <label name="image/tiff_label"> + Bild (TIFF) + </label> + </mimetype> + <mimetype name="text/html"> + <label name="text/html_label"> + Webseite + </label> + </mimetype> + <mimetype name="text/plain"> + <label name="text/plain_label"> + Text + </label> + </mimetype> + <mimetype name="text/xml"> + <label name="text/xml_label"> + XML + </label> + </mimetype> + <mimetype name="video/mpeg"> + <label name="video/mpeg_label"> + Video (MPEG) + </label> + </mimetype> + <mimetype name="video/mp4"> + <label name="video/mp4_label"> + Video (MP4) + </label> + </mimetype> + <mimetype name="video/quicktime"> + <label name="video/quicktime_label"> + Video (QuickTime) + </label> + </mimetype> + <mimetype name="video/x-ms-asf"> + <label name="video/x-ms-asf_label"> + Video (Windows Media ASF) + </label> + </mimetype> + <mimetype name="video/x-ms-wmv"> + <label name="video/x-ms-wmv_label"> + Video (Windows Media WMV) + </label> + </mimetype> + <mimetype name="video/x-msvideo"> + <label name="video/x-msvideo_label"> + Video (AVI) + </label> + </mimetype> +</mimetypes> diff --git a/indra/newview/skins/default/xui/de/mime_types_mac.xml b/indra/newview/skins/default/xui/de/mime_types_mac.xml new file mode 100644 index 0000000000..e4b5c53292 --- /dev/null +++ b/indra/newview/skins/default/xui/de/mime_types_mac.xml @@ -0,0 +1,217 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<mimetypes name="default"> + <widgetset name="web"> + <label name="web_label"> + Webinhalt + </label> + <tooltip name="web_tooltip"> + Dieser Ort verfügt über Webinhalte + </tooltip> + <playtip name="web_playtip"> + Webinhalt anzeigen + </playtip> + </widgetset> + <widgetset name="movie"> + <label name="movie_label"> + Video + </label> + <tooltip name="movie_tooltip"> + Ein Video wurde gefunden. + </tooltip> + <playtip name="movie_playtip"> + Video wiedergeben + </playtip> + </widgetset> + <widgetset name="image"> + <label name="image_label"> + Bild + </label> + <tooltip name="image_tooltip"> + Dieser Ort verfügt über Bildinhalte + </tooltip> + <playtip name="image_playtip"> + Das Bild an diesem Ort anzeigen + </playtip> + </widgetset> + <widgetset name="audio"> + <label name="audio_label"> + Audio + </label> + <tooltip name="audio_tooltip"> + Dieser Ort verfügt über Audioinhalte + </tooltip> + <playtip name="audio_playtip"> + Das Audio dieses Standorts abspielen + </playtip> + </widgetset> + <scheme name="rtsp"> + <label name="rtsp_label"> + Echtzeit-Streaming + </label> + </scheme> + <mimetype name="blank"> + <label name="blank_label"> + - Keine - + </label> + </mimetype> + <mimetype name="none/none"> + <label name="none/none_label"> + - Keine - + </label> + </mimetype> + <mimetype name="audio/*"> + <label name="audio2_label"> + Audio + </label> + </mimetype> + <mimetype name="video/*"> + <label name="video2_label"> + Video + </label> + </mimetype> + <mimetype name="image/*"> + <label name="image2_label"> + Bild + </label> + </mimetype> + <mimetype name="video/vnd.secondlife.qt.legacy"> + <label name="vnd.secondlife.qt.legacy_label"> + Video (QuickTime) + </label> + </mimetype> + <mimetype name="application/javascript"> + <label name="application/javascript_label"> + Javascript + </label> + </mimetype> + <mimetype name="application/ogg"> + <label name="application/ogg_label"> + Ogg Audio/Video + </label> + </mimetype> + <mimetype name="application/pdf"> + <label name="application/pdf_label"> + PDF-Dokument + </label> + </mimetype> + <mimetype name="application/postscript"> + <label name="application/postscript_label"> + Postscript-Dokument + </label> + </mimetype> + <mimetype name="application/rtf"> + <label name="application/rtf_label"> + Rich Text (RTF) + </label> + </mimetype> + <mimetype name="application/smil"> + <label name="application/smil_label"> + Synchronized Multimedia Integration Language (SMIL) + </label> + </mimetype> + <mimetype name="application/xhtml+xml"> + <label name="application/xhtml+xml_label"> + Webseite (XHTML) + </label> + </mimetype> + <mimetype name="application/x-director"> + <label name="application/x-director_label"> + Macromedia Director + </label> + </mimetype> + <mimetype name="audio/mid"> + <label name="audio/mid_label"> + Audio (MIDI) + </label> + </mimetype> + <mimetype name="audio/mpeg"> + <label name="audio/mpeg_label"> + Audio (MP3) + </label> + </mimetype> + <mimetype name="audio/x-aiff"> + <label name="audio/x-aiff_label"> + Audio (AIFF) + </label> + </mimetype> + <mimetype name="audio/x-wav"> + <label name="audio/x-wav_label"> + Audio (WAV) + </label> + </mimetype> + <mimetype name="image/bmp"> + <label name="image/bmp_label"> + Bild (BMP) + </label> + </mimetype> + <mimetype name="image/gif"> + <label name="image/gif_label"> + Bild (GIF) + </label> + </mimetype> + <mimetype name="image/jpeg"> + <label name="image/jpeg_label"> + Bild (JPEG) + </label> + </mimetype> + <mimetype name="image/png"> + <label name="image/png_label"> + Bild (PNG) + </label> + </mimetype> + <mimetype name="image/svg+xml"> + <label name="image/svg+xml_label"> + Bild (SVG) + </label> + </mimetype> + <mimetype name="image/tiff"> + <label name="image/tiff_label"> + Bild (TIFF) + </label> + </mimetype> + <mimetype name="text/html"> + <label name="text/html_label"> + Webseite + </label> + </mimetype> + <mimetype name="text/plain"> + <label name="text/plain_label"> + Text + </label> + </mimetype> + <mimetype name="text/xml"> + <label name="text/xml_label"> + XML + </label> + </mimetype> + <mimetype name="video/mpeg"> + <label name="video/mpeg_label"> + Video (MPEG) + </label> + </mimetype> + <mimetype name="video/mp4"> + <label name="video/mp4_label"> + Video (MP4) + </label> + </mimetype> + <mimetype name="video/quicktime"> + <label name="video/quicktime_label"> + Video (QuickTime) + </label> + </mimetype> + <mimetype name="video/x-ms-asf"> + <label name="video/x-ms-asf_label"> + Video (Windows Media ASF) + </label> + </mimetype> + <mimetype name="video/x-ms-wmv"> + <label name="video/x-ms-wmv_label"> + Video (Windows Media WMV) + </label> + </mimetype> + <mimetype name="video/x-msvideo"> + <label name="video/x-msvideo_label"> + Video (AVI) + </label> + </mimetype> +</mimetypes> diff --git a/indra/newview/skins/default/xui/de/notifications.xml b/indra/newview/skins/default/xui/de/notifications.xml index 7f5a561f74..d94bbd8564 100644 --- a/indra/newview/skins/default/xui/de/notifications.xml +++ b/indra/newview/skins/default/xui/de/notifications.xml @@ -32,10 +32,10 @@ <button name="No" text="$notext"/> </form> </template> - <notification functor="GenericAcknowledge" label="Unbekannter Warnhinweis" name="MissingAlert"> - Ihre Version von [APP_NAME] kann den gerade empfangenen Warnhinweis nicht anzeigen. Bitte vergewissern Sie sich, dass Sie den aktuellsten Viewer installiert haben. + <notification functor="GenericAcknowledge" label="Unbekannte Meldung" name="MissingAlert"> + Ihre Version von [APP_NAME] kann die gerade empfangene Benachrichtigung nicht anzeigen. Bitte vergewissern Sie sich, dass Sie den aktuellsten Viewer installiert haben. -Fehlerdetails: Der Warnhinweis '[_NAME]' wurde in notifications.xml nicht gefunden. +Fehlerdetails: The notification called '[_NAME]' was not found in notifications.xml. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="FloaterNotFound"> @@ -94,12 +94,12 @@ Wählen Sie ein einzelnes Objekt aus und versuchen Sie es erneut. <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Nicht speichern" yestext="Alles speichern"/> </notification> <notification name="GrantModifyRights"> - Die Gewährung von Änderungsrechten an andere Einwohner ermöglicht es diesen, JEDES BELIEBIGE Objekt zu ändern oder an sich zu nehmen, das Sie in der [SECOND_LIFE]-Welt besitzen. Seien Sie SEHR vorsichtig beim Erteilen dieser Erlaubnis. -Möchten Sie [FIRST_NAME] [LAST_NAME] Änderungsrechte gewähren? + Wenn Sie einem anderen Einwohner, das die Erlaubnis zum Bearbeiten erteilen, dann kann dieser JEDES Objekt, das Sie inworld besitzen, verändern, löschen oder nehmen. Seien Sie SEHR vorsichtig, wenn Sie diese Erlaubnis gewähren! +Möchten Sie [FIRST_NAME] [LAST_NAME] die Erlaubnis zum Bearbeiten gewähren? <usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/> </notification> <notification name="GrantModifyRightsMultiple"> - Die Gewährung von Änderungsrechten an andere Einwohner ermöglicht es diesen, JEDES BELIEBIGE Objekt zu ändern, das Sie in der [SECOND_LIFE]-Welt besitzen. Seien Sie SEHR vorsichtig beim Erteilen dieser Erlaubnis. + Wenn Sie einem anderen Einwohner, die Erlaubnis zum Bearbeiten erteilen, dann kann dieser JEDES Objekt, das Sie inworld besitzen, verändern. Seien Sie SEHR vorsichtig, wenn Sie diese Erlaubnis gewähren! Möchten Sie den ausgewählten Einwohnern Änderungsrechte gewähren? <usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/> </notification> @@ -156,6 +156,11 @@ Der Rolle „[ROLE_NAME]“ diese Fähigkeit zuweisen? Der Rolle „[ROLE_NAME]“ diese Fähigkeit zuweisen? <usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/> </notification> + <notification name="AttachmentDrop"> + Sie möchten Ihren Anhang wirklich fallen lassen? +Möchten Sie fortfahren? + <usetemplate ignoretext="Bestätigen, bevor Anhänge fallen gelassen werden" name="okcancelignore" notext="Nein" yestext="Ja"/> + </notification> <notification name="ClickUnimplemented"> Leider ist diese Funktion noch nicht implementiert. </notification> @@ -253,15 +258,11 @@ Für die gesamte Region ist Schaden aktiviert. Damit Waffen funktionieren, müssen Skripts erlaubt sein. </notification> <notification name="MultipleFacesSelected"> - Momentan sind mehrere Seiten ausgewählt. Wenn Sie fortfahren, werden einzelne Medien auf mehreren Seiten des Objektes dargestellt. Um die Medien auf einer einzigen Seite darzustellen, wählen Sie Textur auswählen und klicken Sie auf die gewünschte Seite. Danach klicken Sie Hinzufügen. + Mehrere Flächen wurden ausgewählt. +Wenn Sie fortfahren werden auf mehrere Flächen des Objekts unterschiedlichen Medien-Instanzen eingefügt. +Um Medien nur auf einer Fläche einzufügen, wählen Sie „Oberfläche auswählen" und klicken Sie auf die gewünschte Fläche des Objektes. Klicken Sie dann auf „Hinzufügen". <usetemplate ignoretext="Die Medien werden auf mehrere ausgewählte Seiten übertragen" name="okcancelignore" notext="Abbrechen" yestext="OK"/> </notification> - <notification name="WhiteListInvalidatesHomeUrl"> - Wenn Sie diesen Eintrag zur Whitelist hinzufügen, dann wird die URL, -die Sie für diese Medien-Instanz festgelegt haben, ungültig. Dies ist nicht zulässig. -Der Eintrag kann nicht zur Whitelist hinzugefügt werden. - <usetemplate name="okbutton" yestext="OK"/> - </notification> <notification name="MustBeInParcel"> Sie müssen auf einer Landparzelle stehen, um ihren Landepunkt festzulegen. </notification> @@ -352,14 +353,6 @@ Sind Sie sicher, dass Sie fortfahren wollen? <notification name="SelectHistoryItemToView"> Wählen Sie ein Element zur Ansicht. </notification> - <notification name="ResetShowNextTimeDialogs"> - Möchten Sie alle Popups wieder aktivieren, die Sie zuvor auf „Nicht mehr anzeigen“ gesetzt haben? - <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> - </notification> - <notification name="SkipShowNextTimeDialogs"> - Möchten Sie alle Popups, die übersprungen werden können, deaktivieren? - <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> - </notification> <notification name="CacheWillClear"> Der Cache wird nach einem Neustart von [APP_NAME] geleert. </notification> @@ -424,7 +417,7 @@ Das Objekt ist möglicherweise außer Reichweite oder wurde gelöscht. </notification> <notification name="StartRegionEmpty"> Sie haben keine Start-Region festgelegt. -Bitte geben Sie den Namen der Region im Feld „Startposition“ ein oder wählen Sie „Mein letzter Standort“ oder „Mein Heimatort“ als Startposition aus. +Bitte geben Sie den Namen der Region im Feld „Startposition“ ein oder wählen Sie „Mein letzter Standort“ oder „Mein Zuhause“ als Startposition aus. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="CouldNotStartStopScript"> @@ -621,6 +614,10 @@ Bitte versuchen Sie es erneut. <notification name="LandmarkCreated"> „[LANDMARK_NAME]“ wurde zum Ordner „[FOLDER_NAME]“ hinzugefügt. </notification> + <notification name="LandmarkAlreadyExists"> + Sie besitzen für diesen Standort bereits eine Landmarke. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="CannotCreateLandmarkNotOwner"> Sie können hier keine Landmarke erstellen, da der Landeigentümer dies verboten hat. </notification> @@ -722,7 +719,8 @@ Keine Parzelle ausgewählt. Eine erzwungene Landübertragung ist nicht möglich, da die Auswahl mehrere Regionen umfasst. Wählen Sie ein kleineres Gebiet und versuchen Sie es erneut. </notification> <notification name="ForceOwnerAuctionWarning"> - Diese Parzelle steht zur Auktion. Eine zwangsweise Eigentumsübertragung beendet die Auktion und verärgert womöglich Einwohner, die bereits ein Gebot abgegeben haben. Eigentumsübertragung erzwingen? + Diese Parzelle steht zur Auktion. Wenn Sie eine Eigentumsübertragung erzwingen, wird die Auktion abgesagt. Wenn die Auktion bereits begonnen hatte, dann werden Sie sich hiermit keine Freunde machen! +Eigentumsübertragung erzwingen? <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> </notification> <notification name="CannotContentifyNothingSelected"> @@ -775,7 +773,7 @@ Wählen Sie eine einzelne Parzelle. Streaming-Medien erfordern eine schnelle Internet-Verbindung. Streaming-Medien abspielen, wenn verfügbar? -(Sie können diese Option später unter „Einstellungen“ > „Audio & Video“ ändern.) +(Sie können diese Option später unter Einstellungen > Datenschutz ändern.) <usetemplate name="okcancelbuttons" notext="Deaktivieren" yestext="Medien wiedergeben"/> </notification> <notification name="CannotDeedLandWaitingForServer"> @@ -1340,6 +1338,10 @@ Chat und Instant Messages werden ausgeblendet. Instant Messages (Sofortnachricht [INVITE] <usetemplate name="okcancelbuttons" notext="Ablehnen" yestext="Beitreten"/> </notification> + <notification name="JoinedTooManyGroups"> + Sie haben die maximale Anzahl an Gruppen erreicht. Bitte verlassen Sie eine Gruppe bevor Sie einer neuen beitreten oder eine neue Gruppe bilden. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="KickUser"> Beim Hinauswerfen dieses Benutzers welche Meldung anzeigen? <form name="form"> @@ -1584,11 +1586,11 @@ Anzeige für [AMOUNT] L$ veröffentlichen? <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> </notification> <notification name="SetClassifiedMature"> - Enthält diese Anzeige Mature-Inhalte? + Enthält diese Anzeige moderate Inhalte? <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Nein" yestext="Ja"/> </notification> <notification name="SetGroupMature"> - Beschäftigt sich diese Gruppe mit Mature-Inhalten? + Beschäftigt sich diese Gruppe mit moderaten Inhalten? <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Nein" yestext="Ja"/> </notification> <notification label="Neustart bestätigen" name="ConfirmRestart"> @@ -1605,7 +1607,9 @@ Anzeige für [AMOUNT] L$ veröffentlichen? </notification> <notification label="Alterseinstufung der Region ändern" name="RegionMaturityChange"> Die Alterseinstufung dieser Region wurde aktualisiert. -Es kann eine Weile dauern, bis sich die Änderung auf die Karte auswirkt. +Es kann eine Weile dauern, bis diese Änderung auf der Karte angezeigt wird. + +Um Regionen der Alterseinstufung „Adult" zu betreten, müssen Einwohner altersüberprüft sein. Dies kann entweder über die Alterverifizierung oder Zahlungsverifizierung geschehen. </notification> <notification label="Falsche Voice-Version" name="VoiceVersionMismatch"> Diese Version von [APP_NAME] ist mit der Voice-Chat-Funktion in dieser Region nicht kompatibel. Damit Voice-Chat funktioniert, müssen Sie [APP_NAME] aktualisieren. @@ -1728,16 +1732,6 @@ Inventarobjekt(e) verschieben? Alle gemeldeten Verstöße werden bearbeitet. Sie können auf der Seite [http://secondlife.com/support/incidentreport.php Verstoßmeldungen] nachverfolgen, welche Verstoßmeldungen bearbeitet wurden. </notification> - <notification name="HelpReportAbuseEmailEO"> - WICHTIG: Diese Meldung wird an den Eigentümer der Region gesendet, in der Sie sich gerade befinden, nicht an Linden Lab. - -Als besonderen Service für Einwohner und Besucher übernimmt der Eigentümer dieser Region die Bearbeitung aller anfallenden Meldungen. Von diesem Standort aus eingereichte Meldungen werden nicht von Linden Lab bearbeitet. - -Der Eigentümer der Region bearbeitet Meldungen auf Grundlage der Richtlinien, die im für diese Region geltenden Grundstücksvertrag festgelegt sind. -(Den Vertrag können Sie unter 'Welt ' > 'Land-Info ' einsehen.) - -Die Klärung des gemeldeten Verstoßes bezieht sich nur auf diese Region. Der Zugang für Einwohner zu anderen Bereichen von [SECOND_LIFE] wird durch das Resultat dieser Meldung nicht beeinträchtigt. Nur Linden Lab kann den Zugang zu [SECOND_LIFE] beschränken. - </notification> <notification name="HelpReportAbuseSelectCategory"> Wählen Sie eine Missbrauchskategorie aus. Die Angabe einer Kategorie hilft uns bei der Bearbeitung des Berichts. @@ -1971,7 +1965,6 @@ Von einer Webseite zu diesem Formular linken, um anderen leichten Zugang zu dies </notification> <notification name="UnableToLoadGesture"> Geste [NAME] konnte nicht geladen werden. -Bitte versuchen Sie es erneut. </notification> <notification name="LandmarkMissing"> Landmarke fehlt in Datenbank. @@ -2073,7 +2066,7 @@ Wählen Sie eine kleinere Landfläche. Einige Begriffe in Ihrer Suchanfrage wurden ausgeschlossen, aufgrund von in den Community Standards definierten Inhaltsbeschränkungen. </notification> <notification name="NoContentToSearch"> - Bitte wählen Sie mindestens eine Inhaltsart für die Suche aus (PG, Mature oder Adult). + Bitte wählen Sie mindestens eine Inhaltsart für die Suche aus (Allgemein, Moderat oder Adult). </notification> <notification name="GroupVote"> [NAME] hat eine Abstimmung vorgeschlagen über: @@ -2086,6 +2079,9 @@ Wählen Sie eine kleinere Landfläche. <notification name="SystemMessage"> [MESSAGE] </notification> + <notification name="PaymentRecived"> + [MESSAGE] + </notification> <notification name="EventNotification"> Event-Benachrichtigung: @@ -2132,8 +2128,7 @@ Bitte installieren Sie das Plugin erneut. Falls weiterhin Problem auftreten, kon Die Objekte von [FIRST] [LAST] auf dieser Parzelle wurden in das Inventar dieser Person transferiert. </notification> <notification name="OtherObjectsReturned2"> - Die Objekte von [FIRST] [LAST] auf dieser -Parzelle von „[NAME]“ wurden an ihren Eigentümer zurückgegeben. + Alle Objekte auf der ausgewählten Parzelle, die Einwohner '[NAME]' gehören, wurden an ihren Eigentümern zurückgegeben. </notification> <notification name="GroupObjectsReturned"> Die mit der Gruppe [GROUPNAME] gemeinsam genutzten Objekte auf dieser Parzelle wurden in das Inventar ihrer Eigentümer transferiert. @@ -2146,7 +2141,6 @@ Nicht transferierbare an die Gruppe übertragene Objekte wurden gelöscht. <notification name="ServerObjectMessage"> Nachricht von [NAME]: [MSG] - <usetemplate name="okcancelbuttons" notext="OK" yestext="Untersuchen"/> </notification> <notification name="NotSafe"> Auf diesem Land ist Schaden aktiviert. @@ -2276,12 +2270,12 @@ Versuchen Sie es in einigen Minuten erneut. </form> </notification> <notification name="UserGiveItem"> - [NAME_SLURL] hat Ihnen folgendes [OBJECTTYPE]: + [NAME_SLURL] hat Ihnen folgendes [OBJECTTYPE] übergeben: [ITEM_SLURL] <form name="form"> - <button name="Keep" text="Behalten"/> <button name="Show" text="Anzeigen"/> <button name="Discard" text="Verwerfen"/> + <button name="Mute" text="Ignorieren"/> </form> </notification> <notification name="GodMessage"> @@ -2306,6 +2300,9 @@ Versuchen Sie es in einigen Minuten erneut. <button name="Cancel" text="Abbrechen"/> </form> </notification> + <notification name="TeleportOfferSent"> + Ein Teleportangebot wurde an [TO_NAME] geschickt + </notification> <notification name="GotoURL"> [MESSAGE] [URL] @@ -2323,8 +2320,12 @@ Versuchen Sie es in einigen Minuten erneut. <form name="form"> <button name="Accept" text="Akzeptieren"/> <button name="Decline" text="Ablehnen"/> + <button name="Send IM" text="IM senden"/> </form> </notification> + <notification name="FriendshipOffered"> + Sie haben [TO_NAME] die Freundschaft angeboten. + </notification> <notification name="OfferFriendshipNoMessage"> [NAME] bietet Ihnen die Freundschaft an. @@ -2341,8 +2342,8 @@ Versuchen Sie es in einigen Minuten erneut. [NAME] hat Ihr Freundschaftsangebot abgelehnt. </notification> <notification name="OfferCallingCard"> - [FIRST] [LAST] bietet Ihnen eine Visitenkarte an. -Dies erstellt ein Lesezeichen in Ihrem Inventar, damit Sie diesen Einwohner jederzeit über IM erreichen. + [FIRST] [LAST] bietet Ihnen ihre/seine Visitenkarte an. +Ihrem Inventar wird ein Lesezeichen erstellt, damit Sie diesem Einwohner einfach eine IM schicken können. <form name="form"> <button name="Accept" text="Akzeptieren"/> <button name="Decline" text="Ablehnen"/> @@ -2422,14 +2423,6 @@ Anfrage gestatten? <button name="Block" text="Ignorieren"/> </form> </notification> - <notification name="FirstBalanceIncrease"> - Sie haben gerade [AMOUNT] L$ erhalten. -Ihr Kontostand wird oben rechts angezeigt. - </notification> - <notification name="FirstBalanceDecrease"> - Sie haben gerade [AMOUNT] L$ bezahlt. -Ihr Kontostand wird oben rechts angezeigt. - </notification> <notification name="BuyLindenDollarSuccess"> Vielen Dank für Ihre Zahlung. @@ -2437,58 +2430,17 @@ Ihr L$-Kontostand wird aktualisiert, sobald die Bearbeitung abgeschlossen ist. F Der Zahlungsstatus kann auf Ihrer [http://secondlife.com/account/ Startseite] unter Transaktionsübersicht überprüft werden. </notification> - <notification name="FirstSit"> - Sie sitzen. -Verwenden Sie die Pfeiltasten (oder AWSD-Tasten), um sich umzusehen. -Um aufzustehen, klicken Sie auf die Schaltfläche „Aufstehen“. - </notification> - <notification name="FirstMap"> - Klicken Sie auf die Karte und bewegen Sie die Maus, um sich auf der Karte umzusehen. -Zum Teleportieren doppelklicken. -Nutzen Sie die Optionen rechts, um Objekte, Einwohner oder Events anzuzeigen und einen anderen Hintergrund auszuwählen. - </notification> - <notification name="FirstBuild"> - Sie haben die Bauwerkzeuge geöffnet. Jedes Objekt, dass Sie sehen wurde mit diesen Werkzeugen gebaut. - </notification> - <notification name="FirstTeleport"> - Sie können nur zu bestimmten Bereichen in dieser Region teleportieren. Der Pfeil deutet zu Ihrem Ziel hin. Klicken Sie auf den Pfeil, um diesen auszublenden. - </notification> <notification name="FirstOverrideKeys"> Ihre Bewegungstasten werden jetzt von einem Objekt gesteuert. Probieren Sie die Pfeil- oder WASD-Tasten aus. Manche Objekte (wie Waffen) müssen per Mouselook gesteuert werden. Drücken Sie dazu „M“. </notification> - <notification name="FirstAppearance"> - Sie bearbeiten gerade Ihr Aussehen. -Verwenden Sie die Pfeiltasten, um sich umzusehen. -Klicken Sie auf „Alles speichern“, wenn Sie fertig sind. - </notification> - <notification name="FirstInventory"> - Dies ist Ihr Inventar. Es enthält Objekte, die Ihnen gehören. - -* Um etwas anzuziehen, ziehen Sie es mit der Maus auf Ihren Avatar. -* Um etwas inworld zu rezzen, ziehen Sie das Objekt auf den Boden. -* Zum Lesen einer Notizkarte klicken Sie sie doppelt an. - </notification> <notification name="FirstSandbox"> Dies ist ein Sandkasten. Hier können Einwohner lernen, wie Objekte gebaut werden. Objekte, die Sie hier bauen, werden gelöscht, nachdem Sie den Sandkasten verlassen. Vergessen Sie nicht, Ihr Werk mit einem Rechtsklick und der Auswahl „Nehmen“ in Ihrem Inventar zu speichern. </notification> - <notification name="FirstFlexible"> - Dieses Objekt ist flexibel. Flexible Objekte müssen die Eigenschaft „Phantom“ haben und dürfen nicht „physisch“ sein. - </notification> - <notification name="FirstDebugMenus"> - Sie haben das Menü „Erweitert“ geöffnet. - -Um dieses Menü zu aktivieren bzw. deaktivieren: - Windows Strg+Alt+D - Mac ⌥⌘D - </notification> - <notification name="FirstSculptedPrim"> - Sie bearbeiten ein geformtes Primitiv. Geformte Primitive benötigen eine spezielle Textur, die ihre Form definiert. - </notification> <notification name="MaxListSelectMessage"> Sie können maximal [MAX_SELECT] Objekte von der Liste auswählen. @@ -2583,12 +2535,23 @@ Klicken Sie auf 'Akzeptieren ', um dem Chat beizutreten, oder auf &a <notification name="UnsupportedCommandSLURL"> Die SLurl, auf die Sie geklickt haben, wird nicht unterstützt. </notification> + <notification name="BlockedSLURL"> + Ein untrusted Browser hat eine SLurl geschickt, diese wurde sicherheitshalber gesperrt. + </notification> + <notification name="ThrottledSLURL"> + Innerhalb kurzer Zeit wurden von einem untrusted Browser mehrere SLurls erhalten. +Diese werden für ein paar Sekunden sicherheitshalber gesperrt. + </notification> <notification name="IMToast"> [MESSAGE] <form name="form"> <button name="respondbutton" text="Antworten"/> </form> </notification> + <notification name="ConfirmCloseAll"> + Möchten Sie wirklich alle IMs schließen? + <usetemplate name="okcancelignore" notext="Abbrechen" yestext="OK"/> + </notification> <notification name="AttachmentSaved"> Der Anhang wurde gespeichert. </notification> @@ -2600,8 +2563,16 @@ Klicken Sie auf 'Akzeptieren ', um dem Chat beizutreten, oder auf &a '[ERROR]' <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="TextChatIsMutedByModerator"> + Sie wurden vom Moderator stummgeschaltet. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="VoiceIsMutedByModerator"> + Sie wurden vom Moderator stummgeschaltet. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="ConfirmClearTeleportHistory"> - Möchten Sie Ihren Teleport-Verlauf löschen? + Möchten Sie Ihre Teleport-Liste löschen? <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> </notification> <notification name="BottomTrayButtonCanNotBeShown"> diff --git a/indra/newview/skins/default/xui/de/panel_active_object_row.xml b/indra/newview/skins/default/xui/de/panel_active_object_row.xml new file mode 100644 index 0000000000..00de705a30 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_active_object_row.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_activeim_row"> + <string name="unknown_obj"> + Unbekanntes Objekt + </string> + <text name="object_name"> + Unbenanntes Objekt + </text> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/de/panel_adhoc_control_panel.xml index 6109d8b0ea..6ad18781f5 100644 --- a/indra/newview/skins/default/xui/de/panel_adhoc_control_panel.xml +++ b/indra/newview/skins/default/xui/de/panel_adhoc_control_panel.xml @@ -1,8 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_im_control_panel"> - <panel name="panel_call_buttons"> - <button label="Anrufen" name="call_btn"/> - <button label="Anruf beenden" name="end_call_btn"/> - <button label="Voice-Steuerung" name="voice_ctrls_btn"/> - </panel> + <layout_stack name="vertical_stack"> + <layout_panel name="call_btn_panel"> + <button label="Anrufen" name="call_btn"/> + </layout_panel> + <layout_panel name="end_call_btn_panel"> + <button label="Anruf beenden" name="end_call_btn"/> + </layout_panel> + <layout_panel name="voice_ctrls_btn_panel"> + <button label="Voice-Steuerung" name="voice_ctrls_btn"/> + </layout_panel> + </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/de/panel_avatar_list_item.xml index ae5c1ec424..0715175dd9 100644 --- a/indra/newview/skins/default/xui/de/panel_avatar_list_item.xml +++ b/indra/newview/skins/default/xui/de/panel_avatar_list_item.xml @@ -23,4 +23,5 @@ </string> <text name="avatar_name" value="Unbekannt"/> <text name="last_interaction" value="0s"/> + <button name="profile_btn" tool_tip="Profil anzeigen"/> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/de/panel_block_list_sidetray.xml index 462009746b..eb4832770e 100644 --- a/indra/newview/skins/default/xui/de/panel_block_list_sidetray.xml +++ b/indra/newview/skins/default/xui/de/panel_block_list_sidetray.xml @@ -4,7 +4,7 @@ Liste der ignorierten Einwohner </text> <scroll_list name="blocked" tool_tip="Liste der zur Zeit ignorierten Einwohner"/> - <button label="Einwohner ignorieren..." label_selected="Einwohner ignorieren..." name="Block resident..." tool_tip="Wählen Sie einen Einwohner, um ihn zu ignorieren"/> - <button label="Objekt nach Name ignorieren..." label_selected="Objekt nach Name ignorieren..." name="Block object by name..." tool_tip="Ein Objekt auswählen, um nach Namen zu ignorieren."/> + <button label="Einwohner ignorieren" label_selected="Einwohner ignorieren..." name="Block resident..." tool_tip="Wählen Sie einen Einwohner, um ihn zu ignorieren"/> + <button label="Objekt nach Name ignorieren" label_selected="Objekt nach Name ignorieren..." name="Block object by name..." tool_tip="Ein Objekt auswählen, um nach Namen zu ignorieren."/> <button label="Freischalten" label_selected="Freischalten" name="Unblock" tool_tip="Einwohner oder Objekt von der Liste der ignorierten Einwohner oder Objekte entfernen"/> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_bottomtray.xml b/indra/newview/skins/default/xui/de/panel_bottomtray.xml index 11dd99a1d4..7a627e32c8 100644 --- a/indra/newview/skins/default/xui/de/panel_bottomtray.xml +++ b/indra/newview/skins/default/xui/de/panel_bottomtray.xml @@ -8,7 +8,7 @@ </string> <layout_stack name="toolbar_stack"> <layout_panel name="gesture_panel"> - <gesture_combo_box label="Gesten" name="Gesture" tool_tip="Gesten anzeigen/ausblenden"/> + <gesture_combo_list label="Gesten" name="Gesture" tool_tip="Gesten anzeigen/ausblenden"/> </layout_panel> <layout_panel name="movement_panel"> <button label="Bewegen" name="movement_btn" tool_tip="Bewegungssteuerung anzeigen/ausblenden"/> @@ -19,5 +19,15 @@ <layout_panel name="snapshot_panel"> <button label="" name="snapshots" tool_tip="Foto machen"/> </layout_panel> + <layout_panel name="im_well_panel"> + <chiclet_im_well name="im_well"> + <button name="Unread IM messages" tool_tip="IMs"/> + </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_edit_classified.xml b/indra/newview/skins/default/xui/de/panel_edit_classified.xml index ca357abda3..a9b5da163f 100644 --- a/indra/newview/skins/default/xui/de/panel_edit_classified.xml +++ b/indra/newview/skins/default/xui/de/panel_edit_classified.xml @@ -24,10 +24,10 @@ <button label="Auf aktuelle Position einstellen" name="set_to_curr_location_btn"/> <combo_box name="content_type"> <combo_item name="mature_ci"> - Mature-Inhalt + Moderater Inhalt </combo_item> <combo_item name="pg_ci"> - PG-Inhalt + Allgemeiner Inhalt </combo_item> </combo_box> <spinner label="L$" name="price_for_listing" tool_tip="Preis für Anzeige." value="50"/> diff --git a/indra/newview/skins/default/xui/de/panel_edit_profile.xml b/indra/newview/skins/default/xui/de/panel_edit_profile.xml index 811ca118d6..f643115dbe 100644 --- a/indra/newview/skins/default/xui/de/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/de/panel_edit_profile.xml @@ -19,6 +19,9 @@ <string name="partner_edit_link_url"> http://www.secondlife.com/account/partners.php?lang=de </string> + <string name="my_account_link_url"> + http://de.secondlife.com/my + </string> <string name="no_partner_text" value="Keiner"/> <scroll_container name="profile_scroll"> <panel name="scroll_content_panel"> @@ -44,7 +47,7 @@ <text name="title_partner_text" value="Mein Partner:"/> <text name="partner_edit_link" value="[[URL] bearbeiten]"/> <panel name="partner_data_panel"> - <text name="partner_text" value="[FIRST] [LAST]"/> + <name_box name="partner_text" value="[FIRST] [LAST]"/> </panel> </panel> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_friends.xml b/indra/newview/skins/default/xui/de/panel_friends.xml index bb2adb36fe..10c5954775 100644 --- a/indra/newview/skins/default/xui/de/panel_friends.xml +++ b/indra/newview/skins/default/xui/de/panel_friends.xml @@ -1,41 +1,31 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="friends"> <string name="Multiple"> - Mehrere Freunde... + Mehrere Freunde </string> - <scroll_list name="friend_list" - tool_tip="Halten Sie die Tasten „Umschalt“ oder „Strg“ gedrückt, um durch Klicken mehrere Freunde auszuwählen."> - <column name="icon_online_status" tool_tip="Online-Status" /> - <column label="Name" name="friend_name" tool_tip="Name" /> - <column name="icon_visible_online" tool_tip="Freund kann sehen, wenn Sie online sind" /> - <column name="icon_visible_map" tool_tip="Freund kann Sie auf der Karte finden" /> - <column name="icon_edit_mine" - tool_tip="Freunde können Objekte bearbeiten, löschen und an sich nehmen" /> - <column name="icon_edit_theirs" - tool_tip="Sie können die Objekte dieses Freunds bearbeiten" /> + <scroll_list name="friend_list" tool_tip="Halten Sie die Tasten „Umschalt“ oder „Strg“ gedrückt, um durch Klicken mehrere Freunde auszuwählen."> + <column name="icon_online_status" tool_tip="Online-Status"/> + <column label="Name" name="friend_name" tool_tip="Name"/> + <column name="icon_visible_online" tool_tip="Freund kann sehen, wenn Sie online sind"/> + <column name="icon_visible_map" tool_tip="Freund kann Sie auf der Karte finden"/> + <column name="icon_edit_mine" tool_tip="Freunde können Objekte bearbeiten, löschen und an sich nehmen"/> + <column name="icon_edit_theirs" tool_tip="Sie können die Objekte dieses Freunds bearbeiten"/> </scroll_list> <panel name="rights_container"> <text name="friend_name_label"> Wählen Sie den/die Freund(e) aus, dessen/deren Rechte Sie ändern möchten... </text> - <check_box label="Kann meinen Online-Status sehen" name="online_status_cb" - tool_tip="Festlegen, ob dieser Freund meinen Online-Status auf seiner Freundesliste oder Visitenkarte einsehen kann" /> - <check_box label="Kann mich auf der Weltkarte sehen" name="map_status_cb" - tool_tip="Festlegen, ob dieser Freund auf seiner Karte meinen Standort sehen kann" /> - <check_box label="Kann meine Objekte verändern" name="modify_status_cb" - tool_tip="Festlegen, ob dieser Freund meine Objekte verändern kann" /> + <check_box label="Kann meinen Online-Status sehen" name="online_status_cb" tool_tip="Festlegen, ob dieser Freund meinen Online-Status auf seiner Freundesliste oder Visitenkarte einsehen kann"/> + <check_box label="Kann mich auf der Weltkarte sehen" name="map_status_cb" tool_tip="Festlegen, ob dieser Freund auf seiner Karte meinen Standort sehen kann"/> + <check_box label="Kann meine Objekte verändern" name="modify_status_cb" tool_tip="Festlegen, ob dieser Freund meine Objekte verändern kann"/> <text name="process_rights_label"> Rechte werden geändert... </text> </panel> - <button label="IM/Anruf" name="im_btn" tool_tip="Beginnt eine Instant Message-Sitzung" /> - <button label="Profil" name="profile_btn" - tool_tip="Bilder, Gruppen und andere Informationen anzeigen" /> - <button label="Teleport" name="offer_teleport_btn" - tool_tip="Bieten Sie diesem Freund einen Teleport an Ihre Position an" /> - <button label="Zahlen" name="pay_btn" tool_tip="Diesem Freund Linden-Dollar (L$) geben" /> - <button label="Entfernen" name="remove_btn" - tool_tip="Diese Person von Ihrer Freundesliste entfernen" /> - <button label="Hinzufügen" name="add_btn" - tool_tip="Bieten Sie einem Einwohner die Freundschaft an" /> + <button label="IM/Anruf" name="im_btn" tool_tip="Beginnt eine Instant Message-Sitzung"/> + <button label="Profil" name="profile_btn" tool_tip="Bilder, Gruppen und andere Informationen anzeigen"/> + <button label="Teleportieren" name="offer_teleport_btn" tool_tip="Bieten Sie diesem Freund einen Teleport an Ihre Position an"/> + <button label="Zahlen" name="pay_btn" tool_tip="Diesem Freund Linden-Dollar (L$) geben"/> + <button label="Entfernen" name="remove_btn" tool_tip="Diese Person von Ihrer Freundesliste entfernen"/> + <button label="Hinzufügen" name="add_btn" tool_tip="Bieten Sie einem Einwohner die Freundschaft an"/> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_group_control_panel.xml b/indra/newview/skins/default/xui/de/panel_group_control_panel.xml index 6a7546457f..9cb72fafff 100644 --- a/indra/newview/skins/default/xui/de/panel_group_control_panel.xml +++ b/indra/newview/skins/default/xui/de/panel_group_control_panel.xml @@ -1,9 +1,17 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_im_control_panel"> - <button label="Gruppeninfo" name="group_info_btn"/> - <panel name="panel_call_buttons"> - <button label="Gruppe anrufen" name="call_btn"/> - <button label="Anruf beenden" name="end_call_btn"/> - <button label="Voice-Steuerung öffnen" name="voice_ctrls_btn"/> - </panel> + <layout_stack name="vertical_stack"> + <layout_panel name="group_info_btn_panel"> + <button label="Gruppenprofil" name="group_info_btn"/> + </layout_panel> + <layout_panel name="call_btn_panel"> + <button label="Gruppe anrufen" name="call_btn"/> + </layout_panel> + <layout_panel name="end_call_btn_panel"> + <button label="Anruf beenden" name="end_call_btn"/> + </layout_panel> + <layout_panel name="voice_ctrls_btn_panel"> + <button label="Voice-Steuerung öffnen" name="voice_ctrls_btn"/> + </layout_panel> + </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_group_general.xml b/indra/newview/skins/default/xui/de/panel_group_general.xml index e6abd4349d..8904193f18 100644 --- a/indra/newview/skins/default/xui/de/panel_group_general.xml +++ b/indra/newview/skins/default/xui/de/panel_group_general.xml @@ -22,16 +22,16 @@ Bewegen Sie die Maus über die Optionen, um weitere Informationen anzuzeigen. Mein Titel </text> <combo_box name="active_title" tool_tip="Legt fest, was im Namensschild Ihres Avatars angezeigt wird, wenn diese Gruppe aktiviert ist."/> - <check_box label="Notizen erhalten" name="receive_notices" tool_tip="Festlegen, ob Sie von dieser Gruppe Mitteilungen erhalten können. Deaktivieren Sie diese Option, wenn Sie von der Gruppe Spam erhalten."/> + <check_box label="Gruppenmitteilungen erhalten" name="receive_notices" tool_tip="Festlegen, ob Sie von dieser Gruppe Mitteilungen erhalten können. Deaktivieren Sie diese Option, wenn Sie von der Gruppe Spam erhalten."/> <check_box label="In meinem Profil anzeigen" name="list_groups_in_profile" tool_tip="Steuert, ob diese Gruppe in Ihrem Profil angezeigt wird"/> <panel name="preferences_container"> <check_box label="Registrierung offen" name="open_enrollement" tool_tip="Festlegen, ob der Gruppenbeitritt ohne Einladung zulässig ist."/> <check_box label="Beitrittsgebühr" name="check_enrollment_fee" tool_tip="Festlegen, ob Neumitglieder eine Beitrittsgebühr zahlen müssen"/> <spinner label="L$" name="spin_enrollment_fee" tool_tip="Wenn Beitrittsgebühr aktiviert ist, müssen neue Mitglieder diesen Betrag zahlen."/> <check_box initial_value="true" label="In Suche anzeigen" name="show_in_group_list" tool_tip="Diese Gruppe in Suchergebnissen anzeigen"/> - <combo_box name="group_mature_check" tool_tip="Festlegen, ob die Informationen Ihrer Gruppe „Moderat“ sind"> - <combo_box.item label="PG-Inhalt" name="pg"/> - <combo_box.item label="Mature-Inhalt" name="mature"/> + <combo_box name="group_mature_check" tool_tip="Legt fest, ob Ihre Gruppeninformation moderate Inhalte enthält"> + <combo_box.item label="Allgemeiner Inhalt" name="pg"/> + <combo_box.item label="Moderater Inhalt" name="mature"/> </combo_box> </panel> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/de/panel_group_info_sidetray.xml index 71a0adcdfb..f70291c922 100644 --- a/indra/newview/skins/default/xui/de/panel_group_info_sidetray.xml +++ b/indra/newview/skins/default/xui/de/panel_group_info_sidetray.xml @@ -31,6 +31,8 @@ </accordion> <panel name="button_row"> <button label="Erstellen" label_selected="Neue Gruppe" name="btn_create"/> + <button label="Gruppen-Chat" name="btn_chat"/> + <button label="Gruppe anrufen" name="btn_call"/> <button label="Speichern" label_selected="Speichern" name="btn_apply"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_group_invite.xml b/indra/newview/skins/default/xui/de/panel_group_invite.xml index 0712722cb3..8e1fb5e4b2 100644 --- a/indra/newview/skins/default/xui/de/panel_group_invite.xml +++ b/indra/newview/skins/default/xui/de/panel_group_invite.xml @@ -7,15 +7,13 @@ (wird geladen...) </panel.string> <panel.string name="already_in_group"> - Einige Avatare sind bereits Mitglied und wurden nicht eingeladen. + Einige der ausgewählten Einwohner sind bereits Gruppenmitglieder und haben aus diesem Grund keine Einladung erhalten. </panel.string> <text name="help_text"> - Sie können mehrere Einwohner in Ihre -Gruppe einladen. Klicken Sie hierzu -auf „Einwohnerliste öffnen“. + Sie können mehrere Einwohner auswählen, um diese in Ihre Gruppe einzuladen. Klicken Sie hierzu auf „Einwohnerliste öffnen“. </text> <button label="Einwohnerliste öffnen" name="add_button" tool_tip=""/> - <name_list name="invitee_list" tool_tip="Halten Sie zur Mehrfachauswahl die Strg-Taste gedrückt und klicken Sie auf die Einwohnernamen."/> + <name_list name="invitee_list" tool_tip="Halten Sie zur Mehrfachauswahl die Strg-Taste gedrückt und klicken Sie auf die Namen."/> <button label="Auswahl aus Liste löschen" name="remove_button" tool_tip="Die oben ausgewählten Einwohner von der Einladungsliste entfernen."/> <text name="role_text"> Wählen Sie eine Rolle aus: diff --git a/indra/newview/skins/default/xui/de/panel_group_list_item.xml b/indra/newview/skins/default/xui/de/panel_group_list_item.xml index 1b37c35ea5..d097a2b18c 100644 --- a/indra/newview/skins/default/xui/de/panel_group_list_item.xml +++ b/indra/newview/skins/default/xui/de/panel_group_list_item.xml @@ -1,4 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="group_list_item"> <text name="group_name" value="Unbekannt"/> + <button name="profile_btn" tool_tip="Profil anzeigen"/> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_group_notices.xml b/indra/newview/skins/default/xui/de/panel_group_notices.xml index 6d0fd9eefb..d2ba40ae2c 100644 --- a/indra/newview/skins/default/xui/de/panel_group_notices.xml +++ b/indra/newview/skins/default/xui/de/panel_group_notices.xml @@ -1,11 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Mitteilungen" name="notices_tab"> <panel.string name="help_text"> - Mit Mitteilungen können Sie eine Nachricht und -Objekte im Anhang versenden. Mitteilungen werden -nur an Mitglieder mit einer entsprechenden Rolle -gesendet. Mitteilungen können unter - 'Allgemein ' ausgeschaltet werden. + Mit Mitteilungen können Sie eine Nachricht und auch einen Anhang versenden. +Mitteilungen werden nur an Gruppenmitglieder verschickt, deren Rolle es zulässt, dass sie Mitteilungen empfangen. +Sie können auf der Registerkarte „Allgemein“ wählen, ob Sie Mitteilungen empfangen möchten. </panel.string> <panel.string name="no_notices_text"> Keine älteren Mitteilungen. @@ -24,7 +22,7 @@ Maximal 200 pro Gruppe täglich Nicht gefunden. </text> <button label="Neue Mitteilung erstellen" label_selected="Neue Mitteilung" name="create_new_notice" tool_tip="Neue Mitteilung erstellen"/> - <button label="Aktualisieren" label_selected="Liste aktualisieren" name="refresh_notices"/> + <button label="Aktualisieren" label_selected="Liste aktualisieren" name="refresh_notices" tool_tip="Mitteilungsliste aktualisieren"/> <panel label="Neue Mitteilung" name="panel_create_new_notice"> <text name="lbl"> Mitteilung schreiben @@ -39,11 +37,11 @@ Maximal 200 pro Gruppe täglich Anhängen: </text> <text name="string"> - Hierhin ziehen, um etwas anzuhängen -- > + Das Objekt hierin ziehen und ablegen, um es anzuhängen: </text> <button label="Entfernen" label_selected="Anhang entfernen" name="remove_attachment"/> <button label="Senden" label_selected="Senden" name="send_notice"/> - <group_drop_target name="drop_target" tool_tip="Drag an inventory item onto the message box to send it with the notice. You must have permission to copy and transfer the object to send it with the notice."/> + <group_drop_target name="drop_target" tool_tip="Ziehen Sie ein Objekt aus Ihrem Inventar auf dieses Feld, um es mit dieser Mitteilung zu versenden. Um das Objekt anhängen zu können, müssen Sie die Erlaubnis zum Kopieren und Übertragen besitzen."/> </panel> <panel label="Ältere Notiz anzeigen" name="panel_view_past_notice"> <text name="lbl"> diff --git a/indra/newview/skins/default/xui/de/panel_im_control_panel.xml b/indra/newview/skins/default/xui/de/panel_im_control_panel.xml index d91c7c0dcf..8132f769cb 100644 --- a/indra/newview/skins/default/xui/de/panel_im_control_panel.xml +++ b/indra/newview/skins/default/xui/de/panel_im_control_panel.xml @@ -1,13 +1,27 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_im_control_panel"> <text name="avatar_name" value="Unbekannt"/> - <button label="Profil" name="view_profile_btn"/> - <button label="Freund hinzufügen" name="add_friend_btn"/> - <button label="Teleportieren" name="teleport_btn"/> - <button label="Teilen" name="share_btn"/> - <panel name="panel_call_buttons"> - <button label="Anrufen" name="call_btn"/> - <button label="Anruf beenden" name="end_call_btn"/> - <button label="Voice-Steuerung" name="voice_ctrls_btn"/> - </panel> + <layout_stack name="button_stack"> + <layout_panel name="view_profile_btn_panel"> + <button label="Profil" name="view_profile_btn"/> + </layout_panel> + <layout_panel name="add_friend_btn_panel"> + <button label="Freund hinzufügen" name="add_friend_btn"/> + </layout_panel> + <layout_panel name="teleport_btn_panel"> + <button label="Teleportieren" name="teleport_btn"/> + </layout_panel> + <layout_panel name="share_btn_panel"> + <button label="Teilen" name="share_btn"/> + </layout_panel> + <layout_panel name="call_btn_panel"> + <button label="Anrufen" name="call_btn"/> + </layout_panel> + <layout_panel name="end_call_btn_panel"> + <button label="Anruf beenden" name="end_call_btn"/> + </layout_panel> + <layout_panel name="voice_ctrls_btn_panel"> + <button label="Voice-Steuerung" name="voice_ctrls_btn"/> + </layout_panel> + </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_landmark_info.xml b/indra/newview/skins/default/xui/de/panel_landmark_info.xml index 1a68c9b351..9cef7b6d35 100644 --- a/indra/newview/skins/default/xui/de/panel_landmark_info.xml +++ b/indra/newview/skins/default/xui/de/panel_landmark_info.xml @@ -21,6 +21,7 @@ <string name="icon_PG" value="parcel_drk_PG"/> <string name="icon_M" value="parcel_drk_M"/> <string name="icon_R" value="parcel_drk_R"/> + <button name="back_btn" tool_tip="Hinten"/> <text name="title" value="Ortsprofil"/> <scroll_container name="place_scroll"> <panel name="scrolling_panel"> diff --git a/indra/newview/skins/default/xui/de/panel_login.xml b/indra/newview/skins/default/xui/de/panel_login.xml index 62973be4cb..bd82fc6872 100644 --- a/indra/newview/skins/default/xui/de/panel_login.xml +++ b/indra/newview/skins/default/xui/de/panel_login.xml @@ -6,36 +6,40 @@ <panel.string name="forgot_password_url"> http://secondlife.com/account/request.php?lang=de </panel.string> - <panel name="login_widgets"> - <text name="first_name_text"> - Vorname: - </text> - <line_editor name="first_name_edit" tool_tip="[SECOND_LIFE] Vorname"/> - <text name="last_name_text"> - Nachname: - </text> - <line_editor name="last_name_edit" tool_tip="[SECOND_LIFE] Nachname"/> - <text name="password_text"> - Kennwort: - </text> - <button label="Login" label_selected="Login" name="connect_btn"/> - <text name="start_location_text"> - Startposition: - </text> - <combo_box name="start_location_combo"> - <combo_box.item label="Mein letzter Standort" name="MyLastLocation"/> - <combo_box.item label="Mein Zuhause" name="MyHome"/> - <combo_box.item label="<Region eingeben>" name="Typeregionname"/> - </combo_box> - <check_box label="Kennwort merken" name="remember_check"/> - <text name="create_new_account_text"> - Neues Konto erstellen - </text> - <text name="forgot_password_text"> - Namen oder Kennwort vergessen? - </text> - <text name="channel_text"> - [VERSION] - </text> - </panel> + <layout_stack name="login_widgets"> + <layout_panel name="login"> + <text name="first_name_text"> + Vorname: + </text> + <line_editor label="Vorname" name="first_name_edit" tool_tip="[SECOND_LIFE] Vorname"/> + <text name="last_name_text"> + Nachname: + </text> + <line_editor label="Nachname" name="last_name_edit" tool_tip="[SECOND_LIFE] Nachname"/> + <text name="password_text"> + Kennwort: + </text> + <check_box label="Kennwort merken" name="remember_check"/> + <text name="start_location_text"> + Hier anfangen: + </text> + <combo_box name="start_location_combo"> + <combo_box.item label="Mein letzter Standort" name="MyLastLocation"/> + <combo_box.item label="Mein Zuhause" name="MyHome"/> + <combo_box.item label="<Region eingeben>" name="Typeregionname"/> + </combo_box> + <button label="Anmelden" name="connect_btn"/> + </layout_panel> + <layout_panel name="links"> + <text name="create_new_account_text"> + Registrieren + </text> + <text name="forgot_password_text"> + Namen oder Kennwort vergessen? + </text> + <text name="login_help"> + Sie brauchen Hilfe? + </text> + </layout_panel> + </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_main_inventory.xml b/indra/newview/skins/default/xui/de/panel_main_inventory.xml index 3d1b89ff40..aa0b43b550 100644 --- a/indra/newview/skins/default/xui/de/panel_main_inventory.xml +++ b/indra/newview/skins/default/xui/de/panel_main_inventory.xml @@ -3,10 +3,10 @@ <panel.string name="Title"> Sonstiges </panel.string> - <filter_editor label="Filter" name="inventory search editor"/> + <filter_editor label="Inventar filtern" name="inventory search editor"/> <tab_container name="inventory filter tabs"> - <inventory_panel label="Alle Objekte" name="All Items"/> - <inventory_panel label="Letzte Objekte" name="Recent Items"/> + <inventory_panel label="MEIN INVENTAR" name="All Items"/> + <inventory_panel label="AKTUELL" name="Recent Items"/> </tab_container> <panel name="bottom_panel"> <button name="options_gear_btn" tool_tip="Zusätzliche Optionen anzeigen"/> @@ -29,10 +29,10 @@ <menu_item_call label="Papierkorb ausleeren" name="Empty Trash"/> <menu_item_call label="Fundstücke ausleeren" name="Empty Lost And Found"/> </menu> - <menu label="Bauen" name="Create"> + <menu label="Erstellen" name="Create"> <menu_item_call label="Neuer Ordner" name="New Folder"/> <menu_item_call label="Neues Skript" name="New Script"/> - <menu_item_call label="Neue Notiz" name="New Note"/> + <menu_item_call label="Neue Notizkarte" name="New Note"/> <menu_item_call label="Neue Geste" name="New Gesture"/> <menu label="Neue Kleider" name="New Clothes"> <menu_item_call label="Neues Hemd" name="New Shirt"/> diff --git a/indra/newview/skins/default/xui/de/panel_media_settings_general.xml b/indra/newview/skins/default/xui/de/panel_media_settings_general.xml index b657333439..75c9057571 100644 --- a/indra/newview/skins/default/xui/de/panel_media_settings_general.xml +++ b/indra/newview/skins/default/xui/de/panel_media_settings_general.xml @@ -1,19 +1,19 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Allgemein" name="Media Settings General"> <text name="home_label"> - Home-URL: + Homepage: </text> <text name="home_fails_whitelist_label"> - (Diese URL befindet sich nicht auf der festgelegten Whitelist) + (Diese Seite wird von der angegebenen Whiteliste nicht zugelassen) </text> - <line_editor name="home_url" tool_tip="Die Home-URL für diese Medienquelle"/> + <line_editor name="home_url" tool_tip="Die Start-URL für diese Medienquelle"/> <text name="preview_label"> Vorschau </text> <text name="current_url_label"> - Derzeitige URL: + Aktuelle Seite: </text> - <text name="current_url" tool_tip="Die derzeitige URL für diese Medienquelle" value=""/> + <text name="current_url" tool_tip="Die aktuelle Seite für diese Medienquelle" value=""/> <button label="Zurücksetzen" name="current_url_reset_btn"/> <check_box initial_value="false" label="Automatisch wiederholen" name="auto_loop"/> <check_box initial_value="false" label="Interaktion beim ersten Anklicken" name="first_click_interact"/> diff --git a/indra/newview/skins/default/xui/de/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/de/panel_media_settings_permissions.xml index 603fb67fd2..7ee0074a3b 100644 --- a/indra/newview/skins/default/xui/de/panel_media_settings_permissions.xml +++ b/indra/newview/skins/default/xui/de/panel_media_settings_permissions.xml @@ -1,9 +1,20 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Steuerung" name="Media settings for controls"> - <check_box initial_value="false" label="Navigation & Interaktivität deaktivieren" name="perms_owner_interact"/> - <check_box initial_value="false" label="Kontrollleiste verstecken" name="perms_owner_control"/> - <check_box initial_value="false" label="Navigation & Interaktivität deaktivieren" name="perms_group_interact"/> - <check_box initial_value="false" label="Kontrollleiste verstecken" name="perms_group_control"/> - <check_box initial_value="false" label="Navigation & Interaktivität deaktivieren" name="perms_anyone_interact"/> - <check_box initial_value="false" label="Kontrollleiste verstecken" name="perms_anyone_control"/> +<panel label="Anpassen" name="Media settings for controls"> + <text name="controls_label"> + Steuerung: + </text> + <combo_box name="controls"> + <combo_item name="Standard"> + Standard + </combo_item> + <combo_item name="Mini"> + Mini + </combo_item> + </combo_box> + <check_box initial_value="false" label="Naviation & Interaktion zulassen" name="perms_owner_interact"/> + <check_box initial_value="false" label="Steuerungsleiste anzeigen" name="perms_owner_control"/> + <check_box initial_value="false" label="Naviation & Interaktion zulassen" name="perms_group_interact"/> + <check_box initial_value="false" label="Steuerungsleiste anzeigen" name="perms_group_control"/> + <check_box initial_value="false" label="Naviation & Interaktion zulassen" name="perms_anyone_interact"/> + <check_box initial_value="false" label="Steuerungsleiste anzeigen" name="perms_anyone_control"/> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_media_settings_security.xml b/indra/newview/skins/default/xui/de/panel_media_settings_security.xml index d94d8b9375..8ff013f66b 100644 --- a/indra/newview/skins/default/xui/de/panel_media_settings_security.xml +++ b/indra/newview/skins/default/xui/de/panel_media_settings_security.xml @@ -1,12 +1,12 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Sicherheit" name="Media Settings Security"> - <check_box initial_value="false" label="Zugang nur für bestimmte URLs ermöglichen (mittels Präfix)" name="whitelist_enable"/> + <check_box initial_value="false" label="Nur Zugriff auf festgelegte URL-Muster zulassen" name="whitelist_enable"/> <text name="home_url_fails_some_items_in_whitelist"> - Einträge, die auf ungültige Home-URLs hinweisen, sind markiert: + Einträge, die für die Startseite nicht akzeptiert werden, sind markiert: </text> <button label="Hinzufügen" name="whitelist_add"/> <button label="Löschen" name="whitelist_del"/> <text name="home_url_fails_whitelist"> - Warnung: Die Home-URL, die in der Registerkarte "Allgemein" angegeben wurde, entspricht nicht den Einträgen auf der Whitelist. Sie wurde deaktiviert, bis ein gültiger Eintrag angegeben wird. + Achtung: Die auf der Registerkarte Allgemein festgelegte Startseite wird von der Whitelist nicht akzeptiert. Sie wurde deaktiviert bis ein gültiger Eintrag hinzugefügt wurde. </text> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_my_profile.xml b/indra/newview/skins/default/xui/de/panel_my_profile.xml index 8357e4318d..618ed88846 100644 --- a/indra/newview/skins/default/xui/de/panel_my_profile.xml +++ b/indra/newview/skins/default/xui/de/panel_my_profile.xml @@ -4,52 +4,44 @@ [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION] </string> + <string name="payment_update_link_url"> + http://www.secondlife.com/account/billing.php?lang=de-DE + </string> + <string name="partner_edit_link_url"> + http://www.secondlife.com/account/partners.php?lang=de + </string> + <string name="my_account_link_url" value="http://secondlife.com/my/account/index.php?lang=de-DE"/> <string name="no_partner_text" value="Keiner"/> + <string name="no_group_text" value="Keiner"/> <string name="RegisterDateFormat"> [REG_DATE] ([AGE]) </string> - <scroll_container name="profile_scroll"> - <panel name="scroll_content_panel"> - <panel name="second_life_image_panel"> - <icon label="" name="2nd_life_edit_icon" tool_tip="Klicken Sie unten auf die Schaltfläche Profil bearbeiten, um das Bild zu ändern."/> - <text name="title_sl_descr_text" value="[SECOND_LIFE]:"/> - <expandable_text name="sl_description_edit"> - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. - </expandable_text> - </panel> - <panel name="first_life_image_panel"> - <icon label="" name="real_world_edit_icon" tool_tip="Klicken Sie unten auf die Schaltfläche Profil bearbeiten, um das Bild zu ändern."/> - <text name="title_rw_descr_text" value="Echtes Leben:"/> - <expandable_text name="fl_description_edit"> - Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. - </expandable_text> - </panel> - <text name="me_homepage_text"> - Webseite: - </text> - <text name="title_member_text" value="Mitglied seit:"/> - <text name="register_date" value="05/31/1976"/> - <text name="title_acc_status_text" value="Kontostatus:"/> - <text name="acc_status_text" value="Einwohner. Keine Zahlungsinfo archiviert."/> - <text name="title_partner_text" value="Partner:"/> - <panel name="partner_data_panel"> - <text name="partner_text" value="[FIRST] [LAST]"/> - </panel> - <text name="title_groups_text" value="Gruppen:"/> - <expandable_text name="sl_groups"> - Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. - </expandable_text> - </panel> - </scroll_container> - <panel name="profile_buttons_panel"> - <button label="Freund hinzufügen" name="add_friend"/> - <button label="IM" name="im"/> - <button label="Anrufen" name="call"/> - <button label="Karte" name="show_on_map_btn"/> - <button label="Teleportieren" name="teleport"/> - </panel> - <panel name="profile_me_buttons_panel"> - <button label="Profil bearbeiten" name="edit_profile_btn"/> - <button label="Aussehen bearbeiten" name="edit_appearance_btn"/> - </panel> + <layout_stack name="layout"> + <layout_panel name="profile_stack"> + <scroll_container name="profile_scroll"> + <panel name="scroll_content_panel"> + <panel name="second_life_image_panel"> + <icon label="" name="2nd_life_edit_icon" tool_tip="Klicken Sie unten auf die Schaltfläche Profil bearbeiten, um das Bild zu ändern."/> + <text name="title_sl_descr_text" value="[SECOND_LIFE]:"/> + </panel> + <panel name="first_life_image_panel"> + <icon label="" name="real_world_edit_icon" tool_tip="Klicken Sie unten auf die Schaltfläche Profil bearbeiten, um das Bild zu ändern."/> + <text name="title_rw_descr_text" value="Echtes Leben:"/> + </panel> + <text name="title_member_text" value="Einwohner seit:"/> + <text name="title_acc_status_text" value="Kontostatus:"/> + <text name="acc_status_text"> + Einwohner. Keine Zahlungsinfo archiviert. + Linden. + </text> + <text name="title_partner_text" value="Partner:"/> + <text name="title_groups_text" value="Gruppen:"/> + </panel> + </scroll_container> + </layout_panel> + <layout_panel name="profile_me_buttons_panel"> + <button label="Profil bearbeiten" name="edit_profile_btn" tool_tip="Ihre persönlichen Informationen bearbeiten"/> + <button label="Aussehen bearbeiten" name="edit_appearance_btn" tool_tip="Ihr Aussehen bearbeiten: Körpermaße, Bekleidung, usw."/> + </layout_panel> + </layout_stack> </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 5bf78be3d3..ab59c207bf 100644 --- a/indra/newview/skins/default/xui/de/panel_navigation_bar.xml +++ b/indra/newview/skins/default/xui/de/panel_navigation_bar.xml @@ -10,6 +10,6 @@ </search_combo_box> </panel> <favorites_bar name="favorite"> - <chevron_button name=">>" tool_tip="Zeige weitere meiner Favoriten an"/> + <chevron_button name=">>" tool_tip="Mehr meiner Favoriten anzeigen"/> </favorites_bar> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_notes.xml b/indra/newview/skins/default/xui/de/panel_notes.xml index 994c02935c..e6a63fc0c8 100644 --- a/indra/newview/skins/default/xui/de/panel_notes.xml +++ b/indra/newview/skins/default/xui/de/panel_notes.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Notizen & Privatsphäre" name="panel_notes"> <layout_stack name="layout"> - <panel name="notes_stack"> + <layout_panel name="notes_stack"> <scroll_container name="profile_scroll"> <panel name="profile_scroll_panel"> <text name="status_message" value="Meine Notizen:"/> @@ -11,13 +11,13 @@ <check_box label="meine Objekte bearbeiten, löschen oder nehmen." name="objects_check"/> </panel> </scroll_container> - </panel> - <panel name="notes_buttons_panel"> - <button label="Hinzufügen" name="add_friend"/> - <button label="IM" name="im"/> - <button label="Anrufen" name="call"/> - <button label="Karte" name="show_on_map_btn"/> - <button label="Teleportieren" name="teleport"/> - </panel> + </layout_panel> + <layout_panel name="notes_buttons_panel"> + <button label="Freund hinzufügen" name="add_friend" tool_tip="Bieten Sie dem Einwohner die Freundschaft an"/> + <button label="IM" name="im" tool_tip="Instant Messenger öffnen"/> + <button label="Anrufen" name="call" tool_tip="Diesen Einwohner anrufen"/> + <button label="Karte" name="show_on_map_btn" tool_tip="Einwohner auf Karte anzeigen"/> + <button label="Teleportieren" name="teleport" tool_tip="Teleport anbieten"/> + </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/de/panel_outfits_inventory.xml index da871cad47..8d2dd84512 100644 --- a/indra/newview/skins/default/xui/de/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/de/panel_outfits_inventory.xml @@ -1,13 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="Outfits"> - <accordion name="outfits_accordion"> - <accordion_tab name="tab_outfits" title="Outfit-Leiste"/> - <accordion_tab name="tab_cof" title="Aktuelles Outfit"/> - </accordion> - <button label=">" name="selector" tool_tip="Outfit-Eigenschaften anzeigen"/> +<panel label="Sonstiges" name="Outfits"> + <tab_container name="appearance_tabs"> + <inventory_panel label="MEINE OUTFITS" name="outfitslist_tab"/> + <inventory_panel label="AKTUELLES OUTFIT" name="cof_accordionpanel"/> + </tab_container> <panel name="bottom_panel"> <button name="options_gear_btn" tool_tip="Zusätzliche Optionen anzeigen"/> - <button name="add_btn" tool_tip="Neues Objekt hinzufügen"/> <dnd_button name="trash_btn" tool_tip="Auswahl löschen"/> + <button label="Outfit speichern" name="make_outfit_btn" tool_tip="Aussehen als Outfit speichern"/> + <button label="Anziehen" name="wear_btn" tool_tip="Ausgewähltes Outfit tragen"/> + <button label="M" name="look_edit_btn"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/de/panel_outfits_inventory_gear_default.xml index ec4d109acd..ad0e039070 100644 --- a/indra/newview/skins/default/xui/de/panel_outfits_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/de/panel_outfits_inventory_gear_default.xml @@ -1,6 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="menu_gear_default"> - <menu_item_call label="Neues Outfit" name="new"/> - <menu_item_call label="Outfit anziehen" name="wear"/> + <menu_item_call label="Aktuelles Outfit ersetzen" name="wear"/> + <menu_item_call label="Vom aktuellen Outfit entfernen" name="remove"/> + <menu_item_call label="Umbenennen" name="rename"/> + <menu_item_call label="Link entfernen" name="remove_link"/> <menu_item_call label="Outfit löschen" name="delete"/> </menu> diff --git a/indra/newview/skins/default/xui/de/panel_people.xml b/indra/newview/skins/default/xui/de/panel_people.xml index 3e99272833..91a17e127a 100644 --- a/indra/newview/skins/default/xui/de/panel_people.xml +++ b/indra/newview/skins/default/xui/de/panel_people.xml @@ -49,5 +49,6 @@ <button label="Teleportieren" name="teleport_btn" tool_tip="Teleport anbieten"/> <button label="Gruppenprofil" name="group_info_btn" tool_tip="Gruppeninformationen anzeigen"/> <button label="Gruppen-Chat" name="chat_btn" tool_tip="Chat öffnen"/> + <button label="Gruppe anrufen" name="group_call_btn" tool_tip="Diese Gruppe anrufen"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_picks.xml b/indra/newview/skins/default/xui/de/panel_picks.xml index a1588e5930..a07bc170f6 100644 --- a/indra/newview/skins/default/xui/de/panel_picks.xml +++ b/indra/newview/skins/default/xui/de/panel_picks.xml @@ -2,20 +2,16 @@ <panel label="Auswahl" name="panel_picks"> <string name="no_picks" value="Keine Auswahl"/> <string name="no_classifieds" value="Keine Anzeigen"/> - <text name="empty_picks_panel_text"> - Es wurde keine Auswahl getroffen/keine Anzeigen ausgewählt - </text> <accordion name="accordion"> <accordion_tab name="tab_picks" title="Auswahl"/> <accordion_tab name="tab_classifieds" title="Anzeigen"/> </accordion> <panel label="bottom_panel" name="edit_panel"> - <button name="new_btn" tool_tip="Aktuellen Standort zur Auswahl hinzufügen"/> + <button name="new_btn" tool_tip="An aktuellem Standort neue Auswahl oder Anzeige erstellen"/> </panel> <panel name="buttons_cucks"> - <button label="Info" name="info_btn"/> - <button label="Teleportieren" name="teleport_btn"/> - <button label="Karte" name="show_on_map_btn"/> - <button label="▼" name="overflow_btn"/> + <button label="Info" name="info_btn" tool_tip="Auswahl-Information anzeigen"/> + <button label="Teleportieren" name="teleport_btn" tool_tip="Zu entsprechendem Standort teleportieren"/> + <button label="Karte" name="show_on_map_btn" tool_tip="Den entsprechenden Standort auf der Karte anzeigen"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_place_profile.xml b/indra/newview/skins/default/xui/de/panel_place_profile.xml index e012acac8d..94a43833bf 100644 --- a/indra/newview/skins/default/xui/de/panel_place_profile.xml +++ b/indra/newview/skins/default/xui/de/panel_place_profile.xml @@ -6,7 +6,7 @@ <string name="available" value="verfügbar"/> <string name="allocated" value="vergeben"/> <string name="title_place" value="Ortsprofil"/> - <string name="title_teleport_history" value="Teleport-Verlauf"/> + <string name="title_teleport_history" value="Speicherort der Teleport-Liste"/> <string name="not_available" value="k.A."/> <string name="unknown" value="(unbekannt)"/> <string name="public" value="(öffentlich)"/> @@ -56,6 +56,7 @@ <string name="icon_ScriptsNo" value="parcel_drk_ScriptsNo"/> <string name="icon_Damage" value="parcel_drk_Damage"/> <string name="icon_DamageNo" value="parcel_drk_DamageNo"/> + <button name="back_btn" tool_tip="Hinten"/> <text name="title" value="Ortsprofil"/> <scroll_container name="place_scroll"> <panel name="scrolling_panel"> diff --git a/indra/newview/skins/default/xui/de/panel_places.xml b/indra/newview/skins/default/xui/de/panel_places.xml index a2f98bf199..8ee26f4e5f 100644 --- a/indra/newview/skins/default/xui/de/panel_places.xml +++ b/indra/newview/skins/default/xui/de/panel_places.xml @@ -1,12 +1,13 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Orte" name="places panel"> <string name="landmarks_tab_title" value="MEINE LANDMARKEN"/> - <string name="teleport_history_tab_title" value="TELEPORT-VERLAUF"/> - <filter_editor label="Filter" name="Filter"/> + <string name="teleport_history_tab_title" value="TELEPORT-LISTE"/> + <filter_editor label="Orte filtern" name="Filter"/> <panel name="button_panel"> - <button label="Teleportieren" name="teleport_btn"/> + <button label="Teleportieren" name="teleport_btn" tool_tip="Zu ausgewähltem Standort teleportieren"/> <button label="Karte" name="map_btn"/> - <button label="Bearbeiten" name="edit_btn"/> + <button label="Bearbeiten" name="edit_btn" tool_tip="Landmarken-Info bearbeiten"/> + <button name="overflow_btn" tool_tip="Zusätzliche Optionen anzeigen"/> <button label="Schließen" name="close_btn"/> <button label="Abbrechen" name="cancel_btn"/> <button label="Speichern" name="save_btn"/> diff --git a/indra/newview/skins/default/xui/de/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/de/panel_preferences_alerts.xml index 3e00c39289..def5fb3b1b 100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_alerts.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_alerts.xml @@ -9,6 +9,6 @@ Diese Warnhinweise immer anzeigen: </text> <text name="dont_show_label"> - Diese Warnhinweise immer anzeigen: + Diese Benachrichtungen nie anzeigen: </text> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_preferences_chat.xml b/indra/newview/skins/default/xui/de/panel_preferences_chat.xml index d51675e150..cc0a09c06c 100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_chat.xml @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Text-Chat" name="chat"> <radio_group name="chat_font_size"> - <radio_item label="Klein" name="radio"/> - <radio_item label="Mittel" name="radio2"/> - <radio_item label="Groß" name="radio3"/> + <radio_item label="Klein" name="radio" value="0"/> + <radio_item label="Mittel" name="radio2" value="1"/> + <radio_item label="Groß" name="radio3" value="2"/> </radio_group> <color_swatch label="Sie" name="user"/> <text name="text_box1"> @@ -40,4 +40,8 @@ <check_box initial_value="true" label="Beim Chatten Tippanimation abspielen" name="play_typing_animation"/> <check_box label="IMs per Email zuschicken, wenn ich offline bin" name="send_im_to_email"/> <check_box label="Text-Chatverlauf aktivieren" name="plain_text_chat_history"/> + <radio_group name="chat_window" tool_tip="Zeigen sie Ihre Sofortnachrichten (Instant Messages) in einem anderen Fenster oder in einem einzigen Fenster mit viele Registerkarten an (Neustart erforderlich)."> + <radio_item label="Mehrere Fenster" name="radio" value="0"/> + <radio_item label="Ein Fenster" name="radio2" value="1"/> + </radio_group> </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 5bbd579ff6..490b0b296b 100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_general.xml @@ -15,7 +15,6 @@ <combo_box.item label="Polski (Polnisch) - Beta" name="Polish"/> <combo_box.item label="Português (Portugiesisch) - Beta" name="Portugese"/> <combo_box.item label="日本語 (Japanisch) - Beta" name="(Japanese)"/> - <combo_box.item label="Testsprache" name="TestLanguage"/> </combo_box> <text name="language_textbox2"> (Erfordert Neustart) @@ -25,8 +24,8 @@ </text> <text name="maturity_desired_textbox"/> <combo_box name="maturity_desired_combobox"> - <combo_box.item label="PG, Mature und Adult" name="Desired_Adult"/> - <combo_box.item label="PG und Mature" name="Desired_Mature"/> + <combo_box.item label="Allgemein, Moderat, Adult" name="Desired_Adult"/> + <combo_box.item label="Allgemein und Moderat" name="Desired_Mature"/> <combo_box.item label="Allgemein" name="Desired_PG"/> </combo_box> <text name="start_location_textbox"> @@ -41,9 +40,9 @@ Avatarnamen: </text> <radio_group name="Name_Tag_Preference"> - <radio_item label="Aus" name="radio"/> - <radio_item label="An" name="radio2"/> - <radio_item label="Vorübergehend anzeigen" name="radio3"/> + <radio_item label="Aus" name="radio" value="0"/> + <radio_item label="An" name="radio2" value="1"/> + <radio_item label="Vorübergehend anzeigen" name="radio3" value="2"/> </radio_group> <check_box label="Meinen Namen anzeigen" name="show_my_name_checkbox1"/> <check_box initial_value="true" label="Kleine Avatarnamen" name="small_avatar_names_checkbox"/> @@ -51,14 +50,17 @@ <text name="effects_color_textbox"> Meine Effekte: </text> - <color_swatch label="" name="effect_color_swatch" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/> <text name="title_afk_text"> Zeit bis zur Abwesenheit: </text> - <spinner label="" name="afk_timeout_spinner"/> - <text name="seconds_textbox"> - Sekunden - </text> + <color_swatch label="" name="effect_color_swatch" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/> + <combo_box label="Timeout für Abwesenheit:" name="afk"> + <combo_box.item label="2 Minuten" name="item0"/> + <combo_box.item label="5 Minuten" name="item1"/> + <combo_box.item label="10 Minuten" name="item2"/> + <combo_box.item label="30 Minuten" name="item3"/> + <combo_box.item label="nie" name="item4"/> + </combo_box> <text name="text_box3"> Antwort, wenn im „Beschäftigt“-Modus: </text> diff --git a/indra/newview/skins/default/xui/de/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/de/panel_preferences_privacy.xml index fe0dca78d1..0c0924026e 100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_privacy.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_privacy.xml @@ -11,8 +11,8 @@ <check_box label="Nur Freunde und Gruppen können mich anrufen oder mir eine IM schicken" name="voice_call_friends_only_check"/> <check_box label="Mikrofon ausschalten, wenn Anrufe beendet werden" name="auto_disengage_mic_check"/> <check_box label="Cookies annehmen" name="cookies_enabled"/> - <check_box label="Automatisches Abspielen von Medien erlauben" name="autoplay_enabled"/> - <check_box label="Medien auf Parzellen automatisch abspielen" name="parcel_autoplay_enabled"/> + <check_box label="Medien aktiviert" name="media_enabled"/> + <check_box label="Automatische Wiedergabe zulassen" name="autoplay_enabled"/> <text name="Logs:"> Protokolle: </text> @@ -20,7 +20,7 @@ <check_box label="IM Protokolle auf meinem Computer speichern" name="log_instant_messages"/> <check_box label="Zeitstempel hinzufügen" name="show_timestamps_check_im"/> <text name="log_path_desc"> - Speicherort der Protokolldateien + Speicherort für Protokolle: </text> <button label="Durchsuchen" label_selected="Durchsuchen" name="log_path_button"/> <button label="Ignorierte Einwohner/Objekte" name="block_list"/> diff --git a/indra/newview/skins/default/xui/de/panel_preferences_setup.xml b/indra/newview/skins/default/xui/de/panel_preferences_setup.xml index f1d4a853e8..00be3920ca 100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_setup.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Kamera" name="Input panel"> +<panel label="Hardware/Internet" name="Input panel"> <button label="Andere Geräte" name="joystick_setup_button"/> <text name="Mouselook:"> Mouselook: @@ -26,9 +26,9 @@ MB </text> <button label="Durchsuchen" label_selected="Durchsuchen" name="set_cache"/> - <button label="Zurücksetzen" label_selected="Set" name="reset_cache"/> + <button label="Zurücksetzen" label_selected="Zurücksetzen" name="reset_cache"/> <text name="Cache location"> - Speicherort des Caches + Cache-Ordner: </text> <text name="Web:"> Web: @@ -41,6 +41,6 @@ <line_editor name="web_proxy_editor" tool_tip="Name oder IP Adresse des Proxyservers, den Sie benutzen möchten"/> <button label="Durchsuchen" label_selected="Durchsuchen" name="set_proxy"/> <text name="Proxy location"> - Proxyadresse + Proxy-Standort: </text> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_preferences_sound.xml b/indra/newview/skins/default/xui/de/panel_preferences_sound.xml index 94c215b80b..2398da71d0 100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_sound.xml @@ -7,10 +7,10 @@ <slider label="Medien" name="Media Volume"/> <slider label="Soundeffekte" name="SFX Volume"/> <slider label="Musik wird gestreamt" name="Music Volume"/> - <check_box label="Sprache" name="enable_voice_check"/> + <check_box label="Voice aktivieren" name="enable_voice_check"/> <slider label="Sprache" name="Voice Volume"/> <text name="Listen from"> - Hören von: + Zuhören von: </text> <radio_group name="ear_location"> <radio_item label="Kameraposition" name="0"/> diff --git a/indra/newview/skins/default/xui/de/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/de/panel_prim_media_controls.xml index ed5daa60ce..0a19483f8b 100644 --- a/indra/newview/skins/default/xui/de/panel_prim_media_controls.xml +++ b/indra/newview/skins/default/xui/de/panel_prim_media_controls.xml @@ -6,7 +6,36 @@ <string name="skip_step"> 0.2 </string> + <layout_stack name="progress_indicator_area"> + <panel name="media_progress_indicator"> + <progress_bar name="media_progress_bar" tool_tip="Medien werden geladen"/> + </panel> + </layout_stack> <layout_stack name="media_controls"> + <layout_panel name="back"> + <button name="back_btn" tool_tip="Rückwärts"/> + </layout_panel> + <layout_panel name="fwd"> + <button name="fwd_btn" tool_tip="Vorwärts"/> + </layout_panel> + <layout_panel name="home"> + <button name="home_btn" tool_tip="Startseite"/> + </layout_panel> + <layout_panel name="media_stop"> + <button name="media_stop_btn" tool_tip="Medienwiedergabe stoppen"/> + </layout_panel> + <layout_panel name="reload"> + <button name="reload_btn" tool_tip="Neu laden"/> + </layout_panel> + <layout_panel name="stop"> + <button name="stop_btn" tool_tip="Ladevorgang stoppen"/> + </layout_panel> + <layout_panel name="play"> + <button name="play_btn" tool_tip="Medien wiedergeben"/> + </layout_panel> + <layout_panel name="pause"> + <button name="pause_btn" tool_tip="Medien pausieren"/> + </layout_panel> <layout_panel name="media_address"> <line_editor name="media_address_url" tool_tip="Medien URL"/> <layout_stack name="media_address_url_icons"> @@ -21,13 +50,24 @@ <layout_panel name="media_play_position"> <slider_bar initial_value="0.5" name="media_play_slider" tool_tip="Fortschritt der Filmwiedergabe"/> </layout_panel> + <layout_panel name="skip_back"> + <button name="skip_back_btn" tool_tip="Rückwärts"/> + </layout_panel> + <layout_panel name="skip_forward"> + <button name="skip_forward_btn" tool_tip="Vorwärts"/> + </layout_panel> <layout_panel name="media_volume"> - <button name="media_volume_button" tool_tip="Dieses Medium stummschalten"/> + <button name="media_mute_button" tool_tip="Stummschalten"/> + <slider name="volume_slider" tool_tip="Lautstärke"/> + </layout_panel> + <layout_panel name="zoom_frame"> + <button name="zoom_frame_btn" tool_tip="Auf Medien zoomen"/> + </layout_panel> + <layout_panel name="close"> + <button name="close_btn" tool_tip="Herauszoomen"/> + </layout_panel> + <layout_panel name="new_window"> + <button name="new_window_btn" tool_tip="URL in Browser öffnen"/> </layout_panel> - </layout_stack> - <layout_stack> - <panel name="media_progress_indicator"> - <progress_bar name="media_progress_bar" tool_tip="Medien werden geladen"/> - </panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_profile.xml b/indra/newview/skins/default/xui/de/panel_profile.xml index c67d7f7fbc..82467eb570 100644 --- a/indra/newview/skins/default/xui/de/panel_profile.xml +++ b/indra/newview/skins/default/xui/de/panel_profile.xml @@ -12,50 +12,41 @@ </string> <string name="my_account_link_url" value="http://secondlife.com/my/account/index.php?lang=de-DE"/> <string name="no_partner_text" value="Keiner"/> + <string name="no_group_text" value="Keiner"/> <string name="RegisterDateFormat"> [REG_DATE] ([AGE]) </string> - <scroll_container name="profile_scroll"> - <panel name="scroll_content_panel"> - <panel name="second_life_image_panel"> - <text name="title_sl_descr_text" value="[SECOND_LIFE]:"/> - <expandable_text name="sl_description_edit"> - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. - </expandable_text> - </panel> - <panel name="first_life_image_panel"> - <text name="title_rw_descr_text" value="Echtes Leben:"/> - <expandable_text name="fl_description_edit"> - Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. - </expandable_text> - </panel> - <text name="me_homepage_text"> - Webseite: - </text> - <text name="title_member_text" value="Mitglied seit:"/> - <text name="register_date" value="05/31/1976"/> - <text name="title_acc_status_text" value="Kontostatus:"/> - <text name="acc_status_text" value="Einwohner. Keine Zahlungsinfo archiviert."/> - <text name="title_partner_text" value="Partner:"/> - <panel name="partner_data_panel"> - <text name="partner_text" value="[FIRST] [LAST]"/> - </panel> - <text name="title_groups_text" value="Gruppen:"/> - <expandable_text name="sl_groups"> - Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. - </expandable_text> - </panel> - </scroll_container> - <panel name="profile_buttons_panel"> - <button label="Freund hinzufügen" name="add_friend"/> - <button label="IM" name="im"/> - <button label="Anrufen" name="call"/> - <button label="Karte" name="show_on_map_btn"/> - <button label="Teleportieren" name="teleport"/> - <button label="▼" name="overflow_btn"/> - </panel> - <panel name="profile_me_buttons_panel"> - <button label="Profil bearbeiten" name="edit_profile_btn"/> - <button label="Aussehen bearbeiten" name="edit_appearance_btn"/> - </panel> + <layout_stack name="layout"> + <layout_panel name="profile_stack"> + <scroll_container name="profile_scroll"> + <panel name="profile_scroll_panel"> + <panel name="second_life_image_panel"> + <text name="title_sl_descr_text" value="[SECOND_LIFE]:"/> + </panel> + <panel name="first_life_image_panel"> + <text name="title_rw_descr_text" value="Echtes Leben:"/> + </panel> + <text name="title_member_text" value="Einwohner seit:"/> + <text name="title_acc_status_text" value="Kontostatus:"/> + <text name="acc_status_text"> + Einwohner. Keine Zahlungsinfo archiviert. + Linden. + </text> + <text name="title_partner_text" value="Partner:"/> + <text name="title_groups_text" value="Gruppen:"/> + </panel> + </scroll_container> + </layout_panel> + <layout_panel name="profile_buttons_panel"> + <button label="Freund hinzufügen" name="add_friend" tool_tip="Bieten Sie dem Einwohner die Freundschaft an"/> + <button label="IM" name="im" tool_tip="Instant Messenger öffnen"/> + <button label="Anrufen" name="call" tool_tip="Diesen Einwohner anrufen"/> + <button label="Karte" name="show_on_map_btn" tool_tip="Einwohner auf Karte anzeigen"/> + <button label="Teleportieren" name="teleport" tool_tip="Teleport anbieten"/> + </layout_panel> + <layout_panel name="profile_me_buttons_panel"> + <button label="Profil bearbeiten" name="edit_profile_btn" tool_tip="Ihre persönlichen Informationen bearbeiten"/> + <button label="Aussehen bearbeiten" name="edit_appearance_btn" tool_tip="Ihr Aussehen bearbeiten: Körpermaße, Bekleidung, usw."/> + </layout_panel> + </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_region_estate.xml b/indra/newview/skins/default/xui/de/panel_region_estate.xml index e0008d2a39..b0c6dce8cf 100644 --- a/indra/newview/skins/default/xui/de/panel_region_estate.xml +++ b/indra/newview/skins/default/xui/de/panel_region_estate.xml @@ -1,8 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Grundstück" name="Estate"> <text name="estate_help_text"> - Änderungen auf dieser Registerkarte wirken sich -auf alle Regionen auf dem Grundstück aus. + Änderungen auf dieser Registerkarte wirken sich auf alle Regionen auf dem Grundstück aus. </text> <text name="estate_text"> Grundstück: @@ -17,10 +16,10 @@ auf alle Regionen auf dem Grundstück aus. (unbekannt) </text> <text name="Only Allow"> - Zugang beschränken auf: + Zugang auf Einwohner beschränken, die überprüft wurden von: </text> - <check_box label="Einwohner mit Zahlungsinformationen" name="limit_payment" tool_tip="Nicht identifizierte Einwohner verbannen"/> - <check_box label="Altersgeprüfte Erwachsene" name="limit_age_verified" tool_tip="Einwohner ohne Altersüberprüfung verbannen. Weitere Informationen finden Sie auf [SUPPORT_SITE]."/> + <check_box label="Zahlungsinformation gespeichert" name="limit_payment" tool_tip="Nicht identifizierte Einwohner verbannen"/> + <check_box label="Altersüberprüfung" name="limit_age_verified" tool_tip="Einwohner ohne Altersüberprüfung verbannen. Weitere Informationen finden Sie auf [SUPPORT_SITE]."/> <check_box label="Voice-Chat erlauben" name="voice_chat_check"/> <button label="?" name="voice_chat_help"/> <text name="abuse_email_text" width="222"> diff --git a/indra/newview/skins/default/xui/de/panel_region_general.xml b/indra/newview/skins/default/xui/de/panel_region_general.xml index 13df2bfb3b..978b701054 100644 --- a/indra/newview/skins/default/xui/de/panel_region_general.xml +++ b/indra/newview/skins/default/xui/de/panel_region_general.xml @@ -39,10 +39,10 @@ <text label="Alterseinstufung" name="access_text"> Einstufung: </text> - <combo_box label="Mature" name="access_combo"> + <combo_box label="Moderat" name="access_combo"> <combo_box.item label="Adult" name="Adult"/> - <combo_box.item label="Mature" name="Mature"/> - <combo_box.item label="PG" name="PG"/> + <combo_box.item label="Moderat" name="Mature"/> + <combo_box.item label="Allgemein" name="PG"/> </combo_box> <button label="?" name="access_help"/> <button label="Übernehmen" name="apply_btn"/> diff --git a/indra/newview/skins/default/xui/de/panel_region_general_layout.xml b/indra/newview/skins/default/xui/de/panel_region_general_layout.xml new file mode 100644 index 0000000000..732249df35 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_region_general_layout.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Region" name="General"> + <text name="region_text_lbl"> + Region: + </text> + <text name="region_text"> + unbekannt + </text> + <text name="version_channel_text_lbl"> + Version: + </text> + <text name="version_channel_text"> + unbekannt + </text> + <text name="region_type_lbl"> + Typ: + </text> + <text name="region_type"> + unbekannt + </text> + <check_box label="Terraformen blockieren" name="block_terraform_check"/> + <check_box label="Fliegen blockieren" name="block_fly_check"/> + <check_box label="Schaden zulassen" name="allow_damage_check"/> + <check_box label="Stoßen beschränken" name="restrict_pushobject"/> + <check_box label="Landwiederverkauf zulassen" name="allow_land_resell_check"/> + <check_box label="Zusammenlegen/Teilen von Land zulassen" name="allow_parcel_changes_check"/> + <check_box label="Landanzeige in Suche blockieren" name="block_parcel_search_check" tool_tip="Diese Region und ihre Parzellen in Suchergebnissen anzeigen"/> + <spinner label="Avatar-Limit" name="agent_limit_spin"/> + <spinner label="Objektbonus" name="object_bonus_spin"/> + <text label="Alterseinstufung" name="access_text"> + Einstufung: + </text> + <combo_box label="Moderat" name="access_combo"> + <combo_box.item label="Adult" name="Adult"/> + <combo_box.item label="Moderat" name="Mature"/> + <combo_box.item label="Allgemein" name="PG"/> + </combo_box> + <button label="Übernehmen" name="apply_btn"/> + <button label="Einen Benutzer nach Hause teleportieren..." name="kick_btn"/> + <button label="Alle Benutzer nach Hause teleportieren..." name="kick_all_btn"/> + <button label="Nachricht an Region senden..." name="im_btn"/> + <button label="Telehub verwalten..." name="manage_telehub_btn"/> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_region_texture.xml b/indra/newview/skins/default/xui/de/panel_region_texture.xml index 4361b39def..d489b5bac8 100644 --- a/indra/newview/skins/default/xui/de/panel_region_texture.xml +++ b/indra/newview/skins/default/xui/de/panel_region_texture.xml @@ -48,8 +48,7 @@ Diese Werte geben den Mischungsgrad für die obigen Texturen an. </text> <text name="height_text_lbl11"> - Der UNTERE Wert gibt die MAXIMALE Höhe von Textur Nr. 1 an -und der OBERE WERT die MINIMALE Höhe von Textur 4. + In Metern gemessen. Der NIEDRIG-Wert ist die MAXIMALE Höhe der Textur #1, der HÖCHST-Wert ist die MINDEST-Höhe von Textur #4. </text> <text name="height_text_lbl12"> und der OBERE WERT die MINIMALE Höhe von Textur 4. diff --git a/indra/newview/skins/default/xui/de/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/de/panel_script_limits_my_avatar.xml new file mode 100644 index 0000000000..f6a1d7e9b5 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_script_limits_my_avatar.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="MEIN AVATAR" name="script_limits_my_avatar_panel"> + <text name="loading_text"> + Wird geladen... + </text> + <scroll_list name="scripts_list"> + <scroll_list.columns label="Größe (KB)" name="size"/> + <scroll_list.columns label="URLs" name="urls"/> + <scroll_list.columns label="Objektname" name="name"/> + <scroll_list.columns label="Ort" name="location"/> + </scroll_list> + <button label="Liste aktualisieren" name="refresh_list_btn"/> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/de/panel_script_limits_region_memory.xml new file mode 100644 index 0000000000..c466c04e86 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_script_limits_region_memory.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="REGIONSSPEICHER" name="script_limits_region_memory_panel"> + <text name="script_memory"> + Parzellenskript-Speicher + </text> + <text name="parcels_listed"> + Parzelleneigentümer: + </text> + <text name="memory_used"> + Verwendeter Speicher: + </text> + <text name="loading_text"> + Wird geladen... + </text> + <scroll_list name="scripts_list"> + <scroll_list.columns label="Größe (KB)" name="size"/> + <scroll_list.columns label="Objektname" name="name"/> + <scroll_list.columns label="Objekteigentümer" name="owner"/> + <scroll_list.columns label="Parzelle / Standort" name="location"/> + </scroll_list> + <button label="Liste aktualisieren" name="refresh_list_btn"/> + <button label="Markieren" name="highlight_btn"/> + <button label="Zurückgeben" name="return_btn"/> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_side_tray.xml b/indra/newview/skins/default/xui/de/panel_side_tray.xml index d5baacd357..2cd11cdcef 100644 --- a/indra/newview/skins/default/xui/de/panel_side_tray.xml +++ b/indra/newview/skins/default/xui/de/panel_side_tray.xml @@ -2,9 +2,13 @@ <!-- Side tray cannot show background because it is always partially on screen to hold tab buttons. --> <side_tray name="sidebar"> + <sidetray_tab description="Seitenleiste auf-/zuklappen." name="sidebar_openclose"/> <sidetray_tab description="Startseite." name="sidebar_home"> <panel label="Startseite" name="panel_home"/> </sidetray_tab> + <sidetray_tab description="Ihr öffentliches Profil und Auswahl bearbeiten." name="sidebar_me"> + <panel label="Ich" name="panel_me"/> + </sidetray_tab> <sidetray_tab description="Freunde, Kontakte und Leute in Ihrer Nähe finden." name="sidebar_people"> <panel_container name="panel_container"> <panel label="Gruppeninfo" name="panel_group_info_sidetray"/> @@ -14,13 +18,10 @@ <sidetray_tab description="Hier finden Sie neue Orte und Orte, die Sie bereits besucht haben." label="Orte" name="sidebar_places"> <panel label="Orte" name="panel_places"/> </sidetray_tab> - <sidetray_tab description="Ihr öffentliches Profil und Auswahl bearbeiten." name="sidebar_me"> - <panel label="Ich" name="panel_me"/> + <sidetray_tab description="Inventar durchsuchen." name="sidebar_inventory"> + <panel label="Inventar bearbeiten" name="sidepanel_inventory"/> </sidetray_tab> <sidetray_tab description="Ändern Sie Ihr Aussehen und Ihren aktuellen Look." name="sidebar_appearance"> <panel label="Aussehen bearbeiten" name="sidepanel_appearance"/> </sidetray_tab> - <sidetray_tab description="Inventar durchsuchen." name="sidebar_inventory"> - <panel label="Inventar bearbeiten" name="sidepanel_inventory"/> - </sidetray_tab> </side_tray> 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 253207fe73..33fd0f6348 100644 --- a/indra/newview/skins/default/xui/de/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/de/panel_status_bar.xml @@ -21,7 +21,8 @@ <panel.string name="buycurrencylabel"> [AMT] L$ </panel.string> - <button label="" label_selected="" name="buycurrency" tool_tip="Mein Kontostand: Hier klicken, um mehr L$ zu kaufen"/> + <button label="" label_selected="" name="buycurrency" tool_tip="Mein Kontostand"/> + <button label="L$ kaufen" name="buyL" tool_tip="Hier klicken, um mehr L$ zu kaufen"/> <text name="TimeText" tool_tip="Aktuelle Zeit (Pazifik)"> 12:00 </text> diff --git a/indra/newview/skins/default/xui/de/panel_teleport_history.xml b/indra/newview/skins/default/xui/de/panel_teleport_history.xml index 3149ddf19e..4efd83dfff 100644 --- a/indra/newview/skins/default/xui/de/panel_teleport_history.xml +++ b/indra/newview/skins/default/xui/de/panel_teleport_history.xml @@ -11,5 +11,7 @@ <accordion_tab name="1_month_and_older" title="1 Monat und älter"/> <accordion_tab name="6_months_and_older" title="6 Monate und älter"/> </accordion> - <panel label="bottom_panel" name="bottom_panel"/> + <panel label="bottom_panel" name="bottom_panel"> + <button name="gear_btn" tool_tip="Zusätzliche Optionen anzeigen"/> + </panel> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_teleport_history_item.xml b/indra/newview/skins/default/xui/de/panel_teleport_history_item.xml index 9d18c52442..4b57aa69b6 100644 --- a/indra/newview/skins/default/xui/de/panel_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/de/panel_teleport_history_item.xml @@ -1,4 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="teleport_history_item"> <text name="region" value="..."/> + <button name="profile_btn" tool_tip="Objektinfo anzeigen"/> </panel> diff --git a/indra/newview/skins/default/xui/de/role_actions.xml b/indra/newview/skins/default/xui/de/role_actions.xml index 95eb6c5eb2..554a5c27a4 100644 --- a/indra/newview/skins/default/xui/de/role_actions.xml +++ b/indra/newview/skins/default/xui/de/role_actions.xml @@ -1,200 +1,76 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <role_actions> - <action_set - description="Diese Fähigkeiten ermöglichen das Hinzufügen und Entfernen von Mitgliedern sowie den Beitritt ohne Einladung." - name="Membership"> - <action description="Personen in diese Gruppe einladen" - longdescription="Personen zu dieser Gruppe einladen können Sie mit „Neue Person einladen...“ unter „Mitglieder und Rollen“ > „Mitglieder“." - name="member invite" /> - <action description="Mitglieder aus dieser Gruppe werfen" - longdescription="Mitglieder von der Gruppe ausschließen können Sie mit „Aus Gruppe werfen“ unter „Mitglieder und Rollen“ > „Mitglieder“. Ein Eigentümer kann jeden, außer einen anderen Eigentümer, ausschließen. Wenn Sie kein Eigentümer sind, können Sie ein Mitglied nur dann von der Gruppe ausschließen, wenn es die Rolle „Jeder“ innehat, aber KEINE ANDERE Rolle. Um Mitgliedern Rollen entziehen zu können, müssen Sie über die Fähigkeit „Mitgliedern Rollen entziehen“ verfügen." - name="member eject" /> - <action - description="„Registrierung offen“ einstellen und „Beitrittsgebühr“ ändern" - longdescription="„Beitritt möglich“ erlaubt den Beitritt zur Gruppe ohne vorhergehende Einladung. Die „Beitrittsgebühr“ wird in den Gruppeneinstellungen auf der Registerkarte „Allgemein“ festgelegt." - name="member options" /> + <action_set description="Diese Fähigkeiten ermöglichen das Hinzufügen und Entfernen von Mitgliedern sowie den Beitritt ohne Einladung." name="Membership"> + <action description="Personen in diese Gruppe einladen" longdescription="Leute in diese Gruppe mit der Schaltfläche „Einladen“ im Abschnitt „Rollen“ > Registerkarte „Mitglieder“ in die Gruppe einladen." name="member invite"/> + <action description="Mitglieder aus dieser Gruppe werfen" longdescription="Leute aus dieser Gruppe mit der Schaltfläche „Hinauswerfen“ im Abschnitt „Rollen“ > Registerkarte „Mitglieder“ aus der Gruppe werfen. Ein Eigentümer kann jeden, außer einen anderen Eigentümer, ausschließen. Wenn Sie kein Eigentümer sind, können Sie ein Mitglied nur dann aus der Gruppe werfen, wenn es die Rolle Jeder inne hat, jedoch KEINE andere Rolle. Um Mitgliedern Rollen entziehen zu können, müssen Sie über die Fähigkeit „Mitgliedern Rollen entziehen“ verfügen." name="member eject"/> + <action description="„Registrierung offen“ aktivieren/deaktivieren und „Beitrittsgebühr“ ändern." longdescription="„Registrierung offen“ aktivieren, um damit neue Mitglieder ohne Einladung beitreten können, und die „Beitrittsgebühr“ im Abschnitt „Allgemein“ ändern." name="member options"/> </action_set> - <action_set - description="Diese Fähigkeiten ermöglichen das Hinzufügen, Entfernen und Ändern von Gruppenrollen, das Zuweisen und Entfernen von Rollen und das Zuweisen von Fähigkeiten zu Rollen." - name="Roles"> - <action description="Neue Rollen erstellen" - longdescription="Neue Rollen erstellen Sie unter „Mitglieder und Rollen“ > „Rollen“." - name="role create" /> - <action description="Rollen löschen" - longdescription="Rollen löschen können Sie unter „Mitglieder und Rollen“ > „Rollen“." - name="role delete" /> - <action description="Rollennamen, Titel und Beschreibung ändern" - longdescription="Namen, Titel und Beschreibungen von Rollen können Sie nach Auswahl einer Rolle unten auf der Registerkarte „Mitglieder und Rollen“ > „Rollen“ ändern." - name="role properties" /> - <action description="Mitgliedern nur eigene Rollen zuweisen" - longdescription="Mitgliedern nur eigene Rollen zuweisen können Sie im Bereich „Zugewiesene Rollen“ auf der Registerkarte „Mitglieder und Rollen“ > „Mitglieder“. Ein Mitglied mit dieser Fähigkeit kann anderen Mitgliedern nur die eigenen Rollen zuweisen." - name="role assign member limited" /> - <action description="Mitgliedern beliebige Rolle zuweisen" - longdescription="Mitgliedern beliebige Rolle zuweisen können Sie im Bereich „Zugewiesene Rollen“ auf der Registerkarte „Mitglieder und Rollen“ > „Mitglieder“. *WARNUNG* Jedes Mitglied in einer Rolle mit dieser Fähigkeit kann sich selbst und jedem anderen Mitglied (außer dem Eigentümer) Rollen mit weitreichenden Fähigkeiten zuweisen und damit fast Eigentümerrechte erreichen. Überlegen Sie sich, wem Sie diese Fähigkeit verleihen." - name="role assign member" /> - <action description="Mitgliedern Rollen entziehen" - longdescription="Mitgliedern Rollen entziehen können Sie im Bereich „Rollen“ auf der Registerkarte „Mitglieder und Rollen“ > „Mitglieder“. Eigentümer können nicht entfernt werden." - name="role remove member" /> - <action description="Rollenfähigkeiten zuweisen und entfernen" - longdescription="Rollenfähigkeiten zuweisen und entfernen können Sie im Bereich „Zulässige Fähigkeiten“ auf der Registerkarte „Mitglieder und Rollen“ > „Rollen“. *WARNUNG* Jedes Mitglied in einer Rolle mit dieser Fähigkeit kann sich selbst und jedem anderen Mitglied (außer dem Eigentümer) alle Fähigkeiten zuweisen und damit fast Eigentümerrechte erreichen. Überlegen Sie sich, wem Sie diese Fähigkeit verleihen." - name="role change actions" /> + <action_set description="Diese Fähigkeiten ermöglichen das Hinzufügen, Entfernen und Ändern von Gruppenrollen, das Zuweisen und Entfernen von Rollen und das Zuweisen von Fähigkeiten zu Rollen." name="Roles"> + <action description="Neue Rollen erstellen" longdescription="Neue Rollen im Abschnitt „Rollen“ > Registerkarte „Rollen“ erstellen." name="role create"/> + <action description="Rollen löschen" longdescription="Neue Rollen im Abschnitt „Rollen“ > Registerkarte „Rollen“ löschen." name="role delete"/> + <action description="Rollennamen, Titel, Beschreibungen und ob die Rolleninhaber öffentlich bekannt sein sollen, ändern." longdescription="Rollennamen, Titel, Beschreibungen und ob die Rolleninhaber öffentlich bekannt sein sollen, ändern. Dies wird im unteren Bereich des Abschnitts „Rollen“ > Registerkarte „Rollen“ eingestellt, nachdem eine Rolle ausgewählt wurde." name="role properties"/> + <action description="Mitgliedern nur eigene Rollen zuweisen" longdescription="In der Liste „Rollen“ (Abschnitt „Rollen“ > Registerkarte „Mitglieder“) können Mitgliedern Rollen zugewiesen werden. Ein Mitglied mit dieser Fähigkeit kann anderen Mitgliedern nur die eigenen Rollen zuweisen." name="role assign member limited"/> + <action description="Mitgliedern beliebige Rolle zuweisen" longdescription="Sie können Mitglieder jede beliebige Rolle der Liste „Rollen“ (Abschnitt „Rollen“ > Registerkarte „Mitglieder“) zuweisen. *WARNUNG* Jedes Mitglied in einer Rolle mit dieser Fähigkeit kann sich selbst und jedem anderen Mitglied (außer dem Eigentümer) Rollen mit weitreichenden Fähigkeiten zuweisen und damit fast Eigentümerrechte erreichen. Überlegen Sie sich gut, wem Sie diese Fähigkeit verleihen." name="role assign member"/> + <action description="Mitgliedern Rollen entziehen" longdescription="In der Liste „Rollen“ (Abschnitt „Rollen“ > Registerkarte „Mitglieder“) können Mitgliedern Rollen abgenommen werden. Eigentümer können nicht entfernt werden." name="role remove member"/> + <action description="Rollenfähigkeiten zuweisen und entfernen" longdescription="Fähigkeiten für jede Rolle können in der Liste „Zulässige Fähigkeiten" (Abschnitt „Rollen" > Registerkarte „Rollen“) zugewiesen und auch entzogen werden. *WARNUNG* Jedes Mitglied in einer Rolle mit dieser Fähigkeit kann sich selbst und jedem anderen Mitglied (außer dem Eigentümer) alle Fähigkeiten zuweisen und damit fast Eigentümerrechte erreichen. Überlegen Sie sich gut, wem Sie diese Fähigkeit verleihen." name="role change actions"/> </action_set> - <action_set - description="Diese Fähigkeiten ermöglichen es, die Gruppenidentität zu ändern, z. B. öffentliche Sichtbarkeit, Charta und Insignien." - name="Group Identity"> - <action - description="Charta, Insignien und „Im Web veröffentlichen“ ändern und festlegen, welche Mitglieder in der Gruppeninfo öffentlich sichtbar sind." - longdescription="Charta, Insignien und „Im Web veröffentlichen“ ändern und festlegen, welche Mitglieder in der Gruppeninfo öffentlich sichtbar sind. Diese Einstellungen finden Sie auf der Registerkarte „Allgemein“." - name="group change identity" /> + <action_set description="Diese Fähigkeiten ermöglichen es, die Gruppenidentität zu ändern, z. B. öffentliche Sichtbarkeit, Charta und Insignien." name="Group Identity"> + <action description="Charta, Insignien und „Im Web veröffentlichen“ ändern und festlegen, welche Mitglieder in der Gruppeninfo öffentlich sichtbar sind." longdescription="Charta, Insignien und „In Suche anzeigen" ändern. Diese Einstellungen werden im Abschnitt „Allgemein" vorgenommen." name="group change identity"/> </action_set> - <action_set - description="Diese Fähigkeiten ermöglichen es, gruppeneigenes Land zu übertragen, zu bearbeiten und zu verkaufen. Klicken Sie mit rechts auf den Boden und wählen Sie „Land-Info...“ oder klicken Sie in der Menüleiste auf den Parzellennamen." - name="Parcel Management"> - <action description="Land übertragen und für Gruppe kaufen" - longdescription="Land übertragen und für Gruppe kaufen. Diese Einstellung finden Sie unter „Land-Info“ > „Allgemein“." - name="land deed" /> - <action description="Land Governor Linden überlassen" - longdescription="Land Governor Linden überlassen. *WARNUNG* Jedes Mitglied in einer Rolle mit dieser Fähigkeit kann gruppeneigenes Land unter „Land-Info“ > „Allgemein“ aufgeben und es ohne Verkauf in das Eigentum von Linden zurückführen! Überlegen Sie sich, wem Sie diese Fähigkeit verleihen." - name="land release" /> - <action description="Land.zu.verkaufen-Info einstellen" - longdescription="Land zu verkaufen-Info einstellen. *WARNUNG* Mitglieder in einer Rolle mit dieser Fähigkeit können gruppeneigenes Land jederzeit unter „Land-Info“ > „Allgemein“ verkaufen! Überlegen Sie sich, wem Sie diese Fähigkeit verleihen." - name="land set sale info" /> - <action description="Parzellen teilen und zusammenlegen" - longdescription="Parzellen teilen und zusammenlegen. Klicken Sie dazu mit rechts auf den Boden, wählen sie „Terrain bearbeiten“ und ziehen Sie die Maus auf das Land, um eine Auswahl zu treffen. Zum Teilen treffen Sie eine Auswahl und klicken auf „Unterteilen...“. Zum Zusammenlegen von zwei oder mehr angrenzenden Parzellen klicken Sie auf „Zusammenlegen...“." - name="land divide join" /> + <action_set description="Diese Fähigkeiten ermöglichen es, gruppeneigenes Land zu übertragen, zu bearbeiten und zu verkaufen. Klicken Sie mit rechts auf den Boden und wählen Sie „Land-Info...“ oder klicken Sie in der Navigationsleiste auf das Symbol „i"." name="Parcel Management"> + <action description="Land übertragen und für Gruppe kaufen" longdescription="Land übertragen und für Gruppe kaufen. Diese Einstellung finden Sie unter „Land-Info“ > „Allgemein“." name="land deed"/> + <action description="Land Governor Linden überlassen" longdescription="Land Governor Linden überlassen. *WARNUNG* Jedes Mitglied in einer Rolle mit dieser Fähigkeit kann gruppeneigenes Land unter „Land-Info“ > „Allgemein“ aufgeben und es ohne Verkauf in das Eigentum von Linden zurückführen! Überlegen Sie sich, wem Sie diese Fähigkeit verleihen." name="land release"/> + <action description="Land.zu.verkaufen-Info einstellen" longdescription="Land zu verkaufen-Info einstellen. *WARNUNG* Mitglieder in einer Rolle mit dieser Fähigkeit können gruppeneigenes Land jederzeit unter „Land-Info“ > „Allgemein“ verkaufen! Überlegen Sie sich, wem Sie diese Fähigkeit verleihen." name="land set sale info"/> + <action description="Parzellen teilen und zusammenlegen" longdescription="Parzellen teilen und zusammenlegen. Klicken Sie dazu mit rechts auf den Boden, wählen sie „Terrain bearbeiten“ und ziehen Sie die Maus auf das Land, um eine Auswahl zu treffen. Zum Teilen treffen Sie eine Auswahl und klicken auf „Unterteilen“. Zum Zusammenlegen von zwei oder mehr angrenzenden Parzellen klicken Sie auf „Zusammenlegen“." name="land divide join"/> </action_set> - <action_set - description="Diese Fähigkeiten ermöglichen es, den Parzellennamen und die Veröffentlichungseinstellungen sowie die Anzeige des Suchverzeichnisses, den Landepunkt und die TP-Routenoptionen festzulegen." - name="Parcel Identity"> - <action - description="„In Orte suchen anzeigen“ ein-/ausschalten und Kategorie festlegen" - longdescription="Auf der Registerkarte „Optionen“ unter „Land-Info“ können Sie „In Orte suchen anzeigen“ ein- und ausschalten und die Parzellenkategorie festlegen." - name="land find places" /> - <action - description="Name und Beschreibung der Parzelle und Einstellungen für „Im Web veröffentlichen“ ändern" - longdescription="Name und Beschreibung der Parzelle und Einstellungen für „Im Web veröffentlichen“ ändern. Diese Einstellungen finden Sie unter „Land-Info“ > „Optionen“." - name="land change identity" /> - <action description="Landepunkt und Teleport-Route festlegen" - longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können auf einer gruppeneigenen Parzelle einen Landepunkt für ankommende Teleports und Teleport-Routen festlegen. Diese Einstellungen finden Sie unter „Land-Info“ > „Optionen“." - name="land set landing point" /> + <action_set description="Diese Fähigkeiten ermöglichen es, den Parzellennamen und die Veröffentlichungseinstellungen sowie die Anzeige des Suchverzeichnisses, den Landepunkt und die TP-Routenoptionen festzulegen." name="Parcel Identity"> + <action description="„Ort in Suche anzeigen" ein-/ausschalten und Kategorie festlegen." longdescription="Auf der Registerkarte „Optionen“ unter „Land-Info“ können Sie „Ort in Suche anzeigen“ ein- und ausschalten und die Parzellenkategorie festlegen." name="land find places"/> + <action description="Parzellenname, Beschreibung und Einstellung für „Ort in Suche anzeigen" ändern" longdescription="Parzellenname, Beschreibung und Einstellung für „Ort in Suche anzeigen" ändern Diese Einstellungen finden Sie unter „Land-Info“ > Registerkarte „Optionen“." name="land change identity"/> + <action description="Landepunkt und Teleport-Route festlegen" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können auf einer gruppeneigenen Parzelle einen Landepunkt für ankommende Teleports und Teleport-Routen festlegen. Diese Einstellungen finden Sie unter „Land-Info“ > „Optionen“." name="land set landing point"/> </action_set> - <action_set - description="Diese Fähigkeiten ermöglichen es, Parzellenoptionen wie „Objekte erstellen“, „Terrain bearbeiten“ sowie Musik- und Medieneinstellungen zu ändern." - name="Parcel Settings"> - <action description="Musik- und Medieneinstellungen ändern" - longdescription="Die Einstellungen für Streaming-Musik und Filme finden Sie unter „Land-Info“ > „Medien“." - name="land change media" /> - <action description="„Terrain bearbeiten“ ein/aus" - longdescription="„Terrain bearbeiten“ ein/aus. *WARNUNG* „Land-Info“ > „Optionen“ > „Terrain bearbeiten“ ermöglicht jedem das Terraformen Ihres Grundstücks und das Setzen und Verschieben von Linden-Pflanzen. Überlegen Sie sich, wem Sie diese Fähigkeit verleihen. Diese Einstellung finden Sie unter „Land-Info“ > „Optionen“." - name="land edit" /> - <action description="„Land-Info“-Optionen einstellen" - longdescription="Auf der Registerkarte „Optionen“ unter „Land-Info“ können Sie „Sicher (kein Schaden)“ und „Fliegen“ ein- und ausschalten und Einwohnern folgende Aktionen auf gruppeneigenem Land erlauben: „Objekte erstellen“, „Terrain bearbeiten“, „Landmarken erstellen“ und „Skripts ausführen“." - name="land options" /> + <action_set description="Diese Fähigkeiten ermöglichen es, Parzellenoptionen wie „Objekte erstellen“, „Terrain bearbeiten“ sowie Musik- und Medieneinstellungen zu ändern." name="Parcel Settings"> + <action description="Musik- und Medieneinstellungen ändern" longdescription="Die Einstellungen für Streaming-Musik und Filme finden Sie unter „Land-Info“ > „Medien“." name="land change media"/> + <action description="„Terrain bearbeiten“ ein/aus" longdescription="„Terrain bearbeiten“ ein/aus. *WARNUNG* „Land-Info“ > „Optionen“ > „Terrain bearbeiten“ ermöglicht jedem das Terraformen Ihres Grundstücks und das Setzen und Verschieben von Linden-Pflanzen. Überlegen Sie sich, wem Sie diese Fähigkeit verleihen. Diese Einstellung finden Sie unter „Land-Info“ > „Optionen“." name="land edit"/> + <action description="„Land-Info“-Optionen einstellen" longdescription="„Sicher (kein Schaden)“ und „Fliegen“ ein- und ausschalten und Einwohnern folgende Aktionen erlauben: „Terrain bearbeiten“, „Bauen“, „Landmarken erstellen“ und „Skripts ausführen“ auf gruppeneigenem Land in „Land-Info“ > Registerkarte „Optionen“." name="land options"/> </action_set> - <action_set - description="Diese Fähigkeiten ermöglichen es, Mitgliedern das Umgehen von Restriktionen auf gruppeneigenen Parzellen zu erlauben." - name="Parcel Powers"> - <action description="„Terrain bearbeiten“ zulassen" - longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können auf einer gruppeneigenen Parzelle das Terrain bearbeiten, selbst wenn diese Option unter „Land-Info“ > „Optionen“ deaktiviert ist." - name="land allow edit land" /> - <action description="„Fliegen“ zulassen" - longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können auf einer gruppeneigenen Parzelle fliegen, selbst wenn diese Option unter „Land-Info“ > „Optionen“ deaktiviert ist." - name="land allow fly" /> - <action description="„Objekte erstellen“ zulassen" - longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können auf einer gruppeneigenen Parzelle Objekte erstellen, selbst wenn diese Option unter „Land-Info“ > „Optionen“ deaktiviert ist." - name="land allow create" /> - <action description="„Landmarke erstellen“ zulassen" - longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können für eine gruppeneigene Parzelle eine Landmarke erstellen, selbst wenn diese Option unter „Land-Info“ > „Optionen“ deaktiviert ist." - name="land allow landmark" /> - <action description="„Hier als Zuhause wählen“ auf Gruppenland zulassen" - longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können auf einer an diese Gruppe übertragenen Parzelle die Funktion „Welt“ > „Hier als Zuhause wählen“ verwenden." - name="land allow set home" /> + <action_set description="Diese Fähigkeiten ermöglichen es, Mitgliedern das Umgehen von Restriktionen auf gruppeneigenen Parzellen zu erlauben." name="Parcel Powers"> + <action description="„Terrain bearbeiten“ zulassen" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können auf einer gruppeneigenen Parzelle das Terrain bearbeiten, selbst wenn diese Option unter „Land-Info“ > „Optionen“ deaktiviert ist." name="land allow edit land"/> + <action description="„Fliegen“ zulassen" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können auf einer gruppeneigenen Parzelle fliegen, selbst wenn diese Option unter „Land-Info“ > „Optionen“ deaktiviert ist." name="land allow fly"/> + <action description="„Objekte erstellen“ zulassen" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können auf einer gruppeneigenen Parzelle Objekte erstellen, selbst wenn diese Option unter „Land-Info“ > „Optionen“ deaktiviert ist." name="land allow create"/> + <action description="„Landmarke erstellen“ zulassen" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können für eine gruppeneigene Parzelle eine Landmarke erstellen, selbst wenn diese Option unter „Land-Info“ > „Optionen“ deaktiviert ist." name="land allow landmark"/> + <action description="„Hier als Zuhause wählen“ auf Gruppenland zulassen" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können auf einer an diese Gruppe übertragenen Parzelle die Funktion „Welt“ > „Landmarken“ > „Hier als Zuhause wählen“ verwenden." name="land allow set home"/> </action_set> - <action_set - description="Diese Fähigkeiten ermöglichen es, den Zugang auf gruppeneigenen Parzellen zu steuern. Dazu gehört das Einfrieren und Ausschließen von Einwohnern." - name="Parcel Access"> - <action description="Parzellen-Zugangslisten verwalten" - longdescription="Parzellen-Zugangslisten bearbeiten Sie unter „Land-Info“ > „Zugang“." - name="land manage allowed" /> - <action description="Parzellen-Bannlisten verwalten" - longdescription="Parzellen-Bannlisten bearbeiten Sie unter „Land-Info“ > „Verbannen“." - name="land manage banned" /> - <action - description="Parzelleneinstellungen für „Pässe verkaufen...“ ändern" - longdescription="Die Parzellen-Einstellungen für „Pässe verkaufen...“ ändern Sie unter „Land-Info“ > „Zugang“." - name="land manage passes" /> - <action description="Einwohner aus Parzellen werfen und einfrieren" - longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können gegen unerwünschte Personen auf einer gruppeneigenen Parzelle Maßnahmen ergreifen. Klicken Sie die Person mit rechts an und wählen Sie „Mehr“ >, dann „Ausschließen...“ oder „Einfrieren...“." - name="land admin" /> + <action_set description="Diese Fähigkeiten ermöglichen es, den Zugang auf gruppeneigenen Parzellen zu steuern. Dazu gehört das Einfrieren und Ausschließen von Einwohnern." name="Parcel Access"> + <action description="Parzellen-Zugangslisten verwalten" longdescription="Parzellen-Zugangslisten bearbeiten Sie unter „Land-Info“ > „Zugang“." name="land manage allowed"/> + <action description="Parzellen-Bannlisten verwalten" longdescription="Bannlisten für Parzellen bearbeiten Sie unter „Land-Info“ > Registerkarte „Zugang“." name="land manage banned"/> + <action description="Parzelleneinstellungen für „Pässe verkaufen“ ändern" longdescription="Die Parzellen-Einstellungen für „Pässe verkaufen“ ändern Sie unter „Land-Info“ > Registerkarte „Zugang“." name="land manage passes"/> + <action description="Einwohner aus Parzellen werfen und einfrieren" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können gegen unerwünschte Einwohner auf einer gruppeneigenen Parzelle Maßnahmen ergreifen. Klicken Sie den Einwohner mit rechts an und wählen Sie „Hinauswerfen“ oder „Einfrieren“." name="land admin"/> </action_set> - <action_set - description="Diese Fähigkeiten ermöglichen es, Mitgliedern das Zurückgeben von Objekten sowie das Platzieren und Verschieben von Linden-Pflanzen zu erlauben. Mitglieder können das Grundstück aufräumen und an der Landschaftsgestaltung mitwirken. Aber Vorsicht: Zurückgegebene Objekte können nicht mehr zurückgeholt werden." - name="Parcel Content"> - <action description="Gruppeneigene Objekte zurückgeben" - longdescription="Gruppeneigene Objekte auf gruppeneigenen Parzellen können Sie unter „Land-Info“ > „Objekte“ zurückgeben." - name="land return group owned" /> - <action description="Gruppenobjekte zurückgeben" - longdescription="Gruppenobjekte auf gruppeneigenen Parzellen können Sie unter „Land-Info“ > „Objekte“ zurückgeben." - name="land return group set" /> - <action description="Gruppenfremde Objekte zurückgeben" - longdescription="Objekte von gruppenfremden Personen auf gruppeneigenen Parzellen können Sie unter „Land-Info“ > „Objekte“ zurückgeben." - name="land return non group" /> - <action description="Landschaftsgestaltung mit Linden-Pflanzen" - longdescription="Die Fähigkeit zur Landschaftsgestaltung ermöglicht das Platzieren und Verschieben von Linden-Bäumen, -Pflanzen und -Gräsern. Diese Objekte finden Sie im Bibliotheksordner des Inventars unter „Objekte“. Sie lassen sich auch mit der Schaltfläche „Erstellen“ erzeugen." - name="land gardening" /> + <action_set description="Diese Fähigkeiten ermöglichen es, Mitgliedern das Zurückgeben von Objekten sowie das Platzieren und Verschieben von Linden-Pflanzen zu erlauben. Mitglieder können das Grundstück aufräumen und an der Landschaftsgestaltung mitwirken. Aber Vorsicht: Zurückgegebene Objekte können nicht mehr zurückgeholt werden." name="Parcel Content"> + <action description="Gruppeneigene Objekte zurückgeben" longdescription="Gruppeneigene Objekte auf gruppeneigenen Parzellen können Sie unter „Land-Info“ > „Objekte“ zurückgeben." name="land return group owned"/> + <action description="Gruppenobjekte zurückgeben" longdescription="Gruppenobjekte auf gruppeneigenen Parzellen können Sie unter „Land-Info“ > „Objekte“ zurückgeben." name="land return group set"/> + <action description="Gruppenfremde Objekte zurückgeben" longdescription="Objekte von gruppenfremden Personen auf gruppeneigenen Parzellen können Sie unter „Land-Info“ > „Objekte“ zurückgeben." name="land return non group"/> + <action description="Landschaftsgestaltung mit Linden-Pflanzen" longdescription="Die Fähigkeit zur Landschaftsgestaltung ermöglicht das Platzieren und Verschieben von Linden-Bäumen, -Pflanzen und -Gräsern. Diese Objekte finden Sie im Bibliotheksordner des Inventars unter Objekte. Sie lassen sich auch mit der Menü Erstellen erzeugen." name="land gardening"/> </action_set> - <action_set - description="Diese Fähigkeiten ermöglichen es, gruppeneigene Objekte zu übertragen, zu bearbeiten und zu verkaufen. Änderungen werden unter „Auswahl-Tool“ > „Bearbeiten“ auf der Registerkarte „Allgemein“ vorgenommen. Klicken Sie mit rechts auf ein Objekt und wählen Sie „Bearbeiten“, um seine Einstellungen anzuzeigen." - name="Object Management"> - <action description="Objekte an Gruppe übertragen" - longdescription="Objekte an eine Gruppe übertragen können Sie unter „Auswahl-Tool“ > „Bearbeiten“ auf der Registerkarte „Allgemein“." - name="object deed" /> - <action - description="Gruppeneigene Objekte manipulieren (verschieben, kopieren, bearbeiten)" - longdescription="Gruppeneigene Objekte lassen sich unter „Auswahl-Tool“ > „Bearbeiten“ auf der Registerkarte „Allgemein“ manipulieren (verschieben, kopieren, bearbeiten)." - name="object manipulate" /> - <action description="Gruppeneigene Objekte zum Verkauf freigeben" - longdescription="Gruppeneigene Objekte zum Verkauf freigeben können Sie unter „Auswahl-Tool“ > „Bearbeiten“ auf der Registerkarte „Allgemein“." - name="object set sale" /> + <action_set description="Diese Fähigkeiten ermöglichen es, gruppeneigene Objekte zu übertragen, zu bearbeiten und zu verkaufen. Änderungen werden im Werkzeug Bearbeiten auf der Registerkarte Allgemein vorgenommen. Klicken Sie mit rechts auf ein Objekt und wählen Sie 'Bearbeiten ', um seine Einstellungen anzuzeigen." name="Object Management"> + <action description="Objekte an Gruppe übertragen" longdescription="Objekte an eine Gruppe übertragen können Sie im Werkzeug „Bearbeiten“ auf der Registerkarte „Allgemein“." name="object deed"/> + <action description="Gruppeneigene Objekte manipulieren (verschieben, kopieren, bearbeiten)" longdescription="Gruppeneigene Objekte lassen sich im Werkzeug „Bearbeiten“ auf der Registerkarte „Allgemein“ manipulieren (verschieben, kopieren, bearbeiten)." name="object manipulate"/> + <action description="Gruppeneigene Objekte zum Verkauf freigeben" longdescription="Gruppeneigene Objekte zum Verkauf freigeben, können Sie im Werkzeug „Bearbeiten“ auf der Registerkarte „Allgemein“." name="object set sale"/> </action_set> - <action_set - description="Diese Fähigkeiten ermöglichen es, Gruppenschulden und Gruppendividenden zu aktivieren und den Zugriff auf das Gruppenkonto zu beschränken." - name="Accounting"> - <action description="Gruppenschulden zahlen und Gruppendividende erhalten" - longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit zahlen automatisch Gruppenschulden und erhalten Gruppendividenden. D. h. sie erhalten einen Anteil an Verkäufen von gruppeneigenem Land, der täglich verrechnet wird. Außerdem zahlen Sie automatisch für anfallende Kosten wie Parzellenlisten-Gebühren." - name="accounting accountable" /> + <action_set description="Diese Fähigkeiten ermöglichen es, Gruppenschulden und Gruppendividenden zu aktivieren und den Zugriff auf das Gruppenkonto zu beschränken." name="Accounting"> + <action description="Gruppenschulden zahlen und Gruppendividende erhalten" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit zahlen automatisch Gruppenschulden und erhalten Gruppendividenden. D. h. sie erhalten einen Anteil an Verkäufen von gruppeneigenem Land, der täglich verrechnet wird. Außerdem zahlen Sie automatisch für anfallende Kosten wie Parzellenlisten-Gebühren." name="accounting accountable"/> </action_set> - <action_set - description="Diese Fähigkeiten ermöglichen es, Mitgliedern das Senden, Empfangen und Anzeigen von Gruppennachrichten zu erlauben." - name="Notices"> - <action description="Mitteilungen senden" - longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können in der Gruppeninfo unter „Mitteilungen“ Mitteilungen senden." - name="notices send" /> - <action description="Mitteilungen erhalten und ältere Mitteilungen anzeigen" - longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können Mitteilungen erhalten und in der Gruppeninfo unter „Mitteilungen“ ältere Mitteilungen einsehen." - name="notices receive" /> + <action_set description="Diese Fähigkeiten ermöglichen es, Mitgliedern das Senden, Empfangen und Anzeigen von Gruppennachrichten zu erlauben." name="Notices"> + <action description="Mitteilungen senden" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können Mitteilungen im Abschnitt Gruppe > Mitteilungen senden." name="notices send"/> + <action description="Mitteilungen erhalten und ältere Mitteilungen anzeigen" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können Mitteilungen erhalten und im Abschnitt Gruppe > Mitteilungen ältere Mitteilungen anzeigen." name="notices receive"/> </action_set> - <action_set - description="Diese Fähigkeiten ermöglichen es, Mitgliedern das Erstellen von Anfragen, das Abstimmen über Anfragen und das Anzeigen des Abstimmprotokolls zu erlauben." - name="Proposals"> - <action description="Neue Anfragen" - longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können Anfragen stellen, über die auf der Registerkarte „Anfragen“ in der Gruppeninfo abgestimmt werden kann." - name="proposal start" /> - <action description="Über Anfragen abstimmen" - longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können in der Gruppeninfo unter „Anfragen“ über Anfragen abstimmen." - name="proposal vote" /> + <action_set description="Diese Fähigkeiten ermöglichen es, Mitgliedern das Erstellen von Anfragen, das Abstimmen über Anfragen und das Anzeigen des Abstimmprotokolls zu erlauben." name="Proposals"> + <action description="Neue Anfragen" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können Anfragen stellen, über die auf der Registerkarte „Anfragen“ in der Gruppeninfo abgestimmt werden kann." name="proposal start"/> + <action description="Über Anfragen abstimmen" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können in der Gruppeninfo unter „Anfragen“ über Anfragen abstimmen." name="proposal vote"/> </action_set> - <action_set - description="Diese Fähigkeiten ermöglichen es, den Zugang zu Gruppen-Chat und Gruppen-Voice-Chat zu steuern." - name="Chat"> - <action description="Gruppen-Chat beitreten" - longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können Gruppen-Chat und Gruppen-Voice-Chat beitreten." - name="join group chat" /> - <action description="Gruppen-Voice-Chat beitreten" - longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können Gruppen-Voice-Chat beitreten. HINWEIS: Sie benötigen die Fähigkeit „Gruppen-Chat beitreten“, um Zugang zu dieser Voice-Chat-Sitzung zu erhalten." - name="join voice chat" /> - <action description="Gruppen-Chat moderieren" - longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können den Zugang zu und die Teilnahme an Gruppen-Chat- und Voice-Chat-Sitzungen steuern." - name="moderate group chat" /> + <action_set description="Diese Fähigkeiten ermöglichen es, den Zugang zu Gruppen-Chat und Gruppen-Voice-Chat zu steuern." name="Chat"> + <action description="Gruppen-Chat beitreten" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können Gruppen-Chat und Gruppen-Voice-Chat beitreten." name="join group chat"/> + <action description="Gruppen-Voice-Chat beitreten" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können Gruppen-Voice-Chat beitreten. HINWEIS: Sie benötigen die Fähigkeit „Gruppen-Chat beitreten“, um Zugang zu dieser Voice-Chat-Sitzung zu erhalten." name="join voice chat"/> + <action description="Gruppen-Chat moderieren" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können den Zugang zu und die Teilnahme an Gruppen-Chat- und Voice-Chat-Sitzungen steuern." name="moderate group chat"/> </action_set> </role_actions> diff --git a/indra/newview/skins/default/xui/de/sidepanel_appearance.xml b/indra/newview/skins/default/xui/de/sidepanel_appearance.xml index 07d35f30e4..7a280bd7ff 100644 --- a/indra/newview/skins/default/xui/de/sidepanel_appearance.xml +++ b/indra/newview/skins/default/xui/de/sidepanel_appearance.xml @@ -1,16 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Aussehen" name="appearance panel"> +<panel label="Outfits" name="appearance panel"> <string name="No Outfit" value="Kein Outfit"/> <panel name="panel_currentlook"> <button label="Bearbeiten" name="editappearance_btn"/> <text name="currentlook_title"> - Aktuelles Outfit: + (nicht gespeichert) </text> <text name="currentlook_name"> - Mein Outfit + MyOutfit With a really Long Name like MOOSE </text> </panel> - <filter_editor label="Filter" name="Filter"/> + <filter_editor label="Outfits filtern" name="Filter"/> <button label="Anziehen" name="wear_btn"/> <button label="Neues Outfit" name="newlook_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/de/sidepanel_inventory.xml b/indra/newview/skins/default/xui/de/sidepanel_inventory.xml index d40e2f3398..f6cf911bb3 100644 --- a/indra/newview/skins/default/xui/de/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/de/sidepanel_inventory.xml @@ -2,7 +2,7 @@ <panel label="Sonstiges" name="objects panel"> <panel label="" name="sidepanel__inventory_panel"> <panel name="button_panel"> - <button label="Info" name="info_btn"/> + <button label="Profil" name="info_btn"/> <button label="Anziehen" name="wear_btn"/> <button label="Wiedergeben" name="play_btn"/> <button label="Teleportieren" name="teleport_btn"/> diff --git a/indra/newview/skins/default/xui/de/sidepanel_item_info.xml b/indra/newview/skins/default/xui/de/sidepanel_item_info.xml index 947ffbf186..09935019ab 100644 --- a/indra/newview/skins/default/xui/de/sidepanel_item_info.xml +++ b/indra/newview/skins/default/xui/de/sidepanel_item_info.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="item properties" title="Inventarobjekt-Eigenschaften"> +<panel name="item properties" title="Objektprofil"> <panel.string name="unknown"> (unbekannt) </panel.string> @@ -15,6 +15,8 @@ <panel.string name="acquiredDate"> [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local] </panel.string> + <text name="title" value="Objektprofil"/> + <text name="where" value="(Inventar)"/> <panel label=""> <text name="LabelItemNameTitle"> Name: @@ -28,53 +30,50 @@ <text name="LabelCreatorName"> Nicole Linden </text> - <button label="Profil..." name="BtnCreator"/> + <button label="Profil" name="BtnCreator"/> <text name="LabelOwnerTitle"> Eigentümer: </text> <text name="LabelOwnerName"> Thrax Linden </text> - <button label="Profil..." name="BtnOwner"/> + <button label="Profil" name="BtnOwner"/> <text name="LabelAcquiredTitle"> Erworben: </text> <text name="LabelAcquiredDate"> Mittwoch, 24. Mai 2006, 12:50:46 </text> - <text name="OwnerLabel"> - Sie: - </text> - <check_box label="Bearbeiten" name="CheckOwnerModify"/> - <check_box label="Kopieren" name="CheckOwnerCopy"/> - <check_box label="Wiederverkaufen" name="CheckOwnerTransfer"/> - <text name="AnyoneLabel"> - Jeder: - </text> - <check_box label="Kopieren" name="CheckEveryoneCopy"/> - <text name="GroupLabel"> - Gruppe: - </text> - <check_box label="Teilen" name="CheckShareWithGroup"/> - <text name="NextOwnerLabel"> - Nächster Eigentümer: - </text> - <check_box label="Bearbeiten" name="CheckNextOwnerModify"/> - <check_box label="Kopieren" name="CheckNextOwnerCopy"/> - <check_box label="Wiederverkaufen" name="CheckNextOwnerTransfer"/> + <panel name="perms_inv"> + <text name="perm_modify"> + Sie können: + </text> + <check_box label="Bearbeiten" name="CheckOwnerModify"/> + <check_box label="Kopieren" name="CheckOwnerCopy"/> + <check_box label="Transferieren" name="CheckOwnerTransfer"/> + <text name="AnyoneLabel"> + Jeder: + </text> + <check_box label="Kopieren" name="CheckEveryoneCopy"/> + <text name="GroupLabel"> + Gruppe: + </text> + <check_box label="Teilen" name="CheckShareWithGroup" tool_tip="Mit allen Mitgliedern der zugeordneten Gruppe, Ihre Berechtigungen dieses Objekt zu ändern teilen. Sie müssen Übereignen, um Rollenbeschränkungen zu aktivieren."/> + <text name="NextOwnerLabel"> + Nächster Eigentümer: + </text> + <check_box label="Bearbeiten" name="CheckNextOwnerModify"/> + <check_box label="Kopieren" name="CheckNextOwnerCopy"/> + <check_box label="Transferieren" name="CheckNextOwnerTransfer" tool_tip="Nächster Eigentümer kann dieses Objekt weitergeben oder -verkaufen"/> + </panel> <check_box label="Zum Verkauf" name="CheckPurchase"/> <combo_box name="combobox sale copy"> <combo_box.item label="Kopieren" name="Copy"/> <combo_box.item label="Original" name="Original"/> </combo_box> - <spinner label="Preis:" name="Edit Cost"/> - <text name="CurrencySymbol"> - L$ - </text> + <spinner label="Preis: L$" name="Edit Cost"/> </panel> <panel name="button_panel"> - <button label="Bearbeiten" name="edit_btn"/> <button label="Abbrechen" name="cancel_btn"/> - <button label="Speichern" name="save_btn"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/de/sidepanel_task_info.xml b/indra/newview/skins/default/xui/de/sidepanel_task_info.xml index b0ce47e3ae..9f8fdc085a 100644 --- a/indra/newview/skins/default/xui/de/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/de/sidepanel_task_info.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="object properties" title="Objekteigenschaften"> +<panel name="object properties" title="Objektprofil"> <panel.string name="text deed continued"> Übertragung </panel.string> @@ -36,6 +36,8 @@ <panel.string name="Sale Mixed"> Mischverkauf </panel.string> + <text name="title" value="Objektprofil"/> + <text name="where" value="(Inworld)"/> <panel label=""> <text name="Name:"> Name: @@ -43,11 +45,11 @@ <text name="Description:"> Beschreibung: </text> - <text name="Creator:"> + <text name="CreatorNameLabel"> Ersteller: </text> <text name="Creator Name"> - Esbee Linden + Erica Linden </text> <text name="Owner:"> Eigentümer: @@ -55,13 +57,12 @@ <text name="Owner Name"> Erica Linden </text> - <text name="Group:"> + <text name="Group_label"> Gruppe: </text> <button name="button set group" tool_tip="Eine Gruppe auswählen, um die Berechtigungen des Objekts zu teilen."/> <name_box initial_value="Wird geladen..." name="Group Name Proxy"/> <button label="Übertragung" label_selected="Übertragung" name="button deed" tool_tip="Eine Übertragung bedeutet, dass das Objekt mit den Berechtigungen „Nächster Eigentümer“ weitergegeben wird. Mit der Gruppe geteilte Objekte können von einem Gruppen-Officer übertragen werden."/> - <check_box label="Teilen" name="checkbox share with group" tool_tip="Mit allen Mitgliedern der zugeordneten Gruppe, Ihre Berechtigungen dieses Objekt zu ändern teilen. Sie müssen Übereignen, um Rollenbeschränkungen zu aktivieren."/> <text name="label click action"> Bei Linksklick: </text> @@ -72,55 +73,56 @@ <combo_box.item label="Objekt bezahlen" name="Payobject"/> <combo_box.item label="Öffnen" name="Open"/> </combo_box> - <check_box label="Zum Verkauf:" name="checkbox for sale"/> - <combo_box name="sale type"> - <combo_box.item label="Kopieren" name="Copy"/> - <combo_box.item label="Inhalte" name="Contents"/> - <combo_box.item label="Original" name="Original"/> - </combo_box> - <spinner label="Preis: L$" name="Edit Cost"/> - <check_box label="In Suche anzeigen" name="search_check" tool_tip="Dieses Objekt in Suchergebnissen anzeigen"/> - <panel name="perms_build"> + <panel name="perms_inv"> <text name="perm_modify"> Sie können dieses Objekt bearbeiten. </text> <text name="Anyone can:"> Jeder: </text> - <check_box label="Bewegen" name="checkbox allow everyone move"/> <check_box label="Kopieren" name="checkbox allow everyone copy"/> - <text name="Next owner can:"> + <check_box label="Bewegen" name="checkbox allow everyone move"/> + <text name="GroupLabel"> + Gruppe: + </text> + <check_box label="Teilen" name="checkbox share with group" tool_tip="Mit allen Mitgliedern der zugeordneten Gruppe, Ihre Berechtigungen dieses Objekt zu ändern teilen. Sie müssen Übereignen, um Rollenbeschränkungen zu aktivieren."/> + <text name="NextOwnerLabel"> Nächster Eigentümer: </text> <check_box label="Bearbeiten" name="checkbox next owner can modify"/> <check_box label="Kopieren" name="checkbox next owner can copy"/> <check_box label="Transferieren" name="checkbox next owner can transfer" tool_tip="Nächster Eigentümer kann dieses Objekt weitergeben oder -verkaufen"/> - <text name="B:"> - B: - </text> - <text name="O:"> - O: - </text> - <text name="G:"> - G: - </text> - <text name="E:"> - E: - </text> - <text name="N:"> - N: - </text> - <text name="F:"> - F: - </text> </panel> + <check_box label="Zum Verkauf" name="checkbox for sale"/> + <combo_box name="sale type"> + <combo_box.item label="Kopieren" name="Copy"/> + <combo_box.item label="Inhalte" name="Contents"/> + <combo_box.item label="Original" name="Original"/> + </combo_box> + <spinner label="Preis: L$" name="Edit Cost"/> + <check_box label="In Suche anzeigen" name="search_check" tool_tip="Dieses Objekt in Suchergebnissen anzeigen"/> + <text name="B:"> + B: + </text> + <text name="O:"> + O: + </text> + <text name="G:"> + G: + </text> + <text name="E:"> + E: + </text> + <text name="N:"> + N: + </text> + <text name="F:"> + F: + </text> </panel> <panel name="button_panel"> - <button label="Bearbeiten" name="edit_btn"/> <button label="Öffnen" name="open_btn"/> <button label="Zahlen" name="pay_btn"/> <button label="Kaufen" name="buy_btn"/> - <button label="Abbrechen" name="cancel_btn"/> - <button label="Speichern" name="save_btn"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml index 1488f615a3..8fd1c59ca0 100644 --- a/indra/newview/skins/default/xui/de/strings.xml +++ b/indra/newview/skins/default/xui/de/strings.xml @@ -10,6 +10,9 @@ <string name="APP_NAME"> Second Life </string> + <string name="CAPITALIZED_APP_NAME"> + SECOND LIFE + </string> <string name="SECOND_LIFE_GRID"> Second Life-Grid: </string> @@ -49,6 +52,9 @@ <string name="LoginInitializingMultimedia"> Multimedia wird initialisiert... </string> + <string name="LoginInitializingFonts"> + Schriftarten werden geladen... + </string> <string name="LoginVerifyingCache"> Cache-Dateien werden überprüft (dauert 60-90 Sekunden)... </string> @@ -79,6 +85,9 @@ <string name="LoginDownloadingClothing"> Kleidung wird geladen... </string> + <string name="LoginFailedNoNetwork"> + Netzwerk Fehler: Eine Verbindung konnte nicht hergestellt werden. Bitte überprüfen Sie Ihre Netzwerkverbindung. + </string> <string name="Quit"> Beenden </string> @@ -174,7 +183,7 @@ Karte anzeigen für </string> <string name="BUTTON_CLOSE_DARWIN"> - Schließen (⌘W) + Schließen (⌘W) </string> <string name="BUTTON_CLOSE_WIN"> Schließen (Strg+W) @@ -191,9 +200,6 @@ <string name="BUTTON_DOCK"> Andocken </string> - <string name="BUTTON_UNDOCK"> - Abkoppeln - </string> <string name="BUTTON_HELP"> Hilfe anzeigen </string> @@ -626,11 +632,14 @@ <string name="ControlYourCamera"> Kamerasteuerung </string> + <string name="NotConnected"> + Nicht verbunden + </string> <string name="SIM_ACCESS_PG"> - PG + Allgemein </string> <string name="SIM_ACCESS_MATURE"> - Mature + Moderat </string> <string name="SIM_ACCESS_ADULT"> Adult @@ -816,7 +825,10 @@ ESC drücken, um zur Normalansicht zurückzukehren </string> <string name="InventoryNoMatchingItems"> - Im Inventar wurden keine passenden Artikel gefunden. + Im Inventar wurden keine passenden Objekte gefunden. + </string> + <string name="FavoritesNoMatchingItems"> + Hier eine Landmarke hin ziehen, um diese zu Ihrem Favoriten hinzuzufügen. </string> <string name="InventoryNoTexture"> Sie haben keine Kopie dieser Textur in Ihrem Inventar. @@ -1288,6 +1300,156 @@ <string name="RegionInfoAllowedGroups"> Zulässige Gruppen: ([ALLOWEDGROUPS], max [MAXACCESS]) </string> + <string name="ScriptLimitsParcelScriptMemory"> + Parzellenskript-Speicher + </string> + <string name="ScriptLimitsParcelsOwned"> + Aufgeführte Parzellen: [PARCELS] + </string> + <string name="ScriptLimitsMemoryUsed"> + Verwendeter Speicher: [COUNT] KB von [MAX] KB; [AVAILABLE] KB verfügbar + </string> + <string name="ScriptLimitsMemoryUsedSimple"> + Verwendeter Speicher: [COUNT] KB + </string> + <string name="ScriptLimitsParcelScriptURLs"> + Parzelleskript-URLs + </string> + <string name="ScriptLimitsURLsUsed"> + Verwendete URLs: [COUNT] von [MAX]; [AVAILABLE] verfügbar + </string> + <string name="ScriptLimitsURLsUsedSimple"> + Verwendete URLs: [COUNT] + </string> + <string name="ScriptLimitsRequestError"> + Fehler bei Informationsabruf + </string> + <string name="ScriptLimitsRequestWrongRegion"> + Fehler: Skriptinformationen sind nur für Ihre aktuelle Region verfügbar + </string> + <string name="ScriptLimitsRequestWaiting"> + Informationen werden abgerufen... + </string> + <string name="ScriptLimitsRequestDontOwnParcel"> + Sie sind nicht berechtigt, diese Parzelle zu untersuchen. + </string> + <string name="SITTING_ON"> + sitzt auf + </string> + <string name="ATTACH_CHEST"> + Brust + </string> + <string name="ATTACH_HEAD"> + Kopf + </string> + <string name="ATTACH_LSHOULDER"> + Linke Schulter + </string> + <string name="ATTACH_RSHOULDER"> + Rechte Schulter + </string> + <string name="ATTACH_LHAND"> + Linke Hand + </string> + <string name="ATTACH_RHAND"> + Rechte Hand + </string> + <string name="ATTACH_LFOOT"> + Linker Fuß + </string> + <string name="ATTACH_RFOOT"> + Rechter Fuß + </string> + <string name="ATTACH_BACK"> + Hinten + </string> + <string name="ATTACH_PELVIS"> + Becken + </string> + <string name="ATTACH_MOUTH"> + Mund + </string> + <string name="ATTACH_CHIN"> + Kinn + </string> + <string name="ATTACH_LEAR"> + Linkes Ohr + </string> + <string name="ATTACH_REAR"> + Rechtes Ohr + </string> + <string name="ATTACH_LEYE"> + Linkes Auge + </string> + <string name="ATTACH_REYE"> + Rechtes Auge + </string> + <string name="ATTACH_NOSE"> + Nase + </string> + <string name="ATTACH_RUARM"> + Rechter Oberarm + </string> + <string name="ATTACH_RLARM"> + Rechter Unterarm + </string> + <string name="ATTACH_LUARM"> + Linker Oberarm + </string> + <string name="ATTACH_LLARM"> + Linker Unterarm + </string> + <string name="ATTACH_RHIP"> + Rechte Hüfte + </string> + <string name="ATTACH_RULEG"> + Rechter Oberschenkel + </string> + <string name="ATTACH_RLLEG"> + Rechter Unterschenkel + </string> + <string name="ATTACH_LHIP"> + Linke Hüfte + </string> + <string name="ATTACH_LULEG"> + Linker Oberschenkel + </string> + <string name="ATTACH_LLLEG"> + Linker Unterschenkel + </string> + <string name="ATTACH_BELLY"> + Bauch + </string> + <string name="ATTACH_RPEC"> + Rechts + </string> + <string name="ATTACH_LPEC"> + Linke Brust + </string> + <string name="ATTACH_HUD_CENTER_2"> + HUD Mitte 2 + </string> + <string name="ATTACH_HUD_TOP_RIGHT"> + HUD oben rechts + </string> + <string name="ATTACH_HUD_TOP_CENTER"> + HUD oben Mitte + </string> + <string name="ATTACH_HUD_TOP_LEFT"> + HUD oben links + </string> + <string name="ATTACH_HUD_CENTER_1"> + HUD Mitte 1 + </string> + <string name="ATTACH_HUD_BOTTOM_LEFT"> + HUD unten links + </string> + <string name="ATTACH_HUD_BOTTOM"> + HUD unten + </string> + <string name="ATTACH_HUD_BOTTOM_RIGHT"> + HUD unten rechts + </string> <string name="CursorPos"> Zeile [LINE], Spalte [COLUMN] </string> @@ -1338,6 +1500,12 @@ <string name="ClassifiedUpdateAfterPublish"> (wird nach Veröffentlichung aktualisiert) </string> + <string name="NoPicksClassifiedsText"> + Es wurde keine Auswahl getroffen/keine Anzeigen ausgewählt + </string> + <string name="PicksClassifiedsLoadingText"> + Wird geladen... + </string> <string name="MultiPreviewTitle"> Vorschau </string> @@ -1414,23 +1582,35 @@ Unbekanntes Dateiformat .%s Gültige Formate: .wav, .tga, .bmp, .jpg, .jpeg oder .bvh </string> + <string name="MuteObject2"> + Ignorieren + </string> + <string name="MuteAvatar"> + Ignorieren + </string> + <string name="UnmuteObject"> + Freischalten + </string> + <string name="UnmuteAvatar"> + Freischalten + </string> <string name="AddLandmarkNavBarMenu"> - Landmarke hinzufügen... + Zu meinen Landmarken hinzufügen... </string> <string name="EditLandmarkNavBarMenu"> - Landmarke bearbeiten... + Meine Landmarken bearbeiten... </string> <string name="accel-mac-control"> - ⌃ + ⌃ </string> <string name="accel-mac-command"> - ⌘ + ⌘ </string> <string name="accel-mac-option"> - ⌥ + ⌥ </string> <string name="accel-mac-shift"> - ⇧ + ⇧ </string> <string name="accel-win-control"> Strg+ @@ -1616,7 +1796,7 @@ Falls der Fehler dann weiterhin auftritt, müssen Sie [APP_NAME] von Ihrem Syste Unbehebbarer Fehler </string> <string name="MBRequiresAltiVec"> - [APP_NAME] erfordert einen Prozessor mit AltiVec (G4 oder später). + [APP_NAME] erfordert einen Prozessor mit AltiVec (G4 oder später). </string> <string name="MBAlreadyRunning"> [APP_NAME] läuft bereits. @@ -1628,7 +1808,7 @@ Falls diese Nachricht erneut angezeigt wird, starten Sie Ihren Computer bitte ne Möchten Sie einen Absturz-Bericht einschicken? </string> <string name="MBAlert"> - Alarm + Benachrichtigung </string> <string name="MBNoDirectX"> [APP_NAME] kann DirectX 9.0b oder höher nicht feststellen. @@ -1744,7 +1924,7 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ Volumen: Oben </string> <string name="Big Head"> - Großer Kopf + Groß </string> <string name="Big Pectorals"> Große Brustmuskeln @@ -1780,13 +1960,13 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ Sommersprossen </string> <string name="Body Thick"> - Körper - breit + breit </string> <string name="Body Thickness"> Körperbreite </string> <string name="Body Thin"> - Körper - schmal + schmal </string> <string name="Bow Legged"> o-beinig @@ -2010,12 +2190,6 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ <string name="Eyes Bugged"> Glubschaugen </string> - <string name="Eyes Shear Left Up"> - Augen Verzerrung links hoch - </string> - <string name="Eyes Shear Right Up"> - Augen Verzerrung rechts hoch - </string> <string name="Face Shear"> Gesichtsverzerrung </string> @@ -2149,7 +2323,7 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ Absatzform </string> <string name="Height"> - Höhe + Größe </string> <string name="High"> Hoch @@ -2431,16 +2605,16 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ Mehr </string> <string name="More Sloped"> - Mehr + Flach </string> <string name="More Square"> - Mehr + Eckiger </string> <string name="More Upper Lip"> Mehr </string> <string name="More Vertical"> - Mehr + Steil </string> <string name="More Volume"> Mehr @@ -2755,10 +2929,10 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ Falten </string> <string name="Shoe Height"> - Höhe + Schuhart </string> <string name="Short"> - Kurz + Sandale </string> <string name="Short Arms"> Kurze Arme @@ -2839,7 +3013,7 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ Kleine Hände </string> <string name="Small Head"> - Kleiner Kopf + Klein </string> <string name="Smooth"> Glätten @@ -2887,7 +3061,7 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ Nach vorne </string> <string name="Tall"> - Groß + Stiefel </string> <string name="Taper Back"> Ansatzbreite hinten @@ -3018,6 +3192,27 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ <string name="LocationCtrlComboBtnTooltip"> Mein Reiseverlauf </string> + <string name="LocationCtrlForSaleTooltip"> + Dieses Land kaufen + </string> + <string name="LocationCtrlVoiceTooltip"> + Voice hier nicht möglich + </string> + <string name="LocationCtrlFlyTooltip"> + Fliegen ist unzulässig + </string> + <string name="LocationCtrlPushTooltip"> + Kein Stoßen + </string> + <string name="LocationCtrlBuildTooltip"> + Bauen/Fallen lassen von Objekten ist verboten + </string> + <string name="LocationCtrlScriptsTooltip"> + Skripte sind unzulässig + </string> + <string name="LocationCtrlDamageTooltip"> + Gesundheit + </string> <string name="UpdaterWindowTitle"> [APP_NAME] Aktualisierung </string> @@ -3075,6 +3270,33 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ <string name="IM_moderator_label"> (Moderator) </string> + <string name="started_call"> + haben/hat einen Anruf initiiert + </string> + <string name="joined_call"> + ist dem Gespräch beigetreten + </string> + <string name="ringing-im"> + Verbindung wird hergestellt... + </string> + <string name="connected-im"> + Verbunden. Klicken Sie auf Anruf beenden, um die Verbindung zu trennen + </string> + <string name="hang_up-im"> + Anruf wurde beendet + </string> + <string name="answering-im"> + Wird verbunden... + </string> + <string name="conference-title"> + Ad-hoc-Konferenz + </string> + <string name="inventory_item_offered-im"> + Inventarobjekt angeboten + </string> + <string name="share_alert"> + Objekte aus dem Inventar hier her ziehen + </string> <string name="only_user_message"> Sie sind der einzige Benutzer in dieser Sitzung. </string> @@ -3084,6 +3306,12 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ <string name="invite_message"> Klicken Sie auf [BUTTON NAME], um eine Verbindung zu diesem Voice-Chat herzustellen. </string> + <string name="muted_message"> + Sie haben diesen Einwohner ignoriert. Wenn Sie eine Nachricht senden, wird dieser freigeschaltet. + </string> + <string name="generic"> + Fehler bei Anfrage, bitte versuchen Sie es später. + </string> <string name="generic_request_error"> Fehler bei Anfrage, bitte versuchen Sie es später. </string> @@ -3102,19 +3330,37 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ <string name="not_a_mod_error"> Sie sind kein Sitzungsmoderator. </string> + <string name="muted"> + Ein Gruppenmoderator hat Ihren Text-Chat deaktiviert. + </string> <string name="muted_error"> Ein Gruppenmoderator hat Ihren Text-Chat deaktiviert. </string> <string name="add_session_event"> Es konnten keine Benutzer zur Chat-Sitzung mit [RECIPIENT] hinzugefügt werden. </string> + <string name="message"> + Ihre Nachricht konnte nicht an die Chat-Sitzung mit [RECIPIENT] gesendet werden. + </string> <string name="message_session_event"> Ihre Nachricht konnte nicht an die Chat-Sitzung mit [RECIPIENT] gesendet werden. </string> + <string name="mute"> + Fehler während Moderation. + </string> + <string name="removed"> + Sie wurden von der Gruppe ausgeschlossen. + </string> <string name="removed_from_group"> Sie wurden von der Gruppe ausgeschlossen. </string> <string name="close_on_no_ability"> Sie haben nicht mehr die Berechtigung an der Chat-Sitzung teilzunehmen. </string> + <string name="unread_chat_single"> + [SOURCES] hat etwas Neues gesagt + </string> + <string name="unread_chat_multiple"> + [SOURCES] haben etwas Neues gesagt + </string> </strings> diff --git a/indra/newview/skins/default/xui/en/floater_aaa.xml b/indra/newview/skins/default/xui/en/floater_aaa.xml index 0b48ba9321..b4d2dabc5c 100644 --- a/indra/newview/skins/default/xui/en/floater_aaa.xml +++ b/indra/newview/skins/default/xui/en/floater_aaa.xml @@ -18,7 +18,8 @@ single_instance="true" width="320"> <string name="nudge_parabuild">Nudge 1</string> - <string name="test_the_vlt">This string CHANGE is extracted.</string> + <string name="test_the_vlt">This string CHANGE2 is extracted.</string> + <string name="testing_eli">Just a test. change here. more change.</string> <chat_history allow_html="true" bg_readonly_color="ChatHistoryBgColor" diff --git a/indra/newview/skins/default/xui/en/floater_buy_currency.xml b/indra/newview/skins/default/xui/en/floater_buy_currency.xml index 8f67f564a2..703a02d995 100644 --- a/indra/newview/skins/default/xui/en/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/en/floater_buy_currency.xml @@ -114,6 +114,7 @@ </text> <line_editor type="string" + max_length="10" halign="right" font="SansSerifMedium" select_on_focus="true" diff --git a/indra/newview/skins/default/xui/en/floater_color_picker.xml b/indra/newview/skins/default/xui/en/floater_color_picker.xml index fbecebc363..0daef29bc5 100644 --- a/indra/newview/skins/default/xui/en/floater_color_picker.xml +++ b/indra/newview/skins/default/xui/en/floater_color_picker.xml @@ -181,7 +181,7 @@ image_unselected="eye_button_inactive.tga" layout="topleft" left_pad="50" - name="Pipette" + name="color_pipette" width="28" /> <button follows="right|bottom" diff --git a/indra/newview/skins/default/xui/en/floater_map.xml b/indra/newview/skins/default/xui/en/floater_map.xml index 3a5ceed5fb..3ddb7bc349 100644 --- a/indra/newview/skins/default/xui/en/floater_map.xml +++ b/indra/newview/skins/default/xui/en/floater_map.xml @@ -1,14 +1,17 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater legacy_header_height="18" - can_minimize="false" + can_minimize="true" can_resize="true" + center_horiz="true" + center_vert="true" follows="top|right" height="225" layout="topleft" min_height="60" min_width="174" name="Map" + title="Mini Map" help_topic="map" save_rect="true" save_visibility="true" diff --git a/indra/newview/skins/default/xui/en/floater_search.xml b/indra/newview/skins/default/xui/en/floater_search.xml index b0bb282abd..775e7d66f7 100644 --- a/indra/newview/skins/default/xui/en/floater_search.xml +++ b/indra/newview/skins/default/xui/en/floater_search.xml @@ -2,9 +2,9 @@ <floater legacy_header_height="13" can_resize="true" - height="646" + height="546" layout="topleft" - min_height="646" + min_height="546" min_width="670" name="floater_search" help_topic="floater_search" @@ -21,7 +21,7 @@ Done </floater.string> <layout_stack - bottom="641" + bottom="541" follows="left|right|top|bottom" layout="topleft" left="10" @@ -42,7 +42,7 @@ left="0" name="browser" top="0" - height="600" + height="500" width="650" /> <text follows="bottom|left" diff --git a/indra/newview/skins/default/xui/en/menu_attachment_other.xml b/indra/newview/skins/default/xui/en/menu_attachment_other.xml index 5b94645b60..c5b31c7f63 100644 --- a/indra/newview/skins/default/xui/en/menu_attachment_other.xml +++ b/indra/newview/skins/default/xui/en/menu_attachment_other.xml @@ -30,6 +30,8 @@ name="Call"> <menu_item_call.on_click function="Avatar.Call" /> + <menu_item_call.on_enable + function="Avatar.EnableCall" /> </menu_item_call> <menu_item_call label="Invite to Group" diff --git a/indra/newview/skins/default/xui/en/menu_avatar_other.xml b/indra/newview/skins/default/xui/en/menu_avatar_other.xml index 0ad41546d2..ac9101cfd9 100644 --- a/indra/newview/skins/default/xui/en/menu_avatar_other.xml +++ b/indra/newview/skins/default/xui/en/menu_avatar_other.xml @@ -30,6 +30,8 @@ name="Call"> <menu_item_call.on_click function="Avatar.Call" /> + <menu_item_call.on_enable + function="Avatar.EnableCall" /> </menu_item_call> <menu_item_call label="Invite to Group" diff --git a/indra/newview/skins/default/xui/en/menu_gesture_gear.xml b/indra/newview/skins/default/xui/en/menu_gesture_gear.xml index d96f3c5494..649f0edff7 100644 --- a/indra/newview/skins/default/xui/en/menu_gesture_gear.xml +++ b/indra/newview/skins/default/xui/en/menu_gesture_gear.xml @@ -62,14 +62,4 @@ function="Gesture.EnableAction" parameter="edit_gesture" /> </menu_item_call> - <menu_item_call - label="Inspect" - layout="topleft" - name="inspect"> - <on_click - function="Gesture.Action.ShowPreview" /> - <on_enable - function="Gesture.EnableAction" - parameter="inspect" /> - </menu_item_call> </menu> diff --git a/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml index dde92f23b6..85ec174829 100644 --- a/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml +++ b/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml @@ -32,6 +32,8 @@ name="call"> <menu_item_call.on_click function="InspectAvatar.Call"/> + <menu_item_call.on_enable + function="InspectAvatar.Gear.EnableCall"/> </menu_item_call> <menu_item_call label="Teleport" diff --git a/indra/newview/skins/default/xui/en/menu_login.xml b/indra/newview/skins/default/xui/en/menu_login.xml index a0dec346a4..5f38522758 100644 --- a/indra/newview/skins/default/xui/en/menu_login.xml +++ b/indra/newview/skins/default/xui/en/menu_login.xml @@ -10,6 +10,7 @@ <menu create_jump_keys="true" label="Me" + tear_off="true" name="File"> <menu_item_call label="Preferences" @@ -39,6 +40,7 @@ <menu create_jump_keys="true" label="Help" + tear_off="true" name="Help"> <menu_item_call label="[SECOND_LIFE] Help" diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 7546d86313..b16660d06e 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -3914,7 +3914,7 @@ Are you sure you want to quit? type="alertmodal"> Use this tool to report violations of the [http://secondlife.com/corporate/tos.php Terms of Service] and [http://secondlife.com/corporate/cs.php Community Standards]. -All reported abuses are investigated and resolved. You can view the resolution by reading the [http://secondlife.com/support/incidentreport.php Incident Report]. +All reported abuses are investigated and resolved. <unique/> </notification> diff --git a/indra/newview/skins/default/xui/en/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/en/panel_block_list_sidetray.xml index 39170b90ca..072ea882e6 100644 --- a/indra/newview/skins/default/xui/en/panel_block_list_sidetray.xml +++ b/indra/newview/skins/default/xui/en/panel_block_list_sidetray.xml @@ -29,7 +29,7 @@ text_color="white" top="5" width="250"> - Blocked List + Block List </text> <scroll_list follows="all" diff --git a/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml index 0893c204e7..1968d96205 100644 --- a/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml +++ b/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml @@ -37,6 +37,7 @@ background_visible="true" top="2" width="23" /> <text + allow_html="false" follows="top|left|right" font="SansSerifHugeBold" height="26" diff --git a/indra/newview/skins/default/xui/en/panel_group_list_item.xml b/indra/newview/skins/default/xui/en/panel_group_list_item.xml index c243d08b97..b674b39d9b 100644 --- a/indra/newview/skins/default/xui/en/panel_group_list_item.xml +++ b/indra/newview/skins/default/xui/en/panel_group_list_item.xml @@ -36,6 +36,7 @@ top="2" width="20" /> <text + allow_html="false" follows="left|right" font="SansSerifSmall" height="15" diff --git a/indra/newview/skins/default/xui/en/panel_landmark_info.xml b/indra/newview/skins/default/xui/en/panel_landmark_info.xml index 67a4edbf32..396699ad6c 100644 --- a/indra/newview/skins/default/xui/en/panel_landmark_info.xml +++ b/indra/newview/skins/default/xui/en/panel_landmark_info.xml @@ -229,6 +229,7 @@ value="Title:" width="290" /> <text + allow_html="false" follows="left|top" height="22" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/panel_pick_info.xml b/indra/newview/skins/default/xui/en/panel_pick_info.xml index 65ccd10cf0..7489988722 100644 --- a/indra/newview/skins/default/xui/en/panel_pick_info.xml +++ b/indra/newview/skins/default/xui/en/panel_pick_info.xml @@ -88,6 +88,7 @@ follows="all" height="100" width="280" + allow_html="true" hide_scrollbar="false" layout="topleft" left="10" diff --git a/indra/newview/skins/default/xui/en/panel_place_profile.xml b/indra/newview/skins/default/xui/en/panel_place_profile.xml index 8fc2ae39f0..7ac771de27 100644 --- a/indra/newview/skins/default/xui/en/panel_place_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_place_profile.xml @@ -246,6 +246,7 @@ </layout_panel> </layout_stack> <text + allow_html="false" follows="left|top|right" font="SansSerifLarge" height="14" @@ -258,6 +259,7 @@ value="SampleRegion" width="290" /> <text + allow_html="false" follows="left|top|right" height="14" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml index a8e24366f2..0aaeb6114e 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml @@ -78,19 +78,19 @@ top_pad="10" width="350" /> <check_box - control_name="MediaEnabled" + name="media_enabled" + control_name="AudioStreamingMedia" height="16" label="Media Enabled" layout="topleft" left="30" - name="media_enabled" top_pad="10" width="350"> <check_box.commit_callback function="Pref.MediaEnabled" /> </check_box> <check_box - enabled_control="MediaEnabled" + enabled_control="AudioStreamingMedia" control_name="ParcelMediaAutoPlayEnable" height="16" label="Allow Media to auto-play" @@ -102,7 +102,19 @@ <check_box.commit_callback function="Pref.ParcelMediaAutoPlayEnable" /> </check_box> - <text + <check_box + control_name="AudioStreamingMusic" + height="16" + label="Music Enabled" + layout="topleft" + left="30" + name="music_enabled" + top_pad="10" + width="350"> + <check_box.commit_callback + function="Pref.MusicEnabled" /> + </check_box> + <text type="string" length="1" follows="left|top" diff --git a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml index 17ababe854..8723e0a832 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml @@ -279,7 +279,7 @@ width="480" /> <radio_item height="20" - label="Use my browser (IE, Firefox)" + label="Use my browser (IE, Firefox, Safari)" layout="topleft" left_delta="0" name="external" diff --git a/indra/newview/skins/default/xui/en/panel_teleport_history_item.xml b/indra/newview/skins/default/xui/en/panel_teleport_history_item.xml index 4f40e00815..c5f3fcc27d 100644 --- a/indra/newview/skins/default/xui/en/panel_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/en/panel_teleport_history_item.xml @@ -41,6 +41,7 @@ height="20" layout="topleft" left_pad="5" + allow_html="false" use_ellipses="true" name="region" text_color="white" diff --git a/indra/newview/skins/default/xui/en/widgets/button.xml b/indra/newview/skins/default/xui/en/widgets/button.xml index 51f85e65e2..74d8478551 100644 --- a/indra/newview/skins/default/xui/en/widgets/button.xml +++ b/indra/newview/skins/default/xui/en/widgets/button.xml @@ -7,6 +7,10 @@ image_selected="PushButton_Selected" image_disabled_selected="PushButton_Selected_Disabled" image_disabled="PushButton_Disabled" + image_left_pad="0" + image_right_pad="0" + image_top_pad="0" + image_bottom_pad="0" label_color="ButtonLabelColor" label_color_selected="ButtonLabelSelectedColor" label_color_disabled="ButtonLabelDisabledColor" diff --git a/indra/newview/skins/default/xui/en/widgets/location_input.xml b/indra/newview/skins/default/xui/en/widgets/location_input.xml index 1c0a8ba7c5..70a58b8e03 100644 --- a/indra/newview/skins/default/xui/en/widgets/location_input.xml +++ b/indra/newview/skins/default/xui/en/widgets/location_input.xml @@ -96,7 +96,7 @@ name="damage_icon" width="14" height="13" - top="25" + top="21" left="2" follows="right|top" image_name="Parcel_Damage_Dark" 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 4b134526e0..71a38391cd 100644 --- a/indra/newview/skins/default/xui/ja/floater_about_land.xml +++ b/indra/newview/skins/default/xui/ja/floater_about_land.xml @@ -36,10 +36,10 @@ (グループ所有) </panel.string> <panel.string name="profile_text"> - プロフィール... + プロフィール </panel.string> <panel.string name="info_text"> - 情報... + 情報 </panel.string> <panel.string name="public_text"> (公共) @@ -51,8 +51,7 @@ (購入審査中) </panel.string> <panel.string name="no_selection_text"> - 区画が選定されていません。 -「世界」メニュー>「土地情報」に進むか、別の区画を選択して、詳細を表示します。 + 区画が選択されていません。 </panel.string> <text name="Name:"> 名前: @@ -79,13 +78,15 @@ <text name="OwnerText"> Leyla Linden </text> - <button label="プロフィール..." label_selected="プロフィール..." name="Profile..."/> <text name="Group:"> グループ: </text> - <button label="設定..." label_selected="設定..." name="Set..."/> + <text name="GroupText"> + Leyla Linden + </text> + <button label="設定" label_selected="設定..." name="Set..."/> <check_box label="グループへの譲渡を許可" name="check deed" tool_tip="グループのオフィサーはこの土地をグループに譲渡できます。そうするとグループの土地割り当てによってサポートされます。"/> - <button label="譲渡..." label_selected="譲渡..." name="Deed..." tool_tip="選択されたグループのオフィサーであるときのみ、土地を譲渡できます。"/> + <button label="譲渡" label_selected="譲渡..." name="Deed..." tool_tip="選択されたグループのオフィサーであるときのみ、土地を譲渡できます。"/> <check_box label="オーナーが譲渡と共に寄付" name="check contrib" tool_tip="土地がグループに譲渡されるとき、前の所有者は譲渡が成立するよう、十分な土地を寄付します。"/> <text name="For Sale:"> 販売の有無: @@ -96,15 +97,15 @@ <text name="For Sale: Price L$[PRICE]."> 価格: L$[PRICE] (L$[PRICE_PER_SQM]/平方メートル) </text> - <button label="土地を販売..." label_selected="土地を販売..." name="Sell Land..."/> + <button label="土地を売る" label_selected="土地を販売..." name="Sell Land..."/> <text name="For sale to"> 販売先:[BUYER] </text> <text name="Sell with landowners objects in parcel."> - オブジェクトも販売価格に含まれます + オブジェクトを一緒に販売 </text> <text name="Selling with no objects in parcel."> - オブジェクトは販売対象外です + オブジェクトは販売しない </text> <button label="土地販売の取り消し" label_selected="土地販売の取り消し" name="Cancel Land Sale"/> <text name="Claimed:"> @@ -125,12 +126,13 @@ <text name="DwellText"> 誤 </text> - <button label="土地を購入..." label_selected="土地を購入..." left="130" name="Buy Land..." width="125"/> - <button label="グループ用に購入..." label_selected="グループ用に購入..." name="Buy For Group..."/> - <button label="入場許可を購入..." label_selected="入場許可を購入..." left="130" name="Buy Pass..." tool_tip="この土地への一時的なアクセスを許可します。" width="125"/> - <button label="土地を放棄..." label_selected="土地を放棄..." name="Abandon Land..."/> - <button label="土地の返還を要求..." label_selected="土地の返還を要求..." name="Reclaim Land..."/> - <button label="Lindenセール..." label_selected="Lindenセール..." name="Linden Sale..." tool_tip="土地が所有されており、コンテンツが設定されている必要があります。オークションの対象になっていないことも必要条件です。"/> + <button label="土地の購入" label_selected="土地を購入..." left="130" name="Buy Land..." width="125"/> + <button label="スクリプト情報" name="Scripts..."/> + <button label="グループに購入" label_selected="グループ用に購入..." name="Buy For Group..."/> + <button label="入場許可を購入" label_selected="入場許可を購入..." left="130" name="Buy Pass..." tool_tip="この土地への一時的なアクセスを許可します。" width="125"/> + <button label="土地の放棄" label_selected="土地を放棄..." name="Abandon Land..."/> + <button label="土地を取り戻す" label_selected="土地の返還を要求..." name="Reclaim Land..."/> + <button label="リンデンセール" label_selected="Lindenセール..." name="Linden Sale..." tool_tip="土地が所有されており、コンテンツが設定されている必要があります。オークションの対象になっていないことも必要条件です。"/> </panel> <panel label="約款" name="land_covenant_panel"> <panel.string name="can_resell"> @@ -149,9 +151,6 @@ <text font="SansSerifLarge" name="estate_section_lbl"> 不動産: </text> - <text name="estate_name_lbl"> - 名前: - </text> <text name="estate_name_text"> メインランド </text> @@ -170,11 +169,8 @@ <text font="SansSerifLarge" name="region_section_lbl"> 地域: </text> - <text name="region_name_lbl"> - 名前: - </text> <text name="region_name_text"> - Leyla + EricaVille </text> <text name="region_landtype_lbl"> 種類: @@ -213,7 +209,7 @@ 地域オブジェクトボーナス要因: [BONUS] </text> <text name="Simulator primitive usage:" width="500"> - 地域全体のプリム使用状況: + プリム使用状況: </text> <text left="200" name="objects_available"> [MAX]の内[COUNT]([AVAILABLE]利用可能) @@ -237,7 +233,7 @@ [COUNT] </text> <button label="表示" label_selected="表示" name="ShowOwner" right="-145"/> - <button label="返却..." label_selected="返却..." name="ReturnOwner..." right="-15" tool_tip="オブジェクトをオーナーに返却します"/> + <button label="返却" label_selected="返却..." name="ReturnOwner..." right="-15" tool_tip="オブジェクトをオーナーに返却します"/> <text name="Set to group:"> グループに設定: </text> @@ -245,7 +241,7 @@ [COUNT] </text> <button label="表示" label_selected="表示" name="ShowGroup" right="-145"/> - <button label="返却..." label_selected="返却..." name="ReturnGroup..." right="-15" tool_tip="オブジェクトをオーナーに返却します"/> + <button label="返却" label_selected="返却..." name="ReturnGroup..." right="-15" tool_tip="オブジェクトをオーナーに返却します"/> <text name="Owned by others:"> 他人による所有: </text> @@ -253,7 +249,7 @@ [COUNT] </text> <button label="表示" label_selected="表示" name="ShowOther" right="-145"/> - <button label="返却..." label_selected="返却..." name="ReturnOther..." right="-15" tool_tip="オブジェクトをオーナーに返却します"/> + <button label="返却" label_selected="返却..." name="ReturnOther..." right="-15" tool_tip="オブジェクトをオーナーに返却します"/> <text name="Selected / sat upon:"> 選択済み/決定済み: </text> @@ -261,14 +257,14 @@ [COUNT] </text> <text name="Autoreturn" width="500"> - 他の住人のオブジェクトの自動返却(分、0で自動返却なし) + 他人のオブジェクトを自動返却(分単位、0で自動返却なし): </text> <line_editor left_delta="5" name="clean other time" right="-80"/> <text name="Object Owners:" width="150"> オブジェクトのオーナー: </text> - <button label="リスト更新" label_selected="リスト更新" left="146" name="Refresh List"/> - <button label="オブジェクトの返却..." label_selected="オブジェクトの返却..." left="256" name="Return objects..."/> + <button label="リスト更新" label_selected="リスト更新" left="146" name="Refresh List" tool_tip="オブジェクトのリストを更新"/> + <button label="オブジェクトを返却する" label_selected="オブジェクトの返却..." left="256" name="Return objects..."/> <name_list label="カウント" name="owner list"> <name_list.columns label="タイプ" name="type"/> <name_list.columns name="online_status"/> @@ -289,13 +285,13 @@ あなたはこの区画の設定編集ができないため、このオプションは無効です。 </panel.string> <panel.string name="mature_check_mature"> - Matureコンテンツ + 控えめコンテンツ </panel.string> <panel.string name="mature_check_adult"> Adultコンテンツ </panel.string> <panel.string name="mature_check_mature_tooltip"> - あなたの区画情報及びコンテンツはMatureとされています。 + あなたの区画情報及びコンテンツは控えめとされています。 </panel.string> <panel.string name="mature_check_adult_tooltip"> あなたの区画情報及びコンテンツはAdultとされています。 @@ -310,31 +306,31 @@ プッシングを制限 (地域優先) </panel.string> <text name="allow_label"> - 他の住人に以下を許可: + 他の住人への許可: </text> <check_box label="地形を編集" name="edit land check" tool_tip="チェックを入れると、他人があなたの土地の地形編集を行うことが可能となります。このオプションのチェックを外しておくことをおすすめします。外した状態であなたの土地の地形編集が可能です。"/> <check_box label="飛行" name="check fly" tool_tip="チェックを入れるとこの土地での飛行が可能となります。チェックを外すと土地に入る際と通り過ぎるときのみ飛行可能となります。"/> <text left="138" name="allow_label2" width="144"> - オブジェクトの作成: + 制作: </text> - <check_box label="すべての住人" left="280" name="edit objects check"/> + <check_box label="全員" left="280" name="edit objects check"/> <check_box label="グループ" left="380" name="edit group objects check"/> <text left="138" name="allow_label3" width="144"> オブジェクトの進入: </text> - <check_box label="すべての住人" left="280" name="all object entry check"/> + <check_box label="全員" left="280" name="all object entry check"/> <check_box label="グループ" left="380" name="group object entry check"/> <text left="138" name="allow_label4" width="144"> スクリプトの実行: </text> - <check_box label="すべての住人" left="280" name="check other scripts"/> + <check_box label="全員" left="280" name="check other scripts"/> <check_box label="グループ" left="380" name="check group scripts"/> <text name="land_options_label"> 土地オプション: </text> <check_box label="安全(ダメージなし)" name="check safe" tool_tip="チェックを入れるとこの土地でのダメージコンバットが無効になり、「安全」に設定されます。 チェックを外すとダメージコンバットが有効になります。"/> <check_box label="プッシングを制限" name="PushRestrictCheck" tool_tip="スクリプトによるプッシングを制限します。 このオプションを選択することにより、あなたの土地での破壊的行動を妨げることができます。"/> - <check_box label="検索に表示>(週L$30)以下の場所" name="ShowDirectoryCheck" tool_tip="検索結果でこの区画を表示させる"/> + <check_box label="検索に区画を表示(週 L$30)" name="ShowDirectoryCheck" tool_tip="検索結果でこの区画を表示させる"/> <combo_box name="land category with adult"> <combo_box.item label="全カテゴリ" name="item0"/> <combo_box.item label="Linden所在地" name="item1"/> @@ -364,7 +360,7 @@ <combo_box.item label="ショッピング" name="item11"/> <combo_box.item label="その他" name="item12"/> </combo_box> - <check_box label="Matureコンテンツ" name="MatureCheck" tool_tip=""/> + <check_box label="控えめコンテンツ" name="MatureCheck" tool_tip=""/> <text name="Snapshot:"> スナップショット: </text> @@ -389,27 +385,24 @@ </text> <combo_box name="media type" tool_tip="URL が動画、ウェブ・ページ、その他のメディアの場合に指定します"/> <text name="at URL:"> - ホーム URL: + ホームページ: </text> - <button label="設定..." label_selected="設定..." name="set_media_url"/> + <button label="設定" label_selected="設定..." name="set_media_url"/> <text name="CurrentURL:"> - 現在の URL: + 現在のページ: </text> - <button label="リセット..." label_selected="リセット..." name="reset_media_url"/> + <button label="リセット..." label_selected="リセット..." name="reset_media_url" tool_tip="URLを更新"/> <check_box label="URL を非表示" name="hide_media_url" tool_tip="このオプションをオンにすると、許可なしでこの区画情報にアクセスしているユーザーにはメディア URL が表示されません。 これは HTML タイプには使用できませんのでご注意ください。"/> <text name="Description:"> 説明: </text> <line_editor name="url_description" tool_tip="[再生]/[ロード]ボタンの隣に表示されるテキスト"/> <text name="Media texture:"> - テクスチ -ャ取替: + テクスチャの置き換え: </text> <texture_picker label="" name="media texture" tool_tip="写真をクリックして選択"/> <text name="replace_texture_help" width="290"> - このテクスチャを使用するオブジェクトのプレイをクリックすると、ムービーや Web ページを表示します。 - -テクスチャを変更するにはサムネイルを選択してください。 + このテクスチャを使用するオブジェクトのプレイをクリックすると、ムービーや Web ページを表示します。 テクスチャを変更するにはサムネイルを選択してください。 </text> <check_box label="スケールを自動設定" name="media_auto_scale" tool_tip="このオプションをチェックすると、この区画のコンテンツのスケールが自動的に設定されます。 動作速度と画質が少し低下することがありますが、他のテクスチャーのスケーリングや整列が必要になることはありません。"/> <text name="media_size" tool_tip="レンダリングするウェブ・メディアのサイズ。デフォルトの 0 のままにします。"> @@ -425,7 +418,7 @@ </text> <check_box label="ループ" name="media_loop" tool_tip="メディアをループ再生します。 メディアの再生が終わったら、最初から再生し直します。"/> </panel> - <panel label="オーディオ" name="land_audio_panel"> + <panel label="サウンド" name="land_audio_panel"> <text name="MusicURL:"> 音楽 URL: </text> @@ -441,18 +434,21 @@ <check_box label="この区画でのボイス使用を制限" name="parcel_enable_voice_channel_parcel"/> </panel> <panel label="アクセス" name="land_access_panel"> + <panel.string name="access_estate_defined"> + (エステートに限定) + </panel.string> <panel.string name="estate_override"> 1つ以上のオプションが、不動産レベルで設定されています。 </panel.string> <text name="Limit access to this parcel to:"> この区画にアクセス </text> - <check_box label="パブリック・アクセスを許可" name="public_access"/> + <check_box label="パブリックアクセスを許可 [MATURITY]" name="public_access"/> <text name="Only Allow"> - 次の住人のアクセスをブロック: + 次の住人のアクセス禁止: </text> - <check_box label="Linden Labに支払い情報を登録していない住人" name="limit_payment" tool_tip="支払い情報未確認の住人を排除する"/> - <check_box label="年齢確認を済ませていない成人の住人" name="limit_age_verified" tool_tip="年齢確認を済ませていない住人を立入禁止にします。 詳しい情報は [SUPPORT_SITE] をご覧下さい。"/> + <check_box label="支払情報登録済 [ESTATE_PAYMENT_LIMIT]" name="limit_payment" tool_tip="未確認の住人の立入を禁止します。"/> + <check_box label="年齢確認 [ESTATE_AGE_LIMIT]" name="limit_age_verified" tool_tip="年齢確認を済ませていない住人の立入を禁止します。 詳しい情報は [SUPPORT_SITE] をご覧下さい。"/> <check_box label="グループ・アクセスを許可:[GROUP]" name="GroupCheck" tool_tip="[一般]タブで、グループを選択してください。"/> <check_box label="入場許可を販売:" name="PassCheck" tool_tip="この区画への一時的なアクセスを許可"/> <combo_box name="pass_combo"> @@ -461,18 +457,22 @@ </combo_box> <spinner label="価格(L$):" name="PriceSpin"/> <spinner label="アクセス時間:" name="HoursSpin"/> - <text label="常に許可" name="AllowedText"> - 許可された住人 - </text> - <name_list name="AccessList" tool_tip="([LISTED]リスト入り、[MAX]最大)"/> - <button label="追加..." label_selected="追加..." name="add_allowed"/> - <button label="削除" label_selected="削除" name="remove_allowed"/> - <text label="禁止" name="BanCheck"> - 禁止された住人 - </text> - <name_list name="BannedList" tool_tip="([LISTED]リスト入り、[MAX]最大)"/> - <button label="追加..." label_selected="追加..." name="add_banned"/> - <button label="削除" label_selected="削除" name="remove_banned"/> + <panel name="Allowed_layout_panel"> + <text label="常に許可" name="AllowedText"> + 立入を許可された住人 + </text> + <name_list name="AccessList" tool_tip="(合計[LISTED] 人、最大 [MAX] 人)"/> + <button label="追加" name="add_allowed"/> + <button label="削除" label_selected="削除" name="remove_allowed"/> + </panel> + <panel name="Banned_layout_panel"> + <text label="禁止" name="BanCheck"> + 立入禁止された住人 + </text> + <name_list name="BannedList" tool_tip="(合計 [LISTED] 人、最大 [MAX] 人)"/> + <button label="追加" name="add_banned"/> + <button label="削除" label_selected="削除" name="remove_banned"/> + </panel> </panel> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_animation_preview.xml b/indra/newview/skins/default/xui/ja/floater_animation_preview.xml index 9ec4bfc4e7..c355924f33 100644 --- a/indra/newview/skins/default/xui/ja/floater_animation_preview.xml +++ b/indra/newview/skins/default/xui/ja/floater_animation_preview.xml @@ -170,7 +170,8 @@ </combo_box> <spinner label="フェーズイン(秒)" name="ease_in_time" tool_tip="アニメーションのブレンドイン時間(秒)"/> <spinner label="フェーズアウト(秒)" name="ease_out_time" tool_tip="アニメーションのブレンドアウト時間(秒)"/> - <button label="" name="play_btn" tool_tip="アニメーションの再生・一時停止"/> + <button label="" name="play_btn" tool_tip="アニメーションを再生する"/> + <button name="pause_btn" tool_tip="アニメーションを一時停止する"/> <button label="" name="stop_btn" tool_tip="アニメーションの再生を停止"/> <slider label="" name="playback_slider"/> <text name="bad_animation_text"> @@ -178,6 +179,6 @@ Poser 4からエクスポートされたBVHファイルを推奨します。 </text> - <button label="取り消し" name="cancel_btn"/> <button label="アップロードL$[AMOUNT]" name="ok_btn"/> + <button label="取り消し" name="cancel_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_avatar_textures.xml b/indra/newview/skins/default/xui/ja/floater_avatar_textures.xml index 4a20c58181..a199a10823 100644 --- a/indra/newview/skins/default/xui/ja/floater_avatar_textures.xml +++ b/indra/newview/skins/default/xui/ja/floater_avatar_textures.xml @@ -10,33 +10,37 @@ 合成テクスチャー </text> <button label="テクスチャID一覧をコンソールに書き込む" label_selected="捨てる" name="Dump"/> - <texture_picker label="髪型" name="hair-baked"/> - <texture_picker label="髪" name="hair_grain"/> - <texture_picker label="髪のアルファ" name="hair_alpha"/> - <texture_picker label="頭" name="head-baked"/> - <texture_picker label="メイクアップ" name="head_bodypaint"/> - <texture_picker label="頭部のアルファ" name="head_alpha"/> - <texture_picker label="頭部のタトゥー" name="head_tattoo"/> - <texture_picker label="目" name="eyes-baked"/> - <texture_picker label="目" name="eyes_iris"/> - <texture_picker label="目のアルファ" name="eyes_alpha"/> - <texture_picker label="上半身" name="upper-baked"/> - <texture_picker label="上半身のボディペイント" name="upper_bodypaint"/> - <texture_picker label="下着シャツ" name="upper_undershirt"/> - <texture_picker label="手袋" name="upper_gloves"/> - <texture_picker label="シャツ" name="upper_shirt"/> - <texture_picker label="上着" name="upper_jacket"/> - <texture_picker label="アルファ(上)" name="upper_alpha"/> - <texture_picker label="上部のタトゥー" name="upper_tattoo"/> - <texture_picker label="下半身" name="lower-baked"/> - <texture_picker label="下半身のボディペイント" name="lower_bodypaint"/> - <texture_picker label="下着パンツ" name="lower_underpants"/> - <texture_picker label="靴下" name="lower_socks"/> - <texture_picker label="靴" name="lower_shoes"/> - <texture_picker label="パンツ" name="lower_pants"/> - <texture_picker label="ジャケット" name="lower_jacket"/> - <texture_picker label="アルファ(下)" name="lower_alpha"/> - <texture_picker label="下部のタトゥー" name="lower_tattoo"/> - <texture_picker label="スカート" name="skirt-baked"/> - <texture_picker label="スカート" name="skirt"/> + <scroll_container name="profile_scroll"> + <panel name="scroll_content_panel"> + <texture_picker label="髪" name="hair-baked"/> + <texture_picker label="髪" name="hair_grain"/> + <texture_picker label="髪のアルファ" name="hair_alpha"/> + <texture_picker label="頭" name="head-baked"/> + <texture_picker label="メイクアップ" name="head_bodypaint"/> + <texture_picker label="頭部のアルファ" name="head_alpha"/> + <texture_picker label="頭部のタトゥー" name="head_tattoo"/> + <texture_picker label="目" name="eyes-baked"/> + <texture_picker label="目" name="eyes_iris"/> + <texture_picker label="目のアルファ" name="eyes_alpha"/> + <texture_picker label="上半身" name="upper-baked"/> + <texture_picker label="上半身のボディペイント" name="upper_bodypaint"/> + <texture_picker label="下着シャツ" name="upper_undershirt"/> + <texture_picker label="手袋" name="upper_gloves"/> + <texture_picker label="シャツ" name="upper_shirt"/> + <texture_picker label="上着" name="upper_jacket"/> + <texture_picker label="アルファ(上)" name="upper_alpha"/> + <texture_picker label="上部のタトゥー" name="upper_tattoo"/> + <texture_picker label="下半身" name="lower-baked"/> + <texture_picker label="下半身のボディペイント" name="lower_bodypaint"/> + <texture_picker label="下着パンツ" name="lower_underpants"/> + <texture_picker label="靴下" name="lower_socks"/> + <texture_picker label="靴" name="lower_shoes"/> + <texture_picker label="パンツ" name="lower_pants"/> + <texture_picker label="ジャケット" name="lower_jacket"/> + <texture_picker label="アルファ(下)" name="lower_alpha"/> + <texture_picker label="下部のタトゥー" name="lower_tattoo"/> + <texture_picker label="スカート" name="skirt-baked"/> + <texture_picker label="スカート" name="skirt"/> + </panel> + </scroll_container> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_bulk_perms.xml b/indra/newview/skins/default/xui/ja/floater_bulk_perms.xml index 7afe70f4d7..fbbbd85890 100644 --- a/indra/newview/skins/default/xui/ja/floater_bulk_perms.xml +++ b/indra/newview/skins/default/xui/ja/floater_bulk_perms.xml @@ -49,6 +49,6 @@ <check_box label="修正" name="next_owner_modify"/> <check_box label="コピー" name="next_owner_copy"/> <check_box initial_value="true" label="再販・プレゼント" name="next_owner_transfer" tool_tip="次の所有者はこのオブジェクトを他人にあげたり再販することができます"/> - <button label="Ok" name="apply"/> + <button label="OK" name="apply"/> <button label="キャンセル" name="close"/> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_buy_currency.xml b/indra/newview/skins/default/xui/ja/floater_buy_currency.xml index ffdcf838d3..d202bf1b9f 100644 --- a/indra/newview/skins/default/xui/ja/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/ja/floater_buy_currency.xml @@ -1,66 +1,324 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="buy currency" title="L$ の購入"> - <floater.string name="buy_currency"> - 約 [LOCALAMOUNT] で L$ [LINDENS] を購入 - </floater.string> - <text name="info_need_more"> - L$ が足りません - </text> - <text name="contacting"> - LindeXとコンタクト中… - </text> - <text name="info_buying"> - L$ の購入 - </text> - <text name="balance_label"> - 残高 - </text> - <text name="balance_amount"> - L$ [AMT] - </text> - <text name="currency_action"> - 購入希望額 - </text> - <text name="currency_label"> - L$ - </text> - <line_editor label="L$" name="currency_amt"> - 1234 - </line_editor> - <text name="buying_label"> - 価格 - </text> - <text name="currency_est"> - 約 [LOCALAMOUNT] - </text> - <text left_delta="3" name="getting_data"> - 見積もり中... - </text> - <text name="buy_action"> - [NAME] L$ [PRICE] - </text> - <text name="total_label"> - 新しい残高 - </text> - <text name="total_amount"> - L$ [AMT] - </text> - <text name="currency_links"> - [http://www.secondlife.com/my/account/payment_method_management.php?lang=ja-JP payment method] | [http://www.secondlife.com/my/account/currency.php?lang=ja-JP currency] | [http://www.secondlife.com/my/account/exchange_rates.php?lang=ja-JP exchange rate] - </text> - <text name="exchange_rate_note"> - 金額を再入力して最新換算レートを確認します。 - </text> - <text name="purchase_warning_repurchase"> - この取引を決定すると、L$ を購入します。オブジェクトは購入しません。 - </text> - <text name="purchase_warning_notenough"> - 購入しようとしている L$ が不足しています。 金額を上げてください。 - </text> - <button label="購入する" name="buy_btn"/> - <button label="取り消し" name="cancel_btn"/> - <text name="info_cannot_buy"> - 購入できません - </text> - <button label="Web サイトに移動" name="error_web" width="140"/> +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<floater + legacy_header_height="18" + can_minimize="false" + height="275" + layout="topleft" + title="BUY L$" + name="buy currency" + help_topic="buy_linden_dollars" + single_instance="true" + width="350"> + <floater.string + name="buy_currency"> + Buy L$ [LINDENS] for approx. [LOCALAMOUNT] + </floater.string> + <icon + height="215" + image_name="Linden_Dollar_Background" + layout="topleft" + left="0" + name="normal_background" + top="17" + width="350" /> + <text + type="string" + length="1" + follows="top|left" + font="SansSerifHuge" + layout="topleft" + left="20" + height="30" + top="25" + width="300" + name="info_need_more"> + You need more L$ + </text> + <text + type="string" + length="1" + follows="top|left" + height="16" + layout="topleft" + top="246" + left="15" + width="300" + name="contacting"> + Contacting LindeX... + </text> + <text + type="string" + length="1" + follows="top|left" + font="SansSerifHuge" + layout="topleft" + left="20" + height="30" + top="25" + width="200" + name="info_buying"> + Buy L$ + </text> + <text + type="string" + length="1" + follows="top|left" + font="SansSerifMedium" + height="16" + layout="topleft" + left="20" + name="balance_label" + top="65" + width="210"> + I have + </text> + <text + type="string" + length="1" + font="SansSerifMedium" + follows="top|left" + halign="right" + height="16" + layout="topleft" + left="200" + name="balance_amount" + top_delta="0" + width="120"> + L$ [AMT] + </text> + <text + type="string" + length="1" + follows="top|left" + font="SansSerifMedium" + height="16" + top="95" + layout="topleft" + left="20" + name="currency_action" + width="210"> + I want to buy + </text> + <text + font="SansSerifMedium" + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + top_delta="0" + left="217" + name="currency_label" + width="15"> + L$ + </text> + <line_editor + type="string" + halign="right" + font="SansSerifMedium" + select_on_focus="true" + follows="top|left" + top_delta="-7" + height="22" + label="L$" + left_pad="3" + name="currency_amt" + width="85"> + 1234 + </line_editor> + <text + type="string" + font="SansSerifMedium" + length="1" + follows="top|left" + height="16" + layout="topleft" + left="20" + top="125" + name="buying_label" + width="210"> + For the price + </text> + <text + type="string" + length="1" + font="SansSerifMedium" + text_color="EmphasisColor" + follows="top|left" + halign="right" + height="16" + top_delta="0" + layout="topleft" + left="150" + name="currency_est" + width="170"> + approx. [LOCALAMOUNT] + </text> + <text + type="string" + font="SansSerifSmall" + text_color="EmphasisColor" + length="1" + follows="top|left" + height="16" + layout="topleft" + top="125" + left="170" + width="150" + halign="right" + name="getting_data"> + Estimating... + </text> + <text + type="string" + font="SansSerifSmall" + top="145" + length="1" + follows="top|left" + height="16" + halign="right" + left="150" + width="170" + layout="topleft" + name="buy_action"> + [NAME] L$ [PRICE] + </text> + <text + type="string" + font="SansSerifMedium" + length="1" + follows="top|left" + height="16" + layout="topleft" + left="20" + name="total_label" + top="165" + width="210"> + My new balance will be + </text> + <text + type="string" + length="1" + font="SansSerifMedium" + follows="top|left" + top_delta="0" + height="16" + layout="topleft" + left="200" + halign="right" + name="total_amount" + width="120"> + L$ [AMT] + </text> + <text + type="string" + length="1" + text_color="0.7 0.7 0.7 0.5" + follows="top|left" + layout="topleft" + halign="right" + top="189" + left="20" + width="300" + height="30" + name="currency_links"> + [http://www.secondlife.com/my/account/payment_method_management.php payment method] | [http://www.secondlife.com/my/account/currency.php currency] | [http://www.secondlife.com/my/account/exchange_rates.php exchange rate] + </text> + <text + type="string" + length="1" + text_color="0.7 0.7 0.7 0.5" + follows="top|left" + layout="topleft" + halign="right" + top="202" + left="20" + width="300" + height="30" + name="exchange_rate_note"> +Re-enter amount to see the latest exchange rate. + </text> + <text + type="string" + length="1" + text_color="0.7 0.7 0.7 0.5" + follows="top|left" + layout="topleft" + halign="right" + top="213" + left="10" + width="310" + height="30" + name="purchase_warning_repurchase"> + Confirming this purchase only buys L$, not the object. + </text> + <text + type="string" + length="1" + text_color="0.7 0.7 0.7 0.5" + follows="top|left" + layout="topleft" + halign="right" + top="213" + left="20" + width="300" + height="30" + name="purchase_warning_notenough"> + You aren't buying enough L$. Please increase the amount. + </text> + + <button + follows="bottom|left" + height="20" + label="Buy Now" + layout="topleft" + left="151" + name="buy_btn" + top="242" + width="90"/> + <button + follows="bottom|right" + height="20" + label="Cancel" + layout="topleft" + left_pad="10" + name="cancel_btn" + width="90"/> + <icon + height="215" + image_name="Linden_Dollar_Alert" + layout="topleft" + left="0" + name="error_background" + top="15" + width="350"/> + <text + type="string" + font="SansSerifHuge" + left="165" + width="170" + height="25" + top="25" + name="info_cannot_buy"> + Unable to Buy + </text> + <text + type="string" + width="175" + height="125" + top="60" + left="165" + word_wrap="true" + follows="bottom|right" + name="cannot_buy_message"> + </text> + <button + follows="bottom|left" + height="20" + label="Continue to the Web" + layout="topleft" + left="170" + name="error_web" + top="200" + width="160"/> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_color_picker.xml b/indra/newview/skins/default/xui/ja/floater_color_picker.xml index f6739d59e8..a98da4b8ba 100644 --- a/indra/newview/skins/default/xui/ja/floater_color_picker.xml +++ b/indra/newview/skins/default/xui/ja/floater_color_picker.xml @@ -21,7 +21,7 @@ <check_box label="今すぐ適用" name="apply_immediate"/> <button label="" label_selected="" name="color_pipette"/> <button label="取り消し" label_selected="取り消し" name="cancel_btn"/> - <button label="Ok" label_selected="Ok" name="select_btn"/> + <button label="OK" label_selected="OK" name="select_btn"/> <text name="Current color:"> 現在の色: </text> diff --git a/indra/newview/skins/default/xui/ja/floater_customize.xml b/indra/newview/skins/default/xui/ja/floater_customize.xml index 61423fcf05..7d1809f1ed 100644 --- a/indra/newview/skins/default/xui/ja/floater_customize.xml +++ b/indra/newview/skins/default/xui/ja/floater_customize.xml @@ -1,7 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater customize" title="容姿"> <tab_container name="customize tab container"> - <placeholder label="身体部位" name="body_parts_placeholder"/> + <text label="身体部位" name="body_parts_placeholder"> + 身体部位 + </text> <panel label="シェイプ" name="Shape"> <button label="戻す" label_selected="戻す" name="Revert"/> <button label="身体" label_selected="身体" name="Body"/> @@ -14,8 +16,8 @@ <button label="胴体" label_selected="胴体" name="Torso"/> <button label="両脚" label_selected="両脚" name="Legs"/> <radio_group name="sex radio"> - <radio_item label="女性" name="radio"/> - <radio_item label="男性" name="radio2"/> + <radio_item label="女性" name="radio" value="0"/> + <radio_item label="男性" name="radio2" value="1"/> </radio_group> <text name="title"> [DESC] @@ -33,8 +35,7 @@ [PATH] に所在 </text> <text name="not worn instructions"> - 新しいシェイプ(体型)を持ち物からアバターにドラッグして装着しま -しょう。完全に新規の状態から作成して装着することもできます。 + 持ち物からあなたのアバターに1つドラッグして、新しいシェイプをつけます。 代わりに、はじめから新しく作成して着用することもできます。 </text> <text name="no modify instructions"> あなたはこの服の修正を許されていません。 @@ -67,8 +68,7 @@ [PATH] に所在 </text> <text name="not worn instructions"> - 新しいスキンを持ち物からアバターにドラッグして装着しましょう。 - 完全に新規の状態から作成して装着することもできます。 + 持ち物からあなたのアバターに1つドラッグして、新しいスキンをつけます。 代わりに、はじめから新しく作成して着用することもできます。 </text> <text name="no modify instructions"> あなたはこの服の修正を許されていません。 @@ -105,8 +105,7 @@ [PATH] に所在 </text> <text name="not worn instructions"> - 新しい髪型を持ち物からアバターにドラッグして装着しましょう。 - 完全に新規の状態から作成して装着することもできます。 + 持ち物からあなたのアバターに1つドラッグして、新しい髪をつけます。 代わりに、はじめから新しく作成して着用することもできます。 </text> <text name="no modify instructions"> あなたはこの服の修正を許されていません。 @@ -137,8 +136,7 @@ [PATH] に所在 </text> <text name="not worn instructions"> - 新しい眼を持ち物からアバターにドラッグして装着しましょう。 - 完全に新規の状態から作成して装着することもできます。 + あなたの持ち物からアバターにドラッグして、新しい目をつけます。 代わりに、はじめから新しく作成して着用することもできます。 </text> <text name="no modify instructions"> あなたはこの服の修正を許されていません。 @@ -152,7 +150,9 @@ <button label="別名で保存..." label_selected="別名で保存..." name="Save As"/> <button label="戻す" label_selected="戻す" name="Revert"/> </panel> - <placeholder label="服" name="clothes_placeholder"/> + <text label="服" name="clothes_placeholder"> + 衣類 + </text> <panel label="シャツ" name="Shirt"> <texture_picker label="生地" name="Fabric" tool_tip="写真をクリックして選択"/> <color_swatch label="色/明暗" name="Color/Tint" tool_tip="クリックしてカラーピッカーを開きます"/> @@ -177,8 +177,7 @@ [PATH] に所在 </text> <text name="not worn instructions"> - 新しいシャツを持ち物からアバターにドラッグして装着しましょう。 - 完全に新規の状態から作成して装着することもできます。 + 持ち物からあなたのアバターに1つドラッグして、新しいシャツを着ます。 代わりに、はじめから新しく作成して着用することもできます。 </text> <text name="no modify instructions"> あなたはこの服の修正を許されていません。 @@ -211,8 +210,7 @@ [PATH] に所在 </text> <text name="not worn instructions"> - 新しいズボンを持ち物からアバターにドラッグして装着しましょう。 - 完全に新規の状態から作成して装着することもできます。 + あなたの持ち物からアバターにドラッグして、新しいパンツを履きます。 代わりに、はじめから新しく作成して着用することもできます。 </text> <text name="no modify instructions"> あなたはこの服の修正を許されていません。 @@ -238,8 +236,7 @@ [PATH] に所在 </text> <text name="not worn instructions"> - 新しい靴を持ち物からアバターにドラッグして装着しましょう。 - 完全に新規の状態から作成して装着することもできます。 + あなたの持ち物からアバターにドラッグして、新しい靴を履きます。 代わりに、はじめから新しく作成して着用することもできます。 </text> <text name="no modify instructions"> あなたはこの服の修正を許されていません。 @@ -272,8 +269,7 @@ [PATH] に所在 </text> <text name="not worn instructions"> - 新しい靴下を持ち物からアバターにドラッグして装着しましょう。 - 完全に新規の状態から作成して装着することもできます。 + あなたの持ち物からアバターにドラッグして、新しい靴下を履きます。 代わりに、はじめから新しく作成して着用することもできます。 </text> <text name="no modify instructions"> あなたはこの服の修正を許されていません。 @@ -306,8 +302,7 @@ [PATH] に所在 </text> <text name="not worn instructions"> - 新しい上着を持ち物からアバターにドラッグして装着しましょう。 - 完全に新規の状態から作成して装着することもできます。 + 持ち物からあなたのアバターに1つドラッグして、新しいジャケットを着ます。 代わりに、はじめから新しく作成して着用することもできます。 </text> <text name="no modify instructions"> あなたはこの服の修正を許されていません。 @@ -341,8 +336,7 @@ [PATH] に所在 </text> <text name="not worn instructions"> - 新しい手袋を持ち物からアバターにドラッグして装着しましょう。 - 完全に新規の状態から作成して装着することもできます。 + あなたの持ち物からアバターにドラッグして、新しい手袋をつけます。 代わりに、はじめから新しく作成して着用することもできます。 </text> <text name="no modify instructions"> あなたはこの服の修正を許されていません。 @@ -375,8 +369,7 @@ [PATH] に所在 </text> <text name="not worn instructions"> - 新しい下着を持ち物からアバターにドラッグして装着しましょう。 - 完全に新規の状態から作成して装着することもできます。 + 持ち物からあなたのアバターに1つドラッグして、新しい下着(上)を着ます。 代わりに、はじめから新しく作成して着用することもできます。 </text> <text name="no modify instructions"> あなたはこの服の修正を許されていません。 @@ -409,8 +402,7 @@ [PATH] に所在 </text> <text name="not worn instructions"> - 新しいパンツを持ち物からアバターにドラッグして装着しましょう。 - 完全に新規の状態から作成して装着することもできます。 + あなたの持ち物からアバターにドラッグして、新しい下着(下)を履きます。 代わりに、はじめから新しく作成して着用することもできます。 </text> <text name="no modify instructions"> あなたはこの服の修正を許されていません。 @@ -443,8 +435,7 @@ [PATH] に所在 </text> <text name="not worn instructions"> - 新しいスカートを持物からアバターにドラッグして装着しましょう。 - 完全に新規の状態から作成して装着することもできます。 + 持ち物からあなたのアバターに1つドラッグして、新しいスカートを履きます。 代わりに、はじめから新しく作成して着用することもできます。 </text> <text name="no modify instructions"> あなたはこの服の修正を許されていません。 @@ -477,8 +468,7 @@ 参照 [PATH] </text> <text name="not worn instructions"> - あなたの持ち物からアバターにドラッグして、新しいアルファマスクをつけます。 -代わりに、はじめから新しく作成して着用できます。 + あなたの持ち物からアバターにドラッグして、新しいアルファマスクをつけます。 代わりに、はじめから新しく作成して着用することもできます。 </text> <text name="no modify instructions"> この着用物を修正する権限がありません。 @@ -514,8 +504,7 @@ 参照 [PATH] </text> <text name="not worn instructions"> - あなたの持ち物からアバターにドラッグして、新しいタトゥをつけます。 -代わりに、はじめから新しく作成して着用できます。 + あなたの持ち物からアバターにドラッグして、新しいタトゥをつけます。 代わりに、はじめから新しく作成して着用することもできます。 </text> <text name="no modify instructions"> この着用物を修正する権限がありません。 @@ -533,6 +522,7 @@ <button label="元に戻す" label_selected="元に戻す" name="Revert"/> </panel> </tab_container> + <button label="スクリプト情報" label_selected="スクリプト情報" name="script_info"/> <button label="アウトフィット作成" label_selected="アウトフィット作成" name="make_outfit_btn"/> <button label="キャンセル" label_selected="キャンセル" name="Cancel"/> <button label="OK" label_selected="OK" name="Ok"/> diff --git a/indra/newview/skins/default/xui/ja/floater_god_tools.xml b/indra/newview/skins/default/xui/ja/floater_god_tools.xml index 25de45c094..18380bddc2 100644 --- a/indra/newview/skins/default/xui/ja/floater_god_tools.xml +++ b/indra/newview/skins/default/xui/ja/floater_god_tools.xml @@ -11,7 +11,7 @@ </text> <check_box label="準備" name="check prelude" tool_tip="この設定により、この地域の準備をします。"/> <check_box label="太陽固定" name="check fixed sun" tool_tip="太陽位置を固定([地域/不動産]>[地形]の場合と同様)"/> - <check_box label="テレポートのホームをリセット" name="check reset home" tool_tip="住人がテレポートで去ったとき、彼らのホームを目的地にリセットする。"/> + <check_box label="テレポートのホームをリセット" name="check reset home" tool_tip="住人がテレポートで外に出たら、ホームを目的地にリセットします。"/> <check_box label="可視" name="check visible" tool_tip="この設定により、この地域をゴッド・モード以外でも可視にします。"/> <check_box label="ダメージ" name="check damage" tool_tip="この設定により、この地域内でダメージを有効化します。"/> <check_box label="トラフィック・トラッキングをブロック" name="block dwell" tool_tip="この設定により、この地域内のトラフィック計算をオフにします。"/> diff --git a/indra/newview/skins/default/xui/ja/floater_im_container.xml b/indra/newview/skins/default/xui/ja/floater_im_container.xml index 24cef14ee0..1d028258ec 100644 --- a/indra/newview/skins/default/xui/ja/floater_im_container.xml +++ b/indra/newview/skins/default/xui/ja/floater_im_container.xml @@ -1,2 +1,2 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<multi_floater name="floater_im_box" title="インスタントメッセージ"/> +<multi_floater name="floater_im_box" title="換算"/> diff --git a/indra/newview/skins/default/xui/ja/floater_incoming_call.xml b/indra/newview/skins/default/xui/ja/floater_incoming_call.xml index 32793faa6d..04013799ec 100644 --- a/indra/newview/skins/default/xui/ja/floater_incoming_call.xml +++ b/indra/newview/skins/default/xui/ja/floater_incoming_call.xml @@ -1,5 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="incoming call" title="不明のユーザーからのコール"> + <floater.string name="lifetime"> + 5 + </floater.string> <floater.string name="localchat"> 近くのボイスチャット </floater.string> @@ -12,6 +15,9 @@ <floater.string name="VoiceInviteAdHoc"> がコンファレンスチャットで、ボイスチャットに参加しました。 </floater.string> + <floater.string name="VoiceInviteGroup"> + は [GROUP]. のボイスチャットコールに参加しました。 + </floater.string> <text name="question"> [CURRENT_CHAT] を退席して、このボイスチャットに参加しますか? </text> diff --git a/indra/newview/skins/default/xui/ja/floater_lsl_guide.xml b/indra/newview/skins/default/xui/ja/floater_lsl_guide.xml index 2af693be64..5773752788 100644 --- a/indra/newview/skins/default/xui/ja/floater_lsl_guide.xml +++ b/indra/newview/skins/default/xui/ja/floater_lsl_guide.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="script ed float" title="LSL WIKI"> +<floater name="script ed float" title="LSL レファレンス"> <check_box label="カーソルを追う" name="lock_check"/> <combo_box label="ロック" name="history_combo"/> <button label="戻る" name="back_btn"/> diff --git a/indra/newview/skins/default/xui/ja/floater_media_browser.xml b/indra/newview/skins/default/xui/ja/floater_media_browser.xml index 5a6f2121f8..4f67523eec 100644 --- a/indra/newview/skins/default/xui/ja/floater_media_browser.xml +++ b/indra/newview/skins/default/xui/ja/floater_media_browser.xml @@ -19,7 +19,7 @@ <button label="早送り" name="seek"/> </layout_panel> <layout_panel name="parcel_owner_controls"> - <button label="現在の URL を区画に送信" name="assign"/> + <button label="現在のページを区画に送る" name="assign"/> </layout_panel> <layout_panel name="external_controls"> <button label="外部ウェブ・ブラウザで開く" name="open_browser"/> diff --git a/indra/newview/skins/default/xui/ja/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/ja/floater_outfit_save_as.xml new file mode 100644 index 0000000000..a869b106ce --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_outfit_save_as.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="modal container"> + <button label="保存" label_selected="保存" name="Save"/> + <button label="キャンセル" label_selected="キャンセル" name="Cancel"/> + <text name="Save item as:"> + アウトフィットを別名で保存: + </text> + <line_editor name="name ed"> + [DESC] + </line_editor> +</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_outgoing_call.xml b/indra/newview/skins/default/xui/ja/floater_outgoing_call.xml index 416d104586..8d67108b77 100644 --- a/indra/newview/skins/default/xui/ja/floater_outgoing_call.xml +++ b/indra/newview/skins/default/xui/ja/floater_outgoing_call.xml @@ -1,5 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="outgoing call" title="コール中"> + <floater.string name="lifetime"> + 5 + </floater.string> <floater.string name="localchat"> 近くのボイスチャット </floater.string> @@ -21,6 +24,12 @@ <text name="noanswer"> 繋がりませんでした。 あとでもう一度お試しください。 </text> + <text name="nearby"> + [VOICE_CHANNEL_NAME] への接続が切れました。 「近くのボイスチャット」に再接続されます。 + </text> + <text name="nearby_P2P"> + [VOICE_CHANNEL_NAME] がコールを終了しました。 「近くのボイスチャット」に再接続されます。 + </text> <text name="leaving"> [CURRENT_CHAT] を終了します。 </text> diff --git a/indra/newview/skins/default/xui/ja/floater_preferences.xml b/indra/newview/skins/default/xui/ja/floater_preferences.xml index 7c9a8b61bd..1493219b83 100644 --- a/indra/newview/skins/default/xui/ja/floater_preferences.xml +++ b/indra/newview/skins/default/xui/ja/floater_preferences.xml @@ -8,7 +8,7 @@ <panel label="プライバシー" name="im"/> <panel label="サウンド" name="audio"/> <panel label="チャット" name="chat"/> - <panel label="警告" name="msgs"/> + <panel label="通知" name="msgs"/> <panel label="セットアップ" name="input"/> <panel label="詳細" name="advanced1"/> </tab_container> diff --git a/indra/newview/skins/default/xui/ja/floater_preview_gesture.xml b/indra/newview/skins/default/xui/ja/floater_preview_gesture.xml index 4b4df98348..a378700d15 100644 --- a/indra/newview/skins/default/xui/ja/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/ja/floater_preview_gesture.xml @@ -24,6 +24,9 @@ <floater.string name="Title"> ジェスチャー: [NAME] </floater.string> + <text name="name_text"> + 名前: + </text> <text name="desc_label"> 説明: </text> diff --git a/indra/newview/skins/default/xui/ja/floater_preview_notecard.xml b/indra/newview/skins/default/xui/ja/floater_preview_notecard.xml index 0ab1efd127..6e6e04c7d8 100644 --- a/indra/newview/skins/default/xui/ja/floater_preview_notecard.xml +++ b/indra/newview/skins/default/xui/ja/floater_preview_notecard.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="preview notecard" title="メモ:"> +<floater name="preview notecard" title="ノートカード:"> <floater.string name="no_object"> - このノートを含んだオブジェクトが見つかりません。 + このノートカードが含まれたオブジェクトが見つかりません。 </floater.string> <floater.string name="not_allowed"> このノートを見る権限がありません。 diff --git a/indra/newview/skins/default/xui/ja/floater_preview_texture.xml b/indra/newview/skins/default/xui/ja/floater_preview_texture.xml index 3313ae84b9..c322538127 100644 --- a/indra/newview/skins/default/xui/ja/floater_preview_texture.xml +++ b/indra/newview/skins/default/xui/ja/floater_preview_texture.xml @@ -9,8 +9,6 @@ <text name="desc txt"> 説明: </text> - <button label="OK" name="Keep"/> - <button label="キャンセル" name="Discard"/> <text name="dimensions"> [WIDTH]px x [HEIGHT]px </text> @@ -43,4 +41,7 @@ 2:1 </combo_item> </combo_box> + <button label="OK" name="Keep"/> + <button label="キャンセル" name="Discard"/> + <button label="別名で保存" name="save_tex_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_report_abuse.xml b/indra/newview/skins/default/xui/ja/floater_report_abuse.xml index 599cd5d98d..ca6faf59c2 100644 --- a/indra/newview/skins/default/xui/ja/floater_report_abuse.xml +++ b/indra/newview/skins/default/xui/ja/floater_report_abuse.xml @@ -41,8 +41,8 @@ <combo_box name="category_combo" tool_tip="カテゴリー -- この報告に最も適したカテゴリーを選択してください"> <combo_box.item label="カテゴリーを選択" name="Select_category"/> <combo_box.item label="年齢>年齢偽証" name="Age__Age_play"/> - <combo_box.item label="年齢>成人の住人がTeen Second Life上にいる" name="Age__Adult_resident_on_Teen_Second_Life"/> - <combo_box.item label="年齢>未成年な住人がTeen Second Lifeの外にいる" name="Age__Underage_resident_outside_of_Teen_Second_Life"/> + <combo_box.item label="年齢 > 成人の住人が Teen Second Life にいる" name="Age__Adult_resident_on_Teen_Second_Life"/> + <combo_box.item label="年齢 > 未成年の住人がTeen Second Life の外にいる" name="Age__Underage_resident_outside_of_Teen_Second_Life"/> <combo_box.item label="攻撃>コンバット・サンドボックス/危険なエリア" name="Assault__Combat_sandbox___unsafe_area"/> <combo_box.item label="攻撃>安全なエリア" name="Assault__Safe_area"/> <combo_box.item label="攻撃>武器テスト用サンドボックス" name="Assault__Weapons_testing_sandbox"/> @@ -68,7 +68,7 @@ <combo_box.item label="わいせつ>著しく不快であると見なされるコンテンツまたは行為" name="Indecency__Broadly_offensive_content_or_conduct"/> <combo_box.item label="わいせつ>不適切なアバター名" name="Indecency__Inappropriate_avatar_name"/> <combo_box.item label="わいせつ>PG地域での不適切なコンテンツまたは行為" name="Indecency__Mature_content_in_PG_region"/> - <combo_box.item label="わいせつ>Mature地域での不適切なコンテンツまたは行為" name="Indecency__Inappropriate_content_in_Mature_region"/> + <combo_box.item label="わいせつ > 控えめ指定の地域での不適切なコンテンツまたは行為" name="Indecency__Inappropriate_content_in_Mature_region"/> <combo_box.item label="知的財産の侵害>コンテンツの撤去" name="Intellectual_property_infringement_Content_Removal"/> <combo_box.item label="知的財産の侵害>コピーBot及び権限の悪用" name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit"/> <combo_box.item label="不寛容" name="Intolerance"/> diff --git a/indra/newview/skins/default/xui/ja/floater_script_limits.xml b/indra/newview/skins/default/xui/ja/floater_script_limits.xml new file mode 100644 index 0000000000..7ccd858af7 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_script_limits.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="scriptlimits" title="スクリプト情報"/> diff --git a/indra/newview/skins/default/xui/ja/floater_search.xml b/indra/newview/skins/default/xui/ja/floater_search.xml index 9d65e84072..289098a343 100644 --- a/indra/newview/skins/default/xui/ja/floater_search.xml +++ b/indra/newview/skins/default/xui/ja/floater_search.xml @@ -6,4 +6,11 @@ <floater.string name="done_text"> 完了 </floater.string> + <layout_stack name="stack1"> + <layout_panel name="browser_layout"> + <text name="refresh_search"> + 現在のゴッドレベルに反映させるため検索をやり直してください + </text> + </layout_panel> + </layout_stack> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_select_key.xml b/indra/newview/skins/default/xui/ja/floater_select_key.xml index 09c98add47..d41be86873 100644 --- a/indra/newview/skins/default/xui/ja/floater_select_key.xml +++ b/indra/newview/skins/default/xui/ja/floater_select_key.xml @@ -1,7 +1,7 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="modal container"> - <button label="キャンセル" label_selected="キャンセル" name="Cancel" /> + <button label="キャンセル" label_selected="キャンセル" name="Cancel"/> <text name="Save item as:"> - キーを押して選択 + キーを押してスピーカーボタンのトリガーを設定します。 </text> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_sell_land.xml b/indra/newview/skins/default/xui/ja/floater_sell_land.xml index 951499d0e3..b06b16bbb3 100644 --- a/indra/newview/skins/default/xui/ja/floater_sell_land.xml +++ b/indra/newview/skins/default/xui/ja/floater_sell_land.xml @@ -39,7 +39,7 @@ 販売先の指定なしか、特定の人に販売するか選択してください。 </text> <combo_box name="sell_to"> - <combo_box.item label="-- 1つ選択 --" name="--selectone--"/> + <combo_box.item label="- 1つ選択 -" name="--selectone--"/> <combo_box.item label="指定なし・誰にでも販売" name="Anyone"/> <combo_box.item label="特定の人:" name="Specificuser:"/> </combo_box> diff --git a/indra/newview/skins/default/xui/ja/floater_snapshot.xml b/indra/newview/skins/default/xui/ja/floater_snapshot.xml index 22f21b0b16..6c84de9b19 100644 --- a/indra/newview/skins/default/xui/ja/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/ja/floater_snapshot.xml @@ -4,12 +4,12 @@ スナップショットの送り先 </text> <radio_group label="スナップショット・タイプ" name="snapshot_type_radio"> - <radio_item label="Eメールで送信" name="postcard"/> - <radio_item label="持ち物に保存(L$[AMOUNT])" name="texture"/> - <radio_item label="ハードディスクに保存" name="local"/> + <radio_item label="メール" name="postcard"/> + <radio_item label="私の持ち物(L$[AMOUNT])" name="texture"/> + <radio_item label="コンピューターに保存" name="local"/> </radio_group> <text name="file_size_label"> - ファイル・サイズ: [SIZE] KB + [SIZE] KB </text> <button label="スナップショットを更新" name="new_snapshot_btn"/> <button label="送信" name="send_btn"/> @@ -19,8 +19,8 @@ <flyout_button.item label="名前を付けて保存" name="saveas_item"/> </flyout_button> <button label="キャンセル" name="discard_btn"/> - <button label="全表示 >>" name="more_btn" tool_tip="詳しい設定"/> - <button label="<< 簡易" name="less_btn" tool_tip="詳しい設定"/> + <button label="全表示" name="more_btn" tool_tip="詳しい設定"/> + <button label="簡易" name="less_btn" tool_tip="詳しい設定"/> <text name="type_label2"> サイズ </text> @@ -68,10 +68,10 @@ <combo_box.item label="深さ" name="Depth"/> <combo_box.item label="オグジェクトのつや消し" name="ObjectMattes"/> </combo_box> - <check_box label="インタフェースを表示" name="ui_check"/> - <check_box label="HUD オブジェクトを表示" name="hud_check"/> + <check_box label="インターフェース" name="ui_check"/> + <check_box label="HUD" name="hud_check"/> <check_box label="保存後も開いた状態を保持" name="keep_open_check"/> - <check_box label="画面全体を静止させる" name="freeze_frame_check"/> + <check_box label="画面全体を静止" name="freeze_frame_check"/> <check_box label="自動更新" name="auto_snapshot_check"/> <string name="unknown"> 未知 diff --git a/indra/newview/skins/default/xui/ja/floater_sys_well.xml b/indra/newview/skins/default/xui/ja/floater_sys_well.xml index 91e29fd595..a7c0a2b391 100644 --- a/indra/newview/skins/default/xui/ja/floater_sys_well.xml +++ b/indra/newview/skins/default/xui/ja/floater_sys_well.xml @@ -1,2 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="notification_chiclet" title="通知"/> +<floater name="notification_chiclet" title="通知"> + <string name="title_im_well_window"> + IMセッション + </string> + <string name="title_notification_well_window"> + 通知 + </string> +</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_telehub.xml b/indra/newview/skins/default/xui/ja/floater_telehub.xml index fea497b622..bdb92c8e30 100644 --- a/indra/newview/skins/default/xui/ja/floater_telehub.xml +++ b/indra/newview/skins/default/xui/ja/floater_telehub.xml @@ -20,9 +20,9 @@ <button label="出現位置を追加" name="add_spawn_point_btn"/> <button label="出現地点を削除" name="remove_spawn_point_btn"/> <text name="spawn_point_help"> - 物体を選択し「追加」をクリックし位置を指定。 -物体を移動または削除できる。 -位置はテレハブ・センターが基準の相対位置。 -リスト内品目を選択しワールド内位置を示す。 + オブジェクトを選び、「出現地点を追加」をクリックして位置を指定します。 +そうするとそのオブジェクトを移動させたり削除できます。 +位置はテレハブセンターに関連します。 +リストのアイテムを選択してインワールドでハイライトさせます。 </text> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/ja/floater_texture_ctrl.xml index c93f315628..1500808e60 100644 --- a/indra/newview/skins/default/xui/ja/floater_texture_ctrl.xml +++ b/indra/newview/skins/default/xui/ja/floater_texture_ctrl.xml @@ -17,7 +17,7 @@ <check_box label="今すぐ適用" name="apply_immediate_check"/> <button label="" label_selected="" name="Pipette"/> <button label="取り消し" label_selected="取り消し" name="Cancel"/> - <button label="Ok" label_selected="Ok" name="Select"/> + <button label="OK" label_selected="OK" name="Select"/> <text name="pick title"> ピック: </text> diff --git a/indra/newview/skins/default/xui/ja/floater_tools.xml b/indra/newview/skins/default/xui/ja/floater_tools.xml index cbb062dea3..52d3537d9a 100644 --- a/indra/newview/skins/default/xui/ja/floater_tools.xml +++ b/indra/newview/skins/default/xui/ja/floater_tools.xml @@ -451,12 +451,12 @@ <spinner label="垂直(V)" name="TexOffsetV"/> <panel name="Add_Media"> <text name="media_tex"> - メディア URL + メディア </text> <button name="add_media" tool_tip="メディアを追加"/> <button name="delete_media" tool_tip="このメディアテクスチャを削除"/> <button name="edit_media" tool_tip="このメディアを編集"/> - <button label="揃える" label_selected="メディアを一列に揃える" name="button align"/> + <button label="揃える" label_selected="メディアを一列に揃える" name="button align" tool_tip="メディアテクスチャを一列に揃える(最初に読み込む必要があります)"/> </panel> </panel> <panel label="中身" name="Contents"> @@ -475,14 +475,7 @@ 面積: [AREA] 平方メートル </text> <button label="土地情報" label_selected="土地情報" name="button about land"/> - <check_box label="オーナーを表示" name="checkbox show owners" tool_tip="所有者の種類別に区画を色づけ: - -緑 = あなたの土地 -アクア = あなたのグループ所有地 -赤 = 他人が所有する土地 -黄色 = 売り出し中 -紫 = オークション -グレー = パブリック"/> + <check_box label="オーナーを表示" name="checkbox show owners" tool_tip="所有者の種類別に区画を色づけ: 緑 = あなたの土地 アクア = あなたのグループ所有地 赤 = 他人が所有する土地 黄色 = 売り出し中 紫 = オークション グレー = パブリック"/> <text name="label_parcel_modify"> 区画の編集 </text> diff --git a/indra/newview/skins/default/xui/ja/floater_top_objects.xml b/indra/newview/skins/default/xui/ja/floater_top_objects.xml index e5d1fc5f03..bfc93e5624 100644 --- a/indra/newview/skins/default/xui/ja/floater_top_objects.xml +++ b/indra/newview/skins/default/xui/ja/floater_top_objects.xml @@ -1,55 +1,56 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="top_objects" title="ローディング..."> +<floater name="top_objects" title="トップオブジェクト"> + <floater.string name="top_scripts_title"> + トップ・スクリプト + </floater.string> + <floater.string name="top_scripts_text"> + [COUNT]スクリプト全体の実行時間は[TIME]ミリ秒。 + </floater.string> + <floater.string name="scripts_score_label"> + 時間 + </floater.string> + <floater.string name="scripts_mono_time_label"> + Monoタイム + </floater.string> + <floater.string name="top_colliders_title"> + 上部コライダー + </floater.string> + <floater.string name="top_colliders_text"> + 上位[COUNT]個の物体は多くの衝突可能性があります。 + </floater.string> + <floater.string name="colliders_score_label"> + 数 + </floater.string> + <floater.string name="none_descriptor"> + 何も見つかりませんでした。 + </floater.string> <text name="title_text"> ロード中... </text> <scroll_list name="objects_list"> - <column label="数" name="score"/> - <column label="名前" name="name"/> - <column label="所有者" name="owner"/> - <column label="ロケーション" name="location"/> - <column label="時間" name="time"/> - <column label="Monoタイム" name="mono_time"/> + <scroll_list.columns label="数" name="score"/> + <scroll_list.columns label="名前" name="name"/> + <scroll_list.columns label="所有者" name="owner"/> + <scroll_list.columns label="ロケーション" name="location"/> + <scroll_list.columns label="時間" name="time"/> + <scroll_list.columns label="Monoタイム" name="mono_time"/> + <scroll_list.columns label="URL" name="URLs"/> </scroll_list> <text name="id_text"> 物体ID: </text> <button label="標識を表示" name="show_beacon_btn"/> <text name="obj_name_text"> - 物体名: + オブジェクト名: </text> <button label="フィルタ" name="filter_object_btn"/> <text name="owner_name_text"> - 所有者名: + 所有者: </text> <button label="フィルタ" name="filter_owner_btn"/> + <button label="更新" name="refresh_btn"/> <button label="選択内容を返却" name="return_selected_btn"/> <button label="すべて返却" name="return_all_btn"/> <button label="選択内容を無効化" name="disable_selected_btn"/> <button label="すべて無効化" name="disable_all_btn"/> - <button label="更新" name="refresh_btn"/> - <string name="top_scripts_title"> - トップ・スクリプト - </string> - <string name="top_scripts_text"> - [COUNT]スクリプト全体の実行時間は[TIME]ミリ秒。 - </string> - <string name="scripts_score_label"> - 時間 - </string> - <string name="scripts_mono_time_label"> - Monoタイム - </string> - <string name="top_colliders_title"> - 上部コライダー - </string> - <string name="top_colliders_text"> - 上位[COUNT]個の物体は多くの衝突可能性があります。 - </string> - <string name="colliders_score_label"> - 数 - </string> - <string name="none_descriptor"> - 何も見つかりませんでした。 - </string> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_voice_controls.xml b/indra/newview/skins/default/xui/ja/floater_voice_controls.xml index 5d52144265..5a0694e5c5 100644 --- a/indra/newview/skins/default/xui/ja/floater_voice_controls.xml +++ b/indra/newview/skins/default/xui/ja/floater_voice_controls.xml @@ -1,13 +1,23 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_voice_controls" title="ボイスコントロール"> - <panel name="control_panel"> - <panel name="my_panel"> - <text name="user_text" value="Mya Avatar:"/> - </panel> - <layout_stack> - <layout_panel> - <slider_bar name="volume_slider_bar" tool_tip="音量"/> - </layout_panel> - </layout_stack> - </panel> + <string name="title_nearby"> + 近くのボイス + </string> + <string name="title_group"> + [GROUP] とグループコール + </string> + <string name="title_adhoc"> + コンファレンスコール + </string> + <string name="title_peer_2_peer"> + [NAME] でコール + </string> + <string name="no_one_near"> + 近くにボイスを有効にしている人はいません。 + </string> + <layout_stack name="my_call_stack"> + <layout_panel name="leave_call_btn_panel"> + <button label="コール終了" name="leave_call_btn"/> + </layout_panel> + </layout_stack> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/ja/floater_whitelist_entry.xml index b518d87477..34aba9d485 100644 --- a/indra/newview/skins/default/xui/ja/floater_whitelist_entry.xml +++ b/indra/newview/skins/default/xui/ja/floater_whitelist_entry.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="whitelist_entry"> +<floater name="whitelist_entry" title="ホワイトリストの入力"> <text name="media_label"> URL か URL パターンを入力して、許可するドメインをリストに追加します。 </text> diff --git a/indra/newview/skins/default/xui/ja/floater_window_size.xml b/indra/newview/skins/default/xui/ja/floater_window_size.xml new file mode 100644 index 0000000000..a31336c0f8 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_window_size.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="window_size" title="ウィンドウサイズ"> + <string name="resolution_format"> + [RES_X] x [RES_Y] + </string> + <text name="windowsize_text"> + ウィンドウのサイズの設定: + </text> + <combo_box name="window_size_combo" tool_tip="横幅 x 高さ"> + <combo_box.item label="1000 x 700 (標準)" name="item0"/> + <combo_box.item label="1024 x 768" name="item1"/> + <combo_box.item label="1280 x 720 (720p)" name="item2"/> + <combo_box.item label="1920 x 1080 (1080p)" name="item3"/> + </combo_box> + <button label="設定" name="set_btn"/> + <button label="キャンセル" name="cancel_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_world_map.xml b/indra/newview/skins/default/xui/ja/floater_world_map.xml index 370c95530a..a0f2d98adf 100644 --- a/indra/newview/skins/default/xui/ja/floater_world_map.xml +++ b/indra/newview/skins/default/xui/ja/floater_world_map.xml @@ -1,54 +1,81 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="worldmap" title="世界地図"> - <text name="you_label"> - あなた - </text> - <text name="home_label"> - ホーム - </text> - <text name="auction_label"> - オークション - </text> - <icon left="1123" name="square"/> - <text left_delta="20" name="land_for_sale_label"> - 売出し中の土地 - </text> - <button label="ホームへ" label_selected="ホームへ" name="Go Home" tool_tip="自分のホームにテレポート"/> - <check_box label="住人" name="people_chk"/> - <check_box label="インフォハブ" name="infohub_chk"/> - <check_box label="テレハブ" name="telehub_chk"/> - <check_box label="売り地" name="land_for_sale_chk"/> - <text name="events_label"> - イベント: - </text> - <check_box label="PG" name="event_chk"/> - <check_box initial_value="true" label="Mature" name="event_mature_chk"/> - <check_box label="Adult" name="event_adult_chk"/> - <combo_box label="オンラインのフレンド" name="friend combo" tool_tip="地図に表示するフレンド"> - <combo_box.item label="オンラインのフレンド" name="item1"/> - </combo_box> - <combo_box label="ランドマーク" name="landmark combo" tool_tip="地図に表示するランドマーク"> - <combo_box.item label="ランドマーク" name="item1"/> - </combo_box> - <line_editor label="地域名で検索" name="location" tool_tip="地域名を入力してください。"/> - <button label="検索" name="DoSearch" tool_tip="地域検索"/> - <text name="search_label"> - 検索結果: - </text> - <scroll_list name="search_results"> - <scroll_list.columns label="" name="icon"/> - <scroll_list.columns label="" name="sim_name"/> - </scroll_list> - <text name="location_label"> - 位置: - </text> - <spinner name="spin x" tool_tip="地図上に表示される位置のX座標"/> - <spinner name="spin y" tool_tip="地図上に表示される位置のY座標"/> - <spinner name="spin z" tool_tip="地図上に表示される位置のZ座標"/> - <button label="テレポート" label_selected="テレポート" name="Teleport" tool_tip="選択されたロケーションにテレポート"/> - <button label="目的地を表示" label_selected="目的地を表示" name="Show Destination" tool_tip="選択したロケーションを地図の中心にする"/> - <button label="クリア" label_selected="クリア" name="Clear" tool_tip="トラッキングを停止"/> - <button label="現在地を表示" label_selected="現在地を表示" name="Show My Location" tool_tip="あなたのアバターのロケーションを地図の中心にする"/> - <button label="SLurl をクリップボードにコピー" name="copy_slurl" tool_tip="現在地を SLurl としてコピーして、Webで使用します。"/> - <slider label="ズーム" name="zoom slider"/> + <panel name="layout_panel_1"> + <text name="events_label"> + レジェンド + </text> + </panel> + <panel> + <button label="現在地を表示" label_selected="現在地を表示" name="Show My Location" tool_tip="マップを中央に表示する"/> + <text name="me_label"> + ミー + </text> + <check_box label="住人" name="people_chk"/> + <text name="person_label"> + 住人 + </text> + <check_box label="インフォハブ" name="infohub_chk"/> + <text name="infohub_label"> + インフォハブ + </text> + <check_box label="売り地" name="land_for_sale_chk"/> + <text name="land_sale_label"> + 土地販売 + </text> + <text name="by_owner_label"> + by owner + </text> + <text name="auction_label"> + 土地オークション + </text> + <button label="ホームへ" label_selected="ホームへ" name="Go Home" tool_tip="「ホーム」にテレポート"/> + <text name="Home_label"> + ホーム + </text> + <text name="events_label"> + イベント: + </text> + <check_box label="PG" name="event_chk"/> + <text name="pg_label"> + 一般 + </text> + <check_box initial_value="true" label="Mature" name="event_mature_chk"/> + <text name="mature_label"> + 控えめ + </text> + <check_box label="Adult" name="event_adult_chk"/> + <text name="adult_label"> + アダルト + </text> + </panel> + <panel> + <text name="find_on_map_label"> + 地図で探す + </text> + </panel> + <panel> + <combo_box label="オンラインのフレンド" name="friend combo" tool_tip="フレンドを地図に表示"> + <combo_box.item label="オンラインのフレンド" name="item1"/> + </combo_box> + <combo_box label="マイ ランドマーク" name="landmark combo" tool_tip="地図に表示するランドマーク"> + <combo_box.item label="マイ ランドマーク" name="item1"/> + </combo_box> + <search_editor label="リージョン名" name="location" tool_tip="地域名を入力してください。"/> + <button label="検索" name="DoSearch" tool_tip="地域検索"/> + <scroll_list name="search_results"> + <scroll_list.columns label="" name="icon"/> + <scroll_list.columns label="" name="sim_name"/> + </scroll_list> + <button label="テレポート" label_selected="テレポート" name="Teleport" tool_tip="選択されたロケーションにテレポート"/> + <button label="SLurl をコピー" name="copy_slurl" tool_tip="現在地を SLurl としてコピーして、Webで使用します。"/> + <button label="選択したリージョンを表示する" label_selected="目的地を表示" name="Show Destination" tool_tip="選択したロケーションを地図の中心にする"/> + </panel> + <panel> + <text name="zoom_label"> + ズーム + </text> + </panel> + <panel> + <slider label="ズーム" name="zoom slider"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/ja/inspect_avatar.xml b/indra/newview/skins/default/xui/ja/inspect_avatar.xml index df3f6d0cd0..9371b80af5 100644 --- a/indra/newview/skins/default/xui/ja/inspect_avatar.xml +++ b/indra/newview/skins/default/xui/ja/inspect_avatar.xml @@ -10,19 +10,17 @@ <string name="Details"> [SL_PROFILE] </string> - <string name="Partner"> - パートナー: [PARTNER] - </string> <text name="user_name" value="Grumpity ProductEngine"/> <text name="user_subtitle" value="11 Months, 3 days old"/> <text name="user_details"> This is my second life description and I really think it is great. </text> - <text name="user_partner"> - Erica Linden - </text> <slider name="volume_slider" tool_tip="ボイス音量" value="0.5"/> <button label="フレンド登録" name="add_friend_btn"/> <button label="IM" name="im_btn"/> <button label="詳細" name="view_profile_btn"/> + <panel name="moderator_panel"> + <button label="ボイスを無効にする" name="disable_voice"/> + <button label="ボイスを有効にする" name="enable_voice"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/ja/inspect_group.xml b/indra/newview/skins/default/xui/ja/inspect_group.xml index b292d4b525..b461b93f65 100644 --- a/indra/newview/skins/default/xui/ja/inspect_group.xml +++ b/indra/newview/skins/default/xui/ja/inspect_group.xml @@ -31,4 +31,5 @@ Fear the moose! Fear it! And the mongoose too! </text> <button label="参加" name="join_btn"/> <button label="脱退" name="leave_btn"/> + <button label="プロフィールの表示" name="view_profile_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/ja/menu_attachment_other.xml b/indra/newview/skins/default/xui/ja/menu_attachment_other.xml new file mode 100644 index 0000000000..f163c2cf4f --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_attachment_other.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- *NOTE: See also menu_avatar_other.xml --> +<context_menu name="Avatar Pie"> + <menu_item_call label="プロフィールの表示" name="Profile..."/> + <menu_item_call label="フレンド登録" name="Add Friend"/> + <menu_item_call label="IM" name="Send IM..."/> + <menu_item_call label="コール" name="Call"/> + <menu_item_call label="グループに招待" name="Invite..."/> + <menu_item_call label="ブロック" name="Avatar Mute"/> + <menu_item_call label="報告" name="abuse"/> + <menu_item_call label="フリーズ" name="Freeze..."/> + <menu_item_call label="追放" name="Eject..."/> + <menu_item_call label="デバッグ" name="Debug..."/> + <menu_item_call label="ズームイン" name="Zoom In"/> + <menu_item_call label="支払う" name="Pay..."/> + <menu_item_call label="オブジェクトのプロフィール" name="Object Inspect"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_attachment_self.xml b/indra/newview/skins/default/xui/ja/menu_attachment_self.xml new file mode 100644 index 0000000000..209edd80ba --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_attachment_self.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Attachment Pie"> + <menu_item_call label="触る" name="Attachment Object Touch"/> + <menu_item_call label="編集" name="Edit..."/> + <menu_item_call label="取り外す" name="Detach"/> + <menu_item_call label="下に落とす" name="Drop"/> + <menu_item_call label="立ち上がる" name="Stand Up"/> + <menu_item_call label="容姿" name="Appearance..."/> + <menu_item_call label="フレンド" name="Friends..."/> + <menu_item_call label="グループ" name="Groups..."/> + <menu_item_call label="プロフィール" name="Profile..."/> +</context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_avatar_icon.xml b/indra/newview/skins/default/xui/ja/menu_avatar_icon.xml index ef63f3f4e0..b04f602134 100644 --- a/indra/newview/skins/default/xui/ja/menu_avatar_icon.xml +++ b/indra/newview/skins/default/xui/ja/menu_avatar_icon.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="Avatar Icon Menu"> - <menu_item_call label="プロフィールを表示..." name="Show Profile"/> + <menu_item_call label="プロフィールの表示" name="Show Profile"/> <menu_item_call label="IMを送信..." name="Send IM"/> <menu_item_call label="フレンドを追加..." name="Add Friend"/> <menu_item_call label="フレンドを削除..." name="Remove Friend"/> diff --git a/indra/newview/skins/default/xui/ja/menu_avatar_other.xml b/indra/newview/skins/default/xui/ja/menu_avatar_other.xml new file mode 100644 index 0000000000..74d877cdda --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_avatar_other.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- *NOTE: See also menu_attachment_other.xml --> +<context_menu name="Avatar Pie"> + <menu_item_call label="プロフィールの表示" name="Profile..."/> + <menu_item_call label="フレンド登録" name="Add Friend"/> + <menu_item_call label="IM" name="Send IM..."/> + <menu_item_call label="コール" name="Call"/> + <menu_item_call label="グループに招待" name="Invite..."/> + <menu_item_call label="ブロック" name="Avatar Mute"/> + <menu_item_call label="報告" name="abuse"/> + <menu_item_call label="フリーズ" name="Freeze..."/> + <menu_item_call label="追放" name="Eject..."/> + <menu_item_call label="デバッグ" name="Debug..."/> + <menu_item_call label="ズームイン" name="Zoom In"/> + <menu_item_call label="支払う" name="Pay..."/> +</context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_avatar_self.xml b/indra/newview/skins/default/xui/ja/menu_avatar_self.xml new file mode 100644 index 0000000000..1bfadf8d45 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_avatar_self.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Self Pie"> + <menu_item_call label="立ち上がる" name="Stand Up"/> + <context_menu label="脱ぐ>" name="Take Off >"> + <context_menu label="衣類 >" name="Clothes >"> + <menu_item_call label="シャツ" name="Shirt"/> + <menu_item_call label="パンツ" name="Pants"/> + <menu_item_call label="スカート" name="Skirt"/> + <menu_item_call label="靴" name="Shoes"/> + <menu_item_call label="靴下" name="Socks"/> + <menu_item_call label="ジャケット" name="Jacket"/> + <menu_item_call label="手袋" name="Gloves"/> + <menu_item_call label="下着シャツ" name="Self Undershirt"/> + <menu_item_call label="下着パンツ" name="Self Underpants"/> + <menu_item_call label="タトゥ" name="Self Tattoo"/> + <menu_item_call label="アルファ" name="Self Alpha"/> + <menu_item_call label="すべての衣類" name="All Clothes"/> + </context_menu> + <context_menu label="HUD >" name="Object Detach HUD"/> + <context_menu label="取り外す >" name="Object Detach"/> + <menu_item_call label="すべて取り外す" name="Detach All"/> + </context_menu> + <menu_item_call label="容姿" name="Appearance..."/> + <menu_item_call label="フレンド" name="Friends..."/> + <menu_item_call label="グループ" name="Groups..."/> + <menu_item_call label="マイ プロフィール" name="Profile..."/> +</context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_bottomtray.xml b/indra/newview/skins/default/xui/ja/menu_bottomtray.xml index 3ca2de247e..ea7ba1b741 100644 --- a/indra/newview/skins/default/xui/ja/menu_bottomtray.xml +++ b/indra/newview/skins/default/xui/ja/menu_bottomtray.xml @@ -4,4 +4,9 @@ <menu_item_check label="移動ボタン" name="ShowMoveButton"/> <menu_item_check label="視界ボタン" name="ShowCameraButton"/> <menu_item_check label="スナップショットボタン" name="ShowSnapshotButton"/> + <menu_item_call label="切り取り" name="NearbyChatBar_Cut"/> + <menu_item_call label="コピー" name="NearbyChatBar_Copy"/> + <menu_item_call label="貼り付け" name="NearbyChatBar_Paste"/> + <menu_item_call label="削除" name="NearbyChatBar_Delete"/> + <menu_item_call label="すべて選択" name="NearbyChatBar_Select_All"/> </menu> diff --git a/indra/newview/skins/default/xui/ja/menu_im_well_button.xml b/indra/newview/skins/default/xui/ja/menu_im_well_button.xml new file mode 100644 index 0000000000..3397004bd7 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_im_well_button.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="IM Well Button Context Menu"> + <menu_item_call label="すべて閉じる" name="Close All"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/ja/menu_imchiclet_adhoc.xml new file mode 100644 index 0000000000..8cd6fa4a27 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_imchiclet_adhoc.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="IMChiclet AdHoc Menu"> + <menu_item_call label="セッション終了" name="End Session"/> +</menu> diff --git a/indra/newview/skins/default/xui/ja/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/ja/menu_imchiclet_p2p.xml index 0887001992..5453f998fa 100644 --- a/indra/newview/skins/default/xui/ja/menu_imchiclet_p2p.xml +++ b/indra/newview/skins/default/xui/ja/menu_imchiclet_p2p.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="IMChiclet P2P Menu"> - <menu_item_call label="プロフィールを表示" name="Show Profile"/> + <menu_item_call label="プロフィールの表示" name="Show Profile"/> <menu_item_call label="フレンド登録" name="Add Friend"/> <menu_item_call label="セッションを表示" name="Send IM"/> <menu_item_call label="セッション終了" name="End Session"/> diff --git a/indra/newview/skins/default/xui/ja/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/ja/menu_inspect_avatar_gear.xml index 64e1505440..3d5086c52a 100644 --- a/indra/newview/skins/default/xui/ja/menu_inspect_avatar_gear.xml +++ b/indra/newview/skins/default/xui/ja/menu_inspect_avatar_gear.xml @@ -7,6 +7,7 @@ <menu_item_call label="テレポート" name="teleport"/> <menu_item_call label="グループに招待" name="invite_to_group"/> <menu_item_call label="ブロック" name="block"/> + <menu_item_call label="ブロック解除" name="unblock"/> <menu_item_call label="報告" name="report"/> <menu_item_call label="フリーズ" name="freeze"/> <menu_item_call label="追放" name="eject"/> diff --git a/indra/newview/skins/default/xui/ja/menu_inventory.xml b/indra/newview/skins/default/xui/ja/menu_inventory.xml index 623a0cdb06..78c0dd0a78 100644 --- a/indra/newview/skins/default/xui/ja/menu_inventory.xml +++ b/indra/newview/skins/default/xui/ja/menu_inventory.xml @@ -10,7 +10,7 @@ <menu_item_call label="遺失物フォルダを空にする" name="Empty Lost And Found"/> <menu_item_call label="新しいフォルダ" name="New Folder"/> <menu_item_call label="新しいスクリプト" name="New Script"/> - <menu_item_call label="新しいノート" name="New Note"/> + <menu_item_call label="新しいノートカード" name="New Note"/> <menu_item_call label="新しいジェスチャー" name="New Gesture"/> <menu label="新しい衣類" name="New Clothes"> <menu_item_call label="新しいシャツ" name="New Shirt"/> @@ -46,6 +46,9 @@ <menu_item_call label="テレポート" name="Landmark Open"/> <menu_item_call label="開く" name="Animation Open"/> <menu_item_call label="開く" name="Sound Open"/> + <menu_item_call label="着用中のアウトフィットを入れ替える" name="Replace Outfit"/> + <menu_item_call label="着用中のアウトフィットに追加する" name="Add To Outfit"/> + <menu_item_call label="着用中のアウトフィットから取り除く" name="Remove From Outfit"/> <menu_item_call label="アイテムを除外" name="Purge Item"/> <menu_item_call label="アイテムを復元" name="Restore Item"/> <menu_item_call label="オリジナルを探す" name="Find Original"/> @@ -56,10 +59,9 @@ <menu_item_call label="コピー" name="Copy"/> <menu_item_call label="貼り付け" name="Paste"/> <menu_item_call label="リンクの貼り付け" name="Paste As Link"/> + <menu_item_call label="リンクを外す" name="Remove Link"/> <menu_item_call label="削除" name="Delete"/> - <menu_item_call label="アウトフィットから取り除く" name="Remove From Outfit"/> - <menu_item_call label="服装に追加" name="Add To Outfit"/> - <menu_item_call label="服装を置換" name="Replace Outfit"/> + <menu_item_call label="システムフォルダを削除する" name="Delete System Folder"/> <menu_item_call label="会議チャット開始" name="Conference Chat Folder"/> <menu_item_call label="再生" name="Sound Play"/> <menu_item_call label="ランドマークの情報" name="About Landmark"/> diff --git a/indra/newview/skins/default/xui/ja/menu_inventory_add.xml b/indra/newview/skins/default/xui/ja/menu_inventory_add.xml index 8b18f6bfe8..14ad7900e1 100644 --- a/indra/newview/skins/default/xui/ja/menu_inventory_add.xml +++ b/indra/newview/skins/default/xui/ja/menu_inventory_add.xml @@ -8,7 +8,7 @@ </menu> <menu_item_call label="新規フォルダ" name="New Folder"/> <menu_item_call label="新規スクリプト" name="New Script"/> - <menu_item_call label="新規ノート" name="New Note"/> + <menu_item_call label="新しいノートカード" name="New Note"/> <menu_item_call label="新規ジェスチャー" name="New Gesture"/> <menu label="新しい衣類" name="New Clothes"> <menu_item_call label="新しいシャツ" name="New Shirt"/> diff --git a/indra/newview/skins/default/xui/ja/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/ja/menu_inventory_gear_default.xml index 2bac5ebaa6..e3114327a0 100644 --- a/indra/newview/skins/default/xui/ja/menu_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/ja/menu_inventory_gear_default.xml @@ -9,4 +9,6 @@ <menu_item_call label="ごみ箱を空にする" name="empty_trash"/> <menu_item_call label="紛失物を空にする" name="empty_lostnfound"/> <menu_item_call label="別名でテクスチャを保存" name="Save Texture As"/> + <menu_item_call label="オリジナルを表示" name="Find Original"/> + <menu_item_call label="すべてのリンクを表示" name="Find All Links"/> </menu> diff --git a/indra/newview/skins/default/xui/ja/menu_land.xml b/indra/newview/skins/default/xui/ja/menu_land.xml new file mode 100644 index 0000000000..89c122f14f --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_land.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Land Pie"> + <menu_item_call label="土地情報" name="Place Information..."/> + <menu_item_call label="ここに座る" name="Sit Here"/> + <menu_item_call label="この土地を購入" name="Land Buy"/> + <menu_item_call label="入場許可を購入" name="Land Buy Pass"/> + <menu_item_call label="制作" name="Create"/> + <menu_item_call label="地形を編集" name="Edit Terrain"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_login.xml b/indra/newview/skins/default/xui/ja/menu_login.xml index 5db56ae76b..42a95ac3d3 100644 --- a/indra/newview/skins/default/xui/ja/menu_login.xml +++ b/indra/newview/skins/default/xui/ja/menu_login.xml @@ -23,10 +23,8 @@ <menu_item_call label="デバッグ設定を表示" name="Debug Settings"/> <menu_item_call label="UI/色の設定" name="UI/Color Settings"/> <menu_item_call label="XUI プレビューツール" name="UI Preview Tool"/> - <menu_item_call label="サイドトレイを表示" name="Show Side Tray"/> - <menu_item_call label="ウィジェットテスト" name="Widget Test"/> - <menu_item_call label="インスペクターテスト" name="Inspectors Test"/> - <menu_item_check label="Reg In Client Test (restart)" name="Reg In Client Test (restart)"/> + <menu label="UI テスト" name="UI Tests"/> + <menu_item_call label="ウィンドウのサイズの設定..." name="Set Window Size..."/> <menu_item_call label="利用規約を表示" name="TOS"/> <menu_item_call label="クリティカルメッセージを表示" name="Critical"/> <menu_item_call label="Web ブラウザのテスト" name="Web Browser Test"/> diff --git a/indra/newview/skins/default/xui/ja/menu_notification_well_button.xml b/indra/newview/skins/default/xui/ja/menu_notification_well_button.xml new file mode 100644 index 0000000000..913bae8958 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_notification_well_button.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Notification Well Button Context Menu"> + <menu_item_call label="すべて閉じる" name="Close All"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_object.xml b/indra/newview/skins/default/xui/ja/menu_object.xml new file mode 100644 index 0000000000..a161c01514 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_object.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Object Pie"> + <menu_item_call label="触る" name="Object Touch"/> + <menu_item_call label="編集" name="Edit..."/> + <menu_item_call label="制作" name="Build"/> + <menu_item_call label="開く" name="Open"/> + <menu_item_call label="ここに座る" name="Object Sit"/> + <menu_item_call label="オブジェクトのプロフィール" name="Object Inspect"/> + <menu_item_call label="ズームイン" name="Zoom In"/> + <context_menu label="装着 >" name="Put On"> + <menu_item_call label="装着" name="Wear"/> + <context_menu label="取り付け >" name="Object Attach"/> + <context_menu label="HUD を取り付け >" name="Object Attach HUD"/> + </context_menu> + <context_menu label="削除 >" name="Remove"> + <menu_item_call label="取る" name="Pie Object Take"/> + <menu_item_call label="嫌がらせの報告" name="Report Abuse..."/> + <menu_item_call label="ブロック" name="Object Mute"/> + <menu_item_call label="返却" name="Return..."/> + <menu_item_call label="削除" name="Delete"/> + </context_menu> + <menu_item_call label="コピーを取る" name="Take Copy"/> + <menu_item_call label="支払う" name="Pay..."/> + <menu_item_call label="買う" name="Buy..."/> +</context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_participant_list.xml b/indra/newview/skins/default/xui/ja/menu_participant_list.xml index 0bc51ecde1..398a78bb61 100644 --- a/indra/newview/skins/default/xui/ja/menu_participant_list.xml +++ b/indra/newview/skins/default/xui/ja/menu_participant_list.xml @@ -1,5 +1,20 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Participant List Context Menu"> - <menu_item_check label="文字をミュート" name="MuteText"/> - <menu_item_check label="文字チャットを許可" name="AllowTextChat"/> + <menu_item_check label="名前で並べ替え" name="SortByName"/> + <menu_item_check label="最近の発言者で並べ替え" name="SortByRecentSpeakers"/> + <menu_item_call label="プロフィールの表示" name="View Profile"/> + <menu_item_call label="フレンド登録" name="Add Friend"/> + <menu_item_call label="IM" name="IM"/> + <menu_item_call label="コール" name="Call"/> + <menu_item_call label="共有" name="Share"/> + <menu_item_call label="支払う" name="Pay"/> + <menu_item_check label="ボイスをブロック" name="Block/Unblock"/> + <menu_item_check label="文字をブロックする" name="MuteText"/> + <context_menu label="モデレーターのオプション >" name="Moderator Options"> + <menu_item_check label="文字チャットを許可" name="AllowTextChat"/> + <menu_item_call label="この参加者をミュートする" name="ModerateVoiceMuteSelected"/> + <menu_item_call label="他の人全員をミュートする" name="ModerateVoiceMuteOthers"/> + <menu_item_call label="この参加者のミュートを解除する" name="ModerateVoiceUnMuteSelected"/> + <menu_item_call label="他の人全員のミュートを解除する" name="ModerateVoiceUnMuteOthers"/> + </context_menu> </context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_people_groups.xml b/indra/newview/skins/default/xui/ja/menu_people_groups.xml new file mode 100644 index 0000000000..4e5dc60a3d --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_people_groups.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_group_plus"> + <menu_item_call label="情報を表示" name="View Info"/> + <menu_item_call label="チャット" name="Chat"/> + <menu_item_call label="コール" name="Call"/> + <menu_item_call label="有効化" name="Activate"/> + <menu_item_call label="脱退" name="Leave"/> +</menu> diff --git a/indra/newview/skins/default/xui/ja/menu_people_nearby.xml b/indra/newview/skins/default/xui/ja/menu_people_nearby.xml index a577523754..2c8a346d1a 100644 --- a/indra/newview/skins/default/xui/ja/menu_people_nearby.xml +++ b/indra/newview/skins/default/xui/ja/menu_people_nearby.xml @@ -7,4 +7,5 @@ <menu_item_call label="共有" name="Share"/> <menu_item_call label="支払う" name="Pay"/> <menu_item_check label="ブロック・ブロック解除" name="Block/Unblock"/> + <menu_item_call label="テレポートを送る" name="teleport"/> </context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_profile_overflow.xml b/indra/newview/skins/default/xui/ja/menu_profile_overflow.xml index a34086bdbf..bb93990efe 100644 --- a/indra/newview/skins/default/xui/ja/menu_profile_overflow.xml +++ b/indra/newview/skins/default/xui/ja/menu_profile_overflow.xml @@ -2,4 +2,8 @@ <toggleable_menu name="profile_overflow_menu"> <menu_item_call label="支払う" name="pay"/> <menu_item_call label="共有" name="share"/> + <menu_item_call label="追放" name="kick"/> + <menu_item_call label="フリーズ" name="freeze"/> + <menu_item_call label="フリーズ解除" name="unfreeze"/> + <menu_item_call label="CSR" name="csr"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_viewer.xml b/indra/newview/skins/default/xui/ja/menu_viewer.xml index fc0a5592dd..db8583ca15 100644 --- a/indra/newview/skins/default/xui/ja/menu_viewer.xml +++ b/indra/newview/skins/default/xui/ja/menu_viewer.xml @@ -9,7 +9,7 @@ <menu_item_call label="マイ プロフィール" name="Profile"/> <menu_item_call label="マイ 容姿" name="Appearance"/> <menu_item_check label="マイ 持ち物" name="Inventory"/> - <menu_item_call label="サイドトレイで持ち物を表示" name="ShowSidetrayInventory"/> + <menu_item_call label="持ち物をサイドトレイに表示" name="ShowSidetrayInventory"/> <menu_item_call label="マイ ジェスチャー" name="Gestures"/> <menu label="マイ ログイン状態" name="Status"> <menu_item_call label="一時退席中" name="Set Away"/> @@ -25,36 +25,30 @@ <menu_item_check label="近くのチャット" name="Nearby Chat"/> <menu_item_call label="近くにいる人" name="Active Speakers"/> <menu_item_check label="近くのメディア" name="Nearby Media"/> - <menu_item_check label="(レガシー) コミュニケーション" name="Instant Message"/> - <menu_item_call label="(一時)メディアリモコン" name="Preferences"/> </menu> <menu label="世界" name="World"> - <menu_item_check label="移動" name="Movement Controls"/> - <menu_item_check label="視界" name="Camera Controls"/> - <menu_item_call label="土地について" name="About Land"/> - <menu_item_call label="地域 / 不動産" name="Region/Estate"/> - <menu_item_call label="土地の購入" name="Buy Land"/> - <menu_item_call label="自分の土地" name="My Land"/> - <menu label="表示" name="Land"> - <menu_item_check label="立入禁止ライン" name="Ban Lines"/> - <menu_item_check label="ビーコン(標識)" name="beacons"/> - <menu_item_check label="敷地境界線" name="Property Lines"/> - <menu_item_check label="土地所有者" name="Land Owners"/> - </menu> - <menu label="ランドマーク" name="Landmarks"> - <menu_item_call label="ここのランドマークを作成" name="Create Landmark Here"/> - <menu_item_call label="現在地をホームに設定" name="Set Home to Here"/> - </menu> - <menu_item_call label="ホーム" name="Teleport Home"/> <menu_item_check label="ミニマップ" name="Mini-Map"/> <menu_item_check label="世界地図" name="World Map"/> <menu_item_call label="スナップショット" name="Take Snapshot"/> + <menu_item_call label="現在地をランドマーク" name="Create Landmark Here"/> + <menu label="場所のプロフィール" name="Land"> + <menu_item_call label="土地情報" name="About Land"/> + <menu_item_call label="地域 / 不動産" name="Region/Estate"/> + </menu> + <menu_item_call label="この土地を購入" name="Buy Land"/> + <menu_item_call label="自分の土地" name="My Land"/> + <menu label="表示" name="LandShow"> + <menu_item_check label="移動コントロール" name="Movement Controls"/> + <menu_item_check label="コントロールを表示" name="Camera Controls"/> + </menu> + <menu_item_call label="ホームにテレポート" name="Teleport Home"/> + <menu_item_call label="現在地をホームに設定" name="Set Home to Here"/> <menu label="太陽" name="Environment Settings"> <menu_item_call label="日の出" name="Sunrise"/> <menu_item_call label="正午" name="Noon"/> <menu_item_call label="日没" name="Sunset"/> <menu_item_call label="深夜" name="Midnight"/> - <menu_item_call label="エステートタイムを使用" name="Revert to Region Default"/> + <menu_item_call label="エステートタイム" name="Revert to Region Default"/> <menu_item_call label="環境編集" name="Environment Editor"/> </menu> </menu> @@ -125,21 +119,20 @@ </menu> <menu label="ヘルプ" name="Help"> <menu_item_call label="[SECOND_LIFE] ヘルプ" name="Second Life Help"/> - <menu_item_call label="チュートリアル" name="Tutorial"/> <menu_item_call label="嫌がらせを報告" name="Report Abuse"/> + <menu_item_call label="バグ報告" name="Report Bug"/> <menu_item_call label="[APP_NAME] について" name="About Second Life"/> </menu> <menu label="アドバンス" name="Advanced"> - <menu_item_check label="30分経過で AFK に設定" name="Go Away/AFK When Idle"/> <menu_item_call label="私のアニメーションを停止する" name="Stop Animating My Avatar"/> <menu_item_call label="テクスチャのリベーク" name="Rebake Texture"/> <menu_item_call label="UI のサイズをデフォルトに設定する" name="Set UI Size to Default"/> + <menu_item_call label="ウィンドウのサイズの設定:" name="Set Window Size..."/> <menu_item_check label="遠くのオブジェクトを選択しない" name="Limit Select Distance"/> <menu_item_check label="カメラの距離移動を制限しない" name="Disable Camera Distance"/> <menu_item_check label="高解像度スナップショット" name="HighResSnapshot"/> <menu_item_check label="シャッター音とアニメーションなしでスナップショットをディスクに保存" name="QuietSnapshotsToDisk"/> <menu_item_check label="圧縮してスナップショットをディスクに保存する" name="CompressSnapshotsToDisk"/> - <menu_item_call label="別名でテクスチャを保存" name="Save Texture As"/> <menu label="パフォーマンスツール" name="Performance Tools"> <menu_item_call label="ラグ計測器" name="Lag Meter"/> <menu_item_check label="統計バー" name="Statistics Bar"/> @@ -333,7 +326,6 @@ <menu_item_call label="XML で保存" name="Save to XML"/> <menu_item_check label="XUI ネームを表示" name="Show XUI Names"/> <menu_item_call label="テスト用 IM を送信" name="Send Test IMs"/> - <menu_item_call label="インスペクターテスト" name="Test Inspectors"/> </menu> <menu label="アバター" name="Character"> <menu label="ベークドテクスチャを取得" name="Grab Baked Texture"> @@ -366,6 +358,7 @@ <menu_item_call label="アバターテクスチャをデバッグ" name="Debug Avatar Textures"/> <menu_item_call label="ローカルテクスチャをダンプ" name="Dump Local Textures"/> </menu> + <menu_item_check label="HTTP Texture" name="HTTP Textures"/> <menu_item_call label="圧縮画像" name="Compress Images"/> <menu_item_check label="Output Debug Minidump" name="Output Debug Minidump"/> <menu_item_check label="次回の起動時にコンソールウィンドウを表示" name="Console Window"/> @@ -410,7 +403,6 @@ <menu_item_call label="タトゥ" name="Tattoo"/> <menu_item_call label="すべての衣類" name="All Clothes"/> </menu> - <menu_item_check label="ツールバーを表示" name="Show Toolbar"/> <menu label="ヘルプ" name="Help"> <menu_item_call label="リンデン公式ブログ" name="Official Linden Blog"/> <menu_item_call label="スクリプトポータル" name="Scripting Portal"/> diff --git a/indra/newview/skins/default/xui/ja/mime_types_linux.xml b/indra/newview/skins/default/xui/ja/mime_types_linux.xml new file mode 100644 index 0000000000..0ec1030113 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/mime_types_linux.xml @@ -0,0 +1,217 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<mimetypes name="default"> + <widgetset name="web"> + <label name="web_label"> + Web コンテンツ + </label> + <tooltip name="web_tooltip"> + このロケーションには Web コンテンツが含まれています + </tooltip> + <playtip name="web_playtip"> + Web コンテンツを表示する + </playtip> + </widgetset> + <widgetset name="movie"> + <label name="movie_label"> + ムービー + </label> + <tooltip name="movie_tooltip"> + ここにはムービーがあります + </tooltip> + <playtip name="movie_playtip"> + ムービーを再生する + </playtip> + </widgetset> + <widgetset name="image"> + <label name="image_label"> + 画像 + </label> + <tooltip name="image_tooltip"> + このロケーションには画像があります + </tooltip> + <playtip name="image_playtip"> + このロケーションの画像を表示する + </playtip> + </widgetset> + <widgetset name="audio"> + <label name="audio_label"> + オーディオ + </label> + <tooltip name="audio_tooltip"> + このロケーションにはオーディオがあります + </tooltip> + <playtip name="audio_playtip"> + このロケーションのオーディオを再生する + </playtip> + </widgetset> + <scheme name="rtsp"> + <label name="rtsp_label"> + リアルタイム・ストリーミング + </label> + </scheme> + <mimetype name="blank"> + <label name="blank_label"> + - なし - + </label> + </mimetype> + <mimetype name="none/none"> + <label name="none/none_label"> + - なし - + </label> + </mimetype> + <mimetype name="audio/*"> + <label name="audio2_label"> + オーディオ + </label> + </mimetype> + <mimetype name="video/*"> + <label name="video2_label"> + ビデオ + </label> + </mimetype> + <mimetype name="image/*"> + <label name="image2_label"> + 画像 + </label> + </mimetype> + <mimetype name="video/vnd.secondlife.qt.legacy"> + <label name="vnd.secondlife.qt.legacy_label"> + ムービー(QuickTime) + </label> + </mimetype> + <mimetype name="application/javascript"> + <label name="application/javascript_label"> + Javascript + </label> + </mimetype> + <mimetype name="application/ogg"> + <label name="application/ogg_label"> + Ogg オーディオ・ビデオ + </label> + </mimetype> + <mimetype name="application/pdf"> + <label name="application/pdf_label"> + PDF ドキュメント + </label> + </mimetype> + <mimetype name="application/postscript"> + <label name="application/postscript_label"> + Postscript ドキュメント + </label> + </mimetype> + <mimetype name="application/rtf"> + <label name="application/rtf_label"> + リッチテキスト(RTF) + </label> + </mimetype> + <mimetype name="application/smil"> + <label name="application/smil_label"> + Synchronized Multimedia Integration Language (SMIL) + </label> + </mimetype> + <mimetype name="application/xhtml+xml"> + <label name="application/xhtml+xml_label"> + Web ページ(XHTML) + </label> + </mimetype> + <mimetype name="application/x-director"> + <label name="application/x-director_label"> + マクロメディアディレクター + </label> + </mimetype> + <mimetype name="audio/mid"> + <label name="audio/mid_label"> + オーディオ(MIDI) + </label> + </mimetype> + <mimetype name="audio/mpeg"> + <label name="audio/mpeg_label"> + オーディオ(MP3) + </label> + </mimetype> + <mimetype name="audio/x-aiff"> + <label name="audio/x-aiff_label"> + オーディオ(AIFF) + </label> + </mimetype> + <mimetype name="audio/x-wav"> + <label name="audio/x-wav_label"> + オーディオ(WAV) + </label> + </mimetype> + <mimetype name="image/bmp"> + <label name="image/bmp_label"> + 画像(BMP) + </label> + </mimetype> + <mimetype name="image/gif"> + <label name="image/gif_label"> + 画像(GIF) + </label> + </mimetype> + <mimetype name="image/jpeg"> + <label name="image/jpeg_label"> + 画像(JPEG) + </label> + </mimetype> + <mimetype name="image/png"> + <label name="image/png_label"> + 画像(PNG) + </label> + </mimetype> + <mimetype name="image/svg+xml"> + <label name="image/svg+xml_label"> + 画像(SVG) + </label> + </mimetype> + <mimetype name="image/tiff"> + <label name="image/tiff_label"> + 画像(TIFF) + </label> + </mimetype> + <mimetype name="text/html"> + <label name="text/html_label"> + Web ページ + </label> + </mimetype> + <mimetype name="text/plain"> + <label name="text/plain_label"> + テキスト + </label> + </mimetype> + <mimetype name="text/xml"> + <label name="text/xml_label"> + XML + </label> + </mimetype> + <mimetype name="video/mpeg"> + <label name="video/mpeg_label"> + ムービー(MPEG) + </label> + </mimetype> + <mimetype name="video/mp4"> + <label name="video/mp4_label"> + ムービー(MP4) + </label> + </mimetype> + <mimetype name="video/quicktime"> + <label name="video/quicktime_label"> + ムービー(QuickTime) + </label> + </mimetype> + <mimetype name="video/x-ms-asf"> + <label name="video/x-ms-asf_label"> + ムービー(Windows Media ASF) + </label> + </mimetype> + <mimetype name="video/x-ms-wmv"> + <label name="video/x-ms-wmv_label"> + ムービー(Windows Media WMV) + </label> + </mimetype> + <mimetype name="video/x-msvideo"> + <label name="video/x-msvideo_label"> + ムービー(AVI) + </label> + </mimetype> +</mimetypes> diff --git a/indra/newview/skins/default/xui/ja/mime_types_mac.xml b/indra/newview/skins/default/xui/ja/mime_types_mac.xml new file mode 100644 index 0000000000..0ec1030113 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/mime_types_mac.xml @@ -0,0 +1,217 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<mimetypes name="default"> + <widgetset name="web"> + <label name="web_label"> + Web コンテンツ + </label> + <tooltip name="web_tooltip"> + このロケーションには Web コンテンツが含まれています + </tooltip> + <playtip name="web_playtip"> + Web コンテンツを表示する + </playtip> + </widgetset> + <widgetset name="movie"> + <label name="movie_label"> + ムービー + </label> + <tooltip name="movie_tooltip"> + ここにはムービーがあります + </tooltip> + <playtip name="movie_playtip"> + ムービーを再生する + </playtip> + </widgetset> + <widgetset name="image"> + <label name="image_label"> + 画像 + </label> + <tooltip name="image_tooltip"> + このロケーションには画像があります + </tooltip> + <playtip name="image_playtip"> + このロケーションの画像を表示する + </playtip> + </widgetset> + <widgetset name="audio"> + <label name="audio_label"> + オーディオ + </label> + <tooltip name="audio_tooltip"> + このロケーションにはオーディオがあります + </tooltip> + <playtip name="audio_playtip"> + このロケーションのオーディオを再生する + </playtip> + </widgetset> + <scheme name="rtsp"> + <label name="rtsp_label"> + リアルタイム・ストリーミング + </label> + </scheme> + <mimetype name="blank"> + <label name="blank_label"> + - なし - + </label> + </mimetype> + <mimetype name="none/none"> + <label name="none/none_label"> + - なし - + </label> + </mimetype> + <mimetype name="audio/*"> + <label name="audio2_label"> + オーディオ + </label> + </mimetype> + <mimetype name="video/*"> + <label name="video2_label"> + ビデオ + </label> + </mimetype> + <mimetype name="image/*"> + <label name="image2_label"> + 画像 + </label> + </mimetype> + <mimetype name="video/vnd.secondlife.qt.legacy"> + <label name="vnd.secondlife.qt.legacy_label"> + ムービー(QuickTime) + </label> + </mimetype> + <mimetype name="application/javascript"> + <label name="application/javascript_label"> + Javascript + </label> + </mimetype> + <mimetype name="application/ogg"> + <label name="application/ogg_label"> + Ogg オーディオ・ビデオ + </label> + </mimetype> + <mimetype name="application/pdf"> + <label name="application/pdf_label"> + PDF ドキュメント + </label> + </mimetype> + <mimetype name="application/postscript"> + <label name="application/postscript_label"> + Postscript ドキュメント + </label> + </mimetype> + <mimetype name="application/rtf"> + <label name="application/rtf_label"> + リッチテキスト(RTF) + </label> + </mimetype> + <mimetype name="application/smil"> + <label name="application/smil_label"> + Synchronized Multimedia Integration Language (SMIL) + </label> + </mimetype> + <mimetype name="application/xhtml+xml"> + <label name="application/xhtml+xml_label"> + Web ページ(XHTML) + </label> + </mimetype> + <mimetype name="application/x-director"> + <label name="application/x-director_label"> + マクロメディアディレクター + </label> + </mimetype> + <mimetype name="audio/mid"> + <label name="audio/mid_label"> + オーディオ(MIDI) + </label> + </mimetype> + <mimetype name="audio/mpeg"> + <label name="audio/mpeg_label"> + オーディオ(MP3) + </label> + </mimetype> + <mimetype name="audio/x-aiff"> + <label name="audio/x-aiff_label"> + オーディオ(AIFF) + </label> + </mimetype> + <mimetype name="audio/x-wav"> + <label name="audio/x-wav_label"> + オーディオ(WAV) + </label> + </mimetype> + <mimetype name="image/bmp"> + <label name="image/bmp_label"> + 画像(BMP) + </label> + </mimetype> + <mimetype name="image/gif"> + <label name="image/gif_label"> + 画像(GIF) + </label> + </mimetype> + <mimetype name="image/jpeg"> + <label name="image/jpeg_label"> + 画像(JPEG) + </label> + </mimetype> + <mimetype name="image/png"> + <label name="image/png_label"> + 画像(PNG) + </label> + </mimetype> + <mimetype name="image/svg+xml"> + <label name="image/svg+xml_label"> + 画像(SVG) + </label> + </mimetype> + <mimetype name="image/tiff"> + <label name="image/tiff_label"> + 画像(TIFF) + </label> + </mimetype> + <mimetype name="text/html"> + <label name="text/html_label"> + Web ページ + </label> + </mimetype> + <mimetype name="text/plain"> + <label name="text/plain_label"> + テキスト + </label> + </mimetype> + <mimetype name="text/xml"> + <label name="text/xml_label"> + XML + </label> + </mimetype> + <mimetype name="video/mpeg"> + <label name="video/mpeg_label"> + ムービー(MPEG) + </label> + </mimetype> + <mimetype name="video/mp4"> + <label name="video/mp4_label"> + ムービー(MP4) + </label> + </mimetype> + <mimetype name="video/quicktime"> + <label name="video/quicktime_label"> + ムービー(QuickTime) + </label> + </mimetype> + <mimetype name="video/x-ms-asf"> + <label name="video/x-ms-asf_label"> + ムービー(Windows Media ASF) + </label> + </mimetype> + <mimetype name="video/x-ms-wmv"> + <label name="video/x-ms-wmv_label"> + ムービー(Windows Media WMV) + </label> + </mimetype> + <mimetype name="video/x-msvideo"> + <label name="video/x-msvideo_label"> + ムービー(AVI) + </label> + </mimetype> +</mimetypes> diff --git a/indra/newview/skins/default/xui/ja/notifications.xml b/indra/newview/skins/default/xui/ja/notifications.xml index 33ccc579a7..b502fb2e6e 100644 --- a/indra/newview/skins/default/xui/ja/notifications.xml +++ b/indra/newview/skins/default/xui/ja/notifications.xml @@ -32,10 +32,10 @@ <button name="No" text="$notext"/> </form> </template> - <notification functor="GenericAcknowledge" label="不明な警告メッセージ" name="MissingAlert"> - あなたの [APP_NAME] のバージョンでは今受け取った警告メッセージを表示することができません。 最新ビューワがインストールされているかご確認ください。 + <notification functor="GenericAcknowledge" label="不明の通知メッセージ" name="MissingAlert"> + あなたの [APP_NAME] のバージョンでは今受け取った通知メッセージを表示することができません。 最新ビューワがインストールされているかご確認ください。 -エラー詳細: 「[_NAME]」という警告は notifications.xml にありませんでした。 +エラー詳細: 「[_NAME]」という通知は notifications.xml にありませんでした。 <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="FloaterNotFound"> @@ -93,15 +93,13 @@ <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="保存しない" yestext="すべて保存"/> </notification> <notification name="GrantModifyRights"> - 他の住人に変更権限を与えると、その人はあなたが所有している -すべてのオブジェクトを変更、削除、または取得することができるようになります。この許可を与えるときは細心の注意を払ってください。 -[FIRST_NAME] [LAST_NAME]に対して変更権限を与えますか? + 他人に修正権限を与えると、権限を与えられた人はあなたが所有するインワールドのオブジェクトを変更、削除、持ち帰ることができます。 この権限を与える際には十分に注意してください。 +[FIRST_NAME] [LAST_NAME] に修正権限を与えますか? <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/> </notification> <notification name="GrantModifyRightsMultiple"> - 変更権限を与えると、その人はあなたが作成した全てのオブジェクトを変更することができます。 -この許可を与えるときには細心の注意を払ってください。 -選択した住人に変更権限を与えますか? + 他人に修正権限を与えると、権限を与えられた人はあなたが所有するインワールドのオブジェクトを変更することができます。 この権限を与える際には十分に注意してください。 +選択した住人に修正権限を与えますか? <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/> </notification> <notification name="RevokeModifyRights"> @@ -159,6 +157,11 @@ この能力を[ROLE_NAME]に割り当てますか? <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/> </notification> + <notification name="AttachmentDrop"> + アタッチメントを下に置こうとしています。 +続けますか? + <usetemplate ignoretext="アタッチメントを下に落とす前に確認する" name="okcancelignore" notext="いいえ" yestext="はい"/> + </notification> <notification name="ClickUnimplemented"> 申し訳ありませんが、まだ未実装です。 </notification> @@ -267,16 +270,10 @@ L$が不足しているのでこのグループに参加することができま </notification> <notification name="MultipleFacesSelected"> 現在複数の面が選択されています。 -このまま続けた場合、メディアの別々の段階がオブジェクトの複数の面に設定されます。 -メディアを 1 つの面だけに取り付けるには、「テクスチャを選択」を選び、オブジェクトの希望する面をクリック、それから「追加」をクリックしてください。 +このまま続けた場合、メディアの別々のインスタンスがオブジェクトの複数の面に設定されます。 +メディアを 1 つの面だけに取り付けるには、「面を選択」を選んでオブジェクトの希望する面をクリック、それから「追加」をクリックしてください。 <usetemplate ignoretext="メディアは選択した複数の面にセットされます。" name="okcancelignore" notext="キャンセル" yestext="OK"/> </notification> - <notification name="WhiteListInvalidatesHomeUrl"> - この入力をホワイトリストに追加すると、このメディア向けに特定した -ホーム URL を無効とします。 あなたにはこれを実行する許可がないので、 -入力はホワイトリストには追加されません。 - <usetemplate name="okbutton" yestext="Ok"/> - </notification> <notification name="MustBeInParcel"> 着地点を設定するには、この区画の内側に 立ってください。 @@ -368,14 +365,6 @@ L$が不足しているのでこのグループに参加することができま <notification name="SelectHistoryItemToView"> 表示する履歴アイテムを選択してください。 </notification> - <notification name="ResetShowNextTimeDialogs"> - これらのポップアップ全てを再度有効化しますか?(以前「今後は表示しない」と指定しています) - <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> - </notification> - <notification name="SkipShowNextTimeDialogs"> - スキップ可能なポップアップ全てを無効化しますか? - <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/> - </notification> <notification name="CacheWillClear"> [APP_NAME] を再起動後にキャッシュがクリアされます。 </notification> @@ -648,6 +637,10 @@ L$が不足しているのでこのグループに参加することができま <notification name="LandmarkCreated"> 「 [LANDMARK_NAME] 」を「 [FOLDER_NAME] 」フォルダに追加しました。 </notification> + <notification name="LandmarkAlreadyExists"> + この位置のランドマークを既に持っています。 + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="CannotCreateLandmarkNotOwner"> 土地の所有者が許可していないため、 ランドマークを作成することはできません。 @@ -753,10 +746,8 @@ L$が不足しているのでこのグループに参加することができま 選択する面積を小さくして、もう一度試してください。 </notification> <notification name="ForceOwnerAuctionWarning"> - この区画はオークションに出品されています。 -区画の所有権を取得するとオークションが無効になり、 -入札が開始していたら不満に思う住人が出てくるかもしれません。 -所有権を取得しますか? + この区画はオークションに出されています。 所有権を変更するとオークションはキャンセルとなり、既にオークションに参加している住人がいればその人に迷惑をかけてしまいます。 +所有権を変更しますか? <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> <notification name="CannotContentifyNothingSelected"> @@ -805,11 +796,11 @@ L$が不足しているのでこのグループに参加することができま これより1つの区画を選択してください。 </notification> <notification name="ParcelCanPlayMedia"> - ここではストリーミング・メディア再生が可能です。 -メディアのストリーミングには、高速なインターネット接続環境が必要です。 + この場所では、ストリーミングメディアの再生が可能です。 +ストリーミングメディアには、高速インターネット接続を要します。 -利用可能になったら再生しますか? -(このオプションは、「環境設定」>「音声とビデオ」で後からでも変更できます) +利用可能なときにストリーミングメディアを再生しますか? +(このオプションは、「環境設定」 > 「プライバシー」であとからでも変更できます。) <usetemplate name="okcancelbuttons" notext="無効化" yestext="メディアを再生"/> </notification> <notification name="CannotDeedLandWaitingForServer"> @@ -1394,6 +1385,10 @@ F1キーを押してください。 [INVITE] <usetemplate name="okcancelbuttons" notext="辞退" yestext="参加"/> </notification> + <notification name="JoinedTooManyGroups"> + 加入できるグループの最大限に達しました。 新しくグループに参加、または作成する前に、どれかグループから抜けてください。 + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="KickUser"> どんなメッセージを表示して、このユーザーを追い出しますか? <form name="form"> @@ -1641,11 +1636,11 @@ L$[AMOUNT]で、このクラシファイド広告を今すぐ公開しますか <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> <notification name="SetClassifiedMature"> - この広告にMatureコンテンツは含まれていますか? + この広告に「控えめ」コンテンツは含まれていますか? <usetemplate canceltext="キャンセル" name="yesnocancelbuttons" notext="いいえ" yestext="はい"/> </notification> <notification name="SetGroupMature"> - この広告にMatureコンテンツは含まれていますか? + このグループに「控えめ」コンテンツが含まれていますか? <usetemplate canceltext="キャンセル" name="yesnocancelbuttons" notext="いいえ" yestext="はい"/> </notification> <notification label="再起動を確認" name="ConfirmRestart"> @@ -1663,8 +1658,10 @@ L$[AMOUNT]で、このクラシファイド広告を今すぐ公開しますか </form> </notification> <notification label="地域のレーティング区分指定変更済み" name="RegionMaturityChange"> - この地域のレーティング区分指定がアップデートされました。 -この変更が地図に反映されるまでにはしばらく時間がかかります。 + このリージョンのレーティング区分がアップデートされました。 +地図に変更が反映されるまで数分かかることがあります。 + +アダルト専用リージョンに入るには、住人のアカウントが年齢確認か支払方法のいずれかで「確認済み」でなければなりません。 </notification> <notification label="ボイスバージョンの不一致" name="VoiceVersionMismatch"> [APP_NAME] のこのバージョンは、このリージョンにおけるボイスチャットの互換性がありません。 ボイスチャットを正常に行うためには、[APP_NAME] のアップデートが必要です。 @@ -1785,16 +1782,6 @@ L$[AMOUNT]で、このクラシファイド広告を今すぐ公開しますか 報告された嫌がらせはすべて調査・解決されます。 解決されたものは [http://secondlife.com/support/incidentreport.php Incident Report] で見ることができます。 </notification> - <notification name="HelpReportAbuseEmailEO"> - 重要: この報告は Linden Lab には送信されず、現在あなたがいるリージョンの所有者に送信されます。 - -住人や訪問者へのサービスの一環として、現在いるリージョンの所有者は、このリージョン内のすべての報告を自ら受け取り、解決するよう設定しています。 Linden Lab はここから送信された報告の調査を行いません。 - -リージョンの所有者は、このリージョンの不動産約款に記載されたローカルルールに則って報告に対応します。 -(「世界」メニューの「土地情報」で約款を確認できます。) - -この報告への解決策は、このリージョンでのみ適用されます。 [SECOND_LIFE] のその他のエリアにアクセスする住人には、この報告の結果には影響がありません。 [SECOND_LIFE] へのアクセスを制限できるのは、Linden Lab だけです。 - </notification> <notification name="HelpReportAbuseSelectCategory"> 嫌がらせ報告のカテゴリを選択してください。 カテゴリを選択することにより、嫌がらせ報告の処理や保管に大変役立ちます。 @@ -2034,8 +2021,7 @@ Webページにこれをリンクすると、他人がこの場所に簡単に ジェスチャーの [NAME] がデータベースに見つかりません。 </notification> <notification name="UnableToLoadGesture"> - ジェスチャー[NAME] を読み込むことができません。 -再度、試みてください。 + [NAME] というジェスチャーを読み込むことができませんでした。 </notification> <notification name="LandmarkMissing"> データベースにランドマークがありません。 @@ -2139,7 +2125,7 @@ Webページにこれをリンクすると、他人がこの場所に簡単に コミュニティスタンダードに明記されているコンテンツ制限により、あなたの検索語の一部が除外されました。 </notification> <notification name="NoContentToSearch"> - 少なくともどれか一つコンテンツの種類を選択して検索を行ってください。(PG, Mature, Adult) + 少なくともどれか一つコンテンツの種類を選択して検索を行ってください。(一般、控えめ、アダルト) </notification> <notification name="GroupVote"> [NAME] は投票の申請をしています: @@ -2152,6 +2138,9 @@ Webページにこれをリンクすると、他人がこの場所に簡単に <notification name="SystemMessage"> [MESSAGE] </notification> + <notification name="PaymentRecived"> + [MESSAGE] + </notification> <notification name="EventNotification"> イベント通知: @@ -2201,8 +2190,7 @@ Webページにこれをリンクすると、他人がこの場所に簡単に が所有するオブジェクトは、オーナーの持ち物に返却されました。 </notification> <notification name="OtherObjectsReturned2"> - 選択された土地の区画上にあり、 -住人の[NAME]の所有だったオブジェクトはオーナーに返却されました。 + 「[NAME]」という名前の住人が所有する、選択した区画にあるオブジェクトは、所有者に返却されました。 </notification> <notification name="GroupObjectsReturned"> 選択されている区画上にあり、[GROUPNAME] というグループと共有だったオブジェクトは、オーナーの持ち物に返却されました。 @@ -2215,7 +2203,6 @@ Webページにこれをリンクすると、他人がこの場所に簡単に <notification name="ServerObjectMessage"> [NAME] からのメッセージ: [MSG] - <usetemplate name="okcancelbuttons" notext="OK" yestext="調べる"/> </notification> <notification name="NotSafe"> この土地ではダメージが有効です。 @@ -2327,8 +2314,8 @@ Webページにこれをリンクすると、他人がこの場所に簡単に 有効な区画が見つかりませんでした。 </notification> <notification name="ObjectGiveItem"> - [NAME_SLURL] が所有する [OBJECTFROMNAME] が、あなたに [OBJECTTYPE] : -[ITEM_SLURL] を渡しました + [NAME_SLURL] が所有する [OBJECTFROMNAME] という名前のオブジェクトが、あなたにこの [OBJECTTYPE] を渡しました: +[ITEM_SLURL] <form name="form"> <button name="Keep" text="受け取る"/> <button name="Discard" text="破棄"/> @@ -2336,8 +2323,8 @@ Webページにこれをリンクすると、他人がこの場所に簡単に </form> </notification> <notification name="ObjectGiveItemUnknownUser"> - (不明の住人)が所有する [OBJECTFROMNAME] が、あなたに [OBJECTTYPE] : -[ITEM_SLURL] を渡しました + (不明の住人)が所有する [OBJECTFROMNAME] という名前のオブジェクトが、あなたにこの [OBJECTTYPE] を渡しました: +[ITEM_SLURL] <form name="form"> <button name="Keep" text="受け取る"/> <button name="Discard" text="破棄"/> @@ -2345,12 +2332,12 @@ Webページにこれをリンクすると、他人がこの場所に簡単に </form> </notification> <notification name="UserGiveItem"> - [NAME_SLURL] があなたに [OBJECTTYPE]: -[ITEM_SLURL] を渡しました + [NAME_SLURL] があなたにこの [OBJECTTYPE] を渡しました: +[ITEM_SLURL] <form name="form"> - <button name="Keep" text="受け取る"/> <button name="Show" text="表示"/> <button name="Discard" text="破棄"/> + <button name="Mute" text="ブロック"/> </form> </notification> <notification name="GodMessage"> @@ -2375,6 +2362,9 @@ Webページにこれをリンクすると、他人がこの場所に簡単に <button name="Cancel" text="取り消し"/> </form> </notification> + <notification name="TeleportOfferSent"> + [TO_NAME] にテレポートを送りました。 + </notification> <notification name="GotoURL"> [MESSAGE] [URL] @@ -2393,8 +2383,12 @@ Webページにこれをリンクすると、他人がこの場所に簡単に <form name="form"> <button name="Accept" text="受け入れる"/> <button name="Decline" text="辞退"/> + <button name="Send IM" text="IMを送信"/> </form> </notification> + <notification name="FriendshipOffered"> + [TO_NAME] にフレンド登録を申し出ました。 + </notification> <notification name="OfferFriendshipNoMessage"> [NAME]は、 フレンド登録を申し込んでいます。 @@ -2412,9 +2406,8 @@ Webページにこれをリンクすると、他人がこの場所に簡単に [NAME]は、フレンド 登録を断りました。 </notification> <notification name="OfferCallingCard"> - [FIRST] [LAST]が -あなたにコーリングカードを送ってきました。 -これにより、あなたの持ち物にブックマークが追加され、この住人にすばやくIMすることができます。 + [FIRST] [LAST] がコーリングカードを渡そうとしています。 +あなたの持ち物にブックマークが追加され、この住人に素早く IM を送ることができます。 <form name="form"> <button name="Accept" text="受け入れる"/> <button name="Decline" text="辞退"/> @@ -2494,14 +2487,6 @@ Webページにこれをリンクすると、他人がこの場所に簡単に <button name="Block" text="ブロック"/> </form> </notification> - <notification name="FirstBalanceIncrease"> - L$ [AMOUNT] を受け取りました。 -あなたの L$ 残高は画面右上に表示されています。 - </notification> - <notification name="FirstBalanceDecrease"> - L$ [AMOUNT] を支払いました。 -あなたの L$ 残高は画面右上に表示されています。 - </notification> <notification name="BuyLindenDollarSuccess"> お支払ありがとうございます。 @@ -2509,58 +2494,17 @@ Webページにこれをリンクすると、他人がこの場所に簡単に [http://secondlife.com/account/ マイアカウント] の取引履歴ページで、支払状況を確認できます。 </notification> - <notification name="FirstSit"> - 着席中です。 -周囲を見るには矢印キーか AWSD キーを使ってください。 -立つときには「立ち上がる」ボタンをクリックしてください。 - </notification> - <notification name="FirstMap"> - 地図をクリック・ドラッグして周囲を見てください。 -ダブルクリックするとテレポートします。 -右側のコントロールで場所を探したり背景を変更してください。 - </notification> - <notification name="FirstBuild"> - 制作ツールを開きました。 見るものすべてがこのツールで作成されたものです。 - </notification> - <notification name="FirstTeleport"> - このリージョンでは特定のエリアにのみテレポートできます。 矢印が目的地を指しています。 矢印をクリックすると消えます。 - </notification> <notification name="FirstOverrideKeys"> あなたの移動キーをオブジェクトが操作しています。 矢印かAWSDのキーで動作を確認してください。 銃などのオブジェクトだと、一人称視点(マウスルック)に変更する必要があります。 Mキーを押して変更します。 </notification> - <notification name="FirstAppearance"> - 容姿を編集中です。 -周囲を見るには矢印キーを使ってください。 -終わったら「すべて保存」を押してください。 - </notification> - <notification name="FirstInventory"> - これはあなたの持ち物です。所有しているアイテムが入っています。 - -* アイテムを自分にドラッグして装着してください。 -* アイテムを地面にドラッグして Rez してください。 -* ノートカードをダブルクリックして開いてください。 - </notification> <notification name="FirstSandbox"> ここはサンドボックスエリアです。住人が制作を学ぶことができます。 ここで制作されたものは時間が経つと削除されます。制作したアイテムを右クリックして「取る」を選び、持ち物に入れてお持ち帰りするのをお忘れなく。 </notification> - <notification name="FirstFlexible"> - このオブジェクトはフレキシブルです。 フレキシスは、「物理」ではなく「ファントム」でなければなりません。 - </notification> - <notification name="FirstDebugMenus"> - アドバンスメニューを開きました。 - -このメニューの有効・無効設定 - Windows: Ctrl+Alt+D - Mac: ⌥⌘D - </notification> - <notification name="FirstSculptedPrim"> - スカルプトプリムを編集中です。 スカルプトには形状の輪郭を指定するための特別なテクスチャが必要です。 - </notification> <notification name="MaxListSelectMessage"> このリストから[MAX_SELECT]個までのアイテムを選択できます。 </notification> @@ -2654,12 +2598,23 @@ Mキーを押して変更します。 <notification name="UnsupportedCommandSLURL"> クリックした SLurl はサポートされていません。 </notification> + <notification name="BlockedSLURL"> + 信用できないブラウザから SLurl が送られてきたので、セキュリティのためブロックされました。 + </notification> + <notification name="ThrottledSLURL"> + 短期間のあいだに、信用できないブラウザから複数の SLurls が送られてきました。 +安全のために数秒間ブロックされます。 + </notification> <notification name="IMToast"> [MESSAGE] <form name="form"> <button name="respondbutton" text="返答"/> </form> </notification> + <notification name="ConfirmCloseAll"> + すべての IM を閉じますか? + <usetemplate name="okcancelignore" notext="キャンセル" yestext="OK"/> + </notification> <notification name="AttachmentSaved"> アタッチメントが保存されました。 </notification> @@ -2671,6 +2626,14 @@ Mキーを押して変更します。 「[ERROR]」 <usetemplate name="okbutton" yestext="OK"/> </notification> + <notification name="TextChatIsMutedByModerator"> + モデレーターがあなたの文字チャットをミュートしました。 + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="VoiceIsMutedByModerator"> + モデレーターがあなたのボイスをミュートしました。 + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="ConfirmClearTeleportHistory"> テレポート履歴を削除しますか? <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/> diff --git a/indra/newview/skins/default/xui/ja/panel_active_object_row.xml b/indra/newview/skins/default/xui/ja/panel_active_object_row.xml new file mode 100644 index 0000000000..90491e84c5 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_active_object_row.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_activeim_row"> + <string name="unknown_obj"> + 不明のオブジェクト + </string> + <text name="object_name"> + 名前のないオブジェクト + </text> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/ja/panel_adhoc_control_panel.xml index 364ba76763..17e1283d24 100644 --- a/indra/newview/skins/default/xui/ja/panel_adhoc_control_panel.xml +++ b/indra/newview/skins/default/xui/ja/panel_adhoc_control_panel.xml @@ -1,8 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_im_control_panel"> - <panel name="panel_call_buttons"> - <button label="コール" name="call_btn"/> - <button label="コール終了" name="end_call_btn"/> - <button label="ボイスコントロール" name="voice_ctrls_btn"/> - </panel> + <layout_stack name="vertical_stack"> + <layout_panel name="call_btn_panel"> + <button label="コール" name="call_btn"/> + </layout_panel> + <layout_panel name="end_call_btn_panel"> + <button label="コール終了" name="end_call_btn"/> + </layout_panel> + <layout_panel name="voice_ctrls_btn_panel"> + <button label="ボイスコントロール" name="voice_ctrls_btn"/> + </layout_panel> + </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/ja/panel_avatar_list_item.xml index 2efcb9f723..03eaf33d92 100644 --- a/indra/newview/skins/default/xui/ja/panel_avatar_list_item.xml +++ b/indra/newview/skins/default/xui/ja/panel_avatar_list_item.xml @@ -23,4 +23,5 @@ </string> <text name="avatar_name" value="不明"/> <text name="last_interaction" value="0 秒"/> + <button name="profile_btn" tool_tip="プロフィールの表示"/> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/ja/panel_block_list_sidetray.xml index 58ef8c3107..5d6a6065ae 100644 --- a/indra/newview/skins/default/xui/ja/panel_block_list_sidetray.xml +++ b/indra/newview/skins/default/xui/ja/panel_block_list_sidetray.xml @@ -4,7 +4,7 @@ ブロックリスト </text> <scroll_list name="blocked" tool_tip="現在ブロックされている住人一覧"/> - <button label="住人をブロック..." label_selected="住人をブロック..." name="Block resident..." tool_tip="ブロックしたい住人を選んでください"/> + <button label="アバターをブロック" label_selected="住人をブロック..." name="Block resident..." tool_tip="ブロックしたい住人を選んでください"/> <button label="名前でオブジェクトをブロック..." label_selected="名前でオブジェクトをブロック..." name="Block object by name..." tool_tip="名前でブロックしたいオブジェクトを選んでください"/> <button label="ブロック解除" label_selected="ブロック解除" name="Unblock" tool_tip="ブロックリストから住人・オブジェクトを削除"/> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_bottomtray.xml b/indra/newview/skins/default/xui/ja/panel_bottomtray.xml index 5edc1b651d..414413a980 100644 --- a/indra/newview/skins/default/xui/ja/panel_bottomtray.xml +++ b/indra/newview/skins/default/xui/ja/panel_bottomtray.xml @@ -8,7 +8,7 @@ </string> <layout_stack name="toolbar_stack"> <layout_panel name="gesture_panel"> - <gesture_combo_box label="ジェスチャー" name="Gesture" tool_tip="ジェスチャーの表示・非表示"/> + <gesture_combo_list label="ジェスチャー" name="Gesture" tool_tip="ジェスチャーの表示・非表示"/> </layout_panel> <layout_panel name="movement_panel"> <button label="移動" name="movement_btn" tool_tip="移動コントロールの表示・非表示"/> @@ -19,5 +19,15 @@ <layout_panel name="snapshot_panel"> <button label="" name="snapshots" tool_tip="スナップショットを撮る"/> </layout_panel> + <layout_panel name="im_well_panel"> + <chiclet_im_well name="im_well"> + <button name="Unread IM messages" tool_tip="Conversations"/> + </chiclet_im_well> + </layout_panel> + <layout_panel name="notification_well_panel"> + <chiclet_notification name="notification_well"> + <button name="Unread" tool_tip="通知"/> + </chiclet_notification> + </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_classified_info.xml b/indra/newview/skins/default/xui/ja/panel_classified_info.xml index 1a5933a4e9..7fc4e6f674 100644 --- a/indra/newview/skins/default/xui/ja/panel_classified_info.xml +++ b/indra/newview/skins/default/xui/ja/panel_classified_info.xml @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_classified_info"> <panel.string name="type_mature"> - Mature + 控えめ </panel.string> <panel.string name="type_pg"> - PG コンテンツ + 一般コンテンツ </panel.string> <text name="title" value="クラシファイド広告情報"/> <scroll_container name="profile_scroll"> diff --git a/indra/newview/skins/default/xui/ja/panel_edit_classified.xml b/indra/newview/skins/default/xui/ja/panel_edit_classified.xml index ca065113d3..4cb5884f28 100644 --- a/indra/newview/skins/default/xui/ja/panel_edit_classified.xml +++ b/indra/newview/skins/default/xui/ja/panel_edit_classified.xml @@ -24,10 +24,10 @@ <button label="現在地に設定" name="set_to_curr_location_btn"/> <combo_box name="content_type"> <combo_item name="mature_ci"> - Matureコンテンツ + 控えめコンテンツ </combo_item> <combo_item name="pg_ci"> - PGコンテンツ + 一般コンテンツ </combo_item> </combo_box> <spinner label="L$" name="price_for_listing" tool_tip="掲載価格" value="50"/> diff --git a/indra/newview/skins/default/xui/ja/panel_edit_profile.xml b/indra/newview/skins/default/xui/ja/panel_edit_profile.xml index b232a8db61..2a850ab29c 100644 --- a/indra/newview/skins/default/xui/ja/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/ja/panel_edit_profile.xml @@ -19,6 +19,9 @@ <string name="partner_edit_link_url"> http://www.secondlife.com/account/partners.php?lang=ja </string> + <string name="my_account_link_url"> + http://jp.secondlife.com/my + </string> <string name="no_partner_text" value="なし"/> <scroll_container name="profile_scroll"> <panel name="scroll_content_panel"> @@ -44,7 +47,7 @@ <text name="title_partner_text" value="マイパートナー:"/> <text name="partner_edit_link" value="[[URL] 編集]"/> <panel name="partner_data_panel"> - <text name="partner_text" value="[FIRST] [LAST]"/> + <name_box name="partner_text" value="[FIRST] [LAST]"/> </panel> </panel> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_friends.xml b/indra/newview/skins/default/xui/ja/panel_friends.xml index d4cf678d70..80a68f8258 100644 --- a/indra/newview/skins/default/xui/ja/panel_friends.xml +++ b/indra/newview/skins/default/xui/ja/panel_friends.xml @@ -1,53 +1,32 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="friends"> <string name="Multiple"> - 複数のフレンド... + 複数のフレンド </string> - <scroll_list name="friend_list" - tool_tip="複数のフレンドを選択するには、ShiftキーまたはCtrlキーを押しながら名前をクリックします。"> - <column name="icon_online_status" tool_tip="オンライン・ステータス" /> - <column label="名前" name="friend_name" tool_tip="名前" /> - <column name="icon_visible_online" - tool_tip="フレンドは、あなたがオンラインかどうか確認することができます。" /> - <column name="icon_visible_map" - tool_tip="フレンドは、地図であなたの居場所を見つけることができます。" /> - <column name="icon_edit_mine" - tool_tip="フレンドは、オブジェクトを編集、削除、または取得することができます。" /> - <column name="icon_edit_theirs" - tool_tip="あなたは、このフレンドのオブジェクトを編集することができます。" /> + <scroll_list name="friend_list" tool_tip="複数のフレンドを選択するには、ShiftキーまたはCtrlキーを押しながら名前をクリックします。"> + <column name="icon_online_status" tool_tip="オンライン・ステータス"/> + <column label="名前" name="friend_name" tool_tip="名前"/> + <column name="icon_visible_online" tool_tip="フレンドは、あなたがオンラインかどうか確認することができます。"/> + <column name="icon_visible_map" tool_tip="フレンドは、地図であなたの居場所を見つけることができます。"/> + <column name="icon_edit_mine" tool_tip="フレンドは、オブジェクトを編集、削除、または取得することができます。"/> + <column name="icon_edit_theirs" tool_tip="あなたは、このフレンドのオブジェクトを編集することができます。"/> </scroll_list> <panel name="rights_container"> <text name="friend_name_label" right="-10"> フレンドを選択して権利を変更... </text> - <check_box label="オンライン・ステータスの確認を許可する" - name="online_status_cb" - tool_tip="コーリングカードあるいはフレンドリストでこのフレンドがオンライン状態を確認できるよう設定" /> - <check_box label="世界地図上であなたの居場所を検索可能にする" - name="map_status_cb" - tool_tip="このフレンドが地図で私の位置を発見できるように設定" /> - <check_box label="オブジェクトの修正を許可する" name="modify_status_cb" - tool_tip="このフレンドがオブジェクトを改造できる許可を与える" /> + <check_box label="オンライン・ステータスの確認を許可する" name="online_status_cb" tool_tip="コーリングカードあるいはフレンドリストでこのフレンドがオンライン状態を確認できるよう設定"/> + <check_box label="世界地図上であなたの居場所を検索可能にする" name="map_status_cb" tool_tip="このフレンドが地図で私の位置を発見できるように設定"/> + <check_box label="オブジェクトの修正を許可する" name="modify_status_cb" tool_tip="このフレンドがオブジェクトを改造できる許可を与える"/> <text name="process_rights_label"> 権利変更をプロセス中... </text> </panel> - <pad left="-95" /> - <button label="IM/コール" name="im_btn" - tool_tip="インスタントメッセージ・セッションを開く" - width="90" /> - <button label="プロフィール" name="profile_btn" - tool_tip="写真、グループ、およびその他の情報を表示します。" - width="90" /> - <button label="テレポート..." name="offer_teleport_btn" - tool_tip="このフレンドに、あなたの現在のロケーションまでのテレポートを申し出ます。" - width="90" /> - <button label="支払う..." name="pay_btn" - tool_tip="リンデンドル (L$) をこのフレンドにあげる" - width="90" /> - <button label="削除..." name="remove_btn" - tool_tip="この人物をフレンドリストから外します。" - width="90" /> - <button label="追加..." name="add_btn" - tool_tip="住人にフレンドシップを申請します。" width="90" /> + <pad left="-95"/> + <button label="IM/コール" name="im_btn" tool_tip="インスタントメッセージ・セッションを開く" width="90"/> + <button label="プロフィール" name="profile_btn" tool_tip="写真、グループ、およびその他の情報を表示します。" width="90"/> + <button label="テレポート" name="offer_teleport_btn" tool_tip="このフレンドに、あなたの現在のロケーションまでのテレポートを申し出ます。" width="90"/> + <button label="支払う" name="pay_btn" tool_tip="リンデンドル (L$) をこのフレンドにあげる" width="90"/> + <button label="削除" name="remove_btn" tool_tip="この人物をフレンドリストから外します。" width="90"/> + <button label="追加" name="add_btn" tool_tip="フレンド登録を申し出る" width="90"/> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_group_control_panel.xml b/indra/newview/skins/default/xui/ja/panel_group_control_panel.xml index 5369daed03..1c89675c1e 100644 --- a/indra/newview/skins/default/xui/ja/panel_group_control_panel.xml +++ b/indra/newview/skins/default/xui/ja/panel_group_control_panel.xml @@ -1,9 +1,17 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_im_control_panel"> - <button label="グループ情報" name="group_info_btn"/> - <panel name="panel_call_buttons"> - <button label="グループにコール" name="call_btn"/> - <button label="コール終了" name="end_call_btn"/> - <button label="ボイスコントロールを開く" name="voice_ctrls_btn"/> - </panel> + <layout_stack name="vertical_stack"> + <layout_panel name="group_info_btn_panel"> + <button label="グループ情報" name="group_info_btn"/> + </layout_panel> + <layout_panel name="call_btn_panel"> + <button label="グループにコール" name="call_btn"/> + </layout_panel> + <layout_panel name="end_call_btn_panel"> + <button label="コール終了" name="end_call_btn"/> + </layout_panel> + <layout_panel name="voice_ctrls_btn_panel"> + <button label="ボイスコントロールを開く" name="voice_ctrls_btn"/> + </layout_panel> + </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_group_general.xml b/indra/newview/skins/default/xui/ja/panel_group_general.xml index 98b118f58f..538f3800bd 100644 --- a/indra/newview/skins/default/xui/ja/panel_group_general.xml +++ b/indra/newview/skins/default/xui/ja/panel_group_general.xml @@ -22,16 +22,16 @@ 私のタイトル </text> <combo_box name="active_title" tool_tip="このグループをアクティブにしたときに、アバター名の上に表示されるタイトルを設定します。"/> - <check_box label="通知を受信" name="receive_notices" tool_tip="このグループからの通知を受信するかどうかの設定を行います。 グループからスパムが送られてくる場合はこのボックスのチェックを外してください。"/> + <check_box label="グループ通知を受信" name="receive_notices" tool_tip="このグループからの通知を受信するかどうかの設定を行います。 グループからスパムが送られてくる場合はこのボックスのチェックを外してください。"/> <check_box label="プロフィールに表示" name="list_groups_in_profile" tool_tip="あなたのプロフィールにこのグループを表示するかどうかの設定を行います。"/> <panel name="preferences_container"> <check_box label="会員募集" name="open_enrollement" tool_tip="招待されなくても新規メンバーが加入できるかどうかを設定します。"/> <check_box label="入会費" name="check_enrollment_fee" tool_tip="入会費が必要かどうかを設定します。"/> <spinner label="L$" name="spin_enrollment_fee" tool_tip="「入会費」にチェックが入っている場合、新規メンバーは指定された入会費を支払わなければグループに入れません。"/> <check_box initial_value="true" label="検索に表示" name="show_in_group_list" tool_tip="このグループを検索結果に表示させます"/> - <combo_box name="group_mature_check" tool_tip="グループ情報が Mature 向けかどうかの設定をします。"> - <combo_box.item label="PGコンテンツ" name="pg"/> - <combo_box.item label="Matureコンテンツ" name="mature"/> + <combo_box name="group_mature_check" tool_tip="あなたのグループに「控えめ」にレート設定された情報があるかどうかを設定します"> + <combo_box.item label="一般コンテンツ" name="pg"/> + <combo_box.item label="控えめコンテンツ" name="mature"/> </combo_box> </panel> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/ja/panel_group_info_sidetray.xml index 7c8cb85990..0af1ce2ef2 100644 --- a/indra/newview/skins/default/xui/ja/panel_group_info_sidetray.xml +++ b/indra/newview/skins/default/xui/ja/panel_group_info_sidetray.xml @@ -31,6 +31,8 @@ </accordion> <panel name="button_row"> <button label="作成" label_selected="新しいグループ" name="btn_create"/> + <button label="グループチャット" name="btn_chat"/> + <button label="グループコール" name="btn_call"/> <button label="保存" label_selected="保存" name="btn_apply"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_group_invite.xml b/indra/newview/skins/default/xui/ja/panel_group_invite.xml index eddb0c3612..dc58359133 100644 --- a/indra/newview/skins/default/xui/ja/panel_group_invite.xml +++ b/indra/newview/skins/default/xui/ja/panel_group_invite.xml @@ -7,13 +7,10 @@ (ローディング...) </panel.string> <panel.string name="already_in_group"> - 何人かのアバターは既にグループ加入済みのため、招待されませんでした。 + 選択した住人のなかに、既にグループに所属している人がいるため、招待を送ることができませんでした。 </panel.string> <text bottom_delta="-96" font="SansSerifSmall" height="72" name="help_text"> - あなたのグループに一度に複数の -住人を招待することができます。 -「リストから住人を選択」 -をクリックしてください。 + グループには一度に複数の住人を招待することができます。 「リストから住人を選択」をクリックしてください。 </text> <button bottom_delta="-10" label="リストから住人を選択" name="add_button" tool_tip=""/> <name_list bottom_delta="-160" height="156" name="invitee_list" tool_tip="Ctrl キーを押しながら複数の住人をクリックできます"/> diff --git a/indra/newview/skins/default/xui/ja/panel_group_list_item.xml b/indra/newview/skins/default/xui/ja/panel_group_list_item.xml index a652e3bf11..4b548049c8 100644 --- a/indra/newview/skins/default/xui/ja/panel_group_list_item.xml +++ b/indra/newview/skins/default/xui/ja/panel_group_list_item.xml @@ -1,4 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="group_list_item"> <text name="group_name" value="不明"/> + <button name="profile_btn" tool_tip="プロフィールの表示"/> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_group_notices.xml b/indra/newview/skins/default/xui/ja/panel_group_notices.xml index 684e22a4da..c5168c4d7c 100644 --- a/indra/newview/skins/default/xui/ja/panel_group_notices.xml +++ b/indra/newview/skins/default/xui/ja/panel_group_notices.xml @@ -1,11 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="通知" name="notices_tab"> <panel.string name="help_text"> - 通知でメッセージと -アイテムを添付して送ることができます。 通知を受け取る権限のある役割の -グループメンバーが -受け取ることができます。 通知を受け取りたくない場合は -一般タブから設定してください。 + 通知でメッセージを送ることができ、通知にアイテムを添付することができます。 +通知を受け取ることができる「役割」にあるメンバーだけに送信されます。 +「一般」タブで通知の受信をオフにすることができます。 </panel.string> <panel.string name="no_notices_text"> 過去の通知はありません @@ -24,7 +22,7 @@ 見つかりませんでした </text> <button label="新しい通知を作成" label_selected="新しい通知を作成" name="create_new_notice" tool_tip="新しい通知を作成"/> - <button label="更新" label_selected="リスト更新" name="refresh_notices"/> + <button label="更新" label_selected="リスト更新" name="refresh_notices" tool_tip="通知リストを更新"/> <panel label="新しい通知を作成" name="panel_create_new_notice"> <text name="lbl"> 通知を作成 @@ -39,11 +37,11 @@ 添付: </text> <text name="string"> - 添付するアイテムをここにドラッグ -- > + ここにアイテムをドラッグ&ドロップして添付してください: </text> <button label="取り外す" label_selected="添付物を削除" name="remove_attachment"/> <button label="送信" label_selected="送信" name="send_notice"/> - <group_drop_target name="drop_target" tool_tip="持ち物からアイテムをメッセージ欄にドラッグしてください。通知と一緒に送信されます。送信するにはコピー、譲渡が可能なオブジェクトである必要があります。"/> + <group_drop_target name="drop_target" tool_tip="持ち物のアイテムをこのボックスにドラッグして、通知と一緒に送ります。 添付するには、そのアイテムのコピーと再販・プレゼントの権限があなたにある必要があります。"/> </panel> <panel label="過去の通知を表示" name="panel_view_past_notice"> <text name="lbl"> diff --git a/indra/newview/skins/default/xui/ja/panel_group_notify.xml b/indra/newview/skins/default/xui/ja/panel_group_notify.xml index 2edd054180..7135ae780d 100644 --- a/indra/newview/skins/default/xui/ja/panel_group_notify.xml +++ b/indra/newview/skins/default/xui/ja/panel_group_notify.xml @@ -8,5 +8,5 @@ </panel> <text_editor name="message" value="message"/> <text name="attachment" value="添付アイテム"/> - <button label="Ok" name="btn_ok"/> + <button label="OK" name="btn_ok"/> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_im_control_panel.xml b/indra/newview/skins/default/xui/ja/panel_im_control_panel.xml index 138a9c6360..bfadcb13d3 100644 --- a/indra/newview/skins/default/xui/ja/panel_im_control_panel.xml +++ b/indra/newview/skins/default/xui/ja/panel_im_control_panel.xml @@ -1,13 +1,27 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_im_control_panel"> <text name="avatar_name" value="不明"/> - <button label="プロフィール" name="view_profile_btn"/> - <button label="フレンド登録" name="add_friend_btn"/> - <button label="テレポート" name="teleport_btn"/> - <button label="共有" name="share_btn"/> - <panel name="panel_call_buttons"> - <button label="コール" name="call_btn"/> - <button label="コール終了" name="end_call_btn"/> - <button label="ボイスコントロール" name="voice_ctrls_btn"/> - </panel> + <layout_stack name="button_stack"> + <layout_panel name="view_profile_btn_panel"> + <button label="プロフィール" name="view_profile_btn"/> + </layout_panel> + <layout_panel name="add_friend_btn_panel"> + <button label="フレンド登録" name="add_friend_btn"/> + </layout_panel> + <layout_panel name="teleport_btn_panel"> + <button label="テレポート" name="teleport_btn"/> + </layout_panel> + <layout_panel name="share_btn_panel"> + <button label="共有" name="share_btn"/> + </layout_panel> + <layout_panel name="call_btn_panel"> + <button label="コール" name="call_btn"/> + </layout_panel> + <layout_panel name="end_call_btn_panel"> + <button label="コール終了" name="end_call_btn"/> + </layout_panel> + <layout_panel name="voice_ctrls_btn_panel"> + <button label="ボイスコントロール" name="voice_ctrls_btn"/> + </layout_panel> + </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_landmark_info.xml b/indra/newview/skins/default/xui/ja/panel_landmark_info.xml index 0f1e9b4962..9129c66a45 100644 --- a/indra/newview/skins/default/xui/ja/panel_landmark_info.xml +++ b/indra/newview/skins/default/xui/ja/panel_landmark_info.xml @@ -21,6 +21,7 @@ <string name="icon_PG" value="parcel_drk_PG"/> <string name="icon_M" value="parcel_drk_M"/> <string name="icon_R" value="parcel_drk_R"/> + <button name="back_btn" tool_tip="戻る"/> <text name="title" value="場所のプロフィール"/> <scroll_container name="place_scroll"> <panel name="scrolling_panel"> diff --git a/indra/newview/skins/default/xui/ja/panel_login.xml b/indra/newview/skins/default/xui/ja/panel_login.xml index 0c1505255e..82c52abf38 100644 --- a/indra/newview/skins/default/xui/ja/panel_login.xml +++ b/indra/newview/skins/default/xui/ja/panel_login.xml @@ -6,36 +6,40 @@ <panel.string name="forgot_password_url"> http://secondlife.com/account/request.php?lang=ja </panel.string> - <panel name="login_widgets"> - <text name="first_name_text"> - ファーストネーム: - </text> - <line_editor name="first_name_edit" tool_tip="[SECOND_LIFE] ファーストネーム"/> - <text name="last_name_text"> - ラストネーム: - </text> - <line_editor name="last_name_edit" tool_tip="[SECOND_LIFE] ラストネーム"/> - <text name="password_text"> - パスワード: - </text> - <button label="ログイン" label_selected="ログイン" name="connect_btn"/> - <text name="start_location_text"> - ログイン位置: - </text> - <combo_box name="start_location_combo"> - <combo_box.item label="最後にログアウトした場所" name="MyLastLocation"/> - <combo_box.item label="自宅(ホーム)" name="MyHome"/> - <combo_box.item label="<地域名を入力>" name="Typeregionname"/> - </combo_box> - <check_box label="パスワードを記憶" name="remember_check"/> - <text name="create_new_account_text"> - 新規アカウントを作成 - </text> - <text name="forgot_password_text"> - 名前またはパスワードをお忘れですか? - </text> - <text name="channel_text"> - [VERSION] - </text> - </panel> + <layout_stack name="login_widgets"> + <layout_panel name="login"> + <text name="first_name_text"> + ファーストネーム: + </text> + <line_editor label="最初" name="first_name_edit" tool_tip="[SECOND_LIFE] ファーストネーム"/> + <text name="last_name_text"> + ラストネーム: + </text> + <line_editor label="最後" name="last_name_edit" tool_tip="[SECOND_LIFE] ラストネーム"/> + <text name="password_text"> + パスワード: + </text> + <check_box label="記憶する" name="remember_check"/> + <text name="start_location_text"> + 開始地点: + </text> + <combo_box name="start_location_combo"> + <combo_box.item label="最後にログアウトした場所" name="MyLastLocation"/> + <combo_box.item label="ホーム" name="MyHome"/> + <combo_box.item label="<地域名を入力>" name="Typeregionname"/> + </combo_box> + <button label="ログイン" name="connect_btn"/> + </layout_panel> + <layout_panel name="links"> + <text name="create_new_account_text"> + お申し込み + </text> + <text name="forgot_password_text"> + 名前またはパスワードをお忘れですか? + </text> + <text name="login_help"> + ログインの方法 + </text> + </layout_panel> + </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_main_inventory.xml b/indra/newview/skins/default/xui/ja/panel_main_inventory.xml index 8f8e113e64..d533ce5e0d 100644 --- a/indra/newview/skins/default/xui/ja/panel_main_inventory.xml +++ b/indra/newview/skins/default/xui/ja/panel_main_inventory.xml @@ -3,10 +3,10 @@ <panel.string name="Title"> もの </panel.string> - <filter_editor label="フィルター" name="inventory search editor"/> + <filter_editor label="持ち物をフィルター" name="inventory search editor"/> <tab_container name="inventory filter tabs"> - <inventory_panel label="すべて" name="All Items"/> - <inventory_panel label="最近の入手アイテム" name="Recent Items"/> + <inventory_panel label="持ち物" name="All Items"/> + <inventory_panel label="最新" name="Recent Items"/> </tab_container> <panel name="bottom_panel"> <button name="options_gear_btn" tool_tip="その他のオプションを表示"/> @@ -32,7 +32,7 @@ <menu label="新規作成" name="Create"> <menu_item_call label="フォルダ" name="New Folder"/> <menu_item_call label="スクリプト" name="New Script"/> - <menu_item_call label="ノート" name="New Note"/> + <menu_item_call label="新しいノートカード" name="New Note"/> <menu_item_call label="ジェスチャー" name="New Gesture"/> <menu label="衣類" name="New Clothes"> <menu_item_call label="シャツ" name="New Shirt"/> diff --git a/indra/newview/skins/default/xui/ja/panel_media_settings_general.xml b/indra/newview/skins/default/xui/ja/panel_media_settings_general.xml index 18c270e43d..74e414c381 100644 --- a/indra/newview/skins/default/xui/ja/panel_media_settings_general.xml +++ b/indra/newview/skins/default/xui/ja/panel_media_settings_general.xml @@ -1,28 +1,20 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="一般" name="Media Settings General"> <text name="home_label"> - ホーム URL: + ホームページ: </text> - <line_editor name="home_url" tool_tip="このメディアソースの URL"/> + <text name="home_fails_whitelist_label"> + (このページは指定したホワイトリストをパスしません) + </text> + <line_editor name="home_url" tool_tip="このメディアソースのホームページ"/> <text name="preview_label"> プレビュー </text> <text name="current_url_label"> - 現在の URL: + 現在のページ: </text> - <line_editor name="current_url" tool_tip="現在のメディアソースの URL" value=""/> + <text name="current_url" tool_tip="メディアソースの現在のページ" value=""/> <button label="リセット" name="current_url_reset_btn"/> - <text name="controls_label"> - コントロール: - </text> - <combo_box name="controls"> - <combo_item name="Standard"> - 標準 - </combo_item> - <combo_item name="Mini"> - ミニ - </combo_item> - </combo_box> <check_box initial_value="false" label="自動ループ" name="auto_loop"/> <check_box initial_value="false" label="最初のクリック" name="first_click_interact"/> <check_box initial_value="false" label="自動ズーム" name="auto_zoom"/> diff --git a/indra/newview/skins/default/xui/ja/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/ja/panel_media_settings_permissions.xml index 357cbe372a..223bd3e28c 100644 --- a/indra/newview/skins/default/xui/ja/panel_media_settings_permissions.xml +++ b/indra/newview/skins/default/xui/ja/panel_media_settings_permissions.xml @@ -1,9 +1,20 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="コントロール" name="Media settings for controls"> - <check_box initial_value="false" label="ナビゲーションと相互作用力を無効にする" name="perms_owner_interact"/> - <check_box initial_value="false" label="コントロールバーを非表示にする" name="perms_owner_control"/> - <check_box initial_value="false" label="ナビゲーションと相互作用力を無効にする" name="perms_group_interact"/> - <check_box initial_value="false" label="コントロールバーを非表示にする" name="perms_group_control"/> - <check_box initial_value="false" label="ナビゲーションと相互作用力を無効にする" name="perms_anyone_interact"/> - <check_box initial_value="false" label="コントロールバーを非表示にする" name="perms_anyone_control"/> +<panel label="カスタマイズ" name="Media settings for controls"> + <text name="controls_label"> + コントロール: + </text> + <combo_box name="controls"> + <combo_item name="Standard"> + 標準 + </combo_item> + <combo_item name="Mini"> + ミニ + </combo_item> + </combo_box> + <check_box initial_value="false" label="ナビゲーションと相互作用力を有効にする" name="perms_owner_interact"/> + <check_box initial_value="false" label="コントロールバーを表示する" name="perms_owner_control"/> + <check_box initial_value="false" label="ナビゲーションと相互作用力を有効にする" name="perms_group_interact"/> + <check_box initial_value="false" label="コントロールバーを表示する" name="perms_group_control"/> + <check_box initial_value="false" label="ナビゲーションと相互作用力を有効にする" name="perms_anyone_interact"/> + <check_box initial_value="false" label="コントロールバーを表示する" name="perms_anyone_control"/> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_media_settings_security.xml b/indra/newview/skins/default/xui/ja/panel_media_settings_security.xml index ed0ac0d417..7822123a30 100644 --- a/indra/newview/skins/default/xui/ja/panel_media_settings_security.xml +++ b/indra/newview/skins/default/xui/ja/panel_media_settings_security.xml @@ -1,6 +1,12 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="セキュリティ" name="Media Settings Security"> - <check_box initial_value="false" label="指定した URL にのみアクセスを許可(接頭辞)" name="whitelist_enable"/> + <check_box initial_value="false" label="指定したURLパターンにのみアクセスを許可する" name="whitelist_enable"/> + <text name="home_url_fails_some_items_in_whitelist"> + ホームページに失敗したエントリーがマークされました: + </text> <button label="追加" name="whitelist_add"/> <button label="削除" name="whitelist_del"/> + <text name="home_url_fails_whitelist"> + 警告: 「一般」タブで指定されたホームページは、このホワイトリストをパスできませんでした。 有効なエントリーが追加されるまでは、無効になります。 + </text> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_my_profile.xml b/indra/newview/skins/default/xui/ja/panel_my_profile.xml index 5f773a1378..4cce3798cf 100644 --- a/indra/newview/skins/default/xui/ja/panel_my_profile.xml +++ b/indra/newview/skins/default/xui/ja/panel_my_profile.xml @@ -4,52 +4,44 @@ [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION] </string> + <string name="payment_update_link_url"> + http://www.secondlife.com/account/billing.php?lang=ja + </string> + <string name="partner_edit_link_url"> + http://www.secondlife.com/account/billing.php?lang=ja + </string> + <string name="my_account_link_url" value="http://secondlife.com/account"/> <string name="no_partner_text" value="なし"/> + <string name="no_group_text" value="なし"/> <string name="RegisterDateFormat"> [REG_DATE] ([AGE]) </string> - <scroll_container name="profile_scroll"> - <panel name="scroll_content_panel"> - <panel name="second_life_image_panel"> - <icon label="" name="2nd_life_edit_icon" tool_tip="下の「プロフィールの編集」ボタンを押して画像を変更します"/> - <text name="title_sl_descr_text" value="[SECOND_LIFE]:"/> - <expandable_text name="sl_description_edit"> - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. - </expandable_text> - </panel> - <panel name="first_life_image_panel"> - <icon label="" name="real_world_edit_icon" tool_tip="下の「プロフィールの編集」ボタンを押して画像を変更します"/> - <text name="title_rw_descr_text" value="現実世界:"/> - <expandable_text name="fl_description_edit"> - Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. - </expandable_text> - </panel> - <text name="me_homepage_text"> - Web サイト: - </text> - <text name="title_member_text" value="メンバー登録:"/> - <text name="register_date" value="05/31/1976"/> - <text name="title_acc_status_text" value="アカウントの状態:"/> - <text name="acc_status_text" value="住人。 支払情報未登録。"/> - <text name="title_partner_text" value="パートナー:"/> - <panel name="partner_data_panel"> - <text name="partner_text" value="[FIRST] [LAST]"/> - </panel> - <text name="title_groups_text" value="グループ:"/> - <expandable_text name="sl_groups"> - Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. - </expandable_text> - </panel> - </scroll_container> - <panel name="profile_buttons_panel"> - <button label="フレンド登録" name="add_friend"/> - <button label="IM" name="im"/> - <button label="コール" name="call"/> - <button label="地図" name="show_on_map_btn"/> - <button label="テレポート" name="teleport"/> - </panel> - <panel name="profile_me_buttons_panel"> - <button label="プロフィールの編集" name="edit_profile_btn"/> - <button label="容姿の編集" name="edit_appearance_btn"/> - </panel> + <layout_stack name="layout"> + <layout_panel name="profile_stack"> + <scroll_container name="profile_scroll"> + <panel name="scroll_content_panel"> + <panel name="second_life_image_panel"> + <icon label="" name="2nd_life_edit_icon" tool_tip="下の「プロフィールの編集」ボタンを押して画像を変更します"/> + <text name="title_sl_descr_text" value="[SECOND_LIFE]:"/> + </panel> + <panel name="first_life_image_panel"> + <icon label="" name="real_world_edit_icon" tool_tip="下の「プロフィールの編集」ボタンを押して画像を変更します"/> + <text name="title_rw_descr_text" value="現実世界:"/> + </panel> + <text name="title_member_text" value="住人となった日:"/> + <text name="title_acc_status_text" value="アカウントの状態:"/> + <text name="acc_status_text"> + 住人。 支払情報未登録。 + リンデン。 + </text> + <text name="title_partner_text" value="パートナー:"/> + <text name="title_groups_text" value="グループ:"/> + </panel> + </scroll_container> + </layout_panel> + <layout_panel name="profile_me_buttons_panel"> + <button label="プロフィールの編集" name="edit_profile_btn" tool_tip="個人的な情報を編集します"/> + <button label="容姿の編集" name="edit_appearance_btn" tool_tip="見た目を作成・編集します: (身体的データ、衣類など)"/> + </layout_panel> + </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_navigation_bar.xml b/indra/newview/skins/default/xui/ja/panel_navigation_bar.xml index ecfde1bfc6..a154442095 100644 --- a/indra/newview/skins/default/xui/ja/panel_navigation_bar.xml +++ b/indra/newview/skins/default/xui/ja/panel_navigation_bar.xml @@ -9,4 +9,7 @@ <combo_editor label="[SECOND_LIFE] を検索:" name="search_combo_editor"/> </search_combo_box> </panel> + <favorites_bar name="favorite"> + <chevron_button name=">>" tool_tip="お気に入りをもっと表示"/> + </favorites_bar> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_notes.xml b/indra/newview/skins/default/xui/ja/panel_notes.xml index 5feee6e280..1948c54359 100644 --- a/indra/newview/skins/default/xui/ja/panel_notes.xml +++ b/indra/newview/skins/default/xui/ja/panel_notes.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="メモとプライバシー" name="panel_notes"> <layout_stack name="layout"> - <panel name="notes_stack"> + <layout_panel name="notes_stack"> <scroll_container name="profile_scroll"> <panel name="profile_scroll_panel"> <text name="status_message" value="個人的メモ:"/> @@ -11,13 +11,13 @@ <check_box label="私のオブジェクトの編集・削除・取得" name="objects_check"/> </panel> </scroll_container> - </panel> - <panel name="notes_buttons_panel"> - <button label="追加" name="add_friend"/> - <button label="IM" name="im"/> - <button label="コール" name="call"/> - <button label="地図" name="show_on_map_btn"/> - <button label="テレポート" name="teleport"/> - </panel> + </layout_panel> + <layout_panel name="notes_buttons_panel"> + <button label="フレンド登録" name="add_friend" tool_tip="フレンド登録を申し出ます"/> + <button label="IM" name="im" tool_tip="インスタントメッセージを開きます"/> + <button label="コール" name="call" tool_tip="この住人にコールする"/> + <button label="地図" name="show_on_map_btn" tool_tip="住人を地図上で表示する"/> + <button label="テレポート" name="teleport" tool_tip="テレポートを送る"/> + </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/ja/panel_outfits_inventory.xml index 9ce0156bd4..a109b1ab51 100644 --- a/indra/newview/skins/default/xui/ja/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/ja/panel_outfits_inventory.xml @@ -1,13 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="Outfits"> - <accordion name="outfits_accordion"> - <accordion_tab name="tab_outfits" title="アウトフィットバー"/> - <accordion_tab name="tab_cof" title="現在のアウトフィットバー"/> - </accordion> - <button label=">" name="selector" tool_tip="アウトフィットのプロパティを表示"/> +<panel label="もの" name="Outfits"> + <tab_container name="appearance_tabs"> + <inventory_panel label="マイ アウトフィット" name="outfitslist_tab"/> + <inventory_panel label="着用中" name="cof_accordionpanel"/> + </tab_container> <panel name="bottom_panel"> <button name="options_gear_btn" tool_tip="その他のオプションを表示"/> - <button name="add_btn" tool_tip="新しいアイテムの追加"/> <dnd_button name="trash_btn" tool_tip="選択したアイテムを削除"/> + <button label="アウトフィットを保存する" name="make_outfit_btn" tool_tip="容姿をアウトフィットに保存する"/> + <button label="装着" name="wear_btn" tool_tip="選択したアウトフィットを着用する"/> + <button label="M" name="look_edit_btn"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/ja/panel_outfits_inventory_gear_default.xml index dfcd9d0932..e8caab0696 100644 --- a/indra/newview/skins/default/xui/ja/panel_outfits_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/ja/panel_outfits_inventory_gear_default.xml @@ -1,6 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="menu_gear_default"> - <menu_item_call label="新しいアウトフィット" name="new"/> - <menu_item_call label="アウトフィットを着る" name="wear"/> + <menu_item_call label="着用中のアウトフィットを入れ替える" name="wear"/> + <menu_item_call label="着用中のアウトフィットから取り除く" name="remove"/> + <menu_item_call label="名前の変更" name="rename"/> + <menu_item_call label="リンクを外す" name="remove_link"/> <menu_item_call label="アウトフィットを削除する" name="delete"/> </menu> diff --git a/indra/newview/skins/default/xui/ja/panel_people.xml b/indra/newview/skins/default/xui/ja/panel_people.xml index 5dffbb33ea..c955cf6e48 100644 --- a/indra/newview/skins/default/xui/ja/panel_people.xml +++ b/indra/newview/skins/default/xui/ja/panel_people.xml @@ -49,5 +49,6 @@ <button label="テレポート" name="teleport_btn" tool_tip="テレポートを送る"/> <button label="グループ情報" name="group_info_btn" tool_tip="グループ情報を表示"/> <button label="グループチャット" name="chat_btn" tool_tip="チャットを開始"/> + <button label="グループにコールする" name="group_call_btn" tool_tip="このグループにコールする"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_picks.xml b/indra/newview/skins/default/xui/ja/panel_picks.xml index 3d3b8bb3dc..f74bf7a073 100644 --- a/indra/newview/skins/default/xui/ja/panel_picks.xml +++ b/indra/newview/skins/default/xui/ja/panel_picks.xml @@ -2,20 +2,16 @@ <panel label="ピック" name="panel_picks"> <string name="no_picks" value="ピックなし"/> <string name="no_classifieds" value="クラシファイド広告なし"/> - <text name="empty_picks_panel_text"> - ここにはピック・クラシファイド広告はありません。 - </text> <accordion name="accordion"> <accordion_tab name="tab_picks" title="ピック"/> <accordion_tab name="tab_classifieds" title="クラシファイド広告"/> </accordion> <panel label="bottom_panel" name="edit_panel"> - <button name="new_btn" tool_tip="現在地のピックを新規作成"/> + <button name="new_btn" tool_tip="現在地の新しいピック、またはクラシファイド広告を作成します"/> </panel> <panel name="buttons_cucks"> - <button label="情報" name="info_btn"/> - <button label="テレポート" name="teleport_btn"/> - <button label="地図" name="show_on_map_btn"/> - <button label="▼" name="overflow_btn"/> + <button label="情報" name="info_btn" tool_tip="ピックの情報を表示"/> + <button label="テレポート" name="teleport_btn" tool_tip="該当するエリアにテレポート"/> + <button label="地図" name="show_on_map_btn" tool_tip="世界地図に該当するエリアを表示"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_place_profile.xml b/indra/newview/skins/default/xui/ja/panel_place_profile.xml index 3ec5a3a294..ef4b71c4aa 100644 --- a/indra/newview/skins/default/xui/ja/panel_place_profile.xml +++ b/indra/newview/skins/default/xui/ja/panel_place_profile.xml @@ -56,6 +56,7 @@ <string name="icon_ScriptsNo" value="parcel_drk_ScriptsNo"/> <string name="icon_Damage" value="parcel_drk_Damage"/> <string name="icon_DamageNo" value="parcel_drk_DamageNo"/> + <button name="back_btn" tool_tip="戻る"/> <text name="title" value="場所のプロフィール"/> <scroll_container name="place_scroll"> <panel name="scrolling_panel"> @@ -92,7 +93,7 @@ <text name="region_type_label" value="種類:"/> <text name="region_type" value="Moose"/> <text name="region_rating_label" value="レーティング区分:"/> - <text name="region_rating" value="Explicit"/> + <text name="region_rating" value="アダルト"/> <text name="region_owner_label" value="所有者:"/> <text name="region_owner" value="moose Van Moose"/> <text name="region_group_label" value="グループ:"/> diff --git a/indra/newview/skins/default/xui/ja/panel_places.xml b/indra/newview/skins/default/xui/ja/panel_places.xml index f74b1e52e8..b1c7a3308f 100644 --- a/indra/newview/skins/default/xui/ja/panel_places.xml +++ b/indra/newview/skins/default/xui/ja/panel_places.xml @@ -2,11 +2,12 @@ <panel label="場所" name="places panel"> <string name="landmarks_tab_title" value="マイ ランドマーク"/> <string name="teleport_history_tab_title" value="テレポートの履歴"/> - <filter_editor label="フィルター" name="Filter"/> + <filter_editor label="場所をフィルター" name="Filter"/> <panel name="button_panel"> - <button label="テレポート" name="teleport_btn"/> + <button label="テレポート" name="teleport_btn" tool_tip="該当するエリアにテレポートします"/> <button label="地図" name="map_btn"/> - <button label="編集" name="edit_btn"/> + <button label="編集" name="edit_btn" tool_tip="ランドマークの情報を編集します"/> + <button name="overflow_btn" tool_tip="その他のオプションを表示"/> <button label="閉じる" name="close_btn"/> <button label="キャンセル" name="cancel_btn"/> <button label="保存" name="save_btn"/> diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/ja/panel_preferences_alerts.xml index 3cd13948d2..16af659326 100644 --- a/indra/newview/skins/default/xui/ja/panel_preferences_alerts.xml +++ b/indra/newview/skins/default/xui/ja/panel_preferences_alerts.xml @@ -6,9 +6,9 @@ <check_box label="リンデンドルを使用・受け取るとき" name="notify_money_change_checkbox"/> <check_box label="フレンドがログアウト・ログインするとき" name="friends_online_notify_checkbox"/> <text name="show_label" width="300"> - 常に表示する警告メッセージ: + 常に表示する通知: </text> <text name="dont_show_label"> - 表示しない警告メッセージ: + 表示しない通知: </text> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml b/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml index 7abeb36168..ece18a75ca 100644 --- a/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="チャット" name="chat"> <radio_group name="chat_font_size"> - <radio_item label="小" name="radio"/> - <radio_item label="中" name="radio2"/> - <radio_item label="大" name="radio3"/> + <radio_item label="小" name="radio" value="0"/> + <radio_item label="中" name="radio2" value="1"/> + <radio_item label="大" name="radio3" value="2"/> </radio_group> <color_swatch label="自分" name="user"/> <text name="text_box1"> @@ -40,4 +40,8 @@ <check_box initial_value="true" label="チャット中はタイピング動作のアニメーションを再生" name="play_typing_animation"/> <check_box label="オフライン時に受け取った IM をメールで送信" name="send_im_to_email"/> <check_box label="文字チャットの履歴を有効にする" name="plain_text_chat_history"/> + <radio_group name="chat_window" tool_tip="インスタントメッセージを別ウィンドウ、または1つのウィンドウに複数タブで表示(要再起動)"> + <radio_item label="複数ウィンドウ" name="radio" value="0"/> + <radio_item label="1つのウィンドウ" name="radio2" value="1"/> + </radio_group> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_general.xml b/indra/newview/skins/default/xui/ja/panel_preferences_general.xml index 387558af73..765662b96a 100644 --- a/indra/newview/skins/default/xui/ja/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/ja/panel_preferences_general.xml @@ -15,7 +15,6 @@ <combo_box.item label="Polski (ポーランド語) - ベータ" name="Polish"/> <combo_box.item label="Português (ポルトガル語) – ベータ" name="Portugese"/> <combo_box.item label="日本語 – ベータ" name="(Japanese)"/> - <combo_box.item label="テスト言語" name="TestLanguage"/> </combo_box> <text name="language_textbox2"> (再起動後に反映) @@ -25,9 +24,9 @@ </text> <text name="maturity_desired_textbox"/> <combo_box name="maturity_desired_combobox"> - <combo_box.item label="PG、Mature、Adult" name="Desired_Adult"/> - <combo_box.item label="PGとMature" name="Desired_Mature"/> - <combo_box.item label="PG" name="Desired_PG"/> + <combo_box.item label="一般、控えめ、アダルト" name="Desired_Adult"/> + <combo_box.item label="一般と控えめ" name="Desired_Mature"/> + <combo_box.item label="一般" name="Desired_PG"/> </combo_box> <text name="start_location_textbox"> ログイン位置: @@ -41,9 +40,9 @@ 名前の表示: </text> <radio_group name="Name_Tag_Preference"> - <radio_item label="オフ" name="radio"/> - <radio_item label="オン" name="radio2"/> - <radio_item label="一時的に表示" name="radio3"/> + <radio_item label="オフ" name="radio" value="0"/> + <radio_item label="オン" name="radio2" value="1"/> + <radio_item label="一時的に表示" name="radio3" value="2"/> </radio_group> <check_box label="私の名前を表示" name="show_my_name_checkbox1"/> <check_box initial_value="true" label="小さいアバター名" name="small_avatar_names_checkbox"/> @@ -51,14 +50,17 @@ <text name="effects_color_textbox"> 私のビームの色: </text> - <color_swatch label="" name="effect_color_swatch" tool_tip="カラー・ピッカーをクリックして開く"/> <text name="title_afk_text"> 一時退席までの時間: </text> - <spinner label="" name="afk_timeout_spinner"/> - <text name="seconds_textbox"> - 秒 - </text> + <color_swatch label="" name="effect_color_swatch" tool_tip="カラー・ピッカーをクリックして開く"/> + <combo_box label="一時退席までの時間:" name="afk"> + <combo_box.item label="2分" name="item0"/> + <combo_box.item label="5分" name="item1"/> + <combo_box.item label="10分" name="item2"/> + <combo_box.item label="30分" name="item3"/> + <combo_box.item label="一時退席設定なし" name="item4"/> + </combo_box> <text name="text_box3"> 取り込み中モード時の返事: </text> diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/ja/panel_preferences_privacy.xml index 80c0c85420..7a7cb8b96b 100644 --- a/indra/newview/skins/default/xui/ja/panel_preferences_privacy.xml +++ b/indra/newview/skins/default/xui/ja/panel_preferences_privacy.xml @@ -11,8 +11,8 @@ <check_box label="フレンドとグループ以外からはコールとIMを受信しない" name="voice_call_friends_only_check"/> <check_box label="コールが終了したらマイクのスイッチを切る" name="auto_disengage_mic_check"/> <check_box label="Cookieを受け入れる" name="cookies_enabled"/> - <check_box label="メディアの自動再生を許可する" name="autoplay_enabled"/> - <check_box label="自動的に区画メディアを再生する" name="parcel_autoplay_enabled"/> + <check_box label="メディアが有効です" name="media_enabled"/> + <check_box label="メディアを自動再生する" name="autoplay_enabled"/> <text name="Logs:"> ログ: </text> @@ -20,7 +20,7 @@ <check_box label="コンピューターに IM ログを保存する" name="log_instant_messages"/> <check_box label="タイムスタンプを追加する" name="show_timestamps_check_im"/> <text name="log_path_desc"> - ログの保存場所 + ログの保存場所: </text> <button label="参照" label_selected="参照" name="log_path_button"/> <button label="ブロックリスト" name="block_list"/> diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_setup.xml b/indra/newview/skins/default/xui/ja/panel_preferences_setup.xml index 5911727c67..12e21709ae 100644 --- a/indra/newview/skins/default/xui/ja/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/ja/panel_preferences_setup.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="操作とカメラ" name="Input panel"> +<panel label="セットアップ" name="Input panel"> <button label="その他のディバイス" name="joystick_setup_button"/> <text name="Mouselook:"> 一人称視点: @@ -26,9 +26,9 @@ MB </text> <button label="参照" label_selected="参照" name="set_cache"/> - <button label="リセット" label_selected="設定" name="reset_cache"/> + <button label="リセット" label_selected="リセット" name="reset_cache"/> <text name="Cache location"> - キャッシュの保存場所 + キャッシュの保存場所: </text> <text name="Web:"> Web: @@ -41,6 +41,6 @@ <line_editor name="web_proxy_editor" tool_tip="使用するプロキシ名またはIPアドレス"/> <button label="参照" label_selected="参照" name="set_proxy"/> <text name="Proxy location"> - プロキシ + プロキシ: </text> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml b/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml index 9c8bda4c76..9fb0dd0b46 100644 --- a/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml @@ -7,7 +7,7 @@ <slider label="メディア" name="Media Volume"/> <slider label="効果音" name="SFX Volume"/> <slider label="ストリーミング音楽" name="Music Volume"/> - <check_box label="ボイス" name="enable_voice_check"/> + <check_box label="ボイスを有効にする" name="enable_voice_check"/> <slider label="ボイス" name="Voice Volume"/> <text name="Listen from"> 方向: diff --git a/indra/newview/skins/default/xui/ja/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/ja/panel_prim_media_controls.xml index 629070a18a..0e1e2851e3 100644 --- a/indra/newview/skins/default/xui/ja/panel_prim_media_controls.xml +++ b/indra/newview/skins/default/xui/ja/panel_prim_media_controls.xml @@ -6,7 +6,36 @@ <string name="skip_step"> 0.2 </string> + <layout_stack name="progress_indicator_area"> + <panel name="media_progress_indicator"> + <progress_bar name="media_progress_bar" tool_tip="ローディング"/> + </panel> + </layout_stack> <layout_stack name="media_controls"> + <layout_panel name="back"> + <button name="back_btn" tool_tip="Navigate back"/> + </layout_panel> + <layout_panel name="fwd"> + <button name="fwd_btn" tool_tip="Navigate forward"/> + </layout_panel> + <layout_panel name="home"> + <button name="home_btn" tool_tip="ホームページ"/> + </layout_panel> + <layout_panel name="media_stop"> + <button name="media_stop_btn" tool_tip="メディアを停止"/> + </layout_panel> + <layout_panel name="reload"> + <button name="reload_btn" tool_tip="更新"/> + </layout_panel> + <layout_panel name="stop"> + <button name="stop_btn" tool_tip="読み込み停止"/> + </layout_panel> + <layout_panel name="play"> + <button name="play_btn" tool_tip="メディアを再生"/> + </layout_panel> + <layout_panel name="pause"> + <button name="pause_btn" tool_tip="メディアを一時停止"/> + </layout_panel> <layout_panel name="media_address"> <line_editor name="media_address_url" tool_tip="メディア URL"/> <layout_stack name="media_address_url_icons"> @@ -21,13 +50,24 @@ <layout_panel name="media_play_position"> <slider_bar initial_value="0.5" name="media_play_slider" tool_tip="ムービー再生進行"/> </layout_panel> + <layout_panel name="skip_back"> + <button name="skip_back_btn" tool_tip="Step back"/> + </layout_panel> + <layout_panel name="skip_forward"> + <button name="skip_forward_btn" tool_tip="Step forward"/> + </layout_panel> <layout_panel name="media_volume"> - <button name="media_volume_button" tool_tip="ミュート"/> + <button name="media_mute_button" tool_tip="ミュート"/> + <slider name="volume_slider" tool_tip="メディアの音量"/> + </layout_panel> + <layout_panel name="zoom_frame"> + <button name="zoom_frame_btn" tool_tip="メディアにズームイン"/> + </layout_panel> + <layout_panel name="close"> + <button name="close_btn" tool_tip="Zoom Back"/> + </layout_panel> + <layout_panel name="new_window"> + <button name="new_window_btn" tool_tip="URLをブラウザで開く"/> </layout_panel> - </layout_stack> - <layout_stack> - <panel name="media_progress_indicator"> - <progress_bar name="media_progress_bar" tool_tip="ローディング"/> - </panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_profile.xml b/indra/newview/skins/default/xui/ja/panel_profile.xml index 767e26af4c..98969f5ab3 100644 --- a/indra/newview/skins/default/xui/ja/panel_profile.xml +++ b/indra/newview/skins/default/xui/ja/panel_profile.xml @@ -12,50 +12,41 @@ </string> <string name="my_account_link_url" value="http://secondlife.com/my/account/index.php?lang=ja-JP"/> <string name="no_partner_text" value="なし"/> + <string name="no_group_text" value="なし"/> <string name="RegisterDateFormat"> [REG_DATE] ([AGE]) </string> - <scroll_container name="profile_scroll"> - <panel name="scroll_content_panel"> - <panel name="second_life_image_panel"> - <text name="title_sl_descr_text" value="[SECOND_LIFE]:"/> - <expandable_text name="sl_description_edit"> - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. - </expandable_text> - </panel> - <panel name="first_life_image_panel"> - <text name="title_rw_descr_text" value="現実世界:"/> - <expandable_text name="fl_description_edit"> - Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. - </expandable_text> - </panel> - <text name="me_homepage_text"> - Web サイト: - </text> - <text name="title_member_text" value="メンバー登録:"/> - <text name="register_date" value="05/31/1976"/> - <text name="title_acc_status_text" value="アカウントの状態:"/> - <text name="acc_status_text" value="住人。 支払情報未登録"/> - <text name="title_partner_text" value="パートナー:"/> - <panel name="partner_data_panel"> - <text name="partner_text" value="[FIRST] [LAST]"/> - </panel> - <text name="title_groups_text" value="グループ:"/> - <expandable_text name="sl_groups"> - Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. - </expandable_text> - </panel> - </scroll_container> - <panel name="profile_buttons_panel"> - <button label="フレンド登録" name="add_friend"/> - <button label="IM" name="im"/> - <button label="コール" name="call"/> - <button label="地図" name="show_on_map_btn"/> - <button label="テレポート" name="teleport"/> - <button label="▼" name="overflow_btn"/> - </panel> - <panel name="profile_me_buttons_panel"> - <button label="プロフィールの編集" name="edit_profile_btn"/> - <button label="容姿の編集" name="edit_appearance_btn"/> - </panel> + <layout_stack name="layout"> + <layout_panel name="profile_stack"> + <scroll_container name="profile_scroll"> + <panel name="profile_scroll_panel"> + <panel name="second_life_image_panel"> + <text name="title_sl_descr_text" value="[SECOND_LIFE]:"/> + </panel> + <panel name="first_life_image_panel"> + <text name="title_rw_descr_text" value="現実世界:"/> + </panel> + <text name="title_member_text" value="住人となった日:"/> + <text name="title_acc_status_text" value="アカウントの状態:"/> + <text name="acc_status_text"> + 住人。 支払情報未登録。 + リンデン。 + </text> + <text name="title_partner_text" value="パートナー:"/> + <text name="title_groups_text" value="グループ:"/> + </panel> + </scroll_container> + </layout_panel> + <layout_panel name="profile_buttons_panel"> + <button label="フレンド登録" name="add_friend" tool_tip="フレンド登録を申し出ます"/> + <button label="IM" name="im" tool_tip="インスタントメッセージを開きます"/> + <button label="コール" name="call" tool_tip="この住人にコールする"/> + <button label="地図" name="show_on_map_btn" tool_tip="住人を地図上で表示する"/> + <button label="テレポート" name="teleport" tool_tip="テレポートを送る"/> + </layout_panel> + <layout_panel name="profile_me_buttons_panel"> + <button label="プロフィールの編集" name="edit_profile_btn" tool_tip="個人的な情報を編集します"/> + <button label="容姿の編集" name="edit_appearance_btn" tool_tip="見た目を作成・編集します: (身体的データ、衣類など)"/> + </layout_panel> + </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_region_estate.xml b/indra/newview/skins/default/xui/ja/panel_region_estate.xml index 348878a35e..976cfacb3f 100644 --- a/indra/newview/skins/default/xui/ja/panel_region_estate.xml +++ b/indra/newview/skins/default/xui/ja/panel_region_estate.xml @@ -1,8 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="不動産" name="Estate"> <text name="estate_help_text"> - このタブの設定を変更するとこの不動産内 -の全ての地域に影響を与えます。 + このタブの設定への変更は、エステート内のすべてのリージョンに影響されます。 </text> <text name="estate_text"> 不動産: @@ -17,10 +16,10 @@ (不明) </text> <text name="Only Allow"> - 次へのアクセスを制限: + 次のアカウントのアクセス禁止: </text> - <check_box label="支払い情報登録済みの住人" name="limit_payment" tool_tip="未確認の住人の立入を禁止します"/> - <check_box label="年齢確認済みの成人" name="limit_age_verified" tool_tip="年齢確認を済ませていない住人を立入禁止にします。 詳しい情報は [SUPPORT_SITE] をご覧下さい。"/> + <check_box label="支払情報登録済" name="limit_payment" tool_tip="未確認の住人の立入を禁止します"/> + <check_box label="年齢確認" name="limit_age_verified" tool_tip="年齢確認を済ませていない住人の立入を禁止します。 詳しい情報は [SUPPORT_SITE] をご覧下さい。"/> <check_box label="ボイスチャットを許可" name="voice_chat_check"/> <button label="?" name="voice_chat_help"/> <text name="abuse_email_text"> diff --git a/indra/newview/skins/default/xui/ja/panel_region_general.xml b/indra/newview/skins/default/xui/ja/panel_region_general.xml index 690cf3f33d..00be5b6b03 100644 --- a/indra/newview/skins/default/xui/ja/panel_region_general.xml +++ b/indra/newview/skins/default/xui/ja/panel_region_general.xml @@ -39,10 +39,10 @@ <text label="成人指定" name="access_text"> 区分: </text> - <combo_box label="Mature" name="access_combo"> + <combo_box label="控えめ" name="access_combo"> <combo_box.item label="Adult" name="Adult"/> - <combo_box.item label="Mature" name="Mature"/> - <combo_box.item label="PG" name="PG"/> + <combo_box.item label="控えめ" name="Mature"/> + <combo_box.item label="一般" name="PG"/> </combo_box> <button label="?" name="access_help"/> <button label="適用" name="apply_btn"/> diff --git a/indra/newview/skins/default/xui/ja/panel_region_general_layout.xml b/indra/newview/skins/default/xui/ja/panel_region_general_layout.xml new file mode 100644 index 0000000000..9673953d06 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_region_general_layout.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="リージョン(地域)" name="General"> + <text name="region_text_lbl"> + リージョン: + </text> + <text name="region_text"> + 不明 + </text> + <text name="version_channel_text_lbl"> + バージョン: + </text> + <text name="version_channel_text"> + 不明 + </text> + <text name="region_type_lbl"> + 種類: + </text> + <text name="region_type"> + 不明 + </text> + <check_box label="地形編集をブロック" name="block_terraform_check"/> + <check_box label="飛行をブロック" name="block_fly_check"/> + <check_box label="ダメージを許可" name="allow_damage_check"/> + <check_box label="プッシュを制限" name="restrict_pushobject"/> + <check_box label="土地の再販を許可" name="allow_land_resell_check"/> + <check_box label="土地の統合・分割を許可" name="allow_parcel_changes_check"/> + <check_box label="土地の検索教示をブロック" name="block_parcel_search_check" tool_tip="このリージョンとリージョン内の区画を検索結果に表示する"/> + <spinner label="アバター数上限" name="agent_limit_spin"/> + <spinner label="オブジェクトボーナス" name="object_bonus_spin"/> + <text label="レーティング区分" name="access_text"> + レーティング区分: + </text> + <combo_box label="控えめ" name="access_combo"> + <combo_box.item label="アダルト" name="Adult"/> + <combo_box.item label="控えめ" name="Mature"/> + <combo_box.item label="一般" name="PG"/> + </combo_box> + <button label="適用" name="apply_btn"/> + <button label="ユーザー1名をホームにテレポート..." name="kick_btn"/> + <button label="ユーザー全員をホームにテレポート..." name="kick_all_btn"/> + <button label="リージョンにメッセージを送信..." name="im_btn"/> + <button label="テレハブの管理..." name="manage_telehub_btn"/> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_region_texture.xml b/indra/newview/skins/default/xui/ja/panel_region_texture.xml index d32d8f9e5d..ea784df127 100644 --- a/indra/newview/skins/default/xui/ja/panel_region_texture.xml +++ b/indra/newview/skins/default/xui/ja/panel_region_texture.xml @@ -45,11 +45,10 @@ <spinner label="高" name="height_range_spin_2"/> <spinner label="高" name="height_range_spin_3"/> <text name="height_text_lbl10"> - 数値は上のテクスチャのブレンド範囲を示します + 数値は上のテクスチャのブレンド範囲を示します。 </text> <text name="height_text_lbl11"> - 計測単位はメートルで、「低」の値は 1 番のテクスチャの高さの最大値です。 -「高」の値は、4 番のテクスチャの高さの最低値です。 + 計測単位はメートルで、「低」の値は、1番のテクスチャの高さの「最大値」です。「高」の値は、4番のテクスチャの高さの「最低値」です。 </text> <text name="height_text_lbl12"> そして「高」の値はテクスチャー#4の高さの下限となります。 diff --git a/indra/newview/skins/default/xui/ja/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/ja/panel_script_limits_my_avatar.xml new file mode 100644 index 0000000000..e8b5be63ae --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_script_limits_my_avatar.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="マイ アバター" name="script_limits_my_avatar_panel"> + <text name="loading_text"> + ローディング... + </text> + <scroll_list name="scripts_list"> + <scroll_list.columns label="サイズ (kb)" name="size"/> + <scroll_list.columns label="URL" name="urls"/> + <scroll_list.columns label="オブジェクト名" name="name"/> + <scroll_list.columns label="場所" name="location"/> + </scroll_list> + <button label="リスト更新" name="refresh_list_btn"/> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/ja/panel_script_limits_region_memory.xml new file mode 100644 index 0000000000..fe0b44d8f4 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_script_limits_region_memory.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="リージョンメモリ" name="script_limits_region_memory_panel"> + <text name="script_memory"> + 区画スクリプトメモリ + </text> + <text name="parcels_listed"> + 区画所有者: + </text> + <text name="memory_used"> + 使用されたメモリ: + </text> + <text name="loading_text"> + ローディング... + </text> + <scroll_list name="scripts_list"> + <scroll_list.columns label="サイズ (kb)" name="size"/> + <scroll_list.columns label="オブジェクト名" name="name"/> + <scroll_list.columns label="オブジェクトの所有者" name="owner"/> + <scroll_list.columns label="区画・位置" name="location"/> + </scroll_list> + <button label="リスト更新" name="refresh_list_btn"/> + <button label="ハイライト" name="highlight_btn"/> + <button label="返却" name="return_btn"/> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_side_tray.xml b/indra/newview/skins/default/xui/ja/panel_side_tray.xml index 6ec6b3422e..ce5f0b940c 100644 --- a/indra/newview/skins/default/xui/ja/panel_side_tray.xml +++ b/indra/newview/skins/default/xui/ja/panel_side_tray.xml @@ -2,9 +2,13 @@ <!-- Side tray cannot show background because it is always partially on screen to hold tab buttons. --> <side_tray name="sidebar"> + <sidetray_tab description="サイドバーを表示・非表示" name="sidebar_openclose"/> <sidetray_tab description="ホーム。" name="sidebar_home"> <panel label="ホーム" name="panel_home"/> </sidetray_tab> + <sidetray_tab description="あなたの公開プロフィールとピックを編集してください。" name="sidebar_me"> + <panel label="ミー" name="panel_me"/> + </sidetray_tab> <sidetray_tab description="フレンド、連絡先、近くの人を探してください。" name="sidebar_people"> <panel_container name="panel_container"> <panel label="グループ情報" name="panel_group_info_sidetray"/> @@ -14,13 +18,10 @@ <sidetray_tab description="行きたい場所、行ったことのある場所を探してください。" label="場所" name="sidebar_places"> <panel label="場所" name="panel_places"/> </sidetray_tab> - <sidetray_tab description="あなたの公開プロフィールとピックを編集してください。" name="sidebar_me"> - <panel label="ミー" name="panel_me"/> + <sidetray_tab description="あなたの持ち物を眺めてください。" name="sidebar_inventory"> + <panel label="持ち物を編集" name="sidepanel_inventory"/> </sidetray_tab> <sidetray_tab description="あなたの容姿や現在の見た目を変更してください。" name="sidebar_appearance"> <panel label="容姿の編集" name="sidepanel_appearance"/> </sidetray_tab> - <sidetray_tab description="あなたの持ち物を眺めてください。" name="sidebar_inventory"> - <panel label="持ち物を編集" name="sidepanel_inventory"/> - </sidetray_tab> </side_tray> diff --git a/indra/newview/skins/default/xui/ja/panel_status_bar.xml b/indra/newview/skins/default/xui/ja/panel_status_bar.xml index 5d122cb8cd..063e584762 100644 --- a/indra/newview/skins/default/xui/ja/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/ja/panel_status_bar.xml @@ -21,7 +21,8 @@ <panel.string name="buycurrencylabel"> L$ [AMT] </panel.string> - <button label="" label_selected="" name="buycurrency" tool_tip="私の残高: クリックして L$ を購入します"/> + <button label="" label_selected="" name="buycurrency" tool_tip="私の残高"/> + <button label="L$ の購入" name="buyL" tool_tip="クリックして L$ を購入します"/> <text name="TimeText" tool_tip="現在時刻(太平洋)"> 12:00 AM </text> diff --git a/indra/newview/skins/default/xui/ja/panel_teleport_history.xml b/indra/newview/skins/default/xui/ja/panel_teleport_history.xml index 70969f7ac0..2264ae965b 100644 --- a/indra/newview/skins/default/xui/ja/panel_teleport_history.xml +++ b/indra/newview/skins/default/xui/ja/panel_teleport_history.xml @@ -11,5 +11,7 @@ <accordion_tab name="1_month_and_older" title="1ヶ月以上前"/> <accordion_tab name="6_months_and_older" title="半年以上前"/> </accordion> - <panel label="bottom_panel" name="bottom_panel"/> + <panel label="bottom_panel" name="bottom_panel"> + <button name="gear_btn" tool_tip="その他のオプションを表示"/> + </panel> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_teleport_history_item.xml b/indra/newview/skins/default/xui/ja/panel_teleport_history_item.xml index 9d18c52442..c570cd5696 100644 --- a/indra/newview/skins/default/xui/ja/panel_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/ja/panel_teleport_history_item.xml @@ -1,4 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="teleport_history_item"> <text name="region" value="..."/> + <button name="profile_btn" tool_tip="アイテム情報を表示"/> </panel> diff --git a/indra/newview/skins/default/xui/ja/role_actions.xml b/indra/newview/skins/default/xui/ja/role_actions.xml index 9a58f753e5..59fceca2db 100644 --- a/indra/newview/skins/default/xui/ja/role_actions.xml +++ b/indra/newview/skins/default/xui/ja/role_actions.xml @@ -1,205 +1,76 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <role_actions> - <action_set - description="これらの能力には、グループ・メンバーを追加、排除し、招待状なしに新メンバーの参加を認める権限が含まれます。" - name="Membership"> - <action description="このグループに人を招待" - longdescription="グループに人を招待するには、「メンバーと役割」タブ>「メンバー」サブタブの「新しい人を招待...」ボタンを使います。" - name="member invite" value="1" /> - <action description="メンバーをこのグループから追放" - longdescription="メンバーをこのグループから追放するには、「メンバーと役割」タブ > 「役割」サブタブの「グループから追放」を使います。 オーナーは、他のオーナー以外の任意のメンバーを追放できます。 オーナーでないユーザーがグループからメンバーを追放できるのは、そのメンバーが「全員」の役割にのみ所属しており、他の役割に所属していない場合だけです。 役割からメンバーを除外するには、「役割からメンバーを除外」能力を有している必要があります。" - name="member eject" value="2" /> - <action description="「会員募集」に切り替え、「入会費」を変更。" - longdescription="招待状なしに新メンバーが加入できるように「会員募集」に切り替え、「一般」タブの「グループ環境設定」セクションから「入会費」を変更します。" - name="member options" value="3" /> + <action_set description="これらの能力には、グループ・メンバーを追加、排除し、招待状なしに新メンバーの参加を認める権限が含まれます。" name="Membership"> + <action description="このグループに人を招待" longdescription="「役割」セクションの「メンバー」タブ内にある「招待」ボタンを押して、このグループにメンバーを招待します。" name="member invite" value="1"/> + <action description="メンバーをこのグループから追放" longdescription="「役割」セクションの「メンバー」タブ内にある「追放」ボタンを押して、このグループからメンバーを追放します。 「オーナー」は、他の「オーナー」以外は誰でも追放できます。 「オーナー」ではない人が「全員(Everyone)」にしか役割がない場合、メンバーはグループから追放されることがあります。 「役割」からメンバーを削除するには、「役割からメンバーを削除」の能力が与えられている必要があります。" name="member eject" value="2"/> + <action description="「自由参加」と「入会費」の切り替え" longdescription="「自由参加」に切り替えると、招待されなくても新しいメンバーが入会できます。「入会費」は「一般」セクションで変更します。" name="member options" value="3"/> </action_set> - <action_set - description="これらの能力には、グループ内の役割を追加、削除、変更し、役割にメンバーを追加、削除し、さらに役割へ能力を割り当てる権限が含まれます。" - name="Roles"> - <action description="新しい役割を作成" - longdescription="「メンバーと役割」タブ > 「役割」サブタブで新しい役割を作成" - name="role create" value="4" /> - <action description="役割を削除" - longdescription="役割を削除するには、「メンバーと役割」タブ > 「役割」サブタブを使います。" - name="role delete" value="5" /> - <action description="役割名、タイトル、説明を変更" - longdescription="役割名、タイトル、説明を変更するには、役割を選択した後、「メンバーと役割」タブ > 「役割」サブタブの下部分を使います。" - name="role properties" value="6" /> - <action description="メンバーを割り当て人の役割に割り当てる" - longdescription="メンバーを割り当て人の役割に割り当てるには、「メンバーと役割」タブ>「役割」サブタブの割り当てられた役割セクションを使います。 この能力を持つメンバーは、割り当て人が現在所属している役割に対してのみメンバーを追加できます。" - name="role assign member limited" value="7" /> - <action description="メンバーを任意の役割に割り当てる" - longdescription="メンバーを任意の役割に割り当てるには、「メンバーと役割」タブ>「役割」サブタブの割り当てられた役割セクションを使います。 *警告* この能力を持つ役割のメンバーは、自分自身や他のメンバーを現在の役割よりも強力な役割に割り当てることができます。このため、オーナー以外のメンバーに対して、オーナーに近いパワーを与えることも可能です。 この能力の割り当ては、そのことを理解した上で行ってください。" - name="role assign member" value="8" /> - <action description="役割からメンバーを解除" - longdescription="メンバーを役割から解除するには、「メンバーと役割」タブ>「メンバー」サブタブの「割り当てられた役割」セクションを使います。 オーナーは解除できません。" - name="role remove member" value="9" /> - <action description="役割の能力の割り当てと解除" - longdescription="役割の能力の割り当てと解除は、「メンバーと役割」タブ>「役割」サブタブの許可された能力セクションで行います。 *警告* この能力を持つ役割のメンバーは、すべての能力を自分自身や他のメンバーに割り当てることができます。このため、オーナー以外のメンバーに対して、オーナーに近いパワーを持たせることも可能です。 この能力の割り当ては、そのことを理解した上で行ってください。" - name="role change actions" value="10" /> + <action_set description="これらの能力には、グループ内の役割を追加、削除、変更し、役割にメンバーを追加、削除し、さらに役割へ能力を割り当てる権限が含まれます。" name="Roles"> + <action description="新しい役割を作成" longdescription="新しい「役割」は、「役割」セクション > 「役割」タブで作成します。" name="role create" value="4"/> + <action description="役割を削除" longdescription="「役割」は、「役割」セクション > 「役割」タブで削除できます。" name="role delete" value="5"/> + <action description="「役割」の名前、肩書き、説明、メンバー公開の有無を変更" longdescription="「役割」の名前、肩書き、説明、メンバー公開の有無を変更します。 「役割」を選択後に、「役割」セクション > 「役割」タブ の下で設定できます。" name="role properties" value="6"/> + <action description="メンバーを割り当て人の役割に割り当てる" longdescription="「割り当てられた役割」(「役割」セクション > 「メンバー」タブ)のリストで、メンバーを「役割」に割り当てます。 この能力があるメンバーは、割り当てる人が既に所属する「役割」にのみメンバーを追加できます。" name="role assign member limited" value="7"/> + <action description="メンバーを任意の役割に割り当てる" longdescription="「割り当てられた役割」(「役割」セクション > 「メンバー」タブ)のリストで、メンバーをどの「役割」にも割り当てることができます。 *警告* この「能力」がある「役割」を持つメンバーなら誰でも自分自身と、他の「オーナー」以外のメンバーを現在以上の権限のある「役割」に割り当てることができます。つまり、「オーナー」以外の人が「オーナー」に近い力を持つよう設定できることになります。 この「能力」を割り当てる前に、自分がしようとしていることをよく把握してください。" name="role assign member" value="8"/> + <action description="役割からメンバーを解除" longdescription="「割り当てられた役割」(「役割」セクション > 「メンバー」タブ)のリストで、メンバーを「役割」から削除します。 「オーナー」は削除できません。" name="role remove member" value="9"/> + <action description="役割の能力の割り当てと解除" longdescription="「許可された能力」(「役割」セクション > 「役割」タブ)のリストにある、各「役割」の「能力」を割り当てたり、削除します。 *警告* この「能力」がある「役割」を持つメンバーなら誰でも自分自身と、他の「オーナー」以外のメンバーをすべての「能力」」に割り当てることができます。つまり、「オーナー」以外の人が「オーナー」に近い権限を持つよう設定できることになります。 この「能力」を割り当てる前に、自分がしようとしていることをよく把握してください。" name="role change actions" value="10"/> </action_set> - <action_set - description="これらの能力には、グループの公開性や理念、記章の変更といった、グループのアイデンティティを修正する権限が含まれます。" - name="Group Identity"> - <action - description="理念、記章、「Web上で公開」、およびグループ情報内で公開のメンバーを変更。" - longdescription="理念、記章、「Web上で公開」、およびグループ情報内で公開のメンバーを変更します。 この操作には、一般タブを使用します。" - name="group change identity" value="11" /> + <action_set description="これらの能力には、グループの公開性や理念、記章の変更といった、グループのアイデンティティを修正する権限が含まれます。" name="Group Identity"> + <action description="理念、記章、「Web上で公開」、およびグループ情報内で公開のメンバーを変更。" longdescription="理念、記章、「検索に表示」の変更をします。 「一般」セクションで行えます。" name="group change identity" value="11"/> </action_set> - <action_set - description="これらの能力には、グループ所有の土地を譲渡、修正、販売する権限が含まれます。 「土地情報」のウィンドウを開くには、地面を右クリックして「土地情報」を選択するか、メニューバーの「区画情報」をクリックします。" - name="Parcel Management"> - <action description="グループ用の土地の譲渡と購入" - longdescription="グループ用の土地の譲渡と購入を行います。 この操作には、土地情報画面 > 一般タブを使います。" - name="land deed" value="12" /> - <action description="Linden総督に土地を明け渡す" - longdescription="Linden総督に土地を明け渡します。 *警告* この能力を持つ役割のメンバーは、「土地情報」>「一般」でグループ所有の土地を放棄して、売り上げなしでLinden総督に明け渡すことができます。 この能力の割り当ては、そのことを理解した上で行ってください。" - name="land release" value="13" /> - <action description="売り地情報の設定" - longdescription="売り地情報を設定します。 *警告* この能力を持つ役割のメンバーは、「土地情報」>「一般」タブでグループ所有の土地を自分の思いどおりに販売することができます。 この能力の割り当ては、そのことを理解した上で行ってください。" - name="land set sale info" value="14" /> - <action description="区画の再分割と統合" - longdescription="区画を再分割および統合します。 この操作を実行するには、地面を右クリックして「地形を編集」を選択し、土地の上でマウスをドラッグして範囲を選択します。 再分割するには、分割対象を選択した後、「再分割...」をクリックします。 統合するには、複数の隣接する区画を選択した後、「統合...」をクリックします。" - name="land divide join" value="15" /> + <action_set description="これらの「能力」には、このグループの所有地の譲渡、修正、販売をする権限があります。 「土地情報」ウィンドウを見るには、地面を右クリックして「土地情報」を選ぶか、ナビゲーションバーの「i」アイコンをクリックします。" name="Parcel Management"> + <action description="グループ用の土地の譲渡と購入" longdescription="グループ用の土地の譲渡と購入を行います。 この操作には、土地情報画面 > 一般タブを使います。" name="land deed" value="12"/> + <action description="Linden総督に土地を明け渡す" longdescription="Linden総督に土地を明け渡します。 *警告* この能力を持つ役割のメンバーは、「土地情報」>「一般」でグループ所有の土地を放棄して、売り上げなしでLinden総督に明け渡すことができます。 この能力の割り当ては、そのことを理解した上で行ってください。" name="land release" value="13"/> + <action description="売り地情報の設定" longdescription="売り地情報を設定します。 *警告* この能力を持つ役割のメンバーは、「土地情報」>「一般」タブでグループ所有の土地を自分の思いどおりに販売することができます。 この能力の割り当ては、そのことを理解した上で行ってください。" name="land set sale info" value="14"/> + <action description="区画の再分割と統合" longdescription="区画を再分割、統合します。 地面を右クリックして「地形を編集」を選び、マウスを土地の上でドラッグして範囲を選択します。 再分割するには、分割対象を選んで「再分割」をクリックします。 統合するには、2つ以上の隣接する区画を選んで「統合」をクリックします。" name="land divide join" value="15"/> </action_set> - <action_set - description="これらの能力には、区画名、公開設定、検索ディレクトリへの登録、着地点ならびにTPルートのオプションを変更する権限が含まれます。" - name="Parcel Identity"> - <action description="「場所検索に表示」に切り替え、カテゴリーを設定" - longdescription="「場所検索に表示」に切り替え、「土地情報」>「オプション」タブでカテゴリーを設定" - name="land find places" value="17" /> - <action description="区画名、説明、「Web上で公開」の設定を変更" - longdescription="区画名、説明、「Web上で公開」の設定を変更。 この操作には、「土地情報」 > 「オプション」タブを使います。" - name="land change identity" value="18" /> - <action description="着地点およびテレポート・ルートを設定" - longdescription="この能力を持つ役割のメンバーは、グループ所有の区画上で着地点を設定することにより外部からのテレポートの到着位置を指定できると共に、テレポート・ルートを設定して細かく制御することができます。 この操作は、「土地情報」>「オプション」タブで行います。" - name="land set landing point" value="19" /> + <action_set description="これらの能力には、区画名、公開設定、検索ディレクトリへの登録、着地点ならびにTPルートのオプションを変更する権限が含まれます。" name="Parcel Identity"> + <action description="「場所検索に表示」を切り替えカテゴリを設定" longdescription="「場所検索に表示」に切り替え、「土地情報」 > 「オプション」タブで区画のカテゴリを設定します。" name="land find places" value="17"/> + <action description="区画名、説明、「場所検索に表示」の設定を変更" longdescription="区画名、説明、「場所検索に表示」の設定を変更します。 「土地情報」 > 「オプション」タブで行います。" name="land change identity" value="18"/> + <action description="着地点およびテレポート・ルートを設定" longdescription="この能力を持つ役割のメンバーは、グループ所有の区画上で着地点を設定することにより外部からのテレポートの到着位置を指定できると共に、テレポート・ルートを設定して細かく制御することができます。 この操作は、「土地情報」>「オプション」タブで行います。" name="land set landing point" value="19"/> </action_set> - <action_set - description="これらの能力には、「オブジェクトを作成」、「地形を編集」、音楽とメディアの設定など、区画のオプションに関連する権限が含まれます。" - name="Parcel Settings"> - <action description="音楽とメディアの設定を変更" - longdescription="ストリーミング・ミュージックと動画の設定を変更するには、「土地情報」 > 「メディア」タブを使います。" - name="land change media" value="20" /> - <action description="「地形を編集」に切り替え" - longdescription="「地形を編集」に切り替えます。 *警告* 「土地情報」>「オプション」>「地形を編集」の順で進むと、誰でもあなたの土地の形の整備や、リンデンプラントの設置、移動ができます。 この能力を割り振る前に、このことをよく理解しておいてください。 「土地情報」>「オプション」タブから「地形を編集」に切り替えられます。" - name="land edit" value="21" /> - <action - description="「土地情報」>「オプション」タブ内のさまざまな設定を切り替え" - longdescription="「安全(ダメージなし)」、「飛ぶ」に切り替え、「土地情報」>「オプション」タブから、 他の住人がグループ所有の土地で「オブジェクトを作成」、「地形を編集」、「ランドマークを作成」、「スクリプトを実行」できるようにします。" - name="land options" value="22" /> + <action_set description="これらの能力には、「オブジェクトを作成」、「地形を編集」、音楽とメディアの設定など、区画のオプションに関連する権限が含まれます。" name="Parcel Settings"> + <action description="音楽とメディアの設定を変更" longdescription="ストリーミング・ミュージックと動画の設定を変更するには、「土地情報」 > 「メディア」タブを使います。" name="land change media" value="20"/> + <action description="「地形を編集」に切り替え" longdescription="「地形を編集」に切り替えます。 *警告* 「土地情報」>「オプション」>「地形を編集」の順で進むと、誰でもあなたの土地の形の整備や、リンデンプラントの設置、移動ができます。 この能力を割り振る前に、このことをよく理解しておいてください。 「土地情報」>「オプション」タブから「地形を編集」に切り替えられます。" name="land edit" value="21"/> + <action description="「土地情報」>「オプション」タブ内のさまざまな設定を切り替え" longdescription="「安全(ダメージなし)」、「飛行」を切り替え、住人に以下を許可します: グループ所有地の「土地情報」 > 「オプション」タブ内の、「地形を編集」、「制作」、「ランドマークの作成」、「スクリプトの実行」。" name="land options" value="22"/> </action_set> - <action_set - description="これらの能力には、グループ所有の区画に関する規制を迂回することを、メンバーに許可する権限が含まれます。" - name="Parcel Powers"> - <action description="常に「地形を編集」を許可" - longdescription="この能力を持つ役割のメンバーは、グループ所有の区画上で地形を編集することができます。その区画が「土地情報」>「オプション」タブでオフになっていても、地形の編集が可能です。" - name="land allow edit land" value="23" /> - <action description="常に「飛行」を許可" - longdescription="この能力を持つ役割のメンバーは、グループ所有の区画上を飛行することができます。その区画が「土地情報」>「オプション」タブでオフになっていても、飛行が可能です。" - name="land allow fly" value="24" /> - <action description="常に「オブジェクト作成」を許可" - longdescription="この能力を持つ役割のメンバーは、グループ所有の区画上にオブジェクトを作成することができます。その区画が「土地情報」>「オプション」タブでオフになっていても、オブジェクトの作成が可能です。" - name="land allow create" value="25" /> - <action description="常に「ランドマークを作成」を許可" - longdescription="この能力を持つ役割のメンバーは、グループ所有の区画上にランドマークを作成することができます。その区画が「土地情報」>「オプション」タブでオフになっていても、ランドマークの作成が可能です。" - name="land allow landmark" value="26" /> - <action description="グループの土地への「ホーム設定」を許可" - longdescription="この能力を持つ役割のメンバーは、「世界」メニュー>「ホームをここに設定」を使用して、このグループに譲渡された区画をホームに設定することができます。" - name="land allow set home" value="28" /> + <action_set description="これらの能力には、グループ所有の区画に関する規制を迂回することを、メンバーに許可する権限が含まれます。" name="Parcel Powers"> + <action description="常に「地形を編集」を許可" longdescription="この能力を持つ役割のメンバーは、グループ所有の区画上で地形を編集することができます。その区画が「土地情報」>「オプション」タブでオフになっていても、地形の編集が可能です。" name="land allow edit land" value="23"/> + <action description="常に「飛行」を許可" longdescription="この能力を持つ役割のメンバーは、グループ所有の区画上を飛行することができます。その区画が「土地情報」>「オプション」タブでオフになっていても、飛行が可能です。" name="land allow fly" value="24"/> + <action description="常に「オブジェクト作成」を許可" longdescription="この能力を持つ役割のメンバーは、グループ所有の区画上にオブジェクトを作成することができます。その区画が「土地情報」>「オプション」タブでオフになっていても、オブジェクトの作成が可能です。" name="land allow create" value="25"/> + <action description="常に「ランドマークを作成」を許可" longdescription="この能力を持つ役割のメンバーは、グループ所有の区画上にランドマークを作成することができます。その区画が「土地情報」>「オプション」タブでオフになっていても、ランドマークの作成が可能です。" name="land allow landmark" value="26"/> + <action description="グループの土地への「ホーム設定」を許可" longdescription="この「役割」を持つメンバーは、このグループに譲渡された区画上で「世界」メニュー > ランドマーク > 現在地をホームに設定 を使用して、ホームの設定を行うことができます。" name="land allow set home" value="28"/> </action_set> - <action_set - description="これらの能力には、住人の凍結や追放を含む、グループ所有の区画へのアクセスを許可、制限する権限が含まれます。" - name="Parcel Access"> - <action description="区画アクセス・リストの管理" - longdescription="区画アクセス・リストの管理は、「土地情報」>「アクセス」タブで行います。" - name="land manage allowed" value="29" /> - <action description="区画禁止リストの管理" - longdescription="区画禁止リストの管理は、「土地情報」>「禁止」タブで行います。" - name="land manage banned" value="30" /> - <action description="区画の「入場許可を販売」の設定を変更" - longdescription="区画の「入場許可を販売」の設定を変更するには、「土地情報」 > 「アクセス」タブを使います。" - name="land manage passes" value="31" /> - <action description="区画上の住人の追放と凍結" - longdescription="この能力を持つ役割のメンバーは、グループ所有の区画に問題のある住人がいる場合に、右クリック・メニューから「詳細」を選択し、「追放...」または「フリーズ...」を選択することにより、その住人を処理することができます。" - name="land admin" value="32" /> + <action_set description="これらの能力には、住人の凍結や追放を含む、グループ所有の区画へのアクセスを許可、制限する権限が含まれます。" name="Parcel Access"> + <action description="区画アクセス・リストの管理" longdescription="区画アクセス・リストの管理は、「土地情報」>「アクセス」タブで行います。" name="land manage allowed" value="29"/> + <action description="区画禁止リストの管理" longdescription="「土地情報」 > 「アクセス」タブの、区画の禁止リストの管理ができます。" name="land manage banned" value="30"/> + <action description="「入場許可を販売」の設定を変更" longdescription="「土地情報」 > 「アクセス」タブで、区画の「入場許可を販売」の設定を変更します。" name="land manage passes" value="31"/> + <action description="区画上の住人の追放と凍結" longdescription="この「能力」を持つ「役割」のメンバーは、グループ所有地にいて欲しくない住人を右クリックし、「追放」や「フリーズ」を選んで対応できます。" name="land admin" value="32"/> </action_set> - <action_set - description="これらの能力には、オブジェクトの返却、リンデンプラントの設置や移動を、メンバーに許可する権限が含まれます。 これはメンバーがゴミ処理や景観作成をする際に便利ですが、返却したオブジェクトは元に戻せないので、注意して行いましょう。" - name="Parcel Content"> - <action description="グループ所有オブジェクトの返却" - longdescription="グループ所有の区画上のオブジェクトのうち、グループ所有のオブジェクトを返却するには、「土地情報」>「オブジェクト」タブを使います。" - name="land return group owned" value="48" /> - <action description="グループに設定されているオブジェクトを返却" - longdescription="グループ所有の区画上のオブジェクトのうち、グループに設定されているオブジェクトを返却するには、「土地情報」>「オブジェクト」タブを使います。" - name="land return group set" value="33" /> - <action description="非グループ・オブジェクトの返却" - longdescription="グループ所有の区画上のオブジェクトのうち、グループ以外のオブジェクトを返却するには、「土地情報」>「オブジェクト」タブを使います。" - name="land return non group" value="34" /> - <action description="Linden製の植物を使用して景観作成" - longdescription="景観作成能力により、リンデン製の樹木、植物、草を配置および移動することができます。 これらのアイテムは、自分の持ち物のライブラリ>オブジェクト・フォルダから検索できるほか、「作成」ボタンで作成することもできます。" - name="land gardening" value="35" /> + <action_set description="これらの能力には、オブジェクトの返却、リンデンプラントの設置や移動を、メンバーに許可する権限が含まれます。 これはメンバーがゴミ処理や景観作成をする際に便利ですが、返却したオブジェクトは元に戻せないので、注意して行いましょう。" name="Parcel Content"> + <action description="グループ所有オブジェクトの返却" longdescription="グループ所有の区画上のオブジェクトのうち、グループ所有のオブジェクトを返却するには、「土地情報」>「オブジェクト」タブを使います。" name="land return group owned" value="48"/> + <action description="グループに設定されているオブジェクトを返却" longdescription="グループ所有の区画上のオブジェクトのうち、グループに設定されているオブジェクトを返却するには、「土地情報」>「オブジェクト」タブを使います。" name="land return group set" value="33"/> + <action description="非グループ・オブジェクトの返却" longdescription="グループ所有の区画上のオブジェクトのうち、グループ以外のオブジェクトを返却するには、「土地情報」>「オブジェクト」タブを使います。" name="land return non group" value="34"/> + <action description="Linden製の植物を使用して景観作成" longdescription="リンデン製の樹木、植物、草を植える、景観づくりの能力です。 これらの植物はあなたの持ち物内の「ライブラリ」 > 「オブジェクト」フォルダにあります。「制作」メニューで作成することもできます。" name="land gardening" value="35"/> </action_set> - <action_set - description="これらの能力には、グループ所有のオブジェクトを譲渡、修正、販売する権限が含まれます。 こうした変更は、「編集ツール」>「一般」タブで行われます。 オブジェクトを右クリックして「編集」を開くと、設定内容を表示できます。" - name="Object Management"> - <action description="グループにオブジェクトを譲渡" - longdescription="グループにオブジェクトを譲渡するには、「編集ツール」>「一般」タブを使います。" - name="object deed" value="36" /> - <action - description="グループ所有オブジェクトの操作(移動、コピー、修正)" - longdescription="グループ所有オブジェクトの操作(移動、コピー、修正)は、「編集ツール」>「一般」タブで行います。" - name="object manipulate" value="38" /> - <action description="グループ所有オブジェクトを販売可能に設定" - longdescription="グループ所有オブジェクトを販売可能に設定にするには、「編集ツール」>「一般」タブを使います。" - name="object set sale" value="39" /> + <action_set description="これらの「能力」には、グループ所有のオブジェクトを譲渡、修正、販売する権限が含まれます。 変更は「制作ツール」 > 「一般」タブで行います。 オブジェクトを右クリックして「編集」を開くと設定内容を確認できます。" name="Object Management"> + <action description="グループにオブジェクトを譲渡" longdescription="「制作ツール」 > 「一般」タブで、オブジェクトをグループに譲渡します。" name="object deed" value="36"/> + <action description="グループ所有オブジェクトの操作(移動、コピー、修正)" longdescription="「制作ツール」 > 「一般」タブで、グループ所有のオブジェクトを操作(移動、コピー、修正)します。" name="object manipulate" value="38"/> + <action description="グループ所有オブジェクトを販売可能に設定" longdescription="「制作ツール」 > 「一般」タブで、グループ所有のオブジェクトを販売対象に設定します。" name="object set sale" value="39"/> </action_set> - <action_set - description="これらの能力には、メンバーに、グループの負債の支払いと利子受け取りを要求する権限、グループ口座履歴へのアクセスを制限する権限が含まれます。" - name="Accounting"> - <action description="グループ負債の返済とグループ配当の受領" - longdescription="この能力を持つ役割のメンバーについては、グループ負債の支払いとグループ配当の受け取りが自動的に行われます。 つまり、これらのメンバーは、毎日配当されるグループ所有の土地の売り上げ金の一部を受け取ると共に、区画の広告費などを負担することになります。" - name="accounting accountable" value="40" /> + <action_set description="これらの能力には、メンバーに、グループの負債の支払いと利子受け取りを要求する権限、グループ口座履歴へのアクセスを制限する権限が含まれます。" name="Accounting"> + <action description="グループ負債の返済とグループ配当の受領" longdescription="この能力を持つ役割のメンバーについては、グループ負債の支払いとグループ配当の受け取りが自動的に行われます。 つまり、これらのメンバーは、毎日配当されるグループ所有の土地の売り上げ金の一部を受け取ると共に、区画の広告費などを負担することになります。" name="accounting accountable" value="40"/> </action_set> - <action_set - description="これらの能力には、グループ通知の送信、受信、表示をメンバーに許可する権限が含まれます。" - name="Notices"> - <action description="通知を送信" - longdescription="この能力を持つ役割のメンバーは、「グループ情報」>「通知」タブで通知を送信することができます。" - name="notices send" value="42" /> - <action description="通知の受信と過去の通知の閲覧" - longdescription="この能力を持つ役割のメンバーは、通知を受け取ることができ、「グループ情報」>「通知」タブで過去の通知を閲覧することができます。" - name="notices receive" value="43" /> + <action_set description="これらの能力には、グループ通知の送信、受信、表示をメンバーに許可する権限が含まれます。" name="Notices"> + <action description="通知を送信" longdescription="この「能力」を持つ「役割」のメンバーは、「グループ」 > 「通知」セクションから通知を送信できます。" name="notices send" value="42"/> + <action description="通知の受信と過去の通知の閲覧" longdescription="この「能力」を持つ「役割」のメンバーは、「グループ」 > 「通知」セクションで通知を受信したり過去の通知を見ることができます。" name="notices receive" value="43"/> </action_set> - <action_set - description="これらの能力には、提案の作成と投票、投票履歴の表示をメンバーに許可する権限が含まれます。" - name="Proposals"> - <action description="提案を作成" - longdescription="この能力を持つ役割のメンバーは、投票の対象となる問題提起を「グループ情報」>「問題提起」タブ上で作成することができます。" - name="proposal start" value="44" /> - <action description="問題提起に投票する" - longdescription="この能力を持つ役割のメンバーは、グループ情報>提案タブで提案に投票することができます。" - name="proposal vote" value="45" /> + <action_set description="これらの能力には、提案の作成と投票、投票履歴の表示をメンバーに許可する権限が含まれます。" name="Proposals"> + <action description="提案を作成" longdescription="この能力を持つ役割のメンバーは、投票の対象となる問題提起を「グループ情報」>「問題提起」タブ上で作成することができます。" name="proposal start" value="44"/> + <action description="問題提起に投票する" longdescription="この能力を持つ役割のメンバーは、グループ情報>提案タブで提案に投票することができます。" name="proposal vote" value="45"/> </action_set> - <action_set - description=" -これらのアビリティには、グループ・チャット・セッションやグループ・ボイス・チャットへのアクセスの許可や制限の権限が含まれます。 -" - name="Chat"> - <action description="グループ・チャットに参加する" - longdescription=" -このアビリティを持つ役割のメンバーは、グループ・チャット・セッションにテキストおよびボイスで参加できます。 -" - name="join group chat" /> - <action description="グループ・ボイス・チャットに参加する" - longdescription=" -このアビリティを持つ役割のメンバーは、グループ・ボイス・チャット・セッションに参加できます。 注: ボイス・チャット・セッションにアクセスするには、グループ・チャットに参加するアビリティが必要です。 -" - name="join voice chat" /> - <action description="グループ・チャットを管理する" - longdescription=" -このアビリティを持つ役割のメンバーは、グループ・ボイス・チャット・セッションおよびグループ・テキスト・チャット・セッションへのアクセスや参加をコントロールすることができます。 -" - name="moderate group chat" /> + <action_set description=" これらのアビリティには、グループ・チャット・セッションやグループ・ボイス・チャットへのアクセスの許可や制限の権限が含まれます。 " name="Chat"> + <action description="グループ・チャットに参加する" longdescription=" このアビリティを持つ役割のメンバーは、グループ・チャット・セッションにテキストおよびボイスで参加できます。 " name="join group chat"/> + <action description="グループ・ボイス・チャットに参加する" longdescription=" このアビリティを持つ役割のメンバーは、グループ・ボイス・チャット・セッションに参加できます。 注: ボイス・チャット・セッションにアクセスするには、グループ・チャットに参加するアビリティが必要です。 " name="join voice chat"/> + <action description="グループ・チャットを管理する" longdescription=" このアビリティを持つ役割のメンバーは、グループ・ボイス・チャット・セッションおよびグループ・テキスト・チャット・セッションへのアクセスや参加をコントロールすることができます。 " name="moderate group chat"/> </action_set> </role_actions> diff --git a/indra/newview/skins/default/xui/ja/sidepanel_appearance.xml b/indra/newview/skins/default/xui/ja/sidepanel_appearance.xml index ac41d7ce2b..4fba4b1567 100644 --- a/indra/newview/skins/default/xui/ja/sidepanel_appearance.xml +++ b/indra/newview/skins/default/xui/ja/sidepanel_appearance.xml @@ -1,16 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="容姿" name="appearance panel"> +<panel label="アウトフィット" name="appearance panel"> <string name="No Outfit" value="アウトフィットなし"/> <panel name="panel_currentlook"> <button label="編集" name="editappearance_btn"/> <text name="currentlook_title"> - 着用中のアウトフィット: + (保存されていません) </text> <text name="currentlook_name"> - マイ アウトフィット + MyOutfit With a really Long Name like MOOSE </text> </panel> - <filter_editor label="フィルター" name="Filter"/> + <filter_editor label="アウトフィットのフィルター" name="Filter"/> <button label="装着" name="wear_btn"/> <button label="新しいアウトフィット" name="newlook_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/ja/sidepanel_inventory.xml b/indra/newview/skins/default/xui/ja/sidepanel_inventory.xml index c2a61f738f..0c97fed901 100644 --- a/indra/newview/skins/default/xui/ja/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/ja/sidepanel_inventory.xml @@ -2,7 +2,7 @@ <panel label="もの" name="objects panel"> <panel label="" name="sidepanel__inventory_panel"> <panel name="button_panel"> - <button label="情報" name="info_btn"/> + <button label="プロフィール" name="info_btn"/> <button label="装着" name="wear_btn"/> <button label="プレイ" name="play_btn"/> <button label="テレポート" name="teleport_btn"/> diff --git a/indra/newview/skins/default/xui/ja/sidepanel_item_info.xml b/indra/newview/skins/default/xui/ja/sidepanel_item_info.xml index 9544e7756c..c6a13fa212 100644 --- a/indra/newview/skins/default/xui/ja/sidepanel_item_info.xml +++ b/indra/newview/skins/default/xui/ja/sidepanel_item_info.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="item properties" title="持ち物アイテムのプロパティ"> +<panel name="item properties" title="オブジェクトのプロフィール"> <panel.string name="unknown"> (不明) </panel.string> @@ -15,6 +15,8 @@ <panel.string name="acquiredDate"> [year,datetime,local] [mth,datetime,local] [day,datetime,local] [wkday,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] </panel.string> + <text name="title" value="オブジェクトのプロフィール"/> + <text name="where" value="(持ち物)"/> <panel label=""> <text name="LabelItemNameTitle"> 名前: @@ -28,53 +30,50 @@ <text name="LabelCreatorName"> Nicole Linden </text> - <button label="プロフィール..." name="BtnCreator"/> + <button label="プロフィール" name="BtnCreator"/> <text name="LabelOwnerTitle"> 所有者: </text> <text name="LabelOwnerName"> Thrax Linden </text> - <button label="プロフィール..." name="BtnOwner"/> + <button label="プロフィール" name="BtnOwner"/> <text name="LabelAcquiredTitle"> 取得: </text> <text name="LabelAcquiredDate"> Wed May 24 12:50:46 2006 </text> - <text name="OwnerLabel"> - あなた: - </text> - <check_box label="編集" name="CheckOwnerModify"/> - <check_box label="コピー" name="CheckOwnerCopy"/> - <check_box label="再販・プレゼント" name="CheckOwnerTransfer"/> - <text name="AnyoneLabel"> - 全員: - </text> - <check_box label="コピー" name="CheckEveryoneCopy"/> - <text name="GroupLabel"> - グループ: - </text> - <check_box label="共有" name="CheckShareWithGroup"/> - <text name="NextOwnerLabel"> - 次の所有者: - </text> - <check_box label="編集" name="CheckNextOwnerModify"/> - <check_box label="コピー" name="CheckNextOwnerCopy"/> - <check_box label="再販・プレゼント" name="CheckNextOwnerTransfer"/> + <panel name="perms_inv"> + <text name="perm_modify"> + あなたができること: + </text> + <check_box label="修正" name="CheckOwnerModify"/> + <check_box label="コピー" name="CheckOwnerCopy"/> + <check_box label="再販・プレゼント" name="CheckOwnerTransfer"/> + <text name="AnyoneLabel"> + 全員: + </text> + <check_box label="コピー" name="CheckEveryoneCopy"/> + <text name="GroupLabel"> + グループ: + </text> + <check_box label="共有" name="CheckShareWithGroup" tool_tip="設定したグループのメンバー全員にこのオブジェクトの修正権限を与えます。 譲渡しない限り、役割制限を有効にはできません。"/> + <text name="NextOwnerLabel"> + 次の所有者: + </text> + <check_box label="修正" name="CheckNextOwnerModify"/> + <check_box label="コピー" name="CheckNextOwnerCopy"/> + <check_box label="再販・プレゼント" name="CheckNextOwnerTransfer" tool_tip="次の所有者はこのオブジェクトを他人にあげたり再販することができます"/> + </panel> <check_box label="販売する" name="CheckPurchase"/> <combo_box name="combobox sale copy"> <combo_box.item label="コピー" name="Copy"/> <combo_box.item label="オリジナル" name="Original"/> </combo_box> - <spinner label="価格:" name="Edit Cost"/> - <text name="CurrencySymbol"> - L$ - </text> + <spinner label="価格: L$" name="Edit Cost"/> </panel> <panel name="button_panel"> - <button label="編集" name="edit_btn"/> <button label="キャンセル" name="cancel_btn"/> - <button label="保存" name="save_btn"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml b/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml index 5bf37954c5..c2d2af5346 100644 --- a/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="object properties" title="オブジェクトのプロパティ"> +<panel name="object properties" title="オブジェクトのプロフィール"> <panel.string name="text deed continued"> 譲渡 </panel.string> @@ -36,6 +36,8 @@ <panel.string name="Sale Mixed"> Mixed Sale </panel.string> + <text name="title" value="オブジェクトのプロフィール"/> + <text name="where" value="(ワールド内)"/> <panel label=""> <text name="Name:"> 名前: @@ -43,11 +45,11 @@ <text name="Description:"> 説明: </text> - <text name="Creator:"> + <text name="CreatorNameLabel"> 制作者: </text> <text name="Creator Name"> - Esbee Linden + Erica Linden </text> <text name="Owner:"> 所有者: @@ -55,13 +57,12 @@ <text name="Owner Name"> Erica Linden </text> - <text name="Group:"> + <text name="Group_label"> グループ: </text> <button name="button set group" tool_tip="このオブジェクト権限を共有するグループを選択"/> <name_box initial_value="ローディング..." name="Group Name Proxy"/> <button label="譲渡" label_selected="譲渡" name="button deed" tool_tip="このアイテムを譲渡すると「次の所有者」の権限が適用されます。 グループ共有オブジェクトは、グループのオフィサーが譲渡できます。"/> - <check_box label="共有" name="checkbox share with group" tool_tip="設定したグループのメンバー全員にこのオブジェクトの修正権限を与えます。 譲渡しない限り、役割制限を有効にはできません。"/> <text name="label click action"> クリックで: </text> @@ -72,55 +73,56 @@ <combo_box.item label="オブジェクトに支払う" name="Payobject"/> <combo_box.item label="開く" name="Open"/> </combo_box> - <check_box label="販売対象:" name="checkbox for sale"/> - <combo_box name="sale type"> - <combo_box.item label="コピー" name="Copy"/> - <combo_box.item label="中身" name="Contents"/> - <combo_box.item label="オリジナル" name="Original"/> - </combo_box> - <spinner label="価格: L$" name="Edit Cost"/> - <check_box label="検索に表示" name="search_check" tool_tip="このオブジェクトを検索結果に表示します"/> - <panel name="perms_build"> + <panel name="perms_inv"> <text name="perm_modify"> - あなたはこのオブジェクトを修正できます + このオブジェクトを修正できます </text> <text name="Anyone can:"> 全員: </text> - <check_box label="移動" name="checkbox allow everyone move"/> <check_box label="コピー" name="checkbox allow everyone copy"/> - <text name="Next owner can:"> + <check_box label="移動" name="checkbox allow everyone move"/> + <text name="GroupLabel"> + グループ: + </text> + <check_box label="共有" name="checkbox share with group" tool_tip="設定したグループのメンバー全員にこのオブジェクトの修正権限を与えます。 譲渡しない限り、役割制限を有効にはできません。"/> + <text name="NextOwnerLabel"> 次の所有者: </text> <check_box label="修正" name="checkbox next owner can modify"/> <check_box label="コピー" name="checkbox next owner can copy"/> <check_box label="再販・プレゼント" name="checkbox next owner can transfer" tool_tip="次の所有者はこのオブジェクトを他人にあげたり再販することができます"/> - <text name="B:"> - B. - </text> - <text name="O:"> - O: - </text> - <text name="G:"> - G: - </text> - <text name="E:"> - E: - </text> - <text name="N:"> - N: - </text> - <text name="F:"> - F: - </text> </panel> + <check_box label="販売中" name="checkbox for sale"/> + <combo_box name="sale type"> + <combo_box.item label="コピー" name="Copy"/> + <combo_box.item label="中身" name="Contents"/> + <combo_box.item label="オリジナル" name="Original"/> + </combo_box> + <spinner label="価格: L$" name="Edit Cost"/> + <check_box label="検索に表示" name="search_check" tool_tip="このオブジェクトを検索結果に表示します"/> + <text name="B:"> + B. + </text> + <text name="O:"> + O: + </text> + <text name="G:"> + G: + </text> + <text name="E:"> + E: + </text> + <text name="N:"> + N: + </text> + <text name="F:"> + F: + </text> </panel> <panel name="button_panel"> - <button label="編集" name="edit_btn"/> <button label="開く" name="open_btn"/> <button label="支払う" name="pay_btn"/> <button label="買う" name="buy_btn"/> - <button label="キャンセル" name="cancel_btn"/> - <button label="保存" name="save_btn"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml index 2006d1cbdc..d2a1977fc9 100644 --- a/indra/newview/skins/default/xui/ja/strings.xml +++ b/indra/newview/skins/default/xui/ja/strings.xml @@ -10,6 +10,9 @@ <string name="APP_NAME"> Second Life </string> + <string name="CAPITALIZED_APP_NAME"> + SECOND LIFE + </string> <string name="SECOND_LIFE_GRID"> Second Life Grid </string> @@ -49,6 +52,9 @@ <string name="LoginInitializingMultimedia"> マルチメディアを初期化しています... </string> + <string name="LoginInitializingFonts"> + フォントをローディング中... + </string> <string name="LoginVerifyingCache"> キャッシュ・ファイルを検証しています(所要時間は60~90秒)... </string> @@ -79,6 +85,9 @@ <string name="LoginDownloadingClothing"> 服をダウンロードしています... </string> + <string name="LoginFailedNoNetwork"> + ネットワークエラー: 接続を確立できませんでした。お使いのネットワーク接続をご確認ください。 + </string> <string name="Quit"> 終了 </string> @@ -174,7 +183,7 @@ 地図に表示 </string> <string name="BUTTON_CLOSE_DARWIN"> - 閉じる (⌘W) + 閉じる (⌘W) </string> <string name="BUTTON_CLOSE_WIN"> 閉じる (Ctrl+W) @@ -191,9 +200,6 @@ <string name="BUTTON_DOCK"> ドッキング </string> - <string name="BUTTON_UNDOCK"> - 切り離す - </string> <string name="BUTTON_HELP"> ヘルプを表示 </string> @@ -626,11 +632,14 @@ <string name="ControlYourCamera"> カメラのコントロール </string> + <string name="NotConnected"> + 接続されていません + </string> <string name="SIM_ACCESS_PG"> - PG + 一般 </string> <string name="SIM_ACCESS_MATURE"> - Mature + 控えめ </string> <string name="SIM_ACCESS_ADULT"> Adult @@ -818,6 +827,9 @@ <string name="InventoryNoMatchingItems"> 一致するアイテムが持ち物にありませんでした </string> + <string name="FavoritesNoMatchingItems"> + ここにランドマークをドラッグして、お気に入りに追加します。 + </string> <string name="InventoryNoTexture"> 持ち物内にこのテクスチャのコピーがありません </string> @@ -1288,6 +1300,156 @@ <string name="RegionInfoAllowedGroups"> 許可されたグループ: ([ALLOWEDGROUPS]、最大 [MAXACCESS] グループ) </string> + <string name="ScriptLimitsParcelScriptMemory"> + 区画スクリプトメモリ + </string> + <string name="ScriptLimitsParcelsOwned"> + 区画一覧: [PARCELS] + </string> + <string name="ScriptLimitsMemoryUsed"> + 使用されたメモリ: [MAX] kb 中 [COUNT] kb:[AVAILABLE] kb 利用可 + </string> + <string name="ScriptLimitsMemoryUsedSimple"> + 使用されたメモリ: [COUNT] kb + </string> + <string name="ScriptLimitsParcelScriptURLs"> + 区画のスクリプトURL + </string> + <string name="ScriptLimitsURLsUsed"> + 使用されたURL: [MAX] 中 [COUNT] :[AVAILABLE] 利用可 + </string> + <string name="ScriptLimitsURLsUsedSimple"> + 使用されたURL: [COUNT] + </string> + <string name="ScriptLimitsRequestError"> + 情報のリクエスト中にエラーが発生しました + </string> + <string name="ScriptLimitsRequestWrongRegion"> + エラー: スクリプト情報は現在地のみ取得できます + </string> + <string name="ScriptLimitsRequestWaiting"> + 情報を取得中... + </string> + <string name="ScriptLimitsRequestDontOwnParcel"> + この区画を調査する権限がありません。 + </string> + <string name="SITTING_ON"> + 着席中 + </string> + <string name="ATTACH_CHEST"> + 胸部 + </string> + <string name="ATTACH_HEAD"> + 頭 + </string> + <string name="ATTACH_LSHOULDER"> + 左肩 + </string> + <string name="ATTACH_RSHOULDER"> + 右肩 + </string> + <string name="ATTACH_LHAND"> + 左手 + </string> + <string name="ATTACH_RHAND"> + 右手 + </string> + <string name="ATTACH_LFOOT"> + 左足 + </string> + <string name="ATTACH_RFOOT"> + 右足 + </string> + <string name="ATTACH_BACK"> + 背中 + </string> + <string name="ATTACH_PELVIS"> + 骨盤 + </string> + <string name="ATTACH_MOUTH"> + 口 + </string> + <string name="ATTACH_CHIN"> + あご + </string> + <string name="ATTACH_LEAR"> + 左耳 + </string> + <string name="ATTACH_REAR"> + 右耳 + </string> + <string name="ATTACH_LEYE"> + 左目 + </string> + <string name="ATTACH_REYE"> + 右目 + </string> + <string name="ATTACH_NOSE"> + 鼻 + </string> + <string name="ATTACH_RUARM"> + 右腕(上) + </string> + <string name="ATTACH_RLARM"> + 右腕(下) + </string> + <string name="ATTACH_LUARM"> + 左腕(上) + </string> + <string name="ATTACH_LLARM"> + 左腕(下) + </string> + <string name="ATTACH_RHIP"> + 右腰 + </string> + <string name="ATTACH_RULEG"> + 右脚(上) + </string> + <string name="ATTACH_RLLEG"> + 右脚(下) + </string> + <string name="ATTACH_LHIP"> + 左腰 + </string> + <string name="ATTACH_LULEG"> + 左脚(上) + </string> + <string name="ATTACH_LLLEG"> + 左脚(下) + </string> + <string name="ATTACH_BELLY"> + お腹 + </string> + <string name="ATTACH_RPEC"> + 右胸筋 + </string> + <string name="ATTACH_LPEC"> + 左胸筋 + </string> + <string name="ATTACH_HUD_CENTER_2"> + HUD(中央 2) + </string> + <string name="ATTACH_HUD_TOP_RIGHT"> + HUD右上 + </string> + <string name="ATTACH_HUD_TOP_CENTER"> + HUD(上・中央) + </string> + <string name="ATTACH_HUD_TOP_LEFT"> + HUD 左上 + </string> + <string name="ATTACH_HUD_CENTER_1"> + HUD(中央 1) + </string> + <string name="ATTACH_HUD_BOTTOM_LEFT"> + HUD(左下) + </string> + <string name="ATTACH_HUD_BOTTOM"> + HUD(下) + </string> + <string name="ATTACH_HUD_BOTTOM_RIGHT"> + HUD(右下) + </string> <string name="CursorPos"> [LINE] 行目、[COLUMN] 列目 </string> @@ -1338,6 +1500,12 @@ <string name="ClassifiedUpdateAfterPublish"> (掲載後更新) </string> + <string name="NoPicksClassifiedsText"> + ここにはピック・クラシファイド広告はありません。 + </string> + <string name="PicksClassifiedsLoadingText"> + ローディング... + </string> <string name="MultiPreviewTitle"> プレビュー </string> @@ -1414,23 +1582,35 @@ 不明の拡張子: %s 使用可能な拡張子: .wav, .tga, .bmp, .jpg, .jpeg, or .bvh </string> + <string name="MuteObject2"> + ブロック + </string> + <string name="MuteAvatar"> + ブロック + </string> + <string name="UnmuteObject"> + ブロック解除 + </string> + <string name="UnmuteAvatar"> + ブロック解除 + </string> <string name="AddLandmarkNavBarMenu"> - ランドマークを追加... + マイ ランドマークに追加... </string> <string name="EditLandmarkNavBarMenu"> - ランドマークを編集... + マイ ランドマークを編集... </string> <string name="accel-mac-control"> - ⌃ + ⌃ </string> <string name="accel-mac-command"> - ⌘ + ⌘ </string> <string name="accel-mac-option"> - ⌥ + ⌥ </string> <string name="accel-mac-shift"> - ⇧ + ⇧ </string> <string name="accel-win-control"> Ctrl+ @@ -1616,7 +1796,7 @@ 致命的なエラー </string> <string name="MBRequiresAltiVec"> - [APP_NAME] は、AltiVec搭載のプロセッサが必要です。(G4 以降) + [APP_NAME] は、AltiVec搭載のプロセッサが必要です。(G4 以降) </string> <string name="MBAlreadyRunning"> [APP_NAME] はすでに実行中です。 @@ -1628,7 +1808,7 @@ クラッシュ報告を送信しますか? </string> <string name="MBAlert"> - 警告 + 通知 </string> <string name="MBNoDirectX"> [APP_NAME] は DirectX 9.0b 及びそれ以降のバージョンを検出することができませんでした。 @@ -2010,12 +2190,6 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ <string name="Eyes Bugged"> 下まぶたがたるんだ目 </string> - <string name="Eyes Shear Left Up"> - 左側を上に - </string> - <string name="Eyes Shear Right Up"> - 右側を上に - </string> <string name="Face Shear"> 顔のゆがみ </string> @@ -3018,6 +3192,27 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ <string name="LocationCtrlComboBtnTooltip"> マイロケーション履歴 </string> + <string name="LocationCtrlForSaleTooltip"> + この土地を購入 + </string> + <string name="LocationCtrlVoiceTooltip"> + ここではボイスの利用ができません + </string> + <string name="LocationCtrlFlyTooltip"> + 飛行は禁止されています + </string> + <string name="LocationCtrlPushTooltip"> + プッシュ禁止 + </string> + <string name="LocationCtrlBuildTooltip"> + オブジェクトの制作・ドロップは禁止されています + </string> + <string name="LocationCtrlScriptsTooltip"> + スクリプト不可 + </string> + <string name="LocationCtrlDamageTooltip"> + 体力 + </string> <string name="UpdaterWindowTitle"> [APP_NAME] アップデート </string> @@ -3075,6 +3270,33 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ <string name="IM_moderator_label"> (モデレータ) </string> + <string name="started_call"> + ボイスコールを開始します + </string> + <string name="joined_call"> + ボイスコールに参加しました + </string> + <string name="ringing-im"> + ボイスコールに参加... + </string> + <string name="connected-im"> + 接続しました。コール終了をクリックして切ります + </string> + <string name="hang_up-im"> + ボイスコールから退席しました + </string> + <string name="answering-im"> + 接続中... + </string> + <string name="conference-title"> + アドホックコンファレンス + </string> + <string name="inventory_item_offered-im"> + 持ち物アイテムが送られてきました + </string> + <string name="share_alert"> + 持ち物からここにアイテムをドラッグします + </string> <string name="only_user_message"> このセッションにいるユーザーはあなただけです。 </string> @@ -3084,6 +3306,12 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ <string name="invite_message"> このボイスチャットに応答/接続する場合は、[BUTTON NAME]をクリックしてください。 </string> + <string name="muted_message"> + この住人をブロックしています。 メッセージを送ると、ブロックが自動的に解除されます。 + </string> + <string name="generic"> + リクエスト中にエラーが発生しました。あとでもう一度お試しください。 + </string> <string name="generic_request_error"> 要求中にエラーが発生しました。後でもう一度試してください。 </string> @@ -3102,19 +3330,37 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ <string name="not_a_mod_error"> あなたはセッション・モデレータではありません。 </string> + <string name="muted"> + グループのモデレーターが、あなたのテキストチャットを禁止しました。 + </string> <string name="muted_error"> グループモデレータがあなたのテキストチャットを無効化しました </string> <string name="add_session_event"> [RECIPIENT] とのチャット・セッションにユーザーを追加することができません </string> + <string name="message"> + [RECIPIENT] とのチャットセッションに、メッセージを送信することができません。 + </string> <string name="message_session_event"> [RECIPIENT] とのチャット・セッションにメッセージを送ることができません </string> + <string name="mute"> + モデレート中にエラーが発生しました。 + </string> + <string name="removed"> + グループから脱退しました。 + </string> <string name="removed_from_group"> あなたはグループから削除されました。 </string> <string name="close_on_no_ability"> このチャット・セッションを継続することはできません </string> + <string name="unread_chat_single"> + [SOURCES] は何か新しいことを言いました。 + </string> + <string name="unread_chat_multiple"> + [SOURCES] は何か新しいことを言いました。 + </string> </strings> |