diff options
Diffstat (limited to 'indra')
158 files changed, 3838 insertions, 525 deletions
diff --git a/indra/cmake/JsonCpp.cmake b/indra/cmake/JsonCpp.cmake index 499b00fb44..7ad73e5683 100644 --- a/indra/cmake/JsonCpp.cmake +++ b/indra/cmake/JsonCpp.cmake @@ -18,5 +18,5 @@ else (STANDALONE) elseif (LINUX) set(JSONCPP_LIBRARIES libjson_linux-gcc-4.1.3_libmt.a) endif (WINDOWS) - set(JSONCPP_INCLUDE_DIRS "${LIBS_PREBUILT_DIR}/include/jsoncpp" "${LIBS_PREBUILT_DIR}/include/json") + set(JSONCPP_INCLUDE_DIR "${LIBS_PREBUILT_DIR}/include/jsoncpp" "${LIBS_PREBUILT_DIR}/include/json") endif (STANDALONE) diff --git a/indra/cmake/Linking.cmake b/indra/cmake/Linking.cmake index c5f9e2c579..47f944f9a5 100644 --- a/indra/cmake/Linking.cmake +++ b/indra/cmake/Linking.cmake @@ -13,7 +13,7 @@ elseif (LINUX) set(EXE_STAGING_DIR ${CMAKE_BINARY_DIR}/sharedlibs/bin) elseif (DARWIN) set(SHARED_LIB_STAGING_DIR ${CMAKE_BINARY_DIR}/sharedlibs) - set(EXE_STAGING_DIR "${CMAKE_BINARY_DIR}/sharedlibs/\$(CONFIGURATION)") + set(EXE_STAGING_DIR "${CMAKE_BINARY_DIR}/sharedlibs") endif (WINDOWS) # Autobuild packages must provide 'release' versions of libraries, but may provide versions for @@ -33,7 +33,14 @@ else(WINDOWS OR DARWIN) set(AUTOBUILD_LIBS_INSTALL_DIRS ${AUTOBUILD_INSTALL_DIR}/lib/${CMAKE_BUILD_TYPE_LOWER}) endif(WINDOWS OR DARWIN) -list(APPEND AUTOBUILD_LIBS_INSTALL_DIRS ${ARCH_PREBUILT_DIRS_RELEASE}) +if (NOT "${CMAKE_BUILD_TYPE}" STREQUAL "Release") + # When we're building something other than Release, append the + # packages/lib/release directory to deal with autobuild packages that don't + # provide (e.g.) lib/debug libraries. + list(APPEND AUTOBUILD_LIBS_INSTALL_DIRS ${ARCH_PREBUILT_DIRS_RELEASE}) + message(STATUS "CMAKE_BUILD_TYPE = ${CMAKE_BUILD_TYPE}, extending AUTOBUILD_LIBS_INSTALL_DIRS") +endif (NOT "${CMAKE_BUILD_TYPE}" STREQUAL "Release") +message(STATUS "For ${CMAKE_BUILD_TYPE}, AUTOBUILD_LIBS_INSTALL_DIRS: ${AUTOBUILD_LIBS_INSTALL_DIRS}") link_directories(${AUTOBUILD_LIBS_INSTALL_DIRS}) if (LINUX) diff --git a/indra/llimage/llimagepng.cpp b/indra/llimage/llimagepng.cpp index 8d493ecde0..294f68b122 100644 --- a/indra/llimage/llimagepng.cpp +++ b/indra/llimage/llimagepng.cpp @@ -60,6 +60,12 @@ BOOL LLImagePNG::updateData() // Decode the PNG data and extract sizing information LLPngWrapper pngWrapper; + if (!pngWrapper.isValidPng(getData())) + { + setLastError("LLImagePNG data does not have a valid PNG header!"); + return FALSE; + } + LLPngWrapper::ImageInfo infop; if (! pngWrapper.readPng(getData(), NULL, &infop)) { @@ -90,6 +96,12 @@ BOOL LLImagePNG::decode(LLImageRaw* raw_image, F32 decode_time) // Decode the PNG data into the raw image LLPngWrapper pngWrapper; + if (!pngWrapper.isValidPng(getData())) + { + setLastError("LLImagePNG data does not have a valid PNG header!"); + return FALSE; + } + if (! pngWrapper.readPng(getData(), raw_image)) { setLastError(pngWrapper.getErrorMessage()); diff --git a/indra/llmessage/tests/testrunner.py b/indra/llmessage/tests/testrunner.py index f2c841532a..5b9beb359b 100644 --- a/indra/llmessage/tests/testrunner.py +++ b/indra/llmessage/tests/testrunner.py @@ -35,7 +35,7 @@ import re import errno import socket -VERBOSE = os.environ.get("INTEGRATION_TEST_VERBOSE", "1") # default to verbose +VERBOSE = os.environ.get("INTEGRATION_TEST_VERBOSE", "0") # default to quiet # Support usage such as INTEGRATION_TEST_VERBOSE=off -- distressing to user if # that construct actually turns on verbosity... VERBOSE = not re.match(r"(0|off|false|quiet)$", VERBOSE, re.IGNORECASE) diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp index a8a3a1f906..8ca1e685a9 100644 --- a/indra/llui/llfloater.cpp +++ b/indra/llui/llfloater.cpp @@ -3307,8 +3307,11 @@ void LLFloater::stackWith(LLFloater& other) setShape(next_rect); - other.mPositioning = LLFloaterEnums::POSITIONING_CASCADE_GROUP; - other.setFollows(FOLLOWS_LEFT | FOLLOWS_TOP); + if (!other.getHost()) + { + other.mPositioning = LLFloaterEnums::POSITIONING_CASCADE_GROUP; + other.setFollows(FOLLOWS_LEFT | FOLLOWS_TOP); + } } void LLFloater::applyRelativePosition() diff --git a/indra/lscript/lscript_byteformat.h b/indra/lscript/lscript_byteformat.h index 7dd21bb1ad..a294def734 100644 --- a/indra/lscript/lscript_byteformat.h +++ b/indra/lscript/lscript_byteformat.h @@ -529,6 +529,7 @@ typedef enum e_lscript_runtime_permissions SCRIPT_PERMISSION_CHANGE_PERMISSIONS, SCRIPT_PERMISSION_TRACK_CAMERA, SCRIPT_PERMISSION_CONTROL_CAMERA, + SCRIPT_PERMISSION_TELEPORT, SCRIPT_PERMISSION_EOF } LSCRIPTRunTimePermissions; @@ -545,6 +546,7 @@ const U32 LSCRIPTRunTimePermissionBits[SCRIPT_PERMISSION_EOF] = (0x1 << 9), // SCRIPT_PERMISSION_CHANGE_PERMISSIONS (0x1 << 10),// SCRIPT_PERMISSION_TRACK_CAMERA (0x1 << 11),// SCRIPT_PERMISSION_CONTROL_CAMERA + (0x1 << 12),// SCRIPT_PERMISSION_TELEPORT }; // http_request string constants diff --git a/indra/lscript/lscript_compile/indra.l b/indra/lscript/lscript_compile/indra.l index 4e103ae2ba..96b7e57e97 100644 --- a/indra/lscript/lscript_compile/indra.l +++ b/indra/lscript/lscript_compile/indra.l @@ -212,7 +212,8 @@ extern "C" { int yyerror(const char *fmt, ...); } "PERMISSION_CHANGE_JOINTS" { count(); yylval.ival = LSCRIPTRunTimePermissionBits[SCRIPT_PERMISSION_CHANGE_JOINTS]; return(INTEGER_CONSTANT); } "PERMISSION_CHANGE_PERMISSIONS" { count(); yylval.ival = LSCRIPTRunTimePermissionBits[SCRIPT_PERMISSION_CHANGE_PERMISSIONS]; return(INTEGER_CONSTANT); } "PERMISSION_TRACK_CAMERA" { count(); yylval.ival = LSCRIPTRunTimePermissionBits[SCRIPT_PERMISSION_TRACK_CAMERA]; return(INTEGER_CONSTANT); } -"PERMISSION_CONTROL_CAMERA" { count(); yylval.ival = LSCRIPTRunTimePermissionBits[SCRIPT_PERMISSION_CONTROL_CAMERA]; return(INTEGER_CONSTANT); } +"PERMISSION_CONTROL_CAMERA" { count(); yylval.ival = LSCRIPTRunTimePermissionBits[SCRIPT_PERMISSION_CONTROL_CAMERA]; return(INTEGER_CONSTANT); } +"PERMISSION_TELEPORT" { count(); yylval.ival = LSCRIPTRunTimePermissionBits[SCRIPT_PERMISSION_TELEPORT]; return(INTEGER_CONSTANT); } "INVENTORY_TEXTURE" { count(); yylval.ival = LLAssetType::AT_TEXTURE; return(INTEGER_CONSTANT); } "INVENTORY_SOUND" { count(); yylval.ival = LLAssetType::AT_SOUND; return(INTEGER_CONSTANT); } diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index d632220771..9be5aec47d 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -47,7 +47,7 @@ include(CMakeCopyIfDifferent) include_directories( ${DBUSGLIB_INCLUDE_DIRS} - ${JSONCPP_INCLUDE_DIRS} + ${JSONCPP_INCLUDE_DIR} ${GLOD_INCLUDE_DIR} ${LLAUDIO_INCLUDE_DIRS} ${LLCHARACTER_INCLUDE_DIRS} @@ -307,6 +307,7 @@ set(viewer_SOURCE_FILES lllistbrowser.cpp lllistcontextmenu.cpp lllistview.cpp + lllocalbitmaps.cpp lllocaltextureobject.cpp lllocationhistory.cpp lllocationinputctrl.cpp @@ -875,6 +876,7 @@ set(viewer_HEADER_FILES lllistbrowser.h lllistcontextmenu.h lllistview.h + lllocalbitmaps.h lllocaltextureobject.h lllocationhistory.h lllocationinputctrl.h diff --git a/indra/newview/app_settings/keywords.ini b/indra/newview/app_settings/keywords.ini index 7a9be77f96..6120f22ba4 100644 --- a/indra/newview/app_settings/keywords.ini +++ b/indra/newview/app_settings/keywords.ini @@ -91,6 +91,7 @@ PERMISSION_CHANGE_LINKS Passed to llRequestPermissions library function to req # PERMISSION_CHANGE_PERMISSIONS Passed to llRequestPermissions library function to request permission to change permissions PERMISSION_TRACK_CAMERA Passed to llRequestPermissions library function to request permission to track agent's camera PERMISSION_CONTROL_CAMERA Passed to llRequestPermissions library function to request permission to change agent's camera +PERMISSION_TELEPORT Passed to llRequestPermissions library function to request permission to teleport agent DEBUG_CHANNEL Chat channel reserved for debug and error messages from scripts PUBLIC_CHANNEL Chat channel that broadcasts to all nearby users diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index e5b13ca508..dbadad7056 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -8239,7 +8239,7 @@ <key>Type</key> <string>U32</string> <key>Value</key> - <real>128</real> + <real>512</real> </map> <key>RenderSpecularResY</key> @@ -8263,7 +8263,7 @@ <key>Type</key> <string>F32</string> <key>Value</key> - <real>8</real> + <real>384</real> </map> <key>RenderDeferred</key> diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl index 53a2a13392..4d01eeb64e 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl @@ -128,7 +128,7 @@ void main() if (sa > 0.0) { - sa = texture2D(lightFunc,vec2(sa, spec.a)).r * min(dist_atten*4.0, 1.0); + sa = 6 * texture2D(lightFunc, vec2(sa, spec.a)).r * min(dist_atten*4.0, 1.0); sa *= noise; col += da*sa*light_col[i].rgb*spec.rgb; } diff --git a/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl index a5e04fba57..19800a8b8e 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl @@ -109,7 +109,7 @@ void main() float sa = dot(normalize(lv-normalize(pos)),norm); if (sa > 0.0) { - sa = texture2D(lightFunc, vec2(sa, spec.a)).r * min(dist_atten*4.0, 1.0); + sa = 6 * texture2D(lightFunc, vec2(sa, spec.a)).r * min(dist_atten*4.0, 1.0); sa *= noise; col += da*sa*color.rgb*spec.rgb; } diff --git a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl index b5501c2820..66e3cf6d13 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl @@ -301,11 +301,11 @@ void main() // vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz)); float sa = dot(refnormpersp, sun_dir.xyz); - vec3 dumbshiny = vary_SunlitColor*texture2D(lightFunc, vec2(sa, spec.a)).r; + vec3 dumbshiny = vary_SunlitColor*(6 * texture2D(lightFunc, vec2(sa, spec.a)).r); // add the two types of shiny together vec3 spec_contrib = dumbshiny * spec.rgb; - bloom = dot(spec_contrib, spec_contrib); + bloom = dot(spec_contrib, spec_contrib) / 4; col += spec_contrib; //add environmentmap diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl index 61a7f1e32f..a137bea30f 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl @@ -309,11 +309,11 @@ void main() // vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz)); float sa = dot(refnormpersp, sun_dir.xyz); - vec3 dumbshiny = vary_SunlitColor*scol_ambocc.r*texture2D(lightFunc, vec2(sa, spec.a)).r; + vec3 dumbshiny = vary_SunlitColor*scol_ambocc.r*(6 * texture2D(lightFunc, vec2(sa, spec.a)).r); // add the two types of shiny together vec3 spec_contrib = dumbshiny * spec.rgb; - bloom = dot(spec_contrib, spec_contrib); + bloom = dot(spec_contrib, spec_contrib) / 4; col += spec_contrib; //add environmentmap diff --git a/indra/newview/llassetuploadqueue.cpp b/indra/newview/llassetuploadqueue.cpp index 7e50098a17..f943759bb8 100644 --- a/indra/newview/llassetuploadqueue.cpp +++ b/indra/newview/llassetuploadqueue.cpp @@ -123,7 +123,9 @@ public: for(LLSD::array_const_iterator line = compile_errors.beginArray(); line < compile_errors.endArray(); line++) { - mSupplier->log(line->asString()); + std::string str = line->asString(); + str.erase(std::remove(str.begin(), str.end(), '\n'), str.end()); + mSupplier->log(str); llinfos << content["errors"] << llendl; } } diff --git a/indra/newview/llcompilequeue.cpp b/indra/newview/llcompilequeue.cpp index a42677845e..4f5f9e22b6 100644 --- a/indra/newview/llcompilequeue.cpp +++ b/indra/newview/llcompilequeue.cpp @@ -100,6 +100,7 @@ BOOL LLFloaterScriptQueue::postBuild() { childSetAction("close",onCloseBtn,this); getChildView("close")->setEnabled(FALSE); + setVisible(true); return TRUE; } @@ -158,7 +159,6 @@ void LLFloaterScriptQueue::addObject(const LLUUID& id) BOOL LLFloaterScriptQueue::start() { - //llinfos << "LLFloaterCompileQueue::start()" << llendl; std::string buffer; LLSelectMgr *mgr = LLSelectMgr::getInstance(); @@ -178,7 +178,7 @@ BOOL LLFloaterScriptQueue::start() args["[COUNT]"] = llformat ("%d", mObjectIDs.count()); buffer = getString ("Starting", args); - getChild<LLScrollListCtrl>("queue output")->setCommentText(buffer); + getChild<LLScrollListCtrl>("queue output")->addSimpleElement(buffer, ADD_BOTTOM); return nextObject(); } @@ -211,7 +211,7 @@ BOOL LLFloaterScriptQueue::nextObject() if(isDone() && !mDone) { mDone = true; - getChild<LLScrollListCtrl>("queue output")->setCommentText(getString("Done")); + getChild<LLScrollListCtrl>("queue output")->addSimpleElement(getString("Done"), ADD_BOTTOM); getChildView("close")->setEnabled(TRUE); } return successful_start; @@ -277,7 +277,7 @@ public: return; } - queue->getChild<LLScrollListCtrl>("queue output")->setCommentText(message); + queue->getChild<LLScrollListCtrl>("queue output")->addSimpleElement(message, ADD_BOTTOM); } private: @@ -464,7 +464,7 @@ void LLFloaterCompileQueue::scriptArrived(LLVFS *vfs, const LLUUID& asset_id, } if(queue && (buffer.size() > 0)) { - queue->getChild<LLScrollListCtrl>("queue output")->setCommentText(buffer); + queue->getChild<LLScrollListCtrl>("queue output")->addSimpleElement(buffer, ADD_BOTTOM); } delete data; } @@ -637,7 +637,7 @@ void LLFloaterResetQueue::handleInventory(LLViewerObject* viewer_obj, LLInventoryItem* item = (LLInventoryItem*)((LLInventoryObject*)(*it)); std::string buffer; buffer = getString("Resetting") + (": ") + item->getName(); - getChild<LLScrollListCtrl>("queue output")->setCommentText(buffer); + getChild<LLScrollListCtrl>("queue output")->addSimpleElement(buffer, ADD_BOTTOM); LLMessageSystem* msg = gMessageSystem; msg->newMessageFast(_PREHASH_ScriptReset); msg->nextBlockFast(_PREHASH_AgentData); @@ -690,7 +690,7 @@ void LLFloaterRunQueue::handleInventory(LLViewerObject* viewer_obj, LLScrollListCtrl* list = getChild<LLScrollListCtrl>("queue output"); std::string buffer; buffer = getString("Running") + (": ") + item->getName(); - list->setCommentText(buffer); + list->addSimpleElement(buffer, ADD_BOTTOM); LLMessageSystem* msg = gMessageSystem; msg->newMessageFast(_PREHASH_SetScriptRunning); @@ -745,7 +745,7 @@ void LLFloaterNotRunQueue::handleInventory(LLViewerObject* viewer_obj, LLScrollListCtrl* list = getChild<LLScrollListCtrl>("queue output"); std::string buffer; buffer = getString("NotRunning") + (": ") +item->getName(); - list->setCommentText(buffer); + list->addSimpleElement(buffer, ADD_BOTTOM); LLMessageSystem* msg = gMessageSystem; msg->newMessageFast(_PREHASH_SetScriptRunning); diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp index bad0d8cd8f..1fa194ab19 100644 --- a/indra/newview/llfolderview.cpp +++ b/indra/newview/llfolderview.cpp @@ -1059,19 +1059,7 @@ void LLFolderView::removeCutItems() iter != objects.end(); ++iter) { - const LLUUID& item_id = (*iter); - LLInventoryObject *obj = gInventory.getObject(item_id); - if (obj) - { - if (LLAssetType::AT_CATEGORY == obj->getType()) - { - remove_category(&gInventory, item_id); - } - else - { - remove_item(&gInventory, item_id); - } - } + gInventory.removeObject(*iter); } } diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index 1f948abfae..b86c453d61 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -984,7 +984,7 @@ void LLInvFVBridge::changeItemParent(LLInventoryModel* model, const LLUUID& new_parent_id, BOOL restamp) { - change_item_parent(model, item, new_parent_id, restamp); + model->changeItemParent(item, new_parent_id, restamp); } // static @@ -993,7 +993,7 @@ void LLInvFVBridge::changeCategoryParent(LLInventoryModel* model, const LLUUID& new_parent_id, BOOL restamp) { - change_category_parent(model, cat, new_parent_id, restamp); + model->changeCategoryParent(cat, new_parent_id, restamp); } LLInvFVBridge* LLInvFVBridge::createBridge(LLAssetType::EType asset_type, @@ -2948,7 +2948,7 @@ bool LLFolderBridge::removeItemResponse(const LLSD& notification, const LLSD& re { // move it to the trash LLPreview::hide(mUUID); - remove_category(getInventoryModel(), mUUID); + getInventoryModel()->removeCategory(mUUID); return TRUE; } return FALSE; diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp index f74a239fd3..ab5b082915 100644 --- a/indra/newview/llinventoryfunctions.cpp +++ b/indra/newview/llinventoryfunctions.cpp @@ -108,116 +108,6 @@ void append_path(const LLUUID& id, std::string& path) path.append(temp); } -void change_item_parent(LLInventoryModel* model, - LLViewerInventoryItem* item, - const LLUUID& new_parent_id, - BOOL restamp) -{ - if (item->getParentUUID() != new_parent_id) - { - LLInventoryModel::update_list_t update; - LLInventoryModel::LLCategoryUpdate old_folder(item->getParentUUID(),-1); - update.push_back(old_folder); - LLInventoryModel::LLCategoryUpdate new_folder(new_parent_id, 1); - update.push_back(new_folder); - gInventory.accountForUpdate(update); - - LLPointer<LLViewerInventoryItem> new_item = new LLViewerInventoryItem(item); - new_item->setParent(new_parent_id); - new_item->updateParentOnServer(restamp); - model->updateItem(new_item); - model->notifyObservers(); - } -} - -void change_category_parent(LLInventoryModel* model, - LLViewerInventoryCategory* cat, - const LLUUID& new_parent_id, - BOOL restamp) -{ - if (!model || !cat) - { - return; - } - - // Can't move a folder into a child of itself. - if (model->isObjectDescendentOf(new_parent_id, cat->getUUID())) - { - return; - } - - LLInventoryModel::update_list_t update; - LLInventoryModel::LLCategoryUpdate old_folder(cat->getParentUUID(), -1); - update.push_back(old_folder); - LLInventoryModel::LLCategoryUpdate new_folder(new_parent_id, 1); - update.push_back(new_folder); - model->accountForUpdate(update); - - LLPointer<LLViewerInventoryCategory> new_cat = new LLViewerInventoryCategory(cat); - new_cat->setParent(new_parent_id); - new_cat->updateParentOnServer(restamp); - model->updateCategory(new_cat); - model->notifyObservers(); -} - -// Move the item to the trash. Works for folders and objects. -// Caution: This method assumes that the item is removable! -void remove_item(LLInventoryModel* model, const LLUUID& id) -{ - LLViewerInventoryItem* item = model->getItem(id); - if (!item) - return; - - if (item->getType() == LLAssetType::AT_CATEGORY) - { - // Call the general helper function to delete a folder - remove_category(model, id); - } - else - { - // Get the trash UUID - LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH, false); - if (trash_id.notNull()) - { - // Finally, move the item to the trash - change_item_parent(model, item, trash_id, true); - } - } -} - -void remove_category(LLInventoryModel* model, const LLUUID& cat_id) -{ - if (!model || !get_is_category_removable(model, cat_id)) - { - return; - } - - // Look for any gestures and deactivate them - LLInventoryModel::cat_array_t descendent_categories; - LLInventoryModel::item_array_t descendent_items; - gInventory.collectDescendents(cat_id, descendent_categories, descendent_items, FALSE); - - for (LLInventoryModel::item_array_t::const_iterator iter = descendent_items.begin(); - iter != descendent_items.end(); - ++iter) - { - const LLViewerInventoryItem* item = (*iter); - const LLUUID& item_id = item->getUUID(); - if (item->getType() == LLAssetType::AT_GESTURE - && LLGestureMgr::instance().isGestureActive(item_id)) - { - LLGestureMgr::instance().deactivateGesture(item_id); - } - } - - LLViewerInventoryCategory* cat = gInventory.getCategory(cat_id); - if (cat) - { - const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH); - change_category_parent(model, cat, trash_id, TRUE); - } -} - void rename_category(LLInventoryModel* model, const LLUUID& cat_id, const std::string& new_name) { LLViewerInventoryCategory* cat; @@ -635,8 +525,7 @@ void move_to_outbox_cb_action(const LLSD& payload) LLUUID parent = viitem->getParentUUID(); - change_item_parent( - &gInventory, + gInventory.changeItemParent( viitem, dest_folder_id, false); @@ -663,7 +552,7 @@ void move_to_outbox_cb_action(const LLSD& payload) if (cat_array->empty() && item_array->empty()) { - remove_category(&gInventory, parent); + gInventory.removeCategory(parent); } if (parent == top_level_folder) @@ -737,7 +626,7 @@ void move_item_within_outbox(LLInventoryItem* inv_item, LLUUID dest_folder, S32 LLViewerInventoryItem * viewer_inv_item = (LLViewerInventoryItem *) inv_item; - change_item_parent(&gInventory, + gInventory.changeItemParent( viewer_inv_item, dest_folder, false); diff --git a/indra/newview/llinventoryfunctions.h b/indra/newview/llinventoryfunctions.h index b3d9f4b966..5cf9c528b0 100644 --- a/indra/newview/llinventoryfunctions.h +++ b/indra/newview/llinventoryfunctions.h @@ -57,20 +57,6 @@ void show_task_item_profile(const LLUUID& item_uuid, const LLUUID& object_id); void show_item_original(const LLUUID& item_uuid); -void change_item_parent(LLInventoryModel* model, - LLViewerInventoryItem* item, - const LLUUID& new_parent_id, - BOOL restamp); - -void remove_item(LLInventoryModel* model, const LLUUID& id); - -void change_category_parent(LLInventoryModel* model, - LLViewerInventoryCategory* cat, - const LLUUID& new_parent_id, - BOOL restamp); - -void remove_category(LLInventoryModel* model, const LLUUID& cat_id); - void rename_category(LLInventoryModel* model, const LLUUID& cat_id, const std::string& new_name); void copy_inventory_category(LLInventoryModel* model, LLViewerInventoryCategory* cat, const LLUUID& parent_id, const LLUUID& root_copy_id = LLUUID::null); diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp index 0eba8bd0f1..85ecb133d0 100644 --- a/indra/newview/llinventorymodel.cpp +++ b/indra/newview/llinventorymodel.cpp @@ -47,6 +47,8 @@ #include "llviewerregion.h" #include "llcallbacklist.h" #include "llvoavatarself.h" +#include "llgesturemgr.h" +#include <typeinfo> //#define DIFF_INVENTORY_FILES #ifdef DIFF_INVENTORY_FILES @@ -1018,6 +1020,66 @@ void LLInventoryModel::moveObject(const LLUUID& object_id, const LLUUID& cat_id) } } +// Migrated from llinventoryfunctions +void LLInventoryModel::changeItemParent(LLViewerInventoryItem* item, + const LLUUID& new_parent_id, + BOOL restamp) +{ + if (item->getParentUUID() == new_parent_id) + { + LL_DEBUGS("Inventory") << "'" << item->getName() << "' (" << item->getUUID() + << ") is already in folder " << new_parent_id << LL_ENDL; + } + else + { + LL_INFOS("Inventory") << "Moving '" << item->getName() << "' (" << item->getUUID() + << ") from " << item->getParentUUID() << " to folder " + << new_parent_id << LL_ENDL; + LLInventoryModel::update_list_t update; + LLInventoryModel::LLCategoryUpdate old_folder(item->getParentUUID(),-1); + update.push_back(old_folder); + LLInventoryModel::LLCategoryUpdate new_folder(new_parent_id, 1); + update.push_back(new_folder); + accountForUpdate(update); + + LLPointer<LLViewerInventoryItem> new_item = new LLViewerInventoryItem(item); + new_item->setParent(new_parent_id); + new_item->updateParentOnServer(restamp); + updateItem(new_item); + notifyObservers(); + } +} + +// Migrated from llinventoryfunctions +void LLInventoryModel::changeCategoryParent(LLViewerInventoryCategory* cat, + const LLUUID& new_parent_id, + BOOL restamp) +{ + if (!cat) + { + return; + } + + // Can't move a folder into a child of itself. + if (isObjectDescendentOf(new_parent_id, cat->getUUID())) + { + return; + } + + LLInventoryModel::update_list_t update; + LLInventoryModel::LLCategoryUpdate old_folder(cat->getParentUUID(), -1); + update.push_back(old_folder); + LLInventoryModel::LLCategoryUpdate new_folder(new_parent_id, 1); + update.push_back(new_folder); + accountForUpdate(update); + + LLPointer<LLViewerInventoryCategory> new_cat = new LLViewerInventoryCategory(cat); + new_cat->setParent(new_parent_id); + new_cat->updateParentOnServer(restamp); + updateCategory(new_cat); + notifyObservers(); +} + // Delete a particular inventory object by ID. void LLInventoryModel::deleteObject(const LLUUID& id) { @@ -2964,21 +3026,77 @@ void LLInventoryModel::emptyFolderType(const std::string notification, LLFolderT void LLInventoryModel::removeItem(const LLUUID& item_id) { LLViewerInventoryItem* item = getItem(item_id); - const LLUUID new_parent = findCategoryUUIDForType(LLFolderType::FT_TRASH); - if (item && item->getParentUUID() != new_parent) + if (! item) { - LLInventoryModel::update_list_t update; - LLInventoryModel::LLCategoryUpdate old_folder(item->getParentUUID(),-1); - update.push_back(old_folder); - LLInventoryModel::LLCategoryUpdate new_folder(new_parent, 1); - update.push_back(new_folder); - accountForUpdate(update); + LL_WARNS("Inventory") << "couldn't find inventory item " << item_id << LL_ENDL; + } + else + { + const LLUUID new_parent = findCategoryUUIDForType(LLFolderType::FT_TRASH); + if (new_parent.notNull()) + { + LL_INFOS("Inventory") << "Moving to Trash (" << new_parent << "):" << LL_ENDL; + changeItemParent(item, new_parent, TRUE); + } + } +} - LLPointer<LLViewerInventoryItem> new_item = new LLViewerInventoryItem(item); - new_item->setParent(new_parent); - new_item->updateParentOnServer(TRUE); - updateItem(new_item); - notifyObservers(); +void LLInventoryModel::removeCategory(const LLUUID& category_id) +{ + if (! get_is_category_removable(this, category_id)) + { + return; + } + + // Look for any gestures and deactivate them + LLInventoryModel::cat_array_t descendent_categories; + LLInventoryModel::item_array_t descendent_items; + collectDescendents(category_id, descendent_categories, descendent_items, FALSE); + + for (LLInventoryModel::item_array_t::const_iterator iter = descendent_items.begin(); + iter != descendent_items.end(); + ++iter) + { + const LLViewerInventoryItem* item = (*iter); + const LLUUID& item_id = item->getUUID(); + if (item->getType() == LLAssetType::AT_GESTURE + && LLGestureMgr::instance().isGestureActive(item_id)) + { + LLGestureMgr::instance().deactivateGesture(item_id); + } + } + + LLViewerInventoryCategory* cat = getCategory(category_id); + if (cat) + { + const LLUUID trash_id = findCategoryUUIDForType(LLFolderType::FT_TRASH); + if (trash_id.notNull()) + { + changeCategoryParent(cat, trash_id, TRUE); + } + } +} + +void LLInventoryModel::removeObject(const LLUUID& object_id) +{ + LLInventoryObject* obj = getObject(object_id); + if (dynamic_cast<LLViewerInventoryItem*>(obj)) + { + removeItem(object_id); + } + else if (dynamic_cast<LLViewerInventoryCategory*>(obj)) + { + removeCategory(object_id); + } + else if (obj) + { + LL_WARNS("Inventory") << "object ID " << object_id + << " is an object of unrecognized class " + << typeid(*obj).name() << LL_ENDL; + } + else + { + LL_WARNS("Inventory") << "object ID " << object_id << " not found" << LL_ENDL; } } diff --git a/indra/newview/llinventorymodel.h b/indra/newview/llinventorymodel.h index 7cd85c4ab7..8382e875b4 100644 --- a/indra/newview/llinventorymodel.h +++ b/indra/newview/llinventorymodel.h @@ -306,6 +306,16 @@ public: // observer notification, or server update is performed. void moveObject(const LLUUID& object_id, const LLUUID& cat_id); + // Migrated from llinventoryfunctions + void changeItemParent(LLViewerInventoryItem* item, + const LLUUID& new_parent_id, + BOOL restamp); + + // Migrated from llinventoryfunctions + void changeCategoryParent(LLViewerInventoryCategory* cat, + const LLUUID& new_parent_id, + BOOL restamp); + //-------------------------------------------------------------------- // Delete //-------------------------------------------------------------------- @@ -315,8 +325,13 @@ public: // consistent internal state. No cache accounting, observer // notification, or server update is performed. void deleteObject(const LLUUID& id); + /// move Item item_id to Trash void removeItem(const LLUUID& item_id); - + /// move Category category_id to Trash + void removeCategory(const LLUUID& category_id); + /// removeItem() or removeCategory(), whichever is appropriate + void removeObject(const LLUUID& object_id); + // Delete a particular inventory object by ID, and delete it from // the server. Also updates linked items. void purgeObject(const LLUUID& id); diff --git a/indra/newview/lllocalbitmaps.cpp b/indra/newview/lllocalbitmaps.cpp new file mode 100644 index 0000000000..459e52c4f4 --- /dev/null +++ b/indra/newview/lllocalbitmaps.cpp @@ -0,0 +1,942 @@ +/** + * @file lllocalbitmaps.cpp + * @author Vaalith Jinn + * @brief Local Bitmaps source + * + * $LicenseInfo:firstyear=2011&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2011, Linden Research, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA + * $/LicenseInfo$ + */ + +/* precompiled headers */ +#include "llviewerprecompiledheaders.h" + +/* own header */ +#include "lllocalbitmaps.h" + +/* boost: will not compile unless equivalent is undef'd, beware. */ +#ifdef equivalent +#undef equivalent +#endif +#include <boost/filesystem.hpp> + +/* image compression headers. */ +#include "llimagebmp.h" +#include "llimagetga.h" +#include "llimagejpeg.h" +#include "llimagepng.h" + +/* time headers */ +#include <time.h> +#include <ctime> + +/* misc headers */ +#include "llscrolllistctrl.h" +#include "llfilepicker.h" +#include "llviewertexturelist.h" +#include "llviewerobjectlist.h" +#include "llviewerobject.h" +#include "llface.h" +#include "llvoavatarself.h" +#include "llwearable.h" +#include "llagentwearables.h" +#include "lltexlayerparams.h" +#include "llvovolume.h" +#include "llnotificationsutil.h" + +/*=======================================*/ +/* Formal declarations, constants, etc. */ +/*=======================================*/ +std::list<LLLocalBitmap*> LLLocalBitmapMgr::sBitmapList; +LLLocalBitmapTimer LLLocalBitmapMgr::sTimer; +bool LLLocalBitmapMgr::sNeedsRebake; + +static const F32 LL_LOCAL_TIMER_HEARTBEAT = 3.0; +static const BOOL LL_LOCAL_USE_MIPMAPS = true; +static const S32 LL_LOCAL_DISCARD_LEVEL = 0; +static const U32 LL_LOCAL_TEXLAYER_FOR_IDX = 0; +static const bool LL_LOCAL_SLAM_FOR_DEBUG = true; +static const bool LL_LOCAL_REPLACE_ON_DEL = true; +static const S32 LL_LOCAL_UPDATE_RETRIES = 5; + +/*=======================================*/ +/* LLLocalBitmap: unit class */ +/*=======================================*/ +LLLocalBitmap::LLLocalBitmap(std::string filename) + : mFilename(filename) + , mShortName(gDirUtilp->getBaseFileName(filename, true)) + , mValid(false) + , mLastModified() + , mLinkStatus(LS_ON) + , mUpdateRetries(LL_LOCAL_UPDATE_RETRIES) +{ + mTrackingID.generate(); + + /* extension */ + std::string temp_exten = gDirUtilp->getExtension(mFilename); + + if (temp_exten == "bmp") + { + mExtension = ET_IMG_BMP; + } + else if (temp_exten == "tga") + { + mExtension = ET_IMG_TGA; + } + else if (temp_exten == "jpg" || temp_exten == "jpeg") + { + mExtension = ET_IMG_JPG; + } + else if (temp_exten == "png") + { + mExtension = ET_IMG_PNG; + } + else + { + llwarns << "File of no valid extension given, local bitmap creation aborted." << "\n" + << "Filename: " << mFilename << llendl; + return; // no valid extension. + } + + /* next phase of unit creation is nearly the same as an update cycle. + we're running updateSelf as a special case with the optional UT_FIRSTUSE + which omits the parts associated with removing the outdated texture */ + mValid = updateSelf(UT_FIRSTUSE); +} + +LLLocalBitmap::~LLLocalBitmap() +{ + // replace IDs with defaults, if set to do so. + if(LL_LOCAL_REPLACE_ON_DEL && mValid) // fix for STORM-1837 + { + replaceIDs(mWorldID, IMG_DEFAULT); + LLLocalBitmapMgr::doRebake(); + } + + // delete self from gimagelist + LLViewerFetchedTexture* image = gTextureList.findImage(mWorldID); + gTextureList.deleteImage(image); + + if (image) + { + image->unref(); + } +} + +/* accessors */ +std::string LLLocalBitmap::getFilename() +{ + return mFilename; +} + +std::string LLLocalBitmap::getShortName() +{ + return mShortName; +} + +LLUUID LLLocalBitmap::getTrackingID() +{ + return mTrackingID; +} + +LLUUID LLLocalBitmap::getWorldID() +{ + return mWorldID; +} + +bool LLLocalBitmap::getValid() +{ + return mValid; +} + +/* update functions */ +bool LLLocalBitmap::updateSelf(EUpdateType optional_firstupdate) +{ + bool updated = false; + + if (mLinkStatus == LS_ON) + { + // verifying that the file exists + if (gDirUtilp->fileExists(mFilename)) + { + // verifying that the file has indeed been modified + const std::time_t temp_time = boost::filesystem::last_write_time(boost::filesystem::path(mFilename)); + LLSD new_last_modified = asctime(localtime(&temp_time)); + + if (mLastModified.asString() != new_last_modified.asString()) + { + /* loading the image file and decoding it, here is a critical point which, + if fails, invalidates the whole update (or unit creation) process. */ + LLPointer<LLImageRaw> raw_image = new LLImageRaw(); + if (decodeBitmap(raw_image)) + { + // decode is successful, we can safely proceed. + LLUUID old_id = LLUUID::null; + if (!(optional_firstupdate == UT_FIRSTUSE) && !mWorldID.isNull()) + { + old_id = mWorldID; + } + mWorldID.generate(); + mLastModified = new_last_modified; + + LLPointer<LLViewerFetchedTexture> texture = new LLViewerFetchedTexture + ("file://"+mFilename, mWorldID, LL_LOCAL_USE_MIPMAPS); + + texture->createGLTexture(LL_LOCAL_DISCARD_LEVEL, raw_image); + texture->setCachedRawImage(LL_LOCAL_DISCARD_LEVEL, raw_image); + texture->ref(); + + gTextureList.addImage(texture); + + if (!optional_firstupdate == UT_FIRSTUSE) + { + // seek out everything old_id uses and replace it with mWorldID + replaceIDs(old_id, mWorldID); + + // remove old_id from gimagelist + LLViewerFetchedTexture* image = gTextureList.findImage(old_id); + gTextureList.deleteImage(image); + image->unref(); + } + + mUpdateRetries = LL_LOCAL_UPDATE_RETRIES; + updated = true; + } + + // if decoding failed, we get here and it will attempt to decode it in the next cycles + // until mUpdateRetries runs out. this is done because some software lock the bitmap while writing to it + else + { + if (mUpdateRetries) + { + mUpdateRetries--; + } + else + { + llwarns << "During the update process the following file was found" << "\n" + << "but could not be opened or decoded for " << LL_LOCAL_UPDATE_RETRIES << " attempts." << "\n" + << "Filename: " << mFilename << "\n" + << "Disabling further update attempts for this file." << llendl; + + LLSD notif_args; + notif_args["FNAME"] = mFilename; + notif_args["NRETRIES"] = LL_LOCAL_UPDATE_RETRIES; + LLNotificationsUtil::add("LocalBitmapsUpdateFailedFinal", notif_args); + + mLinkStatus = LS_BROKEN; + } + } + } + + } // end if file exists + + else + { + llwarns << "During the update process, the following file was not found." << "\n" + << "Filename: " << mFilename << "\n" + << "Disabling further update attempts for this file." << llendl; + + LLSD notif_args; + notif_args["FNAME"] = mFilename; + LLNotificationsUtil::add("LocalBitmapsUpdateFileNotFound", notif_args); + + mLinkStatus = LS_BROKEN; + } + } + + return updated; +} + +bool LLLocalBitmap::decodeBitmap(LLPointer<LLImageRaw> rawimg) +{ + bool decode_successful = false; + + switch (mExtension) + { + case ET_IMG_BMP: + { + LLPointer<LLImageBMP> bmp_image = new LLImageBMP; + if (bmp_image->load(mFilename) && bmp_image->decode(rawimg, 0.0f)) + { + rawimg->biasedScaleToPowerOfTwo(LLViewerFetchedTexture::MAX_IMAGE_SIZE_DEFAULT); + decode_successful = true; + } + break; + } + + case ET_IMG_TGA: + { + LLPointer<LLImageTGA> tga_image = new LLImageTGA; + if ((tga_image->load(mFilename) && tga_image->decode(rawimg)) + && ((tga_image->getComponents() == 3) || (tga_image->getComponents() == 4))) + { + rawimg->biasedScaleToPowerOfTwo(LLViewerFetchedTexture::MAX_IMAGE_SIZE_DEFAULT); + decode_successful = true; + } + break; + } + + case ET_IMG_JPG: + { + LLPointer<LLImageJPEG> jpeg_image = new LLImageJPEG; + if (jpeg_image->load(mFilename) && jpeg_image->decode(rawimg, 0.0f)) + { + rawimg->biasedScaleToPowerOfTwo(LLViewerFetchedTexture::MAX_IMAGE_SIZE_DEFAULT); + decode_successful = true; + } + break; + } + + case ET_IMG_PNG: + { + LLPointer<LLImagePNG> png_image = new LLImagePNG; + if (png_image->load(mFilename) && png_image->decode(rawimg, 0.0f)) + { + rawimg->biasedScaleToPowerOfTwo(LLViewerFetchedTexture::MAX_IMAGE_SIZE_DEFAULT); + decode_successful = true; + } + break; + } + + default: + { + // separating this into -several- llwarns calls because in the extremely unlikely case that this happens + // accessing mFilename and any other object properties might very well crash the viewer. + // getting here should be impossible, or there's been a pretty serious bug. + + llwarns << "During a decode attempt, the following local bitmap had no properly assigned extension." << llendl; + llwarns << "Filename: " << mFilename << llendl; + llwarns << "Disabling further update attempts for this file." << llendl; + mLinkStatus = LS_BROKEN; + } + } + + return decode_successful; +} + +void LLLocalBitmap::replaceIDs(LLUUID old_id, LLUUID new_id) +{ + // checking for misuse. + if (old_id == new_id) + { + llinfos << "An attempt was made to replace a texture with itself. (matching UUIDs)" << "\n" + << "Texture UUID: " << old_id.asString() << llendl; + return; + } + + updateUserPrims(old_id, new_id); + updateUserSculpts(old_id, new_id); // isn't there supposed to be an IMG_DEFAULT_SCULPT or something? + + // default safeguard image for layers + if( new_id == IMG_DEFAULT ) + { + new_id = IMG_DEFAULT_AVATAR; + } + + /* It doesn't actually update all of those, it merely checks if any of them + contain the referenced ID and if so, updates. */ + updateUserLayers(old_id, new_id, LLWearableType::WT_ALPHA); + updateUserLayers(old_id, new_id, LLWearableType::WT_EYES); + updateUserLayers(old_id, new_id, LLWearableType::WT_GLOVES); + updateUserLayers(old_id, new_id, LLWearableType::WT_JACKET); + updateUserLayers(old_id, new_id, LLWearableType::WT_PANTS); + updateUserLayers(old_id, new_id, LLWearableType::WT_SHIRT); + updateUserLayers(old_id, new_id, LLWearableType::WT_SHOES); + updateUserLayers(old_id, new_id, LLWearableType::WT_SKIN); + updateUserLayers(old_id, new_id, LLWearableType::WT_SKIRT); + updateUserLayers(old_id, new_id, LLWearableType::WT_SOCKS); + updateUserLayers(old_id, new_id, LLWearableType::WT_TATTOO); + updateUserLayers(old_id, new_id, LLWearableType::WT_UNDERPANTS); + updateUserLayers(old_id, new_id, LLWearableType::WT_UNDERSHIRT); +} + +// this function sorts the faces from a getFaceList[getNumFaces] into a list of objects +// in order to prevent multiple sendTEUpdate calls per object during updateUserPrims +std::vector<LLViewerObject*> LLLocalBitmap::prepUpdateObjects(LLUUID old_id) +{ + std::vector<LLViewerObject*> obj_list; + LLViewerFetchedTexture* old_texture = gTextureList.findImage(old_id); + + for(U32 face_iterator = 0; face_iterator < old_texture->getNumFaces(); face_iterator++) + { + // getting an object from a face + LLFace* face_to_object = (*old_texture->getFaceList())[face_iterator]; + + if(face_to_object) + { + LLViewerObject* affected_object = face_to_object->getViewerObject(); + + if(affected_object) + { + + // we have an object, we'll take it's UUID and compare it to + // whatever we already have in the returnable object list. + // if there is a match - we do not add (to prevent duplicates) + LLUUID mainlist_obj_id = affected_object->getID(); + bool add_object = true; + + // begin looking for duplicates + std::vector<LLViewerObject*>::iterator objlist_iter = obj_list.begin(); + for(; (objlist_iter != obj_list.end()) && add_object; objlist_iter++) + { + LLViewerObject* obj = *objlist_iter; + if (obj->getID() == mainlist_obj_id) + { + add_object = false; // duplicate found. + } + } + // end looking for duplicates + + if(add_object) + { + obj_list.push_back(affected_object); + } + + } + + } + + } // end of face-iterating for() + + return obj_list; +} + +void LLLocalBitmap::updateUserPrims(LLUUID old_id, LLUUID new_id) +{ + std::vector<LLViewerObject*> objectlist = prepUpdateObjects(old_id); + + for(std::vector<LLViewerObject*>::iterator object_iterator = objectlist.begin(); + object_iterator != objectlist.end(); object_iterator++) + { + LLViewerObject* object = *object_iterator; + + if(object) + { + bool update_obj = false; + S32 num_faces = object->getNumFaces(); + + for (U8 face_iter = 0; face_iter < num_faces; face_iter++) + { + if (object->mDrawable) + { + LLFace* face = object->mDrawable->getFace(face_iter); + if (face && face->getTexture() && face->getTexture()->getID() == old_id) + { + object->setTEImage(face_iter, LLViewerTextureManager::getFetchedTexture + (new_id, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE)); + + update_obj = true; + } + } + } + + if (update_obj) + { + object->sendTEUpdate(); + } + } + } + +} + +void LLLocalBitmap::updateUserSculpts(LLUUID old_id, LLUUID new_id) +{ + LLViewerFetchedTexture* old_texture = gTextureList.findImage(old_id); + for(U32 volume_iter = 0; volume_iter < old_texture->getNumVolumes(); volume_iter++) + { + LLVOVolume* volume_to_object = (*old_texture->getVolumeList())[volume_iter]; + LLViewerObject* object = (LLViewerObject*)volume_to_object; + + if(object) + { + if (object->isSculpted() && object->getVolume() && + object->getVolume()->getParams().getSculptID() == old_id) + { + LLSculptParams* old_params = (LLSculptParams*)object->getParameterEntry(LLNetworkData::PARAMS_SCULPT); + LLSculptParams new_params(*old_params); + new_params.setSculptTexture(new_id); + object->setParameterEntry(LLNetworkData::PARAMS_SCULPT, new_params, TRUE); + } + } + } +} + +void LLLocalBitmap::updateUserLayers(LLUUID old_id, LLUUID new_id, LLWearableType::EType type) +{ + U32 count = gAgentWearables.getWearableCount(type); + for(U32 wearable_iter = 0; wearable_iter < count; wearable_iter++) + { + LLWearable* wearable = gAgentWearables.getWearable(type, wearable_iter); + if (wearable) + { + std::vector<LLLocalTextureObject*> texture_list = wearable->getLocalTextureListSeq(); + for(std::vector<LLLocalTextureObject*>::iterator texture_iter = texture_list.begin(); + texture_iter != texture_list.end(); texture_iter++) + { + LLLocalTextureObject* lto = *texture_iter; + + if (lto && lto->getID() == old_id) + { + U32 local_texlayer_index = 0; /* can't keep that as static const, gives errors, so i'm leaving this var here */ + LLVOAvatarDefines::EBakedTextureIndex baked_texind = + lto->getTexLayer(local_texlayer_index)->getTexLayerSet()->getBakedTexIndex(); + + LLVOAvatarDefines::ETextureIndex reg_texind = getTexIndex(type, baked_texind); + if (reg_texind != LLVOAvatarDefines::TEX_NUM_INDICES) + { + U32 index = gAgentWearables.getWearableIndex(wearable); + gAgentAvatarp->setLocalTexture(reg_texind, gTextureList.getImage(new_id), FALSE, index); + gAgentAvatarp->wearableUpdated(type, FALSE); + + /* telling the manager to rebake once update cycle is fully done */ + LLLocalBitmapMgr::setNeedsRebake(); + } + + } + } + } + } +} + +LLVOAvatarDefines::ETextureIndex LLLocalBitmap::getTexIndex( + LLWearableType::EType type, LLVOAvatarDefines::EBakedTextureIndex baked_texind) +{ + LLVOAvatarDefines::ETextureIndex result = LLVOAvatarDefines::TEX_NUM_INDICES; // using as a default/fail return. + + switch(type) + { + case LLWearableType::WT_ALPHA: + { + switch(baked_texind) + { + case LLVOAvatarDefines::BAKED_EYES: + { + result = LLVOAvatarDefines::TEX_EYES_ALPHA; + break; + } + + case LLVOAvatarDefines::BAKED_HAIR: + { + result = LLVOAvatarDefines::TEX_HAIR_ALPHA; + break; + } + + case LLVOAvatarDefines::BAKED_HEAD: + { + result = LLVOAvatarDefines::TEX_HEAD_ALPHA; + break; + } + + case LLVOAvatarDefines::BAKED_LOWER: + { + result = LLVOAvatarDefines::TEX_LOWER_ALPHA; + break; + } + case LLVOAvatarDefines::BAKED_UPPER: + { + result = LLVOAvatarDefines::TEX_UPPER_ALPHA; + break; + } + + default: + { + break; + } + + } + break; + + } + + case LLWearableType::WT_EYES: + { + if (baked_texind == LLVOAvatarDefines::BAKED_EYES) + { + result = LLVOAvatarDefines::TEX_EYES_IRIS; + } + + break; + } + + case LLWearableType::WT_GLOVES: + { + if (baked_texind == LLVOAvatarDefines::BAKED_UPPER) + { + result = LLVOAvatarDefines::TEX_UPPER_GLOVES; + } + + break; + } + + case LLWearableType::WT_JACKET: + { + if (baked_texind == LLVOAvatarDefines::BAKED_LOWER) + { + result = LLVOAvatarDefines::TEX_LOWER_JACKET; + } + else if (baked_texind == LLVOAvatarDefines::BAKED_UPPER) + { + result = LLVOAvatarDefines::TEX_UPPER_JACKET; + } + + break; + } + + case LLWearableType::WT_PANTS: + { + if (baked_texind == LLVOAvatarDefines::BAKED_LOWER) + { + result = LLVOAvatarDefines::TEX_LOWER_PANTS; + } + + break; + } + + case LLWearableType::WT_SHIRT: + { + if (baked_texind == LLVOAvatarDefines::BAKED_UPPER) + { + result = LLVOAvatarDefines::TEX_UPPER_SHIRT; + } + + break; + } + + case LLWearableType::WT_SHOES: + { + if (baked_texind == LLVOAvatarDefines::BAKED_LOWER) + { + result = LLVOAvatarDefines::TEX_LOWER_SHOES; + } + + break; + } + + case LLWearableType::WT_SKIN: + { + switch(baked_texind) + { + case LLVOAvatarDefines::BAKED_HEAD: + { + result = LLVOAvatarDefines::TEX_HEAD_BODYPAINT; + break; + } + + case LLVOAvatarDefines::BAKED_LOWER: + { + result = LLVOAvatarDefines::TEX_LOWER_BODYPAINT; + break; + } + case LLVOAvatarDefines::BAKED_UPPER: + { + result = LLVOAvatarDefines::TEX_UPPER_BODYPAINT; + break; + } + + default: + { + break; + } + + } + break; + } + + case LLWearableType::WT_SKIRT: + { + if (baked_texind == LLVOAvatarDefines::BAKED_SKIRT) + { + result = LLVOAvatarDefines::TEX_SKIRT; + } + + break; + } + + case LLWearableType::WT_SOCKS: + { + if (baked_texind == LLVOAvatarDefines::BAKED_LOWER) + { + result = LLVOAvatarDefines::TEX_LOWER_SOCKS; + } + + break; + } + + case LLWearableType::WT_TATTOO: + { + switch(baked_texind) + { + case LLVOAvatarDefines::BAKED_HEAD: + { + result = LLVOAvatarDefines::TEX_HEAD_TATTOO; + break; + } + + case LLVOAvatarDefines::BAKED_LOWER: + { + result = LLVOAvatarDefines::TEX_LOWER_TATTOO; + break; + } + case LLVOAvatarDefines::BAKED_UPPER: + { + result = LLVOAvatarDefines::TEX_UPPER_TATTOO; + break; + } + + default: + { + break; + } + + } + break; + } + + case LLWearableType::WT_UNDERPANTS: + { + if (baked_texind == LLVOAvatarDefines::BAKED_LOWER) + { + result = LLVOAvatarDefines::TEX_LOWER_UNDERPANTS; + } + + break; + } + + case LLWearableType::WT_UNDERSHIRT: + { + if (baked_texind == LLVOAvatarDefines::BAKED_UPPER) + { + result = LLVOAvatarDefines::TEX_UPPER_UNDERSHIRT; + } + + break; + } + + default: + { + llwarns << "Unknown wearable type: " << (int)type << "\n" + << "Baked Texture Index: " << (int)baked_texind << "\n" + << "Filename: " << mFilename << "\n" + << "TrackingID: " << mTrackingID << "\n" + << "InworldID: " << mWorldID << llendl; + } + + } + return result; +} + +/*=======================================*/ +/* LLLocalBitmapTimer: timer class */ +/*=======================================*/ +LLLocalBitmapTimer::LLLocalBitmapTimer() : LLEventTimer(LL_LOCAL_TIMER_HEARTBEAT) +{ +} + +LLLocalBitmapTimer::~LLLocalBitmapTimer() +{ +} + +void LLLocalBitmapTimer::startTimer() +{ + mEventTimer.start(); +} + +void LLLocalBitmapTimer::stopTimer() +{ + mEventTimer.stop(); +} + +bool LLLocalBitmapTimer::isRunning() +{ + return mEventTimer.getStarted(); +} + +BOOL LLLocalBitmapTimer::tick() +{ + LLLocalBitmapMgr::doUpdates(); + return FALSE; +} + +/*=======================================*/ +/* LLLocalBitmapMgr: manager class */ +/*=======================================*/ +LLLocalBitmapMgr::LLLocalBitmapMgr() +{ + // The class is all made of static members, should i even bother instantiating? +} + +LLLocalBitmapMgr::~LLLocalBitmapMgr() +{ +} + +bool LLLocalBitmapMgr::addUnit() +{ + bool add_successful = false; + + LLFilePicker& picker = LLFilePicker::instance(); + if (picker.getMultipleOpenFiles(LLFilePicker::FFLOAD_IMAGE)) + { + sTimer.stopTimer(); + + std::string filename = picker.getFirstFile(); + while(!filename.empty()) + { + LLLocalBitmap* unit = new LLLocalBitmap(filename); + + if (unit->getValid()) + { + sBitmapList.push_back(unit); + add_successful = true; + } + else + { + llwarns << "Attempted to add invalid or unreadable image file, attempt cancelled.\n" + << "Filename: " << filename << llendl; + + LLSD notif_args; + notif_args["FNAME"] = filename; + LLNotificationsUtil::add("LocalBitmapsVerifyFail", notif_args); + + delete unit; + unit = NULL; + } + + filename = picker.getNextFile(); + } + + sTimer.startTimer(); + } + + return add_successful; +} + +void LLLocalBitmapMgr::delUnit(LLUUID tracking_id) +{ + if (!sBitmapList.empty()) + { + std::vector<LLLocalBitmap*> to_delete; + for (local_list_iter iter = sBitmapList.begin(); iter != sBitmapList.end(); iter++) + { /* finding which ones we want deleted and making a separate list */ + LLLocalBitmap* unit = *iter; + if (unit->getTrackingID() == tracking_id) + { + to_delete.push_back(unit); + } + } + + for(std::vector<LLLocalBitmap*>::iterator del_iter = to_delete.begin(); + del_iter != to_delete.end(); del_iter++) + { /* iterating over a temporary list, hence preserving the iterator validity while deleting. */ + LLLocalBitmap* unit = *del_iter; + sBitmapList.remove(unit); + delete unit; + unit = NULL; + } + } +} + +LLUUID LLLocalBitmapMgr::getWorldID(LLUUID tracking_id) +{ + LLUUID world_id = LLUUID::null; + + for (local_list_iter iter = sBitmapList.begin(); iter != sBitmapList.end(); iter++) + { + LLLocalBitmap* unit = *iter; + if (unit->getTrackingID() == tracking_id) + { + world_id = unit->getWorldID(); + } + } + + return world_id; +} + +std::string LLLocalBitmapMgr::getFilename(LLUUID tracking_id) +{ + std::string filename = ""; + + for (local_list_iter iter = sBitmapList.begin(); iter != sBitmapList.end(); iter++) + { + LLLocalBitmap* unit = *iter; + if (unit->getTrackingID() == tracking_id) + { + filename = unit->getFilename(); + } + } + + return filename; +} + +void LLLocalBitmapMgr::feedScrollList(LLScrollListCtrl* ctrl) +{ + if (ctrl) + { + ctrl->clearRows(); + + if (!sBitmapList.empty()) + { + for (local_list_iter iter = sBitmapList.begin(); + iter != sBitmapList.end(); iter++) + { + LLSD element; + element["columns"][0]["column"] = "unit_name"; + element["columns"][0]["type"] = "text"; + element["columns"][0]["value"] = (*iter)->getShortName(); + + element["columns"][1]["column"] = "unit_id_HIDDEN"; + element["columns"][1]["type"] = "text"; + element["columns"][1]["value"] = (*iter)->getTrackingID(); + + ctrl->addElement(element); + } + } + } + +} + +void LLLocalBitmapMgr::doUpdates() +{ + // preventing theoretical overlap in cases with huge number of loaded images. + sTimer.stopTimer(); + sNeedsRebake = false; + + for (local_list_iter iter = sBitmapList.begin(); iter != sBitmapList.end(); iter++) + { + (*iter)->updateSelf(); + } + + doRebake(); + sTimer.startTimer(); +} + +void LLLocalBitmapMgr::setNeedsRebake() +{ + sNeedsRebake = true; +} + +void LLLocalBitmapMgr::doRebake() +{ /* separated that from doUpdates to insure a rebake can be called separately during deletion */ + if (sNeedsRebake) + { + gAgentAvatarp->forceBakeAllTextures(LL_LOCAL_SLAM_FOR_DEBUG); + sNeedsRebake = false; + } +} + diff --git a/indra/newview/lllocalbitmaps.h b/indra/newview/lllocalbitmaps.h new file mode 100644 index 0000000000..7a23c7ef6e --- /dev/null +++ b/indra/newview/lllocalbitmaps.h @@ -0,0 +1,136 @@ +/** + * @file lllocalbitmaps.h + * @author Vaalith Jinn + * @brief Local Bitmaps header + * + * $LicenseInfo:firstyear=2011&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2011, Linden Research, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA + * $/LicenseInfo$ + */ + +#ifndef LL_LOCALBITMAPS_H +#define LL_LOCALBITMAPS_H + +#include "lleventtimer.h" +#include "llwearabletype.h" +#include "llvoavatardefines.h" + +class LLScrollListCtrl; + +class LLLocalBitmap +{ + public: /* main */ + LLLocalBitmap(std::string filename); + ~LLLocalBitmap(); + + public: /* accessors */ + std::string getFilename(); + std::string getShortName(); + LLUUID getTrackingID(); + LLUUID getWorldID(); + bool getValid(); + + public: /* self update public section */ + enum EUpdateType + { + UT_FIRSTUSE, + UT_REGUPDATE + }; + + bool updateSelf(EUpdateType = UT_REGUPDATE); + + private: /* self update private section */ + bool decodeBitmap(LLPointer<LLImageRaw> raw); + void replaceIDs(LLUUID old_id, LLUUID new_id); + std::vector<LLViewerObject*> prepUpdateObjects(LLUUID old_id); + void updateUserPrims(LLUUID old_id, LLUUID new_id); + void updateUserSculpts(LLUUID old_id, LLUUID new_id); + void updateUserLayers(LLUUID old_id, LLUUID new_id, LLWearableType::EType type); + LLVOAvatarDefines::ETextureIndex getTexIndex(LLWearableType::EType type, LLVOAvatarDefines::EBakedTextureIndex baked_texind); + + private: /* private enums */ + enum ELinkStatus + { + LS_ON, + LS_BROKEN, + }; + + enum EExtension + { + ET_IMG_BMP, + ET_IMG_TGA, + ET_IMG_JPG, + ET_IMG_PNG + }; + + private: /* members */ + std::string mFilename; + std::string mShortName; + LLUUID mTrackingID; + LLUUID mWorldID; + bool mValid; + LLSD mLastModified; + EExtension mExtension; + ELinkStatus mLinkStatus; + S32 mUpdateRetries; + +}; + +class LLLocalBitmapTimer : public LLEventTimer +{ + public: + LLLocalBitmapTimer(); + ~LLLocalBitmapTimer(); + + public: + void startTimer(); + void stopTimer(); + bool isRunning(); + BOOL tick(); + +}; + +class LLLocalBitmapMgr +{ + public: + LLLocalBitmapMgr(); + ~LLLocalBitmapMgr(); + + public: + static bool addUnit(); + static void delUnit(LLUUID tracking_id); + + static LLUUID getWorldID(LLUUID tracking_id); + static std::string getFilename(LLUUID tracking_id); + + static void feedScrollList(LLScrollListCtrl* ctrl); + static void doUpdates(); + static void setNeedsRebake(); + static void doRebake(); + + private: + static std::list<LLLocalBitmap*> sBitmapList; + static LLLocalBitmapTimer sTimer; + static bool sNeedsRebake; + typedef std::list<LLLocalBitmap*>::iterator local_list_iter; +}; + +#endif + diff --git a/indra/newview/lloutfitslist.cpp b/indra/newview/lloutfitslist.cpp index 1dc4d796ab..ef5ef2ddc8 100644 --- a/indra/newview/lloutfitslist.cpp +++ b/indra/newview/lloutfitslist.cpp @@ -640,7 +640,7 @@ void LLOutfitsList::onOutfitsRemovalConfirmation(const LLSD& notification, const if (mSelectedOutfitUUID.notNull()) { - remove_category(&gInventory, mSelectedOutfitUUID); + gInventory.removeCategory(mSelectedOutfitUUID); } } diff --git a/indra/newview/llpreviewnotecard.cpp b/indra/newview/llpreviewnotecard.cpp index 4974dde282..3a9360fd23 100644 --- a/indra/newview/llpreviewnotecard.cpp +++ b/indra/newview/llpreviewnotecard.cpp @@ -29,7 +29,6 @@ #include "llpreviewnotecard.h" #include "llinventory.h" -#include "llinventoryfunctions.h" // for change_item_parent() #include "llagent.h" #include "llassetuploadresponders.h" @@ -494,7 +493,7 @@ void LLPreviewNotecard::deleteNotecard() if (item != NULL) { const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH); - change_item_parent(&gInventory, item, trash_id, FALSE); + gInventory.changeItemParent(item, trash_id, FALSE); } closeFloater(); diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp index 19a944e88e..ed9faa0706 100644 --- a/indra/newview/lltexturectrl.cpp +++ b/indra/newview/lltexturectrl.cpp @@ -67,6 +67,9 @@ #include "lluictrlfactory.h" #include "lltrans.h" +#include "llradiogroup.h" +#include "llfloaterreg.h" +#include "lllocalbitmaps.h" static const S32 HPAD = 4; static const S32 VPAD = 4; @@ -78,6 +81,8 @@ static const F32 CONTEXT_CONE_IN_ALPHA = 0.0f; static const F32 CONTEXT_CONE_OUT_ALPHA = 1.f; static const F32 CONTEXT_FADE_TIME = 0.08f; +static const S32 LOCAL_TRACKING_ID_COLUMN = 1; + //static const char CURRENT_IMAGE_NAME[] = "Current Texture"; //static const char WHITE_IMAGE_NAME[] = "Blank Texture"; //static const char NO_IMAGE_NAME[] = "None"; @@ -142,6 +147,12 @@ public: static void onApplyImmediateCheck(LLUICtrl* ctrl, void* userdata); void onTextureSelect( const LLTextureEntry& te ); + static void onModeSelect(LLUICtrl* ctrl, void *userdata); + static void onBtnAdd(void* userdata); + static void onBtnRemove(void* userdata); + static void onBtnUpload(void* userdata); + static void onLocalScrollCommit(LLUICtrl* ctrl, void* userdata); + protected: LLPointer<LLViewerTexture> mTexturep; LLTextureCtrl* mOwner; @@ -169,8 +180,10 @@ protected: BOOL mNoCopyTextureSelected; F32 mContextConeOpacity; LLSaveFolderState mSavedFolderState; - BOOL mSelectedItemPinned; + + LLRadioGroup* mModeSelector; + LLScrollListCtrl* mLocalScrollCtrl; }; LLFloaterTexturePicker::LLFloaterTexturePicker( @@ -437,6 +450,17 @@ BOOL LLFloaterTexturePicker::postBuild() mInventoryPanel->setSelection(findItemID(mImageAssetID, FALSE), TAKE_FOCUS_NO); } + mModeSelector = getChild<LLRadioGroup>("mode_selection"); + mModeSelector->setCommitCallback(onModeSelect, this); + mModeSelector->setSelectedIndex(0, 0); + + childSetAction("l_add_btn", LLFloaterTexturePicker::onBtnAdd, this); + childSetAction("l_rem_btn", LLFloaterTexturePicker::onBtnRemove, this); + childSetAction("l_upl_btn", LLFloaterTexturePicker::onBtnUpload, this); + + mLocalScrollCtrl = getChild<LLScrollListCtrl>("l_name_list"); + mLocalScrollCtrl->setCommitCallback(onLocalScrollCommit, this); + LLLocalBitmapMgr::feedScrollList(mLocalScrollCtrl); mNoCopyTextureSelected = FALSE; @@ -464,7 +488,6 @@ BOOL LLFloaterTexturePicker::postBuild() // virtual void LLFloaterTexturePicker::draw() { - S32 floater_header_size = getHeaderHeight(); if (mOwner) { // draw cone of context pointing back to texture swatch @@ -554,10 +577,7 @@ void LLFloaterTexturePicker::draw() } // Border - LLRect border( BORDER_PAD, - getRect().getHeight() - floater_header_size - BORDER_PAD, - ((getMinWidth() / 2) - TEXTURE_INVENTORY_PADDING - HPAD) - BORDER_PAD, - BORDER_PAD + FOOTER_HEIGHT + (getRect().getHeight() - getMinHeight())); + LLRect border = getChildView("preview_widget")->getRect(); gl_rect_2d( border, LLColor4::black, FALSE ); @@ -748,7 +768,15 @@ void LLFloaterTexturePicker::onBtnSelect(void* userdata) LLFloaterTexturePicker* self = (LLFloaterTexturePicker*) userdata; if (self->mOwner) { - self->mOwner->onFloaterCommit(LLTextureCtrl::TEXTURE_SELECT); + LLUUID local_id = LLUUID::null; + + if (self->mLocalScrollCtrl->getVisible() && !self->mLocalScrollCtrl->getAllSelected().empty()) + { + LLUUID temp_id = self->mLocalScrollCtrl->getFirstSelected()->getColumn(LOCAL_TRACKING_ID_COLUMN)->getValue().asUUID(); + local_id = LLLocalBitmapMgr::getWorldID(temp_id); + } + + self->mOwner->onFloaterCommit(LLTextureCtrl::TEXTURE_SELECT, local_id); } self->closeFloater(); } @@ -792,6 +820,112 @@ void LLFloaterTexturePicker::onSelectionChange(const std::deque<LLFolderViewItem } // static +void LLFloaterTexturePicker::onModeSelect(LLUICtrl* ctrl, void *userdata) +{ + LLFloaterTexturePicker* self = (LLFloaterTexturePicker*) userdata; + bool mode = (self->mModeSelector->getSelectedIndex() == 0); + + self->getChild<LLButton>("Default")->setVisible(mode); + self->getChild<LLButton>("Blank")->setVisible(mode); + self->getChild<LLButton>("None")->setVisible(mode); + self->getChild<LLButton>("Pipette")->setVisible(mode); + self->getChild<LLFilterEditor>("inventory search editor")->setVisible(mode); + self->getChild<LLInventoryPanel>("inventory panel")->setVisible(mode); + + /*self->getChild<LLCheckBox>("show_folders_check")->setVisible(mode); + no idea under which conditions the above is even shown, needs testing. */ + + self->getChild<LLButton>("l_add_btn")->setVisible(!mode); + self->getChild<LLButton>("l_rem_btn")->setVisible(!mode); + self->getChild<LLButton>("l_upl_btn")->setVisible(!mode); + self->getChild<LLScrollListCtrl>("l_name_list")->setVisible(!mode); +} + +// static +void LLFloaterTexturePicker::onBtnAdd(void* userdata) +{ + if (LLLocalBitmapMgr::addUnit() == true) + { + LLFloaterTexturePicker* self = (LLFloaterTexturePicker*) userdata; + LLLocalBitmapMgr::feedScrollList(self->mLocalScrollCtrl); + } +} + +// static +void LLFloaterTexturePicker::onBtnRemove(void* userdata) +{ + LLFloaterTexturePicker* self = (LLFloaterTexturePicker*) userdata; + std::vector<LLScrollListItem*> selected_items = self->mLocalScrollCtrl->getAllSelected(); + + if (!selected_items.empty()) + { + for(std::vector<LLScrollListItem*>::iterator iter = selected_items.begin(); + iter != selected_items.end(); iter++) + { + LLScrollListItem* list_item = *iter; + if (list_item) + { + LLUUID tracking_id = list_item->getColumn(LOCAL_TRACKING_ID_COLUMN)->getValue().asUUID(); + LLLocalBitmapMgr::delUnit(tracking_id); + } + } + + self->getChild<LLButton>("l_rem_btn")->setEnabled(false); + self->getChild<LLButton>("l_upl_btn")->setEnabled(false); + LLLocalBitmapMgr::feedScrollList(self->mLocalScrollCtrl); + } + +} + +// static +void LLFloaterTexturePicker::onBtnUpload(void* userdata) +{ + LLFloaterTexturePicker* self = (LLFloaterTexturePicker*) userdata; + std::vector<LLScrollListItem*> selected_items = self->mLocalScrollCtrl->getAllSelected(); + + if (selected_items.empty()) + { + return; + } + + /* currently only allows uploading one by one, picks the first item from the selection list. (not the vector!) + in the future, it might be a good idea to check the vector size and if more than one units is selected - opt for multi-image upload. */ + + LLUUID tracking_id = (LLUUID)self->mLocalScrollCtrl->getSelectedItemLabel(LOCAL_TRACKING_ID_COLUMN); + std::string filename = LLLocalBitmapMgr::getFilename(tracking_id); + + if (!filename.empty()) + { + LLFloaterReg::showInstance("upload_image", LLSD(filename)); + } + +} + +//static +void LLFloaterTexturePicker::onLocalScrollCommit(LLUICtrl* ctrl, void* userdata) +{ + LLFloaterTexturePicker* self = (LLFloaterTexturePicker*) userdata; + std::vector<LLScrollListItem*> selected_items = self->mLocalScrollCtrl->getAllSelected(); + bool has_selection = !selected_items.empty(); + + self->getChild<LLButton>("l_rem_btn")->setEnabled(has_selection); + self->getChild<LLButton>("l_upl_btn")->setEnabled(has_selection && (selected_items.size() < 2)); + /* since multiple-localbitmap upload is not implemented, upl button gets disabled if more than one is selected. */ + + if (has_selection) + { + LLUUID tracking_id = (LLUUID)self->mLocalScrollCtrl->getSelectedItemLabel(LOCAL_TRACKING_ID_COLUMN); + LLUUID inworld_id = LLLocalBitmapMgr::getWorldID(tracking_id); + self->mOwner->setImageAssetID(inworld_id); + + if (self->childGetValue("apply_immediate_check").asBoolean()) + { + self->mOwner->onFloaterCommit(LLTextureCtrl::TEXTURE_CHANGE, inworld_id); + } + } +} + +// static void LLFloaterTexturePicker::onShowFolders(LLUICtrl* ctrl, void *user_data) { LLCheckBoxCtrl* check_box = (LLCheckBoxCtrl*)ctrl; @@ -1133,7 +1267,7 @@ void LLTextureCtrl::onFloaterClose() mFloaterHandle.markDead(); } -void LLTextureCtrl::onFloaterCommit(ETexturePickOp op) +void LLTextureCtrl::onFloaterCommit(ETexturePickOp op, LLUUID id) { LLFloaterTexturePicker* floaterp = (LLFloaterTexturePicker*)mFloaterHandle.get(); @@ -1146,14 +1280,24 @@ void LLTextureCtrl::onFloaterCommit(ETexturePickOp op) // (i.e. op == TEXTURE_SELECT) or texture changes via DnD. else if (mCommitOnSelection || op == TEXTURE_SELECT) mViewModel->setDirty(); // *TODO: shouldn't we be using setValue() here? - - if( floaterp->isDirty() ) + + if(floaterp->isDirty() || id.notNull()) // mModelView->setDirty does not work. { setTentative( FALSE ); - mImageItemID = floaterp->findItemID(floaterp->getAssetID(), FALSE); - lldebugs << "mImageItemID: " << mImageItemID << llendl; - mImageAssetID = floaterp->getAssetID(); - lldebugs << "mImageAssetID: " << mImageAssetID << llendl; + + if (id.notNull()) + { + mImageItemID = id; + mImageAssetID = id; + } + else + { + mImageItemID = floaterp->findItemID(floaterp->getAssetID(), FALSE); + lldebugs << "mImageItemID: " << mImageItemID << llendl; + mImageAssetID = floaterp->getAssetID(); + lldebugs << "mImageAssetID: " << mImageAssetID << llendl; + } + if (op == TEXTURE_SELECT && mOnSelectCallback) { mOnSelectCallback( this, LLSD() ); diff --git a/indra/newview/lltexturectrl.h b/indra/newview/lltexturectrl.h index b1312d641f..3abe84dcc3 100644 --- a/indra/newview/lltexturectrl.h +++ b/indra/newview/lltexturectrl.h @@ -157,7 +157,7 @@ public: void closeDependentFloater(); void onFloaterClose(); - void onFloaterCommit(ETexturePickOp op); + void onFloaterCommit(ETexturePickOp op, LLUUID id = LLUUID::null); // This call is returned when a drag is detected. Your callback // should return TRUE if the drag is acceptable. diff --git a/indra/newview/lltoastnotifypanel.cpp b/indra/newview/lltoastnotifypanel.cpp index de305bf3d9..a8060649ba 100644 --- a/indra/newview/lltoastnotifypanel.cpp +++ b/indra/newview/lltoastnotifypanel.cpp @@ -243,8 +243,8 @@ LLButton* LLToastNotifyPanel::createButton(const LLSD& form_element, BOOL is_opt mBtnCallbackData.push_back(userdata); LLButton::Params p; - bool is_ignore_btn = form_element["index"].asInteger() == -1; - const LLFontGL* font = is_ignore_btn ? sFontSmall: sFont; // for ignore button in script dialog + bool make_small_btn = form_element["index"].asInteger() == -1 || form_element["index"].asInteger() == -2; + const LLFontGL* font = make_small_btn ? sFontSmall: sFont; // for block and ignore buttons in script dialog p.name(form_element["name"].asString()); p.label(form_element["text"].asString()); p.font(font); @@ -264,7 +264,7 @@ LLButton* LLToastNotifyPanel::createButton(const LLSD& form_element, BOOL is_opt p.rect.width = 1; p.auto_resize = true; } - else if (mIsScriptDialog && is_ignore_btn) + else if (mIsScriptDialog && make_small_btn) { // this is ignore button, make it smaller p.rect.height = BTN_HEIGHT_SMALL; diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp index 093b84413a..ab45aae5cc 100644 --- a/indra/newview/llviewercontrol.cpp +++ b/indra/newview/llviewercontrol.cpp @@ -181,6 +181,16 @@ static bool handleReleaseGLBufferChanged(const LLSD& newvalue) return true; } +static bool handleLUTBufferChanged(const LLSD& newvalue) +{ + if (gPipeline.isInit()) + { + gPipeline.releaseLUTBuffers(); + gPipeline.createLUTBuffers(); + } + return true; +} + static bool handleAnisotropicChanged(const LLSD& newvalue) { LLImageGL::sGlobalUseAnisotropic = newvalue.asBoolean(); @@ -569,9 +579,9 @@ void settings_setup_listeners() gSavedSettings.getControl("RenderUIBuffer")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2)); gSavedSettings.getControl("RenderDepthOfField")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2)); gSavedSettings.getControl("RenderFSAASamples")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2)); - gSavedSettings.getControl("RenderSpecularResX")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2)); - gSavedSettings.getControl("RenderSpecularResY")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2)); - gSavedSettings.getControl("RenderSpecularExponent")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2)); + gSavedSettings.getControl("RenderSpecularResX")->getSignal()->connect(boost::bind(&handleLUTBufferChanged, _2)); + gSavedSettings.getControl("RenderSpecularResY")->getSignal()->connect(boost::bind(&handleLUTBufferChanged, _2)); + gSavedSettings.getControl("RenderSpecularExponent")->getSignal()->connect(boost::bind(&handleLUTBufferChanged, _2)); gSavedSettings.getControl("RenderAnisotropic")->getSignal()->connect(boost::bind(&handleAnisotropicChanged, _2)); gSavedSettings.getControl("RenderShadowResolutionScale")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2)); gSavedSettings.getControl("RenderGlow")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2)); diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 93f3e3f029..6944ae1a9b 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -6624,31 +6624,37 @@ class LLToolsSelectedScriptAction : public view_listener_t std::string action = userdata.asString(); bool mono = false; std::string msg, name; + std::string title; if (action == "compile mono") { name = "compile_queue"; mono = true; msg = "Recompile"; + title = LLTrans::getString("CompileQueueTitle"); } if (action == "compile lsl") { name = "compile_queue"; msg = "Recompile"; + title = LLTrans::getString("CompileQueueTitle"); } else if (action == "reset") { name = "reset_queue"; msg = "Reset"; + title = LLTrans::getString("ResetQueueTitle"); } else if (action == "start") { name = "start_queue"; msg = "SetRunning"; + title = LLTrans::getString("RunQueueTitle"); } else if (action == "stop") { name = "stop_queue"; msg = "SetRunningNot"; + title = LLTrans::getString("NotRunQueueTitle"); } LLUUID id; id.generate(); @@ -6657,6 +6663,7 @@ class LLToolsSelectedScriptAction : public view_listener_t { queue->setMono(mono); queue_actions(queue, msg); + queue->setTitle(title); } else { diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 5a9faf53d9..1006abb91a 100755 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -156,7 +156,8 @@ const std::string SCRIPT_QUESTIONS[SCRIPT_PERMISSION_EOF] = "AddAndRemoveJoints", "ChangePermissions", "TrackYourCamera", - "ControlYourCamera" + "ControlYourCamera", + "TeleportYourAgent" }; const BOOL SCRIPT_QUESTION_IS_CAUTION[SCRIPT_PERMISSION_EOF] = @@ -171,7 +172,8 @@ const BOOL SCRIPT_QUESTION_IS_CAUTION[SCRIPT_PERMISSION_EOF] = FALSE, // AddAndRemoveJoints FALSE, // ChangePermissions FALSE, // TrackYourCamera, - FALSE // ControlYourCamera + FALSE, // ControlYourCamera + FALSE // TeleportYourAgent }; bool friendship_offer_callback(const LLSD& notification, const LLSD& response) @@ -1065,7 +1067,9 @@ public: // If we now try to remove the inventory item, it will cause a nested // notifyObservers() call, which won't work. // So defer moving the item to trash until viewer gets idle (in a moment). - LLAppViewer::instance()->addOnIdleCallback(boost::bind(&LLInventoryModel::removeItem, &gInventory, mObjectID)); + // Use removeObject() rather than removeItem() because at this level, + // the object could be either an item or a folder. + LLAppViewer::instance()->addOnIdleCallback(boost::bind(&LLInventoryModel::removeObject, &gInventory, mObjectID)); gInventory.removeObserver(this); delete this; } diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index ce9c47adc4..bfde167f18 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -878,6 +878,13 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys, LLMemType mt(LLMemType::MTYPE_OBJECT); U32 retval = 0x0; + // If region is removed from the list it is also deleted. + if (!LLWorld::instance().isRegionListed(mRegionp)) + { + llwarns << "Updating object in an invalid region" << llendl; + return retval; + } + // Coordinates of objects on simulators are region-local. U64 region_handle; mesgsys->getU64Fast(_PREHASH_RegionData, _PREHASH_RegionHandle, region_handle); @@ -3478,7 +3485,8 @@ LLNameValue *LLViewerObject::getNVPair(const std::string& name) const void LLViewerObject::updatePositionCaches() const { - if(mRegionp) + // If region is removed from the list it is also deleted. + if(mRegionp && LLWorld::instance().isRegionListed(mRegionp)) { if (!isRoot()) { @@ -3495,7 +3503,8 @@ void LLViewerObject::updatePositionCaches() const const LLVector3d LLViewerObject::getPositionGlobal() const { - if(mRegionp) + // If region is removed from the list it is also deleted. + if(mRegionp && LLWorld::instance().isRegionListed(mRegionp)) { LLVector3d position_global = mRegionp->getPosGlobalFromRegion(getPositionRegion()); @@ -3514,7 +3523,8 @@ const LLVector3d LLViewerObject::getPositionGlobal() const const LLVector3 &LLViewerObject::getPositionAgent() const { - if (mRegionp) + // If region is removed from the list it is also deleted. + if(mRegionp && LLWorld::instance().isRegionListed(mRegionp)) { if (mDrawable.notNull() && (!mDrawable->isRoot() && getParent())) { diff --git a/indra/newview/llviewertexturelist.h b/indra/newview/llviewertexturelist.h index e0a362596d..b386c73d2a 100644 --- a/indra/newview/llviewertexturelist.h +++ b/indra/newview/llviewertexturelist.h @@ -65,6 +65,7 @@ class LLViewerTextureList friend class LLTextureView; friend class LLViewerTextureManager; + friend class LLLocalBitmap; public: static BOOL createUploadFile(const std::string& filename, const std::string& out_filename, const U8 codec); diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 413eab9888..a7a4281860 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -7537,12 +7537,16 @@ void LLVOAvatar::useBakedTexture( const LLUUID& id ) void LLVOAvatar::dumpArchetypeXML( void* ) { LLAPRFile outfile; - outfile.open(gDirUtilp->getExpandedFilename(LL_PATH_CHARACTER,"new archetype.xml"), LL_APR_WB ); - apr_file_t* file = outfile.getFileHandle() ; + outfile.open(gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS,"new archetype.xml"), LL_APR_WB ); + apr_file_t* file = outfile.getFileHandle(); if (!file) { return; } + else + { + llinfos << "xmlfile write handle obtained : " << gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS,"new archetype.xml") << llendl; + } apr_file_printf( file, "<?xml version=\"1.0\" encoding=\"US-ASCII\" standalone=\"yes\"?>\n" ); apr_file_printf( file, "<linden_genepool version=\"1.0\">\n" ); @@ -7582,6 +7586,11 @@ void LLVOAvatar::dumpArchetypeXML( void* ) } apr_file_printf( file, "\t</archetype>\n" ); apr_file_printf( file, "\n</linden_genepool>\n" ); + //explictly close the file if it is still open which it should be + if (file) + { + outfile.close(); + } } diff --git a/indra/newview/llwearable.cpp b/indra/newview/llwearable.cpp index 0f7f63061b..402504933c 100644 --- a/indra/newview/llwearable.cpp +++ b/indra/newview/llwearable.cpp @@ -810,6 +810,20 @@ const LLLocalTextureObject* LLWearable::getLocalTextureObject(S32 index) const return NULL; } +std::vector<LLLocalTextureObject*> LLWearable::getLocalTextureListSeq() +{ + std::vector<LLLocalTextureObject*> result; + + for(te_map_t::const_iterator iter = mTEMap.begin(); + iter != mTEMap.end(); iter++) + { + LLLocalTextureObject* lto = iter->second; + result.push_back(lto); + } + + return result; +} + void LLWearable::setLocalTextureObject(S32 index, LLLocalTextureObject <o) { if( mTEMap.find(index) != mTEMap.end() ) diff --git a/indra/newview/llwearable.h b/indra/newview/llwearable.h index fd614ade64..3d8c53a755 100644 --- a/indra/newview/llwearable.h +++ b/indra/newview/llwearable.h @@ -106,6 +106,7 @@ public: LLLocalTextureObject* getLocalTextureObject(S32 index); const LLLocalTextureObject* getLocalTextureObject(S32 index) const; + std::vector<LLLocalTextureObject*> getLocalTextureListSeq(); void setLocalTextureObject(S32 index, LLLocalTextureObject <o); void addVisualParam(LLVisualParam *param); diff --git a/indra/newview/llworld.cpp b/indra/newview/llworld.cpp index fbd8b3ada3..3d971e738e 100644 --- a/indra/newview/llworld.cpp +++ b/indra/newview/llworld.cpp @@ -1188,20 +1188,23 @@ void LLWorld::getAvatars(uuid_vec_t* avatar_ids, std::vector<LLVector3d>* positi iter != LLCharacter::sInstances.end(); ++iter) { LLVOAvatar* pVOAvatar = (LLVOAvatar*) *iter; - LLVector3d pos_global = pVOAvatar->getPositionGlobal(); - LLUUID uuid = pVOAvatar->getID(); - if( !pVOAvatar->isDead() - && !pVOAvatar->isSelf() - && !uuid.isNull() && - dist_vec_squared(pos_global, relative_to) <= radius_squared) + + if (!pVOAvatar->isDead() && !pVOAvatar->isSelf()) { - if(positions != NULL) - { - positions->push_back(pos_global); - } - if(avatar_ids !=NULL) + LLVector3d pos_global = pVOAvatar->getPositionGlobal(); + LLUUID uuid = pVOAvatar->getID(); + + if (!uuid.isNull() + && dist_vec_squared(pos_global, relative_to) <= radius_squared) { - avatar_ids->push_back(uuid); + if(positions != NULL) + { + positions->push_back(pos_global); + } + if(avatar_ids !=NULL) + { + avatar_ids->push_back(uuid); + } } } } @@ -1232,6 +1235,11 @@ void LLWorld::getAvatars(uuid_vec_t* avatar_ids, std::vector<LLVector3d>* positi } } +bool LLWorld::isRegionListed(const LLViewerRegion* region) const +{ + region_list_t::const_iterator it = find(mRegionList.begin(), mRegionList.end(), region); + return it != mRegionList.end(); +} LLHTTPRegistration<LLEstablishAgentCommunication> gHTTPRegistrationEstablishAgentCommunication( diff --git a/indra/newview/llworld.h b/indra/newview/llworld.h index d8ab4bc508..f350009d10 100644 --- a/indra/newview/llworld.h +++ b/indra/newview/llworld.h @@ -157,6 +157,11 @@ public: std::vector<LLVector3d>* positions = NULL, const LLVector3d& relative_to = LLVector3d(), F32 radius = FLT_MAX) const; + // Returns 'true' if the region is in mRegionList, + // 'false' if the region has been removed due to region change + // or if the circuit to this simulator had been lost. + bool isRegionListed(const LLViewerRegion* region) const; + private: region_list_t mActiveRegionList; region_list_t mRegionList; diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index bbe46195cb..cdcf468a4d 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -1037,11 +1037,7 @@ void LLPipeline::releaseGLBuffers() mTrueNoiseMap = 0; } - if (mLightFunc) - { - LLImageGL::deleteTextures(1, &mLightFunc); - mLightFunc = 0; - } + releaseLUTBuffers(); mWaterRef.release(); mWaterDis.release(); @@ -1057,6 +1053,15 @@ void LLPipeline::releaseGLBuffers() LLVOAvatar::resetImpostors(); } +void LLPipeline::releaseLUTBuffers() +{ + if (mLightFunc) + { + LLImageGL::deleteTextures(1, &mLightFunc); + mLightFunc = 0; + } +} + void LLPipeline::releaseScreenBuffers() { mUIScreen.release(); @@ -1152,50 +1157,69 @@ void LLPipeline::createGLBuffers() gGL.getTexUnit(0)->setTextureFilteringOption(LLTexUnit::TFO_POINT); } + createLUTBuffers(); + } + + gBumpImageList.restoreGL(); +} + +void LLPipeline::createLUTBuffers() +{ + if (sRenderDeferred) + { if (!mLightFunc) { U32 lightResX = gSavedSettings.getU32("RenderSpecularResX"); U32 lightResY = gSavedSettings.getU32("RenderSpecularResY"); - U8* lg = new U8[lightResX*lightResY]; - + U8* ls = new U8[lightResX*lightResY]; + F32 specExp = gSavedSettings.getF32("RenderSpecularExponent"); + // Calculate the (normalized) Blinn-Phong specular lookup texture. for (U32 y = 0; y < lightResY; ++y) { for (U32 x = 0; x < lightResX; ++x) { - //spec func + ls[y*lightResX+x] = 0; F32 sa = (F32) x/(lightResX-1); F32 spec = (F32) y/(lightResY-1); - //lg[y*lightResX+x] = (U8) (powf(sa, 128.f*spec*spec)*255); - - //F32 sp = acosf(sa)/(1.f-spec); - - sa = powf(sa, gSavedSettings.getF32("RenderSpecularExponent")); - F32 a = acosf(sa*0.25f+0.75f); - F32 m = llmax(0.5f-spec*0.5f, 0.001f); - F32 t2 = tanf(a)/m; - t2 *= t2; - - F32 c4a = (3.f+4.f*cosf(2.f*a)+cosf(4.f*a))/8.f; - F32 bd = 1.f/(4.f*m*m*c4a)*powf(F_E, -t2); - - lg[y*lightResX+x] = (U8) (llclamp(bd, 0.f, 1.f)*255); + F32 n = spec * spec * specExp; + + // Nothing special here. Just your typical blinn-phong term. + spec = powf(sa, n); + + // Apply our normalization function. + // Note: This is the full equation that applies the full normalization curve, not an approximation. + // This is fine, given we only need to create our LUT once per buffer initialization. + // The only trade off is we have a really low dynamic range. + // This means we have to account for things not being able to exceed 0 to 1 in our shaders. + spec *= (((n + 2) * (n + 4)) / (8 * F_PI * (powf(2, -n/2) + n))); + + // Always sample at a 1.0/2.2 curve. + // This "Gamma corrects" our specular term, boosting our lower exponent reflections. + spec = powf(spec, 1.f/2.2f); + + // Easy fix for our dynamic range problem: divide by 6 here, multiply by 6 in our shaders. + // This allows for our specular term to exceed a value of 1 in our shaders. + // This is something that can be important for energy conserving specular models where higher exponents can result in highlights that exceed a range of 0 to 1. + // Technically, we could just use an R16F texture, but driver support for R16F textures can be somewhat spotty at times. + // This works remarkably well for higher specular exponents, though banding can sometimes be seen on lower exponents. + // Combined with a bit of noise and trilinear filtering, the banding is hardly noticable. + ls[y*lightResX+x] = (U8)(llclamp(spec * (1.f / 6), 0.f, 1.f) * 255); } } - + LLImageGL::generateTextures(1, &mLightFunc); gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_TEXTURE, mLightFunc); - LLImageGL::setManualImage(LLTexUnit::getInternalType(LLTexUnit::TT_TEXTURE), 0, GL_R8, lightResX, lightResY, GL_RED, GL_UNSIGNED_BYTE, lg); + LLImageGL::setManualImage(LLTexUnit::getInternalType(LLTexUnit::TT_TEXTURE), 0, GL_R8, lightResX, lightResY, GL_RED, GL_UNSIGNED_BYTE, ls); gGL.getTexUnit(0)->setTextureAddressMode(LLTexUnit::TAM_CLAMP); gGL.getTexUnit(0)->setTextureFilteringOption(LLTexUnit::TFO_TRILINEAR); - - delete [] lg; + + delete [] ls; } } - - gBumpImageList.restoreGL(); } -void LLPipeline::restoreGL() + +void LLPipeline::restoreGL() { LLMemType mt_cb(LLMemType::MTYPE_PIPELINE_RESTORE_GL); assertInitialized(); diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h index 8a845af418..f431576702 100644 --- a/indra/newview/pipeline.h +++ b/indra/newview/pipeline.h @@ -114,8 +114,10 @@ public: void doResetVertexBuffers(); void resizeScreenTexture(); void releaseGLBuffers(); + void releaseLUTBuffers(); void releaseScreenBuffers(); void createGLBuffers(); + void createLUTBuffers(); void allocateScreenBuffer(U32 resX, U32 resY); bool allocateScreenBuffer(U32 resX, U32 resY, U32 samples); diff --git a/indra/newview/skins/default/xui/de/floater_animation_anim_preview.xml b/indra/newview/skins/default/xui/de/floater_animation_anim_preview.xml new file mode 100644 index 0000000000..3dc554b120 --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_animation_anim_preview.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Anim Preview" title="ANIMATION.ANIM"> + <text name="name_label"> + Name: + </text> + <text name="description_label"> + Beschreibung: + </text> + <button label="Hochladen (L$ [AMOUNT])" name="ok_btn"/> + <button label="Abbrechen" label_selected="Abbrechen" name="cancel_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_animation_bvh_preview.xml b/indra/newview/skins/default/xui/de/floater_animation_bvh_preview.xml new file mode 100644 index 0000000000..9a6f5e0166 --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_animation_bvh_preview.xml @@ -0,0 +1,186 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Animation Preview"> + <floater.string name="failed_to_initialize"> + Bewegung konnte nicht initialisiert werden + </floater.string> + <floater.string name="anim_too_long"> + Animationsdatei ist [LENGTH] Sekunden lang. + +Maximal erlaubt sind [MAX_LENGTH] Sekunden. + </floater.string> + <floater.string name="failed_file_read"> + Animationsdatei kann nicht gelesen werden. + +[STATUS] + </floater.string> + <floater.string name="E_ST_OK"> + OK + </floater.string> + <floater.string name="E_ST_EOF"> + Vorzeitiges Dateiende. + </floater.string> + <floater.string name="E_ST_NO_CONSTRAINT"> + Constraint-Definition kann nicht gelesen werden. + </floater.string> + <floater.string name="E_ST_NO_FILE"> + BVH-Datei kann nicht geöffnet werden. + </floater.string> + <floater.string name="E_ST_NO_HIER"> + Ungültige HIERARCHY-Kopfzeile. + </floater.string> + <floater.string name="E_ST_NO_JOINT"> + ROOT oder JOINT nicht gefunden. + </floater.string> + <floater.string name="E_ST_NO_NAME"> + JOINT-Name nicht erfasst. + </floater.string> + <floater.string name="E_ST_NO_OFFSET"> + OFFSET nicht gefunden. + </floater.string> + <floater.string name="E_ST_NO_CHANNELS"> + CHANNELS nicht gefunden. + </floater.string> + <floater.string name="E_ST_NO_ROTATION"> + Rotationsreihenfolge kann nicht erfasst werden. + </floater.string> + <floater.string name="E_ST_NO_AXIS"> + Rotationsachse kann nicht erfasst werden. + </floater.string> + <floater.string name="E_ST_NO_MOTION"> + MOTION nicht gefunden. + </floater.string> + <floater.string name="E_ST_NO_FRAMES"> + Anzahl der Bilder kann nicht erfasst werden. + </floater.string> + <floater.string name="E_ST_NO_FRAME_TIME"> + Bildzeit kann nicht erfasst werden. + </floater.string> + <floater.string name="E_ST_NO_POS"> + Positionswerte können nicht erfasst werden. + </floater.string> + <floater.string name="E_ST_NO_ROT"> + Rotationswerte können nicht erfasst werden. + </floater.string> + <floater.string name="E_ST_NO_XLT_FILE"> + Transformationsdatei kann nicht geöffnet werden. + </floater.string> + <floater.string name="E_ST_NO_XLT_HEADER"> + Transformationskopfzeile kann nicht gelesen werden. + </floater.string> + <floater.string name="E_ST_NO_XLT_NAME"> + Transformationsnamen können nicht gelesen werden. + </floater.string> + <floater.string name="E_ST_NO_XLT_IGNORE"> + Ignorieren-Transformationswert kann nicht gelesen werden. + </floater.string> + <floater.string name="E_ST_NO_XLT_RELATIVE"> + Relativer Transformationswert kann nicht gelesen werden. + </floater.string> + <floater.string name="E_ST_NO_XLT_OUTNAME"> + Outname-Transformationswert kann nicht gelesen werden. + </floater.string> + <floater.string name="E_ST_NO_XLT_MATRIX"> + Transformationsmatrix kann nicht gelesen werden. + </floater.string> + <floater.string name="E_ST_NO_XLT_MERGECHILD"> + Mergechild-Name kann nicht erfasst werden. + </floater.string> + <floater.string name="E_ST_NO_XLT_MERGEPARENT"> + Mergeparent-Name kann nicht erfasst werden. + </floater.string> + <floater.string name="E_ST_NO_XLT_PRIORITY"> + Priority-Wert kann nicht erfasst werden. + </floater.string> + <floater.string name="E_ST_NO_XLT_LOOP"> + Loop-Wert kann nicht erfasst werden. + </floater.string> + <floater.string name="E_ST_NO_XLT_EASEIN"> + EaseIn-Werte können nicht erfasst werden. + </floater.string> + <floater.string name="E_ST_NO_XLT_EASEOUT"> + EaseOut-Werte können nicht erfasst werden. + </floater.string> + <floater.string name="E_ST_NO_XLT_HAND"> + Hand-Morph-Wert kann nicht erfasst werden. + </floater.string> + <floater.string name="E_ST_NO_XLT_EMOTE"> + Emote-Name kann nicht gelesen werden. + </floater.string> + <floater.string name="E_ST_BAD_ROOT"> + Falscher Root-Joint-Name, „hip“ verwenden. + </floater.string> + <text name="name_label"> + Name: + </text> + <text name="description_label"> + Beschreibung: + </text> + <spinner label="Priorität" name="priority" tool_tip="Steuert, welche Animationen von dieser Animation überschrieben werden können"/> + <check_box label="Schleife" name="loop_check" tool_tip="Erzeugt eine Animationsschleife"/> + <spinner label="Ein (%)" name="loop_in_point" tool_tip="Anfang einer Animationsschleife festlegen"/> + <spinner label="Aus (%)" name="loop_out_point" tool_tip="Ende einer Animationsschleife festlegen"/> + <text name="hand_label"> + Handhaltung + </text> + <combo_box name="hand_pose_combo" tool_tip="Steuert während der Animation die Bewegung der Hände"> + <combo_box.item label="Dehnen" name="Spread"/> + <combo_box.item label="Entspannt" name="Relaxed"/> + <combo_box.item label="Beide zeigen" name="PointBoth"/> + <combo_box.item label="Faust" name="Fist"/> + <combo_box.item label="Links entspannt" name="RelaxedLeft"/> + <combo_box.item label="Nach links zeigen" name="PointLeft"/> + <combo_box.item label="Linke Faust" name="FistLeft"/> + <combo_box.item label="Rechts entspannt" name="RelaxedRight"/> + <combo_box.item label="Nach rechts zeigen" name="PointRight"/> + <combo_box.item label="Rechte Faust" name="FistRight"/> + <combo_box.item label="Rechts salutieren" name="SaluteRight"/> + <combo_box.item label="Tippen" name="Typing"/> + <combo_box.item label="Friedensgeste rechts" name="PeaceRight"/> + </combo_box> + <text name="emote_label"> + Ausdruck + </text> + <combo_box name="emote_combo" tool_tip="Steuert Gesichtsregungen während der Animation"> + <item label="(Keine)" name="[None]" value=""/> + <item label="Aaaaah" name="Aaaaah" value="Aaaaah"/> + <item label="Ängstlich" name="Afraid" value="Ängstlich"/> + <item label="Verärgert" name="Angry" value="Verärgert"/> + <item label="Grinst" name="BigSmile" value="Grinst"/> + <item label="Gelangweilt" name="Bored" value="Gelangweilt"/> + <item label="Weinen" name="Cry" value="Weinen"/> + <item label="Verachtung" name="Disdain" value="Verachtung"/> + <item label="Verlegen" name="Embarrassed" value="Verlegen"/> + <item label="Stirnrunzeln" name="Frown" value="Stirnrunzeln"/> + <item label="Küssen" name="Kiss" value="Küssen"/> + <item label="Lachen" name="Laugh" value="Lachen"/> + <item label="Bäääh" name="Plllppt" value="Bäääh"/> + <item label="Angewidert" name="Repulsed" value="Angewidert"/> + <item label="Traurig" name="Sad" value="Traurig"/> + <item label="Achselzucken" name="Shrug" value="Achselzucken"/> + <item label="Lächeln" name="Smile" value="Lächeln"/> + <item label="Überraschung" name="Surprise" value="Überraschung"/> + <item label="Zwinkern" name="Wink" value="Zwinkern"/> + <item label="Sorgenvoll" name="Worry" value="Sorgenvoll"/> + </combo_box> + <text name="preview_label"> + Vorschau während: + </text> + <combo_box name="preview_base_anim" tool_tip="Hiermit können Sie das Verhalten Ihres Avatars testen, während Ihr Avatar normale Bewegungen ausführt."> + <item label="Stehen" name="Standing" value="Stehen"/> + <item label="Gehen" name="Walking" value="Gehen"/> + <item label="Sitzen" name="Sitting" value="Sitzen"/> + <item label="Fliegen" name="Flying" value="Fliegen"/> + </combo_box> + <spinner label="Einblenden (s)" name="ease_in_time" tool_tip="Einblendungszeit für Animationen (in Sekunden)"/> + <spinner label="Ausblenden (s)" name="ease_out_time" tool_tip="Ausblendungszeit für Animationen (in Sekunden)"/> + <button name="play_btn" tool_tip="Animation abspielen"/> + <button name="pause_btn" tool_tip="Animation unterbrechen"/> + <button name="stop_btn" tool_tip="Animation anhalten"/> + <text name="bad_animation_text"> + Animationsdatei kann nicht gelesen werden. + +Wir empfehlen exportierte BVH-Dateien aus Poser 4. + </text> + <button label="Hochladen (L$ [AMOUNT])" name="ok_btn"/> + <button label="Abbrechen" name="cancel_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_preview_animation.xml b/indra/newview/skins/default/xui/de/floater_preview_animation.xml index 3dcdb52555..2dd47a27ad 100644 --- a/indra/newview/skins/default/xui/de/floater_preview_animation.xml +++ b/indra/newview/skins/default/xui/de/floater_preview_animation.xml @@ -7,6 +7,6 @@ Beschreibung: </text> <line_editor left="108" name="desc" width="160"/> - <button label="Inworld abspielen" label_selected="Stopp" name="Anim play btn" tool_tip="Diese Animation so wiedergeben, dass andere sie sehen können." width="116"/> - <button label="Lokal abspielen" label_selected="Stopp" left="171" name="Anim audition btn" tool_tip="Diese Animation so wiedergeben, dass nur Sie sie sehen." width="116"/> + <button label="Inworld abspielen" label_selected="Stopp" name="Inworld" tool_tip="Diese Animation so wiedergeben, dass andere sie sehen können."/> + <button label="Lokal wiedergeben" label_selected="Stopp" name="Locally" tool_tip="Diese Animation so wiedergeben, dass nur Sie sie sehen."/> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_test_text_vertical_aligment.xml b/indra/newview/skins/default/xui/de/floater_test_text_vertical_aligment.xml new file mode 100644 index 0000000000..506d2b013a --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_test_text_vertical_aligment.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Test Floater" title="TEST-FENSTER"/> diff --git a/indra/newview/skins/default/xui/de/floater_tools.xml b/indra/newview/skins/default/xui/de/floater_tools.xml index cf1d03f32d..dee89b28e5 100644 --- a/indra/newview/skins/default/xui/de/floater_tools.xml +++ b/indra/newview/skins/default/xui/de/floater_tools.xml @@ -1,5 +1,20 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="toolbox floater" short_title="BAU-WERKZEUGE" title=""> + <floater.string name="grid_screen_text"> + Bildschirm + </floater.string> + <floater.string name="grid_local_text"> + Lokal + </floater.string> + <floater.string name="grid_world_text"> + Welt + </floater.string> + <floater.string name="grid_reference_text"> + Referenz + </floater.string> + <floater.string name="grid_attachment_text"> + Anhang + </floater.string> <floater.string name="status_rotate"> An den farbigen Bändern ziehen, um das Objekt zu drehen </floater.string> @@ -63,7 +78,12 @@ </text> <check_box initial_value="true" label="Texturen dehnen" name="checkbox stretch textures" top_pad="-5"/> <check_box initial_value="true" label="Einrasten" name="checkbox snap to grid" top_pad="15"/> - <button label="Optionen..." label_selected="Optionen..." name="Options..." tool_tip="Mehr Raster-Optionen anzeigen"/> + <combo_box name="combobox grid mode" tool_tip="Wählen Sie das gewünschte Rasterlineal zum Positionieren des Objekts aus."> + <combo_box.item label="Welt" name="World"/> + <combo_box.item label="Lokal" name="Local"/> + <combo_box.item label="Referenz" name="Reference"/> + </combo_box> + <button label="" label_selected="Optionen..." name="Options..." tool_tip="Mehr Raster-Optionen anzeigen"/> <button label="" label_selected="" name="ToolCube" tool_tip="Würfel"/> <button label="" label_selected="" name="ToolPrism" tool_tip="Prisma"/> <button label="" label_selected="" name="ToolPyramid" tool_tip="Pyramide"/> diff --git a/indra/newview/skins/default/xui/de/floater_voice_effect.xml b/indra/newview/skins/default/xui/de/floater_voice_effect.xml index 3dc0fc2322..413a46525c 100644 --- a/indra/newview/skins/default/xui/de/floater_voice_effect.xml +++ b/indra/newview/skins/default/xui/de/floater_voice_effect.xml @@ -42,13 +42,16 @@ <string name="effect_Demon"> Dämon </string> + <string name="effect_Female Elf"> + Weibliche Elfe + </string> <string name="effect_Flirty"> Kokett </string> <string name="effect_Foxy"> Attraktiv </string> - <string name="effect_Halloween_2010_Bonus"> + <string name="effect_Halloween 2010 Bonus"> Bonus_Halloween_2010 </string> <string name="effect_Helium"> @@ -57,9 +60,18 @@ <string name="effect_Husky"> Rauchig </string> + <string name="effect_Husky Whisper"> + Rauchiges Flüstern + </string> <string name="effect_Intercom"> Intercom </string> + <string name="effect_Julia"> + Julia + </string> + <string name="effect_Lo Lilt"> + Leises Trällern + </string> <string name="effect_Macho"> Macho </string> @@ -69,6 +81,9 @@ <string name="effect_Mini"> Mini </string> + <string name="effect_Model"> + Modell + </string> <string name="effect_Nano"> Nano </string> @@ -90,6 +105,9 @@ <string name="effect_Roxanne"> Roxanne </string> + <string name="effect_Rumble"> + Rumpeln + </string> <string name="effect_Sabrina"> Sabrina </string> @@ -102,6 +120,9 @@ <string name="effect_Shorty"> Shorty </string> + <string name="effect_Smaller"> + Kleiner + </string> <string name="effect_Sneaky"> Hinterhältig </string> diff --git a/indra/newview/skins/default/xui/de/menu_inventory.xml b/indra/newview/skins/default/xui/de/menu_inventory.xml index a82982f986..39b3099336 100644 --- a/indra/newview/skins/default/xui/de/menu_inventory.xml +++ b/indra/newview/skins/default/xui/de/menu_inventory.xml @@ -59,6 +59,7 @@ <menu_item_call label="Eigenschaften" name="Properties"/> <menu_item_call label="Umbenennen" name="Rename"/> <menu_item_call label="Asset-UUID kopieren" name="Copy Asset UUID"/> + <menu_item_call label="Ausschneiden" name="Cut"/> <menu_item_call label="Kopieren" name="Copy"/> <menu_item_call label="Einfügen" name="Paste"/> <menu_item_call label="Als Link einfügen" name="Paste As Link"/> diff --git a/indra/newview/skins/default/xui/de/menu_viewer.xml b/indra/newview/skins/default/xui/de/menu_viewer.xml index a870a4c84d..d011c7295c 100644 --- a/indra/newview/skins/default/xui/de/menu_viewer.xml +++ b/indra/newview/skins/default/xui/de/menu_viewer.xml @@ -21,6 +21,7 @@ <menu_item_call label="Beschäftigt" name="Set Busy"/> </menu> <menu_item_call label="L$ kaufen..." name="Buy and Sell L$"/> + <menu_item_call label="Händler-Outbox..." name="MerchantOutbox"/> <menu_item_call label="Kontoübersicht..." name="Manage My Account"> <menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=de"/> </menu_item_call> @@ -393,9 +394,16 @@ <menu_item_check label="HTTP-Texturen" name="HTTP Textures"/> <menu_item_check label="HTTP-Inventar" name="HTTP Inventory"/> <menu_item_call label="Bilder komprimieren" name="Compress Images"/> + <menu_item_call label="Visual Leak Detector aktivieren" name="Enable Visual Leak Detector"/> <menu_item_check label="Ausgabe Fehlerbeseitigung ausgeben" name="Output Debug Minidump"/> <menu_item_check label="Bei nächster Ausführung Fenster öffnen" name="Console Window"/> - <menu label="Protokollierungsstufe festlegen" name="Set Logging Level"/> + <menu label="Protokollierungsstufe festlegen" name="Set Logging Level"> + <menu_item_check label="Debug" name="Debug"/> + <menu_item_check label="Info" name="Info"/> + <menu_item_check label="Warnung" name="Warning"/> + <menu_item_check label="Fehler" name="Error"/> + <menu_item_check label="Keine" name="None"/> + </menu> <menu_item_call label="Admin-Status anfordern" name="Request Admin Options"/> <menu_item_call label="Admin-Status verlassen" name="Leave Admin Options"/> <menu_item_check label="Admin-Menü anzeigen" name="View Admin Options"/> diff --git a/indra/newview/skins/default/xui/de/notifications.xml b/indra/newview/skins/default/xui/de/notifications.xml index b69bb197c8..ac068fcd4e 100644 --- a/indra/newview/skins/default/xui/de/notifications.xml +++ b/indra/newview/skins/default/xui/de/notifications.xml @@ -677,7 +677,7 @@ Erwartet wurde [VALIDS] Ausgabedatei konnte nicht erstellt werden: [FILE] </notification> <notification name="DoNotSupportBulkAnimationUpload"> - Der Mehrfach-Upload von Animationsdateien wird zurzeit von [APP_NAME] nicht unterstützt. + Der Bulk-Upload von BVH-Animationsdateien wird zurzeit von [APP_NAME] nicht unterstützt. </notification> <notification name="CannotUploadReason"> Datei [FILE] kann aus folgendem Grund nicht hochgeladen werden: [REASON] @@ -2644,16 +2644,16 @@ Anfrage gestatten? „<nolink>[TITLE]</nolink>“ von [NAME] [MESSAGE] <form name="form"> - <button name="Mute" text="Blockieren"/> - <button name="Ignore" text="Ignorieren"/> + <button name="Client_Side_Mute" text="Blockieren"/> + <button name="Client_Side_Ignore" text="Ignorieren"/> </form> </notification> <notification name="ScriptDialogGroup"> „<nolink>[TITLE]</nolink>“ von [GROUPNAME] [MESSAGE] <form name="form"> - <button name="Mute" text="Blockieren"/> - <button name="Ignore" text="Ignorieren"/> + <button name="Client_Side_Mute" text="Blockieren"/> + <button name="Client_Side_Ignore" text="Ignorieren"/> </form> </notification> <notification name="BuyLindenDollarSuccess"> diff --git a/indra/newview/skins/default/xui/de/panel_nearby_chat.xml b/indra/newview/skins/default/xui/de/panel_nearby_chat.xml index 2068c39024..07ad761791 100644 --- a/indra/newview/skins/default/xui/de/panel_nearby_chat.xml +++ b/indra/newview/skins/default/xui/de/panel_nearby_chat.xml @@ -1,4 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="nearby_chat"> - <check_box label="Chat übersetzen" name="translate_chat_checkbox"/> + <layout_stack name="stack"> + <layout_panel name="translate_chat_checkbox_lp"> + <check_box label="Chat übersetzen" name="translate_chat_checkbox"/> + </layout_panel> + </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/de/sidepanel_inventory.xml b/indra/newview/skins/default/xui/de/sidepanel_inventory.xml index 4fc397e7d2..18aad64f96 100644 --- a/indra/newview/skins/default/xui/de/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/de/sidepanel_inventory.xml @@ -14,9 +14,9 @@ <text name="inbox_fresh_new_count"> [NUM] neu </text> - <panel tool_tip="Drag and drop items to your inventory to manage and use them"> + <panel name="inbox_inventory_placeholder_panel" tool_tip="Artikel zur Verwendung in Ihr Inventar ziehen"> <text name="inbox_inventory_placeholder"> - Einkäufe auf dem Marktplatz werden hierher geliefert. + Einkäufe aus dem Marktplatz werden hierher geliefert. </text> </panel> </panel> diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml index 44296f2619..d917d33d12 100644 --- a/indra/newview/skins/default/xui/de/strings.xml +++ b/indra/newview/skins/default/xui/de/strings.xml @@ -835,6 +835,9 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden. <string name="anim_yes_head"> Ja </string> + <string name="multiple_textures"> + Mehrfach + </string> <string name="texture_loading"> Wird geladen... </string> @@ -1235,7 +1238,7 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden. Sie haben keine Kopie dieser Textur in Ihrem Inventar. </string> <string name="InventoryInboxNoItems"> - Hier erscheinen bestimmte Artikel, die Sie erhalten, wie z. B. Premium-Geschenke. Sie können diese dann in Ihr Inventar ziehen. + Einkäufe aus dem Marktplatz erscheinen hier. Sie können diese dann zur Verwendung in Ihr Inventar ziehen. </string> <string name="MarketplaceURL"> https://marketplace.[MARKETPLACE_DOMAIN_NAME]/ @@ -3921,6 +3924,9 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ <string name="Saved_message"> (Gespeichert am [LONG_TIMESTAMP]) </string> + <string name="IM_unblock_only_groups_friends"> + Wenn Sie diese Meldung sehen, müssen Sie unter „Einstellungen“ > „Privatsphäre“ die Option „Nur IMs und Anrufe von Freunden oder Gruppen durchstellen“ deaktivieren. + </string> <string name="answered_call"> Ihr Anruf wurde entgegengenommen </string> diff --git a/indra/newview/skins/default/xui/en/floater_image_preview.xml b/indra/newview/skins/default/xui/en/floater_image_preview.xml index 86232de1a4..44d2c14cc8 100644 --- a/indra/newview/skins/default/xui/en/floater_image_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_image_preview.xml @@ -2,7 +2,7 @@ <floater legacy_header_height="18" can_minimize="false" - height="440" + height="460" layout="topleft" name="Image Preview" help_topic="image_preview" @@ -108,7 +108,7 @@ <text type="string" length="1" - bottom="225" + bottom="250" height="45" word_wrap="true" follows="top|left" @@ -137,7 +137,7 @@ Try saving image as 24 bit Targa (.tga). layout="topleft" left="165" name="cancel_btn" - top="410" + top="430" width="125" /> <button follows="bottom|left" diff --git a/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml index cad7d72ed7..ffb8b842f0 100644 --- a/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml +++ b/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml @@ -3,15 +3,17 @@ legacy_header_height="18" can_minimize="false" can_resize="true" - height="290" + height="330" layout="topleft" - min_height="290" + min_height="330" min_width="410" name="texture picker" help_topic="texture_picker" title="PICK: TEXTURE" width="410"> - <floater.string + +<!-- top static --> + <floater.string name="choose_picture"> Click to choose a picture </floater.string> @@ -19,6 +21,16 @@ name="pick title"> Pick: </floater.string> + + <view + left="4" + top="20" + name="preview_widget" + height="165" + width="165" + follows="left|top" + /> + <text type="string" length="1" @@ -34,70 +46,94 @@ width="163"> Multiple textures </text> + + <!-- mode selector --> + <radio_group + control_name="mode_selection" + height="20" + layout="topleft" + left="18" + top_pad="80" + name="mode_selection" + follows="left|top"> + <radio_item + label="Inventory" + name="inventory" + top_delta="20" + layout="topleft" + height="16" + left="0" + value="0" + width="80" /> + <radio_item + label="Local" + left_pad="0" + layout="topleft" + top_delta="0" + height="16" + name="local" + value="1" + width="75" /> + </radio_group> + <!-- --> + <text type="string" length="1" follows="left|top" height="14" layout="topleft" - left_delta="0" + left_delta="-12" name="unknown" - top_pad="80" - width="163"> + top_pad="4" + width=""> Size: [DIMENSIONS] </text> + +<!-- middle: inventory mode --> + <button enabled="false" - follows="left|bottom" - height="20" + follows="left|top" + height="18" label="Default" label_selected="Default" layout="topleft" - left_delta="0" name="Default" - top_pad="4" - width="80" /> + width="73" + left="94" + top="215"/> <button + follows="left|top" + height="20" + label="Blank" + label_selected="Blank" + layout="topleft" + left_delta="0" + name="Blank" + top_pad="5" + width="73" /> + <button enabled="false" - follows="left|bottom" + follows="left|top" height="20" label="None" label_selected="None" layout="topleft" - left_pad="4" + left_delta="0" name="None" - top_delta="0" - width="80" /> - <button - follows="left|bottom" - height="20" - label="Blank" - label_selected="Blank" - layout="topleft" - left="4" - name="Blank" top_pad="5" - width="80" /> - <button - follows="left|bottom" + width="73" /> + <button + follows="left|top" height="28" image_selected="eye_button_active.tga" image_unselected="eye_button_inactive.tga" layout="topleft" - left_pad="50" - top_delta="3" + left_delta="-80" + top_delta="-25" name="Pipette" width="28" /> - <check_box - follows="left|bottom" - height="20" - initial_value="true" - label="Apply now" - layout="topleft" - left="4" - name="apply_immediate_check" - top="262" - width="120" /> <filter_editor follows="left|top|right" height="23" @@ -113,7 +149,7 @@ bg_alpha_color="DkGray2" border="false" follows="all" - height="200" + height="233" layout="topleft" left_delta="0" name="inventory panel" @@ -128,23 +164,89 @@ top_pad="0" left_delta="-3" width="200" /> - <button - follows="right|bottom" + +<!-- middle: local mode --> + <button + follows="left|top" + height="18" + label="Add" + label_selected="Add" + layout="topleft" + left="94" + top="215" + name="l_add_btn" + width="73" + visible="false"/> + <button + enabled="false" + follows="left|top" + height="20" + label="Remove" + label_selected="Remove" + layout="topleft" + left_delta="0" + name="l_rem_btn" + top_pad="5" + width="73" + visible="false"/> + <button + enabled="false" + follows="left|top" + height="20" + label="Upload" + label_selected="Upload" + layout="topleft" + left_delta="0" + name="l_upl_btn" + top_pad="5" + width="73" + visible="false"/> + <scroll_list + name="l_name_list" + left="170" + top="22" + width="235" + height="260" + follows="left|top|right|bottom" + column_padding="0" + can_resize="false" + draw_heading="true" + multi_select="true" + search_column="1" + visible="false"> + <column name="unit_name" label="Name" dynamicwidth="true" /> + <column name="unit_id_HIDDEN" label="ID" width="0" /> + </scroll_list> + +<!-- bottom static --> + <button + follows="bottom" height="20" label="OK" label_selected="OK" layout="topleft" - right="-120" + left="95" + top="-30" name="Select" width="100" /> <button - follows="right|bottom" + follows="bottom" height="20" label="Cancel" label_selected="Cancel" layout="topleft" - right="-10" - left_pad="5" + left_delta="120" + top_delta="0" name="Cancel" width="100" /> + <check_box + follows="left|bottom" + height="20" + initial_value="true" + label="Apply now" + layout="topleft" + left="6" + name="apply_immediate_check" + top_delta="0" + width="120" /> </floater> diff --git a/indra/newview/skins/default/xui/en/floater_window_size.xml b/indra/newview/skins/default/xui/en/floater_window_size.xml index 355d257785..115fe413f3 100644 --- a/indra/newview/skins/default/xui/en/floater_window_size.xml +++ b/indra/newview/skins/default/xui/en/floater_window_size.xml @@ -28,22 +28,50 @@ tool_tip="width x height" top_pad="5" width="179"> - <combo_box.item - label="1000 x 700 (default)" - name="item0" - value="1000 x 700" /> - <combo_box.item - label="1024 x 768" - name="item1" - value="1024 x 768" /> - <combo_box.item - label="1280 x 720 (720p)" - name="item2" - value="1280 x 720" /> - <combo_box.item - label="1920 x 1080 (1080p)" - name="item3" - value="1920 x 1080" /> + <combo_box.item + label="1000 x 700 (default)" + name="item1" + value="1000 x 700" /> + <combo_box.item + label="1024 x 768 (4:3 XGA)" + name="item2" + value="1024 x 768" /> + <combo_box.item + label="1280 x 720 (16:9 HDTV)" + name="item3" + value="1280 x 720" /> + <combo_box.item + label="1280 x 800 (5:8 WXGA)" + name="item4" + value="1280 x 800" /> + <combo_box.item + label="1280 x 1024 (5:4 SXGA)" + name="item5" + value="1280 x 1024" /> + <combo_box.item + label="1440 x 900 (8:5 WSXGA)" + name="item7" + value="1440 x 900" /> + <combo_box.item + label="1600 x 900 (16:9 HD+)" + name="item8" + value="1600 x 900" /> + <combo_box.item + label="1600 x 1200 (4:3 UXGA)" + name="item9" + value="1600 x 1200" /> + <combo_box.item + label="1680 x 1050 (8:5 WSXGA+)" + name="item10" + value="1680 x 1050" /> + <combo_box.item + label="1920 x 1080 (16:9 HDTV)" + name="item11" + value="1920 x 1080" /> + <combo_box.item + label="1920 x 1200 (8:5 WUXGA)" + name="item12" + value="1920 x 1200" /> </combo_box> <button follows="right|bottom" diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index a0a670f233..0526cf9991 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -7801,4 +7801,31 @@ Otherwise, you can look at the Map and find places marked "Infohub". You died and have been teleported to your home location. </global> + <notification + icon="alertmodal.tga" + name="LocalBitmapsUpdateFileNotFound" + persist="true" + type="notify"> +[FNAME] could not be updated because the file could no longer be found. +Disabling future updates for this file. + </notification> + + <notification + icon="alertmodal.tga" + name="LocalBitmapsUpdateFailedFinal" + persist="true" + type="notify"> +[FNAME] could not be opened or decoded for [NRETRIES] attempts, and is now considered broken. +Disabling future updates for this file. + </notification> + + <notification + icon="alertmodal.tga" + name="LocalBitmapsVerifyFail" + persist="true" + type="notify"> +Attempted to add an invalid or unreadable image file [FNAME] which could not be opened or decoded. +Attempt cancelled. + </notification> + </notifications> diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index 5fb629b704..84532c4c2b 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -403,8 +403,9 @@ Please try logging in again in a minute.</string> <string name="AddAndRemoveJoints">Add and remove joints with other objects</string> <string name="ChangePermissions">Change its permissions</string> <string name="TrackYourCamera">Track your camera</string> - <string name="ControlYourCamera">Control your camera</string> - <string name="NotConnected">Not Connected</string> + <string name="ControlYourCamera">Control your camera</string> + <string name="TeleportYourAgent">Teleport you</string> + <string name="NotConnected">Not Connected</string> <!-- Sim Access labels --> <string name="SIM_ACCESS_PG">General</string> diff --git a/indra/newview/skins/default/xui/fr/floater_animation_anim_preview.xml b/indra/newview/skins/default/xui/fr/floater_animation_anim_preview.xml new file mode 100644 index 0000000000..e82518ce80 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_animation_anim_preview.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Anim Preview" title="ANIMATION.ANIM"> + <text name="name_label"> + Nom : + </text> + <text name="description_label"> + Description : + </text> + <button label="Charger ([AMOUNT] L$)" name="ok_btn"/> + <button label="Annuler" label_selected="Annuler" name="cancel_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_animation_bvh_preview.xml b/indra/newview/skins/default/xui/fr/floater_animation_bvh_preview.xml new file mode 100644 index 0000000000..84c40b5987 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_animation_bvh_preview.xml @@ -0,0 +1,186 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Animation Preview"> + <floater.string name="failed_to_initialize"> + Échec de l'initialisation du mouvement + </floater.string> + <floater.string name="anim_too_long"> + La durée du fichier d'animation est de [LENGTH] secondes. + +La limite maximale est de [MAX_LENGTH] secondes. + </floater.string> + <floater.string name="failed_file_read"> + Impossible de lire le fichier d'animation. + +[STATUS] + </floater.string> + <floater.string name="E_ST_OK"> + Ok + </floater.string> + <floater.string name="E_ST_EOF"> + Fin prématurée du fichier. + </floater.string> + <floater.string name="E_ST_NO_CONSTRAINT"> + Impossible de lire la définition des contraintes. + </floater.string> + <floater.string name="E_ST_NO_FILE"> + Impossible d'ouvrir le fichier BVH. + </floater.string> + <floater.string name="E_ST_NO_HIER"> + En-tête HIERARCHY non valide. + </floater.string> + <floater.string name="E_ST_NO_JOINT"> + Impossible de trouver ROOT ou JOINT. + </floater.string> + <floater.string name="E_ST_NO_NAME"> + Impossible d'obtenir le nom JOINT. + </floater.string> + <floater.string name="E_ST_NO_OFFSET"> + Impossible de trouver OFFSET. + </floater.string> + <floater.string name="E_ST_NO_CHANNELS"> + CHANNELS introuvables. + </floater.string> + <floater.string name="E_ST_NO_ROTATION"> + Impossible d'obtenir l'ordre de rotation. + </floater.string> + <floater.string name="E_ST_NO_AXIS"> + Impossible d'obtenir l'axe de rotation. + </floater.string> + <floater.string name="E_ST_NO_MOTION"> + Impossible de trouver MOTION. + </floater.string> + <floater.string name="E_ST_NO_FRAMES"> + Impossible d'obtenir le nombre d'images. + </floater.string> + <floater.string name="E_ST_NO_FRAME_TIME"> + Impossible d'obtenir la durée des images. + </floater.string> + <floater.string name="E_ST_NO_POS"> + Impossible d'obtenir les valeurs de position. + </floater.string> + <floater.string name="E_ST_NO_ROT"> + Impossible d'obtenir les valeurs de rotation. + </floater.string> + <floater.string name="E_ST_NO_XLT_FILE"> + Impossible d'ouvrir le fichier de traduction. + </floater.string> + <floater.string name="E_ST_NO_XLT_HEADER"> + Impossible de lire l'en-tête de traduction. + </floater.string> + <floater.string name="E_ST_NO_XLT_NAME"> + Impossible de lire les noms de traduction. + </floater.string> + <floater.string name="E_ST_NO_XLT_IGNORE"> + Impossible de lire la valeur ignorant la traduction. + </floater.string> + <floater.string name="E_ST_NO_XLT_RELATIVE"> + Impossible de lire la valeur relative de la traduction. + </floater.string> + <floater.string name="E_ST_NO_XLT_OUTNAME"> + Impossible de lire la valeur outname de la traduction. + </floater.string> + <floater.string name="E_ST_NO_XLT_MATRIX"> + Impossible de lire la matrice de traduction. + </floater.string> + <floater.string name="E_ST_NO_XLT_MERGECHILD"> + Impossible d'obtenir le nom mergechild. + </floater.string> + <floater.string name="E_ST_NO_XLT_MERGEPARENT"> + Impossible d'obtenir le nom mergeparent. + </floater.string> + <floater.string name="E_ST_NO_XLT_PRIORITY"> + Impossible d'obtenir la valeur priority. + </floater.string> + <floater.string name="E_ST_NO_XLT_LOOP"> + Impossible d'obtenir la valeur loop. + </floater.string> + <floater.string name="E_ST_NO_XLT_EASEIN"> + Impossible d'obtenir les valeurs easeIn. + </floater.string> + <floater.string name="E_ST_NO_XLT_EASEOUT"> + Impossible d'obtenir les valeurs easeOut. + </floater.string> + <floater.string name="E_ST_NO_XLT_HAND"> + Impossible d'obtenir la valeur hand morph. + </floater.string> + <floater.string name="E_ST_NO_XLT_EMOTE"> + Impossible de lire le nom emote. + </floater.string> + <floater.string name="E_ST_BAD_ROOT"> + Nom root joint incorrect ; utiliser "hip". + </floater.string> + <text name="name_label"> + Nom : + </text> + <text name="description_label"> + Description : + </text> + <spinner label="Priorité" name="priority" tool_tip="Contrôle quelles autres animations peuvent être remplacées par cette animation."/> + <check_box label="Boucle" name="loop_check" tool_tip="Entraîne la lecture en boucle de cette animation."/> + <spinner label="Début (%)" name="loop_in_point" tool_tip="Définit le point de l'animation auquel retourne la boucle."/> + <spinner label="Fin (%)" name="loop_out_point" tool_tip="Définit le point de l'animation auquel se termine la boucle."/> + <text name="hand_label"> + Pose des mains + </text> + <combo_box name="hand_pose_combo" tool_tip="Contrôle ce que font les mains pendant l'animation."> + <combo_box.item label="Écartées" name="Spread"/> + <combo_box.item label="Détendues" name="Relaxed"/> + <combo_box.item label="Montrer du doigt (les deux)" name="PointBoth"/> + <combo_box.item label="Poing" name="Fist"/> + <combo_box.item label="Détendue (gauche)" name="RelaxedLeft"/> + <combo_box.item label="Montrer du doigt (gauche)" name="PointLeft"/> + <combo_box.item label="Poing (gauche)" name="FistLeft"/> + <combo_box.item label="Détendue (droite)" name="RelaxedRight"/> + <combo_box.item label="Montrer du doigt (droite)" name="PointRight"/> + <combo_box.item label="Poing (droite)" name="FistRight"/> + <combo_box.item label="Salut (droite)" name="SaluteRight"/> + <combo_box.item label="Clavier" name="Typing"/> + <combo_box.item label="Paix (droite)" name="PeaceRight"/> + </combo_box> + <text name="emote_label"> + Expression + </text> + <combo_box name="emote_combo" tool_tip="Contrôle ce que fait le visage pendant l'animation."> + <item label="(Aucune)" name="[None]" value=""/> + <item label="Aaaaah" name="Aaaaah" value="Aaaaah"/> + <item label="Effrayé" name="Afraid" value="Effrayé"/> + <item label="En colère" name="Angry" value="En colère"/> + <item label="Grand sourire" name="BigSmile" value="Grand sourire"/> + <item label="Ennui" name="Bored" value="Ennui"/> + <item label="Pleurer" name="Cry" value="Pleurer"/> + <item label="Mépris" name="Disdain" value="Mépris"/> + <item label="Gêne" name="Embarrassed" value="Gêne"/> + <item label="Froncer les sourcils" name="Frown" value="Froncer les sourcils"/> + <item label="Embrasser" name="Kiss" value="Embrasser"/> + <item label="Rire" name="Laugh" value="Rire"/> + <item label="Tirer la langue" name="Plllppt" value="Tirer la langue"/> + <item label="Dégoût" name="Repulsed" value="Dégoût"/> + <item label="Triste" name="Sad" value="Triste"/> + <item label="Hausser les épaules" name="Shrug" value="Hausser les épaules"/> + <item label="Sourire" name="Smile" value="Sourire"/> + <item label="Surprise" name="Surprise" value="Surprise"/> + <item label="Clin d'œil" name="Wink" value="Clin d'œil"/> + <item label="Inquiétude" name="Worry" value="Inquiétude"/> + </combo_box> + <text name="preview_label"> + Aperçu + </text> + <combo_box name="preview_base_anim" tool_tip="Permet de tester le comportement de l'animation lorsque votre avatar effectue certaines actions courantes."> + <item label="Debout" name="Standing" value="Debout"/> + <item label="En marche" name="Walking" value="En marche"/> + <item label="Assis" name="Sitting" value="Assis"/> + <item label="En vol" name="Flying" value="En vol"/> + </combo_box> + <spinner label="Transition début (s)" name="ease_in_time" tool_tip="Durée (en secondes) de l'entrée en fondu de l'animation."/> + <spinner label="Transition fin (s)" name="ease_out_time" tool_tip="Durée (en secondes) de la sortie en fondu de l'animation."/> + <button name="play_btn" tool_tip="Lire l'animation."/> + <button name="pause_btn" tool_tip="Suspendre l'animation."/> + <button name="stop_btn" tool_tip="Arrêter la lecture de l'animation."/> + <text name="bad_animation_text"> + Impossible de lire le fichier d'animation. + +Les fichiers BVH exportés depuis Poser 4 sont recommandés. + </text> + <button label="Charger ([AMOUNT] L$)" name="ok_btn"/> + <button label="Annuler" name="cancel_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_preview_animation.xml b/indra/newview/skins/default/xui/fr/floater_preview_animation.xml index fdd2ac8beb..f2cb1d5e70 100644 --- a/indra/newview/skins/default/xui/fr/floater_preview_animation.xml +++ b/indra/newview/skins/default/xui/fr/floater_preview_animation.xml @@ -6,6 +6,6 @@ <text name="desc txt"> Description : </text> - <button label="Exécuter dans Second Life" label_selected="Stop" name="Anim play btn" tool_tip="Lire cette animation de façon à ce que les autres puissent la voir" width="131"/> - <button label="Exécuter localement" label_selected="Stop" left="160" name="Anim audition btn" tool_tip="Lire cette animation de façon à ce que vous soyez la seule personne à pouvoir la voir" width="120"/> + <button label="Exécuter dans Second Life" label_selected="Arrêter" name="Inworld" tool_tip="Lire cette animation de façon à ce que les autres la voient."/> + <button label="Exécuter localement" label_selected="Arrêter" name="Locally" tool_tip="Lire cette animation de façon à ce que vous soyez la seule personne à la voir."/> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_test_text_vertical_aligment.xml b/indra/newview/skins/default/xui/fr/floater_test_text_vertical_aligment.xml new file mode 100644 index 0000000000..702170ef52 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_test_text_vertical_aligment.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Test Floater" title="FLOATER TEST"/> diff --git a/indra/newview/skins/default/xui/fr/floater_tools.xml b/indra/newview/skins/default/xui/fr/floater_tools.xml index af5678ff0e..e21c6f4c08 100644 --- a/indra/newview/skins/default/xui/fr/floater_tools.xml +++ b/indra/newview/skins/default/xui/fr/floater_tools.xml @@ -1,5 +1,20 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="toolbox floater" short_title="OUTILS POUR LA CONSTRUCTION" title=""> + <floater.string name="grid_screen_text"> + Écran + </floater.string> + <floater.string name="grid_local_text"> + Local + </floater.string> + <floater.string name="grid_world_text"> + Monde + </floater.string> + <floater.string name="grid_reference_text"> + Référence + </floater.string> + <floater.string name="grid_attachment_text"> + Élément attaché + </floater.string> <floater.string name="status_rotate"> Pour faire tourner l'objet, faites glisser les bandes de couleur. </floater.string> @@ -63,7 +78,12 @@ </text> <check_box initial_value="true" label="Étirer les textures" name="checkbox stretch textures"/> <check_box initial_value="true" label="Fixer" name="checkbox snap to grid"/> - <button label="Options..." label_selected="Options..." name="Options..." tool_tip="Afficher d'autres options de grille"/> + <combo_box name="combobox grid mode" tool_tip="Choisir le type d'axe de grille pour le positionnement de l'objet."> + <combo_box.item label="Monde" name="World"/> + <combo_box.item label="Local" name="Local"/> + <combo_box.item label="Référence" name="Reference"/> + </combo_box> + <button label="" label_selected="Options..." name="Options..." tool_tip="Afficher d'autres options de grille"/> <button label="" label_selected="" name="ToolCube" tool_tip="Cube"/> <button label="" label_selected="" name="ToolPrism" tool_tip="Prisme droit"/> <button label="" label_selected="" name="ToolPyramid" tool_tip="Pyramide"/> @@ -106,7 +126,7 @@ Aucune sélection effectuée. </text> <text name="remaining_capacity"> - [CAPACITY_STRING] [secondlife:///app/openfloater/object_weights Plus d'infos] + [CAPACITY_STRING] [secondlife:///app/openfloater/object_weights Plus d'infos] </text> <tab_container name="Object Info Tabs"> <panel label="Général" name="General"> diff --git a/indra/newview/skins/default/xui/fr/floater_voice_effect.xml b/indra/newview/skins/default/xui/fr/floater_voice_effect.xml index 92ee6ecf24..671fb5c14d 100644 --- a/indra/newview/skins/default/xui/fr/floater_voice_effect.xml +++ b/indra/newview/skins/default/xui/fr/floater_voice_effect.xml @@ -42,13 +42,16 @@ <string name="effect_Demon"> Démon </string> + <string name="effect_Female Elf"> + Femme elfe + </string> <string name="effect_Flirty"> Flirt </string> <string name="effect_Foxy"> Séduction </string> - <string name="effect_Halloween_2010_Bonus"> + <string name="effect_Halloween 2010 Bonus"> Halloween_2010_Bonus </string> <string name="effect_Helium"> @@ -57,9 +60,18 @@ <string name="effect_Husky"> Rauque </string> + <string name="effect_Husky Whisper"> + Murmure rauque + </string> <string name="effect_Intercom"> Interphone </string> + <string name="effect_Julia"> + Julia + </string> + <string name="effect_Lo Lilt"> + Mélodieux + </string> <string name="effect_Macho"> Macho </string> @@ -69,6 +81,9 @@ <string name="effect_Mini"> Mini </string> + <string name="effect_Model"> + Modèle + </string> <string name="effect_Nano"> Nano </string> @@ -90,6 +105,9 @@ <string name="effect_Roxanne"> Roxanne </string> + <string name="effect_Rumble"> + Grondement + </string> <string name="effect_Sabrina"> Sabrina </string> @@ -102,6 +120,9 @@ <string name="effect_Shorty"> Petite voix </string> + <string name="effect_Smaller"> + Plus faible + </string> <string name="effect_Sneaky"> Sournois </string> diff --git a/indra/newview/skins/default/xui/fr/menu_inventory.xml b/indra/newview/skins/default/xui/fr/menu_inventory.xml index 4abc74880f..59dcff9075 100644 --- a/indra/newview/skins/default/xui/fr/menu_inventory.xml +++ b/indra/newview/skins/default/xui/fr/menu_inventory.xml @@ -59,6 +59,7 @@ <menu_item_call label="Propriétés" name="Properties"/> <menu_item_call label="Renommer" name="Rename"/> <menu_item_call label="Copier l'UUID (identifiant universel unique)" name="Copy Asset UUID"/> + <menu_item_call label="Couper" name="Cut"/> <menu_item_call label="Copier" name="Copy"/> <menu_item_call label="Coller" name="Paste"/> <menu_item_call label="Coller comme lien" name="Paste As Link"/> diff --git a/indra/newview/skins/default/xui/fr/menu_viewer.xml b/indra/newview/skins/default/xui/fr/menu_viewer.xml index 3ea863131a..3c3d4f5f69 100644 --- a/indra/newview/skins/default/xui/fr/menu_viewer.xml +++ b/indra/newview/skins/default/xui/fr/menu_viewer.xml @@ -21,6 +21,7 @@ <menu_item_call label="Occupé" name="Set Busy"/> </menu> <menu_item_call label="Acheter des L$..." name="Buy and Sell L$"/> + <menu_item_call label="Boîte d'envoi vendeur..." name="MerchantOutbox"/> <menu_item_call label="Page d'accueil du compte..." name="Manage My Account"> <menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=fr"/> </menu_item_call> @@ -393,9 +394,16 @@ <menu_item_check label="Textures HTTP" name="HTTP Textures"/> <menu_item_check label="Inventaire HTTP" name="HTTP Inventory"/> <menu_item_call label="Compresser les images" name="Compress Images"/> + <menu_item_call label="Activer Visual Leak Detector" name="Enable Visual Leak Detector"/> <menu_item_check label="Output Debug Minidump" name="Output Debug Minidump"/> <menu_item_check label="Console Window on next Run" name="Console Window"/> - <menu label="Définir le niveau de connexion" name="Set Logging Level"/> + <menu label="Définir le niveau de connexion" name="Set Logging Level"> + <menu_item_check label="Débogage" name="Debug"/> + <menu_item_check label="Infos" name="Info"/> + <menu_item_check label="Avertissement" name="Warning"/> + <menu_item_check label="Erreur" name="Error"/> + <menu_item_check label="Aucun" name="None"/> + </menu> <menu_item_call label="Demander le statut Admin" name="Request Admin Options"/> <menu_item_call label="Quitter le statut Admin" name="Leave Admin Options"/> <menu_item_check label="Afficher le menu Admin" name="View Admin Options"/> diff --git a/indra/newview/skins/default/xui/fr/notifications.xml b/indra/newview/skins/default/xui/fr/notifications.xml index f2dd02a495..746a4b1d55 100644 --- a/indra/newview/skins/default/xui/fr/notifications.xml +++ b/indra/newview/skins/default/xui/fr/notifications.xml @@ -669,7 +669,7 @@ Assurez-vous que le fichier a l'extension correcte. Impossible de créer le fichier de sortie : [FILE] </notification> <notification name="DoNotSupportBulkAnimationUpload"> - Actuellement, [APP_NAME] ne prend pas en charge le chargement de lots de fichiers d'animation. + Actuellement, [APP_NAME] ne prend pas en charge le chargement par lot de fichiers d'animation au format BVH. </notification> <notification name="CannotUploadReason"> Impossible de charger [FILE] suite au problème suivant : [REASON] @@ -2630,16 +2630,16 @@ Accepter cette requête ? <nolink>[TITLE]</nolink> de [NAME] [MESSAGE] <form name="form"> - <button name="Mute" text="Ignorer"/> - <button name="Ignore" text="Ignorer"/> + <button name="Client_Side_Mute" text="Bloquer"/> + <button name="Client_Side_Ignore" text="Ignorer"/> </form> </notification> <notification name="ScriptDialogGroup"> <nolink>[TITLE]</nolink> de [GROUPNAME] [MESSAGE] <form name="form"> - <button name="Mute" text="Ignorer"/> - <button name="Ignore" text="Ignorer"/> + <button name="Client_Side_Mute" text="Bloquer"/> + <button name="Client_Side_Ignore" text="Ignorer"/> </form> </notification> <notification name="BuyLindenDollarSuccess"> diff --git a/indra/newview/skins/default/xui/fr/panel_nearby_chat.xml b/indra/newview/skins/default/xui/fr/panel_nearby_chat.xml index 00bd6e81ae..b02e53269b 100644 --- a/indra/newview/skins/default/xui/fr/panel_nearby_chat.xml +++ b/indra/newview/skins/default/xui/fr/panel_nearby_chat.xml @@ -1,4 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="nearby_chat"> - <check_box label="Traduire le chat" name="translate_chat_checkbox"/> + <layout_stack name="stack"> + <layout_panel name="translate_chat_checkbox_lp"> + <check_box label="Traduire le chat" name="translate_chat_checkbox"/> + </layout_panel> + </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/fr/sidepanel_inventory.xml b/indra/newview/skins/default/xui/fr/sidepanel_inventory.xml index cdb15a632d..1b9c832679 100644 --- a/indra/newview/skins/default/xui/fr/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/fr/sidepanel_inventory.xml @@ -14,7 +14,7 @@ <text name="inbox_fresh_new_count"> [NUM] nouv. </text> - <panel tool_tip="Drag and drop items to your inventory to manage and use them"> + <panel name="inbox_inventory_placeholder_panel" tool_tip="Glisser-déposer des articles dans votre inventaire pour les utiliser."> <text name="inbox_inventory_placeholder"> Ici seront livrés les achats effectués sur la Place du marché. </text> diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml index a0c542d524..3eebed450f 100644 --- a/indra/newview/skins/default/xui/fr/strings.xml +++ b/indra/newview/skins/default/xui/fr/strings.xml @@ -835,6 +835,9 @@ Veuillez réessayer de vous connecter dans une minute. <string name="anim_yes_head"> Oui </string> + <string name="multiple_textures"> + Multiples + </string> <string name="texture_loading"> Chargement... </string> @@ -1235,7 +1238,7 @@ Veuillez réessayer de vous connecter dans une minute. Vous n'avez pas de copie de cette texture dans votre inventaire </string> <string name="InventoryInboxNoItems"> - Certains articles reçus, tels que les cadeaux Premium, s'afficheront ici. Vous pourrez alors les faire glisser vers votre inventaire. + Les achats que vous avez effectués sur la Place du marché s'affichent ici. Vous pouvez alors les faire glisser vers votre inventaire afin de les utiliser. </string> <string name="MarketplaceURL"> https://marketplace.[MARKETPLACE_DOMAIN_NAME]/ @@ -3921,6 +3924,9 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. <string name="Saved_message"> (Enregistrement : [LONG_TIMESTAMP]) </string> + <string name="IM_unblock_only_groups_friends"> + Pour afficher ce message, vous devez désactiver la case Seuls mes amis et groupes peuvent m'appeler ou m'envoyer un IM, sous Préférences/Confidentialité. + </string> <string name="answered_call"> Votre appel a fait l'objet d'une réponse </string> diff --git a/indra/newview/skins/default/xui/it/floater_animation_anim_preview.xml b/indra/newview/skins/default/xui/it/floater_animation_anim_preview.xml new file mode 100644 index 0000000000..a2bce00141 --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_animation_anim_preview.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Anim Preview" title="ANIMATION.ANIM"> + <text name="name_label"> + Nome: + </text> + <text name="description_label"> + Descrizione: + </text> + <button label="Carica ([AMOUNT] L$)" name="ok_btn"/> + <button label="Annulla" label_selected="Annulla" name="cancel_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_animation_bvh_preview.xml b/indra/newview/skins/default/xui/it/floater_animation_bvh_preview.xml new file mode 100644 index 0000000000..a4319f2e77 --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_animation_bvh_preview.xml @@ -0,0 +1,186 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Animation Preview"> + <floater.string name="failed_to_initialize"> + Movimento non inizializzato + </floater.string> + <floater.string name="anim_too_long"> + La lunghezza del file di animazione è di [LENGTH] secondi. + +La lunghezza massima dell'animazione è [MAX_LENGTH] secondi. + </floater.string> + <floater.string name="failed_file_read"> + Impossibile leggere il file di animazione. + +[STATUS] + </floater.string> + <floater.string name="E_ST_OK"> + Ok + </floater.string> + <floater.string name="E_ST_EOF"> + Fine prematura del file. + </floater.string> + <floater.string name="E_ST_NO_CONSTRAINT"> + Impossibile leggere la definizione del vincolo. + </floater.string> + <floater.string name="E_ST_NO_FILE"> + Impossibile aprire il file BVH. + </floater.string> + <floater.string name="E_ST_NO_HIER"> + Intestazione HIERARCHY non valida. + </floater.string> + <floater.string name="E_ST_NO_JOINT"> + Impossibile trovare la ROOT o JOINT. + </floater.string> + <floater.string name="E_ST_NO_NAME"> + Impossibile trovare il nome JOINT. + </floater.string> + <floater.string name="E_ST_NO_OFFSET"> + Impossibile trovare OFFSET. + </floater.string> + <floater.string name="E_ST_NO_CHANNELS"> + Impossibile trovare CHANNELS. + </floater.string> + <floater.string name="E_ST_NO_ROTATION"> + Impossibile ottenere un ordine di rotazione. + </floater.string> + <floater.string name="E_ST_NO_AXIS"> + Rotazione dell'asse non disponibile. + </floater.string> + <floater.string name="E_ST_NO_MOTION"> + Impossibile trovare MOTION. + </floater.string> + <floater.string name="E_ST_NO_FRAMES"> + Impossibile ottenere il numero dei frame. + </floater.string> + <floater.string name="E_ST_NO_FRAME_TIME"> + Impossibile ottenere il tempo del frame. + </floater.string> + <floater.string name="E_ST_NO_POS"> + Impossibile ottenere i valori della posizione. + </floater.string> + <floater.string name="E_ST_NO_ROT"> + Impossibile ottenere i valori di rotazione. + </floater.string> + <floater.string name="E_ST_NO_XLT_FILE"> + Impossibile aprire il file di traduzione. + </floater.string> + <floater.string name="E_ST_NO_XLT_HEADER"> + Impossibile leggere l'intestazione della traduzione. + </floater.string> + <floater.string name="E_ST_NO_XLT_NAME"> + Impossibile leggere i nomi della traduzione. + </floater.string> + <floater.string name="E_ST_NO_XLT_IGNORE"> + Impossibile leggere la traduzione, ignora il valore. + </floater.string> + <floater.string name="E_ST_NO_XLT_RELATIVE"> + Impossibile leggere la traduzione del valore relativo. + </floater.string> + <floater.string name="E_ST_NO_XLT_OUTNAME"> + Valore non trovato. + </floater.string> + <floater.string name="E_ST_NO_XLT_MATRIX"> + Impossibile leggere la matrice di traduzione. + </floater.string> + <floater.string name="E_ST_NO_XLT_MERGECHILD"> + Impossibile trovare il nome mergechild. + </floater.string> + <floater.string name="E_ST_NO_XLT_MERGEPARENT"> + Impossibile ottenere il nome mergeparent. + </floater.string> + <floater.string name="E_ST_NO_XLT_PRIORITY"> + Impossibile ottenere il valore di priorità. + </floater.string> + <floater.string name="E_ST_NO_XLT_LOOP"> + Impossibile ottenere il valore di ripetizione. + </floater.string> + <floater.string name="E_ST_NO_XLT_EASEIN"> + Impossibile ottenere i valori easeIn. + </floater.string> + <floater.string name="E_ST_NO_XLT_EASEOUT"> + Cannot get ease Out values. + </floater.string> + <floater.string name="E_ST_NO_XLT_HAND"> + Impossibile ottenere il valore morph della mano. + </floater.string> + <floater.string name="E_ST_NO_XLT_EMOTE"> + Impossibile leggere il nome emote. + </floater.string> + <floater.string name="E_ST_BAD_ROOT"> + Nome non corretto del root joint, usa "hip". + </floater.string> + <text name="name_label"> + Nome: + </text> + <text name="description_label"> + Descrizione: + </text> + <spinner label="Priorità" name="priority" tool_tip="Definisce quali altre animazioni possono essere sostituite da questa animazione"/> + <check_box label="Ripetizione" name="loop_check" tool_tip="Riproduce questa animazione in ripetizione"/> + <spinner label="Dentro(%)" name="loop_in_point" tool_tip="Imposta il punto sul quale ritorna l'animazione"/> + <spinner label="Fuori(%)" name="loop_out_point" tool_tip="Imposta il punto sul quale termina l'animazione"/> + <text name="hand_label"> + Posa delle mani + </text> + <combo_box name="hand_pose_combo" tool_tip="Definisce ciò che fanno le mani durante l'animazione"> + <combo_box.item label="Estese" name="Spread"/> + <combo_box.item label="Rilassate" name="Relaxed"/> + <combo_box.item label="Indicano entrambe" name="PointBoth"/> + <combo_box.item label="Pugno" name="Fist"/> + <combo_box.item label="Sinistra rilassata" name="RelaxedLeft"/> + <combo_box.item label="Indica sinistra" name="PointLeft"/> + <combo_box.item label="Pugno con la sinistra" name="FistLeft"/> + <combo_box.item label="Destra rilassata" name="RelaxedRight"/> + <combo_box.item label="Indica destra" name="PointRight"/> + <combo_box.item label="Pugno destro" name="FistRight"/> + <combo_box.item label="Saluta a destra" name="SaluteRight"/> + <combo_box.item label="Battitura" name="Typing"/> + <combo_box.item label="Pace a destra" name="PeaceRight"/> + </combo_box> + <text name="emote_label"> + Espressione + </text> + <combo_box name="emote_combo" tool_tip="Definisce ciò che fa il viso durante l'animazione"> + <item label="(Nulla)" name="[None]" value=""/> + <item label="Aaaaah" name="Aaaaah" value="Aaaaah"/> + <item label="Spavento" name="Afraid" value="Spavento"/> + <item label="Arrabbiato" name="Angry" value="Arrabbiato"/> + <item label="Grande sorriso" name="BigSmile" value="Grande sorriso"/> + <item label="Annoiato" name="Bored" value="Annoiato"/> + <item label="Pianto" name="Cry" value="Pianto"/> + <item label="Disdegno" name="Disdain" value="Disdegno"/> + <item label="Imbarazzato" name="Embarrassed" value="Imbarazzato"/> + <item label="Accigliato" name="Frown" value="Accigliato"/> + <item label="Bacio" name="Kiss" value="Bacio"/> + <item label="Risata" name="Laugh" value="Risata"/> + <item label="Linguaccia" name="Plllppt" value="Linguaccia"/> + <item label="Repulsione" name="Repulsed" value="Repulsione"/> + <item label="Triste" name="Sad" value="Triste"/> + <item label="Scrollata di spalle" name="Shrug" value="Scrollata di spalle"/> + <item label="Sorriso" name="Smile" value="Sorriso"/> + <item label="Stupore" name="Surprise" value="Stupore"/> + <item label="Occhiolino" name="Wink" value="Occhiolino"/> + <item label="Preoccupato" name="Worry" value="Preoccupato"/> + </combo_box> + <text name="preview_label"> + Anteprima mentre + </text> + <combo_box name="preview_base_anim" tool_tip="Prova il comportamento dell'animazione mentre l'avatar esegue attività comuni."> + <item label="In piedi" name="Standing" value="In piedi"/> + <item label="Camminare" name="Walking" value="Camminare"/> + <item label="Seduto" name="Sitting" value="Seduto"/> + <item label="Volare" name="Flying" value="Volare"/> + </combo_box> + <spinner label="Transizione in ingresso (sec)" name="ease_in_time" tool_tip="Durata (in secondi) della fusione in entrata delle animazioni"/> + <spinner label="Transizione in uscita (sec)" name="ease_out_time" tool_tip="Durata (in secondi) della fusione in uscita delle animazioni"/> + <button name="play_btn" tool_tip="Riproduci la tua animazione"/> + <button name="pause_btn" tool_tip="Metti in pausa la tua animazione"/> + <button name="stop_btn" tool_tip="Interrompi la riproduzione dell'animazione"/> + <text name="bad_animation_text"> + Impossibile leggere il file di animazione. + +Consigliamo file BVH esportati da Poser 4. + </text> + <button label="Carica ([AMOUNT] L$)" name="ok_btn"/> + <button label="Annulla" name="cancel_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_preview_animation.xml b/indra/newview/skins/default/xui/it/floater_preview_animation.xml index 73082c9526..ed609c70fa 100644 --- a/indra/newview/skins/default/xui/it/floater_preview_animation.xml +++ b/indra/newview/skins/default/xui/it/floater_preview_animation.xml @@ -6,6 +6,6 @@ <text name="desc txt"> Descrizione: </text> - <button label="Riproduci in Second Life" label_selected="Ferma" left="20" name="Anim play btn" tool_tip="Riproduci questa animazione così che gli altri possano vederla" width="131"/> - <button label="Esegui localmente" label_selected="Ferma" left="162" name="Anim audition btn" tool_tip="Riproduci questa animazione così che solo tu possa vederla" width="125"/> + <button label="Riproduci in Second Life" label_selected="Ferma" name="Inworld" tool_tip="Riproduci questa animazione così che gli altri possano vederla"/> + <button label="Riproduci localmente" label_selected="Ferma" name="Locally" tool_tip="Riproduci questa animazione così che solo tu possa vederla"/> </floater> diff --git a/indra/newview/skins/default/xui/it/floater_test_text_vertical_aligment.xml b/indra/newview/skins/default/xui/it/floater_test_text_vertical_aligment.xml new file mode 100644 index 0000000000..23da6f7588 --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_test_text_vertical_aligment.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Test Floater" title="FINESTRA DI TEST"/> diff --git a/indra/newview/skins/default/xui/it/floater_tools.xml b/indra/newview/skins/default/xui/it/floater_tools.xml index 0d981e2424..c963ac72e6 100644 --- a/indra/newview/skins/default/xui/it/floater_tools.xml +++ b/indra/newview/skins/default/xui/it/floater_tools.xml @@ -1,5 +1,20 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="toolbox floater" short_title="STRUMENTI PER COSTRUZIONE"> + <floater.string name="grid_screen_text"> + Schermo + </floater.string> + <floater.string name="grid_local_text"> + Locale + </floater.string> + <floater.string name="grid_world_text"> + Mondo + </floater.string> + <floater.string name="grid_reference_text"> + Riferimento + </floater.string> + <floater.string name="grid_attachment_text"> + Allegato + </floater.string> <floater.string name="status_rotate"> Sposta le fasce colorate per ruotare l'oggetto </floater.string> @@ -63,7 +78,12 @@ </text> <check_box initial_value="true" label="Ridimensiona le texture" name="checkbox stretch textures"/> <check_box initial_value="true" label="Scatto" name="checkbox snap to grid"/> - <button label="Opzioni..." label_selected="Opzioni..." name="Options..." tool_tip="Vedi più opzioni della griglia"/> + <combo_box name="combobox grid mode" tool_tip="Scegli il tipo di righello per posizionare l'oggetto"> + <combo_box.item label="Mondo" name="World"/> + <combo_box.item label="Locale" name="Local"/> + <combo_box.item label="Riferimento" name="Reference"/> + </combo_box> + <button label="" label_selected="Opzioni..." name="Options..." tool_tip="Vedi più opzioni della griglia"/> <button label="" label_selected="" name="ToolCube" tool_tip="Cubo"/> <button label="" label_selected="" name="ToolPrism" tool_tip="Prisma"/> <button label="" label_selected="" name="ToolPyramid" tool_tip="Piramide"/> diff --git a/indra/newview/skins/default/xui/it/floater_voice_effect.xml b/indra/newview/skins/default/xui/it/floater_voice_effect.xml index a0e49525ea..c83b11f698 100644 --- a/indra/newview/skins/default/xui/it/floater_voice_effect.xml +++ b/indra/newview/skins/default/xui/it/floater_voice_effect.xml @@ -42,13 +42,16 @@ <string name="effect_Demon"> Demonio </string> + <string name="effect_Female Elf"> + Elfo donna + </string> <string name="effect_Flirty"> Civettuolo </string> <string name="effect_Foxy"> Scaltro </string> - <string name="effect_Halloween_2010_Bonus"> + <string name="effect_Halloween 2010 Bonus"> Halloween_2010_Bonus </string> <string name="effect_Helium"> @@ -57,9 +60,18 @@ <string name="effect_Husky"> Fusto </string> + <string name="effect_Husky Whisper"> + Sospiro rauco + </string> <string name="effect_Intercom"> Interfono </string> + <string name="effect_Julia"> + Julia + </string> + <string name="effect_Lo Lilt"> + Inflessione bassa + </string> <string name="effect_Macho"> Macho </string> @@ -69,6 +81,9 @@ <string name="effect_Mini"> Mini </string> + <string name="effect_Model"> + Modella + </string> <string name="effect_Nano"> Nano </string> @@ -90,6 +105,9 @@ <string name="effect_Roxanne"> Rosanna </string> + <string name="effect_Rumble"> + Rombo + </string> <string name="effect_Sabrina"> Sabrina </string> @@ -102,6 +120,9 @@ <string name="effect_Shorty"> Bassotto </string> + <string name="effect_Smaller"> + Più piccolo + </string> <string name="effect_Sneaky"> Vile </string> diff --git a/indra/newview/skins/default/xui/it/menu_inventory.xml b/indra/newview/skins/default/xui/it/menu_inventory.xml index fc3a82a959..4bf6be82fd 100644 --- a/indra/newview/skins/default/xui/it/menu_inventory.xml +++ b/indra/newview/skins/default/xui/it/menu_inventory.xml @@ -59,6 +59,7 @@ <menu_item_call label="Proprietà" name="Properties"/> <menu_item_call label="Rinomina" name="Rename"/> <menu_item_call label="Copia UUID dell'oggetto" name="Copy Asset UUID"/> + <menu_item_call label="Taglia" name="Cut"/> <menu_item_call label="Copia" name="Copy"/> <menu_item_call label="Incolla" name="Paste"/> <menu_item_call label="Incolla come link" name="Paste As Link"/> diff --git a/indra/newview/skins/default/xui/it/menu_viewer.xml b/indra/newview/skins/default/xui/it/menu_viewer.xml index dee1634a1b..99b7e3c4e6 100644 --- a/indra/newview/skins/default/xui/it/menu_viewer.xml +++ b/indra/newview/skins/default/xui/it/menu_viewer.xml @@ -21,6 +21,7 @@ <menu_item_call label="Non disponibile" name="Set Busy"/> </menu> <menu_item_call label="Acquista L$..." name="Buy and Sell L$"/> + <menu_item_call label="Casella venditore in uscita..." name="MerchantOutbox"/> <menu_item_call label="Dashboard dell'account..." name="Manage My Account"> <menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=it"/> </menu_item_call> @@ -334,8 +335,15 @@ </menu> <menu_item_check label="Texture HTTP" name="HTTP Textures"/> <menu_item_check label="Inventario HTTP" name="HTTP Inventory"/> + <menu_item_call label="Attiva Visual Leak Detector" name="Enable Visual Leak Detector"/> <menu_item_check label="Finestra Console al prossimo lancio" name="Console Window"/> - <menu label="Imposta livello di registrazione" name="Set Logging Level"/> + <menu label="Imposta livello di registrazione" name="Set Logging Level"> + <menu_item_check label="Debug" name="Debug"/> + <menu_item_check label="Informazioni" name="Info"/> + <menu_item_check label="Attenzione" name="Warning"/> + <menu_item_check label="Errore" name="Error"/> + <menu_item_check label="Nessuno" name="None"/> + </menu> <menu_item_call label="Richiedi diritti Admin" name="Request Admin Options"/> <menu_item_call label="Lascia stato Admin" name="Leave Admin Options"/> <menu_item_check label="Mostra menu Admin" name="View Admin Options"/> diff --git a/indra/newview/skins/default/xui/it/notifications.xml b/indra/newview/skins/default/xui/it/notifications.xml index 24e8fd6274..0e6fee60d1 100644 --- a/indra/newview/skins/default/xui/it/notifications.xml +++ b/indra/newview/skins/default/xui/it/notifications.xml @@ -668,7 +668,7 @@ Attese [VALIDS] Impossibile creare il file in uscita: [FILE] </notification> <notification name="DoNotSupportBulkAnimationUpload"> - [APP_NAME] non supporta ancora il caricamento in blocco di file di animazione. + [APP_NAME] non supporta ancora il caricamento in blocco di file di animazione in formato BVH. </notification> <notification name="CannotUploadReason"> Impossibile importare il file [FILE] a causa del seguente motivo: [REASON] @@ -2632,16 +2632,16 @@ Concedi questa richiesta? '<nolink>[TITLE]</nolink>' di [NAME] [MESSAGE] <form name="form"> - <button name="Mute" text="Blocca"/> - <button name="Ignore" text="Ignora"/> + <button name="Client_Side_Mute" text="Blocca"/> + <button name="Client_Side_Ignore" text="Ignora"/> </form> </notification> <notification name="ScriptDialogGroup"> '<nolink>[TITLE]</nolink>' di [GROUPNAME] [MESSAGE] <form name="form"> - <button name="Mute" text="Blocca"/> - <button name="Ignore" text="Ignora"/> + <button name="Client_Side_Mute" text="Blocca"/> + <button name="Client_Side_Ignore" text="Ignora"/> </form> </notification> <notification name="BuyLindenDollarSuccess"> diff --git a/indra/newview/skins/default/xui/it/panel_nearby_chat.xml b/indra/newview/skins/default/xui/it/panel_nearby_chat.xml index 1b529e2737..d46a15c735 100644 --- a/indra/newview/skins/default/xui/it/panel_nearby_chat.xml +++ b/indra/newview/skins/default/xui/it/panel_nearby_chat.xml @@ -1,4 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="nearby_chat"> - <check_box label="Traduci chat" name="translate_chat_checkbox"/> + <layout_stack name="stack"> + <layout_panel name="translate_chat_checkbox_lp"> + <check_box label="Traduci chat" name="translate_chat_checkbox"/> + </layout_panel> + </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/it/sidepanel_inventory.xml b/indra/newview/skins/default/xui/it/sidepanel_inventory.xml index f5c00f432b..5ac0961bd7 100644 --- a/indra/newview/skins/default/xui/it/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/it/sidepanel_inventory.xml @@ -14,7 +14,7 @@ <text name="inbox_fresh_new_count"> [NUM] nuovi </text> - <panel tool_tip="Drag and drop items to your inventory to manage and use them"> + <panel name="inbox_inventory_placeholder_panel" tool_tip="Trascina gli elementi nell'inventario per usarli"> <text name="inbox_inventory_placeholder"> Gli acquisti dal mercato verranno consegnati qui. </text> diff --git a/indra/newview/skins/default/xui/it/strings.xml b/indra/newview/skins/default/xui/it/strings.xml index 29bfab5f0d..8529fadd7d 100644 --- a/indra/newview/skins/default/xui/it/strings.xml +++ b/indra/newview/skins/default/xui/it/strings.xml @@ -829,6 +829,9 @@ Prova ad accedere nuovamente tra un minuto. <string name="anim_yes_head"> Si </string> + <string name="multiple_textures"> + Multiple + </string> <string name="texture_loading"> Caricamento in corso... </string> @@ -1226,7 +1229,7 @@ Prova ad accedere nuovamente tra un minuto. Non hai una copia di questa texture nel tuo inventario </string> <string name="InventoryInboxNoItems"> - Alcuni elementi che riceverai, come ad esempio gli omaggi per l'abbonamento Premium, verranno mostrati qui. Potrai quindi trascinarli nel tuo inventario. + Gli acquissti dal mercato verranno mostrati qui. Potrai quindi trascinarli nel tuo inventario per usarli. </string> <string name="MarketplaceURL"> https://marketplace.[MARKETPLACE_DOMAIN_NAME]/ @@ -3843,6 +3846,9 @@ Se il messaggio persiste, contatta [SUPPORT_SITE]. <string name="Saved_message"> (Salvato [LONG_TIMESTAMP]) </string> + <string name="IM_unblock_only_groups_friends"> + Per vedere questo messaggio, devi deselezionare 'Solo amici e gruppi possono chiamarmi o mandarmi IM' in Preferenze/Privacy. + </string> <string name="answered_call"> Risposto alla chiamata </string> diff --git a/indra/newview/skins/default/xui/ja/floater_animation_anim_preview.xml b/indra/newview/skins/default/xui/ja/floater_animation_anim_preview.xml new file mode 100644 index 0000000000..2bada303ae --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_animation_anim_preview.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Anim Preview" title="ANIMATION.ANIM"> + <text name="name_label"> + 名前: + </text> + <text name="description_label"> + 説明: + </text> + <button label="アップロード(L$[AMOUNT])" name="ok_btn"/> + <button label="取り消し" label_selected="取り消し" name="cancel_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_animation_bvh_preview.xml b/indra/newview/skins/default/xui/ja/floater_animation_bvh_preview.xml new file mode 100644 index 0000000000..f74bab3598 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_animation_bvh_preview.xml @@ -0,0 +1,186 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Animation Preview"> + <floater.string name="failed_to_initialize"> + 動きを初期化できませんでした + </floater.string> + <floater.string name="anim_too_long"> + アニメーションファイルの長さは [LENGTH] 秒です。 + +アニメーションの最大長は [MAX_LENGTH] 秒です。 + </floater.string> + <floater.string name="failed_file_read"> + アニメーションファイルを読み取れません。 + +[STATUS] + </floater.string> + <floater.string name="E_ST_OK"> + Ok + </floater.string> + <floater.string name="E_ST_EOF"> + ファイルの終端が不完全です。 + </floater.string> + <floater.string name="E_ST_NO_CONSTRAINT"> + 制約定義を読み取れません。 + </floater.string> + <floater.string name="E_ST_NO_FILE"> + BVH ファイルを開けません。 + </floater.string> + <floater.string name="E_ST_NO_HIER"> + HIERARCHY ヘッダーが無効です。 + </floater.string> + <floater.string name="E_ST_NO_JOINT"> + ROOT または JOINT が見つかりません。 + </floater.string> + <floater.string name="E_ST_NO_NAME"> + JOINT 名を取得できません。 + </floater.string> + <floater.string name="E_ST_NO_OFFSET"> + OFFSET が見つかりません。 + </floater.string> + <floater.string name="E_ST_NO_CHANNELS"> + CHANNELS が見つかりません。 + </floater.string> + <floater.string name="E_ST_NO_ROTATION"> + 回転順序を取得できません。 + </floater.string> + <floater.string name="E_ST_NO_AXIS"> + 回転軸を取得できません。 + </floater.string> + <floater.string name="E_ST_NO_MOTION"> + MOTION が見つかりません。 + </floater.string> + <floater.string name="E_ST_NO_FRAMES"> + フレーム数を取得できません。 + </floater.string> + <floater.string name="E_ST_NO_FRAME_TIME"> + フレーム時間を取得できません。 + </floater.string> + <floater.string name="E_ST_NO_POS"> + 位置の値を取得できません。 + </floater.string> + <floater.string name="E_ST_NO_ROT"> + 回転値を取得できません。 + </floater.string> + <floater.string name="E_ST_NO_XLT_FILE"> + 変換ファイルを開けません。 + </floater.string> + <floater.string name="E_ST_NO_XLT_HEADER"> + 変換ヘッダーを読み取れません。 + </floater.string> + <floater.string name="E_ST_NO_XLT_NAME"> + 変換名を読み取れません。 + </floater.string> + <floater.string name="E_ST_NO_XLT_IGNORE"> + 変換無視値を読み取れません。 + </floater.string> + <floater.string name="E_ST_NO_XLT_RELATIVE"> + 変換相対値を読み取れません。 + </floater.string> + <floater.string name="E_ST_NO_XLT_OUTNAME"> + 変換 outname 値を読み取れません。 + </floater.string> + <floater.string name="E_ST_NO_XLT_MATRIX"> + 変換行列を読み取れません。 + </floater.string> + <floater.string name="E_ST_NO_XLT_MERGECHILD"> + Mergechild 名を取得できません。 + </floater.string> + <floater.string name="E_ST_NO_XLT_MERGEPARENT"> + Mergeparent 名を取得できません。 + </floater.string> + <floater.string name="E_ST_NO_XLT_PRIORITY"> + priority 値を取得できません。 + </floater.string> + <floater.string name="E_ST_NO_XLT_LOOP"> + loop 値を取得できません。 + </floater.string> + <floater.string name="E_ST_NO_XLT_EASEIN"> + easeln 値を取得できません。 + </floater.string> + <floater.string name="E_ST_NO_XLT_EASEOUT"> + easeOut 値を取得できません。 + </floater.string> + <floater.string name="E_ST_NO_XLT_HAND"> + Hand morph 値を取得できません。 + </floater.string> + <floater.string name="E_ST_NO_XLT_EMOTE"> + emote 名を読みとれません。 + </floater.string> + <floater.string name="E_ST_BAD_ROOT"> + ルートジョイント名が不正です。「hip」を使用してください。 + </floater.string> + <text name="name_label"> + 名前: + </text> + <text name="description_label"> + 説明: + </text> + <spinner label="優先度" name="priority" tool_tip="このアニメーションでどのアニメーションを上書きできるかを決めます"/> + <check_box label="ループ" name="loop_check" tool_tip="このアニメーションをループ再生にします"/> + <spinner label="イン(%)" name="loop_in_point" tool_tip="アニメーションのループ復帰点を設定します"/> + <spinner label="アウト(%)" name="loop_out_point" tool_tip="アニメーションのループ終了点を設定します"/> + <text name="hand_label"> + 手のポーズ + </text> + <combo_box name="hand_pose_combo" tool_tip="アニメーション再生中の手の動きを決めます"> + <combo_box.item label="広げる" name="Spread"/> + <combo_box.item label="リラックス" name="Relaxed"/> + <combo_box.item label="指を指す・両手" name="PointBoth"/> + <combo_box.item label="拳" name="Fist"/> + <combo_box.item label="リラックス・左" name="RelaxedLeft"/> + <combo_box.item label="指を指す・左" name="PointLeft"/> + <combo_box.item label="拳を上げる・左" name="FistLeft"/> + <combo_box.item label="リラックス・右" name="RelaxedRight"/> + <combo_box.item label="指を指す・右" name="PointRight"/> + <combo_box.item label="拳を上げる・右" name="FistRight"/> + <combo_box.item label="敬礼・右" name="SaluteRight"/> + <combo_box.item label="タイピング" name="Typing"/> + <combo_box.item label="ピース・右" name="PeaceRight"/> + </combo_box> + <text name="emote_label"> + 表情 + </text> + <combo_box name="emote_combo" tool_tip="アニメーション再生中の顔の表情を決めます"> + <item label="(なし)" name="[None]" value=""/> + <item label="アーーーーー" name="Aaaaah" value="アーーーーー"/> + <item label="恐れる" name="Afraid" value="恐れる"/> + <item label="怒る" name="Angry" value="怒る"/> + <item label="満面の笑み" name="BigSmile" value="満面の笑み"/> + <item label="退屈" name="Bored" value="退屈"/> + <item label="泣く" name="Cry" value="泣く"/> + <item label="軽蔑" name="Disdain" value="軽蔑"/> + <item label="恥ずかしがる" name="Embarrassed" value="恥ずかしがる"/> + <item label="しかめっ面" name="Frown" value="しかめっ面"/> + <item label="キス" name="Kiss" value="キス"/> + <item label="笑う" name="Laugh" value="笑う"/> + <item label="むかつく" name="Plllppt" value="むかつく"/> + <item label="嫌悪感" name="Repulsed" value="嫌悪感"/> + <item label="悲しい" name="Sad" value="悲しい"/> + <item label="肩をすくめる" name="Shrug" value="肩をすくめる"/> + <item label="微笑む" name="Smile" value="微笑む"/> + <item label="驚く" name="Surprise" value="驚く"/> + <item label="ウィンク" name="Wink" value="ウィンク"/> + <item label="心配する" name="Worry" value="心配する"/> + </combo_box> + <text name="preview_label"> + プレビュー中の動作 + </text> + <combo_box name="preview_base_anim" tool_tip="これを使用して、アバターが一般的なアクションを実行している間にアニメーションの動作をテストします。"> + <item label="立つ" name="Standing" value="立つ"/> + <item label="歩く" name="Walking" value="歩く"/> + <item label="座る" name="Sitting" value="座る"/> + <item label="飛ぶ" name="Flying" value="飛ぶ"/> + </combo_box> + <spinner label="イーズイン(秒)" name="ease_in_time" tool_tip="アニメーションのブレンドイン時間(秒)"/> + <spinner label="イーズアウト(秒)" name="ease_out_time" tool_tip="アニメーションのブレンドアウト時間(秒)"/> + <button name="play_btn" tool_tip="アニメーションを再生する"/> + <button name="pause_btn" tool_tip="アニメーションを一時停止する"/> + <button name="stop_btn" tool_tip="アニメーションの再生を停止する"/> + <text name="bad_animation_text"> + アニメーションファイルを読み取れません。 + +Poser 4 からエクスポートした BVH ファイルをお勧めします。 + </text> + <button label="アップロード(L$[AMOUNT])" name="ok_btn"/> + <button label="取り消し" name="cancel_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/ja/floater_inventory_item_properties.xml index 725214086a..c01c46211e 100644 --- a/indra/newview/skins/default/xui/ja/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/ja/floater_inventory_item_properties.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="item properties" title="持ち物アイテムのプロパティ"> +<floater name="item properties" title="インベントリアイテムのプロパティ"> <floater.string name="unknown"> (不明) </floater.string> @@ -24,11 +24,11 @@ <text name="LabelCreatorTitle"> クリエーター </text> - <button label="情報" label_selected="" name="BtnCreator"/> + <button label="プロフィール..." label_selected="" name="BtnCreator"/> <text name="LabelOwnerTitle"> オーナー: </text> - <button label="情報" label_selected="" name="BtnOwner"/> + <button label="プロフィール..." label_selected="" name="BtnOwner"/> <text name="LabelAcquiredTitle"> 入手日時: </text> diff --git a/indra/newview/skins/default/xui/ja/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/ja/floater_inventory_view_finder.xml index 47d57da031..af96edda79 100644 --- a/indra/newview/skins/default/xui/ja/floater_inventory_view_finder.xml +++ b/indra/newview/skins/default/xui/ja/floater_inventory_view_finder.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Inventory Finder" title="最近取得した持ち物アイテム"> +<floater name="Inventory Finder" title="インベントリ最近取得したアイテム"> <check_box label="アニメーション" name="check_animation"/> <check_box label="コーリング・カード" name="check_calling_card"/> <check_box label="服" name="check_clothing"/> diff --git a/indra/newview/skins/default/xui/ja/floater_model_wizard.xml b/indra/newview/skins/default/xui/ja/floater_model_wizard.xml index 270031a33e..746bd8553c 100644 --- a/indra/newview/skins/default/xui/ja/floater_model_wizard.xml +++ b/indra/newview/skins/default/xui/ja/floater_model_wizard.xml @@ -137,7 +137,7 @@ モデルがアップロードされました。 </text> <text name="inventory_text"> - それは持ち物の「オブジェクト」フォルダにあります。 + それはインベントリの「オブジェクト」フォルダにあります。 </text> <text name="charged_fee"> あなたのアカウントに L$ [FEE] が請求されました。 diff --git a/indra/newview/skins/default/xui/ja/floater_my_inventory.xml b/indra/newview/skins/default/xui/ja/floater_my_inventory.xml index c6a789b63b..d708fc3dec 100644 --- a/indra/newview/skins/default/xui/ja/floater_my_inventory.xml +++ b/indra/newview/skins/default/xui/ja/floater_my_inventory.xml @@ -1,2 +1,2 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_my_inventory" title="持ち物"/> +<floater name="floater_my_inventory" title="インベントリ"/> diff --git a/indra/newview/skins/default/xui/ja/floater_object_weights.xml b/indra/newview/skins/default/xui/ja/floater_object_weights.xml index 3bd9b6b069..d727a268fb 100644 --- a/indra/newview/skins/default/xui/ja/floater_object_weights.xml +++ b/indra/newview/skins/default/xui/ja/floater_object_weights.xml @@ -6,7 +6,7 @@ <text name="objects_label" value="オブジェクト"/> <text name="prims" value="--"/> <text name="prims_label" value="プリム"/> - <text name="weights_of_selected_text" value="選択済み項目のウエイト"/> + <text name="weights_of_selected_text" value="選択済みアイテムのウエイト"/> <text name="download" value="--"/> <text name="download_label" value="ダウンロード"/> <text name="physics" value="--"/> diff --git a/indra/newview/skins/default/xui/ja/floater_openobject.xml b/indra/newview/skins/default/xui/ja/floater_openobject.xml index bd1b650f98..af02ffedda 100644 --- a/indra/newview/skins/default/xui/ja/floater_openobject.xml +++ b/indra/newview/skins/default/xui/ja/floater_openobject.xml @@ -3,6 +3,6 @@ <text name="object_name"> [DESC]: </text> - <button label="持ち物にコピー" label_selected="持ち物にコピー" name="copy_to_inventory_button"/> + <button label="インベントリにコピー" label_selected="インベントリにコピー" name="copy_to_inventory_button"/> <button label="コピーして装着" label_selected="コピーして装着" name="copy_and_wear_button"/> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_people.xml b/indra/newview/skins/default/xui/ja/floater_people.xml index 08bee88103..b180658ab7 100644 --- a/indra/newview/skins/default/xui/ja/floater_people.xml +++ b/indra/newview/skins/default/xui/ja/floater_people.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_people" title="人"> <panel_container name="main_panel"> - <panel label="グループ情報" name="panel_group_info_sidetray"/> + <panel label="グループプロフィール" name="panel_group_info_sidetray"/> <panel label="ブロックされた住人とオブジェクト" name="panel_block_list_sidetray"/> </panel_container> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_preview_animation.xml b/indra/newview/skins/default/xui/ja/floater_preview_animation.xml index 4fc59e16d3..a3042f66ea 100644 --- a/indra/newview/skins/default/xui/ja/floater_preview_animation.xml +++ b/indra/newview/skins/default/xui/ja/floater_preview_animation.xml @@ -6,6 +6,6 @@ <text name="desc txt"> 説明: </text> - <button label="インワールドで再生" label_selected="停止" name="Anim play btn" tool_tip="他人にも見えるように再生します"/> - <button label="ローカル再生" label_selected="停止" name="Anim audition btn" tool_tip="自分だけが見えるように再生します"/> + <button label="インワールドで再生" label_selected="停止" name="Inworld" tool_tip="他人に見えるように再生"/> + <button label="ローカル再生" label_selected="停止" name="Locally" tool_tip="自分だけが見えるように再生"/> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_preview_texture.xml b/indra/newview/skins/default/xui/ja/floater_preview_texture.xml index 6ea1d79cfc..4617fd1d92 100644 --- a/indra/newview/skins/default/xui/ja/floater_preview_texture.xml +++ b/indra/newview/skins/default/xui/ja/floater_preview_texture.xml @@ -4,7 +4,7 @@ テクスチャ: [NAME] </floater.string> <floater.string name="Copy"> - 持ち物にコピー + インベントリにコピー </floater.string> <text name="desc txt"> 説明: diff --git a/indra/newview/skins/default/xui/ja/floater_snapshot.xml b/indra/newview/skins/default/xui/ja/floater_snapshot.xml index cf4732a68e..f145a2e8b8 100644 --- a/indra/newview/skins/default/xui/ja/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/ja/floater_snapshot.xml @@ -10,7 +10,7 @@ 投稿 </string> <string name="inventory_progress_str"> - 持ち物に保存 + インベントリに保存 </string> <string name="local_progress_str"> コンピュータに保存 @@ -22,7 +22,7 @@ メールが送信されました </string> <string name="inventory_succeeded_str"> - 持ち物に保存されました + インベントリに保存されました </string> <string name="local_succeeded_str"> コンピュータに保存されました @@ -34,7 +34,7 @@ メールを送信できませんでした。 </string> <string name="inventory_failed_str"> - 持ち物に保存できませんでした。 + インベントリに保存できませんでした。 </string> <string name="local_failed_str"> コンピュータに保存できませんでした。 diff --git a/indra/newview/skins/default/xui/ja/floater_test_text_vertical_aligment.xml b/indra/newview/skins/default/xui/ja/floater_test_text_vertical_aligment.xml new file mode 100644 index 0000000000..40fd8e9f93 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_test_text_vertical_aligment.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Test Floater" title="テスト用ウィンドウ"/> diff --git a/indra/newview/skins/default/xui/ja/floater_tools.xml b/indra/newview/skins/default/xui/ja/floater_tools.xml index 8eddf55a44..2d12a5e56a 100644 --- a/indra/newview/skins/default/xui/ja/floater_tools.xml +++ b/indra/newview/skins/default/xui/ja/floater_tools.xml @@ -1,5 +1,20 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="toolbox floater" short_title="制作ツール" title=""> + <floater.string name="grid_screen_text"> + 画面 + </floater.string> + <floater.string name="grid_local_text"> + ローカル + </floater.string> + <floater.string name="grid_world_text"> + 世界 + </floater.string> + <floater.string name="grid_reference_text"> + リファレンス + </floater.string> + <floater.string name="grid_attachment_text"> + アタッチメント + </floater.string> <floater.string name="status_rotate"> 色の付いたバンドをドラッグしてオブジェクトを回転 </floater.string> @@ -63,7 +78,12 @@ </text> <check_box initial_value="true" label="テクスチャを引き延ばす" name="checkbox stretch textures"/> <check_box initial_value="true" label="スナップ" name="checkbox snap to grid"/> - <button label="オプション..." label_selected="オプション" name="Options..." tool_tip="グリッドオプションを表示します"/> + <combo_box name="combobox grid mode" tool_tip="オブジェクトの配置に使うグリッドルーラの種類を選択"> + <combo_box.item label="世界" name="World"/> + <combo_box.item label="ローカル" name="Local"/> + <combo_box.item label="リファレンス" name="Reference"/> + </combo_box> + <button label="" label_selected="オプション" name="Options..." tool_tip="グリッドオプションを表示します"/> <button label="" label_selected="" name="ToolCube" tool_tip="キューブ"/> <button label="" label_selected="" name="ToolPrism" tool_tip="プリズム"/> <button label="" label_selected="" name="ToolPyramid" tool_tip="ピラミッド"/> diff --git a/indra/newview/skins/default/xui/ja/floater_voice_effect.xml b/indra/newview/skins/default/xui/ja/floater_voice_effect.xml index 801b7a9db0..ee675e143b 100644 --- a/indra/newview/skins/default/xui/ja/floater_voice_effect.xml +++ b/indra/newview/skins/default/xui/ja/floater_voice_effect.xml @@ -42,13 +42,16 @@ <string name="effect_Demon"> デーモン </string> + <string name="effect_Female Elf"> + 女性のエルフ + </string> <string name="effect_Flirty"> 気のありそうな </string> <string name="effect_Foxy"> 魅惑的 </string> - <string name="effect_Halloween_2010_Bonus"> + <string name="effect_Halloween 2010 Bonus"> ハロウィン_2010_ボーナス </string> <string name="effect_Helium"> @@ -57,9 +60,18 @@ <string name="effect_Husky"> ハスキー </string> + <string name="effect_Husky Whisper"> + スモーキーウィスパー + </string> <string name="effect_Intercom"> インターホン </string> + <string name="effect_Julia"> + ジュリア + </string> + <string name="effect_Lo Lilt"> + 軽快 + </string> <string name="effect_Macho"> マッチョ </string> @@ -69,6 +81,9 @@ <string name="effect_Mini"> ミニ </string> + <string name="effect_Model"> + モデル + </string> <string name="effect_Nano"> ナノ </string> @@ -90,6 +105,9 @@ <string name="effect_Roxanne"> ロクサン </string> + <string name="effect_Rumble"> + ランブル + </string> <string name="effect_Sabrina"> サブリナ </string> @@ -102,6 +120,9 @@ <string name="effect_Shorty"> チビ </string> + <string name="effect_Smaller"> + 小さめ + </string> <string name="effect_Sneaky"> コソコソ </string> diff --git a/indra/newview/skins/default/xui/ja/menu_inventory.xml b/indra/newview/skins/default/xui/ja/menu_inventory.xml index a59f5659c4..d1893a0fc8 100644 --- a/indra/newview/skins/default/xui/ja/menu_inventory.xml +++ b/indra/newview/skins/default/xui/ja/menu_inventory.xml @@ -59,6 +59,7 @@ <menu_item_call label="プロパティ" name="Properties"/> <menu_item_call label="名前を変更する" name="Rename"/> <menu_item_call label="UUID をコピーする" name="Copy Asset UUID"/> + <menu_item_call label="カット" name="Cut"/> <menu_item_call label="コピー" name="Copy"/> <menu_item_call label="貼り付け" name="Paste"/> <menu_item_call label="リンクを貼り付ける" name="Paste As Link"/> diff --git a/indra/newview/skins/default/xui/ja/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/ja/menu_inventory_gear_default.xml index 1f425df83c..f38dbc71a8 100644 --- a/indra/newview/skins/default/xui/ja/menu_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/ja/menu_inventory_gear_default.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <toggleable_menu name="menu_gear_default"> - <menu_item_call label="新しい持ち物ウィンドウ" name="new_window"/> + <menu_item_call label="新しいインベントリウィンドウ" name="new_window"/> <menu_item_check label="名前で並べ替え" name="sort_by_name"/> <menu_item_check label="新しい順に並べ替え" name="sort_by_recent"/> <menu_item_check label="フォルダを常に名前順に並べる" name="sort_folders_by_name"/> diff --git a/indra/newview/skins/default/xui/ja/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/ja/menu_places_gear_folder.xml index e64f97fda5..c455204722 100644 --- a/indra/newview/skins/default/xui/ja/menu_places_gear_folder.xml +++ b/indra/newview/skins/default/xui/ja/menu_places_gear_folder.xml @@ -1,8 +1,8 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <toggleable_menu name="menu_folder_gear"> <menu_item_call label="ランドマークを追加" name="add_landmark"/> <menu_item_call label="フォルダを追加" name="add_folder"/> - <menu_item_call label="商品を復元" name="restore_item"/> + <menu_item_call label="アイテムを復元" name="restore_item"/> <menu_item_call label="切り取り" name="cut"/> <menu_item_call label="コピー" name="copy_folder"/> <menu_item_call label="貼り付け" name="paste"/> diff --git a/indra/newview/skins/default/xui/ja/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/ja/menu_places_gear_landmark.xml index f416b5b1f6..579f2c2cbd 100644 --- a/indra/newview/skins/default/xui/ja/menu_places_gear_landmark.xml +++ b/indra/newview/skins/default/xui/ja/menu_places_gear_landmark.xml @@ -1,11 +1,11 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <toggleable_menu name="menu_ladmark_gear"> <menu_item_call label="テレポート" name="teleport"/> <menu_item_call label="もっと詳しく" name="more_info"/> <menu_item_call label="地図に表示" name="show_on_map"/> <menu_item_call label="ランドマークを追加" name="add_landmark"/> <menu_item_call label="フォルダを追加" name="add_folder"/> - <menu_item_call label="商品を復元" name="restore_item"/> + <menu_item_call label="アイテムを復元" name="restore_item"/> <menu_item_call label="切り取り" name="cut"/> <menu_item_call label="ランドマークをコピー" name="copy_landmark"/> <menu_item_call label="SLurl をコピー" name="copy_slurl"/> diff --git a/indra/newview/skins/default/xui/ja/menu_url_inventory.xml b/indra/newview/skins/default/xui/ja/menu_url_inventory.xml index 7af2f9e2cd..147ab44a1b 100644 --- a/indra/newview/skins/default/xui/ja/menu_url_inventory.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_inventory.xml @@ -1,6 +1,6 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Url Popup"> - <menu_item_call label="持ち物アイテムを表示" name="show_item"/> + <menu_item_call label="インベントリアイテムを表示" name="show_item"/> <menu_item_call label="名前をクリップボードにコピー" name="url_copy_label"/> <menu_item_call label="SLurl をクリップボードにコピー" name="url_copy"/> </context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_viewer.xml b/indra/newview/skins/default/xui/ja/menu_viewer.xml index 4430ec054c..8496dfb1db 100644 --- a/indra/newview/skins/default/xui/ja/menu_viewer.xml +++ b/indra/newview/skins/default/xui/ja/menu_viewer.xml @@ -4,8 +4,8 @@ <menu_item_call label="プロフィール..." name="Profile"/> <menu_item_call label="容姿..." name="ChangeOutfit"/> <menu_item_call label="アバターを選択..." name="Avatar Picker"/> - <menu_item_check label="持ち物..." name="Inventory"/> - <menu_item_call label="新しい持ち物ウィンドウ" name="NewInventoryWindow"/> + <menu_item_check label="インベントリ..." name="Inventory"/> + <menu_item_call label="新しいインベントリウィンドウ" name="NewInventoryWindow"/> <menu_item_call label="場所..." name="Places"/> <menu_item_call label="ピック..." name="Picks"/> <menu_item_call label="カメラコントロール..." name="Camera Controls"/> @@ -21,6 +21,7 @@ <menu_item_call label="取り込み中" name="Set Busy"/> </menu> <menu_item_call label="L$ の購入..." name="Buy and Sell L$"/> + <menu_item_call label="マーチャントアウトボックス..." name="MerchantOutbox"/> <menu_item_call label="マイアカウント..." name="Manage My Account"> <menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=ja"/> </menu_item_call> @@ -112,7 +113,7 @@ <menu_item_call label="買う" name="Menu Object Buy"/> <menu_item_call label="取る" name="Menu Object Take"/> <menu_item_call label="コピーを取る" name="Take Copy"/> - <menu_item_call label="「持ち物」に保存" name="Save Object Back to My Inventory"/> + <menu_item_call label="マイインベントリに保存" name="Save Object Back to My Inventory"/> <menu_item_call label="オブジェクトの中身に保存" name="Save Object Back to Object Contents"/> <menu_item_call label="オブジェクトを返却する" name="Return Object back to Owner"/> </menu> @@ -337,7 +338,7 @@ <menu_item_call label="メディアブラウザのテスト" name="Web Browser Test"/> <menu_item_call label="Web コンテンツブラウザ" name="Web Content Browser"/> <menu_item_call label="SelectMgr をダンプ" name="Dump SelectMgr"/> - <menu_item_call label="持ち物の出力" name="Dump Inventory"/> + <menu_item_call label="インベントリの出力" name="Dump Inventory"/> <menu_item_call label="タイマーをダンプ" name="Dump Timers"/> <menu_item_call label="フォーカスホールダーをダンプ" name="Dump Focus Holder"/> <menu_item_call label="選択したオブジェクト情報をプリント" name="Print Selected Object Info"/> @@ -391,11 +392,18 @@ <menu_item_call label="ローカルテクスチャをダンプ" name="Dump Local Textures"/> </menu> <menu_item_check label="HTTP Texture" name="HTTP Textures"/> - <menu_item_check label="HTTP 持ち物" name="HTTP Inventory"/> + <menu_item_check label="HTTP インベントリ" name="HTTP Inventory"/> <menu_item_call label="圧縮画像" name="Compress Images"/> + <menu_item_call label="Visual Leak Detector を有効にする" name="Enable Visual Leak Detector"/> <menu_item_check label="デバッグ用のミニダンプを出力する" name="Output Debug Minidump"/> <menu_item_check label="次回の起動時にコンソールウィンドウを表示する" name="Console Window"/> - <menu label="ログレベルを設定" name="Set Logging Level"/> + <menu label="ログレベルを設定" name="Set Logging Level"> + <menu_item_check label="デバッグ" name="Debug"/> + <menu_item_check label="情報" name="Info"/> + <menu_item_check label="警告" name="Warning"/> + <menu_item_check label="エラー" name="Error"/> + <menu_item_check label="なし" name="None"/> + </menu> <menu_item_call label="管理者ステータスの呼び出し" name="Request Admin Options"/> <menu_item_call label="管理者ステータス解除" name="Leave Admin Options"/> <menu_item_check label="管理者メニューを表示する" name="View Admin Options"/> diff --git a/indra/newview/skins/default/xui/ja/notifications.xml b/indra/newview/skins/default/xui/ja/notifications.xml index c8e8dbb0f1..54031ccf12 100644 --- a/indra/newview/skins/default/xui/ja/notifications.xml +++ b/indra/newview/skins/default/xui/ja/notifications.xml @@ -264,7 +264,7 @@ L$ が不足しているのでこのグループに参加することができ <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/> </notification> <notification name="ReturnObjectsDeededToGroup"> - この区画のグループ [NAME] 共有のすべてのオブジェクトを、以前の所有者の「持ち物」に戻そうとしています。 + この区画のグループ [NAME] 共有のすべてのオブジェクトを、以前の所有者のインベントリに戻そうとしています。 操作を続行しますか? *警告* これにより、 @@ -275,21 +275,21 @@ L$ が不足しているのでこのグループに参加することができ <notification name="ReturnObjectsOwnedByUser"> この区画で、 住人 [NAME] が所有する全てのオブジェクトを -本人の「持ち物」に本当に返却してもよいですか? +本人のインベントリに本当に返却してもよいですか? オブジェクト: [N] <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> <notification name="ReturnObjectsOwnedBySelf"> この土地区画内にある、あなたが所有するすべてのオブジェクトを、 -あなたの「持ち物」に戻そうとしています。続けますか? +あなたのインベントリに戻そうとしています。続けますか? オブジェクト: [N] <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> <notification name="ReturnObjectsNotOwnedBySelf"> この土地区画内にある、あなた以外が所有するすべてのオブジェクトを、 -それぞれの所有者の「持ち物」に戻そうとしています。 +それぞれの所有者のインベントリに戻そうとしています。 操作を続行しますか? グループに譲渡された「再販・プレゼント可」のオブジェクトは、以前の所有者に返却されます。 @@ -300,7 +300,7 @@ L$ が不足しているのでこのグループに参加することができ </notification> <notification name="ReturnObjectsNotOwnedByUser"> この土地区画内にある、 -[NAME]以外による所有のオブジェクトをすべてそれぞれの所有者の「持ち物」に返却しようとしています。 +[NAME]以外による所有のオブジェクトをすべてそれぞれの所有者のインベントリに返却しようとしています。 操作を続行しますか?グループに譲渡された「再販・プレゼント可」のオブジェクトは、以前の所有者に返却されます。 *警告* これにより、 @@ -464,14 +464,14 @@ L$ が不足しているのでこのグループに参加することができ ジェスチャーの保存に失敗しました。少し待ってからもう一度試してください。 </notification> <notification name="GestureSaveFailedObjectNotFound"> - ジェスチャーの保存に失敗しました。オブジェクト、または関連するオブジェクト持ち物が見つかりません。 + ジェスチャーの保存に失敗しました。オブジェクト、または関連するオブジェクトインベントリが見つかりません。 オブジェクトが範囲内に存在しないか、または削除された可能性があります。 </notification> <notification name="GestureSaveFailedReason"> 次の理由で、ジェスチャーの保存時に問題が起こりました。 [REASON]。 後でもう一度試してください。 </notification> <notification name="SaveNotecardFailObjectNotFound"> - ノートカードの保存に失敗しました。オブジェクト、または関連するオブジェクト持ち物が見つかりません。 + ノートカードの保存に失敗しました。オブジェクト、または関連するオブジェクトインベントリが見つかりません。 オブジェクトが範囲内に存在しないか、または削除された可能性があります。 </notification> <notification name="SaveNotecardFailReason"> @@ -535,11 +535,11 @@ L$ が不足しているのでこのグループに参加することができ [REGION] では、地形の変更ができません。 </notification> <notification name="CannotCopyWarning"> - あなたには[ITEMS]というアイテムをコピーする許可がありません。他の住人に提供すると、そのアイテムはあなたの「持ち物」から削除されます。本当にこれらのアイテムを譲りますか? + あなたには[ITEMS]というアイテムをコピーする許可がありません。他の住人に提供すると、そのアイテムはあなたのインベントリから削除されます。本当にこれらのアイテムを譲りますか? <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/> </notification> <notification name="CannotGiveItem"> - 持ち物のアイテムを渡せません。 + インベントリのアイテムを渡せません。 </notification> <notification name="TransactionCancelled"> 取引がキャンセルされました。 @@ -552,7 +552,7 @@ L$ が不足しているのでこのグループに参加することができ </notification> <notification name="CannotCopyCountItems"> あなたは選択した [COUNT] 個のアイテムののコピーを許されていません。 -これらのアイテムはあなたの「持ち物」から失われます。 +これらのアイテムはあなたのインベントリから失われます。 本当にアイテムを渡したいですか? <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/> </notification> @@ -693,7 +693,7 @@ L$ が不足しているのでこのグループに参加することができ 出力ファイルを作成できません: [FILE] </notification> <notification name="DoNotSupportBulkAnimationUpload"> - 現在 [APP_NAME] では、アニメーションの一括アップロードはサポートされていません。 + 現在 [APP_NAME] では、BVH 形式のアニメーションファイルの一括アップロードはサポートされていません。 </notification> <notification name="CannotUploadReason"> 次の理由で、「 [FILE] 」をアップロードできません: [REASON] @@ -796,7 +796,7 @@ L$ が不足しているのでこのグループに参加することができ テレポート目的地を見つけられません。目的地が一時的に利用できない状態か、すでに消滅している可能性があります。数分後にやり直してください。 </notification> <notification name="no_inventory_host"> - 持ち物システムは現在利用できません。 + インベントリシステムは現在利用できません。 </notification> <notification name="CannotSetLandOwnerNothingSelected"> 土地所有者設定ができません: @@ -959,7 +959,7 @@ L$ は返金されません。 <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> <notification name="ConfirmItemCopy"> - このアイテムをあなたの持ち物にコピーしますか? + このアイテムをあなたのインベントリにコピーしますか? <usetemplate name="okcancelbuttons" notext="取り消し" yestext="コピー"/> </notification> <notification name="ResolutionSwitchFail"> @@ -1011,7 +1011,7 @@ L$ は返金されません。 </form> </notification> <notification label="着用物を保存" name="SaveWearableAs"> - アイテムを別名で持ち物に保存: + アイテムを別名でインベントリに保存: <form name="form"> <input name="message"> [DESC](新規) @@ -1896,7 +1896,7 @@ Adult 専用リージョンに入るには、住人のアカウントが年齢 </notification> <notification name="BuyCopy"> コピーを [OWNER] から L$ [PRICE] で購入しますか? -購入したオブジェクトは、あなたの「持ち物」にコピーされます。 +購入したオブジェクトは、あなたのインベントリにコピーされます。 可能な操作は、 修正:[MODIFYPERM]、コピー:[COPYPERM]、 再販・プレゼント:[RESELLPERM] です。 @@ -1904,7 +1904,7 @@ Adult 専用リージョンに入るには、住人のアカウントが年齢 </notification> <notification name="BuyCopyNoOwner"> L$ [PRICE] でコピーを購入しますか? -購入したオブジェクトは、あなたの「持ち物」にコピーされます。 +購入したオブジェクトは、あなたのインベントリにコピーされます。 可能な操作は、 修正:[MODIFYPERM]、コピー:[COPYPERM]、 再販・プレゼント:[RESELLPERM] です。 @@ -1912,12 +1912,12 @@ Adult 専用リージョンに入るには、住人のアカウントが年齢 </notification> <notification name="BuyContents"> 中身を [OWNER] から L$ [PRICE] で購入しますか? -購入した中身は、あなたの「持ち物」にコピーされます。 +購入した中身は、あなたのインベントリにコピーされます。 <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> <notification name="BuyContentsNoOwner"> L$ [PRICE] で中身を購入しますか? -購入した中身は、あなたの「持ち物」にコピーされます。 +購入した中身は、あなたのインベントリにコピーされます。 <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> <notification name="ConfirmPurchase"> @@ -1946,20 +1946,20 @@ Adult 専用リージョンに入るには、住人のアカウントが年齢 <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="MoveInventoryFromObject"> - 「コピー不可」の持ち物アイテムを選択しました。 -これらのアイテムはコピーされないまま、あなたの「持ち物」に移動されます。 + 「コピー不可」のインベントリアイテムを選択しました。 +これらのアイテムはコピーされないまま、あなたのインベントリに移動されます。 アイテムを動かしますか? <usetemplate ignoretext="「コピー不可」のアイテムをオブジェクトから動かす前の警告" name="okcancelignore" notext="キャンセル" yestext="OK"/> </notification> <notification name="MoveInventoryFromScriptedObject"> - 「コピー不可」の持ち物アイテムを選択しました。 -これらのアイテムはコピーされずに、あなたの「持ち物」に移動されます。 -このオブジェクトはスクリプト付きなので、「持ち物」に移動させると + 「コピー不可」のインベントリアイテムを選択しました。 +これらのアイテムはコピーされずに、あなたのインベントリに移動されます。 +このオブジェクトはスクリプト付きなので、インベントリに移動させると スクリプトに誤動作が起きる可能性があります。 -持ち物アイテムを移動しますか? +インベントリアイテムを移動しますか? <usetemplate ignoretext="スクリプト入りのオブジェクトを壊す恐れのある「コピー不可」のアイテムを動かす前の警告" name="okcancelignore" notext="キャンセル" yestext="OK"/> </notification> <notification name="ClickActionNotPayable"> @@ -2068,7 +2068,7 @@ Linden Lab </notification> <notification name="ConfirmEmptyTrash"> ごみ箱の中身をすべて削除しますか? - <usetemplate ignoretext="持ち物のごみ箱フォルダを空にする前の確認" name="okcancelignore" notext="キャンセル" yestext="OK"/> + <usetemplate ignoretext="インベントリのごみ箱フォルダを空にする前の確認" name="okcancelignore" notext="キャンセル" yestext="OK"/> </notification> <notification name="ConfirmClearBrowserCache"> トラベル、Web、検索の履歴をすべて削除しますか? @@ -2252,7 +2252,7 @@ Web ページにリンクすると、他人がこの場所に簡単にアクセ 親エステート間では IM を送信できません。 </notification> <notification name="TransferInventoryAcrossParentEstates"> - 親エステート間で持ち物を移動することはできません。 + 親エステート間でインベントリを移動することはできません。 </notification> <notification name="UnableToLoadNotecard"> ノートカードを読み込めません。あとで再度お試しください。 @@ -2304,7 +2304,7 @@ Web ページにリンクすると、他人がこの場所に簡単にアクセ [NAME] は、あなたが渡したアイテムを受け取りました。 </notification> <notification name="InventoryDeclined"> - [NAME] は、持ち物の提供を断りました。 + [NAME] は、インベントリの提供を断りました。 </notification> <notification name="ObjectMessage"> [NAME]: [MESSAGE] @@ -2389,16 +2389,16 @@ Web ページにリンクすると、他人がこの場所に簡単にアクセ </form> </notification> <notification name="OwnedObjectsReturned"> - 選択した土地の区画上にあったあなたのオブジェクトは、すべてあなたの「持ち物」に返却されました。 + 選択した土地の区画上にあったあなたのオブジェクトは、すべてあなたのインベントリに返却されました。 </notification> <notification name="OtherObjectsReturned"> - [NAME] が所有する、選択した区画にあるオブジェクトは、所有者の持ち物に返却されました。 + [NAME] が所有する、選択した区画にあるオブジェクトは、所有者のインベントリに返却されました。 </notification> <notification name="OtherObjectsReturned2"> 「 [NAME] 」という名前の住人が所有する、選択した区画上のオブジェクトは、本人に返却されました。 </notification> <notification name="GroupObjectsReturned"> - 選択した区画上の、[GROUPNAME] というグループと共有していたオブジェクトは、それぞれの所有者の「持ち物」に返却されました。 + 選択した区画上の、[GROUPNAME] というグループと共有していたオブジェクトは、それぞれの所有者のインベントリに返却されました。 譲渡されていた「再販・プレゼント可」のオブジェクトは、以前の所有者に返却されました。 グループに譲渡されていた「再販・プレゼント不可」のオブジェクトは、削除されました。 </notification> @@ -2617,7 +2617,7 @@ Web ページにリンクすると、他人がこの場所に簡単にアクセ </notification> <notification name="OfferCallingCard"> [NAME] がコーリングカードを渡そうとしています。 -あなたの持ち物にブックマークが追加され、この住人に素早く IM を送ることができます。 +あなたのインベントリにブックマークが追加され、この住人に素早く IM を送ることができます。 <form name="form"> <button name="Accept" text="受け入れる"/> <button name="Decline" text="辞退"/> @@ -2679,16 +2679,16 @@ Web ページにリンクすると、他人がこの場所に簡単にアクセ [NAME] の「<nolink>[TITLE]</nolink>」 [MESSAGE] <form name="form"> - <button name="Mute" text="ブロック"/> - <button name="Ignore" text="無視する"/> + <button name="Client_Side_Mute" text="ブロック"/> + <button name="Client_Side_Ignore" text="無視"/> </form> </notification> <notification name="ScriptDialogGroup"> [GROUPNAME] の「<nolink>[TITLE]</nolink>」 [MESSAGE] <form name="form"> - <button name="Mute" text="ブロック"/> - <button name="Ignore" text="無視する"/> + <button name="Client_Side_Mute" text="ブロック"/> + <button name="Client_Side_Ignore" text="無視"/> </form> </notification> <notification name="BuyLindenDollarSuccess"> @@ -2707,7 +2707,7 @@ M キーを押して変更します。 <notification name="FirstSandbox"> ここはサンドボックスエリアです。住人が制作を学ぶことができます。 -ここで制作されたものは時間が経つと削除されます。制作したアイテムを右クリックして「取る」を選び、持ち物に入れてお持ち帰りするのをお忘れなく。 +ここで制作されたものは時間が経つと削除されます。制作したアイテムを右クリックして「取る」を選び、インベントリに入れてお持ち帰りするのをお忘れなく。 </notification> <notification name="MaxListSelectMessage"> このリストから [MAX_SELECT] 個までのアイテムを選択できます。 @@ -2728,7 +2728,7 @@ M キーを押して変更します。 [NAME] はお金を受け取り、自動的にブロックが解除されました。 </notification> <notification name="AutoUnmuteByInventory"> - [NAME] は持ち物を受け取り、自動的にブロックが解除されました。 + [NAME] はインベントリを受け取り、自動的にブロックが解除されました。 </notification> <notification name="VoiceInviteGroup"> [NAME] は [GROUP] のボイスチャットコールに参加しました。 @@ -3021,7 +3021,7 @@ M キーを押して変更します。 カメラの視点を変更するには、水平・垂直コントロールを使います。Escape を押すか、または歩行すると、視点がリセットされます。 </notification> <notification label="インベントリ" name="HintInventory"> - 持ち物にはあなたのアイテムがすべて含まれます。新しく追加されたアイテムは「最新」タブに一覧表示されています。 + インベントリにはあなたのアイテムがすべて含まれます。新しく追加されたアイテムは「最新」タブに一覧表示されています。 </notification> <notification label="あなたのリンデンドル" name="HintLindenDollar"> これがあなたの L$ 残高です。リンデンドルを購入するには「L$ の購入」をクリックします。 @@ -3129,7 +3129,7 @@ M キーを押して変更します。 <usetemplate name="okcancelbuttons" notext="終了しない" yestext="終了"/> </notification> <notification label="" name="NoInventory"> - 持ち物の表示はアドバンスモードでのみ利用できます。ログアウトしてモードを変更しますか? + インベントリの表示はアドバンスモードでのみ利用できます。ログアウトしてモードを変更しますか? <usetemplate name="okcancelbuttons" notext="終了しない" yestext="終了"/> </notification> <notification label="" name="NoAppearance"> diff --git a/indra/newview/skins/default/xui/ja/panel_group_control_panel.xml b/indra/newview/skins/default/xui/ja/panel_group_control_panel.xml index f7f575206a..49749732c9 100644 --- a/indra/newview/skins/default/xui/ja/panel_group_control_panel.xml +++ b/indra/newview/skins/default/xui/ja/panel_group_control_panel.xml @@ -1,8 +1,8 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_im_control_panel"> <layout_stack name="vertical_stack"> <layout_panel name="group_info_btn_panel"> - <button label="グループ情報" name="group_info_btn"/> + <button label="グループプロフィール" name="group_info_btn"/> </layout_panel> <layout_panel name="call_btn_panel"> <button label="グループコール" name="call_btn"/> diff --git a/indra/newview/skins/default/xui/ja/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/ja/panel_group_info_sidetray.xml index 85406702bc..7aa1aec6d0 100644 --- a/indra/newview/skins/default/xui/ja/panel_group_info_sidetray.xml +++ b/indra/newview/skins/default/xui/ja/panel_group_info_sidetray.xml @@ -1,5 +1,5 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="グループ情報" name="GroupInfo"> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="グループインベントリ" name="GroupInfo"> <panel.string name="default_needs_apply_text"> 保存していない変更があります </panel.string> diff --git a/indra/newview/skins/default/xui/ja/panel_group_notices.xml b/indra/newview/skins/default/xui/ja/panel_group_notices.xml index 96e0382975..ddad6c1f9b 100644 --- a/indra/newview/skins/default/xui/ja/panel_group_notices.xml +++ b/indra/newview/skins/default/xui/ja/panel_group_notices.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="通知" name="notices_tab"> <panel.string name="help_text"> 通知でメッセージを送ることができ、通知にアイテムを添付することができます。 @@ -39,10 +39,10 @@ <text name="string"> ここにアイテムをドラッグ&ドロップして添付してください: </text> - <button label="持ち物" name="open_inventory" tool_tip="持ち物を開きます"/> + <button label="インベントリ" name="open_inventory" tool_tip="インベントリを開きます"/> <button label="取り外す" label_selected="添付物を削除" name="remove_attachment" tool_tip="あなたの通知から添付されたアイテムを削除します"/> <button label="送信" label_selected="送信" name="send_notice"/> - <group_drop_target name="drop_target" tool_tip="持ち物のアイテムをこのボックスにドラッグして、通知と一緒に送ります。 添付するには、そのアイテムのコピーと再販・プレゼントの権限があなたにある必要があります。"/> + <group_drop_target name="drop_target" tool_tip="インベントリのアイテムをこのボックスにドラッグして、通知と一緒に送ります。 添付するには、そのアイテムのコピーと再販・プレゼントの権限があなたにある必要があります。"/> </panel> <panel label="過去の通知を表示" name="panel_view_past_notice"> <text name="lbl"> diff --git a/indra/newview/skins/default/xui/ja/panel_landmarks.xml b/indra/newview/skins/default/xui/ja/panel_landmarks.xml index e3b716c35b..24d6ff23ae 100644 --- a/indra/newview/skins/default/xui/ja/panel_landmarks.xml +++ b/indra/newview/skins/default/xui/ja/panel_landmarks.xml @@ -1,9 +1,9 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="Landmarks"> <accordion name="landmarks_accordion"> <accordion_tab name="tab_favorites" title="お気に入りバー"/> <accordion_tab name="tab_landmarks" title="マイ ランドマーク"/> - <accordion_tab name="tab_inventory" title="持ち物"/> + <accordion_tab name="tab_inventory" title="インベントリ"/> <accordion_tab name="tab_library" title="ライブラリ"/> </accordion> <panel name="bottom_panel"> diff --git a/indra/newview/skins/default/xui/ja/panel_main_inventory.xml b/indra/newview/skins/default/xui/ja/panel_main_inventory.xml index ff968696b7..f908262f4f 100644 --- a/indra/newview/skins/default/xui/ja/panel_main_inventory.xml +++ b/indra/newview/skins/default/xui/ja/panel_main_inventory.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="もの" name="main inventory panel"> <panel.string name="ItemcountFetching"> [ITEM_COUNT] 個のアイテムを取得中です... [FILTER] @@ -9,9 +9,9 @@ <text name="ItemcountText"> アイテム: </text> - <filter_editor label="持ち物をフィルター" name="inventory search editor"/> + <filter_editor label="インベントリをフィルター" name="inventory search editor"/> <tab_container name="inventory filter tabs"> - <inventory_panel label="持ち物" name="All Items"/> + <inventory_panel label="インベントリ" name="All Items"/> <recent_inventory_panel label="最新" name="Recent Items"/> </tab_container> <layout_stack name="bottom_panel"> diff --git a/indra/newview/skins/default/xui/ja/panel_me.xml b/indra/newview/skins/default/xui/ja/panel_me.xml index 896bbff0ee..3df1ae8048 100644 --- a/indra/newview/skins/default/xui/ja/panel_me.xml +++ b/indra/newview/skins/default/xui/ja/panel_me.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="マイ プロフィール" name="panel_me"> - <panel label="マイ ピック" name="panel_picks"/> + <panel label="マイ-ピック" name="panel_picks"/> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_nearby_chat.xml b/indra/newview/skins/default/xui/ja/panel_nearby_chat.xml index aca055bb43..4048b48d3a 100644 --- a/indra/newview/skins/default/xui/ja/panel_nearby_chat.xml +++ b/indra/newview/skins/default/xui/ja/panel_nearby_chat.xml @@ -1,4 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="nearby_chat"> - <check_box label="チャットを翻訳" name="translate_chat_checkbox"/> + <layout_stack name="stack"> + <layout_panel name="translate_chat_checkbox_lp"> + <check_box label="チャットを翻訳" name="translate_chat_checkbox"/> + </layout_panel> + </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_outbox_inventory.xml b/indra/newview/skins/default/xui/ja/panel_outbox_inventory.xml index 47f570ab86..1a14283113 100644 --- a/indra/newview/skins/default/xui/ja/panel_outbox_inventory.xml +++ b/indra/newview/skins/default/xui/ja/panel_outbox_inventory.xml @@ -1,2 +1,2 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<outbox_inventory_panel name="inventory_outbox" tool_tip="商品をここにドラッグアンドドロップすると、あなたの店頭に並びます"/> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<outbox_inventory_panel name="inventory_outbox" tool_tip="アイテムをここにドラッグアンドドロップすると、あなたの店頭に並びます"/> 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 6897660214..e89ce0c479 100644 --- a/indra/newview/skins/default/xui/ja/panel_outfit_edit.xml +++ b/indra/newview/skins/default/xui/ja/panel_outfit_edit.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <!-- Side tray Outfit Edit panel --> <panel label="アウトフットの編集" name="outfit_edit"> <string name="No Outfit" value="アウトフィットなし"/> @@ -30,7 +30,7 @@ <button label="さらに追加..." name="show_add_wearables_btn" tool_tip="開く/閉じる"/> </layout_panel> <layout_panel name="filter_panel"> - <filter_editor label="持ち物の着用物をフィルター" name="look_item_filter"/> + <filter_editor label="インベントリの着用物をフィルター" name="look_item_filter"/> </layout_panel> </layout_stack> </layout_panel> diff --git a/indra/newview/skins/default/xui/ja/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/ja/panel_outfits_inventory.xml index 2a0647653d..93df0ba2bd 100644 --- a/indra/newview/skins/default/xui/ja/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/ja/panel_outfits_inventory.xml @@ -1,10 +1,10 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="もの" name="Outfits"> <panel.string name="wear_outfit_tooltip"> 選択したアウトフィットを着用する </panel.string> <panel.string name="wear_items_tooltip"> - 選択した商品を着用 + 選択したアイテムを着用 </panel.string> <tab_container name="appearance_tabs"> <panel label="マイ アウトフィット" name="outfitslist_tab"/> diff --git a/indra/newview/skins/default/xui/ja/panel_people.xml b/indra/newview/skins/default/xui/ja/panel_people.xml index 1c90f7327e..88c31451b5 100644 --- a/indra/newview/skins/default/xui/ja/panel_people.xml +++ b/indra/newview/skins/default/xui/ja/panel_people.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <!-- Side tray panel --> <panel label="人" name="people_panel"> <string name="no_recent_people" value="最近交流した人はいません。 一緒に何かする仲間をお探しですか? [secondlife:///app/search/people 検索] か [secondlife:///app/worldmap 世界地図] をお試しください。"/> @@ -73,7 +73,7 @@ <button label="コール" name="call_btn" tool_tip="この住人にコールする"/> </layout_panel> <layout_panel name="share_btn_lp"> - <button label="共有" name="share_btn" tool_tip="「持ち物」のアイテムを共有する"/> + <button label="共有" name="share_btn" tool_tip="インベントリのアイテムを共有する"/> </layout_panel> <layout_panel name="teleport_btn_lp"> <button label="テレポート" name="teleport_btn" tool_tip="テレポートを送ります"/> @@ -81,7 +81,7 @@ </layout_stack> <layout_stack name="bottom_bar_ls1"> <layout_panel name="group_info_btn_lp"> - <button label="グループ情報" name="group_info_btn" tool_tip="グループ情報を表示します"/> + <button label="グループプロフィール" name="group_info_btn" tool_tip="グループプロフィールを表示します"/> </layout_panel> <layout_panel name="chat_btn_lp"> <button label="グループチャット" name="chat_btn" tool_tip="チャットを開始します"/> diff --git a/indra/newview/skins/default/xui/ja/panel_snapshot_inventory.xml b/indra/newview/skins/default/xui/ja/panel_snapshot_inventory.xml index 46f2b0a3f9..e496e6602b 100644 --- a/indra/newview/skins/default/xui/ja/panel_snapshot_inventory.xml +++ b/indra/newview/skins/default/xui/ja/panel_snapshot_inventory.xml @@ -1,10 +1,10 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_inventory"> <text name="title"> - 「持ち物」に保存 + インベントリに保存 </text> <text name="hint_lbl"> - 画像を持ち物に保存するには L$[UPLOAD_COST] の費用がかかります。画像をテクスチャとして保存するには平方形式の 1 つを選択してください。 + 画像をインベントリに保存するには L$[UPLOAD_COST] の費用がかかります。画像をテクスチャとして保存するには平方形式の 1 つを選択してください。 </text> <combo_box label="解像度" name="texture_size_combo"> <combo_box.item label="現在のウィンドウ" name="CurrentWindow"/> diff --git a/indra/newview/skins/default/xui/ja/panel_snapshot_options.xml b/indra/newview/skins/default/xui/ja/panel_snapshot_options.xml index cd5b7590ad..c3b1cd91e7 100644 --- a/indra/newview/skins/default/xui/ja/panel_snapshot_options.xml +++ b/indra/newview/skins/default/xui/ja/panel_snapshot_options.xml @@ -1,7 +1,7 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_options"> <button label="プロフィールフィードに投稿する" name="save_to_profile_btn"/> <button label="メール" name="save_to_email_btn"/> - <button label="持ち物に保存(L$[Amount])" name="save_to_inventory_btn"/> + <button label="インベントリに保存(L$[Amount])" name="save_to_inventory_btn"/> <button label="コンピューターに保存" name="save_to_computer_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/ja/role_actions.xml b/indra/newview/skins/default/xui/ja/role_actions.xml index c53ad838f7..896ed556ae 100644 --- a/indra/newview/skins/default/xui/ja/role_actions.xml +++ b/indra/newview/skins/default/xui/ja/role_actions.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <role_actions> <action_set description="これらの能力には、グループメンバーを追加、排除し、招待状なしに新メンバーの参加を認める権限が含まれます。" name="Membership"> <action description="このグループに人を招待" longdescription="「役割」セクションの「メンバー」タブ内にある「招待」ボタンを押して、このグループにメンバーを招待します。" name="member invite" value="1"/> @@ -51,7 +51,7 @@ <action description="グループ所有オブジェクトの返却" longdescription="グループ所有の区画上のオブジェクトのうち、グループ所有のオブジェクトを返却するには、「土地情報」>「オブジェクト」タブを使います。" name="land return group owned" value="48"/> <action description="グループに設定されているオブジェクトを返却" longdescription="グループ所有の区画上のオブジェクトのうち、グループに設定されているオブジェクトを返却するには、「土地情報」>「オブジェクト」タブを使います。" name="land return group set" value="33"/> <action description="非グループオブジェクトの返却" longdescription="グループ所有の区画上のオブジェクトのうち、グループ以外のオブジェクトを返却するには、「土地情報」>「オブジェクト」タブを使います。" name="land return non group" value="34"/> - <action description="リンデン製の植物を使用して景観作成" longdescription="リンデン製の樹木、植物、草を植える、景観づくりの能力です。 これらの植物はあなたの持ち物内の「ライブラリ」 > 「オブジェクト」フォルダにあります。「制作」メニューで作成することもできます。" name="land gardening" value="35"/> + <action description="リンデン製の植物を使用して景観作成" longdescription="リンデン製の樹木、植物、草を植える、景観づくりの能力です。 これらの植物はあなたのインベントリ内の「ライブラリ」 > 「オブジェクト」フォルダにあります。「制作」メニューで作成することもできます。" name="land gardening" value="35"/> </action_set> <action_set description="これらの「能力」には、グループ所有のオブジェクトを譲渡、修正、販売する権限が含まれます。 変更は「制作ツール」 > 「一般」タブで行います。 オブジェクトを右クリックして「編集」を開くと設定内容を確認できます。" name="Object Management"> <action description="グループにオブジェクトを譲渡" longdescription="「制作ツール」 > 「一般」タブで、オブジェクトをグループに譲渡します。" name="object deed" value="36"/> diff --git a/indra/newview/skins/default/xui/ja/sidepanel_inventory.xml b/indra/newview/skins/default/xui/ja/sidepanel_inventory.xml index a450d9b3c3..51d6d48f90 100644 --- a/indra/newview/skins/default/xui/ja/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/ja/sidepanel_inventory.xml @@ -14,7 +14,7 @@ <text name="inbox_fresh_new_count"> [NUM] 個の新アイテム </text> - <panel tool_tip="Drag and drop items to your inventory to manage and use them"> + <panel name="inbox_inventory_placeholder_panel" tool_tip="アイテムを使用するには、そのアイテムをインベントリにドラッグアンドドロップ"> <text name="inbox_inventory_placeholder"> マーケットプレイスから購入した商品はここに配達されます。 </text> @@ -28,7 +28,7 @@ <button label="プロフィール" name="info_btn" tool_tip="オブジェクトのプロフィールを表示する"/> </layout_panel> <layout_panel name="share_btn_lp"> - <button label="共有" name="share_btn" tool_tip="「持ち物」のアイテムを共有する"/> + <button label="共有" name="share_btn" tool_tip="インベントリのアイテムを共有する"/> </layout_panel> <layout_panel name="shop_btn_lp"> <button label="店" name="shop_btn" tool_tip="マーケットプレイスのサイトを開く"/> diff --git a/indra/newview/skins/default/xui/ja/sidepanel_item_info.xml b/indra/newview/skins/default/xui/ja/sidepanel_item_info.xml index d820994b59..6931e448b3 100644 --- a/indra/newview/skins/default/xui/ja/sidepanel_item_info.xml +++ b/indra/newview/skins/default/xui/ja/sidepanel_item_info.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="item properties" title="アイテムのプロフィール"> <panel.string name="unknown"> (不明) @@ -16,13 +16,13 @@ [year,datetime,local] [mth,datetime,local] [day,datetime,local] [wkday,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] </panel.string> <panel.string name="origin_inventory"> - (持ち物) + (インベントリ) </panel.string> <panel.string name="origin_inworld"> (インワールド) </panel.string> <text name="title" value="アイテムのプロフィール"/> - <text name="origin" value="(持ち物)"/> + <text name="origin" value="(インベントリ)"/> <scroll_container name="item_profile_scroll"> <panel label="" name="item_profile"> <text name="LabelItemNameTitle"> diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml index a1279510c7..680ef60890 100644 --- a/indra/newview/skins/default/xui/ja/strings.xml +++ b/indra/newview/skins/default/xui/ja/strings.xml @@ -346,7 +346,7 @@ support@secondlife.com にお問い合わせください。 これらオブジェクトの 1 つまたは複数は売り渡したり譲渡したりできないものです。 </string> <string name="TooltipOutboxNotInInventory"> - マーチャントアウトボックスでは、ご自分の持ち物からのアイテムしか受け入れることができません + マーチャントアウトボックスでは、ご自分のインベントリからのアイテムしか受け入れることができません </string> <string name="TooltipOutboxWorn"> 着用しているアイテムをマーチャントアウトボックスに入れることはできません @@ -835,6 +835,9 @@ support@secondlife.com にお問い合わせください。 <string name="anim_yes_head"> 頷く </string> + <string name="multiple_textures"> + 複数 + </string> <string name="texture_loading"> ローディング... </string> @@ -1232,10 +1235,10 @@ support@secondlife.com にお問い合わせください。 ここにランドマークをドラッグしてお気に入りに追加します。 </string> <string name="InventoryNoTexture"> - 「持ち物」内にこのテクスチャのコピーがありません + インベントリ内にこのテクスチャのコピーがありません </string> <string name="InventoryInboxNoItems"> - プレミアムギフトなど、受け取る特定のアイテムはここに表示されます。その後、それらのアイテムを自分の持ち物の中にドラッグできます。 + マーケットプレイスで購入した商品はここに表示されます。その後、アイテムをインベントリにドラッグすれば、それらのアイテムを使用できます。 </string> <string name="MarketplaceURL"> https://marketplace.[MARKETPLACE_DOMAIN_NAME]/ @@ -1270,25 +1273,25 @@ support@secondlife.com にお問い合わせください。 エラーなし </string> <string name="Marketplace Error Not Merchant"> - エラー:マーケットプレイスに商品を送る前に、あなた自身をマーチャント登録する必要があります(登録は無料です)。 + エラー:マーケットプレイスにアイテムを送る前に、あなた自身をマーチャント登録する必要があります(登録は無料です)。 </string> <string name="Marketplace Error Empty Folder"> エラー:このフォルダは空です。 </string> <string name="Marketplace Error Unassociated Products"> - エラー:あなたのマーチャントアカウントには、商品と無関係のアイテムが多すぎるため、このアイテムをアップロードできませんでした。このエラーを解消するには、マーケットプレイスのウェブサイトにログインし、商品に関係のないアイテムの数を減らしてください。 + エラー:あなたのマーチャントアカウントには、商品に関連付けられていないアイテムが多すぎるため、このアイテムをアップロードできませんでした。このエラーを解消するには、マーケットプレイスの Web サイトにログインし、関連付けられていないアイテムの数を減らしてください。 </string> <string name="Marketplace Error Object Limit"> - エラー:この商品に含まれるオブジェクトが多すぎます。オブジェクトをいくつかボックスにまとめ、オブジェクト数を200以下に減らしてください。 + エラー:このアイテムに含まれるオブジェクトが多すぎます。オブジェクトをいくつかボックスにまとめ、オブジェクト数を200以下に減らしてください。 </string> <string name="Marketplace Error Folder Depth"> - エラー:この商品はネスト入りフォルダの階層が多すぎます。ネスト入りフォルダを 3 階層以内にまとめ直してください。 + エラー:このアイテムはネスト入りフォルダの階層が多すぎます。ネスト入りフォルダを 3 階層以内にまとめ直してください。 </string> <string name="Marketplace Error Unsellable Item"> - エラー:この項目をマーケットプレイスで販売することはできません。 + エラー:このアイテムをマーケットプレイスで販売することはできません。 </string> <string name="Marketplace Error Internal Import"> - エラー:この商品に関して問題が発生しました。しばらくしてからお試しください。 + エラー:このアイテムに関して問題が発生しました。しばらくしてからお試しください。 </string> <string name="Open landmarks"> ランドマークを開く @@ -1337,7 +1340,7 @@ support@secondlife.com にお問い合わせください。 <string name="No Filters" value="いいえ "/> <string name="Since Logoff" value=" - ログオフ以来"/> <string name="InvFolder My Inventory"> - 持ち物 + インベントリ </string> <string name="InvFolder Library"> ライブラリ @@ -1370,7 +1373,7 @@ support@secondlife.com にお問い合わせください。 新規フォルダ </string> <string name="InvFolder Inventory"> - 持ち物 + インベントリ </string> <string name="InvFolder Uncompressed Images"> 圧縮されていない画像 @@ -3921,6 +3924,9 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ <string name="Saved_message"> (保存日時:[LONG_TIMESTAMP]) </string> + <string name="IM_unblock_only_groups_friends"> + このメッセージを表示するには、「環境設定」の「プライバシー」で「フレンドとグループ以外からはコールと IM を受信しない」チェックボックスをオフにします。 + </string> <string name="answered_call"> 相手がコールを受けました </string> @@ -3952,10 +3958,10 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ [AGENT_NAME] とコンファレンスする </string> <string name="inventory_item_offered-im"> - 持ち物アイテムを送りました + インベントリアイテムを送りました </string> <string name="share_alert"> - 持ち物からここにアイテムをドラッグします + インベントリからここにアイテムをドラッグします </string> <string name="no_session_message"> (IM セッションが存在しません) @@ -4839,7 +4845,7 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ ハウツー </string> <string name="Command_Inventory_Label"> - 持ち物 + インベントリ </string> <string name="Command_Map_Label"> 地図 @@ -4914,7 +4920,7 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ 一般的タスクの実行方法 </string> <string name="Command_Inventory_Tooltip"> - 持ち物を表示・使用 + インベントリを表示・使用 </string> <string name="Command_Map_Tooltip"> 世界地図 diff --git a/indra/newview/skins/default/xui/ja/teleport_strings.xml b/indra/newview/skins/default/xui/ja/teleport_strings.xml index 6c69c7a231..64f01f4030 100644 --- a/indra/newview/skins/default/xui/ja/teleport_strings.xml +++ b/indra/newview/skins/default/xui/ja/teleport_strings.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <teleport_messages> <message_set name="errors"> <message name="invalid_tport"> @@ -45,7 +45,7 @@ テレポートの目的地を見つけられません。目的地が一時的に利用できない状態か、またはすでに消滅している可能性があります。数分後にやり直してください。 </message> <message name="no_inventory_host"> - 持ち物システムは現在利用できません。 + インベントリシステムは現在利用できません。 </message> </message_set> <message_set name="progress"> diff --git a/indra/newview/skins/default/xui/pt/floater_animation_anim_preview.xml b/indra/newview/skins/default/xui/pt/floater_animation_anim_preview.xml new file mode 100644 index 0000000000..05326d8594 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/floater_animation_anim_preview.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Anim Preview" title="ANIMATION.ANIM"> + <text name="name_label"> + Nome: + </text> + <text name="description_label"> + Descrição: + </text> + <button label="Envio (L$[AMOUNT])" name="ok_btn"/> + <button label="Cancelar" label_selected="Cancelar" name="cancel_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/pt/floater_animation_bvh_preview.xml b/indra/newview/skins/default/xui/pt/floater_animation_bvh_preview.xml new file mode 100644 index 0000000000..5cae581045 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/floater_animation_bvh_preview.xml @@ -0,0 +1,186 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Animation Preview"> + <floater.string name="failed_to_initialize"> + Falha ao iniciar animação + </floater.string> + <floater.string name="anim_too_long"> + O arquivo de animação possui [LENGTH] segundos de duração. + +A duração máxima da animação é de [MAX_LENGTH] segundos. + </floater.string> + <floater.string name="failed_file_read"> + Não foi possível ler o arquivo de animação. + +[STATUS] + </floater.string> + <floater.string name="E_ST_OK"> + Ok + </floater.string> + <floater.string name="E_ST_EOF"> + Fim de arquivo prematuro. + </floater.string> + <floater.string name="E_ST_NO_CONSTRAINT"> + Impossível ler definição constraint. + </floater.string> + <floater.string name="E_ST_NO_FILE"> + Impossível abrir arquivo BVH. + </floater.string> + <floater.string name="E_ST_NO_HIER"> + Invalid HIERARCHY header. + </floater.string> + <floater.string name="E_ST_NO_JOINT"> + RAIZ ou JUNTA não encontrados. + </floater.string> + <floater.string name="E_ST_NO_NAME"> + Impossível obter nome JOINT. + </floater.string> + <floater.string name="E_ST_NO_OFFSET"> + Impossível localizar OFFSET. + </floater.string> + <floater.string name="E_ST_NO_CHANNELS"> + Impossível localizar CHANNELS. + </floater.string> + <floater.string name="E_ST_NO_ROTATION"> + Impossível obter ordem de rotação. + </floater.string> + <floater.string name="E_ST_NO_AXIS"> + Impossível obter eixo de rotação. + </floater.string> + <floater.string name="E_ST_NO_MOTION"> + Impossível localizar MOTION. + </floater.string> + <floater.string name="E_ST_NO_FRAMES"> + Impossível determinar número de quadros. + </floater.string> + <floater.string name="E_ST_NO_FRAME_TIME"> + Impossível determinar tempo dos quadros. + </floater.string> + <floater.string name="E_ST_NO_POS"> + Impossível definir posicionamento. + </floater.string> + <floater.string name="E_ST_NO_ROT"> + Impossível definir valores da rotação. + </floater.string> + <floater.string name="E_ST_NO_XLT_FILE"> + Impossível abrir arquivo de tradução. + </floater.string> + <floater.string name="E_ST_NO_XLT_HEADER"> + Impossível ler cabeçalho de tradução. + </floater.string> + <floater.string name="E_ST_NO_XLT_NAME"> + Impossível ler nomes traduzidos. + </floater.string> + <floater.string name="E_ST_NO_XLT_IGNORE"> + Impossível obter valor traduzido a ignorar. + </floater.string> + <floater.string name="E_ST_NO_XLT_RELATIVE"> + Impossível obter valor traduzido relativo. + </floater.string> + <floater.string name="E_ST_NO_XLT_OUTNAME"> + Impossível obter valor traduzido. + </floater.string> + <floater.string name="E_ST_NO_XLT_MATRIX"> + Impossível ler matriz de tradução. + </floater.string> + <floater.string name="E_ST_NO_XLT_MERGECHILD"> + Impossível obter nome mergechild. + </floater.string> + <floater.string name="E_ST_NO_XLT_MERGEPARENT"> + Impossível obter nome mergeparent. + </floater.string> + <floater.string name="E_ST_NO_XLT_PRIORITY"> + Impossível obter valor prioritário. + </floater.string> + <floater.string name="E_ST_NO_XLT_LOOP"> + Impossível obter valor do loop. + </floater.string> + <floater.string name="E_ST_NO_XLT_EASEIN"> + Impossível obter valor easeIn. + </floater.string> + <floater.string name="E_ST_NO_XLT_EASEOUT"> + Impossível obter valor easeOut. + </floater.string> + <floater.string name="E_ST_NO_XLT_HAND"> + Impossível obter valor de morph da mão. + </floater.string> + <floater.string name="E_ST_NO_XLT_EMOTE"> + Impossível ler nome do emote. + </floater.string> + <floater.string name="E_ST_BAD_ROOT"> + Nome da junta incorreto, use "quadril". + </floater.string> + <text name="name_label"> + Nome: + </text> + <text name="description_label"> + Descrição: + </text> + <spinner label="Prioridade" name="priority" tool_tip="Controla quais animações podem ser interrompidas por esta animação"/> + <check_box label="Loop" name="loop_check" tool_tip="Executa esta animação sem parar"/> + <spinner label="Dentro(%)" name="loop_in_point" tool_tip="Define o ponto em que a animação em loop reinicia"/> + <spinner label="Fora(%)" name="loop_out_point" tool_tip="Define o ponto em que a animação em loop acaba"/> + <text name="hand_label"> + Pose das mãos + </text> + <combo_box name="hand_pose_combo" tool_tip="Controla os gestos das mãos durante a animação"> + <combo_box.item label="Abrir" name="Spread"/> + <combo_box.item label="Relaxado" name="Relaxed"/> + <combo_box.item label="Apontar ambas" name="PointBoth"/> + <combo_box.item label="Punho" name="Fist"/> + <combo_box.item label="E relaxada" name="RelaxedLeft"/> + <combo_box.item label="Apontar E" name="PointLeft"/> + <combo_box.item label="Punho E" name="FistLeft"/> + <combo_box.item label="D relaxada" name="RelaxedRight"/> + <combo_box.item label="Apontar D" name="PointRight"/> + <combo_box.item label="Punho D" name="FistRight"/> + <combo_box.item label="Saudação D" name="SaluteRight"/> + <combo_box.item label="Escrevendo" name="Typing"/> + <combo_box.item label="Paz D" name="PeaceRight"/> + </combo_box> + <text name="emote_label"> + Expressão + </text> + <combo_box name="emote_combo" tool_tip="Controla as expressões faciais durante a animação"> + <item label="(nenhum)" name="[None]" value=""/> + <item label="Aaaaah" name="Aaaaah" value="Aaaaah"/> + <item label="Com medo" name="Afraid" value="Com medo"/> + <item label="Bravo" name="Angry" value="Bravo"/> + <item label="Sorriso contagiante" name="BigSmile" value="Sorriso contagiante"/> + <item label="À toa" name="Bored" value="À toa"/> + <item label="Chorar" name="Cry" value="Chorar"/> + <item label="Desdenho" name="Disdain" value="Desdenho"/> + <item label="Com vergonha" name="Embarrassed" value="Com vergonha"/> + <item label="Franzir testa" name="Frown" value="Franzir testa"/> + <item label="Beijo" name="Kiss" value="Beijo"/> + <item label="Rir" name="Laugh" value="Rir"/> + <item label="Mostrar a língua" name="Plllppt" value="Mostrar a língua"/> + <item label="Asco" name="Repulsed" value="Asco"/> + <item label="Triste" name="Sad" value="Triste"/> + <item label="Encolher os ombros" name="Shrug" value="Encolher os ombros"/> + <item label="Sorriso" name="Smile" value="Sorriso"/> + <item label="Surpresa" name="Surprise" value="Surpresa"/> + <item label="Piscar" name="Wink" value="Piscar"/> + <item label="Preocupado" name="Worry" value="Preocupado"/> + </combo_box> + <text name="preview_label"> + Visualizar enquanto + </text> + <combo_box name="preview_base_anim" tool_tip="Use para testar o comportamento de sua animação enquanto seu avatar executa ações comuns."> + <item label="Em pé" name="Standing" value="Em pé"/> + <item label="Andar" name="Walking" value="Andar"/> + <item label="Sentado" name="Sitting" value="Sentado"/> + <item label="Voar" name="Flying" value="Voar"/> + </combo_box> + <spinner label="Aproximação (seg)" name="ease_in_time" tool_tip="Tempo (em segundos) da transição inicial da animação"/> + <spinner label="Afastamento (seg)" name="ease_out_time" tool_tip="Tempo (em segundos) da transição de saída da animação"/> + <button name="play_btn" tool_tip="Executar animação"/> + <button name="pause_btn" tool_tip="Pausar a animação"/> + <button name="stop_btn" tool_tip="Interromper a execução da animação"/> + <text name="bad_animation_text"> + Não foi possível ler o arquivo de animação. + +Recomendamos que os arquivos BVH sejam exportados do Poser 4. + </text> + <button label="Envio (L$[AMOUNT])" name="ok_btn"/> + <button label="Cancelar" name="cancel_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/pt/floater_preview_animation.xml b/indra/newview/skins/default/xui/pt/floater_preview_animation.xml index b650b7945c..19474d8099 100644 --- a/indra/newview/skins/default/xui/pt/floater_preview_animation.xml +++ b/indra/newview/skins/default/xui/pt/floater_preview_animation.xml @@ -6,6 +6,6 @@ <text name="desc txt"> Descrição: </text> - <button label="Tocar inworld" label_selected="Parar" name="Anim play btn" tool_tip="Tocar essa animação de forma que outros possam ver" width="131"/> - <button label="Executar localmente" label_selected="Parar" left="162" name="Anim audition btn" tool_tip="Tocar essa animação de forma que apenas você possa ver" width="120"/> + <button label="Tocar inworld" label_selected="Parar" name="Inworld" tool_tip="Executar essa animação de forma que outros possam ver"/> + <button label="Tocar localmente" label_selected="Parar" name="Locally" tool_tip="Executar animação de forma que apenas você possa ver"/> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_test_text_vertical_aligment.xml b/indra/newview/skins/default/xui/pt/floater_test_text_vertical_aligment.xml new file mode 100644 index 0000000000..dd282bf1fc --- /dev/null +++ b/indra/newview/skins/default/xui/pt/floater_test_text_vertical_aligment.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Test Floater" title="JANELA DE TESTE"/> diff --git a/indra/newview/skins/default/xui/pt/floater_tools.xml b/indra/newview/skins/default/xui/pt/floater_tools.xml index f35f31f5f7..4b31833602 100644 --- a/indra/newview/skins/default/xui/pt/floater_tools.xml +++ b/indra/newview/skins/default/xui/pt/floater_tools.xml @@ -1,5 +1,20 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="toolbox floater" short_title="BUILD TOOLS" title=""> + <floater.string name="grid_screen_text"> + Tela + </floater.string> + <floater.string name="grid_local_text"> + Local + </floater.string> + <floater.string name="grid_world_text"> + Mundo + </floater.string> + <floater.string name="grid_reference_text"> + Referência + </floater.string> + <floater.string name="grid_attachment_text"> + Anexo + </floater.string> <floater.string name="status_rotate"> Arrastar as faixas coloridas para girar o objeto </floater.string> @@ -63,7 +78,12 @@ </text> <check_box initial_value="true" label="Esticar texturas" name="checkbox stretch textures"/> <check_box initial_value="true" label="Ajustar" name="checkbox snap to grid"/> - <button label="Opções..." label_selected="Opções..." name="Options..." tool_tip="Mais opções de grade"/> + <combo_box name="combobox grid mode" tool_tip="Selecione o tipo de régua da grade onde o objeto será colocado"> + <combo_box.item label="Mundo" name="World"/> + <combo_box.item label="Local" name="Local"/> + <combo_box.item label="Referência" name="Reference"/> + </combo_box> + <button label="" label_selected="Opções..." name="Options..." tool_tip="Mais opções de grade"/> <button label="" label_selected="" name="ToolCube" tool_tip="Cubo"/> <button label="" label_selected="" name="ToolPrism" tool_tip="Prisma"/> <button label="" label_selected="" name="ToolPyramid" tool_tip="Pirâmide"/> diff --git a/indra/newview/skins/default/xui/pt/floater_voice_effect.xml b/indra/newview/skins/default/xui/pt/floater_voice_effect.xml index 4f01600d9f..b29ca3d699 100644 --- a/indra/newview/skins/default/xui/pt/floater_voice_effect.xml +++ b/indra/newview/skins/default/xui/pt/floater_voice_effect.xml @@ -42,13 +42,16 @@ <string name="effect_Demon"> Demônio </string> + <string name="effect_Female Elf"> + Elfa + </string> <string name="effect_Flirty"> Paquerador </string> <string name="effect_Foxy"> Sensual </string> - <string name="effect_Halloween_2010_Bonus"> + <string name="effect_Halloween 2010 Bonus"> Bônus_Halloween_2010 </string> <string name="effect_Helium"> @@ -57,9 +60,18 @@ <string name="effect_Husky"> Rouco </string> + <string name="effect_Husky Whisper"> + Sussurro rouco + </string> <string name="effect_Intercom"> Interfone </string> + <string name="effect_Julia"> + Julia + </string> + <string name="effect_Lo Lilt"> + Cantarolado baixo + </string> <string name="effect_Macho"> Macho </string> @@ -69,6 +81,9 @@ <string name="effect_Mini"> Mini </string> + <string name="effect_Model"> + Modelo + </string> <string name="effect_Nano"> Nano </string> @@ -90,6 +105,9 @@ <string name="effect_Roxanne"> Roxanne </string> + <string name="effect_Rumble"> + Ronco + </string> <string name="effect_Sabrina"> Sabrina </string> @@ -102,6 +120,9 @@ <string name="effect_Shorty"> Baixinho </string> + <string name="effect_Smaller"> + Menor + </string> <string name="effect_Sneaky"> Sorrateiro </string> diff --git a/indra/newview/skins/default/xui/pt/menu_inventory.xml b/indra/newview/skins/default/xui/pt/menu_inventory.xml index 24a2f713fd..09e1fbf72e 100644 --- a/indra/newview/skins/default/xui/pt/menu_inventory.xml +++ b/indra/newview/skins/default/xui/pt/menu_inventory.xml @@ -59,6 +59,7 @@ <menu_item_call label="Propriedades" name="Properties"/> <menu_item_call label="Renomear" name="Rename"/> <menu_item_call label="Copiar item UUID" name="Copy Asset UUID"/> + <menu_item_call label="Cortar" name="Cut"/> <menu_item_call label="Copiar" name="Copy"/> <menu_item_call label="Colar" name="Paste"/> <menu_item_call label="Colar como link" name="Paste As Link"/> diff --git a/indra/newview/skins/default/xui/pt/menu_viewer.xml b/indra/newview/skins/default/xui/pt/menu_viewer.xml index 8960ffec81..d7d5d59a33 100644 --- a/indra/newview/skins/default/xui/pt/menu_viewer.xml +++ b/indra/newview/skins/default/xui/pt/menu_viewer.xml @@ -21,6 +21,7 @@ <menu_item_call label="Ocupado" name="Set Busy"/> </menu> <menu_item_call label="Comprar L$..." name="Buy and Sell L$"/> + <menu_item_call label="Caixa de saída do lojista..." name="MerchantOutbox"/> <menu_item_call label="Painel da conta..." name="Manage My Account"> <menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=pt"/> </menu_item_call> @@ -334,8 +335,15 @@ </menu> <menu_item_check label="Texturas HTTP" name="HTTP Textures"/> <menu_item_check label="Inventário HTTP" name="HTTP Inventory"/> + <menu_item_call label="Habilitar Visual Leak Detector" name="Enable Visual Leak Detector"/> <menu_item_check label="Console Window on next Run" name="Console Window"/> - <menu label="Configurar nível de registro em log" name="Set Logging Level"/> + <menu label="Configurar nível de registro em log" name="Set Logging Level"> + <menu_item_check label="Depurar" name="Debug"/> + <menu_item_check label="Info" name="Info"/> + <menu_item_check label="Aviso" name="Warning"/> + <menu_item_check label="Error" name="Error"/> + <menu_item_check label="Nenhum" name="None"/> + </menu> <menu_item_call label="Request Admin Status" name="Request Admin Options"/> <menu_item_call label="Sair do modo admin" name="Leave Admin Options"/> <menu_item_check label="Mostrar menu admin" name="View Admin Options"/> diff --git a/indra/newview/skins/default/xui/pt/notifications.xml b/indra/newview/skins/default/xui/pt/notifications.xml index 20d59aa0f8..3b39c0f92c 100644 --- a/indra/newview/skins/default/xui/pt/notifications.xml +++ b/indra/newview/skins/default/xui/pt/notifications.xml @@ -664,7 +664,7 @@ Esperada [VALIDS] Incapaz de criar arquivo de saída: [FILE] </notification> <notification name="DoNotSupportBulkAnimationUpload"> - O [APP_NAME] ainda não faz o upload de vários arquivos de animação de uma vez. + O [APP_NAME] ainda não faz o upload de vários arquivos de animação no formato BVH de uma vez. </notification> <notification name="CannotUploadReason"> Incapaz de carregar [FILE] devido ao seguinte motivo: [REASON] @@ -2612,16 +2612,16 @@ Deseja aceitar? '<nolink>[TITLE]</nolink>' de [NAME] [MESSAGE] <form name="form"> - <button name="Mute" text="Bloquear"/> - <button name="Ignore" text="Ignorar"/> + <button name="Client_Side_Mute" text="Bloquear"/> + <button name="Client_Side_Ignore" text="Ignorar"/> </form> </notification> <notification name="ScriptDialogGroup"> <nolink>[TITLE]</nolink>' de [GROUPNAME]' [MESSAGE] <form name="form"> - <button name="Mute" text="Bloquear"/> - <button name="Ignore" text="Ignorar"/> + <button name="Client_Side_Mute" text="Bloquear"/> + <button name="Client_Side_Ignore" text="Ignorar"/> </form> </notification> <notification name="BuyLindenDollarSuccess"> diff --git a/indra/newview/skins/default/xui/pt/panel_nearby_chat.xml b/indra/newview/skins/default/xui/pt/panel_nearby_chat.xml index 15470dc94a..6828d41dee 100644 --- a/indra/newview/skins/default/xui/pt/panel_nearby_chat.xml +++ b/indra/newview/skins/default/xui/pt/panel_nearby_chat.xml @@ -1,4 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="nearby_chat"> - <check_box label="Traduzir bate-papo" name="translate_chat_checkbox"/> + <layout_stack name="stack"> + <layout_panel name="translate_chat_checkbox_lp"> + <check_box label="Traduzir bate-papo" name="translate_chat_checkbox"/> + </layout_panel> + </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/pt/sidepanel_inventory.xml b/indra/newview/skins/default/xui/pt/sidepanel_inventory.xml index 72baf3a5c3..7908ea5f3a 100644 --- a/indra/newview/skins/default/xui/pt/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/pt/sidepanel_inventory.xml @@ -14,9 +14,9 @@ <text name="inbox_fresh_new_count"> [NUM] novo(s) </text> - <panel tool_tip="Drag and drop items to your inventory to manage and use them"> + <panel name="inbox_inventory_placeholder_panel" tool_tip="Arraste e solte itens para o seu inventário para usá-los"> <text name="inbox_inventory_placeholder"> - Compras do marketplace serão entregues aqui. + As compras do marketplace serão entregues aqui. </text> </panel> </panel> diff --git a/indra/newview/skins/default/xui/pt/strings.xml b/indra/newview/skins/default/xui/pt/strings.xml index 7fb3b3e6ee..342a52356b 100644 --- a/indra/newview/skins/default/xui/pt/strings.xml +++ b/indra/newview/skins/default/xui/pt/strings.xml @@ -784,6 +784,9 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para <string name="anim_yes_head"> Sim </string> + <string name="multiple_textures"> + Múltiplo + </string> <string name="texture_loading"> Carregando... </string> @@ -1181,7 +1184,7 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para Você não possui uma cópia desta textura no seu inventário </string> <string name="InventoryInboxNoItems"> - Alguns itens recebidos, como os brindes premium, aparecerão aqui. Você pode arrastá-los para o seu inventário. + Suas compras do Marketplace aparecerão aqui. Depois, você poderá arrastá-las para seu inventário para usá-las. </string> <string name="MarketplaceURL"> https://marketplace.[MARKETPLACE_DOMAIN_NAME]/ @@ -3797,6 +3800,9 @@ If you continue to receive this message, contact the [SUPPORT_SITE]. <string name="Saved_message"> (Salvo em [LONG_TIMESTAMP]) </string> + <string name="IM_unblock_only_groups_friends"> + Para visualizar esta mensagem, você deve desmarcar "Apenas amigos e grupos podem me ligar ou enviar MIs" em Preferências/Privacidade. + </string> <string name="answered_call"> Ligação atendida </string> diff --git a/indra/newview/skins/default/xui/ru/floater_animation_anim_preview.xml b/indra/newview/skins/default/xui/ru/floater_animation_anim_preview.xml new file mode 100644 index 0000000000..711afc2717 --- /dev/null +++ b/indra/newview/skins/default/xui/ru/floater_animation_anim_preview.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Anim Preview" title="ANIMATION.ANIM"> + <text name="name_label"> + Название: + </text> + <text name="description_label"> + Описание: + </text> + <button label="Передать (L$[AMOUNT])" name="ok_btn"/> + <button label="Отмена" label_selected="Отмена" name="cancel_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/ru/floater_animation_bvh_preview.xml b/indra/newview/skins/default/xui/ru/floater_animation_bvh_preview.xml new file mode 100644 index 0000000000..8ad9d8657a --- /dev/null +++ b/indra/newview/skins/default/xui/ru/floater_animation_bvh_preview.xml @@ -0,0 +1,186 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Animation Preview"> + <floater.string name="failed_to_initialize"> + Невозможно инициализировать движение + </floater.string> + <floater.string name="anim_too_long"> + Длина файла анимации: [LENGTH] с. + +Максимальная длина анимации: [MAX_LENGTH] с. + </floater.string> + <floater.string name="failed_file_read"> + Невозможно прочитать файл анимации. + +[STATUS] + </floater.string> + <floater.string name="E_ST_OK"> + ОК + </floater.string> + <floater.string name="E_ST_EOF"> + Преждевременный конец файла. + </floater.string> + <floater.string name="E_ST_NO_CONSTRAINT"> + Не могу прочитать определение ограничений. + </floater.string> + <floater.string name="E_ST_NO_FILE"> + Не удалось открыть BVH-файл. + </floater.string> + <floater.string name="E_ST_NO_HIER"> + Неправильный заголовок HIERARCHY. + </floater.string> + <floater.string name="E_ST_NO_JOINT"> + Не удалось найти ROOT или JOINT. + </floater.string> + <floater.string name="E_ST_NO_NAME"> + Не удалось получить имя JOINT. + </floater.string> + <floater.string name="E_ST_NO_OFFSET"> + Не удалось найти OFFSET. + </floater.string> + <floater.string name="E_ST_NO_CHANNELS"> + Не удалось найти CHANNELS. + </floater.string> + <floater.string name="E_ST_NO_ROTATION"> + Не удалось получить порядок вращения. + </floater.string> + <floater.string name="E_ST_NO_AXIS"> + Не удалось получить оси вращения. + </floater.string> + <floater.string name="E_ST_NO_MOTION"> + Не удалось найти MOTION. + </floater.string> + <floater.string name="E_ST_NO_FRAMES"> + Не удалось получить количество кадров. + </floater.string> + <floater.string name="E_ST_NO_FRAME_TIME"> + Не удалось получить время кадра. + </floater.string> + <floater.string name="E_ST_NO_POS"> + Не удалось получить значения position. + </floater.string> + <floater.string name="E_ST_NO_ROT"> + Не удалось получить значения rotation. + </floater.string> + <floater.string name="E_ST_NO_XLT_FILE"> + Не удалось открыть файл перевода. + </floater.string> + <floater.string name="E_ST_NO_XLT_HEADER"> + Не удалось прочитать заголовок перевода. + </floater.string> + <floater.string name="E_ST_NO_XLT_NAME"> + Не удалось прочитать имена перевода. + </floater.string> + <floater.string name="E_ST_NO_XLT_IGNORE"> + Не удалось прочитать значение перевода ignore. + </floater.string> + <floater.string name="E_ST_NO_XLT_RELATIVE"> + Не удалось прочитать значение перевода relative. + </floater.string> + <floater.string name="E_ST_NO_XLT_OUTNAME"> + Не удалось прочитать значение перевода outname. + </floater.string> + <floater.string name="E_ST_NO_XLT_MATRIX"> + Не удалось прочитать матрицу перевода. + </floater.string> + <floater.string name="E_ST_NO_XLT_MERGECHILD"> + Не удалось получить имя mergechild. + </floater.string> + <floater.string name="E_ST_NO_XLT_MERGEPARENT"> + Не удалось получить имя mergeparent. + </floater.string> + <floater.string name="E_ST_NO_XLT_PRIORITY"> + Не удалось получить значение priority. + </floater.string> + <floater.string name="E_ST_NO_XLT_LOOP"> + Не удалось получить значение loop. + </floater.string> + <floater.string name="E_ST_NO_XLT_EASEIN"> + Не удалось получить значения easeIn. + </floater.string> + <floater.string name="E_ST_NO_XLT_EASEOUT"> + Не удалось получить значения easeOut. + </floater.string> + <floater.string name="E_ST_NO_XLT_HAND"> + Не удалось получить значение hand morph. + </floater.string> + <floater.string name="E_ST_NO_XLT_EMOTE"> + Не удалось прочитать имя emote. + </floater.string> + <floater.string name="E_ST_BAD_ROOT"> + Неверное имя корневого соединения, должно быть «hip». + </floater.string> + <text name="name_label"> + Название: + </text> + <text name="description_label"> + Описание: + </text> + <spinner label="Приоритет" name="priority" tool_tip="Управляет тем, как другие анимации могут перекрываться этой"/> + <check_box label="Цикл" name="loop_check" tool_tip="Делает анимацию зацикленной"/> + <spinner label="Начало(%)" name="loop_in_point" tool_tip="Устанавливает точку возврата цикла"/> + <spinner label="Конец(%)" name="loop_out_point" tool_tip="Устанавливает точку конца цикла"/> + <text name="hand_label"> + Положение пальцев + </text> + <combo_box name="hand_pose_combo" tool_tip="Контролирует положение пальцев во время анимации"> + <combo_box.item label="Разведены" name="Spread"/> + <combo_box.item label="Расслаблены" name="Relaxed"/> + <combo_box.item label="Указывают" name="PointBoth"/> + <combo_box.item label="Сжаты в кулак" name="Fist"/> + <combo_box.item label="Левые расслаблены" name="RelaxedLeft"/> + <combo_box.item label="Левые указывают" name="PointLeft"/> + <combo_box.item label="Левые в кулак" name="FistLeft"/> + <combo_box.item label="Правые расслаблены" name="RelaxedRight"/> + <combo_box.item label="Правые указывают" name="PointRight"/> + <combo_box.item label="Правые в кулак" name="FistRight"/> + <combo_box.item label="Правые в приветствии" name="SaluteRight"/> + <combo_box.item label="Печатают" name="Typing"/> + <combo_box.item label="Правые «V»" name="PeaceRight"/> + </combo_box> + <text name="emote_label"> + Выражение лица + </text> + <combo_box name="emote_combo" tool_tip="Контролирует выражение лица во время анимации"> + <item label="(нет)" name="[None]" value=""/> + <item label="Ааааах" name="Aaaaah" value="Ааааах"/> + <item label="Боится" name="Afraid" value="Боится"/> + <item label="Злится" name="Angry" value="Злится"/> + <item label="Широко улыбается" name="BigSmile" value="Широко улыбается"/> + <item label="Скучает" name="Bored" value="Скучает"/> + <item label="Плачет" name="Cry" value="Плачет"/> + <item label="Презирает" name="Disdain" value="Презирает"/> + <item label="Смущается" name="Embarrassed" value="Смущается"/> + <item label="Хмурится" name="Frown" value="Хмурится"/> + <item label="Целует" name="Kiss" value="Целует"/> + <item label="Смеется" name="Laugh" value="Смеется"/> + <item label="Дразнится" name="Plllppt" value="Дразнится"/> + <item label="Не соглашается" name="Repulsed" value="Не соглашается"/> + <item label="Грустит" name="Sad" value="Грустит"/> + <item label="Не понимает" name="Shrug" value="Не понимает"/> + <item label="Улыбается" name="Smile" value="Улыбается"/> + <item label="Удивляется" name="Surprise" value="Удивляется"/> + <item label="Подмигивает" name="Wink" value="Подмигивает"/> + <item label="Беспокоится" name="Worry" value="Беспокоится"/> + </combo_box> + <text name="preview_label"> + Просмотр во время + </text> + <combo_box name="preview_base_anim" tool_tip="Просмотр вашей анимации во время выполнения аватаром действий."> + <item label="Стояние" name="Standing" value="Стояние"/> + <item label="Ходьба" name="Walking" value="Ходьба"/> + <item label="Сидение" name="Sitting" value="Сидение"/> + <item label="Полет" name="Flying" value="Полет"/> + </combo_box> + <spinner label="Вход (сек.)" name="ease_in_time" tool_tip="Количество времени (в секундах) для входа в стартовое положение"/> + <spinner label="Выход (сек.)" name="ease_out_time" tool_tip="Количество времени (в секундах) для выхода из анимации"/> + <button name="play_btn" tool_tip="Проиграть анимацию"/> + <button name="pause_btn" tool_tip="Приостановить анимацию"/> + <button name="stop_btn" tool_tip="Остановить проигрывание анимации"/> + <text name="bad_animation_text"> + Невозможно прочитать файл анимации. + +Рекомендуется использовать BVH-файлы, экспортированные из Poser 4. + </text> + <button label="Передать (L$[AMOUNT])" name="ok_btn"/> + <button label="Отмена" name="cancel_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/ru/floater_preview_animation.xml b/indra/newview/skins/default/xui/ru/floater_preview_animation.xml index a1fabedb85..22c6bc5901 100644 --- a/indra/newview/skins/default/xui/ru/floater_preview_animation.xml +++ b/indra/newview/skins/default/xui/ru/floater_preview_animation.xml @@ -6,6 +6,6 @@ <text name="desc txt"> Описание: </text> - <button label="Проиграть для всех" label_selected="Стоп" name="Anim play btn" tool_tip="Проигрывание этой анимации могут видеть другие участники"/> - <button label="Проиграть для себя" label_selected="Стоп" name="Anim audition btn" tool_tip="Проигрывание этой анимации можете видеть только вы"/> + <button label="Проиграть для всех" label_selected="Стоп" name="Inworld" tool_tip="Проигрывание этой анимации могут видеть другие участники"/> + <button label="Проиграть для себя" label_selected="Стоп" name="Locally" tool_tip="Проигрывание этой анимации можете видеть только вы"/> </floater> diff --git a/indra/newview/skins/default/xui/ru/floater_test_text_vertical_aligment.xml b/indra/newview/skins/default/xui/ru/floater_test_text_vertical_aligment.xml new file mode 100644 index 0000000000..d0bd86160e --- /dev/null +++ b/indra/newview/skins/default/xui/ru/floater_test_text_vertical_aligment.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Test Floater" title="ТЕСТИРОВАТЬ ОКНО"/> diff --git a/indra/newview/skins/default/xui/ru/floater_tools.xml b/indra/newview/skins/default/xui/ru/floater_tools.xml index eb9083f7fc..3d7d1198f0 100644 --- a/indra/newview/skins/default/xui/ru/floater_tools.xml +++ b/indra/newview/skins/default/xui/ru/floater_tools.xml @@ -1,5 +1,20 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="toolbox floater" short_title="ИНСТРУМЕНТЫ ДЛЯ СТРОИТЕЛЬСТВА"> + <floater.string name="grid_screen_text"> + Экран + </floater.string> + <floater.string name="grid_local_text"> + Локальная + </floater.string> + <floater.string name="grid_world_text"> + Мировая + </floater.string> + <floater.string name="grid_reference_text"> + Точка отсчета + </floater.string> + <floater.string name="grid_attachment_text"> + Присоединение + </floater.string> <floater.string name="status_rotate"> Перетягивайте цветные полосы для вращения объекта </floater.string> @@ -63,7 +78,12 @@ </text> <check_box initial_value="истина" label="Растягивать текстуры" name="checkbox stretch textures"/> <check_box initial_value="истина" label="Привязка" name="checkbox snap to grid"/> - <button label="Параметры..." name="Options..." tool_tip="Дополнительные параметры сетки"/> + <combo_box name="combobox grid mode" tool_tip="Выберите тип линейки сетки для размещения объекта"> + <combo_box.item label="Мировая" name="World"/> + <combo_box.item label="Локальная" name="Local"/> + <combo_box.item label="Точка отсчета" name="Reference"/> + </combo_box> + <button label="" name="Options..." tool_tip="Дополнительные параметры сетки"/> <button name="ToolCube" tool_tip="Куб"/> <button name="ToolPrism" tool_tip="Призма"/> <button name="ToolPyramid" tool_tip="Пирамида"/> diff --git a/indra/newview/skins/default/xui/ru/floater_voice_effect.xml b/indra/newview/skins/default/xui/ru/floater_voice_effect.xml index d4bf615fe4..1eb8a94d7a 100644 --- a/indra/newview/skins/default/xui/ru/floater_voice_effect.xml +++ b/indra/newview/skins/default/xui/ru/floater_voice_effect.xml @@ -42,13 +42,16 @@ <string name="effect_Demon"> Demon </string> + <string name="effect_Female Elf"> + Фея + </string> <string name="effect_Flirty"> Flirty </string> <string name="effect_Foxy"> Foxy </string> - <string name="effect_Halloween_2010_Bonus"> + <string name="effect_Halloween 2010 Bonus"> Бонус_за_Хэллоуин_2010 </string> <string name="effect_Helium"> @@ -57,9 +60,18 @@ <string name="effect_Husky"> Husky </string> + <string name="effect_Husky Whisper"> + Хриплый шепот + </string> <string name="effect_Intercom"> Внутренняя связь </string> + <string name="effect_Julia"> + Julia + </string> + <string name="effect_Lo Lilt"> + Напев + </string> <string name="effect_Macho"> Macho </string> @@ -69,6 +81,9 @@ <string name="effect_Mini"> Mini </string> + <string name="effect_Model"> + Модель + </string> <string name="effect_Nano"> Nano </string> @@ -90,6 +105,9 @@ <string name="effect_Roxanne"> Roxanne </string> + <string name="effect_Rumble"> + Урчание + </string> <string name="effect_Sabrina"> Sabrina </string> @@ -102,6 +120,9 @@ <string name="effect_Shorty"> Shorty </string> + <string name="effect_Smaller"> + Меньше + </string> <string name="effect_Sneaky"> Sneaky </string> diff --git a/indra/newview/skins/default/xui/ru/menu_inventory.xml b/indra/newview/skins/default/xui/ru/menu_inventory.xml index df5e5329a3..49f7281b4e 100644 --- a/indra/newview/skins/default/xui/ru/menu_inventory.xml +++ b/indra/newview/skins/default/xui/ru/menu_inventory.xml @@ -59,6 +59,7 @@ <menu_item_call label="Свойства" name="Properties"/> <menu_item_call label="Переименовать" name="Rename"/> <menu_item_call label="Копировать UUID актива" name="Copy Asset UUID"/> + <menu_item_call label="Вырезать" name="Cut"/> <menu_item_call label="Копировать" name="Copy"/> <menu_item_call label="Вставить" name="Paste"/> <menu_item_call label="Вставить как ссылку" name="Paste As Link"/> diff --git a/indra/newview/skins/default/xui/ru/menu_viewer.xml b/indra/newview/skins/default/xui/ru/menu_viewer.xml index 7698614751..0699314d97 100644 --- a/indra/newview/skins/default/xui/ru/menu_viewer.xml +++ b/indra/newview/skins/default/xui/ru/menu_viewer.xml @@ -21,6 +21,7 @@ <menu_item_call label="Не беспокоить" name="Set Busy"/> </menu> <menu_item_call label="Купить L$..." name="Buy and Sell L$"/> + <menu_item_call label="Торговые исходящие..." name="MerchantOutbox"/> <menu_item_call label="Информационная панель аккаунта..." name="Manage My Account"/> <menu_item_call label="Настройки..." name="Preferences"/> <menu_item_call label="Кнопки панели инструментов..." name="Toolbars"/> @@ -391,9 +392,16 @@ <menu_item_check label="Текстуры HTTP" name="HTTP Textures"/> <menu_item_check label="Инвентарь HTTP" name="HTTP Inventory"/> <menu_item_call label="Сжатие изображений" name="Compress Images"/> + <menu_item_call label="Включить Visual Leak Detector" name="Enable Visual Leak Detector"/> <menu_item_check label="Вывод минидампа при отладке" name="Output Debug Minidump"/> <menu_item_check label="Окно консоли при следующем запуске" name="Console Window"/> - <menu label="Уровень журнала" name="Set Logging Level"/> + <menu label="Уровень журнала" name="Set Logging Level"> + <menu_item_check label="Отладка" name="Debug"/> + <menu_item_check label="Информация" name="Info"/> + <menu_item_check label="Предупреждение" name="Warning"/> + <menu_item_check label="Ошибка" name="Error"/> + <menu_item_check label="Нет" name="None"/> + </menu> <menu_item_call label="Запрос статуса администратора" name="Request Admin Options"/> <menu_item_call label="Выход из статуса администратора" name="Leave Admin Options"/> <menu_item_check label="Показать меню администратора" name="View Admin Options"/> diff --git a/indra/newview/skins/default/xui/ru/notifications.xml b/indra/newview/skins/default/xui/ru/notifications.xml index 1854d43e0a..b4692385d1 100644 --- a/indra/newview/skins/default/xui/ru/notifications.xml +++ b/indra/newview/skins/default/xui/ru/notifications.xml @@ -670,7 +670,7 @@ Невозможно создать выходной файл: [FILE] </notification> <notification name="DoNotSupportBulkAnimationUpload"> - [APP_NAME] пока не поддерживает массовую передачу файлов анимации. + [APP_NAME] пока не поддерживает массовую передачу файлов анимации формата BVH. </notification> <notification name="CannotUploadReason"> Невозможно передать [FILE] по следующей причине: [REASON] @@ -2630,16 +2630,16 @@ http://secondlife.com/download. [NAME] – «<nolink>[TITLE]</nolink>» [MESSAGE] <form name="form"> - <button name="Mute" text="Блокировать"/> - <button name="Ignore" text="Игнорировать"/> + <button name="Client_Side_Mute" text="Заблокировать"/> + <button name="Client_Side_Ignore" text="Игнорировать"/> </form> </notification> <notification name="ScriptDialogGroup"> [GROUPNAME] – «<nolink>[TITLE]</nolink>» [MESSAGE] <form name="form"> - <button name="Mute" text="Блокировать"/> - <button name="Ignore" text="Игнорировать"/> + <button name="Client_Side_Mute" text="Заблокировать"/> + <button name="Client_Side_Ignore" text="Игнорировать"/> </form> </notification> <notification name="BuyLindenDollarSuccess"> diff --git a/indra/newview/skins/default/xui/ru/panel_nearby_chat.xml b/indra/newview/skins/default/xui/ru/panel_nearby_chat.xml index 8e3aac38d2..a8fdfde1c4 100644 --- a/indra/newview/skins/default/xui/ru/panel_nearby_chat.xml +++ b/indra/newview/skins/default/xui/ru/panel_nearby_chat.xml @@ -1,4 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="nearby_chat"> - <check_box label="Переводить чат" name="translate_chat_checkbox"/> + <layout_stack name="stack"> + <layout_panel name="translate_chat_checkbox_lp"> + <check_box label="Переводить чат" name="translate_chat_checkbox"/> + </layout_panel> + </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/ru/sidepanel_inventory.xml b/indra/newview/skins/default/xui/ru/sidepanel_inventory.xml index b3d3ed9aad..c106c2de79 100644 --- a/indra/newview/skins/default/xui/ru/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/ru/sidepanel_inventory.xml @@ -14,7 +14,7 @@ <text name="inbox_fresh_new_count"> Новых: [NUM] </text> - <panel tool_tip="Drag and drop items to your inventory to manage and use them"> + <panel name="inbox_inventory_placeholder_panel" tool_tip="Перетащите вещи в ваш инвентарь для их использования"> <text name="inbox_inventory_placeholder"> Покупки из торгового центра будут доставлены сюда. </text> diff --git a/indra/newview/skins/default/xui/ru/strings.xml b/indra/newview/skins/default/xui/ru/strings.xml index 4240514621..8dbc4f092d 100644 --- a/indra/newview/skins/default/xui/ru/strings.xml +++ b/indra/newview/skins/default/xui/ru/strings.xml @@ -832,6 +832,9 @@ support@secondlife.com. <string name="anim_yes_head"> Согласие </string> + <string name="multiple_textures"> + Несколько + </string> <string name="texture_loading"> Загрузка... </string> @@ -1232,7 +1235,7 @@ support@secondlife.com. В вашем инвентаре нет копии этой текстуры </string> <string name="InventoryInboxNoItems"> - Здесь будут появляться полученные вами предметы, например подарки. Их можно будет перетащить в ваш инвентарь. + Здесь будут показаны ваши покупки из торгового центра. Их можно будет перетащить в ваш инвентарь для использования. </string> <string name="MarketplaceURL"> https://marketplace.[MARKETPLACE_DOMAIN_NAME]/ @@ -3915,6 +3918,9 @@ support@secondlife.com. <string name="Saved_message"> (Сохранено [LONG_TIMESTAMP]) </string> + <string name="IM_unblock_only_groups_friends"> + Для просмотра этого сообщения снимите флажок «Только друзья и группы могут звонить мне и отправлять IM» в окне «Настройки/Приватность». + </string> <string name="answered_call"> На ваш звонок ответили </string> diff --git a/indra/newview/skins/default/xui/tr/floater_animation_anim_preview.xml b/indra/newview/skins/default/xui/tr/floater_animation_anim_preview.xml new file mode 100644 index 0000000000..a63e1e107e --- /dev/null +++ b/indra/newview/skins/default/xui/tr/floater_animation_anim_preview.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Anim Preview" title="ANIMATION.ANIM"> + <text name="name_label"> + Ad: + </text> + <text name="description_label"> + Açıklama: + </text> + <button label="Karşıya Yükle (L$[AMOUNT])" name="ok_btn"/> + <button label="İptal" label_selected="İptal" name="cancel_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/tr/floater_animation_bvh_preview.xml b/indra/newview/skins/default/xui/tr/floater_animation_bvh_preview.xml new file mode 100644 index 0000000000..f8800c674d --- /dev/null +++ b/indra/newview/skins/default/xui/tr/floater_animation_bvh_preview.xml @@ -0,0 +1,186 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Animation Preview"> + <floater.string name="failed_to_initialize"> + Hareket başlatılamadı + </floater.string> + <floater.string name="anim_too_long"> + Animasyon dosyası [LENGTH] saniye uzunluğunda. + +Maksimum animasyon uzunluğu [LENGTH] saniye. + </floater.string> + <floater.string name="failed_file_read"> + Animasyon dosyası okunamadı. + +[STATUS] + </floater.string> + <floater.string name="E_ST_OK"> + Tamam + </floater.string> + <floater.string name="E_ST_EOF"> + Dosyanın zamanından önce sonu. + </floater.string> + <floater.string name="E_ST_NO_CONSTRAINT"> + Kısıtlama tanımı okunamadı. + </floater.string> + <floater.string name="E_ST_NO_FILE"> + BVH dosyası açılamadı. + </floater.string> + <floater.string name="E_ST_NO_HIER"> + Geçersiz HİYERARŞİ üst bilgisi. + </floater.string> + <floater.string name="E_ST_NO_JOINT"> + KÖK veya EKLEM bulunamadı. + </floater.string> + <floater.string name="E_ST_NO_NAME"> + EKLEM adı alınamadı. + </floater.string> + <floater.string name="E_ST_NO_OFFSET"> + OFSET bulunamadı. + </floater.string> + <floater.string name="E_ST_NO_CHANNELS"> + KANALLAR bulunamadı. + </floater.string> + <floater.string name="E_ST_NO_ROTATION"> + Döndürme sırası alınamadı. + </floater.string> + <floater.string name="E_ST_NO_AXIS"> + Döndürme ekseni alınamadı. + </floater.string> + <floater.string name="E_ST_NO_MOTION"> + HAREKET bulunamadı. + </floater.string> + <floater.string name="E_ST_NO_FRAMES"> + kARE SAYISI alınamadı. + </floater.string> + <floater.string name="E_ST_NO_FRAME_TIME"> + Kare zamanı alınamadı. + </floater.string> + <floater.string name="E_ST_NO_POS"> + Konum değerleri alınamadı. + </floater.string> + <floater.string name="E_ST_NO_ROT"> + Döndürme değerleri alınamadı. + </floater.string> + <floater.string name="E_ST_NO_XLT_FILE"> + Çeviri dosyası açılamadı. + </floater.string> + <floater.string name="E_ST_NO_XLT_HEADER"> + Çeviri üst bilgisi okunamadı. + </floater.string> + <floater.string name="E_ST_NO_XLT_NAME"> + Çeviri adları okunamadı. + </floater.string> + <floater.string name="E_ST_NO_XLT_IGNORE"> + Çeviri yoksay değeri okunamadı. + </floater.string> + <floater.string name="E_ST_NO_XLT_RELATIVE"> + Çeviri nisbi değeri okunamadı. + </floater.string> + <floater.string name="E_ST_NO_XLT_OUTNAME"> + Çeviri çıkış adı değeri okunamadı. + </floater.string> + <floater.string name="E_ST_NO_XLT_MATRIX"> + Çeviri matrisi okunamadı. + </floater.string> + <floater.string name="E_ST_NO_XLT_MERGECHILD"> + Birleştirme alt birim adı alınamadı. + </floater.string> + <floater.string name="E_ST_NO_XLT_MERGEPARENT"> + Birleştirme üst birim adı alınamadı. + </floater.string> + <floater.string name="E_ST_NO_XLT_PRIORITY"> + Öncelik değerleri alınamadı. + </floater.string> + <floater.string name="E_ST_NO_XLT_LOOP"> + Döngü (tekrar) değerleri alınamadı. + </floater.string> + <floater.string name="E_ST_NO_XLT_EASEIN"> + Easln (Yavaş Başlangıç) değerleri alınamadı. + </floater.string> + <floater.string name="E_ST_NO_XLT_EASEOUT"> + EaseOut (Yavaş Bitiş) değerleri alınamadı. + </floater.string> + <floater.string name="E_ST_NO_XLT_HAND"> + El şekillendirme değeri alınamadı. + </floater.string> + <floater.string name="E_ST_NO_XLT_EMOTE"> + Duygu ifadesi adı okunamadı. + </floater.string> + <floater.string name="E_ST_BAD_ROOT"> + Yanlış kök eklem adı, "kalça" kullanın + </floater.string> + <text name="name_label"> + Ad: + </text> + <text name="description_label"> + Açıklama: + </text> + <spinner label="Öncelik" name="priority" tool_tip="Bu animasyonun diğer animasyonları geçersiz kılabileceği kontrolleri"/> + <check_box label="Döngü" name="loop_check" tool_tip="Bu animasyonun döngülenmesini (tekrarlanmasını) sağlar"/> + <spinner label="İç (%)" name="loop_in_point" tool_tip="Döngünün döndüğü animasyon noktasını belirler"/> + <spinner label="Dış (%)" name="loop_out_point" tool_tip="Animasyonda döngünün bittiği noktayı belirler"/> + <text name="hand_label"> + El Duruşu + </text> + <combo_box name="hand_pose_combo" tool_tip="Ellerin animasyon sırasında neler yaptığını kontrol eder"> + <combo_box.item label="Yayılım" name="Spread"/> + <combo_box.item label="Rahat" name="Relaxed"/> + <combo_box.item label="Her İkisi de İşaret Ediyor" name="PointBoth"/> + <combo_box.item label="Yumruk" name="Fist"/> + <combo_box.item label="Sol Rahat" name="RelaxedLeft"/> + <combo_box.item label="Sol İşaret Ediyor" name="PointLeft"/> + <combo_box.item label="Sol Yumruk" name="FistLeft"/> + <combo_box.item label="Sağ Rahat" name="RelaxedRight"/> + <combo_box.item label="Sağ İşaret Ediyor" name="PointRight"/> + <combo_box.item label="Sağ Yumruk" name="FistRight"/> + <combo_box.item label="Sağı Selamlıyor" name="SaluteRight"/> + <combo_box.item label="Yazı Yazıyor" name="Typing"/> + <combo_box.item label="Sağ Barış" name="PeaceRight"/> + </combo_box> + <text name="emote_label"> + İfade + </text> + <combo_box name="emote_combo" tool_tip="Yüzün animasyon sırasındaki ifadesini kontrol eder"> + <item label="(Hiçbiri)" name="[None]" value=""/> + <item label="Aaaaah" name="Aaaaah" value="Aaaaah"/> + <item label="Korkmuş" name="Afraid" value="Korkmuş"/> + <item label="Kızgın" name="Angry" value="Kızgın"/> + <item label="Yaygın Gülümseyiş" name="BigSmile" value="Yaygın Gülümseyiş"/> + <item label="Canı Sıkılmış" name="Bored" value="Canı Sıkılmış"/> + <item label="Ağlama" name="Cry" value="Ağlama"/> + <item label="Dudak Bükme" name="Disdain" value="Dudak Bükme"/> + <item label="Utanmış" name="Embarrassed" value="Utanmış"/> + <item label="Kaş Çatma" name="Frown" value="Kaş Çatma"/> + <item label="Öpücük" name="Kiss" value="Öpücük"/> + <item label="Gülme" name="Laugh" value="Gülme"/> + <item label="Kahkaha" name="Plllppt" value="Kahkaha"/> + <item label="Tiksinmiş" name="Repulsed" value="Tiksinmiş"/> + <item label="Üzgün" name="Sad" value="Üzgün"/> + <item label="Omuz Silkme" name="Shrug" value="Omuz Silkme"/> + <item label="Gülümseme" name="Smile" value="Gülümseme"/> + <item label="Sürpriz" name="Surprise" value="Sürpriz"/> + <item label="Göz Kırpma" name="Wink" value="Göz Kırpma"/> + <item label="Endişelenme" name="Worry" value="Endişelenme"/> + </combo_box> + <text name="preview_label"> + Şu sırada önizle + </text> + <combo_box name="preview_base_anim" tool_tip="Animasyon davranışınızı avatarınız genel hareketleri yaparken test etmek için bunu kullanın."> + <item label="Ayakta Duruyor" name="Standing" value="Ayakta Duruyor"/> + <item label="Yürüyor" name="Walking" value="Yürüyor"/> + <item label="Oturuyor" name="Sitting" value="Oturuyor"/> + <item label="Uçuyor" name="Flying" value="Uçuyor"/> + </combo_box> + <spinner label="Yavaş Başlangıç (saniye)" name="ease_in_time" tool_tip="Animasyonun kaynaştığı süre (saniye olarak)"/> + <spinner label="Yavaş Bitiş (saniye)" name="ease_out_time" tool_tip="Animasyonun ayrıştığı süre (saniye olarak)"/> + <button name="play_btn" tool_tip="Animasyonunu oynat"/> + <button name="pause_btn" tool_tip="Animasyonunu duraklat"/> + <button name="stop_btn" tool_tip="Animasyo oynatmayı durdur"/> + <text name="bad_animation_text"> + Animasyon dosyası okunamadı. + +Poser 4'ten aktarılan BHV dosyalarını tavsiye ederiz. + </text> + <button label="Karşıya Yükle (L$[AMOUNT])" name="ok_btn"/> + <button label="İptal" name="cancel_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/tr/floater_preview_animation.xml b/indra/newview/skins/default/xui/tr/floater_preview_animation.xml index 1c526c75f9..23b4848333 100644 --- a/indra/newview/skins/default/xui/tr/floater_preview_animation.xml +++ b/indra/newview/skins/default/xui/tr/floater_preview_animation.xml @@ -6,6 +6,6 @@ <text name="desc txt"> Açıklama: </text> - <button label="SL Dünyasında Oynat" label_selected="Durdur" name="Anim play btn" tool_tip="Bu animasyonu başkaları görebilecek şekilde oynatın"/> - <button label="Yerel Olarak Oynat" label_selected="Durdur" name="Anim audition btn" tool_tip="Bu animasyonu sadece kendinizin görebileceği şekilde oynatın"/> + <button label="SL Dünyasında Oynat" label_selected="Durdur" name="Inworld" tool_tip="Bu animasyonu başkaları görebilecek şekilde oynatın"/> + <button label="Yerel Olarak Oynat" label_selected="Durdur" name="Locally" tool_tip="Bu animasyonu sadece kendinizin görebileceği şekilde oynatın"/> </floater> diff --git a/indra/newview/skins/default/xui/tr/floater_test_text_vertical_aligment.xml b/indra/newview/skins/default/xui/tr/floater_test_text_vertical_aligment.xml new file mode 100644 index 0000000000..fcb7d87287 --- /dev/null +++ b/indra/newview/skins/default/xui/tr/floater_test_text_vertical_aligment.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Test Floater" title="TEST PENCERESİ"/> diff --git a/indra/newview/skins/default/xui/tr/floater_tools.xml b/indra/newview/skins/default/xui/tr/floater_tools.xml index d4ee9995dd..b0c59ced42 100644 --- a/indra/newview/skins/default/xui/tr/floater_tools.xml +++ b/indra/newview/skins/default/xui/tr/floater_tools.xml @@ -1,5 +1,20 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="toolbox floater" short_title="İNŞA ET ARAÇLARI"> + <floater.string name="grid_screen_text"> + Ekran + </floater.string> + <floater.string name="grid_local_text"> + Yerel + </floater.string> + <floater.string name="grid_world_text"> + Dünya + </floater.string> + <floater.string name="grid_reference_text"> + Referans + </floater.string> + <floater.string name="grid_attachment_text"> + Aksesuar + </floater.string> <floater.string name="status_rotate"> Nesneyi döndürmek için renkli bantları sürükleyin </floater.string> @@ -63,7 +78,12 @@ </text> <check_box initial_value="true" label="Dokuları Uzat" name="checkbox stretch textures"/> <check_box initial_value="true" label="Yasla" name="checkbox snap to grid"/> - <button label="Seçenekler..." name="Options..." tool_tip="İlave ağ seçeneklerine bak"/> + <combo_box name="combobox grid mode" tool_tip="Nesneyi konumlandırmak için ağ cetvelini seçin"> + <combo_box.item label="Dünya" name="World"/> + <combo_box.item label="Yerel" name="Local"/> + <combo_box.item label="Referans" name="Reference"/> + </combo_box> + <button label="" name="Options..." tool_tip="İlave ağ seçeneklerine bak"/> <button name="ToolCube" tool_tip="Küp"/> <button name="ToolPrism" tool_tip="Prizma"/> <button name="ToolPyramid" tool_tip="Piramit"/> diff --git a/indra/newview/skins/default/xui/tr/floater_voice_effect.xml b/indra/newview/skins/default/xui/tr/floater_voice_effect.xml index a10da39a69..3534a3fe90 100644 --- a/indra/newview/skins/default/xui/tr/floater_voice_effect.xml +++ b/indra/newview/skins/default/xui/tr/floater_voice_effect.xml @@ -42,13 +42,16 @@ <string name="effect_Demon"> İblis </string> + <string name="effect_Female Elf"> + Dişi Cin + </string> <string name="effect_Flirty"> Cilveli </string> <string name="effect_Foxy"> Alımlı </string> - <string name="effect_Halloween_2010_Bonus"> + <string name="effect_Halloween 2010 Bonus"> Halloween_2010_Bonus </string> <string name="effect_Helium"> @@ -57,9 +60,18 @@ <string name="effect_Husky"> Güçlü </string> + <string name="effect_Husky Whisper"> + Boğuk Fısıltı + </string> <string name="effect_Intercom"> İnterkom </string> + <string name="effect_Julia"> + Julia + </string> + <string name="effect_Lo Lilt"> + Yavaş Mırıltı + </string> <string name="effect_Macho"> Maço </string> @@ -69,6 +81,9 @@ <string name="effect_Mini"> Mini </string> + <string name="effect_Model"> + Model + </string> <string name="effect_Nano"> Nano </string> @@ -90,6 +105,9 @@ <string name="effect_Roxanne"> Roxanne </string> + <string name="effect_Rumble"> + Gurultu + </string> <string name="effect_Sabrina"> Sabrina </string> @@ -102,6 +120,9 @@ <string name="effect_Shorty"> Bücür </string> + <string name="effect_Smaller"> + Daha Küçük + </string> <string name="effect_Sneaky"> Sinsi </string> diff --git a/indra/newview/skins/default/xui/tr/menu_inventory.xml b/indra/newview/skins/default/xui/tr/menu_inventory.xml index 6aaaab9c79..170cdebd24 100644 --- a/indra/newview/skins/default/xui/tr/menu_inventory.xml +++ b/indra/newview/skins/default/xui/tr/menu_inventory.xml @@ -59,6 +59,7 @@ <menu_item_call label="Özellikler" name="Properties"/> <menu_item_call label="Yeniden Adlandır" name="Rename"/> <menu_item_call label="Varlık UUID'sini Kopyala" name="Copy Asset UUID"/> + <menu_item_call label="Kes" name="Cut"/> <menu_item_call label="Kopyala" name="Copy"/> <menu_item_call label="Yapıştır" name="Paste"/> <menu_item_call label="Bağlantı Olarak Yapıştır" name="Paste As Link"/> diff --git a/indra/newview/skins/default/xui/tr/menu_viewer.xml b/indra/newview/skins/default/xui/tr/menu_viewer.xml index d24757bb79..d7b20bac4b 100644 --- a/indra/newview/skins/default/xui/tr/menu_viewer.xml +++ b/indra/newview/skins/default/xui/tr/menu_viewer.xml @@ -21,6 +21,7 @@ <menu_item_call label="Meşgul" name="Set Busy"/> </menu> <menu_item_call label="L$ Satın Al..." name="Buy and Sell L$"/> + <menu_item_call label="Satıcı Giden Kutusu..." name="MerchantOutbox"/> <menu_item_call label="Hesap kontrol paneli..." name="Manage My Account"/> <menu_item_call label="Tercihler..." name="Preferences"/> <menu_item_call label="Araç çubuğu düğmeleri..." name="Toolbars"/> @@ -391,9 +392,16 @@ <menu_item_check label="HTTP Dokuları" name="HTTP Textures"/> <menu_item_check label="HTTP Envanteri" name="HTTP Inventory"/> <menu_item_call label="Görüntüleri Sıkıştır" name="Compress Images"/> + <menu_item_call label="Visual Leak Detector'ı Etkinleştir" name="Enable Visual Leak Detector"/> <menu_item_check label="Mini Döküm Dosyası Hata Ayıklama Çıktısı" name="Output Debug Minidump"/> <menu_item_check label="Sonraki Çalışmada Konsol Penceresi" name="Console Window"/> - <menu label="Günlük Tutma Seviyesini Seç" name="Set Logging Level"/> + <menu label="Günlük Tutma Seviyesini Seç" name="Set Logging Level"> + <menu_item_check label="Hata ayıkla" name="Debug"/> + <menu_item_check label="Bilgi" name="Info"/> + <menu_item_check label="Uyarı" name="Warning"/> + <menu_item_check label="Hata" name="Error"/> + <menu_item_check label="Hiçbiri" name="None"/> + </menu> <menu_item_call label="Yönetici Durumu Talep Et" name="Request Admin Options"/> <menu_item_call label="Yönetici Durumundan Ayrıl" name="Leave Admin Options"/> <menu_item_check label="Yönetici Menüsünü Göster" name="View Admin Options"/> diff --git a/indra/newview/skins/default/xui/tr/notifications.xml b/indra/newview/skins/default/xui/tr/notifications.xml index 719dbb8781..6681cdac7a 100644 --- a/indra/newview/skins/default/xui/tr/notifications.xml +++ b/indra/newview/skins/default/xui/tr/notifications.xml @@ -670,7 +670,7 @@ Beklenen [VALIDS] Çıkış dosyası oluşturulamıyor: [FILE] </notification> <notification name="DoNotSupportBulkAnimationUpload"> - [APP_NAME] şu an için animasyon dosyalarının toplu olarak karşıya yüklenmesini desteklemiyor. + [APP_NAME] şu an için BVH formatında animasyon dosyalarının toplu olarak yüklenmesini desteklemiyor. </notification> <notification name="CannotUploadReason"> Aşağıdaki nedenden dolayı [FILE] dosyası karşıya yüklenemedi: [REASON] @@ -2630,16 +2630,16 @@ Talep kabul edilsin mi? [NAME] adlı kişiye ait '<nolink>[TITLE]</nolink>' [MESSAGE] <form name="form"> - <button name="Mute" text="Engelle"/> - <button name="Ignore" text="Yok say"/> + <button name="Client_Side_Mute" text="Engelle"/> + <button name="Client_Side_Ignore" text="Yok say"/> </form> </notification> <notification name="ScriptDialogGroup"> [GROUPNAME] grubuna ait '<nolink>[TITLE]</nolink>' [MESSAGE] <form name="form"> - <button name="Mute" text="Engelle"/> - <button name="Ignore" text="Yok say"/> + <button name="Client_Side_Mute" text="Engelle"/> + <button name="Client_Side_Ignore" text="Yok say"/> </form> </notification> <notification name="BuyLindenDollarSuccess"> diff --git a/indra/newview/skins/default/xui/tr/panel_nearby_chat.xml b/indra/newview/skins/default/xui/tr/panel_nearby_chat.xml index c405105e00..d238388b0e 100644 --- a/indra/newview/skins/default/xui/tr/panel_nearby_chat.xml +++ b/indra/newview/skins/default/xui/tr/panel_nearby_chat.xml @@ -1,4 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="nearby_chat"> - <check_box label="Sohbeti çevir" name="translate_chat_checkbox"/> + <layout_stack name="stack"> + <layout_panel name="translate_chat_checkbox_lp"> + <check_box label="Sohbeti çevir" name="translate_chat_checkbox"/> + </layout_panel> + </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/tr/sidepanel_inventory.xml b/indra/newview/skins/default/xui/tr/sidepanel_inventory.xml index f801cc5968..938b5a76d8 100644 --- a/indra/newview/skins/default/xui/tr/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/tr/sidepanel_inventory.xml @@ -14,7 +14,7 @@ <text name="inbox_fresh_new_count"> [NUM] yeni </text> - <panel tool_tip="Drag and drop items to your inventory to manage and use them"> + <panel name="inbox_inventory_placeholder_panel" tool_tip="Öğeleri kullanmak için bunları sürükleyin ve envanterinize bırakın"> <text name="inbox_inventory_placeholder"> Pazaryerinden satın alınan öğeler buraya teslim edilir. </text> diff --git a/indra/newview/skins/default/xui/tr/strings.xml b/indra/newview/skins/default/xui/tr/strings.xml index 199fa06d4f..2a4e2c20a7 100644 --- a/indra/newview/skins/default/xui/tr/strings.xml +++ b/indra/newview/skins/default/xui/tr/strings.xml @@ -832,6 +832,9 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin. <string name="anim_yes_head"> Evet </string> + <string name="multiple_textures"> + Birden Çok + </string> <string name="texture_loading"> Yükleniyor... </string> @@ -1232,7 +1235,7 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin. Envanterinizde bu dokunun kopyası yok </string> <string name="InventoryInboxNoItems"> - Özel hediyeler gibi aldığınız belirli öğeler burada görünecektir. Daha sonra bunları envanterinize sürükleyebilirsiniz. + Pazaryerinda satın aldıklarınız burada görünecektir. Bunları kullanmak için envanterinize sürükleyebilirsiniz. </string> <string name="MarketplaceURL"> https://marketplace.[MARKETPLACE_DOMAIN_NAME]/ @@ -3918,6 +3921,9 @@ Bu iletiyi almaya devam ederseniz, lütfen [SUPPORT_SITE] bölümüne başvurun. <string name="Saved_message"> (Kaydedildi [LONG_TIMESTAMP]) </string> + <string name="IM_unblock_only_groups_friends"> + Bu mesajı görmek için Tercihler/Gizlilik'de 'Sadece arkadaşlar ve gruplar beni arasın veya Aİ göndersin' seçeneğinin işaretini kaldırmalısınız. + </string> <string name="answered_call"> Aramanız yanıtlandı </string> |