diff options
200 files changed, 3023 insertions, 1292 deletions
diff --git a/indra/cmake/LLAddBuildTest.cmake b/indra/cmake/LLAddBuildTest.cmake index bf4d9b72a9..e8a0a949b6 100644 --- a/indra/cmake/LLAddBuildTest.cmake +++ b/indra/cmake/LLAddBuildTest.cmake @@ -137,21 +137,13 @@ INCLUDE(GoogleMock) SET(TEST_OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/PROJECT_${project}_TEST_${name}_ok.txt) SET(TEST_CMD ${TEST_EXE} --touch=${TEST_OUTPUT} --sourcedir=${CMAKE_CURRENT_SOURCE_DIR}) - # daveh - what configuration does this use? Debug? it's cmake-time, not build time. + poppy 2009-04-19 + # daveh - what configuration does this use? Debug? it's cmake-time, not build time. + poppy 2009-04-19 IF(LL_TEST_VERBOSE) MESSAGE(STATUS "LL_ADD_PROJECT_UNIT_TESTS ${name} test_cmd = ${TEST_CMD}") ENDIF(LL_TEST_VERBOSE) - - IF(WINDOWS) - set(LD_LIBRARY_PATH ${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}) - ELSEIF(DARWIN) - set(LD_LIBRARY_PATH ${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}/Resources:/usr/lib) - ELSE(WINDOWS) - set(LD_LIBRARY_PATH ${SHARED_LIB_STAGING_DIR}:/usr/lib) - ENDIF(WINDOWS) - LL_TEST_COMMAND("${LD_LIBRARY_PATH}" ${TEST_CMD}) - SET(TEST_SCRIPT_CMD ${LL_TEST_COMMAND_value}) + SET_TEST_PATH(LD_LIBRARY_PATH) + LL_TEST_COMMAND(TEST_SCRIPT_CMD "${LD_LIBRARY_PATH}" ${TEST_CMD}) IF(LL_TEST_VERBOSE) MESSAGE(STATUS "LL_ADD_PROJECT_UNIT_TESTS ${name} test_script = ${TEST_SCRIPT_CMD}") ENDIF(LL_TEST_VERBOSE) @@ -233,16 +225,8 @@ FUNCTION(LL_ADD_INTEGRATION_TEST LIST(INSERT test_command test_exe_pos "${TEST_EXE}") ENDIF (test_exe_pos LESS 0) - IF(WINDOWS) - set(LD_LIBRARY_PATH ${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}) - ELSEIF(DARWIN) - set(LD_LIBRARY_PATH ${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}/Resources:/usr/lib) - ELSE(WINDOWS) - set(LD_LIBRARY_PATH ${SHARED_LIB_STAGING_DIR}:/usr/lib) - ENDIF(WINDOWS) - - LL_TEST_COMMAND("${LD_LIBRARY_PATH}" ${test_command}) - SET(TEST_SCRIPT_CMD ${LL_TEST_COMMAND_value}) + SET_TEST_PATH(LD_LIBRARY_PATH) + LL_TEST_COMMAND(TEST_SCRIPT_CMD "${LD_LIBRARY_PATH}" ${test_command}) if(TEST_DEBUG) message(STATUS "TEST_SCRIPT_CMD: ${TEST_SCRIPT_CMD}") @@ -258,3 +242,20 @@ FUNCTION(LL_ADD_INTEGRATION_TEST # ADD_TEST(INTEGRATION_TEST_RUNNER_${testname} ${TEST_SCRIPT_CMD}) ENDFUNCTION(LL_ADD_INTEGRATION_TEST) + +MACRO(SET_TEST_PATH LISTVAR) + IF(WINDOWS) + # We typically build/package only Release variants of third-party + # libraries, so append the Release staging dir in case the library being + # sought doesn't have a debug variant. + set(${LISTVAR} ${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR} ${SHARED_LIB_STAGING_DIR}/Release) + ELSEIF(DARWIN) + # We typically build/package only Release variants of third-party + # libraries, so append the Release staging dir in case the library being + # sought doesn't have a debug variant. + set(${LISTVAR} ${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}/Resources ${SHARED_LIB_STAGING_DIR}/Release/Resources /usr/lib) + ELSE(WINDOWS) + # Linux uses a single staging directory anyway. + set(${LISTVAR} ${SHARED_LIB_STAGING_DIR} /usr/lib) + ENDIF(WINDOWS) +ENDMACRO(SET_TEST_PATH) diff --git a/indra/cmake/LLSharedLibs.cmake b/indra/cmake/LLSharedLibs.cmake index 6f602680f4..e29076c738 100644 --- a/indra/cmake/LLSharedLibs.cmake +++ b/indra/cmake/LLSharedLibs.cmake @@ -5,20 +5,21 @@ macro(ll_deploy_sharedlibs_command target_exe) get_filename_component(OUTPUT_PATH ${TARGET_LOCATION} PATH) if(DARWIN) - set(SEARCH_DIRS "${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}/Resources") + SET_TEST_PATH(SEARCH_DIRS) get_target_property(IS_BUNDLE ${target_exe} MACOSX_BUNDLE) if(IS_BUNDLE) - # If its a bundle the exe is not in the target location, this should find it. + # If its a bundle the exe is not in the target location, this should find it. get_filename_component(TARGET_FILE ${TARGET_LOCATION} NAME) set(OUTPUT_PATH ${TARGET_LOCATION}.app/Contents/MacOS) set(TARGET_LOCATION ${OUTPUT_PATH}/${TARGET_FILE}) - set(OUTPUT_PATH ${OUTPUT_PATH}/../Resources) + set(OUTPUT_PATH ${OUTPUT_PATH}/../Resources) endif(IS_BUNDLE) elseif(WINDOWS) - set(SEARCH_DIRS "${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}" "$ENV{SystemRoot}/system32") + SET_TEST_PATH(SEARCH_DIRS) + LIST(APPEND SEARCH_DIRS "$ENV{SystemRoot}/system32") elseif(LINUX) - set(SEARCH_DIRS "${SHARED_LIB_STAGING_DIR}") - set(OUTPUT_PATH ${OUTPUT_PATH}/lib) + SET_TEST_PATH(SEARCH_DIRS) + set(OUTPUT_PATH ${OUTPUT_PATH}/lib) endif(DARWIN) add_custom_command( @@ -49,7 +50,7 @@ macro(ll_stage_sharedlib DSO_TARGET) else(DARWIN) set(SHARED_LIB_STAGING_DIR_CONFIG ${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}) endif(DARWIN) - + # *TODO - maybe make this a symbolic link? -brad add_custom_command( TARGET ${DSO_TARGET} POST_BUILD @@ -71,4 +72,4 @@ macro(ll_stage_sharedlib DSO_TARGET) ) endif(DARWIN) -endmacro(ll_stage_sharedlib)
\ No newline at end of file +endmacro(ll_stage_sharedlib) diff --git a/indra/cmake/LLTestCommand.cmake b/indra/cmake/LLTestCommand.cmake index fae5640493..554559edbd 100644 --- a/indra/cmake/LLTestCommand.cmake +++ b/indra/cmake/LLTestCommand.cmake @@ -1,13 +1,16 @@ -MACRO(LL_TEST_COMMAND LD_LIBRARY_PATH) +MACRO(LL_TEST_COMMAND OUTVAR LD_LIBRARY_PATH) # nat wonders how Kitware can use the term 'function' for a construct that # cannot return a value. And yet, variables you set inside a FUNCTION are # local. Try a MACRO instead. - SET(LL_TEST_COMMAND_value + SET(value ${PYTHON_EXECUTABLE} "${CMAKE_SOURCE_DIR}/cmake/run_build_test.py") - IF(LD_LIBRARY_PATH) - LIST(APPEND LL_TEST_COMMAND_value "-l${LD_LIBRARY_PATH}") - ENDIF(LD_LIBRARY_PATH) - LIST(APPEND LL_TEST_COMMAND_value ${ARGN}) -##MESSAGE(STATUS "Will run: ${LL_TEST_COMMAND_value}") + FOREACH(dir ${LD_LIBRARY_PATH}) + LIST(APPEND value "-l${dir}") + ENDFOREACH(dir) + LIST(APPEND value ${ARGN}) + SET(${OUTVAR} ${value}) +##IF(LL_TEST_VERBOSE) +## MESSAGE(STATUS "LL_TEST_COMMAND: ${value}") +##ENDIF(LL_TEST_VERBOSE) ENDMACRO(LL_TEST_COMMAND) diff --git a/indra/lib/python/indra/util/llmanifest.py b/indra/lib/python/indra/util/llmanifest.py index 7e5b86c53f..c33a03034a 100644 --- a/indra/lib/python/indra/util/llmanifest.py +++ b/indra/lib/python/indra/util/llmanifest.py @@ -39,6 +39,7 @@ import shutil import sys import tarfile import errno +import subprocess def path_ancestors(path): drive, path = os.path.splitdrive(os.path.normpath(path)) @@ -366,20 +367,23 @@ class LLManifest(object): def run_command(self, command): """ Runs an external command, and returns the output. Raises - an exception if the command reurns a nonzero status code. For - debugging/informational purpoases, prints out the command's + an exception if the command returns a nonzero status code. For + debugging/informational purposes, prints out the command's output as it is received.""" print "Running command:", command - fd = os.popen(command, 'r') + sys.stdout.flush() + child = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, + shell=True) lines = [] while True: - lines.append(fd.readline()) + lines.append(child.stdout.readline()) if lines[-1] == '': break else: print lines[-1], output = ''.join(lines) - status = fd.close() + child.stdout.close() + status = child.wait() if status: raise RuntimeError( "Command %s returned non-zero status (%s) \noutput:\n%s" diff --git a/indra/llcommon/llstring.cpp b/indra/llcommon/llstring.cpp index f14d947734..1561bda201 100644 --- a/indra/llcommon/llstring.cpp +++ b/indra/llcommon/llstring.cpp @@ -994,7 +994,14 @@ void LLStringUtil::formatNumber(std::string& numStr, std::string decimals) convertToS32 (decimals, intDecimals); if (!sLocale.empty()) { - strStream.imbue (std::locale(sLocale.c_str())); + // std::locale() throws if the locale is unknown! (EXT-7926) + try + { + strStream.imbue(std::locale(sLocale.c_str())); + } catch (const std::exception &) + { + LL_WARNS_ONCE("Locale") << "Cannot set locale to " << sLocale << LL_ENDL; + } } if (!intDecimals) diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp index ff47c57c70..2d408f8e10 100644 --- a/indra/llrender/llimagegl.cpp +++ b/indra/llrender/llimagegl.cpp @@ -1748,7 +1748,8 @@ BOOL LLImageGL::getMask(const LLVector2 &tc) { LL_WARNS_ONCE("render") << "Ugh, non-finite u/v in mask pick" << LL_ENDL; u = v = 0.f; - llassert(false); + // removing assert per EXT-4388 + // llassert(false); } if (LL_UNLIKELY(u < 0.f || u > 1.f || @@ -1756,7 +1757,8 @@ BOOL LLImageGL::getMask(const LLVector2 &tc) { LL_WARNS_ONCE("render") << "Ugh, u/v out of range in image mask pick" << LL_ENDL; u = v = 0.f; - llassert(false); + // removing assert per EXT-4388 + // llassert(false); } S32 x = llfloor(u * mPickMaskWidth); diff --git a/indra/media_plugins/webkit/CMakeLists.txt b/indra/media_plugins/webkit/CMakeLists.txt index 1a559ed39c..d576638dd7 100644 --- a/indra/media_plugins/webkit/CMakeLists.txt +++ b/indra/media_plugins/webkit/CMakeLists.txt @@ -50,8 +50,10 @@ set(media_plugin_webkit_LINK_LIBRARIES ) # Select which VolumeCatcher implementation to use -if (LINUX AND PULSEAUDIO) - list(APPEND media_plugin_webkit_SOURCE_FILES linux_volume_catcher.cpp) +if (LINUX) + if (PULSEAUDIO) + list(APPEND media_plugin_webkit_SOURCE_FILES linux_volume_catcher.cpp) + endif (PULSEAUDIO) list(APPEND media_plugin_webkit_LINK_LIBRARIES ${UI_LIBRARIES} # for glib/GTK ) @@ -65,10 +67,10 @@ elseif (DARWIN) ) elseif (WINDOWS) list(APPEND media_plugin_webkit_SOURCE_FILES windows_volume_catcher.cpp) -else (LINUX AND PULSEAUDIO) +else (LINUX) # All other platforms use the dummy volume catcher for now. list(APPEND media_plugin_webkit_SOURCE_FILES dummy_volume_catcher.cpp) -endif (LINUX AND PULSEAUDIO) +endif (LINUX) set_source_files_properties(${media_plugin_webkit_HEADER_FILES} PROPERTIES HEADER_FILE_ONLY TRUE) diff --git a/indra/media_plugins/webkit/linux_volume_catcher.cpp b/indra/media_plugins/webkit/linux_volume_catcher.cpp index 2e7fda865e..5eaef0e1c3 100644 --- a/indra/media_plugins/webkit/linux_volume_catcher.cpp +++ b/indra/media_plugins/webkit/linux_volume_catcher.cpp @@ -47,6 +47,7 @@ extern "C" { #include <glib.h> +#include <glib-object.h> #include <pulse/introspect.h> #include <pulse/context.h> @@ -220,6 +221,10 @@ void VolumeCatcherImpl::init() mGotSyms = loadsyms("libpulse-mainloop-glib.so.0"); if (!mGotSyms) return; + // better make double-sure glib itself is initialized properly. + if (!g_thread_supported ()) g_thread_init (NULL); + g_type_init(); + mMainloop = llpa_glib_mainloop_new(g_main_context_default()); if (mMainloop) { diff --git a/indra/media_plugins/webkit/media_plugin_webkit.cpp b/indra/media_plugins/webkit/media_plugin_webkit.cpp index 6990354486..3b00edec4e 100644 --- a/indra/media_plugins/webkit/media_plugin_webkit.cpp +++ b/indra/media_plugins/webkit/media_plugin_webkit.cpp @@ -46,6 +46,10 @@ // set to 1 if you're using the version of llqtwebkit that's QPixmap-ified #if LL_LINUX # define LL_QTWEBKIT_USES_PIXMAPS 0 +extern "C" { +# include <glib.h> +# include <glib-object.h> +} #else # define LL_QTWEBKIT_USES_PIXMAPS 0 #endif // LL_LINUX @@ -60,7 +64,7 @@ #endif #if LL_WINDOWS - // *NOTE:Mani - This captures the module handle fo rthe dll. This is used below + // *NOTE:Mani - This captures the module handle for the dll. This is used below // to get the path to this dll for webkit initialization. // I don't know how/if this can be done with apr... namespace { HMODULE gModuleHandle;}; @@ -129,6 +133,16 @@ private: // void update(int milliseconds) { +#if LL_QTLINUX_DOESNT_HAVE_GLIB + // pump glib generously, as Linux browser plugins are on the + // glib main loop, even if the browser itself isn't - ugh + // This is NOT NEEDED if Qt itself was built with glib + // mainloop integration. + GMainContext *mainc = g_main_context_default(); + while(g_main_context_iteration(mainc, FALSE)); +#endif // LL_QTLINUX_DOESNT_HAVE_GLIB + + // pump qt LLQtWebKit::getInstance()->pump( milliseconds ); mVolumeCatcher.pump(); @@ -200,6 +214,14 @@ private: } std::string application_dir = std::string( cwd ); +#if LL_LINUX + // take care to initialize glib properly, because some + // versions of Qt don't, and we indirectly need it for (some + // versions of) Flash to not crash the browser. + if (!g_thread_supported ()) g_thread_init (NULL); + g_type_init(); +#endif + #if LL_DARWIN // When running under the Xcode debugger, there's a setting called "Break on Debugger()/DebugStr()" which defaults to being turned on. // This causes the environment variable USERBREAK to be set to 1, which causes these legacy calls to break into the debugger. diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 24811db3cb..c1b2d680be 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -260,6 +260,7 @@ set(viewer_SOURCE_FILES llinventoryfunctions.cpp llinventoryicon.cpp llinventoryitemslist.cpp + llinventorylistitem.cpp llinventorymodel.cpp llinventorymodelbackgroundfetch.cpp llinventoryobserver.cpp @@ -783,6 +784,7 @@ set(viewer_HEADER_FILES llinventoryfunctions.h llinventoryicon.h llinventoryitemslist.h + llinventorylistitem.h llinventorymodel.h llinventorymodelbackgroundfetch.h llinventoryobserver.h diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 2244f05104..1d635ef18a 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -2841,6 +2841,17 @@ <key>Value</key> <integer>0</integer> </map> + <key>FeatureManagerHTTPTable</key> + <map> + <key>Comment</key> + <string>Base directory for HTTP feature/gpu table fetches</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>String</string> + <key>Value</key> + <string>http://viewer-settings.secondlife.com</string> + </map> <key>FPSLogFrequency</key> <map> <key>Comment</key> diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index 03efcadc98..217fb0f988 100644 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -57,6 +57,7 @@ #include "llnavigationbar.h" // to show/hide navigation bar when changing mouse look state #include "llnearbychatbar.h" #include "llnotificationsutil.h" +#include "llpaneltopinfobar.h" #include "llparcel.h" #include "llrendersphere.h" #include "llsdutil.h" @@ -1693,6 +1694,11 @@ void LLAgent::endAnimationUpdateUI() LLNavigationBar::getInstance()->setVisible(TRUE); gStatusBar->setVisibleForMouselook(true); + if (gSavedSettings.getBOOL("ShowMiniLocationPanel")) + { + LLPanelTopInfoBar::getInstance()->setVisible(TRUE); + } + LLBottomTray::getInstance()->onMouselookModeOut(); LLSideTray::getInstance()->getButtonsPanel()->setVisible(TRUE); @@ -1791,6 +1797,8 @@ void LLAgent::endAnimationUpdateUI() LLNavigationBar::getInstance()->setVisible(FALSE); gStatusBar->setVisibleForMouselook(false); + LLPanelTopInfoBar::getInstance()->setVisible(FALSE); + LLBottomTray::getInstance()->onMouselookModeIn(); LLSideTray::getInstance()->getButtonsPanel()->setVisible(FALSE); diff --git a/indra/newview/llagentcamera.cpp b/indra/newview/llagentcamera.cpp index c6ca9c5e3a..9cf0a659c1 100644 --- a/indra/newview/llagentcamera.cpp +++ b/indra/newview/llagentcamera.cpp @@ -2084,6 +2084,9 @@ void LLAgentCamera::changeCameraToMouselook(BOOL animate) // visibility changes at end of animation gViewerWindow->getWindow()->resetBusyCount(); + // Menus should not remain open on switching to mouselook... + LLMenuGL::sMenuContainer->hideMenus(); + // unpause avatar animation gAgent.unpauseAnimation(); diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp index 3923749e64..5728256dba 100644 --- a/indra/newview/llagentwearables.cpp +++ b/indra/newview/llagentwearables.cpp @@ -47,6 +47,7 @@ #include "llinventorypanel.h" #include "llmd5.h" #include "llnotificationsutil.h" +#include "lloutfitobserver.h" #include "llpaneloutfitsinventory.h" #include "llsidepanelappearance.h" #include "llsidetray.h" @@ -179,6 +180,14 @@ void LLAgentWearables::cleanup() { } +// static +void LLAgentWearables::initClass() +{ + // this can not be called from constructor because its instance is global and is created too early. + // Subscribe to "COF is Saved" signal to notify observers about this (Loading indicator for ex.). + LLOutfitObserver::instance().addCOFSavedCallback(boost::bind(&LLAgentWearables::notifyLoadingFinished, &gAgentWearables)); +} + void LLAgentWearables::setAvatarObject(LLVOAvatarSelf *avatar) { if (avatar) @@ -931,6 +940,7 @@ void LLAgentWearables::processAgentInitialWearablesUpdate(LLMessageSystem* mesgs // notify subscribers that wearables started loading. See EXT-7777 // *TODO: find more proper place to not be called from deprecated method. + // Seems such place is found: LLInitialWearablesFetch::processContents() gAgentWearables.notifyLoadingStarted(); mInitialWearablesUpdateReceived = true; diff --git a/indra/newview/llagentwearables.h b/indra/newview/llagentwearables.h index 05913825dd..8122971db6 100644 --- a/indra/newview/llagentwearables.h +++ b/indra/newview/llagentwearables.h @@ -33,9 +33,13 @@ #ifndef LL_LLAGENTWEARABLES_H #define LL_LLAGENTWEARABLES_H +// libraries #include "llmemory.h" +#include "llui.h" #include "lluuid.h" #include "llinventory.h" + +// newview #include "llinventorymodel.h" #include "llviewerinventory.h" #include "llvoavatardefines.h" @@ -47,7 +51,7 @@ class LLInitialWearablesFetch; class LLViewerObject; class LLTexLayerTemplate; -class LLAgentWearables +class LLAgentWearables : public LLInitClass<LLAgentWearables> { //-------------------------------------------------------------------- // Constructors / destructors / Initializers @@ -61,6 +65,9 @@ public: void createStandardWearables(BOOL female); void cleanup(); void dump(); + + // LLInitClass interface + static void initClass(); protected: void createStandardWearablesDone(S32 type, U32 index/* = 0*/); void createStandardWearablesAllDone(); diff --git a/indra/newview/llagentwearablesfetch.cpp b/indra/newview/llagentwearablesfetch.cpp index ef0b97d376..931aba1d41 100644 --- a/indra/newview/llagentwearablesfetch.cpp +++ b/indra/newview/llagentwearablesfetch.cpp @@ -121,6 +121,7 @@ void LLInitialWearablesFetch::processContents() LLAppearanceMgr::instance().setAttachmentInvLinkEnable(true); if (wearable_array.count() > 0) { + gAgentWearables.notifyLoadingStarted(); LLAppearanceMgr::instance().updateAppearanceFromCOF(); } else diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index 4e96372da9..3947be49bb 100644 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -177,7 +177,13 @@ class LLUpdateDirtyState: public LLInventoryCallback { public: LLUpdateDirtyState() {} - virtual ~LLUpdateDirtyState(){ LLAppearanceMgr::getInstance()->updateIsDirty(); } + virtual ~LLUpdateDirtyState() + { + if (LLAppearanceMgr::instanceExists()) + { + LLAppearanceMgr::getInstance()->updateIsDirty(); + } + } virtual void fire(const LLUUID&) {} }; @@ -1091,6 +1097,7 @@ void LLAppearanceMgr::shallowCopyCategory(const LLUUID& src_id, const LLUUID& ds llwarns << "folder not found for src " << src_id.asString() << llendl; return; } + llinfos << "starting, src_id " << src_id << " name " << src_cat->getName() << " dst_id " << dst_id << llendl; LLUUID parent_id = dst_id; if(parent_id.isNull()) { @@ -1111,6 +1118,7 @@ void LLAppearanceMgr::shallowCopyCategoryContents(const LLUUID& src_id, const LL LLInventoryModel::cat_array_t* cats; LLInventoryModel::item_array_t* items; gInventory.getDirectDescendentsOf(src_id, cats, items); + llinfos << "copying " << items->count() << " items" << llendl; for (LLInventoryModel::item_array_t::const_iterator iter = items->begin(); iter != items->end(); ++iter) @@ -1150,6 +1158,7 @@ void LLAppearanceMgr::shallowCopyCategoryContents(const LLUUID& src_id, const LL case LLAssetType::AT_BODYPART: case LLAssetType::AT_GESTURE: { + llinfos << "copying inventory item " << item->getName() << llendl; copy_inventory_item(gAgent.getID(), item->getPermissions().getOwner(), item->getUUID(), @@ -2150,6 +2159,8 @@ bool LLAppearanceMgr::updateBaseOutfit() } setOutfitLocked(true); + gAgentWearables.notifyLoadingStarted(); + const LLUUID base_outfit_id = getBaseOutfitUUID(); if (base_outfit_id.isNull()) return false; @@ -2309,6 +2320,7 @@ public: } LLAppearanceMgr::getInstance()->updateIsDirty(); + gAgentWearables.notifyLoadingFinished(); // New outfit is saved. LLAppearanceMgr::getInstance()->updatePanelOutfitName(""); } @@ -2324,6 +2336,8 @@ LLUUID LLAppearanceMgr::makeNewOutfitLinks(const std::string& new_folder_name, b { if (!isAgentAvatarValid()) return LLUUID::null; + gAgentWearables.notifyLoadingStarted(); + // First, make a folder in the My Outfits directory. const LLUUID parent_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_MY_OUTFITS); LLUUID folder_id = gInventory.createNewCategory( @@ -2530,7 +2544,9 @@ void LLAppearanceMgr::registerAttachment(const LLUUID& item_id) if (mAttachmentInvLinkEnabled) { - LLAppearanceMgr::addCOFItemLink(item_id, false); // Add COF link for item. + // we have to pass do_update = true to call LLAppearanceMgr::updateAppearanceFromCOF. + // it will trigger gAgentWariables.notifyLoadingFinished() + LLAppearanceMgr::addCOFItemLink(item_id, true); // Add COF link for item. } else { @@ -2560,7 +2576,7 @@ void LLAppearanceMgr::linkRegisteredAttachments() ++it) { LLUUID item_id = *it; - addCOFItemLink(item_id, false); + addCOFItemLink(item_id, true); } mRegisteredAttachments.clear(); } diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h index 8ded32a53d..ab4ff1bcfc 100644 --- a/indra/newview/llappearancemgr.h +++ b/indra/newview/llappearancemgr.h @@ -319,6 +319,9 @@ public: } virtual void done() { + llinfos << this << " done with incomplete " << mIncomplete.size() + << " complete " << mComplete.size() << " calling callable" << llendl; + gInventory.removeObserver(this); doOnIdleOneTime(mCallable); delete this; @@ -361,6 +364,7 @@ public: return; } + llinfos << "stage1 got " << item_array.count() << " items, passing to stage2 " << llendl; uuid_vec_t ids; for(S32 i = 0; i < count; ++i) { diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp index 2dafe295fe..5bc3b3ac8d 100644 --- a/indra/newview/llavataractions.cpp +++ b/indra/newview/llavataractions.cpp @@ -550,11 +550,10 @@ namespace action_give_inventory // iterate through avatars for(S32 i = 0; i < count; ++i) { - const std::string& avatar_name = LLShareInfo::instance().mAvatarNames[i]; const LLUUID& avatar_uuid = LLShareInfo::instance().mAvatarUuids[i]; - // Start up IM before give the item - const LLUUID session_id = gIMMgr->addSession(avatar_name, IM_NOTHING_SPECIAL, avatar_uuid); + // We souldn't open IM session, just calculate session ID for logging purpose. See EXT-6710 + const LLUUID session_id = gIMMgr->computeSessionID(IM_NOTHING_SPECIAL, avatar_uuid); uuid_set_t::const_iterator it = inventory_selected_uuids.begin(); const uuid_set_t::const_iterator it_end = inventory_selected_uuids.end(); diff --git a/indra/newview/lldrawable.cpp b/indra/newview/lldrawable.cpp index 38eda5bd2e..3f9d3fdbef 100644 --- a/indra/newview/lldrawable.cpp +++ b/indra/newview/lldrawable.cpp @@ -1366,10 +1366,11 @@ void LLSpatialBridge::move(LLDrawable *drawablep, LLSpatialGroup *curp, BOOL imm BOOL LLSpatialBridge::updateMove() { - llassert(mDrawable); - llassert(mDrawable->getRegion()); + llassert_always(mDrawable); + llassert_always(mDrawable->mVObjp); + llassert_always(mDrawable->getRegion()); LLSpatialPartition* part = mDrawable->getRegion()->getSpatialPartition(mPartitionType); - llassert(part); + llassert_always(part); mOctree->balance(); if (part) diff --git a/indra/newview/llfeaturemanager.cpp b/indra/newview/llfeaturemanager.cpp index 4fdb010162..f32fcd6b7f 100644 --- a/indra/newview/llfeaturemanager.cpp +++ b/indra/newview/llfeaturemanager.cpp @@ -496,11 +496,11 @@ private: void fetch_table(std::string table) { - const std::string base = "http://viewer-settings.s3.amazonaws.com/"; + const std::string base = gSavedSettings.getString("FeatureManagerHTTPTable"); const std::string filename = llformat(table.c_str(), LLVersionInfo::getVersion().c_str()); - const std::string url = base + filename; + const std::string url = base + "/" + filename; const std::string path = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, filename); diff --git a/indra/newview/llfloaterbuycurrencyhtml.cpp b/indra/newview/llfloaterbuycurrencyhtml.cpp index 7f41a64064..d45df37092 100644 --- a/indra/newview/llfloaterbuycurrencyhtml.cpp +++ b/indra/newview/llfloaterbuycurrencyhtml.cpp @@ -91,7 +91,7 @@ void LLFloaterBuyCurrencyHTML::navigateToFinalURL() llinfos << "Buy currency HTML prased URL is " << buy_currency_url << llendl; // kick off the navigation - mBrowser->navigateTo( buy_currency_url ); + mBrowser->navigateTo( buy_currency_url, "text/html" ); } //////////////////////////////////////////////////////////////////////////////// diff --git a/indra/newview/llfloaterbuyland.cpp b/indra/newview/llfloaterbuyland.cpp index 7ca7ace0fc..9379b3f5a8 100644 --- a/indra/newview/llfloaterbuyland.cpp +++ b/indra/newview/llfloaterbuyland.cpp @@ -668,6 +668,7 @@ void LLFloaterBuyLandUI::updateWebSiteInfo() keywordArgs.appendString( "secureSessionId", gAgent.getSecureSessionID().asString()); + keywordArgs.appendString("language", LLUI::getLanguage()); keywordArgs.appendInt("billableArea", mPreflightAskBillableArea); keywordArgs.appendInt("currencyBuy", mPreflightAskCurrencyBuy); diff --git a/indra/newview/llgesturemgr.cpp b/indra/newview/llgesturemgr.cpp index 0996d09e25..6ffd534a53 100644 --- a/indra/newview/llgesturemgr.cpp +++ b/indra/newview/llgesturemgr.cpp @@ -139,6 +139,8 @@ void LLGestureMgr::activateGesture(const LLUUID& item_id) { LLViewerInventoryItem* item = gInventory.getItem(item_id); if (!item) return; + if (item->getType() != LLAssetType::AT_GESTURE) + return; LLUUID asset_id = item->getAssetUUID(); diff --git a/indra/newview/llgiveinventory.cpp b/indra/newview/llgiveinventory.cpp index aebf1b4c26..6470e9d6fe 100644 --- a/indra/newview/llgiveinventory.cpp +++ b/indra/newview/llgiveinventory.cpp @@ -300,15 +300,15 @@ void LLGiveInventory::logInventoryOffer(const LLUUID& to_agent, const LLUUID &im // compute id of possible IM session with agent that has "to_agent" id LLUUID session_id = LLIMMgr::computeSessionID(IM_NOTHING_SPECIAL, to_agent); // If this item was given by drag-and-drop into an IM panel, log this action in the IM panel chat. + LLSD args; + args["user_id"] = to_agent; if (im_session_id.notNull()) { - LLSD args; gIMMgr->addSystemMessage(im_session_id, "inventory_item_offered", args); } // If this item was given by drag-and-drop on avatar while IM panel was open, log this action in the IM panel chat. else if (LLIMModel::getInstance()->findIMSession(session_id)) { - LLSD args; gIMMgr->addSystemMessage(session_id, "inventory_item_offered", args); } // If this item was given by drag-and-drop on avatar while IM panel wasn't open, log this action to IM history. diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 2c1983b6d2..ddfcd68e38 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -2311,12 +2311,20 @@ void LLIMMgr::addSystemMessage(const LLUUID& session_id, const std::string& mess } else // going to IM session { + message = LLTrans::getString(message_name + "-im"); + message.setArgs(args); if (hasSession(session_id)) { - message = LLTrans::getString(message_name + "-im"); - message.setArgs(args); gIMMgr->addMessage(session_id, LLUUID::null, SYSTEM_FROM, message.getString()); } + // log message to file + else + { + std::string session_name; + // since we select user to share item with - his name is already in cache + gCacheName->getFullName(args["user_id"], session_name); + LLIMModel::instance().logToFile(session_name, SYSTEM_FROM, LLUUID::null, message.getString()); + } } } diff --git a/indra/newview/llinventoryitemslist.cpp b/indra/newview/llinventoryitemslist.cpp index 14de5442d6..fbb3774917 100644 --- a/indra/newview/llinventoryitemslist.cpp +++ b/indra/newview/llinventoryitemslist.cpp @@ -3,8 +3,6 @@ * @brief A list of inventory items represented by LLFlatListView. * * Class LLInventoryItemsList implements a flat list of inventory items. - * Class LLPanelInventoryListItem displays inventory item as an element - * of LLInventoryItemsList. * * $LicenseInfo:firstyear=2010&license=viewergpl$ * @@ -40,341 +38,12 @@ // llcommon #include "llcommonutils.h" -// llui -#include "lliconctrl.h" -#include "lltextutil.h" +#include "lltrans.h" #include "llcallbacklist.h" -#include "llinventoryfunctions.h" +#include "llinventorylistitem.h" #include "llinventorymodel.h" -#include "lltrans.h" - -//////////////////////////////////////////////////////////////////////////////// -//////////////////////////////////////////////////////////////////////////////// -//////////////////////////////////////////////////////////////////////////////// - -static const S32 WIDGET_SPACING = 3; - -LLPanelInventoryListItemBase* LLPanelInventoryListItemBase::create(LLViewerInventoryItem* item) -{ - LLPanelInventoryListItemBase* list_item = NULL; - if (item) - { - list_item = new LLPanelInventoryListItemBase(item); - list_item->init(); - } - return list_item; -} - -void LLPanelInventoryListItemBase::draw() -{ - if (getNeedsRefresh()) - { - if (mItem) - { - updateItem(mItem->getName()); - } - setNeedsRefresh(false); - } - LLPanel::draw(); -} - -// virtual -void LLPanelInventoryListItemBase::updateItem(const std::string& name, - const LLStyle::Params& input_params) -{ - setIconImage(mIconImage); - setTitle(name, mHighlightedText, input_params); -} - -void LLPanelInventoryListItemBase::addWidgetToLeftSide(const std::string& name, bool show_widget/* = true*/) -{ - LLUICtrl* ctrl = findChild<LLUICtrl>(name); - if(ctrl) - { - addWidgetToLeftSide(ctrl, show_widget); - } -} - -void LLPanelInventoryListItemBase::addWidgetToLeftSide(LLUICtrl* ctrl, bool show_widget/* = true*/) -{ - mLeftSideWidgets.push_back(ctrl); - setShowWidget(ctrl, show_widget); -} - -void LLPanelInventoryListItemBase::addWidgetToRightSide(const std::string& name, bool show_widget/* = true*/) -{ - LLUICtrl* ctrl = findChild<LLUICtrl>(name); - if(ctrl) - { - addWidgetToRightSide(ctrl, show_widget); - } -} - -void LLPanelInventoryListItemBase::addWidgetToRightSide(LLUICtrl* ctrl, bool show_widget/* = true*/) -{ - mRightSideWidgets.push_back(ctrl); - setShowWidget(ctrl, show_widget); -} - -void LLPanelInventoryListItemBase::setShowWidget(const std::string& name, bool show) -{ - LLUICtrl* widget = findChild<LLUICtrl>(name); - if(widget) - { - setShowWidget(widget, show); - } -} - -void LLPanelInventoryListItemBase::setShowWidget(LLUICtrl* ctrl, bool show) -{ - // Enable state determines whether widget may become visible in setWidgetsVisible() - ctrl->setEnabled(show); -} - -BOOL LLPanelInventoryListItemBase::postBuild() -{ - setIconCtrl(getChild<LLIconCtrl>("item_icon")); - setTitleCtrl(getChild<LLTextBox>("item_name")); - - if (mItem) - { - mIconImage = LLInventoryIcon::getIcon(mItem->getType(), mItem->getInventoryType(), mItem->getFlags(), FALSE); - updateItem(mItem->getName()); - } - - setNeedsRefresh(true); - - setWidgetsVisible(false); - reshapeWidgets(); - - return TRUE; -} - -void LLPanelInventoryListItemBase::setValue(const LLSD& value) -{ - if (!value.isMap()) return; - if (!value.has("selected")) return; - childSetVisible("selected_icon", value["selected"]); -} - -void LLPanelInventoryListItemBase::onMouseEnter(S32 x, S32 y, MASK mask) -{ - childSetVisible("hovered_icon", true); - LLPanel::onMouseEnter(x, y, mask); -} - -void LLPanelInventoryListItemBase::onMouseLeave(S32 x, S32 y, MASK mask) -{ - childSetVisible("hovered_icon", false); - LLPanel::onMouseLeave(x, y, mask); -} - -const std::string& LLPanelInventoryListItemBase::getItemName() const -{ - if (!mItem) - { - return LLStringUtil::null; - } - return mItem->getName(); -} - -LLAssetType::EType LLPanelInventoryListItemBase::getType() const -{ - if (!mItem) - { - return LLAssetType::AT_NONE; - } - return mItem->getType(); -} - -LLWearableType::EType LLPanelInventoryListItemBase::getWearableType() const -{ - if (!mItem) - { - return LLWearableType::WT_NONE; - } - return mItem->getWearableType(); -} - -const std::string& LLPanelInventoryListItemBase::getDescription() const -{ - if (!mItem) - { - return LLStringUtil::null; - } - return mItem->getDescription(); -} - -S32 LLPanelInventoryListItemBase::notify(const LLSD& info) -{ - S32 rv = 0; - if(info.has("match_filter")) - { - mHighlightedText = info["match_filter"].asString(); - - std::string test(mTitleCtrl->getText()); - LLStringUtil::toUpper(test); - - if(mHighlightedText.empty() || std::string::npos != test.find(mHighlightedText)) - { - rv = 0; // substring is found - } - else - { - rv = -1; - } - - setNeedsRefresh(true); - } - else - { - rv = LLPanel::notify(info); - } - return rv; -} - -LLPanelInventoryListItemBase::LLPanelInventoryListItemBase(LLViewerInventoryItem* item) -: LLPanel() -, mItem(item) -, mIconCtrl(NULL) -, mTitleCtrl(NULL) -, mWidgetSpacing(WIDGET_SPACING) -, mLeftWidgetsWidth(0) -, mRightWidgetsWidth(0) -, mNeedsRefresh(false) -{ -} - -void LLPanelInventoryListItemBase::init() -{ - LLUICtrlFactory::getInstance()->buildPanel(this, "panel_inventory_item.xml"); -} - -class WidgetVisibilityChanger -{ -public: - WidgetVisibilityChanger(bool visible) : mVisible(visible){} - void operator()(LLUICtrl* widget) - { - // Disabled widgets never become visible. see LLPanelInventoryListItemBase::setShowWidget() - widget->setVisible(mVisible && widget->getEnabled()); - } -private: - bool mVisible; -}; - -void LLPanelInventoryListItemBase::setWidgetsVisible(bool visible) -{ - std::for_each(mLeftSideWidgets.begin(), mLeftSideWidgets.end(), WidgetVisibilityChanger(visible)); - std::for_each(mRightSideWidgets.begin(), mRightSideWidgets.end(), WidgetVisibilityChanger(visible)); -} - -void LLPanelInventoryListItemBase::reshapeWidgets() -{ - // disabled reshape left for now to reserve space for 'delete' button in LLPanelClothingListItem - /*reshapeLeftWidgets();*/ - reshapeRightWidgets(); - reshapeMiddleWidgets(); -} - -void LLPanelInventoryListItemBase::setIconImage(const LLUIImagePtr& image) -{ - if(image) - { - mIconImage = image; - mIconCtrl->setImage(mIconImage); - } -} - -void LLPanelInventoryListItemBase::setTitle(const std::string& title, - const std::string& highlit_text, - const LLStyle::Params& input_params) -{ - mTitleCtrl->setToolTip(title); - - LLTextUtil::textboxSetHighlightedVal( - mTitleCtrl, - input_params, - title, - highlit_text); -} - -BOOL LLPanelInventoryListItemBase::handleToolTip( S32 x, S32 y, MASK mask) -{ - LLRect text_box_rect = mTitleCtrl->getRect(); - if (text_box_rect.pointInRect(x, y) && - mTitleCtrl->getTextPixelWidth() <= text_box_rect.getWidth()) - { - return FALSE; - } - return LLPanel::handleToolTip(x, y, mask); -} - -void LLPanelInventoryListItemBase::reshapeLeftWidgets() -{ - S32 widget_left = 0; - mLeftWidgetsWidth = 0; - - widget_array_t::const_iterator it = mLeftSideWidgets.begin(); - const widget_array_t::const_iterator it_end = mLeftSideWidgets.end(); - for( ; it_end != it; ++it) - { - LLUICtrl* widget = *it; - if(!widget->getVisible()) - { - continue; - } - LLRect widget_rect(widget->getRect()); - widget_rect.setLeftTopAndSize(widget_left, widget_rect.mTop, widget_rect.getWidth(), widget_rect.getHeight()); - widget->setShape(widget_rect); - - widget_left += widget_rect.getWidth() + getWidgetSpacing(); - mLeftWidgetsWidth = widget_rect.mRight; - } -} - -void LLPanelInventoryListItemBase::reshapeRightWidgets() -{ - S32 widget_right = getLocalRect().getWidth(); - S32 widget_left = widget_right; - - widget_array_t::const_reverse_iterator it = mRightSideWidgets.rbegin(); - const widget_array_t::const_reverse_iterator it_end = mRightSideWidgets.rend(); - for( ; it_end != it; ++it) - { - LLUICtrl* widget = *it; - if(!widget->getVisible()) - { - continue; - } - LLRect widget_rect(widget->getRect()); - widget_left = widget_right - widget_rect.getWidth(); - widget_rect.setLeftTopAndSize(widget_left, widget_rect.mTop, widget_rect.getWidth(), widget_rect.getHeight()); - widget->setShape(widget_rect); - - widget_right = widget_left - getWidgetSpacing(); - } - mRightWidgetsWidth = getLocalRect().getWidth() - widget_left; -} - -void LLPanelInventoryListItemBase::reshapeMiddleWidgets() -{ - LLRect icon_rect(mIconCtrl->getRect()); - icon_rect.setLeftTopAndSize(mLeftWidgetsWidth + getWidgetSpacing(), icon_rect.mTop, - icon_rect.getWidth(), icon_rect.getHeight()); - mIconCtrl->setShape(icon_rect); - - S32 name_left = icon_rect.mRight + getWidgetSpacing(); - S32 name_right = getLocalRect().getWidth() - mRightWidgetsWidth - getWidgetSpacing(); - LLRect name_rect(mTitleCtrl->getRect()); - name_rect.set(name_left, name_rect.mTop, name_right, name_rect.mBottom); - mTitleCtrl->setShape(name_rect); -} - -//////////////////////////////////////////////////////////////////////////////// -//////////////////////////////////////////////////////////////////////////////// -//////////////////////////////////////////////////////////////////////////////// +#include "llviewerinventory.h" LLInventoryItemsList::Params::Params() {} diff --git a/indra/newview/llinventoryitemslist.h b/indra/newview/llinventoryitemslist.h index 5dc0bfe3de..71c7b6a675 100644 --- a/indra/newview/llinventoryitemslist.h +++ b/indra/newview/llinventoryitemslist.h @@ -3,8 +3,6 @@ * @brief A list of inventory items represented by LLFlatListView. * * Class LLInventoryItemsList implements a flat list of inventory items. - * Class LLPanelInventoryListItem displays inventory item as an element - * of LLInventoryItemsList. * * $LicenseInfo:firstyear=2010&license=viewergpl$ * @@ -38,189 +36,11 @@ #include "lldarray.h" -#include "llpanel.h" - // newview #include "llflatlistview.h" -#include "llviewerinventory.h" -class LLIconCtrl; -class LLTextBox; class LLViewerInventoryItem; -/** - * @class LLPanelInventoryListItemBase - * - * Base class for Inventory flat list item. Panel consists of inventory icon - * and inventory item name. - * This class is able to display widgets(buttons) on left(before icon) and right(after text-box) sides - * of panel. - * - * How to use (see LLPanelClothingListItem for example): - * - implement init() to build panel from xml - * - create new xml file, fill it with widgets you want to dynamically show/hide/reshape on left/right sides - * - redefine postBuild()(call base implementation) and add needed widgets to needed sides, - * - */ -class LLPanelInventoryListItemBase : public LLPanel -{ -public: - static LLPanelInventoryListItemBase* create(LLViewerInventoryItem* item); - - virtual void draw(); - - /** - * Let item know it need to be refreshed in next draw() - */ - void setNeedsRefresh(bool needs_refresh){ mNeedsRefresh = needs_refresh; } - - bool getNeedsRefresh(){ return mNeedsRefresh; } - - /** - * Add widget to left side - */ - void addWidgetToLeftSide(const std::string& name, bool show_widget = true); - void addWidgetToLeftSide(LLUICtrl* ctrl, bool show_widget = true); - - /** - * Add widget to right side, widget is supposed to be child of calling panel - */ - void addWidgetToRightSide(const std::string& name, bool show_widget = true); - void addWidgetToRightSide(LLUICtrl* ctrl, bool show_widget = true); - - /** - * Mark widgets as visible. Only visible widgets take part in reshaping children - */ - void setShowWidget(const std::string& name, bool show); - void setShowWidget(LLUICtrl* ctrl, bool show); - - /** - * Set spacing between widgets during reshape - */ - void setWidgetSpacing(S32 spacing) { mWidgetSpacing = spacing; } - - S32 getWidgetSpacing() { return mWidgetSpacing; } - - /** - * Inheritors need to call base implementation of postBuild() - */ - /*virtual*/ BOOL postBuild(); - - /** - * Handles item selection - */ - /*virtual*/ void setValue(const LLSD& value); - - /** - * Handles filter request - */ - /*virtual*/ S32 notify(const LLSD& info); - - /* Highlights item */ - /*virtual*/ void onMouseEnter(S32 x, S32 y, MASK mask); - /* Removes item highlight */ - /*virtual*/ void onMouseLeave(S32 x, S32 y, MASK mask); - - /** Get the name of a corresponding inventory item */ - const std::string& getItemName() const; - - /** Get the asset type of a corresponding inventory item */ - LLAssetType::EType getType() const; - - /** Get the wearable type of a corresponding inventory item */ - LLWearableType::EType getWearableType() const; - - /** Get the description of a corresponding inventory item */ - const std::string& getDescription() const; - - /** Get the associated inventory item */ - LLViewerInventoryItem* getItem() const { return mItem; } - - virtual ~LLPanelInventoryListItemBase(){} - -protected: - - LLPanelInventoryListItemBase(LLViewerInventoryItem* item); - - typedef std::vector<LLUICtrl*> widget_array_t; - - /** - * Use it from a factory function to build panel, do not build panel in constructor - */ - virtual void init(); - - /** - * Called after inventory item was updated, update panel widgets to reflect inventory changes. - */ - virtual void updateItem(const std::string& name, - const LLStyle::Params& input_params = LLStyle::Params()); - - /** setter for mIconCtrl */ - void setIconCtrl(LLIconCtrl* icon) { mIconCtrl = icon; } - /** setter for MTitleCtrl */ - void setTitleCtrl(LLTextBox* tb) { mTitleCtrl = tb; } - - void setLeftWidgetsWidth(S32 width) { mLeftWidgetsWidth = width; } - void setRightWidgetsWidth(S32 width) { mRightWidgetsWidth = width; } - - /** - * Set all widgets from both side visible/invisible. Only enabled widgets - * (see setShowWidget()) can become visible - */ - virtual void setWidgetsVisible(bool visible); - - /** - * Reshape all child widgets - icon, text-box and side widgets - */ - virtual void reshapeWidgets(); - - /** set wearable type icon image */ - void setIconImage(const LLUIImagePtr& image); - - /** Set item title - inventory item name usually */ - virtual void setTitle(const std::string& title, - const std::string& highlit_text, - const LLStyle::Params& input_params = LLStyle::Params()); - - /** - * Show tool tip if item name text size > panel size - */ - virtual BOOL handleToolTip( S32 x, S32 y, MASK mask); - - LLViewerInventoryItem* mItem; - -private: - - /** reshape left side widgets - * Deprecated for now. Disabled reshape left for now to reserve space for 'delete' - * button in LLPanelClothingListItem according to Neal's comment (https://codereview.productengine.com/secondlife/r/325/) - */ - void reshapeLeftWidgets(); - - /** reshape right side widgets */ - void reshapeRightWidgets(); - - /** reshape remaining widgets */ - void reshapeMiddleWidgets(); - - - LLIconCtrl* mIconCtrl; - LLTextBox* mTitleCtrl; - - LLUIImagePtr mIconImage; - std::string mHighlightedText; - - widget_array_t mLeftSideWidgets; - widget_array_t mRightSideWidgets; - S32 mWidgetSpacing; - - S32 mLeftWidgetsWidth; - S32 mRightWidgetsWidth; - bool mNeedsRefresh; -}; - -////////////////////////////////////////////////////////////////////////// - class LLInventoryItemsList : public LLFlatListViewEx { public: diff --git a/indra/newview/llinventorylistitem.cpp b/indra/newview/llinventorylistitem.cpp new file mode 100644 index 0000000000..c487aa10a7 --- /dev/null +++ b/indra/newview/llinventorylistitem.cpp @@ -0,0 +1,400 @@ +/** + * @file llinventorylistitem.cpp + * @brief Inventory list item panel. + * + * Class LLPanelInventoryListItemBase displays inventory item as an element + * of LLInventoryItemsList. + * + * $LicenseInfo:firstyear=2010&license=viewergpl$ + * + * Copyright (c) 2010, 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$ + */ + +#include "llviewerprecompiledheaders.h" + +#include "llinventorylistitem.h" + +// llui +#include "lliconctrl.h" +#include "lltextbox.h" +#include "lltextutil.h" + +// newview +#include "llinventorymodel.h" +#include "llviewerinventory.h" + +static LLWidgetNameRegistry::StaticRegistrar sRegisterPanelInventoryListItemBaseParams(&typeid(LLPanelInventoryListItemBase::Params), "inventory_list_item"); + +static const S32 WIDGET_SPACING = 3; + +LLPanelInventoryListItemBase::Params::Params() +: default_style("default_style"), + worn_style("worn_style") +{}; + +LLPanelInventoryListItemBase* LLPanelInventoryListItemBase::create(LLViewerInventoryItem* item) +{ + LLPanelInventoryListItemBase* list_item = NULL; + if (item) + { + list_item = new LLPanelInventoryListItemBase(item); + list_item->init(); + } + return list_item; +} + +void LLPanelInventoryListItemBase::draw() +{ + if (getNeedsRefresh()) + { + LLViewerInventoryItem* inv_item = getItem(); + if (inv_item) + { + updateItem(inv_item->getName()); + } + setNeedsRefresh(false); + } + LLPanel::draw(); +} + +// virtual +void LLPanelInventoryListItemBase::updateItem(const std::string& name, + EItemState item_state) +{ + setIconImage(mIconImage); + setTitle(name, mHighlightedText, item_state); +} + +void LLPanelInventoryListItemBase::addWidgetToLeftSide(const std::string& name, bool show_widget/* = true*/) +{ + LLUICtrl* ctrl = findChild<LLUICtrl>(name); + if(ctrl) + { + addWidgetToLeftSide(ctrl, show_widget); + } +} + +void LLPanelInventoryListItemBase::addWidgetToLeftSide(LLUICtrl* ctrl, bool show_widget/* = true*/) +{ + mLeftSideWidgets.push_back(ctrl); + setShowWidget(ctrl, show_widget); +} + +void LLPanelInventoryListItemBase::addWidgetToRightSide(const std::string& name, bool show_widget/* = true*/) +{ + LLUICtrl* ctrl = findChild<LLUICtrl>(name); + if(ctrl) + { + addWidgetToRightSide(ctrl, show_widget); + } +} + +void LLPanelInventoryListItemBase::addWidgetToRightSide(LLUICtrl* ctrl, bool show_widget/* = true*/) +{ + mRightSideWidgets.push_back(ctrl); + setShowWidget(ctrl, show_widget); +} + +void LLPanelInventoryListItemBase::setShowWidget(const std::string& name, bool show) +{ + LLUICtrl* widget = findChild<LLUICtrl>(name); + if(widget) + { + setShowWidget(widget, show); + } +} + +void LLPanelInventoryListItemBase::setShowWidget(LLUICtrl* ctrl, bool show) +{ + // Enable state determines whether widget may become visible in setWidgetsVisible() + ctrl->setEnabled(show); +} + +BOOL LLPanelInventoryListItemBase::postBuild() +{ + setIconCtrl(getChild<LLIconCtrl>("item_icon")); + setTitleCtrl(getChild<LLTextBox>("item_name")); + + LLViewerInventoryItem* inv_item = getItem(); + if (inv_item) + { + mIconImage = LLInventoryIcon::getIcon(inv_item->getType(), inv_item->getInventoryType(), inv_item->getFlags(), FALSE); + updateItem(inv_item->getName()); + } + + setNeedsRefresh(true); + + setWidgetsVisible(false); + reshapeWidgets(); + + return TRUE; +} + +void LLPanelInventoryListItemBase::setValue(const LLSD& value) +{ + if (!value.isMap()) return; + if (!value.has("selected")) return; + childSetVisible("selected_icon", value["selected"]); +} + +void LLPanelInventoryListItemBase::onMouseEnter(S32 x, S32 y, MASK mask) +{ + childSetVisible("hovered_icon", true); + LLPanel::onMouseEnter(x, y, mask); +} + +void LLPanelInventoryListItemBase::onMouseLeave(S32 x, S32 y, MASK mask) +{ + childSetVisible("hovered_icon", false); + LLPanel::onMouseLeave(x, y, mask); +} + +const std::string& LLPanelInventoryListItemBase::getItemName() const +{ + LLViewerInventoryItem* inv_item = getItem(); + if (NULL == inv_item) + { + return LLStringUtil::null; + } + return inv_item->getName(); +} + +LLAssetType::EType LLPanelInventoryListItemBase::getType() const +{ + LLViewerInventoryItem* inv_item = getItem(); + if (NULL == inv_item) + { + return LLAssetType::AT_NONE; + } + return inv_item->getType(); +} + +LLWearableType::EType LLPanelInventoryListItemBase::getWearableType() const +{ + LLViewerInventoryItem* inv_item = getItem(); + if (NULL == inv_item) + { + return LLWearableType::WT_NONE; + } + return inv_item->getWearableType(); +} + +const std::string& LLPanelInventoryListItemBase::getDescription() const +{ + LLViewerInventoryItem* inv_item = getItem(); + if (NULL == inv_item) + { + return LLStringUtil::null; + } + return inv_item->getDescription(); +} + +LLViewerInventoryItem* LLPanelInventoryListItemBase::getItem() const +{ + return gInventory.getItem(mInventoryItemUUID); +} + +S32 LLPanelInventoryListItemBase::notify(const LLSD& info) +{ + S32 rv = 0; + if(info.has("match_filter")) + { + mHighlightedText = info["match_filter"].asString(); + + std::string test(mTitleCtrl->getText()); + LLStringUtil::toUpper(test); + + if(mHighlightedText.empty() || std::string::npos != test.find(mHighlightedText)) + { + rv = 0; // substring is found + } + else + { + rv = -1; + } + + setNeedsRefresh(true); + } + else + { + rv = LLPanel::notify(info); + } + return rv; +} + +LLPanelInventoryListItemBase::LLPanelInventoryListItemBase(LLViewerInventoryItem* item) +: LLPanel() +, mInventoryItemUUID(item ? item->getUUID() : LLUUID::null) +, mIconCtrl(NULL) +, mTitleCtrl(NULL) +, mWidgetSpacing(WIDGET_SPACING) +, mLeftWidgetsWidth(0) +, mRightWidgetsWidth(0) +, mNeedsRefresh(false) +{ +} + +void LLPanelInventoryListItemBase::init() +{ + LLUICtrlFactory::getInstance()->buildPanel(this, "panel_inventory_item.xml"); +} + +class WidgetVisibilityChanger +{ +public: + WidgetVisibilityChanger(bool visible) : mVisible(visible){} + void operator()(LLUICtrl* widget) + { + // Disabled widgets never become visible. see LLPanelInventoryListItemBase::setShowWidget() + widget->setVisible(mVisible && widget->getEnabled()); + } +private: + bool mVisible; +}; + +void LLPanelInventoryListItemBase::setWidgetsVisible(bool visible) +{ + std::for_each(mLeftSideWidgets.begin(), mLeftSideWidgets.end(), WidgetVisibilityChanger(visible)); + std::for_each(mRightSideWidgets.begin(), mRightSideWidgets.end(), WidgetVisibilityChanger(visible)); +} + +void LLPanelInventoryListItemBase::reshapeWidgets() +{ + // disabled reshape left for now to reserve space for 'delete' button in LLPanelClothingListItem + /*reshapeLeftWidgets();*/ + reshapeRightWidgets(); + reshapeMiddleWidgets(); +} + +void LLPanelInventoryListItemBase::setIconImage(const LLUIImagePtr& image) +{ + if(image) + { + mIconImage = image; + mIconCtrl->setImage(mIconImage); + } +} + +void LLPanelInventoryListItemBase::setTitle(const std::string& title, + const std::string& highlit_text, + EItemState item_state) +{ + mTitleCtrl->setToolTip(title); + + LLStyle::Params style_params; + + const LLPanelInventoryListItemBase::Params& params = LLUICtrlFactory::getDefaultParams<LLPanelInventoryListItemBase>(); + + switch(item_state) + { + case IS_DEFAULT: + style_params = params.default_style(); + break; + case IS_WORN: + style_params = params.worn_style(); + break; + default:; + } + + LLTextUtil::textboxSetHighlightedVal( + mTitleCtrl, + style_params, + title, + highlit_text); +} + +BOOL LLPanelInventoryListItemBase::handleToolTip( S32 x, S32 y, MASK mask) +{ + LLRect text_box_rect = mTitleCtrl->getRect(); + if (text_box_rect.pointInRect(x, y) && + mTitleCtrl->getTextPixelWidth() <= text_box_rect.getWidth()) + { + return FALSE; + } + return LLPanel::handleToolTip(x, y, mask); +} + +void LLPanelInventoryListItemBase::reshapeLeftWidgets() +{ + S32 widget_left = 0; + mLeftWidgetsWidth = 0; + + widget_array_t::const_iterator it = mLeftSideWidgets.begin(); + const widget_array_t::const_iterator it_end = mLeftSideWidgets.end(); + for( ; it_end != it; ++it) + { + LLUICtrl* widget = *it; + if(!widget->getVisible()) + { + continue; + } + LLRect widget_rect(widget->getRect()); + widget_rect.setLeftTopAndSize(widget_left, widget_rect.mTop, widget_rect.getWidth(), widget_rect.getHeight()); + widget->setShape(widget_rect); + + widget_left += widget_rect.getWidth() + getWidgetSpacing(); + mLeftWidgetsWidth = widget_rect.mRight; + } +} + +void LLPanelInventoryListItemBase::reshapeRightWidgets() +{ + S32 widget_right = getLocalRect().getWidth(); + S32 widget_left = widget_right; + + widget_array_t::const_reverse_iterator it = mRightSideWidgets.rbegin(); + const widget_array_t::const_reverse_iterator it_end = mRightSideWidgets.rend(); + for( ; it_end != it; ++it) + { + LLUICtrl* widget = *it; + if(!widget->getVisible()) + { + continue; + } + LLRect widget_rect(widget->getRect()); + widget_left = widget_right - widget_rect.getWidth(); + widget_rect.setLeftTopAndSize(widget_left, widget_rect.mTop, widget_rect.getWidth(), widget_rect.getHeight()); + widget->setShape(widget_rect); + + widget_right = widget_left - getWidgetSpacing(); + } + mRightWidgetsWidth = getLocalRect().getWidth() - widget_left; +} + +void LLPanelInventoryListItemBase::reshapeMiddleWidgets() +{ + LLRect icon_rect(mIconCtrl->getRect()); + icon_rect.setLeftTopAndSize(mLeftWidgetsWidth + getWidgetSpacing(), icon_rect.mTop, + icon_rect.getWidth(), icon_rect.getHeight()); + mIconCtrl->setShape(icon_rect); + + S32 name_left = icon_rect.mRight + getWidgetSpacing(); + S32 name_right = getLocalRect().getWidth() - mRightWidgetsWidth - getWidgetSpacing(); + LLRect name_rect(mTitleCtrl->getRect()); + name_rect.set(name_left, name_rect.mTop, name_right, name_rect.mBottom); + mTitleCtrl->setShape(name_rect); +} + +// EOF diff --git a/indra/newview/llinventorylistitem.h b/indra/newview/llinventorylistitem.h new file mode 100644 index 0000000000..f29d92d51c --- /dev/null +++ b/indra/newview/llinventorylistitem.h @@ -0,0 +1,235 @@ +/** + * @file llinventorylistitem.h + * @brief Inventory list item panel. + * + * Class LLPanelInventoryListItemBase displays inventory item as an element + * of LLInventoryItemsList. + * + * $LicenseInfo:firstyear=2010&license=viewergpl$ + * + * Copyright (c) 2010, 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_LLINVENTORYLISTITEM_H +#define LL_LLINVENTORYLISTITEM_H + +// llcommon +#include "llassettype.h" + +// llui +#include "llpanel.h" +#include "llstyle.h" + +// newview +#include "llwearabletype.h" + +class LLIconCtrl; +class LLTextBox; +class LLViewerInventoryItem; + +/** + * @class LLPanelInventoryListItemBase + * + * Base class for Inventory flat list item. Panel consists of inventory icon + * and inventory item name. + * This class is able to display widgets(buttons) on left(before icon) and right(after text-box) sides + * of panel. + * + * How to use (see LLPanelClothingListItem for example): + * - implement init() to build panel from xml + * - create new xml file, fill it with widgets you want to dynamically show/hide/reshape on left/right sides + * - redefine postBuild()(call base implementation) and add needed widgets to needed sides, + * + */ +class LLPanelInventoryListItemBase : public LLPanel +{ +public: + struct Params : public LLInitParam::Block<Params, LLPanel::Params> + { + Optional<LLStyle::Params> default_style, + worn_style; + Params(); + }; + + typedef enum e_item_state { + IS_DEFAULT, + IS_WORN, + } EItemState; + + static LLPanelInventoryListItemBase* create(LLViewerInventoryItem* item); + + virtual void draw(); + + /** + * Let item know it need to be refreshed in next draw() + */ + void setNeedsRefresh(bool needs_refresh){ mNeedsRefresh = needs_refresh; } + + bool getNeedsRefresh(){ return mNeedsRefresh; } + + /** + * Add widget to left side + */ + void addWidgetToLeftSide(const std::string& name, bool show_widget = true); + void addWidgetToLeftSide(LLUICtrl* ctrl, bool show_widget = true); + + /** + * Add widget to right side, widget is supposed to be child of calling panel + */ + void addWidgetToRightSide(const std::string& name, bool show_widget = true); + void addWidgetToRightSide(LLUICtrl* ctrl, bool show_widget = true); + + /** + * Mark widgets as visible. Only visible widgets take part in reshaping children + */ + void setShowWidget(const std::string& name, bool show); + void setShowWidget(LLUICtrl* ctrl, bool show); + + /** + * Set spacing between widgets during reshape + */ + void setWidgetSpacing(S32 spacing) { mWidgetSpacing = spacing; } + + S32 getWidgetSpacing() { return mWidgetSpacing; } + + /** + * Inheritors need to call base implementation of postBuild() + */ + /*virtual*/ BOOL postBuild(); + + /** + * Handles item selection + */ + /*virtual*/ void setValue(const LLSD& value); + + /** + * Handles filter request + */ + /*virtual*/ S32 notify(const LLSD& info); + + /* Highlights item */ + /*virtual*/ void onMouseEnter(S32 x, S32 y, MASK mask); + /* Removes item highlight */ + /*virtual*/ void onMouseLeave(S32 x, S32 y, MASK mask); + + /** Get the name of a corresponding inventory item */ + const std::string& getItemName() const; + + /** Get the asset type of a corresponding inventory item */ + LLAssetType::EType getType() const; + + /** Get the wearable type of a corresponding inventory item */ + LLWearableType::EType getWearableType() const; + + /** Get the description of a corresponding inventory item */ + const std::string& getDescription() const; + + /** Get the associated inventory item */ + LLViewerInventoryItem* getItem() const; + + virtual ~LLPanelInventoryListItemBase(){} + +protected: + + LLPanelInventoryListItemBase(LLViewerInventoryItem* item); + + typedef std::vector<LLUICtrl*> widget_array_t; + + /** + * Use it from a factory function to build panel, do not build panel in constructor + */ + virtual void init(); + + /** + * Called after inventory item was updated, update panel widgets to reflect inventory changes. + */ + virtual void updateItem(const std::string& name, + EItemState item_state = IS_DEFAULT); + + /** setter for mIconCtrl */ + void setIconCtrl(LLIconCtrl* icon) { mIconCtrl = icon; } + /** setter for MTitleCtrl */ + void setTitleCtrl(LLTextBox* tb) { mTitleCtrl = tb; } + + void setLeftWidgetsWidth(S32 width) { mLeftWidgetsWidth = width; } + void setRightWidgetsWidth(S32 width) { mRightWidgetsWidth = width; } + + /** + * Set all widgets from both side visible/invisible. Only enabled widgets + * (see setShowWidget()) can become visible + */ + virtual void setWidgetsVisible(bool visible); + + /** + * Reshape all child widgets - icon, text-box and side widgets + */ + virtual void reshapeWidgets(); + + /** set wearable type icon image */ + void setIconImage(const LLUIImagePtr& image); + + /** Set item title - inventory item name usually */ + void setTitle(const std::string& title, + const std::string& highlit_text, + EItemState item_state = IS_DEFAULT); + + /** + * Show tool tip if item name text size > panel size + */ + virtual BOOL handleToolTip( S32 x, S32 y, MASK mask); + + const LLUUID mInventoryItemUUID; + +private: + + /** reshape left side widgets + * Deprecated for now. Disabled reshape left for now to reserve space for 'delete' + * button in LLPanelClothingListItem according to Neal's comment (https://codereview.productengine.com/secondlife/r/325/) + */ + void reshapeLeftWidgets(); + + /** reshape right side widgets */ + void reshapeRightWidgets(); + + /** reshape remaining widgets */ + void reshapeMiddleWidgets(); + + + LLIconCtrl* mIconCtrl; + LLTextBox* mTitleCtrl; + + LLUIImagePtr mIconImage; + std::string mHighlightedText; + + widget_array_t mLeftSideWidgets; + widget_array_t mRightSideWidgets; + S32 mWidgetSpacing; + + S32 mLeftWidgetsWidth; + S32 mRightWidgetsWidth; + bool mNeedsRefresh; +}; + +#endif //LL_LLINVENTORYLISTITEM_H diff --git a/indra/newview/llinventoryobserver.cpp b/indra/newview/llinventoryobserver.cpp index 0ac8fbcb15..bd6877d9d3 100644 --- a/indra/newview/llinventoryobserver.cpp +++ b/indra/newview/llinventoryobserver.cpp @@ -62,8 +62,7 @@ #include "llsdutil.h" #include <deque> -const U32 LLInventoryFetchItemsObserver::MAX_NUM_ATTEMPTS_TO_PROCESS = 10; -const F32 LLInventoryFetchItemsObserver::FETCH_TIMER_EXPIRY = 10.0f; +const F32 LLInventoryFetchItemsObserver::FETCH_TIMER_EXPIRY = 60.0f; LLInventoryObserver::LLInventoryObserver() @@ -143,52 +142,47 @@ void LLInventoryCompletionObserver::watchItem(const LLUUID& id) } LLInventoryFetchItemsObserver::LLInventoryFetchItemsObserver(const LLUUID& item_id) : - LLInventoryFetchObserver(item_id), - - mNumTries(MAX_NUM_ATTEMPTS_TO_PROCESS) + LLInventoryFetchObserver(item_id) { mIDs.clear(); mIDs.push_back(item_id); } LLInventoryFetchItemsObserver::LLInventoryFetchItemsObserver(const uuid_vec_t& item_ids) : - LLInventoryFetchObserver(item_ids), - - mNumTries(MAX_NUM_ATTEMPTS_TO_PROCESS) + LLInventoryFetchObserver(item_ids) { } void LLInventoryFetchItemsObserver::changed(U32 mask) { + lldebugs << this << " remaining incomplete " << mIncomplete.size() + << " complete " << mComplete.size() + << " wait period " << mFetchingPeriod.getRemainingTimeF32() + << llendl; + // scan through the incomplete items and move or erase them as // appropriate. if (!mIncomplete.empty()) { - // if period of an attempt expired... - if (mFetchingPeriod.hasExpired()) - { - // ...reset timer and reduce count of attempts - mFetchingPeriod.reset(); - mFetchingPeriod.setTimerExpirySec(FETCH_TIMER_EXPIRY); - --mNumTries; - - LL_INFOS("InventoryFetch") << "LLInventoryFetchItemsObserver: " << this << ", attempt(s) left: " << (S32)mNumTries << LL_ENDL; - } - - // do we still have any attempts? - bool timeout_expired = mNumTries <= 0; + // Have we exceeded max wait time? + bool timeout_expired = mFetchingPeriod.hasExpired(); for (uuid_vec_t::iterator it = mIncomplete.begin(); it < mIncomplete.end(); ) { const LLUUID& item_id = (*it); LLViewerInventoryItem* item = gInventory.getItem(item_id); - if (!item) + if (item && item->isFinished()) + { + mComplete.push_back(item_id); + it = mIncomplete.erase(it); + } + else { if (timeout_expired) { // Just concede that this item hasn't arrived in reasonable time and continue on. - LL_WARNS("InventoryFetch") << "Fetcher timed out when fetching inventory item UUID: " << item_id << LL_ENDL; + llwarns << "Fetcher timed out when fetching inventory item UUID: " << item_id << LL_ENDL; it = mIncomplete.erase(it); } else @@ -196,22 +190,16 @@ void LLInventoryFetchItemsObserver::changed(U32 mask) // Keep trying. ++it; } - continue; } - if (item->isFinished()) - { - mComplete.push_back(item_id); - it = mIncomplete.erase(it); - continue; - } - ++it; } - if (mIncomplete.empty()) - { - mNumTries = MAX_NUM_ATTEMPTS_TO_PROCESS; - done(); - } + } + + if (mIncomplete.empty()) + { + lldebugs << this << " done at remaining incomplete " + << mIncomplete.size() << " complete " << mComplete.size() << llendl; + done(); } //llinfos << "LLInventoryFetchItemsObserver::changed() mComplete size " << mComplete.size() << llendl; //llinfos << "LLInventoryFetchItemsObserver::changed() mIncomplete size " << mIncomplete.size() << llendl; @@ -329,8 +317,8 @@ void LLInventoryFetchItemsObserver::startFetch() items_llsd.append(item_entry); } - mFetchingPeriod.resetWithExpiry(FETCH_TIMER_EXPIRY); - mNumTries = MAX_NUM_ATTEMPTS_TO_PROCESS; + mFetchingPeriod.reset(); + mFetchingPeriod.setTimerExpirySec(FETCH_TIMER_EXPIRY); fetch_items_from_llsd(items_llsd); } @@ -523,8 +511,14 @@ void LLInventoryAddItemByAssetObserver::changed(U32 mask) return; } - LLPointer<LLViewerInventoryItem> item = new LLViewerInventoryItem; LLMessageSystem* msg = gMessageSystem; + if (!(msg->getMessageName() && (0 == strcmp(msg->getMessageName(), "UpdateCreateInventoryItem")))) + { + // this is not our message + return; // to prevent a crash. EXT-7921; + } + + LLPointer<LLViewerInventoryItem> item = new LLViewerInventoryItem; S32 num_blocks = msg->getNumberOfBlocksFast(_PREHASH_InventoryData); for(S32 i = 0; i < num_blocks; ++i) { diff --git a/indra/newview/llinventoryobserver.h b/indra/newview/llinventoryobserver.h index 72c13f55c6..4a88a65bf8 100644 --- a/indra/newview/llinventoryobserver.h +++ b/indra/newview/llinventoryobserver.h @@ -109,18 +109,7 @@ public: /*virtual*/ void startFetch(); /*virtual*/ void changed(U32 mask); private: - S8 mNumTries; // Number of times changed() was called without success - LLFrameTimer mFetchingPeriod; - - /** - * If the viewer gets a notification, your observer assumes - * that that notification is for itself and then tries to process - * the results. The notification could be for something else (e.g. - * you're fetching an item and a notification gets triggered because - * you renamed some other item). This counter is to specify how many - * periods of time to wait for before giving up. - */ - static const U32 MAX_NUM_ATTEMPTS_TO_PROCESS; + LLTimer mFetchingPeriod; /** * Period of waiting a notification when requested items get added into inventory. diff --git a/indra/newview/llnotificationtiphandler.cpp b/indra/newview/llnotificationtiphandler.cpp index df6f04b6ea..a06a5770a2 100644 --- a/indra/newview/llnotificationtiphandler.cpp +++ b/indra/newview/llnotificationtiphandler.cpp @@ -106,11 +106,16 @@ bool LLTipHandler::processNotification(const LLSD& notify) } } + std::string session_name = notification->getPayload()["SESSION_NAME"]; const std::string name = notification->getSubstitutions()["NAME"]; + if (session_name.empty()) + { + session_name = name; + } LLUUID from_id = notification->getPayload()["from_id"]; if (LLHandlerUtil::canLogToIM(notification)) { - LLHandlerUtil::logToIM(IM_NOTHING_SPECIAL, name, name, + LLHandlerUtil::logToIM(IM_NOTHING_SPECIAL, session_name, name, notification->getMessage(), from_id, from_id); } diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp index 1aedfec86f..4402b2130f 100644 --- a/indra/newview/llpaneleditwearable.cpp +++ b/indra/newview/llpaneleditwearable.cpp @@ -652,7 +652,7 @@ BOOL LLPanelEditWearable::postBuild() // handled at appearance panel level? //mBtnBack->setClickedCallback(boost::bind(&LLPanelEditWearable::onBackButtonClicked, this)); - mTextEditor = getChild<LLTextEditor>("description"); + mNameEditor = getChild<LLLineEditor>("description"); mPanelTitle = getChild<LLTextBox>("edit_wearable_title"); mDescTitle = getChild<LLTextBox>("description_text"); @@ -758,7 +758,7 @@ BOOL LLPanelEditWearable::isDirty() const if (mWearablePtr) { if (mWearablePtr->isDirty() || - mWearablePtr->getName().compare(mTextEditor->getText()) != 0) + mWearablePtr->getName().compare(mNameEditor->getText()) != 0) { isDirty = TRUE; } @@ -796,7 +796,7 @@ void LLPanelEditWearable::onRevertButtonClicked(void* userdata) void LLPanelEditWearable::onSaveAsButtonClicked() { LLSD args; - args["DESC"] = mTextEditor->getText(); + args["DESC"] = mNameEditor->getText(); LLNotificationsUtil::add("SaveWearableAs", args, LLSD(), boost::bind(&LLPanelEditWearable::saveAsCallback, this, _1, _2)); } @@ -810,7 +810,7 @@ void LLPanelEditWearable::saveAsCallback(const LLSD& notification, const LLSD& r LLStringUtil::trim(wearable_name); if( !wearable_name.empty() ) { - mTextEditor->setText(wearable_name); + mNameEditor->setText(wearable_name); saveChanges(); } } @@ -956,10 +956,10 @@ void LLPanelEditWearable::saveChanges() U32 index = gAgentWearables.getWearableIndex(mWearablePtr); - if (mWearablePtr->getName().compare(mTextEditor->getText()) != 0) + if (mWearablePtr->getName().compare(mNameEditor->getText()) != 0) { // the name of the wearable has changed, re-save wearable with new name - gAgentWearables.saveWearableAs(mWearablePtr->getType(), index, mTextEditor->getText(), FALSE); + gAgentWearables.saveWearableAs(mWearablePtr->getType(), index, mNameEditor->getText(), FALSE); } else { @@ -976,7 +976,7 @@ void LLPanelEditWearable::revertChanges() } mWearablePtr->revertValues(); - mTextEditor->setText(mWearablePtr->getName()); + mNameEditor->setText(mWearablePtr->getName()); } void LLPanelEditWearable::showWearable(LLWearable* wearable, BOOL show) @@ -1018,7 +1018,7 @@ void LLPanelEditWearable::showWearable(LLWearable* wearable, BOOL show) mDescTitle->setText(description_title); // set name - mTextEditor->setText(wearable->getName()); + mNameEditor->setText(wearable->getName()); updatePanelPickerControls(type); updateTypeSpecificControls(type); diff --git a/indra/newview/llpaneleditwearable.h b/indra/newview/llpaneleditwearable.h index c63671fcc9..61441435cd 100644 --- a/indra/newview/llpaneleditwearable.h +++ b/indra/newview/llpaneleditwearable.h @@ -41,7 +41,6 @@ class LLCheckBoxCtrl; class LLWearable; -class LLTextEditor; class LLTextBox; class LLViewerInventoryItem; class LLViewerVisualParam; @@ -49,6 +48,7 @@ class LLVisualParamHint; class LLViewerJointMesh; class LLAccordionCtrlTab; class LLJoint; +class LLLineEditor; class LLPanelEditWearable : public LLPanel { @@ -140,7 +140,7 @@ private: // This text editor reference will change each time we edit a new wearable - // it will be grabbed from the currently visible panel - LLTextEditor *mTextEditor; + LLLineEditor *mNameEditor; // The following panels will be shown/hidden based on what wearable we're editing // body parts diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp index 1cb0f4601b..144839b554 100644 --- a/indra/newview/llpanellogin.cpp +++ b/indra/newview/llpanellogin.cpp @@ -1153,7 +1153,10 @@ void LLPanelLogin::onSelectServer(LLUICtrl*, void*) void LLPanelLogin::onServerComboLostFocus(LLFocusableElement* fe) { - if (!sInstance) return; + if (!sInstance) + { + return; + } LLComboBox* combo = sInstance->getChild<LLComboBox>("server_combo"); if(fe == combo) diff --git a/indra/newview/llpaneloutfitedit.cpp b/indra/newview/llpaneloutfitedit.cpp index 8da7432e0a..6b5eb23a9b 100644 --- a/indra/newview/llpaneloutfitedit.cpp +++ b/indra/newview/llpaneloutfitedit.cpp @@ -60,6 +60,7 @@ #include "llinventorybridge.h" #include "llinventorymodel.h" #include "llinventorymodelbackgroundfetch.h" +#include "llloadingindicator.h" #include "llpaneloutfitsinventory.h" #include "lluiconstants.h" #include "llsaveoutfitcombobtn.h" @@ -262,6 +263,9 @@ LLPanelOutfitEdit::LLPanelOutfitEdit() observer.addBOFChangedCallback(boost::bind(&LLPanelOutfitEdit::updateVerbs, this)); observer.addOutfitLockChangedCallback(boost::bind(&LLPanelOutfitEdit::updateVerbs, this)); observer.addCOFChangedCallback(boost::bind(&LLPanelOutfitEdit::update, this)); + + gAgentWearables.addLoadingStartedCallback(boost::bind(&LLPanelOutfitEdit::onOutfitChanging, this, true)); + gAgentWearables.addLoadedCallback(boost::bind(&LLPanelOutfitEdit::onOutfitChanging, this, false)); mFolderViewItemTypes.reserve(NUM_FOLDER_VIEW_ITEM_TYPES); for (U32 i = 0; i < NUM_FOLDER_VIEW_ITEM_TYPES; i++) @@ -367,7 +371,7 @@ BOOL LLPanelOutfitEdit::postBuild() childSetAction("show_add_wearables_btn", boost::bind(&LLPanelOutfitEdit::onAddMoreButtonClicked, this)); - childSetAction("add_to_outfit_btn", boost::bind(&LLPanelOutfitEdit::onAddToOutfitClicked, this)); + childSetAction("plus_btn", boost::bind(&LLPanelOutfitEdit::onPlusBtnClicked, this)); mEditWearableBtn = getChild<LLButton>("edit_wearable_btn"); mEditWearableBtn->setEnabled(FALSE); @@ -448,6 +452,10 @@ void LLPanelOutfitEdit::showWearablesFilter() mSearchFilter->clear(); onSearchEdit(LLStringUtil::null); } + else + { + mSearchFilter->setFocus(TRUE); + } } void LLPanelOutfitEdit::showWearablesListView() @@ -549,7 +557,7 @@ void LLPanelOutfitEdit::onSearchEdit(const std::string& string) } -void LLPanelOutfitEdit::onAddToOutfitClicked(void) +void LLPanelOutfitEdit::onPlusBtnClicked(void) { LLUUID selected_id; if (mInventoryItemsPanel->getVisible()) @@ -569,7 +577,8 @@ void LLPanelOutfitEdit::onAddToOutfitClicked(void) if (selected_id.isNull()) return; - LLAppearanceMgr::getInstance()->wearItemOnAvatar(selected_id); + //replacing instead of adding the item + LLAppearanceMgr::getInstance()->wearItemOnAvatar(selected_id, true, true); } void LLPanelOutfitEdit::onAddWearableClicked(void) @@ -902,6 +911,27 @@ void LLPanelOutfitEdit::showFilteredWearablesListView(LLWearableType::EType type applyListViewFilter((EListViewItemType) (LVIT_SHAPE + type)); } +static void update_status_widget_rect(LLView * widget, S32 right_border) +{ + LLRect rect = widget->getRect(); + rect.mRight = right_border; + + widget->setShape(rect); +} + +void LLPanelOutfitEdit::onOutfitChanging(bool started) +{ + static LLLoadingIndicator* indicator = getChild<LLLoadingIndicator>("edit_outfit_loading_indicator"); + static LLView* status_panel = getChild<LLView>("outfit_name_and_status"); + static S32 indicator_delta = status_panel->getRect().getWidth() - indicator->getRect().mLeft; + + S32 delta = started ? indicator_delta : 0; + S32 right_border = status_panel->getRect().getWidth() - delta; + + update_status_widget_rect(mCurrentOutfitName, right_border); + update_status_widget_rect(mStatus, right_border); + indicator->setVisible(started); +} // EOF diff --git a/indra/newview/llpaneloutfitedit.h b/indra/newview/llpaneloutfitedit.h index 1705e3043b..f449fbca27 100644 --- a/indra/newview/llpaneloutfitedit.h +++ b/indra/newview/llpaneloutfitedit.h @@ -146,7 +146,7 @@ public: void onListViewFilterCommitted(LLUICtrl* ctrl); void onSearchEdit(const std::string& string); void onInventorySelectionChange(const std::deque<LLFolderViewItem*> &items, BOOL user_action); - void onAddToOutfitClicked(void); + void onPlusBtnClicked(void); void applyFolderViewFilter(EFolderViewItemType type); void applyListViewFilter(EListViewItemType type); @@ -191,6 +191,7 @@ private: void onGearButtonClick(LLUICtrl* clicked_button); void onAddMoreButtonClicked(); void showFilteredWearablesListView(LLWearableType::EType type); + void onOutfitChanging(bool started); LLTextBox* mCurrentOutfitName; diff --git a/indra/newview/llpaneltopinfobar.cpp b/indra/newview/llpaneltopinfobar.cpp index 7cf574b6e5..68dc1cdf71 100644 --- a/indra/newview/llpaneltopinfobar.cpp +++ b/indra/newview/llpaneltopinfobar.cpp @@ -36,12 +36,16 @@ #include "llagent.h" #include "llagentui.h" +#include "llclipboard.h" +#include "lllandmarkactions.h" #include "lllocationinputctrl.h" #include "llnotificationsutil.h" #include "llparcel.h" #include "llsidetray.h" +#include "llslurl.h" #include "llstatusbar.h" #include "llviewercontrol.h" +#include "llviewerinventory.h" #include "llviewermenu.h" #include "llviewerparcelmgr.h" #include "llviewerregion.h" @@ -65,6 +69,9 @@ private: LLPanelTopInfoBar::LLPanelTopInfoBar(): mParcelChangedObserver(0) { + LLUICtrl::CommitCallbackRegistry::currentRegistrar() + .add("TopInfoBar.Action", boost::bind(&LLPanelTopInfoBar::onContextMenuItemClicked, this, _2)); + LLUICtrlFactory::getInstance()->buildPanel(this, "panel_topinfo_bar.xml"); } @@ -120,7 +127,7 @@ void LLPanelTopInfoBar::handleLoginComplete() BOOL LLPanelTopInfoBar::handleRightMouseDown(S32 x, S32 y, MASK mask) { - show_navbar_context_menu(this, x, y); + show_topinfobar_context_menu(this, x, y); return TRUE; } @@ -387,6 +394,32 @@ void LLPanelTopInfoBar::onAgentParcelChange() update(); } +void LLPanelTopInfoBar::onContextMenuItemClicked(const LLSD::String& item) +{ + if (item == "landmark") + { + LLViewerInventoryItem* landmark = LLLandmarkActions::findLandmarkForAgentPos(); + + if(landmark == NULL) + { + LLSideTray::getInstance()->showPanel("panel_places", LLSD().with("type", "create_landmark")); + } + else + { + LLSideTray::getInstance()->showPanel("panel_places", + LLSD().with("type", "landmark").with("id",landmark->getUUID())); + } + } + else if (item == "copy") + { + LLSLURL slurl; + LLAgentUI::buildSLURL(slurl, false); + LLUIString location_str(slurl.getSLURLString()); + + gClipboard.copyFromString(location_str); + } +} + void LLPanelTopInfoBar::onInfoButtonClicked() { LLSideTray::getInstance()->showPanel("panel_places", LLSD().with("type", "agent")); diff --git a/indra/newview/llpaneltopinfobar.h b/indra/newview/llpaneltopinfobar.h index 4a85bbcd76..e417a06a64 100644 --- a/indra/newview/llpaneltopinfobar.h +++ b/indra/newview/llpaneltopinfobar.h @@ -95,6 +95,11 @@ private: void onAgentParcelChange(); /** + * Called when context menu item is clicked. + */ + void onContextMenuItemClicked(const LLSD::String& userdata); + + /** * Called when user checks/unchecks Show Coordinates menu item. */ void onNavBarShowParcelPropertiesCtrlChanged(); diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index d25e8444cf..96088fed9c 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -2374,9 +2374,12 @@ void asset_callback_nothing(LLVFS*, const LLUUID&, LLAssetType::EType, void*, S3 } // *HACK: Must match name in Library or agent inventory +const std::string ROOT_GESTURES_FOLDER = "Gestures"; const std::string COMMON_GESTURES_FOLDER = "Common Gestures"; const std::string MALE_GESTURES_FOLDER = "Male Gestures"; const std::string FEMALE_GESTURES_FOLDER = "Female Gestures"; +const std::string SPEECH_GESTURES_FOLDER = "Speech Gestures"; +const std::string OTHER_GESTURES_FOLDER = "Other Gestures"; const S32 OPT_CLOSED_WINDOW = -1; const S32 OPT_MALE = 0; const S32 OPT_FEMALE = 1; @@ -2405,6 +2408,60 @@ bool callback_choose_gender(const LLSD& notification, const LLSD& response) return false; } +void LLStartUp::copyLibraryGestures(const std::string& same_gender_gestures) +{ + llinfos << "Copying library gestures" << llendl; + + // Copy gestures + LLUUID lib_gesture_cat_id = + gInventory.findCategoryUUIDForType(LLFolderType::FT_GESTURE,false,true); + if (lib_gesture_cat_id.isNull()) + { + llwarns << "Unable to copy gestures, source category not found" << llendl; + } + LLUUID dst_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_GESTURE); + + std::vector<std::string> gesture_folders_to_copy; + gesture_folders_to_copy.push_back(MALE_GESTURES_FOLDER); + gesture_folders_to_copy.push_back(FEMALE_GESTURES_FOLDER); + gesture_folders_to_copy.push_back(COMMON_GESTURES_FOLDER); + gesture_folders_to_copy.push_back(SPEECH_GESTURES_FOLDER); + gesture_folders_to_copy.push_back(OTHER_GESTURES_FOLDER); + + for(std::vector<std::string>::iterator it = gesture_folders_to_copy.begin(); + it != gesture_folders_to_copy.end(); + ++it) + { + std::string& folder_name = *it; + + LLPointer<LLInventoryCallback> cb(NULL); + + if (folder_name == same_gender_gestures || + folder_name == COMMON_GESTURES_FOLDER || + folder_name == OTHER_GESTURES_FOLDER) + { + cb = new ActivateGestureCallback; + } + + + LLUUID cat_id = findDescendentCategoryIDByName(lib_gesture_cat_id,folder_name); + if (cat_id.isNull()) + { + llwarns << "failed to find gesture folder for " << folder_name << llendl; + } + else + { + llinfos << "initiating fetch and copy for " << folder_name << " cat_id " << cat_id << llendl; + LLAppearanceMgr* app_mgr = LLAppearanceMgr::getInstance(); + callAfterCategoryFetch(cat_id, + boost::bind(&LLAppearanceMgr::shallowCopyCategory, + app_mgr, + cat_id, + dst_id, + cb)); + } + } +} void LLStartUp::loadInitialOutfit( const std::string& outfit_folder_name, const std::string& gender_name ) @@ -2417,16 +2474,16 @@ void LLStartUp::loadInitialOutfit( const std::string& outfit_folder_name, gInventory.findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT); S32 gender = 0; - std::string gestures; + std::string same_gender_gestures; if (gender_name == "male") { gender = OPT_MALE; - gestures = MALE_GESTURES_FOLDER; + same_gender_gestures = MALE_GESTURES_FOLDER; } else { gender = OPT_FEMALE; - gestures = FEMALE_GESTURES_FOLDER; + same_gender_gestures = FEMALE_GESTURES_FOLDER; } // try to find the outfit - if not there, create some default @@ -2449,38 +2506,8 @@ void LLStartUp::loadInitialOutfit( const std::string& outfit_folder_name, } // Copy gestures - LLUUID dst_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_GESTURE); - LLPointer<LLInventoryCallback> cb(NULL); - LLAppearanceMgr *app_mgr = &(LLAppearanceMgr::instance()); - - // - Copy gender-specific gestures. - LLUUID gestures_cat_id = findDescendentCategoryIDByName( - gInventory.getLibraryRootFolderID(), - gestures); - if (gestures_cat_id.notNull()) - { - callAfterCategoryFetch(gestures_cat_id, - boost::bind(&LLAppearanceMgr::shallowCopyCategory, - app_mgr, - gestures_cat_id, - dst_id, - cb)); - } - - // - Copy common gestures. - LLUUID common_gestures_cat_id = findDescendentCategoryIDByName( - gInventory.getLibraryRootFolderID(), - COMMON_GESTURES_FOLDER); - if (common_gestures_cat_id.notNull()) - { - callAfterCategoryFetch(common_gestures_cat_id, - boost::bind(&LLAppearanceMgr::shallowCopyCategory, - app_mgr, - common_gestures_cat_id, - dst_id, - cb)); - } - + copyLibraryGestures(same_gender_gestures); + // This is really misnamed -- it means we have started loading // an outfit/shape that will give the avatar a gender eventually. JC gAgent.setGenderChosen(TRUE); diff --git a/indra/newview/llstartup.h b/indra/newview/llstartup.h index b2868378bc..cf3c030f08 100644 --- a/indra/newview/llstartup.h +++ b/indra/newview/llstartup.h @@ -93,6 +93,8 @@ public: // Load default fonts not already loaded at start screen static void fontInit(); + static void copyLibraryGestures(const std::string& same_gender_gestures); + // outfit_folder_name can be a folder anywhere in your inventory, // but the name must be a case-sensitive exact match. // gender_name is either "male" or "female" diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp index f4b4954cbd..f2c9fbf78d 100644 --- a/indra/newview/llviewercontrol.cpp +++ b/indra/newview/llviewercontrol.cpp @@ -462,7 +462,11 @@ bool toggle_agent_pause(const LLSD& newvalue) bool toggle_show_navigation_panel(const LLSD& newvalue) { - LLNavigationBar::getInstance()->showNavigationPanel(newvalue.asBoolean()); + bool value = newvalue.asBoolean(); + + LLNavigationBar::getInstance()->showNavigationPanel(value); + gSavedSettings.setBOOL("ShowMiniLocationPanel", !value); + return true; } @@ -474,7 +478,11 @@ bool toggle_show_favorites_panel(const LLSD& newvalue) bool toggle_show_mini_location_panel(const LLSD& newvalue) { - LLPanelTopInfoBar::getInstance()->setVisible(newvalue.asBoolean()); + bool value = newvalue.asBoolean(); + + LLPanelTopInfoBar::getInstance()->setVisible(value); + gSavedSettings.setBOOL("ShowNavbarNavigationPanel", !value); + return true; } diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp index 40f15fe86a..3430f265ae 100644 --- a/indra/newview/llviewerinventory.cpp +++ b/indra/newview/llviewerinventory.cpp @@ -922,6 +922,11 @@ void ActivateGestureCallback::fire(const LLUUID& inv_item) { if (inv_item.isNull()) return; + LLViewerInventoryItem* item = gInventory.getItem(inv_item); + if (!item) + return; + if (item->getType() != LLAssetType::AT_GESTURE) + return; LLGestureMgr::instance().activateGesture(inv_item); } diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 36650af6cb..635cc361f3 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -7693,6 +7693,31 @@ void show_navbar_context_menu(LLView* ctrl, S32 x, S32 y) LLMenuGL::showPopup(ctrl, show_navbar_context_menu, x, y); } +void show_topinfobar_context_menu(LLView* ctrl, S32 x, S32 y) +{ + static LLMenuGL* show_topbarinfo_context_menu = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_topinfobar.xml", + gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance()); + + LLMenuItemGL* landmark_item = show_topbarinfo_context_menu->getChild<LLMenuItemGL>("Landmark"); + if (!LLLandmarkActions::landmarkAlreadyExists()) + { + landmark_item->setLabel(LLTrans::getString("AddLandmarkNavBarMenu")); + } + else + { + landmark_item->setLabel(LLTrans::getString("EditLandmarkNavBarMenu")); + } + + if(gMenuHolder->hasVisibleMenu()) + { + gMenuHolder->hideMenus(); + } + + show_topbarinfo_context_menu->buildDrawLabels(); + show_topbarinfo_context_menu->updateParent(LLMenuGL::sMenuContainer); + LLMenuGL::showPopup(ctrl, show_topbarinfo_context_menu, x, y); +} + void initialize_edit_menu() { view_listener_t::addMenu(new LLEditUndo(), "Edit.Undo"); diff --git a/indra/newview/llviewermenu.h b/indra/newview/llviewermenu.h index ad88fcea9a..e0497139a5 100644 --- a/indra/newview/llviewermenu.h +++ b/indra/newview/llviewermenu.h @@ -53,6 +53,7 @@ void toggle_debug_menus(void*); void show_context_menu( S32 x, S32 y, MASK mask ); void show_build_mode_context_menu(S32 x, S32 y, MASK mask); void show_navbar_context_menu(LLView* ctrl, S32 x, S32 y); +void show_topinfobar_context_menu(LLView* ctrl, S32 x, S32 y); BOOL enable_save_into_inventory(void*); void handle_reset_view(); void handle_cut(void*); diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index d81fa5ee1c..bf4eb6ec33 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -1980,6 +1980,18 @@ static bool parse_lure_bucket(const std::string& bucket, return true; } +class LLPostponedIMSystemTipNotification: public LLPostponedNotification +{ +protected: + /* virtual */ + void modifyNotificationParams() + { + LLSD payload = mParams.payload; + payload["SESSION_NAME"] = mName; + mParams.payload = payload; + } +}; + void process_improved_im(LLMessageSystem *msg, void **user_data) { if (gNoRender) @@ -2050,14 +2062,19 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) LLSD args; LLSD payload; + LLNotification::Params params; + switch(dialog) { case IM_CONSOLE_AND_CHAT_HISTORY: - // *TODO: Translate args["MESSAGE"] = message; - payload["SESSION_NAME"] = name; + args["NAME"] = name; payload["from_id"] = from_id; - LLNotificationsUtil::add("IMSystemMessageTip",args, payload); + + params.name = "IMSystemMessageTip"; + params.substitutions = args; + params.payload = payload; + LLPostponedNotification::add<LLPostponedIMSystemTipNotification>(params, from_id, false); break; case IM_NOTHING_SPECIAL: diff --git a/indra/newview/llwearableitemslist.cpp b/indra/newview/llwearableitemslist.cpp index 9c308359fa..832d4a2fe6 100644 --- a/indra/newview/llwearableitemslist.cpp +++ b/indra/newview/llwearableitemslist.cpp @@ -34,11 +34,11 @@ #include "llwearableitemslist.h" #include "lliconctrl.h" +#include "llmenugl.h" // for LLContextMenu #include "llagentwearables.h" #include "llappearancemgr.h" #include "llinventoryfunctions.h" -#include "llmenugl.h" // for LLContextMenu #include "lltransutil.h" #include "llviewerattachmenu.h" #include "llvoavatarself.h" @@ -113,18 +113,17 @@ LLPanelWearableOutfitItem::LLPanelWearableOutfitItem(LLViewerInventoryItem* item // virtual void LLPanelWearableOutfitItem::updateItem(const std::string& name, - const LLStyle::Params& input_params) + EItemState item_state) { std::string search_label = name; - LLStyle::Params style_params = input_params; - if (mItem && get_is_item_worn(mItem->getUUID())) + if (get_is_item_worn(mInventoryItemUUID)) { search_label += LLTrans::getString("worn"); - style_params.font.style("BOLD"); + item_state = IS_WORN; } - LLPanelInventoryListItemBase::updateItem(search_label, style_params); + LLPanelInventoryListItemBase::updateItem(search_label, item_state); } ////////////////////////////////////////////////////////////////////////// @@ -264,19 +263,19 @@ LLPanelAttachmentListItem* LLPanelAttachmentListItem::create(LLViewerInventoryIt return list_item; } -void LLPanelAttachmentListItem::setTitle(const std::string& title, - const std::string& highlit_text, - const LLStyle::Params& input_params) +void LLPanelAttachmentListItem::updateItem(const std::string& name, + EItemState item_state) { - std::string title_joint = title; + std::string title_joint; - if (mItem && isAgentAvatarValid() && gAgentAvatarp->isWearingAttachment(mItem->getLinkedUUID())) + LLViewerInventoryItem* inv_item = getItem(); + if (inv_item && isAgentAvatarValid() && gAgentAvatarp->isWearingAttachment(inv_item->getLinkedUUID())) { - std::string joint = LLTrans::getString(gAgentAvatarp->getAttachedPointName(mItem->getLinkedUUID())); - title_joint = title + " (" + joint + ")"; + std::string joint = LLTrans::getString(gAgentAvatarp->getAttachedPointName(inv_item->getLinkedUUID())); + title_joint = name + " (" + joint + ")"; } - LLPanelDeletableWearableListItem::setTitle(title_joint, highlit_text, input_params); + LLPanelInventoryListItemBase::updateItem(title_joint, item_state); } ////////////////////////////////////////////////////////////////////////// @@ -503,6 +502,9 @@ void LLWearableItemsList::updateList(const LLUUID& category_id) void LLWearableItemsList::updateChangedItems(const LLInventoryModel::changed_items_t& changed_items_uuids) { + // nothing to update + if (changed_items_uuids.empty()) return; + typedef std::vector<LLPanel*> item_panel_list_t; item_panel_list_t items; @@ -527,6 +529,7 @@ void LLWearableItemsList::updateChangedItems(const LLInventoryModel::changed_ite if (linked_uuid == *iter) { item->setNeedsRefresh(true); + break; } } } diff --git a/indra/newview/llwearableitemslist.h b/indra/newview/llwearableitemslist.h index 5dc06284c3..2bfb90e3ec 100644 --- a/indra/newview/llwearableitemslist.h +++ b/indra/newview/llwearableitemslist.h @@ -38,6 +38,7 @@ // newview #include "llinventoryitemslist.h" +#include "llinventorylistitem.h" #include "llinventorymodel.h" #include "lllistcontextmenu.h" #include "llwearabletype.h" @@ -87,7 +88,7 @@ public: * Updates item name and (worn) suffix. */ /*virtual*/ void updateItem(const std::string& name, - const LLStyle::Params& input_params = LLStyle::Params()); + EItemState item_state = IS_DEFAULT); protected: LLPanelWearableOutfitItem(LLViewerInventoryItem* item); @@ -124,9 +125,8 @@ public: virtual ~LLPanelAttachmentListItem() {}; /** Set item title. Joint name is added to the title in parenthesis */ - /*virtual*/ void setTitle(const std::string& title, - const std::string& highlit_text, - const LLStyle::Params& input_params = LLStyle::Params()); + /*virtual*/ void updateItem(const std::string& name, + EItemState item_state = IS_DEFAULT); protected: LLPanelAttachmentListItem(LLViewerInventoryItem* item) : LLPanelDeletableWearableListItem(item) {}; diff --git a/indra/newview/skins/default/xui/de/floater_camera.xml b/indra/newview/skins/default/xui/de/floater_camera.xml index 87371b05e3..418e717bf6 100644 --- a/indra/newview/skins/default/xui/de/floater_camera.xml +++ b/indra/newview/skins/default/xui/de/floater_camera.xml @@ -9,35 +9,28 @@ <floater.string name="move_tooltip"> Kamera nach oben, unten, links und rechts bewegen </floater.string> - <floater.string name="orbit_mode_title"> - Kreisen + <floater.string name="camera_modes_title"> + Kameramodi </floater.string> <floater.string name="pan_mode_title"> - Schwenken + Kreisen - Zoomen - Schwenken </floater.string> - <floater.string name="avatar_view_mode_title"> - Voreinstellungen + <floater.string name="presets_mode_title"> + Ansichten </floater.string> <floater.string name="free_mode_title"> Objekt ansehen </floater.string> <panel name="controls"> - <joystick_track name="cam_track_stick" tool_tip="Kamera nach oben, unten, links und rechts bewegen"/> <panel name="zoom" tool_tip="Kamera auf Fokus zoomen"> + <joystick_rotate name="cam_rotate_stick" tool_tip="Kamera um Fokus kreisen"/> <slider_bar name="zoom_slider" tool_tip="Kamera auf Fokus zoomen"/> - </panel> - <joystick_rotate name="cam_rotate_stick" tool_tip="Kamera um Fokus kreisen"/> - <panel name="camera_presets"> - <button name="rear_view" tool_tip="Hinteransicht"/> - <button name="group_view" tool_tip="Gruppen-Ansicht"/> - <button name="front_view" tool_tip="Vorderansicht"/> - <button name="mouselook_view" tool_tip="Mouselook"/> + <joystick_track name="cam_track_stick" tool_tip="Kamera nach oben, unten, links und rechts bewegen"/> </panel> </panel> <panel name="buttons"> - <button label="" name="orbit_btn" tool_tip="Kamera kreisen"/> - <button label="" name="pan_btn" tool_tip="Kamera schwenken"/> - <button label="" name="avatarview_btn" tool_tip="Voreinstellungen"/> - <button label="" name="freecamera_btn" tool_tip="Objekt ansehen"/> + <button label="" name="presets_btn" tool_tip="Ansichten"/> + <button label="" name="pan_btn" tool_tip="Kreisen - Zoomen - Schwenken"/> + <button label="" name="avatarview_btn" tool_tip="Kameramodi"/> </panel> </floater> 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 740085599f..0312f7dfe9 100644 --- a/indra/newview/skins/default/xui/de/floater_incoming_call.xml +++ b/indra/newview/skins/default/xui/de/floater_incoming_call.xml @@ -16,7 +16,13 @@ ist einem Voice-Konferenz-Chat beigetreten. </floater.string> <floater.string name="VoiceInviteGroup"> - ist einem Voice-Chat mit der Gruppe [GROUP] beigetreten. + ist dem '[GROUP]' Voice-Kanal beigetreten. + </floater.string> + <floater.string name="VoiceInviteQuestionGroup"> + Möchten Sie [CURRENT_CHAT] verlassen und dem Gespräch mit '[GROUP]' beitreten? + </floater.string> + <floater.string name="VoiceInviteQuestionDefault"> + Möchten Sie [CURRENT_CHAT] verlassen und diesem Voice-Chat beitreten? </floater.string> <text name="question"> Möchten Sie [CURRENT_CHAT] verlassen und diesem Voice-Chat beitreten? diff --git a/indra/newview/skins/default/xui/de/floater_snapshot.xml b/indra/newview/skins/default/xui/de/floater_snapshot.xml index 4c417710bd..a656ffb894 100644 --- a/indra/newview/skins/default/xui/de/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/de/floater_snapshot.xml @@ -5,12 +5,19 @@ </floater.string> <button label="Foto aktualisieren" name="new_snapshot_btn"/> <line_editor label="Beschreibung" name="description"/> - <button label="Foto freigeben" name="share"/> - <button label="Ins Internet stellen" name="share_to_web"/> - <button label="Objekt in meinem Inventar speichern" name="save_to_inventory"/> - <button label="Foto speichern" name="save"/> - <button label="Foto per E-Mail senden" name="share_to_email"/> - <button label="Auf meinem Computer speichern" name="save_to_computer"/> - <button label="Als Profilbild festlegen" name="set_profile_pic"/> - <button label="Zurück" name="cancel"/> + <panel name="panel_snapshot_main"> + <button label="Foto freigeben" name="share"/> + <button label="Foto speichern" name="save"/> + <button label="Als Profilbild festlegen" name="set_profile_pic"/> + </panel> + <panel name="panel_snapshot_share"> + <button label="Ins Internet stellen" name="share_to_web"/> + <button label="Foto per E-Mail senden" name="share_to_email"/> + <button label="Zurück" name="cancel_share"/> + </panel> + <panel name="panel_snapshot_save"> + <button label="Objekt in meinem Inventar speichern" name="save_to_inventory"/> + <button label="Auf meinem Computer speichern" name="save_to_computer"/> + <button label="Zurück" name="cancel_save"/> + </panel> </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 aa582838a4..07b7689cd0 100644 --- a/indra/newview/skins/default/xui/de/floater_voice_controls.xml +++ b/indra/newview/skins/default/xui/de/floater_voice_controls.xml @@ -19,8 +19,10 @@ <layout_panel name="my_panel"> <text name="user_text" value="Mein Avatar:"/> </layout_panel> - <layout_panel name="leave_call_btn_panel"> - <button label="Anruf beenden" name="leave_call_btn"/> - </layout_panel> + <layout_stack name="voice_effect_and_leave_call_stack"> + <layout_panel name="leave_call_btn_panel"> + <button label="Anruf beenden" name="leave_call_btn"/> + </layout_panel> + </layout_stack> </layout_stack> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_voice_effect.xml b/indra/newview/skins/default/xui/de/floater_voice_effect.xml new file mode 100644 index 0000000000..8de0133ead --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_voice_effect.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater label="Orte" name="voice_effects" title="VOICE-MORPHING AUSPROBIEREN"> + <string name="no_voice_effect"> + (Kein Voice-Morphing) + </string> + <string name="active_voice_effect"> + (Aktiv) + </string> + <string name="unsubscribed_voice_effect"> + (nicht abonniert) + </string> + <string name="new_voice_effect"> + (Neu!) + </string> + <text name="status_text"> + Um die Voice-Morph-Effekte auszuprobieren, einfach auf die Schaltfläche „Aufnahme“ klicken und kurz ins Mikrofon sprechen. Klicken Sie dann auf einen beliebigen Effekt in der Liste, um zu hören, wie der Effekt Ihre Stimme verändert. + +Schließen Sie dieses Fenster, um wieder mit dem Voice-Chat in der Nähe verbunden zu werden. + </text> + <button label="Aufnahme" name="record_btn" tool_tip="Nehmen Sie Ihre Stimme auf."/> + <button label="Stopp" name="record_stop_btn"/> + <text name="voice_morphing_link"> + [[URL]Voice-Morphing abonnieren] + </text> + <scroll_list name="voice_effect_list" tool_tip="Nehmen Sie Ihre Stimme auf und klicken Sie dann auf einen Effekt, um diesen auszuprobieren."> + <scroll_list.columns label="Voice-Morphing" name="name"/> + <scroll_list.columns label="Gültig bis" name="expires"/> + </scroll_list> +</floater> diff --git a/indra/newview/skins/default/xui/de/inspect_object.xml b/indra/newview/skins/default/xui/de/inspect_object.xml index ede14a37d7..72b8235828 100644 --- a/indra/newview/skins/default/xui/de/inspect_object.xml +++ b/indra/newview/skins/default/xui/de/inspect_object.xml @@ -8,7 +8,7 @@ Von [CREATOR] </string> <string name="CreatorAndOwner"> - von [CREATOR] + Von [CREATOR] Besitzer [OWNER] </string> <string name="Price"> @@ -23,16 +23,16 @@ Besitzer [OWNER] <string name="Sit"> Sitzen </string> - <text name="object_name" value="Wirklich langen Objektnamen als Test eingeben"/> + <text name="object_name" value="Test für ein Objektname der sehr lange ist und über zwei Zeilen geht."/> <text name="object_creator"> von secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about Besitzer secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about </text> <text name="price_text"> - 300.000 L$ + 30.000 L$ </text> <text name="object_description"> - Dies ist eine wirklich lange Beschreibung für ein Objekt, mindestens 80 Zeichen lang oder jetzt schon 120 Zeichen. Niemand weiß es genau. + Dies ist eine wirklich lange Beschreibung für ein Objekt, mindestens 80 Zeichen lang oder jetzt schon mindestens 120 Zeichen lang und länger als der englische Originaltext. Niemand weiß es genau. </text> <text name="object_media_url"> http://www.superdupertest.com diff --git a/indra/newview/skins/default/xui/de/menu_cof_attachment.xml b/indra/newview/skins/default/xui/de/menu_cof_attachment.xml new file mode 100644 index 0000000000..05d3dfca9d --- /dev/null +++ b/indra/newview/skins/default/xui/de/menu_cof_attachment.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="COF Attachment"> + <menu_item_call label="Abnehmen" name="detach"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_cof_body_part.xml b/indra/newview/skins/default/xui/de/menu_cof_body_part.xml new file mode 100644 index 0000000000..07960a525c --- /dev/null +++ b/indra/newview/skins/default/xui/de/menu_cof_body_part.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="COF Body"> + <menu_item_call label="Ersetzen" name="replace"/> + <menu_item_call label="Bearbeiten" name="edit"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_cof_clothing.xml b/indra/newview/skins/default/xui/de/menu_cof_clothing.xml new file mode 100644 index 0000000000..5cf31791ba --- /dev/null +++ b/indra/newview/skins/default/xui/de/menu_cof_clothing.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="COF Clothing"> + <menu_item_call label="Ausziehen" name="take_off"/> + <menu_item_call label="Eine Kategorie nach oben" name="move_up"/> + <menu_item_call label="Eine Kategorie nach unten" name="move_down"/> + <menu_item_call label="Bearbeiten" name="edit"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_cof_gear.xml b/indra/newview/skins/default/xui/de/menu_cof_gear.xml new file mode 100644 index 0000000000..54b218d22f --- /dev/null +++ b/indra/newview/skins/default/xui/de/menu_cof_gear.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Gear COF"> + <menu label="Neue Kleider" name="COF.Gear.New_Clothes"/> + <menu label="Neue Körperteile" name="COF.Geear.New_Body_Parts"/> +</menu> diff --git a/indra/newview/skins/default/xui/de/menu_hide_navbar.xml b/indra/newview/skins/default/xui/de/menu_hide_navbar.xml index 32a6823b35..9acf96dc6d 100644 --- a/indra/newview/skins/default/xui/de/menu_hide_navbar.xml +++ b/indra/newview/skins/default/xui/de/menu_hide_navbar.xml @@ -2,4 +2,5 @@ <menu name="hide_navbar_menu"> <menu_item_check label="Navigationsleiste anzeigen" name="ShowNavbarNavigationPanel"/> <menu_item_check label="Favoritenleiste anzeigen" name="ShowNavbarFavoritesPanel"/> + <menu_item_check label="Mini-Standortleiste anzeigen" name="ShowMiniLocationPanel"/> </menu> diff --git a/indra/newview/skins/default/xui/de/menu_inventory.xml b/indra/newview/skins/default/xui/de/menu_inventory.xml index 306ef19de3..f6139a0ea0 100644 --- a/indra/newview/skins/default/xui/de/menu_inventory.xml +++ b/indra/newview/skins/default/xui/de/menu_inventory.xml @@ -80,6 +80,7 @@ <menu label="An HUD hängen" name="Attach To HUD"/> <menu_item_call label="Bearbeiten" name="Wearable Edit"/> <menu_item_call label="Anziehen" name="Wearable Wear"/> + <menu_item_call label="Hinzufügen" name="Wearable Add"/> <menu_item_call label="Ausziehen" name="Take Off"/> <menu_item_call label="--keine Optionen--" name="--no options--"/> </menu> diff --git a/indra/newview/skins/default/xui/de/menu_outfit_gear.xml b/indra/newview/skins/default/xui/de/menu_outfit_gear.xml new file mode 100644 index 0000000000..411dfc42c0 --- /dev/null +++ b/indra/newview/skins/default/xui/de/menu_outfit_gear.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Gear Outfit"> + <menu_item_call label="Anziehen - Aktuelles Outfit ersetzen" name="wear"/> + <menu_item_call label="Ausziehen - Aus aktuellem Outfit entfernen" name="take_off"/> + <menu label="Neue Kleider" name="New Clothes"> + <menu_item_call label="Neues Hemd" name="New Shirt"/> + <menu_item_call label="Neue Hose" name="New Pants"/> + <menu_item_call label="Neue Schuhe" name="New Shoes"/> + <menu_item_call label="Neue Socken" name="New Socks"/> + <menu_item_call label="Neue Jacke" name="New Jacket"/> + <menu_item_call label="Neuer Rock" name="New Skirt"/> + <menu_item_call label="Neue Handschuhe" name="New Gloves"/> + <menu_item_call label="Neues Unterhemd" name="New Undershirt"/> + <menu_item_call label="Neue Unterhose" name="New Underpants"/> + <menu_item_call label="Neues Alpha" name="New Alpha"/> + <menu_item_call label="Neue Tätowierung" name="New Tattoo"/> + </menu> + <menu label="Neue Körperteile" name="New Body Parts"> + <menu_item_call label="Neue Form" name="New Shape"/> + <menu_item_call label="Neue Haut" name="New Skin"/> + <menu_item_call label="Neues Haar" name="New Hair"/> + <menu_item_call label="Neue Augen" name="New Eyes"/> + </menu> + <menu_item_call label="Outfit neu benennen" name="rename"/> + <menu_item_call label="Outfit löschen" name="delete_outfit"/> +</menu> diff --git a/indra/newview/skins/default/xui/de/menu_outfit_tab.xml b/indra/newview/skins/default/xui/de/menu_outfit_tab.xml new file mode 100644 index 0000000000..605dee9b33 --- /dev/null +++ b/indra/newview/skins/default/xui/de/menu_outfit_tab.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Outfit"> + <menu_item_call label="Anziehen - Aktuelles Outfit ersetzen" name="wear_replace"/> + <menu_item_call label="Anziehen - Aktuelles Outfit hinzufügen" name="wear_add"/> + <menu_item_call label="Ausziehen - Aus aktuellem Outfit entfernen" name="take_off"/> + <menu_item_call label="Outfit bearbeiten" name="edit"/> + <menu_item_call label="Umbenennen" name="rename"/> + <menu_item_call label="Outfit löschen" name="delete"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_save_outfit.xml b/indra/newview/skins/default/xui/de/menu_save_outfit.xml index 70bca077ab..986c78b318 100644 --- a/indra/newview/skins/default/xui/de/menu_save_outfit.xml +++ b/indra/newview/skins/default/xui/de/menu_save_outfit.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <toggleable_menu name="save_outfit_menu"> <menu_item_call label="Speichern" name="save_outfit"/> - <menu_item_call label="Als neue Datei speichern" name="save_as_new_outfit"/> + <menu_item_call label="Speichern unter" name="save_as_new_outfit"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/de/menu_viewer.xml b/indra/newview/skins/default/xui/de/menu_viewer.xml index c416ebd7c1..38ef1b0421 100644 --- a/indra/newview/skins/default/xui/de/menu_viewer.xml +++ b/indra/newview/skins/default/xui/de/menu_viewer.xml @@ -7,10 +7,10 @@ </menu_item_call> <menu_item_call label="L$ kaufen" name="Buy and Sell L$"/> <menu_item_call label="Mein Profil" name="Profile"/> - <menu_item_call label="Mein Aussehen" name="Appearance"/> <menu_item_check label="Mein Inventar" name="Inventory"/> <menu_item_check label="Mein Inventar" name="ShowSidetrayInventory"/> <menu_item_check label="Meine Gesten" name="Gestures"/> + <menu_item_check label="Meine Stimme" name="ShowVoice"/> <menu label="Mein Status" name="Status"> <menu_item_call label="Abwesend" name="Set Away"/> <menu_item_call label="Beschäftigt" name="Set Busy"/> @@ -70,6 +70,12 @@ <menu_item_call label="Verknüpfung" name="Link"/> <menu_item_call label="Verknüpfung auflösen" name="Unlink"/> <menu_item_check label="Verknüpfte Teile bearbeiten" name="Edit Linked Parts"/> + <menu label="Verknüpfte Teile auswählen" name="Select Linked Parts"> + <menu_item_call label="Nächstes Teil auswählen" name="Select Next Part"/> + <menu_item_call label="Vorheriges Teil auswählen" name="Select Previous Part"/> + <menu_item_call label="Nächsten Teil mit einsschließen" name="Include Next Part"/> + <menu_item_call label="Vorherige Teile mit einschließen" name="Include Previous Part"/> + </menu> <menu_item_call label="Fokus auf Auswahl" name="Focus on Selection"/> <menu_item_call label="Auf Auswahl zoomen" name="Zoom to Selection"/> <menu label="Objekt" name="Object"> @@ -100,11 +106,11 @@ <menu_item_call label="Auswahl für Raster verwenden" name="Use Selection for Grid"/> <menu_item_call label="Rasteroptionen" name="Grid Options"/> </menu> - <menu label="Verknüpfte Teile auswählen" name="Select Linked Parts"> - <menu_item_call label="Nächstes Teil auswählen" name="Select Next Part"/> - <menu_item_call label="Vorheriges Teil auswählen" name="Select Previous Part"/> - <menu_item_call label="Nächsten Teil mit einsschließen" name="Include Next Part"/> - <menu_item_call label="Vorherige Teile mit einschließen" name="Include Previous Part"/> + <menu label="Hochladen" name="Upload"> + <menu_item_call label="Bild ([COST] L$)..." name="Upload Image"/> + <menu_item_call label="Sound ([COST] L$)..." name="Upload Sound"/> + <menu_item_call label="Animation ([COST] L$)..." name="Upload Animation"/> + <menu_item_call label="Mehrfach-Upload ([COST] L$ pro Datei)..." name="Bulk Upload"/> </menu> </menu> <menu label="Hilfe" name="Help"> @@ -189,7 +195,6 @@ <menu_item_call label="Hineinzoomen" name="Zoom In"/> <menu_item_call label="Zoom-Standard" name="Zoom Default"/> <menu_item_call label="Wegzoomen" name="Zoom Out"/> - <menu_item_call label="Vollbild" name="Toggle Fullscreen"/> </menu> <menu_item_call label="Debug-Einstellungen anzeigen" name="Debug Settings"/> <menu_item_check label="Menü „Entwickler“ anzeigen" name="Debug Mode"/> diff --git a/indra/newview/skins/default/xui/de/menu_wearable_list_item.xml b/indra/newview/skins/default/xui/de/menu_wearable_list_item.xml new file mode 100644 index 0000000000..a4bf75a497 --- /dev/null +++ b/indra/newview/skins/default/xui/de/menu_wearable_list_item.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Outfit Wearable Context Menu"> + <menu_item_call label="Anziehen" name="wear"/> + <menu_item_call label="Hinzufügen" name="wear_add"/> + <menu_item_call label="Ausziehen / Abnehmen" name="take_off_or_detach"/> + <menu_item_call label="Abnehmen" name="detach"/> + <context_menu label="Anhängen an ▶" name="wearable_attach_to"/> + <context_menu label="An HUD hängen ▶" name="wearable_attach_to_hud"/> + <menu_item_call label="Ausziehen" name="take_off"/> + <menu_item_call label="Bearbeiten" name="edit"/> + <menu_item_call label="Objektprofil" name="object_profile"/> + <menu_item_call label="Original anzeigen" name="show_original"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/de/notifications.xml b/indra/newview/skins/default/xui/de/notifications.xml index aa1ee71c3f..408ece9690 100644 --- a/indra/newview/skins/default/xui/de/notifications.xml +++ b/indra/newview/skins/default/xui/de/notifications.xml @@ -479,7 +479,9 @@ Sie können die Grafikqualität unter Einstellungen > Grafik wieder erhöhen. Die Region [REGION] erlaubt kein Terraforming. </notification> <notification name="CannotCopyWarning"> - Sie sind nicht berechtigt, dieses Objekt zu kopieren und verlieren es aus Ihrem Inventar, wenn Sie es weggeben. Möchten Sie dieses Objekt anbieten? + Sie sind nicht berechtigt, die folgenden Objekte zu kopieren: +[ITEMS] +Wenn Sie diese weitergeben, werden sie aus Ihrem Inventar entfernt. Möchten Sie diese Objekte wirklich weggeben? <usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/> </notification> <notification name="CannotGiveItem"> @@ -947,6 +949,26 @@ Sie sind nicht berechtigt, Land für die aktive Gruppe zu kaufen. <button name="Cancel" text="Abbrechen"/> </form> </notification> + <notification label="Kleidungstyp speichern" name="SaveWearableAs"> + Objekt in meinem Inventar speichern als: + <form name="form"> + <input name="message"> + [DESC] (neu) + </input> + <button name="Offer" text="OK"/> + <button name="Cancel" text="Abbrechen"/> + </form> + </notification> + <notification label="Outfit neu benennen" name="RenameOutfit"> + Neuer Outfit-Name: + <form name="form"> + <input name="new_name"> + [NAME] + </input> + <button name="Offer" text="OK"/> + <button name="Cancel" text="Abbrechen"/> + </form> + </notification> <notification name="RemoveFromFriends"> Möchten Sie [FIRST_NAME] [LAST_NAME] aus Ihrer Freundesliste entfernen? <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> @@ -1522,9 +1544,9 @@ Möchten Sie unsere Knowledgebase besuchen, um mehr Informationen über Alterein Aufgrund Ihrer Alterseinstufung dürfen Sie diese Region nicht betreten. </notification> <notification name="RegionEntryAccessBlocked_Change"> - Sie dürfen diese Region aufgrund der Einstellung Ihrer Alterseinstufung nicht betreten. + Sie dürfen diese Region aufgrund der Einstellung Ihrer Inhaltseinstufung nicht betreten. -Klicken Sie auf „Einstellung ändern“, um Ihre Einstellung für Altereinstufung sofort zu ändern und Zugang zu erhalten. Sie können ab sofort [REGIONMATURITY]-Inhalt suchen und auf diesen zugreifen. Falls Sie diese Einstellung später rückgängig machen möchten, gehen Sie zu Bearbeiten > Einstellungen > Allgemein. +Bitte ändern Sie Ihre Einstellungen bezüglich der Inhaltseinstufung, um die gewünschte Region zu betreten. Danach können Sie nach [REGIONMATURITY]-Inhalt suchen und auf diesen zugreifen. Um die Veränderungen rückgängig zu machen, gehen Sie zu Ich > Einstellungen > Allgemein. <form name="form"> <button name="OK" text="Einstellung ändern"/> <button name="Cancel" text="Schließen"/> @@ -2297,15 +2319,6 @@ Versuchen Sie es in einigen Minuten erneut. <button name="Mute" text="Ignorieren"/> </form> </notification> - <notification name="ObjectGiveItemUnknownUser"> - Ein Objekt namens [OBJECTFROMNAME] von (einem unbekannten Einwohner) hat Ihnen folgendes übergeben [OBJECTTYPE]: -[ITEM_SLURL] - <form name="form"> - <button name="Keep" text="Behalten"/> - <button name="Discard" text="Verwerfen"/> - <button name="Mute" text="Ignorieren"/> - </form> - </notification> <notification name="UserGiveItem"> [NAME_SLURL] hat Ihnen folgendes [OBJECTTYPE] übergeben: [ITEM_SLURL] @@ -2551,6 +2564,21 @@ Klicken Sie auf 'Akzeptieren ', um dem Chat beizutreten, oder auf &a <notification name="VoiceLoginRetry"> Wir erstellen einen Voice-Kanal für Sie. Bitte warten Sie einen Moment. </notification> + <notification name="VoiceEffectsExpired"> + Ein oder mehrere Ihrer Voice-Morph-Abos ist/sind abgelaufen. +[[URL] Hier klicken], um Ihr Abo zu erneuern. + </notification> + <notification name="VoiceEffectsExpiredInUse"> + Das aktive Voice-Morph-Abo ist abgelaufen. Ihre normalen Voice-Einstellungen werden angewendet. +[[URL] Hier klicken], um Ihr Abo zu erneuern. + </notification> + <notification name="VoiceEffectsWillExpire"> + Ein oder mehrere Ihrer Voice-Morph-Abos werden in weniger als [INTERVAL] Tagen ablaufen. +[[URL] Hier klicken], um Ihr Abo zu erneuern. + </notification> + <notification name="VoiceEffectsNew"> + Neue Voice-Morph-Effekte sind erhältlich! + </notification> <notification name="Cannot enter parcel: not a group member"> Nur Mitglieder einer bestimmten Gruppe dürfen diesen Bereich betreten. </notification> @@ -2617,10 +2645,58 @@ Diese werden für ein paar Sekunden sicherheitshalber gesperrt. Die Schaltfläche wird angezeigt, wenn genügend Platz vorhanden ist. </notification> <notification name="ShareNotification"> - Artikel aus Inventar auf eine Person im Fenster „Einwohner auswählen“ ziehen. + Wählen Sie Einwohner aus, für die Sie das Objekt freigeben möchten. + </notification> + <notification name="ShareItemsConfirmation"> + Möchten Sie diese Objekte wirklich für andere freigeben: + +[ITEMS] + +Für folgende Einwohner: + +[RESIDENTS] + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="ItemsShared"> + Objekte wurden erfolgreich freigegeben. </notification> <notification name="AvatarRezNotification"> - Avatar '[NAME]' wurde in [TIME] Sekunden gerezzt. + (Seit [EXISTENCE] Sekunden inworld ) +Avatar '[NAME]' wurde in [TIME] Sekunden gerezzt. + </notification> + <notification name="AvatarRezSelfBakedDoneNotification"> + (Seit [EXISTENCE] Sekunden inworld ) +Ihr Outfit wurde in [TIME] Sekunden gebacken. + </notification> + <notification name="AvatarRezSelfBakedUpdateNotification"> + (Seit [EXISTENCE] Sekunden inworld ) +Nach [TIME] Sekunden wurde eine Aktualisierung Ihres Aussehens gesendet. +[STATUS] + </notification> + <notification name="NoConnect"> + Es gibt Probleme mit der Verbindung mit [PROTOCOL] [HOSTID]. +Bitte überprüfen Sie Ihre Netzwerk- und Firewalleinstellungen. + <form name="form"> + <button name="OK" text="OK"/> + </form> + </notification> + <notification name="NoVoiceConnect"> + Verbindung mit Voice-Server ist leider nicht möglich: + +[HOSTID] + +Voice-Kommunikation ist leider nicht verfügbar. +Bitte überprüfen Sie Ihr Netzwerk- und Firewall-Setup. + <form name="form"> + <button name="OK" text="OK"/> + </form> + </notification> + <notification name="AvatarRezSelfBakeNotification"> + (Seit [EXISTENCE] Sekunden inworld ) +Die [RESOLUTION]-gebakene Textur für '[BODYREGION]' wurde in [TIME] Sekunden hochgeladen. + </notification> + <notification name="ConfirmMuteAll"> + <usetemplate ignoretext="Confirm before I mute all participants in a group call" name="okcancelignore" notext="Abbrechen" yestext="OK"/> </notification> <global name="UnsupportedCPU"> - Ihre CPU-Geschwindigkeit entspricht nicht den Mindestanforderungen. diff --git a/indra/newview/skins/default/xui/de/panel_edit_shape.xml b/indra/newview/skins/default/xui/de/panel_edit_shape.xml index 393a586903..d04dba7a3b 100644 --- a/indra/newview/skins/default/xui/de/panel_edit_shape.xml +++ b/indra/newview/skins/default/xui/de/panel_edit_shape.xml @@ -1,14 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="edit_shape_panel"> - <panel name="avatar_sex_panel"> - <text name="gender_text"> - Geschlecht: - </text> - <radio_group name="sex_radio"> - <radio_item label="weiblich" name="radio"/> - <radio_item label="Männlich" name="radio2"/> - </radio_group> - </panel> + <string name="meters"> + Meter + </string> + <string name="feet"> + Fuß + </string> + <string name="height"> + Höhe: + </string> <panel label="Hemd" name="accordion_panel"> <accordion name="wearable_accordion"> <accordion_tab name="shape_body_tab" title="Körper"/> diff --git a/indra/newview/skins/default/xui/de/panel_edit_wearable.xml b/indra/newview/skins/default/xui/de/panel_edit_wearable.xml index 17a632b46e..7294a0b34f 100644 --- a/indra/newview/skins/default/xui/de/panel_edit_wearable.xml +++ b/indra/newview/skins/default/xui/de/panel_edit_wearable.xml @@ -72,7 +72,7 @@ <string name="jacket_desc_text"> Jacke: </string> - <string name="skirt_skirt_desc_text"> + <string name="skirt_desc_text"> Rock: </string> <string name="gloves_desc_text"> @@ -94,11 +94,6 @@ <panel label="Hemd" name="wearable_type_panel"> <text name="description_text" value="Form:"/> </panel> - <panel label="gear_buttom_panel" name="gear_buttom_panel"> - <button name="friends_viewsort_btn" tool_tip="Optionen"/> - <button name="add_btn" tool_tip="TODO"/> - <button name="del_btn" tool_tip="TODO"/> - </panel> <panel name="button_panel"> <button label="Speichern unter" name="save_as_button"/> <button label="Zurücksetzen" name="revert_button"/> diff --git a/indra/newview/skins/default/xui/de/panel_outfit_edit.xml b/indra/newview/skins/default/xui/de/panel_outfit_edit.xml index 5ff088d41c..91ba94b3d6 100644 --- a/indra/newview/skins/default/xui/de/panel_outfit_edit.xml +++ b/indra/newview/skins/default/xui/de/panel_outfit_edit.xml @@ -11,7 +11,7 @@ <string name="Filter.All" value="Alle"/> <string name="Filter.Clothes/Body" value="Kleider/Körper"/> <string name="Filter.Objects" value="Objekte"/> - <button label="Bearbeiten" name="edit_wearable_btn"/> + <string name="Filter.Custom" value="Benutzerspezifischer Filter"/> <text name="title" value="Outfit bearbeiten"/> <panel label="bottom_panel" name="header_panel"> <panel label="bottom_panel" name="outfit_name_and_status"> @@ -21,25 +21,16 @@ </panel> <layout_stack name="im_panels"> <layout_panel label="IM Steuerkonsole" name="outfit_wearables_panel"> - <scroll_list name="look_items_list"> - <scroll_list.columns label="Look-Artikel" name="look_item"/> - <scroll_list.columns label="Outfit-Artikel sortieren" name="look_item_sort"/> - </scroll_list> - <panel label="bottom_panel" name="edit_panel"/> - </layout_panel> - <layout_panel name="add_wearables_panel"> - <filter_editor label="Filter" name="look_item_filter"/> <layout_stack name="filter_panels"> - <layout_panel label="IM Steuerkonsole" name="filter_button_panel"> - <text name="add_to_outfit_label" value="Zum Outfit hinzufügen:"/> - <button label="O" name="filter_button"/> + <layout_panel name="add_button_and_combobox"> + <button label="Mehr hinzufügen" name="show_add_wearables_btn"/> + </layout_panel> + <layout_panel name="filter_panel"> + <filter_editor label="Tragbare Inventarobjekte filtern" name="look_item_filter"/> </layout_panel> </layout_stack> - <panel label="add_wearables_button_bar" name="add_wearables_button_bar"> - <button label="O" name="folder_view_btn"/> - <button label="L" name="list_view_btn"/> - </panel> </layout_panel> + <layout_panel name="add_wearables_panel"/> </layout_stack> <panel name="save_revert_button_bar"> <button label="Speichern" name="save_btn"/> 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 f695d67d1b..8b04cecd68 100644 --- a/indra/newview/skins/default/xui/de/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/de/panel_outfits_inventory.xml @@ -7,8 +7,7 @@ <panel name="bottom_panel"> <button name="options_gear_btn" tool_tip="Zusätzliche Optionen anzeigen"/> <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="Speichern unter" name="save_btn"/> <button label="Anziehen" name="wear_btn" tool_tip="Ausgewähltes Outfit tragen"/> - <button label="Outfit bearbeiten" name="edit_current_outfit_btn"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_places.xml b/indra/newview/skins/default/xui/de/panel_places.xml index 37ccdbeb7d..bd5c1c8ffe 100644 --- a/indra/newview/skins/default/xui/de/panel_places.xml +++ b/indra/newview/skins/default/xui/de/panel_places.xml @@ -5,12 +5,12 @@ <filter_editor label="Meine Orte filtern" name="Filter"/> <panel name="button_panel"> <button label="Teleportieren" name="teleport_btn" tool_tip="Zu ausgewähltem Standort teleportieren"/> - <button label="Karte" name="map_btn" width="60"/> + <button label="Karte" name="map_btn" tool_tip="Den entsprechenden Standort auf der Karte anzeigen" width="60"/> <button label="Bearbeiten" name="edit_btn" tool_tip="Landmarken-Info bearbeiten"/> <button label="▼" name="overflow_btn" tool_tip="Zusätzliche Optionen anzeigen"/> <button label="Speichern" name="save_btn" width="66"/> <button label="Abbrechen" name="cancel_btn" width="66"/> <button label="Schließen" name="close_btn"/> - <button label="Profil" name="profile_btn"/> + <button label="Profil" name="profile_btn" tool_tip="Ortsprofil anzeigen"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/de/panel_preferences_advanced.xml index f9d5c93dc0..52e616a402 100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_advanced.xml @@ -13,6 +13,7 @@ </text> <check_box label="Bauen/Bearbeiten" name="edit_camera_movement" tool_tip="Automatische Kamerapositionierung bei Wechsel in und aus dem Bearbeitungsmodus verwenden"/> <check_box label="Aussehen" name="appearance_camera_movement" tool_tip="Automatische Kamerapositionierung im Bearbeitenmodus verwenden"/> + <check_box initial_value="true" label="Sidebar" name="appearance_sidebar_positioning" tool_tip="Use automatic camera positioning for sidebar"/> <check_box label="Mich im Mouselook anzeigen" name="first_person_avatar_visible"/> <check_box label="Mit Pfeiltasten bewegen" name="arrow_keys_move_avatar_check"/> <check_box label="2-mal-drücken-halten, um zu rennen" name="tap_tap_hold_to_run"/> 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 3dc6997320..005290c1ff 100644 --- a/indra/newview/skins/default/xui/de/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/de/panel_status_bar.xml @@ -21,8 +21,10 @@ <panel.string name="buycurrencylabel"> [AMT] L$ </panel.string> - <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"/> + <panel name="balance_bg"> + <text name="balance" tool_tip="Mein Kontostand" value="20 L$"/> + <button label="L$ kaufen" name="buyL" tool_tip="Hier klicken, um mehr L$ zu kaufen"/> + </panel> <text name="TimeText" tool_tip="Aktuelle Zeit (Pazifik)"> 24:00 H PST </text> diff --git a/indra/newview/skins/default/xui/de/panel_voice_effect.xml b/indra/newview/skins/default/xui/de/panel_voice_effect.xml new file mode 100644 index 0000000000..363ee013e3 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_voice_effect.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_voice_effect"> + <string name="no_voice_effect"> + Kein Voice-Morphing + </string> + <string name="preview_voice_effects"> + Voice-Morphing ausprobieren ▶ + </string> + <string name="get_voice_effects"> + Voice-Morphing abonnieren ▶ + </string> + <combo_box name="voice_effect" tool_tip="Wählen Sie einen Voice-Morph-Effekt aus, um Ihre Stimme zu verändern."> + <combo_box.item label="Kein Voice-Morphing" name="no_voice_effect"/> + </combo_box> +</panel> diff --git a/indra/newview/skins/default/xui/de/sidepanel_inventory.xml b/indra/newview/skins/default/xui/de/sidepanel_inventory.xml index 26bde94ffd..96dd181854 100644 --- a/indra/newview/skins/default/xui/de/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/de/sidepanel_inventory.xml @@ -2,11 +2,12 @@ <panel label="Sonstiges" name="objects panel"> <panel label="" name="sidepanel__inventory_panel"> <panel name="button_panel"> - <button label="Profil" name="info_btn"/> - <button label="Teilen" name="share_btn"/> - <button label="Anziehen" name="wear_btn"/> + <button label="Profil" name="info_btn" tool_tip="Objektprofil anzeigen"/> + <button label="Teilen" name="share_btn" tool_tip="Inventarobjekt teilen"/> + <button label="Shop" name="shop_btn" tool_tip="Marktplatz-Webseite öffnen"/> + <button label="Anziehen" name="wear_btn" tool_tip="Ausgewähltes Outfit tragen"/> <button label="Wiedergeben" name="play_btn"/> - <button label="Teleportieren" name="teleport_btn"/> + <button label="Teleportieren" name="teleport_btn" tool_tip="Zu ausgewähltem Standort teleportieren"/> </panel> </panel> </panel> diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml index 03c858c880..bc4f20df26 100644 --- a/indra/newview/skins/default/xui/de/strings.xml +++ b/indra/newview/skins/default/xui/de/strings.xml @@ -100,6 +100,12 @@ <string name="LoginDownloadingClothing"> Kleidung wird geladen... </string> + <string name="CertExpired"> + Das vom Grid ausgegebene Zertifikate ist abgelaufen. Bitte überprüfen Sie Ihre Systemuhr oder kontaktieren Sie Ihren Grid-Administrator. + </string> + <string name="CertInvalidSignature"> + Die Zertifikatsunterschrift des Gridservers konnte nicht bestätigt werden. Bitte kontaktieren Sie Ihren Grid-Administrator. + </string> <string name="LoginFailedNoNetwork"> Netzwerk Fehler: Eine Verbindung konnte nicht hergestellt werden. Bitte überprüfen Sie Ihre Netzwerkverbindung. </string> @@ -735,6 +741,12 @@ <string name="land_type_unknown"> (unbekannt) </string> + <string name="Estate / Full Region"> + Grundstück / Vollständige Region + </string> + <string name="Mainland / Full Region"> + Mainland / Vollständige Region + </string> <string name="all_files"> Alle Dateien </string> @@ -843,6 +855,9 @@ <string name="NewWearable"> Neue/r/s [WEARABLE_ITEM] </string> + <string name="CreateNewWearable"> + [WEARABLE_TYPE] erstellen + </string> <string name="next"> Weiter </string> @@ -3390,12 +3405,6 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ <string name="answered_call"> Ihr Anruf wurde entgegengenommen </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> @@ -3486,6 +3495,9 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ <string name="session_initialization_timed_out_error"> Die Initialisierung der Sitzung ist fehlgeschlagen </string> + <string name="voice_morphing_url"> + http://secondlife.com/landing/voicemorphing + </string> <string name="paid_you_ldollars"> [NAME] hat Ihnen [AMOUNT] L$ bezahlt. </string> @@ -3605,6 +3617,18 @@ Missbrauchsbericht <string name="Contents"> Inhalt </string> + <string name="Female - Excuse me"> + Weiblich - Räuspern + </string> + <string name="Female - Get lost"> + Weiblich - Get lost + </string> + <string name="Female - Blow kiss"> + Weiblich - Kusshand + </string> + <string name="Female - Boo"> + Weiblich - Buh + </string> <string name="AvatarBirthDateFormat"> [mthnum,datetime,slt]/[day,datetime,slt]/[year,datetime,slt] </string> @@ -3614,4 +3638,32 @@ Missbrauchsbericht <string name="texture_load_dimensions_error"> Bilder, die größer sind als [WIDTH]*[HEIGHT] können nicht geladen werden </string> + <string name="words_separator" value=","/> + <string name="server_is_down"> + Trotz all unserer Bemühungen ist ein unerwarteter Fehler aufgetreten. + + Bitte überprüfen Sie status.secondlifegrid.net, um festzustellen, ob ein Problem besteht. + Falls Sie weiterhin Problem haben, überprüfen Sie bitte Ihre Netzwerk- und Firewalleinstellungen. + </string> + <string name="dateTimeWeekdaysNames"> + Sonntag:Montag:Dienstag:Mittwoch:Donnerstag:Freitag:Samstag + </string> + <string name="dateTimeWeekdaysShortNames"> + So:Mo:Di:Mi:Do:Fr:Sa + </string> + <string name="dateTimeMonthNames"> + Januar:Februar:März:April:Mai:Juni:Juli:August:September:Oktober:November:Dezember + </string> + <string name="dateTimeMonthShortNames"> + Jan:Feb:Mär:Apr:Mai:Jun:Jul:Aug:Sep:Okt:Nov:Dez + </string> + <string name="dateTimeDayFormat"> + [MDAY] + </string> + <string name="dateTimeAM"> + Uhr + </string> + <string name="dateTimePM"> + Uhr + </string> </strings> diff --git a/indra/newview/skins/default/xui/en/floater_critical.xml b/indra/newview/skins/default/xui/en/floater_critical.xml index 7b5451553f..05c958e051 100644 --- a/indra/newview/skins/default/xui/en/floater_critical.xml +++ b/indra/newview/skins/default/xui/en/floater_critical.xml @@ -6,6 +6,7 @@ height="500" layout="topleft" name="modal container" + open_centered="true" width="600"> <button height="20" @@ -16,15 +17,6 @@ name="Continue" top="465" width="100" /> - <button - height="20" - label="Cancel" - label_selected="Cancel" - layout="topleft" - left_delta="-468" - name="Cancel" - top_delta="0" - width="100" /> <text type="string" length="1" @@ -32,9 +24,9 @@ font="SansSerif" height="20" layout="topleft" - left_delta="4" + left="20" name="tos_heading" - top_delta="-450" + top="20" width="552"> Please read the following message carefully. </text> diff --git a/indra/newview/skins/default/xui/en/floater_voice_effect.xml b/indra/newview/skins/default/xui/en/floater_voice_effect.xml index 44ab15a3f2..9bf9cc6c77 100644 --- a/indra/newview/skins/default/xui/en/floater_voice_effect.xml +++ b/indra/newview/skins/default/xui/en/floater_voice_effect.xml @@ -35,7 +35,7 @@ font="SansSerifBold" color="White" left="10" - name="status_text" + name="preview_text" right="-10" top="27">To Preview </text> diff --git a/indra/newview/skins/default/xui/en/inspect_object.xml b/indra/newview/skins/default/xui/en/inspect_object.xml index f629eef475..8aeec46ba3 100644 --- a/indra/newview/skins/default/xui/en/inspect_object.xml +++ b/indra/newview/skins/default/xui/en/inspect_object.xml @@ -36,7 +36,6 @@ Owner [OWNER] top="6" use_ellipses="true" word_wrap="true" - value="Test Object Name That Is actually two lines and Really Long" width="220" /> <text follows="all" @@ -74,7 +73,6 @@ L$30,000 use_ellipses="true" width="220" word_wrap="true"> -This is a really long description for an object being as how it is at least 80 characters in length and so but maybe more like 120 at this point. Who knows, really? </text> <!-- Overlapping buttons for all default actions. Show "Buy" if for sale, "Sit" if can sit, etc. --> diff --git a/indra/newview/skins/default/xui/en/menu_attachment_self.xml b/indra/newview/skins/default/xui/en/menu_attachment_self.xml index dc51ae8b92..7239b13466 100644 --- a/indra/newview/skins/default/xui/en/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/en/menu_attachment_self.xml @@ -44,61 +44,67 @@ <menu_item_call.on_enable function="Attachment.EnableDetach" /> </menu_item_call> - <menu_item_call - enabled="false" - label="Drop" - layout="topleft" - name="Drop"> - <menu_item_call.on_click - function="Attachment.Drop" /> - <menu_item_call.on_enable - function="Attachment.EnableDrop" /> - </menu_item_call> - <menu_item_separator - layout="topleft" /> - - <menu_item_call - label="Stand Up" - layout="topleft" - name="Stand Up"> - <menu_item_call.on_click - function="Self.StandUp" - parameter="" /> - <menu_item_call.on_enable - function="Self.EnableStandUp" /> - </menu_item_call> - <menu_item_call - label="Change Outfit" - name="Change Outfit"> - <menu_item_call.on_click - function="CustomizeAvatar" /> - <menu_item_call.on_enable - function="Edit.EnableCustomizeAvatar" /> - </menu_item_call> - <menu_item_call - label="My Friends" - layout="topleft" - name="Friends..."> - <menu_item_call.on_click - function="SideTray.PanelPeopleTab" - parameter="friends_panel" /> - </menu_item_call> - <menu_item_call - label="My Groups" - layout="topleft" - name="Groups..."> - <menu_item_call.on_click - function="SideTray.PanelPeopleTab" - parameter="groups_panel" /> - </menu_item_call> - <menu_item_call - label="My Profile" - layout="topleft" - name="Profile..."> - <menu_item_call.on_click - function="ShowAgentProfile" - parameter="agent" /> - </menu_item_call> + <menu_item_separator + layout="topleft" /> + + <menu_item_call +label="Stand Up" +layout="topleft" +name="Stand Up"> + <menu_item_call.on_click + function="Self.StandUp" + parameter="" /> + <menu_item_call.on_enable + function="Self.EnableStandUp" /> + </menu_item_call> + <menu_item_call + label="Change Outfit" + name="Change Outfit"> + <menu_item_call.on_click + function="CustomizeAvatar" /> + <menu_item_call.on_enable + function="Edit.EnableCustomizeAvatar" /> + </menu_item_call> + <menu_item_call label="Edit My Outfit" +layout="topleft" +name="Edit Outfit"> + <menu_item_call.on_click + function="EditOutfit" /> + <menu_item_call.on_enable + function="Edit.EnableCustomizeAvatar" /> + </menu_item_call> + <menu_item_call label="Edit My Shape" + layout="topleft" + name="Edit My Shape"> + <menu_item_call.on_click + function="EditShape" /> + <menu_item_call.on_enable + function="Edit.EnableEditShape" /> + </menu_item_call> + <menu_item_call + label="My Friends" + layout="topleft" + name="Friends..."> + <menu_item_call.on_click + function="SideTray.PanelPeopleTab" + parameter="friends_panel" /> + </menu_item_call> + <menu_item_call + label="My Groups" + layout="topleft" + name="Groups..."> + <menu_item_call.on_click + function="SideTray.PanelPeopleTab" + parameter="groups_panel" /> + </menu_item_call> + <menu_item_call + label="My Profile" + layout="topleft" + name="Profile..."> + <menu_item_call.on_click + function="ShowAgentProfile" + parameter="agent" /> + </menu_item_call> <menu_item_call label="Debug Textures" name="Debug..."> @@ -107,4 +113,16 @@ <menu_item_call.on_visible function="IsGodCustomerService"/> </menu_item_call> + <menu_item_separator + layout="topleft" /> + <menu_item_call + enabled="false" + label="Drop" + layout="topleft" + name="Drop"> + <menu_item_call.on_click + function="Attachment.Drop" /> + <menu_item_call.on_enable + function="Attachment.EnableDrop" /> + </menu_item_call> </context_menu> diff --git a/indra/newview/skins/default/xui/en/menu_topinfobar.xml b/indra/newview/skins/default/xui/en/menu_topinfobar.xml new file mode 100644 index 0000000000..cbe249ed4d --- /dev/null +++ b/indra/newview/skins/default/xui/en/menu_topinfobar.xml @@ -0,0 +1,51 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<menu + height="201" + layout="topleft" + left="100" + mouse_opaque="false" + name="menu_topinfobar" + top="624" + visible="false" + width="128"> + <menu_item_check + label="Show Coordinates" + name="Show Coordinates"> + <on_click + function="ToggleControl" + parameter="NavBarShowCoordinates" /> + <on_check + function="CheckControl" + parameter="NavBarShowCoordinates" /> + </menu_item_check> + <menu_item_check + label="Show Parcel Properties" + name="Show Parcel Properties"> + <on_click + function="ToggleControl" + parameter="NavBarShowParcelProperties" /> + <on_check + function="CheckControl" + parameter="NavBarShowParcelProperties" /> + </menu_item_check> + <menu_item_separator + name="Separator" /> + <!-- Label of 'Landmark' item is changing in runtime, + see AddLandmarkNavBarMenu/EditLandmarkNavBarMenu in strings.xml --> + <menu_item_call + label="Landmark" + name="Landmark"> + <on_click + function="TopInfoBar.Action" + parameter="landmark" /> + </menu_item_call> + <menu_item_separator + name="Separator" /> + <menu_item_call + label="Copy" + name="Copy"> + <on_click + function="TopInfoBar.Action" + parameter="copy" /> + </menu_item_call> +</menu> diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 673c095826..88732fee7d 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -6209,7 +6209,7 @@ With the following Residents: icon="notifytip.tga" name="ItemsShared" type="notifytip"> -Items are successfully shared. +Items successfully shared. </notification> <notification icon="notifytip.tga" diff --git a/indra/newview/skins/default/xui/en/panel_edit_wearable.xml b/indra/newview/skins/default/xui/en/panel_edit_wearable.xml index 950c4a5fdb..00c5325039 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_wearable.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_wearable.xml @@ -225,15 +225,17 @@ left="0" tool_tip="Female" top="7" width="16" /> - <text_editor - follows="all" - height="23" - left="10" - layout="topleft" - max_length="300" - name="description" - top_pad="3" - width="290" /> + <line_editor + follows="all" + height="23" + layout="topleft" + left="10" + max_length="63" + name="description" + prevalidate_callback="ascii" + text_color="black" + top_pad="3" + width="290" /> </panel> <panel follows="all" diff --git a/indra/newview/skins/default/xui/en/panel_outfit_edit.xml b/indra/newview/skins/default/xui/en/panel_outfit_edit.xml index 03a0c464d2..819ba7f878 100644 --- a/indra/newview/skins/default/xui/en/panel_outfit_edit.xml +++ b/indra/newview/skins/default/xui/en/panel_outfit_edit.xml @@ -106,7 +106,7 @@ <panel bevel_style="none" follows="top|right" - height="38" + height="37" layout="topleft" left_pad="5" name="outfit_name_and_status" @@ -122,18 +122,26 @@ top="2" value="Now editing..." use_ellipses="true" - width="270" /> + width="245" /> <text follows="bottom|left|right" font="SansSerifLargeBold" - height="26" + height="18" layout="topleft" name="curr_outfit_name" text_color="LtGray" top_pad="2" value="[Current Outfit]" use_ellipses="true" - width="270" /> + width="245" /> + <loading_indicator + follows="right|top" + height="24" + layout="topleft" + right="-2" + name="edit_outfit_loading_indicator" + top="6" + width="24" /> </panel> </panel> @@ -160,7 +168,7 @@ It is calculated as border_size + 2*UIResizeBarOverlap <layout_panel layout="topleft" height="187" - min_height="100" + min_height="155" name="outfit_wearables_panel" width="313" auto_resize="true" @@ -285,7 +293,7 @@ It is calculated as border_size + 2*UIResizeBarOverlap auto_resize="true" default_tab_group="3" height="450" - min_height="210" + min_height="53" name="add_wearables_panel" width="313" tab_group="2" @@ -451,7 +459,7 @@ It is calculated as border_size + 2*UIResizeBarOverlap label="" layout="topleft" left_pad="1" - name="add_to_outfit_btn" + name="plus_btn" top="1" width="31" /> <icon diff --git a/indra/newview/skins/default/xui/en/widgets/inventory_list_item.xml b/indra/newview/skins/default/xui/en/widgets/inventory_list_item.xml new file mode 100644 index 0000000000..dbe1ea2874 --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/inventory_list_item.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<inventory_list_item + height="0" + layout="topleft" + left="0" + name="inventory_list_item" + top="0" + width="0"> + <!-- DEFAULT style for inventory list item --> + <default_style + font="SansSerifSmall" + font.style="NORMAL" /> + + <!-- style for inventory list item WORN on avatar --> + <worn_style + font="SansSerifSmall" + font.style="BOLD" /> +</inventory_list_item> diff --git a/indra/newview/skins/default/xui/es/floater_camera.xml b/indra/newview/skins/default/xui/es/floater_camera.xml index 787c37e12c..c625407ba2 100644 --- a/indra/newview/skins/default/xui/es/floater_camera.xml +++ b/indra/newview/skins/default/xui/es/floater_camera.xml @@ -9,35 +9,28 @@ <floater.string name="move_tooltip"> Mover la cámara arriba y abajo, izquierda y derecha </floater.string> - <floater.string name="orbit_mode_title"> - Orbital + <floater.string name="camera_modes_title"> + Modos de cámara </floater.string> <floater.string name="pan_mode_title"> - Panorámica + Orbital - Zoom - Panóramica </floater.string> - <floater.string name="avatar_view_mode_title"> - Posición de tu cámara + <floater.string name="presets_mode_title"> + Vistas predefinidas </floater.string> <floater.string name="free_mode_title"> Centrar el objeto </floater.string> <panel name="controls"> - <joystick_track name="cam_track_stick" tool_tip="Mueve la cámara arriba y abajo, a izquierda y derecha"/> <panel name="zoom" tool_tip="Hacer zoom con la cámara en lo enfocado"> + <joystick_rotate name="cam_rotate_stick" tool_tip="La cámara gira alrededor del punto de vista"/> <slider_bar name="zoom_slider" tool_tip="Hacer zoom en lo enfocado"/> - </panel> - <joystick_rotate name="cam_rotate_stick" tool_tip="La cámara gira alrededor del punto de vista"/> - <panel name="camera_presets"> - <button name="rear_view" tool_tip="Desde detrás"/> - <button name="group_view" tool_tip="Desde tu hombro"/> - <button name="front_view" tool_tip="De frente"/> - <button name="mouselook_view" tool_tip="Vista subjetiva"/> + <joystick_track name="cam_track_stick" tool_tip="Mueve la cámara arriba y abajo, a izquierda y derecha"/> </panel> </panel> <panel name="buttons"> - <button label="" name="orbit_btn" tool_tip="Cámara orbital"/> - <button label="" name="pan_btn" tool_tip="Cámara panorámica"/> - <button label="" name="avatarview_btn" tool_tip="Posición de tu cámara"/> - <button label="" name="freecamera_btn" tool_tip="Centrar el objeto"/> + <button label="" name="presets_btn" tool_tip="Vistas predefinidas"/> + <button label="" name="pan_btn" tool_tip="Orbital - Zoom - Panóramica"/> + <button label="" name="avatarview_btn" tool_tip="Modos de cámara"/> </panel> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_incoming_call.xml b/indra/newview/skins/default/xui/es/floater_incoming_call.xml index 021e5fb6b7..88cfc9575a 100644 --- a/indra/newview/skins/default/xui/es/floater_incoming_call.xml +++ b/indra/newview/skins/default/xui/es/floater_incoming_call.xml @@ -16,7 +16,13 @@ ha entrado en un chat de voz en multiconferencia. </floater.string> <floater.string name="VoiceInviteGroup"> - ha hecho una llamada de voz al grupo [GROUP]. + acaba de entrar en el canal de voz '[GROUP]'. + </floater.string> + <floater.string name="VoiceInviteQuestionGroup"> + ¿Quieres dejar [CURRENT_CHAT] e incorporarte a la llamada con '[GROUP]'? + </floater.string> + <floater.string name="VoiceInviteQuestionDefault"> + ¿Quieres dejar [CURRENT_CHAT] y entrar en este chat de voz? </floater.string> <text name="question"> ¿Quieres dejar [CURRENT_CHAT] y entrar a este chat de voz? diff --git a/indra/newview/skins/default/xui/es/floater_snapshot.xml b/indra/newview/skins/default/xui/es/floater_snapshot.xml index 151421c244..5106749f1c 100644 --- a/indra/newview/skins/default/xui/es/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/es/floater_snapshot.xml @@ -5,12 +5,19 @@ </floater.string> <button label="Actualizar la foto" name="new_snapshot_btn"/> <line_editor label="Descripción" name="description"/> - <button label="Compartir la foto" name="share"/> - <button label="Compartir en la web" name="share_to_web"/> - <button label="Guardar en mi inventario" name="save_to_inventory"/> - <button label="Guardar la foto" name="save"/> - <button label="Foto por correo-e" name="share_to_email"/> - <button label="Guardar en mi ordenador" name="save_to_computer"/> - <button label="Usar como imagen del perfil" name="set_profile_pic"/> - <button label="Atrás" name="cancel"/> + <panel name="panel_snapshot_main"> + <button label="Compartir foto" name="share"/> + <button label="Guardar foto" name="save"/> + <button label="Configurar como imagen del perfil" name="set_profile_pic"/> + </panel> + <panel name="panel_snapshot_share"> + <button label="Compartir en Internet" name="share_to_web"/> + <button label="Foto por correo" name="share_to_email"/> + <button label="Atrás" name="cancel_share"/> + </panel> + <panel name="panel_snapshot_save"> + <button label="Guardar en mi inventario" name="save_to_inventory"/> + <button label="Guardar en mi ordenador" name="save_to_computer"/> + <button label="Atrás" name="cancel_save"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_voice_controls.xml b/indra/newview/skins/default/xui/es/floater_voice_controls.xml index 934d14a45c..51adeb4dff 100644 --- a/indra/newview/skins/default/xui/es/floater_voice_controls.xml +++ b/indra/newview/skins/default/xui/es/floater_voice_controls.xml @@ -19,8 +19,10 @@ <layout_panel name="my_panel"> <text name="user_text" value="Mi avatar:"/> </layout_panel> - <layout_panel name="leave_call_btn_panel"> - <button label="Colgar" name="leave_call_btn"/> - </layout_panel> + <layout_stack name="voice_effect_and_leave_call_stack"> + <layout_panel name="leave_call_btn_panel"> + <button label="Colgar" name="leave_call_btn"/> + </layout_panel> + </layout_stack> </layout_stack> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_voice_effect.xml b/indra/newview/skins/default/xui/es/floater_voice_effect.xml new file mode 100644 index 0000000000..c1b7222aad --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_voice_effect.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater label="Lugares" name="voice_effects" title="PROBAR TRANSFORMACIÓN DE VOZ"> + <string name="no_voice_effect"> + (Sin transformación de voz) + </string> + <string name="active_voice_effect"> + (Activo) + </string> + <string name="unsubscribed_voice_effect"> + (Suscripción cancelada) + </string> + <string name="new_voice_effect"> + (¡Nuevo!) + </string> + <text name="status_text"> + Para probar un efecto de transformación de voz, pulsa el botón Grabar, graba un breve fragmento de voz y pulsa cualquiera de las transformaciones de voz de la lista para escuchar cómo suena. + +Para volver a conectarte al chat de voz, cierra esta ventana. + </text> + <button label="Grabar muestra" name="record_btn" tool_tip="Graba una muestra de tu voz."/> + <button label="Parar" name="record_stop_btn"/> + <text name="voice_morphing_link"> + [[URL] Obtener transformación de voz] + </text> + <scroll_list name="voice_effect_list" tool_tip="Graba una muestra de tu voz y pulsa en un efecto para ver cómo suena."> + <scroll_list.columns label="Transformación de voz" name="name"/> + <scroll_list.columns label="Caduca" name="expires"/> + </scroll_list> +</floater> diff --git a/indra/newview/skins/default/xui/es/inspect_object.xml b/indra/newview/skins/default/xui/es/inspect_object.xml index 6a831def07..d608b4a0f7 100644 --- a/indra/newview/skins/default/xui/es/inspect_object.xml +++ b/indra/newview/skins/default/xui/es/inspect_object.xml @@ -8,8 +8,8 @@ Por [CREATOR] </string> <string name="CreatorAndOwner"> - por [CREATOR] -propietario [OWNER] + Por [CREATOR] +Propietario [OWNER] </string> <string name="Price"> [AMOUNT] L$ @@ -23,6 +23,13 @@ propietario [OWNER] <string name="Sit"> Sentarme </string> + <text name="object_name" value="Test Object Name That Is actually two lines and Really Long"/> + <text name="price_text"> + 30.000 L$ + </text> + <text name="object_description"> + This is a really long description for an object being as how it is at least 80 characters in length and so but maybe more like 120 at this point. Who knows, really? + </text> <button label="Comprar" name="buy_btn"/> <button label="Pagar" name="pay_btn"/> <button label="Coger una copia" name="take_free_copy_btn"/> diff --git a/indra/newview/skins/default/xui/es/menu_cof_attachment.xml b/indra/newview/skins/default/xui/es/menu_cof_attachment.xml new file mode 100644 index 0000000000..7541530601 --- /dev/null +++ b/indra/newview/skins/default/xui/es/menu_cof_attachment.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="COF Attachment"> + <menu_item_call label="Quitar" name="detach"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/es/menu_cof_body_part.xml b/indra/newview/skins/default/xui/es/menu_cof_body_part.xml new file mode 100644 index 0000000000..56b95bdc3b --- /dev/null +++ b/indra/newview/skins/default/xui/es/menu_cof_body_part.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="COF Body"> + <menu_item_call label="Reemplazar" name="replace"/> + <menu_item_call label="Editar" name="edit"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/es/menu_cof_clothing.xml b/indra/newview/skins/default/xui/es/menu_cof_clothing.xml new file mode 100644 index 0000000000..4051f64e14 --- /dev/null +++ b/indra/newview/skins/default/xui/es/menu_cof_clothing.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="COF Clothing"> + <menu_item_call label="Quitarme" name="take_off"/> + <menu_item_call label="Subir una capa" name="move_up"/> + <menu_item_call label="Bajar una capa" name="move_down"/> + <menu_item_call label="Editar" name="edit"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/es/menu_cof_gear.xml b/indra/newview/skins/default/xui/es/menu_cof_gear.xml new file mode 100644 index 0000000000..ff8ad0977a --- /dev/null +++ b/indra/newview/skins/default/xui/es/menu_cof_gear.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Gear COF"> + <menu label="Ropas nuevas" name="COF.Gear.New_Clothes"/> + <menu label="Nuevas partes del cuerpo" name="COF.Geear.New_Body_Parts"/> +</menu> diff --git a/indra/newview/skins/default/xui/es/menu_hide_navbar.xml b/indra/newview/skins/default/xui/es/menu_hide_navbar.xml index 7fc1af00c5..22a1873234 100644 --- a/indra/newview/skins/default/xui/es/menu_hide_navbar.xml +++ b/indra/newview/skins/default/xui/es/menu_hide_navbar.xml @@ -2,4 +2,5 @@ <menu name="hide_navbar_menu"> <menu_item_check label="Mostrar la barra de navegación" name="ShowNavbarNavigationPanel"/> <menu_item_check label="Mostrar la barra de favoritos" name="ShowNavbarFavoritesPanel"/> + <menu_item_check label="Mostrar mini-barra de ubicación" name="ShowMiniLocationPanel"/> </menu> diff --git a/indra/newview/skins/default/xui/es/menu_inventory.xml b/indra/newview/skins/default/xui/es/menu_inventory.xml index bbee88f600..8f606aef82 100644 --- a/indra/newview/skins/default/xui/es/menu_inventory.xml +++ b/indra/newview/skins/default/xui/es/menu_inventory.xml @@ -81,6 +81,7 @@ <menu label="Anexar como HUD" name="Attach To HUD"/> <menu_item_call label="Editar" name="Wearable Edit"/> <menu_item_call label="Ponerse" name="Wearable Wear"/> + <menu_item_call label="Añadir" name="Wearable Add"/> <menu_item_call label="Quitarse" name="Take Off"/> <menu_item_call label="--sin opciones--" name="--no options--"/> </menu> diff --git a/indra/newview/skins/default/xui/es/menu_outfit_gear.xml b/indra/newview/skins/default/xui/es/menu_outfit_gear.xml new file mode 100644 index 0000000000..39afa5e60b --- /dev/null +++ b/indra/newview/skins/default/xui/es/menu_outfit_gear.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Gear Outfit"> + <menu_item_call label="Ponerme - Reemplazar el vestuario actual" name="wear"/> + <menu_item_call label="Quitarme - Quitar del vestuario actual" name="take_off"/> + <menu label="Ropas nuevas" name="New Clothes"> + <menu_item_call label="Camisa nueva" name="New Shirt"/> + <menu_item_call label="Pantalón nuevo" name="New Pants"/> + <menu_item_call label="Zapatos nuevos" name="New Shoes"/> + <menu_item_call label="Calcetines nuevos" name="New Socks"/> + <menu_item_call label="Chaqueta nueva" name="New Jacket"/> + <menu_item_call label="Falda nueva" name="New Skirt"/> + <menu_item_call label="Guantes nuevos" name="New Gloves"/> + <menu_item_call label="Camiseta nueva" name="New Undershirt"/> + <menu_item_call label="Ropa interior nueva" name="New Underpants"/> + <menu_item_call label="Nueva Alfa" name="New Alpha"/> + <menu_item_call label="Tatuaje nuevo" name="New Tattoo"/> + </menu> + <menu label="Nuevas partes del cuerpo" name="New Body Parts"> + <menu_item_call label="Anatomía nueva" name="New Shape"/> + <menu_item_call label="Piel nueva" name="New Skin"/> + <menu_item_call label="Pelo nuevo" name="New Hair"/> + <menu_item_call label="Ojos nuevos" name="New Eyes"/> + </menu> + <menu_item_call label="Renombrar el vestuario" name="rename"/> + <menu_item_call label="Borrar el vestuario" name="delete_outfit"/> +</menu> diff --git a/indra/newview/skins/default/xui/es/menu_outfit_tab.xml b/indra/newview/skins/default/xui/es/menu_outfit_tab.xml new file mode 100644 index 0000000000..e674d6fa11 --- /dev/null +++ b/indra/newview/skins/default/xui/es/menu_outfit_tab.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Outfit"> + <menu_item_call label="Ponerme - Reemplazar el vestuario actual" name="wear_replace"/> + <menu_item_call label="Ponerme - Añadir al vestuario actual" name="wear_add"/> + <menu_item_call label="Quitarme - Quitar del vestuario actual" name="take_off"/> + <menu_item_call label="Editar el vestuario" name="edit"/> + <menu_item_call label="Renombrar" name="rename"/> + <menu_item_call label="Borrar el vestuario" name="delete"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/es/menu_save_outfit.xml b/indra/newview/skins/default/xui/es/menu_save_outfit.xml index f21dd32b80..a04ec75b60 100644 --- a/indra/newview/skins/default/xui/es/menu_save_outfit.xml +++ b/indra/newview/skins/default/xui/es/menu_save_outfit.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <toggleable_menu name="save_outfit_menu"> <menu_item_call label="Guardar" name="save_outfit"/> - <menu_item_call label="Guardar como nuevo" name="save_as_new_outfit"/> + <menu_item_call label="Guardar como" name="save_as_new_outfit"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/es/menu_viewer.xml b/indra/newview/skins/default/xui/es/menu_viewer.xml index 1bc3e981ce..f56ab00bf6 100644 --- a/indra/newview/skins/default/xui/es/menu_viewer.xml +++ b/indra/newview/skins/default/xui/es/menu_viewer.xml @@ -11,6 +11,7 @@ <menu_item_check label="Mi Inventario" name="Inventory"/> <menu_item_check label="Mi Inventario" name="ShowSidetrayInventory"/> <menu_item_check label="Mis gestos" name="Gestures"/> + <menu_item_check label="Mi voz" name="ShowVoice"/> <menu label="Mi estado" name="Status"> <menu_item_call label="Ausente" name="Set Away"/> <menu_item_call label="Ocupado" name="Set Busy"/> @@ -70,6 +71,12 @@ <menu_item_call label="Enlazar" name="Link"/> <menu_item_call label="Desenlazar" name="Unlink"/> <menu_item_check label="Editar las partes enlazadas" name="Edit Linked Parts"/> + <menu label="Seleccionar las partes enlazadas" name="Select Linked Parts"> + <menu_item_call label="Seleccionar la parte siguiente" name="Select Next Part"/> + <menu_item_call label="Seleccionar la parte previa" name="Select Previous Part"/> + <menu_item_call label="Incluir la parte siguiente" name="Include Next Part"/> + <menu_item_call label="Incluir la parte previa" name="Include Previous Part"/> + </menu> <menu_item_call label="Visión en lo seleccionado" name="Focus on Selection"/> <menu_item_call label="Zoom en lo seleccionado" name="Zoom to Selection"/> <menu label="Objeto" name="Object"> @@ -100,11 +107,11 @@ <menu_item_call label="Usar lo seleccionado como cuadrícula" name="Use Selection for Grid"/> <menu_item_call label="Opciones de la cuadrícula" name="Grid Options"/> </menu> - <menu label="Seleccionar las partes enlazadas" name="Select Linked Parts"> - <menu_item_call label="Seleccionar la parte siguiente" name="Select Next Part"/> - <menu_item_call label="Seleccionar la parte previa" name="Select Previous Part"/> - <menu_item_call label="Incluir la parte siguiente" name="Include Next Part"/> - <menu_item_call label="Incluir la parte previa" name="Include Previous Part"/> + <menu label="Subir" name="Upload"> + <menu_item_call label="Imagen ([COST] L$)..." name="Upload Image"/> + <menu_item_call label="Sonido ([COST] L$)..." name="Upload Sound"/> + <menu_item_call label="Animación ([COST] L$)..." name="Upload Animation"/> + <menu_item_call label="Masivo ([COST] L$ por archivo)..." name="Bulk Upload"/> </menu> </menu> <menu label="Ayuda" name="Help"> diff --git a/indra/newview/skins/default/xui/es/menu_wearable_list_item.xml b/indra/newview/skins/default/xui/es/menu_wearable_list_item.xml new file mode 100644 index 0000000000..d5f106ff96 --- /dev/null +++ b/indra/newview/skins/default/xui/es/menu_wearable_list_item.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Outfit Wearable Context Menu"> + <menu_item_call label="Ponerme" name="wear"/> + <menu_item_call label="Añadir" name="wear_add"/> + <menu_item_call label="Quitarme / Quitar" name="take_off_or_detach"/> + <menu_item_call label="Quitar" name="detach"/> + <context_menu label="Anexar a ▶" name="wearable_attach_to"/> + <context_menu label="Anexar al HUD ▶" name="wearable_attach_to_hud"/> + <menu_item_call label="Quitarme" name="take_off"/> + <menu_item_call label="Editar" name="edit"/> + <menu_item_call label="Perfil del objeto" name="object_profile"/> + <menu_item_call label="Mostrar original" name="show_original"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/es/notifications.xml b/indra/newview/skins/default/xui/es/notifications.xml index 47dc31f5f4..1ec29d6029 100644 --- a/indra/newview/skins/default/xui/es/notifications.xml +++ b/indra/newview/skins/default/xui/es/notifications.xml @@ -470,9 +470,8 @@ La calidad gráfica puede ajustarse en Preferencias > Gráficos. En la región [REGION] no se permite modificar el terreno. </notification> <notification name="CannotCopyWarning"> - No tienes permiso para copiar este ítem. -Si lo das, lo perderás de tu inventario. -¿Realmente quieres darlo? + No tienes permiso para copiar los elementos siguientes: +[ITEMS] y, si los das, los perderás del inventario. ¿Seguro que quieres ofrecerlos? <usetemplate name="okcancelbuttons" notext="No" yestext="Sí"/> </notification> <notification name="CannotGiveItem"> @@ -947,6 +946,26 @@ no tienes el permiso de comprar terreno para el grupo que tienes activado actual <button name="Cancel" text="Cancelar"/> </form> </notification> + <notification label="Guardar artículo" name="SaveWearableAs"> + Guardar el ítem en mi inventario como: + <form name="form"> + <input name="message"> + [DESC] (nuevo) + </input> + <button name="Offer" text="OK"/> + <button name="Cancel" text="Cancelar"/> + </form> + </notification> + <notification label="Renombrar el vestuario" name="RenameOutfit"> + Nombre del nuevo vestuario: + <form name="form"> + <input name="new_name"> + [NAME] + </input> + <button name="Offer" text="OK"/> + <button name="Cancel" text="Cancelar"/> + </form> + </notification> <notification name="RemoveFromFriends"> ¿Quieres quitar a [FIRST_NAME] [LAST_NAME] de tu lista de amigos? <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> @@ -1569,7 +1588,7 @@ Por favor, comprueba que tienes instalado el último visor, y dirígete a la Bas <notification name="RegionEntryAccessBlocked_Change"> No estás autorizado en esta región por tus preferencias sobre el nivel de calificación. -Pulsa 'Cambiar las preferencias' para incrementar las preferencias del nivel de calificación y obtener acceso inmediato. Esto te permitirá buscar contenidos [REGIONMATURITY] y tener acceso a ellos. Si prefieres cambiar esta opción más adelante, puedes hacerlo desde Yo > Preferencias > General. +Para entrar en la región que deseas, cambia tu preferencia de nivel de calificación. Esto te permitirá buscar contenidos [REGIONMATURITY] y tener acceso a ellos. Para deshacer los cambios, elige Yo > Preferencias > General. <form name="form"> <button name="OK" text="Cambiar las preferencias"/> <button default="true" name="Cancel" text="Cerrar"/> @@ -2581,6 +2600,21 @@ Pulsa Aceptar o Rehusar para coger o no la llamada. Pulsa Ignorar para ignorar a <notification name="VoiceLoginRetry"> Estamos creando un canal de voz para ti. Se puede tardar hasta un minuto. </notification> + <notification name="VoiceEffectsExpired"> + Una o más de las transformaciones de voz a las que estás suscrito han caducado. +[Pulsa aquí [URL]] para renovar la suscripción. + </notification> + <notification name="VoiceEffectsExpiredInUse"> + La transformación de voz activa ha caducado y se ha aplicado tu configuración de voz normal. +[Pulsa aquí [URL]] para renovar la suscripción. + </notification> + <notification name="VoiceEffectsWillExpire"> + Una o más de tus transformaciones de voz caducarán en menos de [INTERVAL] días. +[Pulsa aquí [URL]] para renovar la suscripción. + </notification> + <notification name="VoiceEffectsNew"> + Están disponibles nuevas transformaciones de voz. + </notification> <notification name="Cannot enter parcel: not a group member"> Sólo los miembros de un grupo determinado pueden visitar esta zona. </notification> @@ -2647,7 +2681,20 @@ Por tu seguridad, serán bloqueadas durante unos segundos. Se mostrará cuando haya suficiente espacio. </notification> <notification name="ShareNotification"> - Arrastrar ítems desde el inventario hasta una persona en el perfil del residente. + Selecciona los residentes con quienes deseas compartir. + </notification> + <notification name="ShareItemsConfirmation"> + ¿Estás seguro de que quieres compartir los elementos siguientes? + +[ITEMS] + +Con los siguientes residentes: + +[RESIDENTS] + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="ItemsShared"> + Los elementos se han compartido correctamente. </notification> <notification name="DeedToGroupFail"> Error de transferencia a grupo. @@ -2656,10 +2703,15 @@ Se mostrará cuando haya suficiente espacio. ( [EXISTENCE] segundos vivo) El avatar '[NAME]' tardó [TIME] segundos en dejar de aparecer como nube. </notification> - <notification name="AvatarRezSelfNotification"> + <notification name="AvatarRezSelfBakedDoneNotification"> ( [EXISTENCE] segundos vivo) Has terminado de texturizar tu vestuario en [TIME] segundos. </notification> + <notification name="AvatarRezSelfBakedUpdateNotification"> + ( [EXISTENCE] segundos vivo) +Has enviado una actualización de tu apariencia después de [TIME] segundos. +[STATUS] + </notification> <notification name="AvatarRezCloudNotification"> ( [EXISTENCE] segundos vivo) El avatar '[NAME]' se convirtió en nube. @@ -2680,10 +2732,32 @@ El avatar '[NAME]' ya está en modo de edición de apariencia. ( [EXISTENCE] segundos vivo) El avatar '[NAME]' desactivó el modo de apariencia. </notification> + <notification name="NoConnect"> + Tenemos problemas de conexión con [PROTOCOL] [HOSTID]. +Comprueba la configuración de la red y del servidor de seguridad. + <form name="form"> + <button name="OK" text="OK"/> + </form> + </notification> + <notification name="NoVoiceConnect"> + Tenemos problemas de conexión con tu servidor de voz: + +[HOSTID] + +No podrás establecer comunicaciones de voz. +Comprueba la configuración de la red y del servidor de seguridad. + <form name="form"> + <button name="OK" text="OK"/> + </form> + </notification> <notification name="AvatarRezLeftNotification"> ( [EXISTENCE] segundos vivo) El avatar '[NAME]' ya estaba totalmente cargado al salir. </notification> + <notification name="AvatarRezSelfBakeNotification"> + ( [EXISTENCE] segundos vivo) +Has cargado una textura obtenida mediante bake de [RESOLUTION] para '[BODYREGION]' después de [TIME] segundos. + </notification> <notification name="ConfirmLeaveCall"> ¿Estás seguro de que deseas salir de esta multiconferencia? <usetemplate ignoretext="Confirma antes de salir de la llamada" name="okcancelignore" notext="No" yestext="Sí"/> @@ -2693,7 +2767,7 @@ El avatar '[NAME]' ya estaba totalmente cargado al salir. Si lo haces, todos los residentes que se unan posteriormente a la llamada también serán silenciados, incluso cuando abandones la conferencia. ¿Deseas silenciar a todos? - <usetemplate ignoretext="Confirma que deseas silenciar a todos los participantes en una multiconferencia." name="okcancelignore" notext="OK" yestext="Cancelar"/> + <usetemplate ignoretext="Confirma que deseas silenciar a todos los participantes en una multiconferencia." name="okcancelignore" notext="Cancelar" yestext="OK"/> </notification> <global name="UnsupportedCPU"> - La velocidad de tu CPU no cumple los requerimientos mínimos. diff --git a/indra/newview/skins/default/xui/es/panel_edit_shape.xml b/indra/newview/skins/default/xui/es/panel_edit_shape.xml index e64ec9ab7c..368be35ed9 100644 --- a/indra/newview/skins/default/xui/es/panel_edit_shape.xml +++ b/indra/newview/skins/default/xui/es/panel_edit_shape.xml @@ -1,8 +1,15 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="edit_shape_panel"> - <text name="avatar_height"> - [HEIGHT] metros de alto - </text> + <string name="meters"> + Metros + </string> + <string name="feet"> + Pies + </string> + <string name="height"> + Altura: + </string> + <text name="avatar_height"/> <panel label="Camisa" name="accordion_panel"> <accordion name="wearable_accordion"> <accordion_tab name="shape_body_tab" title="Cuerpo"/> diff --git a/indra/newview/skins/default/xui/es/panel_edit_wearable.xml b/indra/newview/skins/default/xui/es/panel_edit_wearable.xml index 8bafe0f29a..176f122dc4 100644 --- a/indra/newview/skins/default/xui/es/panel_edit_wearable.xml +++ b/indra/newview/skins/default/xui/es/panel_edit_wearable.xml @@ -72,7 +72,7 @@ <string name="jacket_desc_text"> Chaqueta: </string> - <string name="skirt_skirt_desc_text"> + <string name="skirt_desc_text"> Falda: </string> <string name="gloves_desc_text"> @@ -100,11 +100,6 @@ <icon name="male_icon" tool_tip="Varón"/> <icon name="female_icon" tool_tip="Mujer"/> </panel> - <panel label="gear_buttom_panel" name="gear_buttom_panel"> - <button name="friends_viewsort_btn" tool_tip="Opciones"/> - <button name="add_btn" tool_tip="TODO"/> - <button name="del_btn" tool_tip="TODO"/> - </panel> <panel name="button_panel"> <button label="Guardar como" name="save_as_button"/> <button label="Revertir" name="revert_button"/> diff --git a/indra/newview/skins/default/xui/es/panel_outfit_edit.xml b/indra/newview/skins/default/xui/es/panel_outfit_edit.xml index b7c0e840b2..31648e8e80 100644 --- a/indra/newview/skins/default/xui/es/panel_outfit_edit.xml +++ b/indra/newview/skins/default/xui/es/panel_outfit_edit.xml @@ -13,7 +13,7 @@ <string name="Filter.All" value="Todos"/> <string name="Filter.Clothes/Body" value="Ropas/Cuerpo"/> <string name="Filter.Objects" value="Objetos"/> - <button label="editar" name="edit_wearable_btn"/> + <string name="Filter.Custom" value="Filtro personalizado"/> <text name="title" value="Editar el vestuario"/> <panel label="bottom_panel" name="header_panel"> <panel label="bottom_panel" name="outfit_name_and_status"> @@ -23,20 +23,16 @@ </panel> <layout_stack name="im_panels"> <layout_panel label="Panel de control de los MI" name="outfit_wearables_panel"> - <panel label="bottom_panel" name="edit_panel"/> - </layout_panel> - <layout_panel name="add_wearables_panel"> - <text name="add_to_outfit_label" value="Añadir a vestuario:"/> <layout_stack name="filter_panels"> - <layout_panel label="Panel de control de MI" name="filter_panel"> - <filter_editor label="Filtrar" name="look_item_filter"/> + <layout_panel name="add_button_and_combobox"> + <button label="Añadir más..." name="show_add_wearables_btn"/> + </layout_panel> + <layout_panel name="filter_panel"> + <filter_editor label="Filtrar artículos del inventario" name="look_item_filter"/> </layout_panel> </layout_stack> - <panel label="add_wearables_button_bar" name="add_wearables_button_bar"> - <button label="C" name="folder_view_btn"/> - <button label="L" name="list_view_btn"/> - </panel> </layout_panel> + <layout_panel name="add_wearables_panel"/> </layout_stack> <panel name="save_revert_button_bar"> <button label="Guardar" name="save_btn"/> diff --git a/indra/newview/skins/default/xui/es/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/es/panel_outfits_inventory.xml index 4b23094103..7691a680a1 100644 --- a/indra/newview/skins/default/xui/es/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/es/panel_outfits_inventory.xml @@ -7,8 +7,7 @@ <panel name="bottom_panel"> <button name="options_gear_btn" tool_tip="Ver más opciones"/> <dnd_button name="trash_btn" tool_tip="Quitar el ítem seleccionado"/> - <button label="Guardar el vestuario" name="make_outfit_btn" tool_tip="Guardar la apariencia como un vestuario"/> + <button label="Guardar como" name="save_btn"/> <button label="Ponerme" name="wear_btn" tool_tip="Ponerme el vestuario seleccionado"/> - <button label="Editar el vestuario" name="edit_current_outfit_btn"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_places.xml b/indra/newview/skins/default/xui/es/panel_places.xml index 1970284466..d186a04f4b 100644 --- a/indra/newview/skins/default/xui/es/panel_places.xml +++ b/indra/newview/skins/default/xui/es/panel_places.xml @@ -5,12 +5,12 @@ <filter_editor label="Filtrar mis lugares" name="Filter"/> <panel name="button_panel"> <button label="Teleporte" name="teleport_btn" tool_tip="Teleportar a la zona elegida"/> - <button label="Mapa" name="map_btn"/> + <button label="Mapa" name="map_btn" tool_tip="Mostrar esta zona en el mapa del mundo"/> <button label="Editar" name="edit_btn" tool_tip="Editar la información del hito"/> <button label="▼" name="overflow_btn" tool_tip="Ver más opciones"/> <button label="Guardar" name="save_btn"/> <button label="Cancelar" name="cancel_btn"/> <button label="Cerrar" name="close_btn"/> - <button label="Perfil" name="profile_btn"/> + <button label="Perfil" name="profile_btn" tool_tip="Mostrar el perfil del lugar"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/es/panel_preferences_advanced.xml index 6e6d0be81f..d65868c0a8 100644 --- a/indra/newview/skins/default/xui/es/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_advanced.xml @@ -13,7 +13,7 @@ </text> <check_box label="Construir/Editar" name="edit_camera_movement" tool_tip="Usar el posicionamiento automático de la cámara al entrar en o salir del modo de edición"/> <check_box label="Apariencia" name="appearance_camera_movement" tool_tip="Usar el posicionamiento automático de la cámara mientras se está editando"/> - <check_box label="Barra lateral" name="appearance_sidebar_positioning" tool_tip="Usar el posicionamiento automático de la cámara para la barra lateral"/> + <check_box initial_value="true" label="Barra lateral" name="appearance_sidebar_positioning" tool_tip="Usar el posicionamiento automático de la cámara para la barra lateral"/> <check_box label="Verme en vista subjetiva" name="first_person_avatar_visible"/> <check_box label="Las teclas del cursor siempre para moverme" name="arrow_keys_move_avatar_check"/> <check_box label="Correr siempre: atajo de teclado" name="tap_tap_hold_to_run"/> diff --git a/indra/newview/skins/default/xui/es/panel_status_bar.xml b/indra/newview/skins/default/xui/es/panel_status_bar.xml index d4404fd9b5..13ed1acf0b 100644 --- a/indra/newview/skins/default/xui/es/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/es/panel_status_bar.xml @@ -21,8 +21,10 @@ <panel.string name="buycurrencylabel"> [AMT] L$ </panel.string> - <button label="" label_selected="" name="buycurrency" tool_tip="Mi saldo"/> - <button label="Comprar L$" name="buyL" tool_tip="Pulsa para comprar más L$"/> + <panel name="balance_bg"> + <text name="balance" tool_tip="Mi saldo" value="20 L$"/> + <button label="COMPRAR L$" name="buyL" tool_tip="Pulsa para comprar más L$"/> + </panel> <text name="TimeText" tool_tip="Hora actual (Pacífico)"> 24:00 AM PST </text> diff --git a/indra/newview/skins/default/xui/es/panel_voice_effect.xml b/indra/newview/skins/default/xui/es/panel_voice_effect.xml new file mode 100644 index 0000000000..2cc36b7cae --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_voice_effect.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_voice_effect"> + <string name="no_voice_effect"> + Sin transformación de voz + </string> + <string name="preview_voice_effects"> + Probar transformación de voz ▶ + </string> + <string name="get_voice_effects"> + Obtener transformación de voz ▶ + </string> + <combo_box name="voice_effect" tool_tip="Selecciona un efecto de transformación de voz para cambiar tu voz."> + <combo_box.item label="Sin transformación de voz" name="no_voice_effect"/> + </combo_box> +</panel> diff --git a/indra/newview/skins/default/xui/es/sidepanel_inventory.xml b/indra/newview/skins/default/xui/es/sidepanel_inventory.xml index dcaddd8e42..2c22a7ba46 100644 --- a/indra/newview/skins/default/xui/es/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/es/sidepanel_inventory.xml @@ -2,12 +2,12 @@ <panel label="Cosas" name="objects panel"> <panel label="" name="sidepanel__inventory_panel"> <panel name="button_panel"> - <button label="Perfil" name="info_btn"/> - <button label="Compartir" name="share_btn"/> - <button label="Comprar" name="shop_btn"/> - <button label="Ponerme" name="wear_btn"/> + <button label="Perfil" name="info_btn" tool_tip="Mostrar el perfil del objeto"/> + <button label="Compartir" name="share_btn" tool_tip="Compartir un objeto del inventario"/> + <button label="Comprar" name="shop_btn" tool_tip="Abrir la página web del mercado"/> + <button label="Ponerme" name="wear_btn" tool_tip="Ponerme el vestuario seleccionado"/> <button label="Play" name="play_btn"/> - <button label="Teleporte" name="teleport_btn"/> + <button label="Teleporte" name="teleport_btn" tool_tip="Teleportar a la zona elegida"/> </panel> </panel> </panel> diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml index 885e974b3b..6bd9ceb6ef 100644 --- a/indra/newview/skins/default/xui/es/strings.xml +++ b/indra/newview/skins/default/xui/es/strings.xml @@ -95,7 +95,7 @@ El nombre de host utilizado para acceder al servidor no es válido. Comprueba tu SLURL o el nombre de host de la cuadrícula. </string> <string name="CertExpired"> - Parece que el certificado que devolvió la cuadrícula está caducado. Comprueba el reloj del sistema o consulta al administrador de la cuadrícula. + Parece que el certificado que devolvió la cuadrícula está caducado. Comprueba el reloj del sistema o consulta al administrador de la cuadrícula. </string> <string name="CertKeyUsage"> El certificado que devolvió el servidor no puede utilizarse para SSL. Ponte en contacto con el administrador de la cuadrícula. @@ -732,6 +732,12 @@ <string name="land_type_unknown"> (desconocido) </string> + <string name="Estate / Full Region"> + Estado /Región completa + </string> + <string name="Mainland / Full Region"> + Continente / Región completa + </string> <string name="all_files"> Todos los archivos </string> @@ -876,6 +882,9 @@ <string name="NewWearable"> Nuevo [WEARABLE_ITEM] </string> + <string name="CreateNewWearable"> + Crear [WEARABLE_TYPE] + </string> <string name="next"> Siguiente </string> @@ -3448,6 +3457,9 @@ Si sigues recibiendo este mensaje, contacta con [SUPPORT_SITE]. <string name="session_initialization_timed_out_error"> Se ha agotado el tiempo del inicio de sesión </string> + <string name="voice_morphing_url"> + http://secondlife.com/landing/voicemorphing + </string> <string name="paid_you_ldollars"> [NAME] te ha pagado [AMOUNT] L$ </string> @@ -3618,16 +3630,16 @@ Denuncia de infracción <string name="Male - Wow"> Varón - Admiración </string> - <string name="FeMale - Excuse me"> + <string name="Female - Excuse me"> Mujer - Disculpa </string> - <string name="FeMale - Get lost"> + <string name="Female - Get lost"> Mujer – Déjame en paz </string> - <string name="FeMale - Blow kiss"> + <string name="Female - Blow kiss"> Mujer - Lanzar un beso </string> - <string name="FeMale - Boo"> + <string name="Female - Boo"> Mujer - Abucheo </string> <string name="Female - Bored"> @@ -3660,4 +3672,32 @@ Denuncia de infracción <string name="texture_load_dimensions_error"> No se puede subir imágenes mayores de [WIDTH]*[HEIGHT] </string> + <string name="words_separator" value=","/> + <string name="server_is_down"> + Parece que hay algún problema que ha escapado a nuestros controles. + + Visita status.secondlifegrid.net para ver si hay alguna incidencia conocida que esté afectando al servicio. + Si sigues teniendo problemas, comprueba la configuración de la red y del servidor de seguridad. + </string> + <string name="dateTimeWeekdaysNames"> + Domingo:Lunes:Martes:Miércoles:Jueves:Viernes:Sábado + </string> + <string name="dateTimeWeekdaysShortNames"> + Dom:Lun:Mar:Mié:Jue:Vie:Sáb + </string> + <string name="dateTimeMonthNames"> + Enero:Febrero:Marzo:Abril:Mayo:Junio:Julio:Agosto:Septiembre:Octubre:Noviembre:Diciembre + </string> + <string name="dateTimeMonthShortNames"> + Ene:Feb:Mar:Abr:May:Jun:Jul:Ago:Sep:Oct:Nov:Dic + </string> + <string name="dateTimeDayFormat"> + [MDAY] + </string> + <string name="dateTimeAM"> + AM + </string> + <string name="dateTimePM"> + PM + </string> </strings> diff --git a/indra/newview/skins/default/xui/it/floater_camera.xml b/indra/newview/skins/default/xui/it/floater_camera.xml index febbfd2739..f524bf9874 100644 --- a/indra/newview/skins/default/xui/it/floater_camera.xml +++ b/indra/newview/skins/default/xui/it/floater_camera.xml @@ -9,35 +9,28 @@ <floater.string name="move_tooltip"> Muovi la telecamera su e giù e a sinistra e destra </floater.string> - <floater.string name="orbit_mode_title"> - Ruota visuale + <floater.string name="camera_modes_title"> + Modalità della fotocamera </floater.string> <floater.string name="pan_mode_title"> - Panoramica + Ruota visuale - Ingrandisci - Panoramica </floater.string> - <floater.string name="avatar_view_mode_title"> - Valori predefiniti + <floater.string name="presets_mode_title"> + Visuali predefinite </floater.string> <floater.string name="free_mode_title"> Vedi oggetto </floater.string> <panel name="controls"> - <joystick_track name="cam_track_stick" tool_tip="Sposta la visuale in su e in giù, a sinistra e a destra"/> <panel name="zoom" tool_tip="Avvicina la telecamera nell'inquadratura"> + <joystick_rotate name="cam_rotate_stick" tool_tip="Ruota la visuale intorno al punto focale"/> <slider_bar name="zoom_slider" tool_tip="Zoom verso il centro focale"/> - </panel> - <joystick_rotate name="cam_rotate_stick" tool_tip="Ruota la visuale intorno al punto focale"/> - <panel name="camera_presets"> - <button name="rear_view" tool_tip="Visuale posteriore"/> - <button name="group_view" tool_tip="Visuale di gruppo"/> - <button name="front_view" tool_tip="Visuale frontale"/> - <button name="mouselook_view" tool_tip="Visuale soggettiva"/> + <joystick_track name="cam_track_stick" tool_tip="Sposta la visuale in su e in giù, a sinistra e a destra"/> </panel> </panel> <panel name="buttons"> - <button label="" name="orbit_btn" tool_tip="Ruota la visuale"/> - <button label="" name="pan_btn" tool_tip="Visuale panoramica"/> - <button label="" name="avatarview_btn" tool_tip="Valori predefiniti"/> - <button label="" name="freecamera_btn" tool_tip="Vedi oggetto"/> + <button label="" name="presets_btn" tool_tip="Visuali predefinite"/> + <button label="" name="pan_btn" tool_tip="Ruota visuale - Ingrandisci - Panoramica"/> + <button label="" name="avatarview_btn" tool_tip="Modalità della fotocamera"/> </panel> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_incoming_call.xml b/indra/newview/skins/default/xui/it/floater_incoming_call.xml index 81a6ea7a60..4d9c1b98dd 100644 --- a/indra/newview/skins/default/xui/it/floater_incoming_call.xml +++ b/indra/newview/skins/default/xui/it/floater_incoming_call.xml @@ -16,7 +16,13 @@ ha aderito ad una chiamata in chat vocale in conferenza. </floater.string> <floater.string name="VoiceInviteGroup"> - ha accettato una chiamata in Chat vocale con il gruppo [GROUP]. + ha appena aderito al canale voce '[GROUP]'. + </floater.string> + <floater.string name="VoiceInviteQuestionGroup"> + Vuoi abbandonare [CURRENT_CHAT] e aderire alla chiamata con '[GROUP]'? + </floater.string> + <floater.string name="VoiceInviteQuestionDefault"> + Vuoi abbandonare [CURRENT_CHAT] e aderire a questa voice chat? </floater.string> <text name="question"> Vuoi abbandonare [CURRENT_CHAT] e aderire a questa voice chat? diff --git a/indra/newview/skins/default/xui/it/floater_snapshot.xml b/indra/newview/skins/default/xui/it/floater_snapshot.xml index 2f5c86985c..d2ba980f62 100644 --- a/indra/newview/skins/default/xui/it/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/it/floater_snapshot.xml @@ -5,12 +5,19 @@ </floater.string> <button label="Aggiorna la fotografia" name="new_snapshot_btn"/> <line_editor label="Descrizione" name="description"/> - <button label="Condividi foto" name="share"/> - <button label="Condividi su Web" name="share_to_web"/> - <button label="Salva nell'inventario" name="save_to_inventory"/> - <button label="Salva foto" name="save"/> - <button label="Invia foto via e-mail" name="share_to_email"/> - <button label="Salva sul mio computer" name="save_to_computer"/> - <button label="Imposta come foto del profilo" name="set_profile_pic"/> - <button label="Indietro" name="cancel"/> + <panel name="panel_snapshot_main"> + <button label="Condividi foto" name="share"/> + <button label="Salva foto" name="save"/> + <button label="Imposta come foto del profilo" name="set_profile_pic"/> + </panel> + <panel name="panel_snapshot_share"> + <button label="Condividi su Web" name="share_to_web"/> + <button label="Invia foto via e-mail" name="share_to_email"/> + <button label="Indietro" name="cancel_share"/> + </panel> + <panel name="panel_snapshot_save"> + <button label="Salva nell'inventario" name="save_to_inventory"/> + <button label="Salva sul mio computer" name="save_to_computer"/> + <button label="Indietro" name="cancel_save"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_voice_controls.xml b/indra/newview/skins/default/xui/it/floater_voice_controls.xml index 07368da0dd..d2fd462062 100644 --- a/indra/newview/skins/default/xui/it/floater_voice_controls.xml +++ b/indra/newview/skins/default/xui/it/floater_voice_controls.xml @@ -19,8 +19,10 @@ <layout_panel name="my_panel"> <text name="user_text" value="Il mio avatar:"/> </layout_panel> - <layout_panel name="leave_call_btn_panel"> - <button label="Abbandona chiamata" name="leave_call_btn"/> - </layout_panel> + <layout_stack name="voice_effect_and_leave_call_stack"> + <layout_panel name="leave_call_btn_panel"> + <button label="Abbandona chiamata" name="leave_call_btn"/> + </layout_panel> + </layout_stack> </layout_stack> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_voice_effect.xml b/indra/newview/skins/default/xui/it/floater_voice_effect.xml new file mode 100644 index 0000000000..202be752c9 --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_voice_effect.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater label="Luoghi" name="voice_effects" title="ANTEPRIMA MANIPOLAZIONE VOCE"> + <string name="no_voice_effect"> + (Nessuna manipolazione voce) + </string> + <string name="active_voice_effect"> + (Attivato) + </string> + <string name="unsubscribed_voice_effect"> + (Iscrizione annullata) + </string> + <string name="new_voice_effect"> + (Nuovo!) + </string> + <text name="status_text"> + Per ascoltare un'anteprima degli effetti di manipolazione della voce, clicca sul pulsante Registra per registrare un campione di voce, quindi fai clic su uno degli effetti per ascoltare il risultato. + +Per ricollegarti alla voce nei dintorni, chiudi la finestra. + </text> + <button label="Registra campione" name="record_btn" tool_tip="Registra un campione della tua voce."/> + <button label="Ferma" name="record_stop_btn"/> + <text name="voice_morphing_link"> + [[URL] Ottieni manipolazione voce] + </text> + <scroll_list name="voice_effect_list" tool_tip="Registra un campione della tua voce, quindi fai clic su uno degli effetti per un'anteprima del risultato."> + <scroll_list.columns label="Manipolazione voce" name="name"/> + <scroll_list.columns label="Scade il" name="expires"/> + </scroll_list> +</floater> diff --git a/indra/newview/skins/default/xui/it/inspect_object.xml b/indra/newview/skins/default/xui/it/inspect_object.xml index fd58c18e0b..d8ab10cfda 100644 --- a/indra/newview/skins/default/xui/it/inspect_object.xml +++ b/indra/newview/skins/default/xui/it/inspect_object.xml @@ -9,7 +9,7 @@ </string> <string name="CreatorAndOwner"> Di [CREATOR] -proprietario [OWNER] +Proprietario [OWNER] </string> <string name="Price"> L$ [AMOUNT] @@ -23,6 +23,13 @@ proprietario [OWNER] <string name="Sit"> Siediti </string> + <text name="object_name" value="Nome oggetto di prova che si trova su due righe ed è molto lungo"/> + <text name="price_text"> + L$ 30.000 + </text> + <text name="object_description"> + Questa è una descrizione di un oggetto che è molto lunga ed è di almeno 80 caratteri, ma potrebbe essere di 120 caratteri a questo punto. Chi lo sa veramente? + </text> <button label="Acquista" name="buy_btn"/> <button label="Paga" name="pay_btn"/> <button label="Prendi copia" name="take_free_copy_btn"/> diff --git a/indra/newview/skins/default/xui/it/menu_cof_attachment.xml b/indra/newview/skins/default/xui/it/menu_cof_attachment.xml new file mode 100644 index 0000000000..699490c8f1 --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_cof_attachment.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="COF Attachment"> + <menu_item_call label="Stacca" name="detach"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/it/menu_cof_body_part.xml b/indra/newview/skins/default/xui/it/menu_cof_body_part.xml new file mode 100644 index 0000000000..1e3658ef45 --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_cof_body_part.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="COF Body"> + <menu_item_call label="Sostituisci" name="replace"/> + <menu_item_call label="Modifica" name="edit"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/it/menu_cof_clothing.xml b/indra/newview/skins/default/xui/it/menu_cof_clothing.xml new file mode 100644 index 0000000000..5b4f8c0642 --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_cof_clothing.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="COF Clothing"> + <menu_item_call label="Togli" name="take_off"/> + <menu_item_call label="Un livello in alto" name="move_up"/> + <menu_item_call label="Un livello in basso" name="move_down"/> + <menu_item_call label="Modifica" name="edit"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/it/menu_cof_gear.xml b/indra/newview/skins/default/xui/it/menu_cof_gear.xml new file mode 100644 index 0000000000..10524ba92d --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_cof_gear.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Gear COF"> + <menu label="Nuovi abiti" name="COF.Gear.New_Clothes"/> + <menu label="Nuove parti del corpo" name="COF.Geear.New_Body_Parts"/> +</menu> diff --git a/indra/newview/skins/default/xui/it/menu_hide_navbar.xml b/indra/newview/skins/default/xui/it/menu_hide_navbar.xml index ee50a18ba5..2c2c6c4bc5 100644 --- a/indra/newview/skins/default/xui/it/menu_hide_navbar.xml +++ b/indra/newview/skins/default/xui/it/menu_hide_navbar.xml @@ -2,4 +2,5 @@ <menu name="hide_navbar_menu"> <menu_item_check label="Mostra la barra di navigazione" name="ShowNavbarNavigationPanel"/> <menu_item_check label="Mostra la barra dei Preferiti" name="ShowNavbarFavoritesPanel"/> + <menu_item_check label="Mostra mini barra del luogo" name="ShowMiniLocationPanel"/> </menu> diff --git a/indra/newview/skins/default/xui/it/menu_inventory.xml b/indra/newview/skins/default/xui/it/menu_inventory.xml index b127f8b816..fb8361ad05 100644 --- a/indra/newview/skins/default/xui/it/menu_inventory.xml +++ b/indra/newview/skins/default/xui/it/menu_inventory.xml @@ -81,6 +81,7 @@ <menu label="Attacca all'HUD" name="Attach To HUD"/> <menu_item_call label="Modifica" name="Wearable Edit"/> <menu_item_call label="Indossa" name="Wearable Wear"/> + <menu_item_call label="Aggiungi" name="Wearable Add"/> <menu_item_call label="Togli" name="Take Off"/> <menu_item_call label="--nessuna opzione--" name="--no options--"/> </menu> diff --git a/indra/newview/skins/default/xui/it/menu_outfit_gear.xml b/indra/newview/skins/default/xui/it/menu_outfit_gear.xml new file mode 100644 index 0000000000..cf39779b67 --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_outfit_gear.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Gear Outfit"> + <menu_item_call label="Indossa - Sostituisci vestiario attuale" name="wear"/> + <menu_item_call label="Togli - Rimuovi dal vestiario attuale" name="take_off"/> + <menu label="Nuovi abiti" name="New Clothes"> + <menu_item_call label="Nuova camicia" name="New Shirt"/> + <menu_item_call label="Nuovi pantaloni" name="New Pants"/> + <menu_item_call label="Nuove scarpe" name="New Shoes"/> + <menu_item_call label="Nuove calze" name="New Socks"/> + <menu_item_call label="Nuova giacca" name="New Jacket"/> + <menu_item_call label="Nuova gonna" name="New Skirt"/> + <menu_item_call label="Nuovi guanti" name="New Gloves"/> + <menu_item_call label="Nuova maglietta intima" name="New Undershirt"/> + <menu_item_call label="Nuovi slip" name="New Underpants"/> + <menu_item_call label="Nuovo Alpha (trasparenza)" name="New Alpha"/> + <menu_item_call label="Nuovo tatuaggio" name="New Tattoo"/> + </menu> + <menu label="Nuove parti del corpo" name="New Body Parts"> + <menu_item_call label="Nuova figura corporea" name="New Shape"/> + <menu_item_call label="Nuova pelle" name="New Skin"/> + <menu_item_call label="Nuovi capelli" name="New Hair"/> + <menu_item_call label="Nuovi occhi" name="New Eyes"/> + </menu> + <menu_item_call label="Cambia nome del vestiario" name="rename"/> + <menu_item_call label="Elimina vestito" name="delete_outfit"/> +</menu> diff --git a/indra/newview/skins/default/xui/it/menu_outfit_tab.xml b/indra/newview/skins/default/xui/it/menu_outfit_tab.xml new file mode 100644 index 0000000000..4e0caf832c --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_outfit_tab.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Outfit"> + <menu_item_call label="Indossa - Sostituisci vestiario attuale" name="wear_replace"/> + <menu_item_call label="Indossa - Aggiungi al vestiario attuale" name="wear_add"/> + <menu_item_call label="Togli - Rimuovi dal vestiario attuale" name="take_off"/> + <menu_item_call label="Modifica vestiario" name="edit"/> + <menu_item_call label="Modifica nome" name="rename"/> + <menu_item_call label="Elimina vestito" name="delete"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/it/menu_save_outfit.xml b/indra/newview/skins/default/xui/it/menu_save_outfit.xml index ac7b40ca48..4882a8ac64 100644 --- a/indra/newview/skins/default/xui/it/menu_save_outfit.xml +++ b/indra/newview/skins/default/xui/it/menu_save_outfit.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <toggleable_menu name="save_outfit_menu"> <menu_item_call label="Salva" name="save_outfit"/> - <menu_item_call label="Salva come nuovo" name="save_as_new_outfit"/> + <menu_item_call label="Salva con nome" name="save_as_new_outfit"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/it/menu_viewer.xml b/indra/newview/skins/default/xui/it/menu_viewer.xml index 999f89a80d..693f4f158e 100644 --- a/indra/newview/skins/default/xui/it/menu_viewer.xml +++ b/indra/newview/skins/default/xui/it/menu_viewer.xml @@ -11,6 +11,7 @@ <menu_item_check label="Il mio inventario" name="Inventory"/> <menu_item_check label="Il mio inventario" name="ShowSidetrayInventory"/> <menu_item_check label="Le mie gesture" name="Gestures"/> + <menu_item_check label="La mia voce" name="ShowVoice"/> <menu label="Il mio stato" name="Status"> <menu_item_call label="Assente" name="Set Away"/> <menu_item_call label="Non disponibile" name="Set Busy"/> @@ -70,6 +71,12 @@ <menu_item_call label="Collegamento" name="Link"/> <menu_item_call label="Scollega" name="Unlink"/> <menu_item_check label="Modifica le parti collegate" name="Edit Linked Parts"/> + <menu label="Seleziona parti collegate" name="Select Linked Parts"> + <menu_item_call label="Seleziona parte successiva" name="Select Next Part"/> + <menu_item_call label="Seleziona parte precedente" name="Select Previous Part"/> + <menu_item_call label="Includi parte successiva" name="Include Next Part"/> + <menu_item_call label="Includi parte precedente" name="Include Previous Part"/> + </menu> <menu_item_call label="Ingrandisci selezione" name="Focus on Selection"/> <menu_item_call label="Zoom sulla selezione" name="Zoom to Selection"/> <menu label="Oggetto" name="Object"> @@ -100,11 +107,11 @@ <menu_item_call label="Usa la selezione per la griglia" name="Use Selection for Grid"/> <menu_item_call label="Opzioni della griglia" name="Grid Options"/> </menu> - <menu label="Seleziona parti collegate" name="Select Linked Parts"> - <menu_item_call label="Seleziona parte successiva" name="Select Next Part"/> - <menu_item_call label="Seleziona parte precedente" name="Select Previous Part"/> - <menu_item_call label="Includi parte successiva" name="Include Next Part"/> - <menu_item_call label="Includi parte precedente" name="Include Previous Part"/> + <menu label="Carica sul server" name="Upload"> + <menu_item_call label="Immagine ([COST] L$)..." name="Upload Image"/> + <menu_item_call label="Suono ([COST] L$)..." name="Upload Sound"/> + <menu_item_call label="Animazione ([COST] L$)..." name="Upload Animation"/> + <menu_item_call label="In blocco ([COST] L$ per file)..." name="Bulk Upload"/> </menu> </menu> <menu label="Aiuto" name="Help"> diff --git a/indra/newview/skins/default/xui/it/menu_wearable_list_item.xml b/indra/newview/skins/default/xui/it/menu_wearable_list_item.xml new file mode 100644 index 0000000000..79ef188993 --- /dev/null +++ b/indra/newview/skins/default/xui/it/menu_wearable_list_item.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Outfit Wearable Context Menu"> + <menu_item_call label="Indossa" name="wear"/> + <menu_item_call label="Aggiungi" name="wear_add"/> + <menu_item_call label="Togli / Stacca" name="take_off_or_detach"/> + <menu_item_call label="Stacca" name="detach"/> + <context_menu label="Attacca a ▶" name="wearable_attach_to"/> + <context_menu label="Attacca a HUD ▶" name="wearable_attach_to_hud"/> + <menu_item_call label="Togli" name="take_off"/> + <menu_item_call label="Modifica" name="edit"/> + <menu_item_call label="Profilo dell'oggetto" name="object_profile"/> + <menu_item_call label="Mostra originale" name="show_original"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/it/notifications.xml b/indra/newview/skins/default/xui/it/notifications.xml index 058353da38..9f1472fc6f 100644 --- a/indra/newview/skins/default/xui/it/notifications.xml +++ b/indra/newview/skins/default/xui/it/notifications.xml @@ -472,8 +472,9 @@ La qualità grafica può essere aumentata in Preferenze > Grafica. La regione [REGION] non consente di terraformare. </notification> <notification name="CannotCopyWarning"> - Non hai il permesso di copiare questo elemento e lo perderai dal tuo inventario se lo regali. -Confermi veramente di offrire questo elemento? + Non hai l'autorizzazione a copiare i seguenti oggetti: +[ITEMS] +e se li dai via, verranno eliminati dal tuo inventario. Sicuro di volere offrire questi oggetti? <usetemplate name="okcancelbuttons" notext="No" yestext="Si"/> </notification> <notification name="CannotGiveItem"> @@ -942,6 +943,26 @@ Offri l'amicizia a [NAME]? <button name="Cancel" text="Annulla"/> </form> </notification> + <notification label="Salva capo da indossare" name="SaveWearableAs"> + Salva oggetto nel mio inventario come: + <form name="form"> + <input name="message"> + [DESC] (nuovo) + </input> + <button name="Offer" text="OK"/> + <button name="Cancel" text="Annulla"/> + </form> + </notification> + <notification label="Cambia nome del vestiario" name="RenameOutfit"> + Nuovo nome per il vestiario: + <form name="form"> + <input name="new_name"> + [NAME] + </input> + <button name="Offer" text="OK"/> + <button name="Cancel" text="Annulla"/> + </form> + </notification> <notification name="RemoveFromFriends"> Vuoi rimuovere remove [FIRST_NAME] [LAST_NAME] dalla lista dei tuoi amici? <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> @@ -1560,9 +1581,9 @@ Vuoi andare alla Knowledge Base per ulteriori informazioni sulle categorie di ac Non sei ammesso in questa regione a causa della tua categoria d'accesso. </notification> <notification name="RegionEntryAccessBlocked_Change"> - Non ti è consentito entrare in quella regione a causa della tua categoria di accesso impostata nelle preferenze. + Non ti è consentito entrare in quella regione a causa della categoria di accesso impostata nelle preferenze. -Clicca su Cambia preferenze per modificare la categoria di accesso e potere entrare subito. Ciò ti consentirà di effettuare ricerche di contenuti di categoria [REGIONMATURITY]. Potrai modificare queste impostazioni in un secondo momento da Io > Preferenze > Generali. +Per entrare nella regione, dovrai modificare la tua categoria di accesso. Ciò ti consentirà inoltre di effettuare ricerche di contenuti di categoria [REGIONMATURITY]. Per annullare le modifiche in un secondo momento, vai a Io > Preferenze > Generali. <form name="form"> <button name="OK" text="Cambia preferenza"/> <button default="true" name="Cancel" text="Chiudi"/> @@ -2577,6 +2598,21 @@ Clicca su Accetta per unirti alla chat oppure su Declina per declinare l'in <notification name="VoiceLoginRetry"> Stiamo creando una canale voice per te. Questo può richiedere fino a un minuto. </notification> + <notification name="VoiceEffectsExpired"> + Almeno una delle manipolazioni vocali alle quali sei iscritto è scaduta. +[[URL] Fai clic qui] per rinnovare l'abbonamento. + </notification> + <notification name="VoiceEffectsExpiredInUse"> + Poiché la manipolazione vocale attiva è scaduta, sono state applicate le tue impostazioni normali. +[[URL] Fai clic qui] per rinnovare l'abbonamento. + </notification> + <notification name="VoiceEffectsWillExpire"> + Almeno una delle tue manipolazioni vocali scadrà tra meno di [INTERVAL] giorni. +[[URL] Fai clic qui] per rinnovare l'abbonamento. + </notification> + <notification name="VoiceEffectsNew"> + Sono disponibili nuove manipolazioni vocali. + </notification> <notification name="Cannot enter parcel: not a group member"> Soltanto i membri di un determinato gruppo possono visitare questa zona. </notification> @@ -2643,18 +2679,36 @@ Per sicurezza, verranno bloccati per alcuni secondi. Il pulsante verrà visualizzato quando lo spazio sarà sufficiente. </notification> <notification name="ShareNotification"> - Trascina articoli dell'inventario su una persona nel selettore residenti + Scegli i residenti con i quali condividere. + </notification> + <notification name="ShareItemsConfirmation"> + Sei sicuro di volere condividere gli oggetti + +[ITEMS] + +Con i seguenti residenti? + +[RESIDENTS] + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Ok"/> + </notification> + <notification name="ItemsShared"> + Gli oggetti sono stati condivisi. </notification> <notification name="DeedToGroupFail"> Cessione al gruppo non riuscita. </notification> <notification name="AvatarRezNotification"> - ( presente da [EXISTENCE] secondi ) -Nuvola avatar '[NAME]' risolta in [TIME] secondi. + ( in esistenza da [EXISTENCE] secondi ) +Nuvola avatar '[NAME]' dileguata dopo [TIME] secondi. </notification> - <notification name="AvatarRezSelfNotification"> - ( presente da [EXISTENCE] secondi ) -Baking dei vestiti eseguito in [TIME] secondi. + <notification name="AvatarRezSelfBakedDoneNotification"> + ( in esistenza da [EXISTENCE] secondi ) +Baking dei vestiti terminato dopo [TIME] secondi. + </notification> + <notification name="AvatarRezSelfBakedUpdateNotification"> + ( in esistenza da [EXISTENCE] secondi ) +Hai inviato un aggiornamento al tuo aspetto dopo [TIME] secondi. +[STATUS] </notification> <notification name="AvatarRezCloudNotification"> ( presente da [EXISTENCE] secondi ) @@ -2676,10 +2730,32 @@ Avatar '[NAME]' è entrato nella modalità aspetto. ( presente da [EXISTENCE] secondi ) Avatar '[NAME]' ha lasciato la modalità aspetto. </notification> + <notification name="NoConnect"> + Ci sono problemi di connessione tramite [PROTOCOL] [HOSTID]. +Ti consigliamo di controllare le tue impostazioni di rete e della firewall. + <form name="form"> + <button name="OK" text="OK"/> + </form> + </notification> + <notification name="NoVoiceConnect"> + A causa di problemi di connessione al server vocale + +[HOSTID] + +le comunicazioni tramite voce non saranno disponibili. +Ti consigliamo di controllare le tue impostazioni di rete e della firewall. + <form name="form"> + <button name="OK" text="OK"/> + </form> + </notification> <notification name="AvatarRezLeftNotification"> ( presente da [EXISTENCE] secondi ) Avatar '[NAME]' è partito completamente caricato. </notification> + <notification name="AvatarRezSelfBakeNotification"> + ( in esistenza da [EXISTENCE] secondi ) +Hai caricato una texture [RESOLUTION] completata per '[BODYREGION]' dopo [TIME] secondi. + </notification> <notification name="ConfirmLeaveCall"> Sei sicuro di volere uscire dalla chiamata? <usetemplate ignoretext="Conferma prima di uscire dalla chiamata" name="okcancelignore" notext="No" yestext="Sì"/> @@ -2690,7 +2766,7 @@ In questo modo verrà disattivato l'audio anche di tutti i residenti che si uniscono alla chiamata in un secondo momento, anche dopo che tu ti fossi scollegato. Disattiva audio di tutti? - <usetemplate ignoretext="Conferma prima di disattivare l'audio di tutti i partecipanti alla chiamata di gruppo" name="okcancelignore" notext="Ok" yestext="Annulla"/> + <usetemplate ignoretext="Conferma prima di disattivare l'audio di tutti i partecipanti alla chiamata di gruppo" name="okcancelignore" notext="Annulla" yestext="Ok"/> </notification> <global name="UnsupportedCPU"> - La velocità della tua CPU non soddisfa i requisiti minimi. diff --git a/indra/newview/skins/default/xui/it/panel_edit_shape.xml b/indra/newview/skins/default/xui/it/panel_edit_shape.xml index ab77548f26..fd6a7af69c 100644 --- a/indra/newview/skins/default/xui/it/panel_edit_shape.xml +++ b/indra/newview/skins/default/xui/it/panel_edit_shape.xml @@ -1,8 +1,15 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="edit_shape_panel"> - <text name="avatar_height"> - Statura: [HEIGHT] metri - </text> + <string name="meters"> + Metri + </string> + <string name="feet"> + Piedi + </string> + <string name="height"> + Statura: + </string> + <text name="avatar_height"/> <panel label="Camicia" name="accordion_panel"> <accordion name="wearable_accordion"> <accordion_tab name="shape_body_tab" title="Corpo"/> diff --git a/indra/newview/skins/default/xui/it/panel_edit_wearable.xml b/indra/newview/skins/default/xui/it/panel_edit_wearable.xml index 3d8aa858db..5eaae828d8 100644 --- a/indra/newview/skins/default/xui/it/panel_edit_wearable.xml +++ b/indra/newview/skins/default/xui/it/panel_edit_wearable.xml @@ -72,8 +72,8 @@ <string name="jacket_desc_text"> Giacca: </string> - <string name="skirt_skirt_desc_text"> - Giacca: + <string name="skirt_desc_text"> + Gonna: </string> <string name="gloves_desc_text"> Guanti: @@ -100,11 +100,6 @@ <icon name="male_icon" tool_tip="Maschio"/> <icon name="female_icon" tool_tip="Femmina"/> </panel> - <panel label="gear_buttom_panel" name="gear_buttom_panel"> - <button name="friends_viewsort_btn" tool_tip="Opzioni"/> - <button name="add_btn" tool_tip="TODO"/> - <button name="del_btn" tool_tip="TODO"/> - </panel> <panel name="button_panel"> <button label="Salva con nome" name="save_as_button"/> <button label="Ripristina" name="revert_button"/> diff --git a/indra/newview/skins/default/xui/it/panel_outfit_edit.xml b/indra/newview/skins/default/xui/it/panel_outfit_edit.xml index bd2202b60e..57168096d5 100644 --- a/indra/newview/skins/default/xui/it/panel_outfit_edit.xml +++ b/indra/newview/skins/default/xui/it/panel_outfit_edit.xml @@ -13,7 +13,7 @@ <string name="Filter.All" value="Tutto"/> <string name="Filter.Clothes/Body" value="Abiti/corpo"/> <string name="Filter.Objects" value="Oggetti"/> - <button label="modifica" name="edit_wearable_btn"/> + <string name="Filter.Custom" value="Filtro personalizzato"/> <text name="title" value="Modifica vestiario"/> <panel label="bottom_panel" name="header_panel"> <panel label="bottom_panel" name="outfit_name_and_status"> @@ -23,20 +23,16 @@ </panel> <layout_stack name="im_panels"> <layout_panel label="Pannello di controllo IM" name="outfit_wearables_panel"> - <panel label="bottom_panel" name="edit_panel"/> - </layout_panel> - <layout_panel name="add_wearables_panel"> - <text name="add_to_outfit_label" value="Aggiungi al vestiario:"/> <layout_stack name="filter_panels"> - <layout_panel label="Pannello di controllo IM" name="filter_panel"> - <filter_editor label="Filtro" name="look_item_filter"/> + <layout_panel name="add_button_and_combobox"> + <button label="Aggiungi altri..." name="show_add_wearables_btn"/> + </layout_panel> + <layout_panel name="filter_panel"> + <filter_editor label="Filtra capi da indossare dell'inventario" name="look_item_filter"/> </layout_panel> </layout_stack> - <panel label="add_wearables_button_bar" name="add_wearables_button_bar"> - <button label="C" name="folder_view_btn"/> - <button label="E" name="list_view_btn"/> - </panel> </layout_panel> + <layout_panel name="add_wearables_panel"/> </layout_stack> <panel name="save_revert_button_bar"> <button label="Salva" name="save_btn"/> diff --git a/indra/newview/skins/default/xui/it/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/it/panel_outfits_inventory.xml index 932788eaa3..8f8f7a25f4 100644 --- a/indra/newview/skins/default/xui/it/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/it/panel_outfits_inventory.xml @@ -7,8 +7,7 @@ <panel name="bottom_panel"> <button name="options_gear_btn" tool_tip="Mostra opzioni addizionali"/> <dnd_button name="trash_btn" tool_tip="Rimuovi l'articolo selezionato"/> - <button label="Salva vestiario" name="make_outfit_btn" tool_tip="Salva questo aspetto fisico come un vestito"/> + <button label="Salva con nome" name="save_btn"/> <button label="Indossa" name="wear_btn" tool_tip="Indossa il vestiario selezionato"/> - <button label="Modifica vestiario" name="edit_current_outfit_btn"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/it/panel_places.xml b/indra/newview/skins/default/xui/it/panel_places.xml index 3b242b1805..9a052068f7 100644 --- a/indra/newview/skins/default/xui/it/panel_places.xml +++ b/indra/newview/skins/default/xui/it/panel_places.xml @@ -5,12 +5,12 @@ <filter_editor label="Filtra i miei luoghi" name="Filter"/> <panel name="button_panel"> <button label="Teleport" name="teleport_btn" tool_tip="Teleport alla zona selezionata"/> - <button label="Mappa" name="map_btn"/> + <button label="Mappa" name="map_btn" tool_tip="Mostra la zona corrispondente nella mappa del Mondo"/> <button label="Modifica" name="edit_btn" tool_tip="Modifica le informazioni del punto di riferimento"/> <button label="▼" name="overflow_btn" tool_tip="Mostra opzioni addizionali"/> <button label="Salva" name="save_btn"/> <button label="Annulla" name="cancel_btn"/> <button label="Chiudi" name="close_btn"/> - <button label="Profilo" name="profile_btn"/> + <button label="Profilo" name="profile_btn" tool_tip="Mostra il profilo del luogo"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/it/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/it/panel_preferences_advanced.xml index 7c3f32ad7b..842daaa331 100644 --- a/indra/newview/skins/default/xui/it/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/it/panel_preferences_advanced.xml @@ -13,7 +13,7 @@ </text> <check_box label="Costruire/Modificare" name="edit_camera_movement" tool_tip="Utilizza il posizionamento automatico della fotocamera entrando o uscendo dalla modalità modifica"/> <check_box label="Aspetto fisico" name="appearance_camera_movement" tool_tip="Utilizza il posizionamento automatico della camera in modalità modifica"/> - <check_box initial_value="1" label="Barra laterale" name="appearance_sidebar_positioning" tool_tip="Utilizza il posizionamento automatico della fotocamera per la barra laterale"/> + <check_box initial_value="vero" label="Barra laterale" name="appearance_sidebar_positioning" tool_tip="Utilizza il posizionamento automatico della fotocamera per la barra laterale"/> <check_box label="Visualizzami in modalità soggettiva" name="first_person_avatar_visible"/> <check_box label="Le frecce di direzione mi fanno sempre spostare" name="arrow_keys_move_avatar_check"/> <check_box label="Doppio click e tieni premuto per correre" name="tap_tap_hold_to_run"/> diff --git a/indra/newview/skins/default/xui/it/panel_status_bar.xml b/indra/newview/skins/default/xui/it/panel_status_bar.xml index 4c860ff479..6b1a8aa71b 100644 --- a/indra/newview/skins/default/xui/it/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/it/panel_status_bar.xml @@ -21,8 +21,10 @@ <panel.string name="buycurrencylabel"> L$ [AMT] </panel.string> - <button label="" label_selected="" name="buycurrency" tool_tip="Il mio saldo"/> - <button label="Acquista L$" name="buyL" tool_tip="Clicca per comprare più L$"/> + <panel name="balance_bg"> + <text name="balance" tool_tip="Il mio saldo" value="L$ 20"/> + <button label="ACQUISTA L$" name="buyL" tool_tip="Clicca per acquistare più L$"/> + </panel> <text name="TimeText" tool_tip="Orario attuale (Pacifico)"> 24:00, ora del Pacifico </text> diff --git a/indra/newview/skins/default/xui/it/panel_voice_effect.xml b/indra/newview/skins/default/xui/it/panel_voice_effect.xml new file mode 100644 index 0000000000..78ce1ff24a --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_voice_effect.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_voice_effect"> + <string name="no_voice_effect"> + Nessuna manipolazione voce + </string> + <string name="preview_voice_effects"> + Anteprima manipolazione voce ▶ + </string> + <string name="get_voice_effects"> + Ottieni manipolazione voce ▶ + </string> + <combo_box name="voice_effect" tool_tip="Scegli un effetto di manipolazione per modificare il suono della tua voce."> + <combo_box.item label="Nessuna manipolazione voce" name="no_voice_effect"/> + </combo_box> +</panel> diff --git a/indra/newview/skins/default/xui/it/sidepanel_inventory.xml b/indra/newview/skins/default/xui/it/sidepanel_inventory.xml index 0d862a0ff7..3944f8e306 100644 --- a/indra/newview/skins/default/xui/it/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/it/sidepanel_inventory.xml @@ -2,12 +2,12 @@ <panel label="Cose" name="objects panel"> <panel label="" name="sidepanel__inventory_panel"> <panel name="button_panel"> - <button label="Profilo" name="info_btn"/> - <button label="Condividi" name="share_btn"/> - <button label="Acquisti" name="shop_btn"/> - <button label="Indossa" name="wear_btn"/> + <button label="Profilo" name="info_btn" tool_tip="Mostra profilo dell'oggetto"/> + <button label="Condividi" name="share_btn" tool_tip="Condividi un oggetto dell'inventario"/> + <button label="Acquisti" name="shop_btn" tool_tip="Apri pagina web di Marketplace"/> + <button label="Indossa" name="wear_btn" tool_tip="Indossa il vestiario selezionato"/> <button label="Riproduci" name="play_btn"/> - <button label="Teleport" name="teleport_btn"/> + <button label="Teleport" name="teleport_btn" tool_tip="Teleport alla zona selezionata"/> </panel> </panel> </panel> diff --git a/indra/newview/skins/default/xui/it/strings.xml b/indra/newview/skins/default/xui/it/strings.xml index 67cd4c35b2..d601c27d28 100644 --- a/indra/newview/skins/default/xui/it/strings.xml +++ b/indra/newview/skins/default/xui/it/strings.xml @@ -738,6 +738,12 @@ <string name="land_type_unknown"> (sconosciuto) </string> + <string name="Estate / Full Region"> + Proprietà immobiliare / Regione completa + </string> + <string name="Mainland / Full Region"> + Continente / Regione completa + </string> <string name="all_files"> Tutti i file </string> @@ -882,6 +888,9 @@ <string name="NewWearable"> Nuovo [WEARABLE_ITEM] </string> + <string name="CreateNewWearable"> + Crea [WEARABLE_TYPE] + </string> <string name="next"> Avanti </string> @@ -3454,6 +3463,9 @@ Se il messaggio persiste, contatta [SUPPORT_SITE]. <string name="session_initialization_timed_out_error"> Sessione di inizializzazione scaduta </string> + <string name="voice_morphing_url"> + http://secondlife.com/landing/voicemorphing + </string> <string name="paid_you_ldollars"> [NAME] ti ha inviato un pagamento di L$[AMOUNT]. </string> @@ -3624,16 +3636,16 @@ Segnala abuso <string name="Male - Wow"> Maschio - Accipicchia </string> - <string name="FeMale - Excuse me"> + <string name="Female - Excuse me"> Femmina - Chiedere scusa </string> - <string name="FeMale - Get lost"> + <string name="Female - Get lost"> Femmina - Levati dai piedi! </string> - <string name="FeMale - Blow kiss"> + <string name="Female - Blow kiss"> Femmina - Butta un bacio </string> - <string name="FeMale - Boo"> + <string name="Female - Boo"> Femmina - Bu </string> <string name="Female - Bored"> @@ -3666,4 +3678,32 @@ Segnala abuso <string name="texture_load_dimensions_error"> Impossibile caricare immagini di dimensioni superiori a [WIDTH]*[HEIGHT] </string> + <string name="words_separator" value=","/> + <string name="server_is_down"> + Nonostante i nostri tentativi, si è verificato un errore imprevisto. + + Consulta la pagina status.secondlifegrid.net per determinare se si sia verificato un problema noto con il servizio. + Se il problema continua, ti consigliamo di controllare le tue impostazioni di rete e della firewall. + </string> + <string name="dateTimeWeekdaysNames"> + lunedì:martedì:mercoledì:giovedì:venerdì:sabato:domenica + </string> + <string name="dateTimeWeekdaysShortNames"> + lun:mar:mer:gio:ven:sab:dom + </string> + <string name="dateTimeMonthNames"> + gennaio:febbraio:marzo:aprile:maggio:giugno:luglio:agosto:settembre:ottobre:novembre:dicembre + </string> + <string name="dateTimeMonthShortNames"> + gen:feb:mar:apr:mag:giu:lug:ago:sett:ott:nov:dic + </string> + <string name="dateTimeDayFormat"> + [MDAY] + </string> + <string name="dateTimeAM"> + antemeridiane + </string> + <string name="dateTimePM"> + pomeridiane + </string> </strings> diff --git a/indra/newview/skins/default/xui/ja/floater_camera.xml b/indra/newview/skins/default/xui/ja/floater_camera.xml index 610d4183b3..ec5c2a64a5 100644 --- a/indra/newview/skins/default/xui/ja/floater_camera.xml +++ b/indra/newview/skins/default/xui/ja/floater_camera.xml @@ -9,35 +9,28 @@ <floater.string name="move_tooltip"> カメラを上下左右に移動 </floater.string> - <floater.string name="orbit_mode_title"> - 旋回 + <floater.string name="camera_modes_title"> + カメラモード </floater.string> <floater.string name="pan_mode_title"> - 水平・垂直移動 + 旋回 - ズーム - 水平・垂直移動 </floater.string> - <floater.string name="avatar_view_mode_title"> - 固定 + <floater.string name="presets_mode_title"> + 事前設定の視野 </floater.string> <floater.string name="free_mode_title"> オブジェクトを見る </floater.string> <panel name="controls"> - <joystick_track name="cam_track_stick" tool_tip="カメラを上下左右に動かします"/> <panel name="zoom" tool_tip="向いている方法にカメラをズーム"> + <joystick_rotate name="cam_rotate_stick" tool_tip="自分を軸にカメラを回す"/> <slider_bar name="zoom_slider" tool_tip="向いている方向にカメラをズーム"/> - </panel> - <joystick_rotate name="cam_rotate_stick" tool_tip="自分を軸にカメラを回す"/> - <panel name="camera_presets"> - <button name="rear_view" tool_tip="後方視界"/> - <button name="group_view" tool_tip="グループ視界"/> - <button name="front_view" tool_tip="前方視界"/> - <button name="mouselook_view" tool_tip="一人称視界"/> + <joystick_track name="cam_track_stick" tool_tip="カメラを上下左右に動かします"/> </panel> </panel> <panel name="buttons"> - <button label="" name="orbit_btn" tool_tip="カメラを回す"/> - <button label="" name="pan_btn" tool_tip="カメラを水平・垂直移動"/> - <button label="" name="avatarview_btn" tool_tip="固定"/> - <button label="" name="freecamera_btn" tool_tip="オブジェクトを見る"/> + <button label="" name="presets_btn" tool_tip="事前設定の視野"/> + <button label="" name="pan_btn" tool_tip="旋回 - ズーム - 水平・垂直移動"/> + <button label="" name="avatarview_btn" tool_tip="カメラモード"/> </panel> </floater> 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 04013799ec..8e5177d6fe 100644 --- a/indra/newview/skins/default/xui/ja/floater_incoming_call.xml +++ b/indra/newview/skins/default/xui/ja/floater_incoming_call.xml @@ -16,7 +16,13 @@ がコンファレンスチャットで、ボイスチャットに参加しました。 </floater.string> <floater.string name="VoiceInviteGroup"> - は [GROUP]. のボイスチャットコールに参加しました。 + '[GROUP]'のボイスチャネルに参加なさいました。 + </floater.string> + <floater.string name="VoiceInviteQuestionGroup"> + [CURRENT_CHAT]を退席して、'[GROUP]'とのチャットに参加しますか? + </floater.string> + <floater.string name="VoiceInviteQuestionDefault"> + [CURRENT_CHAT]を退席して、このボイスチャットに参加しますか? </floater.string> <text name="question"> [CURRENT_CHAT] を退席して、このボイスチャットに参加しますか? diff --git a/indra/newview/skins/default/xui/ja/floater_snapshot.xml b/indra/newview/skins/default/xui/ja/floater_snapshot.xml index 9aecbab70f..c6e315fe48 100644 --- a/indra/newview/skins/default/xui/ja/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/ja/floater_snapshot.xml @@ -5,12 +5,19 @@ </floater.string> <button label="スナップショットを更新" name="new_snapshot_btn"/> <line_editor label="説明" name="description"/> - <button label="共有" name="share"/> - <button label="Web で共有" name="share_to_web"/> - <button label="「持ち物」に保存" name="save_to_inventory"/> - <button label="保存" name="save"/> - <button label="スナップショットをメール" name="share_to_email"/> - <button label="コンピューターに保存" name="save_to_computer"/> - <button label="プロフィールに設定" name="set_profile_pic"/> - <button label="戻る" name="cancel"/> + <panel name="panel_snapshot_main"> + <button label="共有" name="share"/> + <button label="保存" name="save"/> + <button label="プロフィールに設定" name="set_profile_pic"/> + </panel> + <panel name="panel_snapshot_share"> + <button label="Web で共有" name="share_to_web"/> + <button label="スナップショットをメール" name="share_to_email"/> + <button label="戻る" name="cancel_share"/> + </panel> + <panel name="panel_snapshot_save"> + <button label="「持ち物」に保存" name="save_to_inventory"/> + <button label="コンピューターに保存" name="save_to_computer"/> + <button label="戻る" name="cancel_save"/> + </panel> </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 5af8f20690..4b95aa544f 100644 --- a/indra/newview/skins/default/xui/ja/floater_voice_controls.xml +++ b/indra/newview/skins/default/xui/ja/floater_voice_controls.xml @@ -19,8 +19,10 @@ <layout_panel name="my_panel"> <text name="user_text" value="マイ アバター:"/> </layout_panel> - <layout_panel name="leave_call_btn_panel"> - <button label="コール終了" name="leave_call_btn"/> - </layout_panel> + <layout_stack name="voice_effect_and_leave_call_stack"> + <layout_panel name="leave_call_btn_panel"> + <button label="コール終了" name="leave_call_btn"/> + </layout_panel> + </layout_stack> </layout_stack> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_voice_effect.xml b/indra/newview/skins/default/xui/ja/floater_voice_effect.xml new file mode 100644 index 0000000000..dd7294718c --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_voice_effect.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater label="場所" name="voice_effects" title="ボイスモーフィングのプレビュー"> + <string name="no_voice_effect"> + (ボイスモーフィングなし) + </string> + <string name="active_voice_effect"> + (アクティブ) + </string> + <string name="unsubscribed_voice_effect"> + (取消し済み) + </string> + <string name="new_voice_effect"> + (新登場!) + </string> + <text name="status_text"> + ボイスモーフィングをプレビューしてエフェクトを確かめるには、録音ボタンを押してご自分の声を少し録音してから、リストにあるボイスモーフィングを1つクリックします。 + +このウインドウを閉じると、「近くのボイスチャット」に再接続されます。 + </text> + <button label="声を録音" name="record_btn" tool_tip="あなたの声を録音します。"/> + <button label="停止" name="record_stop_btn"/> + <text name="voice_morphing_link"> + [[URL]ボイスモーフィングを取得] + </text> + <scroll_list name="voice_effect_list" tool_tip="声を録音してボイスモーフィングを1つクリックすると、そのエフェクトをプレビューできます。"> + <scroll_list.columns label="ボイスモーフィング" name="name"/> + <scroll_list.columns label="有効期限" name="expires"/> + </scroll_list> +</floater> diff --git a/indra/newview/skins/default/xui/ja/inspect_object.xml b/indra/newview/skins/default/xui/ja/inspect_object.xml index 842030c39a..e6999ac9b1 100644 --- a/indra/newview/skins/default/xui/ja/inspect_object.xml +++ b/indra/newview/skins/default/xui/ja/inspect_object.xml @@ -8,8 +8,8 @@ 制作者: [CREATOR] </string> <string name="CreatorAndOwner"> - 制作者: [CREATOR] -所有者: [OWNER] + [CREATOR]によるチェック +[OWNER]によるチェック </string> <string name="Price"> L$[AMOUNT] @@ -23,16 +23,16 @@ <string name="Sit"> 座る </string> - <text name="object_name" value="Test Object Name That Is Really Long"/> + <text name="object_name" value="二行にわたる長いオブジェクト名をテスト"/> <text name="object_creator"> by secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about owner secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about </text> <text name="price_text"> - L$300,000 + L$30,000 </text> <text name="object_description"> - This is a really long description for an object being as how it is at least 80 characters in length and maybe more like 120 at this point. Who knows, really? + This is a really long description for an object being as how it is at least 80 characters in length and so but maybe more like 120 at this point. Who knows, really? </text> <text name="object_media_url"> http://www.superdupertest.com diff --git a/indra/newview/skins/default/xui/ja/menu_cof_attachment.xml b/indra/newview/skins/default/xui/ja/menu_cof_attachment.xml new file mode 100644 index 0000000000..e786d02e40 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_cof_attachment.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="COF Attachment"> + <menu_item_call label="取り外す" name="detach"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_cof_body_part.xml b/indra/newview/skins/default/xui/ja/menu_cof_body_part.xml new file mode 100644 index 0000000000..eb5faa2545 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_cof_body_part.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="COF Body"> + <menu_item_call label="交換" name="replace"/> + <menu_item_call label="編集" name="edit"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_cof_clothing.xml b/indra/newview/skins/default/xui/ja/menu_cof_clothing.xml new file mode 100644 index 0000000000..9da909fa17 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_cof_clothing.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="COF Clothing"> + <menu_item_call label="取り外す" name="take_off"/> + <menu_item_call label="上のレイヤーに移動" name="move_up"/> + <menu_item_call label="下のレイヤーに移動" name="move_down"/> + <menu_item_call label="編集" name="edit"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_cof_gear.xml b/indra/newview/skins/default/xui/ja/menu_cof_gear.xml new file mode 100644 index 0000000000..a071abbd2e --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_cof_gear.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Gear COF"> + <menu label="衣類" name="COF.Gear.New_Clothes"/> + <menu label="新しい身体部位" name="COF.Geear.New_Body_Parts"/> +</menu> diff --git a/indra/newview/skins/default/xui/ja/menu_hide_navbar.xml b/indra/newview/skins/default/xui/ja/menu_hide_navbar.xml index 09e70b0d1f..3a1ae49700 100644 --- a/indra/newview/skins/default/xui/ja/menu_hide_navbar.xml +++ b/indra/newview/skins/default/xui/ja/menu_hide_navbar.xml @@ -2,4 +2,5 @@ <menu name="hide_navbar_menu"> <menu_item_check label="ナビゲーションバーを表示" name="ShowNavbarNavigationPanel"/> <menu_item_check label="お気に入りバーを表示" name="ShowNavbarFavoritesPanel"/> + <menu_item_check label="「場所」のミニフィールドを表示" name="ShowMiniLocationPanel"/> </menu> diff --git a/indra/newview/skins/default/xui/ja/menu_inventory.xml b/indra/newview/skins/default/xui/ja/menu_inventory.xml index 452d0567da..782b9ea5a5 100644 --- a/indra/newview/skins/default/xui/ja/menu_inventory.xml +++ b/indra/newview/skins/default/xui/ja/menu_inventory.xml @@ -81,6 +81,7 @@ <menu label="HUD 装着先" name="Attach To HUD"/> <menu_item_call label="編集" name="Wearable Edit"/> <menu_item_call label="装着" name="Wearable Wear"/> + <menu_item_call label="追加" name="Wearable Add"/> <menu_item_call label="取り外す" name="Take Off"/> <menu_item_call label="--オプションなし--" name="--no options--"/> </menu> diff --git a/indra/newview/skins/default/xui/ja/menu_outfit_gear.xml b/indra/newview/skins/default/xui/ja/menu_outfit_gear.xml new file mode 100644 index 0000000000..e68ed5ccc7 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_outfit_gear.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Gear Outfit"> + <menu_item_call label="着る - 着用中のアウトフィットを入れ替える" name="wear"/> + <menu_item_call label="取り外す - 着用中のアウトフィットから取り除く" name="take_off"/> + <menu label="衣類" name="New Clothes"> + <menu_item_call label="シャツ" name="New Shirt"/> + <menu_item_call label="パンツ" name="New Pants"/> + <menu_item_call label="靴" name="New Shoes"/> + <menu_item_call label="靴下" name="New Socks"/> + <menu_item_call label="ジャケット" name="New Jacket"/> + <menu_item_call label="スカート" name="New Skirt"/> + <menu_item_call label="手袋" name="New Gloves"/> + <menu_item_call label="下着(上)" name="New Undershirt"/> + <menu_item_call label="下着(下)" name="New Underpants"/> + <menu_item_call label="アルファ" name="New Alpha"/> + <menu_item_call label="新しいタトゥ" name="New Tattoo"/> + </menu> + <menu label="新しい身体部位" name="New Body Parts"> + <menu_item_call label="新しいシェイプ" name="New Shape"/> + <menu_item_call label="スキン" name="New Skin"/> + <menu_item_call label="髪" name="New Hair"/> + <menu_item_call label="目" name="New Eyes"/> + </menu> + <menu_item_call label="アウトフィットの名前を変更する" name="rename"/> + <menu_item_call label="アウトフィットを削除する" name="delete_outfit"/> +</menu> diff --git a/indra/newview/skins/default/xui/ja/menu_outfit_tab.xml b/indra/newview/skins/default/xui/ja/menu_outfit_tab.xml new file mode 100644 index 0000000000..8f4b61b702 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_outfit_tab.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Outfit"> + <menu_item_call label="着る - 着用中のアウトフィットを入れ替える" name="wear_replace"/> + <menu_item_call label="着る - 着用中のアウトフィットに追加する" name="wear_add"/> + <menu_item_call label="取り外す - 着用中のアウトフィットから取り除く" name="take_off"/> + <menu_item_call label="アウトフィットの編集" name="edit"/> + <menu_item_call label="名前の変更" name="rename"/> + <menu_item_call label="アウトフィットを削除する" name="delete"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_save_outfit.xml b/indra/newview/skins/default/xui/ja/menu_save_outfit.xml index 7ebaa6e1c8..6513d9264a 100644 --- a/indra/newview/skins/default/xui/ja/menu_save_outfit.xml +++ b/indra/newview/skins/default/xui/ja/menu_save_outfit.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <toggleable_menu name="save_outfit_menu"> <menu_item_call label="保存" name="save_outfit"/> - <menu_item_call label="新規で保存" name="save_as_new_outfit"/> + <menu_item_call label="別名で保存" name="save_as_new_outfit"/> </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 f6695d2d13..1573177914 100644 --- a/indra/newview/skins/default/xui/ja/menu_viewer.xml +++ b/indra/newview/skins/default/xui/ja/menu_viewer.xml @@ -11,6 +11,7 @@ <menu_item_check label="持ち物" name="Inventory"/> <menu_item_check label="持ち物" name="ShowSidetrayInventory"/> <menu_item_check label="ジェスチャー" name="Gestures"/> + <menu_item_check label="マイボイス" name="ShowVoice"/> <menu label="ログイン状態" name="Status"> <menu_item_call label="一時退席中" name="Set Away"/> <menu_item_call label="取り込み中" name="Set Busy"/> @@ -70,6 +71,12 @@ <menu_item_call label="リンク" name="Link"/> <menu_item_call label="リンクを外す" name="Unlink"/> <menu_item_check label="リンクした部分を編集" name="Edit Linked Parts"/> + <menu label="リンクした部分を選択する" name="Select Linked Parts"> + <menu_item_call label="次の部分を選択する" name="Select Next Part"/> + <menu_item_call label="前回の部分を選択する" name="Select Previous Part"/> + <menu_item_call label="次の部分を含める" name="Include Next Part"/> + <menu_item_call label="前回の部分を含める" name="Include Previous Part"/> + </menu> <menu_item_call label="選択したものに焦点を合わせる" name="Focus on Selection"/> <menu_item_call label="選択したものをズームする" name="Zoom to Selection"/> <menu label="オブジェクト" name="Object"> @@ -100,11 +107,11 @@ <menu_item_call label="選択をグリッドに使用する" name="Use Selection for Grid"/> <menu_item_call label="グリッドオプション" name="Grid Options"/> </menu> - <menu label="リンクした部分を選択する" name="Select Linked Parts"> - <menu_item_call label="次の部分を選択する" name="Select Next Part"/> - <menu_item_call label="前回の部分を選択する" name="Select Previous Part"/> - <menu_item_call label="次の部分を含める" name="Include Next Part"/> - <menu_item_call label="前回の部分を含める" name="Include Previous Part"/> + <menu label="アップロード" name="Upload"> + <menu_item_call label="画像(L$[COST])..." name="Upload Image"/> + <menu_item_call label="サウンド(L$[COST])..." name="Upload Sound"/> + <menu_item_call label="アニメーション(L$[COST])..." name="Upload Animation"/> + <menu_item_call label="一括 (ファイルにつきL$[COST])..." name="Bulk Upload"/> </menu> </menu> <menu label="ヘルプ" name="Help"> diff --git a/indra/newview/skins/default/xui/ja/menu_wearable_list_item.xml b/indra/newview/skins/default/xui/ja/menu_wearable_list_item.xml new file mode 100644 index 0000000000..0d8049bc0a --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_wearable_list_item.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Outfit Wearable Context Menu"> + <menu_item_call label="着る" name="wear"/> + <menu_item_call label="追加" name="wear_add"/> + <menu_item_call label="取り外す" name="take_off_or_detach"/> + <menu_item_call label="取り外す" name="detach"/> + <context_menu label="装着 ▶" name="wearable_attach_to"/> + <context_menu label="HUDに装着 ▶" name="wearable_attach_to_hud"/> + <menu_item_call label="取り外す" name="take_off"/> + <menu_item_call label="編集" name="edit"/> + <menu_item_call label="オブジェクトのプロフィール" name="object_profile"/> + <menu_item_call label="オリジナルを表示" name="show_original"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/ja/notifications.xml b/indra/newview/skins/default/xui/ja/notifications.xml index c82f1198a4..42f8ccbb32 100644 --- a/indra/newview/skins/default/xui/ja/notifications.xml +++ b/indra/newview/skins/default/xui/ja/notifications.xml @@ -497,8 +497,7 @@ L$ が不足しているのでこのグループに参加することができ [REGION] では、地形の変更ができません。 </notification> <notification name="CannotCopyWarning"> - あなたはこのアイテムのコピーを許されていないので、人にあげると「持ち物」からなくなります。 -本当にこれを渡しますか? + あなたには[ITEMS]というアイテムをコピーする許可がありません。他の住人に提供すると、そのアイテムはあなたの「持ち物」から削除されます。本当にこれらのアイテムを譲りますか? <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/> </notification> <notification name="CannotGiveItem"> @@ -976,6 +975,26 @@ L$ は返金されません。 <button name="Cancel" text="キャンセル"/> </form> </notification> + <notification label="着用物を保存" name="SaveWearableAs"> + アイテムを別名で持ち物に保存: + <form name="form"> + <input name="message"> + [DESC](新規) + </input> + <button name="Offer" text="OK"/> + <button name="Cancel" text="取り消し"/> + </form> + </notification> + <notification label="アウトフィットの名前を変更する" name="RenameOutfit"> + 新しいアウトフィットの名前: + <form name="form"> + <input name="new_name"> + [NAME] + </input> + <button name="Offer" text="OK"/> + <button name="Cancel" text="取り消し"/> + </form> + </notification> <notification name="RemoveFromFriends"> [FIRST_NAME] [LAST_NAME] をフレンドリストから削除しますか? <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> @@ -1602,9 +1621,9 @@ SHA1 フィンガープリント: [MD5_DIGEST] あなたのレーティング区分により、そのリージョン(地域)へは入ることができません。 </notification> <notification name="RegionEntryAccessBlocked_Change"> - あなたのレーティング区分設定に基づいて、そのリージョンへは入ることができません。 + レーティング区分に関する設定により、その地域(リージョン)には立ち入れません。 -「設定を変更」をクリックしてレーティング区分の設定を変更すればすぐに入れます。 変更に伴って [REGIONMATURITY] コンテンツの検索やアクセスが可能になります。 あとで設定を変更したい場合は ミー > 環境設定 > 一般 からどうぞ。 +その地域に入るには、あなたのレーティング区分の設定を変更してください。変更すると、[REGIONMATURITY]のコンテンツの検索やアクセスが可能になります。変更内容を元に戻すには、ミー > 環境設定 > 一般を選択してください。 <form name="form"> <button name="OK" text="環境設定の変更"/> <button default="true" name="Cancel" text="閉じる"/> @@ -2634,6 +2653,18 @@ M キーを押して変更します。 <notification name="VoiceLoginRetry"> ボイスチャンネルを作成しています。1 分ほどかかります。 </notification> + <notification name="VoiceEffectsExpired"> + ボイスモーフィング効果の1つまたは複数の有効期限が終了しました。期限を延長・更新するには[[URL]こちらをクリック]してください。 + </notification> + <notification name="VoiceEffectsExpiredInUse"> + ボイスモーフィング効果の有効期限が終了したため、あなたの通常のボイス設定が適用されました。期限を延長・更新するには[[URL]こちらをクリック]してください。 + </notification> + <notification name="VoiceEffectsWillExpire"> + ボイスモーフィング効果の1つまたは複数の有効期限が[INTERVAL]日以内に終了します。期限を延長・更新するには[[URL]こちらをクリック]してください。 + </notification> + <notification name="VoiceEffectsNew"> + 新しいボイスモーフィング効果が登場! + </notification> <notification name="Cannot enter parcel: not a group member"> 特定のグループメンバーのみこのエリアを訪問することができます。 </notification> @@ -2700,18 +2731,36 @@ M キーを押して変更します。 じゅうぶんなスペースができればボタンは表示されます。 </notification> <notification name="ShareNotification"> - 住人選択画面に表示された人に「持ち物」からアイテムをドラッグしてください + 共有する住人を選択します。 + </notification> + <notification name="ShareItemsConfirmation"> + 次のアイテムを共有しますか: + +[ITEMS] + +次の住人と共有しますか: + +[RESIDENTS] + <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> + </notification> + <notification name="ItemsShared"> + アイテムが共有されました。 </notification> <notification name="DeedToGroupFail"> グループへの譲渡に失敗しました。 </notification> <notification name="AvatarRezNotification"> - ( [EXISTENCE] 秒) -アバター「 [NAME] 」が [TIME] 秒で出現します。 + (作成後[EXISTENCE]秒経過) +'[NAME]'というアバターは[TIME]秒後に姿を現わしました。 </notification> - <notification name="AvatarRezSelfNotification"> - ( [EXISTENCE] 秒) -[TIME] 秒でアウトフィットのベーキングが完了しました。 + <notification name="AvatarRezSelfBakedDoneNotification"> + (作成後[EXISTENCE]秒経過) +アウトフィットのベークは[TIME]秒後に完了しました。 + </notification> + <notification name="AvatarRezSelfBakedUpdateNotification"> + (作成後[EXISTENCE]秒経過) +容姿の更新は[TIME]秒後に送信されました。 +[STATUS] </notification> <notification name="AvatarRezCloudNotification"> ( [EXISTENCE] 秒) @@ -2733,10 +2782,32 @@ M キーを押して変更します。 ( [EXISTENCE] 秒) アバター「 NAME 」が容姿編集モードを解除しました。 </notification> + <notification name="NoConnect"> + [PROTOCOL] [HOSTID]を使って接続できません。 +お使いのネットワークやファイアウォールの設定を確認してください。 + <form name="form"> + <button name="OK" text="OK"/> + </form> + </notification> + <notification name="NoVoiceConnect"> + ボイスサーバーに接続できません: + +[HOSTID] + +ボイスチャットによるコミュニケーションが利用できません。 +お使いのネットワークやファイアウォールの設定を確認してください。 + <form name="form"> + <button name="OK" text="OK"/> + </form> + </notification> <notification name="AvatarRezLeftNotification"> ( [EXISTENCE] 秒) アバター「 NAME 」が完全に読み込まれました。 </notification> + <notification name="AvatarRezSelfBakeNotification"> + (作成後[EXISTENCE]秒経過) +'[BODYREGION]'の[RESOLUTION]のベークドテクスチャは[TIME]秒後にアップロードされました。 + </notification> <notification name="ConfirmLeaveCall"> このコールから抜けますか? <usetemplate ignoretext="コールから抜ける前の確認" name="okcancelignore" notext="いいえ" yestext="はい"/> @@ -2747,7 +2818,7 @@ M キーを押して変更します。 ミュートされます。あなたがコールを終了しても他の参加者のミュート状態が続きます。 全員をミュートしますか? - <usetemplate ignoretext="グループコールの参加者全員をミュートする前の確認" name="okcancelignore" notext="Ok" yestext="キャンセル"/> + <usetemplate ignoretext="グループコールの参加者全員をミュートする前の確認" name="okcancelignore" notext="取り消し" yestext="OK"/> </notification> <global name="UnsupportedCPU"> - あなたの CPU の速度は必須動作環境の条件を満たしていません。 diff --git a/indra/newview/skins/default/xui/ja/panel_edit_shape.xml b/indra/newview/skins/default/xui/ja/panel_edit_shape.xml index 5d3bc79e2f..5a3a949150 100644 --- a/indra/newview/skins/default/xui/ja/panel_edit_shape.xml +++ b/indra/newview/skins/default/xui/ja/panel_edit_shape.xml @@ -1,8 +1,15 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="edit_shape_panel"> - <text name="avatar_height"> - 身長 [HEIGHT] メートル - </text> + <string name="meters"> + メートル + </string> + <string name="feet"> + フィート + </string> + <string name="height"> + 高さ: + </string> + <text name="avatar_height"/> <panel label="シャツ" name="accordion_panel"> <accordion name="wearable_accordion"> <accordion_tab name="shape_body_tab" title="身体"/> diff --git a/indra/newview/skins/default/xui/ja/panel_edit_wearable.xml b/indra/newview/skins/default/xui/ja/panel_edit_wearable.xml index 5e3342699b..d63f047728 100644 --- a/indra/newview/skins/default/xui/ja/panel_edit_wearable.xml +++ b/indra/newview/skins/default/xui/ja/panel_edit_wearable.xml @@ -72,7 +72,7 @@ <string name="jacket_desc_text"> ジャケット: </string> - <string name="skirt_skirt_desc_text"> + <string name="skirt_desc_text"> スカート: </string> <string name="gloves_desc_text"> @@ -100,11 +100,6 @@ <icon name="male_icon" tool_tip="男性"/> <icon name="female_icon" tool_tip="女性"/> </panel> - <panel label="gear_buttom_panel" name="gear_buttom_panel"> - <button name="friends_viewsort_btn" tool_tip="オプション"/> - <button name="add_btn" tool_tip="TODO"/> - <button name="del_btn" tool_tip="TODO"/> - </panel> <panel name="button_panel"> <button label="別名で保存" name="save_as_button"/> <button label="元に戻す" name="revert_button"/> diff --git a/indra/newview/skins/default/xui/ja/panel_outfit_edit.xml b/indra/newview/skins/default/xui/ja/panel_outfit_edit.xml index cf6e6eaae3..30b2c078d5 100644 --- a/indra/newview/skins/default/xui/ja/panel_outfit_edit.xml +++ b/indra/newview/skins/default/xui/ja/panel_outfit_edit.xml @@ -13,7 +13,7 @@ <string name="Filter.All" value="すべて"/> <string name="Filter.Clothes/Body" value="衣類/身体"/> <string name="Filter.Objects" value="オブジェクト"/> - <button label="編集" name="edit_wearable_btn"/> + <string name="Filter.Custom" value="フィルターのカスタマイズ"/> <text name="title" value="アウトフットの編集"/> <panel label="bottom_panel" name="header_panel"> <panel label="bottom_panel" name="outfit_name_and_status"> @@ -23,20 +23,16 @@ </panel> <layout_stack name="im_panels"> <layout_panel label="IM コントロールパネル" name="outfit_wearables_panel"> - <panel label="bottom_panel" name="edit_panel"/> - </layout_panel> - <layout_panel name="add_wearables_panel"> - <text name="add_to_outfit_label" value="アウトフィットに追加:"/> <layout_stack name="filter_panels"> - <layout_panel label="IM コントロールパネル" name="filter_panel"> - <filter_editor label="フィルター" name="look_item_filter"/> + <layout_panel name="add_button_and_combobox"> + <button label="さらに追加..." name="show_add_wearables_btn"/> + </layout_panel> + <layout_panel name="filter_panel"> + <filter_editor label="持ち物の着用物をフィルター" name="look_item_filter"/> </layout_panel> </layout_stack> - <panel label="add_wearables_button_bar" name="add_wearables_button_bar"> - <button label="F" name="folder_view_btn"/> - <button label="L" name="list_view_btn"/> - </panel> </layout_panel> + <layout_panel name="add_wearables_panel"/> </layout_stack> <panel name="save_revert_button_bar"> <button label="保存" name="save_btn"/> 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 14f0d7d5e0..27bb224c18 100644 --- a/indra/newview/skins/default/xui/ja/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/ja/panel_outfits_inventory.xml @@ -7,8 +7,7 @@ <panel name="bottom_panel"> <button name="options_gear_btn" tool_tip="その他のオプションを表示します"/> <dnd_button name="trash_btn" tool_tip="選択したアイテムを削除します"/> - <button label="アウトフィットを保存する" name="make_outfit_btn" tool_tip="容姿をアウトフィットに保存します" width="140"/> + <button label="別名で保存" name="save_btn"/> <button label="装着" name="wear_btn" tool_tip="選択したアウトフィットを着用します"/> - <button label="アウトフットの編集" name="edit_current_outfit_btn"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_places.xml b/indra/newview/skins/default/xui/ja/panel_places.xml index d78a56aa10..c83e3591a7 100644 --- a/indra/newview/skins/default/xui/ja/panel_places.xml +++ b/indra/newview/skins/default/xui/ja/panel_places.xml @@ -5,12 +5,12 @@ <filter_editor label="場所をフィルター" name="Filter"/> <panel name="button_panel"> <button label="テレポート" name="teleport_btn" tool_tip="該当するエリアにテレポートします"/> - <button label="地図" name="map_btn"/> + <button label="地図" name="map_btn" tool_tip="世界地図に該当するエリアを表示"/> <button label="編集" name="edit_btn" tool_tip="ランドマークの情報を編集します"/> <button label="▼" name="overflow_btn" tool_tip="その他のオプションを表示"/> <button label="保存" name="save_btn"/> <button label="キャンセル" name="cancel_btn"/> <button label="閉じる" name="close_btn"/> - <button label="プロフィール" name="profile_btn"/> + <button label="プロフィール" name="profile_btn" tool_tip="場所のプロフィールを表示"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/ja/panel_preferences_advanced.xml index 732a5df75f..fdf33b5402 100644 --- a/indra/newview/skins/default/xui/ja/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/ja/panel_preferences_advanced.xml @@ -13,7 +13,7 @@ </text> <check_box label="制作・編集" name="edit_camera_movement" tool_tip="編集モードのオン・オフの切り替えに、自動カメラポジションを使います"/> <check_box label="容姿" name="appearance_camera_movement" tool_tip="編集モードに入ったときに、自動カメラポジションを使います"/> - <check_box label="サイドバー" name="appearance_sidebar_positioning" tool_tip="サイドバーの切り替え時に自動カメラポジションを使います"/> + <check_box initial_value="true" label="サイドバー" name="appearance_sidebar_positioning" tool_tip="サイドバーの切り替え時に自動カメラポジションを使います"/> <check_box label="一人称視点で表示する" name="first_person_avatar_visible"/> <check_box label="常にキー操作で動くようにする" name="arrow_keys_move_avatar_check"/> <check_box label="上矢印キー2度押し+長押しで走る" name="tap_tap_hold_to_run"/> 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 8a848f496d..c3a5127981 100644 --- a/indra/newview/skins/default/xui/ja/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/ja/panel_status_bar.xml @@ -21,8 +21,10 @@ <panel.string name="buycurrencylabel"> L$ [AMT] </panel.string> - <button label="" label_selected="" name="buycurrency" tool_tip="所持金"/> - <button label="L$ の購入" name="buyL" tool_tip="クリックして L$ を購入します"/> + <panel name="balance_bg"> + <text name="balance" tool_tip="残高" value="L$20"/> + <button label="L$ の購入" name="buyL" tool_tip="クリックして L$ を購入します"/> + </panel> <text name="TimeText" tool_tip="現在時刻(太平洋)"> 24:00 AM PST </text> diff --git a/indra/newview/skins/default/xui/ja/panel_voice_effect.xml b/indra/newview/skins/default/xui/ja/panel_voice_effect.xml new file mode 100644 index 0000000000..d787d6ff23 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_voice_effect.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_voice_effect"> + <string name="no_voice_effect"> + ボイスモーフィングなし + </string> + <string name="preview_voice_effects"> + ボイスモーフィングをプレビュー ▶ + </string> + <string name="get_voice_effects"> + ボイスモーフィングを取得 ▶ + </string> + <combo_box name="voice_effect" tool_tip="ボイスモーフィング効果を選択して、音声を変更します。"> + <combo_box.item label="ボイスモーフィングなし" name="no_voice_effect"/> + </combo_box> +</panel> diff --git a/indra/newview/skins/default/xui/ja/sidepanel_inventory.xml b/indra/newview/skins/default/xui/ja/sidepanel_inventory.xml index a0f44d9de9..648719b6bd 100644 --- a/indra/newview/skins/default/xui/ja/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/ja/sidepanel_inventory.xml @@ -2,12 +2,12 @@ <panel label="もの" name="objects panel"> <panel label="" name="sidepanel__inventory_panel"> <panel name="button_panel"> - <button label="プロフィール" name="info_btn"/> - <button label="共有" name="share_btn"/> - <button label="ショッピング" name="shop_btn"/> - <button label="装着" name="wear_btn"/> + <button label="プロフィール" name="info_btn" tool_tip="オブジェクトのプロフィールを表示する"/> + <button label="共有" name="share_btn" tool_tip="「持ち物」のアイテムを共有する"/> + <button label="ショッピング" name="shop_btn" tool_tip="マーケットプレイスのサイトを開く"/> + <button label="装着" name="wear_btn" tool_tip="選択したアウトフィットを着用する"/> <button label="プレイ" name="play_btn"/> - <button label="テレポート" name="teleport_btn"/> + <button label="テレポート" name="teleport_btn" tool_tip="該当するエリアにテレポートする"/> </panel> </panel> </panel> diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml index d59699552d..8948722bf3 100644 --- a/indra/newview/skins/default/xui/ja/strings.xml +++ b/indra/newview/skins/default/xui/ja/strings.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <!-- This file contains strings that used to be hardcoded in the source. It is only for those strings which do not belong in a floater. For example, the strings used in avatar chat bubbles, and strings @@ -107,7 +107,7 @@ 無効なホストネームがサーバーにアクセスしていました。SLURL かグリッドのホストネームをご確認ください。 </string> <string name="CertExpired"> - 証明書の有効期限が切れています。 システムの時計を確認するかグリッド管理者にご連絡ください。 + グリッドが返した証明書は有効期限が終了していると考えられます。お使いのシステムクロックを確認するか、グリッドの管理者にお問い合わせください。 </string> <string name="CertKeyUsage"> SSL 証明書のエラーが発生しました。 グリッド管理者にご連絡ください。 @@ -116,7 +116,7 @@ サーバーの証明書チェーンに証明書が多すぎます。 グリッド管理者にご連絡ください。 </string> <string name="CertInvalidSignature"> - 証明書署名を認証できませんでした。 グリッド管理者にご連絡ください。 + グリッドサーバーが返した証明書の署名を認証できませんでした。グリッドの管理者にお問い合わせください。 </string> <string name="LoginFailedNoNetwork"> ネットワークエラー: 接続を確立できませんでした。お使いのネットワーク接続をご確認ください。 @@ -753,6 +753,12 @@ <string name="land_type_unknown"> (不明) </string> + <string name="Estate / Full Region"> + 不動産 / フルリージョン + </string> + <string name="Mainland / Full Region"> + メインランド / フルリージョン + </string> <string name="all_files"> 全てのファイル </string> @@ -897,6 +903,9 @@ <string name="NewWearable"> 新しい [WEARABLE_ITEM] </string> + <string name="CreateNewWearable"> + [WEARABLE_TYPE]を作成 + </string> <string name="next"> 次へ </string> @@ -3550,6 +3559,9 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ <string name="session_initialization_timed_out_error"> セッションの初期化がタイムアウトしました </string> + <string name="voice_morphing_url"> + http://secondlife.com/landing/voicemorphing + </string> <string name="paid_you_ldollars"> [NAME] は L$[AMOUNT] 支払いました </string> @@ -3720,17 +3732,17 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ <string name="Male - Wow"> 男性 - Wow </string> - <string name="FeMale - Excuse me"> - 女性 - すみません + <string name="Female - Excuse me"> + 女性 – すみません </string> - <string name="FeMale - Get lost"> - 女性 - Get lost + <string name="Female - Get lost"> + 女性 – あっち行ってよ </string> - <string name="FeMale - Blow kiss"> + <string name="Female - Blow kiss"> 女性 - 投げキッス </string> - <string name="FeMale - Boo"> - 女性 - Boo + <string name="Female - Boo"> + 女性 – ワッ! </string> <string name="Female - Bored"> 女性 - 退屈 @@ -3762,4 +3774,32 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ <string name="texture_load_dimensions_error"> [WIDTH]*[HEIGHT] 以上の画像は読み込めません </string> + <string name="words_separator" value=","/> + <string name="server_is_down"> + 大変申し訳ございませんが、予期せぬ問題が発生しました。 + + status.secondlifegrid.netで、サービスに関する既知の問題についてお調べください。 + 問題が引き続き発生する場合は、お使いのネットワークやファイアウォールの設定を確認してください。 + </string> + <string name="dateTimeWeekdaysNames"> + 日曜日:月曜日:火曜日:水曜日:木曜日:金曜日:土曜日 + </string> + <string name="dateTimeWeekdaysShortNames"> + 日:月:火:水:木:金:土 + </string> + <string name="dateTimeMonthNames"> + 1月:2月:3月:4月:5月:6月:7月:8月:9月:10月:11月:12月 + </string> + <string name="dateTimeMonthShortNames"> + 1月:2月:3月:4月:5月:6月:7月:8月:9月:10月:11月:12月 + </string> + <string name="dateTimeDayFormat"> + [MDAY] + </string> + <string name="dateTimeAM"> + AM + </string> + <string name="dateTimePM"> + PM + </string> </strings> diff --git a/indra/newview/skins/default/xui/pt/floater_camera.xml b/indra/newview/skins/default/xui/pt/floater_camera.xml index 7989ce66bc..7343bd9aa8 100644 --- a/indra/newview/skins/default/xui/pt/floater_camera.xml +++ b/indra/newview/skins/default/xui/pt/floater_camera.xml @@ -9,35 +9,28 @@ <floater.string name="move_tooltip"> Mover a Câmera para Cima e para Baixo, para a Esquerda e para a Direita </floater.string> - <floater.string name="orbit_mode_title"> - Órbita + <floater.string name="camera_modes_title"> + Modos de câmera </floater.string> <floater.string name="pan_mode_title"> - Pan + Pan zoom orbital </floater.string> - <floater.string name="avatar_view_mode_title"> - Predefinições + <floater.string name="presets_mode_title"> + Ângulos predefinidos </floater.string> <floater.string name="free_mode_title"> Visualizar objeto </floater.string> <panel name="controls"> - <joystick_track name="cam_track_stick" tool_tip="Move a câmera para cima e para baixo, direita e esquerda"/> <panel name="zoom" tool_tip="Aproximar a Câmera in direção ao Foco"> + <joystick_rotate name="cam_rotate_stick" tool_tip="Girar câmera ao redor do foco"/> <slider_bar name="zoom_slider" tool_tip="Zoom de câmera para focalizar"/> - </panel> - <joystick_rotate name="cam_rotate_stick" tool_tip="Órbita em torno do foco da câmera"/> - <panel name="camera_presets"> - <button name="rear_view" tool_tip="Vista de trás"/> - <button name="group_view" tool_tip="Visualizar grupo"/> - <button name="front_view" tool_tip="Vista frontal"/> - <button name="mouselook_view" tool_tip="Visâo do mouse"/> + <joystick_track name="cam_track_stick" tool_tip="Move a câmera para cima e para baixo, direita e esquerda"/> </panel> </panel> <panel name="buttons"> - <button label="" name="orbit_btn" tool_tip="Câmera orbital"/> - <button label="" name="pan_btn" tool_tip="Câmera Pan"/> - <button label="" name="avatarview_btn" tool_tip="Predefinições"/> - <button label="" name="freecamera_btn" tool_tip="Visualizar objeto"/> + <button label="" name="presets_btn" tool_tip="Ângulos predefinidos"/> + <button label="" name="pan_btn" tool_tip="Pan zoom orbital"/> + <button label="" name="avatarview_btn" tool_tip="Modos de câmera"/> </panel> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_incoming_call.xml b/indra/newview/skins/default/xui/pt/floater_incoming_call.xml index cdebe533bd..4b9553adfe 100644 --- a/indra/newview/skins/default/xui/pt/floater_incoming_call.xml +++ b/indra/newview/skins/default/xui/pt/floater_incoming_call.xml @@ -16,7 +16,13 @@ entrou numa ligação de voz via conferência. </floater.string> <floater.string name="VoiceInviteGroup"> - entrou numa ligação de bate-papo de voz com o grupo [GROUP]. + chegou ao canal de voz do '[GROUP]'. + </floater.string> + <floater.string name="VoiceInviteQuestionGroup"> + Deseja sair do [CURRENT_CHAT] e entrar na ligação de '[GROUP]'? + </floater.string> + <floater.string name="VoiceInviteQuestionDefault"> + Sair do [CURRENT_CHAT] e entrar neste bate-papo de voz? </floater.string> <text name="question"> Sair do [CURRENT_CHAT] e entrar neste bate-papo? diff --git a/indra/newview/skins/default/xui/pt/floater_snapshot.xml b/indra/newview/skins/default/xui/pt/floater_snapshot.xml index b612442195..1d86b0d413 100644 --- a/indra/newview/skins/default/xui/pt/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/pt/floater_snapshot.xml @@ -5,12 +5,19 @@ </floater.string> <button label="Atualizar a foto" name="new_snapshot_btn"/> <line_editor label="Descrição" name="description"/> - <button label="Compartilhar foto" name="share"/> - <button label="Compartilhar na web" name="share_to_web"/> - <button label="Salvar no meu inventário" name="save_to_inventory"/> - <button label="Salvar foto" name="save"/> - <button label="Enviar foto por email" name="share_to_email"/> - <button label="Salvar no meu PC" name="save_to_computer"/> - <button label="Usar como foto do perfil" name="set_profile_pic"/> - <button label="Atrás" name="cancel"/> + <panel name="panel_snapshot_main"> + <button label="Compartilhar foto" name="share"/> + <button label="Salvar foto" name="save"/> + <button label="Usar como foto do perfil" name="set_profile_pic"/> + </panel> + <panel name="panel_snapshot_share"> + <button label="Compartilhar na web" name="share_to_web"/> + <button label="Enviar foto por email" name="share_to_email"/> + <button label="Atrás" name="cancel_share"/> + </panel> + <panel name="panel_snapshot_save"> + <button label="Salvar no meu inventário" name="save_to_inventory"/> + <button label="Salvar no meu PC" name="save_to_computer"/> + <button label="Atrás" name="cancel_save"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_voice_controls.xml b/indra/newview/skins/default/xui/pt/floater_voice_controls.xml index 5ef8479b7a..44f08b76b5 100644 --- a/indra/newview/skins/default/xui/pt/floater_voice_controls.xml +++ b/indra/newview/skins/default/xui/pt/floater_voice_controls.xml @@ -19,8 +19,10 @@ <layout_panel name="my_panel"> <text name="user_text" value="Meu avatar:"/> </layout_panel> - <layout_panel name="leave_call_btn_panel"> - <button label="Desligar" name="leave_call_btn"/> - </layout_panel> + <layout_stack name="voice_effect_and_leave_call_stack"> + <layout_panel name="leave_call_btn_panel"> + <button label="Desligar" name="leave_call_btn"/> + </layout_panel> + </layout_stack> </layout_stack> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_voice_effect.xml b/indra/newview/skins/default/xui/pt/floater_voice_effect.xml new file mode 100644 index 0000000000..4bc8575588 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/floater_voice_effect.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater label="Lugares" name="voice_effects" title="CHECAR DISTORÇÃO DE VOZ"> + <string name="no_voice_effect"> + (Não distorcer voz) + </string> + <string name="active_voice_effect"> + (Ativo) + </string> + <string name="unsubscribed_voice_effect"> + (Cancelou) + </string> + <string name="new_voice_effect"> + (Novo!) + </string> + <text name="status_text"> + Para ouvir um efeito de Distorção de voz, clique no botão Gravar, grave alguns instantes de voz, depois clique em Distorcer voz na lista para ouvir o resultado. + +Para reconectar à Voz local, basta fechar esta janela. + </text> + <button label="Gravar amostra" name="record_btn" tool_tip="Grave uma amostra da sua voz."/> + <button label="Parar" name="record_stop_btn"/> + <text name="voice_morphing_link"> + [[URL] Distorcer voz] + </text> + <scroll_list name="voice_effect_list" tool_tip="Grave sua voz por alguns instantes, depois clique num efeito para ouvir a distorção."> + <scroll_list.columns label="Distorcer voz" name="name"/> + <scroll_list.columns label="Vence em" name="expires"/> + </scroll_list> +</floater> diff --git a/indra/newview/skins/default/xui/pt/inspect_object.xml b/indra/newview/skins/default/xui/pt/inspect_object.xml index e9f1ca3a0b..b72de7038d 100644 --- a/indra/newview/skins/default/xui/pt/inspect_object.xml +++ b/indra/newview/skins/default/xui/pt/inspect_object.xml @@ -8,8 +8,8 @@ Autor: [CREATOR] </string> <string name="CreatorAndOwner"> - Autor: [CREATOR] -Proprietário: [OWNER] + Autor [CREATOR] +Proprietário [OWNER] </string> <string name="Price"> L$[AMOUNT] @@ -23,6 +23,13 @@ Proprietário: [OWNER] <string name="Sit"> Sentar </string> + <text name="object_name" value="Test Object Name That Is actually two lines and Really Long"/> + <text name="price_text"> + L$30.000 + </text> + <text name="object_description"> + This is a really long description for an object being as how it is at least 80 characters in length and so but maybe more like 120 at this point. Who knows, really? + </text> <button label="Comprar" name="buy_btn"/> <button label="Pagar" name="pay_btn"/> <button label="Pegar uma cópia" name="take_free_copy_btn"/> diff --git a/indra/newview/skins/default/xui/pt/menu_cof_attachment.xml b/indra/newview/skins/default/xui/pt/menu_cof_attachment.xml new file mode 100644 index 0000000000..527e3af3c9 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/menu_cof_attachment.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="COF Attachment"> + <menu_item_call label="Separar" name="detach"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_cof_body_part.xml b/indra/newview/skins/default/xui/pt/menu_cof_body_part.xml new file mode 100644 index 0000000000..704fd226eb --- /dev/null +++ b/indra/newview/skins/default/xui/pt/menu_cof_body_part.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="COF Body"> + <menu_item_call label="Trocar" name="replace"/> + <menu_item_call label="Editar" name="edit"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_cof_clothing.xml b/indra/newview/skins/default/xui/pt/menu_cof_clothing.xml new file mode 100644 index 0000000000..a58353f14e --- /dev/null +++ b/indra/newview/skins/default/xui/pt/menu_cof_clothing.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="COF Clothing"> + <menu_item_call label="Tirar" name="take_off"/> + <menu_item_call label="Subir um nível" name="move_up"/> + <menu_item_call label="Baixar um nível" name="move_down"/> + <menu_item_call label="Editar" name="edit"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_cof_gear.xml b/indra/newview/skins/default/xui/pt/menu_cof_gear.xml new file mode 100644 index 0000000000..8716992a5e --- /dev/null +++ b/indra/newview/skins/default/xui/pt/menu_cof_gear.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Gear COF"> + <menu label="Roupas novas" name="COF.Gear.New_Clothes"/> + <menu label="Nova parte do corpo" name="COF.Geear.New_Body_Parts"/> +</menu> diff --git a/indra/newview/skins/default/xui/pt/menu_hide_navbar.xml b/indra/newview/skins/default/xui/pt/menu_hide_navbar.xml index 472ca466c9..c2b063193e 100644 --- a/indra/newview/skins/default/xui/pt/menu_hide_navbar.xml +++ b/indra/newview/skins/default/xui/pt/menu_hide_navbar.xml @@ -2,4 +2,5 @@ <menu name="hide_navbar_menu"> <menu_item_check label="Mostrar barra de navegação" name="ShowNavbarNavigationPanel"/> <menu_item_check label="Mostrar barra de favoritos" name="ShowNavbarFavoritesPanel"/> + <menu_item_check label="Mostrar minibarra de localização" name="ShowMiniLocationPanel"/> </menu> diff --git a/indra/newview/skins/default/xui/pt/menu_inventory.xml b/indra/newview/skins/default/xui/pt/menu_inventory.xml index 1b86b37075..aa195e5739 100644 --- a/indra/newview/skins/default/xui/pt/menu_inventory.xml +++ b/indra/newview/skins/default/xui/pt/menu_inventory.xml @@ -81,6 +81,7 @@ <menu label="Anexar ao HUD" name="Attach To HUD"/> <menu_item_call label="Editar" name="Wearable Edit"/> <menu_item_call label="Vestir" name="Wearable Wear"/> + <menu_item_call label="Adicionar" name="Wearable Add"/> <menu_item_call label="Tirar" name="Take Off"/> <menu_item_call label="--Sem opções--" name="--no options--"/> </menu> diff --git a/indra/newview/skins/default/xui/pt/menu_outfit_gear.xml b/indra/newview/skins/default/xui/pt/menu_outfit_gear.xml new file mode 100644 index 0000000000..eb1c026708 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/menu_outfit_gear.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Gear Outfit"> + <menu_item_call label="Vestir - Substituir look atual" name="wear"/> + <menu_item_call label="Tirar - Tirar do look atual" name="take_off"/> + <menu label="Roupas novas" name="New Clothes"> + <menu_item_call label="Nova camisa" name="New Shirt"/> + <menu_item_call label="Novas calças" name="New Pants"/> + <menu_item_call label="Novos sapatos" name="New Shoes"/> + <menu_item_call label="Novas meias" name="New Socks"/> + <menu_item_call label="Nova blusa" name="New Jacket"/> + <menu_item_call label="Nova saia" name="New Skirt"/> + <menu_item_call label="Novas luvas" name="New Gloves"/> + <menu_item_call label="Nova camiseta" name="New Undershirt"/> + <menu_item_call label="Novas roupa de baixo" name="New Underpants"/> + <menu_item_call label="Novo alpha" name="New Alpha"/> + <menu_item_call label="Nova tatuagem" name="New Tattoo"/> + </menu> + <menu label="Nova parte do corpo" name="New Body Parts"> + <menu_item_call label="Nova silhueta" name="New Shape"/> + <menu_item_call label="Nova pele" name="New Skin"/> + <menu_item_call label="Novo cabelo" name="New Hair"/> + <menu_item_call label="Novos olhos" name="New Eyes"/> + </menu> + <menu_item_call label="Renomear look" name="rename"/> + <menu_item_call label="Excluir visual" name="delete_outfit"/> +</menu> diff --git a/indra/newview/skins/default/xui/pt/menu_outfit_tab.xml b/indra/newview/skins/default/xui/pt/menu_outfit_tab.xml new file mode 100644 index 0000000000..7c30e8ac55 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/menu_outfit_tab.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Outfit"> + <menu_item_call label="Vestir - Substituir look atual" name="wear_replace"/> + <menu_item_call label="Vestir - Sem tirar look atual" name="wear_add"/> + <menu_item_call label="Tirar - Tirar do look atual" name="take_off"/> + <menu_item_call label="Editar look" name="edit"/> + <menu_item_call label="Renomear" name="rename"/> + <menu_item_call label="Excluir visual" name="delete"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_save_outfit.xml b/indra/newview/skins/default/xui/pt/menu_save_outfit.xml index a957708ae4..61c6b9202f 100644 --- a/indra/newview/skins/default/xui/pt/menu_save_outfit.xml +++ b/indra/newview/skins/default/xui/pt/menu_save_outfit.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <toggleable_menu name="save_outfit_menu"> <menu_item_call label="Salvar" name="save_outfit"/> - <menu_item_call label="Salvar como novo" name="save_as_new_outfit"/> + <menu_item_call label="Salvar como" name="save_as_new_outfit"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_viewer.xml b/indra/newview/skins/default/xui/pt/menu_viewer.xml index b091cc2c97..5a5a418370 100644 --- a/indra/newview/skins/default/xui/pt/menu_viewer.xml +++ b/indra/newview/skins/default/xui/pt/menu_viewer.xml @@ -11,6 +11,7 @@ <menu_item_check label="Meu inventário" name="Inventory"/> <menu_item_check label="Meu inventário" name="ShowSidetrayInventory"/> <menu_item_check label="Meus gestos" name="Gestures"/> + <menu_item_check label="Minha voz" name="ShowVoice"/> <menu label="Meu status" name="Status"> <menu_item_call label="Ausente" name="Set Away"/> <menu_item_call label="Ocupado" name="Set Busy"/> @@ -70,6 +71,12 @@ <menu_item_call label="Link" name="Link"/> <menu_item_call label="Desconectar links" name="Unlink"/> <menu_item_check label="Edit Linked Parts" name="Edit Linked Parts"/> + <menu label="Selecionar partes conectadas" name="Select Linked Parts"> + <menu_item_call label="Selecionar próxima parte" name="Select Next Part"/> + <menu_item_call label="Selecionar parte anterior" name="Select Previous Part"/> + <menu_item_call label="Incluir próxima parte" name="Include Next Part"/> + <menu_item_call label="Incluir parte anterior" name="Include Previous Part"/> + </menu> <menu_item_call label="Enfocar seleção" name="Focus on Selection"/> <menu_item_call label="Ampliar seleção" name="Zoom to Selection"/> <menu label="Objeto:" name="Object"> @@ -100,11 +107,11 @@ <menu_item_call label="Usar seleção em grade" name="Use Selection for Grid"/> <menu_item_call label="Opções de grade" name="Grid Options"/> </menu> - <menu label="Selecionar partes conectadas" name="Select Linked Parts"> - <menu_item_call label="Selecionar próxima parte" name="Select Next Part"/> - <menu_item_call label="Selecionar parte anterior" name="Select Previous Part"/> - <menu_item_call label="Incluir próxima parte" name="Include Next Part"/> - <menu_item_call label="Incluir parte anterior" name="Include Previous Part"/> + <menu label="Upload" name="Upload"> + <menu_item_call label="Imagem (L$[COST])..." name="Upload Image"/> + <menu_item_call label="Som (L$[COST])..." name="Upload Sound"/> + <menu_item_call label="Animação (L$[COST])..." name="Upload Animation"/> + <menu_item_call label="Volume (L$[COST] por arquivo)..." name="Bulk Upload"/> </menu> </menu> <menu label="Ajuda" name="Help"> diff --git a/indra/newview/skins/default/xui/pt/menu_wearable_list_item.xml b/indra/newview/skins/default/xui/pt/menu_wearable_list_item.xml new file mode 100644 index 0000000000..dbf942796c --- /dev/null +++ b/indra/newview/skins/default/xui/pt/menu_wearable_list_item.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Outfit Wearable Context Menu"> + <menu_item_call label="Vestir" name="wear"/> + <menu_item_call label="Adicionar" name="wear_add"/> + <menu_item_call label="Tirar / Separar" name="take_off_or_detach"/> + <menu_item_call label="Separar" name="detach"/> + <context_menu label="Colocar em ▶" name="wearable_attach_to"/> + <context_menu label="Anexar ao HUD ▶" name="wearable_attach_to_hud"/> + <menu_item_call label="Tirar" name="take_off"/> + <menu_item_call label="Editar" name="edit"/> + <menu_item_call label="Perfil do objeto" name="object_profile"/> + <menu_item_call label="Mostrar original" name="show_original"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pt/notifications.xml b/indra/newview/skins/default/xui/pt/notifications.xml index e64940ecb1..4a738bf0ea 100644 --- a/indra/newview/skins/default/xui/pt/notifications.xml +++ b/indra/newview/skins/default/xui/pt/notifications.xml @@ -469,7 +469,9 @@ Para aumentar a qualidade do vídeo, vá para Preferências > Vídeo. A região [REGION] não permite ser aplainada. </notification> <notification name="CannotCopyWarning"> - Você não tem permissão para copiar este item e irá perdê-lo do seu inventário se entregá-lo a alguém. Quer realmente oferecer este item? + Você não tem autorização para copiar os itens abaixo: +[ITENS] +ao dá-los, você ficará sem eles no seu inventário. Deseja realmente dar estes itens? <usetemplate name="okcancelbuttons" notext="Não" yestext="Sim"/> </notification> <notification name="CannotGiveItem"> @@ -936,6 +938,26 @@ Oferecer amizade para [NAME]? <button name="Cancel" text="Cancelar"/> </form> </notification> + <notification label="Salvar item de vestuário" name="SaveWearableAs"> + Salvar item no meu inventário como: + <form name="form"> + <input name="message"> + [DESC] (novo) + </input> + <button name="Offer" text="OK"/> + <button name="Cancel" text="Cancelar"/> + </form> + </notification> + <notification label="Renomear look" name="RenameOutfit"> + Nome do novo look: + <form name="form"> + <input name="new_name"> + [NAME] + </input> + <button name="Offer" text="OK"/> + <button name="Cancel" text="Cancelar"/> + </form> + </notification> <notification name="RemoveFromFriends"> Você quer remover [FIRST_NAME] [LAST_NAME] da sua lista de amigos? <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Remover"/> @@ -1545,7 +1567,7 @@ Ir para o Banco de Conhecimento para maiores informações sobre Classificaçõe <notification name="RegionEntryAccessBlocked_Change"> Você não pode entrar nessa região devido à sua seleção de maturidade. -Clique em 'Mudar preferência' para aumentar seu nível de maturidade e ganhar acesso imediato. Você então poderá fazer buscas e acessar conteúdo [REGIONMATURITY]. Para modificar o nível de maturidade, use o menu Eu > Preferências > Gerais. +Para entrar na região desejada, mude o nível de maturidade. Você então poderá fazer buscas e acessar conteúdo [REGIONMATURITY]. Para desfazer qualquer mudança, vá para Eu > Preferências > Geral. <form name="form"> <button name="OK" text="Mudar preferência"/> <button default="true" name="Cancel" text="Fechar"/> @@ -2556,6 +2578,21 @@ Clique em Aceitar para atender ou em Recusar para recusar este convite. Clique <notification name="VoiceLoginRetry"> Estamos criando uma canal de voz para você. Isto pode levar até um minuto. </notification> + <notification name="VoiceEffectsExpired"> + Um ou mais serviços de distorção de voz que você assinou veceu. +[[URL] Clique aqui] para renovar o serviço. + </notification> + <notification name="VoiceEffectsExpiredInUse"> + A Distorção de voz ativa expirou. Suas configurações de voz padrão foram ativadas. +[[URL] Clique aqui] para renovar o serviço. + </notification> + <notification name="VoiceEffectsWillExpire"> + Uma ou mais das suas distorções de voz tem vencimento em menos de [INTERVAL] dias. +[[URL] Clique aqui] para renovar o serviço. + </notification> + <notification name="VoiceEffectsNew"> + Novas Distorções de voz! + </notification> <notification name="Cannot enter parcel: not a group member"> Só membros de um grupo podem acessar esta área. </notification> @@ -2622,7 +2659,20 @@ Para sua segurança, os SLurls serão bloqueados por alguns instantes. O botão será exibido quando houver espaço suficente. </notification> <notification name="ShareNotification"> - Arraste itens do inventário para uma pessoa no seletor de residentes + Selecione os residentes com quem compartilhar. + </notification> + <notification name="ShareItemsConfirmation"> + Tem certeza de que quer compartilhar os items abaixo? + +[ITENS] + +Com os seguintes residentes: + +[RESIDENTS] + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="ItemsShared"> + Itens compartilhados. </notification> <notification name="DeedToGroupFail"> Ocorreu uma falha durante a doação ao grupo. @@ -2631,10 +2681,15 @@ O botão será exibido quando houver espaço suficente. ( [EXISTENCE] segundos de vida ) O avatar de '[NAME]' emergiu em [TIME] segundos. </notification> - <notification name="AvatarRezSelfNotification"> + <notification name="AvatarRezSelfBakedDoneNotification"> ( [EXISTENCE] segundos de vida ) Você confeccionou seu look em [TIME] segundos. </notification> + <notification name="AvatarRezSelfBakedUpdateNotification"> + ( [EXISTENCE] segundos de vida ) +Você enviou uma atualização da sua aparência em [TIME] segundos. +[STATUS] + </notification> <notification name="AvatarRezCloudNotification"> ( [EXISTENCE] segundos de vida ) Avatar '[NAME]' transformou-se em nuvem. @@ -2655,10 +2710,32 @@ Avatar '[NAME]' entrou no modo aparência. ( [EXISTENCE] segundos de vida ) Avatar '[NAME]' sair do modo aparecer. </notification> + <notification name="NoConnect"> + Detectamos um problema de conexão com [PROTOCOL] [HOSTID]. +Verifique a configuração da sua rede e firewall. + <form name="form"> + <button name="OK" text="OK"/> + </form> + </notification> + <notification name="NoVoiceConnect"> + Estamos tendo problemas de conexão com o seu servidor de voz: + +[HOSTID] + +Talvez não seja possível se comunicar via voz. +Verifique a configuração da sua rede e firewall. + <form name="form"> + <button name="OK" text="OK"/> + </form> + </notification> <notification name="AvatarRezLeftNotification"> ( [EXISTENCE] segundos de vida ) Avatar '[NAME]' saiu totalmente carregado. </notification> + <notification name="AvatarRezSelfBakeNotification"> + ( [EXISTENCE] segundos de vida ) +Você carregou uma textura com [RESOLUTION] para o(a) '[BODYREGION]' em [TIME] segundos. + </notification> <notification name="ConfirmLeaveCall"> Tem certeza de que quer sair desta ligação? <usetemplate ignoretext="Confirmar antes de deixar ligação" name="okcancelignore" notext="Não" yestext="Sim"/> @@ -2669,7 +2746,7 @@ Todos os demais residentes que entrarem na ligação mais tarde também serão s Silenciar todos? - <usetemplate ignoretext="Confirmar antes de silenciar todos os participantes em ligações de grupo." name="okcancelignore" notext="OK" yestext="Cancelar"/> + <usetemplate ignoretext="Confirmar antes de silenciar todos os participantes em ligações de grupo." name="okcancelignore" notext="Cancelar" yestext="OK"/> </notification> <global name="UnsupportedCPU"> - A velocidade da sua CPU não suporta os requisitos mínimos exigidos. diff --git a/indra/newview/skins/default/xui/pt/panel_edit_shape.xml b/indra/newview/skins/default/xui/pt/panel_edit_shape.xml index 6b9ac94cac..de41ba3ad2 100644 --- a/indra/newview/skins/default/xui/pt/panel_edit_shape.xml +++ b/indra/newview/skins/default/xui/pt/panel_edit_shape.xml @@ -1,8 +1,15 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="edit_shape_panel"> - <text name="avatar_height"> - [HEIGHT] metros de altura - </text> + <string name="meters"> + Metros + </string> + <string name="feet"> + Pés + </string> + <string name="height"> + Altura: + </string> + <text name="avatar_height"/> <panel label="Camisa" name="accordion_panel"> <accordion name="wearable_accordion"> <accordion_tab name="shape_body_tab" title="Corpo"/> diff --git a/indra/newview/skins/default/xui/pt/panel_edit_wearable.xml b/indra/newview/skins/default/xui/pt/panel_edit_wearable.xml index f14a04f440..e921dd1bea 100644 --- a/indra/newview/skins/default/xui/pt/panel_edit_wearable.xml +++ b/indra/newview/skins/default/xui/pt/panel_edit_wearable.xml @@ -72,7 +72,7 @@ <string name="jacket_desc_text"> Jaqueta: </string> - <string name="skirt_skirt_desc_text"> + <string name="skirt_desc_text"> Saia: </string> <string name="gloves_desc_text"> @@ -100,11 +100,6 @@ <icon name="male_icon" tool_tip="Masculino"/> <icon name="female_icon" tool_tip="Feminino"/> </panel> - <panel label="gear_buttom_panel" name="gear_buttom_panel"> - <button name="friends_viewsort_btn" tool_tip="Opções"/> - <button name="add_btn" tool_tip="TODO"/> - <button name="del_btn" tool_tip="TODO"/> - </panel> <panel name="button_panel"> <button label="Salvar como" name="save_as_button"/> <button label="Reverter" name="revert_button"/> diff --git a/indra/newview/skins/default/xui/pt/panel_outfit_edit.xml b/indra/newview/skins/default/xui/pt/panel_outfit_edit.xml index 61e470586e..bbf5b397c3 100644 --- a/indra/newview/skins/default/xui/pt/panel_outfit_edit.xml +++ b/indra/newview/skins/default/xui/pt/panel_outfit_edit.xml @@ -13,7 +13,7 @@ <string name="Filter.All" value="Tudo"/> <string name="Filter.Clothes/Body" value="Roupas/Corpo"/> <string name="Filter.Objects" value="Objects"/> - <button label="Editar" name="edit_wearable_btn"/> + <string name="Filter.Custom" value="Filtro personalizado"/> <text name="title" value="Editar look"/> <panel label="bottom_panel" name="header_panel"> <panel label="bottom_panel" name="outfit_name_and_status"> @@ -23,20 +23,16 @@ </panel> <layout_stack name="im_panels"> <layout_panel label="Painel de controle de MIs" name="outfit_wearables_panel"> - <panel label="bottom_panel" name="edit_panel"/> - </layout_panel> - <layout_panel name="add_wearables_panel"> - <text name="add_to_outfit_label" value="Adicionar ao look:"/> <layout_stack name="filter_panels"> - <layout_panel label="Painel de controle de MIs" name="filter_panel"> - <filter_editor label="Filtro" name="look_item_filter"/> + <layout_panel name="add_button_and_combobox"> + <button label="Adicionar mais..." name="show_add_wearables_btn"/> + </layout_panel> + <layout_panel name="filter_panel"> + <filter_editor label="Filtrar itens de vestuário" name="look_item_filter"/> </layout_panel> </layout_stack> - <panel label="add_wearables_button_bar" name="add_wearables_button_bar"> - <button label="F" name="folder_view_btn"/> - <button label="L" name="list_view_btn"/> - </panel> </layout_panel> + <layout_panel name="add_wearables_panel"/> </layout_stack> <panel name="save_revert_button_bar"> <button label="Salvar" name="save_btn"/> diff --git a/indra/newview/skins/default/xui/pt/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/pt/panel_outfits_inventory.xml index c8f33f85a9..10ef2a332f 100644 --- a/indra/newview/skins/default/xui/pt/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/pt/panel_outfits_inventory.xml @@ -7,8 +7,7 @@ <panel name="bottom_panel"> <button name="options_gear_btn" tool_tip="Mostrar opções adicionais"/> <dnd_button name="trash_btn" tool_tip="Remover item selecionado"/> - <button label="Salvar este look" name="make_outfit_btn" tool_tip="Salvar aparência como um look"/> + <button label="Salvar como" name="save_btn"/> <button label="Vestir" name="wear_btn" tool_tip="Vestir look selecionado"/> - <button label="Editar look" name="edit_current_outfit_btn"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_places.xml b/indra/newview/skins/default/xui/pt/panel_places.xml index f7b6f54dea..5f2c56ab8c 100644 --- a/indra/newview/skins/default/xui/pt/panel_places.xml +++ b/indra/newview/skins/default/xui/pt/panel_places.xml @@ -5,12 +5,12 @@ <filter_editor label="Filtrar meus lugares" name="Filter"/> <panel name="button_panel"> <button label="Teletransportar" name="teleport_btn" tool_tip="Teletransportar para a área selecionada"/> - <button label="Mapa" name="map_btn"/> + <button label="Mapa" name="map_btn" tool_tip="Mostrar a área no Mapa Múndi"/> <button label="Editar" name="edit_btn" tool_tip="Editar dados do marco"/> <button label="▼" name="overflow_btn" tool_tip="Mostrar opções adicionais"/> <button label="Salvar" name="save_btn"/> <button label="Cancelar" name="cancel_btn"/> <button label="Fechar" name="close_btn"/> - <button label="Perfil" name="profile_btn"/> + <button label="Perfil" name="profile_btn" tool_tip="Mostrar perfil do lugar"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/pt/panel_preferences_advanced.xml index 885aafc350..13cb8a444e 100644 --- a/indra/newview/skins/default/xui/pt/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/pt/panel_preferences_advanced.xml @@ -13,7 +13,7 @@ </text> <check_box label="Construção/Edição" name="edit_camera_movement" tool_tip="Use o posicionamento automático da câmera quando entrar e sair do modo de edição"/> <check_box label="Aparência" name="appearance_camera_movement" tool_tip="Use o posicionamento automático da câmera quando em modo de edição"/> - <check_box initial_value="1" label="Barra lateral" name="appearance_sidebar_positioning" tool_tip="Usar posicionamento automático da câmera na barra lateral"/> + <check_box initial_value="verdadeiro" label="Barra lateral" name="appearance_sidebar_positioning" tool_tip="Usar posicionamento automático da câmera na barra lateral"/> <check_box label="Mostre-me em visão de mouse" name="first_person_avatar_visible"/> <check_box label="Teclas de seta sempre me movem" name="arrow_keys_move_avatar_check"/> <check_box label="Dê dois toques e pressione para correr" name="tap_tap_hold_to_run"/> diff --git a/indra/newview/skins/default/xui/pt/panel_status_bar.xml b/indra/newview/skins/default/xui/pt/panel_status_bar.xml index a320d9d56d..fbbcf0d1be 100644 --- a/indra/newview/skins/default/xui/pt/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/pt/panel_status_bar.xml @@ -21,8 +21,10 @@ <panel.string name="buycurrencylabel"> L$ [AMT] </panel.string> - <button label="" label_selected="" name="buycurrency" tool_tip="Meu saldo"/> - <button label="Comprar L$" name="buyL" tool_tip="Comprar mais L$"/> + <panel name="balance_bg"> + <text name="balance" tool_tip="Meu saldo" value="L$20"/> + <button label="Comprar L$" name="buyL" tool_tip="Comprar mais L$"/> + </panel> <text name="TimeText" tool_tip="Hora atual (Pacífico)"> 24:00 AM PST </text> diff --git a/indra/newview/skins/default/xui/pt/panel_voice_effect.xml b/indra/newview/skins/default/xui/pt/panel_voice_effect.xml new file mode 100644 index 0000000000..08e89f46f9 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/panel_voice_effect.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_voice_effect"> + <string name="no_voice_effect"> + Não distorcer voz + </string> + <string name="preview_voice_effects"> + Checar distorção de voz ▶ + </string> + <string name="get_voice_effects"> + Distorcer voz ▶ + </string> + <combo_box name="voice_effect" tool_tip="Selecione um efeito de distorção para mudar sua voz."> + <combo_box.item label="Não distorcer voz" name="no_voice_effect"/> + </combo_box> +</panel> diff --git a/indra/newview/skins/default/xui/pt/sidepanel_inventory.xml b/indra/newview/skins/default/xui/pt/sidepanel_inventory.xml index 31c96cad4c..e382da258f 100644 --- a/indra/newview/skins/default/xui/pt/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/pt/sidepanel_inventory.xml @@ -2,12 +2,12 @@ <panel label="Coisas" name="objects panel"> <panel label="" name="sidepanel__inventory_panel"> <panel name="button_panel"> - <button label="Perfil" name="info_btn"/> - <button label="Compartilhar" name="share_btn"/> - <button label="Comprar" name="shop_btn"/> - <button label="Vestir" name="wear_btn"/> + <button label="Perfil" name="info_btn" tool_tip="Mostrar perfil do objeto"/> + <button label="Compartilhar" name="share_btn" tool_tip="Compartilhar item de inventário"/> + <button label="Comprar" name="shop_btn" tool_tip="Abrir página do Marketplace"/> + <button label="Vestir" name="wear_btn" tool_tip="Vestir visual selecionado"/> <button label="Tocar" name="play_btn"/> - <button label="Teletransportar" name="teleport_btn"/> + <button label="Teletransportar" name="teleport_btn" tool_tip="Teletransportar para a área selecionada"/> </panel> </panel> </panel> diff --git a/indra/newview/skins/default/xui/pt/strings.xml b/indra/newview/skins/default/xui/pt/strings.xml index f865124009..80f52dfe46 100644 --- a/indra/newview/skins/default/xui/pt/strings.xml +++ b/indra/newview/skins/default/xui/pt/strings.xml @@ -104,7 +104,7 @@ A cadeia de certificados do servidor tinha certificados demais. Por favor contate o administrador do Grid. </string> <string name="CertInvalidSignature"> - A assinatura do certificado dado pelo servidor do Grid não pôde ser verificada. Por favor contate o administrador do Grid. + A assinatura do certificado dado pelo servidor do Grid não pôde ser verificada. Contate o administrador do seu Grid. </string> <string name="LoginFailedNoNetwork"> Erro de rede: Não foi possível estabelecer a conexão, verifique sua conexão de rede. @@ -732,6 +732,12 @@ <string name="land_type_unknown"> (desconhecido) </string> + <string name="Estate / Full Region"> + Propriedadade / Região inteira: + </string> + <string name="Mainland / Full Region"> + Continente / Região inteira: + </string> <string name="all_files"> Todos os arquivos </string> @@ -876,6 +882,9 @@ <string name="NewWearable"> Novo [WEARABLE_ITEM] </string> + <string name="CreateNewWearable"> + Criar [WEARABLE_TYPE] + </string> <string name="next"> Próximo </string> @@ -3447,6 +3456,9 @@ If you continue to receive this message, contact the [SUPPORT_SITE]. <string name="session_initialization_timed_out_error"> A inicialização da sessão expirou </string> + <string name="voice_morphing_url"> + http://secondlife.com/landing/voicemorphing + </string> <string name="paid_you_ldollars"> [NAME] lhe pagou L$ [AMOUNT] </string> @@ -3617,17 +3629,17 @@ Denunciar abuso <string name="Male - Wow"> Wow - masculino </string> - <string name="FeMale - Excuse me"> - Perdão - masc/fem + <string name="Female - Excuse me"> + Perdão - fem </string> - <string name="FeMale - Get lost"> + <string name="Female - Get lost"> Deixe-me em paz - feminino </string> - <string name="FeMale - Blow kiss"> - Mandar beijo - masc/fem + <string name="Female - Blow kiss"> + Mandar beijo - fem </string> - <string name="FeMale - Boo"> - Vaia - masc/fem + <string name="Female - Boo"> + Vaia - fem </string> <string name="Female - Bored"> Maçante - feminino @@ -3659,4 +3671,32 @@ Denunciar abuso <string name="texture_load_dimensions_error"> A imagem excede o limite [WIDTH]*[HEIGHT] </string> + <string name="words_separator" value=","/> + <string name="server_is_down"> + Aconteceu algo inesperado, apesar de termos tentador impedir isso. + + Cheque secondlifegrid.net para saber se foi detectado um problema com o serviço. + Se o problema persisitr, cheque a configuração da sua rede e firewall. + </string> + <string name="dateTimeWeekdaysNames"> + Domingo:Segunda:Terça:Quarta:Quinta:Sexta:Sábado + </string> + <string name="dateTimeWeekdaysShortNames"> + Dom:Seg:Ter:Qua:Qui:Sex:Sab + </string> + <string name="dateTimeMonthNames"> + Janeiro:Fevereiro:Março:Abril:Maio:Junho:Julho:Agosto:Setembro:Outubro:Novembro:Dezembro + </string> + <string name="dateTimeMonthShortNames"> + Jan:Fev:Mar:Abr:Maio:Jun:Jul:Ago:Set:Out:Nov:Dez + </string> + <string name="dateTimeDayFormat"> + [MDAY] + </string> + <string name="dateTimeAM"> + AM + </string> + <string name="dateTimePM"> + PM + </string> </strings> diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 0fd3cf5b3b..0b30128ff3 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -34,6 +34,7 @@ import sys import os.path import re import tarfile +import time viewer_dir = os.path.dirname(__file__) # add llmanifest library to our path so we don't have to muck with PYTHONPATH sys.path.append(os.path.join(viewer_dir, '../lib/python/indra/util')) @@ -737,55 +738,72 @@ class DarwinManifest(ViewerManifest): # mount the image and get the name of the mount point and device node hdi_output = self.run_command('hdiutil attach -private %r' % sparsename) - devfile = re.search("/dev/disk([0-9]+)[^s]", hdi_output).group(0).strip() - volpath = re.search('HFS\s+(.+)', hdi_output).group(1).strip() + try: + devfile = re.search("/dev/disk([0-9]+)[^s]", hdi_output).group(0).strip() + volpath = re.search('HFS\s+(.+)', hdi_output).group(1).strip() - # Copy everything in to the mounted .dmg + # Copy everything in to the mounted .dmg - if self.default_channel() and not self.default_grid(): - app_name = "Second Life " + self.args['grid'] - else: - app_name = channel_standin.strip() - - # Hack: - # Because there is no easy way to coerce the Finder into positioning - # the app bundle in the same place with different app names, we are - # adding multiple .DS_Store files to svn. There is one for release, - # one for release candidate and one for first look. Any other channels - # will use the release .DS_Store, and will look broken. - # - Ambroff 2008-08-20 - dmg_template = os.path.join( - 'installers', - 'darwin', - '%s-dmg' % "".join(self.channel_unique().split()).lower()) - - if not os.path.exists (self.src_path_of(dmg_template)): - dmg_template = os.path.join ('installers', 'darwin', 'release-dmg') - - for s,d in {self.get_dst_prefix():app_name + ".app", - os.path.join(dmg_template, "_VolumeIcon.icns"): ".VolumeIcon.icns", - os.path.join(dmg_template, "background.jpg"): "background.jpg", - os.path.join(dmg_template, "_DS_Store"): ".DS_Store"}.items(): - print "Copying to dmg", s, d - self.copy_action(self.src_path_of(s), os.path.join(volpath, d)) - - # Hide the background image, DS_Store file, and volume icon file (set their "visible" bit) - for f in ".VolumeIcon.icns", "background.jpg", ".DS_Store": - self.run_command('SetFile -a V %r' % os.path.join(volpath, f)) - - # Create the alias file (which is a resource file) from the .r - self.run_command('rez %r -o %r' % - (self.src_path_of("installers/darwin/release-dmg/Applications-alias.r"), - os.path.join(volpath, "Applications"))) - - # Set the alias file's alias and custom icon bits - self.run_command('SetFile -a AC %r' % os.path.join(volpath, "Applications")) - - # Set the disk image root's custom icon bit - self.run_command('SetFile -a C %r' % volpath) - - # Unmount the image - self.run_command('hdiutil detach -force %r' % devfile) + if self.default_channel() and not self.default_grid(): + app_name = "Second Life " + self.args['grid'] + else: + app_name = channel_standin.strip() + + # Hack: + # Because there is no easy way to coerce the Finder into positioning + # the app bundle in the same place with different app names, we are + # adding multiple .DS_Store files to svn. There is one for release, + # one for release candidate and one for first look. Any other channels + # will use the release .DS_Store, and will look broken. + # - Ambroff 2008-08-20 + dmg_template = os.path.join( + 'installers', + 'darwin', + '%s-dmg' % "".join(self.channel_unique().split()).lower()) + + if not os.path.exists (self.src_path_of(dmg_template)): + dmg_template = os.path.join ('installers', 'darwin', 'release-dmg') + + for s,d in {self.get_dst_prefix():app_name + ".app", + os.path.join(dmg_template, "_VolumeIcon.icns"): ".VolumeIcon.icns", + os.path.join(dmg_template, "background.jpg"): "background.jpg", + os.path.join(dmg_template, "_DS_Store"): ".DS_Store"}.items(): + print "Copying to dmg", s, d + self.copy_action(self.src_path_of(s), os.path.join(volpath, d)) + + # Hide the background image, DS_Store file, and volume icon file (set their "visible" bit) + for f in ".VolumeIcon.icns", "background.jpg", ".DS_Store": + pathname = os.path.join(volpath, f) + # We've observed mysterious "no such file" failures of the SetFile + # command, especially on the first file listed above -- yet + # subsequent inspection of the target directory confirms it's + # there. Timing problem with copy command? Try to handle. + for x in xrange(3): + if os.path.exists(pathname): + print "Confirmed existence: %r" % pathname + break + print "Waiting for %s copy command to complete (%s)..." % (f, x+1) + sys.stdout.flush() + time.sleep(1) + # If we fall out of the loop above without a successful break, oh + # well, possibly we've mistaken the nature of the problem. In any + # case, don't hang up the whole build looping indefinitely, let + # the original problem manifest by executing the desired command. + self.run_command('SetFile -a V %r' % pathname) + + # Create the alias file (which is a resource file) from the .r + self.run_command('rez %r -o %r' % + (self.src_path_of("installers/darwin/release-dmg/Applications-alias.r"), + os.path.join(volpath, "Applications"))) + + # Set the alias file's alias and custom icon bits + self.run_command('SetFile -a AC %r' % os.path.join(volpath, "Applications")) + + # Set the disk image root's custom icon bit + self.run_command('SetFile -a C %r' % volpath) + finally: + # Unmount the image even if exceptions from any of the above + self.run_command('hdiutil detach -force %r' % devfile) print "Converting temp disk image to final disk image" self.run_command('hdiutil convert %(sparse)r -format UDZO -imagekey zlib-level=9 -o %(final)r' % {'sparse':sparsename, 'final':finalname}) diff --git a/indra/test/CMakeLists.txt b/indra/test/CMakeLists.txt index c1360987a5..66c78a86c4 100644 --- a/indra/test/CMakeLists.txt +++ b/indra/test/CMakeLists.txt @@ -13,6 +13,7 @@ include(LLXML) include(LScript) include(Linking) include(Tut) +include(LLAddBuildTest) include(GoogleMock) @@ -30,7 +31,7 @@ include_directories( set(test_SOURCE_FILES io.cpp -# llapp_tut.cpp # Temporarily removed until thread issues can be solved +# llapp_tut.cpp # Temporarily removed until thread issues can be solved llblowfish_tut.cpp llbuffer_tut.cpp lldoubledispatch_tut.cpp @@ -117,19 +118,12 @@ endif (WINDOWS) get_target_property(TEST_EXE test LOCATION) -IF(WINDOWS) - set(LD_LIBRARY_PATH ${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}) -ELSEIF(DARWIN) - set(LD_LIBRARY_PATH ${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}/Resources:/usr/lib) -ELSE(WINDOWS) - set(LD_LIBRARY_PATH ${SHARED_LIB_STAGING_DIR}:/usr/lib) -ENDIF(WINDOWS) - -LL_TEST_COMMAND("${LD_LIBRARY_PATH}" +SET_TEST_PATH(LD_LIBRARY_PATH) +LL_TEST_COMMAND(command "${LD_LIBRARY_PATH}" "${TEST_EXE}" "--output=${CMAKE_CURRENT_BINARY_DIR}/cpp_test_results.txt" "--touch=${CMAKE_CURRENT_BINARY_DIR}/cpp_tests_ok.txt") ADD_CUSTOM_COMMAND( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/cpp_tests_ok.txt - COMMAND ${LL_TEST_COMMAND_value} + COMMAND ${command} DEPENDS test WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMMENT "C++ unit tests" |