summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
Diffstat (limited to 'indra')
-rw-r--r--indra/CMakeLists.txt6
-rw-r--r--indra/cmake/00-Common.cmake4
-rw-r--r--indra/cmake/APR.cmake9
-rw-r--r--indra/cmake/Audio.cmake14
-rw-r--r--indra/cmake/Boost.cmake49
-rw-r--r--indra/cmake/CEFPlugin.cmake68
-rw-r--r--indra/cmake/CMakeLists.txt1
-rw-r--r--indra/cmake/CURL.cmake58
-rw-r--r--indra/cmake/FMODSTUDIO.cmake22
-rw-r--r--indra/cmake/FreeType.cmake15
-rw-r--r--indra/cmake/GLEXT.cmake7
-rw-r--r--indra/cmake/GLH.cmake4
-rw-r--r--indra/cmake/GLM.cmake11
-rw-r--r--indra/cmake/LLCommon.cmake2
-rw-r--r--indra/cmake/LLPrimitive.cmake192
-rw-r--r--indra/cmake/LLWindow.cmake7
-rw-r--r--indra/cmake/LibVLCPlugin.cmake77
-rw-r--r--indra/cmake/Linking.cmake1
-rw-r--r--indra/cmake/Meshoptimizer.cmake68
-rw-r--r--indra/cmake/NDOF.cmake15
-rw-r--r--indra/cmake/OPENAL.cmake16
-rw-r--r--indra/cmake/OpenJPEG.cmake94
-rw-r--r--indra/cmake/OpenSSL.cmake152
-rw-r--r--indra/cmake/Prebuilt.cmake85
-rw-r--r--indra/cmake/Python.cmake2
-rw-r--r--indra/cmake/UI.cmake9
-rw-r--r--indra/cmake/ViewerMiscLibs.cmake14
-rw-r--r--indra/cmake/VulkanGltf.cmake2
-rw-r--r--indra/cmake/WebRTC.cmake20
-rw-r--r--indra/cmake/ZLIBNG.cmake12
-rw-r--r--indra/cmake/xxHash.cmake8
-rw-r--r--indra/llcommon/CMakeLists.txt46
-rw-r--r--indra/llcommon/hbxxh.cpp4
-rw-r--r--indra/llcommon/llapr.cpp2
-rw-r--r--indra/llcommon/llassettype.cpp17
-rw-r--r--indra/llcommon/llassettype.h2
-rw-r--r--indra/llcommon/llmemory.h2
-rw-r--r--indra/llcommon/llsdserialize.cpp2
-rw-r--r--indra/llcommon/llsdserialize_xml.cpp2
-rw-r--r--indra/llcommon/llsdutil.h94
-rw-r--r--indra/llcommon/llsys.cpp2
-rw-r--r--indra/llcommon/lluuid.cpp15
-rw-r--r--indra/llcommon/lluuid.h2
-rw-r--r--indra/llimage/CMakeLists.txt16
-rw-r--r--indra/llimage/llimagejpeg.h2
-rw-r--r--indra/llimagej2coj/llimagej2coj.cpp7
-rw-r--r--indra/llinventory/llfoldertype.cpp19
-rw-r--r--indra/llinventory/llfoldertype.h2
-rw-r--r--indra/llinventory/llinventory.cpp24
-rw-r--r--indra/llinventory/llinventory.h3
-rw-r--r--indra/llinventory/llpermissions.cpp16
-rw-r--r--indra/llinventory/llpermissions.h1
-rw-r--r--indra/llinventory/llsaleinfo.cpp9
-rw-r--r--indra/llinventory/llsaleinfo.h1
-rw-r--r--indra/llinventory/llsettingsbase.h2
-rw-r--r--indra/llinventory/llsettingssky.cpp4
-rw-r--r--indra/llinventory/tests/inventorymisc_test.cpp54
-rw-r--r--indra/llmath/CMakeLists.txt2
-rw-r--r--indra/llmath/llsimdmath.h2
-rw-r--r--indra/llmath/llvolume.cpp4
-rw-r--r--indra/llmessage/CMakeLists.txt7
-rw-r--r--indra/llmessage/llpacketring.cpp10
-rw-r--r--indra/llmessage/llproxy.cpp1
-rw-r--r--indra/llprimitive/lldaeloader.h2
-rw-r--r--indra/llprimitive/llmodel.cpp2
-rw-r--r--indra/llprimitive/llmodel.h2
-rw-r--r--indra/llrender/llfontfreetype.cpp27
-rw-r--r--indra/llrender/llgl.cpp19
-rw-r--r--indra/llrender/llglslshader.cpp33
-rw-r--r--indra/llui/CMakeLists.txt2
-rw-r--r--indra/llui/llchatentry.cpp1
-rw-r--r--indra/llui/llchatmentionhelper.cpp158
-rw-r--r--indra/llui/llchatmentionhelper.h66
-rw-r--r--indra/llui/llemojihelper.cpp11
-rw-r--r--indra/llui/llemojihelper.h7
-rw-r--r--indra/llui/llflatlistview.cpp6
-rw-r--r--indra/llui/llflatlistview.h4
-rw-r--r--indra/llui/llfolderviewitem.h2
-rw-r--r--indra/llui/lllineeditor.cpp21
-rw-r--r--indra/llui/llstyle.cpp8
-rw-r--r--indra/llui/llstyle.h21
-rw-r--r--indra/llui/lltextbase.cpp145
-rw-r--r--indra/llui/lltextbase.h17
-rw-r--r--indra/llui/lltexteditor.cpp90
-rw-r--r--indra/llui/lltexteditor.h7
-rw-r--r--indra/llui/llurlentry.cpp84
-rw-r--r--indra/llui/llurlentry.h45
-rw-r--r--indra/llui/llurlmatch.cpp10
-rw-r--r--indra/llui/llurlmatch.h11
-rw-r--r--indra/llui/llurlregistry.cpp47
-rw-r--r--indra/llui/llurlregistry.h5
-rw-r--r--indra/llui/llxuiparser.cpp2
-rw-r--r--indra/llwebrtc/CMakeLists.txt4
-rw-r--r--indra/llwebrtc/llwebrtc.cpp8
-rw-r--r--indra/llwindow/CMakeLists.txt6
-rw-r--r--indra/llwindow/lldxhardware.cpp652
-rw-r--r--indra/llwindow/lldxhardware.h68
-rw-r--r--indra/llwindow/llwindow.cpp2
-rw-r--r--indra/llwindow/llwindowsdl.cpp1357
-rw-r--r--indra/llwindow/llwindowsdl.h45
-rw-r--r--indra/llwindow/llwindowwin32.cpp15
-rw-r--r--indra/llxml/llxmlnode.h2
-rw-r--r--indra/llxml/llxmlparser.h2
-rw-r--r--indra/media_plugins/cef/CMakeLists.txt14
-rw-r--r--indra/media_plugins/libvlc/CMakeLists.txt1
-rw-r--r--indra/newview/CMakeLists.txt295
-rw-r--r--indra/newview/FixBundle.cmake.in13
-rw-r--r--indra/newview/FixPackage.cmake.in13
-rw-r--r--indra/newview/PKGBUILD.in2
-rw-r--r--indra/newview/VIEWER_VERSION.txt2
-rw-r--r--indra/newview/ViewerInstall.cmake8
-rw-r--r--indra/newview/app_settings/settings.xml138
-rw-r--r--indra/newview/featuretable_linux.txt11
-rw-r--r--indra/newview/gltf/primitive.cpp4
-rw-r--r--indra/newview/gltfscenemanager.cpp6
-rw-r--r--indra/newview/groupchatlistener.cpp84
-rw-r--r--indra/newview/groupchatlistener.h15
-rw-r--r--indra/newview/icons/release/secondlife.icnsbin113020 -> 302511 bytes
-rw-r--r--indra/newview/icons/release/secondlife.iconset/icon_128x128.pngbin0 -> 8653 bytes
-rw-r--r--indra/newview/icons/release/secondlife.iconset/icon_128x128@2x.pngbin0 -> 19795 bytes
-rw-r--r--indra/newview/icons/release/secondlife.iconset/icon_16x16.pngbin0 -> 681 bytes
-rw-r--r--indra/newview/icons/release/secondlife.iconset/icon_16x16@2x.pngbin0 -> 1508 bytes
-rw-r--r--indra/newview/icons/release/secondlife.iconset/icon_256x256.pngbin0 -> 19795 bytes
-rw-r--r--indra/newview/icons/release/secondlife.iconset/icon_256x256@2x.pngbin0 -> 50874 bytes
-rw-r--r--indra/newview/icons/release/secondlife.iconset/icon_32x32.pngbin0 -> 1508 bytes
-rw-r--r--indra/newview/icons/release/secondlife.iconset/icon_32x32@2x.pngbin0 -> 3697 bytes
-rw-r--r--indra/newview/icons/release/secondlife.iconset/icon_512x512.pngbin0 -> 50874 bytes
-rw-r--r--indra/newview/icons/release/secondlife.iconset/icon_512x512@2x.pngbin0 -> 105494 bytes
-rw-r--r--indra/newview/icons/release/secondlife_1024.pngbin0 -> 105494 bytes
-rw-r--r--indra/newview/icons/release/secondlife_128.pngbin5320 -> 0 bytes
-rw-r--r--indra/newview/icons/release/secondlife_16.pngbin669 -> 0 bytes
-rw-r--r--indra/newview/icons/release/secondlife_256.pngbin11572 -> 0 bytes
-rw-r--r--indra/newview/icons/release/secondlife_32.pngbin1283 -> 0 bytes
-rw-r--r--indra/newview/icons/release/secondlife_48.pngbin1958 -> 0 bytes
-rwxr-xr-xindra/newview/linux_tools/wrapper.sh23
-rw-r--r--indra/newview/llagentcamera.cpp4
-rw-r--r--indra/newview/llagentlistener.cpp387
-rw-r--r--indra/newview/llagentlistener.h16
-rw-r--r--indra/newview/llappearancelistener.cpp158
-rw-r--r--indra/newview/llappearancelistener.h46
-rw-r--r--indra/newview/llappearancemgr.cpp8
-rw-r--r--indra/newview/llappearancemgr.h1
-rw-r--r--indra/newview/llappviewer.cpp14
-rw-r--r--indra/newview/llappviewerwin32.cpp60
-rw-r--r--indra/newview/llavatarlist.cpp18
-rw-r--r--indra/newview/llavatarlist.h7
-rw-r--r--indra/newview/llavatarlistitem.cpp18
-rw-r--r--indra/newview/llavatarlistitem.h3
-rw-r--r--indra/newview/llconversationview.cpp9
-rw-r--r--indra/newview/llconversationview.h3
-rw-r--r--indra/newview/lldirpicker.cpp1
-rw-r--r--indra/newview/lldrawpoolavatar.cpp2
-rw-r--r--indra/newview/lldrawpoolterrain.h1
-rw-r--r--indra/newview/llenvironment.cpp1
-rw-r--r--indra/newview/llfloaterbulkpermission.cpp16
-rw-r--r--indra/newview/llfloaterbulkpermission.h7
-rw-r--r--indra/newview/llfloaterchatmentionpicker.cpp184
-rw-r--r--indra/newview/llfloaterchatmentionpicker.h58
-rw-r--r--indra/newview/llfloatereditextdaycycle.cpp2
-rw-r--r--indra/newview/llfloaterenvironmentadjust.cpp5
-rw-r--r--indra/newview/llfloaterimcontainer.cpp4
-rw-r--r--indra/newview/llfloaterimcontainer.h2
-rw-r--r--indra/newview/llfloaterimnearbychat.cpp5
-rw-r--r--indra/newview/llfloaterimnearbychatlistener.cpp34
-rw-r--r--indra/newview/llfloaterimnearbychatlistener.h6
-rw-r--r--indra/newview/llfloaterimsession.cpp2
-rw-r--r--indra/newview/llfloaterimsessiontab.cpp45
-rw-r--r--indra/newview/llfloaterimsessiontab.h5
-rw-r--r--indra/newview/llfloaternewfeaturenotification.cpp26
-rw-r--r--indra/newview/llfloatersnapshot.cpp44
-rw-r--r--indra/newview/llfloatersnapshot.h3
-rw-r--r--indra/newview/llgroupactions.cpp2
-rw-r--r--indra/newview/llimview.cpp33
-rw-r--r--indra/newview/llinventorybridge.cpp332
-rw-r--r--indra/newview/llinventorybridge.h1
-rw-r--r--indra/newview/llinventoryfunctions.cpp113
-rw-r--r--indra/newview/llinventoryfunctions.h38
-rw-r--r--indra/newview/llinventorygallery.cpp132
-rw-r--r--indra/newview/llinventorygallerymenu.cpp25
-rw-r--r--indra/newview/llinventorylistener.cpp309
-rw-r--r--indra/newview/llinventorylistener.h48
-rw-r--r--indra/newview/llinventorymodel.cpp22
-rw-r--r--indra/newview/llinventorypanel.cpp14
-rw-r--r--indra/newview/lllocalbitmaps.cpp20
-rw-r--r--indra/newview/lllocalbitmaps.h1
-rw-r--r--indra/newview/lllogininstance.cpp27
-rw-r--r--indra/newview/lllogininstance.h2
-rw-r--r--indra/newview/llmeshrepository.cpp242
-rw-r--r--indra/newview/llmeshrepository.h71
-rw-r--r--indra/newview/llmodelpreview.cpp54
-rw-r--r--indra/newview/lloutfitgallery.cpp28
-rw-r--r--indra/newview/lloutfitslist.cpp51
-rw-r--r--indra/newview/lloutfitslist.h2
-rw-r--r--indra/newview/llpanelface.cpp573
-rw-r--r--indra/newview/llpanelface.h3
-rw-r--r--indra/newview/llpanelobject.cpp24
-rw-r--r--indra/newview/llpanelprofile.cpp2
-rw-r--r--indra/newview/llpanelvolume.cpp44
-rw-r--r--indra/newview/llselectmgr.cpp59
-rw-r--r--indra/newview/llselectmgr.h2
-rw-r--r--indra/newview/llsnapshotlivepreview.cpp2
-rw-r--r--indra/newview/llstartup.cpp25
-rw-r--r--indra/newview/llstatusbar.cpp4
-rw-r--r--indra/newview/llstatusbar.h2
-rw-r--r--indra/newview/llsurfacepatch.cpp8
-rw-r--r--indra/newview/llsurfacepatch.h2
-rw-r--r--indra/newview/llterrainpaintmap.cpp3
-rw-r--r--indra/newview/lltexturecache.cpp44
-rw-r--r--indra/newview/lltexturectrl.cpp50
-rw-r--r--indra/newview/lltexturectrl.h3
-rw-r--r--indra/newview/lltooldraganddrop.cpp49
-rw-r--r--indra/newview/llvieweraudio.cpp5
-rw-r--r--indra/newview/llviewercamera.cpp19
-rw-r--r--indra/newview/llviewercamera.h4
-rw-r--r--indra/newview/llviewerchat.cpp8
-rw-r--r--indra/newview/llviewercontrol.cpp3
-rw-r--r--indra/newview/llviewerdisplay.cpp6
-rw-r--r--indra/newview/llviewerfloaterreg.cpp4
-rw-r--r--indra/newview/llviewerinventory.cpp9
-rw-r--r--indra/newview/llviewerinventory.h4
-rw-r--r--indra/newview/llviewermenu.cpp3
-rw-r--r--indra/newview/llviewermenufile.cpp2
-rw-r--r--indra/newview/llviewermessage.cpp32
-rw-r--r--indra/newview/llviewerobject.cpp7
-rw-r--r--indra/newview/llviewerobjectlist.cpp2
-rw-r--r--indra/newview/llviewerparcelmgr.cpp24
-rw-r--r--indra/newview/llviewerparcelmgr.h4
-rwxr-xr-xindra/newview/llviewerregion.cpp6
-rw-r--r--indra/newview/llviewerregion.h1
-rw-r--r--indra/newview/llviewertexturelist.cpp9
-rw-r--r--indra/newview/llviewerwindow.cpp21
-rw-r--r--indra/newview/llviewerwindow.h10
-rw-r--r--indra/newview/llviewerwindowlistener.cpp2
-rw-r--r--indra/newview/llvoavatar.cpp20
-rw-r--r--indra/newview/llvoavatar.h1
-rw-r--r--indra/newview/llvoavatarself.cpp2
-rw-r--r--indra/newview/llvoicevivox.cpp2
-rw-r--r--indra/newview/llvoicevivox.h2
-rw-r--r--indra/newview/llvoicewebrtc.cpp34
-rw-r--r--indra/newview/llvoicewebrtc.h2
-rw-r--r--indra/newview/llvosurfacepatch.cpp51
-rw-r--r--indra/newview/llvosurfacepatch.h4
-rw-r--r--indra/newview/llvovolume.cpp40
-rw-r--r--indra/newview/llwearableitemslist.cpp10
-rw-r--r--indra/newview/llwearableitemslist.h9
-rw-r--r--indra/newview/llworld.cpp4
-rw-r--r--indra/newview/res-sdl/cross.BMPbin2102 -> 2186 bytes
-rw-r--r--indra/newview/res-sdl/lltoolcamera.BMPbin2102 -> 2186 bytes
-rw-r--r--indra/newview/res-sdl/lltoolcreate.BMPbin2102 -> 2186 bytes
-rw-r--r--indra/newview/res-sdl/lltoolpipette.BMPbin3126 -> 3210 bytes
-rw-r--r--indra/newview/res-sdl/lltoolrotate.BMPbin2186 -> 2186 bytes
-rw-r--r--indra/newview/res-sdl/toolmediaopen.BMPbin4234 -> 3210 bytes
-rw-r--r--indra/newview/res-sdl/toolopen.BMPbin4234 -> 3210 bytes
-rw-r--r--indra/newview/res-sdl/toolplay.BMPbin4234 -> 3210 bytes
-rw-r--r--indra/newview/rlvactions.cpp42
-rw-r--r--indra/newview/rlvactions.h46
-rw-r--r--indra/newview/rlvcommon.cpp134
-rw-r--r--indra/newview/rlvcommon.h72
-rw-r--r--indra/newview/rlvdefines.h194
-rw-r--r--indra/newview/rlvfloaters.cpp122
-rw-r--r--indra/newview/rlvfloaters.h68
-rw-r--r--indra/newview/rlvhandler.cpp225
-rw-r--r--indra/newview/rlvhandler.h80
-rw-r--r--indra/newview/rlvhelper.cpp389
-rw-r--r--indra/newview/rlvhelper.h299
-rw-r--r--indra/newview/skins/default/colors.xml12
-rw-r--r--indra/newview/skins/default/textures/icons/MP_Logo.pngbin7297 -> 1106 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/SL_Logo.pngbin10535 -> 1484 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/hand.pngbin5338 -> 899 bytes
-rw-r--r--indra/newview/skins/default/textures/windows/first_login_image.jpgbin398853 -> 199811 bytes
-rw-r--r--indra/newview/skins/default/xui/da/floater_about.xml2
-rw-r--r--indra/newview/skins/default/xui/da/strings.xml90
-rw-r--r--indra/newview/skins/default/xui/da/teleport_strings.xml4
-rw-r--r--indra/newview/skins/default/xui/de/strings.xml7780
-rw-r--r--indra/newview/skins/default/xui/de/teleport_strings.xml124
-rw-r--r--indra/newview/skins/default/xui/en/floater_about.xml5
-rw-r--r--indra/newview/skins/default/xui/en/floater_chat_mention_picker.xml31
-rw-r--r--indra/newview/skins/default/xui/en/floater_rlv_console.xml74
-rw-r--r--indra/newview/skins/default/xui/en/floater_snapshot.xml14
-rw-r--r--indra/newview/skins/default/xui/en/menu_inventory.xml8
-rw-r--r--indra/newview/skins/default/xui/en/menu_viewer.xml70
-rw-r--r--indra/newview/skins/default/xui/en/notifications.xml9
-rw-r--r--indra/newview/skins/default/xui/en/panel_preferences_chat.xml25
-rw-r--r--indra/newview/skins/default/xui/en/panel_preferences_colors.xml101
-rw-r--r--indra/newview/skins/default/xui/en/panel_settings_water.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_tools_texture.xml32
-rw-r--r--indra/newview/skins/default/xui/en/strings.xml29
-rw-r--r--indra/newview/skins/default/xui/es/strings.xml7650
-rw-r--r--indra/newview/skins/default/xui/es/teleport_strings.xml120
-rw-r--r--indra/newview/skins/default/xui/fr/strings.xml7782
-rw-r--r--indra/newview/skins/default/xui/fr/teleport_strings.xml122
-rw-r--r--indra/newview/skins/default/xui/it/strings.xml7670
-rw-r--r--indra/newview/skins/default/xui/it/teleport_strings.xml118
-rw-r--r--indra/newview/skins/default/xui/ja/panel_settings_water.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/strings.xml4
-rw-r--r--indra/newview/skins/default/xui/pl/strings.xml24
-rw-r--r--indra/newview/skins/default/xui/pl/teleport_strings.xml2
-rw-r--r--indra/newview/skins/default/xui/pt/strings.xml7612
-rw-r--r--indra/newview/skins/default/xui/pt/teleport_strings.xml118
-rw-r--r--indra/newview/skins/default/xui/ru/strings.xml18
-rw-r--r--indra/newview/skins/default/xui/tr/strings.xml100
-rw-r--r--indra/newview/skins/default/xui/tr/teleport_strings.xml6
-rw-r--r--indra/newview/skins/default/xui/zh/strings.xml24
-rw-r--r--indra/newview/skins/default/xui/zh/teleport_strings.xml2
-rw-r--r--indra/newview/tests/lllogininstance_test.cpp1
-rwxr-xr-xindra/newview/viewer_manifest.py28
306 files changed, 36727 insertions, 13861 deletions
diff --git a/indra/CMakeLists.txt b/indra/CMakeLists.txt
index 5bf08f63aa..b1970fba35 100644
--- a/indra/CMakeLists.txt
+++ b/indra/CMakeLists.txt
@@ -24,10 +24,6 @@ if( USE_CONAN )
set( USE_AUTOBUILD_3P OFF )
conan_basic_setup(TARGETS NO_OUTPUT_DIRS)
add_compile_definitions(LL_USESYSTEMLIBS USE_CONAN NO_AUTOBUILD_3P)
-elseif( USESYSTEMLIBS )
- set( USE_CONAN OFF )
- set( USE_AUTOBUILD_3P OFF )
- add_compile_definitions(LL_USESYSTEMLIBS)
else()
set( USE_CONAN OFF )
set( USE_AUTOBUILD_3P ON )
@@ -65,7 +61,7 @@ add_subdirectory(${LIBS_OPEN_PREFIX}llrender)
add_subdirectory(${LIBS_OPEN_PREFIX}llfilesystem)
if (NOT CMAKE_SYSTEM_NAME MATCHES FreeBSD)
add_subdirectory(${LIBS_OPEN_PREFIX}llwebrtc)
-endif (NOT CMAKE_SYSTEM_NAME MATCHES FreeBSD)
+endif ()
add_subdirectory(${LIBS_OPEN_PREFIX}llwindow)
add_subdirectory(${LIBS_OPEN_PREFIX}llxml)
diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake
index 8fd5e4020c..0e3b89e98e 100644
--- a/indra/cmake/00-Common.cmake
+++ b/indra/cmake/00-Common.cmake
@@ -253,6 +253,10 @@ if (DARWIN)
list(APPEND GCC_WARNINGS -Wno-unused-but-set-variable -Wno-unused-variable )
endif()
+ if (CMAKE_OSX_ARCHITECTURES MATCHES arm64)
+ list(APPEND GCC_WARNINGS "-Wno-#warnings" )
+ endif()
+
add_compile_options(${GCC_WARNINGS})
add_compile_options(-m${ADDRESS_SIZE})
endif ()
diff --git a/indra/cmake/APR.cmake b/indra/cmake/APR.cmake
index 506f792570..fa3b8a4ffb 100644
--- a/indra/cmake/APR.cmake
+++ b/indra/cmake/APR.cmake
@@ -5,15 +5,20 @@ include_guard()
add_library( ll::apr INTERFACE IMPORTED )
-if (NOT (USE_AUTOBUILD_3P OR USE_CONAN))
+if (WINDOWS)
+ target_include_directories(ll::apr SYSTEM INTERFACE ${prefix_result}/../include)
+ target_link_directories(ll::apr INTERFACE ${prefix_result})
+ target_link_libraries(ll::apr INTERFACE apr-1 apr-util-1)
+else ()
include(FindPkgConfig)
pkg_check_modules(Apr REQUIRED apr-1 apr-util-1)
target_include_directories(ll::apr SYSTEM INTERFACE ${Apr_INCLUDE_DIRS})
target_link_directories(ll::apr INTERFACE ${Apr_LIBRARY_DIRS})
target_link_libraries(ll::apr INTERFACE ${Apr_LIBRARIES})
- return ()
endif ()
+return ()
+
use_system_binary( apr apr-util )
use_prebuilt_binary(apr_suite)
diff --git a/indra/cmake/Audio.cmake b/indra/cmake/Audio.cmake
index 3c4c0ef1a7..c569fba4e8 100644
--- a/indra/cmake/Audio.cmake
+++ b/indra/cmake/Audio.cmake
@@ -5,14 +5,12 @@ include(Prebuilt)
include_guard()
add_library( ll::vorbis INTERFACE IMPORTED )
-if (NOT (USE_AUTOBUILD_3P OR USE_CONAN))
- include(FindPkgConfig)
- pkg_check_modules(Vorbis REQUIRED ogg vorbis vorbisenc vorbisfile)
- target_include_directories(ll::vorbis SYSTEM INTERFACE ${Vorbis_INCLUDE_DIRS})
- target_link_directories(ll::vorbis INTERFACE ${Vorbis_LIBRARY_DIRS})
- target_link_libraries(ll::vorbis INTERFACE ${Vorbis_LIBRARIES})
- return ()
-endif ()
+include(FindPkgConfig)
+pkg_check_modules(Vorbis REQUIRED ogg vorbis vorbisenc vorbisfile)
+target_include_directories(ll::vorbis SYSTEM INTERFACE ${Vorbis_INCLUDE_DIRS})
+target_link_directories(ll::vorbis INTERFACE ${Vorbis_LIBRARY_DIRS})
+target_link_libraries(ll::vorbis INTERFACE ${Vorbis_LIBRARIES})
+return ()
use_system_binary(vorbis)
use_prebuilt_binary(ogg_vorbis)
diff --git a/indra/cmake/Boost.cmake b/indra/cmake/Boost.cmake
index c9688d0fe0..9ea1f6c9a6 100644
--- a/indra/cmake/Boost.cmake
+++ b/indra/cmake/Boost.cmake
@@ -4,34 +4,35 @@ include(Prebuilt)
include_guard()
add_library( ll::boost INTERFACE IMPORTED )
+
+if (DARWIN)
+ target_include_directories( ll::boost SYSTEM INTERFACE /opt/local/libexec/boost/1.87/include)
+ target_link_directories( ll::boost INTERFACE /opt/local/libexec/boost/1.87/lib)
+ set(sfx -mt)
+elseif (WINDOWS)
+ target_include_directories( ll::boost SYSTEM INTERFACE ${prefix_result}/../include)
+ target_link_directories( ll::boost INTERFACE ${prefix_result})
+ set(sfx -vc143-mt-x64-1_88)
+else ()
+ find_package( Boost REQUIRED )
+endif ()
+target_link_libraries( ll::boost INTERFACE
+ boost_context${sfx}
+ boost_fiber${sfx}
+ boost_filesystem${sfx}
+ boost_program_options${sfx}
+ boost_regex${sfx}
+ boost_system${sfx}
+ boost_thread${sfx}
+ boost_url${sfx}
+ )
+target_compile_definitions( ll::boost INTERFACE BOOST_BIND_GLOBAL_PLACEHOLDERS )
+return()
+
if( USE_CONAN )
target_link_libraries( ll::boost INTERFACE CONAN_PKG::boost )
target_compile_definitions( ll::boost INTERFACE BOOST_ALLOW_DEPRECATED_HEADERS BOOST_BIND_GLOBAL_PLACEHOLDERS )
return()
-elseif( NOT USE_AUTOBUILD_3P )
- if (WINDOWS)
- set(sfx -mt)
- target_include_directories( ll::boost SYSTEM INTERFACE /opt/local/x86_64-w64-mingw32/include)
- target_link_directories( ll::boost INTERFACE /opt/local/x86_64-w64-mingw32/lib)
- elseif (DARWIN)
- set(sfx -mt)
- target_include_directories( ll::boost SYSTEM INTERFACE /opt/local/libexec/boost/1.87/include)
- target_link_directories( ll::boost INTERFACE /opt/local/libexec/boost/1.87/lib)
- else (WINDOWS)
- find_package( Boost REQUIRED )
- endif (WINDOWS)
- target_link_libraries( ll::boost INTERFACE
- boost_context${sfx}
- boost_fiber${sfx}
- boost_filesystem${sfx}
- boost_program_options${sfx}
- boost_regex${sfx}
- boost_system${sfx}
- boost_thread${sfx}
- boost_url${sfx}
- )
- target_compile_definitions( ll::boost INTERFACE BOOST_BIND_GLOBAL_PLACEHOLDERS )
- return()
endif()
use_prebuilt_binary(boost)
diff --git a/indra/cmake/CEFPlugin.cmake b/indra/cmake/CEFPlugin.cmake
index 119a41f570..70e6c366a4 100644
--- a/indra/cmake/CEFPlugin.cmake
+++ b/indra/cmake/CEFPlugin.cmake
@@ -35,16 +35,66 @@ elseif (CMAKE_OSX_ARCHITECTURES MATCHES x86_64)
)
file(WRITE ${PREBUILD_TRACKING_DIR}/dullahan_installed "0")
endif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/dullahan_installed OR NOT ${dullahan_installed} EQUAL 0)
+elseif (CMAKE_SYSTEM_PROCESSOR MATCHES aarch64)
+ if (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/dullahan_installed OR NOT ${dullahan_installed} EQUAL 0)
+ if (NOT EXISTS ${CMAKE_BINARY_DIR}/v1.14.0-r3.tar.gz)
+ file(DOWNLOAD
+ https://github.com/secondlife/dullahan/archive/refs/tags/v1.14.0-r3.tar.gz
+ ${CMAKE_BINARY_DIR}/v1.14.0-r3.tar.gz
+ )
+ endif ()
+ file(ARCHIVE_EXTRACT
+ INPUT ${CMAKE_BINARY_DIR}/v1.14.0-r3.tar.gz
+ DESTINATION ${CMAKE_BINARY_DIR}
+ )
+ execute_process(
+ COMMAND sed -i "/#include <vector>/a #include <cstdint>" dullahan.h
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/dullahan-1.14.0-r3/src
+ )
+ file(MAKE_DIRECTORY ${LIBS_PREBUILT_DIR}/include/cef)
+ try_compile(DULLAHAN_RESULT
+ PROJECT dullahan
+ SOURCE_DIR ${CMAKE_BINARY_DIR}/dullahan-1.14.0-r3
+ BINARY_DIR ${CMAKE_BINARY_DIR}/dullahan-1.14.0-r3
+ CMAKE_FLAGS
+ -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
+ -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES}
+ -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=${CMAKE_OSX_DEPLOYMENT_TARGET}
+ -DCMAKE_INSTALL_PREFIX:PATH=${LIBS_PREBUILT_DIR}
+ -DCMAKE_INSTALL_LIBDIR:PATH=${ARCH_PREBUILT_DIRS_RELEASE}
+ -DCMAKE_BUILD_WITH_INSTALL_RPATH:BOOL=ON
+ -DBUILD_SHARED_LIBS:BOOL=${BUILD_SHARED_LIBS}
+ -DUSE_SPOTIFY_CEF:BOOL=ON
+ -DSPOTIFY_CEF_URL:STRING=https://cef-builds.spotifycdn.com/cef_binary_118.4.1%2Bg3dd6078%2Bchromium-118.0.5993.54_linuxarm64_beta_minimal.tar.bz2
+ -DPROJECT_ARCH:STRING=${CMAKE_SYSTEM_PROCESSOR}
+ -DENABLE_CXX11_ABI:BOOL=ON
+ )
+ if (${DULLAHAN_RESULT})
+ execute_process(
+ COMMAND ${CMAKE_MAKE_PROGRAM} install
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/dullahan-1.14.0-r3
+ OUTPUT_VARIABLE dullahan_installed
+ )
+ file(
+ COPY
+ ${CMAKE_BINARY_DIR}/dullahan-1.14.0-r3/src/dullahan.h
+ ${CMAKE_BINARY_DIR}/dullahan-1.14.0-r3/src/dullahan_version.h
+ DESTINATION ${LIBS_PREBUILT_DIR}/include/cef
+ )
+ file(WRITE ${PREBUILD_TRACKING_DIR}/dullahan_installed "${dullahan_installed}")
+ endif (${DULLAHAN_RESULT})
+ endif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/dullahan_installed OR NOT ${dullahan_installed} EQUAL 0)
else (CMAKE_OSX_ARCHITECTURES MATCHES arm64)
use_prebuilt_binary(dullahan)
- if (${LINUX_DISTRO} MATCHES fedora)
- execute_process(
- COMMAND patchelf --remove-rpath bin/release/dullahan_host
- WORKING_DIRECTORY ${LIBS_PREBUILT_DIR}
- )
- endif (${LINUX_DISTRO} MATCHES fedora)
endif (CMAKE_OSX_ARCHITECTURES MATCHES arm64)
+if (${LINUX_DISTRO} MATCHES fedora)
+ execute_process(
+ COMMAND patchelf --remove-rpath bin/release/dullahan_host
+ WORKING_DIRECTORY ${LIBS_PREBUILT_DIR}
+ )
+endif (${LINUX_DISTRO} MATCHES fedora)
+
target_include_directories( ll::cef SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/cef)
if (WINDOWS)
@@ -73,8 +123,8 @@ elseif (DARWIN)
elseif (LINUX)
target_link_libraries( ll::cef INTERFACE
- libdullahan.a
- cef
- cef_dll_wrapper.a
+ libdullahan.a
+ cef
+ cef_dll_wrapper.a
)
endif (WINDOWS)
diff --git a/indra/cmake/CMakeLists.txt b/indra/cmake/CMakeLists.txt
index 5525ac9f24..746d242560 100644
--- a/indra/cmake/CMakeLists.txt
+++ b/indra/cmake/CMakeLists.txt
@@ -24,7 +24,6 @@ set(cmake_SOURCE_FILES
FindAutobuild.cmake
FMODSTUDIO.cmake
FreeType.cmake
- GLEXT.cmake
GLH.cmake
GLM.cmake
Havok.cmake
diff --git a/indra/cmake/CURL.cmake b/indra/cmake/CURL.cmake
index 7f50975ea8..06d5927174 100644
--- a/indra/cmake/CURL.cmake
+++ b/indra/cmake/CURL.cmake
@@ -5,15 +5,13 @@ include(Linking)
include_guard()
add_library( ll::libcurl INTERFACE IMPORTED )
-if (NOT USESYSTEMLIBS)
-use_system_binary(libcurl)
-endif (NOT USESYSTEMLIBS)
-if (LINUX AND CMAKE_SYSTEM_PROCESSOR MATCHES x86_64 OR DARWIN OR NOT USESYSTEMLIBS)
+#use_system_binary(libcurl)
+if (LINUX AND CMAKE_SYSTEM_PROCESSOR MATCHES x86_64 OR DARWIN OR WINDOWS)
use_prebuilt_binary(curl)
if (DARWIN)
execute_process(
COMMAND lipo -archs libcurl.a
- WORKING_DIRECTORY ${LIBS_PREBUILT_DIR}/lib/release
+ WORKING_DIRECTORY ${ARCH_PREBUILT_DIRS_RELEASE}
OUTPUT_VARIABLE curl_archs
OUTPUT_STRIP_TRAILING_WHITESPACE
)
@@ -23,17 +21,17 @@ use_prebuilt_binary(curl)
libcurl.a
-thin ${CMAKE_OSX_ARCHITECTURES}
-output libcurl.a
- WORKING_DIRECTORY ${LIBS_PREBUILT_DIR}/lib/release
+ WORKING_DIRECTORY ${ARCH_PREBUILT_DIRS_RELEASE}
)
- endif (NOT ${curl_archs} STREQUAL ${CMAKE_OSX_ARCHITECTURES})
- endif (DARWIN)
+ endif ()
+ endif ()
elseif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/curl_installed OR NOT ${curl_installed} EQUAL 0)
if (NOT EXISTS ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1.tar.gz)
file(DOWNLOAD
https://github.com/secondlife/3p-curl/archive/refs/tags/v7.54.1-r1.tar.gz
${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1.tar.gz
)
- endif (NOT EXISTS ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1.tar.gz)
+ endif ()
file(ARCHIVE_EXTRACT
INPUT ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1.tar.gz
DESTINATION ${CMAKE_BINARY_DIR}
@@ -46,23 +44,9 @@ elseif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRA
endif ()
file(
COPY
- ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl/include/curl/curl.h
- ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl/include/curl/curlbuild.h
- ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl/include/curl/curlrules.h
- ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl/include/curl/curlver.h
- ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl/include/curl/easy.h
- ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl/include/curl/mprintf.h
- ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl/include/curl/multi.h
- ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl/include/curl/stdcheaders.h
- ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl/include/curl/system.h
- ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl/include/curl/typecheck-gcc.h
- DESTINATION ${LIBS_PREBUILT_DIR}/include/curl
- )
- file(
- COPY
- ${LIBS_PREBUILT_DIR}/lib/release/libcrypto.a
- ${LIBS_PREBUILT_DIR}/lib/release/libssl.a
- DESTINATION ${LIBS_PREBUILT_DIR}/lib
+ ${ARCH_PREBUILT_DIRS_RELEASE}/libcrypto.a
+ ${ARCH_PREBUILT_DIRS_RELEASE}/libssl.a
+ DESTINATION ${ARCH_PREBUILT_DIRS}
)
if (CMAKE_SYSTEM_NAME MATCHES FreeBSD)
message("We need to temporarily have OpenSSL3 header directory and libraries renamed just until the libcurl building process with OpenSSL1.1 now is finished.")
@@ -71,21 +55,21 @@ elseif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRA
execute_process(COMMAND sudo mv /usr/lib/libcrypto.so /usr/lib/libcrypto.so.3)
execute_process(COMMAND sudo mv /usr/lib/libssl.a /usr/lib/libssl.a.3)
execute_process(COMMAND sudo mv /usr/lib/libssl.so /usr/lib/libssl.so.3)
- endif (CMAKE_SYSTEM_NAME MATCHES FreeBSD)
+ endif ()
set(ENV{CFLAGS} "-std=c90")
execute_process(
- COMMAND ./configure --disable-alt-svc --disable-dict --disable-doh --disable-file --disable-gopher --disable-headers-api --disable-hsts --disable-imap --disable-ldap --disable-ldaps --disable-libcurl-option --disable-manual --disable-mqtt --disable-ntlm --disable-ntlm-wb --disable-pop3 --disable-rtsp --disable-shared --disable-smb --disable-smtp --disable-sspi --disable-telnet --disable-tftp --disable-tls-srp --disable-unix-sockets --disable-verbose --disable-versioned-symbols --enable-threaded-resolver --with-ssl=${LIBS_PREBUILT_DIR} --without-libidn2 --without-libpsl --without-libssh2
+ COMMAND ./configure --disable-alt-svc --disable-dict --disable-doh --disable-file --disable-gopher --disable-headers-api --disable-hsts --disable-imap --disable-ldap --disable-ldaps --disable-libcurl-option --disable-manual --disable-mqtt --disable-ntlm --disable-ntlm-wb --disable-pop3 --disable-rtsp --disable-shared --disable-smb --disable-smtp --disable-sspi --disable-telnet --disable-tftp --disable-tls-srp --disable-unix-sockets --disable-verbose --disable-versioned-symbols --enable-threaded-resolver --with-ssl=${LIBS_PREBUILT_DIR} --without-libidn2 --without-libpsl --without-libssh2 --prefix=${LIBS_PREBUILT_DIR} --libdir=${ARCH_PREBUILT_DIRS_RELEASE}
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl
)
execute_process(
COMMAND make -j${MAKE_JOBS}
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl
- RESULT_VARIABLE curl_installed
)
unset(ENV{CFLAGS})
- file(
- COPY ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl/lib/.libs/libcurl.a
- DESTINATION ${LIBS_PREBUILT_DIR}/lib/release
+ execute_process(
+ COMMAND make install
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl
+ RESULT_VARIABLE curl_installed
)
if (CMAKE_SYSTEM_NAME MATCHES FreeBSD)
execute_process(COMMAND sudo mv /usr/include/openssl3 /usr/include/openssl)
@@ -94,14 +78,14 @@ elseif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRA
execute_process(COMMAND sudo mv /usr/lib/libssl.a.3 /usr/lib/libssl.a)
execute_process(COMMAND sudo mv /usr/lib/libssl.so.3 /usr/lib/libssl.so)
message("OpenSSL3 header directory and library names have been restored.")
- endif (CMAKE_SYSTEM_NAME MATCHES FreeBSD)
+ endif ()
file(REMOVE
- ${LIBS_PREBUILT_DIR}/lib/libcrypto.a
- ${LIBS_PREBUILT_DIR}/lib/libssl.a
+ ${ARCH_PREBUILT_DIRS}/libcrypto.a
+ ${ARCH_PREBUILT_DIRS}/libssl.a
)
file(WRITE ${PREBUILD_TRACKING_DIR}/curl_installed "${curl_installed}")
-endif (LINUX AND CMAKE_SYSTEM_PROCESSOR MATCHES x86_64 OR DARWIN OR NOT USESYSTEMLIBS)
-if (WINDOWS AND NOT USESYSTEMLIBS)
+endif ()
+if (WINDOWS)
target_link_libraries(ll::libcurl INTERFACE
${ARCH_PREBUILT_DIRS_RELEASE}/libcurl.lib
ll::openssl
diff --git a/indra/cmake/FMODSTUDIO.cmake b/indra/cmake/FMODSTUDIO.cmake
index d97251885f..fb4734fe7b 100644
--- a/indra/cmake/FMODSTUDIO.cmake
+++ b/indra/cmake/FMODSTUDIO.cmake
@@ -30,8 +30,8 @@ if (USE_FMODSTUDIO)
# Note: if you're not using INSTALL_PROPRIETARY, the package URL should be local (file:/// URL)
# as accessing the private LL location will fail if you don't have the credential
include(Prebuilt)
- if (USESYSTEMLIBS AND (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/fmodstudio_installed OR NOT ${fmodstudio_installed} EQUAL 0))
- file(MAKE_DIRECTORY ${LIBS_PREBUILT_DIR}/lib/release)
+ if (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/fmodstudio_installed OR NOT ${fmodstudio_installed} EQUAL 0)
+ file(MAKE_DIRECTORY ${ARCH_PREBUILT_DIRS_RELEASE})
if (DARWIN)
execute_process(
COMMAND hdiutil attach -noverify fmodstudioapi20228mac-installer.dmg
@@ -53,7 +53,7 @@ if (USE_FMODSTUDIO)
COMMAND lipo
lib/libfmod.dylib
-thin ${CMAKE_OSX_ARCHITECTURES}
- -output ${LIBS_PREBUILT_DIR}/lib/release/libfmod.dylib
+ -output ${ARCH_PREBUILT_DIRS_RELEASE}/libfmod.dylib
WORKING_DIRECTORY /Volumes/FMOD\ Programmers\ API\ Mac/FMOD\ Programmers\ API/api/core
)
execute_process(
@@ -62,7 +62,7 @@ if (USE_FMODSTUDIO)
RESULT_VARIABLE fmodstudio_installed
)
file(WRITE ${PREBUILD_TRACKING_DIR}/fmodstudio_installed "${fmodstudio_installed}")
- else (DARWIN)
+ else ()
file(ARCHIVE_EXTRACT
INPUT $ENV{HOME}/Downloads/fmodstudioapi20228linux.tar.gz
DESTINATION ${CMAKE_BINARY_DIR}
@@ -85,7 +85,7 @@ if (USE_FMODSTUDIO)
${CMAKE_BINARY_DIR}/fmodstudioapi20228linux/api/core/lib/arm64/libfmod.so
${CMAKE_BINARY_DIR}/fmodstudioapi20228linux/api/core/lib/arm64/libfmod.so.13
${CMAKE_BINARY_DIR}/fmodstudioapi20228linux/api/core/lib/arm64/libfmod.so.13.28
- DESTINATION ${LIBS_PREBUILT_DIR}/lib/release
+ DESTINATION ${ARCH_PREBUILT_DIRS_RELEASE}
FOLLOW_SYMLINK_CHAIN
)
else ()
@@ -94,15 +94,15 @@ if (USE_FMODSTUDIO)
${CMAKE_BINARY_DIR}/fmodstudioapi20228linux/api/core/lib/${CMAKE_SYSTEM_PROCESSOR}/libfmod.so
${CMAKE_BINARY_DIR}/fmodstudioapi20228linux/api/core/lib/${CMAKE_SYSTEM_PROCESSOR}/libfmod.so.13
${CMAKE_BINARY_DIR}/fmodstudioapi20228linux/api/core/lib/${CMAKE_SYSTEM_PROCESSOR}/libfmod.so.13.28
- DESTINATION ${LIBS_PREBUILT_DIR}/lib/release
+ DESTINATION ${ARCH_PREBUILT_DIRS_RELEASE}
FOLLOW_SYMLINK_CHAIN
)
- endif (CMAKE_SYSTEM_PROCESSOR MATCHES aarch64)
+ endif ()
file(WRITE ${PREBUILD_TRACKING_DIR}/fmodstudio_installed "0")
- endif (DARWIN)
- else (USESYSTEMLIBS AND (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/fmodstudio_installed OR NOT ${fmodstudio_installed} EQUAL 0))
- use_prebuilt_binary(fmodstudio)
- endif (USESYSTEMLIBS AND (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/fmodstudio_installed OR NOT ${fmodstudio_installed} EQUAL 0))
+ endif ()
+ endif ()
+
+ #use_prebuilt_binary(fmodstudio)
if (WINDOWS)
target_link_libraries( ll::fmodstudio INTERFACE fmod_vc)
elseif (DARWIN)
diff --git a/indra/cmake/FreeType.cmake b/indra/cmake/FreeType.cmake
index 7683fe364a..d5c7891032 100644
--- a/indra/cmake/FreeType.cmake
+++ b/indra/cmake/FreeType.cmake
@@ -5,14 +5,13 @@ include(Linking)
include_guard()
add_library( ll::freetype INTERFACE IMPORTED )
-if (USESYSTEMLIBS)
- include(FindPkgConfig)
- pkg_check_modules(Freetype REQUIRED freetype2)
- target_include_directories( ll::freetype SYSTEM INTERFACE ${Freetype_INCLUDE_DIRS} )
- target_link_directories( ll::freetype INTERFACE ${Freetype_LIBRARY_DIRS} )
- target_link_libraries( ll::freetype INTERFACE ${Freetype_LIBRARIES} )
- return ()
-endif (USESYSTEMLIBS)
+include(FindPkgConfig)
+pkg_check_modules(Freetype REQUIRED freetype2)
+target_include_directories( ll::freetype SYSTEM INTERFACE ${Freetype_INCLUDE_DIRS} )
+target_link_directories( ll::freetype INTERFACE ${Freetype_LIBRARY_DIRS} )
+target_link_libraries( ll::freetype INTERFACE ${Freetype_LIBRARIES} )
+return ()
+
use_system_binary(freetype)
use_prebuilt_binary(freetype)
target_include_directories( ll::freetype SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/freetype2/)
diff --git a/indra/cmake/GLEXT.cmake b/indra/cmake/GLEXT.cmake
index ea349237d3..a780966f0c 100644
--- a/indra/cmake/GLEXT.cmake
+++ b/indra/cmake/GLEXT.cmake
@@ -3,10 +3,7 @@ include(Prebuilt)
include(GLH)
add_library( ll::glext INTERFACE IMPORTED )
-
-if (USESYSTEMLIBS)
- return ()
-endif ()
-
use_system_binary(glext)
use_prebuilt_binary(glext)
+
+
diff --git a/indra/cmake/GLH.cmake b/indra/cmake/GLH.cmake
index 648a08454b..ac86f385c6 100644
--- a/indra/cmake/GLH.cmake
+++ b/indra/cmake/GLH.cmake
@@ -4,7 +4,5 @@ include(Prebuilt)
add_library( ll::glh_linear INTERFACE IMPORTED )
target_include_directories( ll::glh_linear SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include)
-if (NOT USESYSTEMLIBS)
-use_system_binary( glh_linear )
-endif (NOT USESYSTEMLIBS)
+#use_system_binary( glh_linear )
use_prebuilt_binary(glh_linear)
diff --git a/indra/cmake/GLM.cmake b/indra/cmake/GLM.cmake
index d411c049ec..db6acc065e 100644
--- a/indra/cmake/GLM.cmake
+++ b/indra/cmake/GLM.cmake
@@ -3,12 +3,9 @@ include(Prebuilt)
add_library( ll::glm INTERFACE IMPORTED )
-if (NOT USESYSTEMLIBS)
-use_system_binary( glm )
-elseif (NOT (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu) OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed)))
- find_package( glm REQUIRED )
-endif (NOT USESYSTEMLIBS)
-
-if (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu) OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed) OR NOT USESYSTEMLIBS)
+#use_system_binary( glm )
+if (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu) OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed))
use_prebuilt_binary(glm)
+elseif (NOT WINDOWS)
+ find_package( glm REQUIRED )
endif ()
diff --git a/indra/cmake/LLCommon.cmake b/indra/cmake/LLCommon.cmake
index dd43ca4916..91e376352f 100644
--- a/indra/cmake/LLCommon.cmake
+++ b/indra/cmake/LLCommon.cmake
@@ -1,8 +1,8 @@
# -*- cmake -*-
+include(EXPAT)
include(APR)
include(Boost)
-include(EXPAT)
include(Tracy)
include(xxHash)
include(ZLIBNG)
diff --git a/indra/cmake/LLPrimitive.cmake b/indra/cmake/LLPrimitive.cmake
index d94def5808..3429a744f5 100644
--- a/indra/cmake/LLPrimitive.cmake
+++ b/indra/cmake/LLPrimitive.cmake
@@ -18,121 +18,87 @@ if( USE_CONAN )
"${CONAN_INCLUDE_DIRS_COLLADADOM}/collada-dom/1.4/" )
endif()
-if( USESYSTEMLIBS )
- if( WINDOWS )
- include(FindPkgConfig)
- pkg_check_modules(Colladadom REQUIRED collada-dom-141)
- target_compile_definitions( ll::colladadom INTERFACE COLLADA_DOM_SUPPORT141 )
- target_include_directories( ll::colladadom SYSTEM INTERFACE ${Colladadom_INCLUDE_DIRS} )
- target_link_directories( ll::colladadom INTERFACE ${Colladadom_LIBRARY_DIRS} )
- target_link_libraries( ll::colladadom INTERFACE ${Colladadom_LIBRARIES} )
- return ()
- elseif( LINUX OR CMAKE_SYSTEM_NAME MATCHES FreeBSD )
- # Build of the collada-dom for Linux and FreeBSD is done in
- # indra/llprimitive/CMakeLists.txt
- return ()
- else( WINDOWS )
- include(FindPkgConfig)
- pkg_check_modules(Minizip REQUIRED minizip)
- pkg_check_modules(Libxml2 REQUIRED libxml-2.0)
- target_link_libraries( ll::minizip-ng INTERFACE ${Minizip_LIBRARIES} )
- target_link_libraries( ll::libxml INTERFACE ${Libxml2_LIBRARIES} )
- if( ${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/colladadom_installed OR NOT ${colladadom_installed} EQUAL 0 )
- if( NOT EXISTS ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8.tar.gz )
- file(DOWNLOAD
- https://github.com/secondlife/3p-colladadom/archive/refs/tags/v2.3-r8.tar.gz
- ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8.tar.gz
- )
- endif( NOT EXISTS ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8.tar.gz )
- file(ARCHIVE_EXTRACT
- INPUT ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8.tar.gz
- DESTINATION ${CMAKE_BINARY_DIR}
+if( LINUX OR CMAKE_SYSTEM_NAME MATCHES FreeBSD )
+ # Build of the collada-dom for Linux and FreeBSD is done in
+ # indra/llprimitive/CMakeLists.txt
+ return()
+elseif ( NOT WINDOWS )
+ include(FindPkgConfig)
+ pkg_check_modules(Minizip REQUIRED minizip)
+ pkg_check_modules(Libxml2 REQUIRED libxml-2.0)
+ target_link_libraries( ll::minizip-ng INTERFACE ${Minizip_LIBRARIES} )
+ target_link_libraries( ll::libxml INTERFACE ${Libxml2_LIBRARIES} )
+ if( ${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/colladadom_installed OR NOT ${colladadom_installed} EQUAL 0 )
+ if( NOT EXISTS ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8.tar.gz )
+ file(DOWNLOAD
+ https://github.com/secondlife/3p-colladadom/archive/refs/tags/v2.3-r8.tar.gz
+ ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8.tar.gz
)
- file(MAKE_DIRECTORY ${LIBS_PREBUILT_DIR}/include/collada/1.4)
- if( DARWIN )
- try_compile(COLLADADOM_RESULT
- PROJECT colladadom
- SOURCE_DIR ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8
- BINARY_DIR ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8
- TARGET collada14dom
- CMAKE_FLAGS
- -DCMAKE_CXX_STANDARD:STRING=17
- -DCMAKE_CXX_FLAGS:STRING=-I${Minizip_INCLUDE_DIRS}
- "-DCMAKE_SHARED_LINKER_FLAGS:STRING=-L${Minizip_LIBRARY_DIRS} -L${Minizip_LIBRARY_DIRS}exec/boost/1.87/lib"
- -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES}
- -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=${CMAKE_OSX_DEPLOYMENT_TARGET}
- -DZLIB_LIBRARIES:STRING=${Libxml2_LIBRARIES}
- -DBoost_FILESYSTEM_LIBRARY:STRING=boost_filesystem-mt
- -DBoost_SYSTEM_LIBRARY:STRING=boost_system-mt
- -DEXTRA_COMPILE_FLAGS:STRING=-I${Libxml2_INCLUDE_DIRS}
- -DBoost_CFLAGS:STRING=-I${Libxml2_LIBRARY_DIRS}exec/boost/1.87/include
- -DOPT_COLLADA14:BOOL=ON
- -DCOLLADA_DOM_INCLUDE_INSTALL_DIR:FILEPATH=${LIBS_PREBUILT_DIR}/include/collada
- -DCOLLADA_DOM_SOVERSION:STRING=0
- -DCOLLADA_DOM_VERSION:STRING=2.3-r8
- OUTPUT_VARIABLE colladadom_installed
- )
- if( ${COLLADADOM_RESULT} )
- file(
- COPY
- ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8/src/1.4/libcollada14dom.2.3-r8.dylib
- ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8/src/1.4/libcollada14dom.0.dylib
- ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8/src/1.4/libcollada14dom.dylib
- DESTINATION ${LIBS_PREBUILT_DIR}/lib/release
- FOLLOW_SYMLINK_CHAIN
- )
- endif( ${COLLADADOM_RESULT} )
- else( DARWIN )
- execute_process(
- COMMAND sed -i "" -e "s/SHARED/STATIC/g" 1.4/CMakeLists.txt
- WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8/src
- )
- try_compile(COLLADADOM_RESULT
- PROJECT colladadom
- SOURCE_DIR ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8
- BINARY_DIR ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8
- TARGET collada14dom
- CMAKE_FLAGS
- -DCMAKE_CXX_STANDARD:STRING=17
- -DCMAKE_CXX_FLAGS:STRING=-I${Minizip_INCLUDE_DIRS}
- -DCMAKE_SHARED_LINKER_FLAGS:STRING=-L${Minizip_LIBRARY_DIRS}
- -DZLIB_LIBRARIES:STRING=${Libxml2_LIBRARIES}
- -DBoost_FILESYSTEM_LIBRARY:STRING=boost_filesystem
- -DBoost_SYSTEM_LIBRARY:STRING=boost_system
- -DEXTRA_COMPILE_FLAGS:STRING=-I${Libxml2_INCLUDE_DIRS}
- -DOPT_COLLADA14:BOOL=ON
- -DCOLLADA_DOM_INCLUDE_INSTALL_DIR:FILEPATH=${LIBS_PREBUILT_DIR}/include/collada
- -DCOLLADA_DOM_SOVERSION:STRING=0
- -DCOLLADA_DOM_VERSION:STRING=2.3-r8
- OUTPUT_VARIABLE colladadom_installed
- )
- if( ${COLLADADOM_RESULT} )
- file(
- COPY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8/src/1.4/libcollada14dom.a
- DESTINATION ${LIBS_PREBUILT_DIR}/lib/release
- )
- endif( ${COLLADADOM_RESULT} )
- endif( DARWIN )
- if( ${COLLADADOM_RESULT} )
- file(REMOVE_RECURSE ${LIBS_PREBUILT_DIR}/include/collada/1.4)
- file(
- COPY
- ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8/include/1.4
- ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8/include/1.5
- ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8/include/dae
- ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8/include/dae.h
- ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8/include/dom.h
- ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8/include/modules
- DESTINATION ${LIBS_PREBUILT_DIR}/include/collada
- )
- file(WRITE ${PREBUILD_TRACKING_DIR}/colladadom_installed "${colladadom_installed}")
- endif( ${COLLADADOM_RESULT} )
- endif( ${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/colladadom_installed OR NOT ${colladadom_installed} EQUAL 0 )
- endif( WINDOWS )
-else( USESYSTEMLIBS )
-use_system_binary( colladadom )
+ endif()
+ file(ARCHIVE_EXTRACT
+ INPUT ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8.tar.gz
+ DESTINATION ${CMAKE_BINARY_DIR}
+ )
+ if ( WINDOWS )
+ execute_process(
+ COMMAND sed -i "s/SHARED/STATIC/g" CMakeLists.txt
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8/src/1.4
+ )
+ set(BOOST_LIBRARY_SUFFIX -vc143-mt-x64-1_88)
+ else ()
+ execute_process(
+ COMMAND sed -i "" -e "s/SHARED/STATIC/g" CMakeLists.txt
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8/src/1.4
+ )
+ endif ()
+ if( DARWIN )
+ set(BOOST_CFLAGS -I${Libxml2_LIBRARY_DIRS}exec/boost/1.87/include)
+ set(BOOST_LIBS -L${Minizip_LIBRARY_DIRS}exec/boost/1.87/lib)
+ set(BOOST_LIBRARY_SUFFIX -mt)
+ endif()
+ file(MAKE_DIRECTORY ${LIBS_PREBUILT_DIR}/include/collada/1.4)
+ try_compile(COLLADADOM_RESULT
+ PROJECT colladadom
+ SOURCE_DIR ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8
+ BINARY_DIR ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8
+ TARGET collada14dom
+ CMAKE_FLAGS
+ -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
+ -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES}
+ -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=${CMAKE_OSX_DEPLOYMENT_TARGET}
+ -DCMAKE_INSTALL_PREFIX:PATH=${LIBS_PREBUILT_DIR}
+ -DCMAKE_CXX_STANDARD:STRING=17
+ -DCMAKE_CXX_FLAGS:STRING=-I${Minizip_INCLUDE_DIRS}
+ -DBoost_CFLAGS:STRING=${BOOST_CFLAGS}
+ -DEXTRA_COMPILE_FLAGS:STRING=-I${Libxml2_INCLUDE_DIRS}
+ "-DCMAKE_SHARED_LINKER_FLAGS:STRING=-L${Minizip_LIBRARY_DIRS} ${BOOST_LIBS}"
+ -DBoost_FILESYSTEM_LIBRARY:STRING=boost_filesystem${BOOST_LIBRARY_SUFFIX}
+ -DBoost_SYSTEM_LIBRARY:STRING=boost_system${BOOST_LIBRARY_SUFFIX}
+ -DZLIB_LIBRARIES:STRING=${Libxml2_LIBRARIES}
+ -DOPT_COLLADA14:BOOL=ON
+ -DCOLLADA_DOM_INCLUDE_INSTALL_DIR:PATH=${LIBS_PREBUILT_DIR}/include/collada
+ )
+ if( ${COLLADADOM_RESULT} )
+ execute_process(
+ COMMAND ${CMAKE_MAKE_PROGRAM} install
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r8
+ OUTPUT_VARIABLE colladadom_installed
+ )
+ file(RENAME
+ ${ARCH_PREBUILT_DIRS}/libcollada14dom.a
+ ${ARCH_PREBUILT_DIRS_RELEASE}/libcollada14dom.a
+ )
+ file(WRITE ${PREBUILD_TRACKING_DIR}/colladadom_installed "${colladadom_installed}")
+ endif()
+ endif()
+endif()
+
+#use_system_binary( colladadom )
+if (WINDOWS)
use_prebuilt_binary(colladadom)
+endif ()
+if( FALSE )
use_prebuilt_binary(minizip-ng) # needed for colladadom
use_prebuilt_binary(libxml2)
@@ -147,7 +113,7 @@ if (WINDOWS)
else()
target_link_libraries( ll::libxml INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libxml2.a)
endif()
-endif( USESYSTEMLIBS )
+endif( FALSE )
target_include_directories( ll::colladadom SYSTEM INTERFACE
${LIBS_PREBUILT_DIR}/include/collada
diff --git a/indra/cmake/LLWindow.cmake b/indra/cmake/LLWindow.cmake
index 31907d31df..34df3ad33b 100644
--- a/indra/cmake/LLWindow.cmake
+++ b/indra/cmake/LLWindow.cmake
@@ -1,26 +1,25 @@
# -*- cmake -*-
include(Variables)
-include(GLEXT)
+include(GLH)
include(Prebuilt)
include_guard()
add_library( ll::SDL INTERFACE IMPORTED )
-if (USESYSTEMLIBS AND NOT (WINDOWS OR DARWIN))
+if (NOT (WINDOWS OR DARWIN))
include(FindPkgConfig)
pkg_check_modules(Sdl2 REQUIRED sdl2)
target_compile_definitions( ll::SDL INTERFACE LL_SDL=1)
target_include_directories(ll::SDL SYSTEM INTERFACE ${Sdl2_INCLUDE_DIRS})
target_link_directories(ll::SDL INTERFACE ${Sdl2_LIBRARY_DIRS})
- if (LINUX OR CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
+ if (LINUX OR CMAKE_SYSTEM_NAME MATCHES FreeBSD)
list(APPEND Sdl2_LIBRARIES X11)
endif ()
target_link_libraries(ll::SDL INTERFACE ${Sdl2_LIBRARIES})
return ()
endif ()
-
if (LINUX)
#Must come first as use_system_binary can exit this file early
target_compile_definitions( ll::SDL INTERFACE LL_SDL_VERSION=2 LL_SDL)
diff --git a/indra/cmake/LibVLCPlugin.cmake b/indra/cmake/LibVLCPlugin.cmake
index 779576a485..5ed77af0c2 100644
--- a/indra/cmake/LibVLCPlugin.cmake
+++ b/indra/cmake/LibVLCPlugin.cmake
@@ -5,56 +5,41 @@ include(Prebuilt)
include_guard()
add_library( ll::libvlc INTERFACE IMPORTED )
-if (USESYSTEMLIBS)
- if (DARWIN)
- if (CMAKE_OSX_ARCHITECTURES MATCHES arm64)
- if (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/vlc_installed OR NOT ${vlc_installed} EQUAL 0)
- if (NOT EXISTS ${CMAKE_BINARY_DIR}/vlc-3.0.21-arm64.dmg)
- file(DOWNLOAD
- https://get.videolan.org/vlc/3.0.21/macosx/vlc-3.0.21-arm64.dmg
- ${CMAKE_BINARY_DIR}/vlc-3.0.21-arm64.dmg
- )
- endif (NOT EXISTS ${CMAKE_BINARY_DIR}/vlc-3.0.21-arm64.dmg)
- file(WRITE ${PREBUILD_TRACKING_DIR}/vlc_installed "0")
- endif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/vlc_installed OR NOT ${vlc_installed} EQUAL 0)
- execute_process(
- COMMAND hdiutil attach -noverify vlc-3.0.21-arm64.dmg
- WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+if (DARWIN)
+ if (CMAKE_OSX_ARCHITECTURES MATCHES x86_64)
+ set(ARCHITECTURE intel64)
+ else ()
+ set(ARCHITECTURE ${CMAKE_OSX_ARCHITECTURES})
+ endif ()
+ if (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/vlc_installed OR NOT ${vlc_installed} EQUAL 0)
+ if (NOT EXISTS ${CMAKE_BINARY_DIR}/vlc-3.0.21-${ARCHITECTURE}.dmg)
+ file(DOWNLOAD
+ https://get.videolan.org/vlc/3.0.21/macosx/vlc-3.0.21-${ARCHITECTURE}.dmg
+ ${CMAKE_BINARY_DIR}/vlc-3.0.21-${ARCHITECTURE}.dmg
)
- else (CMAKE_OSX_ARCHITECTURES MATCHES arm64)
- if (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/vlc_installed OR NOT ${vlc_installed} EQUAL 0)
- if (NOT EXISTS ${CMAKE_BINARY_DIR}/vlc-3.0.21-intel64.dmg)
- file(DOWNLOAD
- https://get.videolan.org/vlc/3.0.21/macosx/vlc-3.0.21-intel64.dmg
- ${CMAKE_BINARY_DIR}/vlc-3.0.21-intel64.dmg
- )
- endif (NOT EXISTS ${CMAKE_BINARY_DIR}/vlc-3.0.21-intel64.dmg)
- file(WRITE ${PREBUILD_TRACKING_DIR}/vlc_installed "0")
- endif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/vlc_installed OR NOT ${vlc_installed} EQUAL 0)
- execute_process(
- COMMAND hdiutil attach -noverify vlc-3.0.21-intel64.dmg
- WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
- )
- endif (CMAKE_OSX_ARCHITECTURES MATCHES arm64)
- target_include_directories( ll::libvlc SYSTEM INTERFACE /Volumes/VLC\ media\ player/VLC.app/Contents/MacOS/include)
- target_link_directories( ll::libvlc INTERFACE /Volumes/VLC\ media\ player/VLC.app/Contents/MacOS/lib)
- target_link_libraries( ll::libvlc INTERFACE vlc vlccore )
- else (DARWIN)
- include(FindPkgConfig)
- pkg_check_modules(Libvlc REQUIRED libvlc vlc-plugin)
- target_include_directories( ll::libvlc SYSTEM INTERFACE ${Libvlc_INCLUDE_DIRS} )
- target_link_directories( ll::libvlc INTERFACE ${Libvlc_LIBRARY_DIRS} )
- target_link_libraries( ll::libvlc INTERFACE ${Libvlc_LIBRARIES} )
- endif (DARWIN)
- set(LIBVLCPLUGIN ON CACHE BOOL
- "LIBVLCPLUGIN support for the llplugin/llmedia test apps.")
- return()
-else (USESYSTEMLIBS)
+ endif ()
+ file(WRITE ${PREBUILD_TRACKING_DIR}/vlc_installed "0")
+ endif ()
+ execute_process(
+ COMMAND hdiutil attach -noverify vlc-3.0.21-${ARCHITECTURE}.dmg
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+ )
+ target_include_directories( ll::libvlc SYSTEM INTERFACE /Volumes/VLC\ media\ player/VLC.app/Contents/MacOS/include)
+ target_link_directories( ll::libvlc INTERFACE /Volumes/VLC\ media\ player/VLC.app/Contents/MacOS/lib)
+ target_link_libraries( ll::libvlc INTERFACE vlc vlccore )
+else ()
+ include(FindPkgConfig)
+ pkg_check_modules(Libvlc REQUIRED libvlc vlc-plugin)
+ target_include_directories( ll::libvlc SYSTEM INTERFACE ${Libvlc_INCLUDE_DIRS} )
+ target_link_directories( ll::libvlc INTERFACE ${Libvlc_LIBRARY_DIRS} )
+ target_link_libraries( ll::libvlc INTERFACE ${Libvlc_LIBRARIES} )
+endif ()
-use_prebuilt_binary(vlc-bin)
+#use_prebuilt_binary(vlc-bin)
set(LIBVLCPLUGIN ON CACHE BOOL
"LIBVLCPLUGIN support for the llplugin/llmedia test apps.")
-endif (USESYSTEMLIBS)
+
+return()
if (WINDOWS)
target_link_libraries( ll::libvlc INTERFACE
diff --git a/indra/cmake/Linking.cmake b/indra/cmake/Linking.cmake
index 8e91dac109..a1a24de04b 100644
--- a/indra/cmake/Linking.cmake
+++ b/indra/cmake/Linking.cmake
@@ -67,7 +67,6 @@ elseif (WINDOWS)
legacy_stdio_definitions
)
elseif (DARWIN)
- include(CMakeFindFrameworks)
find_library(COREFOUNDATION_LIBRARY CoreFoundation)
find_library(CARBON_LIBRARY Carbon)
find_library(COCOA_LIBRARY Cocoa)
diff --git a/indra/cmake/Meshoptimizer.cmake b/indra/cmake/Meshoptimizer.cmake
index 20eef33d7c..5058614580 100644
--- a/indra/cmake/Meshoptimizer.cmake
+++ b/indra/cmake/Meshoptimizer.cmake
@@ -6,15 +6,14 @@ include(Prebuilt)
include_guard()
add_library( ll::meshoptimizer INTERFACE IMPORTED )
-if (NOT USESYSTEMLIBS)
-use_system_binary(meshoptimizer)
-elseif (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu) OR CMAKE_SYSTEM_NAME MATCHES FreeBSD)
- find_package(meshoptimizer)
+#use_system_binary(meshoptimizer)
+if (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu) OR CMAKE_SYSTEM_NAME MATCHES FreeBSD OR WINDOWS)
+ if (NOT WINDOWS)
+ find_package(meshoptimizer)
+ endif ()
target_link_libraries( ll::meshoptimizer INTERFACE meshoptimizer)
return ()
-endif (NOT USESYSTEMLIBS)
-
-if (LINUX AND CMAKE_SYSTEM_PROCESSOR MATCHES x86_64 AND NOT (${LINUX_DISTRO} MATCHES gentoo) OR NOT USESYSTEMLIBS)
+elseif (LINUX AND CMAKE_SYSTEM_PROCESSOR MATCHES x86_64 AND NOT (${LINUX_DISTRO} MATCHES gentoo))
use_prebuilt_binary(meshoptimizer)
elseif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/meshoptimizer_installed OR NOT ${meshoptimizer_installed} EQUAL 0)
if (NOT EXISTS ${CMAKE_BINARY_DIR}/meshoptimizer-0.21.tar.gz)
@@ -22,47 +21,38 @@ elseif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRA
https://github.com/zeux/meshoptimizer/archive/refs/tags/v0.21.tar.gz
${CMAKE_BINARY_DIR}/meshoptimizer-0.21.tar.gz
)
- endif (NOT EXISTS ${CMAKE_BINARY_DIR}/meshoptimizer-0.21.tar.gz)
+ endif ()
file(ARCHIVE_EXTRACT
INPUT ${CMAKE_BINARY_DIR}/meshoptimizer-0.21.tar.gz
DESTINATION ${CMAKE_BINARY_DIR}
)
- if (DARWIN)
- try_compile(MESHOPTIMIZER_RESULT
- PROJECT meshoptimizer
- SOURCE_DIR ${CMAKE_BINARY_DIR}/meshoptimizer-0.21
- BINARY_DIR ${CMAKE_BINARY_DIR}/meshoptimizer-0.21
- TARGET meshoptimizer
- CMAKE_FLAGS
- -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=${CMAKE_OSX_DEPLOYMENT_TARGET}
- OUTPUT_VARIABLE meshoptimizer_installed
- )
- else ()
- try_compile(MESHOPTIMIZER_RESULT
- PROJECT meshoptimizer
- SOURCE_DIR ${CMAKE_BINARY_DIR}/meshoptimizer-0.21
- BINARY_DIR ${CMAKE_BINARY_DIR}/meshoptimizer-0.21
- TARGET meshoptimizer
- OUTPUT_VARIABLE meshoptimizer_installed
- )
- endif (DARWIN)
+ try_compile(MESHOPTIMIZER_RESULT
+ PROJECT meshoptimizer
+ SOURCE_DIR ${CMAKE_BINARY_DIR}/meshoptimizer-0.21
+ BINARY_DIR ${CMAKE_BINARY_DIR}/meshoptimizer-0.21
+ TARGET meshoptimizer
+ CMAKE_FLAGS
+ -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
+ -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES}
+ -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=${CMAKE_OSX_DEPLOYMENT_TARGET}
+ -DCMAKE_INSTALL_PREFIX:PATH=${LIBS_PREBUILT_DIR}
+ -DCMAKE_INSTALL_LIBDIR:PATH=${ARCH_PREBUILT_DIRS_RELEASE}
+ -DCMAKE_INSTALL_INCLUDEDIR:PATH=${LIBS_PREBUILT_DIR}/include/meshoptimizer
+ )
if (${MESHOPTIMIZER_RESULT})
- file(
- COPY ${CMAKE_BINARY_DIR}/meshoptimizer-0.21/src/meshoptimizer.h
- DESTINATION ${LIBS_PREBUILT_DIR}/include/meshoptimizer
- )
- file(
- COPY ${CMAKE_BINARY_DIR}/meshoptimizer-0.21/libmeshoptimizer.a
- DESTINATION ${LIBS_PREBUILT_DIR}/lib/release
+ execute_process(
+ COMMAND ${CMAKE_MAKE_PROGRAM} install
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/meshoptimizer-0.21
+ OUTPUT_VARIABLE meshoptimizer_installed
)
file(WRITE ${PREBUILD_TRACKING_DIR}/meshoptimizer_installed "${meshoptimizer_installed}")
- endif (${MESHOPTIMIZER_RESULT})
-endif (LINUX AND CMAKE_SYSTEM_PROCESSOR MATCHES x86_64 AND NOT (${LINUX_DISTRO} MATCHES gentoo) OR NOT USESYSTEMLIBS)
+ endif ()
+endif ()
-if (NOT USESYSTEMLIBS AND WINDOWS)
+if (WINDOWS)
target_link_libraries( ll::meshoptimizer INTERFACE meshoptimizer.lib)
-else (NOT USESYSTEMLIBS AND WINDOWS)
+else ()
target_link_libraries( ll::meshoptimizer INTERFACE libmeshoptimizer.a)
-endif (NOT USESYSTEMLIBS AND WINDOWS)
+endif (WINDOWS)
target_include_directories( ll::meshoptimizer SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/meshoptimizer)
diff --git a/indra/cmake/NDOF.cmake b/indra/cmake/NDOF.cmake
index 0b0a2b6ca9..d6e5e53ac9 100644
--- a/indra/cmake/NDOF.cmake
+++ b/indra/cmake/NDOF.cmake
@@ -8,9 +8,8 @@ add_library( ll::ndof INTERFACE IMPORTED )
if (NDOF)
if (WINDOWS OR DARWIN)
- if (NOT USESYSTEMLIBS)
- use_prebuilt_binary(libndofdev)
- elseif (DARWIN AND (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/libndofdev_installed OR NOT ${libndofdev_installed} EQUAL 0))
+ #use_prebuilt_binary(libndofdev)
+ if (DARWIN AND (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/libndofdev_installed OR NOT ${libndofdev_installed} EQUAL 0))
file(DOWNLOAD
https://github.com/secondlife/3p-libndofdev/archive/refs/tags/v0.1.8e9edc7.tar.gz
${CMAKE_BINARY_DIR}/3p-libndofdev-0.1.8e9edc7.tar.gz
@@ -25,8 +24,10 @@ if (NDOF)
BINARY_DIR ${CMAKE_BINARY_DIR}/3p-libndofdev-0.1.8e9edc7/libndofdev
TARGET ndofdev
CMAKE_FLAGS
- -DCMAKE_C_FLAGS:STRING=-DTARGET_OS_MAC\ -Wno-int-conversion
+ -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
+ -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES}
-DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=${CMAKE_OSX_DEPLOYMENT_TARGET}
+ -DCMAKE_C_FLAGS:STRING=-DTARGET_OS_MAC\ -Wno-int-conversion
OUTPUT_VARIABLE libndofdev_installed
)
if (${LIBNDOFDEV_RESULT})
@@ -36,11 +37,11 @@ if (NDOF)
)
file(
COPY ${CMAKE_BINARY_DIR}/3p-libndofdev-0.1.8e9edc7/libndofdev/src/libndofdev.dylib
- DESTINATION ${LIBS_PREBUILT_DIR}/lib/release
+ DESTINATION ${ARCH_PREBUILT_DIRS_RELEASE}
)
file(WRITE ${PREBUILD_TRACKING_DIR}/libndofdev_installed "${libndofdev_installed}")
- endif (${LIBNDOFDEV_RESULT})
- endif (NOT USESYSTEMLIBS)
+ endif ()
+ endif ()
elseif (LINUX)
use_prebuilt_binary(open-libndofdev)
endif (WINDOWS OR DARWIN)
diff --git a/indra/cmake/OPENAL.cmake b/indra/cmake/OPENAL.cmake
index 6555027dc1..f63e55cdf3 100644
--- a/indra/cmake/OPENAL.cmake
+++ b/indra/cmake/OPENAL.cmake
@@ -19,15 +19,13 @@ endif()
if (USE_OPENAL)
add_library( ll::openal INTERFACE IMPORTED )
- if (NOT (USE_AUTOBUILD_3P OR USE_CONAN))
- target_compile_definitions( ll::openal INTERFACE LL_OPENAL=1)
- include(FindPkgConfig)
- pkg_check_modules(Openal REQUIRED freealut)
- target_include_directories(ll::openal SYSTEM INTERFACE ${Openal_INCLUDE_DIRS})
- target_link_directories(ll::openal INTERFACE ${Openal_LIBRARY_DIRS})
- target_link_libraries(ll::openal INTERFACE ${Openal_LIBRARIES})
- return ()
- endif ()
+ target_compile_definitions( ll::openal INTERFACE LL_OPENAL=1)
+ include(FindPkgConfig)
+ pkg_check_modules(Openal REQUIRED freealut)
+ target_include_directories(ll::openal SYSTEM INTERFACE ${Openal_INCLUDE_DIRS})
+ target_link_directories(ll::openal INTERFACE ${Openal_LIBRARY_DIRS})
+ target_link_libraries(ll::openal INTERFACE ${Openal_LIBRARIES})
+ return ()
target_include_directories( ll::openal SYSTEM INTERFACE "${LIBS_PREBUILT_DIR}/include/AL")
target_compile_definitions( ll::openal INTERFACE LL_OPENAL=1)
diff --git a/indra/cmake/OpenJPEG.cmake b/indra/cmake/OpenJPEG.cmake
index d4304f93b3..5729f6a10e 100644
--- a/indra/cmake/OpenJPEG.cmake
+++ b/indra/cmake/OpenJPEG.cmake
@@ -4,64 +4,70 @@ include(Prebuilt)
include_guard()
add_library( ll::openjpeg INTERFACE IMPORTED )
-if (NOT USESYSTEMLIBS)
-use_system_binary(openjpeg)
-endif (NOT USESYSTEMLIBS)
-if (LINUX AND CMAKE_SYSTEM_PROCESSOR MATCHES x86_64 OR NOT USESYSTEMLIBS)
-use_prebuilt_binary(openjpeg)
-elseif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/openjpeg_installed OR NOT ${openjpeg_installed} EQUAL 0)
- if (NOT EXISTS ${CMAKE_BINARY_DIR}/3p-openjpeg-2.5.0.ea12248.tar.gz)
+#use_system_binary(openjpeg)
+#use_prebuilt_binary(openjpeg)
+
+if (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/openjpeg_installed OR NOT ${openjpeg_installed} EQUAL 0)
+ if (NOT EXISTS ${CMAKE_BINARY_DIR}/openjpeg-2.5.3.tar.gz)
file(DOWNLOAD
- https://github.com/secondlife/3p-openjpeg/archive/refs/tags/v2.5.0.ea12248.tar.gz
- ${CMAKE_BINARY_DIR}/3p-openjpeg-2.5.0.ea12248.tar.gz
+ https://github.com/uclouvain/openjpeg/archive/refs/tags/v2.5.3.tar.gz
+ ${CMAKE_BINARY_DIR}/openjpeg-2.5.3.tar.gz
)
- endif (NOT EXISTS ${CMAKE_BINARY_DIR}/3p-openjpeg-2.5.0.ea12248.tar.gz)
+ endif ()
file(ARCHIVE_EXTRACT
- INPUT ${CMAKE_BINARY_DIR}/3p-openjpeg-2.5.0.ea12248.tar.gz
+ INPUT ${CMAKE_BINARY_DIR}/openjpeg-2.5.3.tar.gz
DESTINATION ${CMAKE_BINARY_DIR}
)
- if (DARWIN)
+
+ if (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu))
try_compile(OPENJPEG_RESULT
PROJECT OPENJPEG
- SOURCE_DIR ${CMAKE_BINARY_DIR}/3p-openjpeg-2.5.0.ea12248/openjpeg
- BINARY_DIR ${CMAKE_BINARY_DIR}/3p-openjpeg-2.5.0.ea12248/openjpeg
+ SOURCE_DIR ${CMAKE_BINARY_DIR}/openjpeg-2.5.3
+ BINARY_DIR ${CMAKE_BINARY_DIR}/openjpeg-2.5.3
TARGET openjp2
CMAKE_FLAGS
- -DBUILD_SHARED_LIBS:BOOL=${BUILD_SHARED_LIBS}
- -DCMAKE_BUILD_WITH_INSTALL_RPATH:BOOL=ON
+ -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
+ -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES}
-DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=${CMAKE_OSX_DEPLOYMENT_TARGET}
- OUTPUT_VARIABLE openjpeg_installed
+ -DCMAKE_INSTALL_PREFIX:PATH=${LIBS_PREBUILT_DIR}
+ -DCMAKE_INSTALL_LIBDIR:PATH=${ARCH_PREBUILT_DIRS_RELEASE}
+ -DCMAKE_BUILD_WITH_INSTALL_RPATH:BOOL=ON
+ -DBUILD_SHARED_LIBS:BOOL=${BUILD_SHARED_LIBS}
+ -DBUILD_CODEC:BOOL=OFF
)
+ if (${OPENJPEG_RESULT})
+ execute_process(
+ COMMAND ${CMAKE_MAKE_PROGRAM} install
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/openjpeg-2.5.3
+ OUTPUT_VARIABLE openjpeg_installed
+ )
+ endif ()
+
else ()
- try_compile(OPENJPEG_RESULT
- PROJECT OPENJPEG
- SOURCE_DIR ${CMAKE_BINARY_DIR}/3p-openjpeg-2.5.0.ea12248/openjpeg
- BINARY_DIR ${CMAKE_BINARY_DIR}/3p-openjpeg-2.5.0.ea12248/openjpeg
- TARGET openjp2
- CMAKE_FLAGS
- -DBUILD_SHARED_LIBS:BOOL=${BUILD_SHARED_LIBS}
- -DCMAKE_BUILD_WITH_INSTALL_RPATH:BOOL=ON
+ execute_process(
+ COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES} -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=${CMAKE_OSX_DEPLOYMENT_TARGET} -DCMAKE_INSTALL_PREFIX:PATH=${LIBS_PREBUILT_DIR} -DCMAKE_INSTALL_LIBDIR:PATH=${ARCH_PREBUILT_DIRS_RELEASE} -DCMAKE_BUILD_WITH_INSTALL_RPATH:BOOL=ON -DBUILD_SHARED_LIBS:BOOL=${BUILD_SHARED_LIBS} -DBUILD_CODEC:BOOL=OFF
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/openjpeg-2.5.3
OUTPUT_VARIABLE openjpeg_installed
)
- endif (DARWIN)
- if (${OPENJPEG_RESULT})
- file(
- COPY
- ${CMAKE_BINARY_DIR}/3p-openjpeg-2.5.0.ea12248/openjpeg/src/lib/openjp2/cio.h
- ${CMAKE_BINARY_DIR}/3p-openjpeg-2.5.0.ea12248/openjpeg/src/lib/openjp2/event.h
- ${CMAKE_BINARY_DIR}/3p-openjpeg-2.5.0.ea12248/openjpeg/src/lib/openjp2/openjpeg.h
- ${CMAKE_BINARY_DIR}/3p-openjpeg-2.5.0.ea12248/openjpeg/src/lib/openjp2/opj_config.h
- ${CMAKE_BINARY_DIR}/3p-openjpeg-2.5.0.ea12248/openjpeg/src/lib/openjp2/opj_config_private.h
- ${CMAKE_BINARY_DIR}/3p-openjpeg-2.5.0.ea12248/openjpeg/src/lib/openjp2/opj_stdint.h
- DESTINATION ${LIBS_PREBUILT_DIR}/include/openjpeg
- )
- file(
- COPY ${CMAKE_BINARY_DIR}/3p-openjpeg-2.5.0.ea12248/openjpeg/bin/libopenjp2.a
- DESTINATION ${LIBS_PREBUILT_DIR}/lib/release
- )
- file(WRITE ${PREBUILD_TRACKING_DIR}/openjpeg_installed "${openjpeg_installed}")
- endif (${OPENJPEG_RESULT})
-endif (LINUX AND CMAKE_SYSTEM_PROCESSOR MATCHES x86_64 OR NOT USESYSTEMLIBS)
+ endif ()
+
+ file(
+ COPY
+ ${CMAKE_BINARY_DIR}/openjpeg-2.5.3/src/lib/openjp2/cio.h
+ ${CMAKE_BINARY_DIR}/openjpeg-2.5.3/src/lib/openjp2/event.h
+ ${CMAKE_BINARY_DIR}/openjpeg-2.5.3/src/lib/openjp2/opj_config_private.h
+ DESTINATION ${LIBS_PREBUILT_DIR}/include/openjpeg-2.5
+ )
+ file(WRITE ${PREBUILD_TRACKING_DIR}/openjpeg_installed "${openjpeg_installed}")
+endif ()
+if (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu))
target_link_libraries(ll::openjpeg INTERFACE openjp2 )
+else ()
+ include(FindPkgConfig)
+ pkg_check_modules(Openjpeg REQUIRED libopenjp2)
+ target_include_directories(ll::openjpeg SYSTEM INTERFACE ${Openjpeg_INCLUDE_DIRS})
+ target_link_directories(ll::openjpeg INTERFACE ${Openjpeg_LIBRARY_DIRS})
+ target_link_libraries(ll::openjpeg INTERFACE ${Openjpeg_LIBRARIES})
+endif ()
target_include_directories( ll::openjpeg SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include)
diff --git a/indra/cmake/OpenSSL.cmake b/indra/cmake/OpenSSL.cmake
index 43470032a9..ef90068993 100644
--- a/indra/cmake/OpenSSL.cmake
+++ b/indra/cmake/OpenSSL.cmake
@@ -5,15 +5,13 @@ include(Linking)
include_guard()
add_library( ll::openssl INTERFACE IMPORTED )
-if (NOT USESYSTEMLIBS)
-use_system_binary(openssl)
-endif (NOT USESYSTEMLIBS)
-if (LINUX AND CMAKE_SYSTEM_PROCESSOR MATCHES x86_64 OR DARWIN OR NOT USESYSTEMLIBS)
+#use_system_binary(openssl)
+if (LINUX AND CMAKE_SYSTEM_PROCESSOR MATCHES x86_64 OR DARWIN OR WINDOWS)
use_prebuilt_binary(openssl)
if (DARWIN)
execute_process(
COMMAND lipo -archs libcrypto.a
- WORKING_DIRECTORY ${LIBS_PREBUILT_DIR}/lib/release
+ WORKING_DIRECTORY ${ARCH_PREBUILT_DIRS_RELEASE}
OUTPUT_VARIABLE crypto_archs
OUTPUT_STRIP_TRAILING_WHITESPACE
)
@@ -23,12 +21,12 @@ use_prebuilt_binary(openssl)
libcrypto.a
-thin ${CMAKE_OSX_ARCHITECTURES}
-output libcrypto.a
- WORKING_DIRECTORY ${LIBS_PREBUILT_DIR}/lib/release
+ WORKING_DIRECTORY ${ARCH_PREBUILT_DIRS_RELEASE}
)
- endif (NOT ${crypto_archs} STREQUAL ${CMAKE_OSX_ARCHITECTURES})
+ endif ()
execute_process(
COMMAND lipo -archs libssl.a
- WORKING_DIRECTORY ${LIBS_PREBUILT_DIR}/lib/release
+ WORKING_DIRECTORY ${ARCH_PREBUILT_DIRS_RELEASE}
OUTPUT_VARIABLE ssl_archs
OUTPUT_STRIP_TRAILING_WHITESPACE
)
@@ -38,154 +36,44 @@ use_prebuilt_binary(openssl)
libssl.a
-thin ${CMAKE_OSX_ARCHITECTURES}
-output libssl.a
- WORKING_DIRECTORY ${LIBS_PREBUILT_DIR}/lib/release
+ WORKING_DIRECTORY ${ARCH_PREBUILT_DIRS_RELEASE}
)
- endif (NOT ${ssl_archs} STREQUAL ${CMAKE_OSX_ARCHITECTURES})
- endif (DARWIN)
+ endif ()
+ endif ()
elseif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/openssl_installed OR NOT ${openssl_installed} EQUAL 0)
if (NOT EXISTS ${CMAKE_BINARY_DIR}/OpenSSL_1_1_1w.tar.gz)
file(DOWNLOAD
https://github.com/openssl/openssl/archive/refs/tags/OpenSSL_1_1_1w.tar.gz
${CMAKE_BINARY_DIR}/OpenSSL_1_1_1w.tar.gz
)
- endif (NOT EXISTS ${CMAKE_BINARY_DIR}/OpenSSL_1_1_1w.tar.gz)
+ endif ()
file(ARCHIVE_EXTRACT
INPUT ${CMAKE_BINARY_DIR}/OpenSSL_1_1_1w.tar.gz
DESTINATION ${CMAKE_BINARY_DIR}
)
execute_process(
- COMMAND ./config no-shared
+ COMMAND ./config no-shared --openssldir=${LIBS_PREBUILT_DIR}/ssl --prefix=${LIBS_PREBUILT_DIR} --libdir=${ARCH_PREBUILT_DIRS_RELEASE}
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w
)
execute_process(
COMMAND make -j${MAKE_JOBS}
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w
- RESULT_VARIABLE openssl_installed
- )
- file(
- COPY
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/aes.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/asn1.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/asn1_mac.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/asn1err.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/asn1t.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/async.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/asyncerr.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/bio.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/bioerr.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/blowfish.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/bn.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/bnerr.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/buffer.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/buffererr.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/camellia.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/cast.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/cmac.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/cms.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/cmserr.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/comp.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/comperr.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/conf.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/conf_api.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/conferr.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/crypto.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/cryptoerr.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/ct.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/cterr.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/des.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/dh.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/dherr.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/dsa.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/dsaerr.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/dtls1.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/e_os2.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/ebcdic.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/ec.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/ecdh.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/ecdsa.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/ecerr.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/engine.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/engineerr.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/err.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/evp.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/evperr.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/hmac.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/idea.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/kdf.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/kdferr.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/lhash.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/md2.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/md4.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/md5.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/mdc2.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/modes.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/obj_mac.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/objects.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/objectserr.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/ocsp.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/ocsperr.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/opensslconf.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/opensslv.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/ossl_typ.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/pem.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/pem2.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/pemerr.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/pkcs12.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/pkcs12err.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/pkcs7.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/pkcs7err.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/rand.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/rand_drbg.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/randerr.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/rc2.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/rc4.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/rc5.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/ripemd.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/rsa.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/rsaerr.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/safestack.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/seed.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/sha.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/srp.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/srtp.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/ssl.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/ssl2.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/ssl3.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/sslerr.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/stack.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/store.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/storeerr.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/symhacks.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/tls1.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/ts.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/tserr.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/txt_db.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/ui.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/uierr.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/whrlpool.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/x509.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/x509_vfy.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/x509err.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/x509v3.h
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/x509v3err.h
- DESTINATION ${LIBS_PREBUILT_DIR}/include/openssl
)
- file(
- COPY
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/libcrypto.a
- ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/libssl.a
- DESTINATION ${LIBS_PREBUILT_DIR}/lib/release
+ execute_process(
+ COMMAND make install
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w
+ RESULT_VARIABLE openssl_installed
)
file(WRITE ${PREBUILD_TRACKING_DIR}/openssl_installed "${openssl_installed}")
-endif (LINUX AND CMAKE_SYSTEM_PROCESSOR MATCHES x86_64 OR DARWIN OR NOT USESYSTEMLIBS)
-if (WINDOWS AND NOT USESYSTEMLIBS)
+endif ()
+if (WINDOWS)
target_link_libraries(ll::openssl INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libssl.lib ${ARCH_PREBUILT_DIRS_RELEASE}/libcrypto.lib Crypt32.lib)
elseif (LINUX)
target_link_libraries(ll::openssl INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libssl.a ${ARCH_PREBUILT_DIRS_RELEASE}/libcrypto.a dl)
else()
target_link_libraries(ll::openssl INTERFACE ssl crypto)
-endif (WINDOWS AND NOT USESYSTEMLIBS)
-if (NOT (WINDOWS AND USESYSTEMLIBS))
+endif (WINDOWS)
+if (NOT WINDOWS)
target_include_directories( ll::openssl SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include)
-endif (NOT (WINDOWS AND USESYSTEMLIBS))
+endif ()
diff --git a/indra/cmake/Prebuilt.cmake b/indra/cmake/Prebuilt.cmake
index 751e83051f..2d5eb5d805 100644
--- a/indra/cmake/Prebuilt.cmake
+++ b/indra/cmake/Prebuilt.cmake
@@ -40,38 +40,37 @@ macro (use_prebuilt_binary _binary)
--install-dir=${AUTOBUILD_INSTALL_DIR}
${_binary} ")
endif(DEBUG_PREBUILT)
- if(USESYSTEMLIBS)
+ execute_process(COMMAND xmllint
+ --xpath
+ "//map/map/map/map/map/map/string[contains(text(),'${_binary}')][contains(text(),'common')]/text()" autobuild.xml
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/..
+ OUTPUT_VARIABLE package_url
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+ if ("${package_url}" STREQUAL "")
+ string(TOLOWER ${CMAKE_SYSTEM_NAME} system_name)
+ if (${system_name} MATCHES freebsd)
+ set(system_name "linux")
+ endif (${system_name} MATCHES freebsd)
execute_process(COMMAND xmllint
--xpath
- "//map/map/map/map/map/map/string[contains(text(),'${_binary}')][contains(text(),'common')]/text()" autobuild.xml
+ "//map/map/map/map/map/map/string[contains(text(),'${_binary}')][contains(text(),'${system_name}')]/text()" autobuild.xml
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/..
OUTPUT_VARIABLE package_url
OUTPUT_STRIP_TRAILING_WHITESPACE
)
- if ("${package_url}" STREQUAL "")
- string(TOLOWER ${CMAKE_SYSTEM_NAME} system_name)
- if (${system_name} MATCHES freebsd)
- set(system_name "linux")
- endif (${system_name} MATCHES freebsd)
- execute_process(COMMAND xmllint
- --xpath
- "//map/map/map/map/map/map/string[contains(text(),'${_binary}')][contains(text(),'${system_name}')]/text()" autobuild.xml
- WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/..
- OUTPUT_VARIABLE package_url
- OUTPUT_STRIP_TRAILING_WHITESPACE
- )
- endif ("${package_url}" STREQUAL "")
- string(REGEX REPLACE "^https?://(megapahit.net/downloads|github.com/secondlife|automated-builds-secondlife-com.s3.amazonaws.com/ct2).*/" "" package_name ${package_url})
- file(DOWNLOAD
- ${package_url}
- ${CMAKE_BINARY_DIR}/${package_name}
- )
- file(ARCHIVE_EXTRACT
- INPUT ${CMAKE_BINARY_DIR}/${package_name}
- DESTINATION ${AUTOBUILD_INSTALL_DIR}
- )
- set(${_binary}_installed 0)
- else(USESYSTEMLIBS)
+ endif ("${package_url}" STREQUAL "")
+ string(REGEX REPLACE "^https?://(megapahit.net/downloads|github.com/secondlife|automated-builds-secondlife-com.s3.amazonaws.com/ct2).*/" "" package_name ${package_url})
+ file(DOWNLOAD
+ ${package_url}
+ ${CMAKE_BINARY_DIR}/${package_name}
+ )
+ file(ARCHIVE_EXTRACT
+ INPUT ${CMAKE_BINARY_DIR}/${package_name}
+ DESTINATION ${AUTOBUILD_INSTALL_DIR}
+ )
+ set(${_binary}_installed 0)
+ if(FALSE)
execute_process(COMMAND "${AUTOBUILD_EXECUTABLE}"
install
--install-dir=${AUTOBUILD_INSTALL_DIR}
@@ -79,7 +78,7 @@ macro (use_prebuilt_binary _binary)
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
RESULT_VARIABLE ${_binary}_installed
)
- endif(USESYSTEMLIBS)
+ endif()
file(WRITE ${PREBUILD_TRACKING_DIR}/${_binary}_installed "${${_binary}_installed}")
endif(${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/${_binary}_installed OR NOT ${${_binary}_installed} EQUAL 0)
@@ -92,6 +91,22 @@ endmacro (use_prebuilt_binary _binary)
#Sadly we need a macro here, otherwise the return() will not properly work
macro ( use_system_binary package )
+ include(FindPkgConfig)
+ pkg_check_modules(${package} ${package})
+ if( ${package}_FOUND )
+ target_link_directories( ll::${package} INTERFACE ${${package}_LIBRARY_DIRS} )
+ else()
+ pkg_check_modules(${package} lib${package})
+ if( ${package}_FOUND )
+ target_link_directories( ll::${package} INTERFACE ${${package}_LIBRARY_DIRS} )
+ else()
+ find_package( ${package} REQUIRED )
+ endif()
+ endif()
+ target_include_directories( ll::${package} SYSTEM INTERFACE ${${package}_INCLUDE_DIRS} )
+ target_link_libraries( ll::${package} INTERFACE ${${package}_LIBRARIES} )
+ return()
+
if( USE_CONAN )
target_link_libraries( ll::${package} INTERFACE CONAN_PKG::${package} )
foreach( extra_pkg "${ARGN}" )
@@ -100,22 +115,6 @@ macro ( use_system_binary package )
endif()
endforeach()
return()
- elseif( NOT USE_AUTOBUILD_3P )
- include(FindPkgConfig)
- pkg_check_modules(${package} ${package})
- if( ${package}_FOUND )
- target_link_directories( ll::${package} INTERFACE ${${package}_LIBRARY_DIRS} )
- else()
- pkg_check_modules(${package} lib${package})
- if( ${package}_FOUND )
- target_link_directories( ll::${package} INTERFACE ${${package}_LIBRARY_DIRS} )
- else()
- find_package( ${package} REQUIRED )
- endif()
- endif()
- target_include_directories( ll::${package} SYSTEM INTERFACE ${${package}_INCLUDE_DIRS} )
- target_link_libraries( ll::${package} INTERFACE ${${package}_LIBRARIES} )
- return()
endif()
endmacro()
diff --git a/indra/cmake/Python.cmake b/indra/cmake/Python.cmake
index da5d2ef22c..7cce190f6a 100644
--- a/indra/cmake/Python.cmake
+++ b/indra/cmake/Python.cmake
@@ -13,7 +13,7 @@ elseif (WINDOWS)
foreach(hive HKEY_CURRENT_USER HKEY_LOCAL_MACHINE)
# prefer more recent Python versions to older ones, if multiple versions
# are installed
- foreach(pyver 3.12 3.11 3.10 3.9 3.8 3.7)
+ foreach(pyver 3.13 3.12 3.11 3.10 3.9 3.8 3.7)
list(APPEND regpaths "[${hive}\\SOFTWARE\\Python\\PythonCore\\${pyver}\\InstallPath]")
endforeach()
endforeach()
diff --git a/indra/cmake/UI.cmake b/indra/cmake/UI.cmake
index a3423bb895..85e74f03e4 100644
--- a/indra/cmake/UI.cmake
+++ b/indra/cmake/UI.cmake
@@ -5,10 +5,7 @@ include(GLIB)
add_library( ll::uilibraries INTERFACE IMPORTED )
-if (LINUX OR CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
- if (NOT USESYSTEMLIBS)
- use_prebuilt_binary(fltk)
- endif ()
+if (LINUX OR CMAKE_SYSTEM_NAME MATCHES FreeBSD)
target_compile_definitions(ll::uilibraries INTERFACE LL_FLTK=1 LL_X11=1 )
if( USE_CONAN )
@@ -30,7 +27,7 @@ if (LINUX OR CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
ll::gio
)
-endif (LINUX OR CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
+endif ()
if( WINDOWS )
target_link_libraries( ll::uilibraries INTERFACE
opengl32
@@ -48,7 +45,7 @@ if( WINDOWS )
)
endif()
-if (NOT USESYSTEMLIBS)
+if (FALSE)
target_include_directories( ll::uilibraries SYSTEM INTERFACE
${LIBS_PREBUILT_DIR}/include
)
diff --git a/indra/cmake/ViewerMiscLibs.cmake b/indra/cmake/ViewerMiscLibs.cmake
index 13f5ebf862..4ab69e30aa 100644
--- a/indra/cmake/ViewerMiscLibs.cmake
+++ b/indra/cmake/ViewerMiscLibs.cmake
@@ -1,23 +1,23 @@
# -*- cmake -*-
include(Prebuilt)
-if (NOT (WINDOWS OR DARWIN))
+if (NOT (DARWIN OR WINDOWS))
add_library( ll::fontconfig INTERFACE IMPORTED )
find_package(Fontconfig REQUIRED)
target_link_libraries( ll::fontconfig INTERFACE Fontconfig::Fontconfig )
-endif (NOT (WINDOWS OR DARWIN))
+endif ()
-if( USE_AUTOBUILD_3P )
+if (FALSE)
+if( NOT USE_CONAN )
use_prebuilt_binary(libhunspell)
endif()
-if (NOT USESYSTEMLIBS)
use_prebuilt_binary(slvoice)
-endif (NOT USESYSTEMLIBS)
+endif (FALSE)
-if ((${LINUX_DISTRO} MATCHES debian OR WINDOWS OR DARWIN) OR NOT USESYSTEMLIBS)
+if (${LINUX_DISTRO} MATCHES debian OR DARWIN OR WINDOWS)
use_prebuilt_binary(nanosvg)
-endif ((${LINUX_DISTRO} MATCHES debian OR WINDOWS OR DARWIN) OR NOT USESYSTEMLIBS)
+endif ()
use_prebuilt_binary(viewer-fonts)
use_prebuilt_binary(emoji_shortcodes)
diff --git a/indra/cmake/VulkanGltf.cmake b/indra/cmake/VulkanGltf.cmake
index d7083a33c9..94541d5307 100644
--- a/indra/cmake/VulkanGltf.cmake
+++ b/indra/cmake/VulkanGltf.cmake
@@ -1,7 +1,5 @@
# -*- cmake -*-
include(Prebuilt)
-if (NOT USESYSTEMLIBS)
use_prebuilt_binary(vulkan_gltf)
-endif ()
diff --git a/indra/cmake/WebRTC.cmake b/indra/cmake/WebRTC.cmake
index a5c821f32a..454ed8c0a1 100644
--- a/indra/cmake/WebRTC.cmake
+++ b/indra/cmake/WebRTC.cmake
@@ -6,9 +6,9 @@ include_guard()
add_library( ll::webrtc INTERFACE IMPORTED )
target_include_directories( ll::webrtc SYSTEM INTERFACE "${LIBS_PREBUILT_DIR}/include/webrtc" "${LIBS_PREBUILT_DIR}/include/webrtc/third_party/abseil-cpp")
-if (${LINUX_DISTRO} MATCHES debian OR CMAKE_OSX_ARCHITECTURES MATCHES x86_64)
+if (${LINUX_DISTRO} MATCHES debian OR CMAKE_OSX_ARCHITECTURES MATCHES x86_64 OR WINDOWS)
use_prebuilt_binary(webrtc)
-elseif (NOT (WINDOWS OR CMAKE_SYSTEM_NAME MATCHES FreeBSD))
+elseif (NOT CMAKE_SYSTEM_NAME MATCHES FreeBSD)
target_compile_definitions(ll::webrtc INTERFACE CM_WEBRTC=1)
if (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/webrtc_installed OR NOT ${webrtc_installed} EQUAL 0)
if (DARWIN)
@@ -17,14 +17,14 @@ elseif (NOT (WINDOWS OR CMAKE_SYSTEM_NAME MATCHES FreeBSD))
set(WEBRTC_PLATFORM linux-arm64)
else ()
set(WEBRTC_PLATFORM linux-x64)
- endif (DARWIN)
+ endif ()
if (NOT EXISTS ${CMAKE_BINARY_DIR}/libwebrtc-${WEBRTC_PLATFORM}.tar.xz)
file(DOWNLOAD
https://github.com/crow-misia/libwebrtc-bin/releases/download/114.5735.6.1/libwebrtc-${WEBRTC_PLATFORM}.tar.xz
${CMAKE_BINARY_DIR}/libwebrtc-${WEBRTC_PLATFORM}.tar.xz
SHOW_PROGRESS
)
- endif (NOT EXISTS ${CMAKE_BINARY_DIR}/libwebrtc-${WEBRTC_PLATFORM}.tar.xz)
+ endif ()
file(ARCHIVE_EXTRACT
INPUT ${CMAKE_BINARY_DIR}/libwebrtc-${WEBRTC_PLATFORM}.tar.xz
DESTINATION ${LIBS_PREBUILT_DIR}
@@ -65,19 +65,19 @@ elseif (NOT (WINDOWS OR CMAKE_SYSTEM_NAME MATCHES FreeBSD))
endforeach()
file(RENAME
${LIBS_PREBUILT_DIR}/lib/libwebrtc.a
- ${LIBS_PREBUILT_DIR}/lib/release/libwebrtc.a
+ ${ARCH_PREBUILT_DIRS_RELEASE}/libwebrtc.a
)
if (CMAKE_OSX_ARCHITECTURES MATCHES arm64)
- file(REMOVE_RECURSE ${LIBS_PREBUILT_DIR}/lib/release/WebRTC.framework)
+ file(REMOVE_RECURSE ${ARCH_PREBUILT_DIRS_RELEASE}/WebRTC.framework)
file(RENAME
${LIBS_PREBUILT_DIR}/Frameworks/WebRTC.xcframework/${WEBRTC_PLATFORM}/WebRTC.framework
- ${LIBS_PREBUILT_DIR}/lib/release/WebRTC.framework
+ ${ARCH_PREBUILT_DIRS_RELEASE}/WebRTC.framework
)
file(REMOVE_RECURSE ${LIBS_PREBUILT_DIR}/Frameworks)
- endif (CMAKE_OSX_ARCHITECTURES MATCHES arm64)
+ endif ()
file(WRITE ${PREBUILD_TRACKING_DIR}/webrtc_installed "0")
- endif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/webrtc_installed OR NOT ${webrtc_installed} EQUAL 0)
-endif (${LINUX_DISTRO} MATCHES debian OR CMAKE_OSX_ARCHITECTURES MATCHES x86_64)
+ endif ()
+endif ()
if (WINDOWS)
target_link_libraries( ll::webrtc INTERFACE webrtc.lib )
diff --git a/indra/cmake/ZLIBNG.cmake b/indra/cmake/ZLIBNG.cmake
index 5aa54b0152..7c2c59a68d 100644
--- a/indra/cmake/ZLIBNG.cmake
+++ b/indra/cmake/ZLIBNG.cmake
@@ -5,15 +5,15 @@ include(Prebuilt)
include_guard()
add_library( ll::zlib-ng INTERFACE IMPORTED )
+pkg_check_modules(Zlib REQUIRED zlib)
+target_include_directories( ll::zlib-ng SYSTEM INTERFACE ${Zlib_INCLUDE_DIRS})
+target_link_directories( ll::zlib-ng INTERFACE ${Zlib_LIBRARY_DIRS} )
+target_link_libraries( ll::zlib-ng INTERFACE ${Zlib_LIBRARIES})
+return()
+
if(USE_CONAN )
target_link_libraries( ll::zlib-ng INTERFACE CONAN_PKG::zlib )
return()
-elseif(NOT USE_AUTOBUILD_3P)
- pkg_check_modules(Zlib REQUIRED zlib)
- target_include_directories( ll::zlib-ng SYSTEM INTERFACE ${Zlib_INCLUDE_DIRS})
- target_link_directories( ll::zlib-ng INTERFACE ${Zlib_LIBRARY_DIRS} )
- target_link_libraries( ll::zlib-ng INTERFACE ${Zlib_LIBRARIES})
- return()
endif()
use_prebuilt_binary(zlib-ng)
diff --git a/indra/cmake/xxHash.cmake b/indra/cmake/xxHash.cmake
index 2dcab005ba..84f4f4e0f2 100644
--- a/indra/cmake/xxHash.cmake
+++ b/indra/cmake/xxHash.cmake
@@ -6,10 +6,8 @@ set (XXHASH_CMAKE_INCLUDED TRUE)
include(Prebuilt)
-if (NOT (USE_AUTOBUILD_3P OR USE_CONAN))
- include(FindPkgConfig)
- pkg_check_modules(Xxhash REQUIRED libxxhash)
- return ()
-endif ()
+include(FindPkgConfig)
+pkg_check_modules(Xxhash REQUIRED libxxhash)
+return ()
use_prebuilt_binary(xxhash)
diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt
index 7c49eb8904..6c1e1ef64a 100644
--- a/indra/llcommon/CMakeLists.txt
+++ b/indra/llcommon/CMakeLists.txt
@@ -8,9 +8,6 @@ include(bugsplat)
include(Linking)
include(Boost)
include(LLSharedLibs)
-if (USE_AUTOBUILD_3P OR USE_CONAN)
-include(Copy3rdPartyLibs)
-endif ()
include(ZLIBNG)
include(Tracy)
@@ -296,31 +293,32 @@ if (CMAKE_OSX_ARCHITECTURES MATCHES arm64 OR CMAKE_SYSTEM_PROCESSOR MATCHES aarc
https://raw.githubusercontent.com/DLTcollab/sse2neon/master/sse2neon.h
${LIBS_PREBUILT_DIR}/include/sse2neon/sse2neon.h
)
- endif (NOT EXISTS ${LIBS_PREBUILT_DIR}/include/sse2neon/sse2neon.h)
+ endif ()
file(WRITE ${PREBUILD_TRACKING_DIR}/sse2neon_installed "0")
- endif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/sse2neon_installed OR NOT ${sse2neon_installed} EQUAL 0)
+ endif ()
target_include_directories(llcommon PUBLIC ${LIBS_PREBUILT_DIR}/include/sse2neon)
-elseif (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu) OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed))
+endif ()
+
+if (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu) OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed))
target_include_directories(llcommon PUBLIC ${LIBS_PREBUILT_DIR}/include)
-endif (CMAKE_OSX_ARCHITECTURES MATCHES arm64 OR CMAKE_SYSTEM_PROCESSOR MATCHES aarch64)
+endif ()
+
+if (NOT WINDOWS)
+ target_compile_options(${PROJECT_NAME} PUBLIC -Wno-deprecated-declarations)
+endif ()
-if (USE_AUTOBUILD_3P OR USE_CONAN)
-add_dependencies(llcommon stage_third_party_libs)
-else ()
- target_compile_options(${PROJECT_NAME} PUBLIC -Wno-deprecated-declarations)
- if (CMAKE_CXX_COMPILER_ID MATCHES "GNU")
- set_source_files_properties(
- llapp.cpp
- llsdutil.cpp
- PROPERTIES COMPILE_FLAGS -Wno-stringop-truncation)
- set_source_files_properties(
- llevent.cpp
- llfasttimer.cpp
- PROPERTIES COMPILE_FLAGS -Wno-nonnull)
- elseif (LINUX AND CMAKE_CXX_COMPILER_ID MATCHES "Clang")
- set_source_files_properties(llsys.cpp PROPERTIES
- COMPILE_FLAGS -Wno-unused-but-set-variable)
- endif()
+if (CMAKE_CXX_COMPILER_ID MATCHES GNU)
+ set_source_files_properties(
+ llapp.cpp
+ llsdutil.cpp
+ PROPERTIES COMPILE_FLAGS -Wno-stringop-truncation)
+ set_source_files_properties(
+ llevent.cpp
+ llfasttimer.cpp
+ PROPERTIES COMPILE_FLAGS -Wno-nonnull)
+elseif (LINUX AND CMAKE_CXX_COMPILER_ID MATCHES Clang)
+ set_source_files_properties(llsys.cpp PROPERTIES
+ COMPILE_FLAGS -Wno-unused-but-set-variable)
endif ()
include(LibraryInstall)
diff --git a/indra/llcommon/hbxxh.cpp b/indra/llcommon/hbxxh.cpp
index 8ccf8dfcbe..decf908bb6 100644
--- a/indra/llcommon/hbxxh.cpp
+++ b/indra/llcommon/hbxxh.cpp
@@ -34,11 +34,7 @@
// in your build, in which case the latter would be used instead. For ARM64
// builds, this would also automatically enable NEON vectorization.
#define XXH_INLINE_ALL
-#if LL_USESYSTEMLIBS
#include <xxhash.h>
-#else
-#include "xxhash/xxhash.h"
-#endif
#include "hbxxh.h"
diff --git a/indra/llcommon/llapr.cpp b/indra/llcommon/llapr.cpp
index 01763c49aa..04aba817f8 100644
--- a/indra/llcommon/llapr.cpp
+++ b/indra/llcommon/llapr.cpp
@@ -230,7 +230,7 @@ bool LLVolatileAPRPool::isFull()
bool _ll_apr_warn_status(apr_status_t status, const char* file, int line)
{
if(APR_SUCCESS == status) return false;
-#if !LL_LINUX
+#if !LL_LINUX && !__FreeBSD__
char buf[MAX_STRING]; /* Flawfinder: ignore */
apr_strerror(status, buf, sizeof(buf));
LL_WARNS("APR") << "APR: " << file << ":" << line << " " << buf << LL_ENDL;
diff --git a/indra/llcommon/llassettype.cpp b/indra/llcommon/llassettype.cpp
index c09cf7abd2..9672a3262b 100644
--- a/indra/llcommon/llassettype.cpp
+++ b/indra/llcommon/llassettype.cpp
@@ -29,6 +29,7 @@
#include "llassettype.h"
#include "lldictionary.h"
#include "llmemory.h"
+#include "llsd.h"
#include "llsingleton.h"
///----------------------------------------------------------------------------
@@ -246,3 +247,19 @@ bool LLAssetType::lookupIsAssetIDKnowable(EType asset_type)
}
return false;
}
+
+LLSD LLAssetType::getTypeNames()
+{
+ LLSD type_names;
+ const LLAssetDictionary *dict = LLAssetDictionary::getInstance();
+ for (S32 type = AT_TEXTURE; type < AT_COUNT; ++type)
+ {
+ const AssetEntry *entry = dict->lookup((LLAssetType::EType) type);
+ // skip llassettype_bad_lookup
+ if (entry)
+ {
+ type_names.append(entry->mTypeName);
+ }
+ }
+ return type_names;
+}
diff --git a/indra/llcommon/llassettype.h b/indra/llcommon/llassettype.h
index 547c3f4329..17177d81c3 100644
--- a/indra/llcommon/llassettype.h
+++ b/indra/llcommon/llassettype.h
@@ -165,6 +165,8 @@ public:
static bool lookupIsAssetFetchByIDAllowed(EType asset_type); // the asset allows direct download
static bool lookupIsAssetIDKnowable(EType asset_type); // asset data can be known by the viewer
+ static LLSD getTypeNames();
+
static const std::string BADLOOKUP;
protected:
diff --git a/indra/llcommon/llmemory.h b/indra/llcommon/llmemory.h
index 4a9359f8e2..d5802b9d95 100644
--- a/indra/llcommon/llmemory.h
+++ b/indra/llcommon/llmemory.h
@@ -71,7 +71,7 @@ LL_COMMON_API void ll_assert_aligned_func(uintptr_t ptr,U32 alignment);
#define ll_assert_aligned(ptr,alignment)
#endif
-#if defined(__i386__) || defined(__x86_64__)
+#if defined(__i386__) || defined(__x86_64__) || _M_X64
#include <xmmintrin.h>
#else
#include <sse2neon.h>
diff --git a/indra/llcommon/llsdserialize.cpp b/indra/llcommon/llsdserialize.cpp
index 37af366a20..68a7bf0adf 100644
--- a/indra/llcommon/llsdserialize.cpp
+++ b/indra/llcommon/llsdserialize.cpp
@@ -37,7 +37,7 @@
#include <boost/iostreams/device/array.hpp>
#include <boost/iostreams/stream.hpp>
-#ifdef LL_USESYSTEMLIBS
+#if 1
# include <zlib.h>
#else
# include "zlib-ng/zlib.h" // for davep's dirty little zip functions
diff --git a/indra/llcommon/llsdserialize_xml.cpp b/indra/llcommon/llsdserialize_xml.cpp
index 6396caf8d5..ce416baa04 100644
--- a/indra/llcommon/llsdserialize_xml.cpp
+++ b/indra/llcommon/llsdserialize_xml.cpp
@@ -35,7 +35,7 @@
extern "C"
{
-#ifdef LL_USESYSTEMLIBS
+#if 1
# include <expat.h>
#else
# include "expat/expat.h"
diff --git a/indra/llcommon/llsdutil.h b/indra/llcommon/llsdutil.h
index 38bbe19ddd..497c0ad3eb 100644
--- a/indra/llcommon/llsdutil.h
+++ b/indra/llcommon/llsdutil.h
@@ -553,6 +553,100 @@ LLSD shallow(LLSD value, LLSD filter=LLSD()) { return llsd_shallow(value, filter
} // namespace llsd
+/*****************************************************************************
+* LLSDParam<std::vector<T>>
+*****************************************************************************/
+// Given an LLSD array, return a const std::vector<T>&, where T is a type
+// supported by LLSDParam. Bonus: if the LLSD value is actually a scalar,
+// return a single-element vector containing the converted value.
+template <typename T>
+class LLSDParam<std::vector<T>>: public LLSDParamBase
+{
+public:
+ LLSDParam(const LLSD& array)
+ {
+ // treat undefined "array" as empty vector
+ if (array.isDefined())
+ {
+ // what if it's a scalar?
+ if (! array.isArray())
+ {
+ v.push_back(LLSDParam<T>(array));
+ }
+ else // really is an array
+ {
+ // reserve space for the array entries
+ v.reserve(array.size());
+ for (const auto& item : llsd::inArray(array))
+ {
+ v.push_back(LLSDParam<T>(item));
+ }
+ }
+ }
+ }
+
+ operator const std::vector<T>&() const { return v; }
+
+private:
+ std::vector<T> v;
+};
+
+
+/*****************************************************************************
+ * toArray(), toMap()
+ *****************************************************************************/
+namespace llsd
+{
+
+// For some T convertible to LLSD, given std::vector<T> myVec,
+// toArray(myVec) returns an LLSD array whose entries correspond to the
+// items in myVec.
+// For some U convertible to LLSD, given function U xform(const T&),
+// toArray(myVec, xform) returns an LLSD array whose every entry is
+// xform(item) of the corresponding item in myVec.
+// toArray() actually works with any container<C> usable with range
+// 'for', not just std::vector.
+// (Once we get C++20 we can use std::identity instead of this default lambda.)
+template<typename C, typename FUNC>
+LLSD toArray(const C& container, FUNC&& func = [](const auto& arg) { return arg; })
+{
+ LLSD array;
+ for (const auto& item : container)
+ {
+ array.append(std::forward<FUNC>(func)(item));
+ }
+ return array;
+}
+
+// For some T convertible to LLSD, given std::map<std::string, T> myMap,
+// toMap(myMap) returns an LLSD map whose entries correspond to the
+// (key, value) pairs in myMap.
+// For some U convertible to LLSD, given function
+// std::pair<std::string, U> xform(const std::pair<std::string, T>&),
+// toMap(myMap, xform) returns an LLSD map whose every entry is
+// xform(pair) of the corresponding (key, value) pair in myMap.
+// toMap() actually works with any container usable with range 'for', not
+// just std::map. It need not even be an associative container, as long as
+// you pass an xform function that returns std::pair<std::string, U>.
+// (Once we get C++20 we can use std::identity instead of this default lambda.)
+template<typename C, typename FUNC>
+LLSD toMap(const C& container, FUNC&& func = [](const auto& arg) { return arg; })
+{
+ LLSD map;
+ for (const auto& pair : container)
+ {
+ const auto& [key, value] = std::forward<FUNC>(func)(pair);
+ map[key] = value;
+ }
+ return map;
+}
+
+} // namespace llsd
+
+/*****************************************************************************
+ * boost::hash<LLSD>
+ *****************************************************************************/
+
// Specialization for generating a hash value from an LLSD block.
namespace boost
{
diff --git a/indra/llcommon/llsys.cpp b/indra/llcommon/llsys.cpp
index 94d59adf29..5c35aeb476 100644
--- a/indra/llcommon/llsys.cpp
+++ b/indra/llcommon/llsys.cpp
@@ -33,7 +33,7 @@
#include "llsys.h"
#include <iostream>
-#ifdef LL_USESYSTEMLIBS
+#if 1
# include <zlib.h>
#else
# include "zlib-ng/zlib.h"
diff --git a/indra/llcommon/lluuid.cpp b/indra/llcommon/lluuid.cpp
index 6d7cf473f5..3fbc45baaf 100644
--- a/indra/llcommon/lluuid.cpp
+++ b/indra/llcommon/lluuid.cpp
@@ -174,14 +174,6 @@ void LLUUID::toString(std::string& out) const
(U8)(mData[15]));
}
-// *TODO: deprecate
-void LLUUID::toString(char* out) const
-{
- std::string buffer;
- toString(buffer);
- strcpy(out, buffer.c_str()); /* Flawfinder: ignore */
-}
-
void LLUUID::toCompressedString(std::string& out) const
{
char bytes[UUID_BYTES + 1];
@@ -190,13 +182,6 @@ void LLUUID::toCompressedString(std::string& out) const
out.assign(bytes, UUID_BYTES);
}
-// *TODO: deprecate
-void LLUUID::toCompressedString(char* out) const
-{
- memcpy(out, mData, UUID_BYTES); /* Flawfinder: ignore */
- out[UUID_BYTES] = '\0';
-}
-
std::string LLUUID::getString() const
{
return asString();
diff --git a/indra/llcommon/lluuid.h b/indra/llcommon/lluuid.h
index bd4edc7993..ca1cf03c4d 100644
--- a/indra/llcommon/lluuid.h
+++ b/indra/llcommon/lluuid.h
@@ -103,9 +103,7 @@ public:
friend LL_COMMON_API std::ostream& operator<<(std::ostream& s, const LLUUID &uuid);
friend LL_COMMON_API std::istream& operator>>(std::istream& s, LLUUID &uuid);
- void toString(char *out) const; // Does not allocate memory, needs 36 characters (including \0)
void toString(std::string& out) const;
- void toCompressedString(char *out) const; // Does not allocate memory, needs 17 characters (including \0)
void toCompressedString(std::string& out) const;
std::string asString() const;
diff --git a/indra/llimage/CMakeLists.txt b/indra/llimage/CMakeLists.txt
index f55d9fdf5e..3abc85954b 100644
--- a/indra/llimage/CMakeLists.txt
+++ b/indra/llimage/CMakeLists.txt
@@ -67,15 +67,13 @@ target_link_libraries(llimage
ll::libjpeg
)
-if (NOT (USE_AUTOBUILD_3P OR USE_CONAN))
- if (CMAKE_CXX_COMPILER_ID MATCHES "GNU")
- set_source_files_properties(llimageworker.cpp PROPERTIES COMPILE_FLAGS -Wno-int-in-bool-context)
- set_source_files_properties(
- llimage.cpp
- llimagefilter.cpp
- PROPERTIES COMPILE_FLAGS -Wno-stringop-overflow)
- endif()
-endif ()
+if (CMAKE_CXX_COMPILER_ID MATCHES GNU)
+ set_source_files_properties(llimageworker.cpp PROPERTIES COMPILE_FLAGS -Wno-int-in-bool-context)
+ set_source_files_properties(
+ llimage.cpp
+ llimagefilter.cpp
+ PROPERTIES COMPILE_FLAGS -Wno-stringop-overflow)
+endif()
include(LibraryInstall)
diff --git a/indra/llimage/llimagejpeg.h b/indra/llimage/llimagejpeg.h
index 012b87a42d..f6d9f19ba5 100644
--- a/indra/llimage/llimagejpeg.h
+++ b/indra/llimage/llimagejpeg.h
@@ -32,7 +32,7 @@
#include "llimage.h"
extern "C" {
-#ifdef LL_USESYSTEMLIBS
+#if 1
# include <jpeglib.h>
# include <jerror.h>
#else
diff --git a/indra/llimagej2coj/llimagej2coj.cpp b/indra/llimagej2coj/llimagej2coj.cpp
index 1c6b9e423c..04b527d783 100644
--- a/indra/llimagej2coj/llimagej2coj.cpp
+++ b/indra/llimagej2coj/llimagej2coj.cpp
@@ -28,9 +28,9 @@
#include "llimagej2coj.h"
// this is defined so that we get static linking.
-#include <openjpeg/openjpeg.h>
-#include <openjpeg/event.h>
-#include <openjpeg/cio.h>
+#include <openjpeg-2.5/openjpeg.h>
+#include <openjpeg-2.5/event.h>
+#include <openjpeg-2.5/cio.h>
#define MAX_ENCODED_DISCARD_LEVELS 5
@@ -617,6 +617,7 @@ public:
for (S32 c = 0; c < numcomps; c++)
{
cmptparm[c].prec = 8;
+ cmptparm[c].bpp = 8;
cmptparm[c].sgnd = 0;
cmptparm[c].dx = parameters.subsampling_dx;
cmptparm[c].dy = parameters.subsampling_dy;
diff --git a/indra/llinventory/llfoldertype.cpp b/indra/llinventory/llfoldertype.cpp
index 7e1be17ecc..670405e9b5 100644
--- a/indra/llinventory/llfoldertype.cpp
+++ b/indra/llinventory/llfoldertype.cpp
@@ -29,6 +29,7 @@
#include "llfoldertype.h"
#include "lldictionary.h"
#include "llmemory.h"
+#include "llsd.h"
#include "llsingleton.h"
///----------------------------------------------------------------------------
@@ -220,3 +221,21 @@ const std::string &LLFolderType::badLookup()
static const std::string sBadLookup = "llfoldertype_bad_lookup";
return sBadLookup;
}
+
+LLSD LLFolderType::getTypeNames()
+{
+ LLSD type_names;
+ for (S32 type = FT_TEXTURE; type < FT_COUNT; ++type)
+ {
+ if (lookupIsEnsembleType((LLFolderType::EType)type))
+ continue;
+
+ const FolderEntry* entry = LLFolderDictionary::getInstance()->lookup((LLFolderType::EType)type);
+ // skip llfoldertype_bad_lookup
+ if (entry)
+ {
+ type_names.append(entry->mName);
+ }
+ }
+ return type_names;
+}
diff --git a/indra/llinventory/llfoldertype.h b/indra/llinventory/llfoldertype.h
index 46a1b92a96..dd12693f66 100644
--- a/indra/llinventory/llfoldertype.h
+++ b/indra/llinventory/llfoldertype.h
@@ -115,6 +115,8 @@ public:
static const std::string& badLookup(); // error string when a lookup fails
+ static LLSD getTypeNames();
+
protected:
LLFolderType() {}
~LLFolderType() {}
diff --git a/indra/llinventory/llinventory.cpp b/indra/llinventory/llinventory.cpp
index 5bf8020a68..fe60800700 100644
--- a/indra/llinventory/llinventory.cpp
+++ b/indra/llinventory/llinventory.cpp
@@ -928,7 +928,7 @@ bool LLInventoryItem::exportLegacyStream(std::ostream& output_stream, bool inclu
LLSD LLInventoryItem::asLLSD() const
{
- LLSD sd = LLSD();
+ LLSD sd;
asLLSD(sd);
return sd;
}
@@ -937,7 +937,7 @@ void LLInventoryItem::asLLSD( LLSD& sd ) const
{
sd[INV_ITEM_ID_LABEL] = mUUID;
sd[INV_PARENT_ID_LABEL] = mParentUUID;
- sd[INV_PERMISSIONS_LABEL] = ll_create_sd_from_permissions(mPermissions);
+ ll_fill_sd_from_permissions(sd[INV_PERMISSIONS_LABEL], mPermissions);
if (mThumbnailUUID.notNull())
{
@@ -963,19 +963,22 @@ void LLInventoryItem::asLLSD( LLSD& sd ) const
cipher.encrypt(shadow_id.mData, UUID_BYTES);
sd[INV_SHADOW_ID_LABEL] = shadow_id;
}
- sd[INV_ASSET_TYPE_LABEL] = LLAssetType::lookup(mType);
- sd[INV_INVENTORY_TYPE_LABEL] = mInventoryType;
+ sd[INV_ASSET_TYPE_LABEL] = std::string(LLAssetType::lookup(mType));
const std::string inv_type_str = LLInventoryType::lookup(mInventoryType);
if(!inv_type_str.empty())
{
sd[INV_INVENTORY_TYPE_LABEL] = inv_type_str;
}
+ else
+ {
+ sd[INV_INVENTORY_TYPE_LABEL] = (LLSD::Integer)mInventoryType;
+ }
//sd[INV_FLAGS_LABEL] = (S32)mFlags;
sd[INV_FLAGS_LABEL] = ll_sd_from_U32(mFlags);
- sd[INV_SALE_INFO_LABEL] = mSaleInfo.asLLSD();
+ mSaleInfo.asLLSD(sd[INV_SALE_INFO_LABEL]);
sd[INV_NAME_LABEL] = mName;
sd[INV_DESC_LABEL] = mDescription;
- sd[INV_CREATION_DATE_LABEL] = (S32) mCreationDate;
+ sd[INV_CREATION_DATE_LABEL] = (LLSD::Integer)mCreationDate;
}
bool LLInventoryItem::fromLLSD(const LLSD& sd, bool is_new)
@@ -1501,12 +1504,11 @@ bool LLInventoryCategory::exportLegacyStream(std::ostream& output_stream, bool)
return true;
}
-LLSD LLInventoryCategory::exportLLSD() const
+void LLInventoryCategory::exportLLSD(LLSD& cat_data) const
{
- LLSD cat_data;
cat_data[INV_FOLDER_ID_LABEL] = mUUID;
cat_data[INV_PARENT_ID_LABEL] = mParentUUID;
- cat_data[INV_ASSET_TYPE_LABEL] = LLAssetType::lookup(mType);
+ cat_data[INV_ASSET_TYPE_LABEL] = std::string(LLAssetType::lookup(mType));
cat_data[INV_PREFERRED_TYPE_LABEL] = LLFolderType::lookup(mPreferredType);
cat_data[INV_NAME_LABEL] = mName;
@@ -1518,8 +1520,6 @@ LLSD LLInventoryCategory::exportLLSD() const
{
cat_data[INV_FAVORITE_LABEL] = LLSD().with(INV_TOGGLED_LABEL, mFavorite);
}
-
- return cat_data;
}
bool LLInventoryCategory::importLLSD(const LLSD& cat_data)
@@ -1570,7 +1570,7 @@ bool LLInventoryCategory::importLLSD(const LLSD& cat_data)
return true;
}
///----------------------------------------------------------------------------
-/// Local function definitions
+/// Local function definitions for testing purposes
///----------------------------------------------------------------------------
LLSD ll_create_sd_from_inventory_item(LLPointer<LLInventoryItem> item)
diff --git a/indra/llinventory/llinventory.h b/indra/llinventory/llinventory.h
index 2044b0102c..17670d2ea1 100644
--- a/indra/llinventory/llinventory.h
+++ b/indra/llinventory/llinventory.h
@@ -273,7 +273,7 @@ public:
virtual bool importLegacyStream(std::istream& input_stream);
virtual bool exportLegacyStream(std::ostream& output_stream, bool include_asset_key = true) const;
- LLSD exportLLSD() const;
+ virtual void exportLLSD(LLSD& sd) const;
bool importLLSD(const LLSD& cat_data);
//--------------------------------------------------------------------
// Member Variables
@@ -288,6 +288,7 @@ protected:
//
// These functions convert between structured data and an inventory
// item, appropriate for serialization.
+// Not up to date (no favorites, nor thumbnails), for testing purposes
//-----------------------------------------------------------------------------
LLSD ll_create_sd_from_inventory_item(LLPointer<LLInventoryItem> item);
LLSD ll_create_sd_from_inventory_category(LLPointer<LLInventoryCategory> cat);
diff --git a/indra/llinventory/llpermissions.cpp b/indra/llinventory/llpermissions.cpp
index c8963881df..d800ca02c9 100644
--- a/indra/llinventory/llpermissions.cpp
+++ b/indra/llinventory/llpermissions.cpp
@@ -1012,17 +1012,21 @@ static const std::string PERM_NEXT_OWNER_MASK_LABEL("next_owner_mask");
LLSD ll_create_sd_from_permissions(const LLPermissions& perm)
{
LLSD rv;
+ ll_fill_sd_from_permissions(rv, perm);
+ return rv;
+}
+void ll_fill_sd_from_permissions(LLSD& rv, const LLPermissions& perm)
+{
rv[PERM_CREATOR_ID_LABEL] = perm.getCreator();
rv[PERM_OWNER_ID_LABEL] = perm.getOwner();
rv[PERM_LAST_OWNER_ID_LABEL] = perm.getLastOwner();
rv[PERM_GROUP_ID_LABEL] = perm.getGroup();
rv[PERM_IS_OWNER_GROUP_LABEL] = perm.isGroupOwned();
- rv[PERM_BASE_MASK_LABEL] = (S32)perm.getMaskBase();
- rv[PERM_OWNER_MASK_LABEL] = (S32)perm.getMaskOwner();
- rv[PERM_GROUP_MASK_LABEL] = (S32)perm.getMaskGroup();
- rv[PERM_EVERYONE_MASK_LABEL] = (S32)perm.getMaskEveryone();
- rv[PERM_NEXT_OWNER_MASK_LABEL] = (S32)perm.getMaskNextOwner();
- return rv;
+ rv[PERM_BASE_MASK_LABEL] = (LLSD::Integer)perm.getMaskBase();
+ rv[PERM_OWNER_MASK_LABEL] = (LLSD::Integer)perm.getMaskOwner();
+ rv[PERM_GROUP_MASK_LABEL] = (LLSD::Integer)perm.getMaskGroup();
+ rv[PERM_EVERYONE_MASK_LABEL] = (LLSD::Integer)perm.getMaskEveryone();
+ rv[PERM_NEXT_OWNER_MASK_LABEL] = (LLSD::Integer)perm.getMaskNextOwner();
}
LLPermissions ll_permissions_from_sd(const LLSD& sd_perm)
diff --git a/indra/llinventory/llpermissions.h b/indra/llinventory/llpermissions.h
index a68abcfa34..f3e10af25c 100644
--- a/indra/llinventory/llpermissions.h
+++ b/indra/llinventory/llpermissions.h
@@ -435,6 +435,7 @@ protected:
// like 'creator_id', 'owner_id', etc, with the value copied from the
// permission object.
LLSD ll_create_sd_from_permissions(const LLPermissions& perm);
+void ll_fill_sd_from_permissions(LLSD& rv, const LLPermissions& perm);
LLPermissions ll_permissions_from_sd(const LLSD& sd_perm);
#endif
diff --git a/indra/llinventory/llsaleinfo.cpp b/indra/llinventory/llsaleinfo.cpp
index 35bbc1dbb1..b4d64bb4fb 100644
--- a/indra/llinventory/llsaleinfo.cpp
+++ b/indra/llinventory/llsaleinfo.cpp
@@ -90,15 +90,20 @@ bool LLSaleInfo::exportLegacyStream(std::ostream& output_stream) const
LLSD LLSaleInfo::asLLSD() const
{
LLSD sd;
+ asLLSD(sd);
+ return sd;
+}
+
+void LLSaleInfo::asLLSD(LLSD& sd) const
+{
const char* type = lookup(mSaleType);
if (!type)
{
LL_WARNS_ONCE() << "Unknown sale type: " << mSaleType << LL_ENDL;
type = lookup(LLSaleInfo::FS_NOT);
}
- sd["sale_type"] = type;
+ sd["sale_type"] = std::string(type);
sd["sale_price"] = mSalePrice;
- return sd;
}
bool LLSaleInfo::fromLLSD(const LLSD& sd, bool& has_perm_mask, U32& perm_mask)
diff --git a/indra/llinventory/llsaleinfo.h b/indra/llinventory/llsaleinfo.h
index 44eb841641..7186e8ab49 100644
--- a/indra/llinventory/llsaleinfo.h
+++ b/indra/llinventory/llsaleinfo.h
@@ -86,6 +86,7 @@ public:
bool exportLegacyStream(std::ostream& output_stream) const;
LLSD asLLSD() const;
+ void asLLSD(LLSD &sd) const;
operator LLSD() const { return asLLSD(); }
bool fromLLSD(const LLSD& sd, bool& has_perm_mask, U32& perm_mask);
bool importLegacyStream(std::istream& input_stream, bool& has_perm_mask, U32& perm_mask);
diff --git a/indra/llinventory/llsettingsbase.h b/indra/llinventory/llsettingsbase.h
index 7de71588ef..bea6fdec97 100644
--- a/indra/llinventory/llsettingsbase.h
+++ b/indra/llinventory/llsettingsbase.h
@@ -398,7 +398,7 @@ protected:
private:
bool mLLSDDirty;
- bool mDirty;
+ bool mDirty; // gates updateSettings
bool mReplaced; // super dirty!
static LLSD combineSDMaps(const LLSD &first, const LLSD &other);
diff --git a/indra/llinventory/llsettingssky.cpp b/indra/llinventory/llsettingssky.cpp
index e8ecc94b4b..ad37b08df7 100644
--- a/indra/llinventory/llsettingssky.cpp
+++ b/indra/llinventory/llsettingssky.cpp
@@ -1933,6 +1933,7 @@ LLUUID LLSettingsSky::getCloudNoiseTextureId() const
void LLSettingsSky::setCloudNoiseTextureId(const LLUUID &id)
{
mCloudTextureId = id;
+ setDirtyFlag(true);
setLLSDDirty();
}
@@ -1977,6 +1978,7 @@ LLVector2 LLSettingsSky::getCloudScrollRate() const
void LLSettingsSky::setCloudScrollRate(const LLVector2 &val)
{
mScrollRate = val;
+ setDirtyFlag(true);
setLLSDDirty();
}
@@ -2135,6 +2137,7 @@ LLUUID LLSettingsSky::getMoonTextureId() const
void LLSettingsSky::setMoonTextureId(LLUUID id)
{
mMoonTextureId = id;
+ setDirtyFlag(true);
setLLSDDirty();
}
@@ -2219,6 +2222,7 @@ LLUUID LLSettingsSky::getSunTextureId() const
void LLSettingsSky::setSunTextureId(LLUUID id)
{
mSunTextureId = id;
+ setDirtyFlag(true);
setLLSDDirty();
}
diff --git a/indra/llinventory/tests/inventorymisc_test.cpp b/indra/llinventory/tests/inventorymisc_test.cpp
index 9779cb8fbc..e41500b4c5 100644
--- a/indra/llinventory/tests/inventorymisc_test.cpp
+++ b/indra/llinventory/tests/inventorymisc_test.cpp
@@ -39,6 +39,34 @@
#pragma warning(disable: 4702)
#endif
+void set_random_inventory_metadata(LLInventoryObject* obj)
+{
+ S32 extra = rand() % 4;
+ switch (extra)
+ {
+ case 0:
+ {
+ LLUUID thumbnail_id;
+ thumbnail_id.generate();
+ obj->setThumbnailUUID(thumbnail_id);
+ break;
+ }
+ case 1:
+ obj->setFavorite(true);
+ break;
+ case 2:
+ {
+ LLUUID thumbnail_id;
+ thumbnail_id.generate();
+ obj->setThumbnailUUID(thumbnail_id);
+ obj->setFavorite(true);
+ break;
+ }
+ default:
+ break;
+ }
+}
+
LLPointer<LLInventoryItem> create_random_inventory_item()
{
LLUUID item_id;
@@ -75,6 +103,7 @@ LLPointer<LLInventoryItem> create_random_inventory_item()
sale_info,
flags,
creation);
+ set_random_inventory_metadata(item);
return item;
}
@@ -90,6 +119,7 @@ LLPointer<LLInventoryCategory> create_random_inventory_cat()
parent_id,
LLFolderType::FT_NONE,
std::string("Sample category"));
+ set_random_inventory_metadata(cat);
return cat;
}
@@ -290,6 +320,7 @@ namespace tut
src->setCreationDate(new_creation);
// test a save/load cycle to LLSD and back again
+ // Note: ll_create_sd_from_inventory_item does not support metadata
LLSD sd = ll_create_sd_from_inventory_item(src);
LLPointer<LLInventoryItem> dst = new LLInventoryItem;
bool successful_parse = dst->fromLLSD(sd);
@@ -329,7 +360,9 @@ namespace tut
}
LLPointer<LLInventoryItem> src1 = create_random_inventory_item();
- fileXML << LLSDOStreamer<LLSDNotationFormatter>(src1->asLLSD()) << std::endl;
+ LLSD sd;
+ src1->asLLSD(sd);
+ fileXML << LLSDOStreamer<LLSDNotationFormatter>(sd) << std::endl;
fileXML.close();
@@ -364,13 +397,13 @@ namespace tut
ensure_equals("8.name::getName() failed", src1->getName(), src2->getName());
ensure_equals("9.description::getDescription() failed", src1->getDescription(), src2->getDescription());
ensure_equals("10.creation::getCreationDate() failed", src1->getCreationDate(), src2->getCreationDate());
-
+ ensure_equals("13.thumbnails::getThumbnailUUID() failed", src1->getThumbnailUUID(), src2->getThumbnailUUID());
+ ensure_equals("14.favorites::getIsFavorite() failed", src1->getIsFavorite(), src2->getIsFavorite());
}
template<> template<>
void inventory_object::test<8>()
{
-
LLPointer<LLInventoryItem> src1 = create_random_inventory_item();
std::ostringstream ostream;
@@ -390,8 +423,8 @@ namespace tut
ensure_equals("8.name::getName() failed", src1->getName(), src2->getName());
ensure_equals("9.description::getDescription() failed", src1->getDescription(), src2->getDescription());
ensure_equals("10.creation::getCreationDate() failed", src1->getCreationDate(), src2->getCreationDate());
-
-
+ ensure_equals("11.thumbnails::getThumbnailUUID() failed", src1->getThumbnailUUID(), src2->getThumbnailUUID());
+ ensure_equals("12.favorites::getIsFavorite() failed", false, src2->getIsFavorite()); // not supposed to carry over
}
template<> template<>
@@ -421,6 +454,8 @@ namespace tut
ensure_equals("10.name::getName() failed", src1->getName(), src2->getName());
ensure_equals("11.description::getDescription() failed", src1->getDescription(), src2->getDescription());
ensure_equals("12.creation::getCreationDate() failed", src1->getCreationDate(), src2->getCreationDate());
+ ensure_equals("13.thumbnails::getThumbnailUUID() failed", src1->getThumbnailUUID(), src2->getThumbnailUUID());
+ ensure_equals("14.favorites::getIsFavorite() failed", src1->getIsFavorite(), src2->getIsFavorite());
}
//******class LLInventoryCategory*******//
@@ -458,7 +493,9 @@ namespace tut
}
LLPointer<LLInventoryCategory> src1 = create_random_inventory_cat();
- fileXML << LLSDOStreamer<LLSDNotationFormatter>(src1->exportLLSD()) << std::endl;
+ LLSD sd;
+ src1->exportLLSD(sd);
+ fileXML << LLSDOStreamer<LLSDNotationFormatter>(sd) << std::endl;
fileXML.close();
llifstream file(filename.c_str());
@@ -488,6 +525,8 @@ namespace tut
ensure_equals("3.type::getType() failed", src1->getType(), src2->getType());
ensure_equals("4.preferred type::getPreferredType() failed", src1->getPreferredType(), src2->getPreferredType());
ensure_equals("5.name::getName() failed", src1->getName(), src2->getName());
+ ensure_equals("6.thumbnails::getThumbnailUUID() failed", src1->getThumbnailUUID(), src2->getThumbnailUUID());
+ ensure_equals("7.favorites::getIsFavorite() failed", src1->getIsFavorite(), src2->getIsFavorite());
}
template<> template<>
@@ -507,6 +546,7 @@ namespace tut
ensure_equals("3.type::getType() failed", src1->getType(), src2->getType());
ensure_equals("4.preferred type::getPreferredType() failed", src1->getPreferredType(), src2->getPreferredType());
ensure_equals("5.name::getName() failed", src1->getName(), src2->getName());
-
+ ensure_equals("13.thumbnails::getThumbnailUUID() failed", src1->getThumbnailUUID(), src2->getThumbnailUUID());
+ ensure_equals("14.favorites::getIsFavorite() failed", false, src2->getIsFavorite()); // currently not supposed to carry over
}
}
diff --git a/indra/llmath/CMakeLists.txt b/indra/llmath/CMakeLists.txt
index c0a62ad225..e21b6fdb84 100644
--- a/indra/llmath/CMakeLists.txt
+++ b/indra/llmath/CMakeLists.txt
@@ -105,7 +105,7 @@ add_library (llmath ${llmath_SOURCE_FILES})
target_link_libraries(llmath llcommon llmeshoptimizer)
target_include_directories( llmath INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
-if (USESYSTEMLIBS AND CMAKE_CXX_COMPILER_ID MATCHES "GNU")
+if (CMAKE_CXX_COMPILER_ID MATCHES GNU)
set_source_files_properties(llcalc.cpp PROPERTIES
COMPILE_FLAGS -Wno-dangling-pointer)
endif ()
diff --git a/indra/llmath/llsimdmath.h b/indra/llmath/llsimdmath.h
index 590d8de92f..6242095456 100644
--- a/indra/llmath/llsimdmath.h
+++ b/indra/llmath/llsimdmath.h
@@ -39,7 +39,7 @@
#include <stdint.h>
#endif
-#if defined(__i386__) || defined(__x86_64__)
+#if defined(__i386__) || defined(__x86_64__) || _M_X64
#include <xmmintrin.h>
#include <emmintrin.h>
#else
diff --git a/indra/llmath/llvolume.cpp b/indra/llmath/llvolume.cpp
index ca7bd8907b..d56891cab3 100644
--- a/indra/llmath/llvolume.cpp
+++ b/indra/llmath/llvolume.cpp
@@ -55,11 +55,7 @@
#include "mikktspace/mikktspace.hh"
-#if LL_USESYSTEMLIBS
#include <meshoptimizer.h>
-#else
-#include "meshoptimizer/meshoptimizer.h"
-#endif
#define DEBUG_SILHOUETTE_BINORMALS 0
#define DEBUG_SILHOUETTE_NORMALS 0 // TomY: Use this to display normals using the silhouette
diff --git a/indra/llmessage/CMakeLists.txt b/indra/llmessage/CMakeLists.txt
index 5ca62352a3..f661e2c348 100644
--- a/indra/llmessage/CMakeLists.txt
+++ b/indra/llmessage/CMakeLists.txt
@@ -197,11 +197,8 @@ target_link_libraries(
)
target_include_directories( llmessage INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
-if (NOT (USE_AUTOBUILD_3P OR USE_CONAN))
- if (CMAKE_CXX_COMPILER_ID MATCHES "GNU")
- set_source_files_properties(llnamevalue.cpp PROPERTIES
- COMPILE_FLAGS -Wno-stringop-truncation)
- endif()
+if (CMAKE_CXX_COMPILER_ID MATCHES GNU)
+ set_source_files_properties(llnamevalue.cpp PROPERTIES COMPILE_FLAGS -Wno-stringop-truncation)
endif ()
include(LibraryInstall)
diff --git a/indra/llmessage/llpacketring.cpp b/indra/llmessage/llpacketring.cpp
index eb6650c6c5..b8284334ea 100644
--- a/indra/llmessage/llpacketring.cpp
+++ b/indra/llmessage/llpacketring.cpp
@@ -209,8 +209,14 @@ S32 LLPacketRing::receiveOrDropBufferedPacket(char *datap, bool drop)
if (!drop)
{
- assert(packet_size > 0);
- memcpy(datap, packet->getData(), packet_size);
+ if (packet_size > 0)
+ {
+ memcpy(datap, packet->getData(), packet_size);
+ }
+ else
+ {
+ assert(false);
+ }
}
else
{
diff --git a/indra/llmessage/llproxy.cpp b/indra/llmessage/llproxy.cpp
index d713cb20d9..5d105eba34 100644
--- a/indra/llmessage/llproxy.cpp
+++ b/indra/llmessage/llproxy.cpp
@@ -504,6 +504,7 @@ static apr_status_t tcp_blocking_handshake(LLSocket::ptr_t handle, char * dataou
rv = apr_socket_recv(apr_socket, datain, &maxinlen);
if (rv != APR_SUCCESS)
{
+ // if rv == 70060 it's WSAETIMEDOUT
char buf[MAX_STRING];
LL_WARNS("Proxy") << "Error receiving data from proxy control channel, status: " << rv << " " << apr_strerror(rv, buf, MAX_STRING) << LL_ENDL;
ll_apr_warn_status(rv);
diff --git a/indra/llprimitive/lldaeloader.h b/indra/llprimitive/lldaeloader.h
index c6e5ea42fc..92152fb8b8 100644
--- a/indra/llprimitive/lldaeloader.h
+++ b/indra/llprimitive/lldaeloader.h
@@ -29,7 +29,7 @@
#include "llmodelloader.h"
-#ifndef LL_USESYSTEMLIBS
+#if 0
class DAE;
class daeElement;
class domProfile_COMMON;
diff --git a/indra/llprimitive/llmodel.cpp b/indra/llprimitive/llmodel.cpp
index 2fb1956301..d8a1e4b6e1 100644
--- a/indra/llprimitive/llmodel.cpp
+++ b/indra/llprimitive/llmodel.cpp
@@ -33,7 +33,7 @@
#include "llvector4a.h"
#include "hbxxh.h"
-#ifdef LL_USESYSTEMLIBS
+#if 1
# include <zlib.h>
#else
# include "zlib-ng/zlib.h"
diff --git a/indra/llprimitive/llmodel.h b/indra/llprimitive/llmodel.h
index 309c5df64c..4b5d079b48 100644
--- a/indra/llprimitive/llmodel.h
+++ b/indra/llprimitive/llmodel.h
@@ -35,7 +35,7 @@
#include <boost/align/aligned_allocator.hpp>
-#ifndef LL_USESYSTEMLIBS
+#if 0
class daeElement;
class domMesh;
#endif
diff --git a/indra/llrender/llfontfreetype.cpp b/indra/llrender/llfontfreetype.cpp
index 2d8b8a0fee..41d0a1af31 100644
--- a/indra/llrender/llfontfreetype.cpp
+++ b/indra/llrender/llfontfreetype.cpp
@@ -656,7 +656,14 @@ LLFontGlyphInfo* LLFontFreetype::addGlyphFromFont(const LLFontFreetype *fontp, l
LLImageGL *image_gl = mFontBitmapCachep->getImageGL(bitmap_glyph_type, bitmap_num);
LLImageRaw *image_raw = mFontBitmapCachep->getImageRaw(bitmap_glyph_type, bitmap_num);
- image_gl->setSubImage(image_raw, 0, 0, image_gl->getWidth(), image_gl->getHeight());
+ if (image_gl && image_raw)
+ {
+ image_gl->setSubImage(image_raw, 0, 0, image_gl->getWidth(), image_gl->getHeight());
+ }
+ else
+ {
+ llassert(false); //images were just inserted by nextOpenPos, they shouldn't be missing
+ }
return gi;
}
@@ -840,7 +847,12 @@ bool LLFontFreetype::setSubImageBGRA(U32 x, U32 y, U32 bitmap_num, U16 width, U1
{
LLImageRaw* image_raw = mFontBitmapCachep->getImageRaw(EFontGlyphType::Color, bitmap_num);
llassert(!mIsFallback);
- llassert(image_raw && (image_raw->getComponents() == 4));
+ if (!image_raw)
+ {
+ llassert(false);
+ return false;
+ }
+ llassert(image_raw->getComponents() == 4);
// NOTE: inspired by LLImageRaw::setSubImage()
U32* image_data = (U32*)image_raw->getData();
@@ -868,10 +880,17 @@ bool LLFontFreetype::setSubImageBGRA(U32 x, U32 y, U32 bitmap_num, U16 width, U1
void LLFontFreetype::setSubImageLuminanceAlpha(U32 x, U32 y, U32 bitmap_num, U32 width, U32 height, U8 *data, S32 stride) const
{
LLImageRaw *image_raw = mFontBitmapCachep->getImageRaw(EFontGlyphType::Grayscale, bitmap_num);
- LLImageDataLock lock(image_raw);
llassert(!mIsFallback);
- llassert(image_raw && (image_raw->getComponents() == 2));
+ if (!image_raw)
+ {
+ llassert(false);
+ return;
+ }
+
+ LLImageDataLock lock(image_raw);
+
+ llassert(image_raw->getComponents() == 2);
U8 *target = image_raw->getData();
llassert(target);
diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp
index 3b506d6965..70a28a1740 100644
--- a/indra/llrender/llgl.cpp
+++ b/indra/llrender/llgl.cpp
@@ -1233,28 +1233,9 @@ bool LLGLManager::initGL()
}
#endif
-#if LL_WINDOWS
- if (mVRAM < 256)
- {
- // Something likely went wrong using the above extensions
- // try WMI first and fall back to old method (from dxdiag) if all else fails
- // Function will check all GPUs WMI knows of and will pick up the one with most
- // memory. We need to check all GPUs because system can switch active GPU to
- // weaker one, to preserve power when not under load.
- U32 mem = LLDXHardware::getMBVideoMemoryViaWMI();
- if (mem != 0)
- {
- mVRAM = mem;
- LL_WARNS("RenderInit") << "VRAM Detected (WMI):" << mVRAM<< LL_ENDL;
- }
- }
-#endif
-
if (mVRAM < 256 && old_vram > 0)
{
// fall back to old method
- // Note: on Windows value will be from LLDXHardware.
- // Either received via dxdiag or via WMI by id from dxdiag.
mVRAM = old_vram;
}
diff --git a/indra/llrender/llglslshader.cpp b/indra/llrender/llglslshader.cpp
index 3d7bf500f1..aac5e3abc8 100644
--- a/indra/llrender/llglslshader.cpp
+++ b/indra/llrender/llglslshader.cpp
@@ -1114,8 +1114,8 @@ void LLGLSLShader::bind()
void LLGLSLShader::bind(U8 variant)
{
- llassert(mGLTFVariants.size() == LLGLSLShader::NUM_GLTF_VARIANTS);
- llassert(variant < LLGLSLShader::NUM_GLTF_VARIANTS);
+ llassert_always(mGLTFVariants.size() == LLGLSLShader::NUM_GLTF_VARIANTS);
+ llassert_always(variant < LLGLSLShader::NUM_GLTF_VARIANTS);
mGLTFVariants[variant].bind();
}
@@ -1123,7 +1123,7 @@ void LLGLSLShader::bind(bool rigged)
{
if (rigged)
{
- llassert(mRiggedVariant);
+ llassert_always(mRiggedVariant);
mRiggedVariant->bind();
}
else
@@ -1285,23 +1285,40 @@ S32 LLGLSLShader::disableTexture(S32 uniform, LLTexUnit::eTextureType mode)
llassert(false);
return -1;
}
+
S32 index = mTexture[uniform];
- if (index != -1 && gGL.getTexUnit(index)->getCurrType() != LLTexUnit::TT_NONE)
+ if (index < 0)
+ {
+ // Invalid texture index - nothing to disable
+ return index;
+ }
+
+ LLTexUnit* tex_unit = gGL.getTexUnit(index);
+ if (!tex_unit)
{
- if (gDebugGL && gGL.getTexUnit(index)->getCurrType() != mode)
+ // Invalid texture unit
+ LL_WARNS_ONCE("Shader") << "Invalid texture unit at index: " << index << LL_ENDL;
+ return index;
+ }
+
+ LLTexUnit::eTextureType curr_type = tex_unit->getCurrType();
+ if (curr_type != LLTexUnit::TT_NONE)
+ {
+ if (gDebugGL && curr_type != mode)
{
if (gDebugSession)
{
- gFailLog << "Texture channel " << index << " texture type corrupted." << std::endl;
+ gFailLog << "Texture channel " << index << " texture type corrupted. Expected: " << mode << ", Found: " << curr_type << std::endl;
ll_fail("LLGLSLShader::disableTexture failed");
}
else
{
- LL_ERRS() << "Texture channel " << index << " texture type corrupted." << LL_ENDL;
+ LL_ERRS() << "Texture channel " << index << " texture type corrupted. Expected: " << mode << ", Found: " << curr_type << LL_ENDL;
}
}
- gGL.getTexUnit(index)->disable();
+ tex_unit->disable();
}
+
return index;
}
diff --git a/indra/llui/CMakeLists.txt b/indra/llui/CMakeLists.txt
index 5991a5b35e..83b3a220a0 100644
--- a/indra/llui/CMakeLists.txt
+++ b/indra/llui/CMakeLists.txt
@@ -18,6 +18,7 @@ set(llui_SOURCE_FILES
llbadgeowner.cpp
llbutton.cpp
llchatentry.cpp
+ llchatmentionhelper.cpp
llcheckboxctrl.cpp
llclipboard.cpp
llcombobox.cpp
@@ -130,6 +131,7 @@ set(llui_HEADER_FILES
llcallbackmap.h
llchatentry.h
llchat.h
+ llchatmentionhelper.h
llcheckboxctrl.h
llclipboard.h
llcombobox.h
diff --git a/indra/llui/llchatentry.cpp b/indra/llui/llchatentry.cpp
index e8d942b8af..7506cd99c0 100644
--- a/indra/llui/llchatentry.cpp
+++ b/indra/llui/llchatentry.cpp
@@ -52,6 +52,7 @@ LLChatEntry::LLChatEntry(const Params& p)
mCurrentHistoryLine = mLineHistory.begin();
mAutoIndent = false;
+ mShowChatMentionPicker = true;
keepSelectionOnReturn(true);
}
diff --git a/indra/llui/llchatmentionhelper.cpp b/indra/llui/llchatmentionhelper.cpp
new file mode 100644
index 0000000000..5745389a58
--- /dev/null
+++ b/indra/llui/llchatmentionhelper.cpp
@@ -0,0 +1,158 @@
+/**
+* @file llchatmentionhelper.cpp
+*
+* $LicenseInfo:firstyear=2025&license=viewerlgpl$
+* Second Life Viewer Source Code
+* Copyright (C) 2025, Linden Research, Inc.
+*
+* This library is free software; you can redistribute it and/or
+* modify it under the terms of the GNU Lesser General Public
+* License as published by the Free Software Foundation;
+* version 2.1 of the License only.
+*
+* This library is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this library; if not, write to the Free Software
+* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+*
+* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+* $/LicenseInfo$
+*/
+
+#include "linden_common.h"
+
+#include "llchatmentionhelper.h"
+#include "llfloater.h"
+#include "llfloaterreg.h"
+#include "lluictrl.h"
+
+constexpr char CHAT_MENTION_HELPER_FLOATER[] = "chat_mention_picker";
+
+bool LLChatMentionHelper::isActive(const LLUICtrl* ctrl) const
+{
+ return mHostHandle.get() == ctrl;
+}
+
+bool LLChatMentionHelper::isCursorInNameMention(const LLWString& wtext, S32 cursor_pos, S32* mention_start_pos) const
+{
+ if (cursor_pos <= 0 || cursor_pos > static_cast<S32>(wtext.size()))
+ return false;
+
+ // Find the beginning of the current word
+ S32 start = cursor_pos - 1;
+ while (start > 0 && wtext[start - 1] != U32(' ') && wtext[start - 1] != U32('\n'))
+ {
+ --start;
+ }
+
+ if (wtext[start] != U32('@'))
+ return false;
+
+ if (mention_start_pos)
+ *mention_start_pos = start;
+
+ S32 word_length = cursor_pos - start;
+
+ if (word_length == 1)
+ {
+ return true;
+ }
+
+ // Get the name after '@'
+ std::string name = wstring_to_utf8str(wtext.substr(start + 1, word_length - 1));
+ LLStringUtil::toLower(name);
+ for (const auto& av_name : mAvatarNames)
+ {
+ if (av_name == name || av_name.find(name) == 0)
+ {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+void LLChatMentionHelper::showHelper(LLUICtrl* host_ctrl, S32 local_x, S32 local_y, const std::string& av_name, std::function<void(std::string)> cb)
+{
+ if (mHelperHandle.isDead())
+ {
+ LLFloater* av_picker_floater = LLFloaterReg::getInstance(CHAT_MENTION_HELPER_FLOATER);
+ mHelperHandle = av_picker_floater->getHandle();
+ mHelperCommitConn = av_picker_floater->setCommitCallback([&](LLUICtrl* ctrl, const LLSD& param) { onCommitName(param.asString()); });
+ }
+ setHostCtrl(host_ctrl);
+ mNameCommitCb = cb;
+
+ S32 floater_x, floater_y;
+ if (!host_ctrl->localPointToOtherView(local_x, local_y, &floater_x, &floater_y, gFloaterView))
+ {
+ LL_WARNS() << "Cannot show helper for non-floater controls." << LL_ENDL;
+ return;
+ }
+
+ LLFloater* av_picker_floater = mHelperHandle.get();
+ LLRect rect = av_picker_floater->getRect();
+ rect.setLeftTopAndSize(floater_x, floater_y + rect.getHeight(), rect.getWidth(), rect.getHeight());
+ av_picker_floater->setRect(rect);
+ if (av_picker_floater->isShown())
+ {
+ av_picker_floater->onOpen(LLSD().with("av_name", av_name));
+ }
+ else
+ {
+ av_picker_floater->openFloater(LLSD().with("av_name", av_name));
+ }
+}
+
+void LLChatMentionHelper::hideHelper(const LLUICtrl* ctrl)
+{
+ if ((ctrl && !isActive(ctrl)))
+ {
+ return;
+ }
+ setHostCtrl(nullptr);
+}
+
+bool LLChatMentionHelper::handleKey(const LLUICtrl* ctrl, KEY key, MASK mask)
+{
+ if (mHelperHandle.isDead() || !isActive(ctrl))
+ {
+ return false;
+ }
+
+ return mHelperHandle.get()->handleKey(key, mask, true);
+}
+
+void LLChatMentionHelper::onCommitName(std::string name_url)
+{
+ if (!mHostHandle.isDead() && mNameCommitCb)
+ {
+ mNameCommitCb(name_url);
+ }
+}
+
+void LLChatMentionHelper::setHostCtrl(LLUICtrl* host_ctrl)
+{
+ const LLUICtrl* pCurHostCtrl = mHostHandle.get();
+ if (pCurHostCtrl != host_ctrl)
+ {
+ mHostCtrlFocusLostConn.disconnect();
+ mHostHandle.markDead();
+ mNameCommitCb = {};
+
+ if (!mHelperHandle.isDead())
+ {
+ mHelperHandle.get()->closeFloater();
+ }
+
+ if (host_ctrl)
+ {
+ mHostHandle = host_ctrl->getHandle();
+ mHostCtrlFocusLostConn = host_ctrl->setFocusLostCallback(std::bind([&]() { hideHelper(getHostCtrl()); }));
+ }
+ }
+}
diff --git a/indra/llui/llchatmentionhelper.h b/indra/llui/llchatmentionhelper.h
new file mode 100644
index 0000000000..5f95d06f31
--- /dev/null
+++ b/indra/llui/llchatmentionhelper.h
@@ -0,0 +1,66 @@
+/**
+* @file llchatmentionhelper.h
+* @brief Header file for LLChatMentionHelper
+*
+* $LicenseInfo:firstyear=2025&license=viewerlgpl$
+* Second Life Viewer Source Code
+* Copyright (C) 2025, 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$
+*/
+
+#pragma once
+
+#include "llhandle.h"
+#include "llsingleton.h"
+
+#include <boost/signals2.hpp>
+
+class LLFloater;
+class LLUICtrl;
+
+class LLChatMentionHelper : public LLSingleton<LLChatMentionHelper>
+{
+ LLSINGLETON(LLChatMentionHelper) {}
+ ~LLChatMentionHelper() override {}
+
+public:
+
+ bool isActive(const LLUICtrl* ctrl) const;
+ bool isCursorInNameMention(const LLWString& wtext, S32 cursor_pos, S32* mention_start_pos = nullptr) const;
+ void showHelper(LLUICtrl* host_ctrl, S32 local_x, S32 local_y, const std::string& av_name, std::function<void(std::string)> commit_cb);
+ void hideHelper(const LLUICtrl* ctrl = nullptr);
+
+ bool handleKey(const LLUICtrl* ctrl, KEY key, MASK mask);
+ void onCommitName(std::string name_url);
+
+ void updateAvatarList(std::vector<std::string> av_names) { mAvatarNames = av_names; }
+
+protected:
+ void setHostCtrl(LLUICtrl* host_ctrl);
+ LLUICtrl* getHostCtrl() const { return mHostHandle.get(); }
+
+private:
+ LLHandle<LLUICtrl> mHostHandle;
+ LLHandle<LLFloater> mHelperHandle;
+ boost::signals2::connection mHostCtrlFocusLostConn;
+ boost::signals2::connection mHelperCommitConn;
+ std::function<void(std::string)> mNameCommitCb;
+
+ std::vector<std::string> mAvatarNames;
+};
diff --git a/indra/llui/llemojihelper.cpp b/indra/llui/llemojihelper.cpp
index b9441a9c91..b2c59ce775 100644
--- a/indra/llui/llemojihelper.cpp
+++ b/indra/llui/llemojihelper.cpp
@@ -99,6 +99,7 @@ void LLEmojiHelper::showHelper(LLUICtrl* hostctrl_p, S32 local_x, S32 local_y, c
LLFloater* pHelperFloater = LLFloaterReg::getInstance(DEFAULT_EMOJI_HELPER_FLOATER);
mHelperHandle = pHelperFloater->getHandle();
mHelperCommitConn = pHelperFloater->setCommitCallback(std::bind([&](const LLSD& sdValue) { onCommitEmoji(utf8str_to_wstring(sdValue.asStringRef())[0]); }, std::placeholders::_2));
+ mHelperCloseConn = pHelperFloater->setCloseCallback([this](LLUICtrl* ctrl, const LLSD& param) { onCloseHelper(ctrl, param); });
}
setHostCtrl(hostctrl_p);
mEmojiCommitCb = cb;
@@ -148,6 +149,16 @@ void LLEmojiHelper::onCommitEmoji(llwchar emoji)
}
}
+void LLEmojiHelper::onCloseHelper(LLUICtrl* ctrl, const LLSD& param)
+{
+ mCloseSignal(ctrl, param);
+}
+
+boost::signals2::connection LLEmojiHelper::setCloseCallback(const commit_signal_t::slot_type& cb)
+{
+ return mCloseSignal.connect(cb);
+}
+
void LLEmojiHelper::setHostCtrl(LLUICtrl* hostctrl_p)
{
const LLUICtrl* pCurHostCtrl = mHostHandle.get();
diff --git a/indra/llui/llemojihelper.h b/indra/llui/llemojihelper.h
index 2834b06061..26840eef94 100644
--- a/indra/llui/llemojihelper.h
+++ b/indra/llui/llemojihelper.h
@@ -51,16 +51,23 @@ public:
// Eventing
bool handleKey(const LLUICtrl* ctrl_p, KEY key, MASK mask);
void onCommitEmoji(llwchar emoji);
+ void onCloseHelper(LLUICtrl* ctrl, const LLSD& param);
+
+ typedef boost::signals2::signal<void(LLUICtrl* ctrl, const LLSD& param)> commit_signal_t;
+ boost::signals2::connection setCloseCallback(const commit_signal_t::slot_type& cb);
protected:
LLUICtrl* getHostCtrl() const { return mHostHandle.get(); }
void setHostCtrl(LLUICtrl* hostctrl_p);
private:
+ commit_signal_t mCloseSignal;
+
LLHandle<LLUICtrl> mHostHandle;
LLHandle<LLFloater> mHelperHandle;
boost::signals2::connection mHostCtrlFocusLostConn;
boost::signals2::connection mHelperCommitConn;
+ boost::signals2::connection mHelperCloseConn;
std::function<void(llwchar)> mEmojiCommitCb;
bool mIsHideDisabled;
};
diff --git a/indra/llui/llflatlistview.cpp b/indra/llui/llflatlistview.cpp
index 8a69bd010e..5be20bd314 100644
--- a/indra/llui/llflatlistview.cpp
+++ b/indra/llui/llflatlistview.cpp
@@ -459,6 +459,7 @@ LLFlatListView::LLFlatListView(const LLFlatListView::Params& p)
, mNoItemsCommentTextbox(NULL)
, mIsConsecutiveSelection(false)
, mKeepSelectionVisibleOnReshape(p.keep_selection_visible_on_reshape)
+ , mFocusOnItemClicked(true)
{
mBorderThickness = getBorderWidth();
@@ -610,7 +611,10 @@ void LLFlatListView::onItemMouseClick(item_pair_t* item_pair, MASK mask)
return;
}
- setFocus(true);
+ if (mFocusOnItemClicked)
+ {
+ setFocus(true);
+ }
bool select_item = !isSelected(item_pair);
diff --git a/indra/llui/llflatlistview.h b/indra/llui/llflatlistview.h
index 5c5621019d..1f22360a8a 100644
--- a/indra/llui/llflatlistview.h
+++ b/indra/llui/llflatlistview.h
@@ -299,6 +299,8 @@ public:
virtual S32 notify(const LLSD& info) override;
+ void setFocusOnItemClicked(bool b) { mFocusOnItemClicked = b; }
+
virtual ~LLFlatListView();
protected:
@@ -423,6 +425,8 @@ private:
bool mKeepSelectionVisibleOnReshape;
+ bool mFocusOnItemClicked;
+
/** All pairs of the list */
pairs_list_t mItemPairs;
diff --git a/indra/llui/llfolderviewitem.h b/indra/llui/llfolderviewitem.h
index b0a4aec49e..c9b003b892 100644
--- a/indra/llui/llfolderviewitem.h
+++ b/indra/llui/llfolderviewitem.h
@@ -161,7 +161,7 @@ protected:
virtual bool isHighlightActive();
virtual bool isFadeItem();
virtual bool isFlashing() { return false; }
- virtual void setFlashState(bool) { }
+ virtual void setFlashState(bool, bool) { }
static LLFontGL* getLabelFontForStyle(U8 style);
const LLFontGL* getLabelFont();
diff --git a/indra/llui/lllineeditor.cpp b/indra/llui/lllineeditor.cpp
index 66b274c33f..45dab88e87 100644
--- a/indra/llui/lllineeditor.cpp
+++ b/indra/llui/lllineeditor.cpp
@@ -2505,9 +2505,24 @@ void LLLineEditor::resetPreedit()
if (hasPreeditString())
{
const S32 preedit_pos = mPreeditPositions.front();
- mText.erase(preedit_pos, mPreeditPositions.back() - preedit_pos);
- mText.insert(preedit_pos, mPreeditOverwrittenWString);
- setCursor(preedit_pos);
+ const S32 end = mPreeditPositions.back();
+ const S32 len = end - preedit_pos;
+ const S32 size = mText.length();
+ if (preedit_pos < size
+ && end <= size
+ && preedit_pos >= 0
+ && len > 0)
+ {
+ mText.erase(preedit_pos, len);
+ mText.insert(preedit_pos, mPreeditOverwrittenWString);
+ setCursor(preedit_pos);
+ }
+ else
+ {
+ LL_WARNS() << "Index out of bounds. Start: " << preedit_pos
+ << ", end:" << end
+ << ", full string length: " << size << LL_ENDL;
+ }
mPreeditWString.clear();
mPreeditOverwrittenWString.clear();
diff --git a/indra/llui/llstyle.cpp b/indra/llui/llstyle.cpp
index 4714665e8b..7a0e620d61 100644
--- a/indra/llui/llstyle.cpp
+++ b/indra/llui/llstyle.cpp
@@ -38,11 +38,13 @@ LLStyle::Params::Params()
color("color", LLColor4::black),
readonly_color("readonly_color", LLColor4::black),
selected_color("selected_color", LLColor4::black),
+ highlight_bg_color("highlight_bg_color", LLColor4::green),
alpha("alpha", 1.f),
font("font", LLStyle::getDefaultFont()),
image("image"),
link_href("href"),
- is_link("is_link")
+ is_link("is_link"),
+ draw_highlight_bg("draw_highlight_bg", false)
{}
@@ -51,12 +53,14 @@ LLStyle::LLStyle(const LLStyle::Params& p)
mColor(p.color),
mReadOnlyColor(p.readonly_color),
mSelectedColor(p.selected_color),
+ mHighlightBgColor(p.highlight_bg_color),
mFont(p.font()),
mLink(p.link_href),
mIsLink(p.is_link.isProvided() ? p.is_link : !p.link_href().empty()),
mDropShadow(p.drop_shadow),
mImagep(p.image()),
- mAlpha(p.alpha)
+ mAlpha(p.alpha),
+ mDrawHighlightBg(p.draw_highlight_bg)
{}
void LLStyle::setFont(const LLFontGL* font)
diff --git a/indra/llui/llstyle.h b/indra/llui/llstyle.h
index 0c78fe5a9f..71c3f88109 100644
--- a/indra/llui/llstyle.h
+++ b/indra/llui/llstyle.h
@@ -43,15 +43,25 @@ public:
Optional<LLFontGL::ShadowType> drop_shadow;
Optional<LLUIColor> color,
readonly_color,
- selected_color;
+ selected_color,
+ highlight_bg_color;
Optional<F32> alpha;
Optional<const LLFontGL*> font;
Optional<LLUIImage*> image;
Optional<std::string> link_href;
Optional<bool> is_link;
+ Optional<bool> draw_highlight_bg;
Params();
};
LLStyle(const Params& p = Params());
+
+ enum EUnderlineLink
+ {
+ UNDERLINE_ALWAYS = 0,
+ UNDERLINE_ON_HOVER,
+ UNDERLINE_NEVER
+ };
+
public:
const LLUIColor& getColor() const { return mColor; }
void setColor(const LLUIColor &color) { mColor = color; }
@@ -84,6 +94,9 @@ public:
bool isImage() const { return mImagep.notNull(); }
+ bool getDrawHighlightBg() const { return mDrawHighlightBg; }
+ const LLUIColor& getHighlightBgColor() const { return mHighlightBgColor; }
+
bool operator==(const LLStyle &rhs) const
{
return
@@ -91,11 +104,13 @@ public:
&& mColor == rhs.mColor
&& mReadOnlyColor == rhs.mReadOnlyColor
&& mSelectedColor == rhs.mSelectedColor
+ && mHighlightBgColor == rhs.mHighlightBgColor
&& mFont == rhs.mFont
&& mLink == rhs.mLink
&& mImagep == rhs.mImagep
&& mDropShadow == rhs.mDropShadow
- && mAlpha == rhs.mAlpha;
+ && mAlpha == rhs.mAlpha
+ && mDrawHighlightBg == rhs.mDrawHighlightBg;
}
bool operator!=(const LLStyle& rhs) const { return !(*this == rhs); }
@@ -112,11 +127,13 @@ private:
LLUIColor mColor;
LLUIColor mReadOnlyColor;
LLUIColor mSelectedColor;
+ LLUIColor mHighlightBgColor;
const LLFontGL* mFont;
LLPointer<LLUIImage> mImagep;
F32 mAlpha;
bool mVisible;
bool mIsLink;
+ bool mDrawHighlightBg;
};
typedef LLPointer<LLStyle> LLStyleSP;
diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp
index 41e7094163..778b253c3c 100644
--- a/indra/llui/lltextbase.cpp
+++ b/indra/llui/lltextbase.cpp
@@ -460,6 +460,62 @@ std::vector<LLRect> LLTextBase::getSelectionRects()
return selection_rects;
}
+std::vector<std::pair<LLRect, LLUIColor>> LLTextBase::getHighlightedBgRects()
+{
+ std::vector<std::pair<LLRect, LLUIColor>> highlight_rects;
+
+ LLRect content_display_rect = getVisibleDocumentRect();
+
+ // binary search for line that starts before top of visible buffer
+ line_list_t::const_iterator line_iter =
+ std::lower_bound(mLineInfoList.begin(), mLineInfoList.end(), content_display_rect.mTop, compare_bottom());
+ line_list_t::const_iterator end_iter =
+ std::upper_bound(mLineInfoList.begin(), mLineInfoList.end(), content_display_rect.mBottom, compare_top());
+
+ for (; line_iter != end_iter; ++line_iter)
+ {
+ segment_set_t::iterator segment_iter;
+ S32 segment_offset;
+ getSegmentAndOffset(line_iter->mDocIndexStart, &segment_iter, &segment_offset);
+
+ // Use F32 otherwise a string of multiple segments
+ // will accumulate a large error
+ F32 left_precise = (F32)line_iter->mRect.mLeft;
+ F32 right_precise = (F32)line_iter->mRect.mLeft;
+
+ for (; segment_iter != mSegments.end(); ++segment_iter, segment_offset = 0)
+ {
+ LLTextSegmentPtr segmentp = *segment_iter;
+
+ S32 segment_line_start = segmentp->getStart() + segment_offset;
+ S32 segment_line_end = llmin(segmentp->getEnd(), line_iter->mDocIndexEnd);
+
+ if (segment_line_start > segment_line_end)
+ break;
+
+ F32 segment_width = 0;
+ S32 segment_height = 0;
+
+ S32 num_chars = segment_line_end - segment_line_start;
+ segmentp->getDimensionsF32(segment_offset, num_chars, segment_width, segment_height);
+ right_precise += segment_width;
+
+ if (segmentp->getStyle()->getDrawHighlightBg())
+ {
+ LLRect selection_rect;
+ selection_rect.mLeft = (S32)left_precise;
+ selection_rect.mRight = (S32)right_precise;
+ selection_rect.mBottom = line_iter->mRect.mBottom;
+ selection_rect.mTop = line_iter->mRect.mTop;
+
+ highlight_rects.push_back(std::pair(selection_rect, segmentp->getStyle()->getHighlightBgColor()));
+ }
+ left_precise += segment_width;
+ }
+ }
+ return highlight_rects;
+}
+
// Draws the black box behind the selected text
void LLTextBase::drawSelectionBackground()
{
@@ -529,6 +585,71 @@ void LLTextBase::drawSelectionBackground()
}
}
+void LLTextBase::drawHighlightedBackground()
+{
+ if (!mLineInfoList.empty())
+ {
+ std::vector<std::pair<LLRect, LLUIColor>> highlight_rects = getHighlightedBgRects();
+
+ if (highlight_rects.empty())
+ return;
+
+ gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
+
+ LLRect content_display_rect = getVisibleDocumentRect();
+
+ for (std::vector<std::pair<LLRect, LLUIColor>>::iterator rect_it = highlight_rects.begin();
+ rect_it != highlight_rects.end(); ++rect_it)
+ {
+ LLRect selection_rect = rect_it->first;
+ const LLColor4& color = rect_it->second;
+ if (mScroller)
+ {
+ // If scroller is On content_display_rect has correct rect and safe to use as is
+ // Note: we might need to account for border
+ selection_rect.translate(mVisibleTextRect.mLeft - content_display_rect.mLeft, mVisibleTextRect.mBottom - content_display_rect.mBottom);
+ }
+ else
+ {
+ // If scroller is Off content_display_rect will have rect from document, adjusted to text width, heigh and position
+ // and we have to acount for offset depending on position
+ S32 v_delta = 0;
+ S32 h_delta = 0;
+ switch (mVAlign)
+ {
+ case LLFontGL::TOP:
+ v_delta = mVisibleTextRect.mTop - content_display_rect.mTop - mVPad;
+ break;
+ case LLFontGL::VCENTER:
+ v_delta = (llmax(mVisibleTextRect.getHeight() - content_display_rect.mTop, -content_display_rect.mBottom) + (mVisibleTextRect.mBottom - content_display_rect.mBottom)) / 2;
+ break;
+ case LLFontGL::BOTTOM:
+ v_delta = mVisibleTextRect.mBottom - content_display_rect.mBottom;
+ break;
+ default:
+ break;
+ }
+ switch (mHAlign)
+ {
+ case LLFontGL::LEFT:
+ h_delta = mVisibleTextRect.mLeft - content_display_rect.mLeft + mHPad;
+ break;
+ case LLFontGL::HCENTER:
+ h_delta = (llmax(mVisibleTextRect.getWidth() - content_display_rect.mLeft, -content_display_rect.mRight) + (mVisibleTextRect.mRight - content_display_rect.mRight)) / 2;
+ break;
+ case LLFontGL::RIGHT:
+ h_delta = mVisibleTextRect.mRight - content_display_rect.mRight;
+ break;
+ default:
+ break;
+ }
+ selection_rect.translate(h_delta, v_delta);
+ }
+ gl_rect_2d(selection_rect, color);
+ }
+ }
+}
+
void LLTextBase::drawCursor()
{
F32 alpha = getDrawContext().mAlpha;
@@ -1399,6 +1520,7 @@ void LLTextBase::draw()
drawChild(mDocumentView);
}
+ drawHighlightedBackground();
drawSelectionBackground();
drawText();
drawCursor();
@@ -2200,20 +2322,20 @@ static LLUIImagePtr image_from_icon_name(const std::string& icon_name)
}
-void LLTextBase::appendTextImpl(const std::string &new_text, const LLStyle::Params& input_params)
+void LLTextBase::appendTextImpl(const std::string& new_text, const LLStyle::Params& input_params, bool force_slurl)
{
LL_PROFILE_ZONE_SCOPED_CATEGORY_UI;
LLStyle::Params style_params(getStyleParams());
style_params.overwriteFrom(input_params);
S32 part = (S32)LLTextParser::WHOLE;
- if (mParseHTML && !style_params.is_link) // Don't search for URLs inside a link segment (STORM-358).
+ if ((mParseHTML || force_slurl) && !style_params.is_link) // Don't search for URLs inside a link segment (STORM-358).
{
S32 start=0,end=0;
LLUrlMatch match;
std::string text = new_text;
while (LLUrlRegistry::instance().findUrl(text, match,
- boost::bind(&LLTextBase::replaceUrl, this, _1, _2, _3), isContentTrusted() || mAlwaysShowIcons))
+ boost::bind(&LLTextBase::replaceUrl, this, _1, _2, _3), isContentTrusted() || mAlwaysShowIcons, force_slurl))
{
start = match.getStart();
end = match.getEnd()+1;
@@ -2245,7 +2367,7 @@ void LLTextBase::appendTextImpl(const std::string &new_text, const LLStyle::Para
}
// output the styled Url
- appendAndHighlightTextImpl(match.getLabel(), part, link_params, match.underlineOnHoverOnly());
+ appendAndHighlightTextImpl(match.getLabel(), part, link_params, match.getUnderline());
bool tooltip_required = !match.getTooltip().empty();
// set the tooltip for the Url label
@@ -2260,7 +2382,7 @@ void LLTextBase::appendTextImpl(const std::string &new_text, const LLStyle::Para
{
link_params.color = LLColor4::grey;
link_params.readonly_color = LLColor4::grey;
- appendAndHighlightTextImpl(label, part, link_params, match.underlineOnHoverOnly());
+ appendAndHighlightTextImpl(label, part, link_params, match.getUnderline());
// set the tooltip for the query part of url
if (tooltip_required)
@@ -2428,7 +2550,7 @@ void LLTextBase::appendWidget(const LLInlineViewSegment::Params& params, const s
insertStringNoUndo(getLength(), widget_wide_text, &segments);
}
-void LLTextBase::appendAndHighlightTextImpl(const std::string &new_text, S32 highlight_part, const LLStyle::Params& style_params, bool underline_on_hover_only)
+void LLTextBase::appendAndHighlightTextImpl(const std::string &new_text, S32 highlight_part, const LLStyle::Params& style_params, e_underline underline_link)
{
// Save old state
S32 selection_start = mSelectionStart;
@@ -2458,7 +2580,7 @@ void LLTextBase::appendAndHighlightTextImpl(const std::string &new_text, S32 hig
S32 cur_length = getLength();
LLStyleConstSP sp(new LLStyle(highlight_params));
LLTextSegmentPtr segmentp;
- if (underline_on_hover_only || mSkipLinkUnderline)
+ if ((underline_link == e_underline::UNDERLINE_ON_HOVER) || mSkipLinkUnderline)
{
highlight_params.font.style("NORMAL");
LLStyleConstSP normal_sp(new LLStyle(highlight_params));
@@ -2482,7 +2604,7 @@ void LLTextBase::appendAndHighlightTextImpl(const std::string &new_text, S32 hig
S32 segment_start = old_length;
S32 segment_end = old_length + static_cast<S32>(wide_text.size());
LLStyleConstSP sp(new LLStyle(style_params));
- if (underline_on_hover_only || mSkipLinkUnderline)
+ if ((underline_link == e_underline::UNDERLINE_ON_HOVER) || mSkipLinkUnderline)
{
LLStyle::Params normal_style_params(style_params);
normal_style_params.font.style("NORMAL");
@@ -2516,7 +2638,7 @@ void LLTextBase::appendAndHighlightTextImpl(const std::string &new_text, S32 hig
}
}
-void LLTextBase::appendAndHighlightText(const std::string &new_text, S32 highlight_part, const LLStyle::Params& style_params, bool underline_on_hover_only)
+void LLTextBase::appendAndHighlightText(const std::string &new_text, S32 highlight_part, const LLStyle::Params& style_params, e_underline underline_link)
{
if (new_text.empty())
{
@@ -2531,7 +2653,7 @@ void LLTextBase::appendAndHighlightText(const std::string &new_text, S32 highlig
if (pos != start)
{
std::string str = std::string(new_text,start,pos-start);
- appendAndHighlightTextImpl(str, highlight_part, style_params, underline_on_hover_only);
+ appendAndHighlightTextImpl(str, highlight_part, style_params, underline_link);
}
appendLineBreakSegment(style_params);
start = pos+1;
@@ -2539,7 +2661,7 @@ void LLTextBase::appendAndHighlightText(const std::string &new_text, S32 highlig
}
std::string str = std::string(new_text, start, new_text.length() - start);
- appendAndHighlightTextImpl(str, highlight_part, style_params, underline_on_hover_only);
+ appendAndHighlightTextImpl(str, highlight_part, style_params, underline_link);
}
@@ -3336,6 +3458,7 @@ LLNormalTextSegment::LLNormalTextSegment( LLStyleConstSP style, S32 start, S32 e
mLastGeneration(-1)
{
mFontHeight = mStyle->getFont()->getLineHeight();
+ mCanEdit = !mStyle->getDrawHighlightBg();
LLUIImagePtr image = mStyle->getImage();
if (image.notNull())
diff --git a/indra/llui/lltextbase.h b/indra/llui/lltextbase.h
index e62b56963d..8ca653acb9 100644
--- a/indra/llui/lltextbase.h
+++ b/indra/llui/lltextbase.h
@@ -35,6 +35,7 @@
#include "llstyle.h"
#include "llkeywords.h"
#include "llpanel.h"
+#include "llurlmatch.h"
#include <string>
#include <vector>
@@ -139,7 +140,7 @@ public:
/*virtual*/ S32 getNumChars(S32 num_pixels, S32 segment_offset, S32 line_offset, S32 max_chars, S32 line_ind) const;
/*virtual*/ void updateLayout(const class LLTextBase& editor);
/*virtual*/ F32 draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRectf& draw_rect);
- /*virtual*/ bool canEdit() const { return true; }
+ /*virtual*/ bool canEdit() const { return mCanEdit; }
/*virtual*/ const LLUIColor& getColor() const { return mStyle->getColor(); }
/*virtual*/ LLStyleConstSP getStyle() const { return mStyle; }
/*virtual*/ void setStyle(LLStyleConstSP style) { mStyle = style; }
@@ -161,6 +162,8 @@ protected:
virtual const LLWString& getWText() const;
virtual const S32 getLength() const;
+ void setAllowEdit(bool can_edit) { mCanEdit = can_edit; }
+
protected:
class LLTextBase& mEditor;
LLStyleConstSP mStyle;
@@ -169,6 +172,8 @@ protected:
std::string mTooltip;
boost::signals2::connection mImageLoadedConnection;
+ bool mCanEdit { true };
+
// font rendering
LLFontVertexBuffer mFontBufferPreSelection;
LLFontVertexBuffer mFontBufferSelection;
@@ -606,6 +611,7 @@ protected:
bool operator()(const LLTextSegmentPtr& a, const LLTextSegmentPtr& b) const;
};
typedef std::multiset<LLTextSegmentPtr, compare_segment_end> segment_set_t;
+ typedef LLStyle::EUnderlineLink e_underline;
// member functions
LLTextBase(const Params &p);
@@ -619,12 +625,13 @@ protected:
virtual void drawSelectionBackground(); // draws the black box behind the selected text
void drawCursor();
void drawText();
+ void drawHighlightedBackground();
// modify contents
S32 insertStringNoUndo(S32 pos, const LLWString &wstr, segment_vec_t* segments = NULL); // returns num of chars actually inserted
S32 removeStringNoUndo(S32 pos, S32 length);
S32 overwriteCharNoUndo(S32 pos, llwchar wc);
- void appendAndHighlightText(const std::string &new_text, S32 highlight_part, const LLStyle::Params& stylep, bool underline_on_hover_only = false);
+ void appendAndHighlightText(const std::string &new_text, S32 highlight_part, const LLStyle::Params& stylep, e_underline underline_link = e_underline::UNDERLINE_ALWAYS);
// manage segments
@@ -672,8 +679,9 @@ protected:
// avatar names are looked up.
void replaceUrl(const std::string &url, const std::string &label, const std::string& icon);
- void appendTextImpl(const std::string &new_text, const LLStyle::Params& input_params = LLStyle::Params());
- void appendAndHighlightTextImpl(const std::string &new_text, S32 highlight_part, const LLStyle::Params& style_params, bool underline_on_hover_only = false);
+ void appendTextImpl(const std::string &new_text, const LLStyle::Params& input_params = LLStyle::Params(), bool force_slurl = false);
+ void appendAndHighlightTextImpl(const std::string &new_text, S32 highlight_part, const LLStyle::Params& style_params, e_underline underline_link = e_underline::UNDERLINE_ALWAYS);
+ S32 normalizeUri(std::string& uri);
protected:
// virtual
@@ -683,6 +691,7 @@ protected:
}
std::vector<LLRect> getSelectionRects();
+ std::vector<std::pair<LLRect, LLUIColor>> getHighlightedBgRects();
protected:
// text segmentation and flow
diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp
index d89e5a9857..58b785fcdd 100644
--- a/indra/llui/lltexteditor.cpp
+++ b/indra/llui/lltexteditor.cpp
@@ -60,6 +60,7 @@
#include "llurlregistry.h"
#include "lltooltip.h"
#include "llmenugl.h"
+#include "llchatmentionhelper.h"
#include <queue>
#include "llcombobox.h"
@@ -270,6 +271,7 @@ LLTextEditor::LLTextEditor(const LLTextEditor::Params& p) :
mPrevalidator(p.prevalidator()),
mShowContextMenu(p.show_context_menu),
mShowEmojiHelper(p.show_emoji_helper),
+ mShowChatMentionPicker(false),
mEnableTooltipPaste(p.enable_tooltip_paste),
mPassDelete(false),
mKeepSelectionOnReturn(false),
@@ -729,6 +731,30 @@ void LLTextEditor::handleEmojiCommit(llwchar emoji)
}
}
+void LLTextEditor::handleMentionCommit(std::string name_url)
+{
+ S32 mention_start_pos;
+ if (LLChatMentionHelper::instance().isCursorInNameMention(getWText(), mCursorPos, &mention_start_pos))
+ {
+ remove(mention_start_pos, mCursorPos - mention_start_pos, true);
+ insert(mention_start_pos, utf8str_to_wstring(name_url), false, LLTextSegmentPtr());
+
+ std::string new_text(wstring_to_utf8str(getConvertedText()));
+ clear();
+ appendTextImpl(new_text, LLStyle::Params(), true);
+
+ segment_set_t::const_iterator it = getSegIterContaining(mention_start_pos);
+ if (it != mSegments.end())
+ {
+ setCursorPos((*it)->getEnd() + 1);
+ }
+ else
+ {
+ setCursorPos(mention_start_pos);
+ }
+ }
+}
+
bool LLTextEditor::handleMouseDown(S32 x, S32 y, MASK mask)
{
bool handled = false;
@@ -1126,6 +1152,7 @@ void LLTextEditor::removeCharOrTab()
}
tryToShowEmojiHelper();
+ tryToShowMentionHelper();
}
else
{
@@ -1151,6 +1178,7 @@ void LLTextEditor::removeChar()
setCursorPos(mCursorPos - 1);
removeChar(mCursorPos);
tryToShowEmojiHelper();
+ tryToShowMentionHelper();
}
else
{
@@ -1212,6 +1240,7 @@ void LLTextEditor::addChar(llwchar wc)
setCursorPos(mCursorPos + addChar( mCursorPos, wc ));
tryToShowEmojiHelper();
+ tryToShowMentionHelper();
if (!mReadOnly && mAutoreplaceCallback != NULL)
{
@@ -1241,6 +1270,14 @@ void LLTextEditor::showEmojiHelper()
LLEmojiHelper::instance().showHelper(this, cursorRect.mLeft, cursorRect.mTop, LLStringUtil::null, cb);
}
+void LLTextEditor::hideEmojiHelper()
+{
+ if (mShowEmojiHelper)
+ {
+ LLEmojiHelper::instance().hideHelper(this);
+ }
+}
+
void LLTextEditor::tryToShowEmojiHelper()
{
if (mReadOnly || !mShowEmojiHelper)
@@ -1262,6 +1299,31 @@ void LLTextEditor::tryToShowEmojiHelper()
}
}
+void LLTextEditor::tryToShowMentionHelper()
+{
+ if (mReadOnly || !mShowChatMentionPicker)
+ return;
+
+ S32 mention_start_pos;
+ LLWString text(getWText());
+ if (LLChatMentionHelper::instance().isCursorInNameMention(text, mCursorPos, &mention_start_pos))
+ {
+ const LLRect cursor_rect(getLocalRectFromDocIndex(mention_start_pos));
+ std::string name_part(wstring_to_utf8str(text.substr(mention_start_pos, mCursorPos - mention_start_pos)));
+ name_part.erase(0, 1);
+ auto cb = [this](std::string name_url)
+ {
+ handleMentionCommit(name_url);
+ };
+ LLChatMentionHelper::instance().showHelper(this, cursor_rect.mLeft, cursor_rect.mTop, name_part, cb);
+ }
+ else
+ {
+ LLChatMentionHelper::instance().hideHelper();
+ }
+}
+
+
void LLTextEditor::addLineBreakChar(bool group_together)
{
if( !getEnabled() )
@@ -1888,7 +1950,7 @@ bool LLTextEditor::handleKeyHere(KEY key, MASK mask )
// not handled and let the parent take care of field movement.
if (KEY_TAB == key && mTabsToNextField)
{
- return false;
+ return mShowChatMentionPicker && LLChatMentionHelper::instance().handleKey(this, key, mask);
}
if (mReadOnly && mScroller)
@@ -1899,9 +1961,13 @@ bool LLTextEditor::handleKeyHere(KEY key, MASK mask )
}
else
{
- if (!mReadOnly && mShowEmojiHelper && LLEmojiHelper::instance().handleKey(this, key, mask))
+ if (!mReadOnly)
{
- return true;
+ if ((mShowEmojiHelper && LLEmojiHelper::instance().handleKey(this, key, mask)) ||
+ (mShowChatMentionPicker && LLChatMentionHelper::instance().handleKey(this, key, mask)))
+ {
+ return true;
+ }
}
if (mEnableTooltipPaste &&
@@ -3103,3 +3169,21 @@ S32 LLTextEditor::spacesPerTab()
{
return SPACES_PER_TAB;
}
+
+LLWString LLTextEditor::getConvertedText() const
+{
+ LLWString text = getWText();
+ S32 diff = 0;
+ for (auto segment : mSegments)
+ {
+ if (segment && segment->getStyle() && segment->getStyle()->getDrawHighlightBg())
+ {
+ S32 seg_length = segment->getEnd() - segment->getStart();
+ std::string slurl = segment->getStyle()->getLinkHREF();
+
+ text.replace(segment->getStart() + diff, seg_length, utf8str_to_wstring(slurl));
+ diff += (S32)slurl.size() - seg_length;
+ }
+ }
+ return text;
+}
diff --git a/indra/llui/lltexteditor.h b/indra/llui/lltexteditor.h
index 95ffb41380..cdfcbcdd63 100644
--- a/indra/llui/lltexteditor.h
+++ b/indra/llui/lltexteditor.h
@@ -95,6 +95,8 @@ public:
void insertEmoji(llwchar emoji);
void handleEmojiCommit(llwchar emoji);
+ void handleMentionCommit(std::string name_url);
+
// mousehandler overrides
virtual bool handleMouseDown(S32 x, S32 y, MASK mask);
virtual bool handleMouseUp(S32 x, S32 y, MASK mask);
@@ -208,11 +210,14 @@ public:
bool getShowContextMenu() const { return mShowContextMenu; }
void showEmojiHelper();
+ void hideEmojiHelper();
void setShowEmojiHelper(bool show);
bool getShowEmojiHelper() const { return mShowEmojiHelper; }
void setPassDelete(bool b) { mPassDelete = b; }
+ LLWString getConvertedText() const;
+
protected:
void showContextMenu(S32 x, S32 y);
void drawPreeditMarker();
@@ -255,6 +260,7 @@ protected:
S32 remove(S32 pos, S32 length, bool group_with_next_op);
void tryToShowEmojiHelper();
+ void tryToShowMentionHelper();
void focusLostHelper();
void updateAllowingLanguageInput();
bool hasPreeditString() const;
@@ -292,6 +298,7 @@ protected:
bool mAutoIndent;
bool mParseOnTheFly;
+ bool mShowChatMentionPicker;
void updateLinkSegments();
void keepSelectionOnReturn(bool keep) { mKeepSelectionOnReturn = keep; }
diff --git a/indra/llui/llurlentry.cpp b/indra/llui/llurlentry.cpp
index 3cc0c05ffa..bcd13b7f0b 100644
--- a/indra/llui/llurlentry.cpp
+++ b/indra/llui/llurlentry.cpp
@@ -29,7 +29,6 @@
#include "llurlentry.h"
#include "lluictrl.h"
#include "lluri.h"
-#include "llurlmatch.h"
#include "llurlregistry.h"
#include "lluriparser.h"
@@ -48,7 +47,7 @@
// Utility functions
std::string localize_slapp_label(const std::string& url, const std::string& full_name);
-
+LLUUID LLUrlEntryBase::sAgentID(LLUUID::null);
LLUrlEntryBase::LLUrlEntryBase()
{
}
@@ -68,7 +67,7 @@ std::string LLUrlEntryBase::getIcon(const std::string &url)
return mIcon;
}
-LLStyle::Params LLUrlEntryBase::getStyle() const
+LLStyle::Params LLUrlEntryBase::getStyle(const std::string &url) const
{
LLStyle::Params style_params;
style_params.color = LLUIColorTable::instance().getColor("HTMLLinkColor");
@@ -221,6 +220,16 @@ bool LLUrlEntryBase::isWikiLinkCorrect(const std::string &labeled_url) const
},
L'\u002F'); // Solidus
+ std::replace_if(wlabel.begin(),
+ wlabel.end(),
+ [](const llwchar& chr)
+ {
+ return // Not a decomposition, but suficiently similar
+ (chr == L'\u04BA') // "Cyrillic Capital Letter Shha"
+ || (chr == L'\u04BB'); // "Cyrillic Small Letter Shha"
+ },
+ L'\u0068'); // "Latin Small Letter H"
+
std::string label = wstring_to_utf8str(wlabel);
if ((label.find(".com") != std::string::npos
|| label.find("www.") != std::string::npos)
@@ -621,6 +630,11 @@ LLUUID LLUrlEntryAgent::getID(const std::string &string) const
return LLUUID(getIDStringFromUrl(string));
}
+bool LLUrlEntryAgent::isAgentID(const std::string& url) const
+{
+ return sAgentID == getID(url);
+}
+
std::string LLUrlEntryAgent::getTooltip(const std::string &string) const
{
// return a tooltip corresponding to the URL type instead of the generic one
@@ -657,10 +671,14 @@ std::string LLUrlEntryAgent::getTooltip(const std::string &string) const
return LLTrans::getString("TooltipAgentUrl");
}
-bool LLUrlEntryAgent::underlineOnHoverOnly(const std::string &string) const
+LLStyle::EUnderlineLink LLUrlEntryAgent::getUnderline(const std::string& string) const
{
std::string url = getUrl(string);
- return LLStringUtil::endsWith(url, "/about") || LLStringUtil::endsWith(url, "/inspect");
+ if (LLStringUtil::endsWith(url, "/about") || LLStringUtil::endsWith(url, "/inspect"))
+ {
+ return LLStyle::EUnderlineLink::UNDERLINE_ON_HOVER;
+ }
+ return LLStyle::EUnderlineLink::UNDERLINE_ALWAYS;
}
std::string LLUrlEntryAgent::getLabel(const std::string &url, const LLUrlLabelCallback &cb)
@@ -702,11 +720,12 @@ std::string LLUrlEntryAgent::getLabel(const std::string &url, const LLUrlLabelCa
}
}
-LLStyle::Params LLUrlEntryAgent::getStyle() const
+LLStyle::Params LLUrlEntryAgent::getStyle(const std::string &url) const
{
- LLStyle::Params style_params = LLUrlEntryBase::getStyle();
+ LLStyle::Params style_params = LLUrlEntryBase::getStyle(url);
style_params.color = LLUIColorTable::instance().getColor("HTMLLinkColor");
style_params.readonly_color = LLUIColorTable::instance().getColor("HTMLLinkColor");
+
return style_params;
}
@@ -741,6 +760,10 @@ std::string localize_slapp_label(const std::string& url, const std::string& full
{
return LLTrans::getString("SLappAgentRemoveFriend") + " " + full_name;
}
+ if (LLStringUtil::endsWith(url, "/mention"))
+ {
+ return "@" + full_name;
+ }
return full_name;
}
@@ -752,6 +775,36 @@ std::string LLUrlEntryAgent::getIcon(const std::string &url)
return mIcon;
}
+///
+/// LLUrlEntryAgentMention Describes a chat mention Url, e.g.,
+/// secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/mention
+///
+LLUrlEntryAgentMention::LLUrlEntryAgentMention()
+{
+ mPattern = boost::regex(APP_HEADER_REGEX "/agent/[\\da-f-]+/mention", boost::regex::perl | boost::regex::icase);
+ mMenuName = "menu_url_agent.xml";
+ mIcon = std::string();
+}
+
+LLStyle::EUnderlineLink LLUrlEntryAgentMention::getUnderline(const std::string& string) const
+{
+ return LLStyle::EUnderlineLink::UNDERLINE_NEVER;
+}
+
+LLStyle::Params LLUrlEntryAgentMention::getStyle(const std::string& url) const
+{
+ LLStyle::Params style_params = LLUrlEntryAgent::getStyle(url);
+ style_params.color = LLUIColorTable::instance().getColor("ChatMentionFont");
+ style_params.readonly_color = LLUIColorTable::instance().getColor("ChatMentionFont");
+ style_params.font.style = "NORMAL";
+ style_params.draw_highlight_bg = true;
+
+ LLUUID agent_id(getIDStringFromUrl(url));
+ style_params.highlight_bg_color = LLUIColorTable::instance().getColor((agent_id == sAgentID) ? "ChatSelfMentionHighlight" : "ChatMentionHighlight");
+
+ return style_params;
+}
+
//
// LLUrlEntryAgentName describes a Second Life agent name Url, e.g.,
// secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/(completename|displayname|username)
@@ -813,7 +866,7 @@ std::string LLUrlEntryAgentName::getLabel(const std::string &url, const LLUrlLab
}
}
-LLStyle::Params LLUrlEntryAgentName::getStyle() const
+LLStyle::Params LLUrlEntryAgentName::getStyle(const std::string &url) const
{
// don't override default colors
return LLStyle::Params().is_link(false);
@@ -949,9 +1002,9 @@ std::string LLUrlEntryGroup::getLabel(const std::string &url, const LLUrlLabelCa
}
}
-LLStyle::Params LLUrlEntryGroup::getStyle() const
+LLStyle::Params LLUrlEntryGroup::getStyle(const std::string &url) const
{
- LLStyle::Params style_params = LLUrlEntryBase::getStyle();
+ LLStyle::Params style_params = LLUrlEntryBase::getStyle(url);
style_params.color = LLUIColorTable::instance().getColor("HTMLLinkColor");
style_params.readonly_color = LLUIColorTable::instance().getColor("HTMLLinkColor");
return style_params;
@@ -1027,7 +1080,6 @@ std::string LLUrlEntryChat::getLabel(const std::string &url, const LLUrlLabelCal
}
// LLUrlEntryParcel statics.
-LLUUID LLUrlEntryParcel::sAgentID(LLUUID::null);
LLUUID LLUrlEntryParcel::sSessionID(LLUUID::null);
LLHost LLUrlEntryParcel::sRegionHost;
bool LLUrlEntryParcel::sDisconnected(false);
@@ -1361,17 +1413,17 @@ std::string LLUrlEntrySLLabel::getTooltip(const std::string &string) const
return LLUrlEntryBase::getTooltip(string);
}
-bool LLUrlEntrySLLabel::underlineOnHoverOnly(const std::string &string) const
+LLStyle::EUnderlineLink LLUrlEntrySLLabel::getUnderline(const std::string& string) const
{
std::string url = getUrl(string);
- LLUrlMatch match;
+ LLUrlMatch match;
if (LLUrlRegistry::instance().findUrl(url, match))
{
- return match.underlineOnHoverOnly();
+ return match.getUnderline();
}
// unrecognized URL? should not happen
- return LLUrlEntryBase::underlineOnHoverOnly(string);
+ return LLUrlEntryBase::getUnderline(string);
}
//
@@ -1435,7 +1487,7 @@ std::string LLUrlEntryNoLink::getLabel(const std::string &url, const LLUrlLabelC
return getUrl(url);
}
-LLStyle::Params LLUrlEntryNoLink::getStyle() const
+LLStyle::Params LLUrlEntryNoLink::getStyle(const std::string &url) const
{
// Don't render as URL (i.e. no context menu or hand cursor).
return LLStyle::Params().is_link(false);
diff --git a/indra/llui/llurlentry.h b/indra/llui/llurlentry.h
index fffee88496..6e7d2fc80f 100644
--- a/indra/llui/llurlentry.h
+++ b/indra/llui/llurlentry.h
@@ -85,7 +85,7 @@ public:
virtual std::string getIcon(const std::string &url);
/// Return the style to render the displayed text
- virtual LLStyle::Params getStyle() const;
+ virtual LLStyle::Params getStyle(const std::string &url) const;
/// Given a matched Url, return a tooltip string for the hyperlink
virtual std::string getTooltip(const std::string &string) const { return mTooltip; }
@@ -96,12 +96,14 @@ public:
/// Return the name of a SL location described by this Url, if any
virtual std::string getLocation(const std::string &url) const { return ""; }
- /// Should this link text be underlined only when mouse is hovered over it?
- virtual bool underlineOnHoverOnly(const std::string &string) const { return false; }
+ virtual LLStyle::EUnderlineLink getUnderline(const std::string& string) const { return LLStyle::EUnderlineLink::UNDERLINE_ALWAYS; }
virtual bool isTrusted() const { return false; }
+ virtual bool getSkipProfileIcon(const std::string& string) const { return false; }
+
virtual LLUUID getID(const std::string &string) const { return LLUUID::null; }
+ virtual bool isAgentID(const std::string& url) const { return false; }
bool isLinkDisabled() const;
@@ -109,6 +111,8 @@ public:
virtual bool isSLURLvalid(const std::string &url) const { return true; };
+ static void setAgentID(const LLUUID& id) { sAgentID = id; }
+
protected:
std::string getIDStringFromUrl(const std::string &url) const;
std::string escapeUrl(const std::string &url) const;
@@ -130,6 +134,8 @@ protected:
std::string mMenuName;
std::string mTooltip;
std::multimap<std::string, LLUrlEntryObserver> mObservers;
+
+ static LLUUID sAgentID;
};
///
@@ -224,9 +230,13 @@ public:
/*virtual*/ std::string getLabel(const std::string &url, const LLUrlLabelCallback &cb);
/*virtual*/ std::string getIcon(const std::string &url);
/*virtual*/ std::string getTooltip(const std::string &string) const;
- /*virtual*/ LLStyle::Params getStyle() const;
+ /*virtual*/ LLStyle::Params getStyle(const std::string &url) const;
/*virtual*/ LLUUID getID(const std::string &string) const;
- /*virtual*/ bool underlineOnHoverOnly(const std::string &string) const;
+
+ bool isAgentID(const std::string& url) const;
+
+ LLStyle::EUnderlineLink getUnderline(const std::string& string) const;
+
protected:
/*virtual*/ void callObservers(const std::string &id, const std::string &label, const std::string& icon);
private:
@@ -237,6 +247,19 @@ private:
};
///
+/// LLUrlEntryAgentMention Describes a chat mention Url, e.g.,
+/// secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/mention
+class LLUrlEntryAgentMention : public LLUrlEntryAgent
+{
+public:
+ LLUrlEntryAgentMention();
+
+ LLStyle::Params getStyle(const std::string& url) const;
+ LLStyle::EUnderlineLink getUnderline(const std::string& string) const;
+ bool getSkipProfileIcon(const std::string& string) const { return true; };
+};
+
+///
/// LLUrlEntryAgentName Describes a Second Life agent name Url, e.g.,
/// secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/(completename|displayname|username)
/// that displays various forms of user name
@@ -257,7 +280,7 @@ public:
mAvatarNameCacheConnections.clear();
}
/*virtual*/ std::string getLabel(const std::string &url, const LLUrlLabelCallback &cb);
- /*virtual*/ LLStyle::Params getStyle() const;
+ /*virtual*/ LLStyle::Params getStyle(const std::string &url) const;
protected:
// override this to pull out relevant name fields
virtual std::string getName(const LLAvatarName& avatar_name) = 0;
@@ -339,7 +362,7 @@ class LLUrlEntryGroup : public LLUrlEntryBase
public:
LLUrlEntryGroup();
/*virtual*/ std::string getLabel(const std::string &url, const LLUrlLabelCallback &cb);
- /*virtual*/ LLStyle::Params getStyle() const;
+ /*virtual*/ LLStyle::Params getStyle(const std::string &url) const;
/*virtual*/ LLUUID getID(const std::string &string) const;
private:
void onGroupNameReceived(const LLUUID& id, const std::string& name, bool is_group);
@@ -411,17 +434,15 @@ public:
// Processes parcel label and triggers notifying observers.
static void processParcelInfo(const LLParcelData& parcel_data);
- // Next 4 setters are used to update agent and viewer connection information
+ // Next setters are used to update agent and viewer connection information
// upon events like user login, viewer disconnect and user changing region host.
// These setters are made public to be accessible from newview and should not be
// used in other cases.
- static void setAgentID(const LLUUID& id) { sAgentID = id; }
static void setSessionID(const LLUUID& id) { sSessionID = id; }
static void setRegionHost(const LLHost& host) { sRegionHost = host; }
static void setDisconnected(bool disconnected) { sDisconnected = disconnected; }
private:
- static LLUUID sAgentID;
static LLUUID sSessionID;
static LLHost sRegionHost;
static bool sDisconnected;
@@ -486,7 +507,7 @@ public:
/*virtual*/ std::string getLabel(const std::string &url, const LLUrlLabelCallback &cb);
/*virtual*/ std::string getUrl(const std::string &string) const;
/*virtual*/ std::string getTooltip(const std::string &string) const;
- /*virtual*/ bool underlineOnHoverOnly(const std::string &string) const;
+ LLStyle::EUnderlineLink getUnderline(const std::string& string) const;
};
///
@@ -510,7 +531,7 @@ public:
LLUrlEntryNoLink();
/*virtual*/ std::string getLabel(const std::string &url, const LLUrlLabelCallback &cb);
/*virtual*/ std::string getUrl(const std::string &string) const;
- /*virtual*/ LLStyle::Params getStyle() const;
+ /*virtual*/ LLStyle::Params getStyle(const std::string &url) const;
};
///
diff --git a/indra/llui/llurlmatch.cpp b/indra/llui/llurlmatch.cpp
index bfa3b167b1..f093934ca9 100644
--- a/indra/llui/llurlmatch.cpp
+++ b/indra/llui/llurlmatch.cpp
@@ -37,8 +37,9 @@ LLUrlMatch::LLUrlMatch() :
mIcon(""),
mMenuName(""),
mLocation(""),
- mUnderlineOnHoverOnly(false),
- mTrusted(false)
+ mUnderline(e_underline::UNDERLINE_ALWAYS),
+ mTrusted(false),
+ mSkipProfileIcon(false)
{
}
@@ -46,7 +47,7 @@ void LLUrlMatch::setValues(U32 start, U32 end, const std::string &url, const std
const std::string& query, const std::string &tooltip,
const std::string &icon, const LLStyle::Params& style,
const std::string &menu, const std::string &location,
- const LLUUID& id, bool underline_on_hover_only, bool trusted)
+ const LLUUID& id, e_underline underline, bool trusted, bool skip_icon)
{
mStart = start;
mEnd = end;
@@ -60,6 +61,7 @@ void LLUrlMatch::setValues(U32 start, U32 end, const std::string &url, const std
mMenuName = menu;
mLocation = location;
mID = id;
- mUnderlineOnHoverOnly = underline_on_hover_only;
+ mUnderline = underline;
mTrusted = trusted;
+ mSkipProfileIcon = skip_icon;
}
diff --git a/indra/llui/llurlmatch.h b/indra/llui/llurlmatch.h
index 887796bb37..418a21f963 100644
--- a/indra/llui/llurlmatch.h
+++ b/indra/llui/llurlmatch.h
@@ -79,18 +79,20 @@ public:
/// return the SL location that this Url describes, or "" if none.
std::string getLocation() const { return mLocation; }
- /// Should this link text be underlined only when mouse is hovered over it?
- bool underlineOnHoverOnly() const { return mUnderlineOnHoverOnly; }
+ typedef LLStyle::EUnderlineLink e_underline;
+ e_underline getUnderline() const { return mUnderline; }
/// Return true if Url is trusted.
bool isTrusted() const { return mTrusted; }
+ bool getSkipProfileIcon() const { return mSkipProfileIcon; }
+
/// Change the contents of this match object (used by LLUrlRegistry)
void setValues(U32 start, U32 end, const std::string &url, const std::string &label,
const std::string& query, const std::string &tooltip, const std::string &icon,
const LLStyle::Params& style, const std::string &menu,
const std::string &location, const LLUUID& id,
- bool underline_on_hover_only = false, bool trusted = false);
+ e_underline underline = e_underline::UNDERLINE_ALWAYS, bool trusted = false, bool skip_icon = false);
const LLUUID& getID() const { return mID; }
private:
@@ -105,8 +107,9 @@ private:
std::string mLocation;
LLUUID mID;
LLStyle::Params mStyle;
- bool mUnderlineOnHoverOnly;
+ e_underline mUnderline;
bool mTrusted;
+ bool mSkipProfileIcon;
};
#endif
diff --git a/indra/llui/llurlregistry.cpp b/indra/llui/llurlregistry.cpp
index cec1ddfc57..cb101d325d 100644
--- a/indra/llui/llurlregistry.cpp
+++ b/indra/llui/llurlregistry.cpp
@@ -62,6 +62,8 @@ LLUrlRegistry::LLUrlRegistry()
registerUrl(new LLUrlEntryAgentUserName());
// LLUrlEntryAgent*Name must appear before LLUrlEntryAgent since
// LLUrlEntryAgent is a less specific (catchall for agent urls)
+ mUrlEntryAgentMention = new LLUrlEntryAgentMention();
+ registerUrl(mUrlEntryAgentMention);
registerUrl(new LLUrlEntryAgent());
registerUrl(new LLUrlEntryChat());
registerUrl(new LLUrlEntryGroup());
@@ -155,7 +157,7 @@ static bool stringHasUrl(const std::string &text)
text.find("@") != std::string::npos);
}
-bool LLUrlRegistry::findUrl(const std::string &text, LLUrlMatch &match, const LLUrlLabelCallback &cb, bool is_content_trusted)
+bool LLUrlRegistry::findUrl(const std::string &text, LLUrlMatch &match, const LLUrlLabelCallback &cb, bool is_content_trusted, bool skip_non_mentions)
{
// avoid costly regexes if there is clearly no URL in the text
if (! stringHasUrl(text))
@@ -176,6 +178,11 @@ bool LLUrlRegistry::findUrl(const std::string &text, LLUrlMatch &match, const LL
continue;
}
+ if (skip_non_mentions && (mUrlEntryAgentMention != *it))
+ {
+ continue;
+ }
+
LLUrlEntryBase *url_entry = *it;
U32 start = 0, end = 0;
@@ -233,12 +240,13 @@ bool LLUrlRegistry::findUrl(const std::string &text, LLUrlMatch &match, const LL
match_entry->getQuery(url),
match_entry->getTooltip(url),
match_entry->getIcon(url),
- match_entry->getStyle(),
+ match_entry->getStyle(url),
match_entry->getMenuName(),
match_entry->getLocation(url),
match_entry->getID(url),
- match_entry->underlineOnHoverOnly(url),
- match_entry->isTrusted());
+ match_entry->getUnderline(url),
+ match_entry->isTrusted(),
+ match_entry->getSkipProfileIcon(url));
return true;
}
@@ -274,7 +282,9 @@ bool LLUrlRegistry::findUrl(const LLWString &text, LLUrlMatch &match, const LLUr
match.getMenuName(),
match.getLocation(),
match.getID(),
- match.underlineOnHoverOnly());
+ match.getUnderline(),
+ false,
+ match.getSkipProfileIcon());
return true;
}
return false;
@@ -317,3 +327,30 @@ void LLUrlRegistry::setKeybindingHandler(LLKeyBindingToStringHandler* handler)
LLUrlEntryKeybinding *entry = (LLUrlEntryKeybinding*)mUrlEntryKeybinding;
entry->setHandler(handler);
}
+
+bool LLUrlRegistry::containsAgentMention(const std::string& text)
+{
+ // avoid costly regexes if there is clearly no URL in the text
+ if (!stringHasUrl(text))
+ {
+ return false;
+ }
+
+ try
+ {
+ boost::sregex_iterator it(text.begin(), text.end(), mUrlEntryAgentMention->getPattern());
+ boost::sregex_iterator end;
+ for (; it != end; ++it)
+ {
+ if (mUrlEntryAgentMention->isAgentID(it->str()))
+ {
+ return true;
+ }
+ }
+ }
+ catch (boost::regex_error&)
+ {
+ LL_INFOS() << "Regex error for: " << text << LL_ENDL;
+ }
+ return false;
+}
diff --git a/indra/llui/llurlregistry.h b/indra/llui/llurlregistry.h
index c22af0dbc4..592e422487 100644
--- a/indra/llui/llurlregistry.h
+++ b/indra/llui/llurlregistry.h
@@ -75,7 +75,7 @@ public:
/// your callback is invoked if the matched Url's label changes in the future
bool findUrl(const std::string &text, LLUrlMatch &match,
const LLUrlLabelCallback &cb = &LLUrlRegistryNullCallback,
- bool is_content_trusted = false);
+ bool is_content_trusted = false, bool skip_non_mentions = false);
/// a slightly less efficient version of findUrl for wide strings
bool findUrl(const LLWString &text, LLUrlMatch &match,
@@ -92,6 +92,8 @@ public:
// Set handler for url registry to be capable of parsing and populating keybindings
void setKeybindingHandler(LLKeyBindingToStringHandler* handler);
+ bool containsAgentMention(const std::string& text);
+
private:
std::vector<LLUrlEntryBase *> mUrlEntry;
LLUrlEntryBase* mUrlEntryTrusted;
@@ -101,6 +103,7 @@ private:
LLUrlEntryBase* mUrlEntrySLLabel;
LLUrlEntryBase* mUrlEntryNoLink;
LLUrlEntryBase* mUrlEntryKeybinding;
+ LLUrlEntryBase* mUrlEntryAgentMention;
};
#endif
diff --git a/indra/llui/llxuiparser.cpp b/indra/llui/llxuiparser.cpp
index 8fd85a89a1..8cd11b86b3 100644
--- a/indra/llui/llxuiparser.cpp
+++ b/indra/llui/llxuiparser.cpp
@@ -30,7 +30,7 @@
#include "llxmlnode.h"
#include "llfasttimer.h"
-#ifdef LL_USESYSTEMLIBS
+#if 1
#include <expat.h>
#else
#include "expat/expat.h"
diff --git a/indra/llwebrtc/CMakeLists.txt b/indra/llwebrtc/CMakeLists.txt
index c4971d44b1..6c0216234c 100644
--- a/indra/llwebrtc/CMakeLists.txt
+++ b/indra/llwebrtc/CMakeLists.txt
@@ -28,9 +28,7 @@ list(APPEND llwebrtc_SOURCE_FILES ${llwebrtc_HEADER_FILES})
add_library (llwebrtc SHARED ${llwebrtc_SOURCE_FILES})
-if (NOT USESYSTEMLIBS)
-set_target_properties(llwebrtc PROPERTIES PUBLIC_HEADER llwebrtc.h)
-endif (NOT USESYSTEMLIBS)
+#set_target_properties(llwebrtc PROPERTIES PUBLIC_HEADER llwebrtc.h)
if (WINDOWS)
cmake_policy(SET CMP0091 NEW)
diff --git a/indra/llwebrtc/llwebrtc.cpp b/indra/llwebrtc/llwebrtc.cpp
index 9b3dde4d0f..2ee6d912c1 100644
--- a/indra/llwebrtc/llwebrtc.cpp
+++ b/indra/llwebrtc/llwebrtc.cpp
@@ -432,9 +432,7 @@ void ll_set_device_module_capture_device(rtc::scoped_refptr<webrtc::AudioDeviceM
// has it at 0
device_module->SetRecordingDevice(device + 1);
#endif
- device_module->SetStereoRecording(false);
device_module->InitMicrophone();
- device_module->InitRecording();
}
void LLWebRTCImpl::setCaptureDevice(const std::string &id)
@@ -475,6 +473,8 @@ void LLWebRTCImpl::setCaptureDevice(const std::string &id)
ll_set_device_module_capture_device(mPeerDeviceModule, recordingDevice);
if (recording)
{
+ mPeerDeviceModule->SetStereoRecording(false);
+ mPeerDeviceModule->InitRecording();
mPeerDeviceModule->StartRecording();
}
});
@@ -496,9 +496,7 @@ void ll_set_device_module_render_device(rtc::scoped_refptr<webrtc::AudioDeviceMo
#else
device_module->SetPlayoutDevice(device + 1);
#endif
- device_module->SetStereoPlayout(true);
device_module->InitSpeaker();
- device_module->InitPlayout();
}
void LLWebRTCImpl::setRenderDevice(const std::string &id)
@@ -542,6 +540,8 @@ void LLWebRTCImpl::setRenderDevice(const std::string &id)
ll_set_device_module_render_device(mPeerDeviceModule, playoutDevice);
if (playing)
{
+ mPeerDeviceModule->SetStereoPlayout(true);
+ mPeerDeviceModule->InitPlayout();
mPeerDeviceModule->StartPlayout();
}
});
diff --git a/indra/llwindow/CMakeLists.txt b/indra/llwindow/CMakeLists.txt
index ce9134e7f1..1f0820a9f6 100644
--- a/indra/llwindow/CMakeLists.txt
+++ b/indra/llwindow/CMakeLists.txt
@@ -55,7 +55,6 @@ set(llwindow_LINK_LIBRARIES
llfilesystem
llxml
ll::glm
- ll::glext
ll::uilibraries
ll::SDL
)
@@ -64,7 +63,7 @@ include_directories(${CMAKE_SOURCE_DIR}/llrender)
# Libraries on which this library depends, needed for Linux builds
# Sort by high-level to low-level
-if (USESYSTEMLIBS AND NOT DARWIN)
+if (NOT DARWIN)
list(APPEND viewer_SOURCE_FILES
llkeyboardsdl.cpp
llwindowsdl.cpp
@@ -86,7 +85,7 @@ if (USESYSTEMLIBS AND NOT DARWIN)
fontconfig # For FCInit and other FC* functions.
)
endif (BUILD_HEADLESS)
-endif (USESYSTEMLIBS AND NOT DARWIN)
+endif ()
if (DARWIN)
list(APPEND llwindow_SOURCE_FILES
@@ -183,7 +182,6 @@ endif (SDL_FOUND)
target_include_directories(llwindow INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
if (DARWIN)
- include(CMakeFindFrameworks)
find_library(CARBON_LIBRARY Carbon)
target_link_libraries(llwindow ${CARBON_LIBRARY})
endif (DARWIN)
diff --git a/indra/llwindow/lldxhardware.cpp b/indra/llwindow/lldxhardware.cpp
index 4bc069c5a4..387982dfc2 100644
--- a/indra/llwindow/lldxhardware.cpp
+++ b/indra/llwindow/lldxhardware.cpp
@@ -47,7 +47,6 @@
#include "llstl.h"
#include "lltimer.h"
-void (*gWriteDebug)(const char* msg) = NULL;
LLDXHardware gDXHardware;
//-----------------------------------------------------------------------------
@@ -61,170 +60,6 @@ typedef BOOL ( WINAPI* PfnCoSetProxyBlanket )( IUnknown* pProxy, DWORD dwAuthnSv
OLECHAR* pServerPrincName, DWORD dwAuthnLevel, DWORD dwImpLevel,
RPC_AUTH_IDENTITY_HANDLE pAuthInfo, DWORD dwCapabilities );
-HRESULT GetVideoMemoryViaWMI(WCHAR* strInputDeviceID, DWORD* pdwAdapterRam)
-{
- HRESULT hr;
- bool bGotMemory = false;
- IWbemLocator* pIWbemLocator = nullptr;
- IWbemServices* pIWbemServices = nullptr;
- BSTR pNamespace = nullptr;
-
- *pdwAdapterRam = 0;
- CoInitializeEx(0, COINIT_APARTMENTTHREADED);
-
- hr = CoCreateInstance( CLSID_WbemLocator,
- nullptr,
- CLSCTX_INPROC_SERVER,
- IID_IWbemLocator,
- ( LPVOID* )&pIWbemLocator );
-#ifdef PRINTF_DEBUGGING
- if( FAILED( hr ) ) wprintf( L"WMI: CoCreateInstance failed: 0x%0.8x\n", hr );
-#endif
-
- if( SUCCEEDED( hr ) && pIWbemLocator )
- {
- // Using the locator, connect to WMI in the given namespace.
- pNamespace = SysAllocString( L"\\\\.\\root\\cimv2" );
-
- hr = pIWbemLocator->ConnectServer( pNamespace, nullptr, nullptr, 0L,
- 0L, nullptr, nullptr, &pIWbemServices );
-#ifdef PRINTF_DEBUGGING
- if( FAILED( hr ) ) wprintf( L"WMI: pIWbemLocator->ConnectServer failed: 0x%0.8x\n", hr );
-#endif
- if( SUCCEEDED( hr ) && pIWbemServices != 0 )
- {
- HINSTANCE hinstOle32 = nullptr;
-
- hinstOle32 = LoadLibraryW( L"ole32.dll" );
- if( hinstOle32 )
- {
- PfnCoSetProxyBlanket pfnCoSetProxyBlanket = nullptr;
-
- pfnCoSetProxyBlanket = ( PfnCoSetProxyBlanket )GetProcAddress( hinstOle32, "CoSetProxyBlanket" );
- if( pfnCoSetProxyBlanket != 0 )
- {
- // Switch security level to IMPERSONATE.
- pfnCoSetProxyBlanket( pIWbemServices, RPC_C_AUTHN_WINNT, RPC_C_AUTHZ_NONE, nullptr,
- RPC_C_AUTHN_LEVEL_CALL, RPC_C_IMP_LEVEL_IMPERSONATE, nullptr, 0 );
- }
-
- FreeLibrary( hinstOle32 );
- }
-
- IEnumWbemClassObject* pEnumVideoControllers = nullptr;
- BSTR pClassName = nullptr;
-
- pClassName = SysAllocString( L"Win32_VideoController" );
-
- hr = pIWbemServices->CreateInstanceEnum( pClassName, 0,
- nullptr, &pEnumVideoControllers );
-#ifdef PRINTF_DEBUGGING
- if( FAILED( hr ) ) wprintf( L"WMI: pIWbemServices->CreateInstanceEnum failed: 0x%0.8x\n", hr );
-#endif
-
- if( SUCCEEDED( hr ) && pEnumVideoControllers )
- {
- IWbemClassObject* pVideoControllers[10] = {0};
- DWORD uReturned = 0;
- BSTR pPropName = nullptr;
-
- // Get the first one in the list
- pEnumVideoControllers->Reset();
- hr = pEnumVideoControllers->Next( 5000, // timeout in 5 seconds
- 10, // return the first 10
- pVideoControllers,
- &uReturned );
-#ifdef PRINTF_DEBUGGING
- if( FAILED( hr ) ) wprintf( L"WMI: pEnumVideoControllers->Next failed: 0x%0.8x\n", hr );
- if( uReturned == 0 ) wprintf( L"WMI: pEnumVideoControllers uReturned == 0\n" );
-#endif
-
- VARIANT var;
- if( SUCCEEDED( hr ) )
- {
- bool bFound = false;
- for( UINT iController = 0; iController < uReturned; iController++ )
- {
- if ( !pVideoControllers[iController] )
- continue;
-
- // if strInputDeviceID is set find this specific device and return memory or specific device
- // if strInputDeviceID is not set return the best device
- if (strInputDeviceID)
- {
- pPropName = SysAllocString( L"PNPDeviceID" );
- hr = pVideoControllers[iController]->Get( pPropName, 0L, &var, nullptr, nullptr );
-#ifdef PRINTF_DEBUGGING
- if( FAILED( hr ) )
- wprintf( L"WMI: pVideoControllers[iController]->Get PNPDeviceID failed: 0x%0.8x\n", hr );
-#endif
- if( SUCCEEDED( hr ) && strInputDeviceID)
- {
- if( wcsstr( var.bstrVal, strInputDeviceID ) != 0 )
- bFound = true;
- }
- VariantClear( &var );
- if( pPropName ) SysFreeString( pPropName );
- }
-
- if( bFound || !strInputDeviceID )
- {
- pPropName = SysAllocString( L"AdapterRAM" );
- hr = pVideoControllers[iController]->Get( pPropName, 0L, &var, nullptr, nullptr );
-#ifdef PRINTF_DEBUGGING
- if( FAILED( hr ) )
- wprintf( L"WMI: pVideoControllers[iController]->Get AdapterRAM failed: 0x%0.8x\n",
- hr );
-#endif
- if( SUCCEEDED( hr ) )
- {
- bGotMemory = true;
- *pdwAdapterRam = llmax(var.ulVal, *pdwAdapterRam);
- }
- VariantClear( &var );
- if( pPropName ) SysFreeString( pPropName );
- }
-
- SAFE_RELEASE( pVideoControllers[iController] );
-
- if (bFound)
- {
- break;
- }
- }
- }
- }
-
- if( pClassName )
- SysFreeString( pClassName );
- SAFE_RELEASE( pEnumVideoControllers );
- }
-
- if( pNamespace )
- SysFreeString( pNamespace );
- SAFE_RELEASE( pIWbemServices );
- }
-
- SAFE_RELEASE( pIWbemLocator );
-
- CoUninitialize();
-
- if( bGotMemory )
- return S_OK;
- else
- return E_FAIL;
-}
-
-//static
-U32 LLDXHardware::getMBVideoMemoryViaWMI()
-{
- DWORD vram = 0;
- if (SUCCEEDED(GetVideoMemoryViaWMI(NULL, &vram)))
- {
- return vram / (1024 * 1024);;
- }
- return 0;
-}
//Getting the version of graphics controller driver via WMI
std::string LLDXHardware::getDriverVersionWMI(EGPUVendor vendor)
@@ -480,495 +315,14 @@ std::string get_string(IDxDiagContainer *containerp, const WCHAR *wszPropName)
return utf16str_to_utf8str(wszPropValue);
}
-
-LLVersion::LLVersion()
-{
- mValid = false;
- S32 i;
- for (i = 0; i < 4; i++)
- {
- mFields[i] = 0;
- }
-}
-
-bool LLVersion::set(const std::string &version_string)
-{
- S32 i;
- for (i = 0; i < 4; i++)
- {
- mFields[i] = 0;
- }
- // Split the version string.
- std::string str(version_string);
- typedef boost::tokenizer<boost::char_separator<char> > tokenizer;
- boost::char_separator<char> sep(".", "", boost::keep_empty_tokens);
- tokenizer tokens(str, sep);
-
- tokenizer::iterator iter = tokens.begin();
- S32 count = 0;
- for (;(iter != tokens.end()) && (count < 4);++iter)
- {
- mFields[count] = atoi(iter->c_str());
- count++;
- }
- if (count < 4)
- {
- //LL_WARNS() << "Potentially bogus version string!" << version_string << LL_ENDL;
- for (i = 0; i < 4; i++)
- {
- mFields[i] = 0;
- }
- mValid = false;
- }
- else
- {
- mValid = true;
- }
- return mValid;
-}
-
-S32 LLVersion::getField(const S32 field_num)
-{
- if (!mValid)
- {
- return -1;
- }
- else
- {
- return mFields[field_num];
- }
-}
-
-std::string LLDXDriverFile::dump()
-{
- if (gWriteDebug)
- {
- gWriteDebug("Filename:");
- gWriteDebug(mName.c_str());
- gWriteDebug("\n");
- gWriteDebug("Ver:");
- gWriteDebug(mVersionString.c_str());
- gWriteDebug("\n");
- gWriteDebug("Date:");
- gWriteDebug(mDateString.c_str());
- gWriteDebug("\n");
- }
- LL_INFOS() << mFilepath << LL_ENDL;
- LL_INFOS() << mName << LL_ENDL;
- LL_INFOS() << mVersionString << LL_ENDL;
- LL_INFOS() << mDateString << LL_ENDL;
-
- return "";
-}
-
-LLDXDevice::~LLDXDevice()
-{
- for_each(mDriverFiles.begin(), mDriverFiles.end(), DeletePairedPointer());
- mDriverFiles.clear();
-}
-
-std::string LLDXDevice::dump()
-{
- if (gWriteDebug)
- {
- gWriteDebug("StartDevice\n");
- gWriteDebug("DeviceName:");
- gWriteDebug(mName.c_str());
- gWriteDebug("\n");
- gWriteDebug("PCIString:");
- gWriteDebug(mPCIString.c_str());
- gWriteDebug("\n");
- }
- LL_INFOS() << LL_ENDL;
- LL_INFOS() << "DeviceName:" << mName << LL_ENDL;
- LL_INFOS() << "PCIString:" << mPCIString << LL_ENDL;
- LL_INFOS() << "Drivers" << LL_ENDL;
- LL_INFOS() << "-------" << LL_ENDL;
- for (driver_file_map_t::iterator iter = mDriverFiles.begin(),
- end = mDriverFiles.end();
- iter != end; iter++)
- {
- LLDXDriverFile *filep = iter->second;
- filep->dump();
- }
- if (gWriteDebug)
- {
- gWriteDebug("EndDevice\n");
- }
-
- return "";
-}
-
-LLDXDriverFile *LLDXDevice::findDriver(const std::string &driver)
-{
- for (driver_file_map_t::iterator iter = mDriverFiles.begin(),
- end = mDriverFiles.end();
- iter != end; iter++)
- {
- LLDXDriverFile *filep = iter->second;
- if (!utf8str_compare_insensitive(filep->mName,driver))
- {
- return filep;
- }
- }
-
- return NULL;
-}
-
LLDXHardware::LLDXHardware()
{
- mVRAM = 0;
- gWriteDebug = NULL;
}
void LLDXHardware::cleanup()
{
- // for_each(mDevices.begin(), mDevices.end(), DeletePairedPointer());
- // mDevices.clear();
-}
-
-/*
-std::string LLDXHardware::dumpDevices()
-{
- if (gWriteDebug)
- {
- gWriteDebug("\n");
- gWriteDebug("StartAllDevices\n");
- }
- for (device_map_t::iterator iter = mDevices.begin(),
- end = mDevices.end();
- iter != end; iter++)
- {
- LLDXDevice *devicep = iter->second;
- devicep->dump();
- }
- if (gWriteDebug)
- {
- gWriteDebug("EndAllDevices\n\n");
- }
- return "";
}
-LLDXDevice *LLDXHardware::findDevice(const std::string &vendor, const std::string &devices)
-{
- // Iterate through different devices tokenized in devices string
- std::string str(devices);
- typedef boost::tokenizer<boost::char_separator<char> > tokenizer;
- boost::char_separator<char> sep("|", "", boost::keep_empty_tokens);
- tokenizer tokens(str, sep);
-
- tokenizer::iterator iter = tokens.begin();
- for (;iter != tokens.end();++iter)
- {
- std::string dev_str = *iter;
- for (device_map_t::iterator iter = mDevices.begin(),
- end = mDevices.end();
- iter != end; iter++)
- {
- LLDXDevice *devicep = iter->second;
- if ((devicep->mVendorID == vendor)
- && (devicep->mDeviceID == dev_str))
- {
- return devicep;
- }
- }
- }
-
- return NULL;
-}
-*/
-
-bool LLDXHardware::getInfo(bool vram_only)
-{
- LLTimer hw_timer;
- bool ok = false;
- HRESULT hr;
-
- // CLSID_DxDiagProvider does not work with Multithreaded?
- CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
-
- IDxDiagProvider *dx_diag_providerp = NULL;
- IDxDiagContainer *dx_diag_rootp = NULL;
- IDxDiagContainer *devices_containerp = NULL;
- // IDxDiagContainer *system_device_containerp= NULL;
- IDxDiagContainer *device_containerp = NULL;
- IDxDiagContainer *file_containerp = NULL;
- IDxDiagContainer *driver_containerp = NULL;
- DWORD dw_device_count;
-
- mVRAM = 0;
-
- // CoCreate a IDxDiagProvider*
- LL_DEBUGS("AppInit") << "CoCreateInstance IID_IDxDiagProvider" << LL_ENDL;
- hr = CoCreateInstance(CLSID_DxDiagProvider,
- NULL,
- CLSCTX_INPROC_SERVER,
- IID_IDxDiagProvider,
- (LPVOID*) &dx_diag_providerp);
-
- if (FAILED(hr))
- {
- LL_WARNS("AppInit") << "No DXDiag provider found! DirectX 9 not installed!" << LL_ENDL;
- gWriteDebug("No DXDiag provider found! DirectX 9 not installed!\n");
- goto LCleanup;
- }
- if (SUCCEEDED(hr)) // if FAILED(hr) then dx9 is not installed
- {
- // Fill out a DXDIAG_INIT_PARAMS struct and pass it to IDxDiagContainer::Initialize
- // Passing in TRUE for bAllowWHQLChecks, allows dxdiag to check if drivers are
- // digital signed as logo'd by WHQL which may connect via internet to update
- // WHQL certificates.
- DXDIAG_INIT_PARAMS dx_diag_init_params;
- ZeroMemory(&dx_diag_init_params, sizeof(DXDIAG_INIT_PARAMS));
-
- dx_diag_init_params.dwSize = sizeof(DXDIAG_INIT_PARAMS);
- dx_diag_init_params.dwDxDiagHeaderVersion = DXDIAG_DX9_SDK_VERSION;
- dx_diag_init_params.bAllowWHQLChecks = TRUE;
- dx_diag_init_params.pReserved = NULL;
-
- LL_DEBUGS("AppInit") << "dx_diag_providerp->Initialize" << LL_ENDL;
- hr = dx_diag_providerp->Initialize(&dx_diag_init_params);
- if(FAILED(hr))
- {
- goto LCleanup;
- }
-
- LL_DEBUGS("AppInit") << "dx_diag_providerp->GetRootContainer" << LL_ENDL;
- hr = dx_diag_providerp->GetRootContainer( &dx_diag_rootp );
- if(FAILED(hr) || !dx_diag_rootp)
- {
- goto LCleanup;
- }
-
- HRESULT hr;
-
- // Get display driver information
- LL_DEBUGS("AppInit") << "dx_diag_rootp->GetChildContainer" << LL_ENDL;
- hr = dx_diag_rootp->GetChildContainer(L"DxDiag_DisplayDevices", &devices_containerp);
- if(FAILED(hr) || !devices_containerp)
- {
- // do not release 'dirty' devices_containerp at this stage, only dx_diag_rootp
- devices_containerp = NULL;
- goto LCleanup;
- }
-
- // make sure there is something inside
- hr = devices_containerp->GetNumberOfChildContainers(&dw_device_count);
- if (FAILED(hr) || dw_device_count == 0)
- {
- goto LCleanup;
- }
-
- // Get device 0
- // By default 0 device is the primary one, howhever in case of various hybrid graphics
- // like itegrated AMD and PCI AMD GPUs system might switch.
- LL_DEBUGS("AppInit") << "devices_containerp->GetChildContainer" << LL_ENDL;
- hr = devices_containerp->GetChildContainer(L"0", &device_containerp);
- if(FAILED(hr) || !device_containerp)
- {
- goto LCleanup;
- }
-
- DWORD vram = 0;
-
- WCHAR deviceID[512];
-
- get_wstring(device_containerp, L"szDeviceID", deviceID, 512);
- // Example: searches id like 1F06 in pnp string (aka VEN_10DE&DEV_1F06)
- // doesn't seem to work on some systems since format is unrecognizable
- // but in such case keyDeviceID works
- if (SUCCEEDED(GetVideoMemoryViaWMI(deviceID, &vram)))
- {
- mVRAM = vram/(1024*1024);
- }
- else
- {
- get_wstring(device_containerp, L"szKeyDeviceID", deviceID, 512);
- LL_WARNS() << "szDeviceID" << deviceID << LL_ENDL;
- // '+9' to avoid ENUM\\PCI\\ prefix
- // Returns string like Enum\\PCI\\VEN_10DE&DEV_1F06&SUBSYS...
- // and since GetVideoMemoryViaWMI searches by PNPDeviceID it is sufficient
- if (SUCCEEDED(GetVideoMemoryViaWMI(deviceID + 9, &vram)))
- {
- mVRAM = vram / (1024 * 1024);
- }
- }
-
- if (mVRAM == 0)
- { // Get the English VRAM string
- std::string ram_str = get_string(device_containerp, L"szDisplayMemoryEnglish");
-
- // We don't need the device any more
- SAFE_RELEASE(device_containerp);
-
- // Dump the string as an int into the structure
- char *stopstring;
- mVRAM = strtol(ram_str.c_str(), &stopstring, 10);
- LL_INFOS("AppInit") << "VRAM Detected: " << mVRAM << " DX9 string: " << ram_str << LL_ENDL;
- }
-
- if (vram_only)
- {
- ok = true;
- goto LCleanup;
- }
-
-
- /* for now, we ONLY do vram_only the rest of this
- is commented out, to ensure no-one is tempted
- to use it
-
- // Now let's get device and driver information
- // Get the IDxDiagContainer object called "DxDiag_SystemDevices".
- // This call may take some time while dxdiag gathers the info.
- DWORD num_devices = 0;
- WCHAR wszContainer[256];
- LL_DEBUGS("AppInit") << "dx_diag_rootp->GetChildContainer DxDiag_SystemDevices" << LL_ENDL;
- hr = dx_diag_rootp->GetChildContainer(L"DxDiag_SystemDevices", &system_device_containerp);
- if (FAILED(hr))
- {
- goto LCleanup;
- }
-
- hr = system_device_containerp->GetNumberOfChildContainers(&num_devices);
- if (FAILED(hr))
- {
- goto LCleanup;
- }
-
- LL_DEBUGS("AppInit") << "DX9 iterating over devices" << LL_ENDL;
- S32 device_num = 0;
- for (device_num = 0; device_num < (S32)num_devices; device_num++)
- {
- hr = system_device_containerp->EnumChildContainerNames(device_num, wszContainer, 256);
- if (FAILED(hr))
- {
- goto LCleanup;
- }
-
- hr = system_device_containerp->GetChildContainer(wszContainer, &device_containerp);
- if (FAILED(hr) || device_containerp == NULL)
- {
- goto LCleanup;
- }
-
- std::string device_name = get_string(device_containerp, L"szDescription");
-
- std::string device_id = get_string(device_containerp, L"szDeviceID");
-
- LLDXDevice *dxdevicep = new LLDXDevice;
- dxdevicep->mName = device_name;
- dxdevicep->mPCIString = device_id;
- mDevices[dxdevicep->mPCIString] = dxdevicep;
-
- // Split the PCI string based on vendor, device, subsys, rev.
- std::string str(device_id);
- typedef boost::tokenizer<boost::char_separator<char> > tokenizer;
- boost::char_separator<char> sep("&\\", "", boost::keep_empty_tokens);
- tokenizer tokens(str, sep);
-
- tokenizer::iterator iter = tokens.begin();
- S32 count = 0;
- bool valid = true;
- for (;(iter != tokens.end()) && (count < 3);++iter)
- {
- switch (count)
- {
- case 0:
- if (strcmp(iter->c_str(), "PCI"))
- {
- valid = false;
- }
- break;
- case 1:
- dxdevicep->mVendorID = iter->c_str();
- break;
- case 2:
- dxdevicep->mDeviceID = iter->c_str();
- break;
- default:
- // Ignore it
- break;
- }
- count++;
- }
-
-
-
-
- // Now, iterate through the related drivers
- hr = device_containerp->GetChildContainer(L"Drivers", &driver_containerp);
- if (FAILED(hr) || !driver_containerp)
- {
- goto LCleanup;
- }
-
- DWORD num_files = 0;
- hr = driver_containerp->GetNumberOfChildContainers(&num_files);
- if (FAILED(hr))
- {
- goto LCleanup;
- }
-
- S32 file_num = 0;
- for (file_num = 0; file_num < (S32)num_files; file_num++ )
- {
-
- hr = driver_containerp->EnumChildContainerNames(file_num, wszContainer, 256);
- if (FAILED(hr))
- {
- goto LCleanup;
- }
-
- hr = driver_containerp->GetChildContainer(wszContainer, &file_containerp);
- if (FAILED(hr) || file_containerp == NULL)
- {
- goto LCleanup;
- }
-
- std::string driver_path = get_string(file_containerp, L"szPath");
- std::string driver_name = get_string(file_containerp, L"szName");
- std::string driver_version = get_string(file_containerp, L"szVersion");
- std::string driver_date = get_string(file_containerp, L"szDatestampEnglish");
-
- LLDXDriverFile *dxdriverfilep = new LLDXDriverFile;
- dxdriverfilep->mName = driver_name;
- dxdriverfilep->mFilepath= driver_path;
- dxdriverfilep->mVersionString = driver_version;
- dxdriverfilep->mVersion.set(driver_version);
- dxdriverfilep->mDateString = driver_date;
-
- dxdevicep->mDriverFiles[driver_name] = dxdriverfilep;
-
- SAFE_RELEASE(file_containerp);
- }
- SAFE_RELEASE(device_containerp);
- }
- */
- }
-
- // dumpDevices();
- ok = true;
-
-LCleanup:
- if (!ok)
- {
- LL_WARNS("AppInit") << "DX9 probe failed" << LL_ENDL;
- gWriteDebug("DX9 probe failed\n");
- }
-
- SAFE_RELEASE(file_containerp);
- SAFE_RELEASE(driver_containerp);
- SAFE_RELEASE(device_containerp);
- SAFE_RELEASE(devices_containerp);
- SAFE_RELEASE(dx_diag_rootp);
- SAFE_RELEASE(dx_diag_providerp);
-
- CoUninitialize();
-
- return ok;
- }
-
LLSD LLDXHardware::getDisplayInfo()
{
LLTimer hw_timer;
@@ -995,7 +349,6 @@ LLSD LLDXHardware::getDisplayInfo()
if (FAILED(hr))
{
LL_WARNS() << "No DXDiag provider found! DirectX 9 not installed!" << LL_ENDL;
- gWriteDebug("No DXDiag provider found! DirectX 9 not installed!\n");
goto LCleanup;
}
if (SUCCEEDED(hr)) // if FAILED(hr) then dx9 is not installed
@@ -1111,9 +464,4 @@ LCleanup:
return ret;
}
-void LLDXHardware::setWriteDebugFunc(void (*func)(const char*))
-{
- gWriteDebug = func;
-}
-
#endif
diff --git a/indra/llwindow/lldxhardware.h b/indra/llwindow/lldxhardware.h
index 2b879e021c..8d8a08a4eb 100644
--- a/indra/llwindow/lldxhardware.h
+++ b/indra/llwindow/lldxhardware.h
@@ -30,64 +30,16 @@
#include <map>
#include "stdtypes.h"
-#include "llstring.h"
#include "llsd.h"
-class LLVersion
-{
-public:
- LLVersion();
- bool set(const std::string &version_string);
- S32 getField(const S32 field_num);
-protected:
- std::string mVersionString;
- S32 mFields[4];
- bool mValid;
-};
-
-class LLDXDriverFile
-{
-public:
- std::string dump();
-
-public:
- std::string mFilepath;
- std::string mName;
- std::string mVersionString;
- LLVersion mVersion;
- std::string mDateString;
-};
-
-class LLDXDevice
-{
-public:
- ~LLDXDevice();
- std::string dump();
-
- LLDXDriverFile *findDriver(const std::string &driver);
-public:
- std::string mName;
- std::string mPCIString;
- std::string mVendorID;
- std::string mDeviceID;
-
- typedef std::map<std::string, LLDXDriverFile *> driver_file_map_t;
- driver_file_map_t mDriverFiles;
-};
-
class LLDXHardware
{
public:
LLDXHardware();
- void setWriteDebugFunc(void (*func)(const char*));
void cleanup();
- // Returns true on success.
- // vram_only true does a "light" probe.
- bool getInfo(bool vram_only);
-
// WMI can return multiple GPU drivers
// specify which one to output
typedef enum {
@@ -98,29 +50,9 @@ public:
} EGPUVendor;
std::string getDriverVersionWMI(EGPUVendor vendor);
- S32 getVRAM() const { return mVRAM; }
-
LLSD getDisplayInfo();
-
- // Will get memory of best GPU in MB, return memory on sucsess, 0 on failure
- // Note: WMI is not accurate in some cases
- static U32 getMBVideoMemoryViaWMI();
-
- // Find a particular device that matches the following specs.
- // Empty strings indicate that you don't care.
- // You can separate multiple devices with '|' chars to indicate you want
- // ANY of them to match and return.
- // LLDXDevice *findDevice(const std::string &vendor, const std::string &devices);
-
- // std::string dumpDevices();
-public:
- typedef std::map<std::string, LLDXDevice *> device_map_t;
- // device_map_t mDevices;
-protected:
- S32 mVRAM;
};
-extern void (*gWriteDebug)(const char* msg);
extern LLDXHardware gDXHardware;
#endif // LL_LLDXHARDWARE_H
diff --git a/indra/llwindow/llwindow.cpp b/indra/llwindow/llwindow.cpp
index 302d038a79..4f3cc69c75 100644
--- a/indra/llwindow/llwindow.cpp
+++ b/indra/llwindow/llwindow.cpp
@@ -421,7 +421,7 @@ LLWindow* LLWindowManager::createWindow(
fullscreen, clearBg, enable_vsync, use_gl, ignore_pixel_depth);
#elif LL_SDL
new_window = new LLWindowSDL(callbacks,
- title, x, y, width, height, flags,
+ title, name, x, y, width, height, flags,
fullscreen, clearBg, enable_vsync, use_gl, ignore_pixel_depth, fsaa_samples);
#elif LL_WINDOWS
new_window = new LLWindowWin32(callbacks,
diff --git a/indra/llwindow/llwindowsdl.cpp b/indra/llwindow/llwindowsdl.cpp
index 8c90f917b8..69332e36b6 100644
--- a/indra/llwindow/llwindowsdl.cpp
+++ b/indra/llwindow/llwindowsdl.cpp
@@ -61,9 +61,6 @@ extern bool gDebugWindowProc;
const S32 MAX_NUM_RESOLUTIONS = 200;
-// static variable for ATI mouse cursor crash work-around:
-static bool ATIbug = false;
-
#if LL_DARWIN
#include <OpenGL/OpenGL.h>
@@ -152,257 +149,14 @@ Display* LLWindowSDL::get_SDL_Display(void)
}
#endif // LL_X11
-#if LL_X11
-
-// Clipboard handing via native X11, base on the implementation in Cool VL by Henri Beauchamp
-
-namespace
-{
- std::array<Atom, 3> gSupportedAtoms;
-
- Atom XA_CLIPBOARD;
- Atom XA_TARGETS;
- Atom PVT_PASTE_BUFFER;
- long const MAX_PASTE_BUFFER_SIZE = 16383;
-
- void filterSelectionRequest( XEvent aEvent )
- {
- auto *display = LLWindowSDL::getSDLDisplay();
- auto &request = aEvent.xselectionrequest;
-
- XSelectionEvent reply { SelectionNotify, aEvent.xany.serial, aEvent.xany.send_event, display,
- request.requestor, request.selection, request.target,
- request.property,request.time };
-
- if (request.target == XA_TARGETS)
- {
- XChangeProperty(display, request.requestor, request.property,
- XA_ATOM, 32, PropModeReplace,
- (unsigned char *) &gSupportedAtoms.front(), gSupportedAtoms.size());
- }
- else if (std::find(gSupportedAtoms.begin(), gSupportedAtoms.end(), request.target) !=
- gSupportedAtoms.end())
- {
- std::string utf8;
- if (request.selection == XA_PRIMARY)
- utf8 = wstring_to_utf8str(gWindowImplementation->getPrimaryText());
- else
- utf8 = wstring_to_utf8str(gWindowImplementation->getSecondaryText());
-
- XChangeProperty(display, request.requestor, request.property,
- request.target, 8, PropModeReplace,
- (unsigned char *) utf8.c_str(), utf8.length());
- }
- else if (request.selection == XA_CLIPBOARD)
- {
- // Did not have what they wanted, so no property set
- reply.property = None;
- }
- else
- return;
-
- XSendEvent(request.display, request.requestor, False, NoEventMask, (XEvent *) &reply);
- XSync(display, False);
- }
-
- void filterSelectionClearRequest( XEvent aEvent )
- {
- auto &request = aEvent.xselectionrequest;
- if (request.selection == XA_PRIMARY)
- gWindowImplementation->clearPrimaryText();
- else if (request.selection == XA_CLIPBOARD)
- gWindowImplementation->clearSecondaryText();
- }
-
- int x11_clipboard_filter(void*, SDL_Event *evt)
- {
- Display *display = LLWindowSDL::getSDLDisplay();
- if (!display)
- return 1;
-
- if (evt->type != SDL_SYSWMEVENT)
- return 1;
-
- auto xevent = evt->syswm.msg->msg.x11.event;
-
- if (xevent.type == SelectionRequest)
- filterSelectionRequest( xevent );
- else if (xevent.type == SelectionClear)
- filterSelectionClearRequest( xevent );
- return 1;
- }
-
- bool grab_property(Display* display, Window window, Atom selection, Atom target)
- {
- if( !display )
- return false;
-
- maybe_lock_display();
-
- XDeleteProperty(display, window, PVT_PASTE_BUFFER);
- XFlush(display);
-
- XConvertSelection(display, selection, target, PVT_PASTE_BUFFER, window, CurrentTime);
-
- // Unlock the connection so that the SDL event loop may function
- maybe_unlock_display();
-
- const auto start{ SDL_GetTicks() };
- const auto end{ start + 1000 };
-
- XEvent xevent {};
- bool response = false;
-
- do
- {
- SDL_Event event {};
-
- // Wait for an event
- SDL_WaitEvent(&event);
-
- // If the event is a window manager event
- if (event.type == SDL_SYSWMEVENT)
- {
- xevent = event.syswm.msg->msg.x11.event;
-
- if (xevent.type == SelectionNotify && xevent.xselection.requestor == window)
- response = true;
- }
- } while (!response && SDL_GetTicks() < end );
-
- return response && xevent.xselection.property != None;
- }
-}
-
-void LLWindowSDL::initialiseX11Clipboard()
-{
- if (!mSDL_Display)
- return;
-
- SDL_EventState(SDL_SYSWMEVENT, SDL_ENABLE);
- SDL_SetEventFilter(x11_clipboard_filter, nullptr);
-
- maybe_lock_display();
-
- XA_CLIPBOARD = XInternAtom(mSDL_Display, "CLIPBOARD", False);
-
- gSupportedAtoms[0] = XInternAtom(mSDL_Display, "UTF8_STRING", False);
- gSupportedAtoms[1] = XInternAtom(mSDL_Display, "COMPOUND_TEXT", False);
- gSupportedAtoms[2] = XA_STRING;
-
- // TARGETS atom
- XA_TARGETS = XInternAtom(mSDL_Display, "TARGETS", False);
-
- // SL_PASTE_BUFFER atom
- PVT_PASTE_BUFFER = XInternAtom(mSDL_Display, "FS_PASTE_BUFFER", False);
-
- maybe_unlock_display();
-}
-
-bool LLWindowSDL::getSelectionText( Atom aSelection, Atom aType, LLWString &text )
-{
- if( !mSDL_Display )
- return false;
-
- if( !grab_property(mSDL_Display, mSDL_XWindowID, aSelection,aType ) )
- return false;
-
- maybe_lock_display();
-
- Atom type;
- int format{};
- unsigned long len{},remaining {};
- unsigned char* data = nullptr;
- int res = XGetWindowProperty(mSDL_Display, mSDL_XWindowID,
- PVT_PASTE_BUFFER, 0, MAX_PASTE_BUFFER_SIZE, False,
- AnyPropertyType, &type, &format, &len,
- &remaining, &data);
- if (data && len)
- {
- text = LLWString(
- utf8str_to_wstring(reinterpret_cast< char const *>( data ) )
- );
- XFree(data);
- }
-
- maybe_unlock_display();
- return res == Success;
-}
-
-bool LLWindowSDL::getSelectionText(Atom selection, LLWString& text)
-{
- if (!mSDL_Display)
- return false;
-
- maybe_lock_display();
-
- Window owner = XGetSelectionOwner(mSDL_Display, selection);
- if (owner == None)
- {
- if (selection == XA_PRIMARY)
- {
- owner = DefaultRootWindow(mSDL_Display);
- selection = XA_CUT_BUFFER0;
- }
- else
- {
- maybe_unlock_display();
- return false;
- }
- }
-
- maybe_unlock_display();
-
- for( Atom atom : gSupportedAtoms )
- {
- if(getSelectionText(selection, atom, text ) )
- return true;
- }
-
- return false;
-}
-
-bool LLWindowSDL::setSelectionText(Atom selection, const LLWString& text)
-{
- maybe_lock_display();
-
- if (selection == XA_PRIMARY)
- {
- std::string utf8 = wstring_to_utf8str(text);
- XStoreBytes(mSDL_Display, utf8.c_str(), utf8.length() + 1);
- mPrimaryClipboard = text;
- }
- else
- mSecondaryClipboard = text;
-
- XSetSelectionOwner(mSDL_Display, selection, mSDL_XWindowID, CurrentTime);
-
- auto owner = XGetSelectionOwner(mSDL_Display, selection);
-
- maybe_unlock_display();
-
- return owner == mSDL_XWindowID;
-}
-
-Display* LLWindowSDL::getSDLDisplay()
-{
- if (gWindowImplementation)
- return gWindowImplementation->mSDL_Display;
- return nullptr;
-}
-
-#endif
-
-
LLWindowSDL::LLWindowSDL(LLWindowCallbacks* callbacks,
- const std::string& title, S32 x, S32 y, S32 width,
+ const std::string& title, const std::string& name, S32 x, S32 y, S32 width,
S32 height, U32 flags,
bool fullscreen, bool clearBg,
- bool disable_vsync, bool use_gl,
+ bool enable_vsync, bool use_gl,
bool ignore_pixel_depth, U32 fsaa_samples)
: LLWindow(callbacks, fullscreen, flags),
Lock_Display(NULL),
- //Unlock_Display(NULL), mGamma(1.0f)
Unlock_Display(NULL), mGamma(1.0f)
{
// Initialize the keyboard
@@ -427,19 +181,19 @@ LLWindowSDL::LLWindowSDL(LLWindowCallbacks* callbacks,
#if LL_X11
mSDL_XWindowID = None;
- mSDL_Display = NULL;
+ mSDL_Display = nullptr;
#endif // LL_X11
// Assume 4:3 aspect ratio until we know better
mOriginalAspectRatio = 1024.0 / 768.0;
if (title.empty())
- mWindowTitle = "SDL Window"; // *FIX: (?)
+ mWindowTitle = "Second Life";
else
mWindowTitle = title;
// Create the GL context and set it up for windowed or fullscreen, as appropriate.
- if(createContext(x, y, width, height, 32, fullscreen, disable_vsync))
+ if(createContext(x, y, width, height, 32, fullscreen, enable_vsync))
{
gGLManager.initGL();
@@ -453,10 +207,7 @@ LLWindowSDL::LLWindowSDL(LLWindowCallbacks* callbacks,
// Stash an object pointer for OSMessageBox()
gWindowImplementation = this;
-#if LL_X11
mFlashing = false;
- initialiseX11Clipboard();
-#endif // LL_X11
mKeyVirtualKey = 0;
mKeyModifiers = KMOD_NONE;
@@ -478,145 +229,6 @@ static SDL_Surface *Load_BMP_Resource(const char *basename)
return SDL_LoadBMP(path_buffer);
}
-#if LL_X11
-// This is an XFree86/XOrg-specific hack for detecting the amount of Video RAM
-// on this machine. It works by searching /var/log/var/log/Xorg.?.log or
-// /var/log/XFree86.?.log for a ': (VideoRAM ?|Memory): (%d+) kB' regex, where
-// '?' is the X11 display number derived from $DISPLAY
-static int x11_detect_VRAM_kb_fp(FILE *fp, const char *prefix_str)
-{
- const int line_buf_size = 1000;
- char line_buf[line_buf_size];
- while (fgets(line_buf, line_buf_size, fp))
- {
- //LL_DEBUGS() << "XLOG: " << line_buf << LL_ENDL;
-
- // Why the ad-hoc parser instead of using a regex? Our
- // favourite regex implementation - libboost_regex - is
- // quite a heavy and troublesome dependency for the client, so
- // it seems a shame to introduce it for such a simple task.
- // *FIXME: libboost_regex is a dependency now anyway, so we may
- // as well use it instead of this hand-rolled nonsense.
- const char *part1_template = prefix_str;
- const char part2_template[] = " kB";
- char *part1 = strstr(line_buf, part1_template);
- if (part1) // found start of matching line
- {
- part1 = &part1[strlen(part1_template)]; // -> after
- char *part2 = strstr(part1, part2_template);
- if (part2) // found end of matching line
- {
- // now everything between part1 and part2 is
- // supposed to be numeric, describing the
- // number of kB of Video RAM supported
- int rtn = 0;
- for (; part1 < part2; ++part1)
- {
- if (*part1 < '0' || *part1 > '9')
- {
- // unexpected char, abort parse
- rtn = 0;
- break;
- }
- rtn *= 10;
- rtn += (*part1) - '0';
- }
- if (rtn > 0)
- {
- // got the kB number. return it now.
- return rtn;
- }
- }
- }
- }
- return 0; // 'could not detect'
-}
-
-static int x11_detect_VRAM_kb()
-{
- std::string x_log_location("/var/log/");
- std::string fname;
- int rtn = 0; // 'could not detect'
- int display_num = 0;
- FILE *fp;
- char *display_env = getenv("DISPLAY"); // e.g. :0 or :0.0 or :1.0 etc
- // parse DISPLAY number so we can go grab the right log file
- if (display_env[0] == ':' &&
- display_env[1] >= '0' && display_env[1] <= '9')
- {
- display_num = display_env[1] - '0';
- }
-
- // *TODO: we could be smarter and see which of Xorg/XFree86 has the
- // freshest time-stamp.
-
- // Try Xorg log first
- fname = x_log_location;
- fname += "Xorg.";
- fname += ('0' + display_num);
- fname += ".log";
- fp = fopen(fname.c_str(), "r");
- if (fp)
- {
- LL_INFOS() << "Looking in " << fname
- << " for VRAM info..." << LL_ENDL;
- rtn = x11_detect_VRAM_kb_fp(fp, ": VideoRAM: ");
- fclose(fp);
- if (0 == rtn)
- {
- fp = fopen(fname.c_str(), "r");
- if (fp)
- {
- rtn = x11_detect_VRAM_kb_fp(fp, ": Video RAM: ");
- fclose(fp);
- if (0 == rtn)
- {
- fp = fopen(fname.c_str(), "r");
- if (fp)
- {
- rtn = x11_detect_VRAM_kb_fp(fp, ": Memory: ");
- fclose(fp);
- }
- }
- }
- }
- }
- else
- {
- LL_INFOS() << "Could not open " << fname
- << " - skipped." << LL_ENDL;
- // Try old XFree86 log otherwise
- fname = x_log_location;
- fname += "XFree86.";
- fname += ('0' + display_num);
- fname += ".log";
- fp = fopen(fname.c_str(), "r");
- if (fp)
- {
- LL_INFOS() << "Looking in " << fname
- << " for VRAM info..." << LL_ENDL;
- rtn = x11_detect_VRAM_kb_fp(fp, ": VideoRAM: ");
- fclose(fp);
- if (0 == rtn)
- {
- fp = fopen(fname.c_str(), "r");
- if (fp)
- {
- rtn = x11_detect_VRAM_kb_fp(fp, ": Memory: ");
- fclose(fp);
- }
- }
- }
- else
- {
- LL_INFOS() << "Could not open " << fname
- << " - skipped." << LL_ENDL;
- }
- }
- return rtn;
-}
-#endif // LL_X11
-
void LLWindowSDL::setTitle(const std::string title)
{
SDL_SetWindowTitle( mWindow, title.c_str() );
@@ -675,7 +287,7 @@ void LLWindowSDL::tryFindFullscreenSize( int &width, int &height )
}
}
-bool LLWindowSDL::createContext(int x, int y, int width, int height, int bits, bool fullscreen, bool disable_vsync)
+bool LLWindowSDL::createContext(int x, int y, int width, int height, int bits, bool fullscreen, bool enable_vsync)
{
//bool glneedsinit = false;
@@ -734,6 +346,10 @@ bool LLWindowSDL::createContext(int x, int y, int width, int height, int bits, b
width = 1024;
if (height == 0)
width = 768;
+ if (x == 0)
+ x = SDL_WINDOWPOS_UNDEFINED;
+ if (y == 0)
+ y = SDL_WINDOWPOS_UNDEFINED;
mFullscreen = fullscreen;
@@ -749,23 +365,16 @@ bool LLWindowSDL::createContext(int x, int y, int width, int height, int bits, b
mSDLFlags = sdlflags;
+ // Setup default backing colors
GLint redBits{8}, greenBits{8}, blueBits{8}, alphaBits{8};
+ GLint depthBits{24}, stencilBits{8};
- GLint depthBits{(bits <= 16) ? 16 : 24}, stencilBits{8};
-
- if (getenv("LL_GL_NO_STENCIL"))
- stencilBits = 0;
-
- SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, alphaBits);
SDL_GL_SetAttribute(SDL_GL_RED_SIZE, redBits);
SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, greenBits);
SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, blueBits);
- SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, depthBits );
-
- // We need stencil support for a few (minor) things.
- if (stencilBits)
- SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, stencilBits);
- // *FIX: try to toggle vsync here?
+ SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, alphaBits);
+ SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, depthBits);
+ SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, stencilBits);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 4);
#if LL_DARWIN
@@ -777,30 +386,40 @@ bool LLWindowSDL::createContext(int x, int y, int width, int height, int bits, b
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
- if (mFSAASamples > 0)
+ U32 context_flags = 0;
+ if (gDebugGL)
{
- SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 1);
- SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, mFSAASamples);
+ context_flags |= SDL_GL_CONTEXT_DEBUG_FLAG;
}
-
+ SDL_GL_SetAttribute(SDL_GL_CONTEXT_FLAGS, context_flags);
SDL_GL_SetAttribute(SDL_GL_SHARE_WITH_CURRENT_CONTEXT, 1);
- mWindow = SDL_CreateWindow( mWindowTitle.c_str(), SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, width, height, mSDLFlags );
- if( mWindow )
+ // Create the window
+ mWindow = SDL_CreateWindow(mWindowTitle.c_str(), x, y, width, height, mSDLFlags);
+ if (mWindow == nullptr)
{
- mContext = SDL_GL_CreateContext( mWindow );
+ LL_WARNS() << "Window creation failure. SDL: " << SDL_GetError() << LL_ENDL;
+ setupFailure("Window creation error", "Error", OSMB_OK);
+ return false;
+ }
- if( mContext == 0 )
- {
- LL_WARNS() << "Cannot create GL context " << SDL_GetError() << LL_ENDL;
- setupFailure("GL Context creation error creation error", "Error", OSMB_OK);
- return false;
- }
- // SDL_GL_SetSwapInterval(1);
+ // Create the context
+ mContext = SDL_GL_CreateContext(mWindow);
+ if(!mContext)
+ {
+ LL_WARNS() << "Cannot create GL context " << SDL_GetError() << LL_ENDL;
+ setupFailure("GL Context creation error", "Error", OSMB_OK);
+ return false;
}
+ if (SDL_GL_MakeCurrent(mWindow, mContext) != 0)
+ {
+ LL_WARNS() << "Failed to make context current. SDL: " << SDL_GetError() << LL_ENDL;
+ setupFailure("GL Context failed to set current failure", "Error", OSMB_OK);
+ return false;
+ }
- if( mFullscreen )
+ if(mFullscreen)
{
if (mWindow)
{
@@ -844,70 +463,6 @@ bool LLWindowSDL::createContext(int x, int y, int width, int height, int bits, b
}
}
- // Set the application icon.
- SDL_Surface *bmpsurface;
- bmpsurface = Load_BMP_Resource("ll_icon.BMP");
- if (bmpsurface)
- {
- SDL_SetWindowIcon(mWindow, bmpsurface);
- SDL_FreeSurface(bmpsurface);
- bmpsurface = NULL;
- }
-
- // Detect video memory size.
-# if LL_X11
- gGLManager.mVRAM = x11_detect_VRAM_kb() / 1024;
- if (gGLManager.mVRAM != 0)
- {
- LL_INFOS() << "X11 log-parser detected " << gGLManager.mVRAM << "MB VRAM." << LL_ENDL;
- } else
- {
- PFNGLXQUERYCURRENTRENDERERINTEGERMESAPROC queryInteger;
- queryInteger = (PFNGLXQUERYCURRENTRENDERERINTEGERMESAPROC)
- glXGetProcAddressARB((const GLubyte *)"glXQueryCurrentRendererIntegerMESA");
- unsigned int vram_megabytes = 0;
- queryInteger(GLX_RENDERER_VIDEO_MEMORY_MESA, &vram_megabytes);
- if (!vram_megabytes) {
- glGetIntegerv(GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX, (int *)&vram_megabytes);
- vram_megabytes /= 1024;
- }
- if (!vram_megabytes) {
- glGetIntegerv(GL_VBO_FREE_MEMORY_ATI, (int *)&vram_megabytes);
- vram_megabytes /= 1024;
- }
- gGLManager.mVRAM = vram_megabytes;
- }
-#elif LL_DARWIN
- CGLRendererInfoObj info = 0;
- GLint vram_megabytes = 0;
- int num_renderers = 0;
- auto err = CGLQueryRendererInfo(CGDisplayIDToOpenGLDisplayMask(kCGDirectMainDisplay),
- &info, &num_renderers);
- if (!err) {
- CGLDescribeRenderer(info, 0, kCGLRPVideoMemoryMegabytes, &vram_megabytes);
- CGLDestroyRendererInfo(info);
- } else
- vram_megabytes = 256;
- gGLManager.mVRAM = vram_megabytes;
-# endif // LL_X11
-/*
- {
- // fallback to letting SDL detect VRAM.
- // note: I've not seen SDL's detection ever actually find
- // VRAM != 0, but if SDL *does* detect it then that's a bonus.
- gGLManager.mVRAM = 0;
- if (gGLManager.mVRAM != 0)
- {
- LL_INFOS() << "SDL detected " << gGLManager.mVRAM << "MB VRAM." << LL_ENDL;
- }
- }
-*/
- // If VRAM is not detected, that is handled later
-
- // *TODO: Now would be an appropriate time to check for some
- // explicitly unsupported cards.
- //const char* RENDERER = (const char*) glGetString(GL_RENDERER);
-
SDL_GL_GetAttribute(SDL_GL_RED_SIZE, &redBits);
SDL_GL_GetAttribute(SDL_GL_GREEN_SIZE, &greenBits);
SDL_GL_GetAttribute(SDL_GL_BLUE_SIZE, &blueBits);
@@ -943,6 +498,20 @@ bool LLWindowSDL::createContext(int x, int y, int width, int height, int bits, b
#endif
}
+ LL_PROFILER_GPU_CONTEXT;
+
+ // Enable vertical sync
+ toggleVSync(enable_vsync);
+
+ // Set the application icon.
+ SDL_Surface* bmpsurface = Load_BMP_Resource("ll_icon.BMP");
+ if (bmpsurface)
+ {
+ SDL_SetWindowIcon(mWindow, bmpsurface);
+ SDL_FreeSurface(bmpsurface);
+ bmpsurface = NULL;
+ }
+
#if LL_X11
/* Grab the window manager specific information */
SDL_SysWMinfo info;
@@ -968,7 +537,38 @@ bool LLWindowSDL::createContext(int x, int y, int width, int height, int bits, b
}
#endif // LL_X11
-
+# if LL_X11
+ PFNGLXQUERYCURRENTRENDERERINTEGERMESAPROC queryInteger;
+ queryInteger = (PFNGLXQUERYCURRENTRENDERERINTEGERMESAPROC)glXGetProcAddressARB((const GLubyte *)"glXQueryCurrentRendererIntegerMESA");
+ unsigned int vram_megabytes = 0;
+ queryInteger(GLX_RENDERER_VIDEO_MEMORY_MESA, &vram_megabytes);
+ if (!vram_megabytes)
+ {
+ glGetIntegerv(GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX, (int *)&vram_megabytes);
+ vram_megabytes /= 1024;
+ }
+ if (!vram_megabytes)
+ {
+ glGetIntegerv(GL_VBO_FREE_MEMORY_ATI, (int *)&vram_megabytes);
+ vram_megabytes /= 1024;
+ }
+ gGLManager.mVRAM = vram_megabytes;
+#elif LL_DARWIN
+ CGLRendererInfoObj info = 0;
+ GLint vram_megabytes = 0;
+ int num_renderers = 0;
+ auto err = CGLQueryRendererInfo(CGDisplayIDToOpenGLDisplayMask(kCGDirectMainDisplay), &info, &num_renderers);
+ if (!err)
+ {
+ CGLDescribeRenderer(info, 0, kCGLRPVideoMemoryMegabytes, &vram_megabytes);
+ CGLDestroyRendererInfo(info);
+ }
+ else
+ {
+ vram_megabytes = 256;
+ }
+ gGLManager.mVRAM = vram_megabytes;
+# endif
SDL_StartTextInput();
//make sure multisampling is disabled by default
#if GL_VERSION_1_3
@@ -979,9 +579,48 @@ bool LLWindowSDL::createContext(int x, int y, int width, int height, int bits, b
return true;
}
+void* LLWindowSDL::createSharedContext()
+{
+ SDL_GLContext pContext = SDL_GL_CreateContext(mWindow);
+ if (pContext)
+ {
+ LL_DEBUGS() << "Creating shared OpenGL context successful!" << LL_ENDL;
+ return (void*)pContext;
+ }
+
+ LL_WARNS() << "Creating shared OpenGL context failed!" << LL_ENDL;
+ return nullptr;
+}
+
+void LLWindowSDL::makeContextCurrent(void* contextPtr)
+{
+ SDL_GL_MakeCurrent(mWindow, contextPtr);
+ LL_PROFILER_GPU_CONTEXT;
+}
+
+void LLWindowSDL::destroySharedContext(void* contextPtr)
+{
+ SDL_GL_DeleteContext(contextPtr);
+}
+
+void LLWindowSDL::toggleVSync(bool enable_vsync)
+{
+ if (!enable_vsync)
+ {
+ LL_INFOS("Window") << "Disabling vertical sync" << LL_ENDL;
+ SDL_GL_SetSwapInterval(0);
+ SDL_SetHintWithPriority(SDL_HINT_RENDER_VSYNC,"0",SDL_HINT_OVERRIDE);
+ }
+ else
+ {
+ LL_INFOS("Window") << "Enabling vertical sync" << LL_ENDL;
+ SDL_GL_SetSwapInterval(1);
+ SDL_SetHintWithPriority(SDL_HINT_RENDER_VSYNC,"1",SDL_HINT_OVERRIDE);
+ }
+}
// changing fullscreen resolution, or switching between windowed and fullscreen mode.
-bool LLWindowSDL::switchContext(bool fullscreen, const LLCoordScreen &size, bool disable_vsync, const LLCoordScreen * const posp)
+bool LLWindowSDL::switchContext(bool fullscreen, const LLCoordScreen &size, bool enable_vsync, const LLCoordScreen * const posp)
{
const bool needsRebuild = true; // Just nuke the context and start over.
bool result = true;
@@ -991,7 +630,7 @@ bool LLWindowSDL::switchContext(bool fullscreen, const LLCoordScreen &size, bool
if(needsRebuild)
{
destroyContext();
- result = createContext(0, 0, size.mX, size.mY, 0, fullscreen, disable_vsync);
+ result = createContext(0, 0, size.mX, size.mY, 32, fullscreen, enable_vsync);
if (result)
{
gGLManager.initGL();
@@ -1011,7 +650,13 @@ void LLWindowSDL::destroyContext()
{
LL_INFOS() << "destroyContext begins" << LL_ENDL;
+ // Stop unicode input
SDL_StopTextInput();
+
+ // Clean up remaining GL state before blowing away window
+ LL_INFOS() << "shutdownGL begins" << LL_ENDL;
+ gGLManager.shutdownGL();
+
#if LL_X11
mSDL_Display = NULL;
mSDL_XWindowID = None;
@@ -1019,18 +664,38 @@ void LLWindowSDL::destroyContext()
Unlock_Display = NULL;
#endif // LL_X11
- // Clean up remaining GL state before blowing away window
- LL_INFOS() << "shutdownGL begins" << LL_ENDL;
- gGLManager.shutdownGL();
+ LL_INFOS() << "Destroying SDL cursors" << LL_ENDL;
+ quitCursors();
+
+ if (mContext)
+ {
+ LL_INFOS() << "Destroying SDL GL Context" << LL_ENDL;
+ SDL_GL_DeleteContext(mContext);
+ mContext = nullptr;
+ }
+ else
+ {
+ LL_INFOS() << "SDL GL Context already destroyed" << LL_ENDL;
+ }
+
+ if (mWindow)
+ {
+ LL_INFOS() << "Destroying SDL Window" << LL_ENDL;
+ SDL_DestroyWindow(mWindow);
+ mWindow = nullptr;
+ }
+ else
+ {
+ LL_INFOS() << "SDL Window already destroyed" << LL_ENDL;
+ }
+ LL_INFOS() << "destroyContext end" << LL_ENDL;
+
LL_INFOS() << "SDL_QuitSS/VID begins" << LL_ENDL;
SDL_QuitSubSystem(SDL_INIT_VIDEO); // *FIX: this might be risky...
-
- mWindow = NULL;
}
LLWindowSDL::~LLWindowSDL()
{
- quitCursors();
destroyContext();
if(mSupportedResolutions != NULL)
@@ -1044,7 +709,6 @@ LLWindowSDL::~LLWindowSDL()
void LLWindowSDL::show()
{
- // *FIX: What to do with SDL?
if (mWindow)
{
SDL_ShowWindow(mWindow);
@@ -1053,7 +717,6 @@ void LLWindowSDL::show()
void LLWindowSDL::hide()
{
- // *FIX: What to do with SDL?
if (mWindow)
{
SDL_HideWindow(mWindow);
@@ -1063,7 +726,6 @@ void LLWindowSDL::hide()
//virtual
void LLWindowSDL::minimize()
{
- // *FIX: What to do with SDL?
if (mWindow)
{
SDL_MinimizeWindow(mWindow);
@@ -1073,14 +735,12 @@ void LLWindowSDL::minimize()
//virtual
void LLWindowSDL::restore()
{
- // *FIX: What to do with SDL?
if (mWindow)
{
SDL_RestoreWindow(mWindow);
}
}
-
// close() destroys all OS-specific code associated with a window.
// Usually called from LLWindowManager::destroyWindow()
void LLWindowSDL::close()
@@ -1106,56 +766,54 @@ bool LLWindowSDL::isValid()
bool LLWindowSDL::getVisible()
{
bool result = false;
-
- // *FIX: This isn't really right...
- // Then what is?
if (mWindow)
{
- if( SDL_GetWindowFlags(mWindow) & SDL_WINDOW_SHOWN ) result = true;
+ Uint32 flags = SDL_GetWindowFlags(mWindow);
+ if (flags & SDL_WINDOW_SHOWN)
+ {
+ result = true;
+ }
}
-
- return(result);
+ return result;
}
bool LLWindowSDL::getMinimized()
{
bool result = false;
-
- if (mWindow/*&& (1 == mIsMinimized)*/)
+ if (mWindow)
{
- if( SDL_GetWindowFlags(mWindow) & SDL_WINDOW_MINIMIZED ) result = true;
+ Uint32 flags = SDL_GetWindowFlags(mWindow);
+ if (flags & SDL_WINDOW_MINIMIZED)
+ {
+ result = true;
+ }
}
-
- mIsMinimized = result;
- return(result);
+ return result;
}
bool LLWindowSDL::getMaximized()
{
bool result = false;
-
if (mWindow)
{
- // TODO
- if( SDL_GetWindowFlags(mWindow) & SDL_WINDOW_MAXIMIZED ) result = true;
- else result = false;
+ Uint32 flags = SDL_GetWindowFlags(mWindow);
+ if (flags & SDL_WINDOW_MAXIMIZED)
+ {
+ result = true;
+ }
}
- return(result);
+ return result;
}
bool LLWindowSDL::maximize()
{
- // TODO
- bool result = false;
-
if (mWindow)
{
SDL_MaximizeWindow(mWindow);
- result = true;
+ return true;
}
-
- return result;
+ return false;
}
bool LLWindowSDL::getFullscreen()
@@ -1165,10 +823,12 @@ bool LLWindowSDL::getFullscreen()
bool LLWindowSDL::getPosition(LLCoordScreen *position)
{
- // *FIX: can anything be done with this?
- position->mX = 0;
- position->mY = 0;
- return true;
+ if (mWindow)
+ {
+ SDL_GetWindowPosition(mWindow, &position->mX, &position->mY);
+ return true;
+ }
+ return false;
}
bool LLWindowSDL::getSize(LLCoordScreen *size)
@@ -1203,17 +863,13 @@ bool LLWindowSDL::getSize(LLCoordWindow *size)
bool LLWindowSDL::setPosition(const LLCoordScreen position)
{
- bool result = false;
-
- if(mWindow)
+ if (mWindow)
{
- // *FIX: (?)
- //MacMoveWindow(mWindow, position.mX, position.mY, false);
SDL_SetWindowPosition(mWindow, position.mX, position.mY);
- result = true;
+ return true;
}
- return result;
+ return false;
}
template< typename T > bool setSizeImpl( const T& newSize, SDL_Window *pWin )
@@ -1254,8 +910,9 @@ void LLWindowSDL::swapBuffers()
{
if (mWindow)
{
- SDL_GL_SwapWindow( mWindow );
+ SDL_GL_SwapWindow(mWindow);
}
+ LL_PROFILER_GPU_COLLECT;
}
U32 LLWindowSDL::getFSAASamples()
@@ -1270,28 +927,33 @@ void LLWindowSDL::setFSAASamples(const U32 samples)
F32 LLWindowSDL::getGamma()
{
- return 1/mGamma;
+ return 1.f / mGamma;
}
bool LLWindowSDL::restoreGamma()
{
- //CGDisplayRestoreColorSyncSettings();
- // SDL_SetGamma(1.0f, 1.0f, 1.0f);
- Uint16 ramp;
- SDL_CalculateGammaRamp(1.0f, &ramp);
- SDL_SetWindowGammaRamp(mWindow, &ramp, &ramp, &ramp);
+ if (mWindow)
+ {
+ Uint16 ramp[256];
+ SDL_CalculateGammaRamp(1.f, ramp);
+ SDL_SetWindowGammaRamp(mWindow, ramp, ramp, ramp);
+ }
return true;
}
bool LLWindowSDL::setGamma(const F32 gamma)
{
- mGamma = gamma;
- if (mGamma == 0) mGamma = 0.1f;
- mGamma = 1/mGamma;
- // SDL_SetGamma(mGamma, mGamma, mGamma);
- Uint16 ramp;
- SDL_CalculateGammaRamp(mGamma, &ramp);
- SDL_SetWindowGammaRamp(mWindow, &ramp, &ramp, &ramp);
+ if (mWindow)
+ {
+ Uint16 ramp[256];
+
+ mGamma = gamma;
+ if (mGamma == 0) mGamma = 0.1f;
+ mGamma = 1.f / mGamma;
+
+ SDL_CalculateGammaRamp(mGamma, ramp);
+ SDL_SetWindowGammaRamp(mWindow, ramp, ramp, ramp);
+ }
return true;
}
@@ -1300,10 +962,8 @@ bool LLWindowSDL::isCursorHidden()
return mCursorHidden;
}
-
-
// Constrains the mouse to the window.
-void LLWindowSDL::setMouseClipping( bool b )
+void LLWindowSDL::setMouseClipping(bool b)
{
//SDL_WM_GrabInput(b ? SDL_GRAB_ON : SDL_GRAB_OFF);
}
@@ -1313,18 +973,10 @@ void LLWindowSDL::setMinSize(U32 min_width, U32 min_height, bool enforce_immedia
{
LLWindow::setMinSize(min_width, min_height, enforce_immediately);
-#if LL_X11
- // Set the minimum size limits for X11 window
- // so the window manager doesn't allow resizing below those limits.
- XSizeHints* hints = XAllocSizeHints();
- hints->flags |= PMinSize;
- hints->min_width = mMinWindowWidth;
- hints->min_height = mMinWindowHeight;
-
- XSetWMNormalHints(mSDL_Display, mSDL_XWindowID, hints);
-
- XFree(hints);
-#endif
+ if (mWindow && min_width > 0 && min_height > 0)
+ {
+ SDL_SetWindowMinimumSize(mWindow, mMinWindowWidth, mMinWindowHeight);
+ }
}
bool LLWindowSDL::setCursorPosition(const LLCoordWindow position)
@@ -1359,7 +1011,6 @@ bool LLWindowSDL::getCursorPosition(LLCoordWindow *position)
//Point cursor_point;
LLCoordScreen screen_pos;
- //GetMouse(&cursor_point);
int x, y;
SDL_GetMouseState(&x, &y);
@@ -1479,116 +1130,70 @@ void LLWindowSDL::afterDialog()
}
}
-
-#if LL_X11
-// set/reset the XWMHints flag for 'urgency' that usually makes the icon flash
-void LLWindowSDL::x11_set_urgent(bool urgent)
-{
- if (mSDL_Display && !mFullscreen)
- {
- XWMHints *wm_hints;
-
- LL_INFOS() << "X11 hint for urgency, " << urgent << LL_ENDL;
-
- maybe_lock_display();
- wm_hints = XGetWMHints(mSDL_Display, mSDL_XWindowID);
- if (!wm_hints)
- wm_hints = XAllocWMHints();
-
- if (urgent)
- wm_hints->flags |= XUrgencyHint;
- else
- wm_hints->flags &= ~XUrgencyHint;
-
- XSetWMHints(mSDL_Display, mSDL_XWindowID, wm_hints);
- XFree(wm_hints);
- XSync(mSDL_Display, False);
- maybe_unlock_display();
- }
-}
-#endif // LL_X11
-
void LLWindowSDL::flashIcon(F32 seconds)
{
- if (getMinimized())
- {
-#if !LL_X11
- LL_INFOS() << "Stub LLWindowSDL::flashIcon(" << seconds << ")" << LL_ENDL;
-#else
- LL_INFOS() << "X11 LLWindowSDL::flashIcon(" << seconds << ")" << LL_ENDL;
+ LL_INFOS() << "LLWindowSDL::flashIcon(" << seconds << ")" << LL_ENDL;
- F32 remaining_time = mFlashTimer.getRemainingTimeF32();
- if (remaining_time < seconds)
- remaining_time = seconds;
- mFlashTimer.reset();
- mFlashTimer.setTimerExpirySec(remaining_time);
+ F32 remaining_time = mFlashTimer.getRemainingTimeF32();
+ if (remaining_time < seconds)
+ remaining_time = seconds;
+ mFlashTimer.reset();
+ mFlashTimer.setTimerExpirySec(remaining_time);
- x11_set_urgent(true);
- mFlashing = true;
-#endif // LL_X11
- }
+ SDL_FlashWindow(mWindow, SDL_FLASH_UNTIL_FOCUSED);
+ mFlashing = true;
}
bool LLWindowSDL::isClipboardTextAvailable()
{
-#if LL_X11
- return mSDL_Display && XGetSelectionOwner(mSDL_Display, XA_CLIPBOARD) != None;
-#else
- return SDL_HasClipboardText();
-#endif
+ return SDL_HasClipboardText() == SDL_TRUE;
}
bool LLWindowSDL::pasteTextFromClipboard(LLWString &dst)
{
-#if LL_X11
- return getSelectionText(XA_CLIPBOARD, dst);
-#else
- auto data = SDL_GetClipboardText();
- if (data)
+ if (isClipboardTextAvailable())
{
- dst = LLWString(utf8str_to_wstring(data));
- SDL_free(data);
- return true;
+ char* data = SDL_GetClipboardText();
+ if (data)
+ {
+ dst = LLWString(utf8str_to_wstring(data));
+ SDL_free(data);
+ return true;
+ }
}
return false;
-#endif
}
-bool LLWindowSDL::copyTextToClipboard(const LLWString &s)
+bool LLWindowSDL::copyTextToClipboard(const LLWString& text)
{
-#if LL_X11
- return setSelectionText(XA_CLIPBOARD, s);
-#else
- return !SDL_SetClipboardText(wstring_to_utf8str(s).c_str());
-#endif
+ const std::string utf8 = wstring_to_utf8str(text);
+ return SDL_SetClipboardText(utf8.c_str()) == 0; // success == 0
}
bool LLWindowSDL::isPrimaryTextAvailable()
{
-#if LL_X11
- LLWString text;
- return getSelectionText(XA_PRIMARY, text) && !text.empty();
-#else
- return false; // unsupported
-#endif
+ return SDL_HasPrimarySelectionText() == SDL_TRUE;
}
bool LLWindowSDL::pasteTextFromPrimary(LLWString &dst)
{
-#if LL_X11
- return getSelectionText(XA_PRIMARY, dst);
-#else
- return false; // unsupported
-#endif
+ if (isPrimaryTextAvailable())
+ {
+ char* data = SDL_GetPrimarySelectionText();
+ if (data)
+ {
+ dst = LLWString(utf8str_to_wstring(data));
+ SDL_free(data);
+ return true;
+ }
+ }
+ return false;
}
-bool LLWindowSDL::copyTextToPrimary(const LLWString &s)
+bool LLWindowSDL::copyTextToPrimary(const LLWString& text)
{
-#if LL_X11
- return setSelectionText(XA_PRIMARY, s);
-#else
- return false; // unsupported
-#endif
+ const std::string utf8 = wstring_to_utf8str(text);
+ return SDL_SetPrimarySelectionText(utf8.c_str()) == 0; // success == 0
}
LLWindow::LLWindowResolution* LLWindowSDL::getSupportedResolutions(S32 &num_resolutions)
@@ -1693,9 +1298,6 @@ bool LLWindowSDL::convertCoords(LLCoordGL from, LLCoordScreen *to)
return(convertCoords(from, &window_coord) && convertCoords(window_coord, to));
}
-
-
-
void LLWindowSDL::setupFailure(const std::string& text, const std::string& caption, U32 type)
{
destroyContext();
@@ -1730,47 +1332,24 @@ bool LLWindowSDL::SDLReallyCaptureInput(bool capture)
bool newGrab = wantGrab;
-#if LL_X11
if (!mFullscreen) /* only bother if we're windowed anyway */
{
- if (mSDL_Display)
+ int result;
+ if (wantGrab == true)
{
- /* we dirtily mix raw X11 with SDL so that our pointer
- isn't (as often) constrained to the limits of the
- window while grabbed, which feels nicer and
- hopefully eliminates some reported 'sticky pointer'
- problems. We use raw X11 instead of
- SDL_WM_GrabInput() because the latter constrains
- the pointer to the window and also steals all
- *keyboard* input from the window manager, which was
- frustrating users. */
- int result;
- if (wantGrab == true)
- {
- maybe_lock_display();
- result = XGrabPointer(mSDL_Display, mSDL_XWindowID,
- True, 0, GrabModeAsync,
- GrabModeAsync,
- None, None, CurrentTime);
- maybe_unlock_display();
- if (GrabSuccess == result)
- newGrab = true;
- else
- newGrab = false;
- }
+ result = SDL_CaptureMouse(SDL_TRUE);
+ if (0 == result)
+ newGrab = true;
else
- {
newGrab = false;
-
- maybe_lock_display();
- XUngrabPointer(mSDL_Display, CurrentTime);
- // Make sure the ungrab happens RIGHT NOW.
- XSync(mSDL_Display, False);
- maybe_unlock_display();
- }
+ }
+ else
+ {
+ newGrab = false;
+ result = SDL_CaptureMouse(SDL_FALSE);
}
}
-#endif // LL_X11
+
// return boolean success for whether we ended up in the desired state
return capture == newGrab;
}
@@ -1900,7 +1479,7 @@ void check_vm_bloat()
last_rss_size = this_rss_size;
last_vm_size = this_vm_size;
- finally:
+finally:
if (NULL != ptr)
{
free(ptr);
@@ -1936,11 +1515,6 @@ void LLWindowSDL::processMiscNativeEvents()
void LLWindowSDL::gatherInput()
{
- const Uint32 CLICK_THRESHOLD = 300; // milliseconds
- static int leftClick = 0;
- static int rightClick = 0;
- static Uint32 lastLeftDown = 0;
- static Uint32 lastRightDown = 0;
SDL_Event event;
// Handle all outstanding SDL events
@@ -1949,13 +1523,21 @@ void LLWindowSDL::gatherInput()
switch (event.type)
{
case SDL_MOUSEWHEEL:
+ {
if( event.wheel.y != 0 )
+ {
mCallbacks->handleScrollWheel(this, -event.wheel.y);
+ }
+ if (event.wheel.x != 0)
+ {
+ mCallbacks->handleScrollHWheel(this, -event.wheel.x);
+ }
break;
+ }
case SDL_MOUSEMOTION:
{
- LLCoordWindow winCoord(event.button.x, event.button.y);
+ LLCoordWindow winCoord(event.motion.x, event.motion.y);
LLCoordGL openGlCoord;
convertCoords(winCoord, &openGlCoord);
@@ -2034,7 +1616,6 @@ void LLWindowSDL::gatherInput()
case SDL_MOUSEBUTTONDOWN:
{
- bool isDoubleClick = false;
LLCoordWindow winCoord(event.button.x, event.button.y);
LLCoordGL openGlCoord;
convertCoords(winCoord, &openGlCoord);
@@ -2044,58 +1625,25 @@ void LLWindowSDL::gatherInput()
MASK mask = gKeyboard->currentMask(true);
- if (event.button.button == SDL_BUTTON_LEFT) // SDL doesn't manage double clicking...
- {
- Uint32 now = SDL_GetTicks();
- if ((now - lastLeftDown) > CLICK_THRESHOLD)
- leftClick = 1;
- else
- {
- if (++leftClick >= 2)
- {
- leftClick = 0;
- isDoubleClick = true;
- }
- }
- lastLeftDown = now;
- }
- else if (event.button.button == SDL_BUTTON_RIGHT)
- {
- Uint32 now = SDL_GetTicks();
- if ((now - lastRightDown) > CLICK_THRESHOLD)
- rightClick = 1;
- else
- {
- if (++rightClick >= 2)
- {
- rightClick = 0;
- isDoubleClick = true;
- }
- }
- lastRightDown = now;
- }
-
if (event.button.button == SDL_BUTTON_LEFT) // left
{
- if (isDoubleClick)
+ if (event.button.clicks >= 2)
mCallbacks->handleDoubleClick(this, openGlCoord, mask);
else
mCallbacks->handleMouseDown(this, openGlCoord, mask);
}
-
else if (event.button.button == SDL_BUTTON_RIGHT) // right
{
mCallbacks->handleRightMouseDown(this, openGlCoord, mask);
}
-
else if (event.button.button == SDL_BUTTON_MIDDLE) // middle
{
mCallbacks->handleMiddleMouseDown(this, openGlCoord, mask);
}
- else if (event.button.button == 4) // mousewheel up...thanks to X11 for making SDL consider these "buttons".
- mCallbacks->handleScrollWheel(this, -1);
- else if (event.button.button == 5) // mousewheel down...thanks to X11 for making SDL consider these "buttons".
- mCallbacks->handleScrollWheel(this, 1);
+ else
+ {
+ mCallbacks->handleOtherMouseDown(this, openGlCoord, mask, event.button.button);
+ }
break;
}
@@ -2112,99 +1660,64 @@ void LLWindowSDL::gatherInput()
MASK mask = gKeyboard->currentMask(true);
if (event.button.button == SDL_BUTTON_LEFT) // left
- mCallbacks->handleMouseUp(this, openGlCoord, mask);
- else if (event.button.button == SDL_BUTTON_RIGHT) // right
- mCallbacks->handleRightMouseUp(this, openGlCoord, mask);
- else if (event.button.button == SDL_BUTTON_MIDDLE) // middle
- mCallbacks->handleMiddleMouseUp(this, openGlCoord, mask);
- // don't handle mousewheel here...
-
- break;
- }
-
- case SDL_WINDOWEVENT: // *FIX: handle this?
- {
- if( event.window.event == SDL_WINDOWEVENT_RESIZED
- /* || event.window.event == SDL_WINDOWEVENT_SIZE_CHANGED*/ ) // <FS:ND> SDL_WINDOWEVENT_SIZE_CHANGED is followed by SDL_WINDOWEVENT_RESIZED, so handling one shall be enough
{
- LL_INFOS() << "Handling a resize event: " << event.window.data1 << "x" << event.window.data2 << LL_ENDL;
-
- S32 width = llmax(event.window.data1, (S32)mMinWindowWidth);
- S32 height = llmax(event.window.data2, (S32)mMinWindowHeight);
-
- // *FIX: I'm not sure this is necessary!
- // <FS:ND> I think is is not
- // SDL_SetWindowSize(mWindow, width, height);
- //
-
- mCallbacks->handleResize(this, width * getSystemUISize(), height * getSystemUISize());
- }
- else if(event.window.event == SDL_WINDOWEVENT_ENTER)
- {
- LL_INFOS() << "SDL_WINDOWEVENT_ENTER" << LL_ENDL;
- if(!mHaveInputFocus) mCallbacks->handleFocus(this);
- mHaveInputFocus = true;
+ mCallbacks->handleMouseUp(this, openGlCoord, mask);
}
- else if(event.window.event == SDL_WINDOWEVENT_LEAVE)
+ else if (event.button.button == SDL_BUTTON_RIGHT) // right
{
- LL_INFOS() << "SDL_WINDOWEVENT_LEAVE" << LL_ENDL;
- if(mHaveInputFocus) mCallbacks->handleFocusLost(this);
- mHaveInputFocus = false;
+ mCallbacks->handleRightMouseUp(this, openGlCoord, mask);
}
- else if( event.window.event == SDL_WINDOWEVENT_FOCUS_GAINED ) // <FS:ND> What about SDL_WINDOWEVENT_ENTER (mouse focus)
+ else if (event.button.button == SDL_BUTTON_MIDDLE) // middle
{
- // We have to do our own state massaging because SDL
- // can send us two unfocus events in a row for example,
- // which confuses the focus code [SL-24071].
- mHaveInputFocus = true;
-
- mCallbacks->handleFocus(this);
+ mCallbacks->handleMiddleMouseUp(this, openGlCoord, mask);
}
- else if( event.window.event == SDL_WINDOWEVENT_FOCUS_LOST ) // <FS:ND> What about SDL_WINDOWEVENT_LEAVE (mouse focus)
+ else
{
- // We have to do our own state massaging because SDL
- // can send us two unfocus events in a row for example,
- // which confuses the focus code [SL-24071].
- mHaveInputFocus = false;
-
- mCallbacks->handleFocusLost(this);
+ mCallbacks->handleOtherMouseUp(this, openGlCoord, mask, event.button.button);
}
- /*
- Bug : the app remains inactive when maximized ..
+ break;
+ }
- else if(event.window.event == SDL_WINDOWEVENT_MINIMIZED)
- {
- LL_INFOS() << "SDL_WINDOWEVENT_MINIMIZED" << LL_ENDL;
- if(!mIsMinimized) mCallbacks->handleActivate(this,false);
- mIsMinimized = true;
- }
- else if(event.window.event == SDL_WINDOWEVENT_MAXIMIZED)
- {
- LL_INFOS() << "SDL_WINDOWEVENT_MAXIMIZED" << LL_ENDL;
- if(mIsMinimized) mCallbacks->handleActivate(this,true);
- mIsMinimized = false;
- }
- */
- else if (event.window.event == SDL_WINDOWEVENT_EXPOSED)
+ case SDL_WINDOWEVENT:
+ {
+ switch(event.window.event)
{
- int w, h;
- SDL_GL_GetDrawableSize(mWindow, &w, &h);
+ //case SDL_WINDOWEVENT_SIZE_CHANGED: <FS:ND> SDL_WINDOWEVENT_SIZE_CHANGED is followed by SDL_WINDOWEVENT_RESIZED, so handling one shall be enough
+ case SDL_WINDOWEVENT_RESIZED:
+ {
+ LL_INFOS() << "Handling a resize event: " << event.window.data1 << "x" << event.window.data2 << LL_ENDL;
+ S32 width = llmax(event.window.data1, (S32)mMinWindowWidth);
+ S32 height = llmax(event.window.data2, (S32)mMinWindowHeight);
- mCallbacks->handlePaint(this, 0, 0, w, h);
- }
- else if( event.window.event == SDL_WINDOWEVENT_MINIMIZED ||
- event.window.event == SDL_WINDOWEVENT_MAXIMIZED ||
- event.window.event == SDL_WINDOWEVENT_RESTORED ||
- event.window.event == SDL_WINDOWEVENT_EXPOSED ||
- event.window.event == SDL_WINDOWEVENT_SHOWN )
- {
- mIsMinimized = (event.window.event == SDL_WINDOWEVENT_MINIMIZED);
+ mCallbacks->handleResize(this, width * getSystemUISize(), height * getSystemUISize());
+ break;
+ }
+ case SDL_WINDOWEVENT_LEAVE:
+ mCallbacks->handleMouseLeave(this);
+ break;
+ case SDL_WINDOWEVENT_FOCUS_GAINED:
+ mCallbacks->handleFocus(this);
+ break;
+ case SDL_WINDOWEVENT_FOCUS_LOST:
+ mCallbacks->handleFocusLost(this);
+ break;
+ case SDL_WINDOWEVENT_EXPOSED:
+ case SDL_WINDOWEVENT_SHOWN:
+ case SDL_WINDOWEVENT_HIDDEN:
+ case SDL_WINDOWEVENT_MINIMIZED:
+ case SDL_WINDOWEVENT_MAXIMIZED:
+ case SDL_WINDOWEVENT_RESTORED:
+ {
+ Uint32 flags = SDL_GetWindowFlags(mWindow);
+ bool minimized = (flags & SDL_WINDOW_MINIMIZED);
+ bool hidden = (flags & SDL_WINDOW_HIDDEN);
- mCallbacks->handleActivate(this, !mIsMinimized);
- LL_INFOS() << "SDL deiconification state switched to " << mIsMinimized << LL_ENDL;
+ mCallbacks->handleActivate(this, !minimized || !hidden);
+ LL_INFOS() << "SDL deiconification state switched to " << minimized << LL_ENDL;
+ break;
+ }
}
-
break;
}
case SDL_QUIT:
@@ -2223,20 +1736,18 @@ void LLWindowSDL::gatherInput()
updateCursor();
-#if LL_X11
// This is a good time to stop flashing the icon if our mFlashTimer has
// expired.
if (mFlashing && mFlashTimer.hasExpired())
{
- x11_set_urgent(false);
+ SDL_FlashWindow(mWindow, SDL_FLASH_CANCEL);
mFlashing = false;
}
-#endif // LL_X11
}
static SDL_Cursor *makeSDLCursorFromBMP(const char *filename, int hotx, int hoty)
{
- SDL_Cursor *sdlcursor = NULL;
+ SDL_Cursor *sdlcursor = nullptr;
SDL_Surface *bmpsurface;
// Load cursor pixel data from BMP file
@@ -2310,12 +1821,6 @@ static SDL_Cursor *makeSDLCursorFromBMP(const char *filename, int hotx, int hoty
void LLWindowSDL::updateCursor()
{
- if (ATIbug) {
- // cursor-updating is very flaky when this bug is
- // present; do nothing.
- return;
- }
-
if (mCurrentCursor != mNextCursor)
{
if (mNextCursor < UI_CURSOR_COUNT)
@@ -2327,10 +1832,13 @@ void LLWindowSDL::updateCursor()
sdlcursor = mSDLCursors[UI_CURSOR_ARROW];
if (sdlcursor)
SDL_SetCursor(sdlcursor);
- } else {
+
+ mCurrentCursor = mNextCursor;
+ }
+ else
+ {
LL_WARNS() << "Tried to set invalid cursor number " << mNextCursor << LL_ENDL;
}
- mCurrentCursor = mNextCursor;
}
}
@@ -2340,24 +1848,24 @@ void LLWindowSDL::initCursors()
// Blank the cursor pointer array for those we may miss.
for (i=0; i<UI_CURSOR_COUNT; ++i)
{
- mSDLCursors[i] = NULL;
+ mSDLCursors[i] = nullptr;
}
// Pre-make an SDL cursor for each of the known cursor types.
// We hardcode the hotspots - to avoid that we'd have to write
// a .cur file loader.
// NOTE: SDL doesn't load RLE-compressed BMP files.
- mSDLCursors[UI_CURSOR_ARROW] = makeSDLCursorFromBMP("llarrow.BMP",0,0);
- mSDLCursors[UI_CURSOR_WAIT] = makeSDLCursorFromBMP("wait.BMP",12,15);
- mSDLCursors[UI_CURSOR_HAND] = makeSDLCursorFromBMP("hand.BMP",7,10);
- mSDLCursors[UI_CURSOR_IBEAM] = makeSDLCursorFromBMP("ibeam.BMP",15,16);
- mSDLCursors[UI_CURSOR_CROSS] = makeSDLCursorFromBMP("cross.BMP",16,14);
- mSDLCursors[UI_CURSOR_SIZENWSE] = makeSDLCursorFromBMP("sizenwse.BMP",14,17);
- mSDLCursors[UI_CURSOR_SIZENESW] = makeSDLCursorFromBMP("sizenesw.BMP",17,17);
- mSDLCursors[UI_CURSOR_SIZEWE] = makeSDLCursorFromBMP("sizewe.BMP",16,14);
- mSDLCursors[UI_CURSOR_SIZENS] = makeSDLCursorFromBMP("sizens.BMP",17,16);
- mSDLCursors[UI_CURSOR_SIZEALL] = makeSDLCursorFromBMP("sizeall.BMP", 17, 17);
- mSDLCursors[UI_CURSOR_NO] = makeSDLCursorFromBMP("llno.BMP",8,8);
- mSDLCursors[UI_CURSOR_WORKING] = makeSDLCursorFromBMP("working.BMP",12,15);
+ mSDLCursors[UI_CURSOR_ARROW] = SDL_CreateSystemCursor(SDL_SYSTEM_CURSOR_ARROW);
+ mSDLCursors[UI_CURSOR_WAIT] = SDL_CreateSystemCursor(SDL_SYSTEM_CURSOR_WAIT);
+ mSDLCursors[UI_CURSOR_HAND] = SDL_CreateSystemCursor(SDL_SYSTEM_CURSOR_HAND);
+ mSDLCursors[UI_CURSOR_IBEAM] = SDL_CreateSystemCursor(SDL_SYSTEM_CURSOR_IBEAM);
+ mSDLCursors[UI_CURSOR_CROSS] = SDL_CreateSystemCursor(SDL_SYSTEM_CURSOR_CROSSHAIR);
+ mSDLCursors[UI_CURSOR_SIZENWSE] = SDL_CreateSystemCursor(SDL_SYSTEM_CURSOR_SIZENWSE);
+ mSDLCursors[UI_CURSOR_SIZENESW] = SDL_CreateSystemCursor(SDL_SYSTEM_CURSOR_SIZENESW);
+ mSDLCursors[UI_CURSOR_SIZEWE] = SDL_CreateSystemCursor(SDL_SYSTEM_CURSOR_SIZEWE);
+ mSDLCursors[UI_CURSOR_SIZENS] = SDL_CreateSystemCursor(SDL_SYSTEM_CURSOR_SIZENS);
+ mSDLCursors[UI_CURSOR_SIZEALL] = SDL_CreateSystemCursor(SDL_SYSTEM_CURSOR_SIZEALL);
+ mSDLCursors[UI_CURSOR_NO] = SDL_CreateSystemCursor(SDL_SYSTEM_CURSOR_NO);
+ mSDLCursors[UI_CURSOR_WORKING] = SDL_CreateSystemCursor(SDL_SYSTEM_CURSOR_WAITARROW);
mSDLCursors[UI_CURSOR_TOOLGRAB] = makeSDLCursorFromBMP("lltoolgrab.BMP",2,13);
mSDLCursors[UI_CURSOR_TOOLLAND] = makeSDLCursorFromBMP("lltoolland.BMP",1,6);
mSDLCursors[UI_CURSOR_TOOLFOCUS] = makeSDLCursorFromBMP("lltoolfocus.BMP",8,5);
@@ -2390,11 +1898,6 @@ void LLWindowSDL::initCursors()
mSDLCursors[UI_CURSOR_TOOLPATHFINDING_PATH_END] = makeSDLCursorFromBMP("lltoolpathfindingpathend.BMP", 16, 16);
mSDLCursors[UI_CURSOR_TOOLPATHFINDING_PATH_END_ADD] = makeSDLCursorFromBMP("lltoolpathfindingpathendadd.BMP", 16, 16);
mSDLCursors[UI_CURSOR_TOOLNO] = makeSDLCursorFromBMP("llno.BMP",8,8);
-
- if (getenv("LL_ATI_MOUSE_CURSOR_BUG") != NULL) {
- LL_INFOS() << "Disabling cursor updating due to LL_ATI_MOUSE_CURSOR_BUG" << LL_ENDL;
- ATIbug = true;
- }
}
void LLWindowSDL::quitCursors()
@@ -2444,7 +1947,7 @@ void LLWindowSDL::hideCursor()
// LL_INFOS() << "hideCursor: hiding" << LL_ENDL;
mCursorHidden = true;
mHideCursorPermanent = true;
- SDL_ShowCursor(0);
+ SDL_ShowCursor(SDL_DISABLE);
}
else
{
@@ -2459,7 +1962,7 @@ void LLWindowSDL::showCursor()
// LL_INFOS() << "showCursor: showing" << LL_ENDL;
mCursorHidden = false;
mHideCursorPermanent = false;
- SDL_ShowCursor(1);
+ SDL_ShowCursor(SDL_ENABLE);
}
else
{
@@ -2598,62 +2101,6 @@ LLSD LLWindowSDL::getNativeKeyData()
}
#endif // LL_DARWIN
-#if LL_LINUX || LL_SOLARIS || __FreeBSD__
-// extracted from spawnWebBrowser for clarity and to eliminate
-// compiler confusion regarding close(int fd) vs. LLWindow::close()
-void exec_cmd(const std::string& cmd, const std::string& arg)
-{
- char* const argv[] = {(char*)cmd.c_str(), (char*)arg.c_str(), NULL};
- fflush(NULL);
- pid_t pid = fork();
- if (pid == 0)
- { // child
- // disconnect from stdin/stdout/stderr, or child will
- // keep our output pipe undesirably alive if it outlives us.
- // close(0);
- // close(1);
- // close(2);
- // <FS:TS> Reopen stdin, stdout, and stderr to /dev/null.
- // It's good practice to always have those file
- // descriptors open to something, lest the exec'd
- // program actually try to use them.
- FILE *result;
- result = freopen("/dev/null","r",stdin);
- if (result == NULL)
- {
- LL_WARNS() << "Error reopening stdin for web browser: "
- << strerror(errno) << LL_ENDL;
- }
- result = freopen("/dev/null","w",stdout);
- if (result == NULL)
- {
- LL_WARNS() << "Error reopening stdout for web browser: "
- << strerror(errno) << LL_ENDL;
- }
- result = freopen("/dev/null","w",stderr);
- if (result == NULL)
- {
- LL_WARNS() << "Error reopening stderr for web browser: "
- << strerror(errno) << LL_ENDL;
- }
- // end ourself by running the command
- execv(cmd.c_str(), argv); /* Flawfinder: ignore */
- // if execv returns at all, there was a problem.
- LL_WARNS() << "execv failure when trying to start " << cmd << LL_ENDL;
- _exit(1); // _exit because we don't want atexit() clean-up!
- } else {
- if (pid > 0)
- {
- // parent - wait for child to die
- int childExitStatus;
- waitpid(pid, &childExitStatus, 0);
- } else {
- LL_WARNS() << "fork failure." << LL_ENDL;
- }
- }
-}
-#endif
-
// Open a URL with the user's default web browser.
// Must begin with protocol identifier.
void LLWindowSDL::spawnWebBrowser(const std::string& escaped_url, bool async)
@@ -2677,75 +2124,14 @@ void LLWindowSDL::spawnWebBrowser(const std::string& escaped_url, bool async)
LL_INFOS() << "spawn_web_browser: " << escaped_url << LL_ENDL;
-#if LL_LINUX || __FreeBSD__
-# if LL_X11
- if (mSDL_Display)
+ if (SDL_OpenURL(escaped_url.c_str()) != 0)
{
- maybe_lock_display();
- // Just in case - before forking.
- XSync(mSDL_Display, False);
- maybe_unlock_display();
+ LL_WARNS() << "spawn_web_browser failed with error: " << SDL_GetError() << LL_ENDL;
}
-# endif // LL_X11
-
- std::string cmd, arg;
-#ifdef LL_USESYSTEMLIBS
- cmd = gDirUtilp->getExecutableDir();
-#else
- cmd = gDirUtilp->getAppRODataDir();
- cmd += gDirUtilp->getDirDelimiter();
- cmd += "etc";
-#endif
- cmd += gDirUtilp->getDirDelimiter();
- cmd += "launch_url.sh";
- arg = escaped_url;
- exec_cmd(cmd, arg);
-
-#elif LL_DARWIN
-
- S32 result = 0;
- CFURLRef urlRef = NULL;
-
- LL_INFOS() << "Opening URL " << escaped_url << LL_ENDL;
-
- CFStringRef stringRef = CFStringCreateWithCString(NULL, escaped_url.c_str(), kCFStringEncodingUTF8);
- if (stringRef)
- {
- // This will succeed if the string is a full URL, including the http://
- // Note that URLs specified this way need to be properly percent-escaped.
- urlRef = CFURLCreateWithString(NULL, stringRef, NULL);
-
- // Don't use CRURLCreateWithFileSystemPath -- only want valid URLs
-
- CFRelease(stringRef);
- }
-
- if (urlRef)
- {
- result = LSOpenCFURLRef(urlRef, NULL);
-
- if (result != noErr)
- {
- LL_INFOS() << "Error " << result << " on open." << LL_ENDL;
- }
-
- CFRelease(urlRef);
- }
- else
- {
- LL_INFOS() << "Error: couldn't create URL." << LL_ENDL;
- }
-
-#endif // LL_LINUX
LL_INFOS() << "spawn_web_browser returning." << LL_ENDL;
}
-void LLWindowSDL::openFile(const std::string& file_name)
-{
- spawnWebBrowser("file://"+file_name,true);
-}
-
void *LLWindowSDL::getPlatformWindow()
{
return NULL;
@@ -2756,15 +2142,10 @@ void LLWindowSDL::bringToFront()
// This is currently used when we are 'launched' to a specific
// map position externally.
LL_INFOS() << "bringToFront" << LL_ENDL;
-#if LL_X11
- if (mSDL_Display && !mFullscreen)
+ if (mWindow && !mFullscreen)
{
- maybe_lock_display();
- XRaiseWindow(mSDL_Display, mSDL_XWindowID);
- XSync(mSDL_Display, False);
- maybe_unlock_display();
+ SDL_RaiseWindow(mWindow);
}
-#endif // LL_X11
}
//static
@@ -2868,54 +2249,6 @@ std::vector<std::string> LLWindowSDL::getDynamicFallbackFontList()
return rtns;
}
-
-void* LLWindowSDL::createSharedContext()
-{
- auto *pContext = SDL_GL_CreateContext(mWindow);
- if ( pContext)
- {
- SDL_GL_SetSwapInterval(0);
- SDL_GL_MakeCurrent(mWindow, mContext);
-
- LLCoordScreen size;
- if (getSize(&size))
- setSize(size);
-
- LL_DEBUGS() << "Creating shared OpenGL context successful!" << LL_ENDL;
-
- return (void*)pContext;
- }
-
- LL_WARNS() << "Creating shared OpenGL context failed!" << LL_ENDL;
-
- return nullptr;
-}
-
-void LLWindowSDL::makeContextCurrent(void* contextPtr)
-{
- LL_PROFILER_GPU_CONTEXT;
- SDL_GL_MakeCurrent( mWindow, contextPtr );
-}
-
-void LLWindowSDL::destroySharedContext(void* contextPtr)
-{
- SDL_GL_DeleteContext( contextPtr );
-}
-
-void LLWindowSDL::toggleVSync(bool enable_vsync)
-{
- if( !enable_vsync)
- {
- SDL_GL_SetSwapInterval(0);
- SDL_SetHintWithPriority(SDL_HINT_RENDER_VSYNC,"0",SDL_HINT_OVERRIDE);
- }
- else
- {
- SDL_GL_SetSwapInterval(1);
- SDL_SetHintWithPriority(SDL_HINT_RENDER_VSYNC,"1",SDL_HINT_OVERRIDE);
- }
-}
-
void LLWindowSDL::setLanguageTextInput(const LLCoordGL& position)
{
LLCoordWindow win_pos;
diff --git a/indra/llwindow/llwindowsdl.h b/indra/llwindow/llwindowsdl.h
index 3ed2811572..144216f658 100644
--- a/indra/llwindow/llwindowsdl.h
+++ b/indra/llwindow/llwindowsdl.h
@@ -84,7 +84,7 @@ public:
bool setSizeImpl(LLCoordWindow size) override;
- bool switchContext(bool fullscreen, const LLCoordScreen &size, bool disable_vsync,
+ bool switchContext(bool fullscreen, const LLCoordScreen &size, bool enable_vsync,
const LLCoordScreen *const posp = NULL) override;
bool setCursorPosition(LLCoordWindow position) override;
@@ -177,13 +177,11 @@ public:
void *getPlatformWindow() override;
void bringToFront() override;
-
+
void setLanguageTextInput(const LLCoordGL& pos) override;
void spawnWebBrowser(const std::string &escaped_url, bool async) override;
- void openFile(const std::string &file_name);
-
void setTitle(const std::string title) override;
static std::vector<std::string> getDynamicFallbackFontList();
@@ -221,8 +219,8 @@ public:
protected:
LLWindowSDL(LLWindowCallbacks *callbacks,
- const std::string &title, int x, int y, int width, int height, U32 flags,
- bool fullscreen, bool clearBg, bool disable_vsync, bool use_gl,
+ const std::string &title, const std::string& name, int x, int y, int width, int height, U32 flags,
+ bool fullscreen, bool clearBg, bool enable_vsync, bool use_gl,
bool ignore_pixel_depth, U32 fsaa_samples);
~LLWindowSDL();
@@ -251,14 +249,12 @@ protected:
//
// create or re-create the GL context/window. Called from the constructor and switchContext().
- bool createContext(int x, int y, int width, int height, int bits, bool fullscreen, bool disable_vsync);
+ bool createContext(int x, int y, int width, int height, int bits, bool fullscreen, bool enable_vsync);
void destroyContext();
void setupFailure(const std::string &text, const std::string &caption, U32 type);
- void fixWindowSize(void);
-
U32 SDLCheckGrabbyKeys(U32 keysym, bool gain);
bool SDLReallyCaptureInput(bool capture);
@@ -285,50 +281,19 @@ protected:
int mHaveInputFocus; /* 0=no, 1=yes, else unknown */
int mIsMinimized; /* 0=no, 1=yes, else unknown */
- int mIsActive; /* 0=no, 1=yes, else unknown */
friend class LLWindowManager;
private:
-#if LL_X11
-
- void x11_set_urgent(bool urgent);
-
bool mFlashing;
LLTimer mFlashTimer;
-#endif //LL_X11
-
U32 mKeyVirtualKey;
U32 mKeyModifiers;
std::string mInputType;
-public:
-#if LL_X11
-
- static Display *getSDLDisplay();
-
- LLWString const &getPrimaryText() const { return mPrimaryClipboard; }
-
- LLWString const &getSecondaryText() const { return mSecondaryClipboard; }
-
- void clearPrimaryText() { mPrimaryClipboard.clear(); }
-
- void clearSecondaryText() { mSecondaryClipboard.clear(); }
private:
- void initialiseX11Clipboard();
-
- bool getSelectionText(Atom selection, LLWString &text);
-
- bool getSelectionText(Atom selection, Atom type, LLWString &text);
-
- bool setSelectionText(Atom selection, const LLWString &text);
-#endif
-
void tryFindFullscreenSize(int &aWidth, int &aHeight);
-
- LLWString mPrimaryClipboard;
- LLWString mSecondaryClipboard;
};
class LLSplashScreenSDL : public LLSplashScreen
diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp
index 249aebb335..d237fdb334 100644
--- a/indra/llwindow/llwindowwin32.cpp
+++ b/indra/llwindow/llwindowwin32.cpp
@@ -4682,9 +4682,18 @@ void LLWindowWin32::LLWindowWin32Thread::checkDXMem()
if (phys_mb > 0)
{
- // Intel uses 'shared' vram, cap it to 25% of total memory
- // Todo: consider caping all adapters at least to 50% ram
- budget_mb = llmin(budget_mb, (UINT64)(phys_mb * 0.25));
+ if (gGLManager.mIsIntel)
+ {
+ // Intel uses 'shared' vram, cap it to 25% of total memory
+ // Todo: consider a way of detecting integrated Intel and AMD
+ budget_mb = llmin(budget_mb, (UINT64)(phys_mb * 0.25));
+ }
+ else
+ {
+ // More budget is generally better, but the way viewer
+ // utilizes even dedicated VRAM leaves a footprint in RAM
+ budget_mb = llmin(budget_mb, (UINT64)(phys_mb * 0.75));
+ }
}
else
{
diff --git a/indra/llxml/llxmlnode.h b/indra/llxml/llxmlnode.h
index 09c7c4fdad..769cf97ba2 100644
--- a/indra/llxml/llxmlnode.h
+++ b/indra/llxml/llxmlnode.h
@@ -30,7 +30,7 @@
#ifndef XML_STATIC
#define XML_STATIC
#endif
-#ifdef LL_USESYSTEMLIBS
+#if 1
#include <expat.h>
#else
#include "expat/expat.h"
diff --git a/indra/llxml/llxmlparser.h b/indra/llxml/llxmlparser.h
index 0f64def6df..9c25727e54 100644
--- a/indra/llxml/llxmlparser.h
+++ b/indra/llxml/llxmlparser.h
@@ -30,7 +30,7 @@
#ifndef XML_STATIC
#define XML_STATIC
#endif
-#ifdef LL_USESYSTEMLIBS
+#if 1
#include <expat.h>
#else
#include "expat/expat.h"
diff --git a/indra/media_plugins/cef/CMakeLists.txt b/indra/media_plugins/cef/CMakeLists.txt
index bf1e990450..9142a4516a 100644
--- a/indra/media_plugins/cef/CMakeLists.txt
+++ b/indra/media_plugins/cef/CMakeLists.txt
@@ -112,6 +112,7 @@ if (DARWIN)
add_custom_command(TARGET media_plugin_cef
POST_BUILD COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change "@executable_path/Chromium Embedded Framework"
"@executable_path/../../../../Frameworks/Chromium Embedded Framework.framework/Chromium Embedded Framework"
+ -change "/opt/local/lib/libopenjp2.7.dylib" "@loader_path/../../Frameworks/libopenjp2.7.dylib"
-change "/opt/local/lib/libpng16.16.dylib" "@loader_path/../../Frameworks/libpng16.16.dylib"
-change "/opt/local/lib/libjpeg.8.dylib" "@loader_path/../../Frameworks/libjpeg.8.dylib"
-change "/opt/local/lib/libfreetype.6.dylib" "@loader_path/../../Frameworks/libfreetype.6.dylib"
@@ -140,15 +141,15 @@ if (INSTALL)
if (DARWIN)
set(_LIB llplugin)
install(
- DIRECTORY "${AUTOBUILD_INSTALL_DIR}/lib/release/Chromium Embedded Framework.framework"
+ DIRECTORY "${ARCH_PREBUILT_DIRS_RELEASE}/Chromium Embedded Framework.framework"
DESTINATION ../Frameworks
)
install(
DIRECTORY
- "${AUTOBUILD_INSTALL_DIR}/lib/release/DullahanHelper.app"
- "${AUTOBUILD_INSTALL_DIR}/lib/release/DullahanHelper (GPU).app"
- "${AUTOBUILD_INSTALL_DIR}/lib/release/DullahanHelper (Plugin).app"
- "${AUTOBUILD_INSTALL_DIR}/lib/release/DullahanHelper (Renderer).app"
+ "${ARCH_PREBUILT_DIRS_RELEASE}/DullahanHelper.app"
+ "${ARCH_PREBUILT_DIRS_RELEASE}/DullahanHelper (GPU).app"
+ "${ARCH_PREBUILT_DIRS_RELEASE}/DullahanHelper (Plugin).app"
+ "${ARCH_PREBUILT_DIRS_RELEASE}/DullahanHelper (Renderer).app"
DESTINATION SLPlugin.app/Contents/Frameworks
)
elseif (LINUX)
@@ -178,7 +179,8 @@ if (INSTALL)
endif (${LINUX_DISTRO} MATCHES arch)
install(
FILES
- ${AUTOBUILD_INSTALL_DIR}/lib/release/libcef.so
+ ${ARCH_PREBUILT_DIRS_RELEASE}/libcef.so
+ ${ARCH_PREBUILT_DIRS_RELEASE}/libvk_swiftshader.so
${AUTOBUILD_INSTALL_DIR}/bin/release/snapshot_blob.bin
${AUTOBUILD_INSTALL_DIR}/bin/release/v8_context_snapshot.bin
${AUTOBUILD_INSTALL_DIR}/resources/chrome_100_percent.pak
diff --git a/indra/media_plugins/libvlc/CMakeLists.txt b/indra/media_plugins/libvlc/CMakeLists.txt
index 547733496f..e99f25a1df 100644
--- a/indra/media_plugins/libvlc/CMakeLists.txt
+++ b/indra/media_plugins/libvlc/CMakeLists.txt
@@ -49,6 +49,7 @@ if (DARWIN)
add_custom_command(TARGET ${PROJECT_NAME}
POST_BUILD COMMAND ${CMAKE_INSTALL_NAME_TOOL}
+ -change "/opt/local/lib/libopenjp2.7.dylib" "@loader_path/../../Frameworks/libopenjp2.7.dylib"
-change "/opt/local/lib/libpng16.16.dylib" "@loader_path/../../Frameworks/libpng16.16.dylib"
-change "/opt/local/lib/libjpeg.8.dylib" "@loader_path/../../Frameworks/libjpeg.8.dylib"
-change "/opt/local/lib/libfreetype.6.dylib" "@loader_path/../../Frameworks/libfreetype.6.dylib"
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 681b7a050e..53cf2a1086 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -9,15 +9,11 @@ include(Linking)
include(Boost)
include(bugsplat)
-if (NOT USESYSTEMLIBS)
-include(BuildPackagesInfo)
-endif ()
+#include(BuildPackagesInfo)
include(BuildVersion)
include(CMakeCopyIfDifferent)
include(CubemapToEquirectangularJS)
-if (NOT USESYSTEMLIBS)
-include(DBusGlib)
-endif ()
+#include(DBusGlib)
include(DragDrop)
include(EXPAT)
include(Hunspell)
@@ -45,18 +41,16 @@ include(ThreeJS)
include(Tracy)
include(UI)
include(ViewerMiscLibs)
-if (NOT USESYSTEMLIBS)
-include(ViewerManager)
-endif ()
+#include(ViewerManager)
include(VisualLeakDetector)
-include(VulkanGltf)
+#include(VulkanGltf)
include(ZLIBNG)
include(LLPrimitive)
if (ENABLE_MEDIA_PLUGINS)
include(LibVLCPlugin)
include(CEFPlugin)
-endif (ENABLE_MEDIA_PLUGINS)
+endif ()
if (NOT HAVOK_TPV)
# When using HAVOK_TPV, the library is precompiled, so no need for this
@@ -103,6 +97,7 @@ set(viewer_SOURCE_FILES
llagentwearables.cpp
llanimstatelabels.cpp
llappcorehttp.cpp
+ llappearancelistener.cpp
llappearancemgr.cpp
llappviewer.cpp
llappviewerlistener.cpp
@@ -211,6 +206,7 @@ set(viewer_SOURCE_FILES
llfloatercamera.cpp
llfloatercamerapresets.cpp
llfloaterchangeitemthumbnail.cpp
+ llfloaterchatmentionpicker.cpp
llfloaterchatvoicevolume.cpp
llfloaterclassified.cpp
llfloatercolorpicker.cpp
@@ -375,6 +371,7 @@ set(viewer_SOURCE_FILES
llinventorygallerymenu.cpp
llinventoryicon.cpp
llinventoryitemslist.cpp
+ llinventorylistener.cpp
llinventorylistitem.cpp
llinventorymodel.cpp
llinventorymodelbackgroundfetch.cpp
@@ -743,11 +740,16 @@ set(viewer_SOURCE_FILES
llxmlrpctransaction.cpp
noise.cpp
pipeline.cpp
+ rlvactions.cpp
+ rlvcommon.cpp
+ rlvfloaters.cpp
+ rlvhelper.cpp
+ rlvhandler.cpp
)
if (CMAKE_SYSTEM_NAME MATCHES FreeBSD)
list(REMOVE_ITEM viewer_SOURCE_FILES llvoicewebrtc.cpp)
-endif (CMAKE_SYSTEM_NAME MATCHES FreeBSD)
+endif ()
set(VIEWER_BINARY_NAME "secondlife-bin" CACHE STRING
"The name of the viewer executable to create.")
@@ -779,6 +781,7 @@ set(viewer_HEADER_FILES
llanimstatelabels.h
llappcorehttp.h
llappearance.h
+ llappearancelistener.h
llappearancemgr.h
llappviewer.h
llappviewerlistener.h
@@ -886,6 +889,7 @@ set(viewer_HEADER_FILES
llfloaterbuyland.h
llfloatercamerapresets.h
llfloaterchangeitemthumbnail.h
+ llfloaterchatmentionpicker.h
llfloatercamera.h
llfloaterchatvoicevolume.h
llfloaterclassified.h
@@ -1052,6 +1056,7 @@ set(viewer_HEADER_FILES
llinventorygallerymenu.h
llinventoryicon.h
llinventoryitemslist.h
+ llinventorylistener.h
llinventorylistitem.h
llinventorymodel.h
llinventorymodelbackgroundfetch.h
@@ -1412,6 +1417,12 @@ set(viewer_HEADER_FILES
llxmlrpctransaction.h
noise.h
pipeline.h
+ rlvdefines.h
+ rlvactions.h
+ rlvcommon.h
+ rlvfloaters.h
+ rlvhelper.h
+ rlvhandler.h
roles_constants.h
VertexCache.h
VorbisFramework.h
@@ -1465,7 +1476,7 @@ if (DARWIN)
# pointer variables. As of 2019-06-26, the BugsplatMac version we're using
# does not yet do so in its own header files. This -W flag prevents fatal
# warnings.
- COMPILE_FLAGS "-fmodules -fcxx-modules -Wno-nullability-completeness"
+ COMPILE_FLAGS "-fmodules -fcxx-modules -Wno-nullability-completeness -std=c++17"
)
# Add resource files to the project.
@@ -1485,18 +1496,19 @@ if (DARWIN)
list(APPEND viewer_SOURCE_FILES ${viewer_RESOURCE_FILES})
endif (DARWIN)
-if (USESYSTEMLIBS AND NOT DARWIN)
+if (NOT DARWIN)
LIST(APPEND viewer_SOURCE_FILES llappviewerlinux.cpp)
set_source_files_properties(
llappviewerlinux.cpp
PROPERTIES
COMPILE_DEFINITIONS "${VIEWER_CHANNEL_VERSION_DEFINES}"
)
- if (NOT CMAKE_CXX_COMPILER_ID MATCHES "AppleClang")
+ #LIST(APPEND viewer_SOURCE_FILES llappviewerlinux_api_dbus.cpp)
+ if (NOT CMAKE_CXX_COMPILER_ID MATCHES AppleClang)
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--as-needed")
endif ()
-endif (USESYSTEMLIBS AND NOT DARWIN)
+endif ()
if (WINDOWS)
@@ -1678,15 +1690,11 @@ set(viewer_APPSETTINGS_FILES
app_settings/viewerart.xml
${CMAKE_SOURCE_DIR}/../etc/message.xml
${CMAKE_SOURCE_DIR}/../scripts/messages/message_template.msg
- packages-info.txt
+ #packages-info.txt
featuretable.txt
featuretable_mac.txt
)
-if (USESYSTEMLIBS)
- list(REMOVE_ITEM viewer_APPSETTINGS_FILES packages-info.txt)
-endif ()
-
source_group("App Settings" FILES ${viewer_APPSETTINGS_FILES})
set_source_files_properties(${viewer_APPSETTINGS_FILES}
@@ -1760,6 +1768,8 @@ if (WINDOWS)
)
target_compile_options(${VIEWER_BINARY_NAME} PRIVATE /bigobj)
+ if (FALSE)
+
# If adding a file to viewer_manifest.py in the WindowsManifest.construct() method, be sure to add the dependency
# here.
# *NOTE:Mani - This is a crappy hack to have important dependencies for the viewer_manifest copy action
@@ -1887,6 +1897,8 @@ if (WINDOWS)
add_dependencies(${VIEWER_BINARY_NAME} copy_win_scripts)
endif (EXISTS ${CMAKE_SOURCE_DIR}/copy_win_scripts)
+ endif (FALSE)
+
add_dependencies(${VIEWER_BINARY_NAME} SLPlugin)
# sets the 'working directory' for debugging from visual studio.
@@ -2017,14 +2029,14 @@ target_link_libraries(${VIEWER_BINARY_NAME}
if (NOT CMAKE_SYSTEM_NAME MATCHES FreeBSD)
target_link_libraries(${VIEWER_BINARY_NAME} llwebrtc )
-endif (NOT CMAKE_SYSTEM_NAME MATCHES FreeBSD)
+endif ()
if (ENABLE_MEDIA_PLUGINS)
target_link_libraries(${VIEWER_BINARY_NAME} ll::libvlc )
if (DARWIN OR LINUX)
target_link_libraries(${VIEWER_BINARY_NAME} ll::cef )
- endif (DARWIN OR LINUX)
-endif (ENABLE_MEDIA_PLUGINS)
+ endif ()
+endif ()
if( TARGET ll::intel_memops )
target_link_libraries(${VIEWER_BINARY_NAME} ll::intel_memops )
@@ -2039,13 +2051,13 @@ set(ARTWORK_DIR ${CMAKE_CURRENT_SOURCE_DIR} CACHE PATH
set_source_files_properties(llinventorygallery.cpp PROPERTIES COMPILE_FLAGS
-Wno-unused-but-set-variable)
-if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+if (CMAKE_CXX_COMPILER_ID MATCHES Clang)
set_source_files_properties(llappviewerlinux.cpp PROPERTIES
COMPILE_FLAGS -Wno-dangling-gsl
)
set_source_files_properties(llviewerstats.cpp PROPERTIES
COMPILE_FLAGS -Wno-unused-value)
-elseif (CMAKE_CXX_COMPILER_ID MATCHES "GNU")
+elseif (CMAKE_CXX_COMPILER_ID MATCHES GNU)
set_source_files_properties(
llface.cpp
llhttpretrypolicy.cpp
@@ -2115,100 +2127,86 @@ foreach(elem ${country_codes})
configure_file(${emoji_mapping_src_file} ${emoji_mapping_dst_file} COPYONLY)
endforeach()
-if (PACKAGE AND USESYSTEMLIBS)
+if (PACKAGE)
set(CPACK_PACKAGE_NAME ${VIEWER_BINARY_NAME}
CACHE STRING "Viewer binary name.")
set(CPACK_PACKAGE_VERSION ${VIEWER_VERSION_MAJOR}.${VIEWER_VERSION_MINOR}.${VIEWER_VERSION_PATCH}.${VIEWER_VERSION_REVISION}
CACHE STRING "Viewer major.minor.patch.revision versions.")
- set(VIEWER_PACKAGE_COMMENT
- "A fork of the Second Life viewer"
- )
- set(VIEWER_PACKAGE_DESCRIPTION
- "An entrance to virtual empires in only megabytes. A shelter for the metaverse refugees, especially those from less supported operating systems."
- )
- set(VIEWER_PACKAGE_DOMAIN_NAME
- ${VIEWER_BINARY_NAME}.net
- )
-endif (PACKAGE AND USESYSTEMLIBS)
+ set(VIEWER_PACKAGE_COMMENT "A fork of the Second Life viewer")
+ set(VIEWER_PACKAGE_DESCRIPTION "An entrance to virtual empires in only megabytes. A shelter for the metaverse refugees, especially those from less supported operating systems.")
+ set(VIEWER_PACKAGE_DOMAIN_NAME ${VIEWER_BINARY_NAME}.net)
+endif ()
if (LINUX)
- if (USESYSTEMLIBS)
- add_custom_command(
- TARGET ${VIEWER_BINARY_NAME} POST_BUILD
- COMMAND ${CMAKE_SYSROOT}/usr/bin/sed
- ARGS -e '/Linden Lab.*/d' ${CMAKE_HOME_DIRECTORY}/../doc/contributions.txt > ${CMAKE_CURRENT_BINARY_DIR}/contributions.txt
- COMMAND ${CMAKE_SYSROOT}/usr/bin/sed
- ARGS -i ${CMAKE_CURRENT_BINARY_DIR}/contributions.txt -e '/following residents.*/d' ${CMAKE_CURRENT_BINARY_DIR}/contributions.txt
- COMMAND ${CMAKE_SYSROOT}/usr/bin/sed
- ARGS -i ${CMAKE_CURRENT_BINARY_DIR}/contributions.txt -e '/along with.*/d' ${CMAKE_CURRENT_BINARY_DIR}/contributions.txt
- COMMAND ${CMAKE_SYSROOT}/usr/bin/sed
- ARGS -i ${CMAKE_CURRENT_BINARY_DIR}/contributions.txt -e '/^$$/d' ${CMAKE_CURRENT_BINARY_DIR}/contributions.txt
- COMMAND ${CMAKE_SYSROOT}/usr/bin/sed
- ARGS -i ${CMAKE_CURRENT_BINARY_DIR}/contributions.txt -e '/\t.*/d' ${CMAKE_CURRENT_BINARY_DIR}/contributions.txt
- COMMAND ${CMAKE_SYSROOT}/usr/bin/sed
- ARGS -i ${CMAKE_CURRENT_BINARY_DIR}/contributions.txt -e '/^ .*/d' ${CMAKE_CURRENT_BINARY_DIR}/contributions.txt
- COMMAND sort
- ARGS -R contributions.txt -o ${CMAKE_CURRENT_BINARY_DIR}/contributions.txt
- COMMAND paste
- ARGS -s -d, ${CMAKE_CURRENT_BINARY_DIR}/contributions.txt > ${CMAKE_CURRENT_BINARY_DIR}/contributors.txt
- COMMAND ${CMAKE_SYSROOT}/usr/bin/sed
- ARGS -i ${CMAKE_CURRENT_BINARY_DIR}/contributions.txt -e 's/,/, /g' ${CMAKE_CURRENT_BINARY_DIR}/contributors.txt
- )
- if (PACKAGE)
- if (${LINUX_DISTRO} MATCHES debian OR ${LINUX_DISTRO} MATCHES ubuntu)
- set(CPACK_BINARY_DEB ON CACHE BOOL "Able to package Debian DEB.")
- set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE
- amd64
- CACHE STRING "Debian package architecture.")
- set(CPACK_DEBIAN_PACKAGE_DESCRIPTION ${VIEWER_PACKAGE_COMMENT}
- CACHE STRING "Debian package description.")
- set(CPACK_DEBIAN_PACKAGE_MAINTAINER
- $ENV{USER}@${VIEWER_PACKAGE_DOMAIN_NAME}
- CACHE STRING "Debian package maintainer.")
- set(CPACK_DEBIAN_PACKAGE_SECTION net
- CACHE STRING "Debian package section.")
- if (${LINUX_DISTRO} MATCHES debian)
- set(CPACK_DEBIAN_PACKAGE_DEPENDS
- "libalut0, libaprutil1, libboost-fiber1.81.0, libboost-filesystem1.81.0, libboost-program-options1.81.0, libboost-regex1.81.0, libboost-thread1.81.0, libboost-url1.81.0, libexpat1, libfltk1.3, libglu1-mesa, libhunspell-1.7-0, libmeshoptimizer2d, libminizip1, libnghttp2-14, libsdl2-2.0-0, libvlc5, libvorbisenc2, libvorbisfile3, vlc-plugin-base"
- CACHE STRING "Debian package dependencies.")
- elseif (${LINUX_DISTRO} MATCHES ubuntu)
- set(CPACK_DEBIAN_PACKAGE_DEPENDS
- "libaprutil1t64, libboost-fiber1.83.0, libboost-filesystem1.83.0, libboost-program-options1.83.0, libboost-regex1.83.0, libboost-thread1.83.0, libboost-url1.83.0, libexpat1, libfltk1.3t64, libglu1-mesa, libhunspell-1.7-0, libmeshoptimizer2d, libminizip1, libnghttp2-14, libsdl2-2.0-0, libvlc5, libvorbisenc2, libvorbisfile3, vlc-plugin-base"
- CACHE STRING "Debian package dependencies.")
- endif (${LINUX_DISTRO} MATCHES debian)
- elseif (${LINUX_DISTRO} MATCHES fedora OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed))
- set(CPACK_BINARY_RPM ON CACHE BOOL "Able to package Fedora RPM.")
- set(CPACK_RPM_PACKAGE_SUMMARY ${VIEWER_PACKAGE_COMMENT}
- CACHE STRING "RPM package summary.")
- set(CPACK_RPM_PACKAGE_ARCHITECTURE
- ${CMAKE_SYSTEM_PROCESSOR}
- CACHE STRING "RPM package architecture.")
- set(CPACK_RPM_PACKAGE_LICENSE LGPL-2.1-only
- CACHE STRING "RPM package license.")
- set(CPACK_RPM_PACKAGE_VENDOR ${VIEWER_CHANNEL}
- CACHE STRING "RPM package vendor.")
- set(CPACK_RPM_PACKAGE_URL
- https://${VIEWER_PACKAGE_DOMAIN_NAME}
- CACHE STRING "RPM package URL.")
- set(CPACK_RPM_PACKAGE_DESCRIPTION ${VIEWER_PACKAGE_DESCRIPTION}
- CACHE STRING "RPM package description.")
- if (${LINUX_DISTRO} MATCHES fedora)
- set(CPACK_RPM_PACKAGE_REQUIRES
- "apr-util, boost-fiber, boost-program-options, boost-regex, boost-thread, boost-url, expat, fltk, mesa-libGLU, hunspell, libnghttp2, SDL2, vlc-libs, vlc-plugins-base, libvorbis"
- CACHE STRING "RPM package requirements.")
- elseif (${LINUX_DISTRO} MATCHES opensuse-tumbleweed)
- set(CPACK_RPM_PACKAGE_REQUIRES
- "libapr-util1-0, libboost_fiber1_87_0, libboost_program_options1_87_0, libboost_regex1_87_0, libboost_thread1_87_0, libboost_url1_87_0, libboost_url1_87_0-x86-64-v3, expat, libfltk1_3, libGLU1, libhunspell-1_7-0, libnghttp2-14, libSDL2-2_0-0, libvlc5, vlc-codecs, libvorbis0"
- CACHE STRING "RPM package requirements.")
- endif (${LINUX_DISTRO} MATCHES fedora)
- elseif (${LINUX_DISTRO} MATCHES arch)
- configure_file(
- ${CMAKE_CURRENT_SOURCE_DIR}/PKGBUILD.in
- ${CMAKE_BINARY_DIR}/PKGBUILD
- )
- endif (${LINUX_DISTRO} MATCHES debian OR ${LINUX_DISTRO} MATCHES ubuntu)
- endif (PACKAGE)
- else (USESYSTEMLIBS)
+ add_custom_command(
+ TARGET ${VIEWER_BINARY_NAME} POST_BUILD
+ COMMAND ${CMAKE_SYSROOT}/usr/bin/sed
+ ARGS -e '/Linden Lab.*/d' ${CMAKE_HOME_DIRECTORY}/../doc/contributions.txt > ${CMAKE_CURRENT_BINARY_DIR}/contributions.txt
+ COMMAND ${CMAKE_SYSROOT}/usr/bin/sed
+ ARGS -i '/following residents.*/d' ${CMAKE_CURRENT_BINARY_DIR}/contributions.txt
+ COMMAND ${CMAKE_SYSROOT}/usr/bin/sed
+ ARGS -i '/along with.*/d' ${CMAKE_CURRENT_BINARY_DIR}/contributions.txt
+ COMMAND ${CMAKE_SYSROOT}/usr/bin/sed
+ ARGS -i '/^$$/d' ${CMAKE_CURRENT_BINARY_DIR}/contributions.txt
+ COMMAND ${CMAKE_SYSROOT}/usr/bin/sed
+ ARGS -i '/\t.*/d' ${CMAKE_CURRENT_BINARY_DIR}/contributions.txt
+ COMMAND ${CMAKE_SYSROOT}/usr/bin/sed
+ ARGS -i '/^ .*/d' ${CMAKE_CURRENT_BINARY_DIR}/contributions.txt
+ COMMAND sort
+ ARGS -R contributions.txt -o ${CMAKE_CURRENT_BINARY_DIR}/contributions.txt
+ COMMAND paste
+ ARGS -s -d, ${CMAKE_CURRENT_BINARY_DIR}/contributions.txt > ${CMAKE_CURRENT_BINARY_DIR}/contributors.txt
+ COMMAND ${CMAKE_SYSROOT}/usr/bin/sed
+ ARGS -i 's/,/, /g' ${CMAKE_CURRENT_BINARY_DIR}/contributors.txt
+ )
+ if (PACKAGE)
+ if (${LINUX_DISTRO} MATCHES arch)
+ configure_file(
+ ${CMAKE_CURRENT_SOURCE_DIR}/PKGBUILD.in
+ ${CMAKE_BINARY_DIR}/PKGBUILD
+ )
+ elseif (${LINUX_DISTRO} MATCHES debian OR ${LINUX_DISTRO} MATCHES ubuntu)
+ set(CPACK_BINARY_DEB ON CACHE BOOL "Able to package Debian DEB.")
+ set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE amd64
+ CACHE STRING "Debian package architecture.")
+ set(CPACK_DEBIAN_PACKAGE_DESCRIPTION ${VIEWER_PACKAGE_COMMENT}
+ CACHE STRING "Debian package description.")
+ set(CPACK_DEBIAN_PACKAGE_MAINTAINER $ENV{USER}@${VIEWER_PACKAGE_DOMAIN_NAME}
+ CACHE STRING "Debian package maintainer.")
+ set(CPACK_DEBIAN_PACKAGE_SECTION net
+ CACHE STRING "Debian package section.")
+ if (${LINUX_DISTRO} MATCHES debian)
+ set(CPACK_DEBIAN_PACKAGE_DEPENDS "libalut0, libaprutil1, libboost-fiber1.81.0, libboost-filesystem1.81.0, libboost-program-options1.81.0, libboost-regex1.81.0, libboost-thread1.81.0, libboost-url1.81.0, libexpat1, libfltk1.3, libgles-dev, libglu1-mesa, libhunspell-1.7-0, libmeshoptimizer2d, libminizip1, libnghttp2-14, libsdl2-2.0-0, libvlc5, libvorbisenc2, libvorbisfile3, vlc-plugin-base"
+ CACHE STRING "Debian package dependencies.")
+ else ()
+ set(CPACK_DEBIAN_PACKAGE_DEPENDS "libaprutil1t64, libboost-fiber1.83.0, libboost-filesystem1.83.0, libboost-program-options1.83.0, libboost-regex1.83.0, libboost-thread1.83.0, libboost-url1.83.0, libexpat1, libfltk1.3t64, libgles-dev, libglu1-mesa, libhunspell-1.7-0, libmeshoptimizer2d, libminizip1, libnghttp2-14, libsdl2-2.0-0, libvlc5, libvorbisenc2, libvorbisfile3, vlc-plugin-base"
+ CACHE STRING "Debian package dependencies.")
+ endif ()
+ elseif (${LINUX_DISTRO} MATCHES fedora OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed))
+ set(CPACK_BINARY_RPM ON CACHE BOOL "Able to package Fedora RPM.")
+ set(CPACK_RPM_PACKAGE_SUMMARY ${VIEWER_PACKAGE_COMMENT}
+ CACHE STRING "RPM package summary.")
+ set(CPACK_RPM_PACKAGE_ARCHITECTURE ${CMAKE_SYSTEM_PROCESSOR}
+ CACHE STRING "RPM package architecture.")
+ set(CPACK_RPM_PACKAGE_LICENSE LGPL-2.1-only
+ CACHE STRING "RPM package license.")
+ set(CPACK_RPM_PACKAGE_VENDOR ${VIEWER_CHANNEL}
+ CACHE STRING "RPM package vendor.")
+ set(CPACK_RPM_PACKAGE_URL https://${VIEWER_PACKAGE_DOMAIN_NAME}
+ CACHE STRING "RPM package URL.")
+ set(CPACK_RPM_PACKAGE_DESCRIPTION ${VIEWER_PACKAGE_DESCRIPTION}
+ CACHE STRING "RPM package description.")
+ if (${LINUX_DISTRO} MATCHES fedora)
+ set(CPACK_RPM_PACKAGE_REQUIRES "apr-util, boost-fiber, boost-program-options, boost-regex, boost-thread, boost-url, expat, fltk, mesa-libGLU, hunspell, libnghttp2, openjpeg2, SDL2, vlc-libs, vlc-plugins-base, libvorbis"
+ CACHE STRING "RPM package requirements.")
+ else ()
+ set(CPACK_RPM_PACKAGE_REQUIRES "libapr-util1-0, libboost_fiber1_87_0, libboost_program_options1_87_0, libboost_regex1_87_0, libboost_thread1_87_0, libboost_url1_87_0, libboost_url1_87_0-x86-64-v3, expat, libfltk1_3, libGLU1, libhunspell-1_7-0, libnghttp2-14, openjpeg2, libSDL2-2_0-0, libvlc5, vlc-codecs, libvorbis0"
+ CACHE STRING "RPM package requirements.")
+ endif ()
+ endif ()
+ endif (PACKAGE)
+
+ if (FALSE)
set(product SecondLife-${ARCH}-${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION})
# These are the generated targets that are copied to package/
@@ -2283,8 +2281,9 @@ if (LINUX)
add_dependencies(llpackage copy_l_viewer_manifest)
check_message_template(llpackage)
endif (PACKAGE)
- endif (USESYSTEMLIBS)
-elseif (USESYSTEMLIBS)
+ endif (FALSE)
+
+else (LINUX)
add_custom_command(
TARGET ${VIEWER_BINARY_NAME} POST_BUILD
COMMAND sed
@@ -2312,20 +2311,18 @@ elseif (USESYSTEMLIBS)
CACHE STRING "FreeBSD package comment.")
set(CPACK_FREEBSD_PACKAGE_DESCRIPTION ${VIEWER_PACKAGE_DESCRIPTION}
CACHE STRING "FreeBSD package description.")
- set(CPACK_FREEBSD_PACKAGE_WWW
- https://${VIEWER_PACKAGE_DOMAIN_NAME}
+ set(CPACK_FREEBSD_PACKAGE_WWW https://${VIEWER_PACKAGE_DOMAIN_NAME}
CACHE STRING "FreeBSD package WWW.")
set(CPACK_FREEBSD_PACKAGE_LICENSE LGPL21
CACHE STRING "FreeBSD package license.")
- set(CPACK_FREEBSD_PACKAGE_MAINTAINER
- $ENV{USER}@${VIEWER_PACKAGE_DOMAIN_NAME}
+ set(CPACK_FREEBSD_PACKAGE_MAINTAINER $ENV{USER}@${VIEWER_PACKAGE_DOMAIN_NAME}
CACHE STRING "FreeBSD package maintainer.")
set(CPACK_FREEBSD_PACKAGE_ORIGIN net/${VIEWER_BINARY_NAME}
CACHE STRING "FreeBSD package origin.")
- set(CPACK_FREEBSD_PACKAGE_DEPS
- "audio/freealut;graphics/libGLU;textproc/hunspell;misc/meshoptimizer;archivers/minizip;www/libnghttp2;multimedia/vlc;audio/libvorbis"
+ set(CPACK_FREEBSD_PACKAGE_DEPS "audio/freealut;devel/apr;devel/boost-libs;x11-toolkits/fltk;textproc/hunspell;misc/meshoptimizer;archivers/minizip;www/libnghttp2;graphics/openjpeg;devel/sdl2;multimedia/vlc;audio/libvorbis"
CACHE STRING "FreeBSD package dependencies.")
- endif (CMAKE_SYSTEM_NAME MATCHES FreeBSD AND PACKAGE)
+ endif ()
+
endif (LINUX)
if (DARWIN)
@@ -2370,12 +2367,12 @@ if (DARWIN)
"${VIEWER_APP_BUNDLE}/Contents/Info.plist"
)
- if (USESYSTEMLIBS)
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/English.lproj/InfoPlist.strings
${CMAKE_CURRENT_BINARY_DIR}/InfoPlist.strings
)
- else (USESYSTEMLIBS)
+
+ if (FALSE)
add_custom_command(
TARGET ${VIEWER_BINARY_NAME} POST_BUILD
COMMAND ${PYTHON_EXECUTABLE}
@@ -2400,11 +2397,11 @@ if (DARWIN)
${VIEWER_BINARY_NAME}
${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
)
- endif (USESYSTEMLIBS)
+ endif ()
- if (ENABLE_MEDIA_PLUGINS)
+ if (ENABLE_MEDIA_PLUGINS)
add_dependencies(${VIEWER_BINARY_NAME} SLPlugin media_plugin_libvlc media_plugin_cef)
- endif ()
+ endif ()
if (ENABLE_SIGNING)
set(SIGNING_SETTING "--signature=${SIGNING_IDENTITY}")
@@ -2413,26 +2410,22 @@ if (DARWIN)
endif (ENABLE_SIGNING)
if (PACKAGE)
- if (USESYSTEMLIBS)
- set(CPACK_DMG_VOLUME_NAME "${product} Installer"
- CACHE STRING "Disk image volume name.")
- set(CPACK_DMG_FORMAT UDRW CACHE STRING "Disk image format.")
- set(CPACK_DMG_DS_STORE
- ${CMAKE_CURRENT_SOURCE_DIR}/installers/darwin/release-dmg/_DS_Store
- CACHE STRING "Disk image .DS_Store file.")
- set(CPACK_DMG_DS_STORE_SETUP_SCRIPT
- ${CMAKE_CURRENT_SOURCE_DIR}/installers/darwin/dmg-cleanup.applescript
- CACHE STRING "Disk image AppleScript file.")
- set(CPACK_DMG_BACKGROUND_IMAGE
- ${CMAKE_CURRENT_SOURCE_DIR}/installers/darwin/release-dmg/background.jpg
- CACHE STRING "Disk image background image.")
- set(CPACK_BUNDLE_NAME ${product} CACHE STRING "Bundle name.")
- set(CPACK_BUNDLE_PLIST ${VIEWER_APP_BUNDLE}/Contents/Info.plist
- CACHE STRING "Bundle Property List file.")
- set(CPACK_BUNDLE_ICON ${CMAKE_CURRENT_SOURCE_DIR}/secondlife.icns
- CACHE STRING "Bundle icon file.")
-
- else (USESYSTEMLIBS)
+ set(CPACK_DMG_VOLUME_NAME "${product} Installer"
+ CACHE STRING "Disk image volume name.")
+ set(CPACK_DMG_FORMAT UDRW CACHE STRING "Disk image format.")
+ set(CPACK_DMG_DS_STORE ${CMAKE_CURRENT_SOURCE_DIR}/installers/darwin/release-dmg/_DS_Store
+ CACHE STRING "Disk image .DS_Store file.")
+ set(CPACK_DMG_DS_STORE_SETUP_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/installers/darwin/dmg-cleanup.applescript
+ CACHE STRING "Disk image AppleScript file.")
+ set(CPACK_DMG_BACKGROUND_IMAGE ${CMAKE_CURRENT_SOURCE_DIR}/installers/darwin/release-dmg/background.jpg
+ CACHE STRING "Disk image background image.")
+ set(CPACK_BUNDLE_NAME ${product} CACHE STRING "Bundle name.")
+ set(CPACK_BUNDLE_PLIST ${VIEWER_APP_BUNDLE}/Contents/Info.plist
+ CACHE STRING "Bundle Property List file.")
+ set(CPACK_BUNDLE_ICON ${CMAKE_CURRENT_SOURCE_DIR}/secondlife.icns
+ CACHE STRING "Bundle icon file.")
+
+ if (FALSE)
add_custom_target(llpackage ALL DEPENDS ${VIEWER_BINARY_NAME})
add_custom_command(
@@ -2458,16 +2451,16 @@ if (DARWIN)
DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
)
- endif (USESYSTEMLIBS)
+ endif ()
endif (PACKAGE)
endif (DARWIN)
if (INSTALL)
include(${CMAKE_CURRENT_SOURCE_DIR}/ViewerInstall.cmake)
endif (INSTALL)
-if (PACKAGE AND USESYSTEMLIBS)
+if (PACKAGE)
include(CPack)
-endif (PACKAGE AND USESYSTEMLIBS)
+endif ()
if (PACKAGE AND (RELEASE_CRASH_REPORTING OR NON_RELEASE_CRASH_REPORTING) AND VIEWER_SYMBOL_FILE)
if (USE_BUGSPLAT)
diff --git a/indra/newview/FixBundle.cmake.in b/indra/newview/FixBundle.cmake.in
index 7f06249224..829c19e5e4 100644
--- a/indra/newview/FixBundle.cmake.in
+++ b/indra/newview/FixBundle.cmake.in
@@ -10,6 +10,11 @@ file(CREATE_LINK
SYMBOLIC
)
file(CREATE_LINK
+ "../../../../Frameworks/libopenjp2.7.dylib"
+ "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libopenjp2.7.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
"../../../../Frameworks/libpng16.16.dylib"
"${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libpng16.16.dylib"
SYMBOLIC
@@ -187,9 +192,6 @@ execute_process(
COMMAND lipo libbz2.1.0.8.dylib
-thin ${CMAKE_OSX_ARCHITECTURES}
-output libbz2.1.0.8.dylib
- COMMAND lipo libcollada14dom.2.3-r8.dylib
- -thin ${CMAKE_OSX_ARCHITECTURES}
- -output libcollada14dom.2.3-r8.dylib
COMMAND lipo libexpat.1.10.0.dylib
-thin ${CMAKE_OSX_ARCHITECTURES}
-output libexpat.1.10.0.dylib
@@ -238,6 +240,9 @@ execute_process(
COMMAND lipo libopenal.1.24.2.dylib
-thin ${CMAKE_OSX_ARCHITECTURES}
-output libopenal.1.24.2.dylib
+ COMMAND lipo libopenjp2.2.5.3.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libopenjp2.2.5.3.dylib
COMMAND lipo libpng16.16.dylib
-thin ${CMAKE_OSX_ARCHITECTURES}
-output libpng16.16.dylib
@@ -288,7 +293,6 @@ execute_process(
Frameworks/libbrotlicommon.1.1.0.dylib
Frameworks/libbrotlidec.1.1.0.dylib
Frameworks/libbz2.1.0.8.dylib
- Frameworks/libcollada14dom.2.3-r8.dylib
Frameworks/libexpat.1.10.0.dylib
Frameworks/libfreetype.6.dylib
Frameworks/libhunspell-1.7.0.dylib
@@ -305,6 +309,7 @@ execute_process(
Frameworks/libnghttp2.14.dylib
Frameworks/libogg.0.dylib
Frameworks/libopenal.1.24.2.dylib
+ Frameworks/libopenjp2.2.5.3.dylib
Frameworks/libpng16.16.dylib
Frameworks/libvlc.5.dylib
Frameworks/libvlccore.9.dylib
diff --git a/indra/newview/FixPackage.cmake.in b/indra/newview/FixPackage.cmake.in
index 074a6e5815..49f7b75b4d 100644
--- a/indra/newview/FixPackage.cmake.in
+++ b/indra/newview/FixPackage.cmake.in
@@ -10,6 +10,11 @@ file(CREATE_LINK
SYMBOLIC
)
file(CREATE_LINK
+ "../../../../Frameworks/libopenjp2.7.dylib"
+ "${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libopenjp2.7.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
"../../../../Frameworks/libpng16.16.dylib"
"${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libpng16.16.dylib"
SYMBOLIC
@@ -187,9 +192,6 @@ execute_process(
COMMAND lipo libbz2.1.0.8.dylib
-thin ${CMAKE_OSX_ARCHITECTURES}
-output libbz2.1.0.8.dylib
- COMMAND lipo libcollada14dom.2.3-r8.dylib
- -thin ${CMAKE_OSX_ARCHITECTURES}
- -output libcollada14dom.2.3-r8.dylib
COMMAND lipo libexpat.1.10.0.dylib
-thin ${CMAKE_OSX_ARCHITECTURES}
-output libexpat.1.10.0.dylib
@@ -238,6 +240,9 @@ execute_process(
COMMAND lipo libopenal.1.24.2.dylib
-thin ${CMAKE_OSX_ARCHITECTURES}
-output libopenal.1.24.2.dylib
+ COMMAND lipo libopenjp2.2.5.3.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libopenjp2.2.5.3.dylib
COMMAND lipo libpng16.16.dylib
-thin ${CMAKE_OSX_ARCHITECTURES}
-output libpng16.16.dylib
@@ -288,7 +293,6 @@ execute_process(
Frameworks/libbrotlicommon.1.1.0.dylib
Frameworks/libbrotlidec.1.1.0.dylib
Frameworks/libbz2.1.0.8.dylib
- Frameworks/libcollada14dom.2.3-r8.dylib
Frameworks/libexpat.1.10.0.dylib
Frameworks/libfreetype.6.dylib
Frameworks/libhunspell-1.7.0.dylib
@@ -305,6 +309,7 @@ execute_process(
Frameworks/libnghttp2.14.dylib
Frameworks/libogg.0.dylib
Frameworks/libopenal.1.24.2.dylib
+ Frameworks/libopenjp2.2.5.3.dylib
Frameworks/libpng16.16.dylib
Frameworks/libvlc.5.dylib
Frameworks/libvlccore.9.dylib
diff --git a/indra/newview/PKGBUILD.in b/indra/newview/PKGBUILD.in
index 4d617c132c..1f0c83cc41 100644
--- a/indra/newview/PKGBUILD.in
+++ b/indra/newview/PKGBUILD.in
@@ -6,7 +6,7 @@ pkgdesc="${VIEWER_PACKAGE_COMMENT}"
arch=('${CMAKE_SYSTEM_PROCESSOR}')
url="https://${VIEWER_PACKAGE_DOMAIN_NAME}"
license=('LGPL-2.1')
-depends=(apr-util boost-libs fltk glu hunspell libnghttp2 sdl2 vlc libvorbis)
+depends=(apr-util boost-libs fltk glu hunspell libnghttp2 openjpeg2 sdl2 vlc libvorbis)
package() {
cd "$startdir"
diff --git a/indra/newview/VIEWER_VERSION.txt b/indra/newview/VIEWER_VERSION.txt
index 991d8e5c5f..6329380f96 100644
--- a/indra/newview/VIEWER_VERSION.txt
+++ b/indra/newview/VIEWER_VERSION.txt
@@ -1 +1 @@
-7.1.13
+7.1.15
diff --git a/indra/newview/ViewerInstall.cmake b/indra/newview/ViewerInstall.cmake
index 4716cdde36..1281136cef 100644
--- a/indra/newview/ViewerInstall.cmake
+++ b/indra/newview/ViewerInstall.cmake
@@ -66,7 +66,7 @@ if (DARWIN)
if (NDOF)
install(FILES
- "${AUTOBUILD_INSTALL_DIR}/lib/release/libndofdev.dylib"
+ "${ARCH_PREBUILT_DIRS_RELEASE}/libndofdev.dylib"
DESTINATION .
)
endif ()
@@ -110,9 +110,9 @@ if (LINUX)
endif ()
if (USE_FMODSTUDIO)
install(FILES
- ${AUTOBUILD_INSTALL_DIR}/lib/release/libfmod.so
- ${AUTOBUILD_INSTALL_DIR}/lib/release/libfmod.so.13
- ${AUTOBUILD_INSTALL_DIR}/lib/release/libfmod.so.13.28
+ ${ARCH_PREBUILT_DIRS_RELEASE}/libfmod.so
+ ${ARCH_PREBUILT_DIRS_RELEASE}/libfmod.so.13
+ ${ARCH_PREBUILT_DIRS_RELEASE}/libfmod.so.13.28
DESTINATION ${_LIB})
endif (USE_FMODSTUDIO)
endif (LINUX)
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index e39afd4715..7163a2ef34 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -368,6 +368,17 @@
<key>Value</key>
<real>0.5</real>
</map>
+ <key>AudioLevelWind</key>
+ <map>
+ <key>Comment</key>
+ <string>Audio level of wind noise when standing still</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>F32</string>
+ <key>Value</key>
+ <real>0.5</real>
+ </map>
<key>AudioStreamingMedia</key>
<map>
<key>Comment</key>
@@ -6427,6 +6438,17 @@
<key>Value</key>
<integer>0</integer>
</map>
+ <key>PlaySoundChatMention</key>
+ <map>
+ <key>Comment</key>
+ <string>Plays a sound when got mentioned in a chat</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>0</integer>
+ </map>
<key>PluginAttachDebuggerToPlugins</key>
<map>
<key>Comment</key>
@@ -7896,13 +7918,13 @@
<key>RenderMinFreeMainMemoryThreshold</key>
<map>
<key>Comment</key>
- <string>Minimum of available physical memory in MB before textures get scaled down</string>
+ <string>If available free physical memory is below this value textures get agresively scaled down</string>
<key>Persist</key>
- <integer>0</integer>
+ <integer>1</integer>
<key>Type</key>
<string>U32</string>
<key>Value</key>
- <integer>512</integer>
+ <integer>256</integer>
</map>
<key>RenderLowMemMinDiscardIncrement</key>
<map>
@@ -9639,6 +9661,17 @@
<key>Value</key>
<integer>0</integer>
</map>
+ <key>RenderBalanceInSnapshot</key>
+ <map>
+ <key>Comment</key>
+ <string>Display L$ balance in snapshot</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
<key>RenderUIBuffer</key>
<map>
<key>Comment</key>
@@ -10074,6 +10107,83 @@
<key>Value</key>
<string>https://megapahit.com/enter_bug.cgi?product=Viewer</string>
</map>
+ <key>RestrainedLove</key>
+ <map>
+ <key>Comment</key>
+ <string>Toggles RLVa features (requires restart)</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <boolean>0</boolean>
+ </map>
+ <key>RestrainedLoveDebug</key>
+ <map>
+ <key>Comment</key>
+ <string>Toggles RLVa debug mode (displays the commands when in debug mode)</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <boolean>0</boolean>
+ </map>
+ <key>RLVaBlockedExperiences</key>
+ <map>
+ <key>Comment</key>
+ <string>List of experiences blocked from interacting with RLVa</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>String</string>
+ <key>Value</key>
+ <string>bfe25fb4-222c-11e5-85a2-fa4c4ccaa202</string>
+ </map>
+ <key>RLVaDebugHideUnsetDuplicate</key>
+ <map>
+ <key>Comment</key>
+ <string>Suppresses reporting "unset" or "duplicate" command restrictions when RestrainedLoveDebug is TRUE</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <boolean>0</boolean>
+ </map>
+ <key>RLVaEnableTemporaryAttachments</key>
+ <map>
+ <key>Comment</key>
+ <string>Allows temporary attachments (regardless of origin) to issue RLV commands</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <boolean>1</boolean>
+ </map>
+ <key>RLVaExperimentalCommands</key>
+ <map>
+ <key>Comment</key>
+ <string>Enables the experimental command set</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <boolean>1</boolean>
+ </map>
+ <key>RLVaTopLevelMenu</key>
+ <map>
+ <key>Comment</key>
+ <string>Show the RLVa specific menu as a top level menu</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <boolean>1</boolean>
+ </map>
<key>RevokePermsOnStopAnimation</key>
<map>
<key>Comment</key>
@@ -12450,6 +12560,28 @@
<key>Value</key>
<string>2ca849ba-2885-4bc3-90ef-d4987a5b983a</string>
</map>
+ <key>UISndChatMention</key>
+ <map>
+ <key>Comment</key>
+ <string>Sound file for chat mention(uuid for sound asset)</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>String</string>
+ <key>Value</key>
+ <string>03e77cb5-592c-5b33-d271-2e46497c3fb3</string>
+ </map>
+ <key>UISndChatPing</key>
+ <map>
+ <key>Comment</key>
+ <string>Sound file for chat ping(uuid for sound asset)</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>String</string>
+ <key>Value</key>
+ <string>7dd36df6-2624-5438-f988-fdf8588a0ad9</string>
+ </map>
<key>UISndClick</key>
<map>
<key>Comment</key>
diff --git a/indra/newview/featuretable_linux.txt b/indra/newview/featuretable_linux.txt
index d8d4f08429..f97ff28062 100644
--- a/indra/newview/featuretable_linux.txt
+++ b/indra/newview/featuretable_linux.txt
@@ -48,6 +48,7 @@ RenderLocalLights 1 1
RenderReflectionDetail 1 4
RenderTerrainDetail 1 1
RenderTerrainLODFactor 1 2.0
+RenderTerrainPBRDetail 1 0
RenderTransparentWater 1 1
RenderTreeLODFactor 1 1.0
RenderVBOEnable 1 1
@@ -88,6 +89,7 @@ RenderObjectBump 1 0
RenderReflectionDetail 1 0
RenderTerrainDetail 1 0
RenderTerrainLODFactor 1 1
+RenderTerrainPBRDetail 1 -1
RenderTransparentWater 1 0
RenderTreeLODFactor 1 0
RenderVolumeLODFactor 1 1.125
@@ -128,6 +130,7 @@ RenderTerrainDetail 1 0
RenderTerrainLODFactor 1 1
RenderTransparentWater 1 0
RenderTreeLODFactor 1 0
+RenderTerrainPBRDetail 1 -1
RenderVolumeLODFactor 1 1.125
WindLightUseAtmosShaders 1 0
RenderDeferred 1 0
@@ -166,6 +169,7 @@ RenderTerrainLODFactor 1 1.0
RenderTransparentWater 1 1
RenderTreeLODFactor 1 0.5
RenderVolumeLODFactor 1 1.125
+RenderTerrainPBRDetail 1 -1
WindLightUseAtmosShaders 1 0
RenderDeferred 1 0
RenderDeferredSSAO 1 0
@@ -200,6 +204,7 @@ RenderLocalLights 1 1
RenderReflectionDetail 1 0
RenderTerrainDetail 1 1
RenderTerrainLODFactor 1 2.0
+RenderTerrainPBRDetail 1 0
RenderTransparentWater 1 1
RenderTreeLODFactor 1 0.5
RenderVolumeLODFactor 1 1.125
@@ -237,6 +242,7 @@ RenderLocalLights 1 1
RenderReflectionDetail 1 0
RenderTerrainDetail 1 1
RenderTerrainLODFactor 1 2.0
+RenderTerrainPBRDetail 1 0
RenderTransparentWater 1 1
RenderTreeLODFactor 1 0.5
RenderVolumeLODFactor 1 1.125
@@ -274,6 +280,7 @@ RenderLocalLights 1 1
RenderReflectionDetail 1 0
RenderTerrainDetail 1 1
RenderTerrainLODFactor 1 2.0
+RenderTerrainPBRDetail 1 0
RenderTransparentWater 1 1
RenderTreeLODFactor 1 0.5
RenderVolumeLODFactor 1 1.125
@@ -311,6 +318,7 @@ RenderLocalLights 1 1
RenderReflectionDetail 1 0
RenderTerrainDetail 1 1
RenderTerrainLODFactor 1 2.0
+RenderTerrainPBRDetail 1 0
RenderTransparentWater 1 1
RenderTreeLODFactor 1 0.5
RenderVolumeLODFactor 1 1.125
@@ -347,6 +355,7 @@ RenderObjectBump 1 1
RenderReflectionDetail 1 4
RenderTerrainDetail 1 1
RenderTerrainLODFactor 1 2.0
+RenderTerrainPBRDetail 1 0
RenderTransparentWater 1 1
RenderTreeLODFactor 1 1.0
RenderVolumeLODFactor 1 2.0
@@ -755,3 +764,5 @@ RenderShaderLightingMaxLevel 1 2
list NVIDIA_GeForce_Go_7900
RenderShaderLightingMaxLevel 1 2
+list TexUnit16orLess
+RenderTerrainPBRDetail 1 -1
diff --git a/indra/newview/gltf/primitive.cpp b/indra/newview/gltf/primitive.cpp
index 5de45119fc..388a6eee01 100644
--- a/indra/newview/gltf/primitive.cpp
+++ b/indra/newview/gltf/primitive.cpp
@@ -32,11 +32,7 @@
#include "mikktspace/mikktspace.hh"
-#if LL_USESYSTEMLIBS
#include <meshoptimizer.h>
-#else
-#include "meshoptimizer/meshoptimizer.h"
-#endif
using namespace LL::GLTF;
diff --git a/indra/newview/gltfscenemanager.cpp b/indra/newview/gltfscenemanager.cpp
index a38ede592b..d106f738a9 100644
--- a/indra/newview/gltfscenemanager.cpp
+++ b/indra/newview/gltfscenemanager.cpp
@@ -646,6 +646,12 @@ void GLTFSceneManager::render(Asset& asset, U8 variant)
return;
}
+ if (gGLTFPBRMetallicRoughnessProgram.mGLTFVariants.size() <= variant)
+ {
+ llassert(false); // mGLTFVariants should have been initialized
+ return;
+ }
+
for (U32 ds = 0; ds < 2; ++ds)
{
RenderData& rd = asset.mRenderData[ds];
diff --git a/indra/newview/groupchatlistener.cpp b/indra/newview/groupchatlistener.cpp
index 43507f13e9..ed9e34d1bf 100644
--- a/indra/newview/groupchatlistener.cpp
+++ b/indra/newview/groupchatlistener.cpp
@@ -2,11 +2,11 @@
* @file groupchatlistener.cpp
* @author Nat Goodspeed
* @date 2011-04-11
- * @brief Implementation for groupchatlistener.
+ * @brief Implementation for LLGroupChatListener.
*
- * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * $LicenseInfo:firstyear=2024&license=viewerlgpl$
* Second Life Viewer Source Code
- * Copyright (C) 2011, Linden Research, Inc.
+ * Copyright (C) 2024, 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
@@ -34,43 +34,69 @@
// std headers
// external library headers
// other Linden headers
+#include "llchat.h"
#include "llgroupactions.h"
#include "llimview.h"
+LLGroupChatListener::LLGroupChatListener():
+ LLEventAPI("GroupChat",
+ "API to enter, leave, send and intercept group chat messages")
+{
+ add("startGroupChat",
+ "Enter a group chat in group with UUID [\"group_id\"]\n"
+ "Assumes the logged-in agent is already a member of this group.",
+ &LLGroupChatListener::startGroupChat,
+ llsd::map("group_id", LLSD()));
+ add("leaveGroupChat",
+ "Leave a group chat in group with UUID [\"group_id\"]\n"
+ "Assumes a prior successful startIM request.",
+ &LLGroupChatListener::leaveGroupChat,
+ llsd::map("group_id", LLSD()));
+ add("sendGroupIM",
+ "send a [\"message\"] to group with UUID [\"group_id\"]",
+ &LLGroupChatListener::sendGroupIM,
+ llsd::map("message", LLSD(), "group_id", LLSD()));
+}
-namespace {
- void startIm_wrapper(LLSD const & event)
+bool is_in_group(LLEventAPI::Response &response, const LLSD &data)
+{
+ if (!LLGroupActions::isInGroup(data["group_id"]))
{
- LLUUID session_id = LLGroupActions::startIM(event["id"].asUUID());
- sendReply(LLSDMap("session_id", LLSD(session_id)), event);
+ response.error(stringize("You are not the member of the group:", std::quoted(data["group_id"].asString())));
+ return false;
}
+ return true;
+}
- void send_message_wrapper(const std::string& text, const LLUUID& session_id, const LLUUID& group_id)
+void LLGroupChatListener::startGroupChat(LLSD const &data)
+{
+ Response response(LLSD(), data);
+ if (!is_in_group(response, data))
+ {
+ return;
+ }
+ if (LLGroupActions::startIM(data["group_id"]).isNull())
{
- LLIMModel::sendMessage(text, session_id, group_id, IM_SESSION_GROUP_START);
+ return response.error(stringize("Failed to start group chat session ", std::quoted(data["group_id"].asString())));
}
}
+void LLGroupChatListener::leaveGroupChat(LLSD const &data)
+{
+ Response response(LLSD(), data);
+ if (is_in_group(response, data))
+ {
+ LLGroupActions::endIM(data["group_id"].asUUID());
+ }
+}
-GroupChatListener::GroupChatListener():
- LLEventAPI("GroupChat",
- "API to enter, leave, send and intercept group chat messages")
+void LLGroupChatListener::sendGroupIM(LLSD const &data)
{
- add("startIM",
- "Enter a group chat in group with UUID [\"id\"]\n"
- "Assumes the logged-in agent is already a member of this group.",
- &startIm_wrapper);
- add("endIM",
- "Leave a group chat in group with UUID [\"id\"]\n"
- "Assumes a prior successful startIM request.",
- &LLGroupActions::endIM,
- llsd::array("id"));
- add("sendIM",
- "send a groupchat IM",
- &send_message_wrapper,
- llsd::array("text", "session_id", "group_id"));
+ Response response(LLSD(), data);
+ if (!is_in_group(response, data))
+ {
+ return;
+ }
+ LLUUID group_id(data["group_id"]);
+ LLIMModel::sendMessage(data["message"], gIMMgr->computeSessionID(IM_SESSION_GROUP_START, group_id), group_id, IM_SESSION_SEND);
}
-/*
- static void sendMessage(const std::string& utf8_text, const LLUUID& im_session_id,
- const LLUUID& other_participant_id, EInstantMessage dialog);
-*/
diff --git a/indra/newview/groupchatlistener.h b/indra/newview/groupchatlistener.h
index 3819ac59b7..14cd7266a3 100644
--- a/indra/newview/groupchatlistener.h
+++ b/indra/newview/groupchatlistener.h
@@ -26,15 +26,20 @@
* $/LicenseInfo$
*/
-#if ! defined(LL_GROUPCHATLISTENER_H)
-#define LL_GROUPCHATLISTENER_H
+#if ! defined(LL_LLGROUPCHATLISTENER_H)
+#define LL_LLGROUPCHATLISTENER_H
#include "lleventapi.h"
-class GroupChatListener: public LLEventAPI
+class LLGroupChatListener: public LLEventAPI
{
public:
- GroupChatListener();
+ LLGroupChatListener();
+
+private:
+ void startGroupChat(LLSD const &data);
+ void leaveGroupChat(LLSD const &data);
+ void sendGroupIM(LLSD const &data);
};
-#endif /* ! defined(LL_GROUPCHATLISTENER_H) */
+#endif /* ! defined(LL_LLGROUPCHATLISTENER_H) */
diff --git a/indra/newview/icons/release/secondlife.icns b/indra/newview/icons/release/secondlife.icns
index a30b51b67a..00d9867814 100644
--- a/indra/newview/icons/release/secondlife.icns
+++ b/indra/newview/icons/release/secondlife.icns
Binary files differ
diff --git a/indra/newview/icons/release/secondlife.iconset/icon_128x128.png b/indra/newview/icons/release/secondlife.iconset/icon_128x128.png
new file mode 100644
index 0000000000..4c519db265
--- /dev/null
+++ b/indra/newview/icons/release/secondlife.iconset/icon_128x128.png
Binary files differ
diff --git a/indra/newview/icons/release/secondlife.iconset/icon_128x128@2x.png b/indra/newview/icons/release/secondlife.iconset/icon_128x128@2x.png
new file mode 100644
index 0000000000..2a3a0092b2
--- /dev/null
+++ b/indra/newview/icons/release/secondlife.iconset/icon_128x128@2x.png
Binary files differ
diff --git a/indra/newview/icons/release/secondlife.iconset/icon_16x16.png b/indra/newview/icons/release/secondlife.iconset/icon_16x16.png
new file mode 100644
index 0000000000..fda2f276ee
--- /dev/null
+++ b/indra/newview/icons/release/secondlife.iconset/icon_16x16.png
Binary files differ
diff --git a/indra/newview/icons/release/secondlife.iconset/icon_16x16@2x.png b/indra/newview/icons/release/secondlife.iconset/icon_16x16@2x.png
new file mode 100644
index 0000000000..aa4a74f204
--- /dev/null
+++ b/indra/newview/icons/release/secondlife.iconset/icon_16x16@2x.png
Binary files differ
diff --git a/indra/newview/icons/release/secondlife.iconset/icon_256x256.png b/indra/newview/icons/release/secondlife.iconset/icon_256x256.png
new file mode 100644
index 0000000000..2a3a0092b2
--- /dev/null
+++ b/indra/newview/icons/release/secondlife.iconset/icon_256x256.png
Binary files differ
diff --git a/indra/newview/icons/release/secondlife.iconset/icon_256x256@2x.png b/indra/newview/icons/release/secondlife.iconset/icon_256x256@2x.png
new file mode 100644
index 0000000000..4c28add76c
--- /dev/null
+++ b/indra/newview/icons/release/secondlife.iconset/icon_256x256@2x.png
Binary files differ
diff --git a/indra/newview/icons/release/secondlife.iconset/icon_32x32.png b/indra/newview/icons/release/secondlife.iconset/icon_32x32.png
new file mode 100644
index 0000000000..aa4a74f204
--- /dev/null
+++ b/indra/newview/icons/release/secondlife.iconset/icon_32x32.png
Binary files differ
diff --git a/indra/newview/icons/release/secondlife.iconset/icon_32x32@2x.png b/indra/newview/icons/release/secondlife.iconset/icon_32x32@2x.png
new file mode 100644
index 0000000000..23a36f66cb
--- /dev/null
+++ b/indra/newview/icons/release/secondlife.iconset/icon_32x32@2x.png
Binary files differ
diff --git a/indra/newview/icons/release/secondlife.iconset/icon_512x512.png b/indra/newview/icons/release/secondlife.iconset/icon_512x512.png
new file mode 100644
index 0000000000..4c28add76c
--- /dev/null
+++ b/indra/newview/icons/release/secondlife.iconset/icon_512x512.png
Binary files differ
diff --git a/indra/newview/icons/release/secondlife.iconset/icon_512x512@2x.png b/indra/newview/icons/release/secondlife.iconset/icon_512x512@2x.png
new file mode 100644
index 0000000000..a53a6697f1
--- /dev/null
+++ b/indra/newview/icons/release/secondlife.iconset/icon_512x512@2x.png
Binary files differ
diff --git a/indra/newview/icons/release/secondlife_1024.png b/indra/newview/icons/release/secondlife_1024.png
new file mode 100644
index 0000000000..a53a6697f1
--- /dev/null
+++ b/indra/newview/icons/release/secondlife_1024.png
Binary files differ
diff --git a/indra/newview/icons/release/secondlife_128.png b/indra/newview/icons/release/secondlife_128.png
deleted file mode 100644
index 2f21c1c7fc..0000000000
--- a/indra/newview/icons/release/secondlife_128.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/icons/release/secondlife_16.png b/indra/newview/icons/release/secondlife_16.png
deleted file mode 100644
index 68f1427309..0000000000
--- a/indra/newview/icons/release/secondlife_16.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/icons/release/secondlife_256.png b/indra/newview/icons/release/secondlife_256.png
deleted file mode 100644
index 8f324910e7..0000000000
--- a/indra/newview/icons/release/secondlife_256.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/icons/release/secondlife_32.png b/indra/newview/icons/release/secondlife_32.png
deleted file mode 100644
index 2b7cdef03d..0000000000
--- a/indra/newview/icons/release/secondlife_32.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/icons/release/secondlife_48.png b/indra/newview/icons/release/secondlife_48.png
deleted file mode 100644
index c2ef372dd7..0000000000
--- a/indra/newview/icons/release/secondlife_48.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/linux_tools/wrapper.sh b/indra/newview/linux_tools/wrapper.sh
index a027aaf6d1..3019e844d2 100755
--- a/indra/newview/linux_tools/wrapper.sh
+++ b/indra/newview/linux_tools/wrapper.sh
@@ -4,16 +4,9 @@
## These options are for self-assisted troubleshooting during this beta
## testing phase; you should not usually need to touch them.
-## - Avoids using any FMOD STUDIO audio driver.
-#export LL_BAD_FMODSTUDIO_DRIVER=x
## - Avoids using any OpenAL audio driver.
#export LL_BAD_OPENAL_DRIVER=x
-## - Avoids using the FMOD Studio or FMOD Ex PulseAudio audio driver.
-#export LL_BAD_FMOD_PULSEAUDIO=x
-## - Avoids using the FMOD Studio or FMOD Ex ALSA audio driver.
-#export LL_BAD_FMOD_ALSA=x
-
## - Avoids the optional OpenGL extensions which have proven most problematic
## on some hardware. Disabling this option may cause BETTER PERFORMANCE but
## may also cause CRASHES and hangs on some unstable combinations of drivers
@@ -34,16 +27,10 @@
## LL_GL_BLACKLIST which solves your problems.
#export LL_GL_BLACKLIST=abcdefghijklmno
-## - Some ATI/Radeon users report random X server crashes when the mouse
-## cursor changes shape. If you suspect that you are a victim of this
-## driver bug, try enabling this option and report whether it helps:
-#export LL_ATI_MOUSE_CURSOR_BUG=x
-
if [ "`uname -m`" = "x86_64" ]; then
echo '64-bit Linux detected.'
fi
-
## Everything below this line is just for advanced troubleshooters.
##-------------------------------------------------------------------
@@ -55,9 +42,6 @@ fi
#export LL_WRAPPER='gdb --args'
#export LL_WRAPPER='valgrind --smc-check=all --error-limit=no --log-file=secondlife.vg --leak-check=full --suppressions=/usr/lib/valgrind/glibc-2.5.supp --suppressions=secondlife-i686.supp'
-## - Avoids an often-buggy X feature that doesn't really benefit us anyway.
-export SDL_VIDEO_X11_DGAMOUSE=0
-
## - The 'scim' GTK IM module widely crashes the viewer. Avoid it.
if [ "$GTK_IM_MODULE" = "scim" ]; then
export GTK_IM_MODULE=xim
@@ -67,13 +51,6 @@ if [ "$XMODIFIERS" = "" ]; then
export XMODIFIERS="@im=fcitx"
fi
-## - Automatically work around the ATI mouse cursor crash bug:
-## (this workaround is disabled as most fglrx users do not see the bug)
-#if lsmod | grep fglrx &>/dev/null ; then
-# export LL_ATI_MOUSE_CURSOR_BUG=x
-#fi
-
-
## Nothing worth editing below this line.
##-------------------------------------------------------------------
diff --git a/indra/newview/llagentcamera.cpp b/indra/newview/llagentcamera.cpp
index cc4599b310..7558d1f907 100644
--- a/indra/newview/llagentcamera.cpp
+++ b/indra/newview/llagentcamera.cpp
@@ -1503,6 +1503,7 @@ void LLAgentCamera::updateCamera()
LLVector3 chest_scale = chest_joint->getScale();
// shorten avatar skeleton to avoid foot interpenetration
+#if 0 // This offsets mouselook attachments, is disabled in other TPVs
if (!gAgentAvatarp->mInAir)
{
LLVector3 chest_offset = LLVector3(0.f, 0.f, chest_joint->getPosition().mV[VZ]) * torso_joint->getWorldRotation();
@@ -1516,6 +1517,7 @@ void LLAgentCamera::updateCamera()
chest_joint->setScale(LLVector3(1.f, 1.f, scale_factor));
diff.mV[VZ] = 0.f;
}
+#endif
// SL-315
gAgentAvatarp->mPelvisp->setPosition(gAgentAvatarp->mPelvisp->getPosition() + diff);
@@ -2658,7 +2660,7 @@ void LLAgentCamera::setCameraPosAndFocusGlobal(const LLVector3d& camera_pos, con
if (mCameraAnimating)
{
- const F64 ANIM_METERS_PER_SECOND = 15.0;
+ const F64 ANIM_METERS_PER_SECOND = 20.0;
const F64 MIN_ANIM_SECONDS = 0.5;
const F64 MAX_ANIM_SECONDS = 3.0;
F64 anim_duration = llmax( MIN_ANIM_SECONDS, sqrt(focus_delta_squared) / ANIM_METERS_PER_SECOND );
diff --git a/indra/newview/llagentlistener.cpp b/indra/newview/llagentlistener.cpp
index 0c120ae01d..5ddb87558a 100644
--- a/indra/newview/llagentlistener.cpp
+++ b/indra/newview/llagentlistener.cpp
@@ -31,19 +31,25 @@
#include "llagentlistener.h"
#include "llagent.h"
+#include "llagentcamera.h"
+#include "llavatarname.h"
+#include "llavatarnamecache.h"
#include "llvoavatar.h"
#include "llcommandhandler.h"
+#include "llinventorymodel.h"
#include "llslurl.h"
#include "llurldispatcher.h"
+#include "llviewercontrol.h"
#include "llviewernetwork.h"
#include "llviewerobject.h"
#include "llviewerobjectlist.h"
#include "llviewerregion.h"
+#include "llvoavatarself.h"
#include "llsdutil.h"
#include "llsdutil_math.h"
#include "lltoolgrab.h"
#include "llhudeffectlookat.h"
-#include "llagentcamera.h"
+#include "llviewercamera.h"
LLAgentListener::LLAgentListener(LLAgent &agent)
: LLEventAPI("LLAgent",
@@ -69,13 +75,6 @@ LLAgentListener::LLAgentListener(LLAgent &agent)
add("resetAxes",
"Set the agent to a fixed orientation (optionally specify [\"lookat\"] = array of [x, y, z])",
&LLAgentListener::resetAxes);
- add("getAxes",
- "Obsolete - use getPosition instead\n"
- "Send information about the agent's orientation on [\"reply\"]:\n"
- "[\"euler\"]: map of {roll, pitch, yaw}\n"
- "[\"quat\"]: array of [x, y, z, w] quaternion values",
- &LLAgentListener::getAxes,
- LLSDMap("reply", LLSD()));
add("getPosition",
"Send information about the agent's position and orientation on [\"reply\"]:\n"
"[\"region\"]: array of region {x, y, z} position\n"
@@ -87,33 +86,34 @@ LLAgentListener::LLAgentListener(LLAgent &agent)
add("startAutoPilot",
"Start the autopilot system using the following parameters:\n"
"[\"target_global\"]: array of target global {x, y, z} position\n"
- "[\"stop_distance\"]: target maxiumum distance from target [default: autopilot guess]\n"
+ "[\"stop_distance\"]: maximum stop distance from target [default: autopilot guess]\n"
"[\"target_rotation\"]: array of [x, y, z, w] quaternion values [default: no target]\n"
"[\"rotation_threshold\"]: target maximum angle from target facing rotation [default: 0.03 radians]\n"
- "[\"behavior_name\"]: name of the autopilot behavior [default: \"\"]"
- "[\"allow_flying\"]: allow flying during autopilot [default: True]",
- //"[\"callback_pump\"]: pump to send success/failure and callback data to [default: none]\n"
- //"[\"callback_data\"]: data to send back during a callback [default: none]",
- &LLAgentListener::startAutoPilot);
+ "[\"behavior_name\"]: name of the autopilot behavior [default: \"\"]\n"
+ "[\"allow_flying\"]: allow flying during autopilot [default: True]\n"
+ "event with [\"success\"] flag is sent to 'LLAutopilot' event pump, when auto pilot is terminated",
+ &LLAgentListener::startAutoPilot,
+ llsd::map("target_global", LLSD()));
add("getAutoPilot",
"Send information about current state of the autopilot system to [\"reply\"]:\n"
"[\"enabled\"]: boolean indicating whether or not autopilot is enabled\n"
"[\"target_global\"]: array of target global {x, y, z} position\n"
"[\"leader_id\"]: uuid of target autopilot is following\n"
- "[\"stop_distance\"]: target maximum distance from target\n"
+ "[\"stop_distance\"]: maximum stop distance from target\n"
"[\"target_distance\"]: last known distance from target\n"
"[\"use_rotation\"]: boolean indicating if autopilot has a target facing rotation\n"
"[\"target_facing\"]: array of {x, y} target direction to face\n"
"[\"rotation_threshold\"]: target maximum angle from target facing rotation\n"
"[\"behavior_name\"]: name of the autopilot behavior",
&LLAgentListener::getAutoPilot,
- LLSDMap("reply", LLSD()));
+ llsd::map("reply", LLSD()));
add("startFollowPilot",
"[\"leader_id\"]: uuid of target to follow using the autopilot system (optional with avatar_name)\n"
"[\"avatar_name\"]: avatar name to follow using the autopilot system (optional with leader_id)\n"
"[\"allow_flying\"]: allow flying during autopilot [default: True]\n"
- "[\"stop_distance\"]: target maxiumum distance from target [default: autopilot guess]",
- &LLAgentListener::startFollowPilot);
+ "[\"stop_distance\"]: maximum stop distance from target [default: autopilot guess]",
+ &LLAgentListener::startFollowPilot,
+ llsd::map("reply", LLSD()));
add("setAutoPilotTarget",
"Update target for currently running autopilot:\n"
"[\"target_global\"]: array of target global {x, y, z} position",
@@ -138,6 +138,69 @@ LLAgentListener::LLAgentListener(LLAgent &agent)
"[\"contrib\"]: user's land contribution to this group\n",
&LLAgentListener::getGroups,
LLSDMap("reply", LLSD()));
+ //camera params are similar to LSL, see https://wiki.secondlife.com/wiki/LlSetCameraParams
+ add("setCameraParams",
+ "Set Follow camera params, and then activate it:\n"
+ "[\"camera_pos\"]: vector3, camera position in region coordinates\n"
+ "[\"focus_pos\"]: vector3, what the camera is aimed at (in region coordinates)\n"
+ "[\"focus_offset\"]: vector3, adjusts the camera focus position relative to the target, default is (1, 0, 0)\n"
+ "[\"distance\"]: float (meters), distance the camera wants to be from its target, default is 3\n"
+ "[\"focus_threshold\"]: float (meters), sets the radius of a sphere around the camera's target position within which its focus is not affected by target motion, default is 1\n"
+ "[\"camera_threshold\"]: float (meters), sets the radius of a sphere around the camera's ideal position within which it is not affected by target motion, default is 1\n"
+ "[\"focus_lag\"]: float (seconds), how much the camera lags as it tries to aim towards the target, default is 0.1\n"
+ "[\"camera_lag\"]: float (seconds), how much the camera lags as it tries to move towards its 'ideal' position, default is 0.1\n"
+ "[\"camera_pitch\"]: float (degrees), adjusts the angular amount that the camera aims straight ahead vs. straight down, maintaining the same distance, default is 0\n"
+ "[\"behindness_angle\"]: float (degrees), sets the angle in degrees within which the camera is not constrained by changes in target rotation, default is 10\n"
+ "[\"behindness_lag\"]: float (seconds), sets how strongly the camera is forced to stay behind the target if outside of behindness angle, default is 0\n"
+ "[\"camera_locked\"]: bool, locks the camera position so it will not move\n"
+ "[\"focus_locked\"]: bool, locks the camera focus so it will not move",
+ &LLAgentListener::setFollowCamParams);
+ add("setFollowCamActive",
+ "Turns on or off scripted control of the camera using boolean [\"active\"]",
+ &LLAgentListener::setFollowCamActive,
+ llsd::map("active", LLSD()));
+ add("removeCameraParams",
+ "Reset Follow camera params",
+ &LLAgentListener::removeFollowCamParams);
+
+ add("playAnimation",
+ "Play [\"item_id\"] animation locally (by default) or [\"inworld\"] (when set to true)",
+ &LLAgentListener::playAnimation,
+ llsd::map("item_id", LLSD(), "reply", LLSD()));
+ add("stopAnimation",
+ "Stop playing [\"item_id\"] animation",
+ &LLAgentListener::stopAnimation,
+ llsd::map("item_id", LLSD(), "reply", LLSD()));
+ add("getAnimationInfo",
+ "Return information about [\"item_id\"] animation",
+ &LLAgentListener::getAnimationInfo,
+ llsd::map("item_id", LLSD(), "reply", LLSD()));
+
+ add("getID",
+ "Return your own avatar ID",
+ &LLAgentListener::getID,
+ llsd::map("reply", LLSD()));
+
+ add("getNearbyAvatarsList",
+ "Return result set key [\"result\"] for nearby avatars in a range of [\"dist\"]\n"
+ "if [\"dist\"] is not specified, 'RenderFarClip' setting is used\n"
+ "reply contains \"result\" table with \"id\", \"name\", \"global_pos\", \"region_pos\", \"region_id\" fields",
+ &LLAgentListener::getNearbyAvatarsList,
+ llsd::map("reply", LLSD()));
+
+ add("getNearbyObjectsList",
+ "Return result set key [\"result\"] for nearby objects in a range of [\"dist\"]\n"
+ "if [\"dist\"] is not specified, 'RenderFarClip' setting is used\n"
+ "reply contains \"result\" table with \"id\", \"global_pos\", \"region_pos\", \"region_id\" fields",
+ &LLAgentListener::getNearbyObjectsList,
+ llsd::map("reply", LLSD()));
+
+ add("getAgentScreenPos",
+ "Return screen position of the [\"avatar_id\"] avatar or own avatar if not specified\n"
+ "reply contains \"x\", \"y\" coordinates and \"onscreen\" flag to indicate if it's actually in within the current window\n"
+ "avatar render position is used as the point",
+ &LLAgentListener::getAgentScreenPos,
+ llsd::map("reply", LLSD()));
}
void LLAgentListener::requestTeleport(LLSD const & event_data) const
@@ -168,7 +231,7 @@ void LLAgentListener::requestSit(LLSD const & event_data) const
//mAgent.getAvatarObject()->sitOnObject();
// shamelessly ripped from llviewermenu.cpp:handle_sit_or_stand()
// *TODO - find a permanent place to share this code properly.
-
+ Response response(LLSD(), event_data);
LLViewerObject *object = NULL;
if (event_data.has("obj_uuid"))
{
@@ -177,7 +240,13 @@ void LLAgentListener::requestSit(LLSD const & event_data) const
else if (event_data.has("position"))
{
LLVector3 target_position = ll_vector3_from_sd(event_data["position"]);
- object = findObjectClosestTo(target_position);
+ object = findObjectClosestTo(target_position, true);
+ }
+ else
+ {
+ //just sit on the ground
+ mAgent.setControlFlags(AGENT_CONTROL_SIT_ON_GROUND);
+ return;
}
if (object && object->getPCode() == LL_PCODE_VOLUME)
@@ -194,8 +263,7 @@ void LLAgentListener::requestSit(LLSD const & event_data) const
}
else
{
- LL_WARNS() << "LLAgent requestSit could not find the sit target: "
- << event_data << LL_ENDL;
+ response.error("requestSit could not find the sit target");
}
}
@@ -205,7 +273,7 @@ void LLAgentListener::requestStand(LLSD const & event_data) const
}
-LLViewerObject * LLAgentListener::findObjectClosestTo( const LLVector3 & position ) const
+LLViewerObject * LLAgentListener::findObjectClosestTo(const LLVector3 & position, bool sit_target) const
{
LLViewerObject *object = NULL;
@@ -216,8 +284,13 @@ LLViewerObject * LLAgentListener::findObjectClosestTo( const LLVector3 & positio
while (cur_index < num_objects)
{
LLViewerObject * cur_object = gObjectList.getObject(cur_index++);
- if (cur_object)
- { // Calculate distance from the target position
+ if (cur_object && !cur_object->isAttachment())
+ {
+ if(sit_target && (cur_object->getPCode() != LL_PCODE_VOLUME))
+ {
+ continue;
+ }
+ // Calculate distance from the target position
LLVector3 target_diff = cur_object->getPositionRegion() - position;
F32 distance_to_target = target_diff.length();
if (distance_to_target < min_distance)
@@ -296,22 +369,6 @@ void LLAgentListener::resetAxes(const LLSD& event_data) const
}
}
-void LLAgentListener::getAxes(const LLSD& event_data) const
-{
- LLQuaternion quat(mAgent.getQuat());
- F32 roll, pitch, yaw;
- quat.getEulerAngles(&roll, &pitch, &yaw);
- // The official query API for LLQuaternion's [x, y, z, w] values is its
- // public member mQ...
- LLSD reply = LLSD::emptyMap();
- reply["quat"] = llsd_copy_array(boost::begin(quat.mQ), boost::end(quat.mQ));
- reply["euler"] = LLSD::emptyMap();
- reply["euler"]["roll"] = roll;
- reply["euler"]["pitch"] = pitch;
- reply["euler"]["yaw"] = yaw;
- sendReply(reply, event_data);
-}
-
void LLAgentListener::getPosition(const LLSD& event_data) const
{
F32 roll, pitch, yaw;
@@ -333,14 +390,13 @@ void LLAgentListener::getPosition(const LLSD& event_data) const
void LLAgentListener::startAutoPilot(LLSD const & event_data)
{
- LLQuaternion target_rotation_value;
LLQuaternion* target_rotation = NULL;
if (event_data.has("target_rotation"))
{
- target_rotation_value = ll_quaternion_from_sd(event_data["target_rotation"]);
+ LLQuaternion target_rotation_value = ll_quaternion_from_sd(event_data["target_rotation"]);
target_rotation = &target_rotation_value;
}
- // *TODO: Use callback_pump and callback_data
+
F32 rotation_threshold = 0.03f;
if (event_data.has("rotation_threshold"))
{
@@ -360,13 +416,24 @@ void LLAgentListener::startAutoPilot(LLSD const & event_data)
stop_distance = (F32)event_data["stop_distance"].asReal();
}
+ std::string behavior_name = LLCoros::getName();
+ if (event_data.has("behavior_name"))
+ {
+ behavior_name = event_data["behavior_name"].asString();
+ }
+
// Clear follow target, this is doing a path
mFollowTarget.setNull();
+ auto finish_cb = [](bool success, void*)
+ {
+ LLEventPumps::instance().obtain("LLAutopilot").post(llsd::map("success", success));
+ };
+
mAgent.startAutoPilotGlobal(ll_vector3d_from_sd(event_data["target_global"]),
- event_data["behavior_name"],
+ behavior_name,
target_rotation,
- NULL, NULL,
+ finish_cb, NULL,
stop_distance,
rotation_threshold,
allow_flying);
@@ -374,7 +441,7 @@ void LLAgentListener::startAutoPilot(LLSD const & event_data)
void LLAgentListener::getAutoPilot(const LLSD& event_data) const
{
- LLSD reply = LLSD::emptyMap();
+ Response reply(LLSD(), event_data);
LLSD::Boolean enabled = mAgent.getAutoPilot();
reply["enabled"] = enabled;
@@ -403,12 +470,11 @@ void LLAgentListener::getAutoPilot(const LLSD& event_data) const
reply["rotation_threshold"] = mAgent.getAutoPilotRotationThreshold();
reply["behavior_name"] = mAgent.getAutoPilotBehaviorName();
reply["fly"] = (LLSD::Boolean) mAgent.getFlying();
-
- sendReply(reply, event_data);
}
void LLAgentListener::startFollowPilot(LLSD const & event_data)
{
+ Response response(LLSD(), event_data);
LLUUID target_id;
bool allow_flying = true;
@@ -442,6 +508,10 @@ void LLAgentListener::startFollowPilot(LLSD const & event_data)
}
}
}
+ else
+ {
+ return response.error("'leader_id' or 'avatar_name' should be specified");
+ }
F32 stop_distance = 0.f;
if (event_data.has("stop_distance"))
@@ -449,13 +519,16 @@ void LLAgentListener::startFollowPilot(LLSD const & event_data)
stop_distance = (F32)event_data["stop_distance"].asReal();
}
- if (target_id.notNull())
+ if (!gObjectList.findObject(target_id))
{
- mAgent.setFlying(allow_flying);
- mFollowTarget = target_id; // Save follow target so we can report distance later
-
- mAgent.startFollowPilot(target_id, allow_flying, stop_distance);
+ std::string target_info = event_data.has("leader_id") ? event_data["leader_id"] : event_data["avatar_name"];
+ return response.error(stringize("Target ", std::quoted(target_info), " was not found"));
}
+
+ mAgent.setFlying(allow_flying);
+ mFollowTarget = target_id; // Save follow target so we can report distance later
+
+ mAgent.startFollowPilot(target_id, allow_flying, stop_distance);
}
void LLAgentListener::setAutoPilotTarget(LLSD const & event_data) const
@@ -519,3 +592,209 @@ void LLAgentListener::getGroups(const LLSD& event) const
}
sendReply(LLSDMap("groups", reply), event);
}
+
+/*----------------------------- camera control -----------------------------*/
+// specialize LLSDParam to support (const LLVector3&) arguments -- this
+// wouldn't even be necessary except that the relevant LLVector3 constructor
+// is explicitly explicit
+template <>
+class LLSDParam<const LLVector3&>: public LLSDParamBase
+{
+public:
+ LLSDParam(const LLSD& value): value(LLVector3(value)) {}
+
+ operator const LLVector3&() const { return value; }
+
+private:
+ LLVector3 value;
+};
+
+// accept any of a number of similar LLFollowCamMgr methods with different
+// argument types, and return a wrapper lambda that accepts LLSD and converts
+// to the target argument type
+template <typename T>
+auto wrap(void (LLFollowCamMgr::*method)(const LLUUID& source, T arg))
+{
+ return [method](LLFollowCamMgr& followcam, const LLUUID& source, const LLSD& arg)
+ { (followcam.*method)(source, LLSDParam<T>(arg)); };
+}
+
+// table of supported LLFollowCamMgr methods,
+// with the corresponding setFollowCamParams() argument keys
+static std::pair<std::string, std::function<void(LLFollowCamMgr&, const LLUUID&, const LLSD&)>>
+cam_params[] =
+{
+ { "camera_pos", wrap(&LLFollowCamMgr::setPosition) },
+ { "focus_pos", wrap(&LLFollowCamMgr::setFocus) },
+ { "focus_offset", wrap(&LLFollowCamMgr::setFocusOffset) },
+ { "camera_locked", wrap(&LLFollowCamMgr::setPositionLocked) },
+ { "focus_locked", wrap(&LLFollowCamMgr::setFocusLocked) },
+ { "distance", wrap(&LLFollowCamMgr::setDistance) },
+ { "focus_threshold", wrap(&LLFollowCamMgr::setFocusThreshold) },
+ { "camera_threshold", wrap(&LLFollowCamMgr::setPositionThreshold) },
+ { "focus_lag", wrap(&LLFollowCamMgr::setFocusLag) },
+ { "camera_lag", wrap(&LLFollowCamMgr::setPositionLag) },
+ { "camera_pitch", wrap(&LLFollowCamMgr::setPitch) },
+ { "behindness_lag", wrap(&LLFollowCamMgr::setBehindnessLag) },
+ { "behindness_angle", wrap(&LLFollowCamMgr::setBehindnessAngle) },
+};
+
+void LLAgentListener::setFollowCamParams(const LLSD& event) const
+{
+ auto& followcam{ LLFollowCamMgr::instance() };
+ for (const auto& pair : cam_params)
+ {
+ if (event.has(pair.first))
+ {
+ pair.second(followcam, gAgentID, event[pair.first]);
+ }
+ }
+ followcam.setCameraActive(gAgentID, true);
+}
+
+void LLAgentListener::setFollowCamActive(LLSD const & event) const
+{
+ LLFollowCamMgr::getInstance()->setCameraActive(gAgentID, event["active"]);
+}
+
+void LLAgentListener::removeFollowCamParams(LLSD const & event) const
+{
+ LLFollowCamMgr::getInstance()->removeFollowCamParams(gAgentID);
+}
+
+LLViewerInventoryItem* get_anim_item(LLEventAPI::Response &response, const LLSD &event_data)
+{
+ LLViewerInventoryItem* item = gInventory.getItem(event_data["item_id"].asUUID());
+ if (!item || (item->getInventoryType() != LLInventoryType::IT_ANIMATION))
+ {
+ response.error(stringize("Animation item ", std::quoted(event_data["item_id"].asString()), " was not found"));
+ return NULL;
+ }
+ return item;
+}
+
+void LLAgentListener::playAnimation(LLSD const &event_data)
+{
+ Response response(LLSD(), event_data);
+ if (LLViewerInventoryItem* item = get_anim_item(response, event_data))
+ {
+ if (event_data["inworld"].asBoolean())
+ {
+ mAgent.sendAnimationRequest(item->getAssetUUID(), ANIM_REQUEST_START);
+ }
+ else
+ {
+ gAgentAvatarp->startMotion(item->getAssetUUID());
+ }
+ }
+}
+
+void LLAgentListener::stopAnimation(LLSD const &event_data)
+{
+ Response response(LLSD(), event_data);
+ if (LLViewerInventoryItem* item = get_anim_item(response, event_data))
+ {
+ gAgentAvatarp->stopMotion(item->getAssetUUID());
+ mAgent.sendAnimationRequest(item->getAssetUUID(), ANIM_REQUEST_STOP);
+ }
+}
+
+void LLAgentListener::getAnimationInfo(LLSD const &event_data)
+{
+ Response response(LLSD(), event_data);
+ if (LLViewerInventoryItem* item = get_anim_item(response, event_data))
+ {
+ // if motion exists, will return existing one
+ LLMotion* motion = gAgentAvatarp->createMotion(item->getAssetUUID());
+ response["anim_info"] = llsd::map("duration", motion->getDuration(),
+ "is_loop", motion->getLoop(),
+ "num_joints", motion->getNumJointMotions(),
+ "asset_id", item->getAssetUUID(),
+ "priority", motion->getPriority());
+ }
+}
+
+void LLAgentListener::getID(LLSD const& event_data)
+{
+ Response response(llsd::map("id", gAgentID), event_data);
+}
+
+F32 get_search_radius(LLSD const& event_data)
+{
+ static LLCachedControl<F32> render_far_clip(gSavedSettings, "RenderFarClip", 64);
+ F32 dist = render_far_clip;
+ if (event_data.has("dist"))
+ {
+ dist = llclamp((F32)event_data["dist"].asReal(), 1, 512);
+ }
+ return dist * dist;
+}
+
+void LLAgentListener::getNearbyAvatarsList(LLSD const& event_data)
+{
+ Response response(LLSD(), event_data);
+ F32 radius = get_search_radius(event_data);
+ LLVector3d agent_pos = gAgent.getPositionGlobal();
+ for (LLCharacter* character : LLCharacter::sInstances)
+ {
+ LLVOAvatar* avatar = (LLVOAvatar*)character;
+ if (avatar && !avatar->isDead() && !avatar->isControlAvatar() && !avatar->isSelf())
+ {
+ if ((dist_vec_squared(avatar->getPositionGlobal(), agent_pos) <= radius))
+ {
+ LLAvatarName av_name;
+ LLAvatarNameCache::get(avatar->getID(), &av_name);
+ LLVector3 region_pos = avatar->getCharacterPosition();
+ response["result"].append(llsd::map("id", avatar->getID(), "global_pos", ll_sd_from_vector3d(avatar->getPosGlobalFromAgent(region_pos)),
+ "region_pos", ll_sd_from_vector3(region_pos), "name", av_name.getUserName(), "region_id", avatar->getRegion()->getRegionID()));
+ }
+ }
+ }
+}
+
+void LLAgentListener::getNearbyObjectsList(LLSD const& event_data)
+{
+ Response response(LLSD(), event_data);
+ F32 radius = get_search_radius(event_data);
+ S32 num_objects = gObjectList.getNumObjects();
+ LLVector3d agent_pos = gAgent.getPositionGlobal();
+ for (S32 i = 0; i < num_objects; ++i)
+ {
+ LLViewerObject* object = gObjectList.getObject(i);
+ if (object && object->getVolume() && !object->isAttachment())
+ {
+ if ((dist_vec_squared(object->getPositionGlobal(), agent_pos) <= radius))
+ {
+ response["result"].append(llsd::map("id", object->getID(), "global_pos", ll_sd_from_vector3d(object->getPositionGlobal()), "region_pos",
+ ll_sd_from_vector3(object->getPositionRegion()), "region_id", object->getRegion()->getRegionID()));
+ }
+ }
+ }
+}
+
+void LLAgentListener::getAgentScreenPos(LLSD const& event_data)
+{
+ Response response(LLSD(), event_data);
+ LLVector3 render_pos;
+ if (event_data.has("avatar_id") && (event_data["avatar_id"].asUUID() != gAgentID))
+ {
+ LLUUID avatar_id(event_data["avatar_id"]);
+ for (LLCharacter* character : LLCharacter::sInstances)
+ {
+ LLVOAvatar* avatar = (LLVOAvatar*)character;
+ if (!avatar->isDead() && (avatar->getID() == avatar_id))
+ {
+ render_pos = avatar->getRenderPosition();
+ break;
+ }
+ }
+ }
+ else if (gAgentAvatarp.notNull() && gAgentAvatarp->isValid())
+ {
+ render_pos = gAgentAvatarp->getRenderPosition();
+ }
+ LLCoordGL screen_pos;
+ response["onscreen"] = LLViewerCamera::getInstance()->projectPosAgentToScreen(render_pos, screen_pos, false);
+ response["x"] = screen_pos.mX;
+ response["y"] = screen_pos.mY;
+}
diff --git a/indra/newview/llagentlistener.h b/indra/newview/llagentlistener.h
index c544d089ce..b5bea8c0bd 100644
--- a/indra/newview/llagentlistener.h
+++ b/indra/newview/llagentlistener.h
@@ -48,7 +48,6 @@ private:
void requestStand(LLSD const & event_data) const;
void requestTouch(LLSD const & event_data) const;
void resetAxes(const LLSD& event_data) const;
- void getAxes(const LLSD& event_data) const;
void getGroups(const LLSD& event) const;
void getPosition(const LLSD& event_data) const;
void startAutoPilot(const LLSD& event_data);
@@ -58,7 +57,20 @@ private:
void stopAutoPilot(const LLSD& event_data) const;
void lookAt(LLSD const & event_data) const;
- LLViewerObject * findObjectClosestTo( const LLVector3 & position ) const;
+ void setFollowCamParams(LLSD const & event_data) const;
+ void setFollowCamActive(LLSD const & event_data) const;
+ void removeFollowCamParams(LLSD const & event_data) const;
+
+ void playAnimation(LLSD const &event_data);
+ void stopAnimation(LLSD const &event_data);
+ void getAnimationInfo(LLSD const &event_data);
+
+ void getID(LLSD const& event_data);
+ void getNearbyAvatarsList(LLSD const& event_data);
+ void getNearbyObjectsList(LLSD const& event_data);
+ void getAgentScreenPos(LLSD const& event_data);
+
+ LLViewerObject * findObjectClosestTo( const LLVector3 & position, bool sit_target = false ) const;
private:
LLAgent & mAgent;
diff --git a/indra/newview/llappearancelistener.cpp b/indra/newview/llappearancelistener.cpp
new file mode 100644
index 0000000000..dc7bbc3236
--- /dev/null
+++ b/indra/newview/llappearancelistener.cpp
@@ -0,0 +1,158 @@
+/**
+ * @file llappearancelistener.cpp
+ *
+ * $LicenseInfo:firstyear=2024&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2024, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "llappearancelistener.h"
+
+#include "llappearancemgr.h"
+#include "llinventoryfunctions.h"
+#include "lltransutil.h"
+#include "llwearableitemslist.h"
+#include "stringize.h"
+
+LLAppearanceListener::LLAppearanceListener()
+ : LLEventAPI("LLAppearance",
+ "API to wear a specified outfit and wear/remove individual items")
+{
+ add("wearOutfit",
+ "Wear outfit by folder id: [\"folder_id\"] OR by folder name: [\"folder_name\"]\n"
+ "When [\"append\"] is true, outfit will be added to COF\n"
+ "otherwise it will replace current oufit",
+ &LLAppearanceListener::wearOutfit);
+
+ add("wearItems",
+ "Wear items by id: [items_id]",
+ &LLAppearanceListener::wearItems,
+ llsd::map("items_id", LLSD(), "replace", LLSD()));
+
+ add("detachItems",
+ "Detach items by id: [items_id]",
+ &LLAppearanceListener::detachItems,
+ llsd::map("items_id", LLSD()));
+
+ add("getOutfitsList",
+ "Return the table with Outfits info(id and name)",
+ &LLAppearanceListener::getOutfitsList);
+
+ add("getOutfitItems",
+ "Return the table of items with info(id : name, wearable_type, is_worn) inside specified outfit folder",
+ &LLAppearanceListener::getOutfitItems);
+}
+
+
+void LLAppearanceListener::wearOutfit(LLSD const &data)
+{
+ Response response(LLSD(), data);
+ if (!data.has("folder_id") && !data.has("folder_name"))
+ {
+ return response.error("Either [folder_id] or [folder_name] is required");
+ }
+
+ bool append = data.has("append") ? data["append"].asBoolean() : false;
+ if (!LLAppearanceMgr::instance().wearOutfit(data, append))
+ {
+ response.error("Failed to wear outfit");
+ }
+}
+
+void LLAppearanceListener::wearItems(LLSD const &data)
+{
+ const LLSD& items_id{ data["items_id"] };
+ uuid_vec_t ids;
+ if (!items_id.isArray())
+ {
+ ids.push_back(items_id.asUUID());
+ }
+ else // array
+ {
+ for (const auto& id : llsd::inArray(items_id))
+ {
+ ids.push_back(id);
+ }
+ }
+ LLAppearanceMgr::instance().wearItemsOnAvatar(ids, true, data["replace"].asBoolean());
+}
+
+void LLAppearanceListener::detachItems(LLSD const &data)
+{
+ const LLSD& items_id{ data["items_id"] };
+ uuid_vec_t ids;
+ if (!items_id.isArray())
+ {
+ ids.push_back(items_id.asUUID());
+ }
+ else // array
+ {
+ for (const auto& id : llsd::inArray(items_id))
+ {
+ ids.push_back(id);
+ }
+ }
+ LLAppearanceMgr::instance().removeItemsFromAvatar(ids);
+}
+
+void LLAppearanceListener::getOutfitsList(LLSD const &data)
+{
+ Response response(LLSD(), data);
+ const LLUUID outfits_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_MY_OUTFITS);
+
+ LLInventoryModel::cat_array_t cat_array;
+ LLInventoryModel::item_array_t item_array;
+
+ LLIsFolderType is_category(LLFolderType::FT_OUTFIT);
+ gInventory.collectDescendentsIf(outfits_id, cat_array, item_array, LLInventoryModel::EXCLUDE_TRASH, is_category);
+
+ response["outfits"] = llsd::toMap(cat_array,
+ [](const LLPointer<LLViewerInventoryCategory> &cat)
+ { return std::make_pair(cat->getUUID().asString(), cat->getName()); });
+}
+
+void LLAppearanceListener::getOutfitItems(LLSD const &data)
+{
+ Response response(LLSD(), data);
+ LLUUID outfit_id(data["outfit_id"].asUUID());
+ LLViewerInventoryCategory *cat = gInventory.getCategory(outfit_id);
+ if (!cat || cat->getPreferredType() != LLFolderType::FT_OUTFIT)
+ {
+ return response.error(stringize("Couldn't find outfit ", outfit_id.asString()));
+ }
+ LLInventoryModel::cat_array_t cat_array;
+ LLInventoryModel::item_array_t item_array;
+
+ LLFindOutfitItems collector = LLFindOutfitItems();
+ gInventory.collectDescendentsIf(outfit_id, cat_array, item_array, LLInventoryModel::EXCLUDE_TRASH, collector);
+
+ response["items"] = llsd::toMap(item_array,
+ [](const LLPointer<LLViewerInventoryItem> &it)
+ {
+ return std::make_pair(
+ it->getUUID().asString(),
+ llsd::map(
+ "name", it->getName(),
+ "wearable_type", LLWearableType::getInstance()->getTypeName(it->isWearableType() ? it->getWearableType() : LLWearableType::WT_NONE),
+ "is_worn", get_is_item_worn(it)));
+ });
+}
diff --git a/indra/newview/llappearancelistener.h b/indra/newview/llappearancelistener.h
new file mode 100644
index 0000000000..04c5eac2eb
--- /dev/null
+++ b/indra/newview/llappearancelistener.h
@@ -0,0 +1,46 @@
+/**
+ * @file llappearancelistener.h
+ *
+ * $LicenseInfo:firstyear=2024&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2024, 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_LLAPPEARANCELISTENER_H
+#define LL_LLAPPEARANCELISTENER_H
+
+#include "lleventapi.h"
+
+class LLAppearanceListener : public LLEventAPI
+{
+public:
+ LLAppearanceListener();
+
+private:
+ void wearOutfit(LLSD const &data);
+ void wearItems(LLSD const &data);
+ void detachItems(LLSD const &data);
+ void getOutfitsList(LLSD const &data);
+ void getOutfitItems(LLSD const &data);
+};
+
+#endif // LL_LLAPPEARANCELISTENER_H
+
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 5748d52ab7..5d70bfbc9e 100644
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -31,6 +31,7 @@
#include "llagent.h"
#include "llagentcamera.h"
#include "llagentwearables.h"
+#include "llappearancelistener.h"
#include "llappearancemgr.h"
#include "llattachmentsmgr.h"
#include "llcommandhandler.h"
@@ -66,6 +67,8 @@
#include "llavatarpropertiesprocessor.h"
+LLAppearanceListener sAppearanceListener;
+
namespace
{
const S32 BAKE_RETRY_MAX_COUNT = 5;
@@ -4765,6 +4768,11 @@ bool wear_category(const LLSD& query_map, bool append)
return false;
}
+bool LLAppearanceMgr::wearOutfit(const LLSD& query_map, bool append)
+{
+ return wear_category(query_map, append);
+}
+
class LLWearFolderHandler : public LLCommandHandler
{
public:
diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h
index a6ee62137b..0a41a91750 100644
--- a/indra/newview/llappearancemgr.h
+++ b/indra/newview/llappearancemgr.h
@@ -60,6 +60,7 @@ public:
void wearInventoryCategoryOnAvatar(LLInventoryCategory* category, bool append);
void wearCategoryFinal(const LLUUID& cat_id, bool copy_items, bool append);
void wearOutfitByName(const std::string& name);
+ bool wearOutfit(const LLSD& query_map, bool append = false);
void changeOutfit(bool proceed, const LLUUID& category, bool append);
void replaceCurrentOutfit(const LLUUID& new_outfit);
void renameOutfit(const LLUUID& outfit_id);
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 8fdc7f692e..d149d4119d 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -255,6 +255,9 @@ using namespace LL;
#include "llviewereventrecorder.h"
#include <chrono>
+#include "rlvactions.h"
+#include "rlvcommon.h"
+#include "rlvhandler.h"
// *FIX: These extern globals should be cleaned up.
// The globals either represent state/config/resource-storage of either
@@ -500,7 +503,7 @@ static void deferred_ui_audio_callback(const LLUUID& uuid)
bool create_text_segment_icon_from_url_match(LLUrlMatch* match,LLTextBase* base)
{
- if(!match || !base || base->getPlainText())
+ if (!match || match->getSkipProfileIcon() || !base || base->getPlainText())
return false;
LLUUID match_id = match->getID();
@@ -1725,6 +1728,9 @@ bool LLAppViewer::cleanup()
//ditch LLVOAvatarSelf instance
gAgentAvatarp = NULL;
+ // Sanity check to catch cases where someone forgot to do an RlvActions::isRlvEnabled() check
+ LL_ERRS_IF(!RlvHandler::isEnabled() && RlvHandler::instanceExists()) << "RLV handler instance exists even though RLVa is disabled" << LL_ENDL;
+
LLNotifications::instance().clear();
// workaround for DEV-35406 crash on shutdown
@@ -3386,6 +3392,7 @@ LLSD LLAppViewer::getViewerInfo() const
}
#endif
+ info["RLV_VERSION"] = RlvActions::isRlvEnabled() ? Rlv::Strings::getVersionAbout() : "(disabled)";
info["OPENGL_VERSION"] = ll_safe_string((const char*)(glGetString(GL_VERSION)));
// Settings
@@ -4308,7 +4315,7 @@ U32 LLAppViewer::getTextureCacheVersion()
U32 LLAppViewer::getDiskCacheVersion()
{
// Viewer disk cache version intorduced in Simple Cache Viewer, change if the cache format changes.
- const U32 DISK_CACHE_VERSION = 2;
+ const U32 DISK_CACHE_VERSION = 3;
return DISK_CACHE_VERSION ;
}
@@ -4600,6 +4607,7 @@ void LLAppViewer::saveFinalSnapshot()
false,
gSavedSettings.getBOOL("RenderHUDInSnapshot"),
true,
+ false,
LLSnapshotModel::SNAPSHOT_TYPE_COLOR,
LLSnapshotModel::SNAPSHOT_FORMAT_PNG);
mSavedFinalSnapshot = true;
@@ -5314,6 +5322,8 @@ void LLAppViewer::sendLogoutRequest()
msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
gAgent.sendReliableMessage();
+ LL_INFOS("Agent") << "Logging out as agent: " << gAgent.getID() << " Session: " << gAgent.getSessionID() << LL_ENDL;
+
gLogoutTimer.reset();
gLogoutMaxTime = LOGOUT_REQUEST_TIME;
mLogoutRequestSent = true;
diff --git a/indra/newview/llappviewerwin32.cpp b/indra/newview/llappviewerwin32.cpp
index 169fea320a..ef609026ad 100644
--- a/indra/newview/llappviewerwin32.cpp
+++ b/indra/newview/llappviewerwin32.cpp
@@ -814,69 +814,11 @@ void write_debug_dx(const std::string& str)
bool LLAppViewerWin32::initHardwareTest()
{
- //
- // Do driver verification and initialization based on DirectX
- // hardware polling and driver versions
- //
- if (true == gSavedSettings.getBOOL("ProbeHardwareOnStartup") && false == gSavedSettings.getBOOL("NoHardwareProbe"))
- {
- // per DEV-11631 - disable hardware probing for everything
- // but vram.
- bool vram_only = true;
-
- LLSplashScreen::update(LLTrans::getString("StartupDetectingHardware"));
-
- LL_DEBUGS("AppInit") << "Attempting to poll DirectX for hardware info" << LL_ENDL;
- gDXHardware.setWriteDebugFunc(write_debug_dx);
- bool probe_ok = gDXHardware.getInfo(vram_only);
-
- if (!probe_ok
- && gWarningSettings.getBOOL("AboutDirectX9"))
- {
- LL_WARNS("AppInit") << "DirectX probe failed, alerting user." << LL_ENDL;
-
- // Warn them that runnin without DirectX 9 will
- // not allow us to tell them about driver issues
- std::ostringstream msg;
- msg << LLTrans::getString ("MBNoDirectX");
- S32 button = OSMessageBox(
- msg.str(),
- LLTrans::getString("MBWarning"),
- OSMB_YESNO);
- if (OSBTN_NO== button)
- {
- LL_INFOS("AppInit") << "User quitting after failed DirectX 9 detection" << LL_ENDL;
- LLWeb::loadURLExternal("http://secondlife.com/support/", false);
- return false;
- }
- gWarningSettings.setBOOL("AboutDirectX9", false);
- }
- LL_DEBUGS("AppInit") << "Done polling DirectX for hardware info" << LL_ENDL;
-
- // Only probe once after installation
- gSavedSettings.setBOOL("ProbeHardwareOnStartup", false);
-
- // Disable so debugger can work
- std::string splash_msg;
- LLStringUtil::format_map_t args;
- args["[APP_NAME]"] = LLAppViewer::instance()->getSecondLifeTitle();
- splash_msg = LLTrans::getString("StartupLoading", args);
-
- LLSplashScreen::update(splash_msg);
- }
-
if (!restoreErrorTrap())
{
- LL_WARNS("AppInit") << " Someone took over my exception handler (post hardware probe)!" << LL_ENDL;
+ LL_WARNS("AppInit") << " Someone took over my exception handler!" << LL_ENDL;
}
- if (gGLManager.mVRAM == 0)
- {
- gGLManager.mVRAM = gDXHardware.getVRAM();
- }
-
- LL_INFOS("AppInit") << "Detected VRAM: " << gGLManager.mVRAM << LL_ENDL;
-
return true;
}
diff --git a/indra/newview/llavatarlist.cpp b/indra/newview/llavatarlist.cpp
index 52cd86951d..5f9d03ca66 100644
--- a/indra/newview/llavatarlist.cpp
+++ b/indra/newview/llavatarlist.cpp
@@ -147,6 +147,7 @@ LLAvatarList::LLAvatarList(const Params& p)
, mShowSpeakingIndicator(p.show_speaking_indicator)
, mShowPermissions(p.show_permissions_granted)
, mShowCompleteName(false)
+, mForceCompleteName(false)
{
setCommitOnSelectionChange(true);
@@ -183,7 +184,7 @@ void LLAvatarList::setShowIcons(std::string param_name)
std::string LLAvatarList::getAvatarName(LLAvatarName av_name)
{
- return mShowCompleteName? av_name.getCompleteName(false) : av_name.getDisplayName();
+ return mShowCompleteName? av_name.getCompleteName(false, mForceCompleteName) : av_name.getDisplayName();
}
// virtual
@@ -381,7 +382,7 @@ void LLAvatarList::updateAvatarNames()
for( std::vector<LLPanel*>::const_iterator it = items.begin(); it != items.end(); it++)
{
LLAvatarListItem* item = static_cast<LLAvatarListItem*>(*it);
- item->setShowCompleteName(mShowCompleteName);
+ item->setShowCompleteName(mShowCompleteName, mForceCompleteName);
item->updateAvatarName();
}
mNeedUpdateNames = false;
@@ -421,6 +422,11 @@ boost::signals2::connection LLAvatarList::setItemDoubleClickCallback(const mouse
return mItemDoubleClickSignal.connect(cb);
}
+boost::signals2::connection LLAvatarList::setItemClickedCallback(const mouse_signal_t::slot_type& cb)
+{
+ return mItemClickedSignal.connect(cb);
+}
+
//virtual
S32 LLAvatarList::notifyParent(const LLSD& info)
{
@@ -435,7 +441,7 @@ S32 LLAvatarList::notifyParent(const LLSD& info)
void LLAvatarList::addNewItem(const LLUUID& id, const std::string& name, bool is_online, EAddPosition pos)
{
LLAvatarListItem* item = new LLAvatarListItem();
- item->setShowCompleteName(mShowCompleteName);
+ item->setShowCompleteName(mShowCompleteName, mForceCompleteName);
// This sets the name as a side effect
item->setAvatarId(id, mSessionID, mIgnoreOnlineStatus);
item->setOnline(mIgnoreOnlineStatus ? true : is_online);
@@ -451,6 +457,7 @@ void LLAvatarList::addNewItem(const LLUUID& id, const std::string& name, bool is
item->setDoubleClickCallback(boost::bind(&LLAvatarList::onItemDoubleClicked, this, _1, _2, _3, _4));
+ item->setMouseDownCallback(boost::bind(&LLAvatarList::onItemClicked, this, _1, _2, _3, _4));
addItem(item, id, pos);
}
@@ -609,6 +616,11 @@ void LLAvatarList::onItemDoubleClicked(LLUICtrl* ctrl, S32 x, S32 y, MASK mask)
mItemDoubleClickSignal(ctrl, x, y, mask);
}
+void LLAvatarList::onItemClicked(LLUICtrl* ctrl, S32 x, S32 y, MASK mask)
+{
+ mItemClickedSignal(ctrl, x, y, mask);
+}
+
bool LLAvatarItemComparator::compare(const LLPanel* item1, const LLPanel* item2) const
{
const LLAvatarListItem* avatar_item1 = dynamic_cast<const LLAvatarListItem*>(item1);
diff --git a/indra/newview/llavatarlist.h b/indra/newview/llavatarlist.h
index 37ad578a20..97b4f05985 100644
--- a/indra/newview/llavatarlist.h
+++ b/indra/newview/llavatarlist.h
@@ -98,11 +98,13 @@ public:
boost::signals2::connection setItemDoubleClickCallback(const mouse_signal_t::slot_type& cb);
+ boost::signals2::connection setItemClickedCallback(const mouse_signal_t::slot_type& cb);
+
virtual S32 notifyParent(const LLSD& info);
void handleDisplayNamesOptionChanged();
- void setShowCompleteName(bool show) { mShowCompleteName = show;};
+ void setShowCompleteName(bool show, bool force = false) { mShowCompleteName = show; mForceCompleteName = force; };
protected:
void refresh();
@@ -117,6 +119,7 @@ protected:
void updateLastInteractionTimes();
void rebuildNames();
void onItemDoubleClicked(LLUICtrl* ctrl, S32 x, S32 y, MASK mask);
+ void onItemClicked(LLUICtrl* ctrl, S32 x, S32 y, MASK mask);
void updateAvatarNames();
private:
@@ -133,6 +136,7 @@ private:
bool mShowSpeakingIndicator;
bool mShowPermissions;
bool mShowCompleteName;
+ bool mForceCompleteName;
LLTimer* mLITUpdateTimer; // last interaction time update timer
std::string mIconParamName;
@@ -144,6 +148,7 @@ private:
commit_signal_t mRefreshCompleteSignal;
mouse_signal_t mItemDoubleClickSignal;
+ mouse_signal_t mItemClickedSignal;
};
/** Abstract comparator for avatar items */
diff --git a/indra/newview/llavatarlistitem.cpp b/indra/newview/llavatarlistitem.cpp
index 7be4f4eeb8..f6bc59c748 100644
--- a/indra/newview/llavatarlistitem.cpp
+++ b/indra/newview/llavatarlistitem.cpp
@@ -80,6 +80,7 @@ LLAvatarListItem::LLAvatarListItem(bool not_from_ui_factory/* = true*/)
mShowProfileBtn(true),
mShowPermissions(false),
mShowCompleteName(false),
+ mForceCompleteName(false),
mHovered(false),
mAvatarNameCacheConnection(),
mGreyOutUsername("")
@@ -350,13 +351,12 @@ void LLAvatarListItem::setShowProfileBtn(bool show)
void LLAvatarListItem::showSpeakingIndicator(bool visible)
{
- // Already done? Then do nothing.
- if (mSpeakingIndicator->getVisible() == (bool)visible)
- return;
-// Disabled to not contradict with SpeakingIndicatorManager functionality. EXT-3976
-// probably this method should be totally removed.
-// mSpeakingIndicator->setVisible(visible);
-// updateChildren();
+ // used only to hide indicator to not contradict with SpeakingIndicatorManager functionality
+ if (mSpeakingIndicator && !visible)
+ {
+ mSpeakingIndicator->setIsActiveChannel(visible);
+ mSpeakingIndicator->setShowParticipantsSpeaking(visible);
+ }
}
void LLAvatarListItem::setAvatarIconVisible(bool visible)
@@ -443,8 +443,8 @@ void LLAvatarListItem::onAvatarNameCache(const LLAvatarName& av_name)
mAvatarNameCacheConnection.disconnect();
mGreyOutUsername = "";
- std::string name_string = mShowCompleteName? av_name.getCompleteName(false) : av_name.getDisplayName();
- if(av_name.getCompleteName() != av_name.getUserName())
+ std::string name_string = mShowCompleteName? av_name.getCompleteName(false, mForceCompleteName) : av_name.getDisplayName();
+ if(av_name.getCompleteName(false, mForceCompleteName) != av_name.getUserName())
{
mGreyOutUsername = "[ " + av_name.getUserName(true) + " ]";
LLStringUtil::toLower(mGreyOutUsername);
diff --git a/indra/newview/llavatarlistitem.h b/indra/newview/llavatarlistitem.h
index 630a7ec751..f9381f95e3 100644
--- a/indra/newview/llavatarlistitem.h
+++ b/indra/newview/llavatarlistitem.h
@@ -110,7 +110,7 @@ public:
void showAvatarDistance(bool show);
void showLastInteractionTime(bool show);
void setAvatarIconVisible(bool visible);
- void setShowCompleteName(bool show) { mShowCompleteName = show;};
+ void setShowCompleteName(bool show, bool force = false) { mShowCompleteName = show; mForceCompleteName = force;};
const LLUUID& getAvatarId() const;
std::string getAvatarName() const;
@@ -228,6 +228,7 @@ private:
bool mHovered;
bool mShowCompleteName;
+ bool mForceCompleteName;
std::string mGreyOutUsername;
void fetchAvatarName();
diff --git a/indra/newview/llconversationview.cpp b/indra/newview/llconversationview.cpp
index a1f627c8cc..0e0ab236d6 100644
--- a/indra/newview/llconversationview.cpp
+++ b/indra/newview/llconversationview.cpp
@@ -86,7 +86,8 @@ LLConversationViewSession::LLConversationViewSession(const LLConversationViewSes
mHasArrow(true),
mIsInActiveVoiceChannel(false),
mFlashStateOn(false),
- mFlashStarted(false)
+ mFlashStarted(false),
+ mIsAltFlashColor(false)
{
mFlashTimer = new LLFlashTimer();
mAreChildrenInited = true; // inventory only
@@ -157,7 +158,7 @@ void LLConversationViewSession::destroyView()
LLFolderViewFolder::destroyView();
}
-void LLConversationViewSession::setFlashState(bool flash_state)
+void LLConversationViewSession::setFlashState(bool flash_state, bool alternate_color)
{
if (flash_state && !mFlashStateOn)
{
@@ -170,6 +171,7 @@ void LLConversationViewSession::setFlashState(bool flash_state)
mFlashStateOn = flash_state;
mFlashStarted = false;
+ mIsAltFlashColor = mFlashStateOn && (alternate_color || mIsAltFlashColor);
mFlashTimer->stopFlashing();
}
@@ -288,7 +290,8 @@ void LLConversationViewSession::draw()
startFlashing();
// draw highlight for selected items
- drawHighlight(show_context, true, sHighlightBgColor, sFlashBgColor, sFocusOutlineColor, sMouseOverColor);
+ static LLUIColor alt_color = LLUIColorTable::instance().getColor("MentionFlashBgColor", DEFAULT_WHITE);
+ drawHighlight(show_context, true, sHighlightBgColor, mIsAltFlashColor ? alt_color : sFlashBgColor, sFocusOutlineColor, sMouseOverColor);
// Draw children if root folder, or any other folder that is open. Do not draw children when animating to closed state or you get rendering overlap.
bool draw_children = getRoot() == static_cast<LLFolderViewFolder*>(this) || isOpen();
diff --git a/indra/newview/llconversationview.h b/indra/newview/llconversationview.h
index 8eb6392121..a6d240ed84 100644
--- a/indra/newview/llconversationview.h
+++ b/indra/newview/llconversationview.h
@@ -90,7 +90,7 @@ public:
virtual void refresh();
- /*virtual*/ void setFlashState(bool flash_state);
+ /*virtual*/ void setFlashState(bool flash_state, bool alternate_color = false);
void setHighlightState(bool hihglight_state);
LLFloater* getSessionFloater();
@@ -111,6 +111,7 @@ private:
LLFlashTimer* mFlashTimer;
bool mFlashStateOn;
bool mFlashStarted;
+ bool mIsAltFlashColor;
bool mCollapsedMode;
bool mHasArrow;
diff --git a/indra/newview/lldirpicker.cpp b/indra/newview/lldirpicker.cpp
index 1425aab947..fa8acac2ce 100644
--- a/indra/newview/lldirpicker.cpp
+++ b/indra/newview/lldirpicker.cpp
@@ -272,6 +272,7 @@ bool LLDirPicker::getDir(std::string* filename, bool blocking)
}
return !mDir.empty();
#endif
+ return false;
}
std::string LLDirPicker::getDirName()
diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp
index 95f96e85d6..90ee95d424 100644
--- a/indra/newview/lldrawpoolavatar.cpp
+++ b/indra/newview/lldrawpoolavatar.cpp
@@ -491,7 +491,6 @@ void LLDrawPoolAvatar::beginImpostor()
if (!LLPipeline::sReflectionRender)
{
- LLVOAvatar::sRenderDistance = llclamp(LLVOAvatar::sRenderDistance, 16.f, 256.f);
LLVOAvatar::sNumVisibleAvatars = 0;
}
@@ -547,7 +546,6 @@ void LLDrawPoolAvatar::beginDeferredImpostor()
if (!LLPipeline::sReflectionRender)
{
- LLVOAvatar::sRenderDistance = llclamp(LLVOAvatar::sRenderDistance, 16.f, 256.f);
LLVOAvatar::sNumVisibleAvatars = 0;
}
diff --git a/indra/newview/lldrawpoolterrain.h b/indra/newview/lldrawpoolterrain.h
index 5380463d01..23cf253b6a 100644
--- a/indra/newview/lldrawpoolterrain.h
+++ b/indra/newview/lldrawpoolterrain.h
@@ -38,6 +38,7 @@ public:
VERTEX_DATA_MASK = LLVertexBuffer::MAP_VERTEX |
LLVertexBuffer::MAP_NORMAL |
LLVertexBuffer::MAP_TANGENT | // Only PBR terrain uses this currently
+ LLVertexBuffer::MAP_TEXCOORD0 | // Ownership overlay
LLVertexBuffer::MAP_TEXCOORD1
};
diff --git a/indra/newview/llenvironment.cpp b/indra/newview/llenvironment.cpp
index 0017a724ea..875dac103c 100644
--- a/indra/newview/llenvironment.cpp
+++ b/indra/newview/llenvironment.cpp
@@ -2563,7 +2563,6 @@ void LLEnvironment::setSharedEnvironment()
{
clearEnvironment(LLEnvironment::ENV_LOCAL);
setSelectedEnvironment(LLEnvironment::ENV_LOCAL);
- updateEnvironment();
}
void LLEnvironment::setExperienceEnvironment(LLUUID experience_id, LLUUID asset_id, F32 transition_time)
diff --git a/indra/newview/llfloaterbulkpermission.cpp b/indra/newview/llfloaterbulkpermission.cpp
index c09c02d32b..74c5079268 100644
--- a/indra/newview/llfloaterbulkpermission.cpp
+++ b/indra/newview/llfloaterbulkpermission.cpp
@@ -89,9 +89,17 @@ bool LLFloaterBulkPermission::postBuild()
{
mBulkChangeNextOwnerTransfer = true;
}
+
+ mQueueOutputList = getChild<LLScrollListCtrl>("queue output");
return true;
}
+void LLFloaterBulkPermission::onClose(bool app_quitting)
+{
+ removeVOInventoryListener();
+ LLFloater::onClose(app_quitting);
+}
+
void LLFloaterBulkPermission::doApply()
{
// Inspects a stream of selected object contents and adds modifiable ones to the given array.
@@ -216,7 +224,7 @@ void LLFloaterBulkPermission::onCommitCopy()
bool LLFloaterBulkPermission::start()
{
// note: number of top-level objects to modify is mObjectIDs.size().
- getChild<LLScrollListCtrl>("queue output")->setCommentText(getString("start_text"));
+ mQueueOutputList->setCommentText(getString("start_text"));
return nextObject();
}
@@ -239,7 +247,7 @@ bool LLFloaterBulkPermission::nextObject()
if(isDone() && !mDone)
{
- getChild<LLScrollListCtrl>("queue output")->setCommentText(getString("done_text"));
+ mQueueOutputList->setCommentText(getString("done_text"));
mDone = true;
}
return successful_start;
@@ -294,8 +302,6 @@ void LLFloaterBulkPermission::doCheckUncheckAll(bool check)
void LLFloaterBulkPermission::handleInventory(LLViewerObject* viewer_obj, LLInventoryObject::object_list_t* inv)
{
- LLScrollListCtrl* list = getChild<LLScrollListCtrl>("queue output");
-
LLInventoryObject::object_list_t::const_iterator it = inv->begin();
LLInventoryObject::object_list_t::const_iterator end = inv->end();
for ( ; it != end; ++it)
@@ -362,7 +368,7 @@ void LLFloaterBulkPermission::handleInventory(LLViewerObject* viewer_obj, LLInve
status_text.setArg("[STATUS]", "");
}
- list->setCommentText(status_text.getString());
+ mQueueOutputList->setCommentText(status_text.getString());
//TODO if we are an object inside an object we should check a recuse flag and if set
//open the inventory of the object and recurse - Michelle2 Zenovka
diff --git a/indra/newview/llfloaterbulkpermission.h b/indra/newview/llfloaterbulkpermission.h
index 23ca45b611..0b61022e0c 100644
--- a/indra/newview/llfloaterbulkpermission.h
+++ b/indra/newview/llfloaterbulkpermission.h
@@ -41,7 +41,8 @@ class LLFloaterBulkPermission : public LLFloater, public LLVOInventoryListener
friend class LLFloaterReg;
public:
- bool postBuild();
+ bool postBuild() override;
+ void onClose(bool app_quitting) override;
private:
@@ -57,7 +58,7 @@ private:
/*virtual*/ void inventoryChanged(LLViewerObject* obj,
LLInventoryObject::object_list_t* inv,
S32 serial_num,
- void* queue);
+ void* queue) override;
// This is called by inventoryChanged
void handleInventory(LLViewerObject* viewer_obj,
@@ -85,7 +86,7 @@ private:
private:
// UI
- LLScrollListCtrl* mMessages;
+ LLScrollListCtrl* mQueueOutputList = nullptr;
LLButton* mCloseBtn;
// Object Queue
diff --git a/indra/newview/llfloaterchatmentionpicker.cpp b/indra/newview/llfloaterchatmentionpicker.cpp
new file mode 100644
index 0000000000..1cfed122a9
--- /dev/null
+++ b/indra/newview/llfloaterchatmentionpicker.cpp
@@ -0,0 +1,184 @@
+/**
+ * @file llfloaterchatmentionpicker.cpp
+ *
+ * $LicenseInfo:firstyear=2025&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2025, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "llfloaterchatmentionpicker.h"
+
+#include "llavatarlist.h"
+#include "llfloaterimcontainer.h"
+#include "llchatmentionhelper.h"
+#include "llparticipantlist.h"
+
+LLUUID LLFloaterChatMentionPicker::sSessionID(LLUUID::null);
+
+LLFloaterChatMentionPicker::LLFloaterChatMentionPicker(const LLSD& key)
+: LLFloater(key), mAvatarList(NULL)
+{
+ // This floater should hover on top of our dependent (with the dependent having the focus)
+ setFocusStealsFrontmost(false);
+ setBackgroundVisible(false);
+ setAutoFocus(false);
+}
+
+bool LLFloaterChatMentionPicker::postBuild()
+{
+ mAvatarList = getChild<LLAvatarList>("avatar_list");
+ mAvatarList->setShowCompleteName(true, true);
+ mAvatarList->setFocusOnItemClicked(false);
+ mAvatarList->setItemClickedCallback([this](LLUICtrl* ctrl, S32 x, S32 y, MASK mask)
+ {
+ if (LLAvatarListItem* item = dynamic_cast<LLAvatarListItem*>(ctrl))
+ {
+ selectResident(item->getAvatarId());
+ }
+ });
+ mAvatarList->setRefreshCompleteCallback([this](LLUICtrl* ctrl, const LLSD& param)
+ {
+ if (mAvatarList->numSelected() == 0)
+ {
+ mAvatarList->selectFirstItem();
+ }
+ });
+
+ return LLFloater::postBuild();
+}
+
+void LLFloaterChatMentionPicker::onOpen(const LLSD& key)
+{
+ buildAvatarList();
+ mAvatarList->setNameFilter(key.has("av_name") ? key["av_name"].asString() : "");
+
+ gFloaterView->adjustToFitScreen(this, false);
+}
+
+uuid_vec_t LLFloaterChatMentionPicker::getParticipantIds()
+{
+ LLParticipantList* item = dynamic_cast<LLParticipantList*>(LLFloaterIMContainer::getInstance()->getSessionModel(sSessionID));
+ if (!item)
+ {
+ LL_WARNS() << "Participant list is missing" << LL_ENDL;
+ return {};
+ }
+
+ uuid_vec_t avatar_ids;
+ LLFolderViewModelItemCommon::child_list_t::const_iterator current_participant_model = item->getChildrenBegin();
+ LLFolderViewModelItemCommon::child_list_t::const_iterator end_participant_model = item->getChildrenEnd();
+ while (current_participant_model != end_participant_model)
+ {
+ LLConversationItem* participant_model = dynamic_cast<LLConversationItem*>(*current_participant_model);
+ if (participant_model)
+ {
+ avatar_ids.push_back(participant_model->getUUID());
+ }
+ current_participant_model++;
+ }
+ return avatar_ids;
+}
+
+void LLFloaterChatMentionPicker::buildAvatarList()
+{
+ uuid_vec_t& avatar_ids = mAvatarList->getIDs();
+ avatar_ids = getParticipantIds();
+ updateAvatarList(avatar_ids);
+ mAvatarList->setDirty();
+}
+
+void LLFloaterChatMentionPicker::selectResident(const LLUUID& id)
+{
+ if (id.isNull())
+ return;
+
+ setValue(stringize("secondlife:///app/agent/", id.asString(), "/mention "));
+ onCommit();
+ LLChatMentionHelper::instance().hideHelper();
+}
+
+void LLFloaterChatMentionPicker::onClose(bool app_quitting)
+{
+ if (!app_quitting)
+ {
+ LLChatMentionHelper::instance().hideHelper();
+ }
+}
+
+bool LLFloaterChatMentionPicker::handleKey(KEY key, MASK mask, bool called_from_parent)
+{
+ if (mask == MASK_NONE)
+ {
+ switch (key)
+ {
+ case KEY_UP:
+ case KEY_DOWN:
+ return mAvatarList->handleKey(key, mask, called_from_parent);
+ case KEY_RETURN:
+ case KEY_TAB:
+ selectResident(mAvatarList->getSelectedUUID());
+ return true;
+ case KEY_ESCAPE:
+ LLChatMentionHelper::instance().hideHelper();
+ return true;
+ case KEY_LEFT:
+ case KEY_RIGHT:
+ return true;
+ default:
+ break;
+ }
+ }
+ return LLFloater::handleKey(key, mask, called_from_parent);
+}
+
+void LLFloaterChatMentionPicker::goneFromFront()
+{
+ LLChatMentionHelper::instance().hideHelper();
+}
+
+void LLFloaterChatMentionPicker::updateSessionID(LLUUID session_id)
+{
+ sSessionID = session_id;
+
+ LLParticipantList* item = dynamic_cast<LLParticipantList*>(LLFloaterIMContainer::getInstance()->getSessionModel(sSessionID));
+ if (!item)
+ {
+ LL_WARNS() << "Participant list is missing" << LL_ENDL;
+ return;
+ }
+
+ uuid_vec_t avatar_ids = getParticipantIds();
+ updateAvatarList(avatar_ids);
+}
+
+void LLFloaterChatMentionPicker::updateAvatarList(uuid_vec_t& avatar_ids)
+{
+ std::vector<std::string> av_names;
+ for (auto& id : avatar_ids)
+ {
+ LLAvatarName av_name;
+ LLAvatarNameCache::get(id, &av_name);
+ av_names.push_back(utf8str_tolower(av_name.getAccountName()));
+ av_names.push_back(utf8str_tolower(av_name.getDisplayName()));
+ }
+ LLChatMentionHelper::instance().updateAvatarList(av_names);
+}
diff --git a/indra/newview/llfloaterchatmentionpicker.h b/indra/newview/llfloaterchatmentionpicker.h
new file mode 100644
index 0000000000..8d221d7a89
--- /dev/null
+++ b/indra/newview/llfloaterchatmentionpicker.h
@@ -0,0 +1,58 @@
+/**
+ * @file llfloaterchatmentionpicker.h
+ *
+ * $LicenseInfo:firstyear=2025&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2025, 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 LLFLOATERCHATMENTIONPICKER_H
+#define LLFLOATERCHATMENTIONPICKER_H
+
+#include "llfloater.h"
+
+class LLAvatarList;
+
+class LLFloaterChatMentionPicker : public LLFloater
+{
+public:
+ LLFloaterChatMentionPicker(const LLSD& key);
+
+ virtual bool postBuild() override;
+ virtual void goneFromFront() override;
+
+ void buildAvatarList();
+
+ static uuid_vec_t getParticipantIds();
+ static void updateSessionID(LLUUID session_id);
+ static void updateAvatarList(uuid_vec_t& avatar_ids);
+
+private:
+
+ void onOpen(const LLSD& key) override;
+ void onClose(bool app_quitting) override;
+ virtual bool handleKey(KEY key, MASK mask, bool called_from_parent) override;
+ void selectResident(const LLUUID& id);
+
+ static LLUUID sSessionID;
+ LLAvatarList* mAvatarList;
+};
+
+#endif
diff --git a/indra/newview/llfloatereditextdaycycle.cpp b/indra/newview/llfloatereditextdaycycle.cpp
index 42307dd3f8..0a8b8d321d 100644
--- a/indra/newview/llfloatereditextdaycycle.cpp
+++ b/indra/newview/llfloatereditextdaycycle.cpp
@@ -495,7 +495,6 @@ void LLFloaterEditExtDayCycle::setEditDayCycle(const LLSettingsDay::ptr_t &pday)
updateEditEnvironment();
LLEnvironment::instance().setSelectedEnvironment(LLEnvironment::ENV_EDIT, LLEnvironment::TRANSITION_INSTANT);
- LLEnvironment::instance().updateEnvironment(LLEnvironment::TRANSITION_INSTANT);
synchronizeTabs();
updateTabs();
refresh();
@@ -824,7 +823,6 @@ void LLFloaterEditExtDayCycle::onClearTrack()
updateEditEnvironment();
LLEnvironment::instance().setSelectedEnvironment(LLEnvironment::ENV_EDIT, LLEnvironment::TRANSITION_INSTANT);
- LLEnvironment::instance().updateEnvironment(LLEnvironment::TRANSITION_INSTANT);
synchronizeTabs();
updateTabs();
refresh();
diff --git a/indra/newview/llfloaterenvironmentadjust.cpp b/indra/newview/llfloaterenvironmentadjust.cpp
index 58616995d3..4825cbf7fb 100644
--- a/indra/newview/llfloaterenvironmentadjust.cpp
+++ b/indra/newview/llfloaterenvironmentadjust.cpp
@@ -242,9 +242,7 @@ void LLFloaterEnvironmentAdjust::captureCurrentEnvironment()
environment.setEnvironment(LLEnvironment::ENV_LOCAL, mLiveSky, FLOATER_ENVIRONMENT_UPDATE);
environment.setEnvironment(LLEnvironment::ENV_LOCAL, mLiveWater, FLOATER_ENVIRONMENT_UPDATE);
}
- environment.setSelectedEnvironment(LLEnvironment::ENV_LOCAL);
- environment.updateEnvironment(LLEnvironment::TRANSITION_INSTANT);
-
+ environment.setSelectedEnvironment(LLEnvironment::ENV_LOCAL, LLEnvironment::TRANSITION_INSTANT);
}
void LLFloaterEnvironmentAdjust::onButtonReset()
@@ -258,7 +256,6 @@ void LLFloaterEnvironmentAdjust::onButtonReset()
this->closeFloater();
LLEnvironment::instance().clearEnvironment(LLEnvironment::ENV_LOCAL);
LLEnvironment::instance().setSelectedEnvironment(LLEnvironment::ENV_LOCAL);
- LLEnvironment::instance().updateEnvironment();
}
});
diff --git a/indra/newview/llfloaterimcontainer.cpp b/indra/newview/llfloaterimcontainer.cpp
index 4fed8eebb8..59ae8a9a81 100644
--- a/indra/newview/llfloaterimcontainer.cpp
+++ b/indra/newview/llfloaterimcontainer.cpp
@@ -2310,14 +2310,14 @@ bool LLFloaterIMContainer::isConversationLoggingAllowed()
return gSavedPerAccountSettings.getS32("KeepConversationLogTranscripts") > 0;
}
-void LLFloaterIMContainer::flashConversationItemWidget(const LLUUID& session_id, bool is_flashes)
+void LLFloaterIMContainer::flashConversationItemWidget(const LLUUID& session_id, bool is_flashes, bool alternate_color)
{
//Finds the conversation line item to flash using the session_id
LLConversationViewSession * widget = dynamic_cast<LLConversationViewSession *>(get_ptr_in_map(mConversationsWidgets,session_id));
if (widget)
{
- widget->setFlashState(is_flashes);
+ widget->setFlashState(is_flashes, alternate_color);
}
}
diff --git a/indra/newview/llfloaterimcontainer.h b/indra/newview/llfloaterimcontainer.h
index e5486e67da..30eed8be36 100644
--- a/indra/newview/llfloaterimcontainer.h
+++ b/indra/newview/llfloaterimcontainer.h
@@ -208,7 +208,7 @@ public:
void reSelectConversation();
void updateSpeakBtnState();
static bool isConversationLoggingAllowed();
- void flashConversationItemWidget(const LLUUID& session_id, bool is_flashes);
+ void flashConversationItemWidget(const LLUUID& session_id, bool is_flashes, bool alternate_color = false);
void highlightConversationItemWidget(const LLUUID& session_id, bool is_highlighted);
bool isScrolledOutOfSight(LLConversationViewSession* conversation_item_widget);
boost::signals2::connection mMicroChangedSignal;
diff --git a/indra/newview/llfloaterimnearbychat.cpp b/indra/newview/llfloaterimnearbychat.cpp
index 28c651f0cd..b649514bff 100644
--- a/indra/newview/llfloaterimnearbychat.cpp
+++ b/indra/newview/llfloaterimnearbychat.cpp
@@ -52,6 +52,7 @@
#include "llfirstuse.h"
#include "llfloaterimnearbychat.h"
+#include "llfloaterimnearbychatlistener.h"
#include "llagent.h" // gAgent
#include "llgesturemgr.h"
#include "llmultigesture.h"
@@ -71,6 +72,8 @@
S32 LLFloaterIMNearbyChat::sLastSpecialChatChannel = 0;
+static LLFloaterIMNearbyChatListener sChatListener;
+
constexpr S32 EXPANDED_HEIGHT = 266;
constexpr S32 COLLAPSED_HEIGHT = 60;
constexpr S32 EXPANDED_MIN_HEIGHT = 150;
@@ -583,7 +586,7 @@ void LLFloaterIMNearbyChat::sendChat( EChatType type )
{
if (mInputEditor)
{
- LLWString text = mInputEditor->getWText();
+ LLWString text = mInputEditor->getConvertedText();
LLWStringUtil::trim(text);
LLWStringUtil::replaceChar(text,182,'\n'); // Convert paragraph symbols back into newlines.
if (!text.empty())
diff --git a/indra/newview/llfloaterimnearbychatlistener.cpp b/indra/newview/llfloaterimnearbychatlistener.cpp
index 43173d3680..b15a32ce40 100644
--- a/indra/newview/llfloaterimnearbychatlistener.cpp
+++ b/indra/newview/llfloaterimnearbychatlistener.cpp
@@ -34,12 +34,12 @@
#include "llagent.h"
#include "llchat.h"
#include "llviewercontrol.h"
+#include "stringize.h"
+static const F32 CHAT_THROTTLE_PERIOD = 1.f;
-LLFloaterIMNearbyChatListener::LLFloaterIMNearbyChatListener(LLFloaterIMNearbyChat & chatbar)
- : LLEventAPI("LLChatBar",
- "LLChatBar listener to (e.g.) sendChat, etc."),
- mChatbar(chatbar)
+LLFloaterIMNearbyChatListener::LLFloaterIMNearbyChatListener() :
+ LLEventAPI("LLChatBar", "LLChatBar listener to (e.g.) sendChat, etc.")
{
add("sendChat",
"Send chat to the simulator:\n"
@@ -49,10 +49,18 @@ LLFloaterIMNearbyChatListener::LLFloaterIMNearbyChatListener(LLFloaterIMNearbyCh
&LLFloaterIMNearbyChatListener::sendChat);
}
-
// "sendChat" command
-void LLFloaterIMNearbyChatListener::sendChat(LLSD const & chat_data) const
+void LLFloaterIMNearbyChatListener::sendChat(LLSD const& chat_data)
{
+ F64 cur_time = LLTimer::getElapsedSeconds();
+
+ if (cur_time < mLastThrottleTime + CHAT_THROTTLE_PERIOD)
+ {
+ LL_WARNS("LLFloaterIMNearbyChatListener") << "'sendChat' was throttled" << LL_ENDL;
+ return;
+ }
+ mLastThrottleTime = cur_time;
+
// Extract the data
std::string chat_text = chat_data["message"].asString();
@@ -81,20 +89,12 @@ void LLFloaterIMNearbyChatListener::sendChat(LLSD const & chat_data) const
}
// Have to prepend /42 style channel numbers
- std::string chat_to_send;
- if (channel == 0)
- {
- chat_to_send = chat_text;
- }
- else
+ if (channel)
{
- chat_to_send += "/";
- chat_to_send += chat_data["channel"].asString();
- chat_to_send += " ";
- chat_to_send += chat_text;
+ chat_text = stringize("/", chat_data["channel"].asString(), " ", chat_text);
}
// Send it as if it was typed in
- mChatbar.sendChatFromViewer(chat_to_send, type_o_chat, ((bool)(channel == 0)) && gSavedSettings.getBOOL("PlayChatAnim"));
+ LLFloaterIMNearbyChat::sendChatFromViewer(chat_text, type_o_chat, (channel == 0) && gSavedSettings.getBOOL("PlayChatAnim"));
}
diff --git a/indra/newview/llfloaterimnearbychatlistener.h b/indra/newview/llfloaterimnearbychatlistener.h
index 96184d95b3..71eba53a9a 100644
--- a/indra/newview/llfloaterimnearbychatlistener.h
+++ b/indra/newview/llfloaterimnearbychatlistener.h
@@ -38,12 +38,12 @@ class LLFloaterIMNearbyChat;
class LLFloaterIMNearbyChatListener : public LLEventAPI
{
public:
- LLFloaterIMNearbyChatListener(LLFloaterIMNearbyChat & chatbar);
+ LLFloaterIMNearbyChatListener();
private:
- void sendChat(LLSD const & chat_data) const;
+ void sendChat(LLSD const & chat_data);
- LLFloaterIMNearbyChat & mChatbar;
+ F64 mLastThrottleTime{0};
};
#endif // LL_LLFLOATERIMNEARBYCHATLISTENER_H
diff --git a/indra/newview/llfloaterimsession.cpp b/indra/newview/llfloaterimsession.cpp
index 185274981b..84a9fad708 100644
--- a/indra/newview/llfloaterimsession.cpp
+++ b/indra/newview/llfloaterimsession.cpp
@@ -251,7 +251,7 @@ void LLFloaterIMSession::sendMsgFromInputEditor()
{
if (mInputEditor)
{
- LLWString text = mInputEditor->getWText();
+ LLWString text = mInputEditor->getConvertedText();
LLWStringUtil::trim(text);
LLWStringUtil::replaceChar(text,182,'\n'); // Convert paragraph symbols back into newlines.
if(!text.empty())
diff --git a/indra/newview/llfloaterimsessiontab.cpp b/indra/newview/llfloaterimsessiontab.cpp
index 335aba2cc9..733e178de3 100644
--- a/indra/newview/llfloaterimsessiontab.cpp
+++ b/indra/newview/llfloaterimsessiontab.cpp
@@ -35,10 +35,12 @@
#include "llavatariconctrl.h"
#include "llchatentry.h"
#include "llchathistory.h"
+#include "llfloaterchatmentionpicker.h"
#include "llchiclet.h"
#include "llchicletbar.h"
#include "lldraghandle.h"
#include "llemojidictionary.h"
+#include "llemojihelper.h"
#include "llfloaterreg.h"
#include "llfloateremojipicker.h"
#include "llfloaterimsession.h"
@@ -104,6 +106,7 @@ LLFloaterIMSessionTab::~LLFloaterIMSessionTab()
{
delete mRefreshTimer;
LLIMMgr::instance().removeSessionObserver(this);
+ mEmojiCloseConn.disconnect();
LLFloaterIMContainer* im_container = LLFloaterIMContainer::findInstance();
if (im_container)
@@ -300,6 +303,8 @@ bool LLFloaterIMSessionTab::postBuild()
mEmojiPickerShowBtn = getChild<LLButton>("emoji_picker_show_btn");
mEmojiPickerShowBtn->setClickedCallback([this](LLUICtrl*, const LLSD&) { onEmojiPickerShowBtnClicked(); });
+ mEmojiPickerShowBtn->setMouseDownCallback([this](LLUICtrl*, const LLSD&) { onEmojiPickerShowBtnDown(); });
+ mEmojiCloseConn = LLEmojiHelper::instance().setCloseCallback([this](LLUICtrl*, const LLSD&) { onEmojiPickerClosed(); });
mGearBtn = getChild<LLButton>("gear_btn");
mAddBtn = getChild<LLButton>("add_btn");
@@ -482,6 +487,7 @@ void LLFloaterIMSessionTab::onFocusReceived()
LLIMModel::instance().sendNoUnreadMessages(mSessionID);
}
+ LLFloaterChatMentionPicker::updateSessionID(mSessionID);
super::onFocusReceived();
}
@@ -532,8 +538,43 @@ void LLFloaterIMSessionTab::onEmojiRecentPanelToggleBtnClicked()
void LLFloaterIMSessionTab::onEmojiPickerShowBtnClicked()
{
- mInputEditor->setFocus(true);
- mInputEditor->showEmojiHelper();
+ if (!mEmojiPickerShowBtn->getToggleState())
+ {
+ mInputEditor->hideEmojiHelper();
+ mInputEditor->setFocus(true);
+ mInputEditor->showEmojiHelper();
+ mEmojiPickerShowBtn->setToggleState(true); // in case hideEmojiHelper closed a visible instance
+ }
+ else
+ {
+ mInputEditor->hideEmojiHelper();
+ mEmojiPickerShowBtn->setToggleState(false);
+ }
+}
+
+void LLFloaterIMSessionTab::onEmojiPickerShowBtnDown()
+{
+ if (mEmojiHelperLastCallbackFrame == LLFrameTimer::getFrameCount())
+ {
+ // Helper gets closed by focus lost event on Down before before onEmojiPickerShowBtnDown
+ // triggers.
+ // If this condition is true, user pressed button and it was 'toggled' during press,
+ // restore 'toggled' state so that button will not reopen helper.
+ mEmojiPickerShowBtn->setToggleState(true);
+ }
+}
+
+void LLFloaterIMSessionTab::onEmojiPickerClosed()
+{
+ if (mEmojiPickerShowBtn->getToggleState())
+ {
+ mEmojiPickerShowBtn->setToggleState(false);
+ // Helper gets closed by focus lost event on Down before onEmojiPickerShowBtnDown
+ // triggers. If mEmojiHelperLastCallbackFrame is set and matches Down, means close
+ // was triggered by user's press.
+ // A bit hacky, but I can't think of a better way to handle this without rewriting helper.
+ mEmojiHelperLastCallbackFrame = LLFrameTimer::getFrameCount();
+ }
}
void LLFloaterIMSessionTab::initEmojiRecentPanel()
diff --git a/indra/newview/llfloaterimsessiontab.h b/indra/newview/llfloaterimsessiontab.h
index 367d988f26..6d04d622e1 100644
--- a/indra/newview/llfloaterimsessiontab.h
+++ b/indra/newview/llfloaterimsessiontab.h
@@ -235,6 +235,8 @@ private:
void onEmojiRecentPanelToggleBtnClicked();
void onEmojiPickerShowBtnClicked();
+ void onEmojiPickerShowBtnDown();
+ void onEmojiPickerClosed();
void initEmojiRecentPanel();
void onEmojiRecentPanelFocusReceived();
void onEmojiRecentPanelFocusLost();
@@ -249,6 +251,9 @@ private:
S32 mInputEditorPad;
S32 mChatLayoutPanelHeight;
S32 mFloaterHeight;
+
+ boost::signals2::connection mEmojiCloseConn;
+ U32 mEmojiHelperLastCallbackFrame = { 0 };
};
diff --git a/indra/newview/llfloaternewfeaturenotification.cpp b/indra/newview/llfloaternewfeaturenotification.cpp
index 369727ff1e..1badcdd3d9 100644
--- a/indra/newview/llfloaternewfeaturenotification.cpp
+++ b/indra/newview/llfloaternewfeaturenotification.cpp
@@ -43,12 +43,28 @@ bool LLFloaterNewFeatureNotification::postBuild()
setCanDrag(false);
getChild<LLButton>("close_btn")->setCommitCallback(boost::bind(&LLFloaterNewFeatureNotification::onCloseBtn, this));
- const std::string title_txt = "title_txt";
- const std::string dsc_txt = "description_txt";
- std::string feature = "_" + getKey().asString();
+ if (getKey().isString())
+ {
+ const std::string title_txt = "title_txt";
+ const std::string dsc_txt = "description_txt";
- getChild<LLUICtrl>(title_txt)->setValue(getString(title_txt + feature));
- getChild<LLUICtrl>(dsc_txt)->setValue(getString(dsc_txt + feature));
+ std::string feature = "_" + getKey().asString();
+ if (hasString(title_txt + feature))
+ {
+ getChild<LLUICtrl>(title_txt)->setValue(getString(title_txt + feature));
+ getChild<LLUICtrl>(dsc_txt)->setValue(getString(dsc_txt + feature));
+ }
+ else
+ {
+ // Show blank
+ LL_WARNS() << "Feature \"" << getKey().asString() << "\" not found for feature notification" << LL_ENDL;
+ }
+ }
+ else
+ {
+ // Show blank
+ LL_WARNS() << "Feature notification without a feature" << LL_ENDL;
+ }
if (getKey().asString() == "gltf")
{
diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp
index 68b9e758a1..faf7ed0d8c 100644
--- a/indra/newview/llfloatersnapshot.cpp
+++ b/indra/newview/llfloatersnapshot.cpp
@@ -60,12 +60,13 @@ LLPanelSnapshot* LLFloaterSnapshot::Impl::getActivePanel(LLFloaterSnapshotBase*
{
LLSideTrayPanelContainer* panel_container = floater->getChild<LLSideTrayPanelContainer>("panel_container");
LLPanelSnapshot* active_panel = dynamic_cast<LLPanelSnapshot*>(panel_container->getCurrentPanel());
- if (!active_panel)
- {
- LL_WARNS() << "No snapshot active panel, current panel index: " << panel_container->getCurrentPanelIndex() << LL_ENDL;
- }
+
if (!ok_if_not_found)
{
+ if (!active_panel)
+ {
+ LL_WARNS() << "No snapshot active panel, current panel index: " << panel_container->getCurrentPanelIndex() << LL_ENDL;
+ }
llassert_always(active_panel != NULL);
}
return active_panel;
@@ -516,34 +517,13 @@ void LLFloaterSnapshotBase::ImplBase::onClickFilter(LLUICtrl *ctrl, void* data)
}
// static
-void LLFloaterSnapshotBase::ImplBase::onClickUICheck(LLUICtrl *ctrl, void* data)
+void LLFloaterSnapshotBase::ImplBase::onClickDisplaySetting(LLUICtrl* ctrl, void* data)
{
- LLCheckBoxCtrl *check = (LLCheckBoxCtrl *)ctrl;
- gSavedSettings.setBOOL( "RenderUIInSnapshot", check->get() );
-
- LLFloaterSnapshot *view = (LLFloaterSnapshot *)data;
+ LLFloaterSnapshot* view = (LLFloaterSnapshot*)data;
if (view)
{
LLSnapshotLivePreview* previewp = view->getPreviewView();
- if(previewp)
- {
- previewp->updateSnapshot(true, true);
- }
- view->impl->updateControls(view);
- }
-}
-
-// static
-void LLFloaterSnapshotBase::ImplBase::onClickHUDCheck(LLUICtrl *ctrl, void* data)
-{
- LLCheckBoxCtrl *check = (LLCheckBoxCtrl *)ctrl;
- gSavedSettings.setBOOL( "RenderHUDInSnapshot", check->get() );
-
- LLFloaterSnapshot *view = (LLFloaterSnapshot *)data;
- if (view)
- {
- LLSnapshotLivePreview* previewp = view->getPreviewView();
- if(previewp)
+ if (previewp)
{
previewp->updateSnapshot(true, true);
}
@@ -1002,11 +982,9 @@ bool LLFloaterSnapshot::postBuild()
mSucceessLblPanel = getChild<LLUICtrl>("succeeded_panel");
mFailureLblPanel = getChild<LLUICtrl>("failed_panel");
- childSetCommitCallback("ui_check", ImplBase::onClickUICheck, this);
- getChild<LLUICtrl>("ui_check")->setValue(gSavedSettings.getBOOL("RenderUIInSnapshot"));
-
- childSetCommitCallback("hud_check", ImplBase::onClickHUDCheck, this);
- getChild<LLUICtrl>("hud_check")->setValue(gSavedSettings.getBOOL("RenderHUDInSnapshot"));
+ childSetCommitCallback("ui_check", ImplBase::onClickDisplaySetting, this);
+ childSetCommitCallback("balance_check", ImplBase::onClickDisplaySetting, this);
+ childSetCommitCallback("hud_check", ImplBase::onClickDisplaySetting, this);
((Impl*)impl)->setAspectRatioCheckboxValue(this, gSavedSettings.getBOOL("KeepAspectForSnapshot"));
diff --git a/indra/newview/llfloatersnapshot.h b/indra/newview/llfloatersnapshot.h
index 6df851b839..186d9c41cf 100644
--- a/indra/newview/llfloatersnapshot.h
+++ b/indra/newview/llfloatersnapshot.h
@@ -103,8 +103,7 @@ public:
static void onClickAutoSnap(LLUICtrl *ctrl, void* data);
static void onClickNoPost(LLUICtrl *ctrl, void* data);
static void onClickFilter(LLUICtrl *ctrl, void* data);
- static void onClickUICheck(LLUICtrl *ctrl, void* data);
- static void onClickHUDCheck(LLUICtrl *ctrl, void* data);
+ static void onClickDisplaySetting(LLUICtrl *ctrl, void* data);
static void onCommitFreezeFrame(LLUICtrl* ctrl, void* data);
virtual LLPanelSnapshot* getActivePanel(LLFloaterSnapshotBase* floater, bool ok_if_not_found = true) = 0;
diff --git a/indra/newview/llgroupactions.cpp b/indra/newview/llgroupactions.cpp
index ba9c9fa13f..34d96aa024 100644
--- a/indra/newview/llgroupactions.cpp
+++ b/indra/newview/llgroupactions.cpp
@@ -46,7 +46,7 @@
//
// Globals
//
-static GroupChatListener sGroupChatListener;
+static LLGroupChatListener sGroupChatListener;
class LLGroupHandler : public LLCommandHandler
{
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index acabd97d57..bc89af2eed 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -73,6 +73,7 @@
#include "llviewerregion.h"
#include "llcorehttputil.h"
#include "lluiusage.h"
+#include "llurlregistry.h"
#include <array>
@@ -199,6 +200,9 @@ void notify_of_message(const LLSD& msg, bool is_dnd_msg)
LLFloaterIMSessionTab* session_floater = LLFloaterIMSessionTab::getConversation(session_id);
bool store_dnd_message = false; // flag storage of a dnd message
bool is_session_focused = session_floater->isTornOff() && session_floater->hasFocus();
+ bool contains_mention = LLUrlRegistry::getInstance()->containsAgentMention(msg["message"].asString());
+ static LLCachedControl<bool> play_snd_mention_pref(gSavedSettings, "PlaySoundChatMention", false);
+ bool play_snd_mention = contains_mention && play_snd_mention_pref && (msg["source_type"].asInteger() != CHAT_SOURCE_OBJECT);
if (!LLFloater::isVisible(im_box) || im_box->isMinimized())
{
conversations_floater_status = CLOSED;
@@ -232,7 +236,7 @@ void notify_of_message(const LLSD& msg, bool is_dnd_msg)
else
{
user_preferences = gSavedSettings.getString("NotificationNearbyChatOptions");
- if (!gAgent.isDoNotDisturb() && (gSavedSettings.getBOOL("PlaySoundNearbyChatIM")))
+ if (!gAgent.isDoNotDisturb() && (gSavedSettings.getBOOL("PlaySoundNearbyChatIM")) && !play_snd_mention)
{
make_ui_sound("UISndNewIncomingIMSession");
}
@@ -243,7 +247,7 @@ void notify_of_message(const LLSD& msg, bool is_dnd_msg)
if (LLAvatarTracker::instance().isBuddy(participant_id))
{
user_preferences = gSavedSettings.getString("NotificationFriendIMOptions");
- if (!gAgent.isDoNotDisturb() && (gSavedSettings.getBOOL("PlaySoundFriendIM")))
+ if (!gAgent.isDoNotDisturb() && (gSavedSettings.getBOOL("PlaySoundFriendIM")) && !play_snd_mention)
{
make_ui_sound("UISndNewIncomingIMSession");
}
@@ -251,7 +255,7 @@ void notify_of_message(const LLSD& msg, bool is_dnd_msg)
else
{
user_preferences = gSavedSettings.getString("NotificationNonFriendIMOptions");
- if (!gAgent.isDoNotDisturb() && (gSavedSettings.getBOOL("PlaySoundNonFriendIM")))
+ if (!gAgent.isDoNotDisturb() && (gSavedSettings.getBOOL("PlaySoundNonFriendIM")) && !play_snd_mention)
{
make_ui_sound("UISndNewIncomingIMSession");
}
@@ -260,7 +264,7 @@ void notify_of_message(const LLSD& msg, bool is_dnd_msg)
else if (session->isAdHocSessionType())
{
user_preferences = gSavedSettings.getString("NotificationConferenceIMOptions");
- if (!gAgent.isDoNotDisturb() && (gSavedSettings.getBOOL("PlaySoundConferenceIM")))
+ if (!gAgent.isDoNotDisturb() && (gSavedSettings.getBOOL("PlaySoundConferenceIM")) && !play_snd_mention)
{
make_ui_sound("UISndNewIncomingIMSession");
}
@@ -268,11 +272,18 @@ void notify_of_message(const LLSD& msg, bool is_dnd_msg)
else if(session->isGroupSessionType())
{
user_preferences = gSavedSettings.getString("NotificationGroupChatOptions");
- if (!gAgent.isDoNotDisturb() && (gSavedSettings.getBOOL("PlaySoundGroupChatIM")))
+ if (!gAgent.isDoNotDisturb() && (gSavedSettings.getBOOL("PlaySoundGroupChatIM")) && !play_snd_mention)
{
make_ui_sound("UISndNewIncomingIMSession");
}
}
+ if (play_snd_mention)
+ {
+ if (!gAgent.isDoNotDisturb())
+ {
+ make_ui_sound("UISndChatMention");
+ }
+ }
// actions:
@@ -325,7 +336,7 @@ void notify_of_message(const LLSD& msg, bool is_dnd_msg)
if ("openconversations" == user_preferences
|| ON_TOP == conversations_floater_status
|| ("toast" == user_preferences && ON_TOP != conversations_floater_status)
- || ("flash" == user_preferences && (CLOSED == conversations_floater_status
+ || (("flash" == user_preferences || contains_mention) && (CLOSED == conversations_floater_status
|| NOT_ON_TOP == conversations_floater_status))
|| is_dnd_msg)
{
@@ -345,7 +356,7 @@ void notify_of_message(const LLSD& msg, bool is_dnd_msg)
}
else
{
- im_box->flashConversationItemWidget(session_id, true);
+ im_box->flashConversationItemWidget(session_id, true, contains_mention);
}
}
}
@@ -3254,7 +3265,11 @@ void LLIMMgr::addMessage(
//Play sound for new conversations
if (!skip_message && !gAgent.isDoNotDisturb() && (gSavedSettings.getBOOL("PlaySoundNewConversation")))
{
- make_ui_sound("UISndNewIncomingIMSession");
+ static LLCachedControl<bool> play_snd_mention_pref(gSavedSettings, "PlaySoundChatMention", false);
+ if (!play_snd_mention_pref || !LLUrlRegistry::getInstance()->containsAgentMention(msg))
+ {
+ make_ui_sound("UISndNewIncomingIMSession");
+ }
}
}
else
@@ -3274,7 +3289,7 @@ void LLIMMgr::addMessage(
{
LLFloaterReg::showInstance("im_container");
LLFloaterReg::getTypedInstance<LLFloaterIMContainer>("im_container")->
- flashConversationItemWidget(new_session_id, true);
+ flashConversationItemWidget(new_session_id, true, LLUrlRegistry::getInstance()->containsAgentMention(msg));
}
}
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index 7710cda45b..edefb5d109 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -104,7 +104,6 @@ static bool check_item(const LLUUID& item_id,
LLInventoryFilter* filter);
// Helper functions
-
bool isAddAction(const std::string& action)
{
return ("wear" == action || "attach" == action || "activate" == action);
@@ -2714,6 +2713,7 @@ bool LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,
//
bool is_movable = true;
+ bool create_outfit = false;
if (is_movable && (marketplacelistings_id == cat_id))
{
@@ -2746,14 +2746,24 @@ bool LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,
U32 max_items_to_wear = gSavedSettings.getU32("WearFolderLimit");
if (is_movable && move_is_into_outfit)
{
- if (mUUID == my_outifts_id)
+ if ((inv_cat->getPreferredType() != LLFolderType::FT_NONE) && (inv_cat->getPreferredType() != LLFolderType::FT_OUTFIT))
+ {
+ tooltip_msg = LLTrans::getString("TooltipCantCreateOutfit");
+ is_movable = false;
+ }
+ else if (mUUID == my_outifts_id)
{
if (source != LLToolDragAndDrop::SOURCE_AGENT || move_is_from_marketplacelistings)
{
tooltip_msg = LLTrans::getString("TooltipOutfitNotInInventory");
is_movable = false;
}
- else if (can_move_to_my_outfits(model, inv_cat, max_items_to_wear))
+ else if (can_move_to_my_outfits_as_outfit(model, inv_cat, max_items_to_wear))
+ {
+ is_movable = true;
+ create_outfit = true;
+ }
+ else if (can_move_to_my_outfits_as_subfolder(model, inv_cat))
{
is_movable = true;
}
@@ -2763,13 +2773,44 @@ bool LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,
is_movable = false;
}
}
- else if(getCategory() && getCategory()->getPreferredType() == LLFolderType::FT_NONE)
+ else if (!getCategory())
{
- is_movable = ((inv_cat->getPreferredType() == LLFolderType::FT_NONE) || (inv_cat->getPreferredType() == LLFolderType::FT_OUTFIT));
+ is_movable = false;
+ tooltip_msg = LLTrans::getString("TooltipCantCreateOutfit");
}
else
{
- is_movable = false;
+ EMyOutfitsSubfolderType dest_res = myoutfit_object_subfolder_type(model, mUUID, my_outifts_id);
+ EMyOutfitsSubfolderType inv_res = myoutfit_object_subfolder_type(model, cat_id, my_outifts_id);
+ if ((dest_res == MY_OUTFITS_OUTFIT || dest_res == MY_OUTFITS_SUBOUTFIT) && inv_res == MY_OUTFITS_OUTFIT)
+ {
+ is_movable = false;
+ tooltip_msg = LLTrans::getString("TooltipCantMoveOutfitIntoOutfit");
+ }
+ else if (dest_res == MY_OUTFITS_OUTFIT || dest_res == MY_OUTFITS_SUBOUTFIT)
+ {
+ is_movable = false;
+ tooltip_msg = LLTrans::getString("TooltipCantCreateOutfit");
+ }
+ else if (dest_res == MY_OUTFITS_SUBFOLDER && inv_res == MY_OUTFITS_SUBOUTFIT)
+ {
+ is_movable = false;
+ tooltip_msg = LLTrans::getString("TooltipCantCreateOutfit");
+ }
+ else if (can_move_to_my_outfits_as_outfit(model, inv_cat, max_items_to_wear))
+ {
+ is_movable = true;
+ create_outfit = true;
+ }
+ else if (can_move_to_my_outfits_as_subfolder(model, inv_cat))
+ {
+ is_movable = true;
+ }
+ else
+ {
+ is_movable = false;
+ tooltip_msg = LLTrans::getString("TooltipCantCreateOutfit");
+ }
}
}
if (is_movable && move_is_into_current_outfit && is_link)
@@ -2961,9 +3002,81 @@ bool LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,
if (mUUID == my_outifts_id)
{
- // Category can contains objects,
- // create a new folder and populate it with links to original objects
- dropToMyOutfits(inv_cat, cb);
+ EMyOutfitsSubfolderType inv_res = myoutfit_object_subfolder_type(model, cat_id, my_outifts_id);
+ if (inv_res == MY_OUTFITS_SUBFOLDER || inv_res == MY_OUTFITS_OUTFIT || !create_outfit)
+ {
+ LLInvFVBridge::changeCategoryParent(
+ model,
+ (LLViewerInventoryCategory*)inv_cat,
+ mUUID,
+ false);
+ if (cb) cb->fire(inv_cat->getUUID());
+ }
+ else
+ {
+ // Moving from inventory
+ // create a new folder and populate it with links to original objects
+ dropToMyOutfits(inv_cat, cb);
+ }
+ }
+ else if (move_is_into_my_outfits)
+ {
+ EMyOutfitsSubfolderType dest_res = myoutfit_object_subfolder_type(model, mUUID, my_outifts_id);
+ EMyOutfitsSubfolderType inv_res = myoutfit_object_subfolder_type(model, cat_id, my_outifts_id);
+ switch (inv_res)
+ {
+ case MY_OUTFITS_NO:
+ // Moning from outside outfits into outfits
+ if (dest_res == MY_OUTFITS_SUBFOLDER && create_outfit)
+ {
+ // turn it into outfit
+ dropToMyOutfitsSubfolder(inv_cat, mUUID, cb);
+ }
+ else
+ {
+ LLInvFVBridge::changeCategoryParent(
+ model,
+ (LLViewerInventoryCategory*)inv_cat,
+ mUUID,
+ move_is_into_trash);
+ if (cb) cb->fire(inv_cat->getUUID());
+ }
+ break;
+ case MY_OUTFITS_SUBFOLDER:
+ case MY_OUTFITS_OUTFIT:
+ // only permit moving subfodlers and outfits into other subfolders
+ if (dest_res == MY_OUTFITS_SUBFOLDER)
+ {
+ LLInvFVBridge::changeCategoryParent(
+ model,
+ (LLViewerInventoryCategory*)inv_cat,
+ mUUID,
+ false);
+ if (cb) cb->fire(inv_cat->getUUID());
+ }
+ else
+ {
+ assert(false); // mot permitted, shouldn't have accepted
+ }
+ break;
+ case MY_OUTFITS_SUBOUTFIT:
+ if (dest_res == MY_OUTFITS_SUBOUTFIT || dest_res == MY_OUTFITS_OUTFIT)
+ {
+ LLInvFVBridge::changeCategoryParent(
+ model,
+ (LLViewerInventoryCategory*)inv_cat,
+ mUUID,
+ false);
+ if (cb) cb->fire(inv_cat->getUUID());
+ }
+ else
+ {
+ assert(false); // mot permitted, shouldn't have accepted
+ }
+ break;
+ default:
+ break;
+ }
}
// if target is current outfit folder we use link
else if (move_is_into_current_outfit &&
@@ -4045,7 +4158,6 @@ void LLFolderBridge::perform_pasteFromClipboard()
LLInventoryObject *obj = model->getObject(item_id);
if (obj)
{
-
if (move_is_into_lost_and_found)
{
if (LLAssetType::AT_CATEGORY == obj->getType())
@@ -4055,24 +4167,57 @@ void LLFolderBridge::perform_pasteFromClipboard()
}
if (move_is_into_outfit)
{
- if (!move_is_into_my_outfits && item && can_move_to_outfit(item, move_is_into_current_outfit))
+ bool handled = false;
+ if (mUUID != my_outifts_id
+ && dest_folder->getPreferredType() == LLFolderType::FT_OUTFIT
+ && item
+ && can_move_to_outfit(item, move_is_into_current_outfit))
{
dropToOutfit(item, move_is_into_current_outfit, cb);
+ handled = true;
}
else if (move_is_into_my_outfits && LLAssetType::AT_CATEGORY == obj->getType())
{
- LLInventoryCategory* cat = model->getCategory(item_id);
+ LLViewerInventoryCategory* cat = model->getCategory(item_id);
U32 max_items_to_wear = gSavedSettings.getU32("WearFolderLimit");
- if (cat && can_move_to_my_outfits(model, cat, max_items_to_wear))
+ if (cat && can_move_to_my_outfits_as_outfit(model, cat, max_items_to_wear))
{
- dropToMyOutfits(cat, cb);
+ if (mUUID == my_outifts_id)
+ {
+ dropToMyOutfits(cat, cb);
+ handled = true;
+ }
+ else
+ {
+ EMyOutfitsSubfolderType dest_res = myoutfit_object_subfolder_type(model, mUUID, my_outifts_id);
+ if (dest_res == MY_OUTFITS_SUBFOLDER)
+ {
+ // turn it into outfit
+ dropToMyOutfitsSubfolder(cat, mUUID, cb);
+ handled = true;
+ }
+ }
}
- else
+ if (!handled && cat && can_move_to_my_outfits_as_subfolder(model, cat))
{
- LLNotificationsUtil::add("MyOutfitsPasteFailed");
+ EMyOutfitsSubfolderType dest_res = myoutfit_object_subfolder_type(model, mUUID, my_outifts_id);
+ if (dest_res == MY_OUTFITS_SUBFOLDER || mUUID == my_outifts_id)
+ {
+ if (LLClipboard::instance().isCutMode())
+ {
+ changeCategoryParent(model, cat, parent_id, false);
+ }
+ else
+ {
+ copy_inventory_category(model, cat, parent_id);
+ }
+ if (cb) cb->fire(item_id);
+ handled = true;
+ }
}
}
- else
+
+ if (!handled)
{
LLNotificationsUtil::add("MyOutfitsPasteFailed");
}
@@ -4115,7 +4260,7 @@ void LLFolderBridge::perform_pasteFromClipboard()
// move_inventory_item() is not enough, as we have to update inventory locally too
if (LLAssetType::AT_CATEGORY == obj->getType())
{
- LLViewerInventoryCategory* vicat = (LLViewerInventoryCategory *) model->getCategory(item_id);
+ LLViewerInventoryCategory* vicat = model->getCategory(item_id);
llassert(vicat);
if (vicat)
{
@@ -4305,6 +4450,7 @@ void LLFolderBridge::buildContextMenuOptions(U32 flags, menuentry_vec_t& items
if (outfits_id == mUUID)
{
+ items.push_back(std::string("New Outfit Folder"));
items.push_back(std::string("New Outfit"));
}
@@ -4400,71 +4546,82 @@ void LLFolderBridge::buildContextMenuOptions(U32 flags, menuentry_vec_t& items
else if(isAgentInventory()) // do not allow creating in library
{
LLViewerInventoryCategory *cat = getCategory();
- // BAP removed protected check to re-enable standard ops in untyped folders.
- // Not sure what the right thing is to do here.
- if (!isCOFFolder() && cat && (cat->getPreferredType() != LLFolderType::FT_OUTFIT))
+
+ if (cat)
{
- if (!isInboxFolder() // don't allow creation in inbox
- && outfits_id != mUUID)
+ if (cat->getPreferredType() == LLFolderType::FT_OUTFIT)
{
- bool menu_items_added = false;
- // Do not allow to create 2-level subfolder in the Calling Card/Friends folder. EXT-694.
- if (!LLFriendCardsManager::instance().isCategoryInFriendFolder(cat))
+ // Want some but not all of the items from getClipboardEntries for outfits.
+ items.push_back(std::string("Rename"));
+ items.push_back(std::string("thumbnail"));
+
+ addDeleteContextMenuOptions(items, disabled_items);
+ // EXT-4030: disallow deletion of currently worn outfit
+ const LLViewerInventoryItem* base_outfit_link = LLAppearanceMgr::instance().getBaseOutfitLink();
+ if (base_outfit_link && (cat == base_outfit_link->getLinkedCategory()))
{
- items.push_back(std::string("New Folder"));
- menu_items_added = true;
+ disabled_items.push_back(std::string("Delete"));
}
- if (!isMarketplaceListingsFolder())
+ }
+ else if (outfits_id == mUUID)
+ {
+ getClipboardEntries(false, items, disabled_items, flags);
+ }
+ else if (!isCOFFolder())
+ {
+ EMyOutfitsSubfolderType in_my_outfits = myoutfit_object_subfolder_type(model, mUUID, outfits_id);
+ if (in_my_outfits != MY_OUTFITS_NO)
{
- items.push_back(std::string("upload_options"));
- items.push_back(std::string("upload_def"));
- items.push_back(std::string("create_new"));
- items.push_back(std::string("New Script"));
- items.push_back(std::string("New Note"));
- items.push_back(std::string("New Gesture"));
- items.push_back(std::string("New Material"));
- items.push_back(std::string("New Clothes"));
- items.push_back(std::string("New Body Parts"));
- items.push_back(std::string("New Settings"));
- if (!LLEnvironment::instance().isInventoryEnabled())
+ if (in_my_outfits == MY_OUTFITS_SUBFOLDER)
{
- disabled_items.push_back("New Settings");
+ // Not inside an outfit, but inside 'my outfits'
+ items.push_back(std::string("New Outfit"));
+ items.push_back(std::string("New Outfit Folder"));
}
- }
- else
- {
- items.push_back(std::string("New Listing Folder"));
- }
- if (menu_items_added)
- {
- items.push_back(std::string("Create Separator"));
- }
- }
- getClipboardEntries(false, items, disabled_items, flags);
- }
- else
- {
- // Want some but not all of the items from getClipboardEntries for outfits.
- if (cat && (cat->getPreferredType() == LLFolderType::FT_OUTFIT))
- {
- items.push_back(std::string("Rename"));
- items.push_back(std::string("thumbnail"));
+ items.push_back(std::string("Rename"));
+ items.push_back(std::string("thumbnail"));
- if (cat->getIsFavorite())
- {
- items.push_back(std::string("Remove from Favorites"));
+ addDeleteContextMenuOptions(items, disabled_items);
}
else
{
- items.push_back(std::string("Add to Favorites"));
- }
-
- addDeleteContextMenuOptions(items, disabled_items);
- // EXT-4030: disallow deletion of currently worn outfit
- const LLViewerInventoryItem *base_outfit_link = LLAppearanceMgr::instance().getBaseOutfitLink();
- if (base_outfit_link && (cat == base_outfit_link->getLinkedCategory()))
- {
- disabled_items.push_back(std::string("Delete"));
+ if (!isInboxFolder() // don't allow creation in inbox
+ && outfits_id != mUUID)
+ {
+ bool menu_items_added = false;
+ // Do not allow to create 2-level subfolder in the Calling Card/Friends folder. EXT-694.
+ if (!LLFriendCardsManager::instance().isCategoryInFriendFolder(cat))
+ {
+ items.push_back(std::string("New Folder"));
+ menu_items_added = true;
+ }
+ if (!isMarketplaceListingsFolder())
+ {
+ items.push_back(std::string("upload_options"));
+ items.push_back(std::string("upload_def"));
+ items.push_back(std::string("create_new"));
+ items.push_back(std::string("New Script"));
+ items.push_back(std::string("New Note"));
+ items.push_back(std::string("New Gesture"));
+ items.push_back(std::string("New Material"));
+ items.push_back(std::string("New Clothes"));
+ items.push_back(std::string("New Body Parts"));
+ items.push_back(std::string("New Settings"));
+ if (!LLEnvironment::instance().isInventoryEnabled())
+ {
+ disabled_items.push_back("New Settings");
+ }
+ }
+ else
+ {
+ items.push_back(std::string("New Listing Folder"));
+ }
+ if (menu_items_added)
+ {
+ items.push_back(std::string("Create Separator"));
+ }
+ }
+ getClipboardEntries(false, items, disabled_items, flags);
}
}
}
@@ -4472,6 +4629,15 @@ void LLFolderBridge::buildContextMenuOptions(U32 flags, menuentry_vec_t& items
if (model->findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT) == mUUID)
{
items.push_back(std::string("Copy outfit list to clipboard"));
+ if (isFavorite())
+ {
+ items.push_back(std::string("Remove from Favorites"));
+ }
+ else
+ {
+ items.push_back(std::string("Add to Favorites"));
+ }
+
addOpenFolderMenuOptions(flags, items);
}
@@ -4621,7 +4787,11 @@ void LLFolderBridge::buildContextMenuFolderOptions(U32 flags, menuentry_vec_t&
if (((flags & ITEM_IN_MULTI_SELECTION) == 0) && hasChildren() && (type != LLFolderType::FT_OUTFIT))
{
- items.push_back(std::string("Ungroup folder items"));
+ const LLUUID my_outfits = gInventory.findCategoryUUIDForType(LLFolderType::FT_MY_OUTFITS);
+ if (!gInventory.isObjectDescendentOf(mUUID, my_outfits))
+ {
+ items.push_back(std::string("Ungroup folder items"));
+ }
}
}
else
@@ -5394,13 +5564,23 @@ void LLFolderBridge::dropToMyOutfits(LLInventoryCategory* inv_cat, LLPointer<LLI
// Note: creation will take time, so passing folder id to callback is slightly unreliable,
// but so is collecting and passing descendants' ids
inventory_func_type func = boost::bind(outfitFolderCreatedCallback, inv_cat->getUUID(), _1, cb, mInventoryPanel);
- gInventory.createNewCategory(dest_id,
+ getInventoryModel()->createNewCategory(dest_id,
LLFolderType::FT_OUTFIT,
inv_cat->getName(),
func,
inv_cat->getThumbnailUUID());
}
+void LLFolderBridge::dropToMyOutfitsSubfolder(LLInventoryCategory* inv_cat, const LLUUID& dest_id, LLPointer<LLInventoryCallback> cb)
+{
+ inventory_func_type func = boost::bind(outfitFolderCreatedCallback, inv_cat->getUUID(), _1, cb, mInventoryPanel);
+ getInventoryModel()->createNewCategory(dest_id,
+ LLFolderType::FT_OUTFIT,
+ inv_cat->getName(),
+ func,
+ inv_cat->getThumbnailUUID());
+}
+
void LLFolderBridge::outfitFolderCreatedCallback(LLUUID cat_source_id,
LLUUID cat_dest_id,
LLPointer<LLInventoryCallback> cb,
@@ -5574,7 +5754,9 @@ bool LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,
}
else if (user_confirm && (move_is_into_current_outfit || move_is_into_outfit))
{
- accept = can_move_to_outfit(inv_item, move_is_into_current_outfit);
+ EMyOutfitsSubfolderType res = myoutfit_object_subfolder_type(model, mUUID, my_outifts_id);
+ // don't allow items in my outfits' subfodlers, only in outfits and outfit's subfolders
+ accept = res != MY_OUTFITS_SUBFOLDER && can_move_to_outfit(inv_item, move_is_into_current_outfit);
}
else if (user_confirm && (move_is_into_favorites || move_is_into_landmarks))
{
diff --git a/indra/newview/llinventorybridge.h b/indra/newview/llinventorybridge.h
index 6c3790d2ec..ea80b6959a 100644
--- a/indra/newview/llinventorybridge.h
+++ b/indra/newview/llinventorybridge.h
@@ -373,6 +373,7 @@ protected:
void dropToFavorites(LLInventoryItem* inv_item, LLPointer<LLInventoryCallback> cb = NULL);
void dropToOutfit(LLInventoryItem* inv_item, bool move_is_into_current_outfit, LLPointer<LLInventoryCallback> cb = NULL);
void dropToMyOutfits(LLInventoryCategory* inv_cat, LLPointer<LLInventoryCallback> cb = NULL);
+ void dropToMyOutfitsSubfolder(LLInventoryCategory* inv_cat, const LLUUID& dest, LLPointer<LLInventoryCallback> cb = NULL);
//--------------------------------------------------------------------
// Messy hacks for handling folder options
diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp
index a2626daa2e..b577e302a8 100644
--- a/indra/newview/llinventoryfunctions.cpp
+++ b/indra/newview/llinventoryfunctions.cpp
@@ -441,7 +441,13 @@ void copy_inventory_category(LLInventoryModel* model,
{
copy_inventory_category_content(new_id, model, cat, root_copy_id, move_no_copy_items);
};
- gInventory.createNewCategory(parent_id, LLFolderType::FT_NONE, cat->getName(), func, cat->getThumbnailUUID());
+ LLFolderType::EType type = LLFolderType::FT_NONE;
+ if (cat->getPreferredType() == LLFolderType::FT_OUTFIT)
+ {
+ // at the moment only permitting copy of outfits and normal folders
+ type = LLFolderType::FT_OUTFIT;
+ }
+ gInventory.createNewCategory(parent_id, type, cat->getName(), func, cat->getThumbnailUUID());
}
void copy_inventory_category(LLInventoryModel* model,
@@ -463,6 +469,25 @@ void copy_inventory_category(LLInventoryModel* model,
gInventory.createNewCategory(parent_id, LLFolderType::FT_NONE, cat->getName(), func, cat->getThumbnailUUID());
}
+void copy_inventory_category(LLInventoryModel* model,
+ LLViewerInventoryCategory* cat,
+ const LLUUID& parent_id,
+ const LLUUID& root_copy_id,
+ bool move_no_copy_items,
+ LLPointer<LLInventoryCallback> callback)
+{
+ // Create the initial folder
+ inventory_func_type func = [model, cat, root_copy_id, move_no_copy_items, callback](const LLUUID& new_id)
+ {
+ copy_inventory_category_content(new_id, model, cat, root_copy_id, move_no_copy_items);
+ if (callback)
+ {
+ callback.get()->fire(new_id);
+ }
+ };
+ gInventory.createNewCategory(parent_id, LLFolderType::FT_NONE, cat->getName(), func, cat->getThumbnailUUID());
+}
+
void copy_cb(const LLUUID& dest_folder, const LLUUID& root_id)
{
// Decrement the count in root_id since that one item won't be copied over
@@ -2306,7 +2331,7 @@ bool can_move_to_landmarks(LLInventoryItem* inv_item)
}
// Returns true if folder's content can be moved to Current Outfit or any outfit folder.
-bool can_move_to_my_outfits(LLInventoryModel* model, LLInventoryCategory* inv_cat, U32 wear_limit)
+bool can_move_to_my_outfits_as_outfit(LLInventoryModel* model, LLInventoryCategory* inv_cat, U32 wear_limit)
{
LLInventoryModel::cat_array_t *cats;
LLInventoryModel::item_array_t *items;
@@ -2345,6 +2370,51 @@ bool can_move_to_my_outfits(LLInventoryModel* model, LLInventoryCategory* inv_ca
return true;
}
+bool can_move_to_my_outfits_as_subfolder(LLInventoryModel* model, LLInventoryCategory* inv_cat, S32 depth)
+{
+ LLInventoryModel::cat_array_t* cats;
+ LLInventoryModel::item_array_t* items;
+ model->getDirectDescendentsOf(inv_cat->getUUID(), cats, items);
+
+ if (items->size() > 0)
+ {
+ // subfolders don't allow items
+ return false;
+ }
+
+ if (inv_cat->getPreferredType() != LLFolderType::FT_NONE)
+ {
+ // only normal folders can become subfodlers
+ return false;
+ }
+
+ constexpr size_t MAX_CONTENT = 255;
+ if (cats->size() > MAX_CONTENT)
+ {
+ // don't allow massive folders
+ return false;
+ }
+
+ for (LLPointer<LLViewerInventoryCategory>& cat : *cats)
+ {
+ // outfits are valid to move, check non-outfit folders
+ if (cat->getPreferredType() != LLFolderType::FT_OUTFIT)
+ {
+ if (depth == 3)
+ {
+ // don't allow massive folders
+ return false;
+ }
+ if (!can_move_to_my_outfits_as_subfolder(model, cat, depth + 1))
+ {
+ return false;
+ }
+ }
+ }
+
+ return true;
+}
+
std::string get_localized_folder_name(LLUUID cat_uuid)
{
std::string localized_root_name;
@@ -2622,6 +2692,40 @@ bool can_share_item(const LLUUID& item_id)
return can_share;
}
+
+EMyOutfitsSubfolderType myoutfit_object_subfolder_type(
+ LLInventoryModel* model,
+ const LLUUID& obj_id,
+ const LLUUID& my_outfits_id)
+{
+ if (obj_id == my_outfits_id) return MY_OUTFITS_NO;
+
+ const LLViewerInventoryCategory* test_cat = model->getCategory(obj_id);
+ if (test_cat->getPreferredType() == LLFolderType::FT_OUTFIT)
+ {
+ return MY_OUTFITS_OUTFIT;
+ }
+ while (test_cat)
+ {
+ if (test_cat->getPreferredType() == LLFolderType::FT_OUTFIT)
+ {
+ return MY_OUTFITS_SUBOUTFIT;
+ }
+
+ const LLUUID& parent_id = test_cat->getParentUUID();
+ if (parent_id.isNull())
+ {
+ return MY_OUTFITS_NO;
+ }
+ if (parent_id == my_outfits_id)
+ {
+ return MY_OUTFITS_SUBFOLDER;
+ }
+ test_cat = model->getCategory(parent_id);
+ }
+
+ return MY_OUTFITS_NO;
+}
///----------------------------------------------------------------------------
/// LLMarketplaceValidator implementations
///----------------------------------------------------------------------------
@@ -2750,6 +2854,11 @@ bool LLInventoryCollectFunctor::itemTransferCommonlyAllowed(const LLInventoryIte
return false;
}
+bool LLIsFolderType::operator()(LLInventoryCategory* cat, LLInventoryItem* item)
+{
+ return cat && cat->getPreferredType() == mType;
+}
+
bool LLIsType::operator()(LLInventoryCategory* cat, LLInventoryItem* item)
{
if(mType == LLAssetType::AT_CATEGORY)
diff --git a/indra/newview/llinventoryfunctions.h b/indra/newview/llinventoryfunctions.h
index a668cc31d8..ae7bb8770d 100644
--- a/indra/newview/llinventoryfunctions.h
+++ b/indra/newview/llinventoryfunctions.h
@@ -78,6 +78,7 @@ void rename_category(LLInventoryModel* model, const LLUUID& cat_id, const std::s
void copy_inventory_category(LLInventoryModel* model, LLViewerInventoryCategory* cat, const LLUUID& parent_id, const LLUUID& root_copy_id = LLUUID::null, bool move_no_copy_items = false);
void copy_inventory_category(LLInventoryModel* model, LLViewerInventoryCategory* cat, const LLUUID& parent_id, const LLUUID& root_copy_id, bool move_no_copy_items, inventory_func_type callback);
+void copy_inventory_category(LLInventoryModel* model, LLViewerInventoryCategory* cat, const LLUUID& parent_id, const LLUUID& root_copy_id, bool move_no_copy_items, LLPointer<LLInventoryCallback> callback);
void copy_inventory_category_content(const LLUUID& new_cat_uuid, LLInventoryModel* model, LLViewerInventoryCategory* cat, const LLUUID& root_copy_id, bool move_no_copy_items);
@@ -112,7 +113,8 @@ std::string get_category_path(LLUUID cat_id);
bool can_move_to_outfit(LLInventoryItem* inv_item, bool move_is_into_current_outfit);
bool can_move_to_landmarks(LLInventoryItem* inv_item);
-bool can_move_to_my_outfits(LLInventoryModel* model, LLInventoryCategory* inv_cat, U32 wear_limit);
+bool can_move_to_my_outfits_as_outfit(LLInventoryModel* model, LLInventoryCategory* inv_cat, U32 wear_limit);
+bool can_move_to_my_outfits_as_subfolder(LLInventoryModel* model, LLInventoryCategory* inv_cat, S32 depth = 0);
std::string get_localized_folder_name(LLUUID cat_uuid);
void new_folder_window(const LLUUID& folder_id);
void ungroup_folder_items(const LLUUID& folder_id);
@@ -126,6 +128,18 @@ std::string get_searchable_creator_name(LLInventoryModel* model, const LLUUID& i
std::string get_searchable_UUID(LLInventoryModel* model, const LLUUID& item_id);
bool can_share_item(const LLUUID& item_id);
+enum EMyOutfitsSubfolderType
+{
+ MY_OUTFITS_NO,
+ MY_OUTFITS_SUBFOLDER,
+ MY_OUTFITS_OUTFIT,
+ MY_OUTFITS_SUBOUTFIT,
+};
+EMyOutfitsSubfolderType myoutfit_object_subfolder_type(
+ LLInventoryModel* model,
+ const LLUUID& obj_id,
+ const LLUUID& my_outfits_id);
+
/** Miscellaneous global functions
** **
*******************************************************************************/
@@ -192,7 +206,9 @@ class LLInventoryCollectFunctor
{
public:
virtual ~LLInventoryCollectFunctor(){};
- virtual bool operator()(LLInventoryCategory* cat, LLInventoryItem* item) = 0;
+ virtual bool operator()(LLInventoryCategory* cat, LLInventoryItem* item) = 0;
+
+ virtual bool exceedsLimit() { return false; }
static bool itemTransferCommonlyAllowed(const LLInventoryItem* item);
};
@@ -239,6 +255,24 @@ protected:
// the type is the type passed in during construction.
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+class LLIsFolderType : public LLInventoryCollectFunctor
+{
+public:
+ LLIsFolderType(LLFolderType::EType type) : mType(type) {}
+ virtual ~LLIsFolderType() {}
+ virtual bool operator()(LLInventoryCategory* cat,
+ LLInventoryItem* item);
+protected:
+ LLFolderType::EType mType;
+};
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// Class LLIsType
+//
+// Implementation of a LLInventoryCollectFunctor which returns true if
+// the type is the type passed in during construction.
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
class LLIsType : public LLInventoryCollectFunctor
{
public:
diff --git a/indra/newview/llinventorygallery.cpp b/indra/newview/llinventorygallery.cpp
index 56c5049019..a4cb6ea65d 100644
--- a/indra/newview/llinventorygallery.cpp
+++ b/indra/newview/llinventorygallery.cpp
@@ -60,10 +60,12 @@ static LLPanelInjector<LLInventoryGallery> t_inventory_gallery("inventory_galler
const S32 GALLERY_ITEMS_PER_ROW_MIN = 2;
const S32 FAST_LOAD_THUMBNAIL_TRSHOLD = 50; // load folders below this value immediately
+
// Helper dnd functions
bool dragCategoryIntoFolder(LLUUID dest_id, LLInventoryCategory* inv_cat, bool drop, std::string& tooltip_msg, bool is_link);
bool dragItemIntoFolder(LLUUID folder_id, LLInventoryItem* inv_item, bool drop, std::string& tooltip_msg, bool user_confirm);
void dropToMyOutfits(LLInventoryCategory* inv_cat);
+void dropToMyOutfitsSubfolder(LLInventoryCategory* inv_cat, const LLUUID& dest_id);
class LLGalleryPanel: public LLPanel
{
@@ -3733,6 +3735,7 @@ bool dragCategoryIntoFolder(LLUUID dest_id, LLInventoryCategory* inv_cat,
//
bool is_movable = true;
+ bool create_outfit = false;
if (is_movable && (marketplacelistings_id == cat_id))
{
@@ -3766,14 +3769,24 @@ bool dragCategoryIntoFolder(LLUUID dest_id, LLInventoryCategory* inv_cat,
U32 max_items_to_wear = gSavedSettings.getU32("WearFolderLimit");
if (is_movable && move_is_into_outfit)
{
- if (dest_id == my_outifts_id)
+ if ((inv_cat->getPreferredType() != LLFolderType::FT_NONE) && (inv_cat->getPreferredType() != LLFolderType::FT_OUTFIT))
+ {
+ tooltip_msg = LLTrans::getString("TooltipCantCreateOutfit");
+ is_movable = false;
+ }
+ else if (dest_id == my_outifts_id)
{
if (source != LLToolDragAndDrop::SOURCE_AGENT || move_is_from_marketplacelistings)
{
tooltip_msg = LLTrans::getString("TooltipOutfitNotInInventory");
is_movable = false;
}
- else if (can_move_to_my_outfits(model, inv_cat, max_items_to_wear))
+ else if (can_move_to_my_outfits_as_outfit(model, inv_cat, max_items_to_wear))
+ {
+ is_movable = true;
+ create_outfit = true;
+ }
+ else if (can_move_to_my_outfits_as_subfolder(model, inv_cat))
{
is_movable = true;
}
@@ -3783,13 +3796,44 @@ bool dragCategoryIntoFolder(LLUUID dest_id, LLInventoryCategory* inv_cat,
is_movable = false;
}
}
- else if (dest_cat && dest_cat->getPreferredType() == LLFolderType::FT_NONE)
+ else if (!dest_cat)
{
- is_movable = ((inv_cat->getPreferredType() == LLFolderType::FT_NONE) || (inv_cat->getPreferredType() == LLFolderType::FT_OUTFIT));
+ is_movable = false;
+ tooltip_msg = LLTrans::getString("TooltipCantCreateOutfit");
}
else
{
- is_movable = false;
+ EMyOutfitsSubfolderType dest_res = myoutfit_object_subfolder_type(model, dest_id, my_outifts_id);
+ EMyOutfitsSubfolderType inv_res = myoutfit_object_subfolder_type(model, cat_id, my_outifts_id);
+ if ((dest_res == MY_OUTFITS_OUTFIT || dest_res == MY_OUTFITS_SUBOUTFIT) && inv_res == MY_OUTFITS_OUTFIT)
+ {
+ is_movable = false;
+ tooltip_msg = LLTrans::getString("TooltipCantMoveOutfitIntoOutfit");
+ }
+ else if (dest_res == MY_OUTFITS_OUTFIT || dest_res == MY_OUTFITS_SUBOUTFIT)
+ {
+ is_movable = false;
+ tooltip_msg = LLTrans::getString("TooltipCantCreateOutfit");
+ }
+ else if (dest_res == MY_OUTFITS_SUBFOLDER && inv_res == MY_OUTFITS_SUBOUTFIT)
+ {
+ is_movable = false;
+ tooltip_msg = LLTrans::getString("TooltipCantCreateOutfit");
+ }
+ else if (can_move_to_my_outfits_as_outfit(model, inv_cat, max_items_to_wear))
+ {
+ is_movable = true;
+ create_outfit = true;
+ }
+ else if (can_move_to_my_outfits_as_subfolder(model, inv_cat))
+ {
+ is_movable = true;
+ }
+ else
+ {
+ is_movable = false;
+ tooltip_msg = LLTrans::getString("TooltipCantCreateOutfit");
+ }
}
}
if (is_movable && move_is_into_current_outfit && is_link)
@@ -3915,9 +3959,73 @@ bool dragCategoryIntoFolder(LLUUID dest_id, LLInventoryCategory* inv_cat,
if (dest_id == my_outifts_id)
{
- // Category can contains objects,
- // create a new folder and populate it with links to original objects
- dropToMyOutfits(inv_cat);
+ EMyOutfitsSubfolderType inv_res = myoutfit_object_subfolder_type(model, cat_id, my_outifts_id);
+ if (inv_res == MY_OUTFITS_SUBFOLDER || inv_res == MY_OUTFITS_OUTFIT || !create_outfit)
+ {
+ gInventory.changeCategoryParent(
+ (LLViewerInventoryCategory*)inv_cat,
+ dest_id,
+ move_is_into_trash);
+ }
+ else
+ {
+ // Category can contains objects,
+ // create a new folder and populate it with links to original objects
+ dropToMyOutfits(inv_cat);
+ }
+ }
+ else if (move_is_into_my_outfits)
+ {
+ EMyOutfitsSubfolderType dest_res = myoutfit_object_subfolder_type(model, dest_id, my_outifts_id);
+ EMyOutfitsSubfolderType inv_res = myoutfit_object_subfolder_type(model, cat_id, my_outifts_id);
+ switch (inv_res)
+ {
+ case MY_OUTFITS_NO:
+ // Moning from outside outfits into outfits
+ if (dest_res == MY_OUTFITS_SUBFOLDER && create_outfit)
+ {
+ // turn it into outfit
+ dropToMyOutfitsSubfolder(inv_cat, dest_id);
+ }
+ else
+ {
+ gInventory.changeCategoryParent(
+ (LLViewerInventoryCategory*)inv_cat,
+ dest_id,
+ move_is_into_trash);
+ }
+ break;
+ case MY_OUTFITS_SUBFOLDER:
+ case MY_OUTFITS_OUTFIT:
+ // only permit moving subfodlers and outfits into other subfolders
+ if (dest_res == MY_OUTFITS_SUBFOLDER)
+ {
+ gInventory.changeCategoryParent(
+ (LLViewerInventoryCategory*)inv_cat,
+ dest_id,
+ move_is_into_trash);
+ }
+ else
+ {
+ assert(false); // mot permitted, shouldn't have accepted
+ }
+ break;
+ case MY_OUTFITS_SUBOUTFIT:
+ if (dest_res == MY_OUTFITS_SUBOUTFIT || dest_res == MY_OUTFITS_OUTFIT)
+ {
+ gInventory.changeCategoryParent(
+ (LLViewerInventoryCategory*)inv_cat,
+ dest_id,
+ move_is_into_trash);
+ }
+ else
+ {
+ assert(false); // mot permitted, shouldn't have accepted
+ }
+ break;
+ default:
+ break;
+ }
}
// if target is current outfit folder we use link
else if (move_is_into_current_outfit &&
@@ -4062,3 +4170,11 @@ void dropToMyOutfits(LLInventoryCategory* inv_cat)
inventory_func_type func = boost::bind(&outfitFolderCreatedCallback, inv_cat->getUUID(), _1);
gInventory.createNewCategory(dest_id, LLFolderType::FT_OUTFIT, inv_cat->getName(), func, inv_cat->getThumbnailUUID());
}
+
+void dropToMyOutfitsSubfolder(LLInventoryCategory* inv_cat, const LLUUID &dest_id)
+{
+ // Note: creation will take time, so passing folder id to callback is slightly unreliable,
+ // but so is collecting and passing descendants' ids
+ inventory_func_type func = boost::bind(&outfitFolderCreatedCallback, inv_cat->getUUID(), _1);
+ gInventory.createNewCategory(dest_id, LLFolderType::FT_OUTFIT, inv_cat->getName(), func, inv_cat->getThumbnailUUID());
+}
diff --git a/indra/newview/llinventorygallerymenu.cpp b/indra/newview/llinventorygallerymenu.cpp
index d0747e7a8d..388e1604ea 100644
--- a/indra/newview/llinventorygallerymenu.cpp
+++ b/indra/newview/llinventorygallerymenu.cpp
@@ -606,7 +606,9 @@ void LLInventoryGalleryContextMenu::updateMenuItemsVisibility(LLContextMenu* men
bool is_trash = (selected_id == gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH));
bool is_in_trash = gInventory.isObjectDescendentOf(selected_id, gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH));
bool is_lost_and_found = (selected_id == gInventory.findCategoryUUIDForType(LLFolderType::FT_LOST_AND_FOUND));
- bool is_outfits= (selected_id == gInventory.findCategoryUUIDForType(LLFolderType::FT_MY_OUTFITS));
+ const LLUUID my_outfits = gInventory.findCategoryUUIDForType(LLFolderType::FT_MY_OUTFITS);
+ bool is_outfits= (selected_id == my_outfits);
+ bool is_in_outfits = is_outfits || gInventory.isObjectDescendentOf(selected_id, my_outfits);
bool is_in_favorites = gInventory.isObjectDescendentOf(selected_id, gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE));
//bool is_favorites= (selected_id == gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE));
@@ -745,7 +747,7 @@ void LLInventoryGalleryContextMenu::updateMenuItemsVisibility(LLContextMenu* men
}
else
{
- if (is_agent_inventory && !is_inbox && !is_cof && !is_in_favorites && !is_outfits)
+ if (is_agent_inventory && !is_inbox && !is_cof && !is_in_favorites && !is_outfits && !is_in_outfits)
{
LLViewerInventoryCategory* category = gInventory.getCategory(selected_id);
if (!category || !LLFriendCardsManager::instance().isCategoryInFriendFolder(category))
@@ -792,9 +794,20 @@ void LLInventoryGalleryContextMenu::updateMenuItemsVisibility(LLContextMenu* men
items.push_back(std::string("Set favorite folder"));
- if(is_outfits && !isRootFolder())
+ if(is_outfits)
{
- items.push_back(std::string("New Outfit"));
+ EMyOutfitsSubfolderType res = myoutfit_object_subfolder_type(&gInventory, selected_id, my_outfits);
+ if (res != MY_OUTFITS_OUTFIT && res != MY_OUTFITS_SUBOUTFIT)
+ {
+ items.push_back(std::string("New Outfit"));
+ items.push_back(std::string("New Outfit Folder"));
+ }
+ items.push_back(std::string("Delete"));
+ items.push_back(std::string("Rename"));
+ if (!get_is_category_and_children_removable(&gInventory, selected_id, false))
+ {
+ disabled_items.push_back(std::string("Delete"));
+ }
}
if (!is_trash && !is_in_trash && gInventory.getRootFolderID() != selected_id)
@@ -810,9 +823,9 @@ void LLInventoryGalleryContextMenu::updateMenuItemsVisibility(LLContextMenu* men
}
items.push_back(std::string("Subfolder Separator"));
- if (!is_system_folder && !isRootFolder())
+ if (!is_system_folder && !isRootFolder() && !is_outfits)
{
- if(has_children && (folder_type != LLFolderType::FT_OUTFIT))
+ if(has_children && (folder_type != LLFolderType::FT_OUTFIT) && !is_in_outfits)
{
items.push_back(std::string("Ungroup folder items"));
}
diff --git a/indra/newview/llinventorylistener.cpp b/indra/newview/llinventorylistener.cpp
new file mode 100644
index 0000000000..028483e134
--- /dev/null
+++ b/indra/newview/llinventorylistener.cpp
@@ -0,0 +1,309 @@
+/**
+ * @file llinventorylistener.cpp
+ *
+ * $LicenseInfo:firstyear=2024&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2024, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "llinventorylistener.h"
+
+#include "llappearancemgr.h"
+#include "llinventoryfunctions.h"
+#include "lltransutil.h"
+#include "llwearableitemslist.h"
+#include "stringize.h"
+
+LLInventoryListener::LLInventoryListener()
+ : LLEventAPI("LLInventory",
+ "API for interactions with viewer Inventory items")
+{
+ add("getItemsInfo",
+ "Return information about items or folders defined in [\"item_ids\"]:\n"
+ "reply will contain [\"items\"] and [\"categories\"] result set keys",
+ &LLInventoryListener::getItemsInfo,
+ llsd::map("item_ids", LLSD(), "reply", LLSD()));
+
+ add("getFolderTypeNames",
+ "Return the table of folder type names, contained in [\"names\"]\n",
+ &LLInventoryListener::getFolderTypeNames,
+ llsd::map("reply", LLSD()));
+
+ add("getAssetTypeNames",
+ "Return the table of asset type names, contained in [\"names\"]\n",
+ &LLInventoryListener::getAssetTypeNames,
+ llsd::map("reply", LLSD()));
+
+ add("getBasicFolderID",
+ "Return the UUID of the folder by specified folder type name, for example:\n"
+ "\"Textures\", \"My outfits\", \"Sounds\" and other basic folders which have associated type",
+ &LLInventoryListener::getBasicFolderID,
+ llsd::map("ft_name", LLSD(), "reply", LLSD()));
+
+ add("getDirectDescendants",
+ "Return result set keys [\"categories\"] and [\"items\"] for the direct\n"
+ "descendants of the [\"folder_id\"]",
+ &LLInventoryListener::getDirectDescendants,
+ llsd::map("folder_id", LLSD(), "reply", LLSD()));
+
+ add("collectDescendantsIf",
+ "Return result set keys [\"categories\"] and [\"items\"] for the descendants\n"
+ "of the [\"folder_id\"], if it passes specified filters:\n"
+ "[\"name\"] is a substring of object's name,\n"
+ "[\"desc\"] is a substring of object's description,\n"
+ "asset [\"type\"] corresponds to the string name of the object's asset type\n"
+ "[\"limit\"] sets item count limit in result set (default unlimited)\n"
+ "[\"filter_links\"]: EXCLUDE_LINKS - don't show links, ONLY_LINKS - only show links, INCLUDE_LINKS - show links too (default)",
+ &LLInventoryListener::collectDescendantsIf,
+ llsd::map("folder_id", LLSD(), "reply", LLSD()));
+}
+
+void add_cat_info(LLEventAPI::Response& response, LLViewerInventoryCategory* cat)
+{
+ response["categories"].insert(cat->getUUID().asString(),
+ llsd::map("id", cat->getUUID(),
+ "name", cat->getName(),
+ "parent_id", cat->getParentUUID(),
+ "type", LLFolderType::lookup(cat->getPreferredType())));
+
+};
+
+void add_item_info(LLEventAPI::Response& response, LLViewerInventoryItem* item)
+{
+ response["items"].insert(item->getUUID().asString(),
+ llsd::map("id", item->getUUID(),
+ "name", item->getName(),
+ "parent_id", item->getParentUUID(),
+ "desc", item->getDescription(),
+ "inv_type", LLInventoryType::lookup(item->getInventoryType()),
+ "asset_type", LLAssetType::lookup(item->getType()),
+ "creation_date", LLSD::Integer(item->getCreationDate()),
+ "asset_id", item->getAssetUUID(),
+ "is_link", item->getIsLinkType(),
+ "linked_id", item->getLinkedUUID()));
+}
+
+void add_objects_info(LLEventAPI::Response& response, LLInventoryModel::cat_array_t cat_array, LLInventoryModel::item_array_t item_array)
+{
+ for (auto& p : item_array)
+ {
+ add_item_info(response, p);
+ }
+ for (auto& p : cat_array)
+ {
+ add_cat_info(response, p);
+ }
+}
+
+void LLInventoryListener::getItemsInfo(LLSD const &data)
+{
+ Response response(LLSD(), data);
+ uuid_vec_t ids = LLSDParam<uuid_vec_t>(data["item_ids"]);
+ for (auto &it : ids)
+ {
+ LLViewerInventoryItem* item = gInventory.getItem(it);
+ if (item)
+ {
+ add_item_info(response, item);
+ }
+ else
+ {
+ LLViewerInventoryCategory *cat = gInventory.getCategory(it);
+ if (cat)
+ {
+ add_cat_info(response, cat);
+ }
+ }
+ }
+}
+
+void LLInventoryListener::getFolderTypeNames(LLSD const &data)
+{
+ Response response(llsd::map("names", LLFolderType::getTypeNames()), data);
+}
+
+void LLInventoryListener::getAssetTypeNames(LLSD const &data)
+{
+ Response response(llsd::map("names", LLAssetType::getTypeNames()), data);
+}
+
+void LLInventoryListener::getBasicFolderID(LLSD const &data)
+{
+ Response response(llsd::map("id", gInventory.findCategoryUUIDForType(LLFolderType::lookup(data["ft_name"].asString()))), data);
+}
+
+
+void LLInventoryListener::getDirectDescendants(LLSD const &data)
+{
+ Response response(LLSD(), data);
+ LLUUID folder_id(data["folder_id"].asUUID());
+ LLViewerInventoryCategory* cat = gInventory.getCategory(folder_id);
+ if (!cat)
+ {
+ return response.error(stringize("Folder ", std::quoted(data["folder_id"].asString()), " was not found"));
+ }
+ LLInventoryModel::cat_array_t* cats;
+ LLInventoryModel::item_array_t* items;
+ gInventory.getDirectDescendentsOf(folder_id, cats, items);
+
+ add_objects_info(response, *cats, *items);
+}
+
+struct LLFilteredCollector : public LLInventoryCollectFunctor
+{
+ enum EFilterLink
+ {
+ INCLUDE_LINKS, // show links too
+ EXCLUDE_LINKS, // don't show links
+ ONLY_LINKS // only show links
+ };
+
+ LLFilteredCollector(LLSD const &data);
+ virtual ~LLFilteredCollector() {}
+ virtual bool operator()(LLInventoryCategory *cat, LLInventoryItem *item) override;
+ virtual bool exceedsLimit() override
+ {
+ // mItemLimit == 0 means unlimited
+ return (mItemLimit && mItemLimit <= mItemCount);
+ }
+
+ protected:
+ bool checkagainstType(LLInventoryCategory *cat, LLInventoryItem *item);
+ bool checkagainstNameDesc(LLInventoryCategory *cat, LLInventoryItem *item);
+ bool checkagainstLinks(LLInventoryCategory *cat, LLInventoryItem *item);
+
+ LLAssetType::EType mType;
+ std::string mName;
+ std::string mDesc;
+ EFilterLink mLinkFilter;
+
+ S32 mItemLimit;
+ S32 mItemCount;
+};
+
+void LLInventoryListener::collectDescendantsIf(LLSD const &data)
+{
+ Response response(LLSD(), data);
+ LLUUID folder_id(data["folder_id"].asUUID());
+ LLViewerInventoryCategory *cat = gInventory.getCategory(folder_id);
+ if (!cat)
+ {
+ return response.error(stringize("Folder ", std::quoted(data["folder_id"].asString()), " was not found"));
+ }
+ LLInventoryModel::cat_array_t cat_array;
+ LLInventoryModel::item_array_t item_array;
+
+ LLFilteredCollector collector = LLFilteredCollector(data);
+
+ gInventory.collectDescendentsIf(folder_id, cat_array, item_array, LLInventoryModel::EXCLUDE_TRASH, collector);
+
+ add_objects_info(response, cat_array, item_array);
+}
+
+LLFilteredCollector::LLFilteredCollector(LLSD const &data) :
+ mType(LLAssetType::EType::AT_UNKNOWN),
+ mLinkFilter(INCLUDE_LINKS),
+ mItemLimit(0),
+ mItemCount(0)
+{
+
+ mName = data["name"].asString();
+ mDesc = data["desc"].asString();
+
+ if (data.has("type"))
+ {
+ mType = LLAssetType::lookup(data["type"]);
+ }
+ if (data.has("filter_links"))
+ {
+ if (data["filter_links"] == "EXCLUDE_LINKS")
+ {
+ mLinkFilter = EXCLUDE_LINKS;
+ }
+ else if (data["filter_links"] == "ONLY_LINKS")
+ {
+ mLinkFilter = ONLY_LINKS;
+ }
+ }
+ if (data["limit"].isInteger())
+ {
+ mItemLimit = std::max(data["limit"].asInteger(), 1);
+ }
+}
+
+bool LLFilteredCollector::operator()(LLInventoryCategory *cat, LLInventoryItem *item)
+{
+ bool passed = checkagainstType(cat, item);
+ passed = passed && checkagainstNameDesc(cat, item);
+ passed = passed && checkagainstLinks(cat, item);
+
+ if (passed)
+ {
+ ++mItemCount;
+ }
+ return passed;
+}
+
+bool LLFilteredCollector::checkagainstNameDesc(LLInventoryCategory *cat, LLInventoryItem *item)
+{
+ std::string name, desc;
+ bool passed(true);
+ if (cat)
+ {
+ if (!mDesc.empty()) return false;
+ name = cat->getName();
+ }
+ if (item)
+ {
+ name = item->getName();
+ passed = (mDesc.empty() || (item->getDescription().find(mDesc) != std::string::npos));
+ }
+
+ return passed && (mName.empty() || name.find(mName) != std::string::npos);
+}
+
+bool LLFilteredCollector::checkagainstType(LLInventoryCategory *cat, LLInventoryItem *item)
+{
+ if (mType == LLAssetType::AT_UNKNOWN)
+ {
+ return true;
+ }
+ if (cat && (mType == LLAssetType::AT_CATEGORY))
+ {
+ return true;
+ }
+ if (item && item->getType() == mType)
+ {
+ return true;
+ }
+ return false;
+}
+
+bool LLFilteredCollector::checkagainstLinks(LLInventoryCategory *cat, LLInventoryItem *item)
+{
+ bool is_link = cat ? cat->getIsLinkType() : item->getIsLinkType();
+ if (is_link && (mLinkFilter == EXCLUDE_LINKS))
+ return false;
+ if (!is_link && (mLinkFilter == ONLY_LINKS))
+ return false;
+ return true;
+}
diff --git a/indra/newview/llinventorylistener.h b/indra/newview/llinventorylistener.h
new file mode 100644
index 0000000000..d50397730c
--- /dev/null
+++ b/indra/newview/llinventorylistener.h
@@ -0,0 +1,48 @@
+/**
+ * @file llinventorylistener.h
+ *
+ * $LicenseInfo:firstyear=2024&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2024, 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_LLINVENTORYLISTENER_H
+#define LL_LLINVENTORYLISTENER_H
+
+#include "lleventapi.h"
+#include "llinventoryfunctions.h"
+
+class LLInventoryListener : public LLEventAPI
+{
+public:
+ LLInventoryListener();
+
+private:
+ void getItemsInfo(LLSD const &data);
+ void getFolderTypeNames(LLSD const &data);
+ void getAssetTypeNames(LLSD const &data);
+ void getBasicFolderID(LLSD const &data);
+ void getDirectDescendants(LLSD const &data);
+ void collectDescendantsIf(LLSD const &data);
+};
+
+#endif // LL_LLINVENTORYLISTENER_H
+
diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp
index bc33f29c33..d9ee3f8bf4 100644
--- a/indra/newview/llinventorymodel.cpp
+++ b/indra/newview/llinventorymodel.cpp
@@ -1007,7 +1007,8 @@ void LLInventoryModel::createNewCategory(const LLUUID& parent_id,
return;
}
- if (preferred_type != LLFolderType::FT_NONE)
+ if (preferred_type != LLFolderType::FT_NONE
+ && preferred_type != LLFolderType::FT_OUTFIT)
{
// Ultimately this should only be done for non-singleton
// types. Requires back-end changes to guarantee that others
@@ -1282,6 +1283,10 @@ void LLInventoryModel::collectDescendentsIf(const LLUUID& id,
{
for (auto& cat : *cat_array)
{
+ if (add.exceedsLimit())
+ {
+ break;
+ }
if(add(cat,NULL))
{
cats.push_back(cat);
@@ -1297,6 +1302,10 @@ void LLInventoryModel::collectDescendentsIf(const LLUUID& id,
{
for (auto& item : *item_array)
{
+ if (add.exceedsLimit())
+ {
+ break;
+ }
if(add(NULL, item))
{
items.push_back(item);
@@ -2767,6 +2776,7 @@ bool LLInventoryModel::loadSkeleton(
bool is_cache_obsolete = false;
if (loadFromFile(inventory_filename, categories, items, categories_to_update, is_cache_obsolete))
{
+ LL_PROFILE_ZONE_NAMED("loadFromFile");
// We were able to find a cache of files. So, use what we
// found to generate a set of categories we should add. We
// will go through each category loaded and if the version
@@ -3500,7 +3510,9 @@ bool LLInventoryModel::saveToFile(const std::string& filename,
{
if (cat->getVersion() != LLViewerInventoryCategory::VERSION_UNKNOWN)
{
- fileXML << LLSDOStreamer<LLSDNotationFormatter>(cat->exportLLSD()) << std::endl;
+ LLSD sd = LLSD::emptyMap();
+ cat->exportLLSD(sd);
+ fileXML << LLSDOStreamer<LLSDNotationFormatter>(sd) << std::endl;
cat_count++;
}
@@ -3514,7 +3526,9 @@ bool LLInventoryModel::saveToFile(const std::string& filename,
auto it_count = items.size();
for (auto& item : items)
{
- fileXML << LLSDOStreamer<LLSDNotationFormatter>(item->asLLSD()) << std::endl;
+ LLSD sd = LLSD::emptyMap();
+ item->asLLSD(sd);
+ fileXML << LLSDOStreamer<LLSDNotationFormatter>(sd) << std::endl;
if (fileXML.fail())
{
@@ -3526,7 +3540,7 @@ bool LLInventoryModel::saveToFile(const std::string& filename,
fileXML.close();
- LL_INFOS(LOG_INV) << "Inventory saved: " << cat_count << " categories, " << it_count << " items." << LL_ENDL;
+ LL_INFOS(LOG_INV) << "Inventory saved: " << (S32)cat_count << " categories, " << (S32)it_count << " items." << LL_ENDL;
}
catch (...)
{
diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp
index 1f6da85d22..ffac62aae8 100644
--- a/indra/newview/llinventorypanel.cpp
+++ b/indra/newview/llinventorypanel.cpp
@@ -779,7 +779,7 @@ void LLInventoryPanel::modelChanged(U32 mask)
{
LL_PROFILE_ZONE_SCOPED;
- if (mViewsInitialized != VIEWS_INITIALIZED) return;
+ if (mViewsInitialized != VIEWS_INITIALIZED) return; // todo: Store changes if building?
const LLInventoryModel* model = getModel();
if (!model) return;
@@ -942,6 +942,11 @@ void LLInventoryPanel::idle(void* user_data)
panel->mViewsInitialized = VIEWS_INITIALIZED;
}
}
+ // in case panel is empty or only has 'roots'
+ else if (panel->mViewsInitialized == VIEWS_BUILDING)
+ {
+ panel->mViewsInitialized = VIEWS_INITIALIZED;
+ }
// Take into account the fact that the root folder might be invalidated
if (panel->mFolderRoot.get())
@@ -2436,7 +2441,8 @@ bool LLInventoryFavoritesItemsPanel::removeFavorite(const LLUUID& id, const LLIn
void LLInventoryFavoritesItemsPanel::itemChanged(const LLUUID& id, U32 mask, const LLInventoryObject* model_item)
{
- if (!model_item && !getItemByID(id))
+ LLFolderViewItem* view_item = getItemByID(id);
+ if (!model_item && !view_item)
{
// remove operation, but item is not in panel already
return;
@@ -2452,7 +2458,6 @@ void LLInventoryFavoritesItemsPanel::itemChanged(const LLUUID& id, U32 mask, con
// specifically exlude links and not get_is_favorite(model_item)
if (model_item && model_item->getIsFavorite())
{
- LLFolderViewItem* view_item = getItemByID(id);
if (!view_item)
{
const LLViewerInventoryCategory* cat = dynamic_cast<const LLViewerInventoryCategory*>(model_item);
@@ -2516,7 +2521,8 @@ void LLInventoryFavoritesItemsPanel::itemChanged(const LLUUID& id, U32 mask, con
}
}
- if (!handled)
+ if (!handled
+ && (!model_item || model_item->getParentUUID().notNull())) // filter out 'My inventory'
{
LLInventoryPanel::itemChanged(id, mask, model_item);
}
diff --git a/indra/newview/lllocalbitmaps.cpp b/indra/newview/lllocalbitmaps.cpp
index 101ee215cb..e31fbb188a 100644
--- a/indra/newview/lllocalbitmaps.cpp
+++ b/indra/newview/lllocalbitmaps.cpp
@@ -38,6 +38,7 @@
/* image compression headers. */
#include "llimagebmp.h"
#include "llimagetga.h"
+#include "llimagej2c.h"
#include "llimagejpeg.h"
#include "llimagepng.h"
@@ -106,6 +107,10 @@ LLLocalBitmap::LLLocalBitmap(std::string filename)
{
mExtension = ET_IMG_JPG;
}
+ else if (temp_exten == "j2c" || temp_exten == "jp2")
+ {
+ mExtension = ET_IMG_J2C;
+ }
else if (temp_exten == "png")
{
mExtension = ET_IMG_PNG;
@@ -354,6 +359,21 @@ bool LLLocalBitmap::decodeBitmap(LLPointer<LLImageRaw> rawimg)
break;
}
+ case ET_IMG_J2C:
+ {
+ LLPointer<LLImageJ2C> jpeg_image = new LLImageJ2C;
+ if (jpeg_image->load(mFilename))
+ {
+ jpeg_image->setDiscardLevel(0);
+ if (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;
diff --git a/indra/newview/lllocalbitmaps.h b/indra/newview/lllocalbitmaps.h
index de2dcb3467..6c9d65e3b6 100644
--- a/indra/newview/lllocalbitmaps.h
+++ b/indra/newview/lllocalbitmaps.h
@@ -89,6 +89,7 @@ class LLLocalBitmap
ET_IMG_BMP,
ET_IMG_TGA,
ET_IMG_JPG,
+ ET_IMG_J2C,
ET_IMG_PNG
};
diff --git a/indra/newview/lllogininstance.cpp b/indra/newview/lllogininstance.cpp
index cbc3744aa3..4bffe7feac 100644
--- a/indra/newview/lllogininstance.cpp
+++ b/indra/newview/lllogininstance.cpp
@@ -329,6 +329,15 @@ void LLLoginInstance::handleLoginFailure(const LLSD& event)
LL_DEBUGS("LLLogin") << "reason " << reason_response
<< " message " << message_response
<< LL_ENDL;
+
+ if (response.has("mfa_hash"))
+ {
+ mRequestData["params"]["mfa_hash"] = response["mfa_hash"];
+ mRequestData["params"]["token"] = "";
+
+ saveMFAHash(response);
+ }
+
// For the cases of critical message or TOS agreement,
// start the TOS dialog. The dialog response will be handled
// by the LLLoginInstance::handleTOSResponse() callback.
@@ -593,6 +602,24 @@ bool LLLoginInstance::handleMFAChallenge(LLSD const & notif, LLSD const & respon
return true;
}
+void LLLoginInstance::saveMFAHash(LLSD const& response)
+{
+ std::string grid(LLGridManager::getInstance()->getGridId());
+ std::string user_id(LLStartUp::getUserId());
+
+ // Only save mfa_hash for future logins if the user wants their info remembered.
+ if (response.has("mfa_hash") && gSavedSettings.getBOOL("RememberUser") && LLLoginInstance::getInstance()->saveMFA())
+ {
+ gSecAPIHandler->addToProtectedMap("mfa_hash", grid, user_id, response["mfa_hash"]);
+ }
+ else if (!LLLoginInstance::getInstance()->saveMFA())
+ {
+ gSecAPIHandler->removeFromProtectedMap("mfa_hash", grid, user_id);
+ }
+ // TODO(brad) - related to SL-17223 consider building a better interface that sync's automatically
+ gSecAPIHandler->syncProtectedMap();
+}
+
std::string construct_start_string()
{
std::string start;
diff --git a/indra/newview/lllogininstance.h b/indra/newview/lllogininstance.h
index 748909c069..941b378b14 100644
--- a/indra/newview/lllogininstance.h
+++ b/indra/newview/lllogininstance.h
@@ -70,6 +70,8 @@ public:
void setNotificationsInterface(LLNotificationsInterface* ni) { mNotifications = ni; }
LLNotificationsInterface& getNotificationsInterface() const { return *mNotifications; }
+ void saveMFAHash(LLSD const& response);
+
private:
typedef std::shared_ptr<LLEventAPI::Response> ResponsePtr;
void constructAuthParams(LLPointer<LLCredential> user_credentials);
diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp
index 126579d005..a7476ba6c4 100644
--- a/indra/newview/llmeshrepository.cpp
+++ b/indra/newview/llmeshrepository.cpp
@@ -544,6 +544,66 @@ bool RequestStats::isDelayed() const
return mTimer.getStarted() && !mTimer.hasExpired();
}
+F32 calculate_score(LLVOVolume* object)
+{
+ if (!object)
+ {
+ return -1.f;
+ }
+ LLDrawable* drawable = object->mDrawable;
+ if (!drawable)
+ {
+ return -1;
+ }
+ if (drawable->isState(LLDrawable::RIGGED) || object->isAttachment())
+ {
+ LLVOAvatar* avatar = object->getAvatar();
+ LLDrawable* av_drawable = avatar ? avatar->mDrawable : nullptr;
+ if (avatar && av_drawable)
+ {
+ // See LLVOVolume::calcLOD()
+ F32 radius;
+ if (avatar->isControlAvatar())
+ {
+ const LLVector3* box = avatar->getLastAnimExtents();
+ LLVector3 diag = box[1] - box[0];
+ radius = diag.magVec() * 0.5f;
+ }
+ else
+ {
+ // Volume in a rigged mesh attached to a regular avatar.
+ const LLVector3* box = avatar->getLastAnimExtents();
+ LLVector3 diag = box[1] - box[0];
+ radius = diag.magVec();
+
+ if (!avatar->isSelf() && !avatar->hasFirstFullAttachmentData())
+ {
+ // slightly deprioritize avatars that are still receiving data
+ radius *= 0.9f;
+ }
+ }
+ return radius / llmax(av_drawable->mDistanceWRTCamera, 1.f);
+ }
+ }
+ return drawable->getRadius() / llmax(drawable->mDistanceWRTCamera, 1.f);
+}
+
+void PendingRequestBase::updateScore()
+{
+ mScore = 0;
+ if (mTrackedData)
+ {
+ for (LLVOVolume* volume : mTrackedData->mVolumes)
+ {
+ F32 cur_score = calculate_score(volume);
+ if (cur_score > 0)
+ {
+ mScore = llmax(mScore, cur_score);
+ }
+ }
+ }
+}
+
LLViewerFetchedTexture* LLMeshUploadThread::FindViewerTexture(const LLImportMaterial& material)
{
LLPointer< LLViewerFetchedTexture > * ppTex = static_cast< LLPointer< LLViewerFetchedTexture > * >(material.mOpaqueData);
@@ -1228,6 +1288,12 @@ void LLMeshRepoThread::run()
LL_WARNS(LOG_MESH) << "Convex decomposition unable to be quit." << LL_ENDL;
}
}
+void LLMeshRepoThread::cleanup()
+{
+ mShuttingDown = true;
+ mSignal->broadcast();
+ mMeshThreadPool->close();
+}
// Mutex: LLMeshRepoThread::mMutex must be held on entry
void LLMeshRepoThread::loadMeshSkinInfo(const LLUUID& mesh_id)
@@ -1511,6 +1577,11 @@ bool LLMeshRepoThread::fetchMeshSkinInfo(const LLUUID& mesh_id)
[mesh_id, buffer, size]
()
{
+ if (gMeshRepo.mThread->isShuttingDown())
+ {
+ delete[] buffer;
+ return;
+ }
if (!gMeshRepo.mThread->skinInfoReceived(mesh_id, buffer, size))
{
// either header is faulty or something else overwrote the cache
@@ -1816,42 +1887,36 @@ bool LLMeshRepoThread::fetchMeshPhysicsShape(const LLUUID& mesh_id)
//static
void LLMeshRepoThread::incActiveLODRequests()
{
- LLMutexLock lock(gMeshRepo.mThread->mMutex);
++LLMeshRepoThread::sActiveLODRequests;
}
//static
void LLMeshRepoThread::decActiveLODRequests()
{
- LLMutexLock lock(gMeshRepo.mThread->mMutex);
--LLMeshRepoThread::sActiveLODRequests;
}
//static
void LLMeshRepoThread::incActiveHeaderRequests()
{
- LLMutexLock lock(gMeshRepo.mThread->mMutex);
++LLMeshRepoThread::sActiveHeaderRequests;
}
//static
void LLMeshRepoThread::decActiveHeaderRequests()
{
- LLMutexLock lock(gMeshRepo.mThread->mMutex);
--LLMeshRepoThread::sActiveHeaderRequests;
}
//static
void LLMeshRepoThread::incActiveSkinRequests()
{
- LLMutexLock lock(gMeshRepo.mThread->mMutex);
++LLMeshRepoThread::sActiveSkinRequests;
}
//static
void LLMeshRepoThread::decActiveSkinRequests()
{
- LLMutexLock lock(gMeshRepo.mThread->mMutex);
--LLMeshRepoThread::sActiveSkinRequests;
}
@@ -2011,6 +2076,11 @@ bool LLMeshRepoThread::fetchMeshLOD(const LLVolumeParams& mesh_params, S32 lod)
[params, mesh_id, lod, buffer, size]
()
{
+ if (gMeshRepo.mThread->isShuttingDown())
+ {
+ delete[] buffer;
+ return;
+ }
if (gMeshRepo.mThread->lodReceived(params, lod, buffer, size) == MESH_OK)
{
LL_DEBUGS(LOG_MESH) << "Mesh/Cache: Mesh body for ID " << mesh_id << " - was retrieved from the cache." << LL_ENDL;
@@ -2228,7 +2298,7 @@ EMeshProcessingResult LLMeshRepoThread::headerReceived(const LLVolumeParams& mes
if (gMeshRepo.mLoadingSkins.find(mesh_id) == gMeshRepo.mLoadingSkins.end())
{
- gMeshRepo.mLoadingSkins[mesh_id] = {}; // add an empty vector to indicate to main thread that we are loading skin info
+ gMeshRepo.mLoadingSkins[mesh_id]; // add an empty vector to indicate to main thread that we are loading skin info
}
}
@@ -3823,6 +3893,11 @@ void LLMeshLODHandler::processData(LLCore::BufferArray * /* body */, S32 /* body
[shrd_handler, data, data_size]
()
{
+ if (gMeshRepo.mThread->isShuttingDown())
+ {
+ delete[] data;
+ return;
+ }
LLMeshLODHandler* handler = (LLMeshLODHandler * )shrd_handler.get();
handler->processLod(data, data_size);
delete[] data;
@@ -3936,6 +4011,11 @@ void LLMeshSkinInfoHandler::processData(LLCore::BufferArray * /* body */, S32 /*
[shrd_handler, data, data_size]
()
{
+ if (gMeshRepo.mThread->isShuttingDown())
+ {
+ delete[] data;
+ return;
+ }
LLMeshSkinInfoHandler* handler = (LLMeshSkinInfoHandler*)shrd_handler.get();
handler->processSkin(data, data_size);
delete[] data;
@@ -4158,8 +4238,7 @@ void LLMeshRepository::shutdown()
mUploads[i]->discard() ; //discard the uploading requests.
}
- mThread->mSignal->broadcast();
- mThread->mMeshThreadPool->close();
+ mThread->cleanup();
while (!mThread->isStopped())
{
@@ -4224,13 +4303,13 @@ void LLMeshRepository::unregisterMesh(LLVOVolume* vobj)
{
for (auto& param : lod)
{
- vector_replace_with_last(param.second, vobj);
+ vector_replace_with_last(param.second.mVolumes, vobj);
}
}
for (auto& skin_pair : mLoadingSkins)
{
- vector_replace_with_last(skin_pair.second, vobj);
+ vector_replace_with_last(skin_pair.second.mVolumes, vobj);
}
}
@@ -4253,16 +4332,17 @@ S32 LLMeshRepository::loadMesh(LLVOVolume* vobj, const LLVolumeParams& mesh_para
mesh_load_map::iterator iter = mLoadingMeshes[new_lod].find(mesh_id);
if (iter != mLoadingMeshes[new_lod].end())
{ //request pending for this mesh, append volume id to list
- auto it = std::find(iter->second.begin(), iter->second.end(), vobj);
- if (it == iter->second.end()) {
- iter->second.push_back(vobj);
+ auto it = std::find(iter->second.mVolumes.begin(), iter->second.mVolumes.end(), vobj);
+ if (it == iter->second.mVolumes.end()) {
+ iter->second.addVolume(vobj);
}
}
else
{
//first request for this mesh
- mLoadingMeshes[new_lod][mesh_id].push_back(vobj);
- mPendingRequests.emplace_back(new PendingRequestLOD(mesh_params, new_lod));
+ std::shared_ptr<PendingRequestBase> request(new PendingRequestLOD(mesh_params, new_lod));
+ mPendingRequests.emplace_back(request);
+ mLoadingMeshes[new_lod][mesh_id].initData(vobj, request);
LLMeshRepository::sLODPending++;
}
}
@@ -4321,50 +4401,6 @@ S32 LLMeshRepository::loadMesh(LLVOVolume* vobj, const LLVolumeParams& mesh_para
return new_lod;
}
-F32 calculate_score(LLVOVolume* object)
-{
- if (!object)
- {
- return -1.f;
- }
- LLDrawable* drawable = object->mDrawable;
- if (!drawable)
- {
- return -1;
- }
- if (drawable->isState(LLDrawable::RIGGED) || object->isAttachment())
- {
- LLVOAvatar* avatar = object->getAvatar();
- LLDrawable* av_drawable = avatar ? avatar->mDrawable : nullptr;
- if (avatar && av_drawable)
- {
- // See LLVOVolume::calcLOD()
- F32 radius;
- if (avatar->isControlAvatar())
- {
- const LLVector3* box = avatar->getLastAnimExtents();
- LLVector3 diag = box[1] - box[0];
- radius = diag.magVec() * 0.5f;
- }
- else
- {
- // Volume in a rigged mesh attached to a regular avatar.
- const LLVector3* box = avatar->getLastAnimExtents();
- LLVector3 diag = box[1] - box[0];
- radius = diag.magVec();
-
- if (!avatar->isSelf() && !avatar->hasFirstFullAttachmentData())
- {
- // slightly deprioritize avatars that are still receiving data
- radius *= 0.9f;
- }
- }
- return radius / llmax(av_drawable->mDistanceWRTCamera, 1.f);
- }
- }
- return drawable->getRadius() / llmax(drawable->mDistanceWRTCamera, 1.f);
-}
-
void LLMeshRepository::notifyLoadedMeshes()
{ //called from main thread
LL_PROFILE_ZONE_SCOPED_CATEGORY_NETWORK; //LL_RECORD_BLOCK_TIME(FTM_MESH_FETCH);
@@ -4501,13 +4537,20 @@ void LLMeshRepository::notifyLoadedMeshes()
{
LLMutexTrylock lock1(mMeshMutex);
LLMutexTrylock lock2(mThread->mMutex);
+ LLMutexTrylock lock3(mThread->mHeaderMutex);
+ LLMutexTrylock lock4(mThread->mPendingMutex);
static U32 hold_offs(0);
- if (! lock1.isLocked() || ! lock2.isLocked())
+ if (! lock1.isLocked() || ! lock2.isLocked() || ! lock3.isLocked() || ! lock4.isLocked())
{
// If we can't get the locks, skip and pick this up later.
+ // Eventually thread queue will be free enough
++hold_offs;
sMaxLockHoldoffs = llmax(sMaxLockHoldoffs, hold_offs);
+ if (hold_offs > 4)
+ {
+ LL_WARNS_ONCE() << "High mesh thread holdoff" << LL_ENDL;
+ }
return;
}
hold_offs = 0;
@@ -4554,61 +4597,25 @@ void LLMeshRepository::notifyLoadedMeshes()
if (mPendingRequests.size() > push_count)
{
+ LL_PROFILE_ZONE_NAMED("Mesh score update");
// More requests than the high-water limit allows so
// sort and forward the most important.
- //calculate "score" for pending requests
-
- //create score map
- std::map<LLUUID, F32> score_map;
-
- for (U32 i = 0; i < LLVolumeLODGroup::NUM_LODS; ++i)
+ // update "score" for pending requests
+ for (std::shared_ptr<PendingRequestBase>& req_p : mPendingRequests)
{
- for (mesh_load_map::iterator iter = mLoadingMeshes[i].begin(); iter != mLoadingMeshes[i].end(); ++iter)
- {
- F32 max_score = 0.f;
- for (auto obj_iter = iter->second.begin(); obj_iter != iter->second.end(); ++obj_iter)
- {
- F32 cur_score = calculate_score(*obj_iter);
- if (cur_score >= 0.f)
- {
- max_score = llmax(max_score, cur_score);
- }
- }
-
- score_map[iter->first] = max_score;
- }
- }
- for (mesh_load_map::iterator iter = mLoadingSkins.begin(); iter != mLoadingSkins.end(); ++iter)
- {
- F32 max_score = 0.f;
- for (auto obj_iter = iter->second.begin(); obj_iter != iter->second.end(); ++obj_iter)
- {
- F32 cur_score = calculate_score(*obj_iter);
- if (cur_score >= 0.f)
- {
- max_score = llmax(max_score, cur_score);
- }
- }
-
- score_map[iter->first] = max_score;
- }
-
- //set "score" for pending requests
- for (std::unique_ptr<PendingRequestBase>& req_p : mPendingRequests)
- {
- req_p->setScore(score_map[req_p->getId()]);
+ req_p->checkScore();
}
//sort by "score"
std::partial_sort(mPendingRequests.begin(), mPendingRequests.begin() + push_count,
mPendingRequests.end(), PendingRequestBase::CompareScoreGreater());
}
- LLMutexTrylock lock3(mThread->mHeaderMutex);
- LLMutexTrylock lock4(mThread->mPendingMutex);
while (!mPendingRequests.empty() && push_count > 0)
{
- std::unique_ptr<PendingRequestBase>& req_p = mPendingRequests.front();
+ std::shared_ptr<PendingRequestBase>& req_p = mPendingRequests.front();
+ // todo: check hasTrackedData here and erase request if none
+ // since this is supposed to mean that request was removed
switch (req_p->getRequestType())
{
case MESH_REQUEST_LOD:
@@ -4663,7 +4670,7 @@ void LLMeshRepository::notifySkinInfoReceived(LLMeshSkinInfo* info)
skin_load_map::iterator iter = mLoadingSkins.find(info->mMeshID);
if (iter != mLoadingSkins.end())
{
- for (LLVOVolume* vobj : iter->second)
+ for (LLVOVolume* vobj : iter->second.mVolumes)
{
if (vobj)
{
@@ -4679,7 +4686,7 @@ void LLMeshRepository::notifySkinInfoUnavailable(const LLUUID& mesh_id)
skin_load_map::iterator iter = mLoadingSkins.find(mesh_id);
if (iter != mLoadingSkins.end())
{
- for (LLVOVolume* vobj : iter->second)
+ for (LLVOVolume* vobj : iter->second.mVolumes)
{
if (vobj)
{
@@ -4743,7 +4750,7 @@ void LLMeshRepository::notifyMeshLoaded(const LLVolumeParams& mesh_params, LLVol
}
//notify waiting LLVOVolume instances that their requested mesh is available
- for (LLVOVolume* vobj : obj_iter->second)
+ for (LLVOVolume* vobj : obj_iter->second.mVolumes)
{
if (vobj)
{
@@ -4773,7 +4780,7 @@ void LLMeshRepository::notifyMeshUnavailable(const LLVolumeParams& mesh_params,
LLPrimitive::getVolumeManager()->unrefVolume(sys_volume);
}
- for (LLVOVolume* vobj : obj_iter->second)
+ for (LLVOVolume* vobj : obj_iter->second.mVolumes)
{
if (vobj)
{
@@ -4816,16 +4823,17 @@ const LLMeshSkinInfo* LLMeshRepository::getSkinInfo(const LLUUID& mesh_id, LLVOV
skin_load_map::iterator iter = mLoadingSkins.find(mesh_id);
if (iter != mLoadingSkins.end())
{ //request pending for this mesh, append volume id to list
- auto it = std::find(iter->second.begin(), iter->second.end(), requesting_obj);
- if (it == iter->second.end()) {
- iter->second.push_back(requesting_obj);
+ auto it = std::find(iter->second.mVolumes.begin(), iter->second.mVolumes.end(), requesting_obj);
+ if (it == iter->second.mVolumes.end()) {
+ iter->second.addVolume(requesting_obj);
}
}
else
{
//first request for this mesh
- mLoadingSkins[mesh_id].push_back(requesting_obj);
- mPendingRequests.emplace_back(new PendingRequestUUID(mesh_id, MESH_REQUEST_SKIN));
+ std::shared_ptr<PendingRequestBase> request(new PendingRequestUUID(mesh_id, MESH_REQUEST_SKIN));
+ mLoadingSkins[mesh_id].initData(requesting_obj, request);
+ mPendingRequests.emplace_back(request);
}
}
}
@@ -5999,13 +6007,7 @@ bool LLMeshRepository::meshUploadEnabled()
bool LLMeshRepository::meshRezEnabled()
{
static LLCachedControl<bool> mesh_enabled(gSavedSettings, "MeshEnabled");
- LLViewerRegion *region = gAgent.getRegion();
- if(mesh_enabled &&
- region)
- {
- return region->meshRezEnabled();
- }
- return false;
+ return mesh_enabled;
}
// Threading: main thread only
diff --git a/indra/newview/llmeshrepository.h b/indra/newview/llmeshrepository.h
index 2ac90f7b10..0c3a3559c2 100644
--- a/indra/newview/llmeshrepository.h
+++ b/indra/newview/llmeshrepository.h
@@ -168,7 +168,6 @@ public:
void submitRequest(Request* request);
static S32 llcdCallback(const char*, S32, S32);
- void cancel();
void setMeshData(LLCDMeshData& mesh, bool vertex_based);
void doDecomposition();
@@ -206,19 +205,19 @@ private:
LLFrameTimer mTimer;
};
-
+class MeshLoadData;
class PendingRequestBase
{
public:
struct CompareScoreGreater
{
- bool operator()(const std::unique_ptr<PendingRequestBase>& lhs, const std::unique_ptr<PendingRequestBase>& rhs)
+ bool operator()(const std::shared_ptr<PendingRequestBase>& lhs, const std::shared_ptr<PendingRequestBase>& rhs)
{
return lhs->mScore > rhs->mScore; // greatest = first
}
};
- PendingRequestBase() : mScore(0.f) {};
+ PendingRequestBase() : mScore(0.f), mTrackedData(nullptr), mScoreDirty(true) {};
virtual ~PendingRequestBase() {}
bool operator<(const PendingRequestBase& rhs) const
@@ -226,14 +225,34 @@ public:
return mId < rhs.mId;
}
- void setScore(F32 score) { mScore = score; }
F32 getScore() const { return mScore; }
+ void checkScore()
+ {
+ constexpr F32 EXPIRE_TIME_SECS = 8.f;
+ if (mScoreTimer.getElapsedTimeF32() > EXPIRE_TIME_SECS || mScoreDirty)
+ {
+ updateScore();
+ mScoreDirty = false;
+ mScoreTimer.reset();
+ }
+ };
+
LLUUID getId() const { return mId; }
virtual EMeshRequestType getRequestType() const = 0;
+ void trackData(MeshLoadData* data) { mTrackedData = data; mScoreDirty = true; }
+ void untrackData() { mTrackedData = nullptr; }
+ bool hasTrackedData() { return mTrackedData != nullptr; }
+ void setScoreDirty() { mScoreDirty = true; }
+
protected:
- F32 mScore;
+ void updateScore();
+
LLUUID mId;
+ F32 mScore;
+ bool mScoreDirty;
+ LLTimer mScoreTimer;
+ MeshLoadData* mTrackedData;
};
class PendingRequestLOD : public PendingRequestBase
@@ -267,6 +286,37 @@ private:
EMeshRequestType mRequestType;
};
+
+class MeshLoadData
+{
+public:
+ MeshLoadData() {}
+ ~MeshLoadData()
+ {
+ if (std::shared_ptr<PendingRequestBase> request = mRequest.lock())
+ {
+ request->untrackData();
+ }
+ }
+ void initData(LLVOVolume* vol, std::shared_ptr<PendingRequestBase>& request)
+ {
+ mVolumes.push_back(vol);
+ request->trackData(this);
+ mRequest = request;
+ }
+ void addVolume(LLVOVolume* vol)
+ {
+ mVolumes.push_back(vol);
+ if (std::shared_ptr<PendingRequestBase> request = mRequest.lock())
+ {
+ request->setScoreDirty();
+ }
+ }
+ std::vector<LLVOVolume*> mVolumes;
+private:
+ std::weak_ptr<PendingRequestBase> mRequest;
+};
+
class LLMeshHeader
{
public:
@@ -515,6 +565,8 @@ public:
~LLMeshRepoThread();
virtual void run();
+ void cleanup();
+ bool isShuttingDown() { return mShuttingDown; }
void lockAndLoadMeshLOD(const LLVolumeParams& mesh_params, S32 lod);
void loadMeshLOD(const LLVolumeParams& mesh_params, S32 lod);
@@ -583,6 +635,7 @@ private:
U8* getDiskCacheBuffer(S32 size);
S32 mDiskCacheBufferSize = 0;
U8* mDiskCacheBuffer = nullptr;
+ bool mShuttingDown = false;
};
@@ -817,7 +870,7 @@ public:
static void metricsProgress(unsigned int count);
static void metricsUpdate();
- typedef std::unordered_map<LLUUID, std::vector<LLVOVolume*> > mesh_load_map;
+ typedef std::unordered_map<LLUUID, MeshLoadData> mesh_load_map;
mesh_load_map mLoadingMeshes[4];
typedef std::unordered_map<LLUUID, LLPointer<LLMeshSkinInfo>> skin_map;
@@ -828,11 +881,11 @@ public:
LLMutex* mMeshMutex;
- typedef std::vector <std::unique_ptr<PendingRequestBase> > pending_requests_vec;
+ typedef std::vector <std::shared_ptr<PendingRequestBase> > pending_requests_vec;
pending_requests_vec mPendingRequests;
//list of mesh ids awaiting skin info
- typedef std::unordered_map<LLUUID, std::vector<LLVOVolume*> > skin_load_map;
+ typedef std::unordered_map<LLUUID, MeshLoadData > skin_load_map;
skin_load_map mLoadingSkins;
//list of mesh ids awaiting decompositions
diff --git a/indra/newview/llmodelpreview.cpp b/indra/newview/llmodelpreview.cpp
index 2fdb1a7bd3..7c33379d65 100644
--- a/indra/newview/llmodelpreview.cpp
+++ b/indra/newview/llmodelpreview.cpp
@@ -132,20 +132,21 @@ std::string getLodSuffix(S32 lod)
return suffix;
}
-void FindModel(LLModelLoader::scene& scene, const std::string& name_to_match, LLModel*& baseModelOut, LLMatrix4& matOut)
+static bool FindModel(const LLModelLoader::scene& scene, const std::string& name_to_match, LLModel*& baseModelOut, LLMatrix4& matOut)
{
- for (auto scene_iter = scene.begin(); scene_iter != scene.end(); scene_iter++)
+ for (const auto& scene_pair : scene)
{
- for (auto model_iter = scene_iter->second.begin(); model_iter != scene_iter->second.end(); model_iter++)
+ for (const auto& model_iter : scene_pair.second)
{
- if (model_iter->mModel && (model_iter->mModel->mLabel == name_to_match))
+ if (model_iter.mModel && (model_iter.mModel->mLabel == name_to_match))
{
- baseModelOut = model_iter->mModel;
- matOut = scene_iter->first;
- return;
+ baseModelOut = model_iter.mModel;
+ matOut = scene_pair.first;
+ return true;
}
}
}
+ return false;
}
//-----------------------------------------------------------------------------
@@ -319,10 +320,8 @@ void LLModelPreview::rebuildUploadData()
mat *= scale_mat;
- for (auto model_iter = iter->second.begin(); model_iter != iter->second.end(); ++model_iter)
- { // for each instance with said transform applied
- LLModelInstance instance = *model_iter;
-
+ for (LLModelInstance& instance : iter->second)
+ { //for each instance with said transform applied
LLModel* base_model = instance.mModel;
if (base_model && !requested_name.empty())
@@ -354,7 +353,7 @@ void LLModelPreview::rebuildUploadData()
}
else
{
- //Physics can be inherited from other LODs or loaded, so we need to adjust what extension we are searching for
+ // Physics can be inherited from other LODs or loaded, so we need to adjust what extension we are searching for
extensionLOD = mPhysicsSearchLOD;
}
@@ -365,9 +364,9 @@ void LLModelPreview::rebuildUploadData()
name_to_match += toAdd;
}
- FindModel(mScene[i], name_to_match, lod_model, transform);
+ bool found = FindModel(mScene[i], name_to_match, lod_model, transform);
- if (!lod_model && i != LLModel::LOD_PHYSICS)
+ if (!found && i != LLModel::LOD_PHYSICS)
{
if (mImporterDebug)
{
@@ -380,7 +379,7 @@ void LLModelPreview::rebuildUploadData()
}
int searchLOD = (i > LLModel::LOD_HIGH) ? LLModel::LOD_HIGH : i;
- while ((searchLOD <= LLModel::LOD_HIGH) && !lod_model)
+ for (; searchLOD <= LLModel::LOD_HIGH; ++searchLOD)
{
std::string name_to_match = instance.mLabel;
llassert(!name_to_match.empty());
@@ -394,8 +393,8 @@ void LLModelPreview::rebuildUploadData()
// See if we can find an appropriately named model in LOD 'searchLOD'
//
- FindModel(mScene[searchLOD], name_to_match, lod_model, transform);
- searchLOD++;
+ if (FindModel(mScene[searchLOD], name_to_match, lod_model, transform))
+ break;
}
}
}
@@ -1174,8 +1173,7 @@ void LLModelPreview::loadModelCallback(S32 loaded_lod)
LLModel* found_model = NULL;
LLMatrix4 transform;
- FindModel(mBaseScene, loaded_name, found_model, transform);
- if (found_model)
+ if (FindModel(mBaseScene, loaded_name, found_model, transform))
{ // don't rename correctly named models (even if they are placed in a wrong order)
name_based = true;
}
@@ -2500,6 +2498,8 @@ void LLModelPreview::updateStatusMessages()
S32 phys_tris = 0;
S32 phys_hulls = 0;
S32 phys_points = 0;
+ S32 which_mode = 0;
+ S32 file_mode = 1;
//get the triangle count for the whole scene
for (LLModelLoader::scene::iterator iter = mScene[LLModel::LOD_PHYSICS].begin(), endIter = mScene[LLModel::LOD_PHYSICS].end(); iter != endIter; ++iter)
@@ -2621,18 +2621,16 @@ void LLModelPreview::updateStatusMessages()
fmp->childEnable("simplify_cancel");
fmp->childEnable("decompose_cancel");
}
- }
-
- LLCtrlSelectionInterface* iface = fmp->childGetSelectionInterface("physics_lod_combo");
- S32 which_mode = 0;
- S32 file_mode = 1;
- if (iface)
- {
- which_mode = iface->getFirstSelectedIndex();
- file_mode = iface->getItemCount() - 1;
+ LLCtrlSelectionInterface* iface = fmp->childGetSelectionInterface("physics_lod_combo");
+ if (iface)
+ {
+ which_mode = iface->getFirstSelectedIndex();
+ file_mode = iface->getItemCount() - 1;
+ }
}
+
if (which_mode == file_mode)
{
mFMP->childEnable("physics_file");
diff --git a/indra/newview/lloutfitgallery.cpp b/indra/newview/lloutfitgallery.cpp
index 7ab63be009..3adee9fa16 100644
--- a/indra/newview/lloutfitgallery.cpp
+++ b/indra/newview/lloutfitgallery.cpp
@@ -69,7 +69,6 @@ const S32 GALLERY_ITEMS_PER_ROW_MIN = 2;
LLOutfitGallery::LLOutfitGallery(const LLOutfitGallery::Params& p)
: LLOutfitListBase(),
- mOutfitsObserver(NULL),
mScrollPanel(NULL),
mGalleryPanel(NULL),
mLastRowPanel(NULL),
@@ -765,12 +764,6 @@ LLOutfitGallery::~LLOutfitGallery()
{
delete mOutfitGalleryMenu;
- if (gInventory.containsObserver(mOutfitsObserver))
- {
- gInventory.removeObserver(mOutfitsObserver);
- }
- delete mOutfitsObserver;
-
while (!mUnusedRowPanels.empty())
{
LLPanel* panelp = mUnusedRowPanels.back();
@@ -828,6 +821,17 @@ void LLOutfitGallery::updateAddedCategory(LLUUID cat_id)
LLViewerInventoryCategory *cat = gInventory.getCategory(cat_id);
if (!cat) return;
+ if (!isOutfitFolder(cat))
+ {
+ // Assume a subfolder that contains or will contain outfits, track it
+ const LLUUID outfits = gInventory.findCategoryUUIDForType(LLFolderType::FT_MY_OUTFITS);
+ mCategoriesObserver->addCategory(cat_id, [this, outfits]()
+ {
+ observerCallback(outfits);
+ });
+ return;
+ }
+
LLOutfitGalleryItem* item = buildGalleryItem(cat->getName(), cat_id, cat->getIsFavorite());
mOutfitMap.insert(LLOutfitGallery::outfit_map_value_t(cat_id, item));
item->setRightMouseDownCallback(boost::bind(&LLOutfitListBase::outfitRightClickCallBack, this,
@@ -843,14 +847,8 @@ void LLOutfitGallery::updateAddedCategory(LLUUID cat_id)
if (!outfit_category)
return;
- if (mOutfitsObserver == NULL)
- {
- mOutfitsObserver = new LLInventoryCategoriesObserver();
- gInventory.addObserver(mOutfitsObserver);
- }
-
// Start observing changes in "My Outfits" category.
- mOutfitsObserver->addCategory(cat_id,
+ mCategoriesObserver->addCategory(cat_id,
boost::bind(&LLOutfitGallery::refreshOutfit, this, cat_id), true);
outfit_category->fetch();
@@ -863,7 +861,7 @@ void LLOutfitGallery::updateRemovedCategory(LLUUID cat_id)
if (outfits_iter != mOutfitMap.end())
{
// 0. Remove category from observer.
- mOutfitsObserver->removeCategory(cat_id);
+ mCategoriesObserver->removeCategory(cat_id);
//const LLUUID& outfit_id = outfits_iter->first;
LLOutfitGalleryItem* item = outfits_iter->second;
diff --git a/indra/newview/lloutfitslist.cpp b/indra/newview/lloutfitslist.cpp
index b9795f217f..2b2b5ea696 100644
--- a/indra/newview/lloutfitslist.cpp
+++ b/indra/newview/lloutfitslist.cpp
@@ -182,6 +182,17 @@ void LLOutfitsList::updateAddedCategory(LLUUID cat_id)
LLViewerInventoryCategory *cat = gInventory.getCategory(cat_id);
if (!cat) return;
+ if (!isOutfitFolder(cat))
+ {
+ // Assume a subfolder that contains or will contain outfits, track it
+ const LLUUID outfits = gInventory.findCategoryUUIDForType(LLFolderType::FT_MY_OUTFITS);
+ mCategoriesObserver->addCategory(cat_id, [this, outfits]()
+ {
+ observerCallback(outfits);
+ });
+ return;
+ }
+
std::string name = cat->getName();
outfit_accordion_tab_params tab_params(get_accordion_tab_params());
@@ -934,6 +945,39 @@ void LLOutfitListBase::observerCallback(const LLUUID& category_id)
refreshList(category_id);
}
+bool LLOutfitListBase::isOutfitFolder(LLViewerInventoryCategory* cat) const
+{
+ if (!cat)
+ {
+ return false;
+ }
+ if (cat->getPreferredType() == LLFolderType::FT_OUTFIT)
+ {
+ return true;
+ }
+ // assumes that folder is somewhere inside MyOutfits
+ if (cat->getPreferredType() == LLFolderType::FT_NONE)
+ {
+ LLViewerInventoryCategory* inv_cat = dynamic_cast<LLViewerInventoryCategory*>(cat);
+ if (inv_cat && inv_cat->getDescendentCount() > 3)
+ {
+ LLInventoryModel::cat_array_t* cats;
+ LLInventoryModel::item_array_t* items;
+ gInventory.getDirectDescendentsOf(inv_cat->getUUID(), cats, items);
+ if (cats->empty() // protection against outfits inside
+ && items->size() > 3) // arbitrary, if doesn't have at least base parts, not an outfit
+ {
+ // For now assume this to be an old style outfit, not a subfolder
+ // but ideally no such 'outfits' should be left in My Outfits
+ // Todo: stop counting FT_NONE as outfits,
+ // convert obvious outfits into FT_OUTFIT
+ return true;
+ }
+ }
+ }
+ return false;
+}
+
void LLOutfitListBase::refreshList(const LLUUID& category_id)
{
if (LLAppViewer::instance()->quitRequested())
@@ -1588,7 +1632,12 @@ bool LLOutfitAccordionCtrlTab::handleToolTip(S32 x, S32 y, MASK mask)
{
LLSD params;
params["inv_type"] = LLInventoryType::IT_CATEGORY;
- params["thumbnail_id"] = gInventory.getCategory(mFolderID)->getThumbnailUUID();
+ LLViewerInventoryCategory* cat = gInventory.getCategory(mFolderID);
+ if (cat)
+ {
+ params["thumbnail_id"] = cat->getThumbnailUUID();
+ }
+ // else consider returning
params["item_id"] = mFolderID;
LLToolTipMgr::instance().show(LLToolTip::Params()
diff --git a/indra/newview/lloutfitslist.h b/indra/newview/lloutfitslist.h
index bafc0fbb81..0bf5becb05 100644
--- a/indra/newview/lloutfitslist.h
+++ b/indra/newview/lloutfitslist.h
@@ -137,6 +137,8 @@ protected:
void onOutfitsRemovalConfirmation(const LLSD& notification, const LLSD& response);
virtual void onChangeOutfitSelection(LLWearableItemsList* list, const LLUUID& category_id) = 0;
+ bool isOutfitFolder(LLViewerInventoryCategory* cat) const;
+
static void onIdle(void* userdata);
void onIdleRefreshList();
diff --git a/indra/newview/llpanelface.cpp b/indra/newview/llpanelface.cpp
index a24d6af033..eccce1c5ef 100644
--- a/indra/newview/llpanelface.cpp
+++ b/indra/newview/llpanelface.cpp
@@ -1102,6 +1102,63 @@ void LLPanelFace::updateUI(bool force_set_values /*false*/)
updateVisibility(objectp);
+ bool missing_asset = false;
+ {
+ LLGLenum image_format = GL_RGB;
+ bool identical_image_format = false;
+ LLSelectedTE::getImageFormat(image_format, identical_image_format, missing_asset);
+
+ if (!missing_asset)
+ {
+ mIsAlpha = false;
+ switch (image_format)
+ {
+ case GL_RGBA:
+ case GL_ALPHA:
+ {
+ mIsAlpha = true;
+ }
+ break;
+
+ case GL_RGB:
+ break;
+ default:
+ {
+ LL_WARNS() << "Unexpected tex format in LLPanelFace...resorting to no alpha" << LL_ENDL;
+ }
+ break;
+ }
+ }
+ else
+ {
+ // Don't know image's properties, use material's mode value
+ mIsAlpha = true;
+ }
+
+ // Diffuse Alpha Mode
+ // Init to the default that is appropriate for the alpha content of the asset
+ //
+ U8 alpha_mode = mIsAlpha ? LLMaterial::DIFFUSE_ALPHA_MODE_BLEND : LLMaterial::DIFFUSE_ALPHA_MODE_NONE;
+
+ bool identical_alpha_mode = false;
+
+ // See if that's been overridden by a material setting for same...
+ //
+ LLSelectedTEMaterial::getCurrentDiffuseAlphaMode(alpha_mode, identical_alpha_mode, mIsAlpha);
+
+ // it is invalid to have any alpha mode other than blend if transparency is greater than zero ...
+ // Want masking? Want emissive? Tough! You get BLEND!
+ alpha_mode = (transparency > 0.f) ? LLMaterial::DIFFUSE_ALPHA_MODE_BLEND : alpha_mode;
+
+ // ... unless there is no alpha channel in the texture, in which case alpha mode MUST be none
+ alpha_mode = mIsAlpha ? alpha_mode : LLMaterial::DIFFUSE_ALPHA_MODE_NONE;
+
+ mComboAlphaMode->getSelectionInterface()->selectNthItem(alpha_mode);
+ updateAlphaControls();
+
+ mExcludeWater &= (LLMaterial::DIFFUSE_ALPHA_MODE_BLEND == alpha_mode);
+ }
+
// Water exclusion
{
mCheckHideWater->setEnabled(editable && !has_pbr_material && !isMediaTexSelected());
@@ -1184,65 +1241,11 @@ void LLPanelFace::updateUI(bool force_set_values /*false*/)
// Texture
{
- LLGLenum image_format = GL_RGB;
- bool identical_image_format = false;
- bool missing_asset = false;
- LLSelectedTE::getImageFormat(image_format, identical_image_format, missing_asset);
-
- if (!missing_asset)
- {
- mIsAlpha = false;
- switch (image_format)
- {
- case GL_RGBA:
- case GL_ALPHA:
- {
- mIsAlpha = true;
- }
- break;
-
- case GL_RGB: break;
- default:
- {
- LL_WARNS() << "Unexpected tex format in LLPanelFace...resorting to no alpha" << LL_ENDL;
- }
- break;
- }
- }
- else
- {
- // Don't know image's properties, use material's mode value
- mIsAlpha = true;
- }
-
if (LLViewerMedia::getInstance()->textureHasMedia(id))
{
mBtnAlign->setEnabled(editable);
}
- // Diffuse Alpha Mode
-
- // Init to the default that is appropriate for the alpha content of the asset
- //
- U8 alpha_mode = mIsAlpha ? LLMaterial::DIFFUSE_ALPHA_MODE_BLEND : LLMaterial::DIFFUSE_ALPHA_MODE_NONE;
-
- bool identical_alpha_mode = false;
-
- // See if that's been overridden by a material setting for same...
- //
- LLSelectedTEMaterial::getCurrentDiffuseAlphaMode(alpha_mode, identical_alpha_mode, mIsAlpha);
-
- // it is invalid to have any alpha mode other than blend if transparency is greater than zero ...
- // Want masking? Want emissive? Tough! You get BLEND!
- alpha_mode = (transparency > 0.f) ? LLMaterial::DIFFUSE_ALPHA_MODE_BLEND : alpha_mode;
-
- // ... unless there is no alpha channel in the texture, in which case alpha mode MUST be none
- alpha_mode = mIsAlpha ? alpha_mode : LLMaterial::DIFFUSE_ALPHA_MODE_NONE;
-
- mComboAlphaMode->getSelectionInterface()->selectNthItem(alpha_mode);
-
- updateAlphaControls();
-
if (mTextureCtrl)
{
if (identical_diffuse)
@@ -4005,6 +4008,85 @@ void LLPanelFace::onPasteColor(LLViewerObject* objectp, S32 te)
}
}
+void set_item_availability(
+ const LLUUID& id,
+ LLSD& dest,
+ const std::string& modifier,
+ bool is_creator,
+ std::map<LLUUID, LLUUID> &asset_item_map,
+ LLViewerObject* objectp)
+{
+ if (id.isNull())
+ {
+ return;
+ }
+
+ LLUUID item_id;
+ bool from_library = get_is_predefined_texture(id);
+ bool full_perm = from_library;
+ full_perm |= is_creator;
+
+ if (!full_perm)
+ {
+ std::map<LLUUID, LLUUID>::iterator iter = asset_item_map.find(id);
+ if (iter != asset_item_map.end())
+ {
+ item_id = iter->second;
+ }
+ else
+ {
+ // What this does is simply searches inventory for item with same asset id,
+ // as result it is Hightly unreliable, leaves little control to user, borderline hack
+ // but there are little options to preserve permissions - multiple inventory
+ // items might reference same asset and inventory search is expensive.
+ bool no_transfer = false;
+ if (objectp->getInventoryItemByAsset(id))
+ {
+ no_transfer = !objectp->getInventoryItemByAsset(id)->getIsFullPerm();
+ }
+ item_id = get_copy_free_item_by_asset_id(id, no_transfer);
+ // record value to avoid repeating inventory search when possible
+ asset_item_map[id] = item_id;
+ }
+ }
+
+ if (item_id.notNull() && gInventory.isObjectDescendentOf(item_id, gInventory.getLibraryRootFolderID()))
+ {
+ full_perm = true;
+ from_library = true;
+ }
+
+ dest[modifier + "itemfullperm"] = full_perm;
+ dest[modifier + "fromlibrary"] = from_library;
+
+ // If full permission object, texture is free to copy,
+ // but otherwise we need to check inventory and extract permissions
+ //
+ // Normally we care only about restrictions for current user and objects
+ // don't inherit any 'next owner' permissions from texture, so there is
+ // no need to record item id if full_perm==true
+ if (!full_perm && item_id.notNull())
+ {
+ LLViewerInventoryItem* itemp = gInventory.getItem(item_id);
+ if (itemp)
+ {
+ LLPermissions item_permissions = itemp->getPermissions();
+ if (item_permissions.allowOperationBy(PERM_COPY,
+ gAgent.getID(),
+ gAgent.getGroupID()))
+ {
+ dest[modifier + "itemid"] = item_id;
+ dest[modifier + "itemfullperm"] = itemp->getIsFullPerm();
+ if (!itemp->isFinished())
+ {
+ // needed for dropTextureAllFaces
+ LLInventoryModelBackgroundFetch::instance().start(item_id, false);
+ }
+ }
+ }
+ }
+}
+
void LLPanelFace::onCopyTexture()
{
LLViewerObject* objectp = LLSelectMgr::getInstance()->getSelection()->getFirstObject();
@@ -4042,6 +4124,7 @@ void LLPanelFace::onCopyTexture()
if (tep)
{
LLSD te_data;
+ LLUUID pbr_id = objectp->getRenderMaterialID(te);
// asLLSD() includes media
te_data["te"] = tep->asLLSD();
@@ -4050,21 +4133,20 @@ void LLPanelFace::onCopyTexture()
te_data["te"]["bumpshiny"] = tep->getBumpShiny();
te_data["te"]["bumpfullbright"] = tep->getBumpShinyFullbright();
te_data["te"]["texgen"] = tep->getTexGen();
- te_data["te"]["pbr"] = objectp->getRenderMaterialID(te);
+ te_data["te"]["pbr"] = pbr_id;
if (tep->getGLTFMaterialOverride() != nullptr)
{
te_data["te"]["pbr_override"] = tep->getGLTFMaterialOverride()->asJSON();
}
- if (te_data["te"].has("imageid"))
+ if (te_data["te"].has("imageid") || pbr_id.notNull())
{
- LLUUID item_id;
- LLUUID id = te_data["te"]["imageid"].asUUID();
- bool from_library = get_is_predefined_texture(id);
- bool full_perm = from_library;
+ LLUUID img_id = te_data["te"]["imageid"].asUUID();
+ bool pbr_from_library = false;
+ bool pbr_full_perm = false;
+ bool is_creator = false;
- if (!full_perm
- && objectp->permCopy()
+ if (objectp->permCopy()
&& objectp->permTransfer()
&& objectp->permModify())
{
@@ -4074,66 +4156,31 @@ void LLPanelFace::onCopyTexture()
std::string creator_app_link;
LLUUID creator_id;
LLSelectMgr::getInstance()->selectGetCreator(creator_id, creator_app_link);
- full_perm = objectp->mOwnerID == creator_id;
+ is_creator = objectp->mOwnerID == creator_id;
}
- if (id.notNull() && !full_perm)
+ // check permissions for blin-phong/diffuse image and for pbr asset
+ if (img_id.notNull())
{
- std::map<LLUUID, LLUUID>::iterator iter = asset_item_map.find(id);
- if (iter != asset_item_map.end())
- {
- item_id = iter->second;
- }
- else
- {
- // What this does is simply searches inventory for item with same asset id,
- // as result it is Hightly unreliable, leaves little control to user, borderline hack
- // but there are little options to preserve permissions - multiple inventory
- // items might reference same asset and inventory search is expensive.
- bool no_transfer = false;
- if (objectp->getInventoryItemByAsset(id))
- {
- no_transfer = !objectp->getInventoryItemByAsset(id)->getIsFullPerm();
- }
- item_id = get_copy_free_item_by_asset_id(id, no_transfer);
- // record value to avoid repeating inventory search when possible
- asset_item_map[id] = item_id;
- }
+ set_item_availability(img_id, te_data["te"], "img", is_creator, asset_item_map, objectp);
}
-
- if (item_id.notNull() && gInventory.isObjectDescendentOf(item_id, gInventory.getLibraryRootFolderID()))
+ if (pbr_id.notNull())
{
- full_perm = true;
- from_library = true;
- }
+ set_item_availability(pbr_id, te_data["te"], "pbr", is_creator, asset_item_map, objectp);
- {
- te_data["te"]["itemfullperm"] = full_perm;
- te_data["te"]["fromlibrary"] = from_library;
-
- // If full permission object, texture is free to copy,
- // but otherwise we need to check inventory and extract permissions
- //
- // Normally we care only about restrictions for current user and objects
- // don't inherit any 'next owner' permissions from texture, so there is
- // no need to record item id if full_perm==true
- if (!full_perm && !from_library && item_id.notNull())
+ // permissions for overrides
+ // Overrides do not permit no-copy textures
+ LLGLTFMaterial* override = tep->getGLTFMaterialOverride();
+ if (override != nullptr)
{
- LLViewerInventoryItem* itemp = gInventory.getItem(item_id);
- if (itemp)
+ for (U32 i = 0; i < LLGLTFMaterial::GLTF_TEXTURE_INFO_COUNT; ++i)
{
- LLPermissions item_permissions = itemp->getPermissions();
- if (item_permissions.allowOperationBy(PERM_COPY,
- gAgent.getID(),
- gAgent.getGroupID()))
+ LLUUID& texture_id = override->mTextureId[i];
+ if (texture_id.notNull())
{
- te_data["te"]["imageitemid"] = item_id;
- te_data["te"]["itemfullperm"] = itemp->getIsFullPerm();
- if (!itemp->isFinished())
- {
- // needed for dropTextureAllFaces
- LLInventoryModelBackgroundFetch::instance().start(item_id, false);
- }
+ const std::string prefix = "pbr" + std::to_string(i);
+ te_data["te"][prefix + "imageid"] = texture_id;
+ set_item_availability(texture_id, te_data["te"], prefix, is_creator, asset_item_map, objectp);
}
}
}
@@ -4197,6 +4244,44 @@ void LLPanelFace::onCopyTexture()
}
}
+bool get_full_permission(const LLSD& te, const std::string &prefix)
+{
+ return te.has(prefix + "itemfullperm") && te[prefix+"itemfullperm"].asBoolean();
+}
+
+bool LLPanelFace::validateInventoryItem(const LLSD& te, const std::string& prefix)
+{
+ if (te.has(prefix + "itemid"))
+ {
+ LLUUID item_id = te[prefix + "itemid"].asUUID();
+ if (item_id.notNull())
+ {
+ LLViewerInventoryItem* itemp = gInventory.getItem(item_id);
+ if (!itemp)
+ {
+ // image might be in object's inventory, but it can be not up to date
+ LLSD notif_args;
+ static std::string reason = getString("paste_error_inventory_not_found");
+ notif_args["REASON"] = reason;
+ LLNotificationsUtil::add("FacePasteFailed", notif_args);
+ return false;
+ }
+ }
+ }
+ else
+ {
+ // Item was not found on 'copy' stage
+ // Since this happened at copy, might be better to either show this
+ // at copy stage or to drop clipboard here
+ LLSD notif_args;
+ static std::string reason = getString("paste_error_inventory_not_found");
+ notif_args["REASON"] = reason;
+ LLNotificationsUtil::add("FacePasteFailed", notif_args);
+ return false;
+ }
+ return true;
+}
+
void LLPanelFace::onPasteTexture()
{
if (!mClipboardParams.has("texture"))
@@ -4261,39 +4346,49 @@ void LLPanelFace::onPasteTexture()
for (; iter != end; ++iter)
{
const LLSD& te_data = *iter;
- if (te_data.has("te") && te_data["te"].has("imageid"))
+ if (te_data.has("te"))
{
- bool full_perm = te_data["te"].has("itemfullperm") && te_data["te"]["itemfullperm"].asBoolean();
- full_perm_object &= full_perm;
- if (!full_perm)
+ if (te_data["te"].has("imageid"))
{
- if (te_data["te"].has("imageitemid"))
+ bool full_perm = get_full_permission(te_data["te"], "img");
+ full_perm_object &= full_perm;
+ if (!full_perm)
{
- LLUUID item_id = te_data["te"]["imageitemid"].asUUID();
- if (item_id.notNull())
+ if (!validateInventoryItem(te_data["te"], "img"))
{
- LLViewerInventoryItem* itemp = gInventory.getItem(item_id);
- if (!itemp)
- {
- // image might be in object's inventory, but it can be not up to date
- LLSD notif_args;
- static std::string reason = getString("paste_error_inventory_not_found");
- notif_args["REASON"] = reason;
- LLNotificationsUtil::add("FacePasteFailed", notif_args);
- return;
- }
+ return;
}
}
- else
+ }
+ if (te_data["te"].has("pbr"))
+ {
+ bool full_perm = get_full_permission(te_data["te"], "pbr");
+ full_perm_object &= full_perm;
+ if (!full_perm)
{
- // Item was not found on 'copy' stage
- // Since this happened at copy, might be better to either show this
- // at copy stage or to drop clipboard here
- LLSD notif_args;
- static std::string reason = getString("paste_error_inventory_not_found");
- notif_args["REASON"] = reason;
- LLNotificationsUtil::add("FacePasteFailed", notif_args);
- return;
+ if (!validateInventoryItem(te_data["te"], "pbr"))
+ {
+ return;
+ }
+ }
+ if (te_data["te"].has("pbr_override"))
+ {
+ for (U32 i = 0; i < LLGLTFMaterial::GLTF_TEXTURE_INFO_COUNT; ++i)
+ {
+ const std::string prefix = "pbr" + std::to_string(i);
+ if (te_data["te"].has(prefix + "imageid"))
+ {
+ bool full_perm = get_full_permission(te_data["te"], prefix);
+ full_perm_object &= full_perm;
+ if (!full_perm)
+ {
+ if (!validateInventoryItem(te_data["te"], prefix))
+ {
+ return;
+ }
+ }
+ }
+ }
}
}
}
@@ -4318,6 +4413,71 @@ void LLPanelFace::onPasteTexture()
selected_objects->applyToTEs(&navigate_home_func);
}
+void get_item_and_permissions(const LLUUID &id, LLViewerInventoryItem*& itemp, bool& full_perm, bool& from_library, const LLSD &data, const std::string &prefix)
+{
+ full_perm = get_full_permission(data, prefix);
+ from_library = data.has(prefix + "fromlibrary") && data.get(prefix + "fromlibrary").asBoolean();
+ LLViewerInventoryItem* itemp_res = NULL;
+
+ if (data.has(prefix + "itemid"))
+ {
+ LLUUID item_id = data.get(prefix + "itemid").asUUID();
+ if (item_id.notNull())
+ {
+ LLViewerInventoryItem* itemp = gInventory.getItem(item_id);
+ if (itemp && itemp->isFinished())
+ {
+ // dropTextureAllFaces will fail if incomplete
+ itemp_res = itemp;
+ }
+ else
+ {
+ // Theoretically shouldn't happend, but if it does happen, we
+ // might need to add a notification to user that paste will fail
+ // since inventory isn't fully loaded
+ LL_WARNS() << "Item " << item_id << " is incomplete, paste might fail silently." << LL_ENDL;
+ }
+ }
+ }
+
+ // for case when item got removed from inventory after we pressed 'copy'
+ // or texture got pasted into previous object
+ if (!itemp_res && !full_perm)
+ {
+ // Due to checks for imageitemid in LLPanelFace::onPasteTexture() this should no longer be reachable.
+ LL_INFOS() << "Item " << data.get(prefix + "itemid").asUUID() << " no longer in inventory." << LL_ENDL;
+ // Todo: fix this, we are often searching same texture multiple times (equal to number of faces)
+ // Perhaps just mPanelFace->onPasteTexture(objectp, te, &asset_to_item_id_map); ? Not pretty, but will work
+ LLViewerInventoryCategory::cat_array_t cats;
+ LLViewerInventoryItem::item_array_t items;
+ LLAssetIDMatches asset_id_matches(id);
+ gInventory.collectDescendentsIf(LLUUID::null,
+ cats,
+ items,
+ LLInventoryModel::INCLUDE_TRASH,
+ asset_id_matches);
+
+ // Extremely unreliable and perfomance unfriendly.
+ // But we need this to check permissions and it is how texture control finds items
+ for (S32 i = 0; i < items.size(); i++)
+ {
+ LLViewerInventoryItem* itemp = items[i];
+ if (itemp && itemp->isFinished())
+ {
+ // dropTextureAllFaces will fail if incomplete
+ LLPermissions item_permissions = itemp->getPermissions();
+ if (item_permissions.allowOperationBy(PERM_COPY,
+ gAgent.getID(),
+ gAgent.getGroupID()))
+ {
+ itemp_res = itemp;
+ break; // first match
+ }
+ }
+ }
+ }
+}
+
void LLPanelFace::onPasteTexture(LLViewerObject* objectp, S32 te)
{
LLSD te_data;
@@ -4341,77 +4501,22 @@ void LLPanelFace::onPasteTexture(LLViewerObject* objectp, S32 te)
if (te_data.has("te"))
{
// Texture
- bool full_perm = te_data["te"].has("itemfullperm") && te_data["te"]["itemfullperm"].asBoolean();
- bool from_library = te_data["te"].has("fromlibrary") && te_data["te"]["fromlibrary"].asBoolean();
if (te_data["te"].has("imageid"))
{
+ bool img_full_perm = false;
+ bool img_from_library = false;
const LLUUID& imageid = te_data["te"]["imageid"].asUUID(); //texture or asset id
- LLViewerInventoryItem* itemp_res = NULL;
+ LLViewerInventoryItem* img_itemp_res = NULL;
- if (te_data["te"].has("imageitemid"))
- {
- LLUUID item_id = te_data["te"]["imageitemid"].asUUID();
- if (item_id.notNull())
- {
- LLViewerInventoryItem* itemp = gInventory.getItem(item_id);
- if (itemp && itemp->isFinished())
- {
- // dropTextureAllFaces will fail if incomplete
- itemp_res = itemp;
- }
- else
- {
- // Theoretically shouldn't happend, but if it does happen, we
- // might need to add a notification to user that paste will fail
- // since inventory isn't fully loaded
- LL_WARNS() << "Item " << item_id << " is incomplete, paste might fail silently." << LL_ENDL;
- }
- }
- }
- // for case when item got removed from inventory after we pressed 'copy'
- // or texture got pasted into previous object
- if (!itemp_res && !full_perm)
- {
- // Due to checks for imageitemid in LLPanelFace::onPasteTexture() this should no longer be reachable.
- LL_INFOS() << "Item " << te_data["te"]["imageitemid"].asUUID() << " no longer in inventory." << LL_ENDL;
- // Todo: fix this, we are often searching same texture multiple times (equal to number of faces)
- // Perhaps just mPanelFace->onPasteTexture(objectp, te, &asset_to_item_id_map); ? Not pretty, but will work
- LLViewerInventoryCategory::cat_array_t cats;
- LLViewerInventoryItem::item_array_t items;
- LLAssetIDMatches asset_id_matches(imageid);
- gInventory.collectDescendentsIf(LLUUID::null,
- cats,
- items,
- LLInventoryModel::INCLUDE_TRASH,
- asset_id_matches);
-
- // Extremely unreliable and perfomance unfriendly.
- // But we need this to check permissions and it is how texture control finds items
- for (S32 i = 0; i < items.size(); i++)
- {
- LLViewerInventoryItem* itemp = items[i];
- if (itemp && itemp->isFinished())
- {
- // dropTextureAllFaces will fail if incomplete
- LLPermissions item_permissions = itemp->getPermissions();
- if (item_permissions.allowOperationBy(PERM_COPY,
- gAgent.getID(),
- gAgent.getGroupID()))
- {
- itemp_res = itemp;
- break; // first match
- }
- }
- }
- }
+ get_item_and_permissions(imageid, img_itemp_res, img_full_perm, img_from_library, te_data["te"], "img");
- if (itemp_res)
+ if (img_itemp_res)
{
if (te == -1) // all faces
{
LLToolDragAndDrop::dropTextureAllFaces(objectp,
- itemp_res,
- from_library ? LLToolDragAndDrop::SOURCE_LIBRARY : LLToolDragAndDrop::SOURCE_AGENT,
+ img_itemp_res,
+ img_from_library ? LLToolDragAndDrop::SOURCE_LIBRARY : LLToolDragAndDrop::SOURCE_AGENT,
LLUUID::null,
false);
}
@@ -4419,15 +4524,15 @@ void LLPanelFace::onPasteTexture(LLViewerObject* objectp, S32 te)
{
LLToolDragAndDrop::dropTextureOneFace(objectp,
te,
- itemp_res,
- from_library ? LLToolDragAndDrop::SOURCE_LIBRARY : LLToolDragAndDrop::SOURCE_AGENT,
+ img_itemp_res,
+ img_from_library ? LLToolDragAndDrop::SOURCE_LIBRARY : LLToolDragAndDrop::SOURCE_AGENT,
LLUUID::null,
false,
0);
}
}
// not an inventory item or no complete items
- else if (full_perm)
+ else if (img_full_perm)
{
// Either library, local or existed as fullperm when user made a copy
LLViewerTexture* image = LLViewerTextureManager::getFetchedTexture(imageid, FTT_DEFAULT, true, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
@@ -4455,17 +4560,65 @@ void LLPanelFace::onPasteTexture(LLViewerObject* objectp, S32 te)
// PBR/GLTF
if (te_data["te"].has("pbr"))
{
- objectp->setRenderMaterialID(te, te_data["te"]["pbr"].asUUID(), false /*managing our own update*/);
- tep->setGLTFRenderMaterial(nullptr);
- tep->setGLTFMaterialOverride(nullptr);
+ const LLUUID pbr_id = te_data["te"]["pbr"].asUUID();
+ bool pbr_full_perm = false;
+ bool pbr_from_library = false;
+ LLViewerInventoryItem* pbr_itemp_res = NULL;
+
+ get_item_and_permissions(pbr_id, pbr_itemp_res, pbr_full_perm, pbr_from_library, te_data["te"], "pbr");
+ bool allow = true;
+
+ // check overrides first since they don't need t be moved to inventory
if (te_data["te"].has("pbr_override"))
{
- LLGLTFMaterialList::queueApply(objectp, te, te_data["te"]["pbr"].asUUID(), te_data["te"]["pbr_override"]);
+ for (U32 i = 0; i < LLGLTFMaterial::GLTF_TEXTURE_INFO_COUNT; ++i)
+ {
+ const std::string prefix = "pbr" + std::to_string(i);
+ if (te_data["te"].has(prefix + "imageid"))
+ {
+ LLUUID tex_id = te_data["te"][prefix + "imageid"];
+
+ bool full_perm = false;
+ bool from_library = false;
+ LLViewerInventoryItem* itemp_res = NULL;
+ get_item_and_permissions(tex_id, itemp_res, full_perm, from_library, te_data["te"], prefix);
+ allow = full_perm;
+ if (!allow) break;
+ }
+ }
}
- else
+
+ if (allow && pbr_itemp_res)
+ {
+ if (pbr_itemp_res)
+ {
+ allow = LLToolDragAndDrop::handleDropMaterialProtections(
+ objectp,
+ pbr_itemp_res,
+ pbr_from_library ? LLToolDragAndDrop::SOURCE_LIBRARY : LLToolDragAndDrop::SOURCE_AGENT,
+ pbr_id);
+ }
+ else
+ {
+ allow = pbr_full_perm;
+ }
+ }
+
+ if (allow)
{
- LLGLTFMaterialList::queueApply(objectp, te, te_data["te"]["pbr"].asUUID());
+ objectp->setRenderMaterialID(te, te_data["te"]["pbr"].asUUID(), false /*managing our own update*/);
+ tep->setGLTFRenderMaterial(nullptr);
+ tep->setGLTFMaterialOverride(nullptr);
+
+ if (te_data["te"].has("pbr_override"))
+ {
+ LLGLTFMaterialList::queueApply(objectp, te, te_data["te"]["pbr"].asUUID(), te_data["te"]["pbr_override"]);
+ }
+ else
+ {
+ LLGLTFMaterialList::queueApply(objectp, te, te_data["te"]["pbr"].asUUID());
+ }
}
}
else
diff --git a/indra/newview/llpanelface.h b/indra/newview/llpanelface.h
index 1ee9bf2cf7..ce3dd8bdea 100644
--- a/indra/newview/llpanelface.h
+++ b/indra/newview/llpanelface.h
@@ -264,6 +264,9 @@ public: // needs to be accessible to selection manager
void onCopyTexture();
void onPasteTexture();
void onPasteTexture(LLViewerObject* objectp, S32 te);
+private:
+ // for copy/paste operations
+ bool validateInventoryItem(const LLSD& te, const std::string& prefix);
protected:
void menuDoToSelected(const LLSD& userdata);
diff --git a/indra/newview/llpanelobject.cpp b/indra/newview/llpanelobject.cpp
index 0a3a2e753a..23e6a9fbcf 100644
--- a/indra/newview/llpanelobject.cpp
+++ b/indra/newview/llpanelobject.cpp
@@ -2267,19 +2267,21 @@ void LLPanelObject::onCopyParams()
if (objectp->getParameterEntryInUse(LLNetworkData::PARAMS_SCULPT))
{
LLSculptParams *sculpt_params = (LLSculptParams *)objectp->getParameterEntry(LLNetworkData::PARAMS_SCULPT);
-
- LLUUID texture_id = sculpt_params->getSculptTexture();
- if (get_can_copy_texture(texture_id))
- {
- LL_DEBUGS("FloaterTools") << "Recording texture" << LL_ENDL;
- mClipboardParams["sculpt"]["id"] = texture_id;
- }
- else
+ if (sculpt_params)
{
- mClipboardParams["sculpt"]["id"] = SCULPT_DEFAULT_TEXTURE;
- }
+ LLUUID texture_id = sculpt_params->getSculptTexture();
+ if (get_can_copy_texture(texture_id))
+ {
+ LL_DEBUGS("FloaterTools") << "Recording texture" << LL_ENDL;
+ mClipboardParams["sculpt"]["id"] = texture_id;
+ }
+ else
+ {
+ mClipboardParams["sculpt"]["id"] = SCULPT_DEFAULT_TEXTURE;
+ }
- mClipboardParams["sculpt"]["type"] = sculpt_params->getSculptType();
+ mClipboardParams["sculpt"]["type"] = sculpt_params->getSculptType();
+ }
}
}
diff --git a/indra/newview/llpanelprofile.cpp b/indra/newview/llpanelprofile.cpp
index cc418b6374..578bc5b9a7 100644
--- a/indra/newview/llpanelprofile.cpp
+++ b/indra/newview/llpanelprofile.cpp
@@ -328,7 +328,7 @@ public:
}
const std::string verb = params[1].asString();
- if (verb == "about")
+ if (verb == "about" || verb == "mention")
{
LLAvatarActions::showProfile(avatar_id);
return true;
diff --git a/indra/newview/llpanelvolume.cpp b/indra/newview/llpanelvolume.cpp
index 951dc45a78..2fbdbeaf59 100644
--- a/indra/newview/llpanelvolume.cpp
+++ b/indra/newview/llpanelvolume.cpp
@@ -576,32 +576,48 @@ void LLPanelVolume::getState( )
return object->getMaterial();
}
} func;
- bool material_same = LLSelectMgr::getInstance()->getSelection()->getSelectedTEValue( &func, material_code );
+ LLObjectSelectionHandle selection = LLSelectMgr::getInstance()->getSelection();
+ bool material_same = selection->getSelectedTEValue( &func, material_code );
std::string LEGACY_FULLBRIGHT_DESC = LLTrans::getString("Fullbright");
- if (editable && single_volume && material_same)
+
+ bool enable_material = editable && single_volume && material_same;
+ LLCachedControl<bool> edit_linked(gSavedSettings, "EditLinkedParts", false);
+ if (!enable_material && !edit_linked())
{
- mComboMaterial->setEnabled( true );
- if (material_code == LL_MCODE_LIGHT)
+ LLViewerObject* root = selection->getPrimaryObject();
+ while (root && !root->isAvatar() && root->getParent())
{
- if (mComboMaterial->getItemCount() == mComboMaterialItemCount)
+ LLViewerObject* parent = (LLViewerObject*)root->getParent();
+ if (parent->isAvatar())
{
- mComboMaterial->add(LEGACY_FULLBRIGHT_DESC);
+ break;
}
- mComboMaterial->setSimple(LEGACY_FULLBRIGHT_DESC);
+ root = parent;
}
- else
+ if (root)
{
- if (mComboMaterial->getItemCount() != mComboMaterialItemCount)
- {
- mComboMaterial->remove(LEGACY_FULLBRIGHT_DESC);
- }
+ material_code = root->getMaterial();
+ }
+ }
- mComboMaterial->setSimple(std::string(LLMaterialTable::basic.getName(material_code)));
+ mComboMaterial->setEnabled(enable_material);
+
+ if (material_code == LL_MCODE_LIGHT)
+ {
+ if (mComboMaterial->getItemCount() == mComboMaterialItemCount)
+ {
+ mComboMaterial->add(LEGACY_FULLBRIGHT_DESC);
}
+ mComboMaterial->setSimple(LEGACY_FULLBRIGHT_DESC);
}
else
{
- mComboMaterial->setEnabled( false );
+ if (mComboMaterial->getItemCount() != mComboMaterialItemCount)
+ {
+ mComboMaterial->remove(LEGACY_FULLBRIGHT_DESC);
+ }
+
+ mComboMaterial->setSimple(std::string(LLMaterialTable::basic.getName(material_code)));
}
// Physics properties
diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp
index dfc592453a..1948bba4be 100644
--- a/indra/newview/llselectmgr.cpp
+++ b/indra/newview/llselectmgr.cpp
@@ -3140,22 +3140,46 @@ void LLSelectMgr::adjustTexturesByScale(bool send_to_sim, bool stretch)
F32 scale_x = 1;
F32 scale_y = 1;
+ F32 offset_x = 0;
+ F32 offset_y = 0;
- for (U32 i = 0; i < LLGLTFMaterial::GLTF_TEXTURE_INFO_COUNT; ++i)
+ if (te_num < selectNode->mGLTFScaleRatios.size())
{
- LLVector3 scale_ratio = selectNode->mGLTFScaleRatios[te_num][i];
-
- if (planar)
- {
- scale_x = scale_ratio.mV[s_axis] / object_scale.mV[s_axis];
- scale_y = scale_ratio.mV[t_axis] / object_scale.mV[t_axis];
- }
- else
+ for (U32 i = 0; i < LLGLTFMaterial::GLTF_TEXTURE_INFO_COUNT; ++i)
{
- scale_x = scale_ratio.mV[s_axis] * object_scale.mV[s_axis];
- scale_y = scale_ratio.mV[t_axis] * object_scale.mV[t_axis];
+ LLVector3 scale_ratio = selectNode->mGLTFScaleRatios[te_num][i];
+
+ if (planar)
+ {
+ scale_x = scale_ratio.mV[s_axis] / object_scale.mV[s_axis];
+ scale_y = scale_ratio.mV[t_axis] / object_scale.mV[t_axis];
+ }
+ else
+ {
+ scale_x = scale_ratio.mV[s_axis] * object_scale.mV[s_axis];
+ scale_y = scale_ratio.mV[t_axis] * object_scale.mV[t_axis];
+ }
+ material->mTextureTransform[i].mScale.set(scale_x, scale_y);
+
+ LLVector2 scales = selectNode->mGLTFScales[te_num][i];
+ LLVector2 offsets = selectNode->mGLTFOffsets[te_num][i];
+ F64 int_part = 0;
+ offset_x = (F32)modf((offsets[VX] + (scales[VX] - scale_x)) / 2, &int_part);
+ if (offset_x < 0)
+ {
+ offset_x++;
+ }
+ offset_y = (F32)modf((offsets[VY] + (scales[VY] - scale_y)) / 2, &int_part);
+ if (offset_y < 0)
+ {
+ offset_y++;
+ }
+ material->mTextureTransform[i].mOffset.set(offset_x, offset_y);
}
- material->mTextureTransform[i].mScale.set(scale_x, scale_y);
+ }
+ else
+ {
+ llassert(false); // make sure mGLTFScaleRatios is filled
}
const LLGLTFMaterial* base_material = tep->getGLTFMaterial();
@@ -6910,10 +6934,11 @@ void LLSelectNode::saveTextureScaleRatios(LLRender::eTexIndex index_to_query)
{
mTextureScaleRatios.clear();
mGLTFScaleRatios.clear();
+ mGLTFScales.clear();
+ mGLTFOffsets.clear();
if (mObject.notNull())
{
-
LLVector3 scale = mObject->getScale();
for (U8 i = 0; i < mObject->getNumTEs(); i++)
@@ -6950,6 +6975,8 @@ void LLSelectNode::saveTextureScaleRatios(LLRender::eTexIndex index_to_query)
F32 scale_x = 1;
F32 scale_y = 1;
std::vector<LLVector3> material_v_vec;
+ std::vector<LLVector2> material_scales_vec;
+ std::vector<LLVector2> material_offset_vec;
for (U32 i = 0; i < LLGLTFMaterial::GLTF_TEXTURE_INFO_COUNT; ++i)
{
if (material)
@@ -6957,12 +6984,16 @@ void LLSelectNode::saveTextureScaleRatios(LLRender::eTexIndex index_to_query)
LLGLTFMaterial::TextureTransform& transform = material->mTextureTransform[i];
scale_x = transform.mScale[VX];
scale_y = transform.mScale[VY];
+ material_scales_vec.push_back(transform.mScale);
+ material_offset_vec.push_back(transform.mOffset);
}
else
{
// Not having an override doesn't mean that there is no material
scale_x = 1;
scale_y = 1;
+ material_scales_vec.emplace_back(scale_x, scale_y);
+ material_offset_vec.emplace_back(0.f, 0.f);
}
if (tep->getTexGen() == LLTextureEntry::TEX_GEN_PLANAR)
@@ -6978,6 +7009,8 @@ void LLSelectNode::saveTextureScaleRatios(LLRender::eTexIndex index_to_query)
material_v_vec.push_back(material_v);
}
mGLTFScaleRatios.push_back(material_v_vec);
+ mGLTFScales.push_back(material_scales_vec);
+ mGLTFOffsets.push_back(material_offset_vec);
}
}
}
diff --git a/indra/newview/llselectmgr.h b/indra/newview/llselectmgr.h
index f797ed9bd3..11aad3b806 100644
--- a/indra/newview/llselectmgr.h
+++ b/indra/newview/llselectmgr.h
@@ -242,6 +242,8 @@ public:
gltf_materials_vec_t mSavedGLTFOverrideMaterials;
std::vector<LLVector3> mTextureScaleRatios;
std::vector< std::vector<LLVector3> > mGLTFScaleRatios;
+ std::vector< std::vector<LLVector2> > mGLTFScales;
+ std::vector< std::vector<LLVector2> > mGLTFOffsets;
std::vector<LLVector3> mSilhouetteVertices; // array of vertices to render silhouette of object
std::vector<LLVector3> mSilhouetteNormals; // array of normals to render silhouette of object
bool mSilhouetteExists; // need to generate silhouette?
diff --git a/indra/newview/llsnapshotlivepreview.cpp b/indra/newview/llsnapshotlivepreview.cpp
index 7d5f380886..9b6a87e68d 100644
--- a/indra/newview/llsnapshotlivepreview.cpp
+++ b/indra/newview/llsnapshotlivepreview.cpp
@@ -694,6 +694,7 @@ bool LLSnapshotLivePreview::onIdle( void* snapshot_preview )
static LLCachedControl<bool> freeze_time(gSavedSettings, "FreezeTime", false);
static LLCachedControl<bool> use_freeze_frame(gSavedSettings, "UseFreezeFrame", false);
static LLCachedControl<bool> render_ui(gSavedSettings, "RenderUIInSnapshot", false);
+ static LLCachedControl<bool> render_balance(gSavedSettings, "RenderBalanceInSnapshot", false);
static LLCachedControl<bool> render_hud(gSavedSettings, "RenderHUDInSnapshot", false);
static LLCachedControl<bool> render_no_post(gSavedSettings, "RenderSnapshotNoPost", false);
@@ -750,6 +751,7 @@ bool LLSnapshotLivePreview::onIdle( void* snapshot_preview )
render_hud,
false,
render_no_post,
+ render_balance,
previewp->mSnapshotBufferType,
previewp->getMaxImageSize()))
{
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index 9a26ebc5f9..858c7b6656 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -209,6 +209,7 @@
#include "threadpool.h"
#include "llperfstats.h"
+#include "rlvhandler.h"
#if LL_WINDOWS
#include "lldxhardware.h"
@@ -934,6 +935,8 @@ bool idle_startup()
return false;
}
+ RlvHandler::setEnabled(gSavedSettings.get<bool>(Rlv::Settings::Main));
+
// reset the values that could have come in from a slurl
// DEV-42215: Make sure they're not empty -- gUserCredential
// might already have been set from gSavedSettings, and it's too bad
@@ -3601,7 +3604,7 @@ bool process_login_success_response()
// Agent id needed for parcel info request in LLUrlEntryParcel
// to resolve parcel name.
- LLUrlEntryParcel::setAgentID(gAgentID);
+ LLUrlEntryBase::setAgentID(gAgentID);
text = response["session_id"].asString();
if(!text.empty()) gAgentSessionID.set(text);
@@ -3919,25 +3922,7 @@ bool process_login_success_response()
LLViewerMedia::getInstance()->openIDSetup(openid_url, openid_token);
}
-
- // Only save mfa_hash for future logins if the user wants their info remembered.
- if(response.has("mfa_hash")
- && gSavedSettings.getBOOL("RememberUser")
- && LLLoginInstance::getInstance()->saveMFA())
- {
- std::string grid(LLGridManager::getInstance()->getGridId());
- std::string user_id(gUserCredential->userID());
- gSecAPIHandler->addToProtectedMap("mfa_hash", grid, user_id, response["mfa_hash"]);
- // TODO(brad) - related to SL-17223 consider building a better interface that sync's automatically
- gSecAPIHandler->syncProtectedMap();
- }
- else if (!LLLoginInstance::getInstance()->saveMFA())
- {
- std::string grid(LLGridManager::getInstance()->getGridId());
- std::string user_id(gUserCredential->userID());
- gSecAPIHandler->removeFromProtectedMap("mfa_hash", grid, user_id);
- gSecAPIHandler->syncProtectedMap();
- }
+ LLLoginInstance::getInstance()->saveMFAHash(response);
bool success = false;
// JC: gesture loading done below, when we have an asset system
diff --git a/indra/newview/llstatusbar.cpp b/indra/newview/llstatusbar.cpp
index 1bab602364..bda75c16e7 100644
--- a/indra/newview/llstatusbar.cpp
+++ b/indra/newview/llstatusbar.cpp
@@ -759,6 +759,10 @@ void LLStatusBar::updateBalancePanelPosition()
balance_bg_view->setShape(balance_bg_rect);
}
+void LLStatusBar::setBalanceVisible(bool visible)
+{
+ mBoxBalance->setVisible(visible);
+}
// Implements secondlife:///app/balance/request to request a L$ balance
// update via UDP message system. JC
diff --git a/indra/newview/llstatusbar.h b/indra/newview/llstatusbar.h
index 7e1ecf08ca..86c1ccd051 100644
--- a/indra/newview/llstatusbar.h
+++ b/indra/newview/llstatusbar.h
@@ -93,6 +93,8 @@ public:
S32 getSquareMetersCommitted() const;
S32 getSquareMetersLeft() const;
+ void setBalanceVisible(bool visible);
+
LLPanelNearByMedia* getNearbyMediaPanel() { return mPanelNearByMedia; }
private:
diff --git a/indra/newview/llsurfacepatch.cpp b/indra/newview/llsurfacepatch.cpp
index 4315c4c6b0..875af76c10 100644
--- a/indra/newview/llsurfacepatch.cpp
+++ b/indra/newview/llsurfacepatch.cpp
@@ -201,7 +201,7 @@ LLVector2 LLSurfacePatch::getTexCoords(const U32 x, const U32 y) const
void LLSurfacePatch::eval(const U32 x, const U32 y, const U32 stride, LLVector3 *vertex, LLVector3 *normal,
- LLVector2 *tex1) const
+ LLVector2* tex0, LLVector2 *tex1) const
{
if (!mSurfacep || !mSurfacep->getRegion() || !mSurfacep->getGridsPerEdge() || !mVObjp)
{
@@ -220,6 +220,12 @@ void LLSurfacePatch::eval(const U32 x, const U32 y, const U32 stride, LLVector3
pos_agent.mV[VZ] = *(mDataZ + point_offset);
*vertex = pos_agent-mVObjp->getRegion()->getOriginAgent();
+ // tex0 is used for ownership overlay
+ LLVector3 rel_pos = pos_agent - mSurfacep->getOriginAgent();
+ LLVector3 tex_pos = rel_pos * (1.f / (surface_stride * mSurfacep->getMetersPerGrid()));
+ tex0->mV[0] = tex_pos.mV[0];
+ tex0->mV[1] = tex_pos.mV[1];
+
tex1->mV[0] = mSurfacep->getRegion()->getCompositionXY(llfloor(mOriginRegion.mV[0])+x, llfloor(mOriginRegion.mV[1])+y);
const F32 xyScale = 4.9215f*7.f; //0.93284f;
diff --git a/indra/newview/llsurfacepatch.h b/indra/newview/llsurfacepatch.h
index f4831487c1..505fc8c24c 100644
--- a/indra/newview/llsurfacepatch.h
+++ b/indra/newview/llsurfacepatch.h
@@ -116,7 +116,7 @@ public:
void calcNormalFlat(LLVector3& normal_out, const U32 x, const U32 y, const U32 index /* 0 or 1 */);
void eval(const U32 x, const U32 y, const U32 stride,
- LLVector3 *vertex, LLVector3 *normal, LLVector2 *tex1) const;
+ LLVector3 *vertex, LLVector3 *normal, LLVector2* tex0, LLVector2 *tex1) const;
diff --git a/indra/newview/llterrainpaintmap.cpp b/indra/newview/llterrainpaintmap.cpp
index 8ccde74c93..c7a82013e4 100644
--- a/indra/newview/llterrainpaintmap.cpp
+++ b/indra/newview/llterrainpaintmap.cpp
@@ -204,8 +204,9 @@ bool LLTerrainPaintMap::bakeHeightNoiseIntoPBRPaintMapRGB(const LLViewerRegion&
{
LLVector3 scratch3;
LLVector3 pos3;
+ LLVector2 tex0_temp;
LLVector2 tex1_temp;
- patch->eval(i, j, stride, &pos3, &scratch3, &tex1_temp);
+ patch->eval(i, j, stride, &pos3, &scratch3, &tex0_temp, &tex1_temp);
(*pos++).set(pos3.mV[VX], pos3.mV[VY], pos3.mV[VZ]);
*tex1++ = tex1_temp;
vertex_total++;
diff --git a/indra/newview/lltexturecache.cpp b/indra/newview/lltexturecache.cpp
index be7653c011..442c627d07 100644
--- a/indra/newview/lltexturecache.cpp
+++ b/indra/newview/lltexturecache.cpp
@@ -1347,27 +1347,39 @@ U32 LLTextureCache::openAndReadEntries(std::vector<Entry>& entries)
}
for (U32 idx=0; idx<num_entries; idx++)
{
- Entry entry;
- S32 bytes_read = aprfile->read((void*)(&entry), (S32)sizeof(Entry));
- if (bytes_read < sizeof(Entry))
+ try
+ {
+ Entry entry;
+ S32 bytes_read = aprfile->read((void*)(&entry), (S32)sizeof(Entry));
+ if (bytes_read < sizeof(Entry))
+ {
+ LL_WARNS() << "Corrupted header entries, failed at " << idx << " / " << num_entries << LL_ENDL;
+ return 0;
+ }
+ entries.push_back(entry);
+ // LL_INFOS() << "ENTRY: " << entry.mTime << " TEX: " << entry.mID << " IDX: " << idx << " Size: " << entry.mImageSize << LL_ENDL;
+ if (entry.mImageSize > entry.mBodySize)
+ {
+ mHeaderIDMap[entry.mID] = idx;
+ mTexturesSizeMap[entry.mID] = entry.mBodySize;
+ mTexturesSizeTotal += entry.mBodySize;
+ }
+ else
+ {
+ mFreeList.insert(idx);
+ }
+ }
+ catch (std::bad_alloc&)
{
- LL_WARNS() << "Corrupted header entries, failed at " << idx << " / " << num_entries << LL_ENDL;
+ // Too little ram yet very large cache?
+ // Should this actually crash viewer?
+ entries.clear();
+ LL_WARNS() << "Bad alloc trying to read texture entries from cache, mFreeList: " << (S32)mFreeList.size()
+ << ", added entries: " << idx << ", total entries: " << num_entries << LL_ENDL;
closeHeaderEntriesFile();
purgeAllTextures(false);
return 0;
}
- entries.push_back(entry);
-// LL_INFOS() << "ENTRY: " << entry.mTime << " TEX: " << entry.mID << " IDX: " << idx << " Size: " << entry.mImageSize << LL_ENDL;
- if(entry.mImageSize > entry.mBodySize)
- {
- mHeaderIDMap[entry.mID] = idx;
- mTexturesSizeMap[entry.mID] = entry.mBodySize;
- mTexturesSizeTotal += entry.mBodySize;
- }
- else
- {
- mFreeList.insert(idx);
- }
}
closeHeaderEntriesFile();
return num_entries;
diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp
index ff01e537ee..2027e958d5 100644
--- a/indra/newview/lltexturectrl.cpp
+++ b/indra/newview/lltexturectrl.cpp
@@ -88,7 +88,8 @@ bool get_is_predefined_texture(LLUUID asset_id)
|| asset_id == DEFAULT_OBJECT_NORMAL
|| asset_id == BLANK_OBJECT_NORMAL
|| asset_id == IMG_WHITE
- || asset_id == LLUUID(SCULPT_DEFAULT_TEXTURE))
+ || asset_id == LLUUID(SCULPT_DEFAULT_TEXTURE)
+ || asset_id == BLANK_MATERIAL_ASSET_ID)
{
return true;
}
@@ -163,7 +164,6 @@ LLFloaterTexturePicker::LLFloaterTexturePicker(
mFallbackImage(fallback_image),
mDefaultImageAssetID(default_image_asset_id),
mBlankImageAssetID(blank_image_asset_id),
- mTentative(tentative),
mAllowNoTexture(allow_no_texture),
mLabel(label),
mTentativeLabel(NULL),
@@ -188,6 +188,7 @@ LLFloaterTexturePicker::LLFloaterTexturePicker(
mLocalTextureEnabled(false),
mInventoryPickType(pick_type)
{
+ setTentative(tentative);
mCanApplyImmediately = can_apply_immediately;
buildFromFile("floater_texture_ctrl.xml");
setCanMinimize(false);
@@ -199,7 +200,7 @@ LLFloaterTexturePicker::~LLFloaterTexturePicker()
void LLFloaterTexturePicker::setImageID(const LLUUID& image_id, bool set_selection /*=true*/)
{
- if( ((mImageAssetID != image_id) || mTentative) && mActive)
+ if( ((mImageAssetID != image_id) || getTentative()) && mActive)
{
mNoCopyTextureSelected = false;
mViewModel->setDirty(); // *TODO: shouldn't we be using setValue() here?
@@ -277,6 +278,7 @@ void LLFloaterTexturePicker::setImageIDFromItem(const LLInventoryItem* itemp, bo
asset_id = BLANK_MATERIAL_ASSET_ID;
}
setImageID(asset_id, set_selection);
+ setTentative(false);
}
void LLFloaterTexturePicker::setActive( bool active )
@@ -657,7 +659,7 @@ void LLFloaterTexturePicker::draw()
bool valid_dims = updateImageStats();
// if we're inactive, gray out "apply immediate" checkbox
- mSelectBtn->setEnabled(mActive && mCanApply && valid_dims);
+ mSelectBtn->setEnabled(mActive && mCanApply && valid_dims && !getTentative());
mPipetteBtn->setEnabled(mActive);
mPipetteBtn->setValue(LLToolMgr::getInstance()->getCurrentTool() == LLToolPipette::getInstance());
@@ -722,9 +724,9 @@ void LLFloaterTexturePicker::draw()
mTentativeLabel->setVisible( false );
}
- mDefaultBtn->setEnabled(mImageAssetID != mDefaultImageAssetID || mTentative);
- mBlankBtn->setEnabled((mImageAssetID != mBlankImageAssetID && mBlankImageAssetID.notNull()) || mTentative);
- mNoneBtn->setEnabled(mAllowNoTexture && (!mImageAssetID.isNull() || mTentative));
+ mDefaultBtn->setEnabled(mImageAssetID != mDefaultImageAssetID || getTentative());
+ mBlankBtn->setEnabled((mImageAssetID != mBlankImageAssetID && mBlankImageAssetID.notNull()) || getTentative());
+ mNoneBtn->setEnabled(mAllowNoTexture && (!mImageAssetID.isNull() || getTentative()));
LLFloater::draw();
@@ -777,7 +779,7 @@ void LLFloaterTexturePicker::draw()
}
// Draw Tentative Label over the image
- if( mTentative && !mViewModel->isDirty() )
+ if( getTentative() && !mViewModel->isDirty() )
{
mTentativeLabel->setVisible( true );
drawChild(mTentativeLabel);
@@ -980,6 +982,7 @@ void LLFloaterTexturePicker::onBtnSetToDefault(void* userdata)
if (self->mOwner)
{
self->setImageID( self->getDefaultImageAssetID() );
+ self->setTentative(false);
}
self->commitIfImmediateSet();
}
@@ -990,6 +993,7 @@ void LLFloaterTexturePicker::onBtnBlank(void* userdata)
LLFloaterTexturePicker* self = (LLFloaterTexturePicker*) userdata;
self->setCanApply(true, true);
self->setImageID( self->getBlankImageAssetID() );
+ self->setTentative(false);
self->commitIfImmediateSet();
}
@@ -1000,21 +1004,10 @@ void LLFloaterTexturePicker::onBtnNone(void* userdata)
LLFloaterTexturePicker* self = (LLFloaterTexturePicker*) userdata;
self->setCanApply(true, true);
self->setImageID( LLUUID::null );
+ self->setTentative(false);
self->commitIfImmediateSet();
}
-/*
-// static
-void LLFloaterTexturePicker::onBtnRevert(void* userdata)
-{
- LLFloaterTexturePicker* self = (LLFloaterTexturePicker*) userdata;
- self->setImageID( self->mOriginalImageAssetID );
- // TODO: Change this to tell the owner to cancel. It needs to be
- // smart enough to restore multi-texture selections.
- self->mOwner->onFloaterCommit();
- self->mViewModel->resetDirty();
-}*/
-
// static
void LLFloaterTexturePicker::onBtnCancel(void* userdata)
{
@@ -1221,6 +1214,7 @@ void LLFloaterTexturePicker::onLocalScrollCommit(LLUICtrl* ctrl, void* userdata)
if (self->mSetImageAssetIDCallback)
{
self->mSetImageAssetIDCallback(inworld_id);
+ self->setTentative(false);
}
if (self->childGetValue("apply_immediate_check").asBoolean())
@@ -1299,6 +1293,7 @@ void LLFloaterTexturePicker::onBakeTextureSelect(LLUICtrl* ctrl, void *user_data
}
self->setImageID(imageID);
+ self->setTentative(false);
self->mViewModel->setDirty(); // *TODO: shouldn't we be using setValue() here?
if (!self->mPreviewSettingChanged)
@@ -1319,7 +1314,7 @@ void LLFloaterTexturePicker::onBakeTextureSelect(LLUICtrl* ctrl, void *user_data
void LLFloaterTexturePicker::setCanApply(bool can_preview, bool can_apply, bool inworld_image)
{
- mSelectBtn->setEnabled(can_apply);
+ mSelectBtn->setEnabled(can_apply && !getTentative()); // will be updated on draw
getChildRef<LLUICtrl>("preview_disabled").setVisible(!can_preview && inworld_image);
getChildRef<LLUICtrl>("apply_immediate_check").setVisible(can_preview);
@@ -1626,6 +1621,7 @@ void LLFloaterTexturePicker::onTextureSelect( const LLTextureEntry& te )
else
{
setImageID(te.getID());
+ setTentative(false);
}
mNoCopyTextureSelected = false;
@@ -1839,6 +1835,17 @@ void LLTextureCtrl::clear()
setImageAssetID(LLUUID::null);
}
+void LLTextureCtrl::setTentative(bool tentative)
+{
+ LLFloater* floaterp = mFloaterHandle.get();
+
+ if (floaterp)
+ {
+ floaterp->setTentative(tentative);
+ }
+ LLUICtrl::setTentative(tentative);
+}
+
void LLTextureCtrl::setLabel(const std::string& label)
{
mLabel = label;
@@ -2112,6 +2119,7 @@ void LLTextureCtrl::setImageAssetID( const LLUUID& asset_id )
if( floaterp && getEnabled() )
{
floaterp->setImageID( asset_id );
+ floaterp->setTentative(getTentative());
floaterp->resetDirty();
}
}
diff --git a/indra/newview/lltexturectrl.h b/indra/newview/lltexturectrl.h
index 581242cc53..79957431b7 100644
--- a/indra/newview/lltexturectrl.h
+++ b/indra/newview/lltexturectrl.h
@@ -167,6 +167,8 @@ public:
// LLUICtrl interface
void clear() override;
+ void setTentative(bool b) override;
+
// Takes a UUID, wraps get/setImageAssetID
void setValue(const LLSD& value) override;
LLSD getValue() const override;
@@ -405,7 +407,6 @@ protected:
LLUIImagePtr mFallbackImage; // What to show if currently selected texture is null.
LLUUID mDefaultImageAssetID;
LLUUID mBlankImageAssetID;
- bool mTentative;
bool mAllowNoTexture;
LLUUID mSpecialCurrentImageAssetID; // Used when the asset id has no corresponding texture in the user's inventory.
LLUUID mOriginalImageAssetID;
diff --git a/indra/newview/lltooldraganddrop.cpp b/indra/newview/lltooldraganddrop.cpp
index 83b0260425..3665ff5e87 100644
--- a/indra/newview/lltooldraganddrop.cpp
+++ b/indra/newview/lltooldraganddrop.cpp
@@ -2351,6 +2351,47 @@ EAcceptance LLToolDragAndDrop::dad3dRezScript(
return rv;
}
+
+bool is_water_exclusion_face(LLViewerObject* obj, S32 face)
+{
+ LLViewerTexture* image = obj->getTEImage(face);
+ if (!image)
+ return false;
+
+ // magic texture and alpha blending
+ bool exclude_water = (image->getID() == IMG_ALPHA_GRAD) && obj->isImageAlphaBlended(face);
+
+ // transparency
+ exclude_water &= (obj->getTE(face)->getColor().mV[VALPHA] == 1);
+
+ //absence of normal and specular textures
+ image = obj->getTENormalMap(face);
+ if (image && image != LLViewerFetchedTexture::sDefaultImagep)
+ exclude_water &= image->getID().isNull();
+ image = obj->getTESpecularMap(face);
+ if (image && image != LLViewerFetchedTexture::sDefaultImagep)
+ exclude_water &= image->getID().isNull();
+
+ return exclude_water;
+}
+
+bool is_water_exclusion_surface(LLViewerObject* obj, S32 face, bool all_faces)
+{
+ if (all_faces)
+ {
+ bool exclude_water = false;
+ for (S32 it_face = 0; it_face < obj->getNumTEs(); it_face++)
+ {
+ exclude_water |= is_water_exclusion_face(obj, it_face);
+ }
+ return exclude_water;
+ }
+ else
+ {
+ return is_water_exclusion_face(obj, face);
+ }
+}
+
EAcceptance LLToolDragAndDrop::dad3dApplyToObject(
LLViewerObject* obj, S32 face, MASK mask, bool drop, EDragAndDropType cargo_type)
{
@@ -2441,7 +2482,13 @@ EAcceptance LLToolDragAndDrop::dad3dApplyToObject(
else if (cargo_type == DAD_MATERIAL)
{
bool all_faces = mask & MASK_SHIFT;
- if (item->getPermissions().allowOperationBy(PERM_COPY, gAgent.getID()))
+
+ if (is_water_exclusion_surface(obj, face, all_faces))
+ {
+ LLNotificationsUtil::add("WaterExclusionNoMaterial");
+ return ACCEPT_NO;
+ }
+ else if (item->getPermissions().allowOperationBy(PERM_COPY, gAgent.getID()))
{
dropMaterial(obj, face, item, mSource, mSourceID, all_faces);
}
diff --git a/indra/newview/llvieweraudio.cpp b/indra/newview/llvieweraudio.cpp
index b3b4f43e57..aa0cbac91f 100644
--- a/indra/newview/llvieweraudio.cpp
+++ b/indra/newview/llvieweraudio.cpp
@@ -390,6 +390,7 @@ void init_audio()
gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndWindowClose")));
gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndWindowOpen")));
gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndRestart")));
+ gAudiop->preloadSound(LLUUID(gSavedSettings.getString("UISndChatMention")));
}
audio_update_volume(true);
@@ -541,8 +542,8 @@ void audio_update_wind(bool force_update)
// whereas steady-state avatar walk velocity is only 3.2 m/s.
// Without this the world feels desolate on first login when you are
// standing still.
- const F32 WIND_LEVEL = 0.5f;
- LLVector3 scaled_wind_vec = gWindVec * WIND_LEVEL;
+ static LLUICachedControl<F32> wind_level("AudioLevelWind", 0.5f);
+ LLVector3 scaled_wind_vec = gWindVec * wind_level;
// Mix in the avatar's motion, subtract because when you walk north,
// the apparent wind moves south.
diff --git a/indra/newview/llviewercamera.cpp b/indra/newview/llviewercamera.cpp
index a0d307a3f4..d915f11e74 100644
--- a/indra/newview/llviewercamera.cpp
+++ b/indra/newview/llviewercamera.cpp
@@ -73,12 +73,14 @@ LLViewerCamera::LLViewerCamera() : LLCamera()
mAverageSpeed = 0.f;
mAverageAngularSpeed = 0.f;
- mCameraAngleChangedSignal = gSavedSettings.getControl("CameraAngle")->getCommitSignal()->connect(boost::bind(&LLViewerCamera::updateCameraAngle, this, _2));
-}
-
-LLViewerCamera::~LLViewerCamera()
-{
- mCameraAngleChangedSignal.disconnect();
+ LLPointer<LLControlVariable> cntrl_ptr = gSavedSettings.getControl("CameraAngle");
+ if (cntrl_ptr.notNull())
+ {
+ cntrl_ptr->getCommitSignal()->connect([](LLControlVariable* control, const LLSD& value, const LLSD& previous)
+ {
+ LLViewerCamera::getInstance()->setDefaultFOV((F32)value.asReal());
+ });
+ }
}
bool LLViewerCamera::updateCameraLocation(const LLVector3 &center, const LLVector3 &up_direction, const LLVector3 &point_of_interest)
@@ -832,8 +834,3 @@ bool LLViewerCamera::isDefaultFOVChanged()
return false;
}
-void LLViewerCamera::updateCameraAngle(const LLSD& value)
-{
- setDefaultFOV((F32)value.asReal());
-}
-
diff --git a/indra/newview/llviewercamera.h b/indra/newview/llviewercamera.h
index 61aebf73f6..cb0994be0a 100644
--- a/indra/newview/llviewercamera.h
+++ b/indra/newview/llviewercamera.h
@@ -43,7 +43,6 @@ class alignas(16) LLViewerCamera : public LLCamera, public LLSimpleton<LLViewerC
LL_ALIGN_NEW
public:
LLViewerCamera();
- ~LLViewerCamera();
typedef enum
{
@@ -66,7 +65,6 @@ public:
const LLVector3 &point_of_interest);
static void updateFrustumPlanes(LLCamera& camera, bool ortho = false, bool zflip = false, bool no_hacks = false);
- void updateCameraAngle(const LLSD& value);
void setPerspective(bool for_selection, S32 x, S32 y_from_bot, S32 width, S32 height, bool limit_select_distance, F32 z_near = 0, F32 z_far = 0);
const LLMatrix4 &getProjection() const;
@@ -126,8 +124,6 @@ protected:
F32 mZoomFactor;
S16 mZoomSubregion;
- boost::signals2::connection mCameraAngleChangedSignal;
-
public:
};
diff --git a/indra/newview/llviewerchat.cpp b/indra/newview/llviewerchat.cpp
index 8b01c4ef88..2ca2c5c07d 100644
--- a/indra/newview/llviewerchat.cpp
+++ b/indra/newview/llviewerchat.cpp
@@ -36,6 +36,7 @@
#include "llviewerregion.h"
#include "llworld.h"
#include "llinstantmessage.h" //SYSTEM_FROM
+#include "llurlregistry.h"
// LLViewerChat
LLViewerChat::font_change_signal_t LLViewerChat::sChatFontChangedSignal;
@@ -222,6 +223,13 @@ void LLViewerChat::formatChatMsg(const LLChat& chat, std::string& formated_msg)
{
std::string tmpmsg = chat.mText;
+ // show @name instead of slurl for chat mentions
+ LLUrlMatch match;
+ while (LLUrlRegistry::instance().findUrl(tmpmsg, match, LLUrlRegistryNullCallback, false, true))
+ {
+ tmpmsg.replace(match.getStart(), match.getEnd() - match.getStart() + 1, match.getLabel());
+ }
+
if(chat.mChatStyle == CHAT_STYLE_IRC)
{
formated_msg = chat.mFromName + tmpmsg.substr(3);
diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp
index 598ad89907..9043a5a89e 100644
--- a/indra/newview/llviewercontrol.cpp
+++ b/indra/newview/llviewercontrol.cpp
@@ -76,6 +76,7 @@
#include "llslurl.h"
#include "llstartup.h"
#include "llperfstats.h"
+#include "rlvcommon.h"
#if LL_DARWIN
#include "llwindowmacosx.h"
@@ -972,6 +973,8 @@ void settings_setup_listeners()
setting_setup_signal_listener(gSavedSettings, "TerrainPaintBitDepth", handleSetShaderChanged);
setting_setup_signal_listener(gSavedPerAccountSettings, "AvatarHoverOffsetZ", handleAvatarHoverOffsetChanged);
+
+ setting_setup_signal_listener(gSavedSettings, Rlv::Settings::TopLevelMenu, Rlv::Util::menuToggleVisible);
}
#if TEST_CACHED_CONTROL
diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp
index 24f1be3d1c..10fa0fd3cd 100644
--- a/indra/newview/llviewerdisplay.cpp
+++ b/indra/newview/llviewerdisplay.cpp
@@ -215,11 +215,15 @@ void display_update_camera()
final_far = gSavedSettings.getF32("RenderReflectionProbeDrawDistance");
}
else if (CAMERA_MODE_CUSTOMIZE_AVATAR == gAgentCamera.getCameraMode())
-
{
final_far *= 0.5f;
}
+ else if (LLViewerTexture::sDesiredDiscardBias > 2.f)
+ {
+ final_far = llmax(32.f, final_far / (LLViewerTexture::sDesiredDiscardBias - 1.f));
+ }
LLViewerCamera::getInstance()->setFar(final_far);
+ LLVOAvatar::sRenderDistance = llclamp(final_far, 16.f, 256.f);
gViewerWindow->setup3DRender();
if (!gCubeSnapshot)
diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp
index 7d138dfb3b..89ccf49f14 100644
--- a/indra/newview/llviewerfloaterreg.cpp
+++ b/indra/newview/llviewerfloaterreg.cpp
@@ -58,6 +58,7 @@
#include "llfloatercamera.h"
#include "llfloatercamerapresets.h"
#include "llfloaterchangeitemthumbnail.h"
+#include "llfloaterchatmentionpicker.h"
#include "llfloaterchatvoicevolume.h"
#include "llfloaterclassified.h"
#include "llfloaterconversationlog.h"
@@ -177,6 +178,7 @@
#include "llpreviewtexture.h"
#include "llscriptfloater.h"
#include "llsyswellwindow.h"
+#include "rlvfloaters.h"
#include "fsfloatersearch.h"
@@ -356,6 +358,7 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("chat_voice", "floater_voice_chat_volume.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterChatVoiceVolume>);
LLFloaterReg::add("change_item_thumbnail", "floater_change_item_thumbnail.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterChangeItemThumbnail>);
LLFloaterReg::add("nearby_chat", "floater_im_session.xml", (LLFloaterBuildFunc)&LLFloaterIMNearbyChat::buildFloater);
+ LLFloaterReg::add("chat_mention_picker", "floater_chat_mention_picker.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterChatMentionPicker>);
LLFloaterReg::add("classified", "floater_classified.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterClassified>);
LLFloaterReg::add("compile_queue", "floater_script_queue.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterCompileQueue>);
LLFloaterReg::add("conversation", "floater_conversation_log.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterConversationLog>);
@@ -488,6 +491,7 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("region_debug_console", "floater_region_debug_console.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterRegionDebugConsole>);
LLFloaterReg::add("region_info", "floater_region_info.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterRegionInfo>);
LLFloaterReg::add("region_restarting", "floater_region_restarting.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterRegionRestarting>);
+ LLFloaterReg::add("rlv_console", "floater_rlv_console.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<Rlv::FloaterConsole>);
LLFloaterReg::add("script_debug", "floater_script_debug.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterScriptDebug>);
LLFloaterReg::add("script_debug_output", "floater_script_debug_panel.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterScriptDebugOutput>);
diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp
index 36ec6f0d78..5f61aeaf13 100644
--- a/indra/newview/llviewerinventory.cpp
+++ b/indra/newview/llviewerinventory.cpp
@@ -71,6 +71,9 @@
#include "llclipboard.h"
#include "llhttpretrypolicy.h"
#include "llsettingsvo.h"
+#include "llinventorylistener.h"
+
+LLInventoryListener sInventoryListener;
// do-nothing ops for use in callbacks.
void no_op_inventory_func(const LLUUID&) {}
@@ -751,13 +754,11 @@ S32 LLViewerInventoryCategory::getViewerDescendentCount() const
return descendents_actual;
}
-LLSD LLViewerInventoryCategory::exportLLSD() const
+void LLViewerInventoryCategory::exportLLSD(LLSD & cat_data) const
{
- LLSD cat_data = LLInventoryCategory::exportLLSD();
+ LLInventoryCategory::exportLLSD(cat_data);
cat_data[INV_OWNER_ID] = mOwnerID;
cat_data[INV_VERSION] = mVersion;
-
- return cat_data;
}
bool LLViewerInventoryCategory::importLLSD(const LLSD& cat_data)
diff --git a/indra/newview/llviewerinventory.h b/indra/newview/llviewerinventory.h
index 18daa368d9..5cd31353f8 100644
--- a/indra/newview/llviewerinventory.h
+++ b/indra/newview/llviewerinventory.h
@@ -232,8 +232,8 @@ public:
// How many descendents do we currently have information for in the InventoryModel?
S32 getViewerDescendentCount() const;
- LLSD exportLLSD() const;
- bool importLLSD(const LLSD& cat_data);
+ virtual void exportLLSD(LLSD &sd) const;
+ virtual bool importLLSD(const LLSD& cat_data);
void determineFolderType();
void changeType(LLFolderType::EType new_folder_type);
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 7c073a4f39..a6b05381bb 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -153,6 +153,7 @@
#include "llviewershadermgr.h"
#include "gltfscenemanager.h"
#include "gltf/asset.h"
+#include "rlvcommon.h"
using namespace LLAvatarAppearanceDefines;
@@ -6316,6 +6317,8 @@ void show_debug_menus()
gMenuBarView->setItemVisible("Advanced", debug);
// gMenuBarView->setItemEnabled("Advanced", debug); // Don't disable Advanced keyboard shortcuts when hidden
+ Rlv::Util::menuToggleVisible();
+
gMenuBarView->setItemVisible("Debug", qamode);
gMenuBarView->setItemEnabled("Debug", qamode);
diff --git a/indra/newview/llviewermenufile.cpp b/indra/newview/llviewermenufile.cpp
index fecc0edba4..15f8a6e6f1 100644
--- a/indra/newview/llviewermenufile.cpp
+++ b/indra/newview/llviewermenufile.cpp
@@ -939,6 +939,7 @@ class LLFileTakeSnapshotToDisk : public view_listener_t
bool render_ui = gSavedSettings.getBOOL("RenderUIInSnapshot");
bool render_hud = gSavedSettings.getBOOL("RenderHUDInSnapshot");
bool render_no_post = gSavedSettings.getBOOL("RenderSnapshotNoPost");
+ bool render_balance = gSavedSettings.getBOOL("RenderBalanceInSnapshot");
bool high_res = gSavedSettings.getBOOL("HighResSnapshot");
if (high_res)
@@ -959,6 +960,7 @@ class LLFileTakeSnapshotToDisk : public view_listener_t
render_hud,
false,
render_no_post,
+ render_balance,
LLSnapshotModel::SNAPSHOT_TYPE_COLOR,
high_res ? S32_MAX : MAX_SNAPSHOT_IMAGE_SIZE)) //per side
{
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 3b16708091..b35be7d385 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -118,6 +118,8 @@
#include "llpanelplaceprofile.h"
#include "llviewerregion.h"
#include "llfloaterregionrestarting.h"
+#include "rlvactions.h"
+#include "rlvhandler.h"
#include "llnotificationmanager.h" //
#include "llexperiencecache.h"
@@ -2398,15 +2400,16 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)
}
bool is_audible = (CHAT_AUDIBLE_FULLY == chat.mAudible);
+ bool show_script_chat_particles = chat.mSourceType == CHAT_SOURCE_OBJECT
+ && chat.mChatType != CHAT_TYPE_DEBUG_MSG
+ && gSavedSettings.getBOOL("EffectScriptChatParticles");
chatter = gObjectList.findObject(from_id);
if (chatter)
{
chat.mPosAgent = chatter->getPositionAgent();
// Make swirly things only for talking objects. (not script debug messages, though)
- if (chat.mSourceType == CHAT_SOURCE_OBJECT
- && chat.mChatType != CHAT_TYPE_DEBUG_MSG
- && gSavedSettings.getBOOL("EffectScriptChatParticles") )
+ if (show_script_chat_particles && (!RlvActions::isRlvEnabled() || CHAT_TYPE_OWNER != chat.mChatType) )
{
LLPointer<LLViewerPartSourceChat> psc = new LLViewerPartSourceChat(chatter->getPositionAgent());
psc->setSourceObject(chatter);
@@ -2486,8 +2489,25 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)
case CHAT_TYPE_WHISPER:
chat.mText = LLTrans::getString("whisper") + " ";
break;
- case CHAT_TYPE_DEBUG_MSG:
case CHAT_TYPE_OWNER:
+ if (RlvActions::isRlvEnabled())
+ {
+ if (RlvHandler::instance().handleSimulatorChat(mesg, chat, chatter))
+ {
+ break;
+ }
+ else if (show_script_chat_particles)
+ {
+ LLPointer<LLViewerPartSourceChat> psc = new LLViewerPartSourceChat(chatter->getPositionAgent());
+ psc->setSourceObject(chatter);
+ psc->setColor(color);
+ //We set the particles to be owned by the object's owner,
+ //just in case they should be muted by the mute list
+ psc->setOwnerUUID(owner_id);
+ LLViewerPartSim::getInstance()->addPartSource(psc);
+ }
+ }
+ case CHAT_TYPE_DEBUG_MSG:
case CHAT_TYPE_NORMAL:
case CHAT_TYPE_DIRECT:
break;
@@ -2583,6 +2603,8 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)
msg_notify["session_id"] = LLUUID();
msg_notify["from_id"] = chat.mFromID;
msg_notify["source_type"] = chat.mSourceType;
+ // used to check if there is agent mention in the message
+ msg_notify["message"] = mesg;
on_new_message(msg_notify);
}
@@ -5055,6 +5077,7 @@ bool attempt_standard_notification(LLMessageSystem* msgsystem)
false, //UI
gSavedSettings.getBOOL("RenderHUDInSnapshot"),
false,
+ false,
LLSnapshotModel::SNAPSHOT_TYPE_COLOR,
LLSnapshotModel::SNAPSHOT_FORMAT_PNG);
}
@@ -5160,6 +5183,7 @@ static void process_special_alert_messages(const std::string & message)
false,
gSavedSettings.getBOOL("RenderHUDInSnapshot"),
false,
+ false,
LLSnapshotModel::SNAPSHOT_TYPE_COLOR,
LLSnapshotModel::SNAPSHOT_FORMAT_PNG);
}
diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp
index 8d90187e91..9e77b40a45 100644
--- a/indra/newview/llviewerobject.cpp
+++ b/indra/newview/llviewerobject.cpp
@@ -4184,8 +4184,11 @@ void LLViewerObject::boostTexturePriority(bool boost_children /* = true */)
if (isSculpted() && !isMesh())
{
LLSculptParams *sculpt_params = (LLSculptParams *)getParameterEntry(LLNetworkData::PARAMS_SCULPT);
- LLUUID sculpt_id = sculpt_params->getSculptTexture();
- LLViewerTextureManager::getFetchedTexture(sculpt_id, FTT_DEFAULT, true, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE)->setBoostLevel(LLGLTexture::BOOST_SELECTED);
+ if (sculpt_params)
+ {
+ LLUUID sculpt_id = sculpt_params->getSculptTexture();
+ LLViewerTextureManager::getFetchedTexture(sculpt_id, FTT_DEFAULT, true, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE)->setBoostLevel(LLGLTexture::BOOST_SELECTED);
+ }
}
if (boost_children)
diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp
index d72d428c08..c15fd86f71 100644
--- a/indra/newview/llviewerobjectlist.cpp
+++ b/indra/newview/llviewerobjectlist.cpp
@@ -68,7 +68,7 @@
#include "u64.h"
#include "llviewertexturelist.h"
#include "lldatapacker.h"
-#ifdef LL_USESYSTEMLIBS
+#if 1
#include <zlib.h>
#else
#include "zlib-ng/zlib.h"
diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp
index 1a5c40064a..432da2e990 100644
--- a/indra/newview/llviewerparcelmgr.cpp
+++ b/indra/newview/llviewerparcelmgr.cpp
@@ -42,6 +42,7 @@
// Viewer includes
#include "llagent.h"
#include "llagentaccess.h"
+#include "llcallbacklist.h"
#include "llviewerparcelaskplay.h"
#include "llviewerwindow.h"
#include "llviewercontrol.h"
@@ -1756,6 +1757,8 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use
{
instance->mTeleportFinishedSignal(instance->mTeleportInProgressPosition, false);
}
+ instance->postTeleportFinished(instance->mTeleportWithinRegion);
+ instance->mTeleportWithinRegion = false;
}
parcel->setParcelEnvironmentVersion(parcel_environment_version);
LL_DEBUGS("ENVIRONMENT") << "Parcel environment version is " << parcel->getParcelEnvironmentVersion() << LL_ENDL;
@@ -2725,6 +2728,8 @@ void LLViewerParcelMgr::onTeleportFinished(bool local, const LLVector3d& new_pos
// Local teleport. We already have the agent parcel data.
// Emit the signal immediately.
getInstance()->mTeleportFinishedSignal(new_pos, local);
+
+ postTeleportFinished(true);
}
else
{
@@ -2733,12 +2738,14 @@ void LLViewerParcelMgr::onTeleportFinished(bool local, const LLVector3d& new_pos
// Let's wait for the update and then emit the signal.
mTeleportInProgressPosition = new_pos;
mTeleportInProgress = true;
+ mTeleportWithinRegion = local;
}
}
void LLViewerParcelMgr::onTeleportFailed()
{
mTeleportFailedSignal();
+ LLEventPumps::instance().obtain("LLTeleport").post(llsd::map("success", false));
}
bool LLViewerParcelMgr::getTeleportInProgress()
@@ -2746,3 +2753,20 @@ bool LLViewerParcelMgr::getTeleportInProgress()
return mTeleportInProgress // case where parcel data arrives after teleport
|| gAgent.getTeleportState() > LLAgent::TELEPORT_NONE; // For LOCAL, no mTeleportInProgress
}
+
+void LLViewerParcelMgr::postTeleportFinished(bool local)
+{
+ auto post = []()
+ {
+ LLEventPumps::instance().obtain("LLTeleport").post(llsd::map("success", true));
+ };
+ if (local)
+ {
+ static LLCachedControl<F32> teleport_local_delay(gSavedSettings, "TeleportLocalDelay");
+ doAfterInterval(post, teleport_local_delay + 0.5f);
+ }
+ else
+ {
+ post();
+ }
+}
diff --git a/indra/newview/llviewerparcelmgr.h b/indra/newview/llviewerparcelmgr.h
index 086bca4878..1925cd23ed 100644
--- a/indra/newview/llviewerparcelmgr.h
+++ b/indra/newview/llviewerparcelmgr.h
@@ -295,6 +295,8 @@ public:
void onTeleportFailed();
bool getTeleportInProgress();
+ void postTeleportFinished(bool local);
+
static bool isParcelOwnedByAgent(const LLParcel* parcelp, U64 group_proxy_power);
static bool isParcelModifiableByAgent(const LLParcel* parcelp, U64 group_proxy_power);
@@ -344,7 +346,9 @@ private:
std::vector<LLParcelObserver*> mObservers;
+ // Used to communicate between onTeleportFinished() and processParcelProperties()
bool mTeleportInProgress;
+ bool mTeleportWithinRegion{ false };
LLVector3d mTeleportInProgressPosition;
teleport_finished_signal_t mTeleportFinishedSignal;
teleport_failed_signal_t mTeleportFailedSignal;
diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp
index 697433148b..b9f52e11aa 100755
--- a/indra/newview/llviewerregion.cpp
+++ b/indra/newview/llviewerregion.cpp
@@ -3720,12 +3720,6 @@ bool LLViewerRegion::bakesOnMeshEnabled() const
mSimulatorFeatures["BakesOnMeshEnabled"].asBoolean());
}
-bool LLViewerRegion::meshRezEnabled() const
-{
- return (mSimulatorFeatures.has("MeshRezEnabled") &&
- mSimulatorFeatures["MeshRezEnabled"].asBoolean());
-}
-
bool LLViewerRegion::dynamicPathfindingEnabled() const
{
return ( mSimulatorFeatures.has("DynamicPathfindingEnabled") &&
diff --git a/indra/newview/llviewerregion.h b/indra/newview/llviewerregion.h
index d0ec1fe877..244e2b7835 100644
--- a/indra/newview/llviewerregion.h
+++ b/indra/newview/llviewerregion.h
@@ -333,7 +333,6 @@ public:
void getInfo(LLSD& info);
- bool meshRezEnabled() const;
bool meshUploadEnabled() const;
bool bakesOnMeshEnabled() const;
diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp
index 40daac887d..f174e16624 100644
--- a/indra/newview/llviewertexturelist.cpp
+++ b/indra/newview/llviewertexturelist.cpp
@@ -1447,6 +1447,15 @@ bool LLViewerTextureList::createUploadFile(const std::string& filename,
image->setLastError("Couldn't load the image to be uploaded.");
return false;
}
+
+ // calcDataSizeJ2C assumes maximum size is 2048 and for bigger images can
+ // assign discard to bring imige to needed size, but upload does the scaling
+ // as needed, so just reset discard.
+ // Assume file is full and has 'discard' 0 data.
+ // Todo: probably a better idea to have some setMaxDimentions in J2C
+ // called when loading from a local file
+ image->setDiscardLevel(0);
+
// Decompress or expand it in a raw image structure
LLPointer<LLImageRaw> raw_image = new LLImageRaw;
if (!image->decode(raw_image, 0.0f))
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 50c38899c3..be8ef044e7 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -4872,12 +4872,12 @@ void LLViewerWindow::movieSize(S32 new_width, S32 new_height)
}
}
-bool LLViewerWindow::saveSnapshot(const std::string& filepath, S32 image_width, S32 image_height, bool show_ui, bool show_hud, bool do_rebuild, LLSnapshotModel::ESnapshotLayerType type, LLSnapshotModel::ESnapshotFormat format)
+bool LLViewerWindow::saveSnapshot(const std::string& filepath, S32 image_width, S32 image_height, bool show_ui, bool show_hud, bool do_rebuild, bool show_balance, LLSnapshotModel::ESnapshotLayerType type, LLSnapshotModel::ESnapshotFormat format)
{
LL_INFOS() << "Saving snapshot to: " << filepath << LL_ENDL;
LLPointer<LLImageRaw> raw = new LLImageRaw;
- bool success = rawSnapshot(raw, image_width, image_height, true, false, show_ui, show_hud, do_rebuild);
+ bool success = rawSnapshot(raw, image_width, image_height, true, false, show_ui, show_hud, do_rebuild, show_balance);
if (success)
{
@@ -4938,14 +4938,14 @@ void LLViewerWindow::resetSnapshotLoc() const
bool LLViewerWindow::thumbnailSnapshot(LLImageRaw *raw, S32 preview_width, S32 preview_height, bool show_ui, bool show_hud, bool do_rebuild, bool no_post, LLSnapshotModel::ESnapshotLayerType type)
{
- return rawSnapshot(raw, preview_width, preview_height, false, false, show_ui, show_hud, do_rebuild, no_post, type);
+ return rawSnapshot(raw, preview_width, preview_height, false, false, show_ui, show_hud, do_rebuild, no_post, gSavedSettings.getBOOL("RenderBalanceInSnapshot"), type);
}
// Saves the image from the screen to a raw image
// Since the required size might be bigger than the available screen, this method rerenders the scene in parts (called subimages) and copy
// the results over to the final raw image.
bool LLViewerWindow::rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_height,
- bool keep_window_aspect, bool is_texture, bool show_ui, bool show_hud, bool do_rebuild, bool no_post, LLSnapshotModel::ESnapshotLayerType type, S32 max_size)
+ bool keep_window_aspect, bool is_texture, bool show_ui, bool show_hud, bool do_rebuild, bool no_post, bool show_balance, LLSnapshotModel::ESnapshotLayerType type, S32 max_size)
{
if (!raw)
{
@@ -5003,6 +5003,8 @@ bool LLViewerWindow::rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_hei
// If the user wants the UI, limit the output size to the available screen size
image_width = llmin(image_width, window_width);
image_height = llmin(image_height, window_height);
+
+ setBalanceVisible(show_balance);
}
S32 original_width = 0;
@@ -5080,11 +5082,13 @@ bool LLViewerWindow::rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_hei
}
else
{
+ setBalanceVisible(true);
return false;
}
if (raw->isBufferInvalid())
{
+ setBalanceVisible(true);
return false;
}
@@ -5260,6 +5264,7 @@ bool LLViewerWindow::rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_hei
{
send_agent_resume();
}
+ setBalanceVisible(true);
return ret;
}
@@ -5725,6 +5730,14 @@ void LLViewerWindow::setProgressCancelButtonVisible( bool b, const std::string&
}
}
+void LLViewerWindow::setBalanceVisible(bool visible)
+{
+ if (gStatusBar)
+ {
+ gStatusBar->setBalanceVisible(visible);
+ }
+}
+
LLProgressView *LLViewerWindow::getProgressView() const
{
return mProgressView;
diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h
index ac0dfa3fe4..d55c2d3817 100644
--- a/indra/newview/llviewerwindow.h
+++ b/indra/newview/llviewerwindow.h
@@ -364,9 +364,11 @@ public:
// snapshot functionality.
// perhaps some of this should move to llfloatershapshot? -MG
- bool saveSnapshot(const std::string& filename, S32 image_width, S32 image_height, bool show_ui = true, bool show_hud = true, bool do_rebuild = false, LLSnapshotModel::ESnapshotLayerType type = LLSnapshotModel::SNAPSHOT_TYPE_COLOR, LLSnapshotModel::ESnapshotFormat format = LLSnapshotModel::SNAPSHOT_FORMAT_BMP);
- bool rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_height, bool keep_window_aspect = true, bool is_texture = false,
- bool show_ui = true, bool show_hud = true, bool do_rebuild = false, bool no_post = false, LLSnapshotModel::ESnapshotLayerType type = LLSnapshotModel::SNAPSHOT_TYPE_COLOR, S32 max_size = MAX_SNAPSHOT_IMAGE_SIZE);
+ bool saveSnapshot(const std::string& filename, S32 image_width, S32 image_height, bool show_ui = true, bool show_hud = true, bool do_rebuild = false, bool show_balance = true,
+ LLSnapshotModel::ESnapshotLayerType type = LLSnapshotModel::SNAPSHOT_TYPE_COLOR, LLSnapshotModel::ESnapshotFormat format = LLSnapshotModel::SNAPSHOT_FORMAT_BMP);
+ bool rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_height, bool keep_window_aspect = true, bool is_texture = false,
+ bool show_ui = true, bool show_hud = true, bool do_rebuild = false, bool no_post = false, bool show_balance = true,
+ LLSnapshotModel::ESnapshotLayerType type = LLSnapshotModel::SNAPSHOT_TYPE_COLOR, S32 max_size = MAX_SNAPSHOT_IMAGE_SIZE);
bool simpleSnapshot(LLImageRaw *raw, S32 image_width, S32 image_height, const int num_render_passes);
@@ -462,6 +464,8 @@ public:
void calcDisplayScale();
static LLRect calcScaledRect(const LLRect & rect, const LLVector2& display_scale);
+ void setBalanceVisible(bool visible);
+
static std::string getLastSnapshotDir();
LLView* getFloaterSnapRegion() { return mFloaterSnapRegion; }
diff --git a/indra/newview/llviewerwindowlistener.cpp b/indra/newview/llviewerwindowlistener.cpp
index da7e18af5c..3119c31613 100644
--- a/indra/newview/llviewerwindowlistener.cpp
+++ b/indra/newview/llviewerwindowlistener.cpp
@@ -100,7 +100,7 @@ void LLViewerWindowListener::saveSnapshot(const LLSD& event) const
}
type = found->second;
}
- bool ok = mViewerWindow->saveSnapshot(event["filename"], width, height, showui, showhud, rebuild, type);
+ bool ok = mViewerWindow->saveSnapshot(event["filename"], width, height, showui, showhud, rebuild, true /*L$ Balance*/, type);
sendReply(LLSDMap("ok", ok), event);
}
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 3121a9ed8c..14ed202b0c 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -123,8 +123,8 @@ extern F32 ANIM_SPEED_MAX;
extern F32 ANIM_SPEED_MIN;
extern U32 JOINT_COUNT_REQUIRED_FOR_FULLRIG;
-const F32 MAX_HOVER_Z = 2.0;
-const F32 MIN_HOVER_Z = -2.0;
+const F32 MAX_HOVER_Z = 3.0;
+const F32 MIN_HOVER_Z = -3.0;
const F32 MIN_ATTACHMENT_COMPLEXITY = 0.f;
const F32 DEFAULT_MAX_ATTACHMENT_COMPLEXITY = 1.0e6f;
@@ -6437,6 +6437,16 @@ LLJoint *LLVOAvatar::getJoint( S32 joint_num )
return pJoint;
}
+void LLVOAvatar::initAllJoints()
+{
+ getJointAliases();
+ for (auto& alias : mJointAliasMap)
+ {
+ mJointMap[alias.first] = mRoot->findJoint(alias.second);
+ }
+ // ignore mScreen and mRoot
+}
+
//-----------------------------------------------------------------------------
// getRiggedMeshID
//
@@ -11025,8 +11035,7 @@ void LLVOAvatar::idleUpdateRenderComplexity()
bool autotune = LLPerfStats::tunables.userAutoTuneEnabled && !mIsControlAvatar && !isSelf();
if (autotune && !isDead())
{
- static LLCachedControl<F32> render_far_clip(gSavedSettings, "RenderFarClip", 64);
- F32 radius = render_far_clip * render_far_clip;
+ F32 radius = sRenderDistance * sRenderDistance;
bool is_nearby = true;
if ((dist_vec_squared(getPositionGlobal(), gAgent.getPositionGlobal()) > radius) &&
@@ -11058,8 +11067,7 @@ void LLVOAvatar::updateNearbyAvatarCount()
if (agent_update_timer.getElapsedTimeF32() > 1.0f)
{
S32 avs_nearby = 0;
- static LLCachedControl<F32> render_far_clip(gSavedSettings, "RenderFarClip", 64);
- F32 radius = render_far_clip * render_far_clip;
+ F32 radius = sRenderDistance * sRenderDistance;
for (LLCharacter* character : LLCharacter::sInstances)
{
LLVOAvatar* avatar = (LLVOAvatar*)character;
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index 6765b1fc5b..13d42fb02f 100644
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -204,6 +204,7 @@ public:
virtual LLJoint* getJoint(const std::string &name);
LLJoint* getJoint(S32 num);
+ void initAllJoints();
//if you KNOW joint_num is a valid animated joint index, use getSkeletonJoint for efficiency
inline LLJoint* getSkeletonJoint(S32 joint_num) { return mSkeleton[joint_num]; }
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index f23af5afa4..90ff4067f2 100644
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -225,6 +225,8 @@ void LLVOAvatarSelf::initInstance()
doPeriodically(update_avatar_rez_metrics, 5.0);
doPeriodically(boost::bind(&LLVOAvatarSelf::checkStuckAppearance, this), 30.0);
+ initAllJoints(); // mesh thread uses LLVOAvatarSelf as a joint source
+
mInitFlags |= 1<<2;
}
diff --git a/indra/newview/llvoicevivox.cpp b/indra/newview/llvoicevivox.cpp
index 7faef8cc41..14f0b52174 100644
--- a/indra/newview/llvoicevivox.cpp
+++ b/indra/newview/llvoicevivox.cpp
@@ -36,7 +36,7 @@
#include "llbufferstream.h"
#include "llfile.h"
#include "llmenugl.h"
-#ifdef LL_USESYSTEMLIBS
+#if 1
# include "expat.h"
#else
# include "expat/expat.h"
diff --git a/indra/newview/llvoicevivox.h b/indra/newview/llvoicevivox.h
index 3e0a237905..ca1258e05e 100644
--- a/indra/newview/llvoicevivox.h
+++ b/indra/newview/llvoicevivox.h
@@ -43,7 +43,7 @@ class LLVivoxProtocolParser;
#include "llmutelist.h"
#include <queue>
-#ifdef LL_USESYSTEMLIBS
+#if 1
# include "expat.h"
#else
# include "expat/expat.h"
diff --git a/indra/newview/llvoicewebrtc.cpp b/indra/newview/llvoicewebrtc.cpp
index 08fcec86ac..facda1d876 100644
--- a/indra/newview/llvoicewebrtc.cpp
+++ b/indra/newview/llvoicewebrtc.cpp
@@ -34,7 +34,7 @@
#include "llbufferstream.h"
#include "llfile.h"
#include "llmenugl.h"
-#ifdef LL_USESYSTEMLIBS
+#if 1
# include "expat.h"
#else
# include "expat/expat.h"
@@ -985,7 +985,10 @@ void LLWebRTCVoiceClient::updatePosition(void)
LLWebRTCVoiceClient::participantStatePtr_t participant = findParticipantByID("Estate", gAgentID);
if(participant)
{
- participant->mRegion = gAgent.getRegion()->getRegionID();
+ if (participant->mRegion != region->getRegionID()) {
+ participant->mRegion = region->getRegionID();
+ setMuteMic(mMuteMic);
+ }
}
}
}
@@ -3104,23 +3107,20 @@ LLVoiceWebRTCSpatialConnection::~LLVoiceWebRTCSpatialConnection()
void LLVoiceWebRTCSpatialConnection::setMuteMic(bool muted)
{
- if (mMuted != muted)
+ mMuted = muted;
+ if (mWebRTCAudioInterface)
{
- mMuted = muted;
- if (mWebRTCAudioInterface)
+ LLViewerRegion *regionp = gAgent.getRegion();
+ if (regionp && mRegionID == regionp->getRegionID())
{
- LLViewerRegion *regionp = gAgent.getRegion();
- if (regionp && mRegionID == regionp->getRegionID())
- {
- mWebRTCAudioInterface->setMute(muted);
- }
- else
- {
- // Always mute this agent with respect to neighboring regions.
- // Peers don't want to hear this agent from multiple regions
- // as that'll echo.
- mWebRTCAudioInterface->setMute(true);
- }
+ mWebRTCAudioInterface->setMute(muted);
+ }
+ else
+ {
+ // Always mute this agent with respect to neighboring regions.
+ // Peers don't want to hear this agent from multiple regions
+ // as that'll echo.
+ mWebRTCAudioInterface->setMute(true);
}
}
}
diff --git a/indra/newview/llvoicewebrtc.h b/indra/newview/llvoicewebrtc.h
index ff82d2739d..946a80e874 100644
--- a/indra/newview/llvoicewebrtc.h
+++ b/indra/newview/llvoicewebrtc.h
@@ -43,7 +43,7 @@ class LLWebRTCProtocolParser;
#include <queue>
#include "boost/json.hpp"
-#ifdef LL_USESYSTEMLIBS
+#if 1
# include "expat.h"
#else
# include "expat/expat.h"
diff --git a/indra/newview/llvosurfacepatch.cpp b/indra/newview/llvosurfacepatch.cpp
index 294d36b0a9..bc326a74a8 100644
--- a/indra/newview/llvosurfacepatch.cpp
+++ b/indra/newview/llvosurfacepatch.cpp
@@ -245,6 +245,7 @@ bool LLVOSurfacePatch::updateLOD()
void LLVOSurfacePatch::getTerrainGeometry(LLStrider<LLVector3> &verticesp,
LLStrider<LLVector3> &normalsp,
+ LLStrider<LLVector2> &texCoords0p,
LLStrider<LLVector2> &texCoords1p,
LLStrider<U16> &indicesp)
{
@@ -259,18 +260,21 @@ void LLVOSurfacePatch::getTerrainGeometry(LLStrider<LLVector3> &verticesp,
updateMainGeometry(facep,
verticesp,
normalsp,
+ texCoords0p,
texCoords1p,
indicesp,
index_offset);
updateNorthGeometry(facep,
verticesp,
normalsp,
+ texCoords0p,
texCoords1p,
indicesp,
index_offset);
updateEastGeometry(facep,
verticesp,
normalsp,
+ texCoords0p,
texCoords1p,
indicesp,
index_offset);
@@ -279,6 +283,7 @@ void LLVOSurfacePatch::getTerrainGeometry(LLStrider<LLVector3> &verticesp,
void LLVOSurfacePatch::updateMainGeometry(LLFace *facep,
LLStrider<LLVector3> &verticesp,
LLStrider<LLVector3> &normalsp,
+ LLStrider<LLVector2> &texCoords0p,
LLStrider<LLVector2> &texCoords1p,
LLStrider<U16> &indicesp,
U32 &index_offset)
@@ -317,9 +322,10 @@ void LLVOSurfacePatch::updateMainGeometry(LLFace *facep,
{
x = i * render_stride;
y = j * render_stride;
- mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords1p.get());
+ mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords0p.get(), texCoords1p.get());
verticesp++;
normalsp++;
+ texCoords0p++;
texCoords1p++;
}
}
@@ -381,6 +387,7 @@ void LLVOSurfacePatch::updateMainGeometry(LLFace *facep,
void LLVOSurfacePatch::updateNorthGeometry(LLFace *facep,
LLStrider<LLVector3> &verticesp,
LLStrider<LLVector3> &normalsp,
+ LLStrider<LLVector2> &texCoords0p,
LLStrider<LLVector2> &texCoords1p,
LLStrider<U16> &indicesp,
U32 &index_offset)
@@ -414,9 +421,10 @@ void LLVOSurfacePatch::updateNorthGeometry(LLFace *facep,
x = i * render_stride;
y = 16 - render_stride;
- mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords1p.get());
+ mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords0p.get(), texCoords1p.get());
verticesp++;
normalsp++;
+ texCoords0p++;
texCoords1p++;
}
@@ -425,9 +433,10 @@ void LLVOSurfacePatch::updateNorthGeometry(LLFace *facep,
{
x = i * render_stride;
y = 16;
- mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords1p.get());
+ mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords0p.get(), texCoords1p.get());
verticesp++;
normalsp++;
+ texCoords0p++;
texCoords1p++;
}
@@ -460,9 +469,10 @@ void LLVOSurfacePatch::updateNorthGeometry(LLFace *facep,
x = i * render_stride;
y = 16 - render_stride;
- mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords1p.get());
+ mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords0p.get(), texCoords1p.get());
verticesp++;
normalsp++;
+ texCoords0p++;
texCoords1p++;
}
@@ -472,9 +482,10 @@ void LLVOSurfacePatch::updateNorthGeometry(LLFace *facep,
x = i * render_stride;
y = 16;
- mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords1p.get());
+ mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords0p.get(), texCoords1p.get());
verticesp++;
normalsp++;
+ texCoords0p++;
texCoords1p++;
}
@@ -514,9 +525,10 @@ void LLVOSurfacePatch::updateNorthGeometry(LLFace *facep,
x = i * north_stride;
y = 16 - render_stride;
- mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords1p.get());
+ mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords0p.get(), texCoords1p.get());
verticesp++;
normalsp++;
+ texCoords0p++;
texCoords1p++;
}
@@ -526,9 +538,10 @@ void LLVOSurfacePatch::updateNorthGeometry(LLFace *facep,
x = i * north_stride;
y = 16;
- mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords1p.get());
+ mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords0p.get(), texCoords1p.get());
verticesp++;
normalsp++;
+ texCoords0p++;
texCoords1p++;
}
@@ -564,6 +577,7 @@ void LLVOSurfacePatch::updateNorthGeometry(LLFace *facep,
void LLVOSurfacePatch::updateEastGeometry(LLFace *facep,
LLStrider<LLVector3> &verticesp,
LLStrider<LLVector3> &normalsp,
+ LLStrider<LLVector2> &texCoords0p,
LLStrider<LLVector2> &texCoords1p,
LLStrider<U16> &indicesp,
U32 &index_offset)
@@ -592,9 +606,10 @@ void LLVOSurfacePatch::updateEastGeometry(LLFace *facep,
x = 16 - render_stride;
y = i * render_stride;
- mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords1p.get());
+ mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords0p.get(), texCoords1p.get());
verticesp++;
normalsp++;
+ texCoords0p++;
texCoords1p++;
}
@@ -603,9 +618,10 @@ void LLVOSurfacePatch::updateEastGeometry(LLFace *facep,
{
x = 16;
y = i * render_stride;
- mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords1p.get());
+ mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords0p.get(), texCoords1p.get());
verticesp++;
normalsp++;
+ texCoords0p++;
texCoords1p++;
}
@@ -638,9 +654,10 @@ void LLVOSurfacePatch::updateEastGeometry(LLFace *facep,
x = 16 - render_stride;
y = i * render_stride;
- mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords1p.get());
+ mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords0p.get(), texCoords1p.get());
verticesp++;
normalsp++;
+ texCoords0p++;
texCoords1p++;
}
// Iterate through the east patch's points
@@ -649,9 +666,10 @@ void LLVOSurfacePatch::updateEastGeometry(LLFace *facep,
x = 16;
y = i * render_stride;
- mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords1p.get());
+ mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords0p.get(), texCoords1p.get());
verticesp++;
normalsp++;
+ texCoords0p++;
texCoords1p++;
}
@@ -690,9 +708,10 @@ void LLVOSurfacePatch::updateEastGeometry(LLFace *facep,
x = 16 - render_stride;
y = i * east_stride;
- mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords1p.get());
+ mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords0p.get(), texCoords1p.get());
verticesp++;
normalsp++;
+ texCoords0p++;
texCoords1p++;
}
// Iterate through the east patch's points
@@ -701,9 +720,10 @@ void LLVOSurfacePatch::updateEastGeometry(LLFace *facep,
x = 16;
y = i * east_stride;
- mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords1p.get());
+ mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords0p.get(), texCoords1p.get());
verticesp++;
normalsp++;
+ texCoords0p++;
texCoords1p++;
}
@@ -1022,12 +1042,14 @@ void LLTerrainPartition::getGeometry(LLSpatialGroup* group)
LLStrider<LLVector3> vertices_start;
LLStrider<LLVector3> normals_start;
LLStrider<LLVector4a> tangents_start;
+ LLStrider<LLVector2> texcoords0_start; // ownership overlay
LLStrider<LLVector2> texcoords2_start;
LLStrider<U16> indices_start;
llassert_always(buffer->getVertexStrider(vertices_start));
llassert_always(buffer->getNormalStrider(normals_start));
llassert_always(buffer->getTangentStrider(tangents_start));
+ llassert_always(buffer->getTexCoord0Strider(texcoords0_start));
llassert_always(buffer->getTexCoord1Strider(texcoords2_start));
llassert_always(buffer->getIndexStrider(indices_start));
@@ -1037,6 +1059,7 @@ void LLTerrainPartition::getGeometry(LLSpatialGroup* group)
{
LLStrider<LLVector3> vertices = vertices_start;
LLStrider<LLVector3> normals = normals_start;
+ LLStrider<LLVector2> texcoords0 = texcoords0_start;
LLStrider<LLVector2> texcoords2 = texcoords2_start;
LLStrider<U16> indices = indices_start;
@@ -1049,7 +1072,7 @@ void LLTerrainPartition::getGeometry(LLSpatialGroup* group)
facep->setVertexBuffer(buffer);
LLVOSurfacePatch* patchp = (LLVOSurfacePatch*) facep->getViewerObject();
- patchp->getTerrainGeometry(vertices, normals, texcoords2, indices);
+ patchp->getTerrainGeometry(vertices, normals, texcoords0, texcoords2, indices);
indices_index += facep->getIndicesCount();
index_offset += facep->getGeomCount();
diff --git a/indra/newview/llvosurfacepatch.h b/indra/newview/llvosurfacepatch.h
index af5f05774b..c93a58d2d9 100644
--- a/indra/newview/llvosurfacepatch.h
+++ b/indra/newview/llvosurfacepatch.h
@@ -57,6 +57,7 @@ public:
/*virtual*/ void updateFaceSize(S32 idx);
void getTerrainGeometry(LLStrider<LLVector3> &verticesp,
LLStrider<LLVector3> &normalsp,
+ LLStrider<LLVector2> &texCoords0p,
LLStrider<LLVector2> &texCoords1p,
LLStrider<U16> &indicesp);
@@ -109,18 +110,21 @@ protected:
void updateMainGeometry(LLFace *facep,
LLStrider<LLVector3> &verticesp,
LLStrider<LLVector3> &normalsp,
+ LLStrider<LLVector2> &texCoords0p,
LLStrider<LLVector2> &texCoords1p,
LLStrider<U16> &indicesp,
U32 &index_offset);
void updateNorthGeometry(LLFace *facep,
LLStrider<LLVector3> &verticesp,
LLStrider<LLVector3> &normalsp,
+ LLStrider<LLVector2> &texCoords0p,
LLStrider<LLVector2> &texCoords1p,
LLStrider<U16> &indicesp,
U32 &index_offset);
void updateEastGeometry(LLFace *facep,
LLStrider<LLVector3> &verticesp,
LLStrider<LLVector3> &normalsp,
+ LLStrider<LLVector2> &texCoords0p,
LLStrider<LLVector2> &texCoords1p,
LLStrider<U16> &indicesp,
U32 &index_offset);
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index 4867a5c279..e10a2fc8e2 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -352,8 +352,11 @@ U32 LLVOVolume::processUpdateMessage(LLMessageSystem *mesgsys,
if (isSculpted())
{
LLSculptParams *sculpt_params = (LLSculptParams *)getParameterEntry(LLNetworkData::PARAMS_SCULPT);
- sculpt_id = sculpt_params->getSculptTexture();
- sculpt_type = sculpt_params->getSculptType();
+ if (sculpt_params)
+ {
+ sculpt_id = sculpt_params->getSculptTexture();
+ sculpt_type = sculpt_params->getSculptType();
+ }
LL_DEBUGS("ObjectUpdate") << "uuid " << mID << " set sculpt_id " << sculpt_id << LL_ENDL;
}
@@ -860,8 +863,11 @@ void LLVOVolume::updateTextureVirtualSize(bool forced)
// animated faces get moved to a smaller partition to reduce
// side-effects of their updates (see shrinkWrap in
// LLVOVolume::animateTextures).
- mDrawable->getSpatialGroup()->dirtyGeom();
- gPipeline.markRebuild(mDrawable->getSpatialGroup());
+ if (mDrawable->getSpatialGroup())
+ {
+ mDrawable->getSpatialGroup()->dirtyGeom();
+ gPipeline.markRebuild(mDrawable->getSpatialGroup());
+ }
}
}
@@ -1188,12 +1194,15 @@ void LLVOVolume::updateSculptTexture()
if (isSculpted() && !isMesh())
{
LLSculptParams *sculpt_params = (LLSculptParams *)getParameterEntry(LLNetworkData::PARAMS_SCULPT);
- LLUUID id = sculpt_params->getSculptTexture();
- if (id.notNull())
+ if (sculpt_params)
{
- mSculptTexture = LLViewerTextureManager::getFetchedTexture(id, FTT_DEFAULT, true, LLGLTexture::BOOST_SCULPTED, LLViewerTexture::LOD_TEXTURE);
- mSculptTexture->forceToSaveRawImage(0, F32_MAX);
- mSculptTexture->setKnownDrawSize(256, 256);
+ LLUUID id = sculpt_params->getSculptTexture();
+ if (id.notNull())
+ {
+ mSculptTexture = LLViewerTextureManager::getFetchedTexture(id, FTT_DEFAULT, true, LLGLTexture::BOOST_SCULPTED, LLViewerTexture::LOD_TEXTURE);
+ mSculptTexture->forceToSaveRawImage(0, F32_MAX);
+ mSculptTexture->setKnownDrawSize(256, 256);
+ }
}
mSkinInfoUnavaliable = false;
@@ -3580,12 +3589,15 @@ bool LLVOVolume::isMesh() const
if (isSculpted())
{
LLSculptParams *sculpt_params = (LLSculptParams *)getParameterEntry(LLNetworkData::PARAMS_SCULPT);
- U8 sculpt_type = sculpt_params->getSculptType();
-
- if ((sculpt_type & LL_SCULPT_TYPE_MASK) == LL_SCULPT_TYPE_MESH)
- // mesh is a mesh
+ if (sculpt_params)
{
- return true;
+ U8 sculpt_type = sculpt_params->getSculptType();
+
+ if ((sculpt_type & LL_SCULPT_TYPE_MASK) == LL_SCULPT_TYPE_MESH)
+ // mesh is a mesh
+ {
+ return true;
+ }
}
}
diff --git a/indra/newview/llwearableitemslist.cpp b/indra/newview/llwearableitemslist.cpp
index 8b0492ceed..5fb22184c3 100644
--- a/indra/newview/llwearableitemslist.cpp
+++ b/indra/newview/llwearableitemslist.cpp
@@ -33,7 +33,6 @@
#include "llagentwearables.h"
#include "llappearancemgr.h"
-#include "llinventoryfunctions.h"
#include "llinventoryicon.h"
#include "llgesturemgr.h"
#include "lltransutil.h"
@@ -41,15 +40,6 @@
#include "llviewermenu.h"
#include "llvoavatarself.h"
-class LLFindOutfitItems : public LLInventoryCollectFunctor
-{
-public:
- LLFindOutfitItems() {}
- virtual ~LLFindOutfitItems() {}
- virtual bool operator()(LLInventoryCategory* cat,
- LLInventoryItem* item);
-};
-
bool LLFindOutfitItems::operator()(LLInventoryCategory* cat,
LLInventoryItem* item)
{
diff --git a/indra/newview/llwearableitemslist.h b/indra/newview/llwearableitemslist.h
index 7ba64c90da..915a557239 100644
--- a/indra/newview/llwearableitemslist.h
+++ b/indra/newview/llwearableitemslist.h
@@ -32,6 +32,7 @@
#include "llsingleton.h"
// newview
+#include "llinventoryfunctions.h"
#include "llinventoryitemslist.h"
#include "llinventorylistitem.h"
#include "lllistcontextmenu.h"
@@ -509,4 +510,12 @@ protected:
LLWearableType::EType mMenuWearableType;
};
+class LLFindOutfitItems : public LLInventoryCollectFunctor
+{
+public:
+ LLFindOutfitItems() {}
+ virtual ~LLFindOutfitItems() {}
+ virtual bool operator()(LLInventoryCategory* cat, LLInventoryItem* item);
+};
+
#endif //LL_LLWEARABLEITEMSLIST_H
diff --git a/indra/newview/llworld.cpp b/indra/newview/llworld.cpp
index 899733ccc3..47e1815bc2 100644
--- a/indra/newview/llworld.cpp
+++ b/indra/newview/llworld.cpp
@@ -1372,10 +1372,8 @@ void LLWorld::getAvatars(uuid_vec_t* avatar_ids, std::vector<LLVector3d>* positi
F32 LLWorld::getNearbyAvatarsAndMaxGPUTime(std::vector<LLVOAvatar*> &valid_nearby_avs)
{
- static LLCachedControl<F32> render_far_clip(gSavedSettings, "RenderFarClip", 64);
-
F32 nearby_max_complexity = 0;
- F32 radius = render_far_clip * render_far_clip;
+ F32 radius = LLVOAvatar::sRenderDistance * LLVOAvatar::sRenderDistance;
for (LLCharacter* character : LLCharacter::sInstances)
{
diff --git a/indra/newview/res-sdl/cross.BMP b/indra/newview/res-sdl/cross.BMP
index 0b4672d4d6..96ed7a4d60 100644
--- a/indra/newview/res-sdl/cross.BMP
+++ b/indra/newview/res-sdl/cross.BMP
Binary files differ
diff --git a/indra/newview/res-sdl/lltoolcamera.BMP b/indra/newview/res-sdl/lltoolcamera.BMP
index c961d7a49c..f281181091 100644
--- a/indra/newview/res-sdl/lltoolcamera.BMP
+++ b/indra/newview/res-sdl/lltoolcamera.BMP
Binary files differ
diff --git a/indra/newview/res-sdl/lltoolcreate.BMP b/indra/newview/res-sdl/lltoolcreate.BMP
index 08a4a9322d..4b7a144143 100644
--- a/indra/newview/res-sdl/lltoolcreate.BMP
+++ b/indra/newview/res-sdl/lltoolcreate.BMP
Binary files differ
diff --git a/indra/newview/res-sdl/lltoolpipette.BMP b/indra/newview/res-sdl/lltoolpipette.BMP
index 2d27118289..6580ab0e68 100644
--- a/indra/newview/res-sdl/lltoolpipette.BMP
+++ b/indra/newview/res-sdl/lltoolpipette.BMP
Binary files differ
diff --git a/indra/newview/res-sdl/lltoolrotate.BMP b/indra/newview/res-sdl/lltoolrotate.BMP
index 6115984c62..4d29e99177 100644
--- a/indra/newview/res-sdl/lltoolrotate.BMP
+++ b/indra/newview/res-sdl/lltoolrotate.BMP
Binary files differ
diff --git a/indra/newview/res-sdl/toolmediaopen.BMP b/indra/newview/res-sdl/toolmediaopen.BMP
index 670f07235e..5d70cb0463 100644
--- a/indra/newview/res-sdl/toolmediaopen.BMP
+++ b/indra/newview/res-sdl/toolmediaopen.BMP
Binary files differ
diff --git a/indra/newview/res-sdl/toolopen.BMP b/indra/newview/res-sdl/toolopen.BMP
index ae4908fd35..3e26ceec28 100644
--- a/indra/newview/res-sdl/toolopen.BMP
+++ b/indra/newview/res-sdl/toolopen.BMP
Binary files differ
diff --git a/indra/newview/res-sdl/toolplay.BMP b/indra/newview/res-sdl/toolplay.BMP
index d0e14838e9..7edf03d86a 100644
--- a/indra/newview/res-sdl/toolplay.BMP
+++ b/indra/newview/res-sdl/toolplay.BMP
Binary files differ
diff --git a/indra/newview/rlvactions.cpp b/indra/newview/rlvactions.cpp
new file mode 100644
index 0000000000..110beeafc0
--- /dev/null
+++ b/indra/newview/rlvactions.cpp
@@ -0,0 +1,42 @@
+/**
+ * @file rlvactions.cpp
+ * @author Kitty Barnett
+ * @brief RLVa public facing helper class to easily make RLV checks
+ *
+ * $LicenseInfo:firstyear=2024&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2024, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "rlvactions.h"
+#include "rlvhandler.h"
+
+// ============================================================================
+// Helper functions
+//
+
+bool RlvActions::isRlvEnabled()
+{
+ return RlvHandler::isEnabled();
+}
+
+// ============================================================================
diff --git a/indra/newview/rlvactions.h b/indra/newview/rlvactions.h
new file mode 100644
index 0000000000..cb0df95e37
--- /dev/null
+++ b/indra/newview/rlvactions.h
@@ -0,0 +1,46 @@
+/**
+ * @file rlvactions.h
+ * @author Kitty Barnett
+ * @brief RLVa public facing helper class to easily make RLV checks
+ *
+ * $LicenseInfo:firstyear=2024&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2024, 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$
+ */
+
+#pragma once
+
+// ============================================================================
+// RlvActions - developer-friendly non-RLVa code facing class, use in lieu of RlvHandler whenever possible
+//
+
+class RlvActions
+{
+ // ================
+ // Helper functions
+ // ================
+public:
+ /*
+ * Convenience function to check if RLVa is enabled without having to include rlvhandler.h
+ */
+ static bool isRlvEnabled();
+};
+
+// ============================================================================
diff --git a/indra/newview/rlvcommon.cpp b/indra/newview/rlvcommon.cpp
new file mode 100644
index 0000000000..4140659715
--- /dev/null
+++ b/indra/newview/rlvcommon.cpp
@@ -0,0 +1,134 @@
+/**
+ * @file rlvcommon.h
+ * @author Kitty Barnett
+ * @brief RLVa helper functions and constants used throughout the viewer
+ *
+ * $LicenseInfo:firstyear=2024&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2024, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "llagent.h"
+#include "llchat.h"
+#include "lldbstrings.h"
+#include "llversioninfo.h"
+#include "llviewermenu.h"
+#include "llviewerstats.h"
+#include "message.h"
+#include <boost/algorithm/string.hpp>
+
+#include "rlvcommon.h"
+
+#include "llviewercontrol.h"
+#include "rlvhandler.h"
+
+using namespace Rlv;
+
+// ============================================================================
+// RlvStrings
+//
+
+std::string Strings::getVersion(bool wants_legacy)
+{
+ return llformat("%s viewer v%d.%d.%d (RLVa %d.%d.%d)",
+ !wants_legacy ? "RestrainedLove" : "RestrainedLife",
+ SpecVersion::Major, SpecVersion::Minor, SpecVersion::Patch,
+ ImplVersion::Major, ImplVersion::Minor, ImplVersion::Patch);
+}
+
+std::string Strings::getVersionAbout()
+{
+ return llformat("RLV v%d.%d.%d / RLVa v%d.%d.%d.%d",
+ SpecVersion::Major, SpecVersion::Minor, SpecVersion::Patch,
+ ImplVersion::Major, ImplVersion::Minor, ImplVersion::Patch, LLVersionInfo::instance().getBuild());
+}
+
+std::string Strings::getVersionNum()
+{
+ return llformat("%d%02d%02d%02d",
+ SpecVersion::Major, SpecVersion::Minor, SpecVersion::Patch, SpecVersion::Build);
+}
+
+std::string Strings::getVersionImplNum()
+{
+ return llformat("%d%02d%02d%02d",
+ ImplVersion::Major, ImplVersion::Minor, ImplVersion::Patch, ImplVersion::ImplId);
+}
+
+// ============================================================================
+// RlvUtil
+//
+
+void Util::menuToggleVisible()
+{
+ bool isTopLevel = gSavedSettings.getBOOL(Settings::TopLevelMenu);
+ bool isRlvEnabled = RlvHandler::isEnabled();
+
+ LLMenuGL* menuRLVaMain = gMenuBarView->findChildMenuByName("RLVa Main", false);
+ LLMenuGL* menuAdvanced = gMenuBarView->findChildMenuByName("Advanced", false);
+ LLMenuGL* menuRLVaEmbed= menuAdvanced->findChildMenuByName("RLVa Embedded", false);
+
+ gMenuBarView->setItemVisible("RLVa Main", isRlvEnabled && isTopLevel);
+ menuAdvanced->setItemVisible("RLVa Embedded", isRlvEnabled && !isTopLevel);
+
+ if ( isRlvEnabled && menuRLVaMain && menuRLVaEmbed &&
+ ( (isTopLevel && 1 == menuRLVaMain->getItemCount()) || (!isTopLevel && 1 == menuRLVaEmbed->getItemCount())) )
+ {
+ LLMenuGL* menuFrom = isTopLevel ? menuRLVaEmbed : menuRLVaMain;
+ LLMenuGL* menuTo = isTopLevel ? menuRLVaMain : menuRLVaEmbed;
+ while (LLMenuItemGL* pItem = menuFrom->getItem(1))
+ {
+ menuFrom->removeChild(pItem);
+ menuTo->addChild(pItem);
+ pItem->updateBranchParent(menuTo);
+ }
+ }
+}
+
+bool Util::parseStringList(const std::string& strInput, std::vector<std::string>& optionList, std::string_view strSeparator)
+{
+ if (!strInput.empty())
+ boost::split(optionList, strInput, boost::is_any_of(strSeparator));
+ return !optionList.empty();
+}
+
+bool Util::sendChatReply(S32 nChannel, const std::string& strUTF8Text)
+{
+ if (!isValidReplyChannel(nChannel))
+ return false;
+
+ // Copy/paste from send_chat_from_viewer()
+ gMessageSystem->newMessageFast(_PREHASH_ChatFromViewer);
+ gMessageSystem->nextBlockFast(_PREHASH_AgentData);
+ gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
+ gMessageSystem->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
+ gMessageSystem->nextBlockFast(_PREHASH_ChatData);
+ gMessageSystem->addStringFast(_PREHASH_Message, utf8str_truncate(strUTF8Text, MAX_MSG_STR_LEN));
+ gMessageSystem->addU8Fast(_PREHASH_Type, CHAT_TYPE_SHOUT);
+ gMessageSystem->addS32("Channel", nChannel);
+ gAgent.sendReliableMessage();
+ add(LLStatViewer::CHAT_COUNT, 1);
+
+ return true;
+}
+
+// ============================================================================
diff --git a/indra/newview/rlvcommon.h b/indra/newview/rlvcommon.h
new file mode 100644
index 0000000000..6f1bbbbdc6
--- /dev/null
+++ b/indra/newview/rlvcommon.h
@@ -0,0 +1,72 @@
+/**
+ * @file rlvcommon.h
+ * @author Kitty Barnett
+ * @brief RLVa helper functions and constants used throughout the viewer
+ *
+ * $LicenseInfo:firstyear=2024&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2024, 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$
+ */
+
+#pragma once
+
+#include "rlvdefines.h"
+
+namespace Rlv
+{
+ // ============================================================================
+ // RlvStrings
+ //
+
+ class Strings
+ {
+ public:
+ static std::string getVersion(bool wants_legacy);
+ static std::string getVersionAbout();
+ static std::string getVersionImplNum();
+ static std::string getVersionNum();
+ };
+
+ // ============================================================================
+ // RlvUtil
+ //
+
+ namespace Util
+ {
+ bool isValidReplyChannel(S32 nChannel, bool isLoopback = false);
+ void menuToggleVisible();
+ bool parseStringList(const std::string& strInput, std::vector<std::string>& optionList, std::string_view strSeparator = Constants::OptionSeparator);
+ bool sendChatReply(S32 nChannel, const std::string& strUTF8Text);
+ bool sendChatReply(const std::string& strChannel, const std::string& strUTF8Text);
+ };
+
+ inline bool Util::isValidReplyChannel(S32 nChannel, bool isLoopback)
+ {
+ return (nChannel > (!isLoopback ? 0 : -1)) && (CHAT_CHANNEL_DEBUG != nChannel);
+ }
+
+ inline bool Util::sendChatReply(const std::string& strChannel, const std::string& strUTF8Text)
+ {
+ S32 nChannel;
+ return LLStringUtil::convertToS32(strChannel, nChannel) ? sendChatReply(nChannel, strUTF8Text) : false;
+ }
+
+ // ============================================================================
+}
diff --git a/indra/newview/rlvdefines.h b/indra/newview/rlvdefines.h
new file mode 100644
index 0000000000..e39328fdd6
--- /dev/null
+++ b/indra/newview/rlvdefines.h
@@ -0,0 +1,194 @@
+/**
+ * @file rlvdefines.h
+ * @author Kitty Barnett
+ * @brief RLVa common defines, constants and enums
+ *
+ * $LicenseInfo:firstyear=2024&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2024, 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$
+ */
+
+#pragma once
+
+// ============================================================================
+// Defines
+//
+
+// Defining these makes it easier if we ever need to change our tag
+#define RLV_WARNS LL_WARNS("RLV")
+#define RLV_INFOS LL_INFOS("RLV")
+#define RLV_DEBUGS LL_DEBUGS("RLV")
+#define RLV_ENDL LL_ENDL
+#define RLV_VERIFY(f) (f)
+
+#if LL_RELEASE_WITH_DEBUG_INFO || LL_DEBUG
+ // Make sure we halt execution on errors
+ #define RLV_ERRS LL_ERRS("RLV")
+ // Keep our asserts separate from LL's
+ #define RLV_ASSERT(f) if (!(f)) { RLV_ERRS << "ASSERT (" << #f << ")" << RLV_ENDL; }
+ #define RLV_ASSERT_DBG(f) RLV_ASSERT(f)
+#else
+ // Don't halt execution on errors in release
+ #define RLV_ERRS LL_WARNS("RLV")
+ // We don't want to check assertions in release builds
+ #ifdef RLV_DEBUG
+ #define RLV_ASSERT(f) RLV_VERIFY(f)
+ #define RLV_ASSERT_DBG(f)
+ #else
+ #define RLV_ASSERT(f)
+ #define RLV_ASSERT_DBG(f)
+ #endif // RLV_DEBUG
+#endif // LL_RELEASE_WITH_DEBUG_INFO || LL_DEBUG
+
+namespace Rlv
+{
+ // Version of the specification we report
+ namespace SpecVersion {
+ constexpr S32 Major = 4;
+ constexpr S32 Minor = 0;
+ constexpr S32 Patch = 0;
+ constexpr S32 Build = 0;
+ };
+
+ // RLVa implementation version
+ namespace ImplVersion {
+ constexpr S32 Major = 3;
+ constexpr S32 Minor = 0;
+ constexpr S32 Patch = 0;
+ constexpr S32 ImplId = 13;
+ };
+
+ namespace Constants
+ {
+ constexpr char CmdPrefix = '@';
+ constexpr char ConsolePrompt[] = "> ";
+ constexpr std::string_view OptionSeparator = ";";
+ }
+}
+
+// ============================================================================
+// Enumeration declarations
+//
+
+namespace Rlv
+{
+ enum class EBehaviour {
+ Version = 0,
+ VersionNew,
+ VersionNum,
+ GetCommand,
+
+ Count,
+ Unknown,
+ };
+
+ enum class EBehaviourOptionType
+ {
+ EmptyOrException, // Behaviour takes no parameters
+ Exception, // Behaviour requires an exception as a parameter
+ NoneOrException, // Behaviour takes either no parameters or an exception
+ };
+
+ enum class EParamType {
+ Unknown = 0x00,
+ Add = 0x01, // <param> == "n"|"add"
+ Remove = 0x02, // <param> == "y"|"rem"
+ Force = 0x04, // <param> == "force"
+ Reply = 0x08, // <param> == <number>
+ Clear = 0x10,
+ AddRem = Add | Remove
+ };
+
+ enum class ECmdRet {
+ Unknown = 0x0000, // Unknown error (should only be used internally)
+ Retained, // Command was retained
+ Succeeded = 0x0100, // Command executed successfully
+ SuccessUnset, // Command executed successfully (RLV_TYPE_REMOVE for an unrestricted behaviour)
+ SuccessDuplicate, // Command executed successfully (RLV_TYPE_ADD for an already restricted behaviour)
+ SuccessDeprecated, // Command executed successfully but has been marked as deprecated
+ SuccessDelayed, // Command parsed valid but will execute at a later time
+ Failed = 0x0200, // Command failed (general failure)
+ FailedSyntax, // Command failed (syntax error)
+ FailedOption, // Command failed (invalid option)
+ FailedParam, // Command failed (invalid param)
+ FailedLock, // Command failed (command is locked by another object)
+ FailedDisabled, // Command failed (command disabled by user)
+ FailedUnknown, // Command failed (unknown command)
+ FailedNoSharedRoot, // Command failed (missing #RLV)
+ FailedDeprecated, // Command failed (deprecated and no longer supported)
+ FailedNoBehaviour, // Command failed (force modifier on an object with no active restrictions)
+ FailedUnheldBehaviour, // Command failed (local modifier on an object that doesn't hold the base behaviour)
+ FailedBlocked, // Command failed (object is blocked)
+ FailedThrottled, // Command failed (throttled)
+ FailedNoProcessor // Command doesn't have a template processor define (legacy code)
+ };
+
+ enum class EExceptionCheck
+ {
+ Permissive, // Exception can be set by any object
+ Strict, // Exception must be set by all objects holding the restriction
+ Default, // Permissive or strict will be determined by currently enforced restrictions
+ };
+
+ // Replace&remove in c++23
+ template <typename E>
+ constexpr std::enable_if_t<std::is_enum_v<E> && !std::is_convertible_v<E, int>, std::underlying_type_t<E>> to_underlying(E e) noexcept
+ {
+ return static_cast<std::underlying_type_t<E>>(e);
+ }
+
+ template <typename E>
+ constexpr std::enable_if_t<std::is_enum_v<E> && !std::is_convertible_v<E, int>, bool> has_flag(E value, E flag) noexcept
+ {
+ return (to_underlying(value) & to_underlying(flag)) != 0;
+ }
+
+ constexpr bool isReturnCodeSuccess(ECmdRet eRet)
+ {
+ return (to_underlying(eRet) & to_underlying(ECmdRet::Succeeded)) == to_underlying(ECmdRet::Succeeded);
+ }
+
+ constexpr bool isReturnCodeFailed(ECmdRet eRet)
+ {
+ return (to_underlying(eRet) & to_underlying(ECmdRet::Failed)) == to_underlying(ECmdRet::Failed);
+ }
+}
+
+// ============================================================================
+// Settings
+//
+
+namespace Rlv
+{
+ namespace Settings
+ {
+ constexpr char Main[] = "RestrainedLove";
+ constexpr char Debug[] = "RestrainedLoveDebug";
+
+ constexpr char DebugHideUnsetDup[] = "RLVaDebugHideUnsetDuplicate";
+ constexpr char EnableExperimentalCommands[] = "RLVaExperimentalCommands";
+ constexpr char EnableIMQuery[] = "RLVaEnableIMQuery";
+ constexpr char EnableTempAttach[] = "RLVaEnableTemporaryAttachments";
+ constexpr char TopLevelMenu[] = "RLVaTopLevelMenu";
+ };
+
+};
+
+// ============================================================================
diff --git a/indra/newview/rlvfloaters.cpp b/indra/newview/rlvfloaters.cpp
new file mode 100644
index 0000000000..8a074fd14d
--- /dev/null
+++ b/indra/newview/rlvfloaters.cpp
@@ -0,0 +1,122 @@
+/**
+ * @file rlvfloaters.cpp
+ * @author Kitty Barnett
+ * @brief RLVa floaters class implementations
+ *
+ * $LicenseInfo:firstyear=2024&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2024, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "llagentdata.h"
+#include "llchatentry.h"
+#include "lltexteditor.h"
+#include "lltrans.h"
+#include "llvoavatarself.h"
+
+#include "rlvfloaters.h"
+#include "rlvhandler.h"
+
+using namespace Rlv;
+
+// ============================================================================
+// FloaterConsole
+//
+
+bool FloaterConsole::postBuild()
+{
+ mInputEdit = getChild<LLChatEntry>("console_input");
+ mInputEdit->setCommitCallback(std::bind(&FloaterConsole::onInput, this));
+ mInputEdit->setTextExpandedCallback(std::bind(&FloaterConsole::reshapeLayoutPanel, this));
+ mInputEdit->setFocus(true);
+ mInputEdit->setCommitOnFocusLost(false);
+
+ mInputPanel = getChild<LLLayoutPanel>("input_panel");
+ mInputEditPad = mInputPanel->getRect().getHeight() - mInputEdit->getRect().getHeight();
+
+ mOutputText = getChild<LLTextEditor>("console_output");
+ mOutputText->appendText(Constants::ConsolePrompt, false);
+
+ if (RlvHandler::isEnabled())
+ {
+ mCommandOutputConn = RlvHandler::instance().setCommandOutputCallback([this](const RlvCommand& rlvCmd, S32, const std::string strText)
+ {
+ if (rlvCmd.getObjectID() == gAgentID)
+ {
+ mOutputText->appendText(rlvCmd.getBehaviour() + ": ", true);
+ mOutputText->appendText(strText, false);
+ }
+ });
+ }
+
+ return true;
+}
+
+void FloaterConsole::onClose(bool fQuitting)
+{
+ if (RlvHandler::isEnabled())
+ {
+ RlvHandler::instance().processCommand(gAgentID, "clear", true);
+ }
+}
+
+void FloaterConsole::onInput()
+{
+ if (!isAgentAvatarValid())
+ {
+ return;
+ }
+
+ std::string strText = mInputEdit->getText();
+ LLStringUtil::trim(strText);
+
+ mOutputText->appendText(strText, false);
+ mInputEdit->setText(LLStringUtil::null);
+
+ if (!RlvHandler::isEnabled())
+ {
+ mOutputText->appendText(LLTrans::getString("RlvConsoleDisable"), true);
+ }
+ else if (strText.length() <= 3 || Constants::CmdPrefix != strText[0])
+ {
+ mOutputText->appendText(LLTrans::getString("RlvConsoleInvalidCmd"), true);
+ }
+ else
+ {
+ LLChat chat;
+ chat.mFromID = gAgentID;
+ chat.mChatType = CHAT_TYPE_OWNER;
+
+ RlvHandler::instance().handleSimulatorChat(strText, chat, gAgentAvatarp);
+
+ mOutputText->appendText(strText, true);
+ }
+
+ mOutputText->appendText(Constants::ConsolePrompt, true);
+}
+
+void FloaterConsole::reshapeLayoutPanel()
+{
+ mInputPanel->reshape(mInputPanel->getRect().getWidth(), mInputEdit->getRect().getHeight() + mInputEditPad, false);
+}
+
+// ============================================================================
diff --git a/indra/newview/rlvfloaters.h b/indra/newview/rlvfloaters.h
new file mode 100644
index 0000000000..8acfa43f28
--- /dev/null
+++ b/indra/newview/rlvfloaters.h
@@ -0,0 +1,68 @@
+/**
+ * @file rlvfloaters.h
+ * @author Kitty Barnett
+ * @brief RLVa floaters class implementations
+ *
+ * $LicenseInfo:firstyear=2024&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2024, 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$
+ */
+
+#pragma once
+
+#include "llfloater.h"
+
+#include "rlvdefines.h"
+
+class LLChatEntry;
+class LLFloaterReg;
+class LLLayoutPanel;
+class LLTextEditor;
+class RlvCommand;
+class RlvHandler;
+
+namespace Rlv
+{
+ // ============================================================================
+ // FloaterConsole - debug console to allow command execution without the need for a script
+ //
+
+ class FloaterConsole : public LLFloater
+ {
+ friend class ::LLFloaterReg;
+ FloaterConsole(const LLSD& sdKey) : LLFloater(sdKey) {}
+
+ public:
+ bool postBuild() override;
+ void onClose(bool fQuitting) override;
+ protected:
+ void onInput();
+ void reshapeLayoutPanel();
+
+ private:
+ boost::signals2::scoped_connection mCommandOutputConn;
+ int mInputEditPad = 0;
+ LLLayoutPanel* mInputPanel = nullptr;
+ LLChatEntry* mInputEdit = nullptr;
+ LLTextEditor* mOutputText = nullptr;
+ };
+
+ // ============================================================================
+};
diff --git a/indra/newview/rlvhandler.cpp b/indra/newview/rlvhandler.cpp
new file mode 100644
index 0000000000..6c4b439105
--- /dev/null
+++ b/indra/newview/rlvhandler.cpp
@@ -0,0 +1,225 @@
+/**
+ * @file rlvhandler.cpp
+ * @author Kitty Barnett
+ * @brief RLVa helper classes for internal use only
+ *
+ * $LicenseInfo:firstyear=2024&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2024, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+#include "llagent.h"
+#include "llstartup.h"
+#include "llviewercontrol.h"
+#include "llviewerobject.h"
+
+#include "rlvcommon.h"
+#include "rlvhandler.h"
+#include "rlvhelper.h"
+
+#include <boost/algorithm/string.hpp>
+
+using namespace Rlv;
+
+// ============================================================================
+// Static variable initialization
+//
+
+bool RlvHandler::mIsEnabled = false;
+
+// ============================================================================
+// Command processing functions
+//
+
+bool RlvHandler::handleSimulatorChat(std::string& message, const LLChat& chat, const LLViewerObject* chatObj)
+{
+ // *TODO: There's an edge case for temporary attachments when going from enabled -> disabled with restrictions already in place
+ static LLCachedControl<bool> enable_temp_attach(gSavedSettings, Settings::EnableTempAttach);
+ static LLCachedControl<bool> show_debug_output(gSavedSettings, Settings::Debug);
+ static LLCachedControl<bool> hide_unset_dupes(gSavedSettings, Settings::DebugHideUnsetDup);
+
+ if ( message.length() <= 3 || Constants::CmdPrefix != message[0] || CHAT_TYPE_OWNER != chat.mChatType ||
+ (chatObj && chatObj->isTempAttachment() && !enable_temp_attach()) )
+ {
+ return false;
+ }
+
+ message.erase(0, 1);
+ LLStringUtil::toLower(message);
+ CommandDbgOut cmdDbgOut(message, chatObj->getID() == gAgentID);
+
+ boost_tokenizer tokens(message, boost::char_separator<char>(",", "", boost::drop_empty_tokens));
+ for (const std::string& strCmd : tokens)
+ {
+ ECmdRet eRet = processCommand(chat.mFromID, strCmd, true);
+ if ( show_debug_output() &&
+ (!hide_unset_dupes() || (ECmdRet::SuccessUnset != eRet && ECmdRet::SuccessDuplicate != eRet)) )
+ {
+ cmdDbgOut.add(strCmd, eRet);
+ }
+ }
+
+ message = cmdDbgOut.get();
+ return true;
+}
+
+ECmdRet RlvHandler::processCommand(const LLUUID& idObj, const std::string& strCmd, bool fromObj)
+{
+ const RlvCommand rlvCmd(idObj, strCmd);
+ return processCommand(std::ref(rlvCmd), fromObj);
+}
+
+ECmdRet RlvHandler::processCommand(std::reference_wrapper<const RlvCommand> rlvCmd, bool fromObj)
+{
+ {
+ const RlvCommand& rlvCmdTmp = rlvCmd; // Reference to the temporary with limited variable scope since we don't want it to leak below
+
+ RLV_DEBUGS << "[" << rlvCmdTmp.getObjectID() << "]: " << rlvCmdTmp.asString() << RLV_ENDL;
+ if (!rlvCmdTmp.isValid())
+ {
+ RLV_DEBUGS << "\t-> invalid syntax" << RLV_ENDL;
+ return ECmdRet::FailedSyntax;
+ }
+ if (rlvCmdTmp.isBlocked())
+ {
+ RLV_DEBUGS << "\t-> blocked command" << RLV_ENDL;
+ return ECmdRet::FailedDisabled;
+ }
+ }
+
+ ECmdRet eRet = ECmdRet::Unknown;
+ switch (rlvCmd.get().getParamType())
+ {
+ case EParamType::Reply:
+ eRet = rlvCmd.get().processCommand();
+ break;
+ case EParamType::Unknown:
+ default:
+ eRet = ECmdRet::FailedParam;
+ break;
+ }
+ RLV_ASSERT(ECmdRet::Unknown != eRet);
+
+ RLV_DEBUGS << "\t--> command " << (isReturnCodeSuccess(eRet) ? "succeeded" : "failed") << RLV_ENDL;
+
+ return eRet;
+}
+
+// ============================================================================
+// Initialization helper functions
+//
+
+bool RlvHandler::canEnable()
+{
+ return LLStartUp::getStartupState() <= STATE_LOGIN_CLEANUP;
+}
+
+bool RlvHandler::setEnabled(bool enable)
+{
+ if (mIsEnabled == enable)
+ return enable;
+
+ if (enable && canEnable())
+ {
+ RLV_INFOS << "Enabling Restrained Love API support - " << Strings::getVersionAbout() << RLV_ENDL;
+ mIsEnabled = true;
+ }
+
+ return mIsEnabled;
+}
+
+// ============================================================================
+// Command handlers (RLV_TYPE_REPLY)
+//
+
+ECmdRet CommandHandlerBaseImpl<EParamType::Reply>::processCommand(const RlvCommand& rlvCmd, ReplyHandlerFunc* pHandler)
+{
+ // Sanity check - <param> should specify a - valid - reply channel
+ S32 nChannel;
+ if (!LLStringUtil::convertToS32(rlvCmd.getParam(), nChannel) || !Util::isValidReplyChannel(nChannel, rlvCmd.getObjectID() == gAgentID))
+ return ECmdRet::FailedParam;
+
+ std::string strReply;
+ ECmdRet eRet = (*pHandler)(rlvCmd, strReply);
+
+ // If we made it this far then:
+ // - the command was handled successfully so we send off the response
+ // - the command failed but we still send off an - empty - response to keep the issuing script from blocking
+ if (nChannel != 0)
+ {
+ Util::sendChatReply(nChannel, strReply);
+ }
+ RlvHandler::instance().mOnCommandOutput(rlvCmd, nChannel, strReply);
+
+ return eRet;
+}
+
+// Handles: @getcommand[:<behaviour>[;<type>[;<separator>]]]=<channel>
+template<> template<>
+ECmdRet ReplyHandler<EBehaviour::GetCommand>::onCommand(const RlvCommand& rlvCmd, std::string& strReply)
+{
+ std::vector<std::string> optionList;
+ Util::parseStringList(rlvCmd.getOption(), optionList);
+
+ // If a second parameter is present it'll specify the command type
+ EParamType eType = EParamType::Unknown;
+ if (optionList.size() >= 2)
+ {
+ if (optionList[1] == "any" || optionList[1].empty())
+ eType = EParamType::Unknown;
+ else if (optionList[1] == "add")
+ eType = EParamType::AddRem;
+ else if (optionList[1] == "force")
+ eType = EParamType::Force;
+ else if (optionList[1] == "reply")
+ eType = EParamType::Reply;
+ else
+ return ECmdRet::FailedOption;
+ }
+
+ std::list<std::string> cmdList;
+ if (BehaviourDictionary::instance().getCommands(!optionList.empty() ? optionList[0] : LLStringUtil::null, eType, cmdList))
+ strReply = boost::algorithm::join(cmdList, optionList.size() >= 3 ? optionList[2] : Constants::OptionSeparator);
+ return ECmdRet::Succeeded;
+}
+
+// Handles: @version=<chnannel> and @versionnew=<channel>
+template<> template<>
+ECmdRet VersionReplyHandler::onCommand(const RlvCommand& rlvCmd, std::string& strReply)
+{
+ strReply = Strings::getVersion(EBehaviour::Version == rlvCmd.getBehaviourType());
+ return ECmdRet::Succeeded;
+}
+
+// Handles: @versionnum[:impl]=<channel>
+template<> template<>
+ECmdRet ReplyHandler<EBehaviour::VersionNum>::onCommand(const RlvCommand& rlvCmd, std::string& strReply)
+{
+ if (!rlvCmd.hasOption())
+ strReply = Strings::getVersionNum();
+ else if ("impl" == rlvCmd.getOption())
+ strReply = Strings::getVersionImplNum();
+ else
+ return ECmdRet::FailedOption;
+ return ECmdRet::Succeeded;
+}
+
+// ============================================================================
diff --git a/indra/newview/rlvhandler.h b/indra/newview/rlvhandler.h
new file mode 100644
index 0000000000..38612485b1
--- /dev/null
+++ b/indra/newview/rlvhandler.h
@@ -0,0 +1,80 @@
+/**
+ * @file rlvhandler.h
+ * @author Kitty Barnett
+ * @brief Primary command process and orchestration class
+ *
+ * $LicenseInfo:firstyear=2024&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2024, 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$
+ */
+
+#pragma once
+
+#include "llchat.h"
+#include "llsingleton.h"
+
+#include "rlvhelper.h"
+
+class LLViewerObject;
+
+// ============================================================================
+// RlvHandler class
+//
+
+class RlvHandler : public LLSingleton<RlvHandler>
+{
+ template<Rlv::EParamType> friend struct Rlv::CommandHandlerBaseImpl;
+
+ LLSINGLETON_EMPTY_CTOR(RlvHandler);
+
+ /*
+ * Command processing
+ */
+public:
+ // Command processing helper functions
+ bool handleSimulatorChat(std::string& message, const LLChat& chat, const LLViewerObject* chatObj);
+ Rlv::ECmdRet processCommand(const LLUUID& idObj, const std::string& stCmd, bool fromObj);
+protected:
+ Rlv::ECmdRet processCommand(std::reference_wrapper<const RlvCommand> rlvCmdRef, bool fromObj);
+
+ /*
+ * Helper functions
+ */
+public:
+ // Initialization (deliberately static so they can safely be called in tight loops)
+ static bool canEnable();
+ static bool isEnabled() { return mIsEnabled; }
+ static bool setEnabled(bool enable);
+
+ /*
+ * Event handling
+ */
+public:
+ // The command output signal is triggered whenever a command produces channel or debug output
+ using command_output_signal_t = boost::signals2::signal<void (const RlvCommand&, S32, const std::string&)>;
+ boost::signals2::connection setCommandOutputCallback(const command_output_signal_t::slot_type& cb) { return mOnCommandOutput.connect(cb); }
+
+protected:
+ command_output_signal_t mOnCommandOutput;
+private:
+ static bool mIsEnabled;
+};
+
+// ============================================================================
diff --git a/indra/newview/rlvhelper.cpp b/indra/newview/rlvhelper.cpp
new file mode 100644
index 0000000000..7cb1473c8c
--- /dev/null
+++ b/indra/newview/rlvhelper.cpp
@@ -0,0 +1,389 @@
+/**
+ * @file rlvhelper.cpp
+ * @author Kitty Barnett
+ * @brief RLVa helper classes for internal use only
+ *
+ * $LicenseInfo:firstyear=2024&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2024, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "lltrans.h"
+#include "llviewercontrol.h"
+
+#include "rlvhelper.h"
+
+#include <boost/algorithm/string.hpp>
+
+using namespace Rlv;
+
+// ============================================================================
+// BehaviourDictionary
+//
+
+BehaviourDictionary::BehaviourDictionary()
+{
+ //
+ // Restrictions
+ //
+
+ //
+ // Reply-only
+ //
+ addEntry(new ReplyProcessor<EBehaviour::GetCommand>("getcommand"));
+ addEntry(new ReplyProcessor<EBehaviour::Version, VersionReplyHandler>("version"));
+ addEntry(new ReplyProcessor<EBehaviour::VersionNew, VersionReplyHandler>("versionnew"));
+ addEntry(new ReplyProcessor<EBehaviour::VersionNum>("versionnum"));
+
+ // Populate mString2InfoMap (the tuple <behaviour, type> should be unique)
+ for (const BehaviourInfo* bhvr_info_p : mBhvrInfoList)
+ {
+ mString2InfoMap.insert(std::make_pair(std::make_pair(bhvr_info_p->getBehaviour(), static_cast<EParamType>(bhvr_info_p->getParamTypeMask())), bhvr_info_p));
+ }
+
+ // Populate m_Bhvr2InfoMap (there can be multiple entries per ERlvBehaviour)
+ for (const BehaviourInfo* bhvr_info_p : mBhvrInfoList)
+ {
+ if ((bhvr_info_p->getParamTypeMask() & to_underlying(EParamType::AddRem)) && !bhvr_info_p->isSynonym())
+ {
+#ifdef RLV_DEBUG
+ for (const auto& itBhvr : boost::make_iterator_range(mBhvr2InfoMap.lower_bound(bhvr_info_p->getBehaviourType()), mBhvr2InfoMap.upper_bound(bhvr_info_p->getBehaviourType())))
+ {
+ RLV_ASSERT((itBhvr.first != bhvr_info_p->getBehaviourType()) || (itBhvr.second->getBehaviourFlags() != bhvr_info_p->getBehaviourFlags()));
+ }
+#endif // RLV_DEBUG
+ mBhvr2InfoMap.insert(std::pair(bhvr_info_p->getBehaviourType(), bhvr_info_p));
+ }
+ }
+}
+
+BehaviourDictionary::~BehaviourDictionary()
+{
+ for (const BehaviourInfo* bhvr_info_p : mBhvrInfoList)
+ {
+ delete bhvr_info_p;
+ }
+ mBhvrInfoList.clear();
+}
+
+void BehaviourDictionary::addEntry(const BehaviourInfo* entry_p)
+{
+ // Filter experimental commands (if disabled)
+ static LLCachedControl<bool> sEnableExperimental(gSavedSettings, Settings::EnableExperimentalCommands);
+ if (!entry_p || (!sEnableExperimental && entry_p->isExperimental()))
+ {
+ return;
+ }
+
+ // Sanity check for duplicate entries
+#ifndef LL_RELEASE_FOR_DOWNLOAD
+ std::for_each(mBhvrInfoList.begin(), mBhvrInfoList.end(),
+ [&entry_p](const BehaviourInfo* bhvr_info_p) {
+ RLV_ASSERT_DBG((bhvr_info_p->getBehaviour() != entry_p->getBehaviour()) || ((bhvr_info_p->getParamTypeMask() & entry_p->getParamTypeMask()) == 0));
+ });
+#endif // LL_RELEASE_FOR_DOWNLOAD
+
+ mBhvrInfoList.push_back(entry_p);
+}
+
+const BehaviourInfo* BehaviourDictionary::getBehaviourInfo(EBehaviour eBhvr, EParamType eParamType) const
+{
+ const BehaviourInfo* bhvr_info_p = nullptr;
+ for (auto itBhvrLower = mBhvr2InfoMap.lower_bound(eBhvr), itBhvrUpper = mBhvr2InfoMap.upper_bound(eBhvr);
+ std::find_if(itBhvrLower, itBhvrUpper, [eParamType](const auto& bhvrEntry) { return bhvrEntry.second->getParamTypeMask() == to_underlying(eParamType); }) != itBhvrUpper;
+ ++itBhvrLower)
+ {
+ if (bhvr_info_p)
+ return nullptr;
+ bhvr_info_p = itBhvrLower->second;
+ }
+ return bhvr_info_p;
+}
+
+const BehaviourInfo* BehaviourDictionary::getBehaviourInfo(const std::string& strBhvr, EParamType eParamType, bool* is_strict_p) const
+{
+ size_t idxBhvrLastPart = strBhvr.find_last_of('_');
+ std::string strBhvrLastPart((std::string::npos != idxBhvrLastPart) && (idxBhvrLastPart < strBhvr.size()) ? strBhvr.substr(idxBhvrLastPart + 1) : LLStringUtil::null);
+
+ bool isStrict = (strBhvrLastPart.compare("sec") == 0);
+ if (is_strict_p)
+ *is_strict_p = isStrict;
+
+ auto itBhvr = mString2InfoMap.find(std::make_pair((!isStrict) ? strBhvr : strBhvr.substr(0, strBhvr.size() - 4), (has_flag(eParamType, EParamType::AddRem)) ? EParamType::AddRem : eParamType));
+ if ((mString2InfoMap.end() == itBhvr) && (!isStrict) && (!strBhvrLastPart.empty()) && (EParamType::Force == eParamType))
+ {
+ // No match found but it could still be a local scope modifier
+ auto itBhvrMod = mString2InfoMap.find(std::make_pair(strBhvr.substr(0, idxBhvrLastPart), EParamType::AddRem));
+ }
+
+ return ((itBhvr != mString2InfoMap.end()) && ((!isStrict) || (itBhvr->second->hasStrict()))) ? itBhvr->second : nullptr;
+}
+
+EBehaviour BehaviourDictionary::getBehaviourFromString(const std::string& strBhvr, EParamType eParamType, bool* pisStrict) const
+{
+ const BehaviourInfo* bhvr_info_p = getBehaviourInfo(strBhvr, eParamType, pisStrict);
+ // Filter out locally scoped modifier commands since they don't actually have a unique behaviour value of their own
+ return bhvr_info_p->getBehaviourType();
+}
+
+bool BehaviourDictionary::getCommands(const std::string& strMatch, EParamType eParamType, std::list<std::string>& cmdList) const
+{
+ cmdList.clear();
+ for (const BehaviourInfo* bhvr_info_p : mBhvrInfoList)
+ {
+ if ((bhvr_info_p->getParamTypeMask() & to_underlying(eParamType)) || (EParamType::Unknown == eParamType))
+ {
+ std::string strCmd = bhvr_info_p->getBehaviour();
+ if ((std::string::npos != strCmd.find(strMatch)) || (strMatch.empty()))
+ cmdList.push_back(strCmd);
+ if ((bhvr_info_p->hasStrict()) && ((std::string::npos != strCmd.append("_sec").find(strMatch)) || (strMatch.empty())))
+ cmdList.push_back(strCmd);
+ }
+ }
+ return !cmdList.empty();
+}
+
+bool BehaviourDictionary::getHasStrict(EBehaviour eBhvr) const
+{
+ for (const auto& itBhvr : boost::make_iterator_range(mBhvr2InfoMap.lower_bound(eBhvr), mBhvr2InfoMap.upper_bound(eBhvr)))
+ {
+ // Only restrictions can be strict
+ if (to_underlying(EParamType::AddRem) != itBhvr.second->getParamTypeMask())
+ continue;
+ return itBhvr.second->hasStrict();
+ }
+ RLV_ASSERT(false);
+ return false;
+}
+
+void BehaviourDictionary::toggleBehaviourFlag(const std::string& strBhvr, EParamType eParamType, BehaviourInfo::EBehaviourFlags eBhvrFlag, bool fEnable)
+{
+ auto itBhvr = mString2InfoMap.find(std::make_pair(strBhvr, (has_flag(eParamType, EParamType::AddRem)) ? EParamType::AddRem : eParamType));
+ if (mString2InfoMap.end() != itBhvr)
+ {
+ const_cast<BehaviourInfo*>(itBhvr->second)->toggleBehaviourFlag(eBhvrFlag, fEnable);
+ }
+}
+
+// ============================================================================
+// RlvCommmand
+//
+
+RlvCommand::RlvCommand(const LLUUID& idObj, const std::string& strCmd)
+ : mObjId(idObj)
+{
+ if (parseCommand(strCmd, mBehaviour, mOption, mParam))
+ {
+ if ("n" == mParam || "add" == mParam)
+ mParamType = EParamType::Add;
+ else if ("y" == mParam || "rem" == mParam)
+ mParamType = EParamType::Remove;
+ else if ("clear" == mBehaviour) // clear is the odd one out so just make it its own type
+ mParamType = EParamType::Clear;
+ else if ("force" == mParam)
+ mParamType = EParamType::Force;
+ else if (S32 nTemp; LLStringUtil::convertToS32(mParam, nTemp)) // Assume it's a reply command if we can convert <param> to an S32
+ mParamType = EParamType::Reply;
+ }
+
+ mIsValid = mParamType != EParamType::Unknown;
+ if (!mIsValid)
+ {
+ mOption.clear();
+ mParam.clear();
+ return;
+ }
+
+ mBhvrInfo = BehaviourDictionary::instance().getBehaviourInfo(mBehaviour, mParamType, &mIsStrict);
+}
+
+RlvCommand::RlvCommand(const RlvCommand& rlvCmd, EParamType eParamType)
+ : mIsValid(rlvCmd.mIsValid), mObjId(rlvCmd.mObjId), mBehaviour(rlvCmd.mBehaviour), mBhvrInfo(rlvCmd.mBhvrInfo)
+ , mParamType( (EParamType::Unknown == eParamType) ? rlvCmd.mParamType : eParamType)
+ , mIsStrict(rlvCmd.mIsStrict), mOption(rlvCmd.mOption), mParam(rlvCmd.mParam), mIsRefCounted(rlvCmd.mIsRefCounted)
+{
+}
+
+bool RlvCommand::parseCommand(const std::string& strCmd, std::string& strBhvr, std::string& strOption, std::string& strParam)
+{
+ // Format: <behaviour>[:<option>]=<param>
+ const size_t idxOption = strCmd.find(':');
+ const size_t idxParam = strCmd.find('=');
+
+ // If <behaviour> is missing it's always an improperly formatted command
+ // If there's an option, but it comes after <param> it's also invalid
+ if ( (idxOption == 0 || idxParam == 0) ||
+ (idxOption != std::string::npos && idxOption >= idxParam) )
+ {
+ return false;
+ }
+
+ strBhvr = strCmd.substr(0, std::string::npos != idxOption ? idxOption : idxParam);
+ strOption = strParam = "";
+
+ // If <param> is missing it's an improperly formatted command
+ if (idxParam == std::string::npos || idxParam + 1 == strCmd.length())
+ {
+ // Unless "<behaviour> == "clear" AND (idxOption == 0)"
+ // OR <behaviour> == "clear" AND (idxParam != 0)
+ if (strBhvr == "clear" && (!idxOption || idxParam))
+ return true;
+ return false;
+ }
+
+ if (idxOption != std::string::npos && idxOption + 1 != idxParam)
+ strOption = strCmd.substr(idxOption + 1, idxParam - idxOption - 1);
+ strParam = strCmd.substr(idxParam + 1);
+
+ return true;
+}
+
+std::string RlvCommand::asString() const
+{
+ // NOTE: @clear=<param> should be represented as clear:<param>
+ return mParamType != EParamType::Clear
+ ? getBehaviour() + (!mOption.empty() ? ":" + mOption : "")
+ : getBehaviour() + (!mParam.empty() ? ":" + mParam : "");
+}
+
+// =========================================================================
+// Various helper classes/timers/functors
+//
+
+namespace Rlv
+{
+ // ===========================================================================
+ // CommandDbgOut
+ //
+
+ void CommandDbgOut::add(std::string strCmd, ECmdRet eRet)
+ {
+ const std::string strSuffix = getReturnCodeString(eRet);
+ if (!strSuffix.empty())
+ strCmd.append(llformat(" (%s)", strSuffix.c_str()));
+ else if (mForConsole)
+ return; // Only show console feedback on successful commands when there's an informational notice
+
+ std::string& strResult = mCommandResults[isReturnCodeSuccess(eRet) ? ECmdRet::Succeeded : (ECmdRet::Retained == eRet ? ECmdRet::Retained : ECmdRet::Failed)];
+ if (!strResult.empty())
+ strResult.append(", ");
+ strResult.append(strCmd);
+ }
+
+ std::string CommandDbgOut::get() const {
+ std::ostringstream result;
+
+ if (1 == mCommandResults.size() && !mForConsole)
+ {
+ auto it = mCommandResults.begin();
+ result << " " << getDebugVerbFromReturnCode(it->first) << ": @" << it->second;
+ }
+ else if (!mCommandResults.empty())
+ {
+ auto appendResult = [&](ECmdRet eRet, const std::string& name)
+ {
+ auto it = mCommandResults.find(eRet);
+ if (it == mCommandResults.end()) return;
+ if (!mForConsole) result << "\n - ";
+ result << LLTrans::getString(name) << ": @" << it->second;
+ };
+ if (!mForConsole)
+ result << ": @" << mOrigCmd;
+ appendResult(ECmdRet::Succeeded, !mForConsole ? "RlvDebugExecuted" : "RlvConsoleExecuted");
+ appendResult(ECmdRet::Failed, !mForConsole ? "RlvDebugFailed" : "RlvConsoleFailed");
+ appendResult(ECmdRet::Retained, !mForConsole ? "RlvDebugRetained" : "RlvConsoleRetained");
+ }
+
+ return result.str();
+ }
+
+ std::string CommandDbgOut::getDebugVerbFromReturnCode(ECmdRet eRet)
+ {
+ switch (eRet)
+ {
+ case ECmdRet::Succeeded:
+ return LLTrans::getString("RlvDebugExecuted");
+ case ECmdRet::Failed:
+ return LLTrans::getString("RlvDebugFailed");
+ case ECmdRet::Retained:
+ return LLTrans::getString("RlvDebugRetained");
+ default:
+ RLV_ASSERT(false);
+ return LLStringUtil::null;
+ }
+ }
+
+ std::string CommandDbgOut::getReturnCodeString(ECmdRet eRet)
+ {
+ switch (eRet)
+ {
+ case ECmdRet::SuccessUnset:
+ return LLTrans::getString("RlvReturnCodeUnset");
+ case ECmdRet::SuccessDuplicate:
+ return LLTrans::getString("RlvReturnCodeDuplicate");
+ case ECmdRet::SuccessDelayed:
+ return LLTrans::getString("RlvReturnCodeDelayed");
+ case ECmdRet::SuccessDeprecated:
+ return LLTrans::getString("RlvReturnCodeDeprecated");
+ case ECmdRet::FailedSyntax:
+ return LLTrans::getString("RlvReturnCodeSyntax");
+ case ECmdRet::FailedOption:
+ return LLTrans::getString("RlvReturnCodeOption");
+ case ECmdRet::FailedParam:
+ return LLTrans::getString("RlvReturnCodeParam");
+ case ECmdRet::FailedLock:
+ return LLTrans::getString("RlvReturnCodeLock");
+ case ECmdRet::FailedDisabled:
+ return LLTrans::getString("RlvReturnCodeDisabled");
+ case ECmdRet::FailedUnknown:
+ return LLTrans::getString("RlvReturnCodeUnknown");
+ case ECmdRet::FailedNoSharedRoot:
+ return LLTrans::getString("RlvReturnCodeNoSharedRoot");
+ case ECmdRet::FailedDeprecated:
+ return LLTrans::getString("RlvReturnCodeDeprecatedAndDisabled");
+ case ECmdRet::FailedNoBehaviour:
+ return LLTrans::getString("RlvReturnCodeNoBehaviour");
+ case ECmdRet::FailedUnheldBehaviour:
+ return LLTrans::getString("RlvReturnCodeUnheldBehaviour");
+ case ECmdRet::FailedBlocked:
+ return LLTrans::getString("RlvReturnCodeBlocked");
+ case ECmdRet::FailedThrottled:
+ return LLTrans::getString("RlvReturnCodeThrottled");
+ case ECmdRet::FailedNoProcessor:
+ return LLTrans::getString("RlvReturnCodeNoProcessor");
+ // The following are identified by the chat verb
+ case ECmdRet::Retained:
+ case ECmdRet::Succeeded:
+ case ECmdRet::Failed:
+ return LLStringUtil::null;
+ // The following shouldn't occur
+ case ECmdRet::Unknown:
+ default:
+ RLV_ASSERT(false);
+ return LLStringUtil::null;
+ }
+ }
+
+ // ===========================================================================
+}
+
+// ============================================================================
diff --git a/indra/newview/rlvhelper.h b/indra/newview/rlvhelper.h
new file mode 100644
index 0000000000..f241332594
--- /dev/null
+++ b/indra/newview/rlvhelper.h
@@ -0,0 +1,299 @@
+/**
+ * @file rlvhelper.h
+ * @author Kitty Barnett
+ * @brief RLVa helper classes for internal use only
+ *
+ * $LicenseInfo:firstyear=2024&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2024, 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$
+ */
+
+#pragma once
+
+#include "rlvdefines.h"
+
+// ============================================================================
+// Forward declarations
+//
+
+class RlvCommand;
+
+// ============================================================================
+
+namespace Rlv
+{
+ // ============================================================================
+ // BehaviourInfo class - Generic behaviour descriptor (used by restrictions, reply and force commands)
+ //
+
+ class BehaviourInfo
+ {
+ public:
+ enum EBehaviourFlags : uint32_t
+ {
+ // General behaviour flags
+ Strict = 0x0001, // Behaviour has a "_sec" version
+ Synonym = 0x0002, // Behaviour is a synonym of another
+ Extended = 0x0004, // Behaviour is part of the RLVa extended command set
+ Experimental = 0x0008, // Behaviour is part of the RLVa experimental command set
+ Blocked = 0x0010, // Behaviour is blocked
+ Deprecated = 0x0020, // Behaviour is deprecated
+ MaskGeneral = 0x0FFF,
+
+ // Force-wear specific flags
+ ForceWear_WearReplace = 0x0001 << 16,
+ ForceWear_WearAdd = 0x0002 << 16,
+ ForceWear_WearRemove = 0x0004 << 16,
+ ForceWear_Node = 0x0010 << 16,
+ ForceWear_Subtree = 0x0020 << 16,
+ ForceWear_ContextNone = 0x0100 << 16,
+ ForceWear_ContextObject = 0x0200 << 16,
+ MaskForceWear = 0xFFFFu << 16
+ };
+
+ BehaviourInfo(const std::string& strBhvr, EBehaviour eBhvr, EParamType maskParamType, std::underlying_type_t<EBehaviourFlags> nBhvrFlags = 0)
+ : mBhvr(strBhvr), mBhvrType(eBhvr), mBhvrFlags(nBhvrFlags), mMaskParamType(to_underlying(maskParamType)) {}
+ virtual ~BehaviourInfo() {}
+
+ const std::string& getBehaviour() const { return mBhvr; }
+ EBehaviour getBehaviourType() const { return mBhvrType; }
+ std::underlying_type_t<EBehaviourFlags> getBehaviourFlags() const { return mBhvrFlags; }
+ std::underlying_type_t<EParamType> getParamTypeMask() const { return mMaskParamType; }
+ bool hasStrict() const { return mBhvrFlags & Strict; }
+ bool isBlocked() const { return mBhvrFlags & Blocked; }
+ bool isExperimental() const { return mBhvrFlags & Experimental; }
+ bool isExtended() const { return mBhvrFlags & Extended; }
+ bool isSynonym() const { return mBhvrFlags & Synonym; }
+ void toggleBehaviourFlag(EBehaviourFlags eBhvrFlag, bool fEnable);
+
+ virtual ECmdRet processCommand(const RlvCommand& rlvCmd) const { return ECmdRet::FailedNoProcessor; }
+
+ protected:
+ std::string mBhvr;
+ EBehaviour mBhvrType;
+ std::underlying_type_t<EBehaviourFlags> mBhvrFlags;
+ std::underlying_type_t<EParamType> mMaskParamType;
+ };
+
+ inline void BehaviourInfo::toggleBehaviourFlag(EBehaviourFlags eBhvrFlag, bool fEnable)
+ {
+ if (fEnable)
+ mBhvrFlags |= eBhvrFlag;
+ else
+ mBhvrFlags &= ~eBhvrFlag;
+ }
+
+ // ============================================================================
+ // BehaviourDictionary and related classes
+ //
+
+ class BehaviourDictionary : public LLSingleton<BehaviourDictionary>
+ {
+ LLSINGLETON(BehaviourDictionary);
+ protected:
+ ~BehaviourDictionary() override;
+ public:
+ void addEntry(const BehaviourInfo* entry_p);
+
+ /*
+ * General helper functions
+ */
+ public:
+ EBehaviour getBehaviourFromString(const std::string& strBhvr, EParamType eParamType, bool* is_strict_p = nullptr) const;
+ const BehaviourInfo* getBehaviourInfo(EBehaviour eBhvr, EParamType eParamType) const;
+ const BehaviourInfo* getBehaviourInfo(const std::string& strBhvr, EParamType eParamType, bool* is_strict_p = nullptr) const;
+ bool getCommands(const std::string& strMatch, EParamType eParamType, std::list<std::string>& cmdList) const;
+ bool getHasStrict(EBehaviour eBhvr) const;
+ void toggleBehaviourFlag(const std::string& strBhvr, EParamType eParamType, BehaviourInfo::EBehaviourFlags eBvhrFlag, bool fEnable);
+
+ /*
+ * Member variables
+ */
+ protected:
+ std::list<const BehaviourInfo*> mBhvrInfoList;
+ std::map<std::pair<std::string, EParamType>, const BehaviourInfo*> mString2InfoMap;
+ std::multimap<EBehaviour, const BehaviourInfo*> mBhvr2InfoMap;
+ };
+
+ // ============================================================================
+ // CommandHandler and related classes
+ //
+
+ typedef ECmdRet(BhvrHandlerFunc)(const RlvCommand&, bool&);
+ typedef void(BhvrToggleHandlerFunc)(EBehaviour, bool);
+ typedef ECmdRet(ForceHandlerFunc)(const RlvCommand&);
+ typedef ECmdRet(ReplyHandlerFunc)(const RlvCommand&, std::string&);
+
+ //
+ // CommandHandlerBaseImpl - Base implementation for each command type (the old process(AddRem|Force|Reply)Command functions)
+ //
+ template<EParamType paramType> struct CommandHandlerBaseImpl;
+ template<> struct CommandHandlerBaseImpl<EParamType::AddRem> { static ECmdRet processCommand(const RlvCommand&, BhvrHandlerFunc*, BhvrToggleHandlerFunc* = nullptr); };
+ template<> struct CommandHandlerBaseImpl<EParamType::Force> { static ECmdRet processCommand(const RlvCommand&, ForceHandlerFunc*); };
+ template<> struct CommandHandlerBaseImpl<EParamType::Reply> { static ECmdRet processCommand(const RlvCommand&, ReplyHandlerFunc*); };
+
+ //
+ // CommandHandler - The actual command handler (Note that a handler is more general than a processor; a handler can - for instance - be used by multiple processors)
+ //
+ #if LL_WINDOWS
+ #define RLV_TEMPL_FIX(x) template<x>
+ #else
+ #define RLV_TEMPL_FIX(x) template<typename Placeholder = int>
+ #endif // LL_WINDOWS
+
+
+ template <EParamType templParamType, EBehaviour templBhvr>
+ struct CommandHandler
+ {
+ RLV_TEMPL_FIX(typename = typename std::enable_if<templParamType == EParamType::AddRem>::type) static ECmdRet onCommand(const RlvCommand&, bool&);
+ RLV_TEMPL_FIX(typename = typename std::enable_if<templParamType == EParamType::AddRem>::type) static void onCommandToggle(EBehaviour, bool);
+ RLV_TEMPL_FIX(typename = typename std::enable_if<templParamType == EParamType::Force>::type) static ECmdRet onCommand(const RlvCommand&);
+ RLV_TEMPL_FIX(typename = typename std::enable_if<templParamType == EParamType::Reply>::type) static ECmdRet onCommand(const RlvCommand&, std::string&);
+ };
+
+ // Aliases to improve readability in definitions
+ template<EBehaviour templBhvr> using BehaviourHandler = CommandHandler<EParamType::AddRem, templBhvr>;
+ template<EBehaviour templBhvr> using BehaviourToggleHandler = BehaviourHandler<templBhvr>;
+ template<EBehaviour templBhvr> using ForceHandler = CommandHandler<EParamType::Force, templBhvr>;
+ template<EBehaviour templBhvr> using ReplyHandler = CommandHandler<EParamType::Reply, templBhvr>;
+
+ // List of shared handlers
+ using VersionReplyHandler = ReplyHandler<EBehaviour::Version>; // Shared between @version and @versionnew
+
+ //
+ // CommandProcessor - Templated glue class that brings BehaviourInfo, CommandHandlerBaseImpl and CommandHandler together
+ //
+ template <EParamType templParamType, EBehaviour templBhvr, typename handlerImpl = CommandHandler<templParamType, templBhvr>, typename baseImpl = CommandHandlerBaseImpl<templParamType>>
+ class CommandProcessor : public BehaviourInfo
+ {
+ public:
+ // Default constructor used by behaviour specializations
+ RLV_TEMPL_FIX(typename = typename std::enable_if<templBhvr != EBehaviour::Unknown>::type)
+ CommandProcessor(const std::string& strBhvr, U32 nBhvrFlags = 0) : BehaviourInfo(strBhvr, templBhvr, templParamType, nBhvrFlags) {}
+
+ // Constructor used when we don't want to specialize on behaviour (see BehaviourGenericProcessor)
+ RLV_TEMPL_FIX(typename = typename std::enable_if<templBhvr == EBehaviour::Unknown>::type)
+ CommandProcessor(const std::string& strBhvr, EBehaviour eBhvr, U32 nBhvrFlags = 0) : BehaviourInfo(strBhvr, eBhvr, templParamType, nBhvrFlags) {}
+
+ ECmdRet processCommand(const RlvCommand& rlvCmd) const override { return baseImpl::processCommand(rlvCmd, &handlerImpl::onCommand); }
+ };
+
+ // Aliases to improve readability in definitions
+ template<EBehaviour templBhvr, typename handlerImpl = CommandHandler<EParamType::AddRem, templBhvr>> using BehaviourProcessor = CommandProcessor<EParamType::AddRem, templBhvr, handlerImpl>;
+ template<EBehaviour templBhvr, typename handlerImpl = CommandHandler<EParamType::Force, templBhvr>> using ForceProcessor = CommandProcessor<EParamType::Force, templBhvr, handlerImpl>;
+ template<EBehaviour templBhvr, typename handlerImpl = CommandHandler<EParamType::Reply, templBhvr>> using ReplyProcessor = CommandProcessor<EParamType::Reply, templBhvr, handlerImpl>;
+
+ // Provides pre-defined generic implementations of basic behaviours (template voodoo - see original commit for something that still made sense)
+ template<EBehaviourOptionType templOptionType> struct BehaviourGenericHandler { static ECmdRet onCommand(const RlvCommand& rlvCmd, bool& fRefCount); };
+ template<EBehaviourOptionType templOptionType> using BehaviourGenericProcessor = BehaviourProcessor<EBehaviour::Unknown, BehaviourGenericHandler<templOptionType>>;
+ template<EBehaviourOptionType templOptionType> struct ForceGenericHandler { static ECmdRet onCommand(const RlvCommand& rlvCmd); };
+ template<EBehaviourOptionType templOptionType> using ForceGenericProcessor = ForceProcessor<EBehaviour::Unknown, ForceGenericHandler<templOptionType>>;
+
+ // ============================================================================
+ // BehaviourProcessor and related classes - Handles add/rem comamnds aka "restrictions)
+ //
+
+ template <EBehaviour eBhvr, typename handlerImpl = BehaviourHandler<eBhvr>, typename toggleHandlerImpl = BehaviourToggleHandler<eBhvr>>
+ class BehaviourToggleProcessor : public BehaviourInfo
+ {
+ public:
+ BehaviourToggleProcessor(const std::string& strBhvr, U32 nBhvrFlags = 0) : BehaviourInfo(strBhvr, eBhvr, EParamType::AddRem, nBhvrFlags) {}
+ ECmdRet processCommand(const RlvCommand& rlvCmd) const override { return CommandHandlerBaseImpl<EParamType::AddRem>::processCommand(rlvCmd, &handlerImpl::onCommand, &toggleHandlerImpl::onCommandToggle); }
+ };
+ template <EBehaviour eBhvr, EBehaviourOptionType optionType, typename toggleHandlerImpl = BehaviourToggleHandler<eBhvr>> using RlvBehaviourGenericToggleProcessor = BehaviourToggleProcessor<eBhvr, BehaviourGenericHandler<optionType>, toggleHandlerImpl>;
+
+ // ============================================================================
+ // Various helper classes/timers/functors
+ //
+
+ struct CommandDbgOut
+ {
+ CommandDbgOut(const std::string& orig_cmd, bool for_console) : mOrigCmd(orig_cmd), mForConsole(for_console) {}
+ void add(std::string strCmd, ECmdRet eRet);
+ std::string get() const;
+ static std::string getDebugVerbFromReturnCode(ECmdRet eRet);
+ static std::string getReturnCodeString(ECmdRet eRet);
+ private:
+ std::string mOrigCmd;
+ std::map<ECmdRet, std::string> mCommandResults;
+ bool mForConsole = false;
+ };
+}
+
+// ============================================================================
+// RlvCommand
+//
+
+class RlvCommand
+{
+public:
+ explicit RlvCommand(const LLUUID& idObj, const std::string& strCmd);
+ RlvCommand(const RlvCommand& rlvCmd, Rlv::EParamType eParamType = Rlv::EParamType::Unknown);
+
+ /*
+ * Member functions
+ */
+public:
+ std::string asString() const;
+ const std::string& getBehaviour() const { return mBehaviour; }
+ const Rlv::BehaviourInfo* getBehaviourInfo() const { return mBhvrInfo; }
+ Rlv::EBehaviour getBehaviourType() const { return (mBhvrInfo) ? mBhvrInfo->getBehaviourType() : Rlv::EBehaviour::Unknown; }
+ U32 getBehaviourFlags() const { return (mBhvrInfo) ? mBhvrInfo->getBehaviourFlags() : 0; }
+ const LLUUID& getObjectID() const { return mObjId; }
+ const std::string& getOption() const { return mOption; }
+ const std::string& getParam() const { return mParam; }
+ Rlv::EParamType getParamType() const { return mParamType; }
+ bool hasOption() const { return !mOption.empty(); }
+ bool isBlocked() const { return (mBhvrInfo) ? mBhvrInfo->isBlocked() : false; }
+ bool isRefCounted() const { return mIsRefCounted; }
+ bool isStrict() const { return mIsStrict; }
+ bool isValid() const { return mIsValid; }
+ Rlv::ECmdRet processCommand() const { return (mBhvrInfo) ? mBhvrInfo->processCommand(*this) : Rlv::ECmdRet::FailedNoProcessor; }
+
+protected:
+ static bool parseCommand(const std::string& strCommand, std::string& strBehaviour, std::string& strOption, std::string& strParam);
+ bool markRefCounted() const { return mIsRefCounted = true; }
+
+ /*
+ * Operators
+ */
+public:
+ bool operator ==(const RlvCommand&) const;
+
+ /*
+ * Member variables
+ */
+protected:
+ bool mIsValid = false;
+ LLUUID mObjId;
+ std::string mBehaviour;
+ const Rlv::BehaviourInfo* mBhvrInfo = nullptr;
+ Rlv::EParamType mParamType = Rlv::EParamType::Unknown;
+ bool mIsStrict = false;
+ std::string mOption;
+ std::string mParam;
+ mutable bool mIsRefCounted = false;
+
+ friend class RlvHandler;
+ friend class RlvObject;
+ template<Rlv::EParamType> friend struct Rlv::CommandHandlerBaseImpl;
+};
+
+// ============================================================================
diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml
index f5d10ee8d2..48c93f1c3e 100644
--- a/indra/newview/skins/default/colors.xml
+++ b/indra/newview/skins/default/colors.xml
@@ -1007,4 +1007,16 @@
<color
name="OutfitSnapshotMacMask2"
value="0.1 0.1 0.1 1"/>
+ <color
+ name="ChatMentionFont"
+ value="0.3 0.82 1 1" />
+ <color
+ name="ChatMentionHighlight"
+ value="0.82 0.91 0.98 0.15" />
+ <color
+ name="ChatSelfMentionHighlight"
+ value="1 1 0 0.35" />
+ <color
+ name="MentionFlashBgColor"
+ value="1 1 0 0.5" />
</colors>
diff --git a/indra/newview/skins/default/textures/icons/MP_Logo.png b/indra/newview/skins/default/textures/icons/MP_Logo.png
index e33a830d3b..6aba54189f 100644
--- a/indra/newview/skins/default/textures/icons/MP_Logo.png
+++ b/indra/newview/skins/default/textures/icons/MP_Logo.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/SL_Logo.png b/indra/newview/skins/default/textures/icons/SL_Logo.png
index 943265e240..5e376c72f9 100644
--- a/indra/newview/skins/default/textures/icons/SL_Logo.png
+++ b/indra/newview/skins/default/textures/icons/SL_Logo.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/hand.png b/indra/newview/skins/default/textures/icons/hand.png
index 3f497eefbb..5fbdb70c2b 100644
--- a/indra/newview/skins/default/textures/icons/hand.png
+++ b/indra/newview/skins/default/textures/icons/hand.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/windows/first_login_image.jpg b/indra/newview/skins/default/textures/windows/first_login_image.jpg
index 860fed4ac7..58c417081a 100644
--- a/indra/newview/skins/default/textures/windows/first_login_image.jpg
+++ b/indra/newview/skins/default/textures/windows/first_login_image.jpg
Binary files differ
diff --git a/indra/newview/skins/default/xui/da/floater_about.xml b/indra/newview/skins/default/xui/da/floater_about.xml
index 604eb7c58f..4ea34975e1 100644
--- a/indra/newview/skins/default/xui/da/floater_about.xml
+++ b/indra/newview/skins/default/xui/da/floater_about.xml
@@ -5,7 +5,7 @@
[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]]
</floater.string>
<floater.string name="AboutPosition">
- Du er ved [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] i regionen [REGION] lokaliseret ved &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt; ([HOSTIP])
+ Du er ved [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] i regionen [REGION] lokaliseret ved &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt;
[SERVER_VERSION]
[SERVER_RELEASE_NOTES_URL]
</floater.string>
diff --git a/indra/newview/skins/default/xui/da/strings.xml b/indra/newview/skins/default/xui/da/strings.xml
index 038a2e0fcd..18fbd92292 100644
--- a/indra/newview/skins/default/xui/da/strings.xml
+++ b/indra/newview/skins/default/xui/da/strings.xml
@@ -1,8 +1,4 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- This file contains strings that used to be hardcoded in the source.
- It is only for those strings which do not belong in a floater.
- For example, the strings used in avatar chat bubbles, and strings
- that are returned from one component and may appear in many places-->
<strings>
<string name="CAPITALIZED_APP_NAME">
MEGAPAHIT
@@ -554,9 +550,9 @@ Prøv venligst om lidt igen.
<string name="mesh">
mesh
</string>
- <string name="settings">
- indstillinger
- </string>
+ <string name="settings">
+ indstillinger
+ </string>
<string name="AvatarEditingAppearance">
(Redigering Udseende)
</string>
@@ -819,10 +815,10 @@ Prøv venligst om lidt igen.
Du vil nu blive dirigeret til lokal stemme chat
</string>
<string name="ScriptQuestionCautionChatGranted">
- &apos;[OBJECTNAME]&apos;, en genstand, ejet af &apos;[OWNERNAME]&apos;, lokaliseret i [REGIONNAME] på [REGIONPOS], har fået tilladelse til: [PERMISSIONS].
+ '[OBJECTNAME]', en genstand, ejet af '[OWNERNAME]', lokaliseret i [REGIONNAME] på [REGIONPOS], har fået tilladelse til: [PERMISSIONS].
</string>
<string name="ScriptQuestionCautionChatDenied">
- &apos;[OBJECTNAME]&apos;, en genstand, ejet af &apos;[OWNERNAME]&apos;, lokaliseret i [REGIONNAME] på [REGIONPOS], er afvist tilladelse til: [PERMISSIONS].
+ '[OBJECTNAME]', en genstand, ejet af '[OWNERNAME]', lokaliseret i [REGIONNAME] på [REGIONPOS], er afvist tilladelse til: [PERMISSIONS].
</string>
<string name="ScriptTakeMoney">
Tag Linden dollars (L$) fra dig
@@ -933,16 +929,16 @@ Prøv venligst om lidt igen.
Vælg bibliotek
</string>
<string name="AvatarSetNotAway">
- Sæt &quot;til stede&quot;
+ Sæt "til stede"
</string>
<string name="AvatarSetAway">
- Sæt &quot;væk&quot;
+ Sæt "væk"
</string>
<string name="AvatarSetNotBusy">
- Sæt &quot;ledig&quot;
+ Sæt "ledig"
</string>
<string name="AvatarSetBusy">
- Sæt &quot;optaget&quot;
+ Sæt "optaget"
</string>
<string name="shape">
Form
@@ -1169,8 +1165,10 @@ Prøv venligst om lidt igen.
<string name="InventoryNoTexture">
Du har ikke en kopi af denne tekstur i din beholdning
</string>
- <string name="Unconstrained">Ikke låst</string>
- <string name="no_transfer" value=" (ikke overdragbar)"/>
+ <string name="Unconstrained">
+ Ikke låst
+ </string>
+ <string name="no_transfer" value=" (ikke overdragbar)"/>
<string name="no_modify" value=" (ikke redigere)"/>
<string name="no_copy" value=" (ikke kopiere)"/>
<string name="worn" value=" (båret)"/>
@@ -1568,16 +1566,16 @@ Prøv venligst om lidt igen.
nulstil
</string>
<string name="RunQueueTitle">
- Sæt &quot;running&quot; fremskridt
+ Sæt "running" fremskridt
</string>
<string name="RunQueueStart">
- sæt til &quot;running&quot;
+ sæt til "running"
</string>
<string name="NotRunQueueTitle">
- Sæt &quot;Not Running&quot; fremskridt
+ Sæt "Not Running" fremskridt
</string>
<string name="NotRunQueueStart">
- sæt til &quot;not running&quot;
+ sæt til "not running"
</string>
<string name="CompileSuccessful">
Kompleret uden fejl!
@@ -1589,7 +1587,7 @@ Prøv venligst om lidt igen.
Gemt.
</string>
<string name="ObjectOutOfRange">
- Script (&quot;object out of range&quot;)
+ Script ("object out of range")
</string>
<string name="GodToolsObjectOwnedBy">
Objekt [OBJECT] ejet af [OWNER]
@@ -1660,13 +1658,13 @@ Prøv venligst om lidt igen.
Memory brugt: [COUNT] kb
</string>
<string name="ScriptLimitsParcelScriptURLs">
- Parcel Script URL&apos;er
+ Parcel Script URL'er
</string>
<string name="ScriptLimitsURLsUsed">
- URL&apos;er brugt: [COUNT] ud af [MAX]; [AVAILABLE] tilgængelige
+ URL'er brugt: [COUNT] ud af [MAX]; [AVAILABLE] tilgængelige
</string>
<string name="ScriptLimitsURLsUsedSimple">
- URL&apos;er brugt: [COUNT]
+ URL'er brugt: [COUNT]
</string>
<string name="ScriptLimitsRequestError">
Fejl ved anmodning om information
@@ -1813,7 +1811,7 @@ Prøv venligst om lidt igen.
Nyt script
</string>
<string name="BusyModeResponseDefault">
- Beboeren du sendte en besked er &apos;optaget&apos;, hvilket betyder at han/hun ikke vil forstyrres. Din besked vil blive vis i hans/hendes IM panel til senere visning.
+ Beboeren du sendte en besked er 'optaget', hvilket betyder at han/hun ikke vil forstyrres. Din besked vil blive vis i hans/hendes IM panel til senere visning.
</string>
<string name="MuteByName">
(Efter navn)
@@ -2121,11 +2119,11 @@ Hvis fejlen stadig bliver ved, kan det være nødvendigt at afinstallere [APP_NA
</string>
<string name="MBAlreadyRunning">
[APP_NAME] kører allerede.
-Undersøg din &quot;task bar&quot; for at se efter minimeret version af programmet.
+Undersøg din "task bar" for at se efter minimeret version af programmet.
Hvis fejlen fortsætter, prøv at genstarte din computer.
</string>
<string name="MBFrozenCrashed">
- [APP_NAME] ser ud til at være &quot;frosset&quot; eller gået ned tidligere.
+ [APP_NAME] ser ud til at være "frosset" eller gået ned tidligere.
Ønsker du at sende en fejlrapport?
</string>
<string name="MBAlert">
@@ -2161,39 +2159,39 @@ Afvikler i vindue.
Fejl ved nedlukning
</string>
<string name="MBDevContextErr">
- Kan ikke oprette &quot;GL device context&quot;
+ Kan ikke oprette "GL device context"
</string>
<string name="MBPixelFmtErr">
- Kan ikke finde passende &quot;pixel format&quot;
+ Kan ikke finde passende "pixel format"
</string>
<string name="MBPixelFmtDescErr">
- Kan ikke finde &quot;pixel format&quot; beskrivelse
+ Kan ikke finde "pixel format" beskrivelse
</string>
<string name="MBTrueColorWindow">
- [APP_NAME] kræver &quot;True Color (32-bit)&quot; for at kunne køre.
-Gå venligst til din computers skærmopsætning og sæt &quot;color mode&quot; til 32-bit.
+ [APP_NAME] kræver "True Color (32-bit)" for at kunne køre.
+Gå venligst til din computers skærmopsætning og sæt "color mode" til 32-bit.
</string>
<string name="MBAlpha">
- [APP_NAME] kan ikke køre, da den ikke kan finde en &quot;8 bit alpha channel&quot;. Normalt skyldes dette et problem med en video driver.
+ [APP_NAME] kan ikke køre, da den ikke kan finde en "8 bit alpha channel". Normalt skyldes dette et problem med en video driver.
Venligst undersøg om du har de nyeste drivere til dit videokort installeret.
-Din skærm skal også være sat op til at køre &quot;True Color (32-bit)&quot; i din displayopsætning.
+Din skærm skal også være sat op til at køre "True Color (32-bit)" i din displayopsætning.
Hvis du bliver ved med at modtage denne besked, kontakt [SUPPORT_SITE].
</string>
<string name="MBPixelFmtSetErr">
- Kan ikke sætte &quot;pixel format&quot;
+ Kan ikke sætte "pixel format"
</string>
<string name="MBGLContextErr">
- Kan ikke oprette &quot;GL rendering context&quot;
+ Kan ikke oprette "GL rendering context"
</string>
<string name="MBGLContextActErr">
- Kan ikke aktivere &quot;GL rendering context&quot;
+ Kan ikke aktivere "GL rendering context"
</string>
<string name="MBVideoDrvErr">
[APP_NAME] kan ikke afvikles da driverne til dit videokort ikke blev installeret korrekt, er forældede, eller du benytter hardware der ikke er supporteret. Undersøg venligst om du har installeret de nyeste drivere til dit grafikkort, og selv om du har de nyeste, prøv at geninstallere dem.
Hvis du bliver ved med at modtage denne besked, kontakt venligst [SUPPORT_SITE].
</string>
- <string name="5 O&apos;Clock Shadow">
+ <string name="5 O'Clock Shadow">
Skægstubbe
</string>
<string name="All White">
@@ -3328,7 +3326,7 @@ Hvis du bliver ved med at modtage denne besked, kontakt venligst [SUPPORT_SITE].
Skævt ansigt
</string>
<string name="Shear Front">
- &quot;Måne&quot;
+ "Måne"
</string>
<string name="Shear Left Up">
Venstre op
@@ -3463,7 +3461,7 @@ Hvis du bliver ved med at modtage denne besked, kontakt venligst [SUPPORT_SITE].
Sparsomt
</string>
<string name="Spiked Hair">
- Hår med &quot;spikes&quot;
+ Hår med "spikes"
</string>
<string name="Square">
Firkantet
@@ -3724,7 +3722,7 @@ Hvis du bliver ved med at modtage denne besked, kontakt venligst [SUPPORT_SITE].
Konference med [AGENT_NAME]
</string>
<string name="bot_warning">
-Du chatter med en bot, [NAME]. Del ikke personlige oplysninger.
+ Du chatter med en bot, [NAME]. Del ikke personlige oplysninger.
Læs mere på https://second.life/scripted-agents.
</string>
<string name="no_session_message">
@@ -3767,7 +3765,7 @@ Læs mere på https://second.life/scripted-agents.
En gruppe moderator har deaktiveret din tekst chat.
</string>
<string name="muted_error">
- Du er blevet &quot;blokeret&quot;.
+ Du er blevet "blokeret".
</string>
<string name="add_session_event">
Ikke muligt at tilføge brugere til samtale med [RECIPIENT].
@@ -3797,7 +3795,7 @@ Læs mere på https://second.life/scripted-agents.
[SOURCES] har sagt noget nyt
</string>
<string name="session_initialization_timed_out_error">
- Initialisering af session er &quot;timed out&quot;
+ Initialisering af session er "timed out"
</string>
<string name="Home position set.">
Hjemmeposition sat.
@@ -4030,7 +4028,7 @@ Krænkelsesanmeldelse
Kvinde - Latter
</string>
<string name="Female - Looking good">
- Kvinde - &quot;Ser godt ud&quot;
+ Kvinde - "Ser godt ud"
</string>
<string name="Female - Over here">
Kvinde - Herovre
@@ -4144,7 +4142,7 @@ Krænkelsesanmeldelse
<string name="ExternalEditorNotFound">
Kan ikke benytte deb eksterne editor der er angivet.
Prøv at omkrandse stien til editor med anførselstegn.
-(f.eks. &quot;/stil til min editor&quot; &quot;%s&quot;)
+(f.eks. "/stil til min editor" "%s")
</string>
<string name="ExternalEditorCommandParseError">
Fejl ved håndtering af kommando til ekstern editor.
@@ -4468,10 +4466,10 @@ Prøv at omkrandse stien til editor med anførselstegn.
Viser pejlelys for fysiske objekter (grøn)
</string>
<string name="BeaconScripted">
- Viser pejlelys for &quot;scriptede&quot; objekter (rød)
+ Viser pejlelys for "scriptede" objekter (rød)
</string>
<string name="BeaconScriptedTouch">
- Viser pejlelys for &quot;scriptede&quot; objekter med berøringsfunktion (rød)
+ Viser pejlelys for "scriptede" objekter med berøringsfunktion (rød)
</string>
<string name="BeaconSound">
Viser pejlelys for lyd (gul)
diff --git a/indra/newview/skins/default/xui/da/teleport_strings.xml b/indra/newview/skins/default/xui/da/teleport_strings.xml
index 0d89fae986..79ec69fd9b 100644
--- a/indra/newview/skins/default/xui/da/teleport_strings.xml
+++ b/indra/newview/skins/default/xui/da/teleport_strings.xml
@@ -21,8 +21,8 @@ Hvis du stadig ikke kan teleporte, prøv venligst at logge ud og ligge ind for a
Prøv igen om lidt.
</message>
<message name="NoHelpIslandTP">
- Du kan ikke teleportere tilbage til Welcome Island.
-Gå til &apos;Welcome Island Puclic&apos; for at prøve tutorial igen.
+ Du kan ikke teleportere tilbage til Welcome Island.
+Gå til 'Welcome Island Puclic' for at prøve tutorial igen.
</message>
<message name="noaccess_tport">
Beklager, du har ikke adgang til denne teleport destination.
diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml
index c7f664f29b..7284e4e6a8 100644
--- a/indra/newview/skins/default/xui/de/strings.xml
+++ b/indra/newview/skins/default/xui/de/strings.xml
@@ -1,618 +1,1686 @@
<?xml version="1.0" ?>
<strings>
- <string name="SECOND_LIFE">Second Life</string>
- <string name="APP_NAME">Megapahit</string>
- <string name="CAPITALIZED_APP_NAME">MEGAPAHIT</string>
- <string name="SECOND_LIFE_GRID">Second Life-Grid:</string>
- <string name="SUPPORT_SITE">Second Life Support-Portal</string>
- <string name="StartupDetectingHardware">Hardware wird erfasst...</string>
- <string name="StartupLoading">[APP_NAME] wird geladen...</string>
- <string name="StartupClearingCache">Cache wird gelöscht...</string>
- <string name="StartupInitializingTextureCache">Textur-Cache wird initialisiert...</string>
- <string name="StartupRequireDriverUpdate">Grafikinitialisierung fehlgeschlagen. Bitte aktualisieren Sie Ihren Grafiktreiber.</string>
- <string name="AboutHeader">[CHANNEL] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2].[VIEWER_VERSION_3] ([ADDRESS_SIZE]Bit) [[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]]</string>
- <string name="BuildConfig">Build-Konfiguration [BUILD_CONFIG]</string>
- <string name="AboutPosition">Sie befinden sich an [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] in [REGION] auf &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt; ([HOSTIP])
+ <string name="SECOND_LIFE">
+ Second Life
+ </string>
+ <string name="APP_NAME">
+ Megapahit
+ </string>
+ <string name="CAPITALIZED_APP_NAME">
+ MEGAPAHIT
+ </string>
+ <string name="SECOND_LIFE_GRID">
+ Second Life-Grid:
+ </string>
+ <string name="SUPPORT_SITE">
+ Second Life Support-Portal
+ </string>
+ <string name="StartupDetectingHardware">
+ Hardware wird erfasst...
+ </string>
+ <string name="StartupLoading">
+ [APP_NAME] wird geladen...
+ </string>
+ <string name="StartupClearingCache">
+ Cache wird gelöscht...
+ </string>
+ <string name="StartupInitializingTextureCache">
+ Textur-Cache wird initialisiert...
+ </string>
+ <string name="StartupRequireDriverUpdate">
+ Grafikinitialisierung fehlgeschlagen. Bitte aktualisieren Sie Ihren Grafiktreiber.
+ </string>
+ <string name="AboutHeader">
+ [CHANNEL] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2].[VIEWER_VERSION_3] ([ADDRESS_SIZE]Bit) [[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]]
+ </string>
+ <string name="BuildConfig">
+ Build-Konfiguration [BUILD_CONFIG]
+ </string>
+ <string name="AboutPosition">
+ Sie befinden sich an [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] in [REGION] auf &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt;
SLURL: &lt;nolink&gt;[SLURL]&lt;/nolink&gt;
(globale Koordinaten [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1])
[SERVER_VERSION]
-[SERVER_RELEASE_NOTES_URL]</string>
- <string name="AboutSystem">CPU: [CPU]
+[SERVER_RELEASE_NOTES_URL]
+ </string>
+ <string name="AboutSystem">
+ CPU: [CPU]
Speicher: [MEMORY_MB] MB
Betriebssystemversion: [OS_VERSION]
Grafikkartenhersteller: [GRAPHICS_CARD_VENDOR]
-Grafikkarte: [GRAPHICS_CARD]</string>
- <string name="AboutDriver">Windows-Grafiktreiberversion: [GRAPHICS_DRIVER_VERSION]</string>
- <string name="AboutOGL">OpenGL-Version: [OPENGL_VERSION]</string>
- <string name="AboutSettings">Fenstergröße: [WINDOW_WIDTH]x[WINDOW_HEIGHT]
+Grafikkarte: [GRAPHICS_CARD]
+ </string>
+ <string name="AboutDriver">
+ Windows-Grafiktreiberversion: [GRAPHICS_DRIVER_VERSION]
+ </string>
+ <string name="AboutOGL">
+ OpenGL-Version: [OPENGL_VERSION]
+ </string>
+ <string name="AboutSettings">
+ Fenstergröße: [WINDOW_WIDTH]x[WINDOW_HEIGHT]
Schriftgrößenanpassung: [FONT_SIZE_ADJUSTMENT] pt
UI-Skalierung: [UI_SCALE]
Sichtweite: [DRAW_DISTANCE] m
Bandbreite: [NET_BANDWITH] kbit/s
LOD-Faktor: [LOD_FACTOR]
Darstellungsqualität: [RENDER_QUALITY]
-Texturspeicher: [TEXTURE_MEMORY] MB</string>
- <string name="AboutOSXHiDPI">HiDPI-Anzeigemodus: [HIDPI]</string>
- <string name="AboutLibs">J2C-Decoderversion: [J2C_VERSION]
+Texturspeicher: [TEXTURE_MEMORY] MB
+ </string>
+ <string name="AboutOSXHiDPI">
+ HiDPI-Anzeigemodus: [HIDPI]
+ </string>
+ <string name="AboutLibs">
+ J2C-Decoderversion: [J2C_VERSION]
Audiotreiberversion: [AUDIO_DRIVER_VERSION]
[LIBCEF_VERSION]
LibVLC-Version: [LIBVLC_VERSION]
-Voice-Server-Version: [VOICE_VERSION]</string>
- <string name="AboutTraffic">Paketverlust: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1] %)</string>
- <string name="AboutTime">[month, datetime, slt] [day, datetime, slt] [year, datetime, slt] [hour, datetime, slt]:[min, datetime, slt]:[second,datetime,slt]</string>
- <string name="ErrorFetchingServerReleaseNotesURL">Fehler beim Abrufen der URL für die Server-Versionshinweise.</string>
- <string name="BuildConfiguration">Build-Konfiguration</string>
- <string name="ProgressRestoring">Wird wiederhergestellt...</string>
- <string name="ProgressChangingResolution">Auflösung wird geändert...</string>
- <string name="Fullbright">Fullbright (Legacy)</string>
- <string name="LoginInProgress">Anmeldevorgang gestartet. [APP_NAME] reagiert möglicherweise nicht. Bitte warten.</string>
- <string name="LoginInProgressNoFrozen">Anmeldung erfolgt...</string>
- <string name="LoginAuthenticating">Authentifizierung</string>
- <string name="LoginMaintenance">Account wird aktualisiert...</string>
- <string name="LoginAttempt">Ein früherer Anmeldeversuch ist fehlgeschlagen. Anmeldung, Versuch [NUMBER]</string>
- <string name="LoginPrecaching">Welt wird geladen...</string>
- <string name="LoginInitializingBrowser">Integrierter Webbrowser wird initialisiert...</string>
- <string name="LoginInitializingMultimedia">Multimedia wird initialisiert...</string>
- <string name="LoginInitializingFonts">Schriftarten werden geladen...</string>
- <string name="LoginVerifyingCache">Cache-Dateien werden überprüft (dauert 60-90 Sekunden)...</string>
- <string name="LoginProcessingResponse">Antwort wird verarbeitet...</string>
- <string name="LoginInitializingWorld">Welt wird initialisiert...</string>
- <string name="LoginDecodingImages">Bilder werden entpackt...</string>
- <string name="LoginInitializingQuicktime">QuickTime wird initialisiert...</string>
- <string name="LoginQuicktimeNotFound">QuickTime nicht gefunden - Initialisierung nicht möglich.</string>
- <string name="LoginQuicktimeOK">QuickTime wurde initialisiert.</string>
- <string name="LoginRequestSeedCapGrant">Regionsfähigkeiten anfordern...</string>
- <string name="LoginRetrySeedCapGrant">Regionsfähigkeiten anfordern. Versuch [NUMBER]...</string>
- <string name="LoginWaitingForRegionHandshake">Region-Handshake...</string>
- <string name="LoginConnectingToRegion">Region-Verbindung...</string>
- <string name="LoginDownloadingClothing">Kleidung wird geladen...</string>
- <string name="InvalidCertificate">Der Server hat ein ungültiges oder korruptes Zertifikate zurückgegeben. Bitte kontaktieren Sie den Grid-Administrator.</string>
- <string name="CertInvalidHostname">Ein ungültiger Hostname wurde verwendet, um auf den Server zuzugreifen. Bitte überprüfen Sie Ihre SLURL oder den Grid-Hostnamen.</string>
- <string name="CertExpired">Das vom Grid ausgegebene Zertifikate ist abgelaufen. Bitte überprüfen Sie Ihre Systemuhr oder kontaktieren Sie Ihren Grid-Administrator.</string>
- <string name="CertKeyUsage">Das vom Server ausgegebene Zertifikat konnte nicht für SSL verwendet werden. Bitte kontaktieren Sie Ihren Grid-Administrator.</string>
- <string name="CertBasicConstraints">In der Zertifikatskette des Servers befanden sich zu viele Zertifikate. Bitte kontaktieren Sie Ihren Grid-Administrator.</string>
- <string name="CertInvalidSignature">Die Zertifikatsunterschrift des Gridservers konnte nicht bestätigt werden. Bitte kontaktieren Sie Ihren Grid-Administrator.</string>
- <string name="LoginFailedNoNetwork">Netzwerkfehler: Verbindung konnte nicht hergestellt werden. Bitte überprüfen Sie Ihre Netzwerkverbindung.</string>
- <string name="LoginFailedHeader">Anmeldung fehlgeschlagen</string>
- <string name="Quit">Beenden</string>
- <string name="create_account_url">http://join.secondlife.com/?sourceid=[sourceid]</string>
- <string name="AgniGridLabel">Second Life Main Grid (Agni)</string>
- <string name="AditiGridLabel">Second Life Beta Test Grid (Aditi)</string>
- <string name="ViewerDownloadURL">http://secondlife.com/download</string>
- <string name="LoginFailedViewerNotPermitted">Mit dem von Ihnen verwendeten Viewer ist der Zugriff auf Second Life nicht mehr möglich. Laden Sie von den folgenden Seite einen neuen Viewer herunter:
+Voice-Server-Version: [VOICE_VERSION]
+ </string>
+ <string name="AboutTraffic">
+ Paketverlust: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1] %)
+ </string>
+ <string name="AboutTime">
+ [month, datetime, slt] [day, datetime, slt] [year, datetime, slt] [hour, datetime, slt]:[min, datetime, slt]:[second,datetime,slt]
+ </string>
+ <string name="ErrorFetchingServerReleaseNotesURL">
+ Fehler beim Abrufen der URL für die Server-Versionshinweise.
+ </string>
+ <string name="BuildConfiguration">
+ Build-Konfiguration
+ </string>
+ <string name="ProgressRestoring">
+ Wird wiederhergestellt...
+ </string>
+ <string name="ProgressChangingResolution">
+ Auflösung wird geändert...
+ </string>
+ <string name="Fullbright">
+ Fullbright (Legacy)
+ </string>
+ <string name="LoginInProgress">
+ Anmeldevorgang gestartet. [APP_NAME] reagiert möglicherweise nicht. Bitte warten.
+ </string>
+ <string name="LoginInProgressNoFrozen">
+ Anmeldung erfolgt...
+ </string>
+ <string name="LoginAuthenticating">
+ Authentifizierung
+ </string>
+ <string name="LoginMaintenance">
+ Account wird aktualisiert...
+ </string>
+ <string name="LoginAttempt">
+ Ein früherer Anmeldeversuch ist fehlgeschlagen. Anmeldung, Versuch [NUMBER]
+ </string>
+ <string name="LoginPrecaching">
+ Welt wird geladen...
+ </string>
+ <string name="LoginInitializingBrowser">
+ Integrierter Webbrowser wird initialisiert...
+ </string>
+ <string name="LoginInitializingMultimedia">
+ Multimedia wird initialisiert...
+ </string>
+ <string name="LoginInitializingFonts">
+ Schriftarten werden geladen...
+ </string>
+ <string name="LoginVerifyingCache">
+ Cache-Dateien werden überprüft (dauert 60-90 Sekunden)...
+ </string>
+ <string name="LoginProcessingResponse">
+ Antwort wird verarbeitet...
+ </string>
+ <string name="LoginInitializingWorld">
+ Welt wird initialisiert...
+ </string>
+ <string name="LoginDecodingImages">
+ Bilder werden entpackt...
+ </string>
+ <string name="LoginInitializingQuicktime">
+ QuickTime wird initialisiert...
+ </string>
+ <string name="LoginQuicktimeNotFound">
+ QuickTime nicht gefunden - Initialisierung nicht möglich.
+ </string>
+ <string name="LoginQuicktimeOK">
+ QuickTime wurde initialisiert.
+ </string>
+ <string name="LoginRequestSeedCapGrant">
+ Regionsfähigkeiten anfordern...
+ </string>
+ <string name="LoginRetrySeedCapGrant">
+ Regionsfähigkeiten anfordern. Versuch [NUMBER]...
+ </string>
+ <string name="LoginWaitingForRegionHandshake">
+ Region-Handshake...
+ </string>
+ <string name="LoginConnectingToRegion">
+ Region-Verbindung...
+ </string>
+ <string name="LoginDownloadingClothing">
+ Kleidung wird geladen...
+ </string>
+ <string name="InvalidCertificate">
+ Der Server hat ein ungültiges oder korruptes Zertifikate zurückgegeben. Bitte kontaktieren Sie den Grid-Administrator.
+ </string>
+ <string name="CertInvalidHostname">
+ Ein ungültiger Hostname wurde verwendet, um auf den Server zuzugreifen. Bitte überprüfen Sie Ihre SLURL oder den Grid-Hostnamen.
+ </string>
+ <string name="CertExpired">
+ Das vom Grid ausgegebene Zertifikate ist abgelaufen. Bitte überprüfen Sie Ihre Systemuhr oder kontaktieren Sie Ihren Grid-Administrator.
+ </string>
+ <string name="CertKeyUsage">
+ Das vom Server ausgegebene Zertifikat konnte nicht für SSL verwendet werden. Bitte kontaktieren Sie Ihren Grid-Administrator.
+ </string>
+ <string name="CertBasicConstraints">
+ In der Zertifikatskette des Servers befanden sich zu viele Zertifikate. Bitte kontaktieren Sie Ihren Grid-Administrator.
+ </string>
+ <string name="CertInvalidSignature">
+ Die Zertifikatsunterschrift des Gridservers konnte nicht bestätigt werden. Bitte kontaktieren Sie Ihren Grid-Administrator.
+ </string>
+ <string name="LoginFailedNoNetwork">
+ Netzwerkfehler: Verbindung konnte nicht hergestellt werden. Bitte überprüfen Sie Ihre Netzwerkverbindung.
+ </string>
+ <string name="LoginFailedHeader">
+ Anmeldung fehlgeschlagen
+ </string>
+ <string name="Quit">
+ Beenden
+ </string>
+ <string name="create_account_url">
+ http://join.secondlife.com/?sourceid=[sourceid]
+ </string>
+ <string name="AgniGridLabel">
+ Second Life Main Grid (Agni)
+ </string>
+ <string name="AditiGridLabel">
+ Second Life Beta Test Grid (Aditi)
+ </string>
+ <string name="ViewerDownloadURL">
+ http://secondlife.com/download
+ </string>
+ <string name="LoginFailedViewerNotPermitted">
+ Mit dem von Ihnen verwendeten Viewer ist der Zugriff auf Second Life nicht mehr möglich. Laden Sie von den folgenden Seite einen neuen Viewer herunter:
http://secondlife.com/download
Weitere Informationen finden Sie auf der folgenden FAQ-Seite:
-http://secondlife.com/viewer-access-faq</string>
- <string name="LoginIntermediateOptionalUpdateAvailable">Optionales Viewer-Update verfügbar: [VERSION]</string>
- <string name="LoginFailedRequiredUpdate">Erforderliches Viewer-Update: [VERSION]</string>
- <string name="LoginFailedAlreadyLoggedIn">Dieser Agent ist bereits angemeldet.</string>
- <string name="LoginFailedAuthenticationFailed">Wir bitten um Entschuldigung! Wir konnten Sie nicht anmelden.
+http://secondlife.com/viewer-access-faq
+ </string>
+ <string name="LoginIntermediateOptionalUpdateAvailable">
+ Optionales Viewer-Update verfügbar: [VERSION]
+ </string>
+ <string name="LoginFailedRequiredUpdate">
+ Erforderliches Viewer-Update: [VERSION]
+ </string>
+ <string name="LoginFailedAlreadyLoggedIn">
+ Dieser Agent ist bereits angemeldet.
+ </string>
+ <string name="LoginFailedAuthenticationFailed">
+ Wir bitten um Entschuldigung! Wir konnten Sie nicht anmelden.
Stellen Sie sicher, dass Sie die richtigen Informationen eingegeben haben:
* Benutzername (wie robertschmidt12 oder warme.sonne)
* Kennwort
-Stellen Sie außerdem sicher, dass die Umschaltsperre deaktiviert ist.</string>
- <string name="LoginFailedPasswordChanged">Ihr Kennwort wurde aus Sicherheitsgründen geändert.
+Stellen Sie außerdem sicher, dass die Umschaltsperre deaktiviert ist.
+ </string>
+ <string name="LoginFailedPasswordChanged">
+ Ihr Kennwort wurde aus Sicherheitsgründen geändert.
Gehen Sie zur Seite „Mein Account“ unter http://secondlife.com/password
und beantworten Sie die Sicherheitsfrage, um Ihr Kennwort zurückzusetzen.
-Wir entschuldigen uns für eventuell enstandene Unannehmlichkeiten.</string>
- <string name="LoginFailedPasswordReset">Aufgrund von Systemänderungen müssen Sie Ihr Kennwort zurücksetzen.
+Wir entschuldigen uns für eventuell enstandene Unannehmlichkeiten.
+ </string>
+ <string name="LoginFailedPasswordReset">
+ Aufgrund von Systemänderungen müssen Sie Ihr Kennwort zurücksetzen.
Gehen Sie zur Seite „Mein Account“ unter http://secondlife.com/password
und beantworten Sie die Sicherheitsfrage, um Ihr Kennwort zurückzusetzen.
-Wir entschuldigen uns für eventuell enstandene Unannehmlichkeiten.</string>
- <string name="LoginFailedEmployeesOnly">Second Life ist vorübergehend wegen Wartung geschlossen.
+Wir entschuldigen uns für eventuell enstandene Unannehmlichkeiten.
+ </string>
+ <string name="LoginFailedEmployeesOnly">
+ Second Life ist vorübergehend wegen Wartung geschlossen.
Nur Mitarbeiter können sich anmelden.
-Aktuelle Informationen finden Sie unter www.secondlife.com/status.</string>
- <string name="LoginFailedPremiumOnly">Die Anmeldung bei Second Life ist vorübergehend eingeschränkt, um sicherzustellen, dass Einwohner, die sich bereits inworld aufhalten, das bestmögliche Erlebnis haben.
+Aktuelle Informationen finden Sie unter www.secondlife.com/status.
+ </string>
+ <string name="LoginFailedPremiumOnly">
+ Die Anmeldung bei Second Life ist vorübergehend eingeschränkt, um sicherzustellen, dass Einwohner, die sich bereits inworld aufhalten, das bestmögliche Erlebnis haben.
-Benutzer mit kostenlosen Konten können sich während dieses Zeitraums nicht bei Second Life anmelden, damit die Kapazität Benutzern zur Verfügung steht, die ein gebührenpflichtiges Premium-Konto besitzen.</string>
- <string name="LoginFailedComputerProhibited">Der Zugriff auf Second Life ist von diesem Computer aus nicht möglich.
+Benutzer mit kostenlosen Konten können sich während dieses Zeitraums nicht bei Second Life anmelden, damit die Kapazität Benutzern zur Verfügung steht, die ein gebührenpflichtiges Premium-Konto besitzen.
+ </string>
+ <string name="LoginFailedComputerProhibited">
+ Der Zugriff auf Second Life ist von diesem Computer aus nicht möglich.
Wenn Sie der Ansicht sind, dass Sie diese Meldung fälschlicherweise erhalten haben, wenden Sie sich an
-support@secondlife.com.</string>
- <string name="LoginFailedAcountSuspended">Ihr Konto ist erst ab
-[TIME] Pacific Time wieder verfügbar.</string>
- <string name="LoginFailedAccountDisabled">Ihre Anfrage kann derzeit nicht bearbeitet werden.
-Bitte wenden Sie sich unter http://secondlife.com/support an den Second Life-Support.</string>
- <string name="LoginFailedTransformError">Nicht übereinstimmende Daten bei der Anmeldung festgestellt.
-Wenden Sie sich an support@secondlife.com.</string>
- <string name="LoginFailedAccountMaintenance">An Ihrem Konto werden gerade kleinere Wartungsarbeiten durchgeführt.
+support@secondlife.com.
+ </string>
+ <string name="LoginFailedAcountSuspended">
+ Ihr Konto ist erst ab
+[TIME] Pacific Time wieder verfügbar.
+ </string>
+ <string name="LoginFailedAccountDisabled">
+ Ihre Anfrage kann derzeit nicht bearbeitet werden.
+Bitte wenden Sie sich unter http://secondlife.com/support an den Second Life-Support.
+ </string>
+ <string name="LoginFailedTransformError">
+ Nicht übereinstimmende Daten bei der Anmeldung festgestellt.
+Wenden Sie sich an support@secondlife.com.
+ </string>
+ <string name="LoginFailedAccountMaintenance">
+ An Ihrem Konto werden gerade kleinere Wartungsarbeiten durchgeführt.
Ihr Konto ist erst ab
[TIME] Pacific Time wieder verfügbar.
-Wenn Sie der Ansicht sind, dass Sie diese Meldung fälschlicherweise erhalten haben, wenden Sie sich an support@secondlife.com.</string>
- <string name="LoginFailedPendingLogoutFault">Abmeldeanforderung führte zu einem Simulatorfehler.</string>
- <string name="LoginFailedPendingLogout">Das System meldet Sie gerade ab.
-Bitte warten Sie eine Minute, bevor Sie sich erneut einloggen.</string>
- <string name="LoginFailedUnableToCreateSession">Es kann keine gültige Sitzung erstellt werden.</string>
- <string name="LoginFailedUnableToConnectToSimulator">Es kann keine Simulatorverbindung hergestellt werden.</string>
- <string name="LoginFailedRestrictedHours">Mit Ihrem Konto ist der Zugriff auf Second Life
+Wenn Sie der Ansicht sind, dass Sie diese Meldung fälschlicherweise erhalten haben, wenden Sie sich an support@secondlife.com.
+ </string>
+ <string name="LoginFailedPendingLogoutFault">
+ Abmeldeanforderung führte zu einem Simulatorfehler.
+ </string>
+ <string name="LoginFailedPendingLogout">
+ Das System meldet Sie gerade ab.
+Bitte warten Sie eine Minute, bevor Sie sich erneut einloggen.
+ </string>
+ <string name="LoginFailedUnableToCreateSession">
+ Es kann keine gültige Sitzung erstellt werden.
+ </string>
+ <string name="LoginFailedUnableToConnectToSimulator">
+ Es kann keine Simulatorverbindung hergestellt werden.
+ </string>
+ <string name="LoginFailedRestrictedHours">
+ Mit Ihrem Konto ist der Zugriff auf Second Life
nur zwischen [START] und [END] Pacific Time möglich.
Schauen Sie während dieses Zeitraums vorbei.
-Wenn Sie der Ansicht sind, dass Sie diese Meldung fälschlicherweise erhalten haben, wenden Sie sich an support@secondlife.com.</string>
- <string name="LoginFailedIncorrectParameters">Falsche Parameter.
-Wenn Sie der Ansicht sind, dass Sie diese Meldung fälschlicherweise erhalten haben, wenden Sie sich an support@secondlife.com.</string>
- <string name="LoginFailedFirstNameNotAlphanumeric">Vorname muss alphanumerisch sein.
-Wenn Sie der Ansicht sind, dass Sie diese Meldung fälschlicherweise erhalten haben, wenden Sie sich an support@secondlife.com.</string>
- <string name="LoginFailedLastNameNotAlphanumeric">Nachname muss alphanumerisch sein.
-Wenn Sie der Ansicht sind, dass Sie diese Meldung fälschlicherweise erhalten haben, wenden Sie sich an support@secondlife.com.</string>
- <string name="LogoutFailedRegionGoingOffline">Die Region wird gerade offline geschaltet.
-Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.</string>
- <string name="LogoutFailedAgentNotInRegion">Agent nicht in Region.
-Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.</string>
- <string name="LogoutFailedPendingLogin">Die Region war gerade dabei, eine andere Sitzung anzumelden.
-Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.</string>
- <string name="LogoutFailedLoggingOut">Die Region war gerade dabei, die vorherige Sitzung abzumelden.
-Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.</string>
- <string name="LogoutFailedStillLoggingOut">Die Region ist noch immer dabei, die vorherige Sitzung abzumelden.
-Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.</string>
- <string name="LogoutSucceeded">Die Region hat soeben die letzte Sitzung abgemeldet.
-Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.</string>
- <string name="LogoutFailedLogoutBegun">Die Region hat den Abmeldevorgang gestartet.
-Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.</string>
- <string name="LoginFailedLoggingOutSession">Das System hat begonnen, Ihre letzte Sitzung abzumelden.
-Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.</string>
- <string name="AgentLostConnection">In dieser Region kann es zu Problemen kommen. Bitte überprüfen Sie Ihre Internetverbindung.</string>
- <string name="SavingSettings">Ihr Einstellungen werden gespeichert...</string>
- <string name="LoggingOut">Abmeldung erfolgt...</string>
- <string name="ShuttingDown">Programm wird beendet...</string>
- <string name="YouHaveBeenDisconnected">Die Verbindung zu der Region ist abgebrochen.</string>
- <string name="SentToInvalidRegion">Sie wurden in eine ungültige Region geschickt.</string>
- <string name="TestingDisconnect">Verbindungsabbruch wird getestet</string>
- <string name="SocialFacebookConnecting">Mit Facebook verbinden...</string>
- <string name="SocialFacebookPosting">Posten...</string>
- <string name="SocialFacebookDisconnecting">Facebook-Verbindung trennen...</string>
- <string name="SocialFacebookErrorConnecting">Problem beim Verbinden mit Facebook</string>
- <string name="SocialFacebookErrorPosting">Problem beim Posten auf Facebook</string>
- <string name="SocialFacebookErrorDisconnecting">Problem beim Trennen der Facebook-Verbindung</string>
- <string name="SocialFlickrConnecting">Verbinden mit Flickr...</string>
- <string name="SocialFlickrPosting">Posten...</string>
- <string name="SocialFlickrDisconnecting">Flickr-Verbindung wird getrennt...</string>
- <string name="SocialFlickrErrorConnecting">Problem beim Verbinden mit Flickr</string>
- <string name="SocialFlickrErrorPosting">Problem beim Posten auf Flickr</string>
- <string name="SocialFlickrErrorDisconnecting">Problem beim Trennen der Flickr-Verbindung</string>
- <string name="SocialTwitterConnecting">Verbinden mit Twitter...</string>
- <string name="SocialTwitterPosting">Posten...</string>
- <string name="SocialTwitterDisconnecting">Twitter-Verbindung wird getrennt...</string>
- <string name="SocialTwitterErrorConnecting">Problem beim Verbinden mit Twitter</string>
- <string name="SocialTwitterErrorPosting">Problem beim Posten auf Twitter</string>
- <string name="SocialTwitterErrorDisconnecting">Problem beim Trennen der Twitter-Verbindung</string>
- <string name="BlackAndWhite">Schwarzweiß</string>
- <string name="Colors1970">Farben der Siebziger Jahre</string>
- <string name="Intense">Intensiv</string>
- <string name="Newspaper">Zeitungspapier</string>
- <string name="Sepia">Sepia</string>
- <string name="Spotlight">Spotlight</string>
- <string name="Video">Video</string>
- <string name="Autocontrast">Autokontrast</string>
- <string name="LensFlare">Blendenfleck</string>
- <string name="Miniature">Miniatur</string>
- <string name="Toycamera">Spielzeugkamera</string>
- <string name="TooltipPerson">Person</string>
- <string name="TooltipNoName">(namenlos)</string>
- <string name="TooltipOwner">Eigentümer:</string>
- <string name="TooltipPublic">Öffentlich</string>
- <string name="TooltipIsGroup">(Gruppe)</string>
- <string name="TooltipForSaleL$">Zum Verkauf: [AMOUNT] L$</string>
- <string name="TooltipFlagGroupBuild">Gruppenbau</string>
- <string name="TooltipFlagNoBuild">Bauen aus</string>
- <string name="TooltipFlagNoEdit">Gruppenbau</string>
- <string name="TooltipFlagNotSafe">Unsicher</string>
- <string name="TooltipFlagNoFly">Fliegen aus</string>
- <string name="TooltipFlagGroupScripts">Gruppenskripte</string>
- <string name="TooltipFlagNoScripts">Skripte aus</string>
- <string name="TooltipLand">Land:</string>
- <string name="TooltipMustSingleDrop">Sie können nur ein einzelnes Objekt hierher ziehen</string>
- <string name="TooltipTooManyWearables">Sie können keinen Ordner tragen, der mehr als [AMOUNT] Elemente enthält. Sie können diesen Höchstwert unter „Erweitert“ &gt; „Debug-Einstellungen anzeigen“ &gt; „WearFolderLimit“ ändern.</string>
+Wenn Sie der Ansicht sind, dass Sie diese Meldung fälschlicherweise erhalten haben, wenden Sie sich an support@secondlife.com.
+ </string>
+ <string name="LoginFailedIncorrectParameters">
+ Falsche Parameter.
+Wenn Sie der Ansicht sind, dass Sie diese Meldung fälschlicherweise erhalten haben, wenden Sie sich an support@secondlife.com.
+ </string>
+ <string name="LoginFailedFirstNameNotAlphanumeric">
+ Vorname muss alphanumerisch sein.
+Wenn Sie der Ansicht sind, dass Sie diese Meldung fälschlicherweise erhalten haben, wenden Sie sich an support@secondlife.com.
+ </string>
+ <string name="LoginFailedLastNameNotAlphanumeric">
+ Nachname muss alphanumerisch sein.
+Wenn Sie der Ansicht sind, dass Sie diese Meldung fälschlicherweise erhalten haben, wenden Sie sich an support@secondlife.com.
+ </string>
+ <string name="LogoutFailedRegionGoingOffline">
+ Die Region wird gerade offline geschaltet.
+Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.
+ </string>
+ <string name="LogoutFailedAgentNotInRegion">
+ Agent nicht in Region.
+Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.
+ </string>
+ <string name="LogoutFailedPendingLogin">
+ Die Region war gerade dabei, eine andere Sitzung anzumelden.
+Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.
+ </string>
+ <string name="LogoutFailedLoggingOut">
+ Die Region war gerade dabei, die vorherige Sitzung abzumelden.
+Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.
+ </string>
+ <string name="LogoutFailedStillLoggingOut">
+ Die Region ist noch immer dabei, die vorherige Sitzung abzumelden.
+Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.
+ </string>
+ <string name="LogoutSucceeded">
+ Die Region hat soeben die letzte Sitzung abgemeldet.
+Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.
+ </string>
+ <string name="LogoutFailedLogoutBegun">
+ Die Region hat den Abmeldevorgang gestartet.
+Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.
+ </string>
+ <string name="LoginFailedLoggingOutSession">
+ Das System hat begonnen, Ihre letzte Sitzung abzumelden.
+Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.
+ </string>
+ <string name="AgentLostConnection">
+ In dieser Region kann es zu Problemen kommen. Bitte überprüfen Sie Ihre Internetverbindung.
+ </string>
+ <string name="SavingSettings">
+ Ihr Einstellungen werden gespeichert...
+ </string>
+ <string name="LoggingOut">
+ Abmeldung erfolgt...
+ </string>
+ <string name="ShuttingDown">
+ Programm wird beendet...
+ </string>
+ <string name="YouHaveBeenDisconnected">
+ Die Verbindung zu der Region ist abgebrochen.
+ </string>
+ <string name="SentToInvalidRegion">
+ Sie wurden in eine ungültige Region geschickt.
+ </string>
+ <string name="TestingDisconnect">
+ Verbindungsabbruch wird getestet
+ </string>
+ <string name="SocialFacebookConnecting">
+ Mit Facebook verbinden...
+ </string>
+ <string name="SocialFacebookPosting">
+ Posten...
+ </string>
+ <string name="SocialFacebookDisconnecting">
+ Facebook-Verbindung trennen...
+ </string>
+ <string name="SocialFacebookErrorConnecting">
+ Problem beim Verbinden mit Facebook
+ </string>
+ <string name="SocialFacebookErrorPosting">
+ Problem beim Posten auf Facebook
+ </string>
+ <string name="SocialFacebookErrorDisconnecting">
+ Problem beim Trennen der Facebook-Verbindung
+ </string>
+ <string name="SocialFlickrConnecting">
+ Verbinden mit Flickr...
+ </string>
+ <string name="SocialFlickrPosting">
+ Posten...
+ </string>
+ <string name="SocialFlickrDisconnecting">
+ Flickr-Verbindung wird getrennt...
+ </string>
+ <string name="SocialFlickrErrorConnecting">
+ Problem beim Verbinden mit Flickr
+ </string>
+ <string name="SocialFlickrErrorPosting">
+ Problem beim Posten auf Flickr
+ </string>
+ <string name="SocialFlickrErrorDisconnecting">
+ Problem beim Trennen der Flickr-Verbindung
+ </string>
+ <string name="SocialTwitterConnecting">
+ Verbinden mit Twitter...
+ </string>
+ <string name="SocialTwitterPosting">
+ Posten...
+ </string>
+ <string name="SocialTwitterDisconnecting">
+ Twitter-Verbindung wird getrennt...
+ </string>
+ <string name="SocialTwitterErrorConnecting">
+ Problem beim Verbinden mit Twitter
+ </string>
+ <string name="SocialTwitterErrorPosting">
+ Problem beim Posten auf Twitter
+ </string>
+ <string name="SocialTwitterErrorDisconnecting">
+ Problem beim Trennen der Twitter-Verbindung
+ </string>
+ <string name="BlackAndWhite">
+ Schwarzweiß
+ </string>
+ <string name="Colors1970">
+ Farben der Siebziger Jahre
+ </string>
+ <string name="Intense">
+ Intensiv
+ </string>
+ <string name="Newspaper">
+ Zeitungspapier
+ </string>
+ <string name="Sepia">
+ Sepia
+ </string>
+ <string name="Spotlight">
+ Spotlight
+ </string>
+ <string name="Video">
+ Video
+ </string>
+ <string name="Autocontrast">
+ Autokontrast
+ </string>
+ <string name="LensFlare">
+ Blendenfleck
+ </string>
+ <string name="Miniature">
+ Miniatur
+ </string>
+ <string name="Toycamera">
+ Spielzeugkamera
+ </string>
+ <string name="TooltipPerson">
+ Person
+ </string>
+ <string name="TooltipNoName">
+ (namenlos)
+ </string>
+ <string name="TooltipOwner">
+ Eigentümer:
+ </string>
+ <string name="TooltipPublic">
+ Öffentlich
+ </string>
+ <string name="TooltipIsGroup">
+ (Gruppe)
+ </string>
+ <string name="TooltipForSaleL$">
+ Zum Verkauf: [AMOUNT] L$
+ </string>
+ <string name="TooltipFlagGroupBuild">
+ Gruppenbau
+ </string>
+ <string name="TooltipFlagNoBuild">
+ Bauen aus
+ </string>
+ <string name="TooltipFlagNoEdit">
+ Gruppenbau
+ </string>
+ <string name="TooltipFlagNotSafe">
+ Unsicher
+ </string>
+ <string name="TooltipFlagNoFly">
+ Fliegen aus
+ </string>
+ <string name="TooltipFlagGroupScripts">
+ Gruppenskripte
+ </string>
+ <string name="TooltipFlagNoScripts">
+ Skripte aus
+ </string>
+ <string name="TooltipLand">
+ Land:
+ </string>
+ <string name="TooltipMustSingleDrop">
+ Sie können nur ein einzelnes Objekt hierher ziehen
+ </string>
+ <string name="TooltipTooManyWearables">
+ Sie können keinen Ordner tragen, der mehr als [AMOUNT] Elemente enthält. Sie können diesen Höchstwert unter „Erweitert“ &gt; „Debug-Einstellungen anzeigen“ &gt; „WearFolderLimit“ ändern.
+ </string>
<string name="TooltipPrice" value="[AMOUNT] L$"/>
- <string name="TooltipSLIcon">Führt zu einer Seite in der offiziellen Domäne SecondLife.com oder LindenLab.com.</string>
- <string name="TooltipOutboxDragToWorld">Sie können keine Objekte aus dem Marktplatz-Auflistungsordner rezzen</string>
- <string name="TooltipOutboxWorn">Sie können Objekte, die Sie tragen, nicht in den Marktplatz-Auflistungsordner stellen</string>
- <string name="TooltipOutboxFolderLevels">Tiefe der verschachtelten Ordner überschreitet [AMOUNT]. Reduzieren Sie die Ordnertiefe. Verpacken Sie ggf. einige Artikel.</string>
- <string name="TooltipOutboxTooManyFolders">Anzahl von Unterordnern überschreitet [AMOUNT]. Reduzieren Sie die Anzahl von Ordnern in Ihrer Auflistung. Verpacken Sie ggf. einige Artikel.</string>
- <string name="TooltipOutboxTooManyObjects">Anzahl von Objekten überschreitet [AMOUNT]. Um mehr als [AMOUNT] Objekte in einer Auflistung verkaufen zu können, müssen Sie einige davon verpacken.</string>
- <string name="TooltipOutboxTooManyStockItems">Anzahl von Bestandsobjekten überschreitet [AMOUNT].</string>
- <string name="TooltipOutboxCannotDropOnRoot">Sie können Objekte oder Ordner nur in der Registerkarte „ALLE“ oder „NICHT VERKNüPFT“ ablegen. Klicken Sie auf eine dieser Registerkarten und versuchen Sie dann erneut, Ihre Objekte bzw. Ordner zu verschieben.</string>
- <string name="TooltipOutboxNoTransfer">Mindestens eines dieser Objekte kann nicht verkauft oder übertragen werden</string>
- <string name="TooltipOutboxNotInInventory">Sie können nur Objekte aus Ihrem Inventar in den Marktplatz einstellen</string>
- <string name="TooltipOutboxLinked">Sie können keine verknüpften Objekte oder Ordner in den Marktplatz einstellen</string>
- <string name="TooltipOutboxCallingCard">Sie können Visitenkarten nicht in den Marktplatz einstellen</string>
- <string name="TooltipOutboxDragActive">Sie können keine gelistete Auflistung entfernen</string>
- <string name="TooltipOutboxCannotMoveRoot">Der Stammordner mit Marktplatz-Auflistungen kann nicht verschoben werden.</string>
- <string name="TooltipOutboxMixedStock">Alle Objekte in einem Bestandsordner müssen vom gleichen Typ sein und die gleiche Berechtigung haben</string>
- <string name="TooltipDragOntoOwnChild">Sie können einen Ordner nicht in einen seiner untergeordneten Ordner verschieben</string>
- <string name="TooltipDragOntoSelf">Sie können einen Ordner nicht in sich selbst verschieben</string>
- <string name="TooltipHttpUrl">Anklicken, um Webseite anzuzeigen</string>
- <string name="TooltipSLURL">Anklicken, um Informationen zu diesem Standort anzuzeigen</string>
- <string name="TooltipAgentUrl">Anklicken, um das Profil dieses Einwohners anzuzeigen</string>
- <string name="TooltipAgentInspect">Mehr über diesen Einwohner</string>
- <string name="TooltipAgentMute">Klicken, um diesen Einwohner stummzuschalten</string>
- <string name="TooltipAgentUnmute">Klicken, um diesen Einwohner freizuschalten</string>
- <string name="TooltipAgentIM">Klicken, um diesem Einwohner eine IM zu schicken.</string>
- <string name="TooltipAgentPay">Klicken, um diesen Einwohner zu bezahlen</string>
- <string name="TooltipAgentOfferTeleport">Klicken, um diesem Einwohner einen Teleport anzubieten.</string>
- <string name="TooltipAgentRequestFriend">Klicken, um diesem Einwohner ein Freundschaftsangebot zu schicken.</string>
- <string name="TooltipGroupUrl">Anklicken, um Beschreibung der Gruppe anzuzeigen</string>
- <string name="TooltipEventUrl">Anklicken, um Beschreibung der Veranstaltung anzuzeigen</string>
- <string name="TooltipClassifiedUrl">Anklicken, um diese Anzeige anzuzeigen</string>
- <string name="TooltipParcelUrl">Anklicken, um Beschreibung der Parzelle anzuzeigen</string>
- <string name="TooltipTeleportUrl">Anklicken, um zu diesem Standort zu teleportieren</string>
- <string name="TooltipObjectIMUrl">Anklicken, um Beschreibung des Objekts anzuzeigen</string>
- <string name="TooltipMapUrl">Klicken, um diese Position auf der Karte anzuzeigen</string>
- <string name="TooltipSLAPP">Anklicken, um Befehl secondlife:// auszuführen</string>
+ <string name="TooltipSLIcon">
+ Führt zu einer Seite in der offiziellen Domäne SecondLife.com oder LindenLab.com.
+ </string>
+ <string name="TooltipOutboxDragToWorld">
+ Sie können keine Objekte aus dem Marktplatz-Auflistungsordner rezzen
+ </string>
+ <string name="TooltipOutboxWorn">
+ Sie können Objekte, die Sie tragen, nicht in den Marktplatz-Auflistungsordner stellen
+ </string>
+ <string name="TooltipOutboxFolderLevels">
+ Tiefe der verschachtelten Ordner überschreitet [AMOUNT]. Reduzieren Sie die Ordnertiefe. Verpacken Sie ggf. einige Artikel.
+ </string>
+ <string name="TooltipOutboxTooManyFolders">
+ Anzahl von Unterordnern überschreitet [AMOUNT]. Reduzieren Sie die Anzahl von Ordnern in Ihrer Auflistung. Verpacken Sie ggf. einige Artikel.
+ </string>
+ <string name="TooltipOutboxTooManyObjects">
+ Anzahl von Objekten überschreitet [AMOUNT]. Um mehr als [AMOUNT] Objekte in einer Auflistung verkaufen zu können, müssen Sie einige davon verpacken.
+ </string>
+ <string name="TooltipOutboxTooManyStockItems">
+ Anzahl von Bestandsobjekten überschreitet [AMOUNT].
+ </string>
+ <string name="TooltipOutboxCannotDropOnRoot">
+ Sie können Objekte oder Ordner nur in der Registerkarte „ALLE“ oder „NICHT VERKNüPFT“ ablegen. Klicken Sie auf eine dieser Registerkarten und versuchen Sie dann erneut, Ihre Objekte bzw. Ordner zu verschieben.
+ </string>
+ <string name="TooltipOutboxNoTransfer">
+ Mindestens eines dieser Objekte kann nicht verkauft oder übertragen werden
+ </string>
+ <string name="TooltipOutboxNotInInventory">
+ Sie können nur Objekte aus Ihrem Inventar in den Marktplatz einstellen
+ </string>
+ <string name="TooltipOutboxLinked">
+ Sie können keine verknüpften Objekte oder Ordner in den Marktplatz einstellen
+ </string>
+ <string name="TooltipOutboxCallingCard">
+ Sie können Visitenkarten nicht in den Marktplatz einstellen
+ </string>
+ <string name="TooltipOutboxDragActive">
+ Sie können keine gelistete Auflistung entfernen
+ </string>
+ <string name="TooltipOutboxCannotMoveRoot">
+ Der Stammordner mit Marktplatz-Auflistungen kann nicht verschoben werden.
+ </string>
+ <string name="TooltipOutboxMixedStock">
+ Alle Objekte in einem Bestandsordner müssen vom gleichen Typ sein und die gleiche Berechtigung haben
+ </string>
+ <string name="TooltipDragOntoOwnChild">
+ Sie können einen Ordner nicht in einen seiner untergeordneten Ordner verschieben
+ </string>
+ <string name="TooltipDragOntoSelf">
+ Sie können einen Ordner nicht in sich selbst verschieben
+ </string>
+ <string name="TooltipHttpUrl">
+ Anklicken, um Webseite anzuzeigen
+ </string>
+ <string name="TooltipSLURL">
+ Anklicken, um Informationen zu diesem Standort anzuzeigen
+ </string>
+ <string name="TooltipAgentUrl">
+ Anklicken, um das Profil dieses Einwohners anzuzeigen
+ </string>
+ <string name="TooltipAgentInspect">
+ Mehr über diesen Einwohner
+ </string>
+ <string name="TooltipAgentMute">
+ Klicken, um diesen Einwohner stummzuschalten
+ </string>
+ <string name="TooltipAgentUnmute">
+ Klicken, um diesen Einwohner freizuschalten
+ </string>
+ <string name="TooltipAgentIM">
+ Klicken, um diesem Einwohner eine IM zu schicken.
+ </string>
+ <string name="TooltipAgentPay">
+ Klicken, um diesen Einwohner zu bezahlen
+ </string>
+ <string name="TooltipAgentOfferTeleport">
+ Klicken, um diesem Einwohner einen Teleport anzubieten.
+ </string>
+ <string name="TooltipAgentRequestFriend">
+ Klicken, um diesem Einwohner ein Freundschaftsangebot zu schicken.
+ </string>
+ <string name="TooltipGroupUrl">
+ Anklicken, um Beschreibung der Gruppe anzuzeigen
+ </string>
+ <string name="TooltipEventUrl">
+ Anklicken, um Beschreibung der Veranstaltung anzuzeigen
+ </string>
+ <string name="TooltipClassifiedUrl">
+ Anklicken, um diese Anzeige anzuzeigen
+ </string>
+ <string name="TooltipParcelUrl">
+ Anklicken, um Beschreibung der Parzelle anzuzeigen
+ </string>
+ <string name="TooltipTeleportUrl">
+ Anklicken, um zu diesem Standort zu teleportieren
+ </string>
+ <string name="TooltipObjectIMUrl">
+ Anklicken, um Beschreibung des Objekts anzuzeigen
+ </string>
+ <string name="TooltipMapUrl">
+ Klicken, um diese Position auf der Karte anzuzeigen
+ </string>
+ <string name="TooltipSLAPP">
+ Anklicken, um Befehl secondlife:// auszuführen
+ </string>
<string name="CurrentURL" value=" CurrentURL: [CurrentURL]"/>
- <string name="TooltipEmail">Klicken, um eine E-Mail zu verfassen</string>
- <string name="SLurlLabelTeleport">Teleportieren nach</string>
- <string name="SLurlLabelShowOnMap">Karte anzeigen für</string>
- <string name="SLappAgentMute">Stummschalten</string>
- <string name="SLappAgentUnmute">Stummschaltung aufheben</string>
- <string name="SLappAgentIM">IM</string>
- <string name="SLappAgentPay">Bezahlen</string>
- <string name="SLappAgentOfferTeleport">Teleportangebot an</string>
- <string name="SLappAgentRequestFriend">Freundschaftsangebot</string>
- <string name="SLappAgentRemoveFriend">Entfernen von Freunden</string>
- <string name="BUTTON_CLOSE_DARWIN">Schließen (⌘W)</string>
- <string name="BUTTON_CLOSE_WIN">Schließen (Strg+W)</string>
- <string name="BUTTON_CLOSE_CHROME">Schließen</string>
- <string name="BUTTON_RESTORE">Wiederherstellen</string>
- <string name="BUTTON_MINIMIZE">Minimieren</string>
- <string name="BUTTON_TEAR_OFF">Abnehmen</string>
- <string name="BUTTON_DOCK">Andocken</string>
- <string name="BUTTON_HELP">Hilfe anzeigen</string>
- <string name="TooltipNotecardNotAllowedTypeDrop">Objekte dieses Typs können nicht an Notizkarten
-für diese Region angehängt werden.</string>
- <string name="TooltipNotecardOwnerRestrictedDrop">An Notizkarten können nur Objekte ohne
+ <string name="TooltipEmail">
+ Klicken, um eine E-Mail zu verfassen
+ </string>
+ <string name="SLurlLabelTeleport">
+ Teleportieren nach
+ </string>
+ <string name="SLurlLabelShowOnMap">
+ Karte anzeigen für
+ </string>
+ <string name="SLappAgentMute">
+ Stummschalten
+ </string>
+ <string name="SLappAgentUnmute">
+ Stummschaltung aufheben
+ </string>
+ <string name="SLappAgentIM">
+ IM
+ </string>
+ <string name="SLappAgentPay">
+ Bezahlen
+ </string>
+ <string name="SLappAgentOfferTeleport">
+ Teleportangebot an
+ </string>
+ <string name="SLappAgentRequestFriend">
+ Freundschaftsangebot
+ </string>
+ <string name="SLappAgentRemoveFriend">
+ Entfernen von Freunden
+ </string>
+ <string name="BUTTON_CLOSE_DARWIN">
+ Schließen (⌘W)
+ </string>
+ <string name="BUTTON_CLOSE_WIN">
+ Schließen (Strg+W)
+ </string>
+ <string name="BUTTON_CLOSE_CHROME">
+ Schließen
+ </string>
+ <string name="BUTTON_RESTORE">
+ Wiederherstellen
+ </string>
+ <string name="BUTTON_MINIMIZE">
+ Minimieren
+ </string>
+ <string name="BUTTON_TEAR_OFF">
+ Abnehmen
+ </string>
+ <string name="BUTTON_DOCK">
+ Andocken
+ </string>
+ <string name="BUTTON_HELP">
+ Hilfe anzeigen
+ </string>
+ <string name="TooltipNotecardNotAllowedTypeDrop">
+ Objekte dieses Typs können nicht an Notizkarten
+für diese Region angehängt werden.
+ </string>
+ <string name="TooltipNotecardOwnerRestrictedDrop">
+ An Notizkarten können nur Objekte ohne
Berechtigungseinschränkungen für den
-nächsten Eigentümer angehängt werden.</string>
- <string name="Searching">Suchen...</string>
- <string name="NoneFound">Nicht gefunden.</string>
- <string name="RetrievingData">Laden...</string>
- <string name="ReleaseNotes">Versionshinweise</string>
- <string name="RELEASE_NOTES_BASE_URL">https://megapahit.net/</string>
- <string name="LoadingData">Wird geladen...</string>
- <string name="AvatarNameNobody">(niemand)</string>
- <string name="AvatarNameWaiting">(wartet)</string>
- <string name="AvatarNameMultiple">(mehrere)</string>
- <string name="GroupNameNone">(keiner)</string>
- <string name="AssetErrorNone">Kein Fehler</string>
- <string name="AssetErrorRequestFailed">Asset-Anforderung: fehlgeschlagen</string>
- <string name="AssetErrorNonexistentFile">Asset-Anforderung: Datei existiert nicht</string>
- <string name="AssetErrorNotInDatabase">Asset-Anforderung: Asset in Datenbank nicht gefunden</string>
- <string name="AssetErrorEOF">Ende der Datei</string>
- <string name="AssetErrorCannotOpenFile">Datei kann nicht geöffnet werden</string>
- <string name="AssetErrorFileNotFound">Datei nicht gefunden</string>
- <string name="AssetErrorTCPTimeout">Zeitüberschreitung bei Dateiübertragung</string>
- <string name="AssetErrorCircuitGone">Verbindung verloren</string>
- <string name="AssetErrorPriceMismatch">Viewer und Server sind sich nicht über Preis einig</string>
- <string name="AssetErrorUnknownStatus">Status unbekannt</string>
- <string name="AssetUploadServerUnreacheble">Dienst nicht verfügbar.</string>
- <string name="AssetUploadServerDifficulties">Auf dem Server sind unerwartete Probleme aufgetreten.</string>
- <string name="AssetUploadServerUnavaliable">Dienst nicht verfügbar oder Zeitüberschreitung beim Upload.</string>
- <string name="AssetUploadRequestInvalid">Fehler bei der Upload-Anforderung. Um das Problem zu lösen,
-besuchen Sie bitte http://secondlife.com/support</string>
- <string name="SettingValidationError">Validierung für das Importieren der Einstellungen [NAME] fehlgeschlagen</string>
- <string name="SettingImportFileError">[FILE] konnte nicht geöffnet werden</string>
- <string name="SettingParseFileError">[FILE] konnte nicht geöffnet werden</string>
- <string name="SettingTranslateError">Altes Windlight [NAME] konnte nicht übernommen werden</string>
- <string name="texture">Textur</string>
- <string name="sound">Sound</string>
- <string name="calling card">Visitenkarte</string>
- <string name="landmark">Landmarke</string>
- <string name="legacy script">Skript (veraltet)</string>
- <string name="clothing">Kleidung</string>
- <string name="object">Objekt</string>
- <string name="note card">Notizkarte</string>
- <string name="folder">Ordner</string>
- <string name="root">Hauptverzeichnis</string>
- <string name="lsl2 script">LSL2 Skript</string>
- <string name="lsl bytecode">LSL Bytecode</string>
- <string name="tga texture">tga-Textur</string>
- <string name="body part">Körperteil</string>
- <string name="snapshot">Foto</string>
- <string name="lost and found">Fundbüro</string>
- <string name="targa image">targa-Bild</string>
- <string name="trash">Papierkorb</string>
- <string name="jpeg image">jpeg-Bild</string>
- <string name="animation">Animation</string>
- <string name="gesture">Geste</string>
- <string name="simstate">simstate</string>
- <string name="favorite">Favoriten</string>
- <string name="symbolic link">Link</string>
- <string name="symbolic folder link">Link zu Ordner</string>
- <string name="settings blob">Einstellungen</string>
- <string name="mesh">mesh</string>
- <string name="AvatarEditingAppearance">(Aussehen wird bearbeitet)</string>
- <string name="AvatarAway">Abwesend</string>
- <string name="AvatarDoNotDisturb">Nicht stören</string>
- <string name="AvatarMuted">Ignoriert</string>
- <string name="anim_express_afraid">Ängstlich</string>
- <string name="anim_express_anger">Verärgert</string>
- <string name="anim_away">Abwesend</string>
- <string name="anim_backflip">Rückwärtssalto</string>
- <string name="anim_express_laugh">Lachkrampf</string>
- <string name="anim_express_toothsmile">Grinsen</string>
- <string name="anim_blowkiss">Kusshand</string>
- <string name="anim_express_bored">Gelangweilt</string>
- <string name="anim_bow">Verbeugen</string>
- <string name="anim_clap">Klatschen</string>
- <string name="anim_courtbow">Diener</string>
- <string name="anim_express_cry">Weinen</string>
- <string name="anim_dance1">Tanz 1</string>
- <string name="anim_dance2">Tanz 2</string>
- <string name="anim_dance3">Tanz 3</string>
- <string name="anim_dance4">Tanz 4</string>
- <string name="anim_dance5">Tanz 5</string>
- <string name="anim_dance6">Tanz 6</string>
- <string name="anim_dance7">Tanz 7</string>
- <string name="anim_dance8">Tanz 8</string>
- <string name="anim_express_disdain">Verachten</string>
- <string name="anim_drink">Trinken</string>
- <string name="anim_express_embarrased">Verlegen</string>
- <string name="anim_angry_fingerwag">Drohen</string>
- <string name="anim_fist_pump">Faust pumpen</string>
- <string name="anim_yoga_float">Yogaflieger</string>
- <string name="anim_express_frown">Stirnrunzeln</string>
- <string name="anim_impatient">Ungeduldig</string>
- <string name="anim_jumpforjoy">Freudensprung</string>
- <string name="anim_kissmybutt">LMA</string>
- <string name="anim_express_kiss">Küssen</string>
- <string name="anim_laugh_short">Lachen</string>
- <string name="anim_musclebeach">Posen</string>
- <string name="anim_no_unhappy">Nein (Bedauernd)</string>
- <string name="anim_no_head">Nein</string>
- <string name="anim_nyanya">Ällabätsch</string>
- <string name="anim_punch_onetwo">Eins-Zwei-Punch</string>
- <string name="anim_express_open_mouth">Mund offen</string>
- <string name="anim_peace">Friede</string>
- <string name="anim_point_you">Auf anderen zeigen</string>
- <string name="anim_point_me">Auf mich zeigen</string>
- <string name="anim_punch_l">Linker Haken</string>
- <string name="anim_punch_r">Rechter Haken</string>
- <string name="anim_rps_countdown">SSP zählen</string>
- <string name="anim_rps_paper">SSP Papier</string>
- <string name="anim_rps_rock">SSP Stein</string>
- <string name="anim_rps_scissors">SSP Schere</string>
- <string name="anim_express_repulsed">Angewidert</string>
- <string name="anim_kick_roundhouse_r">Rundkick</string>
- <string name="anim_express_sad">Traurig</string>
- <string name="anim_salute">Salutieren</string>
- <string name="anim_shout">Rufen</string>
- <string name="anim_express_shrug">Schulterzucken</string>
- <string name="anim_express_smile">Lächeln</string>
- <string name="anim_smoke_idle">Zigarette halten</string>
- <string name="anim_smoke_inhale">Rauchen</string>
- <string name="anim_smoke_throw_down">Zigarette wegwerfen</string>
- <string name="anim_express_surprise">Überraschung</string>
- <string name="anim_sword_strike_r">Schwerthieb</string>
- <string name="anim_angry_tantrum">Wutanfall</string>
- <string name="anim_express_tongue_out">Zunge rausstrecken</string>
- <string name="anim_hello">Winken</string>
- <string name="anim_whisper">Flüstern</string>
- <string name="anim_whistle">Pfeifen</string>
- <string name="anim_express_wink">Zwinkern</string>
- <string name="anim_wink_hollywood">Zwinkern (Hollywood)</string>
- <string name="anim_express_worry">Sorgenvoll</string>
- <string name="anim_yes_happy">Ja (Erfreut)</string>
- <string name="anim_yes_head">Ja</string>
- <string name="multiple_textures">Mehrfach</string>
- <string name="use_texture">Textur verwenden</string>
- <string name="manip_hint1">Zum Einrasten Mauscursor</string>
- <string name="manip_hint2">über Lineal bewegen</string>
- <string name="texture_loading">Wird geladen...</string>
- <string name="worldmap_offline">Offline</string>
- <string name="worldmap_item_tooltip_format">[PRICE] L$ für [AREA] m²</string>
- <string name="worldmap_results_none_found">Nicht gefunden.</string>
- <string name="Ok">OK</string>
- <string name="Premature end of file">Unvollständige Datei</string>
- <string name="ST_NO_JOINT">HAUPTVERZEICHNIS oder VERBINDUNG nicht gefunden.</string>
- <string name="NearbyChatTitle">Chat in der Nähe</string>
- <string name="NearbyChatLabel">(Chat in der Nähe)</string>
- <string name="whisper">flüstert:</string>
- <string name="shout">ruft:</string>
- <string name="ringing">Verbindung mit In-Welt-Voice-Chat...</string>
- <string name="connected">Verbunden</string>
- <string name="unavailable">Der aktuelle Standort unterstützt keine Voice-Kommunikation</string>
- <string name="hang_up">Verbindung mit In-Welt-Voice-Chat getrennt</string>
- <string name="reconnect_nearby">Sie werden nun wieder mit dem Chat in Ihrer Nähe verbunden</string>
- <string name="ScriptQuestionCautionChatGranted">Dem Objekt „[OBJECTNAME]“, ein Objekt von „[OWNERNAME]“, in [REGIONNAME] [REGIONPOS], wurde folgende Berechtigung erteilt: [PERMISSIONS].</string>
- <string name="ScriptQuestionCautionChatDenied">Dem Objekt „[OBJECTNAME]“, ein Objekt von „[OWNERNAME]“, in [REGIONNAME] [REGIONPOS], wurde folgende Berechtigung verweigert: [PERMISSIONS].</string>
- <string name="AdditionalPermissionsRequestHeader">Wenn Sie dem Objekt Zugriff auf Ihr Konto gewähren, kann dieses außerdem:</string>
- <string name="ScriptTakeMoney">Linden-Dollar (L$) von Ihnen nehmen</string>
- <string name="ActOnControlInputs">Steuerung festlegen</string>
- <string name="RemapControlInputs">Steuerung neu zuweisen</string>
- <string name="AnimateYourAvatar">Avatar animieren</string>
- <string name="AttachToYourAvatar">An Avatar anhängen</string>
- <string name="ReleaseOwnership">Eigentum aufgeben und öffentlich machen</string>
- <string name="LinkAndDelink">Mit Objekten verknüpfen und davon trennen</string>
- <string name="AddAndRemoveJoints">Verbindungen zu anderen Objekten hinzufügen und entfernen</string>
- <string name="ChangePermissions">Berechtigungen ändern</string>
- <string name="TrackYourCamera">Kameraverfolgung</string>
- <string name="ControlYourCamera">Kamerasteuerung</string>
- <string name="TeleportYourAgent">Sie teleportieren</string>
- <string name="ForceSitAvatar">Ihren Avatar zwingen, sich zu setzen</string>
- <string name="ChangeEnvSettings">Umgebungseinstellungen ändern</string>
- <string name="NotConnected">Nicht verbunden</string>
- <string name="AgentNameSubst">(Sie)</string>
+nächsten Eigentümer angehängt werden.
+ </string>
+ <string name="Searching">
+ Suchen...
+ </string>
+ <string name="NoneFound">
+ Nicht gefunden.
+ </string>
+ <string name="RetrievingData">
+ Laden...
+ </string>
+ <string name="ReleaseNotes">
+ Versionshinweise
+ </string>
+ <string name="RELEASE_NOTES_BASE_URL">
+ https://megapahit.net/
+ </string>
+ <string name="LoadingData">
+ Wird geladen...
+ </string>
+ <string name="AvatarNameNobody">
+ (niemand)
+ </string>
+ <string name="AvatarNameWaiting">
+ (wartet)
+ </string>
+ <string name="AvatarNameMultiple">
+ (mehrere)
+ </string>
+ <string name="GroupNameNone">
+ (keiner)
+ </string>
+ <string name="AssetErrorNone">
+ Kein Fehler
+ </string>
+ <string name="AssetErrorRequestFailed">
+ Asset-Anforderung: fehlgeschlagen
+ </string>
+ <string name="AssetErrorNonexistentFile">
+ Asset-Anforderung: Datei existiert nicht
+ </string>
+ <string name="AssetErrorNotInDatabase">
+ Asset-Anforderung: Asset in Datenbank nicht gefunden
+ </string>
+ <string name="AssetErrorEOF">
+ Ende der Datei
+ </string>
+ <string name="AssetErrorCannotOpenFile">
+ Datei kann nicht geöffnet werden
+ </string>
+ <string name="AssetErrorFileNotFound">
+ Datei nicht gefunden
+ </string>
+ <string name="AssetErrorTCPTimeout">
+ Zeitüberschreitung bei Dateiübertragung
+ </string>
+ <string name="AssetErrorCircuitGone">
+ Verbindung verloren
+ </string>
+ <string name="AssetErrorPriceMismatch">
+ Viewer und Server sind sich nicht über Preis einig
+ </string>
+ <string name="AssetErrorUnknownStatus">
+ Status unbekannt
+ </string>
+ <string name="AssetUploadServerUnreacheble">
+ Dienst nicht verfügbar.
+ </string>
+ <string name="AssetUploadServerDifficulties">
+ Auf dem Server sind unerwartete Probleme aufgetreten.
+ </string>
+ <string name="AssetUploadServerUnavaliable">
+ Dienst nicht verfügbar oder Zeitüberschreitung beim Upload.
+ </string>
+ <string name="AssetUploadRequestInvalid">
+ Fehler bei der Upload-Anforderung. Um das Problem zu lösen,
+besuchen Sie bitte http://secondlife.com/support
+ </string>
+ <string name="SettingValidationError">
+ Validierung für das Importieren der Einstellungen [NAME] fehlgeschlagen
+ </string>
+ <string name="SettingImportFileError">
+ [FILE] konnte nicht geöffnet werden
+ </string>
+ <string name="SettingParseFileError">
+ [FILE] konnte nicht geöffnet werden
+ </string>
+ <string name="SettingTranslateError">
+ Altes Windlight [NAME] konnte nicht übernommen werden
+ </string>
+ <string name="texture">
+ Textur
+ </string>
+ <string name="sound">
+ Sound
+ </string>
+ <string name="calling card">
+ Visitenkarte
+ </string>
+ <string name="landmark">
+ Landmarke
+ </string>
+ <string name="legacy script">
+ Skript (veraltet)
+ </string>
+ <string name="clothing">
+ Kleidung
+ </string>
+ <string name="object">
+ Objekt
+ </string>
+ <string name="note card">
+ Notizkarte
+ </string>
+ <string name="folder">
+ Ordner
+ </string>
+ <string name="root">
+ Hauptverzeichnis
+ </string>
+ <string name="lsl2 script">
+ LSL2 Skript
+ </string>
+ <string name="lsl bytecode">
+ LSL Bytecode
+ </string>
+ <string name="tga texture">
+ tga-Textur
+ </string>
+ <string name="body part">
+ Körperteil
+ </string>
+ <string name="snapshot">
+ Foto
+ </string>
+ <string name="lost and found">
+ Fundbüro
+ </string>
+ <string name="targa image">
+ targa-Bild
+ </string>
+ <string name="trash">
+ Papierkorb
+ </string>
+ <string name="jpeg image">
+ jpeg-Bild
+ </string>
+ <string name="animation">
+ Animation
+ </string>
+ <string name="gesture">
+ Geste
+ </string>
+ <string name="simstate">
+ simstate
+ </string>
+ <string name="favorite">
+ Favoriten
+ </string>
+ <string name="symbolic link">
+ Link
+ </string>
+ <string name="symbolic folder link">
+ Link zu Ordner
+ </string>
+ <string name="settings blob">
+ Einstellungen
+ </string>
+ <string name="mesh">
+ mesh
+ </string>
+ <string name="AvatarEditingAppearance">
+ (Aussehen wird bearbeitet)
+ </string>
+ <string name="AvatarAway">
+ Abwesend
+ </string>
+ <string name="AvatarDoNotDisturb">
+ Nicht stören
+ </string>
+ <string name="AvatarMuted">
+ Ignoriert
+ </string>
+ <string name="anim_express_afraid">
+ Ängstlich
+ </string>
+ <string name="anim_express_anger">
+ Verärgert
+ </string>
+ <string name="anim_away">
+ Abwesend
+ </string>
+ <string name="anim_backflip">
+ Rückwärtssalto
+ </string>
+ <string name="anim_express_laugh">
+ Lachkrampf
+ </string>
+ <string name="anim_express_toothsmile">
+ Grinsen
+ </string>
+ <string name="anim_blowkiss">
+ Kusshand
+ </string>
+ <string name="anim_express_bored">
+ Gelangweilt
+ </string>
+ <string name="anim_bow">
+ Verbeugen
+ </string>
+ <string name="anim_clap">
+ Klatschen
+ </string>
+ <string name="anim_courtbow">
+ Diener
+ </string>
+ <string name="anim_express_cry">
+ Weinen
+ </string>
+ <string name="anim_dance1">
+ Tanz 1
+ </string>
+ <string name="anim_dance2">
+ Tanz 2
+ </string>
+ <string name="anim_dance3">
+ Tanz 3
+ </string>
+ <string name="anim_dance4">
+ Tanz 4
+ </string>
+ <string name="anim_dance5">
+ Tanz 5
+ </string>
+ <string name="anim_dance6">
+ Tanz 6
+ </string>
+ <string name="anim_dance7">
+ Tanz 7
+ </string>
+ <string name="anim_dance8">
+ Tanz 8
+ </string>
+ <string name="anim_express_disdain">
+ Verachten
+ </string>
+ <string name="anim_drink">
+ Trinken
+ </string>
+ <string name="anim_express_embarrased">
+ Verlegen
+ </string>
+ <string name="anim_angry_fingerwag">
+ Drohen
+ </string>
+ <string name="anim_fist_pump">
+ Faust pumpen
+ </string>
+ <string name="anim_yoga_float">
+ Yogaflieger
+ </string>
+ <string name="anim_express_frown">
+ Stirnrunzeln
+ </string>
+ <string name="anim_impatient">
+ Ungeduldig
+ </string>
+ <string name="anim_jumpforjoy">
+ Freudensprung
+ </string>
+ <string name="anim_kissmybutt">
+ LMA
+ </string>
+ <string name="anim_express_kiss">
+ Küssen
+ </string>
+ <string name="anim_laugh_short">
+ Lachen
+ </string>
+ <string name="anim_musclebeach">
+ Posen
+ </string>
+ <string name="anim_no_unhappy">
+ Nein (Bedauernd)
+ </string>
+ <string name="anim_no_head">
+ Nein
+ </string>
+ <string name="anim_nyanya">
+ Ällabätsch
+ </string>
+ <string name="anim_punch_onetwo">
+ Eins-Zwei-Punch
+ </string>
+ <string name="anim_express_open_mouth">
+ Mund offen
+ </string>
+ <string name="anim_peace">
+ Friede
+ </string>
+ <string name="anim_point_you">
+ Auf anderen zeigen
+ </string>
+ <string name="anim_point_me">
+ Auf mich zeigen
+ </string>
+ <string name="anim_punch_l">
+ Linker Haken
+ </string>
+ <string name="anim_punch_r">
+ Rechter Haken
+ </string>
+ <string name="anim_rps_countdown">
+ SSP zählen
+ </string>
+ <string name="anim_rps_paper">
+ SSP Papier
+ </string>
+ <string name="anim_rps_rock">
+ SSP Stein
+ </string>
+ <string name="anim_rps_scissors">
+ SSP Schere
+ </string>
+ <string name="anim_express_repulsed">
+ Angewidert
+ </string>
+ <string name="anim_kick_roundhouse_r">
+ Rundkick
+ </string>
+ <string name="anim_express_sad">
+ Traurig
+ </string>
+ <string name="anim_salute">
+ Salutieren
+ </string>
+ <string name="anim_shout">
+ Rufen
+ </string>
+ <string name="anim_express_shrug">
+ Schulterzucken
+ </string>
+ <string name="anim_express_smile">
+ Lächeln
+ </string>
+ <string name="anim_smoke_idle">
+ Zigarette halten
+ </string>
+ <string name="anim_smoke_inhale">
+ Rauchen
+ </string>
+ <string name="anim_smoke_throw_down">
+ Zigarette wegwerfen
+ </string>
+ <string name="anim_express_surprise">
+ Überraschung
+ </string>
+ <string name="anim_sword_strike_r">
+ Schwerthieb
+ </string>
+ <string name="anim_angry_tantrum">
+ Wutanfall
+ </string>
+ <string name="anim_express_tongue_out">
+ Zunge rausstrecken
+ </string>
+ <string name="anim_hello">
+ Winken
+ </string>
+ <string name="anim_whisper">
+ Flüstern
+ </string>
+ <string name="anim_whistle">
+ Pfeifen
+ </string>
+ <string name="anim_express_wink">
+ Zwinkern
+ </string>
+ <string name="anim_wink_hollywood">
+ Zwinkern (Hollywood)
+ </string>
+ <string name="anim_express_worry">
+ Sorgenvoll
+ </string>
+ <string name="anim_yes_happy">
+ Ja (Erfreut)
+ </string>
+ <string name="anim_yes_head">
+ Ja
+ </string>
+ <string name="multiple_textures">
+ Mehrfach
+ </string>
+ <string name="use_texture">
+ Textur verwenden
+ </string>
+ <string name="manip_hint1">
+ Zum Einrasten Mauscursor
+ </string>
+ <string name="manip_hint2">
+ über Lineal bewegen
+ </string>
+ <string name="texture_loading">
+ Wird geladen...
+ </string>
+ <string name="worldmap_offline">
+ Offline
+ </string>
+ <string name="worldmap_item_tooltip_format">
+ [PRICE] L$ für [AREA] m²
+ </string>
+ <string name="worldmap_results_none_found">
+ Nicht gefunden.
+ </string>
+ <string name="Ok">
+ OK
+ </string>
+ <string name="Premature end of file">
+ Unvollständige Datei
+ </string>
+ <string name="ST_NO_JOINT">
+ HAUPTVERZEICHNIS oder VERBINDUNG nicht gefunden.
+ </string>
+ <string name="NearbyChatTitle">
+ Chat in der Nähe
+ </string>
+ <string name="NearbyChatLabel">
+ (Chat in der Nähe)
+ </string>
+ <string name="whisper">
+ flüstert:
+ </string>
+ <string name="shout">
+ ruft:
+ </string>
+ <string name="ringing">
+ Verbindung mit In-Welt-Voice-Chat...
+ </string>
+ <string name="connected">
+ Verbunden
+ </string>
+ <string name="unavailable">
+ Der aktuelle Standort unterstützt keine Voice-Kommunikation
+ </string>
+ <string name="hang_up">
+ Verbindung mit In-Welt-Voice-Chat getrennt
+ </string>
+ <string name="reconnect_nearby">
+ Sie werden nun wieder mit dem Chat in Ihrer Nähe verbunden
+ </string>
+ <string name="ScriptQuestionCautionChatGranted">
+ Dem Objekt „[OBJECTNAME]“, ein Objekt von „[OWNERNAME]“, in [REGIONNAME] [REGIONPOS], wurde folgende Berechtigung erteilt: [PERMISSIONS].
+ </string>
+ <string name="ScriptQuestionCautionChatDenied">
+ Dem Objekt „[OBJECTNAME]“, ein Objekt von „[OWNERNAME]“, in [REGIONNAME] [REGIONPOS], wurde folgende Berechtigung verweigert: [PERMISSIONS].
+ </string>
+ <string name="AdditionalPermissionsRequestHeader">
+ Wenn Sie dem Objekt Zugriff auf Ihr Konto gewähren, kann dieses außerdem:
+ </string>
+ <string name="ScriptTakeMoney">
+ Linden-Dollar (L$) von Ihnen nehmen
+ </string>
+ <string name="ActOnControlInputs">
+ Steuerung festlegen
+ </string>
+ <string name="RemapControlInputs">
+ Steuerung neu zuweisen
+ </string>
+ <string name="AnimateYourAvatar">
+ Avatar animieren
+ </string>
+ <string name="AttachToYourAvatar">
+ An Avatar anhängen
+ </string>
+ <string name="ReleaseOwnership">
+ Eigentum aufgeben und öffentlich machen
+ </string>
+ <string name="LinkAndDelink">
+ Mit Objekten verknüpfen und davon trennen
+ </string>
+ <string name="AddAndRemoveJoints">
+ Verbindungen zu anderen Objekten hinzufügen und entfernen
+ </string>
+ <string name="ChangePermissions">
+ Berechtigungen ändern
+ </string>
+ <string name="TrackYourCamera">
+ Kameraverfolgung
+ </string>
+ <string name="ControlYourCamera">
+ Kamerasteuerung
+ </string>
+ <string name="TeleportYourAgent">
+ Sie teleportieren
+ </string>
+ <string name="ForceSitAvatar">
+ Ihren Avatar zwingen, sich zu setzen
+ </string>
+ <string name="ChangeEnvSettings">
+ Umgebungseinstellungen ändern
+ </string>
+ <string name="NotConnected">
+ Nicht verbunden
+ </string>
+ <string name="AgentNameSubst">
+ (Sie)
+ </string>
<string name="JoinAnExperience"/>
- <string name="SilentlyManageEstateAccess">Beim Verwalten von Grundbesitzzugangslisten Warnhinweise unterdrücken</string>
- <string name="OverrideYourAnimations">Ihre Standardanimationen ersetzen</string>
- <string name="ScriptReturnObjects">Objekte in Ihrem Namen zurückgeben</string>
- <string name="UnknownScriptPermission">(unbekannt)</string>
- <string name="SIM_ACCESS_PG">Generell</string>
- <string name="SIM_ACCESS_MATURE">Moderat</string>
- <string name="SIM_ACCESS_ADULT">Adult</string>
- <string name="SIM_ACCESS_DOWN">Offline</string>
- <string name="SIM_ACCESS_MIN">Unbekannt</string>
- <string name="land_type_unknown">(unbekannt)</string>
- <string name="Estate / Full Region">Grundstück / Vollständige Region</string>
- <string name="Estate / Homestead">Grundbesitz/Homestead</string>
- <string name="Mainland / Homestead">Mainland/Homestead</string>
- <string name="Mainland / Full Region">Mainland / Vollständige Region</string>
- <string name="all_files">Alle Dateien</string>
- <string name="sound_files">Sounds</string>
- <string name="animation_files">Animationen</string>
- <string name="image_files">Bilder</string>
- <string name="save_file_verb">Speichern</string>
- <string name="load_file_verb">Laden</string>
- <string name="targa_image_files">Targa-Bilder</string>
- <string name="bitmap_image_files">Bitmap-Bilder</string>
- <string name="png_image_files">PNG-Bilder</string>
- <string name="save_texture_image_files">Targa- oder PNG-Bilder</string>
- <string name="avi_movie_file">AVI-Filmdatei</string>
- <string name="xaf_animation_file">XAF Anim-Datei</string>
- <string name="xml_file">XML-Datei</string>
- <string name="raw_file">RAW-Datei</string>
- <string name="compressed_image_files">Komprimierte Bilder</string>
- <string name="load_files">Dateien laden</string>
- <string name="choose_the_directory">Verzeichnis auswählen</string>
- <string name="script_files">Skripts</string>
- <string name="dictionary_files">Wörterbücher</string>
- <string name="shape">Form</string>
- <string name="skin">Haut</string>
- <string name="hair">Haare</string>
- <string name="eyes">Augen</string>
- <string name="shirt">Hemd</string>
- <string name="pants">Hose</string>
- <string name="shoes">Schuhe</string>
- <string name="socks">Socken</string>
- <string name="jacket">Jacke</string>
- <string name="gloves">Handschuhe</string>
- <string name="undershirt">Unterhemd</string>
- <string name="underpants">Unterhose</string>
- <string name="skirt">Rock</string>
- <string name="alpha">Alpha</string>
- <string name="tattoo">Tätowierung</string>
- <string name="universal">Universal</string>
- <string name="physics">Physik</string>
- <string name="invalid">ungültig</string>
- <string name="none">keine</string>
- <string name="shirt_not_worn">Hemd nicht getragen</string>
- <string name="pants_not_worn">Hosen nicht getragen</string>
- <string name="shoes_not_worn">Schuhe nicht getragen</string>
- <string name="socks_not_worn">Socken nicht getragen</string>
- <string name="jacket_not_worn">Jacke nicht getragen</string>
- <string name="gloves_not_worn">Handschuhe nicht getragen</string>
- <string name="undershirt_not_worn">Unterhemd nicht getragen</string>
- <string name="underpants_not_worn">Unterhose nicht getragen</string>
- <string name="skirt_not_worn">Rock nicht getragen</string>
- <string name="alpha_not_worn">Alpha nicht getragen</string>
- <string name="tattoo_not_worn">Tätowierung nicht getragen</string>
- <string name="universal_not_worn">Universal nicht getragen</string>
- <string name="physics_not_worn">Physik nicht getragen</string>
- <string name="invalid_not_worn">ungültig</string>
- <string name="create_new_shape">Neue Form/Gestalt erstellen</string>
- <string name="create_new_skin">Neue Haut erstellen</string>
- <string name="create_new_hair">Neue Haare erstellen</string>
- <string name="create_new_eyes">Neue Augen erstellen</string>
- <string name="create_new_shirt">Neues Hemd erstellen</string>
- <string name="create_new_pants">Neue Hose erstellen</string>
- <string name="create_new_shoes">Neue Schuhe erstellen</string>
- <string name="create_new_socks">Neue Socken erstellen</string>
- <string name="create_new_jacket">Neue Jacke erstellen</string>
- <string name="create_new_gloves">Neue Handschuhe erstellen</string>
- <string name="create_new_undershirt">Neues Unterhemd erstellen</string>
- <string name="create_new_underpants">Neue Unterhose erstellen</string>
- <string name="create_new_skirt">Neuer Rock erstellen</string>
- <string name="create_new_alpha">Neue Alpha erstellen</string>
- <string name="create_new_tattoo">Neue Tätowierung erstellen</string>
- <string name="create_new_universal">Neues Universal erstellen</string>
- <string name="create_new_physics">Neue Physik erstellen</string>
- <string name="create_new_invalid">ungültig</string>
- <string name="NewWearable">Neue/r/s [WEARABLE_ITEM]</string>
- <string name="next">Weiter</string>
- <string name="ok">OK</string>
- <string name="GroupNotifyGroupNotice">Gruppenmitteilung</string>
- <string name="GroupNotifyGroupNotices">Gruppenmitteilungen</string>
- <string name="GroupNotifySentBy">Gesendet von</string>
- <string name="GroupNotifyAttached">Im Anhang:</string>
- <string name="GroupNotifyViewPastNotices">Alte Mitteilungen anzeigen oder hier Auswahl treffen, um keine Mitteilungen mehr zu erhalten.</string>
- <string name="GroupNotifyOpenAttachment">Anlage öffnen</string>
- <string name="GroupNotifySaveAttachment">Siehe Anhang</string>
- <string name="TeleportOffer">Teleport-Angebot</string>
- <string name="StartUpNotifications">Sie haben neue Benachrichtigungen erhalten, während Sie abwesend waren.</string>
- <string name="OverflowInfoChannelString">Sie haben noch %d weitere Benachrichtigungen</string>
- <string name="BodyPartsRightArm">Rechter Arm</string>
- <string name="BodyPartsHead">Kopf</string>
- <string name="BodyPartsLeftArm">Linker Arm</string>
- <string name="BodyPartsLeftLeg">Linkes Bein</string>
- <string name="BodyPartsTorso">Oberkörper</string>
- <string name="BodyPartsRightLeg">Rechtes Bein</string>
- <string name="BodyPartsEnhancedSkeleton">Erweitertes Skelett</string>
- <string name="GraphicsQualityLow">Niedrig</string>
- <string name="GraphicsQualityMid">Mittel</string>
- <string name="GraphicsQualityHigh">Hoch</string>
- <string name="LeaveMouselook">ESC drücken, um zur Normalansicht zurückzukehren</string>
- <string name="InventoryNoMatchingItems">Sie haben nicht das Richtige gefunden? Versuchen Sie es mit der [secondlife:///app/search/all/[SEARCH_TERM] Suche].</string>
- <string name="InventoryNoMatchingRecentItems">Sie haben nicht das Richtige gefunden? Versuchen Sie [secondlife:///app/inventory/filters Show filters].</string>
- <string name="PlacesNoMatchingItems">Sie haben nicht das Richtige gefunden? Versuchen Sie es mit der [secondlife:///app/search/places/[SEARCH_TERM] Suche].</string>
- <string name="FavoritesNoMatchingItems">Landmarke hier hin ziehen, um diese hinzuzufügen.</string>
- <string name="MarketplaceNoMatchingItems">Keine übereinstimmenden Objekte gefunden. Überprüfen Sie die Schreibweise des Suchbegriffs und versuchen Sie es noch einmal.</string>
- <string name="InventoryNoTexture">Sie haben keine Kopie dieser Textur in Ihrem Inventar.</string>
- <string name="InventoryInboxNoItems">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]/</string>
- <string name="MarketplaceURL_CreateStore">http://community.secondlife.com/t5/English-Knowledge-Base/Selling-in-the-Marketplace/ta-p/700193#Section_.3</string>
- <string name="MarketplaceURL_Dashboard">https://marketplace.[MARKETPLACE_DOMAIN_NAME]/merchants/store/dashboard</string>
- <string name="MarketplaceURL_Imports">https://marketplace.[MARKETPLACE_DOMAIN_NAME]/merchants/store/imports</string>
- <string name="MarketplaceURL_LearnMore">https://marketplace.[MARKETPLACE_DOMAIN_NAME]/learn_more</string>
- <string name="InventoryPlayAnimationTooltip">Fenster mit Spieloptionen öffnen.</string>
- <string name="InventoryPlayGestureTooltip">Ausgewählte Geste inworld ausführen.</string>
- <string name="InventoryPlaySoundTooltip">Fenster mit Spieloptionen öffnen.</string>
- <string name="InventoryOutboxNotMerchantTitle">Jeder kann Artikel im Marktplatz verkaufen.</string>
+ <string name="SilentlyManageEstateAccess">
+ Beim Verwalten von Grundbesitzzugangslisten Warnhinweise unterdrücken
+ </string>
+ <string name="OverrideYourAnimations">
+ Ihre Standardanimationen ersetzen
+ </string>
+ <string name="ScriptReturnObjects">
+ Objekte in Ihrem Namen zurückgeben
+ </string>
+ <string name="UnknownScriptPermission">
+ (unbekannt)
+ </string>
+ <string name="SIM_ACCESS_PG">
+ Generell
+ </string>
+ <string name="SIM_ACCESS_MATURE">
+ Moderat
+ </string>
+ <string name="SIM_ACCESS_ADULT">
+ Adult
+ </string>
+ <string name="SIM_ACCESS_DOWN">
+ Offline
+ </string>
+ <string name="SIM_ACCESS_MIN">
+ Unbekannt
+ </string>
+ <string name="land_type_unknown">
+ (unbekannt)
+ </string>
+ <string name="Estate / Full Region">
+ Grundstück / Vollständige Region
+ </string>
+ <string name="Estate / Homestead">
+ Grundbesitz/Homestead
+ </string>
+ <string name="Mainland / Homestead">
+ Mainland/Homestead
+ </string>
+ <string name="Mainland / Full Region">
+ Mainland / Vollständige Region
+ </string>
+ <string name="all_files">
+ Alle Dateien
+ </string>
+ <string name="sound_files">
+ Sounds
+ </string>
+ <string name="animation_files">
+ Animationen
+ </string>
+ <string name="image_files">
+ Bilder
+ </string>
+ <string name="save_file_verb">
+ Speichern
+ </string>
+ <string name="load_file_verb">
+ Laden
+ </string>
+ <string name="targa_image_files">
+ Targa-Bilder
+ </string>
+ <string name="bitmap_image_files">
+ Bitmap-Bilder
+ </string>
+ <string name="png_image_files">
+ PNG-Bilder
+ </string>
+ <string name="save_texture_image_files">
+ Targa- oder PNG-Bilder
+ </string>
+ <string name="avi_movie_file">
+ AVI-Filmdatei
+ </string>
+ <string name="xaf_animation_file">
+ XAF Anim-Datei
+ </string>
+ <string name="xml_file">
+ XML-Datei
+ </string>
+ <string name="raw_file">
+ RAW-Datei
+ </string>
+ <string name="compressed_image_files">
+ Komprimierte Bilder
+ </string>
+ <string name="load_files">
+ Dateien laden
+ </string>
+ <string name="choose_the_directory">
+ Verzeichnis auswählen
+ </string>
+ <string name="script_files">
+ Skripts
+ </string>
+ <string name="dictionary_files">
+ Wörterbücher
+ </string>
+ <string name="shape">
+ Form
+ </string>
+ <string name="skin">
+ Haut
+ </string>
+ <string name="hair">
+ Haare
+ </string>
+ <string name="eyes">
+ Augen
+ </string>
+ <string name="shirt">
+ Hemd
+ </string>
+ <string name="pants">
+ Hose
+ </string>
+ <string name="shoes">
+ Schuhe
+ </string>
+ <string name="socks">
+ Socken
+ </string>
+ <string name="jacket">
+ Jacke
+ </string>
+ <string name="gloves">
+ Handschuhe
+ </string>
+ <string name="undershirt">
+ Unterhemd
+ </string>
+ <string name="underpants">
+ Unterhose
+ </string>
+ <string name="skirt">
+ Rock
+ </string>
+ <string name="alpha">
+ Alpha
+ </string>
+ <string name="tattoo">
+ Tätowierung
+ </string>
+ <string name="universal">
+ Universal
+ </string>
+ <string name="physics">
+ Physik
+ </string>
+ <string name="invalid">
+ ungültig
+ </string>
+ <string name="none">
+ keine
+ </string>
+ <string name="shirt_not_worn">
+ Hemd nicht getragen
+ </string>
+ <string name="pants_not_worn">
+ Hosen nicht getragen
+ </string>
+ <string name="shoes_not_worn">
+ Schuhe nicht getragen
+ </string>
+ <string name="socks_not_worn">
+ Socken nicht getragen
+ </string>
+ <string name="jacket_not_worn">
+ Jacke nicht getragen
+ </string>
+ <string name="gloves_not_worn">
+ Handschuhe nicht getragen
+ </string>
+ <string name="undershirt_not_worn">
+ Unterhemd nicht getragen
+ </string>
+ <string name="underpants_not_worn">
+ Unterhose nicht getragen
+ </string>
+ <string name="skirt_not_worn">
+ Rock nicht getragen
+ </string>
+ <string name="alpha_not_worn">
+ Alpha nicht getragen
+ </string>
+ <string name="tattoo_not_worn">
+ Tätowierung nicht getragen
+ </string>
+ <string name="universal_not_worn">
+ Universal nicht getragen
+ </string>
+ <string name="physics_not_worn">
+ Physik nicht getragen
+ </string>
+ <string name="invalid_not_worn">
+ ungültig
+ </string>
+ <string name="create_new_shape">
+ Neue Form/Gestalt erstellen
+ </string>
+ <string name="create_new_skin">
+ Neue Haut erstellen
+ </string>
+ <string name="create_new_hair">
+ Neue Haare erstellen
+ </string>
+ <string name="create_new_eyes">
+ Neue Augen erstellen
+ </string>
+ <string name="create_new_shirt">
+ Neues Hemd erstellen
+ </string>
+ <string name="create_new_pants">
+ Neue Hose erstellen
+ </string>
+ <string name="create_new_shoes">
+ Neue Schuhe erstellen
+ </string>
+ <string name="create_new_socks">
+ Neue Socken erstellen
+ </string>
+ <string name="create_new_jacket">
+ Neue Jacke erstellen
+ </string>
+ <string name="create_new_gloves">
+ Neue Handschuhe erstellen
+ </string>
+ <string name="create_new_undershirt">
+ Neues Unterhemd erstellen
+ </string>
+ <string name="create_new_underpants">
+ Neue Unterhose erstellen
+ </string>
+ <string name="create_new_skirt">
+ Neuer Rock erstellen
+ </string>
+ <string name="create_new_alpha">
+ Neue Alpha erstellen
+ </string>
+ <string name="create_new_tattoo">
+ Neue Tätowierung erstellen
+ </string>
+ <string name="create_new_universal">
+ Neues Universal erstellen
+ </string>
+ <string name="create_new_physics">
+ Neue Physik erstellen
+ </string>
+ <string name="create_new_invalid">
+ ungültig
+ </string>
+ <string name="NewWearable">
+ Neue/r/s [WEARABLE_ITEM]
+ </string>
+ <string name="next">
+ Weiter
+ </string>
+ <string name="ok">
+ OK
+ </string>
+ <string name="GroupNotifyGroupNotice">
+ Gruppenmitteilung
+ </string>
+ <string name="GroupNotifyGroupNotices">
+ Gruppenmitteilungen
+ </string>
+ <string name="GroupNotifySentBy">
+ Gesendet von
+ </string>
+ <string name="GroupNotifyAttached">
+ Im Anhang:
+ </string>
+ <string name="GroupNotifyViewPastNotices">
+ Alte Mitteilungen anzeigen oder hier Auswahl treffen, um keine Mitteilungen mehr zu erhalten.
+ </string>
+ <string name="GroupNotifyOpenAttachment">
+ Anlage öffnen
+ </string>
+ <string name="GroupNotifySaveAttachment">
+ Siehe Anhang
+ </string>
+ <string name="TeleportOffer">
+ Teleport-Angebot
+ </string>
+ <string name="StartUpNotifications">
+ Sie haben neue Benachrichtigungen erhalten, während Sie abwesend waren.
+ </string>
+ <string name="OverflowInfoChannelString">
+ Sie haben noch %d weitere Benachrichtigungen
+ </string>
+ <string name="BodyPartsRightArm">
+ Rechter Arm
+ </string>
+ <string name="BodyPartsHead">
+ Kopf
+ </string>
+ <string name="BodyPartsLeftArm">
+ Linker Arm
+ </string>
+ <string name="BodyPartsLeftLeg">
+ Linkes Bein
+ </string>
+ <string name="BodyPartsTorso">
+ Oberkörper
+ </string>
+ <string name="BodyPartsRightLeg">
+ Rechtes Bein
+ </string>
+ <string name="BodyPartsEnhancedSkeleton">
+ Erweitertes Skelett
+ </string>
+ <string name="GraphicsQualityLow">
+ Niedrig
+ </string>
+ <string name="GraphicsQualityMid">
+ Mittel
+ </string>
+ <string name="GraphicsQualityHigh">
+ Hoch
+ </string>
+ <string name="LeaveMouselook">
+ ESC drücken, um zur Normalansicht zurückzukehren
+ </string>
+ <string name="InventoryNoMatchingItems">
+ Sie haben nicht das Richtige gefunden? Versuchen Sie es mit der [secondlife:///app/search/all/[SEARCH_TERM] Suche].
+ </string>
+ <string name="InventoryNoMatchingRecentItems">
+ Sie haben nicht das Richtige gefunden? Versuchen Sie [secondlife:///app/inventory/filters Show filters].
+ </string>
+ <string name="PlacesNoMatchingItems">
+ Sie haben nicht das Richtige gefunden? Versuchen Sie es mit der [secondlife:///app/search/places/[SEARCH_TERM] Suche].
+ </string>
+ <string name="FavoritesNoMatchingItems">
+ Landmarke hier hin ziehen, um diese hinzuzufügen.
+ </string>
+ <string name="MarketplaceNoMatchingItems">
+ Keine übereinstimmenden Objekte gefunden. Überprüfen Sie die Schreibweise des Suchbegriffs und versuchen Sie es noch einmal.
+ </string>
+ <string name="InventoryNoTexture">
+ Sie haben keine Kopie dieser Textur in Ihrem Inventar.
+ </string>
+ <string name="InventoryInboxNoItems">
+ 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]/
+ </string>
+ <string name="MarketplaceURL_CreateStore">
+ http://community.secondlife.com/t5/English-Knowledge-Base/Selling-in-the-Marketplace/ta-p/700193#Section_.3
+ </string>
+ <string name="MarketplaceURL_Dashboard">
+ https://marketplace.[MARKETPLACE_DOMAIN_NAME]/merchants/store/dashboard
+ </string>
+ <string name="MarketplaceURL_Imports">
+ https://marketplace.[MARKETPLACE_DOMAIN_NAME]/merchants/store/imports
+ </string>
+ <string name="MarketplaceURL_LearnMore">
+ https://marketplace.[MARKETPLACE_DOMAIN_NAME]/learn_more
+ </string>
+ <string name="InventoryPlayAnimationTooltip">
+ Fenster mit Spieloptionen öffnen.
+ </string>
+ <string name="InventoryPlayGestureTooltip">
+ Ausgewählte Geste inworld ausführen.
+ </string>
+ <string name="InventoryPlaySoundTooltip">
+ Fenster mit Spieloptionen öffnen.
+ </string>
+ <string name="InventoryOutboxNotMerchantTitle">
+ Jeder kann Artikel im Marktplatz verkaufen.
+ </string>
<string name="InventoryOutboxNotMerchantTooltip"/>
- <string name="InventoryOutboxNotMerchant">Wenn Sie als Händler aktiv werden möchten, müssen Sie einen [[MARKETPLACE_CREATE_STORE_URL] Laden im Marktplatz erstellen].</string>
- <string name="InventoryOutboxNoItemsTitle">Ihre Outbox ist leer.</string>
+ <string name="InventoryOutboxNotMerchant">
+ Wenn Sie als Händler aktiv werden möchten, müssen Sie einen [[MARKETPLACE_CREATE_STORE_URL] Laden im Marktplatz erstellen].
+ </string>
+ <string name="InventoryOutboxNoItemsTitle">
+ Ihre Outbox ist leer.
+ </string>
<string name="InventoryOutboxNoItemsTooltip"/>
- <string name="InventoryOutboxNoItems">Ziehen Sie Ordner in dien Bereich und klicken Sie auf „In Marktplatz übertragen“, um sie im [[MARKETPLACE_DASHBOARD_URL] Marktplatz] zum Verkauf anzubieten.</string>
- <string name="InventoryOutboxInitializingTitle">Marktplatz wird initialisiert.</string>
- <string name="InventoryOutboxInitializing">Wir greifen auf Ihr Konto im [[MARKETPLACE_CREATE_STORE_URL] Marktplatz-Laden] zu.</string>
- <string name="InventoryOutboxErrorTitle">Marktplatzfehler.</string>
- <string name="InventoryOutboxError">Der [[MARKETPLACE_CREATE_STORE_URL] Marktplatz-Laden] gibt Fehler zurück.</string>
- <string name="InventoryMarketplaceError">Beim Öffnen der Marktplatz-Auflistungen ist ein Fehler aufgetreten.
-Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich unter http://support.secondlife.com an den Support von Second Life.</string>
- <string name="InventoryMarketplaceListingsNoItemsTitle">Ihr Ordner mit Marktplatz-Auflistungen ist leer.</string>
- <string name="InventoryMarketplaceListingsNoItems">Ziehen Sie Ordner in diesen Bereich, um sie im [[MARKETPLACE_DASHBOARD_URL] Marktplatz] zum Verkauf anzubieten.</string>
- <string name="InventoryItemsCount">( [ITEMS_COUNT] Artikel )</string>
- <string name="Marketplace Validation Warning Stock">Bestandsordner müssen in einem Versionsordner gespeichert sein</string>
- <string name="Marketplace Validation Error Mixed Stock">: Fehler: Alle Objekte in einem Bestandsordner müssen kopiergeschützt und vom gleichen Typ sein.</string>
- <string name="Marketplace Validation Error Subfolder In Stock">: Fehler: Bestandsordner kann keine Unterordner enthalten</string>
- <string name="Marketplace Validation Warning Empty">: Warnung: Ordner enthält keine Objekte</string>
- <string name="Marketplace Validation Warning Create Stock">: Warnung: Bestandsordner wird erstellt</string>
- <string name="Marketplace Validation Warning Create Version">: Warnung: Versionsordner wird erstellt</string>
- <string name="Marketplace Validation Warning Move">: Warnung: Objekte werden verschoben</string>
- <string name="Marketplace Validation Warning Delete">: Warnung: Ordnerinhalte wurden in Bestandsordner übertragen; leerer Ordner wird entfernt</string>
- <string name="Marketplace Validation Error Stock Item">: Fehler: Kopiergeschützte Objekte müssen in einem Bestandsordner gespeichert sein</string>
- <string name="Marketplace Validation Warning Unwrapped Item">: Warnung: Objekte müssen in einem Versionsordner gespeichert sein</string>
- <string name="Marketplace Validation Error">: Fehler:</string>
- <string name="Marketplace Validation Warning">: Warnung:</string>
- <string name="Marketplace Validation Error Empty Version">: Warnung: Versionsordner muss mindestens 1 Objekt enthalten</string>
- <string name="Marketplace Validation Error Empty Stock">: Warnung: Bestandsordner muss mindestens 1 Objekt enthalten</string>
- <string name="Marketplace Validation No Error">Keine Fehler oder Warnungen</string>
- <string name="Marketplace Error None">Keine Fehler</string>
- <string name="Marketplace Error Prefix">Fehler:</string>
- <string name="Marketplace Error Not Merchant">Bevor Sie Artikel in den Marktplatz übertragen können, müssen Sie sich als Händler registrieren (kostenlos).</string>
- <string name="Marketplace Error Not Accepted">Objekt kann nicht in diesen Ordner verschoben werden.</string>
- <string name="Marketplace Error Unsellable Item">Dieses Objekt kann nicht im Marktplatz verkauft werden.</string>
- <string name="MarketplaceNoID">keine Mkt-ID</string>
- <string name="MarketplaceLive">aufgelistet</string>
- <string name="MarketplaceActive">aktiv</string>
- <string name="MarketplaceMax">max.</string>
- <string name="MarketplaceStock">Bestand</string>
- <string name="MarketplaceNoStock">ausverkauft</string>
- <string name="MarketplaceUpdating">Aktualisierung läuft...</string>
- <string name="UploadFeeInfo">Die Gebühr richtet sich nach deiner Abonnementstufe. Für höhere Stufen werden niedrigere Gebühren erhoben. [https://secondlife.com/my/account/membership.php? Mehr erfahren]</string>
- <string name="Open landmarks">Wegweiser öffnen</string>
- <string name="Unconstrained">Unbegrenzt</string>
+ <string name="InventoryOutboxNoItems">
+ Ziehen Sie Ordner in dien Bereich und klicken Sie auf „In Marktplatz übertragen“, um sie im [[MARKETPLACE_DASHBOARD_URL] Marktplatz] zum Verkauf anzubieten.
+ </string>
+ <string name="InventoryOutboxInitializingTitle">
+ Marktplatz wird initialisiert.
+ </string>
+ <string name="InventoryOutboxInitializing">
+ Wir greifen auf Ihr Konto im [[MARKETPLACE_CREATE_STORE_URL] Marktplatz-Laden] zu.
+ </string>
+ <string name="InventoryOutboxErrorTitle">
+ Marktplatzfehler.
+ </string>
+ <string name="InventoryOutboxError">
+ Der [[MARKETPLACE_CREATE_STORE_URL] Marktplatz-Laden] gibt Fehler zurück.
+ </string>
+ <string name="InventoryMarketplaceError">
+ Beim Öffnen der Marktplatz-Auflistungen ist ein Fehler aufgetreten.
+Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich unter http://support.secondlife.com an den Support von Second Life.
+ </string>
+ <string name="InventoryMarketplaceListingsNoItemsTitle">
+ Ihr Ordner mit Marktplatz-Auflistungen ist leer.
+ </string>
+ <string name="InventoryMarketplaceListingsNoItems">
+ Ziehen Sie Ordner in diesen Bereich, um sie im [[MARKETPLACE_DASHBOARD_URL] Marktplatz] zum Verkauf anzubieten.
+ </string>
+ <string name="InventoryItemsCount">
+ ( [ITEMS_COUNT] Artikel )
+ </string>
+ <string name="Marketplace Validation Warning Stock">
+ Bestandsordner müssen in einem Versionsordner gespeichert sein
+ </string>
+ <string name="Marketplace Validation Error Mixed Stock">
+ : Fehler: Alle Objekte in einem Bestandsordner müssen kopiergeschützt und vom gleichen Typ sein.
+ </string>
+ <string name="Marketplace Validation Error Subfolder In Stock">
+ : Fehler: Bestandsordner kann keine Unterordner enthalten
+ </string>
+ <string name="Marketplace Validation Warning Empty">
+ : Warnung: Ordner enthält keine Objekte
+ </string>
+ <string name="Marketplace Validation Warning Create Stock">
+ : Warnung: Bestandsordner wird erstellt
+ </string>
+ <string name="Marketplace Validation Warning Create Version">
+ : Warnung: Versionsordner wird erstellt
+ </string>
+ <string name="Marketplace Validation Warning Move">
+ : Warnung: Objekte werden verschoben
+ </string>
+ <string name="Marketplace Validation Warning Delete">
+ : Warnung: Ordnerinhalte wurden in Bestandsordner übertragen; leerer Ordner wird entfernt
+ </string>
+ <string name="Marketplace Validation Error Stock Item">
+ : Fehler: Kopiergeschützte Objekte müssen in einem Bestandsordner gespeichert sein
+ </string>
+ <string name="Marketplace Validation Warning Unwrapped Item">
+ : Warnung: Objekte müssen in einem Versionsordner gespeichert sein
+ </string>
+ <string name="Marketplace Validation Error">
+ : Fehler:
+ </string>
+ <string name="Marketplace Validation Warning">
+ : Warnung:
+ </string>
+ <string name="Marketplace Validation Error Empty Version">
+ : Warnung: Versionsordner muss mindestens 1 Objekt enthalten
+ </string>
+ <string name="Marketplace Validation Error Empty Stock">
+ : Warnung: Bestandsordner muss mindestens 1 Objekt enthalten
+ </string>
+ <string name="Marketplace Validation No Error">
+ Keine Fehler oder Warnungen
+ </string>
+ <string name="Marketplace Error None">
+ Keine Fehler
+ </string>
+ <string name="Marketplace Error Prefix">
+ Fehler:
+ </string>
+ <string name="Marketplace Error Not Merchant">
+ Bevor Sie Artikel in den Marktplatz übertragen können, müssen Sie sich als Händler registrieren (kostenlos).
+ </string>
+ <string name="Marketplace Error Not Accepted">
+ Objekt kann nicht in diesen Ordner verschoben werden.
+ </string>
+ <string name="Marketplace Error Unsellable Item">
+ Dieses Objekt kann nicht im Marktplatz verkauft werden.
+ </string>
+ <string name="MarketplaceNoID">
+ keine Mkt-ID
+ </string>
+ <string name="MarketplaceLive">
+ aufgelistet
+ </string>
+ <string name="MarketplaceActive">
+ aktiv
+ </string>
+ <string name="MarketplaceMax">
+ max.
+ </string>
+ <string name="MarketplaceStock">
+ Bestand
+ </string>
+ <string name="MarketplaceNoStock">
+ ausverkauft
+ </string>
+ <string name="MarketplaceUpdating">
+ Aktualisierung läuft...
+ </string>
+ <string name="UploadFeeInfo">
+ Die Gebühr richtet sich nach deiner Abonnementstufe. Für höhere Stufen werden niedrigere Gebühren erhoben. [https://secondlife.com/my/account/membership.php? Mehr erfahren]
+ </string>
+ <string name="Open landmarks">
+ Wegweiser öffnen
+ </string>
+ <string name="Unconstrained">
+ Unbegrenzt
+ </string>
<string name="no_transfer" value=" (kein Transferieren)"/>
<string name="no_modify" value=" (kein Bearbeiten)"/>
<string name="no_copy" value=" (kein Kopieren)"/>
<string name="worn" value=" (getragen)"/>
<string name="link" value=" (Link)"/>
<string name="broken_link" value=" (unvollständiger_Link)"/>
- <string name="LoadingContents">Inhalte werden geladen...</string>
- <string name="NoContents">Keine Inhalte</string>
+ <string name="LoadingContents">
+ Inhalte werden geladen...
+ </string>
+ <string name="NoContents">
+ Keine Inhalte
+ </string>
<string name="WornOnAttachmentPoint" value=" (getragen am [ATTACHMENT_POINT])"/>
<string name="AttachmentErrorMessage" value="([ATTACHMENT_ERROR])"/>
<string name="ActiveGesture" value="[GESLABEL] (aktiviert)"/>
- <string name="PermYes">Ja</string>
- <string name="PermNo">Nein</string>
+ <string name="PermYes">
+ Ja
+ </string>
+ <string name="PermNo">
+ Nein
+ </string>
<string name="Chat Message" value="Chat:"/>
<string name="Sound" value=" Sound:"/>
<string name="Wait" value=" --- Warten:"/>
@@ -636,1443 +1704,4215 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich unter http://suppo
<string name="Snapshots" value=" Fotos,"/>
<string name="No Filters" value="Nein "/>
<string name="Since Logoff" value=" - Seit Abmeldung"/>
- <string name="InvFolder My Inventory">Mein Inventar</string>
- <string name="InvFolder Library">Bibliothek</string>
- <string name="InvFolder Textures">Texturen</string>
- <string name="InvFolder Sounds">Sounds</string>
- <string name="InvFolder Calling Cards">Visitenkarten</string>
- <string name="InvFolder Landmarks">Landmarken</string>
- <string name="InvFolder Scripts">Skripts</string>
- <string name="InvFolder Clothing">Kleidung</string>
- <string name="InvFolder Objects">Objekte</string>
- <string name="InvFolder Notecards">Notizkarten</string>
- <string name="InvFolder New Folder">Neuer Ordner</string>
- <string name="InvFolder Inventory">Inventar</string>
- <string name="InvFolder Uncompressed Images">Nicht-Komprimierte Bilder</string>
- <string name="InvFolder Body Parts">Körperteile</string>
- <string name="InvFolder Trash">Papierkorb</string>
- <string name="InvFolder Photo Album">Fotoalbum</string>
- <string name="InvFolder Lost And Found">Fundbüro</string>
- <string name="InvFolder Uncompressed Sounds">Nicht-Komprimierte Sounds</string>
- <string name="InvFolder Animations">Animationen</string>
- <string name="InvFolder Gestures">Gesten</string>
- <string name="InvFolder Favorite">Meine Favoriten</string>
- <string name="InvFolder favorite">Meine Favoriten</string>
- <string name="InvFolder Favorites">Meine Favoriten</string>
- <string name="InvFolder favorites">Meine Favoriten</string>
- <string name="InvFolder Current Outfit">Aktuelles Outfit</string>
- <string name="InvFolder Initial Outfits">Ursprüngliche Outfits</string>
- <string name="InvFolder My Outfits">Meine Outfits</string>
- <string name="InvFolder Accessories">Zubehör</string>
- <string name="InvFolder Meshes">Netze</string>
- <string name="InvFolder Received Items">Erhaltene Artikel</string>
- <string name="InvFolder Merchant Outbox">Händler-Outbox</string>
- <string name="InvFolder Friends">Freunde</string>
- <string name="InvFolder All">Alle</string>
- <string name="no_attachments">Keine Anhänge getragen</string>
- <string name="Attachments remain">Anhänge (noch [COUNT] Positionen frei)</string>
- <string name="Buy">Kaufen</string>
- <string name="BuyforL$">Kaufen für L$</string>
- <string name="Stone">Stein</string>
- <string name="Metal">Metall</string>
- <string name="Glass">Glas</string>
- <string name="Wood">Holz</string>
- <string name="Flesh">Fleisch</string>
- <string name="Plastic">Plastik</string>
- <string name="Rubber">Gummi</string>
- <string name="Light">Hell</string>
- <string name="KBShift">Umschalt-Taste</string>
- <string name="KBCtrl">Strg</string>
- <string name="Chest">Brust</string>
- <string name="Skull">Schädel</string>
- <string name="Left Shoulder">Linke Schulter</string>
- <string name="Right Shoulder">Rechte Schulter</string>
- <string name="Left Hand">Linke Hand</string>
- <string name="Right Hand">Rechte Hand</string>
- <string name="Left Foot">Linker Fuß</string>
- <string name="Right Foot">Rechter Fuß</string>
- <string name="Spine">Wirbelsäule</string>
- <string name="Pelvis">Becken</string>
- <string name="Mouth">Mund</string>
- <string name="Chin">Kinn</string>
- <string name="Left Ear">Linkes Ohr</string>
- <string name="Right Ear">Rechtes Ohr</string>
- <string name="Left Eyeball">Linker Augapfel</string>
- <string name="Right Eyeball">Rechter Augapfel</string>
- <string name="Nose">Nase</string>
- <string name="R Upper Arm">R Oberarm</string>
- <string name="R Forearm">R Unterarm</string>
- <string name="L Upper Arm">L Oberarm</string>
- <string name="L Forearm">L Unterarm</string>
- <string name="Right Hip">Rechte Hüfte</string>
- <string name="R Upper Leg">R Oberschenkel</string>
- <string name="R Lower Leg">R Unterschenkel</string>
- <string name="Left Hip">Linke Hüfte</string>
- <string name="L Upper Leg">L Oberschenkel</string>
- <string name="L Lower Leg">L Unterschenkel</string>
- <string name="Stomach">Bauch</string>
- <string name="Left Pec">Linke Brust</string>
- <string name="Right Pec">Rechts</string>
- <string name="Neck">Hals</string>
- <string name="Avatar Center">Avatar-Mitte</string>
- <string name="Left Ring Finger">Linker Ringfinger</string>
- <string name="Right Ring Finger">Rechter Ringfinger</string>
- <string name="Tail Base">Schwanzansatz</string>
- <string name="Tail Tip">Schwanzspitze</string>
- <string name="Left Wing">Linker Flügel</string>
- <string name="Right Wing">Rechter Flügel</string>
- <string name="Jaw">Kiefer</string>
- <string name="Alt Left Ear">Alt. linkes Ohr</string>
- <string name="Alt Right Ear">Alt. rechtes Ohr</string>
- <string name="Alt Left Eye">Alt. linkes Auge</string>
- <string name="Alt Right Eye">Alt. rechtes Auge</string>
- <string name="Tongue">Zunge</string>
- <string name="Groin">Leiste</string>
- <string name="Left Hind Foot">Linker hinterer Fuß</string>
- <string name="Right Hind Foot">Rechter hinterer Fuß</string>
- <string name="Invalid Attachment">Ungültige Stelle für Anhang</string>
- <string name="ATTACHMENT_MISSING_ITEM">Fehler: fehlendes Objekt</string>
- <string name="ATTACHMENT_MISSING_BASE_ITEM">Fehler: Basisobjekt fehlt</string>
- <string name="ATTACHMENT_NOT_ATTACHED">Fehler: Objekt ist im aktuellen Outfit, aber nicht angehängt</string>
- <string name="YearsMonthsOld">[AGEYEARS] [AGEMONTHS] alt</string>
- <string name="YearsOld">[AGEYEARS] alt</string>
- <string name="MonthsOld">[AGEMONTHS] alt</string>
- <string name="WeeksOld">[AGEWEEKS] alt</string>
- <string name="DaysOld">[AGEDAYS] alt</string>
- <string name="TodayOld">Seit heute Mitglied</string>
- <string name="av_render_everyone_now">Jetzt kann jeder Sie sehen.</string>
- <string name="av_render_not_everyone">Sie sind u. U. nicht für alle Leute in Ihrer Nähe sichtbar.</string>
- <string name="av_render_over_half">Sie sind u. U. für mehr als die Hälfte der Leute in Ihrer Nähe nicht sichtbar.</string>
- <string name="av_render_most_of">Sie sind u. U. für die meisten Leuten in Ihrer Nähe nicht sichtbar.</string>
- <string name="av_render_anyone">Sie sind u. U. für niemanden in Ihrer Nähe sichtbar.</string>
- <string name="hud_description_total">Ihr HUD</string>
- <string name="hud_name_with_joint">[OBJ_NAME] (getragen von [JNT_NAME])</string>
- <string name="hud_render_memory_warning">[HUD_DETAILS] beansprucht viel Texturspeicher</string>
- <string name="hud_render_cost_warning">[HUD_DETAILS] enthält zu viele ressourcenintensive Objekte und Texturen</string>
- <string name="hud_render_heavy_textures_warning">[HUD_DETAILS] enthält viele große Texturen</string>
- <string name="hud_render_cramped_warning">[HUD_DETAILS] enthält zu viele Objekte</string>
- <string name="hud_render_textures_warning">[HUD_DETAILS] enthält zu viele Texturen</string>
- <string name="AgeYearsA">[COUNT] Jahr</string>
- <string name="AgeYearsB">[COUNT] Jahre</string>
- <string name="AgeYearsC">[COUNT] Jahre</string>
- <string name="AgeMonthsA">[COUNT] Monat</string>
- <string name="AgeMonthsB">[COUNT] Monate</string>
- <string name="AgeMonthsC">[COUNT] Monate</string>
- <string name="AgeWeeksA">[COUNT] Woche</string>
- <string name="AgeWeeksB">[COUNT] Wochen</string>
- <string name="AgeWeeksC">[COUNT] Wochen</string>
- <string name="AgeDaysA">[COUNT] Tag</string>
- <string name="AgeDaysB">[COUNT] Tage</string>
- <string name="AgeDaysC">[COUNT] Tage</string>
- <string name="GroupMembersA">[COUNT] Mitglied</string>
- <string name="GroupMembersB">[COUNT] Mitglieder</string>
- <string name="GroupMembersC">[COUNT] Mitglieder</string>
- <string name="AcctTypeResident">Einwohner</string>
- <string name="AcctTypeTrial">Test</string>
- <string name="AcctTypeCharterMember">Charta-Mitglied</string>
- <string name="AcctTypeEmployee">Linden Lab-Mitarbeiter</string>
- <string name="PaymentInfoUsed">Zahlungsinfo verwendet</string>
- <string name="PaymentInfoOnFile">Zahlungsinfo archiviert</string>
- <string name="NoPaymentInfoOnFile">Keine Zahlungsinfo archiviert</string>
- <string name="AgeVerified">Altersgeprüft</string>
- <string name="NotAgeVerified">Nicht altersgeprüft</string>
- <string name="Center 2">Mitte 2</string>
- <string name="Top Right">Oben rechts</string>
- <string name="Top">Oben</string>
- <string name="Top Left">Oben links</string>
- <string name="Center">Mitte</string>
- <string name="Bottom Left">Unten links</string>
- <string name="Bottom">Unten</string>
- <string name="Bottom Right">Unten rechts</string>
- <string name="CompileQueueDownloadedCompiling">Heruntergeladen, wird kompiliert</string>
- <string name="CompileQueueServiceUnavailable">Kein Skriptkompilierungsdienst verfügbar</string>
- <string name="CompileQueueScriptNotFound">Skript wurde auf Server nicht gefunden.</string>
- <string name="CompileQueueProblemDownloading">Beim Herunterladen ist ein Problem aufgetreten</string>
- <string name="CompileQueueInsufficientPermDownload">Unzureichende Rechte zum Herunterladen eines Skripts.</string>
- <string name="CompileQueueInsufficientPermFor">Unzureichende Berechtigungen für</string>
- <string name="CompileQueueUnknownFailure">Unbekannter Fehler beim Herunterladen</string>
- <string name="CompileNoExperiencePerm">Skript „[SCRIPT]“ mit Erlebnis „[EXPERIENCE]“ wird übersprungen.</string>
- <string name="CompileQueueTitle">Rekompilierung</string>
- <string name="CompileQueueStart">rekompilieren</string>
- <string name="ResetQueueTitle">Zurücksetzen</string>
- <string name="ResetQueueStart">Zurücksetzen</string>
- <string name="RunQueueTitle">Skript ausführen</string>
- <string name="RunQueueStart">Skript ausführen</string>
- <string name="NotRunQueueTitle">Skript anhalten</string>
- <string name="NotRunQueueStart">Skript anhalten</string>
- <string name="CompileSuccessful">Kompilieren erfolgreich abgeschlossen!</string>
- <string name="CompileSuccessfulSaving">Kompilieren erfolgreich abgeschlossen, speichern...</string>
- <string name="SaveComplete">Speichervorgang abgeschlossen.</string>
- <string name="UploadFailed">Datei-Upload fehlgeschlagen:</string>
- <string name="ObjectOutOfRange">Skript (Objekt außerhalb des Bereichs)</string>
- <string name="ScriptWasDeleted">Skript (aus Inventar gelöscht)</string>
- <string name="GodToolsObjectOwnedBy">Objekt [OBJECT], Besitzer [OWNER]</string>
- <string name="GroupsNone">keine</string>
+ <string name="InvFolder My Inventory">
+ Mein Inventar
+ </string>
+ <string name="InvFolder Library">
+ Bibliothek
+ </string>
+ <string name="InvFolder Textures">
+ Texturen
+ </string>
+ <string name="InvFolder Sounds">
+ Sounds
+ </string>
+ <string name="InvFolder Calling Cards">
+ Visitenkarten
+ </string>
+ <string name="InvFolder Landmarks">
+ Landmarken
+ </string>
+ <string name="InvFolder Scripts">
+ Skripts
+ </string>
+ <string name="InvFolder Clothing">
+ Kleidung
+ </string>
+ <string name="InvFolder Objects">
+ Objekte
+ </string>
+ <string name="InvFolder Notecards">
+ Notizkarten
+ </string>
+ <string name="InvFolder New Folder">
+ Neuer Ordner
+ </string>
+ <string name="InvFolder Inventory">
+ Inventar
+ </string>
+ <string name="InvFolder Uncompressed Images">
+ Nicht-Komprimierte Bilder
+ </string>
+ <string name="InvFolder Body Parts">
+ Körperteile
+ </string>
+ <string name="InvFolder Trash">
+ Papierkorb
+ </string>
+ <string name="InvFolder Photo Album">
+ Fotoalbum
+ </string>
+ <string name="InvFolder Lost And Found">
+ Fundbüro
+ </string>
+ <string name="InvFolder Uncompressed Sounds">
+ Nicht-Komprimierte Sounds
+ </string>
+ <string name="InvFolder Animations">
+ Animationen
+ </string>
+ <string name="InvFolder Gestures">
+ Gesten
+ </string>
+ <string name="InvFolder Favorite">
+ Meine Favoriten
+ </string>
+ <string name="InvFolder favorite">
+ Meine Favoriten
+ </string>
+ <string name="InvFolder Favorites">
+ Meine Favoriten
+ </string>
+ <string name="InvFolder favorites">
+ Meine Favoriten
+ </string>
+ <string name="InvFolder Current Outfit">
+ Aktuelles Outfit
+ </string>
+ <string name="InvFolder Initial Outfits">
+ Ursprüngliche Outfits
+ </string>
+ <string name="InvFolder My Outfits">
+ Meine Outfits
+ </string>
+ <string name="InvFolder Accessories">
+ Zubehör
+ </string>
+ <string name="InvFolder Meshes">
+ Netze
+ </string>
+ <string name="InvFolder Received Items">
+ Erhaltene Artikel
+ </string>
+ <string name="InvFolder Merchant Outbox">
+ Händler-Outbox
+ </string>
+ <string name="InvFolder Friends">
+ Freunde
+ </string>
+ <string name="InvFolder All">
+ Alle
+ </string>
+ <string name="no_attachments">
+ Keine Anhänge getragen
+ </string>
+ <string name="Attachments remain">
+ Anhänge (noch [COUNT] Positionen frei)
+ </string>
+ <string name="Buy">
+ Kaufen
+ </string>
+ <string name="BuyforL$">
+ Kaufen für L$
+ </string>
+ <string name="Stone">
+ Stein
+ </string>
+ <string name="Metal">
+ Metall
+ </string>
+ <string name="Glass">
+ Glas
+ </string>
+ <string name="Wood">
+ Holz
+ </string>
+ <string name="Flesh">
+ Fleisch
+ </string>
+ <string name="Plastic">
+ Plastik
+ </string>
+ <string name="Rubber">
+ Gummi
+ </string>
+ <string name="Light">
+ Hell
+ </string>
+ <string name="KBShift">
+ Umschalt-Taste
+ </string>
+ <string name="KBCtrl">
+ Strg
+ </string>
+ <string name="Chest">
+ Brust
+ </string>
+ <string name="Skull">
+ Schädel
+ </string>
+ <string name="Left Shoulder">
+ Linke Schulter
+ </string>
+ <string name="Right Shoulder">
+ Rechte Schulter
+ </string>
+ <string name="Left Hand">
+ Linke Hand
+ </string>
+ <string name="Right Hand">
+ Rechte Hand
+ </string>
+ <string name="Left Foot">
+ Linker Fuß
+ </string>
+ <string name="Right Foot">
+ Rechter Fuß
+ </string>
+ <string name="Spine">
+ Wirbelsäule
+ </string>
+ <string name="Pelvis">
+ Becken
+ </string>
+ <string name="Mouth">
+ Mund
+ </string>
+ <string name="Chin">
+ Kinn
+ </string>
+ <string name="Left Ear">
+ Linkes Ohr
+ </string>
+ <string name="Right Ear">
+ Rechtes Ohr
+ </string>
+ <string name="Left Eyeball">
+ Linker Augapfel
+ </string>
+ <string name="Right Eyeball">
+ Rechter Augapfel
+ </string>
+ <string name="Nose">
+ Nase
+ </string>
+ <string name="R Upper Arm">
+ R Oberarm
+ </string>
+ <string name="R Forearm">
+ R Unterarm
+ </string>
+ <string name="L Upper Arm">
+ L Oberarm
+ </string>
+ <string name="L Forearm">
+ L Unterarm
+ </string>
+ <string name="Right Hip">
+ Rechte Hüfte
+ </string>
+ <string name="R Upper Leg">
+ R Oberschenkel
+ </string>
+ <string name="R Lower Leg">
+ R Unterschenkel
+ </string>
+ <string name="Left Hip">
+ Linke Hüfte
+ </string>
+ <string name="L Upper Leg">
+ L Oberschenkel
+ </string>
+ <string name="L Lower Leg">
+ L Unterschenkel
+ </string>
+ <string name="Stomach">
+ Bauch
+ </string>
+ <string name="Left Pec">
+ Linke Brust
+ </string>
+ <string name="Right Pec">
+ Rechts
+ </string>
+ <string name="Neck">
+ Hals
+ </string>
+ <string name="Avatar Center">
+ Avatar-Mitte
+ </string>
+ <string name="Left Ring Finger">
+ Linker Ringfinger
+ </string>
+ <string name="Right Ring Finger">
+ Rechter Ringfinger
+ </string>
+ <string name="Tail Base">
+ Schwanzansatz
+ </string>
+ <string name="Tail Tip">
+ Schwanzspitze
+ </string>
+ <string name="Left Wing">
+ Linker Flügel
+ </string>
+ <string name="Right Wing">
+ Rechter Flügel
+ </string>
+ <string name="Jaw">
+ Kiefer
+ </string>
+ <string name="Alt Left Ear">
+ Alt. linkes Ohr
+ </string>
+ <string name="Alt Right Ear">
+ Alt. rechtes Ohr
+ </string>
+ <string name="Alt Left Eye">
+ Alt. linkes Auge
+ </string>
+ <string name="Alt Right Eye">
+ Alt. rechtes Auge
+ </string>
+ <string name="Tongue">
+ Zunge
+ </string>
+ <string name="Groin">
+ Leiste
+ </string>
+ <string name="Left Hind Foot">
+ Linker hinterer Fuß
+ </string>
+ <string name="Right Hind Foot">
+ Rechter hinterer Fuß
+ </string>
+ <string name="Invalid Attachment">
+ Ungültige Stelle für Anhang
+ </string>
+ <string name="ATTACHMENT_MISSING_ITEM">
+ Fehler: fehlendes Objekt
+ </string>
+ <string name="ATTACHMENT_MISSING_BASE_ITEM">
+ Fehler: Basisobjekt fehlt
+ </string>
+ <string name="ATTACHMENT_NOT_ATTACHED">
+ Fehler: Objekt ist im aktuellen Outfit, aber nicht angehängt
+ </string>
+ <string name="YearsMonthsOld">
+ [AGEYEARS] [AGEMONTHS] alt
+ </string>
+ <string name="YearsOld">
+ [AGEYEARS] alt
+ </string>
+ <string name="MonthsOld">
+ [AGEMONTHS] alt
+ </string>
+ <string name="WeeksOld">
+ [AGEWEEKS] alt
+ </string>
+ <string name="DaysOld">
+ [AGEDAYS] alt
+ </string>
+ <string name="TodayOld">
+ Seit heute Mitglied
+ </string>
+ <string name="av_render_everyone_now">
+ Jetzt kann jeder Sie sehen.
+ </string>
+ <string name="av_render_not_everyone">
+ Sie sind u. U. nicht für alle Leute in Ihrer Nähe sichtbar.
+ </string>
+ <string name="av_render_over_half">
+ Sie sind u. U. für mehr als die Hälfte der Leute in Ihrer Nähe nicht sichtbar.
+ </string>
+ <string name="av_render_most_of">
+ Sie sind u. U. für die meisten Leuten in Ihrer Nähe nicht sichtbar.
+ </string>
+ <string name="av_render_anyone">
+ Sie sind u. U. für niemanden in Ihrer Nähe sichtbar.
+ </string>
+ <string name="hud_description_total">
+ Ihr HUD
+ </string>
+ <string name="hud_name_with_joint">
+ [OBJ_NAME] (getragen von [JNT_NAME])
+ </string>
+ <string name="hud_render_memory_warning">
+ [HUD_DETAILS] beansprucht viel Texturspeicher
+ </string>
+ <string name="hud_render_cost_warning">
+ [HUD_DETAILS] enthält zu viele ressourcenintensive Objekte und Texturen
+ </string>
+ <string name="hud_render_heavy_textures_warning">
+ [HUD_DETAILS] enthält viele große Texturen
+ </string>
+ <string name="hud_render_cramped_warning">
+ [HUD_DETAILS] enthält zu viele Objekte
+ </string>
+ <string name="hud_render_textures_warning">
+ [HUD_DETAILS] enthält zu viele Texturen
+ </string>
+ <string name="AgeYearsA">
+ [COUNT] Jahr
+ </string>
+ <string name="AgeYearsB">
+ [COUNT] Jahre
+ </string>
+ <string name="AgeYearsC">
+ [COUNT] Jahre
+ </string>
+ <string name="AgeMonthsA">
+ [COUNT] Monat
+ </string>
+ <string name="AgeMonthsB">
+ [COUNT] Monate
+ </string>
+ <string name="AgeMonthsC">
+ [COUNT] Monate
+ </string>
+ <string name="AgeWeeksA">
+ [COUNT] Woche
+ </string>
+ <string name="AgeWeeksB">
+ [COUNT] Wochen
+ </string>
+ <string name="AgeWeeksC">
+ [COUNT] Wochen
+ </string>
+ <string name="AgeDaysA">
+ [COUNT] Tag
+ </string>
+ <string name="AgeDaysB">
+ [COUNT] Tage
+ </string>
+ <string name="AgeDaysC">
+ [COUNT] Tage
+ </string>
+ <string name="GroupMembersA">
+ [COUNT] Mitglied
+ </string>
+ <string name="GroupMembersB">
+ [COUNT] Mitglieder
+ </string>
+ <string name="GroupMembersC">
+ [COUNT] Mitglieder
+ </string>
+ <string name="AcctTypeResident">
+ Einwohner
+ </string>
+ <string name="AcctTypeTrial">
+ Test
+ </string>
+ <string name="AcctTypeCharterMember">
+ Charta-Mitglied
+ </string>
+ <string name="AcctTypeEmployee">
+ Linden Lab-Mitarbeiter
+ </string>
+ <string name="PaymentInfoUsed">
+ Zahlungsinfo verwendet
+ </string>
+ <string name="PaymentInfoOnFile">
+ Zahlungsinfo archiviert
+ </string>
+ <string name="NoPaymentInfoOnFile">
+ Keine Zahlungsinfo archiviert
+ </string>
+ <string name="AgeVerified">
+ Altersgeprüft
+ </string>
+ <string name="NotAgeVerified">
+ Nicht altersgeprüft
+ </string>
+ <string name="Center 2">
+ Mitte 2
+ </string>
+ <string name="Top Right">
+ Oben rechts
+ </string>
+ <string name="Top">
+ Oben
+ </string>
+ <string name="Top Left">
+ Oben links
+ </string>
+ <string name="Center">
+ Mitte
+ </string>
+ <string name="Bottom Left">
+ Unten links
+ </string>
+ <string name="Bottom">
+ Unten
+ </string>
+ <string name="Bottom Right">
+ Unten rechts
+ </string>
+ <string name="CompileQueueDownloadedCompiling">
+ Heruntergeladen, wird kompiliert
+ </string>
+ <string name="CompileQueueServiceUnavailable">
+ Kein Skriptkompilierungsdienst verfügbar
+ </string>
+ <string name="CompileQueueScriptNotFound">
+ Skript wurde auf Server nicht gefunden.
+ </string>
+ <string name="CompileQueueProblemDownloading">
+ Beim Herunterladen ist ein Problem aufgetreten
+ </string>
+ <string name="CompileQueueInsufficientPermDownload">
+ Unzureichende Rechte zum Herunterladen eines Skripts.
+ </string>
+ <string name="CompileQueueInsufficientPermFor">
+ Unzureichende Berechtigungen für
+ </string>
+ <string name="CompileQueueUnknownFailure">
+ Unbekannter Fehler beim Herunterladen
+ </string>
+ <string name="CompileNoExperiencePerm">
+ Skript „[SCRIPT]“ mit Erlebnis „[EXPERIENCE]“ wird übersprungen.
+ </string>
+ <string name="CompileQueueTitle">
+ Rekompilierung
+ </string>
+ <string name="CompileQueueStart">
+ rekompilieren
+ </string>
+ <string name="ResetQueueTitle">
+ Zurücksetzen
+ </string>
+ <string name="ResetQueueStart">
+ Zurücksetzen
+ </string>
+ <string name="RunQueueTitle">
+ Skript ausführen
+ </string>
+ <string name="RunQueueStart">
+ Skript ausführen
+ </string>
+ <string name="NotRunQueueTitle">
+ Skript anhalten
+ </string>
+ <string name="NotRunQueueStart">
+ Skript anhalten
+ </string>
+ <string name="CompileSuccessful">
+ Kompilieren erfolgreich abgeschlossen!
+ </string>
+ <string name="CompileSuccessfulSaving">
+ Kompilieren erfolgreich abgeschlossen, speichern...
+ </string>
+ <string name="SaveComplete">
+ Speichervorgang abgeschlossen.
+ </string>
+ <string name="UploadFailed">
+ Datei-Upload fehlgeschlagen:
+ </string>
+ <string name="ObjectOutOfRange">
+ Skript (Objekt außerhalb des Bereichs)
+ </string>
+ <string name="ScriptWasDeleted">
+ Skript (aus Inventar gelöscht)
+ </string>
+ <string name="GodToolsObjectOwnedBy">
+ Objekt [OBJECT], Besitzer [OWNER]
+ </string>
+ <string name="GroupsNone">
+ keine
+ </string>
<string name="Group" value=" (Gruppe)"/>
- <string name="Unknown">(unbekannt)</string>
+ <string name="Unknown">
+ (unbekannt)
+ </string>
<string name="SummaryForTheWeek" value="Zusammenfassung für diese Woche, beginnend am "/>
<string name="NextStipendDay" value=". Der nächste Stipendium-Tag ist "/>
- <string name="GroupPlanningDate">[mthnum,datetime,utc]/[day,datetime,utc]/[year,datetime,utc]</string>
+ <string name="GroupPlanningDate">
+ [mthnum,datetime,utc]/[day,datetime,utc]/[year,datetime,utc]
+ </string>
<string name="GroupIndividualShare" value=" Gruppenanteil Einzelanteil"/>
<string name="GroupColumn" value="Gruppe"/>
- <string name="Balance">Kontostand</string>
- <string name="Credits">Danksagung</string>
- <string name="Debits">Soll</string>
- <string name="Total">Gesamtbetrag</string>
- <string name="NoGroupDataFound">Für Gruppe wurden keine Gruppendaten gefunden</string>
- <string name="IMParentEstate">parent estate</string>
- <string name="IMMainland">Mainland</string>
- <string name="IMTeen">Teen</string>
- <string name="Anyone">jeder</string>
- <string name="RegionInfoError">Fehler</string>
- <string name="RegionInfoAllEstatesOwnedBy">alle Grundbesitze gehören [OWNER]</string>
- <string name="RegionInfoAllEstatesYouOwn">alle Grundbesitze, die Sie besitzen</string>
- <string name="RegionInfoAllEstatesYouManage">alle Grundbesitze, die Sie für [OWNER] verwalten</string>
- <string name="RegionInfoAllowedResidents">Immer zulässig: ([ALLOWEDAGENTS], max. [MAXACCESS])</string>
- <string name="RegionInfoAllowedGroups">Immer zugelassene Gruppen: ([ALLOWEDGROUPS], max. [MAXACCESS])</string>
- <string name="RegionInfoBannedResidents">Immer verbannt: ([BANNEDAGENTS], max. [MAXBANNED])</string>
- <string name="RegionInfoListTypeAllowedAgents">Immer zugelassen</string>
- <string name="RegionInfoListTypeBannedAgents">Immer verbannt</string>
- <string name="RegionInfoAllEstates">alle Grundbesitze</string>
- <string name="RegionInfoManagedEstates">verwaltete Grundbesitze</string>
- <string name="RegionInfoThisEstate">dieser Grundbesitz</string>
- <string name="AndNMore">und [EXTRA_COUNT] weitere</string>
- <string name="ScriptLimitsParcelScriptMemory">Parzellenskript-Speicher</string>
- <string name="ScriptLimitsParcelsOwned">Aufgeführte Parzellen: [PARCELS]</string>
- <string name="ScriptLimitsMemoryUsed">Verwendeter Speicher: [COUNT] KB von [MAX] KB; [AVAILABLE] KB verfügbar</string>
- <string name="ScriptLimitsMemoryUsedSimple">Verwendeter Speicher: [COUNT] KB</string>
- <string name="ScriptLimitsParcelScriptURLs">Parzelleskript-URLs</string>
- <string name="ScriptLimitsURLsUsed">Verwendete URLs: [COUNT] von [MAX]; [AVAILABLE] verfügbar</string>
- <string name="ScriptLimitsURLsUsedSimple">Verwendete URLs: [COUNT]</string>
- <string name="ScriptLimitsRequestError">Fehler bei Informationsabruf</string>
- <string name="ScriptLimitsRequestNoParcelSelected">Keine Parzellen wurden ausgewählt</string>
- <string name="ScriptLimitsRequestWrongRegion">Fehler: Skriptinformationen sind nur für Ihre aktuelle Region verfügbar</string>
- <string name="ScriptLimitsRequestWaiting">Informationen werden abgerufen...</string>
- <string name="ScriptLimitsRequestDontOwnParcel">Sie sind nicht berechtigt, diese Parzelle zu untersuchen.</string>
- <string name="SITTING_ON">sitzt auf</string>
- <string name="ATTACH_CHEST">Brust</string>
- <string name="ATTACH_HEAD">Schädel</string>
- <string name="ATTACH_LSHOULDER">Linke Schulter</string>
- <string name="ATTACH_RSHOULDER">Rechte Schulter</string>
- <string name="ATTACH_LHAND">Linke Hand</string>
- <string name="ATTACH_RHAND">Rechte Hand</string>
- <string name="ATTACH_LFOOT">Linker Fuß</string>
- <string name="ATTACH_RFOOT">Rechter Fuß</string>
- <string name="ATTACH_BACK">Wirbelsäule</string>
- <string name="ATTACH_PELVIS">Becken</string>
- <string name="ATTACH_MOUTH">Mund</string>
- <string name="ATTACH_CHIN">Kinn</string>
- <string name="ATTACH_LEAR">Linkes Ohr</string>
- <string name="ATTACH_REAR">Rechtes Ohr</string>
- <string name="ATTACH_LEYE">Linkes Auge</string>
- <string name="ATTACH_REYE">Rechtes Auge</string>
- <string name="ATTACH_NOSE">Nase</string>
- <string name="ATTACH_RUARM">Rechter Oberarm</string>
- <string name="ATTACH_RLARM">Rechter Unterarm</string>
- <string name="ATTACH_LUARM">Linker Oberarm</string>
- <string name="ATTACH_LLARM">Linker Unterarm</string>
- <string name="ATTACH_RHIP">Rechte Hüfte</string>
- <string name="ATTACH_RULEG">Rechter Oberschenkel</string>
- <string name="ATTACH_RLLEG">Rechter Unterschenkel</string>
- <string name="ATTACH_LHIP">Linke Hüfte</string>
- <string name="ATTACH_LULEG">Linker Oberschenkel</string>
- <string name="ATTACH_LLLEG">Linker Unterschenkel</string>
- <string name="ATTACH_BELLY">Bauch</string>
- <string name="ATTACH_LEFT_PEC">Linke Brust</string>
- <string name="ATTACH_RIGHT_PEC">Rechte Brust</string>
- <string name="ATTACH_HUD_CENTER_2">HUD Mitte 2</string>
- <string name="ATTACH_HUD_TOP_RIGHT">HUD oben rechts</string>
- <string name="ATTACH_HUD_TOP_CENTER">HUD oben Mitte</string>
- <string name="ATTACH_HUD_TOP_LEFT">HUD oben links</string>
- <string name="ATTACH_HUD_CENTER_1">HUD Mitte 1</string>
- <string name="ATTACH_HUD_BOTTOM_LEFT">HUD unten links</string>
- <string name="ATTACH_HUD_BOTTOM">HUD unten</string>
- <string name="ATTACH_HUD_BOTTOM_RIGHT">HUD unten rechts</string>
- <string name="ATTACH_NECK">Hals</string>
- <string name="ATTACH_AVATAR_CENTER">Avatar-Mitte</string>
- <string name="ATTACH_LHAND_RING1">Linker Ringfinger</string>
- <string name="ATTACH_RHAND_RING1">Rechter Ringfinger</string>
- <string name="ATTACH_TAIL_BASE">Schwanzansatz</string>
- <string name="ATTACH_TAIL_TIP">Schwanzspitze</string>
- <string name="ATTACH_LWING">Linker Flügel</string>
- <string name="ATTACH_RWING">Rechter Flügel</string>
- <string name="ATTACH_FACE_JAW">Kiefer</string>
- <string name="ATTACH_FACE_LEAR">Alt. linkes Ohr</string>
- <string name="ATTACH_FACE_REAR">Alt. rechtes Ohr</string>
- <string name="ATTACH_FACE_LEYE">Alt. linkes Auge</string>
- <string name="ATTACH_FACE_REYE">Alt. rechtes Auge</string>
- <string name="ATTACH_FACE_TONGUE">Zunge</string>
- <string name="ATTACH_GROIN">Leiste</string>
- <string name="ATTACH_HIND_LFOOT">Linker hinterer Fuß</string>
- <string name="ATTACH_HIND_RFOOT">Rechter hinterer Fuß</string>
- <string name="CursorPos">Zeile [LINE], Spalte [COLUMN]</string>
- <string name="PanelDirCountFound">[COUNT] gefunden</string>
- <string name="PanelDirTimeStr">[hour12,datetime,slt]:[min,datetime,slt] [ampm,datetime,slt]</string>
- <string name="PanelDirEventsDateText">[mthnum,datetime,slt]/[day,datetime,slt]</string>
- <string name="PanelContentsTooltip">Objektinhalt</string>
- <string name="PanelContentsNewScript">Neues Skript</string>
- <string name="DoNotDisturbModeResponseDefault">Dieser Einwohner hat den Nicht-stören-Modus aktiviert und wird Ihre Nachricht später sehen.</string>
- <string name="MuteByName">(Nach Namen)</string>
- <string name="MuteAgent">(Einwohner)</string>
- <string name="MuteObject">(Objekt)</string>
- <string name="MuteGroup">(Gruppe)</string>
- <string name="MuteExternal">(Extern)</string>
- <string name="RegionNoCovenant">Für diesen Grundbesitz liegt kein Vertrag vor.</string>
- <string name="RegionNoCovenantOtherOwner">Für diesen Grundbesitz liegt kein Vertrag vor. Das Land auf diesem Grundbesitz wird vom Grundbesitzer und nicht von Linden Lab verkauft. Für Informationen zum Verkauf setzen Sie sich bitte mit dem Grundbesitzer in Verbindung.</string>
+ <string name="Balance">
+ Kontostand
+ </string>
+ <string name="Credits">
+ Danksagung
+ </string>
+ <string name="Debits">
+ Soll
+ </string>
+ <string name="Total">
+ Gesamtbetrag
+ </string>
+ <string name="NoGroupDataFound">
+ Für Gruppe wurden keine Gruppendaten gefunden
+ </string>
+ <string name="IMParentEstate">
+ parent estate
+ </string>
+ <string name="IMMainland">
+ Mainland
+ </string>
+ <string name="IMTeen">
+ Teen
+ </string>
+ <string name="Anyone">
+ jeder
+ </string>
+ <string name="RegionInfoError">
+ Fehler
+ </string>
+ <string name="RegionInfoAllEstatesOwnedBy">
+ alle Grundbesitze gehören [OWNER]
+ </string>
+ <string name="RegionInfoAllEstatesYouOwn">
+ alle Grundbesitze, die Sie besitzen
+ </string>
+ <string name="RegionInfoAllEstatesYouManage">
+ alle Grundbesitze, die Sie für [OWNER] verwalten
+ </string>
+ <string name="RegionInfoAllowedResidents">
+ Immer zulässig: ([ALLOWEDAGENTS], max. [MAXACCESS])
+ </string>
+ <string name="RegionInfoAllowedGroups">
+ Immer zugelassene Gruppen: ([ALLOWEDGROUPS], max. [MAXACCESS])
+ </string>
+ <string name="RegionInfoBannedResidents">
+ Immer verbannt: ([BANNEDAGENTS], max. [MAXBANNED])
+ </string>
+ <string name="RegionInfoListTypeAllowedAgents">
+ Immer zugelassen
+ </string>
+ <string name="RegionInfoListTypeBannedAgents">
+ Immer verbannt
+ </string>
+ <string name="RegionInfoAllEstates">
+ alle Grundbesitze
+ </string>
+ <string name="RegionInfoManagedEstates">
+ verwaltete Grundbesitze
+ </string>
+ <string name="RegionInfoThisEstate">
+ dieser Grundbesitz
+ </string>
+ <string name="AndNMore">
+ und [EXTRA_COUNT] weitere
+ </string>
+ <string name="ScriptLimitsParcelScriptMemory">
+ Parzellenskript-Speicher
+ </string>
+ <string name="ScriptLimitsParcelsOwned">
+ Aufgeführte Parzellen: [PARCELS]
+ </string>
+ <string name="ScriptLimitsMemoryUsed">
+ Verwendeter Speicher: [COUNT] KB von [MAX] KB; [AVAILABLE] KB verfügbar
+ </string>
+ <string name="ScriptLimitsMemoryUsedSimple">
+ Verwendeter Speicher: [COUNT] KB
+ </string>
+ <string name="ScriptLimitsParcelScriptURLs">
+ Parzelleskript-URLs
+ </string>
+ <string name="ScriptLimitsURLsUsed">
+ Verwendete URLs: [COUNT] von [MAX]; [AVAILABLE] verfügbar
+ </string>
+ <string name="ScriptLimitsURLsUsedSimple">
+ Verwendete URLs: [COUNT]
+ </string>
+ <string name="ScriptLimitsRequestError">
+ Fehler bei Informationsabruf
+ </string>
+ <string name="ScriptLimitsRequestNoParcelSelected">
+ Keine Parzellen wurden ausgewählt
+ </string>
+ <string name="ScriptLimitsRequestWrongRegion">
+ Fehler: Skriptinformationen sind nur für Ihre aktuelle Region verfügbar
+ </string>
+ <string name="ScriptLimitsRequestWaiting">
+ Informationen werden abgerufen...
+ </string>
+ <string name="ScriptLimitsRequestDontOwnParcel">
+ Sie sind nicht berechtigt, diese Parzelle zu untersuchen.
+ </string>
+ <string name="SITTING_ON">
+ sitzt auf
+ </string>
+ <string name="ATTACH_CHEST">
+ Brust
+ </string>
+ <string name="ATTACH_HEAD">
+ Schädel
+ </string>
+ <string name="ATTACH_LSHOULDER">
+ Linke Schulter
+ </string>
+ <string name="ATTACH_RSHOULDER">
+ Rechte Schulter
+ </string>
+ <string name="ATTACH_LHAND">
+ Linke Hand
+ </string>
+ <string name="ATTACH_RHAND">
+ Rechte Hand
+ </string>
+ <string name="ATTACH_LFOOT">
+ Linker Fuß
+ </string>
+ <string name="ATTACH_RFOOT">
+ Rechter Fuß
+ </string>
+ <string name="ATTACH_BACK">
+ Wirbelsäule
+ </string>
+ <string name="ATTACH_PELVIS">
+ Becken
+ </string>
+ <string name="ATTACH_MOUTH">
+ Mund
+ </string>
+ <string name="ATTACH_CHIN">
+ Kinn
+ </string>
+ <string name="ATTACH_LEAR">
+ Linkes Ohr
+ </string>
+ <string name="ATTACH_REAR">
+ Rechtes Ohr
+ </string>
+ <string name="ATTACH_LEYE">
+ Linkes Auge
+ </string>
+ <string name="ATTACH_REYE">
+ Rechtes Auge
+ </string>
+ <string name="ATTACH_NOSE">
+ Nase
+ </string>
+ <string name="ATTACH_RUARM">
+ Rechter Oberarm
+ </string>
+ <string name="ATTACH_RLARM">
+ Rechter Unterarm
+ </string>
+ <string name="ATTACH_LUARM">
+ Linker Oberarm
+ </string>
+ <string name="ATTACH_LLARM">
+ Linker Unterarm
+ </string>
+ <string name="ATTACH_RHIP">
+ Rechte Hüfte
+ </string>
+ <string name="ATTACH_RULEG">
+ Rechter Oberschenkel
+ </string>
+ <string name="ATTACH_RLLEG">
+ Rechter Unterschenkel
+ </string>
+ <string name="ATTACH_LHIP">
+ Linke Hüfte
+ </string>
+ <string name="ATTACH_LULEG">
+ Linker Oberschenkel
+ </string>
+ <string name="ATTACH_LLLEG">
+ Linker Unterschenkel
+ </string>
+ <string name="ATTACH_BELLY">
+ Bauch
+ </string>
+ <string name="ATTACH_LEFT_PEC">
+ Linke Brust
+ </string>
+ <string name="ATTACH_RIGHT_PEC">
+ Rechte Brust
+ </string>
+ <string name="ATTACH_HUD_CENTER_2">
+ HUD Mitte 2
+ </string>
+ <string name="ATTACH_HUD_TOP_RIGHT">
+ HUD oben rechts
+ </string>
+ <string name="ATTACH_HUD_TOP_CENTER">
+ HUD oben Mitte
+ </string>
+ <string name="ATTACH_HUD_TOP_LEFT">
+ HUD oben links
+ </string>
+ <string name="ATTACH_HUD_CENTER_1">
+ HUD Mitte 1
+ </string>
+ <string name="ATTACH_HUD_BOTTOM_LEFT">
+ HUD unten links
+ </string>
+ <string name="ATTACH_HUD_BOTTOM">
+ HUD unten
+ </string>
+ <string name="ATTACH_HUD_BOTTOM_RIGHT">
+ HUD unten rechts
+ </string>
+ <string name="ATTACH_NECK">
+ Hals
+ </string>
+ <string name="ATTACH_AVATAR_CENTER">
+ Avatar-Mitte
+ </string>
+ <string name="ATTACH_LHAND_RING1">
+ Linker Ringfinger
+ </string>
+ <string name="ATTACH_RHAND_RING1">
+ Rechter Ringfinger
+ </string>
+ <string name="ATTACH_TAIL_BASE">
+ Schwanzansatz
+ </string>
+ <string name="ATTACH_TAIL_TIP">
+ Schwanzspitze
+ </string>
+ <string name="ATTACH_LWING">
+ Linker Flügel
+ </string>
+ <string name="ATTACH_RWING">
+ Rechter Flügel
+ </string>
+ <string name="ATTACH_FACE_JAW">
+ Kiefer
+ </string>
+ <string name="ATTACH_FACE_LEAR">
+ Alt. linkes Ohr
+ </string>
+ <string name="ATTACH_FACE_REAR">
+ Alt. rechtes Ohr
+ </string>
+ <string name="ATTACH_FACE_LEYE">
+ Alt. linkes Auge
+ </string>
+ <string name="ATTACH_FACE_REYE">
+ Alt. rechtes Auge
+ </string>
+ <string name="ATTACH_FACE_TONGUE">
+ Zunge
+ </string>
+ <string name="ATTACH_GROIN">
+ Leiste
+ </string>
+ <string name="ATTACH_HIND_LFOOT">
+ Linker hinterer Fuß
+ </string>
+ <string name="ATTACH_HIND_RFOOT">
+ Rechter hinterer Fuß
+ </string>
+ <string name="CursorPos">
+ Zeile [LINE], Spalte [COLUMN]
+ </string>
+ <string name="PanelDirCountFound">
+ [COUNT] gefunden
+ </string>
+ <string name="PanelDirTimeStr">
+ [hour12,datetime,slt]:[min,datetime,slt] [ampm,datetime,slt]
+ </string>
+ <string name="PanelDirEventsDateText">
+ [mthnum,datetime,slt]/[day,datetime,slt]
+ </string>
+ <string name="PanelContentsTooltip">
+ Objektinhalt
+ </string>
+ <string name="PanelContentsNewScript">
+ Neues Skript
+ </string>
+ <string name="DoNotDisturbModeResponseDefault">
+ Dieser Einwohner hat den Nicht-stören-Modus aktiviert und wird Ihre Nachricht später sehen.
+ </string>
+ <string name="MuteByName">
+ (Nach Namen)
+ </string>
+ <string name="MuteAgent">
+ (Einwohner)
+ </string>
+ <string name="MuteObject">
+ (Objekt)
+ </string>
+ <string name="MuteGroup">
+ (Gruppe)
+ </string>
+ <string name="MuteExternal">
+ (Extern)
+ </string>
+ <string name="RegionNoCovenant">
+ Für diesen Grundbesitz liegt kein Vertrag vor.
+ </string>
+ <string name="RegionNoCovenantOtherOwner">
+ Für diesen Grundbesitz liegt kein Vertrag vor. Das Land auf diesem Grundbesitz wird vom Grundbesitzer und nicht von Linden Lab verkauft. Für Informationen zum Verkauf setzen Sie sich bitte mit dem Grundbesitzer in Verbindung.
+ </string>
<string name="covenant_last_modified" value="Zuletzt geändert: "/>
<string name="none_text" value=" (keiner) "/>
<string name="never_text" value=" (nie) "/>
- <string name="GroupOwned">In Gruppenbesitz</string>
- <string name="Public">Öffentlich</string>
- <string name="LocalSettings">Lokale Einstellungen</string>
- <string name="RegionSettings">Regionseinstellungen</string>
- <string name="NoEnvironmentSettings">Diese Region unterstützt keine Umgebungseinstellungen.</string>
- <string name="EnvironmentSun">Sonne</string>
- <string name="EnvironmentMoon">Mond</string>
- <string name="EnvironmentBloom">Bloom</string>
- <string name="EnvironmentCloudNoise">Wolkenrauschen</string>
- <string name="EnvironmentNormalMap">Normal-Map</string>
- <string name="EnvironmentTransparent">Transparent</string>
- <string name="ClassifiedClicksTxt">Klicks: [TELEPORT] teleportieren, [MAP] Karte, [PROFILE] Profil</string>
- <string name="ClassifiedUpdateAfterPublish">(wird nach Veröffentlichung aktualisiert)</string>
- <string name="NoPicksClassifiedsText">Sie haben keine Auswahl oder Anzeigen erstelllt. Klicken Sie auf die „Plus&quot;-Schaltfläche, um eine Auswahl oder Anzeige zu erstellen.</string>
- <string name="NoPicksText">Sie haben keine Auswahl erstellt. Klicken Sie auf die Schaltfläche &quot;Neu&quot;, um eine Auswahl zu erstellen.</string>
- <string name="NoClassifiedsText">Sie haben keine Anzeigen erstellt. Klicken Sie auf die Schaltfläche &quot;Neu&quot;, um eine Anzeige zu erstellen.</string>
- <string name="NoAvatarPicksClassifiedsText">Der Einwohner hat keine Auswahl oder Anzeigen</string>
- <string name="NoAvatarPicksText">Der Einwohner hat keine Auswahl</string>
- <string name="NoAvatarClassifiedsText">Der Einwohner hat keine Anzeigen</string>
- <string name="PicksClassifiedsLoadingText">Wird geladen...</string>
- <string name="MultiPreviewTitle">Vorschau</string>
- <string name="MultiPropertiesTitle">Eigenschaften</string>
- <string name="InvOfferAnObjectNamed">Ein Objekt namens</string>
- <string name="InvOfferOwnedByGroup">im Besitz der Gruppe</string>
- <string name="InvOfferOwnedByUnknownGroup">im Besitz einer unbekannten Gruppe</string>
- <string name="InvOfferOwnedBy">im Besitz von</string>
- <string name="InvOfferOwnedByUnknownUser">im Besitz eines unbekannten Einwohners</string>
- <string name="InvOfferGaveYou">hat Ihnen folgendes übergeben</string>
- <string name="InvOfferDecline">Sie lehnen [DESC] von &lt;nolink&gt;[NAME]&lt;/nolink&gt; ab.</string>
- <string name="GroupMoneyTotal">Gesamtbetrag</string>
- <string name="GroupMoneyBought">gekauft</string>
- <string name="GroupMoneyPaidYou">bezahlte Ihnen</string>
- <string name="GroupMoneyPaidInto">bezahlte an</string>
- <string name="GroupMoneyBoughtPassTo">kaufte Pass für</string>
- <string name="GroupMoneyPaidFeeForEvent">bezahlte Gebühr für Event</string>
- <string name="GroupMoneyPaidPrizeForEvent">bezahlte Preis für Event</string>
- <string name="GroupMoneyBalance">Kontostand</string>
- <string name="GroupMoneyCredits">Danksagung</string>
- <string name="GroupMoneyDebits">Soll</string>
- <string name="GroupMoneyDate">[weekday,datetime,utc] [mth,datetime,utc] [day,datetime,utc], [year,datetime,utc]</string>
- <string name="AcquiredItems">Erworbene Artikel</string>
- <string name="Cancel">Abbrechen</string>
- <string name="UploadingCosts">Das Hochladen von [NAME] kostet [AMOUNT] L$</string>
- <string name="BuyingCosts">Die Kosten betragen: [AMOUNT] L$</string>
- <string name="UnknownFileExtension">Unbekanntes Dateiformat .%s
-Gültige Formate: .wav, .tga, .bmp, .jpg, .jpeg oder .bvh</string>
- <string name="MuteObject2">Ignorieren</string>
- <string name="MuteAvatar">Ignorieren</string>
- <string name="UnmuteObject">Freischalten</string>
- <string name="UnmuteAvatar">Freischalten</string>
- <string name="AddLandmarkNavBarMenu">Zu meinen Landmarken hinzufügen...</string>
- <string name="EditLandmarkNavBarMenu">Meine Landmarken bearbeiten...</string>
- <string name="accel-mac-control">⌃</string>
- <string name="accel-mac-command">⌘</string>
- <string name="accel-mac-option">⌥</string>
- <string name="accel-mac-shift">⇧</string>
- <string name="accel-win-control">Strg+</string>
- <string name="accel-win-alt">Alt+</string>
- <string name="accel-win-shift">Umschalt+</string>
- <string name="FileSaved">Datei wurde gespeichert</string>
- <string name="Receiving">Daten werden empfangen</string>
- <string name="AM">Uhr</string>
- <string name="PM">Uhr</string>
- <string name="PST">PST</string>
- <string name="PDT">PDT</string>
- <string name="Direction_Forward">Vorwärts</string>
- <string name="Direction_Left">Links</string>
- <string name="Direction_Right">Rechts</string>
- <string name="Direction_Back">Zurück</string>
- <string name="Direction_North">Norden</string>
- <string name="Direction_South">Süden</string>
- <string name="Direction_West">Westen</string>
- <string name="Direction_East">Osten</string>
- <string name="Direction_Up">Nach oben</string>
- <string name="Direction_Down">Nach unten</string>
- <string name="Any Category">Alle Kategorien</string>
- <string name="Shopping">Shopping</string>
- <string name="Land Rental">Land mieten</string>
- <string name="Property Rental">Immobilie mieten</string>
- <string name="Special Attraction">Attraktionen</string>
- <string name="New Products">Neue Produkte</string>
- <string name="Employment">Stellenangebote</string>
- <string name="Wanted">Gesucht</string>
- <string name="Service">Dienstleistungen</string>
- <string name="Personal">Sonstiges</string>
- <string name="None">Keiner</string>
- <string name="Linden Location">Lindenort</string>
- <string name="Adult">Adult</string>
- <string name="Arts&amp;Culture">Kunst &amp; Kultur</string>
- <string name="Business">Firmen</string>
- <string name="Educational">Bildung</string>
- <string name="Gaming">Spielen</string>
- <string name="Hangout">Treffpunkt</string>
- <string name="Newcomer Friendly">Anfängergerecht</string>
- <string name="Parks&amp;Nature">Parks und Natur</string>
- <string name="Residential">Wohngebiet</string>
- <string name="Stage">Phase</string>
- <string name="Other">Sonstige</string>
- <string name="Rental">Vermietung</string>
- <string name="Any">Alle</string>
- <string name="You">Sie</string>
- <string name=":">:</string>
- <string name=",">,</string>
- <string name="...">...</string>
- <string name="***">***</string>
- <string name="(">(</string>
- <string name=")">)</string>
- <string name=".">.</string>
- <string name="'">'</string>
- <string name="---">---</string>
- <string name="Multiple Media">Mehrere Medien</string>
- <string name="Play Media">Medien Abspielen/Pausieren</string>
- <string name="IntelDriverPage">http://www.intel.com/p/en_US/support/detect/graphics</string>
- <string name="NvidiaDriverPage">http://www.nvidia.com/Download/index.aspx?lang=de-de</string>
- <string name="AMDDriverPage">http://support.amd.com/de/Pages/AMDSupportHub.aspx</string>
- <string name="MBCmdLineError">Beim Parsen der Befehlszeile wurde ein Fehler festgestellt.
+ <string name="GroupOwned">
+ In Gruppenbesitz
+ </string>
+ <string name="Public">
+ Öffentlich
+ </string>
+ <string name="LocalSettings">
+ Lokale Einstellungen
+ </string>
+ <string name="RegionSettings">
+ Regionseinstellungen
+ </string>
+ <string name="NoEnvironmentSettings">
+ Diese Region unterstützt keine Umgebungseinstellungen.
+ </string>
+ <string name="EnvironmentSun">
+ Sonne
+ </string>
+ <string name="EnvironmentMoon">
+ Mond
+ </string>
+ <string name="EnvironmentBloom">
+ Bloom
+ </string>
+ <string name="EnvironmentCloudNoise">
+ Wolkenrauschen
+ </string>
+ <string name="EnvironmentNormalMap">
+ Normal-Map
+ </string>
+ <string name="EnvironmentTransparent">
+ Transparent
+ </string>
+ <string name="ClassifiedClicksTxt">
+ Klicks: [TELEPORT] teleportieren, [MAP] Karte, [PROFILE] Profil
+ </string>
+ <string name="ClassifiedUpdateAfterPublish">
+ (wird nach Veröffentlichung aktualisiert)
+ </string>
+ <string name="NoPicksClassifiedsText">
+ Sie haben keine Auswahl oder Anzeigen erstelllt. Klicken Sie auf die „Plus"-Schaltfläche, um eine Auswahl oder Anzeige zu erstellen.
+ </string>
+ <string name="NoPicksText">
+ Sie haben keine Auswahl erstellt. Klicken Sie auf die Schaltfläche "Neu", um eine Auswahl zu erstellen.
+ </string>
+ <string name="NoClassifiedsText">
+ Sie haben keine Anzeigen erstellt. Klicken Sie auf die Schaltfläche "Neu", um eine Anzeige zu erstellen.
+ </string>
+ <string name="NoAvatarPicksClassifiedsText">
+ Der Einwohner hat keine Auswahl oder Anzeigen
+ </string>
+ <string name="NoAvatarPicksText">
+ Der Einwohner hat keine Auswahl
+ </string>
+ <string name="NoAvatarClassifiedsText">
+ Der Einwohner hat keine Anzeigen
+ </string>
+ <string name="PicksClassifiedsLoadingText">
+ Wird geladen...
+ </string>
+ <string name="MultiPreviewTitle">
+ Vorschau
+ </string>
+ <string name="MultiPropertiesTitle">
+ Eigenschaften
+ </string>
+ <string name="InvOfferAnObjectNamed">
+ Ein Objekt namens
+ </string>
+ <string name="InvOfferOwnedByGroup">
+ im Besitz der Gruppe
+ </string>
+ <string name="InvOfferOwnedByUnknownGroup">
+ im Besitz einer unbekannten Gruppe
+ </string>
+ <string name="InvOfferOwnedBy">
+ im Besitz von
+ </string>
+ <string name="InvOfferOwnedByUnknownUser">
+ im Besitz eines unbekannten Einwohners
+ </string>
+ <string name="InvOfferGaveYou">
+ hat Ihnen folgendes übergeben
+ </string>
+ <string name="InvOfferDecline">
+ Sie lehnen [DESC] von &lt;nolink&gt;[NAME]&lt;/nolink&gt; ab.
+ </string>
+ <string name="GroupMoneyTotal">
+ Gesamtbetrag
+ </string>
+ <string name="GroupMoneyBought">
+ gekauft
+ </string>
+ <string name="GroupMoneyPaidYou">
+ bezahlte Ihnen
+ </string>
+ <string name="GroupMoneyPaidInto">
+ bezahlte an
+ </string>
+ <string name="GroupMoneyBoughtPassTo">
+ kaufte Pass für
+ </string>
+ <string name="GroupMoneyPaidFeeForEvent">
+ bezahlte Gebühr für Event
+ </string>
+ <string name="GroupMoneyPaidPrizeForEvent">
+ bezahlte Preis für Event
+ </string>
+ <string name="GroupMoneyBalance">
+ Kontostand
+ </string>
+ <string name="GroupMoneyCredits">
+ Danksagung
+ </string>
+ <string name="GroupMoneyDebits">
+ Soll
+ </string>
+ <string name="GroupMoneyDate">
+ [weekday,datetime,utc] [mth,datetime,utc] [day,datetime,utc], [year,datetime,utc]
+ </string>
+ <string name="AcquiredItems">
+ Erworbene Artikel
+ </string>
+ <string name="Cancel">
+ Abbrechen
+ </string>
+ <string name="UploadingCosts">
+ Das Hochladen von [NAME] kostet [AMOUNT] L$
+ </string>
+ <string name="BuyingCosts">
+ Die Kosten betragen: [AMOUNT] L$
+ </string>
+ <string name="UnknownFileExtension">
+ Unbekanntes Dateiformat .%s
+Gültige Formate: .wav, .tga, .bmp, .jpg, .jpeg oder .bvh
+ </string>
+ <string name="MuteObject2">
+ Ignorieren
+ </string>
+ <string name="MuteAvatar">
+ Ignorieren
+ </string>
+ <string name="UnmuteObject">
+ Freischalten
+ </string>
+ <string name="UnmuteAvatar">
+ Freischalten
+ </string>
+ <string name="AddLandmarkNavBarMenu">
+ Zu meinen Landmarken hinzufügen...
+ </string>
+ <string name="EditLandmarkNavBarMenu">
+ Meine Landmarken bearbeiten...
+ </string>
+ <string name="accel-mac-control">
+ ⌃
+ </string>
+ <string name="accel-mac-command">
+ ⌘
+ </string>
+ <string name="accel-mac-option">
+ ⌥
+ </string>
+ <string name="accel-mac-shift">
+ ⇧
+ </string>
+ <string name="accel-win-control">
+ Strg+
+ </string>
+ <string name="accel-win-alt">
+ Alt+
+ </string>
+ <string name="accel-win-shift">
+ Umschalt+
+ </string>
+ <string name="FileSaved">
+ Datei wurde gespeichert
+ </string>
+ <string name="Receiving">
+ Daten werden empfangen
+ </string>
+ <string name="AM">
+ Uhr
+ </string>
+ <string name="PM">
+ Uhr
+ </string>
+ <string name="PST">
+ PST
+ </string>
+ <string name="PDT">
+ PDT
+ </string>
+ <string name="Direction_Forward">
+ Vorwärts
+ </string>
+ <string name="Direction_Left">
+ Links
+ </string>
+ <string name="Direction_Right">
+ Rechts
+ </string>
+ <string name="Direction_Back">
+ Zurück
+ </string>
+ <string name="Direction_North">
+ Norden
+ </string>
+ <string name="Direction_South">
+ Süden
+ </string>
+ <string name="Direction_West">
+ Westen
+ </string>
+ <string name="Direction_East">
+ Osten
+ </string>
+ <string name="Direction_Up">
+ Nach oben
+ </string>
+ <string name="Direction_Down">
+ Nach unten
+ </string>
+ <string name="Any Category">
+ Alle Kategorien
+ </string>
+ <string name="Shopping">
+ Shopping
+ </string>
+ <string name="Land Rental">
+ Land mieten
+ </string>
+ <string name="Property Rental">
+ Immobilie mieten
+ </string>
+ <string name="Special Attraction">
+ Attraktionen
+ </string>
+ <string name="New Products">
+ Neue Produkte
+ </string>
+ <string name="Employment">
+ Stellenangebote
+ </string>
+ <string name="Wanted">
+ Gesucht
+ </string>
+ <string name="Service">
+ Dienstleistungen
+ </string>
+ <string name="Personal">
+ Sonstiges
+ </string>
+ <string name="None">
+ Keiner
+ </string>
+ <string name="Linden Location">
+ Lindenort
+ </string>
+ <string name="Adult">
+ Adult
+ </string>
+ <string name="Arts&amp;Culture">
+ Kunst &amp; Kultur
+ </string>
+ <string name="Business">
+ Firmen
+ </string>
+ <string name="Educational">
+ Bildung
+ </string>
+ <string name="Gaming">
+ Spielen
+ </string>
+ <string name="Hangout">
+ Treffpunkt
+ </string>
+ <string name="Newcomer Friendly">
+ Anfängergerecht
+ </string>
+ <string name="Parks&amp;Nature">
+ Parks und Natur
+ </string>
+ <string name="Residential">
+ Wohngebiet
+ </string>
+ <string name="Stage">
+ Phase
+ </string>
+ <string name="Other">
+ Sonstige
+ </string>
+ <string name="Rental">
+ Vermietung
+ </string>
+ <string name="Any">
+ Alle
+ </string>
+ <string name="You">
+ Sie
+ </string>
+ <string name=":">
+ :
+ </string>
+ <string name=",">
+ ,
+ </string>
+ <string name="...">
+ ...
+ </string>
+ <string name="***">
+ ***
+ </string>
+ <string name="(">
+ (
+ </string>
+ <string name=")">
+ )
+ </string>
+ <string name=".">
+ .
+ </string>
+ <string name="'">
+ '
+ </string>
+ <string name="---">
+ ---
+ </string>
+ <string name="Multiple Media">
+ Mehrere Medien
+ </string>
+ <string name="Play Media">
+ Medien Abspielen/Pausieren
+ </string>
+ <string name="IntelDriverPage">
+ http://www.intel.com/p/en_US/support/detect/graphics
+ </string>
+ <string name="NvidiaDriverPage">
+ http://www.nvidia.com/Download/index.aspx?lang=de-de
+ </string>
+ <string name="AMDDriverPage">
+ http://support.amd.com/de/Pages/AMDSupportHub.aspx
+ </string>
+ <string name="MBCmdLineError">
+ Beim Parsen der Befehlszeile wurde ein Fehler festgestellt.
Weitere Informationen: http://wiki.secondlife.com/wiki/Client_parameters (EN)
-Fehler:</string>
- <string name="MBCmdLineUsg">[APP_NAME] Verwendung in Befehlszeile:</string>
- <string name="MBUnableToAccessFile">[APP_NAME] kann auf die erforderliche Datei nicht zugreifen.
+Fehler:
+ </string>
+ <string name="MBCmdLineUsg">
+ [APP_NAME] Verwendung in Befehlszeile:
+ </string>
+ <string name="MBUnableToAccessFile">
+ [APP_NAME] kann auf die erforderliche Datei nicht zugreifen.
Grund hierfür ist, dass Sie entweder mehrere Instanzen gleichzeitig ausführen oder dass Ihr System denkt, eine Datei sei geöffnet.
Falls diese Nachricht erneut angezeigt wird, starten Sie bitte Ihren Computer neu und probieren Sie es noch einmal.
-Falls der Fehler dann weiterhin auftritt, müssen Sie [APP_NAME] von Ihrem System de-installieren und erneut installieren.</string>
- <string name="MBFatalError">Unbehebbarer Fehler</string>
- <string name="MBRequiresAltiVec">[APP_NAME] erfordert einen Prozessor mit AltiVec (G4 oder später).</string>
- <string name="MBAlreadyRunning">[APP_NAME] läuft bereits.
+Falls der Fehler dann weiterhin auftritt, müssen Sie [APP_NAME] von Ihrem System de-installieren und erneut installieren.
+ </string>
+ <string name="MBFatalError">
+ Unbehebbarer Fehler
+ </string>
+ <string name="MBRequiresAltiVec">
+ [APP_NAME] erfordert einen Prozessor mit AltiVec (G4 oder später).
+ </string>
+ <string name="MBAlreadyRunning">
+ [APP_NAME] läuft bereits.
Bitte sehen Sie in Ihrer Menüleiste nach, dort sollte ein Symbol für das Programm angezeigt werden.
-Falls diese Nachricht erneut angezeigt wird, starten Sie Ihren Computer bitte neu.</string>
- <string name="MBFrozenCrashed">[APP_NAME] scheint eingefroren zu sein oder ist abgestürzt.
-Möchten Sie einen Absturz-Bericht einschicken?</string>
- <string name="MBAlert">Benachrichtigung</string>
- <string name="MBNoDirectX">[APP_NAME] kann DirectX 9.0b oder höher nicht feststellen.
+Falls diese Nachricht erneut angezeigt wird, starten Sie Ihren Computer bitte neu.
+ </string>
+ <string name="MBFrozenCrashed">
+ [APP_NAME] scheint eingefroren zu sein oder ist abgestürzt.
+Möchten Sie einen Absturz-Bericht einschicken?
+ </string>
+ <string name="MBAlert">
+ Benachrichtigung
+ </string>
+ <string name="MBNoDirectX">
+ [APP_NAME] kann DirectX 9.0b oder höher nicht feststellen.
[APP_NAME] verwendet DirectX, um nach Hardware und/oder veralteten Treibern zu suchen, die zu Problemen mit der Stabilität, Leistung und Abstürzen führen können. Sie können [APP_NAME] auch so ausführen, wir empfehlen jedoch, dass DirectX 9.0b vorhanden ist und ausgeführt wird.
-Möchten Sie fortfahren?</string>
- <string name="MBWarning">Hinweis</string>
- <string name="MBNoAutoUpdate">Für Linux ist zur Zeit noch kein automatisches Aktualisieren möglich.
-Bitte laden Sie die aktuellste Version von www.secondlife.com herunter.</string>
- <string name="MBRegClassFailed">RegisterClass fehlgeschlagen</string>
- <string name="MBError">Fehler</string>
- <string name="MBFullScreenErr">Vollbildschirm mit [WIDTH] x [HEIGHT] kann nicht ausgeführt werden.
-Ausführung erfolgt in Fenster.</string>
- <string name="MBDestroyWinFailed">Fehler beim Herunterfahren während Fenster geschlossen wurde (DestroyWindow() fehlgeschlagen)</string>
- <string name="MBShutdownErr">Fehler beim Herunterfahren</string>
- <string name="MBDevContextErr">Kann keinen Kontext für GL-Gerät erstellen</string>
- <string name="MBPixelFmtErr">Passendes Pixelformat wurde nicht gefunden</string>
- <string name="MBPixelFmtDescErr">Beschreibung für Pixelformat nicht verfügbar</string>
- <string name="MBTrueColorWindow">Um [APP_NAME] auszuführen, ist True Color (32-bit) erforderlich.
-Klicken Sie öffnen Sie auf Ihrem Computer die Einstellungen für die Anzeige und stellen Sie den Bildschirm auf 32-bit Farbe ein.</string>
- <string name="MBAlpha">[APP_NAME] kann nicht ausgeführt werden, da kein 8-Bit-Alpha-Kanal verfügbar ist. Dies geschieht normalerweise bei Problemen mit dem Treiber der Video-Karte.
+Möchten Sie fortfahren?
+ </string>
+ <string name="MBWarning">
+ Hinweis
+ </string>
+ <string name="MBNoAutoUpdate">
+ Für Linux ist zur Zeit noch kein automatisches Aktualisieren möglich.
+Bitte laden Sie die aktuellste Version von www.secondlife.com herunter.
+ </string>
+ <string name="MBRegClassFailed">
+ RegisterClass fehlgeschlagen
+ </string>
+ <string name="MBError">
+ Fehler
+ </string>
+ <string name="MBFullScreenErr">
+ Vollbildschirm mit [WIDTH] x [HEIGHT] kann nicht ausgeführt werden.
+Ausführung erfolgt in Fenster.
+ </string>
+ <string name="MBDestroyWinFailed">
+ Fehler beim Herunterfahren während Fenster geschlossen wurde (DestroyWindow() fehlgeschlagen)
+ </string>
+ <string name="MBShutdownErr">
+ Fehler beim Herunterfahren
+ </string>
+ <string name="MBDevContextErr">
+ Kann keinen Kontext für GL-Gerät erstellen
+ </string>
+ <string name="MBPixelFmtErr">
+ Passendes Pixelformat wurde nicht gefunden
+ </string>
+ <string name="MBPixelFmtDescErr">
+ Beschreibung für Pixelformat nicht verfügbar
+ </string>
+ <string name="MBTrueColorWindow">
+ Um [APP_NAME] auszuführen, ist True Color (32-bit) erforderlich.
+Klicken Sie öffnen Sie auf Ihrem Computer die Einstellungen für die Anzeige und stellen Sie den Bildschirm auf 32-bit Farbe ein.
+ </string>
+ <string name="MBAlpha">
+ [APP_NAME] kann nicht ausgeführt werden, da kein 8-Bit-Alpha-Kanal verfügbar ist. Dies geschieht normalerweise bei Problemen mit dem Treiber der Video-Karte.
Bitte vergewissern Sie sich, dass Sie die aktuellsten Treiber für Ihre Videokarte installiert haben.
Vergewissern Sie sich außerdem, dass Ihr Bildschirm auf True Color (32-Bit) eingestellt ist (Systemsteuerung &gt; Anzeige &gt; Einstellungen).
-Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_SITE].</string>
- <string name="MBPixelFmtSetErr">Pixel-Format kann nicht eingestellt werden.</string>
- <string name="MBGLContextErr">Kann keinen Kontext für GL-Gerät erstellen</string>
- <string name="MBGLContextActErr">Kann keinen Kontext für GL-Gerät aktivieren</string>
- <string name="MBVideoDrvErr">[APP_NAME] kann nicht ausgeführt werden, da die Treiber Ihrer Videokarte entweder nicht richtig installiert oder veraltet sind, oder die entsprechende Hardware nicht unterstützt wird. Bitte vergewissern Sie sich, dass Sie die aktuellsten Treiber für die Videokarte installiert haben. Falls Sie die aktuellsten Treiber bereits installiert haben, installieren Sie diese bitte erneut.
+Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_SITE].
+ </string>
+ <string name="MBPixelFmtSetErr">
+ Pixel-Format kann nicht eingestellt werden.
+ </string>
+ <string name="MBGLContextErr">
+ Kann keinen Kontext für GL-Gerät erstellen
+ </string>
+ <string name="MBGLContextActErr">
+ Kann keinen Kontext für GL-Gerät aktivieren
+ </string>
+ <string name="MBVideoDrvErr">
+ [APP_NAME] kann nicht ausgeführt werden, da die Treiber Ihrer Videokarte entweder nicht richtig installiert oder veraltet sind, oder die entsprechende Hardware nicht unterstützt wird. Bitte vergewissern Sie sich, dass Sie die aktuellsten Treiber für die Videokarte installiert haben. Falls Sie die aktuellsten Treiber bereits installiert haben, installieren Sie diese bitte erneut.
-Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_SITE].</string>
- <string name="5 O'Clock Shadow">Bartschatten</string>
- <string name="All White">Ganz weiß</string>
- <string name="Anime Eyes">Anime-Augen</string>
- <string name="Arced">Gewölbt</string>
- <string name="Arm Length">Armlänge</string>
- <string name="Attached">Angewachsen</string>
- <string name="Attached Earlobes">Angewachsene Ohrläppchen</string>
- <string name="Back Fringe">Nackenfransen</string>
- <string name="Baggy">Tränensäcke</string>
- <string name="Bangs">Pony</string>
- <string name="Beady Eyes">Knopfaugen</string>
- <string name="Belly Size">Bauchgröße</string>
- <string name="Big">Groß</string>
- <string name="Big Butt">Großer Hintern</string>
- <string name="Big Hair Back">Volumen: Hinten</string>
- <string name="Big Hair Front">Volumen: Vorne</string>
- <string name="Big Hair Top">Volumen: Oben</string>
- <string name="Big Head">Groß</string>
- <string name="Big Pectorals">Große Brustmuskeln</string>
- <string name="Big Spikes">Große Stacheln</string>
- <string name="Black">Schwarz</string>
- <string name="Blonde">Blond</string>
- <string name="Blonde Hair">Blondes Haar</string>
- <string name="Blush">Rouge</string>
- <string name="Blush Color">Rougefarbe</string>
- <string name="Blush Opacity">Rouge Deckkraft</string>
- <string name="Body Definition">Körperkonturen</string>
- <string name="Body Fat">Körperfett</string>
- <string name="Body Freckles">Sommersprossen</string>
- <string name="Body Thick">breit</string>
- <string name="Body Thickness">Körperbreite</string>
- <string name="Body Thin">schmal</string>
- <string name="Bow Legged">o-beinig</string>
- <string name="Breast Buoyancy">Brust, Straffheit</string>
- <string name="Breast Cleavage">Dekolleté</string>
- <string name="Breast Size">Brustgröße</string>
- <string name="Bridge Width">Rückenbreite</string>
- <string name="Broad">Breit</string>
- <string name="Brow Size">Brauengröße</string>
- <string name="Bug Eyes">Glubschaugen</string>
- <string name="Bugged Eyes">Hervortretend</string>
- <string name="Bulbous">Knollennase</string>
- <string name="Bulbous Nose">Knollennase</string>
- <string name="Breast Physics Mass">Brust – Masse</string>
- <string name="Breast Physics Smoothing">Brust – Glättung</string>
- <string name="Breast Physics Gravity">Brust – Schwerkraft</string>
- <string name="Breast Physics Drag">Brust – Luftwiderstand</string>
- <string name="Breast Physics InOut Max Effect">Max. Effekt</string>
- <string name="Breast Physics InOut Spring">Federn</string>
- <string name="Breast Physics InOut Gain">Verstärkung</string>
- <string name="Breast Physics InOut Damping">Dämpfung</string>
- <string name="Breast Physics UpDown Max Effect">Max. Effekt</string>
- <string name="Breast Physics UpDown Spring">Federn</string>
- <string name="Breast Physics UpDown Gain">Verstärkung</string>
- <string name="Breast Physics UpDown Damping">Dämpfung</string>
- <string name="Breast Physics LeftRight Max Effect">Max. Effekt</string>
- <string name="Breast Physics LeftRight Spring">Federn</string>
- <string name="Breast Physics LeftRight Gain">Verstärkung</string>
- <string name="Breast Physics LeftRight Damping">Dämpfung</string>
- <string name="Belly Physics Mass">Bauch – Masse</string>
- <string name="Belly Physics Smoothing">Bauch – Glättung</string>
- <string name="Belly Physics Gravity">Bauch – Schwerkraft</string>
- <string name="Belly Physics Drag">Bauch – Luftwiderstand</string>
- <string name="Belly Physics UpDown Max Effect">Max. Effekt</string>
- <string name="Belly Physics UpDown Spring">Federn</string>
- <string name="Belly Physics UpDown Gain">Verstärkung</string>
- <string name="Belly Physics UpDown Damping">Dämpfung</string>
- <string name="Butt Physics Mass">Po – Masse</string>
- <string name="Butt Physics Smoothing">Po – Glättung</string>
- <string name="Butt Physics Gravity">Po – Schwerkraft</string>
- <string name="Butt Physics Drag">Po – Luftwiderstand</string>
- <string name="Butt Physics UpDown Max Effect">Max. Effekt</string>
- <string name="Butt Physics UpDown Spring">Federn</string>
- <string name="Butt Physics UpDown Gain">Verstärkung</string>
- <string name="Butt Physics UpDown Damping">Dämpfung</string>
- <string name="Butt Physics LeftRight Max Effect">Max. Effekt</string>
- <string name="Butt Physics LeftRight Spring">Federn</string>
- <string name="Butt Physics LeftRight Gain">Verstärkung</string>
- <string name="Butt Physics LeftRight Damping">Dämpfung</string>
- <string name="Bushy Eyebrows">Buschige Augenbrauen</string>
- <string name="Bushy Hair">Buschiges Haar</string>
- <string name="Butt Size">Hintern, Größe</string>
- <string name="Butt Gravity">Po – Schwerkraft</string>
- <string name="bustle skirt">Tournürenrock</string>
- <string name="no bustle">Ohne</string>
- <string name="more bustle">Mit</string>
- <string name="Chaplin">Chaplin</string>
- <string name="Cheek Bones">Wangenknochen</string>
- <string name="Chest Size">Brustgröße</string>
- <string name="Chin Angle">Kinnwinkel</string>
- <string name="Chin Cleft">Kinnspalte</string>
- <string name="Chin Curtains">Schifferfräse</string>
- <string name="Chin Depth">Kinnlänge</string>
- <string name="Chin Heavy">Kinn ausgeprägt</string>
- <string name="Chin In">Kinn zurück</string>
- <string name="Chin Out">Kinn nach vorne</string>
- <string name="Chin-Neck">Kinn-Hals</string>
- <string name="Clear">Transparent</string>
- <string name="Cleft">Spalte</string>
- <string name="Close Set Eyes">Eng stehende Augen</string>
- <string name="Closed">Geschlossen</string>
- <string name="Closed Back">Hinten geschlossen</string>
- <string name="Closed Front">Vorne geschlossen</string>
- <string name="Closed Left">Links geschlossen</string>
- <string name="Closed Right">Rechts geschlossen</string>
- <string name="Coin Purse">Klein</string>
- <string name="Collar Back">Kragen hinten</string>
- <string name="Collar Front">Kragen vorne</string>
- <string name="Corner Down">Nach unten</string>
- <string name="Corner Up">Nach oben</string>
- <string name="Creased">Schlupflid</string>
- <string name="Crooked Nose">Krumme Nase</string>
- <string name="Cuff Flare">Hosenaufschlag</string>
- <string name="Dark">Dunkel</string>
- <string name="Dark Green">Dunkelgrün</string>
- <string name="Darker">Dunkler</string>
- <string name="Deep">Tief</string>
- <string name="Default Heels">Standardabsätze</string>
- <string name="Dense">Dicht</string>
- <string name="Double Chin">Doppelkinn</string>
- <string name="Downturned">Nach unten</string>
- <string name="Duffle Bag">Groß</string>
- <string name="Ear Angle">Ohrenwinkel</string>
- <string name="Ear Size">Ohrengröße</string>
- <string name="Ear Tips">Ohrenspitzen</string>
- <string name="Egg Head">Eierkopf</string>
- <string name="Eye Bags">Augenränder</string>
- <string name="Eye Color">Augenfarbe</string>
- <string name="Eye Depth">Augentiefe</string>
- <string name="Eye Lightness">Helligkeit</string>
- <string name="Eye Opening">Öffnung</string>
- <string name="Eye Pop">Symmetrie</string>
- <string name="Eye Size">Augengröße</string>
- <string name="Eye Spacing">Augenstand</string>
- <string name="Eyebrow Arc">Brauenbogen</string>
- <string name="Eyebrow Density">Brauendichte</string>
- <string name="Eyebrow Height">Brauenhöhe</string>
- <string name="Eyebrow Points">Brauenenden</string>
- <string name="Eyebrow Size">Brauengröße</string>
- <string name="Eyelash Length">Wimpernlänge</string>
- <string name="Eyeliner">Eyeliner</string>
- <string name="Eyeliner Color">Farbe des Eyeliners</string>
- <string name="Eyes Bugged">Glubschaugen</string>
- <string name="Face Shear">Gesichtsverzerrung</string>
- <string name="Facial Definition">Gesichtskonturen</string>
- <string name="Far Set Eyes">Weit auseinander</string>
- <string name="Fat Lips">Volle Lippen</string>
- <string name="Female">weiblich</string>
- <string name="Fingerless">Ohne Finger</string>
- <string name="Fingers">Finger</string>
- <string name="Flared Cuffs">Ausgestellt</string>
- <string name="Flat">Flach</string>
- <string name="Flat Butt">Flacher Hintern</string>
- <string name="Flat Head">Flacher Kopf</string>
- <string name="Flat Toe">Flache Spitze</string>
- <string name="Foot Size">Fußgröße</string>
- <string name="Forehead Angle">Stirnwinkel</string>
- <string name="Forehead Heavy">Stirn ausgeprägt</string>
- <string name="Freckles">Sommersprossen</string>
- <string name="Front Fringe">Fransen, vorne</string>
- <string name="Full Back">Hinten volles Haar</string>
- <string name="Full Eyeliner">Starker Eyeliner</string>
- <string name="Full Front">Vorne volles Haar</string>
- <string name="Full Hair Sides">Seitlich volles Haar</string>
- <string name="Full Sides">Volle Seiten</string>
- <string name="Glossy">Glänzend</string>
- <string name="Glove Fingers">Handschuhfinger</string>
- <string name="Glove Length">Handschuhlänge</string>
- <string name="Hair">Haare</string>
- <string name="Hair Back">Haare: Hinten</string>
- <string name="Hair Front">Haare: Vorne</string>
- <string name="Hair Sides">Haare: Seiten</string>
- <string name="Hair Sweep">Haartolle</string>
- <string name="Hair Thickess">Haardicke</string>
- <string name="Hair Thickness">Haardicke</string>
- <string name="Hair Tilt">Haarneigung</string>
- <string name="Hair Tilted Left">Nach links</string>
- <string name="Hair Tilted Right">Nach rechts</string>
- <string name="Hair Volume">Haare: Volumen</string>
- <string name="Hand Size">Handgröße</string>
- <string name="Handlebars">Zwirbelbart</string>
- <string name="Head Length">Kopflänge</string>
- <string name="Head Shape">Kopfform</string>
- <string name="Head Size">Kopfgröße</string>
- <string name="Head Stretch">Kopfstreckung</string>
- <string name="Heel Height">Absatzhöhe</string>
- <string name="Heel Shape">Absatzform</string>
- <string name="Height">Größe</string>
- <string name="High">Hoch</string>
- <string name="High Heels">Hohe Absätze</string>
- <string name="High Jaw">Hoch</string>
- <string name="High Platforms">Hohe Plattformsohlen</string>
- <string name="High and Tight">Hoch und eng</string>
- <string name="Higher">Höhere</string>
- <string name="Hip Length">Länge der Hüfte</string>
- <string name="Hip Width">Breite der Hüfte</string>
- <string name="Hover">Schweben</string>
- <string name="In">In</string>
- <string name="In Shdw Color">Farbe Innenseite</string>
- <string name="In Shdw Opacity">Deckkraft: innen</string>
- <string name="Inner Eye Corner">Ecke: Nasenseite</string>
- <string name="Inner Eye Shadow">Innenlid</string>
- <string name="Inner Shadow">Innenlid</string>
- <string name="Jacket Length">Jackenlänge</string>
- <string name="Jacket Wrinkles">Jackenfalten</string>
- <string name="Jaw Angle">Kinnansatz</string>
- <string name="Jaw Jut">Kinnposition</string>
- <string name="Jaw Shape">Kinnform</string>
- <string name="Join">Zusammen</string>
- <string name="Jowls">Hängebacken</string>
- <string name="Knee Angle">Kniewinkel</string>
- <string name="Knock Kneed">X-beinig</string>
- <string name="Large">Groß</string>
- <string name="Large Hands">Große Hände</string>
- <string name="Left Part">Linksscheitel</string>
- <string name="Leg Length">Beinlänge</string>
- <string name="Leg Muscles">Beinmuskeln</string>
- <string name="Less">Weniger</string>
- <string name="Less Body Fat">Weniger Speck</string>
- <string name="Less Curtains">Weniger</string>
- <string name="Less Freckles">Weniger</string>
- <string name="Less Full">Weniger</string>
- <string name="Less Gravity">Weniger</string>
- <string name="Less Love">Weniger</string>
- <string name="Less Muscles">Weniger</string>
- <string name="Less Muscular">Weniger</string>
- <string name="Less Rosy">Weniger</string>
- <string name="Less Round">Weniger</string>
- <string name="Less Saddle">Weniger</string>
- <string name="Less Square">Weniger</string>
- <string name="Less Volume">Weniger</string>
- <string name="Less soul">Weniger</string>
- <string name="Lighter">Heller</string>
- <string name="Lip Cleft">Amorbogen</string>
- <string name="Lip Cleft Depth">Tiefe: Amorbogen</string>
- <string name="Lip Fullness">Fülle</string>
- <string name="Lip Pinkness">Pinkton</string>
- <string name="Lip Ratio">Lippenproportionen</string>
- <string name="Lip Thickness">Lippendicke</string>
- <string name="Lip Width">Mundbreite</string>
- <string name="Lipgloss">Lipgloss</string>
- <string name="Lipstick">Lippenstift</string>
- <string name="Lipstick Color">Farbe</string>
- <string name="Long">Lang</string>
- <string name="Long Head">Langer Kopf</string>
- <string name="Long Hips">Lange Hüften</string>
- <string name="Long Legs">Lange Beine</string>
- <string name="Long Neck">Langer Hals</string>
- <string name="Long Pigtails">Lange Zöpfe</string>
- <string name="Long Ponytail">Langer Pferdeschwanz</string>
- <string name="Long Torso">Langer Oberkörper</string>
- <string name="Long arms">Lange Arme</string>
- <string name="Loose Pants">Weite Hosen</string>
- <string name="Loose Shirt">Weites Hemd</string>
- <string name="Loose Sleeves">Weite Ärmel</string>
- <string name="Love Handles">Fettpölsterchen</string>
- <string name="Low">Niedrig</string>
- <string name="Low Heels">Niedrig</string>
- <string name="Low Jaw">Niedrig</string>
- <string name="Low Platforms">Niedrig</string>
- <string name="Low and Loose">Weit</string>
- <string name="Lower">Absenken</string>
- <string name="Lower Bridge">Brücke, Unterer Teil</string>
- <string name="Lower Cheeks">Wangen, unterer Bereich</string>
- <string name="Male">Männlich</string>
- <string name="Middle Part">Mittelscheitel</string>
- <string name="More">Mehr</string>
- <string name="More Blush">Mehr</string>
- <string name="More Body Fat">Mehr Speck</string>
- <string name="More Curtains">Mehr</string>
- <string name="More Eyeshadow">Mehr</string>
- <string name="More Freckles">Mehr</string>
- <string name="More Full">Voller</string>
- <string name="More Gravity">Mehr</string>
- <string name="More Lipstick">Mehr</string>
- <string name="More Love">Mehr</string>
- <string name="More Lower Lip">Größer</string>
- <string name="More Muscles">Mehr</string>
- <string name="More Muscular">Mehr</string>
- <string name="More Rosy">Mehr</string>
- <string name="More Round">Runder</string>
- <string name="More Saddle">Mehr</string>
- <string name="More Sloped">Flach</string>
- <string name="More Square">Eckiger</string>
- <string name="More Upper Lip">Mehr</string>
- <string name="More Vertical">Steil</string>
- <string name="More Volume">Mehr</string>
- <string name="More soul">Mehr</string>
- <string name="Moustache">Schnauzer</string>
- <string name="Mouth Corner">Mundwinkel</string>
- <string name="Mouth Position">Mundposition</string>
- <string name="Mowhawk">Irokese</string>
- <string name="Muscular">Muskulös</string>
- <string name="Mutton Chops">Koteletten</string>
- <string name="Nail Polish">Nagellack</string>
- <string name="Nail Polish Color">Farbe</string>
- <string name="Narrow">Schmal</string>
- <string name="Narrow Back">Wenig</string>
- <string name="Narrow Front">Wenig</string>
- <string name="Narrow Lips">Schmale Lippen</string>
- <string name="Natural">Natürlich</string>
- <string name="Neck Length">Halslänge</string>
- <string name="Neck Thickness">Halsdicke</string>
- <string name="No Blush">Kein Rouge</string>
- <string name="No Eyeliner">Kein Eyeliner</string>
- <string name="No Eyeshadow">Kein Lidschatten</string>
- <string name="No Lipgloss">Kein Lipgloss</string>
- <string name="No Lipstick">Kein Lippenstift</string>
- <string name="No Part">Kein Scheitel</string>
- <string name="No Polish">Kein Nagellack</string>
- <string name="No Red">Nicht rot</string>
- <string name="No Spikes">Keine Stachel</string>
- <string name="No White">Kein Weiß</string>
- <string name="No Wrinkles">Keine Falten</string>
- <string name="Normal Lower">Normal unten</string>
- <string name="Normal Upper">Normal oben</string>
- <string name="Nose Left">Links</string>
- <string name="Nose Right">Rechts</string>
- <string name="Nose Size">Größe</string>
- <string name="Nose Thickness">Dicke</string>
- <string name="Nose Tip Angle">Nasenspitze</string>
- <string name="Nose Tip Shape">Nasenspitze</string>
- <string name="Nose Width">Nasenbreite</string>
- <string name="Nostril Division">Teilung</string>
- <string name="Nostril Width">Größe</string>
- <string name="Opaque">Deckend</string>
- <string name="Open">Öffnen</string>
- <string name="Open Back">Hinten offen</string>
- <string name="Open Front">Vorne offen</string>
- <string name="Open Left">Links offen</string>
- <string name="Open Right">Rechts offen</string>
- <string name="Orange">Orange</string>
- <string name="Out">Aus</string>
- <string name="Out Shdw Color">Farbe: Oben</string>
- <string name="Out Shdw Opacity">Deckkraft: Oben</string>
- <string name="Outer Eye Corner">Äußerer Augenwinkel</string>
- <string name="Outer Eye Shadow">Lidschatten: Oben</string>
- <string name="Outer Shadow">Lidschatten: Oben</string>
- <string name="Overbite">Überbiss</string>
- <string name="Package">Ausbeulung</string>
- <string name="Painted Nails">Lackierte Nägel</string>
- <string name="Pale">Blass</string>
- <string name="Pants Crotch">Schritt</string>
- <string name="Pants Fit">Passform</string>
- <string name="Pants Length">Hosenlänge</string>
- <string name="Pants Waist">Hüfte</string>
- <string name="Pants Wrinkles">Falten</string>
- <string name="Part">Scheitel</string>
- <string name="Part Bangs">Pony scheiteln</string>
- <string name="Pectorals">Brustmuskel</string>
- <string name="Pigment">Pigmentierung</string>
- <string name="Pigtails">Zöpfe</string>
- <string name="Pink">Pink</string>
- <string name="Pinker">Mehr Pink</string>
- <string name="Platform Height">Höhe</string>
- <string name="Platform Width">Breite</string>
- <string name="Pointy">Spitz</string>
- <string name="Pointy Heels">Pfennigabsätze</string>
- <string name="Ponytail">Pferdeschwanz</string>
- <string name="Poofy Skirt">Weit ausgestellt</string>
- <string name="Pop Left Eye">Linkes Auge größer</string>
- <string name="Pop Right Eye">Rechtes Auge größer</string>
- <string name="Puffy">Geschwollen</string>
- <string name="Puffy Eyelids">Geschwollene Lider</string>
- <string name="Rainbow Color">Regenbogenfarben</string>
- <string name="Red Hair">Rote Haare</string>
- <string name="Regular">Normal</string>
- <string name="Right Part">Scheitel rechts</string>
- <string name="Rosy Complexion">Rosiger Teint</string>
- <string name="Round">Rund</string>
- <string name="Ruddiness">Röte</string>
- <string name="Ruddy">Rötlich</string>
- <string name="Rumpled Hair">Zerzauste Haare</string>
- <string name="Saddle Bags">Hüftspeck</string>
- <string name="Scrawny Leg">Dürres Bein</string>
- <string name="Separate">Auseinander</string>
- <string name="Shallow">Flach</string>
- <string name="Shear Back">Hinterkopf rasiert</string>
- <string name="Shear Face">Gesicht verzerren</string>
- <string name="Shear Front">Vorne rasiert</string>
- <string name="Shear Left Up">Links</string>
- <string name="Shear Right Up">Rechts</string>
- <string name="Sheared Back">Hinterkopf rasiert</string>
- <string name="Sheared Front">Vorne rasiert</string>
- <string name="Shift Left">Nach links</string>
- <string name="Shift Mouth">Mund verschieben</string>
- <string name="Shift Right">Nach rechts</string>
- <string name="Shirt Bottom">Hemdlänge</string>
- <string name="Shirt Fit">Passform</string>
- <string name="Shirt Wrinkles">Falten</string>
- <string name="Shoe Height">Schuhart</string>
- <string name="Short">Klein</string>
- <string name="Short Arms">Kurze Arme</string>
- <string name="Short Legs">Kurze Beine</string>
- <string name="Short Neck">Kurzer Hals</string>
- <string name="Short Pigtails">Kurze Zöpfe</string>
- <string name="Short Ponytail">Kurzer Pferdeschwanz</string>
- <string name="Short Sideburns">Kurze Koteletten</string>
- <string name="Short Torso">Kurzer Oberkörper</string>
- <string name="Short hips">Kurze Hüften</string>
- <string name="Shoulders">Schultern</string>
- <string name="Side Fringe">Seitliche Fransen</string>
- <string name="Sideburns">Koteletten</string>
- <string name="Sides Hair">Seitliches Haar</string>
- <string name="Sides Hair Down">Lang</string>
- <string name="Sides Hair Up">Kurz</string>
- <string name="Skinny Neck">Dünner Hals</string>
- <string name="Skirt Fit">Passform</string>
- <string name="Skirt Length">Rocklänge</string>
- <string name="Slanted Forehead">Fliehende Stirn</string>
- <string name="Sleeve Length">Ärmellänge</string>
- <string name="Sleeve Looseness">Passform Ärmel</string>
- <string name="Slit Back">Schlitz: Hinten</string>
- <string name="Slit Front">Schlitz: Vorne</string>
- <string name="Slit Left">Schlitz: Links</string>
- <string name="Slit Right">Schlitz: Rechts</string>
- <string name="Small">Klein</string>
- <string name="Small Hands">Kleine Hände</string>
- <string name="Small Head">Klein</string>
- <string name="Smooth">Glätten</string>
- <string name="Smooth Hair">Glattes Haar</string>
- <string name="Socks Length">Strumpflänge</string>
- <string name="Soulpatch">Unterlippenbart</string>
- <string name="Sparse">Wenig</string>
- <string name="Spiked Hair">Stachelhaare</string>
- <string name="Square">Rechteck</string>
- <string name="Square Toe">Eckig</string>
- <string name="Squash Head">Gestaucht</string>
- <string name="Stretch Head">Gestreckt</string>
- <string name="Sunken">Eingefallen</string>
- <string name="Sunken Chest">Trichterbrust</string>
- <string name="Sunken Eyes">Eingesunkene Augen</string>
- <string name="Sweep Back">Nach hinten</string>
- <string name="Sweep Forward">Nach vorne</string>
- <string name="Tall">Groß</string>
- <string name="Taper Back">Ansatzbreite hinten</string>
- <string name="Taper Front">Ansatzbreite vorne</string>
- <string name="Thick Heels">Dicke Absätze</string>
- <string name="Thick Neck">Dicker Hals</string>
- <string name="Thick Toe">Dick</string>
- <string name="Thin">Dünn</string>
- <string name="Thin Eyebrows">Dünne Augenbrauen</string>
- <string name="Thin Lips">Dünne Lippen</string>
- <string name="Thin Nose">Dünne Nase</string>
- <string name="Tight Chin">Straffes Kinn</string>
- <string name="Tight Cuffs">Eng</string>
- <string name="Tight Pants">Enge Hosen</string>
- <string name="Tight Shirt">Enges Hemd</string>
- <string name="Tight Skirt">Enger Rock</string>
- <string name="Tight Sleeves">Enge Ärmel</string>
- <string name="Toe Shape">Spitze</string>
- <string name="Toe Thickness">Dicke</string>
- <string name="Torso Length">Länge des Oberkörpers</string>
- <string name="Torso Muscles">Muskeln</string>
- <string name="Torso Scrawny">Dürr</string>
- <string name="Unattached">Frei</string>
- <string name="Uncreased">Straffes Lid</string>
- <string name="Underbite">Unterbiss</string>
- <string name="Unnatural">Unnatürlich</string>
- <string name="Upper Bridge">Brücke, oberer Teil</string>
- <string name="Upper Cheeks">Obere Wangen</string>
- <string name="Upper Chin Cleft">Obere Kinnspalte</string>
- <string name="Upper Eyelid Fold">Obere Lidfalte</string>
- <string name="Upturned">Stupsnase</string>
- <string name="Very Red">Sehr rot</string>
- <string name="Waist Height">Bund</string>
- <string name="Well-Fed">Gut genährt</string>
- <string name="White Hair">Weiße Haare</string>
- <string name="Wide">Breit</string>
- <string name="Wide Back">Breit</string>
- <string name="Wide Front">Breit</string>
- <string name="Wide Lips">Breit</string>
- <string name="Wild">Wild</string>
- <string name="Wrinkles">Falten</string>
- <string name="LocationCtrlAddLandmarkTooltip">Zu meinen Landmarken hinzufügen</string>
- <string name="LocationCtrlEditLandmarkTooltip">Meine Landmarken bearbeiten</string>
- <string name="LocationCtrlInfoBtnTooltip">Weitere Informationen über die aktuelle Position</string>
- <string name="LocationCtrlComboBtnTooltip">Mein Reiseverlauf</string>
- <string name="LocationCtrlForSaleTooltip">Dieses Land kaufen</string>
- <string name="LocationCtrlVoiceTooltip">Voice hier nicht möglich</string>
- <string name="LocationCtrlFlyTooltip">Fliegen ist unzulässig</string>
- <string name="LocationCtrlPushTooltip">Kein Stoßen</string>
- <string name="LocationCtrlBuildTooltip">Bauen/Fallen lassen von Objekten ist verboten</string>
- <string name="LocationCtrlScriptsTooltip">Skripte sind unzulässig</string>
- <string name="LocationCtrlDamageTooltip">Gesundheit</string>
- <string name="LocationCtrlAdultIconTooltip">Adult-Region</string>
- <string name="LocationCtrlModerateIconTooltip">Moderate Region</string>
- <string name="LocationCtrlGeneralIconTooltip">Generelle Region</string>
- <string name="LocationCtrlSeeAVsTooltip">Avatare in dieser Parzelle können von Avataren außerhalb dieser Parzelle weder gesehen noch gehört werden</string>
- <string name="LocationCtrlPathfindingDirtyTooltip">Bewegliche Objekte verhalten sich in dieser Region u. U. erst dann korrekt, wenn die Region neu geformt wird.</string>
- <string name="LocationCtrlPathfindingDisabledTooltip">Dynamisches Pathfinding ist in dieser Region nicht aktiviert.</string>
- <string name="UpdaterWindowTitle">[APP_NAME] Aktualisierung</string>
- <string name="UpdaterNowUpdating">[APP_NAME] wird aktualisiert...</string>
- <string name="UpdaterNowInstalling">[APP_NAME] wird installiert...</string>
- <string name="UpdaterUpdatingDescriptive">Ihr [APP_NAME]-Viewer wird aktualisiert. Dies kann einen Moment dauern. Wir bitten um Ihr Verständnis.</string>
- <string name="UpdaterProgressBarTextWithEllipses">Aktualisierung wird heruntergeladen...</string>
- <string name="UpdaterProgressBarText">Aktualisierung wird heruntergeladen</string>
- <string name="UpdaterFailDownloadTitle">Herunterladen ist fehlgeschlagen</string>
- <string name="UpdaterFailUpdateDescriptive">Beim Aktualisieren von [APP_NAME] ist ein Fehler aufgetreten. Bitte laden Sie die aktuellste Version von www.secondlife.com herunter.</string>
- <string name="UpdaterFailInstallTitle">Aktualisierung konnte nicht installiert werden</string>
- <string name="UpdaterFailStartTitle">Viewer konnte nicht gestartet werden</string>
- <string name="ItemsComingInTooFastFrom">[APP_NAME]: Zuviele Objekte auf einmal von [FROM_NAME]. Automaitsche Vorschau ist für [TIME] Sekunden nicht verfügbar.</string>
- <string name="ItemsComingInTooFast">[APP_NAME]: Zuviele Objekte auf einmal. Automaitsche Vorschau ist für [TIME] Sekunden nicht verfügbar.</string>
- <string name="IM_logging_string">-- Instant-Message-Protokoll aktiviert --</string>
- <string name="IM_typing_start_string">[NAME] tippt...</string>
- <string name="Unnamed">(Nicht benannt)</string>
- <string name="IM_moderated_chat_label">(Moderiert: Stimmen in der Standardeinstellung stummgeschaltet)</string>
- <string name="IM_unavailable_text_label">Für diese Verbindung ist kein Text-Chat verfügbar.</string>
- <string name="IM_muted_text_label">Ihr Text-Chat wurde von einem Gruppenmoderator deaktiviert.</string>
- <string name="IM_default_text_label">Für Instant Message hier klicken.</string>
- <string name="IM_to_label">An</string>
- <string name="IM_moderator_label">(Moderator)</string>
- <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“ &gt; „Privatsphäre“ die Option „Nur IMs und Anrufe von Freunden oder Gruppen durchstellen“ deaktivieren.</string>
- <string name="OnlineStatus">Online</string>
- <string name="OfflineStatus">Offline</string>
- <string name="not_online_msg">Benutzer nicht online – Nachricht wird gespeichert und später zugestellt.</string>
- <string name="not_online_inventory">Benutzer nicht online – Inventar gespeichert.</string>
- <string name="answered_call">Ihr Anruf wurde entgegengenommen</string>
- <string name="you_started_call">Sie haben einen Voice-Anruf begonnen</string>
- <string name="you_joined_call">Sie sind dem Gespräch beigetreten</string>
- <string name="you_auto_rejected_call-im">Sie haben den Voice-Anruf automatisch abgelehnt, während der Nicht-stören-Modus aktiviert war.</string>
- <string name="name_started_call">[NAME] hat einen Voice-Anruf begonnen</string>
- <string name="ringing-im">Verbindung wird hergestellt...</string>
- <string name="connected-im">Verbunden. Klicken Sie auf Anruf beenden, um die Verbindung zu trennen</string>
- <string name="hang_up-im">Anruf wurde beendet</string>
- <string name="answering-im">Wird verbunden...</string>
- <string name="conference-title">Chat mit mehreren Personen</string>
- <string name="conference-title-incoming">Konferenz mit [AGENT_NAME]</string>
- <string name="inventory_item_offered-im">Inventarobjekt „[ITEM_NAME]“ angeboten</string>
- <string name="inventory_folder_offered-im">Inventarordner „[ITEM_NAME]“ angeboten</string>
+Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_SITE].
+ </string>
+ <string name="5 O'Clock Shadow">
+ Bartschatten
+ </string>
+ <string name="All White">
+ Ganz weiß
+ </string>
+ <string name="Anime Eyes">
+ Anime-Augen
+ </string>
+ <string name="Arced">
+ Gewölbt
+ </string>
+ <string name="Arm Length">
+ Armlänge
+ </string>
+ <string name="Attached">
+ Angewachsen
+ </string>
+ <string name="Attached Earlobes">
+ Angewachsene Ohrläppchen
+ </string>
+ <string name="Back Fringe">
+ Nackenfransen
+ </string>
+ <string name="Baggy">
+ Tränensäcke
+ </string>
+ <string name="Bangs">
+ Pony
+ </string>
+ <string name="Beady Eyes">
+ Knopfaugen
+ </string>
+ <string name="Belly Size">
+ Bauchgröße
+ </string>
+ <string name="Big">
+ Groß
+ </string>
+ <string name="Big Butt">
+ Großer Hintern
+ </string>
+ <string name="Big Hair Back">
+ Volumen: Hinten
+ </string>
+ <string name="Big Hair Front">
+ Volumen: Vorne
+ </string>
+ <string name="Big Hair Top">
+ Volumen: Oben
+ </string>
+ <string name="Big Head">
+ Groß
+ </string>
+ <string name="Big Pectorals">
+ Große Brustmuskeln
+ </string>
+ <string name="Big Spikes">
+ Große Stacheln
+ </string>
+ <string name="Black">
+ Schwarz
+ </string>
+ <string name="Blonde">
+ Blond
+ </string>
+ <string name="Blonde Hair">
+ Blondes Haar
+ </string>
+ <string name="Blush">
+ Rouge
+ </string>
+ <string name="Blush Color">
+ Rougefarbe
+ </string>
+ <string name="Blush Opacity">
+ Rouge Deckkraft
+ </string>
+ <string name="Body Definition">
+ Körperkonturen
+ </string>
+ <string name="Body Fat">
+ Körperfett
+ </string>
+ <string name="Body Freckles">
+ Sommersprossen
+ </string>
+ <string name="Body Thick">
+ breit
+ </string>
+ <string name="Body Thickness">
+ Körperbreite
+ </string>
+ <string name="Body Thin">
+ schmal
+ </string>
+ <string name="Bow Legged">
+ o-beinig
+ </string>
+ <string name="Breast Buoyancy">
+ Brust, Straffheit
+ </string>
+ <string name="Breast Cleavage">
+ Dekolleté
+ </string>
+ <string name="Breast Size">
+ Brustgröße
+ </string>
+ <string name="Bridge Width">
+ Rückenbreite
+ </string>
+ <string name="Broad">
+ Breit
+ </string>
+ <string name="Brow Size">
+ Brauengröße
+ </string>
+ <string name="Bug Eyes">
+ Glubschaugen
+ </string>
+ <string name="Bugged Eyes">
+ Hervortretend
+ </string>
+ <string name="Bulbous">
+ Knollennase
+ </string>
+ <string name="Bulbous Nose">
+ Knollennase
+ </string>
+ <string name="Breast Physics Mass">
+ Brust – Masse
+ </string>
+ <string name="Breast Physics Smoothing">
+ Brust – Glättung
+ </string>
+ <string name="Breast Physics Gravity">
+ Brust – Schwerkraft
+ </string>
+ <string name="Breast Physics Drag">
+ Brust – Luftwiderstand
+ </string>
+ <string name="Breast Physics InOut Max Effect">
+ Max. Effekt
+ </string>
+ <string name="Breast Physics InOut Spring">
+ Federn
+ </string>
+ <string name="Breast Physics InOut Gain">
+ Verstärkung
+ </string>
+ <string name="Breast Physics InOut Damping">
+ Dämpfung
+ </string>
+ <string name="Breast Physics UpDown Max Effect">
+ Max. Effekt
+ </string>
+ <string name="Breast Physics UpDown Spring">
+ Federn
+ </string>
+ <string name="Breast Physics UpDown Gain">
+ Verstärkung
+ </string>
+ <string name="Breast Physics UpDown Damping">
+ Dämpfung
+ </string>
+ <string name="Breast Physics LeftRight Max Effect">
+ Max. Effekt
+ </string>
+ <string name="Breast Physics LeftRight Spring">
+ Federn
+ </string>
+ <string name="Breast Physics LeftRight Gain">
+ Verstärkung
+ </string>
+ <string name="Breast Physics LeftRight Damping">
+ Dämpfung
+ </string>
+ <string name="Belly Physics Mass">
+ Bauch – Masse
+ </string>
+ <string name="Belly Physics Smoothing">
+ Bauch – Glättung
+ </string>
+ <string name="Belly Physics Gravity">
+ Bauch – Schwerkraft
+ </string>
+ <string name="Belly Physics Drag">
+ Bauch – Luftwiderstand
+ </string>
+ <string name="Belly Physics UpDown Max Effect">
+ Max. Effekt
+ </string>
+ <string name="Belly Physics UpDown Spring">
+ Federn
+ </string>
+ <string name="Belly Physics UpDown Gain">
+ Verstärkung
+ </string>
+ <string name="Belly Physics UpDown Damping">
+ Dämpfung
+ </string>
+ <string name="Butt Physics Mass">
+ Po – Masse
+ </string>
+ <string name="Butt Physics Smoothing">
+ Po – Glättung
+ </string>
+ <string name="Butt Physics Gravity">
+ Po – Schwerkraft
+ </string>
+ <string name="Butt Physics Drag">
+ Po – Luftwiderstand
+ </string>
+ <string name="Butt Physics UpDown Max Effect">
+ Max. Effekt
+ </string>
+ <string name="Butt Physics UpDown Spring">
+ Federn
+ </string>
+ <string name="Butt Physics UpDown Gain">
+ Verstärkung
+ </string>
+ <string name="Butt Physics UpDown Damping">
+ Dämpfung
+ </string>
+ <string name="Butt Physics LeftRight Max Effect">
+ Max. Effekt
+ </string>
+ <string name="Butt Physics LeftRight Spring">
+ Federn
+ </string>
+ <string name="Butt Physics LeftRight Gain">
+ Verstärkung
+ </string>
+ <string name="Butt Physics LeftRight Damping">
+ Dämpfung
+ </string>
+ <string name="Bushy Eyebrows">
+ Buschige Augenbrauen
+ </string>
+ <string name="Bushy Hair">
+ Buschiges Haar
+ </string>
+ <string name="Butt Size">
+ Hintern, Größe
+ </string>
+ <string name="Butt Gravity">
+ Po – Schwerkraft
+ </string>
+ <string name="bustle skirt">
+ Tournürenrock
+ </string>
+ <string name="no bustle">
+ Ohne
+ </string>
+ <string name="more bustle">
+ Mit
+ </string>
+ <string name="Chaplin">
+ Chaplin
+ </string>
+ <string name="Cheek Bones">
+ Wangenknochen
+ </string>
+ <string name="Chest Size">
+ Brustgröße
+ </string>
+ <string name="Chin Angle">
+ Kinnwinkel
+ </string>
+ <string name="Chin Cleft">
+ Kinnspalte
+ </string>
+ <string name="Chin Curtains">
+ Schifferfräse
+ </string>
+ <string name="Chin Depth">
+ Kinnlänge
+ </string>
+ <string name="Chin Heavy">
+ Kinn ausgeprägt
+ </string>
+ <string name="Chin In">
+ Kinn zurück
+ </string>
+ <string name="Chin Out">
+ Kinn nach vorne
+ </string>
+ <string name="Chin-Neck">
+ Kinn-Hals
+ </string>
+ <string name="Clear">
+ Transparent
+ </string>
+ <string name="Cleft">
+ Spalte
+ </string>
+ <string name="Close Set Eyes">
+ Eng stehende Augen
+ </string>
+ <string name="Closed">
+ Geschlossen
+ </string>
+ <string name="Closed Back">
+ Hinten geschlossen
+ </string>
+ <string name="Closed Front">
+ Vorne geschlossen
+ </string>
+ <string name="Closed Left">
+ Links geschlossen
+ </string>
+ <string name="Closed Right">
+ Rechts geschlossen
+ </string>
+ <string name="Coin Purse">
+ Klein
+ </string>
+ <string name="Collar Back">
+ Kragen hinten
+ </string>
+ <string name="Collar Front">
+ Kragen vorne
+ </string>
+ <string name="Corner Down">
+ Nach unten
+ </string>
+ <string name="Corner Up">
+ Nach oben
+ </string>
+ <string name="Creased">
+ Schlupflid
+ </string>
+ <string name="Crooked Nose">
+ Krumme Nase
+ </string>
+ <string name="Cuff Flare">
+ Hosenaufschlag
+ </string>
+ <string name="Dark">
+ Dunkel
+ </string>
+ <string name="Dark Green">
+ Dunkelgrün
+ </string>
+ <string name="Darker">
+ Dunkler
+ </string>
+ <string name="Deep">
+ Tief
+ </string>
+ <string name="Default Heels">
+ Standardabsätze
+ </string>
+ <string name="Dense">
+ Dicht
+ </string>
+ <string name="Double Chin">
+ Doppelkinn
+ </string>
+ <string name="Downturned">
+ Nach unten
+ </string>
+ <string name="Duffle Bag">
+ Groß
+ </string>
+ <string name="Ear Angle">
+ Ohrenwinkel
+ </string>
+ <string name="Ear Size">
+ Ohrengröße
+ </string>
+ <string name="Ear Tips">
+ Ohrenspitzen
+ </string>
+ <string name="Egg Head">
+ Eierkopf
+ </string>
+ <string name="Eye Bags">
+ Augenränder
+ </string>
+ <string name="Eye Color">
+ Augenfarbe
+ </string>
+ <string name="Eye Depth">
+ Augentiefe
+ </string>
+ <string name="Eye Lightness">
+ Helligkeit
+ </string>
+ <string name="Eye Opening">
+ Öffnung
+ </string>
+ <string name="Eye Pop">
+ Symmetrie
+ </string>
+ <string name="Eye Size">
+ Augengröße
+ </string>
+ <string name="Eye Spacing">
+ Augenstand
+ </string>
+ <string name="Eyebrow Arc">
+ Brauenbogen
+ </string>
+ <string name="Eyebrow Density">
+ Brauendichte
+ </string>
+ <string name="Eyebrow Height">
+ Brauenhöhe
+ </string>
+ <string name="Eyebrow Points">
+ Brauenenden
+ </string>
+ <string name="Eyebrow Size">
+ Brauengröße
+ </string>
+ <string name="Eyelash Length">
+ Wimpernlänge
+ </string>
+ <string name="Eyeliner">
+ Eyeliner
+ </string>
+ <string name="Eyeliner Color">
+ Farbe des Eyeliners
+ </string>
+ <string name="Eyes Bugged">
+ Glubschaugen
+ </string>
+ <string name="Face Shear">
+ Gesichtsverzerrung
+ </string>
+ <string name="Facial Definition">
+ Gesichtskonturen
+ </string>
+ <string name="Far Set Eyes">
+ Weit auseinander
+ </string>
+ <string name="Fat Lips">
+ Volle Lippen
+ </string>
+ <string name="Female">
+ weiblich
+ </string>
+ <string name="Fingerless">
+ Ohne Finger
+ </string>
+ <string name="Fingers">
+ Finger
+ </string>
+ <string name="Flared Cuffs">
+ Ausgestellt
+ </string>
+ <string name="Flat">
+ Flach
+ </string>
+ <string name="Flat Butt">
+ Flacher Hintern
+ </string>
+ <string name="Flat Head">
+ Flacher Kopf
+ </string>
+ <string name="Flat Toe">
+ Flache Spitze
+ </string>
+ <string name="Foot Size">
+ Fußgröße
+ </string>
+ <string name="Forehead Angle">
+ Stirnwinkel
+ </string>
+ <string name="Forehead Heavy">
+ Stirn ausgeprägt
+ </string>
+ <string name="Freckles">
+ Sommersprossen
+ </string>
+ <string name="Front Fringe">
+ Fransen, vorne
+ </string>
+ <string name="Full Back">
+ Hinten volles Haar
+ </string>
+ <string name="Full Eyeliner">
+ Starker Eyeliner
+ </string>
+ <string name="Full Front">
+ Vorne volles Haar
+ </string>
+ <string name="Full Hair Sides">
+ Seitlich volles Haar
+ </string>
+ <string name="Full Sides">
+ Volle Seiten
+ </string>
+ <string name="Glossy">
+ Glänzend
+ </string>
+ <string name="Glove Fingers">
+ Handschuhfinger
+ </string>
+ <string name="Glove Length">
+ Handschuhlänge
+ </string>
+ <string name="Hair">
+ Haare
+ </string>
+ <string name="Hair Back">
+ Haare: Hinten
+ </string>
+ <string name="Hair Front">
+ Haare: Vorne
+ </string>
+ <string name="Hair Sides">
+ Haare: Seiten
+ </string>
+ <string name="Hair Sweep">
+ Haartolle
+ </string>
+ <string name="Hair Thickess">
+ Haardicke
+ </string>
+ <string name="Hair Thickness">
+ Haardicke
+ </string>
+ <string name="Hair Tilt">
+ Haarneigung
+ </string>
+ <string name="Hair Tilted Left">
+ Nach links
+ </string>
+ <string name="Hair Tilted Right">
+ Nach rechts
+ </string>
+ <string name="Hair Volume">
+ Haare: Volumen
+ </string>
+ <string name="Hand Size">
+ Handgröße
+ </string>
+ <string name="Handlebars">
+ Zwirbelbart
+ </string>
+ <string name="Head Length">
+ Kopflänge
+ </string>
+ <string name="Head Shape">
+ Kopfform
+ </string>
+ <string name="Head Size">
+ Kopfgröße
+ </string>
+ <string name="Head Stretch">
+ Kopfstreckung
+ </string>
+ <string name="Heel Height">
+ Absatzhöhe
+ </string>
+ <string name="Heel Shape">
+ Absatzform
+ </string>
+ <string name="Height">
+ Größe
+ </string>
+ <string name="High">
+ Hoch
+ </string>
+ <string name="High Heels">
+ Hohe Absätze
+ </string>
+ <string name="High Jaw">
+ Hoch
+ </string>
+ <string name="High Platforms">
+ Hohe Plattformsohlen
+ </string>
+ <string name="High and Tight">
+ Hoch und eng
+ </string>
+ <string name="Higher">
+ Höhere
+ </string>
+ <string name="Hip Length">
+ Länge der Hüfte
+ </string>
+ <string name="Hip Width">
+ Breite der Hüfte
+ </string>
+ <string name="Hover">
+ Schweben
+ </string>
+ <string name="In">
+ In
+ </string>
+ <string name="In Shdw Color">
+ Farbe Innenseite
+ </string>
+ <string name="In Shdw Opacity">
+ Deckkraft: innen
+ </string>
+ <string name="Inner Eye Corner">
+ Ecke: Nasenseite
+ </string>
+ <string name="Inner Eye Shadow">
+ Innenlid
+ </string>
+ <string name="Inner Shadow">
+ Innenlid
+ </string>
+ <string name="Jacket Length">
+ Jackenlänge
+ </string>
+ <string name="Jacket Wrinkles">
+ Jackenfalten
+ </string>
+ <string name="Jaw Angle">
+ Kinnansatz
+ </string>
+ <string name="Jaw Jut">
+ Kinnposition
+ </string>
+ <string name="Jaw Shape">
+ Kinnform
+ </string>
+ <string name="Join">
+ Zusammen
+ </string>
+ <string name="Jowls">
+ Hängebacken
+ </string>
+ <string name="Knee Angle">
+ Kniewinkel
+ </string>
+ <string name="Knock Kneed">
+ X-beinig
+ </string>
+ <string name="Large">
+ Groß
+ </string>
+ <string name="Large Hands">
+ Große Hände
+ </string>
+ <string name="Left Part">
+ Linksscheitel
+ </string>
+ <string name="Leg Length">
+ Beinlänge
+ </string>
+ <string name="Leg Muscles">
+ Beinmuskeln
+ </string>
+ <string name="Less">
+ Weniger
+ </string>
+ <string name="Less Body Fat">
+ Weniger Speck
+ </string>
+ <string name="Less Curtains">
+ Weniger
+ </string>
+ <string name="Less Freckles">
+ Weniger
+ </string>
+ <string name="Less Full">
+ Weniger
+ </string>
+ <string name="Less Gravity">
+ Weniger
+ </string>
+ <string name="Less Love">
+ Weniger
+ </string>
+ <string name="Less Muscles">
+ Weniger
+ </string>
+ <string name="Less Muscular">
+ Weniger
+ </string>
+ <string name="Less Rosy">
+ Weniger
+ </string>
+ <string name="Less Round">
+ Weniger
+ </string>
+ <string name="Less Saddle">
+ Weniger
+ </string>
+ <string name="Less Square">
+ Weniger
+ </string>
+ <string name="Less Volume">
+ Weniger
+ </string>
+ <string name="Less soul">
+ Weniger
+ </string>
+ <string name="Lighter">
+ Heller
+ </string>
+ <string name="Lip Cleft">
+ Amorbogen
+ </string>
+ <string name="Lip Cleft Depth">
+ Tiefe: Amorbogen
+ </string>
+ <string name="Lip Fullness">
+ Fülle
+ </string>
+ <string name="Lip Pinkness">
+ Pinkton
+ </string>
+ <string name="Lip Ratio">
+ Lippenproportionen
+ </string>
+ <string name="Lip Thickness">
+ Lippendicke
+ </string>
+ <string name="Lip Width">
+ Mundbreite
+ </string>
+ <string name="Lipgloss">
+ Lipgloss
+ </string>
+ <string name="Lipstick">
+ Lippenstift
+ </string>
+ <string name="Lipstick Color">
+ Farbe
+ </string>
+ <string name="Long">
+ Lang
+ </string>
+ <string name="Long Head">
+ Langer Kopf
+ </string>
+ <string name="Long Hips">
+ Lange Hüften
+ </string>
+ <string name="Long Legs">
+ Lange Beine
+ </string>
+ <string name="Long Neck">
+ Langer Hals
+ </string>
+ <string name="Long Pigtails">
+ Lange Zöpfe
+ </string>
+ <string name="Long Ponytail">
+ Langer Pferdeschwanz
+ </string>
+ <string name="Long Torso">
+ Langer Oberkörper
+ </string>
+ <string name="Long arms">
+ Lange Arme
+ </string>
+ <string name="Loose Pants">
+ Weite Hosen
+ </string>
+ <string name="Loose Shirt">
+ Weites Hemd
+ </string>
+ <string name="Loose Sleeves">
+ Weite Ärmel
+ </string>
+ <string name="Love Handles">
+ Fettpölsterchen
+ </string>
+ <string name="Low">
+ Niedrig
+ </string>
+ <string name="Low Heels">
+ Niedrig
+ </string>
+ <string name="Low Jaw">
+ Niedrig
+ </string>
+ <string name="Low Platforms">
+ Niedrig
+ </string>
+ <string name="Low and Loose">
+ Weit
+ </string>
+ <string name="Lower">
+ Absenken
+ </string>
+ <string name="Lower Bridge">
+ Brücke, Unterer Teil
+ </string>
+ <string name="Lower Cheeks">
+ Wangen, unterer Bereich
+ </string>
+ <string name="Male">
+ Männlich
+ </string>
+ <string name="Middle Part">
+ Mittelscheitel
+ </string>
+ <string name="More">
+ Mehr
+ </string>
+ <string name="More Blush">
+ Mehr
+ </string>
+ <string name="More Body Fat">
+ Mehr Speck
+ </string>
+ <string name="More Curtains">
+ Mehr
+ </string>
+ <string name="More Eyeshadow">
+ Mehr
+ </string>
+ <string name="More Freckles">
+ Mehr
+ </string>
+ <string name="More Full">
+ Voller
+ </string>
+ <string name="More Gravity">
+ Mehr
+ </string>
+ <string name="More Lipstick">
+ Mehr
+ </string>
+ <string name="More Love">
+ Mehr
+ </string>
+ <string name="More Lower Lip">
+ Größer
+ </string>
+ <string name="More Muscles">
+ Mehr
+ </string>
+ <string name="More Muscular">
+ Mehr
+ </string>
+ <string name="More Rosy">
+ Mehr
+ </string>
+ <string name="More Round">
+ Runder
+ </string>
+ <string name="More Saddle">
+ Mehr
+ </string>
+ <string name="More Sloped">
+ Flach
+ </string>
+ <string name="More Square">
+ Eckiger
+ </string>
+ <string name="More Upper Lip">
+ Mehr
+ </string>
+ <string name="More Vertical">
+ Steil
+ </string>
+ <string name="More Volume">
+ Mehr
+ </string>
+ <string name="More soul">
+ Mehr
+ </string>
+ <string name="Moustache">
+ Schnauzer
+ </string>
+ <string name="Mouth Corner">
+ Mundwinkel
+ </string>
+ <string name="Mouth Position">
+ Mundposition
+ </string>
+ <string name="Mowhawk">
+ Irokese
+ </string>
+ <string name="Muscular">
+ Muskulös
+ </string>
+ <string name="Mutton Chops">
+ Koteletten
+ </string>
+ <string name="Nail Polish">
+ Nagellack
+ </string>
+ <string name="Nail Polish Color">
+ Farbe
+ </string>
+ <string name="Narrow">
+ Schmal
+ </string>
+ <string name="Narrow Back">
+ Wenig
+ </string>
+ <string name="Narrow Front">
+ Wenig
+ </string>
+ <string name="Narrow Lips">
+ Schmale Lippen
+ </string>
+ <string name="Natural">
+ Natürlich
+ </string>
+ <string name="Neck Length">
+ Halslänge
+ </string>
+ <string name="Neck Thickness">
+ Halsdicke
+ </string>
+ <string name="No Blush">
+ Kein Rouge
+ </string>
+ <string name="No Eyeliner">
+ Kein Eyeliner
+ </string>
+ <string name="No Eyeshadow">
+ Kein Lidschatten
+ </string>
+ <string name="No Lipgloss">
+ Kein Lipgloss
+ </string>
+ <string name="No Lipstick">
+ Kein Lippenstift
+ </string>
+ <string name="No Part">
+ Kein Scheitel
+ </string>
+ <string name="No Polish">
+ Kein Nagellack
+ </string>
+ <string name="No Red">
+ Nicht rot
+ </string>
+ <string name="No Spikes">
+ Keine Stachel
+ </string>
+ <string name="No White">
+ Kein Weiß
+ </string>
+ <string name="No Wrinkles">
+ Keine Falten
+ </string>
+ <string name="Normal Lower">
+ Normal unten
+ </string>
+ <string name="Normal Upper">
+ Normal oben
+ </string>
+ <string name="Nose Left">
+ Links
+ </string>
+ <string name="Nose Right">
+ Rechts
+ </string>
+ <string name="Nose Size">
+ Größe
+ </string>
+ <string name="Nose Thickness">
+ Dicke
+ </string>
+ <string name="Nose Tip Angle">
+ Nasenspitze
+ </string>
+ <string name="Nose Tip Shape">
+ Nasenspitze
+ </string>
+ <string name="Nose Width">
+ Nasenbreite
+ </string>
+ <string name="Nostril Division">
+ Teilung
+ </string>
+ <string name="Nostril Width">
+ Größe
+ </string>
+ <string name="Opaque">
+ Deckend
+ </string>
+ <string name="Open">
+ Öffnen
+ </string>
+ <string name="Open Back">
+ Hinten offen
+ </string>
+ <string name="Open Front">
+ Vorne offen
+ </string>
+ <string name="Open Left">
+ Links offen
+ </string>
+ <string name="Open Right">
+ Rechts offen
+ </string>
+ <string name="Orange">
+ Orange
+ </string>
+ <string name="Out">
+ Aus
+ </string>
+ <string name="Out Shdw Color">
+ Farbe: Oben
+ </string>
+ <string name="Out Shdw Opacity">
+ Deckkraft: Oben
+ </string>
+ <string name="Outer Eye Corner">
+ Äußerer Augenwinkel
+ </string>
+ <string name="Outer Eye Shadow">
+ Lidschatten: Oben
+ </string>
+ <string name="Outer Shadow">
+ Lidschatten: Oben
+ </string>
+ <string name="Overbite">
+ Überbiss
+ </string>
+ <string name="Package">
+ Ausbeulung
+ </string>
+ <string name="Painted Nails">
+ Lackierte Nägel
+ </string>
+ <string name="Pale">
+ Blass
+ </string>
+ <string name="Pants Crotch">
+ Schritt
+ </string>
+ <string name="Pants Fit">
+ Passform
+ </string>
+ <string name="Pants Length">
+ Hosenlänge
+ </string>
+ <string name="Pants Waist">
+ Hüfte
+ </string>
+ <string name="Pants Wrinkles">
+ Falten
+ </string>
+ <string name="Part">
+ Scheitel
+ </string>
+ <string name="Part Bangs">
+ Pony scheiteln
+ </string>
+ <string name="Pectorals">
+ Brustmuskel
+ </string>
+ <string name="Pigment">
+ Pigmentierung
+ </string>
+ <string name="Pigtails">
+ Zöpfe
+ </string>
+ <string name="Pink">
+ Pink
+ </string>
+ <string name="Pinker">
+ Mehr Pink
+ </string>
+ <string name="Platform Height">
+ Höhe
+ </string>
+ <string name="Platform Width">
+ Breite
+ </string>
+ <string name="Pointy">
+ Spitz
+ </string>
+ <string name="Pointy Heels">
+ Pfennigabsätze
+ </string>
+ <string name="Ponytail">
+ Pferdeschwanz
+ </string>
+ <string name="Poofy Skirt">
+ Weit ausgestellt
+ </string>
+ <string name="Pop Left Eye">
+ Linkes Auge größer
+ </string>
+ <string name="Pop Right Eye">
+ Rechtes Auge größer
+ </string>
+ <string name="Puffy">
+ Geschwollen
+ </string>
+ <string name="Puffy Eyelids">
+ Geschwollene Lider
+ </string>
+ <string name="Rainbow Color">
+ Regenbogenfarben
+ </string>
+ <string name="Red Hair">
+ Rote Haare
+ </string>
+ <string name="Regular">
+ Normal
+ </string>
+ <string name="Right Part">
+ Scheitel rechts
+ </string>
+ <string name="Rosy Complexion">
+ Rosiger Teint
+ </string>
+ <string name="Round">
+ Rund
+ </string>
+ <string name="Ruddiness">
+ Röte
+ </string>
+ <string name="Ruddy">
+ Rötlich
+ </string>
+ <string name="Rumpled Hair">
+ Zerzauste Haare
+ </string>
+ <string name="Saddle Bags">
+ Hüftspeck
+ </string>
+ <string name="Scrawny Leg">
+ Dürres Bein
+ </string>
+ <string name="Separate">
+ Auseinander
+ </string>
+ <string name="Shallow">
+ Flach
+ </string>
+ <string name="Shear Back">
+ Hinterkopf rasiert
+ </string>
+ <string name="Shear Face">
+ Gesicht verzerren
+ </string>
+ <string name="Shear Front">
+ Vorne rasiert
+ </string>
+ <string name="Shear Left Up">
+ Links
+ </string>
+ <string name="Shear Right Up">
+ Rechts
+ </string>
+ <string name="Sheared Back">
+ Hinterkopf rasiert
+ </string>
+ <string name="Sheared Front">
+ Vorne rasiert
+ </string>
+ <string name="Shift Left">
+ Nach links
+ </string>
+ <string name="Shift Mouth">
+ Mund verschieben
+ </string>
+ <string name="Shift Right">
+ Nach rechts
+ </string>
+ <string name="Shirt Bottom">
+ Hemdlänge
+ </string>
+ <string name="Shirt Fit">
+ Passform
+ </string>
+ <string name="Shirt Wrinkles">
+ Falten
+ </string>
+ <string name="Shoe Height">
+ Schuhart
+ </string>
+ <string name="Short">
+ Klein
+ </string>
+ <string name="Short Arms">
+ Kurze Arme
+ </string>
+ <string name="Short Legs">
+ Kurze Beine
+ </string>
+ <string name="Short Neck">
+ Kurzer Hals
+ </string>
+ <string name="Short Pigtails">
+ Kurze Zöpfe
+ </string>
+ <string name="Short Ponytail">
+ Kurzer Pferdeschwanz
+ </string>
+ <string name="Short Sideburns">
+ Kurze Koteletten
+ </string>
+ <string name="Short Torso">
+ Kurzer Oberkörper
+ </string>
+ <string name="Short hips">
+ Kurze Hüften
+ </string>
+ <string name="Shoulders">
+ Schultern
+ </string>
+ <string name="Side Fringe">
+ Seitliche Fransen
+ </string>
+ <string name="Sideburns">
+ Koteletten
+ </string>
+ <string name="Sides Hair">
+ Seitliches Haar
+ </string>
+ <string name="Sides Hair Down">
+ Lang
+ </string>
+ <string name="Sides Hair Up">
+ Kurz
+ </string>
+ <string name="Skinny Neck">
+ Dünner Hals
+ </string>
+ <string name="Skirt Fit">
+ Passform
+ </string>
+ <string name="Skirt Length">
+ Rocklänge
+ </string>
+ <string name="Slanted Forehead">
+ Fliehende Stirn
+ </string>
+ <string name="Sleeve Length">
+ Ärmellänge
+ </string>
+ <string name="Sleeve Looseness">
+ Passform Ärmel
+ </string>
+ <string name="Slit Back">
+ Schlitz: Hinten
+ </string>
+ <string name="Slit Front">
+ Schlitz: Vorne
+ </string>
+ <string name="Slit Left">
+ Schlitz: Links
+ </string>
+ <string name="Slit Right">
+ Schlitz: Rechts
+ </string>
+ <string name="Small">
+ Klein
+ </string>
+ <string name="Small Hands">
+ Kleine Hände
+ </string>
+ <string name="Small Head">
+ Klein
+ </string>
+ <string name="Smooth">
+ Glätten
+ </string>
+ <string name="Smooth Hair">
+ Glattes Haar
+ </string>
+ <string name="Socks Length">
+ Strumpflänge
+ </string>
+ <string name="Soulpatch">
+ Unterlippenbart
+ </string>
+ <string name="Sparse">
+ Wenig
+ </string>
+ <string name="Spiked Hair">
+ Stachelhaare
+ </string>
+ <string name="Square">
+ Rechteck
+ </string>
+ <string name="Square Toe">
+ Eckig
+ </string>
+ <string name="Squash Head">
+ Gestaucht
+ </string>
+ <string name="Stretch Head">
+ Gestreckt
+ </string>
+ <string name="Sunken">
+ Eingefallen
+ </string>
+ <string name="Sunken Chest">
+ Trichterbrust
+ </string>
+ <string name="Sunken Eyes">
+ Eingesunkene Augen
+ </string>
+ <string name="Sweep Back">
+ Nach hinten
+ </string>
+ <string name="Sweep Forward">
+ Nach vorne
+ </string>
+ <string name="Tall">
+ Groß
+ </string>
+ <string name="Taper Back">
+ Ansatzbreite hinten
+ </string>
+ <string name="Taper Front">
+ Ansatzbreite vorne
+ </string>
+ <string name="Thick Heels">
+ Dicke Absätze
+ </string>
+ <string name="Thick Neck">
+ Dicker Hals
+ </string>
+ <string name="Thick Toe">
+ Dick
+ </string>
+ <string name="Thin">
+ Dünn
+ </string>
+ <string name="Thin Eyebrows">
+ Dünne Augenbrauen
+ </string>
+ <string name="Thin Lips">
+ Dünne Lippen
+ </string>
+ <string name="Thin Nose">
+ Dünne Nase
+ </string>
+ <string name="Tight Chin">
+ Straffes Kinn
+ </string>
+ <string name="Tight Cuffs">
+ Eng
+ </string>
+ <string name="Tight Pants">
+ Enge Hosen
+ </string>
+ <string name="Tight Shirt">
+ Enges Hemd
+ </string>
+ <string name="Tight Skirt">
+ Enger Rock
+ </string>
+ <string name="Tight Sleeves">
+ Enge Ärmel
+ </string>
+ <string name="Toe Shape">
+ Spitze
+ </string>
+ <string name="Toe Thickness">
+ Dicke
+ </string>
+ <string name="Torso Length">
+ Länge des Oberkörpers
+ </string>
+ <string name="Torso Muscles">
+ Muskeln
+ </string>
+ <string name="Torso Scrawny">
+ Dürr
+ </string>
+ <string name="Unattached">
+ Frei
+ </string>
+ <string name="Uncreased">
+ Straffes Lid
+ </string>
+ <string name="Underbite">
+ Unterbiss
+ </string>
+ <string name="Unnatural">
+ Unnatürlich
+ </string>
+ <string name="Upper Bridge">
+ Brücke, oberer Teil
+ </string>
+ <string name="Upper Cheeks">
+ Obere Wangen
+ </string>
+ <string name="Upper Chin Cleft">
+ Obere Kinnspalte
+ </string>
+ <string name="Upper Eyelid Fold">
+ Obere Lidfalte
+ </string>
+ <string name="Upturned">
+ Stupsnase
+ </string>
+ <string name="Very Red">
+ Sehr rot
+ </string>
+ <string name="Waist Height">
+ Bund
+ </string>
+ <string name="Well-Fed">
+ Gut genährt
+ </string>
+ <string name="White Hair">
+ Weiße Haare
+ </string>
+ <string name="Wide">
+ Breit
+ </string>
+ <string name="Wide Back">
+ Breit
+ </string>
+ <string name="Wide Front">
+ Breit
+ </string>
+ <string name="Wide Lips">
+ Breit
+ </string>
+ <string name="Wild">
+ Wild
+ </string>
+ <string name="Wrinkles">
+ Falten
+ </string>
+ <string name="LocationCtrlAddLandmarkTooltip">
+ Zu meinen Landmarken hinzufügen
+ </string>
+ <string name="LocationCtrlEditLandmarkTooltip">
+ Meine Landmarken bearbeiten
+ </string>
+ <string name="LocationCtrlInfoBtnTooltip">
+ Weitere Informationen über die aktuelle Position
+ </string>
+ <string name="LocationCtrlComboBtnTooltip">
+ Mein Reiseverlauf
+ </string>
+ <string name="LocationCtrlForSaleTooltip">
+ Dieses Land kaufen
+ </string>
+ <string name="LocationCtrlVoiceTooltip">
+ Voice hier nicht möglich
+ </string>
+ <string name="LocationCtrlFlyTooltip">
+ Fliegen ist unzulässig
+ </string>
+ <string name="LocationCtrlPushTooltip">
+ Kein Stoßen
+ </string>
+ <string name="LocationCtrlBuildTooltip">
+ Bauen/Fallen lassen von Objekten ist verboten
+ </string>
+ <string name="LocationCtrlScriptsTooltip">
+ Skripte sind unzulässig
+ </string>
+ <string name="LocationCtrlDamageTooltip">
+ Gesundheit
+ </string>
+ <string name="LocationCtrlAdultIconTooltip">
+ Adult-Region
+ </string>
+ <string name="LocationCtrlModerateIconTooltip">
+ Moderate Region
+ </string>
+ <string name="LocationCtrlGeneralIconTooltip">
+ Generelle Region
+ </string>
+ <string name="LocationCtrlSeeAVsTooltip">
+ Avatare in dieser Parzelle können von Avataren außerhalb dieser Parzelle weder gesehen noch gehört werden
+ </string>
+ <string name="LocationCtrlPathfindingDirtyTooltip">
+ Bewegliche Objekte verhalten sich in dieser Region u. U. erst dann korrekt, wenn die Region neu geformt wird.
+ </string>
+ <string name="LocationCtrlPathfindingDisabledTooltip">
+ Dynamisches Pathfinding ist in dieser Region nicht aktiviert.
+ </string>
+ <string name="UpdaterWindowTitle">
+ [APP_NAME] Aktualisierung
+ </string>
+ <string name="UpdaterNowUpdating">
+ [APP_NAME] wird aktualisiert...
+ </string>
+ <string name="UpdaterNowInstalling">
+ [APP_NAME] wird installiert...
+ </string>
+ <string name="UpdaterUpdatingDescriptive">
+ Ihr [APP_NAME]-Viewer wird aktualisiert. Dies kann einen Moment dauern. Wir bitten um Ihr Verständnis.
+ </string>
+ <string name="UpdaterProgressBarTextWithEllipses">
+ Aktualisierung wird heruntergeladen...
+ </string>
+ <string name="UpdaterProgressBarText">
+ Aktualisierung wird heruntergeladen
+ </string>
+ <string name="UpdaterFailDownloadTitle">
+ Herunterladen ist fehlgeschlagen
+ </string>
+ <string name="UpdaterFailUpdateDescriptive">
+ Beim Aktualisieren von [APP_NAME] ist ein Fehler aufgetreten. Bitte laden Sie die aktuellste Version von www.secondlife.com herunter.
+ </string>
+ <string name="UpdaterFailInstallTitle">
+ Aktualisierung konnte nicht installiert werden
+ </string>
+ <string name="UpdaterFailStartTitle">
+ Viewer konnte nicht gestartet werden
+ </string>
+ <string name="ItemsComingInTooFastFrom">
+ [APP_NAME]: Zuviele Objekte auf einmal von [FROM_NAME]. Automaitsche Vorschau ist für [TIME] Sekunden nicht verfügbar.
+ </string>
+ <string name="ItemsComingInTooFast">
+ [APP_NAME]: Zuviele Objekte auf einmal. Automaitsche Vorschau ist für [TIME] Sekunden nicht verfügbar.
+ </string>
+ <string name="IM_logging_string">
+ -- Instant-Message-Protokoll aktiviert --
+ </string>
+ <string name="IM_typing_start_string">
+ [NAME] tippt...
+ </string>
+ <string name="Unnamed">
+ (Nicht benannt)
+ </string>
+ <string name="IM_moderated_chat_label">
+ (Moderiert: Stimmen in der Standardeinstellung stummgeschaltet)
+ </string>
+ <string name="IM_unavailable_text_label">
+ Für diese Verbindung ist kein Text-Chat verfügbar.
+ </string>
+ <string name="IM_muted_text_label">
+ Ihr Text-Chat wurde von einem Gruppenmoderator deaktiviert.
+ </string>
+ <string name="IM_default_text_label">
+ Für Instant Message hier klicken.
+ </string>
+ <string name="IM_to_label">
+ An
+ </string>
+ <string name="IM_moderator_label">
+ (Moderator)
+ </string>
+ <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“ &gt; „Privatsphäre“ die Option „Nur IMs und Anrufe von Freunden oder Gruppen durchstellen“ deaktivieren.
+ </string>
+ <string name="OnlineStatus">
+ Online
+ </string>
+ <string name="OfflineStatus">
+ Offline
+ </string>
+ <string name="not_online_msg">
+ Benutzer nicht online – Nachricht wird gespeichert und später zugestellt.
+ </string>
+ <string name="not_online_inventory">
+ Benutzer nicht online – Inventar gespeichert.
+ </string>
+ <string name="answered_call">
+ Ihr Anruf wurde entgegengenommen
+ </string>
+ <string name="you_started_call">
+ Sie haben einen Voice-Anruf begonnen
+ </string>
+ <string name="you_joined_call">
+ Sie sind dem Gespräch beigetreten
+ </string>
+ <string name="you_auto_rejected_call-im">
+ Sie haben den Voice-Anruf automatisch abgelehnt, während der Nicht-stören-Modus aktiviert war.
+ </string>
+ <string name="name_started_call">
+ [NAME] hat einen Voice-Anruf begonnen
+ </string>
+ <string name="ringing-im">
+ Verbindung wird hergestellt...
+ </string>
+ <string name="connected-im">
+ Verbunden. Klicken Sie auf Anruf beenden, um die Verbindung zu trennen
+ </string>
+ <string name="hang_up-im">
+ Anruf wurde beendet
+ </string>
+ <string name="answering-im">
+ Wird verbunden...
+ </string>
+ <string name="conference-title">
+ Chat mit mehreren Personen
+ </string>
+ <string name="conference-title-incoming">
+ Konferenz mit [AGENT_NAME]
+ </string>
+ <string name="inventory_item_offered-im">
+ Inventarobjekt „[ITEM_NAME]“ angeboten
+ </string>
+ <string name="inventory_folder_offered-im">
+ Inventarordner „[ITEM_NAME]“ angeboten
+ </string>
<string name="bot_warning">
- Sie chatten mit einem Bot, [NAME]. Geben Sie keine persönlichen Informationen weiter.
+ Sie chatten mit einem Bot, [NAME]. Geben Sie keine persönlichen Informationen weiter.
Erfahren Sie mehr unter https://second.life/scripted-agents.
</string>
- <string name="share_alert">Objekte aus dem Inventar hier her ziehen</string>
- <string name="facebook_post_success">Sie haben auf Facebook gepostet.</string>
- <string name="flickr_post_success">Sie haben auf Flickr gepostet.</string>
- <string name="twitter_post_success">Sie haben auf Twitter gepostet.</string>
- <string name="no_session_message">(IM-Session nicht vorhanden)</string>
- <string name="only_user_message">Sie sind der einzige Benutzer in dieser Sitzung.</string>
- <string name="offline_message">[NAME] ist offline.</string>
- <string name="invite_message">Klicken Sie auf [BUTTON NAME], um eine Verbindung zu diesem Voice-Chat herzustellen.</string>
- <string name="muted_message">Sie haben diesen Einwohner ignoriert. Wenn Sie eine Nachricht senden, wird dieser freigeschaltet.</string>
- <string name="generic">Fehler bei Anfrage, bitte versuchen Sie es später.</string>
- <string name="generic_request_error">Fehler bei Anfrage, bitte versuchen Sie es später.</string>
- <string name="insufficient_perms_error">Sie sind dazu nicht berechtigt.</string>
- <string name="session_does_not_exist_error">Die Sitzung ist abgelaufen</string>
- <string name="no_ability_error">Sie besitzen diese Fähigkeit nicht.</string>
- <string name="no_ability">Sie besitzen diese Fähigkeit nicht.</string>
- <string name="not_a_mod_error">Sie sind kein Sitzungsmoderator.</string>
- <string name="muted">Ein Gruppenmoderator hat Ihren Text-Chat deaktiviert.</string>
- <string name="muted_error">Ein Gruppenmoderator hat Ihren Text-Chat deaktiviert.</string>
- <string name="add_session_event">Es konnten keine Benutzer zur Chat-Sitzung mit [RECIPIENT] hinzugefügt werden.</string>
- <string name="message">Ihre Nachricht konnte nicht an die Chat-Sitzung mit [RECIPIENT] gesendet werden.</string>
- <string name="message_session_event">Ihre Nachricht konnte nicht an die Chat-Sitzung mit [RECIPIENT] gesendet werden.</string>
- <string name="mute">Fehler während Moderation.</string>
- <string name="removed">Sie wurden von der Gruppe ausgeschlossen.</string>
- <string name="removed_from_group">Sie wurden von der Gruppe ausgeschlossen.</string>
- <string name="close_on_no_ability">Sie haben nicht mehr die Berechtigung an der Chat-Sitzung teilzunehmen.</string>
- <string name="unread_chat_single">[SOURCES] hat etwas Neues gesagt</string>
- <string name="unread_chat_multiple">[SOURCES] haben etwas Neues gesagt</string>
- <string name="session_initialization_timed_out_error">Die Initialisierung der Sitzung ist fehlgeschlagen</string>
- <string name="Home position set.">Position für Zuhause festgelegt.</string>
- <string name="voice_morphing_url">https://secondlife.com/destination/voice-island</string>
- <string name="premium_voice_morphing_url">https://secondlife.com/destination/voice-morphing-premium</string>
- <string name="paid_you_ldollars">[NAME] hat Ihnen [REASON] [AMOUNT] L$ bezahlt.</string>
- <string name="paid_you_ldollars_gift">[NAME] hat Ihnen [AMOUNT] L$ bezahlt: [REASON]</string>
- <string name="paid_you_ldollars_no_reason">[NAME] hat Ihnen [AMOUNT] L$ bezahlt.</string>
- <string name="you_paid_ldollars">Sie haben [REASON] [AMOUNT] L$ an [NAME] bezahlt.</string>
- <string name="you_paid_ldollars_gift">Sie haben [NAME] [AMOUNT] L$ bezahlt: [REASON]</string>
- <string name="you_paid_ldollars_no_info">Sie haben [AMOUNT] L$ bezahlt.</string>
- <string name="you_paid_ldollars_no_reason">Sie haben [AMOUNT] L$ an [NAME] bezahlt.</string>
- <string name="you_paid_ldollars_no_name">Sie haben [REASON] [AMOUNT] L$ bezahlt.</string>
- <string name="you_paid_failure_ldollars">Sie haben [NAME] [AMOUNT] L$ [REASON] nicht bezahlt.</string>
- <string name="you_paid_failure_ldollars_gift">Sie haben [NAME] [AMOUNT] L$ nicht bezahlt: [REASON]</string>
- <string name="you_paid_failure_ldollars_no_info">Sie haben [AMOUNT] L$ nicht bezahlt.</string>
- <string name="you_paid_failure_ldollars_no_reason">Sie haben [NAME] [AMOUNT] L$ nicht bezahlt.</string>
- <string name="you_paid_failure_ldollars_no_name">Sie haben [AMOUNT] L$ [REASON] nicht bezahlt.</string>
- <string name="for item">für [ITEM]</string>
- <string name="for a parcel of land">für eine Landparzelle</string>
- <string name="for a land access pass">für einen Pass</string>
- <string name="for deeding land">für die Landübertragung</string>
- <string name="to create a group">für die Gründung einer Gruppe</string>
- <string name="to join a group">für den Beitritt zur Gruppe</string>
- <string name="to upload">fürs Hochladen</string>
- <string name="to publish a classified ad">um eine Anzeige aufzugeben</string>
- <string name="giving">[AMOUNT] L$ werden bezahlt</string>
- <string name="uploading_costs">Kosten für Hochladen [AMOUNT] L$</string>
- <string name="this_costs">Kosten: [AMOUNT] L$</string>
- <string name="buying_selected_land">Ausgewähltes Land wird für [AMOUNT] L$ gekauft.</string>
- <string name="this_object_costs">Dieses Objekt kostet [AMOUNT] L$</string>
- <string name="group_role_everyone">Jeder</string>
- <string name="group_role_officers">Offiziere</string>
- <string name="group_role_owners">Eigentümer</string>
- <string name="group_member_status_online">Online</string>
- <string name="uploading_abuse_report">Hochladen...
+ <string name="share_alert">
+ Objekte aus dem Inventar hier her ziehen
+ </string>
+ <string name="facebook_post_success">
+ Sie haben auf Facebook gepostet.
+ </string>
+ <string name="flickr_post_success">
+ Sie haben auf Flickr gepostet.
+ </string>
+ <string name="twitter_post_success">
+ Sie haben auf Twitter gepostet.
+ </string>
+ <string name="no_session_message">
+ (IM-Session nicht vorhanden)
+ </string>
+ <string name="only_user_message">
+ Sie sind der einzige Benutzer in dieser Sitzung.
+ </string>
+ <string name="offline_message">
+ [NAME] ist offline.
+ </string>
+ <string name="invite_message">
+ Klicken Sie auf [BUTTON NAME], um eine Verbindung zu diesem Voice-Chat herzustellen.
+ </string>
+ <string name="muted_message">
+ Sie haben diesen Einwohner ignoriert. Wenn Sie eine Nachricht senden, wird dieser freigeschaltet.
+ </string>
+ <string name="generic">
+ Fehler bei Anfrage, bitte versuchen Sie es später.
+ </string>
+ <string name="generic_request_error">
+ Fehler bei Anfrage, bitte versuchen Sie es später.
+ </string>
+ <string name="insufficient_perms_error">
+ Sie sind dazu nicht berechtigt.
+ </string>
+ <string name="session_does_not_exist_error">
+ Die Sitzung ist abgelaufen
+ </string>
+ <string name="no_ability_error">
+ Sie besitzen diese Fähigkeit nicht.
+ </string>
+ <string name="no_ability">
+ Sie besitzen diese Fähigkeit nicht.
+ </string>
+ <string name="not_a_mod_error">
+ Sie sind kein Sitzungsmoderator.
+ </string>
+ <string name="muted">
+ Ein Gruppenmoderator hat Ihren Text-Chat deaktiviert.
+ </string>
+ <string name="muted_error">
+ Ein Gruppenmoderator hat Ihren Text-Chat deaktiviert.
+ </string>
+ <string name="add_session_event">
+ Es konnten keine Benutzer zur Chat-Sitzung mit [RECIPIENT] hinzugefügt werden.
+ </string>
+ <string name="message">
+ Ihre Nachricht konnte nicht an die Chat-Sitzung mit [RECIPIENT] gesendet werden.
+ </string>
+ <string name="message_session_event">
+ Ihre Nachricht konnte nicht an die Chat-Sitzung mit [RECIPIENT] gesendet werden.
+ </string>
+ <string name="mute">
+ Fehler während Moderation.
+ </string>
+ <string name="removed">
+ Sie wurden von der Gruppe ausgeschlossen.
+ </string>
+ <string name="removed_from_group">
+ Sie wurden von der Gruppe ausgeschlossen.
+ </string>
+ <string name="close_on_no_ability">
+ Sie haben nicht mehr die Berechtigung an der Chat-Sitzung teilzunehmen.
+ </string>
+ <string name="unread_chat_single">
+ [SOURCES] hat etwas Neues gesagt
+ </string>
+ <string name="unread_chat_multiple">
+ [SOURCES] haben etwas Neues gesagt
+ </string>
+ <string name="session_initialization_timed_out_error">
+ Die Initialisierung der Sitzung ist fehlgeschlagen
+ </string>
+ <string name="Home position set.">
+ Position für Zuhause festgelegt.
+ </string>
+ <string name="voice_morphing_url">
+ https://secondlife.com/destination/voice-island
+ </string>
+ <string name="premium_voice_morphing_url">
+ https://secondlife.com/destination/voice-morphing-premium
+ </string>
+ <string name="paid_you_ldollars">
+ [NAME] hat Ihnen [REASON] [AMOUNT] L$ bezahlt.
+ </string>
+ <string name="paid_you_ldollars_gift">
+ [NAME] hat Ihnen [AMOUNT] L$ bezahlt: [REASON]
+ </string>
+ <string name="paid_you_ldollars_no_reason">
+ [NAME] hat Ihnen [AMOUNT] L$ bezahlt.
+ </string>
+ <string name="you_paid_ldollars">
+ Sie haben [REASON] [AMOUNT] L$ an [NAME] bezahlt.
+ </string>
+ <string name="you_paid_ldollars_gift">
+ Sie haben [NAME] [AMOUNT] L$ bezahlt: [REASON]
+ </string>
+ <string name="you_paid_ldollars_no_info">
+ Sie haben [AMOUNT] L$ bezahlt.
+ </string>
+ <string name="you_paid_ldollars_no_reason">
+ Sie haben [AMOUNT] L$ an [NAME] bezahlt.
+ </string>
+ <string name="you_paid_ldollars_no_name">
+ Sie haben [REASON] [AMOUNT] L$ bezahlt.
+ </string>
+ <string name="you_paid_failure_ldollars">
+ Sie haben [NAME] [AMOUNT] L$ [REASON] nicht bezahlt.
+ </string>
+ <string name="you_paid_failure_ldollars_gift">
+ Sie haben [NAME] [AMOUNT] L$ nicht bezahlt: [REASON]
+ </string>
+ <string name="you_paid_failure_ldollars_no_info">
+ Sie haben [AMOUNT] L$ nicht bezahlt.
+ </string>
+ <string name="you_paid_failure_ldollars_no_reason">
+ Sie haben [NAME] [AMOUNT] L$ nicht bezahlt.
+ </string>
+ <string name="you_paid_failure_ldollars_no_name">
+ Sie haben [AMOUNT] L$ [REASON] nicht bezahlt.
+ </string>
+ <string name="for item">
+ für [ITEM]
+ </string>
+ <string name="for a parcel of land">
+ für eine Landparzelle
+ </string>
+ <string name="for a land access pass">
+ für einen Pass
+ </string>
+ <string name="for deeding land">
+ für die Landübertragung
+ </string>
+ <string name="to create a group">
+ für die Gründung einer Gruppe
+ </string>
+ <string name="to join a group">
+ für den Beitritt zur Gruppe
+ </string>
+ <string name="to upload">
+ fürs Hochladen
+ </string>
+ <string name="to publish a classified ad">
+ um eine Anzeige aufzugeben
+ </string>
+ <string name="giving">
+ [AMOUNT] L$ werden bezahlt
+ </string>
+ <string name="uploading_costs">
+ Kosten für Hochladen [AMOUNT] L$
+ </string>
+ <string name="this_costs">
+ Kosten: [AMOUNT] L$
+ </string>
+ <string name="buying_selected_land">
+ Ausgewähltes Land wird für [AMOUNT] L$ gekauft.
+ </string>
+ <string name="this_object_costs">
+ Dieses Objekt kostet [AMOUNT] L$
+ </string>
+ <string name="group_role_everyone">
+ Jeder
+ </string>
+ <string name="group_role_officers">
+ Offiziere
+ </string>
+ <string name="group_role_owners">
+ Eigentümer
+ </string>
+ <string name="group_member_status_online">
+ Online
+ </string>
+ <string name="uploading_abuse_report">
+ Hochladen...
-Missbrauchsbericht</string>
- <string name="New Shape">Neue Form/Gestalt</string>
- <string name="New Skin">Neue Haut</string>
- <string name="New Hair">Neues Haar</string>
- <string name="New Eyes">Neue Augen</string>
- <string name="New Shirt">Neues Hemd</string>
- <string name="New Pants">Neue Hose</string>
- <string name="New Shoes">Neue Schuhe</string>
- <string name="New Socks">Neue Socken</string>
- <string name="New Jacket">Neue Jacke</string>
- <string name="New Gloves">Neue Handschuhe</string>
- <string name="New Undershirt">Neues Unterhemd</string>
- <string name="New Underpants">Neue Unterhose</string>
- <string name="New Skirt">Neuer Rock</string>
- <string name="New Alpha">Neues Alpha</string>
- <string name="New Tattoo">Neue Tätowierung</string>
- <string name="New Universal">Neues Universal</string>
- <string name="New Physics">Neue Physik</string>
- <string name="Invalid Wearable">Ungültiges Objekt</string>
- <string name="New Gesture">Neue Geste</string>
- <string name="New Script">Neues Skript</string>
- <string name="New Note">Neue Notiz</string>
- <string name="New Folder">Neuer Ordner</string>
- <string name="Contents">Inhalt</string>
- <string name="Gesture">Gesten</string>
- <string name="Male Gestures">Männliche Gesten</string>
- <string name="Female Gestures">Weibliche Gesten</string>
- <string name="Other Gestures">Andere Gesten</string>
- <string name="Speech Gestures">Sprachgesten</string>
- <string name="Common Gestures">Häufig verwendete Gesten</string>
- <string name="Male - Excuse me">Männlich - Excuse me</string>
- <string name="Male - Get lost">Männlich - Get lost</string>
- <string name="Male - Blow kiss">Männlich - Kusshand</string>
- <string name="Male - Boo">Männlich - Buh</string>
- <string name="Male - Bored">Männlich - Gelangweilt</string>
- <string name="Male - Hey">Männlich - Hey</string>
- <string name="Male - Laugh">Männlich - Lachen</string>
- <string name="Male - Repulsed">Männlich - Angewidert</string>
- <string name="Male - Shrug">Männlich - Achselzucken</string>
- <string name="Male - Stick tougue out">Männlich - Zunge herausstrecken</string>
- <string name="Male - Wow">Männlich - Wow</string>
- <string name="Female - Chuckle">Weiblich - Kichern</string>
- <string name="Female - Cry">Weiblich - Weinen</string>
- <string name="Female - Embarrassed">Weiblich - Verlegen</string>
- <string name="Female - Excuse me">Weiblich - Räuspern</string>
- <string name="Female - Get lost">Weiblich - Get lost</string>
- <string name="Female - Blow kiss">Weiblich - Kusshand</string>
- <string name="Female - Boo">Weiblich - Buh</string>
- <string name="Female - Bored">Weiblich - Gelangweilt</string>
- <string name="Female - Hey">Weiblich - Hey</string>
- <string name="Female - Hey baby">Weiblich - Hey Süße(r)</string>
- <string name="Female - Laugh">Weiblich - Lachen</string>
- <string name="Female - Looking good">Weiblich - Looking good</string>
- <string name="Female - Over here">Weiblich - Over here</string>
- <string name="Female - Please">Weiblich - Please</string>
- <string name="Female - Repulsed">Weiblich - Angewidert</string>
- <string name="Female - Shrug">Weiblich - Achselzucken</string>
- <string name="Female - Stick tougue out">Weiblich - Zunge herausstrecken</string>
- <string name="Female - Wow">Weiblich - Wow</string>
- <string name="New Daycycle">Neuer Tageszyklus</string>
- <string name="New Water">Neues Wasser</string>
- <string name="New Sky">Neuer Himmel</string>
- <string name="/bow">/verbeugen</string>
- <string name="/clap">/klatschen</string>
- <string name="/count">/zählen</string>
- <string name="/extinguish">/löschen</string>
- <string name="/kmb">/lmaa</string>
- <string name="/muscle">/Muskel</string>
- <string name="/no">/nein</string>
- <string name="/no!">/nein!</string>
- <string name="/paper">/Papier</string>
- <string name="/pointme">/auf mich zeigen</string>
- <string name="/pointyou">/auf dich zeigen</string>
- <string name="/rock">/Stein</string>
- <string name="/scissor">/Schere</string>
- <string name="/smoke">/rauchen</string>
- <string name="/stretch">/dehnen</string>
- <string name="/whistle">/pfeifen</string>
- <string name="/yes">/ja</string>
- <string name="/yes!">/ja!</string>
- <string name="afk">afk</string>
- <string name="dance1">Tanzen1</string>
- <string name="dance2">Tanzen2</string>
- <string name="dance3">Tanzen3</string>
- <string name="dance4">Tanzen4</string>
- <string name="dance5">Tanzen5</string>
- <string name="dance6">Tanzen6</string>
- <string name="dance7">Tanzen7</string>
- <string name="dance8">Tanzen8</string>
- <string name="AvatarBirthDateFormat">[mthnum,datetime,slt]/[day,datetime,slt]/[year,datetime,slt]</string>
- <string name="DefaultMimeType">Keine/Keiner</string>
- <string name="texture_load_dimensions_error">Bilder, die größer sind als [WIDTH]*[HEIGHT] können nicht geladen werden</string>
- <string name="outfit_photo_load_dimensions_error">Max. Fotogröße für Outfit ist [WIDTH]*[HEIGHT]. Bitte verkleinern Sie das Bild oder verwenden Sie ein anderes.</string>
- <string name="outfit_photo_select_dimensions_error">Max. Fotogröße für Outfit ist [WIDTH]*[HEIGHT]. Bitte wählen Sie eine andere Textur aus.</string>
- <string name="outfit_photo_verify_dimensions_error">Fotoabmessungen können nicht bestätigt werden. Bitte warten Sie, bis die Fotogröße im Auswahlfenster angezeigt wird.</string>
+Missbrauchsbericht
+ </string>
+ <string name="New Shape">
+ Neue Form/Gestalt
+ </string>
+ <string name="New Skin">
+ Neue Haut
+ </string>
+ <string name="New Hair">
+ Neues Haar
+ </string>
+ <string name="New Eyes">
+ Neue Augen
+ </string>
+ <string name="New Shirt">
+ Neues Hemd
+ </string>
+ <string name="New Pants">
+ Neue Hose
+ </string>
+ <string name="New Shoes">
+ Neue Schuhe
+ </string>
+ <string name="New Socks">
+ Neue Socken
+ </string>
+ <string name="New Jacket">
+ Neue Jacke
+ </string>
+ <string name="New Gloves">
+ Neue Handschuhe
+ </string>
+ <string name="New Undershirt">
+ Neues Unterhemd
+ </string>
+ <string name="New Underpants">
+ Neue Unterhose
+ </string>
+ <string name="New Skirt">
+ Neuer Rock
+ </string>
+ <string name="New Alpha">
+ Neues Alpha
+ </string>
+ <string name="New Tattoo">
+ Neue Tätowierung
+ </string>
+ <string name="New Universal">
+ Neues Universal
+ </string>
+ <string name="New Physics">
+ Neue Physik
+ </string>
+ <string name="Invalid Wearable">
+ Ungültiges Objekt
+ </string>
+ <string name="New Gesture">
+ Neue Geste
+ </string>
+ <string name="New Script">
+ Neues Skript
+ </string>
+ <string name="New Note">
+ Neue Notiz
+ </string>
+ <string name="New Folder">
+ Neuer Ordner
+ </string>
+ <string name="Contents">
+ Inhalt
+ </string>
+ <string name="Gesture">
+ Gesten
+ </string>
+ <string name="Male Gestures">
+ Männliche Gesten
+ </string>
+ <string name="Female Gestures">
+ Weibliche Gesten
+ </string>
+ <string name="Other Gestures">
+ Andere Gesten
+ </string>
+ <string name="Speech Gestures">
+ Sprachgesten
+ </string>
+ <string name="Common Gestures">
+ Häufig verwendete Gesten
+ </string>
+ <string name="Male - Excuse me">
+ Männlich - Excuse me
+ </string>
+ <string name="Male - Get lost">
+ Männlich - Get lost
+ </string>
+ <string name="Male - Blow kiss">
+ Männlich - Kusshand
+ </string>
+ <string name="Male - Boo">
+ Männlich - Buh
+ </string>
+ <string name="Male - Bored">
+ Männlich - Gelangweilt
+ </string>
+ <string name="Male - Hey">
+ Männlich - Hey
+ </string>
+ <string name="Male - Laugh">
+ Männlich - Lachen
+ </string>
+ <string name="Male - Repulsed">
+ Männlich - Angewidert
+ </string>
+ <string name="Male - Shrug">
+ Männlich - Achselzucken
+ </string>
+ <string name="Male - Stick tougue out">
+ Männlich - Zunge herausstrecken
+ </string>
+ <string name="Male - Wow">
+ Männlich - Wow
+ </string>
+ <string name="Female - Chuckle">
+ Weiblich - Kichern
+ </string>
+ <string name="Female - Cry">
+ Weiblich - Weinen
+ </string>
+ <string name="Female - Embarrassed">
+ Weiblich - Verlegen
+ </string>
+ <string name="Female - Excuse me">
+ Weiblich - Räuspern
+ </string>
+ <string name="Female - Get lost">
+ Weiblich - Get lost
+ </string>
+ <string name="Female - Blow kiss">
+ Weiblich - Kusshand
+ </string>
+ <string name="Female - Boo">
+ Weiblich - Buh
+ </string>
+ <string name="Female - Bored">
+ Weiblich - Gelangweilt
+ </string>
+ <string name="Female - Hey">
+ Weiblich - Hey
+ </string>
+ <string name="Female - Hey baby">
+ Weiblich - Hey Süße(r)
+ </string>
+ <string name="Female - Laugh">
+ Weiblich - Lachen
+ </string>
+ <string name="Female - Looking good">
+ Weiblich - Looking good
+ </string>
+ <string name="Female - Over here">
+ Weiblich - Over here
+ </string>
+ <string name="Female - Please">
+ Weiblich - Please
+ </string>
+ <string name="Female - Repulsed">
+ Weiblich - Angewidert
+ </string>
+ <string name="Female - Shrug">
+ Weiblich - Achselzucken
+ </string>
+ <string name="Female - Stick tougue out">
+ Weiblich - Zunge herausstrecken
+ </string>
+ <string name="Female - Wow">
+ Weiblich - Wow
+ </string>
+ <string name="New Daycycle">
+ Neuer Tageszyklus
+ </string>
+ <string name="New Water">
+ Neues Wasser
+ </string>
+ <string name="New Sky">
+ Neuer Himmel
+ </string>
+ <string name="/bow">
+ /verbeugen
+ </string>
+ <string name="/clap">
+ /klatschen
+ </string>
+ <string name="/count">
+ /zählen
+ </string>
+ <string name="/extinguish">
+ /löschen
+ </string>
+ <string name="/kmb">
+ /lmaa
+ </string>
+ <string name="/muscle">
+ /Muskel
+ </string>
+ <string name="/no">
+ /nein
+ </string>
+ <string name="/no!">
+ /nein!
+ </string>
+ <string name="/paper">
+ /Papier
+ </string>
+ <string name="/pointme">
+ /auf mich zeigen
+ </string>
+ <string name="/pointyou">
+ /auf dich zeigen
+ </string>
+ <string name="/rock">
+ /Stein
+ </string>
+ <string name="/scissor">
+ /Schere
+ </string>
+ <string name="/smoke">
+ /rauchen
+ </string>
+ <string name="/stretch">
+ /dehnen
+ </string>
+ <string name="/whistle">
+ /pfeifen
+ </string>
+ <string name="/yes">
+ /ja
+ </string>
+ <string name="/yes!">
+ /ja!
+ </string>
+ <string name="afk">
+ afk
+ </string>
+ <string name="dance1">
+ Tanzen1
+ </string>
+ <string name="dance2">
+ Tanzen2
+ </string>
+ <string name="dance3">
+ Tanzen3
+ </string>
+ <string name="dance4">
+ Tanzen4
+ </string>
+ <string name="dance5">
+ Tanzen5
+ </string>
+ <string name="dance6">
+ Tanzen6
+ </string>
+ <string name="dance7">
+ Tanzen7
+ </string>
+ <string name="dance8">
+ Tanzen8
+ </string>
+ <string name="AvatarBirthDateFormat">
+ [mthnum,datetime,slt]/[day,datetime,slt]/[year,datetime,slt]
+ </string>
+ <string name="DefaultMimeType">
+ Keine/Keiner
+ </string>
+ <string name="texture_load_dimensions_error">
+ Bilder, die größer sind als [WIDTH]*[HEIGHT] können nicht geladen werden
+ </string>
+ <string name="outfit_photo_load_dimensions_error">
+ Max. Fotogröße für Outfit ist [WIDTH]*[HEIGHT]. Bitte verkleinern Sie das Bild oder verwenden Sie ein anderes.
+ </string>
+ <string name="outfit_photo_select_dimensions_error">
+ Max. Fotogröße für Outfit ist [WIDTH]*[HEIGHT]. Bitte wählen Sie eine andere Textur aus.
+ </string>
+ <string name="outfit_photo_verify_dimensions_error">
+ Fotoabmessungen können nicht bestätigt werden. Bitte warten Sie, bis die Fotogröße im Auswahlfenster angezeigt wird.
+ </string>
<string name="words_separator" value=","/>
- <string name="server_is_down">Trotz all unserer Bemühungen ist ein unerwarteter Fehler aufgetreten.
+ <string name="server_is_down">
+ Trotz all unserer Bemühungen ist ein unerwarteter Fehler aufgetreten.
Bitte überprüfen Sie http://status.secondlifegrid.net, um herauszufinden, ob ein Problem mit dem Service vorliegt.
- Falls Sie weiterhin Problem haben, überprüfen Sie bitte Ihre Netzwerk- und Firewalleinstellungen.</string>
- <string name="dateTimeWeekdaysNames">Sonntag:Montag:Dienstag:Mittwoch:Donnerstag:Freitag:Samstag</string>
- <string name="dateTimeWeekdaysShortNames">So:Mo:Di:Mi:Do:Fr:Sa</string>
- <string name="dateTimeMonthNames">Januar:Februar:März:April:Mai:Juni:Juli:August:September:Oktober:November:Dezember</string>
- <string name="dateTimeMonthShortNames">Jan:Feb:Mär:Apr:Mai:Jun:Jul:Aug:Sep:Okt:Nov:Dez</string>
- <string name="dateTimeDayFormat">[MDAY]</string>
- <string name="dateTimeAM">Uhr</string>
- <string name="dateTimePM">Uhr</string>
- <string name="LocalEstimateUSD">[AMOUNT] US$</string>
- <string name="Group Ban">Gruppenverbannung</string>
- <string name="Membership">Mitgliedschaft</string>
- <string name="Roles">Rollen</string>
- <string name="Group Identity">Gruppenidentität</string>
- <string name="Parcel Management">Parzellenverwaltung</string>
- <string name="Parcel Identity">Parzellenidentität</string>
- <string name="Parcel Settings">Parzelleneinstellungen</string>
- <string name="Parcel Powers">Parzellenfähigkeiten</string>
- <string name="Parcel Access">Parzellenzugang</string>
- <string name="Parcel Content">Parzelleninhalt</string>
- <string name="Object Management">Objektmanagement</string>
- <string name="Accounting">Kontoführung</string>
- <string name="Notices">Mitteilungen</string>
- <string name="Chat" value=" Chat:">Chat</string>
- <string name="BaseMembership">Basis</string>
- <string name="PremiumMembership">Premium</string>
- <string name="Premium_PlusMembership">Premium Plus</string>
- <string name="DeleteItems">Ausgewählte Objekte löschen?</string>
- <string name="DeleteItem">Ausgewähltes Objekt löschen?</string>
- <string name="EmptyOutfitText">Keine Objekte in diesem Outfit</string>
- <string name="ExternalEditorNotSet">Wählen Sie über die Einstellung „ExternalEditor“ einen Editor aus</string>
- <string name="ExternalEditorNotFound">Angegebener externer Editor nicht gefunden.
+ Falls Sie weiterhin Problem haben, überprüfen Sie bitte Ihre Netzwerk- und Firewalleinstellungen.
+ </string>
+ <string name="dateTimeWeekdaysNames">
+ Sonntag:Montag:Dienstag:Mittwoch:Donnerstag:Freitag:Samstag
+ </string>
+ <string name="dateTimeWeekdaysShortNames">
+ So:Mo:Di:Mi:Do:Fr:Sa
+ </string>
+ <string name="dateTimeMonthNames">
+ Januar:Februar:März:April:Mai:Juni:Juli:August:September:Oktober:November:Dezember
+ </string>
+ <string name="dateTimeMonthShortNames">
+ Jan:Feb:Mär:Apr:Mai:Jun:Jul:Aug:Sep:Okt:Nov:Dez
+ </string>
+ <string name="dateTimeDayFormat">
+ [MDAY]
+ </string>
+ <string name="dateTimeAM">
+ Uhr
+ </string>
+ <string name="dateTimePM">
+ Uhr
+ </string>
+ <string name="LocalEstimateUSD">
+ [AMOUNT] US$
+ </string>
+ <string name="Group Ban">
+ Gruppenverbannung
+ </string>
+ <string name="Membership">
+ Mitgliedschaft
+ </string>
+ <string name="Roles">
+ Rollen
+ </string>
+ <string name="Group Identity">
+ Gruppenidentität
+ </string>
+ <string name="Parcel Management">
+ Parzellenverwaltung
+ </string>
+ <string name="Parcel Identity">
+ Parzellenidentität
+ </string>
+ <string name="Parcel Settings">
+ Parzelleneinstellungen
+ </string>
+ <string name="Parcel Powers">
+ Parzellenfähigkeiten
+ </string>
+ <string name="Parcel Access">
+ Parzellenzugang
+ </string>
+ <string name="Parcel Content">
+ Parzelleninhalt
+ </string>
+ <string name="Object Management">
+ Objektmanagement
+ </string>
+ <string name="Accounting">
+ Kontoführung
+ </string>
+ <string name="Notices">
+ Mitteilungen
+ </string>
+ <string name="Chat" value=" Chat:">
+ Chat
+ </string>
+ <string name="BaseMembership">
+ Basis
+ </string>
+ <string name="PremiumMembership">
+ Premium
+ </string>
+ <string name="Premium_PlusMembership">
+ Premium Plus
+ </string>
+ <string name="DeleteItems">
+ Ausgewählte Objekte löschen?
+ </string>
+ <string name="DeleteItem">
+ Ausgewähltes Objekt löschen?
+ </string>
+ <string name="EmptyOutfitText">
+ Keine Objekte in diesem Outfit
+ </string>
+ <string name="ExternalEditorNotSet">
+ Wählen Sie über die Einstellung „ExternalEditor“ einen Editor aus
+ </string>
+ <string name="ExternalEditorNotFound">
+ Angegebener externer Editor nicht gefunden.
Setzen Sie den Editorpfad in Anführungszeichen
-(z. B. &quot;/pfad/editor&quot; &quot;%s&quot;).</string>
- <string name="ExternalEditorCommandParseError">Fehler beim Parsen des externen Editorbefehls.</string>
- <string name="ExternalEditorFailedToRun">Externer Editor konnte nicht ausgeführt werden.</string>
- <string name="TranslationFailed">Übersetzung fehlgeschlagen: [REASON]</string>
- <string name="TranslationResponseParseError">Fehler beim Parsen der Übersetzungsantwort.</string>
- <string name="Esc">Esc</string>
- <string name="Space">Space</string>
- <string name="Enter">Enter</string>
- <string name="Tab">Tab</string>
- <string name="Ins">Ins</string>
- <string name="Del">Del</string>
- <string name="Backsp">Backsp</string>
- <string name="Shift">Shift</string>
- <string name="Ctrl">Ctrl</string>
- <string name="Alt">Alt</string>
- <string name="CapsLock">CapsLock</string>
- <string name="Home">Zuhause</string>
- <string name="End">End</string>
- <string name="PgUp">PgUp</string>
- <string name="PgDn">PgDn</string>
- <string name="F1">F1</string>
- <string name="F2">F2</string>
- <string name="F3">F3</string>
- <string name="F4">F4</string>
- <string name="F5">F5</string>
- <string name="F6">F6</string>
- <string name="F7">F7</string>
- <string name="F8">F8</string>
- <string name="F9">F9</string>
- <string name="F10">F10</string>
- <string name="F11">F11</string>
- <string name="F12">F12</string>
- <string name="Add">Addieren</string>
- <string name="Subtract">Subtrahieren</string>
- <string name="Multiply">Multiplizieren</string>
- <string name="Divide">Dividieren</string>
- <string name="PAD_DIVIDE">PAD_DIVIDE</string>
- <string name="PAD_LEFT">PAD_LEFT</string>
- <string name="PAD_RIGHT">PAD_RIGHT</string>
- <string name="PAD_DOWN">PAD_DOWN</string>
- <string name="PAD_UP">PAD_UP</string>
- <string name="PAD_HOME">PAD_HOME</string>
- <string name="PAD_END">PAD_END</string>
- <string name="PAD_PGUP">PAD_PGUP</string>
- <string name="PAD_PGDN">PAD_PGDN</string>
- <string name="PAD_CENTER">PAD_CENTER</string>
- <string name="PAD_INS">PAD_INS</string>
- <string name="PAD_DEL">PAD_DEL</string>
- <string name="PAD_Enter">PAD_Enter</string>
- <string name="PAD_BUTTON0">PAD_BUTTON0</string>
- <string name="PAD_BUTTON1">PAD_BUTTON1</string>
- <string name="PAD_BUTTON2">PAD_BUTTON2</string>
- <string name="PAD_BUTTON3">PAD_BUTTON3</string>
- <string name="PAD_BUTTON4">PAD_BUTTON4</string>
- <string name="PAD_BUTTON5">PAD_BUTTON5</string>
- <string name="PAD_BUTTON6">PAD_BUTTON6</string>
- <string name="PAD_BUTTON7">PAD_BUTTON7</string>
- <string name="PAD_BUTTON8">PAD_BUTTON8</string>
- <string name="PAD_BUTTON9">PAD_BUTTON9</string>
- <string name="PAD_BUTTON10">PAD_BUTTON10</string>
- <string name="PAD_BUTTON11">PAD_BUTTON11</string>
- <string name="PAD_BUTTON12">PAD_BUTTON12</string>
- <string name="PAD_BUTTON13">PAD_BUTTON13</string>
- <string name="PAD_BUTTON14">PAD_BUTTON14</string>
- <string name="PAD_BUTTON15">PAD_BUTTON15</string>
- <string name="-">-</string>
- <string name="=">=</string>
- <string name="`">`</string>
- <string name=";">;</string>
- <string name="[">[</string>
- <string name="]">]</string>
- <string name="\">\</string>
- <string name="0">0</string>
- <string name="1">1</string>
- <string name="2">2</string>
- <string name="3">3</string>
- <string name="4">4</string>
- <string name="5">5</string>
- <string name="6">6</string>
- <string name="7">7</string>
- <string name="8">8</string>
- <string name="9">9</string>
- <string name="A">A</string>
- <string name="B">B</string>
- <string name="C">C</string>
- <string name="D">D</string>
- <string name="E">E</string>
- <string name="F">F</string>
- <string name="G">G</string>
- <string name="H">H</string>
- <string name="I">I</string>
- <string name="J">J</string>
- <string name="K">K</string>
- <string name="L">L</string>
- <string name="M">M</string>
- <string name="N">N</string>
- <string name="O">O</string>
- <string name="P">P</string>
- <string name="Q">Q</string>
- <string name="R">R</string>
- <string name="S">S</string>
- <string name="T">T</string>
- <string name="U">U</string>
- <string name="V">V</string>
- <string name="W">W</string>
- <string name="X">X</string>
- <string name="Y">Y</string>
- <string name="Z">Z</string>
- <string name="BeaconParticle">Partikel-Beacons werden angezeigt (blau)</string>
- <string name="BeaconPhysical">Beacons für physische Objekte werden angezeigt (grün)</string>
- <string name="BeaconScripted">Beacons für Skriptobjekte werden angezeigt (rot)</string>
- <string name="BeaconScriptedTouch">Beacons für Skriptobjekte mit Berührungsfunktion werden angezeigt (rot)</string>
- <string name="BeaconSound">Sound-Beacons werden angezeigt (gelb)</string>
- <string name="BeaconMedia">Medien-Beacons werden angezeigt (weiß)</string>
- <string name="BeaconSun">Sonnenrichtungs-Beacon ansehen (orange)</string>
- <string name="BeaconMoon">Mondrichtungs-Beacon ansehen (lila)</string>
- <string name="ParticleHiding">Partikel werden ausgeblendet</string>
- <string name="Command_AboutLand_Label">Landinformationen</string>
- <string name="Command_Appearance_Label">Aussehen</string>
- <string name="Command_Avatar_Label">Avatar</string>
- <string name="Command_Build_Label">Bauen</string>
- <string name="Command_Chat_Label">Chat</string>
- <string name="Command_Conversations_Label">Unterhaltungen</string>
- <string name="Command_Compass_Label">Kompass</string>
- <string name="Command_Destinations_Label">Ziele</string>
- <string name="Command_Environments_Label">Meine Umgebungen</string>
- <string name="Command_Facebook_Label">Facebook</string>
- <string name="Command_Flickr_Label">Flickr</string>
- <string name="Command_Gestures_Label">Gesten</string>
- <string name="Command_Grid_Status_Label">Grid-Status</string>
- <string name="Command_HowTo_Label">Infos</string>
- <string name="Command_Inventory_Label">Inventar</string>
- <string name="Command_Map_Label">Karte</string>
- <string name="Command_Marketplace_Label">Marktplatz</string>
- <string name="Command_MarketplaceListings_Label">Marktplatz</string>
- <string name="Command_MiniMap_Label">Minikarte</string>
- <string name="Command_Move_Label">Gehen / Rennen / Fliegen</string>
- <string name="Command_Outbox_Label">Händler-Outbox</string>
- <string name="Command_People_Label">Leute</string>
- <string name="Command_Picks_Label">Auswahlen</string>
- <string name="Command_Places_Label">Orte</string>
- <string name="Command_Preferences_Label">Einstellungen</string>
- <string name="Command_Profile_Label">Profil</string>
- <string name="Command_Report_Abuse_Label">Missbrauch melden</string>
- <string name="Command_Search_Label">Suchen</string>
- <string name="Command_Snapshot_Label">Foto</string>
- <string name="Command_Speak_Label">Sprechen</string>
- <string name="Command_Twitter_Label">Twitter</string>
- <string name="Command_View_Label">Kamerasteuerungen</string>
- <string name="Command_Voice_Label">Voice-Einstellungen</string>
- <string name="Command_AboutLand_Tooltip">Informationen zu dem von Ihnen besuchten Land</string>
- <string name="Command_Appearance_Tooltip">Avatar ändern</string>
- <string name="Command_Avatar_Tooltip">Kompletten Avatar auswählen</string>
- <string name="Command_Build_Tooltip">Objekte bauen und Terrain umformen</string>
- <string name="Command_Chat_Tooltip">Mit Leuten in der Nähe chatten</string>
- <string name="Command_Conversations_Tooltip">Mit allen unterhalten</string>
- <string name="Command_Compass_Tooltip">Kompass</string>
- <string name="Command_Destinations_Tooltip">Ziele von Interesse</string>
- <string name="Command_Environments_Tooltip">Meine Umgebungen</string>
- <string name="Command_Facebook_Tooltip">Auf Facebook posten</string>
- <string name="Command_Flickr_Tooltip">Auf Flickr hochladen</string>
- <string name="Command_Gestures_Tooltip">Gesten für Ihren Avatar</string>
- <string name="Command_Grid_Status_Tooltip">Aktuellen Grid-Status anzeigen</string>
- <string name="Command_HowTo_Tooltip">Wie führe ich gängige Aufgaben aus?</string>
- <string name="Command_Inventory_Tooltip">Ihr Eigentum anzeigen und benutzen</string>
- <string name="Command_Map_Tooltip">Weltkarte</string>
- <string name="Command_Marketplace_Tooltip">Einkaufen gehen</string>
- <string name="Command_MarketplaceListings_Tooltip">Ihre Kreation verkaufen</string>
- <string name="Command_MiniMap_Tooltip">Leute in der Nähe anzeigen</string>
- <string name="Command_Move_Tooltip">Ihren Avatar bewegen</string>
- <string name="Command_Outbox_Tooltip">Artikel zum Verkauf in den Marktplatz übertragen</string>
- <string name="Command_People_Tooltip">Freunde, Gruppen und Leute in der Nähe</string>
- <string name="Command_Picks_Tooltip">Orte, die in Ihrem Profil als Favoriten angezeigt werden sollen</string>
- <string name="Command_Places_Tooltip">Von Ihnen gespeicherte Orte</string>
- <string name="Command_Preferences_Tooltip">Einstellungen</string>
- <string name="Command_Profile_Tooltip">Ihr Profil bearbeiten oder anzeigen</string>
- <string name="Command_Report_Abuse_Tooltip">Missbrauch melden</string>
- <string name="Command_Search_Tooltip">Orte, Veranstaltungen, Leute finden</string>
- <string name="Command_Snapshot_Tooltip">Foto aufnehmen</string>
- <string name="Command_Speak_Tooltip">Über Ihr Mikrofon mit Leuten in der Nähe sprechen</string>
- <string name="Command_Twitter_Tooltip">Twitter</string>
- <string name="Command_View_Tooltip">Kamerawinkel ändern</string>
- <string name="Command_Voice_Tooltip">Lautstärkeregler für Anrufe und Leute in Ihrer Nähe in SL</string>
- <string name="Toolbar_Bottom_Tooltip">gegenwärtig in der unteren Symbolleiste</string>
- <string name="Toolbar_Left_Tooltip">gegenwärtig in der linken Symbolleiste</string>
- <string name="Toolbar_Right_Tooltip">gegenwärtig in der rechten Symbolleiste</string>
- <string name="Retain%">% zurückbehalten</string>
- <string name="Detail">Details</string>
- <string name="Better Detail">Bessere Details</string>
- <string name="Surface">Oberfläche</string>
- <string name="Solid">Fest</string>
- <string name="Wrap">Wickeln</string>
- <string name="Preview">Vorschau</string>
- <string name="Normal">Normal</string>
- <string name="Pathfinding_Wiki_URL">http://wiki.secondlife.com/wiki/Pathfinding_Tools_in_the_Second_Life_Viewer</string>
- <string name="Pathfinding_Object_Attr_None">Keine</string>
- <string name="Pathfinding_Object_Attr_Permanent">Wirkt sich auf Navmesh aus</string>
- <string name="Pathfinding_Object_Attr_Character">Figur</string>
- <string name="Pathfinding_Object_Attr_MultiSelect">(mehrere)</string>
- <string name="snapshot_quality_very_low">Sehr niedrig</string>
- <string name="snapshot_quality_low">Niedrig</string>
- <string name="snapshot_quality_medium">Mittel</string>
- <string name="snapshot_quality_high">Hoch</string>
- <string name="snapshot_quality_very_high">Sehr hoch</string>
- <string name="TeleportMaturityExceeded">Der Einwohner kann diese Region nicht besuchen.</string>
- <string name="UserDictionary">[Benutzer]</string>
- <string name="experience_tools_experience">Erlebnis</string>
- <string name="ExperienceNameNull">(kein Erlebnis)</string>
- <string name="ExperienceNameUntitled">(unbenanntes Erlebnis)</string>
- <string name="Land-Scope">Landumfang</string>
- <string name="Grid-Scope">Gridumfang</string>
- <string name="Allowed_Experiences_Tab">ZULäSSIG</string>
- <string name="Blocked_Experiences_Tab">BLOCKIERT</string>
- <string name="Contrib_Experiences_Tab">CONTRIBUTOR</string>
- <string name="Admin_Experiences_Tab">ADMIN</string>
- <string name="Recent_Experiences_Tab">AKTUELL</string>
- <string name="Owned_Experiences_Tab">EIGENE</string>
- <string name="ExperiencesCounter">([EXPERIENCES], max. [MAXEXPERIENCES])</string>
- <string name="ExperiencePermission1">Ihre Steuerungen übernehmen</string>
- <string name="ExperiencePermission3">Animationen Ihres Avatars auslösen</string>
- <string name="ExperiencePermission4">an Ihren Avatar anhängen</string>
- <string name="ExperiencePermission9">Ihre Kamera vorfolgen</string>
- <string name="ExperiencePermission10">Ihre Kamera steuern</string>
- <string name="ExperiencePermission11">Sie teleportieren</string>
- <string name="ExperiencePermission12">automatisch Erlebnisberechtigungen akzeptieren</string>
- <string name="ExperiencePermission16">ihren Avatar zwingen, sich zu setzen</string>
- <string name="ExperiencePermission17">Ändern Ihrer Umgebungseinstellungen</string>
- <string name="ExperiencePermissionShortUnknown">unbekannten Vorgang durchführen: [Permission]</string>
- <string name="ExperiencePermissionShort1">Steuerungen übernehmen</string>
- <string name="ExperiencePermissionShort3">Animationen auslösen</string>
- <string name="ExperiencePermissionShort4">Anhängen</string>
- <string name="ExperiencePermissionShort9">Kamera verfolgen</string>
- <string name="ExperiencePermissionShort10">Kamera steuern</string>
- <string name="ExperiencePermissionShort11">Teleportieren</string>
- <string name="ExperiencePermissionShort12">Berechtigung</string>
- <string name="ExperiencePermissionShort16">Sitzen</string>
- <string name="ExperiencePermissionShort17">Umgebung</string>
- <string name="logging_calls_disabled_log_empty">Unterhaltungen werden nicht protokolliert. Um ein Protokoll zu starten, wählen Sie „Speichern: nur Protokoll“ oder „Speichern: Protokoll und Transkripte“ unter „Einstellungen“ &gt; „Chat“.</string>
- <string name="logging_calls_disabled_log_not_empty">Es werden keine Unterhaltungen mehr protokolliert. Um weiterhin ein Protokoll zu führen, wählen Sie „Speichern: nur Protokoll“ oder „Speichern: Protokoll und Transkripte“ unter „Einstellungen“ &gt; „Chat“.</string>
- <string name="logging_calls_enabled_log_empty">Keine protokollierten Unterhaltungen verfügbar. Hier erscheint ein Protokolleintrag, wenn Sie eine Person kontaktieren oder von einer Person kontaktiert werden.</string>
- <string name="loading_chat_logs">Laden...</string>
- <string name="na">Nicht zutreffend</string>
- <string name="preset_combo_label">-Leere Liste-</string>
- <string name="Default">Standard</string>
- <string name="none_paren_cap">(Keine)</string>
- <string name="no_limit">Keine Begrenzung</string>
- <string name="Mav_Details_MAV_FOUND_DEGENERATE_TRIANGLES">Die Physikform enthält Dreiecke, die zu klein sind. Versuchen Sie, das Physikmodell zu vereinfachen.</string>
- <string name="Mav_Details_MAV_CONFIRMATION_DATA_MISMATCH">Die Physikform enthält ungültige Bestätigungsdaten. Versuchen Sie, das Physikmodell zu korrigieren.</string>
- <string name="Mav_Details_MAV_UNKNOWN_VERSION">Die Physikform hat keine korrekte Version. Legen Sie die korrekte Version für das Physikmodell fest.</string>
- <string name="couldnt_resolve_host">Der DNS konnte den Hostnamen ([HOSTNAME]) nicht auflösen Prüfen
+(z. B. "/pfad/editor" "%s").
+ </string>
+ <string name="ExternalEditorCommandParseError">
+ Fehler beim Parsen des externen Editorbefehls.
+ </string>
+ <string name="ExternalEditorFailedToRun">
+ Externer Editor konnte nicht ausgeführt werden.
+ </string>
+ <string name="TranslationFailed">
+ Übersetzung fehlgeschlagen: [REASON]
+ </string>
+ <string name="TranslationResponseParseError">
+ Fehler beim Parsen der Übersetzungsantwort.
+ </string>
+ <string name="Esc">
+ Esc
+ </string>
+ <string name="Space">
+ Space
+ </string>
+ <string name="Enter">
+ Enter
+ </string>
+ <string name="Tab">
+ Tab
+ </string>
+ <string name="Ins">
+ Ins
+ </string>
+ <string name="Del">
+ Del
+ </string>
+ <string name="Backsp">
+ Backsp
+ </string>
+ <string name="Shift">
+ Shift
+ </string>
+ <string name="Ctrl">
+ Ctrl
+ </string>
+ <string name="Alt">
+ Alt
+ </string>
+ <string name="CapsLock">
+ CapsLock
+ </string>
+ <string name="Home">
+ Zuhause
+ </string>
+ <string name="End">
+ End
+ </string>
+ <string name="PgUp">
+ PgUp
+ </string>
+ <string name="PgDn">
+ PgDn
+ </string>
+ <string name="F1">
+ F1
+ </string>
+ <string name="F2">
+ F2
+ </string>
+ <string name="F3">
+ F3
+ </string>
+ <string name="F4">
+ F4
+ </string>
+ <string name="F5">
+ F5
+ </string>
+ <string name="F6">
+ F6
+ </string>
+ <string name="F7">
+ F7
+ </string>
+ <string name="F8">
+ F8
+ </string>
+ <string name="F9">
+ F9
+ </string>
+ <string name="F10">
+ F10
+ </string>
+ <string name="F11">
+ F11
+ </string>
+ <string name="F12">
+ F12
+ </string>
+ <string name="Add">
+ Addieren
+ </string>
+ <string name="Subtract">
+ Subtrahieren
+ </string>
+ <string name="Multiply">
+ Multiplizieren
+ </string>
+ <string name="Divide">
+ Dividieren
+ </string>
+ <string name="PAD_DIVIDE">
+ PAD_DIVIDE
+ </string>
+ <string name="PAD_LEFT">
+ PAD_LEFT
+ </string>
+ <string name="PAD_RIGHT">
+ PAD_RIGHT
+ </string>
+ <string name="PAD_DOWN">
+ PAD_DOWN
+ </string>
+ <string name="PAD_UP">
+ PAD_UP
+ </string>
+ <string name="PAD_HOME">
+ PAD_HOME
+ </string>
+ <string name="PAD_END">
+ PAD_END
+ </string>
+ <string name="PAD_PGUP">
+ PAD_PGUP
+ </string>
+ <string name="PAD_PGDN">
+ PAD_PGDN
+ </string>
+ <string name="PAD_CENTER">
+ PAD_CENTER
+ </string>
+ <string name="PAD_INS">
+ PAD_INS
+ </string>
+ <string name="PAD_DEL">
+ PAD_DEL
+ </string>
+ <string name="PAD_Enter">
+ PAD_Enter
+ </string>
+ <string name="PAD_BUTTON0">
+ PAD_BUTTON0
+ </string>
+ <string name="PAD_BUTTON1">
+ PAD_BUTTON1
+ </string>
+ <string name="PAD_BUTTON2">
+ PAD_BUTTON2
+ </string>
+ <string name="PAD_BUTTON3">
+ PAD_BUTTON3
+ </string>
+ <string name="PAD_BUTTON4">
+ PAD_BUTTON4
+ </string>
+ <string name="PAD_BUTTON5">
+ PAD_BUTTON5
+ </string>
+ <string name="PAD_BUTTON6">
+ PAD_BUTTON6
+ </string>
+ <string name="PAD_BUTTON7">
+ PAD_BUTTON7
+ </string>
+ <string name="PAD_BUTTON8">
+ PAD_BUTTON8
+ </string>
+ <string name="PAD_BUTTON9">
+ PAD_BUTTON9
+ </string>
+ <string name="PAD_BUTTON10">
+ PAD_BUTTON10
+ </string>
+ <string name="PAD_BUTTON11">
+ PAD_BUTTON11
+ </string>
+ <string name="PAD_BUTTON12">
+ PAD_BUTTON12
+ </string>
+ <string name="PAD_BUTTON13">
+ PAD_BUTTON13
+ </string>
+ <string name="PAD_BUTTON14">
+ PAD_BUTTON14
+ </string>
+ <string name="PAD_BUTTON15">
+ PAD_BUTTON15
+ </string>
+ <string name="-">
+ -
+ </string>
+ <string name="=">
+ =
+ </string>
+ <string name="`">
+ `
+ </string>
+ <string name=";">
+ ;
+ </string>
+ <string name="[">
+ [
+ </string>
+ <string name="]">
+ ]
+ </string>
+ <string name="\">
+ \
+ </string>
+ <string name="0">
+ 0
+ </string>
+ <string name="1">
+ 1
+ </string>
+ <string name="2">
+ 2
+ </string>
+ <string name="3">
+ 3
+ </string>
+ <string name="4">
+ 4
+ </string>
+ <string name="5">
+ 5
+ </string>
+ <string name="6">
+ 6
+ </string>
+ <string name="7">
+ 7
+ </string>
+ <string name="8">
+ 8
+ </string>
+ <string name="9">
+ 9
+ </string>
+ <string name="A">
+ A
+ </string>
+ <string name="B">
+ B
+ </string>
+ <string name="C">
+ C
+ </string>
+ <string name="D">
+ D
+ </string>
+ <string name="E">
+ E
+ </string>
+ <string name="F">
+ F
+ </string>
+ <string name="G">
+ G
+ </string>
+ <string name="H">
+ H
+ </string>
+ <string name="I">
+ I
+ </string>
+ <string name="J">
+ J
+ </string>
+ <string name="K">
+ K
+ </string>
+ <string name="L">
+ L
+ </string>
+ <string name="M">
+ M
+ </string>
+ <string name="N">
+ N
+ </string>
+ <string name="O">
+ O
+ </string>
+ <string name="P">
+ P
+ </string>
+ <string name="Q">
+ Q
+ </string>
+ <string name="R">
+ R
+ </string>
+ <string name="S">
+ S
+ </string>
+ <string name="T">
+ T
+ </string>
+ <string name="U">
+ U
+ </string>
+ <string name="V">
+ V
+ </string>
+ <string name="W">
+ W
+ </string>
+ <string name="X">
+ X
+ </string>
+ <string name="Y">
+ Y
+ </string>
+ <string name="Z">
+ Z
+ </string>
+ <string name="BeaconParticle">
+ Partikel-Beacons werden angezeigt (blau)
+ </string>
+ <string name="BeaconPhysical">
+ Beacons für physische Objekte werden angezeigt (grün)
+ </string>
+ <string name="BeaconScripted">
+ Beacons für Skriptobjekte werden angezeigt (rot)
+ </string>
+ <string name="BeaconScriptedTouch">
+ Beacons für Skriptobjekte mit Berührungsfunktion werden angezeigt (rot)
+ </string>
+ <string name="BeaconSound">
+ Sound-Beacons werden angezeigt (gelb)
+ </string>
+ <string name="BeaconMedia">
+ Medien-Beacons werden angezeigt (weiß)
+ </string>
+ <string name="BeaconSun">
+ Sonnenrichtungs-Beacon ansehen (orange)
+ </string>
+ <string name="BeaconMoon">
+ Mondrichtungs-Beacon ansehen (lila)
+ </string>
+ <string name="ParticleHiding">
+ Partikel werden ausgeblendet
+ </string>
+ <string name="Command_AboutLand_Label">
+ Landinformationen
+ </string>
+ <string name="Command_Appearance_Label">
+ Aussehen
+ </string>
+ <string name="Command_Avatar_Label">
+ Avatar
+ </string>
+ <string name="Command_Build_Label">
+ Bauen
+ </string>
+ <string name="Command_Chat_Label">
+ Chat
+ </string>
+ <string name="Command_Conversations_Label">
+ Unterhaltungen
+ </string>
+ <string name="Command_Compass_Label">
+ Kompass
+ </string>
+ <string name="Command_Destinations_Label">
+ Ziele
+ </string>
+ <string name="Command_Environments_Label">
+ Meine Umgebungen
+ </string>
+ <string name="Command_Facebook_Label">
+ Facebook
+ </string>
+ <string name="Command_Flickr_Label">
+ Flickr
+ </string>
+ <string name="Command_Gestures_Label">
+ Gesten
+ </string>
+ <string name="Command_Grid_Status_Label">
+ Grid-Status
+ </string>
+ <string name="Command_HowTo_Label">
+ Infos
+ </string>
+ <string name="Command_Inventory_Label">
+ Inventar
+ </string>
+ <string name="Command_Map_Label">
+ Karte
+ </string>
+ <string name="Command_Marketplace_Label">
+ Marktplatz
+ </string>
+ <string name="Command_MarketplaceListings_Label">
+ Marktplatz
+ </string>
+ <string name="Command_MiniMap_Label">
+ Minikarte
+ </string>
+ <string name="Command_Move_Label">
+ Gehen / Rennen / Fliegen
+ </string>
+ <string name="Command_Outbox_Label">
+ Händler-Outbox
+ </string>
+ <string name="Command_People_Label">
+ Leute
+ </string>
+ <string name="Command_Picks_Label">
+ Auswahlen
+ </string>
+ <string name="Command_Places_Label">
+ Orte
+ </string>
+ <string name="Command_Preferences_Label">
+ Einstellungen
+ </string>
+ <string name="Command_Profile_Label">
+ Profil
+ </string>
+ <string name="Command_Report_Abuse_Label">
+ Missbrauch melden
+ </string>
+ <string name="Command_Search_Label">
+ Suchen
+ </string>
+ <string name="Command_Snapshot_Label">
+ Foto
+ </string>
+ <string name="Command_Speak_Label">
+ Sprechen
+ </string>
+ <string name="Command_Twitter_Label">
+ Twitter
+ </string>
+ <string name="Command_View_Label">
+ Kamerasteuerungen
+ </string>
+ <string name="Command_Voice_Label">
+ Voice-Einstellungen
+ </string>
+ <string name="Command_AboutLand_Tooltip">
+ Informationen zu dem von Ihnen besuchten Land
+ </string>
+ <string name="Command_Appearance_Tooltip">
+ Avatar ändern
+ </string>
+ <string name="Command_Avatar_Tooltip">
+ Kompletten Avatar auswählen
+ </string>
+ <string name="Command_Build_Tooltip">
+ Objekte bauen und Terrain umformen
+ </string>
+ <string name="Command_Chat_Tooltip">
+ Mit Leuten in der Nähe chatten
+ </string>
+ <string name="Command_Conversations_Tooltip">
+ Mit allen unterhalten
+ </string>
+ <string name="Command_Compass_Tooltip">
+ Kompass
+ </string>
+ <string name="Command_Destinations_Tooltip">
+ Ziele von Interesse
+ </string>
+ <string name="Command_Environments_Tooltip">
+ Meine Umgebungen
+ </string>
+ <string name="Command_Facebook_Tooltip">
+ Auf Facebook posten
+ </string>
+ <string name="Command_Flickr_Tooltip">
+ Auf Flickr hochladen
+ </string>
+ <string name="Command_Gestures_Tooltip">
+ Gesten für Ihren Avatar
+ </string>
+ <string name="Command_Grid_Status_Tooltip">
+ Aktuellen Grid-Status anzeigen
+ </string>
+ <string name="Command_HowTo_Tooltip">
+ Wie führe ich gängige Aufgaben aus?
+ </string>
+ <string name="Command_Inventory_Tooltip">
+ Ihr Eigentum anzeigen und benutzen
+ </string>
+ <string name="Command_Map_Tooltip">
+ Weltkarte
+ </string>
+ <string name="Command_Marketplace_Tooltip">
+ Einkaufen gehen
+ </string>
+ <string name="Command_MarketplaceListings_Tooltip">
+ Ihre Kreation verkaufen
+ </string>
+ <string name="Command_MiniMap_Tooltip">
+ Leute in der Nähe anzeigen
+ </string>
+ <string name="Command_Move_Tooltip">
+ Ihren Avatar bewegen
+ </string>
+ <string name="Command_Outbox_Tooltip">
+ Artikel zum Verkauf in den Marktplatz übertragen
+ </string>
+ <string name="Command_People_Tooltip">
+ Freunde, Gruppen und Leute in der Nähe
+ </string>
+ <string name="Command_Picks_Tooltip">
+ Orte, die in Ihrem Profil als Favoriten angezeigt werden sollen
+ </string>
+ <string name="Command_Places_Tooltip">
+ Von Ihnen gespeicherte Orte
+ </string>
+ <string name="Command_Preferences_Tooltip">
+ Einstellungen
+ </string>
+ <string name="Command_Profile_Tooltip">
+ Ihr Profil bearbeiten oder anzeigen
+ </string>
+ <string name="Command_Report_Abuse_Tooltip">
+ Missbrauch melden
+ </string>
+ <string name="Command_Search_Tooltip">
+ Orte, Veranstaltungen, Leute finden
+ </string>
+ <string name="Command_Snapshot_Tooltip">
+ Foto aufnehmen
+ </string>
+ <string name="Command_Speak_Tooltip">
+ Über Ihr Mikrofon mit Leuten in der Nähe sprechen
+ </string>
+ <string name="Command_Twitter_Tooltip">
+ Twitter
+ </string>
+ <string name="Command_View_Tooltip">
+ Kamerawinkel ändern
+ </string>
+ <string name="Command_Voice_Tooltip">
+ Lautstärkeregler für Anrufe und Leute in Ihrer Nähe in SL
+ </string>
+ <string name="Toolbar_Bottom_Tooltip">
+ gegenwärtig in der unteren Symbolleiste
+ </string>
+ <string name="Toolbar_Left_Tooltip">
+ gegenwärtig in der linken Symbolleiste
+ </string>
+ <string name="Toolbar_Right_Tooltip">
+ gegenwärtig in der rechten Symbolleiste
+ </string>
+ <string name="Retain%">
+ % zurückbehalten
+ </string>
+ <string name="Detail">
+ Details
+ </string>
+ <string name="Better Detail">
+ Bessere Details
+ </string>
+ <string name="Surface">
+ Oberfläche
+ </string>
+ <string name="Solid">
+ Fest
+ </string>
+ <string name="Wrap">
+ Wickeln
+ </string>
+ <string name="Preview">
+ Vorschau
+ </string>
+ <string name="Normal">
+ Normal
+ </string>
+ <string name="Pathfinding_Wiki_URL">
+ http://wiki.secondlife.com/wiki/Pathfinding_Tools_in_the_Second_Life_Viewer
+ </string>
+ <string name="Pathfinding_Object_Attr_None">
+ Keine
+ </string>
+ <string name="Pathfinding_Object_Attr_Permanent">
+ Wirkt sich auf Navmesh aus
+ </string>
+ <string name="Pathfinding_Object_Attr_Character">
+ Figur
+ </string>
+ <string name="Pathfinding_Object_Attr_MultiSelect">
+ (mehrere)
+ </string>
+ <string name="snapshot_quality_very_low">
+ Sehr niedrig
+ </string>
+ <string name="snapshot_quality_low">
+ Niedrig
+ </string>
+ <string name="snapshot_quality_medium">
+ Mittel
+ </string>
+ <string name="snapshot_quality_high">
+ Hoch
+ </string>
+ <string name="snapshot_quality_very_high">
+ Sehr hoch
+ </string>
+ <string name="TeleportMaturityExceeded">
+ Der Einwohner kann diese Region nicht besuchen.
+ </string>
+ <string name="UserDictionary">
+ [Benutzer]
+ </string>
+ <string name="experience_tools_experience">
+ Erlebnis
+ </string>
+ <string name="ExperienceNameNull">
+ (kein Erlebnis)
+ </string>
+ <string name="ExperienceNameUntitled">
+ (unbenanntes Erlebnis)
+ </string>
+ <string name="Land-Scope">
+ Landumfang
+ </string>
+ <string name="Grid-Scope">
+ Gridumfang
+ </string>
+ <string name="Allowed_Experiences_Tab">
+ ZULäSSIG
+ </string>
+ <string name="Blocked_Experiences_Tab">
+ BLOCKIERT
+ </string>
+ <string name="Contrib_Experiences_Tab">
+ CONTRIBUTOR
+ </string>
+ <string name="Admin_Experiences_Tab">
+ ADMIN
+ </string>
+ <string name="Recent_Experiences_Tab">
+ AKTUELL
+ </string>
+ <string name="Owned_Experiences_Tab">
+ EIGENE
+ </string>
+ <string name="ExperiencesCounter">
+ ([EXPERIENCES], max. [MAXEXPERIENCES])
+ </string>
+ <string name="ExperiencePermission1">
+ Ihre Steuerungen übernehmen
+ </string>
+ <string name="ExperiencePermission3">
+ Animationen Ihres Avatars auslösen
+ </string>
+ <string name="ExperiencePermission4">
+ an Ihren Avatar anhängen
+ </string>
+ <string name="ExperiencePermission9">
+ Ihre Kamera vorfolgen
+ </string>
+ <string name="ExperiencePermission10">
+ Ihre Kamera steuern
+ </string>
+ <string name="ExperiencePermission11">
+ Sie teleportieren
+ </string>
+ <string name="ExperiencePermission12">
+ automatisch Erlebnisberechtigungen akzeptieren
+ </string>
+ <string name="ExperiencePermission16">
+ ihren Avatar zwingen, sich zu setzen
+ </string>
+ <string name="ExperiencePermission17">
+ Ändern Ihrer Umgebungseinstellungen
+ </string>
+ <string name="ExperiencePermissionShortUnknown">
+ unbekannten Vorgang durchführen: [Permission]
+ </string>
+ <string name="ExperiencePermissionShort1">
+ Steuerungen übernehmen
+ </string>
+ <string name="ExperiencePermissionShort3">
+ Animationen auslösen
+ </string>
+ <string name="ExperiencePermissionShort4">
+ Anhängen
+ </string>
+ <string name="ExperiencePermissionShort9">
+ Kamera verfolgen
+ </string>
+ <string name="ExperiencePermissionShort10">
+ Kamera steuern
+ </string>
+ <string name="ExperiencePermissionShort11">
+ Teleportieren
+ </string>
+ <string name="ExperiencePermissionShort12">
+ Berechtigung
+ </string>
+ <string name="ExperiencePermissionShort16">
+ Sitzen
+ </string>
+ <string name="ExperiencePermissionShort17">
+ Umgebung
+ </string>
+ <string name="logging_calls_disabled_log_empty">
+ Unterhaltungen werden nicht protokolliert. Um ein Protokoll zu starten, wählen Sie „Speichern: nur Protokoll“ oder „Speichern: Protokoll und Transkripte“ unter „Einstellungen“ &gt; „Chat“.
+ </string>
+ <string name="logging_calls_disabled_log_not_empty">
+ Es werden keine Unterhaltungen mehr protokolliert. Um weiterhin ein Protokoll zu führen, wählen Sie „Speichern: nur Protokoll“ oder „Speichern: Protokoll und Transkripte“ unter „Einstellungen“ &gt; „Chat“.
+ </string>
+ <string name="logging_calls_enabled_log_empty">
+ Keine protokollierten Unterhaltungen verfügbar. Hier erscheint ein Protokolleintrag, wenn Sie eine Person kontaktieren oder von einer Person kontaktiert werden.
+ </string>
+ <string name="loading_chat_logs">
+ Laden...
+ </string>
+ <string name="na">
+ Nicht zutreffend
+ </string>
+ <string name="preset_combo_label">
+ -Leere Liste-
+ </string>
+ <string name="Default">
+ Standard
+ </string>
+ <string name="none_paren_cap">
+ (Keine)
+ </string>
+ <string name="no_limit">
+ Keine Begrenzung
+ </string>
+ <string name="Mav_Details_MAV_FOUND_DEGENERATE_TRIANGLES">
+ Die Physikform enthält Dreiecke, die zu klein sind. Versuchen Sie, das Physikmodell zu vereinfachen.
+ </string>
+ <string name="Mav_Details_MAV_CONFIRMATION_DATA_MISMATCH">
+ Die Physikform enthält ungültige Bestätigungsdaten. Versuchen Sie, das Physikmodell zu korrigieren.
+ </string>
+ <string name="Mav_Details_MAV_UNKNOWN_VERSION">
+ Die Physikform hat keine korrekte Version. Legen Sie die korrekte Version für das Physikmodell fest.
+ </string>
+ <string name="couldnt_resolve_host">
+ Der DNS konnte den Hostnamen ([HOSTNAME]) nicht auflösen Prüfen
Sie bitte, ob Sie die Website www.secondlife.com aufrufen können. Wenn Sie die
Website aufrufen können, jedoch weiterhin diese Fehlermeldung erhalten,
-besuchen Sie bitte den Support-Bereich und melden Sie das Problem.</string>
- <string name="ssl_peer_certificate">Der Anmeldeserver konnte sich nicht per SSL verifizieren.
+besuchen Sie bitte den Support-Bereich und melden Sie das Problem.
+ </string>
+ <string name="ssl_peer_certificate">
+ Der Anmeldeserver konnte sich nicht per SSL verifizieren.
Wenn Sie diese Fehlermeldung weiterhin erhalten, besuchen
Sie bitte den Support-Bereich der Website Secondlife.com
-und melden Sie das Problem.</string>
- <string name="ssl_connect_error">Die Ursache hierfür ist häufig eine falsch eingestellte Uhrzeit auf Ihrem Computer.
+und melden Sie das Problem.
+ </string>
+ <string name="ssl_connect_error">
+ Die Ursache hierfür ist häufig eine falsch eingestellte Uhrzeit auf Ihrem Computer.
Bitte vergewissern Sie sich, dass Datum und Uhrzeit in der Systemsteuerung korrekt
eingestellt sind. Überprüfen Sie außerdem, ob Ihre Netzwerk- und Firewall-Einstellungen
korrekt sind. Wenn Sie diese Fehlermeldung weiterhin erhalten, besuchen Sie bitte den
Support-Bereich der Website Secondlife.com und melden Sie das Problem.
-[https://community.secondlife.com/knowledgebase/english/error-messages-r520/#Section__3 Knowledge-Base]</string>
+[https://community.secondlife.com/knowledgebase/english/error-messages-r520/#Section__3 Knowledge-Base]
+ </string>
</strings>
diff --git a/indra/newview/skins/default/xui/de/teleport_strings.xml b/indra/newview/skins/default/xui/de/teleport_strings.xml
index 9f8a7a8045..1ed09f24b5 100644
--- a/indra/newview/skins/default/xui/de/teleport_strings.xml
+++ b/indra/newview/skins/default/xui/de/teleport_strings.xml
@@ -1,41 +1,97 @@
<?xml version="1.0" ?>
<teleport_messages>
<message_set name="errors">
- <message name="invalid_tport">Bei der Bearbeitung Ihrer Teleport-Anfrage ist ein Problem aufgetreten. Sie müssen sich zum Teleportieren eventuell neu anmelden.
-Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_SITE].</message>
- <message name="invalid_region_handoff">Bei der Bearbeitung Ihres Regionswechsels ist ein Problem aufgetreten. Sie müssen eventuell neu anmelden, um die Region wechseln zu können.
-Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_SITE].</message>
- <message name="blocked_tport">Teleportieren ist zurzeit leider nicht möglich. Versuchen Sie es später noch einmal.
-Wenn der Teleport dann immer noch nicht funktioniert, melden Sie sich bitte ab und wieder an.</message>
- <message name="nolandmark_tport">Das System konnte das Landmarken-Ziel nicht finden.</message>
- <message name="timeout_tport">Das System konnte keine Teleport-Verbindung herstellen.
-Versuchen Sie es später noch einmal.</message>
- <message name="NoHelpIslandTP">Sie können nicht zurück nach Welcome Island teleportieren.
-Gehen Sie zu „Welcome Island Public“, um das Tutorial zu wiederholen.</message>
- <message name="noaccess_tport">Sie haben leider keinen Zugang zu diesem Teleport-Ziel.</message>
- <message name="missing_attach_tport">Ihre Anhänge sind noch nicht eingetroffen. Warten Sie kurz oder melden Sie sich ab und wieder an, bevor Sie einen neuen Teleport-Versuch unternehmen.</message>
- <message name="too_many_uploads_tport">Die Asset-Warteschlange in dieser Region ist zurzeit überlastet.
-Ihre Teleport-Anfrage kann nicht sofort bearbeitet werden. Versuchen Sie es in einigen Minuten erneut oder besuchen Sie eine weniger überfüllte Region.</message>
- <message name="expired_tport">Das System konnte Ihre Teleport-Anfrage nicht rechtzeitig bearbeiten. Versuchen Sie es in einigen Minuten erneut.</message>
- <message name="expired_region_handoff">Das System konnte Ihre Anfrage zum Regionswechsel nicht rechtzeitig bearbeiten. Versuchen Sie es in einigen Minuten erneut.</message>
- <message name="no_host">Teleport-Ziel wurde nicht gefunden. Das Ziel ist entweder im Moment nicht verfügbar oder existiert nicht mehr. Versuchen Sie es in einigen Minuten erneut.</message>
- <message name="no_inventory_host">Das Inventarsystem ist zurzeit nicht verfügbar.</message>
- <message name="MustGetAgeRegion">Sie müssen mindestens 18 Jahre alt sein, um diese Region betreten zu können.</message>
- <message name="RegionTPSpecialUsageBlocked">Betreten der Region nicht gestattet. „[REGION_NAME]“ ist eine Region für Geschicklichkeitsspiele. Der Zutritt ist Einwohnern vorbehalten, die bestimmte Kriterien erfüllen. Weitere Details finden Sie unter [http://wiki.secondlife.com/wiki/Linden_Lab_Official:Skill_Gaming_in_Second_Life Skill Gaming FAQ].</message>
- <message name="preexisting_tport">Entschuldigung, aber das System konnte deinen Teleport nicht starten. Versuche es bitte in ein paar Minuten noch einmal.</message>
+ <message name="invalid_tport">
+ Bei der Bearbeitung Ihrer Teleport-Anfrage ist ein Problem aufgetreten. Sie müssen sich zum Teleportieren eventuell neu anmelden.
+Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_SITE].
+ </message>
+ <message name="invalid_region_handoff">
+ Bei der Bearbeitung Ihres Regionswechsels ist ein Problem aufgetreten. Sie müssen eventuell neu anmelden, um die Region wechseln zu können.
+Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_SITE].
+ </message>
+ <message name="blocked_tport">
+ Teleportieren ist zurzeit leider nicht möglich. Versuchen Sie es später noch einmal.
+Wenn der Teleport dann immer noch nicht funktioniert, melden Sie sich bitte ab und wieder an.
+ </message>
+ <message name="nolandmark_tport">
+ Das System konnte das Landmarken-Ziel nicht finden.
+ </message>
+ <message name="timeout_tport">
+ Das System konnte keine Teleport-Verbindung herstellen.
+Versuchen Sie es später noch einmal.
+ </message>
+ <message name="NoHelpIslandTP">
+ Sie können nicht zurück nach Welcome Island teleportieren.
+Gehen Sie zu „Welcome Island Public“, um das Tutorial zu wiederholen.
+ </message>
+ <message name="noaccess_tport">
+ Sie haben leider keinen Zugang zu diesem Teleport-Ziel.
+ </message>
+ <message name="missing_attach_tport">
+ Ihre Anhänge sind noch nicht eingetroffen. Warten Sie kurz oder melden Sie sich ab und wieder an, bevor Sie einen neuen Teleport-Versuch unternehmen.
+ </message>
+ <message name="too_many_uploads_tport">
+ Die Asset-Warteschlange in dieser Region ist zurzeit überlastet.
+Ihre Teleport-Anfrage kann nicht sofort bearbeitet werden. Versuchen Sie es in einigen Minuten erneut oder besuchen Sie eine weniger überfüllte Region.
+ </message>
+ <message name="expired_tport">
+ Das System konnte Ihre Teleport-Anfrage nicht rechtzeitig bearbeiten. Versuchen Sie es in einigen Minuten erneut.
+ </message>
+ <message name="expired_region_handoff">
+ Das System konnte Ihre Anfrage zum Regionswechsel nicht rechtzeitig bearbeiten. Versuchen Sie es in einigen Minuten erneut.
+ </message>
+ <message name="no_host">
+ Teleport-Ziel wurde nicht gefunden. Das Ziel ist entweder im Moment nicht verfügbar oder existiert nicht mehr. Versuchen Sie es in einigen Minuten erneut.
+ </message>
+ <message name="no_inventory_host">
+ Das Inventarsystem ist zurzeit nicht verfügbar.
+ </message>
+ <message name="MustGetAgeRegion">
+ Sie müssen mindestens 18 Jahre alt sein, um diese Region betreten zu können.
+ </message>
+ <message name="RegionTPSpecialUsageBlocked">
+ Betreten der Region nicht gestattet. „[REGION_NAME]“ ist eine Region für Geschicklichkeitsspiele. Der Zutritt ist Einwohnern vorbehalten, die bestimmte Kriterien erfüllen. Weitere Details finden Sie unter [http://wiki.secondlife.com/wiki/Linden_Lab_Official:Skill_Gaming_in_Second_Life Skill Gaming FAQ].
+ </message>
+ <message name="preexisting_tport">
+ Entschuldigung, aber das System konnte deinen Teleport nicht starten. Versuche es bitte in ein paar Minuten noch einmal.
+ </message>
</message_set>
<message_set name="progress">
- <message name="sending_dest">Transport zum Ziel.</message>
- <message name="redirecting">Weiterleitung an anderes Ziel.</message>
- <message name="relaying">Weiterleitung zum Ziel.</message>
- <message name="sending_home">Zuhause-Position wird ermittelt.</message>
- <message name="sending_landmark">Landmarken-Position wird ermittelt.</message>
- <message name="completing">Teleport wird abgeschlossen.</message>
- <message name="completed_from">Teleport aus [T_SLURL] wurde erfolgreich abgeschlossen.</message>
- <message name="resolving">Ziel wird ermittelt.</message>
- <message name="contacting">Verbindung zu neuer Region.</message>
- <message name="arriving">Ziel erreicht...</message>
- <message name="requesting">Teleport wird initialisiert...</message>
- <message name="pending">Anstehender Teleport...</message>
+ <message name="sending_dest">
+ Transport zum Ziel.
+ </message>
+ <message name="redirecting">
+ Weiterleitung an anderes Ziel.
+ </message>
+ <message name="relaying">
+ Weiterleitung zum Ziel.
+ </message>
+ <message name="sending_home">
+ Zuhause-Position wird ermittelt.
+ </message>
+ <message name="sending_landmark">
+ Landmarken-Position wird ermittelt.
+ </message>
+ <message name="completing">
+ Teleport wird abgeschlossen.
+ </message>
+ <message name="completed_from">
+ Teleport aus [T_SLURL] wurde erfolgreich abgeschlossen.
+ </message>
+ <message name="resolving">
+ Ziel wird ermittelt.
+ </message>
+ <message name="contacting">
+ Verbindung zu neuer Region.
+ </message>
+ <message name="arriving">
+ Ziel erreicht...
+ </message>
+ <message name="requesting">
+ Teleport wird initialisiert...
+ </message>
+ <message name="pending">
+ Anstehender Teleport...
+ </message>
</message_set>
</teleport_messages>
diff --git a/indra/newview/skins/default/xui/en/floater_about.xml b/indra/newview/skins/default/xui/en/floater_about.xml
index 89c6e41a85..09b134eac5 100644
--- a/indra/newview/skins/default/xui/en/floater_about.xml
+++ b/indra/newview/skins/default/xui/en/floater_about.xml
@@ -70,7 +70,7 @@
follows="all"
left="10"
name="megapahit_credits_panel"
- height="405"
+ height="420"
top="10">
<text
follows="top|left|right"
@@ -86,7 +86,7 @@ Megapahit is brought to you by (in order of appearance):
<text_editor
enabled="false"
follows="top|left"
- height="245"
+ height="260"
bg_readonly_color="Transparent"
left="5"
text_color="LtGray"
@@ -111,6 +111,7 @@ Hiroo Ono
Melodey
Keysin (scoutkeysin)
Yikes Lopez
+~ ( ^-^ ) ~ (cutie_qu)
</text_editor>
<text
follows="top|left"
diff --git a/indra/newview/skins/default/xui/en/floater_chat_mention_picker.xml b/indra/newview/skins/default/xui/en/floater_chat_mention_picker.xml
new file mode 100644
index 0000000000..bbad99f932
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_chat_mention_picker.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ name="chat_mention_picker"
+ title="CHOOSE RESIDENT"
+ single_instance="true"
+ can_minimize="false"
+ can_tear_off="false"
+ can_resize="true"
+ auto_close="true"
+ layout="topleft"
+ min_width="250"
+ chrome="true"
+ height="125"
+ width="310">
+ <avatar_list
+ allow_select="true"
+ follows="all"
+ height="120"
+ width="306"
+ ignore_online_status="true"
+ layout="topleft"
+ left="3"
+ keep_one_selected="true"
+ multi_select="false"
+ show_info_btn="false"
+ show_profile_btn="false"
+ show_speaking_indicator="false"
+ name="avatar_list"
+ right="-1"
+ top="2" />
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_rlv_console.xml b/indra/newview/skins/default/xui/en/floater_rlv_console.xml
new file mode 100644
index 0000000000..708055d1b6
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_rlv_console.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ can_resize="true"
+ height="400"
+ layout="topleft"
+ min_height="300"
+ min_width="300"
+ name="rlv_console"
+ title="RLVa console"
+ width="600"
+ >
+ <layout_stack
+ animate="false"
+ bottom="-1"
+ default_tab_group="2"
+ follows="all"
+ left="5"
+ layout="topleft"
+ mouse_opaque="false"
+ name="main_stack"
+ right="-5"
+ orientation="vertical"
+ tab_group="1"
+ top="1"
+ >
+ <layout_panel
+ name="body_panel"
+ height="235">
+ <text_editor
+ follows="all"
+ left="1"
+ right="-1"
+ top="0"
+ length="1"
+ font="Monospace"
+ bottom="-1"
+ ignore_tab="false"
+ layout="topleft"
+ max_length="65536"
+ name="console_output"
+ read_only="true"
+ track_end="true"
+ type="string"
+ word_wrap="true"
+ >
+ </text_editor>
+ </layout_panel>
+
+ <layout_panel
+ height="26"
+ auto_resize="false"
+ name="input_panel">
+ <chat_editor
+ layout="topleft"
+ expand_lines_count="5"
+ follows="left|right|bottom"
+ font="SansSerifSmall"
+ height="20"
+ is_expandable="true"
+ text_tentative_color="TextFgTentativeColor"
+ name="console_input"
+ max_length="1023"
+ spellcheck="true"
+ tab_group="3"
+ bottom_delta="20"
+ left="1"
+ top="1"
+ right="-1"
+ show_emoji_helper="false"
+ wrap="true"
+ />
+ </layout_panel>
+ </layout_stack>
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_snapshot.xml b/indra/newview/skins/default/xui/en/floater_snapshot.xml
index e6b780728c..acdccdc03a 100644
--- a/indra/newview/skins/default/xui/en/floater_snapshot.xml
+++ b/indra/newview/skins/default/xui/en/floater_snapshot.xml
@@ -167,8 +167,19 @@
left="30"
height="16"
top_pad="8"
- width="180"
+ width="80"
+ control_name="RenderUIInSnapshot"
name="ui_check" />
+ <check_box
+ label="L$ Balance"
+ layout="topleft"
+ left_pad="16"
+ height="16"
+ top_delta="0"
+ width="80"
+ control_name="RenderBalanceInSnapshot"
+ enabled_control="RenderUIInSnapshot"
+ name="balance_check" />
<check_box
label="HUDs"
layout="topleft"
@@ -176,6 +187,7 @@
left="30"
top_pad="1"
width="180"
+ control_name="RenderHUDInSnapshot"
name="hud_check" />
<check_box
label="Freeze frame (fullscreen)"
diff --git a/indra/newview/skins/default/xui/en/menu_inventory.xml b/indra/newview/skins/default/xui/en/menu_inventory.xml
index fdeefe9089..28569c1557 100644
--- a/indra/newview/skins/default/xui/en/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/en/menu_inventory.xml
@@ -152,6 +152,14 @@
parameter="category" />
</menu_item_call>
<menu_item_call
+ label="New Folder"
+ layout="topleft"
+ name="New Outfit Folder">
+ <menu_item_call.on_click
+ function="Inventory.DoCreate"
+ parameter="category" />
+ </menu_item_call>
+ <menu_item_call
label="New Outfit"
layout="topleft"
name="New Outfit">
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index 9bc65ac794..d27a184ac3 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -1894,6 +1894,71 @@ function="World.EnvPreset"
</menu>
<menu
create_jump_keys="true"
+ label="RLVa"
+ name="RLVa Main"
+ tear_off="true"
+ visible="true">
+ <menu
+ label="Debug"
+ name="Debug"
+ tear_off="true">
+ <menu_item_check
+ label="Show Top-level RLVa Menu"
+ name="Show Top-level RLVa Menu">
+ <menu_item_check.on_check
+ function="CheckControl"
+ parameter="RLVaTopLevelMenu" />
+ <menu_item_check.on_click
+ function="ToggleControl"
+ parameter="RLVaTopLevelMenu" />
+ </menu_item_check>
+ <menu_item_separator/>
+ <menu_item_check
+ label="Show Debug Messages"
+ name="Show Debug Messages">
+ <menu_item_check.on_check
+ function="CheckControl"
+ parameter="RestrainedLoveDebug" />
+ <menu_item_check.on_click
+ function="ToggleControl"
+ parameter="RestrainedLoveDebug" />
+ </menu_item_check>
+ <menu_item_check
+ label="Hide Unset or Duplicate Messages"
+ name="Hide Unset or Duplicate Messages">
+ <menu_item_check.on_check
+ function="CheckControl"
+ parameter="RLVaDebugHideUnsetDuplicate" />
+ <menu_item_check.on_click
+ function="ToggleControl"
+ parameter="RLVaDebugHideUnsetDuplicate" />
+ </menu_item_check>
+ </menu>
+ <menu_item_separator/>
+ <menu_item_check
+ label="Allow Temporary Attachments"
+ name="Allow Temporary Attachments">
+ <menu_item_check.on_check
+ function="CheckControl"
+ parameter="RLVaEnableTemporaryAttachments" />
+ <menu_item_check.on_click
+ function="ToggleControl"
+ parameter="RLVaEnableTemporaryAttachments" />
+ </menu_item_check>
+ <menu_item_separator />
+ <menu_item_check
+ label="Console..."
+ name="Console">
+ <menu_item_check.on_check
+ function="Floater.Visible"
+ parameter="rlv_console" />
+ <menu_item_check.on_click
+ function="Floater.Toggle"
+ parameter="rlv_console" />
+ </menu_item_check>
+ </menu>
+ <menu
+ create_jump_keys="true"
label="Advanced"
name="Advanced"
tear_off="true"
@@ -2400,6 +2465,11 @@ function="World.EnvPreset"
parameter="flexible" />
</menu_item_check>
</menu>
+ <menu
+ label="RLVa"
+ name="RLVa Embedded"
+ tear_off="true"
+ visible="true" />
<menu_item_check
label="Use Plugin Read Thread"
name="Use Plugin Read Thread">
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 89511c2fa2..c2a4ffe942 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -12648,4 +12648,13 @@ Select the "use as favorite folder" from a folder's menu to set it as the favori
notext="Cancel"
yestext="Continue"/>
</notification>
+
+ <notification
+ icon="notify.tga"
+ name="WaterExclusionNoMaterial"
+ persist="true"
+ type="notify">
+ Unable to apply material to the water exclusion surface.
+ <tag>fail</tag>
+ </notification>
</notifications>
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_chat.xml b/indra/newview/skins/default/xui/en/panel_preferences_chat.xml
index 88716c7f96..0aa1af7de6 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_chat.xml
@@ -409,7 +409,7 @@
layout="topleft"
left="0"
name="play_sound"
- width="100"
+ width="90"
top_pad="8"
visible="true">
Play sound:
@@ -419,10 +419,10 @@
height="16"
label="New conversation"
layout="topleft"
- left_pad="15"
+ left_pad="5"
top_pad="-10"
name="new_conversation"
- width="150" />
+ width="130" />
<check_box
control_name="PlaySoundIncomingVoiceCall"
height="16"
@@ -430,16 +430,16 @@
layout="topleft"
top_pad="6"
name="incoming_voice_call"
- width="150" />
+ width="130" />
<check_box
control_name="PlaySoundTeleportOffer"
height="16"
label="Teleport offer"
layout="topleft"
- left_pad="35"
+ left_pad="18"
top_pad="-38"
name="teleport_offer"
- width="150" />
+ width="130" />
<check_box
control_name="PlaySoundInventoryOffer"
height="16"
@@ -447,14 +447,23 @@
layout="topleft"
top_pad="6"
name="inventory_offer"
- width="150" />
+ width="130" />
+ <check_box
+ control_name="PlaySoundChatMention"
+ height="16"
+ label="Chat mention"
+ layout="topleft"
+ left_pad="7"
+ top_pad="-38"
+ name="chat_mention"
+ width="130" />
<view_border
bevel_style="none"
height="0"
layout="topleft"
left="0"
name="cost_text_border"
- top_pad="7"
+ top_pad="29"
width="492"/>
</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_colors.xml b/indra/newview/skins/default/xui/en/panel_preferences_colors.xml
index b6fdef3475..fb8a4763cb 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_colors.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_colors.xml
@@ -299,6 +299,107 @@
width="95">
URLs
</text>
+ <color_swatch
+ can_apply_immediately="true"
+ color="EmphasisColor"
+ follows="left|top"
+ height="24"
+ label_height="0"
+ layout="topleft"
+ left="360"
+ name="mentions"
+ top_pad="-15"
+ width="44" >
+ <color_swatch.init_callback
+ function="Pref.getUIColor"
+ parameter="ChatMentionFont" />
+ <color_swatch.commit_callback
+ function="Pref.applyUIColor"
+ parameter="ChatMentionFont" />
+ </color_swatch>
+ <text
+ type="string"
+ length="1"
+ follows="left|top"
+ height="10"
+ layout="topleft"
+ left_pad="5"
+ mouse_opaque="false"
+ name="text_mentions"
+ top_delta="5"
+ width="95">
+ Mentions
+ </text>
+ <text
+ follows="left|top"
+ layout="topleft"
+ left="30"
+ height="12"
+ name="mentions_colors"
+ top_pad="20"
+ width="170">
+ Chat mentions highlight colors:
+ </text>
+ <color_swatch
+ can_apply_immediately="true"
+ follows="left|top"
+ height="24"
+ label_height="0"
+ layout="topleft"
+ left="40"
+ name="mention_self"
+ top_pad="10"
+ width="44" >
+ <color_swatch.init_callback
+ function="Pref.getUIColor"
+ parameter="ChatSelfMentionHighlight" />
+ <color_swatch.commit_callback
+ function="Pref.applyUIColor"
+ parameter="ChatSelfMentionHighlight" />
+ </color_swatch>
+ <text
+ type="string"
+ length="1"
+ follows="left|top"
+ height="10"
+ layout="topleft"
+ left_pad="5"
+ mouse_opaque="false"
+ name="text_mentions_self"
+ top_delta="5"
+ width="95">
+ Me
+ </text>
+ <color_swatch
+ can_apply_immediately="true"
+ follows="left|top"
+ height="24"
+ label_height="0"
+ layout="topleft"
+ left="190"
+ name="mention_others"
+ top_pad="-15"
+ width="44" >
+ <color_swatch.init_callback
+ function="Pref.getUIColor"
+ parameter="ChatMentionHighlight" />
+ <color_swatch.commit_callback
+ function="Pref.applyUIColor"
+ parameter="ChatMentionHighlight" />
+ </color_swatch>
+ <text
+ type="string"
+ length="1"
+ follows="left|top"
+ height="10"
+ layout="topleft"
+ left_pad="5"
+ mouse_opaque="false"
+ name="text_mentions_others"
+ top_delta="5"
+ width="95">
+ Others
+ </text>
<text
follows="left|top"
layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/panel_settings_water.xml b/indra/newview/skins/default/xui/en/panel_settings_water.xml
index 36ec0cb3ea..ffea470cfc 100644
--- a/indra/newview/skins/default/xui/en/panel_settings_water.xml
+++ b/indra/newview/skins/default/xui/en/panel_settings_water.xml
@@ -378,7 +378,7 @@
initial_value="0"
layout="topleft"
left_delta="5"
- min_val="-0.5"
+ min_val="0"
max_val="0.5"
name="water_blur_multip"
top_pad="5"
diff --git a/indra/newview/skins/default/xui/en/panel_tools_texture.xml b/indra/newview/skins/default/xui/en/panel_tools_texture.xml
index 9a19d06432..b7db9dec96 100644
--- a/indra/newview/skins/default/xui/en/panel_tools_texture.xml
+++ b/indra/newview/skins/default/xui/en/panel_tools_texture.xml
@@ -729,8 +729,8 @@
label_width="205"
layout="topleft"
left="10"
- min_val="-100"
- max_val="100"
+ min_val="-10000"
+ max_val="10000"
name="TexScaleU"
top_pad="5"
width="265" />
@@ -742,8 +742,8 @@
label_width="205"
layout="topleft"
left="10"
- min_val="-100"
- max_val="100"
+ min_val="-10000"
+ max_val="10000"
name="TexScaleV"
width="265" />
<spinner
@@ -805,8 +805,8 @@
label_width="205"
layout="topleft"
left="10"
- min_val="-100"
- max_val="100"
+ min_val="-10000"
+ max_val="10000"
name="bumpyScaleU"
top_delta="-115"
width="265" />
@@ -818,8 +818,8 @@
label_width="205"
layout="topleft"
left="10"
- min_val="-100"
- max_val="100"
+ min_val="-10000"
+ max_val="10000"
name="bumpyScaleV"
width="265" />
<spinner
@@ -869,8 +869,8 @@
label_width="205"
layout="topleft"
left="10"
- min_val="-100"
- max_val="100"
+ min_val="-10000"
+ max_val="10000"
name="shinyScaleU"
top_delta="-115"
width="265" />
@@ -882,8 +882,8 @@
label_width="205"
layout="topleft"
left="10"
- min_val="-100"
- max_val="100"
+ min_val="-10000"
+ max_val="10000"
name="shinyScaleV"
width="265" />
<spinner
@@ -968,8 +968,8 @@
label_width="205"
layout="topleft"
left="10"
- min_val="-100"
- max_val="100"
+ min_val="-10000"
+ max_val="10000"
name="gltfTextureScaleU"
top_delta="34"
width="265" />
@@ -981,8 +981,8 @@
label_width="205"
layout="topleft"
left="10"
- min_val="-100"
- max_val="100"
+ min_val="-10000"
+ max_val="10000"
name="gltfTextureScaleV"
width="265" />
<spinner
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index bd8593bf75..357db4699c 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -13,7 +13,6 @@
<string name="SUPPORT_SITE">Second Life Support Portal</string>
<!-- starting up -->
- <string name="StartupDetectingHardware">Detecting hardware...</string>
<string name="StartupLoading">Loading [APP_NAME]...</string>
<string name="StartupClearingCache">Clearing cache...</string>
<string name="StartupInitializingTextureCache">Initializing texture cache...</string>
@@ -60,6 +59,7 @@ Disk cache: [DISK_CACHE_INFO]
HiDPI display mode: [HIDPI]
</string>
<string name="AboutLibs">
+RestrainedLove API: [RLV_VERSION]
J2C Decoder Version: [J2C_VERSION]
Audio Driver Version: [AUDIO_DRIVER_VERSION]
[LIBCEF_VERSION]
@@ -259,6 +259,7 @@ If you feel this is an error, please contact support@secondlife.com</string>
<string name="TooltipOutboxMixedStock">All items in a stock folder must have the same type and permission</string>
<string name="TooltipOutfitNotInInventory">You can only put items or outfits from your personal inventory into "My outfits"</string>
<string name="TooltipCantCreateOutfit">One or more items can't be used inside "My outfits"</string>
+ <string name="TooltipCantMoveOutfitIntoOutfit">Can not move an outfit into another outfit</string>
<string name="TooltipDragOntoOwnChild">You can't move a folder into its child</string>
<string name="TooltipDragOntoSelf">You can't move a folder into itself</string>
@@ -4402,5 +4403,31 @@ and report the problem.
<string name="NotAvailableOnPlatform">Not available on this platform</string>
<string name="NowPlaying">Now Playing</string>
<string name="GridInfoTitle">GRID INFO</string>
+ <!-- RLVa -->
+ <string name="RlvConsoleDisable">RLVa is disabled</string>
+ <string name="RlvConsoleInvalidCmd">Invalid command</string>
+ <string name="RlvConsoleExecuted">INFO</string>
+ <string name="RlvConsoleFailed">ERR</string>
+ <string name="RlvConsoleRetained">RET</string>
+ <string name="RlvDebugExecuted">executed</string>
+ <string name="RlvDebugFailed">failed</string>
+ <string name="RlvDebugRetained">retained</string>
+ <string name="RlvReturnCodeUnset">unset</string>
+ <string name="RlvReturnCodeDuplicate">duplicate</string>
+ <string name="RlvReturnCodeDelayed">delayed</string>
+ <string name="RlvReturnCodeDeprecated">deprecated</string>
+ <string name="RlvReturnCodeSyntax">thingy error</string>
+ <string name="RlvReturnCodeOption">invalid option</string>
+ <string name="RlvReturnCodeParam">invalid param</string>
+ <string name="RlvReturnCodeLock">locked command</string>
+ <string name="RlvReturnCodeDisabled">disabled command</string>
+ <string name="RlvReturnCodeUnknown">unknown command</string>
+ <string name="RlvReturnCodeNoSharedRoot">missing #RLV</string>
+ <string name="RlvReturnCodeDeprecatedAndDisabled">deprecated and disabled</string>
+ <string name="RlvReturnCodeNoBehaviour">no active behaviours</string>
+ <string name="RlvReturnCodeUnheldBehaviour">base behaviour not held</string>
+ <string name="RlvReturnCodeBlocked">blocked object</string>
+ <string name="RlvReturnCodeThrottled">throttled</string>
+ <string name="RlvReturnCodeNoProcessor">no command processor found</string>
</strings>
diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml
index 8515108943..c9bb93b315 100644
--- a/indra/newview/skins/default/xui/es/strings.xml
+++ b/indra/newview/skins/default/xui/es/strings.xml
@@ -1,608 +1,1660 @@
<?xml version="1.0" ?>
<strings>
- <string name="CAPITALIZED_APP_NAME">MEGAPAHIT</string>
- <string name="SUPPORT_SITE">Portal de Soporte de Second Life</string>
- <string name="StartupDetectingHardware">Identificando el hardware...</string>
- <string name="StartupLoading">Instalando [APP_NAME]...</string>
- <string name="StartupClearingCache">Limpiando la caché...</string>
- <string name="StartupInitializingTextureCache">Iniciando la caché de las texturas...</string>
- <string name="StartupRequireDriverUpdate">Error de inicialización de gráficos. Actualiza tu controlador de gráficos.</string>
- <string name="AboutHeader">[CHANNEL] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2].[VIEWER_VERSION_3] ([ADDRESS_SIZE]bit)
-[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]]</string>
- <string name="BuildConfig">Configuración de constitución [BUILD_CONFIG]</string>
- <string name="AboutPosition">Estás en la posición [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1], de [REGION], alojada en &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt; ([HOSTIP])
+ <string name="CAPITALIZED_APP_NAME">
+ MEGAPAHIT
+ </string>
+ <string name="SUPPORT_SITE">
+ Portal de Soporte de Second Life
+ </string>
+ <string name="StartupDetectingHardware">
+ Identificando el hardware...
+ </string>
+ <string name="StartupLoading">
+ Instalando [APP_NAME]...
+ </string>
+ <string name="StartupClearingCache">
+ Limpiando la caché...
+ </string>
+ <string name="StartupInitializingTextureCache">
+ Iniciando la caché de las texturas...
+ </string>
+ <string name="StartupRequireDriverUpdate">
+ Error de inicialización de gráficos. Actualiza tu controlador de gráficos.
+ </string>
+ <string name="AboutHeader">
+ [CHANNEL] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2].[VIEWER_VERSION_3] ([ADDRESS_SIZE]bit)
+[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]]
+ </string>
+ <string name="BuildConfig">
+ Configuración de constitución [BUILD_CONFIG]
+ </string>
+ <string name="AboutPosition">
+ Estás en la posición [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1], de [REGION], alojada en &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt;
SLURL: &lt;nolink&gt;[SLURL]&lt;/nolink&gt;
(coordenadas globales [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1])
[SERVER_VERSION]
-[SERVER_RELEASE_NOTES_URL]</string>
- <string name="AboutSystem">CPU: [CPU]
+[SERVER_RELEASE_NOTES_URL]
+ </string>
+ <string name="AboutSystem">
+ CPU: [CPU]
Memoria: [MEMORY_MB] MB
Versión del Sistema Operativo: [OS_VERSION]
Fabricante de la tarjeta gráfica: [GRAPHICS_CARD_VENDOR]
-Tarjeta gráfica: [GRAPHICS_CARD]</string>
- <string name="AboutDriver">Versión de Windows Graphics Driver: [GRAPHICS_DRIVER_VERSION]</string>
- <string name="AboutOGL">Versión de OpenGL: [OPENGL_VERSION]</string>
- <string name="AboutSettings">Tamaño de la ventana: [WINDOW_WIDTH]x[WINDOW_HEIGHT]
+Tarjeta gráfica: [GRAPHICS_CARD]
+ </string>
+ <string name="AboutDriver">
+ Versión de Windows Graphics Driver: [GRAPHICS_DRIVER_VERSION]
+ </string>
+ <string name="AboutOGL">
+ Versión de OpenGL: [OPENGL_VERSION]
+ </string>
+ <string name="AboutSettings">
+ Tamaño de la ventana: [WINDOW_WIDTH]x[WINDOW_HEIGHT]
Ajuste del tamaño de fuente: [FONT_SIZE_ADJUSTMENT]pt
Escala UI: [UI_SCALE]
Distancia de dibujo: [DRAW_DISTANCE]m
Ancho de banda: [NET_BANDWITH]kbit/s
Factor LOD: [LOD_FACTOR]
Calidad de renderización: [RENDER_QUALITY]
-Memoria de textura: [TEXTURE_MEMORY]MB</string>
- <string name="AboutOSXHiDPI">Modo de visualización HiDPi: [HIDPI]</string>
- <string name="AboutLibs">Versión de descodificador J2C: [J2C_VERSION]
+Memoria de textura: [TEXTURE_MEMORY]MB
+ </string>
+ <string name="AboutOSXHiDPI">
+ Modo de visualización HiDPi: [HIDPI]
+ </string>
+ <string name="AboutLibs">
+ Versión de descodificador J2C: [J2C_VERSION]
Versión del controlador audio: [AUDIO_DRIVER_VERSION]
[LIBCEF_VERSION]
Versión LibVLC: [LIBVLC_VERSION]
-Versión del servidor de voz: [VOICE_VERSION]</string>
- <string name="AboutTraffic">Paquetes perdidos: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%)</string>
- <string name="AboutTime">[month, datetime, slt] [day, datetime, slt] [year, datetime, slt] [hour, datetime, slt]:[min, datetime, slt]:[second,datetime,slt]</string>
- <string name="ErrorFetchingServerReleaseNotesURL">Error al obtener la URL de las notas de la versión del servidor.</string>
- <string name="BuildConfiguration">Configuración de constitución</string>
- <string name="ProgressRestoring">Restaurando...</string>
- <string name="ProgressChangingResolution">Cambiando la resolución...</string>
- <string name="Fullbright">Brillo al máximo (antiguo)</string>
- <string name="LoginInProgress">Iniciando la sesión. [APP_NAME] debe de aparecer congelado. Por favor, espere.</string>
- <string name="LoginInProgressNoFrozen">Iniciando la sesión...</string>
- <string name="LoginAuthenticating">Autenticando</string>
- <string name="LoginMaintenance">Realizando el mantenimiento de la cuenta...</string>
- <string name="LoginAttempt">Ha fallado el intento previo de iniciar sesión. Iniciando sesión, intento [NUMBER]</string>
- <string name="LoginPrecaching">Cargando el mundo...</string>
- <string name="LoginInitializingBrowser">Iniciando el navegador web incorporado...</string>
- <string name="LoginInitializingMultimedia">Iniciando multimedia...</string>
- <string name="LoginInitializingFonts">Cargando las fuentes...</string>
- <string name="LoginVerifyingCache">Comprobando los archivos de la caché (puede tardar entre 60 y 90 segundos)...</string>
- <string name="LoginProcessingResponse">Procesando la respuesta...</string>
- <string name="LoginInitializingWorld">Iniciando el mundo...</string>
- <string name="LoginDecodingImages">Decodificando las imágenes...</string>
- <string name="LoginInitializingQuicktime">Iniciando QuickTime...</string>
- <string name="LoginQuicktimeNotFound">No se ha encontrado QuickTime. Imposible iniciarlo.</string>
- <string name="LoginQuicktimeOK">QuickTime se ha iniciado adecuadamente.</string>
- <string name="LoginRequestSeedCapGrant">Solicitando capacidades de la región...</string>
- <string name="LoginRetrySeedCapGrant">Solicitando capacidades de la región, intento [NUMBER]...</string>
- <string name="LoginWaitingForRegionHandshake">Esperando la conexión con la región...</string>
- <string name="LoginConnectingToRegion">Conectando con la región...</string>
- <string name="LoginDownloadingClothing">Descargando la ropa...</string>
- <string name="InvalidCertificate">El servidor devolvió un certificado no válido o dañado. Ponte en contacto con el administrador de la cuadrícula.</string>
- <string name="CertInvalidHostname">El nombre de host utilizado para acceder al servidor no es válido. Comprueba tu SLURL o el nombre de host de la cuadrícula.</string>
- <string name="CertExpired">Parece que el certificado que devolvió la cuadrícula está caducado. Comprueba el reloj del sistema o consulta al administrador de la cuadrícula.</string>
- <string name="CertKeyUsage">El certificado que devolvió el servidor no puede utilizarse para SSL. Ponte en contacto con el administrador de la cuadrícula.</string>
- <string name="CertBasicConstraints">La cadena de certificado del servidor contenía demasiados certificados. Ponte en contacto con el administrador de la cuadrícula.</string>
- <string name="CertInvalidSignature">No se pudo verificar la firma del certificado devuelta por el servidor de la cuadrícula. Ponte en contacto con el administrador de la cuadrícula.</string>
- <string name="LoginFailedNoNetwork">Error de red: no se ha podido conectar; por favor, revisa tu conexión a internet.</string>
- <string name="LoginFailedHeader">Error en el inicio de sesión.</string>
- <string name="Quit">Salir</string>
- <string name="create_account_url">http://join.secondlife.com/?sourceid=[sourceid]</string>
- <string name="AgniGridLabel">Grid principal de Second Life (Agni)</string>
- <string name="AditiGridLabel">Grid de prueba beta de Second Life (Aditi)</string>
- <string name="ViewerDownloadURL">http://secondlife.com/download.</string>
- <string name="LoginFailedViewerNotPermitted">Ya no puedes acceder a Second Life con el visor que estás utilizando. Visita la siguiente página para descargar un nuevo visor:
+Versión del servidor de voz: [VOICE_VERSION]
+ </string>
+ <string name="AboutTraffic">
+ Paquetes perdidos: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%)
+ </string>
+ <string name="AboutTime">
+ [month, datetime, slt] [day, datetime, slt] [year, datetime, slt] [hour, datetime, slt]:[min, datetime, slt]:[second,datetime,slt]
+ </string>
+ <string name="ErrorFetchingServerReleaseNotesURL">
+ Error al obtener la URL de las notas de la versión del servidor.
+ </string>
+ <string name="BuildConfiguration">
+ Configuración de constitución
+ </string>
+ <string name="ProgressRestoring">
+ Restaurando...
+ </string>
+ <string name="ProgressChangingResolution">
+ Cambiando la resolución...
+ </string>
+ <string name="Fullbright">
+ Brillo al máximo (antiguo)
+ </string>
+ <string name="LoginInProgress">
+ Iniciando la sesión. [APP_NAME] debe de aparecer congelado. Por favor, espere.
+ </string>
+ <string name="LoginInProgressNoFrozen">
+ Iniciando la sesión...
+ </string>
+ <string name="LoginAuthenticating">
+ Autenticando
+ </string>
+ <string name="LoginMaintenance">
+ Realizando el mantenimiento de la cuenta...
+ </string>
+ <string name="LoginAttempt">
+ Ha fallado el intento previo de iniciar sesión. Iniciando sesión, intento [NUMBER]
+ </string>
+ <string name="LoginPrecaching">
+ Cargando el mundo...
+ </string>
+ <string name="LoginInitializingBrowser">
+ Iniciando el navegador web incorporado...
+ </string>
+ <string name="LoginInitializingMultimedia">
+ Iniciando multimedia...
+ </string>
+ <string name="LoginInitializingFonts">
+ Cargando las fuentes...
+ </string>
+ <string name="LoginVerifyingCache">
+ Comprobando los archivos de la caché (puede tardar entre 60 y 90 segundos)...
+ </string>
+ <string name="LoginProcessingResponse">
+ Procesando la respuesta...
+ </string>
+ <string name="LoginInitializingWorld">
+ Iniciando el mundo...
+ </string>
+ <string name="LoginDecodingImages">
+ Decodificando las imágenes...
+ </string>
+ <string name="LoginInitializingQuicktime">
+ Iniciando QuickTime...
+ </string>
+ <string name="LoginQuicktimeNotFound">
+ No se ha encontrado QuickTime. Imposible iniciarlo.
+ </string>
+ <string name="LoginQuicktimeOK">
+ QuickTime se ha iniciado adecuadamente.
+ </string>
+ <string name="LoginRequestSeedCapGrant">
+ Solicitando capacidades de la región...
+ </string>
+ <string name="LoginRetrySeedCapGrant">
+ Solicitando capacidades de la región, intento [NUMBER]...
+ </string>
+ <string name="LoginWaitingForRegionHandshake">
+ Esperando la conexión con la región...
+ </string>
+ <string name="LoginConnectingToRegion">
+ Conectando con la región...
+ </string>
+ <string name="LoginDownloadingClothing">
+ Descargando la ropa...
+ </string>
+ <string name="InvalidCertificate">
+ El servidor devolvió un certificado no válido o dañado. Ponte en contacto con el administrador de la cuadrícula.
+ </string>
+ <string name="CertInvalidHostname">
+ El nombre de host utilizado para acceder al servidor no es válido. Comprueba tu SLURL o el nombre de host de la cuadrícula.
+ </string>
+ <string name="CertExpired">
+ Parece que el certificado que devolvió la cuadrícula está caducado. Comprueba el reloj del sistema o consulta al administrador de la cuadrícula.
+ </string>
+ <string name="CertKeyUsage">
+ El certificado que devolvió el servidor no puede utilizarse para SSL. Ponte en contacto con el administrador de la cuadrícula.
+ </string>
+ <string name="CertBasicConstraints">
+ La cadena de certificado del servidor contenía demasiados certificados. Ponte en contacto con el administrador de la cuadrícula.
+ </string>
+ <string name="CertInvalidSignature">
+ No se pudo verificar la firma del certificado devuelta por el servidor de la cuadrícula. Ponte en contacto con el administrador de la cuadrícula.
+ </string>
+ <string name="LoginFailedNoNetwork">
+ Error de red: no se ha podido conectar; por favor, revisa tu conexión a internet.
+ </string>
+ <string name="LoginFailedHeader">
+ Error en el inicio de sesión.
+ </string>
+ <string name="Quit">
+ Salir
+ </string>
+ <string name="create_account_url">
+ http://join.secondlife.com/?sourceid=[sourceid]
+ </string>
+ <string name="AgniGridLabel">
+ Grid principal de Second Life (Agni)
+ </string>
+ <string name="AditiGridLabel">
+ Grid de prueba beta de Second Life (Aditi)
+ </string>
+ <string name="ViewerDownloadURL">
+ http://secondlife.com/download.
+ </string>
+ <string name="LoginFailedViewerNotPermitted">
+ Ya no puedes acceder a Second Life con el visor que estás utilizando. Visita la siguiente página para descargar un nuevo visor:
http://secondlife.com/download.
Si deseas obtener más información, consulta las preguntas frecuentes que aparecen a continuación:
-http://secondlife.com/viewer-access-faq</string>
- <string name="LoginIntermediateOptionalUpdateAvailable">Actualización opcional del visor disponible: [VERSION]</string>
- <string name="LoginFailedRequiredUpdate">Actualización necesaria del visor: [VERSION]</string>
- <string name="LoginFailedAlreadyLoggedIn">El agente ya ha iniciado sesión.</string>
- <string name="LoginFailedAuthenticationFailed">Lo sentimos. No ha sido posible iniciar sesión.
+http://secondlife.com/viewer-access-faq
+ </string>
+ <string name="LoginIntermediateOptionalUpdateAvailable">
+ Actualización opcional del visor disponible: [VERSION]
+ </string>
+ <string name="LoginFailedRequiredUpdate">
+ Actualización necesaria del visor: [VERSION]
+ </string>
+ <string name="LoginFailedAlreadyLoggedIn">
+ El agente ya ha iniciado sesión.
+ </string>
+ <string name="LoginFailedAuthenticationFailed">
+ Lo sentimos. No ha sido posible iniciar sesión.
Comprueba si has introducido correctamente
* El nombre de usuario (como juangarcia12 o estrella.polar)
* Contraseña
-Asimismo, asegúrate de que la tecla Mayús esté desactivada.</string>
- <string name="LoginFailedPasswordChanged">Como precaución de seguridad, se ha modificado tu contraseña.
+Asimismo, asegúrate de que la tecla Mayús esté desactivada.
+ </string>
+ <string name="LoginFailedPasswordChanged">
+ Como precaución de seguridad, se ha modificado tu contraseña.
Dirígete a la página de tu cuenta en http://secondlife.com/password
y responde a la pregunta de seguridad para restablecer la contraseña.
-Lamentamos las molestias.</string>
- <string name="LoginFailedPasswordReset">Hemos realizado unos cambios en nuestro sistema, por lo que deberás restablecer la contraseña.
+Lamentamos las molestias.
+ </string>
+ <string name="LoginFailedPasswordReset">
+ Hemos realizado unos cambios en nuestro sistema, por lo que deberás restablecer la contraseña.
Dirígete a la página de tu cuenta en http://secondlife.com/password
y responde a la pregunta de seguridad para restablecer la contraseña.
-Lamentamos las molestias.</string>
- <string name="LoginFailedEmployeesOnly">Second Life no está disponible temporalmente debido a tareas de mantenimiento.
+Lamentamos las molestias.
+ </string>
+ <string name="LoginFailedEmployeesOnly">
+ Second Life no está disponible temporalmente debido a tareas de mantenimiento.
Actualmente, solo se permite iniciar sesión a los empleados.
-Consulta www.secondlife.com/status si deseas obtener actualizaciones.</string>
- <string name="LoginFailedPremiumOnly">Las conexiones a Second Life se han restringido provisionalmente para garantizar que los usuarios que ya están conectados tengan la mejor experiencia posible.
+Consulta www.secondlife.com/status si deseas obtener actualizaciones.
+ </string>
+ <string name="LoginFailedPremiumOnly">
+ Las conexiones a Second Life se han restringido provisionalmente para garantizar que los usuarios que ya están conectados tengan la mejor experiencia posible.
-Durante este tiempo, las personas con cuentas gratuitas no podrán acceder a Second Life, ya que tienen prioridad los usuarios con una cuenta de pago.</string>
- <string name="LoginFailedComputerProhibited">No se puede acceder a Second Life desde este ordenador.
+Durante este tiempo, las personas con cuentas gratuitas no podrán acceder a Second Life, ya que tienen prioridad los usuarios con una cuenta de pago.
+ </string>
+ <string name="LoginFailedComputerProhibited">
+ No se puede acceder a Second Life desde este ordenador.
Si crees que se trata de un error, ponte en contacto con
-support@secondlife.com.</string>
- <string name="LoginFailedAcountSuspended">No se podrá acceder a tu cuenta hasta las
-[TIME] (horario de la costa del Pacífico).</string>
- <string name="LoginFailedAccountDisabled">En este momento no podemos completar la solicitud.
-Por favor solicita ayuda al personal de asistencia de Second Life en http://support.secondlife.com.</string>
- <string name="LoginFailedTransformError">Se han detectado datos incorrectos en el inicio de sesión.
-Ponte en contacto con support@secondlife.com.</string>
- <string name="LoginFailedAccountMaintenance">Se están realizando tareas rutinarias de mantenimiento en tu cuenta.
+support@secondlife.com.
+ </string>
+ <string name="LoginFailedAcountSuspended">
+ No se podrá acceder a tu cuenta hasta las
+[TIME] (horario de la costa del Pacífico).
+ </string>
+ <string name="LoginFailedAccountDisabled">
+ En este momento no podemos completar la solicitud.
+Por favor solicita ayuda al personal de asistencia de Second Life en http://support.secondlife.com.
+ </string>
+ <string name="LoginFailedTransformError">
+ Se han detectado datos incorrectos en el inicio de sesión.
+Ponte en contacto con support@secondlife.com.
+ </string>
+ <string name="LoginFailedAccountMaintenance">
+ Se están realizando tareas rutinarias de mantenimiento en tu cuenta.
No se podrá acceder a tu cuenta hasta las
[TIME] (horario de la costa del Pacífico).
-Si crees que se trata de un error, ponte en contacto con support@secondlife.com.</string>
- <string name="LoginFailedPendingLogoutFault">La solicitud de cierre de sesión ha obtenido como resultado un error del simulador.</string>
- <string name="LoginFailedPendingLogout">El sistema te desconectará.
-Por favor, aguarda un momento antes de intentar conectarte nuevamente.</string>
- <string name="LoginFailedUnableToCreateSession">No se ha podido crear una sesión válida.</string>
- <string name="LoginFailedUnableToConnectToSimulator">No se ha podido establecer la conexión con un simulador.</string>
- <string name="LoginFailedRestrictedHours">Tu cuenta solo puede acceder a Second Life
+Si crees que se trata de un error, ponte en contacto con support@secondlife.com.
+ </string>
+ <string name="LoginFailedPendingLogoutFault">
+ La solicitud de cierre de sesión ha obtenido como resultado un error del simulador.
+ </string>
+ <string name="LoginFailedPendingLogout">
+ El sistema te desconectará.
+Por favor, aguarda un momento antes de intentar conectarte nuevamente.
+ </string>
+ <string name="LoginFailedUnableToCreateSession">
+ No se ha podido crear una sesión válida.
+ </string>
+ <string name="LoginFailedUnableToConnectToSimulator">
+ No se ha podido establecer la conexión con un simulador.
+ </string>
+ <string name="LoginFailedRestrictedHours">
+ Tu cuenta solo puede acceder a Second Life
entre las [START] y las [END] (horario de la costa del Pacífico).
Inténtalo de nuevo durante ese horario.
-Si crees que se trata de un error, ponte en contacto con support@secondlife.com.</string>
- <string name="LoginFailedIncorrectParameters">Parámetros incorrectos.
-Si crees que se trata de un error, ponte en contacto con support@secondlife.com.</string>
- <string name="LoginFailedFirstNameNotAlphanumeric">El parámetro correspondiente al nombre debe contener caracteres alfanuméricos.
-Si crees que se trata de un error, ponte en contacto con support@secondlife.com.</string>
- <string name="LoginFailedLastNameNotAlphanumeric">El parámetro correspondiente al apellido debe contener caracteres alfanuméricos.
-Si crees que se trata de un error, ponte en contacto con support@secondlife.com.</string>
- <string name="LogoutFailedRegionGoingOffline">La región se está desconectando.
-Intenta iniciar sesión de nuevo en unos instantes.</string>
- <string name="LogoutFailedAgentNotInRegion">El agente no se encuentra en la región.
-Intenta iniciar sesión de nuevo en unos instantes.</string>
- <string name="LogoutFailedPendingLogin">A esta región ya se ha accedido en otra sesión.
-Intenta iniciar sesión de nuevo en unos instantes.</string>
- <string name="LogoutFailedLoggingOut">Se ha salido de la región en la sesión anterior.
-Intenta iniciar sesión de nuevo en unos instantes.</string>
- <string name="LogoutFailedStillLoggingOut">La región aún está cerrando la sesión anterior.
-Intenta iniciar sesión de nuevo en unos instantes.</string>
- <string name="LogoutSucceeded">Se ha salido de la región en la última sesión.
-Intenta iniciar sesión de nuevo en unos instantes.</string>
- <string name="LogoutFailedLogoutBegun">La región ha comenzado el proceso de cierre de sesión.
-Intenta iniciar sesión de nuevo en unos instantes.</string>
- <string name="LoginFailedLoggingOutSession">El sistema ha comenzado a cerrar la última sesión.
-Intenta iniciar sesión de nuevo en unos instantes.</string>
- <string name="AgentLostConnection">Esta región puede estar teniendo problemas. Por favor, comprueba tu conexión a Internet.</string>
- <string name="SavingSettings">Guardando tus configuraciones...</string>
- <string name="LoggingOut">Cerrando sesión...</string>
- <string name="ShuttingDown">Cerrando...</string>
- <string name="YouHaveBeenDisconnected">Has sido desconectado de la región en la que estabas.</string>
- <string name="SentToInvalidRegion">Has sido enviado a una región no válida.</string>
- <string name="TestingDisconnect">Probando la desconexión del visor</string>
- <string name="SocialFacebookConnecting">Conectando con Facebook...</string>
- <string name="SocialFacebookPosting">Publicando...</string>
- <string name="SocialFacebookDisconnecting">Desconectando de Facebook...</string>
- <string name="SocialFacebookErrorConnecting">Problema al conectar con Facebook</string>
- <string name="SocialFacebookErrorPosting">Problema al publicar en Facebook</string>
- <string name="SocialFacebookErrorDisconnecting">Problema al desconectar de Facebook</string>
- <string name="SocialFlickrConnecting">Conectándose a Flickr...</string>
- <string name="SocialFlickrPosting">Publicando...</string>
- <string name="SocialFlickrDisconnecting">Desconectándose de Flickr...</string>
- <string name="SocialFlickrErrorConnecting">Problema con la conexión a Flickr</string>
- <string name="SocialFlickrErrorPosting">Problema al publicar en Flickr</string>
- <string name="SocialFlickrErrorDisconnecting">Problema con la desconexión de Flickr</string>
- <string name="SocialTwitterConnecting">Conectándose a Twitter...</string>
- <string name="SocialTwitterPosting">Publicando...</string>
- <string name="SocialTwitterDisconnecting">Desconectándose de Twitter...</string>
- <string name="SocialTwitterErrorConnecting">Problema con la conexión a Twitter</string>
- <string name="SocialTwitterErrorPosting">Problema al publicar en Twitter</string>
- <string name="SocialTwitterErrorDisconnecting">Problema con la desconexión de Twitter</string>
- <string name="BlackAndWhite">Blanco y negro</string>
- <string name="Colors1970">Colores de los 70</string>
- <string name="Intense">Intenso</string>
- <string name="Newspaper">Periódico</string>
- <string name="Sepia">Sepia</string>
- <string name="Spotlight">Foco</string>
- <string name="Video">Vídeo</string>
- <string name="Autocontrast">Contraste automático</string>
- <string name="LensFlare">Destello de lente</string>
- <string name="Miniature">Miniatura</string>
- <string name="Toycamera">Cámara de juguete</string>
- <string name="TooltipPerson">Persona</string>
- <string name="TooltipNoName">(sin nombre)</string>
- <string name="TooltipOwner">Propietario:</string>
- <string name="TooltipPublic">Público</string>
- <string name="TooltipIsGroup">(Grupo)</string>
- <string name="TooltipForSaleL$">En venta: [AMOUNT] L$</string>
- <string name="TooltipFlagGroupBuild">Construir el grupo</string>
- <string name="TooltipFlagNoBuild">No construir</string>
- <string name="TooltipFlagNoEdit">Construir el grupo</string>
- <string name="TooltipFlagNotSafe">No seguro</string>
- <string name="TooltipFlagNoFly">No volar</string>
- <string name="TooltipFlagGroupScripts">Scripts el grupo</string>
- <string name="TooltipFlagNoScripts">No scripts</string>
- <string name="TooltipLand">Terreno:</string>
- <string name="TooltipMustSingleDrop">Aquí se puede arrastrar sólo un ítem</string>
- <string name="TooltipTooManyWearables">No puedes tener una carpeta de prendas que contenga más de [AMOUNT] elementos. Puedes cambiar este límite en Avanzado &gt; Mostrar las configuraciones del depurador &gt; WearFolderLimit.</string>
+Si crees que se trata de un error, ponte en contacto con support@secondlife.com.
+ </string>
+ <string name="LoginFailedIncorrectParameters">
+ Parámetros incorrectos.
+Si crees que se trata de un error, ponte en contacto con support@secondlife.com.
+ </string>
+ <string name="LoginFailedFirstNameNotAlphanumeric">
+ El parámetro correspondiente al nombre debe contener caracteres alfanuméricos.
+Si crees que se trata de un error, ponte en contacto con support@secondlife.com.
+ </string>
+ <string name="LoginFailedLastNameNotAlphanumeric">
+ El parámetro correspondiente al apellido debe contener caracteres alfanuméricos.
+Si crees que se trata de un error, ponte en contacto con support@secondlife.com.
+ </string>
+ <string name="LogoutFailedRegionGoingOffline">
+ La región se está desconectando.
+Intenta iniciar sesión de nuevo en unos instantes.
+ </string>
+ <string name="LogoutFailedAgentNotInRegion">
+ El agente no se encuentra en la región.
+Intenta iniciar sesión de nuevo en unos instantes.
+ </string>
+ <string name="LogoutFailedPendingLogin">
+ A esta región ya se ha accedido en otra sesión.
+Intenta iniciar sesión de nuevo en unos instantes.
+ </string>
+ <string name="LogoutFailedLoggingOut">
+ Se ha salido de la región en la sesión anterior.
+Intenta iniciar sesión de nuevo en unos instantes.
+ </string>
+ <string name="LogoutFailedStillLoggingOut">
+ La región aún está cerrando la sesión anterior.
+Intenta iniciar sesión de nuevo en unos instantes.
+ </string>
+ <string name="LogoutSucceeded">
+ Se ha salido de la región en la última sesión.
+Intenta iniciar sesión de nuevo en unos instantes.
+ </string>
+ <string name="LogoutFailedLogoutBegun">
+ La región ha comenzado el proceso de cierre de sesión.
+Intenta iniciar sesión de nuevo en unos instantes.
+ </string>
+ <string name="LoginFailedLoggingOutSession">
+ El sistema ha comenzado a cerrar la última sesión.
+Intenta iniciar sesión de nuevo en unos instantes.
+ </string>
+ <string name="AgentLostConnection">
+ Esta región puede estar teniendo problemas. Por favor, comprueba tu conexión a Internet.
+ </string>
+ <string name="SavingSettings">
+ Guardando tus configuraciones...
+ </string>
+ <string name="LoggingOut">
+ Cerrando sesión...
+ </string>
+ <string name="ShuttingDown">
+ Cerrando...
+ </string>
+ <string name="YouHaveBeenDisconnected">
+ Has sido desconectado de la región en la que estabas.
+ </string>
+ <string name="SentToInvalidRegion">
+ Has sido enviado a una región no válida.
+ </string>
+ <string name="TestingDisconnect">
+ Probando la desconexión del visor
+ </string>
+ <string name="SocialFacebookConnecting">
+ Conectando con Facebook...
+ </string>
+ <string name="SocialFacebookPosting">
+ Publicando...
+ </string>
+ <string name="SocialFacebookDisconnecting">
+ Desconectando de Facebook...
+ </string>
+ <string name="SocialFacebookErrorConnecting">
+ Problema al conectar con Facebook
+ </string>
+ <string name="SocialFacebookErrorPosting">
+ Problema al publicar en Facebook
+ </string>
+ <string name="SocialFacebookErrorDisconnecting">
+ Problema al desconectar de Facebook
+ </string>
+ <string name="SocialFlickrConnecting">
+ Conectándose a Flickr...
+ </string>
+ <string name="SocialFlickrPosting">
+ Publicando...
+ </string>
+ <string name="SocialFlickrDisconnecting">
+ Desconectándose de Flickr...
+ </string>
+ <string name="SocialFlickrErrorConnecting">
+ Problema con la conexión a Flickr
+ </string>
+ <string name="SocialFlickrErrorPosting">
+ Problema al publicar en Flickr
+ </string>
+ <string name="SocialFlickrErrorDisconnecting">
+ Problema con la desconexión de Flickr
+ </string>
+ <string name="SocialTwitterConnecting">
+ Conectándose a Twitter...
+ </string>
+ <string name="SocialTwitterPosting">
+ Publicando...
+ </string>
+ <string name="SocialTwitterDisconnecting">
+ Desconectándose de Twitter...
+ </string>
+ <string name="SocialTwitterErrorConnecting">
+ Problema con la conexión a Twitter
+ </string>
+ <string name="SocialTwitterErrorPosting">
+ Problema al publicar en Twitter
+ </string>
+ <string name="SocialTwitterErrorDisconnecting">
+ Problema con la desconexión de Twitter
+ </string>
+ <string name="BlackAndWhite">
+ Blanco y negro
+ </string>
+ <string name="Colors1970">
+ Colores de los 70
+ </string>
+ <string name="Intense">
+ Intenso
+ </string>
+ <string name="Newspaper">
+ Periódico
+ </string>
+ <string name="Sepia">
+ Sepia
+ </string>
+ <string name="Spotlight">
+ Foco
+ </string>
+ <string name="Video">
+ Vídeo
+ </string>
+ <string name="Autocontrast">
+ Contraste automático
+ </string>
+ <string name="LensFlare">
+ Destello de lente
+ </string>
+ <string name="Miniature">
+ Miniatura
+ </string>
+ <string name="Toycamera">
+ Cámara de juguete
+ </string>
+ <string name="TooltipPerson">
+ Persona
+ </string>
+ <string name="TooltipNoName">
+ (sin nombre)
+ </string>
+ <string name="TooltipOwner">
+ Propietario:
+ </string>
+ <string name="TooltipPublic">
+ Público
+ </string>
+ <string name="TooltipIsGroup">
+ (Grupo)
+ </string>
+ <string name="TooltipForSaleL$">
+ En venta: [AMOUNT] L$
+ </string>
+ <string name="TooltipFlagGroupBuild">
+ Construir el grupo
+ </string>
+ <string name="TooltipFlagNoBuild">
+ No construir
+ </string>
+ <string name="TooltipFlagNoEdit">
+ Construir el grupo
+ </string>
+ <string name="TooltipFlagNotSafe">
+ No seguro
+ </string>
+ <string name="TooltipFlagNoFly">
+ No volar
+ </string>
+ <string name="TooltipFlagGroupScripts">
+ Scripts el grupo
+ </string>
+ <string name="TooltipFlagNoScripts">
+ No scripts
+ </string>
+ <string name="TooltipLand">
+ Terreno:
+ </string>
+ <string name="TooltipMustSingleDrop">
+ Aquí se puede arrastrar sólo un ítem
+ </string>
+ <string name="TooltipTooManyWearables">
+ No puedes tener una carpeta de prendas que contenga más de [AMOUNT] elementos. Puedes cambiar este límite en Avanzado &gt; Mostrar las configuraciones del depurador &gt; WearFolderLimit.
+ </string>
<string name="TooltipPrice" value="[AMOUNT] L$:"/>
- <string name="TooltipSLIcon">Esto crea un vínculo a una página del dominio oficial SecondLife.com o LindenLab.com.</string>
- <string name="TooltipOutboxDragToWorld">No se pueden mostrar artículos desde la carpeta Artículos del mercado</string>
- <string name="TooltipOutboxWorn">Los artículos que tienes puestos no se pueden colocar en la carpeta Artículos del mercado</string>
- <string name="TooltipOutboxFolderLevels">La profundidad de carpetas anidadas excede de [AMOUNT]. Disminuye la profundidad de las carpetas anidadas; si es necesario, agrupa los artículos.</string>
- <string name="TooltipOutboxTooManyFolders">La cantidad de subcarpetas excede de [AMOUNT]. Disminuye la cantidad de carpetas de tu lista de artículos; si es necesario, agrupa los artículos.</string>
- <string name="TooltipOutboxTooManyObjects">La cantidad de artículos excede de [AMOUNT]. Para vender más de [AMOUNT] artículos en la misma lista, debes agrupar algunos.</string>
- <string name="TooltipOutboxTooManyStockItems">La cantidad de artículos en stock excede de [AMOUNT].</string>
- <string name="TooltipOutboxCannotDropOnRoot">Solo se pueden soltar artículos o carpetas en las pestañas TODOS o SIN ASOCIAR. Selecciona una de estas pestañas y mueve otra vez los artículos o carpetas.</string>
- <string name="TooltipOutboxNoTransfer">Uno o varios de estos objetos no se pueden vender o transferir</string>
- <string name="TooltipOutboxNotInInventory">Solo puedes colocar en el mercado artículos de tu inventario</string>
- <string name="TooltipOutboxLinked">No puedes poner carpetas o artículos vinculados en el Mercado</string>
- <string name="TooltipOutboxCallingCard">No puedes colocar tarjetas de visita en el Mercado</string>
- <string name="TooltipOutboxDragActive">No se puede mover una lista de artículos publicada</string>
- <string name="TooltipOutboxCannotMoveRoot">No se puede mover la carpeta raíz de artículos del Mercado</string>
- <string name="TooltipOutboxMixedStock">Todos los artículos de una carpeta de stock deben tener el mismo tipo y permiso</string>
- <string name="TooltipDragOntoOwnChild">No puedes mover una carpeta a su carpeta secundaria</string>
- <string name="TooltipDragOntoSelf">No puedes mover una carpeta dentro de sí misma</string>
- <string name="TooltipHttpUrl">Pulsa para ver esta página web</string>
- <string name="TooltipSLURL">Pulsa para ver la información de este lugar</string>
- <string name="TooltipAgentUrl">Pulsa para ver el perfil del Residente</string>
- <string name="TooltipAgentInspect">Obtén más información acerca de este residente.</string>
- <string name="TooltipAgentMute">Pulsa para silenciar a este Residente</string>
- <string name="TooltipAgentUnmute">Pulsa para quitar el silencio a este Residente</string>
- <string name="TooltipAgentIM">Pulsa para enviar un MI a este Residente</string>
- <string name="TooltipAgentPay">Pulsa para pagar a este Residente</string>
- <string name="TooltipAgentOfferTeleport">Pulsa para enviar una petición de teleporte a este Residente</string>
- <string name="TooltipAgentRequestFriend">Pulsa para enviar una petición de amistad a este Residente</string>
- <string name="TooltipGroupUrl">Pulsa para ver la descripción de este grupo</string>
- <string name="TooltipEventUrl">Pulsa para ver la descripción de este evento</string>
- <string name="TooltipClassifiedUrl">Pulsa para ver este clasificado</string>
- <string name="TooltipParcelUrl">Pulsa para ver la descripción de esta parcela</string>
- <string name="TooltipTeleportUrl">Pulsa para teleportarte a esta posición</string>
- <string name="TooltipObjectIMUrl">Pulsa para ver la descripción de este objeto</string>
- <string name="TooltipMapUrl">Pulsa para ver en el mapa esta localización</string>
- <string name="TooltipSLAPP">Pulsa para ejecutar el comando secondlife://</string>
+ <string name="TooltipSLIcon">
+ Esto crea un vínculo a una página del dominio oficial SecondLife.com o LindenLab.com.
+ </string>
+ <string name="TooltipOutboxDragToWorld">
+ No se pueden mostrar artículos desde la carpeta Artículos del mercado
+ </string>
+ <string name="TooltipOutboxWorn">
+ Los artículos que tienes puestos no se pueden colocar en la carpeta Artículos del mercado
+ </string>
+ <string name="TooltipOutboxFolderLevels">
+ La profundidad de carpetas anidadas excede de [AMOUNT]. Disminuye la profundidad de las carpetas anidadas; si es necesario, agrupa los artículos.
+ </string>
+ <string name="TooltipOutboxTooManyFolders">
+ La cantidad de subcarpetas excede de [AMOUNT]. Disminuye la cantidad de carpetas de tu lista de artículos; si es necesario, agrupa los artículos.
+ </string>
+ <string name="TooltipOutboxTooManyObjects">
+ La cantidad de artículos excede de [AMOUNT]. Para vender más de [AMOUNT] artículos en la misma lista, debes agrupar algunos.
+ </string>
+ <string name="TooltipOutboxTooManyStockItems">
+ La cantidad de artículos en stock excede de [AMOUNT].
+ </string>
+ <string name="TooltipOutboxCannotDropOnRoot">
+ Solo se pueden soltar artículos o carpetas en las pestañas TODOS o SIN ASOCIAR. Selecciona una de estas pestañas y mueve otra vez los artículos o carpetas.
+ </string>
+ <string name="TooltipOutboxNoTransfer">
+ Uno o varios de estos objetos no se pueden vender o transferir
+ </string>
+ <string name="TooltipOutboxNotInInventory">
+ Solo puedes colocar en el mercado artículos de tu inventario
+ </string>
+ <string name="TooltipOutboxLinked">
+ No puedes poner carpetas o artículos vinculados en el Mercado
+ </string>
+ <string name="TooltipOutboxCallingCard">
+ No puedes colocar tarjetas de visita en el Mercado
+ </string>
+ <string name="TooltipOutboxDragActive">
+ No se puede mover una lista de artículos publicada
+ </string>
+ <string name="TooltipOutboxCannotMoveRoot">
+ No se puede mover la carpeta raíz de artículos del Mercado
+ </string>
+ <string name="TooltipOutboxMixedStock">
+ Todos los artículos de una carpeta de stock deben tener el mismo tipo y permiso
+ </string>
+ <string name="TooltipDragOntoOwnChild">
+ No puedes mover una carpeta a su carpeta secundaria
+ </string>
+ <string name="TooltipDragOntoSelf">
+ No puedes mover una carpeta dentro de sí misma
+ </string>
+ <string name="TooltipHttpUrl">
+ Pulsa para ver esta página web
+ </string>
+ <string name="TooltipSLURL">
+ Pulsa para ver la información de este lugar
+ </string>
+ <string name="TooltipAgentUrl">
+ Pulsa para ver el perfil del Residente
+ </string>
+ <string name="TooltipAgentInspect">
+ Obtén más información acerca de este residente.
+ </string>
+ <string name="TooltipAgentMute">
+ Pulsa para silenciar a este Residente
+ </string>
+ <string name="TooltipAgentUnmute">
+ Pulsa para quitar el silencio a este Residente
+ </string>
+ <string name="TooltipAgentIM">
+ Pulsa para enviar un MI a este Residente
+ </string>
+ <string name="TooltipAgentPay">
+ Pulsa para pagar a este Residente
+ </string>
+ <string name="TooltipAgentOfferTeleport">
+ Pulsa para enviar una petición de teleporte a este Residente
+ </string>
+ <string name="TooltipAgentRequestFriend">
+ Pulsa para enviar una petición de amistad a este Residente
+ </string>
+ <string name="TooltipGroupUrl">
+ Pulsa para ver la descripción de este grupo
+ </string>
+ <string name="TooltipEventUrl">
+ Pulsa para ver la descripción de este evento
+ </string>
+ <string name="TooltipClassifiedUrl">
+ Pulsa para ver este clasificado
+ </string>
+ <string name="TooltipParcelUrl">
+ Pulsa para ver la descripción de esta parcela
+ </string>
+ <string name="TooltipTeleportUrl">
+ Pulsa para teleportarte a esta posición
+ </string>
+ <string name="TooltipObjectIMUrl">
+ Pulsa para ver la descripción de este objeto
+ </string>
+ <string name="TooltipMapUrl">
+ Pulsa para ver en el mapa esta localización
+ </string>
+ <string name="TooltipSLAPP">
+ Pulsa para ejecutar el comando secondlife://
+ </string>
<string name="CurrentURL" value="URL actual: [CurrentURL]"/>
- <string name="TooltipEmail">Haz clic para redactar un correo electrónico</string>
- <string name="SLurlLabelTeleport">Teleportarse a</string>
- <string name="SLurlLabelShowOnMap">Mostrarla en el mapa</string>
- <string name="SLappAgentMute">Silenciar</string>
- <string name="SLappAgentUnmute">Quitar el silencio</string>
- <string name="SLappAgentIM">MI</string>
- <string name="SLappAgentPay">Pagar</string>
- <string name="SLappAgentOfferTeleport">Ofrecer teleporte a</string>
- <string name="SLappAgentRequestFriend">Petición de amistad</string>
- <string name="SLappAgentRemoveFriend">Eliminación de amigos</string>
- <string name="BUTTON_CLOSE_DARWIN">Cerrar (⌘W)</string>
- <string name="BUTTON_CLOSE_WIN">Cerrar (Ctrl+W)</string>
- <string name="BUTTON_CLOSE_CHROME">Cerrar</string>
- <string name="BUTTON_RESTORE">Maximizar</string>
- <string name="BUTTON_MINIMIZE">Minimizar</string>
- <string name="BUTTON_TEAR_OFF">Separar la ventana</string>
- <string name="BUTTON_DOCK">Fijar</string>
- <string name="BUTTON_HELP">Ver la Ayuda</string>
- <string name="TooltipNotecardNotAllowedTypeDrop">Los objetos de este tipo no se pueden adjuntar
-a las notas de esta región.</string>
- <string name="TooltipNotecardOwnerRestrictedDrop">Sólo los objetos con permisos
+ <string name="TooltipEmail">
+ Haz clic para redactar un correo electrónico
+ </string>
+ <string name="SLurlLabelTeleport">
+ Teleportarse a
+ </string>
+ <string name="SLurlLabelShowOnMap">
+ Mostrarla en el mapa
+ </string>
+ <string name="SLappAgentMute">
+ Silenciar
+ </string>
+ <string name="SLappAgentUnmute">
+ Quitar el silencio
+ </string>
+ <string name="SLappAgentIM">
+ MI
+ </string>
+ <string name="SLappAgentPay">
+ Pagar
+ </string>
+ <string name="SLappAgentOfferTeleport">
+ Ofrecer teleporte a
+ </string>
+ <string name="SLappAgentRequestFriend">
+ Petición de amistad
+ </string>
+ <string name="SLappAgentRemoveFriend">
+ Eliminación de amigos
+ </string>
+ <string name="BUTTON_CLOSE_DARWIN">
+ Cerrar (⌘W)
+ </string>
+ <string name="BUTTON_CLOSE_WIN">
+ Cerrar (Ctrl+W)
+ </string>
+ <string name="BUTTON_CLOSE_CHROME">
+ Cerrar
+ </string>
+ <string name="BUTTON_RESTORE">
+ Maximizar
+ </string>
+ <string name="BUTTON_MINIMIZE">
+ Minimizar
+ </string>
+ <string name="BUTTON_TEAR_OFF">
+ Separar la ventana
+ </string>
+ <string name="BUTTON_DOCK">
+ Fijar
+ </string>
+ <string name="BUTTON_HELP">
+ Ver la Ayuda
+ </string>
+ <string name="TooltipNotecardNotAllowedTypeDrop">
+ Los objetos de este tipo no se pueden adjuntar
+a las notas de esta región.
+ </string>
+ <string name="TooltipNotecardOwnerRestrictedDrop">
+ Sólo los objetos con permisos
«próximo propietario» sin restricciones
-pueden adjuntarse a las notas.</string>
- <string name="Searching">Buscando...</string>
- <string name="NoneFound">No se ha encontrado.</string>
- <string name="RetrievingData">Reintentando...</string>
- <string name="ReleaseNotes">Notas de la versión</string>
- <string name="RELEASE_NOTES_BASE_URL">https://megapahit.net/</string>
- <string name="LoadingData">Cargando...</string>
- <string name="AvatarNameNobody">(nadie)</string>
- <string name="AvatarNameWaiting">(esperando)</string>
- <string name="GroupNameNone">(ninguno)</string>
- <string name="AssetErrorNone">No hay ningún error</string>
- <string name="AssetErrorRequestFailed">Petición de asset: fallida</string>
- <string name="AssetErrorNonexistentFile">Petición de asset: el archivo no existe</string>
- <string name="AssetErrorNotInDatabase">Petición de asset: no se encontró el asset en la base de datos</string>
- <string name="AssetErrorEOF">Fin del archivo</string>
- <string name="AssetErrorCannotOpenFile">No puede abrirse el archivo</string>
- <string name="AssetErrorFileNotFound">No se ha encontrado el archivo</string>
- <string name="AssetErrorTCPTimeout">Tiempo de transferencia del archivo</string>
- <string name="AssetErrorCircuitGone">Circuito desconectado</string>
- <string name="AssetErrorPriceMismatch">No concuerda el precio en el visor y en el servidor</string>
- <string name="AssetErrorUnknownStatus">Estado desconocido</string>
- <string name="AssetUploadServerUnreacheble">El servicio no está disponible.</string>
- <string name="AssetUploadServerDifficulties">Se detectaron errores inesperados en el servidor.</string>
- <string name="AssetUploadServerUnavaliable">El servicio no está disponible o se alcanzó el tiempo de carga máxima.</string>
- <string name="AssetUploadRequestInvalid">Error en la solicitud de carga. Por favor, ingresa a
-http://secondlife.com/support para obtener ayuda sobre cómo solucionar este problema.</string>
- <string name="SettingValidationError">Error en la validación para importar los parámetros [NAME]</string>
- <string name="SettingImportFileError">No se pudo abrir el archivo [FILE]</string>
- <string name="SettingParseFileError">No se pudo abrir el archivo [FILE]</string>
- <string name="SettingTranslateError">No se pudo traducir el Viento de luz legado [NAME]</string>
- <string name="texture">la textura</string>
- <string name="sound">el sonido</string>
- <string name="calling card">la tarjeta de visita</string>
- <string name="landmark">el hito</string>
- <string name="legacy script">el script antiguo</string>
- <string name="clothing">esa ropa</string>
- <string name="object">el objeto</string>
- <string name="note card">la nota</string>
- <string name="folder">la carpeta</string>
- <string name="root">la ruta</string>
- <string name="lsl2 script">ese script de LSL2</string>
- <string name="lsl bytecode">el código intermedio de LSL</string>
- <string name="tga texture">esa textura tga</string>
- <string name="body part">esa parte del cuerpo</string>
- <string name="snapshot">la foto</string>
- <string name="lost and found">Objetos Perdidos</string>
- <string name="targa image">esa imagen targa</string>
- <string name="trash">la Papelera</string>
- <string name="jpeg image">esa imagen jpeg</string>
- <string name="animation">la animación</string>
- <string name="gesture">el gesto</string>
- <string name="simstate">simstate</string>
- <string name="favorite">ese favorito</string>
- <string name="symbolic link">el enlace</string>
- <string name="symbolic folder link">enlace de la carpeta</string>
- <string name="settings blob">opciones</string>
- <string name="mesh">red</string>
- <string name="AvatarEditingAppearance">(Edición de Apariencia)</string>
- <string name="AvatarAway">Ausente</string>
- <string name="AvatarDoNotDisturb">No molestar</string>
- <string name="AvatarMuted">Ignorado</string>
- <string name="anim_express_afraid">Susto</string>
- <string name="anim_express_anger">Enfado</string>
- <string name="anim_away">Ausente</string>
- <string name="anim_backflip">Salto mortal atrás</string>
- <string name="anim_express_laugh">Carcajada</string>
- <string name="anim_express_toothsmile">Gran sonrisa</string>
- <string name="anim_blowkiss">Mandar un beso</string>
- <string name="anim_express_bored">Aburrimiento</string>
- <string name="anim_bow">Reverencia</string>
- <string name="anim_clap">Aplauso</string>
- <string name="anim_courtbow">Reverencia floreada</string>
- <string name="anim_express_cry">Llanto</string>
- <string name="anim_dance1">Baile 1</string>
- <string name="anim_dance2">Baile 2</string>
- <string name="anim_dance3">Baile 3</string>
- <string name="anim_dance4">Baile 4</string>
- <string name="anim_dance5">Baile 5</string>
- <string name="anim_dance6">Baile 6</string>
- <string name="anim_dance7">Baile 7</string>
- <string name="anim_dance8">Baile 8</string>
- <string name="anim_express_disdain">Desdén</string>
- <string name="anim_drink">Beber</string>
- <string name="anim_express_embarrased">Azorarse</string>
- <string name="anim_angry_fingerwag">Negar con el dedo</string>
- <string name="anim_fist_pump">Éxito con el puño</string>
- <string name="anim_yoga_float">Yoga flotando</string>
- <string name="anim_express_frown">Fruncir el ceño</string>
- <string name="anim_impatient">Impaciente</string>
- <string name="anim_jumpforjoy">Salto de alegría</string>
- <string name="anim_kissmybutt">Bésame el culo</string>
- <string name="anim_express_kiss">Besar</string>
- <string name="anim_laugh_short">Reír</string>
- <string name="anim_musclebeach">Sacar músculo</string>
- <string name="anim_no_unhappy">No (con enfado)</string>
- <string name="anim_no_head">No</string>
- <string name="anim_nyanya">Ña-Ña-Ña</string>
- <string name="anim_punch_onetwo">Puñetazo uno-dos</string>
- <string name="anim_express_open_mouth">Abrir la boca</string>
- <string name="anim_peace">'V' con los dedos</string>
- <string name="anim_point_you">Señalar a otro/a</string>
- <string name="anim_point_me">Señalarse</string>
- <string name="anim_punch_l">Puñetazo izquierdo</string>
- <string name="anim_punch_r">Puñetazo derecho</string>
- <string name="anim_rps_countdown">PPT cuenta</string>
- <string name="anim_rps_paper">PPT papel</string>
- <string name="anim_rps_rock">PPT piedra</string>
- <string name="anim_rps_scissors">PPT tijera</string>
- <string name="anim_express_repulsed">Repulsa</string>
- <string name="anim_kick_roundhouse_r">Patada circular</string>
- <string name="anim_express_sad">Triste</string>
- <string name="anim_salute">Saludo militar</string>
- <string name="anim_shout">Gritar</string>
- <string name="anim_express_shrug">Encogerse de hombros</string>
- <string name="anim_express_smile">Sonreír</string>
- <string name="anim_smoke_idle">Fumar: en la mano</string>
- <string name="anim_smoke_inhale">Fumar</string>
- <string name="anim_smoke_throw_down">Fumar: tirar el cigarro</string>
- <string name="anim_express_surprise">Sorpresa</string>
- <string name="anim_sword_strike_r">Estocadas</string>
- <string name="anim_angry_tantrum">Berrinche</string>
- <string name="anim_express_tongue_out">Sacar la lengua</string>
- <string name="anim_hello">Agitar la mano</string>
- <string name="anim_whisper">Cuchichear</string>
- <string name="anim_whistle">Pitar</string>
- <string name="anim_express_wink">Guiño</string>
- <string name="anim_wink_hollywood">Guiño (Hollywood)</string>
- <string name="anim_express_worry">Preocuparse</string>
- <string name="anim_yes_happy">Sí (contento)</string>
- <string name="anim_yes_head">Sí</string>
- <string name="use_texture">Usar textura</string>
- <string name="manip_hint1">Pasa el cursor del ratón sobre la regla</string>
- <string name="manip_hint2">para ajustar a la cuadrícula</string>
- <string name="texture_loading">Cargando...</string>
- <string name="worldmap_offline">Sin conexión</string>
- <string name="worldmap_item_tooltip_format">[PRICE] L$ por [AREA] m²</string>
- <string name="worldmap_results_none_found">No se ha encontrado.</string>
- <string name="Ok">OK</string>
- <string name="Premature end of file">Fin prematuro del archivo</string>
- <string name="ST_NO_JOINT">No se puede encontrar ROOT o JOINT.</string>
- <string name="NearbyChatTitle">Chat</string>
- <string name="NearbyChatLabel">(Chat)</string>
- <string name="whisper">susurra:</string>
- <string name="shout">grita:</string>
- <string name="ringing">Conectando al chat de voz...</string>
- <string name="connected">Conectado</string>
- <string name="unavailable">La voz no está disponible en su localización actual</string>
- <string name="hang_up">Desconectado del chat de voz</string>
- <string name="reconnect_nearby">Vas a ser reconectado al chat de voz con los cercanos</string>
- <string name="ScriptQuestionCautionChatGranted">'[OBJECTNAME]', un objeto propiedad de '[OWNERNAME]', localizado en [REGIONNAME] con la posición [REGIONPOS], ha recibido permiso para: [PERMISSIONS].</string>
- <string name="ScriptQuestionCautionChatDenied">A '[OBJECTNAME]', un objeto propiedad de '[OWNERNAME]', localizado en [REGIONNAME] con la posición [REGIONPOS], se le ha denegado el permiso para: [PERMISSIONS].</string>
- <string name="AdditionalPermissionsRequestHeader">Si autorizas el acceso a tu cuenta, también permitirás al objeto:</string>
- <string name="ScriptTakeMoney">Cogerle a usted dólares Linden (L$)</string>
- <string name="ActOnControlInputs">Actuar en sus controles de entrada</string>
- <string name="RemapControlInputs">Reconfigurar sus controles de entrada</string>
- <string name="AnimateYourAvatar">Ejecutar animaciones en su avatar</string>
- <string name="AttachToYourAvatar">Anexarse a su avatar</string>
- <string name="ReleaseOwnership">Anular la propiedad y que pase a ser público</string>
- <string name="LinkAndDelink">Enlazar y desenlazar de otros objetos</string>
- <string name="AddAndRemoveJoints">Añadir y quitar uniones con otros objetos</string>
- <string name="ChangePermissions">Cambiar sus permisos</string>
- <string name="TrackYourCamera">Seguir su cámara</string>
- <string name="ControlYourCamera">Controlar su cámara</string>
- <string name="TeleportYourAgent">Teleportarte</string>
- <string name="ForceSitAvatar">Forzar que el avatar se siente</string>
- <string name="ChangeEnvSettings">Cambiar tu configuración del entorno</string>
- <string name="AgentNameSubst">(Tú)</string>
+pueden adjuntarse a las notas.
+ </string>
+ <string name="Searching">
+ Buscando...
+ </string>
+ <string name="NoneFound">
+ No se ha encontrado.
+ </string>
+ <string name="RetrievingData">
+ Reintentando...
+ </string>
+ <string name="ReleaseNotes">
+ Notas de la versión
+ </string>
+ <string name="RELEASE_NOTES_BASE_URL">
+ https://megapahit.net/
+ </string>
+ <string name="LoadingData">
+ Cargando...
+ </string>
+ <string name="AvatarNameNobody">
+ (nadie)
+ </string>
+ <string name="AvatarNameWaiting">
+ (esperando)
+ </string>
+ <string name="GroupNameNone">
+ (ninguno)
+ </string>
+ <string name="AssetErrorNone">
+ No hay ningún error
+ </string>
+ <string name="AssetErrorRequestFailed">
+ Petición de asset: fallida
+ </string>
+ <string name="AssetErrorNonexistentFile">
+ Petición de asset: el archivo no existe
+ </string>
+ <string name="AssetErrorNotInDatabase">
+ Petición de asset: no se encontró el asset en la base de datos
+ </string>
+ <string name="AssetErrorEOF">
+ Fin del archivo
+ </string>
+ <string name="AssetErrorCannotOpenFile">
+ No puede abrirse el archivo
+ </string>
+ <string name="AssetErrorFileNotFound">
+ No se ha encontrado el archivo
+ </string>
+ <string name="AssetErrorTCPTimeout">
+ Tiempo de transferencia del archivo
+ </string>
+ <string name="AssetErrorCircuitGone">
+ Circuito desconectado
+ </string>
+ <string name="AssetErrorPriceMismatch">
+ No concuerda el precio en el visor y en el servidor
+ </string>
+ <string name="AssetErrorUnknownStatus">
+ Estado desconocido
+ </string>
+ <string name="AssetUploadServerUnreacheble">
+ El servicio no está disponible.
+ </string>
+ <string name="AssetUploadServerDifficulties">
+ Se detectaron errores inesperados en el servidor.
+ </string>
+ <string name="AssetUploadServerUnavaliable">
+ El servicio no está disponible o se alcanzó el tiempo de carga máxima.
+ </string>
+ <string name="AssetUploadRequestInvalid">
+ Error en la solicitud de carga. Por favor, ingresa a
+http://secondlife.com/support para obtener ayuda sobre cómo solucionar este problema.
+ </string>
+ <string name="SettingValidationError">
+ Error en la validación para importar los parámetros [NAME]
+ </string>
+ <string name="SettingImportFileError">
+ No se pudo abrir el archivo [FILE]
+ </string>
+ <string name="SettingParseFileError">
+ No se pudo abrir el archivo [FILE]
+ </string>
+ <string name="SettingTranslateError">
+ No se pudo traducir el Viento de luz legado [NAME]
+ </string>
+ <string name="texture">
+ la textura
+ </string>
+ <string name="sound">
+ el sonido
+ </string>
+ <string name="calling card">
+ la tarjeta de visita
+ </string>
+ <string name="landmark">
+ el hito
+ </string>
+ <string name="legacy script">
+ el script antiguo
+ </string>
+ <string name="clothing">
+ esa ropa
+ </string>
+ <string name="object">
+ el objeto
+ </string>
+ <string name="note card">
+ la nota
+ </string>
+ <string name="folder">
+ la carpeta
+ </string>
+ <string name="root">
+ la ruta
+ </string>
+ <string name="lsl2 script">
+ ese script de LSL2
+ </string>
+ <string name="lsl bytecode">
+ el código intermedio de LSL
+ </string>
+ <string name="tga texture">
+ esa textura tga
+ </string>
+ <string name="body part">
+ esa parte del cuerpo
+ </string>
+ <string name="snapshot">
+ la foto
+ </string>
+ <string name="lost and found">
+ Objetos Perdidos
+ </string>
+ <string name="targa image">
+ esa imagen targa
+ </string>
+ <string name="trash">
+ la Papelera
+ </string>
+ <string name="jpeg image">
+ esa imagen jpeg
+ </string>
+ <string name="animation">
+ la animación
+ </string>
+ <string name="gesture">
+ el gesto
+ </string>
+ <string name="simstate">
+ simstate
+ </string>
+ <string name="favorite">
+ ese favorito
+ </string>
+ <string name="symbolic link">
+ el enlace
+ </string>
+ <string name="symbolic folder link">
+ enlace de la carpeta
+ </string>
+ <string name="settings blob">
+ opciones
+ </string>
+ <string name="mesh">
+ red
+ </string>
+ <string name="AvatarEditingAppearance">
+ (Edición de Apariencia)
+ </string>
+ <string name="AvatarAway">
+ Ausente
+ </string>
+ <string name="AvatarDoNotDisturb">
+ No molestar
+ </string>
+ <string name="AvatarMuted">
+ Ignorado
+ </string>
+ <string name="anim_express_afraid">
+ Susto
+ </string>
+ <string name="anim_express_anger">
+ Enfado
+ </string>
+ <string name="anim_away">
+ Ausente
+ </string>
+ <string name="anim_backflip">
+ Salto mortal atrás
+ </string>
+ <string name="anim_express_laugh">
+ Carcajada
+ </string>
+ <string name="anim_express_toothsmile">
+ Gran sonrisa
+ </string>
+ <string name="anim_blowkiss">
+ Mandar un beso
+ </string>
+ <string name="anim_express_bored">
+ Aburrimiento
+ </string>
+ <string name="anim_bow">
+ Reverencia
+ </string>
+ <string name="anim_clap">
+ Aplauso
+ </string>
+ <string name="anim_courtbow">
+ Reverencia floreada
+ </string>
+ <string name="anim_express_cry">
+ Llanto
+ </string>
+ <string name="anim_dance1">
+ Baile 1
+ </string>
+ <string name="anim_dance2">
+ Baile 2
+ </string>
+ <string name="anim_dance3">
+ Baile 3
+ </string>
+ <string name="anim_dance4">
+ Baile 4
+ </string>
+ <string name="anim_dance5">
+ Baile 5
+ </string>
+ <string name="anim_dance6">
+ Baile 6
+ </string>
+ <string name="anim_dance7">
+ Baile 7
+ </string>
+ <string name="anim_dance8">
+ Baile 8
+ </string>
+ <string name="anim_express_disdain">
+ Desdén
+ </string>
+ <string name="anim_drink">
+ Beber
+ </string>
+ <string name="anim_express_embarrased">
+ Azorarse
+ </string>
+ <string name="anim_angry_fingerwag">
+ Negar con el dedo
+ </string>
+ <string name="anim_fist_pump">
+ Éxito con el puño
+ </string>
+ <string name="anim_yoga_float">
+ Yoga flotando
+ </string>
+ <string name="anim_express_frown">
+ Fruncir el ceño
+ </string>
+ <string name="anim_impatient">
+ Impaciente
+ </string>
+ <string name="anim_jumpforjoy">
+ Salto de alegría
+ </string>
+ <string name="anim_kissmybutt">
+ Bésame el culo
+ </string>
+ <string name="anim_express_kiss">
+ Besar
+ </string>
+ <string name="anim_laugh_short">
+ Reír
+ </string>
+ <string name="anim_musclebeach">
+ Sacar músculo
+ </string>
+ <string name="anim_no_unhappy">
+ No (con enfado)
+ </string>
+ <string name="anim_no_head">
+ No
+ </string>
+ <string name="anim_nyanya">
+ Ña-Ña-Ña
+ </string>
+ <string name="anim_punch_onetwo">
+ Puñetazo uno-dos
+ </string>
+ <string name="anim_express_open_mouth">
+ Abrir la boca
+ </string>
+ <string name="anim_peace">
+ 'V' con los dedos
+ </string>
+ <string name="anim_point_you">
+ Señalar a otro/a
+ </string>
+ <string name="anim_point_me">
+ Señalarse
+ </string>
+ <string name="anim_punch_l">
+ Puñetazo izquierdo
+ </string>
+ <string name="anim_punch_r">
+ Puñetazo derecho
+ </string>
+ <string name="anim_rps_countdown">
+ PPT cuenta
+ </string>
+ <string name="anim_rps_paper">
+ PPT papel
+ </string>
+ <string name="anim_rps_rock">
+ PPT piedra
+ </string>
+ <string name="anim_rps_scissors">
+ PPT tijera
+ </string>
+ <string name="anim_express_repulsed">
+ Repulsa
+ </string>
+ <string name="anim_kick_roundhouse_r">
+ Patada circular
+ </string>
+ <string name="anim_express_sad">
+ Triste
+ </string>
+ <string name="anim_salute">
+ Saludo militar
+ </string>
+ <string name="anim_shout">
+ Gritar
+ </string>
+ <string name="anim_express_shrug">
+ Encogerse de hombros
+ </string>
+ <string name="anim_express_smile">
+ Sonreír
+ </string>
+ <string name="anim_smoke_idle">
+ Fumar: en la mano
+ </string>
+ <string name="anim_smoke_inhale">
+ Fumar
+ </string>
+ <string name="anim_smoke_throw_down">
+ Fumar: tirar el cigarro
+ </string>
+ <string name="anim_express_surprise">
+ Sorpresa
+ </string>
+ <string name="anim_sword_strike_r">
+ Estocadas
+ </string>
+ <string name="anim_angry_tantrum">
+ Berrinche
+ </string>
+ <string name="anim_express_tongue_out">
+ Sacar la lengua
+ </string>
+ <string name="anim_hello">
+ Agitar la mano
+ </string>
+ <string name="anim_whisper">
+ Cuchichear
+ </string>
+ <string name="anim_whistle">
+ Pitar
+ </string>
+ <string name="anim_express_wink">
+ Guiño
+ </string>
+ <string name="anim_wink_hollywood">
+ Guiño (Hollywood)
+ </string>
+ <string name="anim_express_worry">
+ Preocuparse
+ </string>
+ <string name="anim_yes_happy">
+ Sí (contento)
+ </string>
+ <string name="anim_yes_head">
+ Sí
+ </string>
+ <string name="use_texture">
+ Usar textura
+ </string>
+ <string name="manip_hint1">
+ Pasa el cursor del ratón sobre la regla
+ </string>
+ <string name="manip_hint2">
+ para ajustar a la cuadrícula
+ </string>
+ <string name="texture_loading">
+ Cargando...
+ </string>
+ <string name="worldmap_offline">
+ Sin conexión
+ </string>
+ <string name="worldmap_item_tooltip_format">
+ [PRICE] L$ por [AREA] m²
+ </string>
+ <string name="worldmap_results_none_found">
+ No se ha encontrado.
+ </string>
+ <string name="Ok">
+ OK
+ </string>
+ <string name="Premature end of file">
+ Fin prematuro del archivo
+ </string>
+ <string name="ST_NO_JOINT">
+ No se puede encontrar ROOT o JOINT.
+ </string>
+ <string name="NearbyChatTitle">
+ Chat
+ </string>
+ <string name="NearbyChatLabel">
+ (Chat)
+ </string>
+ <string name="whisper">
+ susurra:
+ </string>
+ <string name="shout">
+ grita:
+ </string>
+ <string name="ringing">
+ Conectando al chat de voz...
+ </string>
+ <string name="connected">
+ Conectado
+ </string>
+ <string name="unavailable">
+ La voz no está disponible en su localización actual
+ </string>
+ <string name="hang_up">
+ Desconectado del chat de voz
+ </string>
+ <string name="reconnect_nearby">
+ Vas a ser reconectado al chat de voz con los cercanos
+ </string>
+ <string name="ScriptQuestionCautionChatGranted">
+ '[OBJECTNAME]', un objeto propiedad de '[OWNERNAME]', localizado en [REGIONNAME] con la posición [REGIONPOS], ha recibido permiso para: [PERMISSIONS].
+ </string>
+ <string name="ScriptQuestionCautionChatDenied">
+ A '[OBJECTNAME]', un objeto propiedad de '[OWNERNAME]', localizado en [REGIONNAME] con la posición [REGIONPOS], se le ha denegado el permiso para: [PERMISSIONS].
+ </string>
+ <string name="AdditionalPermissionsRequestHeader">
+ Si autorizas el acceso a tu cuenta, también permitirás al objeto:
+ </string>
+ <string name="ScriptTakeMoney">
+ Cogerle a usted dólares Linden (L$)
+ </string>
+ <string name="ActOnControlInputs">
+ Actuar en sus controles de entrada
+ </string>
+ <string name="RemapControlInputs">
+ Reconfigurar sus controles de entrada
+ </string>
+ <string name="AnimateYourAvatar">
+ Ejecutar animaciones en su avatar
+ </string>
+ <string name="AttachToYourAvatar">
+ Anexarse a su avatar
+ </string>
+ <string name="ReleaseOwnership">
+ Anular la propiedad y que pase a ser público
+ </string>
+ <string name="LinkAndDelink">
+ Enlazar y desenlazar de otros objetos
+ </string>
+ <string name="AddAndRemoveJoints">
+ Añadir y quitar uniones con otros objetos
+ </string>
+ <string name="ChangePermissions">
+ Cambiar sus permisos
+ </string>
+ <string name="TrackYourCamera">
+ Seguir su cámara
+ </string>
+ <string name="ControlYourCamera">
+ Controlar su cámara
+ </string>
+ <string name="TeleportYourAgent">
+ Teleportarte
+ </string>
+ <string name="ForceSitAvatar">
+ Forzar que el avatar se siente
+ </string>
+ <string name="ChangeEnvSettings">
+ Cambiar tu configuración del entorno
+ </string>
+ <string name="AgentNameSubst">
+ (Tú)
+ </string>
<string name="JoinAnExperience"/>
- <string name="SilentlyManageEstateAccess">Suprimir alertas al gestionar las listas de acceso a un estado</string>
- <string name="OverrideYourAnimations">Reemplazar tus animaciones predeterminadas</string>
- <string name="ScriptReturnObjects">Devolver objetos en tu nombre</string>
- <string name="UnknownScriptPermission">(desconocido)</string>
- <string name="SIM_ACCESS_PG">General</string>
- <string name="SIM_ACCESS_MATURE">Moderado</string>
- <string name="SIM_ACCESS_ADULT">Adulto</string>
- <string name="SIM_ACCESS_DOWN">Desconectado</string>
- <string name="SIM_ACCESS_MIN">Desconocido</string>
- <string name="land_type_unknown">(desconocido)</string>
- <string name="Estate / Full Region">Estado /Región completa</string>
- <string name="Estate / Homestead">Estado / Homestead</string>
- <string name="Mainland / Homestead">Continente / Homestead</string>
- <string name="Mainland / Full Region">Continente / Región completa</string>
- <string name="all_files">Todos los archivos</string>
- <string name="sound_files">Sonidos</string>
- <string name="animation_files">Animaciones</string>
- <string name="image_files">Imágenes</string>
- <string name="save_file_verb">Guardar</string>
- <string name="load_file_verb">Cargar</string>
- <string name="targa_image_files">Imágenes Targa</string>
- <string name="bitmap_image_files">Imágenes de mapa de bits</string>
- <string name="png_image_files">Imágenes PNG</string>
- <string name="save_texture_image_files">Imágenes Targa o PNG</string>
- <string name="avi_movie_file">Archivo de película AVI</string>
- <string name="xaf_animation_file">Archivo de anim. XAF</string>
- <string name="xml_file">Archivo XML</string>
- <string name="raw_file">Archivo RAW</string>
- <string name="compressed_image_files">Imágenes comprimidas</string>
- <string name="load_files">Cargar archivos</string>
- <string name="choose_the_directory">Elegir directorio</string>
- <string name="script_files">Scripts</string>
- <string name="dictionary_files">Diccionarios</string>
- <string name="shape">Forma</string>
- <string name="skin">Piel</string>
- <string name="hair">Pelo</string>
- <string name="eyes">Ojos</string>
- <string name="shirt">Camisa</string>
- <string name="pants">Pantalón</string>
- <string name="shoes">Zapatos</string>
- <string name="socks">Calcetines</string>
- <string name="jacket">Chaqueta</string>
- <string name="gloves">Guantes</string>
- <string name="undershirt">Camiseta</string>
- <string name="underpants">Ropa interior</string>
- <string name="skirt">Falda</string>
- <string name="alpha">Alfa</string>
- <string name="tattoo">Tatuaje</string>
- <string name="universal">Universal</string>
- <string name="physics">Física</string>
- <string name="invalid">inválido/a</string>
- <string name="none">ninguno</string>
- <string name="shirt_not_worn">Camisa no puesta</string>
- <string name="pants_not_worn">Pantalones no puestos</string>
- <string name="shoes_not_worn">Zapatos no puestos</string>
- <string name="socks_not_worn">Calcetines no puestos</string>
- <string name="jacket_not_worn">Chaqueta no puesta</string>
- <string name="gloves_not_worn">Guantes no puestos</string>
- <string name="undershirt_not_worn">Camiseta no puesta</string>
- <string name="underpants_not_worn">Ropa interior no puesta</string>
- <string name="skirt_not_worn">Falda no puesta</string>
- <string name="alpha_not_worn">Alfa no puesta</string>
- <string name="tattoo_not_worn">Tatuaje no puesto</string>
- <string name="universal_not_worn">Universal no puesto</string>
- <string name="physics_not_worn">Física no puesta</string>
- <string name="invalid_not_worn">no válido/a</string>
- <string name="create_new_shape">Crear una anatomía nueva</string>
- <string name="create_new_skin">Crear una piel nueva</string>
- <string name="create_new_hair">Crear pelo nuevo</string>
- <string name="create_new_eyes">Crear ojos nuevos</string>
- <string name="create_new_shirt">Crear una camisa nueva</string>
- <string name="create_new_pants">Crear unos pantalones nuevos</string>
- <string name="create_new_shoes">Crear unos zapatos nuevos</string>
- <string name="create_new_socks">Crear unos calcetines nuevos</string>
- <string name="create_new_jacket">Crear una chaqueta nueva</string>
- <string name="create_new_gloves">Crear unos guantes nuevos</string>
- <string name="create_new_undershirt">Crear una camiseta nueva</string>
- <string name="create_new_underpants">Crear ropa interior nueva</string>
- <string name="create_new_skirt">Crear una falda nueva</string>
- <string name="create_new_alpha">Crear una capa alfa nueva</string>
- <string name="create_new_tattoo">Crear un tatuaje nuevo</string>
- <string name="create_new_universal">Crear unos guantes nuevos</string>
- <string name="create_new_physics">Crear nueva física</string>
- <string name="create_new_invalid">no válido/a</string>
- <string name="NewWearable">Nuevo [WEARABLE_ITEM]</string>
- <string name="next">Siguiente</string>
- <string name="ok">OK</string>
- <string name="GroupNotifyGroupNotice">Aviso de grupo</string>
- <string name="GroupNotifyGroupNotices">Avisos del grupo</string>
- <string name="GroupNotifySentBy">Enviado por</string>
- <string name="GroupNotifyAttached">Adjunto:</string>
- <string name="GroupNotifyViewPastNotices">Ver los avisos pasados u optar por dejar de recibir aquí estos mensajes.</string>
- <string name="GroupNotifyOpenAttachment">Abrir el adjunto</string>
- <string name="GroupNotifySaveAttachment">Guardar el adjunto</string>
- <string name="TeleportOffer">Ofrecimiento de teleporte</string>
- <string name="StartUpNotifications">Llegaron avisos nuevos mientras estabas ausente...</string>
- <string name="OverflowInfoChannelString">Tienes [%d] aviso/s más</string>
- <string name="BodyPartsRightArm">Brazo der.</string>
- <string name="BodyPartsHead">Cabeza</string>
- <string name="BodyPartsLeftArm">Brazo izq.</string>
- <string name="BodyPartsLeftLeg">Pierna izq.</string>
- <string name="BodyPartsTorso">Torso</string>
- <string name="BodyPartsRightLeg">Pierna der.</string>
- <string name="BodyPartsEnhancedSkeleton">Esqueleto mejorado</string>
- <string name="GraphicsQualityLow">Bajo</string>
- <string name="GraphicsQualityMid">Medio</string>
- <string name="GraphicsQualityHigh">Alto</string>
- <string name="LeaveMouselook">Pulsa ESC para salir de la vista subjetiva</string>
- <string name="InventoryNoMatchingItems">¿No encuentras lo que buscas? Prueba con [secondlife:///app/search/all/[SEARCH_TERM] Buscar].</string>
- <string name="InventoryNoMatchingRecentItems">¿No encuentras lo que buscas? Intenta [secondlife:///app/inventory/filters Show filters].</string>
- <string name="PlacesNoMatchingItems">¿No encuentras lo que buscas? Prueba con [secondlife:///app/search/places/[SEARCH_TERM] Buscar].</string>
- <string name="FavoritesNoMatchingItems">Arrastra aquí un hito para tenerlo en tus favoritos.</string>
- <string name="MarketplaceNoMatchingItems">No se han encontrado artículos. Comprueba si has escrito correctamente la cadena de búsqueda y vuelve a intentarlo.</string>
- <string name="InventoryNoTexture">No tienes en tu inventario una copia de esta textura</string>
- <string name="InventoryInboxNoItems">Aquí aparecerán algunos de los objetos que recibas, como los regalos Premium. Después puedes arrastrarlos a tu inventario.</string>
- <string name="MarketplaceURL">https://marketplace.[MARKETPLACE_DOMAIN_NAME]/</string>
- <string name="MarketplaceURL_CreateStore">http://community.secondlife.com/t5/English-Knowledge-Base/Selling-in-the-Marketplace/ta-p/700193#Section_.3</string>
- <string name="MarketplaceURL_Dashboard">https://marketplace.[MARKETPLACE_DOMAIN_NAME]/merchants/store/dashboard</string>
- <string name="MarketplaceURL_Imports">https://marketplace.[MARKETPLACE_DOMAIN_NAME]/merchants/store/imports</string>
- <string name="MarketplaceURL_LearnMore">https://marketplace.[MARKETPLACE_DOMAIN_NAME]/learn_more</string>
- <string name="InventoryPlayAnimationTooltip">Abrir la ventana con las opciones del Juego</string>
- <string name="InventoryPlayGestureTooltip">Realizar gesto seleccionado en el mundo.</string>
- <string name="InventoryPlaySoundTooltip">Abrir la ventana con las opciones del Juego</string>
- <string name="InventoryOutboxNotMerchantTitle">Cualquier usuario puede vender objetos en el mercado.</string>
+ <string name="SilentlyManageEstateAccess">
+ Suprimir alertas al gestionar las listas de acceso a un estado
+ </string>
+ <string name="OverrideYourAnimations">
+ Reemplazar tus animaciones predeterminadas
+ </string>
+ <string name="ScriptReturnObjects">
+ Devolver objetos en tu nombre
+ </string>
+ <string name="UnknownScriptPermission">
+ (desconocido)
+ </string>
+ <string name="SIM_ACCESS_PG">
+ General
+ </string>
+ <string name="SIM_ACCESS_MATURE">
+ Moderado
+ </string>
+ <string name="SIM_ACCESS_ADULT">
+ Adulto
+ </string>
+ <string name="SIM_ACCESS_DOWN">
+ Desconectado
+ </string>
+ <string name="SIM_ACCESS_MIN">
+ Desconocido
+ </string>
+ <string name="land_type_unknown">
+ (desconocido)
+ </string>
+ <string name="Estate / Full Region">
+ Estado /Región completa
+ </string>
+ <string name="Estate / Homestead">
+ Estado / Homestead
+ </string>
+ <string name="Mainland / Homestead">
+ Continente / Homestead
+ </string>
+ <string name="Mainland / Full Region">
+ Continente / Región completa
+ </string>
+ <string name="all_files">
+ Todos los archivos
+ </string>
+ <string name="sound_files">
+ Sonidos
+ </string>
+ <string name="animation_files">
+ Animaciones
+ </string>
+ <string name="image_files">
+ Imágenes
+ </string>
+ <string name="save_file_verb">
+ Guardar
+ </string>
+ <string name="load_file_verb">
+ Cargar
+ </string>
+ <string name="targa_image_files">
+ Imágenes Targa
+ </string>
+ <string name="bitmap_image_files">
+ Imágenes de mapa de bits
+ </string>
+ <string name="png_image_files">
+ Imágenes PNG
+ </string>
+ <string name="save_texture_image_files">
+ Imágenes Targa o PNG
+ </string>
+ <string name="avi_movie_file">
+ Archivo de película AVI
+ </string>
+ <string name="xaf_animation_file">
+ Archivo de anim. XAF
+ </string>
+ <string name="xml_file">
+ Archivo XML
+ </string>
+ <string name="raw_file">
+ Archivo RAW
+ </string>
+ <string name="compressed_image_files">
+ Imágenes comprimidas
+ </string>
+ <string name="load_files">
+ Cargar archivos
+ </string>
+ <string name="choose_the_directory">
+ Elegir directorio
+ </string>
+ <string name="script_files">
+ Scripts
+ </string>
+ <string name="dictionary_files">
+ Diccionarios
+ </string>
+ <string name="shape">
+ Forma
+ </string>
+ <string name="skin">
+ Piel
+ </string>
+ <string name="hair">
+ Pelo
+ </string>
+ <string name="eyes">
+ Ojos
+ </string>
+ <string name="shirt">
+ Camisa
+ </string>
+ <string name="pants">
+ Pantalón
+ </string>
+ <string name="shoes">
+ Zapatos
+ </string>
+ <string name="socks">
+ Calcetines
+ </string>
+ <string name="jacket">
+ Chaqueta
+ </string>
+ <string name="gloves">
+ Guantes
+ </string>
+ <string name="undershirt">
+ Camiseta
+ </string>
+ <string name="underpants">
+ Ropa interior
+ </string>
+ <string name="skirt">
+ Falda
+ </string>
+ <string name="alpha">
+ Alfa
+ </string>
+ <string name="tattoo">
+ Tatuaje
+ </string>
+ <string name="universal">
+ Universal
+ </string>
+ <string name="physics">
+ Física
+ </string>
+ <string name="invalid">
+ inválido/a
+ </string>
+ <string name="none">
+ ninguno
+ </string>
+ <string name="shirt_not_worn">
+ Camisa no puesta
+ </string>
+ <string name="pants_not_worn">
+ Pantalones no puestos
+ </string>
+ <string name="shoes_not_worn">
+ Zapatos no puestos
+ </string>
+ <string name="socks_not_worn">
+ Calcetines no puestos
+ </string>
+ <string name="jacket_not_worn">
+ Chaqueta no puesta
+ </string>
+ <string name="gloves_not_worn">
+ Guantes no puestos
+ </string>
+ <string name="undershirt_not_worn">
+ Camiseta no puesta
+ </string>
+ <string name="underpants_not_worn">
+ Ropa interior no puesta
+ </string>
+ <string name="skirt_not_worn">
+ Falda no puesta
+ </string>
+ <string name="alpha_not_worn">
+ Alfa no puesta
+ </string>
+ <string name="tattoo_not_worn">
+ Tatuaje no puesto
+ </string>
+ <string name="universal_not_worn">
+ Universal no puesto
+ </string>
+ <string name="physics_not_worn">
+ Física no puesta
+ </string>
+ <string name="invalid_not_worn">
+ no válido/a
+ </string>
+ <string name="create_new_shape">
+ Crear una anatomía nueva
+ </string>
+ <string name="create_new_skin">
+ Crear una piel nueva
+ </string>
+ <string name="create_new_hair">
+ Crear pelo nuevo
+ </string>
+ <string name="create_new_eyes">
+ Crear ojos nuevos
+ </string>
+ <string name="create_new_shirt">
+ Crear una camisa nueva
+ </string>
+ <string name="create_new_pants">
+ Crear unos pantalones nuevos
+ </string>
+ <string name="create_new_shoes">
+ Crear unos zapatos nuevos
+ </string>
+ <string name="create_new_socks">
+ Crear unos calcetines nuevos
+ </string>
+ <string name="create_new_jacket">
+ Crear una chaqueta nueva
+ </string>
+ <string name="create_new_gloves">
+ Crear unos guantes nuevos
+ </string>
+ <string name="create_new_undershirt">
+ Crear una camiseta nueva
+ </string>
+ <string name="create_new_underpants">
+ Crear ropa interior nueva
+ </string>
+ <string name="create_new_skirt">
+ Crear una falda nueva
+ </string>
+ <string name="create_new_alpha">
+ Crear una capa alfa nueva
+ </string>
+ <string name="create_new_tattoo">
+ Crear un tatuaje nuevo
+ </string>
+ <string name="create_new_universal">
+ Crear unos guantes nuevos
+ </string>
+ <string name="create_new_physics">
+ Crear nueva física
+ </string>
+ <string name="create_new_invalid">
+ no válido/a
+ </string>
+ <string name="NewWearable">
+ Nuevo [WEARABLE_ITEM]
+ </string>
+ <string name="next">
+ Siguiente
+ </string>
+ <string name="ok">
+ OK
+ </string>
+ <string name="GroupNotifyGroupNotice">
+ Aviso de grupo
+ </string>
+ <string name="GroupNotifyGroupNotices">
+ Avisos del grupo
+ </string>
+ <string name="GroupNotifySentBy">
+ Enviado por
+ </string>
+ <string name="GroupNotifyAttached">
+ Adjunto:
+ </string>
+ <string name="GroupNotifyViewPastNotices">
+ Ver los avisos pasados u optar por dejar de recibir aquí estos mensajes.
+ </string>
+ <string name="GroupNotifyOpenAttachment">
+ Abrir el adjunto
+ </string>
+ <string name="GroupNotifySaveAttachment">
+ Guardar el adjunto
+ </string>
+ <string name="TeleportOffer">
+ Ofrecimiento de teleporte
+ </string>
+ <string name="StartUpNotifications">
+ Llegaron avisos nuevos mientras estabas ausente...
+ </string>
+ <string name="OverflowInfoChannelString">
+ Tienes [%d] aviso/s más
+ </string>
+ <string name="BodyPartsRightArm">
+ Brazo der.
+ </string>
+ <string name="BodyPartsHead">
+ Cabeza
+ </string>
+ <string name="BodyPartsLeftArm">
+ Brazo izq.
+ </string>
+ <string name="BodyPartsLeftLeg">
+ Pierna izq.
+ </string>
+ <string name="BodyPartsTorso">
+ Torso
+ </string>
+ <string name="BodyPartsRightLeg">
+ Pierna der.
+ </string>
+ <string name="BodyPartsEnhancedSkeleton">
+ Esqueleto mejorado
+ </string>
+ <string name="GraphicsQualityLow">
+ Bajo
+ </string>
+ <string name="GraphicsQualityMid">
+ Medio
+ </string>
+ <string name="GraphicsQualityHigh">
+ Alto
+ </string>
+ <string name="LeaveMouselook">
+ Pulsa ESC para salir de la vista subjetiva
+ </string>
+ <string name="InventoryNoMatchingItems">
+ ¿No encuentras lo que buscas? Prueba con [secondlife:///app/search/all/[SEARCH_TERM] Buscar].
+ </string>
+ <string name="InventoryNoMatchingRecentItems">
+ ¿No encuentras lo que buscas? Intenta [secondlife:///app/inventory/filters Show filters].
+ </string>
+ <string name="PlacesNoMatchingItems">
+ ¿No encuentras lo que buscas? Prueba con [secondlife:///app/search/places/[SEARCH_TERM] Buscar].
+ </string>
+ <string name="FavoritesNoMatchingItems">
+ Arrastra aquí un hito para tenerlo en tus favoritos.
+ </string>
+ <string name="MarketplaceNoMatchingItems">
+ No se han encontrado artículos. Comprueba si has escrito correctamente la cadena de búsqueda y vuelve a intentarlo.
+ </string>
+ <string name="InventoryNoTexture">
+ No tienes en tu inventario una copia de esta textura
+ </string>
+ <string name="InventoryInboxNoItems">
+ Aquí aparecerán algunos de los objetos que recibas, como los regalos Premium. Después puedes arrastrarlos a tu inventario.
+ </string>
+ <string name="MarketplaceURL">
+ https://marketplace.[MARKETPLACE_DOMAIN_NAME]/
+ </string>
+ <string name="MarketplaceURL_CreateStore">
+ http://community.secondlife.com/t5/English-Knowledge-Base/Selling-in-the-Marketplace/ta-p/700193#Section_.3
+ </string>
+ <string name="MarketplaceURL_Dashboard">
+ https://marketplace.[MARKETPLACE_DOMAIN_NAME]/merchants/store/dashboard
+ </string>
+ <string name="MarketplaceURL_Imports">
+ https://marketplace.[MARKETPLACE_DOMAIN_NAME]/merchants/store/imports
+ </string>
+ <string name="MarketplaceURL_LearnMore">
+ https://marketplace.[MARKETPLACE_DOMAIN_NAME]/learn_more
+ </string>
+ <string name="InventoryPlayAnimationTooltip">
+ Abrir la ventana con las opciones del Juego
+ </string>
+ <string name="InventoryPlayGestureTooltip">
+ Realizar gesto seleccionado en el mundo.
+ </string>
+ <string name="InventoryPlaySoundTooltip">
+ Abrir la ventana con las opciones del Juego
+ </string>
+ <string name="InventoryOutboxNotMerchantTitle">
+ Cualquier usuario puede vender objetos en el mercado.
+ </string>
<string name="InventoryOutboxNotMerchantTooltip"/>
- <string name="InventoryOutboxNotMerchant">Para hacerte comerciante debes [[MARKETPLACE_CREATE_STORE_URL] crear una tienda del Mercado].</string>
- <string name="InventoryOutboxNoItemsTitle">El buzón de salida está vacío.</string>
+ <string name="InventoryOutboxNotMerchant">
+ Para hacerte comerciante debes [[MARKETPLACE_CREATE_STORE_URL] crear una tienda del Mercado].
+ </string>
+ <string name="InventoryOutboxNoItemsTitle">
+ El buzón de salida está vacío.
+ </string>
<string name="InventoryOutboxNoItemsTooltip"/>
- <string name="InventoryOutboxNoItems">Arrastra carpetas a esta sección y pulsa en &quot;Enviar al Mercado&quot; para incluirlas en la lista de venta del [[MARKETPLACE_DASHBOARD_URL] Mercado].</string>
- <string name="InventoryOutboxInitializingTitle">Inicializando el Mercado.</string>
- <string name="InventoryOutboxInitializing">Estamos accediendo a tu cuenta de la [[MARKETPLACE_CREATE_STORE_URL] tienda del Mercado].</string>
- <string name="InventoryOutboxErrorTitle">Errores del Mercado.</string>
- <string name="InventoryOutboxError">La [[MARKETPLACE_CREATE_STORE_URL] tienda del Mercado] devuelve errores.</string>
- <string name="InventoryMarketplaceError">Se ha producido un error al abrir Artículos del Mercado.
-Si sigues recibiendo el mismo mensaje, solicita ayuda al personal de asistencia de Second Life en http://support.secondlife.com</string>
- <string name="InventoryMarketplaceListingsNoItemsTitle">Tu carpeta Artículos del mercado está vacía.</string>
- <string name="InventoryMarketplaceListingsNoItems">Arrastra carpetas a esta sección para incluirlas en la lista de venta del [[MARKETPLACE_DASHBOARD_URL] Mercado].</string>
- <string name="InventoryItemsCount">( [ITEMS_COUNT] Objetos)</string>
- <string name="Marketplace Validation Warning Stock">La carpeta de stock debe estar contenida en una carpeta de versión</string>
- <string name="Marketplace Validation Error Mixed Stock">: Error: todos los artículos de una carpeta de stock deben ser del mismo tipo y que no se puedan copiar</string>
- <string name="Marketplace Validation Error Subfolder In Stock">: Error: la carpeta de stock no puede contener subcarpetas</string>
- <string name="Marketplace Validation Warning Empty">: Atención: la carpeta no contiene ningún artículo</string>
- <string name="Marketplace Validation Warning Create Stock">: Atención: creando carpeta de stock</string>
- <string name="Marketplace Validation Warning Create Version">: Atención: creando la carpeta de versión</string>
- <string name="Marketplace Validation Warning Move">: Atención: moviendo artículos</string>
- <string name="Marketplace Validation Warning Delete">: Atención: se ha transferido el contenido de la carpeta a la carpeta de stock, y se eliminará la carpeta vacía</string>
- <string name="Marketplace Validation Error Stock Item">: Error: los artículos que no se pueden copiar deben estar contenidos en una carpeta de stock</string>
- <string name="Marketplace Validation Warning Unwrapped Item">: Atención: los artículos deben estar contenidos en una carpeta de versión</string>
- <string name="Marketplace Validation Error">: Error:</string>
- <string name="Marketplace Validation Warning">: Atención:</string>
- <string name="Marketplace Validation Error Empty Version">: Atención: la carpeta de versión debe contener al menos un artículo</string>
- <string name="Marketplace Validation Error Empty Stock">: Atención: la carpeta de stock debe contener al menos un artículo</string>
- <string name="Marketplace Validation No Error">No se han producido errores ni advertencias</string>
- <string name="Marketplace Error None">Sin errores</string>
- <string name="Marketplace Error Prefix">Error:</string>
- <string name="Marketplace Error Not Merchant">Para poder enviar objetos al mercado, debes registrarte como comerciante (es gratis).</string>
- <string name="Marketplace Error Not Accepted">No se puede mover el artículo a esa carpeta.</string>
- <string name="Marketplace Error Unsellable Item">Este artículo no se puede vender en el Mercado.</string>
- <string name="MarketplaceNoID">no Mkt ID</string>
- <string name="MarketplaceLive">en la lista</string>
- <string name="MarketplaceActive">activa</string>
- <string name="MarketplaceMax">máx.</string>
- <string name="MarketplaceStock">stock</string>
- <string name="MarketplaceNoStock">existencias agotadas</string>
- <string name="MarketplaceUpdating">actualizando...</string>
- <string name="UploadFeeInfo">Las cuotas se basan en tu nivel de suscripcion. Niveles más altos tienen cuotas más bajas visita [https://secondlife.com/my/account/membership.php? para saber más]</string>
- <string name="Open landmarks">Abrir puntos destacados</string>
- <string name="Unconstrained">Sin Restricciones</string>
+ <string name="InventoryOutboxNoItems">
+ Arrastra carpetas a esta sección y pulsa en "Enviar al Mercado" para incluirlas en la lista de venta del [[MARKETPLACE_DASHBOARD_URL] Mercado].
+ </string>
+ <string name="InventoryOutboxInitializingTitle">
+ Inicializando el Mercado.
+ </string>
+ <string name="InventoryOutboxInitializing">
+ Estamos accediendo a tu cuenta de la [[MARKETPLACE_CREATE_STORE_URL] tienda del Mercado].
+ </string>
+ <string name="InventoryOutboxErrorTitle">
+ Errores del Mercado.
+ </string>
+ <string name="InventoryOutboxError">
+ La [[MARKETPLACE_CREATE_STORE_URL] tienda del Mercado] devuelve errores.
+ </string>
+ <string name="InventoryMarketplaceError">
+ Se ha producido un error al abrir Artículos del Mercado.
+Si sigues recibiendo el mismo mensaje, solicita ayuda al personal de asistencia de Second Life en http://support.secondlife.com
+ </string>
+ <string name="InventoryMarketplaceListingsNoItemsTitle">
+ Tu carpeta Artículos del mercado está vacía.
+ </string>
+ <string name="InventoryMarketplaceListingsNoItems">
+ Arrastra carpetas a esta sección para incluirlas en la lista de venta del [[MARKETPLACE_DASHBOARD_URL] Mercado].
+ </string>
+ <string name="InventoryItemsCount">
+ ( [ITEMS_COUNT] Objetos)
+ </string>
+ <string name="Marketplace Validation Warning Stock">
+ La carpeta de stock debe estar contenida en una carpeta de versión
+ </string>
+ <string name="Marketplace Validation Error Mixed Stock">
+ : Error: todos los artículos de una carpeta de stock deben ser del mismo tipo y que no se puedan copiar
+ </string>
+ <string name="Marketplace Validation Error Subfolder In Stock">
+ : Error: la carpeta de stock no puede contener subcarpetas
+ </string>
+ <string name="Marketplace Validation Warning Empty">
+ : Atención: la carpeta no contiene ningún artículo
+ </string>
+ <string name="Marketplace Validation Warning Create Stock">
+ : Atención: creando carpeta de stock
+ </string>
+ <string name="Marketplace Validation Warning Create Version">
+ : Atención: creando la carpeta de versión
+ </string>
+ <string name="Marketplace Validation Warning Move">
+ : Atención: moviendo artículos
+ </string>
+ <string name="Marketplace Validation Warning Delete">
+ : Atención: se ha transferido el contenido de la carpeta a la carpeta de stock, y se eliminará la carpeta vacía
+ </string>
+ <string name="Marketplace Validation Error Stock Item">
+ : Error: los artículos que no se pueden copiar deben estar contenidos en una carpeta de stock
+ </string>
+ <string name="Marketplace Validation Warning Unwrapped Item">
+ : Atención: los artículos deben estar contenidos en una carpeta de versión
+ </string>
+ <string name="Marketplace Validation Error">
+ : Error:
+ </string>
+ <string name="Marketplace Validation Warning">
+ : Atención:
+ </string>
+ <string name="Marketplace Validation Error Empty Version">
+ : Atención: la carpeta de versión debe contener al menos un artículo
+ </string>
+ <string name="Marketplace Validation Error Empty Stock">
+ : Atención: la carpeta de stock debe contener al menos un artículo
+ </string>
+ <string name="Marketplace Validation No Error">
+ No se han producido errores ni advertencias
+ </string>
+ <string name="Marketplace Error None">
+ Sin errores
+ </string>
+ <string name="Marketplace Error Prefix">
+ Error:
+ </string>
+ <string name="Marketplace Error Not Merchant">
+ Para poder enviar objetos al mercado, debes registrarte como comerciante (es gratis).
+ </string>
+ <string name="Marketplace Error Not Accepted">
+ No se puede mover el artículo a esa carpeta.
+ </string>
+ <string name="Marketplace Error Unsellable Item">
+ Este artículo no se puede vender en el Mercado.
+ </string>
+ <string name="MarketplaceNoID">
+ no Mkt ID
+ </string>
+ <string name="MarketplaceLive">
+ en la lista
+ </string>
+ <string name="MarketplaceActive">
+ activa
+ </string>
+ <string name="MarketplaceMax">
+ máx.
+ </string>
+ <string name="MarketplaceStock">
+ stock
+ </string>
+ <string name="MarketplaceNoStock">
+ existencias agotadas
+ </string>
+ <string name="MarketplaceUpdating">
+ actualizando...
+ </string>
+ <string name="UploadFeeInfo">
+ Las cuotas se basan en tu nivel de suscripcion. Niveles más altos tienen cuotas más bajas visita [https://secondlife.com/my/account/membership.php? para saber más]
+ </string>
+ <string name="Open landmarks">
+ Abrir puntos destacados
+ </string>
+ <string name="Unconstrained">
+ Sin Restricciones
+ </string>
<string name="no_transfer" value="(no transferible)"/>
<string name="no_modify" value="(no modificable)"/>
<string name="no_copy" value="(no copiable)"/>
<string name="worn" value="(puesto)"/>
<string name="link" value="(enlace)"/>
<string name="broken_link" value="(enlace roto)&quot;"/>
- <string name="LoadingContents">Cargando el contenido...</string>
- <string name="NoContents">No hay contenido</string>
+ <string name="LoadingContents">
+ Cargando el contenido...
+ </string>
+ <string name="NoContents">
+ No hay contenido
+ </string>
<string name="WornOnAttachmentPoint" value="(lo llevas en: [ATTACHMENT_POINT])"/>
<string name="AttachmentErrorMessage" value="([ATTACHMENT_ERROR])"/>
<string name="ActiveGesture" value="[GESLABEL] (activo)"/>
@@ -629,1418 +1681,4140 @@ Si sigues recibiendo el mismo mensaje, solicita ayuda al personal de asistencia
<string name="Snapshots" value="Fotos,"/>
<string name="No Filters" value="No"/>
<string name="Since Logoff" value="- Desde la desconexión"/>
- <string name="InvFolder My Inventory">Mi Inventario</string>
- <string name="InvFolder Library">Biblioteca</string>
- <string name="InvFolder Textures">Texturas</string>
- <string name="InvFolder Sounds">Sonidos</string>
- <string name="InvFolder Calling Cards">Tarjetas de visita</string>
- <string name="InvFolder Landmarks">Hitos</string>
- <string name="InvFolder Scripts">Scripts</string>
- <string name="InvFolder Clothing">Ropa</string>
- <string name="InvFolder Objects">Objetos</string>
- <string name="InvFolder Notecards">Notas</string>
- <string name="InvFolder New Folder">Carpeta nueva</string>
- <string name="InvFolder Inventory">Inventario</string>
- <string name="InvFolder Uncompressed Images">Imágenes sin comprimir</string>
- <string name="InvFolder Body Parts">Partes del cuerpo</string>
- <string name="InvFolder Trash">Papelera</string>
- <string name="InvFolder Photo Album">Álbum de fotos</string>
- <string name="InvFolder Lost And Found">Objetos Perdidos</string>
- <string name="InvFolder Uncompressed Sounds">Sonidos sin comprimir</string>
- <string name="InvFolder Animations">Animaciones</string>
- <string name="InvFolder Gestures">Gestos</string>
- <string name="InvFolder Favorite">Mis Favoritos</string>
- <string name="InvFolder favorite">Mis Favoritos</string>
- <string name="InvFolder Favorites">Mis Favoritos</string>
- <string name="InvFolder favorites">Mis Favoritos</string>
- <string name="InvFolder Current Outfit">Vestuario actual</string>
- <string name="InvFolder Initial Outfits">Vestuario inicial</string>
- <string name="InvFolder My Outfits">Mis vestuarios</string>
- <string name="InvFolder Accessories">Accesorios</string>
- <string name="InvFolder Meshes">Redes</string>
- <string name="InvFolder Received Items">Objetos recibidos</string>
- <string name="InvFolder Merchant Outbox">Buzón de salida de comerciante</string>
- <string name="InvFolder Friends">Amigos</string>
- <string name="InvFolder All">Todas</string>
- <string name="no_attachments">No tienes puestos anexos</string>
- <string name="Attachments remain">Anexos (quedan [COUNT] ranuras)</string>
- <string name="Buy">Comprar</string>
- <string name="BuyforL$">Comprar por L$</string>
- <string name="Stone">Piedra</string>
- <string name="Metal">Metal</string>
- <string name="Glass">Cristal</string>
- <string name="Wood">Madera</string>
- <string name="Flesh">Carne</string>
- <string name="Plastic">Plástico</string>
- <string name="Rubber">Goma</string>
- <string name="Light">Claridad</string>
- <string name="KBShift">Mayúsculas</string>
- <string name="KBCtrl">Ctrl</string>
- <string name="Chest">Tórax</string>
- <string name="Skull">Cráneo</string>
- <string name="Left Shoulder">Hombro izquierdo</string>
- <string name="Right Shoulder">Hombro derecho</string>
- <string name="Left Hand">Mano izq.</string>
- <string name="Right Hand">Mano der.</string>
- <string name="Left Foot">Pie izq.</string>
- <string name="Right Foot">Pie der.</string>
- <string name="Spine">Columna</string>
- <string name="Pelvis">Pelvis</string>
- <string name="Mouth">Boca</string>
- <string name="Chin">Barbilla</string>
- <string name="Left Ear">Oreja izq.</string>
- <string name="Right Ear">Oreja der.</string>
- <string name="Left Eyeball">Ojo izq.</string>
- <string name="Right Eyeball">Ojo der.</string>
- <string name="Nose">Nariz</string>
- <string name="R Upper Arm">Brazo der.</string>
- <string name="R Forearm">Antebrazo der.</string>
- <string name="L Upper Arm">Brazo izq.</string>
- <string name="L Forearm">Antebrazo izq.</string>
- <string name="Right Hip">Cadera der.</string>
- <string name="R Upper Leg">Muslo der.</string>
- <string name="R Lower Leg">Pantorrilla der.</string>
- <string name="Left Hip">Cadera izq.</string>
- <string name="L Upper Leg">Muslo izq.</string>
- <string name="L Lower Leg">Pantorrilla izq.</string>
- <string name="Stomach">Abdomen</string>
- <string name="Left Pec">Pecho izquierdo</string>
- <string name="Right Pec">Pecho derecho</string>
- <string name="Neck">Cuello</string>
- <string name="Avatar Center">Centro del avatar</string>
- <string name="Left Ring Finger">Dedo anular izquierdo</string>
- <string name="Right Ring Finger">Dedo anular derecho</string>
- <string name="Tail Base">Base de la cola</string>
- <string name="Tail Tip">Extremo de la cola</string>
- <string name="Left Wing">Ala izquierda</string>
- <string name="Right Wing">Ala derecha</string>
- <string name="Jaw">Mandíbula</string>
- <string name="Alt Left Ear">Oreja izquierda alternativa</string>
- <string name="Alt Right Ear">Oreja derecha alternativa</string>
- <string name="Alt Left Eye">Ojo izquierdo alternativo</string>
- <string name="Alt Right Eye">Ojo derecho alternativo</string>
- <string name="Tongue">Lengua</string>
- <string name="Groin">Ingle</string>
- <string name="Left Hind Foot">Pata trasera izquierda</string>
- <string name="Right Hind Foot">Pata trasera derecha</string>
- <string name="Invalid Attachment">Punto de colocación no válido</string>
- <string name="ATTACHMENT_MISSING_ITEM">Error: falta un artículo</string>
- <string name="ATTACHMENT_MISSING_BASE_ITEM">Error: falta el artículo de base</string>
- <string name="ATTACHMENT_NOT_ATTACHED">Error: el objeto se encuentra en el vestuario actual, pero no está anexado</string>
- <string name="YearsMonthsOld">[AGEYEARS] [AGEMONTHS] de edad</string>
- <string name="YearsOld">[AGEYEARS] de edad</string>
- <string name="MonthsOld">[AGEMONTHS] de edad</string>
- <string name="WeeksOld">[AGEWEEKS] de edad</string>
- <string name="DaysOld">[AGEDAYS] de edad</string>
- <string name="TodayOld">Registrado hoy</string>
- <string name="av_render_everyone_now">Ahora todos pueden verte.</string>
- <string name="av_render_not_everyone">Es posible que no todos los que están próximos puedan renderizarte.</string>
- <string name="av_render_over_half">Es posible que más de la mitad de los que están próximos no puedan renderizarte.</string>
- <string name="av_render_most_of">Es posible que la mayoría de los que están próximos no puedan renderizarte.</string>
- <string name="av_render_anyone">Es posible que ninguno de los que están próximos pueda renderizarte.</string>
- <string name="hud_description_total">Tu HUD</string>
- <string name="hud_name_with_joint">[OBJ_NAME] (lo llevas en [JNT_NAME])</string>
- <string name="hud_render_memory_warning">[HUD_DETAILS] usa mucha memoria de textura</string>
- <string name="hud_render_cost_warning">[HUD_DETAILS] contiene muchas texturas y objetos complicados</string>
- <string name="hud_render_heavy_textures_warning">[HUD_DETAILS] contiene muchas texturas grandes</string>
- <string name="hud_render_cramped_warning">[HUD_DETAILS] contiene demasiados objetos</string>
- <string name="hud_render_textures_warning">[HUD_DETAILS] contiene demasiadas texturas</string>
- <string name="AgeYearsA">[COUNT] año</string>
- <string name="AgeYearsB">[COUNT] años</string>
- <string name="AgeYearsC">[COUNT] años</string>
- <string name="AgeMonthsA">[COUNT] mes</string>
- <string name="AgeMonthsB">[COUNT] meses</string>
- <string name="AgeMonthsC">[COUNT] meses</string>
- <string name="AgeWeeksA">[COUNT] semana</string>
- <string name="AgeWeeksB">[COUNT] semanas</string>
- <string name="AgeWeeksC">[COUNT] semanas</string>
- <string name="AgeDaysA">[COUNT] día</string>
- <string name="AgeDaysB">[COUNT] días</string>
- <string name="AgeDaysC">[COUNT] días</string>
- <string name="GroupMembersA">[COUNT] miembro</string>
- <string name="GroupMembersB">[COUNT] miembros</string>
- <string name="GroupMembersC">[COUNT] miembros</string>
- <string name="AcctTypeResident">Residente</string>
- <string name="AcctTypeTrial">Prueba</string>
- <string name="AcctTypeCharterMember">Miembro fundador</string>
- <string name="AcctTypeEmployee">Empleado de Linden Lab</string>
- <string name="PaymentInfoUsed">Ha usado información sobre la forma de pago</string>
- <string name="PaymentInfoOnFile">Hay información archivada sobre la forma de pago</string>
- <string name="NoPaymentInfoOnFile">No hay información archivada sobre la forma de pago</string>
- <string name="AgeVerified">Edad verificada</string>
- <string name="NotAgeVerified">Edad no verificada</string>
- <string name="Center 2">Centro 2</string>
- <string name="Top Right">Arriba der.</string>
- <string name="Top">Arriba</string>
- <string name="Top Left">Arriba izq.</string>
- <string name="Center">Centro</string>
- <string name="Bottom Left">Abajo izq.</string>
- <string name="Bottom">Abajo</string>
- <string name="Bottom Right">Abajo der.</string>
- <string name="CompileQueueDownloadedCompiling">Descargado, compilándolo</string>
- <string name="CompileQueueServiceUnavailable">El servicio de compilación de scripts no está disponible</string>
- <string name="CompileQueueScriptNotFound">No se encuentra el script en el servidor.</string>
- <string name="CompileQueueProblemDownloading">Problema al descargar</string>
- <string name="CompileQueueInsufficientPermDownload">Permisos insuficientes para descargar un script.</string>
- <string name="CompileQueueInsufficientPermFor">Permisos insuficientes para</string>
- <string name="CompileQueueUnknownFailure">Fallo desconocido en la descarga</string>
- <string name="CompileNoExperiencePerm">Omitiendo el script [SCRIPT] con la experiencia [EXPERIENCE].</string>
- <string name="CompileQueueTitle">Recompilando</string>
- <string name="CompileQueueStart">recompilar</string>
- <string name="ResetQueueTitle">Progreso del reinicio</string>
- <string name="ResetQueueStart">restaurar</string>
- <string name="RunQueueTitle">Configurar según se ejecuta</string>
- <string name="RunQueueStart">Configurando según se ejecuta</string>
- <string name="NotRunQueueTitle">Configurar sin ejecutar</string>
- <string name="NotRunQueueStart">Configurando sin ejecutarlo</string>
- <string name="CompileSuccessful">¡Compilación correcta!</string>
- <string name="CompileSuccessfulSaving">Compilación correcta, guardando...</string>
- <string name="SaveComplete">Guardado.</string>
- <string name="UploadFailed">Error al subir el archivo:</string>
- <string name="ObjectOutOfRange">Script (objeto fuera de rango)</string>
- <string name="ScriptWasDeleted">Script (eliminado del inventario)</string>
- <string name="GodToolsObjectOwnedBy">El objeto [OBJECT] es propiedad de [OWNER]</string>
- <string name="GroupsNone">ninguno</string>
+ <string name="InvFolder My Inventory">
+ Mi Inventario
+ </string>
+ <string name="InvFolder Library">
+ Biblioteca
+ </string>
+ <string name="InvFolder Textures">
+ Texturas
+ </string>
+ <string name="InvFolder Sounds">
+ Sonidos
+ </string>
+ <string name="InvFolder Calling Cards">
+ Tarjetas de visita
+ </string>
+ <string name="InvFolder Landmarks">
+ Hitos
+ </string>
+ <string name="InvFolder Scripts">
+ Scripts
+ </string>
+ <string name="InvFolder Clothing">
+ Ropa
+ </string>
+ <string name="InvFolder Objects">
+ Objetos
+ </string>
+ <string name="InvFolder Notecards">
+ Notas
+ </string>
+ <string name="InvFolder New Folder">
+ Carpeta nueva
+ </string>
+ <string name="InvFolder Inventory">
+ Inventario
+ </string>
+ <string name="InvFolder Uncompressed Images">
+ Imágenes sin comprimir
+ </string>
+ <string name="InvFolder Body Parts">
+ Partes del cuerpo
+ </string>
+ <string name="InvFolder Trash">
+ Papelera
+ </string>
+ <string name="InvFolder Photo Album">
+ Álbum de fotos
+ </string>
+ <string name="InvFolder Lost And Found">
+ Objetos Perdidos
+ </string>
+ <string name="InvFolder Uncompressed Sounds">
+ Sonidos sin comprimir
+ </string>
+ <string name="InvFolder Animations">
+ Animaciones
+ </string>
+ <string name="InvFolder Gestures">
+ Gestos
+ </string>
+ <string name="InvFolder Favorite">
+ Mis Favoritos
+ </string>
+ <string name="InvFolder favorite">
+ Mis Favoritos
+ </string>
+ <string name="InvFolder Favorites">
+ Mis Favoritos
+ </string>
+ <string name="InvFolder favorites">
+ Mis Favoritos
+ </string>
+ <string name="InvFolder Current Outfit">
+ Vestuario actual
+ </string>
+ <string name="InvFolder Initial Outfits">
+ Vestuario inicial
+ </string>
+ <string name="InvFolder My Outfits">
+ Mis vestuarios
+ </string>
+ <string name="InvFolder Accessories">
+ Accesorios
+ </string>
+ <string name="InvFolder Meshes">
+ Redes
+ </string>
+ <string name="InvFolder Received Items">
+ Objetos recibidos
+ </string>
+ <string name="InvFolder Merchant Outbox">
+ Buzón de salida de comerciante
+ </string>
+ <string name="InvFolder Friends">
+ Amigos
+ </string>
+ <string name="InvFolder All">
+ Todas
+ </string>
+ <string name="no_attachments">
+ No tienes puestos anexos
+ </string>
+ <string name="Attachments remain">
+ Anexos (quedan [COUNT] ranuras)
+ </string>
+ <string name="Buy">
+ Comprar
+ </string>
+ <string name="BuyforL$">
+ Comprar por L$
+ </string>
+ <string name="Stone">
+ Piedra
+ </string>
+ <string name="Metal">
+ Metal
+ </string>
+ <string name="Glass">
+ Cristal
+ </string>
+ <string name="Wood">
+ Madera
+ </string>
+ <string name="Flesh">
+ Carne
+ </string>
+ <string name="Plastic">
+ Plástico
+ </string>
+ <string name="Rubber">
+ Goma
+ </string>
+ <string name="Light">
+ Claridad
+ </string>
+ <string name="KBShift">
+ Mayúsculas
+ </string>
+ <string name="KBCtrl">
+ Ctrl
+ </string>
+ <string name="Chest">
+ Tórax
+ </string>
+ <string name="Skull">
+ Cráneo
+ </string>
+ <string name="Left Shoulder">
+ Hombro izquierdo
+ </string>
+ <string name="Right Shoulder">
+ Hombro derecho
+ </string>
+ <string name="Left Hand">
+ Mano izq.
+ </string>
+ <string name="Right Hand">
+ Mano der.
+ </string>
+ <string name="Left Foot">
+ Pie izq.
+ </string>
+ <string name="Right Foot">
+ Pie der.
+ </string>
+ <string name="Spine">
+ Columna
+ </string>
+ <string name="Pelvis">
+ Pelvis
+ </string>
+ <string name="Mouth">
+ Boca
+ </string>
+ <string name="Chin">
+ Barbilla
+ </string>
+ <string name="Left Ear">
+ Oreja izq.
+ </string>
+ <string name="Right Ear">
+ Oreja der.
+ </string>
+ <string name="Left Eyeball">
+ Ojo izq.
+ </string>
+ <string name="Right Eyeball">
+ Ojo der.
+ </string>
+ <string name="Nose">
+ Nariz
+ </string>
+ <string name="R Upper Arm">
+ Brazo der.
+ </string>
+ <string name="R Forearm">
+ Antebrazo der.
+ </string>
+ <string name="L Upper Arm">
+ Brazo izq.
+ </string>
+ <string name="L Forearm">
+ Antebrazo izq.
+ </string>
+ <string name="Right Hip">
+ Cadera der.
+ </string>
+ <string name="R Upper Leg">
+ Muslo der.
+ </string>
+ <string name="R Lower Leg">
+ Pantorrilla der.
+ </string>
+ <string name="Left Hip">
+ Cadera izq.
+ </string>
+ <string name="L Upper Leg">
+ Muslo izq.
+ </string>
+ <string name="L Lower Leg">
+ Pantorrilla izq.
+ </string>
+ <string name="Stomach">
+ Abdomen
+ </string>
+ <string name="Left Pec">
+ Pecho izquierdo
+ </string>
+ <string name="Right Pec">
+ Pecho derecho
+ </string>
+ <string name="Neck">
+ Cuello
+ </string>
+ <string name="Avatar Center">
+ Centro del avatar
+ </string>
+ <string name="Left Ring Finger">
+ Dedo anular izquierdo
+ </string>
+ <string name="Right Ring Finger">
+ Dedo anular derecho
+ </string>
+ <string name="Tail Base">
+ Base de la cola
+ </string>
+ <string name="Tail Tip">
+ Extremo de la cola
+ </string>
+ <string name="Left Wing">
+ Ala izquierda
+ </string>
+ <string name="Right Wing">
+ Ala derecha
+ </string>
+ <string name="Jaw">
+ Mandíbula
+ </string>
+ <string name="Alt Left Ear">
+ Oreja izquierda alternativa
+ </string>
+ <string name="Alt Right Ear">
+ Oreja derecha alternativa
+ </string>
+ <string name="Alt Left Eye">
+ Ojo izquierdo alternativo
+ </string>
+ <string name="Alt Right Eye">
+ Ojo derecho alternativo
+ </string>
+ <string name="Tongue">
+ Lengua
+ </string>
+ <string name="Groin">
+ Ingle
+ </string>
+ <string name="Left Hind Foot">
+ Pata trasera izquierda
+ </string>
+ <string name="Right Hind Foot">
+ Pata trasera derecha
+ </string>
+ <string name="Invalid Attachment">
+ Punto de colocación no válido
+ </string>
+ <string name="ATTACHMENT_MISSING_ITEM">
+ Error: falta un artículo
+ </string>
+ <string name="ATTACHMENT_MISSING_BASE_ITEM">
+ Error: falta el artículo de base
+ </string>
+ <string name="ATTACHMENT_NOT_ATTACHED">
+ Error: el objeto se encuentra en el vestuario actual, pero no está anexado
+ </string>
+ <string name="YearsMonthsOld">
+ [AGEYEARS] [AGEMONTHS] de edad
+ </string>
+ <string name="YearsOld">
+ [AGEYEARS] de edad
+ </string>
+ <string name="MonthsOld">
+ [AGEMONTHS] de edad
+ </string>
+ <string name="WeeksOld">
+ [AGEWEEKS] de edad
+ </string>
+ <string name="DaysOld">
+ [AGEDAYS] de edad
+ </string>
+ <string name="TodayOld">
+ Registrado hoy
+ </string>
+ <string name="av_render_everyone_now">
+ Ahora todos pueden verte.
+ </string>
+ <string name="av_render_not_everyone">
+ Es posible que no todos los que están próximos puedan renderizarte.
+ </string>
+ <string name="av_render_over_half">
+ Es posible que más de la mitad de los que están próximos no puedan renderizarte.
+ </string>
+ <string name="av_render_most_of">
+ Es posible que la mayoría de los que están próximos no puedan renderizarte.
+ </string>
+ <string name="av_render_anyone">
+ Es posible que ninguno de los que están próximos pueda renderizarte.
+ </string>
+ <string name="hud_description_total">
+ Tu HUD
+ </string>
+ <string name="hud_name_with_joint">
+ [OBJ_NAME] (lo llevas en [JNT_NAME])
+ </string>
+ <string name="hud_render_memory_warning">
+ [HUD_DETAILS] usa mucha memoria de textura
+ </string>
+ <string name="hud_render_cost_warning">
+ [HUD_DETAILS] contiene muchas texturas y objetos complicados
+ </string>
+ <string name="hud_render_heavy_textures_warning">
+ [HUD_DETAILS] contiene muchas texturas grandes
+ </string>
+ <string name="hud_render_cramped_warning">
+ [HUD_DETAILS] contiene demasiados objetos
+ </string>
+ <string name="hud_render_textures_warning">
+ [HUD_DETAILS] contiene demasiadas texturas
+ </string>
+ <string name="AgeYearsA">
+ [COUNT] año
+ </string>
+ <string name="AgeYearsB">
+ [COUNT] años
+ </string>
+ <string name="AgeYearsC">
+ [COUNT] años
+ </string>
+ <string name="AgeMonthsA">
+ [COUNT] mes
+ </string>
+ <string name="AgeMonthsB">
+ [COUNT] meses
+ </string>
+ <string name="AgeMonthsC">
+ [COUNT] meses
+ </string>
+ <string name="AgeWeeksA">
+ [COUNT] semana
+ </string>
+ <string name="AgeWeeksB">
+ [COUNT] semanas
+ </string>
+ <string name="AgeWeeksC">
+ [COUNT] semanas
+ </string>
+ <string name="AgeDaysA">
+ [COUNT] día
+ </string>
+ <string name="AgeDaysB">
+ [COUNT] días
+ </string>
+ <string name="AgeDaysC">
+ [COUNT] días
+ </string>
+ <string name="GroupMembersA">
+ [COUNT] miembro
+ </string>
+ <string name="GroupMembersB">
+ [COUNT] miembros
+ </string>
+ <string name="GroupMembersC">
+ [COUNT] miembros
+ </string>
+ <string name="AcctTypeResident">
+ Residente
+ </string>
+ <string name="AcctTypeTrial">
+ Prueba
+ </string>
+ <string name="AcctTypeCharterMember">
+ Miembro fundador
+ </string>
+ <string name="AcctTypeEmployee">
+ Empleado de Linden Lab
+ </string>
+ <string name="PaymentInfoUsed">
+ Ha usado información sobre la forma de pago
+ </string>
+ <string name="PaymentInfoOnFile">
+ Hay información archivada sobre la forma de pago
+ </string>
+ <string name="NoPaymentInfoOnFile">
+ No hay información archivada sobre la forma de pago
+ </string>
+ <string name="AgeVerified">
+ Edad verificada
+ </string>
+ <string name="NotAgeVerified">
+ Edad no verificada
+ </string>
+ <string name="Center 2">
+ Centro 2
+ </string>
+ <string name="Top Right">
+ Arriba der.
+ </string>
+ <string name="Top">
+ Arriba
+ </string>
+ <string name="Top Left">
+ Arriba izq.
+ </string>
+ <string name="Center">
+ Centro
+ </string>
+ <string name="Bottom Left">
+ Abajo izq.
+ </string>
+ <string name="Bottom">
+ Abajo
+ </string>
+ <string name="Bottom Right">
+ Abajo der.
+ </string>
+ <string name="CompileQueueDownloadedCompiling">
+ Descargado, compilándolo
+ </string>
+ <string name="CompileQueueServiceUnavailable">
+ El servicio de compilación de scripts no está disponible
+ </string>
+ <string name="CompileQueueScriptNotFound">
+ No se encuentra el script en el servidor.
+ </string>
+ <string name="CompileQueueProblemDownloading">
+ Problema al descargar
+ </string>
+ <string name="CompileQueueInsufficientPermDownload">
+ Permisos insuficientes para descargar un script.
+ </string>
+ <string name="CompileQueueInsufficientPermFor">
+ Permisos insuficientes para
+ </string>
+ <string name="CompileQueueUnknownFailure">
+ Fallo desconocido en la descarga
+ </string>
+ <string name="CompileNoExperiencePerm">
+ Omitiendo el script [SCRIPT] con la experiencia [EXPERIENCE].
+ </string>
+ <string name="CompileQueueTitle">
+ Recompilando
+ </string>
+ <string name="CompileQueueStart">
+ recompilar
+ </string>
+ <string name="ResetQueueTitle">
+ Progreso del reinicio
+ </string>
+ <string name="ResetQueueStart">
+ restaurar
+ </string>
+ <string name="RunQueueTitle">
+ Configurar según se ejecuta
+ </string>
+ <string name="RunQueueStart">
+ Configurando según se ejecuta
+ </string>
+ <string name="NotRunQueueTitle">
+ Configurar sin ejecutar
+ </string>
+ <string name="NotRunQueueStart">
+ Configurando sin ejecutarlo
+ </string>
+ <string name="CompileSuccessful">
+ ¡Compilación correcta!
+ </string>
+ <string name="CompileSuccessfulSaving">
+ Compilación correcta, guardando...
+ </string>
+ <string name="SaveComplete">
+ Guardado.
+ </string>
+ <string name="UploadFailed">
+ Error al subir el archivo:
+ </string>
+ <string name="ObjectOutOfRange">
+ Script (objeto fuera de rango)
+ </string>
+ <string name="ScriptWasDeleted">
+ Script (eliminado del inventario)
+ </string>
+ <string name="GodToolsObjectOwnedBy">
+ El objeto [OBJECT] es propiedad de [OWNER]
+ </string>
+ <string name="GroupsNone">
+ ninguno
+ </string>
<string name="Group" value="(grupo)"/>
- <string name="Unknown">(Desconocido)</string>
+ <string name="Unknown">
+ (Desconocido)
+ </string>
<string name="SummaryForTheWeek" value="Resumen de esta semana, empezando el "/>
<string name="NextStipendDay" value=". El próximo día de pago es el "/>
- <string name="GroupPlanningDate">[mthnum,datetime,utc]/[day,datetime,utc]/[year,datetime,utc]</string>
+ <string name="GroupPlanningDate">
+ [mthnum,datetime,utc]/[day,datetime,utc]/[year,datetime,utc]
+ </string>
<string name="GroupIndividualShare" value="Grupo Aportaciones individuales"/>
<string name="GroupColumn" value="Grupo"/>
- <string name="Balance">Saldo</string>
- <string name="Credits">Créditos</string>
- <string name="Debits">Débitos</string>
- <string name="Total">Total</string>
- <string name="NoGroupDataFound">No se encontraron datos del grupo</string>
- <string name="IMParentEstate">parent estate</string>
- <string name="IMMainland">continente</string>
- <string name="IMTeen">teen</string>
- <string name="Anyone">cualquiera</string>
- <string name="RegionInfoError">error</string>
- <string name="RegionInfoAllEstatesOwnedBy">todos los estados propiedad de [OWNER]</string>
- <string name="RegionInfoAllEstatesYouOwn">todos los estados que posees</string>
- <string name="RegionInfoAllEstatesYouManage">todos los estados que administras para [OWNER]</string>
- <string name="RegionInfoAllowedResidents">Siempre permitido: ([ALLOWEDAGENTS], de un máx. de [MAXACCESS])</string>
- <string name="RegionInfoAllowedGroups">Grupos siempre permitidos: ([ALLOWEDGROUPS], de un máx. de [MAXACCESS])</string>
- <string name="RegionInfoBannedResidents">Siempre prohibido: ([BANNEDAGENTS], de un máx. de [MAXBANNED])</string>
- <string name="RegionInfoListTypeAllowedAgents">Siempre permitido</string>
- <string name="RegionInfoListTypeBannedAgents">Siempre prohibido</string>
- <string name="RegionInfoAllEstates">todos los estados</string>
- <string name="RegionInfoManagedEstates">estados administrados</string>
- <string name="RegionInfoThisEstate">este estado</string>
- <string name="AndNMore">y [EXTRA_COUNT] más</string>
- <string name="ScriptLimitsParcelScriptMemory">Memoria de los scripts de la parcela</string>
- <string name="ScriptLimitsParcelsOwned">Parcelas listadas: [PARCELS]</string>
- <string name="ScriptLimitsMemoryUsed">Memoria usada: [COUNT] kb de un máx de [MAX] kb; [AVAILABLE] kb disponibles</string>
- <string name="ScriptLimitsMemoryUsedSimple">Memoria usada: [COUNT] kb</string>
- <string name="ScriptLimitsParcelScriptURLs">URLs de los scripts de la parcela</string>
- <string name="ScriptLimitsURLsUsed">URLs usadas: [COUNT] de un máx. de [MAX]; [AVAILABLE] disponibles</string>
- <string name="ScriptLimitsURLsUsedSimple">URLs usadas: [COUNT]</string>
- <string name="ScriptLimitsRequestError">Error al obtener la información</string>
- <string name="ScriptLimitsRequestNoParcelSelected">No hay una parcela seleccionada</string>
- <string name="ScriptLimitsRequestWrongRegion">Error: la información del script sólo está disponible en tu región actual</string>
- <string name="ScriptLimitsRequestWaiting">Obteniendo la información...</string>
- <string name="ScriptLimitsRequestDontOwnParcel">No tienes permiso para examinar esta parcela</string>
- <string name="SITTING_ON">Sentado en</string>
- <string name="ATTACH_CHEST">Tórax</string>
- <string name="ATTACH_HEAD">Cráneo</string>
- <string name="ATTACH_LSHOULDER">Hombro izquierdo</string>
- <string name="ATTACH_RSHOULDER">Hombro derecho</string>
- <string name="ATTACH_LHAND">Mano izq.</string>
- <string name="ATTACH_RHAND">Mano der.</string>
- <string name="ATTACH_LFOOT">Pie izq.</string>
- <string name="ATTACH_RFOOT">Pie der.</string>
- <string name="ATTACH_BACK">Columna</string>
- <string name="ATTACH_PELVIS">Pelvis</string>
- <string name="ATTACH_MOUTH">Boca</string>
- <string name="ATTACH_CHIN">Barbilla</string>
- <string name="ATTACH_LEAR">Oreja izq.</string>
- <string name="ATTACH_REAR">Oreja der.</string>
- <string name="ATTACH_LEYE">Ojo izq.</string>
- <string name="ATTACH_REYE">Ojo der.</string>
- <string name="ATTACH_NOSE">Nariz</string>
- <string name="ATTACH_RUARM">Brazo der.</string>
- <string name="ATTACH_RLARM">Antebrazo derecho</string>
- <string name="ATTACH_LUARM">Brazo izq.</string>
- <string name="ATTACH_LLARM">Antebrazo izquierdo</string>
- <string name="ATTACH_RHIP">Cadera der.</string>
- <string name="ATTACH_RULEG">Muslo der.</string>
- <string name="ATTACH_RLLEG">Pantorrilla der.</string>
- <string name="ATTACH_LHIP">Cadera izq.</string>
- <string name="ATTACH_LULEG">Muslo izq.</string>
- <string name="ATTACH_LLLEG">Pantorrilla izq.</string>
- <string name="ATTACH_BELLY">Abdomen</string>
- <string name="ATTACH_LEFT_PEC">Pectoral izquierdo</string>
- <string name="ATTACH_RIGHT_PEC">Pectoral derecho</string>
- <string name="ATTACH_HUD_CENTER_2">HUD: Centro 2</string>
- <string name="ATTACH_HUD_TOP_RIGHT">HUD: arriba der.</string>
- <string name="ATTACH_HUD_TOP_CENTER">HUD: arriba centro</string>
- <string name="ATTACH_HUD_TOP_LEFT">HUD: arriba izq.</string>
- <string name="ATTACH_HUD_CENTER_1">HUD: Centro 1</string>
- <string name="ATTACH_HUD_BOTTOM_LEFT">HUD: abajo izq.</string>
- <string name="ATTACH_HUD_BOTTOM">HUD: abajo</string>
- <string name="ATTACH_HUD_BOTTOM_RIGHT">HUD: abajo der.</string>
- <string name="ATTACH_NECK">Cuello</string>
- <string name="ATTACH_AVATAR_CENTER">Centro del avatar</string>
- <string name="ATTACH_LHAND_RING1">Dedo anular izquierdo</string>
- <string name="ATTACH_RHAND_RING1">Dedo anular derecho</string>
- <string name="ATTACH_TAIL_BASE">Base de la cola</string>
- <string name="ATTACH_TAIL_TIP">Extremo de la cola</string>
- <string name="ATTACH_LWING">Ala izquierda</string>
- <string name="ATTACH_RWING">Ala derecha</string>
- <string name="ATTACH_FACE_JAW">Mandíbula</string>
- <string name="ATTACH_FACE_LEAR">Oreja izquierda alternativa</string>
- <string name="ATTACH_FACE_REAR">Oreja derecha alternativa</string>
- <string name="ATTACH_FACE_LEYE">Ojo izquierdo alternativo</string>
- <string name="ATTACH_FACE_REYE">Ojo derecho alternativo</string>
- <string name="ATTACH_FACE_TONGUE">Lengua</string>
- <string name="ATTACH_GROIN">Ingle</string>
- <string name="ATTACH_HIND_LFOOT">Pata trasera izquierda</string>
- <string name="ATTACH_HIND_RFOOT">Pata trasera derecha</string>
- <string name="CursorPos">Línea [LINE], Columna [COLUMN]</string>
- <string name="PanelDirCountFound">[COUNT] resultados</string>
- <string name="PanelContentsTooltip">Contenido del objeto</string>
- <string name="PanelContentsNewScript">Script nuevo</string>
- <string name="DoNotDisturbModeResponseDefault">Este residente tiene activado 'No molestar' y verá tu mensaje más tarde.</string>
- <string name="MuteByName">(Por el nombre)</string>
- <string name="MuteAgent">(Residente)</string>
- <string name="MuteObject">(Objeto)</string>
- <string name="MuteGroup">(Grupo)</string>
- <string name="MuteExternal">(Externo)</string>
- <string name="RegionNoCovenant">No se ha aportado un contrato para este estado.</string>
- <string name="RegionNoCovenantOtherOwner">No se ha aportado un contrato para este estado. El terreno de este estado lo vende el propietario del estado, no Linden Lab. Por favor, contacta con ese propietario para informarte sobre la venta.</string>
+ <string name="Balance">
+ Saldo
+ </string>
+ <string name="Credits">
+ Créditos
+ </string>
+ <string name="Debits">
+ Débitos
+ </string>
+ <string name="Total">
+ Total
+ </string>
+ <string name="NoGroupDataFound">
+ No se encontraron datos del grupo
+ </string>
+ <string name="IMParentEstate">
+ parent estate
+ </string>
+ <string name="IMMainland">
+ continente
+ </string>
+ <string name="IMTeen">
+ teen
+ </string>
+ <string name="Anyone">
+ cualquiera
+ </string>
+ <string name="RegionInfoError">
+ error
+ </string>
+ <string name="RegionInfoAllEstatesOwnedBy">
+ todos los estados propiedad de [OWNER]
+ </string>
+ <string name="RegionInfoAllEstatesYouOwn">
+ todos los estados que posees
+ </string>
+ <string name="RegionInfoAllEstatesYouManage">
+ todos los estados que administras para [OWNER]
+ </string>
+ <string name="RegionInfoAllowedResidents">
+ Siempre permitido: ([ALLOWEDAGENTS], de un máx. de [MAXACCESS])
+ </string>
+ <string name="RegionInfoAllowedGroups">
+ Grupos siempre permitidos: ([ALLOWEDGROUPS], de un máx. de [MAXACCESS])
+ </string>
+ <string name="RegionInfoBannedResidents">
+ Siempre prohibido: ([BANNEDAGENTS], de un máx. de [MAXBANNED])
+ </string>
+ <string name="RegionInfoListTypeAllowedAgents">
+ Siempre permitido
+ </string>
+ <string name="RegionInfoListTypeBannedAgents">
+ Siempre prohibido
+ </string>
+ <string name="RegionInfoAllEstates">
+ todos los estados
+ </string>
+ <string name="RegionInfoManagedEstates">
+ estados administrados
+ </string>
+ <string name="RegionInfoThisEstate">
+ este estado
+ </string>
+ <string name="AndNMore">
+ y [EXTRA_COUNT] más
+ </string>
+ <string name="ScriptLimitsParcelScriptMemory">
+ Memoria de los scripts de la parcela
+ </string>
+ <string name="ScriptLimitsParcelsOwned">
+ Parcelas listadas: [PARCELS]
+ </string>
+ <string name="ScriptLimitsMemoryUsed">
+ Memoria usada: [COUNT] kb de un máx de [MAX] kb; [AVAILABLE] kb disponibles
+ </string>
+ <string name="ScriptLimitsMemoryUsedSimple">
+ Memoria usada: [COUNT] kb
+ </string>
+ <string name="ScriptLimitsParcelScriptURLs">
+ URLs de los scripts de la parcela
+ </string>
+ <string name="ScriptLimitsURLsUsed">
+ URLs usadas: [COUNT] de un máx. de [MAX]; [AVAILABLE] disponibles
+ </string>
+ <string name="ScriptLimitsURLsUsedSimple">
+ URLs usadas: [COUNT]
+ </string>
+ <string name="ScriptLimitsRequestError">
+ Error al obtener la información
+ </string>
+ <string name="ScriptLimitsRequestNoParcelSelected">
+ No hay una parcela seleccionada
+ </string>
+ <string name="ScriptLimitsRequestWrongRegion">
+ Error: la información del script sólo está disponible en tu región actual
+ </string>
+ <string name="ScriptLimitsRequestWaiting">
+ Obteniendo la información...
+ </string>
+ <string name="ScriptLimitsRequestDontOwnParcel">
+ No tienes permiso para examinar esta parcela
+ </string>
+ <string name="SITTING_ON">
+ Sentado en
+ </string>
+ <string name="ATTACH_CHEST">
+ Tórax
+ </string>
+ <string name="ATTACH_HEAD">
+ Cráneo
+ </string>
+ <string name="ATTACH_LSHOULDER">
+ Hombro izquierdo
+ </string>
+ <string name="ATTACH_RSHOULDER">
+ Hombro derecho
+ </string>
+ <string name="ATTACH_LHAND">
+ Mano izq.
+ </string>
+ <string name="ATTACH_RHAND">
+ Mano der.
+ </string>
+ <string name="ATTACH_LFOOT">
+ Pie izq.
+ </string>
+ <string name="ATTACH_RFOOT">
+ Pie der.
+ </string>
+ <string name="ATTACH_BACK">
+ Columna
+ </string>
+ <string name="ATTACH_PELVIS">
+ Pelvis
+ </string>
+ <string name="ATTACH_MOUTH">
+ Boca
+ </string>
+ <string name="ATTACH_CHIN">
+ Barbilla
+ </string>
+ <string name="ATTACH_LEAR">
+ Oreja izq.
+ </string>
+ <string name="ATTACH_REAR">
+ Oreja der.
+ </string>
+ <string name="ATTACH_LEYE">
+ Ojo izq.
+ </string>
+ <string name="ATTACH_REYE">
+ Ojo der.
+ </string>
+ <string name="ATTACH_NOSE">
+ Nariz
+ </string>
+ <string name="ATTACH_RUARM">
+ Brazo der.
+ </string>
+ <string name="ATTACH_RLARM">
+ Antebrazo derecho
+ </string>
+ <string name="ATTACH_LUARM">
+ Brazo izq.
+ </string>
+ <string name="ATTACH_LLARM">
+ Antebrazo izquierdo
+ </string>
+ <string name="ATTACH_RHIP">
+ Cadera der.
+ </string>
+ <string name="ATTACH_RULEG">
+ Muslo der.
+ </string>
+ <string name="ATTACH_RLLEG">
+ Pantorrilla der.
+ </string>
+ <string name="ATTACH_LHIP">
+ Cadera izq.
+ </string>
+ <string name="ATTACH_LULEG">
+ Muslo izq.
+ </string>
+ <string name="ATTACH_LLLEG">
+ Pantorrilla izq.
+ </string>
+ <string name="ATTACH_BELLY">
+ Abdomen
+ </string>
+ <string name="ATTACH_LEFT_PEC">
+ Pectoral izquierdo
+ </string>
+ <string name="ATTACH_RIGHT_PEC">
+ Pectoral derecho
+ </string>
+ <string name="ATTACH_HUD_CENTER_2">
+ HUD: Centro 2
+ </string>
+ <string name="ATTACH_HUD_TOP_RIGHT">
+ HUD: arriba der.
+ </string>
+ <string name="ATTACH_HUD_TOP_CENTER">
+ HUD: arriba centro
+ </string>
+ <string name="ATTACH_HUD_TOP_LEFT">
+ HUD: arriba izq.
+ </string>
+ <string name="ATTACH_HUD_CENTER_1">
+ HUD: Centro 1
+ </string>
+ <string name="ATTACH_HUD_BOTTOM_LEFT">
+ HUD: abajo izq.
+ </string>
+ <string name="ATTACH_HUD_BOTTOM">
+ HUD: abajo
+ </string>
+ <string name="ATTACH_HUD_BOTTOM_RIGHT">
+ HUD: abajo der.
+ </string>
+ <string name="ATTACH_NECK">
+ Cuello
+ </string>
+ <string name="ATTACH_AVATAR_CENTER">
+ Centro del avatar
+ </string>
+ <string name="ATTACH_LHAND_RING1">
+ Dedo anular izquierdo
+ </string>
+ <string name="ATTACH_RHAND_RING1">
+ Dedo anular derecho
+ </string>
+ <string name="ATTACH_TAIL_BASE">
+ Base de la cola
+ </string>
+ <string name="ATTACH_TAIL_TIP">
+ Extremo de la cola
+ </string>
+ <string name="ATTACH_LWING">
+ Ala izquierda
+ </string>
+ <string name="ATTACH_RWING">
+ Ala derecha
+ </string>
+ <string name="ATTACH_FACE_JAW">
+ Mandíbula
+ </string>
+ <string name="ATTACH_FACE_LEAR">
+ Oreja izquierda alternativa
+ </string>
+ <string name="ATTACH_FACE_REAR">
+ Oreja derecha alternativa
+ </string>
+ <string name="ATTACH_FACE_LEYE">
+ Ojo izquierdo alternativo
+ </string>
+ <string name="ATTACH_FACE_REYE">
+ Ojo derecho alternativo
+ </string>
+ <string name="ATTACH_FACE_TONGUE">
+ Lengua
+ </string>
+ <string name="ATTACH_GROIN">
+ Ingle
+ </string>
+ <string name="ATTACH_HIND_LFOOT">
+ Pata trasera izquierda
+ </string>
+ <string name="ATTACH_HIND_RFOOT">
+ Pata trasera derecha
+ </string>
+ <string name="CursorPos">
+ Línea [LINE], Columna [COLUMN]
+ </string>
+ <string name="PanelDirCountFound">
+ [COUNT] resultados
+ </string>
+ <string name="PanelContentsTooltip">
+ Contenido del objeto
+ </string>
+ <string name="PanelContentsNewScript">
+ Script nuevo
+ </string>
+ <string name="DoNotDisturbModeResponseDefault">
+ Este residente tiene activado 'No molestar' y verá tu mensaje más tarde.
+ </string>
+ <string name="MuteByName">
+ (Por el nombre)
+ </string>
+ <string name="MuteAgent">
+ (Residente)
+ </string>
+ <string name="MuteObject">
+ (Objeto)
+ </string>
+ <string name="MuteGroup">
+ (Grupo)
+ </string>
+ <string name="MuteExternal">
+ (Externo)
+ </string>
+ <string name="RegionNoCovenant">
+ No se ha aportado un contrato para este estado.
+ </string>
+ <string name="RegionNoCovenantOtherOwner">
+ No se ha aportado un contrato para este estado. El terreno de este estado lo vende el propietario del estado, no Linden Lab. Por favor, contacta con ese propietario para informarte sobre la venta.
+ </string>
<string name="covenant_last_modified" value="Última modificación: "/>
<string name="none_text" value="(no hay)"/>
<string name="never_text" value=" (nunca)"/>
- <string name="GroupOwned">Propiedad del grupo</string>
- <string name="Public">Público</string>
- <string name="LocalSettings">Configuración local</string>
- <string name="RegionSettings">Configuración de la región</string>
- <string name="NoEnvironmentSettings">Esta región no es compatible con las opciones de entorno.</string>
- <string name="EnvironmentSun">Sol</string>
- <string name="EnvironmentMoon">Luna</string>
- <string name="EnvironmentBloom">Florecimiento</string>
- <string name="EnvironmentCloudNoise">Ruido de nubes</string>
- <string name="EnvironmentNormalMap">Vista Normal</string>
- <string name="EnvironmentTransparent">Transparente</string>
- <string name="ClassifiedClicksTxt">Clics: [TELEPORT] teleportes, [MAP] mapa, [PROFILE] perfil</string>
- <string name="ClassifiedUpdateAfterPublish">(se actualizará tras la publicación)</string>
- <string name="NoPicksClassifiedsText">No has creado destacados ni clasificados. Pulsa el botón Más para crear uno.</string>
- <string name="NoPicksText">No has creado destacados. Haz clic en el botón Más para crear uno.</string>
- <string name="NoClassifiedsText">No has creado clasificados. Haz clic en el botón Nuevo para crear un anuncio clasificado.</string>
- <string name="NoAvatarPicksClassifiedsText">El usuario no tiene clasificados ni destacados</string>
- <string name="NoAvatarPicksText">El usuario no tiene destacados</string>
- <string name="NoAvatarClassifiedsText">El usuario no tiene clasificados</string>
- <string name="PicksClassifiedsLoadingText">Cargando...</string>
- <string name="MultiPreviewTitle">Vista previa</string>
- <string name="MultiPropertiesTitle">Propiedades</string>
- <string name="InvOfferAnObjectNamed">Un objeto de nombre</string>
- <string name="InvOfferOwnedByGroup">propiedad del grupo</string>
- <string name="InvOfferOwnedByUnknownGroup">propiedad de un grupo desconocido</string>
- <string name="InvOfferOwnedBy">propiedad de</string>
- <string name="InvOfferOwnedByUnknownUser">propiedad de un usuario desconocido</string>
- <string name="InvOfferGaveYou">te ha dado</string>
- <string name="InvOfferDecline">Rechazas [DESC] de &lt;nolink&gt;[NAME]&lt;/nolink&gt;.</string>
- <string name="GroupMoneyTotal">Total</string>
- <string name="GroupMoneyBought">comprado</string>
- <string name="GroupMoneyPaidYou">pagado a ti</string>
- <string name="GroupMoneyPaidInto">pagado en</string>
- <string name="GroupMoneyBoughtPassTo">pase comprado a</string>
- <string name="GroupMoneyPaidFeeForEvent">cuotas pagadas para el evento</string>
- <string name="GroupMoneyPaidPrizeForEvent">precio pagado por el evento</string>
- <string name="GroupMoneyBalance">Saldo</string>
- <string name="GroupMoneyCredits">Créditos</string>
- <string name="GroupMoneyDebits">Débitos</string>
- <string name="GroupMoneyDate">[weekday,datetime,utc] [mth,datetime,utc] [day,datetime,utc], [year,datetime,utc]</string>
- <string name="AcquiredItems">Artículos adquiridos</string>
- <string name="Cancel">Cancelar</string>
- <string name="UploadingCosts">Subir [NAME] cuesta [AMOUNT] L$</string>
- <string name="BuyingCosts">Comprar esto cuesta [AMOUNT] L$</string>
- <string name="UnknownFileExtension">Extensión de archivo desconocida [.%s]
-Se esperaba .wav, .tga, .bmp, .jpg, .jpeg, o .bvh</string>
- <string name="MuteObject2">Ignorar</string>
- <string name="AddLandmarkNavBarMenu">Guardarme este hito...</string>
- <string name="EditLandmarkNavBarMenu">Editar este hito...</string>
- <string name="accel-mac-control">⌃</string>
- <string name="accel-mac-command">⌘</string>
- <string name="accel-mac-option">⌥</string>
- <string name="accel-mac-shift">⇧</string>
- <string name="accel-win-control">Ctrl+</string>
- <string name="accel-win-alt">Alt+</string>
- <string name="accel-win-shift">Mayús+</string>
- <string name="FileSaved">Archivo guardado</string>
- <string name="Receiving">Recibiendo</string>
- <string name="AM">AM</string>
- <string name="PM">PM</string>
- <string name="PST">PST</string>
- <string name="PDT">PDT</string>
- <string name="Direction_Forward">Adelante</string>
- <string name="Direction_Left">Izquierda</string>
- <string name="Direction_Right">Derecha</string>
- <string name="Direction_Back">Atrás</string>
- <string name="Direction_North">Norte</string>
- <string name="Direction_South">Sur</string>
- <string name="Direction_West">Oeste</string>
- <string name="Direction_East">Este</string>
- <string name="Direction_Up">Arriba</string>
- <string name="Direction_Down">Abajo</string>
- <string name="Any Category">Cualquier categoría</string>
- <string name="Shopping">Compras</string>
- <string name="Land Rental">Terreno en alquiler</string>
- <string name="Property Rental">Propiedad en alquiler</string>
- <string name="Special Attraction">Atracción especial</string>
- <string name="New Products">Nuevos productos</string>
- <string name="Employment">Empleo</string>
- <string name="Wanted">Se busca</string>
- <string name="Service">Servicios</string>
- <string name="Personal">Personal</string>
- <string name="None">Ninguno</string>
- <string name="Linden Location">Localización Linden</string>
- <string name="Adult">Adulto</string>
- <string name="Arts&amp;Culture">Arte y Cultura</string>
- <string name="Business">Negocios</string>
- <string name="Educational">Educativo</string>
- <string name="Gaming">Juegos de azar</string>
- <string name="Hangout">Entretenimiento</string>
- <string name="Newcomer Friendly">Para recién llegados</string>
- <string name="Parks&amp;Nature">Parques y Naturaleza</string>
- <string name="Residential">Residencial</string>
- <string name="Stage">Artes escénicas</string>
- <string name="Other">Otra</string>
- <string name="Rental">Terreno en alquiler</string>
- <string name="Any">Cualquiera</string>
- <string name="You">Tú</string>
- <string name="Multiple Media">Múltiples medias</string>
- <string name="Play Media">Play/Pausa los media</string>
- <string name="IntelDriverPage">http://www.intel.com/p/en_US/support/detect/graphics</string>
- <string name="NvidiaDriverPage">http://www.nvidia.com/Download/index.aspx?lang=es</string>
- <string name="AMDDriverPage">http://support.amd.com/us/Pages/AMDSupportHub.aspx</string>
- <string name="MBCmdLineError">Ha habido un error analizando la línea de comando.
+ <string name="GroupOwned">
+ Propiedad del grupo
+ </string>
+ <string name="Public">
+ Público
+ </string>
+ <string name="LocalSettings">
+ Configuración local
+ </string>
+ <string name="RegionSettings">
+ Configuración de la región
+ </string>
+ <string name="NoEnvironmentSettings">
+ Esta región no es compatible con las opciones de entorno.
+ </string>
+ <string name="EnvironmentSun">
+ Sol
+ </string>
+ <string name="EnvironmentMoon">
+ Luna
+ </string>
+ <string name="EnvironmentBloom">
+ Florecimiento
+ </string>
+ <string name="EnvironmentCloudNoise">
+ Ruido de nubes
+ </string>
+ <string name="EnvironmentNormalMap">
+ Vista Normal
+ </string>
+ <string name="EnvironmentTransparent">
+ Transparente
+ </string>
+ <string name="ClassifiedClicksTxt">
+ Clics: [TELEPORT] teleportes, [MAP] mapa, [PROFILE] perfil
+ </string>
+ <string name="ClassifiedUpdateAfterPublish">
+ (se actualizará tras la publicación)
+ </string>
+ <string name="NoPicksClassifiedsText">
+ No has creado destacados ni clasificados. Pulsa el botón Más para crear uno.
+ </string>
+ <string name="NoPicksText">
+ No has creado destacados. Haz clic en el botón Más para crear uno.
+ </string>
+ <string name="NoClassifiedsText">
+ No has creado clasificados. Haz clic en el botón Nuevo para crear un anuncio clasificado.
+ </string>
+ <string name="NoAvatarPicksClassifiedsText">
+ El usuario no tiene clasificados ni destacados
+ </string>
+ <string name="NoAvatarPicksText">
+ El usuario no tiene destacados
+ </string>
+ <string name="NoAvatarClassifiedsText">
+ El usuario no tiene clasificados
+ </string>
+ <string name="PicksClassifiedsLoadingText">
+ Cargando...
+ </string>
+ <string name="MultiPreviewTitle">
+ Vista previa
+ </string>
+ <string name="MultiPropertiesTitle">
+ Propiedades
+ </string>
+ <string name="InvOfferAnObjectNamed">
+ Un objeto de nombre
+ </string>
+ <string name="InvOfferOwnedByGroup">
+ propiedad del grupo
+ </string>
+ <string name="InvOfferOwnedByUnknownGroup">
+ propiedad de un grupo desconocido
+ </string>
+ <string name="InvOfferOwnedBy">
+ propiedad de
+ </string>
+ <string name="InvOfferOwnedByUnknownUser">
+ propiedad de un usuario desconocido
+ </string>
+ <string name="InvOfferGaveYou">
+ te ha dado
+ </string>
+ <string name="InvOfferDecline">
+ Rechazas [DESC] de &lt;nolink&gt;[NAME]&lt;/nolink&gt;.
+ </string>
+ <string name="GroupMoneyTotal">
+ Total
+ </string>
+ <string name="GroupMoneyBought">
+ comprado
+ </string>
+ <string name="GroupMoneyPaidYou">
+ pagado a ti
+ </string>
+ <string name="GroupMoneyPaidInto">
+ pagado en
+ </string>
+ <string name="GroupMoneyBoughtPassTo">
+ pase comprado a
+ </string>
+ <string name="GroupMoneyPaidFeeForEvent">
+ cuotas pagadas para el evento
+ </string>
+ <string name="GroupMoneyPaidPrizeForEvent">
+ precio pagado por el evento
+ </string>
+ <string name="GroupMoneyBalance">
+ Saldo
+ </string>
+ <string name="GroupMoneyCredits">
+ Créditos
+ </string>
+ <string name="GroupMoneyDebits">
+ Débitos
+ </string>
+ <string name="GroupMoneyDate">
+ [weekday,datetime,utc] [mth,datetime,utc] [day,datetime,utc], [year,datetime,utc]
+ </string>
+ <string name="AcquiredItems">
+ Artículos adquiridos
+ </string>
+ <string name="Cancel">
+ Cancelar
+ </string>
+ <string name="UploadingCosts">
+ Subir [NAME] cuesta [AMOUNT] L$
+ </string>
+ <string name="BuyingCosts">
+ Comprar esto cuesta [AMOUNT] L$
+ </string>
+ <string name="UnknownFileExtension">
+ Extensión de archivo desconocida [.%s]
+Se esperaba .wav, .tga, .bmp, .jpg, .jpeg, o .bvh
+ </string>
+ <string name="MuteObject2">
+ Ignorar
+ </string>
+ <string name="AddLandmarkNavBarMenu">
+ Guardarme este hito...
+ </string>
+ <string name="EditLandmarkNavBarMenu">
+ Editar este hito...
+ </string>
+ <string name="accel-mac-control">
+ ⌃
+ </string>
+ <string name="accel-mac-command">
+ ⌘
+ </string>
+ <string name="accel-mac-option">
+ ⌥
+ </string>
+ <string name="accel-mac-shift">
+ ⇧
+ </string>
+ <string name="accel-win-control">
+ Ctrl+
+ </string>
+ <string name="accel-win-alt">
+ Alt+
+ </string>
+ <string name="accel-win-shift">
+ Mayús+
+ </string>
+ <string name="FileSaved">
+ Archivo guardado
+ </string>
+ <string name="Receiving">
+ Recibiendo
+ </string>
+ <string name="AM">
+ AM
+ </string>
+ <string name="PM">
+ PM
+ </string>
+ <string name="PST">
+ PST
+ </string>
+ <string name="PDT">
+ PDT
+ </string>
+ <string name="Direction_Forward">
+ Adelante
+ </string>
+ <string name="Direction_Left">
+ Izquierda
+ </string>
+ <string name="Direction_Right">
+ Derecha
+ </string>
+ <string name="Direction_Back">
+ Atrás
+ </string>
+ <string name="Direction_North">
+ Norte
+ </string>
+ <string name="Direction_South">
+ Sur
+ </string>
+ <string name="Direction_West">
+ Oeste
+ </string>
+ <string name="Direction_East">
+ Este
+ </string>
+ <string name="Direction_Up">
+ Arriba
+ </string>
+ <string name="Direction_Down">
+ Abajo
+ </string>
+ <string name="Any Category">
+ Cualquier categoría
+ </string>
+ <string name="Shopping">
+ Compras
+ </string>
+ <string name="Land Rental">
+ Terreno en alquiler
+ </string>
+ <string name="Property Rental">
+ Propiedad en alquiler
+ </string>
+ <string name="Special Attraction">
+ Atracción especial
+ </string>
+ <string name="New Products">
+ Nuevos productos
+ </string>
+ <string name="Employment">
+ Empleo
+ </string>
+ <string name="Wanted">
+ Se busca
+ </string>
+ <string name="Service">
+ Servicios
+ </string>
+ <string name="Personal">
+ Personal
+ </string>
+ <string name="None">
+ Ninguno
+ </string>
+ <string name="Linden Location">
+ Localización Linden
+ </string>
+ <string name="Adult">
+ Adulto
+ </string>
+ <string name="Arts&amp;Culture">
+ Arte y Cultura
+ </string>
+ <string name="Business">
+ Negocios
+ </string>
+ <string name="Educational">
+ Educativo
+ </string>
+ <string name="Gaming">
+ Juegos de azar
+ </string>
+ <string name="Hangout">
+ Entretenimiento
+ </string>
+ <string name="Newcomer Friendly">
+ Para recién llegados
+ </string>
+ <string name="Parks&amp;Nature">
+ Parques y Naturaleza
+ </string>
+ <string name="Residential">
+ Residencial
+ </string>
+ <string name="Stage">
+ Artes escénicas
+ </string>
+ <string name="Other">
+ Otra
+ </string>
+ <string name="Rental">
+ Terreno en alquiler
+ </string>
+ <string name="Any">
+ Cualquiera
+ </string>
+ <string name="You">
+ Tú
+ </string>
+ <string name="Multiple Media">
+ Múltiples medias
+ </string>
+ <string name="Play Media">
+ Play/Pausa los media
+ </string>
+ <string name="IntelDriverPage">
+ http://www.intel.com/p/en_US/support/detect/graphics
+ </string>
+ <string name="NvidiaDriverPage">
+ http://www.nvidia.com/Download/index.aspx?lang=es
+ </string>
+ <string name="AMDDriverPage">
+ http://support.amd.com/us/Pages/AMDSupportHub.aspx
+ </string>
+ <string name="MBCmdLineError">
+ Ha habido un error analizando la línea de comando.
Por favor, consulta: http://wiki.secondlife.com/wiki/Client_parameters
-Error:</string>
- <string name="MBCmdLineUsg">[APP_NAME] Uso de línea de comando:</string>
- <string name="MBUnableToAccessFile">[APP_NAME] no puede acceder a un archivo que necesita.
+Error:
+ </string>
+ <string name="MBCmdLineUsg">
+ [APP_NAME] Uso de línea de comando:
+ </string>
+ <string name="MBUnableToAccessFile">
+ [APP_NAME] no puede acceder a un archivo que necesita.
Puede ser porque estés ejecutando varias copias, o porque tu sistema crea -equivocadamente- que el archivo está abierto.
Si este mensaje persiste, reinicia tu ordenador y vuelve a intentarlo.
-Si aun así sigue apareciendo el mensaje, debes desinstalar completamente [APP_NAME] y reinstalarlo.</string>
- <string name="MBFatalError">Error fatal</string>
- <string name="MBRequiresAltiVec">[APP_NAME] requiere un procesador con AltiVec (G4 o posterior).</string>
- <string name="MBAlreadyRunning">[APP_NAME] ya se está ejecutando.
+Si aun así sigue apareciendo el mensaje, debes desinstalar completamente [APP_NAME] y reinstalarlo.
+ </string>
+ <string name="MBFatalError">
+ Error fatal
+ </string>
+ <string name="MBRequiresAltiVec">
+ [APP_NAME] requiere un procesador con AltiVec (G4 o posterior).
+ </string>
+ <string name="MBAlreadyRunning">
+ [APP_NAME] ya se está ejecutando.
Revisa tu barra de tareas para encontrar una copia minimizada del programa.
-Si este mensaje persiste, reinicia tu ordenador.</string>
- <string name="MBFrozenCrashed">En su anterior ejecución, [APP_NAME] se congeló o se cayó.
-¿Quieres enviar un informe de caída?</string>
- <string name="MBAlert">Alerta</string>
- <string name="MBNoDirectX">[APP_NAME] no encuentra DirectX 9.0b o superior.
+Si este mensaje persiste, reinicia tu ordenador.
+ </string>
+ <string name="MBFrozenCrashed">
+ En su anterior ejecución, [APP_NAME] se congeló o se cayó.
+¿Quieres enviar un informe de caída?
+ </string>
+ <string name="MBAlert">
+ Alerta
+ </string>
+ <string name="MBNoDirectX">
+ [APP_NAME] no encuentra DirectX 9.0b o superior.
[APP_NAME] usa DirectX para detectar el hardware o los drivers no actualizados que pueden provocar problemas de estabilidad, ejecución pobre y caídas. Aunque puedes ejecutar [APP_NAME] sin él, recomendamos encarecidamente hacerlo con DirectX 9.0b.
-¿Quieres continuar?</string>
- <string name="MBWarning">¡Atención!</string>
- <string name="MBNoAutoUpdate">Las actualizaciones automáticas no están todavía implementadas para Linux.
-Por favor, descarga la última versión desde www.secondlife.com.</string>
- <string name="MBRegClassFailed">Fallo en RegisterClass</string>
- <string name="MBError">Error</string>
- <string name="MBFullScreenErr">No puede ejecutarse a pantalla completa de [WIDTH] x [HEIGHT].
-Ejecutándose en una ventana.</string>
- <string name="MBDestroyWinFailed">Error Shutdown destruyendo la ventana (DestroyWindow() failed)</string>
- <string name="MBShutdownErr">Error Shutdown</string>
- <string name="MBDevContextErr">No se puede construir el 'GL device context'</string>
- <string name="MBPixelFmtErr">No se puede encontrar un formato adecuado de píxel</string>
- <string name="MBPixelFmtDescErr">No se puede conseguir la descripción del formato de píxel</string>
- <string name="MBTrueColorWindow">Para ejecutarse, [APP_NAME] necesita True Color (32-bit).
-Por favor, en las configuraciones de tu ordenador ajusta el modo de color a 32-bit.</string>
- <string name="MBAlpha">[APP_NAME] no puede ejecutarse porque no puede obtener un canal alpha de 8 bit. Generalmente, se debe a alguna cuestión de los drivers de la tarjeta de vídeo.
+¿Quieres continuar?
+ </string>
+ <string name="MBWarning">
+ ¡Atención!
+ </string>
+ <string name="MBNoAutoUpdate">
+ Las actualizaciones automáticas no están todavía implementadas para Linux.
+Por favor, descarga la última versión desde www.secondlife.com.
+ </string>
+ <string name="MBRegClassFailed">
+ Fallo en RegisterClass
+ </string>
+ <string name="MBError">
+ Error
+ </string>
+ <string name="MBFullScreenErr">
+ No puede ejecutarse a pantalla completa de [WIDTH] x [HEIGHT].
+Ejecutándose en una ventana.
+ </string>
+ <string name="MBDestroyWinFailed">
+ Error Shutdown destruyendo la ventana (DestroyWindow() failed)
+ </string>
+ <string name="MBShutdownErr">
+ Error Shutdown
+ </string>
+ <string name="MBDevContextErr">
+ No se puede construir el 'GL device context'
+ </string>
+ <string name="MBPixelFmtErr">
+ No se puede encontrar un formato adecuado de píxel
+ </string>
+ <string name="MBPixelFmtDescErr">
+ No se puede conseguir la descripción del formato de píxel
+ </string>
+ <string name="MBTrueColorWindow">
+ Para ejecutarse, [APP_NAME] necesita True Color (32-bit).
+Por favor, en las configuraciones de tu ordenador ajusta el modo de color a 32-bit.
+ </string>
+ <string name="MBAlpha">
+ [APP_NAME] no puede ejecutarse porque no puede obtener un canal alpha de 8 bit. Generalmente, se debe a alguna cuestión de los drivers de la tarjeta de vídeo.
Por favor, comprueba que tienes instalados los últimos drivers para tu tarjeta de vídeo.
Comprueba también que tu monitor esta configurado para True Color (32-bit) en Panel de Control &gt; Apariencia y temas &gt; Pantalla.
-Si sigues recibiendo este mensaje, contacta con [SUPPORT_SITE].</string>
- <string name="MBPixelFmtSetErr">No se puede configurar el formato de píxel</string>
- <string name="MBGLContextErr">No se puede crear el 'GL rendering context'</string>
- <string name="MBGLContextActErr">No se puede activar el 'GL rendering context'</string>
- <string name="MBVideoDrvErr">[APP_NAME] no puede ejecutarse porque los drivers de tu tarjeta de vídeo o no están bien instalados, o no están actualizados, o son para hardware no admitido. Por favor, comprueba que tienes los drivers más actuales para tu tarjeta de vídeo, y, aunque los tengas, intenta reinstalarlos.
+Si sigues recibiendo este mensaje, contacta con [SUPPORT_SITE].
+ </string>
+ <string name="MBPixelFmtSetErr">
+ No se puede configurar el formato de píxel
+ </string>
+ <string name="MBGLContextErr">
+ No se puede crear el 'GL rendering context'
+ </string>
+ <string name="MBGLContextActErr">
+ No se puede activar el 'GL rendering context'
+ </string>
+ <string name="MBVideoDrvErr">
+ [APP_NAME] no puede ejecutarse porque los drivers de tu tarjeta de vídeo o no están bien instalados, o no están actualizados, o son para hardware no admitido. Por favor, comprueba que tienes los drivers más actuales para tu tarjeta de vídeo, y, aunque los tengas, intenta reinstalarlos.
-Si sigues recibiendo este mensaje, contacta con [SUPPORT_SITE].</string>
- <string name="5 O'Clock Shadow">Barba del día</string>
- <string name="All White">Blanco del todo</string>
- <string name="Anime Eyes">Ojos de cómic</string>
- <string name="Arced">Arqueadas</string>
- <string name="Arm Length">Brazos: longitud</string>
- <string name="Attached">Cortos</string>
- <string name="Attached Earlobes">Lóbulos</string>
- <string name="Back Fringe">Nuca: largo</string>
- <string name="Baggy">Marcadas</string>
- <string name="Bangs">Bangs</string>
- <string name="Beady Eyes">Ojos pequeños</string>
- <string name="Belly Size">Barriga: tamaño</string>
- <string name="Big">Grande</string>
- <string name="Big Butt">Culo grande</string>
- <string name="Big Hair Back">Pelo: moño</string>
- <string name="Big Hair Front">Pelo: tupé</string>
- <string name="Big Hair Top">Pelo: melena alta</string>
- <string name="Big Head">Cabeza grande</string>
- <string name="Big Pectorals">Grandes pectorales</string>
- <string name="Big Spikes">Crestas grandes</string>
- <string name="Black">Negro</string>
- <string name="Blonde">Rubio</string>
- <string name="Blonde Hair">Pelo rubio</string>
- <string name="Blush">Colorete</string>
- <string name="Blush Color">Color del colorete</string>
- <string name="Blush Opacity">Opacidad del colorete</string>
- <string name="Body Definition">Definición del cuerpo</string>
- <string name="Body Fat">Cuerpo: gordura</string>
- <string name="Body Freckles">Pecas del cuerpo</string>
- <string name="Body Thick">Cuerpo grueso</string>
- <string name="Body Thickness">Cuerpo: grosor</string>
- <string name="Body Thin">Cuerpo delgado</string>
- <string name="Bow Legged">Abiertas</string>
- <string name="Breast Buoyancy">Busto: firmeza</string>
- <string name="Breast Cleavage">Busto: canalillo</string>
- <string name="Breast Size">Busto: tamaño</string>
- <string name="Bridge Width">Puente: ancho</string>
- <string name="Broad">Aumentar</string>
- <string name="Brow Size">Arco ciliar</string>
- <string name="Bug Eyes">Bug Eyes</string>
- <string name="Bugged Eyes">Ojos saltones</string>
- <string name="Bulbous">Bulbosa</string>
- <string name="Bulbous Nose">Nariz de porra</string>
- <string name="Breast Physics Mass">Masa del busto</string>
- <string name="Breast Physics Smoothing">Suavizado del busto</string>
- <string name="Breast Physics Gravity">Gravedad del busto</string>
- <string name="Breast Physics Drag">Aerodinámica del busto</string>
- <string name="Breast Physics InOut Max Effect">Efecto máx.</string>
- <string name="Breast Physics InOut Spring">Elasticidad</string>
- <string name="Breast Physics InOut Gain">Ganancia</string>
- <string name="Breast Physics InOut Damping">Amortiguación</string>
- <string name="Breast Physics UpDown Max Effect">Efecto máx.</string>
- <string name="Breast Physics UpDown Spring">Elasticidad</string>
- <string name="Breast Physics UpDown Gain">Ganancia</string>
- <string name="Breast Physics UpDown Damping">Amortiguación</string>
- <string name="Breast Physics LeftRight Max Effect">Efecto máx.</string>
- <string name="Breast Physics LeftRight Spring">Elasticidad</string>
- <string name="Breast Physics LeftRight Gain">Ganancia</string>
- <string name="Breast Physics LeftRight Damping">Amortiguación</string>
- <string name="Belly Physics Mass">Masa de la barriga</string>
- <string name="Belly Physics Smoothing">Suavizado de la barriga</string>
- <string name="Belly Physics Gravity">Gravedad de la barriga</string>
- <string name="Belly Physics Drag">Aerodinámica de la barriga</string>
- <string name="Belly Physics UpDown Max Effect">Efecto máx.</string>
- <string name="Belly Physics UpDown Spring">Elasticidad</string>
- <string name="Belly Physics UpDown Gain">Ganancia</string>
- <string name="Belly Physics UpDown Damping">Amortiguación</string>
- <string name="Butt Physics Mass">Masa del culo</string>
- <string name="Butt Physics Smoothing">Suavizado del culo</string>
- <string name="Butt Physics Gravity">Gravedad del culo</string>
- <string name="Butt Physics Drag">Aerodinámica del culo</string>
- <string name="Butt Physics UpDown Max Effect">Efecto máx.</string>
- <string name="Butt Physics UpDown Spring">Elasticidad</string>
- <string name="Butt Physics UpDown Gain">Ganancia</string>
- <string name="Butt Physics UpDown Damping">Amortiguación</string>
- <string name="Butt Physics LeftRight Max Effect">Efecto máx.</string>
- <string name="Butt Physics LeftRight Spring">Elasticidad</string>
- <string name="Butt Physics LeftRight Gain">Ganancia</string>
- <string name="Butt Physics LeftRight Damping">Amortiguación</string>
- <string name="Bushy Eyebrows">Cejijuntas</string>
- <string name="Bushy Hair">Pelo tupido</string>
- <string name="Butt Size">Culo: tamaño</string>
- <string name="Butt Gravity">Gravedad del culo</string>
- <string name="bustle skirt">Polisón</string>
- <string name="no bustle">Sin polisón</string>
- <string name="more bustle">Con polisón</string>
- <string name="Chaplin">Cortito</string>
- <string name="Cheek Bones">Pómulos</string>
- <string name="Chest Size">Tórax: tamaño</string>
- <string name="Chin Angle">Barbilla: ángulo</string>
- <string name="Chin Cleft">Barbilla: contorno</string>
- <string name="Chin Curtains">Barba en collar</string>
- <string name="Chin Depth">Barbilla: largo</string>
- <string name="Chin Heavy">Hacia la barbilla</string>
- <string name="Chin In">Barbilla retraída</string>
- <string name="Chin Out">Barbilla prominente</string>
- <string name="Chin-Neck">Papada</string>
- <string name="Clear">Transparente</string>
- <string name="Cleft">Remarcar</string>
- <string name="Close Set Eyes">Ojos juntos</string>
- <string name="Closed">Cerrar</string>
- <string name="Closed Back">Trasera cerrada</string>
- <string name="Closed Front">Frontal cerrado</string>
- <string name="Closed Left">Cerrada</string>
- <string name="Closed Right">Cerrada</string>
- <string name="Coin Purse">Poco abultada</string>
- <string name="Collar Back">Espalda</string>
- <string name="Collar Front">Escote</string>
- <string name="Corner Down">Hacia abajo</string>
- <string name="Corner Up">Hacia arriba</string>
- <string name="Creased">Caídos</string>
- <string name="Crooked Nose">Nariz torcida</string>
- <string name="Cuff Flare">Acampanado</string>
- <string name="Dark">Oscuridad</string>
- <string name="Dark Green">Verde oscuro</string>
- <string name="Darker">Más oscuros</string>
- <string name="Deep">Remarcar</string>
- <string name="Default Heels">Tacones por defecto</string>
- <string name="Dense">Densas</string>
- <string name="Double Chin">Mucha papada</string>
- <string name="Downturned">Poco</string>
- <string name="Duffle Bag">Muy abultada</string>
- <string name="Ear Angle">Orejas: ángulo</string>
- <string name="Ear Size">Orejas: tamaño</string>
- <string name="Ear Tips">Orejas: forma</string>
- <string name="Egg Head">Cabeza: ahuevada</string>
- <string name="Eye Bags">Ojos: bolsas</string>
- <string name="Eye Color">Ojos: color</string>
- <string name="Eye Depth">Ojos: profundidad</string>
- <string name="Eye Lightness">Ojos: brillo</string>
- <string name="Eye Opening">Ojos: apertura</string>
- <string name="Eye Pop">Ojos: simetría</string>
- <string name="Eye Size">Ojos: tamaño</string>
- <string name="Eye Spacing">Ojos: separación</string>
- <string name="Eyebrow Arc">Cejas: arco</string>
- <string name="Eyebrow Density">Cejas: densidad</string>
- <string name="Eyebrow Height">Cejas: altura</string>
- <string name="Eyebrow Points">Cejas: en V</string>
- <string name="Eyebrow Size">Cejas: tamaño</string>
- <string name="Eyelash Length">Pestañas: longitud</string>
- <string name="Eyeliner">Contorno de ojos</string>
- <string name="Eyeliner Color">Contorno de ojos: color</string>
- <string name="Eyes Bugged">Eyes Bugged</string>
- <string name="Face Shear">Cara: simetría</string>
- <string name="Facial Definition">Rasgos marcados</string>
- <string name="Far Set Eyes">Ojos separados</string>
- <string name="Fat Lips">Prominentes</string>
- <string name="Female">Mujer</string>
- <string name="Fingerless">Sin dedos</string>
- <string name="Fingers">Con dedos</string>
- <string name="Flared Cuffs">Campana</string>
- <string name="Flat">Redondeadas</string>
- <string name="Flat Butt">Culo plano</string>
- <string name="Flat Head">Cabeza plana</string>
- <string name="Flat Toe">Empeine bajo</string>
- <string name="Foot Size">Pie: tamaño</string>
- <string name="Forehead Angle">Frente: ángulo</string>
- <string name="Forehead Heavy">Hacia la frente</string>
- <string name="Freckles">Pecas</string>
- <string name="Front Fringe">Flequillo</string>
- <string name="Full Back">Sin cortar</string>
- <string name="Full Eyeliner">Contorno completo</string>
- <string name="Full Front">Sin cortar</string>
- <string name="Full Hair Sides">Pelo: volumen a los lados</string>
- <string name="Full Sides">Volumen total</string>
- <string name="Glossy">Con brillo</string>
- <string name="Glove Fingers">Guantes: dedos</string>
- <string name="Glove Length">Guantes: largo</string>
- <string name="Hair">Pelo</string>
- <string name="Hair Back">Pelo: nuca</string>
- <string name="Hair Front">Pelo: delante</string>
- <string name="Hair Sides">Pelo: lados</string>
- <string name="Hair Sweep">Peinado: dirección</string>
- <string name="Hair Thickess">Pelo: espesor</string>
- <string name="Hair Thickness">Pelo: espesor</string>
- <string name="Hair Tilt">Pelo: inclinación</string>
- <string name="Hair Tilted Left">A la izq.</string>
- <string name="Hair Tilted Right">A la der.</string>
- <string name="Hair Volume">Pelo: volumen</string>
- <string name="Hand Size">Manos: tamaño</string>
- <string name="Handlebars">Muy largo</string>
- <string name="Head Length">Cabeza: longitud</string>
- <string name="Head Shape">Cabeza: forma</string>
- <string name="Head Size">Cabeza: tamaño</string>
- <string name="Head Stretch">Cabeza: estiramiento</string>
- <string name="Heel Height">Tacón: altura</string>
- <string name="Heel Shape">Tacón: forma</string>
- <string name="Height">Altura</string>
- <string name="High">Subir</string>
- <string name="High Heels">Tacones altos</string>
- <string name="High Jaw">Mandíbula alta</string>
- <string name="High Platforms">Suela gorda</string>
- <string name="High and Tight">Pegada</string>
- <string name="Higher">Arrriba</string>
- <string name="Hip Length">Cadera: altura</string>
- <string name="Hip Width">Cadera: ancho</string>
- <string name="Hover">Pasa el cursor</string>
- <string name="In">Pegadas</string>
- <string name="In Shdw Color">Línea de ojos: color</string>
- <string name="In Shdw Opacity">Línea de ojos: opacidad</string>
- <string name="Inner Eye Corner">Ojos: lagrimal</string>
- <string name="Inner Eye Shadow">Inner Eye Shadow</string>
- <string name="Inner Shadow">Línea de ojos</string>
- <string name="Jacket Length">Chaqueta: largo</string>
- <string name="Jacket Wrinkles">Chaqueta: arrugas</string>
- <string name="Jaw Angle">Mandíbula: ángulo</string>
- <string name="Jaw Jut">Maxilar inferior</string>
- <string name="Jaw Shape">Mandíbula: forma</string>
- <string name="Join">Más junto</string>
- <string name="Jowls">Mofletes</string>
- <string name="Knee Angle">Rodillas: ángulo</string>
- <string name="Knock Kneed">Zambas</string>
- <string name="Large">Aumentar</string>
- <string name="Large Hands">Manos grandes</string>
- <string name="Left Part">Raya: izq.</string>
- <string name="Leg Length">Piernas: longitud</string>
- <string name="Leg Muscles">Piernas: musculatura</string>
- <string name="Less">Menos</string>
- <string name="Less Body Fat">Menos gordura</string>
- <string name="Less Curtains">Menos tupida</string>
- <string name="Less Freckles">Menos pecas</string>
- <string name="Less Full">Menos grosor</string>
- <string name="Less Gravity">Más levantado</string>
- <string name="Less Love">Menos michelines</string>
- <string name="Less Muscles">Pocos músculos</string>
- <string name="Less Muscular">Poca musculatura</string>
- <string name="Less Rosy">Menos sonrosada</string>
- <string name="Less Round">Menos redondeada</string>
- <string name="Less Saddle">Menos cartucheras</string>
- <string name="Less Square">Menos cuadrada</string>
- <string name="Less Volume">Menos volumen</string>
- <string name="Less soul">Pequeña</string>
- <string name="Lighter">Más luminosos</string>
- <string name="Lip Cleft">Labio: hoyuelo</string>
- <string name="Lip Cleft Depth">Hoyuelo marcado</string>
- <string name="Lip Fullness">Labios: grosor</string>
- <string name="Lip Pinkness">Labios sonrosados</string>
- <string name="Lip Ratio">Labios: ratio</string>
- <string name="Lip Thickness">Labios: prominencia</string>
- <string name="Lip Width">Labios: ancho</string>
- <string name="Lipgloss">Brillo de labios</string>
- <string name="Lipstick">Barra de labios</string>
- <string name="Lipstick Color">Barra de labios: color</string>
- <string name="Long">Más</string>
- <string name="Long Head">Cabeza alargada</string>
- <string name="Long Hips">Cadera larga</string>
- <string name="Long Legs">Piernas largas</string>
- <string name="Long Neck">Cuello largo</string>
- <string name="Long Pigtails">Coletas largas</string>
- <string name="Long Ponytail">Cola de caballo larga</string>
- <string name="Long Torso">Torso largo</string>
- <string name="Long arms">Brazos largos</string>
- <string name="Loose Pants">Pantalón suelto</string>
- <string name="Loose Shirt">Camiseta suelta</string>
- <string name="Loose Sleeves">Puños anchos</string>
- <string name="Love Handles">Michelines</string>
- <string name="Low">Bajar</string>
- <string name="Low Heels">Tacones bajos</string>
- <string name="Low Jaw">Mandíbula baja</string>
- <string name="Low Platforms">Suela fina</string>
- <string name="Low and Loose">Suelta</string>
- <string name="Lower">Abajo</string>
- <string name="Lower Bridge">Puente: abajo</string>
- <string name="Lower Cheeks">Mejillas: abajo</string>
- <string name="Male">Varón</string>
- <string name="Middle Part">Raya: en medio</string>
- <string name="More">Más</string>
- <string name="More Blush">Más colorete</string>
- <string name="More Body Fat">Más gordura</string>
- <string name="More Curtains">Más tupida</string>
- <string name="More Eyeshadow">Más</string>
- <string name="More Freckles">Más pecas</string>
- <string name="More Full">Más grosor</string>
- <string name="More Gravity">Menos levantado</string>
- <string name="More Lipstick">Más barra de labios</string>
- <string name="More Love">Más michelines</string>
- <string name="More Lower Lip">Más el inferior</string>
- <string name="More Muscles">Más músculos</string>
- <string name="More Muscular">Más musculatura</string>
- <string name="More Rosy">Más sonrosada</string>
- <string name="More Round">Más redondeada</string>
- <string name="More Saddle">Más cartucheras</string>
- <string name="More Sloped">Más inclinada</string>
- <string name="More Square">Más cuadrada</string>
- <string name="More Upper Lip">Más el superior</string>
- <string name="More Vertical">Más recta</string>
- <string name="More Volume">Más volumen</string>
- <string name="More soul">Grande</string>
- <string name="Moustache">Bigote</string>
- <string name="Mouth Corner">Comisuras</string>
- <string name="Mouth Position">Boca: posición</string>
- <string name="Mowhawk">Rapado</string>
- <string name="Muscular">Muscular</string>
- <string name="Mutton Chops">Patillas largas</string>
- <string name="Nail Polish">Uñas pintadas</string>
- <string name="Nail Polish Color">Uñas pintadas: color</string>
- <string name="Narrow">Disminuir</string>
- <string name="Narrow Back">Rapada</string>
- <string name="Narrow Front">Entradas</string>
- <string name="Narrow Lips">Labios estrechos</string>
- <string name="Natural">Natural</string>
- <string name="Neck Length">Cuello: longitud</string>
- <string name="Neck Thickness">Cuello: grosor</string>
- <string name="No Blush">Sin colorete</string>
- <string name="No Eyeliner">Sin contorno</string>
- <string name="No Eyeshadow">Menos</string>
- <string name="No Lipgloss">Sin brillo</string>
- <string name="No Lipstick">Sin barra de labios</string>
- <string name="No Part">Sin raya</string>
- <string name="No Polish">Sin pintar</string>
- <string name="No Red">Nada</string>
- <string name="No Spikes">Sin crestas</string>
- <string name="No White">Sin blanco</string>
- <string name="No Wrinkles">Sin arrugas</string>
- <string name="Normal Lower">Normal Lower</string>
- <string name="Normal Upper">Normal Upper</string>
- <string name="Nose Left">Nariz a la izq.</string>
- <string name="Nose Right">Nariz a la der.</string>
- <string name="Nose Size">Nariz: tamaño</string>
- <string name="Nose Thickness">Nariz: grosor</string>
- <string name="Nose Tip Angle">Nariz: respingona</string>
- <string name="Nose Tip Shape">Nariz: punta</string>
- <string name="Nose Width">Nariz: ancho</string>
- <string name="Nostril Division">Ventana: altura</string>
- <string name="Nostril Width">Ventana: ancho</string>
- <string name="Opaque">Opaco</string>
- <string name="Open">Abrir</string>
- <string name="Open Back">Apertura trasera</string>
- <string name="Open Front">Apertura frontal</string>
- <string name="Open Left">Abierta</string>
- <string name="Open Right">Abierta</string>
- <string name="Orange">Anaranjado</string>
- <string name="Out">De soplillo</string>
- <string name="Out Shdw Color">Sombra de ojos: color</string>
- <string name="Out Shdw Opacity">Sombra de ojos: opacidad</string>
- <string name="Outer Eye Corner">Ojos: comisura</string>
- <string name="Outer Eye Shadow">Outer Eye Shadow</string>
- <string name="Outer Shadow">Sombra de ojos</string>
- <string name="Overbite">Retraído</string>
- <string name="Package">Pubis</string>
- <string name="Painted Nails">Pintadas</string>
- <string name="Pale">Pálida</string>
- <string name="Pants Crotch">Pantalón: cruz</string>
- <string name="Pants Fit">Ceñido</string>
- <string name="Pants Length">Pernera: largo</string>
- <string name="Pants Waist">Caja</string>
- <string name="Pants Wrinkles">Pantalón: arrugas</string>
- <string name="Part">Raya</string>
- <string name="Part Bangs">Flequillo partido</string>
- <string name="Pectorals">Pectorales</string>
- <string name="Pigment">Tono</string>
- <string name="Pigtails">Coletas</string>
- <string name="Pink">Rosa</string>
- <string name="Pinker">Más sonrosados</string>
- <string name="Platform Height">Suela: altura</string>
- <string name="Platform Width">Suela: ancho</string>
- <string name="Pointy">En punta</string>
- <string name="Pointy Heels">De aguja</string>
- <string name="Ponytail">Cola de caballo</string>
- <string name="Poofy Skirt">Con vuelo</string>
- <string name="Pop Left Eye">Izquierdo más grande</string>
- <string name="Pop Right Eye">Derecho más grande</string>
- <string name="Puffy">Hinchadas</string>
- <string name="Puffy Eyelids">Ojeras</string>
- <string name="Rainbow Color">Irisación</string>
- <string name="Red Hair">Pelirrojo</string>
- <string name="Regular">Regular</string>
- <string name="Right Part">Raya: der.</string>
- <string name="Rosy Complexion">Tez sonrosada</string>
- <string name="Round">Redondear</string>
- <string name="Ruddiness">Rubicundez</string>
- <string name="Ruddy">Rojiza</string>
- <string name="Rumpled Hair">Pelo encrespado</string>
- <string name="Saddle Bags">Cartucheras</string>
- <string name="Scrawny Leg">Piernas flacas</string>
- <string name="Separate">Más ancho</string>
- <string name="Shallow">Sin marcar</string>
- <string name="Shear Back">Nuca: corte</string>
- <string name="Shear Face">Shear Face</string>
- <string name="Shear Front">Shear Front</string>
- <string name="Shear Left Up">Arriba - izq.</string>
- <string name="Shear Right Up">Arriba - der.</string>
- <string name="Sheared Back">Rapada</string>
- <string name="Sheared Front">Rapada</string>
- <string name="Shift Left">A la izq.</string>
- <string name="Shift Mouth">Boca: ladeada</string>
- <string name="Shift Right">A la der.</string>
- <string name="Shirt Bottom">Alto de cintura</string>
- <string name="Shirt Fit">Ceñido</string>
- <string name="Shirt Wrinkles">Camisa: arrugas</string>
- <string name="Shoe Height">Caña: altura</string>
- <string name="Short">Menos</string>
- <string name="Short Arms">Brazos cortos</string>
- <string name="Short Legs">Piernas cortas</string>
- <string name="Short Neck">Cuello corto</string>
- <string name="Short Pigtails">Coletas cortas</string>
- <string name="Short Ponytail">Cola de caballo corta</string>
- <string name="Short Sideburns">Patillas cortas</string>
- <string name="Short Torso">Torso corto</string>
- <string name="Short hips">Cadera corta</string>
- <string name="Shoulders">Hombros</string>
- <string name="Side Fringe">Lados: franja</string>
- <string name="Sideburns">Patillas</string>
- <string name="Sides Hair">Pelo: lados</string>
- <string name="Sides Hair Down">Bajar lados del pelo</string>
- <string name="Sides Hair Up">Subir lados del pelo</string>
- <string name="Skinny Neck">Cuello estrecho</string>
- <string name="Skirt Fit">Falda: vuelo</string>
- <string name="Skirt Length">Falda: largo</string>
- <string name="Slanted Forehead">Slanted Forehead</string>
- <string name="Sleeve Length">Largo de manga</string>
- <string name="Sleeve Looseness">Ancho de puños</string>
- <string name="Slit Back">Raja trasera</string>
- <string name="Slit Front">Raja frontal</string>
- <string name="Slit Left">Raja a la izq.</string>
- <string name="Slit Right">Raja a la der.</string>
- <string name="Small">Disminuir</string>
- <string name="Small Hands">Manos pequeñas</string>
- <string name="Small Head">Cabeza pequeña</string>
- <string name="Smooth">Leves</string>
- <string name="Smooth Hair">Pelo liso</string>
- <string name="Socks Length">Calcetines: largo</string>
- <string name="Soulpatch">Perilla</string>
- <string name="Sparse">Depiladas</string>
- <string name="Spiked Hair">Crestas</string>
- <string name="Square">Cuadrada</string>
- <string name="Square Toe">Punta cuadrada</string>
- <string name="Squash Head">Cabeza aplastada</string>
- <string name="Stretch Head">Cabeza estirada</string>
- <string name="Sunken">Chupadas</string>
- <string name="Sunken Chest">Estrecho de pecho</string>
- <string name="Sunken Eyes">Ojos hundidos</string>
- <string name="Sweep Back">Sweep Back</string>
- <string name="Sweep Forward">Sweep Forward</string>
- <string name="Tall">Más</string>
- <string name="Taper Back">Cubierta trasera</string>
- <string name="Taper Front">Cubierta frontal</string>
- <string name="Thick Heels">Tacones grandes</string>
- <string name="Thick Neck">Cuello ancho</string>
- <string name="Thick Toe">Empeine alto</string>
- <string name="Thin">Delgadas</string>
- <string name="Thin Eyebrows">Cejas finas</string>
- <string name="Thin Lips">Hacia dentro</string>
- <string name="Thin Nose">Nariz fina</string>
- <string name="Tight Chin">Poca papada</string>
- <string name="Tight Cuffs">Sin campana</string>
- <string name="Tight Pants">Pantalón ceñido</string>
- <string name="Tight Shirt">Camisa ceñida</string>
- <string name="Tight Skirt">Falda ceñida</string>
- <string name="Tight Sleeves">Puños ceñidos</string>
- <string name="Toe Shape">Punta: forma</string>
- <string name="Toe Thickness">Empeine</string>
- <string name="Torso Length">Torso: longitud</string>
- <string name="Torso Muscles">Torso: musculatura</string>
- <string name="Torso Scrawny">Torso flacucho</string>
- <string name="Unattached">Largos</string>
- <string name="Uncreased">Abiertos</string>
- <string name="Underbite">Prognatismo</string>
- <string name="Unnatural">No natural</string>
- <string name="Upper Bridge">Puente: arriba</string>
- <string name="Upper Cheeks">Mejillas: arriba</string>
- <string name="Upper Chin Cleft">Barbilla: prominencia</string>
- <string name="Upper Eyelid Fold">Párpados</string>
- <string name="Upturned">Mucho</string>
- <string name="Very Red">Del todo</string>
- <string name="Waist Height">Cintura</string>
- <string name="Well-Fed">Mofletes</string>
- <string name="White Hair">Pelo blanco</string>
- <string name="Wide">Aumentar</string>
- <string name="Wide Back">Completa</string>
- <string name="Wide Front">Completa</string>
- <string name="Wide Lips">Labios anchos</string>
- <string name="Wild">Total</string>
- <string name="Wrinkles">Arrugas</string>
- <string name="LocationCtrlAddLandmarkTooltip">Añadir a mis hitos</string>
- <string name="LocationCtrlEditLandmarkTooltip">Editar mis hitos</string>
- <string name="LocationCtrlInfoBtnTooltip">Ver más información de esta localización</string>
- <string name="LocationCtrlComboBtnTooltip">Historial de mis localizaciones</string>
- <string name="LocationCtrlForSaleTooltip">Comprar este terreno</string>
- <string name="LocationCtrlAdultIconTooltip">Región Adulta</string>
- <string name="LocationCtrlModerateIconTooltip">Región Moderada</string>
- <string name="LocationCtrlGeneralIconTooltip">Región General</string>
- <string name="LocationCtrlSeeAVsTooltip">Los avatares que están en esta parcela no pueden ser vistos ni escuchados por los que están fuera de ella</string>
- <string name="LocationCtrlPathfindingDirtyTooltip">Los objetos que se mueven pueden presentar un comportamiento incorrecto en la región hasta que ésta se recargue.</string>
- <string name="LocationCtrlPathfindingDisabledTooltip">Esta región no tiene activado el pathfinding dinámico.</string>
- <string name="UpdaterWindowTitle">Actualizar [APP_NAME]</string>
- <string name="UpdaterNowUpdating">Actualizando [APP_NAME]...</string>
- <string name="UpdaterNowInstalling">Instalando [APP_NAME]...</string>
- <string name="UpdaterUpdatingDescriptive">Tu visor [APP_NAME] se está actualizando a la última versión. Llevará algún tiempo, paciencia.</string>
- <string name="UpdaterProgressBarTextWithEllipses">Descargando la actualización...</string>
- <string name="UpdaterProgressBarText">Descargando la actualización</string>
- <string name="UpdaterFailDownloadTitle">Fallo en la descarga de la actualización</string>
- <string name="UpdaterFailUpdateDescriptive">Ha habido un error actualizando [APP_NAME]. Por favor, descarga la última versión desde www.secondlife.com.</string>
- <string name="UpdaterFailInstallTitle">Fallo al instalar la actualización</string>
- <string name="UpdaterFailStartTitle">Fallo al iniciar el visor</string>
- <string name="ItemsComingInTooFastFrom">[APP_NAME]: Los ítems se reciben muy rápido de [FROM_NAME]; desactivada la vista previa automática durante [TIME] sgs.</string>
- <string name="ItemsComingInTooFast">[APP_NAME]: Los ítems se reciben muy rápido; desactivada la vista previa automática durante [TIME] sgs.</string>
- <string name="IM_logging_string">-- Activado el registro de los mensajes instantáneos --</string>
- <string name="IM_typing_start_string">[NAME] está escribiendo...</string>
- <string name="Unnamed">(sin nombre)</string>
- <string name="IM_moderated_chat_label">(Moderado: por defecto, desactivada la voz)</string>
- <string name="IM_unavailable_text_label">Para esta llamada no está disponible el chat de texto.</string>
- <string name="IM_muted_text_label">Un moderador del grupo ha desactivado tu chat de texto.</string>
- <string name="IM_default_text_label">Pulsa aquí para enviar un mensaje instantáneo.</string>
- <string name="IM_to_label">A</string>
- <string name="IM_moderator_label">(Moderador)</string>
- <string name="Saved_message">(Guardado [LONG_TIMESTAMP])</string>
- <string name="OnlineStatus">Conectado/a</string>
- <string name="OfflineStatus">Desconectado/a</string>
- <string name="not_online_msg">El usuario no está conectado: el mensaje se almacenará para entregárselo más tarde.</string>
- <string name="not_online_inventory">El usuario no está conectado: el inventario se ha guardado.</string>
- <string name="answered_call">Han respondido a tu llamada</string>
- <string name="you_started_call">Has iniciado una llamada de voz</string>
- <string name="you_joined_call">Has entrado en la llamada de voz</string>
- <string name="you_auto_rejected_call-im">Rechazaste la llamada de voz automáticamente porque estaba activado 'No molestar'.</string>
- <string name="name_started_call">[NAME] inició una llamada de voz</string>
- <string name="ringing-im">Haciendo la llamada de voz...</string>
- <string name="connected-im">Conectado, pulsa Colgar para salir</string>
- <string name="hang_up-im">Se colgó la llamada de voz</string>
- <string name="conference-title">Chat multi-persona</string>
- <string name="conference-title-incoming">Conferencia con [AGENT_NAME]</string>
- <string name="inventory_item_offered-im">Ítem del inventario '[ITEM_NAME]' ofrecido</string>
- <string name="inventory_folder_offered-im">Carpeta del inventario '[ITEM_NAME]' ofrecida</string>
+Si sigues recibiendo este mensaje, contacta con [SUPPORT_SITE].
+ </string>
+ <string name="5 O'Clock Shadow">
+ Barba del día
+ </string>
+ <string name="All White">
+ Blanco del todo
+ </string>
+ <string name="Anime Eyes">
+ Ojos de cómic
+ </string>
+ <string name="Arced">
+ Arqueadas
+ </string>
+ <string name="Arm Length">
+ Brazos: longitud
+ </string>
+ <string name="Attached">
+ Cortos
+ </string>
+ <string name="Attached Earlobes">
+ Lóbulos
+ </string>
+ <string name="Back Fringe">
+ Nuca: largo
+ </string>
+ <string name="Baggy">
+ Marcadas
+ </string>
+ <string name="Bangs">
+ Bangs
+ </string>
+ <string name="Beady Eyes">
+ Ojos pequeños
+ </string>
+ <string name="Belly Size">
+ Barriga: tamaño
+ </string>
+ <string name="Big">
+ Grande
+ </string>
+ <string name="Big Butt">
+ Culo grande
+ </string>
+ <string name="Big Hair Back">
+ Pelo: moño
+ </string>
+ <string name="Big Hair Front">
+ Pelo: tupé
+ </string>
+ <string name="Big Hair Top">
+ Pelo: melena alta
+ </string>
+ <string name="Big Head">
+ Cabeza grande
+ </string>
+ <string name="Big Pectorals">
+ Grandes pectorales
+ </string>
+ <string name="Big Spikes">
+ Crestas grandes
+ </string>
+ <string name="Black">
+ Negro
+ </string>
+ <string name="Blonde">
+ Rubio
+ </string>
+ <string name="Blonde Hair">
+ Pelo rubio
+ </string>
+ <string name="Blush">
+ Colorete
+ </string>
+ <string name="Blush Color">
+ Color del colorete
+ </string>
+ <string name="Blush Opacity">
+ Opacidad del colorete
+ </string>
+ <string name="Body Definition">
+ Definición del cuerpo
+ </string>
+ <string name="Body Fat">
+ Cuerpo: gordura
+ </string>
+ <string name="Body Freckles">
+ Pecas del cuerpo
+ </string>
+ <string name="Body Thick">
+ Cuerpo grueso
+ </string>
+ <string name="Body Thickness">
+ Cuerpo: grosor
+ </string>
+ <string name="Body Thin">
+ Cuerpo delgado
+ </string>
+ <string name="Bow Legged">
+ Abiertas
+ </string>
+ <string name="Breast Buoyancy">
+ Busto: firmeza
+ </string>
+ <string name="Breast Cleavage">
+ Busto: canalillo
+ </string>
+ <string name="Breast Size">
+ Busto: tamaño
+ </string>
+ <string name="Bridge Width">
+ Puente: ancho
+ </string>
+ <string name="Broad">
+ Aumentar
+ </string>
+ <string name="Brow Size">
+ Arco ciliar
+ </string>
+ <string name="Bug Eyes">
+ Bug Eyes
+ </string>
+ <string name="Bugged Eyes">
+ Ojos saltones
+ </string>
+ <string name="Bulbous">
+ Bulbosa
+ </string>
+ <string name="Bulbous Nose">
+ Nariz de porra
+ </string>
+ <string name="Breast Physics Mass">
+ Masa del busto
+ </string>
+ <string name="Breast Physics Smoothing">
+ Suavizado del busto
+ </string>
+ <string name="Breast Physics Gravity">
+ Gravedad del busto
+ </string>
+ <string name="Breast Physics Drag">
+ Aerodinámica del busto
+ </string>
+ <string name="Breast Physics InOut Max Effect">
+ Efecto máx.
+ </string>
+ <string name="Breast Physics InOut Spring">
+ Elasticidad
+ </string>
+ <string name="Breast Physics InOut Gain">
+ Ganancia
+ </string>
+ <string name="Breast Physics InOut Damping">
+ Amortiguación
+ </string>
+ <string name="Breast Physics UpDown Max Effect">
+ Efecto máx.
+ </string>
+ <string name="Breast Physics UpDown Spring">
+ Elasticidad
+ </string>
+ <string name="Breast Physics UpDown Gain">
+ Ganancia
+ </string>
+ <string name="Breast Physics UpDown Damping">
+ Amortiguación
+ </string>
+ <string name="Breast Physics LeftRight Max Effect">
+ Efecto máx.
+ </string>
+ <string name="Breast Physics LeftRight Spring">
+ Elasticidad
+ </string>
+ <string name="Breast Physics LeftRight Gain">
+ Ganancia
+ </string>
+ <string name="Breast Physics LeftRight Damping">
+ Amortiguación
+ </string>
+ <string name="Belly Physics Mass">
+ Masa de la barriga
+ </string>
+ <string name="Belly Physics Smoothing">
+ Suavizado de la barriga
+ </string>
+ <string name="Belly Physics Gravity">
+ Gravedad de la barriga
+ </string>
+ <string name="Belly Physics Drag">
+ Aerodinámica de la barriga
+ </string>
+ <string name="Belly Physics UpDown Max Effect">
+ Efecto máx.
+ </string>
+ <string name="Belly Physics UpDown Spring">
+ Elasticidad
+ </string>
+ <string name="Belly Physics UpDown Gain">
+ Ganancia
+ </string>
+ <string name="Belly Physics UpDown Damping">
+ Amortiguación
+ </string>
+ <string name="Butt Physics Mass">
+ Masa del culo
+ </string>
+ <string name="Butt Physics Smoothing">
+ Suavizado del culo
+ </string>
+ <string name="Butt Physics Gravity">
+ Gravedad del culo
+ </string>
+ <string name="Butt Physics Drag">
+ Aerodinámica del culo
+ </string>
+ <string name="Butt Physics UpDown Max Effect">
+ Efecto máx.
+ </string>
+ <string name="Butt Physics UpDown Spring">
+ Elasticidad
+ </string>
+ <string name="Butt Physics UpDown Gain">
+ Ganancia
+ </string>
+ <string name="Butt Physics UpDown Damping">
+ Amortiguación
+ </string>
+ <string name="Butt Physics LeftRight Max Effect">
+ Efecto máx.
+ </string>
+ <string name="Butt Physics LeftRight Spring">
+ Elasticidad
+ </string>
+ <string name="Butt Physics LeftRight Gain">
+ Ganancia
+ </string>
+ <string name="Butt Physics LeftRight Damping">
+ Amortiguación
+ </string>
+ <string name="Bushy Eyebrows">
+ Cejijuntas
+ </string>
+ <string name="Bushy Hair">
+ Pelo tupido
+ </string>
+ <string name="Butt Size">
+ Culo: tamaño
+ </string>
+ <string name="Butt Gravity">
+ Gravedad del culo
+ </string>
+ <string name="bustle skirt">
+ Polisón
+ </string>
+ <string name="no bustle">
+ Sin polisón
+ </string>
+ <string name="more bustle">
+ Con polisón
+ </string>
+ <string name="Chaplin">
+ Cortito
+ </string>
+ <string name="Cheek Bones">
+ Pómulos
+ </string>
+ <string name="Chest Size">
+ Tórax: tamaño
+ </string>
+ <string name="Chin Angle">
+ Barbilla: ángulo
+ </string>
+ <string name="Chin Cleft">
+ Barbilla: contorno
+ </string>
+ <string name="Chin Curtains">
+ Barba en collar
+ </string>
+ <string name="Chin Depth">
+ Barbilla: largo
+ </string>
+ <string name="Chin Heavy">
+ Hacia la barbilla
+ </string>
+ <string name="Chin In">
+ Barbilla retraída
+ </string>
+ <string name="Chin Out">
+ Barbilla prominente
+ </string>
+ <string name="Chin-Neck">
+ Papada
+ </string>
+ <string name="Clear">
+ Transparente
+ </string>
+ <string name="Cleft">
+ Remarcar
+ </string>
+ <string name="Close Set Eyes">
+ Ojos juntos
+ </string>
+ <string name="Closed">
+ Cerrar
+ </string>
+ <string name="Closed Back">
+ Trasera cerrada
+ </string>
+ <string name="Closed Front">
+ Frontal cerrado
+ </string>
+ <string name="Closed Left">
+ Cerrada
+ </string>
+ <string name="Closed Right">
+ Cerrada
+ </string>
+ <string name="Coin Purse">
+ Poco abultada
+ </string>
+ <string name="Collar Back">
+ Espalda
+ </string>
+ <string name="Collar Front">
+ Escote
+ </string>
+ <string name="Corner Down">
+ Hacia abajo
+ </string>
+ <string name="Corner Up">
+ Hacia arriba
+ </string>
+ <string name="Creased">
+ Caídos
+ </string>
+ <string name="Crooked Nose">
+ Nariz torcida
+ </string>
+ <string name="Cuff Flare">
+ Acampanado
+ </string>
+ <string name="Dark">
+ Oscuridad
+ </string>
+ <string name="Dark Green">
+ Verde oscuro
+ </string>
+ <string name="Darker">
+ Más oscuros
+ </string>
+ <string name="Deep">
+ Remarcar
+ </string>
+ <string name="Default Heels">
+ Tacones por defecto
+ </string>
+ <string name="Dense">
+ Densas
+ </string>
+ <string name="Double Chin">
+ Mucha papada
+ </string>
+ <string name="Downturned">
+ Poco
+ </string>
+ <string name="Duffle Bag">
+ Muy abultada
+ </string>
+ <string name="Ear Angle">
+ Orejas: ángulo
+ </string>
+ <string name="Ear Size">
+ Orejas: tamaño
+ </string>
+ <string name="Ear Tips">
+ Orejas: forma
+ </string>
+ <string name="Egg Head">
+ Cabeza: ahuevada
+ </string>
+ <string name="Eye Bags">
+ Ojos: bolsas
+ </string>
+ <string name="Eye Color">
+ Ojos: color
+ </string>
+ <string name="Eye Depth">
+ Ojos: profundidad
+ </string>
+ <string name="Eye Lightness">
+ Ojos: brillo
+ </string>
+ <string name="Eye Opening">
+ Ojos: apertura
+ </string>
+ <string name="Eye Pop">
+ Ojos: simetría
+ </string>
+ <string name="Eye Size">
+ Ojos: tamaño
+ </string>
+ <string name="Eye Spacing">
+ Ojos: separación
+ </string>
+ <string name="Eyebrow Arc">
+ Cejas: arco
+ </string>
+ <string name="Eyebrow Density">
+ Cejas: densidad
+ </string>
+ <string name="Eyebrow Height">
+ Cejas: altura
+ </string>
+ <string name="Eyebrow Points">
+ Cejas: en V
+ </string>
+ <string name="Eyebrow Size">
+ Cejas: tamaño
+ </string>
+ <string name="Eyelash Length">
+ Pestañas: longitud
+ </string>
+ <string name="Eyeliner">
+ Contorno de ojos
+ </string>
+ <string name="Eyeliner Color">
+ Contorno de ojos: color
+ </string>
+ <string name="Eyes Bugged">
+ Eyes Bugged
+ </string>
+ <string name="Face Shear">
+ Cara: simetría
+ </string>
+ <string name="Facial Definition">
+ Rasgos marcados
+ </string>
+ <string name="Far Set Eyes">
+ Ojos separados
+ </string>
+ <string name="Fat Lips">
+ Prominentes
+ </string>
+ <string name="Female">
+ Mujer
+ </string>
+ <string name="Fingerless">
+ Sin dedos
+ </string>
+ <string name="Fingers">
+ Con dedos
+ </string>
+ <string name="Flared Cuffs">
+ Campana
+ </string>
+ <string name="Flat">
+ Redondeadas
+ </string>
+ <string name="Flat Butt">
+ Culo plano
+ </string>
+ <string name="Flat Head">
+ Cabeza plana
+ </string>
+ <string name="Flat Toe">
+ Empeine bajo
+ </string>
+ <string name="Foot Size">
+ Pie: tamaño
+ </string>
+ <string name="Forehead Angle">
+ Frente: ángulo
+ </string>
+ <string name="Forehead Heavy">
+ Hacia la frente
+ </string>
+ <string name="Freckles">
+ Pecas
+ </string>
+ <string name="Front Fringe">
+ Flequillo
+ </string>
+ <string name="Full Back">
+ Sin cortar
+ </string>
+ <string name="Full Eyeliner">
+ Contorno completo
+ </string>
+ <string name="Full Front">
+ Sin cortar
+ </string>
+ <string name="Full Hair Sides">
+ Pelo: volumen a los lados
+ </string>
+ <string name="Full Sides">
+ Volumen total
+ </string>
+ <string name="Glossy">
+ Con brillo
+ </string>
+ <string name="Glove Fingers">
+ Guantes: dedos
+ </string>
+ <string name="Glove Length">
+ Guantes: largo
+ </string>
+ <string name="Hair">
+ Pelo
+ </string>
+ <string name="Hair Back">
+ Pelo: nuca
+ </string>
+ <string name="Hair Front">
+ Pelo: delante
+ </string>
+ <string name="Hair Sides">
+ Pelo: lados
+ </string>
+ <string name="Hair Sweep">
+ Peinado: dirección
+ </string>
+ <string name="Hair Thickess">
+ Pelo: espesor
+ </string>
+ <string name="Hair Thickness">
+ Pelo: espesor
+ </string>
+ <string name="Hair Tilt">
+ Pelo: inclinación
+ </string>
+ <string name="Hair Tilted Left">
+ A la izq.
+ </string>
+ <string name="Hair Tilted Right">
+ A la der.
+ </string>
+ <string name="Hair Volume">
+ Pelo: volumen
+ </string>
+ <string name="Hand Size">
+ Manos: tamaño
+ </string>
+ <string name="Handlebars">
+ Muy largo
+ </string>
+ <string name="Head Length">
+ Cabeza: longitud
+ </string>
+ <string name="Head Shape">
+ Cabeza: forma
+ </string>
+ <string name="Head Size">
+ Cabeza: tamaño
+ </string>
+ <string name="Head Stretch">
+ Cabeza: estiramiento
+ </string>
+ <string name="Heel Height">
+ Tacón: altura
+ </string>
+ <string name="Heel Shape">
+ Tacón: forma
+ </string>
+ <string name="Height">
+ Altura
+ </string>
+ <string name="High">
+ Subir
+ </string>
+ <string name="High Heels">
+ Tacones altos
+ </string>
+ <string name="High Jaw">
+ Mandíbula alta
+ </string>
+ <string name="High Platforms">
+ Suela gorda
+ </string>
+ <string name="High and Tight">
+ Pegada
+ </string>
+ <string name="Higher">
+ Arrriba
+ </string>
+ <string name="Hip Length">
+ Cadera: altura
+ </string>
+ <string name="Hip Width">
+ Cadera: ancho
+ </string>
+ <string name="Hover">
+ Pasa el cursor
+ </string>
+ <string name="In">
+ Pegadas
+ </string>
+ <string name="In Shdw Color">
+ Línea de ojos: color
+ </string>
+ <string name="In Shdw Opacity">
+ Línea de ojos: opacidad
+ </string>
+ <string name="Inner Eye Corner">
+ Ojos: lagrimal
+ </string>
+ <string name="Inner Eye Shadow">
+ Inner Eye Shadow
+ </string>
+ <string name="Inner Shadow">
+ Línea de ojos
+ </string>
+ <string name="Jacket Length">
+ Chaqueta: largo
+ </string>
+ <string name="Jacket Wrinkles">
+ Chaqueta: arrugas
+ </string>
+ <string name="Jaw Angle">
+ Mandíbula: ángulo
+ </string>
+ <string name="Jaw Jut">
+ Maxilar inferior
+ </string>
+ <string name="Jaw Shape">
+ Mandíbula: forma
+ </string>
+ <string name="Join">
+ Más junto
+ </string>
+ <string name="Jowls">
+ Mofletes
+ </string>
+ <string name="Knee Angle">
+ Rodillas: ángulo
+ </string>
+ <string name="Knock Kneed">
+ Zambas
+ </string>
+ <string name="Large">
+ Aumentar
+ </string>
+ <string name="Large Hands">
+ Manos grandes
+ </string>
+ <string name="Left Part">
+ Raya: izq.
+ </string>
+ <string name="Leg Length">
+ Piernas: longitud
+ </string>
+ <string name="Leg Muscles">
+ Piernas: musculatura
+ </string>
+ <string name="Less">
+ Menos
+ </string>
+ <string name="Less Body Fat">
+ Menos gordura
+ </string>
+ <string name="Less Curtains">
+ Menos tupida
+ </string>
+ <string name="Less Freckles">
+ Menos pecas
+ </string>
+ <string name="Less Full">
+ Menos grosor
+ </string>
+ <string name="Less Gravity">
+ Más levantado
+ </string>
+ <string name="Less Love">
+ Menos michelines
+ </string>
+ <string name="Less Muscles">
+ Pocos músculos
+ </string>
+ <string name="Less Muscular">
+ Poca musculatura
+ </string>
+ <string name="Less Rosy">
+ Menos sonrosada
+ </string>
+ <string name="Less Round">
+ Menos redondeada
+ </string>
+ <string name="Less Saddle">
+ Menos cartucheras
+ </string>
+ <string name="Less Square">
+ Menos cuadrada
+ </string>
+ <string name="Less Volume">
+ Menos volumen
+ </string>
+ <string name="Less soul">
+ Pequeña
+ </string>
+ <string name="Lighter">
+ Más luminosos
+ </string>
+ <string name="Lip Cleft">
+ Labio: hoyuelo
+ </string>
+ <string name="Lip Cleft Depth">
+ Hoyuelo marcado
+ </string>
+ <string name="Lip Fullness">
+ Labios: grosor
+ </string>
+ <string name="Lip Pinkness">
+ Labios sonrosados
+ </string>
+ <string name="Lip Ratio">
+ Labios: ratio
+ </string>
+ <string name="Lip Thickness">
+ Labios: prominencia
+ </string>
+ <string name="Lip Width">
+ Labios: ancho
+ </string>
+ <string name="Lipgloss">
+ Brillo de labios
+ </string>
+ <string name="Lipstick">
+ Barra de labios
+ </string>
+ <string name="Lipstick Color">
+ Barra de labios: color
+ </string>
+ <string name="Long">
+ Más
+ </string>
+ <string name="Long Head">
+ Cabeza alargada
+ </string>
+ <string name="Long Hips">
+ Cadera larga
+ </string>
+ <string name="Long Legs">
+ Piernas largas
+ </string>
+ <string name="Long Neck">
+ Cuello largo
+ </string>
+ <string name="Long Pigtails">
+ Coletas largas
+ </string>
+ <string name="Long Ponytail">
+ Cola de caballo larga
+ </string>
+ <string name="Long Torso">
+ Torso largo
+ </string>
+ <string name="Long arms">
+ Brazos largos
+ </string>
+ <string name="Loose Pants">
+ Pantalón suelto
+ </string>
+ <string name="Loose Shirt">
+ Camiseta suelta
+ </string>
+ <string name="Loose Sleeves">
+ Puños anchos
+ </string>
+ <string name="Love Handles">
+ Michelines
+ </string>
+ <string name="Low">
+ Bajar
+ </string>
+ <string name="Low Heels">
+ Tacones bajos
+ </string>
+ <string name="Low Jaw">
+ Mandíbula baja
+ </string>
+ <string name="Low Platforms">
+ Suela fina
+ </string>
+ <string name="Low and Loose">
+ Suelta
+ </string>
+ <string name="Lower">
+ Abajo
+ </string>
+ <string name="Lower Bridge">
+ Puente: abajo
+ </string>
+ <string name="Lower Cheeks">
+ Mejillas: abajo
+ </string>
+ <string name="Male">
+ Varón
+ </string>
+ <string name="Middle Part">
+ Raya: en medio
+ </string>
+ <string name="More">
+ Más
+ </string>
+ <string name="More Blush">
+ Más colorete
+ </string>
+ <string name="More Body Fat">
+ Más gordura
+ </string>
+ <string name="More Curtains">
+ Más tupida
+ </string>
+ <string name="More Eyeshadow">
+ Más
+ </string>
+ <string name="More Freckles">
+ Más pecas
+ </string>
+ <string name="More Full">
+ Más grosor
+ </string>
+ <string name="More Gravity">
+ Menos levantado
+ </string>
+ <string name="More Lipstick">
+ Más barra de labios
+ </string>
+ <string name="More Love">
+ Más michelines
+ </string>
+ <string name="More Lower Lip">
+ Más el inferior
+ </string>
+ <string name="More Muscles">
+ Más músculos
+ </string>
+ <string name="More Muscular">
+ Más musculatura
+ </string>
+ <string name="More Rosy">
+ Más sonrosada
+ </string>
+ <string name="More Round">
+ Más redondeada
+ </string>
+ <string name="More Saddle">
+ Más cartucheras
+ </string>
+ <string name="More Sloped">
+ Más inclinada
+ </string>
+ <string name="More Square">
+ Más cuadrada
+ </string>
+ <string name="More Upper Lip">
+ Más el superior
+ </string>
+ <string name="More Vertical">
+ Más recta
+ </string>
+ <string name="More Volume">
+ Más volumen
+ </string>
+ <string name="More soul">
+ Grande
+ </string>
+ <string name="Moustache">
+ Bigote
+ </string>
+ <string name="Mouth Corner">
+ Comisuras
+ </string>
+ <string name="Mouth Position">
+ Boca: posición
+ </string>
+ <string name="Mowhawk">
+ Rapado
+ </string>
+ <string name="Muscular">
+ Muscular
+ </string>
+ <string name="Mutton Chops">
+ Patillas largas
+ </string>
+ <string name="Nail Polish">
+ Uñas pintadas
+ </string>
+ <string name="Nail Polish Color">
+ Uñas pintadas: color
+ </string>
+ <string name="Narrow">
+ Disminuir
+ </string>
+ <string name="Narrow Back">
+ Rapada
+ </string>
+ <string name="Narrow Front">
+ Entradas
+ </string>
+ <string name="Narrow Lips">
+ Labios estrechos
+ </string>
+ <string name="Natural">
+ Natural
+ </string>
+ <string name="Neck Length">
+ Cuello: longitud
+ </string>
+ <string name="Neck Thickness">
+ Cuello: grosor
+ </string>
+ <string name="No Blush">
+ Sin colorete
+ </string>
+ <string name="No Eyeliner">
+ Sin contorno
+ </string>
+ <string name="No Eyeshadow">
+ Menos
+ </string>
+ <string name="No Lipgloss">
+ Sin brillo
+ </string>
+ <string name="No Lipstick">
+ Sin barra de labios
+ </string>
+ <string name="No Part">
+ Sin raya
+ </string>
+ <string name="No Polish">
+ Sin pintar
+ </string>
+ <string name="No Red">
+ Nada
+ </string>
+ <string name="No Spikes">
+ Sin crestas
+ </string>
+ <string name="No White">
+ Sin blanco
+ </string>
+ <string name="No Wrinkles">
+ Sin arrugas
+ </string>
+ <string name="Normal Lower">
+ Normal Lower
+ </string>
+ <string name="Normal Upper">
+ Normal Upper
+ </string>
+ <string name="Nose Left">
+ Nariz a la izq.
+ </string>
+ <string name="Nose Right">
+ Nariz a la der.
+ </string>
+ <string name="Nose Size">
+ Nariz: tamaño
+ </string>
+ <string name="Nose Thickness">
+ Nariz: grosor
+ </string>
+ <string name="Nose Tip Angle">
+ Nariz: respingona
+ </string>
+ <string name="Nose Tip Shape">
+ Nariz: punta
+ </string>
+ <string name="Nose Width">
+ Nariz: ancho
+ </string>
+ <string name="Nostril Division">
+ Ventana: altura
+ </string>
+ <string name="Nostril Width">
+ Ventana: ancho
+ </string>
+ <string name="Opaque">
+ Opaco
+ </string>
+ <string name="Open">
+ Abrir
+ </string>
+ <string name="Open Back">
+ Apertura trasera
+ </string>
+ <string name="Open Front">
+ Apertura frontal
+ </string>
+ <string name="Open Left">
+ Abierta
+ </string>
+ <string name="Open Right">
+ Abierta
+ </string>
+ <string name="Orange">
+ Anaranjado
+ </string>
+ <string name="Out">
+ De soplillo
+ </string>
+ <string name="Out Shdw Color">
+ Sombra de ojos: color
+ </string>
+ <string name="Out Shdw Opacity">
+ Sombra de ojos: opacidad
+ </string>
+ <string name="Outer Eye Corner">
+ Ojos: comisura
+ </string>
+ <string name="Outer Eye Shadow">
+ Outer Eye Shadow
+ </string>
+ <string name="Outer Shadow">
+ Sombra de ojos
+ </string>
+ <string name="Overbite">
+ Retraído
+ </string>
+ <string name="Package">
+ Pubis
+ </string>
+ <string name="Painted Nails">
+ Pintadas
+ </string>
+ <string name="Pale">
+ Pálida
+ </string>
+ <string name="Pants Crotch">
+ Pantalón: cruz
+ </string>
+ <string name="Pants Fit">
+ Ceñido
+ </string>
+ <string name="Pants Length">
+ Pernera: largo
+ </string>
+ <string name="Pants Waist">
+ Caja
+ </string>
+ <string name="Pants Wrinkles">
+ Pantalón: arrugas
+ </string>
+ <string name="Part">
+ Raya
+ </string>
+ <string name="Part Bangs">
+ Flequillo partido
+ </string>
+ <string name="Pectorals">
+ Pectorales
+ </string>
+ <string name="Pigment">
+ Tono
+ </string>
+ <string name="Pigtails">
+ Coletas
+ </string>
+ <string name="Pink">
+ Rosa
+ </string>
+ <string name="Pinker">
+ Más sonrosados
+ </string>
+ <string name="Platform Height">
+ Suela: altura
+ </string>
+ <string name="Platform Width">
+ Suela: ancho
+ </string>
+ <string name="Pointy">
+ En punta
+ </string>
+ <string name="Pointy Heels">
+ De aguja
+ </string>
+ <string name="Ponytail">
+ Cola de caballo
+ </string>
+ <string name="Poofy Skirt">
+ Con vuelo
+ </string>
+ <string name="Pop Left Eye">
+ Izquierdo más grande
+ </string>
+ <string name="Pop Right Eye">
+ Derecho más grande
+ </string>
+ <string name="Puffy">
+ Hinchadas
+ </string>
+ <string name="Puffy Eyelids">
+ Ojeras
+ </string>
+ <string name="Rainbow Color">
+ Irisación
+ </string>
+ <string name="Red Hair">
+ Pelirrojo
+ </string>
+ <string name="Regular">
+ Regular
+ </string>
+ <string name="Right Part">
+ Raya: der.
+ </string>
+ <string name="Rosy Complexion">
+ Tez sonrosada
+ </string>
+ <string name="Round">
+ Redondear
+ </string>
+ <string name="Ruddiness">
+ Rubicundez
+ </string>
+ <string name="Ruddy">
+ Rojiza
+ </string>
+ <string name="Rumpled Hair">
+ Pelo encrespado
+ </string>
+ <string name="Saddle Bags">
+ Cartucheras
+ </string>
+ <string name="Scrawny Leg">
+ Piernas flacas
+ </string>
+ <string name="Separate">
+ Más ancho
+ </string>
+ <string name="Shallow">
+ Sin marcar
+ </string>
+ <string name="Shear Back">
+ Nuca: corte
+ </string>
+ <string name="Shear Face">
+ Shear Face
+ </string>
+ <string name="Shear Front">
+ Shear Front
+ </string>
+ <string name="Shear Left Up">
+ Arriba - izq.
+ </string>
+ <string name="Shear Right Up">
+ Arriba - der.
+ </string>
+ <string name="Sheared Back">
+ Rapada
+ </string>
+ <string name="Sheared Front">
+ Rapada
+ </string>
+ <string name="Shift Left">
+ A la izq.
+ </string>
+ <string name="Shift Mouth">
+ Boca: ladeada
+ </string>
+ <string name="Shift Right">
+ A la der.
+ </string>
+ <string name="Shirt Bottom">
+ Alto de cintura
+ </string>
+ <string name="Shirt Fit">
+ Ceñido
+ </string>
+ <string name="Shirt Wrinkles">
+ Camisa: arrugas
+ </string>
+ <string name="Shoe Height">
+ Caña: altura
+ </string>
+ <string name="Short">
+ Menos
+ </string>
+ <string name="Short Arms">
+ Brazos cortos
+ </string>
+ <string name="Short Legs">
+ Piernas cortas
+ </string>
+ <string name="Short Neck">
+ Cuello corto
+ </string>
+ <string name="Short Pigtails">
+ Coletas cortas
+ </string>
+ <string name="Short Ponytail">
+ Cola de caballo corta
+ </string>
+ <string name="Short Sideburns">
+ Patillas cortas
+ </string>
+ <string name="Short Torso">
+ Torso corto
+ </string>
+ <string name="Short hips">
+ Cadera corta
+ </string>
+ <string name="Shoulders">
+ Hombros
+ </string>
+ <string name="Side Fringe">
+ Lados: franja
+ </string>
+ <string name="Sideburns">
+ Patillas
+ </string>
+ <string name="Sides Hair">
+ Pelo: lados
+ </string>
+ <string name="Sides Hair Down">
+ Bajar lados del pelo
+ </string>
+ <string name="Sides Hair Up">
+ Subir lados del pelo
+ </string>
+ <string name="Skinny Neck">
+ Cuello estrecho
+ </string>
+ <string name="Skirt Fit">
+ Falda: vuelo
+ </string>
+ <string name="Skirt Length">
+ Falda: largo
+ </string>
+ <string name="Slanted Forehead">
+ Slanted Forehead
+ </string>
+ <string name="Sleeve Length">
+ Largo de manga
+ </string>
+ <string name="Sleeve Looseness">
+ Ancho de puños
+ </string>
+ <string name="Slit Back">
+ Raja trasera
+ </string>
+ <string name="Slit Front">
+ Raja frontal
+ </string>
+ <string name="Slit Left">
+ Raja a la izq.
+ </string>
+ <string name="Slit Right">
+ Raja a la der.
+ </string>
+ <string name="Small">
+ Disminuir
+ </string>
+ <string name="Small Hands">
+ Manos pequeñas
+ </string>
+ <string name="Small Head">
+ Cabeza pequeña
+ </string>
+ <string name="Smooth">
+ Leves
+ </string>
+ <string name="Smooth Hair">
+ Pelo liso
+ </string>
+ <string name="Socks Length">
+ Calcetines: largo
+ </string>
+ <string name="Soulpatch">
+ Perilla
+ </string>
+ <string name="Sparse">
+ Depiladas
+ </string>
+ <string name="Spiked Hair">
+ Crestas
+ </string>
+ <string name="Square">
+ Cuadrada
+ </string>
+ <string name="Square Toe">
+ Punta cuadrada
+ </string>
+ <string name="Squash Head">
+ Cabeza aplastada
+ </string>
+ <string name="Stretch Head">
+ Cabeza estirada
+ </string>
+ <string name="Sunken">
+ Chupadas
+ </string>
+ <string name="Sunken Chest">
+ Estrecho de pecho
+ </string>
+ <string name="Sunken Eyes">
+ Ojos hundidos
+ </string>
+ <string name="Sweep Back">
+ Sweep Back
+ </string>
+ <string name="Sweep Forward">
+ Sweep Forward
+ </string>
+ <string name="Tall">
+ Más
+ </string>
+ <string name="Taper Back">
+ Cubierta trasera
+ </string>
+ <string name="Taper Front">
+ Cubierta frontal
+ </string>
+ <string name="Thick Heels">
+ Tacones grandes
+ </string>
+ <string name="Thick Neck">
+ Cuello ancho
+ </string>
+ <string name="Thick Toe">
+ Empeine alto
+ </string>
+ <string name="Thin">
+ Delgadas
+ </string>
+ <string name="Thin Eyebrows">
+ Cejas finas
+ </string>
+ <string name="Thin Lips">
+ Hacia dentro
+ </string>
+ <string name="Thin Nose">
+ Nariz fina
+ </string>
+ <string name="Tight Chin">
+ Poca papada
+ </string>
+ <string name="Tight Cuffs">
+ Sin campana
+ </string>
+ <string name="Tight Pants">
+ Pantalón ceñido
+ </string>
+ <string name="Tight Shirt">
+ Camisa ceñida
+ </string>
+ <string name="Tight Skirt">
+ Falda ceñida
+ </string>
+ <string name="Tight Sleeves">
+ Puños ceñidos
+ </string>
+ <string name="Toe Shape">
+ Punta: forma
+ </string>
+ <string name="Toe Thickness">
+ Empeine
+ </string>
+ <string name="Torso Length">
+ Torso: longitud
+ </string>
+ <string name="Torso Muscles">
+ Torso: musculatura
+ </string>
+ <string name="Torso Scrawny">
+ Torso flacucho
+ </string>
+ <string name="Unattached">
+ Largos
+ </string>
+ <string name="Uncreased">
+ Abiertos
+ </string>
+ <string name="Underbite">
+ Prognatismo
+ </string>
+ <string name="Unnatural">
+ No natural
+ </string>
+ <string name="Upper Bridge">
+ Puente: arriba
+ </string>
+ <string name="Upper Cheeks">
+ Mejillas: arriba
+ </string>
+ <string name="Upper Chin Cleft">
+ Barbilla: prominencia
+ </string>
+ <string name="Upper Eyelid Fold">
+ Párpados
+ </string>
+ <string name="Upturned">
+ Mucho
+ </string>
+ <string name="Very Red">
+ Del todo
+ </string>
+ <string name="Waist Height">
+ Cintura
+ </string>
+ <string name="Well-Fed">
+ Mofletes
+ </string>
+ <string name="White Hair">
+ Pelo blanco
+ </string>
+ <string name="Wide">
+ Aumentar
+ </string>
+ <string name="Wide Back">
+ Completa
+ </string>
+ <string name="Wide Front">
+ Completa
+ </string>
+ <string name="Wide Lips">
+ Labios anchos
+ </string>
+ <string name="Wild">
+ Total
+ </string>
+ <string name="Wrinkles">
+ Arrugas
+ </string>
+ <string name="LocationCtrlAddLandmarkTooltip">
+ Añadir a mis hitos
+ </string>
+ <string name="LocationCtrlEditLandmarkTooltip">
+ Editar mis hitos
+ </string>
+ <string name="LocationCtrlInfoBtnTooltip">
+ Ver más información de esta localización
+ </string>
+ <string name="LocationCtrlComboBtnTooltip">
+ Historial de mis localizaciones
+ </string>
+ <string name="LocationCtrlForSaleTooltip">
+ Comprar este terreno
+ </string>
+ <string name="LocationCtrlAdultIconTooltip">
+ Región Adulta
+ </string>
+ <string name="LocationCtrlModerateIconTooltip">
+ Región Moderada
+ </string>
+ <string name="LocationCtrlGeneralIconTooltip">
+ Región General
+ </string>
+ <string name="LocationCtrlSeeAVsTooltip">
+ Los avatares que están en esta parcela no pueden ser vistos ni escuchados por los que están fuera de ella
+ </string>
+ <string name="LocationCtrlPathfindingDirtyTooltip">
+ Los objetos que se mueven pueden presentar un comportamiento incorrecto en la región hasta que ésta se recargue.
+ </string>
+ <string name="LocationCtrlPathfindingDisabledTooltip">
+ Esta región no tiene activado el pathfinding dinámico.
+ </string>
+ <string name="UpdaterWindowTitle">
+ Actualizar [APP_NAME]
+ </string>
+ <string name="UpdaterNowUpdating">
+ Actualizando [APP_NAME]...
+ </string>
+ <string name="UpdaterNowInstalling">
+ Instalando [APP_NAME]...
+ </string>
+ <string name="UpdaterUpdatingDescriptive">
+ Tu visor [APP_NAME] se está actualizando a la última versión. Llevará algún tiempo, paciencia.
+ </string>
+ <string name="UpdaterProgressBarTextWithEllipses">
+ Descargando la actualización...
+ </string>
+ <string name="UpdaterProgressBarText">
+ Descargando la actualización
+ </string>
+ <string name="UpdaterFailDownloadTitle">
+ Fallo en la descarga de la actualización
+ </string>
+ <string name="UpdaterFailUpdateDescriptive">
+ Ha habido un error actualizando [APP_NAME]. Por favor, descarga la última versión desde www.secondlife.com.
+ </string>
+ <string name="UpdaterFailInstallTitle">
+ Fallo al instalar la actualización
+ </string>
+ <string name="UpdaterFailStartTitle">
+ Fallo al iniciar el visor
+ </string>
+ <string name="ItemsComingInTooFastFrom">
+ [APP_NAME]: Los ítems se reciben muy rápido de [FROM_NAME]; desactivada la vista previa automática durante [TIME] sgs.
+ </string>
+ <string name="ItemsComingInTooFast">
+ [APP_NAME]: Los ítems se reciben muy rápido; desactivada la vista previa automática durante [TIME] sgs.
+ </string>
+ <string name="IM_logging_string">
+ -- Activado el registro de los mensajes instantáneos --
+ </string>
+ <string name="IM_typing_start_string">
+ [NAME] está escribiendo...
+ </string>
+ <string name="Unnamed">
+ (sin nombre)
+ </string>
+ <string name="IM_moderated_chat_label">
+ (Moderado: por defecto, desactivada la voz)
+ </string>
+ <string name="IM_unavailable_text_label">
+ Para esta llamada no está disponible el chat de texto.
+ </string>
+ <string name="IM_muted_text_label">
+ Un moderador del grupo ha desactivado tu chat de texto.
+ </string>
+ <string name="IM_default_text_label">
+ Pulsa aquí para enviar un mensaje instantáneo.
+ </string>
+ <string name="IM_to_label">
+ A
+ </string>
+ <string name="IM_moderator_label">
+ (Moderador)
+ </string>
+ <string name="Saved_message">
+ (Guardado [LONG_TIMESTAMP])
+ </string>
+ <string name="OnlineStatus">
+ Conectado/a
+ </string>
+ <string name="OfflineStatus">
+ Desconectado/a
+ </string>
+ <string name="not_online_msg">
+ El usuario no está conectado: el mensaje se almacenará para entregárselo más tarde.
+ </string>
+ <string name="not_online_inventory">
+ El usuario no está conectado: el inventario se ha guardado.
+ </string>
+ <string name="answered_call">
+ Han respondido a tu llamada
+ </string>
+ <string name="you_started_call">
+ Has iniciado una llamada de voz
+ </string>
+ <string name="you_joined_call">
+ Has entrado en la llamada de voz
+ </string>
+ <string name="you_auto_rejected_call-im">
+ Rechazaste la llamada de voz automáticamente porque estaba activado 'No molestar'.
+ </string>
+ <string name="name_started_call">
+ [NAME] inició una llamada de voz
+ </string>
+ <string name="ringing-im">
+ Haciendo la llamada de voz...
+ </string>
+ <string name="connected-im">
+ Conectado, pulsa Colgar para salir
+ </string>
+ <string name="hang_up-im">
+ Se colgó la llamada de voz
+ </string>
+ <string name="conference-title">
+ Chat multi-persona
+ </string>
+ <string name="conference-title-incoming">
+ Conferencia con [AGENT_NAME]
+ </string>
+ <string name="inventory_item_offered-im">
+ Ítem del inventario '[ITEM_NAME]' ofrecido
+ </string>
+ <string name="inventory_folder_offered-im">
+ Carpeta del inventario '[ITEM_NAME]' ofrecida
+ </string>
<string name="bot_warning">
-Estás conversando con un bot, [NAME]. No compartas información personal.
+ Estás conversando con un bot, [NAME]. No compartas información personal.
Más información en https://second.life/scripted-agents.
</string>
- <string name="share_alert">Arrastra los ítems desde el invenbtario hasta aquí</string>
- <string name="facebook_post_success">Has publicado en Facebook.</string>
- <string name="flickr_post_success">Has publicado en Flickr.</string>
- <string name="twitter_post_success">Has publicado en Twitter.</string>
- <string name="no_session_message">(La sesión de MI no existe)</string>
- <string name="only_user_message">Usted es el único usuario en esta sesión.</string>
- <string name="offline_message">[NAME] está desconectado.</string>
- <string name="invite_message">Pulse el botón [BUTTON NAME] para aceptar/conectar este chat de voz.</string>
- <string name="muted_message">Has ignorado a este residente. Enviándole un mensaje, automáticamente dejarás de ignorarle.</string>
- <string name="generic">Error en lo solicitado, por favor, inténtalo más tarde.</string>
- <string name="generic_request_error">Error al hacer lo solicitado; por favor, inténtelo más tarde.</string>
- <string name="insufficient_perms_error">Usted no tiene permisos suficientes.</string>
- <string name="session_does_not_exist_error">La sesión ya acabó</string>
- <string name="no_ability_error">Usted no tiene esa capacidad.</string>
- <string name="no_ability">Usted no tiene esa capacidad.</string>
- <string name="not_a_mod_error">Usted no es un moderador de la sesión.</string>
- <string name="muted">Un moderador del grupo ha desactivado tu chat de texto.</string>
- <string name="muted_error">Un moderador del grupo le ha desactivado el chat de texto.</string>
- <string name="add_session_event">No se ha podido añadir usuarios a la sesión de chat con [RECIPIENT].</string>
- <string name="message">No se ha podido enviar tu mensaje a la sesión de chat con [RECIPIENT].</string>
- <string name="message_session_event">No se ha podido enviar su mensaje a la sesión de chat con [RECIPIENT].</string>
- <string name="mute">Error moderando.</string>
- <string name="removed">Se te ha sacado del grupo.</string>
- <string name="removed_from_group">Ha sido eliminado del grupo.</string>
- <string name="close_on_no_ability">Usted ya no tendrá más la capacidad de estar en la sesión de chat.</string>
- <string name="unread_chat_single">[SOURCES] ha dicho algo nuevo</string>
- <string name="unread_chat_multiple">[SOURCES] ha dicho algo nuevo</string>
- <string name="session_initialization_timed_out_error">Se ha agotado el tiempo del inicio de sesión</string>
- <string name="Home position set.">Posición inicial establecida.</string>
- <string name="voice_morphing_url">https://secondlife.com/destination/voice-island</string>
- <string name="premium_voice_morphing_url">https://secondlife.com/destination/voice-morphing-premium</string>
- <string name="paid_you_ldollars">[NAME] te ha pagado [AMOUNT] L$ [REASON].</string>
- <string name="paid_you_ldollars_gift">[NAME] te ha pagado [AMOUNT] L$: [REASON]</string>
- <string name="paid_you_ldollars_no_reason">[NAME] te ha pagado [AMOUNT] L$.</string>
- <string name="you_paid_ldollars">Has pagado [AMOUNT] L$ a [NAME] por [REASON].</string>
- <string name="you_paid_ldollars_gift">Has pagado [AMOUNT] L$ a [NAME]: [REASON]</string>
- <string name="you_paid_ldollars_no_info">Has pagado[AMOUNT] L$</string>
- <string name="you_paid_ldollars_no_reason">Has pagado [AMOUNT] L$ a [NAME].</string>
- <string name="you_paid_ldollars_no_name">Has pagado [AMOUNT] L$ por [REASON].</string>
- <string name="you_paid_failure_ldollars">No has pagado a [NAME] [AMOUNT] L$ [REASON].</string>
- <string name="you_paid_failure_ldollars_gift">No has pagado a [NAME] [AMOUNT] L$: [REASON]</string>
- <string name="you_paid_failure_ldollars_no_info">No has pagado [AMOUNT] L$.</string>
- <string name="you_paid_failure_ldollars_no_reason">No has pagado a [NAME] [AMOUNT] L$.</string>
- <string name="you_paid_failure_ldollars_no_name">No has pagado [AMOUNT] L$ [REASON].</string>
- <string name="for item">para [ITEM]</string>
- <string name="for a parcel of land">para una parcela de terreno</string>
- <string name="for a land access pass">para un pase de acceso a terrenos</string>
- <string name="for deeding land">for deeding land</string>
- <string name="to create a group">para crear un grupo</string>
- <string name="to join a group">para entrar a un grupo</string>
- <string name="to upload">to upload</string>
- <string name="to publish a classified ad">para publicar un anuncio clasificado</string>
- <string name="giving">Dando [AMOUNT] L$</string>
- <string name="uploading_costs">Subir esto cuesta [AMOUNT] L$</string>
- <string name="this_costs">Esto cuesta [AMOUNT] L$</string>
- <string name="buying_selected_land">Compra del terreno seleccionado por [AMOUNT] L$</string>
- <string name="this_object_costs">Este objeto cuesta [AMOUNT] L$</string>
- <string name="group_role_everyone">Todos</string>
- <string name="group_role_officers">Oficiales</string>
- <string name="group_role_owners">Propietarios</string>
- <string name="group_member_status_online">Conectado/a</string>
- <string name="uploading_abuse_report">Subiendo...
+ <string name="share_alert">
+ Arrastra los ítems desde el invenbtario hasta aquí
+ </string>
+ <string name="facebook_post_success">
+ Has publicado en Facebook.
+ </string>
+ <string name="flickr_post_success">
+ Has publicado en Flickr.
+ </string>
+ <string name="twitter_post_success">
+ Has publicado en Twitter.
+ </string>
+ <string name="no_session_message">
+ (La sesión de MI no existe)
+ </string>
+ <string name="only_user_message">
+ Usted es el único usuario en esta sesión.
+ </string>
+ <string name="offline_message">
+ [NAME] está desconectado.
+ </string>
+ <string name="invite_message">
+ Pulse el botón [BUTTON NAME] para aceptar/conectar este chat de voz.
+ </string>
+ <string name="muted_message">
+ Has ignorado a este residente. Enviándole un mensaje, automáticamente dejarás de ignorarle.
+ </string>
+ <string name="generic">
+ Error en lo solicitado, por favor, inténtalo más tarde.
+ </string>
+ <string name="generic_request_error">
+ Error al hacer lo solicitado; por favor, inténtelo más tarde.
+ </string>
+ <string name="insufficient_perms_error">
+ Usted no tiene permisos suficientes.
+ </string>
+ <string name="session_does_not_exist_error">
+ La sesión ya acabó
+ </string>
+ <string name="no_ability_error">
+ Usted no tiene esa capacidad.
+ </string>
+ <string name="no_ability">
+ Usted no tiene esa capacidad.
+ </string>
+ <string name="not_a_mod_error">
+ Usted no es un moderador de la sesión.
+ </string>
+ <string name="muted">
+ Un moderador del grupo ha desactivado tu chat de texto.
+ </string>
+ <string name="muted_error">
+ Un moderador del grupo le ha desactivado el chat de texto.
+ </string>
+ <string name="add_session_event">
+ No se ha podido añadir usuarios a la sesión de chat con [RECIPIENT].
+ </string>
+ <string name="message">
+ No se ha podido enviar tu mensaje a la sesión de chat con [RECIPIENT].
+ </string>
+ <string name="message_session_event">
+ No se ha podido enviar su mensaje a la sesión de chat con [RECIPIENT].
+ </string>
+ <string name="mute">
+ Error moderando.
+ </string>
+ <string name="removed">
+ Se te ha sacado del grupo.
+ </string>
+ <string name="removed_from_group">
+ Ha sido eliminado del grupo.
+ </string>
+ <string name="close_on_no_ability">
+ Usted ya no tendrá más la capacidad de estar en la sesión de chat.
+ </string>
+ <string name="unread_chat_single">
+ [SOURCES] ha dicho algo nuevo
+ </string>
+ <string name="unread_chat_multiple">
+ [SOURCES] ha dicho algo nuevo
+ </string>
+ <string name="session_initialization_timed_out_error">
+ Se ha agotado el tiempo del inicio de sesión
+ </string>
+ <string name="Home position set.">
+ Posición inicial establecida.
+ </string>
+ <string name="voice_morphing_url">
+ https://secondlife.com/destination/voice-island
+ </string>
+ <string name="premium_voice_morphing_url">
+ https://secondlife.com/destination/voice-morphing-premium
+ </string>
+ <string name="paid_you_ldollars">
+ [NAME] te ha pagado [AMOUNT] L$ [REASON].
+ </string>
+ <string name="paid_you_ldollars_gift">
+ [NAME] te ha pagado [AMOUNT] L$: [REASON]
+ </string>
+ <string name="paid_you_ldollars_no_reason">
+ [NAME] te ha pagado [AMOUNT] L$.
+ </string>
+ <string name="you_paid_ldollars">
+ Has pagado [AMOUNT] L$ a [NAME] por [REASON].
+ </string>
+ <string name="you_paid_ldollars_gift">
+ Has pagado [AMOUNT] L$ a [NAME]: [REASON]
+ </string>
+ <string name="you_paid_ldollars_no_info">
+ Has pagado[AMOUNT] L$
+ </string>
+ <string name="you_paid_ldollars_no_reason">
+ Has pagado [AMOUNT] L$ a [NAME].
+ </string>
+ <string name="you_paid_ldollars_no_name">
+ Has pagado [AMOUNT] L$ por [REASON].
+ </string>
+ <string name="you_paid_failure_ldollars">
+ No has pagado a [NAME] [AMOUNT] L$ [REASON].
+ </string>
+ <string name="you_paid_failure_ldollars_gift">
+ No has pagado a [NAME] [AMOUNT] L$: [REASON]
+ </string>
+ <string name="you_paid_failure_ldollars_no_info">
+ No has pagado [AMOUNT] L$.
+ </string>
+ <string name="you_paid_failure_ldollars_no_reason">
+ No has pagado a [NAME] [AMOUNT] L$.
+ </string>
+ <string name="you_paid_failure_ldollars_no_name">
+ No has pagado [AMOUNT] L$ [REASON].
+ </string>
+ <string name="for item">
+ para [ITEM]
+ </string>
+ <string name="for a parcel of land">
+ para una parcela de terreno
+ </string>
+ <string name="for a land access pass">
+ para un pase de acceso a terrenos
+ </string>
+ <string name="for deeding land">
+ for deeding land
+ </string>
+ <string name="to create a group">
+ para crear un grupo
+ </string>
+ <string name="to join a group">
+ para entrar a un grupo
+ </string>
+ <string name="to upload">
+ to upload
+ </string>
+ <string name="to publish a classified ad">
+ para publicar un anuncio clasificado
+ </string>
+ <string name="giving">
+ Dando [AMOUNT] L$
+ </string>
+ <string name="uploading_costs">
+ Subir esto cuesta [AMOUNT] L$
+ </string>
+ <string name="this_costs">
+ Esto cuesta [AMOUNT] L$
+ </string>
+ <string name="buying_selected_land">
+ Compra del terreno seleccionado por [AMOUNT] L$
+ </string>
+ <string name="this_object_costs">
+ Este objeto cuesta [AMOUNT] L$
+ </string>
+ <string name="group_role_everyone">
+ Todos
+ </string>
+ <string name="group_role_officers">
+ Oficiales
+ </string>
+ <string name="group_role_owners">
+ Propietarios
+ </string>
+ <string name="group_member_status_online">
+ Conectado/a
+ </string>
+ <string name="uploading_abuse_report">
+ Subiendo...
-Denuncia de infracción</string>
- <string name="New Shape">Anatomía nueva</string>
- <string name="New Skin">Piel nueva</string>
- <string name="New Hair">Pelo nuevo</string>
- <string name="New Eyes">Ojos nuevos</string>
- <string name="New Shirt">Camisa nueva</string>
- <string name="New Pants">Pantalón nuevo</string>
- <string name="New Shoes">Zapatos nuevos</string>
- <string name="New Socks">Calcetines nuevos</string>
- <string name="New Jacket">Chaqueta nueva</string>
- <string name="New Gloves">Guantes nuevos</string>
- <string name="New Undershirt">Camiseta nueva</string>
- <string name="New Underpants">Ropa interior nueva</string>
- <string name="New Skirt">Falda nueva</string>
- <string name="New Alpha">Nueva Alfa</string>
- <string name="New Tattoo">Tatuaje nuevo</string>
- <string name="New Universal">Nuevo Universal</string>
- <string name="New Physics">Nueva física</string>
- <string name="Invalid Wearable">No se puede poner</string>
- <string name="New Gesture">Gesto nuevo</string>
- <string name="New Script">Script nuevo</string>
- <string name="New Note">Nota nueva</string>
- <string name="New Folder">Carpeta nueva</string>
- <string name="Contents">Contenidos</string>
- <string name="Gesture">Gestos</string>
- <string name="Male Gestures">Gestos de hombre</string>
- <string name="Female Gestures">Gestos de mujer</string>
- <string name="Other Gestures">Otros gestos</string>
- <string name="Speech Gestures">Gestos al hablar</string>
- <string name="Common Gestures">Gestos corrientes</string>
- <string name="Male - Excuse me">Varón - Disculpa</string>
- <string name="Male - Get lost">Varón – Déjame en paz</string>
- <string name="Male - Blow kiss">Varón - Lanzar un beso</string>
- <string name="Male - Boo">Varón - Abucheo</string>
- <string name="Male - Bored">Varón - Aburrido</string>
- <string name="Male - Hey">Varón – ¡Eh!</string>
- <string name="Male - Laugh">Varón - Risa</string>
- <string name="Male - Repulsed">Varón - Rechazo</string>
- <string name="Male - Shrug">Varón - Encogimiento de hombros</string>
- <string name="Male - Stick tougue out">Hombre - Sacando la lengua</string>
- <string name="Male - Wow">Varón - Admiración</string>
- <string name="Female - Chuckle">Mujer - Risa suave</string>
- <string name="Female - Cry">Mujer - Llorar</string>
- <string name="Female - Embarrassed">Mujer - Ruborizada</string>
- <string name="Female - Excuse me">Mujer - Disculpa</string>
- <string name="Female - Get lost">Mujer – Déjame en paz</string>
- <string name="Female - Blow kiss">Mujer - Lanzar un beso</string>
- <string name="Female - Boo">Mujer - Abucheo</string>
- <string name="Female - Bored">Mujer - Aburrida</string>
- <string name="Female - Hey">Mujer - ¡Eh!</string>
- <string name="Female - Hey baby">Mujer - ¡Eh, encanto!</string>
- <string name="Female - Laugh">Mujer - Risa</string>
- <string name="Female - Looking good">Mujer - Buen aspecto</string>
- <string name="Female - Over here">Mujer - Por aquí</string>
- <string name="Female - Please">Mujer - Por favor</string>
- <string name="Female - Repulsed">Mujer - Rechazo</string>
- <string name="Female - Shrug">Mujer - Encogimiento de hombros</string>
- <string name="Female - Stick tougue out">Mujer - Sacando la lengua</string>
- <string name="Female - Wow">Mujer - Admiración</string>
- <string name="New Daycycle">Nuevo Ciclo del día</string>
- <string name="New Water">Nueva Agua</string>
- <string name="New Sky">Nuevo Cielo</string>
- <string name="/bow">/reverencia</string>
- <string name="/clap">/aplaudir</string>
- <string name="/count">/contar</string>
- <string name="/extinguish">/apagar</string>
- <string name="/kmb">/bmc</string>
- <string name="/muscle">/músculo</string>
- <string name="/no">/no</string>
- <string name="/no!">/¡no!</string>
- <string name="/paper">/papel</string>
- <string name="/pointme">/señalarme</string>
- <string name="/pointyou">/señalarte</string>
- <string name="/rock">/piedra</string>
- <string name="/scissor">/tijera</string>
- <string name="/smoke">/fumar</string>
- <string name="/stretch">/estirar</string>
- <string name="/whistle">/silbar</string>
- <string name="/yes">/sí</string>
- <string name="/yes!">/¡sí!</string>
- <string name="afk">ausente</string>
- <string name="dance1">baile1</string>
- <string name="dance2">baile2</string>
- <string name="dance3">baile3</string>
- <string name="dance4">baile4</string>
- <string name="dance5">baile5</string>
- <string name="dance6">baile6</string>
- <string name="dance7">baile7</string>
- <string name="dance8">baile8</string>
- <string name="AvatarBirthDateFormat">[day,datetime,slt]/[mthnum,datetime,slt]/[year,datetime,slt]</string>
- <string name="DefaultMimeType">ninguno/ninguno</string>
- <string name="texture_load_dimensions_error">No se puede subir imágenes mayores de [WIDTH]*[HEIGHT]</string>
- <string name="outfit_photo_load_dimensions_error">La foto del vestuario puede tener como máx. un tamaño de [WIDTH]*[HEIGHT]. Cambia el tamaño o utiliza otra imagen</string>
- <string name="outfit_photo_select_dimensions_error">La foto del vestuario puede tener como máx. un tamaño de [WIDTH]*[HEIGHT]. Selecciona otra textura</string>
- <string name="outfit_photo_verify_dimensions_error">No se pueden verificar las dimensiones de la foto. Espera hasta que aparezca el tamaño de la foto en el selector</string>
+Denuncia de infracción
+ </string>
+ <string name="New Shape">
+ Anatomía nueva
+ </string>
+ <string name="New Skin">
+ Piel nueva
+ </string>
+ <string name="New Hair">
+ Pelo nuevo
+ </string>
+ <string name="New Eyes">
+ Ojos nuevos
+ </string>
+ <string name="New Shirt">
+ Camisa nueva
+ </string>
+ <string name="New Pants">
+ Pantalón nuevo
+ </string>
+ <string name="New Shoes">
+ Zapatos nuevos
+ </string>
+ <string name="New Socks">
+ Calcetines nuevos
+ </string>
+ <string name="New Jacket">
+ Chaqueta nueva
+ </string>
+ <string name="New Gloves">
+ Guantes nuevos
+ </string>
+ <string name="New Undershirt">
+ Camiseta nueva
+ </string>
+ <string name="New Underpants">
+ Ropa interior nueva
+ </string>
+ <string name="New Skirt">
+ Falda nueva
+ </string>
+ <string name="New Alpha">
+ Nueva Alfa
+ </string>
+ <string name="New Tattoo">
+ Tatuaje nuevo
+ </string>
+ <string name="New Universal">
+ Nuevo Universal
+ </string>
+ <string name="New Physics">
+ Nueva física
+ </string>
+ <string name="Invalid Wearable">
+ No se puede poner
+ </string>
+ <string name="New Gesture">
+ Gesto nuevo
+ </string>
+ <string name="New Script">
+ Script nuevo
+ </string>
+ <string name="New Note">
+ Nota nueva
+ </string>
+ <string name="New Folder">
+ Carpeta nueva
+ </string>
+ <string name="Contents">
+ Contenidos
+ </string>
+ <string name="Gesture">
+ Gestos
+ </string>
+ <string name="Male Gestures">
+ Gestos de hombre
+ </string>
+ <string name="Female Gestures">
+ Gestos de mujer
+ </string>
+ <string name="Other Gestures">
+ Otros gestos
+ </string>
+ <string name="Speech Gestures">
+ Gestos al hablar
+ </string>
+ <string name="Common Gestures">
+ Gestos corrientes
+ </string>
+ <string name="Male - Excuse me">
+ Varón - Disculpa
+ </string>
+ <string name="Male - Get lost">
+ Varón – Déjame en paz
+ </string>
+ <string name="Male - Blow kiss">
+ Varón - Lanzar un beso
+ </string>
+ <string name="Male - Boo">
+ Varón - Abucheo
+ </string>
+ <string name="Male - Bored">
+ Varón - Aburrido
+ </string>
+ <string name="Male - Hey">
+ Varón – ¡Eh!
+ </string>
+ <string name="Male - Laugh">
+ Varón - Risa
+ </string>
+ <string name="Male - Repulsed">
+ Varón - Rechazo
+ </string>
+ <string name="Male - Shrug">
+ Varón - Encogimiento de hombros
+ </string>
+ <string name="Male - Stick tougue out">
+ Hombre - Sacando la lengua
+ </string>
+ <string name="Male - Wow">
+ Varón - Admiración
+ </string>
+ <string name="Female - Chuckle">
+ Mujer - Risa suave
+ </string>
+ <string name="Female - Cry">
+ Mujer - Llorar
+ </string>
+ <string name="Female - Embarrassed">
+ Mujer - Ruborizada
+ </string>
+ <string name="Female - Excuse me">
+ Mujer - Disculpa
+ </string>
+ <string name="Female - Get lost">
+ Mujer – Déjame en paz
+ </string>
+ <string name="Female - Blow kiss">
+ Mujer - Lanzar un beso
+ </string>
+ <string name="Female - Boo">
+ Mujer - Abucheo
+ </string>
+ <string name="Female - Bored">
+ Mujer - Aburrida
+ </string>
+ <string name="Female - Hey">
+ Mujer - ¡Eh!
+ </string>
+ <string name="Female - Hey baby">
+ Mujer - ¡Eh, encanto!
+ </string>
+ <string name="Female - Laugh">
+ Mujer - Risa
+ </string>
+ <string name="Female - Looking good">
+ Mujer - Buen aspecto
+ </string>
+ <string name="Female - Over here">
+ Mujer - Por aquí
+ </string>
+ <string name="Female - Please">
+ Mujer - Por favor
+ </string>
+ <string name="Female - Repulsed">
+ Mujer - Rechazo
+ </string>
+ <string name="Female - Shrug">
+ Mujer - Encogimiento de hombros
+ </string>
+ <string name="Female - Stick tougue out">
+ Mujer - Sacando la lengua
+ </string>
+ <string name="Female - Wow">
+ Mujer - Admiración
+ </string>
+ <string name="New Daycycle">
+ Nuevo Ciclo del día
+ </string>
+ <string name="New Water">
+ Nueva Agua
+ </string>
+ <string name="New Sky">
+ Nuevo Cielo
+ </string>
+ <string name="/bow">
+ /reverencia
+ </string>
+ <string name="/clap">
+ /aplaudir
+ </string>
+ <string name="/count">
+ /contar
+ </string>
+ <string name="/extinguish">
+ /apagar
+ </string>
+ <string name="/kmb">
+ /bmc
+ </string>
+ <string name="/muscle">
+ /músculo
+ </string>
+ <string name="/no">
+ /no
+ </string>
+ <string name="/no!">
+ /¡no!
+ </string>
+ <string name="/paper">
+ /papel
+ </string>
+ <string name="/pointme">
+ /señalarme
+ </string>
+ <string name="/pointyou">
+ /señalarte
+ </string>
+ <string name="/rock">
+ /piedra
+ </string>
+ <string name="/scissor">
+ /tijera
+ </string>
+ <string name="/smoke">
+ /fumar
+ </string>
+ <string name="/stretch">
+ /estirar
+ </string>
+ <string name="/whistle">
+ /silbar
+ </string>
+ <string name="/yes">
+ /sí
+ </string>
+ <string name="/yes!">
+ /¡sí!
+ </string>
+ <string name="afk">
+ ausente
+ </string>
+ <string name="dance1">
+ baile1
+ </string>
+ <string name="dance2">
+ baile2
+ </string>
+ <string name="dance3">
+ baile3
+ </string>
+ <string name="dance4">
+ baile4
+ </string>
+ <string name="dance5">
+ baile5
+ </string>
+ <string name="dance6">
+ baile6
+ </string>
+ <string name="dance7">
+ baile7
+ </string>
+ <string name="dance8">
+ baile8
+ </string>
+ <string name="AvatarBirthDateFormat">
+ [day,datetime,slt]/[mthnum,datetime,slt]/[year,datetime,slt]
+ </string>
+ <string name="DefaultMimeType">
+ ninguno/ninguno
+ </string>
+ <string name="texture_load_dimensions_error">
+ No se puede subir imágenes mayores de [WIDTH]*[HEIGHT]
+ </string>
+ <string name="outfit_photo_load_dimensions_error">
+ La foto del vestuario puede tener como máx. un tamaño de [WIDTH]*[HEIGHT]. Cambia el tamaño o utiliza otra imagen
+ </string>
+ <string name="outfit_photo_select_dimensions_error">
+ La foto del vestuario puede tener como máx. un tamaño de [WIDTH]*[HEIGHT]. Selecciona otra textura
+ </string>
+ <string name="outfit_photo_verify_dimensions_error">
+ No se pueden verificar las dimensiones de la foto. Espera hasta que aparezca el tamaño de la foto en el selector
+ </string>
<string name="words_separator" value=","/>
- <string name="server_is_down">Parece que hay algún problema que ha escapado a nuestros controles.
+ <string name="server_is_down">
+ Parece que hay algún problema que ha escapado a nuestros controles.
Visita http://status.secondlifegrid.net para ver si hay alguna incidencia conocida que esté afectando al servicio.
- Si sigues teniendo problemas, comprueba la configuración de la red y del servidor de seguridad.</string>
- <string name="dateTimeWeekdaysNames">Domingo:Lunes:Martes:Miércoles:Jueves:Viernes:Sábado</string>
- <string name="dateTimeWeekdaysShortNames">Dom:Lun:Mar:Mié:Jue:Vie:Sáb</string>
- <string name="dateTimeMonthNames">Enero:Febrero:Marzo:Abril:Mayo:Junio:Julio:Agosto:Septiembre:Octubre:Noviembre:Diciembre</string>
- <string name="dateTimeMonthShortNames">Ene:Feb:Mar:Abr:May:Jun:Jul:Ago:Sep:Oct:Nov:Dic</string>
- <string name="dateTimeDayFormat">[MDAY]</string>
- <string name="dateTimeAM">AM</string>
- <string name="dateTimePM">PM</string>
- <string name="LocalEstimateUSD">[AMOUNT] US$</string>
- <string name="Group Ban">Expulsión de grupo</string>
- <string name="Membership">Membresía</string>
- <string name="Roles">Roles</string>
- <string name="Group Identity">Indentidad de grupo</string>
- <string name="Parcel Management">Gestión de la parcela</string>
- <string name="Parcel Identity">Identidad de la parcela</string>
- <string name="Parcel Settings">Configuración de la parcela</string>
- <string name="Parcel Powers">Poder de la parcela</string>
- <string name="Parcel Access">Acceso a la parcela</string>
- <string name="Parcel Content">Contenido de la parcela</string>
- <string name="Object Management">Manejo de objetos</string>
- <string name="Accounting">Contabilidad</string>
- <string name="Notices">Avisos</string>
- <string name="Chat" value="Chat :">Chat</string>
- <string name="DeleteItems">¿Deseas eliminar los elementos seleccionados?</string>
- <string name="DeleteItem">¿Deseas eliminar el elemento seleccionado?</string>
- <string name="EmptyOutfitText">No hay elementos en este vestuario</string>
- <string name="ExternalEditorNotSet">Selecciona un editor mediante la configuración de ExternalEditor.</string>
- <string name="ExternalEditorNotFound">No se encuentra el editor externo especificado.
+ Si sigues teniendo problemas, comprueba la configuración de la red y del servidor de seguridad.
+ </string>
+ <string name="dateTimeWeekdaysNames">
+ Domingo:Lunes:Martes:Miércoles:Jueves:Viernes:Sábado
+ </string>
+ <string name="dateTimeWeekdaysShortNames">
+ Dom:Lun:Mar:Mié:Jue:Vie:Sáb
+ </string>
+ <string name="dateTimeMonthNames">
+ Enero:Febrero:Marzo:Abril:Mayo:Junio:Julio:Agosto:Septiembre:Octubre:Noviembre:Diciembre
+ </string>
+ <string name="dateTimeMonthShortNames">
+ Ene:Feb:Mar:Abr:May:Jun:Jul:Ago:Sep:Oct:Nov:Dic
+ </string>
+ <string name="dateTimeDayFormat">
+ [MDAY]
+ </string>
+ <string name="dateTimeAM">
+ AM
+ </string>
+ <string name="dateTimePM">
+ PM
+ </string>
+ <string name="LocalEstimateUSD">
+ [AMOUNT] US$
+ </string>
+ <string name="Group Ban">
+ Expulsión de grupo
+ </string>
+ <string name="Membership">
+ Membresía
+ </string>
+ <string name="Roles">
+ Roles
+ </string>
+ <string name="Group Identity">
+ Indentidad de grupo
+ </string>
+ <string name="Parcel Management">
+ Gestión de la parcela
+ </string>
+ <string name="Parcel Identity">
+ Identidad de la parcela
+ </string>
+ <string name="Parcel Settings">
+ Configuración de la parcela
+ </string>
+ <string name="Parcel Powers">
+ Poder de la parcela
+ </string>
+ <string name="Parcel Access">
+ Acceso a la parcela
+ </string>
+ <string name="Parcel Content">
+ Contenido de la parcela
+ </string>
+ <string name="Object Management">
+ Manejo de objetos
+ </string>
+ <string name="Accounting">
+ Contabilidad
+ </string>
+ <string name="Notices">
+ Avisos
+ </string>
+ <string name="Chat" value="Chat :">
+ Chat
+ </string>
+ <string name="DeleteItems">
+ ¿Deseas eliminar los elementos seleccionados?
+ </string>
+ <string name="DeleteItem">
+ ¿Deseas eliminar el elemento seleccionado?
+ </string>
+ <string name="EmptyOutfitText">
+ No hay elementos en este vestuario
+ </string>
+ <string name="ExternalEditorNotSet">
+ Selecciona un editor mediante la configuración de ExternalEditor.
+ </string>
+ <string name="ExternalEditorNotFound">
+ No se encuentra el editor externo especificado.
Inténtalo incluyendo la ruta de acceso al editor entre comillas
-(por ejemplo, &quot;/ruta a mi/editor&quot; &quot;%s&quot;).</string>
- <string name="ExternalEditorCommandParseError">Error al analizar el comando de editor externo.</string>
- <string name="ExternalEditorFailedToRun">Error al ejecutar el editor externo.</string>
- <string name="TranslationFailed">Error al traducir: [REASON]</string>
- <string name="TranslationResponseParseError">Error al analizar la respuesta de la traducción.</string>
- <string name="Esc">Esc</string>
- <string name="Space">Space</string>
- <string name="Enter">Enter</string>
- <string name="Tab">Tab</string>
- <string name="Ins">Ins</string>
- <string name="Del">Del</string>
- <string name="Backsp">Backsp</string>
- <string name="Shift">Shift</string>
- <string name="Ctrl">Ctrl</string>
- <string name="Alt">Alt</string>
- <string name="CapsLock">CapsLock</string>
- <string name="Home">Base</string>
- <string name="End">End</string>
- <string name="PgUp">PgUp</string>
- <string name="PgDn">PgDn</string>
- <string name="F1">F1</string>
- <string name="F2">F2</string>
- <string name="F3">F3</string>
- <string name="F4">F4</string>
- <string name="F5">F5</string>
- <string name="F6">F6</string>
- <string name="F7">F7</string>
- <string name="F8">F8</string>
- <string name="F9">F9</string>
- <string name="F10">F10</string>
- <string name="F11">F11</string>
- <string name="F12">F12</string>
- <string name="Add">Añadir</string>
- <string name="Subtract">Restar</string>
- <string name="Multiply">Multiplicar</string>
- <string name="Divide">Dividir</string>
- <string name="PAD_DIVIDE">PAD_DIVIDE</string>
- <string name="PAD_LEFT">PAD_LEFT</string>
- <string name="PAD_RIGHT">PAD_RIGHT</string>
- <string name="PAD_DOWN">PAD_DOWN</string>
- <string name="PAD_UP">PAD_UP</string>
- <string name="PAD_HOME">PAD_HOME</string>
- <string name="PAD_END">PAD_END</string>
- <string name="PAD_PGUP">PAD_PGUP</string>
- <string name="PAD_PGDN">PAD_PGDN</string>
- <string name="PAD_CENTER">PAD_CENTER</string>
- <string name="PAD_INS">PAD_INS</string>
- <string name="PAD_DEL">PAD_DEL</string>
- <string name="PAD_Enter">PAD_Enter</string>
- <string name="PAD_BUTTON0">PAD_BUTTON0</string>
- <string name="PAD_BUTTON1">PAD_BUTTON1</string>
- <string name="PAD_BUTTON2">PAD_BUTTON2</string>
- <string name="PAD_BUTTON3">PAD_BUTTON3</string>
- <string name="PAD_BUTTON4">PAD_BUTTON4</string>
- <string name="PAD_BUTTON5">PAD_BUTTON5</string>
- <string name="PAD_BUTTON6">PAD_BUTTON6</string>
- <string name="PAD_BUTTON7">PAD_BUTTON7</string>
- <string name="PAD_BUTTON8">PAD_BUTTON8</string>
- <string name="PAD_BUTTON9">PAD_BUTTON9</string>
- <string name="PAD_BUTTON10">PAD_BUTTON10</string>
- <string name="PAD_BUTTON11">PAD_BUTTON11</string>
- <string name="PAD_BUTTON12">PAD_BUTTON12</string>
- <string name="PAD_BUTTON13">PAD_BUTTON13</string>
- <string name="PAD_BUTTON14">PAD_BUTTON14</string>
- <string name="PAD_BUTTON15">PAD_BUTTON15</string>
- <string name="-">-</string>
- <string name="=">=</string>
- <string name="`">`</string>
- <string name=";">;</string>
- <string name="[">[</string>
- <string name="]">]</string>
- <string name="\">\</string>
- <string name="0">0</string>
- <string name="1">1</string>
- <string name="2">2</string>
- <string name="3">3</string>
- <string name="4">4</string>
- <string name="5">5</string>
- <string name="6">6</string>
- <string name="7">7</string>
- <string name="8">8</string>
- <string name="9">9</string>
- <string name="A">A</string>
- <string name="B">B</string>
- <string name="C">C</string>
- <string name="D">D</string>
- <string name="E">E</string>
- <string name="F">F</string>
- <string name="G">G</string>
- <string name="H">H</string>
- <string name="I">I</string>
- <string name="J">J</string>
- <string name="K">K</string>
- <string name="L">L</string>
- <string name="M">M</string>
- <string name="N">N</string>
- <string name="O">O</string>
- <string name="P">P</string>
- <string name="Q">Q</string>
- <string name="R">R</string>
- <string name="S">S</string>
- <string name="T">T</string>
- <string name="U">U</string>
- <string name="V">V</string>
- <string name="W">W</string>
- <string name="X">X</string>
- <string name="Y">Y</string>
- <string name="Z">Z</string>
- <string name="BeaconParticle">Viendo balizas de partículas (azules)</string>
- <string name="BeaconPhysical">Viendo balizas de objetos materiales (verdes)</string>
- <string name="BeaconScripted">Viendo balizas de objetos con script (rojas)</string>
- <string name="BeaconScriptedTouch">Viendo el objeto con script con balizas de función táctil (rojas)</string>
- <string name="BeaconSound">Viendo balizas de sonido (amarillas)</string>
- <string name="BeaconMedia">Viendo balizas de medios (blancas)</string>
- <string name="BeaconSun">Visualización de la baliza de dirección del sol (naranja)</string>
- <string name="BeaconMoon">Visualización de la baliza de dirección de la luna (violeta)</string>
- <string name="ParticleHiding">Ocultando las partículas</string>
- <string name="Command_AboutLand_Label">Acerca del terreno</string>
- <string name="Command_Appearance_Label">Apariencia</string>
- <string name="Command_Avatar_Label">Avatar</string>
- <string name="Command_Build_Label">Construir</string>
- <string name="Command_Chat_Label">Chat</string>
- <string name="Command_Conversations_Label">Conversaciones</string>
- <string name="Command_Compass_Label">Brújula</string>
- <string name="Command_Destinations_Label">Destinos</string>
- <string name="Command_Environments_Label">Mis entornos</string>
- <string name="Command_Facebook_Label">Facebook</string>
- <string name="Command_Flickr_Label">Flickr</string>
- <string name="Command_Gestures_Label">Gestos</string>
- <string name="Command_Grid_Status_Label">Estado del Grid</string>
- <string name="Command_HowTo_Label">Cómo</string>
- <string name="Command_Inventory_Label">Inventario</string>
- <string name="Command_Map_Label">Mapa</string>
- <string name="Command_Marketplace_Label">Mercado</string>
- <string name="Command_MarketplaceListings_Label">Mercado</string>
- <string name="Command_MiniMap_Label">Minimapa</string>
- <string name="Command_Move_Label">Caminar / Correr / Volar</string>
- <string name="Command_Outbox_Label">Buzón de salida de comerciante</string>
- <string name="Command_People_Label">Gente</string>
- <string name="Command_Picks_Label">Destacados</string>
- <string name="Command_Places_Label">Lugares</string>
- <string name="Command_Preferences_Label">Preferencias</string>
- <string name="Command_Profile_Label">Perfil</string>
- <string name="Command_Report_Abuse_Label">Denunciar una infracción</string>
- <string name="Command_Search_Label">Buscar</string>
- <string name="Command_Snapshot_Label">Foto</string>
- <string name="Command_Speak_Label">Hablar</string>
- <string name="Command_Twitter_Label">Twitter</string>
- <string name="Command_View_Label">Controles de la cámara</string>
- <string name="Command_Voice_Label">Configuración de voz</string>
- <string name="Command_AboutLand_Tooltip">Información sobre el terreno que vas a visitar</string>
- <string name="Command_Appearance_Tooltip">Cambiar tu avatar</string>
- <string name="Command_Avatar_Tooltip">Elegir un avatar completo</string>
- <string name="Command_Build_Tooltip">Construir objetos y modificar la forma del terreno</string>
- <string name="Command_Chat_Tooltip">Habla por chat de texto con las personas próximas</string>
- <string name="Command_Conversations_Tooltip">Conversar con todos</string>
- <string name="Command_Compass_Tooltip">Brújula</string>
- <string name="Command_Destinations_Tooltip">Destinos de interés</string>
- <string name="Command_Environments_Tooltip">Mis entornos</string>
- <string name="Command_Facebook_Tooltip">Publicar en Facebook</string>
- <string name="Command_Flickr_Tooltip">Subir a Flickr</string>
- <string name="Command_Gestures_Tooltip">Gestos para tu avatar</string>
- <string name="Command_Grid_Status_Tooltip">Mostrar el estado actual del Grid</string>
- <string name="Command_HowTo_Tooltip">Cómo hacer las tareas habituales</string>
- <string name="Command_Inventory_Tooltip">Ver y usar tus pertenencias</string>
- <string name="Command_Map_Tooltip">Mapa del mundo</string>
- <string name="Command_Marketplace_Tooltip">Ir de compras</string>
- <string name="Command_MarketplaceListings_Tooltip">Vende tu creación</string>
- <string name="Command_MiniMap_Tooltip">Mostrar la gente que está cerca</string>
- <string name="Command_Move_Tooltip">Desplazando el avatar</string>
- <string name="Command_Outbox_Tooltip">Transfiere objetos a tu mercado para venderlos</string>
- <string name="Command_People_Tooltip">Amigos, grupos y personas próximas</string>
- <string name="Command_Picks_Tooltip">Lugares que se mostrarán como favoritos en tu perfil</string>
- <string name="Command_Places_Tooltip">Lugares que has guardado</string>
- <string name="Command_Preferences_Tooltip">Preferencias</string>
- <string name="Command_Profile_Tooltip">Consulta o edita tu perfil</string>
- <string name="Command_Report_Abuse_Tooltip">Denunciar una infracción</string>
- <string name="Command_Search_Tooltip">Buscar lugares, eventos y personas</string>
- <string name="Command_Snapshot_Tooltip">Tomar una fotografía</string>
- <string name="Command_Speak_Tooltip">Utiliza el micrófono para hablar con las personas próximas</string>
- <string name="Command_Twitter_Tooltip">Twitter</string>
- <string name="Command_View_Tooltip">Cambiando el ángulo de la cámara</string>
- <string name="Command_Voice_Tooltip">Controles de volumen para las llamadas y la gente que se encuentre cerca de ti en el mundo virtual</string>
- <string name="Toolbar_Bottom_Tooltip">actualmente en tu barra de herramientas inferior</string>
- <string name="Toolbar_Left_Tooltip">actualmente en tu barra de herramientas izquierda</string>
- <string name="Toolbar_Right_Tooltip">actualmente en tu barra de herramientas derecha</string>
- <string name="Retain%">% retención</string>
- <string name="Detail">Detalle</string>
- <string name="Better Detail">Mejor detalle</string>
- <string name="Surface">Superficie</string>
- <string name="Solid">Sólido</string>
- <string name="Wrap">Envoltura</string>
- <string name="Preview">Vista previa</string>
- <string name="Normal">Normal</string>
- <string name="Pathfinding_Wiki_URL">http://wiki.secondlife.com/wiki/Pathfinding_Tools_in_the_Second_Life_Viewer</string>
- <string name="Pathfinding_Object_Attr_None">Ninguno</string>
- <string name="Pathfinding_Object_Attr_Permanent">Afecta al navmesh</string>
- <string name="Pathfinding_Object_Attr_Character">Personaje</string>
- <string name="Pathfinding_Object_Attr_MultiSelect">(Múltiple)</string>
- <string name="snapshot_quality_very_low">Muy bajo</string>
- <string name="snapshot_quality_low">Bajo</string>
- <string name="snapshot_quality_medium">Medio</string>
- <string name="snapshot_quality_high">Alto</string>
- <string name="snapshot_quality_very_high">Muy alto</string>
- <string name="TeleportMaturityExceeded">El Residente no puede visitar esta región.</string>
- <string name="UserDictionary">[Usuario]</string>
- <string name="experience_tools_experience">Experiencia</string>
- <string name="ExperienceNameNull">(sin experiencia)</string>
- <string name="ExperienceNameUntitled">(experiencia sin título)</string>
- <string name="Land-Scope">Activa en el terreno</string>
- <string name="Grid-Scope">Activa en el Grid</string>
- <string name="Allowed_Experiences_Tab">PERMITIDO</string>
- <string name="Blocked_Experiences_Tab">BLOQUEADO</string>
- <string name="Contrib_Experiences_Tab">COLABORADOR</string>
- <string name="Admin_Experiences_Tab">ADMIN.</string>
- <string name="Recent_Experiences_Tab">RECIENTE</string>
- <string name="Owned_Experiences_Tab">PROPIEDAD</string>
- <string name="ExperiencesCounter">([EXPERIENCES], máx. [MAXEXPERIENCES])</string>
- <string name="ExperiencePermission1">hacerte con tus controles</string>
- <string name="ExperiencePermission3">activar animaciones en tu avatar</string>
- <string name="ExperiencePermission4">anexar a tu avatar</string>
- <string name="ExperiencePermission9">seguimiento de la cámara</string>
- <string name="ExperiencePermission10">controlar tu cámara</string>
- <string name="ExperiencePermission11">teleportarte</string>
- <string name="ExperiencePermission12">aceptar automáticamente permisos de experiencias</string>
- <string name="ExperiencePermission16">forzar que el avatar se siente</string>
- <string name="ExperiencePermission17">cambiar tu configuración del entorno</string>
- <string name="ExperiencePermissionShortUnknown">realizar una operación desconocida: [Permission]</string>
- <string name="ExperiencePermissionShort1">Ponerte al mando</string>
- <string name="ExperiencePermissionShort3">Activar animaciones</string>
- <string name="ExperiencePermissionShort4">Anexar</string>
- <string name="ExperiencePermissionShort9">Seguir la cámara</string>
- <string name="ExperiencePermissionShort10">Controlar la cámara</string>
- <string name="ExperiencePermissionShort11">Teleporte</string>
- <string name="ExperiencePermissionShort12">Otorgar permisos</string>
- <string name="ExperiencePermissionShort16">Sentarte</string>
- <string name="ExperiencePermissionShort17">Entorno</string>
- <string name="logging_calls_disabled_log_empty">No se están registrando las conversaciones. Para empezar a grabar un registro, elige &quot;Guardar: Solo registro&quot; o &quot;Guardar: Registro y transcripciones&quot; en Preferencias &gt; Chat.</string>
- <string name="logging_calls_disabled_log_not_empty">No se registrarán más conversaciones. Para reanudar la grabación de un registro, elige &quot;Guardar: Solo registro&quot; o &quot;Guardar: Registro y transcripciones&quot; en Preferencias &gt; Chat.</string>
- <string name="logging_calls_enabled_log_empty">No hay conversaciones grabadas. Después de contactar con una persona, o de que alguien contacte contigo, aquí se mostrará una entrada de registro.</string>
- <string name="loading_chat_logs">Cargando...</string>
- <string name="na">n/c</string>
- <string name="preset_combo_label">-Lista vacía-</string>
- <string name="Default">Predeterminado</string>
- <string name="none_paren_cap">(ninguno)</string>
- <string name="no_limit">Sin límite</string>
- <string name="Mav_Details_MAV_FOUND_DEGENERATE_TRIANGLES">La forma física contiene triángulos demasiado pequeños. Intenta simplificar el modelo físico.</string>
- <string name="Mav_Details_MAV_CONFIRMATION_DATA_MISMATCH">La forma física contiene datos de confirmación erróneos. Intenta corregir el modelo físico.</string>
- <string name="Mav_Details_MAV_UNKNOWN_VERSION">La versión de la forma física no es correcta. Configura la versión correcta del modelo físico.</string>
- <string name="couldnt_resolve_host">Error de DNS al resolver el nombre del host([HOSTNAME]).
+(por ejemplo, "/ruta a mi/editor" "%s").
+ </string>
+ <string name="ExternalEditorCommandParseError">
+ Error al analizar el comando de editor externo.
+ </string>
+ <string name="ExternalEditorFailedToRun">
+ Error al ejecutar el editor externo.
+ </string>
+ <string name="TranslationFailed">
+ Error al traducir: [REASON]
+ </string>
+ <string name="TranslationResponseParseError">
+ Error al analizar la respuesta de la traducción.
+ </string>
+ <string name="Esc">
+ Esc
+ </string>
+ <string name="Space">
+ Space
+ </string>
+ <string name="Enter">
+ Enter
+ </string>
+ <string name="Tab">
+ Tab
+ </string>
+ <string name="Ins">
+ Ins
+ </string>
+ <string name="Del">
+ Del
+ </string>
+ <string name="Backsp">
+ Backsp
+ </string>
+ <string name="Shift">
+ Shift
+ </string>
+ <string name="Ctrl">
+ Ctrl
+ </string>
+ <string name="Alt">
+ Alt
+ </string>
+ <string name="CapsLock">
+ CapsLock
+ </string>
+ <string name="Home">
+ Base
+ </string>
+ <string name="End">
+ End
+ </string>
+ <string name="PgUp">
+ PgUp
+ </string>
+ <string name="PgDn">
+ PgDn
+ </string>
+ <string name="F1">
+ F1
+ </string>
+ <string name="F2">
+ F2
+ </string>
+ <string name="F3">
+ F3
+ </string>
+ <string name="F4">
+ F4
+ </string>
+ <string name="F5">
+ F5
+ </string>
+ <string name="F6">
+ F6
+ </string>
+ <string name="F7">
+ F7
+ </string>
+ <string name="F8">
+ F8
+ </string>
+ <string name="F9">
+ F9
+ </string>
+ <string name="F10">
+ F10
+ </string>
+ <string name="F11">
+ F11
+ </string>
+ <string name="F12">
+ F12
+ </string>
+ <string name="Add">
+ Añadir
+ </string>
+ <string name="Subtract">
+ Restar
+ </string>
+ <string name="Multiply">
+ Multiplicar
+ </string>
+ <string name="Divide">
+ Dividir
+ </string>
+ <string name="PAD_DIVIDE">
+ PAD_DIVIDE
+ </string>
+ <string name="PAD_LEFT">
+ PAD_LEFT
+ </string>
+ <string name="PAD_RIGHT">
+ PAD_RIGHT
+ </string>
+ <string name="PAD_DOWN">
+ PAD_DOWN
+ </string>
+ <string name="PAD_UP">
+ PAD_UP
+ </string>
+ <string name="PAD_HOME">
+ PAD_HOME
+ </string>
+ <string name="PAD_END">
+ PAD_END
+ </string>
+ <string name="PAD_PGUP">
+ PAD_PGUP
+ </string>
+ <string name="PAD_PGDN">
+ PAD_PGDN
+ </string>
+ <string name="PAD_CENTER">
+ PAD_CENTER
+ </string>
+ <string name="PAD_INS">
+ PAD_INS
+ </string>
+ <string name="PAD_DEL">
+ PAD_DEL
+ </string>
+ <string name="PAD_Enter">
+ PAD_Enter
+ </string>
+ <string name="PAD_BUTTON0">
+ PAD_BUTTON0
+ </string>
+ <string name="PAD_BUTTON1">
+ PAD_BUTTON1
+ </string>
+ <string name="PAD_BUTTON2">
+ PAD_BUTTON2
+ </string>
+ <string name="PAD_BUTTON3">
+ PAD_BUTTON3
+ </string>
+ <string name="PAD_BUTTON4">
+ PAD_BUTTON4
+ </string>
+ <string name="PAD_BUTTON5">
+ PAD_BUTTON5
+ </string>
+ <string name="PAD_BUTTON6">
+ PAD_BUTTON6
+ </string>
+ <string name="PAD_BUTTON7">
+ PAD_BUTTON7
+ </string>
+ <string name="PAD_BUTTON8">
+ PAD_BUTTON8
+ </string>
+ <string name="PAD_BUTTON9">
+ PAD_BUTTON9
+ </string>
+ <string name="PAD_BUTTON10">
+ PAD_BUTTON10
+ </string>
+ <string name="PAD_BUTTON11">
+ PAD_BUTTON11
+ </string>
+ <string name="PAD_BUTTON12">
+ PAD_BUTTON12
+ </string>
+ <string name="PAD_BUTTON13">
+ PAD_BUTTON13
+ </string>
+ <string name="PAD_BUTTON14">
+ PAD_BUTTON14
+ </string>
+ <string name="PAD_BUTTON15">
+ PAD_BUTTON15
+ </string>
+ <string name="-">
+ -
+ </string>
+ <string name="=">
+ =
+ </string>
+ <string name="`">
+ `
+ </string>
+ <string name=";">
+ ;
+ </string>
+ <string name="[">
+ [
+ </string>
+ <string name="]">
+ ]
+ </string>
+ <string name="\">
+ \
+ </string>
+ <string name="0">
+ 0
+ </string>
+ <string name="1">
+ 1
+ </string>
+ <string name="2">
+ 2
+ </string>
+ <string name="3">
+ 3
+ </string>
+ <string name="4">
+ 4
+ </string>
+ <string name="5">
+ 5
+ </string>
+ <string name="6">
+ 6
+ </string>
+ <string name="7">
+ 7
+ </string>
+ <string name="8">
+ 8
+ </string>
+ <string name="9">
+ 9
+ </string>
+ <string name="A">
+ A
+ </string>
+ <string name="B">
+ B
+ </string>
+ <string name="C">
+ C
+ </string>
+ <string name="D">
+ D
+ </string>
+ <string name="E">
+ E
+ </string>
+ <string name="F">
+ F
+ </string>
+ <string name="G">
+ G
+ </string>
+ <string name="H">
+ H
+ </string>
+ <string name="I">
+ I
+ </string>
+ <string name="J">
+ J
+ </string>
+ <string name="K">
+ K
+ </string>
+ <string name="L">
+ L
+ </string>
+ <string name="M">
+ M
+ </string>
+ <string name="N">
+ N
+ </string>
+ <string name="O">
+ O
+ </string>
+ <string name="P">
+ P
+ </string>
+ <string name="Q">
+ Q
+ </string>
+ <string name="R">
+ R
+ </string>
+ <string name="S">
+ S
+ </string>
+ <string name="T">
+ T
+ </string>
+ <string name="U">
+ U
+ </string>
+ <string name="V">
+ V
+ </string>
+ <string name="W">
+ W
+ </string>
+ <string name="X">
+ X
+ </string>
+ <string name="Y">
+ Y
+ </string>
+ <string name="Z">
+ Z
+ </string>
+ <string name="BeaconParticle">
+ Viendo balizas de partículas (azules)
+ </string>
+ <string name="BeaconPhysical">
+ Viendo balizas de objetos materiales (verdes)
+ </string>
+ <string name="BeaconScripted">
+ Viendo balizas de objetos con script (rojas)
+ </string>
+ <string name="BeaconScriptedTouch">
+ Viendo el objeto con script con balizas de función táctil (rojas)
+ </string>
+ <string name="BeaconSound">
+ Viendo balizas de sonido (amarillas)
+ </string>
+ <string name="BeaconMedia">
+ Viendo balizas de medios (blancas)
+ </string>
+ <string name="BeaconSun">
+ Visualización de la baliza de dirección del sol (naranja)
+ </string>
+ <string name="BeaconMoon">
+ Visualización de la baliza de dirección de la luna (violeta)
+ </string>
+ <string name="ParticleHiding">
+ Ocultando las partículas
+ </string>
+ <string name="Command_AboutLand_Label">
+ Acerca del terreno
+ </string>
+ <string name="Command_Appearance_Label">
+ Apariencia
+ </string>
+ <string name="Command_Avatar_Label">
+ Avatar
+ </string>
+ <string name="Command_Build_Label">
+ Construir
+ </string>
+ <string name="Command_Chat_Label">
+ Chat
+ </string>
+ <string name="Command_Conversations_Label">
+ Conversaciones
+ </string>
+ <string name="Command_Compass_Label">
+ Brújula
+ </string>
+ <string name="Command_Destinations_Label">
+ Destinos
+ </string>
+ <string name="Command_Environments_Label">
+ Mis entornos
+ </string>
+ <string name="Command_Facebook_Label">
+ Facebook
+ </string>
+ <string name="Command_Flickr_Label">
+ Flickr
+ </string>
+ <string name="Command_Gestures_Label">
+ Gestos
+ </string>
+ <string name="Command_Grid_Status_Label">
+ Estado del Grid
+ </string>
+ <string name="Command_HowTo_Label">
+ Cómo
+ </string>
+ <string name="Command_Inventory_Label">
+ Inventario
+ </string>
+ <string name="Command_Map_Label">
+ Mapa
+ </string>
+ <string name="Command_Marketplace_Label">
+ Mercado
+ </string>
+ <string name="Command_MarketplaceListings_Label">
+ Mercado
+ </string>
+ <string name="Command_MiniMap_Label">
+ Minimapa
+ </string>
+ <string name="Command_Move_Label">
+ Caminar / Correr / Volar
+ </string>
+ <string name="Command_Outbox_Label">
+ Buzón de salida de comerciante
+ </string>
+ <string name="Command_People_Label">
+ Gente
+ </string>
+ <string name="Command_Picks_Label">
+ Destacados
+ </string>
+ <string name="Command_Places_Label">
+ Lugares
+ </string>
+ <string name="Command_Preferences_Label">
+ Preferencias
+ </string>
+ <string name="Command_Profile_Label">
+ Perfil
+ </string>
+ <string name="Command_Report_Abuse_Label">
+ Denunciar una infracción
+ </string>
+ <string name="Command_Search_Label">
+ Buscar
+ </string>
+ <string name="Command_Snapshot_Label">
+ Foto
+ </string>
+ <string name="Command_Speak_Label">
+ Hablar
+ </string>
+ <string name="Command_Twitter_Label">
+ Twitter
+ </string>
+ <string name="Command_View_Label">
+ Controles de la cámara
+ </string>
+ <string name="Command_Voice_Label">
+ Configuración de voz
+ </string>
+ <string name="Command_AboutLand_Tooltip">
+ Información sobre el terreno que vas a visitar
+ </string>
+ <string name="Command_Appearance_Tooltip">
+ Cambiar tu avatar
+ </string>
+ <string name="Command_Avatar_Tooltip">
+ Elegir un avatar completo
+ </string>
+ <string name="Command_Build_Tooltip">
+ Construir objetos y modificar la forma del terreno
+ </string>
+ <string name="Command_Chat_Tooltip">
+ Habla por chat de texto con las personas próximas
+ </string>
+ <string name="Command_Conversations_Tooltip">
+ Conversar con todos
+ </string>
+ <string name="Command_Compass_Tooltip">
+ Brújula
+ </string>
+ <string name="Command_Destinations_Tooltip">
+ Destinos de interés
+ </string>
+ <string name="Command_Environments_Tooltip">
+ Mis entornos
+ </string>
+ <string name="Command_Facebook_Tooltip">
+ Publicar en Facebook
+ </string>
+ <string name="Command_Flickr_Tooltip">
+ Subir a Flickr
+ </string>
+ <string name="Command_Gestures_Tooltip">
+ Gestos para tu avatar
+ </string>
+ <string name="Command_Grid_Status_Tooltip">
+ Mostrar el estado actual del Grid
+ </string>
+ <string name="Command_HowTo_Tooltip">
+ Cómo hacer las tareas habituales
+ </string>
+ <string name="Command_Inventory_Tooltip">
+ Ver y usar tus pertenencias
+ </string>
+ <string name="Command_Map_Tooltip">
+ Mapa del mundo
+ </string>
+ <string name="Command_Marketplace_Tooltip">
+ Ir de compras
+ </string>
+ <string name="Command_MarketplaceListings_Tooltip">
+ Vende tu creación
+ </string>
+ <string name="Command_MiniMap_Tooltip">
+ Mostrar la gente que está cerca
+ </string>
+ <string name="Command_Move_Tooltip">
+ Desplazando el avatar
+ </string>
+ <string name="Command_Outbox_Tooltip">
+ Transfiere objetos a tu mercado para venderlos
+ </string>
+ <string name="Command_People_Tooltip">
+ Amigos, grupos y personas próximas
+ </string>
+ <string name="Command_Picks_Tooltip">
+ Lugares que se mostrarán como favoritos en tu perfil
+ </string>
+ <string name="Command_Places_Tooltip">
+ Lugares que has guardado
+ </string>
+ <string name="Command_Preferences_Tooltip">
+ Preferencias
+ </string>
+ <string name="Command_Profile_Tooltip">
+ Consulta o edita tu perfil
+ </string>
+ <string name="Command_Report_Abuse_Tooltip">
+ Denunciar una infracción
+ </string>
+ <string name="Command_Search_Tooltip">
+ Buscar lugares, eventos y personas
+ </string>
+ <string name="Command_Snapshot_Tooltip">
+ Tomar una fotografía
+ </string>
+ <string name="Command_Speak_Tooltip">
+ Utiliza el micrófono para hablar con las personas próximas
+ </string>
+ <string name="Command_Twitter_Tooltip">
+ Twitter
+ </string>
+ <string name="Command_View_Tooltip">
+ Cambiando el ángulo de la cámara
+ </string>
+ <string name="Command_Voice_Tooltip">
+ Controles de volumen para las llamadas y la gente que se encuentre cerca de ti en el mundo virtual
+ </string>
+ <string name="Toolbar_Bottom_Tooltip">
+ actualmente en tu barra de herramientas inferior
+ </string>
+ <string name="Toolbar_Left_Tooltip">
+ actualmente en tu barra de herramientas izquierda
+ </string>
+ <string name="Toolbar_Right_Tooltip">
+ actualmente en tu barra de herramientas derecha
+ </string>
+ <string name="Retain%">
+ % retención
+ </string>
+ <string name="Detail">
+ Detalle
+ </string>
+ <string name="Better Detail">
+ Mejor detalle
+ </string>
+ <string name="Surface">
+ Superficie
+ </string>
+ <string name="Solid">
+ Sólido
+ </string>
+ <string name="Wrap">
+ Envoltura
+ </string>
+ <string name="Preview">
+ Vista previa
+ </string>
+ <string name="Normal">
+ Normal
+ </string>
+ <string name="Pathfinding_Wiki_URL">
+ http://wiki.secondlife.com/wiki/Pathfinding_Tools_in_the_Second_Life_Viewer
+ </string>
+ <string name="Pathfinding_Object_Attr_None">
+ Ninguno
+ </string>
+ <string name="Pathfinding_Object_Attr_Permanent">
+ Afecta al navmesh
+ </string>
+ <string name="Pathfinding_Object_Attr_Character">
+ Personaje
+ </string>
+ <string name="Pathfinding_Object_Attr_MultiSelect">
+ (Múltiple)
+ </string>
+ <string name="snapshot_quality_very_low">
+ Muy bajo
+ </string>
+ <string name="snapshot_quality_low">
+ Bajo
+ </string>
+ <string name="snapshot_quality_medium">
+ Medio
+ </string>
+ <string name="snapshot_quality_high">
+ Alto
+ </string>
+ <string name="snapshot_quality_very_high">
+ Muy alto
+ </string>
+ <string name="TeleportMaturityExceeded">
+ El Residente no puede visitar esta región.
+ </string>
+ <string name="UserDictionary">
+ [Usuario]
+ </string>
+ <string name="experience_tools_experience">
+ Experiencia
+ </string>
+ <string name="ExperienceNameNull">
+ (sin experiencia)
+ </string>
+ <string name="ExperienceNameUntitled">
+ (experiencia sin título)
+ </string>
+ <string name="Land-Scope">
+ Activa en el terreno
+ </string>
+ <string name="Grid-Scope">
+ Activa en el Grid
+ </string>
+ <string name="Allowed_Experiences_Tab">
+ PERMITIDO
+ </string>
+ <string name="Blocked_Experiences_Tab">
+ BLOQUEADO
+ </string>
+ <string name="Contrib_Experiences_Tab">
+ COLABORADOR
+ </string>
+ <string name="Admin_Experiences_Tab">
+ ADMIN.
+ </string>
+ <string name="Recent_Experiences_Tab">
+ RECIENTE
+ </string>
+ <string name="Owned_Experiences_Tab">
+ PROPIEDAD
+ </string>
+ <string name="ExperiencesCounter">
+ ([EXPERIENCES], máx. [MAXEXPERIENCES])
+ </string>
+ <string name="ExperiencePermission1">
+ hacerte con tus controles
+ </string>
+ <string name="ExperiencePermission3">
+ activar animaciones en tu avatar
+ </string>
+ <string name="ExperiencePermission4">
+ anexar a tu avatar
+ </string>
+ <string name="ExperiencePermission9">
+ seguimiento de la cámara
+ </string>
+ <string name="ExperiencePermission10">
+ controlar tu cámara
+ </string>
+ <string name="ExperiencePermission11">
+ teleportarte
+ </string>
+ <string name="ExperiencePermission12">
+ aceptar automáticamente permisos de experiencias
+ </string>
+ <string name="ExperiencePermission16">
+ forzar que el avatar se siente
+ </string>
+ <string name="ExperiencePermission17">
+ cambiar tu configuración del entorno
+ </string>
+ <string name="ExperiencePermissionShortUnknown">
+ realizar una operación desconocida: [Permission]
+ </string>
+ <string name="ExperiencePermissionShort1">
+ Ponerte al mando
+ </string>
+ <string name="ExperiencePermissionShort3">
+ Activar animaciones
+ </string>
+ <string name="ExperiencePermissionShort4">
+ Anexar
+ </string>
+ <string name="ExperiencePermissionShort9">
+ Seguir la cámara
+ </string>
+ <string name="ExperiencePermissionShort10">
+ Controlar la cámara
+ </string>
+ <string name="ExperiencePermissionShort11">
+ Teleporte
+ </string>
+ <string name="ExperiencePermissionShort12">
+ Otorgar permisos
+ </string>
+ <string name="ExperiencePermissionShort16">
+ Sentarte
+ </string>
+ <string name="ExperiencePermissionShort17">
+ Entorno
+ </string>
+ <string name="logging_calls_disabled_log_empty">
+ No se están registrando las conversaciones. Para empezar a grabar un registro, elige "Guardar: Solo registro" o "Guardar: Registro y transcripciones" en Preferencias &gt; Chat.
+ </string>
+ <string name="logging_calls_disabled_log_not_empty">
+ No se registrarán más conversaciones. Para reanudar la grabación de un registro, elige "Guardar: Solo registro" o "Guardar: Registro y transcripciones" en Preferencias &gt; Chat.
+ </string>
+ <string name="logging_calls_enabled_log_empty">
+ No hay conversaciones grabadas. Después de contactar con una persona, o de que alguien contacte contigo, aquí se mostrará una entrada de registro.
+ </string>
+ <string name="loading_chat_logs">
+ Cargando...
+ </string>
+ <string name="na">
+ n/c
+ </string>
+ <string name="preset_combo_label">
+ -Lista vacía-
+ </string>
+ <string name="Default">
+ Predeterminado
+ </string>
+ <string name="none_paren_cap">
+ (ninguno)
+ </string>
+ <string name="no_limit">
+ Sin límite
+ </string>
+ <string name="Mav_Details_MAV_FOUND_DEGENERATE_TRIANGLES">
+ La forma física contiene triángulos demasiado pequeños. Intenta simplificar el modelo físico.
+ </string>
+ <string name="Mav_Details_MAV_CONFIRMATION_DATA_MISMATCH">
+ La forma física contiene datos de confirmación erróneos. Intenta corregir el modelo físico.
+ </string>
+ <string name="Mav_Details_MAV_UNKNOWN_VERSION">
+ La versión de la forma física no es correcta. Configura la versión correcta del modelo físico.
+ </string>
+ <string name="couldnt_resolve_host">
+ Error de DNS al resolver el nombre del host([HOSTNAME]).
Por favor verifica si puedes conectarte al sitio web www.secondlife.com.
Si puedes conectarte, pero aún recibes este error, por favor accede a
-la sección Soporte y genera un informe del problema.</string>
- <string name="ssl_peer_certificate">El servidor de inicio de sesión no pudo verificarse vía SSL.
+la sección Soporte y genera un informe del problema.
+ </string>
+ <string name="ssl_peer_certificate">
+ El servidor de inicio de sesión no pudo verificarse vía SSL.
Si aún recibes este error, por favor accede a
la sección Soporte del sitio web Secondlife.com
-y genera un informe del problema.</string>
- <string name="ssl_connect_error">En general esto significa que el horario de tu computadora no está bien configurado.
+y genera un informe del problema.
+ </string>
+ <string name="ssl_connect_error">
+ En general esto significa que el horario de tu computadora no está bien configurado.
Por favor accede al Panel de control y asegúrate de que la hora y la fecha estén
bien configurados. Verifica también que tu red y tu cortafuegos estén bien
configurados. Si aún recibes este error, por favor accede a la sección Soporte
del sitio web Secondlife.com y genera un informe del problema.
-[https://community.secondlife.com/knowledgebase/english/error-messages-r520/#Section__3 Base de conocimientos]</string>
+[https://community.secondlife.com/knowledgebase/english/error-messages-r520/#Section__3 Base de conocimientos]
+ </string>
</strings>
diff --git a/indra/newview/skins/default/xui/es/teleport_strings.xml b/indra/newview/skins/default/xui/es/teleport_strings.xml
index 44be93cd80..cc6089584a 100644
--- a/indra/newview/skins/default/xui/es/teleport_strings.xml
+++ b/indra/newview/skins/default/xui/es/teleport_strings.xml
@@ -1,39 +1,95 @@
<?xml version="1.0" ?>
<teleport_messages>
<message_set name="errors">
- <message name="invalid_tport">Ha habido un problema al procesar tu petición de teleporte. Debes volver a iniciar sesión antes de poder teleportarte de nuevo.
-Si sigues recibiendo este mensaje, por favor, acude al [SUPPORT_SITE].</message>
- <message name="invalid_region_handoff">Ha habido un problema al procesar tu paso a otra región. Debes volver a iniciar sesión para poder pasar de región a región.
-Si sigues recibiendo este mensaje, por favor, acude al [SUPPORT_SITE].</message>
- <message name="blocked_tport">Lo sentimos, en estos momentos los teleportes están bloqueados. Vuelve a intentarlo en un momento. Si sigues sin poder teleportarte, desconéctate y vuelve a iniciar sesión para solucionar el problema.</message>
- <message name="nolandmark_tport">Lo sentimos, pero el sistema no ha podido localizar el destino de este hito.</message>
- <message name="timeout_tport">Lo sentimos, pero el sistema no ha podido completar el teleporte.
-Vuelva a intentarlo en un momento.</message>
- <message name="NoHelpIslandTP">No te puedes volver a teleportar a la isla de bienvenida.
-Para repetir el tutorial, visita la isla de bienvenida pública.</message>
- <message name="noaccess_tport">Lo sentimos, pero no tienes acceso al destino de este teleporte.</message>
- <message name="missing_attach_tport">Aún no han llegado tus objetos anexados. Espera unos segundos más o desconéctate y vuelve a iniciar sesión antes de teleportarte.</message>
- <message name="too_many_uploads_tport">La cola de espera en esta región está actualmente obstruida, por lo que tu petición de teleporte no se atenderá en un tiempo prudencial. Por favor, vuelve a intentarlo en unos minutos o ve a una zona menos ocupada.</message>
- <message name="expired_tport">Lo sentimos, pero el sistema no ha podido atender a tu petición de teleporte en un tiempo prudencial. Por favor, vuelve a intentarlo en unos minutos.</message>
- <message name="expired_region_handoff">Lo sentimos, pero el sistema no ha podido completar tu paso a otra región en un tiempo prudencial. Por favor, vuelve a intentarlo en unos minutos.</message>
- <message name="no_host">Ha sido imposible encontrar el destino del teleporte: o está desactivado temporalmente o ya no existe. Por favor, vuelve a intentarlo en unos minutos.</message>
- <message name="no_inventory_host">En estos momentos no está disponible el sistema del inventario.</message>
- <message name="MustGetAgeRegion">Solo pueden acceder a esta región los mayores de 18 años.</message>
- <message name="RegionTPSpecialUsageBlocked">No puedes entrar en la región. '[REGION_NAME]' es una región de juegos de habilidad, y debes cumplir determinados criterios para poder entrar en ella. Consulta los detalles en las [http://wiki.secondlife.com/wiki/Linden_Lab_Official:Skill_Gaming_in_Second_Life P+F de juegos de habilidad].</message>
- <message name="preexisting_tport">Lo sentimos, pero el sistema no pudo comenzar tu teleportacion. Por favor inténtalo de nuevo en unos minutos</message>
+ <message name="invalid_tport">
+ Ha habido un problema al procesar tu petición de teleporte. Debes volver a iniciar sesión antes de poder teleportarte de nuevo.
+Si sigues recibiendo este mensaje, por favor, acude al [SUPPORT_SITE].
+ </message>
+ <message name="invalid_region_handoff">
+ Ha habido un problema al procesar tu paso a otra región. Debes volver a iniciar sesión para poder pasar de región a región.
+Si sigues recibiendo este mensaje, por favor, acude al [SUPPORT_SITE].
+ </message>
+ <message name="blocked_tport">
+ Lo sentimos, en estos momentos los teleportes están bloqueados. Vuelve a intentarlo en un momento. Si sigues sin poder teleportarte, desconéctate y vuelve a iniciar sesión para solucionar el problema.
+ </message>
+ <message name="nolandmark_tport">
+ Lo sentimos, pero el sistema no ha podido localizar el destino de este hito.
+ </message>
+ <message name="timeout_tport">
+ Lo sentimos, pero el sistema no ha podido completar el teleporte.
+Vuelva a intentarlo en un momento.
+ </message>
+ <message name="NoHelpIslandTP">
+ No te puedes volver a teleportar a la isla de bienvenida.
+Para repetir el tutorial, visita la isla de bienvenida pública.
+ </message>
+ <message name="noaccess_tport">
+ Lo sentimos, pero no tienes acceso al destino de este teleporte.
+ </message>
+ <message name="missing_attach_tport">
+ Aún no han llegado tus objetos anexados. Espera unos segundos más o desconéctate y vuelve a iniciar sesión antes de teleportarte.
+ </message>
+ <message name="too_many_uploads_tport">
+ La cola de espera en esta región está actualmente obstruida, por lo que tu petición de teleporte no se atenderá en un tiempo prudencial. Por favor, vuelve a intentarlo en unos minutos o ve a una zona menos ocupada.
+ </message>
+ <message name="expired_tport">
+ Lo sentimos, pero el sistema no ha podido atender a tu petición de teleporte en un tiempo prudencial. Por favor, vuelve a intentarlo en unos minutos.
+ </message>
+ <message name="expired_region_handoff">
+ Lo sentimos, pero el sistema no ha podido completar tu paso a otra región en un tiempo prudencial. Por favor, vuelve a intentarlo en unos minutos.
+ </message>
+ <message name="no_host">
+ Ha sido imposible encontrar el destino del teleporte: o está desactivado temporalmente o ya no existe. Por favor, vuelve a intentarlo en unos minutos.
+ </message>
+ <message name="no_inventory_host">
+ En estos momentos no está disponible el sistema del inventario.
+ </message>
+ <message name="MustGetAgeRegion">
+ Solo pueden acceder a esta región los mayores de 18 años.
+ </message>
+ <message name="RegionTPSpecialUsageBlocked">
+ No puedes entrar en la región. '[REGION_NAME]' es una región de juegos de habilidad, y debes cumplir determinados criterios para poder entrar en ella. Consulta los detalles en las [http://wiki.secondlife.com/wiki/Linden_Lab_Official:Skill_Gaming_in_Second_Life P+F de juegos de habilidad].
+ </message>
+ <message name="preexisting_tport">
+ Lo sentimos, pero el sistema no pudo comenzar tu teleportacion. Por favor inténtalo de nuevo en unos minutos
+ </message>
</message_set>
<message_set name="progress">
- <message name="sending_dest">Llevando al destino.</message>
- <message name="redirecting">Redireccionando a una posición diferente.</message>
- <message name="relaying">Reorientando el destino.</message>
- <message name="sending_home">Enviando la petición de posición de la Base.</message>
- <message name="sending_landmark">Enviando la petición de posición del hito.</message>
- <message name="completing">Completando el teleporte.</message>
- <message name="completed_from">Teleporte realizado desde [T_SLURL]</message>
- <message name="resolving">Especificando el destino.</message>
- <message name="contacting">Contactando con la nueva región.</message>
- <message name="arriving">Llegando...</message>
- <message name="requesting">Solicitando teleporte...</message>
- <message name="pending">Teleporte pendiente...</message>
+ <message name="sending_dest">
+ Llevando al destino.
+ </message>
+ <message name="redirecting">
+ Redireccionando a una posición diferente.
+ </message>
+ <message name="relaying">
+ Reorientando el destino.
+ </message>
+ <message name="sending_home">
+ Enviando la petición de posición de la Base.
+ </message>
+ <message name="sending_landmark">
+ Enviando la petición de posición del hito.
+ </message>
+ <message name="completing">
+ Completando el teleporte.
+ </message>
+ <message name="completed_from">
+ Teleporte realizado desde [T_SLURL]
+ </message>
+ <message name="resolving">
+ Especificando el destino.
+ </message>
+ <message name="contacting">
+ Contactando con la nueva región.
+ </message>
+ <message name="arriving">
+ Llegando...
+ </message>
+ <message name="requesting">
+ Solicitando teleporte...
+ </message>
+ <message name="pending">
+ Teleporte pendiente...
+ </message>
</message_set>
</teleport_messages>
diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml
index c0f990d86b..770b52242a 100644
--- a/indra/newview/skins/default/xui/fr/strings.xml
+++ b/indra/newview/skins/default/xui/fr/strings.xml
@@ -1,619 +1,1687 @@
<?xml version="1.0" ?>
<strings>
- <string name="SECOND_LIFE">Second Life</string>
- <string name="APP_NAME">Megapahit</string>
- <string name="CAPITALIZED_APP_NAME">MEGAPAHIT</string>
- <string name="SECOND_LIFE_GRID">Grille de Second Life</string>
- <string name="SUPPORT_SITE">Portail Assistance Second Life</string>
- <string name="StartupDetectingHardware">Détection du matériel...</string>
- <string name="StartupLoading">Chargement de [APP_NAME]...</string>
- <string name="StartupClearingCache">Vidage du cache...</string>
- <string name="StartupInitializingTextureCache">Initialisation du cache des textures...</string>
- <string name="StartupRequireDriverUpdate">Échec d'initialisation des graphiques. Veuillez mettre votre pilote graphique à jour.</string>
- <string name="AboutHeader">[CHANNEL] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2].[VIEWER_VERSION_3] ([ADDRESS_SIZE]bit)
-[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]]</string>
- <string name="BuildConfig">Configuration de la construction [BUILD_CONFIG]</string>
- <string name="AboutPosition">Vous êtes à [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] dans [REGION], se trouvant à &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt; ([HOSTIP])
+ <string name="SECOND_LIFE">
+ Second Life
+ </string>
+ <string name="APP_NAME">
+ Megapahit
+ </string>
+ <string name="CAPITALIZED_APP_NAME">
+ MEGAPAHIT
+ </string>
+ <string name="SECOND_LIFE_GRID">
+ Grille de Second Life
+ </string>
+ <string name="SUPPORT_SITE">
+ Portail Assistance Second Life
+ </string>
+ <string name="StartupDetectingHardware">
+ Détection du matériel...
+ </string>
+ <string name="StartupLoading">
+ Chargement de [APP_NAME]...
+ </string>
+ <string name="StartupClearingCache">
+ Vidage du cache...
+ </string>
+ <string name="StartupInitializingTextureCache">
+ Initialisation du cache des textures...
+ </string>
+ <string name="StartupRequireDriverUpdate">
+ Échec d'initialisation des graphiques. Veuillez mettre votre pilote graphique à jour.
+ </string>
+ <string name="AboutHeader">
+ [CHANNEL] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2].[VIEWER_VERSION_3] ([ADDRESS_SIZE]bit)
+[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]]
+ </string>
+ <string name="BuildConfig">
+ Configuration de la construction [BUILD_CONFIG]
+ </string>
+ <string name="AboutPosition">
+ Vous êtes à [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] dans [REGION], se trouvant à &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt;
SLURL : &lt;nolink&gt;[SLURL]&lt;/nolink&gt;
(coordonnées globales [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1])
[SERVER_VERSION]
-[SERVER_RELEASE_NOTES_URL]</string>
- <string name="AboutSystem">CPU : [CPU]
+[SERVER_RELEASE_NOTES_URL]
+ </string>
+ <string name="AboutSystem">
+ CPU : [CPU]
Mémoire : [MEMORY_MB] Mo
Version OS : [OS_VERSION]
Distributeur de cartes graphiques : [GRAPHICS_CARD_VENDOR]
-Carte graphique : [GRAPHICS_CARD]</string>
- <string name="AboutDriver">Version Windows Graphics Driver : [GRAPHICS_DRIVER_VERSION]</string>
- <string name="AboutOGL">Version OpenGL : [OPENGL_VERSION]</string>
- <string name="AboutSettings">Taille de la fenêtre: [WINDOW_WIDTH]x[WINDOW_HEIGHT]
+Carte graphique : [GRAPHICS_CARD]
+ </string>
+ <string name="AboutDriver">
+ Version Windows Graphics Driver : [GRAPHICS_DRIVER_VERSION]
+ </string>
+ <string name="AboutOGL">
+ Version OpenGL : [OPENGL_VERSION]
+ </string>
+ <string name="AboutSettings">
+ Taille de la fenêtre: [WINDOW_WIDTH]x[WINDOW_HEIGHT]
Ajustement de la taille de la police : [FONT_SIZE_ADJUSTMENT]pt
Échelle de l’interface : [UI_SCALE]
Distance de dessin : [DRAW_DISTANCE]m
Bande passante : [NET_BANDWITH] kbit/s
Facteur LOD (niveau de détail) : [LOD_FACTOR]
Qualité de rendu : [RENDER_QUALITY]
-Mémoire textures : [TEXTURE_MEMORY] Mo</string>
- <string name="AboutOSXHiDPI">Mode d'affichage HiDPI : [HIDPI]</string>
- <string name="AboutLibs">J2C Decoder Version: [J2C_VERSION]
+Mémoire textures : [TEXTURE_MEMORY] Mo
+ </string>
+ <string name="AboutOSXHiDPI">
+ Mode d'affichage HiDPI : [HIDPI]
+ </string>
+ <string name="AboutLibs">
+ J2C Decoder Version: [J2C_VERSION]
Audio Driver Version: [AUDIO_DRIVER_VERSION]
[LIBCEF_VERSION]
LibVLC Version: [LIBVLC_VERSION]
-Voice Server Version: [VOICE_VERSION]</string>
- <string name="AboutTraffic">Paquets perdus : [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%)</string>
- <string name="AboutTime">[month, datetime, slt] [day, datetime, slt] [year, datetime, slt] [hour, datetime, slt]:[min, datetime, slt]:[second,datetime,slt]</string>
- <string name="ErrorFetchingServerReleaseNotesURL">Erreur lors de la récupération de l'URL des notes de version du serveur.</string>
- <string name="BuildConfiguration">Configuration de la construction</string>
- <string name="ProgressRestoring">Restauration...</string>
- <string name="ProgressChangingResolution">Changement de la résolution...</string>
- <string name="Fullbright">Fullbright (Legacy)</string>
- <string name="LoginInProgress">La connexion à [APP_NAME] apparaît peut-être comme étant gelée. Veuillez patienter.</string>
- <string name="LoginInProgressNoFrozen">Connexion...</string>
- <string name="LoginAuthenticating">Authentification en cours</string>
- <string name="LoginMaintenance">Maintenance du compte en cours…</string>
- <string name="LoginAttempt">La tentative de connexion précédente a échoué. Connexion, esssai [NUMBER]</string>
- <string name="LoginPrecaching">Monde en cours de chargement…</string>
- <string name="LoginInitializingBrowser">Navigateur Web incorporé en cours d'initialisation…</string>
- <string name="LoginInitializingMultimedia">Multimédia en cours d'initialisation…</string>
- <string name="LoginInitializingFonts">Chargement des polices en cours...</string>
- <string name="LoginVerifyingCache">Fichiers du cache en cours de vérification (peut prendre 60-90 s)...</string>
- <string name="LoginProcessingResponse">Réponse en cours de traitement…</string>
- <string name="LoginInitializingWorld">Monde en cours d'initialisation…</string>
- <string name="LoginDecodingImages">Décodage des images en cours...</string>
- <string name="LoginInitializingQuicktime">Quicktime en cours d'initialisation</string>
- <string name="LoginQuicktimeNotFound">Quicktime introuvable, impossible de procéder à l'initialisation.</string>
- <string name="LoginQuicktimeOK">Initialisation de Quicktime réussie.</string>
- <string name="LoginRequestSeedCapGrant">Capacités de la région demandées...</string>
- <string name="LoginRetrySeedCapGrant">Capacités de la région demandées... Tentative n° [NUMBER].</string>
- <string name="LoginWaitingForRegionHandshake">Liaison avec la région en cours de création...</string>
- <string name="LoginConnectingToRegion">Connexion avec la région en cours...</string>
- <string name="LoginDownloadingClothing">Habits en cours de téléchargement...</string>
- <string name="InvalidCertificate">Certificat non valide ou corrompu renvoyé par le serveur. Contactez l'administrateur de la grille.</string>
- <string name="CertInvalidHostname">Nom d'hôte non valide utilisé pour accéder au serveur. Vérifiez votre nom d'hôte de grille ou SLURL.</string>
- <string name="CertExpired">Il semble que le certificat renvoyé par la grille ait expiré. Vérifiez votre horloge système ou contactez l'administrateur de la grille.</string>
- <string name="CertKeyUsage">Impossible d'utiliser le certificat renvoyé par le serveur pour SSL. Contactez l'administrateur de la grille.</string>
- <string name="CertBasicConstraints">Certificats trop nombreux dans la chaîne des certificats du serveur. Contactez l'administrateur de la grille.</string>
- <string name="CertInvalidSignature">Impossible de vérifier la signature de certificat renvoyée par le serveur de la grille. Contactez l'administrateur de la grille.</string>
- <string name="LoginFailedNoNetwork">Erreur réseau : impossible d'établir la connexion. Veuillez vérifier votre connexion réseau.</string>
- <string name="LoginFailedHeader">Échec de la connexion.</string>
- <string name="Quit">Quitter</string>
- <string name="create_account_url">http://join.secondlife.com/?sourceid=[sourceid]</string>
- <string name="AgniGridLabel">Grille principale de Second Life (Agni)</string>
- <string name="AditiGridLabel">Grille de test bêta Second Life (Aditi)</string>
- <string name="ViewerDownloadURL">http://secondlife.com/download</string>
- <string name="LoginFailedViewerNotPermitted">Le client que vous utilisez ne permet plus d'accéder à Second Life. Téléchargez un nouveau client à la page suivante :
+Voice Server Version: [VOICE_VERSION]
+ </string>
+ <string name="AboutTraffic">
+ Paquets perdus : [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%)
+ </string>
+ <string name="AboutTime">
+ [month, datetime, slt] [day, datetime, slt] [year, datetime, slt] [hour, datetime, slt]:[min, datetime, slt]:[second,datetime,slt]
+ </string>
+ <string name="ErrorFetchingServerReleaseNotesURL">
+ Erreur lors de la récupération de l'URL des notes de version du serveur.
+ </string>
+ <string name="BuildConfiguration">
+ Configuration de la construction
+ </string>
+ <string name="ProgressRestoring">
+ Restauration...
+ </string>
+ <string name="ProgressChangingResolution">
+ Changement de la résolution...
+ </string>
+ <string name="Fullbright">
+ Fullbright (Legacy)
+ </string>
+ <string name="LoginInProgress">
+ La connexion à [APP_NAME] apparaît peut-être comme étant gelée. Veuillez patienter.
+ </string>
+ <string name="LoginInProgressNoFrozen">
+ Connexion...
+ </string>
+ <string name="LoginAuthenticating">
+ Authentification en cours
+ </string>
+ <string name="LoginMaintenance">
+ Maintenance du compte en cours…
+ </string>
+ <string name="LoginAttempt">
+ La tentative de connexion précédente a échoué. Connexion, esssai [NUMBER]
+ </string>
+ <string name="LoginPrecaching">
+ Monde en cours de chargement…
+ </string>
+ <string name="LoginInitializingBrowser">
+ Navigateur Web incorporé en cours d'initialisation…
+ </string>
+ <string name="LoginInitializingMultimedia">
+ Multimédia en cours d'initialisation…
+ </string>
+ <string name="LoginInitializingFonts">
+ Chargement des polices en cours...
+ </string>
+ <string name="LoginVerifyingCache">
+ Fichiers du cache en cours de vérification (peut prendre 60-90 s)...
+ </string>
+ <string name="LoginProcessingResponse">
+ Réponse en cours de traitement…
+ </string>
+ <string name="LoginInitializingWorld">
+ Monde en cours d'initialisation…
+ </string>
+ <string name="LoginDecodingImages">
+ Décodage des images en cours...
+ </string>
+ <string name="LoginInitializingQuicktime">
+ Quicktime en cours d'initialisation
+ </string>
+ <string name="LoginQuicktimeNotFound">
+ Quicktime introuvable, impossible de procéder à l'initialisation.
+ </string>
+ <string name="LoginQuicktimeOK">
+ Initialisation de Quicktime réussie.
+ </string>
+ <string name="LoginRequestSeedCapGrant">
+ Capacités de la région demandées...
+ </string>
+ <string name="LoginRetrySeedCapGrant">
+ Capacités de la région demandées... Tentative n° [NUMBER].
+ </string>
+ <string name="LoginWaitingForRegionHandshake">
+ Liaison avec la région en cours de création...
+ </string>
+ <string name="LoginConnectingToRegion">
+ Connexion avec la région en cours...
+ </string>
+ <string name="LoginDownloadingClothing">
+ Habits en cours de téléchargement...
+ </string>
+ <string name="InvalidCertificate">
+ Certificat non valide ou corrompu renvoyé par le serveur. Contactez l'administrateur de la grille.
+ </string>
+ <string name="CertInvalidHostname">
+ Nom d'hôte non valide utilisé pour accéder au serveur. Vérifiez votre nom d'hôte de grille ou SLURL.
+ </string>
+ <string name="CertExpired">
+ Il semble que le certificat renvoyé par la grille ait expiré. Vérifiez votre horloge système ou contactez l'administrateur de la grille.
+ </string>
+ <string name="CertKeyUsage">
+ Impossible d'utiliser le certificat renvoyé par le serveur pour SSL. Contactez l'administrateur de la grille.
+ </string>
+ <string name="CertBasicConstraints">
+ Certificats trop nombreux dans la chaîne des certificats du serveur. Contactez l'administrateur de la grille.
+ </string>
+ <string name="CertInvalidSignature">
+ Impossible de vérifier la signature de certificat renvoyée par le serveur de la grille. Contactez l'administrateur de la grille.
+ </string>
+ <string name="LoginFailedNoNetwork">
+ Erreur réseau : impossible d'établir la connexion. Veuillez vérifier votre connexion réseau.
+ </string>
+ <string name="LoginFailedHeader">
+ Échec de la connexion.
+ </string>
+ <string name="Quit">
+ Quitter
+ </string>
+ <string name="create_account_url">
+ http://join.secondlife.com/?sourceid=[sourceid]
+ </string>
+ <string name="AgniGridLabel">
+ Grille principale de Second Life (Agni)
+ </string>
+ <string name="AditiGridLabel">
+ Grille de test bêta Second Life (Aditi)
+ </string>
+ <string name="ViewerDownloadURL">
+ http://secondlife.com/download
+ </string>
+ <string name="LoginFailedViewerNotPermitted">
+ Le client que vous utilisez ne permet plus d'accéder à Second Life. Téléchargez un nouveau client à la page suivante :
http://secondlife.com/download
Pour plus d'informations, consultez la page FAQ ci-dessous :
-http://secondlife.com/viewer-access-faq</string>
- <string name="LoginIntermediateOptionalUpdateAvailable">Mise à jour facultative du client disponible : [VERSION]</string>
- <string name="LoginFailedRequiredUpdate">Mise à jour du client requise : [VERSION]</string>
- <string name="LoginFailedAlreadyLoggedIn">L'agent est déjà connecté.</string>
- <string name="LoginFailedAuthenticationFailed">Désolé ! La connexion a échoué.
+http://secondlife.com/viewer-access-faq
+ </string>
+ <string name="LoginIntermediateOptionalUpdateAvailable">
+ Mise à jour facultative du client disponible : [VERSION]
+ </string>
+ <string name="LoginFailedRequiredUpdate">
+ Mise à jour du client requise : [VERSION]
+ </string>
+ <string name="LoginFailedAlreadyLoggedIn">
+ L'agent est déjà connecté.
+ </string>
+ <string name="LoginFailedAuthenticationFailed">
+ Désolé ! La connexion a échoué.
Veuillez vérifier que les éléments ci-dessous ont été correctement saisis :
* Nom d'utilisateur (par exemple, bobsmith12 ou steller.sunshine)
* Mot de passe
-Assurez-vous également que la touche Verr. maj n'est pas activée.</string>
- <string name="LoginFailedPasswordChanged">Votre mot de passe a été modifié pour des raisons de sécurité.
+Assurez-vous également que la touche Verr. maj n'est pas activée.
+ </string>
+ <string name="LoginFailedPasswordChanged">
+ Votre mot de passe a été modifié pour des raisons de sécurité.
Veuillez accéder à votre compte à la page http://secondlife.com/password
et répondre à la question de sécurité afin de réinitialiser votre mot de passe.
-Nous vous prions de nous excuser pour la gêne occasionnée.</string>
- <string name="LoginFailedPasswordReset">Vous allez devoir réinitialiser votre mot de passe suite à quelques changements effectués sur notre système.
+Nous vous prions de nous excuser pour la gêne occasionnée.
+ </string>
+ <string name="LoginFailedPasswordReset">
+ Vous allez devoir réinitialiser votre mot de passe suite à quelques changements effectués sur notre système.
Pour cela, accédez à votre compte à la page http://secondlife.com/password
et répondez à la question de sécurité. Votre mot de passe sera réinitialisé.
-Nous vous prions de nous excuser pour la gêne occasionnée.</string>
- <string name="LoginFailedEmployeesOnly">Second Life est temporairement fermé pour des raisons de maintenance.
+Nous vous prions de nous excuser pour la gêne occasionnée.
+ </string>
+ <string name="LoginFailedEmployeesOnly">
+ Second Life est temporairement fermé pour des raisons de maintenance.
Seuls les employés peuvent actuellement y accéder.
-Consultez la page www.secondlife.com/status pour plus d'informations.</string>
- <string name="LoginFailedPremiumOnly">Les connexions à Second Life sont temporairement limitées afin de s'assurer que l'expérience des utilisateurs présents dans le monde virtuel soit optimale.
+Consultez la page www.secondlife.com/status pour plus d'informations.
+ </string>
+ <string name="LoginFailedPremiumOnly">
+ Les connexions à Second Life sont temporairement limitées afin de s'assurer que l'expérience des utilisateurs présents dans le monde virtuel soit optimale.
-Les personnes disposant de comptes gratuits ne pourront pas accéder à Second Life pendant ce temps afin de permettre à celles qui ont payé pour pouvoir utiliser Second Life de le faire.</string>
- <string name="LoginFailedComputerProhibited">Impossible d'accéder à Second Life depuis cet ordinateur.
+Les personnes disposant de comptes gratuits ne pourront pas accéder à Second Life pendant ce temps afin de permettre à celles qui ont payé pour pouvoir utiliser Second Life de le faire.
+ </string>
+ <string name="LoginFailedComputerProhibited">
+ Impossible d'accéder à Second Life depuis cet ordinateur.
Si vous pensez qu'il s'agit d'une erreur, contactez
-l'Assistance à l'adresse suivante : support@secondlife.com.</string>
- <string name="LoginFailedAcountSuspended">Votre compte est inaccessible jusqu'à
-[TIME], heure du Pacifique.</string>
- <string name="LoginFailedAccountDisabled">Impossible de traiter votre demande à l'heure actuelle.
-Pour obtenir de l'aide, veuillez contacter l'Assistance Second Life à la page suivante : http://support.secondlife.com.</string>
- <string name="LoginFailedTransformError">Incohérence des données lors de la connexion.
-Veuillez contacter support@secondlife.com.</string>
- <string name="LoginFailedAccountMaintenance">Des opérations de maintenance mineures sont actuellement effectuées sur votre compte.
+l'Assistance à l'adresse suivante : support@secondlife.com.
+ </string>
+ <string name="LoginFailedAcountSuspended">
+ Votre compte est inaccessible jusqu'à
+[TIME], heure du Pacifique.
+ </string>
+ <string name="LoginFailedAccountDisabled">
+ Impossible de traiter votre demande à l'heure actuelle.
+Pour obtenir de l'aide, veuillez contacter l'Assistance Second Life à la page suivante : http://support.secondlife.com.
+ </string>
+ <string name="LoginFailedTransformError">
+ Incohérence des données lors de la connexion.
+Veuillez contacter support@secondlife.com.
+ </string>
+ <string name="LoginFailedAccountMaintenance">
+ Des opérations de maintenance mineures sont actuellement effectuées sur votre compte.
Votre compte est inaccessible jusqu'à
[TIME], heure du Pacifique.
-Si vous pensez qu'il s'agit d'une erreur, contactez l'Assistance à l'adresse suivante : support@secondlife.com</string>
- <string name="LoginFailedPendingLogoutFault">Le simulateur a renvoyé une erreur en réponse à la demande de déconnexion.</string>
- <string name="LoginFailedPendingLogout">Le système est en train de vous déconnecter.
-Veuillez réessayer de vous connecter dans une minute.</string>
- <string name="LoginFailedUnableToCreateSession">Impossible de créer de session valide.</string>
- <string name="LoginFailedUnableToConnectToSimulator">Impossible de se connecter à un simulateur.</string>
- <string name="LoginFailedRestrictedHours">Votre compte permet uniquement d'accéder à Second Life
+Si vous pensez qu'il s'agit d'une erreur, contactez l'Assistance à l'adresse suivante : support@secondlife.com
+ </string>
+ <string name="LoginFailedPendingLogoutFault">
+ Le simulateur a renvoyé une erreur en réponse à la demande de déconnexion.
+ </string>
+ <string name="LoginFailedPendingLogout">
+ Le système est en train de vous déconnecter.
+Veuillez réessayer de vous connecter dans une minute.
+ </string>
+ <string name="LoginFailedUnableToCreateSession">
+ Impossible de créer de session valide.
+ </string>
+ <string name="LoginFailedUnableToConnectToSimulator">
+ Impossible de se connecter à un simulateur.
+ </string>
+ <string name="LoginFailedRestrictedHours">
+ Votre compte permet uniquement d'accéder à Second Life
entre [START] et [END], heure du Pacifique.
Veuillez réessayer au cours de la période indiquée.
-Si vous pensez qu'il s'agit d'une erreur, contactez l'Assistance à l'adresse suivante : support@secondlife.com</string>
- <string name="LoginFailedIncorrectParameters">Paramètres incorrects.
-Si vous pensez qu'il s'agit d'une erreur, contactez l'Assistance à l'adresse suivante : support@secondlife.com</string>
- <string name="LoginFailedFirstNameNotAlphanumeric">Le paramètre Prénom doit être alphanumérique.
-Si vous pensez qu'il s'agit d'une erreur, contactez l'Assistance à l'adresse suivante : support@secondlife.com</string>
- <string name="LoginFailedLastNameNotAlphanumeric">Le paramètre Nom doit être alphanumérique.
-Si vous pensez qu'il s'agit d'une erreur, contactez l'Assistance à l'adresse suivante : support@secondlife.com</string>
- <string name="LogoutFailedRegionGoingOffline">La région est en train d'être mise hors ligne.
-Veuillez réessayer de vous connecter dans une minute.</string>
- <string name="LogoutFailedAgentNotInRegion">Agent absent de la région.
-Veuillez réessayer de vous connecter dans une minute.</string>
- <string name="LogoutFailedPendingLogin">Une autre session était en cours d'ouverture au sein de la région.
-Veuillez réessayer de vous connecter dans une minute.</string>
- <string name="LogoutFailedLoggingOut">La session précédente était en cours de fermeture au sein de la région.
-Veuillez réessayer de vous connecter dans une minute.</string>
- <string name="LogoutFailedStillLoggingOut">Fermeture de la session précédente toujours en cours pour la région.
-Veuillez réessayer de vous connecter dans une minute.</string>
- <string name="LogoutSucceeded">Dernière session fermée au sein de la région.
-Veuillez réessayer de vous connecter dans une minute.</string>
- <string name="LogoutFailedLogoutBegun">Processus de déconnexion commencé pour la région.
-Veuillez réessayer de vous connecter dans une minute.</string>
- <string name="LoginFailedLoggingOutSession">Le système a commencé à fermer votre dernière session.
-Veuillez réessayer de vous connecter dans une minute.</string>
- <string name="AgentLostConnection">Il y a peut-être des problèmes techniques dans cette région. Veuillez vérifier votre connexion Internet.</string>
- <string name="SavingSettings">Enregistrement des paramètres...</string>
- <string name="LoggingOut">Déconnexion...</string>
- <string name="ShuttingDown">Arrêt en cours...</string>
- <string name="YouHaveBeenDisconnected">Vous avez été déconnecté de la région où vous étiez.</string>
- <string name="SentToInvalidRegion">Vous avez été transféré vers une région non valide.</string>
- <string name="TestingDisconnect">Test de déconnexion du client</string>
- <string name="SocialFacebookConnecting">Connexion à Facebook…</string>
- <string name="SocialFacebookPosting">Publication…</string>
- <string name="SocialFacebookDisconnecting">Déconnexion de Facebook…</string>
- <string name="SocialFacebookErrorConnecting">Un problème est survenu lors de la connexion à Facebook.</string>
- <string name="SocialFacebookErrorPosting">Un problème est survenu lors de la publication sur Facebook.</string>
- <string name="SocialFacebookErrorDisconnecting">Un problème est survenu lors de la déconnexion à Facebook.</string>
- <string name="SocialFlickrConnecting">Connexion à Flickr...</string>
- <string name="SocialFlickrPosting">Publication…</string>
- <string name="SocialFlickrDisconnecting">Déconnexion de Flickr...</string>
- <string name="SocialFlickrErrorConnecting">Un problème est survenu lors de la connexion à Flickr.</string>
- <string name="SocialFlickrErrorPosting">Un problème est survenu lors de la publication sur Flickr.</string>
- <string name="SocialFlickrErrorDisconnecting">Un problème est survenu lors de la déconnexion de Flickr.</string>
- <string name="SocialTwitterConnecting">Connexion à Twitter...</string>
- <string name="SocialTwitterPosting">Publication…</string>
- <string name="SocialTwitterDisconnecting">Déconnexion de Twitter...</string>
- <string name="SocialTwitterErrorConnecting">Un problème est survenu lors de la connexion à Twitter.</string>
- <string name="SocialTwitterErrorPosting">Un problème est survenu lors de la publication sur Twitter.</string>
- <string name="SocialTwitterErrorDisconnecting">Un problème est survenu lors de la déconnexion de Twitter.</string>
- <string name="BlackAndWhite">Noir et blanc</string>
- <string name="Colors1970">Couleurs des années 1970</string>
- <string name="Intense">Intense</string>
- <string name="Newspaper">Presse</string>
- <string name="Sepia">Sépia</string>
- <string name="Spotlight">Projecteur</string>
- <string name="Video">Vidéo</string>
- <string name="Autocontrast">Contraste automatique</string>
- <string name="LensFlare">Halo</string>
- <string name="Miniature">Miniature</string>
- <string name="Toycamera">Toy Camera</string>
- <string name="TooltipPerson">Personne</string>
- <string name="TooltipNoName">(pas de nom)</string>
- <string name="TooltipOwner">Propriétaire :</string>
- <string name="TooltipPublic">Public</string>
- <string name="TooltipIsGroup">(Groupe)</string>
- <string name="TooltipForSaleL$">À vendre : [AMOUNT] L$</string>
- <string name="TooltipFlagGroupBuild">Contruction de groupe</string>
- <string name="TooltipFlagNoBuild">Pas de construction</string>
- <string name="TooltipFlagNoEdit">Contruction de groupe</string>
- <string name="TooltipFlagNotSafe">Non sécurisé</string>
- <string name="TooltipFlagNoFly">Interdiction de voler</string>
- <string name="TooltipFlagGroupScripts">Scripts de groupe</string>
- <string name="TooltipFlagNoScripts">Pas de scripts</string>
- <string name="TooltipLand">Terrain :</string>
- <string name="TooltipMustSingleDrop">Impossible de faire glisser plus d'un objet ici</string>
- <string name="TooltipTooManyWearables">Vous ne pouvez pas porter un dossier contenant plus de [AMOUNT] articles. Vous pouvez modifier cette limite dans Avancé &gt; Afficher les paramètres de débogage &gt; WearFolderLimit.</string>
+Si vous pensez qu'il s'agit d'une erreur, contactez l'Assistance à l'adresse suivante : support@secondlife.com
+ </string>
+ <string name="LoginFailedIncorrectParameters">
+ Paramètres incorrects.
+Si vous pensez qu'il s'agit d'une erreur, contactez l'Assistance à l'adresse suivante : support@secondlife.com
+ </string>
+ <string name="LoginFailedFirstNameNotAlphanumeric">
+ Le paramètre Prénom doit être alphanumérique.
+Si vous pensez qu'il s'agit d'une erreur, contactez l'Assistance à l'adresse suivante : support@secondlife.com
+ </string>
+ <string name="LoginFailedLastNameNotAlphanumeric">
+ Le paramètre Nom doit être alphanumérique.
+Si vous pensez qu'il s'agit d'une erreur, contactez l'Assistance à l'adresse suivante : support@secondlife.com
+ </string>
+ <string name="LogoutFailedRegionGoingOffline">
+ La région est en train d'être mise hors ligne.
+Veuillez réessayer de vous connecter dans une minute.
+ </string>
+ <string name="LogoutFailedAgentNotInRegion">
+ Agent absent de la région.
+Veuillez réessayer de vous connecter dans une minute.
+ </string>
+ <string name="LogoutFailedPendingLogin">
+ Une autre session était en cours d'ouverture au sein de la région.
+Veuillez réessayer de vous connecter dans une minute.
+ </string>
+ <string name="LogoutFailedLoggingOut">
+ La session précédente était en cours de fermeture au sein de la région.
+Veuillez réessayer de vous connecter dans une minute.
+ </string>
+ <string name="LogoutFailedStillLoggingOut">
+ Fermeture de la session précédente toujours en cours pour la région.
+Veuillez réessayer de vous connecter dans une minute.
+ </string>
+ <string name="LogoutSucceeded">
+ Dernière session fermée au sein de la région.
+Veuillez réessayer de vous connecter dans une minute.
+ </string>
+ <string name="LogoutFailedLogoutBegun">
+ Processus de déconnexion commencé pour la région.
+Veuillez réessayer de vous connecter dans une minute.
+ </string>
+ <string name="LoginFailedLoggingOutSession">
+ Le système a commencé à fermer votre dernière session.
+Veuillez réessayer de vous connecter dans une minute.
+ </string>
+ <string name="AgentLostConnection">
+ Il y a peut-être des problèmes techniques dans cette région. Veuillez vérifier votre connexion Internet.
+ </string>
+ <string name="SavingSettings">
+ Enregistrement des paramètres...
+ </string>
+ <string name="LoggingOut">
+ Déconnexion...
+ </string>
+ <string name="ShuttingDown">
+ Arrêt en cours...
+ </string>
+ <string name="YouHaveBeenDisconnected">
+ Vous avez été déconnecté de la région où vous étiez.
+ </string>
+ <string name="SentToInvalidRegion">
+ Vous avez été transféré vers une région non valide.
+ </string>
+ <string name="TestingDisconnect">
+ Test de déconnexion du client
+ </string>
+ <string name="SocialFacebookConnecting">
+ Connexion à Facebook…
+ </string>
+ <string name="SocialFacebookPosting">
+ Publication…
+ </string>
+ <string name="SocialFacebookDisconnecting">
+ Déconnexion de Facebook…
+ </string>
+ <string name="SocialFacebookErrorConnecting">
+ Un problème est survenu lors de la connexion à Facebook.
+ </string>
+ <string name="SocialFacebookErrorPosting">
+ Un problème est survenu lors de la publication sur Facebook.
+ </string>
+ <string name="SocialFacebookErrorDisconnecting">
+ Un problème est survenu lors de la déconnexion à Facebook.
+ </string>
+ <string name="SocialFlickrConnecting">
+ Connexion à Flickr...
+ </string>
+ <string name="SocialFlickrPosting">
+ Publication…
+ </string>
+ <string name="SocialFlickrDisconnecting">
+ Déconnexion de Flickr...
+ </string>
+ <string name="SocialFlickrErrorConnecting">
+ Un problème est survenu lors de la connexion à Flickr.
+ </string>
+ <string name="SocialFlickrErrorPosting">
+ Un problème est survenu lors de la publication sur Flickr.
+ </string>
+ <string name="SocialFlickrErrorDisconnecting">
+ Un problème est survenu lors de la déconnexion de Flickr.
+ </string>
+ <string name="SocialTwitterConnecting">
+ Connexion à Twitter...
+ </string>
+ <string name="SocialTwitterPosting">
+ Publication…
+ </string>
+ <string name="SocialTwitterDisconnecting">
+ Déconnexion de Twitter...
+ </string>
+ <string name="SocialTwitterErrorConnecting">
+ Un problème est survenu lors de la connexion à Twitter.
+ </string>
+ <string name="SocialTwitterErrorPosting">
+ Un problème est survenu lors de la publication sur Twitter.
+ </string>
+ <string name="SocialTwitterErrorDisconnecting">
+ Un problème est survenu lors de la déconnexion de Twitter.
+ </string>
+ <string name="BlackAndWhite">
+ Noir et blanc
+ </string>
+ <string name="Colors1970">
+ Couleurs des années 1970
+ </string>
+ <string name="Intense">
+ Intense
+ </string>
+ <string name="Newspaper">
+ Presse
+ </string>
+ <string name="Sepia">
+ Sépia
+ </string>
+ <string name="Spotlight">
+ Projecteur
+ </string>
+ <string name="Video">
+ Vidéo
+ </string>
+ <string name="Autocontrast">
+ Contraste automatique
+ </string>
+ <string name="LensFlare">
+ Halo
+ </string>
+ <string name="Miniature">
+ Miniature
+ </string>
+ <string name="Toycamera">
+ Toy Camera
+ </string>
+ <string name="TooltipPerson">
+ Personne
+ </string>
+ <string name="TooltipNoName">
+ (pas de nom)
+ </string>
+ <string name="TooltipOwner">
+ Propriétaire :
+ </string>
+ <string name="TooltipPublic">
+ Public
+ </string>
+ <string name="TooltipIsGroup">
+ (Groupe)
+ </string>
+ <string name="TooltipForSaleL$">
+ À vendre : [AMOUNT] L$
+ </string>
+ <string name="TooltipFlagGroupBuild">
+ Contruction de groupe
+ </string>
+ <string name="TooltipFlagNoBuild">
+ Pas de construction
+ </string>
+ <string name="TooltipFlagNoEdit">
+ Contruction de groupe
+ </string>
+ <string name="TooltipFlagNotSafe">
+ Non sécurisé
+ </string>
+ <string name="TooltipFlagNoFly">
+ Interdiction de voler
+ </string>
+ <string name="TooltipFlagGroupScripts">
+ Scripts de groupe
+ </string>
+ <string name="TooltipFlagNoScripts">
+ Pas de scripts
+ </string>
+ <string name="TooltipLand">
+ Terrain :
+ </string>
+ <string name="TooltipMustSingleDrop">
+ Impossible de faire glisser plus d'un objet ici
+ </string>
+ <string name="TooltipTooManyWearables">
+ Vous ne pouvez pas porter un dossier contenant plus de [AMOUNT] articles. Vous pouvez modifier cette limite dans Avancé &gt; Afficher les paramètres de débogage &gt; WearFolderLimit.
+ </string>
<string name="TooltipPrice" value="[AMOUNT] L$ :"/>
- <string name="TooltipSLIcon">Il s’agit d’un lien vers une page dans le domaine officiel SecondLife.com ou LindenLab.com.</string>
- <string name="TooltipOutboxDragToWorld">Vous ne pouvez pas rezzer (charger) des articles du dossier Annonces de la Place de marché</string>
- <string name="TooltipOutboxWorn">Vous ne pouvez pas mettre d'articles que vous portez dans le dossier Annonces de la Place du marché</string>
- <string name="TooltipOutboxFolderLevels">Le niveau de dossiers imbriqués dépasse [AMOUNT]. Diminuez le nombre de niveaux de dossiers imbriqués dans d'autres dossiers. Si nécessaire, placez certains articles dans une boîte.</string>
- <string name="TooltipOutboxTooManyFolders">Le nombre de sous-dossiers dépasse [AMOUNT]. Diminuez le nombre de sous-dossiers dans votre annonce. Si nécessaire, placez certains articles dans une boîte.</string>
- <string name="TooltipOutboxTooManyObjects">Le nombre d'articles dépasse [AMOUNT]. Pour pouvoir vendre plus de [AMOUNT] articles au sein d'une même annonce, vous devez placer certains de ces articles dans une boîte.</string>
- <string name="TooltipOutboxTooManyStockItems">Le nombre d'articles de stock dépasse [AMOUNT].</string>
- <string name="TooltipOutboxCannotDropOnRoot">Vous pouvez uniquement déposer des articles ou des dossiers dans les onglets TOUS ou NON ASSOCIÉS. Sélectionnez l’un de ces onglets et déplacez à nouveau votre ou vos article ou dossiers.</string>
- <string name="TooltipOutboxNoTransfer">Impossible de vendre ou de transférer un ou plusieurs de ces objets</string>
- <string name="TooltipOutboxNotInInventory">Vous ne pouvez mettre sur la Place du marché que des articles de votre inventaire</string>
- <string name="TooltipOutboxLinked">Vous ne pouvez pas mettre des articles ou dossiers liés sur la Place du marché</string>
- <string name="TooltipOutboxCallingCard">Vous ne pouvez pas mettre des cartes de visite sur la Place du marché</string>
- <string name="TooltipOutboxDragActive">vous ne pouvez pas déplacer une annonce publiée</string>
- <string name="TooltipOutboxCannotMoveRoot">Vous ne pouvez pas déplacer le dossier racine des annonces de la Place du marché</string>
- <string name="TooltipOutboxMixedStock">tous les articles d'un dossier de stock doivent avoir le même type et droit</string>
- <string name="TooltipDragOntoOwnChild">Impossible de déplacer un dossier vers son enfant</string>
- <string name="TooltipDragOntoSelf">Impossible de déplacer un dossier vers lui-même</string>
- <string name="TooltipHttpUrl">Cliquez pour afficher cette page web</string>
- <string name="TooltipSLURL">Cliquez pour en savoir plus sur cet endroit</string>
- <string name="TooltipAgentUrl">Cliquez pour afficher le profil de ce résident</string>
- <string name="TooltipAgentInspect">En savoir plus sur ce résident</string>
- <string name="TooltipAgentMute">Cliquer pour ignorer ce résident</string>
- <string name="TooltipAgentUnmute">Cliquer pour ne plus ignorer ce résident</string>
- <string name="TooltipAgentIM">Cliquer pour envoyer un IM à ce résident</string>
- <string name="TooltipAgentPay">Cliquer pour payer ce résident</string>
- <string name="TooltipAgentOfferTeleport">Cliquer pour proposer une téléportation à ce résident</string>
- <string name="TooltipAgentRequestFriend">Cliquer pour demander à ce résident d'être votre ami</string>
- <string name="TooltipGroupUrl">Cliquez pour afficher la description de ce groupe</string>
- <string name="TooltipEventUrl">Cliquez pour afficher la description de cet événement</string>
- <string name="TooltipClassifiedUrl">Cliquez pour afficher cette petite annonce</string>
- <string name="TooltipParcelUrl">Cliquez pour afficher la description de cette parcelle</string>
- <string name="TooltipTeleportUrl">Cliquez pour vous téléporter à cet endroit</string>
- <string name="TooltipObjectIMUrl">Cliquez pour afficher la description de cet objet</string>
- <string name="TooltipMapUrl">Cliquez pour voir cet emplacement sur la carte</string>
- <string name="TooltipSLAPP">Cliquez pour exécuter la commande secondlife://</string>
+ <string name="TooltipSLIcon">
+ Il s’agit d’un lien vers une page dans le domaine officiel SecondLife.com ou LindenLab.com.
+ </string>
+ <string name="TooltipOutboxDragToWorld">
+ Vous ne pouvez pas rezzer (charger) des articles du dossier Annonces de la Place de marché
+ </string>
+ <string name="TooltipOutboxWorn">
+ Vous ne pouvez pas mettre d'articles que vous portez dans le dossier Annonces de la Place du marché
+ </string>
+ <string name="TooltipOutboxFolderLevels">
+ Le niveau de dossiers imbriqués dépasse [AMOUNT]. Diminuez le nombre de niveaux de dossiers imbriqués dans d'autres dossiers. Si nécessaire, placez certains articles dans une boîte.
+ </string>
+ <string name="TooltipOutboxTooManyFolders">
+ Le nombre de sous-dossiers dépasse [AMOUNT]. Diminuez le nombre de sous-dossiers dans votre annonce. Si nécessaire, placez certains articles dans une boîte.
+ </string>
+ <string name="TooltipOutboxTooManyObjects">
+ Le nombre d'articles dépasse [AMOUNT]. Pour pouvoir vendre plus de [AMOUNT] articles au sein d'une même annonce, vous devez placer certains de ces articles dans une boîte.
+ </string>
+ <string name="TooltipOutboxTooManyStockItems">
+ Le nombre d'articles de stock dépasse [AMOUNT].
+ </string>
+ <string name="TooltipOutboxCannotDropOnRoot">
+ Vous pouvez uniquement déposer des articles ou des dossiers dans les onglets TOUS ou NON ASSOCIÉS. Sélectionnez l’un de ces onglets et déplacez à nouveau votre ou vos article ou dossiers.
+ </string>
+ <string name="TooltipOutboxNoTransfer">
+ Impossible de vendre ou de transférer un ou plusieurs de ces objets
+ </string>
+ <string name="TooltipOutboxNotInInventory">
+ Vous ne pouvez mettre sur la Place du marché que des articles de votre inventaire
+ </string>
+ <string name="TooltipOutboxLinked">
+ Vous ne pouvez pas mettre des articles ou dossiers liés sur la Place du marché
+ </string>
+ <string name="TooltipOutboxCallingCard">
+ Vous ne pouvez pas mettre des cartes de visite sur la Place du marché
+ </string>
+ <string name="TooltipOutboxDragActive">
+ vous ne pouvez pas déplacer une annonce publiée
+ </string>
+ <string name="TooltipOutboxCannotMoveRoot">
+ Vous ne pouvez pas déplacer le dossier racine des annonces de la Place du marché
+ </string>
+ <string name="TooltipOutboxMixedStock">
+ tous les articles d'un dossier de stock doivent avoir le même type et droit
+ </string>
+ <string name="TooltipDragOntoOwnChild">
+ Impossible de déplacer un dossier vers son enfant
+ </string>
+ <string name="TooltipDragOntoSelf">
+ Impossible de déplacer un dossier vers lui-même
+ </string>
+ <string name="TooltipHttpUrl">
+ Cliquez pour afficher cette page web
+ </string>
+ <string name="TooltipSLURL">
+ Cliquez pour en savoir plus sur cet endroit
+ </string>
+ <string name="TooltipAgentUrl">
+ Cliquez pour afficher le profil de ce résident
+ </string>
+ <string name="TooltipAgentInspect">
+ En savoir plus sur ce résident
+ </string>
+ <string name="TooltipAgentMute">
+ Cliquer pour ignorer ce résident
+ </string>
+ <string name="TooltipAgentUnmute">
+ Cliquer pour ne plus ignorer ce résident
+ </string>
+ <string name="TooltipAgentIM">
+ Cliquer pour envoyer un IM à ce résident
+ </string>
+ <string name="TooltipAgentPay">
+ Cliquer pour payer ce résident
+ </string>
+ <string name="TooltipAgentOfferTeleport">
+ Cliquer pour proposer une téléportation à ce résident
+ </string>
+ <string name="TooltipAgentRequestFriend">
+ Cliquer pour demander à ce résident d'être votre ami
+ </string>
+ <string name="TooltipGroupUrl">
+ Cliquez pour afficher la description de ce groupe
+ </string>
+ <string name="TooltipEventUrl">
+ Cliquez pour afficher la description de cet événement
+ </string>
+ <string name="TooltipClassifiedUrl">
+ Cliquez pour afficher cette petite annonce
+ </string>
+ <string name="TooltipParcelUrl">
+ Cliquez pour afficher la description de cette parcelle
+ </string>
+ <string name="TooltipTeleportUrl">
+ Cliquez pour vous téléporter à cet endroit
+ </string>
+ <string name="TooltipObjectIMUrl">
+ Cliquez pour afficher la description de cet objet
+ </string>
+ <string name="TooltipMapUrl">
+ Cliquez pour voir cet emplacement sur la carte
+ </string>
+ <string name="TooltipSLAPP">
+ Cliquez pour exécuter la commande secondlife://
+ </string>
<string name="CurrentURL" value=" URL actuelle : [CurrentURL]"/>
- <string name="TooltipEmail">Cliquez pour composer un message</string>
- <string name="SLurlLabelTeleport">Me téléporter vers</string>
- <string name="SLurlLabelShowOnMap">Afficher la carte pour</string>
- <string name="SLappAgentMute">Ignorer</string>
- <string name="SLappAgentUnmute">Ne plus ignorer</string>
- <string name="SLappAgentIM">IM</string>
- <string name="SLappAgentPay">Payer</string>
- <string name="SLappAgentOfferTeleport">Proposer une téléportation à</string>
- <string name="SLappAgentRequestFriend">Demande d'amitié</string>
- <string name="SLappAgentRemoveFriend">Suppression d'un ami</string>
- <string name="BUTTON_CLOSE_DARWIN">Fermer (⌘W)</string>
- <string name="BUTTON_CLOSE_WIN">Fermer (Ctrl+W)</string>
- <string name="BUTTON_CLOSE_CHROME">Fermer</string>
- <string name="BUTTON_RESTORE">Restaurer</string>
- <string name="BUTTON_MINIMIZE">Minimiser</string>
- <string name="BUTTON_TEAR_OFF">Réduire</string>
- <string name="BUTTON_DOCK">Attacher</string>
- <string name="BUTTON_HELP">Afficher l'aide</string>
- <string name="TooltipNotecardNotAllowedTypeDrop">Les éléments de ce type ne peuvent pas être attachés
-aux notes de cette région.</string>
- <string name="TooltipNotecardOwnerRestrictedDrop">Seuls des éléments avec des autorisation
+ <string name="TooltipEmail">
+ Cliquez pour composer un message
+ </string>
+ <string name="SLurlLabelTeleport">
+ Me téléporter vers
+ </string>
+ <string name="SLurlLabelShowOnMap">
+ Afficher la carte pour
+ </string>
+ <string name="SLappAgentMute">
+ Ignorer
+ </string>
+ <string name="SLappAgentUnmute">
+ Ne plus ignorer
+ </string>
+ <string name="SLappAgentIM">
+ IM
+ </string>
+ <string name="SLappAgentPay">
+ Payer
+ </string>
+ <string name="SLappAgentOfferTeleport">
+ Proposer une téléportation à
+ </string>
+ <string name="SLappAgentRequestFriend">
+ Demande d'amitié
+ </string>
+ <string name="SLappAgentRemoveFriend">
+ Suppression d'un ami
+ </string>
+ <string name="BUTTON_CLOSE_DARWIN">
+ Fermer (⌘W)
+ </string>
+ <string name="BUTTON_CLOSE_WIN">
+ Fermer (Ctrl+W)
+ </string>
+ <string name="BUTTON_CLOSE_CHROME">
+ Fermer
+ </string>
+ <string name="BUTTON_RESTORE">
+ Restaurer
+ </string>
+ <string name="BUTTON_MINIMIZE">
+ Minimiser
+ </string>
+ <string name="BUTTON_TEAR_OFF">
+ Réduire
+ </string>
+ <string name="BUTTON_DOCK">
+ Attacher
+ </string>
+ <string name="BUTTON_HELP">
+ Afficher l'aide
+ </string>
+ <string name="TooltipNotecardNotAllowedTypeDrop">
+ Les éléments de ce type ne peuvent pas être attachés
+aux notes de cette région.
+ </string>
+ <string name="TooltipNotecardOwnerRestrictedDrop">
+ Seuls des éléments avec des autorisation
illimitées pour le 'prochain propriétaire'
-peuvent être joints aux notes.</string>
- <string name="Searching">Recherche...</string>
- <string name="NoneFound">Aucun résultat.</string>
- <string name="RetrievingData">En cours d'extraction...</string>
- <string name="ReleaseNotes">Notes de version</string>
- <string name="RELEASE_NOTES_BASE_URL">https://megapahit.net/</string>
- <string name="LoadingData">Chargement...</string>
- <string name="AvatarNameNobody">(personne)</string>
- <string name="AvatarNameWaiting">(en attente)</string>
- <string name="AvatarNameMultiple">(multiple)</string>
- <string name="GroupNameNone">(aucun)</string>
- <string name="AssetErrorNone">Aucune erreur</string>
- <string name="AssetErrorRequestFailed">Requête de l'actif : échec</string>
- <string name="AssetErrorNonexistentFile">Requête de l'actif : fichier inexistant</string>
- <string name="AssetErrorNotInDatabase">Requête de l'actif : actif introuvable dans la base de données</string>
- <string name="AssetErrorEOF">Fin du ficher</string>
- <string name="AssetErrorCannotOpenFile">Impossible d'ouvrir le fichier</string>
- <string name="AssetErrorFileNotFound">Fichier introuvable</string>
- <string name="AssetErrorTCPTimeout">Délai d'attente du transfert du fichier dépassé</string>
- <string name="AssetErrorCircuitGone">Disparition du circuit</string>
- <string name="AssetErrorPriceMismatch">Il y a une différence de prix entre le client et le serveur</string>
- <string name="AssetErrorUnknownStatus">Statut inconnu</string>
- <string name="AssetUploadServerUnreacheble">Service inaccessible.</string>
- <string name="AssetUploadServerDifficulties">Le serveur rencontres des difficultés imprévues.</string>
- <string name="AssetUploadServerUnavaliable">Services non disponible ou la durée du chargement est dépassée.</string>
- <string name="AssetUploadRequestInvalid">Erreur dans la demande de chargement. Veuillez consulter le site :
-http://secondlife.com/support pour vous aider à résoudre ce problème.</string>
- <string name="SettingValidationError">Échec de la validation pour l'importation des paramètres [NAME]</string>
- <string name="SettingImportFileError">Impossible d'ouvre le fichier [FILE]</string>
- <string name="SettingParseFileError">Impossible d'ouvre le fichier [FILE]</string>
- <string name="SettingTranslateError">Impossible de traduit les paramètres windlight hérités [NAME]</string>
- <string name="texture">texture</string>
- <string name="sound">son</string>
- <string name="calling card">carte de visite</string>
- <string name="landmark">repère</string>
- <string name="legacy script">script (ancienne version)</string>
- <string name="clothing">habits</string>
- <string name="object">objet</string>
- <string name="note card">note</string>
- <string name="folder">dossier</string>
- <string name="root">racine</string>
- <string name="lsl2 script">script LSL2</string>
- <string name="lsl bytecode">bytecode LSL</string>
- <string name="tga texture">texture tga</string>
- <string name="body part">partie du corps</string>
- <string name="snapshot">photo</string>
- <string name="lost and found">Objets trouvés</string>
- <string name="targa image">image targa</string>
- <string name="trash">Corbeille</string>
- <string name="jpeg image">image jpeg</string>
- <string name="animation">animation</string>
- <string name="gesture">geste</string>
- <string name="simstate">simstate</string>
- <string name="favorite">favori</string>
- <string name="symbolic link">lien</string>
- <string name="symbolic folder link">lien du dossier</string>
- <string name="settings blob">paramètres</string>
- <string name="mesh">maillage</string>
- <string name="AvatarEditingAppearance">(Apparence en cours de modification)</string>
- <string name="AvatarAway">Absent</string>
- <string name="AvatarDoNotDisturb">Ne pas déranger</string>
- <string name="AvatarMuted">Bloqué(e)</string>
- <string name="anim_express_afraid">Effrayé</string>
- <string name="anim_express_anger">En colère</string>
- <string name="anim_away">Absent</string>
- <string name="anim_backflip">Salto arrière</string>
- <string name="anim_express_laugh">Rire en se tenant le ventre</string>
- <string name="anim_express_toothsmile">Grand sourire</string>
- <string name="anim_blowkiss">Envoyer un baiser</string>
- <string name="anim_express_bored">Bailler d'ennui</string>
- <string name="anim_bow">S'incliner</string>
- <string name="anim_clap">Applaudir</string>
- <string name="anim_courtbow">Révérence de cour</string>
- <string name="anim_express_cry">Pleurer</string>
- <string name="anim_dance1">Danse 1</string>
- <string name="anim_dance2">Danse 2</string>
- <string name="anim_dance3">Danse 3</string>
- <string name="anim_dance4">Danse 4</string>
- <string name="anim_dance5">Danse 5</string>
- <string name="anim_dance6">Danse 6</string>
- <string name="anim_dance7">Danse 7</string>
- <string name="anim_dance8">Danse 8</string>
- <string name="anim_express_disdain">Mépris</string>
- <string name="anim_drink">Boire</string>
- <string name="anim_express_embarrased">Gêne</string>
- <string name="anim_angry_fingerwag">Désapprobation</string>
- <string name="anim_fist_pump">Victoire</string>
- <string name="anim_yoga_float">Yoga</string>
- <string name="anim_express_frown">Froncer les sourcils</string>
- <string name="anim_impatient">Impatient</string>
- <string name="anim_jumpforjoy">Sauter de joie</string>
- <string name="anim_kissmybutt">Va te faire voir !</string>
- <string name="anim_express_kiss">Envoyer un baiser</string>
- <string name="anim_laugh_short">Rire</string>
- <string name="anim_musclebeach">Montrer ses muscles</string>
- <string name="anim_no_unhappy">Non (mécontent)</string>
- <string name="anim_no_head">Non</string>
- <string name="anim_nyanya">Na na na na nère</string>
- <string name="anim_punch_onetwo">Gauche-droite</string>
- <string name="anim_express_open_mouth">Bouche ouverte</string>
- <string name="anim_peace">Paix</string>
- <string name="anim_point_you">Montrer quelqu'un du doigt</string>
- <string name="anim_point_me">Se montrer du doigt</string>
- <string name="anim_punch_l">Gauche</string>
- <string name="anim_punch_r">Droite</string>
- <string name="anim_rps_countdown">Compter (pierre-papier-ciseaux)</string>
- <string name="anim_rps_paper">Papier (pierre-papier-ciseaux)</string>
- <string name="anim_rps_rock">Pierre (pierre-papier-ciseaux)</string>
- <string name="anim_rps_scissors">Ciseaux (pierre-papier-ciseaux)</string>
- <string name="anim_express_repulsed">Dégoût</string>
- <string name="anim_kick_roundhouse_r">Coup de pied circulaire</string>
- <string name="anim_express_sad">Triste</string>
- <string name="anim_salute">Salut</string>
- <string name="anim_shout">Crier</string>
- <string name="anim_express_shrug">Hausser les épaules</string>
- <string name="anim_express_smile">Sourire</string>
- <string name="anim_smoke_idle">Fumer, immobile</string>
- <string name="anim_smoke_inhale">Fumer, prendre une bouffée</string>
- <string name="anim_smoke_throw_down">Fumer, jeter son mégot</string>
- <string name="anim_express_surprise">Surprise</string>
- <string name="anim_sword_strike_r">Coup d'épée</string>
- <string name="anim_angry_tantrum">Caprice</string>
- <string name="anim_express_tongue_out">Tirer la langue</string>
- <string name="anim_hello">Faire signe</string>
- <string name="anim_whisper">Chuchoter</string>
- <string name="anim_whistle">Siffler</string>
- <string name="anim_express_wink">Clin d'œil</string>
- <string name="anim_wink_hollywood">Clin d'œil (Hollywood)</string>
- <string name="anim_express_worry">Soucis</string>
- <string name="anim_yes_happy">Oui (Joie)</string>
- <string name="anim_yes_head">Oui</string>
- <string name="multiple_textures">Multiples</string>
- <string name="use_texture">Utiliser la texture</string>
- <string name="manip_hint1">Faites glisser le curseur sur l'axe</string>
- <string name="manip_hint2">pour le fixer sur la grille</string>
- <string name="texture_loading">Chargement...</string>
- <string name="worldmap_offline">Hors ligne</string>
- <string name="worldmap_item_tooltip_format">[AREA] m² [PRICE] L$</string>
- <string name="worldmap_results_none_found">Aucun résultat.</string>
- <string name="Ok">OK</string>
- <string name="Premature end of file">Fichier incomplet</string>
- <string name="ST_NO_JOINT">Impossible de trouver ROOT ou JOINT.</string>
- <string name="NearbyChatTitle">Chat près de moi</string>
- <string name="NearbyChatLabel">(Chat près de moi)</string>
- <string name="whisper">chuchote :</string>
- <string name="shout">crie :</string>
- <string name="ringing">Connexion au chat vocal du Monde en cours…</string>
- <string name="connected">Connecté(e)</string>
- <string name="unavailable">Voix non disponible à l'endroit où vous êtes</string>
- <string name="hang_up">Déconnecté du chat vocal</string>
- <string name="reconnect_nearby">Vous allez maintenant être reconnecté(e) au chat vocal près de vous.</string>
- <string name="ScriptQuestionCautionChatGranted">'[OBJECTNAME]', un objet appartenant à [OWNERNAME], situé dans [REGIONNAME] à [REGIONPOS], a reçu le droit de : [PERMISSIONS].</string>
- <string name="ScriptQuestionCautionChatDenied">'[OBJECTNAME]', un objet appartenant à [OWNERNAME], situé dans [REGIONNAME] à [REGIONPOS], n'a pas reçu le droit de : [PERMISSIONS].</string>
- <string name="AdditionalPermissionsRequestHeader">Si vous autorisez un accès à votre compte, vous autorisez également l'objet à :</string>
- <string name="ScriptTakeMoney">Débiter vos Linden dollars (L$)</string>
- <string name="ActOnControlInputs">Utiliser vos touches de commandes</string>
- <string name="RemapControlInputs">Reconfigurer vos touches de commandes</string>
- <string name="AnimateYourAvatar">Animer votre avatar</string>
- <string name="AttachToYourAvatar">Attacher à votre avatar</string>
- <string name="ReleaseOwnership">Passer l'objet dans le domaine public (sans propriétaire)</string>
- <string name="LinkAndDelink">Lier et délier d'autres objets</string>
- <string name="AddAndRemoveJoints">Créer et supprimer des liens avec d'autres objets</string>
- <string name="ChangePermissions">Modifier ses droits</string>
- <string name="TrackYourCamera">Suivre votre caméra</string>
- <string name="ControlYourCamera">Contrôler votre caméra</string>
- <string name="TeleportYourAgent">Vous téléporter</string>
- <string name="ForceSitAvatar">Forcez votre avatar à s’asseoir</string>
- <string name="ChangeEnvSettings">Changer vos paramètres d'environnement</string>
- <string name="NotConnected">Pas connecté(e)</string>
- <string name="AgentNameSubst">(Vous)</string>
+peuvent être joints aux notes.
+ </string>
+ <string name="Searching">
+ Recherche...
+ </string>
+ <string name="NoneFound">
+ Aucun résultat.
+ </string>
+ <string name="RetrievingData">
+ En cours d'extraction...
+ </string>
+ <string name="ReleaseNotes">
+ Notes de version
+ </string>
+ <string name="RELEASE_NOTES_BASE_URL">
+ https://megapahit.net/
+ </string>
+ <string name="LoadingData">
+ Chargement...
+ </string>
+ <string name="AvatarNameNobody">
+ (personne)
+ </string>
+ <string name="AvatarNameWaiting">
+ (en attente)
+ </string>
+ <string name="AvatarNameMultiple">
+ (multiple)
+ </string>
+ <string name="GroupNameNone">
+ (aucun)
+ </string>
+ <string name="AssetErrorNone">
+ Aucune erreur
+ </string>
+ <string name="AssetErrorRequestFailed">
+ Requête de l'actif : échec
+ </string>
+ <string name="AssetErrorNonexistentFile">
+ Requête de l'actif : fichier inexistant
+ </string>
+ <string name="AssetErrorNotInDatabase">
+ Requête de l'actif : actif introuvable dans la base de données
+ </string>
+ <string name="AssetErrorEOF">
+ Fin du ficher
+ </string>
+ <string name="AssetErrorCannotOpenFile">
+ Impossible d'ouvrir le fichier
+ </string>
+ <string name="AssetErrorFileNotFound">
+ Fichier introuvable
+ </string>
+ <string name="AssetErrorTCPTimeout">
+ Délai d'attente du transfert du fichier dépassé
+ </string>
+ <string name="AssetErrorCircuitGone">
+ Disparition du circuit
+ </string>
+ <string name="AssetErrorPriceMismatch">
+ Il y a une différence de prix entre le client et le serveur
+ </string>
+ <string name="AssetErrorUnknownStatus">
+ Statut inconnu
+ </string>
+ <string name="AssetUploadServerUnreacheble">
+ Service inaccessible.
+ </string>
+ <string name="AssetUploadServerDifficulties">
+ Le serveur rencontres des difficultés imprévues.
+ </string>
+ <string name="AssetUploadServerUnavaliable">
+ Services non disponible ou la durée du chargement est dépassée.
+ </string>
+ <string name="AssetUploadRequestInvalid">
+ Erreur dans la demande de chargement. Veuillez consulter le site :
+http://secondlife.com/support pour vous aider à résoudre ce problème.
+ </string>
+ <string name="SettingValidationError">
+ Échec de la validation pour l'importation des paramètres [NAME]
+ </string>
+ <string name="SettingImportFileError">
+ Impossible d'ouvre le fichier [FILE]
+ </string>
+ <string name="SettingParseFileError">
+ Impossible d'ouvre le fichier [FILE]
+ </string>
+ <string name="SettingTranslateError">
+ Impossible de traduit les paramètres windlight hérités [NAME]
+ </string>
+ <string name="texture">
+ texture
+ </string>
+ <string name="sound">
+ son
+ </string>
+ <string name="calling card">
+ carte de visite
+ </string>
+ <string name="landmark">
+ repère
+ </string>
+ <string name="legacy script">
+ script (ancienne version)
+ </string>
+ <string name="clothing">
+ habits
+ </string>
+ <string name="object">
+ objet
+ </string>
+ <string name="note card">
+ note
+ </string>
+ <string name="folder">
+ dossier
+ </string>
+ <string name="root">
+ racine
+ </string>
+ <string name="lsl2 script">
+ script LSL2
+ </string>
+ <string name="lsl bytecode">
+ bytecode LSL
+ </string>
+ <string name="tga texture">
+ texture tga
+ </string>
+ <string name="body part">
+ partie du corps
+ </string>
+ <string name="snapshot">
+ photo
+ </string>
+ <string name="lost and found">
+ Objets trouvés
+ </string>
+ <string name="targa image">
+ image targa
+ </string>
+ <string name="trash">
+ Corbeille
+ </string>
+ <string name="jpeg image">
+ image jpeg
+ </string>
+ <string name="animation">
+ animation
+ </string>
+ <string name="gesture">
+ geste
+ </string>
+ <string name="simstate">
+ simstate
+ </string>
+ <string name="favorite">
+ favori
+ </string>
+ <string name="symbolic link">
+ lien
+ </string>
+ <string name="symbolic folder link">
+ lien du dossier
+ </string>
+ <string name="settings blob">
+ paramètres
+ </string>
+ <string name="mesh">
+ maillage
+ </string>
+ <string name="AvatarEditingAppearance">
+ (Apparence en cours de modification)
+ </string>
+ <string name="AvatarAway">
+ Absent
+ </string>
+ <string name="AvatarDoNotDisturb">
+ Ne pas déranger
+ </string>
+ <string name="AvatarMuted">
+ Bloqué(e)
+ </string>
+ <string name="anim_express_afraid">
+ Effrayé
+ </string>
+ <string name="anim_express_anger">
+ En colère
+ </string>
+ <string name="anim_away">
+ Absent
+ </string>
+ <string name="anim_backflip">
+ Salto arrière
+ </string>
+ <string name="anim_express_laugh">
+ Rire en se tenant le ventre
+ </string>
+ <string name="anim_express_toothsmile">
+ Grand sourire
+ </string>
+ <string name="anim_blowkiss">
+ Envoyer un baiser
+ </string>
+ <string name="anim_express_bored">
+ Bailler d'ennui
+ </string>
+ <string name="anim_bow">
+ S'incliner
+ </string>
+ <string name="anim_clap">
+ Applaudir
+ </string>
+ <string name="anim_courtbow">
+ Révérence de cour
+ </string>
+ <string name="anim_express_cry">
+ Pleurer
+ </string>
+ <string name="anim_dance1">
+ Danse 1
+ </string>
+ <string name="anim_dance2">
+ Danse 2
+ </string>
+ <string name="anim_dance3">
+ Danse 3
+ </string>
+ <string name="anim_dance4">
+ Danse 4
+ </string>
+ <string name="anim_dance5">
+ Danse 5
+ </string>
+ <string name="anim_dance6">
+ Danse 6
+ </string>
+ <string name="anim_dance7">
+ Danse 7
+ </string>
+ <string name="anim_dance8">
+ Danse 8
+ </string>
+ <string name="anim_express_disdain">
+ Mépris
+ </string>
+ <string name="anim_drink">
+ Boire
+ </string>
+ <string name="anim_express_embarrased">
+ Gêne
+ </string>
+ <string name="anim_angry_fingerwag">
+ Désapprobation
+ </string>
+ <string name="anim_fist_pump">
+ Victoire
+ </string>
+ <string name="anim_yoga_float">
+ Yoga
+ </string>
+ <string name="anim_express_frown">
+ Froncer les sourcils
+ </string>
+ <string name="anim_impatient">
+ Impatient
+ </string>
+ <string name="anim_jumpforjoy">
+ Sauter de joie
+ </string>
+ <string name="anim_kissmybutt">
+ Va te faire voir !
+ </string>
+ <string name="anim_express_kiss">
+ Envoyer un baiser
+ </string>
+ <string name="anim_laugh_short">
+ Rire
+ </string>
+ <string name="anim_musclebeach">
+ Montrer ses muscles
+ </string>
+ <string name="anim_no_unhappy">
+ Non (mécontent)
+ </string>
+ <string name="anim_no_head">
+ Non
+ </string>
+ <string name="anim_nyanya">
+ Na na na na nère
+ </string>
+ <string name="anim_punch_onetwo">
+ Gauche-droite
+ </string>
+ <string name="anim_express_open_mouth">
+ Bouche ouverte
+ </string>
+ <string name="anim_peace">
+ Paix
+ </string>
+ <string name="anim_point_you">
+ Montrer quelqu'un du doigt
+ </string>
+ <string name="anim_point_me">
+ Se montrer du doigt
+ </string>
+ <string name="anim_punch_l">
+ Gauche
+ </string>
+ <string name="anim_punch_r">
+ Droite
+ </string>
+ <string name="anim_rps_countdown">
+ Compter (pierre-papier-ciseaux)
+ </string>
+ <string name="anim_rps_paper">
+ Papier (pierre-papier-ciseaux)
+ </string>
+ <string name="anim_rps_rock">
+ Pierre (pierre-papier-ciseaux)
+ </string>
+ <string name="anim_rps_scissors">
+ Ciseaux (pierre-papier-ciseaux)
+ </string>
+ <string name="anim_express_repulsed">
+ Dégoût
+ </string>
+ <string name="anim_kick_roundhouse_r">
+ Coup de pied circulaire
+ </string>
+ <string name="anim_express_sad">
+ Triste
+ </string>
+ <string name="anim_salute">
+ Salut
+ </string>
+ <string name="anim_shout">
+ Crier
+ </string>
+ <string name="anim_express_shrug">
+ Hausser les épaules
+ </string>
+ <string name="anim_express_smile">
+ Sourire
+ </string>
+ <string name="anim_smoke_idle">
+ Fumer, immobile
+ </string>
+ <string name="anim_smoke_inhale">
+ Fumer, prendre une bouffée
+ </string>
+ <string name="anim_smoke_throw_down">
+ Fumer, jeter son mégot
+ </string>
+ <string name="anim_express_surprise">
+ Surprise
+ </string>
+ <string name="anim_sword_strike_r">
+ Coup d'épée
+ </string>
+ <string name="anim_angry_tantrum">
+ Caprice
+ </string>
+ <string name="anim_express_tongue_out">
+ Tirer la langue
+ </string>
+ <string name="anim_hello">
+ Faire signe
+ </string>
+ <string name="anim_whisper">
+ Chuchoter
+ </string>
+ <string name="anim_whistle">
+ Siffler
+ </string>
+ <string name="anim_express_wink">
+ Clin d'œil
+ </string>
+ <string name="anim_wink_hollywood">
+ Clin d'œil (Hollywood)
+ </string>
+ <string name="anim_express_worry">
+ Soucis
+ </string>
+ <string name="anim_yes_happy">
+ Oui (Joie)
+ </string>
+ <string name="anim_yes_head">
+ Oui
+ </string>
+ <string name="multiple_textures">
+ Multiples
+ </string>
+ <string name="use_texture">
+ Utiliser la texture
+ </string>
+ <string name="manip_hint1">
+ Faites glisser le curseur sur l'axe
+ </string>
+ <string name="manip_hint2">
+ pour le fixer sur la grille
+ </string>
+ <string name="texture_loading">
+ Chargement...
+ </string>
+ <string name="worldmap_offline">
+ Hors ligne
+ </string>
+ <string name="worldmap_item_tooltip_format">
+ [AREA] m² [PRICE] L$
+ </string>
+ <string name="worldmap_results_none_found">
+ Aucun résultat.
+ </string>
+ <string name="Ok">
+ OK
+ </string>
+ <string name="Premature end of file">
+ Fichier incomplet
+ </string>
+ <string name="ST_NO_JOINT">
+ Impossible de trouver ROOT ou JOINT.
+ </string>
+ <string name="NearbyChatTitle">
+ Chat près de moi
+ </string>
+ <string name="NearbyChatLabel">
+ (Chat près de moi)
+ </string>
+ <string name="whisper">
+ chuchote :
+ </string>
+ <string name="shout">
+ crie :
+ </string>
+ <string name="ringing">
+ Connexion au chat vocal du Monde en cours…
+ </string>
+ <string name="connected">
+ Connecté(e)
+ </string>
+ <string name="unavailable">
+ Voix non disponible à l'endroit où vous êtes
+ </string>
+ <string name="hang_up">
+ Déconnecté du chat vocal
+ </string>
+ <string name="reconnect_nearby">
+ Vous allez maintenant être reconnecté(e) au chat vocal près de vous.
+ </string>
+ <string name="ScriptQuestionCautionChatGranted">
+ '[OBJECTNAME]', un objet appartenant à [OWNERNAME], situé dans [REGIONNAME] à [REGIONPOS], a reçu le droit de : [PERMISSIONS].
+ </string>
+ <string name="ScriptQuestionCautionChatDenied">
+ '[OBJECTNAME]', un objet appartenant à [OWNERNAME], situé dans [REGIONNAME] à [REGIONPOS], n'a pas reçu le droit de : [PERMISSIONS].
+ </string>
+ <string name="AdditionalPermissionsRequestHeader">
+ Si vous autorisez un accès à votre compte, vous autorisez également l'objet à :
+ </string>
+ <string name="ScriptTakeMoney">
+ Débiter vos Linden dollars (L$)
+ </string>
+ <string name="ActOnControlInputs">
+ Utiliser vos touches de commandes
+ </string>
+ <string name="RemapControlInputs">
+ Reconfigurer vos touches de commandes
+ </string>
+ <string name="AnimateYourAvatar">
+ Animer votre avatar
+ </string>
+ <string name="AttachToYourAvatar">
+ Attacher à votre avatar
+ </string>
+ <string name="ReleaseOwnership">
+ Passer l'objet dans le domaine public (sans propriétaire)
+ </string>
+ <string name="LinkAndDelink">
+ Lier et délier d'autres objets
+ </string>
+ <string name="AddAndRemoveJoints">
+ Créer et supprimer des liens avec d'autres objets
+ </string>
+ <string name="ChangePermissions">
+ Modifier ses droits
+ </string>
+ <string name="TrackYourCamera">
+ Suivre votre caméra
+ </string>
+ <string name="ControlYourCamera">
+ Contrôler votre caméra
+ </string>
+ <string name="TeleportYourAgent">
+ Vous téléporter
+ </string>
+ <string name="ForceSitAvatar">
+ Forcez votre avatar à s’asseoir
+ </string>
+ <string name="ChangeEnvSettings">
+ Changer vos paramètres d'environnement
+ </string>
+ <string name="NotConnected">
+ Pas connecté(e)
+ </string>
+ <string name="AgentNameSubst">
+ (Vous)
+ </string>
<string name="JoinAnExperience"/>
- <string name="SilentlyManageEstateAccess">Supprimer les alertes lors de la gestion des listes d'accès aux domaines</string>
- <string name="OverrideYourAnimations">Remplacer vos animations par défaut</string>
- <string name="ScriptReturnObjects">Renvoyer les objets de votre part</string>
- <string name="UnknownScriptPermission">(inconnu)</string>
- <string name="SIM_ACCESS_PG">Général</string>
- <string name="SIM_ACCESS_MATURE">Modéré</string>
- <string name="SIM_ACCESS_ADULT">Adulte</string>
- <string name="SIM_ACCESS_DOWN">Hors ligne</string>
- <string name="SIM_ACCESS_MIN">Inconnu</string>
- <string name="land_type_unknown">(inconnu)</string>
- <string name="Estate / Full Region">Domaine / Région entière</string>
- <string name="Estate / Homestead">Domaine / Homestead</string>
- <string name="Mainland / Homestead">Continent / Homestead</string>
- <string name="Mainland / Full Region">Continent / Région entière</string>
- <string name="all_files">Tous fichiers</string>
- <string name="sound_files">Sons</string>
- <string name="animation_files">Animations</string>
- <string name="image_files">Images</string>
- <string name="save_file_verb">Enregistrer</string>
- <string name="load_file_verb">Charger</string>
- <string name="targa_image_files">Images Targa</string>
- <string name="bitmap_image_files">Images Bitmap</string>
- <string name="png_image_files">Images PNG</string>
- <string name="save_texture_image_files">Images Targa ou PNG</string>
- <string name="avi_movie_file">Fichier de film AVI</string>
- <string name="xaf_animation_file">Fichier d'animation XAF</string>
- <string name="xml_file">Fichier XML</string>
- <string name="raw_file">Fichier RAW</string>
- <string name="compressed_image_files">Images compressées</string>
- <string name="load_files">Charger des fichiers</string>
- <string name="choose_the_directory">Choisir le répertoire</string>
- <string name="script_files">Scripts</string>
- <string name="dictionary_files">Dictionnaires</string>
- <string name="shape">Silhouette</string>
- <string name="skin">Peau</string>
- <string name="hair">Cheveux</string>
- <string name="eyes">Yeux</string>
- <string name="shirt">Chemise</string>
- <string name="pants">Pantalon</string>
- <string name="shoes">Chaussures</string>
- <string name="socks">Chaussettes</string>
- <string name="jacket">Veste</string>
- <string name="gloves">Gants</string>
- <string name="undershirt">Débardeur</string>
- <string name="underpants">Caleçon</string>
- <string name="skirt">Jupe</string>
- <string name="alpha">Alpha</string>
- <string name="tattoo">Tatouage</string>
- <string name="universal">Universel</string>
- <string name="physics">Propriétés physiques</string>
- <string name="invalid">non valide</string>
- <string name="none">aucun</string>
- <string name="shirt_not_worn">Chemise non portée</string>
- <string name="pants_not_worn">Pantalon non porté</string>
- <string name="shoes_not_worn">Chaussures non portées</string>
- <string name="socks_not_worn">Chaussettes non portées</string>
- <string name="jacket_not_worn">Veste non portée</string>
- <string name="gloves_not_worn">Gants non portés</string>
- <string name="undershirt_not_worn">Débardeur non porté</string>
- <string name="underpants_not_worn">Caleçon non porté</string>
- <string name="skirt_not_worn">Jupe non portée</string>
- <string name="alpha_not_worn">Alpha non porté</string>
- <string name="tattoo_not_worn">Tatouage non porté</string>
- <string name="universal_not_worn">Universel non porté</string>
- <string name="physics_not_worn">Propriétés physiques non portées</string>
- <string name="invalid_not_worn">non valide</string>
- <string name="create_new_shape">Créer une nouvelle silhouette</string>
- <string name="create_new_skin">Créer une nouvelle peau</string>
- <string name="create_new_hair">Créer de nouveaux cheveux</string>
- <string name="create_new_eyes">Créer de nouveaux yeux</string>
- <string name="create_new_shirt">Créer une nouvelle chemise</string>
- <string name="create_new_pants">Créer un nouveau pantalon</string>
- <string name="create_new_shoes">Créer de nouvelles chaussures</string>
- <string name="create_new_socks">Créer de nouvelles chaussettes</string>
- <string name="create_new_jacket">Créer une nouvelle veste</string>
- <string name="create_new_gloves">Créer de nouveaux gants</string>
- <string name="create_new_undershirt">Créer un nouveau débardeur</string>
- <string name="create_new_underpants">Créer un nouveau caleçon</string>
- <string name="create_new_skirt">Créer une nouvelle jupe</string>
- <string name="create_new_alpha">Créer un nouvel alpha</string>
- <string name="create_new_tattoo">Créer un nouveau tatouage</string>
- <string name="create_new_universal">Créer un nouvel environnement universel</string>
- <string name="create_new_physics">Créer de nouvelles propriétés physiques</string>
- <string name="create_new_invalid">non valide</string>
- <string name="NewWearable">Nouv. [WEARABLE_ITEM]</string>
- <string name="next">Suivant</string>
- <string name="ok">OK</string>
- <string name="GroupNotifyGroupNotice">Note au groupe</string>
- <string name="GroupNotifyGroupNotices">Notices au groupe</string>
- <string name="GroupNotifySentBy">Envoyée par</string>
- <string name="GroupNotifyAttached">Pièce(s) jointe(s) :</string>
- <string name="GroupNotifyViewPastNotices">Consultez les notices précédentes ou choisissez de ne plus recevoir ces messages ici.</string>
- <string name="GroupNotifyOpenAttachment">Ouvrir pièce jointe</string>
- <string name="GroupNotifySaveAttachment">Enregistrer la pièce jointe</string>
- <string name="TeleportOffer">Offre de téléportation</string>
- <string name="StartUpNotifications">De nouvelles notifications sont arrivées en votre absence.</string>
- <string name="OverflowInfoChannelString">Vous avez %d notification(s) supplémentaire(s)</string>
- <string name="BodyPartsRightArm">Bras droit</string>
- <string name="BodyPartsHead">Tête</string>
- <string name="BodyPartsLeftArm">Bras gauche</string>
- <string name="BodyPartsLeftLeg">Jambe gauche</string>
- <string name="BodyPartsTorso">Torse</string>
- <string name="BodyPartsRightLeg">Jambe droite</string>
- <string name="BodyPartsEnhancedSkeleton">Squelette amélioré</string>
- <string name="GraphicsQualityLow">Faible</string>
- <string name="GraphicsQualityMid">Moyen</string>
- <string name="GraphicsQualityHigh">Élevé</string>
- <string name="LeaveMouselook">Appuyez sur ESC pour quitter la vue subjective</string>
- <string name="InventoryNoMatchingItems">Vous n'avez pas trouvé ce que vous cherchiez ? Essayez [secondlife:///app/search/all/[SEARCH_TERM] Rechercher].</string>
- <string name="InventoryNoMatchingRecentItems">Avez-vous trouvé ce que vous cherchiez ? Essayez [secondlife:///app/inventory/filters Show filters].</string>
- <string name="PlacesNoMatchingItems">Vous n'avez pas trouvé ce que vous cherchiez ? Essayez [secondlife:///app/search/places/[SEARCH_TERM] Rechercher].</string>
- <string name="FavoritesNoMatchingItems">Faites glisser un repère ici pour l'ajouter à vos Favoris.</string>
- <string name="MarketplaceNoMatchingItems">Aucun article trouvé. Vérifiez l'orthographe de votre chaîne de recherche et réessayez.</string>
- <string name="InventoryNoTexture">Vous n'avez pas de copie de cette texture dans votre inventaire</string>
- <string name="InventoryInboxNoItems">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]/</string>
- <string name="MarketplaceURL_CreateStore">http://community.secondlife.com/t5/English-Knowledge-Base/Selling-in-the-Marketplace/ta-p/700193#Section_.3</string>
- <string name="MarketplaceURL_Dashboard">https://marketplace.[MARKETPLACE_DOMAIN_NAME]/merchants/store/dashboard</string>
- <string name="MarketplaceURL_Imports">https://marketplace.[MARKETPLACE_DOMAIN_NAME]/merchants/store/imports</string>
- <string name="MarketplaceURL_LearnMore">https://marketplace.[MARKETPLACE_DOMAIN_NAME]/learn_more</string>
- <string name="InventoryPlayAnimationTooltip">Ouvrir la fenêtre avec les options Jeu</string>
- <string name="InventoryPlayGestureTooltip">Exécuter le geste sélectionné dans le monde virtuel.</string>
- <string name="InventoryPlaySoundTooltip">Ouvrir la fenêtre avec les options Jeu</string>
- <string name="InventoryOutboxNotMerchantTitle">Tout le monde peut vendre des articles sur la Place du marché.</string>
+ <string name="SilentlyManageEstateAccess">
+ Supprimer les alertes lors de la gestion des listes d'accès aux domaines
+ </string>
+ <string name="OverrideYourAnimations">
+ Remplacer vos animations par défaut
+ </string>
+ <string name="ScriptReturnObjects">
+ Renvoyer les objets de votre part
+ </string>
+ <string name="UnknownScriptPermission">
+ (inconnu)
+ </string>
+ <string name="SIM_ACCESS_PG">
+ Général
+ </string>
+ <string name="SIM_ACCESS_MATURE">
+ Modéré
+ </string>
+ <string name="SIM_ACCESS_ADULT">
+ Adulte
+ </string>
+ <string name="SIM_ACCESS_DOWN">
+ Hors ligne
+ </string>
+ <string name="SIM_ACCESS_MIN">
+ Inconnu
+ </string>
+ <string name="land_type_unknown">
+ (inconnu)
+ </string>
+ <string name="Estate / Full Region">
+ Domaine / Région entière
+ </string>
+ <string name="Estate / Homestead">
+ Domaine / Homestead
+ </string>
+ <string name="Mainland / Homestead">
+ Continent / Homestead
+ </string>
+ <string name="Mainland / Full Region">
+ Continent / Région entière
+ </string>
+ <string name="all_files">
+ Tous fichiers
+ </string>
+ <string name="sound_files">
+ Sons
+ </string>
+ <string name="animation_files">
+ Animations
+ </string>
+ <string name="image_files">
+ Images
+ </string>
+ <string name="save_file_verb">
+ Enregistrer
+ </string>
+ <string name="load_file_verb">
+ Charger
+ </string>
+ <string name="targa_image_files">
+ Images Targa
+ </string>
+ <string name="bitmap_image_files">
+ Images Bitmap
+ </string>
+ <string name="png_image_files">
+ Images PNG
+ </string>
+ <string name="save_texture_image_files">
+ Images Targa ou PNG
+ </string>
+ <string name="avi_movie_file">
+ Fichier de film AVI
+ </string>
+ <string name="xaf_animation_file">
+ Fichier d'animation XAF
+ </string>
+ <string name="xml_file">
+ Fichier XML
+ </string>
+ <string name="raw_file">
+ Fichier RAW
+ </string>
+ <string name="compressed_image_files">
+ Images compressées
+ </string>
+ <string name="load_files">
+ Charger des fichiers
+ </string>
+ <string name="choose_the_directory">
+ Choisir le répertoire
+ </string>
+ <string name="script_files">
+ Scripts
+ </string>
+ <string name="dictionary_files">
+ Dictionnaires
+ </string>
+ <string name="shape">
+ Silhouette
+ </string>
+ <string name="skin">
+ Peau
+ </string>
+ <string name="hair">
+ Cheveux
+ </string>
+ <string name="eyes">
+ Yeux
+ </string>
+ <string name="shirt">
+ Chemise
+ </string>
+ <string name="pants">
+ Pantalon
+ </string>
+ <string name="shoes">
+ Chaussures
+ </string>
+ <string name="socks">
+ Chaussettes
+ </string>
+ <string name="jacket">
+ Veste
+ </string>
+ <string name="gloves">
+ Gants
+ </string>
+ <string name="undershirt">
+ Débardeur
+ </string>
+ <string name="underpants">
+ Caleçon
+ </string>
+ <string name="skirt">
+ Jupe
+ </string>
+ <string name="alpha">
+ Alpha
+ </string>
+ <string name="tattoo">
+ Tatouage
+ </string>
+ <string name="universal">
+ Universel
+ </string>
+ <string name="physics">
+ Propriétés physiques
+ </string>
+ <string name="invalid">
+ non valide
+ </string>
+ <string name="none">
+ aucun
+ </string>
+ <string name="shirt_not_worn">
+ Chemise non portée
+ </string>
+ <string name="pants_not_worn">
+ Pantalon non porté
+ </string>
+ <string name="shoes_not_worn">
+ Chaussures non portées
+ </string>
+ <string name="socks_not_worn">
+ Chaussettes non portées
+ </string>
+ <string name="jacket_not_worn">
+ Veste non portée
+ </string>
+ <string name="gloves_not_worn">
+ Gants non portés
+ </string>
+ <string name="undershirt_not_worn">
+ Débardeur non porté
+ </string>
+ <string name="underpants_not_worn">
+ Caleçon non porté
+ </string>
+ <string name="skirt_not_worn">
+ Jupe non portée
+ </string>
+ <string name="alpha_not_worn">
+ Alpha non porté
+ </string>
+ <string name="tattoo_not_worn">
+ Tatouage non porté
+ </string>
+ <string name="universal_not_worn">
+ Universel non porté
+ </string>
+ <string name="physics_not_worn">
+ Propriétés physiques non portées
+ </string>
+ <string name="invalid_not_worn">
+ non valide
+ </string>
+ <string name="create_new_shape">
+ Créer une nouvelle silhouette
+ </string>
+ <string name="create_new_skin">
+ Créer une nouvelle peau
+ </string>
+ <string name="create_new_hair">
+ Créer de nouveaux cheveux
+ </string>
+ <string name="create_new_eyes">
+ Créer de nouveaux yeux
+ </string>
+ <string name="create_new_shirt">
+ Créer une nouvelle chemise
+ </string>
+ <string name="create_new_pants">
+ Créer un nouveau pantalon
+ </string>
+ <string name="create_new_shoes">
+ Créer de nouvelles chaussures
+ </string>
+ <string name="create_new_socks">
+ Créer de nouvelles chaussettes
+ </string>
+ <string name="create_new_jacket">
+ Créer une nouvelle veste
+ </string>
+ <string name="create_new_gloves">
+ Créer de nouveaux gants
+ </string>
+ <string name="create_new_undershirt">
+ Créer un nouveau débardeur
+ </string>
+ <string name="create_new_underpants">
+ Créer un nouveau caleçon
+ </string>
+ <string name="create_new_skirt">
+ Créer une nouvelle jupe
+ </string>
+ <string name="create_new_alpha">
+ Créer un nouvel alpha
+ </string>
+ <string name="create_new_tattoo">
+ Créer un nouveau tatouage
+ </string>
+ <string name="create_new_universal">
+ Créer un nouvel environnement universel
+ </string>
+ <string name="create_new_physics">
+ Créer de nouvelles propriétés physiques
+ </string>
+ <string name="create_new_invalid">
+ non valide
+ </string>
+ <string name="NewWearable">
+ Nouv. [WEARABLE_ITEM]
+ </string>
+ <string name="next">
+ Suivant
+ </string>
+ <string name="ok">
+ OK
+ </string>
+ <string name="GroupNotifyGroupNotice">
+ Note au groupe
+ </string>
+ <string name="GroupNotifyGroupNotices">
+ Notices au groupe
+ </string>
+ <string name="GroupNotifySentBy">
+ Envoyée par
+ </string>
+ <string name="GroupNotifyAttached">
+ Pièce(s) jointe(s) :
+ </string>
+ <string name="GroupNotifyViewPastNotices">
+ Consultez les notices précédentes ou choisissez de ne plus recevoir ces messages ici.
+ </string>
+ <string name="GroupNotifyOpenAttachment">
+ Ouvrir pièce jointe
+ </string>
+ <string name="GroupNotifySaveAttachment">
+ Enregistrer la pièce jointe
+ </string>
+ <string name="TeleportOffer">
+ Offre de téléportation
+ </string>
+ <string name="StartUpNotifications">
+ De nouvelles notifications sont arrivées en votre absence.
+ </string>
+ <string name="OverflowInfoChannelString">
+ Vous avez %d notification(s) supplémentaire(s)
+ </string>
+ <string name="BodyPartsRightArm">
+ Bras droit
+ </string>
+ <string name="BodyPartsHead">
+ Tête
+ </string>
+ <string name="BodyPartsLeftArm">
+ Bras gauche
+ </string>
+ <string name="BodyPartsLeftLeg">
+ Jambe gauche
+ </string>
+ <string name="BodyPartsTorso">
+ Torse
+ </string>
+ <string name="BodyPartsRightLeg">
+ Jambe droite
+ </string>
+ <string name="BodyPartsEnhancedSkeleton">
+ Squelette amélioré
+ </string>
+ <string name="GraphicsQualityLow">
+ Faible
+ </string>
+ <string name="GraphicsQualityMid">
+ Moyen
+ </string>
+ <string name="GraphicsQualityHigh">
+ Élevé
+ </string>
+ <string name="LeaveMouselook">
+ Appuyez sur ESC pour quitter la vue subjective
+ </string>
+ <string name="InventoryNoMatchingItems">
+ Vous n'avez pas trouvé ce que vous cherchiez ? Essayez [secondlife:///app/search/all/[SEARCH_TERM] Rechercher].
+ </string>
+ <string name="InventoryNoMatchingRecentItems">
+ Avez-vous trouvé ce que vous cherchiez ? Essayez [secondlife:///app/inventory/filters Show filters].
+ </string>
+ <string name="PlacesNoMatchingItems">
+ Vous n'avez pas trouvé ce que vous cherchiez ? Essayez [secondlife:///app/search/places/[SEARCH_TERM] Rechercher].
+ </string>
+ <string name="FavoritesNoMatchingItems">
+ Faites glisser un repère ici pour l'ajouter à vos Favoris.
+ </string>
+ <string name="MarketplaceNoMatchingItems">
+ Aucun article trouvé. Vérifiez l'orthographe de votre chaîne de recherche et réessayez.
+ </string>
+ <string name="InventoryNoTexture">
+ Vous n'avez pas de copie de cette texture dans votre inventaire
+ </string>
+ <string name="InventoryInboxNoItems">
+ 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]/
+ </string>
+ <string name="MarketplaceURL_CreateStore">
+ http://community.secondlife.com/t5/English-Knowledge-Base/Selling-in-the-Marketplace/ta-p/700193#Section_.3
+ </string>
+ <string name="MarketplaceURL_Dashboard">
+ https://marketplace.[MARKETPLACE_DOMAIN_NAME]/merchants/store/dashboard
+ </string>
+ <string name="MarketplaceURL_Imports">
+ https://marketplace.[MARKETPLACE_DOMAIN_NAME]/merchants/store/imports
+ </string>
+ <string name="MarketplaceURL_LearnMore">
+ https://marketplace.[MARKETPLACE_DOMAIN_NAME]/learn_more
+ </string>
+ <string name="InventoryPlayAnimationTooltip">
+ Ouvrir la fenêtre avec les options Jeu
+ </string>
+ <string name="InventoryPlayGestureTooltip">
+ Exécuter le geste sélectionné dans le monde virtuel.
+ </string>
+ <string name="InventoryPlaySoundTooltip">
+ Ouvrir la fenêtre avec les options Jeu
+ </string>
+ <string name="InventoryOutboxNotMerchantTitle">
+ Tout le monde peut vendre des articles sur la Place du marché.
+ </string>
<string name="InventoryOutboxNotMerchantTooltip"/>
- <string name="InventoryOutboxNotMerchant">Pour devenir vendeur, vous devez [[MARKETPLACE_CREATE_STORE_URL] créer une boutique sur la Place du marché].</string>
- <string name="InventoryOutboxNoItemsTitle">Votre boîte d'envoi est vide.</string>
+ <string name="InventoryOutboxNotMerchant">
+ Pour devenir vendeur, vous devez [[MARKETPLACE_CREATE_STORE_URL] créer une boutique sur la Place du marché].
+ </string>
+ <string name="InventoryOutboxNoItemsTitle">
+ Votre boîte d'envoi est vide.
+ </string>
<string name="InventoryOutboxNoItemsTooltip"/>
- <string name="InventoryOutboxNoItems">Pour mettre des dossiers en vente sur la [[MARKETPLACE_DASHBOARD_URL] Place du marché], faites-les glisser vers cette zone et cliquez sur &quot;Envoyer vers la Place du marché&quot;.</string>
- <string name="InventoryOutboxInitializingTitle">Initialisation de la Place du marché...</string>
- <string name="InventoryOutboxInitializing">Nous sommes en train d'accéder à votre compte dans la [[MARKETPLACE_CREATE_STORE_URL] boutique de la Place du marché].</string>
- <string name="InventoryOutboxErrorTitle">Erreurs de la Place du marché.</string>
- <string name="InventoryOutboxError">La [[MARKETPLACE_CREATE_STORE_URL] boutique de la Place du marché] renvoie des erreurs.</string>
- <string name="InventoryMarketplaceError">Une erreur est survenue lors de l’ouverture des annonces de la Place du marché.
-Si vous continuez de recevoir ce message, contactez l’assistance Second Life à http://support.secondlife.com pour obtenir de l’aide.</string>
- <string name="InventoryMarketplaceListingsNoItemsTitle">Votre dossier Annonces de la Place du marché est vide.</string>
- <string name="InventoryMarketplaceListingsNoItems">Pour mettre des dossiers en vente sur la [[MARKETPLACE_DASHBOARD_URL] Place du marché], faites-les glisser vers cette zone.</string>
- <string name="InventoryItemsCount">( [ITEMS_COUNT] Articles )</string>
- <string name="Marketplace Validation Warning Stock">le dossier de stock doit être contenu dans un dossier de version</string>
- <string name="Marketplace Validation Error Mixed Stock">: Erreur : tous les articles d'un dossier de stock doivent être non reproductibles et de même type</string>
- <string name="Marketplace Validation Error Subfolder In Stock">: Erreur : un dossier de stock ne peut pas contenir de sous-dossiers</string>
- <string name="Marketplace Validation Warning Empty">: Avertissement : le dossier ne contient aucun article</string>
- <string name="Marketplace Validation Warning Create Stock">: Avertissement : création du dossier de stock</string>
- <string name="Marketplace Validation Warning Create Version">: Avertissement : création du dossier de version</string>
- <string name="Marketplace Validation Warning Move">: Avertissement : déplacement d'articles</string>
- <string name="Marketplace Validation Warning Delete">: Avertissement : contenu du dossier transféré vers le dossier de stock, suppression du dossier vide</string>
- <string name="Marketplace Validation Error Stock Item">: Erreur : les articles non reproductibles doivent être contenus dans un dossier de stock</string>
- <string name="Marketplace Validation Warning Unwrapped Item">: Avertissement : les articles doivent être contenus dans un dossier de version</string>
- <string name="Marketplace Validation Error">: Erreur :</string>
- <string name="Marketplace Validation Warning">: Avertissement :</string>
- <string name="Marketplace Validation Error Empty Version">: Avertissement : le dossier de version doit contenir au moins 1 article</string>
- <string name="Marketplace Validation Error Empty Stock">: Avertissement : le dossier de stock doit contenir au moins 1 article</string>
- <string name="Marketplace Validation No Error">Pas d'erreur ni d'avertissement à signaler</string>
- <string name="Marketplace Error None">Aucune erreur</string>
- <string name="Marketplace Error Prefix">Erreur :</string>
- <string name="Marketplace Error Not Merchant">Avant d'envoyer des articles vers la Place du marché, vous devez vous configurer comme vendeur (gratuit).</string>
- <string name="Marketplace Error Not Accepted">Impossible de déplacer l'article dans ce dossier.</string>
- <string name="Marketplace Error Unsellable Item">Cet article ne peut pas être vendu sur la Place du marché.</string>
- <string name="MarketplaceNoID">no Mkt ID</string>
- <string name="MarketplaceLive">publié</string>
- <string name="MarketplaceActive">actif</string>
- <string name="MarketplaceMax">max.</string>
- <string name="MarketplaceStock">stock</string>
- <string name="MarketplaceNoStock">rupture de stock</string>
- <string name="MarketplaceUpdating">mise à jour...</string>
- <string name="UploadFeeInfo">Les frais dépendent de votre niveau d'abonnement. Les niveaux supérieurs sont soumis à des frais moins élevés. [https://secondlife.com/my/account/membership.php? En savoir plus]</string>
- <string name="Open landmarks">Points de repère ouverts</string>
- <string name="Unconstrained">Sans contrainte</string>
+ <string name="InventoryOutboxNoItems">
+ Pour mettre des dossiers en vente sur la [[MARKETPLACE_DASHBOARD_URL] Place du marché], faites-les glisser vers cette zone et cliquez sur "Envoyer vers la Place du marché".
+ </string>
+ <string name="InventoryOutboxInitializingTitle">
+ Initialisation de la Place du marché...
+ </string>
+ <string name="InventoryOutboxInitializing">
+ Nous sommes en train d'accéder à votre compte dans la [[MARKETPLACE_CREATE_STORE_URL] boutique de la Place du marché].
+ </string>
+ <string name="InventoryOutboxErrorTitle">
+ Erreurs de la Place du marché.
+ </string>
+ <string name="InventoryOutboxError">
+ La [[MARKETPLACE_CREATE_STORE_URL] boutique de la Place du marché] renvoie des erreurs.
+ </string>
+ <string name="InventoryMarketplaceError">
+ Une erreur est survenue lors de l’ouverture des annonces de la Place du marché.
+Si vous continuez de recevoir ce message, contactez l’assistance Second Life à http://support.secondlife.com pour obtenir de l’aide.
+ </string>
+ <string name="InventoryMarketplaceListingsNoItemsTitle">
+ Votre dossier Annonces de la Place du marché est vide.
+ </string>
+ <string name="InventoryMarketplaceListingsNoItems">
+ Pour mettre des dossiers en vente sur la [[MARKETPLACE_DASHBOARD_URL] Place du marché], faites-les glisser vers cette zone.
+ </string>
+ <string name="InventoryItemsCount">
+ ( [ITEMS_COUNT] Articles )
+ </string>
+ <string name="Marketplace Validation Warning Stock">
+ le dossier de stock doit être contenu dans un dossier de version
+ </string>
+ <string name="Marketplace Validation Error Mixed Stock">
+ : Erreur : tous les articles d'un dossier de stock doivent être non reproductibles et de même type
+ </string>
+ <string name="Marketplace Validation Error Subfolder In Stock">
+ : Erreur : un dossier de stock ne peut pas contenir de sous-dossiers
+ </string>
+ <string name="Marketplace Validation Warning Empty">
+ : Avertissement : le dossier ne contient aucun article
+ </string>
+ <string name="Marketplace Validation Warning Create Stock">
+ : Avertissement : création du dossier de stock
+ </string>
+ <string name="Marketplace Validation Warning Create Version">
+ : Avertissement : création du dossier de version
+ </string>
+ <string name="Marketplace Validation Warning Move">
+ : Avertissement : déplacement d'articles
+ </string>
+ <string name="Marketplace Validation Warning Delete">
+ : Avertissement : contenu du dossier transféré vers le dossier de stock, suppression du dossier vide
+ </string>
+ <string name="Marketplace Validation Error Stock Item">
+ : Erreur : les articles non reproductibles doivent être contenus dans un dossier de stock
+ </string>
+ <string name="Marketplace Validation Warning Unwrapped Item">
+ : Avertissement : les articles doivent être contenus dans un dossier de version
+ </string>
+ <string name="Marketplace Validation Error">
+ : Erreur :
+ </string>
+ <string name="Marketplace Validation Warning">
+ : Avertissement :
+ </string>
+ <string name="Marketplace Validation Error Empty Version">
+ : Avertissement : le dossier de version doit contenir au moins 1 article
+ </string>
+ <string name="Marketplace Validation Error Empty Stock">
+ : Avertissement : le dossier de stock doit contenir au moins 1 article
+ </string>
+ <string name="Marketplace Validation No Error">
+ Pas d'erreur ni d'avertissement à signaler
+ </string>
+ <string name="Marketplace Error None">
+ Aucune erreur
+ </string>
+ <string name="Marketplace Error Prefix">
+ Erreur :
+ </string>
+ <string name="Marketplace Error Not Merchant">
+ Avant d'envoyer des articles vers la Place du marché, vous devez vous configurer comme vendeur (gratuit).
+ </string>
+ <string name="Marketplace Error Not Accepted">
+ Impossible de déplacer l'article dans ce dossier.
+ </string>
+ <string name="Marketplace Error Unsellable Item">
+ Cet article ne peut pas être vendu sur la Place du marché.
+ </string>
+ <string name="MarketplaceNoID">
+ no Mkt ID
+ </string>
+ <string name="MarketplaceLive">
+ publié
+ </string>
+ <string name="MarketplaceActive">
+ actif
+ </string>
+ <string name="MarketplaceMax">
+ max.
+ </string>
+ <string name="MarketplaceStock">
+ stock
+ </string>
+ <string name="MarketplaceNoStock">
+ rupture de stock
+ </string>
+ <string name="MarketplaceUpdating">
+ mise à jour...
+ </string>
+ <string name="UploadFeeInfo">
+ Les frais dépendent de votre niveau d'abonnement. Les niveaux supérieurs sont soumis à des frais moins élevés. [https://secondlife.com/my/account/membership.php? En savoir plus]
+ </string>
+ <string name="Open landmarks">
+ Points de repère ouverts
+ </string>
+ <string name="Unconstrained">
+ Sans contrainte
+ </string>
<string name="no_transfer" value=" (pas de transfert)"/>
<string name="no_modify" value=" (pas de modification)"/>
<string name="no_copy" value=" (pas de copie)"/>
<string name="worn" value=" (porté)"/>
<string name="link" value=" (lien)"/>
<string name="broken_link" value=" (broken_link)"/>
- <string name="LoadingContents">chargement des contenus en cours...</string>
- <string name="NoContents">Aucun contenu</string>
+ <string name="LoadingContents">
+ chargement des contenus en cours...
+ </string>
+ <string name="NoContents">
+ Aucun contenu
+ </string>
<string name="WornOnAttachmentPoint" value=" (porté sur [ATTACHMENT_POINT])"/>
<string name="AttachmentErrorMessage" value="([ATTACHMENT_ERROR])"/>
<string name="ActiveGesture" value="[GESLABEL] (actif)"/>
- <string name="PermYes">Oui</string>
- <string name="PermNo">Non</string>
+ <string name="PermYes">
+ Oui
+ </string>
+ <string name="PermNo">
+ Non
+ </string>
<string name="Chat Message" value="Chat :"/>
<string name="Sound" value=" Son :"/>
<string name="Wait" value=" --- Attendre :"/>
@@ -637,1443 +1705,4215 @@ Si vous continuez de recevoir ce message, contactez l’assistance Second Life
<string name="Snapshots" value=" Photos,"/>
<string name="No Filters" value="Non "/>
<string name="Since Logoff" value="depuis la déconnexion"/>
- <string name="InvFolder My Inventory">Mon inventaire</string>
- <string name="InvFolder Library">Bibliothèque</string>
- <string name="InvFolder Textures">Textures</string>
- <string name="InvFolder Sounds">Sons</string>
- <string name="InvFolder Calling Cards">Cartes de visite</string>
- <string name="InvFolder Landmarks">Repères</string>
- <string name="InvFolder Scripts">Scripts</string>
- <string name="InvFolder Clothing">Habits</string>
- <string name="InvFolder Objects">Objets</string>
- <string name="InvFolder Notecards">Notes</string>
- <string name="InvFolder New Folder">Nouveau dossier</string>
- <string name="InvFolder Inventory">Inventaire</string>
- <string name="InvFolder Uncompressed Images">Images non compressées</string>
- <string name="InvFolder Body Parts">Parties du corps</string>
- <string name="InvFolder Trash">Corbeille</string>
- <string name="InvFolder Photo Album">Albums photo</string>
- <string name="InvFolder Lost And Found">Objets trouvés</string>
- <string name="InvFolder Uncompressed Sounds">Sons non compressés</string>
- <string name="InvFolder Animations">Animations</string>
- <string name="InvFolder Gestures">Gestes</string>
- <string name="InvFolder Favorite">Mes Favoris</string>
- <string name="InvFolder favorite">Mes Favoris</string>
- <string name="InvFolder Favorites">Mes favoris</string>
- <string name="InvFolder favorites">Mes favoris</string>
- <string name="InvFolder Current Outfit">Tenue actuelle</string>
- <string name="InvFolder Initial Outfits">Tenues initiales</string>
- <string name="InvFolder My Outfits">Mes tenues</string>
- <string name="InvFolder Accessories">Accessoires</string>
- <string name="InvFolder Meshes">Maillages</string>
- <string name="InvFolder Received Items">Articles reçus</string>
- <string name="InvFolder Merchant Outbox">Boîte d'envoi vendeur</string>
- <string name="InvFolder Friends">Amis</string>
- <string name="InvFolder All">Tout</string>
- <string name="no_attachments">Aucun élément attaché porté</string>
- <string name="Attachments remain">Éléments attachés ([COUNT] emplacements restants)</string>
- <string name="Buy">Acheter</string>
- <string name="BuyforL$">Acheter des L$</string>
- <string name="Stone">Pierre</string>
- <string name="Metal">Métal</string>
- <string name="Glass">Verre</string>
- <string name="Wood">Bois</string>
- <string name="Flesh">Chair</string>
- <string name="Plastic">Plastique</string>
- <string name="Rubber">Caoutchouc</string>
- <string name="Light">Léger</string>
- <string name="KBShift">Maj-</string>
- <string name="KBCtrl">Ctrl</string>
- <string name="Chest">Poitrine</string>
- <string name="Skull">Crâne</string>
- <string name="Left Shoulder">Épaule gauche</string>
- <string name="Right Shoulder">Épaule droite</string>
- <string name="Left Hand">Main gauche</string>
- <string name="Right Hand">Main droite</string>
- <string name="Left Foot">Pied gauche</string>
- <string name="Right Foot">Pied droit</string>
- <string name="Spine">Colonne</string>
- <string name="Pelvis">Bassin</string>
- <string name="Mouth">Bouche</string>
- <string name="Chin">Menton</string>
- <string name="Left Ear">Oreille gauche</string>
- <string name="Right Ear">Oreille droite</string>
- <string name="Left Eyeball">Globe oculaire gauche</string>
- <string name="Right Eyeball">Globe oculaire droit</string>
- <string name="Nose">Nez</string>
- <string name="R Upper Arm">Bras D</string>
- <string name="R Forearm">Avant-bras D</string>
- <string name="L Upper Arm">Bras G</string>
- <string name="L Forearm">Avant-bras G</string>
- <string name="Right Hip">Hanche droite</string>
- <string name="R Upper Leg">Cuisse D</string>
- <string name="R Lower Leg">Jambe D</string>
- <string name="Left Hip">Hanche gauche</string>
- <string name="L Upper Leg">Cuisse G</string>
- <string name="L Lower Leg">Jambe G</string>
- <string name="Stomach">Estomac</string>
- <string name="Left Pec">Pectoral gauche</string>
- <string name="Right Pec">Pectoral droit</string>
- <string name="Neck">Cou</string>
- <string name="Avatar Center">Centre de l'avatar</string>
- <string name="Left Ring Finger">Annulaire gauche</string>
- <string name="Right Ring Finger">Annulaire droit</string>
- <string name="Tail Base">Base de la queue</string>
- <string name="Tail Tip">Bout de la queue</string>
- <string name="Left Wing">Aile gauche</string>
- <string name="Right Wing">Aile droite</string>
- <string name="Jaw">Mâchoire</string>
- <string name="Alt Left Ear">Oreille gauche différente</string>
- <string name="Alt Right Ear">Oreille droite différente</string>
- <string name="Alt Left Eye">Œil gauche différent</string>
- <string name="Alt Right Eye">Œil droit différent</string>
- <string name="Tongue">Langue</string>
- <string name="Groin">Aine</string>
- <string name="Left Hind Foot">Pied arrière gauche</string>
- <string name="Right Hind Foot">Pied arrière droit</string>
- <string name="Invalid Attachment">Point d'attache non valide</string>
- <string name="ATTACHMENT_MISSING_ITEM">Erreur : article manquant</string>
- <string name="ATTACHMENT_MISSING_BASE_ITEM">Erreur : article de base manquant</string>
- <string name="ATTACHMENT_NOT_ATTACHED">Erreur : l'objet est dans une tenue actuelle, mais il n'est pas attaché</string>
- <string name="YearsMonthsOld">[AGEYEARS] [AGEMONTHS]</string>
- <string name="YearsOld">[AGEYEARS]</string>
- <string name="MonthsOld">[AGEMONTHS]</string>
- <string name="WeeksOld">[AGEWEEKS]</string>
- <string name="DaysOld">[AGEDAYS]</string>
- <string name="TodayOld">Inscrit aujourd'hui</string>
- <string name="av_render_everyone_now">Désormais, tout le monde peut vous voir.</string>
- <string name="av_render_not_everyone">Vous risquez de ne pas être rendu par tous les gens qui vous entourent.</string>
- <string name="av_render_over_half">Vous risquez de ne pas être rendu par plus de la moitié des gens qui vous entourent.</string>
- <string name="av_render_most_of">Vous risquez de ne pas être rendu par la plupart des gens qui vous entourent.</string>
- <string name="av_render_anyone">Vous risquez de n’être rendu par aucune des personnes qui vous entourent.</string>
- <string name="hud_description_total">Votre HUD</string>
- <string name="hud_name_with_joint">[OBJ_NAME] (porté sur [JNT_NAME])</string>
- <string name="hud_render_memory_warning">[HUD_DETAILS] utilise beaucoup de mémoire textures</string>
- <string name="hud_render_cost_warning">[HUD_DETAILS] contient beaucoup de textures et d’objets volumineux</string>
- <string name="hud_render_heavy_textures_warning">[HUD_DETAILS] contient beaucoup de textures volumineuses</string>
- <string name="hud_render_cramped_warning">[HUD_DETAILS] contient trop d’objets</string>
- <string name="hud_render_textures_warning">[HUD_DETAILS] contient trop de textures</string>
- <string name="AgeYearsA">[COUNT] an</string>
- <string name="AgeYearsB">[COUNT] ans</string>
- <string name="AgeYearsC">[COUNT] ans</string>
- <string name="AgeMonthsA">[COUNT] mois</string>
- <string name="AgeMonthsB">[COUNT] mois</string>
- <string name="AgeMonthsC">[COUNT] mois</string>
- <string name="AgeWeeksA">[COUNT] semaine</string>
- <string name="AgeWeeksB">[COUNT] semaines</string>
- <string name="AgeWeeksC">[COUNT] semaines</string>
- <string name="AgeDaysA">[COUNT] jour</string>
- <string name="AgeDaysB">[COUNT] jours</string>
- <string name="AgeDaysC">[COUNT] jours</string>
- <string name="GroupMembersA">[COUNT] membre</string>
- <string name="GroupMembersB">[COUNT] membres</string>
- <string name="GroupMembersC">[COUNT] membres</string>
- <string name="AcctTypeResident">Résident</string>
- <string name="AcctTypeTrial">Essai</string>
- <string name="AcctTypeCharterMember">Membre originaire</string>
- <string name="AcctTypeEmployee">Employé(e) de Linden Lab</string>
- <string name="PaymentInfoUsed">Infos de paiement utilisées</string>
- <string name="PaymentInfoOnFile">Infos de paiement enregistrées</string>
- <string name="NoPaymentInfoOnFile">Aucune info de paiement enregistrée</string>
- <string name="AgeVerified">Personne dont l'âge a été vérifié</string>
- <string name="NotAgeVerified">Personne dont l'âge n'a pas été vérifié</string>
- <string name="Center 2">Centre 2</string>
- <string name="Top Right">En haut à droite</string>
- <string name="Top">En haut</string>
- <string name="Top Left">En haut à gauche</string>
- <string name="Center">Centre</string>
- <string name="Bottom Left">En bas à gauche</string>
- <string name="Bottom">Bas</string>
- <string name="Bottom Right">En bas à droite</string>
- <string name="CompileQueueDownloadedCompiling">Téléchargé, compilation en cours</string>
- <string name="CompileQueueServiceUnavailable">Service de compilation de script indisponible.</string>
- <string name="CompileQueueScriptNotFound">Script introuvable sur le serveur.</string>
- <string name="CompileQueueProblemDownloading">Problème lors du téléchargement</string>
- <string name="CompileQueueInsufficientPermDownload">Droits insuffisants pour télécharger un script.</string>
- <string name="CompileQueueInsufficientPermFor">Droits insuffisants pour</string>
- <string name="CompileQueueUnknownFailure">Échec du téléchargement, erreur inconnue</string>
- <string name="CompileNoExperiencePerm">En train d’ignorer le script [SCRIPT] avec l’expérience [EXPERIENCE].</string>
- <string name="CompileQueueTitle">Recompilation - progrès</string>
- <string name="CompileQueueStart">recompiler</string>
- <string name="ResetQueueTitle">Réinitialiser les progrès</string>
- <string name="ResetQueueStart">réinitialiser</string>
- <string name="RunQueueTitle">Lancer</string>
- <string name="RunQueueStart">lancer</string>
- <string name="NotRunQueueTitle">Arrêter</string>
- <string name="NotRunQueueStart">arrêter</string>
- <string name="CompileSuccessful">Compilation réussie !</string>
- <string name="CompileSuccessfulSaving">Compilation réussie, enregistrement en cours...</string>
- <string name="SaveComplete">Enregistrement terminé.</string>
- <string name="UploadFailed">Échec du chargement de fichier :</string>
- <string name="ObjectOutOfRange">Script (objet hors de portée)</string>
- <string name="ScriptWasDeleted">Script (supprimé de l’inventaire)</string>
- <string name="GodToolsObjectOwnedBy">Objet [OBJECT] appartenant à [OWNER]</string>
- <string name="GroupsNone">aucun</string>
+ <string name="InvFolder My Inventory">
+ Mon inventaire
+ </string>
+ <string name="InvFolder Library">
+ Bibliothèque
+ </string>
+ <string name="InvFolder Textures">
+ Textures
+ </string>
+ <string name="InvFolder Sounds">
+ Sons
+ </string>
+ <string name="InvFolder Calling Cards">
+ Cartes de visite
+ </string>
+ <string name="InvFolder Landmarks">
+ Repères
+ </string>
+ <string name="InvFolder Scripts">
+ Scripts
+ </string>
+ <string name="InvFolder Clothing">
+ Habits
+ </string>
+ <string name="InvFolder Objects">
+ Objets
+ </string>
+ <string name="InvFolder Notecards">
+ Notes
+ </string>
+ <string name="InvFolder New Folder">
+ Nouveau dossier
+ </string>
+ <string name="InvFolder Inventory">
+ Inventaire
+ </string>
+ <string name="InvFolder Uncompressed Images">
+ Images non compressées
+ </string>
+ <string name="InvFolder Body Parts">
+ Parties du corps
+ </string>
+ <string name="InvFolder Trash">
+ Corbeille
+ </string>
+ <string name="InvFolder Photo Album">
+ Albums photo
+ </string>
+ <string name="InvFolder Lost And Found">
+ Objets trouvés
+ </string>
+ <string name="InvFolder Uncompressed Sounds">
+ Sons non compressés
+ </string>
+ <string name="InvFolder Animations">
+ Animations
+ </string>
+ <string name="InvFolder Gestures">
+ Gestes
+ </string>
+ <string name="InvFolder Favorite">
+ Mes Favoris
+ </string>
+ <string name="InvFolder favorite">
+ Mes Favoris
+ </string>
+ <string name="InvFolder Favorites">
+ Mes favoris
+ </string>
+ <string name="InvFolder favorites">
+ Mes favoris
+ </string>
+ <string name="InvFolder Current Outfit">
+ Tenue actuelle
+ </string>
+ <string name="InvFolder Initial Outfits">
+ Tenues initiales
+ </string>
+ <string name="InvFolder My Outfits">
+ Mes tenues
+ </string>
+ <string name="InvFolder Accessories">
+ Accessoires
+ </string>
+ <string name="InvFolder Meshes">
+ Maillages
+ </string>
+ <string name="InvFolder Received Items">
+ Articles reçus
+ </string>
+ <string name="InvFolder Merchant Outbox">
+ Boîte d'envoi vendeur
+ </string>
+ <string name="InvFolder Friends">
+ Amis
+ </string>
+ <string name="InvFolder All">
+ Tout
+ </string>
+ <string name="no_attachments">
+ Aucun élément attaché porté
+ </string>
+ <string name="Attachments remain">
+ Éléments attachés ([COUNT] emplacements restants)
+ </string>
+ <string name="Buy">
+ Acheter
+ </string>
+ <string name="BuyforL$">
+ Acheter des L$
+ </string>
+ <string name="Stone">
+ Pierre
+ </string>
+ <string name="Metal">
+ Métal
+ </string>
+ <string name="Glass">
+ Verre
+ </string>
+ <string name="Wood">
+ Bois
+ </string>
+ <string name="Flesh">
+ Chair
+ </string>
+ <string name="Plastic">
+ Plastique
+ </string>
+ <string name="Rubber">
+ Caoutchouc
+ </string>
+ <string name="Light">
+ Léger
+ </string>
+ <string name="KBShift">
+ Maj-
+ </string>
+ <string name="KBCtrl">
+ Ctrl
+ </string>
+ <string name="Chest">
+ Poitrine
+ </string>
+ <string name="Skull">
+ Crâne
+ </string>
+ <string name="Left Shoulder">
+ Épaule gauche
+ </string>
+ <string name="Right Shoulder">
+ Épaule droite
+ </string>
+ <string name="Left Hand">
+ Main gauche
+ </string>
+ <string name="Right Hand">
+ Main droite
+ </string>
+ <string name="Left Foot">
+ Pied gauche
+ </string>
+ <string name="Right Foot">
+ Pied droit
+ </string>
+ <string name="Spine">
+ Colonne
+ </string>
+ <string name="Pelvis">
+ Bassin
+ </string>
+ <string name="Mouth">
+ Bouche
+ </string>
+ <string name="Chin">
+ Menton
+ </string>
+ <string name="Left Ear">
+ Oreille gauche
+ </string>
+ <string name="Right Ear">
+ Oreille droite
+ </string>
+ <string name="Left Eyeball">
+ Globe oculaire gauche
+ </string>
+ <string name="Right Eyeball">
+ Globe oculaire droit
+ </string>
+ <string name="Nose">
+ Nez
+ </string>
+ <string name="R Upper Arm">
+ Bras D
+ </string>
+ <string name="R Forearm">
+ Avant-bras D
+ </string>
+ <string name="L Upper Arm">
+ Bras G
+ </string>
+ <string name="L Forearm">
+ Avant-bras G
+ </string>
+ <string name="Right Hip">
+ Hanche droite
+ </string>
+ <string name="R Upper Leg">
+ Cuisse D
+ </string>
+ <string name="R Lower Leg">
+ Jambe D
+ </string>
+ <string name="Left Hip">
+ Hanche gauche
+ </string>
+ <string name="L Upper Leg">
+ Cuisse G
+ </string>
+ <string name="L Lower Leg">
+ Jambe G
+ </string>
+ <string name="Stomach">
+ Estomac
+ </string>
+ <string name="Left Pec">
+ Pectoral gauche
+ </string>
+ <string name="Right Pec">
+ Pectoral droit
+ </string>
+ <string name="Neck">
+ Cou
+ </string>
+ <string name="Avatar Center">
+ Centre de l'avatar
+ </string>
+ <string name="Left Ring Finger">
+ Annulaire gauche
+ </string>
+ <string name="Right Ring Finger">
+ Annulaire droit
+ </string>
+ <string name="Tail Base">
+ Base de la queue
+ </string>
+ <string name="Tail Tip">
+ Bout de la queue
+ </string>
+ <string name="Left Wing">
+ Aile gauche
+ </string>
+ <string name="Right Wing">
+ Aile droite
+ </string>
+ <string name="Jaw">
+ Mâchoire
+ </string>
+ <string name="Alt Left Ear">
+ Oreille gauche différente
+ </string>
+ <string name="Alt Right Ear">
+ Oreille droite différente
+ </string>
+ <string name="Alt Left Eye">
+ Œil gauche différent
+ </string>
+ <string name="Alt Right Eye">
+ Œil droit différent
+ </string>
+ <string name="Tongue">
+ Langue
+ </string>
+ <string name="Groin">
+ Aine
+ </string>
+ <string name="Left Hind Foot">
+ Pied arrière gauche
+ </string>
+ <string name="Right Hind Foot">
+ Pied arrière droit
+ </string>
+ <string name="Invalid Attachment">
+ Point d'attache non valide
+ </string>
+ <string name="ATTACHMENT_MISSING_ITEM">
+ Erreur : article manquant
+ </string>
+ <string name="ATTACHMENT_MISSING_BASE_ITEM">
+ Erreur : article de base manquant
+ </string>
+ <string name="ATTACHMENT_NOT_ATTACHED">
+ Erreur : l'objet est dans une tenue actuelle, mais il n'est pas attaché
+ </string>
+ <string name="YearsMonthsOld">
+ [AGEYEARS] [AGEMONTHS]
+ </string>
+ <string name="YearsOld">
+ [AGEYEARS]
+ </string>
+ <string name="MonthsOld">
+ [AGEMONTHS]
+ </string>
+ <string name="WeeksOld">
+ [AGEWEEKS]
+ </string>
+ <string name="DaysOld">
+ [AGEDAYS]
+ </string>
+ <string name="TodayOld">
+ Inscrit aujourd'hui
+ </string>
+ <string name="av_render_everyone_now">
+ Désormais, tout le monde peut vous voir.
+ </string>
+ <string name="av_render_not_everyone">
+ Vous risquez de ne pas être rendu par tous les gens qui vous entourent.
+ </string>
+ <string name="av_render_over_half">
+ Vous risquez de ne pas être rendu par plus de la moitié des gens qui vous entourent.
+ </string>
+ <string name="av_render_most_of">
+ Vous risquez de ne pas être rendu par la plupart des gens qui vous entourent.
+ </string>
+ <string name="av_render_anyone">
+ Vous risquez de n’être rendu par aucune des personnes qui vous entourent.
+ </string>
+ <string name="hud_description_total">
+ Votre HUD
+ </string>
+ <string name="hud_name_with_joint">
+ [OBJ_NAME] (porté sur [JNT_NAME])
+ </string>
+ <string name="hud_render_memory_warning">
+ [HUD_DETAILS] utilise beaucoup de mémoire textures
+ </string>
+ <string name="hud_render_cost_warning">
+ [HUD_DETAILS] contient beaucoup de textures et d’objets volumineux
+ </string>
+ <string name="hud_render_heavy_textures_warning">
+ [HUD_DETAILS] contient beaucoup de textures volumineuses
+ </string>
+ <string name="hud_render_cramped_warning">
+ [HUD_DETAILS] contient trop d’objets
+ </string>
+ <string name="hud_render_textures_warning">
+ [HUD_DETAILS] contient trop de textures
+ </string>
+ <string name="AgeYearsA">
+ [COUNT] an
+ </string>
+ <string name="AgeYearsB">
+ [COUNT] ans
+ </string>
+ <string name="AgeYearsC">
+ [COUNT] ans
+ </string>
+ <string name="AgeMonthsA">
+ [COUNT] mois
+ </string>
+ <string name="AgeMonthsB">
+ [COUNT] mois
+ </string>
+ <string name="AgeMonthsC">
+ [COUNT] mois
+ </string>
+ <string name="AgeWeeksA">
+ [COUNT] semaine
+ </string>
+ <string name="AgeWeeksB">
+ [COUNT] semaines
+ </string>
+ <string name="AgeWeeksC">
+ [COUNT] semaines
+ </string>
+ <string name="AgeDaysA">
+ [COUNT] jour
+ </string>
+ <string name="AgeDaysB">
+ [COUNT] jours
+ </string>
+ <string name="AgeDaysC">
+ [COUNT] jours
+ </string>
+ <string name="GroupMembersA">
+ [COUNT] membre
+ </string>
+ <string name="GroupMembersB">
+ [COUNT] membres
+ </string>
+ <string name="GroupMembersC">
+ [COUNT] membres
+ </string>
+ <string name="AcctTypeResident">
+ Résident
+ </string>
+ <string name="AcctTypeTrial">
+ Essai
+ </string>
+ <string name="AcctTypeCharterMember">
+ Membre originaire
+ </string>
+ <string name="AcctTypeEmployee">
+ Employé(e) de Linden Lab
+ </string>
+ <string name="PaymentInfoUsed">
+ Infos de paiement utilisées
+ </string>
+ <string name="PaymentInfoOnFile">
+ Infos de paiement enregistrées
+ </string>
+ <string name="NoPaymentInfoOnFile">
+ Aucune info de paiement enregistrée
+ </string>
+ <string name="AgeVerified">
+ Personne dont l'âge a été vérifié
+ </string>
+ <string name="NotAgeVerified">
+ Personne dont l'âge n'a pas été vérifié
+ </string>
+ <string name="Center 2">
+ Centre 2
+ </string>
+ <string name="Top Right">
+ En haut à droite
+ </string>
+ <string name="Top">
+ En haut
+ </string>
+ <string name="Top Left">
+ En haut à gauche
+ </string>
+ <string name="Center">
+ Centre
+ </string>
+ <string name="Bottom Left">
+ En bas à gauche
+ </string>
+ <string name="Bottom">
+ Bas
+ </string>
+ <string name="Bottom Right">
+ En bas à droite
+ </string>
+ <string name="CompileQueueDownloadedCompiling">
+ Téléchargé, compilation en cours
+ </string>
+ <string name="CompileQueueServiceUnavailable">
+ Service de compilation de script indisponible.
+ </string>
+ <string name="CompileQueueScriptNotFound">
+ Script introuvable sur le serveur.
+ </string>
+ <string name="CompileQueueProblemDownloading">
+ Problème lors du téléchargement
+ </string>
+ <string name="CompileQueueInsufficientPermDownload">
+ Droits insuffisants pour télécharger un script.
+ </string>
+ <string name="CompileQueueInsufficientPermFor">
+ Droits insuffisants pour
+ </string>
+ <string name="CompileQueueUnknownFailure">
+ Échec du téléchargement, erreur inconnue
+ </string>
+ <string name="CompileNoExperiencePerm">
+ En train d’ignorer le script [SCRIPT] avec l’expérience [EXPERIENCE].
+ </string>
+ <string name="CompileQueueTitle">
+ Recompilation - progrès
+ </string>
+ <string name="CompileQueueStart">
+ recompiler
+ </string>
+ <string name="ResetQueueTitle">
+ Réinitialiser les progrès
+ </string>
+ <string name="ResetQueueStart">
+ réinitialiser
+ </string>
+ <string name="RunQueueTitle">
+ Lancer
+ </string>
+ <string name="RunQueueStart">
+ lancer
+ </string>
+ <string name="NotRunQueueTitle">
+ Arrêter
+ </string>
+ <string name="NotRunQueueStart">
+ arrêter
+ </string>
+ <string name="CompileSuccessful">
+ Compilation réussie !
+ </string>
+ <string name="CompileSuccessfulSaving">
+ Compilation réussie, enregistrement en cours...
+ </string>
+ <string name="SaveComplete">
+ Enregistrement terminé.
+ </string>
+ <string name="UploadFailed">
+ Échec du chargement de fichier :
+ </string>
+ <string name="ObjectOutOfRange">
+ Script (objet hors de portée)
+ </string>
+ <string name="ScriptWasDeleted">
+ Script (supprimé de l’inventaire)
+ </string>
+ <string name="GodToolsObjectOwnedBy">
+ Objet [OBJECT] appartenant à [OWNER]
+ </string>
+ <string name="GroupsNone">
+ aucun
+ </string>
<string name="Group" value=" (groupe)"/>
- <string name="Unknown">(Inconnu)</string>
+ <string name="Unknown">
+ (Inconnu)
+ </string>
<string name="SummaryForTheWeek" value="Récapitulatif de la semaine, début le "/>
<string name="NextStipendDay" value=". Prochaine prime le "/>
- <string name="GroupPlanningDate">[day,datetime,utc]/[mthnum,datetime,utc]/[year,datetime,utc]</string>
+ <string name="GroupPlanningDate">
+ [day,datetime,utc]/[mthnum,datetime,utc]/[year,datetime,utc]
+ </string>
<string name="GroupIndividualShare" value=" Groupe Part individuelle"/>
<string name="GroupColumn" value="Groupe"/>
- <string name="Balance">Solde</string>
- <string name="Credits">Crédits</string>
- <string name="Debits">Débits</string>
- <string name="Total">Total</string>
- <string name="NoGroupDataFound">Aucune donnée trouvée pour le groupe</string>
- <string name="IMParentEstate">domaine parent</string>
- <string name="IMMainland">continent</string>
- <string name="IMTeen">teen</string>
- <string name="Anyone">n'importe qui</string>
- <string name="RegionInfoError">erreur</string>
- <string name="RegionInfoAllEstatesOwnedBy">tous les domaines appartenant à [OWNER]</string>
- <string name="RegionInfoAllEstatesYouOwn">tous les domaines vous appartenant</string>
- <string name="RegionInfoAllEstatesYouManage">tous les domaines que vous gérez pour [OWNER]</string>
- <string name="RegionInfoAllowedResidents">Toujours autorisé : ([ALLOWEDAGENTS], max [MAXACCESS])</string>
- <string name="RegionInfoAllowedGroups">Groupes toujours autorisés : [ALLOWEDGROUPS], max [MAXACCESS])</string>
- <string name="RegionInfoBannedResidents">Toujours interdits : ([BANNEDAGENTS], max. [MAXBANNED])</string>
- <string name="RegionInfoListTypeAllowedAgents">Toujours autorisé</string>
- <string name="RegionInfoListTypeBannedAgents">Toujours interdit</string>
- <string name="RegionInfoAllEstates">tous les domaines</string>
- <string name="RegionInfoManagedEstates">domaines gérés</string>
- <string name="RegionInfoThisEstate">ce domaine</string>
- <string name="AndNMore">et [EXTRA_COUNT] plus</string>
- <string name="ScriptLimitsParcelScriptMemory">Mémoire des scripts de parcelles</string>
- <string name="ScriptLimitsParcelsOwned">Parcelles répertoriées : [PARCELS]</string>
- <string name="ScriptLimitsMemoryUsed">Mémoire utilisée : [COUNT] Ko sur [MAX] ; [AVAILABLE] Ko disponibles</string>
- <string name="ScriptLimitsMemoryUsedSimple">Mémoire utilisée : [COUNT] Ko</string>
- <string name="ScriptLimitsParcelScriptURLs">URL des scripts de parcelles</string>
- <string name="ScriptLimitsURLsUsed">URL utilisées : [COUNT] sur [MAX] ; [AVAILABLE] disponible(s)</string>
- <string name="ScriptLimitsURLsUsedSimple">URL utilisées : [COUNT]</string>
- <string name="ScriptLimitsRequestError">Une erreur est survenue pendant la requête d'informations.</string>
- <string name="ScriptLimitsRequestNoParcelSelected">Aucune parcelle sélectionnée</string>
- <string name="ScriptLimitsRequestWrongRegion">Erreur : les informations de script ne sont disponibles que dans votre région actuelle.</string>
- <string name="ScriptLimitsRequestWaiting">Extraction des informations en cours...</string>
- <string name="ScriptLimitsRequestDontOwnParcel">Vous n'avez pas le droit d'examiner cette parcelle.</string>
- <string name="SITTING_ON">Assis(e) dessus</string>
- <string name="ATTACH_CHEST">Poitrine</string>
- <string name="ATTACH_HEAD">Crâne</string>
- <string name="ATTACH_LSHOULDER">Épaule gauche</string>
- <string name="ATTACH_RSHOULDER">Épaule droite</string>
- <string name="ATTACH_LHAND">Main gauche</string>
- <string name="ATTACH_RHAND">Main droite</string>
- <string name="ATTACH_LFOOT">Pied gauche</string>
- <string name="ATTACH_RFOOT">Pied droit</string>
- <string name="ATTACH_BACK">Colonne vertébrale</string>
- <string name="ATTACH_PELVIS">Bassin</string>
- <string name="ATTACH_MOUTH">Bouche</string>
- <string name="ATTACH_CHIN">Menton</string>
- <string name="ATTACH_LEAR">Oreille gauche</string>
- <string name="ATTACH_REAR">Oreille droite</string>
- <string name="ATTACH_LEYE">Œil gauche</string>
- <string name="ATTACH_REYE">Œil droit</string>
- <string name="ATTACH_NOSE">Nez</string>
- <string name="ATTACH_RUARM">Bras droit</string>
- <string name="ATTACH_RLARM">Avant-bras droit</string>
- <string name="ATTACH_LUARM">Bras gauche</string>
- <string name="ATTACH_LLARM">Avant-bras gauche</string>
- <string name="ATTACH_RHIP">Hanche droite</string>
- <string name="ATTACH_RULEG">Cuisse droite</string>
- <string name="ATTACH_RLLEG">Jambe droite</string>
- <string name="ATTACH_LHIP">Hanche gauche</string>
- <string name="ATTACH_LULEG">Cuisse gauche</string>
- <string name="ATTACH_LLLEG">Jambe gauche</string>
- <string name="ATTACH_BELLY">Estomac</string>
- <string name="ATTACH_LEFT_PEC">Pectoral gauche</string>
- <string name="ATTACH_RIGHT_PEC">Pectoral droit</string>
- <string name="ATTACH_HUD_CENTER_2">HUD centre 2</string>
- <string name="ATTACH_HUD_TOP_RIGHT">HUD en haut à droite</string>
- <string name="ATTACH_HUD_TOP_CENTER">HUD en haut au centre</string>
- <string name="ATTACH_HUD_TOP_LEFT">HUD en haut à gauche</string>
- <string name="ATTACH_HUD_CENTER_1">HUD centre 1</string>
- <string name="ATTACH_HUD_BOTTOM_LEFT">HUD en bas à gauche</string>
- <string name="ATTACH_HUD_BOTTOM">HUD en bas</string>
- <string name="ATTACH_HUD_BOTTOM_RIGHT">HUD en bas à droite</string>
- <string name="ATTACH_NECK">Cou</string>
- <string name="ATTACH_AVATAR_CENTER">Centre de l'avatar</string>
- <string name="ATTACH_LHAND_RING1">Annulaire gauche</string>
- <string name="ATTACH_RHAND_RING1">Annulaire droit</string>
- <string name="ATTACH_TAIL_BASE">Base de la queue</string>
- <string name="ATTACH_TAIL_TIP">Bout de la queue</string>
- <string name="ATTACH_LWING">Aile gauche</string>
- <string name="ATTACH_RWING">Aile droite</string>
- <string name="ATTACH_FACE_JAW">Mâchoire</string>
- <string name="ATTACH_FACE_LEAR">Oreille gauche différente</string>
- <string name="ATTACH_FACE_REAR">Oreille droite différente</string>
- <string name="ATTACH_FACE_LEYE">Œil gauche différent</string>
- <string name="ATTACH_FACE_REYE">Œil droit différent</string>
- <string name="ATTACH_FACE_TONGUE">Langue</string>
- <string name="ATTACH_GROIN">Aine</string>
- <string name="ATTACH_HIND_LFOOT">Pied arrière gauche</string>
- <string name="ATTACH_HIND_RFOOT">Pied arrière droit</string>
- <string name="CursorPos">Ligne [LINE], colonne [COLUMN]</string>
- <string name="PanelDirCountFound">[COUNT] trouvé(s)</string>
- <string name="PanelDirTimeStr">[hour12,datetime,slt]:[min,datetime,slt] [ampm,datetime,slt]</string>
- <string name="PanelDirEventsDateText">[mthnum,datetime,slt]/[day,datetime,slt]</string>
- <string name="PanelContentsTooltip">Contenu de l'objet</string>
- <string name="PanelContentsNewScript">Nouveau script</string>
- <string name="DoNotDisturbModeResponseDefault">Ce résident a activé Ne pas déranger et verra votre message plus tard.</string>
- <string name="MuteByName">(par nom)</string>
- <string name="MuteAgent">(résident)</string>
- <string name="MuteObject">(objet)</string>
- <string name="MuteGroup">(groupe)</string>
- <string name="MuteExternal">(externe)</string>
- <string name="RegionNoCovenant">Il n'y a aucun règlement pour ce domaine.</string>
- <string name="RegionNoCovenantOtherOwner">Il n'y a aucun règlement pour ce domaine. Le terrain sur ce domaine est vendu par le propriétaire, non par Linden Lab. Pour en savoir plus, veuillez contacter le propriétaire.</string>
+ <string name="Balance">
+ Solde
+ </string>
+ <string name="Credits">
+ Crédits
+ </string>
+ <string name="Debits">
+ Débits
+ </string>
+ <string name="Total">
+ Total
+ </string>
+ <string name="NoGroupDataFound">
+ Aucune donnée trouvée pour le groupe
+ </string>
+ <string name="IMParentEstate">
+ domaine parent
+ </string>
+ <string name="IMMainland">
+ continent
+ </string>
+ <string name="IMTeen">
+ teen
+ </string>
+ <string name="Anyone">
+ n'importe qui
+ </string>
+ <string name="RegionInfoError">
+ erreur
+ </string>
+ <string name="RegionInfoAllEstatesOwnedBy">
+ tous les domaines appartenant à [OWNER]
+ </string>
+ <string name="RegionInfoAllEstatesYouOwn">
+ tous les domaines vous appartenant
+ </string>
+ <string name="RegionInfoAllEstatesYouManage">
+ tous les domaines que vous gérez pour [OWNER]
+ </string>
+ <string name="RegionInfoAllowedResidents">
+ Toujours autorisé : ([ALLOWEDAGENTS], max [MAXACCESS])
+ </string>
+ <string name="RegionInfoAllowedGroups">
+ Groupes toujours autorisés : [ALLOWEDGROUPS], max [MAXACCESS])
+ </string>
+ <string name="RegionInfoBannedResidents">
+ Toujours interdits : ([BANNEDAGENTS], max. [MAXBANNED])
+ </string>
+ <string name="RegionInfoListTypeAllowedAgents">
+ Toujours autorisé
+ </string>
+ <string name="RegionInfoListTypeBannedAgents">
+ Toujours interdit
+ </string>
+ <string name="RegionInfoAllEstates">
+ tous les domaines
+ </string>
+ <string name="RegionInfoManagedEstates">
+ domaines gérés
+ </string>
+ <string name="RegionInfoThisEstate">
+ ce domaine
+ </string>
+ <string name="AndNMore">
+ et [EXTRA_COUNT] plus
+ </string>
+ <string name="ScriptLimitsParcelScriptMemory">
+ Mémoire des scripts de parcelles
+ </string>
+ <string name="ScriptLimitsParcelsOwned">
+ Parcelles répertoriées : [PARCELS]
+ </string>
+ <string name="ScriptLimitsMemoryUsed">
+ Mémoire utilisée : [COUNT] Ko sur [MAX] ; [AVAILABLE] Ko disponibles
+ </string>
+ <string name="ScriptLimitsMemoryUsedSimple">
+ Mémoire utilisée : [COUNT] Ko
+ </string>
+ <string name="ScriptLimitsParcelScriptURLs">
+ URL des scripts de parcelles
+ </string>
+ <string name="ScriptLimitsURLsUsed">
+ URL utilisées : [COUNT] sur [MAX] ; [AVAILABLE] disponible(s)
+ </string>
+ <string name="ScriptLimitsURLsUsedSimple">
+ URL utilisées : [COUNT]
+ </string>
+ <string name="ScriptLimitsRequestError">
+ Une erreur est survenue pendant la requête d'informations.
+ </string>
+ <string name="ScriptLimitsRequestNoParcelSelected">
+ Aucune parcelle sélectionnée
+ </string>
+ <string name="ScriptLimitsRequestWrongRegion">
+ Erreur : les informations de script ne sont disponibles que dans votre région actuelle.
+ </string>
+ <string name="ScriptLimitsRequestWaiting">
+ Extraction des informations en cours...
+ </string>
+ <string name="ScriptLimitsRequestDontOwnParcel">
+ Vous n'avez pas le droit d'examiner cette parcelle.
+ </string>
+ <string name="SITTING_ON">
+ Assis(e) dessus
+ </string>
+ <string name="ATTACH_CHEST">
+ Poitrine
+ </string>
+ <string name="ATTACH_HEAD">
+ Crâne
+ </string>
+ <string name="ATTACH_LSHOULDER">
+ Épaule gauche
+ </string>
+ <string name="ATTACH_RSHOULDER">
+ Épaule droite
+ </string>
+ <string name="ATTACH_LHAND">
+ Main gauche
+ </string>
+ <string name="ATTACH_RHAND">
+ Main droite
+ </string>
+ <string name="ATTACH_LFOOT">
+ Pied gauche
+ </string>
+ <string name="ATTACH_RFOOT">
+ Pied droit
+ </string>
+ <string name="ATTACH_BACK">
+ Colonne vertébrale
+ </string>
+ <string name="ATTACH_PELVIS">
+ Bassin
+ </string>
+ <string name="ATTACH_MOUTH">
+ Bouche
+ </string>
+ <string name="ATTACH_CHIN">
+ Menton
+ </string>
+ <string name="ATTACH_LEAR">
+ Oreille gauche
+ </string>
+ <string name="ATTACH_REAR">
+ Oreille droite
+ </string>
+ <string name="ATTACH_LEYE">
+ Œil gauche
+ </string>
+ <string name="ATTACH_REYE">
+ Œil droit
+ </string>
+ <string name="ATTACH_NOSE">
+ Nez
+ </string>
+ <string name="ATTACH_RUARM">
+ Bras droit
+ </string>
+ <string name="ATTACH_RLARM">
+ Avant-bras droit
+ </string>
+ <string name="ATTACH_LUARM">
+ Bras gauche
+ </string>
+ <string name="ATTACH_LLARM">
+ Avant-bras gauche
+ </string>
+ <string name="ATTACH_RHIP">
+ Hanche droite
+ </string>
+ <string name="ATTACH_RULEG">
+ Cuisse droite
+ </string>
+ <string name="ATTACH_RLLEG">
+ Jambe droite
+ </string>
+ <string name="ATTACH_LHIP">
+ Hanche gauche
+ </string>
+ <string name="ATTACH_LULEG">
+ Cuisse gauche
+ </string>
+ <string name="ATTACH_LLLEG">
+ Jambe gauche
+ </string>
+ <string name="ATTACH_BELLY">
+ Estomac
+ </string>
+ <string name="ATTACH_LEFT_PEC">
+ Pectoral gauche
+ </string>
+ <string name="ATTACH_RIGHT_PEC">
+ Pectoral droit
+ </string>
+ <string name="ATTACH_HUD_CENTER_2">
+ HUD centre 2
+ </string>
+ <string name="ATTACH_HUD_TOP_RIGHT">
+ HUD en haut à droite
+ </string>
+ <string name="ATTACH_HUD_TOP_CENTER">
+ HUD en haut au centre
+ </string>
+ <string name="ATTACH_HUD_TOP_LEFT">
+ HUD en haut à gauche
+ </string>
+ <string name="ATTACH_HUD_CENTER_1">
+ HUD centre 1
+ </string>
+ <string name="ATTACH_HUD_BOTTOM_LEFT">
+ HUD en bas à gauche
+ </string>
+ <string name="ATTACH_HUD_BOTTOM">
+ HUD en bas
+ </string>
+ <string name="ATTACH_HUD_BOTTOM_RIGHT">
+ HUD en bas à droite
+ </string>
+ <string name="ATTACH_NECK">
+ Cou
+ </string>
+ <string name="ATTACH_AVATAR_CENTER">
+ Centre de l'avatar
+ </string>
+ <string name="ATTACH_LHAND_RING1">
+ Annulaire gauche
+ </string>
+ <string name="ATTACH_RHAND_RING1">
+ Annulaire droit
+ </string>
+ <string name="ATTACH_TAIL_BASE">
+ Base de la queue
+ </string>
+ <string name="ATTACH_TAIL_TIP">
+ Bout de la queue
+ </string>
+ <string name="ATTACH_LWING">
+ Aile gauche
+ </string>
+ <string name="ATTACH_RWING">
+ Aile droite
+ </string>
+ <string name="ATTACH_FACE_JAW">
+ Mâchoire
+ </string>
+ <string name="ATTACH_FACE_LEAR">
+ Oreille gauche différente
+ </string>
+ <string name="ATTACH_FACE_REAR">
+ Oreille droite différente
+ </string>
+ <string name="ATTACH_FACE_LEYE">
+ Œil gauche différent
+ </string>
+ <string name="ATTACH_FACE_REYE">
+ Œil droit différent
+ </string>
+ <string name="ATTACH_FACE_TONGUE">
+ Langue
+ </string>
+ <string name="ATTACH_GROIN">
+ Aine
+ </string>
+ <string name="ATTACH_HIND_LFOOT">
+ Pied arrière gauche
+ </string>
+ <string name="ATTACH_HIND_RFOOT">
+ Pied arrière droit
+ </string>
+ <string name="CursorPos">
+ Ligne [LINE], colonne [COLUMN]
+ </string>
+ <string name="PanelDirCountFound">
+ [COUNT] trouvé(s)
+ </string>
+ <string name="PanelDirTimeStr">
+ [hour12,datetime,slt]:[min,datetime,slt] [ampm,datetime,slt]
+ </string>
+ <string name="PanelDirEventsDateText">
+ [mthnum,datetime,slt]/[day,datetime,slt]
+ </string>
+ <string name="PanelContentsTooltip">
+ Contenu de l'objet
+ </string>
+ <string name="PanelContentsNewScript">
+ Nouveau script
+ </string>
+ <string name="DoNotDisturbModeResponseDefault">
+ Ce résident a activé Ne pas déranger et verra votre message plus tard.
+ </string>
+ <string name="MuteByName">
+ (par nom)
+ </string>
+ <string name="MuteAgent">
+ (résident)
+ </string>
+ <string name="MuteObject">
+ (objet)
+ </string>
+ <string name="MuteGroup">
+ (groupe)
+ </string>
+ <string name="MuteExternal">
+ (externe)
+ </string>
+ <string name="RegionNoCovenant">
+ Il n'y a aucun règlement pour ce domaine.
+ </string>
+ <string name="RegionNoCovenantOtherOwner">
+ Il n'y a aucun règlement pour ce domaine. Le terrain sur ce domaine est vendu par le propriétaire, non par Linden Lab. Pour en savoir plus, veuillez contacter le propriétaire.
+ </string>
<string name="covenant_last_modified" value="Dernière modification :"/>
<string name="none_text" value=" (aucun)"/>
<string name="never_text" value=" (jamais)"/>
- <string name="GroupOwned">Propriété du groupe</string>
- <string name="Public">Public</string>
- <string name="LocalSettings">Réglages locaux</string>
- <string name="RegionSettings">Réglages de la région</string>
- <string name="NoEnvironmentSettings">Cette région ne prend pas en charge les paramètres environnementaux.</string>
- <string name="EnvironmentSun">Soleil</string>
- <string name="EnvironmentMoon">Lune</string>
- <string name="EnvironmentBloom">Éclat</string>
- <string name="EnvironmentCloudNoise">Bruit du nuage</string>
- <string name="EnvironmentNormalMap">Carte normale</string>
- <string name="EnvironmentTransparent">Transparent</string>
- <string name="ClassifiedClicksTxt">Clics : [TELEPORT] téléportation, [MAP] carte, [PROFILE] profil</string>
- <string name="ClassifiedUpdateAfterPublish">(mise à jour après la publication)</string>
- <string name="NoPicksClassifiedsText">Vous n'avez pas créé de favoris ni de petites annonces Cliquez sur le bouton Plus pour créer un favori ou une petite annonce.</string>
- <string name="NoPicksText">Vous n'avez pas créé de favoris Cliquer sur le bouton Nouveau pour créer un favori</string>
- <string name="NoClassifiedsText">Vous n'avez pas créé de petites annonces Cliquer sur le bouton Nouveau pour créer une petite annonce.</string>
- <string name="NoAvatarPicksClassifiedsText">L'utilisateur n'a ni favoris ni petites annonces.</string>
- <string name="NoAvatarPicksText">L'utilisateur n'a pas de favoris</string>
- <string name="NoAvatarClassifiedsText">L'utilisateur n'a pas de petites annonces</string>
- <string name="PicksClassifiedsLoadingText">Chargement...</string>
- <string name="MultiPreviewTitle">Prévisualiser</string>
- <string name="MultiPropertiesTitle">Propriétés</string>
- <string name="InvOfferAnObjectNamed">Un objet appelé</string>
- <string name="InvOfferOwnedByGroup">possédé par le groupe</string>
- <string name="InvOfferOwnedByUnknownGroup">possédé par un groupe inconnu</string>
- <string name="InvOfferOwnedBy">possédé par</string>
- <string name="InvOfferOwnedByUnknownUser">possédé par un résident inconnu</string>
- <string name="InvOfferGaveYou">vous a donné</string>
- <string name="InvOfferDecline">Vous refusez l'offre [DESC] de &lt;nolink&gt;[NAME]&lt;/nolink&gt;.</string>
- <string name="GroupMoneyTotal">Total</string>
- <string name="GroupMoneyBought">acheté</string>
- <string name="GroupMoneyPaidYou">vous a payé</string>
- <string name="GroupMoneyPaidInto">payé</string>
- <string name="GroupMoneyBoughtPassTo">a acheté un pass à</string>
- <string name="GroupMoneyPaidFeeForEvent">a payé des frais pour un événement</string>
- <string name="GroupMoneyPaidPrizeForEvent">a payé un prix pour un événement</string>
- <string name="GroupMoneyBalance">Solde</string>
- <string name="GroupMoneyCredits">Crédits</string>
- <string name="GroupMoneyDebits">Débits</string>
- <string name="GroupMoneyDate">[weekday,datetime,utc] [day,datetime,utc] [mth,datetime,utc] [year,datetime,utc]</string>
- <string name="AcquiredItems">Objets acquis</string>
- <string name="Cancel">Annuler</string>
- <string name="UploadingCosts">Le chargement de [NAME] coûte [AMOUNT] L$</string>
- <string name="BuyingCosts">Cet achat coûte [AMOUNT] L$</string>
- <string name="UnknownFileExtension">Extension de fichier inconnue .%s
-.wav, .tga, .bmp, .jpg, .jpeg, ou .bvh acceptés</string>
- <string name="MuteObject2">Ignorer</string>
- <string name="MuteAvatar">Ignorer</string>
- <string name="UnmuteObject">Ne plus ignorer</string>
- <string name="UnmuteAvatar">Ne plus ignorer</string>
- <string name="AddLandmarkNavBarMenu">Ajouter à mes repères...</string>
- <string name="EditLandmarkNavBarMenu">Modifier mon repère...</string>
- <string name="accel-mac-control">⌃</string>
- <string name="accel-mac-command">⌘</string>
- <string name="accel-mac-option">⌥</string>
- <string name="accel-mac-shift">⇧</string>
- <string name="accel-win-control">Ctrl+</string>
- <string name="accel-win-alt">Alt+</string>
- <string name="accel-win-shift">Maj+</string>
- <string name="FileSaved">Fichier enregistré</string>
- <string name="Receiving">Réception</string>
- <string name="AM">Matin</string>
- <string name="PM">Après-midi</string>
- <string name="PST">PST</string>
- <string name="PDT">PDT</string>
- <string name="Direction_Forward">Avant</string>
- <string name="Direction_Left">Gauche</string>
- <string name="Direction_Right">Droite</string>
- <string name="Direction_Back">Arrière</string>
- <string name="Direction_North">Nord</string>
- <string name="Direction_South">Sud</string>
- <string name="Direction_West">Ouest</string>
- <string name="Direction_East">Est</string>
- <string name="Direction_Up">Haut</string>
- <string name="Direction_Down">Bas</string>
- <string name="Any Category">Toutes catégories</string>
- <string name="Shopping">Shopping</string>
- <string name="Land Rental">Terrains à louer</string>
- <string name="Property Rental">Propriétés à louer</string>
- <string name="Special Attraction">Divertissements</string>
- <string name="New Products">Nouveaux produits</string>
- <string name="Employment">Emplois</string>
- <string name="Wanted">Offres</string>
- <string name="Service">Services</string>
- <string name="Personal">Divers</string>
- <string name="None">Aucun</string>
- <string name="Linden Location">Appartenant aux Lindens</string>
- <string name="Adult">Adulte</string>
- <string name="Arts&amp;Culture">Arts et culture</string>
- <string name="Business">Business</string>
- <string name="Educational">Éducation</string>
- <string name="Gaming">Jeux</string>
- <string name="Hangout">Favoris</string>
- <string name="Newcomer Friendly">Accueil pour les nouveaux</string>
- <string name="Parks&amp;Nature">Parcs et nature</string>
- <string name="Residential">Résidentiel</string>
- <string name="Stage">Phase</string>
- <string name="Other">Autre</string>
- <string name="Rental">Location</string>
- <string name="Any">Aucun</string>
- <string name="You">Vous</string>
- <string name=":">:</string>
- <string name=",">,</string>
- <string name="...">...</string>
- <string name="***">***</string>
- <string name="(">(</string>
- <string name=")">)</string>
- <string name=".">.</string>
- <string name="'">'</string>
- <string name="---">---</string>
- <string name="Multiple Media">Médias multiples</string>
- <string name="Play Media">Lire/pauser le média</string>
- <string name="IntelDriverPage">http://www.intel.com/p/fr_FR/support/detect/graphics</string>
- <string name="NvidiaDriverPage">http://www.nvidia.com/Download/index.aspx?lang=fr</string>
- <string name="AMDDriverPage">http://support.amd.com/us/Pages/AMDSupportHub.aspx</string>
- <string name="MBCmdLineError">Une erreur est survenue lors de la lecture de la ligne de commande.
+ <string name="GroupOwned">
+ Propriété du groupe
+ </string>
+ <string name="Public">
+ Public
+ </string>
+ <string name="LocalSettings">
+ Réglages locaux
+ </string>
+ <string name="RegionSettings">
+ Réglages de la région
+ </string>
+ <string name="NoEnvironmentSettings">
+ Cette région ne prend pas en charge les paramètres environnementaux.
+ </string>
+ <string name="EnvironmentSun">
+ Soleil
+ </string>
+ <string name="EnvironmentMoon">
+ Lune
+ </string>
+ <string name="EnvironmentBloom">
+ Éclat
+ </string>
+ <string name="EnvironmentCloudNoise">
+ Bruit du nuage
+ </string>
+ <string name="EnvironmentNormalMap">
+ Carte normale
+ </string>
+ <string name="EnvironmentTransparent">
+ Transparent
+ </string>
+ <string name="ClassifiedClicksTxt">
+ Clics : [TELEPORT] téléportation, [MAP] carte, [PROFILE] profil
+ </string>
+ <string name="ClassifiedUpdateAfterPublish">
+ (mise à jour après la publication)
+ </string>
+ <string name="NoPicksClassifiedsText">
+ Vous n'avez pas créé de favoris ni de petites annonces Cliquez sur le bouton Plus pour créer un favori ou une petite annonce.
+ </string>
+ <string name="NoPicksText">
+ Vous n'avez pas créé de favoris Cliquer sur le bouton Nouveau pour créer un favori
+ </string>
+ <string name="NoClassifiedsText">
+ Vous n'avez pas créé de petites annonces Cliquer sur le bouton Nouveau pour créer une petite annonce.
+ </string>
+ <string name="NoAvatarPicksClassifiedsText">
+ L'utilisateur n'a ni favoris ni petites annonces.
+ </string>
+ <string name="NoAvatarPicksText">
+ L'utilisateur n'a pas de favoris
+ </string>
+ <string name="NoAvatarClassifiedsText">
+ L'utilisateur n'a pas de petites annonces
+ </string>
+ <string name="PicksClassifiedsLoadingText">
+ Chargement...
+ </string>
+ <string name="MultiPreviewTitle">
+ Prévisualiser
+ </string>
+ <string name="MultiPropertiesTitle">
+ Propriétés
+ </string>
+ <string name="InvOfferAnObjectNamed">
+ Un objet appelé
+ </string>
+ <string name="InvOfferOwnedByGroup">
+ possédé par le groupe
+ </string>
+ <string name="InvOfferOwnedByUnknownGroup">
+ possédé par un groupe inconnu
+ </string>
+ <string name="InvOfferOwnedBy">
+ possédé par
+ </string>
+ <string name="InvOfferOwnedByUnknownUser">
+ possédé par un résident inconnu
+ </string>
+ <string name="InvOfferGaveYou">
+ vous a donné
+ </string>
+ <string name="InvOfferDecline">
+ Vous refusez l'offre [DESC] de &lt;nolink&gt;[NAME]&lt;/nolink&gt;.
+ </string>
+ <string name="GroupMoneyTotal">
+ Total
+ </string>
+ <string name="GroupMoneyBought">
+ acheté
+ </string>
+ <string name="GroupMoneyPaidYou">
+ vous a payé
+ </string>
+ <string name="GroupMoneyPaidInto">
+ payé
+ </string>
+ <string name="GroupMoneyBoughtPassTo">
+ a acheté un pass à
+ </string>
+ <string name="GroupMoneyPaidFeeForEvent">
+ a payé des frais pour un événement
+ </string>
+ <string name="GroupMoneyPaidPrizeForEvent">
+ a payé un prix pour un événement
+ </string>
+ <string name="GroupMoneyBalance">
+ Solde
+ </string>
+ <string name="GroupMoneyCredits">
+ Crédits
+ </string>
+ <string name="GroupMoneyDebits">
+ Débits
+ </string>
+ <string name="GroupMoneyDate">
+ [weekday,datetime,utc] [day,datetime,utc] [mth,datetime,utc] [year,datetime,utc]
+ </string>
+ <string name="AcquiredItems">
+ Objets acquis
+ </string>
+ <string name="Cancel">
+ Annuler
+ </string>
+ <string name="UploadingCosts">
+ Le chargement de [NAME] coûte [AMOUNT] L$
+ </string>
+ <string name="BuyingCosts">
+ Cet achat coûte [AMOUNT] L$
+ </string>
+ <string name="UnknownFileExtension">
+ Extension de fichier inconnue .%s
+.wav, .tga, .bmp, .jpg, .jpeg, ou .bvh acceptés
+ </string>
+ <string name="MuteObject2">
+ Ignorer
+ </string>
+ <string name="MuteAvatar">
+ Ignorer
+ </string>
+ <string name="UnmuteObject">
+ Ne plus ignorer
+ </string>
+ <string name="UnmuteAvatar">
+ Ne plus ignorer
+ </string>
+ <string name="AddLandmarkNavBarMenu">
+ Ajouter à mes repères...
+ </string>
+ <string name="EditLandmarkNavBarMenu">
+ Modifier mon repère...
+ </string>
+ <string name="accel-mac-control">
+ ⌃
+ </string>
+ <string name="accel-mac-command">
+ ⌘
+ </string>
+ <string name="accel-mac-option">
+ ⌥
+ </string>
+ <string name="accel-mac-shift">
+ ⇧
+ </string>
+ <string name="accel-win-control">
+ Ctrl+
+ </string>
+ <string name="accel-win-alt">
+ Alt+
+ </string>
+ <string name="accel-win-shift">
+ Maj+
+ </string>
+ <string name="FileSaved">
+ Fichier enregistré
+ </string>
+ <string name="Receiving">
+ Réception
+ </string>
+ <string name="AM">
+ Matin
+ </string>
+ <string name="PM">
+ Après-midi
+ </string>
+ <string name="PST">
+ PST
+ </string>
+ <string name="PDT">
+ PDT
+ </string>
+ <string name="Direction_Forward">
+ Avant
+ </string>
+ <string name="Direction_Left">
+ Gauche
+ </string>
+ <string name="Direction_Right">
+ Droite
+ </string>
+ <string name="Direction_Back">
+ Arrière
+ </string>
+ <string name="Direction_North">
+ Nord
+ </string>
+ <string name="Direction_South">
+ Sud
+ </string>
+ <string name="Direction_West">
+ Ouest
+ </string>
+ <string name="Direction_East">
+ Est
+ </string>
+ <string name="Direction_Up">
+ Haut
+ </string>
+ <string name="Direction_Down">
+ Bas
+ </string>
+ <string name="Any Category">
+ Toutes catégories
+ </string>
+ <string name="Shopping">
+ Shopping
+ </string>
+ <string name="Land Rental">
+ Terrains à louer
+ </string>
+ <string name="Property Rental">
+ Propriétés à louer
+ </string>
+ <string name="Special Attraction">
+ Divertissements
+ </string>
+ <string name="New Products">
+ Nouveaux produits
+ </string>
+ <string name="Employment">
+ Emplois
+ </string>
+ <string name="Wanted">
+ Offres
+ </string>
+ <string name="Service">
+ Services
+ </string>
+ <string name="Personal">
+ Divers
+ </string>
+ <string name="None">
+ Aucun
+ </string>
+ <string name="Linden Location">
+ Appartenant aux Lindens
+ </string>
+ <string name="Adult">
+ Adulte
+ </string>
+ <string name="Arts&amp;Culture">
+ Arts et culture
+ </string>
+ <string name="Business">
+ Business
+ </string>
+ <string name="Educational">
+ Éducation
+ </string>
+ <string name="Gaming">
+ Jeux
+ </string>
+ <string name="Hangout">
+ Favoris
+ </string>
+ <string name="Newcomer Friendly">
+ Accueil pour les nouveaux
+ </string>
+ <string name="Parks&amp;Nature">
+ Parcs et nature
+ </string>
+ <string name="Residential">
+ Résidentiel
+ </string>
+ <string name="Stage">
+ Phase
+ </string>
+ <string name="Other">
+ Autre
+ </string>
+ <string name="Rental">
+ Location
+ </string>
+ <string name="Any">
+ Aucun
+ </string>
+ <string name="You">
+ Vous
+ </string>
+ <string name=":">
+ :
+ </string>
+ <string name=",">
+ ,
+ </string>
+ <string name="...">
+ ...
+ </string>
+ <string name="***">
+ ***
+ </string>
+ <string name="(">
+ (
+ </string>
+ <string name=")">
+ )
+ </string>
+ <string name=".">
+ .
+ </string>
+ <string name="'">
+ '
+ </string>
+ <string name="---">
+ ---
+ </string>
+ <string name="Multiple Media">
+ Médias multiples
+ </string>
+ <string name="Play Media">
+ Lire/pauser le média
+ </string>
+ <string name="IntelDriverPage">
+ http://www.intel.com/p/fr_FR/support/detect/graphics
+ </string>
+ <string name="NvidiaDriverPage">
+ http://www.nvidia.com/Download/index.aspx?lang=fr
+ </string>
+ <string name="AMDDriverPage">
+ http://support.amd.com/us/Pages/AMDSupportHub.aspx
+ </string>
+ <string name="MBCmdLineError">
+ Une erreur est survenue lors de la lecture de la ligne de commande.
Merci de consulter : http://wiki.secondlife.com/wiki/Client_parameters
-Erreur :</string>
- <string name="MBCmdLineUsg">[APP_NAME] - Utilisation de la ligne de commande :</string>
- <string name="MBUnableToAccessFile">[APP_NAME] ne peut accéder à un fichier requis.
+Erreur :
+ </string>
+ <string name="MBCmdLineUsg">
+ [APP_NAME] - Utilisation de la ligne de commande :
+ </string>
+ <string name="MBUnableToAccessFile">
+ [APP_NAME] ne peut accéder à un fichier requis.
Cela vient du fait que quelqu'un a ouvert plusieurs copies ou que votre système pense qu'un fichier est ouvert.
Si ce message persiste, veuillez redémarrer votre ordinateur.
-Si le problème persiste, vous devrez peut-être complètement désinstaller puis réinstaller [APP_NAME].</string>
- <string name="MBFatalError">Erreur fatale</string>
- <string name="MBRequiresAltiVec">[APP_NAME] nécessite un microprocesseur AltiVec (version G4 ou antérieure).</string>
- <string name="MBAlreadyRunning">[APP_NAME] est déjà en cours d'exécution.
+Si le problème persiste, vous devrez peut-être complètement désinstaller puis réinstaller [APP_NAME].
+ </string>
+ <string name="MBFatalError">
+ Erreur fatale
+ </string>
+ <string name="MBRequiresAltiVec">
+ [APP_NAME] nécessite un microprocesseur AltiVec (version G4 ou antérieure).
+ </string>
+ <string name="MBAlreadyRunning">
+ [APP_NAME] est déjà en cours d'exécution.
Vérifiez si une version minimisée du programme apparaît dans votre barre de tâches.
-Si ce message persiste, redémarrez votre ordinateur.</string>
- <string name="MBFrozenCrashed">[APP_NAME] semble avoir crashé lors de l'utilisation précédente.
-Voulez-vous envoyer un rapport de crash ?</string>
- <string name="MBAlert">Notification</string>
- <string name="MBNoDirectX">[APP_NAME] ne peut détecter DirectX 9.0b ou une version supérieure.
+Si ce message persiste, redémarrez votre ordinateur.
+ </string>
+ <string name="MBFrozenCrashed">
+ [APP_NAME] semble avoir crashé lors de l'utilisation précédente.
+Voulez-vous envoyer un rapport de crash ?
+ </string>
+ <string name="MBAlert">
+ Notification
+ </string>
+ <string name="MBNoDirectX">
+ [APP_NAME] ne peut détecter DirectX 9.0b ou une version supérieure.
[APP_NAME] utilise DirectX pour détecter les matériels et/ou les pilotes qui ne sont pas à jour et peuvent causer des problèmes de stabilité, de performance ou des plantages. Bien que vous puissiez utiliser [APP_NAME] sans DirectX, nous vous recommandons de l'utiliser avec DirectX 9.0b.
-Voulez-vous continuer ?</string>
- <string name="MBWarning">Avertissement</string>
- <string name="MBNoAutoUpdate">Les mises à jour automatiques n'existent pas encore pour Linux.
-Veuillez télécharger la dernière version sur www.secondlife.com.</string>
- <string name="MBRegClassFailed">RegisterClass a échoué</string>
- <string name="MBError">Erreur</string>
- <string name="MBFullScreenErr">Impossible d'ouvrir le mode plein écran à [WIDTH] x [HEIGHT].
-Utilisation du mode fenêtré.</string>
- <string name="MBDestroyWinFailed">Erreur de fermeture lors de la destruction de la fenêtre (DestroyWindow() a échoué)</string>
- <string name="MBShutdownErr">Erreur de fermeture</string>
- <string name="MBDevContextErr">Impossible de créer le contexte GL</string>
- <string name="MBPixelFmtErr">Impossible de trouver le format pixel approprié</string>
- <string name="MBPixelFmtDescErr">Impossible de trouver la description du format pixel</string>
- <string name="MBTrueColorWindow">[APP_NAME] nécessite True Color (32 bits) pour s'exécuter.
-Accédez aux paramètres d'affichage de votre ordinateur et réglez le mode couleur sur 32 bits.</string>
- <string name="MBAlpha">[APP_NAME] ne peut pas s'exécuter, car il n'y pas de canal alpha 8 bits accessible. En général, ceci vient de problèmes avec le pilote de la carte vidéo.
+Voulez-vous continuer ?
+ </string>
+ <string name="MBWarning">
+ Avertissement
+ </string>
+ <string name="MBNoAutoUpdate">
+ Les mises à jour automatiques n'existent pas encore pour Linux.
+Veuillez télécharger la dernière version sur www.secondlife.com.
+ </string>
+ <string name="MBRegClassFailed">
+ RegisterClass a échoué
+ </string>
+ <string name="MBError">
+ Erreur
+ </string>
+ <string name="MBFullScreenErr">
+ Impossible d'ouvrir le mode plein écran à [WIDTH] x [HEIGHT].
+Utilisation du mode fenêtré.
+ </string>
+ <string name="MBDestroyWinFailed">
+ Erreur de fermeture lors de la destruction de la fenêtre (DestroyWindow() a échoué)
+ </string>
+ <string name="MBShutdownErr">
+ Erreur de fermeture
+ </string>
+ <string name="MBDevContextErr">
+ Impossible de créer le contexte GL
+ </string>
+ <string name="MBPixelFmtErr">
+ Impossible de trouver le format pixel approprié
+ </string>
+ <string name="MBPixelFmtDescErr">
+ Impossible de trouver la description du format pixel
+ </string>
+ <string name="MBTrueColorWindow">
+ [APP_NAME] nécessite True Color (32 bits) pour s'exécuter.
+Accédez aux paramètres d'affichage de votre ordinateur et réglez le mode couleur sur 32 bits.
+ </string>
+ <string name="MBAlpha">
+ [APP_NAME] ne peut pas s'exécuter, car il n'y pas de canal alpha 8 bits accessible. En général, ceci vient de problèmes avec le pilote de la carte vidéo.
Assurez-vous d'avoir installé le pilote de carte vidéo le plus récent possible.
Assurez-vous aussi que votre écran est réglé sur True Color (32 bits) sous Panneau de configuration &gt; Affichage &gt; Paramètres.
-Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].</string>
- <string name="MBPixelFmtSetErr">Impossible de trouver le format pixel approprié</string>
- <string name="MBGLContextErr">Impossible de créer le contexte de rendu GL</string>
- <string name="MBGLContextActErr">Impossible d'activer le contexte de rendu GL</string>
- <string name="MBVideoDrvErr">[APP_NAME] ne peut pas s'exécuter car les pilotes de votre carte vidéo n'ont pas été installés correctement, ne sont pas à jour, ou sont pour du matériel non pris en charge. Assurez-vous d'avoir des pilotes de cartes vidéos récents, et même si vous avez les plus récents, réinstallez-les.
+Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
+ </string>
+ <string name="MBPixelFmtSetErr">
+ Impossible de trouver le format pixel approprié
+ </string>
+ <string name="MBGLContextErr">
+ Impossible de créer le contexte de rendu GL
+ </string>
+ <string name="MBGLContextActErr">
+ Impossible d'activer le contexte de rendu GL
+ </string>
+ <string name="MBVideoDrvErr">
+ [APP_NAME] ne peut pas s'exécuter car les pilotes de votre carte vidéo n'ont pas été installés correctement, ne sont pas à jour, ou sont pour du matériel non pris en charge. Assurez-vous d'avoir des pilotes de cartes vidéos récents, et même si vous avez les plus récents, réinstallez-les.
-Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].</string>
- <string name="5 O'Clock Shadow">Peu</string>
- <string name="All White">Tout blancs</string>
- <string name="Anime Eyes">Grand yeux</string>
- <string name="Arced">Arqués</string>
- <string name="Arm Length">Longueur des bras</string>
- <string name="Attached">Attachés</string>
- <string name="Attached Earlobes">Lobes</string>
- <string name="Back Fringe">Mèches de derrière</string>
- <string name="Baggy">Plus</string>
- <string name="Bangs">Frange</string>
- <string name="Beady Eyes">Yeux perçants</string>
- <string name="Belly Size">Taille du ventre</string>
- <string name="Big">Plus</string>
- <string name="Big Butt">Grosses fesses</string>
- <string name="Big Hair Back">Volume : Derrière</string>
- <string name="Big Hair Front">Volume : Devant</string>
- <string name="Big Hair Top">Volume : Haut</string>
- <string name="Big Head">Plus</string>
- <string name="Big Pectorals">Gros pectoraux</string>
- <string name="Big Spikes">Spikes</string>
- <string name="Black">Noir</string>
- <string name="Blonde">Blond</string>
- <string name="Blonde Hair">Cheveux blonds</string>
- <string name="Blush">Blush</string>
- <string name="Blush Color">Couleur du blush</string>
- <string name="Blush Opacity">Opacité du blush</string>
- <string name="Body Definition">Contour du corps</string>
- <string name="Body Fat">Graisse</string>
- <string name="Body Freckles">Grains de beauté</string>
- <string name="Body Thick">Plus</string>
- <string name="Body Thickness">Épaisseur du corps</string>
- <string name="Body Thin">Moins</string>
- <string name="Bow Legged">Jambes arquées</string>
- <string name="Breast Buoyancy">Hauteur des seins</string>
- <string name="Breast Cleavage">Clivage</string>
- <string name="Breast Size">Taille des seins</string>
- <string name="Bridge Width">Arête du nez</string>
- <string name="Broad">Large</string>
- <string name="Brow Size">Taille du front</string>
- <string name="Bug Eyes">Yeux globuleux</string>
- <string name="Bugged Eyes">Yeux globuleux</string>
- <string name="Bulbous">En bulbe</string>
- <string name="Bulbous Nose">Nez en bulbe</string>
- <string name="Breast Physics Mass">Masse des seins</string>
- <string name="Breast Physics Smoothing">Lissage des seins</string>
- <string name="Breast Physics Gravity">Gravité des seins</string>
- <string name="Breast Physics Drag">Résistance de l'air sur les seins</string>
- <string name="Breast Physics InOut Max Effect">Effet max.</string>
- <string name="Breast Physics InOut Spring">Élasticité</string>
- <string name="Breast Physics InOut Gain">Amplification</string>
- <string name="Breast Physics InOut Damping">Amortissement</string>
- <string name="Breast Physics UpDown Max Effect">Effet max.</string>
- <string name="Breast Physics UpDown Spring">Élasticité</string>
- <string name="Breast Physics UpDown Gain">Amplification</string>
- <string name="Breast Physics UpDown Damping">Amortissement</string>
- <string name="Breast Physics LeftRight Max Effect">Effet max.</string>
- <string name="Breast Physics LeftRight Spring">Élasticité</string>
- <string name="Breast Physics LeftRight Gain">Amplification</string>
- <string name="Breast Physics LeftRight Damping">Amortissement</string>
- <string name="Belly Physics Mass">Masse du ventre</string>
- <string name="Belly Physics Smoothing">Lissage du ventre</string>
- <string name="Belly Physics Gravity">Gravité du ventre</string>
- <string name="Belly Physics Drag">Résistance de l'air sur le ventre</string>
- <string name="Belly Physics UpDown Max Effect">Effet max.</string>
- <string name="Belly Physics UpDown Spring">Élasticité</string>
- <string name="Belly Physics UpDown Gain">Amplification</string>
- <string name="Belly Physics UpDown Damping">Amortissement</string>
- <string name="Butt Physics Mass">Masse des fesses</string>
- <string name="Butt Physics Smoothing">Lissage des fesses</string>
- <string name="Butt Physics Gravity">Gravité des fesses</string>
- <string name="Butt Physics Drag">Résistance de l'air sur les fesses</string>
- <string name="Butt Physics UpDown Max Effect">Effet max.</string>
- <string name="Butt Physics UpDown Spring">Élasticité</string>
- <string name="Butt Physics UpDown Gain">Amplification</string>
- <string name="Butt Physics UpDown Damping">Amortissement</string>
- <string name="Butt Physics LeftRight Max Effect">Effet max.</string>
- <string name="Butt Physics LeftRight Spring">Élasticité</string>
- <string name="Butt Physics LeftRight Gain">Amplification</string>
- <string name="Butt Physics LeftRight Damping">Amortissement</string>
- <string name="Bushy Eyebrows">Sourcils touffus</string>
- <string name="Bushy Hair">Beaucoup</string>
- <string name="Butt Size">Taille des fesses</string>
- <string name="Butt Gravity">Gravité des fesses</string>
- <string name="bustle skirt">Jupe gonflante</string>
- <string name="no bustle">Pas gonflante</string>
- <string name="more bustle">Plus gonflante</string>
- <string name="Chaplin">Moins</string>
- <string name="Cheek Bones">Pommettes</string>
- <string name="Chest Size">Taille de la poitrine</string>
- <string name="Chin Angle">Angle du menton</string>
- <string name="Chin Cleft">Fente du menton</string>
- <string name="Chin Curtains">Favoris</string>
- <string name="Chin Depth">Profondeur</string>
- <string name="Chin Heavy">Menton lourd</string>
- <string name="Chin In">Menton rentré</string>
- <string name="Chin Out">Menton sorti</string>
- <string name="Chin-Neck">Menton-cou</string>
- <string name="Clear">Clair</string>
- <string name="Cleft">Fendu</string>
- <string name="Close Set Eyes">Yeux rapprochés</string>
- <string name="Closed">Fermé(s)</string>
- <string name="Closed Back">Fermé à l'arrière</string>
- <string name="Closed Front">Fermé devant</string>
- <string name="Closed Left">Fermé à gauche</string>
- <string name="Closed Right">Fermé à droite</string>
- <string name="Coin Purse">Mini</string>
- <string name="Collar Back">Col arrière</string>
- <string name="Collar Front">Col devant</string>
- <string name="Corner Down">Coin vers le bas</string>
- <string name="Corner Up">Coin vers le haut</string>
- <string name="Creased">Fripée</string>
- <string name="Crooked Nose">Déviation du nez</string>
- <string name="Cuff Flare">Jambes</string>
- <string name="Dark">Sombre</string>
- <string name="Dark Green">Vert foncé</string>
- <string name="Darker">Plus foncé</string>
- <string name="Deep">Profonde</string>
- <string name="Default Heels">Talons par défaut</string>
- <string name="Dense">Dense</string>
- <string name="Double Chin">Double menton</string>
- <string name="Downturned">Pointant vers le bas</string>
- <string name="Duffle Bag">Maxi</string>
- <string name="Ear Angle">Angle de l'oreille</string>
- <string name="Ear Size">Taille</string>
- <string name="Ear Tips">Extrémités</string>
- <string name="Egg Head">Proéminence</string>
- <string name="Eye Bags">Cernes</string>
- <string name="Eye Color">Couleur des yeux</string>
- <string name="Eye Depth">Profondeur</string>
- <string name="Eye Lightness">Clarté</string>
- <string name="Eye Opening">Ouverture</string>
- <string name="Eye Pop">Œil proéminent</string>
- <string name="Eye Size">Taille de l'œil</string>
- <string name="Eye Spacing">Espacement</string>
- <string name="Eyebrow Arc">Arc</string>
- <string name="Eyebrow Density">Épaisseur sourcils</string>
- <string name="Eyebrow Height">Hauteur</string>
- <string name="Eyebrow Points">Direction</string>
- <string name="Eyebrow Size">Taille</string>
- <string name="Eyelash Length">Longueur des cils</string>
- <string name="Eyeliner">Eyeliner</string>
- <string name="Eyeliner Color">Couleur de l'eyeliner</string>
- <string name="Eyes Bugged">Yeux globuleux</string>
- <string name="Face Shear">Visage</string>
- <string name="Facial Definition">Définition</string>
- <string name="Far Set Eyes">Yeux écartés</string>
- <string name="Fat Lips">Lèvres épaisses</string>
- <string name="Female">Femme</string>
- <string name="Fingerless">Sans doigts</string>
- <string name="Fingers">Doigts</string>
- <string name="Flared Cuffs">Jambes larges</string>
- <string name="Flat">Moins</string>
- <string name="Flat Butt">Fesses plates</string>
- <string name="Flat Head">Tête plate</string>
- <string name="Flat Toe">Orteil plat</string>
- <string name="Foot Size">Pointure</string>
- <string name="Forehead Angle">Angle du front</string>
- <string name="Forehead Heavy">Front lourd</string>
- <string name="Freckles">Tâches de rousseur</string>
- <string name="Front Fringe">Mèches de devant</string>
- <string name="Full Back">Arrière touffu</string>
- <string name="Full Eyeliner">Eyeliner marqué</string>
- <string name="Full Front">Devant touffu</string>
- <string name="Full Hair Sides">Côtés touffus</string>
- <string name="Full Sides">Côtés touffus</string>
- <string name="Glossy">Brillant</string>
- <string name="Glove Fingers">Gants avec doigts</string>
- <string name="Glove Length">Longueur</string>
- <string name="Hair">Cheveux</string>
- <string name="Hair Back">Cheveux : Derrière</string>
- <string name="Hair Front">Cheveux : Devant</string>
- <string name="Hair Sides">Cheveux : Côtés</string>
- <string name="Hair Sweep">Sens de la coiffure</string>
- <string name="Hair Thickess">Épaisseur cheveux</string>
- <string name="Hair Thickness">Épaisseur cheveux</string>
- <string name="Hair Tilt">Inclinaison</string>
- <string name="Hair Tilted Left">Vers la gauche</string>
- <string name="Hair Tilted Right">Vers la droite</string>
- <string name="Hair Volume">Cheveux : Volume</string>
- <string name="Hand Size">Taille de la main</string>
- <string name="Handlebars">Plus</string>
- <string name="Head Length">Longueur</string>
- <string name="Head Shape">Forme</string>
- <string name="Head Size">Taille</string>
- <string name="Head Stretch">Allongement</string>
- <string name="Heel Height">Talons</string>
- <string name="Heel Shape">Forme des talons</string>
- <string name="Height">Taille</string>
- <string name="High">Haut</string>
- <string name="High Heels">Talons hauts</string>
- <string name="High Jaw">Haut</string>
- <string name="High Platforms">Haute</string>
- <string name="High and Tight">Haut et serré</string>
- <string name="Higher">Plus élevé</string>
- <string name="Hip Length">Longueur hanche</string>
- <string name="Hip Width">Largeur hanche</string>
- <string name="Hover">Survol</string>
- <string name="In">Rentré</string>
- <string name="In Shdw Color">Couleur ombre interne</string>
- <string name="In Shdw Opacity">Opacité ombre interne</string>
- <string name="Inner Eye Corner">Coin interne</string>
- <string name="Inner Eye Shadow">Ombre de l'œil interne</string>
- <string name="Inner Shadow">Ombre interne</string>
- <string name="Jacket Length">Longueur de la veste</string>
- <string name="Jacket Wrinkles">Plis de la veste</string>
- <string name="Jaw Angle">Angle mâchoire</string>
- <string name="Jaw Jut">Saillie mâchoire</string>
- <string name="Jaw Shape">Mâchoire</string>
- <string name="Join">Rapprochés</string>
- <string name="Jowls">Bajoues</string>
- <string name="Knee Angle">Angle du genou</string>
- <string name="Knock Kneed">Genoux rapprochés</string>
- <string name="Large">Plus</string>
- <string name="Large Hands">Grandes mains</string>
- <string name="Left Part">Raie à gauche</string>
- <string name="Leg Length">Longueur</string>
- <string name="Leg Muscles">Muscles</string>
- <string name="Less">Moins</string>
- <string name="Less Body Fat">Moins</string>
- <string name="Less Curtains">Moins</string>
- <string name="Less Freckles">Moins</string>
- <string name="Less Full">Moins</string>
- <string name="Less Gravity">Moins</string>
- <string name="Less Love">Moins</string>
- <string name="Less Muscles">Moins</string>
- <string name="Less Muscular">Moins</string>
- <string name="Less Rosy">Moins</string>
- <string name="Less Round">Moins ronde</string>
- <string name="Less Saddle">Moins</string>
- <string name="Less Square">Moins carrée</string>
- <string name="Less Volume">Moins</string>
- <string name="Less soul">Moins</string>
- <string name="Lighter">Plus léger</string>
- <string name="Lip Cleft">Fente labiale</string>
- <string name="Lip Cleft Depth">Prof. fente labiale</string>
- <string name="Lip Fullness">Volume des lèvres</string>
- <string name="Lip Pinkness">Rougeur des lèvres</string>
- <string name="Lip Ratio">Proportion des lèvres</string>
- <string name="Lip Thickness">Épaisseur</string>
- <string name="Lip Width">Largeur</string>
- <string name="Lipgloss">Brillant à lèvres</string>
- <string name="Lipstick">Rouge à lèvres</string>
- <string name="Lipstick Color">Couleur du rouge à lèvres</string>
- <string name="Long">Plus</string>
- <string name="Long Head">Tête longue</string>
- <string name="Long Hips">Hanches longues</string>
- <string name="Long Legs">Jambes longues</string>
- <string name="Long Neck">Long cou</string>
- <string name="Long Pigtails">Longues couettes</string>
- <string name="Long Ponytail">Longue queue de cheval</string>
- <string name="Long Torso">Torse long</string>
- <string name="Long arms">Bras longs</string>
- <string name="Loose Pants">Pantalons amples</string>
- <string name="Loose Shirt">Chemise ample</string>
- <string name="Loose Sleeves">Manches amples</string>
- <string name="Love Handles">Poignées d'amour</string>
- <string name="Low">Bas</string>
- <string name="Low Heels">Talons bas</string>
- <string name="Low Jaw">Bas</string>
- <string name="Low Platforms">Basse</string>
- <string name="Low and Loose">Bas et ample</string>
- <string name="Lower">Abaisser</string>
- <string name="Lower Bridge">Arête inférieure</string>
- <string name="Lower Cheeks">Joue inférieure</string>
- <string name="Male">Homme</string>
- <string name="Middle Part">Raie au milieu</string>
- <string name="More">Plus</string>
- <string name="More Blush">Plus</string>
- <string name="More Body Fat">Plus</string>
- <string name="More Curtains">Plus</string>
- <string name="More Eyeshadow">Plus</string>
- <string name="More Freckles">Plus</string>
- <string name="More Full">Plus</string>
- <string name="More Gravity">Plus</string>
- <string name="More Lipstick">Plus</string>
- <string name="More Love">Plus</string>
- <string name="More Lower Lip">Inférieure plus grosse</string>
- <string name="More Muscles">Plus</string>
- <string name="More Muscular">Plus</string>
- <string name="More Rosy">Plus</string>
- <string name="More Round">Plus</string>
- <string name="More Saddle">Plus</string>
- <string name="More Sloped">Plus</string>
- <string name="More Square">Plus</string>
- <string name="More Upper Lip">Supérieure plus grosse</string>
- <string name="More Vertical">Plus</string>
- <string name="More Volume">Plus</string>
- <string name="More soul">Plus</string>
- <string name="Moustache">Moustache</string>
- <string name="Mouth Corner">Coin de la bouche</string>
- <string name="Mouth Position">Position</string>
- <string name="Mowhawk">Mowhawk</string>
- <string name="Muscular">Musclé</string>
- <string name="Mutton Chops">Longs</string>
- <string name="Nail Polish">Vernis à ongles</string>
- <string name="Nail Polish Color">Couleur du vernis</string>
- <string name="Narrow">Moins</string>
- <string name="Narrow Back">Arrière étroit</string>
- <string name="Narrow Front">Devant étroit</string>
- <string name="Narrow Lips">Lèvres étroites</string>
- <string name="Natural">Naturel</string>
- <string name="Neck Length">Longueur du cou</string>
- <string name="Neck Thickness">Épaisseur du cou</string>
- <string name="No Blush">Pas de blush</string>
- <string name="No Eyeliner">Pas d'eyeliner</string>
- <string name="No Eyeshadow">Pas d'ombre à paupières</string>
- <string name="No Lipgloss">Pas de brillant à lèvres</string>
- <string name="No Lipstick">Pas de rouge à lèvres</string>
- <string name="No Part">Pas de raie</string>
- <string name="No Polish">Pas de vernis</string>
- <string name="No Red">Pas de rouge</string>
- <string name="No Spikes">Pas de spikes</string>
- <string name="No White">Pas de blanc</string>
- <string name="No Wrinkles">Pas de rides</string>
- <string name="Normal Lower">Normal plus bas</string>
- <string name="Normal Upper">Normal plus haut</string>
- <string name="Nose Left">Nez à gauche</string>
- <string name="Nose Right">Nez à droite</string>
- <string name="Nose Size">Taille du nez</string>
- <string name="Nose Thickness">Épaisseur du nez</string>
- <string name="Nose Tip Angle">Angle bout du nez</string>
- <string name="Nose Tip Shape">Forme bout du nez</string>
- <string name="Nose Width">Largeur du nez</string>
- <string name="Nostril Division">Division narines</string>
- <string name="Nostril Width">Largeur narines</string>
- <string name="Opaque">Opaque</string>
- <string name="Open">Ouvert</string>
- <string name="Open Back">Derrière ouvert</string>
- <string name="Open Front">Devant ouvert</string>
- <string name="Open Left">Ouvert à gauche</string>
- <string name="Open Right">Ouvert à droite</string>
- <string name="Orange">Orange</string>
- <string name="Out">Sorti</string>
- <string name="Out Shdw Color">Couleur de l'ombre externe</string>
- <string name="Out Shdw Opacity">Opacité de l'ombre externe</string>
- <string name="Outer Eye Corner">Coin externe</string>
- <string name="Outer Eye Shadow">Ombre de l'œil externe</string>
- <string name="Outer Shadow">Ombre externe</string>
- <string name="Overbite">Rentrée</string>
- <string name="Package">Parties</string>
- <string name="Painted Nails">Ongles vernis</string>
- <string name="Pale">Pâle</string>
- <string name="Pants Crotch">Entrejambe</string>
- <string name="Pants Fit">Taille</string>
- <string name="Pants Length">Longueur</string>
- <string name="Pants Waist">Taille</string>
- <string name="Pants Wrinkles">Plis</string>
- <string name="Part">Raie</string>
- <string name="Part Bangs">Séparation frange</string>
- <string name="Pectorals">Pectoraux</string>
- <string name="Pigment">Pigmentation</string>
- <string name="Pigtails">Couettes</string>
- <string name="Pink">Rose</string>
- <string name="Pinker">Plus rose</string>
- <string name="Platform Height">Platef. (hauteur)</string>
- <string name="Platform Width">Platef. (largeur)</string>
- <string name="Pointy">Pointue</string>
- <string name="Pointy Heels">Talons pointus</string>
- <string name="Ponytail">Queue de cheval</string>
- <string name="Poofy Skirt">Jupe bouffante</string>
- <string name="Pop Left Eye">Œil gauche saillant</string>
- <string name="Pop Right Eye">Œil droit saillant</string>
- <string name="Puffy">Plus</string>
- <string name="Puffy Eyelids">Paup. gonflées</string>
- <string name="Rainbow Color">Couleur arc en ciel</string>
- <string name="Red Hair">Cheveux roux</string>
- <string name="Regular">Standard</string>
- <string name="Right Part">Raie à droite</string>
- <string name="Rosy Complexion">Teint rosé</string>
- <string name="Round">Rond</string>
- <string name="Ruddiness">Rougeur</string>
- <string name="Ruddy">Rouge</string>
- <string name="Rumpled Hair">Texture</string>
- <string name="Saddle Bags">Culotte de cheval</string>
- <string name="Scrawny Leg">Jambes maigres</string>
- <string name="Separate">Séparés</string>
- <string name="Shallow">Creux</string>
- <string name="Shear Back">Coupe derrière</string>
- <string name="Shear Face">Visage</string>
- <string name="Shear Front">Front</string>
- <string name="Shear Left Up">Haut gauche décalé</string>
- <string name="Shear Right Up">Haut droit décalé</string>
- <string name="Sheared Back">Dégagé derrière</string>
- <string name="Sheared Front">Dégagé devant</string>
- <string name="Shift Left">Vers la gauche</string>
- <string name="Shift Mouth">Déplacement</string>
- <string name="Shift Right">Vers la droite</string>
- <string name="Shirt Bottom">Chemise</string>
- <string name="Shirt Fit">Taille</string>
- <string name="Shirt Wrinkles">Plis</string>
- <string name="Shoe Height">Hauteur</string>
- <string name="Short">Moins</string>
- <string name="Short Arms">Bras courts</string>
- <string name="Short Legs">Jambes courtes</string>
- <string name="Short Neck">Petit cou</string>
- <string name="Short Pigtails">Couettes courtes</string>
- <string name="Short Ponytail">Queue de cheval courte</string>
- <string name="Short Sideburns">Court</string>
- <string name="Short Torso">Torse court</string>
- <string name="Short hips">Hanches courtes</string>
- <string name="Shoulders">Épaules</string>
- <string name="Side Fringe">Mèches sur le côté</string>
- <string name="Sideburns">Favoris</string>
- <string name="Sides Hair">Cheveux sur le côté</string>
- <string name="Sides Hair Down">Cheveux sur le côté en bas</string>
- <string name="Sides Hair Up">Cheveux sur le côté en haut</string>
- <string name="Skinny Neck">Cou maigre</string>
- <string name="Skirt Fit">Taille jupe</string>
- <string name="Skirt Length">Longueur jupe</string>
- <string name="Slanted Forehead">Front incliné</string>
- <string name="Sleeve Length">Longueur manche</string>
- <string name="Sleeve Looseness">Ampleur manche</string>
- <string name="Slit Back">Fente : Derrière</string>
- <string name="Slit Front">Fente : Devant</string>
- <string name="Slit Left">Fente : Gauche</string>
- <string name="Slit Right">Fente : Droite</string>
- <string name="Small">Moins</string>
- <string name="Small Hands">Petites mains</string>
- <string name="Small Head">Moins</string>
- <string name="Smooth">Moins</string>
- <string name="Smooth Hair">Cheveux lisses</string>
- <string name="Socks Length">Longueur</string>
- <string name="Soulpatch">Barbichette</string>
- <string name="Sparse">Rares</string>
- <string name="Spiked Hair">Mèches en pointe</string>
- <string name="Square">Carrée</string>
- <string name="Square Toe">Orteil carré</string>
- <string name="Squash Head">Écraser la tête</string>
- <string name="Stretch Head">Allonger la tête</string>
- <string name="Sunken">Saillante</string>
- <string name="Sunken Chest">Poitrine enfoncée</string>
- <string name="Sunken Eyes">Yeux enfoncés</string>
- <string name="Sweep Back">En arrière</string>
- <string name="Sweep Forward">Vers l'avant</string>
- <string name="Tall">Plus</string>
- <string name="Taper Back">Arrière</string>
- <string name="Taper Front">Avant</string>
- <string name="Thick Heels">Talons épais</string>
- <string name="Thick Neck">Cou épais</string>
- <string name="Thick Toe">Orteil épais</string>
- <string name="Thin">Mince</string>
- <string name="Thin Eyebrows">Sourcils fins</string>
- <string name="Thin Lips">Lèvres fines</string>
- <string name="Thin Nose">Nez fin</string>
- <string name="Tight Chin">Menton fin</string>
- <string name="Tight Cuffs">Jambes serrées</string>
- <string name="Tight Pants">Pantalons serrés</string>
- <string name="Tight Shirt">Chemise serrée</string>
- <string name="Tight Skirt">Jupe serrée</string>
- <string name="Tight Sleeves">Manches serrées</string>
- <string name="Toe Shape">Forme de l'orteil</string>
- <string name="Toe Thickness">Épaisseur orteil</string>
- <string name="Torso Length">Longueur du torse</string>
- <string name="Torso Muscles">Muscles du torse</string>
- <string name="Torso Scrawny">Torse maigre</string>
- <string name="Unattached">Séparés</string>
- <string name="Uncreased">Lisse</string>
- <string name="Underbite">Sortie</string>
- <string name="Unnatural">Artificiel</string>
- <string name="Upper Bridge">Arête supérieure</string>
- <string name="Upper Cheeks">Joue supérieure</string>
- <string name="Upper Chin Cleft">Menton supérieur</string>
- <string name="Upper Eyelid Fold">Paupière sup.</string>
- <string name="Upturned">En trompette</string>
- <string name="Very Red">Très rouge</string>
- <string name="Waist Height">Hauteur taille</string>
- <string name="Well-Fed">Ronde</string>
- <string name="White Hair">Cheveux blancs</string>
- <string name="Wide">Plus</string>
- <string name="Wide Back">Derrière large</string>
- <string name="Wide Front">Devant large</string>
- <string name="Wide Lips">Lèvres larges</string>
- <string name="Wild">Artificiel</string>
- <string name="Wrinkles">Rides</string>
- <string name="LocationCtrlAddLandmarkTooltip">Ajouter à mes repères</string>
- <string name="LocationCtrlEditLandmarkTooltip">Modifier mon repère</string>
- <string name="LocationCtrlInfoBtnTooltip">En savoir plus sur l'emplacement actuel</string>
- <string name="LocationCtrlComboBtnTooltip">Historique de mes emplacements</string>
- <string name="LocationCtrlForSaleTooltip">Acheter ce terrain</string>
- <string name="LocationCtrlVoiceTooltip">Chat vocal indisponible ici</string>
- <string name="LocationCtrlFlyTooltip">Vol interdit</string>
- <string name="LocationCtrlPushTooltip">Pas de bousculades</string>
- <string name="LocationCtrlBuildTooltip">Construction/placement d'objets interdit</string>
- <string name="LocationCtrlScriptsTooltip">Scripts interdits</string>
- <string name="LocationCtrlDamageTooltip">Santé</string>
- <string name="LocationCtrlAdultIconTooltip">Région de type Adulte</string>
- <string name="LocationCtrlModerateIconTooltip">Région de type Modéré</string>
- <string name="LocationCtrlGeneralIconTooltip">Région de type Général</string>
- <string name="LocationCtrlSeeAVsTooltip">Les avatars à l'extérieur de cette parcelle ne peuvent pas voir ni entendre les avatars qui se trouvent à l'intérieur.</string>
- <string name="LocationCtrlPathfindingDirtyTooltip">Les objets mobiles risquent de ne pas se comporter correctement dans cette région tant qu'elle n'est pas refigée.</string>
- <string name="LocationCtrlPathfindingDisabledTooltip">La recherche de chemin dynamique n'est pas activée dans cette région.</string>
- <string name="UpdaterWindowTitle">[APP_NAME] - Mise à jour</string>
- <string name="UpdaterNowUpdating">Mise à jour de [APP_NAME]...</string>
- <string name="UpdaterNowInstalling">Installation de [APP_NAME]...</string>
- <string name="UpdaterUpdatingDescriptive">Le client [APP_NAME] est en train d'être mis à jour. Cela peut prendre un certain temps, merci de votre patience.</string>
- <string name="UpdaterProgressBarTextWithEllipses">Mise à jour en cours...</string>
- <string name="UpdaterProgressBarText">Mise à jour en cours</string>
- <string name="UpdaterFailDownloadTitle">Le téléchargement de la mise à jour a échoué</string>
- <string name="UpdaterFailUpdateDescriptive">Une erreur est survenue lors de la mise à jour de [APP_NAME]. Veuillez télécharger la dernière version sur www.secondlife.com.</string>
- <string name="UpdaterFailInstallTitle">L'installation de la mise à jour a échoué</string>
- <string name="UpdaterFailStartTitle">Impossible de lancer le client</string>
- <string name="ItemsComingInTooFastFrom">[APP_NAME] : transfert trop rapide des articles de [FROM_NAME] ; aperçu automatique désactivé pendant [TIME] secondes</string>
- <string name="ItemsComingInTooFast">[APP_NAME] : transfert trop rapide des articles ; aperçu automatique désactivé pendant [TIME] secondes</string>
- <string name="IM_logging_string">-- Archivage des IM activé --</string>
- <string name="IM_typing_start_string">[NAME] est en train d'écrire...</string>
- <string name="Unnamed">(sans nom)</string>
- <string name="IM_moderated_chat_label">(Modéré : Voix désactivées par défaut)</string>
- <string name="IM_unavailable_text_label">Le chat écrit n'est pas disponible pour cet appel.</string>
- <string name="IM_muted_text_label">Votre chat écrit a été désactivé par un modérateur de groupe.</string>
- <string name="IM_default_text_label">Cliquez ici pour envoyer un message instantané.</string>
- <string name="IM_to_label">À</string>
- <string name="IM_moderator_label">(Modérateur)</string>
- <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="OnlineStatus">En ligne</string>
- <string name="OfflineStatus">Hors ligne</string>
- <string name="not_online_msg">Utilisateur non connecté - le message sera enregistré et livré plus tard.</string>
- <string name="not_online_inventory">Utilisateur non connecté - l'inventaire a été enregistré</string>
- <string name="answered_call">Votre appel a fait l'objet d'une réponse</string>
- <string name="you_started_call">Vous appelez.</string>
- <string name="you_joined_call">Vous avez rejoint l'appel</string>
- <string name="you_auto_rejected_call-im">Vous avez automatiquement refusé l'appel vocal quand le mode Ne pas déranger était activé.</string>
- <string name="name_started_call">[NAME] appelle.</string>
- <string name="ringing-im">En train de rejoindre l'appel...</string>
- <string name="connected-im">Connecté(e), cliquez sur Quitter l'appel pour raccrocher</string>
- <string name="hang_up-im">A quitté l'appel</string>
- <string name="answering-im">Connexion en cours...</string>
- <string name="conference-title">Chat à plusieurs</string>
- <string name="conference-title-incoming">Conférence avec [AGENT_NAME]</string>
- <string name="inventory_item_offered-im">Objet de l’inventaire [ITEM_NAME] offert</string>
- <string name="inventory_folder_offered-im">Dossier de l’inventaire [ITEM_NAME] offert</string>
+Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
+ </string>
+ <string name="5 O'Clock Shadow">
+ Peu
+ </string>
+ <string name="All White">
+ Tout blancs
+ </string>
+ <string name="Anime Eyes">
+ Grand yeux
+ </string>
+ <string name="Arced">
+ Arqués
+ </string>
+ <string name="Arm Length">
+ Longueur des bras
+ </string>
+ <string name="Attached">
+ Attachés
+ </string>
+ <string name="Attached Earlobes">
+ Lobes
+ </string>
+ <string name="Back Fringe">
+ Mèches de derrière
+ </string>
+ <string name="Baggy">
+ Plus
+ </string>
+ <string name="Bangs">
+ Frange
+ </string>
+ <string name="Beady Eyes">
+ Yeux perçants
+ </string>
+ <string name="Belly Size">
+ Taille du ventre
+ </string>
+ <string name="Big">
+ Plus
+ </string>
+ <string name="Big Butt">
+ Grosses fesses
+ </string>
+ <string name="Big Hair Back">
+ Volume : Derrière
+ </string>
+ <string name="Big Hair Front">
+ Volume : Devant
+ </string>
+ <string name="Big Hair Top">
+ Volume : Haut
+ </string>
+ <string name="Big Head">
+ Plus
+ </string>
+ <string name="Big Pectorals">
+ Gros pectoraux
+ </string>
+ <string name="Big Spikes">
+ Spikes
+ </string>
+ <string name="Black">
+ Noir
+ </string>
+ <string name="Blonde">
+ Blond
+ </string>
+ <string name="Blonde Hair">
+ Cheveux blonds
+ </string>
+ <string name="Blush">
+ Blush
+ </string>
+ <string name="Blush Color">
+ Couleur du blush
+ </string>
+ <string name="Blush Opacity">
+ Opacité du blush
+ </string>
+ <string name="Body Definition">
+ Contour du corps
+ </string>
+ <string name="Body Fat">
+ Graisse
+ </string>
+ <string name="Body Freckles">
+ Grains de beauté
+ </string>
+ <string name="Body Thick">
+ Plus
+ </string>
+ <string name="Body Thickness">
+ Épaisseur du corps
+ </string>
+ <string name="Body Thin">
+ Moins
+ </string>
+ <string name="Bow Legged">
+ Jambes arquées
+ </string>
+ <string name="Breast Buoyancy">
+ Hauteur des seins
+ </string>
+ <string name="Breast Cleavage">
+ Clivage
+ </string>
+ <string name="Breast Size">
+ Taille des seins
+ </string>
+ <string name="Bridge Width">
+ Arête du nez
+ </string>
+ <string name="Broad">
+ Large
+ </string>
+ <string name="Brow Size">
+ Taille du front
+ </string>
+ <string name="Bug Eyes">
+ Yeux globuleux
+ </string>
+ <string name="Bugged Eyes">
+ Yeux globuleux
+ </string>
+ <string name="Bulbous">
+ En bulbe
+ </string>
+ <string name="Bulbous Nose">
+ Nez en bulbe
+ </string>
+ <string name="Breast Physics Mass">
+ Masse des seins
+ </string>
+ <string name="Breast Physics Smoothing">
+ Lissage des seins
+ </string>
+ <string name="Breast Physics Gravity">
+ Gravité des seins
+ </string>
+ <string name="Breast Physics Drag">
+ Résistance de l'air sur les seins
+ </string>
+ <string name="Breast Physics InOut Max Effect">
+ Effet max.
+ </string>
+ <string name="Breast Physics InOut Spring">
+ Élasticité
+ </string>
+ <string name="Breast Physics InOut Gain">
+ Amplification
+ </string>
+ <string name="Breast Physics InOut Damping">
+ Amortissement
+ </string>
+ <string name="Breast Physics UpDown Max Effect">
+ Effet max.
+ </string>
+ <string name="Breast Physics UpDown Spring">
+ Élasticité
+ </string>
+ <string name="Breast Physics UpDown Gain">
+ Amplification
+ </string>
+ <string name="Breast Physics UpDown Damping">
+ Amortissement
+ </string>
+ <string name="Breast Physics LeftRight Max Effect">
+ Effet max.
+ </string>
+ <string name="Breast Physics LeftRight Spring">
+ Élasticité
+ </string>
+ <string name="Breast Physics LeftRight Gain">
+ Amplification
+ </string>
+ <string name="Breast Physics LeftRight Damping">
+ Amortissement
+ </string>
+ <string name="Belly Physics Mass">
+ Masse du ventre
+ </string>
+ <string name="Belly Physics Smoothing">
+ Lissage du ventre
+ </string>
+ <string name="Belly Physics Gravity">
+ Gravité du ventre
+ </string>
+ <string name="Belly Physics Drag">
+ Résistance de l'air sur le ventre
+ </string>
+ <string name="Belly Physics UpDown Max Effect">
+ Effet max.
+ </string>
+ <string name="Belly Physics UpDown Spring">
+ Élasticité
+ </string>
+ <string name="Belly Physics UpDown Gain">
+ Amplification
+ </string>
+ <string name="Belly Physics UpDown Damping">
+ Amortissement
+ </string>
+ <string name="Butt Physics Mass">
+ Masse des fesses
+ </string>
+ <string name="Butt Physics Smoothing">
+ Lissage des fesses
+ </string>
+ <string name="Butt Physics Gravity">
+ Gravité des fesses
+ </string>
+ <string name="Butt Physics Drag">
+ Résistance de l'air sur les fesses
+ </string>
+ <string name="Butt Physics UpDown Max Effect">
+ Effet max.
+ </string>
+ <string name="Butt Physics UpDown Spring">
+ Élasticité
+ </string>
+ <string name="Butt Physics UpDown Gain">
+ Amplification
+ </string>
+ <string name="Butt Physics UpDown Damping">
+ Amortissement
+ </string>
+ <string name="Butt Physics LeftRight Max Effect">
+ Effet max.
+ </string>
+ <string name="Butt Physics LeftRight Spring">
+ Élasticité
+ </string>
+ <string name="Butt Physics LeftRight Gain">
+ Amplification
+ </string>
+ <string name="Butt Physics LeftRight Damping">
+ Amortissement
+ </string>
+ <string name="Bushy Eyebrows">
+ Sourcils touffus
+ </string>
+ <string name="Bushy Hair">
+ Beaucoup
+ </string>
+ <string name="Butt Size">
+ Taille des fesses
+ </string>
+ <string name="Butt Gravity">
+ Gravité des fesses
+ </string>
+ <string name="bustle skirt">
+ Jupe gonflante
+ </string>
+ <string name="no bustle">
+ Pas gonflante
+ </string>
+ <string name="more bustle">
+ Plus gonflante
+ </string>
+ <string name="Chaplin">
+ Moins
+ </string>
+ <string name="Cheek Bones">
+ Pommettes
+ </string>
+ <string name="Chest Size">
+ Taille de la poitrine
+ </string>
+ <string name="Chin Angle">
+ Angle du menton
+ </string>
+ <string name="Chin Cleft">
+ Fente du menton
+ </string>
+ <string name="Chin Curtains">
+ Favoris
+ </string>
+ <string name="Chin Depth">
+ Profondeur
+ </string>
+ <string name="Chin Heavy">
+ Menton lourd
+ </string>
+ <string name="Chin In">
+ Menton rentré
+ </string>
+ <string name="Chin Out">
+ Menton sorti
+ </string>
+ <string name="Chin-Neck">
+ Menton-cou
+ </string>
+ <string name="Clear">
+ Clair
+ </string>
+ <string name="Cleft">
+ Fendu
+ </string>
+ <string name="Close Set Eyes">
+ Yeux rapprochés
+ </string>
+ <string name="Closed">
+ Fermé(s)
+ </string>
+ <string name="Closed Back">
+ Fermé à l'arrière
+ </string>
+ <string name="Closed Front">
+ Fermé devant
+ </string>
+ <string name="Closed Left">
+ Fermé à gauche
+ </string>
+ <string name="Closed Right">
+ Fermé à droite
+ </string>
+ <string name="Coin Purse">
+ Mini
+ </string>
+ <string name="Collar Back">
+ Col arrière
+ </string>
+ <string name="Collar Front">
+ Col devant
+ </string>
+ <string name="Corner Down">
+ Coin vers le bas
+ </string>
+ <string name="Corner Up">
+ Coin vers le haut
+ </string>
+ <string name="Creased">
+ Fripée
+ </string>
+ <string name="Crooked Nose">
+ Déviation du nez
+ </string>
+ <string name="Cuff Flare">
+ Jambes
+ </string>
+ <string name="Dark">
+ Sombre
+ </string>
+ <string name="Dark Green">
+ Vert foncé
+ </string>
+ <string name="Darker">
+ Plus foncé
+ </string>
+ <string name="Deep">
+ Profonde
+ </string>
+ <string name="Default Heels">
+ Talons par défaut
+ </string>
+ <string name="Dense">
+ Dense
+ </string>
+ <string name="Double Chin">
+ Double menton
+ </string>
+ <string name="Downturned">
+ Pointant vers le bas
+ </string>
+ <string name="Duffle Bag">
+ Maxi
+ </string>
+ <string name="Ear Angle">
+ Angle de l'oreille
+ </string>
+ <string name="Ear Size">
+ Taille
+ </string>
+ <string name="Ear Tips">
+ Extrémités
+ </string>
+ <string name="Egg Head">
+ Proéminence
+ </string>
+ <string name="Eye Bags">
+ Cernes
+ </string>
+ <string name="Eye Color">
+ Couleur des yeux
+ </string>
+ <string name="Eye Depth">
+ Profondeur
+ </string>
+ <string name="Eye Lightness">
+ Clarté
+ </string>
+ <string name="Eye Opening">
+ Ouverture
+ </string>
+ <string name="Eye Pop">
+ Œil proéminent
+ </string>
+ <string name="Eye Size">
+ Taille de l'œil
+ </string>
+ <string name="Eye Spacing">
+ Espacement
+ </string>
+ <string name="Eyebrow Arc">
+ Arc
+ </string>
+ <string name="Eyebrow Density">
+ Épaisseur sourcils
+ </string>
+ <string name="Eyebrow Height">
+ Hauteur
+ </string>
+ <string name="Eyebrow Points">
+ Direction
+ </string>
+ <string name="Eyebrow Size">
+ Taille
+ </string>
+ <string name="Eyelash Length">
+ Longueur des cils
+ </string>
+ <string name="Eyeliner">
+ Eyeliner
+ </string>
+ <string name="Eyeliner Color">
+ Couleur de l'eyeliner
+ </string>
+ <string name="Eyes Bugged">
+ Yeux globuleux
+ </string>
+ <string name="Face Shear">
+ Visage
+ </string>
+ <string name="Facial Definition">
+ Définition
+ </string>
+ <string name="Far Set Eyes">
+ Yeux écartés
+ </string>
+ <string name="Fat Lips">
+ Lèvres épaisses
+ </string>
+ <string name="Female">
+ Femme
+ </string>
+ <string name="Fingerless">
+ Sans doigts
+ </string>
+ <string name="Fingers">
+ Doigts
+ </string>
+ <string name="Flared Cuffs">
+ Jambes larges
+ </string>
+ <string name="Flat">
+ Moins
+ </string>
+ <string name="Flat Butt">
+ Fesses plates
+ </string>
+ <string name="Flat Head">
+ Tête plate
+ </string>
+ <string name="Flat Toe">
+ Orteil plat
+ </string>
+ <string name="Foot Size">
+ Pointure
+ </string>
+ <string name="Forehead Angle">
+ Angle du front
+ </string>
+ <string name="Forehead Heavy">
+ Front lourd
+ </string>
+ <string name="Freckles">
+ Tâches de rousseur
+ </string>
+ <string name="Front Fringe">
+ Mèches de devant
+ </string>
+ <string name="Full Back">
+ Arrière touffu
+ </string>
+ <string name="Full Eyeliner">
+ Eyeliner marqué
+ </string>
+ <string name="Full Front">
+ Devant touffu
+ </string>
+ <string name="Full Hair Sides">
+ Côtés touffus
+ </string>
+ <string name="Full Sides">
+ Côtés touffus
+ </string>
+ <string name="Glossy">
+ Brillant
+ </string>
+ <string name="Glove Fingers">
+ Gants avec doigts
+ </string>
+ <string name="Glove Length">
+ Longueur
+ </string>
+ <string name="Hair">
+ Cheveux
+ </string>
+ <string name="Hair Back">
+ Cheveux : Derrière
+ </string>
+ <string name="Hair Front">
+ Cheveux : Devant
+ </string>
+ <string name="Hair Sides">
+ Cheveux : Côtés
+ </string>
+ <string name="Hair Sweep">
+ Sens de la coiffure
+ </string>
+ <string name="Hair Thickess">
+ Épaisseur cheveux
+ </string>
+ <string name="Hair Thickness">
+ Épaisseur cheveux
+ </string>
+ <string name="Hair Tilt">
+ Inclinaison
+ </string>
+ <string name="Hair Tilted Left">
+ Vers la gauche
+ </string>
+ <string name="Hair Tilted Right">
+ Vers la droite
+ </string>
+ <string name="Hair Volume">
+ Cheveux : Volume
+ </string>
+ <string name="Hand Size">
+ Taille de la main
+ </string>
+ <string name="Handlebars">
+ Plus
+ </string>
+ <string name="Head Length">
+ Longueur
+ </string>
+ <string name="Head Shape">
+ Forme
+ </string>
+ <string name="Head Size">
+ Taille
+ </string>
+ <string name="Head Stretch">
+ Allongement
+ </string>
+ <string name="Heel Height">
+ Talons
+ </string>
+ <string name="Heel Shape">
+ Forme des talons
+ </string>
+ <string name="Height">
+ Taille
+ </string>
+ <string name="High">
+ Haut
+ </string>
+ <string name="High Heels">
+ Talons hauts
+ </string>
+ <string name="High Jaw">
+ Haut
+ </string>
+ <string name="High Platforms">
+ Haute
+ </string>
+ <string name="High and Tight">
+ Haut et serré
+ </string>
+ <string name="Higher">
+ Plus élevé
+ </string>
+ <string name="Hip Length">
+ Longueur hanche
+ </string>
+ <string name="Hip Width">
+ Largeur hanche
+ </string>
+ <string name="Hover">
+ Survol
+ </string>
+ <string name="In">
+ Rentré
+ </string>
+ <string name="In Shdw Color">
+ Couleur ombre interne
+ </string>
+ <string name="In Shdw Opacity">
+ Opacité ombre interne
+ </string>
+ <string name="Inner Eye Corner">
+ Coin interne
+ </string>
+ <string name="Inner Eye Shadow">
+ Ombre de l'œil interne
+ </string>
+ <string name="Inner Shadow">
+ Ombre interne
+ </string>
+ <string name="Jacket Length">
+ Longueur de la veste
+ </string>
+ <string name="Jacket Wrinkles">
+ Plis de la veste
+ </string>
+ <string name="Jaw Angle">
+ Angle mâchoire
+ </string>
+ <string name="Jaw Jut">
+ Saillie mâchoire
+ </string>
+ <string name="Jaw Shape">
+ Mâchoire
+ </string>
+ <string name="Join">
+ Rapprochés
+ </string>
+ <string name="Jowls">
+ Bajoues
+ </string>
+ <string name="Knee Angle">
+ Angle du genou
+ </string>
+ <string name="Knock Kneed">
+ Genoux rapprochés
+ </string>
+ <string name="Large">
+ Plus
+ </string>
+ <string name="Large Hands">
+ Grandes mains
+ </string>
+ <string name="Left Part">
+ Raie à gauche
+ </string>
+ <string name="Leg Length">
+ Longueur
+ </string>
+ <string name="Leg Muscles">
+ Muscles
+ </string>
+ <string name="Less">
+ Moins
+ </string>
+ <string name="Less Body Fat">
+ Moins
+ </string>
+ <string name="Less Curtains">
+ Moins
+ </string>
+ <string name="Less Freckles">
+ Moins
+ </string>
+ <string name="Less Full">
+ Moins
+ </string>
+ <string name="Less Gravity">
+ Moins
+ </string>
+ <string name="Less Love">
+ Moins
+ </string>
+ <string name="Less Muscles">
+ Moins
+ </string>
+ <string name="Less Muscular">
+ Moins
+ </string>
+ <string name="Less Rosy">
+ Moins
+ </string>
+ <string name="Less Round">
+ Moins ronde
+ </string>
+ <string name="Less Saddle">
+ Moins
+ </string>
+ <string name="Less Square">
+ Moins carrée
+ </string>
+ <string name="Less Volume">
+ Moins
+ </string>
+ <string name="Less soul">
+ Moins
+ </string>
+ <string name="Lighter">
+ Plus léger
+ </string>
+ <string name="Lip Cleft">
+ Fente labiale
+ </string>
+ <string name="Lip Cleft Depth">
+ Prof. fente labiale
+ </string>
+ <string name="Lip Fullness">
+ Volume des lèvres
+ </string>
+ <string name="Lip Pinkness">
+ Rougeur des lèvres
+ </string>
+ <string name="Lip Ratio">
+ Proportion des lèvres
+ </string>
+ <string name="Lip Thickness">
+ Épaisseur
+ </string>
+ <string name="Lip Width">
+ Largeur
+ </string>
+ <string name="Lipgloss">
+ Brillant à lèvres
+ </string>
+ <string name="Lipstick">
+ Rouge à lèvres
+ </string>
+ <string name="Lipstick Color">
+ Couleur du rouge à lèvres
+ </string>
+ <string name="Long">
+ Plus
+ </string>
+ <string name="Long Head">
+ Tête longue
+ </string>
+ <string name="Long Hips">
+ Hanches longues
+ </string>
+ <string name="Long Legs">
+ Jambes longues
+ </string>
+ <string name="Long Neck">
+ Long cou
+ </string>
+ <string name="Long Pigtails">
+ Longues couettes
+ </string>
+ <string name="Long Ponytail">
+ Longue queue de cheval
+ </string>
+ <string name="Long Torso">
+ Torse long
+ </string>
+ <string name="Long arms">
+ Bras longs
+ </string>
+ <string name="Loose Pants">
+ Pantalons amples
+ </string>
+ <string name="Loose Shirt">
+ Chemise ample
+ </string>
+ <string name="Loose Sleeves">
+ Manches amples
+ </string>
+ <string name="Love Handles">
+ Poignées d'amour
+ </string>
+ <string name="Low">
+ Bas
+ </string>
+ <string name="Low Heels">
+ Talons bas
+ </string>
+ <string name="Low Jaw">
+ Bas
+ </string>
+ <string name="Low Platforms">
+ Basse
+ </string>
+ <string name="Low and Loose">
+ Bas et ample
+ </string>
+ <string name="Lower">
+ Abaisser
+ </string>
+ <string name="Lower Bridge">
+ Arête inférieure
+ </string>
+ <string name="Lower Cheeks">
+ Joue inférieure
+ </string>
+ <string name="Male">
+ Homme
+ </string>
+ <string name="Middle Part">
+ Raie au milieu
+ </string>
+ <string name="More">
+ Plus
+ </string>
+ <string name="More Blush">
+ Plus
+ </string>
+ <string name="More Body Fat">
+ Plus
+ </string>
+ <string name="More Curtains">
+ Plus
+ </string>
+ <string name="More Eyeshadow">
+ Plus
+ </string>
+ <string name="More Freckles">
+ Plus
+ </string>
+ <string name="More Full">
+ Plus
+ </string>
+ <string name="More Gravity">
+ Plus
+ </string>
+ <string name="More Lipstick">
+ Plus
+ </string>
+ <string name="More Love">
+ Plus
+ </string>
+ <string name="More Lower Lip">
+ Inférieure plus grosse
+ </string>
+ <string name="More Muscles">
+ Plus
+ </string>
+ <string name="More Muscular">
+ Plus
+ </string>
+ <string name="More Rosy">
+ Plus
+ </string>
+ <string name="More Round">
+ Plus
+ </string>
+ <string name="More Saddle">
+ Plus
+ </string>
+ <string name="More Sloped">
+ Plus
+ </string>
+ <string name="More Square">
+ Plus
+ </string>
+ <string name="More Upper Lip">
+ Supérieure plus grosse
+ </string>
+ <string name="More Vertical">
+ Plus
+ </string>
+ <string name="More Volume">
+ Plus
+ </string>
+ <string name="More soul">
+ Plus
+ </string>
+ <string name="Moustache">
+ Moustache
+ </string>
+ <string name="Mouth Corner">
+ Coin de la bouche
+ </string>
+ <string name="Mouth Position">
+ Position
+ </string>
+ <string name="Mowhawk">
+ Mowhawk
+ </string>
+ <string name="Muscular">
+ Musclé
+ </string>
+ <string name="Mutton Chops">
+ Longs
+ </string>
+ <string name="Nail Polish">
+ Vernis à ongles
+ </string>
+ <string name="Nail Polish Color">
+ Couleur du vernis
+ </string>
+ <string name="Narrow">
+ Moins
+ </string>
+ <string name="Narrow Back">
+ Arrière étroit
+ </string>
+ <string name="Narrow Front">
+ Devant étroit
+ </string>
+ <string name="Narrow Lips">
+ Lèvres étroites
+ </string>
+ <string name="Natural">
+ Naturel
+ </string>
+ <string name="Neck Length">
+ Longueur du cou
+ </string>
+ <string name="Neck Thickness">
+ Épaisseur du cou
+ </string>
+ <string name="No Blush">
+ Pas de blush
+ </string>
+ <string name="No Eyeliner">
+ Pas d'eyeliner
+ </string>
+ <string name="No Eyeshadow">
+ Pas d'ombre à paupières
+ </string>
+ <string name="No Lipgloss">
+ Pas de brillant à lèvres
+ </string>
+ <string name="No Lipstick">
+ Pas de rouge à lèvres
+ </string>
+ <string name="No Part">
+ Pas de raie
+ </string>
+ <string name="No Polish">
+ Pas de vernis
+ </string>
+ <string name="No Red">
+ Pas de rouge
+ </string>
+ <string name="No Spikes">
+ Pas de spikes
+ </string>
+ <string name="No White">
+ Pas de blanc
+ </string>
+ <string name="No Wrinkles">
+ Pas de rides
+ </string>
+ <string name="Normal Lower">
+ Normal plus bas
+ </string>
+ <string name="Normal Upper">
+ Normal plus haut
+ </string>
+ <string name="Nose Left">
+ Nez à gauche
+ </string>
+ <string name="Nose Right">
+ Nez à droite
+ </string>
+ <string name="Nose Size">
+ Taille du nez
+ </string>
+ <string name="Nose Thickness">
+ Épaisseur du nez
+ </string>
+ <string name="Nose Tip Angle">
+ Angle bout du nez
+ </string>
+ <string name="Nose Tip Shape">
+ Forme bout du nez
+ </string>
+ <string name="Nose Width">
+ Largeur du nez
+ </string>
+ <string name="Nostril Division">
+ Division narines
+ </string>
+ <string name="Nostril Width">
+ Largeur narines
+ </string>
+ <string name="Opaque">
+ Opaque
+ </string>
+ <string name="Open">
+ Ouvert
+ </string>
+ <string name="Open Back">
+ Derrière ouvert
+ </string>
+ <string name="Open Front">
+ Devant ouvert
+ </string>
+ <string name="Open Left">
+ Ouvert à gauche
+ </string>
+ <string name="Open Right">
+ Ouvert à droite
+ </string>
+ <string name="Orange">
+ Orange
+ </string>
+ <string name="Out">
+ Sorti
+ </string>
+ <string name="Out Shdw Color">
+ Couleur de l'ombre externe
+ </string>
+ <string name="Out Shdw Opacity">
+ Opacité de l'ombre externe
+ </string>
+ <string name="Outer Eye Corner">
+ Coin externe
+ </string>
+ <string name="Outer Eye Shadow">
+ Ombre de l'œil externe
+ </string>
+ <string name="Outer Shadow">
+ Ombre externe
+ </string>
+ <string name="Overbite">
+ Rentrée
+ </string>
+ <string name="Package">
+ Parties
+ </string>
+ <string name="Painted Nails">
+ Ongles vernis
+ </string>
+ <string name="Pale">
+ Pâle
+ </string>
+ <string name="Pants Crotch">
+ Entrejambe
+ </string>
+ <string name="Pants Fit">
+ Taille
+ </string>
+ <string name="Pants Length">
+ Longueur
+ </string>
+ <string name="Pants Waist">
+ Taille
+ </string>
+ <string name="Pants Wrinkles">
+ Plis
+ </string>
+ <string name="Part">
+ Raie
+ </string>
+ <string name="Part Bangs">
+ Séparation frange
+ </string>
+ <string name="Pectorals">
+ Pectoraux
+ </string>
+ <string name="Pigment">
+ Pigmentation
+ </string>
+ <string name="Pigtails">
+ Couettes
+ </string>
+ <string name="Pink">
+ Rose
+ </string>
+ <string name="Pinker">
+ Plus rose
+ </string>
+ <string name="Platform Height">
+ Platef. (hauteur)
+ </string>
+ <string name="Platform Width">
+ Platef. (largeur)
+ </string>
+ <string name="Pointy">
+ Pointue
+ </string>
+ <string name="Pointy Heels">
+ Talons pointus
+ </string>
+ <string name="Ponytail">
+ Queue de cheval
+ </string>
+ <string name="Poofy Skirt">
+ Jupe bouffante
+ </string>
+ <string name="Pop Left Eye">
+ Œil gauche saillant
+ </string>
+ <string name="Pop Right Eye">
+ Œil droit saillant
+ </string>
+ <string name="Puffy">
+ Plus
+ </string>
+ <string name="Puffy Eyelids">
+ Paup. gonflées
+ </string>
+ <string name="Rainbow Color">
+ Couleur arc en ciel
+ </string>
+ <string name="Red Hair">
+ Cheveux roux
+ </string>
+ <string name="Regular">
+ Standard
+ </string>
+ <string name="Right Part">
+ Raie à droite
+ </string>
+ <string name="Rosy Complexion">
+ Teint rosé
+ </string>
+ <string name="Round">
+ Rond
+ </string>
+ <string name="Ruddiness">
+ Rougeur
+ </string>
+ <string name="Ruddy">
+ Rouge
+ </string>
+ <string name="Rumpled Hair">
+ Texture
+ </string>
+ <string name="Saddle Bags">
+ Culotte de cheval
+ </string>
+ <string name="Scrawny Leg">
+ Jambes maigres
+ </string>
+ <string name="Separate">
+ Séparés
+ </string>
+ <string name="Shallow">
+ Creux
+ </string>
+ <string name="Shear Back">
+ Coupe derrière
+ </string>
+ <string name="Shear Face">
+ Visage
+ </string>
+ <string name="Shear Front">
+ Front
+ </string>
+ <string name="Shear Left Up">
+ Haut gauche décalé
+ </string>
+ <string name="Shear Right Up">
+ Haut droit décalé
+ </string>
+ <string name="Sheared Back">
+ Dégagé derrière
+ </string>
+ <string name="Sheared Front">
+ Dégagé devant
+ </string>
+ <string name="Shift Left">
+ Vers la gauche
+ </string>
+ <string name="Shift Mouth">
+ Déplacement
+ </string>
+ <string name="Shift Right">
+ Vers la droite
+ </string>
+ <string name="Shirt Bottom">
+ Chemise
+ </string>
+ <string name="Shirt Fit">
+ Taille
+ </string>
+ <string name="Shirt Wrinkles">
+ Plis
+ </string>
+ <string name="Shoe Height">
+ Hauteur
+ </string>
+ <string name="Short">
+ Moins
+ </string>
+ <string name="Short Arms">
+ Bras courts
+ </string>
+ <string name="Short Legs">
+ Jambes courtes
+ </string>
+ <string name="Short Neck">
+ Petit cou
+ </string>
+ <string name="Short Pigtails">
+ Couettes courtes
+ </string>
+ <string name="Short Ponytail">
+ Queue de cheval courte
+ </string>
+ <string name="Short Sideburns">
+ Court
+ </string>
+ <string name="Short Torso">
+ Torse court
+ </string>
+ <string name="Short hips">
+ Hanches courtes
+ </string>
+ <string name="Shoulders">
+ Épaules
+ </string>
+ <string name="Side Fringe">
+ Mèches sur le côté
+ </string>
+ <string name="Sideburns">
+ Favoris
+ </string>
+ <string name="Sides Hair">
+ Cheveux sur le côté
+ </string>
+ <string name="Sides Hair Down">
+ Cheveux sur le côté en bas
+ </string>
+ <string name="Sides Hair Up">
+ Cheveux sur le côté en haut
+ </string>
+ <string name="Skinny Neck">
+ Cou maigre
+ </string>
+ <string name="Skirt Fit">
+ Taille jupe
+ </string>
+ <string name="Skirt Length">
+ Longueur jupe
+ </string>
+ <string name="Slanted Forehead">
+ Front incliné
+ </string>
+ <string name="Sleeve Length">
+ Longueur manche
+ </string>
+ <string name="Sleeve Looseness">
+ Ampleur manche
+ </string>
+ <string name="Slit Back">
+ Fente : Derrière
+ </string>
+ <string name="Slit Front">
+ Fente : Devant
+ </string>
+ <string name="Slit Left">
+ Fente : Gauche
+ </string>
+ <string name="Slit Right">
+ Fente : Droite
+ </string>
+ <string name="Small">
+ Moins
+ </string>
+ <string name="Small Hands">
+ Petites mains
+ </string>
+ <string name="Small Head">
+ Moins
+ </string>
+ <string name="Smooth">
+ Moins
+ </string>
+ <string name="Smooth Hair">
+ Cheveux lisses
+ </string>
+ <string name="Socks Length">
+ Longueur
+ </string>
+ <string name="Soulpatch">
+ Barbichette
+ </string>
+ <string name="Sparse">
+ Rares
+ </string>
+ <string name="Spiked Hair">
+ Mèches en pointe
+ </string>
+ <string name="Square">
+ Carrée
+ </string>
+ <string name="Square Toe">
+ Orteil carré
+ </string>
+ <string name="Squash Head">
+ Écraser la tête
+ </string>
+ <string name="Stretch Head">
+ Allonger la tête
+ </string>
+ <string name="Sunken">
+ Saillante
+ </string>
+ <string name="Sunken Chest">
+ Poitrine enfoncée
+ </string>
+ <string name="Sunken Eyes">
+ Yeux enfoncés
+ </string>
+ <string name="Sweep Back">
+ En arrière
+ </string>
+ <string name="Sweep Forward">
+ Vers l'avant
+ </string>
+ <string name="Tall">
+ Plus
+ </string>
+ <string name="Taper Back">
+ Arrière
+ </string>
+ <string name="Taper Front">
+ Avant
+ </string>
+ <string name="Thick Heels">
+ Talons épais
+ </string>
+ <string name="Thick Neck">
+ Cou épais
+ </string>
+ <string name="Thick Toe">
+ Orteil épais
+ </string>
+ <string name="Thin">
+ Mince
+ </string>
+ <string name="Thin Eyebrows">
+ Sourcils fins
+ </string>
+ <string name="Thin Lips">
+ Lèvres fines
+ </string>
+ <string name="Thin Nose">
+ Nez fin
+ </string>
+ <string name="Tight Chin">
+ Menton fin
+ </string>
+ <string name="Tight Cuffs">
+ Jambes serrées
+ </string>
+ <string name="Tight Pants">
+ Pantalons serrés
+ </string>
+ <string name="Tight Shirt">
+ Chemise serrée
+ </string>
+ <string name="Tight Skirt">
+ Jupe serrée
+ </string>
+ <string name="Tight Sleeves">
+ Manches serrées
+ </string>
+ <string name="Toe Shape">
+ Forme de l'orteil
+ </string>
+ <string name="Toe Thickness">
+ Épaisseur orteil
+ </string>
+ <string name="Torso Length">
+ Longueur du torse
+ </string>
+ <string name="Torso Muscles">
+ Muscles du torse
+ </string>
+ <string name="Torso Scrawny">
+ Torse maigre
+ </string>
+ <string name="Unattached">
+ Séparés
+ </string>
+ <string name="Uncreased">
+ Lisse
+ </string>
+ <string name="Underbite">
+ Sortie
+ </string>
+ <string name="Unnatural">
+ Artificiel
+ </string>
+ <string name="Upper Bridge">
+ Arête supérieure
+ </string>
+ <string name="Upper Cheeks">
+ Joue supérieure
+ </string>
+ <string name="Upper Chin Cleft">
+ Menton supérieur
+ </string>
+ <string name="Upper Eyelid Fold">
+ Paupière sup.
+ </string>
+ <string name="Upturned">
+ En trompette
+ </string>
+ <string name="Very Red">
+ Très rouge
+ </string>
+ <string name="Waist Height">
+ Hauteur taille
+ </string>
+ <string name="Well-Fed">
+ Ronde
+ </string>
+ <string name="White Hair">
+ Cheveux blancs
+ </string>
+ <string name="Wide">
+ Plus
+ </string>
+ <string name="Wide Back">
+ Derrière large
+ </string>
+ <string name="Wide Front">
+ Devant large
+ </string>
+ <string name="Wide Lips">
+ Lèvres larges
+ </string>
+ <string name="Wild">
+ Artificiel
+ </string>
+ <string name="Wrinkles">
+ Rides
+ </string>
+ <string name="LocationCtrlAddLandmarkTooltip">
+ Ajouter à mes repères
+ </string>
+ <string name="LocationCtrlEditLandmarkTooltip">
+ Modifier mon repère
+ </string>
+ <string name="LocationCtrlInfoBtnTooltip">
+ En savoir plus sur l'emplacement actuel
+ </string>
+ <string name="LocationCtrlComboBtnTooltip">
+ Historique de mes emplacements
+ </string>
+ <string name="LocationCtrlForSaleTooltip">
+ Acheter ce terrain
+ </string>
+ <string name="LocationCtrlVoiceTooltip">
+ Chat vocal indisponible ici
+ </string>
+ <string name="LocationCtrlFlyTooltip">
+ Vol interdit
+ </string>
+ <string name="LocationCtrlPushTooltip">
+ Pas de bousculades
+ </string>
+ <string name="LocationCtrlBuildTooltip">
+ Construction/placement d'objets interdit
+ </string>
+ <string name="LocationCtrlScriptsTooltip">
+ Scripts interdits
+ </string>
+ <string name="LocationCtrlDamageTooltip">
+ Santé
+ </string>
+ <string name="LocationCtrlAdultIconTooltip">
+ Région de type Adulte
+ </string>
+ <string name="LocationCtrlModerateIconTooltip">
+ Région de type Modéré
+ </string>
+ <string name="LocationCtrlGeneralIconTooltip">
+ Région de type Général
+ </string>
+ <string name="LocationCtrlSeeAVsTooltip">
+ Les avatars à l'extérieur de cette parcelle ne peuvent pas voir ni entendre les avatars qui se trouvent à l'intérieur.
+ </string>
+ <string name="LocationCtrlPathfindingDirtyTooltip">
+ Les objets mobiles risquent de ne pas se comporter correctement dans cette région tant qu'elle n'est pas refigée.
+ </string>
+ <string name="LocationCtrlPathfindingDisabledTooltip">
+ La recherche de chemin dynamique n'est pas activée dans cette région.
+ </string>
+ <string name="UpdaterWindowTitle">
+ [APP_NAME] - Mise à jour
+ </string>
+ <string name="UpdaterNowUpdating">
+ Mise à jour de [APP_NAME]...
+ </string>
+ <string name="UpdaterNowInstalling">
+ Installation de [APP_NAME]...
+ </string>
+ <string name="UpdaterUpdatingDescriptive">
+ Le client [APP_NAME] est en train d'être mis à jour. Cela peut prendre un certain temps, merci de votre patience.
+ </string>
+ <string name="UpdaterProgressBarTextWithEllipses">
+ Mise à jour en cours...
+ </string>
+ <string name="UpdaterProgressBarText">
+ Mise à jour en cours
+ </string>
+ <string name="UpdaterFailDownloadTitle">
+ Le téléchargement de la mise à jour a échoué
+ </string>
+ <string name="UpdaterFailUpdateDescriptive">
+ Une erreur est survenue lors de la mise à jour de [APP_NAME]. Veuillez télécharger la dernière version sur www.secondlife.com.
+ </string>
+ <string name="UpdaterFailInstallTitle">
+ L'installation de la mise à jour a échoué
+ </string>
+ <string name="UpdaterFailStartTitle">
+ Impossible de lancer le client
+ </string>
+ <string name="ItemsComingInTooFastFrom">
+ [APP_NAME] : transfert trop rapide des articles de [FROM_NAME] ; aperçu automatique désactivé pendant [TIME] secondes
+ </string>
+ <string name="ItemsComingInTooFast">
+ [APP_NAME] : transfert trop rapide des articles ; aperçu automatique désactivé pendant [TIME] secondes
+ </string>
+ <string name="IM_logging_string">
+ -- Archivage des IM activé --
+ </string>
+ <string name="IM_typing_start_string">
+ [NAME] est en train d'écrire...
+ </string>
+ <string name="Unnamed">
+ (sans nom)
+ </string>
+ <string name="IM_moderated_chat_label">
+ (Modéré : Voix désactivées par défaut)
+ </string>
+ <string name="IM_unavailable_text_label">
+ Le chat écrit n'est pas disponible pour cet appel.
+ </string>
+ <string name="IM_muted_text_label">
+ Votre chat écrit a été désactivé par un modérateur de groupe.
+ </string>
+ <string name="IM_default_text_label">
+ Cliquez ici pour envoyer un message instantané.
+ </string>
+ <string name="IM_to_label">
+ À
+ </string>
+ <string name="IM_moderator_label">
+ (Modérateur)
+ </string>
+ <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="OnlineStatus">
+ En ligne
+ </string>
+ <string name="OfflineStatus">
+ Hors ligne
+ </string>
+ <string name="not_online_msg">
+ Utilisateur non connecté - le message sera enregistré et livré plus tard.
+ </string>
+ <string name="not_online_inventory">
+ Utilisateur non connecté - l'inventaire a été enregistré
+ </string>
+ <string name="answered_call">
+ Votre appel a fait l'objet d'une réponse
+ </string>
+ <string name="you_started_call">
+ Vous appelez.
+ </string>
+ <string name="you_joined_call">
+ Vous avez rejoint l'appel
+ </string>
+ <string name="you_auto_rejected_call-im">
+ Vous avez automatiquement refusé l'appel vocal quand le mode Ne pas déranger était activé.
+ </string>
+ <string name="name_started_call">
+ [NAME] appelle.
+ </string>
+ <string name="ringing-im">
+ En train de rejoindre l'appel...
+ </string>
+ <string name="connected-im">
+ Connecté(e), cliquez sur Quitter l'appel pour raccrocher
+ </string>
+ <string name="hang_up-im">
+ A quitté l'appel
+ </string>
+ <string name="answering-im">
+ Connexion en cours...
+ </string>
+ <string name="conference-title">
+ Chat à plusieurs
+ </string>
+ <string name="conference-title-incoming">
+ Conférence avec [AGENT_NAME]
+ </string>
+ <string name="inventory_item_offered-im">
+ Objet de l’inventaire [ITEM_NAME] offert
+ </string>
+ <string name="inventory_folder_offered-im">
+ Dossier de l’inventaire [ITEM_NAME] offert
+ </string>
<string name="bot_warning">
-Vous discutez avec un bot, [NAME]. Ne partagez pas d’informations personnelles.
+ Vous discutez avec un bot, [NAME]. Ne partagez pas d’informations personnelles.
En savoir plus sur https://second.life/scripted-agents.
</string>
- <string name="share_alert">Faire glisser les objets de l'inventaire ici</string>
- <string name="facebook_post_success">Vous avez publié sur Facebook.</string>
- <string name="flickr_post_success">Vous avez publié sur Flickr.</string>
- <string name="twitter_post_success">Vous avez publié sur Twitter.</string>
- <string name="no_session_message">(Session IM inexistante)</string>
- <string name="only_user_message">Vous êtes le seul participant à cette session.</string>
- <string name="offline_message">[NAME] est hors ligne.</string>
- <string name="invite_message">Pour accepter ce chat vocal/vous connecter, cliquez sur le bouton [BUTTON NAME].</string>
- <string name="muted_message">Vous ignorez ce résident. Si vous lui envoyez un message, il ne sera plus ignoré.</string>
- <string name="generic">Erreur lors de la requête, veuillez réessayer ultérieurement.</string>
- <string name="generic_request_error">Erreur lors de la requête, veuillez réessayer ultérieurement.</string>
- <string name="insufficient_perms_error">Vous n'avez pas les droits requis.</string>
- <string name="session_does_not_exist_error">La session a expiré</string>
- <string name="no_ability_error">Vous n'avez pas ce pouvoir.</string>
- <string name="no_ability">Vous n'avez pas ce pouvoir.</string>
- <string name="not_a_mod_error">Vous n'êtes pas modérateur de session.</string>
- <string name="muted">Un modérateur de groupe a désactivé votre chat écrit.</string>
- <string name="muted_error">Un modérateur de groupe a désactivé votre chat écrit.</string>
- <string name="add_session_event">Impossible d'ajouter des participants à la session de chat avec [RECIPIENT].</string>
- <string name="message">Impossible d'envoyer votre message à la session de chat avec [RECIPIENT].</string>
- <string name="message_session_event">Impossible d'envoyer votre message à la session de chat avec [RECIPIENT].</string>
- <string name="mute">Erreur lors de la modération.</string>
- <string name="removed">Vous avez été supprimé du groupe.</string>
- <string name="removed_from_group">Vous avez été supprimé du groupe.</string>
- <string name="close_on_no_ability">Vous ne pouvez plus participer à la session de chat.</string>
- <string name="unread_chat_single">[SOURCES] a dit quelque chose de nouveau</string>
- <string name="unread_chat_multiple">[SOURCES] ont dit quelque chose de nouveau</string>
- <string name="session_initialization_timed_out_error">Expiration du délai d'initialisation de la session</string>
- <string name="Home position set.">Emplacement du domicile défini.</string>
- <string name="voice_morphing_url">https://secondlife.com/destination/voice-island</string>
- <string name="premium_voice_morphing_url">https://secondlife.com/destination/voice-morphing-premium</string>
- <string name="paid_you_ldollars">[NAME] vous a payé [AMOUNT] L$ [REASON].</string>
- <string name="paid_you_ldollars_gift">[NAME] vous a payé [AMOUNT] L$ : [REASON]</string>
- <string name="paid_you_ldollars_no_reason">[NAME] vous a payé [AMOUNT] L$.</string>
- <string name="you_paid_ldollars">Vous avez payé à [AMOUNT] L$ [REASON].</string>
- <string name="you_paid_ldollars_gift">Vous avez payé à [NAME] [AMOUNT] L$ : [REASON]</string>
- <string name="you_paid_ldollars_no_info">Vous avez payé [AMOUNT] L$.</string>
- <string name="you_paid_ldollars_no_reason">Vous avez payé à [NAME] [AMOUNT] L$.</string>
- <string name="you_paid_ldollars_no_name">Vous avez payé à [AMOUNT] L$ [REASON].</string>
- <string name="you_paid_failure_ldollars">Votre paiement de [AMOUNT] L$ à [NAME] [REASON] a échoué.</string>
- <string name="you_paid_failure_ldollars_gift">Votre paiement de [AMOUNT] L$ à [NAME] a échoué : [REASON]</string>
- <string name="you_paid_failure_ldollars_no_info">Votre paiement de [AMOUNT] L$ a échoué.</string>
- <string name="you_paid_failure_ldollars_no_reason">Votre paiement de [AMOUNT] L$ à [NAME] a échoué.</string>
- <string name="you_paid_failure_ldollars_no_name">Votre paiement de [AMOUNT] L$ [REASON] a échoué.</string>
- <string name="for item">pour l'article suivant : [ITEM]</string>
- <string name="for a parcel of land">pour une parcelle de terrain</string>
- <string name="for a land access pass">pour un pass d'accès au terrain</string>
- <string name="for deeding land">pour une cession de terrain</string>
- <string name="to create a group">pour créer un groupe</string>
- <string name="to join a group">pour rejoindre un groupe</string>
- <string name="to upload">pour charger</string>
- <string name="to publish a classified ad">pour publier une petite annonce</string>
- <string name="giving">Donner [AMOUNT] L$</string>
- <string name="uploading_costs">Le chargement coûte [AMOUNT] L$</string>
- <string name="this_costs">Cela coûte [AMOUNT] L$</string>
- <string name="buying_selected_land">Achat du terrain sélectionné pour [AMOUNT] L$</string>
- <string name="this_object_costs">Cet objet coûte [AMOUNT] L$</string>
- <string name="group_role_everyone">Tous</string>
- <string name="group_role_officers">Officiers</string>
- <string name="group_role_owners">Propriétaires</string>
- <string name="group_member_status_online">En ligne</string>
- <string name="uploading_abuse_report">Chargement...
+ <string name="share_alert">
+ Faire glisser les objets de l'inventaire ici
+ </string>
+ <string name="facebook_post_success">
+ Vous avez publié sur Facebook.
+ </string>
+ <string name="flickr_post_success">
+ Vous avez publié sur Flickr.
+ </string>
+ <string name="twitter_post_success">
+ Vous avez publié sur Twitter.
+ </string>
+ <string name="no_session_message">
+ (Session IM inexistante)
+ </string>
+ <string name="only_user_message">
+ Vous êtes le seul participant à cette session.
+ </string>
+ <string name="offline_message">
+ [NAME] est hors ligne.
+ </string>
+ <string name="invite_message">
+ Pour accepter ce chat vocal/vous connecter, cliquez sur le bouton [BUTTON NAME].
+ </string>
+ <string name="muted_message">
+ Vous ignorez ce résident. Si vous lui envoyez un message, il ne sera plus ignoré.
+ </string>
+ <string name="generic">
+ Erreur lors de la requête, veuillez réessayer ultérieurement.
+ </string>
+ <string name="generic_request_error">
+ Erreur lors de la requête, veuillez réessayer ultérieurement.
+ </string>
+ <string name="insufficient_perms_error">
+ Vous n'avez pas les droits requis.
+ </string>
+ <string name="session_does_not_exist_error">
+ La session a expiré
+ </string>
+ <string name="no_ability_error">
+ Vous n'avez pas ce pouvoir.
+ </string>
+ <string name="no_ability">
+ Vous n'avez pas ce pouvoir.
+ </string>
+ <string name="not_a_mod_error">
+ Vous n'êtes pas modérateur de session.
+ </string>
+ <string name="muted">
+ Un modérateur de groupe a désactivé votre chat écrit.
+ </string>
+ <string name="muted_error">
+ Un modérateur de groupe a désactivé votre chat écrit.
+ </string>
+ <string name="add_session_event">
+ Impossible d'ajouter des participants à la session de chat avec [RECIPIENT].
+ </string>
+ <string name="message">
+ Impossible d'envoyer votre message à la session de chat avec [RECIPIENT].
+ </string>
+ <string name="message_session_event">
+ Impossible d'envoyer votre message à la session de chat avec [RECIPIENT].
+ </string>
+ <string name="mute">
+ Erreur lors de la modération.
+ </string>
+ <string name="removed">
+ Vous avez été supprimé du groupe.
+ </string>
+ <string name="removed_from_group">
+ Vous avez été supprimé du groupe.
+ </string>
+ <string name="close_on_no_ability">
+ Vous ne pouvez plus participer à la session de chat.
+ </string>
+ <string name="unread_chat_single">
+ [SOURCES] a dit quelque chose de nouveau
+ </string>
+ <string name="unread_chat_multiple">
+ [SOURCES] ont dit quelque chose de nouveau
+ </string>
+ <string name="session_initialization_timed_out_error">
+ Expiration du délai d'initialisation de la session
+ </string>
+ <string name="Home position set.">
+ Emplacement du domicile défini.
+ </string>
+ <string name="voice_morphing_url">
+ https://secondlife.com/destination/voice-island
+ </string>
+ <string name="premium_voice_morphing_url">
+ https://secondlife.com/destination/voice-morphing-premium
+ </string>
+ <string name="paid_you_ldollars">
+ [NAME] vous a payé [AMOUNT] L$ [REASON].
+ </string>
+ <string name="paid_you_ldollars_gift">
+ [NAME] vous a payé [AMOUNT] L$ : [REASON]
+ </string>
+ <string name="paid_you_ldollars_no_reason">
+ [NAME] vous a payé [AMOUNT] L$.
+ </string>
+ <string name="you_paid_ldollars">
+ Vous avez payé à [AMOUNT] L$ [REASON].
+ </string>
+ <string name="you_paid_ldollars_gift">
+ Vous avez payé à [NAME] [AMOUNT] L$ : [REASON]
+ </string>
+ <string name="you_paid_ldollars_no_info">
+ Vous avez payé [AMOUNT] L$.
+ </string>
+ <string name="you_paid_ldollars_no_reason">
+ Vous avez payé à [NAME] [AMOUNT] L$.
+ </string>
+ <string name="you_paid_ldollars_no_name">
+ Vous avez payé à [AMOUNT] L$ [REASON].
+ </string>
+ <string name="you_paid_failure_ldollars">
+ Votre paiement de [AMOUNT] L$ à [NAME] [REASON] a échoué.
+ </string>
+ <string name="you_paid_failure_ldollars_gift">
+ Votre paiement de [AMOUNT] L$ à [NAME] a échoué : [REASON]
+ </string>
+ <string name="you_paid_failure_ldollars_no_info">
+ Votre paiement de [AMOUNT] L$ a échoué.
+ </string>
+ <string name="you_paid_failure_ldollars_no_reason">
+ Votre paiement de [AMOUNT] L$ à [NAME] a échoué.
+ </string>
+ <string name="you_paid_failure_ldollars_no_name">
+ Votre paiement de [AMOUNT] L$ [REASON] a échoué.
+ </string>
+ <string name="for item">
+ pour l'article suivant : [ITEM]
+ </string>
+ <string name="for a parcel of land">
+ pour une parcelle de terrain
+ </string>
+ <string name="for a land access pass">
+ pour un pass d'accès au terrain
+ </string>
+ <string name="for deeding land">
+ pour une cession de terrain
+ </string>
+ <string name="to create a group">
+ pour créer un groupe
+ </string>
+ <string name="to join a group">
+ pour rejoindre un groupe
+ </string>
+ <string name="to upload">
+ pour charger
+ </string>
+ <string name="to publish a classified ad">
+ pour publier une petite annonce
+ </string>
+ <string name="giving">
+ Donner [AMOUNT] L$
+ </string>
+ <string name="uploading_costs">
+ Le chargement coûte [AMOUNT] L$
+ </string>
+ <string name="this_costs">
+ Cela coûte [AMOUNT] L$
+ </string>
+ <string name="buying_selected_land">
+ Achat du terrain sélectionné pour [AMOUNT] L$
+ </string>
+ <string name="this_object_costs">
+ Cet objet coûte [AMOUNT] L$
+ </string>
+ <string name="group_role_everyone">
+ Tous
+ </string>
+ <string name="group_role_officers">
+ Officiers
+ </string>
+ <string name="group_role_owners">
+ Propriétaires
+ </string>
+ <string name="group_member_status_online">
+ En ligne
+ </string>
+ <string name="uploading_abuse_report">
+ Chargement...
-du rapport d'infraction</string>
- <string name="New Shape">Nouvelle silhouette</string>
- <string name="New Skin">Nouvelle peau</string>
- <string name="New Hair">Nouveaux cheveux</string>
- <string name="New Eyes">Nouveaux yeux</string>
- <string name="New Shirt">Nouvelle chemise</string>
- <string name="New Pants">Nouveau pantalon</string>
- <string name="New Shoes">Nouvelles chaussures</string>
- <string name="New Socks">Nouvelles chaussettes</string>
- <string name="New Jacket">Nouvelle veste</string>
- <string name="New Gloves">Nouveaux gants</string>
- <string name="New Undershirt">Nouveau débardeur</string>
- <string name="New Underpants">Nouveau caleçon</string>
- <string name="New Skirt">Nouvelle jupe</string>
- <string name="New Alpha">Nouvel alpha</string>
- <string name="New Tattoo">Nouveau tatouage</string>
- <string name="New Universal">Nouvel environnement universel</string>
- <string name="New Physics">Nouvelles propriétés physiques</string>
- <string name="Invalid Wearable">Objet à porter non valide</string>
- <string name="New Gesture">Nouveau geste</string>
- <string name="New Script">Nouveau script</string>
- <string name="New Note">Nouvelle note</string>
- <string name="New Folder">Nouveau dossier</string>
- <string name="Contents">Contenus</string>
- <string name="Gesture">Geste</string>
- <string name="Male Gestures">Gestes masculins</string>
- <string name="Female Gestures">Gestes féminins</string>
- <string name="Other Gestures">Autres gestes</string>
- <string name="Speech Gestures">Gestes liés à la parole</string>
- <string name="Common Gestures">Gestes communs</string>
- <string name="Male - Excuse me">Homme - Demander pardon</string>
- <string name="Male - Get lost">Homme - Get lost</string>
- <string name="Male - Blow kiss">Homme - Envoyer un baiser</string>
- <string name="Male - Boo">Homme - Hou !</string>
- <string name="Male - Bored">Homme - Ennui</string>
- <string name="Male - Hey">Homme - Hé !</string>
- <string name="Male - Laugh">Homme - Rire</string>
- <string name="Male - Repulsed">Homme - Dégoût</string>
- <string name="Male - Shrug">Homme - Hausser les épaules</string>
- <string name="Male - Stick tougue out">Homme - Tirer la langue</string>
- <string name="Male - Wow">Homme - Ouah !</string>
- <string name="Female - Chuckle">Femme - Glousser</string>
- <string name="Female - Cry">Femme - Pleurer</string>
- <string name="Female - Embarrassed">Femme - Gêne</string>
- <string name="Female - Excuse me">Femme - Demander pardon</string>
- <string name="Female - Get lost">Femme - Get lost</string>
- <string name="Female - Blow kiss">Femme - Envoyer un baiser</string>
- <string name="Female - Boo">Femme - Hou !</string>
- <string name="Female - Bored">Femme - Ennui</string>
- <string name="Female - Hey">Femme - Hé !</string>
- <string name="Female - Hey baby">Femme - Hey baby</string>
- <string name="Female - Laugh">Femme - Rire</string>
- <string name="Female - Looking good">Femme - Looking good</string>
- <string name="Female - Over here">Femme - Over here</string>
- <string name="Female - Please">Femme - Please</string>
- <string name="Female - Repulsed">Femme - Dégoût</string>
- <string name="Female - Shrug">Femme - Hausser les épaules</string>
- <string name="Female - Stick tougue out">Femme - Tirer la langue</string>
- <string name="Female - Wow">Femme - Ouah !</string>
- <string name="New Daycycle">Nouveau cycle du jour</string>
- <string name="New Water">Nouvelle eau</string>
- <string name="New Sky">Nouveau ciel</string>
- <string name="/bow">/s'incliner</string>
- <string name="/clap">/applaudir</string>
- <string name="/count">/compter</string>
- <string name="/extinguish">/éteindre</string>
- <string name="/kmb">/vatefairevoir</string>
- <string name="/muscle">/montrersesmuscles</string>
- <string name="/no">/non</string>
- <string name="/no!">/non !</string>
- <string name="/paper">/papier</string>
- <string name="/pointme">/memontrerdudoigt</string>
- <string name="/pointyou">/montrerl'autredudoigt</string>
- <string name="/rock">/pierre</string>
- <string name="/scissor">/ciseaux</string>
- <string name="/smoke">/fumer</string>
- <string name="/stretch">/bailler</string>
- <string name="/whistle">/siffler</string>
- <string name="/yes">/oui</string>
- <string name="/yes!">/oui !</string>
- <string name="afk">absent</string>
- <string name="dance1">danse1</string>
- <string name="dance2">danse2</string>
- <string name="dance3">danse3</string>
- <string name="dance4">danse4</string>
- <string name="dance5">danse5</string>
- <string name="dance6">danse6</string>
- <string name="dance7">danse7</string>
- <string name="dance8">danse8</string>
- <string name="AvatarBirthDateFormat">[day,datetime,slt]/[mthnum,datetime,slt]/[year,datetime,slt]</string>
- <string name="DefaultMimeType">aucun/aucun</string>
- <string name="texture_load_dimensions_error">Impossible de charger des images de taille supérieure à [WIDTH]*[HEIGHT]</string>
- <string name="outfit_photo_load_dimensions_error">Taille max. de la photo de la tenue : [WIDTH]*[HEIGHT]. Redimensionnez l’image ou utilisez-en une autre.</string>
- <string name="outfit_photo_select_dimensions_error">Taille max. de la photo de la tenue : [WIDTH]*[HEIGHT]. Sélectionnez une autre texture.</string>
- <string name="outfit_photo_verify_dimensions_error">Impossible de vérifier les dimensions de la photo. Attendez que la taille de la photo s’affiche dans le sélecteur.</string>
+du rapport d'infraction
+ </string>
+ <string name="New Shape">
+ Nouvelle silhouette
+ </string>
+ <string name="New Skin">
+ Nouvelle peau
+ </string>
+ <string name="New Hair">
+ Nouveaux cheveux
+ </string>
+ <string name="New Eyes">
+ Nouveaux yeux
+ </string>
+ <string name="New Shirt">
+ Nouvelle chemise
+ </string>
+ <string name="New Pants">
+ Nouveau pantalon
+ </string>
+ <string name="New Shoes">
+ Nouvelles chaussures
+ </string>
+ <string name="New Socks">
+ Nouvelles chaussettes
+ </string>
+ <string name="New Jacket">
+ Nouvelle veste
+ </string>
+ <string name="New Gloves">
+ Nouveaux gants
+ </string>
+ <string name="New Undershirt">
+ Nouveau débardeur
+ </string>
+ <string name="New Underpants">
+ Nouveau caleçon
+ </string>
+ <string name="New Skirt">
+ Nouvelle jupe
+ </string>
+ <string name="New Alpha">
+ Nouvel alpha
+ </string>
+ <string name="New Tattoo">
+ Nouveau tatouage
+ </string>
+ <string name="New Universal">
+ Nouvel environnement universel
+ </string>
+ <string name="New Physics">
+ Nouvelles propriétés physiques
+ </string>
+ <string name="Invalid Wearable">
+ Objet à porter non valide
+ </string>
+ <string name="New Gesture">
+ Nouveau geste
+ </string>
+ <string name="New Script">
+ Nouveau script
+ </string>
+ <string name="New Note">
+ Nouvelle note
+ </string>
+ <string name="New Folder">
+ Nouveau dossier
+ </string>
+ <string name="Contents">
+ Contenus
+ </string>
+ <string name="Gesture">
+ Geste
+ </string>
+ <string name="Male Gestures">
+ Gestes masculins
+ </string>
+ <string name="Female Gestures">
+ Gestes féminins
+ </string>
+ <string name="Other Gestures">
+ Autres gestes
+ </string>
+ <string name="Speech Gestures">
+ Gestes liés à la parole
+ </string>
+ <string name="Common Gestures">
+ Gestes communs
+ </string>
+ <string name="Male - Excuse me">
+ Homme - Demander pardon
+ </string>
+ <string name="Male - Get lost">
+ Homme - Get lost
+ </string>
+ <string name="Male - Blow kiss">
+ Homme - Envoyer un baiser
+ </string>
+ <string name="Male - Boo">
+ Homme - Hou !
+ </string>
+ <string name="Male - Bored">
+ Homme - Ennui
+ </string>
+ <string name="Male - Hey">
+ Homme - Hé !
+ </string>
+ <string name="Male - Laugh">
+ Homme - Rire
+ </string>
+ <string name="Male - Repulsed">
+ Homme - Dégoût
+ </string>
+ <string name="Male - Shrug">
+ Homme - Hausser les épaules
+ </string>
+ <string name="Male - Stick tougue out">
+ Homme - Tirer la langue
+ </string>
+ <string name="Male - Wow">
+ Homme - Ouah !
+ </string>
+ <string name="Female - Chuckle">
+ Femme - Glousser
+ </string>
+ <string name="Female - Cry">
+ Femme - Pleurer
+ </string>
+ <string name="Female - Embarrassed">
+ Femme - Gêne
+ </string>
+ <string name="Female - Excuse me">
+ Femme - Demander pardon
+ </string>
+ <string name="Female - Get lost">
+ Femme - Get lost
+ </string>
+ <string name="Female - Blow kiss">
+ Femme - Envoyer un baiser
+ </string>
+ <string name="Female - Boo">
+ Femme - Hou !
+ </string>
+ <string name="Female - Bored">
+ Femme - Ennui
+ </string>
+ <string name="Female - Hey">
+ Femme - Hé !
+ </string>
+ <string name="Female - Hey baby">
+ Femme - Hey baby
+ </string>
+ <string name="Female - Laugh">
+ Femme - Rire
+ </string>
+ <string name="Female - Looking good">
+ Femme - Looking good
+ </string>
+ <string name="Female - Over here">
+ Femme - Over here
+ </string>
+ <string name="Female - Please">
+ Femme - Please
+ </string>
+ <string name="Female - Repulsed">
+ Femme - Dégoût
+ </string>
+ <string name="Female - Shrug">
+ Femme - Hausser les épaules
+ </string>
+ <string name="Female - Stick tougue out">
+ Femme - Tirer la langue
+ </string>
+ <string name="Female - Wow">
+ Femme - Ouah !
+ </string>
+ <string name="New Daycycle">
+ Nouveau cycle du jour
+ </string>
+ <string name="New Water">
+ Nouvelle eau
+ </string>
+ <string name="New Sky">
+ Nouveau ciel
+ </string>
+ <string name="/bow">
+ /s'incliner
+ </string>
+ <string name="/clap">
+ /applaudir
+ </string>
+ <string name="/count">
+ /compter
+ </string>
+ <string name="/extinguish">
+ /éteindre
+ </string>
+ <string name="/kmb">
+ /vatefairevoir
+ </string>
+ <string name="/muscle">
+ /montrersesmuscles
+ </string>
+ <string name="/no">
+ /non
+ </string>
+ <string name="/no!">
+ /non !
+ </string>
+ <string name="/paper">
+ /papier
+ </string>
+ <string name="/pointme">
+ /memontrerdudoigt
+ </string>
+ <string name="/pointyou">
+ /montrerl'autredudoigt
+ </string>
+ <string name="/rock">
+ /pierre
+ </string>
+ <string name="/scissor">
+ /ciseaux
+ </string>
+ <string name="/smoke">
+ /fumer
+ </string>
+ <string name="/stretch">
+ /bailler
+ </string>
+ <string name="/whistle">
+ /siffler
+ </string>
+ <string name="/yes">
+ /oui
+ </string>
+ <string name="/yes!">
+ /oui !
+ </string>
+ <string name="afk">
+ absent
+ </string>
+ <string name="dance1">
+ danse1
+ </string>
+ <string name="dance2">
+ danse2
+ </string>
+ <string name="dance3">
+ danse3
+ </string>
+ <string name="dance4">
+ danse4
+ </string>
+ <string name="dance5">
+ danse5
+ </string>
+ <string name="dance6">
+ danse6
+ </string>
+ <string name="dance7">
+ danse7
+ </string>
+ <string name="dance8">
+ danse8
+ </string>
+ <string name="AvatarBirthDateFormat">
+ [day,datetime,slt]/[mthnum,datetime,slt]/[year,datetime,slt]
+ </string>
+ <string name="DefaultMimeType">
+ aucun/aucun
+ </string>
+ <string name="texture_load_dimensions_error">
+ Impossible de charger des images de taille supérieure à [WIDTH]*[HEIGHT]
+ </string>
+ <string name="outfit_photo_load_dimensions_error">
+ Taille max. de la photo de la tenue : [WIDTH]*[HEIGHT]. Redimensionnez l’image ou utilisez-en une autre.
+ </string>
+ <string name="outfit_photo_select_dimensions_error">
+ Taille max. de la photo de la tenue : [WIDTH]*[HEIGHT]. Sélectionnez une autre texture.
+ </string>
+ <string name="outfit_photo_verify_dimensions_error">
+ Impossible de vérifier les dimensions de la photo. Attendez que la taille de la photo s’affiche dans le sélecteur.
+ </string>
<string name="words_separator" value=","/>
- <string name="server_is_down">Malgré nos efforts, une erreur inattendue s’est produite.
+ <string name="server_is_down">
+ Malgré nos efforts, une erreur inattendue s’est produite.
Veuillez vous reporter à http://status.secondlifegrid.net afin de déterminer si un problème connu existe avec ce service.
- Si le problème persiste, vérifiez la configuration de votre réseau et de votre pare-feu.</string>
- <string name="dateTimeWeekdaysNames">Sunday:Monday:Tuesday:Wednesday:Thursday:Friday:Saturday</string>
- <string name="dateTimeWeekdaysShortNames">Sun:Mon:Tue:Wed:Thu:Fri:Sat</string>
- <string name="dateTimeMonthNames">January:February:March:April:May:June:July:August:September:October:November:December</string>
- <string name="dateTimeMonthShortNames">Jan:Feb:Mar:Apr:May:Jun:Jul:Aug:Sep:Oct:Nov:Dec</string>
- <string name="dateTimeDayFormat">[MDAY]</string>
- <string name="dateTimeAM">AM</string>
- <string name="dateTimePM">PM</string>
- <string name="LocalEstimateUSD">[AMOUNT] US$</string>
- <string name="Group Ban">Bannissement de groupe</string>
- <string name="Membership">Inscription</string>
- <string name="Roles">Rôles</string>
- <string name="Group Identity">Identité du groupe</string>
- <string name="Parcel Management">Gestion des parcelles</string>
- <string name="Parcel Identity">Identité des parcelles</string>
- <string name="Parcel Settings">Paramètres des parcelles</string>
- <string name="Parcel Powers">Pouvoirs sur les parcelles</string>
- <string name="Parcel Access">Accès aux parcelles</string>
- <string name="Parcel Content">Contenu des parcelles</string>
- <string name="Object Management">Gestion des objets</string>
- <string name="Accounting">Comptabilité</string>
- <string name="Notices">Notices</string>
- <string name="Chat" value=" Chat :">Chat</string>
- <string name="BaseMembership">Base</string>
- <string name="PremiumMembership">Premium</string>
- <string name="Premium_PlusMembership">Premium Plus</string>
- <string name="DeleteItems">Supprimer les articles sélectionnés ?</string>
- <string name="DeleteItem">Supprimer l'article sélectionné ?</string>
- <string name="EmptyOutfitText">Cette tenue ne contient aucun article.</string>
- <string name="ExternalEditorNotSet">Sélectionnez un éditeur à l'aide du paramètre ExternalEditor.</string>
- <string name="ExternalEditorNotFound">Éditeur externe spécifié introuvable.
+ Si le problème persiste, vérifiez la configuration de votre réseau et de votre pare-feu.
+ </string>
+ <string name="dateTimeWeekdaysNames">
+ Sunday:Monday:Tuesday:Wednesday:Thursday:Friday:Saturday
+ </string>
+ <string name="dateTimeWeekdaysShortNames">
+ Sun:Mon:Tue:Wed:Thu:Fri:Sat
+ </string>
+ <string name="dateTimeMonthNames">
+ January:February:March:April:May:June:July:August:September:October:November:December
+ </string>
+ <string name="dateTimeMonthShortNames">
+ Jan:Feb:Mar:Apr:May:Jun:Jul:Aug:Sep:Oct:Nov:Dec
+ </string>
+ <string name="dateTimeDayFormat">
+ [MDAY]
+ </string>
+ <string name="dateTimeAM">
+ AM
+ </string>
+ <string name="dateTimePM">
+ PM
+ </string>
+ <string name="LocalEstimateUSD">
+ [AMOUNT] US$
+ </string>
+ <string name="Group Ban">
+ Bannissement de groupe
+ </string>
+ <string name="Membership">
+ Inscription
+ </string>
+ <string name="Roles">
+ Rôles
+ </string>
+ <string name="Group Identity">
+ Identité du groupe
+ </string>
+ <string name="Parcel Management">
+ Gestion des parcelles
+ </string>
+ <string name="Parcel Identity">
+ Identité des parcelles
+ </string>
+ <string name="Parcel Settings">
+ Paramètres des parcelles
+ </string>
+ <string name="Parcel Powers">
+ Pouvoirs sur les parcelles
+ </string>
+ <string name="Parcel Access">
+ Accès aux parcelles
+ </string>
+ <string name="Parcel Content">
+ Contenu des parcelles
+ </string>
+ <string name="Object Management">
+ Gestion des objets
+ </string>
+ <string name="Accounting">
+ Comptabilité
+ </string>
+ <string name="Notices">
+ Notices
+ </string>
+ <string name="Chat" value=" Chat :">
+ Chat
+ </string>
+ <string name="BaseMembership">
+ Base
+ </string>
+ <string name="PremiumMembership">
+ Premium
+ </string>
+ <string name="Premium_PlusMembership">
+ Premium Plus
+ </string>
+ <string name="DeleteItems">
+ Supprimer les articles sélectionnés ?
+ </string>
+ <string name="DeleteItem">
+ Supprimer l'article sélectionné ?
+ </string>
+ <string name="EmptyOutfitText">
+ Cette tenue ne contient aucun article.
+ </string>
+ <string name="ExternalEditorNotSet">
+ Sélectionnez un éditeur à l'aide du paramètre ExternalEditor.
+ </string>
+ <string name="ExternalEditorNotFound">
+ Éditeur externe spécifié introuvable.
Essayez avec le chemin d'accès à l'éditeur entre guillemets doubles
-(par ex. : &quot;/chemin_accès/editor&quot; &quot;%s&quot;).</string>
- <string name="ExternalEditorCommandParseError">Erreur lors de l'analyse de la commande d'éditeur externe.</string>
- <string name="ExternalEditorFailedToRun">Échec d'exécution de l'éditeur externe.</string>
- <string name="TranslationFailed">Échec de traduction : [REASON]</string>
- <string name="TranslationResponseParseError">Erreur lors de l'analyse de la réponse relative à la traduction.</string>
- <string name="Esc">Échap</string>
- <string name="Space">Space</string>
- <string name="Enter">Enter</string>
- <string name="Tab">Tab</string>
- <string name="Ins">Ins</string>
- <string name="Del">Del</string>
- <string name="Backsp">Backsp</string>
- <string name="Shift">Maj</string>
- <string name="Ctrl">Ctrl</string>
- <string name="Alt">Alt</string>
- <string name="CapsLock">CapsLock</string>
- <string name="Home">Début</string>
- <string name="End">End</string>
- <string name="PgUp">PgUp</string>
- <string name="PgDn">PgDn</string>
- <string name="F1">F1</string>
- <string name="F2">F2</string>
- <string name="F3">F3</string>
- <string name="F4">F4</string>
- <string name="F5">F5</string>
- <string name="F6">F6</string>
- <string name="F7">F7</string>
- <string name="F8">F8</string>
- <string name="F9">F9</string>
- <string name="F10">F10</string>
- <string name="F11">F11</string>
- <string name="F12">F12</string>
- <string name="Add">Ajouter</string>
- <string name="Subtract">Soustraire</string>
- <string name="Multiply">Multiplier</string>
- <string name="Divide">Diviser</string>
- <string name="PAD_DIVIDE">PAD_DIVIDE</string>
- <string name="PAD_LEFT">PAD_LEFT</string>
- <string name="PAD_RIGHT">PAD_RIGHT</string>
- <string name="PAD_DOWN">PAD_DOWN</string>
- <string name="PAD_UP">PAD_UP</string>
- <string name="PAD_HOME">PAD_HOME</string>
- <string name="PAD_END">PAD_END</string>
- <string name="PAD_PGUP">PAD_PGUP</string>
- <string name="PAD_PGDN">PAD_PGDN</string>
- <string name="PAD_CENTER">PAD_CENTER</string>
- <string name="PAD_INS">PAD_INS</string>
- <string name="PAD_DEL">PAD_DEL</string>
- <string name="PAD_Enter">PAD_Enter</string>
- <string name="PAD_BUTTON0">PAD_BUTTON0</string>
- <string name="PAD_BUTTON1">PAD_BUTTON1</string>
- <string name="PAD_BUTTON2">PAD_BUTTON2</string>
- <string name="PAD_BUTTON3">PAD_BUTTON3</string>
- <string name="PAD_BUTTON4">PAD_BUTTON4</string>
- <string name="PAD_BUTTON5">PAD_BUTTON5</string>
- <string name="PAD_BUTTON6">PAD_BUTTON6</string>
- <string name="PAD_BUTTON7">PAD_BUTTON7</string>
- <string name="PAD_BUTTON8">PAD_BUTTON8</string>
- <string name="PAD_BUTTON9">PAD_BUTTON9</string>
- <string name="PAD_BUTTON10">PAD_BUTTON10</string>
- <string name="PAD_BUTTON11">PAD_BUTTON11</string>
- <string name="PAD_BUTTON12">PAD_BUTTON12</string>
- <string name="PAD_BUTTON13">PAD_BUTTON13</string>
- <string name="PAD_BUTTON14">PAD_BUTTON14</string>
- <string name="PAD_BUTTON15">PAD_BUTTON15</string>
- <string name="-">-</string>
- <string name="=">=</string>
- <string name="`">`</string>
- <string name=";">;</string>
- <string name="[">[</string>
- <string name="]">]</string>
- <string name="\">\</string>
- <string name="0">0</string>
- <string name="1">1</string>
- <string name="2">2</string>
- <string name="3">3</string>
- <string name="4">4</string>
- <string name="5">5</string>
- <string name="6">6</string>
- <string name="7">7</string>
- <string name="8">8</string>
- <string name="9">9</string>
- <string name="A">A</string>
- <string name="B">B</string>
- <string name="C">C</string>
- <string name="D">D</string>
- <string name="E">E</string>
- <string name="F">F</string>
- <string name="G">G</string>
- <string name="H">H</string>
- <string name="I">I</string>
- <string name="J">J</string>
- <string name="K">K</string>
- <string name="L">L</string>
- <string name="M">M</string>
- <string name="N">N</string>
- <string name="O">O</string>
- <string name="P">P</string>
- <string name="Q">Q</string>
- <string name="R">R</string>
- <string name="S">S</string>
- <string name="T">T</string>
- <string name="U">U</string>
- <string name="V">V</string>
- <string name="W">W</string>
- <string name="X">X</string>
- <string name="Y">Y</string>
- <string name="Z">Z</string>
- <string name="BeaconParticle">Affichage des balises de particule (bleu)</string>
- <string name="BeaconPhysical">Affichage des balises d'objet physique (vert)</string>
- <string name="BeaconScripted">Affichage des balises d'objet scripté (rouge)</string>
- <string name="BeaconScriptedTouch">Affichage des balises d'objet scripté avec fonction de toucher (rouge)</string>
- <string name="BeaconSound">Affichage des balises de son (jaune)</string>
- <string name="BeaconMedia">Affichage des balises de média (blanc)</string>
- <string name="BeaconSun">Balise de visibilité du soleil (orange)</string>
- <string name="BeaconMoon">Observation de la balise de direction de la lune (violet)</string>
- <string name="ParticleHiding">Masquage des particules</string>
- <string name="Command_AboutLand_Label">À propos du terrain</string>
- <string name="Command_Appearance_Label">Apparence</string>
- <string name="Command_Avatar_Label">Avatar</string>
- <string name="Command_Build_Label">Construire</string>
- <string name="Command_Chat_Label">Chat</string>
- <string name="Command_Conversations_Label">Conversations</string>
- <string name="Command_Compass_Label">Boussole</string>
- <string name="Command_Destinations_Label">Destinations</string>
- <string name="Command_Environments_Label">Mes environnements</string>
- <string name="Command_Facebook_Label">Facebook</string>
- <string name="Command_Flickr_Label">Flickr</string>
- <string name="Command_Gestures_Label">Gestes</string>
- <string name="Command_Grid_Status_Label">État de la grille</string>
- <string name="Command_HowTo_Label">Aide rapide</string>
- <string name="Command_Inventory_Label">Inventaire</string>
- <string name="Command_Map_Label">Carte</string>
- <string name="Command_Marketplace_Label">Place du marché</string>
- <string name="Command_MarketplaceListings_Label">Place du marché</string>
- <string name="Command_MiniMap_Label">Mini-carte</string>
- <string name="Command_Move_Label">Marcher / Courir / Voler</string>
- <string name="Command_Outbox_Label">Boîte d'envoi vendeur</string>
- <string name="Command_People_Label">Personnes</string>
- <string name="Command_Picks_Label">Favoris</string>
- <string name="Command_Places_Label">Lieux</string>
- <string name="Command_Preferences_Label">Préférences</string>
- <string name="Command_Profile_Label">Profil</string>
- <string name="Command_Report_Abuse_Label">Signaler une infraction</string>
- <string name="Command_Search_Label">Recherche</string>
- <string name="Command_Snapshot_Label">Photo</string>
- <string name="Command_Speak_Label">Parler</string>
- <string name="Command_Twitter_Label">Twitter</string>
- <string name="Command_View_Label">Caméra</string>
- <string name="Command_Voice_Label">Paramètres vocaux</string>
- <string name="Command_AboutLand_Tooltip">Information sur le terrain que vous visitez</string>
- <string name="Command_Appearance_Tooltip">Modifier votre avatar</string>
- <string name="Command_Avatar_Tooltip">Choisir un avatar complet</string>
- <string name="Command_Build_Tooltip">Construction d'objets et remodelage du terrain</string>
- <string name="Command_Chat_Tooltip">Parler aux personnes près de vous par chat écrit</string>
- <string name="Command_Conversations_Tooltip">Parler à quelqu'un</string>
- <string name="Command_Compass_Tooltip">Boussole</string>
- <string name="Command_Destinations_Tooltip">Destinations intéressantes</string>
- <string name="Command_Environments_Tooltip">Mes environnements</string>
- <string name="Command_Facebook_Tooltip">Publier sur Facebook</string>
- <string name="Command_Flickr_Tooltip">Charger sur Flickr</string>
- <string name="Command_Gestures_Tooltip">Gestes de votre avatar</string>
- <string name="Command_Grid_Status_Tooltip">Afficher l’état actuel de la grille</string>
- <string name="Command_HowTo_Tooltip">Comment effectuer les opérations courantes</string>
- <string name="Command_Inventory_Tooltip">Afficher et utiliser vos possessions</string>
- <string name="Command_Map_Tooltip">Carte du monde</string>
- <string name="Command_Marketplace_Tooltip">Faire du shopping</string>
- <string name="Command_MarketplaceListings_Tooltip">Vendez votre création</string>
- <string name="Command_MiniMap_Tooltip">Afficher les personnes près de vous</string>
- <string name="Command_Move_Tooltip">Faire bouger votre avatar</string>
- <string name="Command_Outbox_Tooltip">Transférer des articles vers votre place de marché afin de les vendre.</string>
- <string name="Command_People_Tooltip">Amis, groupes et personnes près de vous</string>
- <string name="Command_Picks_Tooltip">Lieux à afficher comme favoris dans votre profil</string>
- <string name="Command_Places_Tooltip">Lieux enregistrés</string>
- <string name="Command_Preferences_Tooltip">Préférences</string>
- <string name="Command_Profile_Tooltip">Modifier ou afficher votre profil</string>
- <string name="Command_Report_Abuse_Tooltip">Signaler une infraction</string>
- <string name="Command_Search_Tooltip">Trouver des lieux, personnes, événements</string>
- <string name="Command_Snapshot_Tooltip">Prendre une photo</string>
- <string name="Command_Speak_Tooltip">Parler aux personnes près de vous en utilisant votre micro</string>
- <string name="Command_Twitter_Tooltip">Twitter</string>
- <string name="Command_View_Tooltip">Changer l'angle de la caméra</string>
- <string name="Command_Voice_Tooltip">Commandes de réglage du volume des appels et des personnes près de vous dans Second Life.</string>
- <string name="Toolbar_Bottom_Tooltip">actuellement dans la barre d'outils du bas</string>
- <string name="Toolbar_Left_Tooltip">actuellement dans la barre d'outils de gauche</string>
- <string name="Toolbar_Right_Tooltip">actuellement dans la barre d'outils de droite</string>
- <string name="Retain%">Garder%</string>
- <string name="Detail">Détail</string>
- <string name="Better Detail">Meilleur détail</string>
- <string name="Surface">Surface</string>
- <string name="Solid">Solide</string>
- <string name="Wrap">Wrap</string>
- <string name="Preview">Aperçu</string>
- <string name="Normal">Normal</string>
- <string name="Pathfinding_Wiki_URL">http://wiki.secondlife.com/wiki/Pathfinding_Tools_in_the_Second_Life_Viewer</string>
- <string name="Pathfinding_Object_Attr_None">Aucun</string>
- <string name="Pathfinding_Object_Attr_Permanent">Maillage de navigation affecté</string>
- <string name="Pathfinding_Object_Attr_Character">Personnage</string>
- <string name="Pathfinding_Object_Attr_MultiSelect">(Multiple)</string>
- <string name="snapshot_quality_very_low">Très faible</string>
- <string name="snapshot_quality_low">Faible</string>
- <string name="snapshot_quality_medium">Moyenne</string>
- <string name="snapshot_quality_high">Élevée</string>
- <string name="snapshot_quality_very_high">Très élevée</string>
- <string name="TeleportMaturityExceeded">Le résident ne peut pas visiter cette région.</string>
- <string name="UserDictionary">[User]</string>
- <string name="experience_tools_experience">Expérience</string>
- <string name="ExperienceNameNull">(aucune expérience)</string>
- <string name="ExperienceNameUntitled">(expérience sans titre)</string>
- <string name="Land-Scope">À l’échelle des terrains</string>
- <string name="Grid-Scope">À l’échelle de la grille</string>
- <string name="Allowed_Experiences_Tab">AUTORISÉE</string>
- <string name="Blocked_Experiences_Tab">BLOQUÉE</string>
- <string name="Contrib_Experiences_Tab">CONTRIBUTEUR</string>
- <string name="Admin_Experiences_Tab">ADMIN</string>
- <string name="Recent_Experiences_Tab">RÉCENTE</string>
- <string name="Owned_Experiences_Tab">AVEC PROPRIÉTAIRE</string>
- <string name="ExperiencesCounter">([EXPERIENCES], [MAXEXPERIENCES] max.)</string>
- <string name="ExperiencePermission1">assumer vos contrôles</string>
- <string name="ExperiencePermission3">déclencher des animations pour votre avatar</string>
- <string name="ExperiencePermission4">attacher à votre avatar</string>
- <string name="ExperiencePermission9">suivre votre caméra</string>
- <string name="ExperiencePermission10">contrôler votre caméra</string>
- <string name="ExperiencePermission11">vous téléporter</string>
- <string name="ExperiencePermission12">accepter automatiquement les permissions d’expérience</string>
- <string name="ExperiencePermission16">forcez votre avatar à s’asseoir</string>
- <string name="ExperiencePermission17">changer vos paramètres d'environnement</string>
- <string name="ExperiencePermissionShortUnknown">a effectué une opération inconnue : [Permission]</string>
- <string name="ExperiencePermissionShort1">Prendre le contrôle</string>
- <string name="ExperiencePermissionShort3">Déclencher des animations</string>
- <string name="ExperiencePermissionShort4">Attacher</string>
- <string name="ExperiencePermissionShort9">Suivre la caméra</string>
- <string name="ExperiencePermissionShort10">Contrôler la caméra</string>
- <string name="ExperiencePermissionShort11">Téléportation</string>
- <string name="ExperiencePermissionShort12">Permission</string>
- <string name="ExperiencePermissionShort16">M'asseoir</string>
- <string name="ExperiencePermissionShort17">Environnement</string>
- <string name="logging_calls_disabled_log_empty">Les conversations ne sont pas archivées. Pour commencer à tenir un journal, choisissez Enregistrer : Journal seul ou Enregistrer : Journal et transcriptions sous Préférences &gt; Chat.</string>
- <string name="logging_calls_disabled_log_not_empty">Aucune conversation ne sera plus enregistrée. Pour recommencer à tenir un journal, choisissez Enregistrer : Journal seul ou Enregistrer : Journal et transcriptions sous Préférences &gt; Chat.</string>
- <string name="logging_calls_enabled_log_empty">Il n'y a aucune conversation enregistrée. Quand quelqu'un vous contacte ou quand vous contactez quelqu'un, une entrée de journal s'affiche ici.</string>
- <string name="loading_chat_logs">Chargement...</string>
- <string name="na">s.o.</string>
- <string name="preset_combo_label">-Liste vide-</string>
- <string name="Default">Valeur par défaut</string>
- <string name="none_paren_cap">(Aucun/Aucune)</string>
- <string name="no_limit">Aucune limite</string>
- <string name="Mav_Details_MAV_FOUND_DEGENERATE_TRIANGLES">La forme physique contient des triangles trop petits. Essayez de simplifier le modèle physique.</string>
- <string name="Mav_Details_MAV_CONFIRMATION_DATA_MISMATCH">La forme physique contient de mauvaises données de confirmation. Essayez de corriger le modèle physique.</string>
- <string name="Mav_Details_MAV_UNKNOWN_VERSION">La forme physique n’a pas la version correcte. Configurez la version correcte pour le modèle physique.</string>
- <string name="couldnt_resolve_host">DNS n'a pas pu résoudre le nom d'hôte([HOSTNAME]).
+(par ex. : "/chemin_accès/editor" "%s").
+ </string>
+ <string name="ExternalEditorCommandParseError">
+ Erreur lors de l'analyse de la commande d'éditeur externe.
+ </string>
+ <string name="ExternalEditorFailedToRun">
+ Échec d'exécution de l'éditeur externe.
+ </string>
+ <string name="TranslationFailed">
+ Échec de traduction : [REASON]
+ </string>
+ <string name="TranslationResponseParseError">
+ Erreur lors de l'analyse de la réponse relative à la traduction.
+ </string>
+ <string name="Esc">
+ Échap
+ </string>
+ <string name="Space">
+ Space
+ </string>
+ <string name="Enter">
+ Enter
+ </string>
+ <string name="Tab">
+ Tab
+ </string>
+ <string name="Ins">
+ Ins
+ </string>
+ <string name="Del">
+ Del
+ </string>
+ <string name="Backsp">
+ Backsp
+ </string>
+ <string name="Shift">
+ Maj
+ </string>
+ <string name="Ctrl">
+ Ctrl
+ </string>
+ <string name="Alt">
+ Alt
+ </string>
+ <string name="CapsLock">
+ CapsLock
+ </string>
+ <string name="Home">
+ Début
+ </string>
+ <string name="End">
+ End
+ </string>
+ <string name="PgUp">
+ PgUp
+ </string>
+ <string name="PgDn">
+ PgDn
+ </string>
+ <string name="F1">
+ F1
+ </string>
+ <string name="F2">
+ F2
+ </string>
+ <string name="F3">
+ F3
+ </string>
+ <string name="F4">
+ F4
+ </string>
+ <string name="F5">
+ F5
+ </string>
+ <string name="F6">
+ F6
+ </string>
+ <string name="F7">
+ F7
+ </string>
+ <string name="F8">
+ F8
+ </string>
+ <string name="F9">
+ F9
+ </string>
+ <string name="F10">
+ F10
+ </string>
+ <string name="F11">
+ F11
+ </string>
+ <string name="F12">
+ F12
+ </string>
+ <string name="Add">
+ Ajouter
+ </string>
+ <string name="Subtract">
+ Soustraire
+ </string>
+ <string name="Multiply">
+ Multiplier
+ </string>
+ <string name="Divide">
+ Diviser
+ </string>
+ <string name="PAD_DIVIDE">
+ PAD_DIVIDE
+ </string>
+ <string name="PAD_LEFT">
+ PAD_LEFT
+ </string>
+ <string name="PAD_RIGHT">
+ PAD_RIGHT
+ </string>
+ <string name="PAD_DOWN">
+ PAD_DOWN
+ </string>
+ <string name="PAD_UP">
+ PAD_UP
+ </string>
+ <string name="PAD_HOME">
+ PAD_HOME
+ </string>
+ <string name="PAD_END">
+ PAD_END
+ </string>
+ <string name="PAD_PGUP">
+ PAD_PGUP
+ </string>
+ <string name="PAD_PGDN">
+ PAD_PGDN
+ </string>
+ <string name="PAD_CENTER">
+ PAD_CENTER
+ </string>
+ <string name="PAD_INS">
+ PAD_INS
+ </string>
+ <string name="PAD_DEL">
+ PAD_DEL
+ </string>
+ <string name="PAD_Enter">
+ PAD_Enter
+ </string>
+ <string name="PAD_BUTTON0">
+ PAD_BUTTON0
+ </string>
+ <string name="PAD_BUTTON1">
+ PAD_BUTTON1
+ </string>
+ <string name="PAD_BUTTON2">
+ PAD_BUTTON2
+ </string>
+ <string name="PAD_BUTTON3">
+ PAD_BUTTON3
+ </string>
+ <string name="PAD_BUTTON4">
+ PAD_BUTTON4
+ </string>
+ <string name="PAD_BUTTON5">
+ PAD_BUTTON5
+ </string>
+ <string name="PAD_BUTTON6">
+ PAD_BUTTON6
+ </string>
+ <string name="PAD_BUTTON7">
+ PAD_BUTTON7
+ </string>
+ <string name="PAD_BUTTON8">
+ PAD_BUTTON8
+ </string>
+ <string name="PAD_BUTTON9">
+ PAD_BUTTON9
+ </string>
+ <string name="PAD_BUTTON10">
+ PAD_BUTTON10
+ </string>
+ <string name="PAD_BUTTON11">
+ PAD_BUTTON11
+ </string>
+ <string name="PAD_BUTTON12">
+ PAD_BUTTON12
+ </string>
+ <string name="PAD_BUTTON13">
+ PAD_BUTTON13
+ </string>
+ <string name="PAD_BUTTON14">
+ PAD_BUTTON14
+ </string>
+ <string name="PAD_BUTTON15">
+ PAD_BUTTON15
+ </string>
+ <string name="-">
+ -
+ </string>
+ <string name="=">
+ =
+ </string>
+ <string name="`">
+ `
+ </string>
+ <string name=";">
+ ;
+ </string>
+ <string name="[">
+ [
+ </string>
+ <string name="]">
+ ]
+ </string>
+ <string name="\">
+ \
+ </string>
+ <string name="0">
+ 0
+ </string>
+ <string name="1">
+ 1
+ </string>
+ <string name="2">
+ 2
+ </string>
+ <string name="3">
+ 3
+ </string>
+ <string name="4">
+ 4
+ </string>
+ <string name="5">
+ 5
+ </string>
+ <string name="6">
+ 6
+ </string>
+ <string name="7">
+ 7
+ </string>
+ <string name="8">
+ 8
+ </string>
+ <string name="9">
+ 9
+ </string>
+ <string name="A">
+ A
+ </string>
+ <string name="B">
+ B
+ </string>
+ <string name="C">
+ C
+ </string>
+ <string name="D">
+ D
+ </string>
+ <string name="E">
+ E
+ </string>
+ <string name="F">
+ F
+ </string>
+ <string name="G">
+ G
+ </string>
+ <string name="H">
+ H
+ </string>
+ <string name="I">
+ I
+ </string>
+ <string name="J">
+ J
+ </string>
+ <string name="K">
+ K
+ </string>
+ <string name="L">
+ L
+ </string>
+ <string name="M">
+ M
+ </string>
+ <string name="N">
+ N
+ </string>
+ <string name="O">
+ O
+ </string>
+ <string name="P">
+ P
+ </string>
+ <string name="Q">
+ Q
+ </string>
+ <string name="R">
+ R
+ </string>
+ <string name="S">
+ S
+ </string>
+ <string name="T">
+ T
+ </string>
+ <string name="U">
+ U
+ </string>
+ <string name="V">
+ V
+ </string>
+ <string name="W">
+ W
+ </string>
+ <string name="X">
+ X
+ </string>
+ <string name="Y">
+ Y
+ </string>
+ <string name="Z">
+ Z
+ </string>
+ <string name="BeaconParticle">
+ Affichage des balises de particule (bleu)
+ </string>
+ <string name="BeaconPhysical">
+ Affichage des balises d'objet physique (vert)
+ </string>
+ <string name="BeaconScripted">
+ Affichage des balises d'objet scripté (rouge)
+ </string>
+ <string name="BeaconScriptedTouch">
+ Affichage des balises d'objet scripté avec fonction de toucher (rouge)
+ </string>
+ <string name="BeaconSound">
+ Affichage des balises de son (jaune)
+ </string>
+ <string name="BeaconMedia">
+ Affichage des balises de média (blanc)
+ </string>
+ <string name="BeaconSun">
+ Balise de visibilité du soleil (orange)
+ </string>
+ <string name="BeaconMoon">
+ Observation de la balise de direction de la lune (violet)
+ </string>
+ <string name="ParticleHiding">
+ Masquage des particules
+ </string>
+ <string name="Command_AboutLand_Label">
+ À propos du terrain
+ </string>
+ <string name="Command_Appearance_Label">
+ Apparence
+ </string>
+ <string name="Command_Avatar_Label">
+ Avatar
+ </string>
+ <string name="Command_Build_Label">
+ Construire
+ </string>
+ <string name="Command_Chat_Label">
+ Chat
+ </string>
+ <string name="Command_Conversations_Label">
+ Conversations
+ </string>
+ <string name="Command_Compass_Label">
+ Boussole
+ </string>
+ <string name="Command_Destinations_Label">
+ Destinations
+ </string>
+ <string name="Command_Environments_Label">
+ Mes environnements
+ </string>
+ <string name="Command_Facebook_Label">
+ Facebook
+ </string>
+ <string name="Command_Flickr_Label">
+ Flickr
+ </string>
+ <string name="Command_Gestures_Label">
+ Gestes
+ </string>
+ <string name="Command_Grid_Status_Label">
+ État de la grille
+ </string>
+ <string name="Command_HowTo_Label">
+ Aide rapide
+ </string>
+ <string name="Command_Inventory_Label">
+ Inventaire
+ </string>
+ <string name="Command_Map_Label">
+ Carte
+ </string>
+ <string name="Command_Marketplace_Label">
+ Place du marché
+ </string>
+ <string name="Command_MarketplaceListings_Label">
+ Place du marché
+ </string>
+ <string name="Command_MiniMap_Label">
+ Mini-carte
+ </string>
+ <string name="Command_Move_Label">
+ Marcher / Courir / Voler
+ </string>
+ <string name="Command_Outbox_Label">
+ Boîte d'envoi vendeur
+ </string>
+ <string name="Command_People_Label">
+ Personnes
+ </string>
+ <string name="Command_Picks_Label">
+ Favoris
+ </string>
+ <string name="Command_Places_Label">
+ Lieux
+ </string>
+ <string name="Command_Preferences_Label">
+ Préférences
+ </string>
+ <string name="Command_Profile_Label">
+ Profil
+ </string>
+ <string name="Command_Report_Abuse_Label">
+ Signaler une infraction
+ </string>
+ <string name="Command_Search_Label">
+ Recherche
+ </string>
+ <string name="Command_Snapshot_Label">
+ Photo
+ </string>
+ <string name="Command_Speak_Label">
+ Parler
+ </string>
+ <string name="Command_Twitter_Label">
+ Twitter
+ </string>
+ <string name="Command_View_Label">
+ Caméra
+ </string>
+ <string name="Command_Voice_Label">
+ Paramètres vocaux
+ </string>
+ <string name="Command_AboutLand_Tooltip">
+ Information sur le terrain que vous visitez
+ </string>
+ <string name="Command_Appearance_Tooltip">
+ Modifier votre avatar
+ </string>
+ <string name="Command_Avatar_Tooltip">
+ Choisir un avatar complet
+ </string>
+ <string name="Command_Build_Tooltip">
+ Construction d'objets et remodelage du terrain
+ </string>
+ <string name="Command_Chat_Tooltip">
+ Parler aux personnes près de vous par chat écrit
+ </string>
+ <string name="Command_Conversations_Tooltip">
+ Parler à quelqu'un
+ </string>
+ <string name="Command_Compass_Tooltip">
+ Boussole
+ </string>
+ <string name="Command_Destinations_Tooltip">
+ Destinations intéressantes
+ </string>
+ <string name="Command_Environments_Tooltip">
+ Mes environnements
+ </string>
+ <string name="Command_Facebook_Tooltip">
+ Publier sur Facebook
+ </string>
+ <string name="Command_Flickr_Tooltip">
+ Charger sur Flickr
+ </string>
+ <string name="Command_Gestures_Tooltip">
+ Gestes de votre avatar
+ </string>
+ <string name="Command_Grid_Status_Tooltip">
+ Afficher l’état actuel de la grille
+ </string>
+ <string name="Command_HowTo_Tooltip">
+ Comment effectuer les opérations courantes
+ </string>
+ <string name="Command_Inventory_Tooltip">
+ Afficher et utiliser vos possessions
+ </string>
+ <string name="Command_Map_Tooltip">
+ Carte du monde
+ </string>
+ <string name="Command_Marketplace_Tooltip">
+ Faire du shopping
+ </string>
+ <string name="Command_MarketplaceListings_Tooltip">
+ Vendez votre création
+ </string>
+ <string name="Command_MiniMap_Tooltip">
+ Afficher les personnes près de vous
+ </string>
+ <string name="Command_Move_Tooltip">
+ Faire bouger votre avatar
+ </string>
+ <string name="Command_Outbox_Tooltip">
+ Transférer des articles vers votre place de marché afin de les vendre.
+ </string>
+ <string name="Command_People_Tooltip">
+ Amis, groupes et personnes près de vous
+ </string>
+ <string name="Command_Picks_Tooltip">
+ Lieux à afficher comme favoris dans votre profil
+ </string>
+ <string name="Command_Places_Tooltip">
+ Lieux enregistrés
+ </string>
+ <string name="Command_Preferences_Tooltip">
+ Préférences
+ </string>
+ <string name="Command_Profile_Tooltip">
+ Modifier ou afficher votre profil
+ </string>
+ <string name="Command_Report_Abuse_Tooltip">
+ Signaler une infraction
+ </string>
+ <string name="Command_Search_Tooltip">
+ Trouver des lieux, personnes, événements
+ </string>
+ <string name="Command_Snapshot_Tooltip">
+ Prendre une photo
+ </string>
+ <string name="Command_Speak_Tooltip">
+ Parler aux personnes près de vous en utilisant votre micro
+ </string>
+ <string name="Command_Twitter_Tooltip">
+ Twitter
+ </string>
+ <string name="Command_View_Tooltip">
+ Changer l'angle de la caméra
+ </string>
+ <string name="Command_Voice_Tooltip">
+ Commandes de réglage du volume des appels et des personnes près de vous dans Second Life.
+ </string>
+ <string name="Toolbar_Bottom_Tooltip">
+ actuellement dans la barre d'outils du bas
+ </string>
+ <string name="Toolbar_Left_Tooltip">
+ actuellement dans la barre d'outils de gauche
+ </string>
+ <string name="Toolbar_Right_Tooltip">
+ actuellement dans la barre d'outils de droite
+ </string>
+ <string name="Retain%">
+ Garder%
+ </string>
+ <string name="Detail">
+ Détail
+ </string>
+ <string name="Better Detail">
+ Meilleur détail
+ </string>
+ <string name="Surface">
+ Surface
+ </string>
+ <string name="Solid">
+ Solide
+ </string>
+ <string name="Wrap">
+ Wrap
+ </string>
+ <string name="Preview">
+ Aperçu
+ </string>
+ <string name="Normal">
+ Normal
+ </string>
+ <string name="Pathfinding_Wiki_URL">
+ http://wiki.secondlife.com/wiki/Pathfinding_Tools_in_the_Second_Life_Viewer
+ </string>
+ <string name="Pathfinding_Object_Attr_None">
+ Aucun
+ </string>
+ <string name="Pathfinding_Object_Attr_Permanent">
+ Maillage de navigation affecté
+ </string>
+ <string name="Pathfinding_Object_Attr_Character">
+ Personnage
+ </string>
+ <string name="Pathfinding_Object_Attr_MultiSelect">
+ (Multiple)
+ </string>
+ <string name="snapshot_quality_very_low">
+ Très faible
+ </string>
+ <string name="snapshot_quality_low">
+ Faible
+ </string>
+ <string name="snapshot_quality_medium">
+ Moyenne
+ </string>
+ <string name="snapshot_quality_high">
+ Élevée
+ </string>
+ <string name="snapshot_quality_very_high">
+ Très élevée
+ </string>
+ <string name="TeleportMaturityExceeded">
+ Le résident ne peut pas visiter cette région.
+ </string>
+ <string name="UserDictionary">
+ [User]
+ </string>
+ <string name="experience_tools_experience">
+ Expérience
+ </string>
+ <string name="ExperienceNameNull">
+ (aucune expérience)
+ </string>
+ <string name="ExperienceNameUntitled">
+ (expérience sans titre)
+ </string>
+ <string name="Land-Scope">
+ À l’échelle des terrains
+ </string>
+ <string name="Grid-Scope">
+ À l’échelle de la grille
+ </string>
+ <string name="Allowed_Experiences_Tab">
+ AUTORISÉE
+ </string>
+ <string name="Blocked_Experiences_Tab">
+ BLOQUÉE
+ </string>
+ <string name="Contrib_Experiences_Tab">
+ CONTRIBUTEUR
+ </string>
+ <string name="Admin_Experiences_Tab">
+ ADMIN
+ </string>
+ <string name="Recent_Experiences_Tab">
+ RÉCENTE
+ </string>
+ <string name="Owned_Experiences_Tab">
+ AVEC PROPRIÉTAIRE
+ </string>
+ <string name="ExperiencesCounter">
+ ([EXPERIENCES], [MAXEXPERIENCES] max.)
+ </string>
+ <string name="ExperiencePermission1">
+ assumer vos contrôles
+ </string>
+ <string name="ExperiencePermission3">
+ déclencher des animations pour votre avatar
+ </string>
+ <string name="ExperiencePermission4">
+ attacher à votre avatar
+ </string>
+ <string name="ExperiencePermission9">
+ suivre votre caméra
+ </string>
+ <string name="ExperiencePermission10">
+ contrôler votre caméra
+ </string>
+ <string name="ExperiencePermission11">
+ vous téléporter
+ </string>
+ <string name="ExperiencePermission12">
+ accepter automatiquement les permissions d’expérience
+ </string>
+ <string name="ExperiencePermission16">
+ forcez votre avatar à s’asseoir
+ </string>
+ <string name="ExperiencePermission17">
+ changer vos paramètres d'environnement
+ </string>
+ <string name="ExperiencePermissionShortUnknown">
+ a effectué une opération inconnue : [Permission]
+ </string>
+ <string name="ExperiencePermissionShort1">
+ Prendre le contrôle
+ </string>
+ <string name="ExperiencePermissionShort3">
+ Déclencher des animations
+ </string>
+ <string name="ExperiencePermissionShort4">
+ Attacher
+ </string>
+ <string name="ExperiencePermissionShort9">
+ Suivre la caméra
+ </string>
+ <string name="ExperiencePermissionShort10">
+ Contrôler la caméra
+ </string>
+ <string name="ExperiencePermissionShort11">
+ Téléportation
+ </string>
+ <string name="ExperiencePermissionShort12">
+ Permission
+ </string>
+ <string name="ExperiencePermissionShort16">
+ M'asseoir
+ </string>
+ <string name="ExperiencePermissionShort17">
+ Environnement
+ </string>
+ <string name="logging_calls_disabled_log_empty">
+ Les conversations ne sont pas archivées. Pour commencer à tenir un journal, choisissez Enregistrer : Journal seul ou Enregistrer : Journal et transcriptions sous Préférences &gt; Chat.
+ </string>
+ <string name="logging_calls_disabled_log_not_empty">
+ Aucune conversation ne sera plus enregistrée. Pour recommencer à tenir un journal, choisissez Enregistrer : Journal seul ou Enregistrer : Journal et transcriptions sous Préférences &gt; Chat.
+ </string>
+ <string name="logging_calls_enabled_log_empty">
+ Il n'y a aucune conversation enregistrée. Quand quelqu'un vous contacte ou quand vous contactez quelqu'un, une entrée de journal s'affiche ici.
+ </string>
+ <string name="loading_chat_logs">
+ Chargement...
+ </string>
+ <string name="na">
+ s.o.
+ </string>
+ <string name="preset_combo_label">
+ -Liste vide-
+ </string>
+ <string name="Default">
+ Valeur par défaut
+ </string>
+ <string name="none_paren_cap">
+ (Aucun/Aucune)
+ </string>
+ <string name="no_limit">
+ Aucune limite
+ </string>
+ <string name="Mav_Details_MAV_FOUND_DEGENERATE_TRIANGLES">
+ La forme physique contient des triangles trop petits. Essayez de simplifier le modèle physique.
+ </string>
+ <string name="Mav_Details_MAV_CONFIRMATION_DATA_MISMATCH">
+ La forme physique contient de mauvaises données de confirmation. Essayez de corriger le modèle physique.
+ </string>
+ <string name="Mav_Details_MAV_UNKNOWN_VERSION">
+ La forme physique n’a pas la version correcte. Configurez la version correcte pour le modèle physique.
+ </string>
+ <string name="couldnt_resolve_host">
+ DNS n'a pas pu résoudre le nom d'hôte([HOSTNAME]).
Veuillez vérifier que vous parvenez à vous connecter au site www.secondlife.com.
Si c'est le cas, et que vous continuez à recevoir ce message d'erreur, veuillez vous
-rendre à la section Support et signaler ce problème</string>
- <string name="ssl_peer_certificate">Le serveur d'identification a rencontré une erreur de connexion SSL.
+rendre à la section Support et signaler ce problème
+ </string>
+ <string name="ssl_peer_certificate">
+ Le serveur d'identification a rencontré une erreur de connexion SSL.
Si vous continuez à recevoir ce message d'erreur,
veuillez vous rendre à la section Support du site web
-SecondLife.com et signaler ce problème</string>
- <string name="ssl_connect_error">Ceci est souvent dû à un mauvais réglage de l'horloge de votre ordinateur.
+SecondLife.com et signaler ce problème
+ </string>
+ <string name="ssl_connect_error">
+ Ceci est souvent dû à un mauvais réglage de l'horloge de votre ordinateur.
Veuillez aller à Tableaux de bord et assurez-vous que l'heure et la date sont réglés
correctement. Vérifiez également que votre réseau et votre pare-feu sont configurés
correctement. Si vous continuez à recevoir ce message d'erreur, veuillez vous rendre
à la section Support du site web SecondLife.com et signaler ce problème.
-[https://community.secondlife.com/knowledgebase/english/error-messages-r520/#Section__3 Base de connaissances]</string>
+[https://community.secondlife.com/knowledgebase/english/error-messages-r520/#Section__3 Base de connaissances]
+ </string>
</strings>
diff --git a/indra/newview/skins/default/xui/fr/teleport_strings.xml b/indra/newview/skins/default/xui/fr/teleport_strings.xml
index 1272723c6b..cad8911fde 100644
--- a/indra/newview/skins/default/xui/fr/teleport_strings.xml
+++ b/indra/newview/skins/default/xui/fr/teleport_strings.xml
@@ -1,40 +1,96 @@
<?xml version="1.0" ?>
<teleport_messages>
<message_set name="errors">
- <message name="invalid_tport">Nous avons rencontré des problèmes en essayant de vous téléporter. Vous devrez peut-être vous reconnecter avant de pouvoir vous téléporter.
-Si ce message persiste, veuillez consulter la page [SUPPORT_SITE].</message>
- <message name="invalid_region_handoff">Nous avons rencontré des problèmes en essayant de vous téléporter. Vous devrez peut-être vous reconnecter avant de pouvoir traverser des régions.
-Si ce message persiste, veuillez consulter la page [SUPPORT_SITE].</message>
- <message name="blocked_tport">Désolé, la téléportation est bloquée actuellement. Veuillez réessayer dans un moment.
-Si vous ne parvenez toujours pas à être téléporté, déconnectez-vous puis reconnectez-vous pour résoudre le problème.</message>
- <message name="nolandmark_tport">Désolé, le système n'a pas réussi à localiser la destination de votre repère.</message>
- <message name="timeout_tport">Désolé, la connexion vers votre lieu de téléportation n'a pas abouti.
-Veuillez réessayer dans un moment.</message>
- <message name="NoHelpIslandTP">Vous ne pouvez pas vous téléporter à nouveau vers Welcome Island.
-Pour recommencer le didacticiel, accédez à Welcome Island Public.</message>
- <message name="noaccess_tport">Désolé, vous n'avez pas accès à cette destination.</message>
- <message name="missing_attach_tport">Vos pieces-jointes ne sont pas encore arrivées. Attendez quelques secondes de plus ou déconnectez-vous puis reconnectez-vous avant d'essayer de vous téléporter.</message>
- <message name="too_many_uploads_tport">Le trafic vers cette région est bouché en ce moment. Votre téléportation ne pourra pas avoir lieu immédiatement. Veuillez réessayer dans quelques minutes ou bien aller dans une zone moins fréquentée.</message>
- <message name="expired_tport">Désolé, votre demande de téléportation n'a pas abouti assez rapidement. Veuillez réessayer dans quelques minutes.</message>
- <message name="expired_region_handoff">Désolé, votre demande pour passer dans une autre région n'a pas abouti assez rapidement. Veuillez réessayer dans quelques minutes.</message>
- <message name="no_host">Impossible de trouver la destination de la téléportation. Il est possible que cette destination soit temporairement indisponible ou qu'elle n'existe plus. Veuillez réessayer dans quelques minutes.</message>
- <message name="no_inventory_host">L'inventaire est temporairement indisponible.</message>
- <message name="MustGetAgeRegion">Pour accéder à cette région, vous devez avoir au moins 18 ans.</message>
- <message name="RegionTPSpecialUsageBlocked">Impossible de pénétrer dans la région. « [REGION_NAME] » est une région de jeux d'adresse et vous devez satisfaire à certains critères pour y pénétrer. Pour en savoir plus, consultez la page [http://wiki.secondlife.com/wiki/Linden_Lab_Official:Skill_Gaming_in_Second_Life FAQ sur les jeux d'adresse].</message>
- <message name="preexisting_tport">Désolé, mais le système n'a pas pu démarrer votre téléport. Veuillez réessayer dans quelques minutes.</message>
+ <message name="invalid_tport">
+ Nous avons rencontré des problèmes en essayant de vous téléporter. Vous devrez peut-être vous reconnecter avant de pouvoir vous téléporter.
+Si ce message persiste, veuillez consulter la page [SUPPORT_SITE].
+ </message>
+ <message name="invalid_region_handoff">
+ Nous avons rencontré des problèmes en essayant de vous téléporter. Vous devrez peut-être vous reconnecter avant de pouvoir traverser des régions.
+Si ce message persiste, veuillez consulter la page [SUPPORT_SITE].
+ </message>
+ <message name="blocked_tport">
+ Désolé, la téléportation est bloquée actuellement. Veuillez réessayer dans un moment.
+Si vous ne parvenez toujours pas à être téléporté, déconnectez-vous puis reconnectez-vous pour résoudre le problème.
+ </message>
+ <message name="nolandmark_tport">
+ Désolé, le système n'a pas réussi à localiser la destination de votre repère.
+ </message>
+ <message name="timeout_tport">
+ Désolé, la connexion vers votre lieu de téléportation n'a pas abouti.
+Veuillez réessayer dans un moment.
+ </message>
+ <message name="NoHelpIslandTP">
+ Vous ne pouvez pas vous téléporter à nouveau vers Welcome Island.
+Pour recommencer le didacticiel, accédez à Welcome Island Public.
+ </message>
+ <message name="noaccess_tport">
+ Désolé, vous n'avez pas accès à cette destination.
+ </message>
+ <message name="missing_attach_tport">
+ Vos pieces-jointes ne sont pas encore arrivées. Attendez quelques secondes de plus ou déconnectez-vous puis reconnectez-vous avant d'essayer de vous téléporter.
+ </message>
+ <message name="too_many_uploads_tport">
+ Le trafic vers cette région est bouché en ce moment. Votre téléportation ne pourra pas avoir lieu immédiatement. Veuillez réessayer dans quelques minutes ou bien aller dans une zone moins fréquentée.
+ </message>
+ <message name="expired_tport">
+ Désolé, votre demande de téléportation n'a pas abouti assez rapidement. Veuillez réessayer dans quelques minutes.
+ </message>
+ <message name="expired_region_handoff">
+ Désolé, votre demande pour passer dans une autre région n'a pas abouti assez rapidement. Veuillez réessayer dans quelques minutes.
+ </message>
+ <message name="no_host">
+ Impossible de trouver la destination de la téléportation. Il est possible que cette destination soit temporairement indisponible ou qu'elle n'existe plus. Veuillez réessayer dans quelques minutes.
+ </message>
+ <message name="no_inventory_host">
+ L'inventaire est temporairement indisponible.
+ </message>
+ <message name="MustGetAgeRegion">
+ Pour accéder à cette région, vous devez avoir au moins 18 ans.
+ </message>
+ <message name="RegionTPSpecialUsageBlocked">
+ Impossible de pénétrer dans la région. « [REGION_NAME] » est une région de jeux d'adresse et vous devez satisfaire à certains critères pour y pénétrer. Pour en savoir plus, consultez la page [http://wiki.secondlife.com/wiki/Linden_Lab_Official:Skill_Gaming_in_Second_Life FAQ sur les jeux d'adresse].
+ </message>
+ <message name="preexisting_tport">
+ Désolé, mais le système n'a pas pu démarrer votre téléport. Veuillez réessayer dans quelques minutes.
+ </message>
</message_set>
<message_set name="progress">
- <message name="sending_dest">Envoi vers la destination en cours.</message>
- <message name="redirecting">Redirection vers un emplacement différent en cours.</message>
- <message name="relaying">Relai vers la destination en cours.</message>
- <message name="sending_home">Requête de la demande d'envoi vers votre domicile en cours.</message>
- <message name="sending_landmark">Requête de la demande d'envoi vers le repère en cours.</message>
- <message name="completing">Téléportation sur le point d'aboutir.</message>
- <message name="completed_from">Téléportation depuis [T_SLURL] terminée</message>
- <message name="resolving">Destination en cours de résolution.</message>
- <message name="contacting">Contact avec la nouvelle région en cours.</message>
- <message name="arriving">Vous arrivez...</message>
- <message name="requesting">Demande de téléportation en cours...</message>
- <message name="pending">En attente de téléportation...</message>
+ <message name="sending_dest">
+ Envoi vers la destination en cours.
+ </message>
+ <message name="redirecting">
+ Redirection vers un emplacement différent en cours.
+ </message>
+ <message name="relaying">
+ Relai vers la destination en cours.
+ </message>
+ <message name="sending_home">
+ Requête de la demande d'envoi vers votre domicile en cours.
+ </message>
+ <message name="sending_landmark">
+ Requête de la demande d'envoi vers le repère en cours.
+ </message>
+ <message name="completing">
+ Téléportation sur le point d'aboutir.
+ </message>
+ <message name="completed_from">
+ Téléportation depuis [T_SLURL] terminée
+ </message>
+ <message name="resolving">
+ Destination en cours de résolution.
+ </message>
+ <message name="contacting">
+ Contact avec la nouvelle région en cours.
+ </message>
+ <message name="arriving">
+ Vous arrivez...
+ </message>
+ <message name="requesting">
+ Demande de téléportation en cours...
+ </message>
+ <message name="pending">
+ En attente de téléportation...
+ </message>
</message_set>
</teleport_messages>
diff --git a/indra/newview/skins/default/xui/it/strings.xml b/indra/newview/skins/default/xui/it/strings.xml
index 4bd1285f2d..d80da3c0c8 100644
--- a/indra/newview/skins/default/xui/it/strings.xml
+++ b/indra/newview/skins/default/xui/it/strings.xml
@@ -1,610 +1,1668 @@
<?xml version="1.0" ?>
<strings>
- <string name="SECOND_LIFE">Second Life</string>
- <string name="APP_NAME">Megapahit</string>
- <string name="CAPITALIZED_APP_NAME">MEGAPAHIT</string>
- <string name="SUPPORT_SITE">Portale di supporto di Second Life</string>
- <string name="StartupDetectingHardware">Ricerca hardware...</string>
- <string name="StartupLoading">Caricamento di [APP_NAME]...</string>
- <string name="StartupClearingCache">Pulizia della cache...</string>
- <string name="StartupInitializingTextureCache">Inizializzazione della cache texture...</string>
- <string name="StartupRequireDriverUpdate">Inizializzazione grafica non riuscita. Aggiorna il driver della scheda grafica!</string>
- <string name="AboutHeader">[CHANNEL] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2].[VIEWER_VERSION_3] ([ADDRESS_SIZE]bit)
-[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]]</string>
- <string name="BuildConfig">Configurazione struttura [BUILD_CONFIG]</string>
- <string name="AboutPosition">Tu sei a [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] in [REGION] che si trova a &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt; ([HOSTIP])
+ <string name="SECOND_LIFE">
+ Second Life
+ </string>
+ <string name="APP_NAME">
+ Megapahit
+ </string>
+ <string name="CAPITALIZED_APP_NAME">
+ MEGAPAHIT
+ </string>
+ <string name="SUPPORT_SITE">
+ Portale di supporto di Second Life
+ </string>
+ <string name="StartupDetectingHardware">
+ Ricerca hardware...
+ </string>
+ <string name="StartupLoading">
+ Caricamento di [APP_NAME]...
+ </string>
+ <string name="StartupClearingCache">
+ Pulizia della cache...
+ </string>
+ <string name="StartupInitializingTextureCache">
+ Inizializzazione della cache texture...
+ </string>
+ <string name="StartupRequireDriverUpdate">
+ Inizializzazione grafica non riuscita. Aggiorna il driver della scheda grafica!
+ </string>
+ <string name="AboutHeader">
+ [CHANNEL] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2].[VIEWER_VERSION_3] ([ADDRESS_SIZE]bit)
+[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]]
+ </string>
+ <string name="BuildConfig">
+ Configurazione struttura [BUILD_CONFIG]
+ </string>
+ <string name="AboutPosition">
+ Tu sei a [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] in [REGION] che si trova a &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt;
SLURL: &lt;nolink&gt;[SLURL]&lt;/nolink&gt;
(coordinate globali [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1])
[SERVER_VERSION]
-[SERVER_RELEASE_NOTES_URL]</string>
- <string name="AboutSystem">CPU: [CPU]
+[SERVER_RELEASE_NOTES_URL]
+ </string>
+ <string name="AboutSystem">
+ CPU: [CPU]
Memoria: [MEMORY_MB] MB
Versione sistema operativo: [OS_VERSION]
Venditore scheda grafica: [GRAPHICS_CARD_VENDOR]
-Scheda grafica: [GRAPHICS_CARD]</string>
- <string name="AboutDriver">Versione driver Windows per grafica: [GRAPHICS_DRIVER_VERSION]</string>
- <string name="AboutOGL">Versione OpenGL: [OPENGL_VERSION]</string>
- <string name="AboutSettings">Dimensione finestra: [WINDOW_WIDTH]x[WINDOW_HEIGHT]
+Scheda grafica: [GRAPHICS_CARD]
+ </string>
+ <string name="AboutDriver">
+ Versione driver Windows per grafica: [GRAPHICS_DRIVER_VERSION]
+ </string>
+ <string name="AboutOGL">
+ Versione OpenGL: [OPENGL_VERSION]
+ </string>
+ <string name="AboutSettings">
+ Dimensione finestra: [WINDOW_WIDTH]x[WINDOW_HEIGHT]
Regolazione dimensioni carattere: [FONT_SIZE_ADJUSTMENT]pt
Scala UI: [UI_SCALE]
Distanza visualizzazione: [DRAW_DISTANCE]m
Larghezza banda: [NET_BANDWITH]kbit/s
Fattore livello di dettaglio: [LOD_FACTOR]
Qualità di rendering: [RENDER_QUALITY]
-Memoria texture: [TEXTURE_MEMORY]MB</string>
- <string name="AboutOSXHiDPI">Modalità display HiDPI: [HIDPI]</string>
- <string name="AboutLibs">J2C Versione decoder: [J2C_VERSION]
+Memoria texture: [TEXTURE_MEMORY]MB
+ </string>
+ <string name="AboutOSXHiDPI">
+ Modalità display HiDPI: [HIDPI]
+ </string>
+ <string name="AboutLibs">
+ J2C Versione decoder: [J2C_VERSION]
Versione del driver audio: [AUDIO_DRIVER_VERSION][LIBCEF_VERSION]
Versione LibVLC: [LIBVLC_VERSION]
-Versione server voce: [VOICE_VERSION]</string>
- <string name="AboutTraffic">Pacchetti perduti: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%)</string>
- <string name="AboutTime">[day, datetime, slt] [month, datetime, slt] [year, datetime, slt] [hour, datetime, slt]:[min, datetime, slt]:[second,datetime,slt]</string>
- <string name="ErrorFetchingServerReleaseNotesURL">Errore nel recupero URL note rilascio versione</string>
- <string name="BuildConfiguration">Costruisci configurazione</string>
- <string name="ProgressRestoring">Ripristino in corso...</string>
- <string name="ProgressChangingResolution">Modifica della risoluzione...</string>
- <string name="Fullbright">Luminosità massima (vers. precedente)</string>
- <string name="LoginInProgress">In connessione. [APP_NAME] può sembrare rallentata. Attendi.</string>
- <string name="LoginInProgressNoFrozen">Accesso in corso...</string>
- <string name="LoginAuthenticating">In autenticazione</string>
- <string name="LoginMaintenance">Aggiornamento account in corso...</string>
- <string name="LoginAttempt">Un precedente tentativo di login è fallito. Tentativo di connessione [NUMBER]</string>
- <string name="LoginPrecaching">Sto caricando [SECOND_LIFE]...</string>
- <string name="LoginInitializingBrowser">Inizializzazione del browser web incorporato...</string>
- <string name="LoginInitializingMultimedia">Inizializzazione dati multimediali...</string>
- <string name="LoginInitializingFonts">Caricamento caratteri...</string>
- <string name="LoginVerifyingCache">Verifica file della cache (tempo previsto 60-90 secondi)...</string>
- <string name="LoginProcessingResponse">Elaborazione risposta...</string>
- <string name="LoginInitializingWorld">Inizializzazione mondo...</string>
- <string name="LoginDecodingImages">Decodifica immagini...</string>
- <string name="LoginInitializingQuicktime">Inizializzazione QuickTime...</string>
- <string name="LoginQuicktimeNotFound">QuickTime non trovato - impossibile inizializzare.</string>
- <string name="LoginQuicktimeOK">QuickTime configurato con successo.</string>
- <string name="LoginRequestSeedCapGrant">Richiesta capacità regione...</string>
- <string name="LoginRetrySeedCapGrant">Richiesta capacità regione, tentativo [NUMBER]...</string>
- <string name="LoginWaitingForRegionHandshake">In attesa della risposta della regione...</string>
- <string name="LoginConnectingToRegion">Connessione alla regione...</string>
- <string name="LoginDownloadingClothing">Sto caricando i vestiti...</string>
- <string name="InvalidCertificate">Il server ha inviato un certificato non valido o errato. Rivolgiti all'amministratore della griglia.</string>
- <string name="CertInvalidHostname">Per accedere al server è stato utilizzato un nome host non valido; controlla lo SLURL o il nome host della griglia.</string>
- <string name="CertExpired">Il certificato inviato dalla griglia sembra essere scaduto. Controlla l'orologio del sistema o rivolgiti all'amministratore della griglia.</string>
- <string name="CertKeyUsage">Impossibile utilizzare per SSl il certificato inviato dal server. Rivolgiti all'amministratore della griglia.</string>
- <string name="CertBasicConstraints">Nella catena dei certificati del server erano presenti troppi certificati. Rivolgiti all'amministratore della griglia.</string>
- <string name="CertInvalidSignature">Impossibile verificare la firma del certificato inviato dal server della griglia. Rivolgiti all'amministratore della griglia.</string>
- <string name="LoginFailedNoNetwork">Errore di rete: Non è stato possibile stabilire un collegamento, controlla la tua connessione.</string>
- <string name="LoginFailedHeader">Accesso non riuscito.</string>
- <string name="Quit">Esci</string>
- <string name="create_account_url">http://join.secondlife.com/?sourceid=[sourceid]</string>
- <string name="AgniGridLabel">Griglia principale di Second Life (Agni)</string>
- <string name="AditiGridLabel">Griglia per beta test di Second Life (Aditi)</string>
- <string name="ViewerDownloadURL">http://secondlife.com/download.</string>
- <string name="LoginFailedViewerNotPermitted">Il viewer utilizzato non è più in grado di accedere a Second Life. Visita la parina seguente per scaricare un nuovo viewer:
+Versione server voce: [VOICE_VERSION]
+ </string>
+ <string name="AboutTraffic">
+ Pacchetti perduti: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%)
+ </string>
+ <string name="AboutTime">
+ [day, datetime, slt] [month, datetime, slt] [year, datetime, slt] [hour, datetime, slt]:[min, datetime, slt]:[second,datetime,slt]
+ </string>
+ <string name="ErrorFetchingServerReleaseNotesURL">
+ Errore nel recupero URL note rilascio versione
+ </string>
+ <string name="BuildConfiguration">
+ Costruisci configurazione
+ </string>
+ <string name="ProgressRestoring">
+ Ripristino in corso...
+ </string>
+ <string name="ProgressChangingResolution">
+ Modifica della risoluzione...
+ </string>
+ <string name="Fullbright">
+ Luminosità massima (vers. precedente)
+ </string>
+ <string name="LoginInProgress">
+ In connessione. [APP_NAME] può sembrare rallentata. Attendi.
+ </string>
+ <string name="LoginInProgressNoFrozen">
+ Accesso in corso...
+ </string>
+ <string name="LoginAuthenticating">
+ In autenticazione
+ </string>
+ <string name="LoginMaintenance">
+ Aggiornamento account in corso...
+ </string>
+ <string name="LoginAttempt">
+ Un precedente tentativo di login è fallito. Tentativo di connessione [NUMBER]
+ </string>
+ <string name="LoginPrecaching">
+ Sto caricando [SECOND_LIFE]...
+ </string>
+ <string name="LoginInitializingBrowser">
+ Inizializzazione del browser web incorporato...
+ </string>
+ <string name="LoginInitializingMultimedia">
+ Inizializzazione dati multimediali...
+ </string>
+ <string name="LoginInitializingFonts">
+ Caricamento caratteri...
+ </string>
+ <string name="LoginVerifyingCache">
+ Verifica file della cache (tempo previsto 60-90 secondi)...
+ </string>
+ <string name="LoginProcessingResponse">
+ Elaborazione risposta...
+ </string>
+ <string name="LoginInitializingWorld">
+ Inizializzazione mondo...
+ </string>
+ <string name="LoginDecodingImages">
+ Decodifica immagini...
+ </string>
+ <string name="LoginInitializingQuicktime">
+ Inizializzazione QuickTime...
+ </string>
+ <string name="LoginQuicktimeNotFound">
+ QuickTime non trovato - impossibile inizializzare.
+ </string>
+ <string name="LoginQuicktimeOK">
+ QuickTime configurato con successo.
+ </string>
+ <string name="LoginRequestSeedCapGrant">
+ Richiesta capacità regione...
+ </string>
+ <string name="LoginRetrySeedCapGrant">
+ Richiesta capacità regione, tentativo [NUMBER]...
+ </string>
+ <string name="LoginWaitingForRegionHandshake">
+ In attesa della risposta della regione...
+ </string>
+ <string name="LoginConnectingToRegion">
+ Connessione alla regione...
+ </string>
+ <string name="LoginDownloadingClothing">
+ Sto caricando i vestiti...
+ </string>
+ <string name="InvalidCertificate">
+ Il server ha inviato un certificato non valido o errato. Rivolgiti all'amministratore della griglia.
+ </string>
+ <string name="CertInvalidHostname">
+ Per accedere al server è stato utilizzato un nome host non valido; controlla lo SLURL o il nome host della griglia.
+ </string>
+ <string name="CertExpired">
+ Il certificato inviato dalla griglia sembra essere scaduto. Controlla l'orologio del sistema o rivolgiti all'amministratore della griglia.
+ </string>
+ <string name="CertKeyUsage">
+ Impossibile utilizzare per SSl il certificato inviato dal server. Rivolgiti all'amministratore della griglia.
+ </string>
+ <string name="CertBasicConstraints">
+ Nella catena dei certificati del server erano presenti troppi certificati. Rivolgiti all'amministratore della griglia.
+ </string>
+ <string name="CertInvalidSignature">
+ Impossibile verificare la firma del certificato inviato dal server della griglia. Rivolgiti all'amministratore della griglia.
+ </string>
+ <string name="LoginFailedNoNetwork">
+ Errore di rete: Non è stato possibile stabilire un collegamento, controlla la tua connessione.
+ </string>
+ <string name="LoginFailedHeader">
+ Accesso non riuscito.
+ </string>
+ <string name="Quit">
+ Esci
+ </string>
+ <string name="create_account_url">
+ http://join.secondlife.com/?sourceid=[sourceid]
+ </string>
+ <string name="AgniGridLabel">
+ Griglia principale di Second Life (Agni)
+ </string>
+ <string name="AditiGridLabel">
+ Griglia per beta test di Second Life (Aditi)
+ </string>
+ <string name="ViewerDownloadURL">
+ http://secondlife.com/download.
+ </string>
+ <string name="LoginFailedViewerNotPermitted">
+ Il viewer utilizzato non è più in grado di accedere a Second Life. Visita la parina seguente per scaricare un nuovo viewer:
http://secondlife.com/download.
Per maggiori informazioni, consulta le domande frequenti alla pagina seguente:
-http://secondlife.com/viewer-access-faq</string>
- <string name="LoginIntermediateOptionalUpdateAvailable">Disponibile aggiornamento facoltativo viewer: [VERSION]</string>
- <string name="LoginFailedRequiredUpdate">Aggernamento viewer richiesto: [VERSION]</string>
- <string name="LoginFailedAlreadyLoggedIn">Questo agente ha già eseguito il login.</string>
- <string name="LoginFailedAuthenticationFailed">Siamo spiacenti. Il tentativo di accesso non è riuscito.
+http://secondlife.com/viewer-access-faq
+ </string>
+ <string name="LoginIntermediateOptionalUpdateAvailable">
+ Disponibile aggiornamento facoltativo viewer: [VERSION]
+ </string>
+ <string name="LoginFailedRequiredUpdate">
+ Aggernamento viewer richiesto: [VERSION]
+ </string>
+ <string name="LoginFailedAlreadyLoggedIn">
+ Questo agente ha già eseguito il login.
+ </string>
+ <string name="LoginFailedAuthenticationFailed">
+ Siamo spiacenti. Il tentativo di accesso non è riuscito.
Verifica di avere inserito correttamente
* Nome utente (come robby12 o Stella Soleggiato)
* Password
-Verifica anche che il blocco delle maiuscole non sia attivato.</string>
- <string name="LoginFailedPasswordChanged">Come misura precauzionale, la tua password è stata cambiata.
+Verifica anche che il blocco delle maiuscole non sia attivato.
+ </string>
+ <string name="LoginFailedPasswordChanged">
+ Come misura precauzionale, la tua password è stata cambiata.
Visita la pagina del tuo account a http://secondlife.com/password
e rispondi alla domanda di sicurezza per reimpostare la password.
-Ci scusiamo per l'inconveniente.</string>
- <string name="LoginFailedPasswordReset">Abbiamo effettuato delle modifiche al sistema che richiedono di reimpostare la password.
+Ci scusiamo per l'inconveniente.
+ </string>
+ <string name="LoginFailedPasswordReset">
+ Abbiamo effettuato delle modifiche al sistema che richiedono di reimpostare la password.
Visita la pagina del tuo account a http://secondlife.com/password
e rispondi alla domanda di sicurezza per reimpostare la password.
-Ci scusiamo per l'inconveniente.</string>
- <string name="LoginFailedEmployeesOnly">Second Life è chiuso temporaneamente per manutenzione.
+Ci scusiamo per l'inconveniente.
+ </string>
+ <string name="LoginFailedEmployeesOnly">
+ Second Life è chiuso temporaneamente per manutenzione.
Al momento, solo i dipendenti possono eseguire l'accesso.
-Visita www.secondlife.com/status per aggiornamenti.</string>
- <string name="LoginFailedPremiumOnly">L'accesso a Second Life è temporaneamente limitato per garantire che chi è nel mondo virtuale abbia la migliore esperienza possibile.
+Visita www.secondlife.com/status per aggiornamenti.
+ </string>
+ <string name="LoginFailedPremiumOnly">
+ L'accesso a Second Life è temporaneamente limitato per garantire che chi è nel mondo virtuale abbia la migliore esperienza possibile.
-Le persone con account gratuiti non potranno accedere a Second Life durante questo periodo, per lasciare spazio alle persone che hanno pagato per Second Life.</string>
- <string name="LoginFailedComputerProhibited">Non si può accedere a Second Life da questo computer.
+Le persone con account gratuiti non potranno accedere a Second Life durante questo periodo, per lasciare spazio alle persone che hanno pagato per Second Life.
+ </string>
+ <string name="LoginFailedComputerProhibited">
+ Non si può accedere a Second Life da questo computer.
Se ritieni che si tratta di un errore, contatta
-support@secondlife.com.</string>
- <string name="LoginFailedAcountSuspended">Il tuo account non è accessibile fino alle
-[TIME] fuso orario del Pacifico.</string>
- <string name="LoginFailedAccountDisabled">Non siamo attualmente in grado di completare la tua richiesta.
-Contatta l'assistenza Second Life alla pagina http://support.secondlife.com.</string>
- <string name="LoginFailedTransformError">Dati incompatibili rilevati durante l'accesso.
-Contattare support@secondlife.com.</string>
- <string name="LoginFailedAccountMaintenance">Il tuo account è in fase di leggera manutenzione.
+support@secondlife.com.
+ </string>
+ <string name="LoginFailedAcountSuspended">
+ Il tuo account non è accessibile fino alle
+[TIME] fuso orario del Pacifico.
+ </string>
+ <string name="LoginFailedAccountDisabled">
+ Non siamo attualmente in grado di completare la tua richiesta.
+Contatta l'assistenza Second Life alla pagina http://support.secondlife.com.
+ </string>
+ <string name="LoginFailedTransformError">
+ Dati incompatibili rilevati durante l'accesso.
+Contattare support@secondlife.com.
+ </string>
+ <string name="LoginFailedAccountMaintenance">
+ Il tuo account è in fase di leggera manutenzione.
Il tuo account non è accessibile fino alle
[TIME] fuso orario del Pacifico.
-Se ritieni che si tratta di un errore, contatta support@secondlife.com.</string>
- <string name="LoginFailedPendingLogoutFault">Errore del simulatore in seguito alla richiesta di logout.</string>
- <string name="LoginFailedPendingLogout">Il sistema sta eseguendo il logout in questo momento.
-Prova ad accedere nuovamente tra un minuto.</string>
- <string name="LoginFailedUnableToCreateSession">Non è possibile creare una sessione valida.</string>
- <string name="LoginFailedUnableToConnectToSimulator">Non è possibile collegarsi a un simulatore.</string>
- <string name="LoginFailedRestrictedHours">Il tuo account può accedere a Second Life solo
+Se ritieni che si tratta di un errore, contatta support@secondlife.com.
+ </string>
+ <string name="LoginFailedPendingLogoutFault">
+ Errore del simulatore in seguito alla richiesta di logout.
+ </string>
+ <string name="LoginFailedPendingLogout">
+ Il sistema sta eseguendo il logout in questo momento.
+Prova ad accedere nuovamente tra un minuto.
+ </string>
+ <string name="LoginFailedUnableToCreateSession">
+ Non è possibile creare una sessione valida.
+ </string>
+ <string name="LoginFailedUnableToConnectToSimulator">
+ Non è possibile collegarsi a un simulatore.
+ </string>
+ <string name="LoginFailedRestrictedHours">
+ Il tuo account può accedere a Second Life solo
tra le [START] e le [END] fuso orario del Pacifico.
Torna durante quell'orario.
-Se ritieni che si tratta di un errore, contatta support@secondlife.com.</string>
- <string name="LoginFailedIncorrectParameters">Parametri errati.
-Se ritieni che si tratta di un errore, contatta support@secondlife.com.</string>
- <string name="LoginFailedFirstNameNotAlphanumeric">Il parametro Nome deve includere solo caratteri alfanumerici.
-Se ritieni che si tratta di un errore, contatta support@secondlife.com.</string>
- <string name="LoginFailedLastNameNotAlphanumeric">Il parametro Cognome deve includere solo caratteri alfanumerici.
-Se ritieni che si tratta di un errore, contatta support@secondlife.com.</string>
- <string name="LogoutFailedRegionGoingOffline">La regione sta passando allo stato non in linea.
-Prova ad accedere nuovamente tra un minuto.</string>
- <string name="LogoutFailedAgentNotInRegion">L'agente non è nella regione.
-Prova ad accedere nuovamente tra un minuto.</string>
- <string name="LogoutFailedPendingLogin">La regione ha eseguito l'accesso in un'altre sessione.
-Prova ad accedere nuovamente tra un minuto.</string>
- <string name="LogoutFailedLoggingOut">La regione stava eseguendo il logout della sessione precedente.
-Prova ad accedere nuovamente tra un minuto.</string>
- <string name="LogoutFailedStillLoggingOut">La regione sta ancora eseguendo il logout della sessione precedente.
-Prova ad accedere nuovamente tra un minuto.</string>
- <string name="LogoutSucceeded">La regione ha eseguito il logout dell'ultima sessione.
-Prova ad accedere nuovamente tra un minuto.</string>
- <string name="LogoutFailedLogoutBegun">La regione ha iniziato la procedura di logout.
-Prova ad accedere nuovamente tra un minuto.</string>
- <string name="LoginFailedLoggingOutSession">Il sistema ha iniziato il logout dell'ultima sessione.
-Prova ad accedere nuovamente tra un minuto.</string>
- <string name="AgentLostConnection">Questa regione sta avendo problemi. Verifica la tua connessione a Internet.</string>
- <string name="SavingSettings">Salvataggio delle impostazioni...</string>
- <string name="LoggingOut">Uscita...</string>
- <string name="ShuttingDown">Chiusura...</string>
- <string name="YouHaveBeenDisconnected">Sei scollegato dalla regione in cui ti trovavi.</string>
- <string name="SentToInvalidRegion">Sei stato indirizzato in una regione non valida.</string>
- <string name="TestingDisconnect">Verifica scollegamento viewer</string>
- <string name="SocialFacebookConnecting">Connessione a Facebook in corso...</string>
- <string name="SocialFacebookPosting">Caricamento post...</string>
- <string name="SocialFacebookDisconnecting">Disconnessione da Facebook in corso...</string>
- <string name="SocialFacebookErrorConnecting">Problemi con la connessione a Facebook</string>
- <string name="SocialFacebookErrorPosting">Problemi con la connessione a Facebook</string>
- <string name="SocialFacebookErrorDisconnecting">Problemi con la disconnessione da Facebook</string>
- <string name="SocialFlickrConnecting">Collegamento a Flickr...</string>
- <string name="SocialFlickrPosting">Caricamento post...</string>
- <string name="SocialFlickrDisconnecting">Interruzione del collegamento con Flickr...</string>
- <string name="SocialFlickrErrorConnecting">Problema nel collegamento a Flickr</string>
- <string name="SocialFlickrErrorPosting">Problema nel caricamento post su Flickr</string>
- <string name="SocialFlickrErrorDisconnecting">Problema nell'interruzione del collegamento da Flickr</string>
- <string name="SocialTwitterConnecting">Collegamento a Twitter...</string>
- <string name="SocialTwitterPosting">Caricamento post...</string>
- <string name="SocialTwitterDisconnecting">Interruzione del collegamento con Twitter...</string>
- <string name="SocialTwitterErrorConnecting">Problema nel collegamento a Twitter</string>
- <string name="SocialTwitterErrorPosting">Problema nel caricamento post su Twitter</string>
- <string name="SocialTwitterErrorDisconnecting">Problema nell'interruzione del collegamento da Twitter</string>
- <string name="BlackAndWhite">Bianco e nero</string>
- <string name="Colors1970">Colori anni '70</string>
- <string name="Intense">Intenso</string>
- <string name="Newspaper">Giornale</string>
- <string name="Sepia">Seppia</string>
- <string name="Spotlight">Faretto</string>
- <string name="Video">Video</string>
- <string name="Autocontrast">Auto contrasto</string>
- <string name="LensFlare">Bagliore</string>
- <string name="Miniature">Miniatura</string>
- <string name="Toycamera">Toy camera</string>
- <string name="TooltipPerson">Persona</string>
- <string name="TooltipNoName">(nessun nome)</string>
- <string name="TooltipOwner">Proprietario:</string>
- <string name="TooltipPublic">Pubblico</string>
- <string name="TooltipIsGroup">(Gruppo)</string>
- <string name="TooltipForSaleL$">In Vendita: [AMOUNT]L$</string>
- <string name="TooltipFlagGroupBuild">Costruzione solo con gruppo</string>
- <string name="TooltipFlagNoBuild">Divieto di Costruire</string>
- <string name="TooltipFlagNoEdit">Costruzione solo con gruppo</string>
- <string name="TooltipFlagNotSafe">Non Sicuro</string>
- <string name="TooltipFlagNoFly">Divieto di Volare</string>
- <string name="TooltipFlagGroupScripts">Script solo con gruppo</string>
- <string name="TooltipFlagNoScripts">Script vietati</string>
- <string name="TooltipLand">Terreno:</string>
- <string name="TooltipMustSingleDrop">Solo un singolo oggetto può essere creato qui</string>
- <string name="TooltipTooManyWearables">Non puoi indossare una cartella che contiene più di [AMOUNT] elementi. Per modificare questo limite, accedi ad Avanzate &gt; Mostra impostazioni di debug &gt; WearFolderLimit.</string>
+Se ritieni che si tratta di un errore, contatta support@secondlife.com.
+ </string>
+ <string name="LoginFailedIncorrectParameters">
+ Parametri errati.
+Se ritieni che si tratta di un errore, contatta support@secondlife.com.
+ </string>
+ <string name="LoginFailedFirstNameNotAlphanumeric">
+ Il parametro Nome deve includere solo caratteri alfanumerici.
+Se ritieni che si tratta di un errore, contatta support@secondlife.com.
+ </string>
+ <string name="LoginFailedLastNameNotAlphanumeric">
+ Il parametro Cognome deve includere solo caratteri alfanumerici.
+Se ritieni che si tratta di un errore, contatta support@secondlife.com.
+ </string>
+ <string name="LogoutFailedRegionGoingOffline">
+ La regione sta passando allo stato non in linea.
+Prova ad accedere nuovamente tra un minuto.
+ </string>
+ <string name="LogoutFailedAgentNotInRegion">
+ L'agente non è nella regione.
+Prova ad accedere nuovamente tra un minuto.
+ </string>
+ <string name="LogoutFailedPendingLogin">
+ La regione ha eseguito l'accesso in un'altre sessione.
+Prova ad accedere nuovamente tra un minuto.
+ </string>
+ <string name="LogoutFailedLoggingOut">
+ La regione stava eseguendo il logout della sessione precedente.
+Prova ad accedere nuovamente tra un minuto.
+ </string>
+ <string name="LogoutFailedStillLoggingOut">
+ La regione sta ancora eseguendo il logout della sessione precedente.
+Prova ad accedere nuovamente tra un minuto.
+ </string>
+ <string name="LogoutSucceeded">
+ La regione ha eseguito il logout dell'ultima sessione.
+Prova ad accedere nuovamente tra un minuto.
+ </string>
+ <string name="LogoutFailedLogoutBegun">
+ La regione ha iniziato la procedura di logout.
+Prova ad accedere nuovamente tra un minuto.
+ </string>
+ <string name="LoginFailedLoggingOutSession">
+ Il sistema ha iniziato il logout dell'ultima sessione.
+Prova ad accedere nuovamente tra un minuto.
+ </string>
+ <string name="AgentLostConnection">
+ Questa regione sta avendo problemi. Verifica la tua connessione a Internet.
+ </string>
+ <string name="SavingSettings">
+ Salvataggio delle impostazioni...
+ </string>
+ <string name="LoggingOut">
+ Uscita...
+ </string>
+ <string name="ShuttingDown">
+ Chiusura...
+ </string>
+ <string name="YouHaveBeenDisconnected">
+ Sei scollegato dalla regione in cui ti trovavi.
+ </string>
+ <string name="SentToInvalidRegion">
+ Sei stato indirizzato in una regione non valida.
+ </string>
+ <string name="TestingDisconnect">
+ Verifica scollegamento viewer
+ </string>
+ <string name="SocialFacebookConnecting">
+ Connessione a Facebook in corso...
+ </string>
+ <string name="SocialFacebookPosting">
+ Caricamento post...
+ </string>
+ <string name="SocialFacebookDisconnecting">
+ Disconnessione da Facebook in corso...
+ </string>
+ <string name="SocialFacebookErrorConnecting">
+ Problemi con la connessione a Facebook
+ </string>
+ <string name="SocialFacebookErrorPosting">
+ Problemi con la connessione a Facebook
+ </string>
+ <string name="SocialFacebookErrorDisconnecting">
+ Problemi con la disconnessione da Facebook
+ </string>
+ <string name="SocialFlickrConnecting">
+ Collegamento a Flickr...
+ </string>
+ <string name="SocialFlickrPosting">
+ Caricamento post...
+ </string>
+ <string name="SocialFlickrDisconnecting">
+ Interruzione del collegamento con Flickr...
+ </string>
+ <string name="SocialFlickrErrorConnecting">
+ Problema nel collegamento a Flickr
+ </string>
+ <string name="SocialFlickrErrorPosting">
+ Problema nel caricamento post su Flickr
+ </string>
+ <string name="SocialFlickrErrorDisconnecting">
+ Problema nell'interruzione del collegamento da Flickr
+ </string>
+ <string name="SocialTwitterConnecting">
+ Collegamento a Twitter...
+ </string>
+ <string name="SocialTwitterPosting">
+ Caricamento post...
+ </string>
+ <string name="SocialTwitterDisconnecting">
+ Interruzione del collegamento con Twitter...
+ </string>
+ <string name="SocialTwitterErrorConnecting">
+ Problema nel collegamento a Twitter
+ </string>
+ <string name="SocialTwitterErrorPosting">
+ Problema nel caricamento post su Twitter
+ </string>
+ <string name="SocialTwitterErrorDisconnecting">
+ Problema nell'interruzione del collegamento da Twitter
+ </string>
+ <string name="BlackAndWhite">
+ Bianco e nero
+ </string>
+ <string name="Colors1970">
+ Colori anni '70
+ </string>
+ <string name="Intense">
+ Intenso
+ </string>
+ <string name="Newspaper">
+ Giornale
+ </string>
+ <string name="Sepia">
+ Seppia
+ </string>
+ <string name="Spotlight">
+ Faretto
+ </string>
+ <string name="Video">
+ Video
+ </string>
+ <string name="Autocontrast">
+ Auto contrasto
+ </string>
+ <string name="LensFlare">
+ Bagliore
+ </string>
+ <string name="Miniature">
+ Miniatura
+ </string>
+ <string name="Toycamera">
+ Toy camera
+ </string>
+ <string name="TooltipPerson">
+ Persona
+ </string>
+ <string name="TooltipNoName">
+ (nessun nome)
+ </string>
+ <string name="TooltipOwner">
+ Proprietario:
+ </string>
+ <string name="TooltipPublic">
+ Pubblico
+ </string>
+ <string name="TooltipIsGroup">
+ (Gruppo)
+ </string>
+ <string name="TooltipForSaleL$">
+ In Vendita: [AMOUNT]L$
+ </string>
+ <string name="TooltipFlagGroupBuild">
+ Costruzione solo con gruppo
+ </string>
+ <string name="TooltipFlagNoBuild">
+ Divieto di Costruire
+ </string>
+ <string name="TooltipFlagNoEdit">
+ Costruzione solo con gruppo
+ </string>
+ <string name="TooltipFlagNotSafe">
+ Non Sicuro
+ </string>
+ <string name="TooltipFlagNoFly">
+ Divieto di Volare
+ </string>
+ <string name="TooltipFlagGroupScripts">
+ Script solo con gruppo
+ </string>
+ <string name="TooltipFlagNoScripts">
+ Script vietati
+ </string>
+ <string name="TooltipLand">
+ Terreno:
+ </string>
+ <string name="TooltipMustSingleDrop">
+ Solo un singolo oggetto può essere creato qui
+ </string>
+ <string name="TooltipTooManyWearables">
+ Non puoi indossare una cartella che contiene più di [AMOUNT] elementi. Per modificare questo limite, accedi ad Avanzate &gt; Mostra impostazioni di debug &gt; WearFolderLimit.
+ </string>
<string name="TooltipPrice" value="L$ [AMOUNT]:"/>
- <string name="TooltipSLIcon">Questo link porta a una pagina nel dominio ufficiale SecondLife.com o LindenLab.com.</string>
- <string name="TooltipOutboxDragToWorld">Non puoi rezzare articoli dalla cartella degli annunci di Marketplace</string>
- <string name="TooltipOutboxWorn">Non puoi inserire nella cartella degli annunci in Marketplace gli articoli che indossi</string>
- <string name="TooltipOutboxFolderLevels">La profondità delle caselle nidificate è maggiore di [AMOUNT]. Diminuisci la profondità delle cartelle nidificate; se necessario, raggruppa gli articoli.</string>
- <string name="TooltipOutboxTooManyFolders">Il numero di sottocartelle è maggiore di [AMOUNT]. Diminuisci il numero delle cartelle nel tuo annuncio; se necessario, raggruppa gli articoli.</string>
- <string name="TooltipOutboxTooManyObjects">Il numero di articoli è maggiore di [AMOUNT]. Per vendere più di [AMOUNT] articoli in un annuncio, devi raggruppare alcuni di essi.</string>
- <string name="TooltipOutboxTooManyStockItems">Il numero di articoli in magazzino è maggiore di [AMOUNT].</string>
- <string name="TooltipOutboxCannotDropOnRoot">Puoi trascinare elementi o cartelle solo nelle schede TUTTI o NON ASSOCIATO. Seleziona una di quelle schede e sposta nuovamente gli elementi o le cartelle.</string>
- <string name="TooltipOutboxNoTransfer">Almeno uno di questi oggetti non può essere venduto o trasferito</string>
- <string name="TooltipOutboxNotInInventory">Puoi aggiungere a Marketplace solo gli articoli nel tuo inventario</string>
- <string name="TooltipOutboxLinked">Non puoi inserire cartelle o articoli collegati tramite link nel Marketplace</string>
- <string name="TooltipOutboxCallingCard">Non puoi inserire biglietti da visita in Marketplace</string>
- <string name="TooltipOutboxDragActive">non puoi muovere un annuncio attivo</string>
- <string name="TooltipOutboxCannotMoveRoot">Non puoi spostare la cartella principale degli annunci di Marketplace</string>
- <string name="TooltipOutboxMixedStock">Tutti gli articoli in una cartella di magazzino devono essere dello stesso tipo e con le stesse autorizzazioni</string>
- <string name="TooltipDragOntoOwnChild">Non puoi spostare una cartella nella relativa cartella secondaria</string>
- <string name="TooltipDragOntoSelf">Non puoi spostare una cartella in se stessa</string>
- <string name="TooltipHttpUrl">Clicca per visitare questa pagina web</string>
- <string name="TooltipSLURL">Clicca per avere maggiori informazioni sul luogo</string>
- <string name="TooltipAgentUrl">Clicca per vedere il profilo di questo residente</string>
- <string name="TooltipAgentInspect">Ulteriori informazioni su questo Residente</string>
- <string name="TooltipAgentMute">Clicca per disattivare l'audio di questo residente</string>
- <string name="TooltipAgentUnmute">Clicca per attivare l'audio del residente</string>
- <string name="TooltipAgentIM">Clicca per inviare un IM a questo residente</string>
- <string name="TooltipAgentPay">Clicca per pagare il residente</string>
- <string name="TooltipAgentOfferTeleport">Fai clic per inviare un'offerta di teleport al residente</string>
- <string name="TooltipAgentRequestFriend">Fai clic per inviare una richiesta di amicizia al residente</string>
- <string name="TooltipGroupUrl">Clicca per vedere la descrizione del gruppo</string>
- <string name="TooltipEventUrl">Clicca per vedere la descrizione dell'evento</string>
- <string name="TooltipClassifiedUrl">Clicca per vedere questa inserzione</string>
- <string name="TooltipParcelUrl">Clicca per vedere la descrizione del lotto</string>
- <string name="TooltipTeleportUrl">Clicca per effettuare il teleport a questa destinazione</string>
- <string name="TooltipObjectIMUrl">Clicca per vedere la descrizione dell'oggetto</string>
- <string name="TooltipMapUrl">Clicca per vedere questo posto sulla mappa</string>
- <string name="TooltipSLAPP">Clicca per avviare il comando secondlife://</string>
+ <string name="TooltipSLIcon">
+ Questo link porta a una pagina nel dominio ufficiale SecondLife.com o LindenLab.com.
+ </string>
+ <string name="TooltipOutboxDragToWorld">
+ Non puoi rezzare articoli dalla cartella degli annunci di Marketplace
+ </string>
+ <string name="TooltipOutboxWorn">
+ Non puoi inserire nella cartella degli annunci in Marketplace gli articoli che indossi
+ </string>
+ <string name="TooltipOutboxFolderLevels">
+ La profondità delle caselle nidificate è maggiore di [AMOUNT]. Diminuisci la profondità delle cartelle nidificate; se necessario, raggruppa gli articoli.
+ </string>
+ <string name="TooltipOutboxTooManyFolders">
+ Il numero di sottocartelle è maggiore di [AMOUNT]. Diminuisci il numero delle cartelle nel tuo annuncio; se necessario, raggruppa gli articoli.
+ </string>
+ <string name="TooltipOutboxTooManyObjects">
+ Il numero di articoli è maggiore di [AMOUNT]. Per vendere più di [AMOUNT] articoli in un annuncio, devi raggruppare alcuni di essi.
+ </string>
+ <string name="TooltipOutboxTooManyStockItems">
+ Il numero di articoli in magazzino è maggiore di [AMOUNT].
+ </string>
+ <string name="TooltipOutboxCannotDropOnRoot">
+ Puoi trascinare elementi o cartelle solo nelle schede TUTTI o NON ASSOCIATO. Seleziona una di quelle schede e sposta nuovamente gli elementi o le cartelle.
+ </string>
+ <string name="TooltipOutboxNoTransfer">
+ Almeno uno di questi oggetti non può essere venduto o trasferito
+ </string>
+ <string name="TooltipOutboxNotInInventory">
+ Puoi aggiungere a Marketplace solo gli articoli nel tuo inventario
+ </string>
+ <string name="TooltipOutboxLinked">
+ Non puoi inserire cartelle o articoli collegati tramite link nel Marketplace
+ </string>
+ <string name="TooltipOutboxCallingCard">
+ Non puoi inserire biglietti da visita in Marketplace
+ </string>
+ <string name="TooltipOutboxDragActive">
+ non puoi muovere un annuncio attivo
+ </string>
+ <string name="TooltipOutboxCannotMoveRoot">
+ Non puoi spostare la cartella principale degli annunci di Marketplace
+ </string>
+ <string name="TooltipOutboxMixedStock">
+ Tutti gli articoli in una cartella di magazzino devono essere dello stesso tipo e con le stesse autorizzazioni
+ </string>
+ <string name="TooltipDragOntoOwnChild">
+ Non puoi spostare una cartella nella relativa cartella secondaria
+ </string>
+ <string name="TooltipDragOntoSelf">
+ Non puoi spostare una cartella in se stessa
+ </string>
+ <string name="TooltipHttpUrl">
+ Clicca per visitare questa pagina web
+ </string>
+ <string name="TooltipSLURL">
+ Clicca per avere maggiori informazioni sul luogo
+ </string>
+ <string name="TooltipAgentUrl">
+ Clicca per vedere il profilo di questo residente
+ </string>
+ <string name="TooltipAgentInspect">
+ Ulteriori informazioni su questo Residente
+ </string>
+ <string name="TooltipAgentMute">
+ Clicca per disattivare l'audio di questo residente
+ </string>
+ <string name="TooltipAgentUnmute">
+ Clicca per attivare l'audio del residente
+ </string>
+ <string name="TooltipAgentIM">
+ Clicca per inviare un IM a questo residente
+ </string>
+ <string name="TooltipAgentPay">
+ Clicca per pagare il residente
+ </string>
+ <string name="TooltipAgentOfferTeleport">
+ Fai clic per inviare un'offerta di teleport al residente
+ </string>
+ <string name="TooltipAgentRequestFriend">
+ Fai clic per inviare una richiesta di amicizia al residente
+ </string>
+ <string name="TooltipGroupUrl">
+ Clicca per vedere la descrizione del gruppo
+ </string>
+ <string name="TooltipEventUrl">
+ Clicca per vedere la descrizione dell'evento
+ </string>
+ <string name="TooltipClassifiedUrl">
+ Clicca per vedere questa inserzione
+ </string>
+ <string name="TooltipParcelUrl">
+ Clicca per vedere la descrizione del lotto
+ </string>
+ <string name="TooltipTeleportUrl">
+ Clicca per effettuare il teleport a questa destinazione
+ </string>
+ <string name="TooltipObjectIMUrl">
+ Clicca per vedere la descrizione dell'oggetto
+ </string>
+ <string name="TooltipMapUrl">
+ Clicca per vedere questo posto sulla mappa
+ </string>
+ <string name="TooltipSLAPP">
+ Clicca per avviare il comando secondlife://
+ </string>
<string name="CurrentURL" value="URL attuale: [CurrentURL]"/>
- <string name="TooltipEmail">Fai clic per comporre un'email</string>
- <string name="SLurlLabelTeleport">Teleportati a</string>
- <string name="SLurlLabelShowOnMap">Mostra la mappa per</string>
- <string name="SLappAgentMute">Disattiva audio</string>
- <string name="SLappAgentUnmute">Riattiva audio</string>
- <string name="SLappAgentIM">IM</string>
- <string name="SLappAgentPay">Paga</string>
- <string name="SLappAgentOfferTeleport">Offri teleport a</string>
- <string name="SLappAgentRequestFriend">Richiesta di amicizia</string>
- <string name="SLappAgentRemoveFriend">Rimozione amico</string>
- <string name="BUTTON_CLOSE_DARWIN">Chiudi (⌘W)</string>
- <string name="BUTTON_CLOSE_WIN">Chiudi (Ctrl+W)</string>
- <string name="BUTTON_CLOSE_CHROME">Chiudi</string>
- <string name="BUTTON_RESTORE">Ripristina</string>
- <string name="BUTTON_MINIMIZE">Minimizza</string>
- <string name="BUTTON_TEAR_OFF">Distacca</string>
- <string name="BUTTON_DOCK">Àncora</string>
- <string name="BUTTON_HELP">Mostra Aiuto</string>
- <string name="TooltipNotecardNotAllowedTypeDrop">Oggetti di questo tipo non possono essere allegati ai
-biglietti in questa regione.</string>
- <string name="TooltipNotecardOwnerRestrictedDrop">Solamente gli oggetti con autorizzazioni
+ <string name="TooltipEmail">
+ Fai clic per comporre un'email
+ </string>
+ <string name="SLurlLabelTeleport">
+ Teleportati a
+ </string>
+ <string name="SLurlLabelShowOnMap">
+ Mostra la mappa per
+ </string>
+ <string name="SLappAgentMute">
+ Disattiva audio
+ </string>
+ <string name="SLappAgentUnmute">
+ Riattiva audio
+ </string>
+ <string name="SLappAgentIM">
+ IM
+ </string>
+ <string name="SLappAgentPay">
+ Paga
+ </string>
+ <string name="SLappAgentOfferTeleport">
+ Offri teleport a
+ </string>
+ <string name="SLappAgentRequestFriend">
+ Richiesta di amicizia
+ </string>
+ <string name="SLappAgentRemoveFriend">
+ Rimozione amico
+ </string>
+ <string name="BUTTON_CLOSE_DARWIN">
+ Chiudi (⌘W)
+ </string>
+ <string name="BUTTON_CLOSE_WIN">
+ Chiudi (Ctrl+W)
+ </string>
+ <string name="BUTTON_CLOSE_CHROME">
+ Chiudi
+ </string>
+ <string name="BUTTON_RESTORE">
+ Ripristina
+ </string>
+ <string name="BUTTON_MINIMIZE">
+ Minimizza
+ </string>
+ <string name="BUTTON_TEAR_OFF">
+ Distacca
+ </string>
+ <string name="BUTTON_DOCK">
+ Àncora
+ </string>
+ <string name="BUTTON_HELP">
+ Mostra Aiuto
+ </string>
+ <string name="TooltipNotecardNotAllowedTypeDrop">
+ Oggetti di questo tipo non possono essere allegati ai
+biglietti in questa regione.
+ </string>
+ <string name="TooltipNotecardOwnerRestrictedDrop">
+ Solamente gli oggetti con autorizzazioni
illimitate al “proprietario successivo”
-possono essere allegati ai biglietti.</string>
- <string name="Searching">Ricerca in corso...</string>
- <string name="NoneFound">Nessun risultato.</string>
- <string name="RetrievingData">Recupero dati in corso...</string>
- <string name="ReleaseNotes">Note sulla versione</string>
- <string name="RELEASE_NOTES_BASE_URL">https://megapahit.net/</string>
- <string name="LoadingData">In caricamento...</string>
- <string name="AvatarNameNobody">(nessuno)</string>
- <string name="AvatarNameWaiting">(in attesa)</string>
- <string name="GroupNameNone">(nessuno)</string>
- <string name="AssetErrorNone">Nessun errore</string>
- <string name="AssetErrorRequestFailed">Richiesta risorsa: fallita</string>
- <string name="AssetErrorNonexistentFile">Richiesta risorsa: file non esistente</string>
- <string name="AssetErrorNotInDatabase">Richiesta risorsa: risorsa non trovata nel database</string>
- <string name="AssetErrorEOF">Fine del file</string>
- <string name="AssetErrorCannotOpenFile">Apertura del file non possibile</string>
- <string name="AssetErrorFileNotFound">File non trovato</string>
- <string name="AssetErrorTCPTimeout">Tempo esaurito per il trasferimento file</string>
- <string name="AssetErrorCircuitGone">Circuito perso</string>
- <string name="AssetErrorPriceMismatch">Il programma e il server non combaciano nel prezzo</string>
- <string name="AssetErrorUnknownStatus">Stato sconosciuto</string>
- <string name="AssetUploadServerUnreacheble">Servizio non raggiungibile.</string>
- <string name="AssetUploadServerDifficulties">Il servizio sta riscontrando difficoltà inaspettate.</string>
- <string name="AssetUploadServerUnavaliable">Servizio non disponibile o limite di tempo per il caricamento raggiunto.</string>
- <string name="AssetUploadRequestInvalid">Errore nella richiesta di caricamento. Vai alla pagina
-http://secondlife.com/support per risolvere il problema.</string>
- <string name="SettingValidationError">Impossibile convalidare le impostazioni importate [NAME]</string>
- <string name="SettingImportFileError">Impossibile aprire il file [FILE]</string>
- <string name="SettingParseFileError">Impossibile aprire il file [FILE]</string>
- <string name="SettingTranslateError">Impossibile tradurre la legacy vento e luce [NAME]</string>
- <string name="texture">texture</string>
- <string name="sound">suono</string>
- <string name="calling card">biglietto da visita</string>
- <string name="landmark">punto di riferimento</string>
- <string name="legacy script">script (vecchia versione)</string>
- <string name="clothing">vestiario</string>
- <string name="object">oggetto</string>
- <string name="note card">biglietto</string>
- <string name="folder">cartella</string>
- <string name="root">cartella principale</string>
- <string name="lsl2 script">script LSL2</string>
- <string name="lsl bytecode">bytecode LSL</string>
- <string name="tga texture">tga texture</string>
- <string name="body part">parte del corpo</string>
- <string name="snapshot">fotografia</string>
- <string name="lost and found">oggetti smarriti</string>
- <string name="targa image">immagine targa</string>
- <string name="trash">Cestino</string>
- <string name="jpeg image">immagine jpeg</string>
- <string name="animation">animazione</string>
- <string name="gesture">gesture</string>
- <string name="simstate">simstate</string>
- <string name="favorite">preferiti</string>
- <string name="symbolic link">link</string>
- <string name="symbolic folder link">link alla cartella</string>
- <string name="settings blob">impostazioni</string>
- <string name="mesh">reticolo</string>
- <string name="AvatarEditingAppearance">(Modifica Aspetto)</string>
- <string name="AvatarAway">Assente</string>
- <string name="AvatarDoNotDisturb">Non disturbare</string>
- <string name="AvatarMuted">Mutato</string>
- <string name="anim_express_afraid">Dispiaciuto</string>
- <string name="anim_express_anger">Arrabbiato</string>
- <string name="anim_away">Assente</string>
- <string name="anim_backflip">Salto all'indietro</string>
- <string name="anim_express_laugh">Ridere a crepapelle</string>
- <string name="anim_express_toothsmile">Gran sorriso</string>
- <string name="anim_blowkiss">Lancia un bacio</string>
- <string name="anim_express_bored">Noia</string>
- <string name="anim_bow">Inchino</string>
- <string name="anim_clap">Applauso</string>
- <string name="anim_courtbow">Inchino a corte</string>
- <string name="anim_express_cry">Pianto</string>
- <string name="anim_dance1">Ballo 1</string>
- <string name="anim_dance2">Ballo 2</string>
- <string name="anim_dance3">Ballo 3</string>
- <string name="anim_dance4">Ballo 4</string>
- <string name="anim_dance5">Ballo 5</string>
- <string name="anim_dance6">Ballo 6</string>
- <string name="anim_dance7">Ballo 7</string>
- <string name="anim_dance8">Dance 8</string>
- <string name="anim_express_disdain">Sdegno</string>
- <string name="anim_drink">Bere</string>
- <string name="anim_express_embarrased">Imbarazzo</string>
- <string name="anim_angry_fingerwag">Negare col dito</string>
- <string name="anim_fist_pump">Esultare con pugno</string>
- <string name="anim_yoga_float">Yoga fluttuante</string>
- <string name="anim_express_frown">Acciglio</string>
- <string name="anim_impatient">Impazienza</string>
- <string name="anim_jumpforjoy">Salto di gioia</string>
- <string name="anim_kissmybutt">Baciami il sedere</string>
- <string name="anim_express_kiss">Bacio</string>
- <string name="anim_laugh_short">Risata</string>
- <string name="anim_musclebeach">Muscoli da spiaggia</string>
- <string name="anim_no_unhappy">No (Scontento)</string>
- <string name="anim_no_head">No</string>
- <string name="anim_nyanya">Na-na-na</string>
- <string name="anim_punch_onetwo">Uno-due pugno</string>
- <string name="anim_express_open_mouth">Bocca aperta</string>
- <string name="anim_peace">Pace</string>
- <string name="anim_point_you">Indicare altri</string>
- <string name="anim_point_me">Indicare te stesso</string>
- <string name="anim_punch_l">Pugno a sinistra</string>
- <string name="anim_punch_r">Pugno a destra</string>
- <string name="anim_rps_countdown">Contare nella morra cinese</string>
- <string name="anim_rps_paper">Carta nella morra cinese</string>
- <string name="anim_rps_rock">Sasso nella morra cinese</string>
- <string name="anim_rps_scissors">Forbici nella morra cinese</string>
- <string name="anim_express_repulsed">Repulsione</string>
- <string name="anim_kick_roundhouse_r">Calcio con rotazione</string>
- <string name="anim_express_sad">Triste</string>
- <string name="anim_salute">Saluto</string>
- <string name="anim_shout">Urlo</string>
- <string name="anim_express_shrug">Spallucce</string>
- <string name="anim_express_smile">Sorriso</string>
- <string name="anim_smoke_idle">Fumare</string>
- <string name="anim_smoke_inhale">Fumare inspirazione</string>
- <string name="anim_smoke_throw_down">Fumare mandando giù</string>
- <string name="anim_express_surprise">Sorpresa</string>
- <string name="anim_sword_strike_r">Colpo di spada</string>
- <string name="anim_angry_tantrum">Collera</string>
- <string name="anim_express_tongue_out">Linguaccia</string>
- <string name="anim_hello">Saluto con mano</string>
- <string name="anim_whisper">Sussurro</string>
- <string name="anim_whistle">Fischio</string>
- <string name="anim_express_wink">Ammicca</string>
- <string name="anim_wink_hollywood">Ammicca (Hollywood)</string>
- <string name="anim_express_worry">Preoccupato</string>
- <string name="anim_yes_happy">Si (Felice)</string>
- <string name="anim_yes_head">Si</string>
- <string name="multiple_textures">Multiple</string>
- <string name="use_texture">Usa texture</string>
- <string name="manip_hint1">Sposta il cursore sul righello</string>
- <string name="manip_hint2">per bloccare sulla griglia</string>
- <string name="texture_loading">Caricamento in corso...</string>
- <string name="worldmap_offline">Offline</string>
- <string name="worldmap_item_tooltip_format">L$ [PRICE] - [AREA] m²</string>
- <string name="worldmap_results_none_found">Nessun risultato.</string>
- <string name="Ok">OK</string>
- <string name="Premature end of file">Fine prematura del file</string>
- <string name="ST_NO_JOINT">Impossibile trovare ROOT o JOINT.</string>
- <string name="NearbyChatTitle">Chat nei dintorni</string>
- <string name="NearbyChatLabel">(Chat nei dintorni)</string>
- <string name="whisper">sussurra:</string>
- <string name="shout">grida:</string>
- <string name="ringing">In connessione alla Voice Chat in-world...</string>
- <string name="connected">Connesso</string>
- <string name="unavailable">Il voice non è disponibile nel posto dove ti trovi ora</string>
- <string name="hang_up">Disconnesso dalla Voice Chat in-world</string>
- <string name="reconnect_nearby">Sarai riconnesso alla chat vocale nei dintorni</string>
- <string name="ScriptQuestionCautionChatGranted">A '[OBJECTNAME]', un oggetto di proprietà di '[OWNERNAME]', situato in [REGIONNAME] [REGIONPOS], è stato concesso il permesso di: [PERMISSIONS].</string>
- <string name="ScriptQuestionCautionChatDenied">A '[OBJECTNAME]', un oggetto di proprietà di '[OWNERNAME]', situato in [REGIONNAME] [REGIONPOS], è stato negato il permesso di: [PERMISSIONS].</string>
- <string name="AdditionalPermissionsRequestHeader">Se consenti l'accesso al tuo account, consentirai anche all'oggetto di:</string>
- <string name="ScriptTakeMoney">Prendere dollari Linden (L$) da te</string>
- <string name="ActOnControlInputs">Agire sul tuo controllo degli input</string>
- <string name="RemapControlInputs">Rimappare il tuo controllo degli input</string>
- <string name="AnimateYourAvatar">Animare il tuo avatar</string>
- <string name="AttachToYourAvatar">Far indossare al tuo avatar</string>
- <string name="ReleaseOwnership">Rilasciare la propietà è far diventare pubblico.</string>
- <string name="LinkAndDelink">Collegare e scollegare dagli altri oggetti</string>
- <string name="AddAndRemoveJoints">Aggiungere e rimuovere le giunzioni insieme con gli altri oggetti</string>
- <string name="ChangePermissions">Cambiare i permessi</string>
- <string name="TrackYourCamera">Tracciare la fotocamera</string>
- <string name="ControlYourCamera">Controllare la tua fotocamera</string>
- <string name="TeleportYourAgent">Teleportarti</string>
- <string name="ForceSitAvatar">Forza l'avatar a sedersi</string>
- <string name="ChangeEnvSettings">Cambia le impostazioni dell’ambiente</string>
- <string name="AgentNameSubst">(Tu)</string>
+possono essere allegati ai biglietti.
+ </string>
+ <string name="Searching">
+ Ricerca in corso...
+ </string>
+ <string name="NoneFound">
+ Nessun risultato.
+ </string>
+ <string name="RetrievingData">
+ Recupero dati in corso...
+ </string>
+ <string name="ReleaseNotes">
+ Note sulla versione
+ </string>
+ <string name="RELEASE_NOTES_BASE_URL">
+ https://megapahit.net/
+ </string>
+ <string name="LoadingData">
+ In caricamento...
+ </string>
+ <string name="AvatarNameNobody">
+ (nessuno)
+ </string>
+ <string name="AvatarNameWaiting">
+ (in attesa)
+ </string>
+ <string name="GroupNameNone">
+ (nessuno)
+ </string>
+ <string name="AssetErrorNone">
+ Nessun errore
+ </string>
+ <string name="AssetErrorRequestFailed">
+ Richiesta risorsa: fallita
+ </string>
+ <string name="AssetErrorNonexistentFile">
+ Richiesta risorsa: file non esistente
+ </string>
+ <string name="AssetErrorNotInDatabase">
+ Richiesta risorsa: risorsa non trovata nel database
+ </string>
+ <string name="AssetErrorEOF">
+ Fine del file
+ </string>
+ <string name="AssetErrorCannotOpenFile">
+ Apertura del file non possibile
+ </string>
+ <string name="AssetErrorFileNotFound">
+ File non trovato
+ </string>
+ <string name="AssetErrorTCPTimeout">
+ Tempo esaurito per il trasferimento file
+ </string>
+ <string name="AssetErrorCircuitGone">
+ Circuito perso
+ </string>
+ <string name="AssetErrorPriceMismatch">
+ Il programma e il server non combaciano nel prezzo
+ </string>
+ <string name="AssetErrorUnknownStatus">
+ Stato sconosciuto
+ </string>
+ <string name="AssetUploadServerUnreacheble">
+ Servizio non raggiungibile.
+ </string>
+ <string name="AssetUploadServerDifficulties">
+ Il servizio sta riscontrando difficoltà inaspettate.
+ </string>
+ <string name="AssetUploadServerUnavaliable">
+ Servizio non disponibile o limite di tempo per il caricamento raggiunto.
+ </string>
+ <string name="AssetUploadRequestInvalid">
+ Errore nella richiesta di caricamento. Vai alla pagina
+http://secondlife.com/support per risolvere il problema.
+ </string>
+ <string name="SettingValidationError">
+ Impossibile convalidare le impostazioni importate [NAME]
+ </string>
+ <string name="SettingImportFileError">
+ Impossibile aprire il file [FILE]
+ </string>
+ <string name="SettingParseFileError">
+ Impossibile aprire il file [FILE]
+ </string>
+ <string name="SettingTranslateError">
+ Impossibile tradurre la legacy vento e luce [NAME]
+ </string>
+ <string name="texture">
+ texture
+ </string>
+ <string name="sound">
+ suono
+ </string>
+ <string name="calling card">
+ biglietto da visita
+ </string>
+ <string name="landmark">
+ punto di riferimento
+ </string>
+ <string name="legacy script">
+ script (vecchia versione)
+ </string>
+ <string name="clothing">
+ vestiario
+ </string>
+ <string name="object">
+ oggetto
+ </string>
+ <string name="note card">
+ biglietto
+ </string>
+ <string name="folder">
+ cartella
+ </string>
+ <string name="root">
+ cartella principale
+ </string>
+ <string name="lsl2 script">
+ script LSL2
+ </string>
+ <string name="lsl bytecode">
+ bytecode LSL
+ </string>
+ <string name="tga texture">
+ tga texture
+ </string>
+ <string name="body part">
+ parte del corpo
+ </string>
+ <string name="snapshot">
+ fotografia
+ </string>
+ <string name="lost and found">
+ oggetti smarriti
+ </string>
+ <string name="targa image">
+ immagine targa
+ </string>
+ <string name="trash">
+ Cestino
+ </string>
+ <string name="jpeg image">
+ immagine jpeg
+ </string>
+ <string name="animation">
+ animazione
+ </string>
+ <string name="gesture">
+ gesture
+ </string>
+ <string name="simstate">
+ simstate
+ </string>
+ <string name="favorite">
+ preferiti
+ </string>
+ <string name="symbolic link">
+ link
+ </string>
+ <string name="symbolic folder link">
+ link alla cartella
+ </string>
+ <string name="settings blob">
+ impostazioni
+ </string>
+ <string name="mesh">
+ reticolo
+ </string>
+ <string name="AvatarEditingAppearance">
+ (Modifica Aspetto)
+ </string>
+ <string name="AvatarAway">
+ Assente
+ </string>
+ <string name="AvatarDoNotDisturb">
+ Non disturbare
+ </string>
+ <string name="AvatarMuted">
+ Mutato
+ </string>
+ <string name="anim_express_afraid">
+ Dispiaciuto
+ </string>
+ <string name="anim_express_anger">
+ Arrabbiato
+ </string>
+ <string name="anim_away">
+ Assente
+ </string>
+ <string name="anim_backflip">
+ Salto all'indietro
+ </string>
+ <string name="anim_express_laugh">
+ Ridere a crepapelle
+ </string>
+ <string name="anim_express_toothsmile">
+ Gran sorriso
+ </string>
+ <string name="anim_blowkiss">
+ Lancia un bacio
+ </string>
+ <string name="anim_express_bored">
+ Noia
+ </string>
+ <string name="anim_bow">
+ Inchino
+ </string>
+ <string name="anim_clap">
+ Applauso
+ </string>
+ <string name="anim_courtbow">
+ Inchino a corte
+ </string>
+ <string name="anim_express_cry">
+ Pianto
+ </string>
+ <string name="anim_dance1">
+ Ballo 1
+ </string>
+ <string name="anim_dance2">
+ Ballo 2
+ </string>
+ <string name="anim_dance3">
+ Ballo 3
+ </string>
+ <string name="anim_dance4">
+ Ballo 4
+ </string>
+ <string name="anim_dance5">
+ Ballo 5
+ </string>
+ <string name="anim_dance6">
+ Ballo 6
+ </string>
+ <string name="anim_dance7">
+ Ballo 7
+ </string>
+ <string name="anim_dance8">
+ Dance 8
+ </string>
+ <string name="anim_express_disdain">
+ Sdegno
+ </string>
+ <string name="anim_drink">
+ Bere
+ </string>
+ <string name="anim_express_embarrased">
+ Imbarazzo
+ </string>
+ <string name="anim_angry_fingerwag">
+ Negare col dito
+ </string>
+ <string name="anim_fist_pump">
+ Esultare con pugno
+ </string>
+ <string name="anim_yoga_float">
+ Yoga fluttuante
+ </string>
+ <string name="anim_express_frown">
+ Acciglio
+ </string>
+ <string name="anim_impatient">
+ Impazienza
+ </string>
+ <string name="anim_jumpforjoy">
+ Salto di gioia
+ </string>
+ <string name="anim_kissmybutt">
+ Baciami il sedere
+ </string>
+ <string name="anim_express_kiss">
+ Bacio
+ </string>
+ <string name="anim_laugh_short">
+ Risata
+ </string>
+ <string name="anim_musclebeach">
+ Muscoli da spiaggia
+ </string>
+ <string name="anim_no_unhappy">
+ No (Scontento)
+ </string>
+ <string name="anim_no_head">
+ No
+ </string>
+ <string name="anim_nyanya">
+ Na-na-na
+ </string>
+ <string name="anim_punch_onetwo">
+ Uno-due pugno
+ </string>
+ <string name="anim_express_open_mouth">
+ Bocca aperta
+ </string>
+ <string name="anim_peace">
+ Pace
+ </string>
+ <string name="anim_point_you">
+ Indicare altri
+ </string>
+ <string name="anim_point_me">
+ Indicare te stesso
+ </string>
+ <string name="anim_punch_l">
+ Pugno a sinistra
+ </string>
+ <string name="anim_punch_r">
+ Pugno a destra
+ </string>
+ <string name="anim_rps_countdown">
+ Contare nella morra cinese
+ </string>
+ <string name="anim_rps_paper">
+ Carta nella morra cinese
+ </string>
+ <string name="anim_rps_rock">
+ Sasso nella morra cinese
+ </string>
+ <string name="anim_rps_scissors">
+ Forbici nella morra cinese
+ </string>
+ <string name="anim_express_repulsed">
+ Repulsione
+ </string>
+ <string name="anim_kick_roundhouse_r">
+ Calcio con rotazione
+ </string>
+ <string name="anim_express_sad">
+ Triste
+ </string>
+ <string name="anim_salute">
+ Saluto
+ </string>
+ <string name="anim_shout">
+ Urlo
+ </string>
+ <string name="anim_express_shrug">
+ Spallucce
+ </string>
+ <string name="anim_express_smile">
+ Sorriso
+ </string>
+ <string name="anim_smoke_idle">
+ Fumare
+ </string>
+ <string name="anim_smoke_inhale">
+ Fumare inspirazione
+ </string>
+ <string name="anim_smoke_throw_down">
+ Fumare mandando giù
+ </string>
+ <string name="anim_express_surprise">
+ Sorpresa
+ </string>
+ <string name="anim_sword_strike_r">
+ Colpo di spada
+ </string>
+ <string name="anim_angry_tantrum">
+ Collera
+ </string>
+ <string name="anim_express_tongue_out">
+ Linguaccia
+ </string>
+ <string name="anim_hello">
+ Saluto con mano
+ </string>
+ <string name="anim_whisper">
+ Sussurro
+ </string>
+ <string name="anim_whistle">
+ Fischio
+ </string>
+ <string name="anim_express_wink">
+ Ammicca
+ </string>
+ <string name="anim_wink_hollywood">
+ Ammicca (Hollywood)
+ </string>
+ <string name="anim_express_worry">
+ Preoccupato
+ </string>
+ <string name="anim_yes_happy">
+ Si (Felice)
+ </string>
+ <string name="anim_yes_head">
+ Si
+ </string>
+ <string name="multiple_textures">
+ Multiple
+ </string>
+ <string name="use_texture">
+ Usa texture
+ </string>
+ <string name="manip_hint1">
+ Sposta il cursore sul righello
+ </string>
+ <string name="manip_hint2">
+ per bloccare sulla griglia
+ </string>
+ <string name="texture_loading">
+ Caricamento in corso...
+ </string>
+ <string name="worldmap_offline">
+ Offline
+ </string>
+ <string name="worldmap_item_tooltip_format">
+ L$ [PRICE] - [AREA] m²
+ </string>
+ <string name="worldmap_results_none_found">
+ Nessun risultato.
+ </string>
+ <string name="Ok">
+ OK
+ </string>
+ <string name="Premature end of file">
+ Fine prematura del file
+ </string>
+ <string name="ST_NO_JOINT">
+ Impossibile trovare ROOT o JOINT.
+ </string>
+ <string name="NearbyChatTitle">
+ Chat nei dintorni
+ </string>
+ <string name="NearbyChatLabel">
+ (Chat nei dintorni)
+ </string>
+ <string name="whisper">
+ sussurra:
+ </string>
+ <string name="shout">
+ grida:
+ </string>
+ <string name="ringing">
+ In connessione alla Voice Chat in-world...
+ </string>
+ <string name="connected">
+ Connesso
+ </string>
+ <string name="unavailable">
+ Il voice non è disponibile nel posto dove ti trovi ora
+ </string>
+ <string name="hang_up">
+ Disconnesso dalla Voice Chat in-world
+ </string>
+ <string name="reconnect_nearby">
+ Sarai riconnesso alla chat vocale nei dintorni
+ </string>
+ <string name="ScriptQuestionCautionChatGranted">
+ A '[OBJECTNAME]', un oggetto di proprietà di '[OWNERNAME]', situato in [REGIONNAME] [REGIONPOS], è stato concesso il permesso di: [PERMISSIONS].
+ </string>
+ <string name="ScriptQuestionCautionChatDenied">
+ A '[OBJECTNAME]', un oggetto di proprietà di '[OWNERNAME]', situato in [REGIONNAME] [REGIONPOS], è stato negato il permesso di: [PERMISSIONS].
+ </string>
+ <string name="AdditionalPermissionsRequestHeader">
+ Se consenti l'accesso al tuo account, consentirai anche all'oggetto di:
+ </string>
+ <string name="ScriptTakeMoney">
+ Prendere dollari Linden (L$) da te
+ </string>
+ <string name="ActOnControlInputs">
+ Agire sul tuo controllo degli input
+ </string>
+ <string name="RemapControlInputs">
+ Rimappare il tuo controllo degli input
+ </string>
+ <string name="AnimateYourAvatar">
+ Animare il tuo avatar
+ </string>
+ <string name="AttachToYourAvatar">
+ Far indossare al tuo avatar
+ </string>
+ <string name="ReleaseOwnership">
+ Rilasciare la propietà è far diventare pubblico.
+ </string>
+ <string name="LinkAndDelink">
+ Collegare e scollegare dagli altri oggetti
+ </string>
+ <string name="AddAndRemoveJoints">
+ Aggiungere e rimuovere le giunzioni insieme con gli altri oggetti
+ </string>
+ <string name="ChangePermissions">
+ Cambiare i permessi
+ </string>
+ <string name="TrackYourCamera">
+ Tracciare la fotocamera
+ </string>
+ <string name="ControlYourCamera">
+ Controllare la tua fotocamera
+ </string>
+ <string name="TeleportYourAgent">
+ Teleportarti
+ </string>
+ <string name="ForceSitAvatar">
+ Forza l'avatar a sedersi
+ </string>
+ <string name="ChangeEnvSettings">
+ Cambia le impostazioni dell’ambiente
+ </string>
+ <string name="AgentNameSubst">
+ (Tu)
+ </string>
<string name="JoinAnExperience"/>
- <string name="SilentlyManageEstateAccess">Omette gli avvisi durante la gestione degli elenchi di accesso alle proprietà immobiliari</string>
- <string name="OverrideYourAnimations">Sostituisce le animazioni predefinite</string>
- <string name="ScriptReturnObjects">Restituisce oggetti per conto tuo</string>
- <string name="UnknownScriptPermission">(sconosciuto)!</string>
- <string name="SIM_ACCESS_PG">Generale</string>
- <string name="SIM_ACCESS_MATURE">Moderato</string>
- <string name="SIM_ACCESS_ADULT">Adulti</string>
- <string name="SIM_ACCESS_DOWN">Offline</string>
- <string name="SIM_ACCESS_MIN">Sconosciuto</string>
- <string name="land_type_unknown">(sconosciuto)</string>
- <string name="Estate / Full Region">Proprietà immobiliare / Regione completa</string>
- <string name="Estate / Homestead">Proprietà immobiliare / Homestead</string>
- <string name="Mainland / Homestead">Continente / Homestead</string>
- <string name="Mainland / Full Region">Continente / Regione completa</string>
- <string name="all_files">Tutti i file</string>
- <string name="sound_files">Suoni</string>
- <string name="animation_files">Animazioni</string>
- <string name="image_files">Immagini</string>
- <string name="save_file_verb">Salva</string>
- <string name="load_file_verb">Carica</string>
- <string name="targa_image_files">Immagini Targa</string>
- <string name="bitmap_image_files">Immagini Bitmap</string>
- <string name="png_image_files">Immagini PNG</string>
- <string name="save_texture_image_files">Immagini Targa o PNG</string>
- <string name="avi_movie_file">File video AVI</string>
- <string name="xaf_animation_file">File animazione XAF</string>
- <string name="xml_file">File XML</string>
- <string name="raw_file">File RAW</string>
- <string name="compressed_image_files">Immagini compresse</string>
- <string name="load_files">Carica i file</string>
- <string name="choose_the_directory">Scegli la cartella</string>
- <string name="script_files">Script</string>
- <string name="dictionary_files">Dizionari</string>
- <string name="shape">Figura corporea</string>
- <string name="skin">Pelle</string>
- <string name="hair">Capigliature</string>
- <string name="eyes">Occhi</string>
- <string name="shirt">Camicia</string>
- <string name="pants">Pantaloni</string>
- <string name="shoes">Scarpe</string>
- <string name="socks">Calzini</string>
- <string name="jacket">Giacca</string>
- <string name="gloves">Guanti</string>
- <string name="undershirt">Maglietta intima</string>
- <string name="underpants">Slip</string>
- <string name="skirt">Gonna</string>
- <string name="alpha">Alfa (Trasparenza)</string>
- <string name="tattoo">Tatuaggio</string>
- <string name="universal">Universale</string>
- <string name="physics">Fisica</string>
- <string name="invalid">non valido</string>
- <string name="none">nessuno</string>
- <string name="shirt_not_worn">Camicia non indossata</string>
- <string name="pants_not_worn">Pantaloni non indossati</string>
- <string name="shoes_not_worn">Scarpe non indossate</string>
- <string name="socks_not_worn">Calzini non indossati</string>
- <string name="jacket_not_worn">Giacca non indossata</string>
- <string name="gloves_not_worn">Guanti non indossati</string>
- <string name="undershirt_not_worn">Maglietta intima non indossata</string>
- <string name="underpants_not_worn">Slip non indossati</string>
- <string name="skirt_not_worn">Gonna non indossata</string>
- <string name="alpha_not_worn">Alpha non portato</string>
- <string name="tattoo_not_worn">Tatuaggio non portato</string>
- <string name="universal_not_worn">Universale non indossato</string>
- <string name="physics_not_worn">Fisica non indossata</string>
- <string name="invalid_not_worn">non valido</string>
- <string name="create_new_shape">Crea nuova figura corporea</string>
- <string name="create_new_skin">Crea nuova pelle</string>
- <string name="create_new_hair">Crea nuovi capelli</string>
- <string name="create_new_eyes">Crea nuovi occhi</string>
- <string name="create_new_shirt">Crea nuova camicia</string>
- <string name="create_new_pants">Crea nuovi pantaloni</string>
- <string name="create_new_shoes">Crea nuove scarpe</string>
- <string name="create_new_socks">Crea nuove calze</string>
- <string name="create_new_jacket">Crea nuova giacca</string>
- <string name="create_new_gloves">Crea nuovi guanti</string>
- <string name="create_new_undershirt">Crea nuova maglietta intima</string>
- <string name="create_new_underpants">Crea nuovi slip</string>
- <string name="create_new_skirt">Crea nuova gonna</string>
- <string name="create_new_alpha">Crea nuovo Alpha</string>
- <string name="create_new_tattoo">Crea un nuovo tatuaggio</string>
- <string name="create_new_universal">Crea nuovo universale</string>
- <string name="create_new_physics">Crea nuova fisica</string>
- <string name="create_new_invalid">non valido</string>
- <string name="NewWearable">Nuovo [WEARABLE_ITEM]</string>
- <string name="next">Avanti</string>
- <string name="ok">OK</string>
- <string name="GroupNotifyGroupNotice">Avviso di gruppo</string>
- <string name="GroupNotifyGroupNotices">Avvisi di gruppo</string>
- <string name="GroupNotifySentBy">Inviato da</string>
- <string name="GroupNotifyAttached">Allegato:</string>
- <string name="GroupNotifyViewPastNotices">Visualizza gli avvisi precedenti o scegli qui di non riceverne.</string>
- <string name="GroupNotifyOpenAttachment">Apri l'allegato</string>
- <string name="GroupNotifySaveAttachment">Salva l'allegato</string>
- <string name="TeleportOffer">Offerta di Teleport</string>
- <string name="StartUpNotifications">Mentre eri assente sono arrivate nuove notifiche...</string>
- <string name="OverflowInfoChannelString">Hai ancora [%d] notifiche</string>
- <string name="BodyPartsRightArm">Braccio destro</string>
- <string name="BodyPartsHead">Testa</string>
- <string name="BodyPartsLeftArm">Braccio sinistro</string>
- <string name="BodyPartsLeftLeg">Gamba sinistra</string>
- <string name="BodyPartsTorso">Torace</string>
- <string name="BodyPartsRightLeg">Gamba destra</string>
- <string name="BodyPartsEnhancedSkeleton">Scheletro avanzato</string>
- <string name="GraphicsQualityLow">Basso</string>
- <string name="GraphicsQualityMid">Medio</string>
- <string name="GraphicsQualityHigh">Alto</string>
- <string name="LeaveMouselook">Premi ESC per tornare in visualizzazione normale</string>
- <string name="InventoryNoMatchingItems">Non riesci a trovare quello che cerchi? Prova [secondlife:///app/search/all/[SEARCH_TERM] Cerca].</string>
- <string name="InventoryNoMatchingRecentItems">Non hai trovato ció che cercavi? Prova [secondlife:///app/inventory/filters Show filters].</string>
- <string name="PlacesNoMatchingItems">Non riesci a trovare quello che cerchi? Prova [secondlife:///app/search/places/[SEARCH_TERM] Cerca].</string>
- <string name="FavoritesNoMatchingItems">Trascina qui un punto di riferimento per aggiungerlo ai Preferiti.</string>
- <string name="MarketplaceNoMatchingItems">Nessun articolo trovato. Controlla di aver digitato la stringa di ricerca correttamente e riprova.</string>
- <string name="InventoryNoTexture">Non hai una copia di questa texture nel tuo inventario</string>
- <string name="InventoryInboxNoItems">Gli acquissti dal mercato verranno mostrati qui. Potrai quindi trascinarli nel tuo inventario per usarli.</string>
- <string name="MarketplaceURL">https://marketplace.[MARKETPLACE_DOMAIN_NAME]/</string>
- <string name="MarketplaceURL_CreateStore">http://community.secondlife.com/t5/English-Knowledge-Base/Selling-in-the-Marketplace/ta-p/700193#Section_.3</string>
- <string name="MarketplaceURL_Dashboard">https://marketplace.[MARKETPLACE_DOMAIN_NAME]/merchants/store/dashboard</string>
- <string name="MarketplaceURL_Imports">https://marketplace.[MARKETPLACE_DOMAIN_NAME]/merchants/store/imports</string>
- <string name="MarketplaceURL_LearnMore">https://marketplace.[MARKETPLACE_DOMAIN_NAME]/learn_more</string>
- <string name="InventoryPlayAnimationTooltip">Apri finestra con opzioni di Gioco.</string>
- <string name="InventoryPlayGestureTooltip">Esegui il movimento selezionato nel mondo virtuale.</string>
- <string name="InventoryPlaySoundTooltip">Apri finestra con opzioni di Gioco.</string>
- <string name="InventoryOutboxNotMerchantTitle">Chiunque può vendere oggetti nel Marketplace.</string>
+ <string name="SilentlyManageEstateAccess">
+ Omette gli avvisi durante la gestione degli elenchi di accesso alle proprietà immobiliari
+ </string>
+ <string name="OverrideYourAnimations">
+ Sostituisce le animazioni predefinite
+ </string>
+ <string name="ScriptReturnObjects">
+ Restituisce oggetti per conto tuo
+ </string>
+ <string name="UnknownScriptPermission">
+ (sconosciuto)!
+ </string>
+ <string name="SIM_ACCESS_PG">
+ Generale
+ </string>
+ <string name="SIM_ACCESS_MATURE">
+ Moderato
+ </string>
+ <string name="SIM_ACCESS_ADULT">
+ Adulti
+ </string>
+ <string name="SIM_ACCESS_DOWN">
+ Offline
+ </string>
+ <string name="SIM_ACCESS_MIN">
+ Sconosciuto
+ </string>
+ <string name="land_type_unknown">
+ (sconosciuto)
+ </string>
+ <string name="Estate / Full Region">
+ Proprietà immobiliare / Regione completa
+ </string>
+ <string name="Estate / Homestead">
+ Proprietà immobiliare / Homestead
+ </string>
+ <string name="Mainland / Homestead">
+ Continente / Homestead
+ </string>
+ <string name="Mainland / Full Region">
+ Continente / Regione completa
+ </string>
+ <string name="all_files">
+ Tutti i file
+ </string>
+ <string name="sound_files">
+ Suoni
+ </string>
+ <string name="animation_files">
+ Animazioni
+ </string>
+ <string name="image_files">
+ Immagini
+ </string>
+ <string name="save_file_verb">
+ Salva
+ </string>
+ <string name="load_file_verb">
+ Carica
+ </string>
+ <string name="targa_image_files">
+ Immagini Targa
+ </string>
+ <string name="bitmap_image_files">
+ Immagini Bitmap
+ </string>
+ <string name="png_image_files">
+ Immagini PNG
+ </string>
+ <string name="save_texture_image_files">
+ Immagini Targa o PNG
+ </string>
+ <string name="avi_movie_file">
+ File video AVI
+ </string>
+ <string name="xaf_animation_file">
+ File animazione XAF
+ </string>
+ <string name="xml_file">
+ File XML
+ </string>
+ <string name="raw_file">
+ File RAW
+ </string>
+ <string name="compressed_image_files">
+ Immagini compresse
+ </string>
+ <string name="load_files">
+ Carica i file
+ </string>
+ <string name="choose_the_directory">
+ Scegli la cartella
+ </string>
+ <string name="script_files">
+ Script
+ </string>
+ <string name="dictionary_files">
+ Dizionari
+ </string>
+ <string name="shape">
+ Figura corporea
+ </string>
+ <string name="skin">
+ Pelle
+ </string>
+ <string name="hair">
+ Capigliature
+ </string>
+ <string name="eyes">
+ Occhi
+ </string>
+ <string name="shirt">
+ Camicia
+ </string>
+ <string name="pants">
+ Pantaloni
+ </string>
+ <string name="shoes">
+ Scarpe
+ </string>
+ <string name="socks">
+ Calzini
+ </string>
+ <string name="jacket">
+ Giacca
+ </string>
+ <string name="gloves">
+ Guanti
+ </string>
+ <string name="undershirt">
+ Maglietta intima
+ </string>
+ <string name="underpants">
+ Slip
+ </string>
+ <string name="skirt">
+ Gonna
+ </string>
+ <string name="alpha">
+ Alfa (Trasparenza)
+ </string>
+ <string name="tattoo">
+ Tatuaggio
+ </string>
+ <string name="universal">
+ Universale
+ </string>
+ <string name="physics">
+ Fisica
+ </string>
+ <string name="invalid">
+ non valido
+ </string>
+ <string name="none">
+ nessuno
+ </string>
+ <string name="shirt_not_worn">
+ Camicia non indossata
+ </string>
+ <string name="pants_not_worn">
+ Pantaloni non indossati
+ </string>
+ <string name="shoes_not_worn">
+ Scarpe non indossate
+ </string>
+ <string name="socks_not_worn">
+ Calzini non indossati
+ </string>
+ <string name="jacket_not_worn">
+ Giacca non indossata
+ </string>
+ <string name="gloves_not_worn">
+ Guanti non indossati
+ </string>
+ <string name="undershirt_not_worn">
+ Maglietta intima non indossata
+ </string>
+ <string name="underpants_not_worn">
+ Slip non indossati
+ </string>
+ <string name="skirt_not_worn">
+ Gonna non indossata
+ </string>
+ <string name="alpha_not_worn">
+ Alpha non portato
+ </string>
+ <string name="tattoo_not_worn">
+ Tatuaggio non portato
+ </string>
+ <string name="universal_not_worn">
+ Universale non indossato
+ </string>
+ <string name="physics_not_worn">
+ Fisica non indossata
+ </string>
+ <string name="invalid_not_worn">
+ non valido
+ </string>
+ <string name="create_new_shape">
+ Crea nuova figura corporea
+ </string>
+ <string name="create_new_skin">
+ Crea nuova pelle
+ </string>
+ <string name="create_new_hair">
+ Crea nuovi capelli
+ </string>
+ <string name="create_new_eyes">
+ Crea nuovi occhi
+ </string>
+ <string name="create_new_shirt">
+ Crea nuova camicia
+ </string>
+ <string name="create_new_pants">
+ Crea nuovi pantaloni
+ </string>
+ <string name="create_new_shoes">
+ Crea nuove scarpe
+ </string>
+ <string name="create_new_socks">
+ Crea nuove calze
+ </string>
+ <string name="create_new_jacket">
+ Crea nuova giacca
+ </string>
+ <string name="create_new_gloves">
+ Crea nuovi guanti
+ </string>
+ <string name="create_new_undershirt">
+ Crea nuova maglietta intima
+ </string>
+ <string name="create_new_underpants">
+ Crea nuovi slip
+ </string>
+ <string name="create_new_skirt">
+ Crea nuova gonna
+ </string>
+ <string name="create_new_alpha">
+ Crea nuovo Alpha
+ </string>
+ <string name="create_new_tattoo">
+ Crea un nuovo tatuaggio
+ </string>
+ <string name="create_new_universal">
+ Crea nuovo universale
+ </string>
+ <string name="create_new_physics">
+ Crea nuova fisica
+ </string>
+ <string name="create_new_invalid">
+ non valido
+ </string>
+ <string name="NewWearable">
+ Nuovo [WEARABLE_ITEM]
+ </string>
+ <string name="next">
+ Avanti
+ </string>
+ <string name="ok">
+ OK
+ </string>
+ <string name="GroupNotifyGroupNotice">
+ Avviso di gruppo
+ </string>
+ <string name="GroupNotifyGroupNotices">
+ Avvisi di gruppo
+ </string>
+ <string name="GroupNotifySentBy">
+ Inviato da
+ </string>
+ <string name="GroupNotifyAttached">
+ Allegato:
+ </string>
+ <string name="GroupNotifyViewPastNotices">
+ Visualizza gli avvisi precedenti o scegli qui di non riceverne.
+ </string>
+ <string name="GroupNotifyOpenAttachment">
+ Apri l'allegato
+ </string>
+ <string name="GroupNotifySaveAttachment">
+ Salva l'allegato
+ </string>
+ <string name="TeleportOffer">
+ Offerta di Teleport
+ </string>
+ <string name="StartUpNotifications">
+ Mentre eri assente sono arrivate nuove notifiche...
+ </string>
+ <string name="OverflowInfoChannelString">
+ Hai ancora [%d] notifiche
+ </string>
+ <string name="BodyPartsRightArm">
+ Braccio destro
+ </string>
+ <string name="BodyPartsHead">
+ Testa
+ </string>
+ <string name="BodyPartsLeftArm">
+ Braccio sinistro
+ </string>
+ <string name="BodyPartsLeftLeg">
+ Gamba sinistra
+ </string>
+ <string name="BodyPartsTorso">
+ Torace
+ </string>
+ <string name="BodyPartsRightLeg">
+ Gamba destra
+ </string>
+ <string name="BodyPartsEnhancedSkeleton">
+ Scheletro avanzato
+ </string>
+ <string name="GraphicsQualityLow">
+ Basso
+ </string>
+ <string name="GraphicsQualityMid">
+ Medio
+ </string>
+ <string name="GraphicsQualityHigh">
+ Alto
+ </string>
+ <string name="LeaveMouselook">
+ Premi ESC per tornare in visualizzazione normale
+ </string>
+ <string name="InventoryNoMatchingItems">
+ Non riesci a trovare quello che cerchi? Prova [secondlife:///app/search/all/[SEARCH_TERM] Cerca].
+ </string>
+ <string name="InventoryNoMatchingRecentItems">
+ Non hai trovato ció che cercavi? Prova [secondlife:///app/inventory/filters Show filters].
+ </string>
+ <string name="PlacesNoMatchingItems">
+ Non riesci a trovare quello che cerchi? Prova [secondlife:///app/search/places/[SEARCH_TERM] Cerca].
+ </string>
+ <string name="FavoritesNoMatchingItems">
+ Trascina qui un punto di riferimento per aggiungerlo ai Preferiti.
+ </string>
+ <string name="MarketplaceNoMatchingItems">
+ Nessun articolo trovato. Controlla di aver digitato la stringa di ricerca correttamente e riprova.
+ </string>
+ <string name="InventoryNoTexture">
+ Non hai una copia di questa texture nel tuo inventario
+ </string>
+ <string name="InventoryInboxNoItems">
+ Gli acquissti dal mercato verranno mostrati qui. Potrai quindi trascinarli nel tuo inventario per usarli.
+ </string>
+ <string name="MarketplaceURL">
+ https://marketplace.[MARKETPLACE_DOMAIN_NAME]/
+ </string>
+ <string name="MarketplaceURL_CreateStore">
+ http://community.secondlife.com/t5/English-Knowledge-Base/Selling-in-the-Marketplace/ta-p/700193#Section_.3
+ </string>
+ <string name="MarketplaceURL_Dashboard">
+ https://marketplace.[MARKETPLACE_DOMAIN_NAME]/merchants/store/dashboard
+ </string>
+ <string name="MarketplaceURL_Imports">
+ https://marketplace.[MARKETPLACE_DOMAIN_NAME]/merchants/store/imports
+ </string>
+ <string name="MarketplaceURL_LearnMore">
+ https://marketplace.[MARKETPLACE_DOMAIN_NAME]/learn_more
+ </string>
+ <string name="InventoryPlayAnimationTooltip">
+ Apri finestra con opzioni di Gioco.
+ </string>
+ <string name="InventoryPlayGestureTooltip">
+ Esegui il movimento selezionato nel mondo virtuale.
+ </string>
+ <string name="InventoryPlaySoundTooltip">
+ Apri finestra con opzioni di Gioco.
+ </string>
+ <string name="InventoryOutboxNotMerchantTitle">
+ Chiunque può vendere oggetti nel Marketplace.
+ </string>
<string name="InventoryOutboxNotMerchantTooltip"/>
- <string name="InventoryOutboxNotMerchant">Per diventare un venditore, devi [[MARKETPLACE_CREATE_STORE_URL] creare un negozio nel Marketplace].</string>
- <string name="InventoryOutboxNoItemsTitle">La tua casella in uscita è vuota.</string>
+ <string name="InventoryOutboxNotMerchant">
+ Per diventare un venditore, devi [[MARKETPLACE_CREATE_STORE_URL] creare un negozio nel Marketplace].
+ </string>
+ <string name="InventoryOutboxNoItemsTitle">
+ La tua casella in uscita è vuota.
+ </string>
<string name="InventoryOutboxNoItemsTooltip"/>
- <string name="InventoryOutboxNoItems">Trascina le cartelle in questa area e clicca su &quot;Invia a Marketplace&quot; per metterle in vendita su [[MARKETPLACE_DASHBOARD_URL] Marketplace].</string>
- <string name="InventoryOutboxInitializingTitle">Inizializzazione Marketplace.in corso</string>
- <string name="InventoryOutboxInitializing">Stiamo eseguendo l'accesso al tuo account sul [[MARKETPLACE_CREATE_STORE_URL] negozio Marketplace].</string>
- <string name="InventoryOutboxErrorTitle">Errori in Marketplace.</string>
- <string name="InventoryOutboxError">Il [[MARKETPLACE_CREATE_STORE_URL] negozio nel Marketplace] ha riportato errori.</string>
- <string name="InventoryMarketplaceError">Errore nell'apertura degli annunci di Marketplace.
-Se continui a ricevere questo messaggio, contatta l'assistenza Second Life su http://support.secondlife.com.</string>
- <string name="InventoryMarketplaceListingsNoItemsTitle">La cartella degli annunci di Marketplace è vuota.</string>
- <string name="InventoryMarketplaceListingsNoItems">Trascina le cartelle in questa area per metterle in vendita su [[MARKETPLACE_DASHBOARD_URL] Marketplace].</string>
- <string name="InventoryItemsCount">( [ITEMS_COUNT] oggetti )</string>
- <string name="Marketplace Validation Warning Stock">la cartella di magazzino deve essere inclusa in una cartella di versione</string>
- <string name="Marketplace Validation Error Mixed Stock">: Errore: tutti gli articoli un una cartella di magazzino devono essere non copiabili e dello stesso tipo</string>
- <string name="Marketplace Validation Error Subfolder In Stock">: Errore: la cartella di magazzino non può contenere sottocartelle</string>
- <string name="Marketplace Validation Warning Empty">: Avviso: la cartella non contiene alcun articolo</string>
- <string name="Marketplace Validation Warning Create Stock">: Avviso: creazione cartella di magazzino in corso</string>
- <string name="Marketplace Validation Warning Create Version">: Avviso: creazione cartella di versione in corso</string>
- <string name="Marketplace Validation Warning Move">: Avviso: spostamento articoli in corso</string>
- <string name="Marketplace Validation Warning Delete">: Avviso: il contenuto della cartella è stato trasferito alla cartella di magazzino e la cartella vuota sta per essere rimossa</string>
- <string name="Marketplace Validation Error Stock Item">: Errore: gli articoli di cui non è permessa la copia devono essere all'interno di una cartella di magazzino</string>
- <string name="Marketplace Validation Warning Unwrapped Item">: Avviso: gli articoli devono essere inclusi in una cartella di versione</string>
- <string name="Marketplace Validation Error">: Errore:</string>
- <string name="Marketplace Validation Warning">: Avviso:</string>
- <string name="Marketplace Validation Error Empty Version">: Avviso: la cartella di versione deve contenere almeno 1 articolo</string>
- <string name="Marketplace Validation Error Empty Stock">: Avviso: la cartella di magazzino deve contenere almeno 1 articolo</string>
- <string name="Marketplace Validation No Error">Nessun errore o avviso da segnalare</string>
- <string name="Marketplace Error None">Nessun errore</string>
- <string name="Marketplace Error Prefix">Errore:</string>
- <string name="Marketplace Error Not Merchant">Prima di inviare gli articoli al Marketplace devi essere impostato come rivenditore (gratis).</string>
- <string name="Marketplace Error Not Accepted">L'articolo non può essere spostato in quella cartella.</string>
- <string name="Marketplace Error Unsellable Item">Questo articolo non può essere venduto nel Marketplace.</string>
- <string name="MarketplaceNoID">no Mkt ID</string>
- <string name="MarketplaceLive">in elenco</string>
- <string name="MarketplaceActive">attivi</string>
- <string name="MarketplaceMax">massimo</string>
- <string name="MarketplaceStock">magazzino</string>
- <string name="MarketplaceNoStock">non in magazzino</string>
- <string name="MarketplaceUpdating">in aggiornamento...</string>
- <string name="UploadFeeInfo">La tariffa è basata sul tuo livello di membership. Più alto è il livello più bassa sarà la tariffa. [https://secondlife.com/my/account/membership.php? Per saperne di più]</string>
- <string name="Open landmarks">Luoghi aperti</string>
- <string name="Unconstrained">Senza limitazioni</string>
+ <string name="InventoryOutboxNoItems">
+ Trascina le cartelle in questa area e clicca su "Invia a Marketplace" per metterle in vendita su [[MARKETPLACE_DASHBOARD_URL] Marketplace].
+ </string>
+ <string name="InventoryOutboxInitializingTitle">
+ Inizializzazione Marketplace.in corso
+ </string>
+ <string name="InventoryOutboxInitializing">
+ Stiamo eseguendo l'accesso al tuo account sul [[MARKETPLACE_CREATE_STORE_URL] negozio Marketplace].
+ </string>
+ <string name="InventoryOutboxErrorTitle">
+ Errori in Marketplace.
+ </string>
+ <string name="InventoryOutboxError">
+ Il [[MARKETPLACE_CREATE_STORE_URL] negozio nel Marketplace] ha riportato errori.
+ </string>
+ <string name="InventoryMarketplaceError">
+ Errore nell'apertura degli annunci di Marketplace.
+Se continui a ricevere questo messaggio, contatta l'assistenza Second Life su http://support.secondlife.com.
+ </string>
+ <string name="InventoryMarketplaceListingsNoItemsTitle">
+ La cartella degli annunci di Marketplace è vuota.
+ </string>
+ <string name="InventoryMarketplaceListingsNoItems">
+ Trascina le cartelle in questa area per metterle in vendita su [[MARKETPLACE_DASHBOARD_URL] Marketplace].
+ </string>
+ <string name="InventoryItemsCount">
+ ( [ITEMS_COUNT] oggetti )
+ </string>
+ <string name="Marketplace Validation Warning Stock">
+ la cartella di magazzino deve essere inclusa in una cartella di versione
+ </string>
+ <string name="Marketplace Validation Error Mixed Stock">
+ : Errore: tutti gli articoli un una cartella di magazzino devono essere non copiabili e dello stesso tipo
+ </string>
+ <string name="Marketplace Validation Error Subfolder In Stock">
+ : Errore: la cartella di magazzino non può contenere sottocartelle
+ </string>
+ <string name="Marketplace Validation Warning Empty">
+ : Avviso: la cartella non contiene alcun articolo
+ </string>
+ <string name="Marketplace Validation Warning Create Stock">
+ : Avviso: creazione cartella di magazzino in corso
+ </string>
+ <string name="Marketplace Validation Warning Create Version">
+ : Avviso: creazione cartella di versione in corso
+ </string>
+ <string name="Marketplace Validation Warning Move">
+ : Avviso: spostamento articoli in corso
+ </string>
+ <string name="Marketplace Validation Warning Delete">
+ : Avviso: il contenuto della cartella è stato trasferito alla cartella di magazzino e la cartella vuota sta per essere rimossa
+ </string>
+ <string name="Marketplace Validation Error Stock Item">
+ : Errore: gli articoli di cui non è permessa la copia devono essere all'interno di una cartella di magazzino
+ </string>
+ <string name="Marketplace Validation Warning Unwrapped Item">
+ : Avviso: gli articoli devono essere inclusi in una cartella di versione
+ </string>
+ <string name="Marketplace Validation Error">
+ : Errore:
+ </string>
+ <string name="Marketplace Validation Warning">
+ : Avviso:
+ </string>
+ <string name="Marketplace Validation Error Empty Version">
+ : Avviso: la cartella di versione deve contenere almeno 1 articolo
+ </string>
+ <string name="Marketplace Validation Error Empty Stock">
+ : Avviso: la cartella di magazzino deve contenere almeno 1 articolo
+ </string>
+ <string name="Marketplace Validation No Error">
+ Nessun errore o avviso da segnalare
+ </string>
+ <string name="Marketplace Error None">
+ Nessun errore
+ </string>
+ <string name="Marketplace Error Prefix">
+ Errore:
+ </string>
+ <string name="Marketplace Error Not Merchant">
+ Prima di inviare gli articoli al Marketplace devi essere impostato come rivenditore (gratis).
+ </string>
+ <string name="Marketplace Error Not Accepted">
+ L'articolo non può essere spostato in quella cartella.
+ </string>
+ <string name="Marketplace Error Unsellable Item">
+ Questo articolo non può essere venduto nel Marketplace.
+ </string>
+ <string name="MarketplaceNoID">
+ no Mkt ID
+ </string>
+ <string name="MarketplaceLive">
+ in elenco
+ </string>
+ <string name="MarketplaceActive">
+ attivi
+ </string>
+ <string name="MarketplaceMax">
+ massimo
+ </string>
+ <string name="MarketplaceStock">
+ magazzino
+ </string>
+ <string name="MarketplaceNoStock">
+ non in magazzino
+ </string>
+ <string name="MarketplaceUpdating">
+ in aggiornamento...
+ </string>
+ <string name="UploadFeeInfo">
+ La tariffa è basata sul tuo livello di membership. Più alto è il livello più bassa sarà la tariffa. [https://secondlife.com/my/account/membership.php? Per saperne di più]
+ </string>
+ <string name="Open landmarks">
+ Luoghi aperti
+ </string>
+ <string name="Unconstrained">
+ Senza limitazioni
+ </string>
<string name="no_transfer" value="(nessun trasferimento)"/>
<string name="no_modify" value="(nessuna modifica)"/>
<string name="no_copy" value="(nessuna copia)"/>
<string name="worn" value="(indossato)"/>
<string name="link" value="(link)"/>
<string name="broken_link" value="(broken_link)&quot;"/>
- <string name="LoadingContents">Caricamento del contenuto...</string>
- <string name="NoContents">Nessun contenuto</string>
+ <string name="LoadingContents">
+ Caricamento del contenuto...
+ </string>
+ <string name="NoContents">
+ Nessun contenuto
+ </string>
<string name="WornOnAttachmentPoint" value="(indossato su [ATTACHMENT_POINT])"/>
<string name="AttachmentErrorMessage" value="([ATTACHMENT_ERROR])"/>
<string name="ActiveGesture" value="[GESLABEL] (attivo)"/>
@@ -631,1420 +1689,4146 @@ Se continui a ricevere questo messaggio, contatta l'assistenza Second Life su ht
<string name="Snapshots" value="Fotografie,"/>
<string name="No Filters" value="No"/>
<string name="Since Logoff" value="- Dall'uscita"/>
- <string name="InvFolder My Inventory">Il mio inventario</string>
- <string name="InvFolder Library">Libreria</string>
- <string name="InvFolder Textures">Texture</string>
- <string name="InvFolder Sounds">Suoni</string>
- <string name="InvFolder Calling Cards">Biglietti da visita</string>
- <string name="InvFolder Landmarks">Punti di riferimento</string>
- <string name="InvFolder Scripts">Script</string>
- <string name="InvFolder Clothing">Vestiario</string>
- <string name="InvFolder Objects">Oggetti</string>
- <string name="InvFolder Notecards">Biglietti</string>
- <string name="InvFolder New Folder">Nuova cartella</string>
- <string name="InvFolder Inventory">Inventario</string>
- <string name="InvFolder Uncompressed Images">Immagini non compresse</string>
- <string name="InvFolder Body Parts">Parti del corpo</string>
- <string name="InvFolder Trash">Cestino</string>
- <string name="InvFolder Photo Album">Album fotografico</string>
- <string name="InvFolder Lost And Found">Oggetti smarriti</string>
- <string name="InvFolder Uncompressed Sounds">Suoni non compressi</string>
- <string name="InvFolder Animations">Animazioni</string>
- <string name="InvFolder Gestures">Gesture</string>
- <string name="InvFolder Favorite">I miei preferiti</string>
- <string name="InvFolder favorite">I miei preferiti</string>
- <string name="InvFolder Favorites">I miei preferiti</string>
- <string name="InvFolder favorites">I miei preferiti</string>
- <string name="InvFolder Current Outfit">Abbigliamento attuale</string>
- <string name="InvFolder Initial Outfits">Vestiario iniziale</string>
- <string name="InvFolder My Outfits">Il mio vestiario</string>
- <string name="InvFolder Accessories">Accessori</string>
- <string name="InvFolder Meshes">Reticoli</string>
- <string name="InvFolder Received Items">Oggetti ricevuti</string>
- <string name="InvFolder Merchant Outbox">Casella venditore in uscita</string>
- <string name="InvFolder Friends">Amici</string>
- <string name="InvFolder All">Tutto</string>
- <string name="no_attachments">Nessun allegato indossato</string>
- <string name="Attachments remain">Allegati ([COUNT] spazi restanti)</string>
- <string name="Buy">Acquista</string>
- <string name="BuyforL$">Acquista per L$</string>
- <string name="Stone">Pietra</string>
- <string name="Metal">Metallo</string>
- <string name="Glass">Vetro</string>
- <string name="Wood">Legno</string>
- <string name="Flesh">Carne</string>
- <string name="Plastic">Plastica</string>
- <string name="Rubber">Gomma</string>
- <string name="Light">Luce</string>
- <string name="KBShift">Maiusc</string>
- <string name="KBCtrl">Ctrl</string>
- <string name="Chest">Petto</string>
- <string name="Skull">Cranio</string>
- <string name="Left Shoulder">Spalla sinistra</string>
- <string name="Right Shoulder">Spalla destra</string>
- <string name="Left Hand">Mano sinistra</string>
- <string name="Right Hand">Mano destra</string>
- <string name="Left Foot">Piede sinisto</string>
- <string name="Right Foot">Piede destro</string>
- <string name="Spine">Spina dorsale</string>
- <string name="Pelvis">Pelvi</string>
- <string name="Mouth">Bocca</string>
- <string name="Chin">Mento</string>
- <string name="Left Ear">Orecchio sinistro</string>
- <string name="Right Ear">Orecchio destro</string>
- <string name="Left Eyeball">Bulbo sinistro</string>
- <string name="Right Eyeball">Bulbo destro</string>
- <string name="Nose">Naso</string>
- <string name="R Upper Arm">Avambraccio destro</string>
- <string name="R Forearm">Braccio destro</string>
- <string name="L Upper Arm">Avambraccio sinistro</string>
- <string name="L Forearm">Braccio sinistro</string>
- <string name="Right Hip">Anca destra</string>
- <string name="R Upper Leg">Coscia destra</string>
- <string name="R Lower Leg">Gamba destra</string>
- <string name="Left Hip">Anca sinista</string>
- <string name="L Upper Leg">Coscia sinistra</string>
- <string name="L Lower Leg">Gamba sinistra</string>
- <string name="Stomach">Stomaco</string>
- <string name="Left Pec">Petto sinistro</string>
- <string name="Right Pec">Petto destro</string>
- <string name="Neck">Collo</string>
- <string name="Avatar Center">Centro avatar</string>
- <string name="Left Ring Finger">Anulare sinistro</string>
- <string name="Right Ring Finger">Anulare destro</string>
- <string name="Tail Base">Base della coda</string>
- <string name="Tail Tip">Punta della coda</string>
- <string name="Left Wing">Ala sinistra</string>
- <string name="Right Wing">Ala destra</string>
- <string name="Jaw">Mandibola</string>
- <string name="Alt Left Ear">Altro orecchio sinistro</string>
- <string name="Alt Right Ear">Altro orecchio destro</string>
- <string name="Alt Left Eye">Altro occhio sinistro</string>
- <string name="Alt Right Eye">Altro occhio destro</string>
- <string name="Tongue">Lingua</string>
- <string name="Groin">Inguine</string>
- <string name="Left Hind Foot">Piede posteriore sinistro</string>
- <string name="Right Hind Foot">Piede posteriore destro</string>
- <string name="Invalid Attachment">Punto di collegamento non valido</string>
- <string name="ATTACHMENT_MISSING_ITEM">Errore: articolo mancante</string>
- <string name="ATTACHMENT_MISSING_BASE_ITEM">Errore: articolo di base mancante</string>
- <string name="ATTACHMENT_NOT_ATTACHED">Errore: l'oggetto è nel vestiario corrente ma non è collegato</string>
- <string name="YearsMonthsOld">Nato da [AGEYEARS] [AGEMONTHS]</string>
- <string name="YearsOld">Nato da [AGEYEARS]</string>
- <string name="MonthsOld">Nato da [AGEMONTHS]</string>
- <string name="WeeksOld">Nato da [AGEWEEKS]</string>
- <string name="DaysOld">Nato da [AGEDAYS]</string>
- <string name="TodayOld">Iscritto oggi</string>
- <string name="av_render_everyone_now">Ora ti possono vedere tutti.</string>
- <string name="av_render_not_everyone">Alcune persone vicine a te potrebbero non eseguire il tuo rendering.</string>
- <string name="av_render_over_half">La maggioranza delle persone vicine a te potrebbe non eseguire il tuo rendering.</string>
- <string name="av_render_most_of">La gran parte delle persone vicine a te potrebbe non eseguire il tuo rendering.</string>
- <string name="av_render_anyone">Tutte le persone vicine a te potrebbero non eseguire il tuo rendering.</string>
- <string name="hud_description_total">Il tuo HUD</string>
- <string name="hud_name_with_joint">[OBJ_NAME] (indossato su [JNT_NAME])</string>
- <string name="hud_render_memory_warning">[HUD_DETAILS] fa uso di molta memoria texture</string>
- <string name="hud_render_cost_warning">[HUD_DETAILS] contiene molti oggetti e texture che occupano una grande quantità di risorse</string>
- <string name="hud_render_heavy_textures_warning">[HUD_DETAILS] contiene molte texture di grandi dimensioni</string>
- <string name="hud_render_cramped_warning">[HUD_DETAILS] contiene troppi oggetti</string>
- <string name="hud_render_textures_warning">[HUD_DETAILS] contiene troppe texture</string>
- <string name="AgeYearsA">[COUNT] anno</string>
- <string name="AgeYearsB">[COUNT] anni</string>
- <string name="AgeYearsC">[COUNT] anni</string>
- <string name="AgeMonthsA">[COUNT] mese</string>
- <string name="AgeMonthsB">[COUNT] mesi</string>
- <string name="AgeMonthsC">[COUNT] mesi</string>
- <string name="AgeWeeksA">[COUNT] settimana</string>
- <string name="AgeWeeksB">[COUNT] settimane</string>
- <string name="AgeWeeksC">[COUNT] settimane</string>
- <string name="AgeDaysA">[COUNT] giorno</string>
- <string name="AgeDaysB">[COUNT] giorni</string>
- <string name="AgeDaysC">[COUNT] giorni</string>
- <string name="GroupMembersA">[COUNT] iscritto</string>
- <string name="GroupMembersB">[COUNT] iscritti</string>
- <string name="GroupMembersC">[COUNT] iscritti</string>
- <string name="AcctTypeResident">Residente</string>
- <string name="AcctTypeTrial">In prova</string>
- <string name="AcctTypeCharterMember">Socio onorario</string>
- <string name="AcctTypeEmployee">Dipendente Linden Lab</string>
- <string name="PaymentInfoUsed">Informazioni di pagamento usate</string>
- <string name="PaymentInfoOnFile">Informazioni di pagamento registrate</string>
- <string name="NoPaymentInfoOnFile">Nessuna informazione di pagamento disponibile</string>
- <string name="AgeVerified">Età verificata</string>
- <string name="NotAgeVerified">Età non verificata</string>
- <string name="Center 2">Centro 2</string>
- <string name="Top Right">In alto a destra</string>
- <string name="Top">in alto</string>
- <string name="Top Left">In alto a sinistra</string>
- <string name="Center">Al centro</string>
- <string name="Bottom Left">In basso a sinistra</string>
- <string name="Bottom">In basso</string>
- <string name="Bottom Right">In basso a destra</string>
- <string name="CompileQueueDownloadedCompiling">Scaricato, in compilazione</string>
- <string name="CompileQueueServiceUnavailable">Il servizio di compilazione degli script non è disponibile</string>
- <string name="CompileQueueScriptNotFound">Script non trovato sul server.</string>
- <string name="CompileQueueProblemDownloading">Problema nel download</string>
- <string name="CompileQueueInsufficientPermDownload">Permessi insufficenti per scaricare lo script.</string>
- <string name="CompileQueueInsufficientPermFor">Permessi insufficenti per</string>
- <string name="CompileQueueUnknownFailure">Errore di dowload sconosciuto</string>
- <string name="CompileNoExperiencePerm">Saltato lo script [SCRIPT] con l'esperienza [EXPERIENCE].</string>
- <string name="CompileQueueTitle">Avanzamento ricompilazione</string>
- <string name="CompileQueueStart">ricompila</string>
- <string name="ResetQueueTitle">Azzera avanzamento</string>
- <string name="ResetQueueStart">azzera</string>
- <string name="RunQueueTitle">Attiva avanzamento</string>
- <string name="RunQueueStart">attiva</string>
- <string name="NotRunQueueTitle">Disattiva avanzamento</string>
- <string name="NotRunQueueStart">disattiva</string>
- <string name="CompileSuccessful">Compilazione riuscita!</string>
- <string name="CompileSuccessfulSaving">Compilazione riuscita, in salvataggio...</string>
- <string name="SaveComplete">Salvataggio completato.</string>
- <string name="UploadFailed">Caricamento file non riuscito:</string>
- <string name="ObjectOutOfRange">Script (oggetto fuori portata)</string>
- <string name="ScriptWasDeleted">Script (eliminato da inventario)</string>
- <string name="GodToolsObjectOwnedBy">Oggetto [OBJECT] di proprietà di [OWNER]</string>
- <string name="GroupsNone">nessuno</string>
+ <string name="InvFolder My Inventory">
+ Il mio inventario
+ </string>
+ <string name="InvFolder Library">
+ Libreria
+ </string>
+ <string name="InvFolder Textures">
+ Texture
+ </string>
+ <string name="InvFolder Sounds">
+ Suoni
+ </string>
+ <string name="InvFolder Calling Cards">
+ Biglietti da visita
+ </string>
+ <string name="InvFolder Landmarks">
+ Punti di riferimento
+ </string>
+ <string name="InvFolder Scripts">
+ Script
+ </string>
+ <string name="InvFolder Clothing">
+ Vestiario
+ </string>
+ <string name="InvFolder Objects">
+ Oggetti
+ </string>
+ <string name="InvFolder Notecards">
+ Biglietti
+ </string>
+ <string name="InvFolder New Folder">
+ Nuova cartella
+ </string>
+ <string name="InvFolder Inventory">
+ Inventario
+ </string>
+ <string name="InvFolder Uncompressed Images">
+ Immagini non compresse
+ </string>
+ <string name="InvFolder Body Parts">
+ Parti del corpo
+ </string>
+ <string name="InvFolder Trash">
+ Cestino
+ </string>
+ <string name="InvFolder Photo Album">
+ Album fotografico
+ </string>
+ <string name="InvFolder Lost And Found">
+ Oggetti smarriti
+ </string>
+ <string name="InvFolder Uncompressed Sounds">
+ Suoni non compressi
+ </string>
+ <string name="InvFolder Animations">
+ Animazioni
+ </string>
+ <string name="InvFolder Gestures">
+ Gesture
+ </string>
+ <string name="InvFolder Favorite">
+ I miei preferiti
+ </string>
+ <string name="InvFolder favorite">
+ I miei preferiti
+ </string>
+ <string name="InvFolder Favorites">
+ I miei preferiti
+ </string>
+ <string name="InvFolder favorites">
+ I miei preferiti
+ </string>
+ <string name="InvFolder Current Outfit">
+ Abbigliamento attuale
+ </string>
+ <string name="InvFolder Initial Outfits">
+ Vestiario iniziale
+ </string>
+ <string name="InvFolder My Outfits">
+ Il mio vestiario
+ </string>
+ <string name="InvFolder Accessories">
+ Accessori
+ </string>
+ <string name="InvFolder Meshes">
+ Reticoli
+ </string>
+ <string name="InvFolder Received Items">
+ Oggetti ricevuti
+ </string>
+ <string name="InvFolder Merchant Outbox">
+ Casella venditore in uscita
+ </string>
+ <string name="InvFolder Friends">
+ Amici
+ </string>
+ <string name="InvFolder All">
+ Tutto
+ </string>
+ <string name="no_attachments">
+ Nessun allegato indossato
+ </string>
+ <string name="Attachments remain">
+ Allegati ([COUNT] spazi restanti)
+ </string>
+ <string name="Buy">
+ Acquista
+ </string>
+ <string name="BuyforL$">
+ Acquista per L$
+ </string>
+ <string name="Stone">
+ Pietra
+ </string>
+ <string name="Metal">
+ Metallo
+ </string>
+ <string name="Glass">
+ Vetro
+ </string>
+ <string name="Wood">
+ Legno
+ </string>
+ <string name="Flesh">
+ Carne
+ </string>
+ <string name="Plastic">
+ Plastica
+ </string>
+ <string name="Rubber">
+ Gomma
+ </string>
+ <string name="Light">
+ Luce
+ </string>
+ <string name="KBShift">
+ Maiusc
+ </string>
+ <string name="KBCtrl">
+ Ctrl
+ </string>
+ <string name="Chest">
+ Petto
+ </string>
+ <string name="Skull">
+ Cranio
+ </string>
+ <string name="Left Shoulder">
+ Spalla sinistra
+ </string>
+ <string name="Right Shoulder">
+ Spalla destra
+ </string>
+ <string name="Left Hand">
+ Mano sinistra
+ </string>
+ <string name="Right Hand">
+ Mano destra
+ </string>
+ <string name="Left Foot">
+ Piede sinisto
+ </string>
+ <string name="Right Foot">
+ Piede destro
+ </string>
+ <string name="Spine">
+ Spina dorsale
+ </string>
+ <string name="Pelvis">
+ Pelvi
+ </string>
+ <string name="Mouth">
+ Bocca
+ </string>
+ <string name="Chin">
+ Mento
+ </string>
+ <string name="Left Ear">
+ Orecchio sinistro
+ </string>
+ <string name="Right Ear">
+ Orecchio destro
+ </string>
+ <string name="Left Eyeball">
+ Bulbo sinistro
+ </string>
+ <string name="Right Eyeball">
+ Bulbo destro
+ </string>
+ <string name="Nose">
+ Naso
+ </string>
+ <string name="R Upper Arm">
+ Avambraccio destro
+ </string>
+ <string name="R Forearm">
+ Braccio destro
+ </string>
+ <string name="L Upper Arm">
+ Avambraccio sinistro
+ </string>
+ <string name="L Forearm">
+ Braccio sinistro
+ </string>
+ <string name="Right Hip">
+ Anca destra
+ </string>
+ <string name="R Upper Leg">
+ Coscia destra
+ </string>
+ <string name="R Lower Leg">
+ Gamba destra
+ </string>
+ <string name="Left Hip">
+ Anca sinista
+ </string>
+ <string name="L Upper Leg">
+ Coscia sinistra
+ </string>
+ <string name="L Lower Leg">
+ Gamba sinistra
+ </string>
+ <string name="Stomach">
+ Stomaco
+ </string>
+ <string name="Left Pec">
+ Petto sinistro
+ </string>
+ <string name="Right Pec">
+ Petto destro
+ </string>
+ <string name="Neck">
+ Collo
+ </string>
+ <string name="Avatar Center">
+ Centro avatar
+ </string>
+ <string name="Left Ring Finger">
+ Anulare sinistro
+ </string>
+ <string name="Right Ring Finger">
+ Anulare destro
+ </string>
+ <string name="Tail Base">
+ Base della coda
+ </string>
+ <string name="Tail Tip">
+ Punta della coda
+ </string>
+ <string name="Left Wing">
+ Ala sinistra
+ </string>
+ <string name="Right Wing">
+ Ala destra
+ </string>
+ <string name="Jaw">
+ Mandibola
+ </string>
+ <string name="Alt Left Ear">
+ Altro orecchio sinistro
+ </string>
+ <string name="Alt Right Ear">
+ Altro orecchio destro
+ </string>
+ <string name="Alt Left Eye">
+ Altro occhio sinistro
+ </string>
+ <string name="Alt Right Eye">
+ Altro occhio destro
+ </string>
+ <string name="Tongue">
+ Lingua
+ </string>
+ <string name="Groin">
+ Inguine
+ </string>
+ <string name="Left Hind Foot">
+ Piede posteriore sinistro
+ </string>
+ <string name="Right Hind Foot">
+ Piede posteriore destro
+ </string>
+ <string name="Invalid Attachment">
+ Punto di collegamento non valido
+ </string>
+ <string name="ATTACHMENT_MISSING_ITEM">
+ Errore: articolo mancante
+ </string>
+ <string name="ATTACHMENT_MISSING_BASE_ITEM">
+ Errore: articolo di base mancante
+ </string>
+ <string name="ATTACHMENT_NOT_ATTACHED">
+ Errore: l'oggetto è nel vestiario corrente ma non è collegato
+ </string>
+ <string name="YearsMonthsOld">
+ Nato da [AGEYEARS] [AGEMONTHS]
+ </string>
+ <string name="YearsOld">
+ Nato da [AGEYEARS]
+ </string>
+ <string name="MonthsOld">
+ Nato da [AGEMONTHS]
+ </string>
+ <string name="WeeksOld">
+ Nato da [AGEWEEKS]
+ </string>
+ <string name="DaysOld">
+ Nato da [AGEDAYS]
+ </string>
+ <string name="TodayOld">
+ Iscritto oggi
+ </string>
+ <string name="av_render_everyone_now">
+ Ora ti possono vedere tutti.
+ </string>
+ <string name="av_render_not_everyone">
+ Alcune persone vicine a te potrebbero non eseguire il tuo rendering.
+ </string>
+ <string name="av_render_over_half">
+ La maggioranza delle persone vicine a te potrebbe non eseguire il tuo rendering.
+ </string>
+ <string name="av_render_most_of">
+ La gran parte delle persone vicine a te potrebbe non eseguire il tuo rendering.
+ </string>
+ <string name="av_render_anyone">
+ Tutte le persone vicine a te potrebbero non eseguire il tuo rendering.
+ </string>
+ <string name="hud_description_total">
+ Il tuo HUD
+ </string>
+ <string name="hud_name_with_joint">
+ [OBJ_NAME] (indossato su [JNT_NAME])
+ </string>
+ <string name="hud_render_memory_warning">
+ [HUD_DETAILS] fa uso di molta memoria texture
+ </string>
+ <string name="hud_render_cost_warning">
+ [HUD_DETAILS] contiene molti oggetti e texture che occupano una grande quantità di risorse
+ </string>
+ <string name="hud_render_heavy_textures_warning">
+ [HUD_DETAILS] contiene molte texture di grandi dimensioni
+ </string>
+ <string name="hud_render_cramped_warning">
+ [HUD_DETAILS] contiene troppi oggetti
+ </string>
+ <string name="hud_render_textures_warning">
+ [HUD_DETAILS] contiene troppe texture
+ </string>
+ <string name="AgeYearsA">
+ [COUNT] anno
+ </string>
+ <string name="AgeYearsB">
+ [COUNT] anni
+ </string>
+ <string name="AgeYearsC">
+ [COUNT] anni
+ </string>
+ <string name="AgeMonthsA">
+ [COUNT] mese
+ </string>
+ <string name="AgeMonthsB">
+ [COUNT] mesi
+ </string>
+ <string name="AgeMonthsC">
+ [COUNT] mesi
+ </string>
+ <string name="AgeWeeksA">
+ [COUNT] settimana
+ </string>
+ <string name="AgeWeeksB">
+ [COUNT] settimane
+ </string>
+ <string name="AgeWeeksC">
+ [COUNT] settimane
+ </string>
+ <string name="AgeDaysA">
+ [COUNT] giorno
+ </string>
+ <string name="AgeDaysB">
+ [COUNT] giorni
+ </string>
+ <string name="AgeDaysC">
+ [COUNT] giorni
+ </string>
+ <string name="GroupMembersA">
+ [COUNT] iscritto
+ </string>
+ <string name="GroupMembersB">
+ [COUNT] iscritti
+ </string>
+ <string name="GroupMembersC">
+ [COUNT] iscritti
+ </string>
+ <string name="AcctTypeResident">
+ Residente
+ </string>
+ <string name="AcctTypeTrial">
+ In prova
+ </string>
+ <string name="AcctTypeCharterMember">
+ Socio onorario
+ </string>
+ <string name="AcctTypeEmployee">
+ Dipendente Linden Lab
+ </string>
+ <string name="PaymentInfoUsed">
+ Informazioni di pagamento usate
+ </string>
+ <string name="PaymentInfoOnFile">
+ Informazioni di pagamento registrate
+ </string>
+ <string name="NoPaymentInfoOnFile">
+ Nessuna informazione di pagamento disponibile
+ </string>
+ <string name="AgeVerified">
+ Età verificata
+ </string>
+ <string name="NotAgeVerified">
+ Età non verificata
+ </string>
+ <string name="Center 2">
+ Centro 2
+ </string>
+ <string name="Top Right">
+ In alto a destra
+ </string>
+ <string name="Top">
+ in alto
+ </string>
+ <string name="Top Left">
+ In alto a sinistra
+ </string>
+ <string name="Center">
+ Al centro
+ </string>
+ <string name="Bottom Left">
+ In basso a sinistra
+ </string>
+ <string name="Bottom">
+ In basso
+ </string>
+ <string name="Bottom Right">
+ In basso a destra
+ </string>
+ <string name="CompileQueueDownloadedCompiling">
+ Scaricato, in compilazione
+ </string>
+ <string name="CompileQueueServiceUnavailable">
+ Il servizio di compilazione degli script non è disponibile
+ </string>
+ <string name="CompileQueueScriptNotFound">
+ Script non trovato sul server.
+ </string>
+ <string name="CompileQueueProblemDownloading">
+ Problema nel download
+ </string>
+ <string name="CompileQueueInsufficientPermDownload">
+ Permessi insufficenti per scaricare lo script.
+ </string>
+ <string name="CompileQueueInsufficientPermFor">
+ Permessi insufficenti per
+ </string>
+ <string name="CompileQueueUnknownFailure">
+ Errore di dowload sconosciuto
+ </string>
+ <string name="CompileNoExperiencePerm">
+ Saltato lo script [SCRIPT] con l'esperienza [EXPERIENCE].
+ </string>
+ <string name="CompileQueueTitle">
+ Avanzamento ricompilazione
+ </string>
+ <string name="CompileQueueStart">
+ ricompila
+ </string>
+ <string name="ResetQueueTitle">
+ Azzera avanzamento
+ </string>
+ <string name="ResetQueueStart">
+ azzera
+ </string>
+ <string name="RunQueueTitle">
+ Attiva avanzamento
+ </string>
+ <string name="RunQueueStart">
+ attiva
+ </string>
+ <string name="NotRunQueueTitle">
+ Disattiva avanzamento
+ </string>
+ <string name="NotRunQueueStart">
+ disattiva
+ </string>
+ <string name="CompileSuccessful">
+ Compilazione riuscita!
+ </string>
+ <string name="CompileSuccessfulSaving">
+ Compilazione riuscita, in salvataggio...
+ </string>
+ <string name="SaveComplete">
+ Salvataggio completato.
+ </string>
+ <string name="UploadFailed">
+ Caricamento file non riuscito:
+ </string>
+ <string name="ObjectOutOfRange">
+ Script (oggetto fuori portata)
+ </string>
+ <string name="ScriptWasDeleted">
+ Script (eliminato da inventario)
+ </string>
+ <string name="GodToolsObjectOwnedBy">
+ Oggetto [OBJECT] di proprietà di [OWNER]
+ </string>
+ <string name="GroupsNone">
+ nessuno
+ </string>
<string name="Group" value="(gruppo)"/>
- <string name="Unknown">(Sconosciuto)</string>
+ <string name="Unknown">
+ (Sconosciuto)
+ </string>
<string name="SummaryForTheWeek" value="Riassunto della settimana, partendo dal "/>
<string name="NextStipendDay" value=". Il prossimo giorno di stipendio è "/>
- <string name="GroupPlanningDate">[mthnum,datetime,utc]/[day,datetime,utc]/[year,datetime,utc]</string>
+ <string name="GroupPlanningDate">
+ [mthnum,datetime,utc]/[day,datetime,utc]/[year,datetime,utc]
+ </string>
<string name="GroupIndividualShare" value="Gruppo Dividendi individuali"/>
<string name="GroupColumn" value="Gruppo"/>
- <string name="Balance">Saldo</string>
- <string name="Credits">Ringraziamenti</string>
- <string name="Debits">Debiti</string>
- <string name="Total">Totale</string>
- <string name="NoGroupDataFound">Nessun dato trovato per questo gruppo</string>
- <string name="IMParentEstate">Proprietà principale</string>
- <string name="IMMainland">continente</string>
- <string name="IMTeen">teen</string>
- <string name="Anyone">chiunque</string>
- <string name="RegionInfoError">errore</string>
- <string name="RegionInfoAllEstatesOwnedBy">tutte le proprietà immobiliari di [OWNER]</string>
- <string name="RegionInfoAllEstatesYouOwn">tutte le tue proprietà immobiliari</string>
- <string name="RegionInfoAllEstatesYouManage">tutte le proprietà immobiliari che gestisci per conto di [OWNER]</string>
- <string name="RegionInfoAllowedResidents">Sempre consentiti: ([ALLOWEDAGENTS], max [MAXACCESS])</string>
- <string name="RegionInfoAllowedGroups">Gruppi sempre consentiti: ([ALLOWEDGROUPS], max [MAXACCESS])</string>
- <string name="RegionInfoBannedResidents">Sempre esclusi: ([BANNEDAGENTS], max [MAXBANNED])</string>
- <string name="RegionInfoListTypeAllowedAgents">Sempre consentiti:</string>
- <string name="RegionInfoListTypeBannedAgents">Sempre esclusi:</string>
- <string name="RegionInfoAllEstates">tutte le proprietà immobiliari</string>
- <string name="RegionInfoManagedEstates">proprietà immobiliari che gestisci</string>
- <string name="RegionInfoThisEstate">questa proprietà immobiliare</string>
- <string name="AndNMore">e [EXTRA_COUNT] ancora</string>
- <string name="ScriptLimitsParcelScriptMemory">Memoria dello script del lotto</string>
- <string name="ScriptLimitsParcelsOwned">Lotti in elenco: [PARCELS]</string>
- <string name="ScriptLimitsMemoryUsed">Memoria utilizzata: [COUNT] kb di [MAX] kb; [AVAILABLE] kb disponibili</string>
- <string name="ScriptLimitsMemoryUsedSimple">Memoria utilizzata: [COUNT] kb</string>
- <string name="ScriptLimitsParcelScriptURLs">URL degli script lotti</string>
- <string name="ScriptLimitsURLsUsed">URL utilizzati: [COUNT] di [MAX]; [AVAILABLE] disponibili</string>
- <string name="ScriptLimitsURLsUsedSimple">URL utilizzati: [COUNT]</string>
- <string name="ScriptLimitsRequestError">Errore nella richiesta di informazioni</string>
- <string name="ScriptLimitsRequestNoParcelSelected">Nessun lotto selezionato</string>
- <string name="ScriptLimitsRequestWrongRegion">Errore: le informazioni sullo script sono disponibili solo nella tua regione attuale</string>
- <string name="ScriptLimitsRequestWaiting">Recupero informazioni in corso...</string>
- <string name="ScriptLimitsRequestDontOwnParcel">Non hai il permesso di visionare questo lotto</string>
- <string name="SITTING_ON">Seduto su</string>
- <string name="ATTACH_CHEST">Petto</string>
- <string name="ATTACH_HEAD">Cranio</string>
- <string name="ATTACH_LSHOULDER">Spalla sinistra</string>
- <string name="ATTACH_RSHOULDER">Spalla destra</string>
- <string name="ATTACH_LHAND">Mano sinistra</string>
- <string name="ATTACH_RHAND">Mano destra</string>
- <string name="ATTACH_LFOOT">Piede sinisto</string>
- <string name="ATTACH_RFOOT">Piede destro</string>
- <string name="ATTACH_BACK">Spina dorsale</string>
- <string name="ATTACH_PELVIS">Pelvi</string>
- <string name="ATTACH_MOUTH">Bocca</string>
- <string name="ATTACH_CHIN">Mento</string>
- <string name="ATTACH_LEAR">Orecchio sinistro</string>
- <string name="ATTACH_REAR">Orecchio destro</string>
- <string name="ATTACH_LEYE">Occhio sinistro</string>
- <string name="ATTACH_REYE">Occhio destro</string>
- <string name="ATTACH_NOSE">Naso</string>
- <string name="ATTACH_RUARM">Braccio destro</string>
- <string name="ATTACH_RLARM">Avambraccio destro</string>
- <string name="ATTACH_LUARM">Braccio sinistro</string>
- <string name="ATTACH_LLARM">Avambraccio sinistro</string>
- <string name="ATTACH_RHIP">Anca destra</string>
- <string name="ATTACH_RULEG">Coscia destra</string>
- <string name="ATTACH_RLLEG">Coscia destra</string>
- <string name="ATTACH_LHIP">Anca sinista</string>
- <string name="ATTACH_LULEG">Coscia sinistra</string>
- <string name="ATTACH_LLLEG">Polpaccio sinistro</string>
- <string name="ATTACH_BELLY">Stomaco</string>
- <string name="ATTACH_LEFT_PEC">Petto sinistro</string>
- <string name="ATTACH_RIGHT_PEC">Petto destro</string>
- <string name="ATTACH_HUD_CENTER_2">HUD in centro 2</string>
- <string name="ATTACH_HUD_TOP_RIGHT">HUD alto a destra</string>
- <string name="ATTACH_HUD_TOP_CENTER">HUD alto in centro</string>
- <string name="ATTACH_HUD_TOP_LEFT">HUD alto a sinistra</string>
- <string name="ATTACH_HUD_CENTER_1">HUD in centro 1</string>
- <string name="ATTACH_HUD_BOTTOM_LEFT">HUD basso a sinistra</string>
- <string name="ATTACH_HUD_BOTTOM">HUD basso</string>
- <string name="ATTACH_HUD_BOTTOM_RIGHT">HUD basso a destra</string>
- <string name="ATTACH_NECK">Collo</string>
- <string name="ATTACH_AVATAR_CENTER">Centro avatar</string>
- <string name="ATTACH_LHAND_RING1">Anulare sinistro</string>
- <string name="ATTACH_RHAND_RING1">Anulare destro</string>
- <string name="ATTACH_TAIL_BASE">Base della coda</string>
- <string name="ATTACH_TAIL_TIP">Punta della coda</string>
- <string name="ATTACH_LWING">Ala sinistra</string>
- <string name="ATTACH_RWING">Ala destra</string>
- <string name="ATTACH_FACE_JAW">Mandibola</string>
- <string name="ATTACH_FACE_LEAR">Altro orecchio sinistro</string>
- <string name="ATTACH_FACE_REAR">Altro orecchio destro</string>
- <string name="ATTACH_FACE_LEYE">Altro occhio sinistro</string>
- <string name="ATTACH_FACE_REYE">Altro occhio destro</string>
- <string name="ATTACH_FACE_TONGUE">Lingua</string>
- <string name="ATTACH_GROIN">Inguine</string>
- <string name="ATTACH_HIND_LFOOT">Piede posteriore sinistro</string>
- <string name="ATTACH_HIND_RFOOT">Piede posteriore destro</string>
- <string name="CursorPos">Riga [LINE], Colonna [COLUMN]</string>
- <string name="PanelDirCountFound">[COUNT] trovato/i</string>
- <string name="PanelContentsTooltip">Contenuto dell'oggetto</string>
- <string name="PanelContentsNewScript">Nuovo script</string>
- <string name="DoNotDisturbModeResponseDefault">Questo residente ha attivato la modalità 'Non disturbare' e vedrà il tuo messaggio più tardi.</string>
- <string name="MuteByName">(In base al nome)</string>
- <string name="MuteAgent">(Residente)</string>
- <string name="MuteObject">(Oggetto)</string>
- <string name="MuteGroup">(Gruppo)</string>
- <string name="MuteExternal">(esterno)</string>
- <string name="RegionNoCovenant">Non esiste alcun regolamento per questa proprietà.</string>
- <string name="RegionNoCovenantOtherOwner">Non esiste alcun regolamento per questa proprietà. Il terreno di questa proprietà è messo in vendita dal proprietario, non dalla Linden Lab. Contatta il proprietario del terreno per i dettagli della vendita.</string>
+ <string name="Balance">
+ Saldo
+ </string>
+ <string name="Credits">
+ Ringraziamenti
+ </string>
+ <string name="Debits">
+ Debiti
+ </string>
+ <string name="Total">
+ Totale
+ </string>
+ <string name="NoGroupDataFound">
+ Nessun dato trovato per questo gruppo
+ </string>
+ <string name="IMParentEstate">
+ Proprietà principale
+ </string>
+ <string name="IMMainland">
+ continente
+ </string>
+ <string name="IMTeen">
+ teen
+ </string>
+ <string name="Anyone">
+ chiunque
+ </string>
+ <string name="RegionInfoError">
+ errore
+ </string>
+ <string name="RegionInfoAllEstatesOwnedBy">
+ tutte le proprietà immobiliari di [OWNER]
+ </string>
+ <string name="RegionInfoAllEstatesYouOwn">
+ tutte le tue proprietà immobiliari
+ </string>
+ <string name="RegionInfoAllEstatesYouManage">
+ tutte le proprietà immobiliari che gestisci per conto di [OWNER]
+ </string>
+ <string name="RegionInfoAllowedResidents">
+ Sempre consentiti: ([ALLOWEDAGENTS], max [MAXACCESS])
+ </string>
+ <string name="RegionInfoAllowedGroups">
+ Gruppi sempre consentiti: ([ALLOWEDGROUPS], max [MAXACCESS])
+ </string>
+ <string name="RegionInfoBannedResidents">
+ Sempre esclusi: ([BANNEDAGENTS], max [MAXBANNED])
+ </string>
+ <string name="RegionInfoListTypeAllowedAgents">
+ Sempre consentiti:
+ </string>
+ <string name="RegionInfoListTypeBannedAgents">
+ Sempre esclusi:
+ </string>
+ <string name="RegionInfoAllEstates">
+ tutte le proprietà immobiliari
+ </string>
+ <string name="RegionInfoManagedEstates">
+ proprietà immobiliari che gestisci
+ </string>
+ <string name="RegionInfoThisEstate">
+ questa proprietà immobiliare
+ </string>
+ <string name="AndNMore">
+ e [EXTRA_COUNT] ancora
+ </string>
+ <string name="ScriptLimitsParcelScriptMemory">
+ Memoria dello script del lotto
+ </string>
+ <string name="ScriptLimitsParcelsOwned">
+ Lotti in elenco: [PARCELS]
+ </string>
+ <string name="ScriptLimitsMemoryUsed">
+ Memoria utilizzata: [COUNT] kb di [MAX] kb; [AVAILABLE] kb disponibili
+ </string>
+ <string name="ScriptLimitsMemoryUsedSimple">
+ Memoria utilizzata: [COUNT] kb
+ </string>
+ <string name="ScriptLimitsParcelScriptURLs">
+ URL degli script lotti
+ </string>
+ <string name="ScriptLimitsURLsUsed">
+ URL utilizzati: [COUNT] di [MAX]; [AVAILABLE] disponibili
+ </string>
+ <string name="ScriptLimitsURLsUsedSimple">
+ URL utilizzati: [COUNT]
+ </string>
+ <string name="ScriptLimitsRequestError">
+ Errore nella richiesta di informazioni
+ </string>
+ <string name="ScriptLimitsRequestNoParcelSelected">
+ Nessun lotto selezionato
+ </string>
+ <string name="ScriptLimitsRequestWrongRegion">
+ Errore: le informazioni sullo script sono disponibili solo nella tua regione attuale
+ </string>
+ <string name="ScriptLimitsRequestWaiting">
+ Recupero informazioni in corso...
+ </string>
+ <string name="ScriptLimitsRequestDontOwnParcel">
+ Non hai il permesso di visionare questo lotto
+ </string>
+ <string name="SITTING_ON">
+ Seduto su
+ </string>
+ <string name="ATTACH_CHEST">
+ Petto
+ </string>
+ <string name="ATTACH_HEAD">
+ Cranio
+ </string>
+ <string name="ATTACH_LSHOULDER">
+ Spalla sinistra
+ </string>
+ <string name="ATTACH_RSHOULDER">
+ Spalla destra
+ </string>
+ <string name="ATTACH_LHAND">
+ Mano sinistra
+ </string>
+ <string name="ATTACH_RHAND">
+ Mano destra
+ </string>
+ <string name="ATTACH_LFOOT">
+ Piede sinisto
+ </string>
+ <string name="ATTACH_RFOOT">
+ Piede destro
+ </string>
+ <string name="ATTACH_BACK">
+ Spina dorsale
+ </string>
+ <string name="ATTACH_PELVIS">
+ Pelvi
+ </string>
+ <string name="ATTACH_MOUTH">
+ Bocca
+ </string>
+ <string name="ATTACH_CHIN">
+ Mento
+ </string>
+ <string name="ATTACH_LEAR">
+ Orecchio sinistro
+ </string>
+ <string name="ATTACH_REAR">
+ Orecchio destro
+ </string>
+ <string name="ATTACH_LEYE">
+ Occhio sinistro
+ </string>
+ <string name="ATTACH_REYE">
+ Occhio destro
+ </string>
+ <string name="ATTACH_NOSE">
+ Naso
+ </string>
+ <string name="ATTACH_RUARM">
+ Braccio destro
+ </string>
+ <string name="ATTACH_RLARM">
+ Avambraccio destro
+ </string>
+ <string name="ATTACH_LUARM">
+ Braccio sinistro
+ </string>
+ <string name="ATTACH_LLARM">
+ Avambraccio sinistro
+ </string>
+ <string name="ATTACH_RHIP">
+ Anca destra
+ </string>
+ <string name="ATTACH_RULEG">
+ Coscia destra
+ </string>
+ <string name="ATTACH_RLLEG">
+ Coscia destra
+ </string>
+ <string name="ATTACH_LHIP">
+ Anca sinista
+ </string>
+ <string name="ATTACH_LULEG">
+ Coscia sinistra
+ </string>
+ <string name="ATTACH_LLLEG">
+ Polpaccio sinistro
+ </string>
+ <string name="ATTACH_BELLY">
+ Stomaco
+ </string>
+ <string name="ATTACH_LEFT_PEC">
+ Petto sinistro
+ </string>
+ <string name="ATTACH_RIGHT_PEC">
+ Petto destro
+ </string>
+ <string name="ATTACH_HUD_CENTER_2">
+ HUD in centro 2
+ </string>
+ <string name="ATTACH_HUD_TOP_RIGHT">
+ HUD alto a destra
+ </string>
+ <string name="ATTACH_HUD_TOP_CENTER">
+ HUD alto in centro
+ </string>
+ <string name="ATTACH_HUD_TOP_LEFT">
+ HUD alto a sinistra
+ </string>
+ <string name="ATTACH_HUD_CENTER_1">
+ HUD in centro 1
+ </string>
+ <string name="ATTACH_HUD_BOTTOM_LEFT">
+ HUD basso a sinistra
+ </string>
+ <string name="ATTACH_HUD_BOTTOM">
+ HUD basso
+ </string>
+ <string name="ATTACH_HUD_BOTTOM_RIGHT">
+ HUD basso a destra
+ </string>
+ <string name="ATTACH_NECK">
+ Collo
+ </string>
+ <string name="ATTACH_AVATAR_CENTER">
+ Centro avatar
+ </string>
+ <string name="ATTACH_LHAND_RING1">
+ Anulare sinistro
+ </string>
+ <string name="ATTACH_RHAND_RING1">
+ Anulare destro
+ </string>
+ <string name="ATTACH_TAIL_BASE">
+ Base della coda
+ </string>
+ <string name="ATTACH_TAIL_TIP">
+ Punta della coda
+ </string>
+ <string name="ATTACH_LWING">
+ Ala sinistra
+ </string>
+ <string name="ATTACH_RWING">
+ Ala destra
+ </string>
+ <string name="ATTACH_FACE_JAW">
+ Mandibola
+ </string>
+ <string name="ATTACH_FACE_LEAR">
+ Altro orecchio sinistro
+ </string>
+ <string name="ATTACH_FACE_REAR">
+ Altro orecchio destro
+ </string>
+ <string name="ATTACH_FACE_LEYE">
+ Altro occhio sinistro
+ </string>
+ <string name="ATTACH_FACE_REYE">
+ Altro occhio destro
+ </string>
+ <string name="ATTACH_FACE_TONGUE">
+ Lingua
+ </string>
+ <string name="ATTACH_GROIN">
+ Inguine
+ </string>
+ <string name="ATTACH_HIND_LFOOT">
+ Piede posteriore sinistro
+ </string>
+ <string name="ATTACH_HIND_RFOOT">
+ Piede posteriore destro
+ </string>
+ <string name="CursorPos">
+ Riga [LINE], Colonna [COLUMN]
+ </string>
+ <string name="PanelDirCountFound">
+ [COUNT] trovato/i
+ </string>
+ <string name="PanelContentsTooltip">
+ Contenuto dell'oggetto
+ </string>
+ <string name="PanelContentsNewScript">
+ Nuovo script
+ </string>
+ <string name="DoNotDisturbModeResponseDefault">
+ Questo residente ha attivato la modalità 'Non disturbare' e vedrà il tuo messaggio più tardi.
+ </string>
+ <string name="MuteByName">
+ (In base al nome)
+ </string>
+ <string name="MuteAgent">
+ (Residente)
+ </string>
+ <string name="MuteObject">
+ (Oggetto)
+ </string>
+ <string name="MuteGroup">
+ (Gruppo)
+ </string>
+ <string name="MuteExternal">
+ (esterno)
+ </string>
+ <string name="RegionNoCovenant">
+ Non esiste alcun regolamento per questa proprietà.
+ </string>
+ <string name="RegionNoCovenantOtherOwner">
+ Non esiste alcun regolamento per questa proprietà. Il terreno di questa proprietà è messo in vendita dal proprietario, non dalla Linden Lab. Contatta il proprietario del terreno per i dettagli della vendita.
+ </string>
<string name="covenant_last_modified" value="Ultima modifica: "/>
<string name="none_text" value="(nessuno)"/>
<string name="never_text" value="(mai)"/>
- <string name="GroupOwned">Di proprietà di un gruppo</string>
- <string name="Public">Pubblica</string>
- <string name="LocalSettings">Impostazioni locali</string>
- <string name="RegionSettings">Impostazioni regione</string>
- <string name="NoEnvironmentSettings">Questa regione non supporta le impostazioni per l’ambiente.</string>
- <string name="EnvironmentSun">Sole</string>
- <string name="EnvironmentMoon">Luna</string>
- <string name="EnvironmentBloom">Fioritura</string>
- <string name="EnvironmentCloudNoise">Rumore nuvole</string>
- <string name="EnvironmentNormalMap">Mappa normale</string>
- <string name="EnvironmentTransparent">Transparent</string>
- <string name="ClassifiedClicksTxt">Clicca: [TELEPORT] teleport, [MAP] mappa, [PROFILE] profilo</string>
- <string name="ClassifiedUpdateAfterPublish">(si aggiornerà dopo la pubblicazione)</string>
- <string name="NoPicksClassifiedsText">Non hai creato luoghi preferiti né inserzioni. Clicca il pulsante + qui sotto per creare un luogo preferito o un'inserzione.</string>
- <string name="NoPicksText">Non hai creato Luoghi preferiti. Fai clic sul pulsante Nuovo per creare un Luogo preferito.</string>
- <string name="NoClassifiedsText">Non hai creato Annunci. Fai clic sul pulsante Nuovo per creare un Annuncio.</string>
- <string name="NoAvatarPicksClassifiedsText">L'utente non ha luoghi preferiti né inserzioni</string>
- <string name="NoAvatarPicksText">L'utente non ha luoghi preferiti</string>
- <string name="NoAvatarClassifiedsText">L'utente non ha annunci</string>
- <string name="PicksClassifiedsLoadingText">Caricamento in corso...</string>
- <string name="MultiPreviewTitle">Anteprima</string>
- <string name="MultiPropertiesTitle">Beni immobiliari</string>
- <string name="InvOfferAnObjectNamed">Un oggetto denominato</string>
- <string name="InvOfferOwnedByGroup">di proprietà del gruppo</string>
- <string name="InvOfferOwnedByUnknownGroup">di proprietà di un gruppo sconosciuto</string>
- <string name="InvOfferOwnedBy">di proprietà di</string>
- <string name="InvOfferOwnedByUnknownUser">di proprietà di un utente sconosciuto</string>
- <string name="InvOfferGaveYou">Ti ha offerto</string>
- <string name="InvOfferDecline">Non hai accettato [DESC] da &lt;nolink&gt;[NAME]&lt;/nolink&gt;.</string>
- <string name="GroupMoneyTotal">Totale</string>
- <string name="GroupMoneyBought">comprato</string>
- <string name="GroupMoneyPaidYou">ti ha pagato</string>
- <string name="GroupMoneyPaidInto">ha pagato</string>
- <string name="GroupMoneyBoughtPassTo">ha comprato il pass</string>
- <string name="GroupMoneyPaidFeeForEvent">pagato la tassa per l'evento</string>
- <string name="GroupMoneyPaidPrizeForEvent">pagato il premio per l'evento</string>
- <string name="GroupMoneyBalance">Saldo</string>
- <string name="GroupMoneyCredits">Ringraziamenti</string>
- <string name="GroupMoneyDebits">Debiti</string>
- <string name="GroupMoneyDate">[weekday,datetime,utc] [mth,datetime,utc] [day,datetime,utc], [year,datetime,utc]</string>
- <string name="AcquiredItems">Oggetti acquisiti</string>
- <string name="Cancel">Annulla</string>
- <string name="UploadingCosts">Il caricamento di [NAME] costa L$ [AMOUNT]</string>
- <string name="BuyingCosts">L'acquisto di [NAME] costa L$ [AMOUNT]</string>
- <string name="UnknownFileExtension">Estensione del file sconosciuta [.%s]
-Tipi conosciuti .wav, .tga, .bmp, .jpg, .jpeg, or .bvh</string>
- <string name="MuteObject2">Blocca</string>
- <string name="AddLandmarkNavBarMenu">Aggiungi punto di riferimento...</string>
- <string name="EditLandmarkNavBarMenu">Modifica punto di riferimento...</string>
- <string name="accel-mac-control">⌃</string>
- <string name="accel-mac-command">⌘</string>
- <string name="accel-mac-option">⌥</string>
- <string name="accel-mac-shift">⇧</string>
- <string name="accel-win-control">Ctrl+</string>
- <string name="accel-win-alt">Alt+</string>
- <string name="accel-win-shift">Shift+</string>
- <string name="FileSaved">File salvato</string>
- <string name="Receiving">In ricezione</string>
- <string name="AM">antemeridiane</string>
- <string name="PM">pomeridiane</string>
- <string name="PST">Ora Pacifico</string>
- <string name="PDT">Ora legale Pacifico</string>
- <string name="Direction_Forward">Avanti</string>
- <string name="Direction_Left">Sinistra</string>
- <string name="Direction_Right">Destra</string>
- <string name="Direction_Back">Indietro</string>
- <string name="Direction_North">Nord</string>
- <string name="Direction_South">Sud</string>
- <string name="Direction_West">Ovest</string>
- <string name="Direction_East">Est</string>
- <string name="Direction_Up">Su</string>
- <string name="Direction_Down">Giù</string>
- <string name="Any Category">Qualsiasi categoria</string>
- <string name="Shopping">Acquisti</string>
- <string name="Land Rental">Affitto terreno</string>
- <string name="Property Rental">Affitto proprietà</string>
- <string name="Special Attraction">Attrazioni speciali</string>
- <string name="New Products">Nuovi prodotti</string>
- <string name="Employment">Lavoro</string>
- <string name="Wanted">Cercasi</string>
- <string name="Service">Servizio</string>
- <string name="Personal">Personale</string>
- <string name="None">Nessuno</string>
- <string name="Linden Location">Luogo dei Linden</string>
- <string name="Adult">Adult</string>
- <string name="Arts&amp;Culture">Arte &amp; Cultura</string>
- <string name="Business">Affari</string>
- <string name="Educational">Educazione</string>
- <string name="Gaming">Gioco</string>
- <string name="Hangout">Divertimento</string>
- <string name="Newcomer Friendly">Accoglienza nuovi residenti</string>
- <string name="Parks&amp;Nature">Parchi &amp; Natura</string>
- <string name="Residential">Residenziale</string>
- <string name="Stage">Fase</string>
- <string name="Other">Altro</string>
- <string name="Rental">Affitto</string>
- <string name="Any">Tutti</string>
- <string name="You">Tu</string>
- <string name="Multiple Media">Più supporti</string>
- <string name="Play Media">Riproduci/Pausa supporto</string>
- <string name="IntelDriverPage">http://www.intel.com/p/en_US/support/detect/graphics</string>
- <string name="NvidiaDriverPage">http://www.nvidia.com/Download/index.aspx?lang=en-us</string>
- <string name="AMDDriverPage">http://support.amd.com/us/Pages/AMDSupportHub.aspx</string>
- <string name="MBCmdLineError">Un errore è stato riscontrato analizzando la linea di comando.
+ <string name="GroupOwned">
+ Di proprietà di un gruppo
+ </string>
+ <string name="Public">
+ Pubblica
+ </string>
+ <string name="LocalSettings">
+ Impostazioni locali
+ </string>
+ <string name="RegionSettings">
+ Impostazioni regione
+ </string>
+ <string name="NoEnvironmentSettings">
+ Questa regione non supporta le impostazioni per l’ambiente.
+ </string>
+ <string name="EnvironmentSun">
+ Sole
+ </string>
+ <string name="EnvironmentMoon">
+ Luna
+ </string>
+ <string name="EnvironmentBloom">
+ Fioritura
+ </string>
+ <string name="EnvironmentCloudNoise">
+ Rumore nuvole
+ </string>
+ <string name="EnvironmentNormalMap">
+ Mappa normale
+ </string>
+ <string name="EnvironmentTransparent">
+ Transparent
+ </string>
+ <string name="ClassifiedClicksTxt">
+ Clicca: [TELEPORT] teleport, [MAP] mappa, [PROFILE] profilo
+ </string>
+ <string name="ClassifiedUpdateAfterPublish">
+ (si aggiornerà dopo la pubblicazione)
+ </string>
+ <string name="NoPicksClassifiedsText">
+ Non hai creato luoghi preferiti né inserzioni. Clicca il pulsante + qui sotto per creare un luogo preferito o un'inserzione.
+ </string>
+ <string name="NoPicksText">
+ Non hai creato Luoghi preferiti. Fai clic sul pulsante Nuovo per creare un Luogo preferito.
+ </string>
+ <string name="NoClassifiedsText">
+ Non hai creato Annunci. Fai clic sul pulsante Nuovo per creare un Annuncio.
+ </string>
+ <string name="NoAvatarPicksClassifiedsText">
+ L'utente non ha luoghi preferiti né inserzioni
+ </string>
+ <string name="NoAvatarPicksText">
+ L'utente non ha luoghi preferiti
+ </string>
+ <string name="NoAvatarClassifiedsText">
+ L'utente non ha annunci
+ </string>
+ <string name="PicksClassifiedsLoadingText">
+ Caricamento in corso...
+ </string>
+ <string name="MultiPreviewTitle">
+ Anteprima
+ </string>
+ <string name="MultiPropertiesTitle">
+ Beni immobiliari
+ </string>
+ <string name="InvOfferAnObjectNamed">
+ Un oggetto denominato
+ </string>
+ <string name="InvOfferOwnedByGroup">
+ di proprietà del gruppo
+ </string>
+ <string name="InvOfferOwnedByUnknownGroup">
+ di proprietà di un gruppo sconosciuto
+ </string>
+ <string name="InvOfferOwnedBy">
+ di proprietà di
+ </string>
+ <string name="InvOfferOwnedByUnknownUser">
+ di proprietà di un utente sconosciuto
+ </string>
+ <string name="InvOfferGaveYou">
+ Ti ha offerto
+ </string>
+ <string name="InvOfferDecline">
+ Non hai accettato [DESC] da &lt;nolink&gt;[NAME]&lt;/nolink&gt;.
+ </string>
+ <string name="GroupMoneyTotal">
+ Totale
+ </string>
+ <string name="GroupMoneyBought">
+ comprato
+ </string>
+ <string name="GroupMoneyPaidYou">
+ ti ha pagato
+ </string>
+ <string name="GroupMoneyPaidInto">
+ ha pagato
+ </string>
+ <string name="GroupMoneyBoughtPassTo">
+ ha comprato il pass
+ </string>
+ <string name="GroupMoneyPaidFeeForEvent">
+ pagato la tassa per l'evento
+ </string>
+ <string name="GroupMoneyPaidPrizeForEvent">
+ pagato il premio per l'evento
+ </string>
+ <string name="GroupMoneyBalance">
+ Saldo
+ </string>
+ <string name="GroupMoneyCredits">
+ Ringraziamenti
+ </string>
+ <string name="GroupMoneyDebits">
+ Debiti
+ </string>
+ <string name="GroupMoneyDate">
+ [weekday,datetime,utc] [mth,datetime,utc] [day,datetime,utc], [year,datetime,utc]
+ </string>
+ <string name="AcquiredItems">
+ Oggetti acquisiti
+ </string>
+ <string name="Cancel">
+ Annulla
+ </string>
+ <string name="UploadingCosts">
+ Il caricamento di [NAME] costa L$ [AMOUNT]
+ </string>
+ <string name="BuyingCosts">
+ L'acquisto di [NAME] costa L$ [AMOUNT]
+ </string>
+ <string name="UnknownFileExtension">
+ Estensione del file sconosciuta [.%s]
+Tipi conosciuti .wav, .tga, .bmp, .jpg, .jpeg, or .bvh
+ </string>
+ <string name="MuteObject2">
+ Blocca
+ </string>
+ <string name="AddLandmarkNavBarMenu">
+ Aggiungi punto di riferimento...
+ </string>
+ <string name="EditLandmarkNavBarMenu">
+ Modifica punto di riferimento...
+ </string>
+ <string name="accel-mac-control">
+ ⌃
+ </string>
+ <string name="accel-mac-command">
+ ⌘
+ </string>
+ <string name="accel-mac-option">
+ ⌥
+ </string>
+ <string name="accel-mac-shift">
+ ⇧
+ </string>
+ <string name="accel-win-control">
+ Ctrl+
+ </string>
+ <string name="accel-win-alt">
+ Alt+
+ </string>
+ <string name="accel-win-shift">
+ Shift+
+ </string>
+ <string name="FileSaved">
+ File salvato
+ </string>
+ <string name="Receiving">
+ In ricezione
+ </string>
+ <string name="AM">
+ antemeridiane
+ </string>
+ <string name="PM">
+ pomeridiane
+ </string>
+ <string name="PST">
+ Ora Pacifico
+ </string>
+ <string name="PDT">
+ Ora legale Pacifico
+ </string>
+ <string name="Direction_Forward">
+ Avanti
+ </string>
+ <string name="Direction_Left">
+ Sinistra
+ </string>
+ <string name="Direction_Right">
+ Destra
+ </string>
+ <string name="Direction_Back">
+ Indietro
+ </string>
+ <string name="Direction_North">
+ Nord
+ </string>
+ <string name="Direction_South">
+ Sud
+ </string>
+ <string name="Direction_West">
+ Ovest
+ </string>
+ <string name="Direction_East">
+ Est
+ </string>
+ <string name="Direction_Up">
+ Su
+ </string>
+ <string name="Direction_Down">
+ Giù
+ </string>
+ <string name="Any Category">
+ Qualsiasi categoria
+ </string>
+ <string name="Shopping">
+ Acquisti
+ </string>
+ <string name="Land Rental">
+ Affitto terreno
+ </string>
+ <string name="Property Rental">
+ Affitto proprietà
+ </string>
+ <string name="Special Attraction">
+ Attrazioni speciali
+ </string>
+ <string name="New Products">
+ Nuovi prodotti
+ </string>
+ <string name="Employment">
+ Lavoro
+ </string>
+ <string name="Wanted">
+ Cercasi
+ </string>
+ <string name="Service">
+ Servizio
+ </string>
+ <string name="Personal">
+ Personale
+ </string>
+ <string name="None">
+ Nessuno
+ </string>
+ <string name="Linden Location">
+ Luogo dei Linden
+ </string>
+ <string name="Adult">
+ Adult
+ </string>
+ <string name="Arts&amp;Culture">
+ Arte &amp; Cultura
+ </string>
+ <string name="Business">
+ Affari
+ </string>
+ <string name="Educational">
+ Educazione
+ </string>
+ <string name="Gaming">
+ Gioco
+ </string>
+ <string name="Hangout">
+ Divertimento
+ </string>
+ <string name="Newcomer Friendly">
+ Accoglienza nuovi residenti
+ </string>
+ <string name="Parks&amp;Nature">
+ Parchi &amp; Natura
+ </string>
+ <string name="Residential">
+ Residenziale
+ </string>
+ <string name="Stage">
+ Fase
+ </string>
+ <string name="Other">
+ Altro
+ </string>
+ <string name="Rental">
+ Affitto
+ </string>
+ <string name="Any">
+ Tutti
+ </string>
+ <string name="You">
+ Tu
+ </string>
+ <string name="Multiple Media">
+ Più supporti
+ </string>
+ <string name="Play Media">
+ Riproduci/Pausa supporto
+ </string>
+ <string name="IntelDriverPage">
+ http://www.intel.com/p/en_US/support/detect/graphics
+ </string>
+ <string name="NvidiaDriverPage">
+ http://www.nvidia.com/Download/index.aspx?lang=en-us
+ </string>
+ <string name="AMDDriverPage">
+ http://support.amd.com/us/Pages/AMDSupportHub.aspx
+ </string>
+ <string name="MBCmdLineError">
+ Un errore è stato riscontrato analizzando la linea di comando.
Per informazioni: http://wiki.secondlife.com/wiki/Client_parameters
-Errore:</string>
- <string name="MBCmdLineUsg">Uso linea di comando del programma [APP_NAME] :</string>
- <string name="MBUnableToAccessFile">Il programma [APP_NAME] non è in grado di accedere ad un file necessario.
+Errore:
+ </string>
+ <string name="MBCmdLineUsg">
+ Uso linea di comando del programma [APP_NAME] :
+ </string>
+ <string name="MBUnableToAccessFile">
+ Il programma [APP_NAME] non è in grado di accedere ad un file necessario.
Potrebbe darsi che tu abbia copie multiple attivate o che il tuo sistema reputi erroneamente che il file sia già aperto.
Se il problema persiste, riavvia il computer e riprova.
-Se il problema continua ancora, dovresti completamente disinstallare l'applicazione [APP_NAME] e reinstallarla.</string>
- <string name="MBFatalError">Errore critico</string>
- <string name="MBRequiresAltiVec">Il programma [APP_NAME] richiede un processore con AltiVec (G4 o superiore).</string>
- <string name="MBAlreadyRunning">Il programma [APP_NAME] è già attivo.
+Se il problema continua ancora, dovresti completamente disinstallare l'applicazione [APP_NAME] e reinstallarla.
+ </string>
+ <string name="MBFatalError">
+ Errore critico
+ </string>
+ <string name="MBRequiresAltiVec">
+ Il programma [APP_NAME] richiede un processore con AltiVec (G4 o superiore).
+ </string>
+ <string name="MBAlreadyRunning">
+ Il programma [APP_NAME] è già attivo.
Controlla che il programma non sia minimizzato nella tua barra degli strumenti.
-Se il messaggio persiste, riavvia il computer.</string>
- <string name="MBFrozenCrashed">Sembra che [APP_NAME] si sia bloccata o interrotta nella sessione precedente.
-Vuoi mandare un crash report?</string>
- <string name="MBAlert">Avviso</string>
- <string name="MBNoDirectX">Il programmma [APP_NAME] non riesce a trovare una DirectX 9.0b o superiore.
+Se il messaggio persiste, riavvia il computer.
+ </string>
+ <string name="MBFrozenCrashed">
+ Sembra che [APP_NAME] si sia bloccata o interrotta nella sessione precedente.
+Vuoi mandare un crash report?
+ </string>
+ <string name="MBAlert">
+ Avviso
+ </string>
+ <string name="MBNoDirectX">
+ Il programmma [APP_NAME] non riesce a trovare una DirectX 9.0b o superiore.
[APP_NAME] usa DirectX per rilevare hardware e/o i driver non aggiornati che possono causare problemi di stabilità, scarsa performance e interruzioni. Benché tu possa avviare il programma [APP_NAME] senza di esse, consigliamo caldamente l'esecuzione con DirectX 9.0b.
-Vuoi continuare?</string>
- <string name="MBWarning">Attenzione</string>
- <string name="MBNoAutoUpdate">L'aggiornamento automatico non è stato ancora realizzato per Linux.
-Consigliamo di scaricare l'ultima versione direttamente da www.secondlife.com.</string>
- <string name="MBRegClassFailed">RegisterClass non riuscito</string>
- <string name="MBError">Errore</string>
- <string name="MBFullScreenErr">Impossibile visualizzare a schermo intero con risoluzione [WIDTH] x [HEIGHT].
-Visualizzazione corrente in modalità finestra.</string>
- <string name="MBDestroyWinFailed">Errore di arresto durante il tentativo di chiusura della finestra (DestroyWindow() non riuscito)</string>
- <string name="MBShutdownErr">Errore di arresto</string>
- <string name="MBDevContextErr">Impossibile caricare i driver GL</string>
- <string name="MBPixelFmtErr">Impossibile trovare un formato pixel adatto</string>
- <string name="MBPixelFmtDescErr">Impossibile ottenere una descrizione del formato pixel</string>
- <string name="MBTrueColorWindow">[APP_NAME] richiede True Color (32 bit) per funzionare.
-Vai alle impostazioni dello schermo del tuo computer e imposta il colore in modalità 32 bit.</string>
- <string name="MBAlpha">[APP_NAME] non funziona poichè è impossibile trovare un canale alpha a 8 bit. Questo problema normalmente deriva dai driver della scheda video.
+Vuoi continuare?
+ </string>
+ <string name="MBWarning">
+ Attenzione
+ </string>
+ <string name="MBNoAutoUpdate">
+ L'aggiornamento automatico non è stato ancora realizzato per Linux.
+Consigliamo di scaricare l'ultima versione direttamente da www.secondlife.com.
+ </string>
+ <string name="MBRegClassFailed">
+ RegisterClass non riuscito
+ </string>
+ <string name="MBError">
+ Errore
+ </string>
+ <string name="MBFullScreenErr">
+ Impossibile visualizzare a schermo intero con risoluzione [WIDTH] x [HEIGHT].
+Visualizzazione corrente in modalità finestra.
+ </string>
+ <string name="MBDestroyWinFailed">
+ Errore di arresto durante il tentativo di chiusura della finestra (DestroyWindow() non riuscito)
+ </string>
+ <string name="MBShutdownErr">
+ Errore di arresto
+ </string>
+ <string name="MBDevContextErr">
+ Impossibile caricare i driver GL
+ </string>
+ <string name="MBPixelFmtErr">
+ Impossibile trovare un formato pixel adatto
+ </string>
+ <string name="MBPixelFmtDescErr">
+ Impossibile ottenere una descrizione del formato pixel
+ </string>
+ <string name="MBTrueColorWindow">
+ [APP_NAME] richiede True Color (32 bit) per funzionare.
+Vai alle impostazioni dello schermo del tuo computer e imposta il colore in modalità 32 bit.
+ </string>
+ <string name="MBAlpha">
+ [APP_NAME] non funziona poichè è impossibile trovare un canale alpha a 8 bit. Questo problema normalmente deriva dai driver della scheda video.
Assicurati di avere installato i driver della scheda video più recenti.
Assicurati anche che il monitor sia impostato a True Color (32 bit) nel Pannello di controllo &gt; Schermo &gt; Impostazioni.
-Se il messaggio persiste, contatta [SUPPORT_SITE].</string>
- <string name="MBPixelFmtSetErr">Impossibile impostare il formato pixel</string>
- <string name="MBGLContextErr">Impossibile creare il GL rendering</string>
- <string name="MBGLContextActErr">Impossibile attivare il GL rendering</string>
- <string name="MBVideoDrvErr">[APP_NAME] Non riesce ad avviarsi perchè i driver della tua scheda video non sono stati installati correttamente, non sono aggiornati, o sono per un hardware non supportato. Assicurati di avere i driver della scheda video più recenti e anche se li hai installati, prova a installarli di nuovo.
+Se il messaggio persiste, contatta [SUPPORT_SITE].
+ </string>
+ <string name="MBPixelFmtSetErr">
+ Impossibile impostare il formato pixel
+ </string>
+ <string name="MBGLContextErr">
+ Impossibile creare il GL rendering
+ </string>
+ <string name="MBGLContextActErr">
+ Impossibile attivare il GL rendering
+ </string>
+ <string name="MBVideoDrvErr">
+ [APP_NAME] Non riesce ad avviarsi perchè i driver della tua scheda video non sono stati installati correttamente, non sono aggiornati, o sono per un hardware non supportato. Assicurati di avere i driver della scheda video più recenti e anche se li hai installati, prova a installarli di nuovo.
-Se il messaggio persiste, contatta [SUPPORT_SITE].</string>
- <string name="5 O'Clock Shadow">Barba leggera</string>
- <string name="All White">Tutti bianchi</string>
- <string name="Anime Eyes">Occhi grandi</string>
- <string name="Arced">Arcuato</string>
- <string name="Arm Length">Lunghezza braccia</string>
- <string name="Attached">Attaccato</string>
- <string name="Attached Earlobes">Lobi attaccati</string>
- <string name="Back Fringe">Frangetta all'indietro</string>
- <string name="Baggy">Larghi</string>
- <string name="Bangs">Frange</string>
- <string name="Beady Eyes">Occhi piccoli</string>
- <string name="Belly Size">Punto vita</string>
- <string name="Big">Grande</string>
- <string name="Big Butt">Sedere grande</string>
- <string name="Big Hair Back">Capigliatura grande: Indietro</string>
- <string name="Big Hair Front">Capigliatura grande: anteriore</string>
- <string name="Big Hair Top">Capigliatura grande: in alto</string>
- <string name="Big Head">Grande testa</string>
- <string name="Big Pectorals">Grandi pettorali</string>
- <string name="Big Spikes">Capelli con punte</string>
- <string name="Black">Nero</string>
- <string name="Blonde">Biondo</string>
- <string name="Blonde Hair">Capelli biondi</string>
- <string name="Blush">Fard</string>
- <string name="Blush Color">Colore fard</string>
- <string name="Blush Opacity">Opacità fard</string>
- <string name="Body Definition">Definizione muscolare</string>
- <string name="Body Fat">Grasso corporeo</string>
- <string name="Body Freckles">Lentiggini e nei</string>
- <string name="Body Thick">Corpo più robusto</string>
- <string name="Body Thickness">Robustezza del corpo</string>
- <string name="Body Thin">Corpo più magro</string>
- <string name="Bow Legged">Gambe arcuate</string>
- <string name="Breast Buoyancy">Altezza del seno</string>
- <string name="Breast Cleavage">Décolleté</string>
- <string name="Breast Size">Grandezza del seno</string>
- <string name="Bridge Width">Larghezza setto</string>
- <string name="Broad">Largo</string>
- <string name="Brow Size">Grandezza delle sopracciglia</string>
- <string name="Bug Eyes">Occhi sporgenti</string>
- <string name="Bugged Eyes">Occhi sporgenti</string>
- <string name="Bulbous">Bulboso</string>
- <string name="Bulbous Nose">Naso bulboso</string>
- <string name="Breast Physics Mass">Massa seno</string>
- <string name="Breast Physics Smoothing">Lisciatura seno</string>
- <string name="Breast Physics Gravity">Gravità seno</string>
- <string name="Breast Physics Drag">Resistenza seno</string>
- <string name="Breast Physics InOut Max Effect">Massimo effetto</string>
- <string name="Breast Physics InOut Spring">Elasticità</string>
- <string name="Breast Physics InOut Gain">Guadagno</string>
- <string name="Breast Physics InOut Damping">Attenuazione</string>
- <string name="Breast Physics UpDown Max Effect">Massimo effetto</string>
- <string name="Breast Physics UpDown Spring">Elasticità</string>
- <string name="Breast Physics UpDown Gain">Guadagno</string>
- <string name="Breast Physics UpDown Damping">Attenuazione</string>
- <string name="Breast Physics LeftRight Max Effect">Massimo effetto</string>
- <string name="Breast Physics LeftRight Spring">Elasticità</string>
- <string name="Breast Physics LeftRight Gain">Guadagno</string>
- <string name="Breast Physics LeftRight Damping">Attenuazione</string>
- <string name="Belly Physics Mass">Massa pancia</string>
- <string name="Belly Physics Smoothing">Lisciatura pancia</string>
- <string name="Belly Physics Gravity">Gravità pancia</string>
- <string name="Belly Physics Drag">Resistenza pancia</string>
- <string name="Belly Physics UpDown Max Effect">Massimo effetto</string>
- <string name="Belly Physics UpDown Spring">Elasticità</string>
- <string name="Belly Physics UpDown Gain">Guadagno</string>
- <string name="Belly Physics UpDown Damping">Attenuazione</string>
- <string name="Butt Physics Mass">Massa natiche</string>
- <string name="Butt Physics Smoothing">Lisciatura natiche</string>
- <string name="Butt Physics Gravity">Gravità natiche</string>
- <string name="Butt Physics Drag">Resistenza natiche</string>
- <string name="Butt Physics UpDown Max Effect">Massimo effetto</string>
- <string name="Butt Physics UpDown Spring">Elasticità</string>
- <string name="Butt Physics UpDown Gain">Guadagno</string>
- <string name="Butt Physics UpDown Damping">Attenuazione</string>
- <string name="Butt Physics LeftRight Max Effect">Massimo effetto</string>
- <string name="Butt Physics LeftRight Spring">Elasticità</string>
- <string name="Butt Physics LeftRight Gain">Guadagno</string>
- <string name="Butt Physics LeftRight Damping">Attenuazione</string>
- <string name="Bushy Eyebrows">Sopracciglia cespugliose</string>
- <string name="Bushy Hair">Capelli a cespuglio</string>
- <string name="Butt Size">Grandezza del sedere</string>
- <string name="Butt Gravity">Gravità natiche</string>
- <string name="bustle skirt">Crinolina</string>
- <string name="no bustle">Nessuna crinolina</string>
- <string name="more bustle">Più crinolina</string>
- <string name="Chaplin">Baffetti</string>
- <string name="Cheek Bones">Zigomi</string>
- <string name="Chest Size">Ampiezza del torace</string>
- <string name="Chin Angle">Angolo del mento</string>
- <string name="Chin Cleft">Fossetta sul mento</string>
- <string name="Chin Curtains">Barba sottomento</string>
- <string name="Chin Depth">Profondità mento</string>
- <string name="Chin Heavy">Mento forte</string>
- <string name="Chin In">Mento in dentro</string>
- <string name="Chin Out">Mento sporgente</string>
- <string name="Chin-Neck">Mento-collo</string>
- <string name="Clear">Trasparente</string>
- <string name="Cleft">Fossetta</string>
- <string name="Close Set Eyes">Occhi ravvicinati</string>
- <string name="Closed">Chiusa</string>
- <string name="Closed Back">Chiuso dietro</string>
- <string name="Closed Front">Chiuso davanti</string>
- <string name="Closed Left">Chiuso sinistra</string>
- <string name="Closed Right">Chiuso destra</string>
- <string name="Coin Purse">Meno pronunciati</string>
- <string name="Collar Back">Colletto posteriore</string>
- <string name="Collar Front">Colletto anteriore</string>
- <string name="Corner Down">Angolo all'ingiù</string>
- <string name="Corner Up">Angolo all'insù</string>
- <string name="Creased">Piega</string>
- <string name="Crooked Nose">Naso storto</string>
- <string name="Cuff Flare">Svasato con risvolto</string>
- <string name="Dark">Scuro</string>
- <string name="Dark Green">Verde scuro</string>
- <string name="Darker">Più scuro</string>
- <string name="Deep">Profondo</string>
- <string name="Default Heels">Tacchi standard</string>
- <string name="Dense">Folti</string>
- <string name="Double Chin">Doppio mento</string>
- <string name="Downturned">All'ingiù</string>
- <string name="Duffle Bag">Più pronunciati</string>
- <string name="Ear Angle">Angolo orecchie</string>
- <string name="Ear Size">Grandezza orecchie</string>
- <string name="Ear Tips">Estremità orecchie</string>
- <string name="Egg Head">Ovalizzazione testa</string>
- <string name="Eye Bags">Occhiaie</string>
- <string name="Eye Color">Colore degli occhi</string>
- <string name="Eye Depth">Profondità degli occhi</string>
- <string name="Eye Lightness">Luminosità degli occhi</string>
- <string name="Eye Opening">Apertura degli occhi</string>
- <string name="Eye Pop">Prominenza degli occhi</string>
- <string name="Eye Size">Grandezza occhi</string>
- <string name="Eye Spacing">Distanza occhi</string>
- <string name="Eyebrow Arc">Arco delle sopracciglia</string>
- <string name="Eyebrow Density">Densità delle sopracciglia</string>
- <string name="Eyebrow Height">Altezza delle sopracciglia</string>
- <string name="Eyebrow Points">Sopracciglia appuntite</string>
- <string name="Eyebrow Size">Grandezza sopracciglia</string>
- <string name="Eyelash Length">Lunghezza delle ciglia</string>
- <string name="Eyeliner">Eyeliner</string>
- <string name="Eyeliner Color">Colore dell'eyeliner</string>
- <string name="Eyes Bugged">Occhi sporgenti</string>
- <string name="Face Shear">Taglio del viso</string>
- <string name="Facial Definition">Definizione del viso</string>
- <string name="Far Set Eyes">Occhi distanti</string>
- <string name="Fat Lips">Labbra carnose</string>
- <string name="Female">Femmina</string>
- <string name="Fingerless">Senza dita</string>
- <string name="Fingers">Dita</string>
- <string name="Flared Cuffs">Risvolti svasati</string>
- <string name="Flat">Piatto</string>
- <string name="Flat Butt">Sedere piatto</string>
- <string name="Flat Head">Testa piatta</string>
- <string name="Flat Toe">Punta piatta</string>
- <string name="Foot Size">Misura piede</string>
- <string name="Forehead Angle">Angolo della fronte</string>
- <string name="Forehead Heavy">Fronte sporgente</string>
- <string name="Freckles">Lentiggini</string>
- <string name="Front Fringe">Frangetta</string>
- <string name="Full Back">Dietro gonfi</string>
- <string name="Full Eyeliner">Eyeliner marcato</string>
- <string name="Full Front">Anteriore gonfio</string>
- <string name="Full Hair Sides">Lati capelli gonfi</string>
- <string name="Full Sides">Lati gonfi</string>
- <string name="Glossy">Lucido</string>
- <string name="Glove Fingers">Dita con guanti</string>
- <string name="Glove Length">Lunghezza guanti</string>
- <string name="Hair">Capigliature</string>
- <string name="Hair Back">Capelli: Indietro</string>
- <string name="Hair Front">Capelli: anteriore</string>
- <string name="Hair Sides">Capelli: lati</string>
- <string name="Hair Sweep">Direzione capigliatura</string>
- <string name="Hair Thickess">Foltezza</string>
- <string name="Hair Thickness">Foltezza</string>
- <string name="Hair Tilt">Inclinazione</string>
- <string name="Hair Tilted Left">Verso sinistra</string>
- <string name="Hair Tilted Right">Verso destra</string>
- <string name="Hair Volume">Capelli: Volume</string>
- <string name="Hand Size">Grandezza mani</string>
- <string name="Handlebars">Baffi a manubrio</string>
- <string name="Head Length">Lunghezza testa</string>
- <string name="Head Shape">Forma della testa</string>
- <string name="Head Size">Grandezza della testa</string>
- <string name="Head Stretch">Allungamento testa</string>
- <string name="Heel Height">Altezza tacchi</string>
- <string name="Heel Shape">Forma tacchi</string>
- <string name="Height">Altezza</string>
- <string name="High">Alto</string>
- <string name="High Heels">Tacchi alti</string>
- <string name="High Jaw">Mandibola alta</string>
- <string name="High Platforms">Alta</string>
- <string name="High and Tight">Alto e stretto</string>
- <string name="Higher">Più alto</string>
- <string name="Hip Length">Altezza bacino</string>
- <string name="Hip Width">Larghezza bacino</string>
- <string name="Hover">Muovi sopra</string>
- <string name="In">Dentro</string>
- <string name="In Shdw Color">Colore ombretto interno</string>
- <string name="In Shdw Opacity">Opacità ombretto interno</string>
- <string name="Inner Eye Corner">Angolo interno</string>
- <string name="Inner Eye Shadow">Ombretto interno</string>
- <string name="Inner Shadow">Ombretto interno</string>
- <string name="Jacket Length">Lunghezza giacca</string>
- <string name="Jacket Wrinkles">Grinze della giacca</string>
- <string name="Jaw Angle">Angolo mandibola</string>
- <string name="Jaw Jut">Prognatismo mento</string>
- <string name="Jaw Shape">Forma del mento</string>
- <string name="Join">Iscriviti</string>
- <string name="Jowls">Guance</string>
- <string name="Knee Angle">Angolo ginocchia</string>
- <string name="Knock Kneed">Gambe ad X</string>
- <string name="Large">Grande</string>
- <string name="Large Hands">Mani grandi</string>
- <string name="Left Part">Riga a sinistra</string>
- <string name="Leg Length">Lunghezza gambe</string>
- <string name="Leg Muscles">Muscoli gambe</string>
- <string name="Less">Meno</string>
- <string name="Less Body Fat">Meno grasso corporeo</string>
- <string name="Less Curtains">Meno</string>
- <string name="Less Freckles">Meno lentiggini</string>
- <string name="Less Full">Meno piene</string>
- <string name="Less Gravity">Più alto</string>
- <string name="Less Love">Meno maniglie</string>
- <string name="Less Muscles">Meno muscoli</string>
- <string name="Less Muscular">Meno muscolari</string>
- <string name="Less Rosy">Meno rosato</string>
- <string name="Less Round">Meno rotondo</string>
- <string name="Less Saddle">Meno a sella</string>
- <string name="Less Square">Meno quadrato</string>
- <string name="Less Volume">Meno volume</string>
- <string name="Less soul">Meno</string>
- <string name="Lighter">Più leggero</string>
- <string name="Lip Cleft">Distanza fossetta labbro</string>
- <string name="Lip Cleft Depth">Prof. fossetta labbro</string>
- <string name="Lip Fullness">Volume labbra</string>
- <string name="Lip Pinkness">Tonalità rosa labbra</string>
- <string name="Lip Ratio">Proporzione labbra</string>
- <string name="Lip Thickness">Carnosità labbra</string>
- <string name="Lip Width">Larghezza labbra</string>
- <string name="Lipgloss">Lipgloss</string>
- <string name="Lipstick">Rossetto</string>
- <string name="Lipstick Color">Colore rossetto</string>
- <string name="Long">Lungo</string>
- <string name="Long Head">Testa lunga</string>
- <string name="Long Hips">Bacino alto</string>
- <string name="Long Legs">Gambe lunghe</string>
- <string name="Long Neck">Collo lungo</string>
- <string name="Long Pigtails">Codini lunghi</string>
- <string name="Long Ponytail">Codino lungo</string>
- <string name="Long Torso">Torace lungo</string>
- <string name="Long arms">Braccia lunghe</string>
- <string name="Loose Pants">Pantaloni ampi</string>
- <string name="Loose Shirt">Camicia ampia</string>
- <string name="Loose Sleeves">Maniche non attillate</string>
- <string name="Love Handles">Maniglie dell'amore</string>
- <string name="Low">Basso</string>
- <string name="Low Heels">Tacchi bassi</string>
- <string name="Low Jaw">Mandibola bassa</string>
- <string name="Low Platforms">Bassa</string>
- <string name="Low and Loose">Basso e ampio</string>
- <string name="Lower">Più basso</string>
- <string name="Lower Bridge">Parte bassa del setto</string>
- <string name="Lower Cheeks">Guance inferiori</string>
- <string name="Male">Maschio</string>
- <string name="Middle Part">Riga nel mezzo</string>
- <string name="More">Altro</string>
- <string name="More Blush">Più fard</string>
- <string name="More Body Fat">Più grasso corporeo</string>
- <string name="More Curtains">Più</string>
- <string name="More Eyeshadow">Più ombretto</string>
- <string name="More Freckles">Più lentiggini</string>
- <string name="More Full">Più piene</string>
- <string name="More Gravity">Più calato</string>
- <string name="More Lipstick">Più rossetto</string>
- <string name="More Love">Più maniglie</string>
- <string name="More Lower Lip">Labbro inf. pronunciato</string>
- <string name="More Muscles">Più muscoli</string>
- <string name="More Muscular">Più muscolatura</string>
- <string name="More Rosy">Più rosato</string>
- <string name="More Round">Più rotondo</string>
- <string name="More Saddle">Più a sella</string>
- <string name="More Sloped">Più orizzontale</string>
- <string name="More Square">Più quadrato</string>
- <string name="More Upper Lip">Labbro sup. pronunciato</string>
- <string name="More Vertical">Più verticale</string>
- <string name="More Volume">Più volume</string>
- <string name="More soul">Più</string>
- <string name="Moustache">Baffi</string>
- <string name="Mouth Corner">Angolo della bocca</string>
- <string name="Mouth Position">Posizione della bocca</string>
- <string name="Mowhawk">Moicana</string>
- <string name="Muscular">Muscolatura</string>
- <string name="Mutton Chops">Basette lunghe</string>
- <string name="Nail Polish">Smalto</string>
- <string name="Nail Polish Color">Colore smalto</string>
- <string name="Narrow">Socchiusi</string>
- <string name="Narrow Back">Laterali post. vicini</string>
- <string name="Narrow Front">Laterali ant. vicini</string>
- <string name="Narrow Lips">Labbra strette</string>
- <string name="Natural">Naturale</string>
- <string name="Neck Length">Lunghezza del collo</string>
- <string name="Neck Thickness">Grandezza del collo</string>
- <string name="No Blush">Senza fard</string>
- <string name="No Eyeliner">Senza eyeliner</string>
- <string name="No Eyeshadow">Senza ombretto</string>
- <string name="No Lipgloss">Senza lipgloss</string>
- <string name="No Lipstick">Senza rossetto</string>
- <string name="No Part">Senza riga</string>
- <string name="No Polish">Senza smalto</string>
- <string name="No Red">Senza rosso</string>
- <string name="No Spikes">Senza punte</string>
- <string name="No White">Senza bianco</string>
- <string name="No Wrinkles">Senza pieghe</string>
- <string name="Normal Lower">Inferiore normale</string>
- <string name="Normal Upper">Superiore normale</string>
- <string name="Nose Left">Naso a sinistra</string>
- <string name="Nose Right">Naso a destra</string>
- <string name="Nose Size">Grandezza naso</string>
- <string name="Nose Thickness">Spessore naso</string>
- <string name="Nose Tip Angle">Angolo punta naso</string>
- <string name="Nose Tip Shape">Forma punta naso</string>
- <string name="Nose Width">Larghezza naso</string>
- <string name="Nostril Division">Divisione narici</string>
- <string name="Nostril Width">Larghezza narici</string>
- <string name="Opaque">Opaco</string>
- <string name="Open">Apri</string>
- <string name="Open Back">Retro aperto</string>
- <string name="Open Front">Davanti aperto</string>
- <string name="Open Left">Lato sin. aperto</string>
- <string name="Open Right">Lato des. aperto</string>
- <string name="Orange">Arancio</string>
- <string name="Out">Fuori</string>
- <string name="Out Shdw Color">Colore ombretto esterno</string>
- <string name="Out Shdw Opacity">Opacità ombretto esterno</string>
- <string name="Outer Eye Corner">Angolo esterno occhio</string>
- <string name="Outer Eye Shadow">Ombretto esterno</string>
- <string name="Outer Shadow">Ombreggiatura esterna</string>
- <string name="Overbite">Denti sup. in fuori</string>
- <string name="Package">Genitali</string>
- <string name="Painted Nails">Unghie smaltate</string>
- <string name="Pale">Pallido</string>
- <string name="Pants Crotch">Cavallo</string>
- <string name="Pants Fit">Vestibilità pantaloni</string>
- <string name="Pants Length">Lunghezza pantaloni</string>
- <string name="Pants Waist">Taglia pantalone</string>
- <string name="Pants Wrinkles">Pantaloni con le grinze</string>
- <string name="Part">Con riga</string>
- <string name="Part Bangs">Frangetta divisa</string>
- <string name="Pectorals">Pettorali</string>
- <string name="Pigment">Pigmento</string>
- <string name="Pigtails">Codini</string>
- <string name="Pink">Rosa</string>
- <string name="Pinker">Più rosato</string>
- <string name="Platform Height">Altezza pianta</string>
- <string name="Platform Width">Larghezza pianta</string>
- <string name="Pointy">Appuntito</string>
- <string name="Pointy Heels">Tacchi a spillo</string>
- <string name="Ponytail">Codino</string>
- <string name="Poofy Skirt">Gonna gonfia</string>
- <string name="Pop Left Eye">Sinistro più aperto</string>
- <string name="Pop Right Eye">Destro più aperto</string>
- <string name="Puffy">Paffute</string>
- <string name="Puffy Eyelids">Palpebre gonfie</string>
- <string name="Rainbow Color">Tonalità</string>
- <string name="Red Hair">Presenza di rosso nei capelli</string>
- <string name="Regular">Normale</string>
- <string name="Right Part">Riga a destra</string>
- <string name="Rosy Complexion">Incarnato</string>
- <string name="Round">Rotondo</string>
- <string name="Ruddiness">Rossore</string>
- <string name="Ruddy">Rosse</string>
- <string name="Rumpled Hair">Capelli mossi</string>
- <string name="Saddle Bags">Rotondità fianchi</string>
- <string name="Scrawny Leg">Gambe magre</string>
- <string name="Separate">Separati</string>
- <string name="Shallow">Meno pronunciato</string>
- <string name="Shear Back">Taglio posteriore</string>
- <string name="Shear Face">Taglio del viso</string>
- <string name="Shear Front">Taglio anteriore</string>
- <string name="Shear Left Up">Distorto a sinistra</string>
- <string name="Shear Right Up">Distorto a destra</string>
- <string name="Sheared Back">Taglio verso dietro</string>
- <string name="Sheared Front">Taglio verso davanti</string>
- <string name="Shift Left">A sinistra</string>
- <string name="Shift Mouth">Spostamento bocca</string>
- <string name="Shift Right">A destra</string>
- <string name="Shirt Bottom">Parte inferiore camicia</string>
- <string name="Shirt Fit">Vestibilità camicia</string>
- <string name="Shirt Wrinkles">Camicia con le grinze</string>
- <string name="Shoe Height">Altezza scarpe</string>
- <string name="Short">Basso</string>
- <string name="Short Arms">Braccia corte</string>
- <string name="Short Legs">Gambe corte</string>
- <string name="Short Neck">Collo corto</string>
- <string name="Short Pigtails">Codini corti</string>
- <string name="Short Ponytail">Codino corto</string>
- <string name="Short Sideburns">Basette corte</string>
- <string name="Short Torso">Torace corto</string>
- <string name="Short hips">Bacino corto</string>
- <string name="Shoulders">Spalle</string>
- <string name="Side Fringe">Ciuffi laterali</string>
- <string name="Sideburns">Basette</string>
- <string name="Sides Hair">Capigliatura di lato</string>
- <string name="Sides Hair Down">Capigliatura di lato sciolta</string>
- <string name="Sides Hair Up">Capigliatura di lato raccolta</string>
- <string name="Skinny Neck">Collo fino</string>
- <string name="Skirt Fit">Vestibilità gonna</string>
- <string name="Skirt Length">Lunghezza gonna</string>
- <string name="Slanted Forehead">Fronte inclinata</string>
- <string name="Sleeve Length">Lunghezza maniche</string>
- <string name="Sleeve Looseness">Morbidezza maniche</string>
- <string name="Slit Back">Spacco: Indietro</string>
- <string name="Slit Front">Spacco: anteriore</string>
- <string name="Slit Left">Spacco: Sinistra</string>
- <string name="Slit Right">Spacco: Destra</string>
- <string name="Small">Piccola</string>
- <string name="Small Hands">Mani piccole</string>
- <string name="Small Head">Testa piccola</string>
- <string name="Smooth">Liscio</string>
- <string name="Smooth Hair">Capelli lisci</string>
- <string name="Socks Length">Lunghezza calze</string>
- <string name="Soulpatch">Pizzetto labbro inferiore</string>
- <string name="Sparse">Piu rade</string>
- <string name="Spiked Hair">Capelli a punta</string>
- <string name="Square">Quadrato</string>
- <string name="Square Toe">Punta quadrata</string>
- <string name="Squash Head">Testa schiacciata</string>
- <string name="Stretch Head">Testa allungata</string>
- <string name="Sunken">Scarne</string>
- <string name="Sunken Chest">Senza pettorali</string>
- <string name="Sunken Eyes">Occhi infossati</string>
- <string name="Sweep Back">Indietro</string>
- <string name="Sweep Forward">Avanti</string>
- <string name="Tall">Alto</string>
- <string name="Taper Back">Ravv. lat. posteriore</string>
- <string name="Taper Front">Ravv. lat. frontale</string>
- <string name="Thick Heels">Tacchi spessi</string>
- <string name="Thick Neck">Collo grosso</string>
- <string name="Thick Toe">Punta spessa</string>
- <string name="Thin">Sottili</string>
- <string name="Thin Eyebrows">Sopracciglia sottili</string>
- <string name="Thin Lips">Labbra sottili</string>
- <string name="Thin Nose">Naso sottile</string>
- <string name="Tight Chin">Mento stretto</string>
- <string name="Tight Cuffs">Fondo stretto</string>
- <string name="Tight Pants">Pantaloni attillati</string>
- <string name="Tight Shirt">Camicia attillata</string>
- <string name="Tight Skirt">Gonna attillata</string>
- <string name="Tight Sleeves">Maniche strette</string>
- <string name="Toe Shape">Forma della punta</string>
- <string name="Toe Thickness">Spessore della punta</string>
- <string name="Torso Length">Lunghezza del torace</string>
- <string name="Torso Muscles">Muscoli del torace</string>
- <string name="Torso Scrawny">Torso Scrawny</string>
- <string name="Unattached">Distaccato</string>
- <string name="Uncreased">Senza piega</string>
- <string name="Underbite">Denti inf. in fuori</string>
- <string name="Unnatural">Innaturale</string>
- <string name="Upper Bridge">Parte alta del setto</string>
- <string name="Upper Cheeks">Parte alta degli zigomi</string>
- <string name="Upper Chin Cleft">Fossetta sup. del mento</string>
- <string name="Upper Eyelid Fold">Piega palpebra sup.</string>
- <string name="Upturned">All'insù</string>
- <string name="Very Red">Molto rossi</string>
- <string name="Waist Height">Vita alta</string>
- <string name="Well-Fed">Pienotte</string>
- <string name="White Hair">Capelli bianchi</string>
- <string name="Wide">Largo</string>
- <string name="Wide Back">Dietro largo</string>
- <string name="Wide Front">Davanti largo</string>
- <string name="Wide Lips">Labbra larghe</string>
- <string name="Wild">Colorati</string>
- <string name="Wrinkles">Grinze</string>
- <string name="LocationCtrlAddLandmarkTooltip">Aggiungi ai miei punti di riferimento</string>
- <string name="LocationCtrlEditLandmarkTooltip">Modifica i miei punti di riferimento</string>
- <string name="LocationCtrlInfoBtnTooltip">Maggiori informazioni sulla posizione attuale</string>
- <string name="LocationCtrlComboBtnTooltip">La cronologia delle mie posizioni</string>
- <string name="LocationCtrlAdultIconTooltip">Regione con categoria adulti</string>
- <string name="LocationCtrlModerateIconTooltip">Regione con categoria moderata</string>
- <string name="LocationCtrlGeneralIconTooltip">Regione generale</string>
- <string name="LocationCtrlSeeAVsTooltip">Gli avatar in questo lotto non possono essere visti o sentiti da avatar all'esterno del lotto</string>
- <string name="LocationCtrlPathfindingDirtyTooltip">Gli oggetti che si muovono potrebbero non comportarsi correttamente in questa regione fino a quando non viene eseguito il rebake della regione.</string>
- <string name="LocationCtrlPathfindingDisabledTooltip">Il pathfinding dinamico non è attivato in questa regione.</string>
- <string name="UpdaterWindowTitle">Aggiornamento [APP_NAME]</string>
- <string name="UpdaterNowUpdating">Aggiornamento di [APP_NAME]...</string>
- <string name="UpdaterNowInstalling">Installazione di [APP_NAME]...</string>
- <string name="UpdaterUpdatingDescriptive">Il Viewer del programma [APP_NAME] si sta aggiornando all'ultima versione. Potrebbe volerci del tempo, attendi.</string>
- <string name="UpdaterProgressBarTextWithEllipses">Download dell'aggiornamento...</string>
- <string name="UpdaterProgressBarText">Download dell'aggiornamento</string>
- <string name="UpdaterFailDownloadTitle">Download dell'aggiornamento non riuscito</string>
- <string name="UpdaterFailUpdateDescriptive">Il programma [APP_NAME] ha riscontrato un'errore durante il tentativo di aggiornamento. Consigliamo di scaricare l'ultima versione direttamente da www.secondlife.com.</string>
- <string name="UpdaterFailInstallTitle">Installazione dell'aggiornamento non riuscita</string>
- <string name="UpdaterFailStartTitle">Errore nell'avvio del viewer</string>
- <string name="ItemsComingInTooFastFrom">[APP_NAME]: Oggetti in arrivo troppo velocemente da [FROM_NAME], anteprima automatica disattivata per [TIME] secondi</string>
- <string name="ItemsComingInTooFast">[APP_NAME]: Oggetti in arrivo troppo velocemente, anteprima automatica disattivata per [TIME] secondi</string>
- <string name="IM_logging_string">-- Registrazione messaggi instantanei abilitata --</string>
- <string name="IM_typing_start_string">[NAME] sta scrivendo...</string>
- <string name="Unnamed">(anonimo)</string>
- <string name="IM_moderated_chat_label">(Moderato: Voci disattivate di default)</string>
- <string name="IM_unavailable_text_label">La chat di testo non è disponibile per questa chiamata.</string>
- <string name="IM_muted_text_label">La chat di testo è stata disabilitata da un moderatore di gruppo.</string>
- <string name="IM_default_text_label">Clicca qui per inviare un messaggio instantaneo.</string>
- <string name="IM_to_label">A</string>
- <string name="IM_moderator_label">(Moderatore)</string>
- <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="OnlineStatus">Online</string>
- <string name="OfflineStatus">Offline</string>
- <string name="not_online_msg">Utente non online - il messaggio verrà memorizzato e inviato più tardi.</string>
- <string name="not_online_inventory">Utente non online - l'inventario è stato salvato</string>
- <string name="answered_call">Risposto alla chiamata</string>
- <string name="you_started_call">Hai iniziato una chiamata vocale</string>
- <string name="you_joined_call">Ti sei collegato alla chiamata in voce</string>
- <string name="you_auto_rejected_call-im">Hai rifiutato automaticamente la chiamata voce mentre era attivata la modalità 'Non disturbare'.</string>
- <string name="name_started_call">[NAME] ha iniziato una chiamata vocale</string>
- <string name="ringing-im">Collegamento alla chiamata vocale...</string>
- <string name="connected-im">Collegato, clicca Chiudi chiamata per agganciare</string>
- <string name="hang_up-im">Chiusa la chiamata</string>
- <string name="conference-title">Chat con più persone</string>
- <string name="conference-title-incoming">Chiamata in conferenza con [AGENT_NAME]</string>
- <string name="inventory_item_offered-im">Offerto oggetto di inventario &quot;[ITEM_NAME]&quot;</string>
- <string name="inventory_folder_offered-im">Offerta cartella di inventario &quot;[ITEM_NAME]&quot;</string>
+Se il messaggio persiste, contatta [SUPPORT_SITE].
+ </string>
+ <string name="5 O'Clock Shadow">
+ Barba leggera
+ </string>
+ <string name="All White">
+ Tutti bianchi
+ </string>
+ <string name="Anime Eyes">
+ Occhi grandi
+ </string>
+ <string name="Arced">
+ Arcuato
+ </string>
+ <string name="Arm Length">
+ Lunghezza braccia
+ </string>
+ <string name="Attached">
+ Attaccato
+ </string>
+ <string name="Attached Earlobes">
+ Lobi attaccati
+ </string>
+ <string name="Back Fringe">
+ Frangetta all'indietro
+ </string>
+ <string name="Baggy">
+ Larghi
+ </string>
+ <string name="Bangs">
+ Frange
+ </string>
+ <string name="Beady Eyes">
+ Occhi piccoli
+ </string>
+ <string name="Belly Size">
+ Punto vita
+ </string>
+ <string name="Big">
+ Grande
+ </string>
+ <string name="Big Butt">
+ Sedere grande
+ </string>
+ <string name="Big Hair Back">
+ Capigliatura grande: Indietro
+ </string>
+ <string name="Big Hair Front">
+ Capigliatura grande: anteriore
+ </string>
+ <string name="Big Hair Top">
+ Capigliatura grande: in alto
+ </string>
+ <string name="Big Head">
+ Grande testa
+ </string>
+ <string name="Big Pectorals">
+ Grandi pettorali
+ </string>
+ <string name="Big Spikes">
+ Capelli con punte
+ </string>
+ <string name="Black">
+ Nero
+ </string>
+ <string name="Blonde">
+ Biondo
+ </string>
+ <string name="Blonde Hair">
+ Capelli biondi
+ </string>
+ <string name="Blush">
+ Fard
+ </string>
+ <string name="Blush Color">
+ Colore fard
+ </string>
+ <string name="Blush Opacity">
+ Opacità fard
+ </string>
+ <string name="Body Definition">
+ Definizione muscolare
+ </string>
+ <string name="Body Fat">
+ Grasso corporeo
+ </string>
+ <string name="Body Freckles">
+ Lentiggini e nei
+ </string>
+ <string name="Body Thick">
+ Corpo più robusto
+ </string>
+ <string name="Body Thickness">
+ Robustezza del corpo
+ </string>
+ <string name="Body Thin">
+ Corpo più magro
+ </string>
+ <string name="Bow Legged">
+ Gambe arcuate
+ </string>
+ <string name="Breast Buoyancy">
+ Altezza del seno
+ </string>
+ <string name="Breast Cleavage">
+ Décolleté
+ </string>
+ <string name="Breast Size">
+ Grandezza del seno
+ </string>
+ <string name="Bridge Width">
+ Larghezza setto
+ </string>
+ <string name="Broad">
+ Largo
+ </string>
+ <string name="Brow Size">
+ Grandezza delle sopracciglia
+ </string>
+ <string name="Bug Eyes">
+ Occhi sporgenti
+ </string>
+ <string name="Bugged Eyes">
+ Occhi sporgenti
+ </string>
+ <string name="Bulbous">
+ Bulboso
+ </string>
+ <string name="Bulbous Nose">
+ Naso bulboso
+ </string>
+ <string name="Breast Physics Mass">
+ Massa seno
+ </string>
+ <string name="Breast Physics Smoothing">
+ Lisciatura seno
+ </string>
+ <string name="Breast Physics Gravity">
+ Gravità seno
+ </string>
+ <string name="Breast Physics Drag">
+ Resistenza seno
+ </string>
+ <string name="Breast Physics InOut Max Effect">
+ Massimo effetto
+ </string>
+ <string name="Breast Physics InOut Spring">
+ Elasticità
+ </string>
+ <string name="Breast Physics InOut Gain">
+ Guadagno
+ </string>
+ <string name="Breast Physics InOut Damping">
+ Attenuazione
+ </string>
+ <string name="Breast Physics UpDown Max Effect">
+ Massimo effetto
+ </string>
+ <string name="Breast Physics UpDown Spring">
+ Elasticità
+ </string>
+ <string name="Breast Physics UpDown Gain">
+ Guadagno
+ </string>
+ <string name="Breast Physics UpDown Damping">
+ Attenuazione
+ </string>
+ <string name="Breast Physics LeftRight Max Effect">
+ Massimo effetto
+ </string>
+ <string name="Breast Physics LeftRight Spring">
+ Elasticità
+ </string>
+ <string name="Breast Physics LeftRight Gain">
+ Guadagno
+ </string>
+ <string name="Breast Physics LeftRight Damping">
+ Attenuazione
+ </string>
+ <string name="Belly Physics Mass">
+ Massa pancia
+ </string>
+ <string name="Belly Physics Smoothing">
+ Lisciatura pancia
+ </string>
+ <string name="Belly Physics Gravity">
+ Gravità pancia
+ </string>
+ <string name="Belly Physics Drag">
+ Resistenza pancia
+ </string>
+ <string name="Belly Physics UpDown Max Effect">
+ Massimo effetto
+ </string>
+ <string name="Belly Physics UpDown Spring">
+ Elasticità
+ </string>
+ <string name="Belly Physics UpDown Gain">
+ Guadagno
+ </string>
+ <string name="Belly Physics UpDown Damping">
+ Attenuazione
+ </string>
+ <string name="Butt Physics Mass">
+ Massa natiche
+ </string>
+ <string name="Butt Physics Smoothing">
+ Lisciatura natiche
+ </string>
+ <string name="Butt Physics Gravity">
+ Gravità natiche
+ </string>
+ <string name="Butt Physics Drag">
+ Resistenza natiche
+ </string>
+ <string name="Butt Physics UpDown Max Effect">
+ Massimo effetto
+ </string>
+ <string name="Butt Physics UpDown Spring">
+ Elasticità
+ </string>
+ <string name="Butt Physics UpDown Gain">
+ Guadagno
+ </string>
+ <string name="Butt Physics UpDown Damping">
+ Attenuazione
+ </string>
+ <string name="Butt Physics LeftRight Max Effect">
+ Massimo effetto
+ </string>
+ <string name="Butt Physics LeftRight Spring">
+ Elasticità
+ </string>
+ <string name="Butt Physics LeftRight Gain">
+ Guadagno
+ </string>
+ <string name="Butt Physics LeftRight Damping">
+ Attenuazione
+ </string>
+ <string name="Bushy Eyebrows">
+ Sopracciglia cespugliose
+ </string>
+ <string name="Bushy Hair">
+ Capelli a cespuglio
+ </string>
+ <string name="Butt Size">
+ Grandezza del sedere
+ </string>
+ <string name="Butt Gravity">
+ Gravità natiche
+ </string>
+ <string name="bustle skirt">
+ Crinolina
+ </string>
+ <string name="no bustle">
+ Nessuna crinolina
+ </string>
+ <string name="more bustle">
+ Più crinolina
+ </string>
+ <string name="Chaplin">
+ Baffetti
+ </string>
+ <string name="Cheek Bones">
+ Zigomi
+ </string>
+ <string name="Chest Size">
+ Ampiezza del torace
+ </string>
+ <string name="Chin Angle">
+ Angolo del mento
+ </string>
+ <string name="Chin Cleft">
+ Fossetta sul mento
+ </string>
+ <string name="Chin Curtains">
+ Barba sottomento
+ </string>
+ <string name="Chin Depth">
+ Profondità mento
+ </string>
+ <string name="Chin Heavy">
+ Mento forte
+ </string>
+ <string name="Chin In">
+ Mento in dentro
+ </string>
+ <string name="Chin Out">
+ Mento sporgente
+ </string>
+ <string name="Chin-Neck">
+ Mento-collo
+ </string>
+ <string name="Clear">
+ Trasparente
+ </string>
+ <string name="Cleft">
+ Fossetta
+ </string>
+ <string name="Close Set Eyes">
+ Occhi ravvicinati
+ </string>
+ <string name="Closed">
+ Chiusa
+ </string>
+ <string name="Closed Back">
+ Chiuso dietro
+ </string>
+ <string name="Closed Front">
+ Chiuso davanti
+ </string>
+ <string name="Closed Left">
+ Chiuso sinistra
+ </string>
+ <string name="Closed Right">
+ Chiuso destra
+ </string>
+ <string name="Coin Purse">
+ Meno pronunciati
+ </string>
+ <string name="Collar Back">
+ Colletto posteriore
+ </string>
+ <string name="Collar Front">
+ Colletto anteriore
+ </string>
+ <string name="Corner Down">
+ Angolo all'ingiù
+ </string>
+ <string name="Corner Up">
+ Angolo all'insù
+ </string>
+ <string name="Creased">
+ Piega
+ </string>
+ <string name="Crooked Nose">
+ Naso storto
+ </string>
+ <string name="Cuff Flare">
+ Svasato con risvolto
+ </string>
+ <string name="Dark">
+ Scuro
+ </string>
+ <string name="Dark Green">
+ Verde scuro
+ </string>
+ <string name="Darker">
+ Più scuro
+ </string>
+ <string name="Deep">
+ Profondo
+ </string>
+ <string name="Default Heels">
+ Tacchi standard
+ </string>
+ <string name="Dense">
+ Folti
+ </string>
+ <string name="Double Chin">
+ Doppio mento
+ </string>
+ <string name="Downturned">
+ All'ingiù
+ </string>
+ <string name="Duffle Bag">
+ Più pronunciati
+ </string>
+ <string name="Ear Angle">
+ Angolo orecchie
+ </string>
+ <string name="Ear Size">
+ Grandezza orecchie
+ </string>
+ <string name="Ear Tips">
+ Estremità orecchie
+ </string>
+ <string name="Egg Head">
+ Ovalizzazione testa
+ </string>
+ <string name="Eye Bags">
+ Occhiaie
+ </string>
+ <string name="Eye Color">
+ Colore degli occhi
+ </string>
+ <string name="Eye Depth">
+ Profondità degli occhi
+ </string>
+ <string name="Eye Lightness">
+ Luminosità degli occhi
+ </string>
+ <string name="Eye Opening">
+ Apertura degli occhi
+ </string>
+ <string name="Eye Pop">
+ Prominenza degli occhi
+ </string>
+ <string name="Eye Size">
+ Grandezza occhi
+ </string>
+ <string name="Eye Spacing">
+ Distanza occhi
+ </string>
+ <string name="Eyebrow Arc">
+ Arco delle sopracciglia
+ </string>
+ <string name="Eyebrow Density">
+ Densità delle sopracciglia
+ </string>
+ <string name="Eyebrow Height">
+ Altezza delle sopracciglia
+ </string>
+ <string name="Eyebrow Points">
+ Sopracciglia appuntite
+ </string>
+ <string name="Eyebrow Size">
+ Grandezza sopracciglia
+ </string>
+ <string name="Eyelash Length">
+ Lunghezza delle ciglia
+ </string>
+ <string name="Eyeliner">
+ Eyeliner
+ </string>
+ <string name="Eyeliner Color">
+ Colore dell'eyeliner
+ </string>
+ <string name="Eyes Bugged">
+ Occhi sporgenti
+ </string>
+ <string name="Face Shear">
+ Taglio del viso
+ </string>
+ <string name="Facial Definition">
+ Definizione del viso
+ </string>
+ <string name="Far Set Eyes">
+ Occhi distanti
+ </string>
+ <string name="Fat Lips">
+ Labbra carnose
+ </string>
+ <string name="Female">
+ Femmina
+ </string>
+ <string name="Fingerless">
+ Senza dita
+ </string>
+ <string name="Fingers">
+ Dita
+ </string>
+ <string name="Flared Cuffs">
+ Risvolti svasati
+ </string>
+ <string name="Flat">
+ Piatto
+ </string>
+ <string name="Flat Butt">
+ Sedere piatto
+ </string>
+ <string name="Flat Head">
+ Testa piatta
+ </string>
+ <string name="Flat Toe">
+ Punta piatta
+ </string>
+ <string name="Foot Size">
+ Misura piede
+ </string>
+ <string name="Forehead Angle">
+ Angolo della fronte
+ </string>
+ <string name="Forehead Heavy">
+ Fronte sporgente
+ </string>
+ <string name="Freckles">
+ Lentiggini
+ </string>
+ <string name="Front Fringe">
+ Frangetta
+ </string>
+ <string name="Full Back">
+ Dietro gonfi
+ </string>
+ <string name="Full Eyeliner">
+ Eyeliner marcato
+ </string>
+ <string name="Full Front">
+ Anteriore gonfio
+ </string>
+ <string name="Full Hair Sides">
+ Lati capelli gonfi
+ </string>
+ <string name="Full Sides">
+ Lati gonfi
+ </string>
+ <string name="Glossy">
+ Lucido
+ </string>
+ <string name="Glove Fingers">
+ Dita con guanti
+ </string>
+ <string name="Glove Length">
+ Lunghezza guanti
+ </string>
+ <string name="Hair">
+ Capigliature
+ </string>
+ <string name="Hair Back">
+ Capelli: Indietro
+ </string>
+ <string name="Hair Front">
+ Capelli: anteriore
+ </string>
+ <string name="Hair Sides">
+ Capelli: lati
+ </string>
+ <string name="Hair Sweep">
+ Direzione capigliatura
+ </string>
+ <string name="Hair Thickess">
+ Foltezza
+ </string>
+ <string name="Hair Thickness">
+ Foltezza
+ </string>
+ <string name="Hair Tilt">
+ Inclinazione
+ </string>
+ <string name="Hair Tilted Left">
+ Verso sinistra
+ </string>
+ <string name="Hair Tilted Right">
+ Verso destra
+ </string>
+ <string name="Hair Volume">
+ Capelli: Volume
+ </string>
+ <string name="Hand Size">
+ Grandezza mani
+ </string>
+ <string name="Handlebars">
+ Baffi a manubrio
+ </string>
+ <string name="Head Length">
+ Lunghezza testa
+ </string>
+ <string name="Head Shape">
+ Forma della testa
+ </string>
+ <string name="Head Size">
+ Grandezza della testa
+ </string>
+ <string name="Head Stretch">
+ Allungamento testa
+ </string>
+ <string name="Heel Height">
+ Altezza tacchi
+ </string>
+ <string name="Heel Shape">
+ Forma tacchi
+ </string>
+ <string name="Height">
+ Altezza
+ </string>
+ <string name="High">
+ Alto
+ </string>
+ <string name="High Heels">
+ Tacchi alti
+ </string>
+ <string name="High Jaw">
+ Mandibola alta
+ </string>
+ <string name="High Platforms">
+ Alta
+ </string>
+ <string name="High and Tight">
+ Alto e stretto
+ </string>
+ <string name="Higher">
+ Più alto
+ </string>
+ <string name="Hip Length">
+ Altezza bacino
+ </string>
+ <string name="Hip Width">
+ Larghezza bacino
+ </string>
+ <string name="Hover">
+ Muovi sopra
+ </string>
+ <string name="In">
+ Dentro
+ </string>
+ <string name="In Shdw Color">
+ Colore ombretto interno
+ </string>
+ <string name="In Shdw Opacity">
+ Opacità ombretto interno
+ </string>
+ <string name="Inner Eye Corner">
+ Angolo interno
+ </string>
+ <string name="Inner Eye Shadow">
+ Ombretto interno
+ </string>
+ <string name="Inner Shadow">
+ Ombretto interno
+ </string>
+ <string name="Jacket Length">
+ Lunghezza giacca
+ </string>
+ <string name="Jacket Wrinkles">
+ Grinze della giacca
+ </string>
+ <string name="Jaw Angle">
+ Angolo mandibola
+ </string>
+ <string name="Jaw Jut">
+ Prognatismo mento
+ </string>
+ <string name="Jaw Shape">
+ Forma del mento
+ </string>
+ <string name="Join">
+ Iscriviti
+ </string>
+ <string name="Jowls">
+ Guance
+ </string>
+ <string name="Knee Angle">
+ Angolo ginocchia
+ </string>
+ <string name="Knock Kneed">
+ Gambe ad X
+ </string>
+ <string name="Large">
+ Grande
+ </string>
+ <string name="Large Hands">
+ Mani grandi
+ </string>
+ <string name="Left Part">
+ Riga a sinistra
+ </string>
+ <string name="Leg Length">
+ Lunghezza gambe
+ </string>
+ <string name="Leg Muscles">
+ Muscoli gambe
+ </string>
+ <string name="Less">
+ Meno
+ </string>
+ <string name="Less Body Fat">
+ Meno grasso corporeo
+ </string>
+ <string name="Less Curtains">
+ Meno
+ </string>
+ <string name="Less Freckles">
+ Meno lentiggini
+ </string>
+ <string name="Less Full">
+ Meno piene
+ </string>
+ <string name="Less Gravity">
+ Più alto
+ </string>
+ <string name="Less Love">
+ Meno maniglie
+ </string>
+ <string name="Less Muscles">
+ Meno muscoli
+ </string>
+ <string name="Less Muscular">
+ Meno muscolari
+ </string>
+ <string name="Less Rosy">
+ Meno rosato
+ </string>
+ <string name="Less Round">
+ Meno rotondo
+ </string>
+ <string name="Less Saddle">
+ Meno a sella
+ </string>
+ <string name="Less Square">
+ Meno quadrato
+ </string>
+ <string name="Less Volume">
+ Meno volume
+ </string>
+ <string name="Less soul">
+ Meno
+ </string>
+ <string name="Lighter">
+ Più leggero
+ </string>
+ <string name="Lip Cleft">
+ Distanza fossetta labbro
+ </string>
+ <string name="Lip Cleft Depth">
+ Prof. fossetta labbro
+ </string>
+ <string name="Lip Fullness">
+ Volume labbra
+ </string>
+ <string name="Lip Pinkness">
+ Tonalità rosa labbra
+ </string>
+ <string name="Lip Ratio">
+ Proporzione labbra
+ </string>
+ <string name="Lip Thickness">
+ Carnosità labbra
+ </string>
+ <string name="Lip Width">
+ Larghezza labbra
+ </string>
+ <string name="Lipgloss">
+ Lipgloss
+ </string>
+ <string name="Lipstick">
+ Rossetto
+ </string>
+ <string name="Lipstick Color">
+ Colore rossetto
+ </string>
+ <string name="Long">
+ Lungo
+ </string>
+ <string name="Long Head">
+ Testa lunga
+ </string>
+ <string name="Long Hips">
+ Bacino alto
+ </string>
+ <string name="Long Legs">
+ Gambe lunghe
+ </string>
+ <string name="Long Neck">
+ Collo lungo
+ </string>
+ <string name="Long Pigtails">
+ Codini lunghi
+ </string>
+ <string name="Long Ponytail">
+ Codino lungo
+ </string>
+ <string name="Long Torso">
+ Torace lungo
+ </string>
+ <string name="Long arms">
+ Braccia lunghe
+ </string>
+ <string name="Loose Pants">
+ Pantaloni ampi
+ </string>
+ <string name="Loose Shirt">
+ Camicia ampia
+ </string>
+ <string name="Loose Sleeves">
+ Maniche non attillate
+ </string>
+ <string name="Love Handles">
+ Maniglie dell'amore
+ </string>
+ <string name="Low">
+ Basso
+ </string>
+ <string name="Low Heels">
+ Tacchi bassi
+ </string>
+ <string name="Low Jaw">
+ Mandibola bassa
+ </string>
+ <string name="Low Platforms">
+ Bassa
+ </string>
+ <string name="Low and Loose">
+ Basso e ampio
+ </string>
+ <string name="Lower">
+ Più basso
+ </string>
+ <string name="Lower Bridge">
+ Parte bassa del setto
+ </string>
+ <string name="Lower Cheeks">
+ Guance inferiori
+ </string>
+ <string name="Male">
+ Maschio
+ </string>
+ <string name="Middle Part">
+ Riga nel mezzo
+ </string>
+ <string name="More">
+ Altro
+ </string>
+ <string name="More Blush">
+ Più fard
+ </string>
+ <string name="More Body Fat">
+ Più grasso corporeo
+ </string>
+ <string name="More Curtains">
+ Più
+ </string>
+ <string name="More Eyeshadow">
+ Più ombretto
+ </string>
+ <string name="More Freckles">
+ Più lentiggini
+ </string>
+ <string name="More Full">
+ Più piene
+ </string>
+ <string name="More Gravity">
+ Più calato
+ </string>
+ <string name="More Lipstick">
+ Più rossetto
+ </string>
+ <string name="More Love">
+ Più maniglie
+ </string>
+ <string name="More Lower Lip">
+ Labbro inf. pronunciato
+ </string>
+ <string name="More Muscles">
+ Più muscoli
+ </string>
+ <string name="More Muscular">
+ Più muscolatura
+ </string>
+ <string name="More Rosy">
+ Più rosato
+ </string>
+ <string name="More Round">
+ Più rotondo
+ </string>
+ <string name="More Saddle">
+ Più a sella
+ </string>
+ <string name="More Sloped">
+ Più orizzontale
+ </string>
+ <string name="More Square">
+ Più quadrato
+ </string>
+ <string name="More Upper Lip">
+ Labbro sup. pronunciato
+ </string>
+ <string name="More Vertical">
+ Più verticale
+ </string>
+ <string name="More Volume">
+ Più volume
+ </string>
+ <string name="More soul">
+ Più
+ </string>
+ <string name="Moustache">
+ Baffi
+ </string>
+ <string name="Mouth Corner">
+ Angolo della bocca
+ </string>
+ <string name="Mouth Position">
+ Posizione della bocca
+ </string>
+ <string name="Mowhawk">
+ Moicana
+ </string>
+ <string name="Muscular">
+ Muscolatura
+ </string>
+ <string name="Mutton Chops">
+ Basette lunghe
+ </string>
+ <string name="Nail Polish">
+ Smalto
+ </string>
+ <string name="Nail Polish Color">
+ Colore smalto
+ </string>
+ <string name="Narrow">
+ Socchiusi
+ </string>
+ <string name="Narrow Back">
+ Laterali post. vicini
+ </string>
+ <string name="Narrow Front">
+ Laterali ant. vicini
+ </string>
+ <string name="Narrow Lips">
+ Labbra strette
+ </string>
+ <string name="Natural">
+ Naturale
+ </string>
+ <string name="Neck Length">
+ Lunghezza del collo
+ </string>
+ <string name="Neck Thickness">
+ Grandezza del collo
+ </string>
+ <string name="No Blush">
+ Senza fard
+ </string>
+ <string name="No Eyeliner">
+ Senza eyeliner
+ </string>
+ <string name="No Eyeshadow">
+ Senza ombretto
+ </string>
+ <string name="No Lipgloss">
+ Senza lipgloss
+ </string>
+ <string name="No Lipstick">
+ Senza rossetto
+ </string>
+ <string name="No Part">
+ Senza riga
+ </string>
+ <string name="No Polish">
+ Senza smalto
+ </string>
+ <string name="No Red">
+ Senza rosso
+ </string>
+ <string name="No Spikes">
+ Senza punte
+ </string>
+ <string name="No White">
+ Senza bianco
+ </string>
+ <string name="No Wrinkles">
+ Senza pieghe
+ </string>
+ <string name="Normal Lower">
+ Inferiore normale
+ </string>
+ <string name="Normal Upper">
+ Superiore normale
+ </string>
+ <string name="Nose Left">
+ Naso a sinistra
+ </string>
+ <string name="Nose Right">
+ Naso a destra
+ </string>
+ <string name="Nose Size">
+ Grandezza naso
+ </string>
+ <string name="Nose Thickness">
+ Spessore naso
+ </string>
+ <string name="Nose Tip Angle">
+ Angolo punta naso
+ </string>
+ <string name="Nose Tip Shape">
+ Forma punta naso
+ </string>
+ <string name="Nose Width">
+ Larghezza naso
+ </string>
+ <string name="Nostril Division">
+ Divisione narici
+ </string>
+ <string name="Nostril Width">
+ Larghezza narici
+ </string>
+ <string name="Opaque">
+ Opaco
+ </string>
+ <string name="Open">
+ Apri
+ </string>
+ <string name="Open Back">
+ Retro aperto
+ </string>
+ <string name="Open Front">
+ Davanti aperto
+ </string>
+ <string name="Open Left">
+ Lato sin. aperto
+ </string>
+ <string name="Open Right">
+ Lato des. aperto
+ </string>
+ <string name="Orange">
+ Arancio
+ </string>
+ <string name="Out">
+ Fuori
+ </string>
+ <string name="Out Shdw Color">
+ Colore ombretto esterno
+ </string>
+ <string name="Out Shdw Opacity">
+ Opacità ombretto esterno
+ </string>
+ <string name="Outer Eye Corner">
+ Angolo esterno occhio
+ </string>
+ <string name="Outer Eye Shadow">
+ Ombretto esterno
+ </string>
+ <string name="Outer Shadow">
+ Ombreggiatura esterna
+ </string>
+ <string name="Overbite">
+ Denti sup. in fuori
+ </string>
+ <string name="Package">
+ Genitali
+ </string>
+ <string name="Painted Nails">
+ Unghie smaltate
+ </string>
+ <string name="Pale">
+ Pallido
+ </string>
+ <string name="Pants Crotch">
+ Cavallo
+ </string>
+ <string name="Pants Fit">
+ Vestibilità pantaloni
+ </string>
+ <string name="Pants Length">
+ Lunghezza pantaloni
+ </string>
+ <string name="Pants Waist">
+ Taglia pantalone
+ </string>
+ <string name="Pants Wrinkles">
+ Pantaloni con le grinze
+ </string>
+ <string name="Part">
+ Con riga
+ </string>
+ <string name="Part Bangs">
+ Frangetta divisa
+ </string>
+ <string name="Pectorals">
+ Pettorali
+ </string>
+ <string name="Pigment">
+ Pigmento
+ </string>
+ <string name="Pigtails">
+ Codini
+ </string>
+ <string name="Pink">
+ Rosa
+ </string>
+ <string name="Pinker">
+ Più rosato
+ </string>
+ <string name="Platform Height">
+ Altezza pianta
+ </string>
+ <string name="Platform Width">
+ Larghezza pianta
+ </string>
+ <string name="Pointy">
+ Appuntito
+ </string>
+ <string name="Pointy Heels">
+ Tacchi a spillo
+ </string>
+ <string name="Ponytail">
+ Codino
+ </string>
+ <string name="Poofy Skirt">
+ Gonna gonfia
+ </string>
+ <string name="Pop Left Eye">
+ Sinistro più aperto
+ </string>
+ <string name="Pop Right Eye">
+ Destro più aperto
+ </string>
+ <string name="Puffy">
+ Paffute
+ </string>
+ <string name="Puffy Eyelids">
+ Palpebre gonfie
+ </string>
+ <string name="Rainbow Color">
+ Tonalità
+ </string>
+ <string name="Red Hair">
+ Presenza di rosso nei capelli
+ </string>
+ <string name="Regular">
+ Normale
+ </string>
+ <string name="Right Part">
+ Riga a destra
+ </string>
+ <string name="Rosy Complexion">
+ Incarnato
+ </string>
+ <string name="Round">
+ Rotondo
+ </string>
+ <string name="Ruddiness">
+ Rossore
+ </string>
+ <string name="Ruddy">
+ Rosse
+ </string>
+ <string name="Rumpled Hair">
+ Capelli mossi
+ </string>
+ <string name="Saddle Bags">
+ Rotondità fianchi
+ </string>
+ <string name="Scrawny Leg">
+ Gambe magre
+ </string>
+ <string name="Separate">
+ Separati
+ </string>
+ <string name="Shallow">
+ Meno pronunciato
+ </string>
+ <string name="Shear Back">
+ Taglio posteriore
+ </string>
+ <string name="Shear Face">
+ Taglio del viso
+ </string>
+ <string name="Shear Front">
+ Taglio anteriore
+ </string>
+ <string name="Shear Left Up">
+ Distorto a sinistra
+ </string>
+ <string name="Shear Right Up">
+ Distorto a destra
+ </string>
+ <string name="Sheared Back">
+ Taglio verso dietro
+ </string>
+ <string name="Sheared Front">
+ Taglio verso davanti
+ </string>
+ <string name="Shift Left">
+ A sinistra
+ </string>
+ <string name="Shift Mouth">
+ Spostamento bocca
+ </string>
+ <string name="Shift Right">
+ A destra
+ </string>
+ <string name="Shirt Bottom">
+ Parte inferiore camicia
+ </string>
+ <string name="Shirt Fit">
+ Vestibilità camicia
+ </string>
+ <string name="Shirt Wrinkles">
+ Camicia con le grinze
+ </string>
+ <string name="Shoe Height">
+ Altezza scarpe
+ </string>
+ <string name="Short">
+ Basso
+ </string>
+ <string name="Short Arms">
+ Braccia corte
+ </string>
+ <string name="Short Legs">
+ Gambe corte
+ </string>
+ <string name="Short Neck">
+ Collo corto
+ </string>
+ <string name="Short Pigtails">
+ Codini corti
+ </string>
+ <string name="Short Ponytail">
+ Codino corto
+ </string>
+ <string name="Short Sideburns">
+ Basette corte
+ </string>
+ <string name="Short Torso">
+ Torace corto
+ </string>
+ <string name="Short hips">
+ Bacino corto
+ </string>
+ <string name="Shoulders">
+ Spalle
+ </string>
+ <string name="Side Fringe">
+ Ciuffi laterali
+ </string>
+ <string name="Sideburns">
+ Basette
+ </string>
+ <string name="Sides Hair">
+ Capigliatura di lato
+ </string>
+ <string name="Sides Hair Down">
+ Capigliatura di lato sciolta
+ </string>
+ <string name="Sides Hair Up">
+ Capigliatura di lato raccolta
+ </string>
+ <string name="Skinny Neck">
+ Collo fino
+ </string>
+ <string name="Skirt Fit">
+ Vestibilità gonna
+ </string>
+ <string name="Skirt Length">
+ Lunghezza gonna
+ </string>
+ <string name="Slanted Forehead">
+ Fronte inclinata
+ </string>
+ <string name="Sleeve Length">
+ Lunghezza maniche
+ </string>
+ <string name="Sleeve Looseness">
+ Morbidezza maniche
+ </string>
+ <string name="Slit Back">
+ Spacco: Indietro
+ </string>
+ <string name="Slit Front">
+ Spacco: anteriore
+ </string>
+ <string name="Slit Left">
+ Spacco: Sinistra
+ </string>
+ <string name="Slit Right">
+ Spacco: Destra
+ </string>
+ <string name="Small">
+ Piccola
+ </string>
+ <string name="Small Hands">
+ Mani piccole
+ </string>
+ <string name="Small Head">
+ Testa piccola
+ </string>
+ <string name="Smooth">
+ Liscio
+ </string>
+ <string name="Smooth Hair">
+ Capelli lisci
+ </string>
+ <string name="Socks Length">
+ Lunghezza calze
+ </string>
+ <string name="Soulpatch">
+ Pizzetto labbro inferiore
+ </string>
+ <string name="Sparse">
+ Piu rade
+ </string>
+ <string name="Spiked Hair">
+ Capelli a punta
+ </string>
+ <string name="Square">
+ Quadrato
+ </string>
+ <string name="Square Toe">
+ Punta quadrata
+ </string>
+ <string name="Squash Head">
+ Testa schiacciata
+ </string>
+ <string name="Stretch Head">
+ Testa allungata
+ </string>
+ <string name="Sunken">
+ Scarne
+ </string>
+ <string name="Sunken Chest">
+ Senza pettorali
+ </string>
+ <string name="Sunken Eyes">
+ Occhi infossati
+ </string>
+ <string name="Sweep Back">
+ Indietro
+ </string>
+ <string name="Sweep Forward">
+ Avanti
+ </string>
+ <string name="Tall">
+ Alto
+ </string>
+ <string name="Taper Back">
+ Ravv. lat. posteriore
+ </string>
+ <string name="Taper Front">
+ Ravv. lat. frontale
+ </string>
+ <string name="Thick Heels">
+ Tacchi spessi
+ </string>
+ <string name="Thick Neck">
+ Collo grosso
+ </string>
+ <string name="Thick Toe">
+ Punta spessa
+ </string>
+ <string name="Thin">
+ Sottili
+ </string>
+ <string name="Thin Eyebrows">
+ Sopracciglia sottili
+ </string>
+ <string name="Thin Lips">
+ Labbra sottili
+ </string>
+ <string name="Thin Nose">
+ Naso sottile
+ </string>
+ <string name="Tight Chin">
+ Mento stretto
+ </string>
+ <string name="Tight Cuffs">
+ Fondo stretto
+ </string>
+ <string name="Tight Pants">
+ Pantaloni attillati
+ </string>
+ <string name="Tight Shirt">
+ Camicia attillata
+ </string>
+ <string name="Tight Skirt">
+ Gonna attillata
+ </string>
+ <string name="Tight Sleeves">
+ Maniche strette
+ </string>
+ <string name="Toe Shape">
+ Forma della punta
+ </string>
+ <string name="Toe Thickness">
+ Spessore della punta
+ </string>
+ <string name="Torso Length">
+ Lunghezza del torace
+ </string>
+ <string name="Torso Muscles">
+ Muscoli del torace
+ </string>
+ <string name="Torso Scrawny">
+ Torso Scrawny
+ </string>
+ <string name="Unattached">
+ Distaccato
+ </string>
+ <string name="Uncreased">
+ Senza piega
+ </string>
+ <string name="Underbite">
+ Denti inf. in fuori
+ </string>
+ <string name="Unnatural">
+ Innaturale
+ </string>
+ <string name="Upper Bridge">
+ Parte alta del setto
+ </string>
+ <string name="Upper Cheeks">
+ Parte alta degli zigomi
+ </string>
+ <string name="Upper Chin Cleft">
+ Fossetta sup. del mento
+ </string>
+ <string name="Upper Eyelid Fold">
+ Piega palpebra sup.
+ </string>
+ <string name="Upturned">
+ All'insù
+ </string>
+ <string name="Very Red">
+ Molto rossi
+ </string>
+ <string name="Waist Height">
+ Vita alta
+ </string>
+ <string name="Well-Fed">
+ Pienotte
+ </string>
+ <string name="White Hair">
+ Capelli bianchi
+ </string>
+ <string name="Wide">
+ Largo
+ </string>
+ <string name="Wide Back">
+ Dietro largo
+ </string>
+ <string name="Wide Front">
+ Davanti largo
+ </string>
+ <string name="Wide Lips">
+ Labbra larghe
+ </string>
+ <string name="Wild">
+ Colorati
+ </string>
+ <string name="Wrinkles">
+ Grinze
+ </string>
+ <string name="LocationCtrlAddLandmarkTooltip">
+ Aggiungi ai miei punti di riferimento
+ </string>
+ <string name="LocationCtrlEditLandmarkTooltip">
+ Modifica i miei punti di riferimento
+ </string>
+ <string name="LocationCtrlInfoBtnTooltip">
+ Maggiori informazioni sulla posizione attuale
+ </string>
+ <string name="LocationCtrlComboBtnTooltip">
+ La cronologia delle mie posizioni
+ </string>
+ <string name="LocationCtrlAdultIconTooltip">
+ Regione con categoria adulti
+ </string>
+ <string name="LocationCtrlModerateIconTooltip">
+ Regione con categoria moderata
+ </string>
+ <string name="LocationCtrlGeneralIconTooltip">
+ Regione generale
+ </string>
+ <string name="LocationCtrlSeeAVsTooltip">
+ Gli avatar in questo lotto non possono essere visti o sentiti da avatar all'esterno del lotto
+ </string>
+ <string name="LocationCtrlPathfindingDirtyTooltip">
+ Gli oggetti che si muovono potrebbero non comportarsi correttamente in questa regione fino a quando non viene eseguito il rebake della regione.
+ </string>
+ <string name="LocationCtrlPathfindingDisabledTooltip">
+ Il pathfinding dinamico non è attivato in questa regione.
+ </string>
+ <string name="UpdaterWindowTitle">
+ Aggiornamento [APP_NAME]
+ </string>
+ <string name="UpdaterNowUpdating">
+ Aggiornamento di [APP_NAME]...
+ </string>
+ <string name="UpdaterNowInstalling">
+ Installazione di [APP_NAME]...
+ </string>
+ <string name="UpdaterUpdatingDescriptive">
+ Il Viewer del programma [APP_NAME] si sta aggiornando all'ultima versione. Potrebbe volerci del tempo, attendi.
+ </string>
+ <string name="UpdaterProgressBarTextWithEllipses">
+ Download dell'aggiornamento...
+ </string>
+ <string name="UpdaterProgressBarText">
+ Download dell'aggiornamento
+ </string>
+ <string name="UpdaterFailDownloadTitle">
+ Download dell'aggiornamento non riuscito
+ </string>
+ <string name="UpdaterFailUpdateDescriptive">
+ Il programma [APP_NAME] ha riscontrato un'errore durante il tentativo di aggiornamento. Consigliamo di scaricare l'ultima versione direttamente da www.secondlife.com.
+ </string>
+ <string name="UpdaterFailInstallTitle">
+ Installazione dell'aggiornamento non riuscita
+ </string>
+ <string name="UpdaterFailStartTitle">
+ Errore nell'avvio del viewer
+ </string>
+ <string name="ItemsComingInTooFastFrom">
+ [APP_NAME]: Oggetti in arrivo troppo velocemente da [FROM_NAME], anteprima automatica disattivata per [TIME] secondi
+ </string>
+ <string name="ItemsComingInTooFast">
+ [APP_NAME]: Oggetti in arrivo troppo velocemente, anteprima automatica disattivata per [TIME] secondi
+ </string>
+ <string name="IM_logging_string">
+ -- Registrazione messaggi instantanei abilitata --
+ </string>
+ <string name="IM_typing_start_string">
+ [NAME] sta scrivendo...
+ </string>
+ <string name="Unnamed">
+ (anonimo)
+ </string>
+ <string name="IM_moderated_chat_label">
+ (Moderato: Voci disattivate di default)
+ </string>
+ <string name="IM_unavailable_text_label">
+ La chat di testo non è disponibile per questa chiamata.
+ </string>
+ <string name="IM_muted_text_label">
+ La chat di testo è stata disabilitata da un moderatore di gruppo.
+ </string>
+ <string name="IM_default_text_label">
+ Clicca qui per inviare un messaggio instantaneo.
+ </string>
+ <string name="IM_to_label">
+ A
+ </string>
+ <string name="IM_moderator_label">
+ (Moderatore)
+ </string>
+ <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="OnlineStatus">
+ Online
+ </string>
+ <string name="OfflineStatus">
+ Offline
+ </string>
+ <string name="not_online_msg">
+ Utente non online - il messaggio verrà memorizzato e inviato più tardi.
+ </string>
+ <string name="not_online_inventory">
+ Utente non online - l'inventario è stato salvato
+ </string>
+ <string name="answered_call">
+ Risposto alla chiamata
+ </string>
+ <string name="you_started_call">
+ Hai iniziato una chiamata vocale
+ </string>
+ <string name="you_joined_call">
+ Ti sei collegato alla chiamata in voce
+ </string>
+ <string name="you_auto_rejected_call-im">
+ Hai rifiutato automaticamente la chiamata voce mentre era attivata la modalità 'Non disturbare'.
+ </string>
+ <string name="name_started_call">
+ [NAME] ha iniziato una chiamata vocale
+ </string>
+ <string name="ringing-im">
+ Collegamento alla chiamata vocale...
+ </string>
+ <string name="connected-im">
+ Collegato, clicca Chiudi chiamata per agganciare
+ </string>
+ <string name="hang_up-im">
+ Chiusa la chiamata
+ </string>
+ <string name="conference-title">
+ Chat con più persone
+ </string>
+ <string name="conference-title-incoming">
+ Chiamata in conferenza con [AGENT_NAME]
+ </string>
+ <string name="inventory_item_offered-im">
+ Offerto oggetto di inventario "[ITEM_NAME]"
+ </string>
+ <string name="inventory_folder_offered-im">
+ Offerta cartella di inventario "[ITEM_NAME]"
+ </string>
<string name="bot_warning">
-Stai parlando con un bot, [NAME]. Non condividere informazioni personali.
+ Stai parlando con un bot, [NAME]. Non condividere informazioni personali.
Scopri di più su https://second.life/scripted-agents.
</string>
- <string name="facebook_post_success">Hai pubblicato su Facebook.</string>
- <string name="flickr_post_success">Hai pubblicato su Flickr.</string>
- <string name="twitter_post_success">Hai pubblicato su Twitter.</string>
- <string name="no_session_message">(La sessione IM non esiste)</string>
- <string name="only_user_message">Sei l'unico utente di questa sessione.</string>
- <string name="offline_message">[NAME] è offline</string>
- <string name="invite_message">Clicca il tasto [BUTTON NAME] per accettare/connetterti a questa voice chat.</string>
- <string name="muted_message">Hai bloccato questo residente. Quando gli invii un messaggio, verrà automaticamente sbloccato.</string>
- <string name="generic">Errore nella richiesta, riprova più tardi.</string>
- <string name="generic_request_error">Errore durante la richiesta, riprova più tardi.</string>
- <string name="insufficient_perms_error">Non hai sufficienti permessi.</string>
- <string name="session_does_not_exist_error">Questa sessione non esiste più</string>
- <string name="no_ability_error">Non hai questa abilitazione.</string>
- <string name="no_ability">Non hai questa abilitazione.</string>
- <string name="not_a_mod_error">Non sei un moderatore.</string>
- <string name="muted">Il moderatore del gruppo ha disattivato la tua chat di testo.</string>
- <string name="muted_error">Un moderatore di gruppo ti ha disabilitato dalla chat di testo.</string>
- <string name="add_session_event">Impossibile aggiungere utenti alla chat con [RECIPIENT].</string>
- <string name="message">Impossibile spedire il tuo messaggio nella sessione chat con [RECIPIENT].</string>
- <string name="message_session_event">Impossibile inviare il messaggio nella chat con [RECIPIENT].</string>
- <string name="mute">Errore durante la moderazione.</string>
- <string name="removed">Sei stato rimosso dal gruppo.</string>
- <string name="removed_from_group">Sei stato espulso dal gruppo.</string>
- <string name="close_on_no_ability">Non hai più le abilitazioni per rimanere nella sessione chat.</string>
- <string name="unread_chat_single">[SOURCES] ha detto qualcosa di nuovo</string>
- <string name="unread_chat_multiple">[SOURCES] ha detto qualcosa di nuovo</string>
- <string name="session_initialization_timed_out_error">Sessione di inizializzazione scaduta</string>
- <string name="Home position set.">Posizione di base impostata.</string>
- <string name="voice_morphing_url">https://secondlife.com/destination/voice-island</string>
- <string name="premium_voice_morphing_url">https://secondlife.com/destination/voice-morphing-premium</string>
- <string name="paid_you_ldollars">[NAME] ti ha inviato un pagamento di L$[AMOUNT] [REASON].</string>
- <string name="paid_you_ldollars_gift">[NAME] ti ha inviato un pagamento di L$ [AMOUNT]: [REASON]</string>
- <string name="paid_you_ldollars_no_reason">[NAME] ti ha inviato un pagamento di L$[AMOUNT].</string>
- <string name="you_paid_ldollars">Hai inviato un pagamento di L$[AMOUNT] a [NAME] [REASON].</string>
- <string name="you_paid_ldollars_gift">Hai inviato un pagamento di L$ [AMOUNT] a [NAME]: [REASON]</string>
- <string name="you_paid_ldollars_no_info">Hai pagato L$ [AMOUNT].</string>
- <string name="you_paid_ldollars_no_reason">Hai inviato un pagamento di L$[AMOUNT] a [NAME].</string>
- <string name="you_paid_ldollars_no_name">Hai pagato L$ [AMOUNT] [REASON].</string>
- <string name="you_paid_failure_ldollars">Non hai pagato [NAME] L$[AMOUNT] [REASON].</string>
- <string name="you_paid_failure_ldollars_gift">Non hai inviato un pagamento di L$ [AMOUNT] a [NAME]: [REASON]</string>
- <string name="you_paid_failure_ldollars_no_info">Non hai pagato L$ [AMOUNT].</string>
- <string name="you_paid_failure_ldollars_no_reason">Non hai pagato [NAME] L$[AMOUNT].</string>
- <string name="you_paid_failure_ldollars_no_name">Non hai pagato L$ [AMOUNT] [REASON].</string>
- <string name="for item">per [ITEM]</string>
- <string name="for a parcel of land">per un lotto di terreno</string>
- <string name="for a land access pass">per un permesso di accesso al terreno</string>
- <string name="for deeding land">per la cessione di terreno</string>
- <string name="to create a group">per creare un gruppo</string>
- <string name="to join a group">per aderire a un gruppo</string>
- <string name="to upload">per caricare</string>
- <string name="to publish a classified ad">per pubblicare un annuncio</string>
- <string name="giving">Contributo di L$ [AMOUNT]</string>
- <string name="uploading_costs">Il costo per il caricamento è di L$ [AMOUNT]</string>
- <string name="this_costs">Il costo è L$ [AMOUNT]</string>
- <string name="buying_selected_land">L'acquisto del terreno prescelto costa L$ [AMOUNT]</string>
- <string name="this_object_costs">Il costo dell'oggetto è L$ [AMOUNT]</string>
- <string name="group_role_everyone">Tutti</string>
- <string name="group_role_officers">Funzionari</string>
- <string name="group_role_owners">Proprietari</string>
- <string name="group_member_status_online">Online</string>
- <string name="uploading_abuse_report">Caricamento in corso...
+ <string name="facebook_post_success">
+ Hai pubblicato su Facebook.
+ </string>
+ <string name="flickr_post_success">
+ Hai pubblicato su Flickr.
+ </string>
+ <string name="twitter_post_success">
+ Hai pubblicato su Twitter.
+ </string>
+ <string name="no_session_message">
+ (La sessione IM non esiste)
+ </string>
+ <string name="only_user_message">
+ Sei l'unico utente di questa sessione.
+ </string>
+ <string name="offline_message">
+ [NAME] è offline
+ </string>
+ <string name="invite_message">
+ Clicca il tasto [BUTTON NAME] per accettare/connetterti a questa voice chat.
+ </string>
+ <string name="muted_message">
+ Hai bloccato questo residente. Quando gli invii un messaggio, verrà automaticamente sbloccato.
+ </string>
+ <string name="generic">
+ Errore nella richiesta, riprova più tardi.
+ </string>
+ <string name="generic_request_error">
+ Errore durante la richiesta, riprova più tardi.
+ </string>
+ <string name="insufficient_perms_error">
+ Non hai sufficienti permessi.
+ </string>
+ <string name="session_does_not_exist_error">
+ Questa sessione non esiste più
+ </string>
+ <string name="no_ability_error">
+ Non hai questa abilitazione.
+ </string>
+ <string name="no_ability">
+ Non hai questa abilitazione.
+ </string>
+ <string name="not_a_mod_error">
+ Non sei un moderatore.
+ </string>
+ <string name="muted">
+ Il moderatore del gruppo ha disattivato la tua chat di testo.
+ </string>
+ <string name="muted_error">
+ Un moderatore di gruppo ti ha disabilitato dalla chat di testo.
+ </string>
+ <string name="add_session_event">
+ Impossibile aggiungere utenti alla chat con [RECIPIENT].
+ </string>
+ <string name="message">
+ Impossibile spedire il tuo messaggio nella sessione chat con [RECIPIENT].
+ </string>
+ <string name="message_session_event">
+ Impossibile inviare il messaggio nella chat con [RECIPIENT].
+ </string>
+ <string name="mute">
+ Errore durante la moderazione.
+ </string>
+ <string name="removed">
+ Sei stato rimosso dal gruppo.
+ </string>
+ <string name="removed_from_group">
+ Sei stato espulso dal gruppo.
+ </string>
+ <string name="close_on_no_ability">
+ Non hai più le abilitazioni per rimanere nella sessione chat.
+ </string>
+ <string name="unread_chat_single">
+ [SOURCES] ha detto qualcosa di nuovo
+ </string>
+ <string name="unread_chat_multiple">
+ [SOURCES] ha detto qualcosa di nuovo
+ </string>
+ <string name="session_initialization_timed_out_error">
+ Sessione di inizializzazione scaduta
+ </string>
+ <string name="Home position set.">
+ Posizione di base impostata.
+ </string>
+ <string name="voice_morphing_url">
+ https://secondlife.com/destination/voice-island
+ </string>
+ <string name="premium_voice_morphing_url">
+ https://secondlife.com/destination/voice-morphing-premium
+ </string>
+ <string name="paid_you_ldollars">
+ [NAME] ti ha inviato un pagamento di L$[AMOUNT] [REASON].
+ </string>
+ <string name="paid_you_ldollars_gift">
+ [NAME] ti ha inviato un pagamento di L$ [AMOUNT]: [REASON]
+ </string>
+ <string name="paid_you_ldollars_no_reason">
+ [NAME] ti ha inviato un pagamento di L$[AMOUNT].
+ </string>
+ <string name="you_paid_ldollars">
+ Hai inviato un pagamento di L$[AMOUNT] a [NAME] [REASON].
+ </string>
+ <string name="you_paid_ldollars_gift">
+ Hai inviato un pagamento di L$ [AMOUNT] a [NAME]: [REASON]
+ </string>
+ <string name="you_paid_ldollars_no_info">
+ Hai pagato L$ [AMOUNT].
+ </string>
+ <string name="you_paid_ldollars_no_reason">
+ Hai inviato un pagamento di L$[AMOUNT] a [NAME].
+ </string>
+ <string name="you_paid_ldollars_no_name">
+ Hai pagato L$ [AMOUNT] [REASON].
+ </string>
+ <string name="you_paid_failure_ldollars">
+ Non hai pagato [NAME] L$[AMOUNT] [REASON].
+ </string>
+ <string name="you_paid_failure_ldollars_gift">
+ Non hai inviato un pagamento di L$ [AMOUNT] a [NAME]: [REASON]
+ </string>
+ <string name="you_paid_failure_ldollars_no_info">
+ Non hai pagato L$ [AMOUNT].
+ </string>
+ <string name="you_paid_failure_ldollars_no_reason">
+ Non hai pagato [NAME] L$[AMOUNT].
+ </string>
+ <string name="you_paid_failure_ldollars_no_name">
+ Non hai pagato L$ [AMOUNT] [REASON].
+ </string>
+ <string name="for item">
+ per [ITEM]
+ </string>
+ <string name="for a parcel of land">
+ per un lotto di terreno
+ </string>
+ <string name="for a land access pass">
+ per un permesso di accesso al terreno
+ </string>
+ <string name="for deeding land">
+ per la cessione di terreno
+ </string>
+ <string name="to create a group">
+ per creare un gruppo
+ </string>
+ <string name="to join a group">
+ per aderire a un gruppo
+ </string>
+ <string name="to upload">
+ per caricare
+ </string>
+ <string name="to publish a classified ad">
+ per pubblicare un annuncio
+ </string>
+ <string name="giving">
+ Contributo di L$ [AMOUNT]
+ </string>
+ <string name="uploading_costs">
+ Il costo per il caricamento è di L$ [AMOUNT]
+ </string>
+ <string name="this_costs">
+ Il costo è L$ [AMOUNT]
+ </string>
+ <string name="buying_selected_land">
+ L'acquisto del terreno prescelto costa L$ [AMOUNT]
+ </string>
+ <string name="this_object_costs">
+ Il costo dell'oggetto è L$ [AMOUNT]
+ </string>
+ <string name="group_role_everyone">
+ Tutti
+ </string>
+ <string name="group_role_officers">
+ Funzionari
+ </string>
+ <string name="group_role_owners">
+ Proprietari
+ </string>
+ <string name="group_member_status_online">
+ Online
+ </string>
+ <string name="uploading_abuse_report">
+ Caricamento in corso...
-Segnala abuso</string>
- <string name="New Shape">Nuova figura corporea</string>
- <string name="New Skin">Nuova pelle</string>
- <string name="New Hair">Nuovi capelli</string>
- <string name="New Eyes">Nuovi occhi</string>
- <string name="New Shirt">Nuova camicia</string>
- <string name="New Pants">Nuovi pantaloni</string>
- <string name="New Shoes">Nuove scarpe</string>
- <string name="New Socks">Nuove calze</string>
- <string name="New Jacket">Nuova giacca</string>
- <string name="New Gloves">Nuovi guanti</string>
- <string name="New Undershirt">Nuova maglietta intima</string>
- <string name="New Underpants">Nuovi slip</string>
- <string name="New Skirt">Nuova gonna</string>
- <string name="New Alpha">Nuovo Alpha (trasparenza)</string>
- <string name="New Tattoo">Nuovo tatuaggio</string>
- <string name="New Universal">Nuovo Universale</string>
- <string name="New Physics">Nuova fisica</string>
- <string name="Invalid Wearable">Capo da indossare non valido</string>
- <string name="New Gesture">Nuova gesture</string>
- <string name="New Script">Nuovo script</string>
- <string name="New Note">Nuovo appunto</string>
- <string name="New Folder">Nuova cartella</string>
- <string name="Contents">Contenuto</string>
- <string name="Gesture">Gesture</string>
- <string name="Male Gestures">Gesture maschili</string>
- <string name="Female Gestures">Gesture femminili</string>
- <string name="Other Gestures">Altre gesture</string>
- <string name="Speech Gestures">Gesture del parlato</string>
- <string name="Common Gestures">Gesture comuni</string>
- <string name="Male - Excuse me">Maschio - Chiedere scusa</string>
- <string name="Male - Get lost">Maschio - Levati dai piedi!</string>
- <string name="Male - Blow kiss">Maschio - Butta un bacio</string>
- <string name="Male - Boo">Maschio - Bu</string>
- <string name="Male - Bored">Maschio - Annoiato</string>
- <string name="Male - Hey">Maschio - Ehi</string>
- <string name="Male - Laugh">Maschio - Ridere</string>
- <string name="Male - Repulsed">Maschio - Disgustato</string>
- <string name="Male - Shrug">Maschio - Spallucce</string>
- <string name="Male - Stick tougue out">Maschio - Tira fuori la lingua</string>
- <string name="Male - Wow">Maschio - Accipicchia</string>
- <string name="Female - Chuckle">Femmina - Risatina</string>
- <string name="Female - Cry">Femmina - Pianto</string>
- <string name="Female - Embarrassed">Femmina - Imbarazzata</string>
- <string name="Female - Excuse me">Femmina - Chiedere scusa</string>
- <string name="Female - Get lost">Femmina - Levati dai piedi!</string>
- <string name="Female - Blow kiss">Femmina - Butta un bacio</string>
- <string name="Female - Boo">Femmina - Bu</string>
- <string name="Female - Bored">Femmina - Annoiata</string>
- <string name="Female - Hey">Femmina - Ehi</string>
- <string name="Female - Hey baby">Femmina - Ehi tu</string>
- <string name="Female - Laugh">Femmina - Ridere</string>
- <string name="Female - Looking good">Femmina - Sei in forma</string>
- <string name="Female - Over here">Femmina - Per di qua</string>
- <string name="Female - Please">Femmina - Per cortesia</string>
- <string name="Female - Repulsed">Femmina - Disgustata</string>
- <string name="Female - Shrug">Femmina - Spallucce</string>
- <string name="Female - Stick tougue out">Femmina - Tira fuori la lingua</string>
- <string name="Female - Wow">Femmina - Accipicchia</string>
- <string name="New Daycycle">Nuovo ciclo giornata</string>
- <string name="New Water">Nuova acqua</string>
- <string name="New Sky">Nuovo cielo</string>
- <string name="/bow">/inchino</string>
- <string name="/clap">/applausi</string>
- <string name="/count">/numero</string>
- <string name="/extinguish">/estingui</string>
- <string name="/kmb">/chissene</string>
- <string name="/muscle">/muscolo</string>
- <string name="/no">/no</string>
- <string name="/no!">/no!</string>
- <string name="/paper">/carta</string>
- <string name="/pointme">/indicome</string>
- <string name="/pointyou">/indicotu</string>
- <string name="/rock">/sasso</string>
- <string name="/scissor">/forbici</string>
- <string name="/smoke">/fumo</string>
- <string name="/stretch">/stiracchiata</string>
- <string name="/whistle">/fischietto</string>
- <string name="/yes">/si</string>
- <string name="/yes!">/si!</string>
- <string name="afk">non alla tastiera</string>
- <string name="dance1">danza1</string>
- <string name="dance2">danza2</string>
- <string name="dance3">danza3</string>
- <string name="dance4">danza4</string>
- <string name="dance5">danza5</string>
- <string name="dance6">danza6</string>
- <string name="dance7">danza7</string>
- <string name="dance8">danza8</string>
- <string name="AvatarBirthDateFormat">[day,datetime,slt]/[mthnum,datetime,slt]/[year,datetime,slt]</string>
- <string name="DefaultMimeType">nessuna/nessuna</string>
- <string name="texture_load_dimensions_error">Impossibile caricare immagini di dimensioni superiori a [WIDTH]*[HEIGHT]</string>
- <string name="outfit_photo_load_dimensions_error">Le dimensioni massime delle foto di vestiario sono [WIDTH]*[HEIGHT]. Ridimensiona l'immagine o usane un'altra</string>
- <string name="outfit_photo_select_dimensions_error">Le dimensioni massime delle foto di vestiario sono [WIDTH]*[HEIGHT]. Seleziona un'altra texture</string>
- <string name="outfit_photo_verify_dimensions_error">Impossibile verificare le dimensioni della foto. Attendi che le dimensioni siano visualizzate nel selettore.</string>
+Segnala abuso
+ </string>
+ <string name="New Shape">
+ Nuova figura corporea
+ </string>
+ <string name="New Skin">
+ Nuova pelle
+ </string>
+ <string name="New Hair">
+ Nuovi capelli
+ </string>
+ <string name="New Eyes">
+ Nuovi occhi
+ </string>
+ <string name="New Shirt">
+ Nuova camicia
+ </string>
+ <string name="New Pants">
+ Nuovi pantaloni
+ </string>
+ <string name="New Shoes">
+ Nuove scarpe
+ </string>
+ <string name="New Socks">
+ Nuove calze
+ </string>
+ <string name="New Jacket">
+ Nuova giacca
+ </string>
+ <string name="New Gloves">
+ Nuovi guanti
+ </string>
+ <string name="New Undershirt">
+ Nuova maglietta intima
+ </string>
+ <string name="New Underpants">
+ Nuovi slip
+ </string>
+ <string name="New Skirt">
+ Nuova gonna
+ </string>
+ <string name="New Alpha">
+ Nuovo Alpha (trasparenza)
+ </string>
+ <string name="New Tattoo">
+ Nuovo tatuaggio
+ </string>
+ <string name="New Universal">
+ Nuovo Universale
+ </string>
+ <string name="New Physics">
+ Nuova fisica
+ </string>
+ <string name="Invalid Wearable">
+ Capo da indossare non valido
+ </string>
+ <string name="New Gesture">
+ Nuova gesture
+ </string>
+ <string name="New Script">
+ Nuovo script
+ </string>
+ <string name="New Note">
+ Nuovo appunto
+ </string>
+ <string name="New Folder">
+ Nuova cartella
+ </string>
+ <string name="Contents">
+ Contenuto
+ </string>
+ <string name="Gesture">
+ Gesture
+ </string>
+ <string name="Male Gestures">
+ Gesture maschili
+ </string>
+ <string name="Female Gestures">
+ Gesture femminili
+ </string>
+ <string name="Other Gestures">
+ Altre gesture
+ </string>
+ <string name="Speech Gestures">
+ Gesture del parlato
+ </string>
+ <string name="Common Gestures">
+ Gesture comuni
+ </string>
+ <string name="Male - Excuse me">
+ Maschio - Chiedere scusa
+ </string>
+ <string name="Male - Get lost">
+ Maschio - Levati dai piedi!
+ </string>
+ <string name="Male - Blow kiss">
+ Maschio - Butta un bacio
+ </string>
+ <string name="Male - Boo">
+ Maschio - Bu
+ </string>
+ <string name="Male - Bored">
+ Maschio - Annoiato
+ </string>
+ <string name="Male - Hey">
+ Maschio - Ehi
+ </string>
+ <string name="Male - Laugh">
+ Maschio - Ridere
+ </string>
+ <string name="Male - Repulsed">
+ Maschio - Disgustato
+ </string>
+ <string name="Male - Shrug">
+ Maschio - Spallucce
+ </string>
+ <string name="Male - Stick tougue out">
+ Maschio - Tira fuori la lingua
+ </string>
+ <string name="Male - Wow">
+ Maschio - Accipicchia
+ </string>
+ <string name="Female - Chuckle">
+ Femmina - Risatina
+ </string>
+ <string name="Female - Cry">
+ Femmina - Pianto
+ </string>
+ <string name="Female - Embarrassed">
+ Femmina - Imbarazzata
+ </string>
+ <string name="Female - Excuse me">
+ Femmina - Chiedere scusa
+ </string>
+ <string name="Female - Get lost">
+ Femmina - Levati dai piedi!
+ </string>
+ <string name="Female - Blow kiss">
+ Femmina - Butta un bacio
+ </string>
+ <string name="Female - Boo">
+ Femmina - Bu
+ </string>
+ <string name="Female - Bored">
+ Femmina - Annoiata
+ </string>
+ <string name="Female - Hey">
+ Femmina - Ehi
+ </string>
+ <string name="Female - Hey baby">
+ Femmina - Ehi tu
+ </string>
+ <string name="Female - Laugh">
+ Femmina - Ridere
+ </string>
+ <string name="Female - Looking good">
+ Femmina - Sei in forma
+ </string>
+ <string name="Female - Over here">
+ Femmina - Per di qua
+ </string>
+ <string name="Female - Please">
+ Femmina - Per cortesia
+ </string>
+ <string name="Female - Repulsed">
+ Femmina - Disgustata
+ </string>
+ <string name="Female - Shrug">
+ Femmina - Spallucce
+ </string>
+ <string name="Female - Stick tougue out">
+ Femmina - Tira fuori la lingua
+ </string>
+ <string name="Female - Wow">
+ Femmina - Accipicchia
+ </string>
+ <string name="New Daycycle">
+ Nuovo ciclo giornata
+ </string>
+ <string name="New Water">
+ Nuova acqua
+ </string>
+ <string name="New Sky">
+ Nuovo cielo
+ </string>
+ <string name="/bow">
+ /inchino
+ </string>
+ <string name="/clap">
+ /applausi
+ </string>
+ <string name="/count">
+ /numero
+ </string>
+ <string name="/extinguish">
+ /estingui
+ </string>
+ <string name="/kmb">
+ /chissene
+ </string>
+ <string name="/muscle">
+ /muscolo
+ </string>
+ <string name="/no">
+ /no
+ </string>
+ <string name="/no!">
+ /no!
+ </string>
+ <string name="/paper">
+ /carta
+ </string>
+ <string name="/pointme">
+ /indicome
+ </string>
+ <string name="/pointyou">
+ /indicotu
+ </string>
+ <string name="/rock">
+ /sasso
+ </string>
+ <string name="/scissor">
+ /forbici
+ </string>
+ <string name="/smoke">
+ /fumo
+ </string>
+ <string name="/stretch">
+ /stiracchiata
+ </string>
+ <string name="/whistle">
+ /fischietto
+ </string>
+ <string name="/yes">
+ /si
+ </string>
+ <string name="/yes!">
+ /si!
+ </string>
+ <string name="afk">
+ non alla tastiera
+ </string>
+ <string name="dance1">
+ danza1
+ </string>
+ <string name="dance2">
+ danza2
+ </string>
+ <string name="dance3">
+ danza3
+ </string>
+ <string name="dance4">
+ danza4
+ </string>
+ <string name="dance5">
+ danza5
+ </string>
+ <string name="dance6">
+ danza6
+ </string>
+ <string name="dance7">
+ danza7
+ </string>
+ <string name="dance8">
+ danza8
+ </string>
+ <string name="AvatarBirthDateFormat">
+ [day,datetime,slt]/[mthnum,datetime,slt]/[year,datetime,slt]
+ </string>
+ <string name="DefaultMimeType">
+ nessuna/nessuna
+ </string>
+ <string name="texture_load_dimensions_error">
+ Impossibile caricare immagini di dimensioni superiori a [WIDTH]*[HEIGHT]
+ </string>
+ <string name="outfit_photo_load_dimensions_error">
+ Le dimensioni massime delle foto di vestiario sono [WIDTH]*[HEIGHT]. Ridimensiona l'immagine o usane un'altra
+ </string>
+ <string name="outfit_photo_select_dimensions_error">
+ Le dimensioni massime delle foto di vestiario sono [WIDTH]*[HEIGHT]. Seleziona un'altra texture
+ </string>
+ <string name="outfit_photo_verify_dimensions_error">
+ Impossibile verificare le dimensioni della foto. Attendi che le dimensioni siano visualizzate nel selettore.
+ </string>
<string name="words_separator" value=","/>
- <string name="server_is_down">Nonostante i nostri tentativi, si è verificato un errore imprevisto.
+ <string name="server_is_down">
+ Nonostante i nostri tentativi, si è verificato un errore imprevisto.
Consulta la pagina http://status.secondlifegrid.net per determinare se il problema del servizio è già stato riscontrato.
- Se il problema continua, ti consigliamo di controllare le tue impostazioni di rete e del firewall.</string>
- <string name="dateTimeWeekdaysNames">lunedì:martedì:mercoledì:giovedì:venerdì:sabato:domenica</string>
- <string name="dateTimeWeekdaysShortNames">lun:mar:mer:gio:ven:sab:dom</string>
- <string name="dateTimeMonthNames">gennaio:febbraio:marzo:aprile:maggio:giugno:luglio:agosto:settembre:ottobre:novembre:dicembre</string>
- <string name="dateTimeMonthShortNames">gen:feb:mar:apr:mag:giu:lug:ago:sett:ott:nov:dic</string>
- <string name="dateTimeDayFormat">[MDAY]</string>
- <string name="dateTimeAM">antemeridiane</string>
- <string name="dateTimePM">pomeridiane</string>
- <string name="LocalEstimateUSD">US$ [AMOUNT]</string>
- <string name="Group Ban">Espulsione di gruppo</string>
- <string name="Membership">Abbonamento</string>
- <string name="Roles">Ruoli</string>
- <string name="Group Identity">Identità gruppo</string>
- <string name="Parcel Management">Gestione lotto</string>
- <string name="Parcel Identity">Identità lotto</string>
- <string name="Parcel Settings">Impostazioni lotto</string>
- <string name="Parcel Powers">Poteri lotto</string>
- <string name="Parcel Access">Accesso al lotto</string>
- <string name="Parcel Content">Contenuto lotto</string>
- <string name="Object Management">Gestione oggetti</string>
- <string name="Accounting">Contabilità</string>
- <string name="Notices">Avvisi</string>
- <string name="Chat" value="Chat :">Chat</string>
- <string name="BaseMembership">Base</string>
- <string name="PremiumMembership">Premium</string>
- <string name="Premium_PlusMembership">Premium Plus</string>
- <string name="DeleteItems">Cancellare gli elementi selezionati?</string>
- <string name="DeleteItem">Cancellare l’elemento selezionato?</string>
- <string name="EmptyOutfitText">Questo vestiario non contiene alcun elemento</string>
- <string name="ExternalEditorNotSet">Seleziona un editor usando le impostazioni ExternalEditor.</string>
- <string name="ExternalEditorNotFound">L'editor esterno specificato non è stato trovato.
+ Se il problema continua, ti consigliamo di controllare le tue impostazioni di rete e del firewall.
+ </string>
+ <string name="dateTimeWeekdaysNames">
+ lunedì:martedì:mercoledì:giovedì:venerdì:sabato:domenica
+ </string>
+ <string name="dateTimeWeekdaysShortNames">
+ lun:mar:mer:gio:ven:sab:dom
+ </string>
+ <string name="dateTimeMonthNames">
+ gennaio:febbraio:marzo:aprile:maggio:giugno:luglio:agosto:settembre:ottobre:novembre:dicembre
+ </string>
+ <string name="dateTimeMonthShortNames">
+ gen:feb:mar:apr:mag:giu:lug:ago:sett:ott:nov:dic
+ </string>
+ <string name="dateTimeDayFormat">
+ [MDAY]
+ </string>
+ <string name="dateTimeAM">
+ antemeridiane
+ </string>
+ <string name="dateTimePM">
+ pomeridiane
+ </string>
+ <string name="LocalEstimateUSD">
+ US$ [AMOUNT]
+ </string>
+ <string name="Group Ban">
+ Espulsione di gruppo
+ </string>
+ <string name="Membership">
+ Abbonamento
+ </string>
+ <string name="Roles">
+ Ruoli
+ </string>
+ <string name="Group Identity">
+ Identità gruppo
+ </string>
+ <string name="Parcel Management">
+ Gestione lotto
+ </string>
+ <string name="Parcel Identity">
+ Identità lotto
+ </string>
+ <string name="Parcel Settings">
+ Impostazioni lotto
+ </string>
+ <string name="Parcel Powers">
+ Poteri lotto
+ </string>
+ <string name="Parcel Access">
+ Accesso al lotto
+ </string>
+ <string name="Parcel Content">
+ Contenuto lotto
+ </string>
+ <string name="Object Management">
+ Gestione oggetti
+ </string>
+ <string name="Accounting">
+ Contabilità
+ </string>
+ <string name="Notices">
+ Avvisi
+ </string>
+ <string name="Chat" value="Chat :">
+ Chat
+ </string>
+ <string name="BaseMembership">
+ Base
+ </string>
+ <string name="PremiumMembership">
+ Premium
+ </string>
+ <string name="Premium_PlusMembership">
+ Premium Plus
+ </string>
+ <string name="DeleteItems">
+ Cancellare gli elementi selezionati?
+ </string>
+ <string name="DeleteItem">
+ Cancellare l’elemento selezionato?
+ </string>
+ <string name="EmptyOutfitText">
+ Questo vestiario non contiene alcun elemento
+ </string>
+ <string name="ExternalEditorNotSet">
+ Seleziona un editor usando le impostazioni ExternalEditor.
+ </string>
+ <string name="ExternalEditorNotFound">
+ L'editor esterno specificato non è stato trovato.
Prova a racchiudere il percorso dell'editor in doppie virgolette.
-(per es. &quot;/percorso per il mio/editor&quot; &quot;%s&quot;)</string>
- <string name="ExternalEditorCommandParseError">Errore nell'elaborazione del comando dell'editor esterno.</string>
- <string name="ExternalEditorFailedToRun">L'editor esterno non è stato avviato.</string>
- <string name="TranslationFailed">Traduzione non riuscita: [REASON]</string>
- <string name="TranslationResponseParseError">Errore di elaborazione della risposta della traduzione.</string>
- <string name="Esc">Esc</string>
- <string name="Space">Space</string>
- <string name="Enter">Enter</string>
- <string name="Tab">Tab</string>
- <string name="Ins">Ins</string>
- <string name="Del">Del</string>
- <string name="Backsp">Backsp</string>
- <string name="Shift">Shift</string>
- <string name="Ctrl">Ctrl</string>
- <string name="Alt">Alt</string>
- <string name="CapsLock">CapsLock</string>
- <string name="Home">Home</string>
- <string name="End">End</string>
- <string name="PgUp">PgUp</string>
- <string name="PgDn">PgDn</string>
- <string name="F1">F1</string>
- <string name="F2">F2</string>
- <string name="F3">F3</string>
- <string name="F4">F4</string>
- <string name="F5">F5</string>
- <string name="F6">F6</string>
- <string name="F7">F7</string>
- <string name="F8">F8</string>
- <string name="F9">F9</string>
- <string name="F10">F10</string>
- <string name="F11">F11</string>
- <string name="F12">F12</string>
- <string name="Add">Aggiungi</string>
- <string name="Subtract">Sottrai</string>
- <string name="Multiply">Moltiplica</string>
- <string name="Divide">Dividi</string>
- <string name="PAD_DIVIDE">PAD_DIVIDE</string>
- <string name="PAD_LEFT">PAD_LEFT</string>
- <string name="PAD_RIGHT">PAD_RIGHT</string>
- <string name="PAD_DOWN">PAD_DOWN</string>
- <string name="PAD_UP">PAD_UP</string>
- <string name="PAD_HOME">PAD_HOME</string>
- <string name="PAD_END">PAD_END</string>
- <string name="PAD_PGUP">PAD_PGUP</string>
- <string name="PAD_PGDN">PAD_PGDN</string>
- <string name="PAD_CENTER">PAD_CENTER</string>
- <string name="PAD_INS">PAD_INS</string>
- <string name="PAD_DEL">PAD_DEL</string>
- <string name="PAD_Enter">PAD_Enter</string>
- <string name="PAD_BUTTON0">PAD_BUTTON0</string>
- <string name="PAD_BUTTON1">PAD_BUTTON1</string>
- <string name="PAD_BUTTON2">PAD_BUTTON2</string>
- <string name="PAD_BUTTON3">PAD_BUTTON3</string>
- <string name="PAD_BUTTON4">PAD_BUTTON4</string>
- <string name="PAD_BUTTON5">PAD_BUTTON5</string>
- <string name="PAD_BUTTON6">PAD_BUTTON6</string>
- <string name="PAD_BUTTON7">PAD_BUTTON7</string>
- <string name="PAD_BUTTON8">PAD_BUTTON8</string>
- <string name="PAD_BUTTON9">PAD_BUTTON9</string>
- <string name="PAD_BUTTON10">PAD_BUTTON10</string>
- <string name="PAD_BUTTON11">PAD_BUTTON11</string>
- <string name="PAD_BUTTON12">PAD_BUTTON12</string>
- <string name="PAD_BUTTON13">PAD_BUTTON13</string>
- <string name="PAD_BUTTON14">PAD_BUTTON14</string>
- <string name="PAD_BUTTON15">PAD_BUTTON15</string>
- <string name="-">-</string>
- <string name="=">=</string>
- <string name="`">`</string>
- <string name=";">;</string>
- <string name="[">[</string>
- <string name="]">]</string>
- <string name="\">\</string>
- <string name="0">0</string>
- <string name="1">1</string>
- <string name="2">2</string>
- <string name="3">3</string>
- <string name="4">4</string>
- <string name="5">5</string>
- <string name="6">6</string>
- <string name="7">7</string>
- <string name="8">8</string>
- <string name="9">9</string>
- <string name="A">A</string>
- <string name="B">B</string>
- <string name="C">C</string>
- <string name="D">D</string>
- <string name="E">E</string>
- <string name="F">F</string>
- <string name="G">G</string>
- <string name="H">H</string>
- <string name="I">I</string>
- <string name="J">J</string>
- <string name="K">K</string>
- <string name="L">L</string>
- <string name="M">M</string>
- <string name="N">N</string>
- <string name="O">O</string>
- <string name="P">P</string>
- <string name="Q">Q</string>
- <string name="R">R</string>
- <string name="S">S</string>
- <string name="T">T</string>
- <string name="U">U</string>
- <string name="V">V</string>
- <string name="W">W</string>
- <string name="X">X</string>
- <string name="Y">Y</string>
- <string name="Z">Z</string>
- <string name="BeaconParticle">Visualizzazione marcatori particelle (blu)</string>
- <string name="BeaconPhysical">Visualizzazione marcatori oggetti fisici (verde)</string>
- <string name="BeaconScripted">Visualizzazione marcatori oggetti scriptati (rosso)</string>
- <string name="BeaconScriptedTouch">Visualizzazione marcatori oggetti scriptati con funzione tocco (rosso)</string>
- <string name="BeaconSound">Visualizzazione marcatori suoni (giallo)</string>
- <string name="BeaconMedia">Visualizzazione marcatori multimedia (bianco)</string>
- <string name="BeaconSun">Marcatore visualizza direzione sole (arancione)</string>
- <string name="BeaconMoon">Marcatore visualizza direzione luna (viola)</string>
- <string name="ParticleHiding">Particelle nascoste</string>
- <string name="Command_AboutLand_Label">Informazioni sul terreno</string>
- <string name="Command_Appearance_Label">Aspetto fisico</string>
- <string name="Command_Avatar_Label">Avatar</string>
- <string name="Command_Build_Label">Costruisci</string>
- <string name="Command_Chat_Label">Chat</string>
- <string name="Command_Conversations_Label">Conversazioni</string>
- <string name="Command_Compass_Label">Bussola</string>
- <string name="Command_Destinations_Label">Destinazioni</string>
- <string name="Command_Environments_Label">I miei ambienti</string>
- <string name="Command_Facebook_Label">Facebook</string>
- <string name="Command_Flickr_Label">Flickr</string>
- <string name="Command_Gestures_Label">Gesture</string>
- <string name="Command_Grid_Status_Label">Stato della griglia</string>
- <string name="Command_HowTo_Label">Istruzioni</string>
- <string name="Command_Inventory_Label">Inventario</string>
- <string name="Command_Map_Label">Mappa</string>
- <string name="Command_Marketplace_Label">Mercato</string>
- <string name="Command_MarketplaceListings_Label">Marketplace</string>
- <string name="Command_MiniMap_Label">Mini mappa</string>
- <string name="Command_Move_Label">Cammina / corri / vola</string>
- <string name="Command_Outbox_Label">Casella in uscita del rivenditore</string>
- <string name="Command_People_Label">Persone</string>
- <string name="Command_Picks_Label">Preferiti</string>
- <string name="Command_Places_Label">Luoghi</string>
- <string name="Command_Preferences_Label">Preferenze</string>
- <string name="Command_Profile_Label">Profilo</string>
- <string name="Command_Report_Abuse_Label">Segnala abuso</string>
- <string name="Command_Search_Label">Ricerca</string>
- <string name="Command_Snapshot_Label">Istantanea</string>
- <string name="Command_Speak_Label">Parla</string>
- <string name="Command_Twitter_Label">Twitter</string>
- <string name="Command_View_Label">Controlli fotocamera</string>
- <string name="Command_Voice_Label">Impostazioni voce</string>
- <string name="Command_AboutLand_Tooltip">Informazioni sul terreno che visiti</string>
- <string name="Command_Appearance_Tooltip">Cambia l'avatar</string>
- <string name="Command_Avatar_Tooltip">Seleziona un avatar completo</string>
- <string name="Command_Build_Tooltip">Costruzione oggetti e modifica terreno</string>
- <string name="Command_Chat_Tooltip">Chatta con persone vicine usando il testo</string>
- <string name="Command_Conversations_Tooltip">Conversa con chiunque</string>
- <string name="Command_Compass_Tooltip">Bussola</string>
- <string name="Command_Destinations_Tooltip">Destinazioni interessanti</string>
- <string name="Command_Environments_Tooltip">I miei ambienti</string>
- <string name="Command_Facebook_Tooltip">Pubblica su Facebook</string>
- <string name="Command_Flickr_Tooltip">Carica su Flickr</string>
- <string name="Command_Gestures_Tooltip">Gesti per il tuo avatar</string>
- <string name="Command_Grid_Status_Tooltip">Mostra stato griglia corrente</string>
- <string name="Command_HowTo_Tooltip">Come eseguire le attività più comuni</string>
- <string name="Command_Inventory_Tooltip">Visualizza e usa le tue cose</string>
- <string name="Command_Map_Tooltip">Mappa del mondo</string>
- <string name="Command_Marketplace_Tooltip">Vai allo shopping</string>
- <string name="Command_MarketplaceListings_Tooltip">Vendi le tue creazioni</string>
- <string name="Command_MiniMap_Tooltip">Mostra le persone vicine</string>
- <string name="Command_Move_Tooltip">Movimento avatar</string>
- <string name="Command_Outbox_Tooltip">Trasferisci elementi al tuo mercato per la vendita</string>
- <string name="Command_People_Tooltip">Amici, gruppi e persone vicine</string>
- <string name="Command_Picks_Tooltip">Luoghi da mostrare come preferiti nel profilo</string>
- <string name="Command_Places_Tooltip">Luoghi salvati</string>
- <string name="Command_Preferences_Tooltip">Preferenze</string>
- <string name="Command_Profile_Tooltip">Modifica o visualizza il tuo profilo</string>
- <string name="Command_Report_Abuse_Tooltip">Segnala abuso</string>
- <string name="Command_Search_Tooltip">Trova luoghi, eventi, persone</string>
- <string name="Command_Snapshot_Tooltip">Scatta una foto</string>
- <string name="Command_Speak_Tooltip">Parla con persone vicine usando il microfono</string>
- <string name="Command_Twitter_Tooltip">Twitter</string>
- <string name="Command_View_Tooltip">Modifica angolo fotocamera</string>
- <string name="Command_Voice_Tooltip">I controlli per il volume per le chiamate e per le persone nelle vicinanze nel mondo virtuale</string>
- <string name="Toolbar_Bottom_Tooltip">attualmente nella barra degli strumenti in basso</string>
- <string name="Toolbar_Left_Tooltip">attualmente nella barra degli strumenti a sinistra</string>
- <string name="Toolbar_Right_Tooltip">attualmente nella barra degli strumenti a destra</string>
- <string name="Retain%">Mantieni%</string>
- <string name="Detail">Dettagli</string>
- <string name="Better Detail">Migliori dettagli</string>
- <string name="Surface">Superficie</string>
- <string name="Solid">Solido</string>
- <string name="Wrap">Involucro</string>
- <string name="Preview">Anteprima</string>
- <string name="Normal">Normale</string>
- <string name="Pathfinding_Wiki_URL">http://wiki.secondlife.com/wiki/Pathfinding_Tools_in_the_Second_Life_Viewer</string>
- <string name="Pathfinding_Object_Attr_None">Nessuno</string>
- <string name="Pathfinding_Object_Attr_Permanent">Influenza il navmesh</string>
- <string name="Pathfinding_Object_Attr_Character">Personaggio</string>
- <string name="Pathfinding_Object_Attr_MultiSelect">(Multiple)</string>
- <string name="snapshot_quality_very_low">Molto basso</string>
- <string name="snapshot_quality_low">Basso</string>
- <string name="snapshot_quality_medium">Medio</string>
- <string name="snapshot_quality_high">Alto</string>
- <string name="snapshot_quality_very_high">Molto alto</string>
- <string name="TeleportMaturityExceeded">Il Residente non può visitare questa regione.</string>
- <string name="UserDictionary">[User]</string>
- <string name="experience_tools_experience">Esperienza</string>
- <string name="ExperienceNameNull">(nessuna esperienza)</string>
- <string name="ExperienceNameUntitled">(esperienza senza titolo)</string>
- <string name="Land-Scope">A livello di terreno</string>
- <string name="Grid-Scope">A livello di griglia</string>
- <string name="Allowed_Experiences_Tab">CONSENTITO</string>
- <string name="Blocked_Experiences_Tab">BLOCCATO</string>
- <string name="Contrib_Experiences_Tab">FORNITORE</string>
- <string name="Admin_Experiences_Tab">AMMINISTRATORE</string>
- <string name="Recent_Experiences_Tab">RECENTE</string>
- <string name="Owned_Experiences_Tab">DI PROPRIETÀ</string>
- <string name="ExperiencesCounter">([EXPERIENCES], massimo [MAXEXPERIENCES])</string>
- <string name="ExperiencePermission1">gestione dei tuoi comandi</string>
- <string name="ExperiencePermission3">attivazione di animazioni per il tuo avatar</string>
- <string name="ExperiencePermission4">collegamento al tuo avatar</string>
- <string name="ExperiencePermission9">monitoraggio della tua videocamera</string>
- <string name="ExperiencePermission10">controllo della tua videocamera</string>
- <string name="ExperiencePermission11">ti teletrasporta</string>
- <string name="ExperiencePermission12">accettazione automatica delle autorizzazioni per le esperienze</string>
- <string name="ExperiencePermission16">obbliga l'avatar a sedersi</string>
- <string name="ExperiencePermission17">cambia le impostazioni dell’ambiente</string>
- <string name="ExperiencePermissionShortUnknown">ha eseguito un'operazione sconosciuta: [Permission]</string>
- <string name="ExperiencePermissionShort1">Gestione dei comandi</string>
- <string name="ExperiencePermissionShort3">Attivazione di animazioni</string>
- <string name="ExperiencePermissionShort4">Collegamento</string>
- <string name="ExperiencePermissionShort9">Monitoraggio videocamera</string>
- <string name="ExperiencePermissionShort10">Controllo videocamera</string>
- <string name="ExperiencePermissionShort11">Teleport</string>
- <string name="ExperiencePermissionShort12">Autorizzazione</string>
- <string name="ExperiencePermissionShort16">Siediti</string>
- <string name="ExperiencePermissionShort17">Ambiente</string>
- <string name="logging_calls_disabled_log_empty">Le conversazioni non vengono registrate. Per iniziare a registrare, seleziona &quot;Salva: Solo registro&quot; oppure &quot;Salva: Registri e trascrizioni&quot; in Preferenze &gt; Chat.</string>
- <string name="logging_calls_disabled_log_not_empty">Non verranno registrate più le conversazioni. Per riprendere a registrare, seleziona &quot;Salva: Solo registro&quot; oppure &quot;Salva: Registri e trascrizioni&quot; in Preferenze &gt; Chat.</string>
- <string name="logging_calls_enabled_log_empty">Nessuna conversazione in registro. Dopo che hai contattato qualcuno o se qualcuno ti contatta, una voce del registro verrà mostrata qui.</string>
- <string name="loading_chat_logs">Caricamento in corso...</string>
- <string name="na">n/d</string>
- <string name="preset_combo_label">-Lista vuota-</string>
- <string name="Default">Predefinita</string>
- <string name="none_paren_cap">(Nulla)</string>
- <string name="no_limit">Senza limite</string>
- <string name="Mav_Details_MAV_FOUND_DEGENERATE_TRIANGLES">La forma della fisica contiene triangoli troppo piccoli. Prova a semplificare il modello della fisica.</string>
- <string name="Mav_Details_MAV_CONFIRMATION_DATA_MISMATCH">La forma della fisica contiene dati di conferma errati. Prova a correggere il modello della fisica.</string>
- <string name="Mav_Details_MAV_UNKNOWN_VERSION">La versione della forma fisica non è corretta. Imposta la versione corretta per il modello della fisica.</string>
- <string name="couldnt_resolve_host">Il DNS non ha potuto risolvere il nome dell’host([HOSTNAME]).
+(per es. "/percorso per il mio/editor" "%s")
+ </string>
+ <string name="ExternalEditorCommandParseError">
+ Errore nell'elaborazione del comando dell'editor esterno.
+ </string>
+ <string name="ExternalEditorFailedToRun">
+ L'editor esterno non è stato avviato.
+ </string>
+ <string name="TranslationFailed">
+ Traduzione non riuscita: [REASON]
+ </string>
+ <string name="TranslationResponseParseError">
+ Errore di elaborazione della risposta della traduzione.
+ </string>
+ <string name="Esc">
+ Esc
+ </string>
+ <string name="Space">
+ Space
+ </string>
+ <string name="Enter">
+ Enter
+ </string>
+ <string name="Tab">
+ Tab
+ </string>
+ <string name="Ins">
+ Ins
+ </string>
+ <string name="Del">
+ Del
+ </string>
+ <string name="Backsp">
+ Backsp
+ </string>
+ <string name="Shift">
+ Shift
+ </string>
+ <string name="Ctrl">
+ Ctrl
+ </string>
+ <string name="Alt">
+ Alt
+ </string>
+ <string name="CapsLock">
+ CapsLock
+ </string>
+ <string name="Home">
+ Home
+ </string>
+ <string name="End">
+ End
+ </string>
+ <string name="PgUp">
+ PgUp
+ </string>
+ <string name="PgDn">
+ PgDn
+ </string>
+ <string name="F1">
+ F1
+ </string>
+ <string name="F2">
+ F2
+ </string>
+ <string name="F3">
+ F3
+ </string>
+ <string name="F4">
+ F4
+ </string>
+ <string name="F5">
+ F5
+ </string>
+ <string name="F6">
+ F6
+ </string>
+ <string name="F7">
+ F7
+ </string>
+ <string name="F8">
+ F8
+ </string>
+ <string name="F9">
+ F9
+ </string>
+ <string name="F10">
+ F10
+ </string>
+ <string name="F11">
+ F11
+ </string>
+ <string name="F12">
+ F12
+ </string>
+ <string name="Add">
+ Aggiungi
+ </string>
+ <string name="Subtract">
+ Sottrai
+ </string>
+ <string name="Multiply">
+ Moltiplica
+ </string>
+ <string name="Divide">
+ Dividi
+ </string>
+ <string name="PAD_DIVIDE">
+ PAD_DIVIDE
+ </string>
+ <string name="PAD_LEFT">
+ PAD_LEFT
+ </string>
+ <string name="PAD_RIGHT">
+ PAD_RIGHT
+ </string>
+ <string name="PAD_DOWN">
+ PAD_DOWN
+ </string>
+ <string name="PAD_UP">
+ PAD_UP
+ </string>
+ <string name="PAD_HOME">
+ PAD_HOME
+ </string>
+ <string name="PAD_END">
+ PAD_END
+ </string>
+ <string name="PAD_PGUP">
+ PAD_PGUP
+ </string>
+ <string name="PAD_PGDN">
+ PAD_PGDN
+ </string>
+ <string name="PAD_CENTER">
+ PAD_CENTER
+ </string>
+ <string name="PAD_INS">
+ PAD_INS
+ </string>
+ <string name="PAD_DEL">
+ PAD_DEL
+ </string>
+ <string name="PAD_Enter">
+ PAD_Enter
+ </string>
+ <string name="PAD_BUTTON0">
+ PAD_BUTTON0
+ </string>
+ <string name="PAD_BUTTON1">
+ PAD_BUTTON1
+ </string>
+ <string name="PAD_BUTTON2">
+ PAD_BUTTON2
+ </string>
+ <string name="PAD_BUTTON3">
+ PAD_BUTTON3
+ </string>
+ <string name="PAD_BUTTON4">
+ PAD_BUTTON4
+ </string>
+ <string name="PAD_BUTTON5">
+ PAD_BUTTON5
+ </string>
+ <string name="PAD_BUTTON6">
+ PAD_BUTTON6
+ </string>
+ <string name="PAD_BUTTON7">
+ PAD_BUTTON7
+ </string>
+ <string name="PAD_BUTTON8">
+ PAD_BUTTON8
+ </string>
+ <string name="PAD_BUTTON9">
+ PAD_BUTTON9
+ </string>
+ <string name="PAD_BUTTON10">
+ PAD_BUTTON10
+ </string>
+ <string name="PAD_BUTTON11">
+ PAD_BUTTON11
+ </string>
+ <string name="PAD_BUTTON12">
+ PAD_BUTTON12
+ </string>
+ <string name="PAD_BUTTON13">
+ PAD_BUTTON13
+ </string>
+ <string name="PAD_BUTTON14">
+ PAD_BUTTON14
+ </string>
+ <string name="PAD_BUTTON15">
+ PAD_BUTTON15
+ </string>
+ <string name="-">
+ -
+ </string>
+ <string name="=">
+ =
+ </string>
+ <string name="`">
+ `
+ </string>
+ <string name=";">
+ ;
+ </string>
+ <string name="[">
+ [
+ </string>
+ <string name="]">
+ ]
+ </string>
+ <string name="\">
+ \
+ </string>
+ <string name="0">
+ 0
+ </string>
+ <string name="1">
+ 1
+ </string>
+ <string name="2">
+ 2
+ </string>
+ <string name="3">
+ 3
+ </string>
+ <string name="4">
+ 4
+ </string>
+ <string name="5">
+ 5
+ </string>
+ <string name="6">
+ 6
+ </string>
+ <string name="7">
+ 7
+ </string>
+ <string name="8">
+ 8
+ </string>
+ <string name="9">
+ 9
+ </string>
+ <string name="A">
+ A
+ </string>
+ <string name="B">
+ B
+ </string>
+ <string name="C">
+ C
+ </string>
+ <string name="D">
+ D
+ </string>
+ <string name="E">
+ E
+ </string>
+ <string name="F">
+ F
+ </string>
+ <string name="G">
+ G
+ </string>
+ <string name="H">
+ H
+ </string>
+ <string name="I">
+ I
+ </string>
+ <string name="J">
+ J
+ </string>
+ <string name="K">
+ K
+ </string>
+ <string name="L">
+ L
+ </string>
+ <string name="M">
+ M
+ </string>
+ <string name="N">
+ N
+ </string>
+ <string name="O">
+ O
+ </string>
+ <string name="P">
+ P
+ </string>
+ <string name="Q">
+ Q
+ </string>
+ <string name="R">
+ R
+ </string>
+ <string name="S">
+ S
+ </string>
+ <string name="T">
+ T
+ </string>
+ <string name="U">
+ U
+ </string>
+ <string name="V">
+ V
+ </string>
+ <string name="W">
+ W
+ </string>
+ <string name="X">
+ X
+ </string>
+ <string name="Y">
+ Y
+ </string>
+ <string name="Z">
+ Z
+ </string>
+ <string name="BeaconParticle">
+ Visualizzazione marcatori particelle (blu)
+ </string>
+ <string name="BeaconPhysical">
+ Visualizzazione marcatori oggetti fisici (verde)
+ </string>
+ <string name="BeaconScripted">
+ Visualizzazione marcatori oggetti scriptati (rosso)
+ </string>
+ <string name="BeaconScriptedTouch">
+ Visualizzazione marcatori oggetti scriptati con funzione tocco (rosso)
+ </string>
+ <string name="BeaconSound">
+ Visualizzazione marcatori suoni (giallo)
+ </string>
+ <string name="BeaconMedia">
+ Visualizzazione marcatori multimedia (bianco)
+ </string>
+ <string name="BeaconSun">
+ Marcatore visualizza direzione sole (arancione)
+ </string>
+ <string name="BeaconMoon">
+ Marcatore visualizza direzione luna (viola)
+ </string>
+ <string name="ParticleHiding">
+ Particelle nascoste
+ </string>
+ <string name="Command_AboutLand_Label">
+ Informazioni sul terreno
+ </string>
+ <string name="Command_Appearance_Label">
+ Aspetto fisico
+ </string>
+ <string name="Command_Avatar_Label">
+ Avatar
+ </string>
+ <string name="Command_Build_Label">
+ Costruisci
+ </string>
+ <string name="Command_Chat_Label">
+ Chat
+ </string>
+ <string name="Command_Conversations_Label">
+ Conversazioni
+ </string>
+ <string name="Command_Compass_Label">
+ Bussola
+ </string>
+ <string name="Command_Destinations_Label">
+ Destinazioni
+ </string>
+ <string name="Command_Environments_Label">
+ I miei ambienti
+ </string>
+ <string name="Command_Facebook_Label">
+ Facebook
+ </string>
+ <string name="Command_Flickr_Label">
+ Flickr
+ </string>
+ <string name="Command_Gestures_Label">
+ Gesture
+ </string>
+ <string name="Command_Grid_Status_Label">
+ Stato della griglia
+ </string>
+ <string name="Command_HowTo_Label">
+ Istruzioni
+ </string>
+ <string name="Command_Inventory_Label">
+ Inventario
+ </string>
+ <string name="Command_Map_Label">
+ Mappa
+ </string>
+ <string name="Command_Marketplace_Label">
+ Mercato
+ </string>
+ <string name="Command_MarketplaceListings_Label">
+ Marketplace
+ </string>
+ <string name="Command_MiniMap_Label">
+ Mini mappa
+ </string>
+ <string name="Command_Move_Label">
+ Cammina / corri / vola
+ </string>
+ <string name="Command_Outbox_Label">
+ Casella in uscita del rivenditore
+ </string>
+ <string name="Command_People_Label">
+ Persone
+ </string>
+ <string name="Command_Picks_Label">
+ Preferiti
+ </string>
+ <string name="Command_Places_Label">
+ Luoghi
+ </string>
+ <string name="Command_Preferences_Label">
+ Preferenze
+ </string>
+ <string name="Command_Profile_Label">
+ Profilo
+ </string>
+ <string name="Command_Report_Abuse_Label">
+ Segnala abuso
+ </string>
+ <string name="Command_Search_Label">
+ Ricerca
+ </string>
+ <string name="Command_Snapshot_Label">
+ Istantanea
+ </string>
+ <string name="Command_Speak_Label">
+ Parla
+ </string>
+ <string name="Command_Twitter_Label">
+ Twitter
+ </string>
+ <string name="Command_View_Label">
+ Controlli fotocamera
+ </string>
+ <string name="Command_Voice_Label">
+ Impostazioni voce
+ </string>
+ <string name="Command_AboutLand_Tooltip">
+ Informazioni sul terreno che visiti
+ </string>
+ <string name="Command_Appearance_Tooltip">
+ Cambia l'avatar
+ </string>
+ <string name="Command_Avatar_Tooltip">
+ Seleziona un avatar completo
+ </string>
+ <string name="Command_Build_Tooltip">
+ Costruzione oggetti e modifica terreno
+ </string>
+ <string name="Command_Chat_Tooltip">
+ Chatta con persone vicine usando il testo
+ </string>
+ <string name="Command_Conversations_Tooltip">
+ Conversa con chiunque
+ </string>
+ <string name="Command_Compass_Tooltip">
+ Bussola
+ </string>
+ <string name="Command_Destinations_Tooltip">
+ Destinazioni interessanti
+ </string>
+ <string name="Command_Environments_Tooltip">
+ I miei ambienti
+ </string>
+ <string name="Command_Facebook_Tooltip">
+ Pubblica su Facebook
+ </string>
+ <string name="Command_Flickr_Tooltip">
+ Carica su Flickr
+ </string>
+ <string name="Command_Gestures_Tooltip">
+ Gesti per il tuo avatar
+ </string>
+ <string name="Command_Grid_Status_Tooltip">
+ Mostra stato griglia corrente
+ </string>
+ <string name="Command_HowTo_Tooltip">
+ Come eseguire le attività più comuni
+ </string>
+ <string name="Command_Inventory_Tooltip">
+ Visualizza e usa le tue cose
+ </string>
+ <string name="Command_Map_Tooltip">
+ Mappa del mondo
+ </string>
+ <string name="Command_Marketplace_Tooltip">
+ Vai allo shopping
+ </string>
+ <string name="Command_MarketplaceListings_Tooltip">
+ Vendi le tue creazioni
+ </string>
+ <string name="Command_MiniMap_Tooltip">
+ Mostra le persone vicine
+ </string>
+ <string name="Command_Move_Tooltip">
+ Movimento avatar
+ </string>
+ <string name="Command_Outbox_Tooltip">
+ Trasferisci elementi al tuo mercato per la vendita
+ </string>
+ <string name="Command_People_Tooltip">
+ Amici, gruppi e persone vicine
+ </string>
+ <string name="Command_Picks_Tooltip">
+ Luoghi da mostrare come preferiti nel profilo
+ </string>
+ <string name="Command_Places_Tooltip">
+ Luoghi salvati
+ </string>
+ <string name="Command_Preferences_Tooltip">
+ Preferenze
+ </string>
+ <string name="Command_Profile_Tooltip">
+ Modifica o visualizza il tuo profilo
+ </string>
+ <string name="Command_Report_Abuse_Tooltip">
+ Segnala abuso
+ </string>
+ <string name="Command_Search_Tooltip">
+ Trova luoghi, eventi, persone
+ </string>
+ <string name="Command_Snapshot_Tooltip">
+ Scatta una foto
+ </string>
+ <string name="Command_Speak_Tooltip">
+ Parla con persone vicine usando il microfono
+ </string>
+ <string name="Command_Twitter_Tooltip">
+ Twitter
+ </string>
+ <string name="Command_View_Tooltip">
+ Modifica angolo fotocamera
+ </string>
+ <string name="Command_Voice_Tooltip">
+ I controlli per il volume per le chiamate e per le persone nelle vicinanze nel mondo virtuale
+ </string>
+ <string name="Toolbar_Bottom_Tooltip">
+ attualmente nella barra degli strumenti in basso
+ </string>
+ <string name="Toolbar_Left_Tooltip">
+ attualmente nella barra degli strumenti a sinistra
+ </string>
+ <string name="Toolbar_Right_Tooltip">
+ attualmente nella barra degli strumenti a destra
+ </string>
+ <string name="Retain%">
+ Mantieni%
+ </string>
+ <string name="Detail">
+ Dettagli
+ </string>
+ <string name="Better Detail">
+ Migliori dettagli
+ </string>
+ <string name="Surface">
+ Superficie
+ </string>
+ <string name="Solid">
+ Solido
+ </string>
+ <string name="Wrap">
+ Involucro
+ </string>
+ <string name="Preview">
+ Anteprima
+ </string>
+ <string name="Normal">
+ Normale
+ </string>
+ <string name="Pathfinding_Wiki_URL">
+ http://wiki.secondlife.com/wiki/Pathfinding_Tools_in_the_Second_Life_Viewer
+ </string>
+ <string name="Pathfinding_Object_Attr_None">
+ Nessuno
+ </string>
+ <string name="Pathfinding_Object_Attr_Permanent">
+ Influenza il navmesh
+ </string>
+ <string name="Pathfinding_Object_Attr_Character">
+ Personaggio
+ </string>
+ <string name="Pathfinding_Object_Attr_MultiSelect">
+ (Multiple)
+ </string>
+ <string name="snapshot_quality_very_low">
+ Molto basso
+ </string>
+ <string name="snapshot_quality_low">
+ Basso
+ </string>
+ <string name="snapshot_quality_medium">
+ Medio
+ </string>
+ <string name="snapshot_quality_high">
+ Alto
+ </string>
+ <string name="snapshot_quality_very_high">
+ Molto alto
+ </string>
+ <string name="TeleportMaturityExceeded">
+ Il Residente non può visitare questa regione.
+ </string>
+ <string name="UserDictionary">
+ [User]
+ </string>
+ <string name="experience_tools_experience">
+ Esperienza
+ </string>
+ <string name="ExperienceNameNull">
+ (nessuna esperienza)
+ </string>
+ <string name="ExperienceNameUntitled">
+ (esperienza senza titolo)
+ </string>
+ <string name="Land-Scope">
+ A livello di terreno
+ </string>
+ <string name="Grid-Scope">
+ A livello di griglia
+ </string>
+ <string name="Allowed_Experiences_Tab">
+ CONSENTITO
+ </string>
+ <string name="Blocked_Experiences_Tab">
+ BLOCCATO
+ </string>
+ <string name="Contrib_Experiences_Tab">
+ FORNITORE
+ </string>
+ <string name="Admin_Experiences_Tab">
+ AMMINISTRATORE
+ </string>
+ <string name="Recent_Experiences_Tab">
+ RECENTE
+ </string>
+ <string name="Owned_Experiences_Tab">
+ DI PROPRIETÀ
+ </string>
+ <string name="ExperiencesCounter">
+ ([EXPERIENCES], massimo [MAXEXPERIENCES])
+ </string>
+ <string name="ExperiencePermission1">
+ gestione dei tuoi comandi
+ </string>
+ <string name="ExperiencePermission3">
+ attivazione di animazioni per il tuo avatar
+ </string>
+ <string name="ExperiencePermission4">
+ collegamento al tuo avatar
+ </string>
+ <string name="ExperiencePermission9">
+ monitoraggio della tua videocamera
+ </string>
+ <string name="ExperiencePermission10">
+ controllo della tua videocamera
+ </string>
+ <string name="ExperiencePermission11">
+ ti teletrasporta
+ </string>
+ <string name="ExperiencePermission12">
+ accettazione automatica delle autorizzazioni per le esperienze
+ </string>
+ <string name="ExperiencePermission16">
+ obbliga l'avatar a sedersi
+ </string>
+ <string name="ExperiencePermission17">
+ cambia le impostazioni dell’ambiente
+ </string>
+ <string name="ExperiencePermissionShortUnknown">
+ ha eseguito un'operazione sconosciuta: [Permission]
+ </string>
+ <string name="ExperiencePermissionShort1">
+ Gestione dei comandi
+ </string>
+ <string name="ExperiencePermissionShort3">
+ Attivazione di animazioni
+ </string>
+ <string name="ExperiencePermissionShort4">
+ Collegamento
+ </string>
+ <string name="ExperiencePermissionShort9">
+ Monitoraggio videocamera
+ </string>
+ <string name="ExperiencePermissionShort10">
+ Controllo videocamera
+ </string>
+ <string name="ExperiencePermissionShort11">
+ Teleport
+ </string>
+ <string name="ExperiencePermissionShort12">
+ Autorizzazione
+ </string>
+ <string name="ExperiencePermissionShort16">
+ Siediti
+ </string>
+ <string name="ExperiencePermissionShort17">
+ Ambiente
+ </string>
+ <string name="logging_calls_disabled_log_empty">
+ Le conversazioni non vengono registrate. Per iniziare a registrare, seleziona "Salva: Solo registro" oppure "Salva: Registri e trascrizioni" in Preferenze &gt; Chat.
+ </string>
+ <string name="logging_calls_disabled_log_not_empty">
+ Non verranno registrate più le conversazioni. Per riprendere a registrare, seleziona "Salva: Solo registro" oppure "Salva: Registri e trascrizioni" in Preferenze &gt; Chat.
+ </string>
+ <string name="logging_calls_enabled_log_empty">
+ Nessuna conversazione in registro. Dopo che hai contattato qualcuno o se qualcuno ti contatta, una voce del registro verrà mostrata qui.
+ </string>
+ <string name="loading_chat_logs">
+ Caricamento in corso...
+ </string>
+ <string name="na">
+ n/d
+ </string>
+ <string name="preset_combo_label">
+ -Lista vuota-
+ </string>
+ <string name="Default">
+ Predefinita
+ </string>
+ <string name="none_paren_cap">
+ (Nulla)
+ </string>
+ <string name="no_limit">
+ Senza limite
+ </string>
+ <string name="Mav_Details_MAV_FOUND_DEGENERATE_TRIANGLES">
+ La forma della fisica contiene triangoli troppo piccoli. Prova a semplificare il modello della fisica.
+ </string>
+ <string name="Mav_Details_MAV_CONFIRMATION_DATA_MISMATCH">
+ La forma della fisica contiene dati di conferma errati. Prova a correggere il modello della fisica.
+ </string>
+ <string name="Mav_Details_MAV_UNKNOWN_VERSION">
+ La versione della forma fisica non è corretta. Imposta la versione corretta per il modello della fisica.
+ </string>
+ <string name="couldnt_resolve_host">
+ Il DNS non ha potuto risolvere il nome dell’host([HOSTNAME]).
Verifica di riuscire a connetterti al sito web www.secondlife.com.
Se riesci ma continui a ricevere questo errore, visita la sezione
-Assistenza e segnala il problema.</string>
- <string name="ssl_peer_certificate">Il server per il login non ha potuto effettuare la verifica tramite SSL.
+Assistenza e segnala il problema.
+ </string>
+ <string name="ssl_peer_certificate">
+ Il server per il login non ha potuto effettuare la verifica tramite SSL.
Se continui a ricevere questo errore, visita
la sezione Assistenza nel sito SecondLife.com
-e segnala il problema.</string>
- <string name="ssl_connect_error">Spesso l’errore è dovuto all’orologio del computer, impostato incorrettamente.
+e segnala il problema.
+ </string>
+ <string name="ssl_connect_error">
+ Spesso l’errore è dovuto all’orologio del computer, impostato incorrettamente.
Vai al Pannello di Controllo e assicurati che data e ora siano
esatte. Controlla anche che il network e il firewall siano impostati
correttamente. Se continui a ricevere questo errore, visita la sezione
Assistenza nel sito SecondLife.com e segnala il problema.
-[https://community.secondlife.com/knowledgebase/english/error-messages-r520/#Section__3 Base conoscenze]</string>
+[https://community.secondlife.com/knowledgebase/english/error-messages-r520/#Section__3 Base conoscenze]
+ </string>
</strings>
diff --git a/indra/newview/skins/default/xui/it/teleport_strings.xml b/indra/newview/skins/default/xui/it/teleport_strings.xml
index 4a089fe7c3..b8a7bc8112 100644
--- a/indra/newview/skins/default/xui/it/teleport_strings.xml
+++ b/indra/newview/skins/default/xui/it/teleport_strings.xml
@@ -1,38 +1,94 @@
<?xml version="1.0" ?>
<teleport_messages>
<message_set name="errors">
- <message name="invalid_tport">C'è stato un problema nell'elaborare la tua richiesta di teleport. Potresti dover effettuare nuovamente l'accesso prima di poter usare il teleport.
-Se si continua a visualizzare questo messaggio, consulta la pagina [SUPPORT_SITE].</message>
- <message name="invalid_region_handoff">Si è verificato un problema nel tentativo di attraversare regioni. È possibile che per potere attraversare le regioni, tu debba effettuare nuovamente l'accesso.
-Se si continua a visualizzare questo messaggio, consulta la pagina [SUPPORT_SITE].</message>
- <message name="blocked_tport">Spiacenti, il teletrasporto è bloccato al momento. Prova di nuovo tra pochi istanti. Se ancora non potrai teletrasportarti, per favore scollegati e ricollegati per risolvere il problema.</message>
- <message name="nolandmark_tport">Spiacenti, ma il sistema non riesce a localizzare la destinazione del landmark</message>
- <message name="timeout_tport">Spiacenti, il sistema non riesce a completare il teletrasporto. Riprova tra un attimo.</message>
- <message name="NoHelpIslandTP">Non puoi teleportarti nuovamente a Welcome Island.
-Per ripetere l'esercitazione, visita 'Welcome Island Public'.</message>
- <message name="noaccess_tport">Spiacenti, ma non hai accesso nel luogo di destinazione richiesto.</message>
- <message name="missing_attach_tport">Gli oggetti da te indossati non sono ancoa arrivati. Attendi ancora qualche secondo o scollegati e ricollegati prima di provare a teleportarti.</message>
- <message name="too_many_uploads_tport">Il server della regione è al momento occupato e la tua richiesta di teletrasporto non può essere soddisfatta entro breve tempo. Per favore prova di nuovo tra qualche minuto o spostati in un'area meno affollata.</message>
- <message name="expired_tport">Spiacenti, il sistema non riesce a soddisfare la tua richiesta di teletrasporto entro un tempo ragionevole. Riprova tra qualche minuto.</message>
- <message name="expired_region_handoff">Spiacenti, il sistema non riesce a completare il cambio di regione entro un tempo ragionevole. Riprova tra qualche minuto.</message>
- <message name="no_host">Impossibile trovare la destinazione del teletrasporto; potrebbe essere temporaneamente non accessibile o non esistere più. Riprovaci tra qualche minuto.</message>
- <message name="no_inventory_host">L'inventario è temporaneamente inaccessibile.</message>
- <message name="MustGetAgeRegion">Per poter entrare in questa regione devi avere almeno 18 anni.</message>
- <message name="RegionTPSpecialUsageBlocked">Impossibile entrare nella regione. '[REGION_NAME]' è una regione per giochi di abilità e per entrare è necessario soddisfare alcuni requisiti. Per dettagli, leggi le [http://wiki.secondlife.com/wiki/Linden_Lab_Official:Skill_Gaming_in_Second_Life domande frequenti sui giochi di abilità].</message>
- <message name="preexisting_tport">Mi dispiace, ma il sistema non è stato in grado di avviare il teletrasporto. Ti preghiamo di riprovare tra qualche minuto.</message>
+ <message name="invalid_tport">
+ C'è stato un problema nell'elaborare la tua richiesta di teleport. Potresti dover effettuare nuovamente l'accesso prima di poter usare il teleport.
+Se si continua a visualizzare questo messaggio, consulta la pagina [SUPPORT_SITE].
+ </message>
+ <message name="invalid_region_handoff">
+ Si è verificato un problema nel tentativo di attraversare regioni. È possibile che per potere attraversare le regioni, tu debba effettuare nuovamente l'accesso.
+Se si continua a visualizzare questo messaggio, consulta la pagina [SUPPORT_SITE].
+ </message>
+ <message name="blocked_tport">
+ Spiacenti, il teletrasporto è bloccato al momento. Prova di nuovo tra pochi istanti. Se ancora non potrai teletrasportarti, per favore scollegati e ricollegati per risolvere il problema.
+ </message>
+ <message name="nolandmark_tport">
+ Spiacenti, ma il sistema non riesce a localizzare la destinazione del landmark
+ </message>
+ <message name="timeout_tport">
+ Spiacenti, il sistema non riesce a completare il teletrasporto. Riprova tra un attimo.
+ </message>
+ <message name="NoHelpIslandTP">
+ Non puoi teleportarti nuovamente a Welcome Island.
+Per ripetere l'esercitazione, visita 'Welcome Island Public'.
+ </message>
+ <message name="noaccess_tport">
+ Spiacenti, ma non hai accesso nel luogo di destinazione richiesto.
+ </message>
+ <message name="missing_attach_tport">
+ Gli oggetti da te indossati non sono ancoa arrivati. Attendi ancora qualche secondo o scollegati e ricollegati prima di provare a teleportarti.
+ </message>
+ <message name="too_many_uploads_tport">
+ Il server della regione è al momento occupato e la tua richiesta di teletrasporto non può essere soddisfatta entro breve tempo. Per favore prova di nuovo tra qualche minuto o spostati in un'area meno affollata.
+ </message>
+ <message name="expired_tport">
+ Spiacenti, il sistema non riesce a soddisfare la tua richiesta di teletrasporto entro un tempo ragionevole. Riprova tra qualche minuto.
+ </message>
+ <message name="expired_region_handoff">
+ Spiacenti, il sistema non riesce a completare il cambio di regione entro un tempo ragionevole. Riprova tra qualche minuto.
+ </message>
+ <message name="no_host">
+ Impossibile trovare la destinazione del teletrasporto; potrebbe essere temporaneamente non accessibile o non esistere più. Riprovaci tra qualche minuto.
+ </message>
+ <message name="no_inventory_host">
+ L'inventario è temporaneamente inaccessibile.
+ </message>
+ <message name="MustGetAgeRegion">
+ Per poter entrare in questa regione devi avere almeno 18 anni.
+ </message>
+ <message name="RegionTPSpecialUsageBlocked">
+ Impossibile entrare nella regione. '[REGION_NAME]' è una regione per giochi di abilità e per entrare è necessario soddisfare alcuni requisiti. Per dettagli, leggi le [http://wiki.secondlife.com/wiki/Linden_Lab_Official:Skill_Gaming_in_Second_Life domande frequenti sui giochi di abilità].
+ </message>
+ <message name="preexisting_tport">
+ Mi dispiace, ma il sistema non è stato in grado di avviare il teletrasporto. Ti preghiamo di riprovare tra qualche minuto.
+ </message>
</message_set>
<message_set name="progress">
- <message name="sending_dest">In invio a destinazione.</message>
- <message name="redirecting">In reindirizzamento ad una nuova destinazione.</message>
- <message name="relaying">In reinvio a destinazione.</message>
- <message name="sending_home">In invio verso la destinazione casa.</message>
- <message name="sending_landmark">In invio verso la destinazione del landmark.</message>
- <message name="completing">Teletrasporto completato</message>
- <message name="completed_from">Teleport completato da [T_SLURL]</message>
- <message name="resolving">Elaborazione della destinazione in corso...</message>
- <message name="contacting">Contatto in corso con la nuova regione.</message>
- <message name="arriving">In arrivo a destinazione...</message>
- <message name="requesting">Avvio teletrasporto....</message>
- <message name="pending">Teleport in sospeso...</message>
+ <message name="sending_dest">
+ In invio a destinazione.
+ </message>
+ <message name="redirecting">
+ In reindirizzamento ad una nuova destinazione.
+ </message>
+ <message name="relaying">
+ In reinvio a destinazione.
+ </message>
+ <message name="sending_home">
+ In invio verso la destinazione casa.
+ </message>
+ <message name="sending_landmark">
+ In invio verso la destinazione del landmark.
+ </message>
+ <message name="completing">
+ Teletrasporto completato
+ </message>
+ <message name="completed_from">
+ Teleport completato da [T_SLURL]
+ </message>
+ <message name="resolving">
+ Elaborazione della destinazione in corso...
+ </message>
+ <message name="contacting">
+ Contatto in corso con la nuova regione.
+ </message>
+ <message name="arriving">
+ In arrivo a destinazione...
+ </message>
+ <message name="requesting">
+ Avvio teletrasporto....
+ </message>
+ <message name="pending">
+ Teleport in sospeso...
+ </message>
</message_set>
</teleport_messages>
diff --git a/indra/newview/skins/default/xui/ja/panel_settings_water.xml b/indra/newview/skins/default/xui/ja/panel_settings_water.xml
index ead1ca9b2f..2510523897 100644
--- a/indra/newview/skins/default/xui/ja/panel_settings_water.xml
+++ b/indra/newview/skins/default/xui/ja/panel_settings_water.xml
@@ -63,7 +63,7 @@
<text follows="left|top|right" font="SansSerif" height="16" layout="topleft" left_delta="-5" top_pad="5" width="215">
ブラー乗数
</text>
- <slider control_name="water_blur_multip" follows="left|top" height="16" increment="0.001" initial_value="0" layout="topleft" left_delta="5" min_val="-0.5" max_val="0.5" name="water_blur_multip" top_pad="5" width="200" can_edit_text="true"/>
+ <slider control_name="water_blur_multip" follows="left|top" height="16" increment="0.001" initial_value="0" layout="topleft" left_delta="5" min_val="0" max_val="0.5" name="water_blur_multip" top_pad="5" width="200" can_edit_text="true"/>
</layout_panel>
</layout_stack>
</layout_panel>
diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml
index d0e3cd87c4..033de9a684 100644
--- a/indra/newview/skins/default/xui/ja/strings.xml
+++ b/indra/newview/skins/default/xui/ja/strings.xml
@@ -39,7 +39,7 @@
</string>
<string name="AboutPosition">
あなたは、現在[REGION]の[POSITION_LOCAL_0,number,1],[POSITION_LOCAL_1,number,1],[POSITION_LOCAL_2,number,1]にいます。
-位置は、&lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt;です。([HOSTIP])
+位置は、&lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt;です。
SLURL:&lt;nolink&gt;[SLURL]&lt;/nolink&gt;
(グローバル座標は、[POSITION_0,number,1],[POSITION_1,number,1],[POSITION_2,number,1]です。)
[SERVER_VERSION]
@@ -6150,7 +6150,7 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
フォルダ「[ITEM_NAME]」がインベントリに送られてきました。
</string>
<string name="bot_warning">
-[NAME]とチャットしています。個人情報を共有しないでください。
+ [NAME]とチャットしています。個人情報を共有しないでください。
詳細は https://second.life/scripted-agents をご覧ください。
</string>
<string name="share_alert">
diff --git a/indra/newview/skins/default/xui/pl/strings.xml b/indra/newview/skins/default/xui/pl/strings.xml
index 65b487e1b3..7a61878618 100644
--- a/indra/newview/skins/default/xui/pl/strings.xml
+++ b/indra/newview/skins/default/xui/pl/strings.xml
@@ -22,14 +22,14 @@
Konfiguracja budowania: [BUILD_CONFIG]
</string>
<string name="AboutPosition">
-Położenie [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] w [REGION] zlokalizowanym w &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt;
+ Położenie [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] w [REGION] zlokalizowanym w &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt;
SLURL: &lt;nolink&gt;[SLURL]&lt;/nolink&gt;
(koordynaty globalne [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1])
[SERVER_VERSION]
[SERVER_RELEASE_NOTES_URL]
</string>
<string name="AboutSystem">
-Procesor (CPU): [CPU]
+ Procesor (CPU): [CPU]
Pamięć (Memory): [MEMORY_MB] MB
System operacyjny (OS Version): [OS_VERSION]
Dostawca karty graficznej (Graphics Card Vendor): [GRAPHICS_CARD_VENDOR]
@@ -42,7 +42,7 @@ Karta graficzna (Graphics Card): [GRAPHICS_CARD]
Wersja OpenGL: [OPENGL_VERSION]
</string>
<string name="AboutSettings">
-Rozmiar okna (Window size): [WINDOW_WIDTH]x[WINDOW_HEIGHT]
+ Rozmiar okna (Window size): [WINDOW_WIDTH]x[WINDOW_HEIGHT]
Dostrojenie rozmiaru czcionki: [FONT_SIZE_ADJUSTMENT]pt
Skalowanie interfejsu (UI Scaling): [UI_SCALE]
Pole widzenia (Draw Distance): [DRAW_DISTANCE]m
@@ -56,7 +56,7 @@ Pamięć podręczna dysku (Disk cache): [DISK_CACHE_INFO]
Tryb obrazu HiDPI: [HIDPI]
</string>
<string name="AboutLibs">
-Wersja dekodera J2C: [J2C_VERSION]
+ Wersja dekodera J2C: [J2C_VERSION]
Wersja sterownika dźwięku (Audio Driver): [AUDIO_DRIVER_VERSION]
[LIBCEF_VERSION]
Wersja LibVLC: [LIBVLC_VERSION]
@@ -572,7 +572,7 @@ Jeśli myślisz, że to błąd skontaktuj się z support@secondlife.com
Usunięcie znajomego
</string>
<string name="BUTTON_CLOSE_DARWIN">
- Zamknij (&#8984;W)
+ Zamknij (⌘W)
</string>
<string name="BUTTON_CLOSE_WIN">
Zamknij (Ctrl+W)
@@ -596,11 +596,11 @@ Jeśli myślisz, że to błąd skontaktuj się z support@secondlife.com
Pokaż Pomoc
</string>
<string name="TooltipNotecardNotAllowedTypeDrop">
-Przedmioty tego typu nie mogą być dołączane
+ Przedmioty tego typu nie mogą być dołączane
do notek z tego regionu.
</string>
<string name="TooltipNotecardOwnerRestrictedDrop">
-Tylko przedmioty z nieograniczonymi
+ Tylko przedmioty z nieograniczonymi
uprawnieniami 'następnego właściciela'
mogą być dołączane do notek.
</string>
@@ -1622,7 +1622,7 @@ Jeśli ciągle otrzymujesz tą wiadomość, to skontaktuj się z pomocą technic
<string name="Scripts" value=" Skrypty,"/>
<string name="Sounds" value=" Dźwięki,"/>
<string name="Textures" value=" Tekstury,"/>
- <string name="Settings" value=" Otoczenia," />
+ <string name="Settings" value=" Otoczenia,"/>
<string name="Snapshots" value=" Zdjęcia,"/>
<string name="No Filters" value="Nie "/>
<string name="Since Logoff" value=" - od wylogowania"/>
@@ -4359,7 +4359,7 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
(Zapisano [LONG_TIMESTAMP])
</string>
<string name="IM_unblock_only_groups_friends">
- Aby zobaczyć tą wiadomość musisz odznaczyć &apos;Tylko znajomi i grupy mogą wysyłać mi wiad. prywatne (IM) oraz rozmowy głosowe&apos; w Ustawieniach/Prywatności.
+ Aby zobaczyć tą wiadomość musisz odznaczyć 'Tylko znajomi i grupy mogą wysyłać mi wiad. prywatne (IM) oraz rozmowy głosowe' w Ustawieniach/Prywatności.
</string>
<string name="OnlineStatus">
dostępny/a
@@ -4413,7 +4413,7 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
Zaoferowano folder: '[ITEM_NAME]'
</string>
<string name="bot_warning">
-Rozmawiasz z botem [NAME]. Nie udostępniaj żadnych danych osobowych.
+ Rozmawiasz z botem [NAME]. Nie udostępniaj żadnych danych osobowych.
Dowiedz się więcej na https://second.life/scripted-agents.
</string>
<string name="share_alert">
@@ -5290,10 +5290,10 @@ Spróbuj załączyć ścieżkę do edytora w cytowaniu.
Otoczenie
</string>
<string name="logging_calls_disabled_log_empty">
- Rozmowy nie są zapisywane do dziennika. Jeśli chcesz zacząć je logować wybierz "Zapisywanie: tylko dziennik" lub "Zapisywanie: dziennik i logi rozmów" w Preferencje > Czat.
+ Rozmowy nie są zapisywane do dziennika. Jeśli chcesz zacząć je logować wybierz "Zapisywanie: tylko dziennik" lub "Zapisywanie: dziennik i logi rozmów" w Preferencje &gt; Czat.
</string>
<string name="logging_calls_disabled_log_not_empty">
- Rozmowy nie będą więcej zapisywane. Jeśli chcesz kontynuować ich logowanie wybierz "Zapisywanie: tylko dziennik" lub "Zapisywanie: dziennik i logi rozmów" w Preferencje > Czat.
+ Rozmowy nie będą więcej zapisywane. Jeśli chcesz kontynuować ich logowanie wybierz "Zapisywanie: tylko dziennik" lub "Zapisywanie: dziennik i logi rozmów" w Preferencje &gt; Czat.
</string>
<string name="logging_calls_enabled_log_empty">
Nie ma zapisanych rozmów. Jeśli skontaktujesz się z kimś, lub ktoś z Tobą, to wpis dziennika pojawi się tutaj.
diff --git a/indra/newview/skins/default/xui/pl/teleport_strings.xml b/indra/newview/skins/default/xui/pl/teleport_strings.xml
index e86255100e..e091f79fe4 100644
--- a/indra/newview/skins/default/xui/pl/teleport_strings.xml
+++ b/indra/newview/skins/default/xui/pl/teleport_strings.xml
@@ -22,7 +22,7 @@ Spróbuj jeszcze raz.
</message>
<message name="NoHelpIslandTP">
Brak możliwości ponownej teleportacji do Welcome Island.
-Odwiedź &apos;Welcome Island Public&apos; by powtórzyć szkolenie.
+Odwiedź 'Welcome Island Public' by powtórzyć szkolenie.
</message>
<message name="noaccess_tport">
Przepraszamy, ale nie masz dostępu do miejsca docelowego.
diff --git a/indra/newview/skins/default/xui/pt/strings.xml b/indra/newview/skins/default/xui/pt/strings.xml
index c7fe195505..34ddf434f2 100644
--- a/indra/newview/skins/default/xui/pt/strings.xml
+++ b/indra/newview/skins/default/xui/pt/strings.xml
@@ -1,574 +1,1628 @@
<?xml version="1.0" ?>
<strings>
- <string name="CAPITALIZED_APP_NAME">MEGAPAHIT</string>
- <string name="SUPPORT_SITE">Portal de Supporte Second Life</string>
- <string name="StartupDetectingHardware">Detectando hardware...</string>
- <string name="StartupLoading">Carregando [APP_NAME]...</string>
- <string name="StartupClearingCache">Limpando o cache...</string>
- <string name="StartupInitializingTextureCache">Iniciando cache de texturas...</string>
- <string name="StartupRequireDriverUpdate">Falha na inicialização dos gráficos. Atualize seu driver gráfico!</string>
- <string name="AboutHeader">[CHANNEL] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2].[VIEWER_VERSION_3] ([ADDRESS_SIZE]bit)
-[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]]</string>
- <string name="BuildConfig">Configuração do corpo [BUILD_CONFIG]</string>
- <string name="AboutPosition">Você está em [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] em [REGION] localizado em &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt; ([HOSTIP])
+ <string name="CAPITALIZED_APP_NAME">
+ MEGAPAHIT
+ </string>
+ <string name="SUPPORT_SITE">
+ Portal de Supporte Second Life
+ </string>
+ <string name="StartupDetectingHardware">
+ Detectando hardware...
+ </string>
+ <string name="StartupLoading">
+ Carregando [APP_NAME]...
+ </string>
+ <string name="StartupClearingCache">
+ Limpando o cache...
+ </string>
+ <string name="StartupInitializingTextureCache">
+ Iniciando cache de texturas...
+ </string>
+ <string name="StartupRequireDriverUpdate">
+ Falha na inicialização dos gráficos. Atualize seu driver gráfico!
+ </string>
+ <string name="AboutHeader">
+ [CHANNEL] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2].[VIEWER_VERSION_3] ([ADDRESS_SIZE]bit)
+[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]]
+ </string>
+ <string name="BuildConfig">
+ Configuração do corpo [BUILD_CONFIG]
+ </string>
+ <string name="AboutPosition">
+ Você está em [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] em [REGION] localizado em &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt;
SLURL: &lt;nolink&gt;[SLURL]&lt;/nolink&gt;
(coordenadas globais [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1])
[SERVER_VERSION]
-[SERVER_RELEASE_NOTES_URL]</string>
- <string name="AboutSystem">CPU: [CPU]
+[SERVER_RELEASE_NOTES_URL]
+ </string>
+ <string name="AboutSystem">
+ CPU: [CPU]
Memória: [MEMORY_MB] MBs
Versão OS: [OS_VERSION]
Placa de vídeo: [GRAPHICS_CARD_VENDOR]
-Placa gráfica: [GRAPHICS_CARD]</string>
- <string name="AboutDriver">Versão do driver de vídeo Windows: [GRAPHICS_DRIVER_VERSION]</string>
- <string name="AboutOGL">Versão do OpenGL: [OPENGL_VERSION]</string>
- <string name="AboutSettings">Tamanho da janela: [WINDOW_WIDTH]x[WINDOW_HEIGHT]
+Placa gráfica: [GRAPHICS_CARD]
+ </string>
+ <string name="AboutDriver">
+ Versão do driver de vídeo Windows: [GRAPHICS_DRIVER_VERSION]
+ </string>
+ <string name="AboutOGL">
+ Versão do OpenGL: [OPENGL_VERSION]
+ </string>
+ <string name="AboutSettings">
+ Tamanho da janela: [WINDOW_WIDTH]x[WINDOW_HEIGHT]
Ajuste do tamanho da fonte: [FONT_SIZE_ADJUSTMENT]pt
UI Escala: [UI_SCALE]
Estabelecer a distância: [DRAW_DISTANCE]m
Largura da banda: [NET_BANDWITH]kbit/s
LOD fator: [LOD_FACTOR]
Qualidade de renderização: [RENDER_QUALITY]
-Memória de textura: [TEXTURE_MEMORY]MB</string>
- <string name="AboutOSXHiDPI">HiDPI modo de exibição: [HIDPI]</string>
- <string name="AboutLibs">Versão do J2C Decoder: [J2C_VERSION]
+Memória de textura: [TEXTURE_MEMORY]MB
+ </string>
+ <string name="AboutOSXHiDPI">
+ HiDPI modo de exibição: [HIDPI]
+ </string>
+ <string name="AboutLibs">
+ Versão do J2C Decoder: [J2C_VERSION]
Versão do driver de áudio: [AUDIO_DRIVER_VERSION]
[LIBCEF_VERSION]
Versão do LibVLC: [LIBVLC_VERSION]
-Versão do servidor de voz: [VOICE_VERSION]</string>
- <string name="AboutTraffic">Packets Lost: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%)</string>
- <string name="AboutTime">[month, datetime, slt] [day, datetime, slt] [year, datetime, slt] [hour, datetime, slt]:[min, datetime, slt]:[second,datetime,slt]</string>
- <string name="ErrorFetchingServerReleaseNotesURL">Erro ao obter URL de notas de versão do servidor.</string>
- <string name="BuildConfiguration">Configuração do corpo</string>
- <string name="ProgressRestoring">Restaurando...</string>
- <string name="ProgressChangingResolution">Alterando a resolução...</string>
- <string name="Fullbright">Fullbright (antigo)</string>
- <string name="LoginInProgress">Fazendo login. [APP_NAME] pode parecer congelado. Por favor, aguarde.</string>
- <string name="LoginInProgressNoFrozen">Logando...</string>
- <string name="LoginAuthenticating">Autenticando</string>
- <string name="LoginMaintenance">Executando manutenção da conta...</string>
- <string name="LoginAttempt">Falha na tentativa anterior de login. Login, tentativa [NUMBER]</string>
- <string name="LoginPrecaching">Carregando mundo...</string>
- <string name="LoginInitializingBrowser">Inicializando navegador embutido...</string>
- <string name="LoginInitializingMultimedia">Inicializando multimídia...</string>
- <string name="LoginInitializingFonts">Carregando fontes...</string>
- <string name="LoginVerifyingCache">Verificando arquivos cache (pode levar de 60-90 segundos)...</string>
- <string name="LoginProcessingResponse">Processando resposta...</string>
- <string name="LoginInitializingWorld">Inicializando mundo...</string>
- <string name="LoginDecodingImages">Decodificando imagens...</string>
- <string name="LoginInitializingQuicktime">Inicializando o QuickTime...</string>
- <string name="LoginQuicktimeNotFound">O QuickTime não foi encontrado - falha ao iniciar.</string>
- <string name="LoginQuicktimeOK">O QuickTime foi inicializado com sucesso.</string>
- <string name="LoginRequestSeedCapGrant">Solicitando recursos da região...</string>
- <string name="LoginRetrySeedCapGrant">Solicitando recursos da região, tentativa [NUMBER]...</string>
- <string name="LoginWaitingForRegionHandshake">Aguardando handshake com a região...</string>
- <string name="LoginConnectingToRegion">Conectando à região...</string>
- <string name="LoginDownloadingClothing">Baixando roupas...</string>
- <string name="InvalidCertificate">O servidor respondeu com um certificado inválido ou corrompido. Por favor contate o administrador do Grid.</string>
- <string name="CertInvalidHostname">Um hostname inválido foi usado para acessar o servidor. Verifique o SLURL ou hostname do Grid.</string>
- <string name="CertExpired">O certificado dado pelo Grid parece estar vencido. Verifique o relógio do sistema ou contate o administrador do Grid.</string>
- <string name="CertKeyUsage">O certificado dado pelo servidor não pôde ser usado para SSL. Por favor contate o administrador do Grid.</string>
- <string name="CertBasicConstraints">A cadeia de certificados do servidor tinha certificados demais. Por favor contate o administrador do Grid.</string>
- <string name="CertInvalidSignature">A assinatura do certificado dado pelo servidor do Grid não pôde ser verificada. Contate o administrador do seu Grid.</string>
- <string name="LoginFailedNoNetwork">Erro de rede: Falha de conexão: verifique sua conexão à internet.</string>
- <string name="LoginFailedHeader">Falha do login.</string>
- <string name="Quit">Sair</string>
- <string name="create_account_url">http://join.secondlife.com/?sourceid=[sourceid]</string>
- <string name="AgniGridLabel">Grade principal do Second Life (Agni)</string>
- <string name="AditiGridLabel">Grade de teste beta do Second Life (Aditi)</string>
- <string name="ViewerDownloadURL">http://secondlife.com/download</string>
- <string name="LoginFailedViewerNotPermitted">O visualizador utilizado já não é compatível com o Second Life. Visite a página abaixo para baixar uma versão atual: http://secondlife.com/download
+Versão do servidor de voz: [VOICE_VERSION]
+ </string>
+ <string name="AboutTraffic">
+ Packets Lost: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%)
+ </string>
+ <string name="AboutTime">
+ [month, datetime, slt] [day, datetime, slt] [year, datetime, slt] [hour, datetime, slt]:[min, datetime, slt]:[second,datetime,slt]
+ </string>
+ <string name="ErrorFetchingServerReleaseNotesURL">
+ Erro ao obter URL de notas de versão do servidor.
+ </string>
+ <string name="BuildConfiguration">
+ Configuração do corpo
+ </string>
+ <string name="ProgressRestoring">
+ Restaurando...
+ </string>
+ <string name="ProgressChangingResolution">
+ Alterando a resolução...
+ </string>
+ <string name="Fullbright">
+ Fullbright (antigo)
+ </string>
+ <string name="LoginInProgress">
+ Fazendo login. [APP_NAME] pode parecer congelado. Por favor, aguarde.
+ </string>
+ <string name="LoginInProgressNoFrozen">
+ Logando...
+ </string>
+ <string name="LoginAuthenticating">
+ Autenticando
+ </string>
+ <string name="LoginMaintenance">
+ Executando manutenção da conta...
+ </string>
+ <string name="LoginAttempt">
+ Falha na tentativa anterior de login. Login, tentativa [NUMBER]
+ </string>
+ <string name="LoginPrecaching">
+ Carregando mundo...
+ </string>
+ <string name="LoginInitializingBrowser">
+ Inicializando navegador embutido...
+ </string>
+ <string name="LoginInitializingMultimedia">
+ Inicializando multimídia...
+ </string>
+ <string name="LoginInitializingFonts">
+ Carregando fontes...
+ </string>
+ <string name="LoginVerifyingCache">
+ Verificando arquivos cache (pode levar de 60-90 segundos)...
+ </string>
+ <string name="LoginProcessingResponse">
+ Processando resposta...
+ </string>
+ <string name="LoginInitializingWorld">
+ Inicializando mundo...
+ </string>
+ <string name="LoginDecodingImages">
+ Decodificando imagens...
+ </string>
+ <string name="LoginInitializingQuicktime">
+ Inicializando o QuickTime...
+ </string>
+ <string name="LoginQuicktimeNotFound">
+ O QuickTime não foi encontrado - falha ao iniciar.
+ </string>
+ <string name="LoginQuicktimeOK">
+ O QuickTime foi inicializado com sucesso.
+ </string>
+ <string name="LoginRequestSeedCapGrant">
+ Solicitando recursos da região...
+ </string>
+ <string name="LoginRetrySeedCapGrant">
+ Solicitando recursos da região, tentativa [NUMBER]...
+ </string>
+ <string name="LoginWaitingForRegionHandshake">
+ Aguardando handshake com a região...
+ </string>
+ <string name="LoginConnectingToRegion">
+ Conectando à região...
+ </string>
+ <string name="LoginDownloadingClothing">
+ Baixando roupas...
+ </string>
+ <string name="InvalidCertificate">
+ O servidor respondeu com um certificado inválido ou corrompido. Por favor contate o administrador do Grid.
+ </string>
+ <string name="CertInvalidHostname">
+ Um hostname inválido foi usado para acessar o servidor. Verifique o SLURL ou hostname do Grid.
+ </string>
+ <string name="CertExpired">
+ O certificado dado pelo Grid parece estar vencido. Verifique o relógio do sistema ou contate o administrador do Grid.
+ </string>
+ <string name="CertKeyUsage">
+ O certificado dado pelo servidor não pôde ser usado para SSL. Por favor contate o administrador do Grid.
+ </string>
+ <string name="CertBasicConstraints">
+ A cadeia de certificados do servidor tinha certificados demais. Por favor contate o administrador do Grid.
+ </string>
+ <string name="CertInvalidSignature">
+ A assinatura do certificado dado pelo servidor do Grid não pôde ser verificada. Contate o administrador do seu Grid.
+ </string>
+ <string name="LoginFailedNoNetwork">
+ Erro de rede: Falha de conexão: verifique sua conexão à internet.
+ </string>
+ <string name="LoginFailedHeader">
+ Falha do login.
+ </string>
+ <string name="Quit">
+ Sair
+ </string>
+ <string name="create_account_url">
+ http://join.secondlife.com/?sourceid=[sourceid]
+ </string>
+ <string name="AgniGridLabel">
+ Grade principal do Second Life (Agni)
+ </string>
+ <string name="AditiGridLabel">
+ Grade de teste beta do Second Life (Aditi)
+ </string>
+ <string name="ViewerDownloadURL">
+ http://secondlife.com/download
+ </string>
+ <string name="LoginFailedViewerNotPermitted">
+ O visualizador utilizado já não é compatível com o Second Life. Visite a página abaixo para baixar uma versão atual: http://secondlife.com/download
-Para saber mais, visite as perguntas frequentes abaixo: http://secondlife.com/viewer-access-faq</string>
- <string name="LoginIntermediateOptionalUpdateAvailable">Existe uma versão atualizada do seu visualizador: [VERSION]</string>
- <string name="LoginFailedRequiredUpdate">Atualização de visualizador obrigatória: [VERSION]</string>
- <string name="LoginFailedAlreadyLoggedIn">Este agente já fez login.</string>
- <string name="LoginFailedAuthenticationFailed">Desculpe! Não foi possível fazer seu login. Verifique se digitou o nome de usuário correto* (como kiki45 ou astro.física) * e senha. Verifique também que a tecla Maiúscula está desativada.</string>
- <string name="LoginFailedPasswordChanged">Como medida de precaução, sua senha foi alterada. Visite sua conta em http://secondlife.com/password e responda a pergunta de segurança para mudar sua senha. Lamentamos qualquer inconveniente.</string>
- <string name="LoginFailedPasswordReset">Fizemos algumas alterações a seu sistema. Você precisa selecionar outra senha. Visite sua conta em http://secondlife.com/password e responda a pergunta de segurança para mudar sua senha. Lamentamos qualquer inconveniente.</string>
- <string name="LoginFailedEmployeesOnly">O Second Life está fechado para manutenção no momento. Somente funcionários podem acessá-lo. Consulte www.secondlife.com/status para as últimas atualizações.</string>
- <string name="LoginFailedPremiumOnly">Logons do Second Life estão temporariamente restritos para garantir a melhor experiência possível para os usuários no mundo virtual.
+Para saber mais, visite as perguntas frequentes abaixo: http://secondlife.com/viewer-access-faq
+ </string>
+ <string name="LoginIntermediateOptionalUpdateAvailable">
+ Existe uma versão atualizada do seu visualizador: [VERSION]
+ </string>
+ <string name="LoginFailedRequiredUpdate">
+ Atualização de visualizador obrigatória: [VERSION]
+ </string>
+ <string name="LoginFailedAlreadyLoggedIn">
+ Este agente já fez login.
+ </string>
+ <string name="LoginFailedAuthenticationFailed">
+ Desculpe! Não foi possível fazer seu login. Verifique se digitou o nome de usuário correto* (como kiki45 ou astro.física) * e senha. Verifique também que a tecla Maiúscula está desativada.
+ </string>
+ <string name="LoginFailedPasswordChanged">
+ Como medida de precaução, sua senha foi alterada. Visite sua conta em http://secondlife.com/password e responda a pergunta de segurança para mudar sua senha. Lamentamos qualquer inconveniente.
+ </string>
+ <string name="LoginFailedPasswordReset">
+ Fizemos algumas alterações a seu sistema. Você precisa selecionar outra senha. Visite sua conta em http://secondlife.com/password e responda a pergunta de segurança para mudar sua senha. Lamentamos qualquer inconveniente.
+ </string>
+ <string name="LoginFailedEmployeesOnly">
+ O Second Life está fechado para manutenção no momento. Somente funcionários podem acessá-lo. Consulte www.secondlife.com/status para as últimas atualizações.
+ </string>
+ <string name="LoginFailedPremiumOnly">
+ Logons do Second Life estão temporariamente restritos para garantir a melhor experiência possível para os usuários no mundo virtual.
-Pessoas com contas gratuitas não poderão acessar o Second Life no momento para dar espaço para aquelas que pagaram pelo Second Life.</string>
- <string name="LoginFailedComputerProhibited">O Second Life não pode ser acessado deste computador. Se você acredita que houve algum equívoco, contate support@secondlife.com.</string>
- <string name="LoginFailedAcountSuspended">Sua conta não está disponível para acesso até [TIME], horário do Pacífico nos EUA (GMT-08).</string>
- <string name="LoginFailedAccountDisabled">Não é possível concluir a solicitação neste momento.
-Entre em contato com o suporte do Second Life para obter ajuda em http://support.secondlife.com.</string>
- <string name="LoginFailedTransformError">Dados discrepantes detectados durante o login. Contate support@secondlife.com.</string>
- <string name="LoginFailedAccountMaintenance">Sua conta está passando por um breve período de manutenção. Sua conta não está disponível para acesso até [TIME], horário do Pacífico nos EUA (GMT-08). Se você acredita que houve algum equívoco, contate support@secondlife.com.</string>
- <string name="LoginFailedPendingLogoutFault">Reação à solicitação de saída foi uma falha do simulador.</string>
- <string name="LoginFailedPendingLogout">O sistema o está desconectando no momento.
-Aguarde um minuto antes que tentar logar-se novamente.</string>
- <string name="LoginFailedUnableToCreateSession">Impossível criar sessão válida.</string>
- <string name="LoginFailedUnableToConnectToSimulator">Não foi possível conectar o simulador.</string>
- <string name="LoginFailedRestrictedHours">Sua conta possui acesso ao Second Life das [START] às [END], horário da costa leste dos EUA. Volte novamente durante seu horário de acesso. Se você acredita que houve algum equívoco, contate support@secondlife.com.</string>
- <string name="LoginFailedIncorrectParameters">Parâmetros incorretos. Se você acredita que houve algum equívoco, contate support@secondlife.com.</string>
- <string name="LoginFailedFirstNameNotAlphanumeric">O parâmetro de primeiro nome deve ser alfanumérico. Se você acredita que houve algum equívoco, contate support@secondlife.com.</string>
- <string name="LoginFailedLastNameNotAlphanumeric">O parâmetro de sobrenome deve ser alfanumérico. Se você acredita que houve algum equívoco, contate support@secondlife.com.</string>
- <string name="LogoutFailedRegionGoingOffline">Região passando para modo offline. Tente novamente dentro de alguns instantes.</string>
- <string name="LogoutFailedAgentNotInRegion">Não há agente na região. Tente novamente dentro de alguns instantes.</string>
- <string name="LogoutFailedPendingLogin">A região estava acessada por outra sessão. Tente novamente dentro de alguns instantes.</string>
- <string name="LogoutFailedLoggingOut">A região estava passando para o modo offline na sessão anterior. Tente novamente dentro de alguns instantes.</string>
- <string name="LogoutFailedStillLoggingOut">A região estava passando para o modo offline na sessão anterior. Tente novamente dentro de alguns instantes.</string>
- <string name="LogoutSucceeded">A região passou para o modo offline na última sessão. Tente novamente dentro de alguns instantes.</string>
- <string name="LogoutFailedLogoutBegun">A região inicou o modo offline. Tente novamente dentro de alguns instantes.</string>
- <string name="LoginFailedLoggingOutSession">O sistema iniciou o modo offline em sua sessão anterior. Tente novamente dentro de alguns instantes.</string>
- <string name="AgentLostConnection">Esta região pode estar passando por problemas. Por favor, verifique sua conexão com a internet.</string>
- <string name="SavingSettings">Salvando configurações...</string>
- <string name="LoggingOut">Saindo...</string>
- <string name="ShuttingDown">Fechando...</string>
- <string name="YouHaveBeenDisconnected">Você foi desconectado da região onde estava.</string>
- <string name="SentToInvalidRegion">Você foi enviado para uma região inválida.</string>
- <string name="TestingDisconnect">Teste de desconexão</string>
- <string name="SocialFacebookConnecting">Conectando ao Facebook...</string>
- <string name="SocialFacebookPosting">Publicando...</string>
- <string name="SocialFacebookDisconnecting">Desconectando do Facebook...</string>
- <string name="SocialFacebookErrorConnecting">Problema ao conectar ao Facebook</string>
- <string name="SocialFacebookErrorPosting">Problema ao publicar no Facebook</string>
- <string name="SocialFacebookErrorDisconnecting">Problema ao desconectar do Facebook</string>
- <string name="SocialFlickrConnecting">Conectando ao Flickr...</string>
- <string name="SocialFlickrPosting">Publicando...</string>
- <string name="SocialFlickrDisconnecting">Desconectando do Flickr...</string>
- <string name="SocialFlickrErrorConnecting">Problema ao conectar ao Flickr</string>
- <string name="SocialFlickrErrorPosting">Problema ao publicar no Flickr</string>
- <string name="SocialFlickrErrorDisconnecting">Problema ao desconectar do Flickr</string>
- <string name="SocialTwitterConnecting">Conectando ao Twitter...</string>
- <string name="SocialTwitterPosting">Publicando...</string>
- <string name="SocialTwitterDisconnecting">Desconectando do Twitter...</string>
- <string name="SocialTwitterErrorConnecting">Problema ao conectar ao Twitter</string>
- <string name="SocialTwitterErrorPosting">Problema ao publicar no Twitter</string>
- <string name="SocialTwitterErrorDisconnecting">Problema ao desconectar do Twitter</string>
- <string name="BlackAndWhite">Preto e branco</string>
- <string name="Colors1970">Cores dos anos 1970</string>
- <string name="Intense">Intenso</string>
- <string name="Newspaper">Retícula</string>
- <string name="Sepia">Sépia</string>
- <string name="Spotlight">Destaque</string>
- <string name="Video">Vídeo</string>
- <string name="Autocontrast">Autocontraste</string>
- <string name="LensFlare">Reflexo de flash</string>
- <string name="Miniature">Miniatura</string>
- <string name="Toycamera">Câmera de brinquedo</string>
- <string name="TooltipPerson">Pessoa</string>
- <string name="TooltipNoName">(sem nome)</string>
- <string name="TooltipOwner">Proprietário:</string>
- <string name="TooltipPublic">Público</string>
- <string name="TooltipIsGroup">(Grupo)</string>
- <string name="TooltipForSaleL$">À venda: L$[AMOUNT]</string>
- <string name="TooltipFlagGroupBuild">Construído por Grupo</string>
- <string name="TooltipFlagNoBuild">Não é permitido construir</string>
- <string name="TooltipFlagNoEdit">Construído por Grupo</string>
- <string name="TooltipFlagNotSafe">Não é seguro</string>
- <string name="TooltipFlagNoFly">Não é permitido voar</string>
- <string name="TooltipFlagGroupScripts">Scripts de Grupo</string>
- <string name="TooltipFlagNoScripts">Não são permitidos scripts</string>
- <string name="TooltipLand">Terreno:</string>
- <string name="TooltipMustSingleDrop">Apenas um item único pode ser arrastado para este local</string>
- <string name="TooltipTooManyWearables">Você não pode usar uma pasta que contenha mais de [AMOUNT] itens. Você pode mudar esse limite em Avançado &gt; Mostrar configurações de depuração &gt; WearFolderLimit.</string>
+Pessoas com contas gratuitas não poderão acessar o Second Life no momento para dar espaço para aquelas que pagaram pelo Second Life.
+ </string>
+ <string name="LoginFailedComputerProhibited">
+ O Second Life não pode ser acessado deste computador. Se você acredita que houve algum equívoco, contate support@secondlife.com.
+ </string>
+ <string name="LoginFailedAcountSuspended">
+ Sua conta não está disponível para acesso até [TIME], horário do Pacífico nos EUA (GMT-08).
+ </string>
+ <string name="LoginFailedAccountDisabled">
+ Não é possível concluir a solicitação neste momento.
+Entre em contato com o suporte do Second Life para obter ajuda em http://support.secondlife.com.
+ </string>
+ <string name="LoginFailedTransformError">
+ Dados discrepantes detectados durante o login. Contate support@secondlife.com.
+ </string>
+ <string name="LoginFailedAccountMaintenance">
+ Sua conta está passando por um breve período de manutenção. Sua conta não está disponível para acesso até [TIME], horário do Pacífico nos EUA (GMT-08). Se você acredita que houve algum equívoco, contate support@secondlife.com.
+ </string>
+ <string name="LoginFailedPendingLogoutFault">
+ Reação à solicitação de saída foi uma falha do simulador.
+ </string>
+ <string name="LoginFailedPendingLogout">
+ O sistema o está desconectando no momento.
+Aguarde um minuto antes que tentar logar-se novamente.
+ </string>
+ <string name="LoginFailedUnableToCreateSession">
+ Impossível criar sessão válida.
+ </string>
+ <string name="LoginFailedUnableToConnectToSimulator">
+ Não foi possível conectar o simulador.
+ </string>
+ <string name="LoginFailedRestrictedHours">
+ Sua conta possui acesso ao Second Life das [START] às [END], horário da costa leste dos EUA. Volte novamente durante seu horário de acesso. Se você acredita que houve algum equívoco, contate support@secondlife.com.
+ </string>
+ <string name="LoginFailedIncorrectParameters">
+ Parâmetros incorretos. Se você acredita que houve algum equívoco, contate support@secondlife.com.
+ </string>
+ <string name="LoginFailedFirstNameNotAlphanumeric">
+ O parâmetro de primeiro nome deve ser alfanumérico. Se você acredita que houve algum equívoco, contate support@secondlife.com.
+ </string>
+ <string name="LoginFailedLastNameNotAlphanumeric">
+ O parâmetro de sobrenome deve ser alfanumérico. Se você acredita que houve algum equívoco, contate support@secondlife.com.
+ </string>
+ <string name="LogoutFailedRegionGoingOffline">
+ Região passando para modo offline. Tente novamente dentro de alguns instantes.
+ </string>
+ <string name="LogoutFailedAgentNotInRegion">
+ Não há agente na região. Tente novamente dentro de alguns instantes.
+ </string>
+ <string name="LogoutFailedPendingLogin">
+ A região estava acessada por outra sessão. Tente novamente dentro de alguns instantes.
+ </string>
+ <string name="LogoutFailedLoggingOut">
+ A região estava passando para o modo offline na sessão anterior. Tente novamente dentro de alguns instantes.
+ </string>
+ <string name="LogoutFailedStillLoggingOut">
+ A região estava passando para o modo offline na sessão anterior. Tente novamente dentro de alguns instantes.
+ </string>
+ <string name="LogoutSucceeded">
+ A região passou para o modo offline na última sessão. Tente novamente dentro de alguns instantes.
+ </string>
+ <string name="LogoutFailedLogoutBegun">
+ A região inicou o modo offline. Tente novamente dentro de alguns instantes.
+ </string>
+ <string name="LoginFailedLoggingOutSession">
+ O sistema iniciou o modo offline em sua sessão anterior. Tente novamente dentro de alguns instantes.
+ </string>
+ <string name="AgentLostConnection">
+ Esta região pode estar passando por problemas. Por favor, verifique sua conexão com a internet.
+ </string>
+ <string name="SavingSettings">
+ Salvando configurações...
+ </string>
+ <string name="LoggingOut">
+ Saindo...
+ </string>
+ <string name="ShuttingDown">
+ Fechando...
+ </string>
+ <string name="YouHaveBeenDisconnected">
+ Você foi desconectado da região onde estava.
+ </string>
+ <string name="SentToInvalidRegion">
+ Você foi enviado para uma região inválida.
+ </string>
+ <string name="TestingDisconnect">
+ Teste de desconexão
+ </string>
+ <string name="SocialFacebookConnecting">
+ Conectando ao Facebook...
+ </string>
+ <string name="SocialFacebookPosting">
+ Publicando...
+ </string>
+ <string name="SocialFacebookDisconnecting">
+ Desconectando do Facebook...
+ </string>
+ <string name="SocialFacebookErrorConnecting">
+ Problema ao conectar ao Facebook
+ </string>
+ <string name="SocialFacebookErrorPosting">
+ Problema ao publicar no Facebook
+ </string>
+ <string name="SocialFacebookErrorDisconnecting">
+ Problema ao desconectar do Facebook
+ </string>
+ <string name="SocialFlickrConnecting">
+ Conectando ao Flickr...
+ </string>
+ <string name="SocialFlickrPosting">
+ Publicando...
+ </string>
+ <string name="SocialFlickrDisconnecting">
+ Desconectando do Flickr...
+ </string>
+ <string name="SocialFlickrErrorConnecting">
+ Problema ao conectar ao Flickr
+ </string>
+ <string name="SocialFlickrErrorPosting">
+ Problema ao publicar no Flickr
+ </string>
+ <string name="SocialFlickrErrorDisconnecting">
+ Problema ao desconectar do Flickr
+ </string>
+ <string name="SocialTwitterConnecting">
+ Conectando ao Twitter...
+ </string>
+ <string name="SocialTwitterPosting">
+ Publicando...
+ </string>
+ <string name="SocialTwitterDisconnecting">
+ Desconectando do Twitter...
+ </string>
+ <string name="SocialTwitterErrorConnecting">
+ Problema ao conectar ao Twitter
+ </string>
+ <string name="SocialTwitterErrorPosting">
+ Problema ao publicar no Twitter
+ </string>
+ <string name="SocialTwitterErrorDisconnecting">
+ Problema ao desconectar do Twitter
+ </string>
+ <string name="BlackAndWhite">
+ Preto e branco
+ </string>
+ <string name="Colors1970">
+ Cores dos anos 1970
+ </string>
+ <string name="Intense">
+ Intenso
+ </string>
+ <string name="Newspaper">
+ Retícula
+ </string>
+ <string name="Sepia">
+ Sépia
+ </string>
+ <string name="Spotlight">
+ Destaque
+ </string>
+ <string name="Video">
+ Vídeo
+ </string>
+ <string name="Autocontrast">
+ Autocontraste
+ </string>
+ <string name="LensFlare">
+ Reflexo de flash
+ </string>
+ <string name="Miniature">
+ Miniatura
+ </string>
+ <string name="Toycamera">
+ Câmera de brinquedo
+ </string>
+ <string name="TooltipPerson">
+ Pessoa
+ </string>
+ <string name="TooltipNoName">
+ (sem nome)
+ </string>
+ <string name="TooltipOwner">
+ Proprietário:
+ </string>
+ <string name="TooltipPublic">
+ Público
+ </string>
+ <string name="TooltipIsGroup">
+ (Grupo)
+ </string>
+ <string name="TooltipForSaleL$">
+ À venda: L$[AMOUNT]
+ </string>
+ <string name="TooltipFlagGroupBuild">
+ Construído por Grupo
+ </string>
+ <string name="TooltipFlagNoBuild">
+ Não é permitido construir
+ </string>
+ <string name="TooltipFlagNoEdit">
+ Construído por Grupo
+ </string>
+ <string name="TooltipFlagNotSafe">
+ Não é seguro
+ </string>
+ <string name="TooltipFlagNoFly">
+ Não é permitido voar
+ </string>
+ <string name="TooltipFlagGroupScripts">
+ Scripts de Grupo
+ </string>
+ <string name="TooltipFlagNoScripts">
+ Não são permitidos scripts
+ </string>
+ <string name="TooltipLand">
+ Terreno:
+ </string>
+ <string name="TooltipMustSingleDrop">
+ Apenas um item único pode ser arrastado para este local
+ </string>
+ <string name="TooltipTooManyWearables">
+ Você não pode usar uma pasta que contenha mais de [AMOUNT] itens. Você pode mudar esse limite em Avançado &gt; Mostrar configurações de depuração &gt; WearFolderLimit.
+ </string>
<string name="TooltipPrice" value="L$[AMOUNT]"/>
- <string name="TooltipSLIcon">Isso contém um link para uma página no domínio oficial do SecondLife.com ou LindenLab.com.</string>
- <string name="TooltipOutboxDragToWorld">Não é possível fazer rez de itens da pasta Listagens do Marketplace</string>
- <string name="TooltipOutboxWorn">Não é possível colocar itens que você estiver usando na pasta Listagens do Marketplace</string>
- <string name="TooltipOutboxFolderLevels">A profundidade das pastas aninhadas excede [AMOUNT]. Diminua a profundidade das pastas dentro de pastas. Agrupe os itens se necessário.</string>
- <string name="TooltipOutboxTooManyFolders">O número de subpastas excede [AMOUNT]. Diminua a o número de pastas em sua listagem. Agrupe os itens se necessário.</string>
- <string name="TooltipOutboxTooManyObjects">O número de itens excede [AMOUNT]. Para vender mais que [AMOUNT] itens em uma listagem, você deve agrupar alguns deles.</string>
- <string name="TooltipOutboxTooManyStockItems">O número de itens de estoque excede [AMOUNT].</string>
- <string name="TooltipOutboxCannotDropOnRoot">Você pode soltar somente itens ou pastas na aba TUDO ou NÃO ASSOCIADOS. Selecione uma dessas abas e mova seus itens ou pastas novamente.</string>
- <string name="TooltipOutboxNoTransfer">Um ou mais objetos não podem ser vendidos ou transferidos</string>
- <string name="TooltipOutboxNotInInventory">É possível colocar somente itens do seu inventário no Marketplace</string>
- <string name="TooltipOutboxLinked">Não é possível colocar itens ou pastas vinculadas no Marketplace</string>
- <string name="TooltipOutboxCallingCard">Não é possível colocar cartões de visitas no Marketplace</string>
- <string name="TooltipOutboxDragActive">Não é possível mover uma listagem publicada</string>
- <string name="TooltipOutboxCannotMoveRoot">Não é possível mover a pasta raiz das listagens do Marketplace</string>
- <string name="TooltipOutboxMixedStock">Todos os itens em uma pasta de estoque têm o mesmo tipo e permissão</string>
- <string name="TooltipDragOntoOwnChild">Não é possível mover uma pasta para seu filho</string>
- <string name="TooltipDragOntoSelf">Não é possível mover uma pasta para dentro dela mesma</string>
- <string name="TooltipHttpUrl">Clique para ver a página web</string>
- <string name="TooltipSLURL">Clique para ver os dados desta localização</string>
- <string name="TooltipAgentUrl">Clique para ver o perfil deste residente</string>
- <string name="TooltipAgentInspect">Saiba mais sobre este residente</string>
- <string name="TooltipAgentMute">Clique para silenciar este residente</string>
- <string name="TooltipAgentUnmute">Clique para desfazer silenciar neste residente</string>
- <string name="TooltipAgentIM">Clique para enviar uma MI para este residente</string>
- <string name="TooltipAgentPay">Clique para pagar este residente</string>
- <string name="TooltipAgentOfferTeleport">Clique para enviar um pedido de amizade a este residente</string>
- <string name="TooltipAgentRequestFriend">Clique para enviar um pedido de amizade a este residente</string>
- <string name="TooltipGroupUrl">Clique para ver a descrição deste Grupo</string>
- <string name="TooltipEventUrl">Clique para ver a descrição deste evento</string>
- <string name="TooltipClassifiedUrl">Clique para ver este anúncio</string>
- <string name="TooltipParcelUrl">Clique para ver a descrição desta parcela</string>
- <string name="TooltipTeleportUrl">Clique para teletransportar para esta localização</string>
- <string name="TooltipObjectIMUrl">Clique para ver a descrição deste objeto</string>
- <string name="TooltipMapUrl">Clique para ver esta localização no mapa</string>
- <string name="TooltipSLAPP">Clique para ativar no secondlife:// comando</string>
+ <string name="TooltipSLIcon">
+ Isso contém um link para uma página no domínio oficial do SecondLife.com ou LindenLab.com.
+ </string>
+ <string name="TooltipOutboxDragToWorld">
+ Não é possível fazer rez de itens da pasta Listagens do Marketplace
+ </string>
+ <string name="TooltipOutboxWorn">
+ Não é possível colocar itens que você estiver usando na pasta Listagens do Marketplace
+ </string>
+ <string name="TooltipOutboxFolderLevels">
+ A profundidade das pastas aninhadas excede [AMOUNT]. Diminua a profundidade das pastas dentro de pastas. Agrupe os itens se necessário.
+ </string>
+ <string name="TooltipOutboxTooManyFolders">
+ O número de subpastas excede [AMOUNT]. Diminua a o número de pastas em sua listagem. Agrupe os itens se necessário.
+ </string>
+ <string name="TooltipOutboxTooManyObjects">
+ O número de itens excede [AMOUNT]. Para vender mais que [AMOUNT] itens em uma listagem, você deve agrupar alguns deles.
+ </string>
+ <string name="TooltipOutboxTooManyStockItems">
+ O número de itens de estoque excede [AMOUNT].
+ </string>
+ <string name="TooltipOutboxCannotDropOnRoot">
+ Você pode soltar somente itens ou pastas na aba TUDO ou NÃO ASSOCIADOS. Selecione uma dessas abas e mova seus itens ou pastas novamente.
+ </string>
+ <string name="TooltipOutboxNoTransfer">
+ Um ou mais objetos não podem ser vendidos ou transferidos
+ </string>
+ <string name="TooltipOutboxNotInInventory">
+ É possível colocar somente itens do seu inventário no Marketplace
+ </string>
+ <string name="TooltipOutboxLinked">
+ Não é possível colocar itens ou pastas vinculadas no Marketplace
+ </string>
+ <string name="TooltipOutboxCallingCard">
+ Não é possível colocar cartões de visitas no Marketplace
+ </string>
+ <string name="TooltipOutboxDragActive">
+ Não é possível mover uma listagem publicada
+ </string>
+ <string name="TooltipOutboxCannotMoveRoot">
+ Não é possível mover a pasta raiz das listagens do Marketplace
+ </string>
+ <string name="TooltipOutboxMixedStock">
+ Todos os itens em uma pasta de estoque têm o mesmo tipo e permissão
+ </string>
+ <string name="TooltipDragOntoOwnChild">
+ Não é possível mover uma pasta para seu filho
+ </string>
+ <string name="TooltipDragOntoSelf">
+ Não é possível mover uma pasta para dentro dela mesma
+ </string>
+ <string name="TooltipHttpUrl">
+ Clique para ver a página web
+ </string>
+ <string name="TooltipSLURL">
+ Clique para ver os dados desta localização
+ </string>
+ <string name="TooltipAgentUrl">
+ Clique para ver o perfil deste residente
+ </string>
+ <string name="TooltipAgentInspect">
+ Saiba mais sobre este residente
+ </string>
+ <string name="TooltipAgentMute">
+ Clique para silenciar este residente
+ </string>
+ <string name="TooltipAgentUnmute">
+ Clique para desfazer silenciar neste residente
+ </string>
+ <string name="TooltipAgentIM">
+ Clique para enviar uma MI para este residente
+ </string>
+ <string name="TooltipAgentPay">
+ Clique para pagar este residente
+ </string>
+ <string name="TooltipAgentOfferTeleport">
+ Clique para enviar um pedido de amizade a este residente
+ </string>
+ <string name="TooltipAgentRequestFriend">
+ Clique para enviar um pedido de amizade a este residente
+ </string>
+ <string name="TooltipGroupUrl">
+ Clique para ver a descrição deste Grupo
+ </string>
+ <string name="TooltipEventUrl">
+ Clique para ver a descrição deste evento
+ </string>
+ <string name="TooltipClassifiedUrl">
+ Clique para ver este anúncio
+ </string>
+ <string name="TooltipParcelUrl">
+ Clique para ver a descrição desta parcela
+ </string>
+ <string name="TooltipTeleportUrl">
+ Clique para teletransportar para esta localização
+ </string>
+ <string name="TooltipObjectIMUrl">
+ Clique para ver a descrição deste objeto
+ </string>
+ <string name="TooltipMapUrl">
+ Clique para ver esta localização no mapa
+ </string>
+ <string name="TooltipSLAPP">
+ Clique para ativar no secondlife:// comando
+ </string>
<string name="CurrentURL" value="URL atual: [CurrentURL]"/>
- <string name="TooltipEmail">Clique para escrever um email</string>
- <string name="SLurlLabelTeleport">Teletransportar para</string>
- <string name="SLurlLabelShowOnMap">Mostrar no mapa para</string>
- <string name="SLappAgentMute">Silenciar</string>
- <string name="SLappAgentUnmute">Desfazer silenciar</string>
- <string name="SLappAgentIM">MI</string>
- <string name="SLappAgentPay">Pagar</string>
- <string name="SLappAgentOfferTeleport">Oferecer teletransporte para</string>
- <string name="SLappAgentRequestFriend">Pedido de amizade</string>
- <string name="SLappAgentRemoveFriend">Remoção de amigo</string>
- <string name="BUTTON_CLOSE_DARWIN">Fechar (⌘W)</string>
- <string name="BUTTON_CLOSE_WIN">Fechar (Ctrl+W)</string>
- <string name="BUTTON_CLOSE_CHROME">Fechar</string>
- <string name="BUTTON_RESTORE">Restaurar</string>
- <string name="BUTTON_MINIMIZE">Minimizar</string>
- <string name="BUTTON_TEAR_OFF">Separar-se da janela</string>
- <string name="BUTTON_DOCK">conectar-se à barra</string>
- <string name="BUTTON_HELP">Mostrar ajuda</string>
- <string name="TooltipNotecardNotAllowedTypeDrop">Os itens deste tipo não podem ser anexados
-às anotações desta região.</string>
- <string name="TooltipNotecardOwnerRestrictedDrop">Somente itens com permissões irrestritas
+ <string name="TooltipEmail">
+ Clique para escrever um email
+ </string>
+ <string name="SLurlLabelTeleport">
+ Teletransportar para
+ </string>
+ <string name="SLurlLabelShowOnMap">
+ Mostrar no mapa para
+ </string>
+ <string name="SLappAgentMute">
+ Silenciar
+ </string>
+ <string name="SLappAgentUnmute">
+ Desfazer silenciar
+ </string>
+ <string name="SLappAgentIM">
+ MI
+ </string>
+ <string name="SLappAgentPay">
+ Pagar
+ </string>
+ <string name="SLappAgentOfferTeleport">
+ Oferecer teletransporte para
+ </string>
+ <string name="SLappAgentRequestFriend">
+ Pedido de amizade
+ </string>
+ <string name="SLappAgentRemoveFriend">
+ Remoção de amigo
+ </string>
+ <string name="BUTTON_CLOSE_DARWIN">
+ Fechar (⌘W)
+ </string>
+ <string name="BUTTON_CLOSE_WIN">
+ Fechar (Ctrl+W)
+ </string>
+ <string name="BUTTON_CLOSE_CHROME">
+ Fechar
+ </string>
+ <string name="BUTTON_RESTORE">
+ Restaurar
+ </string>
+ <string name="BUTTON_MINIMIZE">
+ Minimizar
+ </string>
+ <string name="BUTTON_TEAR_OFF">
+ Separar-se da janela
+ </string>
+ <string name="BUTTON_DOCK">
+ conectar-se à barra
+ </string>
+ <string name="BUTTON_HELP">
+ Mostrar ajuda
+ </string>
+ <string name="TooltipNotecardNotAllowedTypeDrop">
+ Os itens deste tipo não podem ser anexados
+às anotações desta região.
+ </string>
+ <string name="TooltipNotecardOwnerRestrictedDrop">
+ Somente itens com permissões irrestritas
do 'próximo proprietário’ pode
-ser anexado às anotações.</string>
- <string name="Searching">Buscando...</string>
- <string name="NoneFound">Não encontrado.</string>
- <string name="RetrievingData">Buscando...</string>
- <string name="ReleaseNotes">Notas de versão</string>
- <string name="RELEASE_NOTES_BASE_URL">https://megapahit.net/</string>
- <string name="LoadingData">Carregando...</string>
- <string name="AvatarNameNobody">(ninguém)</string>
- <string name="AvatarNameWaiting">(aguardando)</string>
- <string name="GroupNameNone">(nenhum)</string>
- <string name="AssetErrorNone">Nenhum erro</string>
- <string name="AssetErrorRequestFailed">Item pedido falhou</string>
- <string name="AssetErrorNonexistentFile">Item pedido: arquivo inexistente</string>
- <string name="AssetErrorNotInDatabase">Item pedido: item não encontrado na base de dados.</string>
- <string name="AssetErrorEOF">Fim do arquivo</string>
- <string name="AssetErrorCannotOpenFile">Não é possível abrir arquivo</string>
- <string name="AssetErrorFileNotFound">Arquivo não encontrado</string>
- <string name="AssetErrorTCPTimeout">Tempo de transferência de arquivo expirado</string>
- <string name="AssetErrorCircuitGone">Circuito caiu</string>
- <string name="AssetErrorPriceMismatch">Visualizador e servidor não concordam no preço</string>
- <string name="AssetErrorUnknownStatus">Status desconhecido</string>
- <string name="AssetUploadServerUnreacheble">Serviço não disponível.</string>
- <string name="AssetUploadServerDifficulties">O servidor está enfrentando dificuldades inesperadas.</string>
- <string name="AssetUploadServerUnavaliable">Serviço não disponível ou o tempo final para upload foi atingido.</string>
- <string name="AssetUploadRequestInvalid">Erro na solicitação de upload. Acesso
-http://secondlife.com/support para ajuda ao resolver este problema.</string>
- <string name="SettingValidationError">Falha na validação para importação das configurações [NAME]</string>
- <string name="SettingImportFileError">Não foi possível abrir o arquivo [FILE]</string>
- <string name="SettingParseFileError">Não foi possível abrir o arquivo [FILE]</string>
- <string name="SettingTranslateError">Não foi possível traduzir o vento antigo [NAME]</string>
- <string name="texture">textura</string>
- <string name="sound">som</string>
- <string name="calling card">cartão de visitas</string>
- <string name="landmark">landmark</string>
- <string name="legacy script">script obsoleto</string>
- <string name="clothing">roupas</string>
- <string name="object">objeto</string>
- <string name="note card">anotação</string>
- <string name="folder">pasta</string>
- <string name="root">raiz</string>
- <string name="lsl2 script">script LSL2</string>
- <string name="lsl bytecode">bytecode LSL</string>
- <string name="tga texture">textura tga</string>
- <string name="body part">parte do corpo</string>
- <string name="snapshot">fotografia</string>
- <string name="lost and found">Achados e Perdidos</string>
- <string name="targa image">imagem targa</string>
- <string name="trash">Lixo</string>
- <string name="jpeg image">imagem jpeg</string>
- <string name="animation">animação</string>
- <string name="gesture">gesto</string>
- <string name="simstate">simstate</string>
- <string name="favorite">favorito</string>
- <string name="symbolic link">link</string>
- <string name="symbolic folder link">link da pasta</string>
- <string name="settings blob">configurações</string>
- <string name="mesh">mesh</string>
- <string name="AvatarEditingAppearance">(Edição Aparência)</string>
- <string name="AvatarAway">Distante</string>
- <string name="AvatarDoNotDisturb">Não perturbe</string>
- <string name="AvatarMuted">Mudo</string>
- <string name="anim_express_afraid">Temeroso</string>
- <string name="anim_express_anger">Bravo</string>
- <string name="anim_away">Distante</string>
- <string name="anim_backflip">Virar para trás</string>
- <string name="anim_express_laugh">Rir segurando a barriga</string>
- <string name="anim_express_toothsmile">Sorriso largo</string>
- <string name="anim_blowkiss">Mandar beijo</string>
- <string name="anim_express_bored">Entediado</string>
- <string name="anim_bow">Reverência</string>
- <string name="anim_clap">Aplaudir</string>
- <string name="anim_courtbow">Saudação formal</string>
- <string name="anim_express_cry">Chorar</string>
- <string name="anim_dance1">Dança 1</string>
- <string name="anim_dance2">Dança 2</string>
- <string name="anim_dance3">Dança 3</string>
- <string name="anim_dance4">Dança 4</string>
- <string name="anim_dance5">Dança 5</string>
- <string name="anim_dance6">Dança 6</string>
- <string name="anim_dance7">Dança 7</string>
- <string name="anim_dance8">Dança 8</string>
- <string name="anim_express_disdain">Desdém</string>
- <string name="anim_drink">Beber</string>
- <string name="anim_express_embarrased">Envergonhado</string>
- <string name="anim_angry_fingerwag">Negar com o dedo.</string>
- <string name="anim_fist_pump">Vibrar provocando</string>
- <string name="anim_yoga_float">Levitar Yoga</string>
- <string name="anim_express_frown">Careta</string>
- <string name="anim_impatient">Impaciente</string>
- <string name="anim_jumpforjoy">Pular de alegria</string>
- <string name="anim_kissmybutt">Beije meu bumbum</string>
- <string name="anim_express_kiss">Beijar</string>
- <string name="anim_laugh_short">Rir</string>
- <string name="anim_musclebeach">Exibir músculos</string>
- <string name="anim_no_unhappy">Não (descontente)</string>
- <string name="anim_no_head">Não</string>
- <string name="anim_nyanya">Nya-nya-nya</string>
- <string name="anim_punch_onetwo">Soco um-dois</string>
- <string name="anim_express_open_mouth">Abrir a boca</string>
- <string name="anim_peace">Paz</string>
- <string name="anim_point_you">Apontar para o outro</string>
- <string name="anim_point_me">Apontar para si</string>
- <string name="anim_punch_l">Soco esquerdo</string>
- <string name="anim_punch_r">Soco direito</string>
- <string name="anim_rps_countdown">RPS contar</string>
- <string name="anim_rps_paper">RPS papel</string>
- <string name="anim_rps_rock">RPS pedra</string>
- <string name="anim_rps_scissors">RPS tesoura</string>
- <string name="anim_express_repulsed">Repulsa</string>
- <string name="anim_kick_roundhouse_r">Chute giratório</string>
- <string name="anim_express_sad">Triste</string>
- <string name="anim_salute">Saúde</string>
- <string name="anim_shout">Gritar</string>
- <string name="anim_express_shrug">Encolher ombros</string>
- <string name="anim_express_smile">Sorrir</string>
- <string name="anim_smoke_idle">Fumar à toa</string>
- <string name="anim_smoke_inhale">Inalar fumaça</string>
- <string name="anim_smoke_throw_down">Expelir fumaça</string>
- <string name="anim_express_surprise">Surpresa</string>
- <string name="anim_sword_strike_r">Golpe de espada</string>
- <string name="anim_angry_tantrum">Enraivecer</string>
- <string name="anim_express_tongue_out">Mostrar a língua</string>
- <string name="anim_hello">Onda</string>
- <string name="anim_whisper">Sussurrar</string>
- <string name="anim_whistle">Assobiar</string>
- <string name="anim_express_wink">Piscar</string>
- <string name="anim_wink_hollywood">Piscar (Hollywood)</string>
- <string name="anim_express_worry">Preocupar-se</string>
- <string name="anim_yes_happy">Sim (Feliz)</string>
- <string name="anim_yes_head">Sim</string>
- <string name="multiple_textures">Múltiplo</string>
- <string name="use_texture">Usar textura</string>
- <string name="manip_hint1">Mova o cursor do mouse sobre a regra</string>
- <string name="manip_hint2">para ajustar à grade</string>
- <string name="texture_loading">Carregando...</string>
- <string name="worldmap_offline">Offline</string>
- <string name="worldmap_item_tooltip_format">L$[PRICE] por [AREA] m²</string>
- <string name="worldmap_results_none_found">Nenhum encontrado.</string>
- <string name="Ok">OK</string>
- <string name="Premature end of file">término prematuro do arquivo</string>
- <string name="ST_NO_JOINT">Não é possível encontrar a raiz (ROOT) ou junção (JOINT).</string>
- <string name="NearbyChatTitle">Bate-papo local</string>
- <string name="NearbyChatLabel">(Bate-papo local)</string>
- <string name="whisper">sussurra:</string>
- <string name="shout">grita:</string>
- <string name="ringing">Conectando à conversa de voz no mundo</string>
- <string name="connected">Conectado</string>
- <string name="unavailable">Voz não disponível na sua localização atual</string>
- <string name="hang_up">Desconectado da conversa de Voz no mundo</string>
- <string name="reconnect_nearby">Agora você será reconectado ao bate-papo local.</string>
- <string name="ScriptQuestionCautionChatGranted">'[OBJECTNAME]', um objeto de '[OWNERNAME]', localizado em [REGIONNAME] a [REGIONPOS], obteve permissão para: [PERMISSIONS].</string>
- <string name="ScriptQuestionCautionChatDenied">'[OBJECTNAME]', um objeto de '[OWNERNAME]', localizado em [REGIONNAME] a [REGIONPOS], teve permissão negada para: [PERMISSIONS].</string>
- <string name="AdditionalPermissionsRequestHeader">Se você permitir acesso à sua conta, o objeto também poderá:</string>
- <string name="ScriptTakeMoney">Tomar linden dólares (L$) de você</string>
- <string name="ActOnControlInputs">Atue nas suas entradas de controle</string>
- <string name="RemapControlInputs">Remapeie suas entradas de controle</string>
- <string name="AnimateYourAvatar">Faça uma animação para o seu avatar</string>
- <string name="AttachToYourAvatar">Anexe ao seu avatar</string>
- <string name="ReleaseOwnership">Libere a propriedade e torne-a pública</string>
- <string name="LinkAndDelink">Una e desuna de outros objetos</string>
- <string name="AddAndRemoveJoints">Adicione e remova junções com outros objetos</string>
- <string name="ChangePermissions">Modifique as permissões</string>
- <string name="TrackYourCamera">Acompanhe sua câmera</string>
- <string name="ControlYourCamera">Controle sua camera</string>
- <string name="TeleportYourAgent">Teletransportá-lo</string>
- <string name="ForceSitAvatar">Forçar o avatar a sentar</string>
- <string name="ChangeEnvSettings">Alterar sua configurações de ambiente</string>
- <string name="AgentNameSubst">(Você)</string>
+ser anexado às anotações.
+ </string>
+ <string name="Searching">
+ Buscando...
+ </string>
+ <string name="NoneFound">
+ Não encontrado.
+ </string>
+ <string name="RetrievingData">
+ Buscando...
+ </string>
+ <string name="ReleaseNotes">
+ Notas de versão
+ </string>
+ <string name="RELEASE_NOTES_BASE_URL">
+ https://megapahit.net/
+ </string>
+ <string name="LoadingData">
+ Carregando...
+ </string>
+ <string name="AvatarNameNobody">
+ (ninguém)
+ </string>
+ <string name="AvatarNameWaiting">
+ (aguardando)
+ </string>
+ <string name="GroupNameNone">
+ (nenhum)
+ </string>
+ <string name="AssetErrorNone">
+ Nenhum erro
+ </string>
+ <string name="AssetErrorRequestFailed">
+ Item pedido falhou
+ </string>
+ <string name="AssetErrorNonexistentFile">
+ Item pedido: arquivo inexistente
+ </string>
+ <string name="AssetErrorNotInDatabase">
+ Item pedido: item não encontrado na base de dados.
+ </string>
+ <string name="AssetErrorEOF">
+ Fim do arquivo
+ </string>
+ <string name="AssetErrorCannotOpenFile">
+ Não é possível abrir arquivo
+ </string>
+ <string name="AssetErrorFileNotFound">
+ Arquivo não encontrado
+ </string>
+ <string name="AssetErrorTCPTimeout">
+ Tempo de transferência de arquivo expirado
+ </string>
+ <string name="AssetErrorCircuitGone">
+ Circuito caiu
+ </string>
+ <string name="AssetErrorPriceMismatch">
+ Visualizador e servidor não concordam no preço
+ </string>
+ <string name="AssetErrorUnknownStatus">
+ Status desconhecido
+ </string>
+ <string name="AssetUploadServerUnreacheble">
+ Serviço não disponível.
+ </string>
+ <string name="AssetUploadServerDifficulties">
+ O servidor está enfrentando dificuldades inesperadas.
+ </string>
+ <string name="AssetUploadServerUnavaliable">
+ Serviço não disponível ou o tempo final para upload foi atingido.
+ </string>
+ <string name="AssetUploadRequestInvalid">
+ Erro na solicitação de upload. Acesso
+http://secondlife.com/support para ajuda ao resolver este problema.
+ </string>
+ <string name="SettingValidationError">
+ Falha na validação para importação das configurações [NAME]
+ </string>
+ <string name="SettingImportFileError">
+ Não foi possível abrir o arquivo [FILE]
+ </string>
+ <string name="SettingParseFileError">
+ Não foi possível abrir o arquivo [FILE]
+ </string>
+ <string name="SettingTranslateError">
+ Não foi possível traduzir o vento antigo [NAME]
+ </string>
+ <string name="texture">
+ textura
+ </string>
+ <string name="sound">
+ som
+ </string>
+ <string name="calling card">
+ cartão de visitas
+ </string>
+ <string name="landmark">
+ landmark
+ </string>
+ <string name="legacy script">
+ script obsoleto
+ </string>
+ <string name="clothing">
+ roupas
+ </string>
+ <string name="object">
+ objeto
+ </string>
+ <string name="note card">
+ anotação
+ </string>
+ <string name="folder">
+ pasta
+ </string>
+ <string name="root">
+ raiz
+ </string>
+ <string name="lsl2 script">
+ script LSL2
+ </string>
+ <string name="lsl bytecode">
+ bytecode LSL
+ </string>
+ <string name="tga texture">
+ textura tga
+ </string>
+ <string name="body part">
+ parte do corpo
+ </string>
+ <string name="snapshot">
+ fotografia
+ </string>
+ <string name="lost and found">
+ Achados e Perdidos
+ </string>
+ <string name="targa image">
+ imagem targa
+ </string>
+ <string name="trash">
+ Lixo
+ </string>
+ <string name="jpeg image">
+ imagem jpeg
+ </string>
+ <string name="animation">
+ animação
+ </string>
+ <string name="gesture">
+ gesto
+ </string>
+ <string name="simstate">
+ simstate
+ </string>
+ <string name="favorite">
+ favorito
+ </string>
+ <string name="symbolic link">
+ link
+ </string>
+ <string name="symbolic folder link">
+ link da pasta
+ </string>
+ <string name="settings blob">
+ configurações
+ </string>
+ <string name="mesh">
+ mesh
+ </string>
+ <string name="AvatarEditingAppearance">
+ (Edição Aparência)
+ </string>
+ <string name="AvatarAway">
+ Distante
+ </string>
+ <string name="AvatarDoNotDisturb">
+ Não perturbe
+ </string>
+ <string name="AvatarMuted">
+ Mudo
+ </string>
+ <string name="anim_express_afraid">
+ Temeroso
+ </string>
+ <string name="anim_express_anger">
+ Bravo
+ </string>
+ <string name="anim_away">
+ Distante
+ </string>
+ <string name="anim_backflip">
+ Virar para trás
+ </string>
+ <string name="anim_express_laugh">
+ Rir segurando a barriga
+ </string>
+ <string name="anim_express_toothsmile">
+ Sorriso largo
+ </string>
+ <string name="anim_blowkiss">
+ Mandar beijo
+ </string>
+ <string name="anim_express_bored">
+ Entediado
+ </string>
+ <string name="anim_bow">
+ Reverência
+ </string>
+ <string name="anim_clap">
+ Aplaudir
+ </string>
+ <string name="anim_courtbow">
+ Saudação formal
+ </string>
+ <string name="anim_express_cry">
+ Chorar
+ </string>
+ <string name="anim_dance1">
+ Dança 1
+ </string>
+ <string name="anim_dance2">
+ Dança 2
+ </string>
+ <string name="anim_dance3">
+ Dança 3
+ </string>
+ <string name="anim_dance4">
+ Dança 4
+ </string>
+ <string name="anim_dance5">
+ Dança 5
+ </string>
+ <string name="anim_dance6">
+ Dança 6
+ </string>
+ <string name="anim_dance7">
+ Dança 7
+ </string>
+ <string name="anim_dance8">
+ Dança 8
+ </string>
+ <string name="anim_express_disdain">
+ Desdém
+ </string>
+ <string name="anim_drink">
+ Beber
+ </string>
+ <string name="anim_express_embarrased">
+ Envergonhado
+ </string>
+ <string name="anim_angry_fingerwag">
+ Negar com o dedo.
+ </string>
+ <string name="anim_fist_pump">
+ Vibrar provocando
+ </string>
+ <string name="anim_yoga_float">
+ Levitar Yoga
+ </string>
+ <string name="anim_express_frown">
+ Careta
+ </string>
+ <string name="anim_impatient">
+ Impaciente
+ </string>
+ <string name="anim_jumpforjoy">
+ Pular de alegria
+ </string>
+ <string name="anim_kissmybutt">
+ Beije meu bumbum
+ </string>
+ <string name="anim_express_kiss">
+ Beijar
+ </string>
+ <string name="anim_laugh_short">
+ Rir
+ </string>
+ <string name="anim_musclebeach">
+ Exibir músculos
+ </string>
+ <string name="anim_no_unhappy">
+ Não (descontente)
+ </string>
+ <string name="anim_no_head">
+ Não
+ </string>
+ <string name="anim_nyanya">
+ Nya-nya-nya
+ </string>
+ <string name="anim_punch_onetwo">
+ Soco um-dois
+ </string>
+ <string name="anim_express_open_mouth">
+ Abrir a boca
+ </string>
+ <string name="anim_peace">
+ Paz
+ </string>
+ <string name="anim_point_you">
+ Apontar para o outro
+ </string>
+ <string name="anim_point_me">
+ Apontar para si
+ </string>
+ <string name="anim_punch_l">
+ Soco esquerdo
+ </string>
+ <string name="anim_punch_r">
+ Soco direito
+ </string>
+ <string name="anim_rps_countdown">
+ RPS contar
+ </string>
+ <string name="anim_rps_paper">
+ RPS papel
+ </string>
+ <string name="anim_rps_rock">
+ RPS pedra
+ </string>
+ <string name="anim_rps_scissors">
+ RPS tesoura
+ </string>
+ <string name="anim_express_repulsed">
+ Repulsa
+ </string>
+ <string name="anim_kick_roundhouse_r">
+ Chute giratório
+ </string>
+ <string name="anim_express_sad">
+ Triste
+ </string>
+ <string name="anim_salute">
+ Saúde
+ </string>
+ <string name="anim_shout">
+ Gritar
+ </string>
+ <string name="anim_express_shrug">
+ Encolher ombros
+ </string>
+ <string name="anim_express_smile">
+ Sorrir
+ </string>
+ <string name="anim_smoke_idle">
+ Fumar à toa
+ </string>
+ <string name="anim_smoke_inhale">
+ Inalar fumaça
+ </string>
+ <string name="anim_smoke_throw_down">
+ Expelir fumaça
+ </string>
+ <string name="anim_express_surprise">
+ Surpresa
+ </string>
+ <string name="anim_sword_strike_r">
+ Golpe de espada
+ </string>
+ <string name="anim_angry_tantrum">
+ Enraivecer
+ </string>
+ <string name="anim_express_tongue_out">
+ Mostrar a língua
+ </string>
+ <string name="anim_hello">
+ Onda
+ </string>
+ <string name="anim_whisper">
+ Sussurrar
+ </string>
+ <string name="anim_whistle">
+ Assobiar
+ </string>
+ <string name="anim_express_wink">
+ Piscar
+ </string>
+ <string name="anim_wink_hollywood">
+ Piscar (Hollywood)
+ </string>
+ <string name="anim_express_worry">
+ Preocupar-se
+ </string>
+ <string name="anim_yes_happy">
+ Sim (Feliz)
+ </string>
+ <string name="anim_yes_head">
+ Sim
+ </string>
+ <string name="multiple_textures">
+ Múltiplo
+ </string>
+ <string name="use_texture">
+ Usar textura
+ </string>
+ <string name="manip_hint1">
+ Mova o cursor do mouse sobre a regra
+ </string>
+ <string name="manip_hint2">
+ para ajustar à grade
+ </string>
+ <string name="texture_loading">
+ Carregando...
+ </string>
+ <string name="worldmap_offline">
+ Offline
+ </string>
+ <string name="worldmap_item_tooltip_format">
+ L$[PRICE] por [AREA] m²
+ </string>
+ <string name="worldmap_results_none_found">
+ Nenhum encontrado.
+ </string>
+ <string name="Ok">
+ OK
+ </string>
+ <string name="Premature end of file">
+ término prematuro do arquivo
+ </string>
+ <string name="ST_NO_JOINT">
+ Não é possível encontrar a raiz (ROOT) ou junção (JOINT).
+ </string>
+ <string name="NearbyChatTitle">
+ Bate-papo local
+ </string>
+ <string name="NearbyChatLabel">
+ (Bate-papo local)
+ </string>
+ <string name="whisper">
+ sussurra:
+ </string>
+ <string name="shout">
+ grita:
+ </string>
+ <string name="ringing">
+ Conectando à conversa de voz no mundo
+ </string>
+ <string name="connected">
+ Conectado
+ </string>
+ <string name="unavailable">
+ Voz não disponível na sua localização atual
+ </string>
+ <string name="hang_up">
+ Desconectado da conversa de Voz no mundo
+ </string>
+ <string name="reconnect_nearby">
+ Agora você será reconectado ao bate-papo local.
+ </string>
+ <string name="ScriptQuestionCautionChatGranted">
+ '[OBJECTNAME]', um objeto de '[OWNERNAME]', localizado em [REGIONNAME] a [REGIONPOS], obteve permissão para: [PERMISSIONS].
+ </string>
+ <string name="ScriptQuestionCautionChatDenied">
+ '[OBJECTNAME]', um objeto de '[OWNERNAME]', localizado em [REGIONNAME] a [REGIONPOS], teve permissão negada para: [PERMISSIONS].
+ </string>
+ <string name="AdditionalPermissionsRequestHeader">
+ Se você permitir acesso à sua conta, o objeto também poderá:
+ </string>
+ <string name="ScriptTakeMoney">
+ Tomar linden dólares (L$) de você
+ </string>
+ <string name="ActOnControlInputs">
+ Atue nas suas entradas de controle
+ </string>
+ <string name="RemapControlInputs">
+ Remapeie suas entradas de controle
+ </string>
+ <string name="AnimateYourAvatar">
+ Faça uma animação para o seu avatar
+ </string>
+ <string name="AttachToYourAvatar">
+ Anexe ao seu avatar
+ </string>
+ <string name="ReleaseOwnership">
+ Libere a propriedade e torne-a pública
+ </string>
+ <string name="LinkAndDelink">
+ Una e desuna de outros objetos
+ </string>
+ <string name="AddAndRemoveJoints">
+ Adicione e remova junções com outros objetos
+ </string>
+ <string name="ChangePermissions">
+ Modifique as permissões
+ </string>
+ <string name="TrackYourCamera">
+ Acompanhe sua câmera
+ </string>
+ <string name="ControlYourCamera">
+ Controle sua camera
+ </string>
+ <string name="TeleportYourAgent">
+ Teletransportá-lo
+ </string>
+ <string name="ForceSitAvatar">
+ Forçar o avatar a sentar
+ </string>
+ <string name="ChangeEnvSettings">
+ Alterar sua configurações de ambiente
+ </string>
+ <string name="AgentNameSubst">
+ (Você)
+ </string>
<string name="JoinAnExperience"/>
- <string name="SilentlyManageEstateAccess">Suprimir alertas ao gerenciar listas de acesso ao terreno</string>
- <string name="OverrideYourAnimations">Substituir suas animações padrão</string>
- <string name="ScriptReturnObjects">Retornar objetos em seu nome</string>
- <string name="UnknownScriptPermission">(desconhecido)!</string>
- <string name="SIM_ACCESS_PG">Público geral</string>
- <string name="SIM_ACCESS_MATURE">Moderado</string>
- <string name="SIM_ACCESS_ADULT">Adulto</string>
- <string name="SIM_ACCESS_DOWN">Desconectado</string>
- <string name="SIM_ACCESS_MIN">Desconhecido</string>
- <string name="land_type_unknown">(desconhecido)</string>
- <string name="Estate / Full Region">Propriedadade / Região inteira:</string>
- <string name="Estate / Homestead">Imóvel / Homestead</string>
- <string name="Mainland / Homestead">Continente / Homestead</string>
- <string name="Mainland / Full Region">Continente / Região inteira:</string>
- <string name="all_files">Todos os arquivos</string>
- <string name="sound_files">Sons</string>
- <string name="animation_files">Animações</string>
- <string name="image_files">Imagens</string>
- <string name="save_file_verb">Salvar</string>
- <string name="load_file_verb">Carregar</string>
- <string name="targa_image_files">Imagens Targa</string>
- <string name="bitmap_image_files">Imagens Bitmap</string>
- <string name="png_image_files">Imagens PNG</string>
- <string name="save_texture_image_files">Imagens targa ou PNG</string>
- <string name="avi_movie_file">Arquivo de vídeo AVI</string>
- <string name="xaf_animation_file">Arquivo de animação XAF</string>
- <string name="xml_file">Arquivo XML</string>
- <string name="raw_file">Arquivo RAW</string>
- <string name="compressed_image_files">Imagens compactadas</string>
- <string name="load_files">Carregar arquivos</string>
- <string name="choose_the_directory">Selecionar pasta</string>
- <string name="script_files">Scripts</string>
- <string name="dictionary_files">Dicionários</string>
- <string name="shape">Silhueta</string>
- <string name="skin">Pele</string>
- <string name="hair">Cabelo</string>
- <string name="eyes">Olhos</string>
- <string name="shirt">Camisa</string>
- <string name="pants">Calças</string>
- <string name="shoes">Sapatos</string>
- <string name="socks">Meias</string>
- <string name="jacket">Blusa</string>
- <string name="gloves">Luvas</string>
- <string name="undershirt">Camiseta</string>
- <string name="underpants">Roupa de baixo</string>
- <string name="skirt">Saia</string>
- <string name="alpha">Alpha</string>
- <string name="tattoo">Tatuagem</string>
- <string name="universal">Universal</string>
- <string name="physics">Físico</string>
- <string name="invalid">Inválido</string>
- <string name="none">nenhum</string>
- <string name="shirt_not_worn">Camisa não vestida</string>
- <string name="pants_not_worn">Calças não vestidas</string>
- <string name="shoes_not_worn">Sapatos não calçados</string>
- <string name="socks_not_worn">Meias não calçadas</string>
- <string name="jacket_not_worn">Jaqueta não vestida</string>
- <string name="gloves_not_worn">Luvas não calçadas</string>
- <string name="undershirt_not_worn">Camiseta não vestida</string>
- <string name="underpants_not_worn">Roupa de baixo não vestida</string>
- <string name="skirt_not_worn">Saia não vestida</string>
- <string name="alpha_not_worn">Alpha não vestido</string>
- <string name="tattoo_not_worn">Tatuagem não usada</string>
- <string name="universal_not_worn">Universal não usado</string>
- <string name="physics_not_worn">Físico não usado</string>
- <string name="invalid_not_worn">inválido</string>
- <string name="create_new_shape">Criar novo físico</string>
- <string name="create_new_skin">Criar pele nova</string>
- <string name="create_new_hair">Criar cabelo novo</string>
- <string name="create_new_eyes">Criar olhos novos</string>
- <string name="create_new_shirt">Criar camisa nova</string>
- <string name="create_new_pants">Criar calças novas</string>
- <string name="create_new_shoes">Criar sapatos novos</string>
- <string name="create_new_socks">Criar meias novas</string>
- <string name="create_new_jacket">Criar jaqueta nova</string>
- <string name="create_new_gloves">Criar luvas novas</string>
- <string name="create_new_undershirt">Criar camiseta nova</string>
- <string name="create_new_underpants">Criar roupa de baixo nova</string>
- <string name="create_new_skirt">Criar saia nova</string>
- <string name="create_new_alpha">Criar Alpha novo</string>
- <string name="create_new_tattoo">Criar nova tatuagem</string>
- <string name="create_new_universal">Criar um novo universal</string>
- <string name="create_new_physics">Criar novo físico</string>
- <string name="create_new_invalid">inválido</string>
- <string name="NewWearable">Novo [WEARABLE_ITEM]</string>
- <string name="next">Próximo</string>
- <string name="ok">OK</string>
- <string name="GroupNotifyGroupNotice">Anúncio de grupo</string>
- <string name="GroupNotifyGroupNotices">Anúncios do grupo</string>
- <string name="GroupNotifySentBy">Enviado por</string>
- <string name="GroupNotifyAttached">Anexo:</string>
- <string name="GroupNotifyViewPastNotices">Ver últimos anúncios ou optar por não receber essas mensagens aqui.</string>
- <string name="GroupNotifyOpenAttachment">Abrir anexo</string>
- <string name="GroupNotifySaveAttachment">Salvar anexo</string>
- <string name="TeleportOffer">Oferta de teletransporte</string>
- <string name="StartUpNotifications">Novas notificações chegaram enquanto você estava fora...</string>
- <string name="OverflowInfoChannelString">Você tem mais [%d] notificações</string>
- <string name="BodyPartsRightArm">Braço direito</string>
- <string name="BodyPartsHead">Cabeça</string>
- <string name="BodyPartsLeftArm">Braço esquerdo</string>
- <string name="BodyPartsLeftLeg">Perna esquerda</string>
- <string name="BodyPartsTorso">Tronco</string>
- <string name="BodyPartsRightLeg">Perna direita</string>
- <string name="BodyPartsEnhancedSkeleton">Esqueleto aprimorado</string>
- <string name="GraphicsQualityLow">Baixo</string>
- <string name="GraphicsQualityMid">Meio</string>
- <string name="GraphicsQualityHigh">Alto</string>
- <string name="LeaveMouselook">Pressione ESC para retornar para visão do mundo</string>
- <string name="InventoryNoMatchingItems">Não encontrou o que procura? Tente buscar no [secondlife:///app/search/people/[SEARCH_TERM] Search].</string>
- <string name="InventoryNoMatchingRecentItems">Não encontrou o que procura? Tente [secondlife:///app/inventory/filters Show filters].</string>
- <string name="PlacesNoMatchingItems">Não encontrou o que procura? Tente buscar no [secondlife:///app/search/groups/[SEARCH_TERM] Search].</string>
- <string name="FavoritesNoMatchingItems">Arraste um marco para adicioná-lo aos seus favoritos.</string>
- <string name="MarketplaceNoMatchingItems">Nenhum item correspondente encontrado. Verifique a ortografia de sua cadeia de pesquisa e tente novamente.</string>
- <string name="InventoryNoTexture">Você não possui uma cópia desta textura no seu inventário</string>
- <string name="InventoryInboxNoItems">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]/</string>
- <string name="MarketplaceURL_CreateStore">http://community.secondlife.com/t5/English-Knowledge-Base/Selling-in-the-Marketplace/ta-p/700193#Section_.3</string>
- <string name="MarketplaceURL_Dashboard">https://marketplace.[MARKETPLACE_DOMAIN_NAME]/merchants/store/dashboard</string>
- <string name="MarketplaceURL_Imports">https://marketplace.[MARKETPLACE_DOMAIN_NAME]/merchants/store/imports</string>
- <string name="MarketplaceURL_LearnMore">https://marketplace.[MARKETPLACE_DOMAIN_NAME]/learn_more</string>
- <string name="InventoryPlayAnimationTooltip">Abrir a janela com as opções do Jogo.</string>
- <string name="InventoryPlayGestureTooltip">Executar o gesto selecionado no mundo.</string>
- <string name="InventoryPlaySoundTooltip">Abrir a janela com as opções do Jogo.</string>
- <string name="InventoryOutboxNotMerchantTitle">Qualquer um pode vender itens no Mercado.</string>
+ <string name="SilentlyManageEstateAccess">
+ Suprimir alertas ao gerenciar listas de acesso ao terreno
+ </string>
+ <string name="OverrideYourAnimations">
+ Substituir suas animações padrão
+ </string>
+ <string name="ScriptReturnObjects">
+ Retornar objetos em seu nome
+ </string>
+ <string name="UnknownScriptPermission">
+ (desconhecido)!
+ </string>
+ <string name="SIM_ACCESS_PG">
+ Público geral
+ </string>
+ <string name="SIM_ACCESS_MATURE">
+ Moderado
+ </string>
+ <string name="SIM_ACCESS_ADULT">
+ Adulto
+ </string>
+ <string name="SIM_ACCESS_DOWN">
+ Desconectado
+ </string>
+ <string name="SIM_ACCESS_MIN">
+ Desconhecido
+ </string>
+ <string name="land_type_unknown">
+ (desconhecido)
+ </string>
+ <string name="Estate / Full Region">
+ Propriedadade / Região inteira:
+ </string>
+ <string name="Estate / Homestead">
+ Imóvel / Homestead
+ </string>
+ <string name="Mainland / Homestead">
+ Continente / Homestead
+ </string>
+ <string name="Mainland / Full Region">
+ Continente / Região inteira:
+ </string>
+ <string name="all_files">
+ Todos os arquivos
+ </string>
+ <string name="sound_files">
+ Sons
+ </string>
+ <string name="animation_files">
+ Animações
+ </string>
+ <string name="image_files">
+ Imagens
+ </string>
+ <string name="save_file_verb">
+ Salvar
+ </string>
+ <string name="load_file_verb">
+ Carregar
+ </string>
+ <string name="targa_image_files">
+ Imagens Targa
+ </string>
+ <string name="bitmap_image_files">
+ Imagens Bitmap
+ </string>
+ <string name="png_image_files">
+ Imagens PNG
+ </string>
+ <string name="save_texture_image_files">
+ Imagens targa ou PNG
+ </string>
+ <string name="avi_movie_file">
+ Arquivo de vídeo AVI
+ </string>
+ <string name="xaf_animation_file">
+ Arquivo de animação XAF
+ </string>
+ <string name="xml_file">
+ Arquivo XML
+ </string>
+ <string name="raw_file">
+ Arquivo RAW
+ </string>
+ <string name="compressed_image_files">
+ Imagens compactadas
+ </string>
+ <string name="load_files">
+ Carregar arquivos
+ </string>
+ <string name="choose_the_directory">
+ Selecionar pasta
+ </string>
+ <string name="script_files">
+ Scripts
+ </string>
+ <string name="dictionary_files">
+ Dicionários
+ </string>
+ <string name="shape">
+ Silhueta
+ </string>
+ <string name="skin">
+ Pele
+ </string>
+ <string name="hair">
+ Cabelo
+ </string>
+ <string name="eyes">
+ Olhos
+ </string>
+ <string name="shirt">
+ Camisa
+ </string>
+ <string name="pants">
+ Calças
+ </string>
+ <string name="shoes">
+ Sapatos
+ </string>
+ <string name="socks">
+ Meias
+ </string>
+ <string name="jacket">
+ Blusa
+ </string>
+ <string name="gloves">
+ Luvas
+ </string>
+ <string name="undershirt">
+ Camiseta
+ </string>
+ <string name="underpants">
+ Roupa de baixo
+ </string>
+ <string name="skirt">
+ Saia
+ </string>
+ <string name="alpha">
+ Alpha
+ </string>
+ <string name="tattoo">
+ Tatuagem
+ </string>
+ <string name="universal">
+ Universal
+ </string>
+ <string name="physics">
+ Físico
+ </string>
+ <string name="invalid">
+ Inválido
+ </string>
+ <string name="none">
+ nenhum
+ </string>
+ <string name="shirt_not_worn">
+ Camisa não vestida
+ </string>
+ <string name="pants_not_worn">
+ Calças não vestidas
+ </string>
+ <string name="shoes_not_worn">
+ Sapatos não calçados
+ </string>
+ <string name="socks_not_worn">
+ Meias não calçadas
+ </string>
+ <string name="jacket_not_worn">
+ Jaqueta não vestida
+ </string>
+ <string name="gloves_not_worn">
+ Luvas não calçadas
+ </string>
+ <string name="undershirt_not_worn">
+ Camiseta não vestida
+ </string>
+ <string name="underpants_not_worn">
+ Roupa de baixo não vestida
+ </string>
+ <string name="skirt_not_worn">
+ Saia não vestida
+ </string>
+ <string name="alpha_not_worn">
+ Alpha não vestido
+ </string>
+ <string name="tattoo_not_worn">
+ Tatuagem não usada
+ </string>
+ <string name="universal_not_worn">
+ Universal não usado
+ </string>
+ <string name="physics_not_worn">
+ Físico não usado
+ </string>
+ <string name="invalid_not_worn">
+ inválido
+ </string>
+ <string name="create_new_shape">
+ Criar novo físico
+ </string>
+ <string name="create_new_skin">
+ Criar pele nova
+ </string>
+ <string name="create_new_hair">
+ Criar cabelo novo
+ </string>
+ <string name="create_new_eyes">
+ Criar olhos novos
+ </string>
+ <string name="create_new_shirt">
+ Criar camisa nova
+ </string>
+ <string name="create_new_pants">
+ Criar calças novas
+ </string>
+ <string name="create_new_shoes">
+ Criar sapatos novos
+ </string>
+ <string name="create_new_socks">
+ Criar meias novas
+ </string>
+ <string name="create_new_jacket">
+ Criar jaqueta nova
+ </string>
+ <string name="create_new_gloves">
+ Criar luvas novas
+ </string>
+ <string name="create_new_undershirt">
+ Criar camiseta nova
+ </string>
+ <string name="create_new_underpants">
+ Criar roupa de baixo nova
+ </string>
+ <string name="create_new_skirt">
+ Criar saia nova
+ </string>
+ <string name="create_new_alpha">
+ Criar Alpha novo
+ </string>
+ <string name="create_new_tattoo">
+ Criar nova tatuagem
+ </string>
+ <string name="create_new_universal">
+ Criar um novo universal
+ </string>
+ <string name="create_new_physics">
+ Criar novo físico
+ </string>
+ <string name="create_new_invalid">
+ inválido
+ </string>
+ <string name="NewWearable">
+ Novo [WEARABLE_ITEM]
+ </string>
+ <string name="next">
+ Próximo
+ </string>
+ <string name="ok">
+ OK
+ </string>
+ <string name="GroupNotifyGroupNotice">
+ Anúncio de grupo
+ </string>
+ <string name="GroupNotifyGroupNotices">
+ Anúncios do grupo
+ </string>
+ <string name="GroupNotifySentBy">
+ Enviado por
+ </string>
+ <string name="GroupNotifyAttached">
+ Anexo:
+ </string>
+ <string name="GroupNotifyViewPastNotices">
+ Ver últimos anúncios ou optar por não receber essas mensagens aqui.
+ </string>
+ <string name="GroupNotifyOpenAttachment">
+ Abrir anexo
+ </string>
+ <string name="GroupNotifySaveAttachment">
+ Salvar anexo
+ </string>
+ <string name="TeleportOffer">
+ Oferta de teletransporte
+ </string>
+ <string name="StartUpNotifications">
+ Novas notificações chegaram enquanto você estava fora...
+ </string>
+ <string name="OverflowInfoChannelString">
+ Você tem mais [%d] notificações
+ </string>
+ <string name="BodyPartsRightArm">
+ Braço direito
+ </string>
+ <string name="BodyPartsHead">
+ Cabeça
+ </string>
+ <string name="BodyPartsLeftArm">
+ Braço esquerdo
+ </string>
+ <string name="BodyPartsLeftLeg">
+ Perna esquerda
+ </string>
+ <string name="BodyPartsTorso">
+ Tronco
+ </string>
+ <string name="BodyPartsRightLeg">
+ Perna direita
+ </string>
+ <string name="BodyPartsEnhancedSkeleton">
+ Esqueleto aprimorado
+ </string>
+ <string name="GraphicsQualityLow">
+ Baixo
+ </string>
+ <string name="GraphicsQualityMid">
+ Meio
+ </string>
+ <string name="GraphicsQualityHigh">
+ Alto
+ </string>
+ <string name="LeaveMouselook">
+ Pressione ESC para retornar para visão do mundo
+ </string>
+ <string name="InventoryNoMatchingItems">
+ Não encontrou o que procura? Tente buscar no [secondlife:///app/search/people/[SEARCH_TERM] Search].
+ </string>
+ <string name="InventoryNoMatchingRecentItems">
+ Não encontrou o que procura? Tente [secondlife:///app/inventory/filters Show filters].
+ </string>
+ <string name="PlacesNoMatchingItems">
+ Não encontrou o que procura? Tente buscar no [secondlife:///app/search/groups/[SEARCH_TERM] Search].
+ </string>
+ <string name="FavoritesNoMatchingItems">
+ Arraste um marco para adicioná-lo aos seus favoritos.
+ </string>
+ <string name="MarketplaceNoMatchingItems">
+ Nenhum item correspondente encontrado. Verifique a ortografia de sua cadeia de pesquisa e tente novamente.
+ </string>
+ <string name="InventoryNoTexture">
+ Você não possui uma cópia desta textura no seu inventário
+ </string>
+ <string name="InventoryInboxNoItems">
+ 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]/
+ </string>
+ <string name="MarketplaceURL_CreateStore">
+ http://community.secondlife.com/t5/English-Knowledge-Base/Selling-in-the-Marketplace/ta-p/700193#Section_.3
+ </string>
+ <string name="MarketplaceURL_Dashboard">
+ https://marketplace.[MARKETPLACE_DOMAIN_NAME]/merchants/store/dashboard
+ </string>
+ <string name="MarketplaceURL_Imports">
+ https://marketplace.[MARKETPLACE_DOMAIN_NAME]/merchants/store/imports
+ </string>
+ <string name="MarketplaceURL_LearnMore">
+ https://marketplace.[MARKETPLACE_DOMAIN_NAME]/learn_more
+ </string>
+ <string name="InventoryPlayAnimationTooltip">
+ Abrir a janela com as opções do Jogo.
+ </string>
+ <string name="InventoryPlayGestureTooltip">
+ Executar o gesto selecionado no mundo.
+ </string>
+ <string name="InventoryPlaySoundTooltip">
+ Abrir a janela com as opções do Jogo.
+ </string>
+ <string name="InventoryOutboxNotMerchantTitle">
+ Qualquer um pode vender itens no Mercado.
+ </string>
<string name="InventoryOutboxNotMerchantTooltip"/>
- <string name="InventoryOutboxNotMerchant">Se você deseja se tornar um lojista, precisará [[MARKETPLACE_CREATE_STORE_URL] criar uma loja no Mercado].</string>
- <string name="InventoryOutboxNoItemsTitle">Sua caixa de saída está vazia</string>
+ <string name="InventoryOutboxNotMerchant">
+ Se você deseja se tornar um lojista, precisará [[MARKETPLACE_CREATE_STORE_URL] criar uma loja no Mercado].
+ </string>
+ <string name="InventoryOutboxNoItemsTitle">
+ Sua caixa de saída está vazia
+ </string>
<string name="InventoryOutboxNoItemsTooltip"/>
- <string name="InventoryOutboxNoItems">Arraste as pastas para estas áreas e então clique em &quot;Enviar para Mercado&quot; para listar os itens para venda no [[MARKETPLACE_DASHBOARD_URL] Mercado].</string>
- <string name="InventoryOutboxInitializingTitle">Inicializando o Marketplace.</string>
- <string name="InventoryOutboxInitializing">Estamos acessando sua conta na [loja [MARKETPLACE_CREATE_STORE_URL] do Marketplace].</string>
- <string name="InventoryOutboxErrorTitle">Erros do Marketplace.</string>
- <string name="InventoryOutboxError">A loja [[MARKETPLACE_CREATE_STORE_URL] no Marketplace] está retornando erros.</string>
- <string name="InventoryMarketplaceError">Erro ao abrir as listagens do Marketplace.
-Se você continuar a receber essa mensagem, entre em contato com o suporte do Second Life para obter ajuda em http://support.secondlife.com</string>
- <string name="InventoryMarketplaceListingsNoItemsTitle">Sua pasta Listagens do Marketplace está vazia.</string>
- <string name="InventoryMarketplaceListingsNoItems">Arraste pastas para esta área para listá-las para venda no [Marketplace [MARKETPLACE_DASHBOARD_URL]].</string>
- <string name="InventoryItemsCount">( [ITEMS_COUNT] Items )</string>
- <string name="Marketplace Validation Warning Stock">a pasta de estoque deve estar em uma pasta de versões</string>
- <string name="Marketplace Validation Error Mixed Stock">: Erro: todos os itens em uma pasta de estoque devem ser de cópia proibida e todos do mesmo tipo</string>
- <string name="Marketplace Validation Error Subfolder In Stock">: Erro: a pasta de estoque não pode ter subpastas</string>
- <string name="Marketplace Validation Warning Empty">: Aviso: a pasta não contém itens</string>
- <string name="Marketplace Validation Warning Create Stock">: Aviso: criando pasta de estoque</string>
- <string name="Marketplace Validation Warning Create Version">: Aviso: criando pasta de versões</string>
- <string name="Marketplace Validation Warning Move">: Aviso: movendo itens</string>
- <string name="Marketplace Validation Warning Delete">: Aviso: conteúdo da pasta transferido para pasta de estoque, removendo pasta vazia</string>
- <string name="Marketplace Validation Error Stock Item">: Erro: itens de cópia proibida devem estar em uma pasta de estoque</string>
- <string name="Marketplace Validation Warning Unwrapped Item">: Aviso: os itens devem estar em uma pasta de versões</string>
- <string name="Marketplace Validation Error">: Erro:</string>
- <string name="Marketplace Validation Warning">: Aviso:</string>
- <string name="Marketplace Validation Error Empty Version">: Aviso: a pasta de versões deve conter pelo menos 1 item</string>
- <string name="Marketplace Validation Error Empty Stock">: Aviso: a pasta de estoque deve conter pelo menos 1 item</string>
- <string name="Marketplace Validation No Error">Não há erros ou avisos</string>
- <string name="Marketplace Error None">Sem erros</string>
- <string name="Marketplace Error Prefix">Erro:</string>
- <string name="Marketplace Error Not Merchant">antes de enviar os itens para o Marketplace, é necessário que você se defina como um lojista (sem custos).</string>
- <string name="Marketplace Error Not Accepted">Não é possível mover o item nessa pasta.</string>
- <string name="Marketplace Error Unsellable Item">Este item não pode ser vendido no Marketplace.</string>
- <string name="MarketplaceNoID">no Mkt ID</string>
- <string name="MarketplaceLive">publicada</string>
- <string name="MarketplaceActive">ativo</string>
- <string name="MarketplaceMax">máx</string>
- <string name="MarketplaceStock">estoque</string>
- <string name="MarketplaceNoStock">esgotado</string>
- <string name="MarketplaceUpdating">atualizando...</string>
- <string name="UploadFeeInfo">A taxa é baseada em seu nível de inscrição. Níveis mais altos possuem taxas mais baixas. [https://secondlife.com/my/account/membership.php? Saiba mais]</string>
- <string name="Open landmarks">Marcos em aberto</string>
- <string name="Unconstrained">Ilimitado</string>
+ <string name="InventoryOutboxNoItems">
+ Arraste as pastas para estas áreas e então clique em "Enviar para Mercado" para listar os itens para venda no [[MARKETPLACE_DASHBOARD_URL] Mercado].
+ </string>
+ <string name="InventoryOutboxInitializingTitle">
+ Inicializando o Marketplace.
+ </string>
+ <string name="InventoryOutboxInitializing">
+ Estamos acessando sua conta na [loja [MARKETPLACE_CREATE_STORE_URL] do Marketplace].
+ </string>
+ <string name="InventoryOutboxErrorTitle">
+ Erros do Marketplace.
+ </string>
+ <string name="InventoryOutboxError">
+ A loja [[MARKETPLACE_CREATE_STORE_URL] no Marketplace] está retornando erros.
+ </string>
+ <string name="InventoryMarketplaceError">
+ Erro ao abrir as listagens do Marketplace.
+Se você continuar a receber essa mensagem, entre em contato com o suporte do Second Life para obter ajuda em http://support.secondlife.com
+ </string>
+ <string name="InventoryMarketplaceListingsNoItemsTitle">
+ Sua pasta Listagens do Marketplace está vazia.
+ </string>
+ <string name="InventoryMarketplaceListingsNoItems">
+ Arraste pastas para esta área para listá-las para venda no [Marketplace [MARKETPLACE_DASHBOARD_URL]].
+ </string>
+ <string name="InventoryItemsCount">
+ ( [ITEMS_COUNT] Items )
+ </string>
+ <string name="Marketplace Validation Warning Stock">
+ a pasta de estoque deve estar em uma pasta de versões
+ </string>
+ <string name="Marketplace Validation Error Mixed Stock">
+ : Erro: todos os itens em uma pasta de estoque devem ser de cópia proibida e todos do mesmo tipo
+ </string>
+ <string name="Marketplace Validation Error Subfolder In Stock">
+ : Erro: a pasta de estoque não pode ter subpastas
+ </string>
+ <string name="Marketplace Validation Warning Empty">
+ : Aviso: a pasta não contém itens
+ </string>
+ <string name="Marketplace Validation Warning Create Stock">
+ : Aviso: criando pasta de estoque
+ </string>
+ <string name="Marketplace Validation Warning Create Version">
+ : Aviso: criando pasta de versões
+ </string>
+ <string name="Marketplace Validation Warning Move">
+ : Aviso: movendo itens
+ </string>
+ <string name="Marketplace Validation Warning Delete">
+ : Aviso: conteúdo da pasta transferido para pasta de estoque, removendo pasta vazia
+ </string>
+ <string name="Marketplace Validation Error Stock Item">
+ : Erro: itens de cópia proibida devem estar em uma pasta de estoque
+ </string>
+ <string name="Marketplace Validation Warning Unwrapped Item">
+ : Aviso: os itens devem estar em uma pasta de versões
+ </string>
+ <string name="Marketplace Validation Error">
+ : Erro:
+ </string>
+ <string name="Marketplace Validation Warning">
+ : Aviso:
+ </string>
+ <string name="Marketplace Validation Error Empty Version">
+ : Aviso: a pasta de versões deve conter pelo menos 1 item
+ </string>
+ <string name="Marketplace Validation Error Empty Stock">
+ : Aviso: a pasta de estoque deve conter pelo menos 1 item
+ </string>
+ <string name="Marketplace Validation No Error">
+ Não há erros ou avisos
+ </string>
+ <string name="Marketplace Error None">
+ Sem erros
+ </string>
+ <string name="Marketplace Error Prefix">
+ Erro:
+ </string>
+ <string name="Marketplace Error Not Merchant">
+ antes de enviar os itens para o Marketplace, é necessário que você se defina como um lojista (sem custos).
+ </string>
+ <string name="Marketplace Error Not Accepted">
+ Não é possível mover o item nessa pasta.
+ </string>
+ <string name="Marketplace Error Unsellable Item">
+ Este item não pode ser vendido no Marketplace.
+ </string>
+ <string name="MarketplaceNoID">
+ no Mkt ID
+ </string>
+ <string name="MarketplaceLive">
+ publicada
+ </string>
+ <string name="MarketplaceActive">
+ ativo
+ </string>
+ <string name="MarketplaceMax">
+ máx
+ </string>
+ <string name="MarketplaceStock">
+ estoque
+ </string>
+ <string name="MarketplaceNoStock">
+ esgotado
+ </string>
+ <string name="MarketplaceUpdating">
+ atualizando...
+ </string>
+ <string name="UploadFeeInfo">
+ A taxa é baseada em seu nível de inscrição. Níveis mais altos possuem taxas mais baixas. [https://secondlife.com/my/account/membership.php? Saiba mais]
+ </string>
+ <string name="Open landmarks">
+ Marcos em aberto
+ </string>
+ <string name="Unconstrained">
+ Ilimitado
+ </string>
<string name="no_transfer" value="(não transferível)"/>
<string name="no_modify" value="(não modificável)"/>
<string name="no_copy" value="(não copiável)"/>
<string name="worn" value="(vestido)"/>
<string name="link" value="(link)"/>
<string name="broken_link" value="(link_quebrado)&quot;"/>
- <string name="LoadingContents">Carregando conteúdo...</string>
- <string name="NoContents">Nenhum conteúdo</string>
+ <string name="LoadingContents">
+ Carregando conteúdo...
+ </string>
+ <string name="NoContents">
+ Nenhum conteúdo
+ </string>
<string name="WornOnAttachmentPoint" value="(vestido em [ATTACHMENT_POINT])"/>
<string name="AttachmentErrorMessage" value="([ATTACHMENT_ERROR])"/>
<string name="ActiveGesture" value="[GESLABEL] (ativado)"/>
@@ -595,1417 +1649,4139 @@ Se você continuar a receber essa mensagem, entre em contato com o suporte do Se
<string name="Snapshots" value="Fotografias"/>
<string name="No Filters" value="Não"/>
<string name="Since Logoff" value="- Desde desligado"/>
- <string name="InvFolder My Inventory">Meu inventário</string>
- <string name="InvFolder Library">Biblioteca</string>
- <string name="InvFolder Textures">Texturas</string>
- <string name="InvFolder Sounds">Sons</string>
- <string name="InvFolder Calling Cards">Cartões de visitas</string>
- <string name="InvFolder Landmarks">Marcos</string>
- <string name="InvFolder Scripts">Scripts</string>
- <string name="InvFolder Clothing">Vestuário</string>
- <string name="InvFolder Objects">Objetos</string>
- <string name="InvFolder Notecards">Anotações</string>
- <string name="InvFolder New Folder">Nova pasta</string>
- <string name="InvFolder Inventory">Inventário</string>
- <string name="InvFolder Uncompressed Images">Imagens descompactadas</string>
- <string name="InvFolder Body Parts">Corpo</string>
- <string name="InvFolder Trash">Lixo</string>
- <string name="InvFolder Photo Album">Álbum de fotografias</string>
- <string name="InvFolder Lost And Found">Achados e Perdidos</string>
- <string name="InvFolder Uncompressed Sounds">Sons descompactados</string>
- <string name="InvFolder Animations">Animações</string>
- <string name="InvFolder Gestures">Gestos</string>
- <string name="InvFolder Favorite">Meus favoritos</string>
- <string name="InvFolder favorite">Meus favoritos</string>
- <string name="InvFolder Favorites">Meus favoritos</string>
- <string name="InvFolder favorites">Meus favoritos</string>
- <string name="InvFolder Current Outfit">Look atual</string>
- <string name="InvFolder Initial Outfits">Looks iniciais</string>
- <string name="InvFolder My Outfits">Meus looks</string>
- <string name="InvFolder Accessories">Acessórios</string>
- <string name="InvFolder Meshes">Meshes:</string>
- <string name="InvFolder Received Items">Itens recebidos</string>
- <string name="InvFolder Merchant Outbox">Caixa de saída do lojista</string>
- <string name="InvFolder Friends">Amigos</string>
- <string name="InvFolder All">Tudo</string>
- <string name="no_attachments">Nenhum anexo vestido</string>
- <string name="Attachments remain">Anexos ([COUNT] slots permanecem)</string>
- <string name="Buy">Comprar</string>
- <string name="BuyforL$">Comprar por L$</string>
- <string name="Stone">Pedra</string>
- <string name="Metal">Metal</string>
- <string name="Glass">Vidro</string>
- <string name="Wood">Madeira</string>
- <string name="Flesh">Carne</string>
- <string name="Plastic">Plástico</string>
- <string name="Rubber">Borrracha</string>
- <string name="Light">Luz</string>
- <string name="KBShift">Shift</string>
- <string name="KBCtrl">Ctrl</string>
- <string name="Chest">Peito</string>
- <string name="Skull">Crânio</string>
- <string name="Left Shoulder">Ombro esquerdo</string>
- <string name="Right Shoulder">Ombro direito</string>
- <string name="Left Hand">Mão esquerda</string>
- <string name="Right Hand">Mão direita</string>
- <string name="Left Foot">Pé esquerdo</string>
- <string name="Right Foot">Pé direito</string>
- <string name="Spine">Espinha</string>
- <string name="Pelvis">Pélvis</string>
- <string name="Mouth">Boca</string>
- <string name="Chin">Queixo</string>
- <string name="Left Ear">Orelha esquerda</string>
- <string name="Right Ear">Orelha direita</string>
- <string name="Left Eyeball">Globo ocular esquerdo</string>
- <string name="Right Eyeball">Globo ocular direito</string>
- <string name="Nose">Nariz</string>
- <string name="R Upper Arm">Braço superior D</string>
- <string name="R Forearm">Antebraço D</string>
- <string name="L Upper Arm">Braço superior E</string>
- <string name="L Forearm">Antebraço E</string>
- <string name="Right Hip">Quadril direito</string>
- <string name="R Upper Leg">Coxa D</string>
- <string name="R Lower Leg">Perna inferior D</string>
- <string name="Left Hip">Quadril esquerdo</string>
- <string name="L Upper Leg">Coxa E</string>
- <string name="L Lower Leg">Perna inferior E</string>
- <string name="Stomach">Estômago</string>
- <string name="Left Pec">Peitoral E</string>
- <string name="Right Pec">Peitoral D</string>
- <string name="Neck">Pescoço</string>
- <string name="Avatar Center">Centro do avatar</string>
- <string name="Left Ring Finger">Anelar esquerdo</string>
- <string name="Right Ring Finger">Anelar direito</string>
- <string name="Tail Base">Base do rabo</string>
- <string name="Tail Tip">Ponta do rabo</string>
- <string name="Left Wing">Asa esquerda</string>
- <string name="Right Wing">Asa direita</string>
- <string name="Jaw">Maxilar</string>
- <string name="Alt Left Ear">Orelha esquerda alt.</string>
- <string name="Alt Right Ear">Orelha direita alt.</string>
- <string name="Alt Left Eye">Olho esquerdo alt.</string>
- <string name="Alt Right Eye">Olho direito alt.</string>
- <string name="Tongue">Língua</string>
- <string name="Groin">Virilha</string>
- <string name="Left Hind Foot">Pata esq. traseira</string>
- <string name="Right Hind Foot">Pata dir. traseira</string>
- <string name="Invalid Attachment">Ponto de encaixe inválido</string>
- <string name="ATTACHMENT_MISSING_ITEM">Erro: item ausente</string>
- <string name="ATTACHMENT_MISSING_BASE_ITEM">Erro: item base ausente</string>
- <string name="ATTACHMENT_NOT_ATTACHED">Erro: o objeto está no look atual, mas não foi anexado</string>
- <string name="YearsMonthsOld">[AGEYEARS] [AGEMONTHS] de idade</string>
- <string name="YearsOld">[AGEYEARS] de idade</string>
- <string name="MonthsOld">[AGEMONTHS] de idade</string>
- <string name="WeeksOld">[AGEWEEKS] de idade</string>
- <string name="DaysOld">[AGEDAYS] de idade</string>
- <string name="TodayOld">Cadastrado hoje</string>
- <string name="av_render_everyone_now">Agora, todos podem te ver.</string>
- <string name="av_render_not_everyone">Sua renderização pode não acontecer para todos ao seu redor.</string>
- <string name="av_render_over_half">Sua renderização pode não acontecer para metade das pessoas ao seu redor.</string>
- <string name="av_render_most_of">Sua renderização pode não acontecer para a maioria das pessoas ao seu redor.</string>
- <string name="av_render_anyone">Sua renderização pode não acontecer para ninguém ao seu redor.</string>
- <string name="hud_description_total">Seu HUD</string>
- <string name="hud_name_with_joint">[OBJ_NAME] (vestido em [JNT_NAME])</string>
- <string name="hud_render_memory_warning">[HUD_DETAILS] usa muita memória de textura</string>
- <string name="hud_render_cost_warning">[HUD_DETAILS] contém muitos objetos e texturas que utilizam o máximo de recursos</string>
- <string name="hud_render_heavy_textures_warning">[HUD_DETAILS] contém muitas texturas grandes</string>
- <string name="hud_render_cramped_warning">[HUD_DETAILS] contém muitos objetos</string>
- <string name="hud_render_textures_warning">[HUD_DETAILS] contém muitas texturas</string>
- <string name="AgeYearsA">[COUNT] ano</string>
- <string name="AgeYearsB">[COUNT] anos</string>
- <string name="AgeYearsC">[COUNT] anos</string>
- <string name="AgeMonthsA">[COUNT] mês</string>
- <string name="AgeMonthsB">[COUNT] meses</string>
- <string name="AgeMonthsC">[COUNT] meses</string>
- <string name="AgeWeeksA">[COUNT] semana</string>
- <string name="AgeWeeksB">[COUNT] semanas</string>
- <string name="AgeWeeksC">[COUNT] semanas</string>
- <string name="AgeDaysA">[COUNT] dia</string>
- <string name="AgeDaysB">[COUNT] dias</string>
- <string name="AgeDaysC">[COUNT] dias</string>
- <string name="GroupMembersA">[COUNT] membro</string>
- <string name="GroupMembersB">[COUNT] membros</string>
- <string name="GroupMembersC">[COUNT] membros</string>
- <string name="AcctTypeResident">Residente</string>
- <string name="AcctTypeTrial">Prova</string>
- <string name="AcctTypeCharterMember">Lista de membros</string>
- <string name="AcctTypeEmployee">Empregado da Linden Lab</string>
- <string name="PaymentInfoUsed">Dados de pagamento usados</string>
- <string name="PaymentInfoOnFile">Dados de pagamento fornecidos</string>
- <string name="NoPaymentInfoOnFile">Nenhum dado de pagamento</string>
- <string name="AgeVerified">Idade comprovada</string>
- <string name="NotAgeVerified">Idade não comprovada</string>
- <string name="Center 2">Centro 2</string>
- <string name="Top Right">Topo direita</string>
- <string name="Top">Topo</string>
- <string name="Top Left">Topo esquerda</string>
- <string name="Center">Centro</string>
- <string name="Bottom Left">Inferior esquerdo</string>
- <string name="Bottom">Inferior</string>
- <string name="Bottom Right">Inferior direito</string>
- <string name="CompileQueueDownloadedCompiling">Baixado, agora compilando</string>
- <string name="CompileQueueServiceUnavailable">Serviço de compilação de scripts não disponível</string>
- <string name="CompileQueueScriptNotFound">Script não encontrado no servidor.</string>
- <string name="CompileQueueProblemDownloading">Problema no download</string>
- <string name="CompileQueueInsufficientPermDownload">Permissões insuficientes para fazer o download do script.</string>
- <string name="CompileQueueInsufficientPermFor">Permissões insuficientes para</string>
- <string name="CompileQueueUnknownFailure">Falha desconhecida para download</string>
- <string name="CompileNoExperiencePerm">Pulando script [SCRIPT] com experiência [EXPERIENCE]</string>
- <string name="CompileQueueTitle">Progresso do recompilamento</string>
- <string name="CompileQueueStart">recompilar</string>
- <string name="ResetQueueTitle">Reset Progresso</string>
- <string name="ResetQueueStart">Zerar</string>
- <string name="RunQueueTitle">Definir funcionamento do progresso</string>
- <string name="RunQueueStart">deixar funcionando</string>
- <string name="NotRunQueueTitle">Definir progresso não funcionando</string>
- <string name="NotRunQueueStart">não deixar funcionando</string>
- <string name="CompileSuccessful">Compilação bem sucedida</string>
- <string name="CompileSuccessfulSaving">Compilação bem sucedida, salvando...</string>
- <string name="SaveComplete">Salvo.</string>
- <string name="UploadFailed">Falha ao carregar arquivo:</string>
- <string name="ObjectOutOfRange">Script (objeto fora de alcance)</string>
- <string name="ScriptWasDeleted">Script (excluído do inventário)</string>
- <string name="GodToolsObjectOwnedBy">Objeto [OBJECT] de propriedade de [OWNER]</string>
- <string name="GroupsNone">nenhum</string>
+ <string name="InvFolder My Inventory">
+ Meu inventário
+ </string>
+ <string name="InvFolder Library">
+ Biblioteca
+ </string>
+ <string name="InvFolder Textures">
+ Texturas
+ </string>
+ <string name="InvFolder Sounds">
+ Sons
+ </string>
+ <string name="InvFolder Calling Cards">
+ Cartões de visitas
+ </string>
+ <string name="InvFolder Landmarks">
+ Marcos
+ </string>
+ <string name="InvFolder Scripts">
+ Scripts
+ </string>
+ <string name="InvFolder Clothing">
+ Vestuário
+ </string>
+ <string name="InvFolder Objects">
+ Objetos
+ </string>
+ <string name="InvFolder Notecards">
+ Anotações
+ </string>
+ <string name="InvFolder New Folder">
+ Nova pasta
+ </string>
+ <string name="InvFolder Inventory">
+ Inventário
+ </string>
+ <string name="InvFolder Uncompressed Images">
+ Imagens descompactadas
+ </string>
+ <string name="InvFolder Body Parts">
+ Corpo
+ </string>
+ <string name="InvFolder Trash">
+ Lixo
+ </string>
+ <string name="InvFolder Photo Album">
+ Álbum de fotografias
+ </string>
+ <string name="InvFolder Lost And Found">
+ Achados e Perdidos
+ </string>
+ <string name="InvFolder Uncompressed Sounds">
+ Sons descompactados
+ </string>
+ <string name="InvFolder Animations">
+ Animações
+ </string>
+ <string name="InvFolder Gestures">
+ Gestos
+ </string>
+ <string name="InvFolder Favorite">
+ Meus favoritos
+ </string>
+ <string name="InvFolder favorite">
+ Meus favoritos
+ </string>
+ <string name="InvFolder Favorites">
+ Meus favoritos
+ </string>
+ <string name="InvFolder favorites">
+ Meus favoritos
+ </string>
+ <string name="InvFolder Current Outfit">
+ Look atual
+ </string>
+ <string name="InvFolder Initial Outfits">
+ Looks iniciais
+ </string>
+ <string name="InvFolder My Outfits">
+ Meus looks
+ </string>
+ <string name="InvFolder Accessories">
+ Acessórios
+ </string>
+ <string name="InvFolder Meshes">
+ Meshes:
+ </string>
+ <string name="InvFolder Received Items">
+ Itens recebidos
+ </string>
+ <string name="InvFolder Merchant Outbox">
+ Caixa de saída do lojista
+ </string>
+ <string name="InvFolder Friends">
+ Amigos
+ </string>
+ <string name="InvFolder All">
+ Tudo
+ </string>
+ <string name="no_attachments">
+ Nenhum anexo vestido
+ </string>
+ <string name="Attachments remain">
+ Anexos ([COUNT] slots permanecem)
+ </string>
+ <string name="Buy">
+ Comprar
+ </string>
+ <string name="BuyforL$">
+ Comprar por L$
+ </string>
+ <string name="Stone">
+ Pedra
+ </string>
+ <string name="Metal">
+ Metal
+ </string>
+ <string name="Glass">
+ Vidro
+ </string>
+ <string name="Wood">
+ Madeira
+ </string>
+ <string name="Flesh">
+ Carne
+ </string>
+ <string name="Plastic">
+ Plástico
+ </string>
+ <string name="Rubber">
+ Borrracha
+ </string>
+ <string name="Light">
+ Luz
+ </string>
+ <string name="KBShift">
+ Shift
+ </string>
+ <string name="KBCtrl">
+ Ctrl
+ </string>
+ <string name="Chest">
+ Peito
+ </string>
+ <string name="Skull">
+ Crânio
+ </string>
+ <string name="Left Shoulder">
+ Ombro esquerdo
+ </string>
+ <string name="Right Shoulder">
+ Ombro direito
+ </string>
+ <string name="Left Hand">
+ Mão esquerda
+ </string>
+ <string name="Right Hand">
+ Mão direita
+ </string>
+ <string name="Left Foot">
+ Pé esquerdo
+ </string>
+ <string name="Right Foot">
+ Pé direito
+ </string>
+ <string name="Spine">
+ Espinha
+ </string>
+ <string name="Pelvis">
+ Pélvis
+ </string>
+ <string name="Mouth">
+ Boca
+ </string>
+ <string name="Chin">
+ Queixo
+ </string>
+ <string name="Left Ear">
+ Orelha esquerda
+ </string>
+ <string name="Right Ear">
+ Orelha direita
+ </string>
+ <string name="Left Eyeball">
+ Globo ocular esquerdo
+ </string>
+ <string name="Right Eyeball">
+ Globo ocular direito
+ </string>
+ <string name="Nose">
+ Nariz
+ </string>
+ <string name="R Upper Arm">
+ Braço superior D
+ </string>
+ <string name="R Forearm">
+ Antebraço D
+ </string>
+ <string name="L Upper Arm">
+ Braço superior E
+ </string>
+ <string name="L Forearm">
+ Antebraço E
+ </string>
+ <string name="Right Hip">
+ Quadril direito
+ </string>
+ <string name="R Upper Leg">
+ Coxa D
+ </string>
+ <string name="R Lower Leg">
+ Perna inferior D
+ </string>
+ <string name="Left Hip">
+ Quadril esquerdo
+ </string>
+ <string name="L Upper Leg">
+ Coxa E
+ </string>
+ <string name="L Lower Leg">
+ Perna inferior E
+ </string>
+ <string name="Stomach">
+ Estômago
+ </string>
+ <string name="Left Pec">
+ Peitoral E
+ </string>
+ <string name="Right Pec">
+ Peitoral D
+ </string>
+ <string name="Neck">
+ Pescoço
+ </string>
+ <string name="Avatar Center">
+ Centro do avatar
+ </string>
+ <string name="Left Ring Finger">
+ Anelar esquerdo
+ </string>
+ <string name="Right Ring Finger">
+ Anelar direito
+ </string>
+ <string name="Tail Base">
+ Base do rabo
+ </string>
+ <string name="Tail Tip">
+ Ponta do rabo
+ </string>
+ <string name="Left Wing">
+ Asa esquerda
+ </string>
+ <string name="Right Wing">
+ Asa direita
+ </string>
+ <string name="Jaw">
+ Maxilar
+ </string>
+ <string name="Alt Left Ear">
+ Orelha esquerda alt.
+ </string>
+ <string name="Alt Right Ear">
+ Orelha direita alt.
+ </string>
+ <string name="Alt Left Eye">
+ Olho esquerdo alt.
+ </string>
+ <string name="Alt Right Eye">
+ Olho direito alt.
+ </string>
+ <string name="Tongue">
+ Língua
+ </string>
+ <string name="Groin">
+ Virilha
+ </string>
+ <string name="Left Hind Foot">
+ Pata esq. traseira
+ </string>
+ <string name="Right Hind Foot">
+ Pata dir. traseira
+ </string>
+ <string name="Invalid Attachment">
+ Ponto de encaixe inválido
+ </string>
+ <string name="ATTACHMENT_MISSING_ITEM">
+ Erro: item ausente
+ </string>
+ <string name="ATTACHMENT_MISSING_BASE_ITEM">
+ Erro: item base ausente
+ </string>
+ <string name="ATTACHMENT_NOT_ATTACHED">
+ Erro: o objeto está no look atual, mas não foi anexado
+ </string>
+ <string name="YearsMonthsOld">
+ [AGEYEARS] [AGEMONTHS] de idade
+ </string>
+ <string name="YearsOld">
+ [AGEYEARS] de idade
+ </string>
+ <string name="MonthsOld">
+ [AGEMONTHS] de idade
+ </string>
+ <string name="WeeksOld">
+ [AGEWEEKS] de idade
+ </string>
+ <string name="DaysOld">
+ [AGEDAYS] de idade
+ </string>
+ <string name="TodayOld">
+ Cadastrado hoje
+ </string>
+ <string name="av_render_everyone_now">
+ Agora, todos podem te ver.
+ </string>
+ <string name="av_render_not_everyone">
+ Sua renderização pode não acontecer para todos ao seu redor.
+ </string>
+ <string name="av_render_over_half">
+ Sua renderização pode não acontecer para metade das pessoas ao seu redor.
+ </string>
+ <string name="av_render_most_of">
+ Sua renderização pode não acontecer para a maioria das pessoas ao seu redor.
+ </string>
+ <string name="av_render_anyone">
+ Sua renderização pode não acontecer para ninguém ao seu redor.
+ </string>
+ <string name="hud_description_total">
+ Seu HUD
+ </string>
+ <string name="hud_name_with_joint">
+ [OBJ_NAME] (vestido em [JNT_NAME])
+ </string>
+ <string name="hud_render_memory_warning">
+ [HUD_DETAILS] usa muita memória de textura
+ </string>
+ <string name="hud_render_cost_warning">
+ [HUD_DETAILS] contém muitos objetos e texturas que utilizam o máximo de recursos
+ </string>
+ <string name="hud_render_heavy_textures_warning">
+ [HUD_DETAILS] contém muitas texturas grandes
+ </string>
+ <string name="hud_render_cramped_warning">
+ [HUD_DETAILS] contém muitos objetos
+ </string>
+ <string name="hud_render_textures_warning">
+ [HUD_DETAILS] contém muitas texturas
+ </string>
+ <string name="AgeYearsA">
+ [COUNT] ano
+ </string>
+ <string name="AgeYearsB">
+ [COUNT] anos
+ </string>
+ <string name="AgeYearsC">
+ [COUNT] anos
+ </string>
+ <string name="AgeMonthsA">
+ [COUNT] mês
+ </string>
+ <string name="AgeMonthsB">
+ [COUNT] meses
+ </string>
+ <string name="AgeMonthsC">
+ [COUNT] meses
+ </string>
+ <string name="AgeWeeksA">
+ [COUNT] semana
+ </string>
+ <string name="AgeWeeksB">
+ [COUNT] semanas
+ </string>
+ <string name="AgeWeeksC">
+ [COUNT] semanas
+ </string>
+ <string name="AgeDaysA">
+ [COUNT] dia
+ </string>
+ <string name="AgeDaysB">
+ [COUNT] dias
+ </string>
+ <string name="AgeDaysC">
+ [COUNT] dias
+ </string>
+ <string name="GroupMembersA">
+ [COUNT] membro
+ </string>
+ <string name="GroupMembersB">
+ [COUNT] membros
+ </string>
+ <string name="GroupMembersC">
+ [COUNT] membros
+ </string>
+ <string name="AcctTypeResident">
+ Residente
+ </string>
+ <string name="AcctTypeTrial">
+ Prova
+ </string>
+ <string name="AcctTypeCharterMember">
+ Lista de membros
+ </string>
+ <string name="AcctTypeEmployee">
+ Empregado da Linden Lab
+ </string>
+ <string name="PaymentInfoUsed">
+ Dados de pagamento usados
+ </string>
+ <string name="PaymentInfoOnFile">
+ Dados de pagamento fornecidos
+ </string>
+ <string name="NoPaymentInfoOnFile">
+ Nenhum dado de pagamento
+ </string>
+ <string name="AgeVerified">
+ Idade comprovada
+ </string>
+ <string name="NotAgeVerified">
+ Idade não comprovada
+ </string>
+ <string name="Center 2">
+ Centro 2
+ </string>
+ <string name="Top Right">
+ Topo direita
+ </string>
+ <string name="Top">
+ Topo
+ </string>
+ <string name="Top Left">
+ Topo esquerda
+ </string>
+ <string name="Center">
+ Centro
+ </string>
+ <string name="Bottom Left">
+ Inferior esquerdo
+ </string>
+ <string name="Bottom">
+ Inferior
+ </string>
+ <string name="Bottom Right">
+ Inferior direito
+ </string>
+ <string name="CompileQueueDownloadedCompiling">
+ Baixado, agora compilando
+ </string>
+ <string name="CompileQueueServiceUnavailable">
+ Serviço de compilação de scripts não disponível
+ </string>
+ <string name="CompileQueueScriptNotFound">
+ Script não encontrado no servidor.
+ </string>
+ <string name="CompileQueueProblemDownloading">
+ Problema no download
+ </string>
+ <string name="CompileQueueInsufficientPermDownload">
+ Permissões insuficientes para fazer o download do script.
+ </string>
+ <string name="CompileQueueInsufficientPermFor">
+ Permissões insuficientes para
+ </string>
+ <string name="CompileQueueUnknownFailure">
+ Falha desconhecida para download
+ </string>
+ <string name="CompileNoExperiencePerm">
+ Pulando script [SCRIPT] com experiência [EXPERIENCE]
+ </string>
+ <string name="CompileQueueTitle">
+ Progresso do recompilamento
+ </string>
+ <string name="CompileQueueStart">
+ recompilar
+ </string>
+ <string name="ResetQueueTitle">
+ Reset Progresso
+ </string>
+ <string name="ResetQueueStart">
+ Zerar
+ </string>
+ <string name="RunQueueTitle">
+ Definir funcionamento do progresso
+ </string>
+ <string name="RunQueueStart">
+ deixar funcionando
+ </string>
+ <string name="NotRunQueueTitle">
+ Definir progresso não funcionando
+ </string>
+ <string name="NotRunQueueStart">
+ não deixar funcionando
+ </string>
+ <string name="CompileSuccessful">
+ Compilação bem sucedida
+ </string>
+ <string name="CompileSuccessfulSaving">
+ Compilação bem sucedida, salvando...
+ </string>
+ <string name="SaveComplete">
+ Salvo.
+ </string>
+ <string name="UploadFailed">
+ Falha ao carregar arquivo:
+ </string>
+ <string name="ObjectOutOfRange">
+ Script (objeto fora de alcance)
+ </string>
+ <string name="ScriptWasDeleted">
+ Script (excluído do inventário)
+ </string>
+ <string name="GodToolsObjectOwnedBy">
+ Objeto [OBJECT] de propriedade de [OWNER]
+ </string>
+ <string name="GroupsNone">
+ nenhum
+ </string>
<string name="Group" value="(grupo)"/>
- <string name="Unknown">(Desconhecido)</string>
+ <string name="Unknown">
+ (Desconhecido)
+ </string>
<string name="SummaryForTheWeek" value="Resumo para esta semana, com início em "/>
<string name="NextStipendDay" value=". Próximo dia de salário é "/>
- <string name="GroupPlanningDate">[mthnum,datetime,utc]/[day,datetime,utc]/[year,datetime,utc]</string>
+ <string name="GroupPlanningDate">
+ [mthnum,datetime,utc]/[day,datetime,utc]/[year,datetime,utc]
+ </string>
<string name="GroupIndividualShare" value="Grupo Divisão individualI"/>
<string name="GroupColumn" value="Grupo"/>
- <string name="Balance">Balanço</string>
- <string name="Credits">Créditos</string>
- <string name="Debits">Débitos</string>
- <string name="Total">Total</string>
- <string name="NoGroupDataFound">Não há dados de grupo</string>
- <string name="IMParentEstate">Propriedade-pai</string>
- <string name="IMMainland">continente</string>
- <string name="IMTeen">adolescente</string>
- <string name="Anyone">qualquer um</string>
- <string name="RegionInfoError">erro</string>
- <string name="RegionInfoAllEstatesOwnedBy">todas as propriedades pertencem a [OWNER]</string>
- <string name="RegionInfoAllEstatesYouOwn">todas as propriedades que você possui</string>
- <string name="RegionInfoAllEstatesYouManage">todas as propriedades que você gerencia para [OWNER]</string>
- <string name="RegionInfoAllowedResidents">Sempre permitido: ([ALLOWEDAGENTS], máx [MAXACCESS])</string>
- <string name="RegionInfoAllowedGroups">Grupos sempre permitidos: ([ALLOWEDGROUPS], máx [MAXACCESS])</string>
- <string name="RegionInfoBannedResidents">Grupos banidos: ([BANNEDAGENTS], máx [MAXBANNED])</string>
- <string name="RegionInfoListTypeAllowedAgents">Sempre permitido</string>
- <string name="RegionInfoListTypeBannedAgents">Sempre banido</string>
- <string name="RegionInfoAllEstates">todos os terrenos</string>
- <string name="RegionInfoManagedEstates">administre terrenos</string>
- <string name="RegionInfoThisEstate">este terreno</string>
- <string name="AndNMore">e [EXTRA_COUNT] mais</string>
- <string name="ScriptLimitsParcelScriptMemory">Memória de scripts no lote</string>
- <string name="ScriptLimitsParcelsOwned">Lotes listados: [PARCELS]</string>
- <string name="ScriptLimitsMemoryUsed">Memória usada: [COUNT] kb de [MAX] kb; [AVAILABLE] kb disponíveis</string>
- <string name="ScriptLimitsMemoryUsedSimple">Memória usada: [COUNT] kb</string>
- <string name="ScriptLimitsParcelScriptURLs">URL dos scripts do lote</string>
- <string name="ScriptLimitsURLsUsed">URLs usados: [COUNT] de [MAX]; [AVAILABLE] disponíveis</string>
- <string name="ScriptLimitsURLsUsedSimple">URLs usados: [COUNT]</string>
- <string name="ScriptLimitsRequestError">Erro ao solicitar dados</string>
- <string name="ScriptLimitsRequestNoParcelSelected">Nenhum lote foi selecionado</string>
- <string name="ScriptLimitsRequestWrongRegion">Erro: dados de script só disponíveis na região da posição atual</string>
- <string name="ScriptLimitsRequestWaiting">Obtendo dados...</string>
- <string name="ScriptLimitsRequestDontOwnParcel">Você não está autorizado a examinar este lote.</string>
- <string name="SITTING_ON">Sentado em</string>
- <string name="ATTACH_CHEST">Peito</string>
- <string name="ATTACH_HEAD">Crânio</string>
- <string name="ATTACH_LSHOULDER">Ombro esquerdo</string>
- <string name="ATTACH_RSHOULDER">Ombro direito</string>
- <string name="ATTACH_LHAND">Mão esquerda</string>
- <string name="ATTACH_RHAND">Mão direita</string>
- <string name="ATTACH_LFOOT">Pé esquerdo</string>
- <string name="ATTACH_RFOOT">Pé direito</string>
- <string name="ATTACH_BACK">Coluna</string>
- <string name="ATTACH_PELVIS">Pélvis</string>
- <string name="ATTACH_MOUTH">Boca</string>
- <string name="ATTACH_CHIN">Queixo</string>
- <string name="ATTACH_LEAR">Orelha esquerda</string>
- <string name="ATTACH_REAR">Orelha direita</string>
- <string name="ATTACH_LEYE">Olho esquerdo</string>
- <string name="ATTACH_REYE">Olho direito</string>
- <string name="ATTACH_NOSE">Nariz</string>
- <string name="ATTACH_RUARM">Braço direito</string>
- <string name="ATTACH_RLARM">Antebraço direito</string>
- <string name="ATTACH_LUARM">Braço esquerdo</string>
- <string name="ATTACH_LLARM">Antebraço esquerdo</string>
- <string name="ATTACH_RHIP">Quadril direito</string>
- <string name="ATTACH_RULEG">Coxa direita</string>
- <string name="ATTACH_RLLEG">Perna direita</string>
- <string name="ATTACH_LHIP">Quadril esquerdo</string>
- <string name="ATTACH_LULEG">Coxa esquerda</string>
- <string name="ATTACH_LLLEG">Perna esquerda</string>
- <string name="ATTACH_BELLY">Estômago</string>
- <string name="ATTACH_LEFT_PEC">Peitorais E</string>
- <string name="ATTACH_RIGHT_PEC">Peitorais D</string>
- <string name="ATTACH_HUD_CENTER_2">HUD Central 2</string>
- <string name="ATTACH_HUD_TOP_RIGHT">HUD superior direito</string>
- <string name="ATTACH_HUD_TOP_CENTER">HUD centro superior</string>
- <string name="ATTACH_HUD_TOP_LEFT">HUD superior esquerdo</string>
- <string name="ATTACH_HUD_CENTER_1">HUD Central 1</string>
- <string name="ATTACH_HUD_BOTTOM_LEFT">HUD esquerda inferior</string>
- <string name="ATTACH_HUD_BOTTOM">HUD inferior</string>
- <string name="ATTACH_HUD_BOTTOM_RIGHT">HUD direito inferior</string>
- <string name="ATTACH_NECK">Pescoço</string>
- <string name="ATTACH_AVATAR_CENTER">Centro do avatar</string>
- <string name="ATTACH_LHAND_RING1">Anelar esquerdo</string>
- <string name="ATTACH_RHAND_RING1">Anelar direito</string>
- <string name="ATTACH_TAIL_BASE">Base do rabo</string>
- <string name="ATTACH_TAIL_TIP">Ponta do rabo</string>
- <string name="ATTACH_LWING">Asa esquerda</string>
- <string name="ATTACH_RWING">Asa direita</string>
- <string name="ATTACH_FACE_JAW">Maxilar</string>
- <string name="ATTACH_FACE_LEAR">Orelha esquerda alt.</string>
- <string name="ATTACH_FACE_REAR">Orelha direita alt.</string>
- <string name="ATTACH_FACE_LEYE">Olho esquerdo alt.</string>
- <string name="ATTACH_FACE_REYE">Olho direito alt.</string>
- <string name="ATTACH_FACE_TONGUE">Língua</string>
- <string name="ATTACH_GROIN">Virilha</string>
- <string name="ATTACH_HIND_LFOOT">Pata esq. traseira</string>
- <string name="ATTACH_HIND_RFOOT">Pata dir. traseira</string>
- <string name="CursorPos">Linha [LINE], Coluna [COLUMN]</string>
- <string name="PanelDirCountFound">[COUNT] encontrado</string>
- <string name="PanelContentsTooltip">Conteúdo do objeto</string>
- <string name="PanelContentsNewScript">Novo Script</string>
- <string name="DoNotDisturbModeResponseDefault">Este residente ativou o &quot;Não perturbe&quot; e verá sua mensagem mais tarde.</string>
- <string name="MuteByName">(por nome)</string>
- <string name="MuteAgent">(residente)</string>
- <string name="MuteObject">(objeto)</string>
- <string name="MuteGroup">(grupo)</string>
- <string name="MuteExternal">(Externo)</string>
- <string name="RegionNoCovenant">Não foi definido um contrato para essa região.</string>
- <string name="RegionNoCovenantOtherOwner">Não foi definido um contrato para essa Região. O terreno nesta região está sendo vendido pelo Proprietário, não pela Linden Lab. Favor contatar o Proprietário da região para detalhes de venda.</string>
+ <string name="Balance">
+ Balanço
+ </string>
+ <string name="Credits">
+ Créditos
+ </string>
+ <string name="Debits">
+ Débitos
+ </string>
+ <string name="Total">
+ Total
+ </string>
+ <string name="NoGroupDataFound">
+ Não há dados de grupo
+ </string>
+ <string name="IMParentEstate">
+ Propriedade-pai
+ </string>
+ <string name="IMMainland">
+ continente
+ </string>
+ <string name="IMTeen">
+ adolescente
+ </string>
+ <string name="Anyone">
+ qualquer um
+ </string>
+ <string name="RegionInfoError">
+ erro
+ </string>
+ <string name="RegionInfoAllEstatesOwnedBy">
+ todas as propriedades pertencem a [OWNER]
+ </string>
+ <string name="RegionInfoAllEstatesYouOwn">
+ todas as propriedades que você possui
+ </string>
+ <string name="RegionInfoAllEstatesYouManage">
+ todas as propriedades que você gerencia para [OWNER]
+ </string>
+ <string name="RegionInfoAllowedResidents">
+ Sempre permitido: ([ALLOWEDAGENTS], máx [MAXACCESS])
+ </string>
+ <string name="RegionInfoAllowedGroups">
+ Grupos sempre permitidos: ([ALLOWEDGROUPS], máx [MAXACCESS])
+ </string>
+ <string name="RegionInfoBannedResidents">
+ Grupos banidos: ([BANNEDAGENTS], máx [MAXBANNED])
+ </string>
+ <string name="RegionInfoListTypeAllowedAgents">
+ Sempre permitido
+ </string>
+ <string name="RegionInfoListTypeBannedAgents">
+ Sempre banido
+ </string>
+ <string name="RegionInfoAllEstates">
+ todos os terrenos
+ </string>
+ <string name="RegionInfoManagedEstates">
+ administre terrenos
+ </string>
+ <string name="RegionInfoThisEstate">
+ este terreno
+ </string>
+ <string name="AndNMore">
+ e [EXTRA_COUNT] mais
+ </string>
+ <string name="ScriptLimitsParcelScriptMemory">
+ Memória de scripts no lote
+ </string>
+ <string name="ScriptLimitsParcelsOwned">
+ Lotes listados: [PARCELS]
+ </string>
+ <string name="ScriptLimitsMemoryUsed">
+ Memória usada: [COUNT] kb de [MAX] kb; [AVAILABLE] kb disponíveis
+ </string>
+ <string name="ScriptLimitsMemoryUsedSimple">
+ Memória usada: [COUNT] kb
+ </string>
+ <string name="ScriptLimitsParcelScriptURLs">
+ URL dos scripts do lote
+ </string>
+ <string name="ScriptLimitsURLsUsed">
+ URLs usados: [COUNT] de [MAX]; [AVAILABLE] disponíveis
+ </string>
+ <string name="ScriptLimitsURLsUsedSimple">
+ URLs usados: [COUNT]
+ </string>
+ <string name="ScriptLimitsRequestError">
+ Erro ao solicitar dados
+ </string>
+ <string name="ScriptLimitsRequestNoParcelSelected">
+ Nenhum lote foi selecionado
+ </string>
+ <string name="ScriptLimitsRequestWrongRegion">
+ Erro: dados de script só disponíveis na região da posição atual
+ </string>
+ <string name="ScriptLimitsRequestWaiting">
+ Obtendo dados...
+ </string>
+ <string name="ScriptLimitsRequestDontOwnParcel">
+ Você não está autorizado a examinar este lote.
+ </string>
+ <string name="SITTING_ON">
+ Sentado em
+ </string>
+ <string name="ATTACH_CHEST">
+ Peito
+ </string>
+ <string name="ATTACH_HEAD">
+ Crânio
+ </string>
+ <string name="ATTACH_LSHOULDER">
+ Ombro esquerdo
+ </string>
+ <string name="ATTACH_RSHOULDER">
+ Ombro direito
+ </string>
+ <string name="ATTACH_LHAND">
+ Mão esquerda
+ </string>
+ <string name="ATTACH_RHAND">
+ Mão direita
+ </string>
+ <string name="ATTACH_LFOOT">
+ Pé esquerdo
+ </string>
+ <string name="ATTACH_RFOOT">
+ Pé direito
+ </string>
+ <string name="ATTACH_BACK">
+ Coluna
+ </string>
+ <string name="ATTACH_PELVIS">
+ Pélvis
+ </string>
+ <string name="ATTACH_MOUTH">
+ Boca
+ </string>
+ <string name="ATTACH_CHIN">
+ Queixo
+ </string>
+ <string name="ATTACH_LEAR">
+ Orelha esquerda
+ </string>
+ <string name="ATTACH_REAR">
+ Orelha direita
+ </string>
+ <string name="ATTACH_LEYE">
+ Olho esquerdo
+ </string>
+ <string name="ATTACH_REYE">
+ Olho direito
+ </string>
+ <string name="ATTACH_NOSE">
+ Nariz
+ </string>
+ <string name="ATTACH_RUARM">
+ Braço direito
+ </string>
+ <string name="ATTACH_RLARM">
+ Antebraço direito
+ </string>
+ <string name="ATTACH_LUARM">
+ Braço esquerdo
+ </string>
+ <string name="ATTACH_LLARM">
+ Antebraço esquerdo
+ </string>
+ <string name="ATTACH_RHIP">
+ Quadril direito
+ </string>
+ <string name="ATTACH_RULEG">
+ Coxa direita
+ </string>
+ <string name="ATTACH_RLLEG">
+ Perna direita
+ </string>
+ <string name="ATTACH_LHIP">
+ Quadril esquerdo
+ </string>
+ <string name="ATTACH_LULEG">
+ Coxa esquerda
+ </string>
+ <string name="ATTACH_LLLEG">
+ Perna esquerda
+ </string>
+ <string name="ATTACH_BELLY">
+ Estômago
+ </string>
+ <string name="ATTACH_LEFT_PEC">
+ Peitorais E
+ </string>
+ <string name="ATTACH_RIGHT_PEC">
+ Peitorais D
+ </string>
+ <string name="ATTACH_HUD_CENTER_2">
+ HUD Central 2
+ </string>
+ <string name="ATTACH_HUD_TOP_RIGHT">
+ HUD superior direito
+ </string>
+ <string name="ATTACH_HUD_TOP_CENTER">
+ HUD centro superior
+ </string>
+ <string name="ATTACH_HUD_TOP_LEFT">
+ HUD superior esquerdo
+ </string>
+ <string name="ATTACH_HUD_CENTER_1">
+ HUD Central 1
+ </string>
+ <string name="ATTACH_HUD_BOTTOM_LEFT">
+ HUD esquerda inferior
+ </string>
+ <string name="ATTACH_HUD_BOTTOM">
+ HUD inferior
+ </string>
+ <string name="ATTACH_HUD_BOTTOM_RIGHT">
+ HUD direito inferior
+ </string>
+ <string name="ATTACH_NECK">
+ Pescoço
+ </string>
+ <string name="ATTACH_AVATAR_CENTER">
+ Centro do avatar
+ </string>
+ <string name="ATTACH_LHAND_RING1">
+ Anelar esquerdo
+ </string>
+ <string name="ATTACH_RHAND_RING1">
+ Anelar direito
+ </string>
+ <string name="ATTACH_TAIL_BASE">
+ Base do rabo
+ </string>
+ <string name="ATTACH_TAIL_TIP">
+ Ponta do rabo
+ </string>
+ <string name="ATTACH_LWING">
+ Asa esquerda
+ </string>
+ <string name="ATTACH_RWING">
+ Asa direita
+ </string>
+ <string name="ATTACH_FACE_JAW">
+ Maxilar
+ </string>
+ <string name="ATTACH_FACE_LEAR">
+ Orelha esquerda alt.
+ </string>
+ <string name="ATTACH_FACE_REAR">
+ Orelha direita alt.
+ </string>
+ <string name="ATTACH_FACE_LEYE">
+ Olho esquerdo alt.
+ </string>
+ <string name="ATTACH_FACE_REYE">
+ Olho direito alt.
+ </string>
+ <string name="ATTACH_FACE_TONGUE">
+ Língua
+ </string>
+ <string name="ATTACH_GROIN">
+ Virilha
+ </string>
+ <string name="ATTACH_HIND_LFOOT">
+ Pata esq. traseira
+ </string>
+ <string name="ATTACH_HIND_RFOOT">
+ Pata dir. traseira
+ </string>
+ <string name="CursorPos">
+ Linha [LINE], Coluna [COLUMN]
+ </string>
+ <string name="PanelDirCountFound">
+ [COUNT] encontrado
+ </string>
+ <string name="PanelContentsTooltip">
+ Conteúdo do objeto
+ </string>
+ <string name="PanelContentsNewScript">
+ Novo Script
+ </string>
+ <string name="DoNotDisturbModeResponseDefault">
+ Este residente ativou o "Não perturbe" e verá sua mensagem mais tarde.
+ </string>
+ <string name="MuteByName">
+ (por nome)
+ </string>
+ <string name="MuteAgent">
+ (residente)
+ </string>
+ <string name="MuteObject">
+ (objeto)
+ </string>
+ <string name="MuteGroup">
+ (grupo)
+ </string>
+ <string name="MuteExternal">
+ (Externo)
+ </string>
+ <string name="RegionNoCovenant">
+ Não foi definido um contrato para essa região.
+ </string>
+ <string name="RegionNoCovenantOtherOwner">
+ Não foi definido um contrato para essa Região. O terreno nesta região está sendo vendido pelo Proprietário, não pela Linden Lab. Favor contatar o Proprietário da região para detalhes de venda.
+ </string>
<string name="covenant_last_modified" value="Última modificação: "/>
<string name="none_text" value="(nenhum)"/>
<string name="never_text" value="(nunca)"/>
- <string name="GroupOwned">Propriedade do Grupo</string>
- <string name="Public">Público</string>
- <string name="LocalSettings">Configurações locais</string>
- <string name="RegionSettings">Configurações da região</string>
- <string name="NoEnvironmentSettings">Esta Região não suporta as configurações do ambiente.</string>
- <string name="EnvironmentSun">Dom</string>
- <string name="EnvironmentMoon">Lua</string>
- <string name="EnvironmentBloom">Florescer</string>
- <string name="EnvironmentCloudNoise">Ruído na nuvem</string>
- <string name="EnvironmentNormalMap">Mapa normal</string>
- <string name="EnvironmentTransparent">Transparente</string>
- <string name="ClassifiedClicksTxt">Cliques: [TELEPORT] teletransporte, [MAP] mapa, [PROFILE] perfil</string>
- <string name="ClassifiedUpdateAfterPublish">(vai atualizar depois de publicado)</string>
- <string name="NoPicksClassifiedsText">Você não criou nenhum Destaque ou Anúncio. Clique no botão &quot;+&quot; para criar um Destaque ou Anúncio.</string>
- <string name="NoPicksText">Você não criou nenhuma Escolha. Clique em Novo Botão para criar um Escolher</string>
- <string name="NoClassifiedsText">Você criou nenhum Anúncio. Clique em Novo Botão para criar um Classificado</string>
- <string name="NoAvatarPicksClassifiedsText">O usuário não tem nenhum destaque ou anúncio</string>
- <string name="NoAvatarPicksText">Usuário não tem escolha</string>
- <string name="NoAvatarClassifiedsText">Usuário não tem anúncio</string>
- <string name="PicksClassifiedsLoadingText">Carregando...</string>
- <string name="MultiPreviewTitle">Preview</string>
- <string name="MultiPropertiesTitle">Propriedades</string>
- <string name="InvOfferAnObjectNamed">um objeto chamado</string>
- <string name="InvOfferOwnedByGroup">possuído pelo grupo</string>
- <string name="InvOfferOwnedByUnknownGroup">de um grupo desconhecido</string>
- <string name="InvOfferOwnedBy">de</string>
- <string name="InvOfferOwnedByUnknownUser">de usuário desconhecido</string>
- <string name="InvOfferGaveYou">deu a você</string>
- <string name="InvOfferDecline">Você recusou um(a) [DESC] de &lt;nolink&gt;[NAME]&lt;/nolink&gt;.</string>
- <string name="GroupMoneyTotal">Total</string>
- <string name="GroupMoneyBought">comprou</string>
- <string name="GroupMoneyPaidYou">pagou a você</string>
- <string name="GroupMoneyPaidInto">depositado</string>
- <string name="GroupMoneyBoughtPassTo">comprou passe para</string>
- <string name="GroupMoneyPaidFeeForEvent">pagou taxa para o evento</string>
- <string name="GroupMoneyPaidPrizeForEvent">pagou prêmio para o evento</string>
- <string name="GroupMoneyBalance">Saldo</string>
- <string name="GroupMoneyCredits">Créditos</string>
- <string name="GroupMoneyDebits">Débitos</string>
- <string name="GroupMoneyDate">[weekday,datetime,utc] [mth,datetime,utc] [day,datetime,utc], [year,datetime,utc]</string>
- <string name="AcquiredItems">Itens adquiridos</string>
- <string name="Cancel">Cancelar</string>
- <string name="UploadingCosts">Carregar [NAME] custa L$ [AMOUNT]</string>
- <string name="BuyingCosts">Isso custa L$ [AMOUNT]</string>
- <string name="UnknownFileExtension">Extensão de arquivo desconhecida [.%s]
-Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh</string>
- <string name="MuteObject2">Bloquear</string>
- <string name="AddLandmarkNavBarMenu">Adicionar marco...</string>
- <string name="EditLandmarkNavBarMenu">Editar marco...</string>
- <string name="accel-mac-control">⌃</string>
- <string name="accel-mac-command">⌘</string>
- <string name="accel-mac-option">⌥</string>
- <string name="accel-mac-shift">⇧</string>
- <string name="accel-win-control">Ctrl+</string>
- <string name="accel-win-alt">Alt+</string>
- <string name="accel-win-shift">Shift+</string>
- <string name="FileSaved">Arquivo salvo</string>
- <string name="Receiving">Recebendo</string>
- <string name="AM">AM</string>
- <string name="PM">PM</string>
- <string name="PST">PST</string>
- <string name="PDT">PDT</string>
- <string name="Direction_Forward">Frente</string>
- <string name="Direction_Left">Esquerda</string>
- <string name="Direction_Right">Direita</string>
- <string name="Direction_Back">Atrás</string>
- <string name="Direction_North">Norte</string>
- <string name="Direction_South">Sul</string>
- <string name="Direction_West">Oeste</string>
- <string name="Direction_East">Leste</string>
- <string name="Direction_Up">P/ cima</string>
- <string name="Direction_Down">P/ baixo</string>
- <string name="Any Category">Qualquer categoria</string>
- <string name="Shopping">Compras</string>
- <string name="Land Rental">Aluguel de terrenos</string>
- <string name="Property Rental">Aluguel de propriedade</string>
- <string name="Special Attraction">Atração especial</string>
- <string name="New Products">Novos Produtos</string>
- <string name="Employment">Emprego</string>
- <string name="Wanted">Desejado</string>
- <string name="Service">Serviço</string>
- <string name="Personal">Pessoal</string>
- <string name="None">Nenhum</string>
- <string name="Linden Location">Locação Linden</string>
- <string name="Adult">Adulto</string>
- <string name="Arts&amp;Culture">Artes e Cultura</string>
- <string name="Business">Negócios</string>
- <string name="Educational">Educacional</string>
- <string name="Gaming">Games</string>
- <string name="Hangout">Moradia</string>
- <string name="Newcomer Friendly">Para recém-chegados</string>
- <string name="Parks&amp;Nature">Parques &amp; Natureza</string>
- <string name="Residential">Residencial</string>
- <string name="Stage">Estágio</string>
- <string name="Other">Outros</string>
- <string name="Rental">Aluguel</string>
- <string name="Any">Qualquer</string>
- <string name="You">Você</string>
- <string name="Multiple Media">Mídia múltipla</string>
- <string name="Play Media">Tocar/Pausar mídia</string>
- <string name="IntelDriverPage">http://www.intel.com/p/en_US/support/detect/graphics</string>
- <string name="NvidiaDriverPage">http://www.nvidia.com.br/Download/index.aspx?lang=br</string>
- <string name="AMDDriverPage">http://support.amd.com/us/Pages/AMDSupportHub.aspx</string>
- <string name="MBCmdLineError">Um erro foi encontrado analisando a linha de comando.
+ <string name="GroupOwned">
+ Propriedade do Grupo
+ </string>
+ <string name="Public">
+ Público
+ </string>
+ <string name="LocalSettings">
+ Configurações locais
+ </string>
+ <string name="RegionSettings">
+ Configurações da região
+ </string>
+ <string name="NoEnvironmentSettings">
+ Esta Região não suporta as configurações do ambiente.
+ </string>
+ <string name="EnvironmentSun">
+ Dom
+ </string>
+ <string name="EnvironmentMoon">
+ Lua
+ </string>
+ <string name="EnvironmentBloom">
+ Florescer
+ </string>
+ <string name="EnvironmentCloudNoise">
+ Ruído na nuvem
+ </string>
+ <string name="EnvironmentNormalMap">
+ Mapa normal
+ </string>
+ <string name="EnvironmentTransparent">
+ Transparente
+ </string>
+ <string name="ClassifiedClicksTxt">
+ Cliques: [TELEPORT] teletransporte, [MAP] mapa, [PROFILE] perfil
+ </string>
+ <string name="ClassifiedUpdateAfterPublish">
+ (vai atualizar depois de publicado)
+ </string>
+ <string name="NoPicksClassifiedsText">
+ Você não criou nenhum Destaque ou Anúncio. Clique no botão "+" para criar um Destaque ou Anúncio.
+ </string>
+ <string name="NoPicksText">
+ Você não criou nenhuma Escolha. Clique em Novo Botão para criar um Escolher
+ </string>
+ <string name="NoClassifiedsText">
+ Você criou nenhum Anúncio. Clique em Novo Botão para criar um Classificado
+ </string>
+ <string name="NoAvatarPicksClassifiedsText">
+ O usuário não tem nenhum destaque ou anúncio
+ </string>
+ <string name="NoAvatarPicksText">
+ Usuário não tem escolha
+ </string>
+ <string name="NoAvatarClassifiedsText">
+ Usuário não tem anúncio
+ </string>
+ <string name="PicksClassifiedsLoadingText">
+ Carregando...
+ </string>
+ <string name="MultiPreviewTitle">
+ Preview
+ </string>
+ <string name="MultiPropertiesTitle">
+ Propriedades
+ </string>
+ <string name="InvOfferAnObjectNamed">
+ um objeto chamado
+ </string>
+ <string name="InvOfferOwnedByGroup">
+ possuído pelo grupo
+ </string>
+ <string name="InvOfferOwnedByUnknownGroup">
+ de um grupo desconhecido
+ </string>
+ <string name="InvOfferOwnedBy">
+ de
+ </string>
+ <string name="InvOfferOwnedByUnknownUser">
+ de usuário desconhecido
+ </string>
+ <string name="InvOfferGaveYou">
+ deu a você
+ </string>
+ <string name="InvOfferDecline">
+ Você recusou um(a) [DESC] de &lt;nolink&gt;[NAME]&lt;/nolink&gt;.
+ </string>
+ <string name="GroupMoneyTotal">
+ Total
+ </string>
+ <string name="GroupMoneyBought">
+ comprou
+ </string>
+ <string name="GroupMoneyPaidYou">
+ pagou a você
+ </string>
+ <string name="GroupMoneyPaidInto">
+ depositado
+ </string>
+ <string name="GroupMoneyBoughtPassTo">
+ comprou passe para
+ </string>
+ <string name="GroupMoneyPaidFeeForEvent">
+ pagou taxa para o evento
+ </string>
+ <string name="GroupMoneyPaidPrizeForEvent">
+ pagou prêmio para o evento
+ </string>
+ <string name="GroupMoneyBalance">
+ Saldo
+ </string>
+ <string name="GroupMoneyCredits">
+ Créditos
+ </string>
+ <string name="GroupMoneyDebits">
+ Débitos
+ </string>
+ <string name="GroupMoneyDate">
+ [weekday,datetime,utc] [mth,datetime,utc] [day,datetime,utc], [year,datetime,utc]
+ </string>
+ <string name="AcquiredItems">
+ Itens adquiridos
+ </string>
+ <string name="Cancel">
+ Cancelar
+ </string>
+ <string name="UploadingCosts">
+ Carregar [NAME] custa L$ [AMOUNT]
+ </string>
+ <string name="BuyingCosts">
+ Isso custa L$ [AMOUNT]
+ </string>
+ <string name="UnknownFileExtension">
+ Extensão de arquivo desconhecida [.%s]
+Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh
+ </string>
+ <string name="MuteObject2">
+ Bloquear
+ </string>
+ <string name="AddLandmarkNavBarMenu">
+ Adicionar marco...
+ </string>
+ <string name="EditLandmarkNavBarMenu">
+ Editar marco...
+ </string>
+ <string name="accel-mac-control">
+ ⌃
+ </string>
+ <string name="accel-mac-command">
+ ⌘
+ </string>
+ <string name="accel-mac-option">
+ ⌥
+ </string>
+ <string name="accel-mac-shift">
+ ⇧
+ </string>
+ <string name="accel-win-control">
+ Ctrl+
+ </string>
+ <string name="accel-win-alt">
+ Alt+
+ </string>
+ <string name="accel-win-shift">
+ Shift+
+ </string>
+ <string name="FileSaved">
+ Arquivo salvo
+ </string>
+ <string name="Receiving">
+ Recebendo
+ </string>
+ <string name="AM">
+ AM
+ </string>
+ <string name="PM">
+ PM
+ </string>
+ <string name="PST">
+ PST
+ </string>
+ <string name="PDT">
+ PDT
+ </string>
+ <string name="Direction_Forward">
+ Frente
+ </string>
+ <string name="Direction_Left">
+ Esquerda
+ </string>
+ <string name="Direction_Right">
+ Direita
+ </string>
+ <string name="Direction_Back">
+ Atrás
+ </string>
+ <string name="Direction_North">
+ Norte
+ </string>
+ <string name="Direction_South">
+ Sul
+ </string>
+ <string name="Direction_West">
+ Oeste
+ </string>
+ <string name="Direction_East">
+ Leste
+ </string>
+ <string name="Direction_Up">
+ P/ cima
+ </string>
+ <string name="Direction_Down">
+ P/ baixo
+ </string>
+ <string name="Any Category">
+ Qualquer categoria
+ </string>
+ <string name="Shopping">
+ Compras
+ </string>
+ <string name="Land Rental">
+ Aluguel de terrenos
+ </string>
+ <string name="Property Rental">
+ Aluguel de propriedade
+ </string>
+ <string name="Special Attraction">
+ Atração especial
+ </string>
+ <string name="New Products">
+ Novos Produtos
+ </string>
+ <string name="Employment">
+ Emprego
+ </string>
+ <string name="Wanted">
+ Desejado
+ </string>
+ <string name="Service">
+ Serviço
+ </string>
+ <string name="Personal">
+ Pessoal
+ </string>
+ <string name="None">
+ Nenhum
+ </string>
+ <string name="Linden Location">
+ Locação Linden
+ </string>
+ <string name="Adult">
+ Adulto
+ </string>
+ <string name="Arts&amp;Culture">
+ Artes e Cultura
+ </string>
+ <string name="Business">
+ Negócios
+ </string>
+ <string name="Educational">
+ Educacional
+ </string>
+ <string name="Gaming">
+ Games
+ </string>
+ <string name="Hangout">
+ Moradia
+ </string>
+ <string name="Newcomer Friendly">
+ Para recém-chegados
+ </string>
+ <string name="Parks&amp;Nature">
+ Parques &amp; Natureza
+ </string>
+ <string name="Residential">
+ Residencial
+ </string>
+ <string name="Stage">
+ Estágio
+ </string>
+ <string name="Other">
+ Outros
+ </string>
+ <string name="Rental">
+ Aluguel
+ </string>
+ <string name="Any">
+ Qualquer
+ </string>
+ <string name="You">
+ Você
+ </string>
+ <string name="Multiple Media">
+ Mídia múltipla
+ </string>
+ <string name="Play Media">
+ Tocar/Pausar mídia
+ </string>
+ <string name="IntelDriverPage">
+ http://www.intel.com/p/en_US/support/detect/graphics
+ </string>
+ <string name="NvidiaDriverPage">
+ http://www.nvidia.com.br/Download/index.aspx?lang=br
+ </string>
+ <string name="AMDDriverPage">
+ http://support.amd.com/us/Pages/AMDSupportHub.aspx
+ </string>
+ <string name="MBCmdLineError">
+ Um erro foi encontrado analisando a linha de comando.
Consulte: http://wiki.secondlife.com/wiki/Client_parameters
-Erro:</string>
- <string name="MBCmdLineUsg">[APP_NAME] Uso de linha de comando:</string>
- <string name="MBUnableToAccessFile">[APP_NAME] não é capaz de acessar um arquivo que ele precisa.
+Erro:
+ </string>
+ <string name="MBCmdLineUsg">
+ [APP_NAME] Uso de linha de comando:
+ </string>
+ <string name="MBUnableToAccessFile">
+ [APP_NAME] não é capaz de acessar um arquivo que ele precisa.
Isto pode ocorrer porque você de alguma maneira tem várias cópias em execução, ou o seu sistema acredita de maneira incorreta que um arquivo está aberto.
Se a mensagem persistir, reinicie o computador e tente novamente.
-Se o error persistir, pode ser necessário desinstalar completamente [APP_NAME] e reinstalá-lo.</string>
- <string name="MBFatalError">Erro fatal</string>
- <string name="MBRequiresAltiVec">[APP_NAME] exige processador com AltiVec (G4 ou superior).</string>
- <string name="MBAlreadyRunning">[APP_NAME] já está em execução.
+Se o error persistir, pode ser necessário desinstalar completamente [APP_NAME] e reinstalá-lo.
+ </string>
+ <string name="MBFatalError">
+ Erro fatal
+ </string>
+ <string name="MBRequiresAltiVec">
+ [APP_NAME] exige processador com AltiVec (G4 ou superior).
+ </string>
+ <string name="MBAlreadyRunning">
+ [APP_NAME] já está em execução.
Verifique a sua barra de tarefas para obter uma cópia do programa minimizado.
-Se a mensagem persistir, reinicie o computador.</string>
- <string name="MBFrozenCrashed">[APP_NAME] parece ter congelado ou falhado na execução anterior. Enviar relatório de falha?</string>
- <string name="MBAlert">Alerta</string>
- <string name="MBNoDirectX">[APP_NAME] é incapaz de detectar o DirectX 9.0b ou superior.
+Se a mensagem persistir, reinicie o computador.
+ </string>
+ <string name="MBFrozenCrashed">
+ [APP_NAME] parece ter congelado ou falhado na execução anterior. Enviar relatório de falha?
+ </string>
+ <string name="MBAlert">
+ Alerta
+ </string>
+ <string name="MBNoDirectX">
+ [APP_NAME] é incapaz de detectar o DirectX 9.0b ou superior.
[APP_NAME] usa o DirectX para a detecção de hardware e / ou controladores desatualizados que podem causar problemas de estabilidade, desempenho ruim e falhas. Embora você possa executar [APP_NAME] sem ele, nós recomendamos fortemente que utilize o DirectX 9.0b.
-Deseja continuar?</string>
- <string name="MBWarning">Aviso</string>
- <string name="MBNoAutoUpdate">Atualização automática ainda não está implementada para o Linux.
-Faça o download da versão mais recente do www.secondlife.com.</string>
- <string name="MBRegClassFailed">RegisterClass falhou</string>
- <string name="MBError">Erro</string>
- <string name="MBFullScreenErr">Incapaz de funcionar com tela cheia de [WIDTH] x [HEIGHT].
-Executando em janela.</string>
- <string name="MBDestroyWinFailed">Erro de desligamento ao destruir janela (DestroyWindow() failed)</string>
- <string name="MBShutdownErr">Erro de desligamento</string>
- <string name="MBDevContextErr">Não é possível fazer contexto do dispositivo GL</string>
- <string name="MBPixelFmtErr">Não é possível encontrar um formato de pixel adequado</string>
- <string name="MBPixelFmtDescErr">Não é possível encontrar descrição de formato de pixel</string>
- <string name="MBTrueColorWindow">[APP_NAME] requer True Color (32-bit) para ser executado.
-Por favor, vá para as configurações de vídeo do computador e defina o modo de cores para 32-bit.</string>
- <string name="MBAlpha">[APP_NAME] é incapaz de executar porque ele não consegue obter um canal alpha de 8 bits. Geralmente isso ocorre devido a problemas de drivers da placa de vídeo.
+Deseja continuar?
+ </string>
+ <string name="MBWarning">
+ Aviso
+ </string>
+ <string name="MBNoAutoUpdate">
+ Atualização automática ainda não está implementada para o Linux.
+Faça o download da versão mais recente do www.secondlife.com.
+ </string>
+ <string name="MBRegClassFailed">
+ RegisterClass falhou
+ </string>
+ <string name="MBError">
+ Erro
+ </string>
+ <string name="MBFullScreenErr">
+ Incapaz de funcionar com tela cheia de [WIDTH] x [HEIGHT].
+Executando em janela.
+ </string>
+ <string name="MBDestroyWinFailed">
+ Erro de desligamento ao destruir janela (DestroyWindow() failed)
+ </string>
+ <string name="MBShutdownErr">
+ Erro de desligamento
+ </string>
+ <string name="MBDevContextErr">
+ Não é possível fazer contexto do dispositivo GL
+ </string>
+ <string name="MBPixelFmtErr">
+ Não é possível encontrar um formato de pixel adequado
+ </string>
+ <string name="MBPixelFmtDescErr">
+ Não é possível encontrar descrição de formato de pixel
+ </string>
+ <string name="MBTrueColorWindow">
+ [APP_NAME] requer True Color (32-bit) para ser executado.
+Por favor, vá para as configurações de vídeo do computador e defina o modo de cores para 32-bit.
+ </string>
+ <string name="MBAlpha">
+ [APP_NAME] é incapaz de executar porque ele não consegue obter um canal alpha de 8 bits. Geralmente isso ocorre devido a problemas de drivers da placa de vídeo.
Por favor, certifique-se que os últimos drivers da placa de vídeo estão instalados.
Também não se esqueça de definir seu monitor para True Color (32-bit), em painéis de controle Configurações&gt; Display&gt;.
-Se você continuar a receber esta mensagem, contate o [SUPPORT_SITE].</string>
- <string name="MBPixelFmtSetErr">Não é possível definir o formato de pixel</string>
- <string name="MBGLContextErr">Não é possível criar o contexto de renderização GL</string>
- <string name="MBGLContextActErr">Não é possível ativar o contexto de renderização GL</string>
- <string name="MBVideoDrvErr">[APP_NAME] é incapaz de funcionar por causa do seu driver de video não ter sido instalado corretamente, estão desatualizados, ou não são suportados pelo hardware. Por favor certifique-se que você possui os drivers de placa de vídeo mais recente e mesmo assim, tente reinstalá-los.
+Se você continuar a receber esta mensagem, contate o [SUPPORT_SITE].
+ </string>
+ <string name="MBPixelFmtSetErr">
+ Não é possível definir o formato de pixel
+ </string>
+ <string name="MBGLContextErr">
+ Não é possível criar o contexto de renderização GL
+ </string>
+ <string name="MBGLContextActErr">
+ Não é possível ativar o contexto de renderização GL
+ </string>
+ <string name="MBVideoDrvErr">
+ [APP_NAME] é incapaz de funcionar por causa do seu driver de video não ter sido instalado corretamente, estão desatualizados, ou não são suportados pelo hardware. Por favor certifique-se que você possui os drivers de placa de vídeo mais recente e mesmo assim, tente reinstalá-los.
-If you continue to receive this message, contact the [SUPPORT_SITE].</string>
- <string name="5 O'Clock Shadow">Barba por fazer</string>
- <string name="All White">Todo branco</string>
- <string name="Anime Eyes">Olhos de Anime</string>
- <string name="Arced">Arqueados</string>
- <string name="Arm Length">Comprimento do braço</string>
- <string name="Attached">Anexado</string>
- <string name="Attached Earlobes">Lóbulos da orelha anexados</string>
- <string name="Back Fringe">corte traseiro</string>
- <string name="Baggy">folgado</string>
- <string name="Bangs">Franja</string>
- <string name="Beady Eyes">Olhos pequenos</string>
- <string name="Belly Size">Tamanho da barriga</string>
- <string name="Big">Grande</string>
- <string name="Big Butt">Bunda grande</string>
- <string name="Big Hair Back">Cabelo volumoso: Trás</string>
- <string name="Big Hair Front">Cabelo volumoso: Frente</string>
- <string name="Big Hair Top">Cabelo volumoso: Topo</string>
- <string name="Big Head">cabeça grande</string>
- <string name="Big Pectorals">Peitorais grandes</string>
- <string name="Big Spikes">Pontas grandes</string>
- <string name="Black">Negro</string>
- <string name="Blonde">Loiro</string>
- <string name="Blonde Hair">Cabelo loiro</string>
- <string name="Blush">Blush</string>
- <string name="Blush Color">Cor do blush</string>
- <string name="Blush Opacity">Opacidade do blush</string>
- <string name="Body Definition">Definição do corpo</string>
- <string name="Body Fat">Gordura</string>
- <string name="Body Freckles">Sardas</string>
- <string name="Body Thick">Corpo cheio</string>
- <string name="Body Thickness">Ossatura</string>
- <string name="Body Thin">Corpo magro</string>
- <string name="Bow Legged">Pernas arqueadas</string>
- <string name="Breast Buoyancy">Caimento dos seios</string>
- <string name="Breast Cleavage">Separação dos seios</string>
- <string name="Breast Size">Tamanho dos seios</string>
- <string name="Bridge Width">Largura do nariz</string>
- <string name="Broad">Largo</string>
- <string name="Brow Size">Tamanho da sobrancelha</string>
- <string name="Bug Eyes">Olhos saltados</string>
- <string name="Bugged Eyes">Olhos esbugalhados</string>
- <string name="Bulbous">Bulbos</string>
- <string name="Bulbous Nose">Nariz em bulbo</string>
- <string name="Breast Physics Mass">Seios - massa</string>
- <string name="Breast Physics Smoothing">Seios - suavização</string>
- <string name="Breast Physics Gravity">Seios - gravidade</string>
- <string name="Breast Physics Drag">Seios - resistência do ar</string>
- <string name="Breast Physics InOut Max Effect">Efeito máximo</string>
- <string name="Breast Physics InOut Spring">Vibração</string>
- <string name="Breast Physics InOut Gain">Ganho</string>
- <string name="Breast Physics InOut Damping">Duração</string>
- <string name="Breast Physics UpDown Max Effect">Efeito máximo</string>
- <string name="Breast Physics UpDown Spring">Vibração</string>
- <string name="Breast Physics UpDown Gain">Ganho</string>
- <string name="Breast Physics UpDown Damping">Duração</string>
- <string name="Breast Physics LeftRight Max Effect">Efeito máximo</string>
- <string name="Breast Physics LeftRight Spring">Vibração</string>
- <string name="Breast Physics LeftRight Gain">Ganho</string>
- <string name="Breast Physics LeftRight Damping">Duração</string>
- <string name="Belly Physics Mass">Barriga - massa</string>
- <string name="Belly Physics Smoothing">Barriga - suavização</string>
- <string name="Belly Physics Gravity">Barriga - gravidade</string>
- <string name="Belly Physics Drag">Barriga - resistência do ar</string>
- <string name="Belly Physics UpDown Max Effect">Efeito máximo</string>
- <string name="Belly Physics UpDown Spring">Vibração</string>
- <string name="Belly Physics UpDown Gain">Ganho</string>
- <string name="Belly Physics UpDown Damping">Duração</string>
- <string name="Butt Physics Mass">Nádegas - massa</string>
- <string name="Butt Physics Smoothing">Nádegas - suavização</string>
- <string name="Butt Physics Gravity">Nádegas - gravidade</string>
- <string name="Butt Physics Drag">Nádegas - resistência do ar</string>
- <string name="Butt Physics UpDown Max Effect">Efeito máximo</string>
- <string name="Butt Physics UpDown Spring">Vibração</string>
- <string name="Butt Physics UpDown Gain">Ganho</string>
- <string name="Butt Physics UpDown Damping">Duração</string>
- <string name="Butt Physics LeftRight Max Effect">Efeito máximo</string>
- <string name="Butt Physics LeftRight Spring">Vibração</string>
- <string name="Butt Physics LeftRight Gain">Ganho</string>
- <string name="Butt Physics LeftRight Damping">Duração</string>
- <string name="Bushy Eyebrows">Sobrancelhas grossas</string>
- <string name="Bushy Hair">Cabelo grosso</string>
- <string name="Butt Size">Tamanho do traseiro</string>
- <string name="Butt Gravity">Nádegas - gravidade</string>
- <string name="bustle skirt">Saia armada</string>
- <string name="no bustle">Saia reta</string>
- <string name="more bustle">Mais</string>
- <string name="Chaplin">Chaplin</string>
- <string name="Cheek Bones">Maçãs do rosto</string>
- <string name="Chest Size">Tamanho do peito</string>
- <string name="Chin Angle">Ângulo do queixo</string>
- <string name="Chin Cleft">Fissura do queixo</string>
- <string name="Chin Curtains">Barba de contorno</string>
- <string name="Chin Depth">Profundidade do queixo</string>
- <string name="Chin Heavy">Queixo pronunciado</string>
- <string name="Chin In">Queixo para dentro</string>
- <string name="Chin Out">Queixo para fora</string>
- <string name="Chin-Neck">Queixo-pescoço</string>
- <string name="Clear">Limpar</string>
- <string name="Cleft">Fenda</string>
- <string name="Close Set Eyes">Fechar conjunto de olhos</string>
- <string name="Closed">Fechado</string>
- <string name="Closed Back">Trás fechada</string>
- <string name="Closed Front">Frente fechada</string>
- <string name="Closed Left">Esquerda fechada</string>
- <string name="Closed Right">Direita fechada</string>
- <string name="Coin Purse">Pouco volume</string>
- <string name="Collar Back">Colarinho posterior</string>
- <string name="Collar Front">Colarinho anterior</string>
- <string name="Corner Down">Canto para baixo</string>
- <string name="Corner Up">Canto para cima</string>
- <string name="Creased">Vincado</string>
- <string name="Crooked Nose">Nariz torto</string>
- <string name="Cuff Flare">Bainha larga</string>
- <string name="Dark">Escuro</string>
- <string name="Dark Green">Verde escuro</string>
- <string name="Darker">Mais escuro</string>
- <string name="Deep">Profundidade</string>
- <string name="Default Heels">Salto padrão</string>
- <string name="Dense">Densidade</string>
- <string name="Double Chin">Queixo duplo</string>
- <string name="Downturned">Curvado para baixo</string>
- <string name="Duffle Bag">Mais volume</string>
- <string name="Ear Angle">Ângulo da orelha</string>
- <string name="Ear Size">Tamanho da orelha</string>
- <string name="Ear Tips">Pontas das orelhas</string>
- <string name="Egg Head">Cabeça oval</string>
- <string name="Eye Bags">Olheiras</string>
- <string name="Eye Color">Cor dos olhos</string>
- <string name="Eye Depth">Profundidade dos olhos</string>
- <string name="Eye Lightness">Luminosidade dos olhos</string>
- <string name="Eye Opening">Abertura dos olhos</string>
- <string name="Eye Pop">Olho saltado</string>
- <string name="Eye Size">Tamanho dos olhos</string>
- <string name="Eye Spacing">Espaçamento dos olhos</string>
- <string name="Eyebrow Arc">Arco da sobrancelha</string>
- <string name="Eyebrow Density">Densidade da sobrancelha</string>
- <string name="Eyebrow Height">Altura da sobrancelha</string>
- <string name="Eyebrow Points">Pontas da sobrancelha</string>
- <string name="Eyebrow Size">Tamanho da sobrancelha</string>
- <string name="Eyelash Length">Comprimento das pestanas</string>
- <string name="Eyeliner">Delineador</string>
- <string name="Eyeliner Color">Cor do delineador</string>
- <string name="Eyes Bugged">Olhos esbugalhados</string>
- <string name="Face Shear">Face raspada</string>
- <string name="Facial Definition">Definição facial</string>
- <string name="Far Set Eyes">Distância entre os olhos</string>
- <string name="Fat Lips">Lábios carnudos</string>
- <string name="Female">Feminino</string>
- <string name="Fingerless">Dedos</string>
- <string name="Fingers">Dedos</string>
- <string name="Flared Cuffs">Punhos largos</string>
- <string name="Flat">Chato</string>
- <string name="Flat Butt">Traseiro chato</string>
- <string name="Flat Head">Cabeça chata</string>
- <string name="Flat Toe">Dedos dos pés chatos</string>
- <string name="Foot Size">Tamanho dos pés</string>
- <string name="Forehead Angle">Ângulo da testa</string>
- <string name="Forehead Heavy">Testa pronunciada</string>
- <string name="Freckles">Sardas</string>
- <string name="Front Fringe">Franja</string>
- <string name="Full Back">Trás cheia</string>
- <string name="Full Eyeliner">Delienador cheio</string>
- <string name="Full Front">Frente cheia</string>
- <string name="Full Hair Sides">Cabelos laterais cheios</string>
- <string name="Full Sides">Lados cheios</string>
- <string name="Glossy">Brilhante</string>
- <string name="Glove Fingers">Dedos da luva</string>
- <string name="Glove Length">Comprimento das luvas</string>
- <string name="Hair">Cabelo</string>
- <string name="Hair Back">Cabelo: Trás</string>
- <string name="Hair Front">Cabelo: Frente</string>
- <string name="Hair Sides">Cabelos: Lateral</string>
- <string name="Hair Sweep">Cabelo penteado</string>
- <string name="Hair Thickess">Espessura do cabelo</string>
- <string name="Hair Thickness">Espessura do cabelo</string>
- <string name="Hair Tilt">Divisão do cabelo</string>
- <string name="Hair Tilted Left">Divistão do cabelo esquerda</string>
- <string name="Hair Tilted Right">Divisão do cabelo direita</string>
- <string name="Hair Volume">Cabelo: Volume</string>
- <string name="Hand Size">Tamanho das mãos</string>
- <string name="Handlebars">Bigode</string>
- <string name="Head Length">Comprimento da cabeça</string>
- <string name="Head Shape">Formato da cabeça</string>
- <string name="Head Size">Tamanho da cabeça</string>
- <string name="Head Stretch">Extensão da cabeça</string>
- <string name="Heel Height">Altura do salto</string>
- <string name="Heel Shape">Formato do salto</string>
- <string name="Height">Altura</string>
- <string name="High">Alto</string>
- <string name="High Heels">Salto alto</string>
- <string name="High Jaw">Maxilar alto</string>
- <string name="High Platforms">Plataformas altas</string>
- <string name="High and Tight">Alto e justo</string>
- <string name="Higher">Mais alto</string>
- <string name="Hip Length">Comprimento do quadril</string>
- <string name="Hip Width">Largura do quadril</string>
- <string name="Hover">Pairar</string>
- <string name="In">Dentro</string>
- <string name="In Shdw Color">Cor da sombra interna</string>
- <string name="In Shdw Opacity">Opacidade da sombra interna</string>
- <string name="Inner Eye Corner">Canto interno dos olhos</string>
- <string name="Inner Eye Shadow">Sombra interna dos olhos</string>
- <string name="Inner Shadow">Sombra interna</string>
- <string name="Jacket Length">Comprimento da blusa</string>
- <string name="Jacket Wrinkles">Dobras da jaqueta</string>
- <string name="Jaw Angle">Ângulo da mandíbula</string>
- <string name="Jaw Jut">Posição do maxilar</string>
- <string name="Jaw Shape">Formato do maxilar</string>
- <string name="Join">Juntar</string>
- <string name="Jowls">Papo</string>
- <string name="Knee Angle">Ângulo do joelho</string>
- <string name="Knock Kneed">Joelhos para dentro</string>
- <string name="Large">Grande</string>
- <string name="Large Hands">Mãos grandes</string>
- <string name="Left Part">Parte esquerda</string>
- <string name="Leg Length">Comprimento da perna</string>
- <string name="Leg Muscles">Musculatura da perna</string>
- <string name="Less">Menos</string>
- <string name="Less Body Fat">Menos gordura</string>
- <string name="Less Curtains">Menos barba</string>
- <string name="Less Freckles">Menos sardas</string>
- <string name="Less Full">Menos</string>
- <string name="Less Gravity">Menos gravidade</string>
- <string name="Less Love">Menos excesso</string>
- <string name="Less Muscles">Menos músculos</string>
- <string name="Less Muscular">Menos musculoso</string>
- <string name="Less Rosy">Menos rosado</string>
- <string name="Less Round">Menos arredondado</string>
- <string name="Less Saddle">Menos ancas</string>
- <string name="Less Square">Menos quadrado</string>
- <string name="Less Volume">Menos volume</string>
- <string name="Less soul">Menos alma</string>
- <string name="Lighter">Lighter</string>
- <string name="Lip Cleft">Fenda dos lábios</string>
- <string name="Lip Cleft Depth">Profundidade da fenda dos lábios</string>
- <string name="Lip Fullness">Volume dos lábios</string>
- <string name="Lip Pinkness">Rosado dos lábios</string>
- <string name="Lip Ratio">Proporção dos lábios</string>
- <string name="Lip Thickness">Espessura dos lábios</string>
- <string name="Lip Width">Largura dos lábios</string>
- <string name="Lipgloss">Brilho dos lábios</string>
- <string name="Lipstick">Batom</string>
- <string name="Lipstick Color">Cor do batom</string>
- <string name="Long">Longo</string>
- <string name="Long Head">Cabeça alongada</string>
- <string name="Long Hips">Lábios longos</string>
- <string name="Long Legs">Pernas longas</string>
- <string name="Long Neck">Pescoço longo</string>
- <string name="Long Pigtails">Chiquinhas longas</string>
- <string name="Long Ponytail">Rabo de cavalo longo</string>
- <string name="Long Torso">Torso longo</string>
- <string name="Long arms">Braços longos</string>
- <string name="Loose Pants">Pantalonas</string>
- <string name="Loose Shirt">Camisa folgada</string>
- <string name="Loose Sleeves">Mangas folgadas</string>
- <string name="Love Handles">Pneu</string>
- <string name="Low">Baixo</string>
- <string name="Low Heels">Salto baixo</string>
- <string name="Low Jaw">Maxilar baixo</string>
- <string name="Low Platforms">Plataformas baixas</string>
- <string name="Low and Loose">Baixo e solto</string>
- <string name="Lower">Mais baixo</string>
- <string name="Lower Bridge">Mais baixa</string>
- <string name="Lower Cheeks">Bochechas abaixadas</string>
- <string name="Male">Masculino</string>
- <string name="Middle Part">Parte do meio</string>
- <string name="More">Mais</string>
- <string name="More Blush">Mais blush</string>
- <string name="More Body Fat">Mais gordura</string>
- <string name="More Curtains">Mais barba</string>
- <string name="More Eyeshadow">Mais sombra dos olhos</string>
- <string name="More Freckles">Mais sardas</string>
- <string name="More Full">Mais volume</string>
- <string name="More Gravity">Mais gravidade</string>
- <string name="More Lipstick">Mais batom</string>
- <string name="More Love">Mais cintura</string>
- <string name="More Lower Lip">Mais lábio inferior</string>
- <string name="More Muscles">Mais músculos</string>
- <string name="More Muscular">Mais musculoso</string>
- <string name="More Rosy">Mais rosado</string>
- <string name="More Round">Mais arredondado</string>
- <string name="More Saddle">Mais ancas</string>
- <string name="More Sloped">Mais inclinado</string>
- <string name="More Square">Mais quadrado</string>
- <string name="More Upper Lip">Mais lábios superiores</string>
- <string name="More Vertical">Mais vertical</string>
- <string name="More Volume">Mais volume</string>
- <string name="More soul">Mais alma</string>
- <string name="Moustache">Bigode</string>
- <string name="Mouth Corner">Canto da boca</string>
- <string name="Mouth Position">Posição da boca</string>
- <string name="Mowhawk">Moicano</string>
- <string name="Muscular">Muscular</string>
- <string name="Mutton Chops">Costeletas</string>
- <string name="Nail Polish">Esmate das unhas</string>
- <string name="Nail Polish Color">Cor do esmalte das unhas</string>
- <string name="Narrow">Estreito</string>
- <string name="Narrow Back">Costas estreitas</string>
- <string name="Narrow Front">Frente estreita</string>
- <string name="Narrow Lips">Lábios estreitos</string>
- <string name="Natural">Natural</string>
- <string name="Neck Length">Comprimento do pescoço</string>
- <string name="Neck Thickness">Espessura do pescoço</string>
- <string name="No Blush">Sem blush</string>
- <string name="No Eyeliner">Sem delineador</string>
- <string name="No Eyeshadow">Sem sombra</string>
- <string name="No Lipgloss">Sem brilho</string>
- <string name="No Lipstick">Sem batom</string>
- <string name="No Part">Sem parte</string>
- <string name="No Polish">Sem esmalte</string>
- <string name="No Red">Sem vermelho</string>
- <string name="No Spikes">Sem pontas</string>
- <string name="No White">Sem branco</string>
- <string name="No Wrinkles">Sem dobras</string>
- <string name="Normal Lower">Normal inferior</string>
- <string name="Normal Upper">Normal superior</string>
- <string name="Nose Left">Nariz para esquerda</string>
- <string name="Nose Right">Nariz para direita</string>
- <string name="Nose Size">Tamanho do nariz</string>
- <string name="Nose Thickness">Espessura do nariz</string>
- <string name="Nose Tip Angle">Ângulo da ponta do nariz</string>
- <string name="Nose Tip Shape">Formato da ponta do nariz</string>
- <string name="Nose Width">Largura do nariz</string>
- <string name="Nostril Division">Divisão das narinas</string>
- <string name="Nostril Width">Largura das narinas</string>
- <string name="Opaque">Opaco</string>
- <string name="Open">Abrir</string>
- <string name="Open Back">Aberto atrás</string>
- <string name="Open Front">Aberto na frente</string>
- <string name="Open Left">Aberto esquerdo</string>
- <string name="Open Right">Aberto direito</string>
- <string name="Orange">Laranja</string>
- <string name="Out">Fora</string>
- <string name="Out Shdw Color">Cor da sombra externa</string>
- <string name="Out Shdw Opacity">Opacidade da sombra externa</string>
- <string name="Outer Eye Corner">Canto externo do olho</string>
- <string name="Outer Eye Shadow">Sombra externa do olho</string>
- <string name="Outer Shadow">Sombra externa</string>
- <string name="Overbite">Má oclusão</string>
- <string name="Package">Púbis</string>
- <string name="Painted Nails">Unhas pintadas</string>
- <string name="Pale">Pálido</string>
- <string name="Pants Crotch">Cavalo da calça</string>
- <string name="Pants Fit">Caimento das calças</string>
- <string name="Pants Length">Comprimento das calças</string>
- <string name="Pants Waist">Cintura da calça</string>
- <string name="Pants Wrinkles">Dobras das calças</string>
- <string name="Part">Parte</string>
- <string name="Part Bangs">Divisão da franja</string>
- <string name="Pectorals">Peitorais</string>
- <string name="Pigment">Pigmento</string>
- <string name="Pigtails">Chiquinhas</string>
- <string name="Pink">Rosa</string>
- <string name="Pinker">Mais rosado</string>
- <string name="Platform Height">Altura da plataforma</string>
- <string name="Platform Width">Largura da plataforma</string>
- <string name="Pointy">Pontudo</string>
- <string name="Pointy Heels">Salto agulha</string>
- <string name="Ponytail">Rabo de cavalo</string>
- <string name="Poofy Skirt">Saia bufante</string>
- <string name="Pop Left Eye">Olho saltado esquerdo</string>
- <string name="Pop Right Eye">Olho saltado direito</string>
- <string name="Puffy">Inchado</string>
- <string name="Puffy Eyelids">Pálpebras inchadas</string>
- <string name="Rainbow Color">Cor do arco íris</string>
- <string name="Red Hair">Cabelo ruivo</string>
- <string name="Regular">Normal</string>
- <string name="Right Part">Parte direita</string>
- <string name="Rosy Complexion">Rosado da face</string>
- <string name="Round">Arredondado</string>
- <string name="Ruddiness">Rubor</string>
- <string name="Ruddy">Corado</string>
- <string name="Rumpled Hair">Cabelo desalinhado</string>
- <string name="Saddle Bags">Culote</string>
- <string name="Scrawny Leg">Pernas magricelas</string>
- <string name="Separate">Separar</string>
- <string name="Shallow">Raso</string>
- <string name="Shear Back">Trás rente</string>
- <string name="Shear Face">Face raspada</string>
- <string name="Shear Front">Frente rente</string>
- <string name="Shear Left Up">Esquerda rente para cima</string>
- <string name="Shear Right Up">Trás rente para cima</string>
- <string name="Sheared Back">Rente atrás</string>
- <string name="Sheared Front">Rente frente</string>
- <string name="Shift Left">Deslocar p/ esquerda</string>
- <string name="Shift Mouth">Deslocar boca</string>
- <string name="Shift Right">Deslocar p/ direita</string>
- <string name="Shirt Bottom">Barra da camisa</string>
- <string name="Shirt Fit">Ajuste da camisa</string>
- <string name="Shirt Wrinkles">+/- amassada</string>
- <string name="Shoe Height">Altura do sapato</string>
- <string name="Short">Curto</string>
- <string name="Short Arms">Braços curtos</string>
- <string name="Short Legs">Pernas curtas</string>
- <string name="Short Neck">Pescoço curto</string>
- <string name="Short Pigtails">Chiquinhas curtas</string>
- <string name="Short Ponytail">Rabo de cavalo curto</string>
- <string name="Short Sideburns">Costeletas curtas</string>
- <string name="Short Torso">Tronco curto</string>
- <string name="Short hips">Quadril curto</string>
- <string name="Shoulders">Ombros</string>
- <string name="Side Fringe">pontas laterais</string>
- <string name="Sideburns">Costeletas</string>
- <string name="Sides Hair">Cabelo lateral</string>
- <string name="Sides Hair Down">Cabelo lateral long</string>
- <string name="Sides Hair Up">Cabelo lateral superior</string>
- <string name="Skinny Neck">Pescoço fino</string>
- <string name="Skirt Fit">Ajuste de saia</string>
- <string name="Skirt Length">Comprimento da saia</string>
- <string name="Slanted Forehead">Testa inclinada</string>
- <string name="Sleeve Length">Comprimento da manga</string>
- <string name="Sleeve Looseness">Folga da manga</string>
- <string name="Slit Back">Abertura : Atrás</string>
- <string name="Slit Front">Abertura: Frente</string>
- <string name="Slit Left">Abertura: Esquerda</string>
- <string name="Slit Right">Abertura: Direita</string>
- <string name="Small">Pequeno</string>
- <string name="Small Hands">Mãos pequenas</string>
- <string name="Small Head">Cabeça pequena</string>
- <string name="Smooth">Suavizar</string>
- <string name="Smooth Hair">Suavizar cabelo</string>
- <string name="Socks Length">Comprimento das meias</string>
- <string name="Soulpatch">Cavanhaque</string>
- <string name="Sparse">Disperso</string>
- <string name="Spiked Hair">Cabelo espetado</string>
- <string name="Square">Quadrado</string>
- <string name="Square Toe">Dedo quadrado</string>
- <string name="Squash Head">Cabeça de Pera</string>
- <string name="Stretch Head">Cabeça esticada</string>
- <string name="Sunken">Afundar</string>
- <string name="Sunken Chest">Peito afundado</string>
- <string name="Sunken Eyes">Olhos afundados</string>
- <string name="Sweep Back">Pentear para trás</string>
- <string name="Sweep Forward">Pentear para frente</string>
- <string name="Tall">Alto</string>
- <string name="Taper Back">Afinar atrás</string>
- <string name="Taper Front">Afinar a frente</string>
- <string name="Thick Heels">Salto grosso</string>
- <string name="Thick Neck">Pescoço grosso</string>
- <string name="Thick Toe">Dedo grosso</string>
- <string name="Thin">Fino</string>
- <string name="Thin Eyebrows">Sobrancelhas finas</string>
- <string name="Thin Lips">Lábios finos</string>
- <string name="Thin Nose">Nariz fino</string>
- <string name="Tight Chin">Queixo apertado</string>
- <string name="Tight Cuffs">Punho justo</string>
- <string name="Tight Pants">Calça justa</string>
- <string name="Tight Shirt">Camisa justa</string>
- <string name="Tight Skirt">Saia justa</string>
- <string name="Tight Sleeves">Tight Sleeves</string>
- <string name="Toe Shape">Formato dos dedos</string>
- <string name="Toe Thickness">Espessura dos dos dedos</string>
- <string name="Torso Length">Comprimento do tronco</string>
- <string name="Torso Muscles">Músculos do tronco</string>
- <string name="Torso Scrawny">Tronco magricela</string>
- <string name="Unattached">Desanexado</string>
- <string name="Uncreased">Uncreased</string>
- <string name="Underbite">Underbite</string>
- <string name="Unnatural">Não natural</string>
- <string name="Upper Bridge">Parte alta do nariz</string>
- <string name="Upper Cheeks">Bochechas altas</string>
- <string name="Upper Chin Cleft">fenda do queixo alta</string>
- <string name="Upper Eyelid Fold">Curvatura dos cílios supériores</string>
- <string name="Upturned">Voltado para cima</string>
- <string name="Very Red">Bem vermelho</string>
- <string name="Waist Height">Altura da cintura</string>
- <string name="Well-Fed">Corpulento</string>
- <string name="White Hair">Grisalho</string>
- <string name="Wide">Amplo</string>
- <string name="Wide Back">Costas largas</string>
- <string name="Wide Front">Testa larga</string>
- <string name="Wide Lips">Lábios amplos</string>
- <string name="Wild">Selvagem</string>
- <string name="Wrinkles">Rugas</string>
- <string name="LocationCtrlAddLandmarkTooltip">Adicionar às minhas Landmarks</string>
- <string name="LocationCtrlEditLandmarkTooltip">Editar minhas Landmarks</string>
- <string name="LocationCtrlInfoBtnTooltip">Ver mais informações sobre a localização atual</string>
- <string name="LocationCtrlComboBtnTooltip">Histórico de localizações</string>
- <string name="LocationCtrlAdultIconTooltip">Região Adulta</string>
- <string name="LocationCtrlModerateIconTooltip">Região Moderada</string>
- <string name="LocationCtrlGeneralIconTooltip">Região em geral</string>
- <string name="LocationCtrlSeeAVsTooltip">Os avatares neste lote não podem ser vistos ou ouvidos por avatares fora dele</string>
- <string name="LocationCtrlPathfindingDirtyTooltip">Os objetos que se movem podem não se comportar corretamente nesta região até que ela seja recarregada.</string>
- <string name="LocationCtrlPathfindingDisabledTooltip">O pathfinding dinâmico não está habilitado nesta região.</string>
- <string name="UpdaterWindowTitle">[APP_NAME] Atualização</string>
- <string name="UpdaterNowUpdating">Atualizando agora o [APP_NAME]...</string>
- <string name="UpdaterNowInstalling">Instalando [APP_NAME]...</string>
- <string name="UpdaterUpdatingDescriptive">Seu visualizador [APP_NAME] está sendo atualizado para a versão mais recente. Isso pode levar algum tempo, então por favor seja paciente.</string>
- <string name="UpdaterProgressBarTextWithEllipses">Fazendo o download da atualização...</string>
- <string name="UpdaterProgressBarText">Fazendo o download da atualização</string>
- <string name="UpdaterFailDownloadTitle">Falha no download da atualização</string>
- <string name="UpdaterFailUpdateDescriptive">Um erro ocorreu ao atualizar [APP_NAME]. Por favor, faça o download da versão mais recente em www.secondlife.com.</string>
- <string name="UpdaterFailInstallTitle">Falha ao instalar a atualização</string>
- <string name="UpdaterFailStartTitle">Falha ao iniciar o visualizador</string>
- <string name="ItemsComingInTooFastFrom">[APP_NAME]: Entrada de itens rápida demais de [FROM_NAME], visualização automática suspensa por [TIME] segundos</string>
- <string name="ItemsComingInTooFast">[APP_NAME]: Entrada de itens rápida demais, visualização automática suspensa por [TIME] segundos</string>
- <string name="IM_logging_string">-- Log de mensagem instantânea habilitado --</string>
- <string name="IM_typing_start_string">[NAME] está digitando...</string>
- <string name="Unnamed">(Anônimo)</string>
- <string name="IM_moderated_chat_label">(Moderado: Voz desativado por padrão)</string>
- <string name="IM_unavailable_text_label">Bate-papo de texto não está disponível para esta chamada.</string>
- <string name="IM_muted_text_label">Seu bate- papo de texto foi desabilitado por um Moderador do Grupo.</string>
- <string name="IM_default_text_label">Clique aqui para menagem instantânea.</string>
- <string name="IM_to_label">Para</string>
- <string name="IM_moderator_label">(Moderador)</string>
- <string name="Saved_message">(Salvo em [LONG_TIMESTAMP])</string>
- <string name="IM_unblock_only_groups_friends">Para visualizar esta mensagem, você deve desmarcar &quot;Apenas amigos e grupos podem me ligar ou enviar MIs&quot; em Preferências/Privacidade.</string>
- <string name="OnlineStatus">Conectado</string>
- <string name="OfflineStatus">Desconectado</string>
- <string name="not_online_msg">O usuário não está online. As mensagens serão armazenadas e enviadas mais tarde.</string>
- <string name="not_online_inventory">O usuário não está online. O inventário foi salvo.</string>
- <string name="answered_call">Ligação atendida</string>
- <string name="you_started_call">Você iniciou uma ligação de voz</string>
- <string name="you_joined_call">Você entrou na ligação</string>
- <string name="you_auto_rejected_call-im">Você recusou automaticamente a chamada de voz enquanto &quot;Não perturbe&quot; estava ativado.</string>
- <string name="name_started_call">[NAME] iniciou uma ligação de voz</string>
- <string name="ringing-im">Entrando em ligação de voz...</string>
- <string name="connected-im">Conectado. Para sair, clique em Desligar</string>
- <string name="hang_up-im">Saiu da ligação de voz</string>
- <string name="conference-title">Bate-papo com várias pessoas</string>
- <string name="conference-title-incoming">Conversa com [AGENT_NAME]</string>
- <string name="inventory_item_offered-im">Item do inventário '[ITEM_NAME]' oferecido</string>
- <string name="inventory_folder_offered-im">Pasta do inventário '[ITEM_NAME]' oferecida</string>
+If you continue to receive this message, contact the [SUPPORT_SITE].
+ </string>
+ <string name="5 O'Clock Shadow">
+ Barba por fazer
+ </string>
+ <string name="All White">
+ Todo branco
+ </string>
+ <string name="Anime Eyes">
+ Olhos de Anime
+ </string>
+ <string name="Arced">
+ Arqueados
+ </string>
+ <string name="Arm Length">
+ Comprimento do braço
+ </string>
+ <string name="Attached">
+ Anexado
+ </string>
+ <string name="Attached Earlobes">
+ Lóbulos da orelha anexados
+ </string>
+ <string name="Back Fringe">
+ corte traseiro
+ </string>
+ <string name="Baggy">
+ folgado
+ </string>
+ <string name="Bangs">
+ Franja
+ </string>
+ <string name="Beady Eyes">
+ Olhos pequenos
+ </string>
+ <string name="Belly Size">
+ Tamanho da barriga
+ </string>
+ <string name="Big">
+ Grande
+ </string>
+ <string name="Big Butt">
+ Bunda grande
+ </string>
+ <string name="Big Hair Back">
+ Cabelo volumoso: Trás
+ </string>
+ <string name="Big Hair Front">
+ Cabelo volumoso: Frente
+ </string>
+ <string name="Big Hair Top">
+ Cabelo volumoso: Topo
+ </string>
+ <string name="Big Head">
+ cabeça grande
+ </string>
+ <string name="Big Pectorals">
+ Peitorais grandes
+ </string>
+ <string name="Big Spikes">
+ Pontas grandes
+ </string>
+ <string name="Black">
+ Negro
+ </string>
+ <string name="Blonde">
+ Loiro
+ </string>
+ <string name="Blonde Hair">
+ Cabelo loiro
+ </string>
+ <string name="Blush">
+ Blush
+ </string>
+ <string name="Blush Color">
+ Cor do blush
+ </string>
+ <string name="Blush Opacity">
+ Opacidade do blush
+ </string>
+ <string name="Body Definition">
+ Definição do corpo
+ </string>
+ <string name="Body Fat">
+ Gordura
+ </string>
+ <string name="Body Freckles">
+ Sardas
+ </string>
+ <string name="Body Thick">
+ Corpo cheio
+ </string>
+ <string name="Body Thickness">
+ Ossatura
+ </string>
+ <string name="Body Thin">
+ Corpo magro
+ </string>
+ <string name="Bow Legged">
+ Pernas arqueadas
+ </string>
+ <string name="Breast Buoyancy">
+ Caimento dos seios
+ </string>
+ <string name="Breast Cleavage">
+ Separação dos seios
+ </string>
+ <string name="Breast Size">
+ Tamanho dos seios
+ </string>
+ <string name="Bridge Width">
+ Largura do nariz
+ </string>
+ <string name="Broad">
+ Largo
+ </string>
+ <string name="Brow Size">
+ Tamanho da sobrancelha
+ </string>
+ <string name="Bug Eyes">
+ Olhos saltados
+ </string>
+ <string name="Bugged Eyes">
+ Olhos esbugalhados
+ </string>
+ <string name="Bulbous">
+ Bulbos
+ </string>
+ <string name="Bulbous Nose">
+ Nariz em bulbo
+ </string>
+ <string name="Breast Physics Mass">
+ Seios - massa
+ </string>
+ <string name="Breast Physics Smoothing">
+ Seios - suavização
+ </string>
+ <string name="Breast Physics Gravity">
+ Seios - gravidade
+ </string>
+ <string name="Breast Physics Drag">
+ Seios - resistência do ar
+ </string>
+ <string name="Breast Physics InOut Max Effect">
+ Efeito máximo
+ </string>
+ <string name="Breast Physics InOut Spring">
+ Vibração
+ </string>
+ <string name="Breast Physics InOut Gain">
+ Ganho
+ </string>
+ <string name="Breast Physics InOut Damping">
+ Duração
+ </string>
+ <string name="Breast Physics UpDown Max Effect">
+ Efeito máximo
+ </string>
+ <string name="Breast Physics UpDown Spring">
+ Vibração
+ </string>
+ <string name="Breast Physics UpDown Gain">
+ Ganho
+ </string>
+ <string name="Breast Physics UpDown Damping">
+ Duração
+ </string>
+ <string name="Breast Physics LeftRight Max Effect">
+ Efeito máximo
+ </string>
+ <string name="Breast Physics LeftRight Spring">
+ Vibração
+ </string>
+ <string name="Breast Physics LeftRight Gain">
+ Ganho
+ </string>
+ <string name="Breast Physics LeftRight Damping">
+ Duração
+ </string>
+ <string name="Belly Physics Mass">
+ Barriga - massa
+ </string>
+ <string name="Belly Physics Smoothing">
+ Barriga - suavização
+ </string>
+ <string name="Belly Physics Gravity">
+ Barriga - gravidade
+ </string>
+ <string name="Belly Physics Drag">
+ Barriga - resistência do ar
+ </string>
+ <string name="Belly Physics UpDown Max Effect">
+ Efeito máximo
+ </string>
+ <string name="Belly Physics UpDown Spring">
+ Vibração
+ </string>
+ <string name="Belly Physics UpDown Gain">
+ Ganho
+ </string>
+ <string name="Belly Physics UpDown Damping">
+ Duração
+ </string>
+ <string name="Butt Physics Mass">
+ Nádegas - massa
+ </string>
+ <string name="Butt Physics Smoothing">
+ Nádegas - suavização
+ </string>
+ <string name="Butt Physics Gravity">
+ Nádegas - gravidade
+ </string>
+ <string name="Butt Physics Drag">
+ Nádegas - resistência do ar
+ </string>
+ <string name="Butt Physics UpDown Max Effect">
+ Efeito máximo
+ </string>
+ <string name="Butt Physics UpDown Spring">
+ Vibração
+ </string>
+ <string name="Butt Physics UpDown Gain">
+ Ganho
+ </string>
+ <string name="Butt Physics UpDown Damping">
+ Duração
+ </string>
+ <string name="Butt Physics LeftRight Max Effect">
+ Efeito máximo
+ </string>
+ <string name="Butt Physics LeftRight Spring">
+ Vibração
+ </string>
+ <string name="Butt Physics LeftRight Gain">
+ Ganho
+ </string>
+ <string name="Butt Physics LeftRight Damping">
+ Duração
+ </string>
+ <string name="Bushy Eyebrows">
+ Sobrancelhas grossas
+ </string>
+ <string name="Bushy Hair">
+ Cabelo grosso
+ </string>
+ <string name="Butt Size">
+ Tamanho do traseiro
+ </string>
+ <string name="Butt Gravity">
+ Nádegas - gravidade
+ </string>
+ <string name="bustle skirt">
+ Saia armada
+ </string>
+ <string name="no bustle">
+ Saia reta
+ </string>
+ <string name="more bustle">
+ Mais
+ </string>
+ <string name="Chaplin">
+ Chaplin
+ </string>
+ <string name="Cheek Bones">
+ Maçãs do rosto
+ </string>
+ <string name="Chest Size">
+ Tamanho do peito
+ </string>
+ <string name="Chin Angle">
+ Ângulo do queixo
+ </string>
+ <string name="Chin Cleft">
+ Fissura do queixo
+ </string>
+ <string name="Chin Curtains">
+ Barba de contorno
+ </string>
+ <string name="Chin Depth">
+ Profundidade do queixo
+ </string>
+ <string name="Chin Heavy">
+ Queixo pronunciado
+ </string>
+ <string name="Chin In">
+ Queixo para dentro
+ </string>
+ <string name="Chin Out">
+ Queixo para fora
+ </string>
+ <string name="Chin-Neck">
+ Queixo-pescoço
+ </string>
+ <string name="Clear">
+ Limpar
+ </string>
+ <string name="Cleft">
+ Fenda
+ </string>
+ <string name="Close Set Eyes">
+ Fechar conjunto de olhos
+ </string>
+ <string name="Closed">
+ Fechado
+ </string>
+ <string name="Closed Back">
+ Trás fechada
+ </string>
+ <string name="Closed Front">
+ Frente fechada
+ </string>
+ <string name="Closed Left">
+ Esquerda fechada
+ </string>
+ <string name="Closed Right">
+ Direita fechada
+ </string>
+ <string name="Coin Purse">
+ Pouco volume
+ </string>
+ <string name="Collar Back">
+ Colarinho posterior
+ </string>
+ <string name="Collar Front">
+ Colarinho anterior
+ </string>
+ <string name="Corner Down">
+ Canto para baixo
+ </string>
+ <string name="Corner Up">
+ Canto para cima
+ </string>
+ <string name="Creased">
+ Vincado
+ </string>
+ <string name="Crooked Nose">
+ Nariz torto
+ </string>
+ <string name="Cuff Flare">
+ Bainha larga
+ </string>
+ <string name="Dark">
+ Escuro
+ </string>
+ <string name="Dark Green">
+ Verde escuro
+ </string>
+ <string name="Darker">
+ Mais escuro
+ </string>
+ <string name="Deep">
+ Profundidade
+ </string>
+ <string name="Default Heels">
+ Salto padrão
+ </string>
+ <string name="Dense">
+ Densidade
+ </string>
+ <string name="Double Chin">
+ Queixo duplo
+ </string>
+ <string name="Downturned">
+ Curvado para baixo
+ </string>
+ <string name="Duffle Bag">
+ Mais volume
+ </string>
+ <string name="Ear Angle">
+ Ângulo da orelha
+ </string>
+ <string name="Ear Size">
+ Tamanho da orelha
+ </string>
+ <string name="Ear Tips">
+ Pontas das orelhas
+ </string>
+ <string name="Egg Head">
+ Cabeça oval
+ </string>
+ <string name="Eye Bags">
+ Olheiras
+ </string>
+ <string name="Eye Color">
+ Cor dos olhos
+ </string>
+ <string name="Eye Depth">
+ Profundidade dos olhos
+ </string>
+ <string name="Eye Lightness">
+ Luminosidade dos olhos
+ </string>
+ <string name="Eye Opening">
+ Abertura dos olhos
+ </string>
+ <string name="Eye Pop">
+ Olho saltado
+ </string>
+ <string name="Eye Size">
+ Tamanho dos olhos
+ </string>
+ <string name="Eye Spacing">
+ Espaçamento dos olhos
+ </string>
+ <string name="Eyebrow Arc">
+ Arco da sobrancelha
+ </string>
+ <string name="Eyebrow Density">
+ Densidade da sobrancelha
+ </string>
+ <string name="Eyebrow Height">
+ Altura da sobrancelha
+ </string>
+ <string name="Eyebrow Points">
+ Pontas da sobrancelha
+ </string>
+ <string name="Eyebrow Size">
+ Tamanho da sobrancelha
+ </string>
+ <string name="Eyelash Length">
+ Comprimento das pestanas
+ </string>
+ <string name="Eyeliner">
+ Delineador
+ </string>
+ <string name="Eyeliner Color">
+ Cor do delineador
+ </string>
+ <string name="Eyes Bugged">
+ Olhos esbugalhados
+ </string>
+ <string name="Face Shear">
+ Face raspada
+ </string>
+ <string name="Facial Definition">
+ Definição facial
+ </string>
+ <string name="Far Set Eyes">
+ Distância entre os olhos
+ </string>
+ <string name="Fat Lips">
+ Lábios carnudos
+ </string>
+ <string name="Female">
+ Feminino
+ </string>
+ <string name="Fingerless">
+ Dedos
+ </string>
+ <string name="Fingers">
+ Dedos
+ </string>
+ <string name="Flared Cuffs">
+ Punhos largos
+ </string>
+ <string name="Flat">
+ Chato
+ </string>
+ <string name="Flat Butt">
+ Traseiro chato
+ </string>
+ <string name="Flat Head">
+ Cabeça chata
+ </string>
+ <string name="Flat Toe">
+ Dedos dos pés chatos
+ </string>
+ <string name="Foot Size">
+ Tamanho dos pés
+ </string>
+ <string name="Forehead Angle">
+ Ângulo da testa
+ </string>
+ <string name="Forehead Heavy">
+ Testa pronunciada
+ </string>
+ <string name="Freckles">
+ Sardas
+ </string>
+ <string name="Front Fringe">
+ Franja
+ </string>
+ <string name="Full Back">
+ Trás cheia
+ </string>
+ <string name="Full Eyeliner">
+ Delienador cheio
+ </string>
+ <string name="Full Front">
+ Frente cheia
+ </string>
+ <string name="Full Hair Sides">
+ Cabelos laterais cheios
+ </string>
+ <string name="Full Sides">
+ Lados cheios
+ </string>
+ <string name="Glossy">
+ Brilhante
+ </string>
+ <string name="Glove Fingers">
+ Dedos da luva
+ </string>
+ <string name="Glove Length">
+ Comprimento das luvas
+ </string>
+ <string name="Hair">
+ Cabelo
+ </string>
+ <string name="Hair Back">
+ Cabelo: Trás
+ </string>
+ <string name="Hair Front">
+ Cabelo: Frente
+ </string>
+ <string name="Hair Sides">
+ Cabelos: Lateral
+ </string>
+ <string name="Hair Sweep">
+ Cabelo penteado
+ </string>
+ <string name="Hair Thickess">
+ Espessura do cabelo
+ </string>
+ <string name="Hair Thickness">
+ Espessura do cabelo
+ </string>
+ <string name="Hair Tilt">
+ Divisão do cabelo
+ </string>
+ <string name="Hair Tilted Left">
+ Divistão do cabelo esquerda
+ </string>
+ <string name="Hair Tilted Right">
+ Divisão do cabelo direita
+ </string>
+ <string name="Hair Volume">
+ Cabelo: Volume
+ </string>
+ <string name="Hand Size">
+ Tamanho das mãos
+ </string>
+ <string name="Handlebars">
+ Bigode
+ </string>
+ <string name="Head Length">
+ Comprimento da cabeça
+ </string>
+ <string name="Head Shape">
+ Formato da cabeça
+ </string>
+ <string name="Head Size">
+ Tamanho da cabeça
+ </string>
+ <string name="Head Stretch">
+ Extensão da cabeça
+ </string>
+ <string name="Heel Height">
+ Altura do salto
+ </string>
+ <string name="Heel Shape">
+ Formato do salto
+ </string>
+ <string name="Height">
+ Altura
+ </string>
+ <string name="High">
+ Alto
+ </string>
+ <string name="High Heels">
+ Salto alto
+ </string>
+ <string name="High Jaw">
+ Maxilar alto
+ </string>
+ <string name="High Platforms">
+ Plataformas altas
+ </string>
+ <string name="High and Tight">
+ Alto e justo
+ </string>
+ <string name="Higher">
+ Mais alto
+ </string>
+ <string name="Hip Length">
+ Comprimento do quadril
+ </string>
+ <string name="Hip Width">
+ Largura do quadril
+ </string>
+ <string name="Hover">
+ Pairar
+ </string>
+ <string name="In">
+ Dentro
+ </string>
+ <string name="In Shdw Color">
+ Cor da sombra interna
+ </string>
+ <string name="In Shdw Opacity">
+ Opacidade da sombra interna
+ </string>
+ <string name="Inner Eye Corner">
+ Canto interno dos olhos
+ </string>
+ <string name="Inner Eye Shadow">
+ Sombra interna dos olhos
+ </string>
+ <string name="Inner Shadow">
+ Sombra interna
+ </string>
+ <string name="Jacket Length">
+ Comprimento da blusa
+ </string>
+ <string name="Jacket Wrinkles">
+ Dobras da jaqueta
+ </string>
+ <string name="Jaw Angle">
+ Ângulo da mandíbula
+ </string>
+ <string name="Jaw Jut">
+ Posição do maxilar
+ </string>
+ <string name="Jaw Shape">
+ Formato do maxilar
+ </string>
+ <string name="Join">
+ Juntar
+ </string>
+ <string name="Jowls">
+ Papo
+ </string>
+ <string name="Knee Angle">
+ Ângulo do joelho
+ </string>
+ <string name="Knock Kneed">
+ Joelhos para dentro
+ </string>
+ <string name="Large">
+ Grande
+ </string>
+ <string name="Large Hands">
+ Mãos grandes
+ </string>
+ <string name="Left Part">
+ Parte esquerda
+ </string>
+ <string name="Leg Length">
+ Comprimento da perna
+ </string>
+ <string name="Leg Muscles">
+ Musculatura da perna
+ </string>
+ <string name="Less">
+ Menos
+ </string>
+ <string name="Less Body Fat">
+ Menos gordura
+ </string>
+ <string name="Less Curtains">
+ Menos barba
+ </string>
+ <string name="Less Freckles">
+ Menos sardas
+ </string>
+ <string name="Less Full">
+ Menos
+ </string>
+ <string name="Less Gravity">
+ Menos gravidade
+ </string>
+ <string name="Less Love">
+ Menos excesso
+ </string>
+ <string name="Less Muscles">
+ Menos músculos
+ </string>
+ <string name="Less Muscular">
+ Menos musculoso
+ </string>
+ <string name="Less Rosy">
+ Menos rosado
+ </string>
+ <string name="Less Round">
+ Menos arredondado
+ </string>
+ <string name="Less Saddle">
+ Menos ancas
+ </string>
+ <string name="Less Square">
+ Menos quadrado
+ </string>
+ <string name="Less Volume">
+ Menos volume
+ </string>
+ <string name="Less soul">
+ Menos alma
+ </string>
+ <string name="Lighter">
+ Lighter
+ </string>
+ <string name="Lip Cleft">
+ Fenda dos lábios
+ </string>
+ <string name="Lip Cleft Depth">
+ Profundidade da fenda dos lábios
+ </string>
+ <string name="Lip Fullness">
+ Volume dos lábios
+ </string>
+ <string name="Lip Pinkness">
+ Rosado dos lábios
+ </string>
+ <string name="Lip Ratio">
+ Proporção dos lábios
+ </string>
+ <string name="Lip Thickness">
+ Espessura dos lábios
+ </string>
+ <string name="Lip Width">
+ Largura dos lábios
+ </string>
+ <string name="Lipgloss">
+ Brilho dos lábios
+ </string>
+ <string name="Lipstick">
+ Batom
+ </string>
+ <string name="Lipstick Color">
+ Cor do batom
+ </string>
+ <string name="Long">
+ Longo
+ </string>
+ <string name="Long Head">
+ Cabeça alongada
+ </string>
+ <string name="Long Hips">
+ Lábios longos
+ </string>
+ <string name="Long Legs">
+ Pernas longas
+ </string>
+ <string name="Long Neck">
+ Pescoço longo
+ </string>
+ <string name="Long Pigtails">
+ Chiquinhas longas
+ </string>
+ <string name="Long Ponytail">
+ Rabo de cavalo longo
+ </string>
+ <string name="Long Torso">
+ Torso longo
+ </string>
+ <string name="Long arms">
+ Braços longos
+ </string>
+ <string name="Loose Pants">
+ Pantalonas
+ </string>
+ <string name="Loose Shirt">
+ Camisa folgada
+ </string>
+ <string name="Loose Sleeves">
+ Mangas folgadas
+ </string>
+ <string name="Love Handles">
+ Pneu
+ </string>
+ <string name="Low">
+ Baixo
+ </string>
+ <string name="Low Heels">
+ Salto baixo
+ </string>
+ <string name="Low Jaw">
+ Maxilar baixo
+ </string>
+ <string name="Low Platforms">
+ Plataformas baixas
+ </string>
+ <string name="Low and Loose">
+ Baixo e solto
+ </string>
+ <string name="Lower">
+ Mais baixo
+ </string>
+ <string name="Lower Bridge">
+ Mais baixa
+ </string>
+ <string name="Lower Cheeks">
+ Bochechas abaixadas
+ </string>
+ <string name="Male">
+ Masculino
+ </string>
+ <string name="Middle Part">
+ Parte do meio
+ </string>
+ <string name="More">
+ Mais
+ </string>
+ <string name="More Blush">
+ Mais blush
+ </string>
+ <string name="More Body Fat">
+ Mais gordura
+ </string>
+ <string name="More Curtains">
+ Mais barba
+ </string>
+ <string name="More Eyeshadow">
+ Mais sombra dos olhos
+ </string>
+ <string name="More Freckles">
+ Mais sardas
+ </string>
+ <string name="More Full">
+ Mais volume
+ </string>
+ <string name="More Gravity">
+ Mais gravidade
+ </string>
+ <string name="More Lipstick">
+ Mais batom
+ </string>
+ <string name="More Love">
+ Mais cintura
+ </string>
+ <string name="More Lower Lip">
+ Mais lábio inferior
+ </string>
+ <string name="More Muscles">
+ Mais músculos
+ </string>
+ <string name="More Muscular">
+ Mais musculoso
+ </string>
+ <string name="More Rosy">
+ Mais rosado
+ </string>
+ <string name="More Round">
+ Mais arredondado
+ </string>
+ <string name="More Saddle">
+ Mais ancas
+ </string>
+ <string name="More Sloped">
+ Mais inclinado
+ </string>
+ <string name="More Square">
+ Mais quadrado
+ </string>
+ <string name="More Upper Lip">
+ Mais lábios superiores
+ </string>
+ <string name="More Vertical">
+ Mais vertical
+ </string>
+ <string name="More Volume">
+ Mais volume
+ </string>
+ <string name="More soul">
+ Mais alma
+ </string>
+ <string name="Moustache">
+ Bigode
+ </string>
+ <string name="Mouth Corner">
+ Canto da boca
+ </string>
+ <string name="Mouth Position">
+ Posição da boca
+ </string>
+ <string name="Mowhawk">
+ Moicano
+ </string>
+ <string name="Muscular">
+ Muscular
+ </string>
+ <string name="Mutton Chops">
+ Costeletas
+ </string>
+ <string name="Nail Polish">
+ Esmate das unhas
+ </string>
+ <string name="Nail Polish Color">
+ Cor do esmalte das unhas
+ </string>
+ <string name="Narrow">
+ Estreito
+ </string>
+ <string name="Narrow Back">
+ Costas estreitas
+ </string>
+ <string name="Narrow Front">
+ Frente estreita
+ </string>
+ <string name="Narrow Lips">
+ Lábios estreitos
+ </string>
+ <string name="Natural">
+ Natural
+ </string>
+ <string name="Neck Length">
+ Comprimento do pescoço
+ </string>
+ <string name="Neck Thickness">
+ Espessura do pescoço
+ </string>
+ <string name="No Blush">
+ Sem blush
+ </string>
+ <string name="No Eyeliner">
+ Sem delineador
+ </string>
+ <string name="No Eyeshadow">
+ Sem sombra
+ </string>
+ <string name="No Lipgloss">
+ Sem brilho
+ </string>
+ <string name="No Lipstick">
+ Sem batom
+ </string>
+ <string name="No Part">
+ Sem parte
+ </string>
+ <string name="No Polish">
+ Sem esmalte
+ </string>
+ <string name="No Red">
+ Sem vermelho
+ </string>
+ <string name="No Spikes">
+ Sem pontas
+ </string>
+ <string name="No White">
+ Sem branco
+ </string>
+ <string name="No Wrinkles">
+ Sem dobras
+ </string>
+ <string name="Normal Lower">
+ Normal inferior
+ </string>
+ <string name="Normal Upper">
+ Normal superior
+ </string>
+ <string name="Nose Left">
+ Nariz para esquerda
+ </string>
+ <string name="Nose Right">
+ Nariz para direita
+ </string>
+ <string name="Nose Size">
+ Tamanho do nariz
+ </string>
+ <string name="Nose Thickness">
+ Espessura do nariz
+ </string>
+ <string name="Nose Tip Angle">
+ Ângulo da ponta do nariz
+ </string>
+ <string name="Nose Tip Shape">
+ Formato da ponta do nariz
+ </string>
+ <string name="Nose Width">
+ Largura do nariz
+ </string>
+ <string name="Nostril Division">
+ Divisão das narinas
+ </string>
+ <string name="Nostril Width">
+ Largura das narinas
+ </string>
+ <string name="Opaque">
+ Opaco
+ </string>
+ <string name="Open">
+ Abrir
+ </string>
+ <string name="Open Back">
+ Aberto atrás
+ </string>
+ <string name="Open Front">
+ Aberto na frente
+ </string>
+ <string name="Open Left">
+ Aberto esquerdo
+ </string>
+ <string name="Open Right">
+ Aberto direito
+ </string>
+ <string name="Orange">
+ Laranja
+ </string>
+ <string name="Out">
+ Fora
+ </string>
+ <string name="Out Shdw Color">
+ Cor da sombra externa
+ </string>
+ <string name="Out Shdw Opacity">
+ Opacidade da sombra externa
+ </string>
+ <string name="Outer Eye Corner">
+ Canto externo do olho
+ </string>
+ <string name="Outer Eye Shadow">
+ Sombra externa do olho
+ </string>
+ <string name="Outer Shadow">
+ Sombra externa
+ </string>
+ <string name="Overbite">
+ Má oclusão
+ </string>
+ <string name="Package">
+ Púbis
+ </string>
+ <string name="Painted Nails">
+ Unhas pintadas
+ </string>
+ <string name="Pale">
+ Pálido
+ </string>
+ <string name="Pants Crotch">
+ Cavalo da calça
+ </string>
+ <string name="Pants Fit">
+ Caimento das calças
+ </string>
+ <string name="Pants Length">
+ Comprimento das calças
+ </string>
+ <string name="Pants Waist">
+ Cintura da calça
+ </string>
+ <string name="Pants Wrinkles">
+ Dobras das calças
+ </string>
+ <string name="Part">
+ Parte
+ </string>
+ <string name="Part Bangs">
+ Divisão da franja
+ </string>
+ <string name="Pectorals">
+ Peitorais
+ </string>
+ <string name="Pigment">
+ Pigmento
+ </string>
+ <string name="Pigtails">
+ Chiquinhas
+ </string>
+ <string name="Pink">
+ Rosa
+ </string>
+ <string name="Pinker">
+ Mais rosado
+ </string>
+ <string name="Platform Height">
+ Altura da plataforma
+ </string>
+ <string name="Platform Width">
+ Largura da plataforma
+ </string>
+ <string name="Pointy">
+ Pontudo
+ </string>
+ <string name="Pointy Heels">
+ Salto agulha
+ </string>
+ <string name="Ponytail">
+ Rabo de cavalo
+ </string>
+ <string name="Poofy Skirt">
+ Saia bufante
+ </string>
+ <string name="Pop Left Eye">
+ Olho saltado esquerdo
+ </string>
+ <string name="Pop Right Eye">
+ Olho saltado direito
+ </string>
+ <string name="Puffy">
+ Inchado
+ </string>
+ <string name="Puffy Eyelids">
+ Pálpebras inchadas
+ </string>
+ <string name="Rainbow Color">
+ Cor do arco íris
+ </string>
+ <string name="Red Hair">
+ Cabelo ruivo
+ </string>
+ <string name="Regular">
+ Normal
+ </string>
+ <string name="Right Part">
+ Parte direita
+ </string>
+ <string name="Rosy Complexion">
+ Rosado da face
+ </string>
+ <string name="Round">
+ Arredondado
+ </string>
+ <string name="Ruddiness">
+ Rubor
+ </string>
+ <string name="Ruddy">
+ Corado
+ </string>
+ <string name="Rumpled Hair">
+ Cabelo desalinhado
+ </string>
+ <string name="Saddle Bags">
+ Culote
+ </string>
+ <string name="Scrawny Leg">
+ Pernas magricelas
+ </string>
+ <string name="Separate">
+ Separar
+ </string>
+ <string name="Shallow">
+ Raso
+ </string>
+ <string name="Shear Back">
+ Trás rente
+ </string>
+ <string name="Shear Face">
+ Face raspada
+ </string>
+ <string name="Shear Front">
+ Frente rente
+ </string>
+ <string name="Shear Left Up">
+ Esquerda rente para cima
+ </string>
+ <string name="Shear Right Up">
+ Trás rente para cima
+ </string>
+ <string name="Sheared Back">
+ Rente atrás
+ </string>
+ <string name="Sheared Front">
+ Rente frente
+ </string>
+ <string name="Shift Left">
+ Deslocar p/ esquerda
+ </string>
+ <string name="Shift Mouth">
+ Deslocar boca
+ </string>
+ <string name="Shift Right">
+ Deslocar p/ direita
+ </string>
+ <string name="Shirt Bottom">
+ Barra da camisa
+ </string>
+ <string name="Shirt Fit">
+ Ajuste da camisa
+ </string>
+ <string name="Shirt Wrinkles">
+ +/- amassada
+ </string>
+ <string name="Shoe Height">
+ Altura do sapato
+ </string>
+ <string name="Short">
+ Curto
+ </string>
+ <string name="Short Arms">
+ Braços curtos
+ </string>
+ <string name="Short Legs">
+ Pernas curtas
+ </string>
+ <string name="Short Neck">
+ Pescoço curto
+ </string>
+ <string name="Short Pigtails">
+ Chiquinhas curtas
+ </string>
+ <string name="Short Ponytail">
+ Rabo de cavalo curto
+ </string>
+ <string name="Short Sideburns">
+ Costeletas curtas
+ </string>
+ <string name="Short Torso">
+ Tronco curto
+ </string>
+ <string name="Short hips">
+ Quadril curto
+ </string>
+ <string name="Shoulders">
+ Ombros
+ </string>
+ <string name="Side Fringe">
+ pontas laterais
+ </string>
+ <string name="Sideburns">
+ Costeletas
+ </string>
+ <string name="Sides Hair">
+ Cabelo lateral
+ </string>
+ <string name="Sides Hair Down">
+ Cabelo lateral long
+ </string>
+ <string name="Sides Hair Up">
+ Cabelo lateral superior
+ </string>
+ <string name="Skinny Neck">
+ Pescoço fino
+ </string>
+ <string name="Skirt Fit">
+ Ajuste de saia
+ </string>
+ <string name="Skirt Length">
+ Comprimento da saia
+ </string>
+ <string name="Slanted Forehead">
+ Testa inclinada
+ </string>
+ <string name="Sleeve Length">
+ Comprimento da manga
+ </string>
+ <string name="Sleeve Looseness">
+ Folga da manga
+ </string>
+ <string name="Slit Back">
+ Abertura : Atrás
+ </string>
+ <string name="Slit Front">
+ Abertura: Frente
+ </string>
+ <string name="Slit Left">
+ Abertura: Esquerda
+ </string>
+ <string name="Slit Right">
+ Abertura: Direita
+ </string>
+ <string name="Small">
+ Pequeno
+ </string>
+ <string name="Small Hands">
+ Mãos pequenas
+ </string>
+ <string name="Small Head">
+ Cabeça pequena
+ </string>
+ <string name="Smooth">
+ Suavizar
+ </string>
+ <string name="Smooth Hair">
+ Suavizar cabelo
+ </string>
+ <string name="Socks Length">
+ Comprimento das meias
+ </string>
+ <string name="Soulpatch">
+ Cavanhaque
+ </string>
+ <string name="Sparse">
+ Disperso
+ </string>
+ <string name="Spiked Hair">
+ Cabelo espetado
+ </string>
+ <string name="Square">
+ Quadrado
+ </string>
+ <string name="Square Toe">
+ Dedo quadrado
+ </string>
+ <string name="Squash Head">
+ Cabeça de Pera
+ </string>
+ <string name="Stretch Head">
+ Cabeça esticada
+ </string>
+ <string name="Sunken">
+ Afundar
+ </string>
+ <string name="Sunken Chest">
+ Peito afundado
+ </string>
+ <string name="Sunken Eyes">
+ Olhos afundados
+ </string>
+ <string name="Sweep Back">
+ Pentear para trás
+ </string>
+ <string name="Sweep Forward">
+ Pentear para frente
+ </string>
+ <string name="Tall">
+ Alto
+ </string>
+ <string name="Taper Back">
+ Afinar atrás
+ </string>
+ <string name="Taper Front">
+ Afinar a frente
+ </string>
+ <string name="Thick Heels">
+ Salto grosso
+ </string>
+ <string name="Thick Neck">
+ Pescoço grosso
+ </string>
+ <string name="Thick Toe">
+ Dedo grosso
+ </string>
+ <string name="Thin">
+ Fino
+ </string>
+ <string name="Thin Eyebrows">
+ Sobrancelhas finas
+ </string>
+ <string name="Thin Lips">
+ Lábios finos
+ </string>
+ <string name="Thin Nose">
+ Nariz fino
+ </string>
+ <string name="Tight Chin">
+ Queixo apertado
+ </string>
+ <string name="Tight Cuffs">
+ Punho justo
+ </string>
+ <string name="Tight Pants">
+ Calça justa
+ </string>
+ <string name="Tight Shirt">
+ Camisa justa
+ </string>
+ <string name="Tight Skirt">
+ Saia justa
+ </string>
+ <string name="Tight Sleeves">
+ Tight Sleeves
+ </string>
+ <string name="Toe Shape">
+ Formato dos dedos
+ </string>
+ <string name="Toe Thickness">
+ Espessura dos dos dedos
+ </string>
+ <string name="Torso Length">
+ Comprimento do tronco
+ </string>
+ <string name="Torso Muscles">
+ Músculos do tronco
+ </string>
+ <string name="Torso Scrawny">
+ Tronco magricela
+ </string>
+ <string name="Unattached">
+ Desanexado
+ </string>
+ <string name="Uncreased">
+ Uncreased
+ </string>
+ <string name="Underbite">
+ Underbite
+ </string>
+ <string name="Unnatural">
+ Não natural
+ </string>
+ <string name="Upper Bridge">
+ Parte alta do nariz
+ </string>
+ <string name="Upper Cheeks">
+ Bochechas altas
+ </string>
+ <string name="Upper Chin Cleft">
+ fenda do queixo alta
+ </string>
+ <string name="Upper Eyelid Fold">
+ Curvatura dos cílios supériores
+ </string>
+ <string name="Upturned">
+ Voltado para cima
+ </string>
+ <string name="Very Red">
+ Bem vermelho
+ </string>
+ <string name="Waist Height">
+ Altura da cintura
+ </string>
+ <string name="Well-Fed">
+ Corpulento
+ </string>
+ <string name="White Hair">
+ Grisalho
+ </string>
+ <string name="Wide">
+ Amplo
+ </string>
+ <string name="Wide Back">
+ Costas largas
+ </string>
+ <string name="Wide Front">
+ Testa larga
+ </string>
+ <string name="Wide Lips">
+ Lábios amplos
+ </string>
+ <string name="Wild">
+ Selvagem
+ </string>
+ <string name="Wrinkles">
+ Rugas
+ </string>
+ <string name="LocationCtrlAddLandmarkTooltip">
+ Adicionar às minhas Landmarks
+ </string>
+ <string name="LocationCtrlEditLandmarkTooltip">
+ Editar minhas Landmarks
+ </string>
+ <string name="LocationCtrlInfoBtnTooltip">
+ Ver mais informações sobre a localização atual
+ </string>
+ <string name="LocationCtrlComboBtnTooltip">
+ Histórico de localizações
+ </string>
+ <string name="LocationCtrlAdultIconTooltip">
+ Região Adulta
+ </string>
+ <string name="LocationCtrlModerateIconTooltip">
+ Região Moderada
+ </string>
+ <string name="LocationCtrlGeneralIconTooltip">
+ Região em geral
+ </string>
+ <string name="LocationCtrlSeeAVsTooltip">
+ Os avatares neste lote não podem ser vistos ou ouvidos por avatares fora dele
+ </string>
+ <string name="LocationCtrlPathfindingDirtyTooltip">
+ Os objetos que se movem podem não se comportar corretamente nesta região até que ela seja recarregada.
+ </string>
+ <string name="LocationCtrlPathfindingDisabledTooltip">
+ O pathfinding dinâmico não está habilitado nesta região.
+ </string>
+ <string name="UpdaterWindowTitle">
+ [APP_NAME] Atualização
+ </string>
+ <string name="UpdaterNowUpdating">
+ Atualizando agora o [APP_NAME]...
+ </string>
+ <string name="UpdaterNowInstalling">
+ Instalando [APP_NAME]...
+ </string>
+ <string name="UpdaterUpdatingDescriptive">
+ Seu visualizador [APP_NAME] está sendo atualizado para a versão mais recente. Isso pode levar algum tempo, então por favor seja paciente.
+ </string>
+ <string name="UpdaterProgressBarTextWithEllipses">
+ Fazendo o download da atualização...
+ </string>
+ <string name="UpdaterProgressBarText">
+ Fazendo o download da atualização
+ </string>
+ <string name="UpdaterFailDownloadTitle">
+ Falha no download da atualização
+ </string>
+ <string name="UpdaterFailUpdateDescriptive">
+ Um erro ocorreu ao atualizar [APP_NAME]. Por favor, faça o download da versão mais recente em www.secondlife.com.
+ </string>
+ <string name="UpdaterFailInstallTitle">
+ Falha ao instalar a atualização
+ </string>
+ <string name="UpdaterFailStartTitle">
+ Falha ao iniciar o visualizador
+ </string>
+ <string name="ItemsComingInTooFastFrom">
+ [APP_NAME]: Entrada de itens rápida demais de [FROM_NAME], visualização automática suspensa por [TIME] segundos
+ </string>
+ <string name="ItemsComingInTooFast">
+ [APP_NAME]: Entrada de itens rápida demais, visualização automática suspensa por [TIME] segundos
+ </string>
+ <string name="IM_logging_string">
+ -- Log de mensagem instantânea habilitado --
+ </string>
+ <string name="IM_typing_start_string">
+ [NAME] está digitando...
+ </string>
+ <string name="Unnamed">
+ (Anônimo)
+ </string>
+ <string name="IM_moderated_chat_label">
+ (Moderado: Voz desativado por padrão)
+ </string>
+ <string name="IM_unavailable_text_label">
+ Bate-papo de texto não está disponível para esta chamada.
+ </string>
+ <string name="IM_muted_text_label">
+ Seu bate- papo de texto foi desabilitado por um Moderador do Grupo.
+ </string>
+ <string name="IM_default_text_label">
+ Clique aqui para menagem instantânea.
+ </string>
+ <string name="IM_to_label">
+ Para
+ </string>
+ <string name="IM_moderator_label">
+ (Moderador)
+ </string>
+ <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="OnlineStatus">
+ Conectado
+ </string>
+ <string name="OfflineStatus">
+ Desconectado
+ </string>
+ <string name="not_online_msg">
+ O usuário não está online. As mensagens serão armazenadas e enviadas mais tarde.
+ </string>
+ <string name="not_online_inventory">
+ O usuário não está online. O inventário foi salvo.
+ </string>
+ <string name="answered_call">
+ Ligação atendida
+ </string>
+ <string name="you_started_call">
+ Você iniciou uma ligação de voz
+ </string>
+ <string name="you_joined_call">
+ Você entrou na ligação
+ </string>
+ <string name="you_auto_rejected_call-im">
+ Você recusou automaticamente a chamada de voz enquanto "Não perturbe" estava ativado.
+ </string>
+ <string name="name_started_call">
+ [NAME] iniciou uma ligação de voz
+ </string>
+ <string name="ringing-im">
+ Entrando em ligação de voz...
+ </string>
+ <string name="connected-im">
+ Conectado. Para sair, clique em Desligar
+ </string>
+ <string name="hang_up-im">
+ Saiu da ligação de voz
+ </string>
+ <string name="conference-title">
+ Bate-papo com várias pessoas
+ </string>
+ <string name="conference-title-incoming">
+ Conversa com [AGENT_NAME]
+ </string>
+ <string name="inventory_item_offered-im">
+ Item do inventário '[ITEM_NAME]' oferecido
+ </string>
+ <string name="inventory_folder_offered-im">
+ Pasta do inventário '[ITEM_NAME]' oferecida
+ </string>
<string name="bot_warning">
-Você está conversando com um bot, [NAME]. Não compartilhe informações pessoais.
+ Você está conversando com um bot, [NAME]. Não compartilhe informações pessoais.
Saiba mais em https://second.life/scripted-agents.
</string>
- <string name="facebook_post_success">Você publicou no Facebook.</string>
- <string name="flickr_post_success">Você publicou no Flickr.</string>
- <string name="twitter_post_success">Você publicou no Twitter.</string>
- <string name="no_session_message">(Sessão de MI inexistente)</string>
- <string name="only_user_message">Você é o único usuário desta sessão.</string>
- <string name="offline_message">[NAME] está offline.</string>
- <string name="invite_message">Clique no botão [BUTTON NAME] para aceitar/ conectar a este bate-papo em voz.</string>
- <string name="muted_message">Você bloqueou este residente. Se quiser retirar o bloqueio, basta enviar uma mensagem.</string>
- <string name="generic">Erro de solicitação, tente novamente mais tarde.</string>
- <string name="generic_request_error">Erro na requisição, por favor, tente novamente.</string>
- <string name="insufficient_perms_error">Você não tem permissões suficientes.</string>
- <string name="session_does_not_exist_error">A sessão deixou de existir</string>
- <string name="no_ability_error">Você não possui esta habilidade.</string>
- <string name="no_ability">Você não possui esta habilidade.</string>
- <string name="not_a_mod_error">Você não é um moderador de sessão.</string>
- <string name="muted">Bate-papo de texto desativado por um moderador.</string>
- <string name="muted_error">Um moderador do grupo desabilitou seu bate-papo em texto.</string>
- <string name="add_session_event">Não foi possível adicionar usuários na sessão de bate-papo com [RECIPIENT].</string>
- <string name="message">Não foi possível enviar sua mensagem para o bate-papo com [RECIPIENT].</string>
- <string name="message_session_event">Não foi possível enviar sua mensagem na sessão de bate- papo com [RECIPIENT].</string>
- <string name="mute">Erro durante a moderação.</string>
- <string name="removed">Você foi tirado do grupo.</string>
- <string name="removed_from_group">Você foi removido do grupo.</string>
- <string name="close_on_no_ability">Você não possui mais a habilidade de estar na sessão de bate-papo.</string>
- <string name="unread_chat_single">[SOURCES] disse alguma coisa</string>
- <string name="unread_chat_multiple">[SOURCES] disseram alguma coisa</string>
- <string name="session_initialization_timed_out_error">A inicialização da sessão expirou</string>
- <string name="Home position set.">Posição inicial definida.</string>
- <string name="voice_morphing_url">https://secondlife.com/destination/voice-island</string>
- <string name="premium_voice_morphing_url">https://secondlife.com/destination/voice-morphing-premium</string>
- <string name="paid_you_ldollars">[NAME] lhe pagou L$ [AMOUNT] [REASON].</string>
- <string name="paid_you_ldollars_gift">[NAME] lhe pagou L$ [AMOUNT]: [REASON]</string>
- <string name="paid_you_ldollars_no_reason">[NAME] lhe pagou L$ [AMOUNT]</string>
- <string name="you_paid_ldollars">Você pagou L$[AMOUNT] por [REASON] a [NAME].</string>
- <string name="you_paid_ldollars_gift">Você pagou L$[AMOUNT] a [NAME]: [REASON]</string>
- <string name="you_paid_ldollars_no_info">Você acaba de pagar L$[AMOUNT].</string>
- <string name="you_paid_ldollars_no_reason">Você pagou L$[AMOUNT] a [NAME].</string>
- <string name="you_paid_ldollars_no_name">Você pagou L$[AMOUNT] por [REASON].</string>
- <string name="you_paid_failure_ldollars">Você não pagou L$[AMOUNT] a [NAME] referentes a [REASON].</string>
- <string name="you_paid_failure_ldollars_gift">Você não pagou L$[AMOUNT] a [NAME]: [REASON]</string>
- <string name="you_paid_failure_ldollars_no_info">Você não pagou L$[AMOUNT].</string>
- <string name="you_paid_failure_ldollars_no_reason">Você não pagou L$[AMOUNT] a [NAME].</string>
- <string name="you_paid_failure_ldollars_no_name">Você não pagou L$[AMOUNT] referentes a [REASON].</string>
- <string name="for item">por [ITEM]</string>
- <string name="for a parcel of land">por uma parcela</string>
- <string name="for a land access pass">por um passe de acesso</string>
- <string name="for deeding land">para doar um terreno</string>
- <string name="to create a group">para criar um grupo</string>
- <string name="to join a group">para entrar em um grupo</string>
- <string name="to upload">para carregar</string>
- <string name="to publish a classified ad">para publicar um anúncio</string>
- <string name="giving">Dando L$ [AMOUNT]</string>
- <string name="uploading_costs">O upload custa L$ [AMOUNT]</string>
- <string name="this_costs">Isso custa L$ [AMOUNT]</string>
- <string name="buying_selected_land">Comprando terreno selecionado L$ [AMOUNT]</string>
- <string name="this_object_costs">Esse objeto custa L$ [AMOUNT]</string>
- <string name="group_role_everyone">Todos</string>
- <string name="group_role_officers">Oficiais</string>
- <string name="group_role_owners">Proprietários</string>
- <string name="group_member_status_online">Conectado</string>
- <string name="uploading_abuse_report">Carregando...
+ <string name="facebook_post_success">
+ Você publicou no Facebook.
+ </string>
+ <string name="flickr_post_success">
+ Você publicou no Flickr.
+ </string>
+ <string name="twitter_post_success">
+ Você publicou no Twitter.
+ </string>
+ <string name="no_session_message">
+ (Sessão de MI inexistente)
+ </string>
+ <string name="only_user_message">
+ Você é o único usuário desta sessão.
+ </string>
+ <string name="offline_message">
+ [NAME] está offline.
+ </string>
+ <string name="invite_message">
+ Clique no botão [BUTTON NAME] para aceitar/ conectar a este bate-papo em voz.
+ </string>
+ <string name="muted_message">
+ Você bloqueou este residente. Se quiser retirar o bloqueio, basta enviar uma mensagem.
+ </string>
+ <string name="generic">
+ Erro de solicitação, tente novamente mais tarde.
+ </string>
+ <string name="generic_request_error">
+ Erro na requisição, por favor, tente novamente.
+ </string>
+ <string name="insufficient_perms_error">
+ Você não tem permissões suficientes.
+ </string>
+ <string name="session_does_not_exist_error">
+ A sessão deixou de existir
+ </string>
+ <string name="no_ability_error">
+ Você não possui esta habilidade.
+ </string>
+ <string name="no_ability">
+ Você não possui esta habilidade.
+ </string>
+ <string name="not_a_mod_error">
+ Você não é um moderador de sessão.
+ </string>
+ <string name="muted">
+ Bate-papo de texto desativado por um moderador.
+ </string>
+ <string name="muted_error">
+ Um moderador do grupo desabilitou seu bate-papo em texto.
+ </string>
+ <string name="add_session_event">
+ Não foi possível adicionar usuários na sessão de bate-papo com [RECIPIENT].
+ </string>
+ <string name="message">
+ Não foi possível enviar sua mensagem para o bate-papo com [RECIPIENT].
+ </string>
+ <string name="message_session_event">
+ Não foi possível enviar sua mensagem na sessão de bate- papo com [RECIPIENT].
+ </string>
+ <string name="mute">
+ Erro durante a moderação.
+ </string>
+ <string name="removed">
+ Você foi tirado do grupo.
+ </string>
+ <string name="removed_from_group">
+ Você foi removido do grupo.
+ </string>
+ <string name="close_on_no_ability">
+ Você não possui mais a habilidade de estar na sessão de bate-papo.
+ </string>
+ <string name="unread_chat_single">
+ [SOURCES] disse alguma coisa
+ </string>
+ <string name="unread_chat_multiple">
+ [SOURCES] disseram alguma coisa
+ </string>
+ <string name="session_initialization_timed_out_error">
+ A inicialização da sessão expirou
+ </string>
+ <string name="Home position set.">
+ Posição inicial definida.
+ </string>
+ <string name="voice_morphing_url">
+ https://secondlife.com/destination/voice-island
+ </string>
+ <string name="premium_voice_morphing_url">
+ https://secondlife.com/destination/voice-morphing-premium
+ </string>
+ <string name="paid_you_ldollars">
+ [NAME] lhe pagou L$ [AMOUNT] [REASON].
+ </string>
+ <string name="paid_you_ldollars_gift">
+ [NAME] lhe pagou L$ [AMOUNT]: [REASON]
+ </string>
+ <string name="paid_you_ldollars_no_reason">
+ [NAME] lhe pagou L$ [AMOUNT]
+ </string>
+ <string name="you_paid_ldollars">
+ Você pagou L$[AMOUNT] por [REASON] a [NAME].
+ </string>
+ <string name="you_paid_ldollars_gift">
+ Você pagou L$[AMOUNT] a [NAME]: [REASON]
+ </string>
+ <string name="you_paid_ldollars_no_info">
+ Você acaba de pagar L$[AMOUNT].
+ </string>
+ <string name="you_paid_ldollars_no_reason">
+ Você pagou L$[AMOUNT] a [NAME].
+ </string>
+ <string name="you_paid_ldollars_no_name">
+ Você pagou L$[AMOUNT] por [REASON].
+ </string>
+ <string name="you_paid_failure_ldollars">
+ Você não pagou L$[AMOUNT] a [NAME] referentes a [REASON].
+ </string>
+ <string name="you_paid_failure_ldollars_gift">
+ Você não pagou L$[AMOUNT] a [NAME]: [REASON]
+ </string>
+ <string name="you_paid_failure_ldollars_no_info">
+ Você não pagou L$[AMOUNT].
+ </string>
+ <string name="you_paid_failure_ldollars_no_reason">
+ Você não pagou L$[AMOUNT] a [NAME].
+ </string>
+ <string name="you_paid_failure_ldollars_no_name">
+ Você não pagou L$[AMOUNT] referentes a [REASON].
+ </string>
+ <string name="for item">
+ por [ITEM]
+ </string>
+ <string name="for a parcel of land">
+ por uma parcela
+ </string>
+ <string name="for a land access pass">
+ por um passe de acesso
+ </string>
+ <string name="for deeding land">
+ para doar um terreno
+ </string>
+ <string name="to create a group">
+ para criar um grupo
+ </string>
+ <string name="to join a group">
+ para entrar em um grupo
+ </string>
+ <string name="to upload">
+ para carregar
+ </string>
+ <string name="to publish a classified ad">
+ para publicar um anúncio
+ </string>
+ <string name="giving">
+ Dando L$ [AMOUNT]
+ </string>
+ <string name="uploading_costs">
+ O upload custa L$ [AMOUNT]
+ </string>
+ <string name="this_costs">
+ Isso custa L$ [AMOUNT]
+ </string>
+ <string name="buying_selected_land">
+ Comprando terreno selecionado L$ [AMOUNT]
+ </string>
+ <string name="this_object_costs">
+ Esse objeto custa L$ [AMOUNT]
+ </string>
+ <string name="group_role_everyone">
+ Todos
+ </string>
+ <string name="group_role_officers">
+ Oficiais
+ </string>
+ <string name="group_role_owners">
+ Proprietários
+ </string>
+ <string name="group_member_status_online">
+ Conectado
+ </string>
+ <string name="uploading_abuse_report">
+ Carregando...
-Denunciar abuso</string>
- <string name="New Shape">Nova forma</string>
- <string name="New Skin">Nova pele</string>
- <string name="New Hair">Novo cabelo</string>
- <string name="New Eyes">Novos olhos</string>
- <string name="New Shirt">Nova camisa</string>
- <string name="New Pants">Novas calças</string>
- <string name="New Shoes">Novos sapatos</string>
- <string name="New Socks">Novas meias</string>
- <string name="New Jacket">Nova blusa</string>
- <string name="New Gloves">Novas luvas</string>
- <string name="New Undershirt">Nova camiseta</string>
- <string name="New Underpants">Novas roupa de baixo</string>
- <string name="New Skirt">Nova saia</string>
- <string name="New Alpha">Novo alpha</string>
- <string name="New Tattoo">Nova tatuagem</string>
- <string name="New Universal">Novo universal</string>
- <string name="New Physics">Novo físico</string>
- <string name="Invalid Wearable">Item inválido</string>
- <string name="New Gesture">Novo gesto</string>
- <string name="New Script">Novo script</string>
- <string name="New Note">Nova nota</string>
- <string name="New Folder">Nova pasta</string>
- <string name="Contents">Conteúdo</string>
- <string name="Gesture">Gesto</string>
- <string name="Male Gestures">Gestos masculinos</string>
- <string name="Female Gestures">Gestos femininos</string>
- <string name="Other Gestures">Outros gestos</string>
- <string name="Speech Gestures">Gestos da fala</string>
- <string name="Common Gestures">Gestos comuns</string>
- <string name="Male - Excuse me">Perdão - masculino</string>
- <string name="Male - Get lost">Deixe-me em paz - masculino</string>
- <string name="Male - Blow kiss">Mandar beijo - masculino</string>
- <string name="Male - Boo">Vaia - masculino</string>
- <string name="Male - Bored">Maçante - masculino</string>
- <string name="Male - Hey">Ôpa! - masculino</string>
- <string name="Male - Laugh">Risada - masculino</string>
- <string name="Male - Repulsed">Quero distância! - masculino</string>
- <string name="Male - Shrug">Encolher de ombros - masculino</string>
- <string name="Male - Stick tougue out">Mostrar a língua - masculino</string>
- <string name="Male - Wow">Wow - masculino</string>
- <string name="Female - Chuckle">Engraçado - Feminino</string>
- <string name="Female - Cry">Chorar - Feminino</string>
- <string name="Female - Embarrassed">Com vergonha - Feminino</string>
- <string name="Female - Excuse me">Perdão - fem</string>
- <string name="Female - Get lost">Deixe-me em paz - feminino</string>
- <string name="Female - Blow kiss">Mandar beijo - fem</string>
- <string name="Female - Boo">Vaia - fem</string>
- <string name="Female - Bored">Maçante - feminino</string>
- <string name="Female - Hey">Ôpa - feminino</string>
- <string name="Female - Hey baby">E aí, beliza? - Feminino</string>
- <string name="Female - Laugh">Risada - feminina</string>
- <string name="Female - Looking good">Que chique - Feminino</string>
- <string name="Female - Over here">Acenar - Feminino</string>
- <string name="Female - Please">Por favor - Feminino</string>
- <string name="Female - Repulsed">Quero distância! - feminino</string>
- <string name="Female - Shrug">Encolher ombros - feminino</string>
- <string name="Female - Stick tougue out">Mostrar a língua - feminino</string>
- <string name="Female - Wow">Wow - feminino</string>
- <string name="New Daycycle">Novo ciclo de dias</string>
- <string name="New Water">Nova água</string>
- <string name="New Sky">Novo céu</string>
- <string name="/bow">/reverência</string>
- <string name="/clap">/palmas</string>
- <string name="/count">/contar</string>
- <string name="/extinguish">/apagar</string>
- <string name="/kmb">/dane_se</string>
- <string name="/muscle">/músculos</string>
- <string name="/no">/não</string>
- <string name="/no!">/não!</string>
- <string name="/paper">/papel</string>
- <string name="/pointme">/apontar_eu</string>
- <string name="/pointyou">/apontar_você</string>
- <string name="/rock">/pedra</string>
- <string name="/scissor">/tesoura</string>
- <string name="/smoke">/fumar</string>
- <string name="/stretch">/alongar</string>
- <string name="/whistle">/assobiar</string>
- <string name="/yes">/sim</string>
- <string name="/yes!">/sim!</string>
- <string name="afk">ldt</string>
- <string name="dance1">dança1</string>
- <string name="dance2">dança2</string>
- <string name="dance3">dança3</string>
- <string name="dance4">dança4</string>
- <string name="dance5">dança5</string>
- <string name="dance6">dança6</string>
- <string name="dance7">dança7</string>
- <string name="dance8">dança8</string>
- <string name="AvatarBirthDateFormat">[mthnum,datetime,slt]/[day,datetime,slt]/[year,datetime,slt]</string>
- <string name="DefaultMimeType">nenhum/nehum</string>
- <string name="texture_load_dimensions_error">A imagem excede o limite [WIDTH]*[HEIGHT]</string>
- <string name="outfit_photo_load_dimensions_error">O tamanho máx. do look é [WIDTH]*[HEIGHT]. Redimensione ou use outra imagem</string>
- <string name="outfit_photo_select_dimensions_error">O tamanho máx. do look é [WIDTH]*[HEIGHT]. Selecione outra textura</string>
- <string name="outfit_photo_verify_dimensions_error">Não foi possível confirmar as dimensões da foto. Aguarde até que o tamanho da foto seja exibido no seletor</string>
+Denunciar abuso
+ </string>
+ <string name="New Shape">
+ Nova forma
+ </string>
+ <string name="New Skin">
+ Nova pele
+ </string>
+ <string name="New Hair">
+ Novo cabelo
+ </string>
+ <string name="New Eyes">
+ Novos olhos
+ </string>
+ <string name="New Shirt">
+ Nova camisa
+ </string>
+ <string name="New Pants">
+ Novas calças
+ </string>
+ <string name="New Shoes">
+ Novos sapatos
+ </string>
+ <string name="New Socks">
+ Novas meias
+ </string>
+ <string name="New Jacket">
+ Nova blusa
+ </string>
+ <string name="New Gloves">
+ Novas luvas
+ </string>
+ <string name="New Undershirt">
+ Nova camiseta
+ </string>
+ <string name="New Underpants">
+ Novas roupa de baixo
+ </string>
+ <string name="New Skirt">
+ Nova saia
+ </string>
+ <string name="New Alpha">
+ Novo alpha
+ </string>
+ <string name="New Tattoo">
+ Nova tatuagem
+ </string>
+ <string name="New Universal">
+ Novo universal
+ </string>
+ <string name="New Physics">
+ Novo físico
+ </string>
+ <string name="Invalid Wearable">
+ Item inválido
+ </string>
+ <string name="New Gesture">
+ Novo gesto
+ </string>
+ <string name="New Script">
+ Novo script
+ </string>
+ <string name="New Note">
+ Nova nota
+ </string>
+ <string name="New Folder">
+ Nova pasta
+ </string>
+ <string name="Contents">
+ Conteúdo
+ </string>
+ <string name="Gesture">
+ Gesto
+ </string>
+ <string name="Male Gestures">
+ Gestos masculinos
+ </string>
+ <string name="Female Gestures">
+ Gestos femininos
+ </string>
+ <string name="Other Gestures">
+ Outros gestos
+ </string>
+ <string name="Speech Gestures">
+ Gestos da fala
+ </string>
+ <string name="Common Gestures">
+ Gestos comuns
+ </string>
+ <string name="Male - Excuse me">
+ Perdão - masculino
+ </string>
+ <string name="Male - Get lost">
+ Deixe-me em paz - masculino
+ </string>
+ <string name="Male - Blow kiss">
+ Mandar beijo - masculino
+ </string>
+ <string name="Male - Boo">
+ Vaia - masculino
+ </string>
+ <string name="Male - Bored">
+ Maçante - masculino
+ </string>
+ <string name="Male - Hey">
+ Ôpa! - masculino
+ </string>
+ <string name="Male - Laugh">
+ Risada - masculino
+ </string>
+ <string name="Male - Repulsed">
+ Quero distância! - masculino
+ </string>
+ <string name="Male - Shrug">
+ Encolher de ombros - masculino
+ </string>
+ <string name="Male - Stick tougue out">
+ Mostrar a língua - masculino
+ </string>
+ <string name="Male - Wow">
+ Wow - masculino
+ </string>
+ <string name="Female - Chuckle">
+ Engraçado - Feminino
+ </string>
+ <string name="Female - Cry">
+ Chorar - Feminino
+ </string>
+ <string name="Female - Embarrassed">
+ Com vergonha - Feminino
+ </string>
+ <string name="Female - Excuse me">
+ Perdão - fem
+ </string>
+ <string name="Female - Get lost">
+ Deixe-me em paz - feminino
+ </string>
+ <string name="Female - Blow kiss">
+ Mandar beijo - fem
+ </string>
+ <string name="Female - Boo">
+ Vaia - fem
+ </string>
+ <string name="Female - Bored">
+ Maçante - feminino
+ </string>
+ <string name="Female - Hey">
+ Ôpa - feminino
+ </string>
+ <string name="Female - Hey baby">
+ E aí, beliza? - Feminino
+ </string>
+ <string name="Female - Laugh">
+ Risada - feminina
+ </string>
+ <string name="Female - Looking good">
+ Que chique - Feminino
+ </string>
+ <string name="Female - Over here">
+ Acenar - Feminino
+ </string>
+ <string name="Female - Please">
+ Por favor - Feminino
+ </string>
+ <string name="Female - Repulsed">
+ Quero distância! - feminino
+ </string>
+ <string name="Female - Shrug">
+ Encolher ombros - feminino
+ </string>
+ <string name="Female - Stick tougue out">
+ Mostrar a língua - feminino
+ </string>
+ <string name="Female - Wow">
+ Wow - feminino
+ </string>
+ <string name="New Daycycle">
+ Novo ciclo de dias
+ </string>
+ <string name="New Water">
+ Nova água
+ </string>
+ <string name="New Sky">
+ Novo céu
+ </string>
+ <string name="/bow">
+ /reverência
+ </string>
+ <string name="/clap">
+ /palmas
+ </string>
+ <string name="/count">
+ /contar
+ </string>
+ <string name="/extinguish">
+ /apagar
+ </string>
+ <string name="/kmb">
+ /dane_se
+ </string>
+ <string name="/muscle">
+ /músculos
+ </string>
+ <string name="/no">
+ /não
+ </string>
+ <string name="/no!">
+ /não!
+ </string>
+ <string name="/paper">
+ /papel
+ </string>
+ <string name="/pointme">
+ /apontar_eu
+ </string>
+ <string name="/pointyou">
+ /apontar_você
+ </string>
+ <string name="/rock">
+ /pedra
+ </string>
+ <string name="/scissor">
+ /tesoura
+ </string>
+ <string name="/smoke">
+ /fumar
+ </string>
+ <string name="/stretch">
+ /alongar
+ </string>
+ <string name="/whistle">
+ /assobiar
+ </string>
+ <string name="/yes">
+ /sim
+ </string>
+ <string name="/yes!">
+ /sim!
+ </string>
+ <string name="afk">
+ ldt
+ </string>
+ <string name="dance1">
+ dança1
+ </string>
+ <string name="dance2">
+ dança2
+ </string>
+ <string name="dance3">
+ dança3
+ </string>
+ <string name="dance4">
+ dança4
+ </string>
+ <string name="dance5">
+ dança5
+ </string>
+ <string name="dance6">
+ dança6
+ </string>
+ <string name="dance7">
+ dança7
+ </string>
+ <string name="dance8">
+ dança8
+ </string>
+ <string name="AvatarBirthDateFormat">
+ [mthnum,datetime,slt]/[day,datetime,slt]/[year,datetime,slt]
+ </string>
+ <string name="DefaultMimeType">
+ nenhum/nehum
+ </string>
+ <string name="texture_load_dimensions_error">
+ A imagem excede o limite [WIDTH]*[HEIGHT]
+ </string>
+ <string name="outfit_photo_load_dimensions_error">
+ O tamanho máx. do look é [WIDTH]*[HEIGHT]. Redimensione ou use outra imagem
+ </string>
+ <string name="outfit_photo_select_dimensions_error">
+ O tamanho máx. do look é [WIDTH]*[HEIGHT]. Selecione outra textura
+ </string>
+ <string name="outfit_photo_verify_dimensions_error">
+ Não foi possível confirmar as dimensões da foto. Aguarde até que o tamanho da foto seja exibido no seletor
+ </string>
<string name="words_separator" value=","/>
- <string name="server_is_down">Aconteceu algo inesperado, apesar de termos tentado impedir isso.
+ <string name="server_is_down">
+ Aconteceu algo inesperado, apesar de termos tentado impedir isso.
Visite http://status.secondlifegrid.net para saber se foi detectado um problema com o serviço.
- Se o problema persistir, cheque a configuração da sua rede e firewall.</string>
- <string name="dateTimeWeekdaysNames">Domingo:Segunda:Terça:Quarta:Quinta:Sexta:Sábado</string>
- <string name="dateTimeWeekdaysShortNames">Dom:Seg:Ter:Qua:Qui:Sex:Sab</string>
- <string name="dateTimeMonthNames">Janeiro:Fevereiro:Março:Abril:Maio:Junho:Julho:Agosto:Setembro:Outubro:Novembro:Dezembro</string>
- <string name="dateTimeMonthShortNames">Jan:Fev:Mar:Abr:Maio:Jun:Jul:Ago:Set:Out:Nov:Dez</string>
- <string name="dateTimeDayFormat">[MDAY]</string>
- <string name="dateTimeAM">AM</string>
- <string name="dateTimePM">PM</string>
- <string name="LocalEstimateUSD">US$ [AMOUNT]</string>
- <string name="Group Ban">Banimento do grupo</string>
- <string name="Membership">Plano</string>
- <string name="Roles">Cargos</string>
- <string name="Group Identity">Identidade do lote</string>
- <string name="Parcel Management">Gestão do lote</string>
- <string name="Parcel Identity">ID do lote</string>
- <string name="Parcel Settings">Configurações do lote</string>
- <string name="Parcel Powers">Poderes do lote</string>
- <string name="Parcel Access">Acesso ao lote</string>
- <string name="Parcel Content">Conteúdo do lote</string>
- <string name="Object Management">Gestão de objetos</string>
- <string name="Accounting">Contabilidade</string>
- <string name="Notices">Avisos</string>
- <string name="Chat" value="Bate papo">Bate-papo</string>
- <string name="BaseMembership">Base</string>
- <string name="DeleteItems">Excluir itens selecionados?</string>
- <string name="DeleteItem">Excluir item selecionado?</string>
- <string name="EmptyOutfitText">Este look não possui nenhuma peça</string>
- <string name="ExternalEditorNotSet">Selecione um editor utilizando a configuração ExternalEditor.</string>
- <string name="ExternalEditorNotFound">O editor externo especificado não foi localizado.
+ Se o problema persistir, cheque a configuração da sua rede e firewall.
+ </string>
+ <string name="dateTimeWeekdaysNames">
+ Domingo:Segunda:Terça:Quarta:Quinta:Sexta:Sábado
+ </string>
+ <string name="dateTimeWeekdaysShortNames">
+ Dom:Seg:Ter:Qua:Qui:Sex:Sab
+ </string>
+ <string name="dateTimeMonthNames">
+ Janeiro:Fevereiro:Março:Abril:Maio:Junho:Julho:Agosto:Setembro:Outubro:Novembro:Dezembro
+ </string>
+ <string name="dateTimeMonthShortNames">
+ Jan:Fev:Mar:Abr:Maio:Jun:Jul:Ago:Set:Out:Nov:Dez
+ </string>
+ <string name="dateTimeDayFormat">
+ [MDAY]
+ </string>
+ <string name="dateTimeAM">
+ AM
+ </string>
+ <string name="dateTimePM">
+ PM
+ </string>
+ <string name="LocalEstimateUSD">
+ US$ [AMOUNT]
+ </string>
+ <string name="Group Ban">
+ Banimento do grupo
+ </string>
+ <string name="Membership">
+ Plano
+ </string>
+ <string name="Roles">
+ Cargos
+ </string>
+ <string name="Group Identity">
+ Identidade do lote
+ </string>
+ <string name="Parcel Management">
+ Gestão do lote
+ </string>
+ <string name="Parcel Identity">
+ ID do lote
+ </string>
+ <string name="Parcel Settings">
+ Configurações do lote
+ </string>
+ <string name="Parcel Powers">
+ Poderes do lote
+ </string>
+ <string name="Parcel Access">
+ Acesso ao lote
+ </string>
+ <string name="Parcel Content">
+ Conteúdo do lote
+ </string>
+ <string name="Object Management">
+ Gestão de objetos
+ </string>
+ <string name="Accounting">
+ Contabilidade
+ </string>
+ <string name="Notices">
+ Avisos
+ </string>
+ <string name="Chat" value="Bate papo">
+ Bate-papo
+ </string>
+ <string name="BaseMembership">
+ Base
+ </string>
+ <string name="DeleteItems">
+ Excluir itens selecionados?
+ </string>
+ <string name="DeleteItem">
+ Excluir item selecionado?
+ </string>
+ <string name="EmptyOutfitText">
+ Este look não possui nenhuma peça
+ </string>
+ <string name="ExternalEditorNotSet">
+ Selecione um editor utilizando a configuração ExternalEditor.
+ </string>
+ <string name="ExternalEditorNotFound">
+ O editor externo especificado não foi localizado.
Tente colocar o caminho do editor entre aspas.
-(ex. &quot;/caminho para/editor&quot; &quot;%s&quot;)</string>
- <string name="ExternalEditorCommandParseError">Error ao analisar o comando do editor externo.</string>
- <string name="ExternalEditorFailedToRun">Falha de execução do editor externo.</string>
- <string name="TranslationFailed">Falha na tradução: [REASON]</string>
- <string name="TranslationResponseParseError">Erro ao analisar resposta de tradução.</string>
- <string name="Esc">Esc</string>
- <string name="Space">Space</string>
- <string name="Enter">Enter</string>
- <string name="Tab">Tab</string>
- <string name="Ins">Ins</string>
- <string name="Del">Del</string>
- <string name="Backsp">Backsp</string>
- <string name="Shift">Shift</string>
- <string name="Ctrl">Ctrl</string>
- <string name="Alt">Alt</string>
- <string name="CapsLock">CapsLock</string>
- <string name="Home">Início</string>
- <string name="End">End</string>
- <string name="PgUp">PgUp</string>
- <string name="PgDn">PgDn</string>
- <string name="F1">F1</string>
- <string name="F2">F2</string>
- <string name="F3">F3</string>
- <string name="F4">F4</string>
- <string name="F5">F5</string>
- <string name="F6">F6</string>
- <string name="F7">F7</string>
- <string name="F8">F8</string>
- <string name="F9">F9</string>
- <string name="F10">F10</string>
- <string name="F11">F11</string>
- <string name="F12">F12</string>
- <string name="Add">Adicionar</string>
- <string name="Subtract">Subtrair</string>
- <string name="Multiply">Multiplicar</string>
- <string name="Divide">Dividir</string>
- <string name="PAD_DIVIDE">PAD_DIVIDE</string>
- <string name="PAD_LEFT">PAD_LEFT</string>
- <string name="PAD_RIGHT">PAD_RIGHT</string>
- <string name="PAD_DOWN">PAD_DOWN</string>
- <string name="PAD_UP">PAD_UP</string>
- <string name="PAD_HOME">PAD_HOME</string>
- <string name="PAD_END">PAD_END</string>
- <string name="PAD_PGUP">PAD_PGUP</string>
- <string name="PAD_PGDN">PAD_PGDN</string>
- <string name="PAD_CENTER">PAD_CENTER</string>
- <string name="PAD_INS">PAD_INS</string>
- <string name="PAD_DEL">PAD_DEL</string>
- <string name="PAD_Enter">PAD_Enter</string>
- <string name="PAD_BUTTON0">PAD_BUTTON0</string>
- <string name="PAD_BUTTON1">PAD_BUTTON1</string>
- <string name="PAD_BUTTON2">PAD_BUTTON2</string>
- <string name="PAD_BUTTON3">PAD_BUTTON3</string>
- <string name="PAD_BUTTON4">PAD_BUTTON4</string>
- <string name="PAD_BUTTON5">PAD_BUTTON5</string>
- <string name="PAD_BUTTON6">PAD_BUTTON6</string>
- <string name="PAD_BUTTON7">PAD_BUTTON7</string>
- <string name="PAD_BUTTON8">PAD_BUTTON8</string>
- <string name="PAD_BUTTON9">PAD_BUTTON9</string>
- <string name="PAD_BUTTON10">PAD_BUTTON10</string>
- <string name="PAD_BUTTON11">PAD_BUTTON11</string>
- <string name="PAD_BUTTON12">PAD_BUTTON12</string>
- <string name="PAD_BUTTON13">PAD_BUTTON13</string>
- <string name="PAD_BUTTON14">PAD_BUTTON14</string>
- <string name="PAD_BUTTON15">PAD_BUTTON15</string>
- <string name="-">-</string>
- <string name="=">=</string>
- <string name="`">`</string>
- <string name=";">;</string>
- <string name="[">[</string>
- <string name="]">]</string>
- <string name="\">\</string>
- <string name="0">0</string>
- <string name="1">1</string>
- <string name="2">2</string>
- <string name="3">3</string>
- <string name="4">4</string>
- <string name="5">5</string>
- <string name="6">6</string>
- <string name="7">7</string>
- <string name="8">8</string>
- <string name="9">9</string>
- <string name="A">A</string>
- <string name="B">B</string>
- <string name="C">C</string>
- <string name="D">D</string>
- <string name="E">E</string>
- <string name="F">F</string>
- <string name="G">G</string>
- <string name="H">H</string>
- <string name="I">I</string>
- <string name="J">J</string>
- <string name="K">K</string>
- <string name="L">L</string>
- <string name="M">M</string>
- <string name="N">N</string>
- <string name="O">O</string>
- <string name="P">P</string>
- <string name="Q">Q</string>
- <string name="R">R</string>
- <string name="S">S</string>
- <string name="T">T</string>
- <string name="U">U</string>
- <string name="V">V</string>
- <string name="W">W</string>
- <string name="X">X</string>
- <string name="Y">Y</string>
- <string name="Z">Z</string>
- <string name="BeaconParticle">Vendo balizas de partículas (azul)</string>
- <string name="BeaconPhysical">Vendo balizas de objetos físicos (verde)</string>
- <string name="BeaconScripted">Vendo balizas de objetos com script (vermelho)</string>
- <string name="BeaconScriptedTouch">Vendo objeto com script com balizas com funcionalidade de toque (vermelho)</string>
- <string name="BeaconSound">Vendo balizas de som (amarelo)</string>
- <string name="BeaconMedia">Vendo balizas de mídia (branco)</string>
- <string name="BeaconSun">Visualizando farol de direção do sol (alaranjado)</string>
- <string name="BeaconMoon">Visualizando farol de direção da lua (roxo)</string>
- <string name="ParticleHiding">Ocultar partículas</string>
- <string name="Command_AboutLand_Label">Sobre terrenos</string>
- <string name="Command_Appearance_Label">Aparência</string>
- <string name="Command_Avatar_Label">Avatar</string>
- <string name="Command_Build_Label">Construir</string>
- <string name="Command_Chat_Label">Bate-papo</string>
- <string name="Command_Conversations_Label">Conversas</string>
- <string name="Command_Compass_Label">Bússola</string>
- <string name="Command_Destinations_Label">Destinos</string>
- <string name="Command_Environments_Label">Meus ambientes</string>
- <string name="Command_Facebook_Label">Facebook</string>
- <string name="Command_Flickr_Label">Flickr</string>
- <string name="Command_Gestures_Label">Gestos</string>
- <string name="Command_Grid_Status_Label">Status da grade</string>
- <string name="Command_HowTo_Label">Como</string>
- <string name="Command_Inventory_Label">Inventário</string>
- <string name="Command_Map_Label">Mapa</string>
- <string name="Command_Marketplace_Label">Mercado</string>
- <string name="Command_MarketplaceListings_Label">Marketplace</string>
- <string name="Command_MiniMap_Label">Mini Mapa</string>
- <string name="Command_Move_Label">Andar/correr/voar</string>
- <string name="Command_Outbox_Label">Caixa de saída do lojista</string>
- <string name="Command_People_Label">Pessoas</string>
- <string name="Command_Picks_Label">Destaques</string>
- <string name="Command_Places_Label">Lugares</string>
- <string name="Command_Preferences_Label">Preferências</string>
- <string name="Command_Profile_Label">Perfil</string>
- <string name="Command_Report_Abuse_Label">Relatar abuso</string>
- <string name="Command_Search_Label">Buscar</string>
- <string name="Command_Snapshot_Label">Foto</string>
- <string name="Command_Speak_Label">Falar</string>
- <string name="Command_Twitter_Label">Twitter</string>
- <string name="Command_View_Label">Controles da câmera</string>
- <string name="Command_Voice_Label">Configurações de voz</string>
- <string name="Command_AboutLand_Tooltip">Informações sobre o terreno que você está visitando</string>
- <string name="Command_Appearance_Tooltip">Mudar seu avatar</string>
- <string name="Command_Avatar_Tooltip">Escolha um avatar completo</string>
- <string name="Command_Build_Tooltip">Construindo objetos e redimensionando terreno</string>
- <string name="Command_Chat_Tooltip">Bater papo com pessoas próximas usando texto</string>
- <string name="Command_Conversations_Tooltip">Conversar com todos</string>
- <string name="Command_Compass_Tooltip">Bússola</string>
- <string name="Command_Destinations_Tooltip">Destinos de interesse</string>
- <string name="Command_Environments_Tooltip">Meus ambientes</string>
- <string name="Command_Facebook_Tooltip">Publicar no Facebook</string>
- <string name="Command_Flickr_Tooltip">Carregar no Flickr</string>
- <string name="Command_Gestures_Tooltip">Gestos para seu avatar</string>
- <string name="Command_Grid_Status_Tooltip">Mostrar status da grade atual</string>
- <string name="Command_HowTo_Tooltip">Como executar tarefas comuns</string>
- <string name="Command_Inventory_Tooltip">Exibir e usar seus pertences</string>
- <string name="Command_Map_Tooltip">Mapa-múndi</string>
- <string name="Command_Marketplace_Tooltip">Faça compras</string>
- <string name="Command_MarketplaceListings_Tooltip">Venda suas criações</string>
- <string name="Command_MiniMap_Tooltip">Mostrar quem está aqui</string>
- <string name="Command_Move_Tooltip">Movendo seu avatar</string>
- <string name="Command_Outbox_Tooltip">Transferir itens para o seu mercado para venda</string>
- <string name="Command_People_Tooltip">Amigos, grupos e pessoas próximas</string>
- <string name="Command_Picks_Tooltip">Lugares mostrados como favoritos em seu perfil</string>
- <string name="Command_Places_Tooltip">Lugares salvos</string>
- <string name="Command_Preferences_Tooltip">Preferências</string>
- <string name="Command_Profile_Tooltip">Edite ou visualize seu perfil</string>
- <string name="Command_Report_Abuse_Tooltip">Relatar abuso</string>
- <string name="Command_Search_Tooltip">Encontre lugares, eventos, pessoas</string>
- <string name="Command_Snapshot_Tooltip">Tirar uma foto</string>
- <string name="Command_Speak_Tooltip">Fale com pessoas próximas usando seu microfone</string>
- <string name="Command_Twitter_Tooltip">Twitter</string>
- <string name="Command_View_Tooltip">Alterar o ângulo da câmera</string>
- <string name="Command_Voice_Tooltip">Controles de volume das chamadas e pessoas próximas a você no mundo virtual</string>
- <string name="Toolbar_Bottom_Tooltip">atualmente na sua barra de ferramentas inferior</string>
- <string name="Toolbar_Left_Tooltip">atualmente na sua barra de ferramentas esquerda</string>
- <string name="Toolbar_Right_Tooltip">atualmente na sua barra de ferramentas direita</string>
- <string name="Retain%">Reter%</string>
- <string name="Detail">Detalhe</string>
- <string name="Better Detail">Detalhamento maior</string>
- <string name="Surface">Superfície</string>
- <string name="Solid">Sólido</string>
- <string name="Wrap">Conclusão</string>
- <string name="Preview">Visualizar</string>
- <string name="Normal">Normal</string>
- <string name="Pathfinding_Wiki_URL">http://wiki.secondlife.com/wiki/Pathfinding_Tools_in_the_Second_Life_Viewer</string>
- <string name="Pathfinding_Object_Attr_None">Nenhum</string>
- <string name="Pathfinding_Object_Attr_Permanent">Afeta o navmesh</string>
- <string name="Pathfinding_Object_Attr_Character">Personagem</string>
- <string name="Pathfinding_Object_Attr_MultiSelect">(Múltiplo)</string>
- <string name="snapshot_quality_very_low">Muito baixo</string>
- <string name="snapshot_quality_low">Baixo</string>
- <string name="snapshot_quality_medium">Médio</string>
- <string name="snapshot_quality_high">Alto</string>
- <string name="snapshot_quality_very_high">Muito alto</string>
- <string name="TeleportMaturityExceeded">O residente não pode visitar a região.</string>
- <string name="UserDictionary">[Usuário]</string>
- <string name="experience_tools_experience">Experiência</string>
- <string name="ExperienceNameNull">(nenhuma experiência)</string>
- <string name="ExperienceNameUntitled">(experiência sem título)</string>
- <string name="Land-Scope">Dentro do terreno</string>
- <string name="Grid-Scope">Dentro da grade</string>
- <string name="Allowed_Experiences_Tab">PERMITIDO</string>
- <string name="Blocked_Experiences_Tab">BLOQUEADO</string>
- <string name="Contrib_Experiences_Tab">COLABORADOR</string>
- <string name="Admin_Experiences_Tab">ADMINISTRADOR</string>
- <string name="Recent_Experiences_Tab">RECENTE</string>
- <string name="Owned_Experiences_Tab">PRÓPRIAS</string>
- <string name="ExperiencesCounter">([EXPERIENCES], máx. [MAXEXPERIENCES])</string>
- <string name="ExperiencePermission1">assumir seus controles</string>
- <string name="ExperiencePermission3">acionar animações no seu avatar</string>
- <string name="ExperiencePermission4">anexar ao avatar</string>
- <string name="ExperiencePermission9">rastrear sua câmera</string>
- <string name="ExperiencePermission10">controlar sua câmera</string>
- <string name="ExperiencePermission11">teletransportar você</string>
- <string name="ExperiencePermission12">aceitar automaticamente permissões de experiência</string>
- <string name="ExperiencePermission16">forçar o avatar a sentar</string>
- <string name="ExperiencePermission17">alterar sua configurações de ambiente</string>
- <string name="ExperiencePermissionShortUnknown">realizar uma operação desconhecida: [Permission]</string>
- <string name="ExperiencePermissionShort1">Assumir o controle</string>
- <string name="ExperiencePermissionShort3">Acionar animações</string>
- <string name="ExperiencePermissionShort4">Anexar</string>
- <string name="ExperiencePermissionShort9">Rastrear câmera</string>
- <string name="ExperiencePermissionShort10">Controlar câmera</string>
- <string name="ExperiencePermissionShort11">Teletransportar</string>
- <string name="ExperiencePermissionShort12">Autorização</string>
- <string name="ExperiencePermissionShort16">Sentar</string>
- <string name="ExperiencePermissionShort17">Ambiente</string>
- <string name="logging_calls_disabled_log_empty">As conversas não estão sendo registradas. Para começar a manter um registro, selecione &quot;Salvar: apenas registro&quot; ou &quot;Salvar: registro e transcrições&quot; em Preferências&gt; Bate-papo.</string>
- <string name="logging_calls_disabled_log_not_empty">Nenhuma conversa será registrada. Para recomeçar a gravação de registros, selecione &quot;Salvar: apenas registro&quot; ou &quot;Salvar: registro e transcrições&quot; em Preferências&gt; Bate-papo.</string>
- <string name="logging_calls_enabled_log_empty">Não há conversas registradas. Depois que você entrar em contato com alguém, ou alguém entrar em contato com você, um registro será exibido aqui.</string>
- <string name="loading_chat_logs">Carregando...</string>
- <string name="na">n/d</string>
- <string name="preset_combo_label">-Lista vazia-</string>
- <string name="Default">Padrão</string>
- <string name="none_paren_cap">(nenhum)</string>
- <string name="no_limit">Sem limite</string>
- <string name="Mav_Details_MAV_FOUND_DEGENERATE_TRIANGLES">A forma física contém triângulos muito pequenos. Tente simplificar o modelo físico.</string>
- <string name="Mav_Details_MAV_CONFIRMATION_DATA_MISMATCH">A forma física contém dados de confirmação ruins. Tente consertar o modelo físico.</string>
- <string name="Mav_Details_MAV_UNKNOWN_VERSION">A forma física não tem a versão correta. Defina a versão correta para o modelo físico.</string>
- <string name="couldnt_resolve_host">O DNS não pode resolver o nome do host([HOSTNAME]).
+(ex. "/caminho para/editor" "%s")
+ </string>
+ <string name="ExternalEditorCommandParseError">
+ Error ao analisar o comando do editor externo.
+ </string>
+ <string name="ExternalEditorFailedToRun">
+ Falha de execução do editor externo.
+ </string>
+ <string name="TranslationFailed">
+ Falha na tradução: [REASON]
+ </string>
+ <string name="TranslationResponseParseError">
+ Erro ao analisar resposta de tradução.
+ </string>
+ <string name="Esc">
+ Esc
+ </string>
+ <string name="Space">
+ Space
+ </string>
+ <string name="Enter">
+ Enter
+ </string>
+ <string name="Tab">
+ Tab
+ </string>
+ <string name="Ins">
+ Ins
+ </string>
+ <string name="Del">
+ Del
+ </string>
+ <string name="Backsp">
+ Backsp
+ </string>
+ <string name="Shift">
+ Shift
+ </string>
+ <string name="Ctrl">
+ Ctrl
+ </string>
+ <string name="Alt">
+ Alt
+ </string>
+ <string name="CapsLock">
+ CapsLock
+ </string>
+ <string name="Home">
+ Início
+ </string>
+ <string name="End">
+ End
+ </string>
+ <string name="PgUp">
+ PgUp
+ </string>
+ <string name="PgDn">
+ PgDn
+ </string>
+ <string name="F1">
+ F1
+ </string>
+ <string name="F2">
+ F2
+ </string>
+ <string name="F3">
+ F3
+ </string>
+ <string name="F4">
+ F4
+ </string>
+ <string name="F5">
+ F5
+ </string>
+ <string name="F6">
+ F6
+ </string>
+ <string name="F7">
+ F7
+ </string>
+ <string name="F8">
+ F8
+ </string>
+ <string name="F9">
+ F9
+ </string>
+ <string name="F10">
+ F10
+ </string>
+ <string name="F11">
+ F11
+ </string>
+ <string name="F12">
+ F12
+ </string>
+ <string name="Add">
+ Adicionar
+ </string>
+ <string name="Subtract">
+ Subtrair
+ </string>
+ <string name="Multiply">
+ Multiplicar
+ </string>
+ <string name="Divide">
+ Dividir
+ </string>
+ <string name="PAD_DIVIDE">
+ PAD_DIVIDE
+ </string>
+ <string name="PAD_LEFT">
+ PAD_LEFT
+ </string>
+ <string name="PAD_RIGHT">
+ PAD_RIGHT
+ </string>
+ <string name="PAD_DOWN">
+ PAD_DOWN
+ </string>
+ <string name="PAD_UP">
+ PAD_UP
+ </string>
+ <string name="PAD_HOME">
+ PAD_HOME
+ </string>
+ <string name="PAD_END">
+ PAD_END
+ </string>
+ <string name="PAD_PGUP">
+ PAD_PGUP
+ </string>
+ <string name="PAD_PGDN">
+ PAD_PGDN
+ </string>
+ <string name="PAD_CENTER">
+ PAD_CENTER
+ </string>
+ <string name="PAD_INS">
+ PAD_INS
+ </string>
+ <string name="PAD_DEL">
+ PAD_DEL
+ </string>
+ <string name="PAD_Enter">
+ PAD_Enter
+ </string>
+ <string name="PAD_BUTTON0">
+ PAD_BUTTON0
+ </string>
+ <string name="PAD_BUTTON1">
+ PAD_BUTTON1
+ </string>
+ <string name="PAD_BUTTON2">
+ PAD_BUTTON2
+ </string>
+ <string name="PAD_BUTTON3">
+ PAD_BUTTON3
+ </string>
+ <string name="PAD_BUTTON4">
+ PAD_BUTTON4
+ </string>
+ <string name="PAD_BUTTON5">
+ PAD_BUTTON5
+ </string>
+ <string name="PAD_BUTTON6">
+ PAD_BUTTON6
+ </string>
+ <string name="PAD_BUTTON7">
+ PAD_BUTTON7
+ </string>
+ <string name="PAD_BUTTON8">
+ PAD_BUTTON8
+ </string>
+ <string name="PAD_BUTTON9">
+ PAD_BUTTON9
+ </string>
+ <string name="PAD_BUTTON10">
+ PAD_BUTTON10
+ </string>
+ <string name="PAD_BUTTON11">
+ PAD_BUTTON11
+ </string>
+ <string name="PAD_BUTTON12">
+ PAD_BUTTON12
+ </string>
+ <string name="PAD_BUTTON13">
+ PAD_BUTTON13
+ </string>
+ <string name="PAD_BUTTON14">
+ PAD_BUTTON14
+ </string>
+ <string name="PAD_BUTTON15">
+ PAD_BUTTON15
+ </string>
+ <string name="-">
+ -
+ </string>
+ <string name="=">
+ =
+ </string>
+ <string name="`">
+ `
+ </string>
+ <string name=";">
+ ;
+ </string>
+ <string name="[">
+ [
+ </string>
+ <string name="]">
+ ]
+ </string>
+ <string name="\">
+ \
+ </string>
+ <string name="0">
+ 0
+ </string>
+ <string name="1">
+ 1
+ </string>
+ <string name="2">
+ 2
+ </string>
+ <string name="3">
+ 3
+ </string>
+ <string name="4">
+ 4
+ </string>
+ <string name="5">
+ 5
+ </string>
+ <string name="6">
+ 6
+ </string>
+ <string name="7">
+ 7
+ </string>
+ <string name="8">
+ 8
+ </string>
+ <string name="9">
+ 9
+ </string>
+ <string name="A">
+ A
+ </string>
+ <string name="B">
+ B
+ </string>
+ <string name="C">
+ C
+ </string>
+ <string name="D">
+ D
+ </string>
+ <string name="E">
+ E
+ </string>
+ <string name="F">
+ F
+ </string>
+ <string name="G">
+ G
+ </string>
+ <string name="H">
+ H
+ </string>
+ <string name="I">
+ I
+ </string>
+ <string name="J">
+ J
+ </string>
+ <string name="K">
+ K
+ </string>
+ <string name="L">
+ L
+ </string>
+ <string name="M">
+ M
+ </string>
+ <string name="N">
+ N
+ </string>
+ <string name="O">
+ O
+ </string>
+ <string name="P">
+ P
+ </string>
+ <string name="Q">
+ Q
+ </string>
+ <string name="R">
+ R
+ </string>
+ <string name="S">
+ S
+ </string>
+ <string name="T">
+ T
+ </string>
+ <string name="U">
+ U
+ </string>
+ <string name="V">
+ V
+ </string>
+ <string name="W">
+ W
+ </string>
+ <string name="X">
+ X
+ </string>
+ <string name="Y">
+ Y
+ </string>
+ <string name="Z">
+ Z
+ </string>
+ <string name="BeaconParticle">
+ Vendo balizas de partículas (azul)
+ </string>
+ <string name="BeaconPhysical">
+ Vendo balizas de objetos físicos (verde)
+ </string>
+ <string name="BeaconScripted">
+ Vendo balizas de objetos com script (vermelho)
+ </string>
+ <string name="BeaconScriptedTouch">
+ Vendo objeto com script com balizas com funcionalidade de toque (vermelho)
+ </string>
+ <string name="BeaconSound">
+ Vendo balizas de som (amarelo)
+ </string>
+ <string name="BeaconMedia">
+ Vendo balizas de mídia (branco)
+ </string>
+ <string name="BeaconSun">
+ Visualizando farol de direção do sol (alaranjado)
+ </string>
+ <string name="BeaconMoon">
+ Visualizando farol de direção da lua (roxo)
+ </string>
+ <string name="ParticleHiding">
+ Ocultar partículas
+ </string>
+ <string name="Command_AboutLand_Label">
+ Sobre terrenos
+ </string>
+ <string name="Command_Appearance_Label">
+ Aparência
+ </string>
+ <string name="Command_Avatar_Label">
+ Avatar
+ </string>
+ <string name="Command_Build_Label">
+ Construir
+ </string>
+ <string name="Command_Chat_Label">
+ Bate-papo
+ </string>
+ <string name="Command_Conversations_Label">
+ Conversas
+ </string>
+ <string name="Command_Compass_Label">
+ Bússola
+ </string>
+ <string name="Command_Destinations_Label">
+ Destinos
+ </string>
+ <string name="Command_Environments_Label">
+ Meus ambientes
+ </string>
+ <string name="Command_Facebook_Label">
+ Facebook
+ </string>
+ <string name="Command_Flickr_Label">
+ Flickr
+ </string>
+ <string name="Command_Gestures_Label">
+ Gestos
+ </string>
+ <string name="Command_Grid_Status_Label">
+ Status da grade
+ </string>
+ <string name="Command_HowTo_Label">
+ Como
+ </string>
+ <string name="Command_Inventory_Label">
+ Inventário
+ </string>
+ <string name="Command_Map_Label">
+ Mapa
+ </string>
+ <string name="Command_Marketplace_Label">
+ Mercado
+ </string>
+ <string name="Command_MarketplaceListings_Label">
+ Marketplace
+ </string>
+ <string name="Command_MiniMap_Label">
+ Mini Mapa
+ </string>
+ <string name="Command_Move_Label">
+ Andar/correr/voar
+ </string>
+ <string name="Command_Outbox_Label">
+ Caixa de saída do lojista
+ </string>
+ <string name="Command_People_Label">
+ Pessoas
+ </string>
+ <string name="Command_Picks_Label">
+ Destaques
+ </string>
+ <string name="Command_Places_Label">
+ Lugares
+ </string>
+ <string name="Command_Preferences_Label">
+ Preferências
+ </string>
+ <string name="Command_Profile_Label">
+ Perfil
+ </string>
+ <string name="Command_Report_Abuse_Label">
+ Relatar abuso
+ </string>
+ <string name="Command_Search_Label">
+ Buscar
+ </string>
+ <string name="Command_Snapshot_Label">
+ Foto
+ </string>
+ <string name="Command_Speak_Label">
+ Falar
+ </string>
+ <string name="Command_Twitter_Label">
+ Twitter
+ </string>
+ <string name="Command_View_Label">
+ Controles da câmera
+ </string>
+ <string name="Command_Voice_Label">
+ Configurações de voz
+ </string>
+ <string name="Command_AboutLand_Tooltip">
+ Informações sobre o terreno que você está visitando
+ </string>
+ <string name="Command_Appearance_Tooltip">
+ Mudar seu avatar
+ </string>
+ <string name="Command_Avatar_Tooltip">
+ Escolha um avatar completo
+ </string>
+ <string name="Command_Build_Tooltip">
+ Construindo objetos e redimensionando terreno
+ </string>
+ <string name="Command_Chat_Tooltip">
+ Bater papo com pessoas próximas usando texto
+ </string>
+ <string name="Command_Conversations_Tooltip">
+ Conversar com todos
+ </string>
+ <string name="Command_Compass_Tooltip">
+ Bússola
+ </string>
+ <string name="Command_Destinations_Tooltip">
+ Destinos de interesse
+ </string>
+ <string name="Command_Environments_Tooltip">
+ Meus ambientes
+ </string>
+ <string name="Command_Facebook_Tooltip">
+ Publicar no Facebook
+ </string>
+ <string name="Command_Flickr_Tooltip">
+ Carregar no Flickr
+ </string>
+ <string name="Command_Gestures_Tooltip">
+ Gestos para seu avatar
+ </string>
+ <string name="Command_Grid_Status_Tooltip">
+ Mostrar status da grade atual
+ </string>
+ <string name="Command_HowTo_Tooltip">
+ Como executar tarefas comuns
+ </string>
+ <string name="Command_Inventory_Tooltip">
+ Exibir e usar seus pertences
+ </string>
+ <string name="Command_Map_Tooltip">
+ Mapa-múndi
+ </string>
+ <string name="Command_Marketplace_Tooltip">
+ Faça compras
+ </string>
+ <string name="Command_MarketplaceListings_Tooltip">
+ Venda suas criações
+ </string>
+ <string name="Command_MiniMap_Tooltip">
+ Mostrar quem está aqui
+ </string>
+ <string name="Command_Move_Tooltip">
+ Movendo seu avatar
+ </string>
+ <string name="Command_Outbox_Tooltip">
+ Transferir itens para o seu mercado para venda
+ </string>
+ <string name="Command_People_Tooltip">
+ Amigos, grupos e pessoas próximas
+ </string>
+ <string name="Command_Picks_Tooltip">
+ Lugares mostrados como favoritos em seu perfil
+ </string>
+ <string name="Command_Places_Tooltip">
+ Lugares salvos
+ </string>
+ <string name="Command_Preferences_Tooltip">
+ Preferências
+ </string>
+ <string name="Command_Profile_Tooltip">
+ Edite ou visualize seu perfil
+ </string>
+ <string name="Command_Report_Abuse_Tooltip">
+ Relatar abuso
+ </string>
+ <string name="Command_Search_Tooltip">
+ Encontre lugares, eventos, pessoas
+ </string>
+ <string name="Command_Snapshot_Tooltip">
+ Tirar uma foto
+ </string>
+ <string name="Command_Speak_Tooltip">
+ Fale com pessoas próximas usando seu microfone
+ </string>
+ <string name="Command_Twitter_Tooltip">
+ Twitter
+ </string>
+ <string name="Command_View_Tooltip">
+ Alterar o ângulo da câmera
+ </string>
+ <string name="Command_Voice_Tooltip">
+ Controles de volume das chamadas e pessoas próximas a você no mundo virtual
+ </string>
+ <string name="Toolbar_Bottom_Tooltip">
+ atualmente na sua barra de ferramentas inferior
+ </string>
+ <string name="Toolbar_Left_Tooltip">
+ atualmente na sua barra de ferramentas esquerda
+ </string>
+ <string name="Toolbar_Right_Tooltip">
+ atualmente na sua barra de ferramentas direita
+ </string>
+ <string name="Retain%">
+ Reter%
+ </string>
+ <string name="Detail">
+ Detalhe
+ </string>
+ <string name="Better Detail">
+ Detalhamento maior
+ </string>
+ <string name="Surface">
+ Superfície
+ </string>
+ <string name="Solid">
+ Sólido
+ </string>
+ <string name="Wrap">
+ Conclusão
+ </string>
+ <string name="Preview">
+ Visualizar
+ </string>
+ <string name="Normal">
+ Normal
+ </string>
+ <string name="Pathfinding_Wiki_URL">
+ http://wiki.secondlife.com/wiki/Pathfinding_Tools_in_the_Second_Life_Viewer
+ </string>
+ <string name="Pathfinding_Object_Attr_None">
+ Nenhum
+ </string>
+ <string name="Pathfinding_Object_Attr_Permanent">
+ Afeta o navmesh
+ </string>
+ <string name="Pathfinding_Object_Attr_Character">
+ Personagem
+ </string>
+ <string name="Pathfinding_Object_Attr_MultiSelect">
+ (Múltiplo)
+ </string>
+ <string name="snapshot_quality_very_low">
+ Muito baixo
+ </string>
+ <string name="snapshot_quality_low">
+ Baixo
+ </string>
+ <string name="snapshot_quality_medium">
+ Médio
+ </string>
+ <string name="snapshot_quality_high">
+ Alto
+ </string>
+ <string name="snapshot_quality_very_high">
+ Muito alto
+ </string>
+ <string name="TeleportMaturityExceeded">
+ O residente não pode visitar a região.
+ </string>
+ <string name="UserDictionary">
+ [Usuário]
+ </string>
+ <string name="experience_tools_experience">
+ Experiência
+ </string>
+ <string name="ExperienceNameNull">
+ (nenhuma experiência)
+ </string>
+ <string name="ExperienceNameUntitled">
+ (experiência sem título)
+ </string>
+ <string name="Land-Scope">
+ Dentro do terreno
+ </string>
+ <string name="Grid-Scope">
+ Dentro da grade
+ </string>
+ <string name="Allowed_Experiences_Tab">
+ PERMITIDO
+ </string>
+ <string name="Blocked_Experiences_Tab">
+ BLOQUEADO
+ </string>
+ <string name="Contrib_Experiences_Tab">
+ COLABORADOR
+ </string>
+ <string name="Admin_Experiences_Tab">
+ ADMINISTRADOR
+ </string>
+ <string name="Recent_Experiences_Tab">
+ RECENTE
+ </string>
+ <string name="Owned_Experiences_Tab">
+ PRÓPRIAS
+ </string>
+ <string name="ExperiencesCounter">
+ ([EXPERIENCES], máx. [MAXEXPERIENCES])
+ </string>
+ <string name="ExperiencePermission1">
+ assumir seus controles
+ </string>
+ <string name="ExperiencePermission3">
+ acionar animações no seu avatar
+ </string>
+ <string name="ExperiencePermission4">
+ anexar ao avatar
+ </string>
+ <string name="ExperiencePermission9">
+ rastrear sua câmera
+ </string>
+ <string name="ExperiencePermission10">
+ controlar sua câmera
+ </string>
+ <string name="ExperiencePermission11">
+ teletransportar você
+ </string>
+ <string name="ExperiencePermission12">
+ aceitar automaticamente permissões de experiência
+ </string>
+ <string name="ExperiencePermission16">
+ forçar o avatar a sentar
+ </string>
+ <string name="ExperiencePermission17">
+ alterar sua configurações de ambiente
+ </string>
+ <string name="ExperiencePermissionShortUnknown">
+ realizar uma operação desconhecida: [Permission]
+ </string>
+ <string name="ExperiencePermissionShort1">
+ Assumir o controle
+ </string>
+ <string name="ExperiencePermissionShort3">
+ Acionar animações
+ </string>
+ <string name="ExperiencePermissionShort4">
+ Anexar
+ </string>
+ <string name="ExperiencePermissionShort9">
+ Rastrear câmera
+ </string>
+ <string name="ExperiencePermissionShort10">
+ Controlar câmera
+ </string>
+ <string name="ExperiencePermissionShort11">
+ Teletransportar
+ </string>
+ <string name="ExperiencePermissionShort12">
+ Autorização
+ </string>
+ <string name="ExperiencePermissionShort16">
+ Sentar
+ </string>
+ <string name="ExperiencePermissionShort17">
+ Ambiente
+ </string>
+ <string name="logging_calls_disabled_log_empty">
+ As conversas não estão sendo registradas. Para começar a manter um registro, selecione "Salvar: apenas registro" ou "Salvar: registro e transcrições" em Preferências&gt; Bate-papo.
+ </string>
+ <string name="logging_calls_disabled_log_not_empty">
+ Nenhuma conversa será registrada. Para recomeçar a gravação de registros, selecione "Salvar: apenas registro" ou "Salvar: registro e transcrições" em Preferências&gt; Bate-papo.
+ </string>
+ <string name="logging_calls_enabled_log_empty">
+ Não há conversas registradas. Depois que você entrar em contato com alguém, ou alguém entrar em contato com você, um registro será exibido aqui.
+ </string>
+ <string name="loading_chat_logs">
+ Carregando...
+ </string>
+ <string name="na">
+ n/d
+ </string>
+ <string name="preset_combo_label">
+ -Lista vazia-
+ </string>
+ <string name="Default">
+ Padrão
+ </string>
+ <string name="none_paren_cap">
+ (nenhum)
+ </string>
+ <string name="no_limit">
+ Sem limite
+ </string>
+ <string name="Mav_Details_MAV_FOUND_DEGENERATE_TRIANGLES">
+ A forma física contém triângulos muito pequenos. Tente simplificar o modelo físico.
+ </string>
+ <string name="Mav_Details_MAV_CONFIRMATION_DATA_MISMATCH">
+ A forma física contém dados de confirmação ruins. Tente consertar o modelo físico.
+ </string>
+ <string name="Mav_Details_MAV_UNKNOWN_VERSION">
+ A forma física não tem a versão correta. Defina a versão correta para o modelo físico.
+ </string>
+ <string name="couldnt_resolve_host">
+ O DNS não pode resolver o nome do host([HOSTNAME]).
Verifique se você pode conectar ao site www.secondlife.com . Se você
puder, mas se continuar recebendo esta mensagem de erro, vá à sessão
-Suporte no site Secondlife.com e informe o problema.</string>
- <string name="ssl_peer_certificate">O servidor de acesso não pôde verificá-lo pelo SSL.
+Suporte no site Secondlife.com e informe o problema.
+ </string>
+ <string name="ssl_peer_certificate">
+ O servidor de acesso não pôde verificá-lo pelo SSL.
Se você continuar recebendo esta mensagem de erro,
vá à sessão Suporte no site Secondlife.com
-e informe o problema.</string>
- <string name="ssl_connect_error">Geralmente, esse erro significa que o relógio do seu computador não está com o horário correto.
+e informe o problema.
+ </string>
+ <string name="ssl_connect_error">
+ Geralmente, esse erro significa que o relógio do seu computador não está com o horário correto.
Vá em Painel de Controles e certifique-se de que a hora e data estejam corretos.
Além disso, verifique se a sua rede e firewall estejam corretos. Se você continuar
recebendo esta mensagem de erro, vá à sessão Suporte no site Secondlife.com
e informe o problema.
-[https://community.secondlife.com/knowledgebase/english/error-messages-r520/#Section__3 Base de conhecimento]</string>
+[https://community.secondlife.com/knowledgebase/english/error-messages-r520/#Section__3 Base de conhecimento]
+ </string>
</strings>
diff --git a/indra/newview/skins/default/xui/pt/teleport_strings.xml b/indra/newview/skins/default/xui/pt/teleport_strings.xml
index 0cbf4dccd8..014e44a175 100644
--- a/indra/newview/skins/default/xui/pt/teleport_strings.xml
+++ b/indra/newview/skins/default/xui/pt/teleport_strings.xml
@@ -1,38 +1,94 @@
<?xml version="1.0" ?>
<teleport_messages>
<message_set name="errors">
- <message name="invalid_tport">Houve um problema ao processar o teletransporte. Talvez seja preciso sair e entrar do Second Life para fazer o teletransporte.
-Se você continuar a receber esta mensagem, por favor consulte o [SUPPORT_SITE].</message>
- <message name="invalid_region_handoff">Problema encontrado ao processar a passagem de regiões. Talvez seja preciso sair e entrar do Second Life atravessar regiões novamente.
-Se você continuar a receber esta mensagem, por favor consulte o [SUPPORT_SITE].</message>
- <message name="blocked_tport">Desculpe, teletransportes estão atualmente bloqueados. Tente novamente dentro de alguns instantes. Se você continuar com problemas de teletransporte, por favor tente deslogar e relogar para resolver o problema.</message>
- <message name="nolandmark_tport">Desculpe, mas o sistema não conseguiu localizar a landmark de destino.</message>
- <message name="timeout_tport">Desculpe, não foi possível para o sistema executar o teletransporte. Tente novamente dentro de alguns instantes.</message>
- <message name="NoHelpIslandTP">Não é possível se teletransportar de volta à Ilha Welcome.
-Vá para a 'Ilha Welcome Pública' para repetir o tutorial.</message>
- <message name="noaccess_tport">Desculpe, você não tem acesso ao destino deste teletransporte.</message>
- <message name="missing_attach_tport">Seu anexos ainda não chegaram. Tente esperar por alguns momentos ou deslogar e logar antes de tentar teleransportar-se novamente.</message>
- <message name="too_many_uploads_tport">Afluxo nesta região é atualmente tão alto que seu pedido de teletransporte não será possível em tempo oportuno. Por favor, tente novamente em alguns minutos ou vá a uma área menos ocupada.</message>
- <message name="expired_tport">Desculpe, mas o sistema não conseguiu concluir o seu pedido de teletransporte em tempo hábil. Por favor, tente novamente em alguns minutos.</message>
- <message name="expired_region_handoff">Desculpe, mas o sistema não pôde concluir a sua travessia de região em tempo hábil. Por favor, tente novamente em alguns minutos.</message>
- <message name="no_host">Não foi possível encontrar o destino do teletransporte. O destino pode estar temporariamente indisponível ou não existir mais. Por favor, tente novamente em poucos minutos.</message>
- <message name="no_inventory_host">O sistema de inventário está indisponível no momento.</message>
- <message name="MustGetAgeRegion">Você deve ter 18 anos ou mais para acessar esta região.</message>
- <message name="RegionTPSpecialUsageBlocked">Não é possível inserir a região. '[REGION_NAME]' é uma Região de Skill Gaming, portanto você deve atender certos critérios para poder entrar. Para maiores detalhes, consulte as [http://wiki.secondlife.com/wiki/Linden_Lab_Official:Skill_Gaming_in_Second_Life Skill Gaming FAQ].</message>
- <message name="preexisting_tport">Desculpe, mas o sistema falhou ao iniciar o seu teletransporte. Por favor, tente novamente dentro de alguns minutos.</message>
+ <message name="invalid_tport">
+ Houve um problema ao processar o teletransporte. Talvez seja preciso sair e entrar do Second Life para fazer o teletransporte.
+Se você continuar a receber esta mensagem, por favor consulte o [SUPPORT_SITE].
+ </message>
+ <message name="invalid_region_handoff">
+ Problema encontrado ao processar a passagem de regiões. Talvez seja preciso sair e entrar do Second Life atravessar regiões novamente.
+Se você continuar a receber esta mensagem, por favor consulte o [SUPPORT_SITE].
+ </message>
+ <message name="blocked_tport">
+ Desculpe, teletransportes estão atualmente bloqueados. Tente novamente dentro de alguns instantes. Se você continuar com problemas de teletransporte, por favor tente deslogar e relogar para resolver o problema.
+ </message>
+ <message name="nolandmark_tport">
+ Desculpe, mas o sistema não conseguiu localizar a landmark de destino.
+ </message>
+ <message name="timeout_tport">
+ Desculpe, não foi possível para o sistema executar o teletransporte. Tente novamente dentro de alguns instantes.
+ </message>
+ <message name="NoHelpIslandTP">
+ Não é possível se teletransportar de volta à Ilha Welcome.
+Vá para a 'Ilha Welcome Pública' para repetir o tutorial.
+ </message>
+ <message name="noaccess_tport">
+ Desculpe, você não tem acesso ao destino deste teletransporte.
+ </message>
+ <message name="missing_attach_tport">
+ Seu anexos ainda não chegaram. Tente esperar por alguns momentos ou deslogar e logar antes de tentar teleransportar-se novamente.
+ </message>
+ <message name="too_many_uploads_tport">
+ Afluxo nesta região é atualmente tão alto que seu pedido de teletransporte não será possível em tempo oportuno. Por favor, tente novamente em alguns minutos ou vá a uma área menos ocupada.
+ </message>
+ <message name="expired_tport">
+ Desculpe, mas o sistema não conseguiu concluir o seu pedido de teletransporte em tempo hábil. Por favor, tente novamente em alguns minutos.
+ </message>
+ <message name="expired_region_handoff">
+ Desculpe, mas o sistema não pôde concluir a sua travessia de região em tempo hábil. Por favor, tente novamente em alguns minutos.
+ </message>
+ <message name="no_host">
+ Não foi possível encontrar o destino do teletransporte. O destino pode estar temporariamente indisponível ou não existir mais. Por favor, tente novamente em poucos minutos.
+ </message>
+ <message name="no_inventory_host">
+ O sistema de inventário está indisponível no momento.
+ </message>
+ <message name="MustGetAgeRegion">
+ Você deve ter 18 anos ou mais para acessar esta região.
+ </message>
+ <message name="RegionTPSpecialUsageBlocked">
+ Não é possível inserir a região. '[REGION_NAME]' é uma Região de Skill Gaming, portanto você deve atender certos critérios para poder entrar. Para maiores detalhes, consulte as [http://wiki.secondlife.com/wiki/Linden_Lab_Official:Skill_Gaming_in_Second_Life Skill Gaming FAQ].
+ </message>
+ <message name="preexisting_tport">
+ Desculpe, mas o sistema falhou ao iniciar o seu teletransporte. Por favor, tente novamente dentro de alguns minutos.
+ </message>
</message_set>
<message_set name="progress">
- <message name="sending_dest">Enviando para o destino.</message>
- <message name="redirecting">Redirecionando para uma localidade diferente.</message>
- <message name="relaying">Transferindo para o destino.</message>
- <message name="sending_home">Enviando solicitação de localização de início.</message>
- <message name="sending_landmark">Enviando solicitação de localização de landmark.</message>
- <message name="completing">Completando teletransporte.</message>
- <message name="completed_from">Teletransporte de [T_SLURL] concluído</message>
- <message name="resolving">Identificando destino.</message>
- <message name="contacting">Contactando nova região.</message>
- <message name="arriving">Chegando...</message>
- <message name="requesting">Solicitando teletransporte...</message>
- <message name="pending">Teletransporte pendente...</message>
+ <message name="sending_dest">
+ Enviando para o destino.
+ </message>
+ <message name="redirecting">
+ Redirecionando para uma localidade diferente.
+ </message>
+ <message name="relaying">
+ Transferindo para o destino.
+ </message>
+ <message name="sending_home">
+ Enviando solicitação de localização de início.
+ </message>
+ <message name="sending_landmark">
+ Enviando solicitação de localização de landmark.
+ </message>
+ <message name="completing">
+ Completando teletransporte.
+ </message>
+ <message name="completed_from">
+ Teletransporte de [T_SLURL] concluído
+ </message>
+ <message name="resolving">
+ Identificando destino.
+ </message>
+ <message name="contacting">
+ Contactando nova região.
+ </message>
+ <message name="arriving">
+ Chegando...
+ </message>
+ <message name="requesting">
+ Solicitando teletransporte...
+ </message>
+ <message name="pending">
+ Teletransporte pendente...
+ </message>
</message_set>
</teleport_messages>
diff --git a/indra/newview/skins/default/xui/ru/strings.xml b/indra/newview/skins/default/xui/ru/strings.xml
index 1f53723e92..682acd9191 100644
--- a/indra/newview/skins/default/xui/ru/strings.xml
+++ b/indra/newview/skins/default/xui/ru/strings.xml
@@ -1,8 +1,4 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- This file contains strings that used to be hardcoded in the source.
- It is only for those strings which do not belong in a floater.
- For example, the strings used in avatar chat bubbles, and strings
- that are returned from one component and may appear in many places-->
<strings>
<string name="SECOND_LIFE">
Second Life
@@ -42,7 +38,7 @@
Конфигурация построения [BUILD_CONFIG]
</string>
<string name="AboutPosition">
- Вы в точке [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] в регионе «[REGION]», расположенном на &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt; ([HOSTIP])
+ Вы в точке [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] в регионе «[REGION]», расположенном на &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt;
SLURL: &lt;nolink&gt;[SLURL]&lt;/nolink&gt;
(глобальные координаты [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1])
[SERVER_VERSION]
@@ -1657,7 +1653,7 @@ support@secondlife.com.
Тариф зависит от типа вашей подписки. Тарифы для владельцев расширенных пакетов меньше. [https://secondlife.com/my/account/membership.php? Узнать больше]
</string>
<string name="Open landmarks">
- Открыть сохраненные локации
+ Открыть сохраненные локации
</string>
<string name="Unconstrained">
Без ограничений
@@ -2870,8 +2866,8 @@ support@secondlife.com.
<string name=".">
.
</string>
- <string name="&apos;">
- &apos;
+ <string name="'">
+ '
</string>
<string name="---">
---
@@ -2983,7 +2979,7 @@ support@secondlife.com.
Не удается запустить приложение [APP_NAME], поскольку драйверы видеокарты неправильно установлены, устарели или предназначены для оборудования, которое не поддерживается. Установите или переустановите последние драйверы видеокарты.
Если это сообщение продолжает отображаться, обратитесь на сайт [SUPPORT_SITE].
</string>
- <string name="5 O&apos;Clock Shadow">
+ <string name="5 O'Clock Shadow">
Жидкие
</string>
<string name="All White">
@@ -4577,7 +4573,7 @@ support@secondlife.com.
Предложена папка инвентаря «[ITEM_NAME]»
</string>
<string name="bot_warning">
-Вы общаетесь с ботом [NAME]. Не передавайте личные данные.
+ Вы общаетесь с ботом [NAME]. Не передавайте личные данные.
Подробнее на https://second.life/scripted-agents.
</string>
<string name="share_alert">
@@ -5147,7 +5143,7 @@ support@secondlife.com.
<string name="ExternalEditorNotFound">
Не удается найти указанный внешний редактор.
Попробуйте взять путь к редактору в двойные кавычки
-(например &quot;/path to my/editor&quot; &quot;%s&quot;)
+(например "/path to my/editor" "%s")
</string>
<string name="ExternalEditorCommandParseError">
Ошибка анализа командной строки для внешнего редактора.
diff --git a/indra/newview/skins/default/xui/tr/strings.xml b/indra/newview/skins/default/xui/tr/strings.xml
index c98de5aab9..5c3f7ae256 100644
--- a/indra/newview/skins/default/xui/tr/strings.xml
+++ b/indra/newview/skins/default/xui/tr/strings.xml
@@ -1,8 +1,4 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- This file contains strings that used to be hardcoded in the source.
- It is only for those strings which do not belong in a floater.
- For example, the strings used in avatar chat bubbles, and strings
- that are returned from one component and may appear in many places-->
<strings>
<string name="SECOND_LIFE">
Second Life
@@ -42,7 +38,7 @@
Yapı Konfigürasyonu [BUILD_CONFIG]
</string>
<string name="AboutPosition">
- &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt; ([HOSTIP]) üzerinde bulunan [REGION] içerisinde [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] konumundasınız
+ &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt; üzerinde bulunan [REGION] içerisinde [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] konumundasınız
SLURL: &lt;nolink&gt;[SLURL]&lt;/nolink&gt;
(küresel koordinatlar [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1])
[SERVER_VERSION]
@@ -88,7 +84,7 @@ Ses Sunucusu Sürümü: [VOICE_VERSION]
[month, datetime, slt] [day, datetime, slt] [year, datetime, slt] [hour, datetime, slt]:[min, datetime, slt]:[second,datetime,slt]
</string>
<string name="ErrorFetchingServerReleaseNotesURL">
- Sunucu sürümü notları URL&apos;si alınırken hata oluştu.
+ Sunucu sürümü notları URL'si alınırken hata oluştu.
</string>
<string name="BuildConfiguration">
Yapı Konfigürasyonu
@@ -205,7 +201,7 @@ Ses Sunucusu Sürümü: [VOICE_VERSION]
http://secondlife.com/download
</string>
<string name="LoginFailedViewerNotPermitted">
- Kullandığınız görüntüleyici ile artık Second Life&apos;a erişemezsiniz. Yeni bir görüntüleyiciyi karşıdan yüklemek için lütfen şu sayfayı ziyaret edin:
+ Kullandığınız görüntüleyici ile artık Second Life'a erişemezsiniz. Yeni bir görüntüleyiciyi karşıdan yüklemek için lütfen şu sayfayı ziyaret edin:
http://secondlife.com/download
Daha fazla bilgi edinmek için asağıdaki SSS sayfamızı ziyaret edin:
@@ -247,10 +243,10 @@ Güncelleştirmeler için www.secondlife.com/status adresini kontrol edin.
<string name="LoginFailedPremiumOnly">
Second Life üzerindeki aktif kullanıcıların olası en iyi deneyimi yaşamasını sağlamak için, oturum açılması geçici olarak kısıtlanmıştır.
-Second Life için ödeme yapmış olan kişilere öncelik tanımak amacıyla, ücretsiz hesaplara sahip kişiler bu süre içerisinde Second Life&apos;a erişemeyecekler.
+Second Life için ödeme yapmış olan kişilere öncelik tanımak amacıyla, ücretsiz hesaplara sahip kişiler bu süre içerisinde Second Life'a erişemeyecekler.
</string>
<string name="LoginFailedComputerProhibited">
- Second Life&apos;a bu bilgisayardan erişemezsiniz.
+ Second Life'a bu bilgisayardan erişemezsiniz.
Bunun bir hata olduğunu düşünüyorsanız, lütfen şu adrese başvurun:
support@secondlife.com.
</string>
@@ -286,7 +282,7 @@ Lütfen yeniden oturum açmayı denemeden önce bir dakika bekleyin.
Bir simülatöre bağlanılamadı.
</string>
<string name="LoginFailedRestrictedHours">
- Hesabınız Second Life&apos;a sadece
+ Hesabınız Second Life'a sadece
Pasifik Saati ile [START] ve [END] arasında erişebilir.
Lütfen bu saatler arasında tekrar uğrayın.
Bunun bir hata olduğunu düşünüyorsanız, lütfen şu adrese başvurun: support@secondlife.com
@@ -369,7 +365,7 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin.
Facebook ile bağlantı kurulurken sorun oluştu
</string>
<string name="SocialFacebookErrorPosting">
- Facebook&apos;ta yayınlarken sorun oluştu
+ Facebook'ta yayınlarken sorun oluştu
</string>
<string name="SocialFacebookErrorDisconnecting">
Facebook bağlantısı kesilirken sorun oluştu
@@ -387,7 +383,7 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin.
Flickr bağlantısı kurulurken sorun çıktı
</string>
<string name="SocialFlickrErrorPosting">
- Flickr&apos;da yayınlarken sorun çıktı
+ Flickr'da yayınlarken sorun çıktı
</string>
<string name="SocialFlickrErrorDisconnecting">
Flickr bağlantısı kesilirken sorun çıktı
@@ -405,7 +401,7 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin.
Twitter bağlantısı kurulurken sorun çıktı
</string>
<string name="SocialTwitterErrorPosting">
- Twitter&apos;da yayınlarken sorun çıktı
+ Twitter'da yayınlarken sorun çıktı
</string>
<string name="SocialTwitterErrorDisconnecting">
Twitter bağlantısı kesilirken sorun çıktı
@@ -414,7 +410,7 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin.
Siyah Beyaz
</string>
<string name="Colors1970">
- 70&apos;lerin Renkleri
+ 70'lerin Renkleri
</string>
<string name="Intense">
Yoğun
@@ -657,7 +653,7 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin.
not kartlarına eklenemez.
</string>
<string name="TooltipNotecardOwnerRestrictedDrop">
- Sadece kısıtlamasız &apos;sonraki sahip&apos;
+ Sadece kısıtlamasız 'sonraki sahip'
izinlerini içeren öğeler not
kartlarına eklenebilir.
</string>
@@ -1107,10 +1103,10 @@ http://secondlife.com/support adresini ziyaret edin.
Şimdi Yakındaki bir Sesli Sohbete yeniden bağlanılacaksınız.
</string>
<string name="ScriptQuestionCautionChatGranted">
- &apos;[OWNERNAME]&apos; adlı kişiye ait, [REGIONPOS] üzerinde [REGIONNAME] içerisinde bulunan &apos;[OBJECTNAME]&apos; nesnesine şunu yapma izni verildi: [PERMISSIONS].
+ '[OWNERNAME]' adlı kişiye ait, [REGIONPOS] üzerinde [REGIONNAME] içerisinde bulunan '[OBJECTNAME]' nesnesine şunu yapma izni verildi: [PERMISSIONS].
</string>
<string name="ScriptQuestionCautionChatDenied">
- &apos;[OWNERNAME]&apos; adlı kişiye ait, [REGIONPOS] üzerinde [REGIONNAME] içerisinde bulunan &apos;[OBJECTNAME]&apos; nesnesine şunu yapma izni verilmedi: [PERMISSIONS].
+ '[OWNERNAME]' adlı kişiye ait, [REGIONPOS] üzerinde [REGIONNAME] içerisinde bulunan '[OBJECTNAME]' nesnesine şunu yapma izni verilmedi: [PERMISSIONS].
</string>
<string name="AdditionalPermissionsRequestHeader">
Eğer hesabınıza erişime izin verirseniz, bu nesneye aynı zamanda şunun için izin vermiş olacaksınız:
@@ -1486,7 +1482,7 @@ http://secondlife.com/support adresini ziyaret edin.
Yüksek
</string>
<string name="LeaveMouselook">
- Dünya Görünümüne dönmek için ESC&apos;e basın
+ Dünya Görünümüne dönmek için ESC'e basın
</string>
<string name="InventoryNoMatchingItems">
Aradığınızı bulamadınız mı? [secondlife:///app/search/all/[SEARCH_TERM] Arama] ile bulmayı deneyin.
@@ -1545,7 +1541,7 @@ http://secondlife.com/support adresini ziyaret edin.
</string>
<string name="InventoryOutboxNoItemsTooltip"/>
<string name="InventoryOutboxNoItems">
- Bu alana klasörleri sürükleyin ve bunları [[MARKETPLACE_DASHBOARD_URL] Pazaryerinde] satılık olarak duyurmak için &quot;Pazaryerine Gönder&quot; üzerine tıklayın.
+ Bu alana klasörleri sürükleyin ve bunları [[MARKETPLACE_DASHBOARD_URL] Pazaryerinde] satılık olarak duyurmak için "Pazaryerine Gönder" üzerine tıklayın.
</string>
<string name="InventoryOutboxInitializingTitle">
Pazaryeri Başlatılıyor.
@@ -1815,7 +1811,7 @@ Bu mesaj size gelmeye devam ederse lütfen http://support.secondlife.com adresin
Satın Al
</string>
<string name="BuyforL$">
- L$&apos;a Satın Al
+ L$'a Satın Al
</string>
<string name="Stone">
Taş
@@ -2001,19 +1997,19 @@ Bu mesaj size gelmeye devam ederse lütfen http://support.secondlife.com adresin
Hata: Nesne mevcut dış görünüme dahil ama eklenmemiş
</string>
<string name="YearsMonthsOld">
- [AGEYEARS] [AGEMONTHS]&apos;lık
+ [AGEYEARS] [AGEMONTHS]'lık
</string>
<string name="YearsOld">
[AGEYEARS] yaşında
</string>
<string name="MonthsOld">
- [AGEMONTHS]&apos;lık
+ [AGEMONTHS]'lık
</string>
<string name="WeeksOld">
- [AGEWEEKS]&apos;lık
+ [AGEWEEKS]'lık
</string>
<string name="DaysOld">
- [AGEDAYS]&apos;lük
+ [AGEDAYS]'lük
</string>
<string name="TodayOld">
Bugün katıldı
@@ -2034,7 +2030,7 @@ Bu mesaj size gelmeye devam ederse lütfen http://support.secondlife.com adresin
Çevrenizdeki kimse sizi işleyemeyebilir.
</string>
<string name="hud_description_total">
- BÜG&apos;niz
+ BÜG'niz
</string>
<string name="hud_name_with_joint">
[OBJ_NAME] ([JNT_NAME] üzerinde)
@@ -2312,13 +2308,13 @@ Bu mesaj size gelmeye devam ederse lütfen http://support.secondlife.com adresin
Kullanılan bellek: [COUNT] kb
</string>
<string name="ScriptLimitsParcelScriptURLs">
- Parsel Komut Dosyası URL&apos;leri
+ Parsel Komut Dosyası URL'leri
</string>
<string name="ScriptLimitsURLsUsed">
- Kullanılan URL&apos;ler: [COUNT] / [MAX] içerisinden; [AVAILABLE] serbest
+ Kullanılan URL'ler: [COUNT] / [MAX] içerisinden; [AVAILABLE] serbest
</string>
<string name="ScriptLimitsURLsUsedSimple">
- Kullanılan URL&apos;ler: [COUNT]
+ Kullanılan URL'ler: [COUNT]
</string>
<string name="ScriptLimitsRequestError">
Bilgi talep edilirken hata oluştu
@@ -2522,7 +2518,7 @@ Bu mesaj size gelmeye devam ederse lütfen http://support.secondlife.com adresin
Yeni Komut Dosyası
</string>
<string name="DoNotDisturbModeResponseDefault">
- Bu sakin &quot;Rahatsız Etme&quot; seçeneğini devreye almış, mesajınızı sonra görecek.
+ Bu sakin "Rahatsız Etme" seçeneğini devreye almış, mesajınızı sonra görecek.
</string>
<string name="MuteByName">
(Adına göre)
@@ -2633,7 +2629,7 @@ Bu mesaj size gelmeye devam ederse lütfen http://support.secondlife.com adresin
size verdi:
</string>
<string name="InvOfferDecline">
- &lt;nolink&gt;[NAME]&lt;/nolink&gt; tarafından gönderilen [DESC]&apos;i reddettiniz.
+ &lt;nolink&gt;[NAME]&lt;/nolink&gt; tarafından gönderilen [DESC]'i reddettiniz.
</string>
<string name="GroupMoneyTotal">
Toplam
@@ -2870,8 +2866,8 @@ Bu mesaj size gelmeye devam ederse lütfen http://support.secondlife.com adresin
<string name=".">
.
</string>
- <string name="&apos;">
- &apos;
+ <string name="'">
+ '
</string>
<string name="---">
---
@@ -2986,7 +2982,7 @@ Bu iletiyi almaya devam ederseniz, lütfen [SUPPORT_SITE] bölümüne başvurun.
Bu iletiyi almaya devam ederseniz, lütfen [SUPPORT_SITE] bölümüne başvurun.
</string>
- <string name="5 O&apos;Clock Shadow">
+ <string name="5 O'Clock Shadow">
Bir Günlük Sakal
</string>
<string name="All White">
@@ -4490,7 +4486,7 @@ Bu iletiyi almaya devam ederseniz, lütfen [SUPPORT_SITE] bölümüne başvurun.
Görüntüleyici başlatılamadı
</string>
<string name="ItemsComingInTooFastFrom">
- [APP_NAME]: [FROM_NAME]&apos;den öğeler çok hızlı geliyor, [TIME] saniye boyunca otomatik ön izleme devre dışı bırakıldı
+ [APP_NAME]: [FROM_NAME]'den öğeler çok hızlı geliyor, [TIME] saniye boyunca otomatik ön izleme devre dışı bırakıldı
</string>
<string name="ItemsComingInTooFast">
[APP_NAME]: Öğeler çok hızlı geliyor, [TIME] saniye boyunca otomatik ön izleme devre dışı bırakıldı
@@ -4526,7 +4522,7 @@ Bu iletiyi almaya devam ederseniz, lütfen [SUPPORT_SITE] bölümüne başvurun.
(Kaydedildi [LONG_TIMESTAMP])
</string>
<string name="IM_unblock_only_groups_friends">
- Bu mesajı görmek için Tercihler/Gizlilik&apos;de &apos;Sadece arkadaşlar ve gruplar beni arasın veya Aİ göndersin&apos; seçeneğinin işaretini kaldırmalısınız.
+ 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="OnlineStatus">
Çevrimiçi
@@ -4550,7 +4546,7 @@ Bu iletiyi almaya devam ederseniz, lütfen [SUPPORT_SITE] bölümüne başvurun.
Sesli aramaya katıldınız
</string>
<string name="you_auto_rejected_call-im">
- &quot;Rahatsız Etme&quot; seçeneğini devredeyken sesli aramayı otomatik olarak reddettiniz.
+ "Rahatsız Etme" seçeneğini devredeyken sesli aramayı otomatik olarak reddettiniz.
</string>
<string name="name_started_call">
[NAME] bir sesli arama başlattı
@@ -4574,26 +4570,26 @@ Bu iletiyi almaya devam ederseniz, lütfen [SUPPORT_SITE] bölümüne başvurun.
[AGENT_NAME] ile konferans
</string>
<string name="inventory_item_offered-im">
- &quot;[ITEM_NAME]&quot; envanter öğesi sunuldu
+ "[ITEM_NAME]" envanter öğesi sunuldu
</string>
<string name="inventory_folder_offered-im">
- &quot;[ITEM_NAME]&quot; envanter klasörü sunuldu
+ "[ITEM_NAME]" envanter klasörü sunuldu
</string>
<string name="bot_warning">
-Bir bot ile sohbet ediyorsunuz, [NAME]. Kişisel bilgilerinizi paylaşmayın.
+ Bir bot ile sohbet ediyorsunuz, [NAME]. Kişisel bilgilerinizi paylaşmayın.
Daha fazla bilgi için: https://second.life/scripted-agents.
</string>
<string name="share_alert">
Envanterinizden buraya öğeler sürükleyin
</string>
<string name="facebook_post_success">
- Facebook&apos;ta yayınladınız.
+ Facebook'ta yayınladınız.
</string>
<string name="flickr_post_success">
- Flickr&apos;da yayınladınız.
+ Flickr'da yayınladınız.
</string>
<string name="twitter_post_success">
- Twitter&apos;da yayınladınız.
+ Twitter'da yayınladınız.
</string>
<string name="no_session_message">
(Aİ Oturumu Mevcut Değil)
@@ -4686,7 +4682,7 @@ Daha fazla bilgi için: https://second.life/scripted-agents.
[NAME] size L$[AMOUNT] ödedi.
</string>
<string name="you_paid_ldollars">
- [NAME]&apos;e [REASON] L$[AMOUNT] ödediniz.
+ [NAME]'e [REASON] L$[AMOUNT] ödediniz.
</string>
<string name="you_paid_ldollars_gift">
[NAME] adlı kullanıcıya [AMOUNT] L$ ödediniz. [REASON]
@@ -4695,13 +4691,13 @@ Daha fazla bilgi için: https://second.life/scripted-agents.
L$[AMOUNT] ödediniz.
</string>
<string name="you_paid_ldollars_no_reason">
- [NAME]&apos;e L$[AMOUNT] ödediniz.
+ [NAME]'e L$[AMOUNT] ödediniz.
</string>
<string name="you_paid_ldollars_no_name">
[REASON] L$[AMOUNT] ödediniz.
</string>
<string name="you_paid_failure_ldollars">
- [REASON] [NAME]&apos;e L$[AMOUNT] ödeyemediniz.
+ [REASON] [NAME]'e L$[AMOUNT] ödeyemediniz.
</string>
<string name="you_paid_failure_ldollars_gift">
[NAME] adlı kullanıcıya [AMOUNT] L$ ödeyemediniz. [REASON]
@@ -4710,7 +4706,7 @@ Daha fazla bilgi için: https://second.life/scripted-agents.
L$[AMOUNT] ödeyemediniz.
</string>
<string name="you_paid_failure_ldollars_no_reason">
- [NAME]&apos;e L$[AMOUNT] ödeyemediniz.
+ [NAME]'e L$[AMOUNT] ödeyemediniz.
</string>
<string name="you_paid_failure_ldollars_no_name">
[REASON] L$[AMOUNT] ödeyemediniz.
@@ -5142,7 +5138,7 @@ Hizmetle ilişkili bilinen bir sorun olup olmadığını görmek için lütfen h
<string name="ExternalEditorNotFound">
Belirttiğiniz harici düzenleyici bulunamadı.
Düzenleyici yolunu çift tırnakla çevrelemeyi deneyin.
-(örn. &quot;/yolum/duzenleyici&quot; &quot;%s&quot;)
+(örn. "/yolum/duzenleyici" "%s")
</string>
<string name="ExternalEditorCommandParseError">
Harici düzenleyici komutu ayrıştırılırken hata oluştu.
@@ -5631,10 +5627,10 @@ Düzenleyici yolunu çift tırnakla çevrelemeyi deneyin.
Ortamlarım
</string>
<string name="Command_Facebook_Tooltip">
- Facebook&apos;ta Yayınla
+ Facebook'ta Yayınla
</string>
<string name="Command_Flickr_Tooltip">
- Flickr&apos;a yükle
+ Flickr'a yükle
</string>
<string name="Command_Gestures_Tooltip">
Avatarınız için mimikler
@@ -5865,10 +5861,10 @@ Düzenleyici yolunu çift tırnakla çevrelemeyi deneyin.
Ortam
</string>
<string name="logging_calls_disabled_log_empty">
- Sohbetlerin günlüğü tutulmuyor. Bir günlük tutmaya başlamak için, Tercihler &gt; Sohbet altında &quot;Kaydet: Sadece günlük&quot; veya &quot;Kaydet: Günlük ve dökümler&quot; seçimini yapın.
+ Sohbetlerin günlüğü tutulmuyor. Bir günlük tutmaya başlamak için, Tercihler &gt; Sohbet altında "Kaydet: Sadece günlük" veya "Kaydet: Günlük ve dökümler" seçimini yapın.
</string>
<string name="logging_calls_disabled_log_not_empty">
- Bundan böyle sohbetlerin günlükleri tutulmayacak. Bir günlük tutmaya devam etmek için, Tercihler &gt; Sohbet altında &quot;Kaydet: Sadece günlük&quot; veya &quot;Kaydet: Günlük ve dökümler&quot; seçimini yapın.
+ Bundan böyle sohbetlerin günlükleri tutulmayacak. Bir günlük tutmaya devam etmek için, Tercihler &gt; Sohbet altında "Kaydet: Sadece günlük" veya "Kaydet: Günlük ve dökümler" seçimini yapın.
</string>
<string name="logging_calls_enabled_log_empty">
Günlüğü tutulmuş sohbet yok. Siz biriyle iletişime geçtikten sonra veya biri sizinle iletişime geçtikten sonra, burada bir günlük girişi gösterilir.
@@ -5914,7 +5910,7 @@ bölümüne gidin ve sorunu bildirin.
</string>
<string name="ssl_connect_error">
Çoğunlukla, bu durum, bilgisayarınızın saatinin yanlış ayarlandığı anlamına gelir.
-Lütfen Denetim Masası&apos;na gidin ve tarih ve saat ayarlarının doğru yapıldığından emin olun.
+Lütfen Denetim Masası'na gidin ve tarih ve saat ayarlarının doğru yapıldığından emin olun.
Ayrıca, ağınızın ve güvenlik duvarınızın doğru şekilde ayarlanıp ayarlanmadığını kontrol edin.
Bu hatayı almaya devam ederseniz, lütfen SecondLife.com web sitesinin Destek bölümüne
gidin ve sorunu bildirin.
diff --git a/indra/newview/skins/default/xui/tr/teleport_strings.xml b/indra/newview/skins/default/xui/tr/teleport_strings.xml
index e3a08e04b2..b403786bd2 100644
--- a/indra/newview/skins/default/xui/tr/teleport_strings.xml
+++ b/indra/newview/skins/default/xui/tr/teleport_strings.xml
@@ -21,8 +21,8 @@ Hala ışınlanamıyorsanız, sorunu çözmek için lütfen çıkış yapıp otu
Bir dakika sonra tekrar deneyin.
</message>
<message name="NoHelpIslandTP">
- Karşılama Ada&apos;sına geri ışınlanamazsınız.
-Öğreticiyi tekrarlamak için &apos;Karşılama Ada&apos;sı Kamusal Alanı&apos;na gidin.
+ Karşılama Ada'sına geri ışınlanamazsınız.
+Öğreticiyi tekrarlamak için 'Karşılama Ada'sı Kamusal Alanı'na gidin.
</message>
<message name="noaccess_tport">
Üzgünüz, bu ışınlanma hedef konumuna erişim hakkına sahip değilsiniz.
@@ -49,7 +49,7 @@ Bir dakika sonra tekrar deneyin.
Bu bölgeye girebilmek için 18 veya üzeri bir yaşta olmanız gerekir.
</message>
<message name="RegionTPSpecialUsageBlocked">
- Bölgeye girilemiyor. &quot;[REGION_NAME]&quot; bir Yetenek Oyunu Bölgesi. Buraya girebilmek için bazı ölçütleri karşılamanız gerekiyor. Ayrıntılar için lütfen [http://wiki.secondlife.com/wiki/Linden_Lab_Official:Skill_Gaming_in_Second_Life Skill Gaming FAQ] adresini ziyaret edin.
+ Bölgeye girilemiyor. "[REGION_NAME]" bir Yetenek Oyunu Bölgesi. Buraya girebilmek için bazı ölçütleri karşılamanız gerekiyor. Ayrıntılar için lütfen [http://wiki.secondlife.com/wiki/Linden_Lab_Official:Skill_Gaming_in_Second_Life Skill Gaming FAQ] adresini ziyaret edin.
</message>
</message_set>
<message_set name="progress">
diff --git a/indra/newview/skins/default/xui/zh/strings.xml b/indra/newview/skins/default/xui/zh/strings.xml
index 59ba2a7e19..cf6fa1d85f 100644
--- a/indra/newview/skins/default/xui/zh/strings.xml
+++ b/indra/newview/skins/default/xui/zh/strings.xml
@@ -1,8 +1,4 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- This file contains strings that used to be hardcoded in the source.
- It is only for those strings which do not belong in a floater.
- For example, the strings used in avatar chat bubbles, and strings
- that are returned from one component and may appear in many places-->
<strings>
<string name="SECOND_LIFE">
第二人生
@@ -42,7 +38,7 @@
建製設置 [BUILD_CONFIG]
</string>
<string name="AboutPosition">
- 你的方位是 [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1],地區名:[REGION],主機:&lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt; ([HOSTIP])
+ 你的方位是 [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1],地區名:[REGION],主機:&lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt;
第二人生URL:&lt;nolink&gt;[SLURL]&lt;/nolink&gt;
(全域坐標:[POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1])
[SERVER_VERSION]
@@ -1103,10 +1099,10 @@ http://secondlife.com/support 求助解決問題。
現在你將重新聯接到附近的語音聊天
</string>
<string name="ScriptQuestionCautionChatGranted">
- 物件「[OBJECTNAME]&apos;」(所有人「[OWNERNAME]」,位於「[REGIONNAME]」,方位「[REGIONPOS]」)已獲得下列權限:[PERMISSIONS]。
+ 物件「[OBJECTNAME]'」(所有人「[OWNERNAME]」,位於「[REGIONNAME]」,方位「[REGIONPOS]」)已獲得下列權限:[PERMISSIONS]。
</string>
<string name="ScriptQuestionCautionChatDenied">
- 物件「[OBJECTNAME]&apos;」(所有人「[OWNERNAME]」,位於「[REGIONNAME]」,方位「[REGIONPOS]」)已被撤除下列權限:[PERMISSIONS]。
+ 物件「[OBJECTNAME]'」(所有人「[OWNERNAME]」,位於「[REGIONNAME]」,方位「[REGIONPOS]」)已被撤除下列權限:[PERMISSIONS]。
</string>
<string name="AdditionalPermissionsRequestHeader">
你如果打開帳戶權限,也將一併允許該物件:
@@ -2863,8 +2859,8 @@ http://secondlife.com/support 求助解決問題。
<string name=".">
.
</string>
- <string name="&apos;">
- &apos;
+ <string name="'">
+ '
</string>
<string name="---">
---
@@ -2979,7 +2975,7 @@ http://secondlife.com/support 求助解決問題。
如果你繼續看到此訊息,請聯絡 [SUPPORT_SITE]。
</string>
- <string name="5 O&apos;Clock Shadow">
+ <string name="5 O'Clock Shadow">
下午五點的新鬍渣
</string>
<string name="All White">
@@ -4567,13 +4563,13 @@ http://secondlife.com/support 求助解決問題。
和 [AGENT_NAME] 多方通話
</string>
<string name="inventory_item_offered-im">
- 收納區物品&apos;[ITEM_NAME]&apos;已向人提供
+ 收納區物品'[ITEM_NAME]'已向人提供
</string>
<string name="inventory_folder_offered-im">
- 收納區資料夾&apos;[ITEM_NAME]&apos;已向人提供
+ 收納區資料夾'[ITEM_NAME]'已向人提供
</string>
<string name="bot_warning">
-您正在与人工智能机器人 [NAME] 聊天。请勿分享任何个人信息。
+ 您正在与人工智能机器人 [NAME] 聊天。请勿分享任何个人信息。
了解更多:https://second.life/scripted-agents。
</string>
<string name="share_alert">
@@ -5134,7 +5130,7 @@ http://secondlife.com/support 求助解決問題。
<string name="ExternalEditorNotFound">
找不到你指定的外部編輯器。
請嘗試在編輯器路經前後加上英文雙括號。
-(例:&quot;/path to my/editor&quot; &quot;%s&quot;)
+(例:"/path to my/editor" "%s")
</string>
<string name="ExternalEditorCommandParseError">
解析外部編輯器指令時出錯。
diff --git a/indra/newview/skins/default/xui/zh/teleport_strings.xml b/indra/newview/skins/default/xui/zh/teleport_strings.xml
index 61db294272..5523c598b4 100644
--- a/indra/newview/skins/default/xui/zh/teleport_strings.xml
+++ b/indra/newview/skins/default/xui/zh/teleport_strings.xml
@@ -49,7 +49,7 @@
你必須年滿 18 歲才可進入這地區。
</message>
<message name="RegionTPSpecialUsageBlocked">
- 無法進入地區。 &apos;[REGION_NAME]&apos; 是個「技巧性博奕」(Skill Gaming)地區,你必須符合一定條件才可進入。 欲知詳情,請參閱 [http://wiki.secondlife.com/wiki/Linden_Lab_Official:Skill_Gaming_in_Second_Life 技巧性博奕常見問題集]。
+ 無法進入地區。 '[REGION_NAME]' 是個「技巧性博奕」(Skill Gaming)地區,你必須符合一定條件才可進入。 欲知詳情,請參閱 [http://wiki.secondlife.com/wiki/Linden_Lab_Official:Skill_Gaming_in_Second_Life 技巧性博奕常見問題集]。
</message>
</message_set>
<message_set name="progress">
diff --git a/indra/newview/tests/lllogininstance_test.cpp b/indra/newview/tests/lllogininstance_test.cpp
index bff2289a7c..29ca903256 100644
--- a/indra/newview/tests/lllogininstance_test.cpp
+++ b/indra/newview/tests/lllogininstance_test.cpp
@@ -66,6 +66,7 @@ static LLEventStream gTestPump("test_pump");
#include "../llstartup.h"
LLSLURL LLStartUp::sStartSLURL;
LLSLURL& LLStartUp::getStartSLURL() { return sStartSLURL; }
+std::string LLStartUp::getUserId() { return ""; };
#include "lllogin.h"
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index e9112694d9..c778f1e838 100755
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -1803,34 +1803,6 @@ class Linux_x86_64_Manifest(LinuxManifest):
self.path("libalut.so*")
self.path("libopenal.so*")
self.path("libopenal.so", "libvivoxoal.so.1") # vivox's sdk expects this soname
- # KLUDGE: As of 2012-04-11, the 'fontconfig' package installs
- # libfontconfig.so.1.4.4, along with symlinks libfontconfig.so.1
- # and libfontconfig.so. Before we added support for library-file
- # wildcards, though, this self.path() call specifically named
- # libfontconfig.so.1.4.4 WITHOUT also copying the symlinks. When I
- # (nat) changed the call to self.path("libfontconfig.so.*"), we
- # ended up with the libfontconfig.so.1 symlink in the target
- # directory as well. But guess what! At least on Ubuntu 10.04,
- # certain viewer fonts look terrible with libfontconfig.so.1
- # present in the target directory. Removing that symlink suffices
- # to improve them. I suspect that means we actually do better when
- # the viewer fails to find our packaged libfontconfig.so*, falling
- # back on the system one instead -- but diagnosing and fixing that
- # is a bit out of scope for the present project. Meanwhile, this
- # particular wildcard specification gets us exactly what the
- # previous call did, without having to explicitly state the
- # version number.
- self.path("libfontconfig.so.*.*")
-
- # Include libfreetype.so. but have it work as libfontconfig does.
- self.path("libfreetype.so.*.*")
-
- try:
- self.path("libtcmalloc.so*") #formerly called google perf tools
- pass
- except:
- print("tcmalloc files not found, skipping")
- pass
# Vivox runtimes
with self.prefix(src=relpkgdir, dst="bin"):