diff options
333 files changed, 42222 insertions, 20772 deletions
diff --git a/.github/workflows/.gitattributes b/.github/workflows/.gitattributes new file mode 100644 index 0000000000..6dc1cca42a --- /dev/null +++ b/.github/workflows/.gitattributes @@ -0,0 +1 @@ +qatest.yaml -text eol=crlf diff --git a/.github/workflows/qatest.yaml b/.github/workflows/qatest.yaml new file mode 100644 index 0000000000..4892cfaae3 --- /dev/null +++ b/.github/workflows/qatest.yaml @@ -0,0 +1,174 @@ +name: Run QA Test # Runs automated tests on a self-hosted QA machine
+permissions:
+ contents: read
+ #pull-requests: write # maybe need to re-add this later
+
+on:
+ workflow_run:
+ workflows: ["Build"]
+ types:
+ - completed
+
+concurrency:
+ group: qa-test-run
+ cancel-in-progress: true # Cancels any queued job when a new one starts
+
+jobs:
+ debug-workflow:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Debug Workflow Variables
+ env:
+ HEAD_BRANCH: ${{ github.event.workflow_run.head_branch }}
+ HEAD_COMMIT_MSG: ${{ github.event.workflow_run.head_commit.message }}
+ run: |
+ echo "Workflow Conclusion: ${{ github.event.workflow_run.conclusion }}"
+ echo "Workflow Head Branch: $HEAD_BRANCH"
+ echo "Workflow Run ID: ${{ github.event.workflow_run.id }}"
+ echo "Head Commit Message: $HEAD_COMMIT_MSG"
+ echo "GitHub Ref: ${{ github.ref }}"
+ echo "GitHub Ref Name: ${{ github.ref_name }}"
+ echo "GitHub Event Name: ${{ github.event_name }}"
+ echo "GitHub Workflow Name: ${{ github.workflow }}"
+
+ install-viewer-and-run-tests:
+ runs-on: [self-hosted, qa-machine]
+ # Run test only on successful builds of Second_Life_X branches
+ if: >
+ github.event.workflow_run.conclusion == 'success' &&
+ (
+ startsWith(github.event.workflow_run.head_branch, 'Second_Life')
+ )
+
+ steps:
+ - name: Temporarily Allow PowerShell Scripts (Process Scope)
+ run: |
+ Set-ExecutionPolicy RemoteSigned -Scope Process -Force
+
+ - name: Verify viewer-sikulix-main Exists
+ run: |
+ if (-Not (Test-Path -Path 'C:\viewer-sikulix-main')) {
+ Write-Host '⌠Error: viewer-sikulix not found on runner!'
+ exit 1
+ }
+ Write-Host '✅ viewer-sikulix is already available.'
+
+ - name: Fetch & Download Windows Installer Artifact
+ shell: pwsh
+ run: |
+ $BUILD_ID = "${{ github.event.workflow_run.id }}"
+ $ARTIFACTS_URL = "https://api.github.com/repos/secondlife/viewer/actions/runs/$BUILD_ID/artifacts"
+
+ # Fetch the correct artifact URL
+ $response = Invoke-RestMethod -Headers @{Authorization="token ${{ secrets.GITHUB_TOKEN }}" } -Uri $ARTIFACTS_URL
+ $ARTIFACT_NAME = ($response.artifacts | Where-Object { $_.name -eq "Windows-installer" }).archive_download_url
+
+ if (-Not $ARTIFACT_NAME) {
+ Write-Host "⌠Error: Windows-installer artifact not found!"
+ exit 1
+ }
+
+ Write-Host "✅ Artifact found: $ARTIFACT_NAME"
+
+ # Secure download path
+ $DownloadPath = "$env:TEMP\secondlife-build-$BUILD_ID"
+ New-Item -ItemType Directory -Path $DownloadPath -Force | Out-Null
+ $InstallerPath = "$DownloadPath\installer.zip"
+
+ # Download the ZIP
+ Invoke-WebRequest -Uri $ARTIFACT_NAME -Headers @{Authorization="token ${{ secrets.GITHUB_TOKEN }}"} -OutFile $InstallerPath
+
+ # Ensure download succeeded
+ if (-Not (Test-Path $InstallerPath)) {
+ Write-Host "⌠Error: Failed to download Windows-installer.zip"
+ exit 1
+ }
+
+ - name: Extract Installer & Locate Executable
+ shell: pwsh
+ run: |
+ # Explicitly set BUILD_ID again (since it does not appear to persist across steps)
+ $BUILD_ID = "${{ github.event.workflow_run.id }}"
+ $ExtractPath = "$env:TEMP\secondlife-build-$BUILD_ID"
+ $InstallerZip = "$ExtractPath\installer.zip"
+
+ # Print paths for debugging
+ Write-Host "Extract Path: $ExtractPath"
+ Write-Host "Installer ZIP Path: $InstallerZip"
+
+ # Verify ZIP exists before extracting
+ if (-Not (Test-Path $InstallerZip)) {
+ Write-Host "⌠Error: ZIP file not found at $InstallerZip!"
+ exit 1
+ }
+
+ Write-Host "✅ ZIP file exists and is valid. Extracting..."
+
+ Expand-Archive -Path $InstallerZip -DestinationPath $ExtractPath -Force
+
+ # Find installer executable
+ $INSTALLER_PATH = (Get-ChildItem -Path $ExtractPath -Filter '*.exe' -Recurse | Select-Object -First 1).FullName
+
+ if (-Not $INSTALLER_PATH -or $INSTALLER_PATH -eq "") {
+ Write-Host "⌠Error: No installer executable found in the extracted files!"
+ Write-Host "📂 Extracted Files:"
+ Get-ChildItem -Path $ExtractPath -Recurse | Format-Table -AutoSize
+ exit 1
+ }
+
+ Write-Host "✅ Installer found: $INSTALLER_PATH"
+ echo "INSTALLER_PATH=$INSTALLER_PATH" | Out-File -FilePath $env:GITHUB_ENV -Append
+
+ - name: Install Second Life Using Task Scheduler (Bypass UAC)
+ shell: pwsh
+ run: |
+ $action = New-ScheduledTaskAction -Execute "${{ env.INSTALLER_PATH }}" -Argument "/S"
+ $principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount -RunLevel Highest
+ $task = New-ScheduledTask -Action $action -Principal $principal
+ Register-ScheduledTask -TaskName "SilentSLInstaller" -InputObject $task -Force
+ Start-ScheduledTask -TaskName "SilentSLInstaller"
+
+ - name: Wait for Installation to Complete
+ shell: pwsh
+ run: |
+ Write-Host "Waiting for the Second Life installer to finish..."
+ do {
+ Start-Sleep -Seconds 5
+ $installerProcess = Get-Process | Where-Object { $_.Path -eq "${{ env.INSTALLER_PATH }}" }
+ } while ($installerProcess)
+
+ Write-Host "✅ Installation completed!"
+
+ - name: Cleanup Task Scheduler Entry
+ shell: pwsh
+ run: |
+ Unregister-ScheduledTask -TaskName "SilentSLInstaller" -Confirm:$false
+ Write-Host "✅ Task Scheduler entry removed."
+
+ - name: Delete Installer ZIP
+ shell: pwsh
+ run: |
+ # Explicitly set BUILD_ID again
+ $BUILD_ID = "${{ github.event.workflow_run.id }}"
+ $DeletePath = "$env:TEMP\secondlife-build-$BUILD_ID\installer.zip"
+
+ Write-Host "Checking if installer ZIP exists: $DeletePath"
+
+ # Ensure the ZIP file exists before trying to delete it
+ if (Test-Path $DeletePath) {
+ Remove-Item -Path $DeletePath -Force
+ Write-Host "✅ Successfully deleted: $DeletePath"
+ } else {
+ Write-Host "âš ï¸ Warning: ZIP file does not exist, skipping deletion."
+ }
+
+ - name: Run QA Test Script
+ run: |
+ Write-Host "Running QA Test script..."
+ python C:\viewer-sikulix-main\runTests.py
+
+ # - name: Upload Test Results
+ # uses: actions/upload-artifact@v3
+ # with:
+ # name: test-results
+ # path: C:\viewer-sikulix-main\regressionTest\test_results.html
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/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/doxygen/CMakeLists.txt b/indra/doxygen/CMakeLists.txt index 616b5cd09c..354ae7b636 100644 --- a/indra/doxygen/CMakeLists.txt +++ b/indra/doxygen/CMakeLists.txt @@ -1,11 +1,5 @@ # -*- cmake -*- -# cmake_minimum_required should appear before any -# other commands to guarantee full compatibility -# with the version specified -## prior to 2.8, the add_custom_target commands used in setting the version did not work correctly -cmake_minimum_required(VERSION 3.8.0 FATAL_ERROR) - set(ROOT_PROJECT_NAME "SecondLife" CACHE STRING "The root project/makefile/solution name. Defaults to SecondLife.") project(${ROOT_PROJECT_NAME}) diff --git a/indra/llappearance/llpolymorph.cpp b/indra/llappearance/llpolymorph.cpp index 8df8a9726f..5ee6649164 100644 --- a/indra/llappearance/llpolymorph.cpp +++ b/indra/llappearance/llpolymorph.cpp @@ -550,12 +550,12 @@ void LLPolyMorphTarget::apply( ESex avatar_sex ) mLastSex = avatar_sex; - // Check for NaN condition (NaN is detected if a variable doesn't equal itself. - if (mCurWeight != mCurWeight) + // Check for NaN condition + if (llisnan(mCurWeight)) { - mCurWeight = 0.0; + mCurWeight = 0.f; } - if (mLastWeight != mLastWeight) + if (llisnan(mLastWeight)) { mLastWeight = mCurWeight+.001f; } diff --git a/indra/llcommon/indra_constants.h b/indra/llcommon/indra_constants.h index d2de88ff0a..a0394da281 100644 --- a/indra/llcommon/indra_constants.h +++ b/indra/llcommon/indra_constants.h @@ -31,15 +31,15 @@ class LLUUID; -static const F32 REGION_WIDTH_METERS = 256.f; -static const S32 REGION_WIDTH_UNITS = 256; -static const U32 REGION_WIDTH_U32 = 256; +static constexpr F32 REGION_WIDTH_METERS = 256.f; +static constexpr S32 REGION_WIDTH_UNITS = 256; +static constexpr U32 REGION_WIDTH_U32 = 256; -const F32 REGION_HEIGHT_METERS = 4096.f; +constexpr F32 REGION_HEIGHT_METERS = 4096.f; -const F32 DEFAULT_AGENT_DEPTH = 0.45f; -const F32 DEFAULT_AGENT_WIDTH = 0.60f; -const F32 DEFAULT_AGENT_HEIGHT = 1.9f; +constexpr F32 DEFAULT_AGENT_DEPTH = 0.45f; +constexpr F32 DEFAULT_AGENT_WIDTH = 0.60f; +constexpr F32 DEFAULT_AGENT_HEIGHT = 1.9f; enum ETerrainBrushType { @@ -67,112 +67,112 @@ enum EMouseClickType{ // keys // Bit masks for various keyboard modifier keys. -const MASK MASK_NONE = 0x0000; -const MASK MASK_CONTROL = 0x0001; // Mapped to cmd on Macs -const MASK MASK_ALT = 0x0002; -const MASK MASK_SHIFT = 0x0004; -const MASK MASK_NORMALKEYS = 0x0007; // A real mask - only get the bits for normal modifier keys -const MASK MASK_MAC_CONTROL = 0x0008; // Un-mapped Ctrl key on Macs, not used on Windows -const MASK MASK_MODIFIERS = MASK_CONTROL|MASK_ALT|MASK_SHIFT|MASK_MAC_CONTROL; +constexpr MASK MASK_NONE = 0x0000; +constexpr MASK MASK_CONTROL = 0x0001; // Mapped to cmd on Macs +constexpr MASK MASK_ALT = 0x0002; +constexpr MASK MASK_SHIFT = 0x0004; +constexpr MASK MASK_NORMALKEYS = 0x0007; // A real mask - only get the bits for normal modifier keys +constexpr MASK MASK_MAC_CONTROL = 0x0008; // Un-mapped Ctrl key on Macs, not used on Windows +constexpr MASK MASK_MODIFIERS = MASK_CONTROL|MASK_ALT|MASK_SHIFT|MASK_MAC_CONTROL; // Special keys go into >128 -const KEY KEY_SPECIAL = 0x80; // special keys start here -const KEY KEY_RETURN = 0x81; -const KEY KEY_LEFT = 0x82; -const KEY KEY_RIGHT = 0x83; -const KEY KEY_UP = 0x84; -const KEY KEY_DOWN = 0x85; -const KEY KEY_ESCAPE = 0x86; -const KEY KEY_BACKSPACE =0x87; -const KEY KEY_DELETE = 0x88; -const KEY KEY_SHIFT = 0x89; -const KEY KEY_CONTROL = 0x8A; -const KEY KEY_ALT = 0x8B; -const KEY KEY_HOME = 0x8C; -const KEY KEY_END = 0x8D; -const KEY KEY_PAGE_UP = 0x8E; -const KEY KEY_PAGE_DOWN = 0x8F; -const KEY KEY_HYPHEN = 0x90; -const KEY KEY_EQUALS = 0x91; -const KEY KEY_INSERT = 0x92; -const KEY KEY_CAPSLOCK = 0x93; -const KEY KEY_TAB = 0x94; -const KEY KEY_ADD = 0x95; -const KEY KEY_SUBTRACT =0x96; -const KEY KEY_MULTIPLY =0x97; -const KEY KEY_DIVIDE = 0x98; -const KEY KEY_F1 = 0xA1; -const KEY KEY_F2 = 0xA2; -const KEY KEY_F3 = 0xA3; -const KEY KEY_F4 = 0xA4; -const KEY KEY_F5 = 0xA5; -const KEY KEY_F6 = 0xA6; -const KEY KEY_F7 = 0xA7; -const KEY KEY_F8 = 0xA8; -const KEY KEY_F9 = 0xA9; -const KEY KEY_F10 = 0xAA; -const KEY KEY_F11 = 0xAB; -const KEY KEY_F12 = 0xAC; - -const KEY KEY_PAD_UP = 0xC0; -const KEY KEY_PAD_DOWN = 0xC1; -const KEY KEY_PAD_LEFT = 0xC2; -const KEY KEY_PAD_RIGHT = 0xC3; -const KEY KEY_PAD_HOME = 0xC4; -const KEY KEY_PAD_END = 0xC5; -const KEY KEY_PAD_PGUP = 0xC6; -const KEY KEY_PAD_PGDN = 0xC7; -const KEY KEY_PAD_CENTER = 0xC8; // the 5 in the middle -const KEY KEY_PAD_INS = 0xC9; -const KEY KEY_PAD_DEL = 0xCA; -const KEY KEY_PAD_RETURN = 0xCB; -const KEY KEY_PAD_ADD = 0xCC; // not used -const KEY KEY_PAD_SUBTRACT = 0xCD; // not used -const KEY KEY_PAD_MULTIPLY = 0xCE; // not used -const KEY KEY_PAD_DIVIDE = 0xCF; // not used - -const KEY KEY_BUTTON0 = 0xD0; -const KEY KEY_BUTTON1 = 0xD1; -const KEY KEY_BUTTON2 = 0xD2; -const KEY KEY_BUTTON3 = 0xD3; -const KEY KEY_BUTTON4 = 0xD4; -const KEY KEY_BUTTON5 = 0xD5; -const KEY KEY_BUTTON6 = 0xD6; -const KEY KEY_BUTTON7 = 0xD7; -const KEY KEY_BUTTON8 = 0xD8; -const KEY KEY_BUTTON9 = 0xD9; -const KEY KEY_BUTTON10 = 0xDA; -const KEY KEY_BUTTON11 = 0xDB; -const KEY KEY_BUTTON12 = 0xDC; -const KEY KEY_BUTTON13 = 0xDD; -const KEY KEY_BUTTON14 = 0xDE; -const KEY KEY_BUTTON15 = 0xDF; - -const KEY KEY_NONE = 0xFF; // not sent from keyboard. For internal use only. - -const S32 KEY_COUNT = 256; - - -const F32 DEFAULT_WATER_HEIGHT = 20.0f; +constexpr KEY KEY_SPECIAL = 0x80; // special keys start here +constexpr KEY KEY_RETURN = 0x81; +constexpr KEY KEY_LEFT = 0x82; +constexpr KEY KEY_RIGHT = 0x83; +constexpr KEY KEY_UP = 0x84; +constexpr KEY KEY_DOWN = 0x85; +constexpr KEY KEY_ESCAPE = 0x86; +constexpr KEY KEY_BACKSPACE =0x87; +constexpr KEY KEY_DELETE = 0x88; +constexpr KEY KEY_SHIFT = 0x89; +constexpr KEY KEY_CONTROL = 0x8A; +constexpr KEY KEY_ALT = 0x8B; +constexpr KEY KEY_HOME = 0x8C; +constexpr KEY KEY_END = 0x8D; +constexpr KEY KEY_PAGE_UP = 0x8E; +constexpr KEY KEY_PAGE_DOWN = 0x8F; +constexpr KEY KEY_HYPHEN = 0x90; +constexpr KEY KEY_EQUALS = 0x91; +constexpr KEY KEY_INSERT = 0x92; +constexpr KEY KEY_CAPSLOCK = 0x93; +constexpr KEY KEY_TAB = 0x94; +constexpr KEY KEY_ADD = 0x95; +constexpr KEY KEY_SUBTRACT =0x96; +constexpr KEY KEY_MULTIPLY =0x97; +constexpr KEY KEY_DIVIDE = 0x98; +constexpr KEY KEY_F1 = 0xA1; +constexpr KEY KEY_F2 = 0xA2; +constexpr KEY KEY_F3 = 0xA3; +constexpr KEY KEY_F4 = 0xA4; +constexpr KEY KEY_F5 = 0xA5; +constexpr KEY KEY_F6 = 0xA6; +constexpr KEY KEY_F7 = 0xA7; +constexpr KEY KEY_F8 = 0xA8; +constexpr KEY KEY_F9 = 0xA9; +constexpr KEY KEY_F10 = 0xAA; +constexpr KEY KEY_F11 = 0xAB; +constexpr KEY KEY_F12 = 0xAC; + +constexpr KEY KEY_PAD_UP = 0xC0; +constexpr KEY KEY_PAD_DOWN = 0xC1; +constexpr KEY KEY_PAD_LEFT = 0xC2; +constexpr KEY KEY_PAD_RIGHT = 0xC3; +constexpr KEY KEY_PAD_HOME = 0xC4; +constexpr KEY KEY_PAD_END = 0xC5; +constexpr KEY KEY_PAD_PGUP = 0xC6; +constexpr KEY KEY_PAD_PGDN = 0xC7; +constexpr KEY KEY_PAD_CENTER = 0xC8; // the 5 in the middle +constexpr KEY KEY_PAD_INS = 0xC9; +constexpr KEY KEY_PAD_DEL = 0xCA; +constexpr KEY KEY_PAD_RETURN = 0xCB; +constexpr KEY KEY_PAD_ADD = 0xCC; // not used +constexpr KEY KEY_PAD_SUBTRACT = 0xCD; // not used +constexpr KEY KEY_PAD_MULTIPLY = 0xCE; // not used +constexpr KEY KEY_PAD_DIVIDE = 0xCF; // not used + +constexpr KEY KEY_BUTTON0 = 0xD0; +constexpr KEY KEY_BUTTON1 = 0xD1; +constexpr KEY KEY_BUTTON2 = 0xD2; +constexpr KEY KEY_BUTTON3 = 0xD3; +constexpr KEY KEY_BUTTON4 = 0xD4; +constexpr KEY KEY_BUTTON5 = 0xD5; +constexpr KEY KEY_BUTTON6 = 0xD6; +constexpr KEY KEY_BUTTON7 = 0xD7; +constexpr KEY KEY_BUTTON8 = 0xD8; +constexpr KEY KEY_BUTTON9 = 0xD9; +constexpr KEY KEY_BUTTON10 = 0xDA; +constexpr KEY KEY_BUTTON11 = 0xDB; +constexpr KEY KEY_BUTTON12 = 0xDC; +constexpr KEY KEY_BUTTON13 = 0xDD; +constexpr KEY KEY_BUTTON14 = 0xDE; +constexpr KEY KEY_BUTTON15 = 0xDF; + +constexpr KEY KEY_NONE = 0xFF; // not sent from keyboard. For internal use only. + +constexpr S32 KEY_COUNT = 256; + + +constexpr F32 DEFAULT_WATER_HEIGHT = 20.0f; // Maturity ratings for simulators -const U8 SIM_ACCESS_MIN = 0; // Treated as 'unknown', usually ends up being SIM_ACCESS_PG -const U8 SIM_ACCESS_PG = 13; -const U8 SIM_ACCESS_MATURE = 21; -const U8 SIM_ACCESS_ADULT = 42; // Seriously Adult Only -const U8 SIM_ACCESS_DOWN = 254; -const U8 SIM_ACCESS_MAX = SIM_ACCESS_ADULT; +constexpr U8 SIM_ACCESS_MIN = 0; // Treated as 'unknown', usually ends up being SIM_ACCESS_PG +constexpr U8 SIM_ACCESS_PG = 13; +constexpr U8 SIM_ACCESS_MATURE = 21; +constexpr U8 SIM_ACCESS_ADULT = 42; // Seriously Adult Only +constexpr U8 SIM_ACCESS_DOWN = 254; +constexpr U8 SIM_ACCESS_MAX = SIM_ACCESS_ADULT; // attachment constants -const U8 ATTACHMENT_ADD = 0x80; +constexpr U8 ATTACHMENT_ADD = 0x80; // god levels -const U8 GOD_MAINTENANCE = 250; -const U8 GOD_FULL = 200; -const U8 GOD_LIAISON = 150; -const U8 GOD_CUSTOMER_SERVICE = 100; -const U8 GOD_LIKE = 1; -const U8 GOD_NOT = 0; +constexpr U8 GOD_MAINTENANCE = 250; +constexpr U8 GOD_FULL = 200; +constexpr U8 GOD_LIAISON = 150; +constexpr U8 GOD_CUSTOMER_SERVICE = 100; +constexpr U8 GOD_LIKE = 1; +constexpr U8 GOD_NOT = 0; // "agent id" for things that should be done to ALL agents LL_COMMON_API extern const LLUUID LL_UUID_ALL_AGENTS; @@ -239,121 +239,123 @@ LL_COMMON_API extern const LLUUID BLANK_OBJECT_NORMAL; LL_COMMON_API extern const LLUUID BLANK_MATERIAL_ASSET_ID; // radius within which a chat message is fully audible -const F32 CHAT_NORMAL_RADIUS = 20.f; +constexpr F32 CHAT_NORMAL_RADIUS = 20.f; // media commands -const U32 PARCEL_MEDIA_COMMAND_STOP = 0; -const U32 PARCEL_MEDIA_COMMAND_PAUSE = 1; -const U32 PARCEL_MEDIA_COMMAND_PLAY = 2; -const U32 PARCEL_MEDIA_COMMAND_LOOP = 3; -const U32 PARCEL_MEDIA_COMMAND_TEXTURE = 4; -const U32 PARCEL_MEDIA_COMMAND_URL = 5; -const U32 PARCEL_MEDIA_COMMAND_TIME = 6; -const U32 PARCEL_MEDIA_COMMAND_AGENT = 7; -const U32 PARCEL_MEDIA_COMMAND_UNLOAD = 8; -const U32 PARCEL_MEDIA_COMMAND_AUTO_ALIGN = 9; -const U32 PARCEL_MEDIA_COMMAND_TYPE = 10; -const U32 PARCEL_MEDIA_COMMAND_SIZE = 11; -const U32 PARCEL_MEDIA_COMMAND_DESC = 12; -const U32 PARCEL_MEDIA_COMMAND_LOOP_SET = 13; +constexpr U32 PARCEL_MEDIA_COMMAND_STOP = 0; +constexpr U32 PARCEL_MEDIA_COMMAND_PAUSE = 1; +constexpr U32 PARCEL_MEDIA_COMMAND_PLAY = 2; +constexpr U32 PARCEL_MEDIA_COMMAND_LOOP = 3; +constexpr U32 PARCEL_MEDIA_COMMAND_TEXTURE = 4; +constexpr U32 PARCEL_MEDIA_COMMAND_URL = 5; +constexpr U32 PARCEL_MEDIA_COMMAND_TIME = 6; +constexpr U32 PARCEL_MEDIA_COMMAND_AGENT = 7; +constexpr U32 PARCEL_MEDIA_COMMAND_UNLOAD = 8; +constexpr U32 PARCEL_MEDIA_COMMAND_AUTO_ALIGN = 9; +constexpr U32 PARCEL_MEDIA_COMMAND_TYPE = 10; +constexpr U32 PARCEL_MEDIA_COMMAND_SIZE = 11; +constexpr U32 PARCEL_MEDIA_COMMAND_DESC = 12; +constexpr U32 PARCEL_MEDIA_COMMAND_LOOP_SET = 13; const S32 CHAT_CHANNEL_DEBUG = S32_MAX; // agent constants -const U32 CONTROL_AT_POS_INDEX = 0; -const U32 CONTROL_AT_NEG_INDEX = 1; -const U32 CONTROL_LEFT_POS_INDEX = 2; -const U32 CONTROL_LEFT_NEG_INDEX = 3; -const U32 CONTROL_UP_POS_INDEX = 4; -const U32 CONTROL_UP_NEG_INDEX = 5; -const U32 CONTROL_PITCH_POS_INDEX = 6; -const U32 CONTROL_PITCH_NEG_INDEX = 7; -const U32 CONTROL_YAW_POS_INDEX = 8; -const U32 CONTROL_YAW_NEG_INDEX = 9; -const U32 CONTROL_FAST_AT_INDEX = 10; -const U32 CONTROL_FAST_LEFT_INDEX = 11; -const U32 CONTROL_FAST_UP_INDEX = 12; -const U32 CONTROL_FLY_INDEX = 13; -const U32 CONTROL_STOP_INDEX = 14; -const U32 CONTROL_FINISH_ANIM_INDEX = 15; -const U32 CONTROL_STAND_UP_INDEX = 16; -const U32 CONTROL_SIT_ON_GROUND_INDEX = 17; -const U32 CONTROL_MOUSELOOK_INDEX = 18; -const U32 CONTROL_NUDGE_AT_POS_INDEX = 19; -const U32 CONTROL_NUDGE_AT_NEG_INDEX = 20; -const U32 CONTROL_NUDGE_LEFT_POS_INDEX = 21; -const U32 CONTROL_NUDGE_LEFT_NEG_INDEX = 22; -const U32 CONTROL_NUDGE_UP_POS_INDEX = 23; -const U32 CONTROL_NUDGE_UP_NEG_INDEX = 24; -const U32 CONTROL_TURN_LEFT_INDEX = 25; -const U32 CONTROL_TURN_RIGHT_INDEX = 26; -const U32 CONTROL_AWAY_INDEX = 27; -const U32 CONTROL_LBUTTON_DOWN_INDEX = 28; -const U32 CONTROL_LBUTTON_UP_INDEX = 29; -const U32 CONTROL_ML_LBUTTON_DOWN_INDEX = 30; -const U32 CONTROL_ML_LBUTTON_UP_INDEX = 31; -const U32 TOTAL_CONTROLS = 32; - -const U32 AGENT_CONTROL_AT_POS = 0x1 << CONTROL_AT_POS_INDEX; // 0x00000001 -const U32 AGENT_CONTROL_AT_NEG = 0x1 << CONTROL_AT_NEG_INDEX; // 0x00000002 -const U32 AGENT_CONTROL_LEFT_POS = 0x1 << CONTROL_LEFT_POS_INDEX; // 0x00000004 -const U32 AGENT_CONTROL_LEFT_NEG = 0x1 << CONTROL_LEFT_NEG_INDEX; // 0x00000008 -const U32 AGENT_CONTROL_UP_POS = 0x1 << CONTROL_UP_POS_INDEX; // 0x00000010 -const U32 AGENT_CONTROL_UP_NEG = 0x1 << CONTROL_UP_NEG_INDEX; // 0x00000020 -const U32 AGENT_CONTROL_PITCH_POS = 0x1 << CONTROL_PITCH_POS_INDEX; // 0x00000040 -const U32 AGENT_CONTROL_PITCH_NEG = 0x1 << CONTROL_PITCH_NEG_INDEX; // 0x00000080 -const U32 AGENT_CONTROL_YAW_POS = 0x1 << CONTROL_YAW_POS_INDEX; // 0x00000100 -const U32 AGENT_CONTROL_YAW_NEG = 0x1 << CONTROL_YAW_NEG_INDEX; // 0x00000200 - -const U32 AGENT_CONTROL_FAST_AT = 0x1 << CONTROL_FAST_AT_INDEX; // 0x00000400 -const U32 AGENT_CONTROL_FAST_LEFT = 0x1 << CONTROL_FAST_LEFT_INDEX; // 0x00000800 -const U32 AGENT_CONTROL_FAST_UP = 0x1 << CONTROL_FAST_UP_INDEX; // 0x00001000 - -const U32 AGENT_CONTROL_FLY = 0x1 << CONTROL_FLY_INDEX; // 0x00002000 -const U32 AGENT_CONTROL_STOP = 0x1 << CONTROL_STOP_INDEX; // 0x00004000 -const U32 AGENT_CONTROL_FINISH_ANIM = 0x1 << CONTROL_FINISH_ANIM_INDEX; // 0x00008000 -const U32 AGENT_CONTROL_STAND_UP = 0x1 << CONTROL_STAND_UP_INDEX; // 0x00010000 -const U32 AGENT_CONTROL_SIT_ON_GROUND = 0x1 << CONTROL_SIT_ON_GROUND_INDEX; // 0x00020000 -const U32 AGENT_CONTROL_MOUSELOOK = 0x1 << CONTROL_MOUSELOOK_INDEX; // 0x00040000 - -const U32 AGENT_CONTROL_NUDGE_AT_POS = 0x1 << CONTROL_NUDGE_AT_POS_INDEX; // 0x00080000 -const U32 AGENT_CONTROL_NUDGE_AT_NEG = 0x1 << CONTROL_NUDGE_AT_NEG_INDEX; // 0x00100000 -const U32 AGENT_CONTROL_NUDGE_LEFT_POS = 0x1 << CONTROL_NUDGE_LEFT_POS_INDEX; // 0x00200000 -const U32 AGENT_CONTROL_NUDGE_LEFT_NEG = 0x1 << CONTROL_NUDGE_LEFT_NEG_INDEX; // 0x00400000 -const U32 AGENT_CONTROL_NUDGE_UP_POS = 0x1 << CONTROL_NUDGE_UP_POS_INDEX; // 0x00800000 -const U32 AGENT_CONTROL_NUDGE_UP_NEG = 0x1 << CONTROL_NUDGE_UP_NEG_INDEX; // 0x01000000 -const U32 AGENT_CONTROL_TURN_LEFT = 0x1 << CONTROL_TURN_LEFT_INDEX; // 0x02000000 -const U32 AGENT_CONTROL_TURN_RIGHT = 0x1 << CONTROL_TURN_RIGHT_INDEX; // 0x04000000 - -const U32 AGENT_CONTROL_AWAY = 0x1 << CONTROL_AWAY_INDEX; // 0x08000000 - -const U32 AGENT_CONTROL_LBUTTON_DOWN = 0x1 << CONTROL_LBUTTON_DOWN_INDEX; // 0x10000000 -const U32 AGENT_CONTROL_LBUTTON_UP = 0x1 << CONTROL_LBUTTON_UP_INDEX; // 0x20000000 -const U32 AGENT_CONTROL_ML_LBUTTON_DOWN = 0x1 << CONTROL_ML_LBUTTON_DOWN_INDEX; // 0x40000000 -const U32 AGENT_CONTROL_ML_LBUTTON_UP = ((U32)0x1) << CONTROL_ML_LBUTTON_UP_INDEX; // 0x80000000 +constexpr U32 CONTROL_AT_POS_INDEX = 0; +constexpr U32 CONTROL_AT_NEG_INDEX = 1; +constexpr U32 CONTROL_LEFT_POS_INDEX = 2; +constexpr U32 CONTROL_LEFT_NEG_INDEX = 3; +constexpr U32 CONTROL_UP_POS_INDEX = 4; +constexpr U32 CONTROL_UP_NEG_INDEX = 5; +constexpr U32 CONTROL_PITCH_POS_INDEX = 6; +constexpr U32 CONTROL_PITCH_NEG_INDEX = 7; +constexpr U32 CONTROL_YAW_POS_INDEX = 8; +constexpr U32 CONTROL_YAW_NEG_INDEX = 9; +constexpr U32 CONTROL_FAST_AT_INDEX = 10; +constexpr U32 CONTROL_FAST_LEFT_INDEX = 11; +constexpr U32 CONTROL_FAST_UP_INDEX = 12; +constexpr U32 CONTROL_FLY_INDEX = 13; +constexpr U32 CONTROL_STOP_INDEX = 14; +constexpr U32 CONTROL_FINISH_ANIM_INDEX = 15; +constexpr U32 CONTROL_STAND_UP_INDEX = 16; +constexpr U32 CONTROL_SIT_ON_GROUND_INDEX = 17; +constexpr U32 CONTROL_MOUSELOOK_INDEX = 18; +constexpr U32 CONTROL_NUDGE_AT_POS_INDEX = 19; +constexpr U32 CONTROL_NUDGE_AT_NEG_INDEX = 20; +constexpr U32 CONTROL_NUDGE_LEFT_POS_INDEX = 21; +constexpr U32 CONTROL_NUDGE_LEFT_NEG_INDEX = 22; +constexpr U32 CONTROL_NUDGE_UP_POS_INDEX = 23; +constexpr U32 CONTROL_NUDGE_UP_NEG_INDEX = 24; +constexpr U32 CONTROL_TURN_LEFT_INDEX = 25; +constexpr U32 CONTROL_TURN_RIGHT_INDEX = 26; +constexpr U32 CONTROL_AWAY_INDEX = 27; +constexpr U32 CONTROL_LBUTTON_DOWN_INDEX = 28; +constexpr U32 CONTROL_LBUTTON_UP_INDEX = 29; +constexpr U32 CONTROL_ML_LBUTTON_DOWN_INDEX = 30; +constexpr U32 CONTROL_ML_LBUTTON_UP_INDEX = 31; +constexpr U32 TOTAL_CONTROLS = 32; + +constexpr U32 AGENT_CONTROL_AT_POS = 0x1 << CONTROL_AT_POS_INDEX; // 0x00000001 +constexpr U32 AGENT_CONTROL_AT_NEG = 0x1 << CONTROL_AT_NEG_INDEX; // 0x00000002 +constexpr U32 AGENT_CONTROL_LEFT_POS = 0x1 << CONTROL_LEFT_POS_INDEX; // 0x00000004 +constexpr U32 AGENT_CONTROL_LEFT_NEG = 0x1 << CONTROL_LEFT_NEG_INDEX; // 0x00000008 +constexpr U32 AGENT_CONTROL_UP_POS = 0x1 << CONTROL_UP_POS_INDEX; // 0x00000010 +constexpr U32 AGENT_CONTROL_UP_NEG = 0x1 << CONTROL_UP_NEG_INDEX; // 0x00000020 +constexpr U32 AGENT_CONTROL_PITCH_POS = 0x1 << CONTROL_PITCH_POS_INDEX; // 0x00000040 +constexpr U32 AGENT_CONTROL_PITCH_NEG = 0x1 << CONTROL_PITCH_NEG_INDEX; // 0x00000080 +constexpr U32 AGENT_CONTROL_YAW_POS = 0x1 << CONTROL_YAW_POS_INDEX; // 0x00000100 +constexpr U32 AGENT_CONTROL_YAW_NEG = 0x1 << CONTROL_YAW_NEG_INDEX; // 0x00000200 + +constexpr U32 AGENT_CONTROL_FAST_AT = 0x1 << CONTROL_FAST_AT_INDEX; // 0x00000400 +constexpr U32 AGENT_CONTROL_FAST_LEFT = 0x1 << CONTROL_FAST_LEFT_INDEX; // 0x00000800 +constexpr U32 AGENT_CONTROL_FAST_UP = 0x1 << CONTROL_FAST_UP_INDEX; // 0x00001000 + +constexpr U32 AGENT_CONTROL_FLY = 0x1 << CONTROL_FLY_INDEX; // 0x00002000 +constexpr U32 AGENT_CONTROL_STOP = 0x1 << CONTROL_STOP_INDEX; // 0x00004000 +constexpr U32 AGENT_CONTROL_FINISH_ANIM = 0x1 << CONTROL_FINISH_ANIM_INDEX; // 0x00008000 +constexpr U32 AGENT_CONTROL_STAND_UP = 0x1 << CONTROL_STAND_UP_INDEX; // 0x00010000 +constexpr U32 AGENT_CONTROL_SIT_ON_GROUND = 0x1 << CONTROL_SIT_ON_GROUND_INDEX; // 0x00020000 +constexpr U32 AGENT_CONTROL_MOUSELOOK = 0x1 << CONTROL_MOUSELOOK_INDEX; // 0x00040000 + +constexpr U32 AGENT_CONTROL_NUDGE_AT_POS = 0x1 << CONTROL_NUDGE_AT_POS_INDEX; // 0x00080000 +constexpr U32 AGENT_CONTROL_NUDGE_AT_NEG = 0x1 << CONTROL_NUDGE_AT_NEG_INDEX; // 0x00100000 +constexpr U32 AGENT_CONTROL_NUDGE_LEFT_POS = 0x1 << CONTROL_NUDGE_LEFT_POS_INDEX; // 0x00200000 +constexpr U32 AGENT_CONTROL_NUDGE_LEFT_NEG = 0x1 << CONTROL_NUDGE_LEFT_NEG_INDEX; // 0x00400000 +constexpr U32 AGENT_CONTROL_NUDGE_UP_POS = 0x1 << CONTROL_NUDGE_UP_POS_INDEX; // 0x00800000 +constexpr U32 AGENT_CONTROL_NUDGE_UP_NEG = 0x1 << CONTROL_NUDGE_UP_NEG_INDEX; // 0x01000000 +constexpr U32 AGENT_CONTROL_TURN_LEFT = 0x1 << CONTROL_TURN_LEFT_INDEX; // 0x02000000 +constexpr U32 AGENT_CONTROL_TURN_RIGHT = 0x1 << CONTROL_TURN_RIGHT_INDEX; // 0x04000000 + +constexpr U32 AGENT_CONTROL_AWAY = 0x1 << CONTROL_AWAY_INDEX; // 0x08000000 + +constexpr U32 AGENT_CONTROL_LBUTTON_DOWN = 0x1 << CONTROL_LBUTTON_DOWN_INDEX; // 0x10000000 +constexpr U32 AGENT_CONTROL_LBUTTON_UP = 0x1 << CONTROL_LBUTTON_UP_INDEX; // 0x20000000 +constexpr U32 AGENT_CONTROL_ML_LBUTTON_DOWN = 0x1 << CONTROL_ML_LBUTTON_DOWN_INDEX; // 0x40000000 +constexpr U32 AGENT_CONTROL_ML_LBUTTON_UP = ((U32)0x1) << CONTROL_ML_LBUTTON_UP_INDEX; // 0x80000000 // move these up so that we can hide them in "State" for object updates // (for now) -const U32 AGENT_ATTACH_OFFSET = 4; -const U32 AGENT_ATTACH_MASK = 0xf << AGENT_ATTACH_OFFSET; +constexpr U32 AGENT_ATTACH_OFFSET = 4; +constexpr U32 AGENT_ATTACH_MASK = 0xf << AGENT_ATTACH_OFFSET; // RN: this method swaps the upper and lower nibbles to maintain backward // compatibility with old objects that only used the upper nibble #define ATTACHMENT_ID_FROM_STATE(state) ((S32)((((U8)state & AGENT_ATTACH_MASK) >> 4) | (((U8)state & ~AGENT_ATTACH_MASK) << 4))) // DO NOT CHANGE THE SEQUENCE OF THIS LIST!! -const U8 CLICK_ACTION_NONE = 0; -const U8 CLICK_ACTION_TOUCH = 0; -const U8 CLICK_ACTION_SIT = 1; -const U8 CLICK_ACTION_BUY = 2; -const U8 CLICK_ACTION_PAY = 3; -const U8 CLICK_ACTION_OPEN = 4; -const U8 CLICK_ACTION_PLAY = 5; -const U8 CLICK_ACTION_OPEN_MEDIA = 6; -const U8 CLICK_ACTION_ZOOM = 7; -const U8 CLICK_ACTION_DISABLED = 8; -const U8 CLICK_ACTION_IGNORE = 9; +constexpr U8 CLICK_ACTION_NONE = 0; +constexpr U8 CLICK_ACTION_TOUCH = 0; +constexpr U8 CLICK_ACTION_SIT = 1; +constexpr U8 CLICK_ACTION_BUY = 2; +constexpr U8 CLICK_ACTION_PAY = 3; +constexpr U8 CLICK_ACTION_OPEN = 4; +constexpr U8 CLICK_ACTION_PLAY = 5; +constexpr U8 CLICK_ACTION_OPEN_MEDIA = 6; +constexpr U8 CLICK_ACTION_ZOOM = 7; +constexpr U8 CLICK_ACTION_DISABLED = 8; +constexpr U8 CLICK_ACTION_IGNORE = 9; // DO NOT CHANGE THE SEQUENCE OF THIS LIST!! +constexpr U32 BEACON_SHOW_MAP = 0x0001; +constexpr U32 BEACON_FOCUS_MAP = 0x0002; #endif diff --git a/indra/llcommon/lldefs.h b/indra/llcommon/lldefs.h index 2fbb26dc1a..232987da14 100644 --- a/indra/llcommon/lldefs.h +++ b/indra/llcommon/lldefs.h @@ -171,13 +171,13 @@ constexpr U32 MAXADDRSTR = 17; // 123.567.901.345 = 15 chars + \0 + // recursion tail template <typename T> -inline auto llmax(T data) +constexpr auto llmax(T data) { return data; } template <typename T0, typename T1, typename... Ts> -inline auto llmax(T0 d0, T1 d1, Ts... rest) +constexpr auto llmax(T0 d0, T1 d1, Ts... rest) { auto maxrest = llmax(d1, rest...); return (d0 > maxrest)? d0 : maxrest; @@ -185,20 +185,20 @@ inline auto llmax(T0 d0, T1 d1, Ts... rest) // recursion tail template <typename T> -inline auto llmin(T data) +constexpr auto llmin(T data) { return data; } template <typename T0, typename T1, typename... Ts> -inline auto llmin(T0 d0, T1 d1, Ts... rest) +constexpr auto llmin(T0 d0, T1 d1, Ts... rest) { auto minrest = llmin(d1, rest...); return (d0 < minrest) ? d0 : minrest; } template <typename A, typename MIN, typename MAX> -inline A llclamp(A a, MIN minval, MAX maxval) +constexpr A llclamp(A a, MIN minval, MAX maxval) { A aminval{ static_cast<A>(minval) }, amaxval{ static_cast<A>(maxval) }; if ( a < aminval ) @@ -213,13 +213,13 @@ inline A llclamp(A a, MIN minval, MAX maxval) } template <class LLDATATYPE> -inline LLDATATYPE llclampf(LLDATATYPE a) +constexpr LLDATATYPE llclampf(LLDATATYPE a) { return llmin(llmax(a, LLDATATYPE(0)), LLDATATYPE(1)); } template <class LLDATATYPE> -inline LLDATATYPE llclampb(LLDATATYPE a) +constexpr LLDATATYPE llclampb(LLDATATYPE a) { return llmin(llmax(a, LLDATATYPE(0)), LLDATATYPE(255)); } diff --git a/indra/llcommon/llsdutil.h b/indra/llcommon/llsdutil.h index 38bbe19ddd..c31030c5ea 100644 --- a/indra/llcommon/llsdutil.h +++ b/indra/llcommon/llsdutil.h @@ -553,6 +553,61 @@ LLSD shallow(LLSD value, LLSD filter=LLSD()) { return llsd_shallow(value, filter } // namespace llsd +/***************************************************************************** + * 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/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/llcommon/stdtypes.h b/indra/llcommon/stdtypes.h index b40a718593..78d5e50e4b 100644 --- a/indra/llcommon/stdtypes.h +++ b/indra/llcommon/stdtypes.h @@ -169,14 +169,14 @@ private: FROM mValue; public: - narrow(FROM value): mValue(value) {} + constexpr narrow(FROM value): mValue(value) {} /*---------------------- Narrowing unsigned to signed ----------------------*/ template <typename TO, typename std::enable_if<std::is_unsigned<FROM>::value && std::is_signed<TO>::value, bool>::type = true> - inline + constexpr operator TO() const { // The reason we skip the @@ -194,7 +194,7 @@ public: typename std::enable_if<! (std::is_unsigned<FROM>::value && std::is_signed<TO>::value), bool>::type = true> - inline + constexpr operator TO() const { // two different assert()s so we can tell which condition failed diff --git a/indra/llinventory/llparcel.h b/indra/llinventory/llparcel.h index 67d713db1f..759638b956 100644 --- a/indra/llinventory/llparcel.h +++ b/indra/llinventory/llparcel.h @@ -262,6 +262,8 @@ public: void setMediaURLResetTimer(F32 time); virtual void setLocalID(S32 local_id); + void setRegionID(const LLUUID& id) { mRegionID = id; } + const LLUUID& getRegionID() const { return mRegionID; } // blow away all the extra stuff lurking in parcels, including urls, access lists, etc void clearParcel(); @@ -651,6 +653,7 @@ public: S32 mLocalID; LLUUID mBanListTransactionID; LLUUID mAccessListTransactionID; + LLUUID mRegionID; std::map<LLUUID,LLAccessEntry> mAccessList; std::map<LLUUID,LLAccessEntry> mBanList; std::map<LLUUID,LLAccessEntry> mTempBanList; 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/llmath/llcamera.h b/indra/llmath/llcamera.h index b6e0e4a2be..6201761c46 100644 --- a/indra/llmath/llcamera.h +++ b/indra/llmath/llcamera.h @@ -33,23 +33,23 @@ #include "llplane.h" #include "llvector4a.h" -const F32 DEFAULT_FIELD_OF_VIEW = 60.f * DEG_TO_RAD; -const F32 DEFAULT_ASPECT_RATIO = 640.f / 480.f; -const F32 DEFAULT_NEAR_PLANE = 0.25f; -const F32 DEFAULT_FAR_PLANE = 64.f; // far reaches across two horizontal, not diagonal, regions +constexpr F32 DEFAULT_FIELD_OF_VIEW = 60.f * DEG_TO_RAD; +constexpr F32 DEFAULT_ASPECT_RATIO = 640.f / 480.f; +constexpr F32 DEFAULT_NEAR_PLANE = 0.25f; +constexpr F32 DEFAULT_FAR_PLANE = 64.f; // far reaches across two horizontal, not diagonal, regions -const F32 MAX_ASPECT_RATIO = 50.0f; -const F32 MAX_NEAR_PLANE = 1023.9f; // Clamp the near plane just before the skybox ends -const F32 MAX_FAR_PLANE = 100000.0f; //1000000.0f; // Max allowed. Not good Z precision though. -const F32 MAX_FAR_CLIP = 512.0f; +constexpr F32 MAX_ASPECT_RATIO = 50.0f; +constexpr F32 MAX_NEAR_PLANE = 1023.9f; // Clamp the near plane just before the skybox ends +constexpr F32 MAX_FAR_PLANE = 100000.0f; //1000000.0f; // Max allowed. Not good Z precision though. +constexpr F32 MAX_FAR_CLIP = 512.0f; -const F32 MIN_ASPECT_RATIO = 0.02f; -const F32 MIN_NEAR_PLANE = 0.1f; -const F32 MIN_FAR_PLANE = 0.2f; +constexpr F32 MIN_ASPECT_RATIO = 0.02f; +constexpr F32 MIN_NEAR_PLANE = 0.1f; +constexpr F32 MIN_FAR_PLANE = 0.2f; // Min/Max FOV values for square views. Call getMin/MaxView to get extremes based on current aspect ratio. -static const F32 MIN_FIELD_OF_VIEW = 5.0f * DEG_TO_RAD; -static const F32 MAX_FIELD_OF_VIEW = 175.f * DEG_TO_RAD; +constexpr F32 MIN_FIELD_OF_VIEW = 5.0f * DEG_TO_RAD; +constexpr F32 MAX_FIELD_OF_VIEW = 175.f * DEG_TO_RAD; // An LLCamera is an LLCoorFrame with a view frustum. // This means that it has several methods for moving it around diff --git a/indra/llmath/llcoordframe.cpp b/indra/llmath/llcoordframe.cpp index 4d6276b2cd..15c9f6ff3f 100644 --- a/indra/llmath/llcoordframe.cpp +++ b/indra/llmath/llcoordframe.cpp @@ -26,7 +26,6 @@ #include "linden_common.h" -//#include "vmath.h" #include "v3math.h" #include "m3math.h" #include "v4math.h" diff --git a/indra/llmath/llcoordframe.h b/indra/llmath/llcoordframe.h index aaa701f792..458f6132c9 100644 --- a/indra/llmath/llcoordframe.h +++ b/indra/llmath/llcoordframe.h @@ -61,7 +61,7 @@ public: //LLCoordFrame(const F32 *origin, const F32 *rotation); // Assumes "origin" is 1x3 and "rotation" is 1x9 array //LLCoordFrame(const F32 *origin_and_rotation); // Assumes "origin_and_rotation" is 1x12 array - bool isFinite() { return mOrigin.isFinite() && mXAxis.isFinite() && mYAxis.isFinite() && mZAxis.isFinite(); } + bool isFinite() const { return mOrigin.isFinite() && mXAxis.isFinite() && mYAxis.isFinite() && mZAxis.isFinite(); } void reset(); void resetAxes(); diff --git a/indra/llmath/llline.h b/indra/llmath/llline.h index 33c1eb61a4..e98e173d1f 100644 --- a/indra/llmath/llline.h +++ b/indra/llmath/llline.h @@ -33,7 +33,7 @@ #include "stdtypes.h" #include "v3math.h" -const F32 DEFAULT_INTERSECTION_ERROR = 0.000001f; +constexpr F32 DEFAULT_INTERSECTION_ERROR = 0.000001f; class LLLine { diff --git a/indra/llmath/llmath.h b/indra/llmath/llmath.h index a72993a21a..7f51de7820 100644 --- a/indra/llmath/llmath.h +++ b/indra/llmath/llmath.h @@ -39,18 +39,8 @@ // llcommon depend on llmath. #include "is_approx_equal_fraction.h" -// work around for Windows & older gcc non-standard function names. -#if LL_WINDOWS -#include <float.h> -#define llisnan(val) _isnan(val) -#define llfinite(val) _finite(val) -#elif (LL_LINUX && __GNUC__ <= 2) -#define llisnan(val) isnan(val) -#define llfinite(val) isfinite(val) -#else -#define llisnan(val) std::isnan(val) -#define llfinite(val) std::isfinite(val) -#endif +#define llisnan(val) std::isnan(val) +#define llfinite(val) std::isfinite(val) // Single Precision Floating Point Routines // (There used to be more defined here, but they appeared to be redundant and @@ -89,7 +79,7 @@ constexpr F32 GIMBAL_THRESHOLD = 0.000436f; // sets the gimballock threshold 0 constexpr F32 FP_MAG_THRESHOLD = 0.0000001f; // TODO: Replace with logic like is_approx_equal -inline bool is_approx_zero( F32 f ) { return (-F_APPROXIMATELY_ZERO < f) && (f < F_APPROXIMATELY_ZERO); } +constexpr bool is_approx_zero(F32 f) { return (-F_APPROXIMATELY_ZERO < f) && (f < F_APPROXIMATELY_ZERO); } // These functions work by interpreting sign+exp+mantissa as an unsigned // integer. @@ -148,33 +138,17 @@ inline F64 llabs(const F64 a) return F64(std::fabs(a)); } -inline S32 lltrunc( F32 f ) +constexpr S32 lltrunc(F32 f) { -#if LL_WINDOWS && !defined( __INTEL_COMPILER ) && (ADDRESS_SIZE == 32) - // Avoids changing the floating point control word. - // Add or subtract 0.5 - epsilon and then round - const static U32 zpfp[] = { 0xBEFFFFFF, 0x3EFFFFFF }; - S32 result; - __asm { - fld f - mov eax, f - shr eax, 29 - and eax, 4 - fadd dword ptr [zpfp + eax] - fistp result - } - return result; -#else - return (S32)f; -#endif + return narrow(f); } -inline S32 lltrunc( F64 f ) +constexpr S32 lltrunc(F64 f) { - return (S32)f; + return narrow(f); } -inline S32 llfloor( F32 f ) +inline S32 llfloor(F32 f) { #if LL_WINDOWS && !defined( __INTEL_COMPILER ) && (ADDRESS_SIZE == 32) // Avoids changing the floating point control word. @@ -284,7 +258,7 @@ constexpr F32 FAST_MAG_BETA = 0.397824734759f; //constexpr F32 FAST_MAG_ALPHA = 0.948059448969f; //constexpr F32 FAST_MAG_BETA = 0.392699081699f; -inline F32 fastMagnitude(F32 a, F32 b) +constexpr F32 fastMagnitude(F32 a, F32 b) { a = (a > 0) ? a : -a; b = (b > 0) ? b : -b; @@ -342,7 +316,7 @@ inline F32 llfastpow(const F32 x, const F32 y) } -inline F32 snap_to_sig_figs(F32 foo, S32 sig_figs) +constexpr F32 snap_to_sig_figs(F32 foo, S32 sig_figs) { // compute the power of ten F32 bar = 1.f; @@ -358,16 +332,9 @@ inline F32 snap_to_sig_figs(F32 foo, S32 sig_figs) return new_foo; } -#ifdef __GNUC__ using std::lerp; -#else -inline F32 lerp(F32 a, F32 b, F32 u) -{ - return a + ((b - a) * u); -} -#endif -inline F32 lerp2d(F32 x00, F32 x01, F32 x10, F32 x11, F32 u, F32 v) +constexpr F32 lerp2d(F32 x00, F32 x01, F32 x10, F32 x11, F32 u, F32 v) { F32 a = x00 + (x01-x00)*u; F32 b = x10 + (x11-x10)*u; @@ -375,17 +342,17 @@ inline F32 lerp2d(F32 x00, F32 x01, F32 x10, F32 x11, F32 u, F32 v) return r; } -inline F32 ramp(F32 x, F32 a, F32 b) +constexpr F32 ramp(F32 x, F32 a, F32 b) { return (a == b) ? 0.0f : ((a - x) / (a - b)); } -inline F32 rescale(F32 x, F32 x1, F32 x2, F32 y1, F32 y2) +constexpr F32 rescale(F32 x, F32 x1, F32 x2, F32 y1, F32 y2) { return lerp(y1, y2, ramp(x, x1, x2)); } -inline F32 clamp_rescale(F32 x, F32 x1, F32 x2, F32 y1, F32 y2) +constexpr F32 clamp_rescale(F32 x, F32 x1, F32 x2, F32 y1, F32 y2) { if (y1 < y2) { @@ -398,7 +365,7 @@ inline F32 clamp_rescale(F32 x, F32 x1, F32 x2, F32 y1, F32 y2) } -inline F32 cubic_step( F32 x, F32 x0, F32 x1, F32 s0, F32 s1 ) +constexpr F32 cubic_step( F32 x, F32 x0, F32 x1, F32 s0, F32 s1 ) { if (x <= x0) return s0; @@ -411,14 +378,14 @@ inline F32 cubic_step( F32 x, F32 x0, F32 x1, F32 s0, F32 s1 ) return s0 + (s1 - s0) * (f * f) * (3.0f - 2.0f * f); } -inline F32 cubic_step( F32 x ) +constexpr F32 cubic_step( F32 x ) { x = llclampf(x); return (x * x) * (3.0f - 2.0f * x); } -inline F32 quadratic_step( F32 x, F32 x0, F32 x1, F32 s0, F32 s1 ) +constexpr F32 quadratic_step( F32 x, F32 x0, F32 x1, F32 s0, F32 s1 ) { if (x <= x0) return s0; @@ -432,7 +399,7 @@ inline F32 quadratic_step( F32 x, F32 x0, F32 x1, F32 s0, F32 s1 ) return (s0 * (1.f - f_squared)) + ((s1 - s0) * f_squared); } -inline F32 llsimple_angle(F32 angle) +constexpr F32 llsimple_angle(F32 angle) { while(angle <= -F_PI) angle += F_TWO_PI; @@ -442,7 +409,7 @@ inline F32 llsimple_angle(F32 angle) } //SDK - Renamed this to get_lower_power_two, since this is what this actually does. -inline U32 get_lower_power_two(U32 val, U32 max_power_two) +constexpr U32 get_lower_power_two(U32 val, U32 max_power_two) { if(!max_power_two) { @@ -464,7 +431,7 @@ inline U32 get_lower_power_two(U32 val, U32 max_power_two) // number of digits, then add one. We subtract 1 initially to handle // the case where the number passed in is actually a power of two. // WARNING: this only works with 32 bit ints. -inline U32 get_next_power_two(U32 val, U32 max_power_two) +constexpr U32 get_next_power_two(U32 val, U32 max_power_two) { if(!max_power_two) { @@ -490,7 +457,7 @@ inline U32 get_next_power_two(U32 val, U32 max_power_two) //get the gaussian value given the linear distance from axis x and guassian value o inline F32 llgaussian(F32 x, F32 o) { - return 1.f/(F_SQRT_TWO_PI*o)*powf(F_E, -(x*x)/(2*o*o)); + return 1.f/(F_SQRT_TWO_PI*o)*powf(F_E, -(x*x)/(2.f*o*o)); } //helper function for removing outliers @@ -543,7 +510,8 @@ inline void ll_remove_outliers(std::vector<VEC_TYPE>& data, F32 k) // Note: in our code, values labeled as sRGB are ALWAYS gamma corrected linear values, NOT linear values with monitor gamma applied // Note: stored color values should always be gamma corrected linear (i.e. the values returned from an on-screen color swatch) // Note: DO NOT cache the conversion. This leads to error prone synchronization and is actually slower in the typical case due to cache misses -inline float linearTosRGB(const float val) { +inline float linearTosRGB(const float val) +{ if (val < 0.0031308f) { return val * 12.92f; } @@ -558,7 +526,8 @@ inline float linearTosRGB(const float val) { // Note: Stored color values should generally be gamma corrected sRGB. // If you're serializing the return value of this function, you're probably doing it wrong. // Note: DO NOT cache the conversion. This leads to error prone synchronization and is actually slower in the typical case due to cache misses. -inline float sRGBtoLinear(const float val) { +inline float sRGBtoLinear(const float val) +{ if (val < 0.04045f) { return val / 12.92f; } diff --git a/indra/llmath/llquaternion.cpp b/indra/llmath/llquaternion.cpp index aefb82b2f0..1ab3a73d79 100644 --- a/indra/llmath/llquaternion.cpp +++ b/indra/llmath/llquaternion.cpp @@ -30,7 +30,6 @@ #include "llquaternion.h" -//#include "vmath.h" #include "v3math.h" #include "v3dmath.h" #include "v4math.h" diff --git a/indra/llmath/llvolume.cpp b/indra/llmath/llvolume.cpp index 5bc1c3d742..d56891cab3 100644 --- a/indra/llmath/llvolume.cpp +++ b/indra/llmath/llvolume.cpp @@ -1294,10 +1294,11 @@ void LLPath::genNGon(const LLPathParams& params, S32 sides, F32 startOff, F32 en c = cos(ang)*lerp(radius_start, radius_end, t); - pt->mPos.set(0 + lerp(0,params.getShear().mV[0],s) + pt->mPos.set(0 + lerp(0.f, params.getShear().mV[VX], s) + lerp(-skew ,skew, t) * 0.5f, - c + lerp(0,params.getShear().mV[1],s), + c + lerp(0.f, params.getShear().mV[VY], s), s); + pt->mScale.set(hole_x * lerp(taper_x_begin, taper_x_end, t), hole_y * lerp(taper_y_begin, taper_y_end, t), 0,1); @@ -1327,9 +1328,9 @@ void LLPath::genNGon(const LLPathParams& params, S32 sides, F32 startOff, F32 en c = cos(ang)*lerp(radius_start, radius_end, t); s = sin(ang)*lerp(radius_start, radius_end, t); - pt->mPos.set(0 + lerp(0,params.getShear().mV[0],s) + pt->mPos.set(0 + lerp(0.f, params.getShear().mV[VX], s) + lerp(-skew ,skew, t) * 0.5f, - c + lerp(0,params.getShear().mV[1],s), + c + lerp(0.f, params.getShear().mV[VY], s), s); pt->mScale.set(hole_x * lerp(taper_x_begin, taper_x_end, t), @@ -1354,9 +1355,9 @@ void LLPath::genNGon(const LLPathParams& params, S32 sides, F32 startOff, F32 en c = cos(ang)*lerp(radius_start, radius_end, t); s = sin(ang)*lerp(radius_start, radius_end, t); - pt->mPos.set(0 + lerp(0,params.getShear().mV[0],s) + pt->mPos.set(0 + lerp(0.f, params.getShear().mV[VX], s) + lerp(-skew ,skew, t) * 0.5f, - c + lerp(0,params.getShear().mV[1],s), + c + lerp(0.f, params.getShear().mV[VY], s), s); pt->mScale.set(hole_x * lerp(taper_x_begin, taper_x_end, t), hole_y * lerp(taper_y_begin, taper_y_end, t), @@ -1494,8 +1495,8 @@ bool LLPath::generate(const LLPathParams& params, F32 detail, S32 split, for (S32 i=0;i<np;i++) { F32 t = lerp(params.getBegin(),params.getEnd(),(F32)i * mStep); - mPath[i].mPos.set(lerp(0,params.getShear().mV[0],t), - lerp(0,params.getShear().mV[1],t), + mPath[i].mPos.set(lerp(0.f, params.getShear().mV[VX], t), + lerp(0.f ,params.getShear().mV[VY], t), t - 0.5f); LLQuaternion quat; quat.setQuat(lerp(F_PI * params.getTwistBegin(),F_PI * params.getTwist(),t),0,0,1); @@ -1559,10 +1560,10 @@ bool LLPath::generate(const LLPathParams& params, F32 detail, S32 split, { F32 t = (F32)i * mStep; mPath[i].mPos.set(0, - lerp(0, -sin(F_PI*params.getTwist()*t)*0.5f,t), - lerp(-0.5f, cos(F_PI*params.getTwist()*t)*0.5f,t)); - mPath[i].mScale.set(lerp(1,params.getScale().mV[0],t), - lerp(1,params.getScale().mV[1],t), 0,1); + lerp(0.f, -sin(F_PI*params.getTwist() * t) * 0.5f, t), + lerp(-0.5f, cos(F_PI*params.getTwist() * t) * 0.5f, t)); + mPath[i].mScale.set(lerp(1.f, params.getScale().mV[VX], t), + lerp(1.f, params.getScale().mV[VY], t), 0.f, 1.f); mPath[i].mTexT = t; LLQuaternion quat; quat.setQuat(F_PI * params.getTwist() * t,1,0,0); diff --git a/indra/llmath/llvolume.h b/indra/llmath/llvolume.h index 27c5fc5a49..3496928f7b 100644 --- a/indra/llmath/llvolume.h +++ b/indra/llmath/llvolume.h @@ -45,7 +45,6 @@ class LLVolumeOctree; #include "lluuid.h" #include "v4color.h" -//#include "vmath.h" #include "v2math.h" #include "v3math.h" #include "v3dmath.h" diff --git a/indra/llmath/m3math.cpp b/indra/llmath/m3math.cpp index 472d340af5..3c2097f947 100644 --- a/indra/llmath/m3math.cpp +++ b/indra/llmath/m3math.cpp @@ -26,7 +26,6 @@ #include "linden_common.h" -//#include "vmath.h" #include "v3math.h" #include "v3dmath.h" #include "v4math.h" diff --git a/indra/llmath/m4math.cpp b/indra/llmath/m4math.cpp index c46ee587cb..a9853fe7e9 100644 --- a/indra/llmath/m4math.cpp +++ b/indra/llmath/m4math.cpp @@ -26,7 +26,6 @@ #include "linden_common.h" -//#include "vmath.h" #include "v3math.h" #include "v4math.h" #include "m4math.h" diff --git a/indra/llmath/v2math.cpp b/indra/llmath/v2math.cpp index 4649e13376..59e6d947ca 100644 --- a/indra/llmath/v2math.cpp +++ b/indra/llmath/v2math.cpp @@ -26,7 +26,6 @@ #include "linden_common.h" -//#include "vmath.h" #include "v2math.h" #include "v3math.h" #include "v4math.h" @@ -47,8 +46,8 @@ bool LLVector2::abs() { bool ret{ false }; - if (mV[0] < 0.f) { mV[0] = -mV[0]; ret = true; } - if (mV[1] < 0.f) { mV[1] = -mV[1]; ret = true; } + if (mV[VX] < 0.f) { mV[VX] = -mV[VX]; ret = true; } + if (mV[VY] < 0.f) { mV[VY] = -mV[VY]; ret = true; } return ret; } @@ -67,14 +66,14 @@ F32 angle_between(const LLVector2& a, const LLVector2& b) return angle; } -bool are_parallel(const LLVector2 &a, const LLVector2 &b, float epsilon) +bool are_parallel(const LLVector2& a, const LLVector2& b, F32 epsilon) { LLVector2 an = a; LLVector2 bn = b; an.normVec(); bn.normVec(); F32 dot = an * bn; - if ( (1.0f - fabs(dot)) < epsilon) + if ((1.0f - fabs(dot)) < epsilon) { return true; } @@ -82,28 +81,28 @@ bool are_parallel(const LLVector2 &a, const LLVector2 &b, float epsilon) } -F32 dist_vec(const LLVector2 &a, const LLVector2 &b) +F32 dist_vec(const LLVector2& a, const LLVector2& b) { - F32 x = a.mV[0] - b.mV[0]; - F32 y = a.mV[1] - b.mV[1]; + F32 x = a.mV[VX] - b.mV[VX]; + F32 y = a.mV[VY] - b.mV[VY]; return (F32) sqrt( x*x + y*y ); } -F32 dist_vec_squared(const LLVector2 &a, const LLVector2 &b) +F32 dist_vec_squared(const LLVector2& a, const LLVector2& b) { - F32 x = a.mV[0] - b.mV[0]; - F32 y = a.mV[1] - b.mV[1]; + F32 x = a.mV[VX] - b.mV[VX]; + F32 y = a.mV[VY] - b.mV[VY]; return x*x + y*y; } -F32 dist_vec_squared2D(const LLVector2 &a, const LLVector2 &b) +F32 dist_vec_squared2D(const LLVector2& a, const LLVector2& b) { - F32 x = a.mV[0] - b.mV[0]; - F32 y = a.mV[1] - b.mV[1]; + F32 x = a.mV[VX] - b.mV[VX]; + F32 y = a.mV[VY] - b.mV[VY]; return x*x + y*y; } -LLVector2 lerp(const LLVector2 &a, const LLVector2 &b, F32 u) +LLVector2 lerp(const LLVector2& a, const LLVector2& b, F32 u) { return LLVector2( a.mV[VX] + (b.mV[VX] - a.mV[VX]) * u, @@ -113,14 +112,14 @@ LLVector2 lerp(const LLVector2 &a, const LLVector2 &b, F32 u) LLSD LLVector2::getValue() const { LLSD ret; - ret[0] = mV[0]; - ret[1] = mV[1]; + ret[VX] = mV[VX]; + ret[VY] = mV[VY]; return ret; } void LLVector2::setValue(const LLSD& sd) { - mV[0] = (F32) sd[0].asReal(); - mV[1] = (F32) sd[1].asReal(); + mV[VX] = (F32) sd[0].asReal(); + mV[VY] = (F32) sd[1].asReal(); } diff --git a/indra/llmath/v2math.h b/indra/llmath/v2math.h index a61c946304..18ad02a411 100644 --- a/indra/llmath/v2math.h +++ b/indra/llmath/v2math.h @@ -36,7 +36,7 @@ class LLQuaternion; // Llvector2 = |x y z w| -static const U32 LENGTHOFVECTOR2 = 2; +static constexpr U32 LENGTHOFVECTOR2 = 2; class LLVector2 { @@ -82,7 +82,7 @@ class LLVector2 const LLVector2& scaleVec(const LLVector2& vec); // scales per component by vec - bool isNull(); // Returns true if vector has a _very_small_ length + bool isNull() const; // Returns true if vector has a _very_small_ length bool isExactlyZero() const { return !mV[VX] && !mV[VY]; } F32 operator[](int idx) const { return mV[idx]; } @@ -113,16 +113,16 @@ class LLVector2 // Non-member functions -F32 angle_between(const LLVector2 &a, const LLVector2 &b); // Returns angle (radians) between a and b -bool are_parallel(const LLVector2 &a, const LLVector2 &b, F32 epsilon=F_APPROXIMATELY_ZERO); // Returns true if a and b are very close to parallel -F32 dist_vec(const LLVector2 &a, const LLVector2 &b); // Returns distance between a and b -F32 dist_vec_squared(const LLVector2 &a, const LLVector2 &b);// Returns distance squared between a and b -F32 dist_vec_squared2D(const LLVector2 &a, const LLVector2 &b);// Returns distance squared between a and b ignoring Z component -LLVector2 lerp(const LLVector2 &a, const LLVector2 &b, F32 u); // Returns a vector that is a linear interpolation between a and b +F32 angle_between(const LLVector2& a, const LLVector2& b); // Returns angle (radians) between a and b +bool are_parallel(const LLVector2& a, const LLVector2& b, F32 epsilon = F_APPROXIMATELY_ZERO); // Returns true if a and b are very close to parallel +F32 dist_vec(const LLVector2& a, const LLVector2& b); // Returns distance between a and b +F32 dist_vec_squared(const LLVector2& a, const LLVector2& b);// Returns distance squared between a and b +F32 dist_vec_squared2D(const LLVector2& a, const LLVector2& b);// Returns distance squared between a and b ignoring Z component +LLVector2 lerp(const LLVector2& a, const LLVector2& b, F32 u); // Returns a vector that is a linear interpolation between a and b // Constructors -inline LLVector2::LLVector2(void) +inline LLVector2::LLVector2() { mV[VX] = 0.f; mV[VY] = 0.f; @@ -153,27 +153,27 @@ inline LLVector2::LLVector2(const LLSD &sd) // Clear and Assignment Functions -inline void LLVector2::clear(void) +inline void LLVector2::clear() { mV[VX] = 0.f; mV[VY] = 0.f; } -inline void LLVector2::setZero(void) +inline void LLVector2::setZero() { mV[VX] = 0.f; mV[VY] = 0.f; } // deprecated -inline void LLVector2::clearVec(void) +inline void LLVector2::clearVec() { mV[VX] = 0.f; mV[VY] = 0.f; } // deprecated -inline void LLVector2::zeroVec(void) +inline void LLVector2::zeroVec() { mV[VX] = 0.f; mV[VY] = 0.f; @@ -222,31 +222,31 @@ inline void LLVector2::setVec(const F32 *vec) // LLVector2 Magnitude and Normalization Functions -inline F32 LLVector2::length(void) const +inline F32 LLVector2::length() const { - return (F32) sqrt(mV[0]*mV[0] + mV[1]*mV[1]); + return sqrt(mV[VX]*mV[VX] + mV[VY]*mV[VY]); } -inline F32 LLVector2::lengthSquared(void) const +inline F32 LLVector2::lengthSquared() const { - return mV[0]*mV[0] + mV[1]*mV[1]; + return mV[VX]*mV[VX] + mV[VY]*mV[VY]; } -inline F32 LLVector2::normalize(void) +inline F32 LLVector2::normalize() { - F32 mag = (F32) sqrt(mV[0]*mV[0] + mV[1]*mV[1]); + F32 mag = sqrt(mV[VX]*mV[VX] + mV[VY]*mV[VY]); F32 oomag; if (mag > FP_MAG_THRESHOLD) { oomag = 1.f/mag; - mV[0] *= oomag; - mV[1] *= oomag; + mV[VX] *= oomag; + mV[VY] *= oomag; } else { - mV[0] = 0.f; - mV[1] = 0.f; + mV[VX] = 0.f; + mV[VY] = 0.f; mag = 0; } return (mag); @@ -259,33 +259,33 @@ inline bool LLVector2::isFinite() const } // deprecated -inline F32 LLVector2::magVec(void) const +inline F32 LLVector2::magVec() const { - return (F32) sqrt(mV[0]*mV[0] + mV[1]*mV[1]); + return sqrt(mV[VX]*mV[VX] + mV[VY]*mV[VY]); } // deprecated -inline F32 LLVector2::magVecSquared(void) const +inline F32 LLVector2::magVecSquared() const { - return mV[0]*mV[0] + mV[1]*mV[1]; + return mV[VX]*mV[VX] + mV[VY]*mV[VY]; } // deprecated -inline F32 LLVector2::normVec(void) +inline F32 LLVector2::normVec() { - F32 mag = (F32) sqrt(mV[0]*mV[0] + mV[1]*mV[1]); + F32 mag = sqrt(mV[VX]*mV[VX] + mV[VY]*mV[VY]); F32 oomag; if (mag > FP_MAG_THRESHOLD) { oomag = 1.f/mag; - mV[0] *= oomag; - mV[1] *= oomag; + mV[VX] *= oomag; + mV[VY] *= oomag; } else { - mV[0] = 0.f; - mV[1] = 0.f; + mV[VX] = 0.f; + mV[VY] = 0.f; mag = 0; } return (mag); @@ -299,9 +299,9 @@ inline const LLVector2& LLVector2::scaleVec(const LLVector2& vec) return *this; } -inline bool LLVector2::isNull() +inline bool LLVector2::isNull() const { - if ( F_APPROXIMATELY_ZERO > mV[VX]*mV[VX] + mV[VY]*mV[VY] ) + if (F_APPROXIMATELY_ZERO > mV[VX]*mV[VX] + mV[VY]*mV[VY]) { return true; } @@ -312,9 +312,9 @@ inline bool LLVector2::isNull() // LLVector2 Operators // For sorting. By convention, x is "more significant" than y. -inline bool operator<(const LLVector2 &a, const LLVector2 &b) +inline bool operator<(const LLVector2& a, const LLVector2& b) { - if( a.mV[VX] == b.mV[VX] ) + if (a.mV[VX] == b.mV[VX]) { return a.mV[VY] < b.mV[VY]; } @@ -325,95 +325,95 @@ inline bool operator<(const LLVector2 &a, const LLVector2 &b) } -inline LLVector2 operator+(const LLVector2 &a, const LLVector2 &b) +inline LLVector2 operator+(const LLVector2& a, const LLVector2& b) { LLVector2 c(a); return c += b; } -inline LLVector2 operator-(const LLVector2 &a, const LLVector2 &b) +inline LLVector2 operator-(const LLVector2& a, const LLVector2& b) { LLVector2 c(a); return c -= b; } -inline F32 operator*(const LLVector2 &a, const LLVector2 &b) +inline F32 operator*(const LLVector2& a, const LLVector2& b) { - return (a.mV[0]*b.mV[0] + a.mV[1]*b.mV[1]); + return (a.mV[VX]*b.mV[VX] + a.mV[VY]*b.mV[VY]); } -inline LLVector2 operator%(const LLVector2 &a, const LLVector2 &b) +inline LLVector2 operator%(const LLVector2& a, const LLVector2& b) { - return LLVector2(a.mV[0]*b.mV[1] - b.mV[0]*a.mV[1], a.mV[1]*b.mV[0] - b.mV[1]*a.mV[0]); + return LLVector2(a.mV[VX]*b.mV[VY] - b.mV[VX]*a.mV[VY], a.mV[VY]*b.mV[VX] - b.mV[VY]*a.mV[VX]); } -inline LLVector2 operator/(const LLVector2 &a, F32 k) +inline LLVector2 operator/(const LLVector2& a, F32 k) { F32 t = 1.f / k; - return LLVector2( a.mV[0] * t, a.mV[1] * t ); + return LLVector2( a.mV[VX] * t, a.mV[VY] * t ); } -inline LLVector2 operator*(const LLVector2 &a, F32 k) +inline LLVector2 operator*(const LLVector2& a, F32 k) { - return LLVector2( a.mV[0] * k, a.mV[1] * k ); + return LLVector2( a.mV[VX] * k, a.mV[VY] * k ); } -inline LLVector2 operator*(F32 k, const LLVector2 &a) +inline LLVector2 operator*(F32 k, const LLVector2& a) { - return LLVector2( a.mV[0] * k, a.mV[1] * k ); + return LLVector2( a.mV[VX] * k, a.mV[VY] * k ); } -inline bool operator==(const LLVector2 &a, const LLVector2 &b) +inline bool operator==(const LLVector2& a, const LLVector2& b) { - return ( (a.mV[0] == b.mV[0]) - &&(a.mV[1] == b.mV[1])); + return ( (a.mV[VX] == b.mV[VX]) + &&(a.mV[VY] == b.mV[VY])); } -inline bool operator!=(const LLVector2 &a, const LLVector2 &b) +inline bool operator!=(const LLVector2& a, const LLVector2& b) { - return ( (a.mV[0] != b.mV[0]) - ||(a.mV[1] != b.mV[1])); + return ( (a.mV[VX] != b.mV[VX]) + ||(a.mV[VY] != b.mV[VY])); } -inline const LLVector2& operator+=(LLVector2 &a, const LLVector2 &b) +inline const LLVector2& operator+=(LLVector2& a, const LLVector2& b) { - a.mV[0] += b.mV[0]; - a.mV[1] += b.mV[1]; + a.mV[VX] += b.mV[VX]; + a.mV[VY] += b.mV[VY]; return a; } -inline const LLVector2& operator-=(LLVector2 &a, const LLVector2 &b) +inline const LLVector2& operator-=(LLVector2& a, const LLVector2& b) { - a.mV[0] -= b.mV[0]; - a.mV[1] -= b.mV[1]; + a.mV[VX] -= b.mV[VX]; + a.mV[VY] -= b.mV[VY]; return a; } -inline const LLVector2& operator%=(LLVector2 &a, const LLVector2 &b) +inline const LLVector2& operator%=(LLVector2& a, const LLVector2& b) { - LLVector2 ret(a.mV[0]*b.mV[1] - b.mV[0]*a.mV[1], a.mV[1]*b.mV[0] - b.mV[1]*a.mV[0]); + LLVector2 ret(a.mV[VX]*b.mV[VY] - b.mV[VX]*a.mV[VY], a.mV[VY]*b.mV[VX] - b.mV[VY]*a.mV[VX]); a = ret; return a; } -inline const LLVector2& operator*=(LLVector2 &a, F32 k) +inline const LLVector2& operator*=(LLVector2& a, F32 k) { - a.mV[0] *= k; - a.mV[1] *= k; + a.mV[VX] *= k; + a.mV[VY] *= k; return a; } -inline const LLVector2& operator/=(LLVector2 &a, F32 k) +inline const LLVector2& operator/=(LLVector2& a, F32 k) { F32 t = 1.f / k; - a.mV[0] *= t; - a.mV[1] *= t; + a.mV[VX] *= t; + a.mV[VY] *= t; return a; } -inline LLVector2 operator-(const LLVector2 &a) +inline LLVector2 operator-(const LLVector2& a) { - return LLVector2( -a.mV[0], -a.mV[1] ); + return LLVector2( -a.mV[VX], -a.mV[VY] ); } inline void update_min_max(LLVector2& min, LLVector2& max, const LLVector2& pos) @@ -431,7 +431,7 @@ inline void update_min_max(LLVector2& min, LLVector2& max, const LLVector2& pos) } } -inline std::ostream& operator<<(std::ostream& s, const LLVector2 &a) +inline std::ostream& operator<<(std::ostream& s, const LLVector2& a) { s << "{ " << a.mV[VX] << ", " << a.mV[VY] << " }"; return s; diff --git a/indra/llmath/v3color.cpp b/indra/llmath/v3color.cpp index 4367b993f8..08b3795020 100644 --- a/indra/llmath/v3color.cpp +++ b/indra/llmath/v3color.cpp @@ -32,74 +32,79 @@ LLColor3 LLColor3::white(1.0f, 1.0f, 1.0f); LLColor3 LLColor3::black(0.0f, 0.0f, 0.0f); -LLColor3 LLColor3::grey (0.5f, 0.5f, 0.5f); +LLColor3 LLColor3::grey(0.5f, 0.5f, 0.5f); -LLColor3::LLColor3(const LLColor4 &a) +LLColor3::LLColor3(const LLColor4& a) { - mV[0] = a.mV[0]; - mV[1] = a.mV[1]; - mV[2] = a.mV[2]; + mV[VRED] = a.mV[VRED]; + mV[VGREEN] = a.mV[VGREEN]; + mV[VBLUE] = a.mV[VBLUE]; } -LLColor3::LLColor3(const LLVector4 &a) +LLColor3::LLColor3(const LLVector4& a) { - mV[0] = a.mV[0]; - mV[1] = a.mV[1]; - mV[2] = a.mV[2]; + mV[VRED] = a.mV[VRED]; + mV[VGREEN] = a.mV[VGREEN]; + mV[VBLUE] = a.mV[VBLUE]; } -LLColor3::LLColor3(const LLSD &sd) +LLColor3::LLColor3(const LLSD& sd) { setValue(sd); } -const LLColor3& LLColor3::operator=(const LLColor4 &a) +const LLColor3& LLColor3::operator=(const LLColor4& a) { - mV[0] = a.mV[0]; - mV[1] = a.mV[1]; - mV[2] = a.mV[2]; + mV[VRED] = a.mV[VRED]; + mV[VGREEN] = a.mV[VGREEN]; + mV[VBLUE] = a.mV[VBLUE]; return (*this); } -std::ostream& operator<<(std::ostream& s, const LLColor3 &a) +std::ostream& operator<<(std::ostream& s, const LLColor3& a) { s << "{ " << a.mV[VRED] << ", " << a.mV[VGREEN] << ", " << a.mV[VBLUE] << " }"; return s; } -static F32 hueToRgb ( F32 val1In, F32 val2In, F32 valHUeIn ) +static F32 hueToRgb(F32 val1In, F32 val2In, F32 valHUeIn) { - if ( valHUeIn < 0.0f ) valHUeIn += 1.0f; - if ( valHUeIn > 1.0f ) valHUeIn -= 1.0f; - if ( ( 6.0f * valHUeIn ) < 1.0f ) return ( val1In + ( val2In - val1In ) * 6.0f * valHUeIn ); - if ( ( 2.0f * valHUeIn ) < 1.0f ) return ( val2In ); - if ( ( 3.0f * valHUeIn ) < 2.0f ) return ( val1In + ( val2In - val1In ) * ( ( 2.0f / 3.0f ) - valHUeIn ) * 6.0f ); - return ( val1In ); + if (valHUeIn < 0.0f) + valHUeIn += 1.0f; + if (valHUeIn > 1.0f) + valHUeIn -= 1.0f; + if ((6.0f * valHUeIn) < 1.0f) + return (val1In + (val2In - val1In) * 6.0f * valHUeIn); + if ((2.0f * valHUeIn) < 1.0f) + return (val2In); + if ((3.0f * valHUeIn) < 2.0f) + return (val1In + (val2In - val1In) * ((2.0f / 3.0f) - valHUeIn) * 6.0f); + return (val1In); } -void LLColor3::setHSL ( F32 hValIn, F32 sValIn, F32 lValIn) +void LLColor3::setHSL(F32 hValIn, F32 sValIn, F32 lValIn) { - if ( sValIn < 0.00001f ) + if (sValIn < 0.00001f) { - mV[VRED] = lValIn; + mV[VRED] = lValIn; mV[VGREEN] = lValIn; - mV[VBLUE] = lValIn; + mV[VBLUE] = lValIn; } else { F32 interVal1; F32 interVal2; - if ( lValIn < 0.5f ) - interVal2 = lValIn * ( 1.0f + sValIn ); + if (lValIn < 0.5f) + interVal2 = lValIn * (1.0f + sValIn); else - interVal2 = ( lValIn + sValIn ) - ( sValIn * lValIn ); + interVal2 = (lValIn + sValIn) - (sValIn * lValIn); interVal1 = 2.0f * lValIn - interVal2; - mV[VRED] = hueToRgb ( interVal1, interVal2, hValIn + ( 1.f / 3.f ) ); - mV[VGREEN] = hueToRgb ( interVal1, interVal2, hValIn ); - mV[VBLUE] = hueToRgb ( interVal1, interVal2, hValIn - ( 1.f / 3.f ) ); + mV[VRED] = hueToRgb(interVal1, interVal2, hValIn + (1.f / 3.f)); + mV[VGREEN] = hueToRgb(interVal1, interVal2, hValIn); + mV[VBLUE] = hueToRgb(interVal1, interVal2, hValIn - (1.f / 3.f)); } } @@ -109,45 +114,48 @@ void LLColor3::calcHSL(F32* hue, F32* saturation, F32* luminance) const F32 var_G = mV[VGREEN]; F32 var_B = mV[VBLUE]; - F32 var_Min = ( var_R < ( var_G < var_B ? var_G : var_B ) ? var_R : ( var_G < var_B ? var_G : var_B ) ); - F32 var_Max = ( var_R > ( var_G > var_B ? var_G : var_B ) ? var_R : ( var_G > var_B ? var_G : var_B ) ); + F32 var_Min = (var_R < (var_G < var_B ? var_G : var_B) ? var_R : (var_G < var_B ? var_G : var_B)); + F32 var_Max = (var_R > (var_G > var_B ? var_G : var_B) ? var_R : (var_G > var_B ? var_G : var_B)); F32 del_Max = var_Max - var_Min; - F32 L = ( var_Max + var_Min ) / 2.0f; + F32 L = (var_Max + var_Min) / 2.0f; F32 H = 0.0f; F32 S = 0.0f; - if ( del_Max == 0.0f ) + if (del_Max == 0.0f) { - H = 0.0f; - S = 0.0f; + H = 0.0f; + S = 0.0f; } else { - if ( L < 0.5 ) - S = del_Max / ( var_Max + var_Min ); + if (L < 0.5) + S = del_Max / (var_Max + var_Min); else - S = del_Max / ( 2.0f - var_Max - var_Min ); + S = del_Max / (2.0f - var_Max - var_Min); - F32 del_R = ( ( ( var_Max - var_R ) / 6.0f ) + ( del_Max / 2.0f ) ) / del_Max; - F32 del_G = ( ( ( var_Max - var_G ) / 6.0f ) + ( del_Max / 2.0f ) ) / del_Max; - F32 del_B = ( ( ( var_Max - var_B ) / 6.0f ) + ( del_Max / 2.0f ) ) / del_Max; + F32 del_R = (((var_Max - var_R) / 6.0f) + (del_Max / 2.0f)) / del_Max; + F32 del_G = (((var_Max - var_G) / 6.0f) + (del_Max / 2.0f)) / del_Max; + F32 del_B = (((var_Max - var_B) / 6.0f) + (del_Max / 2.0f)) / del_Max; - if ( var_R >= var_Max ) + if (var_R >= var_Max) H = del_B - del_G; - else - if ( var_G >= var_Max ) - H = ( 1.0f / 3.0f ) + del_R - del_B; - else - if ( var_B >= var_Max ) - H = ( 2.0f / 3.0f ) + del_G - del_R; - - if ( H < 0.0f ) H += 1.0f; - if ( H > 1.0f ) H -= 1.0f; + else if (var_G >= var_Max) + H = (1.0f / 3.0f) + del_R - del_B; + else if (var_B >= var_Max) + H = (2.0f / 3.0f) + del_G - del_R; + + if (H < 0.0f) + H += 1.0f; + if (H > 1.0f) + H -= 1.0f; } - if (hue) *hue = H; - if (saturation) *saturation = S; - if (luminance) *luminance = L; + if (hue) + *hue = H; + if (saturation) + *saturation = S; + if (luminance) + *luminance = L; } diff --git a/indra/llmath/v3color.h b/indra/llmath/v3color.h index f7af469e66..48b36e7c8a 100644 --- a/indra/llmath/v3color.h +++ b/indra/llmath/v3color.h @@ -33,12 +33,12 @@ class LLVector4; #include "llerror.h" #include "llmath.h" #include "llsd.h" -#include "v3math.h" // needed for linearColor3v implemtation below +#include "v3math.h" // needed for linearColor3v implemtation below #include <string.h> // LLColor3 = |r g b| -static const U32 LENGTHOFCOLOR3 = 3; +static constexpr U32 LENGTHOFCOLOR3 = 3; class LLColor3 { @@ -50,44 +50,43 @@ public: static LLColor3 grey; public: - LLColor3(); // Initializes LLColor3 to (0, 0, 0) - LLColor3(F32 r, F32 g, F32 b); // Initializes LLColor3 to (r, g, b) - LLColor3(const F32 *vec); // Initializes LLColor3 to (vec[0]. vec[1], vec[2]) - LLColor3(const char *color_string); // html format color ie "#FFDDEE" - explicit LLColor3(const LLColor4& color4); // "explicit" to avoid automatic conversion - explicit LLColor3(const LLVector4& vector4); // "explicit" to avoid automatic conversion + LLColor3(); // Initializes LLColor3 to (0, 0, 0) + LLColor3(F32 r, F32 g, F32 b); // Initializes LLColor3 to (r, g, b) + LLColor3(const F32* vec); // Initializes LLColor3 to (vec[0]. vec[1], vec[2]) + LLColor3(const char* color_string); // html format color ie "#FFDDEE" + explicit LLColor3(const LLColor4& color4); // "explicit" to avoid automatic conversion + explicit LLColor3(const LLVector4& vector4); // "explicit" to avoid automatic conversion LLColor3(const LLSD& sd); - LLSD getValue() const { LLSD ret; - ret[0] = mV[0]; - ret[1] = mV[1]; - ret[2] = mV[2]; + ret[VRED] = mV[VRED]; + ret[VGREEN] = mV[VGREEN]; + ret[VBLUE] = mV[VBLUE]; return ret; } void setValue(const LLSD& sd) { - mV[0] = (F32) sd[0].asReal();; - mV[1] = (F32) sd[1].asReal();; - mV[2] = (F32) sd[2].asReal();; + mV[VRED] = (F32)sd[VRED].asReal(); + mV[VGREEN] = (F32)sd[VGREEN].asReal(); + mV[VBLUE] = (F32)sd[VBLUE].asReal(); } void setHSL(F32 hue, F32 saturation, F32 luminance); void calcHSL(F32* hue, F32* saturation, F32* luminance) const; - const LLColor3& setToBlack(); // Clears LLColor3 to (0, 0, 0) - const LLColor3& setToWhite(); // Zero LLColor3 to (0, 0, 0) + const LLColor3& setToBlack(); // Clears LLColor3 to (0, 0, 0) + const LLColor3& setToWhite(); // Zero LLColor3 to (0, 0, 0) - const LLColor3& setVec(F32 x, F32 y, F32 z); // deprecated - const LLColor3& setVec(const LLColor3 &vec); // deprecated - const LLColor3& setVec(const F32 *vec); // deprecated + const LLColor3& setVec(F32 x, F32 y, F32 z); // deprecated + const LLColor3& setVec(const LLColor3& vec); // deprecated + const LLColor3& setVec(const F32* vec); // deprecated - const LLColor3& set(F32 x, F32 y, F32 z); // Sets LLColor3 to (x, y, z) - const LLColor3& set(const LLColor3 &vec); // Sets LLColor3 to vec - const LLColor3& set(const F32 *vec); // Sets LLColor3 to vec + const LLColor3& set(F32 x, F32 y, F32 z); // Sets LLColor3 to (x, y, z) + const LLColor3& set(const LLColor3& vec); // Sets LLColor3 to vec + const LLColor3& set(const F32* vec); // Sets LLColor3 to vec // set from a vector of unknown type and size // may leave some data unmodified @@ -99,414 +98,390 @@ public: template<typename T> void write(std::vector<T>& v) const; - F32 magVec() const; // deprecated - F32 magVecSquared() const; // deprecated - F32 normVec(); // deprecated + F32 magVec() const; // deprecated + F32 magVecSquared() const; // deprecated + F32 normVec(); // deprecated - F32 length() const; // Returns magnitude of LLColor3 - F32 lengthSquared() const; // Returns magnitude squared of LLColor3 - F32 normalize(); // Normalizes and returns the magnitude of LLColor3 + F32 length() const; // Returns magnitude of LLColor3 + F32 lengthSquared() const; // Returns magnitude squared of LLColor3 + F32 normalize(); // Normalizes and returns the magnitude of LLColor3 - F32 brightness() const; // Returns brightness of LLColor3 + F32 brightness() const; // Returns brightness of LLColor3 - const LLColor3& operator=(const LLColor4 &a); + const LLColor3& operator=(const LLColor4& a); - LL_FORCE_INLINE LLColor3 divide(const LLColor3 &col2) + LL_FORCE_INLINE LLColor3 divide(const LLColor3& col2) const { - return LLColor3( - mV[0] / col2.mV[0], - mV[1] / col2.mV[1], - mV[2] / col2.mV[2] ); + return LLColor3(mV[VRED] / col2.mV[VRED], mV[VGREEN] / col2.mV[VGREEN], mV[VBLUE] / col2.mV[VBLUE]); } - LL_FORCE_INLINE LLColor3 color_norm() + LL_FORCE_INLINE LLColor3 color_norm() const { F32 l = length(); - return LLColor3( - mV[0] / l, - mV[1] / l, - mV[2] / l ); + return LLColor3(mV[VRED] / l, mV[VGREEN] / l, mV[VBLUE] / l); } - friend std::ostream& operator<<(std::ostream& s, const LLColor3 &a); // Print a - friend LLColor3 operator+(const LLColor3 &a, const LLColor3 &b); // Return vector a + b - friend LLColor3 operator-(const LLColor3 &a, const LLColor3 &b); // Return vector a minus b + friend std::ostream& operator<<(std::ostream& s, const LLColor3& a); // Print a + friend LLColor3 operator+(const LLColor3& a, const LLColor3& b); // Return vector a + b + friend LLColor3 operator-(const LLColor3& a, const LLColor3& b); // Return vector a minus b - friend const LLColor3& operator+=(LLColor3 &a, const LLColor3 &b); // Return vector a + b - friend const LLColor3& operator-=(LLColor3 &a, const LLColor3 &b); // Return vector a minus b - friend const LLColor3& operator*=(LLColor3 &a, const LLColor3 &b); + friend const LLColor3& operator+=(LLColor3& a, const LLColor3& b); // Return vector a + b + friend const LLColor3& operator-=(LLColor3& a, const LLColor3& b); // Return vector a minus b + friend const LLColor3& operator*=(LLColor3& a, const LLColor3& b); - friend LLColor3 operator*(const LLColor3 &a, const LLColor3 &b); // Return component wise a * b - friend LLColor3 operator*(const LLColor3 &a, F32 k); // Return a times scaler k - friend LLColor3 operator*(F32 k, const LLColor3 &a); // Return a times scaler k + friend LLColor3 operator*(const LLColor3& a, const LLColor3& b); // Return component wise a * b + friend LLColor3 operator*(const LLColor3& a, F32 k); // Return a times scaler k + friend LLColor3 operator*(F32 k, const LLColor3& a); // Return a times scaler k - friend bool operator==(const LLColor3 &a, const LLColor3 &b); // Return a == b - friend bool operator!=(const LLColor3 &a, const LLColor3 &b); // Return a != b + friend bool operator==(const LLColor3& a, const LLColor3& b); // Return a == b + friend bool operator!=(const LLColor3& a, const LLColor3& b); // Return a != b - friend const LLColor3& operator*=(LLColor3 &a, F32 k); // Return a times scaler k + friend const LLColor3& operator*=(LLColor3& a, F32 k); // Return a times scaler k - friend LLColor3 operator-(const LLColor3 &a); // Return vector 1-rgb (inverse) + friend LLColor3 operator-(const LLColor3& a); // Return vector 1-rgb (inverse) inline void clamp(); - inline void exp(); // Do an exponential on the color + inline void exp(); // Do an exponential on the color }; -LLColor3 lerp(const LLColor3 &a, const LLColor3 &b, F32 u); - +LLColor3 lerp(const LLColor3& a, const LLColor3& b, F32 u); void LLColor3::clamp() { // Clamp the color... - if (mV[0] < 0.f) + if (mV[VRED] < 0.f) { - mV[0] = 0.f; + mV[VRED] = 0.f; } - else if (mV[0] > 1.f) + else if (mV[VRED] > 1.f) { - mV[0] = 1.f; + mV[VRED] = 1.f; } - if (mV[1] < 0.f) + if (mV[VGREEN] < 0.f) { - mV[1] = 0.f; + mV[VGREEN] = 0.f; } - else if (mV[1] > 1.f) + else if (mV[VGREEN] > 1.f) { - mV[1] = 1.f; + mV[VGREEN] = 1.f; } - if (mV[2] < 0.f) + if (mV[VBLUE] < 0.f) { - mV[2] = 0.f; + mV[VBLUE] = 0.f; } - else if (mV[2] > 1.f) + else if (mV[VBLUE] > 1.f) { - mV[2] = 1.f; + mV[VBLUE] = 1.f; } } // Non-member functions -F32 distVec(const LLColor3 &a, const LLColor3 &b); // Returns distance between a and b -F32 distVec_squared(const LLColor3 &a, const LLColor3 &b);// Returns distance squared between a and b +F32 distVec(const LLColor3& a, const LLColor3& b); // Returns distance between a and b +F32 distVec_squared(const LLColor3& a, const LLColor3& b); // Returns distance squared between a and b -inline LLColor3::LLColor3(void) +inline LLColor3::LLColor3() { - mV[0] = 0.f; - mV[1] = 0.f; - mV[2] = 0.f; + mV[VRED] = 0.f; + mV[VGREEN] = 0.f; + mV[VBLUE] = 0.f; } inline LLColor3::LLColor3(F32 r, F32 g, F32 b) { - mV[VRED] = r; + mV[VRED] = r; mV[VGREEN] = g; - mV[VBLUE] = b; + mV[VBLUE] = b; } - -inline LLColor3::LLColor3(const F32 *vec) +inline LLColor3::LLColor3(const F32* vec) { - mV[VRED] = vec[VRED]; + mV[VRED] = vec[VRED]; mV[VGREEN] = vec[VGREEN]; - mV[VBLUE] = vec[VBLUE]; + mV[VBLUE] = vec[VBLUE]; } inline LLColor3::LLColor3(const char* color_string) // takes a string of format "RRGGBB" where RR is hex 00..FF { - if (strlen(color_string) < 6) /* Flawfinder: ignore */ + if (strlen(color_string) < 6) /* Flawfinder: ignore */ { - mV[0] = 0.f; - mV[1] = 0.f; - mV[2] = 0.f; + mV[VRED] = 0.f; + mV[VGREEN] = 0.f; + mV[VBLUE] = 0.f; return; } char tempstr[7]; - strncpy(tempstr,color_string,6); /* Flawfinder: ignore */ + strncpy(tempstr, color_string, 6); /* Flawfinder: ignore */ tempstr[6] = '\0'; - mV[VBLUE] = (F32)strtol(&tempstr[4],NULL,16)/255.f; + mV[VBLUE] = (F32)strtol(&tempstr[4], nullptr, 16) / 255.f; tempstr[4] = '\0'; - mV[VGREEN] = (F32)strtol(&tempstr[2],NULL,16)/255.f; + mV[VGREEN] = (F32)strtol(&tempstr[2], nullptr, 16) / 255.f; tempstr[2] = '\0'; - mV[VRED] = (F32)strtol(&tempstr[0],NULL,16)/255.f; + mV[VRED] = (F32)strtol(&tempstr[0], nullptr, 16) / 255.f; } -inline const LLColor3& LLColor3::setToBlack(void) +inline const LLColor3& LLColor3::setToBlack() { - mV[0] = 0.f; - mV[1] = 0.f; - mV[2] = 0.f; + mV[VRED] = 0.f; + mV[VGREEN] = 0.f; + mV[VBLUE] = 0.f; return (*this); } -inline const LLColor3& LLColor3::setToWhite(void) +inline const LLColor3& LLColor3::setToWhite() { - mV[0] = 1.f; - mV[1] = 1.f; - mV[2] = 1.f; + mV[VRED] = 1.f; + mV[VGREEN] = 1.f; + mV[VBLUE] = 1.f; return (*this); } -inline const LLColor3& LLColor3::set(F32 r, F32 g, F32 b) +inline const LLColor3& LLColor3::set(F32 r, F32 g, F32 b) { - mV[0] = r; - mV[1] = g; - mV[2] = b; + mV[VRED] = r; + mV[VGREEN] = g; + mV[VBLUE] = b; return (*this); } -inline const LLColor3& LLColor3::set(const LLColor3 &vec) +inline const LLColor3& LLColor3::set(const LLColor3& vec) { - mV[0] = vec.mV[0]; - mV[1] = vec.mV[1]; - mV[2] = vec.mV[2]; + mV[VRED] = vec.mV[VRED]; + mV[VGREEN] = vec.mV[VGREEN]; + mV[VBLUE] = vec.mV[VBLUE]; return (*this); } -inline const LLColor3& LLColor3::set(const F32 *vec) +inline const LLColor3& LLColor3::set(const F32* vec) { - mV[0] = vec[0]; - mV[1] = vec[1]; - mV[2] = vec[2]; + mV[VRED] = vec[VRED]; + mV[VGREEN] = vec[VGREEN]; + mV[VBLUE] = vec[VBLUE]; return (*this); } // deprecated -inline const LLColor3& LLColor3::setVec(F32 r, F32 g, F32 b) +inline const LLColor3& LLColor3::setVec(F32 r, F32 g, F32 b) { - mV[0] = r; - mV[1] = g; - mV[2] = b; + mV[VRED] = r; + mV[VGREEN] = g; + mV[VBLUE] = b; return (*this); } // deprecated -inline const LLColor3& LLColor3::setVec(const LLColor3 &vec) +inline const LLColor3& LLColor3::setVec(const LLColor3& vec) { - mV[0] = vec.mV[0]; - mV[1] = vec.mV[1]; - mV[2] = vec.mV[2]; + mV[VRED] = vec.mV[VRED]; + mV[VGREEN] = vec.mV[VGREEN]; + mV[VBLUE] = vec.mV[VBLUE]; return (*this); } // deprecated -inline const LLColor3& LLColor3::setVec(const F32 *vec) +inline const LLColor3& LLColor3::setVec(const F32* vec) { - mV[0] = vec[0]; - mV[1] = vec[1]; - mV[2] = vec[2]; + mV[VRED] = vec[VRED]; + mV[VGREEN] = vec[VGREEN]; + mV[VBLUE] = vec[VBLUE]; return (*this); } -inline F32 LLColor3::brightness(void) const +inline F32 LLColor3::brightness() const { - return (mV[0] + mV[1] + mV[2]) / 3.0f; + return (mV[VRED] + mV[VGREEN] + mV[VBLUE]) / 3.0f; } -inline F32 LLColor3::length(void) const +inline F32 LLColor3::length() const { - return (F32) sqrt(mV[0]*mV[0] + mV[1]*mV[1] + mV[2]*mV[2]); + return sqrt(mV[VRED] * mV[VRED] + mV[VGREEN] * mV[VGREEN] + mV[VBLUE] * mV[VBLUE]); } -inline F32 LLColor3::lengthSquared(void) const +inline F32 LLColor3::lengthSquared() const { - return mV[0]*mV[0] + mV[1]*mV[1] + mV[2]*mV[2]; + return mV[VRED] * mV[VRED] + mV[VGREEN] * mV[VGREEN] + mV[VBLUE] * mV[VBLUE]; } -inline F32 LLColor3::normalize(void) +inline F32 LLColor3::normalize() { - F32 mag = (F32) sqrt(mV[0]*mV[0] + mV[1]*mV[1] + mV[2]*mV[2]); + F32 mag = sqrt(mV[VRED] * mV[VRED] + mV[VGREEN] * mV[VGREEN] + mV[VBLUE] * mV[VBLUE]); F32 oomag; if (mag) { - oomag = 1.f/mag; - mV[0] *= oomag; - mV[1] *= oomag; - mV[2] *= oomag; + oomag = 1.f / mag; + mV[VRED] *= oomag; + mV[VGREEN] *= oomag; + mV[VBLUE] *= oomag; } - return (mag); + return mag; } // deprecated -inline F32 LLColor3::magVec(void) const +inline F32 LLColor3::magVec() const { - return (F32) sqrt(mV[0]*mV[0] + mV[1]*mV[1] + mV[2]*mV[2]); + return sqrt(mV[VRED] * mV[VRED] + mV[VGREEN] * mV[VGREEN] + mV[VBLUE] * mV[VBLUE]); } // deprecated -inline F32 LLColor3::magVecSquared(void) const +inline F32 LLColor3::magVecSquared() const { - return mV[0]*mV[0] + mV[1]*mV[1] + mV[2]*mV[2]; + return mV[VRED] * mV[VRED] + mV[VGREEN] * mV[VGREEN] + mV[VBLUE] * mV[VBLUE]; } // deprecated -inline F32 LLColor3::normVec(void) +inline F32 LLColor3::normVec() { - F32 mag = (F32) sqrt(mV[0]*mV[0] + mV[1]*mV[1] + mV[2]*mV[2]); + F32 mag = sqrt(mV[VRED] * mV[VRED] + mV[VGREEN] * mV[VGREEN] + mV[VBLUE] * mV[VBLUE]); F32 oomag; if (mag) { - oomag = 1.f/mag; - mV[0] *= oomag; - mV[1] *= oomag; - mV[2] *= oomag; + oomag = 1.f / mag; + mV[VRED] *= oomag; + mV[VGREEN] *= oomag; + mV[VBLUE] *= oomag; } - return (mag); + return mag; } inline void LLColor3::exp() { #if 0 - mV[0] = ::exp(mV[0]); - mV[1] = ::exp(mV[1]); - mV[2] = ::exp(mV[2]); + mV[VRED] = ::exp(mV[VRED]); + mV[VGREEN] = ::exp(mV[VGREEN]); + mV[VBLUE] = ::exp(mV[VBLUE]); #else - mV[0] = (F32)LL_FAST_EXP(mV[0]); - mV[1] = (F32)LL_FAST_EXP(mV[1]); - mV[2] = (F32)LL_FAST_EXP(mV[2]); + mV[VRED] = (F32)LL_FAST_EXP(mV[VRED]); + mV[VGREEN] = (F32)LL_FAST_EXP(mV[VGREEN]); + mV[VBLUE] = (F32)LL_FAST_EXP(mV[VBLUE]); #endif } - -inline LLColor3 operator+(const LLColor3 &a, const LLColor3 &b) +inline LLColor3 operator+(const LLColor3& a, const LLColor3& b) { - return LLColor3( - a.mV[0] + b.mV[0], - a.mV[1] + b.mV[1], - a.mV[2] + b.mV[2]); + return LLColor3(a.mV[VRED] + b.mV[VRED], a.mV[VGREEN] + b.mV[VGREEN], a.mV[VBLUE] + b.mV[VBLUE]); } -inline LLColor3 operator-(const LLColor3 &a, const LLColor3 &b) +inline LLColor3 operator-(const LLColor3& a, const LLColor3& b) { - return LLColor3( - a.mV[0] - b.mV[0], - a.mV[1] - b.mV[1], - a.mV[2] - b.mV[2]); + return LLColor3(a.mV[VRED] - b.mV[VRED], a.mV[VGREEN] - b.mV[VGREEN], a.mV[VBLUE] - b.mV[VBLUE]); } -inline LLColor3 operator*(const LLColor3 &a, const LLColor3 &b) +inline LLColor3 operator*(const LLColor3& a, const LLColor3& b) { - return LLColor3( - a.mV[0] * b.mV[0], - a.mV[1] * b.mV[1], - a.mV[2] * b.mV[2]); + return LLColor3(a.mV[VRED] * b.mV[VRED], a.mV[VGREEN] * b.mV[VGREEN], a.mV[VBLUE] * b.mV[VBLUE]); } -inline LLColor3 operator*(const LLColor3 &a, F32 k) +inline LLColor3 operator*(const LLColor3& a, F32 k) { - return LLColor3( a.mV[0] * k, a.mV[1] * k, a.mV[2] * k ); + return LLColor3(a.mV[VRED] * k, a.mV[VGREEN] * k, a.mV[VBLUE] * k); } -inline LLColor3 operator*(F32 k, const LLColor3 &a) +inline LLColor3 operator*(F32 k, const LLColor3& a) { - return LLColor3( a.mV[0] * k, a.mV[1] * k, a.mV[2] * k ); + return LLColor3(a.mV[VRED] * k, a.mV[VGREEN] * k, a.mV[VBLUE] * k); } -inline bool operator==(const LLColor3 &a, const LLColor3 &b) +inline bool operator==(const LLColor3& a, const LLColor3& b) { - return ( (a.mV[0] == b.mV[0]) - &&(a.mV[1] == b.mV[1]) - &&(a.mV[2] == b.mV[2])); + return ((a.mV[VRED] == b.mV[VRED]) && (a.mV[VGREEN] == b.mV[VGREEN]) && (a.mV[VBLUE] == b.mV[VBLUE])); } -inline bool operator!=(const LLColor3 &a, const LLColor3 &b) +inline bool operator!=(const LLColor3& a, const LLColor3& b) { - return ( (a.mV[0] != b.mV[0]) - ||(a.mV[1] != b.mV[1]) - ||(a.mV[2] != b.mV[2])); + return ((a.mV[VRED] != b.mV[VRED]) || (a.mV[VGREEN] != b.mV[VGREEN]) || (a.mV[VBLUE] != b.mV[VBLUE])); } -inline const LLColor3 &operator*=(LLColor3 &a, const LLColor3 &b) +inline const LLColor3& operator*=(LLColor3& a, const LLColor3& b) { - a.mV[0] *= b.mV[0]; - a.mV[1] *= b.mV[1]; - a.mV[2] *= b.mV[2]; + a.mV[VRED] *= b.mV[VRED]; + a.mV[VGREEN] *= b.mV[VGREEN]; + a.mV[VBLUE] *= b.mV[VBLUE]; return a; } -inline const LLColor3& operator+=(LLColor3 &a, const LLColor3 &b) +inline const LLColor3& operator+=(LLColor3& a, const LLColor3& b) { - a.mV[0] += b.mV[0]; - a.mV[1] += b.mV[1]; - a.mV[2] += b.mV[2]; + a.mV[VRED] += b.mV[VRED]; + a.mV[VGREEN] += b.mV[VGREEN]; + a.mV[VBLUE] += b.mV[VBLUE]; return a; } -inline const LLColor3& operator-=(LLColor3 &a, const LLColor3 &b) +inline const LLColor3& operator-=(LLColor3& a, const LLColor3& b) { - a.mV[0] -= b.mV[0]; - a.mV[1] -= b.mV[1]; - a.mV[2] -= b.mV[2]; + a.mV[VRED] -= b.mV[VRED]; + a.mV[VGREEN] -= b.mV[VGREEN]; + a.mV[VBLUE] -= b.mV[VBLUE]; return a; } -inline const LLColor3& operator*=(LLColor3 &a, F32 k) +inline const LLColor3& operator*=(LLColor3& a, F32 k) { - a.mV[0] *= k; - a.mV[1] *= k; - a.mV[2] *= k; + a.mV[VRED] *= k; + a.mV[VGREEN] *= k; + a.mV[VBLUE] *= k; return a; } -inline LLColor3 operator-(const LLColor3 &a) +inline LLColor3 operator-(const LLColor3& a) { - return LLColor3( - 1.f - a.mV[0], - 1.f - a.mV[1], - 1.f - a.mV[2] ); + return LLColor3(1.f - a.mV[VRED], 1.f - a.mV[VGREEN], 1.f - a.mV[VBLUE]); } // Non-member functions -inline F32 distVec(const LLColor3 &a, const LLColor3 &b) +inline F32 distVec(const LLColor3& a, const LLColor3& b) { - F32 x = a.mV[0] - b.mV[0]; - F32 y = a.mV[1] - b.mV[1]; - F32 z = a.mV[2] - b.mV[2]; - return (F32) sqrt( x*x + y*y + z*z ); + F32 x = a.mV[VRED] - b.mV[VRED]; + F32 y = a.mV[VGREEN] - b.mV[VGREEN]; + F32 z = a.mV[VBLUE] - b.mV[VBLUE]; + return sqrt(x * x + y * y + z * z); } -inline F32 distVec_squared(const LLColor3 &a, const LLColor3 &b) +inline F32 distVec_squared(const LLColor3& a, const LLColor3& b) { - F32 x = a.mV[0] - b.mV[0]; - F32 y = a.mV[1] - b.mV[1]; - F32 z = a.mV[2] - b.mV[2]; - return x*x + y*y + z*z; + F32 x = a.mV[VRED] - b.mV[VRED]; + F32 y = a.mV[VGREEN] - b.mV[VGREEN]; + F32 z = a.mV[VBLUE] - b.mV[VBLUE]; + return x * x + y * y + z * z; } -inline LLColor3 lerp(const LLColor3 &a, const LLColor3 &b, F32 u) +inline LLColor3 lerp(const LLColor3& a, const LLColor3& b, F32 u) { - return LLColor3( - a.mV[VX] + (b.mV[VX] - a.mV[VX]) * u, - a.mV[VY] + (b.mV[VY] - a.mV[VY]) * u, - a.mV[VZ] + (b.mV[VZ] - a.mV[VZ]) * u); + return LLColor3(a.mV[VX] + (b.mV[VX] - a.mV[VX]) * u, a.mV[VY] + (b.mV[VY] - a.mV[VY]) * u, a.mV[VZ] + (b.mV[VZ] - a.mV[VZ]) * u); } -inline const LLColor3 srgbColor3(const LLColor3 &a) { +inline const LLColor3 srgbColor3(const LLColor3& a) +{ LLColor3 srgbColor; - srgbColor.mV[0] = linearTosRGB(a.mV[0]); - srgbColor.mV[1] = linearTosRGB(a.mV[1]); - srgbColor.mV[2] = linearTosRGB(a.mV[2]); + srgbColor.mV[VRED] = linearTosRGB(a.mV[VRED]); + srgbColor.mV[VGREEN] = linearTosRGB(a.mV[VGREEN]); + srgbColor.mV[VBLUE] = linearTosRGB(a.mV[VBLUE]); return srgbColor; } -inline const LLColor3 linearColor3p(const F32* v) { +inline const LLColor3 linearColor3p(const F32* v) +{ LLColor3 linearColor; - linearColor.mV[0] = sRGBtoLinear(v[0]); - linearColor.mV[1] = sRGBtoLinear(v[1]); - linearColor.mV[2] = sRGBtoLinear(v[2]); + linearColor.mV[VRED] = sRGBtoLinear(v[VRED]); + linearColor.mV[VGREEN] = sRGBtoLinear(v[VGREEN]); + linearColor.mV[VBLUE] = sRGBtoLinear(v[VBLUE]); return linearColor; } template<class T> -inline const LLColor3 linearColor3(const T& a) { +inline const LLColor3 linearColor3(const T& a) +{ return linearColor3p(a.mV); } template<class T> -inline const LLVector3 linearColor3v(const T& a) { +inline const LLVector3 linearColor3v(const T& a) +{ return LLVector3(linearColor3p(a.mV).mV); } diff --git a/indra/llmath/v3colorutil.h b/indra/llmath/v3colorutil.h index af8799e42a..4dc3100443 100644 --- a/indra/llmath/v3colorutil.h +++ b/indra/llmath/v3colorutil.h @@ -30,59 +30,46 @@ #include "v3color.h" #include "v4color.h" -inline LLColor3 componentDiv(LLColor3 const &left, LLColor3 const & right) +inline LLColor3 componentDiv(const LLColor3& left, const LLColor3& right) { - return LLColor3(left.mV[0] / right.mV[0], - left.mV[1] / right.mV[1], - left.mV[2] / right.mV[2]); + return LLColor3(left.mV[VRED] / right.mV[VRED], left.mV[VGREEN] / right.mV[VGREEN], left.mV[VBLUE] / right.mV[VBLUE]); } - -inline LLColor3 componentMult(LLColor3 const &left, LLColor3 const & right) +inline LLColor3 componentMult(const LLColor3& left, const LLColor3& right) { - return LLColor3(left.mV[0] * right.mV[0], - left.mV[1] * right.mV[1], - left.mV[2] * right.mV[2]); + return LLColor3(left.mV[VRED] * right.mV[VRED], left.mV[VGREEN] * right.mV[VGREEN], left.mV[VBLUE] * right.mV[VBLUE]); } - -inline LLColor3 componentExp(LLColor3 const &v) +inline LLColor3 componentExp(const LLColor3& v) { - return LLColor3(exp(v.mV[0]), - exp(v.mV[1]), - exp(v.mV[2])); + return LLColor3(exp(v.mV[VRED]), exp(v.mV[VGREEN]), exp(v.mV[VBLUE])); } -inline LLColor3 componentPow(LLColor3 const &v, F32 exponent) +inline LLColor3 componentPow(const LLColor3& v, F32 exponent) { - return LLColor3(pow(v.mV[0], exponent), - pow(v.mV[1], exponent), - pow(v.mV[2], exponent)); + return LLColor3(pow(v.mV[VRED], exponent), pow(v.mV[VGREEN], exponent), pow(v.mV[VBLUE], exponent)); } -inline LLColor3 componentSaturate(LLColor3 const &v) +inline LLColor3 componentSaturate(const LLColor3& v) { - return LLColor3(std::max(std::min(v.mV[0], 1.f), 0.f), - std::max(std::min(v.mV[1], 1.f), 0.f), - std::max(std::min(v.mV[2], 1.f), 0.f)); + return LLColor3(std::max(std::min(v.mV[VRED], 1.f), 0.f), + std::max(std::min(v.mV[VGREEN], 1.f), 0.f), + std::max(std::min(v.mV[VBLUE], 1.f), 0.f)); } - -inline LLColor3 componentSqrt(LLColor3 const &v) +inline LLColor3 componentSqrt(const LLColor3& v) { - return LLColor3(sqrt(v.mV[0]), - sqrt(v.mV[1]), - sqrt(v.mV[2])); + return LLColor3(sqrt(v.mV[VRED]), sqrt(v.mV[VGREEN]), sqrt(v.mV[VBLUE])); } -inline void componentMultBy(LLColor3 & left, LLColor3 const & right) +inline void componentMultBy(LLColor3& left, const LLColor3& right) { - left.mV[0] *= right.mV[0]; - left.mV[1] *= right.mV[1]; - left.mV[2] *= right.mV[2]; + left.mV[VRED] *= right.mV[VRED]; + left.mV[VGREEN] *= right.mV[VGREEN]; + left.mV[VBLUE] *= right.mV[VBLUE]; } -inline LLColor3 colorMix(LLColor3 const & left, LLColor3 const & right, F32 amount) +inline LLColor3 colorMix(const LLColor3& left, const LLColor3& right, F32 amount) { return (left + ((right - left) * amount)); } @@ -92,25 +79,24 @@ inline LLColor3 smear(F32 val) return LLColor3(val, val, val); } -inline F32 color_intens(const LLColor3 &col) +inline F32 color_intens(const LLColor3& col) { - return col.mV[0] + col.mV[1] + col.mV[2]; + return col.mV[VRED] + col.mV[VGREEN] + col.mV[VBLUE]; } -inline F32 color_max(const LLColor3 &col) +inline F32 color_max(const LLColor3& col) { - return llmax(col.mV[0], col.mV[1], col.mV[2]); + return llmax(col.mV[VRED], col.mV[VGREEN], col.mV[VBLUE]); } -inline F32 color_max(const LLColor4 &col) +inline F32 color_max(const LLColor4& col) { - return llmax(col.mV[0], col.mV[1], col.mV[2]); + return llmax(col.mV[VRED], col.mV[VGREEN], col.mV[VBLUE]); } - -inline F32 color_min(const LLColor3 &col) +inline F32 color_min(const LLColor3& col) { - return llmin(col.mV[0], col.mV[1], col.mV[2]); + return llmin(col.mV[VRED], col.mV[VGREEN], col.mV[VBLUE]); } #endif diff --git a/indra/llmath/v3dmath.cpp b/indra/llmath/v3dmath.cpp index bb55c812b5..b051303686 100644 --- a/indra/llmath/v3dmath.cpp +++ b/indra/llmath/v3dmath.cpp @@ -30,7 +30,6 @@ #include "v3dmath.h" -//#include "vmath.h" #include "v4math.h" #include "m4math.h" #include "m3math.h" @@ -57,13 +56,13 @@ bool LLVector3d::clamp(F64 min, F64 max) { bool ret{ false }; - if (mdV[0] < min) { mdV[0] = min; ret = true; } - if (mdV[1] < min) { mdV[1] = min; ret = true; } - if (mdV[2] < min) { mdV[2] = min; ret = true; } + if (mdV[VX] < min) { mdV[VX] = min; ret = true; } + if (mdV[VY] < min) { mdV[VY] = min; ret = true; } + if (mdV[VZ] < min) { mdV[VZ] = min; ret = true; } - if (mdV[0] > max) { mdV[0] = max; ret = true; } - if (mdV[1] > max) { mdV[1] = max; ret = true; } - if (mdV[2] > max) { mdV[2] = max; ret = true; } + if (mdV[VX] > max) { mdV[VX] = max; ret = true; } + if (mdV[VY] > max) { mdV[VY] = max; ret = true; } + if (mdV[VZ] > max) { mdV[VZ] = max; ret = true; } return ret; } @@ -74,9 +73,9 @@ bool LLVector3d::abs() { bool ret{ false }; - if (mdV[0] < 0.0) { mdV[0] = -mdV[0]; ret = true; } - if (mdV[1] < 0.0) { mdV[1] = -mdV[1]; ret = true; } - if (mdV[2] < 0.0) { mdV[2] = -mdV[2]; ret = true; } + if (mdV[VX] < 0.0) { mdV[VX] = -mdV[VX]; ret = true; } + if (mdV[VY] < 0.0) { mdV[VY] = -mdV[VY]; ret = true; } + if (mdV[VZ] < 0.0) { mdV[VZ] = -mdV[VZ]; ret = true; } return ret; } @@ -89,37 +88,37 @@ std::ostream& operator<<(std::ostream& s, const LLVector3d &a) const LLVector3d& LLVector3d::operator=(const LLVector4 &a) { - mdV[0] = a.mV[0]; - mdV[1] = a.mV[1]; - mdV[2] = a.mV[2]; + mdV[VX] = a.mV[VX]; + mdV[VY] = a.mV[VY]; + mdV[VZ] = a.mV[VZ]; return *this; } -const LLVector3d& LLVector3d::rotVec(const LLMatrix3 &mat) +const LLVector3d& LLVector3d::rotVec(const LLMatrix3& mat) { *this = *this * mat; return *this; } -const LLVector3d& LLVector3d::rotVec(const LLQuaternion &q) +const LLVector3d& LLVector3d::rotVec(const LLQuaternion& q) { *this = *this * q; return *this; } -const LLVector3d& LLVector3d::rotVec(F64 angle, const LLVector3d &vec) +const LLVector3d& LLVector3d::rotVec(F64 angle, const LLVector3d& vec) { - if ( !vec.isExactlyZero() && angle ) + if (!vec.isExactlyZero() && angle) { *this = *this * LLMatrix3((F32)angle, vec); } return *this; } -const LLVector3d& LLVector3d::rotVec(F64 angle, F64 x, F64 y, F64 z) +const LLVector3d& LLVector3d::rotVec(F64 angle, F64 x, F64 y, F64 z) { LLVector3d vec(x, y, z); - if ( !vec.isExactlyZero() && angle ) + if (!vec.isExactlyZero() && angle) { *this = *this * LLMatrix3((F32)angle, vec); } @@ -129,16 +128,16 @@ const LLVector3d& LLVector3d::rotVec(F64 angle, F64 x, F64 y, F64 z) bool LLVector3d::parseVector3d(const std::string& buf, LLVector3d* value) { - if( buf.empty() || value == nullptr) + if (buf.empty() || value == nullptr) { return false; } LLVector3d v; - S32 count = sscanf( buf.c_str(), "%lf %lf %lf", v.mdV + 0, v.mdV + 1, v.mdV + 2 ); - if( 3 == count ) + S32 count = sscanf(buf.c_str(), "%lf %lf %lf", v.mdV + VX, v.mdV + VY, v.mdV + VZ); + if (3 == count) { - value->setVec( v ); + value->setVec(v); return true; } diff --git a/indra/llmath/v3dmath.h b/indra/llmath/v3dmath.h index ece8c54ea4..fcce2c30eb 100644 --- a/indra/llmath/v3dmath.h +++ b/indra/llmath/v3dmath.h @@ -32,128 +32,127 @@ class LLVector3d { - public: - F64 mdV[3]; - - const static LLVector3d zero; - const static LLVector3d x_axis; - const static LLVector3d y_axis; - const static LLVector3d z_axis; - const static LLVector3d x_axis_neg; - const static LLVector3d y_axis_neg; - const static LLVector3d z_axis_neg; - - inline LLVector3d(); // Initializes LLVector3d to (0, 0, 0) - inline LLVector3d(const F64 x, const F64 y, const F64 z); // Initializes LLVector3d to (x. y, z) - inline explicit LLVector3d(const F64 *vec); // Initializes LLVector3d to (vec[0]. vec[1], vec[2]) - inline explicit LLVector3d(const LLVector3 &vec); - explicit LLVector3d(const LLSD& sd) - { - setValue(sd); - } - - void setValue(const LLSD& sd) - { - mdV[0] = sd[0].asReal(); - mdV[1] = sd[1].asReal(); - mdV[2] = sd[2].asReal(); - } - - LLSD getValue() const - { - LLSD ret; - ret[0] = mdV[0]; - ret[1] = mdV[1]; - ret[2] = mdV[2]; - return ret; - } - - inline bool isFinite() const; // checks to see if all values of LLVector3d are finite - bool clamp(const F64 min, const F64 max); // Clamps all values to (min,max), returns true if data changed - bool abs(); // sets all values to absolute value of original value (first octant), returns true if changed - - inline const LLVector3d& clear(); // Clears LLVector3d to (0, 0, 0, 1) - inline const LLVector3d& clearVec(); // deprecated - inline const LLVector3d& setZero(); // Zero LLVector3d to (0, 0, 0, 0) - inline const LLVector3d& zeroVec(); // deprecated - inline const LLVector3d& set(const F64 x, const F64 y, const F64 z); // Sets LLVector3d to (x, y, z, 1) - inline const LLVector3d& set(const LLVector3d &vec); // Sets LLVector3d to vec - inline const LLVector3d& set(const F64 *vec); // Sets LLVector3d to vec - inline const LLVector3d& set(const LLVector3 &vec); - inline const LLVector3d& setVec(const F64 x, const F64 y, const F64 z); // deprecated - inline const LLVector3d& setVec(const LLVector3d &vec); // deprecated - inline const LLVector3d& setVec(const F64 *vec); // deprecated - inline const LLVector3d& setVec(const LLVector3 &vec); // deprecated - - F64 magVec() const; // deprecated - F64 magVecSquared() const; // deprecated - inline F64 normVec(); // deprecated - - F64 length() const; // Returns magnitude of LLVector3d - F64 lengthSquared() const; // Returns magnitude squared of LLVector3d - inline F64 normalize(); // Normalizes and returns the magnitude of LLVector3d - - const LLVector3d& rotVec(const F64 angle, const LLVector3d &vec); // Rotates about vec by angle radians - const LLVector3d& rotVec(const F64 angle, const F64 x, const F64 y, const F64 z); // Rotates about x,y,z by angle radians - const LLVector3d& rotVec(const LLMatrix3 &mat); // Rotates by LLMatrix4 mat - const LLVector3d& rotVec(const LLQuaternion &q); // Rotates by LLQuaternion q - - bool isNull() const; // Returns true if vector has a _very_small_ length - bool isExactlyZero() const { return !mdV[VX] && !mdV[VY] && !mdV[VZ]; } - - const LLVector3d& operator=(const LLVector4 &a); - - F64 operator[](int idx) const { return mdV[idx]; } - F64 &operator[](int idx) { return mdV[idx]; } - - friend LLVector3d operator+(const LLVector3d& a, const LLVector3d& b); // Return vector a + b - friend LLVector3d operator-(const LLVector3d& a, const LLVector3d& b); // Return vector a minus b - friend F64 operator*(const LLVector3d& a, const LLVector3d& b); // Return a dot b - friend LLVector3d operator%(const LLVector3d& a, const LLVector3d& b); // Return a cross b - friend LLVector3d operator*(const LLVector3d& a, const F64 k); // Return a times scaler k - friend LLVector3d operator/(const LLVector3d& a, const F64 k); // Return a divided by scaler k - friend LLVector3d operator*(const F64 k, const LLVector3d& a); // Return a times scaler k - friend bool operator==(const LLVector3d& a, const LLVector3d& b); // Return a == b - friend bool operator!=(const LLVector3d& a, const LLVector3d& b); // Return a != b - - friend const LLVector3d& operator+=(LLVector3d& a, const LLVector3d& b); // Return vector a + b - friend const LLVector3d& operator-=(LLVector3d& a, const LLVector3d& b); // Return vector a minus b - friend const LLVector3d& operator%=(LLVector3d& a, const LLVector3d& b); // Return a cross b - friend const LLVector3d& operator*=(LLVector3d& a, const F64 k); // Return a times scaler k - friend const LLVector3d& operator/=(LLVector3d& a, const F64 k); // Return a divided by scaler k - - friend LLVector3d operator-(const LLVector3d& a); // Return vector -a - - friend std::ostream& operator<<(std::ostream& s, const LLVector3d& a); // Stream a - - static bool parseVector3d(const std::string& buf, LLVector3d* value); +public: + F64 mdV[3]; + + const static LLVector3d zero; + const static LLVector3d x_axis; + const static LLVector3d y_axis; + const static LLVector3d z_axis; + const static LLVector3d x_axis_neg; + const static LLVector3d y_axis_neg; + const static LLVector3d z_axis_neg; + + inline LLVector3d(); // Initializes LLVector3d to (0, 0, 0) + inline LLVector3d(const F64 x, const F64 y, const F64 z); // Initializes LLVector3d to (x. y, z) + inline explicit LLVector3d(const F64 *vec); // Initializes LLVector3d to (vec[0]. vec[1], vec[2]) + inline explicit LLVector3d(const LLVector3 &vec); + explicit LLVector3d(const LLSD& sd) + { + setValue(sd); + } + + void setValue(const LLSD& sd) + { + mdV[VX] = sd[0].asReal(); + mdV[VY] = sd[1].asReal(); + mdV[VZ] = sd[2].asReal(); + } + LLSD getValue() const + { + LLSD ret; + ret[0] = mdV[VX]; + ret[1] = mdV[VY]; + ret[2] = mdV[VZ]; + return ret; + } + + inline bool isFinite() const; // checks to see if all values of LLVector3d are finite + bool clamp(const F64 min, const F64 max); // Clamps all values to (min,max), returns true if data changed + bool abs(); // sets all values to absolute value of original value (first octant), returns true if changed + + inline const LLVector3d& clear(); // Clears LLVector3d to (0, 0, 0, 1) + inline const LLVector3d& clearVec(); // deprecated + inline const LLVector3d& setZero(); // Zero LLVector3d to (0, 0, 0, 0) + inline const LLVector3d& zeroVec(); // deprecated + inline const LLVector3d& set(const F64 x, const F64 y, const F64 z); // Sets LLVector3d to (x, y, z, 1) + inline const LLVector3d& set(const LLVector3d &vec); // Sets LLVector3d to vec + inline const LLVector3d& set(const F64 *vec); // Sets LLVector3d to vec + inline const LLVector3d& set(const LLVector3 &vec); + inline const LLVector3d& setVec(const F64 x, const F64 y, const F64 z); // deprecated + inline const LLVector3d& setVec(const LLVector3d &vec); // deprecated + inline const LLVector3d& setVec(const F64 *vec); // deprecated + inline const LLVector3d& setVec(const LLVector3 &vec); // deprecated + + F64 magVec() const; // deprecated + F64 magVecSquared() const; // deprecated + inline F64 normVec(); // deprecated + + F64 length() const; // Returns magnitude of LLVector3d + F64 lengthSquared() const; // Returns magnitude squared of LLVector3d + inline F64 normalize(); // Normalizes and returns the magnitude of LLVector3d + + const LLVector3d& rotVec(const F64 angle, const LLVector3d &vec); // Rotates about vec by angle radians + const LLVector3d& rotVec(const F64 angle, const F64 x, const F64 y, const F64 z); // Rotates about x,y,z by angle radians + const LLVector3d& rotVec(const LLMatrix3 &mat); // Rotates by LLMatrix4 mat + const LLVector3d& rotVec(const LLQuaternion &q); // Rotates by LLQuaternion q + + bool isNull() const; // Returns true if vector has a _very_small_ length + bool isExactlyZero() const { return !mdV[VX] && !mdV[VY] && !mdV[VZ]; } + + const LLVector3d& operator=(const LLVector4 &a); + + F64 operator[](int idx) const { return mdV[idx]; } + F64 &operator[](int idx) { return mdV[idx]; } + + friend LLVector3d operator+(const LLVector3d& a, const LLVector3d& b); // Return vector a + b + friend LLVector3d operator-(const LLVector3d& a, const LLVector3d& b); // Return vector a minus b + friend F64 operator*(const LLVector3d& a, const LLVector3d& b); // Return a dot b + friend LLVector3d operator%(const LLVector3d& a, const LLVector3d& b); // Return a cross b + friend LLVector3d operator*(const LLVector3d& a, const F64 k); // Return a times scaler k + friend LLVector3d operator/(const LLVector3d& a, const F64 k); // Return a divided by scaler k + friend LLVector3d operator*(const F64 k, const LLVector3d& a); // Return a times scaler k + friend bool operator==(const LLVector3d& a, const LLVector3d& b); // Return a == b + friend bool operator!=(const LLVector3d& a, const LLVector3d& b); // Return a != b + + friend const LLVector3d& operator+=(LLVector3d& a, const LLVector3d& b); // Return vector a + b + friend const LLVector3d& operator-=(LLVector3d& a, const LLVector3d& b); // Return vector a minus b + friend const LLVector3d& operator%=(LLVector3d& a, const LLVector3d& b); // Return a cross b + friend const LLVector3d& operator*=(LLVector3d& a, const F64 k); // Return a times scaler k + friend const LLVector3d& operator/=(LLVector3d& a, const F64 k); // Return a divided by scaler k + + friend LLVector3d operator-(const LLVector3d& a); // Return vector -a + + friend std::ostream& operator<<(std::ostream& s, const LLVector3d& a); // Stream a + + static bool parseVector3d(const std::string& buf, LLVector3d* value); }; typedef LLVector3d LLGlobalVec; inline const LLVector3d &LLVector3d::set(const LLVector3 &vec) { - mdV[0] = vec.mV[0]; - mdV[1] = vec.mV[1]; - mdV[2] = vec.mV[2]; + mdV[VX] = vec.mV[VX]; + mdV[VY] = vec.mV[VY]; + mdV[VZ] = vec.mV[VZ]; return *this; } inline const LLVector3d &LLVector3d::setVec(const LLVector3 &vec) { - mdV[0] = vec.mV[0]; - mdV[1] = vec.mV[1]; - mdV[2] = vec.mV[2]; + mdV[VX] = vec.mV[VX]; + mdV[VY] = vec.mV[VY]; + mdV[VZ] = vec.mV[VZ]; return *this; } inline LLVector3d::LLVector3d(void) { - mdV[0] = 0.f; - mdV[1] = 0.f; - mdV[2] = 0.f; + mdV[VX] = 0.f; + mdV[VY] = 0.f; + mdV[VZ] = 0.f; } inline LLVector3d::LLVector3d(const F64 x, const F64 y, const F64 z) @@ -199,33 +198,33 @@ inline bool LLVector3d::isFinite() const inline const LLVector3d& LLVector3d::clear(void) { - mdV[0] = 0.f; - mdV[1] = 0.f; - mdV[2]= 0.f; + mdV[VX] = 0.f; + mdV[VY] = 0.f; + mdV[VZ] = 0.f; return (*this); } inline const LLVector3d& LLVector3d::clearVec(void) { - mdV[0] = 0.f; - mdV[1] = 0.f; - mdV[2]= 0.f; + mdV[VX] = 0.f; + mdV[VY] = 0.f; + mdV[VZ] = 0.f; return (*this); } inline const LLVector3d& LLVector3d::setZero(void) { - mdV[0] = 0.f; - mdV[1] = 0.f; - mdV[2] = 0.f; + mdV[VX] = 0.f; + mdV[VY] = 0.f; + mdV[VZ] = 0.f; return (*this); } inline const LLVector3d& LLVector3d::zeroVec(void) { - mdV[0] = 0.f; - mdV[1] = 0.f; - mdV[2] = 0.f; + mdV[VX] = 0.f; + mdV[VY] = 0.f; + mdV[VZ] = 0.f; return (*this); } @@ -239,17 +238,17 @@ inline const LLVector3d& LLVector3d::set(const F64 x, const F64 y, const F64 inline const LLVector3d& LLVector3d::set(const LLVector3d &vec) { - mdV[0] = vec.mdV[0]; - mdV[1] = vec.mdV[1]; - mdV[2] = vec.mdV[2]; + mdV[VX] = vec.mdV[VX]; + mdV[VY] = vec.mdV[VY]; + mdV[VZ] = vec.mdV[VZ]; return (*this); } inline const LLVector3d& LLVector3d::set(const F64 *vec) { - mdV[0] = vec[0]; - mdV[1] = vec[1]; - mdV[2] = vec[2]; + mdV[VX] = vec[0]; + mdV[VY] = vec[1]; + mdV[VZ] = vec[2]; return (*this); } @@ -261,61 +260,62 @@ inline const LLVector3d& LLVector3d::setVec(const F64 x, const F64 y, const F return (*this); } -inline const LLVector3d& LLVector3d::setVec(const LLVector3d &vec) +inline const LLVector3d& LLVector3d::setVec(const LLVector3d& vec) { - mdV[0] = vec.mdV[0]; - mdV[1] = vec.mdV[1]; - mdV[2] = vec.mdV[2]; + mdV[VX] = vec.mdV[VX]; + mdV[VY] = vec.mdV[VY]; + mdV[VZ] = vec.mdV[VZ]; return (*this); } -inline const LLVector3d& LLVector3d::setVec(const F64 *vec) +inline const LLVector3d& LLVector3d::setVec(const F64* vec) { - mdV[0] = vec[0]; - mdV[1] = vec[1]; - mdV[2] = vec[2]; + mdV[VX] = vec[VX]; + mdV[VY] = vec[VY]; + mdV[VZ] = vec[VZ]; return (*this); } -inline F64 LLVector3d::normVec(void) +inline F64 LLVector3d::normVec() { - F64 mag = (F32) sqrt(mdV[0]*mdV[0] + mdV[1]*mdV[1] + mdV[2]*mdV[2]); + F64 mag = (F32)sqrt(mdV[VX]*mdV[VX] + mdV[VY]*mdV[VY] + mdV[VZ]*mdV[VZ]); // This explicit cast to F32 limits the precision for numerical stability. + // Without it, Unit test "v3dmath_h" fails at "1:angle_between" on macos. F64 oomag; if (mag > FP_MAG_THRESHOLD) { - oomag = 1.f/mag; - mdV[0] *= oomag; - mdV[1] *= oomag; - mdV[2] *= oomag; + oomag = 1.0/mag; + mdV[VX] *= oomag; + mdV[VY] *= oomag; + mdV[VZ] *= oomag; } else { - mdV[0] = 0.f; - mdV[1] = 0.f; - mdV[2] = 0.f; + mdV[VX] = 0.0; + mdV[VY] = 0.0; + mdV[VZ] = 0.0; mag = 0; } return (mag); } -inline F64 LLVector3d::normalize(void) +inline F64 LLVector3d::normalize() { - F64 mag = (F32) sqrt(mdV[0]*mdV[0] + mdV[1]*mdV[1] + mdV[2]*mdV[2]); + F64 mag = (F32)sqrt(mdV[VX]*mdV[VX] + mdV[VY]*mdV[VY] + mdV[VZ]*mdV[VZ]); // Same as in normVec() above. F64 oomag; if (mag > FP_MAG_THRESHOLD) { - oomag = 1.f/mag; - mdV[0] *= oomag; - mdV[1] *= oomag; - mdV[2] *= oomag; + oomag = 1.0/mag; + mdV[VX] *= oomag; + mdV[VY] *= oomag; + mdV[VZ] *= oomag; } else { - mdV[0] = 0.f; - mdV[1] = 0.f; - mdV[2] = 0.f; + mdV[VX] = 0.0; + mdV[VY] = 0.0; + mdV[VZ] = 0.0; mag = 0; } return (mag); @@ -323,24 +323,24 @@ inline F64 LLVector3d::normalize(void) // LLVector3d Magnitude and Normalization Functions -inline F64 LLVector3d::magVec(void) const +inline F64 LLVector3d::magVec() const { - return (F32) sqrt(mdV[0]*mdV[0] + mdV[1]*mdV[1] + mdV[2]*mdV[2]); + return sqrt(mdV[VX]*mdV[VX] + mdV[VY]*mdV[VY] + mdV[VZ]*mdV[VZ]); } -inline F64 LLVector3d::magVecSquared(void) const +inline F64 LLVector3d::magVecSquared() const { - return mdV[0]*mdV[0] + mdV[1]*mdV[1] + mdV[2]*mdV[2]; + return mdV[VX]*mdV[VX] + mdV[VY]*mdV[VY] + mdV[VZ]*mdV[VZ]; } -inline F64 LLVector3d::length(void) const +inline F64 LLVector3d::length() const { - return (F32) sqrt(mdV[0]*mdV[0] + mdV[1]*mdV[1] + mdV[2]*mdV[2]); + return sqrt(mdV[VX]*mdV[VX] + mdV[VY]*mdV[VY] + mdV[VZ]*mdV[VZ]); } -inline F64 LLVector3d::lengthSquared(void) const +inline F64 LLVector3d::lengthSquared() const { - return mdV[0]*mdV[0] + mdV[1]*mdV[1] + mdV[2]*mdV[2]; + return mdV[VX]*mdV[VX] + mdV[VY]*mdV[VY] + mdV[VZ]*mdV[VZ]; } inline LLVector3d operator+(const LLVector3d& a, const LLVector3d& b) @@ -357,109 +357,109 @@ inline LLVector3d operator-(const LLVector3d& a, const LLVector3d& b) inline F64 operator*(const LLVector3d& a, const LLVector3d& b) { - return (a.mdV[0]*b.mdV[0] + a.mdV[1]*b.mdV[1] + a.mdV[2]*b.mdV[2]); + return (a.mdV[VX]*b.mdV[VX] + a.mdV[VY]*b.mdV[VY] + a.mdV[VZ]*b.mdV[VZ]); } inline LLVector3d operator%(const LLVector3d& a, const LLVector3d& b) { - return LLVector3d( a.mdV[1]*b.mdV[2] - b.mdV[1]*a.mdV[2], a.mdV[2]*b.mdV[0] - b.mdV[2]*a.mdV[0], a.mdV[0]*b.mdV[1] - b.mdV[0]*a.mdV[1] ); + return LLVector3d( a.mdV[VY]*b.mdV[VZ] - b.mdV[VY]*a.mdV[VZ], a.mdV[VZ]*b.mdV[VX] - b.mdV[VZ]*a.mdV[VX], a.mdV[VX]*b.mdV[VY] - b.mdV[VX]*a.mdV[VY] ); } inline LLVector3d operator/(const LLVector3d& a, const F64 k) { F64 t = 1.f / k; - return LLVector3d( a.mdV[0] * t, a.mdV[1] * t, a.mdV[2] * t ); + return LLVector3d( a.mdV[VX] * t, a.mdV[VY] * t, a.mdV[VZ] * t ); } inline LLVector3d operator*(const LLVector3d& a, const F64 k) { - return LLVector3d( a.mdV[0] * k, a.mdV[1] * k, a.mdV[2] * k ); + return LLVector3d( a.mdV[VX] * k, a.mdV[VY] * k, a.mdV[VZ] * k ); } inline LLVector3d operator*(F64 k, const LLVector3d& a) { - return LLVector3d( a.mdV[0] * k, a.mdV[1] * k, a.mdV[2] * k ); + return LLVector3d( a.mdV[VX] * k, a.mdV[VY] * k, a.mdV[VZ] * k ); } inline bool operator==(const LLVector3d& a, const LLVector3d& b) { - return ( (a.mdV[0] == b.mdV[0]) - &&(a.mdV[1] == b.mdV[1]) - &&(a.mdV[2] == b.mdV[2])); + return ( (a.mdV[VX] == b.mdV[VX]) + &&(a.mdV[VY] == b.mdV[VY]) + &&(a.mdV[VZ] == b.mdV[VZ])); } inline bool operator!=(const LLVector3d& a, const LLVector3d& b) { - return ( (a.mdV[0] != b.mdV[0]) - ||(a.mdV[1] != b.mdV[1]) - ||(a.mdV[2] != b.mdV[2])); + return ( (a.mdV[VX] != b.mdV[VX]) + ||(a.mdV[VY] != b.mdV[VY]) + ||(a.mdV[VZ] != b.mdV[VZ])); } inline const LLVector3d& operator+=(LLVector3d& a, const LLVector3d& b) { - a.mdV[0] += b.mdV[0]; - a.mdV[1] += b.mdV[1]; - a.mdV[2] += b.mdV[2]; + a.mdV[VX] += b.mdV[VX]; + a.mdV[VY] += b.mdV[VY]; + a.mdV[VZ] += b.mdV[VZ]; return a; } inline const LLVector3d& operator-=(LLVector3d& a, const LLVector3d& b) { - a.mdV[0] -= b.mdV[0]; - a.mdV[1] -= b.mdV[1]; - a.mdV[2] -= b.mdV[2]; + a.mdV[VX] -= b.mdV[VX]; + a.mdV[VY] -= b.mdV[VY]; + a.mdV[VZ] -= b.mdV[VZ]; return a; } inline const LLVector3d& operator%=(LLVector3d& a, const LLVector3d& b) { - LLVector3d ret( a.mdV[1]*b.mdV[2] - b.mdV[1]*a.mdV[2], a.mdV[2]*b.mdV[0] - b.mdV[2]*a.mdV[0], a.mdV[0]*b.mdV[1] - b.mdV[0]*a.mdV[1]); + LLVector3d ret( a.mdV[VY]*b.mdV[VZ] - b.mdV[VY]*a.mdV[VZ], a.mdV[VZ]*b.mdV[VX] - b.mdV[VZ]*a.mdV[VX], a.mdV[VX]*b.mdV[VY] - b.mdV[VX]*a.mdV[VY]); a = ret; return a; } inline const LLVector3d& operator*=(LLVector3d& a, const F64 k) { - a.mdV[0] *= k; - a.mdV[1] *= k; - a.mdV[2] *= k; + a.mdV[VX] *= k; + a.mdV[VY] *= k; + a.mdV[VZ] *= k; return a; } inline const LLVector3d& operator/=(LLVector3d& a, const F64 k) { F64 t = 1.f / k; - a.mdV[0] *= t; - a.mdV[1] *= t; - a.mdV[2] *= t; + a.mdV[VX] *= t; + a.mdV[VY] *= t; + a.mdV[VZ] *= t; return a; } inline LLVector3d operator-(const LLVector3d& a) { - return LLVector3d( -a.mdV[0], -a.mdV[1], -a.mdV[2] ); + return LLVector3d( -a.mdV[VX], -a.mdV[VY], -a.mdV[VZ] ); } inline F64 dist_vec(const LLVector3d& a, const LLVector3d& b) { - F64 x = a.mdV[0] - b.mdV[0]; - F64 y = a.mdV[1] - b.mdV[1]; - F64 z = a.mdV[2] - b.mdV[2]; + F64 x = a.mdV[VX] - b.mdV[VX]; + F64 y = a.mdV[VY] - b.mdV[VY]; + F64 z = a.mdV[VZ] - b.mdV[VZ]; return (F32) sqrt( x*x + y*y + z*z ); } inline F64 dist_vec_squared(const LLVector3d& a, const LLVector3d& b) { - F64 x = a.mdV[0] - b.mdV[0]; - F64 y = a.mdV[1] - b.mdV[1]; - F64 z = a.mdV[2] - b.mdV[2]; + F64 x = a.mdV[VX] - b.mdV[VX]; + F64 y = a.mdV[VY] - b.mdV[VY]; + F64 z = a.mdV[VZ] - b.mdV[VZ]; return x*x + y*y + z*z; } inline F64 dist_vec_squared2D(const LLVector3d& a, const LLVector3d& b) { - F64 x = a.mdV[0] - b.mdV[0]; - F64 y = a.mdV[1] - b.mdV[1]; + F64 x = a.mdV[VX] - b.mdV[VX]; + F64 y = a.mdV[VY] - b.mdV[VY]; return x*x + y*y; } diff --git a/indra/llmath/v3math.cpp b/indra/llmath/v3math.cpp index 73ad2a4ed6..eac95ed023 100644 --- a/indra/llmath/v3math.cpp +++ b/indra/llmath/v3math.cpp @@ -28,7 +28,6 @@ #include "v3math.h" -//#include "vmath.h" #include "v2math.h" #include "v4math.h" #include "m4math.h" @@ -58,13 +57,13 @@ bool LLVector3::clamp(F32 min, F32 max) { bool ret{ false }; - if (mV[0] < min) { mV[0] = min; ret = true; } - if (mV[1] < min) { mV[1] = min; ret = true; } - if (mV[2] < min) { mV[2] = min; ret = true; } + if (mV[VX] < min) { mV[VX] = min; ret = true; } + if (mV[VY] < min) { mV[VY] = min; ret = true; } + if (mV[VZ] < min) { mV[VZ] = min; ret = true; } - if (mV[0] > max) { mV[0] = max; ret = true; } - if (mV[1] > max) { mV[1] = max; ret = true; } - if (mV[2] > max) { mV[2] = max; ret = true; } + if (mV[VX] > max) { mV[VX] = max; ret = true; } + if (mV[VY] > max) { mV[VY] = max; ret = true; } + if (mV[VZ] > max) { mV[VZ] = max; ret = true; } return ret; } @@ -85,9 +84,9 @@ bool LLVector3::clampLength( F32 length_limit ) { length_limit = 0.f; } - mV[0] *= length_limit; - mV[1] *= length_limit; - mV[2] *= length_limit; + mV[VX] *= length_limit; + mV[VY] *= length_limit; + mV[VZ] *= length_limit; changed = true; } } @@ -116,35 +115,35 @@ bool LLVector3::clampLength( F32 length_limit ) { // yes it can be salvaged --> // bring the components down before we normalize - mV[0] /= max_abs_component; - mV[1] /= max_abs_component; - mV[2] /= max_abs_component; + mV[VX] /= max_abs_component; + mV[VY] /= max_abs_component; + mV[VZ] /= max_abs_component; normalize(); if (length_limit < 0.f) { length_limit = 0.f; } - mV[0] *= length_limit; - mV[1] *= length_limit; - mV[2] *= length_limit; + mV[VX] *= length_limit; + mV[VY] *= length_limit; + mV[VZ] *= length_limit; } } return changed; } -bool LLVector3::clamp(const LLVector3 &min_vec, const LLVector3 &max_vec) +bool LLVector3::clamp(const LLVector3& min_vec, const LLVector3& max_vec) { bool ret{ false }; - if (mV[0] < min_vec[0]) { mV[0] = min_vec[0]; ret = true; } - if (mV[1] < min_vec[1]) { mV[1] = min_vec[1]; ret = true; } - if (mV[2] < min_vec[2]) { mV[2] = min_vec[2]; ret = true; } + if (mV[VX] < min_vec[0]) { mV[VX] = min_vec[0]; ret = true; } + if (mV[VY] < min_vec[1]) { mV[VY] = min_vec[1]; ret = true; } + if (mV[VZ] < min_vec[2]) { mV[VZ] = min_vec[2]; ret = true; } - if (mV[0] > max_vec[0]) { mV[0] = max_vec[0]; ret = true; } - if (mV[1] > max_vec[1]) { mV[1] = max_vec[1]; ret = true; } - if (mV[2] > max_vec[2]) { mV[2] = max_vec[2]; ret = true; } + if (mV[VX] > max_vec[0]) { mV[VX] = max_vec[0]; ret = true; } + if (mV[VY] > max_vec[1]) { mV[VY] = max_vec[1]; ret = true; } + if (mV[VZ] > max_vec[2]) { mV[VZ] = max_vec[2]; ret = true; } return ret; } @@ -156,15 +155,15 @@ bool LLVector3::abs() { bool ret{ false }; - if (mV[0] < 0.f) { mV[0] = -mV[0]; ret = true; } - if (mV[1] < 0.f) { mV[1] = -mV[1]; ret = true; } - if (mV[2] < 0.f) { mV[2] = -mV[2]; ret = true; } + if (mV[VX] < 0.f) { mV[VX] = -mV[VX]; ret = true; } + if (mV[VY] < 0.f) { mV[VY] = -mV[VY]; ret = true; } + if (mV[VZ] < 0.f) { mV[VZ] = -mV[VZ]; ret = true; } return ret; } // Quatizations -void LLVector3::quantize16(F32 lowerxy, F32 upperxy, F32 lowerz, F32 upperz) +void LLVector3::quantize16(F32 lowerxy, F32 upperxy, F32 lowerz, F32 upperz) { F32 x = mV[VX]; F32 y = mV[VY]; @@ -179,7 +178,7 @@ void LLVector3::quantize16(F32 lowerxy, F32 upperxy, F32 lowerz, F32 upperz) mV[VZ] = z; } -void LLVector3::quantize8(F32 lowerxy, F32 upperxy, F32 lowerz, F32 upperz) +void LLVector3::quantize8(F32 lowerxy, F32 upperxy, F32 lowerz, F32 upperz) { mV[VX] = U8_to_F32(F32_to_U8(mV[VX], lowerxy, upperxy), lowerxy, upperxy);; mV[VY] = U8_to_F32(F32_to_U8(mV[VY], lowerxy, upperxy), lowerxy, upperxy); @@ -187,20 +186,20 @@ void LLVector3::quantize8(F32 lowerxy, F32 upperxy, F32 lowerz, F32 upperz) } -void LLVector3::snap(S32 sig_digits) +void LLVector3::snap(S32 sig_digits) { mV[VX] = snap_to_sig_figs(mV[VX], sig_digits); mV[VY] = snap_to_sig_figs(mV[VY], sig_digits); mV[VZ] = snap_to_sig_figs(mV[VZ], sig_digits); } -const LLVector3& LLVector3::rotVec(const LLMatrix3 &mat) +const LLVector3& LLVector3::rotVec(const LLMatrix3& mat) { *this = *this * mat; return *this; } -const LLVector3& LLVector3::rotVec(const LLQuaternion &q) +const LLVector3& LLVector3::rotVec(const LLQuaternion& q) { *this = *this * q; return *this; @@ -228,26 +227,26 @@ const LLVector3& LLVector3::transVec(const LLMatrix4& mat) } -const LLVector3& LLVector3::rotVec(F32 angle, const LLVector3 &vec) +const LLVector3& LLVector3::rotVec(F32 angle, const LLVector3& vec) { - if ( !vec.isExactlyZero() && angle ) + if (!vec.isExactlyZero() && angle) { *this = *this * LLQuaternion(angle, vec); } return *this; } -const LLVector3& LLVector3::rotVec(F32 angle, F32 x, F32 y, F32 z) +const LLVector3& LLVector3::rotVec(F32 angle, F32 x, F32 y, F32 z) { LLVector3 vec(x, y, z); - if ( !vec.isExactlyZero() && angle ) + if (!vec.isExactlyZero() && angle) { *this = *this * LLQuaternion(angle, vec); } return *this; } -const LLVector3& LLVector3::scaleVec(const LLVector3& vec) +const LLVector3& LLVector3::scaleVec(const LLVector3& vec) { mV[VX] *= vec.mV[VX]; mV[VY] *= vec.mV[VY]; @@ -256,42 +255,42 @@ const LLVector3& LLVector3::scaleVec(const LLVector3& vec) return *this; } -LLVector3 LLVector3::scaledVec(const LLVector3& vec) const +LLVector3 LLVector3::scaledVec(const LLVector3& vec) const { LLVector3 ret = LLVector3(*this); ret.scaleVec(vec); return ret; } -const LLVector3& LLVector3::set(const LLVector3d &vec) +const LLVector3& LLVector3::set(const LLVector3d& vec) { - mV[0] = (F32)vec.mdV[0]; - mV[1] = (F32)vec.mdV[1]; - mV[2] = (F32)vec.mdV[2]; + mV[VX] = (F32)vec.mdV[VX]; + mV[VY] = (F32)vec.mdV[VY]; + mV[VZ] = (F32)vec.mdV[VZ]; return (*this); } -const LLVector3& LLVector3::set(const LLVector4 &vec) +const LLVector3& LLVector3::set(const LLVector4& vec) { - mV[0] = vec.mV[0]; - mV[1] = vec.mV[1]; - mV[2] = vec.mV[2]; + mV[VX] = vec.mV[VX]; + mV[VY] = vec.mV[VY]; + mV[VZ] = vec.mV[VZ]; return (*this); } -const LLVector3& LLVector3::setVec(const LLVector3d &vec) +const LLVector3& LLVector3::setVec(const LLVector3d& vec) { - mV[0] = (F32)vec.mdV[0]; - mV[1] = (F32)vec.mdV[1]; - mV[2] = (F32)vec.mdV[2]; + mV[VX] = (F32)vec.mdV[0]; + mV[VY] = (F32)vec.mdV[1]; + mV[VZ] = (F32)vec.mdV[2]; return (*this); } -const LLVector3& LLVector3::setVec(const LLVector4 &vec) +const LLVector3& LLVector3::setVec(const LLVector4& vec) { - mV[0] = vec.mV[0]; - mV[1] = vec.mV[1]; - mV[2] = vec.mV[2]; + mV[VX] = vec.mV[VX]; + mV[VY] = vec.mV[VY]; + mV[VZ] = vec.mV[VZ]; return (*this); } @@ -299,17 +298,17 @@ LLVector3::LLVector3(const LLVector2 &vec) { mV[VX] = (F32)vec.mV[VX]; mV[VY] = (F32)vec.mV[VY]; - mV[VZ] = 0; + mV[VZ] = 0.f; } -LLVector3::LLVector3(const LLVector3d &vec) +LLVector3::LLVector3(const LLVector3d& vec) { mV[VX] = (F32)vec.mdV[VX]; mV[VY] = (F32)vec.mdV[VY]; mV[VZ] = (F32)vec.mdV[VZ]; } -LLVector3::LLVector3(const LLVector4 &vec) +LLVector3::LLVector3(const LLVector4& vec) { mV[VX] = (F32)vec.mV[VX]; mV[VY] = (F32)vec.mV[VY]; @@ -319,7 +318,6 @@ LLVector3::LLVector3(const LLVector4 &vec) LLVector3::LLVector3(const LLVector4a& vec) : LLVector3(vec.getF32ptr()) { - } LLVector3::LLVector3(const LLSD& sd) @@ -330,20 +328,20 @@ LLVector3::LLVector3(const LLSD& sd) LLSD LLVector3::getValue() const { LLSD ret; - ret[0] = mV[0]; - ret[1] = mV[1]; - ret[2] = mV[2]; + ret[VX] = mV[VX]; + ret[VY] = mV[VY]; + ret[VZ] = mV[VZ]; return ret; } void LLVector3::setValue(const LLSD& sd) { - mV[0] = (F32) sd[0].asReal(); - mV[1] = (F32) sd[1].asReal(); - mV[2] = (F32) sd[2].asReal(); + mV[VX] = (F32) sd[VX].asReal(); + mV[VY] = (F32) sd[VY].asReal(); + mV[VZ] = (F32) sd[VZ].asReal(); } -const LLVector3& operator*=(LLVector3 &a, const LLQuaternion &rot) +const LLVector3& operator*=(LLVector3& a, const LLQuaternion& rot) { const F32 rw = - rot.mQ[VX] * a.mV[VX] - rot.mQ[VY] * a.mV[VY] - rot.mQ[VZ] * a.mV[VZ]; const F32 rx = rot.mQ[VW] * a.mV[VX] + rot.mQ[VY] * a.mV[VZ] - rot.mQ[VZ] * a.mV[VY]; @@ -360,16 +358,16 @@ const LLVector3& operator*=(LLVector3 &a, const LLQuaternion &rot) // static bool LLVector3::parseVector3(const std::string& buf, LLVector3* value) { - if( buf.empty() || value == nullptr) + if (buf.empty() || value == nullptr) { return false; } LLVector3 v; - S32 count = sscanf( buf.c_str(), "%f %f %f", v.mV + 0, v.mV + 1, v.mV + 2 ); - if( 3 == count ) + S32 count = sscanf(buf.c_str(), "%f %f %f", v.mV + VX, v.mV + VY, v.mV + VZ); + if (3 == count) { - value->setVec( v ); + value->setVec(v); return true; } @@ -381,7 +379,7 @@ bool LLVector3::parseVector3(const std::string& buf, LLVector3* value) LLVector3 point_to_box_offset(LLVector3& pos, const LLVector3* box) { LLVector3 offset; - for (S32 k=0; k<3; k++) + for (S32 k = 0; k < 3; k++) { offset[k] = 0; if (pos[k] < box[0][k]) @@ -410,4 +408,3 @@ bool box_valid_and_non_zero(const LLVector3* box) } return false; } - diff --git a/indra/llmath/v3math.h b/indra/llmath/v3math.h index a3bfa68060..551c7df6c9 100644 --- a/indra/llmath/v3math.h +++ b/indra/llmath/v3math.h @@ -46,7 +46,7 @@ class LLQuaternion; // LLvector3 = |x y z w| -static const U32 LENGTHOFVECTOR3 = 3; +static constexpr U32 LENGTHOFVECTOR3 = 3; class LLVector3 { @@ -181,11 +181,11 @@ LLVector3 lerp(const LLVector3 &a, const LLVector3 &b, F32 u); // Returns a vect LLVector3 point_to_box_offset(LLVector3& pos, const LLVector3* box); // Displacement from query point to nearest point on bounding box. bool box_valid_and_non_zero(const LLVector3* box); -inline LLVector3::LLVector3(void) +inline LLVector3::LLVector3() { - mV[0] = 0.f; - mV[1] = 0.f; - mV[2] = 0.f; + mV[VX] = 0.f; + mV[VY] = 0.f; + mV[VZ] = 0.f; } inline LLVector3::LLVector3(const F32 x, const F32 y, const F32 z) @@ -236,32 +236,32 @@ inline bool LLVector3::isFinite() const // Clear and Assignment Functions -inline void LLVector3::clear(void) +inline void LLVector3::clear() { - mV[0] = 0.f; - mV[1] = 0.f; - mV[2] = 0.f; + mV[VX] = 0.f; + mV[VY] = 0.f; + mV[VZ] = 0.f; } -inline void LLVector3::setZero(void) +inline void LLVector3::setZero() { - mV[0] = 0.f; - mV[1] = 0.f; - mV[2] = 0.f; + mV[VX] = 0.f; + mV[VY] = 0.f; + mV[VZ] = 0.f; } -inline void LLVector3::clearVec(void) +inline void LLVector3::clearVec() { - mV[0] = 0.f; - mV[1] = 0.f; - mV[2] = 0.f; + mV[VX] = 0.f; + mV[VY] = 0.f; + mV[VZ] = 0.f; } -inline void LLVector3::zeroVec(void) +inline void LLVector3::zeroVec() { - mV[0] = 0.f; - mV[1] = 0.f; - mV[2] = 0.f; + mV[VX] = 0.f; + mV[VY] = 0.f; + mV[VZ] = 0.f; } inline void LLVector3::set(F32 x, F32 y, F32 z) @@ -271,18 +271,18 @@ inline void LLVector3::set(F32 x, F32 y, F32 z) mV[VZ] = z; } -inline void LLVector3::set(const LLVector3 &vec) +inline void LLVector3::set(const LLVector3& vec) { - mV[0] = vec.mV[0]; - mV[1] = vec.mV[1]; - mV[2] = vec.mV[2]; + mV[VX] = vec.mV[VX]; + mV[VY] = vec.mV[VY]; + mV[VZ] = vec.mV[VZ]; } -inline void LLVector3::set(const F32 *vec) +inline void LLVector3::set(const F32* vec) { - mV[0] = vec[0]; - mV[1] = vec[1]; - mV[2] = vec[2]; + mV[VX] = vec[VX]; + mV[VY] = vec[VY]; + mV[VZ] = vec[VZ]; } inline void LLVector3::set(const glm::vec4& vec) @@ -308,61 +308,61 @@ inline void LLVector3::setVec(F32 x, F32 y, F32 z) } // deprecated -inline void LLVector3::setVec(const LLVector3 &vec) +inline void LLVector3::setVec(const LLVector3& vec) { - mV[0] = vec.mV[0]; - mV[1] = vec.mV[1]; - mV[2] = vec.mV[2]; + mV[VX] = vec.mV[VX]; + mV[VY] = vec.mV[VY]; + mV[VZ] = vec.mV[VZ]; } // deprecated -inline void LLVector3::setVec(const F32 *vec) +inline void LLVector3::setVec(const F32* vec) { - mV[0] = vec[0]; - mV[1] = vec[1]; - mV[2] = vec[2]; + mV[VX] = vec[0]; + mV[VY] = vec[1]; + mV[VZ] = vec[2]; } -inline F32 LLVector3::normalize(void) +inline F32 LLVector3::normalize() { - F32 mag = (F32) sqrt(mV[0]*mV[0] + mV[1]*mV[1] + mV[2]*mV[2]); + F32 mag = (F32) sqrt(mV[VX]*mV[VX] + mV[VY]*mV[VY] + mV[VZ]*mV[VZ]); F32 oomag; if (mag > FP_MAG_THRESHOLD) { oomag = 1.f/mag; - mV[0] *= oomag; - mV[1] *= oomag; - mV[2] *= oomag; + mV[VX] *= oomag; + mV[VY] *= oomag; + mV[VZ] *= oomag; } else { - mV[0] = 0.f; - mV[1] = 0.f; - mV[2] = 0.f; + mV[VX] = 0.f; + mV[VY] = 0.f; + mV[VZ] = 0.f; mag = 0; } return (mag); } // deprecated -inline F32 LLVector3::normVec(void) +inline F32 LLVector3::normVec() { - F32 mag = (F32) sqrt(mV[0]*mV[0] + mV[1]*mV[1] + mV[2]*mV[2]); + F32 mag = sqrt(mV[VX]*mV[VX] + mV[VY]*mV[VY] + mV[VZ]*mV[VZ]); F32 oomag; if (mag > FP_MAG_THRESHOLD) { oomag = 1.f/mag; - mV[0] *= oomag; - mV[1] *= oomag; - mV[2] *= oomag; + mV[VX] *= oomag; + mV[VY] *= oomag; + mV[VZ] *= oomag; } else { - mV[0] = 0.f; - mV[1] = 0.f; - mV[2] = 0.f; + mV[VX] = 0.f; + mV[VY] = 0.f; + mV[VZ] = 0.f; mag = 0; } return (mag); @@ -370,145 +370,144 @@ inline F32 LLVector3::normVec(void) // LLVector3 Magnitude and Normalization Functions -inline F32 LLVector3::length(void) const +inline F32 LLVector3::length() const { - return (F32) sqrt(mV[0]*mV[0] + mV[1]*mV[1] + mV[2]*mV[2]); + return sqrt(mV[VX]*mV[VX] + mV[VY]*mV[VY] + mV[VZ]*mV[VZ]); } -inline F32 LLVector3::lengthSquared(void) const +inline F32 LLVector3::lengthSquared() const { - return mV[0]*mV[0] + mV[1]*mV[1] + mV[2]*mV[2]; + return mV[VX]*mV[VX] + mV[VY]*mV[VY] + mV[VZ]*mV[VZ]; } -inline F32 LLVector3::magVec(void) const +inline F32 LLVector3::magVec() const { - return (F32) sqrt(mV[0]*mV[0] + mV[1]*mV[1] + mV[2]*mV[2]); + return sqrt(mV[VX]*mV[VX] + mV[VY]*mV[VY] + mV[VZ]*mV[VZ]); } -inline F32 LLVector3::magVecSquared(void) const +inline F32 LLVector3::magVecSquared() const { - return mV[0]*mV[0] + mV[1]*mV[1] + mV[2]*mV[2]; + return mV[VX]*mV[VX] + mV[VY]*mV[VY] + mV[VZ]*mV[VZ]; } inline bool LLVector3::inRange( F32 min, F32 max ) const { - return mV[0] >= min && mV[0] <= max && - mV[1] >= min && mV[1] <= max && - mV[2] >= min && mV[2] <= max; + return mV[VX] >= min && mV[VX] <= max && + mV[VY] >= min && mV[VY] <= max && + mV[VZ] >= min && mV[VZ] <= max; } -inline LLVector3 operator+(const LLVector3 &a, const LLVector3 &b) +inline LLVector3 operator+(const LLVector3& a, const LLVector3& b) { LLVector3 c(a); return c += b; } -inline LLVector3 operator-(const LLVector3 &a, const LLVector3 &b) +inline LLVector3 operator-(const LLVector3& a, const LLVector3& b) { LLVector3 c(a); return c -= b; } -inline F32 operator*(const LLVector3 &a, const LLVector3 &b) +inline F32 operator*(const LLVector3& a, const LLVector3& b) { - return (a.mV[0]*b.mV[0] + a.mV[1]*b.mV[1] + a.mV[2]*b.mV[2]); + return (a.mV[VX]*b.mV[VX] + a.mV[VY]*b.mV[VY] + a.mV[VZ]*b.mV[VZ]); } -inline LLVector3 operator%(const LLVector3 &a, const LLVector3 &b) +inline LLVector3 operator%(const LLVector3& a, const LLVector3& b) { - return LLVector3( a.mV[1]*b.mV[2] - b.mV[1]*a.mV[2], a.mV[2]*b.mV[0] - b.mV[2]*a.mV[0], a.mV[0]*b.mV[1] - b.mV[0]*a.mV[1] ); + return LLVector3( a.mV[VY]*b.mV[VZ] - b.mV[VY]*a.mV[VZ], a.mV[VZ]*b.mV[VX] - b.mV[VZ]*a.mV[VX], a.mV[VX]*b.mV[VY] - b.mV[VX]*a.mV[VY] ); } -inline LLVector3 operator/(const LLVector3 &a, F32 k) +inline LLVector3 operator/(const LLVector3& a, F32 k) { F32 t = 1.f / k; - return LLVector3( a.mV[0] * t, a.mV[1] * t, a.mV[2] * t ); + return LLVector3( a.mV[VX] * t, a.mV[VY] * t, a.mV[VZ] * t ); } -inline LLVector3 operator*(const LLVector3 &a, F32 k) +inline LLVector3 operator*(const LLVector3& a, F32 k) { - return LLVector3( a.mV[0] * k, a.mV[1] * k, a.mV[2] * k ); + return LLVector3( a.mV[VX] * k, a.mV[VY] * k, a.mV[VZ] * k ); } -inline LLVector3 operator*(F32 k, const LLVector3 &a) +inline LLVector3 operator*(F32 k, const LLVector3& a) { - return LLVector3( a.mV[0] * k, a.mV[1] * k, a.mV[2] * k ); + return LLVector3( a.mV[VX] * k, a.mV[VY] * k, a.mV[VZ] * k ); } -inline bool operator==(const LLVector3 &a, const LLVector3 &b) +inline bool operator==(const LLVector3& a, const LLVector3& b) { - return ( (a.mV[0] == b.mV[0]) - &&(a.mV[1] == b.mV[1]) - &&(a.mV[2] == b.mV[2])); + return ( (a.mV[VX] == b.mV[VX]) + &&(a.mV[VY] == b.mV[VY]) + &&(a.mV[VZ] == b.mV[VZ])); } -inline bool operator!=(const LLVector3 &a, const LLVector3 &b) +inline bool operator!=(const LLVector3& a, const LLVector3& b) { - return ( (a.mV[0] != b.mV[0]) - ||(a.mV[1] != b.mV[1]) - ||(a.mV[2] != b.mV[2])); + return ( (a.mV[VX] != b.mV[VX]) + ||(a.mV[VY] != b.mV[VY]) + ||(a.mV[VZ] != b.mV[VZ])); } -inline bool operator<(const LLVector3 &a, const LLVector3 &b) +inline bool operator<(const LLVector3& a, const LLVector3& b) { - return (a.mV[0] < b.mV[0] - || (a.mV[0] == b.mV[0] - && (a.mV[1] < b.mV[1] - || ((a.mV[1] == b.mV[1]) - && a.mV[2] < b.mV[2])))); + return (a.mV[VX] < b.mV[VX] + || (a.mV[VX] == b.mV[VX] + && (a.mV[VY] < b.mV[VY] + || ((a.mV[VY] == b.mV[VY]) + && a.mV[VZ] < b.mV[VZ])))); } -inline const LLVector3& operator+=(LLVector3 &a, const LLVector3 &b) +inline const LLVector3& operator+=(LLVector3& a, const LLVector3& b) { - a.mV[0] += b.mV[0]; - a.mV[1] += b.mV[1]; - a.mV[2] += b.mV[2]; + a.mV[VX] += b.mV[VX]; + a.mV[VY] += b.mV[VY]; + a.mV[VZ] += b.mV[VZ]; return a; } -inline const LLVector3& operator-=(LLVector3 &a, const LLVector3 &b) +inline const LLVector3& operator-=(LLVector3& a, const LLVector3& b) { - a.mV[0] -= b.mV[0]; - a.mV[1] -= b.mV[1]; - a.mV[2] -= b.mV[2]; + a.mV[VX] -= b.mV[VX]; + a.mV[VY] -= b.mV[VY]; + a.mV[VZ] -= b.mV[VZ]; return a; } -inline const LLVector3& operator%=(LLVector3 &a, const LLVector3 &b) +inline const LLVector3& operator%=(LLVector3& a, const LLVector3& b) { - LLVector3 ret( a.mV[1]*b.mV[2] - b.mV[1]*a.mV[2], a.mV[2]*b.mV[0] - b.mV[2]*a.mV[0], a.mV[0]*b.mV[1] - b.mV[0]*a.mV[1]); + LLVector3 ret( a.mV[VY]*b.mV[VZ] - b.mV[VY]*a.mV[VZ], a.mV[VZ]*b.mV[VX] - b.mV[VZ]*a.mV[VX], a.mV[VX]*b.mV[VY] - b.mV[VX]*a.mV[VY]); a = ret; return a; } -inline const LLVector3& operator*=(LLVector3 &a, F32 k) +inline const LLVector3& operator*=(LLVector3& a, F32 k) { - a.mV[0] *= k; - a.mV[1] *= k; - a.mV[2] *= k; + a.mV[VX] *= k; + a.mV[VY] *= k; + a.mV[VZ] *= k; return a; } -inline const LLVector3& operator*=(LLVector3 &a, const LLVector3 &b) +inline const LLVector3& operator*=(LLVector3& a, const LLVector3& b) { - a.mV[0] *= b.mV[0]; - a.mV[1] *= b.mV[1]; - a.mV[2] *= b.mV[2]; + a.mV[VX] *= b.mV[VX]; + a.mV[VY] *= b.mV[VY]; + a.mV[VZ] *= b.mV[VZ]; return a; } -inline const LLVector3& operator/=(LLVector3 &a, F32 k) +inline const LLVector3& operator/=(LLVector3& a, F32 k) { - F32 t = 1.f / k; - a.mV[0] *= t; - a.mV[1] *= t; - a.mV[2] *= t; + a.mV[VX] /= k; + a.mV[VY] /= k; + a.mV[VZ] /= k; return a; } -inline LLVector3 operator-(const LLVector3 &a) +inline LLVector3 operator-(const LLVector3& a) { - return LLVector3( -a.mV[0], -a.mV[1], -a.mV[2] ); + return LLVector3(-a.mV[VX], -a.mV[VY], -a.mV[VZ]); } inline LLVector3::operator glm::vec3() const @@ -522,30 +521,30 @@ inline LLVector3::operator glm::vec4() const return glm::vec4(mV[VX], mV[VY], mV[VZ], 1.f); } -inline F32 dist_vec(const LLVector3 &a, const LLVector3 &b) +inline F32 dist_vec(const LLVector3& a, const LLVector3& b) { - F32 x = a.mV[0] - b.mV[0]; - F32 y = a.mV[1] - b.mV[1]; - F32 z = a.mV[2] - b.mV[2]; - return (F32) sqrt( x*x + y*y + z*z ); + F32 x = a.mV[VX] - b.mV[VX]; + F32 y = a.mV[VY] - b.mV[VY]; + F32 z = a.mV[VZ] - b.mV[VZ]; + return sqrt( x*x + y*y + z*z ); } -inline F32 dist_vec_squared(const LLVector3 &a, const LLVector3 &b) +inline F32 dist_vec_squared(const LLVector3& a, const LLVector3& b) { - F32 x = a.mV[0] - b.mV[0]; - F32 y = a.mV[1] - b.mV[1]; - F32 z = a.mV[2] - b.mV[2]; + F32 x = a.mV[VX] - b.mV[VX]; + F32 y = a.mV[VY] - b.mV[VY]; + F32 z = a.mV[VZ] - b.mV[VZ]; return x*x + y*y + z*z; } -inline F32 dist_vec_squared2D(const LLVector3 &a, const LLVector3 &b) +inline F32 dist_vec_squared2D(const LLVector3& a, const LLVector3& b) { - F32 x = a.mV[0] - b.mV[0]; - F32 y = a.mV[1] - b.mV[1]; + F32 x = a.mV[VX] - b.mV[VX]; + F32 y = a.mV[VY] - b.mV[VY]; return x*x + y*y; } -inline LLVector3 projected_vec(const LLVector3 &a, const LLVector3 &b) +inline LLVector3 projected_vec(const LLVector3& a, const LLVector3& b) { F32 bb = b * b; if (bb > FP_MAG_THRESHOLD * FP_MAG_THRESHOLD) @@ -570,18 +569,18 @@ inline LLVector3 inverse_projected_vec(const LLVector3& a, const LLVector3& b) return normalized_a * (b_length / dot_product); } -inline LLVector3 parallel_component(const LLVector3 &a, const LLVector3 &b) +inline LLVector3 parallel_component(const LLVector3& a, const LLVector3& b) { return projected_vec(a, b); } -inline LLVector3 orthogonal_component(const LLVector3 &a, const LLVector3 &b) +inline LLVector3 orthogonal_component(const LLVector3& a, const LLVector3& b) { return a - projected_vec(a, b); } -inline LLVector3 lerp(const LLVector3 &a, const LLVector3 &b, F32 u) +inline LLVector3 lerp(const LLVector3& a, const LLVector3& b, F32 u) { return LLVector3( a.mV[VX] + (b.mV[VX] - a.mV[VX]) * u, @@ -640,7 +639,7 @@ inline F32 angle_between(const LLVector3& a, const LLVector3& b) return atan2f(sqrtf(c * c), ab); // return the angle } -inline bool are_parallel(const LLVector3 &a, const LLVector3 &b, F32 epsilon) +inline bool are_parallel(const LLVector3& a, const LLVector3& b, F32 epsilon) { LLVector3 an = a; LLVector3 bn = b; diff --git a/indra/llmath/v4color.cpp b/indra/llmath/v4color.cpp index ad13656bbd..1b687642ca 100644 --- a/indra/llmath/v4color.cpp +++ b/indra/llmath/v4color.cpp @@ -124,65 +124,64 @@ LLColor4 LLColor4::cyan6(0.2f, 0.6f, 0.6f, 1.0f); // conversion LLColor4::operator LLColor4U() const { - return LLColor4U( - (U8)llclampb(ll_round(mV[VRED]*255.f)), - (U8)llclampb(ll_round(mV[VGREEN]*255.f)), - (U8)llclampb(ll_round(mV[VBLUE]*255.f)), - (U8)llclampb(ll_round(mV[VALPHA]*255.f))); + return LLColor4U((U8)llclampb(ll_round(mV[VRED] * 255.f)), + (U8)llclampb(ll_round(mV[VGREEN] * 255.f)), + (U8)llclampb(ll_round(mV[VBLUE] * 255.f)), + (U8)llclampb(ll_round(mV[VALPHA] * 255.f))); } -LLColor4::LLColor4(const LLColor3 &vec, F32 a) +LLColor4::LLColor4(const LLColor3& vec, F32 a) { - mV[VRED] = vec.mV[VRED]; + mV[VRED] = vec.mV[VRED]; mV[VGREEN] = vec.mV[VGREEN]; - mV[VBLUE] = vec.mV[VBLUE]; + mV[VBLUE] = vec.mV[VBLUE]; mV[VALPHA] = a; } LLColor4::LLColor4(const LLColor4U& color4u) { - const F32 SCALE = 1.f/255.f; - mV[VRED] = color4u.mV[VRED] * SCALE; - mV[VGREEN] = color4u.mV[VGREEN] * SCALE; - mV[VBLUE] = color4u.mV[VBLUE] * SCALE; - mV[VALPHA] = color4u.mV[VALPHA] * SCALE; + constexpr F32 SCALE = 1.f / 255.f; + mV[VRED] = color4u.mV[VRED] * SCALE; + mV[VGREEN] = color4u.mV[VGREEN] * SCALE; + mV[VBLUE] = color4u.mV[VBLUE] * SCALE; + mV[VALPHA] = color4u.mV[VALPHA] * SCALE; } LLColor4::LLColor4(const LLVector4& vector4) { - mV[VRED] = vector4.mV[VRED]; + mV[VRED] = vector4.mV[VRED]; mV[VGREEN] = vector4.mV[VGREEN]; - mV[VBLUE] = vector4.mV[VBLUE]; + mV[VBLUE] = vector4.mV[VBLUE]; mV[VALPHA] = vector4.mV[VALPHA]; } const LLColor4& LLColor4::set(const LLColor4U& color4u) { - const F32 SCALE = 1.f/255.f; - mV[VRED] = color4u.mV[VRED] * SCALE; - mV[VGREEN] = color4u.mV[VGREEN] * SCALE; - mV[VBLUE] = color4u.mV[VBLUE] * SCALE; - mV[VALPHA] = color4u.mV[VALPHA] * SCALE; + constexpr F32 SCALE = 1.f / 255.f; + mV[VRED] = color4u.mV[VRED] * SCALE; + mV[VGREEN] = color4u.mV[VGREEN] * SCALE; + mV[VBLUE] = color4u.mV[VBLUE] * SCALE; + mV[VALPHA] = color4u.mV[VALPHA] * SCALE; return (*this); } -const LLColor4& LLColor4::set(const LLColor3 &vec) +const LLColor4& LLColor4::set(const LLColor3& vec) { - mV[VRED] = vec.mV[VRED]; + mV[VRED] = vec.mV[VRED]; mV[VGREEN] = vec.mV[VGREEN]; - mV[VBLUE] = vec.mV[VBLUE]; + mV[VBLUE] = vec.mV[VBLUE]; -// no change to alpha! -// mV[VALPHA] = 1.f; + // no change to alpha! + // mV[VALPHA] = 1.f; return (*this); } -const LLColor4& LLColor4::set(const LLColor3 &vec, F32 a) +const LLColor4& LLColor4::set(const LLColor3& vec, F32 a) { - mV[VRED] = vec.mV[VRED]; + mV[VRED] = vec.mV[VRED]; mV[VGREEN] = vec.mV[VGREEN]; - mV[VBLUE] = vec.mV[VBLUE]; + mV[VBLUE] = vec.mV[VBLUE]; mV[VALPHA] = a; return (*this); } @@ -190,33 +189,33 @@ const LLColor4& LLColor4::set(const LLColor3 &vec, F32 a) // deprecated -- use set() const LLColor4& LLColor4::setVec(const LLColor4U& color4u) { - const F32 SCALE = 1.f/255.f; - mV[VRED] = color4u.mV[VRED] * SCALE; - mV[VGREEN] = color4u.mV[VGREEN] * SCALE; - mV[VBLUE] = color4u.mV[VBLUE] * SCALE; - mV[VALPHA] = color4u.mV[VALPHA] * SCALE; + constexpr F32 SCALE = 1.f / 255.f; + mV[VRED] = color4u.mV[VRED] * SCALE; + mV[VGREEN] = color4u.mV[VGREEN] * SCALE; + mV[VBLUE] = color4u.mV[VBLUE] * SCALE; + mV[VALPHA] = color4u.mV[VALPHA] * SCALE; return (*this); } // deprecated -- use set() -const LLColor4& LLColor4::setVec(const LLColor3 &vec) +const LLColor4& LLColor4::setVec(const LLColor3& vec) { - mV[VRED] = vec.mV[VRED]; + mV[VRED] = vec.mV[VRED]; mV[VGREEN] = vec.mV[VGREEN]; - mV[VBLUE] = vec.mV[VBLUE]; + mV[VBLUE] = vec.mV[VBLUE]; -// no change to alpha! -// mV[VALPHA] = 1.f; + // no change to alpha! + // mV[VALPHA] = 1.f; return (*this); } // deprecated -- use set() -const LLColor4& LLColor4::setVec(const LLColor3 &vec, F32 a) +const LLColor4& LLColor4::setVec(const LLColor3& vec, F32 a) { - mV[VRED] = vec.mV[VRED]; + mV[VRED] = vec.mV[VRED]; mV[VGREEN] = vec.mV[VGREEN]; - mV[VBLUE] = vec.mV[VBLUE]; + mV[VBLUE] = vec.mV[VBLUE]; mV[VALPHA] = a; return (*this); } @@ -228,110 +227,110 @@ void LLColor4::setValue(const LLSD& sd) F32 val; bool out_of_range = false; val = sd[0].asReal(); - mV[0] = llclamp(val, 0.f, 1.f); - out_of_range = mV[0] != val; + mV[VRED] = llclamp(val, 0.f, 1.f); + out_of_range = mV[VRED] != val; val = sd[1].asReal(); - mV[1] = llclamp(val, 0.f, 1.f); - out_of_range |= mV[1] != val; + mV[VGREEN] = llclamp(val, 0.f, 1.f); + out_of_range |= mV[VGREEN] != val; val = sd[2].asReal(); - mV[2] = llclamp(val, 0.f, 1.f); - out_of_range |= mV[2] != val; + mV[VBLUE] = llclamp(val, 0.f, 1.f); + out_of_range |= mV[VBLUE] != val; val = sd[3].asReal(); - mV[3] = llclamp(val, 0.f, 1.f); - out_of_range |= mV[3] != val; + mV[VALPHA] = llclamp(val, 0.f, 1.f); + out_of_range |= mV[VALPHA] != val; if (out_of_range) { LL_WARNS() << "LLSD color value out of range!" << LL_ENDL; } #else - mV[0] = (F32) sd[0].asReal(); - mV[1] = (F32) sd[1].asReal(); - mV[2] = (F32) sd[2].asReal(); - mV[3] = (F32) sd[3].asReal(); + mV[VRED] = (F32)sd[VRED].asReal(); + mV[VGREEN] = (F32)sd[VGREEN].asReal(); + mV[VBLUE] = (F32)sd[VBLUE].asReal(); + mV[VALPHA] = (F32)sd[VALPHA].asReal(); #endif } -const LLColor4& LLColor4::operator=(const LLColor3 &a) +const LLColor4& LLColor4::operator=(const LLColor3& a) { - mV[VRED] = a.mV[VRED]; + mV[VRED] = a.mV[VRED]; mV[VGREEN] = a.mV[VGREEN]; - mV[VBLUE] = a.mV[VBLUE]; + mV[VBLUE] = a.mV[VBLUE]; -// converting from an rgb sets a=1 (opaque) + // converting from an rgb sets a=1 (opaque) mV[VALPHA] = 1.f; return (*this); } - -std::ostream& operator<<(std::ostream& s, const LLColor4 &a) +std::ostream& operator<<(std::ostream& s, const LLColor4& a) { s << "{ " << a.mV[VRED] << ", " << a.mV[VGREEN] << ", " << a.mV[VBLUE] << ", " << a.mV[VALPHA] << " }"; return s; } -bool operator==(const LLColor4 &a, const LLColor3 &b) +bool operator==(const LLColor4& a, const LLColor3& b) { - return ( (a.mV[VRED] == b.mV[VRED]) - &&(a.mV[VGREEN] == b.mV[VGREEN]) - &&(a.mV[VBLUE] == b.mV[VBLUE])); + return ((a.mV[VRED] == b.mV[VRED]) && (a.mV[VGREEN] == b.mV[VGREEN]) && (a.mV[VBLUE] == b.mV[VBLUE])); } -bool operator!=(const LLColor4 &a, const LLColor3 &b) +bool operator!=(const LLColor4& a, const LLColor3& b) { - return ( (a.mV[VRED] != b.mV[VRED]) - ||(a.mV[VGREEN] != b.mV[VGREEN]) - ||(a.mV[VBLUE] != b.mV[VBLUE])); + return ((a.mV[VRED] != b.mV[VRED]) || (a.mV[VGREEN] != b.mV[VGREEN]) || (a.mV[VBLUE] != b.mV[VBLUE])); } -LLColor3 vec4to3(const LLColor4 &vec) +LLColor3 vec4to3(const LLColor4& vec) { - LLColor3 temp(vec.mV[VRED], vec.mV[VGREEN], vec.mV[VBLUE]); + LLColor3 temp(vec.mV[VRED], vec.mV[VGREEN], vec.mV[VBLUE]); return temp; } -LLColor4 vec3to4(const LLColor3 &vec) +LLColor4 vec3to4(const LLColor3& vec) { - LLColor3 temp(vec.mV[VRED], vec.mV[VGREEN], vec.mV[VBLUE]); + LLColor3 temp(vec.mV[VRED], vec.mV[VGREEN], vec.mV[VBLUE]); return temp; } -static F32 hueToRgb ( F32 val1In, F32 val2In, F32 valHUeIn ) +static F32 hueToRgb(F32 val1In, F32 val2In, F32 valHUeIn) { - if ( valHUeIn < 0.0f ) valHUeIn += 1.0f; - if ( valHUeIn > 1.0f ) valHUeIn -= 1.0f; - if ( ( 6.0f * valHUeIn ) < 1.0f ) return ( val1In + ( val2In - val1In ) * 6.0f * valHUeIn ); - if ( ( 2.0f * valHUeIn ) < 1.0f ) return ( val2In ); - if ( ( 3.0f * valHUeIn ) < 2.0f ) return ( val1In + ( val2In - val1In ) * ( ( 2.0f / 3.0f ) - valHUeIn ) * 6.0f ); - return ( val1In ); + if (valHUeIn < 0.0f) + valHUeIn += 1.0f; + if (valHUeIn > 1.0f) + valHUeIn -= 1.0f; + if ((6.0f * valHUeIn) < 1.0f) + return (val1In + (val2In - val1In) * 6.0f * valHUeIn); + if ((2.0f * valHUeIn) < 1.0f) + return (val2In); + if ((3.0f * valHUeIn) < 2.0f) + return (val1In + (val2In - val1In) * ((2.0f / 3.0f) - valHUeIn) * 6.0f); + return (val1In); } -void LLColor4::setHSL ( F32 hValIn, F32 sValIn, F32 lValIn) +void LLColor4::setHSL(F32 hValIn, F32 sValIn, F32 lValIn) { - if ( sValIn < 0.00001f ) + if (sValIn < 0.00001f) { - mV[VRED] = lValIn; + mV[VRED] = lValIn; mV[VGREEN] = lValIn; - mV[VBLUE] = lValIn; + mV[VBLUE] = lValIn; } else { F32 interVal1; F32 interVal2; - if ( lValIn < 0.5f ) - interVal2 = lValIn * ( 1.0f + sValIn ); + if (lValIn < 0.5f) + interVal2 = lValIn * (1.0f + sValIn); else - interVal2 = ( lValIn + sValIn ) - ( sValIn * lValIn ); + interVal2 = (lValIn + sValIn) - (sValIn * lValIn); interVal1 = 2.0f * lValIn - interVal2; - mV[VRED] = hueToRgb ( interVal1, interVal2, hValIn + ( 1.f / 3.f ) ); - mV[VGREEN] = hueToRgb ( interVal1, interVal2, hValIn ); - mV[VBLUE] = hueToRgb ( interVal1, interVal2, hValIn - ( 1.f / 3.f ) ); + mV[VRED] = hueToRgb(interVal1, interVal2, hValIn + (1.f / 3.f)); + mV[VGREEN] = hueToRgb(interVal1, interVal2, hValIn); + mV[VBLUE] = hueToRgb(interVal1, interVal2, hValIn - (1.f / 3.f)); } } @@ -341,58 +340,61 @@ void LLColor4::calcHSL(F32* hue, F32* saturation, F32* luminance) const F32 var_G = mV[VGREEN]; F32 var_B = mV[VBLUE]; - F32 var_Min = ( var_R < ( var_G < var_B ? var_G : var_B ) ? var_R : ( var_G < var_B ? var_G : var_B ) ); - F32 var_Max = ( var_R > ( var_G > var_B ? var_G : var_B ) ? var_R : ( var_G > var_B ? var_G : var_B ) ); + F32 var_Min = (var_R < (var_G < var_B ? var_G : var_B) ? var_R : (var_G < var_B ? var_G : var_B)); + F32 var_Max = (var_R > (var_G > var_B ? var_G : var_B) ? var_R : (var_G > var_B ? var_G : var_B)); F32 del_Max = var_Max - var_Min; - F32 L = ( var_Max + var_Min ) / 2.0f; + F32 L = (var_Max + var_Min) / 2.0f; F32 H = 0.0f; F32 S = 0.0f; - if ( del_Max == 0.0f ) + if (del_Max == 0.0f) { - H = 0.0f; - S = 0.0f; + H = 0.0f; + S = 0.0f; } else { - if ( L < 0.5 ) - S = del_Max / ( var_Max + var_Min ); + if (L < 0.5f) + S = del_Max / (var_Max + var_Min); else - S = del_Max / ( 2.0f - var_Max - var_Min ); + S = del_Max / (2.0f - var_Max - var_Min); - F32 del_R = ( ( ( var_Max - var_R ) / 6.0f ) + ( del_Max / 2.0f ) ) / del_Max; - F32 del_G = ( ( ( var_Max - var_G ) / 6.0f ) + ( del_Max / 2.0f ) ) / del_Max; - F32 del_B = ( ( ( var_Max - var_B ) / 6.0f ) + ( del_Max / 2.0f ) ) / del_Max; + F32 del_R = (((var_Max - var_R) / 6.0f) + (del_Max / 2.0f)) / del_Max; + F32 del_G = (((var_Max - var_G) / 6.0f) + (del_Max / 2.0f)) / del_Max; + F32 del_B = (((var_Max - var_B) / 6.0f) + (del_Max / 2.0f)) / del_Max; - if ( var_R >= var_Max ) + if (var_R >= var_Max) H = del_B - del_G; - else - if ( var_G >= var_Max ) - H = ( 1.0f / 3.0f ) + del_R - del_B; - else - if ( var_B >= var_Max ) - H = ( 2.0f / 3.0f ) + del_G - del_R; - - if ( H < 0.0f ) H += 1.0f; - if ( H > 1.0f ) H -= 1.0f; + else if (var_G >= var_Max) + H = (1.0f / 3.0f) + del_R - del_B; + else if (var_B >= var_Max) + H = (2.0f / 3.0f) + del_G - del_R; + + if (H < 0.0f) + H += 1.0f; + if (H > 1.0f) + H -= 1.0f; } - if (hue) *hue = H; - if (saturation) *saturation = S; - if (luminance) *luminance = L; + if (hue) + *hue = H; + if (saturation) + *saturation = S; + if (luminance) + *luminance = L; } // static bool LLColor4::parseColor(const std::string& buf, LLColor4* color) { - if( buf.empty() || color == nullptr) + if (buf.empty() || color == nullptr) { return false; } - boost_tokenizer tokens(buf, boost::char_separator<char>(", ")); + boost_tokenizer tokens(buf, boost::char_separator<char>(", ")); boost_tokenizer::iterator token_iter = tokens.begin(); if (token_iter == tokens.end()) { @@ -401,16 +403,16 @@ bool LLColor4::parseColor(const std::string& buf, LLColor4* color) // Grab the first token into a string, since we don't know // if this is a float or a color name. - std::string color_name( (*token_iter) ); + std::string color_name((*token_iter)); ++token_iter; if (token_iter != tokens.end()) { // There are more tokens to read. This must be a vector. LLColor4 v; - LLStringUtil::convertToF32( color_name, v.mV[VRED] ); - LLStringUtil::convertToF32( *token_iter, v.mV[VGREEN] ); - v.mV[VBLUE] = 0.0f; + LLStringUtil::convertToF32(color_name, v.mV[VRED]); + LLStringUtil::convertToF32(*token_iter, v.mV[VGREEN]); + v.mV[VBLUE] = 0.0f; v.mV[VALPHA] = 1.0f; ++token_iter; @@ -422,283 +424,284 @@ bool LLColor4::parseColor(const std::string& buf, LLColor4* color) else { // There is a z-component. - LLStringUtil::convertToF32( *token_iter, v.mV[VBLUE] ); + LLStringUtil::convertToF32(*token_iter, v.mV[VBLUE]); ++token_iter; if (token_iter != tokens.end()) { // There is an alpha component. - LLStringUtil::convertToF32( *token_iter, v.mV[VALPHA] ); + LLStringUtil::convertToF32(*token_iter, v.mV[VALPHA]); } } // Make sure all values are between 0 and 1. if (v.mV[VRED] > 1.f || v.mV[VGREEN] > 1.f || v.mV[VBLUE] > 1.f || v.mV[VALPHA] > 1.f) { - v = v * (1.f / 255.f); + constexpr F32 SCALE{ 1.f / 255.f }; + v *= SCALE; } - color->set( v ); + color->set(v); } else // Single value. Read as a named color. { // We have a color name - if ( "red" == color_name ) + if ("red" == color_name) { color->set(LLColor4::red); } - else if ( "red1" == color_name ) + else if ("red1" == color_name) { color->set(LLColor4::red1); } - else if ( "red2" == color_name ) + else if ("red2" == color_name) { color->set(LLColor4::red2); } - else if ( "red3" == color_name ) + else if ("red3" == color_name) { color->set(LLColor4::red3); } - else if ( "red4" == color_name ) + else if ("red4" == color_name) { color->set(LLColor4::red4); } - else if ( "red5" == color_name ) + else if ("red5" == color_name) { color->set(LLColor4::red5); } - else if( "green" == color_name ) + else if ("green" == color_name) { color->set(LLColor4::green); } - else if( "green1" == color_name ) + else if ("green1" == color_name) { color->set(LLColor4::green1); } - else if( "green2" == color_name ) + else if ("green2" == color_name) { color->set(LLColor4::green2); } - else if( "green3" == color_name ) + else if ("green3" == color_name) { color->set(LLColor4::green3); } - else if( "green4" == color_name ) + else if ("green4" == color_name) { color->set(LLColor4::green4); } - else if( "green5" == color_name ) + else if ("green5" == color_name) { color->set(LLColor4::green5); } - else if( "green6" == color_name ) + else if ("green6" == color_name) { color->set(LLColor4::green6); } - else if( "blue" == color_name ) + else if ("blue" == color_name) { color->set(LLColor4::blue); } - else if( "blue1" == color_name ) + else if ("blue1" == color_name) { color->set(LLColor4::blue1); } - else if( "blue2" == color_name ) + else if ("blue2" == color_name) { color->set(LLColor4::blue2); } - else if( "blue3" == color_name ) + else if ("blue3" == color_name) { color->set(LLColor4::blue3); } - else if( "blue4" == color_name ) + else if ("blue4" == color_name) { color->set(LLColor4::blue4); } - else if( "blue5" == color_name ) + else if ("blue5" == color_name) { color->set(LLColor4::blue5); } - else if( "blue6" == color_name ) + else if ("blue6" == color_name) { color->set(LLColor4::blue6); } - else if( "black" == color_name ) + else if ("black" == color_name) { color->set(LLColor4::black); } - else if( "white" == color_name ) + else if ("white" == color_name) { color->set(LLColor4::white); } - else if( "yellow" == color_name ) + else if ("yellow" == color_name) { color->set(LLColor4::yellow); } - else if( "yellow1" == color_name ) + else if ("yellow1" == color_name) { color->set(LLColor4::yellow1); } - else if( "yellow2" == color_name ) + else if ("yellow2" == color_name) { color->set(LLColor4::yellow2); } - else if( "yellow3" == color_name ) + else if ("yellow3" == color_name) { color->set(LLColor4::yellow3); } - else if( "yellow4" == color_name ) + else if ("yellow4" == color_name) { color->set(LLColor4::yellow4); } - else if( "yellow5" == color_name ) + else if ("yellow5" == color_name) { color->set(LLColor4::yellow5); } - else if( "yellow6" == color_name ) + else if ("yellow6" == color_name) { color->set(LLColor4::yellow6); } - else if( "magenta" == color_name ) + else if ("magenta" == color_name) { color->set(LLColor4::magenta); } - else if( "magenta1" == color_name ) + else if ("magenta1" == color_name) { color->set(LLColor4::magenta1); } - else if( "magenta2" == color_name ) + else if ("magenta2" == color_name) { color->set(LLColor4::magenta2); } - else if( "magenta3" == color_name ) + else if ("magenta3" == color_name) { color->set(LLColor4::magenta3); } - else if( "magenta4" == color_name ) + else if ("magenta4" == color_name) { color->set(LLColor4::magenta4); } - else if( "purple" == color_name ) + else if ("purple" == color_name) { color->set(LLColor4::purple); } - else if( "purple1" == color_name ) + else if ("purple1" == color_name) { color->set(LLColor4::purple1); } - else if( "purple2" == color_name ) + else if ("purple2" == color_name) { color->set(LLColor4::purple2); } - else if( "purple3" == color_name ) + else if ("purple3" == color_name) { color->set(LLColor4::purple3); } - else if( "purple4" == color_name ) + else if ("purple4" == color_name) { color->set(LLColor4::purple4); } - else if( "purple5" == color_name ) + else if ("purple5" == color_name) { color->set(LLColor4::purple5); } - else if( "purple6" == color_name ) + else if ("purple6" == color_name) { color->set(LLColor4::purple6); } - else if( "pink" == color_name ) + else if ("pink" == color_name) { color->set(LLColor4::pink); } - else if( "pink1" == color_name ) + else if ("pink1" == color_name) { color->set(LLColor4::pink1); } - else if( "pink2" == color_name ) + else if ("pink2" == color_name) { color->set(LLColor4::pink2); } - else if( "cyan" == color_name ) + else if ("cyan" == color_name) { color->set(LLColor4::cyan); } - else if( "cyan1" == color_name ) + else if ("cyan1" == color_name) { color->set(LLColor4::cyan1); } - else if( "cyan2" == color_name ) + else if ("cyan2" == color_name) { color->set(LLColor4::cyan2); } - else if( "cyan3" == color_name ) + else if ("cyan3" == color_name) { color->set(LLColor4::cyan3); } - else if( "cyan4" == color_name ) + else if ("cyan4" == color_name) { color->set(LLColor4::cyan4); } - else if( "cyan5" == color_name ) + else if ("cyan5" == color_name) { color->set(LLColor4::cyan5); } - else if( "cyan6" == color_name ) + else if ("cyan6" == color_name) { color->set(LLColor4::cyan6); } - else if( "smoke" == color_name ) + else if ("smoke" == color_name) { color->set(LLColor4::smoke); } - else if( "grey" == color_name ) + else if ("grey" == color_name) { color->set(LLColor4::grey); } - else if( "grey1" == color_name ) + else if ("grey1" == color_name) { color->set(LLColor4::grey1); } - else if( "grey2" == color_name ) + else if ("grey2" == color_name) { color->set(LLColor4::grey2); } - else if( "grey3" == color_name ) + else if ("grey3" == color_name) { color->set(LLColor4::grey3); } - else if( "grey4" == color_name ) + else if ("grey4" == color_name) { color->set(LLColor4::grey4); } - else if( "orange" == color_name ) + else if ("orange" == color_name) { color->set(LLColor4::orange); } - else if( "orange1" == color_name ) + else if ("orange1" == color_name) { color->set(LLColor4::orange1); } - else if( "orange2" == color_name ) + else if ("orange2" == color_name) { color->set(LLColor4::orange2); } - else if( "orange3" == color_name ) + else if ("orange3" == color_name) { color->set(LLColor4::orange3); } - else if( "orange4" == color_name ) + else if ("orange4" == color_name) { color->set(LLColor4::orange4); } - else if( "orange5" == color_name ) + else if ("orange5" == color_name) { color->set(LLColor4::orange5); } - else if( "orange6" == color_name ) + else if ("orange6" == color_name) { color->set(LLColor4::orange6); } - else if ( "clear" == color_name ) + else if ("clear" == color_name) { color->set(0.f, 0.f, 0.f, 0.f); } @@ -714,21 +717,21 @@ bool LLColor4::parseColor(const std::string& buf, LLColor4* color) // static bool LLColor4::parseColor4(const std::string& buf, LLColor4* value) { - if( buf.empty() || value == nullptr) + if (buf.empty() || value == nullptr) { return false; } LLColor4 v; - S32 count = sscanf( buf.c_str(), "%f, %f, %f, %f", v.mV + 0, v.mV + 1, v.mV + 2, v.mV + 3 ); - if (1 == count ) + S32 count = sscanf(buf.c_str(), "%f, %f, %f, %f", v.mV + 0, v.mV + 1, v.mV + 2, v.mV + 3); + if (1 == count) { // try this format - count = sscanf( buf.c_str(), "%f %f %f %f", v.mV + 0, v.mV + 1, v.mV + 2, v.mV + 3 ); + count = sscanf(buf.c_str(), "%f %f %f %f", v.mV + 0, v.mV + 1, v.mV + 2, v.mV + 3); } - if( 4 == count ) + if (4 == count) { - value->setVec( v ); + value->setVec(v); return true; } diff --git a/indra/llmath/v4color.h b/indra/llmath/v4color.h index cafdbd9d7c..2f1cb21113 100644 --- a/indra/llmath/v4color.h +++ b/indra/llmath/v4color.h @@ -28,7 +28,6 @@ #define LL_V4COLOR_H #include "llerror.h" -//#include "vmath.h" #include "llmath.h" #include "llsd.h" @@ -38,213 +37,212 @@ class LLVector4; // LLColor4 = |x y z w| -static const U32 LENGTHOFCOLOR4 = 4; +static constexpr U32 LENGTHOFCOLOR4 = 4; -static const U32 MAX_LENGTH_OF_COLOR_NAME = 15; //Give plenty of room for additional colors... +static constexpr U32 MAX_LENGTH_OF_COLOR_NAME = 15; // Give plenty of room for additional colors... class LLColor4 { - public: - F32 mV[LENGTHOFCOLOR4]; - LLColor4(); // Initializes LLColor4 to (0, 0, 0, 1) - LLColor4(F32 r, F32 g, F32 b); // Initializes LLColor4 to (r, g, b, 1) - LLColor4(F32 r, F32 g, F32 b, F32 a); // Initializes LLColor4 to (r. g, b, a) - LLColor4(const LLColor3 &vec, F32 a = 1.f); // Initializes LLColor4 to (vec, a) - explicit LLColor4(const LLSD& sd); - explicit LLColor4(const F32 *vec); // Initializes LLColor4 to (vec[0]. vec[1], vec[2], 1) - explicit LLColor4(U32 clr); // Initializes LLColor4 to (r=clr>>24, etc)) - explicit LLColor4(const LLColor4U& color4u); // "explicit" to avoid automatic conversion - explicit LLColor4(const LLVector4& vector4); // "explicit" to avoid automatic conversion - - LLSD getValue() const - { - LLSD ret; - ret[0] = mV[0]; - ret[1] = mV[1]; - ret[2] = mV[2]; - ret[3] = mV[3]; - return ret; - } - - void setValue(const LLSD& sd); - - void setHSL(F32 hue, F32 saturation, F32 luminance); - void calcHSL(F32* hue, F32* saturation, F32* luminance) const; - - const LLColor4& setToBlack(); // zero LLColor4 to (0, 0, 0, 1) - const LLColor4& setToWhite(); // zero LLColor4 to (0, 0, 0, 1) - - const LLColor4& setVec(F32 r, F32 g, F32 b, F32 a); // deprecated -- use set() - const LLColor4& setVec(F32 r, F32 g, F32 b); // deprecated -- use set() - const LLColor4& setVec(const LLColor4 &vec); // deprecated -- use set() - const LLColor4& setVec(const LLColor3 &vec); // deprecated -- use set() - const LLColor4& setVec(const LLColor3 &vec, F32 a); // deprecated -- use set() - const LLColor4& setVec(const F32 *vec); // deprecated -- use set() - const LLColor4& setVec(const LLColor4U& color4u); // deprecated -- use set() - - const LLColor4& set(F32 r, F32 g, F32 b, F32 a); // Sets LLColor4 to (r, g, b, a) - const LLColor4& set(F32 r, F32 g, F32 b); // Sets LLColor4 to (r, g, b) (no change in a) - const LLColor4& set(const LLColor4 &vec); // Sets LLColor4 to vec - const LLColor4& set(const LLColor3 &vec); // Sets LLColor4 to LLColor3 vec (no change in alpha) - const LLColor4& set(const LLColor3 &vec, F32 a); // Sets LLColor4 to LLColor3 vec, with alpha specified - const LLColor4& set(const F32 *vec); // Sets LLColor4 to vec - const LLColor4& set(const F64 *vec); // Sets LLColor4 to (double)vec - const LLColor4& set(const LLColor4U& color4u); // Sets LLColor4 to color4u, rescaled. - - // set from a vector of unknown type and size - // may leave some data unmodified - template<typename T> - const LLColor4& set(const std::vector<T>& v); - - // write to a vector of unknown type and size - // maye leave some data unmodified - template<typename T> - void write(std::vector<T>& v) const; - - const LLColor4& setAlpha(F32 a); - - F32 magVec() const; // deprecated -- use length() - F32 magVecSquared() const; // deprecated -- use lengthSquared() - F32 normVec(); // deprecated -- use normalize() - - F32 length() const; // Returns magnitude of LLColor4 - F32 lengthSquared() const; // Returns magnitude squared of LLColor4 - F32 normalize(); // deprecated -- use normalize() - - bool isOpaque() { return mV[VALPHA] == 1.f; } - - F32 operator[](int idx) const { return mV[idx]; } - F32 &operator[](int idx) { return mV[idx]; } - - const LLColor4& operator=(const LLColor3 &a); // Assigns vec3 to vec4 and returns vec4 - - bool operator<(const LLColor4& rhs) const; - friend std::ostream& operator<<(std::ostream& s, const LLColor4 &a); // Print a - friend LLColor4 operator+(const LLColor4 &a, const LLColor4 &b); // Return vector a + b - friend LLColor4 operator-(const LLColor4 &a, const LLColor4 &b); // Return vector a minus b - friend LLColor4 operator*(const LLColor4 &a, const LLColor4 &b); // Return component wise a * b - friend LLColor4 operator*(const LLColor4 &a, F32 k); // Return rgb times scaler k (no alpha change) - friend LLColor4 operator/(const LLColor4 &a, F32 k); // Return rgb divided by scalar k (no alpha change) - friend LLColor4 operator*(F32 k, const LLColor4 &a); // Return rgb times scaler k (no alpha change) - friend LLColor4 operator%(const LLColor4 &a, F32 k); // Return alpha times scaler k (no rgb change) - friend LLColor4 operator%(F32 k, const LLColor4 &a); // Return alpha times scaler k (no rgb change) - - friend bool operator==(const LLColor4 &a, const LLColor4 &b); // Return a == b - friend bool operator!=(const LLColor4 &a, const LLColor4 &b); // Return a != b - - friend bool operator==(const LLColor4 &a, const LLColor3 &b); // Return a == b - friend bool operator!=(const LLColor4 &a, const LLColor3 &b); // Return a != b - - friend const LLColor4& operator+=(LLColor4 &a, const LLColor4 &b); // Return vector a + b - friend const LLColor4& operator-=(LLColor4 &a, const LLColor4 &b); // Return vector a minus b - friend const LLColor4& operator*=(LLColor4 &a, F32 k); // Return rgb times scaler k (no alpha change) - friend const LLColor4& operator%=(LLColor4 &a, F32 k); // Return alpha times scaler k (no rgb change) - - friend const LLColor4& operator*=(LLColor4 &a, const LLColor4 &b); // Doesn't multiply alpha! (for lighting) - - // conversion - operator LLColor4U() const; - - // Basic color values. - static LLColor4 red; - static LLColor4 green; - static LLColor4 blue; - static LLColor4 black; - static LLColor4 white; - static LLColor4 yellow; - static LLColor4 magenta; - static LLColor4 cyan; - static LLColor4 smoke; - static LLColor4 grey; - static LLColor4 orange; - static LLColor4 purple; - static LLColor4 pink; - static LLColor4 transparent; - - // Extra color values. - static LLColor4 grey1; - static LLColor4 grey2; - static LLColor4 grey3; - static LLColor4 grey4; - - static LLColor4 red1; - static LLColor4 red2; - static LLColor4 red3; - static LLColor4 red4; - static LLColor4 red5; - - static LLColor4 green1; - static LLColor4 green2; - static LLColor4 green3; - static LLColor4 green4; - static LLColor4 green5; - static LLColor4 green6; - - static LLColor4 blue1; - static LLColor4 blue2; - static LLColor4 blue3; - static LLColor4 blue4; - static LLColor4 blue5; - static LLColor4 blue6; - - static LLColor4 yellow1; - static LLColor4 yellow2; - static LLColor4 yellow3; - static LLColor4 yellow4; - static LLColor4 yellow5; - static LLColor4 yellow6; - static LLColor4 yellow7; - static LLColor4 yellow8; - static LLColor4 yellow9; - - static LLColor4 orange1; - static LLColor4 orange2; - static LLColor4 orange3; - static LLColor4 orange4; - static LLColor4 orange5; - static LLColor4 orange6; - - static LLColor4 magenta1; - static LLColor4 magenta2; - static LLColor4 magenta3; - static LLColor4 magenta4; - - static LLColor4 purple1; - static LLColor4 purple2; - static LLColor4 purple3; - static LLColor4 purple4; - static LLColor4 purple5; - static LLColor4 purple6; - - static LLColor4 pink1; - static LLColor4 pink2; - - static LLColor4 cyan1; - static LLColor4 cyan2; - static LLColor4 cyan3; - static LLColor4 cyan4; - static LLColor4 cyan5; - static LLColor4 cyan6; - - static bool parseColor(const std::string& buf, LLColor4* color); - static bool parseColor4(const std::string& buf, LLColor4* color); - - inline void clamp(); -}; +public: + F32 mV[LENGTHOFCOLOR4]; + LLColor4(); // Initializes LLColor4 to (0, 0, 0, 1) + LLColor4(F32 r, F32 g, F32 b); // Initializes LLColor4 to (r, g, b, 1) + LLColor4(F32 r, F32 g, F32 b, F32 a); // Initializes LLColor4 to (r. g, b, a) + LLColor4(const LLColor3& vec, F32 a = 1.f); // Initializes LLColor4 to (vec, a) + explicit LLColor4(const LLSD& sd); + explicit LLColor4(const F32* vec); // Initializes LLColor4 to (vec[0]. vec[1], vec[2], 1) + explicit LLColor4(U32 clr); // Initializes LLColor4 to (r=clr>>24, etc)) + explicit LLColor4(const LLColor4U& color4u); // "explicit" to avoid automatic conversion + explicit LLColor4(const LLVector4& vector4); // "explicit" to avoid automatic conversion + + LLSD getValue() const + { + LLSD ret; + ret[VRED] = mV[VRED]; + ret[VGREEN] = mV[VGREEN]; + ret[VBLUE] = mV[VBLUE]; + ret[VALPHA] = mV[VALPHA]; + return ret; + } + void setValue(const LLSD& sd); + + void setHSL(F32 hue, F32 saturation, F32 luminance); + void calcHSL(F32* hue, F32* saturation, F32* luminance) const; + + const LLColor4& setToBlack(); // zero LLColor4 to (0, 0, 0, 1) + const LLColor4& setToWhite(); // zero LLColor4 to (0, 0, 0, 1) + + const LLColor4& setVec(F32 r, F32 g, F32 b, F32 a); // deprecated -- use set() + const LLColor4& setVec(F32 r, F32 g, F32 b); // deprecated -- use set() + const LLColor4& setVec(const LLColor4& vec); // deprecated -- use set() + const LLColor4& setVec(const LLColor3& vec); // deprecated -- use set() + const LLColor4& setVec(const LLColor3& vec, F32 a); // deprecated -- use set() + const LLColor4& setVec(const F32* vec); // deprecated -- use set() + const LLColor4& setVec(const LLColor4U& color4u); // deprecated -- use set() + + const LLColor4& set(F32 r, F32 g, F32 b, F32 a); // Sets LLColor4 to (r, g, b, a) + const LLColor4& set(F32 r, F32 g, F32 b); // Sets LLColor4 to (r, g, b) (no change in a) + const LLColor4& set(const LLColor4& vec); // Sets LLColor4 to vec + const LLColor4& set(const LLColor3& vec); // Sets LLColor4 to LLColor3 vec (no change in alpha) + const LLColor4& set(const LLColor3& vec, F32 a); // Sets LLColor4 to LLColor3 vec, with alpha specified + const LLColor4& set(const F32* vec); // Sets LLColor4 to vec + const LLColor4& set(const F64* vec); // Sets LLColor4 to (double)vec + const LLColor4& set(const LLColor4U& color4u); // Sets LLColor4 to color4u, rescaled. + + // set from a vector of unknown type and size + // may leave some data unmodified + template<typename T> + const LLColor4& set(const std::vector<T>& v); + + // write to a vector of unknown type and size + // maye leave some data unmodified + template<typename T> + void write(std::vector<T>& v) const; + + const LLColor4& setAlpha(F32 a); + + F32 magVec() const; // deprecated -- use length() + F32 magVecSquared() const; // deprecated -- use lengthSquared() + F32 normVec(); // deprecated -- use normalize() + + F32 length() const; // Returns magnitude of LLColor4 + F32 lengthSquared() const; // Returns magnitude squared of LLColor4 + F32 normalize(); // deprecated -- use normalize() + + bool isOpaque() const { return mV[VALPHA] == 1.f; } + + F32 operator[](int idx) const { return mV[idx]; } + F32& operator[](int idx) { return mV[idx]; } + + const LLColor4& operator=(const LLColor3& a); // Assigns vec3 to vec4 and returns vec4 + + bool operator<(const LLColor4& rhs) const; + friend std::ostream& operator<<(std::ostream& s, const LLColor4& a); // Print a + friend LLColor4 operator+(const LLColor4& a, const LLColor4& b); // Return vector a + b + friend LLColor4 operator-(const LLColor4& a, const LLColor4& b); // Return vector a minus b + friend LLColor4 operator*(const LLColor4& a, const LLColor4& b); // Return component wise a * b + friend LLColor4 operator*(const LLColor4& a, F32 k); // Return rgb times scaler k (no alpha change) + friend LLColor4 operator/(const LLColor4& a, F32 k); // Return rgb divided by scalar k (no alpha change) + friend LLColor4 operator*(F32 k, const LLColor4& a); // Return rgb times scaler k (no alpha change) + friend LLColor4 operator%(const LLColor4& a, F32 k); // Return alpha times scaler k (no rgb change) + friend LLColor4 operator%(F32 k, const LLColor4& a); // Return alpha times scaler k (no rgb change) + + friend bool operator==(const LLColor4& a, const LLColor4& b); // Return a == b + friend bool operator!=(const LLColor4& a, const LLColor4& b); // Return a != b + + friend bool operator==(const LLColor4& a, const LLColor3& b); // Return a == b + friend bool operator!=(const LLColor4& a, const LLColor3& b); // Return a != b + + friend const LLColor4& operator+=(LLColor4& a, const LLColor4& b); // Return vector a + b + friend const LLColor4& operator-=(LLColor4& a, const LLColor4& b); // Return vector a minus b + friend const LLColor4& operator*=(LLColor4& a, F32 k); // Return rgb times scaler k (no alpha change) + friend const LLColor4& operator%=(LLColor4& a, F32 k); // Return alpha times scaler k (no rgb change) + + friend const LLColor4& operator*=(LLColor4& a, const LLColor4& b); // Doesn't multiply alpha! (for lighting) + + // conversion + operator LLColor4U() const; + + // Basic color values. + static LLColor4 red; + static LLColor4 green; + static LLColor4 blue; + static LLColor4 black; + static LLColor4 white; + static LLColor4 yellow; + static LLColor4 magenta; + static LLColor4 cyan; + static LLColor4 smoke; + static LLColor4 grey; + static LLColor4 orange; + static LLColor4 purple; + static LLColor4 pink; + static LLColor4 transparent; + + // Extra color values. + static LLColor4 grey1; + static LLColor4 grey2; + static LLColor4 grey3; + static LLColor4 grey4; + + static LLColor4 red1; + static LLColor4 red2; + static LLColor4 red3; + static LLColor4 red4; + static LLColor4 red5; + + static LLColor4 green1; + static LLColor4 green2; + static LLColor4 green3; + static LLColor4 green4; + static LLColor4 green5; + static LLColor4 green6; + + static LLColor4 blue1; + static LLColor4 blue2; + static LLColor4 blue3; + static LLColor4 blue4; + static LLColor4 blue5; + static LLColor4 blue6; + + static LLColor4 yellow1; + static LLColor4 yellow2; + static LLColor4 yellow3; + static LLColor4 yellow4; + static LLColor4 yellow5; + static LLColor4 yellow6; + static LLColor4 yellow7; + static LLColor4 yellow8; + static LLColor4 yellow9; + + static LLColor4 orange1; + static LLColor4 orange2; + static LLColor4 orange3; + static LLColor4 orange4; + static LLColor4 orange5; + static LLColor4 orange6; + + static LLColor4 magenta1; + static LLColor4 magenta2; + static LLColor4 magenta3; + static LLColor4 magenta4; + + static LLColor4 purple1; + static LLColor4 purple2; + static LLColor4 purple3; + static LLColor4 purple4; + static LLColor4 purple5; + static LLColor4 purple6; + + static LLColor4 pink1; + static LLColor4 pink2; + + static LLColor4 cyan1; + static LLColor4 cyan2; + static LLColor4 cyan3; + static LLColor4 cyan4; + static LLColor4 cyan5; + static LLColor4 cyan6; + + static bool parseColor(const std::string& buf, LLColor4* color); + static bool parseColor4(const std::string& buf, LLColor4* color); + + inline void clamp(); +}; // Non-member functions -F32 distVec(const LLColor4 &a, const LLColor4 &b); // Returns distance between a and b -F32 distVec_squared(const LLColor4 &a, const LLColor4 &b); // Returns distance squared between a and b -LLColor3 vec4to3(const LLColor4 &vec); -LLColor4 vec3to4(const LLColor3 &vec); -LLColor4 lerp(const LLColor4 &a, const LLColor4 &b, F32 u); +F32 distVec(const LLColor4& a, const LLColor4& b); // Returns distance between a and b +F32 distVec_squared(const LLColor4& a, const LLColor4& b); // Returns distance squared between a and b +LLColor3 vec4to3(const LLColor4& vec); +LLColor4 vec3to4(const LLColor3& vec); +LLColor4 lerp(const LLColor4& a, const LLColor4& b, F32 u); -inline LLColor4::LLColor4(void) +inline LLColor4::LLColor4() { - mV[VRED] = 0.f; + mV[VRED] = 0.f; mV[VGREEN] = 0.f; - mV[VBLUE] = 0.f; + mV[VBLUE] = 0.f; mV[VALPHA] = 1.f; } @@ -255,149 +253,146 @@ inline LLColor4::LLColor4(const LLSD& sd) inline LLColor4::LLColor4(F32 r, F32 g, F32 b) { - mV[VRED] = r; + mV[VRED] = r; mV[VGREEN] = g; - mV[VBLUE] = b; + mV[VBLUE] = b; mV[VALPHA] = 1.f; } inline LLColor4::LLColor4(F32 r, F32 g, F32 b, F32 a) { - mV[VRED] = r; + mV[VRED] = r; mV[VGREEN] = g; - mV[VBLUE] = b; + mV[VBLUE] = b; mV[VALPHA] = a; } inline LLColor4::LLColor4(U32 clr) { - mV[VRED] = (clr&0xff) * (1.0f/255.0f); - mV[VGREEN] = ((clr>>8)&0xff) * (1.0f/255.0f); - mV[VBLUE] = ((clr>>16)&0xff) * (1.0f/255.0f); - mV[VALPHA] = (clr>>24) * (1.0f/255.0f); + mV[VRED] = (clr & 0xff) * (1.0f / 255.0f); + mV[VGREEN] = ((clr >> 8) & 0xff) * (1.0f / 255.0f); + mV[VBLUE] = ((clr >> 16) & 0xff) * (1.0f / 255.0f); + mV[VALPHA] = (clr >> 24) * (1.0f / 255.0f); } - -inline LLColor4::LLColor4(const F32 *vec) +inline LLColor4::LLColor4(const F32* vec) { - mV[VRED] = vec[VRED]; + mV[VRED] = vec[VRED]; mV[VGREEN] = vec[VGREEN]; - mV[VBLUE] = vec[VBLUE]; + mV[VBLUE] = vec[VBLUE]; mV[VALPHA] = vec[VALPHA]; } -inline const LLColor4& LLColor4::setToBlack(void) +inline const LLColor4& LLColor4::setToBlack(void) { - mV[VRED] = 0.f; + mV[VRED] = 0.f; mV[VGREEN] = 0.f; - mV[VBLUE] = 0.f; + mV[VBLUE] = 0.f; mV[VALPHA] = 1.f; return (*this); } -inline const LLColor4& LLColor4::setToWhite(void) +inline const LLColor4& LLColor4::setToWhite(void) { - mV[VRED] = 1.f; + mV[VRED] = 1.f; mV[VGREEN] = 1.f; - mV[VBLUE] = 1.f; + mV[VBLUE] = 1.f; mV[VALPHA] = 1.f; return (*this); } -inline const LLColor4& LLColor4::set(F32 x, F32 y, F32 z) +inline const LLColor4& LLColor4::set(F32 x, F32 y, F32 z) { - mV[VRED] = x; + mV[VRED] = x; mV[VGREEN] = y; - mV[VBLUE] = z; + mV[VBLUE] = z; -// no change to alpha! -// mV[VALPHA] = 1.f; + // no change to alpha! + // mV[VALPHA] = 1.f; return (*this); } -inline const LLColor4& LLColor4::set(F32 x, F32 y, F32 z, F32 a) +inline const LLColor4& LLColor4::set(F32 x, F32 y, F32 z, F32 a) { - mV[VRED] = x; + mV[VRED] = x; mV[VGREEN] = y; - mV[VBLUE] = z; + mV[VBLUE] = z; mV[VALPHA] = a; return (*this); } -inline const LLColor4& LLColor4::set(const LLColor4 &vec) +inline const LLColor4& LLColor4::set(const LLColor4& vec) { - mV[VRED] = vec.mV[VRED]; + mV[VRED] = vec.mV[VRED]; mV[VGREEN] = vec.mV[VGREEN]; - mV[VBLUE] = vec.mV[VBLUE]; + mV[VBLUE] = vec.mV[VBLUE]; mV[VALPHA] = vec.mV[VALPHA]; return (*this); } - -inline const LLColor4& LLColor4::set(const F32 *vec) +inline const LLColor4& LLColor4::set(const F32* vec) { - mV[VRED] = vec[VRED]; + mV[VRED] = vec[VRED]; mV[VGREEN] = vec[VGREEN]; - mV[VBLUE] = vec[VBLUE]; + mV[VBLUE] = vec[VBLUE]; mV[VALPHA] = vec[VALPHA]; return (*this); } -inline const LLColor4& LLColor4::set(const F64 *vec) +inline const LLColor4& LLColor4::set(const F64* vec) { - mV[VRED] = static_cast<F32>(vec[VRED]); + mV[VRED] = static_cast<F32>(vec[VRED]); mV[VGREEN] = static_cast<F32>(vec[VGREEN]); - mV[VBLUE] = static_cast<F32>(vec[VBLUE]); + mV[VBLUE] = static_cast<F32>(vec[VBLUE]); mV[VALPHA] = static_cast<F32>(vec[VALPHA]); return (*this); } // deprecated -inline const LLColor4& LLColor4::setVec(F32 x, F32 y, F32 z) +inline const LLColor4& LLColor4::setVec(F32 x, F32 y, F32 z) { - mV[VRED] = x; + mV[VRED] = x; mV[VGREEN] = y; - mV[VBLUE] = z; + mV[VBLUE] = z; -// no change to alpha! -// mV[VALPHA] = 1.f; + // no change to alpha! + // mV[VALPHA] = 1.f; return (*this); } // deprecated -inline const LLColor4& LLColor4::setVec(F32 x, F32 y, F32 z, F32 a) +inline const LLColor4& LLColor4::setVec(F32 x, F32 y, F32 z, F32 a) { - mV[VRED] = x; + mV[VRED] = x; mV[VGREEN] = y; - mV[VBLUE] = z; + mV[VBLUE] = z; mV[VALPHA] = a; return (*this); } // deprecated -inline const LLColor4& LLColor4::setVec(const LLColor4 &vec) +inline const LLColor4& LLColor4::setVec(const LLColor4& vec) { - mV[VRED] = vec.mV[VRED]; + mV[VRED] = vec.mV[VRED]; mV[VGREEN] = vec.mV[VGREEN]; - mV[VBLUE] = vec.mV[VBLUE]; + mV[VBLUE] = vec.mV[VBLUE]; mV[VALPHA] = vec.mV[VALPHA]; return (*this); } - // deprecated -inline const LLColor4& LLColor4::setVec(const F32 *vec) +inline const LLColor4& LLColor4::setVec(const F32* vec) { - mV[VRED] = vec[VRED]; + mV[VRED] = vec[VRED]; mV[VGREEN] = vec[VGREEN]; - mV[VBLUE] = vec[VBLUE]; + mV[VBLUE] = vec[VBLUE]; mV[VALPHA] = vec[VALPHA]; return (*this); } -inline const LLColor4& LLColor4::setAlpha(F32 a) +inline const LLColor4& LLColor4::setAlpha(F32 a) { mV[VALPHA] = a; return (*this); @@ -405,155 +400,116 @@ inline const LLColor4& LLColor4::setAlpha(F32 a) // LLColor4 Magnitude and Normalization Functions -inline F32 LLColor4::length(void) const +inline F32 LLColor4::length() const { - return (F32) sqrt(mV[VRED]*mV[VRED] + mV[VGREEN]*mV[VGREEN] + mV[VBLUE]*mV[VBLUE]); + return sqrt(mV[VRED] * mV[VRED] + mV[VGREEN] * mV[VGREEN] + mV[VBLUE] * mV[VBLUE]); } -inline F32 LLColor4::lengthSquared(void) const +inline F32 LLColor4::lengthSquared() const { - return mV[VRED]*mV[VRED] + mV[VGREEN]*mV[VGREEN] + mV[VBLUE]*mV[VBLUE]; + return mV[VRED] * mV[VRED] + mV[VGREEN] * mV[VGREEN] + mV[VBLUE] * mV[VBLUE]; } -inline F32 LLColor4::normalize(void) +inline F32 LLColor4::normalize() { - F32 mag = (F32) sqrt(mV[VRED]*mV[VRED] + mV[VGREEN]*mV[VGREEN] + mV[VBLUE]*mV[VBLUE]); + F32 mag = sqrt(mV[VRED] * mV[VRED] + mV[VGREEN] * mV[VGREEN] + mV[VBLUE] * mV[VBLUE]); F32 oomag; if (mag) { - oomag = 1.f/mag; + oomag = 1.f / mag; mV[VRED] *= oomag; mV[VGREEN] *= oomag; mV[VBLUE] *= oomag; } - return (mag); + return mag; } // deprecated -inline F32 LLColor4::magVec(void) const +inline F32 LLColor4::magVec() const { - return (F32) sqrt(mV[VRED]*mV[VRED] + mV[VGREEN]*mV[VGREEN] + mV[VBLUE]*mV[VBLUE]); + return sqrt(mV[VRED] * mV[VRED] + mV[VGREEN] * mV[VGREEN] + mV[VBLUE] * mV[VBLUE]); } // deprecated -inline F32 LLColor4::magVecSquared(void) const +inline F32 LLColor4::magVecSquared() const { - return mV[VRED]*mV[VRED] + mV[VGREEN]*mV[VGREEN] + mV[VBLUE]*mV[VBLUE]; + return mV[VRED] * mV[VRED] + mV[VGREEN] * mV[VGREEN] + mV[VBLUE] * mV[VBLUE]; } // deprecated -inline F32 LLColor4::normVec(void) +inline F32 LLColor4::normVec() { - F32 mag = (F32) sqrt(mV[VRED]*mV[VRED] + mV[VGREEN]*mV[VGREEN] + mV[VBLUE]*mV[VBLUE]); + F32 mag = sqrt(mV[VRED] * mV[VRED] + mV[VGREEN] * mV[VGREEN] + mV[VBLUE] * mV[VBLUE]); F32 oomag; if (mag) { - oomag = 1.f/mag; + oomag = 1.f / mag; mV[VRED] *= oomag; mV[VGREEN] *= oomag; mV[VBLUE] *= oomag; } - return (mag); + return mag; } // LLColor4 Operators - -inline LLColor4 operator+(const LLColor4 &a, const LLColor4 &b) +inline LLColor4 operator+(const LLColor4& a, const LLColor4& b) { - return LLColor4( - a.mV[VRED] + b.mV[VRED], - a.mV[VGREEN] + b.mV[VGREEN], - a.mV[VBLUE] + b.mV[VBLUE], - a.mV[VALPHA] + b.mV[VALPHA]); + return LLColor4(a.mV[VRED] + b.mV[VRED], a.mV[VGREEN] + b.mV[VGREEN], a.mV[VBLUE] + b.mV[VBLUE], a.mV[VALPHA] + b.mV[VALPHA]); } -inline LLColor4 operator-(const LLColor4 &a, const LLColor4 &b) +inline LLColor4 operator-(const LLColor4& a, const LLColor4& b) { - return LLColor4( - a.mV[VRED] - b.mV[VRED], - a.mV[VGREEN] - b.mV[VGREEN], - a.mV[VBLUE] - b.mV[VBLUE], - a.mV[VALPHA] - b.mV[VALPHA]); + return LLColor4(a.mV[VRED] - b.mV[VRED], a.mV[VGREEN] - b.mV[VGREEN], a.mV[VBLUE] - b.mV[VBLUE], a.mV[VALPHA] - b.mV[VALPHA]); } -inline LLColor4 operator*(const LLColor4 &a, const LLColor4 &b) +inline LLColor4 operator*(const LLColor4& a, const LLColor4& b) { - return LLColor4( - a.mV[VRED] * b.mV[VRED], - a.mV[VGREEN] * b.mV[VGREEN], - a.mV[VBLUE] * b.mV[VBLUE], - a.mV[VALPHA] * b.mV[VALPHA]); + return LLColor4(a.mV[VRED] * b.mV[VRED], a.mV[VGREEN] * b.mV[VGREEN], a.mV[VBLUE] * b.mV[VBLUE], a.mV[VALPHA] * b.mV[VALPHA]); } -inline LLColor4 operator*(const LLColor4 &a, F32 k) +inline LLColor4 operator*(const LLColor4& a, F32 k) { // only affects rgb (not a!) - return LLColor4( - a.mV[VRED] * k, - a.mV[VGREEN] * k, - a.mV[VBLUE] * k, - a.mV[VALPHA]); + return LLColor4(a.mV[VRED] * k, a.mV[VGREEN] * k, a.mV[VBLUE] * k, a.mV[VALPHA]); } -inline LLColor4 operator/(const LLColor4 &a, F32 k) +inline LLColor4 operator/(const LLColor4& a, F32 k) { - return LLColor4( - a.mV[VRED] / k, - a.mV[VGREEN] / k, - a.mV[VBLUE] / k, - a.mV[VALPHA]); + return LLColor4(a.mV[VRED] / k, a.mV[VGREEN] / k, a.mV[VBLUE] / k, a.mV[VALPHA]); } -inline LLColor4 operator*(F32 k, const LLColor4 &a) +inline LLColor4 operator*(F32 k, const LLColor4& a) { // only affects rgb (not a!) - return LLColor4( - a.mV[VRED] * k, - a.mV[VGREEN] * k, - a.mV[VBLUE] * k, - a.mV[VALPHA]); + return LLColor4(a.mV[VRED] * k, a.mV[VGREEN] * k, a.mV[VBLUE] * k, a.mV[VALPHA]); } -inline LLColor4 operator%(F32 k, const LLColor4 &a) +inline LLColor4 operator%(F32 k, const LLColor4& a) { // only affects alpha (not rgb!) - return LLColor4( - a.mV[VRED], - a.mV[VGREEN], - a.mV[VBLUE], - a.mV[VALPHA] * k); + return LLColor4(a.mV[VRED], a.mV[VGREEN], a.mV[VBLUE], a.mV[VALPHA] * k); } -inline LLColor4 operator%(const LLColor4 &a, F32 k) +inline LLColor4 operator%(const LLColor4& a, F32 k) { // only affects alpha (not rgb!) - return LLColor4( - a.mV[VRED], - a.mV[VGREEN], - a.mV[VBLUE], - a.mV[VALPHA] * k); + return LLColor4(a.mV[VRED], a.mV[VGREEN], a.mV[VBLUE], a.mV[VALPHA] * k); } -inline bool operator==(const LLColor4 &a, const LLColor4 &b) +inline bool operator==(const LLColor4& a, const LLColor4& b) { - return ( (a.mV[VRED] == b.mV[VRED]) - &&(a.mV[VGREEN] == b.mV[VGREEN]) - &&(a.mV[VBLUE] == b.mV[VBLUE]) - &&(a.mV[VALPHA] == b.mV[VALPHA])); + return ((a.mV[VRED] == b.mV[VRED]) && (a.mV[VGREEN] == b.mV[VGREEN]) && (a.mV[VBLUE] == b.mV[VBLUE]) && (a.mV[VALPHA] == b.mV[VALPHA])); } -inline bool operator!=(const LLColor4 &a, const LLColor4 &b) +inline bool operator!=(const LLColor4& a, const LLColor4& b) { - return ( (a.mV[VRED] != b.mV[VRED]) - ||(a.mV[VGREEN] != b.mV[VGREEN]) - ||(a.mV[VBLUE] != b.mV[VBLUE]) - ||(a.mV[VALPHA] != b.mV[VALPHA])); + return ((a.mV[VRED] != b.mV[VRED]) || (a.mV[VGREEN] != b.mV[VGREEN]) || (a.mV[VBLUE] != b.mV[VBLUE]) || (a.mV[VALPHA] != b.mV[VALPHA])); } -inline const LLColor4& operator+=(LLColor4 &a, const LLColor4 &b) +inline const LLColor4& operator+=(LLColor4& a, const LLColor4& b) { a.mV[VRED] += b.mV[VRED]; a.mV[VGREEN] += b.mV[VGREEN]; @@ -562,7 +518,7 @@ inline const LLColor4& operator+=(LLColor4 &a, const LLColor4 &b) return a; } -inline const LLColor4& operator-=(LLColor4 &a, const LLColor4 &b) +inline const LLColor4& operator-=(LLColor4& a, const LLColor4& b) { a.mV[VRED] -= b.mV[VRED]; a.mV[VGREEN] -= b.mV[VGREEN]; @@ -571,7 +527,7 @@ inline const LLColor4& operator-=(LLColor4 &a, const LLColor4 &b) return a; } -inline const LLColor4& operator*=(LLColor4 &a, F32 k) +inline const LLColor4& operator*=(LLColor4& a, F32 k) { // only affects rgb (not a!) a.mV[VRED] *= k; @@ -580,121 +536,120 @@ inline const LLColor4& operator*=(LLColor4 &a, F32 k) return a; } -inline const LLColor4& operator *=(LLColor4 &a, const LLColor4 &b) +inline const LLColor4& operator*=(LLColor4& a, const LLColor4& b) { a.mV[VRED] *= b.mV[VRED]; a.mV[VGREEN] *= b.mV[VGREEN]; a.mV[VBLUE] *= b.mV[VBLUE]; -// a.mV[VALPHA] *= b.mV[VALPHA]; + // a.mV[VALPHA] *= b.mV[VALPHA]; return a; } -inline const LLColor4& operator%=(LLColor4 &a, F32 k) +inline const LLColor4& operator%=(LLColor4& a, F32 k) { // only affects alpha (not rgb!) a.mV[VALPHA] *= k; return a; } - // Non-member functions -inline F32 distVec(const LLColor4 &a, const LLColor4 &b) +inline F32 distVec(const LLColor4& a, const LLColor4& b) { LLColor4 vec = a - b; - return (vec.length()); + return vec.length(); } -inline F32 distVec_squared(const LLColor4 &a, const LLColor4 &b) +inline F32 distVec_squared(const LLColor4& a, const LLColor4& b) { LLColor4 vec = a - b; - return (vec.lengthSquared()); + return vec.lengthSquared(); } -inline LLColor4 lerp(const LLColor4 &a, const LLColor4 &b, F32 u) +inline LLColor4 lerp(const LLColor4& a, const LLColor4& b, F32 u) { - return LLColor4( - a.mV[VRED] + (b.mV[VRED] - a.mV[VRED]) * u, - a.mV[VGREEN] + (b.mV[VGREEN] - a.mV[VGREEN]) * u, - a.mV[VBLUE] + (b.mV[VBLUE] - a.mV[VBLUE]) * u, - a.mV[VALPHA] + (b.mV[VALPHA] - a.mV[VALPHA]) * u); + return LLColor4(a.mV[VRED] + (b.mV[VRED] - a.mV[VRED]) * u, + a.mV[VGREEN] + (b.mV[VGREEN] - a.mV[VGREEN]) * u, + a.mV[VBLUE] + (b.mV[VBLUE] - a.mV[VBLUE]) * u, + a.mV[VALPHA] + (b.mV[VALPHA] - a.mV[VALPHA]) * u); } inline bool LLColor4::operator<(const LLColor4& rhs) const { - if (mV[0] != rhs.mV[0]) + if (mV[VRED] != rhs.mV[VRED]) { - return mV[0] < rhs.mV[0]; + return mV[VRED] < rhs.mV[VRED]; } - if (mV[1] != rhs.mV[1]) + if (mV[VGREEN] != rhs.mV[VGREEN]) { - return mV[1] < rhs.mV[1]; + return mV[VGREEN] < rhs.mV[VGREEN]; } - if (mV[2] != rhs.mV[2]) + if (mV[VBLUE] != rhs.mV[VBLUE]) { - return mV[2] < rhs.mV[2]; + return mV[VBLUE] < rhs.mV[VBLUE]; } - return mV[3] < rhs.mV[3]; + return mV[VALPHA] < rhs.mV[VALPHA]; } void LLColor4::clamp() { // Clamp the color... - if (mV[0] < 0.f) + if (mV[VRED] < 0.f) { - mV[0] = 0.f; + mV[VRED] = 0.f; } - else if (mV[0] > 1.f) + else if (mV[VRED] > 1.f) { - mV[0] = 1.f; + mV[VRED] = 1.f; } - if (mV[1] < 0.f) + if (mV[VGREEN] < 0.f) { - mV[1] = 0.f; + mV[VGREEN] = 0.f; } - else if (mV[1] > 1.f) + else if (mV[VGREEN] > 1.f) { - mV[1] = 1.f; + mV[VGREEN] = 1.f; } - if (mV[2] < 0.f) + if (mV[VBLUE] < 0.f) { - mV[2] = 0.f; + mV[VBLUE] = 0.f; } - else if (mV[2] > 1.f) + else if (mV[VBLUE] > 1.f) { - mV[2] = 1.f; + mV[VBLUE] = 1.f; } - if (mV[3] < 0.f) + if (mV[VALPHA] < 0.f) { - mV[3] = 0.f; + mV[VALPHA] = 0.f; } - else if (mV[3] > 1.f) + else if (mV[VALPHA] > 1.f) { - mV[3] = 1.f; + mV[VALPHA] = 1.f; } } // Return the given linear space color value in gamma corrected (sRGB) space -inline const LLColor4 srgbColor4(const LLColor4 &a) { +inline const LLColor4 srgbColor4(const LLColor4& a) +{ LLColor4 srgbColor; - srgbColor.mV[0] = linearTosRGB(a.mV[0]); - srgbColor.mV[1] = linearTosRGB(a.mV[1]); - srgbColor.mV[2] = linearTosRGB(a.mV[2]); - srgbColor.mV[3] = a.mV[3]; + srgbColor.mV[VRED] = linearTosRGB(a.mV[VRED]); + srgbColor.mV[VGREEN] = linearTosRGB(a.mV[VGREEN]); + srgbColor.mV[VBLUE] = linearTosRGB(a.mV[VBLUE]); + srgbColor.mV[VALPHA] = a.mV[VALPHA]; return srgbColor; } // Return the given gamma corrected (sRGB) color in linear space -inline const LLColor4 linearColor4(const LLColor4 &a) +inline const LLColor4 linearColor4(const LLColor4& a) { LLColor4 linearColor; - linearColor.mV[0] = sRGBtoLinear(a.mV[0]); - linearColor.mV[1] = sRGBtoLinear(a.mV[1]); - linearColor.mV[2] = sRGBtoLinear(a.mV[2]); - linearColor.mV[3] = a.mV[3]; + linearColor.mV[VRED] = sRGBtoLinear(a.mV[VRED]); + linearColor.mV[VGREEN] = sRGBtoLinear(a.mV[VGREEN]); + linearColor.mV[VBLUE] = sRGBtoLinear(a.mV[VBLUE]); + linearColor.mV[VALPHA] = a.mV[VALPHA]; return linearColor; } @@ -720,4 +675,3 @@ void LLColor4::write(std::vector<T>& v) const } #endif - diff --git a/indra/llmath/v4coloru.cpp b/indra/llmath/v4coloru.cpp index acf349245a..c495ffdb4c 100644 --- a/indra/llmath/v4coloru.cpp +++ b/indra/llmath/v4coloru.cpp @@ -26,10 +26,7 @@ #include "linden_common.h" -//#include "v3coloru.h" #include "v4coloru.h" -#include "v4color.h" -//#include "vmath.h" #include "llmath.h" // LLColor4U @@ -39,49 +36,7 @@ LLColor4U LLColor4U::red (255, 0, 0, 255); LLColor4U LLColor4U::green( 0, 255, 0, 255); LLColor4U LLColor4U::blue ( 0, 0, 255, 255); -// conversion -/* inlined to fix gcc compile link error -LLColor4U::operator LLColor4() -{ - return(LLColor4((F32)mV[VRED]/255.f,(F32)mV[VGREEN]/255.f,(F32)mV[VBLUE]/255.f,(F32)mV[VALPHA]/255.f)); -} -*/ - -// Constructors - - -/* -LLColor4U::LLColor4U(const LLColor3 &vec) -{ - mV[VRED] = vec.mV[VRED]; - mV[VGREEN] = vec.mV[VGREEN]; - mV[VBLUE] = vec.mV[VBLUE]; - mV[VALPHA] = 255; -} -*/ - - -// Clear and Assignment Functions - - - -// LLColor4U Operators - -/* -LLColor4U LLColor4U::operator=(const LLColor3 &a) -{ - mV[VRED] = a.mV[VRED]; - mV[VGREEN] = a.mV[VGREEN]; - mV[VBLUE] = a.mV[VBLUE]; - -// converting from an rgb sets a=1 (opaque) - mV[VALPHA] = 255; - return (*this); -} -*/ - - -std::ostream& operator<<(std::ostream& s, const LLColor4U &a) +std::ostream& operator<<(std::ostream& s, const LLColor4U& a) { s << "{ " << (S32)a.mV[VRED] << ", " << (S32)a.mV[VGREEN] << ", " << (S32)a.mV[VBLUE] << ", " << (S32)a.mV[VALPHA] << " }"; return s; @@ -90,31 +45,31 @@ std::ostream& operator<<(std::ostream& s, const LLColor4U &a) // static bool LLColor4U::parseColor4U(const std::string& buf, LLColor4U* value) { - if( buf.empty() || value == nullptr) + if (buf.empty() || value == nullptr) { return false; } - U32 v[4]; - S32 count = sscanf( buf.c_str(), "%u, %u, %u, %u", v + 0, v + 1, v + 2, v + 3 ); - if (1 == count ) + U32 v[4]{}; + S32 count = sscanf(buf.c_str(), "%u, %u, %u, %u", v + 0, v + 1, v + 2, v + 3); + if (1 == count) { // try this format - count = sscanf( buf.c_str(), "%u %u %u %u", v + 0, v + 1, v + 2, v + 3 ); + count = sscanf(buf.c_str(), "%u %u %u %u", v + 0, v + 1, v + 2, v + 3); } - if( 4 != count ) + if (4 != count) { return false; } - for( S32 i = 0; i < 4; i++ ) + for (S32 i = 0; i < 4; i++) { - if( v[i] > U8_MAX ) + if (v[i] > U8_MAX) { return false; } } - value->set( U8(v[0]), U8(v[1]), U8(v[2]), U8(v[3]) ); + value->set(U8(v[VRED]), U8(v[VGREEN]), U8(v[VBLUE]), U8(v[VALPHA])); return true; } diff --git a/indra/llmath/v4coloru.h b/indra/llmath/v4coloru.h index 29128a08a7..bfa998bc58 100644 --- a/indra/llmath/v4coloru.h +++ b/indra/llmath/v4coloru.h @@ -28,104 +28,93 @@ #define LL_V4COLORU_H #include "llerror.h" -//#include "vmath.h" #include "llmath.h" -//#include "v4color.h" #include "v3color.h" #include "v4color.h" -//class LLColor3U; class LLColor4; // LLColor4U = | red green blue alpha | -static const U32 LENGTHOFCOLOR4U = 4; - +static constexpr U32 LENGTHOFCOLOR4U = 4; class LLColor4U { public: - U8 mV[LENGTHOFCOLOR4U]; - LLColor4U(); // Initializes LLColor4U to (0, 0, 0, 1) - LLColor4U(U8 r, U8 g, U8 b); // Initializes LLColor4U to (r, g, b, 1) - LLColor4U(U8 r, U8 g, U8 b, U8 a); // Initializes LLColor4U to (r. g, b, a) - LLColor4U(const U8 *vec); // Initializes LLColor4U to (vec[0]. vec[1], vec[2], 1) - explicit LLColor4U(const LLSD& sd) - { - setValue(sd); - } + LLColor4U(); // Initializes LLColor4U to (0, 0, 0, 1) + LLColor4U(U8 r, U8 g, U8 b); // Initializes LLColor4U to (r, g, b, 1) + LLColor4U(U8 r, U8 g, U8 b, U8 a); // Initializes LLColor4U to (r. g, b, a) + LLColor4U(const U8* vec); // Initializes LLColor4U to (vec[0]. vec[1], vec[2], 1) + explicit LLColor4U(const LLSD& sd) { setValue(sd); } void setValue(const LLSD& sd) { - mV[0] = sd[0].asInteger(); - mV[1] = sd[1].asInteger(); - mV[2] = sd[2].asInteger(); - mV[3] = sd[3].asInteger(); + mV[VRED] = sd[VRED].asInteger(); + mV[VGREEN] = sd[VGREEN].asInteger(); + mV[VBLUE] = sd[VBLUE].asInteger(); + mV[VALPHA] = sd[VALPHA].asInteger(); } LLSD getValue() const { LLSD ret; - ret[0] = mV[0]; - ret[1] = mV[1]; - ret[2] = mV[2]; - ret[3] = mV[3]; + ret[VRED] = mV[VRED]; + ret[VGREEN] = mV[VGREEN]; + ret[VBLUE] = mV[VBLUE]; + ret[VALPHA] = mV[VALPHA]; return ret; } - const LLColor4U& setToBlack(); // zero LLColor4U to (0, 0, 0, 1) - const LLColor4U& setToWhite(); // zero LLColor4U to (0, 0, 0, 1) + const LLColor4U& setToBlack(); // zero LLColor4U to (0, 0, 0, 1) + const LLColor4U& setToWhite(); // zero LLColor4U to (0, 0, 0, 1) - const LLColor4U& set(U8 r, U8 g, U8 b, U8 a);// Sets LLColor4U to (r, g, b, a) - const LLColor4U& set(U8 r, U8 g, U8 b); // Sets LLColor4U to (r, g, b) (no change in a) - const LLColor4U& set(const LLColor4U &vec); // Sets LLColor4U to vec - const LLColor4U& set(const U8 *vec); // Sets LLColor4U to vec + const LLColor4U& set(U8 r, U8 g, U8 b, U8 a); // Sets LLColor4U to (r, g, b, a) + const LLColor4U& set(U8 r, U8 g, U8 b); // Sets LLColor4U to (r, g, b) (no change in a) + const LLColor4U& set(const LLColor4U& vec); // Sets LLColor4U to vec + const LLColor4U& set(const U8* vec); // Sets LLColor4U to vec - const LLColor4U& setVec(U8 r, U8 g, U8 b, U8 a); // deprecated -- use set() - const LLColor4U& setVec(U8 r, U8 g, U8 b); // deprecated -- use set() - const LLColor4U& setVec(const LLColor4U &vec); // deprecated -- use set() - const LLColor4U& setVec(const U8 *vec); // deprecated -- use set() + const LLColor4U& setVec(U8 r, U8 g, U8 b, U8 a); // deprecated -- use set() + const LLColor4U& setVec(U8 r, U8 g, U8 b); // deprecated -- use set() + const LLColor4U& setVec(const LLColor4U& vec); // deprecated -- use set() + const LLColor4U& setVec(const U8* vec); // deprecated -- use set() - const LLColor4U& setAlpha(U8 a); + const LLColor4U& setAlpha(U8 a); - F32 magVec() const; // deprecated -- use length() - F32 magVecSquared() const; // deprecated -- use lengthSquared() + F32 magVec() const; // deprecated -- use length() + F32 magVecSquared() const; // deprecated -- use lengthSquared() - F32 length() const; // Returns magnitude squared of LLColor4U - F32 lengthSquared() const; // Returns magnitude squared of LLColor4U + F32 length() const; // Returns magnitude squared of LLColor4U + F32 lengthSquared() const; // Returns magnitude squared of LLColor4U - friend std::ostream& operator<<(std::ostream& s, const LLColor4U &a); // Print a - friend LLColor4U operator+(const LLColor4U &a, const LLColor4U &b); // Return vector a + b - friend LLColor4U operator-(const LLColor4U &a, const LLColor4U &b); // Return vector a minus b - friend LLColor4U operator*(const LLColor4U &a, const LLColor4U &b); // Return a * b - friend bool operator==(const LLColor4U &a, const LLColor4U &b); // Return a == b - friend bool operator!=(const LLColor4U &a, const LLColor4U &b); // Return a != b + friend std::ostream& operator<<(std::ostream& s, const LLColor4U& a); // Print a + friend LLColor4U operator+(const LLColor4U& a, const LLColor4U& b); // Return vector a + b + friend LLColor4U operator-(const LLColor4U& a, const LLColor4U& b); // Return vector a minus b + friend LLColor4U operator*(const LLColor4U& a, const LLColor4U& b); // Return a * b + friend bool operator==(const LLColor4U& a, const LLColor4U& b); // Return a == b + friend bool operator!=(const LLColor4U& a, const LLColor4U& b); // Return a != b - friend const LLColor4U& operator+=(LLColor4U &a, const LLColor4U &b); // Return vector a + b - friend const LLColor4U& operator-=(LLColor4U &a, const LLColor4U &b); // Return vector a minus b - friend const LLColor4U& operator*=(LLColor4U &a, U8 k); // Return rgb times scaler k (no alpha change) - friend const LLColor4U& operator%=(LLColor4U &a, U8 k); // Return alpha times scaler k (no rgb change) + friend const LLColor4U& operator+=(LLColor4U& a, const LLColor4U& b); // Return vector a + b + friend const LLColor4U& operator-=(LLColor4U& a, const LLColor4U& b); // Return vector a minus b + friend const LLColor4U& operator*=(LLColor4U& a, U8 k); // Return rgb times scaler k (no alpha change) + friend const LLColor4U& operator%=(LLColor4U& a, U8 k); // Return alpha times scaler k (no rgb change) - LLColor4U addClampMax(const LLColor4U &color); // Add and clamp the max + LLColor4U addClampMax(const LLColor4U& color); // Add and clamp the max - LLColor4U multAll(const F32 k); // Multiply ALL channels by scalar k + LLColor4U multAll(const F32 k); // Multiply ALL channels by scalar k - inline void setVecScaleClamp(const LLColor3 &color); - inline void setVecScaleClamp(const LLColor4 &color); + inline void setVecScaleClamp(const LLColor3& color); + inline void setVecScaleClamp(const LLColor4& color); static bool parseColor4U(const std::string& buf, LLColor4U* value); // conversion - operator LLColor4() const - { - return LLColor4(*this); - } + operator LLColor4() const { return LLColor4(*this); } - U32 asRGBA() const; - void fromRGBA( U32 aVal ); + U32 asRGBA() const; + void fromRGBA(U32 aVal); static LLColor4U white; static LLColor4U black; @@ -134,104 +123,95 @@ public: static LLColor4U blue; }; - // Non-member functions -F32 distVec(const LLColor4U &a, const LLColor4U &b); // Returns distance between a and b -F32 distVec_squared(const LLColor4U &a, const LLColor4U &b); // Returns distance squared between a and b - +F32 distVec(const LLColor4U& a, const LLColor4U& b); // Returns distance between a and b +F32 distVec_squared(const LLColor4U& a, const LLColor4U& b); // Returns distance squared between a and b inline LLColor4U::LLColor4U() { - mV[VRED] = 0; + mV[VRED] = 0; mV[VGREEN] = 0; - mV[VBLUE] = 0; + mV[VBLUE] = 0; mV[VALPHA] = 255; } inline LLColor4U::LLColor4U(U8 r, U8 g, U8 b) { - mV[VRED] = r; + mV[VRED] = r; mV[VGREEN] = g; - mV[VBLUE] = b; + mV[VBLUE] = b; mV[VALPHA] = 255; } inline LLColor4U::LLColor4U(U8 r, U8 g, U8 b, U8 a) { - mV[VRED] = r; + mV[VRED] = r; mV[VGREEN] = g; - mV[VBLUE] = b; + mV[VBLUE] = b; mV[VALPHA] = a; } -inline LLColor4U::LLColor4U(const U8 *vec) +inline LLColor4U::LLColor4U(const U8* vec) { - mV[VRED] = vec[VRED]; + mV[VRED] = vec[VRED]; mV[VGREEN] = vec[VGREEN]; - mV[VBLUE] = vec[VBLUE]; + mV[VBLUE] = vec[VBLUE]; mV[VALPHA] = vec[VALPHA]; } -/* -inline LLColor4U::operator LLColor4() -{ - return(LLColor4((F32)mV[VRED]/255.f,(F32)mV[VGREEN]/255.f,(F32)mV[VBLUE]/255.f,(F32)mV[VALPHA]/255.f)); -} -*/ - inline const LLColor4U& LLColor4U::setToBlack(void) { - mV[VRED] = 0; + mV[VRED] = 0; mV[VGREEN] = 0; - mV[VBLUE] = 0; + mV[VBLUE] = 0; mV[VALPHA] = 255; return (*this); } inline const LLColor4U& LLColor4U::setToWhite(void) { - mV[VRED] = 255; + mV[VRED] = 255; mV[VGREEN] = 255; - mV[VBLUE] = 255; + mV[VBLUE] = 255; mV[VALPHA] = 255; return (*this); } inline const LLColor4U& LLColor4U::set(const U8 x, const U8 y, const U8 z) { - mV[VRED] = x; + mV[VRED] = x; mV[VGREEN] = y; - mV[VBLUE] = z; + mV[VBLUE] = z; -// no change to alpha! -// mV[VALPHA] = 255; + // no change to alpha! + // mV[VALPHA] = 255; return (*this); } inline const LLColor4U& LLColor4U::set(const U8 r, const U8 g, const U8 b, U8 a) { - mV[0] = r; - mV[1] = g; - mV[2] = b; - mV[3] = a; + mV[VRED] = r; + mV[VGREEN] = g; + mV[VBLUE] = b; + mV[VALPHA] = a; return (*this); } -inline const LLColor4U& LLColor4U::set(const LLColor4U &vec) +inline const LLColor4U& LLColor4U::set(const LLColor4U& vec) { - mV[VRED] = vec.mV[VRED]; + mV[VRED] = vec.mV[VRED]; mV[VGREEN] = vec.mV[VGREEN]; - mV[VBLUE] = vec.mV[VBLUE]; + mV[VBLUE] = vec.mV[VBLUE]; mV[VALPHA] = vec.mV[VALPHA]; return (*this); } -inline const LLColor4U& LLColor4U::set(const U8 *vec) +inline const LLColor4U& LLColor4U::set(const U8* vec) { - mV[VRED] = vec[VRED]; + mV[VRED] = vec[VRED]; mV[VGREEN] = vec[VGREEN]; - mV[VBLUE] = vec[VBLUE]; + mV[VBLUE] = vec[VBLUE]; mV[VALPHA] = vec[VALPHA]; return (*this); } @@ -239,12 +219,12 @@ inline const LLColor4U& LLColor4U::set(const U8 *vec) // deprecated inline const LLColor4U& LLColor4U::setVec(const U8 x, const U8 y, const U8 z) { - mV[VRED] = x; + mV[VRED] = x; mV[VGREEN] = y; - mV[VBLUE] = z; + mV[VBLUE] = z; -// no change to alpha! -// mV[VALPHA] = 255; + // no change to alpha! + // mV[VALPHA] = 255; return (*this); } @@ -252,29 +232,29 @@ inline const LLColor4U& LLColor4U::setVec(const U8 x, const U8 y, const U8 z) // deprecated inline const LLColor4U& LLColor4U::setVec(const U8 r, const U8 g, const U8 b, U8 a) { - mV[0] = r; - mV[1] = g; - mV[2] = b; - mV[3] = a; + mV[VRED] = r; + mV[VGREEN] = g; + mV[VBLUE] = b; + mV[VALPHA] = a; return (*this); } // deprecated -inline const LLColor4U& LLColor4U::setVec(const LLColor4U &vec) +inline const LLColor4U& LLColor4U::setVec(const LLColor4U& vec) { - mV[VRED] = vec.mV[VRED]; + mV[VRED] = vec.mV[VRED]; mV[VGREEN] = vec.mV[VGREEN]; - mV[VBLUE] = vec.mV[VBLUE]; + mV[VBLUE] = vec.mV[VBLUE]; mV[VALPHA] = vec.mV[VALPHA]; return (*this); } // deprecated -inline const LLColor4U& LLColor4U::setVec(const U8 *vec) +inline const LLColor4U& LLColor4U::setVec(const U8* vec) { - mV[VRED] = vec[VRED]; + mV[VRED] = vec[VRED]; mV[VGREEN] = vec[VGREEN]; - mV[VBLUE] = vec[VBLUE]; + mV[VBLUE] = vec[VBLUE]; mV[VALPHA] = vec[VALPHA]; return (*this); } @@ -287,131 +267,68 @@ inline const LLColor4U& LLColor4U::setAlpha(U8 a) // LLColor4U Magnitude and Normalization Functions -inline F32 LLColor4U::length(void) const +inline F32 LLColor4U::length() const { - return (F32) sqrt( ((F32)mV[VRED]) * mV[VRED] + ((F32)mV[VGREEN]) * mV[VGREEN] + ((F32)mV[VBLUE]) * mV[VBLUE] ); + return sqrt(((F32)mV[VRED]) * mV[VRED] + ((F32)mV[VGREEN]) * mV[VGREEN] + ((F32)mV[VBLUE]) * mV[VBLUE]); } -inline F32 LLColor4U::lengthSquared(void) const +inline F32 LLColor4U::lengthSquared() const { return ((F32)mV[VRED]) * mV[VRED] + ((F32)mV[VGREEN]) * mV[VGREEN] + ((F32)mV[VBLUE]) * mV[VBLUE]; } // deprecated -inline F32 LLColor4U::magVec(void) const +inline F32 LLColor4U::magVec() const { - return (F32) sqrt( ((F32)mV[VRED]) * mV[VRED] + ((F32)mV[VGREEN]) * mV[VGREEN] + ((F32)mV[VBLUE]) * mV[VBLUE] ); + return sqrt(((F32)mV[VRED]) * mV[VRED] + ((F32)mV[VGREEN]) * mV[VGREEN] + ((F32)mV[VBLUE]) * mV[VBLUE]); } // deprecated -inline F32 LLColor4U::magVecSquared(void) const +inline F32 LLColor4U::magVecSquared() const { return ((F32)mV[VRED]) * mV[VRED] + ((F32)mV[VGREEN]) * mV[VGREEN] + ((F32)mV[VBLUE]) * mV[VBLUE]; } -inline LLColor4U operator+(const LLColor4U &a, const LLColor4U &b) +inline LLColor4U operator+(const LLColor4U& a, const LLColor4U& b) { - return LLColor4U( - a.mV[VRED] + b.mV[VRED], - a.mV[VGREEN] + b.mV[VGREEN], - a.mV[VBLUE] + b.mV[VBLUE], - a.mV[VALPHA] + b.mV[VALPHA]); + return LLColor4U(a.mV[VRED] + b.mV[VRED], a.mV[VGREEN] + b.mV[VGREEN], a.mV[VBLUE] + b.mV[VBLUE], a.mV[VALPHA] + b.mV[VALPHA]); } -inline LLColor4U operator-(const LLColor4U &a, const LLColor4U &b) +inline LLColor4U operator-(const LLColor4U& a, const LLColor4U& b) { - return LLColor4U( - a.mV[VRED] - b.mV[VRED], - a.mV[VGREEN] - b.mV[VGREEN], - a.mV[VBLUE] - b.mV[VBLUE], - a.mV[VALPHA] - b.mV[VALPHA]); + return LLColor4U(a.mV[VRED] - b.mV[VRED], a.mV[VGREEN] - b.mV[VGREEN], a.mV[VBLUE] - b.mV[VBLUE], a.mV[VALPHA] - b.mV[VALPHA]); } -inline LLColor4U operator*(const LLColor4U &a, const LLColor4U &b) +inline LLColor4U operator*(const LLColor4U& a, const LLColor4U& b) { - return LLColor4U( - a.mV[VRED] * b.mV[VRED], - a.mV[VGREEN] * b.mV[VGREEN], - a.mV[VBLUE] * b.mV[VBLUE], - a.mV[VALPHA] * b.mV[VALPHA]); + return LLColor4U(a.mV[VRED] * b.mV[VRED], a.mV[VGREEN] * b.mV[VGREEN], a.mV[VBLUE] * b.mV[VBLUE], a.mV[VALPHA] * b.mV[VALPHA]); } -inline LLColor4U LLColor4U::addClampMax(const LLColor4U &color) +inline LLColor4U LLColor4U::addClampMax(const LLColor4U& color) { return LLColor4U(llmin((S32)mV[VRED] + color.mV[VRED], 255), - llmin((S32)mV[VGREEN] + color.mV[VGREEN], 255), - llmin((S32)mV[VBLUE] + color.mV[VBLUE], 255), - llmin((S32)mV[VALPHA] + color.mV[VALPHA], 255)); + llmin((S32)mV[VGREEN] + color.mV[VGREEN], 255), + llmin((S32)mV[VBLUE] + color.mV[VBLUE], 255), + llmin((S32)mV[VALPHA] + color.mV[VALPHA], 255)); } inline LLColor4U LLColor4U::multAll(const F32 k) { // Round to nearest - return LLColor4U( - (U8)ll_round(mV[VRED] * k), - (U8)ll_round(mV[VGREEN] * k), - (U8)ll_round(mV[VBLUE] * k), - (U8)ll_round(mV[VALPHA] * k)); -} -/* -inline LLColor4U operator*(const LLColor4U &a, U8 k) -{ - // only affects rgb (not a!) - return LLColor4U( - a.mV[VRED] * k, - a.mV[VGREEN] * k, - a.mV[VBLUE] * k, - a.mV[VALPHA]); + return LLColor4U((U8)ll_round(mV[VRED] * k), (U8)ll_round(mV[VGREEN] * k), (U8)ll_round(mV[VBLUE] * k), (U8)ll_round(mV[VALPHA] * k)); } -inline LLColor4U operator*(U8 k, const LLColor4U &a) +inline bool operator==(const LLColor4U& a, const LLColor4U& b) { - // only affects rgb (not a!) - return LLColor4U( - a.mV[VRED] * k, - a.mV[VGREEN] * k, - a.mV[VBLUE] * k, - a.mV[VALPHA]); + return ((a.mV[VRED] == b.mV[VRED]) && (a.mV[VGREEN] == b.mV[VGREEN]) && (a.mV[VBLUE] == b.mV[VBLUE]) && (a.mV[VALPHA] == b.mV[VALPHA])); } -inline LLColor4U operator%(U8 k, const LLColor4U &a) +inline bool operator!=(const LLColor4U& a, const LLColor4U& b) { - // only affects alpha (not rgb!) - return LLColor4U( - a.mV[VRED], - a.mV[VGREEN], - a.mV[VBLUE], - a.mV[VALPHA] * k ); + return ((a.mV[VRED] != b.mV[VRED]) || (a.mV[VGREEN] != b.mV[VGREEN]) || (a.mV[VBLUE] != b.mV[VBLUE]) || (a.mV[VALPHA] != b.mV[VALPHA])); } -inline LLColor4U operator%(const LLColor4U &a, U8 k) -{ - // only affects alpha (not rgb!) - return LLColor4U( - a.mV[VRED], - a.mV[VGREEN], - a.mV[VBLUE], - a.mV[VALPHA] * k ); -} -*/ - -inline bool operator==(const LLColor4U &a, const LLColor4U &b) -{ - return ( (a.mV[VRED] == b.mV[VRED]) - &&(a.mV[VGREEN] == b.mV[VGREEN]) - &&(a.mV[VBLUE] == b.mV[VBLUE]) - &&(a.mV[VALPHA] == b.mV[VALPHA])); -} - -inline bool operator!=(const LLColor4U &a, const LLColor4U &b) -{ - return ( (a.mV[VRED] != b.mV[VRED]) - ||(a.mV[VGREEN] != b.mV[VGREEN]) - ||(a.mV[VBLUE] != b.mV[VBLUE]) - ||(a.mV[VALPHA] != b.mV[VALPHA])); -} - -inline const LLColor4U& operator+=(LLColor4U &a, const LLColor4U &b) +inline const LLColor4U& operator+=(LLColor4U& a, const LLColor4U& b) { a.mV[VRED] += b.mV[VRED]; a.mV[VGREEN] += b.mV[VGREEN]; @@ -420,7 +337,7 @@ inline const LLColor4U& operator+=(LLColor4U &a, const LLColor4U &b) return a; } -inline const LLColor4U& operator-=(LLColor4U &a, const LLColor4U &b) +inline const LLColor4U& operator-=(LLColor4U& a, const LLColor4U& b) { a.mV[VRED] -= b.mV[VRED]; a.mV[VGREEN] -= b.mV[VGREEN]; @@ -429,7 +346,7 @@ inline const LLColor4U& operator-=(LLColor4U &a, const LLColor4U &b) return a; } -inline const LLColor4U& operator*=(LLColor4U &a, U8 k) +inline const LLColor4U& operator*=(LLColor4U& a, U8 k) { // only affects rgb (not a!) a.mV[VRED] *= k; @@ -438,20 +355,20 @@ inline const LLColor4U& operator*=(LLColor4U &a, U8 k) return a; } -inline const LLColor4U& operator%=(LLColor4U &a, U8 k) +inline const LLColor4U& operator%=(LLColor4U& a, U8 k) { // only affects alpha (not rgb!) a.mV[VALPHA] *= k; return a; } -inline F32 distVec(const LLColor4U &a, const LLColor4U &b) +inline F32 distVec(const LLColor4U& a, const LLColor4U& b) { LLColor4U vec = a - b; return (vec.length()); } -inline F32 distVec_squared(const LLColor4U &a, const LLColor4U &b) +inline F32 distVec_squared(const LLColor4U& a, const LLColor4U& b) { LLColor4U vec = a - b; return (vec.lengthSquared()); @@ -460,13 +377,13 @@ inline F32 distVec_squared(const LLColor4U &a, const LLColor4U &b) void LLColor4U::setVecScaleClamp(const LLColor4& color) { F32 color_scale_factor = 255.f; - F32 max_color = llmax(color.mV[0], color.mV[1], color.mV[2]); + F32 max_color = llmax(color.mV[VRED], color.mV[VGREEN], color.mV[VBLUE]); if (max_color > 1.f) { color_scale_factor /= max_color; } - const S32 MAX_COLOR = 255; - S32 r = ll_round(color.mV[0] * color_scale_factor); + constexpr S32 MAX_COLOR = 255; + S32 r = ll_round(color.mV[VRED] * color_scale_factor); if (r > MAX_COLOR) { r = MAX_COLOR; @@ -475,9 +392,9 @@ void LLColor4U::setVecScaleClamp(const LLColor4& color) { r = 0; } - mV[0] = r; + mV[VRED] = r; - S32 g = ll_round(color.mV[1] * color_scale_factor); + S32 g = ll_round(color.mV[VGREEN] * color_scale_factor); if (g > MAX_COLOR) { g = MAX_COLOR; @@ -486,9 +403,9 @@ void LLColor4U::setVecScaleClamp(const LLColor4& color) { g = 0; } - mV[1] = g; + mV[VGREEN] = g; - S32 b = ll_round(color.mV[2] * color_scale_factor); + S32 b = ll_round(color.mV[VBLUE] * color_scale_factor); if (b > MAX_COLOR) { b = MAX_COLOR; @@ -497,10 +414,10 @@ void LLColor4U::setVecScaleClamp(const LLColor4& color) { b = 0; } - mV[2] = b; + mV[VBLUE] = b; // Alpha shouldn't be scaled, just clamped... - S32 a = ll_round(color.mV[3] * MAX_COLOR); + S32 a = ll_round(color.mV[VALPHA] * MAX_COLOR); if (a > MAX_COLOR) { a = MAX_COLOR; @@ -509,44 +426,42 @@ void LLColor4U::setVecScaleClamp(const LLColor4& color) { a = 0; } - mV[3] = a; + mV[VALPHA] = a; } void LLColor4U::setVecScaleClamp(const LLColor3& color) { F32 color_scale_factor = 255.f; - F32 max_color = llmax(color.mV[0], color.mV[1], color.mV[2]); + F32 max_color = llmax(color.mV[VRED], color.mV[VGREEN], color.mV[VBLUE]); if (max_color > 1.f) { color_scale_factor /= max_color; } const S32 MAX_COLOR = 255; - S32 r = ll_round(color.mV[0] * color_scale_factor); + S32 r = ll_round(color.mV[VRED] * color_scale_factor); if (r > MAX_COLOR) { r = MAX_COLOR; } - else - if (r < 0) + else if (r < 0) { r = 0; } - mV[0] = r; + mV[VRED] = r; - S32 g = ll_round(color.mV[1] * color_scale_factor); + S32 g = ll_round(color.mV[VGREEN] * color_scale_factor); if (g > MAX_COLOR) { g = MAX_COLOR; } - else - if (g < 0) + else if (g < 0) { g = 0; } - mV[1] = g; + mV[VGREEN] = g; - S32 b = ll_round(color.mV[2] * color_scale_factor); + S32 b = ll_round(color.mV[VBLUE] * color_scale_factor); if (b > MAX_COLOR) { b = MAX_COLOR; @@ -555,31 +470,29 @@ void LLColor4U::setVecScaleClamp(const LLColor3& color) { b = 0; } - mV[2] = b; + mV[VBLUE] = b; - mV[3] = 255; + mV[VALPHA] = 255; } inline U32 LLColor4U::asRGBA() const { // Little endian: values are swapped in memory. The original code access the array like a U32, so we need to swap here - return (mV[3] << 24) | (mV[2] << 16) | (mV[1] << 8) | mV[0]; + return (mV[VALPHA] << 24) | (mV[VBLUE] << 16) | (mV[VGREEN] << 8) | mV[VRED]; } -inline void LLColor4U::fromRGBA( U32 aVal ) +inline void LLColor4U::fromRGBA(U32 aVal) { // Little endian: values are swapped in memory. The original code access the array like a U32, so we need to swap here - mV[ 0 ] = aVal & 0xFF; + mV[VRED] = aVal & 0xFF; aVal >>= 8; - mV[ 1 ] = aVal & 0xFF; + mV[VGREEN] = aVal & 0xFF; aVal >>= 8; - mV[ 2 ] = aVal & 0xFF; + mV[VBLUE] = aVal & 0xFF; aVal >>= 8; - mV[ 3 ] = aVal & 0xFF; + mV[VALPHA] = aVal & 0xFF; } - #endif - diff --git a/indra/llmath/v4math.cpp b/indra/llmath/v4math.cpp index 0aa6eb09c3..cd475380d6 100644 --- a/indra/llmath/v4math.cpp +++ b/indra/llmath/v4math.cpp @@ -26,7 +26,6 @@ #include "linden_common.h" -//#include "vmath.h" #include "v3math.h" #include "v4math.h" #include "m4math.h" @@ -36,13 +35,13 @@ // LLVector4 // Axis-Angle rotations -const LLVector4& LLVector4::rotVec(const LLMatrix4 &mat) +const LLVector4& LLVector4::rotVec(const LLMatrix4& mat) { *this = *this * mat; return *this; } -const LLVector4& LLVector4::rotVec(const LLQuaternion &q) +const LLVector4& LLVector4::rotVec(const LLQuaternion& q) { *this = *this * q; return *this; @@ -64,16 +63,16 @@ bool LLVector4::abs() { bool ret{ false }; - if (mV[0] < 0.f) { mV[0] = -mV[0]; ret = true; } - if (mV[1] < 0.f) { mV[1] = -mV[1]; ret = true; } - if (mV[2] < 0.f) { mV[2] = -mV[2]; ret = true; } - if (mV[3] < 0.f) { mV[3] = -mV[3]; ret = true; } + if (mV[VX] < 0.f) { mV[VX] = -mV[VX]; ret = true; } + if (mV[VY] < 0.f) { mV[VY] = -mV[VY]; ret = true; } + if (mV[VZ] < 0.f) { mV[VZ] = -mV[VZ]; ret = true; } + if (mV[VW] < 0.f) { mV[VW] = -mV[VW]; ret = true; } return ret; } -std::ostream& operator<<(std::ostream& s, const LLVector4 &a) +std::ostream& operator<<(std::ostream& s, const LLVector4& a) { s << "{ " << a.mV[VX] << ", " << a.mV[VY] << ", " << a.mV[VZ] << ", " << a.mV[VW] << " }"; return s; @@ -108,12 +107,12 @@ bool are_parallel(const LLVector4 &a, const LLVector4 &b, F32 epsilon) } -LLVector3 vec4to3(const LLVector4 &vec) +LLVector3 vec4to3(const LLVector4& vec) { return LLVector3( vec.mV[VX], vec.mV[VY], vec.mV[VZ] ); } -LLVector4 vec3to4(const LLVector3 &vec) +LLVector4 vec3to4(const LLVector3& vec) { return LLVector4(vec.mV[VX], vec.mV[VY], vec.mV[VZ]); } diff --git a/indra/llmath/v4math.h b/indra/llmath/v4math.h index a4c9668fdd..37492e7f98 100644 --- a/indra/llmath/v4math.h +++ b/indra/llmath/v4math.h @@ -42,108 +42,108 @@ class LLQuaternion; // LLVector4 = |x y z w| -static const U32 LENGTHOFVECTOR4 = 4; +static constexpr U32 LENGTHOFVECTOR4 = 4; class LLVector4 { - public: - F32 mV[LENGTHOFVECTOR4]; - LLVector4(); // Initializes LLVector4 to (0, 0, 0, 1) - explicit LLVector4(const F32 *vec); // Initializes LLVector4 to (vec[0]. vec[1], vec[2], vec[3]) - explicit LLVector4(const F64 *vec); // Initialized LLVector4 to ((F32) vec[0], (F32) vec[1], (F32) vec[3], (F32) vec[4]); - explicit LLVector4(const LLVector2 &vec); - explicit LLVector4(const LLVector2 &vec, F32 z, F32 w); - explicit LLVector4(const LLVector3 &vec); // Initializes LLVector4 to (vec, 1) - explicit LLVector4(const LLVector3 &vec, F32 w); // Initializes LLVector4 to (vec, w) - explicit LLVector4(const LLSD &sd); - LLVector4(F32 x, F32 y, F32 z); // Initializes LLVector4 to (x. y, z, 1) - LLVector4(F32 x, F32 y, F32 z, F32 w); - - LLSD getValue() const - { - LLSD ret; - ret[0] = mV[0]; - ret[1] = mV[1]; - ret[2] = mV[2]; - ret[3] = mV[3]; - return ret; - } - - void setValue(const LLSD& sd) - { - mV[0] = (F32)sd[0].asReal(); - mV[1] = (F32)sd[1].asReal(); - mV[2] = (F32)sd[2].asReal(); - mV[3] = (F32)sd[3].asReal(); - } - - // GLM interop - explicit LLVector4(const glm::vec3& vec); // Initializes LLVector4 to (vec, 1) - explicit LLVector4(const glm::vec4& vec); // Initializes LLVector4 to vec - explicit operator glm::vec3() const; // Initializes glm::vec3 to (vec[0]. vec[1], vec[2]) - explicit operator glm::vec4() const; // Initializes glm::vec4 to (vec[0]. vec[1], vec[2], vec[3]) - - inline bool isFinite() const; // checks to see if all values of LLVector3 are finite - - inline void clear(); // Clears LLVector4 to (0, 0, 0, 1) - inline void clearVec(); // deprecated - inline void zeroVec(); // deprecated - - inline void set(F32 x, F32 y, F32 z); // Sets LLVector4 to (x, y, z, 1) - inline void set(F32 x, F32 y, F32 z, F32 w); // Sets LLVector4 to (x, y, z, w) - inline void set(const LLVector4 &vec); // Sets LLVector4 to vec - inline void set(const LLVector3 &vec, F32 w = 1.f); // Sets LLVector4 to LLVector3 vec - inline void set(const F32 *vec); // Sets LLVector4 to vec - inline void set(const glm::vec4& vec); // Sets LLVector4 to vec - inline void set(const glm::vec3& vec, F32 w = 1.f); // Sets LLVector4 to LLVector3 vec with w defaulted to 1 - - inline void setVec(F32 x, F32 y, F32 z); // deprecated - inline void setVec(F32 x, F32 y, F32 z, F32 w); // deprecated - inline void setVec(const LLVector4 &vec); // deprecated - inline void setVec(const LLVector3 &vec, F32 w = 1.f); // deprecated - inline void setVec(const F32 *vec); // deprecated - - F32 length() const; // Returns magnitude of LLVector4 - F32 lengthSquared() const; // Returns magnitude squared of LLVector4 - F32 normalize(); // Normalizes and returns the magnitude of LLVector4 - - F32 magVec() const; // deprecated - F32 magVecSquared() const; // deprecated - F32 normVec(); // deprecated - - // Sets all values to absolute value of their original values - // Returns true if data changed - bool abs(); - - bool isExactlyClear() const { return (mV[VW] == 1.0f) && !mV[VX] && !mV[VY] && !mV[VZ]; } - bool isExactlyZero() const { return !mV[VW] && !mV[VX] && !mV[VY] && !mV[VZ]; } - - const LLVector4& rotVec(const LLMatrix4 &mat); // Rotates by MAT4 mat - const LLVector4& rotVec(const LLQuaternion &q); // Rotates by QUAT q - - const LLVector4& scaleVec(const LLVector4& vec); // Scales component-wise by vec - - F32 operator[](int idx) const { return mV[idx]; } - F32 &operator[](int idx) { return mV[idx]; } - - friend std::ostream& operator<<(std::ostream& s, const LLVector4 &a); // Print a - friend LLVector4 operator+(const LLVector4 &a, const LLVector4 &b); // Return vector a + b - friend LLVector4 operator-(const LLVector4 &a, const LLVector4 &b); // Return vector a minus b - friend F32 operator*(const LLVector4 &a, const LLVector4 &b); // Return a dot b - friend LLVector4 operator%(const LLVector4 &a, const LLVector4 &b); // Return a cross b - friend LLVector4 operator/(const LLVector4 &a, F32 k); // Return a divided by scaler k - friend LLVector4 operator*(const LLVector4 &a, F32 k); // Return a times scaler k - friend LLVector4 operator*(F32 k, const LLVector4 &a); // Return a times scaler k - friend bool operator==(const LLVector4 &a, const LLVector4 &b); // Return a == b - friend bool operator!=(const LLVector4 &a, const LLVector4 &b); // Return a != b - - friend const LLVector4& operator+=(LLVector4 &a, const LLVector4 &b); // Return vector a + b - friend const LLVector4& operator-=(LLVector4 &a, const LLVector4 &b); // Return vector a minus b - friend const LLVector4& operator%=(LLVector4 &a, const LLVector4 &b); // Return a cross b - friend const LLVector4& operator*=(LLVector4 &a, F32 k); // Return a times scaler k - friend const LLVector4& operator/=(LLVector4 &a, F32 k); // Return a divided by scaler k - - friend LLVector4 operator-(const LLVector4 &a); // Return vector -a +public: + F32 mV[LENGTHOFVECTOR4]; + LLVector4(); // Initializes LLVector4 to (0, 0, 0, 1) + explicit LLVector4(const F32 *vec); // Initializes LLVector4 to (vec[0]. vec[1], vec[2], vec[3]) + explicit LLVector4(const F64 *vec); // Initialized LLVector4 to ((F32) vec[0], (F32) vec[1], (F32) vec[3], (F32) vec[4]); + explicit LLVector4(const LLVector2 &vec); + explicit LLVector4(const LLVector2 &vec, F32 z, F32 w); + explicit LLVector4(const LLVector3 &vec); // Initializes LLVector4 to (vec, 1) + explicit LLVector4(const LLVector3 &vec, F32 w); // Initializes LLVector4 to (vec, w) + explicit LLVector4(const LLSD &sd); + LLVector4(F32 x, F32 y, F32 z); // Initializes LLVector4 to (x. y, z, 1) + LLVector4(F32 x, F32 y, F32 z, F32 w); + + LLSD getValue() const + { + LLSD ret; + ret[VX] = mV[VX]; + ret[VY] = mV[VY]; + ret[VZ] = mV[VZ]; + ret[VW] = mV[VW]; + return ret; + } + + void setValue(const LLSD& sd) + { + mV[VX] = (F32)sd[VX].asReal(); + mV[VY] = (F32)sd[VY].asReal(); + mV[VZ] = (F32)sd[VZ].asReal(); + mV[VW] = (F32)sd[VW].asReal(); + } + + // GLM interop + explicit LLVector4(const glm::vec3& vec); // Initializes LLVector4 to (vec, 1) + explicit LLVector4(const glm::vec4& vec); // Initializes LLVector4 to vec + explicit operator glm::vec3() const; // Initializes glm::vec3 to (vec[0]. vec[1], vec[2]) + explicit operator glm::vec4() const; // Initializes glm::vec4 to (vec[0]. vec[1], vec[2], vec[3]) + + inline bool isFinite() const; // checks to see if all values of LLVector3 are finite + + inline void clear(); // Clears LLVector4 to (0, 0, 0, 1) + inline void clearVec(); // deprecated + inline void zeroVec(); // deprecated + + inline void set(F32 x, F32 y, F32 z); // Sets LLVector4 to (x, y, z, 1) + inline void set(F32 x, F32 y, F32 z, F32 w); // Sets LLVector4 to (x, y, z, w) + inline void set(const LLVector4 &vec); // Sets LLVector4 to vec + inline void set(const LLVector3 &vec, F32 w = 1.f); // Sets LLVector4 to LLVector3 vec + inline void set(const F32 *vec); // Sets LLVector4 to vec + inline void set(const glm::vec4& vec); // Sets LLVector4 to vec + inline void set(const glm::vec3& vec, F32 w = 1.f); // Sets LLVector4 to LLVector3 vec with w defaulted to 1 + + inline void setVec(F32 x, F32 y, F32 z); // deprecated + inline void setVec(F32 x, F32 y, F32 z, F32 w); // deprecated + inline void setVec(const LLVector4 &vec); // deprecated + inline void setVec(const LLVector3 &vec, F32 w = 1.f); // deprecated + inline void setVec(const F32 *vec); // deprecated + + F32 length() const; // Returns magnitude of LLVector4 + F32 lengthSquared() const; // Returns magnitude squared of LLVector4 + F32 normalize(); // Normalizes and returns the magnitude of LLVector4 + + F32 magVec() const; // deprecated + F32 magVecSquared() const; // deprecated + F32 normVec(); // deprecated + + // Sets all values to absolute value of their original values + // Returns true if data changed + bool abs(); + + bool isExactlyClear() const { return (mV[VW] == 1.0f) && !mV[VX] && !mV[VY] && !mV[VZ]; } + bool isExactlyZero() const { return !mV[VW] && !mV[VX] && !mV[VY] && !mV[VZ]; } + + const LLVector4& rotVec(const LLMatrix4 &mat); // Rotates by MAT4 mat + const LLVector4& rotVec(const LLQuaternion &q); // Rotates by QUAT q + + const LLVector4& scaleVec(const LLVector4& vec); // Scales component-wise by vec + + F32 operator[](int idx) const { return mV[idx]; } + F32 &operator[](int idx) { return mV[idx]; } + + friend std::ostream& operator<<(std::ostream& s, const LLVector4 &a); // Print a + friend LLVector4 operator+(const LLVector4 &a, const LLVector4 &b); // Return vector a + b + friend LLVector4 operator-(const LLVector4 &a, const LLVector4 &b); // Return vector a minus b + friend F32 operator*(const LLVector4 &a, const LLVector4 &b); // Return a dot b + friend LLVector4 operator%(const LLVector4 &a, const LLVector4 &b); // Return a cross b + friend LLVector4 operator/(const LLVector4 &a, F32 k); // Return a divided by scaler k + friend LLVector4 operator*(const LLVector4 &a, F32 k); // Return a times scaler k + friend LLVector4 operator*(F32 k, const LLVector4 &a); // Return a times scaler k + friend bool operator==(const LLVector4 &a, const LLVector4 &b); // Return a == b + friend bool operator!=(const LLVector4 &a, const LLVector4 &b); // Return a != b + + friend const LLVector4& operator+=(LLVector4 &a, const LLVector4 &b); // Return vector a + b + friend const LLVector4& operator-=(LLVector4 &a, const LLVector4 &b); // Return vector a minus b + friend const LLVector4& operator%=(LLVector4 &a, const LLVector4 &b); // Return a cross b + friend const LLVector4& operator*=(LLVector4 &a, F32 k); // Return a times scaler k + friend const LLVector4& operator/=(LLVector4 &a, F32 k); // Return a divided by scaler k + + friend LLVector4 operator-(const LLVector4 &a); // Return vector -a }; // Non-member functions @@ -257,7 +257,7 @@ inline bool LLVector4::isFinite() const // Clear and Assignment Functions -inline void LLVector4::clear(void) +inline void LLVector4::clear() { mV[VX] = 0.f; mV[VY] = 0.f; @@ -266,7 +266,7 @@ inline void LLVector4::clear(void) } // deprecated -inline void LLVector4::clearVec(void) +inline void LLVector4::clearVec() { mV[VX] = 0.f; mV[VY] = 0.f; @@ -275,7 +275,7 @@ inline void LLVector4::clearVec(void) } // deprecated -inline void LLVector4::zeroVec(void) +inline void LLVector4::zeroVec() { mV[VX] = 0.f; mV[VY] = 0.f; @@ -299,7 +299,7 @@ inline void LLVector4::set(F32 x, F32 y, F32 z, F32 w) mV[VW] = w; } -inline void LLVector4::set(const LLVector4 &vec) +inline void LLVector4::set(const LLVector4& vec) { mV[VX] = vec.mV[VX]; mV[VY] = vec.mV[VY]; @@ -307,7 +307,7 @@ inline void LLVector4::set(const LLVector4 &vec) mV[VW] = vec.mV[VW]; } -inline void LLVector4::set(const LLVector3 &vec, F32 w) +inline void LLVector4::set(const LLVector3& vec, F32 w) { mV[VX] = vec.mV[VX]; mV[VY] = vec.mV[VY]; @@ -315,7 +315,7 @@ inline void LLVector4::set(const LLVector3 &vec, F32 w) mV[VW] = w; } -inline void LLVector4::set(const F32 *vec) +inline void LLVector4::set(const F32* vec) { mV[VX] = vec[VX]; mV[VY] = vec[VY]; @@ -358,7 +358,7 @@ inline void LLVector4::setVec(F32 x, F32 y, F32 z, F32 w) } // deprecated -inline void LLVector4::setVec(const LLVector4 &vec) +inline void LLVector4::setVec(const LLVector4& vec) { mV[VX] = vec.mV[VX]; mV[VY] = vec.mV[VY]; @@ -367,7 +367,7 @@ inline void LLVector4::setVec(const LLVector4 &vec) } // deprecated -inline void LLVector4::setVec(const LLVector3 &vec, F32 w) +inline void LLVector4::setVec(const LLVector3& vec, F32 w) { mV[VX] = vec.mV[VX]; mV[VY] = vec.mV[VY]; @@ -376,7 +376,7 @@ inline void LLVector4::setVec(const LLVector3 &vec, F32 w) } // deprecated -inline void LLVector4::setVec(const F32 *vec) +inline void LLVector4::setVec(const F32* vec) { mV[VX] = vec[VX]; mV[VY] = vec[VY]; @@ -386,75 +386,75 @@ inline void LLVector4::setVec(const F32 *vec) // LLVector4 Magnitude and Normalization Functions -inline F32 LLVector4::length(void) const +inline F32 LLVector4::length() const { - return (F32) sqrt(mV[VX]*mV[VX] + mV[VY]*mV[VY] + mV[VZ]*mV[VZ]); + return sqrt(mV[VX]*mV[VX] + mV[VY]*mV[VY] + mV[VZ]*mV[VZ]); } -inline F32 LLVector4::lengthSquared(void) const +inline F32 LLVector4::lengthSquared() const { return mV[VX]*mV[VX] + mV[VY]*mV[VY] + mV[VZ]*mV[VZ]; } -inline F32 LLVector4::magVec(void) const +inline F32 LLVector4::magVec() const { - return (F32) sqrt(mV[VX]*mV[VX] + mV[VY]*mV[VY] + mV[VZ]*mV[VZ]); + return sqrt(mV[VX]*mV[VX] + mV[VY]*mV[VY] + mV[VZ]*mV[VZ]); } -inline F32 LLVector4::magVecSquared(void) const +inline F32 LLVector4::magVecSquared() const { return mV[VX]*mV[VX] + mV[VY]*mV[VY] + mV[VZ]*mV[VZ]; } // LLVector4 Operators -inline LLVector4 operator+(const LLVector4 &a, const LLVector4 &b) +inline LLVector4 operator+(const LLVector4& a, const LLVector4& b) { LLVector4 c(a); return c += b; } -inline LLVector4 operator-(const LLVector4 &a, const LLVector4 &b) +inline LLVector4 operator-(const LLVector4& a, const LLVector4& b) { LLVector4 c(a); return c -= b; } -inline F32 operator*(const LLVector4 &a, const LLVector4 &b) +inline F32 operator*(const LLVector4& a, const LLVector4& b) { return (a.mV[VX]*b.mV[VX] + a.mV[VY]*b.mV[VY] + a.mV[VZ]*b.mV[VZ]); } -inline LLVector4 operator%(const LLVector4 &a, const LLVector4 &b) +inline LLVector4 operator%(const LLVector4& a, const LLVector4& b) { return LLVector4(a.mV[VY]*b.mV[VZ] - b.mV[VY]*a.mV[VZ], a.mV[VZ]*b.mV[VX] - b.mV[VZ]*a.mV[VX], a.mV[VX]*b.mV[VY] - b.mV[VX]*a.mV[VY]); } -inline LLVector4 operator/(const LLVector4 &a, F32 k) +inline LLVector4 operator/(const LLVector4& a, F32 k) { F32 t = 1.f / k; return LLVector4( a.mV[VX] * t, a.mV[VY] * t, a.mV[VZ] * t ); } -inline LLVector4 operator*(const LLVector4 &a, F32 k) +inline LLVector4 operator*(const LLVector4& a, F32 k) { return LLVector4( a.mV[VX] * k, a.mV[VY] * k, a.mV[VZ] * k ); } -inline LLVector4 operator*(F32 k, const LLVector4 &a) +inline LLVector4 operator*(F32 k, const LLVector4& a) { return LLVector4( a.mV[VX] * k, a.mV[VY] * k, a.mV[VZ] * k ); } -inline bool operator==(const LLVector4 &a, const LLVector4 &b) +inline bool operator==(const LLVector4& a, const LLVector4& b) { return ( (a.mV[VX] == b.mV[VX]) &&(a.mV[VY] == b.mV[VY]) &&(a.mV[VZ] == b.mV[VZ])); } -inline bool operator!=(const LLVector4 &a, const LLVector4 &b) +inline bool operator!=(const LLVector4& a, const LLVector4& b) { return ( (a.mV[VX] != b.mV[VX]) ||(a.mV[VY] != b.mV[VY]) @@ -462,7 +462,7 @@ inline bool operator!=(const LLVector4 &a, const LLVector4 &b) ||(a.mV[VW] != b.mV[VW]) ); } -inline const LLVector4& operator+=(LLVector4 &a, const LLVector4 &b) +inline const LLVector4& operator+=(LLVector4& a, const LLVector4& b) { a.mV[VX] += b.mV[VX]; a.mV[VY] += b.mV[VY]; @@ -470,7 +470,7 @@ inline const LLVector4& operator+=(LLVector4 &a, const LLVector4 &b) return a; } -inline const LLVector4& operator-=(LLVector4 &a, const LLVector4 &b) +inline const LLVector4& operator-=(LLVector4& a, const LLVector4& b) { a.mV[VX] -= b.mV[VX]; a.mV[VY] -= b.mV[VY]; @@ -478,14 +478,14 @@ inline const LLVector4& operator-=(LLVector4 &a, const LLVector4 &b) return a; } -inline const LLVector4& operator%=(LLVector4 &a, const LLVector4 &b) +inline const LLVector4& operator%=(LLVector4& a, const LLVector4& b) { LLVector4 ret(a.mV[VY]*b.mV[VZ] - b.mV[VY]*a.mV[VZ], a.mV[VZ]*b.mV[VX] - b.mV[VZ]*a.mV[VX], a.mV[VX]*b.mV[VY] - b.mV[VX]*a.mV[VY]); a = ret; return a; } -inline const LLVector4& operator*=(LLVector4 &a, F32 k) +inline const LLVector4& operator*=(LLVector4& a, F32 k) { a.mV[VX] *= k; a.mV[VY] *= k; @@ -493,7 +493,7 @@ inline const LLVector4& operator*=(LLVector4 &a, F32 k) return a; } -inline const LLVector4& operator/=(LLVector4 &a, F32 k) +inline const LLVector4& operator/=(LLVector4& a, F32 k) { F32 t = 1.f / k; a.mV[VX] *= t; @@ -502,7 +502,7 @@ inline const LLVector4& operator/=(LLVector4 &a, F32 k) return a; } -inline LLVector4 operator-(const LLVector4 &a) +inline LLVector4 operator-(const LLVector4& a) { return LLVector4( -a.mV[VX], -a.mV[VY], -a.mV[VZ] ); } @@ -517,19 +517,19 @@ inline LLVector4::operator glm::vec4() const return glm::make_vec4(mV); } -inline F32 dist_vec(const LLVector4 &a, const LLVector4 &b) +inline F32 dist_vec(const LLVector4& a, const LLVector4& b) { LLVector4 vec = a - b; return (vec.length()); } -inline F32 dist_vec_squared(const LLVector4 &a, const LLVector4 &b) +inline F32 dist_vec_squared(const LLVector4& a, const LLVector4& b) { LLVector4 vec = a - b; return (vec.lengthSquared()); } -inline LLVector4 lerp(const LLVector4 &a, const LLVector4 &b, F32 u) +inline LLVector4 lerp(const LLVector4& a, const LLVector4& b, F32 u) { return LLVector4( a.mV[VX] + (b.mV[VX] - a.mV[VX]) * u, @@ -538,9 +538,9 @@ inline LLVector4 lerp(const LLVector4 &a, const LLVector4 &b, F32 u) a.mV[VW] + (b.mV[VW] - a.mV[VW]) * u); } -inline F32 LLVector4::normalize(void) +inline F32 LLVector4::normalize() { - F32 mag = (F32) sqrt(mV[VX]*mV[VX] + mV[VY]*mV[VY] + mV[VZ]*mV[VZ]); + F32 mag = sqrt(mV[VX]*mV[VX] + mV[VY]*mV[VY] + mV[VZ]*mV[VZ]); F32 oomag; if (mag > FP_MAG_THRESHOLD) @@ -552,18 +552,18 @@ inline F32 LLVector4::normalize(void) } else { - mV[0] = 0.f; - mV[1] = 0.f; - mV[2] = 0.f; - mag = 0; + mV[VX] = 0.f; + mV[VY] = 0.f; + mV[VZ] = 0.f; + mag = 0.f; } return (mag); } // deprecated -inline F32 LLVector4::normVec(void) +inline F32 LLVector4::normVec() { - F32 mag = (F32) sqrt(mV[VX]*mV[VX] + mV[VY]*mV[VY] + mV[VZ]*mV[VZ]); + F32 mag = sqrt(mV[VX]*mV[VX] + mV[VY]*mV[VY] + mV[VZ]*mV[VZ]); F32 oomag; if (mag > FP_MAG_THRESHOLD) @@ -575,22 +575,23 @@ inline F32 LLVector4::normVec(void) } else { - mV[0] = 0.f; - mV[1] = 0.f; - mV[2] = 0.f; - mag = 0; + mV[VX] = 0.f; + mV[VY] = 0.f; + mV[VZ] = 0.f; + mag = 0.f; } return (mag); } // Because apparently some parts of the viewer use this for color info. -inline const LLVector4 srgbVector4(const LLVector4 &a) { +inline const LLVector4 srgbVector4(const LLVector4& a) +{ LLVector4 srgbColor; - srgbColor.mV[0] = linearTosRGB(a.mV[0]); - srgbColor.mV[1] = linearTosRGB(a.mV[1]); - srgbColor.mV[2] = linearTosRGB(a.mV[2]); - srgbColor.mV[3] = a.mV[3]; + srgbColor.mV[VX] = linearTosRGB(a.mV[VX]); + srgbColor.mV[VY] = linearTosRGB(a.mV[VY]); + srgbColor.mV[VZ] = linearTosRGB(a.mV[VZ]); + srgbColor.mV[VW] = a.mV[VW]; return srgbColor; } diff --git a/indra/llmath/xform.h b/indra/llmath/xform.h index 7434301670..fa45fffeae 100644 --- a/indra/llmath/xform.h +++ b/indra/llmath/xform.h @@ -115,7 +115,7 @@ public: void clearChanged(U32 bits) { mChanged &= ~bits; } void setScaleChildOffset(bool scale) { mScaleChildOffset = scale; } - bool getScaleChildOffset() { return mScaleChildOffset; } + bool getScaleChildOffset() const { return mScaleChildOffset; } LLXform* getParent() const { return mParent; } LLXform* getRoot() const; 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/llmessage/message_prehash.cpp b/indra/llmessage/message_prehash.cpp index c264a9f086..21dbf35783 100644 --- a/indra/llmessage/message_prehash.cpp +++ b/indra/llmessage/message_prehash.cpp @@ -1402,3 +1402,4 @@ char const* const _PREHASH_HoverHeight = LLMessageStringTable::getInstance()->ge char const* const _PREHASH_Experience = LLMessageStringTable::getInstance()->getString("Experience"); char const* const _PREHASH_ExperienceID = LLMessageStringTable::getInstance()->getString("ExperienceID"); char const* const _PREHASH_LargeGenericMessage = LLMessageStringTable::getInstance()->getString("LargeGenericMessage"); +char const* const _PREHASH_MetaData = LLMessageStringTable::getInstance()->getString("MetaData"); diff --git a/indra/llmessage/message_prehash.h b/indra/llmessage/message_prehash.h index 1d30b69b67..8a2ad1587c 100644 --- a/indra/llmessage/message_prehash.h +++ b/indra/llmessage/message_prehash.h @@ -1403,5 +1403,6 @@ extern char const* const _PREHASH_HoverHeight; extern char const* const _PREHASH_Experience; extern char const* const _PREHASH_ExperienceID; extern char const* const _PREHASH_LargeGenericMessage; +extern char const* const _PREHASH_MetaData; #endif diff --git a/indra/llprimitive/object_flags.h b/indra/llprimitive/object_flags.h index e2cdba072a..06e216ba49 100644 --- a/indra/llprimitive/object_flags.h +++ b/indra/llprimitive/object_flags.h @@ -57,16 +57,16 @@ const U32 FLAGS_CAMERA_SOURCE = (1U << 22); //const U32 FLAGS_UNUSED_001 = (1U << 23); // was FLAGS_CAST_SHADOWS -//const U32 FLAGS_UNUSED_002 = (1U << 24); -//const U32 FLAGS_UNUSED_003 = (1U << 25); -//const U32 FLAGS_UNUSED_004 = (1U << 26); -//const U32 FLAGS_UNUSED_005 = (1U << 27); +const U32 FLAGS_SERVER_AUTOPILOT = (1U << 24); // Update was for an agent AND that agent is being autopiloted from the server +//const U32 FLAGS_UNUSED_002 = (1U << 25); +//const U32 FLAGS_UNUSED_003 = (1U << 26); +//const U32 FLAGS_UNUSED_004 = (1U << 27); const U32 FLAGS_OBJECT_OWNER_MODIFY = (1U << 28); const U32 FLAGS_TEMPORARY_ON_REZ = (1U << 29); -//const U32 FLAGS_UNUSED_006 = (1U << 30); // was FLAGS_TEMPORARY -//const U32 FLAGS_UNUSED_007 = (1U << 31); // was FLAGS_ZLIB_COMPRESSED +//const U32 FLAGS_UNUSED_005 = (1U << 30); // was FLAGS_TEMPORARY +//const U32 FLAGS_UNUSED_006 = (1U << 31); // was FLAGS_ZLIB_COMPRESSED const U32 FLAGS_LOCAL = FLAGS_ANIM_SOURCE | FLAGS_CAMERA_SOURCE; const U32 FLAGS_WORLD = FLAGS_USE_PHYSICS | FLAGS_PHANTOM | FLAGS_TEMPORARY_ON_REZ; 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/llaccordionctrltab.h b/indra/llui/llaccordionctrltab.h index cf3569683e..3fdcf9f7f2 100644 --- a/indra/llui/llaccordionctrltab.h +++ b/indra/llui/llaccordionctrltab.h @@ -126,7 +126,7 @@ public: void setSelected(bool is_selected); - bool getCollapsible() { return mCollapsible; }; + bool getCollapsible() const { return mCollapsible; }; void setCollapsible(bool collapsible) { mCollapsible = collapsible; }; void changeOpenClose(bool is_open); @@ -181,7 +181,7 @@ public: void setHeaderVisible(bool value); - bool getHeaderVisible() { return mHeaderVisible;} + bool getHeaderVisible() const { return mHeaderVisible;} S32 mExpandedHeight; // Height of expanded ctrl. // Used to restore height after expand. diff --git a/indra/llui/llchatentry.cpp b/indra/llui/llchatentry.cpp index da5afd0386..7506cd99c0 100644 --- a/indra/llui/llchatentry.cpp +++ b/indra/llui/llchatentry.cpp @@ -45,12 +45,14 @@ LLChatEntry::LLChatEntry(const Params& p) mExpandLinesCount(p.expand_lines_count), mPrevLinesCount(0), mSingleLineMode(false), - mPrevExpandedLineCount(S32_MAX) + mPrevExpandedLineCount(S32_MAX), + mCurrentInput("") { // Initialize current history line iterator mCurrentHistoryLine = mLineHistory.begin(); mAutoIndent = false; + mShowChatMentionPicker = true; keepSelectionOnReturn(true); } @@ -189,6 +191,7 @@ bool LLChatEntry::handleSpecialKey(const KEY key, const MASK mask) { needsReflow(); } + mCurrentInput = ""; break; case KEY_UP: @@ -196,6 +199,11 @@ bool LLChatEntry::handleSpecialKey(const KEY key, const MASK mask) { if (!mLineHistory.empty() && mCurrentHistoryLine > mLineHistory.begin()) { + if (mCurrentHistoryLine == mLineHistory.end()) + { + mCurrentInput = getText(); + } + setText(*(--mCurrentHistoryLine)); endOfDoc(); } @@ -210,16 +218,15 @@ bool LLChatEntry::handleSpecialKey(const KEY key, const MASK mask) case KEY_DOWN: if (mHasHistory && MASK_CONTROL == mask) { - if (!mLineHistory.empty() && mCurrentHistoryLine < (mLineHistory.end() - 1) ) + if (!mLineHistory.empty() && mCurrentHistoryLine < (mLineHistory.end() - 1)) { setText(*(++mCurrentHistoryLine)); endOfDoc(); } - else if (!mLineHistory.empty() && mCurrentHistoryLine == (mLineHistory.end() - 1) ) + else if (!mLineHistory.empty() && mCurrentHistoryLine == (mLineHistory.end() - 1)) { mCurrentHistoryLine++; - std::string empty(""); - setText(empty); + setText(mCurrentInput); needsReflow(); endOfDoc(); } diff --git a/indra/llui/llchatentry.h b/indra/llui/llchatentry.h index 5621ede1e7..9a0e8ee91e 100644 --- a/indra/llui/llchatentry.h +++ b/indra/llui/llchatentry.h @@ -101,6 +101,8 @@ private: S32 mExpandLinesCount; S32 mPrevLinesCount; S32 mPrevExpandedLineCount; + + std::string mCurrentInput; }; #endif /* LLCHATENTRY_H_ */ 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/llcheckboxctrl.h b/indra/llui/llcheckboxctrl.h index 135f128692..4068741978 100644 --- a/indra/llui/llcheckboxctrl.h +++ b/indra/llui/llcheckboxctrl.h @@ -36,8 +36,8 @@ // Constants // -const bool RADIO_STYLE = true; -const bool CHECK_STYLE = false; +constexpr bool RADIO_STYLE = true; +constexpr bool CHECK_STYLE = false; // // Classes @@ -94,7 +94,7 @@ public: // LLUICtrl interface virtual void setValue(const LLSD& value ); virtual LLSD getValue() const; - bool get() { return (bool)getValue().asBoolean(); } + bool get() const { return (bool)getValue().asBoolean(); } void set(bool value) { setValue(value); } virtual void setTentative(bool b); @@ -106,7 +106,7 @@ public: virtual void onCommit(); // LLCheckBoxCtrl interface - virtual bool toggle() { return mButton->toggleState(); } // returns new state + virtual bool toggle() { return mButton->toggleState(); } // returns new state void setBtnFocus() { mButton->setFocus(true); } diff --git a/indra/llui/llcontainerview.h b/indra/llui/llcontainerview.h index c6dd401e85..2675d21c22 100644 --- a/indra/llui/llcontainerview.h +++ b/indra/llui/llcontainerview.h @@ -65,21 +65,21 @@ protected: public: ~LLContainerView(); - /*virtual*/ bool postBuild(); - /*virtual*/ bool addChild(LLView* view, S32 tab_group = 0); + bool postBuild() override; + bool addChild(LLView* view, S32 tab_group = 0) override; - /*virtual*/ bool handleDoubleClick(S32 x, S32 y, MASK mask); - /*virtual*/ bool handleMouseDown(S32 x, S32 y, MASK mask); - /*virtual*/ bool handleMouseUp(S32 x, S32 y, MASK mask); + bool handleDoubleClick(S32 x, S32 y, MASK mask) override; + bool handleMouseDown(S32 x, S32 y, MASK mask) override; + bool handleMouseUp(S32 x, S32 y, MASK mask) override; - /*virtual*/ void draw(); - /*virtual*/ void reshape(S32 width, S32 height, bool called_from_parent = true); - /*virtual*/ LLRect getRequiredRect(); // Return the height of this object, given the set options. + void draw() override; + void reshape(S32 width, S32 height, bool called_from_parent = true) override; + LLRect getRequiredRect() override; // Return the height of this object, given the set options. void setLabel(const std::string& label); void showLabel(bool show) { mShowLabel = show; } void setDisplayChildren(bool displayChildren); - bool getDisplayChildren() { return mDisplayChildren; } + bool getDisplayChildren() const { return mDisplayChildren; } void setScrollContainer(LLScrollContainer* scroll) {mScrollContainer = scroll;} private: diff --git a/indra/llui/lldockablefloater.h b/indra/llui/lldockablefloater.h index 3effc977db..9c516e23a4 100644 --- a/indra/llui/lldockablefloater.h +++ b/indra/llui/lldockablefloater.h @@ -112,8 +112,8 @@ public: virtual bool overlapsScreenChannel() { return mOverlapsScreenChannel && getVisible() && isDocked(); } virtual void setOverlapsScreenChannel(bool overlaps) { mOverlapsScreenChannel = overlaps; } - bool getUniqueDocking() { return mUniqueDocking; } - bool getUseTongue() { return mUseTongue; } + bool getUniqueDocking() const { return mUniqueDocking; } + bool getUseTongue() const { return mUseTongue; } void setUseTongue(bool use_tongue) { mUseTongue = use_tongue;} private: diff --git a/indra/llui/lldockcontrol.cpp b/indra/llui/lldockcontrol.cpp index 11dbad8c09..1a00c03856 100644 --- a/indra/llui/lldockcontrol.cpp +++ b/indra/llui/lldockcontrol.cpp @@ -156,7 +156,7 @@ void LLDockControl::repositionDockable() } } -bool LLDockControl::isDockVisible() +bool LLDockControl::isDockVisible() const { bool res = true; diff --git a/indra/llui/lldockcontrol.h b/indra/llui/lldockcontrol.h index 7e31330713..b6ac9c19dd 100644 --- a/indra/llui/lldockcontrol.h +++ b/indra/llui/lldockcontrol.h @@ -61,19 +61,19 @@ public: void off(); void forceRecalculatePosition(); void setDock(LLView* dockWidget); - LLView* getDock() + LLView* getDock() const { return mDockWidgetHandle.get(); } void repositionDockable(); void drawToungue(); - bool isDockVisible(); + bool isDockVisible() const; // gets a rect that bounds possible positions for a dockable control (EXT-1111) void getAllowedRect(LLRect& rect); - S32 getTongueWidth() { return mDockTongue->getWidth(); } - S32 getTongueHeight() { return mDockTongue->getHeight(); } + S32 getTongueWidth() const { return mDockTongue->getWidth(); } + S32 getTongueHeight() const { return mDockTongue->getHeight(); } private: virtual void moveDockable(); diff --git a/indra/llui/lldraghandle.h b/indra/llui/lldraghandle.h index a522e63243..73211d5292 100644 --- a/indra/llui/lldraghandle.h +++ b/indra/llui/lldraghandle.h @@ -66,7 +66,7 @@ public: void setMaxTitleWidth(S32 max_width) {mMaxTitleWidth = llmin(max_width, mMaxTitleWidth); } S32 getMaxTitleWidth() const { return mMaxTitleWidth; } void setButtonsRect(const LLRect& rect){ mButtonsRect = rect; } - LLRect getButtonsRect() { return mButtonsRect; } + LLRect getButtonsRect() const { return mButtonsRect; } void setTitleVisible(bool visible); virtual void setTitle( const std::string& title ) = 0; 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/llfiltereditor.h b/indra/llui/llfiltereditor.h index 686827d94c..685219c9f6 100644 --- a/indra/llui/llfiltereditor.h +++ b/indra/llui/llfiltereditor.h @@ -49,7 +49,7 @@ protected: LLFilterEditor(const Params&); friend class LLUICtrlFactory; - /*virtual*/ void handleKeystroke(); + void handleKeystroke() override; }; #endif // LL_FILTEREDITOR_H diff --git a/indra/llui/llflashtimer.cpp b/indra/llui/llflashtimer.cpp index c3db24c987..54f54653e2 100644 --- a/indra/llui/llflashtimer.cpp +++ b/indra/llui/llflashtimer.cpp @@ -85,12 +85,12 @@ void LLFlashTimer::stopFlashing() mCurrentTickCount = 0; } -bool LLFlashTimer::isFlashingInProgress() +bool LLFlashTimer::isFlashingInProgress() const { return mIsFlashingInProgress; } -bool LLFlashTimer::isCurrentlyHighlighted() +bool LLFlashTimer::isCurrentlyHighlighted() const { return mIsCurrentlyHighlighted; } diff --git a/indra/llui/llflashtimer.h b/indra/llui/llflashtimer.h index b55ce53fc0..4ef70faf2d 100644 --- a/indra/llui/llflashtimer.h +++ b/indra/llui/llflashtimer.h @@ -51,8 +51,8 @@ public: void startFlashing(); void stopFlashing(); - bool isFlashingInProgress(); - bool isCurrentlyHighlighted(); + bool isFlashingInProgress() const; + bool isCurrentlyHighlighted() const; /* * Use this instead of deleting this object. * The next call to tick() will return true and that will destroy this object. diff --git a/indra/llui/llflatlistview.cpp b/indra/llui/llflatlistview.cpp index 53f39766c6..8178bada42 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); @@ -1337,7 +1341,7 @@ void LLFlatListViewEx::updateNoItemsMessage(const std::string& filter_string) } } -bool LLFlatListViewEx::getForceShowingUnmatchedItems() +bool LLFlatListViewEx::getForceShowingUnmatchedItems() const { return mForceShowingUnmatchedItems; } diff --git a/indra/llui/llflatlistview.h b/indra/llui/llflatlistview.h index 6d75e9f282..6271231183 100644 --- a/indra/llui/llflatlistview.h +++ b/indra/llui/llflatlistview.h @@ -113,7 +113,7 @@ public: }; // disable traversal when finding widget to hand focus off to - /*virtual*/ bool canFocusChildren() const { return false; } + /*virtual*/ bool canFocusChildren() const override { return false; } /** * Connects callback to signal called when Return key is pressed. @@ -121,15 +121,15 @@ public: boost::signals2::connection setReturnCallback( const commit_signal_t::slot_type& cb ) { return mOnReturnSignal.connect(cb); } /** Overridden LLPanel's reshape, height is ignored, the list sets its height to accommodate all items */ - virtual void reshape(S32 width, S32 height, bool called_from_parent = true); + virtual void reshape(S32 width, S32 height, bool called_from_parent = true) override; /** Returns full rect of child panel */ const LLRect& getItemsRect() const; - LLRect getRequiredRect() { return getItemsRect(); } + LLRect getRequiredRect() override { return getItemsRect(); } /** Returns distance between items */ - const S32 getItemsPad() { return mItemPad; } + const S32 getItemsPad() const { return mItemPad; } /** * Adds and item and LLSD value associated with it to the list at specified position @@ -264,13 +264,13 @@ public: void setCommitOnSelectionChange(bool b) { mCommitOnSelectionChange = b; } /** Get number of selected items in the list */ - U32 numSelected() const {return static_cast<U32>(mSelectedItemPairs.size()); } + U32 numSelected() const { return static_cast<U32>(mSelectedItemPairs.size()); } /** Get number of (visible) items in the list */ U32 size(const bool only_visible_items = true) const; /** Removes all items from the list */ - virtual void clear(); + virtual void clear() override; /** * Removes all items that can be detached from the list but doesn't destroy @@ -294,10 +294,12 @@ public: void scrollToShowFirstSelectedItem(); - void selectFirstItem (); - void selectLastItem (); + void selectFirstItem(); + void selectLastItem(); - virtual S32 notify(const LLSD& info) ; + virtual S32 notify(const LLSD& info) override; + + void setFocusOnItemClicked(bool b) { mFocusOnItemClicked = b; } virtual ~LLFlatListView(); @@ -346,8 +348,8 @@ protected: virtual bool selectNextItemPair(bool is_up_direction, bool reset_selection); - virtual bool canSelectAll() const; - virtual void selectAll(); + virtual bool canSelectAll() const override; + virtual void selectAll() override; virtual bool isSelected(item_pair_t* item_pair) const; @@ -364,15 +366,15 @@ protected: */ void notifyParentItemsRectChanged(); - virtual bool handleKeyHere(KEY key, MASK mask); + virtual bool handleKeyHere(KEY key, MASK mask) override; - virtual bool postBuild(); + virtual bool postBuild() override; - virtual void onFocusReceived(); + virtual void onFocusReceived() override; - virtual void onFocusLost(); + virtual void onFocusLost() override; - virtual void draw(); + virtual void draw() override; LLRect getLastSelectedItemRect(); @@ -423,6 +425,8 @@ private: bool mKeepSelectionVisibleOnReshape; + bool mFocusOnItemClicked; + /** All pairs of the list */ pairs_list_t mItemPairs; @@ -478,7 +482,7 @@ public: void setNoItemsMsg(const std::string& msg) { mNoItemsMsg = msg; } void setNoFilteredItemsMsg(const std::string& msg) { mNoFilteredItemsMsg = msg; } - bool getForceShowingUnmatchedItems(); + bool getForceShowingUnmatchedItems() const; void setForceShowingUnmatchedItems(bool show); @@ -486,7 +490,7 @@ public: * Sets up new filter string and filters the list. */ void setFilterSubString(const std::string& filter_str, bool notify_parent); - std::string getFilterSubString() { return mFilterSubString; } + std::string getFilterSubString() const { return mFilterSubString; } /** * Filters the list, rearranges and notifies parent about shape changes. diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp index 4b904f09e0..fd07b2ec5d 100644 --- a/indra/llui/llfloater.cpp +++ b/indra/llui/llfloater.cpp @@ -2165,7 +2165,7 @@ void LLFloater::setCanDrag(bool can_drag) } } -bool LLFloater::getCanDrag() +bool LLFloater::getCanDrag() const { return mDragHandle->getEnabled(); } diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h index 9be2240f6f..9e1594bdd2 100644 --- a/indra/llui/llfloater.h +++ b/indra/llui/llfloater.h @@ -46,24 +46,24 @@ class LLMultiFloater; class LLFloater; -const bool RESIZE_YES = true; -const bool RESIZE_NO = false; +constexpr bool RESIZE_YES = true; +constexpr bool RESIZE_NO = false; -const bool DRAG_ON_TOP = false; -const bool DRAG_ON_LEFT = true; +constexpr bool DRAG_ON_TOP = false; +constexpr bool DRAG_ON_LEFT = true; -const bool MINIMIZE_YES = true; -const bool MINIMIZE_NO = false; +constexpr bool MINIMIZE_YES = true; +constexpr bool MINIMIZE_NO = false; -const bool CLOSE_YES = true; -const bool CLOSE_NO = false; +constexpr bool CLOSE_YES = true; +constexpr bool CLOSE_NO = false; -const bool ADJUST_VERTICAL_YES = true; -const bool ADJUST_VERTICAL_NO = false; +constexpr bool ADJUST_VERTICAL_YES = true; +constexpr bool ADJUST_VERTICAL_NO = false; -const F32 CONTEXT_CONE_IN_ALPHA = 0.f; -const F32 CONTEXT_CONE_OUT_ALPHA = 1.f; -const F32 CONTEXT_CONE_FADE_TIME = .08f; +constexpr F32 CONTEXT_CONE_IN_ALPHA = 0.f; +constexpr F32 CONTEXT_CONE_OUT_ALPHA = 1.f; +constexpr F32 CONTEXT_CONE_FADE_TIME = .08f; namespace LLFloaterEnums { @@ -228,7 +228,7 @@ public: /*virtual*/ void setIsChrome(bool is_chrome); /*virtual*/ void setRect(const LLRect &rect); void setIsSingleInstance(bool is_single_instance); - bool getIsSingleInstance() { return mSingleInstance; } + bool getIsSingleInstance() const { return mSingleInstance; } void initFloater(const Params& p); @@ -274,17 +274,17 @@ public: static bool isShown(const LLFloater* floater); static bool isVisible(const LLFloater* floater); static bool isMinimized(const LLFloater* floater); - bool isFirstLook() { return mFirstLook; } // EXT-2653: This function is necessary to prevent overlapping for secondary showed toasts + bool isFirstLook() const { return mFirstLook; } // EXT-2653: This function is necessary to prevent overlapping for secondary showed toasts virtual bool isFrontmost(); - bool isDependent() { return !mDependeeHandle.isDead(); } + bool isDependent() const { return !mDependeeHandle.isDead(); } void setCanMinimize(bool can_minimize); void setCanClose(bool can_close); void setCanTearOff(bool can_tear_off); virtual void setCanResize(bool can_resize); void setCanDrag(bool can_drag); - bool getCanDrag(); + bool getCanDrag() const; void setHost(LLMultiFloater* host); - bool isResizable() const { return mResizable; } + bool isResizable() const { return mResizable; } void setResizeLimits( S32 min_width, S32 min_height ); void getResizeLimits( S32* min_width, S32* min_height ) { *min_width = mMinWidth; *min_height = mMinHeight; } @@ -347,7 +347,7 @@ public: virtual void setDocked(bool docked, bool pop_on_undock = true); virtual void setTornOff(bool torn_off) { mTornOff = torn_off; } - bool isTornOff() {return mTornOff;} + bool isTornOff() const { return mTornOff; } void setOpenPositioning(LLFloaterEnums::EOpenPositioning pos) {mPositioning = pos;} @@ -377,6 +377,10 @@ public: void enableResizeCtrls(bool enable, bool width = true, bool height = true); bool isPositioning(LLFloaterEnums::EOpenPositioning p) const { return (p == mPositioning); } + + void setAutoFocus(bool focus) { mAutoFocus = focus; } // whether to automatically take focus when opened + bool getAutoFocus() const { return mAutoFocus; } + protected: void applyControlsAndPosition(LLFloater* other); @@ -401,8 +405,6 @@ protected: void setExpandedRect(const LLRect& rect) { mExpandedRect = rect; } // size when not minimized const LLRect& getExpandedRect() const { return mExpandedRect; } - void setAutoFocus(bool focus) { mAutoFocus = focus; } // whether to automatically take focus when opened - bool getAutoFocus() const { return mAutoFocus; } LLDragHandle* getDragHandle() const { return mDragHandle; } void destroy(); // Don't call this directly. You probably want to call closeFloater() @@ -423,7 +425,6 @@ protected: private: void setForeground(bool b); // called only by floaterview void cleanupHandles(); // remove handles to dead floaters - void createMinimizeButton(); void buildButtons(const Params& p); // Images and tooltips are named in the XML, but we want to look them diff --git a/indra/llui/llfloaterreglistener.h b/indra/llui/llfloaterreglistener.h index a36072892c..28f6e7c66b 100644 --- a/indra/llui/llfloaterreglistener.h +++ b/indra/llui/llfloaterreglistener.h @@ -30,7 +30,6 @@ #define LL_LLFLOATERREGLISTENER_H #include "lleventapi.h" -#include <string> class LLSD; diff --git a/indra/llui/llflyoutbutton.h b/indra/llui/llflyoutbutton.h index 7a49501318..73190fc984 100644 --- a/indra/llui/llflyoutbutton.h +++ b/indra/llui/llflyoutbutton.h @@ -54,7 +54,7 @@ protected: LLFlyoutButton(const Params&); friend class LLUICtrlFactory; public: - virtual void draw(); + void draw() override; void setToggleState(bool state); diff --git a/indra/llui/llfocusmgr.h b/indra/llui/llfocusmgr.h index 1fa0ac137e..89fee5c9f1 100644 --- a/indra/llui/llfocusmgr.h +++ b/indra/llui/llfocusmgr.h @@ -97,7 +97,7 @@ public: LLFocusableElement* getLastKeyboardFocus() const { return mLastKeyboardFocus; } bool childHasKeyboardFocus( const LLView* parent ) const; void removeKeyboardFocusWithoutCallback( const LLFocusableElement* focus ); - bool getKeystrokesOnly() { return mKeystrokesOnly; } + bool getKeystrokesOnly() const { return mKeystrokesOnly; } void setKeystrokesOnly(bool keystrokes_only) { mKeystrokesOnly = keystrokes_only; } F32 getFocusFlashAmt() const; diff --git a/indra/llui/llfolderview.h b/indra/llui/llfolderview.h index 7ed10d9223..bdce9dec54 100644 --- a/indra/llui/llfolderview.h +++ b/indra/llui/llfolderview.h @@ -124,11 +124,11 @@ public: void setSelectCallback(const signal_t::slot_type& cb) { mSelectSignal.connect(cb); } void setReshapeCallback(const signal_t::slot_type& cb) { mReshapeSignal.connect(cb); } - bool getAllowMultiSelect() { return mAllowMultiSelect; } - bool getAllowDrag() { return mAllowDrag; } + bool getAllowMultiSelect() const { return mAllowMultiSelect; } + bool getAllowDrag() const { return mAllowDrag; } void setSingleFolderMode(bool is_single_mode) { mSingleFolderMode = is_single_mode; } - bool isSingleFolderMode() { return mSingleFolderMode; } + bool isSingleFolderMode() const { return mSingleFolderMode; } // Close all folders in the view void closeAllFolders(); @@ -142,7 +142,7 @@ public: virtual S32 getItemHeight() const; void arrangeAll() { mArrangeGeneration++; } - S32 getArrangeGeneration() { return mArrangeGeneration; } + S32 getArrangeGeneration() const { return mArrangeGeneration; } // applies filters to control visibility of items virtual void filter( LLFolderViewFilter& filter); @@ -227,27 +227,27 @@ public: void setShowSelectionContext(bool show) { mShowSelectionContext = show; } bool getShowSelectionContext(); void setShowSingleSelection(bool show); - bool getShowSingleSelection() { return mShowSingleSelection; } - F32 getSelectionFadeElapsedTime() { return mMultiSelectionFadeTimer.getElapsedTimeF32(); } - bool getUseEllipses() { return mUseEllipses; } - S32 getSelectedCount() { return (S32)mSelectedItems.size(); } + bool getShowSingleSelection() const { return mShowSingleSelection; } + F32 getSelectionFadeElapsedTime() const { return mMultiSelectionFadeTimer.getElapsedTimeF32(); } + bool getUseEllipses() const { return mUseEllipses; } + S32 getSelectedCount() const { return (S32)mSelectedItems.size(); } - void update(); // needs to be called periodically (e.g. once per frame) + void update(); // needs to be called periodically (e.g. once per frame) - bool needsAutoSelect() { return mNeedsAutoSelect && !mAutoSelectOverride; } - bool needsAutoRename() { return mNeedsAutoRename; } + bool needsAutoSelect() const { return mNeedsAutoSelect && !mAutoSelectOverride; } + bool needsAutoRename() const { return mNeedsAutoRename; } void setNeedsAutoRename(bool val) { mNeedsAutoRename = val; } void setPinningSelectedItem(bool val) { mPinningSelectedItem = val; } void setAutoSelectOverride(bool val) { mAutoSelectOverride = val; } - bool showItemLinkOverlays() { return mShowItemLinkOverlays; } + bool showItemLinkOverlays() const { return mShowItemLinkOverlays; } void setCallbackRegistrar(LLUICtrl::CommitCallbackRegistry::ScopedRegistrar* registrar) { mCallbackRegistrar = registrar; } void setEnableRegistrar(LLUICtrl::EnableCallbackRegistry::ScopedRegistrar* registrar) { mEnableRegistrar = registrar; } void setForceArrange(bool force) { mForceArrange = force; } - LLPanel* getParentPanel() { return mParentPanel.get(); } + LLPanel* getParentPanel() const { return mParentPanel.get(); } // DEBUG only void dumpSelectionInformation(); @@ -255,7 +255,7 @@ public: void setShowEmptyMessage(bool show_msg) { mShowEmptyMessage = show_msg; } - bool useLabelSuffix() { return mUseLabelSuffix; } + bool useLabelSuffix() const { return mUseLabelSuffix; } virtual void updateMenu(); void finishRenamingItem( void ); @@ -391,7 +391,7 @@ public: virtual ~LLSelectFirstFilteredItem() {} virtual void doFolder(LLFolderViewFolder* folder); virtual void doItem(LLFolderViewItem* item); - bool wasItemSelected() { return mItemSelected || mFolderSelected; } + bool wasItemSelected() const { return mItemSelected || mFolderSelected; } protected: bool mItemSelected; bool mFolderSelected; diff --git a/indra/llui/llfolderviewitem.h b/indra/llui/llfolderviewitem.h index cc8a7d934c..2ee018a90a 100644 --- a/indra/llui/llfolderviewitem.h +++ b/indra/llui/llfolderviewitem.h @@ -154,7 +154,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(); @@ -282,7 +282,7 @@ public: // Does not need filter update virtual void refreshSuffix(); - bool isSingleFolderMode() { return mSingleFolderMode; } + bool isSingleFolderMode() const { return mSingleFolderMode; } // LLView functionality virtual bool handleRightMouseDown( S32 x, S32 y, MASK mask ); @@ -415,9 +415,6 @@ public: // doesn't delete it. virtual void extractItem( LLFolderViewItem* item, bool deparent_model = true); - // This function is called by a child that needs to be resorted. - void resort(LLFolderViewItem* item); - void setAutoOpenCountdown(F32 countdown) { mAutoOpenCountdown = countdown; } // folders can be opened. This will usually be called by internal diff --git a/indra/llui/llkeywords.cpp b/indra/llui/llkeywords.cpp index 7bf43c22c1..2bea8fb4ed 100644 --- a/indra/llui/llkeywords.cpp +++ b/indra/llui/llkeywords.cpp @@ -170,7 +170,7 @@ std::string LLKeywords::getAttribute(std::string_view key) return (it != mAttributes.end()) ? it->second : ""; } -LLUIColor LLKeywords::getColorGroup(std::string_view key_in) +LLUIColor LLKeywords::getColorGroup(std::string_view key_in) const { std::string color_group = "ScriptText"; if (key_in == "functions") diff --git a/indra/llui/llkeywords.h b/indra/llui/llkeywords.h index 328561c92a..5892238593 100644 --- a/indra/llui/llkeywords.h +++ b/indra/llui/llkeywords.h @@ -111,8 +111,8 @@ public: ~LLKeywords(); void clearLoaded() { mLoaded = false; } - LLUIColor getColorGroup(std::string_view key_in); - bool isLoaded() const { return mLoaded; } + LLUIColor getColorGroup(std::string_view key_in) const; + bool isLoaded() const { return mLoaded; } void findSegments(std::vector<LLTextSegmentPtr> *seg_list, const LLWString& text, diff --git a/indra/llui/lllayoutstack.cpp b/indra/llui/lllayoutstack.cpp index 1c59938f90..fe0591ce4b 100644 --- a/indra/llui/lllayoutstack.cpp +++ b/indra/llui/lllayoutstack.cpp @@ -36,8 +36,8 @@ #include "lliconctrl.h" #include "boost/foreach.hpp" -static const F32 MIN_FRACTIONAL_SIZE = 0.00001f; -static const F32 MAX_FRACTIONAL_SIZE = 1.f; +static constexpr F32 MIN_FRACTIONAL_SIZE = 0.00001f; +static constexpr F32 MAX_FRACTIONAL_SIZE = 1.f; static LLDefaultChildRegistry::Register<LLLayoutStack> register_layout_stack("layout_stack"); static LLLayoutStack::LayoutStackRegistry::Register<LLLayoutPanel> register_layout_panel("layout_panel"); diff --git a/indra/llui/lllayoutstack.h b/indra/llui/lllayoutstack.h index 8459921c60..9e3536aaff 100644 --- a/indra/llui/lllayoutstack.h +++ b/indra/llui/lllayoutstack.h @@ -75,9 +75,6 @@ public: /*virtual*/ bool addChild(LLView* child, S32 tab_group = 0); /*virtual*/ void reshape(S32 width, S32 height, bool called_from_parent = true); - - static LLView* fromXML(LLXMLNodePtr node, LLView *parent, LLXMLNodePtr output_node = NULL); - typedef enum e_animate { NO_ANIMATE, @@ -86,7 +83,7 @@ public: void addPanel(LLLayoutPanel* panel, EAnimate animate = NO_ANIMATE); void collapsePanel(LLPanel* panel, bool collapsed = true); - S32 getNumPanels() { return static_cast<S32>(mPanels.size()); } + S32 getNumPanels() const { return static_cast<S32>(mPanels.size()); } void updateLayout(); @@ -190,7 +187,6 @@ public: bool isCollapsed() const { return mCollapsed;} void setOrientation(LLView::EOrientation orientation); - void storeOriginalDim(); void setIgnoreReshape(bool ignore) { mIgnoreReshape = ignore; } 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/lllineeditor.h b/indra/llui/lllineeditor.h index 12fe800acb..7533f76f1d 100644 --- a/indra/llui/lllineeditor.h +++ b/indra/llui/lllineeditor.h @@ -306,8 +306,6 @@ public: S32 calcCursorPos(S32 mouse_x); bool handleSpecialKey(KEY key, MASK mask); bool handleSelectionKey(KEY key, MASK mask); - bool handleControlKey(KEY key, MASK mask); - S32 handleCommitKey(KEY key, MASK mask); void updateTextPadding(); // Draw the background image depending on enabled/focused state. @@ -444,7 +442,7 @@ private: mText = ed->getText(); } - void doRollback( LLLineEditor* ed ) + void doRollback(LLLineEditor* ed) const { ed->mCursorPos = mCursorPos; ed->mScrollHPos = mScrollHPos; @@ -455,7 +453,7 @@ private: ed->mPrevText = mText; } - std::string getText() { return mText; } + std::string getText() const { return mText; } private: std::string mText; diff --git a/indra/llui/llmenubutton.h b/indra/llui/llmenubutton.h index a77ae7dae7..3f96b28246 100644 --- a/indra/llui/llmenubutton.h +++ b/indra/llui/llmenubutton.h @@ -65,8 +65,8 @@ public: boost::signals2::connection setMouseDownCallback( const mouse_signal_t::slot_type& cb ); - /*virtual*/ bool handleMouseDown(S32 x, S32 y, MASK mask); - /*virtual*/ bool handleKeyHere(KEY key, MASK mask ); + bool handleMouseDown(S32 x, S32 y, MASK mask) override; + bool handleKeyHere(KEY key, MASK mask) override; void hideMenu(); diff --git a/indra/llui/llmenugl.h b/indra/llui/llmenugl.h index 66f84393fe..ff9456acc6 100644 --- a/indra/llui/llmenugl.h +++ b/indra/llui/llmenugl.h @@ -439,8 +439,6 @@ protected: public: virtual ~LLMenuGL( void ); - void parseChildXML(LLXMLNodePtr child, LLView* parent); - // LLView Functionality /*virtual*/ bool handleUnicodeCharHere( llwchar uni_char ); /*virtual*/ bool handleHover( S32 x, S32 y, MASK mask ); diff --git a/indra/llui/llmultifloater.cpp b/indra/llui/llmultifloater.cpp index a7f9b8b2d9..f53e22c349 100644 --- a/indra/llui/llmultifloater.cpp +++ b/indra/llui/llmultifloater.cpp @@ -390,7 +390,7 @@ LLFloater* LLMultiFloater::getActiveFloater() return (LLFloater*)mTabContainer->getCurrentPanel(); } -S32 LLMultiFloater::getFloaterCount() +S32 LLMultiFloater::getFloaterCount() const { return mTabContainer->getTabCount(); } diff --git a/indra/llui/llmultifloater.h b/indra/llui/llmultifloater.h index eb0f917695..e0cd58aa3f 100644 --- a/indra/llui/llmultifloater.h +++ b/indra/llui/llmultifloater.h @@ -66,7 +66,7 @@ public: virtual LLFloater* getActiveFloater(); virtual bool isFloaterFlashing(LLFloater* floaterp); - virtual S32 getFloaterCount(); + virtual S32 getFloaterCount() const; virtual void setFloaterFlashing(LLFloater* floaterp, bool flashing); virtual bool closeAllFloaters(); //Returns false if the floater could not be closed due to pending confirmation dialogs diff --git a/indra/llui/llmultislider.h b/indra/llui/llmultislider.h index b2bfc8bc84..af255bcc8f 100644 --- a/indra/llui/llmultislider.h +++ b/indra/llui/llmultislider.h @@ -117,10 +117,10 @@ public: /*virtual*/ void onMouseLeave(S32 x, S32 y, MASK mask) override; /*virtual*/ void draw() override; - S32 getMaxNumSliders() { return mMaxNumSliders; } - S32 getCurNumSliders() { return static_cast<S32>(mValue.size()); } - F32 getOverlapThreshold() { return mOverlapThreshold; } - bool canAddSliders() { return mValue.size() < mMaxNumSliders; } + S32 getMaxNumSliders() const { return mMaxNumSliders; } + S32 getCurNumSliders() const { return static_cast<S32>(mValue.size()); } + F32 getOverlapThreshold() const { return mOverlapThreshold; } + bool canAddSliders() const { return mValue.size() < mMaxNumSliders; } protected: diff --git a/indra/llui/llmultisliderctrl.h b/indra/llui/llmultisliderctrl.h index dec6cb48b9..2c2bc5e4d9 100644 --- a/indra/llui/llmultisliderctrl.h +++ b/indra/llui/llmultisliderctrl.h @@ -124,10 +124,10 @@ public: F32 getMinValue() const { return mMultiSlider->getMinValue(); } F32 getMaxValue() const { return mMultiSlider->getMaxValue(); } - S32 getMaxNumSliders() { return mMultiSlider->getMaxNumSliders(); } - S32 getCurNumSliders() { return mMultiSlider->getCurNumSliders(); } - F32 getOverlapThreshold() { return mMultiSlider->getOverlapThreshold(); } - bool canAddSliders() { return mMultiSlider->canAddSliders(); } + S32 getMaxNumSliders() const { return mMultiSlider->getMaxNumSliders(); } + S32 getCurNumSliders() const { return mMultiSlider->getCurNumSliders(); } + F32 getOverlapThreshold() const { return mMultiSlider->getOverlapThreshold(); } + bool canAddSliders() const { return mMultiSlider->canAddSliders(); } void setLabel(const std::string& label) { if (mLabelBox) mLabelBox->setText(label); } void setLabelColor(const LLUIColor& c) { mTextEnabledColor = c; } @@ -147,7 +147,6 @@ public: static void onEditorCommit(LLUICtrl* ctrl, const LLSD& userdata); static void onEditorGainFocus(LLFocusableElement* caller, void *userdata); - static void onEditorChangeFocus(LLUICtrl* caller, S32 direction, void *userdata); private: void updateText(); diff --git a/indra/llui/llnotifications.h b/indra/llui/llnotifications.h index 138f1969d5..3c8e1e85fa 100644 --- a/indra/llui/llnotifications.h +++ b/indra/llui/llnotifications.h @@ -247,7 +247,6 @@ public: LLNotificationForm(const LLSD& sd); LLNotificationForm(const std::string& name, const Params& p); - void fromLLSD(const LLSD& sd); LLSD asLLSD() const; S32 getNumElements() { return static_cast<S32>(mFormData.size()); } @@ -266,8 +265,8 @@ public: bool getIgnored(); void setIgnored(bool ignored); - EIgnoreType getIgnoreType() { return mIgnore; } - std::string getIgnoreMessage() { return mIgnoreMsg; } + EIgnoreType getIgnoreType()const { return mIgnore; } + std::string getIgnoreMessage() const { return mIgnoreMsg; } private: LLSD mFormData; @@ -971,8 +970,6 @@ private: /*virtual*/ void initSingleton() override; /*virtual*/ void cleanupSingleton() override; - void loadPersistentNotifications(); - bool expirationFilter(LLNotificationPtr pNotification); bool expirationHandler(const LLSD& payload); bool uniqueFilter(LLNotificationPtr pNotification); diff --git a/indra/llui/llprogressbar.h b/indra/llui/llprogressbar.h index 0d5d32cf21..7245bbf1cf 100644 --- a/indra/llui/llprogressbar.h +++ b/indra/llui/llprogressbar.h @@ -48,9 +48,9 @@ public: LLProgressBar(const Params&); virtual ~LLProgressBar(); - void setValue(const LLSD& value); + void setValue(const LLSD& value) override; - /*virtual*/ void draw(); + void draw() override; private: F32 mPercentDone; diff --git a/indra/llui/llresizebar.h b/indra/llui/llresizebar.h index 4b0f435834..68bf0fd95e 100644 --- a/indra/llui/llresizebar.h +++ b/indra/llui/llresizebar.h @@ -61,7 +61,7 @@ public: void setResizeLimits( S32 min_size, S32 max_size ) { mMinSize = min_size; mMaxSize = max_size; } void setEnableSnapping(bool enable) { mSnappingEnabled = enable; } void setAllowDoubleClickSnapping(bool allow) { mAllowDoubleClickSnapping = allow; } - bool canResize() { return getEnabled() && mMaxSize > mMinSize; } + bool canResize() const { return getEnabled() && mMaxSize > mMinSize; } void setResizeListener(boost::function<void(void*)> listener) {mResizeListener = listener;} void setImagePanel(LLPanel * panelp); LLPanel * getImagePanel() const; diff --git a/indra/llui/llresizehandle.h b/indra/llui/llresizehandle.h index 9cc4123544..caec33405c 100644 --- a/indra/llui/llresizehandle.h +++ b/indra/llui/llresizehandle.h @@ -50,10 +50,10 @@ protected: LLResizeHandle(const LLResizeHandle::Params&); friend class LLUICtrlFactory; public: - virtual void draw(); - virtual bool handleHover(S32 x, S32 y, MASK mask); - virtual bool handleMouseDown(S32 x, S32 y, MASK mask); - virtual bool handleMouseUp(S32 x, S32 y, MASK mask); + void draw() override; + bool handleHover(S32 x, S32 y, MASK mask) override; + bool handleMouseDown(S32 x, S32 y, MASK mask) override; + bool handleMouseUp(S32 x, S32 y, MASK mask) override; void setResizeLimits( S32 min_width, S32 min_height ) { mMinWidth = min_width; mMinHeight = min_height; } @@ -71,8 +71,8 @@ private: const ECorner mCorner; }; -const S32 RESIZE_HANDLE_HEIGHT = 11; -const S32 RESIZE_HANDLE_WIDTH = 11; +constexpr S32 RESIZE_HANDLE_HEIGHT = 11; +constexpr S32 RESIZE_HANDLE_WIDTH = 11; #endif // LL_RESIZEHANDLE_H diff --git a/indra/llui/llrngwriter.h b/indra/llui/llrngwriter.h index 33ec049a1a..2c39472607 100644 --- a/indra/llui/llrngwriter.h +++ b/indra/llui/llrngwriter.h @@ -37,7 +37,7 @@ public: void writeRNG(const std::string& name, LLXMLNodePtr node, const LLInitParam::BaseBlock& block, const std::string& xml_namespace); void addDefinition(const std::string& type_name, const LLInitParam::BaseBlock& block); - /*virtual*/ std::string getCurrentElementName() { return LLStringUtil::null; } + std::string getCurrentElementName() override { return LLStringUtil::null; } LLRNGWriter(); diff --git a/indra/llui/llscrolllistcell.h b/indra/llui/llscrolllistcell.h index e7ff5c8424..7dded3c0b7 100644 --- a/indra/llui/llscrolllistcell.h +++ b/indra/llui/llscrolllistcell.h @@ -105,7 +105,7 @@ public: virtual const LLSD getAltValue() const; virtual void setValue(const LLSD& value) { } virtual void setAltValue(const LLSD& value) { } - virtual const std::string &getToolTip() const { return mToolTip; } + virtual const std::string& getToolTip() const { return mToolTip; } virtual void setToolTip(const std::string &str) { mToolTip = str; } virtual bool getVisible() const { return true; } virtual void setWidth(S32 width) { mWidth = width; } diff --git a/indra/llui/llscrolllistctrl.h b/indra/llui/llscrolllistctrl.h index c24784338a..1f04100306 100644 --- a/indra/llui/llscrolllistctrl.h +++ b/indra/llui/llscrolllistctrl.h @@ -165,7 +165,6 @@ public: void deleteAllItems() { clearRows(); } // Sets an array of column descriptors - void setColumnHeadings(const LLSD& headings); void sortByColumnIndex(U32 column, bool ascending); // LLCtrlListInterface functions @@ -318,7 +317,7 @@ public: void setAllowKeyboardMovement(bool b) { mAllowKeyboardMovement = b; } void setMaxSelectable(U32 max_selected) { mMaxSelectable = max_selected; } - S32 getMaxSelectable() { return mMaxSelectable; } + S32 getMaxSelectable() const { return mMaxSelectable; } virtual S32 getScrollPos() const; @@ -334,7 +333,7 @@ public: // support right-click context menus for avatar/group lists enum ContextMenuType { MENU_NONE, MENU_AVATAR, MENU_GROUP }; void setContextMenu(const ContextMenuType &menu) { mContextMenuType = menu; } - ContextMenuType getContextMenuType() { return mContextMenuType; } + ContextMenuType getContextMenuType() const { return mContextMenuType; } // Overridden from LLView /*virtual*/ void draw(); @@ -362,7 +361,6 @@ public: virtual void fitContents(S32 max_width, S32 max_height); virtual LLRect getRequiredRect(); - static bool rowPreceeds(LLScrollListItem *new_row, LLScrollListItem *test_row); LLRect getItemListRect() { return mItemListRect; } @@ -384,7 +382,6 @@ public: * then display all items. */ void setPageLines(S32 page_lines ); - void setCollapseEmptyColumns(bool collapse); LLScrollListItem* hitItem(S32 x,S32 y); virtual void scrollToShowSelected(); @@ -401,7 +398,7 @@ public: void setNumDynamicColumns(S32 num) { mNumDynamicWidthColumns = num; } void updateStaticColumnWidth(LLScrollListColumn* col, S32 new_width); - S32 getTotalStaticColumnWidth() { return mTotalStaticColumnWidth; } + S32 getTotalStaticColumnWidth() const { return mTotalStaticColumnWidth; } std::string getSortColumnName(); bool getSortAscending() { return mSortColumns.empty() ? true : mSortColumns.back().second; } diff --git a/indra/llui/llsliderctrl.h b/indra/llui/llsliderctrl.h index 311377a61f..23ce8fd955 100644 --- a/indra/llui/llsliderctrl.h +++ b/indra/llui/llsliderctrl.h @@ -132,7 +132,6 @@ public: static void onEditorCommit(LLUICtrl* ctrl, const LLSD& userdata); static void onEditorGainFocus(LLFocusableElement* caller, void *userdata); - static void onEditorChangeFocus(LLUICtrl* caller, S32 direction, void *userdata); protected: virtual std::string _getSearchText() const diff --git a/indra/llui/llspinctrl.h b/indra/llui/llspinctrl.h index 58b38dc630..4ba8c97c63 100644 --- a/indra/llui/llspinctrl.h +++ b/indra/llui/llspinctrl.h @@ -94,7 +94,6 @@ public: void onEditorCommit(const LLSD& data); static void onEditorGainFocus(LLFocusableElement* caller, void *userdata); static void onEditorLostFocus(LLFocusableElement* caller, void *userdata); - static void onEditorChangeFocus(LLUICtrl* caller, S32 direction, void *userdata); void onUpBtn(const LLSD& data); void onDownBtn(const LLSD& data); diff --git a/indra/llui/llstatbar.h b/indra/llui/llstatbar.h index c36a138566..bbbf0b3a19 100644 --- a/indra/llui/llstatbar.h +++ b/indra/llui/llstatbar.h @@ -67,7 +67,7 @@ public: void setStat(const std::string& stat_name); void setRange(F32 bar_min, F32 bar_max); - void getRange(F32& bar_min, F32& bar_max) { bar_min = mTargetMinBar; bar_max = mTargetMaxBar; } + void getRange(F32& bar_min, F32& bar_max) const { bar_min = mTargetMinBar; bar_max = mTargetMaxBar; } /*virtual*/ LLRect getRequiredRect(); // Return the height of this object, given the set options. diff --git a/indra/llui/llstatgraph.cpp b/indra/llui/llstatgraph.cpp index d97051247e..0af717d447 100644 --- a/indra/llui/llstatgraph.cpp +++ b/indra/llui/llstatgraph.cpp @@ -36,7 +36,6 @@ #include "llglheaders.h" #include "lltracerecording.h" #include "lltracethreadrecorder.h" -//#include "llviewercontrol.h" /////////////////////////////////////////////////////////////////////////////////// diff --git a/indra/llui/llstatgraph.h b/indra/llui/llstatgraph.h index c254821870..6d9e3d1064 100644 --- a/indra/llui/llstatgraph.h +++ b/indra/llui/llstatgraph.h @@ -99,9 +99,7 @@ public: void setMin(const F32 min); void setMax(const F32 max); - virtual void draw(); - - /*virtual*/ void setValue(const LLSD& value); + void draw() override; private: LLTrace::StatType<LLTrace::CountAccumulator>* mNewStatFloatp; @@ -133,9 +131,6 @@ private: }; typedef std::vector<Threshold> threshold_vec_t; threshold_vec_t mThresholds; - //S32 mNumThresholds; - //F32 mThresholds[4]; - //LLColor4 mThresholdColors[4]; }; #endif // LL_LLSTATGRAPH_H diff --git a/indra/llui/llstatview.h b/indra/llui/llstatview.h index b5187f886d..a396773057 100644 --- a/indra/llui/llstatview.h +++ b/indra/llui/llstatview.h @@ -29,7 +29,6 @@ #include "llstatbar.h" #include "llcontainerview.h" -#include <vector> class LLStatBar; 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/lltabcontainer.cpp b/indra/llui/lltabcontainer.cpp index 595ab0bd2b..5e0985c79c 100644 --- a/indra/llui/lltabcontainer.cpp +++ b/indra/llui/lltabcontainer.cpp @@ -1370,17 +1370,17 @@ LLPanel* LLTabContainer::getCurrentPanel() return NULL; } -S32 LLTabContainer::getCurrentPanelIndex() +S32 LLTabContainer::getCurrentPanelIndex() const { return mCurrentTabIdx; } -S32 LLTabContainer::getTabCount() +S32 LLTabContainer::getTabCount() const { return static_cast<S32>(mTabList.size()); } -LLPanel* LLTabContainer::getPanelByIndex(S32 index) +LLPanel* LLTabContainer::getPanelByIndex(S32 index) const { if (index >= 0 && index < (S32)mTabList.size()) { @@ -1389,7 +1389,7 @@ LLPanel* LLTabContainer::getPanelByIndex(S32 index) return NULL; } -S32 LLTabContainer::getIndexForPanel(LLPanel* panel) +S32 LLTabContainer::getIndexForPanel(LLPanel* panel) const { for (S32 index = 0; index < (S32)mTabList.size(); index++) { @@ -1401,7 +1401,7 @@ S32 LLTabContainer::getIndexForPanel(LLPanel* panel) return -1; } -S32 LLTabContainer::getPanelIndexByTitle(std::string_view title) +S32 LLTabContainer::getPanelIndexByTitle(std::string_view title) const { for (S32 index = 0 ; index < (S32)mTabList.size(); index++) { diff --git a/indra/llui/lltabcontainer.h b/indra/llui/lltabcontainer.h index 40f272ffa8..4ac7e73d25 100644 --- a/indra/llui/lltabcontainer.h +++ b/indra/llui/lltabcontainer.h @@ -182,15 +182,15 @@ public: void removeTabPanel( LLPanel* child ); void lockTabs(S32 num_tabs = 0); void unlockTabs(); - S32 getNumLockedTabs() { return mLockedTabCount; } + S32 getNumLockedTabs() const { return mLockedTabCount; } void enableTabButton(S32 which, bool enable); void deleteAllTabs(); LLPanel* getCurrentPanel(); - S32 getCurrentPanelIndex(); - S32 getTabCount(); - LLPanel* getPanelByIndex(S32 index); - S32 getIndexForPanel(LLPanel* panel); - S32 getPanelIndexByTitle(std::string_view title); + S32 getCurrentPanelIndex() const; + S32 getTabCount() const; + LLPanel* getPanelByIndex(S32 index) const; + S32 getIndexForPanel(LLPanel* panel) const; + S32 getPanelIndexByTitle(std::string_view title) const; LLPanel* getPanelByName(std::string_view name); S32 getTotalTabWidth() const; void setCurrentTabName(const std::string& name); 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 76d4e160af..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,13 +140,12 @@ 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; } /*virtual*/ void setToken( LLKeywordToken* token ) { mToken = token; } /*virtual*/ LLKeywordToken* getToken() const { return mToken; } - /*virtual*/ bool getToolTip( std::string& msg ) const; /*virtual*/ void setToolTip(const std::string& tooltip); /*virtual*/ void dump() const; @@ -162,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; @@ -170,6 +172,8 @@ protected: std::string mTooltip; boost::signals2::connection mImageLoadedConnection; + bool mCanEdit { true }; + // font rendering LLFontVertexBuffer mFontBufferPreSelection; LLFontVertexBuffer mFontBufferSelection; @@ -450,7 +454,7 @@ public: virtual void setText(const LLStringExplicit &utf8str , const LLStyle::Params& input_params = LLStyle::Params()); // uses default style /*virtual*/ const std::string& getText() const override; void setMaxTextLength(S32 length) { mMaxTextByteLength = length; } - S32 getMaxTextLength() { return mMaxTextByteLength; } + S32 getMaxTextLength() const { return mMaxTextByteLength; } // wide-char versions void setWText(const LLWString& text); @@ -489,10 +493,10 @@ public: LLRect getTextBoundingRect(); LLRect getVisibleDocumentRect() const; - S32 getVPad() { return mVPad; } - S32 getHPad() { return mHPad; } - F32 getLineSpacingMult() { return mLineSpacingMult; } - S32 getLineSpacingPixels() { return mLineSpacingPixels; } // only for multiline + S32 getVPad() const { return mVPad; } + S32 getHPad() const { return mHPad; } + F32 getLineSpacingMult() const { return mLineSpacingMult; } + S32 getLineSpacingPixels() const { return mLineSpacingPixels; } // only for multiline S32 getDocIndexFromLocalCoord( S32 local_x, S32 local_y, bool round, bool hit_past_end_of_line = true) const; LLRect getLocalRectFromDocIndex(S32 pos) const; @@ -502,7 +506,7 @@ public: bool getReadOnly() const { return mReadOnly; } void setSkipLinkUnderline(bool skip_link_underline) { mSkipLinkUnderline = skip_link_underline; } - bool getSkipLinkUnderline() { return mSkipLinkUnderline; } + bool getSkipLinkUnderline() const { return mSkipLinkUnderline; } void setParseURLs(bool parse_urls) { mParseHTML = parse_urls; } @@ -516,8 +520,8 @@ public: void endOfLine(); void startOfDoc(); void endOfDoc(); - void changePage( S32 delta ); - void changeLine( S32 delta ); + void changePage(S32 delta); + void changeLine(S32 delta); bool scrolledToStart(); bool scrolledToEnd(); @@ -607,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); @@ -620,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 @@ -673,8 +679,8 @@ 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: @@ -685,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/lltextbox.h b/indra/llui/lltextbox.h index 500dc8669f..507d8f3ee6 100644 --- a/indra/llui/lltextbox.h +++ b/indra/llui/lltextbox.h @@ -46,39 +46,39 @@ protected: friend class LLUICtrlFactory; public: - virtual ~LLTextBox(); + ~LLTextBox() override; - /*virtual*/ bool handleMouseDown(S32 x, S32 y, MASK mask); - /*virtual*/ bool handleMouseUp(S32 x, S32 y, MASK mask); - /*virtual*/ bool handleHover(S32 x, S32 y, MASK mask); + bool handleMouseDown(S32 x, S32 y, MASK mask) override; + bool handleMouseUp(S32 x, S32 y, MASK mask) override; + bool handleHover(S32 x, S32 y, MASK mask) override; - /*virtual*/ void setEnabled(bool enabled); + void setEnabled(bool enabled) override; - /*virtual*/ void setText( const LLStringExplicit& text, const LLStyle::Params& input_params = LLStyle::Params() ); + void setText(const LLStringExplicit& text, const LLStyle::Params& input_params = LLStyle::Params()) override; - void setRightAlign() { mHAlign = LLFontGL::RIGHT; } - void setHAlign( LLFontGL::HAlign align ) { mHAlign = align; } - void setClickedCallback( boost::function<void (void*)> cb, void* userdata = NULL ); + void setRightAlign() { mHAlign = LLFontGL::RIGHT; } + void setHAlign(LLFontGL::HAlign align) { mHAlign = align; } + void setClickedCallback(boost::function<void(void*)> cb, void* userdata = NULL); - void reshapeToFitText(bool called_from_parent = false); + void reshapeToFitText(bool called_from_parent = false); - S32 getTextPixelWidth(); - S32 getTextPixelHeight(); + S32 getTextPixelWidth(); + S32 getTextPixelHeight(); - /*virtual*/ LLSD getValue() const; - /*virtual*/ bool setTextArg( const std::string& key, const LLStringExplicit& text ); + LLSD getValue() const override; + bool setTextArg(const std::string& key, const LLStringExplicit& text) override; - void setShowCursorHand(bool show_cursor) { mShowCursorHand = show_cursor; } + void setShowCursorHand(bool show_cursor) { mShowCursorHand = show_cursor; } protected: - void onUrlLabelUpdated(const std::string &url, const std::string &label); + void onUrlLabelUpdated(const std::string& url, const std::string& label); LLUIString mText; callback_t mClickedCallback; bool mShowCursorHand; protected: - virtual std::string _getSearchText() const + virtual std::string _getSearchText() const override { return LLTextBase::_getSearchText() + mText.getString(); } diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp index 77a4976f6b..cfe729be06 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) @@ -714,6 +716,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; @@ -1103,6 +1129,7 @@ void LLTextEditor::removeCharOrTab() } tryToShowEmojiHelper(); + tryToShowMentionHelper(); } else { @@ -1128,6 +1155,7 @@ void LLTextEditor::removeChar() setCursorPos(mCursorPos - 1); removeChar(mCursorPos); tryToShowEmojiHelper(); + tryToShowMentionHelper(); } else { @@ -1189,6 +1217,7 @@ void LLTextEditor::addChar(llwchar wc) setCursorPos(mCursorPos + addChar( mCursorPos, wc )); tryToShowEmojiHelper(); + tryToShowMentionHelper(); if (!mReadOnly && mAutoreplaceCallback != NULL) { @@ -1218,6 +1247,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) @@ -1239,6 +1276,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() ) @@ -1865,7 +1927,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) @@ -1876,9 +1938,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 && @@ -3075,3 +3141,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 e9e7070414..882bb145df 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); @@ -200,24 +202,24 @@ public: const LLUUID& getSourceID() const { return mSourceID; } const LLTextSegmentPtr getPreviousSegment() const; - const LLTextSegmentPtr getLastSegment() const; void getSelectedSegments(segment_vec_t& segments) const; void setShowContextMenu(bool show) { mShowContextMenu = show; } 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(); - void assignEmbedded(const std::string &s); - void removeCharOrTab(); void indentSelectedLines( S32 spaces ); @@ -237,7 +239,6 @@ protected: void autoIndent(); - void findEmbeddedItemSegments(S32 start, S32 end); void getSegmentsInRange(segment_vec_t& segments, S32 start, S32 end, bool include_partial) const; virtual llwchar pasteEmbeddedItem(llwchar ext_char) { return ext_char; } @@ -257,6 +258,7 @@ protected: S32 remove(S32 pos, S32 length, bool group_with_next_op); void tryToShowEmojiHelper(); + void tryToShowMentionHelper(); void focusLostHelper(); void updateAllowingLanguageInput(); bool hasPreeditString() const; @@ -294,6 +296,7 @@ protected: bool mAutoIndent; bool mParseOnTheFly; + bool mShowChatMentionPicker; void updateLinkSegments(); void keepSelectionOnReturn(bool keep) { mKeepSelectionOnReturn = keep; } @@ -304,7 +307,7 @@ private: // Methods // void pasteHelper(bool is_primary); - void cleanStringForPaste(LLWString & clean_string); + void cleanStringForPaste(LLWString& clean_string); void pasteTextWithLinebreaks(LLWString & clean_string); void onKeyStroke(); diff --git a/indra/llui/lltoolbar.h b/indra/llui/lltoolbar.h index c57c979525..5556406fbd 100644 --- a/indra/llui/lltoolbar.h +++ b/indra/llui/lltoolbar.h @@ -68,7 +68,7 @@ public: void reshape(S32 width, S32 height, bool called_from_parent = true); void setEnabled(bool enabled); void setCommandId(const LLCommandId& id) { mId = id; } - LLCommandId getCommandId() { return mId; } + LLCommandId getCommandId() const { return mId; } void setStartDragCallback(tool_startdrag_callback_t cb) { mStartDragItemCallback = cb; } void setHandleDragCallback(tool_handledrag_callback_t cb) { mHandleDragItemCallback = cb; } @@ -256,7 +256,7 @@ public: // Methods used in loading and saving toolbar settings void setButtonType(LLToolBarEnums::ButtonType button_type); - LLToolBarEnums::ButtonType getButtonType() { return mButtonType; } + LLToolBarEnums::ButtonType getButtonType() const { return mButtonType; } command_id_list_t& getCommandsList() { return mButtonCommands; } void clearCommandsList(); diff --git a/indra/llui/lltooltip.cpp b/indra/llui/lltooltip.cpp index 86525c2f7e..74f03618cf 100644 --- a/indra/llui/lltooltip.cpp +++ b/indra/llui/lltooltip.cpp @@ -390,22 +390,22 @@ void LLToolTip::draw() } } -bool LLToolTip::isFading() +bool LLToolTip::isFading() const { return mFadeTimer.getStarted(); } -F32 LLToolTip::getVisibleTime() +F32 LLToolTip::getVisibleTime() const { return mVisibleTimer.getStarted() ? mVisibleTimer.getElapsedTimeF32() : 0.f; } -bool LLToolTip::hasClickCallback() +bool LLToolTip::hasClickCallback() const { return mHasClickCallback; } -void LLToolTip::getToolTipMessage(std::string & message) +void LLToolTip::getToolTipMessage(std::string& message) const { if (mTextBox) { diff --git a/indra/llui/lltooltip.h b/indra/llui/lltooltip.h index 8515504e3b..760acddd6f 100644 --- a/indra/llui/lltooltip.h +++ b/indra/llui/lltooltip.h @@ -44,15 +44,15 @@ public: Params(); }; LLToolTipView(const LLToolTipView::Params&); - /*virtual*/ bool handleHover(S32 x, S32 y, MASK mask); - /*virtual*/ bool handleMouseDown(S32 x, S32 y, MASK mask); - /*virtual*/ bool handleMiddleMouseDown(S32 x, S32 y, MASK mask); - /*virtual*/ bool handleRightMouseDown(S32 x, S32 y, MASK mask); - /*virtual*/ bool handleScrollWheel( S32 x, S32 y, S32 clicks ); + bool handleHover(S32 x, S32 y, MASK mask) override; + bool handleMouseDown(S32 x, S32 y, MASK mask) override; + bool handleMiddleMouseDown(S32 x, S32 y, MASK mask) override; + bool handleRightMouseDown(S32 x, S32 y, MASK mask) override; + bool handleScrollWheel( S32 x, S32 y, S32 clicks ) override; void drawStickyRect(); - /*virtual*/ void draw(); + void draw() override; }; class LLToolTip : public LLPanel @@ -98,20 +98,20 @@ public: Params(); }; - /*virtual*/ void draw(); - /*virtual*/ bool handleHover(S32 x, S32 y, MASK mask); - /*virtual*/ void onMouseLeave(S32 x, S32 y, MASK mask); - /*virtual*/ void setVisible(bool visible); + void draw() override; + bool handleHover(S32 x, S32 y, MASK mask) override; + void onMouseLeave(S32 x, S32 y, MASK mask) override; + void setVisible(bool visible) override; - bool isFading(); - F32 getVisibleTime(); - bool hasClickCallback(); + bool isFading() const; + F32 getVisibleTime() const; + bool hasClickCallback() const; LLToolTip(const Params& p); virtual void initFromParams(const LLToolTip::Params& params); - void getToolTipMessage(std::string & message); - bool isTooltipPastable() { return mIsTooltipPastable; } + void getToolTipMessage(std::string & message) const; + bool isTooltipPastable() const { return mIsTooltipPastable; } protected: void updateTextBox(); diff --git a/indra/llui/llui.h b/indra/llui/llui.h index 9890d3f7ef..b2dcb6dc88 100644 --- a/indra/llui/llui.h +++ b/indra/llui/llui.h @@ -154,7 +154,7 @@ public: sanitizeRange(); } - S32 clamp(S32 input) + S32 clamp(S32 input) const { if (input < mMin) return mMin; if (input > mMax) return mMax; @@ -168,8 +168,8 @@ public: sanitizeRange(); } - S32 getMin() { return mMin; } - S32 getMax() { return mMax; } + S32 getMin() const { return mMin; } + S32 getMax() const { return mMax; } bool operator==(const RangeS32& other) const { @@ -223,7 +223,7 @@ public: mValue = clamp(value); } - S32 get() + S32 get() const { return mValue; } @@ -253,7 +253,7 @@ public: static std::string getLanguage(); // static for lldateutil_test compatibility //helper functions (should probably move free standing rendering helper functions here) - LLView* getRootView() { return mRootView; } + LLView* getRootView() const { return mRootView; } void setRootView(LLView* view) { mRootView = view; } /** * Walk the LLView tree to resolve a path @@ -296,7 +296,7 @@ public: LLControlGroup& getControlControlGroup (std::string_view controlname); F32 getMouseIdleTime() { return mMouseIdleTimer.getElapsedTimeF32(); } void resetMouseIdleTimer() { mMouseIdleTimer.reset(); } - LLWindow* getWindow() { return mWindow; } + LLWindow* getWindow() const { return mWindow; } void addPopup(LLView*); void removePopup(LLView*); diff --git a/indra/llui/lluiconstants.h b/indra/llui/lluiconstants.h index 5fdfd37c6e..a317c66008 100644 --- a/indra/llui/lluiconstants.h +++ b/indra/llui/lluiconstants.h @@ -28,23 +28,23 @@ #define LL_LLUICONSTANTS_H // spacing for small font lines of text, like LLTextBoxes -const S32 LINE = 16; +constexpr S32 LINE = 16; // spacing for larger lines of text -const S32 LINE_BIG = 24; +constexpr S32 LINE_BIG = 24; // default vertical padding -const S32 VPAD = 4; +constexpr S32 VPAD = 4; // default horizontal padding -const S32 HPAD = 4; +constexpr S32 HPAD = 4; // Account History, how far to look into past -const S32 SUMMARY_INTERVAL = 7; // one week -const S32 SUMMARY_MAX = 8; // -const S32 DETAILS_INTERVAL = 1; // one day -const S32 DETAILS_MAX = 30; // one month -const S32 TRANSACTIONS_INTERVAL = 1;// one day -const S32 TRANSACTIONS_MAX = 30; // one month +constexpr S32 SUMMARY_INTERVAL = 7; // one week +constexpr S32 SUMMARY_MAX = 8; // +constexpr S32 DETAILS_INTERVAL = 1; // one day +constexpr S32 DETAILS_MAX = 30; // one month +constexpr S32 TRANSACTIONS_INTERVAL = 1;// one day +constexpr S32 TRANSACTIONS_MAX = 30; // one month #endif diff --git a/indra/llui/lluictrl.h b/indra/llui/lluictrl.h index 8cd9950917..bcaf479b0f 100644 --- a/indra/llui/lluictrl.h +++ b/indra/llui/lluictrl.h @@ -39,9 +39,9 @@ #include "llviewmodel.h" // *TODO move dependency to .cpp file #include "llsearchablecontrol.h" -const bool TAKE_FOCUS_YES = true; -const bool TAKE_FOCUS_NO = false; -const S32 DROP_SHADOW_FLOATER = 5; +constexpr bool TAKE_FOCUS_YES = true; +constexpr bool TAKE_FOCUS_NO = false; +constexpr S32 DROP_SHADOW_FLOATER = 5; class LLUICtrl : public LLView, public boost::signals2::trackable diff --git a/indra/llui/lluictrlfactory.h b/indra/llui/lluictrlfactory.h index 75e7e396bc..91221dc7f3 100644 --- a/indra/llui/lluictrlfactory.h +++ b/indra/llui/lluictrlfactory.h @@ -184,7 +184,7 @@ fail: template<class T> static T* getDefaultWidget(std::string_view name) { - typename T::Params widget_params; + typename T::Params widget_params{}; widget_params.name = std::string(name); return create<T>(widget_params); } diff --git a/indra/llui/llundo.h b/indra/llui/llundo.h index dc40702be0..990745e530 100644 --- a/indra/llui/llundo.h +++ b/indra/llui/llundo.h @@ -42,7 +42,7 @@ public: LLUndoAction(): mClusterID(0) {}; virtual ~LLUndoAction(){}; private: - S32 mClusterID; + S32 mClusterID; }; LLUndoBuffer( LLUndoAction (*create_func()), S32 initial_count ); @@ -51,8 +51,8 @@ public: LLUndoAction *getNextAction(bool setClusterBegin = true); bool undoAction(); bool redoAction(); - bool canUndo() { return (mNextAction != mFirstAction); } - bool canRedo() { return (mNextAction != mLastAction); } + bool canUndo() const { return (mNextAction != mFirstAction); } + bool canRedo() const { return (mNextAction != mLastAction); } void flushActions(); diff --git a/indra/llui/llurlaction.h b/indra/llui/llurlaction.h index 0f54b66299..ac9741a7ad 100644 --- a/indra/llui/llurlaction.h +++ b/indra/llui/llurlaction.h @@ -45,8 +45,6 @@ class LLUrlAction { public: - LLUrlAction(); - /// load a Url in the user's preferred web browser static void openURL(std::string url); 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 ba822fbda6..418a21f963 100644 --- a/indra/llui/llurlmatch.h +++ b/indra/llui/llurlmatch.h @@ -31,7 +31,6 @@ //#include "linden_common.h" #include <string> -#include <vector> #include "llstyle.h" /// @@ -80,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: @@ -106,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 64cfec3960..592e422487 100644 --- a/indra/llui/llurlregistry.h +++ b/indra/llui/llurlregistry.h @@ -34,7 +34,6 @@ #include "llstring.h" #include <string> -#include <vector> class LLKeyBindingToStringHandler; @@ -76,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, @@ -93,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; @@ -102,6 +103,7 @@ private: LLUrlEntryBase* mUrlEntrySLLabel; LLUrlEntryBase* mUrlEntryNoLink; LLUrlEntryBase* mUrlEntryKeybinding; + LLUrlEntryBase* mUrlEntryAgentMention; }; #endif diff --git a/indra/llui/llview.h b/indra/llui/llview.h index 710ec3d05e..97212a9d2d 100644 --- a/indra/llui/llview.h +++ b/indra/llui/llview.h @@ -54,17 +54,17 @@ class LLSD; -const U32 FOLLOWS_NONE = 0x00; -const U32 FOLLOWS_LEFT = 0x01; -const U32 FOLLOWS_RIGHT = 0x02; -const U32 FOLLOWS_TOP = 0x10; -const U32 FOLLOWS_BOTTOM = 0x20; -const U32 FOLLOWS_ALL = 0x33; +constexpr U32 FOLLOWS_NONE = 0x00; +constexpr U32 FOLLOWS_LEFT = 0x01; +constexpr U32 FOLLOWS_RIGHT = 0x02; +constexpr U32 FOLLOWS_TOP = 0x10; +constexpr U32 FOLLOWS_BOTTOM = 0x20; +constexpr U32 FOLLOWS_ALL = 0x33; -const bool MOUSE_OPAQUE = true; -const bool NOT_MOUSE_OPAQUE = false; +constexpr bool MOUSE_OPAQUE = true; +constexpr bool NOT_MOUSE_OPAQUE = false; -const U32 GL_NAME_UI_RESERVED = 2; +constexpr U32 GL_NAME_UI_RESERVED = 2; // maintains render state during traversal of UI tree @@ -241,7 +241,7 @@ public: void setUseBoundingRect( bool use_bounding_rect ); bool getUseBoundingRect() const; - ECursorType getHoverCursor() { return mHoverCursor; } + ECursorType getHoverCursor() const { return mHoverCursor; } static F32 getTooltipTimeout(); virtual const std::string getToolTip() const; @@ -265,7 +265,7 @@ public: void setDefaultTabGroup(S32 d) { mDefaultTabGroup = d; } S32 getDefaultTabGroup() const { return mDefaultTabGroup; } - S32 getLastTabGroup() { return mLastTabGroup; } + S32 getLastTabGroup() const { return mLastTabGroup; } bool isInVisibleChain() const; bool isInEnabledChain() const; diff --git a/indra/llui/llviewborder.h b/indra/llui/llviewborder.h index 1f118a0d20..a4bb748b77 100644 --- a/indra/llui/llviewborder.h +++ b/indra/llui/llviewborder.h @@ -92,7 +92,6 @@ public: private: void drawOnePixelLines(); void drawTwoPixelLines(); - void drawTextures(); EBevel mBevel; EStyle mStyle; diff --git a/indra/llui/llviewereventrecorder.h b/indra/llui/llviewereventrecorder.h index 9e752e8090..5636c068d8 100644 --- a/indra/llui/llviewereventrecorder.h +++ b/indra/llui/llviewereventrecorder.h @@ -61,7 +61,7 @@ public: std::string get_xui(); void update_xui(std::string xui); - bool getLoggingStatus(){return logEvents;}; + bool getLoggingStatus() const { return logEvents; } void setEventLoggingOn(); void setEventLoggingOff(); diff --git a/indra/llui/llvirtualtrackball.h b/indra/llui/llvirtualtrackball.h index 61a78b2398..fbfda04585 100644 --- a/indra/llui/llvirtualtrackball.h +++ b/indra/llui/llvirtualtrackball.h @@ -78,20 +78,20 @@ public: }; - virtual ~LLVirtualTrackball(); - /*virtual*/ bool postBuild(); + ~LLVirtualTrackball() override; + bool postBuild() override; - virtual bool handleHover(S32 x, S32 y, MASK mask); - virtual bool handleMouseUp(S32 x, S32 y, MASK mask); - virtual bool handleMouseDown(S32 x, S32 y, MASK mask); - virtual bool handleRightMouseDown(S32 x, S32 y, MASK mask); - virtual bool handleKeyHere(KEY key, MASK mask); + bool handleHover(S32 x, S32 y, MASK mask) override; + bool handleMouseUp(S32 x, S32 y, MASK mask) override; + bool handleMouseDown(S32 x, S32 y, MASK mask) override; + bool handleRightMouseDown(S32 x, S32 y, MASK mask) override; + bool handleKeyHere(KEY key, MASK mask) override; - virtual void draw(); + void draw() override; - virtual void setValue(const LLSD& value); - void setValue(F32 x, F32 y, F32 z, F32 w); - virtual LLSD getValue() const; + void setValue(const LLSD& value) override; + void setValue(F32 x, F32 y, F32 z, F32 w); + LLSD getValue() const override; void setRotation(const LLQuaternion &value); LLQuaternion getRotation() const; @@ -102,7 +102,6 @@ public: protected: friend class LLUICtrlFactory; LLVirtualTrackball(const Params&); - void onEditChange(); protected: LLTextBox* mNLabel; diff --git a/indra/llui/llwindowshade.h b/indra/llui/llwindowshade.h index da29188943..ee230cd2f6 100644 --- a/indra/llui/llwindowshade.h +++ b/indra/llui/llwindowshade.h @@ -49,7 +49,7 @@ public: }; void show(LLNotificationPtr); - /*virtual*/ void draw(); + void draw() override; void hide(); bool isShown() const; diff --git a/indra/llui/llxyvector.h b/indra/llui/llxyvector.h index bc41213c13..646771f387 100644 --- a/indra/llui/llxyvector.h +++ b/indra/llui/llxyvector.h @@ -65,18 +65,18 @@ public: }; - virtual ~LLXYVector(); - /*virtual*/ bool postBuild(); + ~LLXYVector() override; + bool postBuild() override; - virtual bool handleHover(S32 x, S32 y, MASK mask); - virtual bool handleMouseUp(S32 x, S32 y, MASK mask); - virtual bool handleMouseDown(S32 x, S32 y, MASK mask); + bool handleHover(S32 x, S32 y, MASK mask) override; + bool handleMouseUp(S32 x, S32 y, MASK mask) override; + bool handleMouseDown(S32 x, S32 y, MASK mask) override; - virtual void draw(); + void draw() override; - virtual void setValue(const LLSD& value); - void setValue(F32 x, F32 y); - virtual LLSD getValue() const; + void setValue(const LLSD& value) override; + void setValue(F32 x, F32 y); + LLSD getValue() const override; protected: friend class LLUICtrlFactory; 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 d139a3373e..1f0820a9f6 100644 --- a/indra/llwindow/CMakeLists.txt +++ b/indra/llwindow/CMakeLists.txt @@ -182,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/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp index 730e658c6a..a781e638ee 100644 --- a/indra/llwindow/llwindowwin32.cpp +++ b/indra/llwindow/llwindowwin32.cpp @@ -4681,9 +4681,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/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 8c895246de..80f0b60f98 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -97,6 +97,7 @@ set(viewer_SOURCE_FILES llagentwearables.cpp llanimstatelabels.cpp llappcorehttp.cpp + llappearancelistener.cpp llappearancemgr.cpp llappviewer.cpp llappviewerlistener.cpp @@ -205,6 +206,7 @@ set(viewer_SOURCE_FILES llfloatercamera.cpp llfloatercamerapresets.cpp llfloaterchangeitemthumbnail.cpp + llfloaterchatmentionpicker.cpp llfloaterchatvoicevolume.cpp llfloaterclassified.cpp llfloatercolorpicker.cpp @@ -777,6 +779,7 @@ set(viewer_HEADER_FILES llanimstatelabels.h llappcorehttp.h llappearance.h + llappearancelistener.h llappearancemgr.h llappviewer.h llappviewerlistener.h @@ -884,6 +887,7 @@ set(viewer_HEADER_FILES llfloaterbuyland.h llfloatercamerapresets.h llfloaterchangeitemthumbnail.h + llfloaterchatmentionpicker.h llfloatercamera.h llfloaterchatvoicevolume.h llfloaterclassified.h diff --git a/indra/newview/VIEWER_VERSION.txt b/indra/newview/VIEWER_VERSION.txt index 991d8e5c5f..099f298456 100644 --- a/indra/newview/VIEWER_VERSION.txt +++ b/indra/newview/VIEWER_VERSION.txt @@ -1 +1 @@ -7.1.13 +7.1.14 diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 9ade1d8cc0..3156439181 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> @@ -6416,6 +6427,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> @@ -7885,7 +7907,7 @@ <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> <key>Type</key> @@ -9628,6 +9650,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> @@ -12516,6 +12549,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/app_settings/shaders/class1/deferred/tonemapUtilF.glsl b/indra/newview/app_settings/shaders/class1/deferred/tonemapUtilF.glsl index a63b8d7c2b..774ccb6baf 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/tonemapUtilF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/tonemapUtilF.glsl @@ -117,27 +117,34 @@ uniform float exposure; uniform float tonemap_mix; uniform int tonemap_type; + vec3 toneMap(vec3 color) { #ifndef NO_POST - float exp_scale = texture(exposureMap, vec2(0.5,0.5)).r; - - color *= exposure * exp_scale; + vec3 linear_input_color = color; - vec3 clamped_color = clamp(color.rgb, vec3(0.0), vec3(1.0)); + float exp_scale = texture(exposureMap, vec2(0.5,0.5)).r; + float final_exposure = exposure * exp_scale; + vec3 exposed_color = color * final_exposure; + vec3 tonemapped_color = exposed_color; switch(tonemap_type) { case 0: - color = PBRNeutralToneMapping(color); + tonemapped_color = PBRNeutralToneMapping(exposed_color); break; case 1: - color = toneMapACES_Hill(color); + tonemapped_color = toneMapACES_Hill(exposed_color); break; } - // mix tonemapped and linear here to provide adjustment - color = mix(clamped_color, color, tonemap_mix); + vec3 exposed_linear_input = linear_input_color * final_exposure; + color = mix(exposed_linear_input, tonemapped_color, tonemap_mix); + + color = clamp(color, 0.0, 1.0); +#else + color *= exposure * texture(exposureMap, vec2(0.5,0.5)).r; + color = clamp(color, 0.0, 1.0); #endif return color; @@ -147,20 +154,24 @@ vec3 toneMap(vec3 color) vec3 toneMapNoExposure(vec3 color) { #ifndef NO_POST - vec3 clamped_color = clamp(color.rgb, vec3(0.0), vec3(1.0)); + vec3 linear_input_color = color; + vec3 tonemapped_color = color; switch(tonemap_type) { case 0: - color = PBRNeutralToneMapping(color); + tonemapped_color = PBRNeutralToneMapping(color); break; case 1: - color = toneMapACES_Hill(color); + tonemapped_color = toneMapACES_Hill(color); break; } - // mix tonemapped and linear here to provide adjustment - color = mix(clamped_color, color, tonemap_mix); + color = mix(linear_input_color, tonemapped_color, tonemap_mix); + + color = clamp(color, 0.0, 1.0); +#else + color = clamp(color, 0.0, 1.0); #endif return color; diff --git a/indra/newview/gltfscenemanager.cpp b/indra/newview/gltfscenemanager.cpp index bf3fada3bd..9a381f9ba6 100644 --- a/indra/newview/gltfscenemanager.cpp +++ b/indra/newview/gltfscenemanager.cpp @@ -643,6 +643,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 Binary files differindex a30b51b67a..00d9867814 100644 --- a/indra/newview/icons/release/secondlife.icns +++ b/indra/newview/icons/release/secondlife.icns diff --git a/indra/newview/icons/release/secondlife.iconset/icon_128x128.png b/indra/newview/icons/release/secondlife.iconset/icon_128x128.png Binary files differnew file mode 100644 index 0000000000..4c519db265 --- /dev/null +++ b/indra/newview/icons/release/secondlife.iconset/icon_128x128.png diff --git a/indra/newview/icons/release/secondlife.iconset/icon_128x128@2x.png b/indra/newview/icons/release/secondlife.iconset/icon_128x128@2x.png Binary files differnew file mode 100644 index 0000000000..2a3a0092b2 --- /dev/null +++ b/indra/newview/icons/release/secondlife.iconset/icon_128x128@2x.png diff --git a/indra/newview/icons/release/secondlife.iconset/icon_16x16.png b/indra/newview/icons/release/secondlife.iconset/icon_16x16.png Binary files differnew file mode 100644 index 0000000000..fda2f276ee --- /dev/null +++ b/indra/newview/icons/release/secondlife.iconset/icon_16x16.png diff --git a/indra/newview/icons/release/secondlife.iconset/icon_16x16@2x.png b/indra/newview/icons/release/secondlife.iconset/icon_16x16@2x.png Binary files differnew file mode 100644 index 0000000000..aa4a74f204 --- /dev/null +++ b/indra/newview/icons/release/secondlife.iconset/icon_16x16@2x.png diff --git a/indra/newview/icons/release/secondlife.iconset/icon_256x256.png b/indra/newview/icons/release/secondlife.iconset/icon_256x256.png Binary files differnew file mode 100644 index 0000000000..2a3a0092b2 --- /dev/null +++ b/indra/newview/icons/release/secondlife.iconset/icon_256x256.png diff --git a/indra/newview/icons/release/secondlife.iconset/icon_256x256@2x.png b/indra/newview/icons/release/secondlife.iconset/icon_256x256@2x.png Binary files differnew file mode 100644 index 0000000000..4c28add76c --- /dev/null +++ b/indra/newview/icons/release/secondlife.iconset/icon_256x256@2x.png diff --git a/indra/newview/icons/release/secondlife.iconset/icon_32x32.png b/indra/newview/icons/release/secondlife.iconset/icon_32x32.png Binary files differnew file mode 100644 index 0000000000..aa4a74f204 --- /dev/null +++ b/indra/newview/icons/release/secondlife.iconset/icon_32x32.png diff --git a/indra/newview/icons/release/secondlife.iconset/icon_32x32@2x.png b/indra/newview/icons/release/secondlife.iconset/icon_32x32@2x.png Binary files differnew file mode 100644 index 0000000000..23a36f66cb --- /dev/null +++ b/indra/newview/icons/release/secondlife.iconset/icon_32x32@2x.png diff --git a/indra/newview/icons/release/secondlife.iconset/icon_512x512.png b/indra/newview/icons/release/secondlife.iconset/icon_512x512.png Binary files differnew file mode 100644 index 0000000000..4c28add76c --- /dev/null +++ b/indra/newview/icons/release/secondlife.iconset/icon_512x512.png diff --git a/indra/newview/icons/release/secondlife.iconset/icon_512x512@2x.png b/indra/newview/icons/release/secondlife.iconset/icon_512x512@2x.png Binary files differnew file mode 100644 index 0000000000..a53a6697f1 --- /dev/null +++ b/indra/newview/icons/release/secondlife.iconset/icon_512x512@2x.png diff --git a/indra/newview/icons/release/secondlife_1024.png b/indra/newview/icons/release/secondlife_1024.png Binary files differnew file mode 100644 index 0000000000..a53a6697f1 --- /dev/null +++ b/indra/newview/icons/release/secondlife_1024.png diff --git a/indra/newview/icons/release/secondlife_128.png b/indra/newview/icons/release/secondlife_128.png Binary files differdeleted file mode 100644 index 2f21c1c7fc..0000000000 --- a/indra/newview/icons/release/secondlife_128.png +++ /dev/null diff --git a/indra/newview/icons/release/secondlife_16.png b/indra/newview/icons/release/secondlife_16.png Binary files differdeleted file mode 100644 index 68f1427309..0000000000 --- a/indra/newview/icons/release/secondlife_16.png +++ /dev/null diff --git a/indra/newview/icons/release/secondlife_256.png b/indra/newview/icons/release/secondlife_256.png Binary files differdeleted file mode 100644 index 8f324910e7..0000000000 --- a/indra/newview/icons/release/secondlife_256.png +++ /dev/null diff --git a/indra/newview/icons/release/secondlife_32.png b/indra/newview/icons/release/secondlife_32.png Binary files differdeleted file mode 100644 index 2b7cdef03d..0000000000 --- a/indra/newview/icons/release/secondlife_32.png +++ /dev/null diff --git a/indra/newview/icons/release/secondlife_48.png b/indra/newview/icons/release/secondlife_48.png Binary files differdeleted file mode 100644 index c2ef372dd7..0000000000 --- a/indra/newview/icons/release/secondlife_48.png +++ /dev/null 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 101aca3823..e9d455ae53 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; @@ -4762,6 +4765,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 6c45a32856..bc7dc9506b 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 1c0ad25a9e..7580100977 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -488,7 +488,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(); @@ -4300,7 +4300,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 ; } @@ -4592,6 +4592,7 @@ void LLAppViewer::saveFinalSnapshot() false, gSavedSettings.getBOOL("RenderHUDInSnapshot"), true, + false, LLSnapshotModel::SNAPSHOT_TYPE_COLOR, LLSnapshotModel::SNAPSHOT_FORMAT_PNG); mSavedFinalSnapshot = true; @@ -5306,6 +5307,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/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 35f8340997..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(); } }); @@ -455,9 +452,29 @@ void LLFloaterEnvironmentAdjust::onMoonAzimElevChanged() void LLFloaterEnvironmentAdjust::onCloudMapChanged() { if (!mLiveSky) + { return; - mLiveSky->setCloudNoiseTextureId(getChild<LLTextureCtrl>(FIELD_SKY_CLOUD_MAP)->getValue().asUUID()); - mLiveSky->update(); + } + + LLTextureCtrl* picker_ctrl = getChild<LLTextureCtrl>(FIELD_SKY_CLOUD_MAP); + + LLUUID new_texture_id = picker_ctrl->getValue().asUUID(); + + LLEnvironment::instance().setSelectedEnvironment(LLEnvironment::ENV_LOCAL); + + LLSettingsSky::ptr_t sky_to_set = mLiveSky->buildClone(); + if (!sky_to_set) + { + return; + } + + sky_to_set->setCloudNoiseTextureId(new_texture_id); + + LLEnvironment::instance().setEnvironment(LLEnvironment::ENV_LOCAL, sky_to_set); + + LLEnvironment::instance().updateEnvironment(LLEnvironment::TRANSITION_INSTANT, true); + + picker_ctrl->setValue(new_texture_id); } void LLFloaterEnvironmentAdjust::onWaterMapChanged() 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/llfloaterworldmap.cpp b/indra/newview/llfloaterworldmap.cpp index 30ed723db6..a798ba31ee 100755 --- a/indra/newview/llfloaterworldmap.cpp +++ b/indra/newview/llfloaterworldmap.cpp @@ -486,8 +486,11 @@ void LLFloaterWorldMap::onOpen(const LLSD& key) const LLUUID landmark_folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_LANDMARK); LLInventoryModelBackgroundFetch::instance().start(landmark_folder_id); - mLocationEditor->setFocus( true); - gFocusMgr.triggerFocusFlash(); + if (hasFocus()) + { + mLocationEditor->setFocus( true); + gFocusMgr.triggerFocusFlash(); + } buildAvatarIDList(); buildLandmarkIDLists(); 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/llimprocessing.cpp b/indra/newview/llimprocessing.cpp index 4e8bcc4f7a..4c02511268 100644 --- a/indra/newview/llimprocessing.cpp +++ b/indra/newview/llimprocessing.cpp @@ -422,6 +422,7 @@ void LLIMProcessing::processNewMessage(LLUUID from_id, U8 *binary_bucket, S32 binary_bucket_size, LLHost &sender, + LLSD metadata, LLUUID aux_id) { LLChat chat; @@ -451,6 +452,28 @@ void LLIMProcessing::processNewMessage(LLUUID from_id, bool is_linden = chat.mSourceType != CHAT_SOURCE_OBJECT && LLMuteList::isLinden(name); + /*** + * The simulator may have flagged this sender as a bot, if the viewer would like to display + * the chat text in a different color or font, the below code is how the viewer can + * tell if the sender is a bot. + *----------------------------------------------------- + bool is_bot = false; + if (metadata.has("sender")) + { // The server has identified this sender as a bot. + is_bot = metadata["sender"]["bot"].asBoolean(); + } + *----------------------------------------------------- + */ + + std::string notice_name; + LLSD notice_args; + if (metadata.has("notice")) + { // The server has injected a notice into the IM conversation. + // These will be things like bot notifications, etc. + notice_name = metadata["notice"]["id"].asString(); + notice_args = metadata["notice"]["data"]; + } + chat.mMuted = is_muted; chat.mFromID = from_id; chat.mFromName = name; @@ -544,7 +567,7 @@ void LLIMProcessing::processNewMessage(LLUUID from_id, } else { - // standard message, not from system + // standard message, server may have injected a notice into the conversation. std::string saved; if (offline == IM_OFFLINE) { @@ -579,8 +602,17 @@ void LLIMProcessing::processNewMessage(LLUUID from_id, region_message = true; } } - gIMMgr->addMessage( - session_id, + + std::string real_name; + + if (!notice_name.empty()) + { // The simulator has injected some sort of notice into the conversation. + // findString will only replace the contents of buffer if the notice_id is found. + LLTrans::findString(buffer, notice_name, notice_args); + real_name = SYSTEM_FROM; + } + + gIMMgr->addMessage(session_id, from_id, name, buffer, @@ -591,7 +623,9 @@ void LLIMProcessing::processNewMessage(LLUUID from_id, region_id, position, region_message, - timestamp); + timestamp, + LLUUID::null, + real_name); } else { @@ -1619,6 +1653,12 @@ void LLIMProcessing::requestOfflineMessagesCoro(std::string url) from_group = message_data["from_group"].asString() == "Y"; } + LLSD metadata; + if (message_data.has("metadata")) + { + metadata = message_data["metadata"]; + } + EInstantMessage dialog = static_cast<EInstantMessage>(message_data["dialog"].asInteger()); LLUUID session_id = message_data["transaction-id"].asUUID(); if (session_id.isNull() && dialog == IM_FROM_TASK) @@ -1646,6 +1686,7 @@ void LLIMProcessing::requestOfflineMessagesCoro(std::string url) local_bin_bucket.data(), S32(local_bin_bucket.size()), local_sender, + metadata, message_data["asset_id"].asUUID()); }); diff --git a/indra/newview/llimprocessing.h b/indra/newview/llimprocessing.h index 030d28b198..66ffc59ae0 100644 --- a/indra/newview/llimprocessing.h +++ b/indra/newview/llimprocessing.h @@ -48,6 +48,7 @@ public: U8 *binary_bucket, S32 binary_bucket_size, LLHost &sender, + LLSD metadata, LLUUID aux_id = LLUUID::null); // Either receives list of offline messages from 'ReadOfflineMsgs' capability diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 756f3b33ed..0a941403f2 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); } } } @@ -3144,9 +3155,16 @@ void LLIMMgr::addMessage( const LLUUID& region_id, const LLVector3& position, bool is_region_msg, - U32 timestamp) // May be zero + U32 timestamp, // May be zero + LLUUID display_id, + std::string_view display_name) { LLUUID other_participant_id = target_id; + std::string message_display_name = (display_name.empty()) ? from : std::string(display_name); + if (display_id.isNull() && (display_name.empty())) + { + display_id = other_participant_id; + } LLUUID new_session_id = session_id; if (new_session_id.isNull()) @@ -3243,9 +3261,13 @@ void LLIMMgr::addMessage( } //Play sound for new conversations - if (!skip_message & !gAgent.isDoNotDisturb() && (gSavedSettings.getBOOL("PlaySoundNewConversation"))) + 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 @@ -3257,7 +3279,7 @@ void LLIMMgr::addMessage( if (!LLMuteList::getInstance()->isMuted(other_participant_id, LLMute::flagTextChat) && !skip_message) { - LLIMModel::instance().addMessage(new_session_id, from, other_participant_id, msg, true, is_region_msg, timestamp); + LLIMModel::instance().addMessage(new_session_id, message_display_name, display_id, msg, true, is_region_msg, timestamp); } // Open conversation floater if offline messages are present @@ -3265,7 +3287,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/llimview.h b/indra/newview/llimview.h index 61776860e3..23f90ca795 100644 --- a/indra/newview/llimview.h +++ b/indra/newview/llimview.h @@ -368,7 +368,9 @@ public: const LLUUID& region_id = LLUUID::null, const LLVector3& position = LLVector3::zero, bool is_region_msg = false, - U32 timestamp = 0); + U32 timestamp = 0, + LLUUID display_id = LLUUID::null, + std::string_view display_name = ""); void addSystemMessage(const LLUUID& session_id, const std::string& message_name, const LLSD& args); diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index 15190854a2..25025038d2 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); @@ -2665,6 +2664,7 @@ bool LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat, // bool is_movable = true; + bool create_outfit = false; if (is_movable && (marketplacelistings_id == cat_id)) { @@ -2697,14 +2697,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; } @@ -2714,13 +2724,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) @@ -2912,9 +2953,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 && @@ -3996,7 +4109,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()) @@ -4006,24 +4118,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"); } @@ -4066,7 +4211,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) { @@ -4256,6 +4401,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")); } @@ -4349,63 +4495,83 @@ 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 (!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_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); - } - else + + if (cat) { - // Want some but not all of the items from getClipboardEntries for outfits. - if (cat && (cat->getPreferredType() == LLFolderType::FT_OUTFIT)) + if (cat->getPreferredType() == LLFolderType::FT_OUTFIT) { + // 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(); + const LLViewerInventoryItem* base_outfit_link = LLAppearanceMgr::instance().getBaseOutfitLink(); if (base_outfit_link && (cat == base_outfit_link->getLinkedCategory())) { disabled_items.push_back(std::string("Delete")); } } + 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) + { + if (in_my_outfits == MY_OUTFITS_SUBFOLDER) + { + // Not inside an outfit, but inside 'my outfits' + items.push_back(std::string("New Outfit")); + items.push_back(std::string("New Outfit Folder")); + } + items.push_back(std::string("Rename")); + items.push_back(std::string("thumbnail")); + + addDeleteContextMenuOptions(items, disabled_items); + } + else + { + 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_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); + } + } } if (model->findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT) == mUUID) @@ -4560,7 +4726,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 @@ -5333,13 +5503,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, @@ -5513,7 +5693,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 3e7f74384b..b7bdef9b21 100644 --- a/indra/newview/llinventorybridge.h +++ b/indra/newview/llinventorybridge.h @@ -369,6 +369,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 1ccefa3212..1077ce74ae 100644 --- a/indra/newview/llinventoryfunctions.cpp +++ b/indra/newview/llinventoryfunctions.cpp @@ -438,7 +438,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, @@ -460,6 +466,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 @@ -2314,7 +2339,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; @@ -2353,6 +2378,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; @@ -2493,6 +2563,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 ///---------------------------------------------------------------------------- @@ -2621,6 +2725,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 13a64f21dc..b23f82a189 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); @@ -121,6 +123,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 ** ** *******************************************************************************/ @@ -234,6 +248,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 c4f93cee98..43d4edb069 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 { @@ -3712,6 +3714,7 @@ bool dragCategoryIntoFolder(LLUUID dest_id, LLInventoryCategory* inv_cat, // bool is_movable = true; + bool create_outfit = false; if (is_movable && (marketplacelistings_id == cat_id)) { @@ -3745,14 +3748,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; } @@ -3762,13 +3775,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) @@ -3894,9 +3938,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 && @@ -4041,3 +4149,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 0c35a7f695..3fede1a001 100644 --- a/indra/newview/llinventorygallerymenu.cpp +++ b/indra/newview/llinventorygallerymenu.cpp @@ -607,7 +607,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)); @@ -746,7 +748,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,15 +794,26 @@ 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")); + } } 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/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp index b6ff31a7ed..c9e9d50e19 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 @@ -2767,6 +2768,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 @@ -3525,7 +3527,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/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 a8c6f69425..e7e95034b2 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); @@ -1210,6 +1270,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) @@ -1493,6 +1559,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 @@ -1798,42 +1869,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; } @@ -1993,6 +2058,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; @@ -2210,7 +2280,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 } } @@ -3792,6 +3862,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; @@ -3905,6 +3980,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; @@ -4127,8 +4207,7 @@ void LLMeshRepository::shutdown() mUploads[i]->discard() ; //discard the uploading requests. } - mThread->mSignal->broadcast(); - mThread->mMeshThreadPool->close(); + mThread->cleanup(); while (!mThread->isStopped()) { @@ -4193,13 +4272,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); } } @@ -4222,16 +4301,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++; } } @@ -4290,50 +4370,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); @@ -4470,13 +4506,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; @@ -4523,61 +4566,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: @@ -4632,7 +4639,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) { @@ -4648,7 +4655,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) { @@ -4712,7 +4719,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) { @@ -4742,7 +4749,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) { @@ -4785,16 +4792,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); } } } @@ -5968,13 +5976,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 0d9da32e27..0847c29d0d 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; }; @@ -811,7 +864,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; @@ -822,11 +875,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 64ea1710f5..c73282dad3 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 b1d5cd9e16..98b7d74cd2 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), @@ -730,12 +729,6 @@ LLOutfitGallery::~LLOutfitGallery() { delete mOutfitGalleryMenu; - if (gInventory.containsObserver(mOutfitsObserver)) - { - gInventory.removeObserver(mOutfitsObserver); - } - delete mOutfitsObserver; - while (!mUnusedRowPanels.empty()) { LLPanel* panelp = mUnusedRowPanels.back(); @@ -793,6 +786,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; + } + std::string name = cat->getName(); LLOutfitGalleryItem* item = buildGalleryItem(name, cat_id); mOutfitMap.insert(LLOutfitGallery::outfit_map_value_t(cat_id, item)); @@ -809,14 +813,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(); @@ -829,7 +827,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/lloutfitgallery.h b/indra/newview/lloutfitgallery.h index 541ea2f9d4..a2a5fe26eb 100644 --- a/indra/newview/lloutfitgallery.h +++ b/indra/newview/lloutfitgallery.h @@ -184,9 +184,6 @@ private: typedef item_num_map_t::value_type item_numb_map_value_t; item_num_map_t mItemIndexMap; std::map<S32, LLOutfitGalleryItem*> mIndexToItemMap; - - - LLInventoryCategoriesObserver* mOutfitsObserver; }; class LLOutfitGalleryContextMenu : public LLOutfitContextMenu { diff --git a/indra/newview/lloutfitslist.cpp b/indra/newview/lloutfitslist.cpp index 6e666b8a4b..df53c66ec1 100644 --- a/indra/newview/lloutfitslist.cpp +++ b/indra/newview/lloutfitslist.cpp @@ -142,6 +142,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()); @@ -819,6 +830,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) { bool wasNull = mRefreshListState.CategoryUUID.isNull(); @@ -1352,7 +1396,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 f581b419d9..fad0e638fb 100644 --- a/indra/newview/lloutfitslist.h +++ b/indra/newview/lloutfitslist.h @@ -118,6 +118,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 4ada9c445c..5b059516cd 100644 --- a/indra/newview/llpanelface.cpp +++ b/indra/newview/llpanelface.cpp @@ -1106,6 +1106,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()); @@ -1188,65 +1245,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) @@ -3644,7 +3647,7 @@ void LLPanelFace::onCommitRepeatsPerMeter() bool identical_scale_t = false; LLSelectedTE::getObjectScaleS(obj_scale_s, identical_scale_s); - LLSelectedTE::getObjectScaleS(obj_scale_t, identical_scale_t); + LLSelectedTE::getObjectScaleT(obj_scale_t, identical_scale_t); if (gSavedSettings.getBOOL("SyncMaterialSettings")) { @@ -4009,6 +4012,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(); @@ -4046,6 +4128,7 @@ void LLPanelFace::onCopyTexture() if (tep) { LLSD te_data; + LLUUID pbr_id = objectp->getRenderMaterialID(te); // asLLSD() includes media te_data["te"] = tep->asLLSD(); @@ -4054,21 +4137,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()) { @@ -4078,66 +4160,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); } } } @@ -4201,6 +4248,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")) @@ -4265,39 +4350,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; + } + } + } + } } } } @@ -4322,6 +4417,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; @@ -4345,77 +4505,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); } @@ -4423,15 +4528,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); @@ -4459,17 +4564,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) { - LLGLTFMaterialList::queueApply(objectp, te, te_data["te"]["pbr"].asUUID()); + 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) + { + 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 @@ -5151,6 +5304,7 @@ void LLPanelFace::LLSelectedTEMaterial::getMaxSpecularRepeats(F32& repeats, bool LLMaterial* mat = object->getTE(face)->getMaterialParams().get(); U32 s_axis = VX; U32 t_axis = VY; + LLPrimitive::getTESTAxes(face, &s_axis, &t_axis); F32 repeats_s = 1.0f; F32 repeats_t = 1.0f; if (mat) @@ -5175,6 +5329,7 @@ void LLPanelFace::LLSelectedTEMaterial::getMaxNormalRepeats(F32& repeats, bool& LLMaterial* mat = object->getTE(face)->getMaterialParams().get(); U32 s_axis = VX; U32 t_axis = VY; + LLPrimitive::getTESTAxes(face, &s_axis, &t_axis); F32 repeats_s = 1.0f; F32 repeats_t = 1.0f; if (mat) 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/llpanelprimmediacontrols.cpp b/indra/newview/llpanelprimmediacontrols.cpp index 7b562337a3..b1c8b5f36a 100644 --- a/indra/newview/llpanelprimmediacontrols.cpp +++ b/indra/newview/llpanelprimmediacontrols.cpp @@ -777,7 +777,7 @@ void LLPanelPrimMediaControls::draw() else if(mFadeTimer.getStarted()) { F32 time = mFadeTimer.getElapsedTimeF32(); - alpha *= llmax(lerp(1.0f, 0.0f, time / mControlFadeTime), 0.0f); + alpha *= llmax(lerp(1.f, 0.f, time / mControlFadeTime), 0.0f); if(time >= mControlFadeTime) { diff --git a/indra/newview/llpanelprofile.cpp b/indra/newview/llpanelprofile.cpp index 132098ba99..1fa1c9587f 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/llpanelprofileclassifieds.h b/indra/newview/llpanelprofileclassifieds.h index 42cd5f8975..2e6b7c4428 100644 --- a/indra/newview/llpanelprofileclassifieds.h +++ b/indra/newview/llpanelprofileclassifieds.h @@ -157,17 +157,17 @@ public: void setParcelId(const LLUUID& id) { mParcelId = id; } - LLUUID getParcelId() { return mParcelId; } + LLUUID getParcelId() const { return mParcelId; } void setSimName(const std::string& sim_name) { mSimName = sim_name; } - std::string getSimName() { return mSimName; } + std::string getSimName() const { return mSimName; } void setFromSearch(bool val) { mFromSearch = val; } - bool fromSearch() { return mFromSearch; } + bool fromSearch() const { return mFromSearch; } - bool getInfoLoaded() { return mInfoLoaded; } + bool getInfoLoaded() const { return mInfoLoaded; } void setInfoLoaded(bool loaded) { mInfoLoaded = loaded; } @@ -175,9 +175,9 @@ public: void resetDirty() override; - bool isNew() { return mIsNew; } + bool isNew() const { return mIsNew; } - bool isNewWithErrors() { return mIsNewWithErrors; } + bool isNewWithErrors() const { return mIsNewWithErrors; } bool canClose(); @@ -191,10 +191,10 @@ public: bool getAutoRenew(); - S32 getPriceForListing() { return mPriceForListing; } + S32 getPriceForListing() const { return mPriceForListing; } void setEditMode(bool edit_mode); - bool getEditMode() {return mEditMode;} + bool getEditMode() const { return mEditMode; } static void setClickThrough( const LLUUID& classified_id, diff --git a/indra/newview/llpanelsnapshot.cpp b/indra/newview/llpanelsnapshot.cpp index 32c9f6f402..56c0294dbe 100644 --- a/indra/newview/llpanelsnapshot.cpp +++ b/indra/newview/llpanelsnapshot.cpp @@ -37,6 +37,7 @@ // newview #include "llsidetraypanelcontainer.h" +#include "llsnapshotlivepreview.h" #include "llviewercontrol.h" // gSavedSettings #include "llagentbenefits.h" @@ -99,6 +100,17 @@ void LLPanelSnapshot::onOpen(const LLSD& key) { getParentByType<LLFloater>()->notify(LLSD().with("image-format-change", true)); } + + // If resolution is set to "Current Window", force a snapshot update + // each time a snapshot panel is opened to determine the correct + // image size (and upload fee) depending on the snapshot type. + if (mSnapshotFloater && getChild<LLUICtrl>(getImageSizeComboName())->getValue().asString() == "[i0,i0]") + { + if (LLSnapshotLivePreview* preview = mSnapshotFloater->getPreviewView()) + { + preview->mForceUpdateSnapshot = true; + } + } } LLSnapshotModel::ESnapshotFormat LLPanelSnapshot::getImageFormat() const diff --git a/indra/newview/llpanelsnapshotinventory.cpp b/indra/newview/llpanelsnapshotinventory.cpp index 96b17acc40..b81b891685 100644 --- a/indra/newview/llpanelsnapshotinventory.cpp +++ b/indra/newview/llpanelsnapshotinventory.cpp @@ -42,77 +42,35 @@ /** * The panel provides UI for saving snapshot as an inventory texture. */ -class LLPanelSnapshotInventoryBase - : public LLPanelSnapshot -{ - LOG_CLASS(LLPanelSnapshotInventoryBase); - -public: - LLPanelSnapshotInventoryBase(); - - /*virtual*/ bool postBuild(); -protected: - void onSend(); - /*virtual*/ LLSnapshotModel::ESnapshotType getSnapshotType(); -}; - class LLPanelSnapshotInventory - : public LLPanelSnapshotInventoryBase + : public LLPanelSnapshot { LOG_CLASS(LLPanelSnapshotInventory); public: LLPanelSnapshotInventory(); - /*virtual*/ bool postBuild(); - /*virtual*/ void onOpen(const LLSD& key); + bool postBuild() override; + void onOpen(const LLSD& key) override; void onResolutionCommit(LLUICtrl* ctrl); private: - /*virtual*/ std::string getWidthSpinnerName() const { return "inventory_snapshot_width"; } - /*virtual*/ std::string getHeightSpinnerName() const { return "inventory_snapshot_height"; } - /*virtual*/ std::string getAspectRatioCBName() const { return "inventory_keep_aspect_check"; } - /*virtual*/ std::string getImageSizeComboName() const { return "texture_size_combo"; } - /*virtual*/ std::string getImageSizePanelName() const { return LLStringUtil::null; } - /*virtual*/ void updateControls(const LLSD& info); - -}; - -class LLPanelOutfitSnapshotInventory - : public LLPanelSnapshotInventoryBase -{ - LOG_CLASS(LLPanelOutfitSnapshotInventory); - -public: - LLPanelOutfitSnapshotInventory(); - /*virtual*/ bool postBuild(); - /*virtual*/ void onOpen(const LLSD& key); + std::string getWidthSpinnerName() const override { return "inventory_snapshot_width"; } + std::string getHeightSpinnerName() const override { return "inventory_snapshot_height"; } + std::string getAspectRatioCBName() const override { return "inventory_keep_aspect_check"; } + std::string getImageSizeComboName() const override { return "texture_size_combo"; } + std::string getImageSizePanelName() const override { return LLStringUtil::null; } + LLSnapshotModel::ESnapshotType getSnapshotType() override; + void updateControls(const LLSD& info) override; -private: - /*virtual*/ std::string getWidthSpinnerName() const { return ""; } - /*virtual*/ std::string getHeightSpinnerName() const { return ""; } - /*virtual*/ std::string getAspectRatioCBName() const { return ""; } - /*virtual*/ std::string getImageSizeComboName() const { return "texture_size_combo"; } - /*virtual*/ std::string getImageSizePanelName() const { return LLStringUtil::null; } - /*virtual*/ void updateControls(const LLSD& info); - - /*virtual*/ void cancel(); + void onSend(); + void updateUploadCost(); + S32 calculateUploadCost(); }; static LLPanelInjector<LLPanelSnapshotInventory> panel_class1("llpanelsnapshotinventory"); -static LLPanelInjector<LLPanelOutfitSnapshotInventory> panel_class2("llpaneloutfitsnapshotinventory"); - -LLPanelSnapshotInventoryBase::LLPanelSnapshotInventoryBase() -{ -} - -bool LLPanelSnapshotInventoryBase::postBuild() -{ - return LLPanelSnapshot::postBuild(); -} - -LLSnapshotModel::ESnapshotType LLPanelSnapshotInventoryBase::getSnapshotType() +LLSnapshotModel::ESnapshotType LLPanelSnapshotInventory::getSnapshotType() { return LLSnapshotModel::SNAPSHOT_TEXTURE; } @@ -130,12 +88,14 @@ bool LLPanelSnapshotInventory::postBuild() getChild<LLSpinCtrl>(getHeightSpinnerName())->setAllowEdit(false); getChild<LLUICtrl>(getImageSizeComboName())->setCommitCallback(boost::bind(&LLPanelSnapshotInventory::onResolutionCommit, this, _1)); - return LLPanelSnapshotInventoryBase::postBuild(); + return LLPanelSnapshot::postBuild(); } // virtual void LLPanelSnapshotInventory::onOpen(const LLSD& key) { + updateUploadCost(); + LLPanelSnapshot::onOpen(key); } @@ -144,6 +104,8 @@ void LLPanelSnapshotInventory::updateControls(const LLSD& info) { const bool have_snapshot = info.has("have-snapshot") ? info["have-snapshot"].asBoolean() : true; getChild<LLUICtrl>("save_btn")->setEnabled(have_snapshot); + + updateUploadCost(); } void LLPanelSnapshotInventory::onResolutionCommit(LLUICtrl* ctrl) @@ -153,21 +115,9 @@ void LLPanelSnapshotInventory::onResolutionCommit(LLUICtrl* ctrl) getChild<LLSpinCtrl>(getHeightSpinnerName())->setVisible(!current_window_selected); } -void LLPanelSnapshotInventoryBase::onSend() +void LLPanelSnapshotInventory::onSend() { - S32 w = 0; - S32 h = 0; - - if( mSnapshotFloater ) - { - LLSnapshotLivePreview* preview = mSnapshotFloater->getPreviewView(); - if( preview ) - { - preview->getSize(w, h); - } - } - - S32 expected_upload_cost = LLAgentBenefitsMgr::current().getTextureUploadCost(w, h); + S32 expected_upload_cost = calculateUploadCost(); if (can_afford_transaction(expected_upload_cost)) { if (mSnapshotFloater) @@ -188,36 +138,24 @@ void LLPanelSnapshotInventoryBase::onSend() } } -LLPanelOutfitSnapshotInventory::LLPanelOutfitSnapshotInventory() +void LLPanelSnapshotInventory::updateUploadCost() { - mCommitCallbackRegistrar.add("Inventory.SaveOutfitPhoto", boost::bind(&LLPanelOutfitSnapshotInventory::onSend, this)); - mCommitCallbackRegistrar.add("Inventory.SaveOutfitCancel", boost::bind(&LLPanelOutfitSnapshotInventory::cancel, this)); + getChild<LLUICtrl>("hint_lbl")->setTextArg("[UPLOAD_COST]", llformat("%d", calculateUploadCost())); } -// virtual -bool LLPanelOutfitSnapshotInventory::postBuild() +S32 LLPanelSnapshotInventory::calculateUploadCost() { - return LLPanelSnapshotInventoryBase::postBuild(); -} - -// virtual -void LLPanelOutfitSnapshotInventory::onOpen(const LLSD& key) -{ - getChild<LLUICtrl>("hint_lbl")->setTextArg("[UPLOAD_COST]", llformat("%d", LLAgentBenefitsMgr::current().getTextureUploadCost())); - LLPanelSnapshot::onOpen(key); -} - -// virtual -void LLPanelOutfitSnapshotInventory::updateControls(const LLSD& info) -{ - const bool have_snapshot = info.has("have-snapshot") ? info["have-snapshot"].asBoolean() : true; - getChild<LLUICtrl>("save_btn")->setEnabled(have_snapshot); -} + S32 w = 0; + S32 h = 0; -void LLPanelOutfitSnapshotInventory::cancel() -{ if (mSnapshotFloater) { - mSnapshotFloater->closeFloater(); + if (LLSnapshotLivePreview* preview = mSnapshotFloater->getPreviewView()) + { + w = preview->getEncodedImageWidth(); + h = preview->getEncodedImageHeight(); + } } + + return LLAgentBenefitsMgr::current().getTextureUploadCost(w, h); } diff --git a/indra/newview/llpanelsnapshotlocal.cpp b/indra/newview/llpanelsnapshotlocal.cpp index 366030c0fa..57759fbcaa 100644 --- a/indra/newview/llpanelsnapshotlocal.cpp +++ b/indra/newview/llpanelsnapshotlocal.cpp @@ -47,18 +47,18 @@ class LLPanelSnapshotLocal public: LLPanelSnapshotLocal(); - /*virtual*/ bool postBuild(); - /*virtual*/ void onOpen(const LLSD& key); + bool postBuild() override; + void onOpen(const LLSD& key) override; private: - /*virtual*/ std::string getWidthSpinnerName() const { return "local_snapshot_width"; } - /*virtual*/ std::string getHeightSpinnerName() const { return "local_snapshot_height"; } - /*virtual*/ std::string getAspectRatioCBName() const { return "local_keep_aspect_check"; } - /*virtual*/ std::string getImageSizeComboName() const { return "local_size_combo"; } - /*virtual*/ std::string getImageSizePanelName() const { return "local_image_size_lp"; } - /*virtual*/ LLSnapshotModel::ESnapshotFormat getImageFormat() const; - /*virtual*/ LLSnapshotModel::ESnapshotType getSnapshotType(); - /*virtual*/ void updateControls(const LLSD& info); + std::string getWidthSpinnerName() const override { return "local_snapshot_width"; } + std::string getHeightSpinnerName() const override { return "local_snapshot_height"; } + std::string getAspectRatioCBName() const override { return "local_keep_aspect_check"; } + std::string getImageSizeComboName() const override { return "local_size_combo"; } + std::string getImageSizePanelName() const override { return "local_image_size_lp"; } + LLSnapshotModel::ESnapshotFormat getImageFormat() const override; + LLSnapshotModel::ESnapshotType getSnapshotType() override; + void updateControls(const LLSD& info) override; S32 mLocalFormat; diff --git a/indra/newview/llpanelsnapshotoptions.cpp b/indra/newview/llpanelsnapshotoptions.cpp index 962d3bba16..05cd9e7b3a 100644 --- a/indra/newview/llpanelsnapshotoptions.cpp +++ b/indra/newview/llpanelsnapshotoptions.cpp @@ -30,12 +30,8 @@ #include "llsidetraypanelcontainer.h" #include "llfloatersnapshot.h" // FIXME: create a snapshot model -#include "llsnapshotlivepreview.h" #include "llfloaterreg.h" -#include "llagentbenefits.h" - - /** * Provides several ways to save a snapshot. */ @@ -46,12 +42,9 @@ class LLPanelSnapshotOptions public: LLPanelSnapshotOptions(); - ~LLPanelSnapshotOptions(); - /*virtual*/ bool postBuild(); - /*virtual*/ void onOpen(const LLSD& key); + bool postBuild() override; private: - void updateUploadCost(); void openPanel(const std::string& panel_name); void onSaveToProfile(); void onSaveToEmail(); @@ -71,10 +64,6 @@ LLPanelSnapshotOptions::LLPanelSnapshotOptions() mCommitCallbackRegistrar.add("Snapshot.SaveToComputer", boost::bind(&LLPanelSnapshotOptions::onSaveToComputer, this)); } -LLPanelSnapshotOptions::~LLPanelSnapshotOptions() -{ -} - // virtual bool LLPanelSnapshotOptions::postBuild() { @@ -82,30 +71,6 @@ bool LLPanelSnapshotOptions::postBuild() return LLPanel::postBuild(); } -// virtual -void LLPanelSnapshotOptions::onOpen(const LLSD& key) -{ - updateUploadCost(); -} - -void LLPanelSnapshotOptions::updateUploadCost() -{ - S32 w = 0; - S32 h = 0; - - if( mSnapshotFloater ) - { - LLSnapshotLivePreview* preview = mSnapshotFloater->getPreviewView(); - if( preview ) - { - preview->getSize(w, h); - } - } - - S32 upload_cost = LLAgentBenefitsMgr::current().getTextureUploadCost(w, h); - getChild<LLUICtrl>("save_to_inventory_btn")->setLabelArg("[AMOUNT]", llformat("%d", upload_cost)); -} - void LLPanelSnapshotOptions::openPanel(const std::string& panel_name) { LLSideTrayPanelContainer* parent = dynamic_cast<LLSideTrayPanelContainer*>(getParent()); diff --git a/indra/newview/llpanelsnapshotpostcard.cpp b/indra/newview/llpanelsnapshotpostcard.cpp index 23e8789e3f..f3dfdc9250 100644 --- a/indra/newview/llpanelsnapshotpostcard.cpp +++ b/indra/newview/llpanelsnapshotpostcard.cpp @@ -56,18 +56,18 @@ class LLPanelSnapshotPostcard public: LLPanelSnapshotPostcard(); - /*virtual*/ bool postBuild(); - /*virtual*/ void onOpen(const LLSD& key); + bool postBuild() override; + void onOpen(const LLSD& key) override; private: - /*virtual*/ std::string getWidthSpinnerName() const { return "postcard_snapshot_width"; } - /*virtual*/ std::string getHeightSpinnerName() const { return "postcard_snapshot_height"; } - /*virtual*/ std::string getAspectRatioCBName() const { return "postcard_keep_aspect_check"; } - /*virtual*/ std::string getImageSizeComboName() const { return "postcard_size_combo"; } - /*virtual*/ std::string getImageSizePanelName() const { return "postcard_image_size_lp"; } - /*virtual*/ LLSnapshotModel::ESnapshotFormat getImageFormat() const { return LLSnapshotModel::SNAPSHOT_FORMAT_JPEG; } - /*virtual*/ LLSnapshotModel::ESnapshotType getSnapshotType(); - /*virtual*/ void updateControls(const LLSD& info); + std::string getWidthSpinnerName() const override { return "postcard_snapshot_width"; } + std::string getHeightSpinnerName() const override { return "postcard_snapshot_height"; } + std::string getAspectRatioCBName() const override { return "postcard_keep_aspect_check"; } + std::string getImageSizeComboName() const override { return "postcard_size_combo"; } + std::string getImageSizePanelName() const override { return "postcard_image_size_lp"; } + LLSnapshotModel::ESnapshotFormat getImageFormat() const override { return LLSnapshotModel::SNAPSHOT_FORMAT_JPEG; } + LLSnapshotModel::ESnapshotType getSnapshotType() override; + void updateControls(const LLSD& info) override; bool missingSubjMsgAlertCallback(const LLSD& notification, const LLSD& response); static void sendPostcardFinished(LLSD result); diff --git a/indra/newview/llpanelsnapshotprofile.cpp b/indra/newview/llpanelsnapshotprofile.cpp index aa257dea9e..b533d7bbbc 100644 --- a/indra/newview/llpanelsnapshotprofile.cpp +++ b/indra/newview/llpanelsnapshotprofile.cpp @@ -49,17 +49,17 @@ class LLPanelSnapshotProfile public: LLPanelSnapshotProfile(); - /*virtual*/ bool postBuild(); - /*virtual*/ void onOpen(const LLSD& key); + bool postBuild() override; + void onOpen(const LLSD& key) override; private: - /*virtual*/ std::string getWidthSpinnerName() const { return "profile_snapshot_width"; } - /*virtual*/ std::string getHeightSpinnerName() const { return "profile_snapshot_height"; } - /*virtual*/ std::string getAspectRatioCBName() const { return "profile_keep_aspect_check"; } - /*virtual*/ std::string getImageSizeComboName() const { return "profile_size_combo"; } - /*virtual*/ std::string getImageSizePanelName() const { return "profile_image_size_lp"; } - /*virtual*/ LLSnapshotModel::ESnapshotFormat getImageFormat() const { return LLSnapshotModel::SNAPSHOT_FORMAT_PNG; } - /*virtual*/ void updateControls(const LLSD& info); + std::string getWidthSpinnerName() const override { return "profile_snapshot_width"; } + std::string getHeightSpinnerName() const override { return "profile_snapshot_height"; } + std::string getAspectRatioCBName() const override { return "profile_keep_aspect_check"; } + std::string getImageSizeComboName() const override { return "profile_size_combo"; } + std::string getImageSizePanelName() const override { return "profile_image_size_lp"; } + LLSnapshotModel::ESnapshotFormat getImageFormat() const override { return LLSnapshotModel::SNAPSHOT_FORMAT_PNG; } + void updateControls(const LLSD& info) override; void onSend(); }; 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/llphysicsmotion.cpp b/indra/newview/llphysicsmotion.cpp index 86291708b0..e5c84728fe 100644 --- a/indra/newview/llphysicsmotion.cpp +++ b/indra/newview/llphysicsmotion.cpp @@ -646,18 +646,17 @@ bool LLPhysicsMotion::onUpdate(F32 time) velocity_new_local = 0; } - // Check for NaN values. A NaN value is detected if the variables doesn't equal itself. - // If NaN, then reset everything. - if ((mPosition_local != mPosition_local) || - (mVelocity_local != mVelocity_local) || - (position_new_local != position_new_local)) + // Check for NaN values. If NaN, then reset everything. + if (llisnan(mPosition_local) || + llisnan(mVelocity_local) || + llisnan(position_new_local)) { - position_new_local = 0; - mVelocity_local = 0; - mVelocityJoint_local = 0; - mAccelerationJoint_local = 0; - mPosition_local = 0; - mPosition_world = LLVector3(0,0,0); + position_new_local = 0.f; + mVelocity_local = 0.f; + mVelocityJoint_local = 0.f; + mAccelerationJoint_local = 0.f; + mPosition_local = 0.f; + mPosition_world = LLVector3(0.f,0.f,0.f); } const F32 position_new_local_clamped = llclamp(position_new_local, diff --git a/indra/newview/llpreviewscript.cpp b/indra/newview/llpreviewscript.cpp index 02a4c7fb26..c2aa4925bd 100644 --- a/indra/newview/llpreviewscript.cpp +++ b/indra/newview/llpreviewscript.cpp @@ -703,9 +703,10 @@ void LLScriptEdCore::sync() } } -bool LLScriptEdCore::hasChanged() +bool LLScriptEdCore::hasChanged() const { - if (!mEditor) return false; + if (!mEditor) + return false; return ((!mEditor->isPristine() || mEnableSave) && mHasScriptData); } diff --git a/indra/newview/llpreviewscript.h b/indra/newview/llpreviewscript.h index 70ee1a4274..0bbe540207 100644 --- a/indra/newview/llpreviewscript.h +++ b/indra/newview/llpreviewscript.h @@ -143,7 +143,7 @@ public: void setItemRemoved(bool script_removed){mScriptRemoved = script_removed;}; void setAssetID( const LLUUID& asset_id){ mAssetID = asset_id; }; - LLUUID getAssetID() { return mAssetID; } + LLUUID getAssetID() const { return mAssetID; } bool isFontSizeChecked(const LLSD &userdata); void onChangeFontSize(const LLSD &size_name); @@ -155,7 +155,7 @@ public: void onBtnDynamicHelp(); void onBtnUndoChanges(); - bool hasChanged(); + bool hasChanged() const; void selectFirstError(); @@ -211,7 +211,6 @@ class LLScriptEdContainer : public LLPreview public: LLScriptEdContainer(const LLSD& key); - LLScriptEdContainer(const LLSD& key, const bool live); bool handleKeyHere(KEY key, MASK mask); diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp index 1876cd3086..8286054787 100644 --- a/indra/newview/llselectmgr.cpp +++ b/indra/newview/llselectmgr.cpp @@ -3139,22 +3139,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(); @@ -6909,10 +6933,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++) @@ -6949,6 +6974,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) @@ -6956,12 +6983,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) @@ -6977,6 +7008,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 0dbdc133e3..792a37297f 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 ea95d71b27..68b4ab381a 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 29ae386618..858c7b6656 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -3604,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); @@ -3922,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 35057a910a..20127f5f27 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; } diff --git a/indra/newview/lltooldraganddrop.cpp b/indra/newview/lltooldraganddrop.cpp index 9d6f44c096..ff4fcc2b0b 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 6cf99b68b2..9949bae8ac 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()); + }); + } } void LLViewerCamera::updateCameraLocation(const LLVector3 ¢er, const LLVector3 &up_direction, const LLVector3 &point_of_interest) @@ -816,8 +818,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 a204b85d88..91d26f09f2 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/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 caaf3e8fd8..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" @@ -357,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>); diff --git a/indra/newview/llviewermenufile.cpp b/indra/newview/llviewermenufile.cpp index ce66dbc03f..9743ec0c59 100644 --- a/indra/newview/llviewermenufile.cpp +++ b/indra/newview/llviewermenufile.cpp @@ -932,6 +932,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) @@ -952,6 +953,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 4cd2622460..b35be7d385 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -2139,6 +2139,21 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) EInstantMessage dialog = (EInstantMessage)d; LLHost sender = msg->getSender(); + LLSD metadata; + if (msg->getNumberOfBlocksFast(_PREHASH_MetaData) > 0) + { + S32 metadata_size = msg->getSizeFast(_PREHASH_MetaData, 0, _PREHASH_Data); + std::string metadata_buffer; + metadata_buffer.resize(metadata_size, 0); + + msg->getBinaryDataFast(_PREHASH_MetaData, _PREHASH_Data, &metadata_buffer[0], metadata_size, 0, metadata_size ); + std::stringstream metadata_stream(metadata_buffer); + if (LLSDSerialize::fromBinary(metadata, metadata_stream, metadata_size) == LLSDParser::PARSE_FAILURE) + { + metadata.clear(); + } + } + LLIMProcessing::processNewMessage(from_id, from_group, to_id, @@ -2153,7 +2168,8 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) position, binary_bucket, binary_bucket_size, - sender); + sender, + metadata); } void send_do_not_disturb_message (LLMessageSystem* msg, const LLUUID& from_id, const LLUUID& session_id) @@ -2587,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); } @@ -5059,6 +5077,7 @@ bool attempt_standard_notification(LLMessageSystem* msgsystem) false, //UI gSavedSettings.getBOOL("RenderHUDInSnapshot"), false, + false, LLSnapshotModel::SNAPSHOT_TYPE_COLOR, LLSnapshotModel::SNAPSHOT_FORMAT_PNG); } @@ -5164,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); } @@ -6661,7 +6681,6 @@ void process_initiate_download(LLMessageSystem* msg, void**) (void**)new std::string(viewer_filename)); } - void process_script_teleport_request(LLMessageSystem* msg, void**) { if (!gSavedSettings.getBOOL("ScriptsCanShowUI")) return; @@ -6675,6 +6694,11 @@ void process_script_teleport_request(LLMessageSystem* msg, void**) msg->getString("Data", "SimName", sim_name); msg->getVector3("Data", "SimPosition", pos); msg->getVector3("Data", "LookAt", look_at); + U32 flags = (BEACON_SHOW_MAP | BEACON_FOCUS_MAP); + if (msg->has("Options")) + { + msg->getU32("Options", "Flags", flags); + } LLFloaterWorldMap* instance = LLFloaterWorldMap::getInstance(); if(instance) @@ -6685,7 +6709,13 @@ void process_script_teleport_request(LLMessageSystem* msg, void**) << LL_ENDL; instance->trackURL(sim_name, (S32)pos.mV[VX], (S32)pos.mV[VY], (S32)pos.mV[VZ]); - LLFloaterReg::showInstance("world_map", "center"); + if (flags & BEACON_SHOW_MAP) + { + bool old_auto_focus = instance->getAutoFocus(); + instance->setAutoFocus(flags & BEACON_FOCUS_MAP); + instance->openFloater("center"); + instance->setAutoFocus(old_auto_focus); + } } // remove above two lines and replace with below line diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index c5e81dd179..8d90187e91 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -2325,6 +2325,12 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys, // Set the rotation of the object followed by adjusting for the accumulated angular velocity (llSetTargetOmega) setRotation(new_rot * mAngularVelocityRot); + if ((mFlags & FLAGS_SERVER_AUTOPILOT) && asAvatar() && asAvatar()->isSelf()) + { + gAgent.resetAxes(); + gAgent.rotate(new_rot); + gAgentCamera.resetView(); + } setChanged(ROTATED | SILHOUETTE); } diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp index 8e6657b4b9..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" @@ -1327,12 +1328,12 @@ const S32 LLViewerParcelMgr::getAgentParcelId() const return INVALID_PARCEL_ID; } -void LLViewerParcelMgr::sendParcelPropertiesUpdate(LLParcel* parcel, bool use_agent_region) +void LLViewerParcelMgr::sendParcelPropertiesUpdate(LLParcel* parcel) { if(!parcel) return; - LLViewerRegion *region = use_agent_region ? gAgent.getRegion() : LLWorld::getInstance()->getRegionFromPosGlobal( mWestSouth ); + LLViewerRegion *region = LLWorld::getInstance()->getRegionFromID(parcel->getRegionID()); if (!region) return; @@ -1676,10 +1677,16 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use // Actually extract the data. if (parcel) { + // store region_id in the parcel so we can find it again later + LLViewerRegion* parcel_region = LLWorld::getInstance()->getRegion(msg->getSender()); + if (parcel_region) + { + parcel->setRegionID(parcel_region->getRegionID()); + } + if (local_id == parcel_mgr.mAgentParcel->getLocalID()) { // Parcels in different regions can have same ids. - LLViewerRegion* parcel_region = LLWorld::getInstance()->getRegion(msg->getSender()); LLViewerRegion* agent_region = gAgent.getRegion(); if (parcel_region && agent_region && parcel_region->getRegionID() == agent_region->getRegionID()) { @@ -1750,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; @@ -2719,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 { @@ -2727,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() @@ -2740,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 974ea39359..1925cd23ed 100644 --- a/indra/newview/llviewerparcelmgr.h +++ b/indra/newview/llviewerparcelmgr.h @@ -219,7 +219,7 @@ public: // containing the southwest corner of the selection. // If want_reply_to_update, simulator will send back a ParcelProperties // message. - void sendParcelPropertiesUpdate(LLParcel* parcel, bool use_agent_region = false); + void sendParcelPropertiesUpdate(LLParcel* parcel); // Takes an Access List flag, like AL_ACCESS or AL_BAN void sendParcelAccessListUpdate(U32 which); @@ -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 ef6409c23b..d32e3f4cbd 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -4862,12 +4862,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) { @@ -4928,14 +4928,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) { @@ -4993,6 +4993,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; @@ -5070,11 +5072,13 @@ bool LLViewerWindow::rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_hei } else { + setBalanceVisible(true); return false; } if (raw->isBufferInvalid()) { + setBalanceVisible(true); return false; } @@ -5250,6 +5254,7 @@ bool LLViewerWindow::rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_hei { send_agent_resume(); } + setBalanceVisible(true); return ret; } @@ -5715,6 +5720,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 1cca2161fe..a6d50af025 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; @@ -6418,6 +6418,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 // @@ -11006,8 +11016,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) && @@ -11039,8 +11048,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 a2232d21a2..ab27c5752d 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/llvoicewebrtc.cpp b/indra/newview/llvoicewebrtc.cpp index c2b74eb1dd..facda1d876 100644 --- a/indra/newview/llvoicewebrtc.cpp +++ b/indra/newview/llvoicewebrtc.cpp @@ -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/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 3fb7a3c156..6b3dccf89c 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -860,8 +860,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()); + } } } diff --git a/indra/newview/llwearableitemslist.cpp b/indra/newview/llwearableitemslist.cpp index 8ce1a745c3..c708e804b2 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 3fe1059176..7a5f29020e 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" @@ -507,4 +508,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/pipeline.cpp b/indra/newview/pipeline.cpp index 076459a7b2..6b3a5b1892 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -121,7 +121,7 @@ #include "SMAAAreaTex.h" #include "SMAASearchTex.h" - +#include "llerror.h" #ifndef LL_WINDOWS #define A_GCC 1 #pragma GCC diagnostic ignored "-Wunused-function" @@ -601,7 +601,6 @@ void LLPipeline::init() connectRefreshCachedSettingsSafe("RenderMirrors"); connectRefreshCachedSettingsSafe("RenderHeroProbeUpdateRate"); connectRefreshCachedSettingsSafe("RenderHeroProbeConservativeUpdateMultiplier"); - connectRefreshCachedSettingsSafe("RenderAutoHideSurfaceAreaLimit"); LLPointer<LLControlVariable> cntrl_ptr = gSavedSettings.getControl("CollectFontVertexBuffers"); if (cntrl_ptr.notNull()) @@ -1291,8 +1290,11 @@ void LLPipeline::createGLBuffers() } allocateScreenBuffer(resX, resY); - mRT->width = 0; - mRT->height = 0; + // Do not zero out mRT dimensions here. allocateScreenBuffer() above + // already sets the correct dimensions. Zeroing them caused resizeShadowTexture() + // to fail if called immediately after createGLBuffers (e.g., post graphics change). + // mRT->width = 0; + // mRT->height = 0; if (!mNoiseMap) diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml index bc9aef8974..00ca6e3bb0 100644 --- a/indra/newview/skins/default/colors.xml +++ b/indra/newview/skins/default/colors.xml @@ -1004,4 +1004,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/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 <nolink>[HOSTNAME]</nolink> ([HOSTIP]) + Du er ved [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] i regionen [REGION] lokaliseret ved <nolink>[HOSTNAME]</nolink> [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 a7dff91311..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"> - '[OBJECTNAME]', en genstand, ejet af '[OWNERNAME]', 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"> - '[OBJECTNAME]', en genstand, ejet af '[OWNERNAME]', 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 "til stede" + Sæt "til stede" </string> <string name="AvatarSetAway"> - Sæt "væk" + Sæt "væk" </string> <string name="AvatarSetNotBusy"> - Sæt "ledig" + Sæt "ledig" </string> <string name="AvatarSetBusy"> - Sæt "optaget" + 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 "running" fremskridt + Sæt "running" fremskridt </string> <string name="RunQueueStart"> - sæt til "running" + sæt til "running" </string> <string name="NotRunQueueTitle"> - Sæt "Not Running" fremskridt + Sæt "Not Running" fremskridt </string> <string name="NotRunQueueStart"> - sæt til "not running" + 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 ("object out of range") + 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'er + Parcel Script URL'er </string> <string name="ScriptLimitsURLsUsed"> - URL'er brugt: [COUNT] ud af [MAX]; [AVAILABLE] tilgængelige + URL'er brugt: [COUNT] ud af [MAX]; [AVAILABLE] tilgængelige </string> <string name="ScriptLimitsURLsUsedSimple"> - URL'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 'optaget', 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 "task bar" 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 "frosset" 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 "GL device context" + Kan ikke oprette "GL device context" </string> <string name="MBPixelFmtErr"> - Kan ikke finde passende "pixel format" + Kan ikke finde passende "pixel format" </string> <string name="MBPixelFmtDescErr"> - Kan ikke finde "pixel format" beskrivelse + Kan ikke finde "pixel format" beskrivelse </string> <string name="MBTrueColorWindow"> - [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. + [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 "8 bit alpha channel". 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 "True Color (32-bit)" 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 "pixel format" + Kan ikke sætte "pixel format" </string> <string name="MBGLContextErr"> - Kan ikke oprette "GL rendering context" + Kan ikke oprette "GL rendering context" </string> <string name="MBGLContextActErr"> - Kan ikke aktivere "GL rendering context" + 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'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"> - "MÃ¥ne" + "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 "spikes" + HÃ¥r med "spikes" </string> <string name="Square"> Firkantet @@ -3723,6 +3721,10 @@ Hvis du bliver ved med at modtage denne besked, kontakt venligst [SUPPORT_SITE]. <string name="conference-title-incoming"> Konference med [AGENT_NAME] </string> + <string name="bot_warning"> + 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"> (IM session eksisterer ikke) </string> @@ -3763,7 +3765,7 @@ Hvis du bliver ved med at modtage denne besked, kontakt venligst [SUPPORT_SITE]. En gruppe moderator har deaktiveret din tekst chat. </string> <string name="muted_error"> - Du er blevet "blokeret". + Du er blevet "blokeret". </string> <string name="add_session_event"> Ikke muligt at tilføge brugere til samtale med [RECIPIENT]. @@ -3793,7 +3795,7 @@ Hvis du bliver ved med at modtage denne besked, kontakt venligst [SUPPORT_SITE]. [SOURCES] har sagt noget nyt </string> <string name="session_initialization_timed_out_error"> - Initialisering af session er "timed out" + Initialisering af session er "timed out" </string> <string name="Home position set."> Hjemmeposition sat. @@ -4026,7 +4028,7 @@ Krænkelsesanmeldelse Kvinde - Latter </string> <string name="Female - Looking good"> - Kvinde - "Ser godt ud" + Kvinde - "Ser godt ud" </string> <string name="Female - Over here"> Kvinde - Herovre @@ -4140,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. "/stil til min editor" "%s") +(f.eks. "/stil til min editor" "%s") </string> <string name="ExternalEditorCommandParseError"> Fejl ved hÃ¥ndtering af kommando til ekstern editor. @@ -4464,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 "scriptede" objekter (rød) + Viser pejlelys for "scriptede" objekter (rød) </string> <string name="BeaconScriptedTouch"> - Viser pejlelys for "scriptede" 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 'Welcome Island Puclic' 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/panel_snapshot_inventory.xml b/indra/newview/skins/default/xui/de/panel_snapshot_inventory.xml index 602424821f..09447cbbaf 100644 --- a/indra/newview/skins/default/xui/de/panel_snapshot_inventory.xml +++ b/indra/newview/skins/default/xui/de/panel_snapshot_inventory.xml @@ -7,7 +7,7 @@ <combo_box.item label="Klein (128x128)" name="Small(128x128)"/> <combo_box.item label="Mittel (256x256)" name="Medium(256x256)"/> <combo_box.item label="Groß (512x512)" name="Large(512x512)"/> - <combo_box.item label="Aktuelles Fenster (512x512)" name="CurrentWindow"/> + <combo_box.item label="Aktuelles Fenster" name="CurrentWindow"/> <combo_box.item label="Benutzerdefiniert" name="Custom"/> </combo_box> <spinner label="Breite x Höhe" name="inventory_snapshot_width"/> diff --git a/indra/newview/skins/default/xui/de/panel_snapshot_options.xml b/indra/newview/skins/default/xui/de/panel_snapshot_options.xml index dab20d63eb..2a51f10894 100644 --- a/indra/newview/skins/default/xui/de/panel_snapshot_options.xml +++ b/indra/newview/skins/default/xui/de/panel_snapshot_options.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_options"> <button label="Auf Datenträger speichern" name="save_to_computer_btn"/> - <button label="In Inventar speichern ([AMOUNT] L$)" name="save_to_inventory_btn"/> + <button label="In Inventar speichern" name="save_to_inventory_btn"/> <button label="Im Profil-Feed teilen" name="save_to_profile_btn"/> <button label="Auf Facebook teilen" name="send_to_facebook_btn"/> <button label="Auf Twitter teilen" name="send_to_twitter_btn"/> diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml index 4bed43dd1d..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 <nolink>[HOSTNAME]</nolink> ([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 <nolink>[HOSTNAME]</nolink> SLURL: <nolink>[SLURL]</nolink> (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“ > „Debug-Einstellungen anzeigen“ > „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“ > „Debug-Einstellungen anzeigen“ > „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,1439 +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"-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 <nolink>[NAME]</nolink> 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&Culture">Kunst & 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&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 <nolink>[NAME]</nolink> 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&Culture"> + Kunst & 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&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 > Anzeige > 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“ > „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="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... +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“ > „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. +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... -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. "/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“ > „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“ > „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“ > „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“ > „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_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_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 e0f380e074..d672ffbc94 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/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 4245b22e88..8a41405e4c 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -10336,6 +10336,14 @@ You are now the owner of object [OBJECT_NAME] <notification icon="alertmodal.tga" + name="NowOwnObjectInv" + type="notify"> + <tag>fail</tag> +You are now the owner of object [OBJECT_NAME] and it has been placed in your inventory. + </notification> + + <notification + icon="alertmodal.tga" name="CantRezOnLand" type="notify"> <tag>fail</tag> @@ -12614,4 +12622,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_sky_clouds.xml b/indra/newview/skins/default/xui/en/panel_settings_sky_clouds.xml index 7687f7cd96..23bbf45e88 100644 --- a/indra/newview/skins/default/xui/en/panel_settings_sky_clouds.xml +++ b/indra/newview/skins/default/xui/en/panel_settings_sky_clouds.xml @@ -139,7 +139,7 @@ max_val_x="30" min_val_y="-30" max_val_y="30" - logarithmic="1"/> + logarithmic="true"/> <text name="cloud_image_label" 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 5e65b0e8a2..e062f1710b 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_snapshot_inventory.xml b/indra/newview/skins/default/xui/en/panel_snapshot_inventory.xml index f8040b9a65..0cac1b410f 100644 --- a/indra/newview/skins/default/xui/en/panel_snapshot_inventory.xml +++ b/indra/newview/skins/default/xui/en/panel_snapshot_inventory.xml @@ -60,7 +60,7 @@ name="Large(512x512)" value="[i512,i512]" /> <combo_box.item - label="Current Window(512x512)" + label="Current Window" name="CurrentWindow" value="[i0,i0]" /> <combo_box.item @@ -119,6 +119,8 @@ type="string" word_wrap="true"> To save your image as a texture select one of the square formats. + +Upload cost: L$[UPLOAD_COST] </text> <button follows="right|bottom" diff --git a/indra/newview/skins/default/xui/en/panel_snapshot_options.xml b/indra/newview/skins/default/xui/en/panel_snapshot_options.xml index 3a7731d235..2fb02af61c 100644 --- a/indra/newview/skins/default/xui/en/panel_snapshot_options.xml +++ b/indra/newview/skins/default/xui/en/panel_snapshot_options.xml @@ -31,7 +31,7 @@ image_overlay_alignment="left" image_top_pad="-1" imgoverlay_label_space="10" - label="Save to Inventory (L$[AMOUNT])" + label="Save to Inventory" layout="topleft" left_delta="0" name="save_to_inventory_btn" 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 3755780d33..c5a59fac2a 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> @@ -72,7 +71,7 @@ Voice Server Version: [VOICE_VERSION] <string name="LocalTime">[month, datetime, local] [day, datetime, local] [year, datetime, local] [hour, datetime, local]:[min, datetime, local]:[second,datetime, local]</string> <string name="ErrorFetchingServerReleaseNotesURL">Error fetching server release notes URL.</string> <string name="BuildConfiguration">Build Configuration</string> - + <!-- progress --> <string name="ProgressRestoring">Restoring...</string> <string name="ProgressChangingResolution">Changing resolution...</string> @@ -115,10 +114,10 @@ Voice Server Version: [VOICE_VERSION] <string name="LoginFailedHeader">Login failed.</string> <string name="Quit">Quit</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"> The viewer you are using can no longer access Second Life. Please visit the following page to download a new viewer: @@ -210,7 +209,7 @@ If you feel this is an error, please contact support@secondlife.com</string> <string name="YouHaveBeenDisconnected">You have been disconnected from the region you were in.</string> <string name="SentToInvalidRegion">You were sent to an invalid region.</string> <string name="TestingDisconnect">Testing viewer disconnect</string> - + <!-- SLShare: User Friendly Filter Names Translation --> <string name="BlackAndWhite">Black & White</string> <string name="Colors1970">1970's Colors</string> @@ -223,7 +222,7 @@ If you feel this is an error, please contact support@secondlife.com</string> <string name="LensFlare">Lens Flare</string> <string name="Miniature">Miniature</string> <string name="Toycamera">Toy Camera</string> - + <!-- Tooltip --> <string name="TooltipPerson">Person</string><!-- Object under mouse pointer is an avatar --> <string name="TooltipNoName">(no name)</string> <!-- No name on an object --> @@ -260,10 +259,11 @@ 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> - + <!-- tooltips for Urls --> <string name="TooltipHttpUrl">Click to view this web page</string> <string name="TooltipSLURL">Click to view this location's information</string> @@ -371,7 +371,7 @@ are allowed. <string name="AssetUploadServerDifficulties">The server is experiencing unexpected difficulties.</string> <string name="AssetUploadServerUnavaliable">Service not available or upload timeout was reached.</string> <string name="AssetUploadRequestInvalid"> -Error in upload request. Please visit +Error in upload request. Please visit http://secondlife.com/support for help fixing this problem. </string> @@ -535,7 +535,7 @@ http://secondlife.com/support for help fixing this problem. <string name="ChangeYourDefaultAnimations">Change your default animations</string> <string name="ForceSitAvatar">Force your avatar to sit</string> <string name="ChangeEnvSettings">Change your environment settings</string> - + <string name="NotConnected">Not Connected</string> <string name="AgentNameSubst">(You)</string> <!-- Substitution for agent name --> <string name="JoinAnExperience"/><!-- intentionally blank --> @@ -2321,7 +2321,7 @@ For AI Character: Get the closest navigable point to the point provided. <!-- inventory --> <string name="InventoryNoMatchingItems">Didn't find what you're looking for? Try [secondlife:///app/search/all/[SEARCH_TERM] Search].</string> - <string name="InventoryNoMatchingRecentItems">Didn't find what you're looking for? Try [secondlife:///app/inventory/filters Show filters].</string> + <string name="InventoryNoMatchingRecentItems">Didn't find what you're looking for? Try [secondlife:///app/inventory/filters Show filters].</string> <string name="PlacesNoMatchingItems">To add a place to your landmarks, click the star to the right of the location name.</string> <string name="FavoritesNoMatchingItems">To add a place to your favorites, click the star to the right of the location name, then save the landmark to "Favorites bar".</string> <string name="MarketplaceNoListing">You have no listings yet.</string> @@ -2504,7 +2504,7 @@ If you continue to receive this message, please contact Second Life support for <string name="InvFolder Materials">Materials</string> <!-- are used for Friends and Friends/All folders in Inventory "Calling cards" folder. See EXT-694--> - <string name="InvFolder Friends">Friends</string> + <string name="InvFolder Friends">Friends</string> <string name="InvFolder All">All</string> <string name="no_attachments">No attachments worn</string> @@ -2673,7 +2673,7 @@ If you continue to receive this message, please contact Second Life support for <string name="UploadFailed">File upload failed: </string> <string name="ObjectOutOfRange">Script (object out of range)</string> <string name="ScriptWasDeleted">Script (deleted from inventory)</string> - + <!-- god tools --> <string name="GodToolsObjectOwnedBy">Object [OBJECT] owned by [OWNER]</string> @@ -2943,14 +2943,12 @@ Expected .wav, .tga, .bmp, .jpg, .jpeg, or .anim <string name="Linden Location">Linden Location</string> <string name="Adult">Adult</string> <string name="Arts&Culture">Arts & Culture</string> - <string name="Arts and Culture">Arts & Culture</string> <string name="Business">Business</string> <string name="Educational">Educational</string> <string name="Gaming">Gaming</string> <string name="Hangout">Hangout</string> <string name="Newcomer Friendly">Newcomer Friendly</string> <string name="Parks&Nature">Parks & Nature</string> - <string name="Parks and Nature">Parks & Nature</string> <string name="Residential">Residential</string> <!--<string name="Shopping">Shopping</string> --> <string name="Stage">Stage</string> @@ -3720,6 +3718,10 @@ Please reinstall viewer from https://secondlife.com/support/downloads/ and cont <string name="inventory_folder_offered-im"> Inventory folder '[ITEM_NAME]' offered </string> + <string name="bot_warning"> + You are chatting with a bot, [NAME]. Do not share any personal information. +Learn more at https://second.life/scripted-agents. + </string> <string name="share_alert"> Drag items from inventory here </string> @@ -3852,7 +3854,7 @@ Please reinstall viewer from https://secondlife.com/support/downloads/ and cont <string name="uploading_costs">Uploading costs L$ [AMOUNT]</string> <string name="this_costs">This costs L$ [AMOUNT]</string> - + <string name="buying_selected_land">This land costs</string> <string name="this_object_costs">This item costs</string> <string name="giving">You want to give</string> @@ -3933,7 +3935,7 @@ Abuse Report</string> <string name="New Daycycle">New Daycycle</string> <string name="New Water">New Water</string> <string name="New Sky">New Sky</string> - + <string name="/bow">/bow</string> <string name="/clap">/clap</string> @@ -4015,7 +4017,7 @@ Please check http://status.secondlifegrid.net to see if there is a known problem <string name="Accounting">Accounting</string> <string name="Notices">Notices</string> <string name="Chat">Chat</string> - + <!-- SL Membership --> <string name="BaseMembership">Base</string> <string name="PremiumMembership">Premium</string> @@ -4181,7 +4183,7 @@ Try enclosing path to the editor with double quotes. <!-- commands --> - <string + <string name="Command_360_Capture_Label">360 snapshot</string> <string name="Command_AboutLand_Label">About land</string> <string name="Command_Appearance_Label">Outfits</string> @@ -4214,9 +4216,9 @@ name="Command_360_Capture_Label">360 snapshot</string> <string name="Command_View_Label">Camera controls</string> <string name="Command_Voice_Label">Voice settings</string> <string name="Command_FavoriteFolder_Label">Favorite folder</string> - <string name="Command_ResyncAnimations_Label">Resync animations</string> + <string name="Command_ResyncAnimations_Label">Resync animations</string> - <string + <string name="Command_360_Capture_Tooltip">Capture a 360 equirectangular image</string> <string name="Command_AboutLand_Tooltip">Information about the land you're visiting</string> <string name="Command_Appearance_Tooltip">Change your avatar</string> @@ -4249,7 +4251,7 @@ name="Command_360_Capture_Tooltip">Capture a 360 equirectangular image</string> <string name="Command_View_Tooltip">Changing camera angle</string> <string name="Command_Voice_Tooltip">Volume controls for calls and people near you in world</string> <string name="Command_FavoriteFolder_Tooltip">Open your favorite inventory folder</string> - <string name="Command_ResyncAnimations_Tooltip">Synchronizes avatar animations</string> + <string name="Command_ResyncAnimations_Tooltip">Synchronizes avatar animations</string> <string name="Toolbar_Bottom_Tooltip">currently in your bottom toolbar</string> <string name="Toolbar_Left_Tooltip" >currently in your left toolbar</string> @@ -4283,7 +4285,7 @@ name="Command_360_Capture_Tooltip">Capture a 360 equirectangular image</string> <!-- Spell check settings floater --> <string name="UserDictionary">[User]</string> - + <!-- Experience Tools strings --> <string name="experience_tools_experience">Experience</string> <string name="ExperienceNameNull">(no experience)</string> @@ -4345,7 +4347,7 @@ name="Command_360_Capture_Tooltip">Capture a 360 equirectangular image</string> <string name="Default">Default</string> <string name="none_paren_cap">(None)</string> <string name="no_limit">No limit</string> - + <string name="Mav_Details_MAV_FOUND_DEGENERATE_TRIANGLES"> The physics shape contains triangles which are too small. Try simplifying the physics model. </string> diff --git a/indra/newview/skins/default/xui/en/widgets/sun_moon_trackball.xml b/indra/newview/skins/default/xui/en/widgets/sun_moon_trackball.xml index cdeff6ab05..f246ff764a 100644 --- a/indra/newview/skins/default/xui/en/widgets/sun_moon_trackball.xml +++ b/indra/newview/skins/default/xui/en/widgets/sun_moon_trackball.xml @@ -3,7 +3,6 @@ name="virtualtrackball" width="150" height="150" - user_resize="false" increment_angle_mouse="1.5f" increment_angle_btn="1.0f" image_sphere="VirtualTrackball_Sphere" diff --git a/indra/newview/skins/default/xui/en/widgets/xy_vector.xml b/indra/newview/skins/default/xui/en/widgets/xy_vector.xml index 23cde55f30..923895be5e 100644 --- a/indra/newview/skins/default/xui/en/widgets/xy_vector.xml +++ b/indra/newview/skins/default/xui/en/widgets/xy_vector.xml @@ -3,11 +3,9 @@ name="xyvector" width="120" height="140" - decimal_digits="1" label_width="16" padding="4" - edit_bar_height="18" - user_resize="false"> + edit_bar_height="18"> <xy_vector.border visible="true"/> diff --git a/indra/newview/skins/default/xui/es/panel_snapshot_inventory.xml b/indra/newview/skins/default/xui/es/panel_snapshot_inventory.xml index b5cf57ade7..c9eea9a58e 100644 --- a/indra/newview/skins/default/xui/es/panel_snapshot_inventory.xml +++ b/indra/newview/skins/default/xui/es/panel_snapshot_inventory.xml @@ -7,7 +7,7 @@ Guardar una imagen en el inventario cuesta [UPLOAD_COST] L$. Para guardar una imagen como una textura, selecciona uno de los formatos cuadrados. </text> <combo_box label="Resolución" name="texture_size_combo"> - <combo_box.item label="Ventana actual (512 × 512)" name="CurrentWindow"/> + <combo_box.item label="Ventana actual" name="CurrentWindow"/> <combo_box.item label="Pequeña (128x128)" name="Small(128x128)"/> <combo_box.item label="Mediana (256x256)" name="Medium(256x256)"/> <combo_box.item label="Grande (512x512)" name="Large(512x512)"/> diff --git a/indra/newview/skins/default/xui/es/panel_snapshot_options.xml b/indra/newview/skins/default/xui/es/panel_snapshot_options.xml index 4eb9ecf28f..f3119c739e 100644 --- a/indra/newview/skins/default/xui/es/panel_snapshot_options.xml +++ b/indra/newview/skins/default/xui/es/panel_snapshot_options.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_options"> <button label="Guardar en disco" name="save_to_computer_btn"/> - <button label="Guardar en inventario (L$[AMOUNT])" name="save_to_inventory_btn"/> + <button label="Guardar en inventario" name="save_to_inventory_btn"/> <button label="Compartir en los comentarios de Mi perfil" name="save_to_profile_btn"/> <button label="Compartir en Facebook" name="send_to_facebook_btn"/> <button label="Compartir en Twitter" name="send_to_twitter_btn"/> diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml index cf86427477..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 <nolink>[HOSTNAME]</nolink> ([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 <nolink>[HOSTNAME]</nolink> SLURL: <nolink>[SLURL]</nolink> (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 > Mostrar las configuraciones del depurador > 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 > Mostrar las configuraciones del depurador > 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 "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="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)""/> - <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,1414 +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 <nolink>[NAME]</nolink>.</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&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&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 <nolink>[NAME]</nolink>. + </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&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&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 > Apariencia y temas > 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> - <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... +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. +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... -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, "/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 > 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 > 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 > 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 > 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/panel_snapshot_inventory.xml b/indra/newview/skins/default/xui/fr/panel_snapshot_inventory.xml index 3cf64583d2..a560ff8d5e 100644 --- a/indra/newview/skins/default/xui/fr/panel_snapshot_inventory.xml +++ b/indra/newview/skins/default/xui/fr/panel_snapshot_inventory.xml @@ -7,7 +7,7 @@ L'enregistrement d'une image dans l'inventaire coûte [UPLOAD_COST] L$. Pour enregistrer votre image sous forme de texture, sélectionnez un format carré. </text> <combo_box label="Résolution" name="texture_size_combo"> - <combo_box.item label="Fenêtre actuelle (512x512)" name="CurrentWindow"/> + <combo_box.item label="Fenêtre actuelle" name="CurrentWindow"/> <combo_box.item label="Petite (128 x 128)" name="Small(128x128)"/> <combo_box.item label="Moyenne (256 x 256)" name="Medium(256x256)"/> <combo_box.item label="Grande (512 x 512)" name="Large(512x512)"/> diff --git a/indra/newview/skins/default/xui/fr/panel_snapshot_options.xml b/indra/newview/skins/default/xui/fr/panel_snapshot_options.xml index bdedb9162f..52fa318f8e 100644 --- a/indra/newview/skins/default/xui/fr/panel_snapshot_options.xml +++ b/indra/newview/skins/default/xui/fr/panel_snapshot_options.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_options"> <button label="Enreg. sur le disque" name="save_to_computer_btn"/> - <button label="Enreg. dans l'inventaire ([AMOUNT] L$)" name="save_to_inventory_btn"/> + <button label="Enreg. dans l'inventaire" name="save_to_inventory_btn"/> <button label="Partager sur le flux de profil" name="save_to_profile_btn"/> <button label="Partager sur Facebook" name="send_to_facebook_btn"/> <button label="Partager sur Twitter" name="send_to_twitter_btn"/> diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml index 3889e26aee..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 à <nolink>[HOSTNAME]</nolink> ([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 à <nolink>[HOSTNAME]</nolink> SLURL : <nolink>[SLURL]</nolink> (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é > Afficher les paramètres de débogage > 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é > Afficher les paramètres de débogage > 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 "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="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,1439 +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 <nolink>[NAME]</nolink>.</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&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&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 <nolink>[NAME]</nolink>. + </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&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&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 > Affichage > 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> - <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... +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. +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... -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. : "/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 > 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 > 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 > 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 > 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/panel_snapshot_inventory.xml b/indra/newview/skins/default/xui/it/panel_snapshot_inventory.xml index 75b5d64660..21b65e8e69 100644 --- a/indra/newview/skins/default/xui/it/panel_snapshot_inventory.xml +++ b/indra/newview/skins/default/xui/it/panel_snapshot_inventory.xml @@ -7,7 +7,7 @@ Salvare un'immagine nell'inventario costa L$[UPLOAD_COST]. Per salvare l'immagine come texture, selezionare uno dei formati quadrati. </text> <combo_box label="Risoluzione" name="texture_size_combo"> - <combo_box.item label="Finestra corrente (512x512)" name="CurrentWindow"/> + <combo_box.item label="Finestra corrente" name="CurrentWindow"/> <combo_box.item label="Piccola (128x128)" name="Small(128x128)"/> <combo_box.item label="Media (256x256)" name="Medium(256x256)"/> <combo_box.item label="Grande (512x512)" name="Large(512x512)"/> diff --git a/indra/newview/skins/default/xui/it/panel_snapshot_options.xml b/indra/newview/skins/default/xui/it/panel_snapshot_options.xml index 50fb3d39fa..7fce171326 100644 --- a/indra/newview/skins/default/xui/it/panel_snapshot_options.xml +++ b/indra/newview/skins/default/xui/it/panel_snapshot_options.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_options"> <button label="Salva sul disco" name="save_to_computer_btn"/> - <button label="Salva nell'inventario (L$[AMOUNT])" name="save_to_inventory_btn"/> + <button label="Salva nell'inventario" name="save_to_inventory_btn"/> <button label="Condividi sul feed del profilo" name="save_to_profile_btn"/> <button label="Condividi su Facebook" name="send_to_facebook_btn"/> <button label="Condividi su Twitter" name="send_to_twitter_btn"/> diff --git a/indra/newview/skins/default/xui/it/strings.xml b/indra/newview/skins/default/xui/it/strings.xml index 270e7ac3a1..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 <nolink>[HOSTNAME]</nolink> ([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 <nolink>[HOSTNAME]</nolink> SLURL: <nolink>[SLURL]</nolink> (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 > Mostra impostazioni di debug > 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 > Mostra impostazioni di debug > 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 "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="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)""/> - <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,1416 +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 <nolink>[NAME]</nolink>.</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&Culture">Arte & 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&Nature">Parchi & 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 <nolink>[NAME]</nolink>. + </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&Culture"> + Arte & 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&Nature"> + Parchi & 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 > Schermo > 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 "[ITEM_NAME]"</string> - <string name="inventory_folder_offered-im">Offerta cartella di inventario "[ITEM_NAME]"</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... +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. +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... -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. "/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 > 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 > 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 > 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 > 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/panel_snapshot_inventory.xml b/indra/newview/skins/default/xui/ja/panel_snapshot_inventory.xml index c55c11e928..04ecba4264 100644 --- a/indra/newview/skins/default/xui/ja/panel_snapshot_inventory.xml +++ b/indra/newview/skins/default/xui/ja/panel_snapshot_inventory.xml @@ -6,7 +6,7 @@ </text> <view_border name="hr"/> <combo_box label="è§£åƒåº¦" name="texture_size_combo"> - <combo_box.item label="ç¾åœ¨ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ (512✕512)" name="CurrentWindow"/> + <combo_box.item label="ç¾åœ¨ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦" name="CurrentWindow"/> <combo_box.item label="å°ï¼ˆ128✕128)" name="Small(128x128)"/> <combo_box.item label="ä¸ï¼ˆ256✕256)" name="Medium(256x256)"/> <combo_box.item label="大(512✕512)" name="Large(512x512)"/> @@ -16,7 +16,7 @@ <spinner label="" name="inventory_snapshot_height"/> <check_box label="縦横比ã®å›ºå®š" name="inventory_keep_aspect_check"/> <text name="hint_lbl"> - ç”»åƒã‚’テクスãƒãƒ£ã¨ã—ã¦ä¿å˜ã™ã‚‹å ´åˆã¯ã€ã„ãšã‚Œã‹ã®æ£æ–¹å½¢ã‚’é¸æŠžã—ã¦ãã ã•ã„。 + ç”»åƒã‚’インベントリã«ä¿å˜ã™ã‚‹ã«ã¯ L$[UPLOAD_COST] ã®è²»ç”¨ãŒã‹ã‹ã‚Šã¾ã™ã€‚ç”»åƒã‚’テクスãƒãƒ£ã¨ã—ã¦ä¿å˜ã™ã‚‹ã«ã¯å¹³æ–¹å½¢å¼ã® 1 ã¤ã‚’é¸æŠžã—ã¦ãã ã•ã„。 </text> <button label="ã‚ャンセル" name="cancel_btn"/> <button label="ä¿å˜" name="save_btn"/> diff --git a/indra/newview/skins/default/xui/ja/panel_snapshot_options.xml b/indra/newview/skins/default/xui/ja/panel_snapshot_options.xml index 7a1aa280ec..a979e31c9a 100644 --- a/indra/newview/skins/default/xui/ja/panel_snapshot_options.xml +++ b/indra/newview/skins/default/xui/ja/panel_snapshot_options.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_options"> <button label="ディスクã«ä¿å˜" name="save_to_computer_btn"/> - <button label="インベントリã«ä¿å˜ï¼ˆL$ [AMOUNT])" name="save_to_inventory_btn"/> + <button label="インベントリã«ä¿å˜" name="save_to_inventory_btn"/> <button label="プãƒãƒ•ィールフィードã§å…±æœ‰ã™ã‚‹" name="save_to_profile_btn"/> <button label="メールã§é€ä¿¡" name="save_to_email_btn"/> <text name="fee_hint_lbl"> diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml index 106bf91d0c..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]ã«ã„ã¾ã™ã€‚ -ä½ç½®ã¯ã€<nolink>[HOSTNAME]</nolink>ã§ã™ã€‚([HOSTIP]) +ä½ç½®ã¯ã€<nolink>[HOSTNAME]</nolink>ã§ã™ã€‚ SLURL:<nolink>[SLURL]</nolink> (グãƒãƒ¼ãƒãƒ«åº§æ¨™ã¯ã€[POSITION_0,number,1],[POSITION_1,number,1],[POSITION_2,number,1]ã§ã™ã€‚) [SERVER_VERSION] @@ -6149,6 +6149,10 @@ www.secondlife.com ã‹ã‚‰æœ€æ–°ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’ダウンãƒãƒ¼ãƒ‰ã—ã¦ãã ã <string name="inventory_folder_offered-im"> フォルダ「[ITEM_NAME]ã€ãŒã‚¤ãƒ³ãƒ™ãƒ³ãƒˆãƒªã«é€ã‚‰ã‚Œã¦ãã¾ã—ãŸã€‚ </string> + <string name="bot_warning"> + [NAME]ã¨ãƒãƒ£ãƒƒãƒˆã—ã¦ã„ã¾ã™ã€‚å€‹äººæƒ…å ±ã‚’å…±æœ‰ã—ãªã„ã§ãã ã•ã„。 +詳細㯠https://second.life/scripted-agents ã‚’ã”覧ãã ã•ã„。 + </string> <string name="share_alert"> インベントリã‹ã‚‰ã“ã“ã«ã‚¢ã‚¤ãƒ†ãƒ をドラッグã—ã¾ã™ã€‚ </string> diff --git a/indra/newview/skins/default/xui/pl/panel_snapshot_options.xml b/indra/newview/skins/default/xui/pl/panel_snapshot_options.xml index 016b9ca197..04c01940e1 100644 --- a/indra/newview/skins/default/xui/pl/panel_snapshot_options.xml +++ b/indra/newview/skins/default/xui/pl/panel_snapshot_options.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <panel name="panel_snapshot_options"> <button label="Zapisz na dysku twardym" name="save_to_computer_btn" /> - <button label="Zapisz do Szafy ([AMOUNT]L$)" name="save_to_inventory_btn" /> + <button label="Zapisz do Szafy" name="save_to_inventory_btn" /> <button label="WyÅ›lij na mój KanaÅ‚" name="save_to_profile_btn" /> <button label="ZaÅ‚aduj na Facebook" name="send_to_facebook_btn" /> <button label="ZaÅ‚aduj na Twitter" name="send_to_twitter_btn" /> diff --git a/indra/newview/skins/default/xui/pl/strings.xml b/indra/newview/skins/default/xui/pl/strings.xml index 8032443020..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 <nolink>[HOSTNAME]</nolink> + PoÅ‚ożenie [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] w [REGION] zlokalizowanym w <nolink>[HOSTNAME]</nolink> SLURL: <nolink>[SLURL]</nolink> (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 (⌘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ć 'Tylko znajomi i grupy mogÄ… wysyÅ‚ać mi wiad. prywatne (IM) oraz rozmowy gÅ‚osowe' 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 @@ -4412,6 +4412,10 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj siÄ™ z [SUPPORT_SITE]. <string name="inventory_folder_offered-im"> Zaoferowano folder: '[ITEM_NAME]' </string> + <string name="bot_warning"> + 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"> PrzeciÄ…gaj tutaj rzeczy z Szafy </string> @@ -5286,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 > 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 > 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ź 'Welcome Island Public' 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/panel_snapshot_inventory.xml b/indra/newview/skins/default/xui/pt/panel_snapshot_inventory.xml index f3357026d5..28a5142baa 100644 --- a/indra/newview/skins/default/xui/pt/panel_snapshot_inventory.xml +++ b/indra/newview/skins/default/xui/pt/panel_snapshot_inventory.xml @@ -7,7 +7,7 @@ Salvar uma imagem em seu inventário custa L$[UPLOAD_COST]. Para salvar sua imagem como uma textura, selecione um dos formatos quadrados. </text> <combo_box label="Resolução" name="texture_size_combo"> - <combo_box.item label="Janela ativa (512x512)" name="CurrentWindow"/> + <combo_box.item label="Janela ativa" name="CurrentWindow"/> <combo_box.item label="Pequeno (128x128)" name="Small(128x128)"/> <combo_box.item label="Médio (256x256)" name="Medium(256x256)"/> <combo_box.item label="Grande (512x512)" name="Large(512x512)"/> diff --git a/indra/newview/skins/default/xui/pt/panel_snapshot_options.xml b/indra/newview/skins/default/xui/pt/panel_snapshot_options.xml index 067e5dbd76..f71bc7cd12 100644 --- a/indra/newview/skins/default/xui/pt/panel_snapshot_options.xml +++ b/indra/newview/skins/default/xui/pt/panel_snapshot_options.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_options"> <button label="Salvar no disco" name="save_to_computer_btn"/> - <button label="Salvar em inventário (L$[AMOUNT])" name="save_to_inventory_btn"/> + <button label="Salvar em inventário" name="save_to_inventory_btn"/> <button label="Compartilhar no feed do perfil" name="save_to_profile_btn"/> <button label="Compartilhar no Facebook" name="send_to_facebook_btn"/> <button label="Compartilhar no Twitter" name="send_to_twitter_btn"/> diff --git a/indra/newview/skins/default/xui/pt/strings.xml b/indra/newview/skins/default/xui/pt/strings.xml index 3e33744b85..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 <nolink>[HOSTNAME]</nolink> ([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 <nolink>[HOSTNAME]</nolink> SLURL: <nolink>[SLURL]</nolink> (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 > Mostrar configurações de depuração > 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 > Mostrar configurações de depuração > 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 "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="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)""/> - <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,1413 +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 "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="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 "+" 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 <nolink>[NAME]</nolink>.</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&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&Nature">Parques & 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 <nolink>[NAME]</nolink>. + </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&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&Nature"> + Parques & 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> Display>. -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 "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="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... +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. +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... -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. "/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> 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> 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> 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> 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/panel_snapshot_inventory.xml b/indra/newview/skins/default/xui/ru/panel_snapshot_inventory.xml index f07e12e0ed..adc612dfd8 100644 --- a/indra/newview/skins/default/xui/ru/panel_snapshot_inventory.xml +++ b/indra/newview/skins/default/xui/ru/panel_snapshot_inventory.xml @@ -7,7 +7,7 @@ Сохранение Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð² инвентаре Ñтоит L$[UPLOAD_COST]. Чтобы Ñохранить его как текÑтуру, выберите один из квадратных форматов. </text> <combo_box label="Размер" name="texture_size_combo"> - <combo_box.item label="Текущее окно (512x512)" name="CurrentWindow"/> + <combo_box.item label="Текущее окно" name="CurrentWindow"/> <combo_box.item label="Маленький (128x128)" name="Small(128x128)"/> <combo_box.item label="Средний (256x256)" name="Medium(256x256)"/> <combo_box.item label="Большой (512x512)" name="Large(512x512)"/> diff --git a/indra/newview/skins/default/xui/ru/panel_snapshot_options.xml b/indra/newview/skins/default/xui/ru/panel_snapshot_options.xml index 7ba03ee0c9..f7fda0b1dc 100644 --- a/indra/newview/skins/default/xui/ru/panel_snapshot_options.xml +++ b/indra/newview/skins/default/xui/ru/panel_snapshot_options.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_options"> <button label="Сохранить на диÑке" name="save_to_computer_btn"/> - <button label="Сохранить в инвентаре (L$[AMOUNT])" name="save_to_inventory_btn"/> + <button label="Сохранить в инвентаре" name="save_to_inventory_btn"/> <button label="ПоделитьÑÑ Ð² профиле" name="save_to_profile_btn"/> <button label="ПоделитьÑÑ Ð² Facebook" name="send_to_facebook_btn"/> <button label="ПоделитьÑÑ Ð² Twitter" name="send_to_twitter_btn"/> diff --git a/indra/newview/skins/default/xui/ru/strings.xml b/indra/newview/skins/default/xui/ru/strings.xml index 10b0d3578f..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]», раÑположенном на <nolink>[HOSTNAME]</nolink> ([HOSTIP]) + Ð’Ñ‹ в точке [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] в регионе «[REGION]», раÑположенном на <nolink>[HOSTNAME]</nolink> SLURL: <nolink>[SLURL]</nolink> (глобальные координаты [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="'"> - ' + <string name="'"> + ' </string> <string name="---"> --- @@ -2983,7 +2979,7 @@ support@secondlife.com. Ðе удаетÑÑ Ð·Ð°Ð¿ÑƒÑтить приложение [APP_NAME], поÑкольку драйверы видеокарты неправильно уÑтановлены, уÑтарели или предназначены Ð´Ð»Ñ Ð¾Ð±Ð¾Ñ€ÑƒÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ, которое не поддерживаетÑÑ. УÑтановите или переуÑтановите поÑледние драйверы видеокарты. ЕÑли Ñто Ñообщение продолжает отображатьÑÑ, обратитеÑÑŒ на Ñайт [SUPPORT_SITE]. </string> - <string name="5 O'Clock Shadow"> + <string name="5 O'Clock Shadow"> Жидкие </string> <string name="All White"> @@ -4576,6 +4572,10 @@ support@secondlife.com. <string name="inventory_folder_offered-im"> Предложена папка Ð¸Ð½Ð²ÐµÐ½Ñ‚Ð°Ñ€Ñ Â«[ITEM_NAME]» </string> + <string name="bot_warning"> + Ð’Ñ‹ общаетеÑÑŒ Ñ Ð±Ð¾Ñ‚Ð¾Ð¼ [NAME]. Ðе передавайте личные данные. +Подробнее на https://second.life/scripted-agents. + </string> <string name="share_alert"> ПеретаÑкивайте вещи из Ð¸Ð½Ð²ÐµÐ½Ñ‚Ð°Ñ€Ñ Ñюда </string> @@ -5143,7 +5143,7 @@ support@secondlife.com. <string name="ExternalEditorNotFound"> Ðе удаетÑÑ Ð½Ð°Ð¹Ñ‚Ð¸ указанный внешний редактор. Попробуйте взÑть путь к редактору в двойные кавычки -(например "/path to my/editor" "%s") +(например "/path to my/editor" "%s") </string> <string name="ExternalEditorCommandParseError"> Ошибка анализа командной Ñтроки Ð´Ð»Ñ Ð²Ð½ÐµÑˆÐ½ÐµÐ³Ð¾ редактора. diff --git a/indra/newview/skins/default/xui/tr/panel_snapshot_inventory.xml b/indra/newview/skins/default/xui/tr/panel_snapshot_inventory.xml index be5940c4b9..160cba8700 100644 --- a/indra/newview/skins/default/xui/tr/panel_snapshot_inventory.xml +++ b/indra/newview/skins/default/xui/tr/panel_snapshot_inventory.xml @@ -7,7 +7,7 @@ Bir görüntüyü envanterinize kaydetmenin maliyeti L$[UPLOAD_COST] olur. Görüntünüzü bir doku olarak kaydetmek için kare formatlardan birini seçin. </text> <combo_box label="Çözünürlük" name="texture_size_combo"> - <combo_box.item label="Mevcut Pencere(512x512)" name="CurrentWindow"/> + <combo_box.item label="Mevcut Pencere" name="CurrentWindow"/> <combo_box.item label="Küçük (128x128)" name="Small(128x128)"/> <combo_box.item label="Orta (256x256)" name="Medium(256x256)"/> <combo_box.item label="Büyük (512x512)" name="Large(512x512)"/> diff --git a/indra/newview/skins/default/xui/tr/panel_snapshot_options.xml b/indra/newview/skins/default/xui/tr/panel_snapshot_options.xml index 1b48bbeec2..a028710b98 100644 --- a/indra/newview/skins/default/xui/tr/panel_snapshot_options.xml +++ b/indra/newview/skins/default/xui/tr/panel_snapshot_options.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_options"> <button label="Diske Kaydet" name="save_to_computer_btn"/> - <button label="Envantere Kaydet (L$[AMOUNT])" name="save_to_inventory_btn"/> + <button label="Envantere Kaydet" name="save_to_inventory_btn"/> <button label="Profil Akışında PaylaÅŸ" name="save_to_profile_btn"/> <button label="Facebook'ta PaylaÅŸ" name="send_to_facebook_btn"/> <button label="Twitter'da PaylaÅŸ" name="send_to_twitter_btn"/> diff --git a/indra/newview/skins/default/xui/tr/strings.xml b/indra/newview/skins/default/xui/tr/strings.xml index d992788e13..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"> - <nolink>[HOSTNAME]</nolink> ([HOSTIP]) üzerinde bulunan [REGION] içerisinde [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] konumundasınız + <nolink>[HOSTNAME]</nolink> üzerinde bulunan [REGION] içerisinde [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] konumundasınız SLURL: <nolink>[SLURL]</nolink> (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'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'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'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'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'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'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'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'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'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 'sonraki sahip' + 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"> - '[OWNERNAME]' adlı kiÅŸiye ait, [REGIONPOS] üzerinde [REGIONNAME] içerisinde bulunan '[OBJECTNAME]' 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"> - '[OWNERNAME]' adlı kiÅŸiye ait, [REGIONPOS] üzerinde [REGIONNAME] içerisinde bulunan '[OBJECTNAME]' 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'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 "Pazaryerine Gönder" ü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$'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]'lık + [AGEYEARS] [AGEMONTHS]'lık </string> <string name="YearsOld"> [AGEYEARS] yaşında </string> <string name="MonthsOld"> - [AGEMONTHS]'lık + [AGEMONTHS]'lık </string> <string name="WeeksOld"> - [AGEWEEKS]'lık + [AGEWEEKS]'lık </string> <string name="DaysOld"> - [AGEDAYS]'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'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'leri + Parsel Komut Dosyası URL'leri </string> <string name="ScriptLimitsURLsUsed"> - Kullanılan URL'ler: [COUNT] / [MAX] içerisinden; [AVAILABLE] serbest + Kullanılan URL'ler: [COUNT] / [MAX] içerisinden; [AVAILABLE] serbest </string> <string name="ScriptLimitsURLsUsedSimple"> - Kullanılan URL'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 "Rahatsız Etme" 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"> - <nolink>[NAME]</nolink> tarafından gönderilen [DESC]'i reddettiniz. + <nolink>[NAME]</nolink> 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="'"> - ' + <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'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]'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'de 'Sadece arkadaÅŸlar ve gruplar beni arasın veya Aİ göndersin' 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"> - "Rahatsız Etme" 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,22 +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"> - "[ITEM_NAME]" envanter öğesi sunuldu + "[ITEM_NAME]" envanter öğesi sunuldu </string> <string name="inventory_folder_offered-im"> - "[ITEM_NAME]" 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. +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'ta yayınladınız. + Facebook'ta yayınladınız. </string> <string name="flickr_post_success"> - Flickr'da yayınladınız. + Flickr'da yayınladınız. </string> <string name="twitter_post_success"> - Twitter'da yayınladınız. + Twitter'da yayınladınız. </string> <string name="no_session_message"> (Aİ Oturumu Mevcut DeÄŸil) @@ -4682,7 +4682,7 @@ Bu iletiyi almaya devam ederseniz, lütfen [SUPPORT_SITE] bölümüne baÅŸvurun. [NAME] size L$[AMOUNT] ödedi. </string> <string name="you_paid_ldollars"> - [NAME]'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] @@ -4691,13 +4691,13 @@ Bu iletiyi almaya devam ederseniz, lütfen [SUPPORT_SITE] bölümüne baÅŸvurun. L$[AMOUNT] ödediniz. </string> <string name="you_paid_ldollars_no_reason"> - [NAME]'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]'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] @@ -4706,7 +4706,7 @@ Bu iletiyi almaya devam ederseniz, lütfen [SUPPORT_SITE] bölümüne baÅŸvurun. L$[AMOUNT] ödeyemediniz. </string> <string name="you_paid_failure_ldollars_no_reason"> - [NAME]'e L$[AMOUNT] ödeyemediniz. + [NAME]'e L$[AMOUNT] ödeyemediniz. </string> <string name="you_paid_failure_ldollars_no_name"> [REASON] L$[AMOUNT] ödeyemediniz. @@ -5138,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. "/yolum/duzenleyici" "%s") +(örn. "/yolum/duzenleyici" "%s") </string> <string name="ExternalEditorCommandParseError"> Harici düzenleyici komutu ayrıştırılırken hata oluÅŸtu. @@ -5627,10 +5627,10 @@ Düzenleyici yolunu çift tırnakla çevrelemeyi deneyin. Ortamlarım </string> <string name="Command_Facebook_Tooltip"> - Facebook'ta Yayınla + Facebook'ta Yayınla </string> <string name="Command_Flickr_Tooltip"> - Flickr'a yükle + Flickr'a yükle </string> <string name="Command_Gestures_Tooltip"> Avatarınız için mimikler @@ -5861,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 > Sohbet altında "Kaydet: Sadece günlük" veya "Kaydet: Günlük ve dökümler" seçimini yapın. + Sohbetlerin günlüğü tutulmuyor. Bir günlük tutmaya baÅŸlamak için, Tercihler > 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 > Sohbet altında "Kaydet: Sadece günlük" veya "Kaydet: Günlük ve dökümler" seçimini yapın. + Bundan böyle sohbetlerin günlükleri tutulmayacak. Bir günlük tutmaya devam etmek için, Tercihler > 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. @@ -5910,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ı'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'sına geri ışınlanamazsınız. -Öğreticiyi tekrarlamak için 'Karşılama Ada'sı Kamusal Alanı'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. "[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. + 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/panel_snapshot_inventory.xml b/indra/newview/skins/default/xui/zh/panel_snapshot_inventory.xml index 094bf019b4..9c45c54a5e 100644 --- a/indra/newview/skins/default/xui/zh/panel_snapshot_inventory.xml +++ b/indra/newview/skins/default/xui/zh/panel_snapshot_inventory.xml @@ -7,7 +7,7 @@ 將圖åƒå„²å˜åˆ°æ”¶ç´å€çš„費用為 L$[UPLOAD_COST]。 è‹¥è¦å°‡åœ–åƒå˜ç‚ºæè³ªï¼Œè«‹é¸æ“‡ä¸€å€‹æ£æ–¹æ ¼å¼ã€‚ </text> <combo_box label="è§£æžåº¦" name="texture_size_combo"> - <combo_box.item label="ç›®å‰è¦–窗(512x512)" name="CurrentWindow"/> + <combo_box.item label="ç›®å‰è¦–窗" name="CurrentWindow"/> <combo_box.item label="å°ï¼ˆ128x128)" name="Small(128x128)"/> <combo_box.item label="ä¸ï¼ˆ256x256)" name="Medium(256x256)"/> <combo_box.item label="大(512x512)" name="Large(512x512)"/> diff --git a/indra/newview/skins/default/xui/zh/panel_snapshot_options.xml b/indra/newview/skins/default/xui/zh/panel_snapshot_options.xml index d7c65bb25e..d9536882ac 100644 --- a/indra/newview/skins/default/xui/zh/panel_snapshot_options.xml +++ b/indra/newview/skins/default/xui/zh/panel_snapshot_options.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_snapshot_options"> <button label="儲å˜åˆ°ç¡¬ç¢Ÿ" name="save_to_computer_btn"/> - <button label="儲å˜åˆ°æ”¶ç´å€ï¼ˆL$[AMOUNT])" name="save_to_inventory_btn"/> + <button label="儲å˜åˆ°æ”¶ç´å€" name="save_to_inventory_btn"/> <button label="分享至檔案訊æ¯ç™¼ä½ˆ" name="save_to_profile_btn"/> <button label="分享到臉書" name="send_to_facebook_btn"/> <button label="分享到推特" name="send_to_twitter_btn"/> diff --git a/indra/newview/skins/default/xui/zh/strings.xml b/indra/newview/skins/default/xui/zh/strings.xml index d053d2b30d..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],主機:<nolink>[HOSTNAME]</nolink> ([HOSTIP]) + ä½ çš„æ–¹ä½æ˜¯ [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1],地å€å:[REGION],主機:<nolink>[HOSTNAME]</nolink> 第二人生URL:<nolink>[SLURL]</nolink> ï¼ˆå…¨åŸŸåæ¨™ï¼š[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]'ã€ï¼ˆæ‰€æœ‰äººã€Œ[OWNERNAME]ã€ï¼Œä½æ–¼ã€Œ[REGIONNAME]ã€ï¼Œæ–¹ä½ã€Œ[REGIONPOS]ã€ï¼‰å·²ç²å¾—下列權é™ï¼š[PERMISSIONS]。 + 物件「[OBJECTNAME]'ã€ï¼ˆæ‰€æœ‰äººã€Œ[OWNERNAME]ã€ï¼Œä½æ–¼ã€Œ[REGIONNAME]ã€ï¼Œæ–¹ä½ã€Œ[REGIONPOS]ã€ï¼‰å·²ç²å¾—下列權é™ï¼š[PERMISSIONS]。 </string> <string name="ScriptQuestionCautionChatDenied"> - 物件「[OBJECTNAME]'ã€ï¼ˆæ‰€æœ‰äººã€Œ[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="'"> - ' + <string name="'"> + ' </string> <string name="---"> --- @@ -2979,7 +2975,7 @@ http://secondlife.com/support 求助解決å•題。 å¦‚æžœä½ ç¹¼çºŒçœ‹åˆ°æ¤è¨Šæ¯ï¼Œè«‹è¯çµ¡ [SUPPORT_SITE]。 </string> - <string name="5 O'Clock Shadow"> + <string name="5 O'Clock Shadow"> 下åˆäº”é»žçš„æ–°é¬æ¸£ </string> <string name="All White"> @@ -4567,10 +4563,14 @@ http://secondlife.com/support 求助解決å•題。 å’Œ [AGENT_NAME] 多方通話 </string> <string name="inventory_item_offered-im"> - æ”¶ç´å€ç‰©å“'[ITEM_NAME]'å·²å‘人æä¾› + æ”¶ç´å€ç‰©å“'[ITEM_NAME]'å·²å‘人æä¾› </string> <string name="inventory_folder_offered-im"> - æ”¶ç´å€è³‡æ–™å¤¾'[ITEM_NAME]'å·²å‘人æä¾› + æ”¶ç´å€è³‡æ–™å¤¾'[ITEM_NAME]'å·²å‘人æä¾› + </string> + <string name="bot_warning"> + 您æ£åœ¨ä¸Žäººå·¥æ™ºèƒ½æœºå™¨äºº [NAME] èŠå¤©ã€‚请勿分享任何个人信æ¯ã€‚ +了解更多:https://second.life/scripted-agents。 </string> <string name="share_alert"> 將收ç´å€ç‰©å“拖曳到這裡 @@ -5130,7 +5130,7 @@ http://secondlife.com/support 求助解決å•題。 <string name="ExternalEditorNotFound"> 找ä¸åˆ°ä½ 指定的外部編輯器。 請嘗試在編輯器路經å‰å¾ŒåŠ ä¸Šè‹±æ–‡é›™æ‹¬è™Ÿã€‚ -(例:"/path to my/editor" "%s") +(例:"/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"> - 無法進入地å€ã€‚ '[REGION_NAME]' 是個「技巧性åšå¥•ã€(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/test/llhttpdate_tut.cpp b/indra/test/llhttpdate_tut.cpp index a47602dec5..b580b09a9f 100644 --- a/indra/test/llhttpdate_tut.cpp +++ b/indra/test/llhttpdate_tut.cpp @@ -112,13 +112,8 @@ namespace tut void httpdate_object::test<4>() { // test localization of http dates -#if LL_WINDOWS - const char *en_locale = "english"; - const char *fr_locale = "french"; -#else - const char *en_locale = "en_GB.UTF-8"; + const char *en_locale = "en_US.UTF-8"; const char *fr_locale = "fr_FR.UTF-8"; -#endif std::string prev_locale = LLStringUtil::getLocale(); std::string prev_clocale = std::string(setlocale(LC_TIME, NULL)); diff --git a/scripts/code_tools/fix_xml_indentations.py b/scripts/code_tools/fix_xml_indentations.py index e317e4f7f6..a196b0b7d4 100644 --- a/scripts/code_tools/fix_xml_indentations.py +++ b/scripts/code_tools/fix_xml_indentations.py @@ -86,21 +86,37 @@ def save_xml(tree, file_path, xml_decl, indent_text=False, indent_tab=False, rm_ except IOError as e: print(f"Error saving file {file_path}: {e}") -def process_directory(directory_path, indent_text=False, indent_tab=False, rm_space=False, rewrite_decl=False): +def process_xml_files(file_paths, indent_text=False, indent_tab=False, rm_space=False, rewrite_decl=False): + found_files = False + if file_paths: + found_files = True + for file_path in file_paths: + xml_decl = get_xml_declaration(file_path) + tree = parse_xml_file(file_path) + if tree is not None: + save_xml(tree, file_path, xml_decl, indent_text, indent_tab, rm_space, rewrite_decl) + return found_files + +def process_directory(directory_path, indent_text=False, indent_tab=False, rm_space=False, rewrite_decl=False, file_pattern=None, recursive=False): if not os.path.isdir(directory_path): print(f"Directory not found: {directory_path}") return - xml_files = glob.glob(os.path.join(directory_path, "*.xml")) - if not xml_files: - print(f"No XML files found in directory: {directory_path}") - return + pattern = file_pattern if file_pattern else "*.xml" + found_files = False + + if not recursive: + # Non-recursive mode + xml_files = glob.glob(os.path.join(directory_path, pattern)) + found_files = process_xml_files(xml_files, indent_text, indent_tab, rm_space, rewrite_decl) + else: + # Recursive mode + for root, dirs, files in os.walk(directory_path): + xml_files = glob.glob(os.path.join(root, pattern)) + found_files = process_xml_files(xml_files, indent_text, indent_tab, rm_space, rewrite_decl) - for file_path in xml_files: - xml_decl = get_xml_declaration(file_path) - tree = parse_xml_file(file_path) - if tree is not None: - save_xml(tree, file_path, xml_decl, indent_text, indent_tab, rm_space, rewrite_decl) + if not found_files: + print(f"No XML files found in {'directory tree' if recursive else 'directory'}: {directory_path}") if __name__ == "__main__": if len(sys.argv) < 2 or '--help' in sys.argv: @@ -112,9 +128,13 @@ if __name__ == "__main__": print(" --indent-tab Uses tabs instead of spaces for indentation.") print(" --rm-space Removes spaces in self-closing tags.") print(" --rewrite_decl Replaces the XML declaration line.") + print(" --file <pattern> Only process files matching the pattern") + print(" --recursive Process files in all subdirectories") print("\nCommon Usage:") print(" To format XML files with text indentation, tab indentation, and removal of spaces in self-closing tags:") print(" python fix_xml_indentations.py /path/to/xmls --indent-text --indent-tab --rm-space") + print("\n To format specific XML files recursively through all subdirectories:") + print(" python fix_xml_indentations.py /path/to/xmls --file floater_*.xml --recursive") sys.exit(1) directory_path = sys.argv[1] @@ -122,4 +142,16 @@ if __name__ == "__main__": indent_tab = '--indent-tab' in sys.argv rm_space = '--rm-space' in sys.argv rewrite_decl = '--rewrite_decl' in sys.argv - process_directory(directory_path, indent_text, indent_tab, rm_space, rewrite_decl) + recursive = '--recursive' in sys.argv + + # Get file pattern if specified + file_pattern = None + if '--file' in sys.argv: + try: + file_index = sys.argv.index('--file') + 1 + if file_index < len(sys.argv): + file_pattern = sys.argv[file_index] + except ValueError: + pass + + process_directory(directory_path, indent_text, indent_tab, rm_space, rewrite_decl, file_pattern, recursive) diff --git a/scripts/messages/message_template.msg b/scripts/messages/message_template.msg index 1450c111c2..40ba2cc6b6 100755 --- a/scripts/messages/message_template.msg +++ b/scripts/messages/message_template.msg @@ -4,9 +4,9 @@ version 2.0 // The Version 2.0 template requires preservation of message // numbers. Each message must be numbered relative to the -// other messages of that type. The current highest number +// other messages of that type. The current highest number // for each type is listed below: -// Low: 430 +// Low: 431 // Medium: 18 // High: 30 // PLEASE UPDATE THIS WHEN YOU ADD A NEW MESSAGE! @@ -19,17 +19,17 @@ version 2.0 // Test Message { - TestMessage Low 1 NotTrusted Zerocoded - { - TestBlock1 Single - { Test1 U32 } - } - { - NeighborBlock Multiple 4 - { Test0 U32 } - { Test1 U32 } - { Test2 U32 } - } + TestMessage Low 1 NotTrusted Zerocoded + { + TestBlock1 Single + { Test1 U32 } + } + { + NeighborBlock Multiple 4 + { Test0 U32 } + { Test1 U32 } + { Test2 U32 } + } } // ************************************************************************* @@ -43,28 +43,28 @@ version 2.0 // Packet Ack - Ack a list of packets sent reliable { - PacketAck Fixed 0xFFFFFFFB NotTrusted Unencoded - { - Packets Variable - { ID U32 } - } + PacketAck Fixed 0xFFFFFFFB NotTrusted Unencoded + { + Packets Variable + { ID U32 } + } } // OpenCircuit - Tells the recipient's messaging system to open the descibed circuit { - OpenCircuit Fixed 0xFFFFFFFC NotTrusted Unencoded UDPBlackListed - { - CircuitInfo Single - { IP IPADDR } - { Port IPPORT } - } + OpenCircuit Fixed 0xFFFFFFFC NotTrusted Unencoded UDPBlackListed + { + CircuitInfo Single + { IP IPADDR } + { Port IPPORT } + } } // CloseCircuit - Tells the recipient's messaging system to close the descibed circuit { - CloseCircuit Fixed 0xFFFFFFFD NotTrusted Unencoded + CloseCircuit Fixed 0xFFFFFFFD NotTrusted Unencoded } @@ -76,22 +76,22 @@ version 2.0 // PingID is used to determine how backlogged the ping was that was // returned (or how hosed the other side is) { - StartPingCheck High 1 NotTrusted Unencoded - { - PingID Single - { PingID U8 } - { OldestUnacked U32 } // Current oldest "unacked" packet on the sender side - } + StartPingCheck High 1 NotTrusted Unencoded + { + PingID Single + { PingID U8 } + { OldestUnacked U32 } // Current oldest "unacked" packet on the sender side + } } // CompletePingCheck - used to measure circuit ping times { - CompletePingCheck High 2 NotTrusted Unencoded - { - PingID Single - { PingID U8 } - } + CompletePingCheck High 2 NotTrusted Unencoded + { + PingID Single + { PingID U8 } + } } // space->sim @@ -99,13 +99,13 @@ version 2.0 // AddCircuitCode - Tells the recipient's messaging system that this code // is for a legal circuit { - AddCircuitCode Low 2 Trusted Unencoded - { - CircuitCode Single - { Code U32 } - { SessionID LLUUID } - { AgentID LLUUID } // WARNING - may be null in valid message - } + AddCircuitCode Low 2 Trusted Unencoded + { + CircuitCode Single + { Code U32 } + { SessionID LLUUID } + { AgentID LLUUID } // WARNING - may be null in valid message + } } // viewer->sim @@ -115,13 +115,13 @@ version 2.0 // id of the process, which every server will generate on startup and // the viewer will be handed after login. { - UseCircuitCode Low 3 NotTrusted Unencoded - { - CircuitCode Single - { Code U32 } - { SessionID LLUUID } - { ID LLUUID } // agent id - } + UseCircuitCode Low 3 NotTrusted Unencoded + { + CircuitCode Single + { Code U32 } + { SessionID LLUUID } + { ID LLUUID } // agent id + } } @@ -131,17 +131,17 @@ version 2.0 // Neighbor List - Passed anytime neighbors change { - NeighborList High 3 Trusted Unencoded - { - NeighborBlock Multiple 4 - { IP IPADDR } - { Port IPPORT } - { PublicIP IPADDR } - { PublicPort IPPORT } - { RegionID LLUUID } - { Name Variable 1 } // string - { SimAccess U8 } - } + NeighborList High 3 Trusted Unencoded + { + NeighborBlock Multiple 4 + { IP IPADDR } + { Port IPPORT } + { PublicIP IPADDR } + { PublicPort IPPORT } + { RegionID LLUUID } + { Name Variable 1 } // string + { SimAccess U8 } + } } @@ -149,22 +149,22 @@ version 2.0 // simulator -> dataserver // reliable { - AvatarTextureUpdate Low 4 Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { TexturesChanged BOOL } - } - { - WearableData Variable - { CacheID LLUUID } - { TextureIndex U8 } - { HostName Variable 1 } - } - { - TextureData Variable - { TextureID LLUUID } - } + AvatarTextureUpdate Low 4 Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { TexturesChanged BOOL } + } + { + WearableData Variable + { CacheID LLUUID } + { TextureIndex U8 } + { HostName Variable 1 } + } + { + TextureData Variable + { TextureID LLUUID } + } } @@ -172,11 +172,11 @@ version 2.0 // simulator -> dataserver // reliable { - SimulatorMapUpdate Low 5 Trusted Unencoded - { - MapData Single - { Flags U32 } - } + SimulatorMapUpdate Low 5 Trusted Unencoded + { + MapData Single + { Flags U32 } + } } // SimulatorSetMap @@ -184,27 +184,27 @@ version 2.0 // reliable // Used to upload a map image into the database (currently used only for Land For Sale) { - SimulatorSetMap Low 6 Trusted Unencoded - { - MapData Single - { RegionHandle U64 } - { Type S32 } - { MapImage LLUUID } - } + SimulatorSetMap Low 6 Trusted Unencoded + { + MapData Single + { RegionHandle U64 } + { Type S32 } + { MapImage LLUUID } + } } // SubscribeLoad // spaceserver -> simulator // reliable { - SubscribeLoad Low 7 Trusted Unencoded + SubscribeLoad Low 7 Trusted Unencoded } // UnsubscribeLoad // spaceserver -> simulator // reliable { - UnsubscribeLoad Low 8 Trusted Unencoded + UnsubscribeLoad Low 8 Trusted Unencoded } @@ -215,95 +215,95 @@ version 2.0 // SimulatorReady - indicates the sim has finished loading its state // and is ready to receive updates from others { - SimulatorReady Low 9 Trusted Zerocoded - { - SimulatorBlock Single - { SimName Variable 1 } - { SimAccess U8 } - { RegionFlags U32 } - { RegionID LLUUID } - { EstateID U32 } - { ParentEstateID U32 } - } - { - TelehubBlock Single - { HasTelehub BOOL } - { TelehubPos LLVector3 } - } + SimulatorReady Low 9 Trusted Zerocoded + { + SimulatorBlock Single + { SimName Variable 1 } + { SimAccess U8 } + { RegionFlags U32 } + { RegionID LLUUID } + { EstateID U32 } + { ParentEstateID U32 } + } + { + TelehubBlock Single + { HasTelehub BOOL } + { TelehubPos LLVector3 } + } } // TelehubInfo - fill in the UI for telehub creation floater. // sim -> viewer // reliable { - TelehubInfo Low 10 Trusted Unencoded - { - TelehubBlock Single - { ObjectID LLUUID } // null if no telehub - { ObjectName Variable 1 } // string - { TelehubPos LLVector3 } // fallback if viewer can't find object - { TelehubRot LLQuaternion } - } - { - SpawnPointBlock Variable - { SpawnPointPos LLVector3 } // relative to telehub position - } + TelehubInfo Low 10 Trusted Unencoded + { + TelehubBlock Single + { ObjectID LLUUID } // null if no telehub + { ObjectName Variable 1 } // string + { TelehubPos LLVector3 } // fallback if viewer can't find object + { TelehubRot LLQuaternion } + } + { + SpawnPointBlock Variable + { SpawnPointPos LLVector3 } // relative to telehub position + } } // SimulatorPresentAtLocation - indicates that the sim is present at a grid // location and passes what it believes its neighbors are { - SimulatorPresentAtLocation Low 11 Trusted Unencoded - { - SimulatorPublicHostBlock Single - { Port IPPORT } - { SimulatorIP IPADDR } - { GridX U32 } - { GridY U32 } - } - { - NeighborBlock Multiple 4 - { IP IPADDR } - { Port IPPORT } - } - { - SimulatorBlock Single - { SimName Variable 1 } - { SimAccess U8 } - { RegionFlags U32 } - { RegionID LLUUID } - { EstateID U32 } - { ParentEstateID U32 } - } - { - TelehubBlock Variable - { HasTelehub BOOL } - { TelehubPos LLVector3 } - } + SimulatorPresentAtLocation Low 11 Trusted Unencoded + { + SimulatorPublicHostBlock Single + { Port IPPORT } + { SimulatorIP IPADDR } + { GridX U32 } + { GridY U32 } + } + { + NeighborBlock Multiple 4 + { IP IPADDR } + { Port IPPORT } + } + { + SimulatorBlock Single + { SimName Variable 1 } + { SimAccess U8 } + { RegionFlags U32 } + { RegionID LLUUID } + { EstateID U32 } + { ParentEstateID U32 } + } + { + TelehubBlock Variable + { HasTelehub BOOL } + { TelehubPos LLVector3 } + } } // SimulatorLoad // simulator -> spaceserver // reliable { - SimulatorLoad Low 12 Trusted Unencoded - { - SimulatorLoad Single - { TimeDilation F32 } - { AgentCount S32 } - { CanAcceptAgents BOOL } - } - { - AgentList Variable - { CircuitCode U32 } - { X U8 } - { Y U8 } - } + SimulatorLoad Low 12 Trusted Unencoded + { + SimulatorLoad Single + { TimeDilation F32 } + { AgentCount S32 } + { CanAcceptAgents BOOL } + } + { + AgentList Variable + { CircuitCode U32 } + { X U8 } + { Y U8 } + } } // Simulator Shutdown Request - Tells spaceserver that a simulator is trying to shutdown { - SimulatorShutdownRequest Low 13 Trusted Unencoded + SimulatorShutdownRequest Low 13 Trusted Unencoded } // **************************************************************************** @@ -312,37 +312,37 @@ version 2.0 // sim -> dataserver { - RegionPresenceRequestByRegionID Low 14 Trusted Unencoded - { - RegionData Variable - { RegionID LLUUID } - } + RegionPresenceRequestByRegionID Low 14 Trusted Unencoded + { + RegionData Variable + { RegionID LLUUID } + } } // sim -> dataserver { - RegionPresenceRequestByHandle Low 15 Trusted Unencoded - { - RegionData Variable - { RegionHandle U64 } - } + RegionPresenceRequestByHandle Low 15 Trusted Unencoded + { + RegionData Variable + { RegionHandle U64 } + } } // dataserver -> sim { - RegionPresenceResponse Low 16 Trusted Zerocoded - { - RegionData Variable - { RegionID LLUUID } - { RegionHandle U64 } - { InternalRegionIP IPADDR } - { ExternalRegionIP IPADDR } - { RegionPort IPPORT } - { ValidUntil F64 } - { Message Variable 1 } - } + RegionPresenceResponse Low 16 Trusted Zerocoded + { + RegionData Variable + { RegionID LLUUID } + { RegionHandle U64 } + { InternalRegionIP IPADDR } + { ExternalRegionIP IPADDR } + { RegionPort IPPORT } + { ValidUntil F64 } + { Message Variable 1 } + } } - + // **************************************************************************** // Simulator to dataserver messages @@ -350,42 +350,42 @@ version 2.0 // Updates SimName, EstateID and SimAccess using RegionID as a key { - UpdateSimulator Low 17 Trusted Unencoded - { - SimulatorInfo Single - { RegionID LLUUID } - { SimName Variable 1 } - { EstateID U32 } - { SimAccess U8 } - } + UpdateSimulator Low 17 Trusted Unencoded + { + SimulatorInfo Single + { RegionID LLUUID } + { SimName Variable 1 } + { EstateID U32 } + { SimAccess U8 } + } } // record dwell time. { - LogDwellTime Low 18 Trusted Unencoded - { - DwellInfo Single - { AgentID LLUUID } - { SessionID LLUUID } - { Duration F32 } - { SimName Variable 1 } - { RegionX U32 } - { RegionY U32 } - { AvgAgentsInView U8 } - { AvgViewerFPS U8 } - } + LogDwellTime Low 18 Trusted Unencoded + { + DwellInfo Single + { AgentID LLUUID } + { SessionID LLUUID } + { Duration F32 } + { SimName Variable 1 } + { RegionX U32 } + { RegionY U32 } + { AvgAgentsInView U8 } + { AvgViewerFPS U8 } + } } // Disabled feature response message { - FeatureDisabled Low 19 Trusted Unencoded - { - FailureInfo Single - { ErrorMessage Variable 1 } - { AgentID LLUUID } - { TransactionID LLUUID } - } + FeatureDisabled Low 19 Trusted Unencoded + { + FailureInfo Single + { ErrorMessage Variable 1 } + { AgentID LLUUID } + { TransactionID LLUUID } + } } @@ -393,47 +393,47 @@ version 2.0 // from either the simulator or the dataserver, depending on how // the transaction failed. { - LogFailedMoneyTransaction Low 20 Trusted Unencoded - { - TransactionData Single - { TransactionID LLUUID } - { TransactionTime U32 } // utc seconds since epoch - { TransactionType S32 } // see lltransactiontypes.h - { SourceID LLUUID } - { DestID LLUUID } // destination of the transfer - { Flags U8 } - { Amount S32 } - { SimulatorIP IPADDR } // U32 encoded IP - { GridX U32 } - { GridY U32 } - { FailureType U8 } - } + LogFailedMoneyTransaction Low 20 Trusted Unencoded + { + TransactionData Single + { TransactionID LLUUID } + { TransactionTime U32 } // utc seconds since epoch + { TransactionType S32 } // see lltransactiontypes.h + { SourceID LLUUID } + { DestID LLUUID } // destination of the transfer + { Flags U8 } + { Amount S32 } + { SimulatorIP IPADDR } // U32 encoded IP + { GridX U32 } + { GridY U32 } + { FailureType U8 } + } } // complaint/bug-report - sim -> dataserver. see UserReport for details. // reliable { - UserReportInternal Low 21 Trusted Zerocoded - { - ReportData Single - { ReportType U8 } - { Category U8 } - { ReporterID LLUUID } - { ViewerPosition LLVector3 } - { AgentPosition LLVector3 } - { ScreenshotID LLUUID } - { ObjectID LLUUID } - { OwnerID LLUUID } - { LastOwnerID LLUUID } - { CreatorID LLUUID } - { RegionID LLUUID } - { AbuserID LLUUID } - { AbuseRegionName Variable 1 } - { AbuseRegionID LLUUID } - { Summary Variable 1 } - { Details Variable 2 } - { VersionString Variable 1 } - } + UserReportInternal Low 21 Trusted Zerocoded + { + ReportData Single + { ReportType U8 } + { Category U8 } + { ReporterID LLUUID } + { ViewerPosition LLVector3 } + { AgentPosition LLVector3 } + { ScreenshotID LLUUID } + { ObjectID LLUUID } + { OwnerID LLUUID } + { LastOwnerID LLUUID } + { CreatorID LLUUID } + { RegionID LLUUID } + { AbuserID LLUUID } + { AbuseRegionName Variable 1 } + { AbuseRegionID LLUUID } + { Summary Variable 1 } + { Details Variable 2 } + { VersionString Variable 1 } + } } // SetSimStatusInDatabase @@ -441,18 +441,18 @@ version 2.0 // sim -> dataserver // reliable { - SetSimStatusInDatabase Low 22 Trusted Unencoded - { - Data Single - { RegionID LLUUID } - { HostName Variable 1 } - { X S32 } - { Y S32 } - { PID S32 } - { AgentCount S32 } - { TimeToLive S32 } // in seconds - { Status Variable 1 } - } + SetSimStatusInDatabase Low 22 Trusted Unencoded + { + Data Single + { RegionID LLUUID } + { HostName Variable 1 } + { X S32 } + { Y S32 } + { PID S32 } + { AgentCount S32 } + { TimeToLive S32 } // in seconds + { Status Variable 1 } + } } // SetSimPresenceInDatabase @@ -460,18 +460,18 @@ version 2.0 // that a given simulator is present and valid for a set amount of // time { - SetSimPresenceInDatabase Low 23 Trusted Unencoded - { - SimData Single - { RegionID LLUUID } - { HostName Variable 1 } - { GridX U32 } - { GridY U32 } - { PID S32 } - { AgentCount S32 } - { TimeToLive S32 } // in seconds - { Status Variable 1 } - } + SetSimPresenceInDatabase Low 23 Trusted Unencoded UDPDeprecated + { + SimData Single + { RegionID LLUUID } + { HostName Variable 1 } + { GridX U32 } + { GridY U32 } + { PID S32 } + { AgentCount S32 } + { TimeToLive S32 } // in seconds + { Status Variable 1 } + } } // *************************************************************************** @@ -480,32 +480,32 @@ version 2.0 // once we use local stats, this will include a region handle { - EconomyDataRequest Low 24 NotTrusted Unencoded + EconomyDataRequest Low 24 NotTrusted Unencoded } // dataserver to sim, response w/ econ data { - EconomyData Low 25 Trusted Zerocoded - { - Info Single - { ObjectCapacity S32 } - { ObjectCount S32 } - { PriceEnergyUnit S32 } - { PriceObjectClaim S32 } - { PricePublicObjectDecay S32 } - { PricePublicObjectDelete S32 } - { PriceParcelClaim S32 } - { PriceParcelClaimFactor F32 } - { PriceUpload S32 } - { PriceRentLight S32 } - { TeleportMinPrice S32 } - { TeleportPriceExponent F32 } - { EnergyEfficiency F32 } - { PriceObjectRent F32 } - { PriceObjectScaleFactor F32 } - { PriceParcelRent S32 } - { PriceGroupCreate S32 } - } + EconomyData Low 25 Trusted Zerocoded + { + Info Single + { ObjectCapacity S32 } + { ObjectCount S32 } + { PriceEnergyUnit S32 } + { PriceObjectClaim S32 } + { PricePublicObjectDecay S32 } + { PricePublicObjectDelete S32 } + { PriceParcelClaim S32 } + { PriceParcelClaimFactor F32 } + { PriceUpload S32 } + { PriceRentLight S32 } + { TeleportMinPrice S32 } + { TeleportPriceExponent F32 } + { EnergyEfficiency F32 } + { PriceObjectRent F32 } + { PriceObjectScaleFactor F32 } + { PriceParcelRent S32 } + { PriceGroupCreate S32 } + } } // *************************************************************************** @@ -517,75 +517,75 @@ version 2.0 // viewer -> sim -> data // reliable { - AvatarPickerRequest Low 26 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { QueryID LLUUID } - } - { - Data Single - { Name Variable 1 } - } + AvatarPickerRequest Low 26 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { QueryID LLUUID } + } + { + Data Single + { Name Variable 1 } + } } // backend implementation which tracks if the user is a god. { - AvatarPickerRequestBackend Low 27 Trusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { QueryID LLUUID } - { GodLevel U8 } - } - { - Data Single - { Name Variable 1 } - } + AvatarPickerRequestBackend Low 27 Trusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { QueryID LLUUID } + { GodLevel U8 } + } + { + Data Single + { Name Variable 1 } + } } // AvatarPickerReply // List of names to select a person // reliable { - AvatarPickerReply Low 28 Trusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { QueryID LLUUID } - } - { - Data Variable - { AvatarID LLUUID } - { FirstName Variable 1 } - { LastName Variable 1 } - } + AvatarPickerReply Low 28 Trusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { QueryID LLUUID } + } + { + Data Variable + { AvatarID LLUUID } + { FirstName Variable 1 } + { LastName Variable 1 } + } } // PlacesQuery // Used for getting a list of places for the group land panel // and the user land holdings panel. NOT for the directory. { - PlacesQuery Low 29 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { QueryID LLUUID } - } - { - TransactionData Single - { TransactionID LLUUID } - } - { - QueryData Single - { QueryText Variable 1 } - { QueryFlags U32 } - { Category S8 } - { SimName Variable 1 } - } + PlacesQuery Low 29 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { QueryID LLUUID } + } + { + TransactionData Single + { TransactionID LLUUID } + } + { + QueryData Single + { QueryText Variable 1 } + { QueryFlags U32 } + { Category S8 } + { SimName Variable 1 } + } } // PlacesReply @@ -594,112 +594,112 @@ version 2.0 // global x,y,z. Otherwise, use center of the AABB. // reliable { - PlacesReply Low 30 Trusted Zerocoded UDPDeprecated - { - AgentData Single - { AgentID LLUUID } - { QueryID LLUUID } - } - { - TransactionData Single - { TransactionID LLUUID } - } - { - QueryData Variable - { OwnerID LLUUID } - { Name Variable 1 } - { Desc Variable 1 } - { ActualArea S32 } - { BillableArea S32 } - { Flags U8 } - { GlobalX F32 } // meters - { GlobalY F32 } // meters - { GlobalZ F32 } // meters - { SimName Variable 1 } - { SnapshotID LLUUID } - { Dwell F32 } - { Price S32 } - //{ ProductSKU Variable 1 } - } + PlacesReply Low 30 Trusted Zerocoded UDPDeprecated + { + AgentData Single + { AgentID LLUUID } + { QueryID LLUUID } + } + { + TransactionData Single + { TransactionID LLUUID } + } + { + QueryData Variable + { OwnerID LLUUID } + { Name Variable 1 } + { Desc Variable 1 } + { ActualArea S32 } + { BillableArea S32 } + { Flags U8 } + { GlobalX F32 } // meters + { GlobalY F32 } // meters + { GlobalZ F32 } // meters + { SimName Variable 1 } + { SnapshotID LLUUID } + { Dwell F32 } + { Price S32 } + //{ ProductSKU Variable 1 } + } } // DirFindQuery viewer->sim -// Message to start asking questions for the directory -{ - DirFindQuery Low 31 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - QueryData Single - { QueryID LLUUID } - { QueryText Variable 1 } - { QueryFlags U32 } - { QueryStart S32 } // prev/next page support - } +// Message to start asking questions for the directory +{ + DirFindQuery Low 31 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + QueryData Single + { QueryID LLUUID } + { QueryText Variable 1 } + { QueryFlags U32 } + { QueryStart S32 } // prev/next page support + } } // DirFindQueryBackend sim->data // Trusted message generated by receipt of DirFindQuery to sim. { - DirFindQueryBackend Low 32 Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - QueryData Single - { QueryID LLUUID } - { QueryText Variable 1 } - { QueryFlags U32 } - { QueryStart S32 } // prev/next page support - { EstateID U32 } - { Godlike BOOL } - } + DirFindQueryBackend Low 32 Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + QueryData Single + { QueryID LLUUID } + { QueryText Variable 1 } + { QueryFlags U32 } + { QueryStart S32 } // prev/next page support + { EstateID U32 } + { Godlike BOOL } + } } // DirPlacesQuery viewer->sim // Used for the Find directory of places { - DirPlacesQuery Low 33 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - QueryData Single - { QueryID LLUUID } - { QueryText Variable 1 } - { QueryFlags U32 } - { Category S8 } - { SimName Variable 1 } - { QueryStart S32 } - } + DirPlacesQuery Low 33 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + QueryData Single + { QueryID LLUUID } + { QueryText Variable 1 } + { QueryFlags U32 } + { Category S8 } + { SimName Variable 1 } + { QueryStart S32 } + } } // DirPlacesQueryBackend sim->dataserver // Used for the Find directory of places. { - DirPlacesQueryBackend Low 34 Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - QueryData Single - { QueryID LLUUID } - { QueryText Variable 1 } - { QueryFlags U32 } - { Category S8 } - { SimName Variable 1 } - { EstateID U32 } - { Godlike BOOL } - { QueryStart S32 } - } + DirPlacesQueryBackend Low 34 Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + QueryData Single + { QueryID LLUUID } + { QueryText Variable 1 } + { QueryFlags U32 } + { Category S8 } + { SimName Variable 1 } + { EstateID U32 } + { Godlike BOOL } + { QueryStart S32 } + } } // DirPlacesReply dataserver->sim->viewer @@ -707,164 +707,164 @@ version 2.0 // global x,y,z. Otherwise, use center of the AABB. // reliable { - DirPlacesReply Low 35 Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - QueryData Variable - { QueryID LLUUID } - } - { - QueryReplies Variable - { ParcelID LLUUID } - { Name Variable 1 } - { ForSale BOOL } - { Auction BOOL } - { Dwell F32 } - } - { - StatusData Variable - { Status U32 } - } + DirPlacesReply Low 35 Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + QueryData Variable + { QueryID LLUUID } + } + { + QueryReplies Variable + { ParcelID LLUUID } + { Name Variable 1 } + { ForSale BOOL } + { Auction BOOL } + { Dwell F32 } + } + { + StatusData Variable + { Status U32 } + } } // DirPeopleReply { - DirPeopleReply Low 36 Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - QueryData Single - { QueryID LLUUID } - } - { - QueryReplies Variable - { AgentID LLUUID } - { FirstName Variable 1 } - { LastName Variable 1 } - { Group Variable 1 } - { Online BOOL } - { Reputation S32 } - } + DirPeopleReply Low 36 Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + QueryData Single + { QueryID LLUUID } + } + { + QueryReplies Variable + { AgentID LLUUID } + { FirstName Variable 1 } + { LastName Variable 1 } + { Group Variable 1 } + { Online BOOL } + { Reputation S32 } + } } // DirEventsReply { - DirEventsReply Low 37 Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - QueryData Single - { QueryID LLUUID } - } - { - QueryReplies Variable - { OwnerID LLUUID } - { Name Variable 1 } - { EventID U32 } - { Date Variable 1 } - { UnixTime U32 } - { EventFlags U32 } - } - { - StatusData Variable - { Status U32 } - } + DirEventsReply Low 37 Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + QueryData Single + { QueryID LLUUID } + } + { + QueryReplies Variable + { OwnerID LLUUID } + { Name Variable 1 } + { EventID U32 } + { Date Variable 1 } + { UnixTime U32 } + { EventFlags U32 } + } + { + StatusData Variable + { Status U32 } + } } // DirGroupsReply // dataserver -> userserver -> viewer // reliable { - DirGroupsReply Low 38 Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - QueryData Single - { QueryID LLUUID } - } - { - QueryReplies Variable - { GroupID LLUUID } - { GroupName Variable 1 } // string - { Members S32 } - { SearchOrder F32 } - } + DirGroupsReply Low 38 Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + QueryData Single + { QueryID LLUUID } + } + { + QueryReplies Variable + { GroupID LLUUID } + { GroupName Variable 1 } // string + { Members S32 } + { SearchOrder F32 } + } } // DirClassifiedQuery viewer->sim // reliable { - DirClassifiedQuery Low 39 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - QueryData Single - { QueryID LLUUID } - { QueryText Variable 1 } - { QueryFlags U32 } - { Category U32 } - { QueryStart S32 } - } + DirClassifiedQuery Low 39 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + QueryData Single + { QueryID LLUUID } + { QueryText Variable 1 } + { QueryFlags U32 } + { Category U32 } + { QueryStart S32 } + } } // DirClassifiedQueryBackend sim->dataserver // reliable { - DirClassifiedQueryBackend Low 40 Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - QueryData Single - { QueryID LLUUID } - { QueryText Variable 1 } - { QueryFlags U32 } - { Category U32 } - { EstateID U32 } - { Godlike BOOL } - { QueryStart S32 } - } + DirClassifiedQueryBackend Low 40 Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + QueryData Single + { QueryID LLUUID } + { QueryText Variable 1 } + { QueryFlags U32 } + { Category U32 } + { EstateID U32 } + { Godlike BOOL } + { QueryStart S32 } + } } // DirClassifiedReply dataserver->sim->viewer // reliable { - DirClassifiedReply Low 41 Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - QueryData Single - { QueryID LLUUID } - } - { - QueryReplies Variable - { ClassifiedID LLUUID } - { Name Variable 1 } - { ClassifiedFlags U8 } - { CreationDate U32 } - { ExpirationDate U32 } - { PriceForListing S32 } - } - { - StatusData Variable - { Status U32 } - } + DirClassifiedReply Low 41 Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + QueryData Single + { QueryID LLUUID } + } + { + QueryReplies Variable + { ClassifiedID LLUUID } + { Name Variable 1 } + { ClassifiedFlags U8 } + { CreationDate U32 } + { ExpirationDate U32 } + { PriceForListing S32 } + } + { + StatusData Variable + { Status U32 } + } } @@ -874,17 +874,17 @@ version 2.0 // This fills in the tabs of the Classifieds panel. // reliable { - AvatarClassifiedReply Low 42 Trusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { TargetID LLUUID } - } - { - Data Variable - { ClassifiedID LLUUID } - { Name Variable 1 } - } + AvatarClassifiedReply Low 42 Trusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { TargetID LLUUID } + } + { + Data Variable + { ClassifiedID LLUUID } + { Name Variable 1 } + } } @@ -893,16 +893,16 @@ version 2.0 // simulator -> dataserver // reliable { - ClassifiedInfoRequest Low 43 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - Data Single - { ClassifiedID LLUUID } - } + ClassifiedInfoRequest Low 43 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + Data Single + { ClassifiedID LLUUID } + } } @@ -911,28 +911,28 @@ version 2.0 // simulator -> viewer // reliable { - ClassifiedInfoReply Low 44 Trusted Unencoded + ClassifiedInfoReply Low 44 Trusted Unencoded { - AgentData Single - { AgentID LLUUID } + AgentData Single + { AgentID LLUUID } } { - Data Single - { ClassifiedID LLUUID } - { CreatorID LLUUID } - { CreationDate U32 } - { ExpirationDate U32 } - { Category U32 } - { Name Variable 1 } - { Desc Variable 2 } - { ParcelID LLUUID } - { ParentEstate U32 } - { SnapshotID LLUUID } - { SimName Variable 1 } - { PosGlobal LLVector3d } - { ParcelName Variable 1 } - { ClassifiedFlags U8 } - { PriceForListing S32 } + Data Single + { ClassifiedID LLUUID } + { CreatorID LLUUID } + { CreationDate U32 } + { ExpirationDate U32 } + { Category U32 } + { Name Variable 1 } + { Desc Variable 2 } + { ParcelID LLUUID } + { ParentEstate U32 } + { SnapshotID LLUUID } + { SimName Variable 1 } + { PosGlobal LLVector3d } + { ParcelName Variable 1 } + { ClassifiedFlags U8 } + { PriceForListing S32 } } } @@ -943,25 +943,25 @@ version 2.0 // viewer -> simulator -> dataserver // reliable { - ClassifiedInfoUpdate Low 45 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - Data Single - { ClassifiedID LLUUID } - { Category U32 } - { Name Variable 1 } - { Desc Variable 2 } - { ParcelID LLUUID } - { ParentEstate U32 } - { SnapshotID LLUUID } - { PosGlobal LLVector3d } - { ClassifiedFlags U8 } - { PriceForListing S32 } - } + ClassifiedInfoUpdate Low 45 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + Data Single + { ClassifiedID LLUUID } + { Category U32 } + { Name Variable 1 } + { Desc Variable 2 } + { ParcelID LLUUID } + { ParentEstate U32 } + { SnapshotID LLUUID } + { PosGlobal LLVector3d } + { ClassifiedFlags U8 } + { PriceForListing S32 } + } } @@ -970,36 +970,36 @@ version 2.0 // viewer -> simulator -> dataserver // reliable { - ClassifiedDelete Low 46 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - Data Single - { ClassifiedID LLUUID } - } + ClassifiedDelete Low 46 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + Data Single + { ClassifiedID LLUUID } + } } // ClassifiedGodDelete // Delete a classified from the database. -// QueryID is needed so database can send a repeat list of +// QueryID is needed so database can send a repeat list of // classified. // viewer -> simulator -> dataserver // reliable { - ClassifiedGodDelete Low 47 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - Data Single - { ClassifiedID LLUUID } - { QueryID LLUUID } - } + ClassifiedGodDelete Low 47 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + Data Single + { ClassifiedID LLUUID } + { QueryID LLUUID } + } } @@ -1007,168 +1007,168 @@ version 2.0 // Special query for the land for sale/auction panel. // reliable { - DirLandQuery Low 48 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - QueryData Single - { QueryID LLUUID } - { QueryFlags U32 } - { SearchType U32 } - { Price S32 } - { Area S32 } - { QueryStart S32 } - } + DirLandQuery Low 48 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + QueryData Single + { QueryID LLUUID } + { QueryFlags U32 } + { SearchType U32 } + { Price S32 } + { Area S32 } + { QueryStart S32 } + } } // DirLandQueryBackend sim->dataserver // Special query for the land for sale/auction panel. { - DirLandQueryBackend Low 49 Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - QueryData Single - { QueryID LLUUID } - { QueryFlags U32 } - { SearchType U32 } - { Price S32 } - { Area S32 } - { QueryStart S32 } - { EstateID U32 } - { Godlike BOOL } - } + DirLandQueryBackend Low 49 Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + QueryData Single + { QueryID LLUUID } + { QueryFlags U32 } + { SearchType U32 } + { Price S32 } + { Area S32 } + { QueryStart S32 } + { EstateID U32 } + { Godlike BOOL } + } } // DirLandReply // dataserver -> simulator -> viewer // reliable { - DirLandReply Low 50 Trusted Zerocoded UDPDeprecated - { - AgentData Single - { AgentID LLUUID } - } - { - QueryData Single - { QueryID LLUUID } - } - { - QueryReplies Variable - { ParcelID LLUUID } - { Name Variable 1 } - { Auction BOOL } - { ForSale BOOL } - { SalePrice S32 } - { ActualArea S32 } - //{ ProductSKU Variable 1 } - } + DirLandReply Low 50 Trusted Zerocoded UDPDeprecated + { + AgentData Single + { AgentID LLUUID } + } + { + QueryData Single + { QueryID LLUUID } + } + { + QueryReplies Variable + { ParcelID LLUUID } + { Name Variable 1 } + { Auction BOOL } + { ForSale BOOL } + { SalePrice S32 } + { ActualArea S32 } + //{ ProductSKU Variable 1 } + } } // DEPRECATED: DirPopularQuery viewer->sim // Special query for the land for sale/auction panel. // reliable { - DirPopularQuery Low 51 NotTrusted Zerocoded Deprecated - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - QueryData Single - { QueryID LLUUID } - { QueryFlags U32 } - } + DirPopularQuery Low 51 NotTrusted Zerocoded Deprecated + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + QueryData Single + { QueryID LLUUID } + { QueryFlags U32 } + } } // DEPRECATED: DirPopularQueryBackend sim->dataserver // Special query for the land for sale/auction panel. // reliable { - DirPopularQueryBackend Low 52 Trusted Zerocoded Deprecated - { - AgentData Single - { AgentID LLUUID } - } - { - QueryData Single - { QueryID LLUUID } - { QueryFlags U32 } - { EstateID U32 } - { Godlike BOOL } - } + DirPopularQueryBackend Low 52 Trusted Zerocoded Deprecated + { + AgentData Single + { AgentID LLUUID } + } + { + QueryData Single + { QueryID LLUUID } + { QueryFlags U32 } + { EstateID U32 } + { Godlike BOOL } + } } // DEPRECATED: DirPopularReply // dataserver -> simulator -> viewer // reliable { - DirPopularReply Low 53 Trusted Zerocoded Deprecated - { - AgentData Single - { AgentID LLUUID } - } - { - QueryData Single - { QueryID LLUUID } - } - { - QueryReplies Variable - { ParcelID LLUUID } - { Name Variable 1 } - { Dwell F32 } - } + DirPopularReply Low 53 Trusted Zerocoded Deprecated + { + AgentData Single + { AgentID LLUUID } + } + { + QueryData Single + { QueryID LLUUID } + } + { + QueryReplies Variable + { ParcelID LLUUID } + { Name Variable 1 } + { Dwell F32 } + } } // ParcelInfoRequest // viewer -> simulator -> dataserver // reliable { - ParcelInfoRequest Low 54 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - Data Single - { ParcelID LLUUID } - } + ParcelInfoRequest Low 54 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + Data Single + { ParcelID LLUUID } + } } // ParcelInfoReply // dataserver -> simulator -> viewer // reliable { - ParcelInfoReply Low 55 Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - Data Single - { ParcelID LLUUID } - { OwnerID LLUUID } - { Name Variable 1 } - { Desc Variable 1 } - { ActualArea S32 } - { BillableArea S32 } - { Flags U8 } - { GlobalX F32 } // meters - { GlobalY F32 } // meters - { GlobalZ F32 } // meters - { SimName Variable 1 } - { SnapshotID LLUUID } - { Dwell F32 } - { SalePrice S32 } - { AuctionID S32 } - } + ParcelInfoReply Low 55 Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + Data Single + { ParcelID LLUUID } + { OwnerID LLUUID } + { Name Variable 1 } + { Desc Variable 1 } + { ActualArea S32 } + { BillableArea S32 } + { Flags U8 } + { GlobalX F32 } // meters + { GlobalY F32 } // meters + { GlobalZ F32 } // meters + { SimName Variable 1 } + { SnapshotID LLUUID } + { Dwell F32 } + { SalePrice S32 } + { AuctionID S32 } + } } @@ -1176,16 +1176,16 @@ version 2.0 // viewer -> simulator // reliable { - ParcelObjectOwnersRequest Low 56 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - ParcelData Single - { LocalID S32 } - } + ParcelObjectOwnersRequest Low 56 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ParcelData Single + { LocalID S32 } + } } @@ -1193,51 +1193,51 @@ version 2.0 // simulator -> viewer // reliable { - ParcelObjectOwnersReply Low 57 Trusted Zerocoded UDPDeprecated - { - Data Variable - { OwnerID LLUUID } - { IsGroupOwned BOOL } - { Count S32 } - { OnlineStatus BOOL } - } + ParcelObjectOwnersReply Low 57 Trusted Zerocoded UDPDeprecated + { + Data Variable + { OwnerID LLUUID } + { IsGroupOwned BOOL } + { Count S32 } + { OnlineStatus BOOL } + } } // GroupNoticeListRequest // viewer -> simulator -> dataserver // reliable { - GroupNoticesListRequest Low 58 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - Data Single - { GroupID LLUUID } - } + GroupNoticesListRequest Low 58 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + Data Single + { GroupID LLUUID } + } } // GroupNoticesListReply // dataserver -> simulator -> viewer // reliable { - GroupNoticesListReply Low 59 Trusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { GroupID LLUUID } - } - { - Data Variable - { NoticeID LLUUID } - { Timestamp U32 } - { FromName Variable 2 } - { Subject Variable 2 } - { HasAttachment BOOL } - { AssetType U8 } - } + GroupNoticesListReply Low 59 Trusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { GroupID LLUUID } + } + { + Data Variable + { NoticeID LLUUID } + { Timestamp U32 } + { FromName Variable 2 } + { Subject Variable 2 } + { HasAttachment BOOL } + { AssetType U8 } + } } // GroupNoticeRequest @@ -1245,48 +1245,48 @@ version 2.0 // simulator -> dataserver // reliable { - GroupNoticeRequest Low 60 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - Data Single - { GroupNoticeID LLUUID } - } + GroupNoticeRequest Low 60 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + Data Single + { GroupNoticeID LLUUID } + } } // GroupNoticeAdd -// Add a group notice. +// Add a group notice. // simulator -> dataserver // reliable { - GroupNoticeAdd Low 61 Trusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - MessageBlock Single - { ToGroupID LLUUID } - { ID LLUUID } - { Dialog U8 } - { FromAgentName Variable 1 } - { Message Variable 2 } - { BinaryBucket Variable 2 } - } + GroupNoticeAdd Low 61 Trusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + MessageBlock Single + { ToGroupID LLUUID } + { ID LLUUID } + { Dialog U8 } + { FromAgentName Variable 1 } + { Message Variable 2 } + { BinaryBucket Variable 2 } + } } // **************************************************************************** // Teleport messages // -// The teleport messages are numerous, so I have attempted to give them a +// The teleport messages are numerous, so I have attempted to give them a // consistent naming convention. Since there is a bit of glob pattern // aliasing, the rules are applied in order. // -// Teleport* - viewer->sim or sim->viewer message which announces a +// Teleport* - viewer->sim or sim->viewer message which announces a // teleportation request, progrees, start, or end. // Data* - sim->data or data->sim trusted message. // Space* - sim->space or space->sim trusted messaging @@ -1301,202 +1301,202 @@ version 2.0 // TeleportRequest // viewer -> sim specifying exact teleport destination { - TeleportRequest Low 62 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - Info Single - { RegionID LLUUID } - { Position LLVector3 } - { LookAt LLVector3 } - } + TeleportRequest Low 62 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + Info Single + { RegionID LLUUID } + { Position LLVector3 } + { LookAt LLVector3 } + } } // TeleportLocationRequest // viewer -> sim specifying exact teleport destination { - TeleportLocationRequest Low 63 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - Info Single - { RegionHandle U64 } - { Position LLVector3 } - { LookAt LLVector3 } - } + TeleportLocationRequest Low 63 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + Info Single + { RegionHandle U64 } + { Position LLVector3 } + { LookAt LLVector3 } + } } // TeleportLocal // sim -> viewer reply telling the viewer that we've successfully TP'd // to somewhere else within the sim { - TeleportLocal Low 64 Trusted Unencoded - { - Info Single - { AgentID LLUUID } - { LocationID U32 } - { Position LLVector3 } // region - { LookAt LLVector3 } - { TeleportFlags U32 } - } + TeleportLocal Low 64 Trusted Unencoded + { + Info Single + { AgentID LLUUID } + { LocationID U32 } + { Position LLVector3 } // region + { LookAt LLVector3 } + { TeleportFlags U32 } + } } // TeleportLandmarkRequest viewer->sim // teleport to landmark asset ID destination. use LLUUD::null for home. { - TeleportLandmarkRequest Low 65 NotTrusted Zerocoded - { - Info Single - { AgentID LLUUID } - { SessionID LLUUID } - { LandmarkID LLUUID } - } + TeleportLandmarkRequest Low 65 NotTrusted Zerocoded + { + Info Single + { AgentID LLUUID } + { SessionID LLUUID } + { LandmarkID LLUUID } + } } // TeleportProgress sim->viewer // Tell the agent how the teleport is going. { - TeleportProgress Low 66 Trusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - Info Single - { TeleportFlags U32 } - { Message Variable 1 } // string - } + TeleportProgress Low 66 Trusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + Info Single + { TeleportFlags U32 } + { Message Variable 1 } // string + } } // DataHomeLocationRequest sim->data -// Request +// Request { - DataHomeLocationRequest Low 67 Trusted Zerocoded - { - Info Single - { AgentID LLUUID } - { KickedFromEstateID U32 } - } - { - AgentInfo Single - { AgentEffectiveMaturity U32 } - } + DataHomeLocationRequest Low 67 Trusted Zerocoded + { + Info Single + { AgentID LLUUID } + { KickedFromEstateID U32 } + } + { + AgentInfo Single + { AgentEffectiveMaturity U32 } + } } // DataHomeLocationReply data->sim // response is the location of agent home. { - DataHomeLocationReply Low 68 Trusted Unencoded - { - Info Single - { AgentID LLUUID } - { RegionHandle U64 } - { Position LLVector3 } // region coords - { LookAt LLVector3 } - } + DataHomeLocationReply Low 68 Trusted Unencoded + { + Info Single + { AgentID LLUUID } + { RegionHandle U64 } + { Position LLVector3 } // region coords + { LookAt LLVector3 } + } } // TeleportFinish sim->viewer -// called when all of the information has been collected and readied for +// called when all of the information has been collected and readied for // the agent. { - TeleportFinish Low 69 Trusted Unencoded UDPBlackListed - { - Info Single - { AgentID LLUUID } - { LocationID U32 } - { SimIP IPADDR } - { SimPort IPPORT } - { RegionHandle U64 } - { SeedCapability Variable 2 } // URL - { SimAccess U8 } - { TeleportFlags U32 } - } + TeleportFinish Low 69 Trusted Unencoded UDPBlackListed + { + Info Single + { AgentID LLUUID } + { LocationID U32 } + { SimIP IPADDR } + { SimPort IPPORT } + { RegionHandle U64 } + { SeedCapability Variable 2 } // URL + { SimAccess U8 } + { TeleportFlags U32 } + } } // StartLure viewer->sim -// Sent from viewer to the local simulator to lure target id to near -// agent id. This will generate an instant message that will be routed -// through the space server and out to the userserver. When that IM -// goes through the userserver and the TargetID is online, the +// Sent from viewer to the local simulator to lure target id to near +// agent id. This will generate an instant message that will be routed +// through the space server and out to the userserver. When that IM +// goes through the userserver and the TargetID is online, the // userserver will send an InitializeLure to the spaceserver. When that -// packet is acked, the original instant message is finally forwarded to +// packet is acked, the original instant message is finally forwarded to // TargetID. { - StartLure Low 70 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - Info Single - { LureType U8 } - { Message Variable 1 } - } - { - TargetData Variable - { TargetID LLUUID } - } + StartLure Low 70 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + Info Single + { LureType U8 } + { Message Variable 1 } + } + { + TargetData Variable + { TargetID LLUUID } + } } // TeleportLureRequest viewer->sim -// Message from target of lure to begin the teleport process on the +// Message from target of lure to begin the teleport process on the // local simulator. { - TeleportLureRequest Low 71 NotTrusted Unencoded - { - Info Single - { AgentID LLUUID } - { SessionID LLUUID } - { LureID LLUUID } - { TeleportFlags U32 } - } + TeleportLureRequest Low 71 NotTrusted Unencoded + { + Info Single + { AgentID LLUUID } + { SessionID LLUUID } + { LureID LLUUID } + { TeleportFlags U32 } + } } // TeleportCancel viewer->sim // reliable { - TeleportCancel Low 72 NotTrusted Unencoded - { - Info Single - { AgentID LLUUID } - { SessionID LLUUID } - } + TeleportCancel Low 72 NotTrusted Unencoded + { + Info Single + { AgentID LLUUID } + { SessionID LLUUID } + } } // TeleportStart sim->viewer // announce a successful teleport request to the viewer. { - TeleportStart Low 73 Trusted Unencoded - { - Info Single - { TeleportFlags U32 } - } + TeleportStart Low 73 Trusted Unencoded + { + Info Single + { TeleportFlags U32 } + } } // TeleportFailed somewhere->sim->viewer // announce failure of teleport request { - TeleportFailed Low 74 Trusted Unencoded - { - Info Single - { AgentID LLUUID } - { Reason Variable 1 } // string - } - { - AlertInfo Variable - { Message Variable 1 } // string id - { ExtraParams Variable 1 } // llsd extra parameters - } + TeleportFailed Low 74 Trusted Unencoded + { + Info Single + { AgentID LLUUID } + { Reason Variable 1 } // string + } + { + AlertInfo Variable + { Message Variable 1 } // string id + { ExtraParams Variable 1 } // llsd extra parameters + } } @@ -1506,306 +1506,306 @@ version 2.0 // Undo { - Undo Low 75 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { GroupID LLUUID } - } - { - ObjectData Variable - { ObjectID LLUUID } - } + Undo Low 75 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { GroupID LLUUID } + } + { + ObjectData Variable + { ObjectID LLUUID } + } } // Redo { - Redo Low 76 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { GroupID LLUUID } - } - { - ObjectData Variable - { ObjectID LLUUID } - } + Redo Low 76 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { GroupID LLUUID } + } + { + ObjectData Variable + { ObjectID LLUUID } + } } // UndoLand { - UndoLand Low 77 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } + UndoLand Low 77 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } } // AgentPause - viewer occasionally will block, inform simulator of this fact { - AgentPause Low 78 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { SerialNum U32 } // U32, used by both pause and resume. Non-increasing numbers are ignored. - } + AgentPause Low 78 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { SerialNum U32 } // used by both pause and resume. Non-increasing numbers are ignored. + } } // AgentResume - unblock the agent { - AgentResume Low 79 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { SerialNum U32 } // U32, used by both pause and resume. Non-increasing numbers are ignored. - } + AgentResume Low 79 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { SerialNum U32 } // used by both pause and resume. Non-increasing numbers are ignored. + } } // AgentUpdate - Camera info sent from viewer to simulator // or, more simply, two axes and compute cross product // State data is temporary, indicates current behavior state: -// 0 = walking +// 0 = walking // 1 = mouselook -// 2 = typing -// +// 2 = typing +// // Center is region local (JNC 8.16.2001) // Camera center is region local (JNC 8.29.2001) { - AgentUpdate High 4 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { BodyRotation LLQuaternion } - { HeadRotation LLQuaternion } - { State U8 } - { CameraCenter LLVector3 } - { CameraAtAxis LLVector3 } - { CameraLeftAxis LLVector3 } - { CameraUpAxis LLVector3 } - { Far F32 } - { ControlFlags U32 } - { Flags U8 } - } + AgentUpdate High 4 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { BodyRotation LLQuaternion } + { HeadRotation LLQuaternion } + { State U8 } + { CameraCenter LLVector3 } + { CameraAtAxis LLVector3 } + { CameraLeftAxis LLVector3 } + { CameraUpAxis LLVector3 } + { Far F32 } + { ControlFlags U32 } + { Flags U8 } + } } // ChatFromViewer -// Specifies the text to be said and the "type", +// Specifies the text to be said and the "type", // normal speech, shout, whisper. // with the specified radius { - ChatFromViewer Low 80 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - ChatData Single - { Message Variable 2 } - { Type U8 } - { Channel S32 } - } + ChatFromViewer Low 80 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ChatData Single + { Message Variable 2 } + { Type U8 } + { Channel S32 } + } } // AgentThrottle { - AgentThrottle Low 81 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { CircuitCode U32 } - } - { - Throttle Single - { GenCounter U32 } - { Throttles Variable 1 } - } + AgentThrottle Low 81 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { CircuitCode U32 } + } + { + Throttle Single + { GenCounter U32 } + { Throttles Variable 1 } + } } // AgentFOV - Update to agent's field of view, angle is vertical, single F32 float in radians { - AgentFOV Low 82 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { CircuitCode U32 } - } - { - FOVBlock Single - { GenCounter U32 } - { VerticalAngle F32 } - } + AgentFOV Low 82 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { CircuitCode U32 } + } + { + FOVBlock Single + { GenCounter U32 } + { VerticalAngle F32 } + } } // AgentHeightWidth - Update to height and aspect, sent as height/width to save space // Usually sent when window resized or created { - AgentHeightWidth Low 83 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { CircuitCode U32 } - } - { - HeightWidthBlock Single - { GenCounter U32 } - { Height U16 } - { Width U16 } - } + AgentHeightWidth Low 83 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { CircuitCode U32 } + } + { + HeightWidthBlock Single + { GenCounter U32 } + { Height U16 } + { Width U16 } + } } // AgentSetAppearance - Update to agent appearance { - AgentSetAppearance Low 84 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { SerialNum U32 } // U32, Increases every time the appearance changes. A value of 0 resets. - { Size LLVector3 } - } - { - WearableData Variable - { CacheID LLUUID } - { TextureIndex U8 } - } - { - ObjectData Single - { TextureEntry Variable 2 } - } - { - VisualParam Variable - { ParamValue U8 } - } + AgentSetAppearance Low 84 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { SerialNum U32 } // Increases every time the appearance changes. A value of 0 resets. + { Size LLVector3 } + } + { + WearableData Variable + { CacheID LLUUID } + { TextureIndex U8 } + } + { + ObjectData Single + { TextureEntry Variable 2 } + } + { + VisualParam Variable + { ParamValue U8 } + } } // AgentAnimation - Update animation state // viewer --> simulator { - AgentAnimation High 5 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - AnimationList Variable - { AnimID LLUUID } - { StartAnim BOOL } - } - { - PhysicalAvatarEventList Variable - { TypeData Variable 1 } - } + AgentAnimation High 5 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + AnimationList Variable + { AnimID LLUUID } + { StartAnim BOOL } + } + { + PhysicalAvatarEventList Variable + { TypeData Variable 1 } + } } // AgentRequestSit - Try to sit on an object { - AgentRequestSit High 6 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - TargetObject Single - { TargetID LLUUID } - { Offset LLVector3 } - } + AgentRequestSit High 6 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + TargetObject Single + { TargetID LLUUID } + { Offset LLVector3 } + } } // AgentSit - Actually sit on object { - AgentSit High 7 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } + AgentSit High 7 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } } // quit message sent between simulators { - AgentQuitCopy Low 85 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - FuseBlock Single - { ViewerCircuitCode U32 } - } + AgentQuitCopy Low 85 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + FuseBlock Single + { ViewerCircuitCode U32 } + } } // Request Image - Sent by the viewer to request a specified image at a specified resolution { - RequestImage High 8 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - RequestImage Variable - { Image LLUUID } - { DiscardLevel S8 } - { DownloadPriority F32 } - { Packet U32 } - { Type U8 } - } + RequestImage High 8 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + RequestImage Variable + { Image LLUUID } + { DiscardLevel S8 } + { DownloadPriority F32 } + { Packet U32 } + { Type U8 } + } } // ImageNotInDatabase // Simulator informs viewer that a requsted image definitely does not exist in the asset database { - ImageNotInDatabase Low 86 Trusted Unencoded - { - ImageID Single - { ID LLUUID } - } + ImageNotInDatabase Low 86 Trusted Unencoded + { + ImageID Single + { ID LLUUID } + } } // RebakeAvatarTextures // simulator -> viewer request when a temporary baked avatar texture is not found { - RebakeAvatarTextures Low 87 Trusted Unencoded - { - TextureData Single - { TextureID LLUUID } - } + RebakeAvatarTextures Low 87 Trusted Unencoded + { + TextureData Single + { TextureID LLUUID } + } } // SetAlwaysRun // Lets the viewer choose between running and walking { - SetAlwaysRun Low 88 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { AlwaysRun BOOL } - } + SetAlwaysRun Low 88 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { AlwaysRun BOOL } + } } // ObjectAdd - create new object in the world @@ -1818,69 +1818,69 @@ version 2.0 // // If only one ImageID is sent for an object type that has more than // one face, the same image is repeated on each subsequent face. -// +// // Data field is opaque type-specific data for this object { - ObjectAdd Medium 1 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { GroupID LLUUID } - } - { - ObjectData Single - { PCode U8 } - { Material U8 } - { AddFlags U32 } // see object_flags.h - - { PathCurve U8 } - { ProfileCurve U8 } - { PathBegin U16 } // 0 to 1, quanta = 0.01 - { PathEnd U16 } // 0 to 1, quanta = 0.01 - { PathScaleX U8 } // 0 to 1, quanta = 0.01 - { PathScaleY U8 } // 0 to 1, quanta = 0.01 - { PathShearX U8 } // -.5 to .5, quanta = 0.01 - { PathShearY U8 } // -.5 to .5, quanta = 0.01 - { PathTwist S8 } // -1 to 1, quanta = 0.01 - { PathTwistBegin S8 } // -1 to 1, quanta = 0.01 - { PathRadiusOffset S8 } // -1 to 1, quanta = 0.01 - { PathTaperX S8 } // -1 to 1, quanta = 0.01 - { PathTaperY S8 } // -1 to 1, quanta = 0.01 - { PathRevolutions U8 } // 0 to 3, quanta = 0.015 - { PathSkew S8 } // -1 to 1, quanta = 0.01 - { ProfileBegin U16 } // 0 to 1, quanta = 0.01 - { ProfileEnd U16 } // 0 to 1, quanta = 0.01 - { ProfileHollow U16 } // 0 to 1, quanta = 0.01 - - { BypassRaycast U8 } - { RayStart LLVector3 } - { RayEnd LLVector3 } - { RayTargetID LLUUID } - { RayEndIsIntersection U8 } - - { Scale LLVector3 } - { Rotation LLQuaternion } - - { State U8 } - } + ObjectAdd Medium 1 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { GroupID LLUUID } + } + { + ObjectData Single + { PCode U8 } + { Material U8 } + { AddFlags U32 } // see object_flags.h + + { PathCurve U8 } + { ProfileCurve U8 } + { PathBegin U16 } // 0 to 1, quanta = 0.01 + { PathEnd U16 } // 0 to 1, quanta = 0.01 + { PathScaleX U8 } // 0 to 1, quanta = 0.01 + { PathScaleY U8 } // 0 to 1, quanta = 0.01 + { PathShearX U8 } // -.5 to .5, quanta = 0.01 + { PathShearY U8 } // -.5 to .5, quanta = 0.01 + { PathTwist S8 } // -1 to 1, quanta = 0.01 + { PathTwistBegin S8 } // -1 to 1, quanta = 0.01 + { PathRadiusOffset S8 } // -1 to 1, quanta = 0.01 + { PathTaperX S8 } // -1 to 1, quanta = 0.01 + { PathTaperY S8 } // -1 to 1, quanta = 0.01 + { PathRevolutions U8 } // 0 to 3, quanta = 0.015 + { PathSkew S8 } // -1 to 1, quanta = 0.01 + { ProfileBegin U16 } // 0 to 1, quanta = 0.01 + { ProfileEnd U16 } // 0 to 1, quanta = 0.01 + { ProfileHollow U16 } // 0 to 1, quanta = 0.01 + + { BypassRaycast U8 } + { RayStart LLVector3 } + { RayEnd LLVector3 } + { RayTargetID LLUUID } + { RayEndIsIntersection U8 } + + { Scale LLVector3 } + { Rotation LLQuaternion } + + { State U8 } + } } // ObjectDelete // viewer -> simulator { - ObjectDelete Low 89 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { Force BOOL } // BOOL, god trying to force delete - } - { - ObjectData Variable - { ObjectLocalID U32 } - } + ObjectDelete Low 89 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { Force BOOL } // god trying to force delete + } + { + ObjectData Variable + { ObjectLocalID U32 } + } } @@ -1888,22 +1888,22 @@ version 2.0 // viewer -> simulator // Makes a copy of a set of objects, offset by a given amount { - ObjectDuplicate Low 90 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { GroupID LLUUID } - } - { - SharedData Single - { Offset LLVector3 } - { DuplicateFlags U32 } // see object_flags.h - } - { - ObjectData Variable - { ObjectLocalID U32 } - } + ObjectDuplicate Low 90 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { GroupID LLUUID } + } + { + SharedData Single + { Offset LLVector3 } + { DuplicateFlags U32 } // see object_flags.h + } + { + ObjectData Variable + { ObjectLocalID U32 } + } } @@ -1912,25 +1912,25 @@ version 2.0 // Makes a copy of an object, using the add object raycast // code to abut it to other objects. { - ObjectDuplicateOnRay Low 91 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { GroupID LLUUID } - { RayStart LLVector3 } // region local - { RayEnd LLVector3 } // region local - { BypassRaycast BOOL } - { RayEndIsIntersection BOOL } - { CopyCenters BOOL } - { CopyRotates BOOL } - { RayTargetID LLUUID } - { DuplicateFlags U32 } // see object_flags.h - } - { - ObjectData Variable - { ObjectLocalID U32 } - } + ObjectDuplicateOnRay Low 91 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { GroupID LLUUID } + { RayStart LLVector3 } // region local + { RayEnd LLVector3 } // region local + { BypassRaycast BOOL } + { RayEndIsIntersection BOOL } + { CopyCenters BOOL } + { CopyRotates BOOL } + { RayTargetID LLUUID } + { DuplicateFlags U32 } // see object_flags.h + } + { + ObjectData Variable + { ObjectLocalID U32 } + } } @@ -1939,18 +1939,18 @@ version 2.0 // updates position, rotation and scale in one message // positions sent as region-local floats { - MultipleObjectUpdate Medium 2 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - ObjectData Variable - { ObjectLocalID U32 } - { Type U8 } - { Data Variable 1 } // custom type - } + MultipleObjectUpdate Medium 2 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ObjectData Variable + { ObjectLocalID U32 } + { Type U8 } + { Data Variable 1 } // custom type + } } // RequestMultipleObjects @@ -1964,17 +1964,17 @@ version 2.0 // CacheMissType 0 => full object (viewer doesn't have it) // CacheMissType 1 => CRC mismatch only { - RequestMultipleObjects Medium 3 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - ObjectData Variable - { CacheMissType U8 } - { ID U32 } - } + RequestMultipleObjects Medium 3 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ObjectData Variable + { CacheMissType U8 } + { ID U32 } + } } @@ -1990,17 +1990,17 @@ version 2.0 // == New Location == // MultipleObjectUpdate can be used instead. { - ObjectPosition Medium 4 NotTrusted Zerocoded Deprecated - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - ObjectData Variable - { ObjectLocalID U32 } - { Position LLVector3 } // region - } + ObjectPosition Medium 4 NotTrusted Zerocoded Deprecated + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ObjectData Variable + { ObjectLocalID U32 } + { Position LLVector3 } // region + } } @@ -2016,159 +2016,175 @@ version 2.0 // == New Location == // MultipleObjectUpdate can be used instead. { - ObjectScale Low 92 NotTrusted Zerocoded Deprecated - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - ObjectData Variable - { ObjectLocalID U32 } - { Scale LLVector3 } - } + ObjectScale Low 92 NotTrusted Zerocoded Deprecated + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ObjectData Variable + { ObjectLocalID U32 } + { Scale LLVector3 } + } } // ObjectRotation // viewer -> simulator { - ObjectRotation Low 93 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - ObjectData Variable - { ObjectLocalID U32 } - { Rotation LLQuaternion } - } + ObjectRotation Low 93 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ObjectData Variable + { ObjectLocalID U32 } + { Rotation LLQuaternion } + } } // ObjectFlagUpdate // viewer -> simulator { - ObjectFlagUpdate Low 94 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { ObjectLocalID U32 } - { UsePhysics BOOL } - { IsTemporary BOOL } - { IsPhantom BOOL } - { CastsShadows BOOL } - } + ObjectFlagUpdate Low 94 NotTrusted Zerocoded { - ExtraPhysics Variable - { PhysicsShapeType U8 } - { Density F32 } - { Friction F32 } - { Restitution F32 } - { GravityMultiplier F32 } - - } + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { ObjectLocalID U32 } + { UsePhysics BOOL } + { IsTemporary BOOL } + { IsPhantom BOOL } + { CastsShadows BOOL } + } + { + ExtraPhysics Variable + { PhysicsShapeType U8 } + { Density F32 } + { Friction F32 } + { Restitution F32 } + { GravityMultiplier F32 } + } } // ObjectClickAction // viewer -> simulator { - ObjectClickAction Low 95 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - ObjectData Variable - { ObjectLocalID U32 } - { ClickAction U8 } - } + ObjectClickAction Low 95 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ObjectData Variable + { ObjectLocalID U32 } + { ClickAction U8 } + } } // ObjectImage // viewer -> simulator { - ObjectImage Low 96 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - ObjectData Variable - { ObjectLocalID U32 } - { MediaURL Variable 1 } - { TextureEntry Variable 2 } - } -} - - -{ - ObjectMaterial Low 97 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - ObjectData Variable - { ObjectLocalID U32 } - { Material U8 } - } -} - - -{ - ObjectShape Low 98 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - ObjectData Variable - { ObjectLocalID U32 } - { PathCurve U8 } - { ProfileCurve U8 } - { PathBegin U16 } // 0 to 1, quanta = 0.01 - { PathEnd U16 } // 0 to 1, quanta = 0.01 - { PathScaleX U8 } // 0 to 1, quanta = 0.01 - { PathScaleY U8 } // 0 to 1, quanta = 0.01 - { PathShearX U8 } // -.5 to .5, quanta = 0.01 - { PathShearY U8 } // -.5 to .5, quanta = 0.01 - { PathTwist S8 } // -1 to 1, quanta = 0.01 - { PathTwistBegin S8 } // -1 to 1, quanta = 0.01 - { PathRadiusOffset S8 } // -1 to 1, quanta = 0.01 - { PathTaperX S8 } // -1 to 1, quanta = 0.01 - { PathTaperY S8 } // -1 to 1, quanta = 0.01 - { PathRevolutions U8 } // 0 to 3, quanta = 0.015 - { PathSkew S8 } // -1 to 1, quanta = 0.01 - { ProfileBegin U16 } // 0 to 1, quanta = 0.01 - { ProfileEnd U16 } // 0 to 1, quanta = 0.01 - { ProfileHollow U16 } // 0 to 1, quanta = 0.01 - } -} - -{ - ObjectExtraParams Low 99 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - ObjectData Variable - { ObjectLocalID U32 } - { ParamType U16 } - { ParamInUse BOOL } - { ParamSize U32 } - { ParamData Variable 1 } - } + ObjectImage Low 96 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ObjectData Variable + { ObjectLocalID U32 } + { MediaURL Variable 1 } + { TextureEntry Variable 2 } + } +} + +// ObjectBypassModUpdate +// Viewer -> Simulator +// Allows the owner of an object to bypass mod protections for +// Predefined fields. +{ + ObjectBypassModUpdate Low 431 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ObjectData Variable + { ObjectLocalID U32 } + { PropertyID U8 } + { Value Variable 2 } + } +} + +{ + ObjectMaterial Low 97 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ObjectData Variable + { ObjectLocalID U32 } + { Material U8 } + } +} + +{ + ObjectShape Low 98 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ObjectData Variable + { ObjectLocalID U32 } + { PathCurve U8 } + { ProfileCurve U8 } + { PathBegin U16 } // 0 to 1, quanta = 0.01 + { PathEnd U16 } // 0 to 1, quanta = 0.01 + { PathScaleX U8 } // 0 to 1, quanta = 0.01 + { PathScaleY U8 } // 0 to 1, quanta = 0.01 + { PathShearX U8 } // -.5 to .5, quanta = 0.01 + { PathShearY U8 } // -.5 to .5, quanta = 0.01 + { PathTwist S8 } // -1 to 1, quanta = 0.01 + { PathTwistBegin S8 } // -1 to 1, quanta = 0.01 + { PathRadiusOffset S8 } // -1 to 1, quanta = 0.01 + { PathTaperX S8 } // -1 to 1, quanta = 0.01 + { PathTaperY S8 } // -1 to 1, quanta = 0.01 + { PathRevolutions U8 } // 0 to 3, quanta = 0.015 + { PathSkew S8 } // -1 to 1, quanta = 0.01 + { ProfileBegin U16 } // 0 to 1, quanta = 0.01 + { ProfileEnd U16 } // 0 to 1, quanta = 0.01 + { ProfileHollow U16 } // 0 to 1, quanta = 0.01 + } +} + +{ + ObjectExtraParams Low 99 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ObjectData Variable + { ObjectLocalID U32 } + { ParamType U16 } + { ParamInUse BOOL } + { ParamSize U32 } + { ParamData Variable 1 } + } } @@ -2177,57 +2193,57 @@ version 2.0 // TODO: Eliminate god-bit. Maybe not. God-bit is ok, because it's // known on the server. { - ObjectOwner Low 100 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - HeaderData Single - { Override BOOL } // BOOL, God-bit. - { OwnerID LLUUID } - { GroupID LLUUID } - } - { - ObjectData Variable - { ObjectLocalID U32 } - } + ObjectOwner Low 100 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + HeaderData Single + { Override BOOL } // God-bit. + { OwnerID LLUUID } + { GroupID LLUUID } + } + { + ObjectData Variable + { ObjectLocalID U32 } + } } // ObjectGroup // To make the object part of no group, set GroupID = LLUUID::null. // This call only works if objectid.ownerid == agentid. { - ObjectGroup Low 101 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { GroupID LLUUID } - } - { - ObjectData Variable - { ObjectLocalID U32 } - } + ObjectGroup Low 101 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { GroupID LLUUID } + } + { + ObjectData Variable + { ObjectLocalID U32 } + } } // Attempt to buy an object. This will only pack root objects. { - ObjectBuy Low 102 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { GroupID LLUUID } - { CategoryID LLUUID } // folder where it goes (if derezed) - } - { - ObjectData Variable - { ObjectLocalID U32 } - { SaleType U8 } // U8 -> EForSale - { SalePrice S32 } - } + ObjectBuy Low 102 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { GroupID LLUUID } + { CategoryID LLUUID } // folder where it goes (if derezed) + } + { + ObjectData Variable + { ObjectLocalID U32 } + { SaleType U8 } // U8 -> EForSale + { SalePrice S32 } + } } // viewer -> simulator @@ -2235,29 +2251,29 @@ version 2.0 // buy object inventory. If the transaction succeeds, it will add // inventory to the agent, and potentially remove the original. { - BuyObjectInventory Low 103 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - Data Single - { ObjectID LLUUID } - { ItemID LLUUID } - { FolderID LLUUID } - } + BuyObjectInventory Low 103 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + Data Single + { ObjectID LLUUID } + { ItemID LLUUID } + { FolderID LLUUID } + } } // sim -> viewer // Used to propperly handle buying asset containers { - DerezContainer Low 104 Trusted Zerocoded - { - Data Single - { ObjectID LLUUID } - { Delete BOOL } // BOOL - } + DerezContainer Low 104 Trusted Zerocoded + { + Data Single + { ObjectID LLUUID } + { Delete BOOL } + } } // ObjectPermissions @@ -2266,217 +2282,217 @@ version 2.0 // If set is false, tries to turn off bits in mask. // BUG: This just forces the permissions field. { - ObjectPermissions Low 105 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - HeaderData Single - { Override BOOL } // BOOL, God-bit. - } - { - ObjectData Variable - { ObjectLocalID U32 } - { Field U8 } - { Set U8 } - { Mask U32 } - } + ObjectPermissions Low 105 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + HeaderData Single + { Override BOOL } // God-bit. + } + { + ObjectData Variable + { ObjectLocalID U32 } + { Field U8 } + { Set U8 } + { Mask U32 } + } } // set object sale information { - ObjectSaleInfo Low 106 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - ObjectData Variable - { LocalID U32 } - { SaleType U8 } // U8 -> EForSale - { SalePrice S32 } - } + ObjectSaleInfo Low 106 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ObjectData Variable + { LocalID U32 } + { SaleType U8 } // U8 -> EForSale + { SalePrice S32 } + } } // set object names { - ObjectName Low 107 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - ObjectData Variable - { LocalID U32 } - { Name Variable 1 } - } + ObjectName Low 107 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ObjectData Variable + { LocalID U32 } + { Name Variable 1 } + } } // set object descriptions { - ObjectDescription Low 108 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - ObjectData Variable - { LocalID U32 } - { Description Variable 1 } - } + ObjectDescription Low 108 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ObjectData Variable + { LocalID U32 } + { Description Variable 1 } + } } // set object category { - ObjectCategory Low 109 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - ObjectData Variable - { LocalID U32 } - { Category U32 } - } + ObjectCategory Low 109 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ObjectData Variable + { LocalID U32 } + { Category U32 } + } } // ObjectSelect // Variable object data because rectangular selection can // generate a large list very quickly. { - ObjectSelect Low 110 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - ObjectData Variable - { ObjectLocalID U32 } - } + ObjectSelect Low 110 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ObjectData Variable + { ObjectLocalID U32 } + } } // ObjectDeselect { - ObjectDeselect Low 111 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - ObjectData Variable - { ObjectLocalID U32 } - } + ObjectDeselect Low 111 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ObjectData Variable + { ObjectLocalID U32 } + } } // ObjectAttach { - ObjectAttach Low 112 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { AttachmentPoint U8 } - } - { - ObjectData Variable - { ObjectLocalID U32 } - { Rotation LLQuaternion } - } + ObjectAttach Low 112 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { AttachmentPoint U8 } + } + { + ObjectData Variable + { ObjectLocalID U32 } + { Rotation LLQuaternion } + } } // ObjectDetach -- derezzes an attachment, marking its item in your inventory as not "(worn)" { - ObjectDetach Low 113 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - ObjectData Variable - { ObjectLocalID U32 } - } + ObjectDetach Low 113 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ObjectData Variable + { ObjectLocalID U32 } + } } // ObjectDrop -- drops an attachment from your avatar onto the ground { - ObjectDrop Low 114 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - ObjectData Variable - { ObjectLocalID U32 } - } + ObjectDrop Low 114 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ObjectData Variable + { ObjectLocalID U32 } + } } // ObjectLink { - ObjectLink Low 115 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - ObjectData Variable - { ObjectLocalID U32 } - } + ObjectLink Low 115 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ObjectData Variable + { ObjectLocalID U32 } + } } // ObjectDelink { - ObjectDelink Low 116 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - ObjectData Variable - { ObjectLocalID U32 } - } + ObjectDelink Low 116 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ObjectData Variable + { ObjectLocalID U32 } + } } // ObjectGrab { - ObjectGrab Low 117 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - ObjectData Single - { LocalID U32 } - { GrabOffset LLVector3 } - } - { - SurfaceInfo Variable - { UVCoord LLVector3 } - { STCoord LLVector3 } - { FaceIndex S32 } - { Position LLVector3 } - { Normal LLVector3 } - { Binormal LLVector3 } - } + ObjectGrab Low 117 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ObjectData Single + { LocalID U32 } + { GrabOffset LLVector3 } + } + { + SurfaceInfo Variable + { UVCoord LLVector3 } + { STCoord LLVector3 } + { FaceIndex S32 } + { Position LLVector3 } + { Normal LLVector3 } + { Binormal LLVector3 } + } } @@ -2485,146 +2501,146 @@ version 2.0 // TimeSinceLast could go to 1 byte, since capped // at 100 on sim. { - ObjectGrabUpdate Low 118 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - ObjectData Single - { ObjectID LLUUID } - { GrabOffsetInitial LLVector3 } // LLVector3 - { GrabPosition LLVector3 } // LLVector3, region local - { TimeSinceLast U32 } - } - { - SurfaceInfo Variable - { UVCoord LLVector3 } - { STCoord LLVector3 } - { FaceIndex S32 } - { Position LLVector3 } - { Normal LLVector3 } - { Binormal LLVector3 } - } - -} - - -// ObjectDeGrab -{ - ObjectDeGrab Low 119 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - ObjectData Single - { LocalID U32 } - } - { - SurfaceInfo Variable - { UVCoord LLVector3 } - { STCoord LLVector3 } - { FaceIndex S32 } - { Position LLVector3 } - { Normal LLVector3 } - { Binormal LLVector3 } - } + ObjectGrabUpdate Low 118 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ObjectData Single + { ObjectID LLUUID } + { GrabOffsetInitial LLVector3 } // LLVector3 + { GrabPosition LLVector3 } // LLVector3, region local + { TimeSinceLast U32 } + } + { + SurfaceInfo Variable + { UVCoord LLVector3 } + { STCoord LLVector3 } + { FaceIndex S32 } + { Position LLVector3 } + { Normal LLVector3 } + { Binormal LLVector3 } + } + +} + + +// ObjectDeGrab +{ + ObjectDeGrab Low 119 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ObjectData Single + { LocalID U32 } + } + { + SurfaceInfo Variable + { UVCoord LLVector3 } + { STCoord LLVector3 } + { FaceIndex S32 } + { Position LLVector3 } + { Normal LLVector3 } + { Binormal LLVector3 } + } } // ObjectSpinStart { - ObjectSpinStart Low 120 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - ObjectData Single - { ObjectID LLUUID } - } + ObjectSpinStart Low 120 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ObjectData Single + { ObjectID LLUUID } + } } // ObjectSpinUpdate { - ObjectSpinUpdate Low 121 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - ObjectData Single - { ObjectID LLUUID } - { Rotation LLQuaternion } - } + ObjectSpinUpdate Low 121 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ObjectData Single + { ObjectID LLUUID } + { Rotation LLQuaternion } + } } // ObjectSpinStop { - ObjectSpinStop Low 122 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - ObjectData Single - { ObjectID LLUUID } - } + ObjectSpinStop Low 122 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ObjectData Single + { ObjectID LLUUID } + } } // Export selected objects // viewer->sim { - ObjectExportSelected Low 123 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { RequestID LLUUID } - { VolumeDetail S16 } - } - { - ObjectData Variable - { ObjectID LLUUID } - } + ObjectExportSelected Low 123 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { RequestID LLUUID } + { VolumeDetail S16 } + } + { + ObjectData Variable + { ObjectID LLUUID } + } } // ModifyLand - sent to modify a piece of land on a simulator. // viewer -> sim { - ModifyLand Low 124 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - ModifyBlock Single - { Action U8 } - { BrushSize U8 } - { Seconds F32 } - { Height F32 } - } - { - ParcelData Variable - { LocalID S32 } - { West F32 } - { South F32 } - { East F32 } - { North F32 } - } - { - ModifyBlockExtended Variable - { BrushSize F32 } - } + ModifyLand Low 124 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ModifyBlock Single + { Action U8 } + { BrushSize U8 } + { Seconds F32 } + { Height F32 } + } + { + ParcelData Variable + { LocalID S32 } + { West F32 } + { South F32 } + { East F32 } + { North F32 } + } + { + ModifyBlockExtended Variable + { BrushSize F32 } + } } @@ -2632,12 +2648,12 @@ version 2.0 // viewer->sim // requires administrative access { - VelocityInterpolateOn Low 125 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } + VelocityInterpolateOn Low 125 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } } @@ -2645,54 +2661,54 @@ version 2.0 // viewer->sim // requires administrative access { - VelocityInterpolateOff Low 126 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } + VelocityInterpolateOff Low 126 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } } // Save State // viewer->sim // requires administrative access { - StateSave Low 127 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - DataBlock Single - { Filename Variable 1 } - } + StateSave Low 127 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + DataBlock Single + { Filename Variable 1 } + } } // ReportAutosaveCrash // sim->launcher { - ReportAutosaveCrash Low 128 NotTrusted Unencoded - { - AutosaveData Single - { PID S32 } - { Status S32 } - } + ReportAutosaveCrash Low 128 NotTrusted Unencoded + { + AutosaveData Single + { PID S32 } + { Status S32 } + } } // SimWideDeletes { - SimWideDeletes Low 129 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - DataBlock Single - { TargetID LLUUID } - { Flags U32 } - } + SimWideDeletes Low 129 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + DataBlock Single + { TargetID LLUUID } + { Flags U32 } + } } // RequestObjectPropertiesFamily @@ -2700,133 +2716,133 @@ version 2.0 // Medium frequency because it is driven by mouse hovering over objects, which // occurs at high rates. { - RequestObjectPropertiesFamily Medium 5 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - ObjectData Single - { RequestFlags U32 } - { ObjectID LLUUID } - } + RequestObjectPropertiesFamily Medium 5 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ObjectData Single + { RequestFlags U32 } + { ObjectID LLUUID } + } } // Track agent - this information is used when sending out the -// coarse location update so that we know who you are tracking. +// coarse location update so that we know who you are tracking. // To stop tracking - send a null uuid as the prey. { - TrackAgent Low 130 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - TargetData Single - { PreyID LLUUID } - } + TrackAgent Low 130 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + TargetData Single + { PreyID LLUUID } + } } // end viewer to simulator section { - ViewerStats Low 131 NotTrusted Zerocoded UDPDeprecated - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { IP IPADDR } - { StartTime U32 } - { RunTime F32 } // F32 - { SimFPS F32 } // F32 - { FPS F32 } // F32 - { AgentsInView U8 } // - { Ping F32 } // F32 - { MetersTraveled F64 } - { RegionsVisited S32 } - { SysRAM U32 } - { SysOS Variable 1 } // String - { SysCPU Variable 1 } // String - { SysGPU Variable 1 } // String - } - - { - DownloadTotals Single - { World U32 } - { Objects U32 } - { Textures U32 } - } - - { - NetStats Multiple 2 - { Bytes U32 } - { Packets U32 } - { Compressed U32 } - { Savings U32 } - } - - { - FailStats Single - { SendPacket U32 } - { Dropped U32 } - { Resent U32 } - { FailedResends U32 } - { OffCircuit U32 } - { Invalid U32 } - } - - { - MiscStats Variable - { Type U32 } - { Value F64 } - } -} - + ViewerStats Low 131 NotTrusted Zerocoded UDPDeprecated + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { IP IPADDR } + { StartTime U32 } + { RunTime F32 } // F32 + { SimFPS F32 } // F32 + { FPS F32 } // F32 + { AgentsInView U8 } + { Ping F32 } // F32 + { MetersTraveled F64 } + { RegionsVisited S32 } + { SysRAM U32 } + { SysOS Variable 1 } // String + { SysCPU Variable 1 } // String + { SysGPU Variable 1 } // String + } + + { + DownloadTotals Single + { World U32 } + { Objects U32 } + { Textures U32 } + } + + { + NetStats Multiple 2 + { Bytes U32 } + { Packets U32 } + { Compressed U32 } + { Savings U32 } + } + + { + FailStats Single + { SendPacket U32 } + { Dropped U32 } + { Resent U32 } + { FailedResends U32 } + { OffCircuit U32 } + { Invalid U32 } + } + + { + MiscStats Variable + { Type U32 } + { Value F64 } + } +} + // ScriptAnswerYes // reliable { - ScriptAnswerYes Low 132 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - Data Single - { TaskID LLUUID } - { ItemID LLUUID } - { Questions S32 } - } + ScriptAnswerYes Low 132 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + Data Single + { TaskID LLUUID } + { ItemID LLUUID } + { Questions S32 } + } } // complaint/bug-report // reliable { - UserReport Low 133 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - ReportData Single - { ReportType U8 } // BUG=1, COMPLAINT=2 - { Category U8 } // see sequence.user_report_category - { Position LLVector3 } // screenshot position, region-local - { CheckFlags U8 } // checkboxflags - { ScreenshotID LLUUID } - { ObjectID LLUUID } - { AbuserID LLUUID } - { AbuseRegionName Variable 1 } - { AbuseRegionID LLUUID } - { Summary Variable 1 } - { Details Variable 2 } - { VersionString Variable 1 } - } + UserReport Low 133 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ReportData Single + { ReportType U8 } // BUG=1, COMPLAINT=2 + { Category U8 } // see sequence.user_report_category + { Position LLVector3 } // screenshot position, region-local + { CheckFlags U8 } // checkboxflags + { ScreenshotID LLUUID } + { ObjectID LLUUID } + { AbuserID LLUUID } + { AbuseRegionName Variable 1 } + { AbuseRegionID LLUUID } + { Summary Variable 1 } + { Details Variable 2 } + { VersionString Variable 1 } + } } @@ -2836,67 +2852,73 @@ version 2.0 // AlertMessage // Specifies the text to be posted in an alert dialog +// Also sent from dataserver to simulator with AgentInfo block +// Simulator doesn't include AgentInfo block to viewer { - AlertMessage Low 134 Trusted Unencoded - { - AlertData Single - { Message Variable 1 } - } - { - AlertInfo Variable - { Message Variable 1 } - { ExtraParams Variable 1 } - } + AlertMessage Low 134 Trusted Unencoded + { + AlertData Single + { Message Variable 1 } + } + { + AlertInfo Variable + { Message Variable 1 } + { ExtraParams Variable 1 } + } + { + AgentInfo Variable + { AgentID LLUUID } + } } // Send an AlertMessage to the named agent. // usually dataserver->simulator { - AgentAlertMessage Low 135 Trusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - AlertData Single - { Modal BOOL } - { Message Variable 1 } - } + AgentAlertMessage Low 135 Trusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + AlertData Single + { Modal BOOL } + { Message Variable 1 } + } } // MeanCollisionAlert // Specifies the text to be posted in an alert dialog { - MeanCollisionAlert Low 136 Trusted Zerocoded - { - MeanCollision Variable - { Victim LLUUID } - { Perp LLUUID } - { Time U32 } - { Mag F32 } - { Type U8 } - } + MeanCollisionAlert Low 136 Trusted Zerocoded + { + MeanCollision Variable + { Victim LLUUID } + { Perp LLUUID } + { Time U32 } + { Mag F32 } + { Type U8 } + } } // ViewerFrozenMessage // Specifies the text to be posted in an alert dialog { - ViewerFrozenMessage Low 137 Trusted Unencoded - { - FrozenData Single - { Data BOOL } - } + ViewerFrozenMessage Low 137 Trusted Unencoded + { + FrozenData Single + { Data BOOL } + } } // Health Message // Tells viewer what agent health is { - HealthMessage Low 138 Trusted Zerocoded - { - HealthData Single - { Health F32 } - } + HealthMessage Low 138 Trusted Zerocoded + { + HealthData Single + { Health F32 } + } } // ChatFromSimulator @@ -2905,55 +2927,55 @@ version 2.0 // Viewer can optionally use position to animate // If audible is CHAT_NOT_AUDIBLE, message will not be valid { - ChatFromSimulator Low 139 Trusted Unencoded - { - ChatData Single - { FromName Variable 1 } - { SourceID LLUUID } // agent id or object id - { OwnerID LLUUID } // object's owner - { SourceType U8 } - { ChatType U8 } - { Audible U8 } - { Position LLVector3 } - { Message Variable 2 } // UTF-8 text - } + ChatFromSimulator Low 139 Trusted Unencoded + { + ChatData Single + { FromName Variable 1 } + { SourceID LLUUID } // agent id or object id + { OwnerID LLUUID } // object's owner + { SourceType U8 } + { ChatType U8 } + { Audible U8 } + { Position LLVector3 } + { Message Variable 2 } // UTF-8 text + } } // Simulator statistics packet (goes out to viewer and dataserver/spaceserver) { - SimStats Low 140 Trusted Unencoded - { - Region Single - { RegionX U32 } - { RegionY U32 } - { RegionFlags U32 } - { ObjectCapacity U32 } - } - { - Stat Variable - { StatID U32 } - { StatValue F32 } - } - { - PidStat Single - { PID S32 } - } - { - RegionInfo Variable - { RegionFlagsExtended U64 } - } + SimStats Low 140 Trusted Unencoded + { + Region Single + { RegionX U32 } + { RegionY U32 } + { RegionFlags U32 } + { ObjectCapacity U32 } + } + { + Stat Variable + { StatID U32 } + { StatValue F32 } + } + { + PidStat Single + { PID S32 } + } + { + RegionInfo Variable + { RegionFlagsExtended U64 } + } } // viewer -> sim // reliable { - RequestRegionInfo Low 141 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } + RequestRegionInfo Low 141 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } } // RegionInfo @@ -2962,53 +2984,63 @@ version 2.0 // sim -> viewer // reliable { - RegionInfo Low 142 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - RegionInfo Single - { SimName Variable 1 } // string - { EstateID U32 } - { ParentEstateID U32 } - { RegionFlags U32 } - { SimAccess U8 } - { MaxAgents U8 } - { BillableFactor F32 } - { ObjectBonusFactor F32 } - { WaterHeight F32 } - { TerrainRaiseLimit F32 } - { TerrainLowerLimit F32 } - { PricePerMeter S32 } - { RedirectGridX S32 } - { RedirectGridY S32 } - { UseEstateSun BOOL } - { SunHour F32 } // last value set by estate or region controls JC - } - { - RegionInfo2 Single - { ProductSKU Variable 1 } // string - { ProductName Variable 1 } // string - { MaxAgents32 U32 } // Identical to RegionInfo.MaxAgents but allows greater range - { HardMaxAgents U32 } - { HardMaxObjects U32 } - } - { - RegionInfo3 Variable - { RegionFlagsExtended U64 } - } - { - RegionInfo5 Variable - { ChatWhisperRange F32 } - { ChatNormalRange F32 } - { ChatShoutRange F32 } - { ChatWhisperOffset F32 } - { ChatNormalOffset F32 } - { ChatShoutOffset F32 } - { ChatFlags U32 } - } + RegionInfo Low 142 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + RegionInfo Single + { SimName Variable 1 } // string + { EstateID U32 } + { ParentEstateID U32 } + { RegionFlags U32 } + { SimAccess U8 } + { MaxAgents U8 } + { BillableFactor F32 } + { ObjectBonusFactor F32 } + { WaterHeight F32 } + { TerrainRaiseLimit F32 } + { TerrainLowerLimit F32 } + { PricePerMeter S32 } + { RedirectGridX S32 } + { RedirectGridY S32 } + { UseEstateSun BOOL } + { SunHour F32 } // last value set by estate or region controls JC + } + { + RegionInfo2 Single + { ProductSKU Variable 1 } // string + { ProductName Variable 1 } // string + { MaxAgents32 U32 } // Identical to RegionInfo.MaxAgents but allows greater range + { HardMaxAgents U32 } + { HardMaxObjects U32 } + } + { + RegionInfo3 Variable + { RegionFlagsExtended U64 } + } + { + RegionInfo5 Variable + { ChatWhisperRange F32 } + { ChatNormalRange F32 } + { ChatShoutRange F32 } + { ChatWhisperOffset F32 } + { ChatNormalOffset F32 } + { ChatShoutOffset F32 } + { ChatFlags U32 } + } + { + CombatSettings Variable + { CombatFlags U32 } + { OnDeath U8 } + { DamageThrottle F32 } + { RegenerationRate F32 } + { InvulnerabilyTime F32 } + { DamageLimit F32 } + } + } // GodUpdateRegionInfo @@ -3017,27 +3049,27 @@ version 2.0 // viewer -> sim // reliable { - GodUpdateRegionInfo Low 143 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - RegionInfo Single - { SimName Variable 1 } // string - { EstateID U32 } - { ParentEstateID U32 } - { RegionFlags U32 } - { BillableFactor F32 } - { PricePerMeter S32 } - { RedirectGridX S32 } - { RedirectGridY S32 } - } - { - RegionInfo2 Variable - { RegionFlagsExtended U64 } - } + GodUpdateRegionInfo Low 143 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + RegionInfo Single + { SimName Variable 1 } // string + { EstateID U32 } + { ParentEstateID U32 } + { RegionFlags U32 } + { BillableFactor F32 } + { PricePerMeter S32 } + { RedirectGridX S32 } + { RedirectGridY S32 } + } + { + RegionInfo2 Variable + { RegionFlagsExtended U64 } + } } //NearestLandingRegionRequest @@ -3046,11 +3078,11 @@ version 2.0 //to request the most up to date region for the requesting //region to redirect teleports to { - NearestLandingRegionRequest Low 144 Trusted Unencoded - { - RequestingRegionData Single - { RegionHandle U64 } - } + NearestLandingRegionRequest Low 144 Trusted Unencoded + { + RequestingRegionData Single + { RegionHandle U64 } + } } //NearestLandingPointReply @@ -3059,11 +3091,11 @@ version 2.0 //to the redirectregion request stating which region //the requesting region should redirect teleports to if necessary { - NearestLandingRegionReply Low 145 Trusted Unencoded - { - LandingRegionData Single - { RegionHandle U64 } - } + NearestLandingRegionReply Low 145 Trusted Unencoded + { + LandingRegionData Single + { RegionHandle U64 } + } } //NearestLandingPointUpdated @@ -3072,11 +3104,11 @@ version 2.0 //to have the dataserver note/clear in the db //that the region has updated it's nearest landing point { - NearestLandingRegionUpdated Low 146 Trusted Unencoded - { - RegionData Single - { RegionHandle U64 } - } + NearestLandingRegionUpdated Low 146 Trusted Unencoded + { + RegionData Single + { RegionHandle U64 } + } } @@ -3085,11 +3117,11 @@ version 2.0 //Sent from the region to the data server //to note that the region's teleportation landing status has changed { - TeleportLandingStatusChanged Low 147 Trusted Unencoded - { - RegionData Single - { RegionHandle U64 } - } + TeleportLandingStatusChanged Low 147 Trusted Unencoded + { + RegionData Single + { RegionHandle U64 } + } } // RegionHandshake @@ -3098,51 +3130,51 @@ version 2.0 // sim -> viewer // reliable { - RegionHandshake Low 148 Trusted Zerocoded - { - RegionInfo Single - { RegionFlags U32 } - { SimAccess U8 } - { SimName Variable 1 } // string - { SimOwner LLUUID } - { IsEstateManager BOOL } // this agent, for this sim - { WaterHeight F32 } - { BillableFactor F32 } - { CacheID LLUUID } - { TerrainBase0 LLUUID } - { TerrainBase1 LLUUID } - { TerrainBase2 LLUUID } - { TerrainBase3 LLUUID } - { TerrainDetail0 LLUUID } - { TerrainDetail1 LLUUID } - { TerrainDetail2 LLUUID } - { TerrainDetail3 LLUUID } - { TerrainStartHeight00 F32 } - { TerrainStartHeight01 F32 } - { TerrainStartHeight10 F32 } - { TerrainStartHeight11 F32 } - { TerrainHeightRange00 F32 } - { TerrainHeightRange01 F32 } - { TerrainHeightRange10 F32 } - { TerrainHeightRange11 F32 } - } - { - RegionInfo2 Single - { RegionID LLUUID } - } - { - RegionInfo3 Single - { CPUClassID S32 } - { CPURatio S32 } - { ColoName Variable 1 } // string - { ProductSKU Variable 1 } // string - { ProductName Variable 1 } // string - } - { - RegionInfo4 Variable - { RegionFlagsExtended U64 } - { RegionProtocols U64 } - } + RegionHandshake Low 148 Trusted Zerocoded + { + RegionInfo Single + { RegionFlags U32 } + { SimAccess U8 } + { SimName Variable 1 } // string + { SimOwner LLUUID } + { IsEstateManager BOOL } // this agent, for this sim + { WaterHeight F32 } + { BillableFactor F32 } + { CacheID LLUUID } + { TerrainBase0 LLUUID } + { TerrainBase1 LLUUID } + { TerrainBase2 LLUUID } + { TerrainBase3 LLUUID } + { TerrainDetail0 LLUUID } + { TerrainDetail1 LLUUID } + { TerrainDetail2 LLUUID } + { TerrainDetail3 LLUUID } + { TerrainStartHeight00 F32 } + { TerrainStartHeight01 F32 } + { TerrainStartHeight10 F32 } + { TerrainStartHeight11 F32 } + { TerrainHeightRange00 F32 } + { TerrainHeightRange01 F32 } + { TerrainHeightRange10 F32 } + { TerrainHeightRange11 F32 } + } + { + RegionInfo2 Single + { RegionID LLUUID } + } + { + RegionInfo3 Single + { CPUClassID S32 } + { CPURatio S32 } + { ColoName Variable 1 } // string + { ProductSKU Variable 1 } // string + { ProductName Variable 1 } // string + } + { + RegionInfo4 Variable + { RegionFlagsExtended U64 } + { RegionProtocols U64 } + } } // RegionHandshakeReply @@ -3154,295 +3186,295 @@ version 2.0 // After the simulator receives this, it will start sending // data about objects. { - RegionHandshakeReply Low 149 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - RegionInfo Single - { Flags U32 } - } + RegionHandshakeReply Low 149 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + RegionInfo Single + { Flags U32 } + } } -// The CoarseLocationUpdate message is sent to notify the viewer of +// The CoarseLocationUpdate message is sent to notify the viewer of // the location of mappable objects in the region. 1 meter resolution is -// sufficient for this. The index block is used to show where you are, +// sufficient for this. The index block is used to show where you are, // and where someone you are tracking is located. They are -1 if not // applicable. { - CoarseLocationUpdate Medium 6 Trusted Unencoded - { - Location Variable - { X U8 } - { Y U8 } - { Z U8 } // Z in meters / 4 - } - { - Index Single - { You S16 } - { Prey S16 } - } - { - AgentData Variable - { AgentID LLUUID } - } -} - -// ImageData - sent to viewer to transmit information about an image -{ - ImageData High 9 Trusted Unencoded - { - ImageID Single - { ID LLUUID } - { Codec U8 } - { Size U32 } - { Packets U16 } - } - { - ImageData Single - { Data Variable 2 } - } -} - -// ImagePacket - follow on image data for images having > 1 packet of data -{ - ImagePacket High 10 Trusted Unencoded - { - ImageID Single - { ID LLUUID } - { Packet U16 } - } - { - ImageData Single - { Data Variable 2 } - } + CoarseLocationUpdate Medium 6 Trusted Unencoded + { + Location Variable + { X U8 } + { Y U8 } + { Z U8 } // Z in meters / 4 + } + { + Index Single + { You S16 } + { Prey S16 } + } + { + AgentData Variable + { AgentID LLUUID } + } +} + +// ImageData - sent to viewer to transmit information about an image +{ + ImageData High 9 Trusted Unencoded + { + ImageID Single + { ID LLUUID } + { Codec U8 } + { Size U32 } + { Packets U16 } + } + { + ImageData Single + { Data Variable 2 } + } +} + +// ImagePacket - follow on image data for images having > 1 packet of data +{ + ImagePacket High 10 Trusted Unencoded + { + ImageID Single + { ID LLUUID } + { Packet U16 } + } + { + ImageData Single + { Data Variable 2 } + } } // LayerData - Sent to viewer - encodes layer data { - LayerData High 11 Trusted Unencoded - { - LayerID Single - { Type U8 } + LayerData High 11 Trusted Unencoded + { + LayerID Single + { Type U8 } - } - { - LayerData Single - { Data Variable 2 } - } + } + { + LayerData Single + { Data Variable 2 } + } } // ObjectUpdate - Sent by objects from the simulator to the viewer // // If only one ImageID is sent for an object type that has more than // one face, the same image is repeated on each subsequent face. -// +// // NameValue is a list of name-value strings, separated by \n characters, // terminated by \0 // // Data is type-specific opaque data for this object { - ObjectUpdate High 12 Trusted Zerocoded - { - RegionData Single - { RegionHandle U64 } - { TimeDilation U16 } - } - { - ObjectData Variable - { ID U32 } - { State U8 } - - { FullID LLUUID } - { CRC U32 } // TEMPORARY HACK FOR JAMES - { PCode U8 } - { Material U8 } - { ClickAction U8 } - { Scale LLVector3 } - { ObjectData Variable 1 } - - { ParentID U32 } - { UpdateFlags U32 } // U32, see object_flags.h - - { PathCurve U8 } - { ProfileCurve U8 } - { PathBegin U16 } // 0 to 1, quanta = 0.01 - { PathEnd U16 } // 0 to 1, quanta = 0.01 - { PathScaleX U8 } // 0 to 1, quanta = 0.01 - { PathScaleY U8 } // 0 to 1, quanta = 0.01 - { PathShearX U8 } // -.5 to .5, quanta = 0.01 - { PathShearY U8 } // -.5 to .5, quanta = 0.01 - { PathTwist S8 } // -1 to 1, quanta = 0.01 - { PathTwistBegin S8 } // -1 to 1, quanta = 0.01 - { PathRadiusOffset S8 } // -1 to 1, quanta = 0.01 - { PathTaperX S8 } // -1 to 1, quanta = 0.01 - { PathTaperY S8 } // -1 to 1, quanta = 0.01 - { PathRevolutions U8 } // 0 to 3, quanta = 0.015 - { PathSkew S8 } // -1 to 1, quanta = 0.01 - { ProfileBegin U16 } // 0 to 1, quanta = 0.01 - { ProfileEnd U16 } // 0 to 1, quanta = 0.01 - { ProfileHollow U16 } // 0 to 1, quanta = 0.01 - - { TextureEntry Variable 2 } - { TextureAnim Variable 1 } - - { NameValue Variable 2 } - { Data Variable 2 } - { Text Variable 1 } // llSetText() hovering text - { TextColor Fixed 4 } // actually, a LLColor4U - { MediaURL Variable 1 } // URL for web page, movie, etc. - - // Info for particle systems - { PSBlock Variable 1 } - - // Extra parameters - { ExtraParams Variable 1 } - - // info for looped attached sounds + ObjectUpdate High 12 Trusted Zerocoded + { + RegionData Single + { RegionHandle U64 } + { TimeDilation U16 } + } + { + ObjectData Variable + { ID U32 } + { State U8 } + + { FullID LLUUID } + { CRC U32 } // TEMPORARY HACK FOR JAMES + { PCode U8 } + { Material U8 } + { ClickAction U8 } + { Scale LLVector3 } + { ObjectData Variable 1 } + + { ParentID U32 } + { UpdateFlags U32 } // see object_flags.h + + { PathCurve U8 } + { ProfileCurve U8 } + { PathBegin U16 } // 0 to 1, quanta = 0.01 + { PathEnd U16 } // 0 to 1, quanta = 0.01 + { PathScaleX U8 } // 0 to 1, quanta = 0.01 + { PathScaleY U8 } // 0 to 1, quanta = 0.01 + { PathShearX U8 } // -.5 to .5, quanta = 0.01 + { PathShearY U8 } // -.5 to .5, quanta = 0.01 + { PathTwist S8 } // -1 to 1, quanta = 0.01 + { PathTwistBegin S8 } // -1 to 1, quanta = 0.01 + { PathRadiusOffset S8 } // -1 to 1, quanta = 0.01 + { PathTaperX S8 } // -1 to 1, quanta = 0.01 + { PathTaperY S8 } // -1 to 1, quanta = 0.01 + { PathRevolutions U8 } // 0 to 3, quanta = 0.015 + { PathSkew S8 } // -1 to 1, quanta = 0.01 + { ProfileBegin U16 } // 0 to 1, quanta = 0.01 + { ProfileEnd U16 } // 0 to 1, quanta = 0.01 + { ProfileHollow U16 } // 0 to 1, quanta = 0.01 + + { TextureEntry Variable 2 } + { TextureAnim Variable 1 } + + { NameValue Variable 2 } + { Data Variable 2 } + { Text Variable 1 } // llSetText() hovering text + { TextColor Fixed 4 } // actually, a LLColor4U + { MediaURL Variable 1 } // URL for web page, movie, etc. + + // Info for particle systems + { PSBlock Variable 1 } + + // Extra parameters + { ExtraParams Variable 1 } + + // info for looped attached sounds // because these are almost always all zero - // the hit after zero-coding is only 2 bytes - // not the 42 you see here - { Sound LLUUID } - { OwnerID LLUUID } // HACK object's owner id, only set if non-null sound, for muting - { Gain F32 } - { Flags U8 } - { Radius F32 } // cutoff radius - - // joint info -- is sent in the update of each joint-child-root - { JointType U8 } - { JointPivot LLVector3 } - { JointAxisOrAnchor LLVector3 } - } + // the hit after zero-coding is only 2 bytes + // not the 42 you see here + { Sound LLUUID } + { OwnerID LLUUID } // HACK object's owner id, only set if non-null sound, for muting + { Gain F32 } + { Flags U8 } + { Radius F32 } // cutoff radius + + // joint info -- is sent in the update of each joint-child-root + { JointType U8 } + { JointPivot LLVector3 } + { JointAxisOrAnchor LLVector3 } + } } // ObjectUpdateCompressed { - ObjectUpdateCompressed High 13 Trusted Unencoded - { - RegionData Single - { RegionHandle U64 } - { TimeDilation U16 } - } - { - ObjectData Variable - { UpdateFlags U32 } - { Data Variable 2 } - } + ObjectUpdateCompressed High 13 Trusted Unencoded + { + RegionData Single + { RegionHandle U64 } + { TimeDilation U16 } + } + { + ObjectData Variable + { UpdateFlags U32 } + { Data Variable 2 } + } } // ObjectUpdateCached // reliable { - ObjectUpdateCached High 14 Trusted Unencoded - { - RegionData Single - { RegionHandle U64 } - { TimeDilation U16 } - } - { - ObjectData Variable - { ID U32 } - { CRC U32 } - { UpdateFlags U32 } - } + ObjectUpdateCached High 14 Trusted Unencoded + { + RegionData Single + { RegionHandle U64 } + { TimeDilation U16 } + } + { + ObjectData Variable + { ID U32 } + { CRC U32 } + { UpdateFlags U32 } + } } // packed terse object update format { - ImprovedTerseObjectUpdate High 15 Trusted Unencoded - { - RegionData Single - { RegionHandle U64 } - { TimeDilation U16 } - } - { - ObjectData Variable - { Data Variable 1 } - { TextureEntry Variable 2 } - } + ImprovedTerseObjectUpdate High 15 Trusted Unencoded + { + RegionData Single + { RegionHandle U64 } + { TimeDilation U16 } + } + { + ObjectData Variable + { Data Variable 1 } + { TextureEntry Variable 2 } + } } // KillObject - Sent by objects to the viewer to tell them to kill themselves { - KillObject High 16 Trusted Unencoded - { - ObjectData Variable - { ID U32 } - } + KillObject High 16 Trusted Unencoded + { + ObjectData Variable + { ID U32 } + } } -// CrossedRegion - new way to tell a viewer it has gone across a region +// CrossedRegion - new way to tell a viewer it has gone across a region // boundary { - CrossedRegion Medium 7 Trusted Unencoded UDPBlackListed - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - RegionData Single - { SimIP IPADDR } - { SimPort IPPORT } - { RegionHandle U64 } - { SeedCapability Variable 2 } // URL - } - { - Info Single - { Position LLVector3 } - { LookAt LLVector3 } - } + CrossedRegion Medium 7 Trusted Unencoded UDPBlackListed + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + RegionData Single + { SimIP IPADDR } + { SimPort IPPORT } + { RegionHandle U64 } + { SeedCapability Variable 2 } // URL + } + { + Info Single + { Position LLVector3 } + { LookAt LLVector3 } + } } // SimulatorViewerTimeMessage - Allows viewer to resynch to world time { - SimulatorViewerTimeMessage Low 150 Trusted Unencoded - { - TimeInfo Single - { UsecSinceStart U64 } - { SecPerDay U32 } - { SecPerYear U32 } - { SunDirection LLVector3 } - { SunPhase F32 } - { SunAngVelocity LLVector3 } - } + SimulatorViewerTimeMessage Low 150 Trusted Unencoded + { + TimeInfo Single + { UsecSinceStart U64 } + { SecPerDay U32 } + { SecPerYear U32 } + { SunDirection LLVector3 } + { SunPhase F32 } + { SunAngVelocity LLVector3 } + } } // EnableSimulator - Preps a viewer to receive data from a simulator { - EnableSimulator Low 151 Trusted Unencoded UDPBlackListed - { - SimulatorInfo Single - { Handle U64 } - { IP IPADDR } - { Port IPPORT } - } + EnableSimulator Low 151 Trusted Unencoded UDPBlackListed + { + SimulatorInfo Single + { Handle U64 } + { IP IPADDR } + { Port IPPORT } + } } // DisableThisSimulator - Tells a viewer not to expect data from this simulator anymore { - DisableSimulator Low 152 Trusted Unencoded + DisableSimulator Low 152 Trusted Unencoded } // ConfirmEnableSimulator - A confirmation message sent from simulator to neighbors that the simulator // has successfully been enabled by the viewer { - ConfirmEnableSimulator Medium 8 Trusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } + ConfirmEnableSimulator Medium 8 Trusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } } //----------------------------------------------------------------------------- @@ -3451,52 +3483,52 @@ version 2.0 // Request a new transfer (target->source) { - TransferRequest Low 153 NotTrusted Zerocoded - { - TransferInfo Single - { TransferID LLUUID } - { ChannelType S32 } - { SourceType S32 } - { Priority F32 } - { Params Variable 2 } - } + TransferRequest Low 153 NotTrusted Zerocoded + { + TransferInfo Single + { TransferID LLUUID } + { ChannelType S32 } + { SourceType S32 } + { Priority F32 } + { Params Variable 2 } + } } // Return info about a transfer/initiate transfer (source->target) // Possibly should have a Params field like above { - TransferInfo Low 154 NotTrusted Zerocoded - { - TransferInfo Single - { TransferID LLUUID } - { ChannelType S32 } - { TargetType S32 } - { Status S32 } - { Size S32 } - { Params Variable 2 } - } + TransferInfo Low 154 NotTrusted Zerocoded + { + TransferInfo Single + { TransferID LLUUID } + { ChannelType S32 } + { TargetType S32 } + { Status S32 } + { Size S32 } + { Params Variable 2 } + } } { - TransferPacket High 17 NotTrusted Unencoded - { - TransferData Single - { TransferID LLUUID } - { ChannelType S32 } - { Packet S32 } - { Status S32 } - { Data Variable 2 } - } + TransferPacket High 17 NotTrusted Unencoded + { + TransferData Single + { TransferID LLUUID } + { ChannelType S32 } + { Packet S32 } + { Status S32 } + { Data Variable 2 } + } } // Abort a transfer in progress (either from target->source or source->target) { - TransferAbort Low 155 NotTrusted Zerocoded - { - TransferInfo Single - { TransferID LLUUID } - { ChannelType S32 } - } + TransferAbort Low 155 NotTrusted Zerocoded + { + TransferInfo Single + { TransferID LLUUID } + { ChannelType S32 } + } } @@ -3506,51 +3538,51 @@ version 2.0 // RequestXfer - request an arbitrary xfer { - RequestXfer Low 156 NotTrusted Zerocoded - { - XferID Single - { ID U64 } - { Filename Variable 1 } - { FilePath U8 } // ELLPath - { DeleteOnCompletion BOOL } // BOOL - { UseBigPackets BOOL } // BOOL - { VFileID LLUUID } - { VFileType S16 } - } -} - -// SendXferPacket - send an additional packet of an arbitrary xfer from sim -> viewer -{ - SendXferPacket High 18 NotTrusted Unencoded - { - XferID Single - { ID U64 } - { Packet U32 } - } - { - DataPacket Single - { Data Variable 2 } - } + RequestXfer Low 156 NotTrusted Zerocoded + { + XferID Single + { ID U64 } + { Filename Variable 1 } + { FilePath U8 } // ELLPath + { DeleteOnCompletion BOOL } + { UseBigPackets BOOL } + { VFileID LLUUID } + { VFileType S16 } + } +} + +// SendXferPacket - send an additional packet of an arbitrary xfer from sim -> viewer +{ + SendXferPacket High 18 NotTrusted Unencoded + { + XferID Single + { ID U64 } + { Packet U32 } + } + { + DataPacket Single + { Data Variable 2 } + } } // ConfirmXferPacket { - ConfirmXferPacket High 19 NotTrusted Unencoded - { - XferID Single - { ID U64 } - { Packet U32 } - } + ConfirmXferPacket High 19 NotTrusted Unencoded + { + XferID Single + { ID U64 } + { Packet U32 } + } } // AbortXfer { - AbortXfer Low 157 NotTrusted Unencoded - { - XferID Single - { ID U64 } - { Result S32 } - } + AbortXfer Low 157 NotTrusted Unencoded + { + XferID Single + { ID U64 } + { Result S32 } + } } //----------------------------------------------------------------------------- @@ -3559,198 +3591,198 @@ version 2.0 // AvatarAnimation - Update animation state -// simulator --> viewer -{ - AvatarAnimation High 20 Trusted Unencoded - { - Sender Single - { ID LLUUID } - } - { - AnimationList Variable - { AnimID LLUUID } - { AnimSequenceID S32 } - } - { - AnimationSourceList Variable - { ObjectID LLUUID } - } - { - PhysicalAvatarEventList Variable - { TypeData Variable 1 } - } +// simulator --> viewer +{ + AvatarAnimation High 20 Trusted Unencoded + { + Sender Single + { ID LLUUID } + } + { + AnimationList Variable + { AnimID LLUUID } + { AnimSequenceID S32 } + } + { + AnimationSourceList Variable + { ObjectID LLUUID } + } + { + PhysicalAvatarEventList Variable + { TypeData Variable 1 } + } } + // AvatarAppearance - Update visual params { - AvatarAppearance Low 158 Trusted Zerocoded - { - Sender Single - { ID LLUUID } - { IsTrial BOOL } - } - { - ObjectData Single - { TextureEntry Variable 2 } - } - { - VisualParam Variable - { ParamValue U8 } - } - { - AppearanceData Variable - { AppearanceVersion U8 } - { CofVersion S32 } - { Flags U32 } - } - { - AppearanceHover Variable - { HoverHeight LLVector3 } - } - { - AttachmentBlock Variable - { ID LLUUID } - { AttachmentPoint U8 } - } + AvatarAppearance Low 158 Trusted Zerocoded + { + Sender Single + { ID LLUUID } + { IsTrial BOOL } + } + { + ObjectData Single + { TextureEntry Variable 2 } + } + { + VisualParam Variable + { ParamValue U8 } + } + { + AppearanceData Variable + { AppearanceVersion U8 } + { CofVersion S32 } + { Flags U32 } + } + { + AppearanceHover Variable + { HoverHeight LLVector3 } + } + { + AttachmentBlock Variable + { ID LLUUID } + { AttachmentPoint U8 } + } } // AvatarSitResponse - response to a request to sit on an object { - AvatarSitResponse High 21 Trusted Zerocoded - { - SitObject Single - { ID LLUUID } - } - { - SitTransform Single - { AutoPilot BOOL } - { SitPosition LLVector3 } - { SitRotation LLQuaternion } - { CameraEyeOffset LLVector3 } - { CameraAtOffset LLVector3 } - { ForceMouselook BOOL } - } + AvatarSitResponse High 21 Trusted Zerocoded + { + SitObject Single + { ID LLUUID } + } + { + SitTransform Single + { AutoPilot BOOL } + { SitPosition LLVector3 } + { SitRotation LLQuaternion } + { CameraEyeOffset LLVector3 } + { CameraAtOffset LLVector3 } + { ForceMouselook BOOL } + } } // SetFollowCamProperties -{ - SetFollowCamProperties Low 159 Trusted Unencoded - { - ObjectData Single - { ObjectID LLUUID } - } - { - CameraProperty Variable - { Type S32 } - { Value F32 } - } +{ + SetFollowCamProperties Low 159 Trusted Unencoded + { + ObjectData Single + { ObjectID LLUUID } + } + { + CameraProperty Variable + { Type S32 } + { Value F32 } + } } // ClearFollowCamProperties { - ClearFollowCamProperties Low 160 Trusted Unencoded - { - ObjectData Single - { ObjectID LLUUID } - } + ClearFollowCamProperties Low 160 Trusted Unencoded + { + ObjectData Single + { ObjectID LLUUID } + } } // CameraConstraint - new camera distance limit (based on collision with objects) { - CameraConstraint High 22 Trusted Zerocoded - { - CameraCollidePlane Single - { Plane LLVector4 } - } + CameraConstraint High 22 Trusted Zerocoded + { + CameraCollidePlane Single + { Plane LLVector4 } + } } // ObjectProperties // Extended information such as creator, permissions, etc. // Medium because potentially driven by mouse hover events. { - ObjectProperties Medium 9 Trusted Zerocoded - { - ObjectData Variable - { ObjectID LLUUID } - { CreatorID LLUUID } - { OwnerID LLUUID } - { GroupID LLUUID } - { CreationDate U64 } - { BaseMask U32 } - { OwnerMask U32 } - { GroupMask U32 } - { EveryoneMask U32 } - { NextOwnerMask U32 } - { OwnershipCost S32 } -// { TaxRate F32 } // F32 - { SaleType U8 } // U8 -> EForSale - { SalePrice S32 } - { AggregatePerms U8 } - { AggregatePermTextures U8 } - { AggregatePermTexturesOwner U8 } - { Category U32 } // LLCategory - { InventorySerial S16 } // S16 - { ItemID LLUUID } - { FolderID LLUUID } - { FromTaskID LLUUID } - { LastOwnerID LLUUID } - { Name Variable 1 } - { Description Variable 1 } - { TouchName Variable 1 } - { SitName Variable 1 } - { TextureID Variable 1 } - } + ObjectProperties Medium 9 Trusted Zerocoded + { + ObjectData Variable + { ObjectID LLUUID } + { CreatorID LLUUID } + { OwnerID LLUUID } + { GroupID LLUUID } + { CreationDate U64 } + { BaseMask U32 } + { OwnerMask U32 } + { GroupMask U32 } + { EveryoneMask U32 } + { NextOwnerMask U32 } + { OwnershipCost S32 } +// { TaxRate F32 } // F32 + { SaleType U8 } // U8 -> EForSale + { SalePrice S32 } + { AggregatePerms U8 } + { AggregatePermTextures U8 } + { AggregatePermTexturesOwner U8 } + { Category U32 } // LLCategory + { InventorySerial S16 } // S16 + { ItemID LLUUID } + { FolderID LLUUID } + { FromTaskID LLUUID } + { LastOwnerID LLUUID } + { Name Variable 1 } + { Description Variable 1 } + { TouchName Variable 1 } + { SitName Variable 1 } + { TextureID Variable 1 } + } } // ObjectPropertiesFamily // Medium because potentially driven by mouse hover events. { - ObjectPropertiesFamily Medium 10 Trusted Zerocoded - { - ObjectData Single - { RequestFlags U32 } - { ObjectID LLUUID } - { OwnerID LLUUID } - { GroupID LLUUID } - { BaseMask U32 } - { OwnerMask U32 } - { GroupMask U32 } - { EveryoneMask U32 } - { NextOwnerMask U32 } - { OwnershipCost S32 } - { SaleType U8 } // U8 -> EForSale - { SalePrice S32 } - { Category U32 } // LLCategory - { LastOwnerID LLUUID } - { Name Variable 1 } - { Description Variable 1 } - } + ObjectPropertiesFamily Medium 10 Trusted Zerocoded + { + ObjectData Single + { RequestFlags U32 } + { ObjectID LLUUID } + { OwnerID LLUUID } + { GroupID LLUUID } + { BaseMask U32 } + { OwnerMask U32 } + { GroupMask U32 } + { EveryoneMask U32 } + { NextOwnerMask U32 } + { OwnershipCost S32 } + { SaleType U8 } // U8 -> EForSale + { SalePrice S32 } + { Category U32 } // LLCategory + { LastOwnerID LLUUID } + { Name Variable 1 } + { Description Variable 1 } + } } // RequestPayPrice // viewer -> sim { - RequestPayPrice Low 161 NotTrusted Unencoded - { - ObjectData Single - { ObjectID LLUUID } - } + RequestPayPrice Low 161 NotTrusted Unencoded + { + ObjectData Single + { ObjectID LLUUID } + } } // PayPriceReply // sim -> viewer { - PayPriceReply Low 162 Trusted Unencoded - { - ObjectData Single - { ObjectID LLUUID } - { DefaultPayPrice S32 } - } - { - ButtonData Variable - - { PayButton S32 } - } + PayPriceReply Low 162 Trusted Unencoded + { + ObjectData Single + { ObjectID LLUUID } + { DefaultPayPrice S32 } + } + { + ButtonData Variable + { PayButton S32 } + } } // KickUser @@ -3760,29 +3792,29 @@ version 2.0 // ROUTED dataserver -> userserver -> spaceserver -> simulator -> viewer // reliable, but that may not matter if a system component is quitting { - KickUser Low 163 Trusted Unencoded - { - TargetBlock Single - { TargetIP IPADDR } // U32 encoded IP - { TargetPort IPPORT } - } - { - UserInfo Single - { AgentID LLUUID } - { SessionID LLUUID } - { Reason Variable 2 } // string - } + KickUser Low 163 Trusted Unencoded + { + TargetBlock Single + { TargetIP IPADDR } // U32 encoded IP + { TargetPort IPPORT } + } + { + UserInfo Single + { AgentID LLUUID } + { SessionID LLUUID } + { Reason Variable 2 } // string + } } // ack sent from the simulator up to the main database so that login // can continue. { - KickUserAck Low 164 Trusted Unencoded - { - UserInfo Single - { SessionID LLUUID } - { Flags U32 } - } + KickUserAck Low 164 Trusted Unencoded + { + UserInfo Single + { SessionID LLUUID } + { Flags U32 } + } } // GodKickUser @@ -3790,42 +3822,42 @@ version 2.0 // viewer -> sim // reliable { - GodKickUser Low 165 NotTrusted Unencoded - { - UserInfo Single - { GodID LLUUID } - { GodSessionID LLUUID } - { AgentID LLUUID } - { KickFlags U32 } - { Reason Variable 2 } // string - } + GodKickUser Low 165 NotTrusted Unencoded + { + UserInfo Single + { GodID LLUUID } + { GodSessionID LLUUID } + { AgentID LLUUID } + { KickFlags U32 } + { Reason Variable 2 } // string + } } // SystemKickUser // user->space, reliable { - SystemKickUser Low 166 Trusted Unencoded - { - AgentInfo Variable - { AgentID LLUUID } - } + SystemKickUser Low 166 Trusted Unencoded + { + AgentInfo Variable + { AgentID LLUUID } + } } // EjectUser // viewer -> sim // reliable { - EjectUser Low 167 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - Data Single - { TargetID LLUUID } - { Flags U32 } - } + EjectUser Low 167 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + Data Single + { TargetID LLUUID } + { Flags U32 } + } } // FreezeUser @@ -3833,17 +3865,17 @@ version 2.0 // viewer -> sim // reliable { - FreezeUser Low 168 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - Data Single - { TargetID LLUUID } - { Flags U32 } - } + FreezeUser Low 168 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + Data Single + { TargetID LLUUID } + { Flags U32 } + } } @@ -3851,68 +3883,68 @@ version 2.0 // viewer -> simulator // reliable { - AvatarPropertiesRequest Low 169 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { AvatarID LLUUID } - } + AvatarPropertiesRequest Low 169 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { AvatarID LLUUID } + } } // AvatarPropertiesRequestBackend // simulator -> dataserver // reliable { - AvatarPropertiesRequestBackend Low 170 Trusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { AvatarID LLUUID } - { GodLevel U8 } - { WebProfilesDisabled BOOL } - } + AvatarPropertiesRequestBackend Low 170 Trusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { AvatarID LLUUID } + { GodLevel U8 } + { WebProfilesDisabled BOOL } + } } // AvatarPropertiesReply // dataserver -> simulator // simulator -> viewer // reliable { - AvatarPropertiesReply Low 171 Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } // your id - { AvatarID LLUUID } // avatar you're asking about - } - { - PropertiesData Single - { ImageID LLUUID } - { FLImageID LLUUID } - { PartnerID LLUUID } - { AboutText Variable 2 } // string, up to 512 - { FLAboutText Variable 1 } // string - { BornOn Variable 1 } // string - { ProfileURL Variable 1 } // string - { CharterMember Variable 1 } // special - usually U8 - { Flags U32 } - } -} - -{ - AvatarInterestsReply Low 172 Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } // your id - { AvatarID LLUUID } // avatar you're asking about - } - { - PropertiesData Single - { WantToMask U32 } - { WantToText Variable 1 } // string - { SkillsMask U32 } - { SkillsText Variable 1 } // string - { LanguagesText Variable 1 } // string - } + AvatarPropertiesReply Low 171 Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } // your id + { AvatarID LLUUID } // avatar you're asking about + } + { + PropertiesData Single + { ImageID LLUUID } + { FLImageID LLUUID } + { PartnerID LLUUID } + { AboutText Variable 2 } // string, up to 512 + { FLAboutText Variable 1 } // string + { BornOn Variable 1 } // string + { ProfileURL Variable 1 } // string + { CharterMember Variable 1 } // special - usually U8 + { Flags U32 } + } +} + +{ + AvatarInterestsReply Low 172 Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } // your id + { AvatarID LLUUID } // avatar you're asking about + } + { + PropertiesData Single + { WantToMask U32 } + { WantToText Variable 1 } // string + { SkillsMask U32 } + { SkillsText Variable 1 } // string + { LanguagesText Variable 1 } // string + } } // AvatarGroupsReply @@ -3920,25 +3952,25 @@ version 2.0 // simulator -> viewer // reliable { - AvatarGroupsReply Low 173 Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } // your id - { AvatarID LLUUID } // avatar you're asking about - } - { - GroupData Variable - { GroupPowers U64 } - { AcceptNotices BOOL } - { GroupTitle Variable 1 } - { GroupID LLUUID } - { GroupName Variable 1 } - { GroupInsigniaID LLUUID } - } - { - NewGroupData Single - { ListInProfile BOOL } // whether group displays in profile - } + AvatarGroupsReply Low 173 Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } // your id + { AvatarID LLUUID } // avatar you're asking about + } + { + GroupData Variable + { GroupPowers U64 } + { AcceptNotices BOOL } + { GroupTitle Variable 1 } + { GroupID LLUUID } + { GroupName Variable 1 } + { GroupInsigniaID LLUUID } + } + { + NewGroupData Single + { ListInProfile BOOL } // whether group displays in profile + } } @@ -3946,42 +3978,42 @@ version 2.0 // viewer -> simulator // reliable { - AvatarPropertiesUpdate Low 174 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - PropertiesData Single - { ImageID LLUUID } - { FLImageID LLUUID } - { AboutText Variable 2 } // string, up to 512 - { FLAboutText Variable 1 } - { AllowPublish BOOL } // whether profile is externally visible or not - { MaturePublish BOOL } // profile is "mature" - { ProfileURL Variable 1 } // string - } + AvatarPropertiesUpdate Low 174 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + PropertiesData Single + { ImageID LLUUID } + { FLImageID LLUUID } + { AboutText Variable 2 } // string, up to 512 + { FLAboutText Variable 1 } + { AllowPublish BOOL } // whether profile is externally visible or not + { MaturePublish BOOL } // profile is "mature" + { ProfileURL Variable 1 } // string + } } // AvatarInterestsUpdate // viewer -> simulator // reliable { - AvatarInterestsUpdate Low 175 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - PropertiesData Single - { WantToMask U32 } - { WantToText Variable 1 } // string - { SkillsMask U32 } - { SkillsText Variable 1 } // string - { LanguagesText Variable 1 } // string - } + AvatarInterestsUpdate Low 175 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + PropertiesData Single + { WantToMask U32 } + { WantToText Variable 1 } // string + { SkillsMask U32 } + { SkillsText Variable 1 } // string + { LanguagesText Variable 1 } // string + } } @@ -3991,16 +4023,16 @@ version 2.0 // simulator -> viewer // reliable { - AvatarNotesReply Low 176 Trusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - Data Single - { TargetID LLUUID } - { Notes Variable 2 } // string - } + AvatarNotesReply Low 176 Trusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + Data Single + { TargetID LLUUID } + { Notes Variable 2 } // string + } } @@ -4008,17 +4040,17 @@ version 2.0 // viewer -> simulator -> dataserver // reliable { - AvatarNotesUpdate Low 177 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - Data Single - { TargetID LLUUID } - { Notes Variable 2 } // string - } + AvatarNotesUpdate Low 177 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + Data Single + { TargetID LLUUID } + { Notes Variable 2 } // string + } } @@ -4028,17 +4060,17 @@ version 2.0 // This fills in the tabs of the Picks panel. // reliable { - AvatarPicksReply Low 178 Trusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { TargetID LLUUID } - } - { - Data Variable - { PickID LLUUID } - { PickName Variable 1 } // string - } + AvatarPicksReply Low 178 Trusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { TargetID LLUUID } + } + { + Data Variable + { PickID LLUUID } + { PickName Variable 1 } // string + } } @@ -4047,16 +4079,16 @@ version 2.0 // simulator -> dataserver // reliable { - EventInfoRequest Low 179 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - EventData Single - { EventID U32 } - } + EventInfoRequest Low 179 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + EventData Single + { EventID U32 } + } } @@ -4065,27 +4097,27 @@ version 2.0 // simulator -> viewer // reliable { - EventInfoReply Low 180 Trusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - EventData Single - { EventID U32 } - { Creator Variable 1 } - { Name Variable 1 } - { Category Variable 1 } - { Desc Variable 2 } - { Date Variable 1 } - { DateUTC U32 } - { Duration U32 } - { Cover U32 } - { Amount U32 } - { SimName Variable 1 } - { GlobalPos LLVector3d } - { EventFlags U32 } - } + EventInfoReply Low 180 Trusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + EventData Single + { EventID U32 } + { Creator Variable 1 } + { Name Variable 1 } + { Category Variable 1 } + { Desc Variable 2 } + { Date Variable 1 } + { DateUTC U32 } + { Duration U32 } + { Cover U32 } + { Amount U32 } + { SimName Variable 1 } + { GlobalPos LLVector3d } + { EventFlags U32 } + } } @@ -4094,16 +4126,16 @@ version 2.0 // simulator -> dataserver // reliable { - EventNotificationAddRequest Low 181 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - EventData Single - { EventID U32 } - } + EventNotificationAddRequest Low 181 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + EventData Single + { EventID U32 } + } } @@ -4112,16 +4144,16 @@ version 2.0 // simulator -> dataserver // reliable { - EventNotificationRemoveRequest Low 182 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - EventData Single - { EventID U32 } - } + EventNotificationRemoveRequest Low 182 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + EventData Single + { EventID U32 } + } } // EventGodDelete @@ -4130,23 +4162,23 @@ version 2.0 // QueryData is used to resend a search result after the deletion // reliable { - EventGodDelete Low 183 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - EventData Single - { EventID U32 } - } - { - QueryData Single - { QueryID LLUUID } - { QueryText Variable 1 } - { QueryFlags U32 } - { QueryStart S32 } // prev/next page support - } + EventGodDelete Low 183 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + EventData Single + { EventID U32 } + } + { + QueryData Single + { QueryID LLUUID } + { QueryText Variable 1 } + { QueryFlags U32 } + { QueryStart S32 } // prev/next page support + } } @@ -4155,26 +4187,26 @@ version 2.0 // simulator -> viewer // reliable { - PickInfoReply Low 184 Trusted Unencoded + PickInfoReply Low 184 Trusted Unencoded { - AgentData Single - { AgentID LLUUID } + AgentData Single + { AgentID LLUUID } } { - Data Single - { PickID LLUUID } - { CreatorID LLUUID } - { TopPick BOOL } - { ParcelID LLUUID } - { Name Variable 1 } - { Desc Variable 2 } - { SnapshotID LLUUID } - { User Variable 1 } - { OriginalName Variable 1 } - { SimName Variable 1 } - { PosGlobal LLVector3d } - { SortOrder S32 } - { Enabled BOOL } + Data Single + { PickID LLUUID } + { CreatorID LLUUID } + { TopPick BOOL } + { ParcelID LLUUID } + { Name Variable 1 } + { Desc Variable 2 } + { SnapshotID LLUUID } + { User Variable 1 } + { OriginalName Variable 1 } + { SimName Variable 1 } + { PosGlobal LLVector3d } + { SortOrder S32 } + { Enabled BOOL } } } @@ -4187,25 +4219,25 @@ version 2.0 // viewer -> simulator -> dataserver // reliable { - PickInfoUpdate Low 185 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - Data Single - { PickID LLUUID } - { CreatorID LLUUID } - { TopPick BOOL } - { ParcelID LLUUID } - { Name Variable 1 } - { Desc Variable 2 } - { SnapshotID LLUUID } - { PosGlobal LLVector3d } - { SortOrder S32 } - { Enabled BOOL } - } + PickInfoUpdate Low 185 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + Data Single + { PickID LLUUID } + { CreatorID LLUUID } + { TopPick BOOL } + { ParcelID LLUUID } + { Name Variable 1 } + { Desc Variable 2 } + { SnapshotID LLUUID } + { PosGlobal LLVector3d } + { SortOrder S32 } + { Enabled BOOL } + } } @@ -4214,92 +4246,92 @@ version 2.0 // viewer -> simulator -> dataserver // reliable { - PickDelete Low 186 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - Data Single - { PickID LLUUID } - } + PickDelete Low 186 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + Data Single + { PickID LLUUID } + } } // PickGodDelete // Delete a pick from the database. -// QueryID is needed so database can send a repeat list of +// QueryID is needed so database can send a repeat list of // picks. // viewer -> simulator -> dataserver // reliable { - PickGodDelete Low 187 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - Data Single - { PickID LLUUID } - { QueryID LLUUID } - } + PickGodDelete Low 187 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + Data Single + { PickID LLUUID } + { QueryID LLUUID } + } } // ScriptQuestion // reliable { - ScriptQuestion Low 188 Trusted Unencoded - { - Data Single - { TaskID LLUUID } - { ItemID LLUUID } - { ObjectName Variable 1 } - { ObjectOwner Variable 1 } - { Questions S32 } - } - { - Experience Single - { ExperienceID LLUUID } - } + ScriptQuestion Low 188 Trusted Unencoded + { + Data Single + { TaskID LLUUID } + { ItemID LLUUID } + { ObjectName Variable 1 } + { ObjectOwner Variable 1 } + { Questions S32 } + } + { + Experience Single + { ExperienceID LLUUID } + } } // ScriptControlChange // reliable { - ScriptControlChange Low 189 Trusted Unencoded - { - Data Variable - { TakeControls BOOL } - { Controls U32 } - { PassToAgent BOOL } - } + ScriptControlChange Low 189 Trusted Unencoded + { + Data Variable + { TakeControls BOOL } + { Controls U32 } + { PassToAgent BOOL } + } } // ScriptDialog // sim -> viewer // reliable { - ScriptDialog Low 190 Trusted Zerocoded - { - Data Single - { ObjectID LLUUID } - { FirstName Variable 1 } - { LastName Variable 1 } - { ObjectName Variable 1 } - { Message Variable 2 } - { ChatChannel S32 } - { ImageID LLUUID } - } - { - Buttons Variable - { ButtonLabel Variable 1 } - } - { - OwnerData Variable - { OwnerID LLUUID } - } + ScriptDialog Low 190 Trusted Zerocoded + { + Data Single + { ObjectID LLUUID } + { FirstName Variable 1 } + { LastName Variable 1 } + { ObjectName Variable 1 } + { Message Variable 2 } + { ChatChannel S32 } + { ImageID LLUUID } + } + { + Buttons Variable + { ButtonLabel Variable 1 } + } + { + OwnerData Variable + { OwnerID LLUUID } + } } @@ -4307,47 +4339,47 @@ version 2.0 // viewer -> sim // reliable { - ScriptDialogReply Low 191 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - Data Single - { ObjectID LLUUID } - { ChatChannel S32 } - { ButtonIndex S32 } - { ButtonLabel Variable 1 } - } + ScriptDialogReply Low 191 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + Data Single + { ObjectID LLUUID } + { ChatChannel S32 } + { ButtonIndex S32 } + { ButtonLabel Variable 1 } + } } // ForceScriptControlRelease // reliable { - ForceScriptControlRelease Low 192 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } + ForceScriptControlRelease Low 192 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } } // RevokePermissions // reliable { - RevokePermissions Low 193 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - Data Single - { ObjectID LLUUID } - { ObjectPermissions U32 } - } + RevokePermissions Low 193 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + Data Single + { ObjectID LLUUID } + { ObjectPermissions U32 } + } } // LoadURL @@ -4355,29 +4387,36 @@ version 2.0 // Ask the user if they would like to load a URL // reliable { - LoadURL Low 194 Trusted Unencoded - { - Data Single - { ObjectName Variable 1 } - { ObjectID LLUUID } - { OwnerID LLUUID } - { OwnerIsGroup BOOL } - { Message Variable 1 } - { URL Variable 1 } - } + LoadURL Low 194 Trusted Unencoded + { + Data Single + { ObjectName Variable 1 } + { ObjectID LLUUID } + { OwnerID LLUUID } + { OwnerIsGroup BOOL } + { Message Variable 1 } + { URL Variable 1 } + } } // ScriptTeleportRequest +// Interestingly, this message does not actually "Request a Teleport" +// on the viewer. Instead it opens the world map and places a beacon +// at the indicated location. // reliable { - ScriptTeleportRequest Low 195 Trusted Unencoded - { - Data Single - { ObjectName Variable 1 } - { SimName Variable 1 } - { SimPosition LLVector3 } - { LookAt LLVector3 } - } + ScriptTeleportRequest Low 195 Trusted Unencoded + { + Data Single + { ObjectName Variable 1 } + { SimName Variable 1 } + { SimPosition LLVector3 } + { LookAt LLVector3 } + } + { + Options Variable + { Flags U32 } + } } @@ -4395,12 +4434,12 @@ version 2.0 // sim -> viewer // reliable { - ParcelOverlay Low 196 Trusted Zerocoded - { - ParcelData Single - { SequenceID S32 } // 0...3, which piece of region - { Data Variable 2 } // packed bit-field, (grids*grids)/N - } + ParcelOverlay Low 196 Trusted Zerocoded + { + ParcelData Single + { SequenceID S32 } // 0...3, which piece of region + { Data Variable 2 } // packed bit-field, (grids*grids)/N + } } @@ -4410,38 +4449,38 @@ version 2.0 // viewer -> sim // reliable { - ParcelPropertiesRequest Medium 11 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - ParcelData Single - { SequenceID S32 } - { West F32 } - { South F32 } - { East F32 } - { North F32 } - { SnapSelection BOOL } - } + ParcelPropertiesRequest Medium 11 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ParcelData Single + { SequenceID S32 } + { West F32 } + { South F32 } + { East F32 } + { North F32 } + { SnapSelection BOOL } + } } // ParcelPropertiesRequestByID // viewer -> sim // reliable { - ParcelPropertiesRequestByID Low 197 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - ParcelData Single - { SequenceID S32 } - { LocalID S32 } - } + ParcelPropertiesRequestByID Low 197 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ParcelData Single + { SequenceID S32 } + { LocalID S32 } + } } // ParcelProperties @@ -4454,68 +4493,69 @@ version 2.0 // WARNING: This packet is potentially large. With max length name, // description, music URL and media URL, it is 1526 + sizeof ( LLUUID ) bytes. { - ParcelProperties High 23 Trusted Zerocoded - { - ParcelData Single - { RequestResult S32 } - { SequenceID S32 } - { SnapSelection BOOL } - { SelfCount S32 } - { OtherCount S32 } - { PublicCount S32 } - { LocalID S32 } - { OwnerID LLUUID } - { IsGroupOwned BOOL } - { AuctionID U32 } - { ClaimDate S32 } // time_t - { ClaimPrice S32 } - { RentPrice S32 } - { AABBMin LLVector3 } - { AABBMax LLVector3 } - { Bitmap Variable 2 } // packed bit-field - { Area S32 } - { Status U8 } // owned vs. pending - { SimWideMaxPrims S32 } - { SimWideTotalPrims S32 } - { MaxPrims S32 } - { TotalPrims S32 } - { OwnerPrims S32 } - { GroupPrims S32 } - { OtherPrims S32 } - { SelectedPrims S32 } - { ParcelPrimBonus F32 } - - { OtherCleanTime S32 } - - { ParcelFlags U32 } - { SalePrice S32 } - { Name Variable 1 } // string - { Desc Variable 1 } // string - { MusicURL Variable 1 } // string - { MediaURL Variable 1 } // string - { MediaID LLUUID } - { MediaAutoScale U8 } - { GroupID LLUUID } - { PassPrice S32 } - { PassHours F32 } - { Category U8 } - { AuthBuyerID LLUUID } - { SnapshotID LLUUID } - { UserLocation LLVector3 } - { UserLookAt LLVector3 } - { LandingType U8 } - { RegionPushOverride BOOL } - { RegionDenyAnonymous BOOL } - { RegionDenyIdentified BOOL } - { RegionDenyTransacted BOOL } - } - { - AgeVerificationBlock Single - { RegionDenyAgeUnverified BOOL } - } + ParcelProperties High 23 Trusted Zerocoded UDPDeprecated + { + ParcelData Single + { RequestResult S32 } + { SequenceID S32 } + { SnapSelection BOOL } + { SelfCount S32 } + { OtherCount S32 } + { PublicCount S32 } + { LocalID S32 } + { OwnerID LLUUID } + { IsGroupOwned BOOL } + { AuctionID U32 } + { ClaimDate S32 } // time_t + { ClaimPrice S32 } + { RentPrice S32 } + { AABBMin LLVector3 } + { AABBMax LLVector3 } + { Bitmap Variable 2 } // packed bit-field + { Area S32 } + { Status U8 } // owned vs. pending + { SimWideMaxPrims S32 } + { SimWideTotalPrims S32 } + { MaxPrims S32 } + { TotalPrims S32 } + { OwnerPrims S32 } + { GroupPrims S32 } + { OtherPrims S32 } + { SelectedPrims S32 } + { ParcelPrimBonus F32 } + + { OtherCleanTime S32 } + + { ParcelFlags U32 } + { SalePrice S32 } + { Name Variable 1 } // string + { Desc Variable 1 } // string + { MusicURL Variable 1 } // string + { MediaURL Variable 1 } // string + { MediaID LLUUID } + { MediaAutoScale U8 } + { GroupID LLUUID } + { PassPrice S32 } + { PassHours F32 } + { Category U8 } + { AuthBuyerID LLUUID } + { SnapshotID LLUUID } + { UserLocation LLVector3 } + { UserLookAt LLVector3 } + { LandingType U8 } + { RegionPushOverride BOOL } + { RegionDenyAnonymous BOOL } + { RegionDenyIdentified BOOL } + { RegionDenyTransacted BOOL } + // in llsd message, SeeAVs, GroupAVSounds and AnyAVSounds BOOLs are also sent + } + { + AgeVerificationBlock Single + { RegionDenyAgeUnverified BOOL } + } { RegionAllowAccessBlock Single - { RegionAllowAccessOverride BOOL } + { RegionAllowAccessOverride BOOL } } { ParcelEnvironmentBlock Single @@ -4528,77 +4568,77 @@ version 2.0 // viewer -> sim // reliable { - ParcelPropertiesUpdate Low 198 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - ParcelData Single - { LocalID S32 } - { Flags U32 } - - { ParcelFlags U32 } - { SalePrice S32 } - { Name Variable 1 } // string - { Desc Variable 1 } // string - { MusicURL Variable 1 } // string - { MediaURL Variable 1 } // string - { MediaID LLUUID } - { MediaAutoScale U8 } - { GroupID LLUUID } - { PassPrice S32 } - { PassHours F32 } - { Category U8 } - { AuthBuyerID LLUUID } - { SnapshotID LLUUID } - { UserLocation LLVector3 } - { UserLookAt LLVector3 } - { LandingType U8 } - } + ParcelPropertiesUpdate Low 198 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ParcelData Single + { LocalID S32 } + { Flags U32 } + + { ParcelFlags U32 } + { SalePrice S32 } + { Name Variable 1 } // string + { Desc Variable 1 } // string + { MusicURL Variable 1 } // string + { MediaURL Variable 1 } // string + { MediaID LLUUID } + { MediaAutoScale U8 } + { GroupID LLUUID } + { PassPrice S32 } + { PassHours F32 } + { Category U8 } + { AuthBuyerID LLUUID } + { SnapshotID LLUUID } + { UserLocation LLVector3 } + { UserLookAt LLVector3 } + { LandingType U8 } + } } // ParcelReturnObjects // viewer -> sim // reliable { - ParcelReturnObjects Low 199 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - ParcelData Single - { LocalID S32 } - { ReturnType U32 } - } - { - TaskIDs Variable - { TaskID LLUUID } - } - { - OwnerIDs Variable - { OwnerID LLUUID } - } + ParcelReturnObjects Low 199 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ParcelData Single + { LocalID S32 } + { ReturnType U32 } + } + { + TaskIDs Variable + { TaskID LLUUID } + } + { + OwnerIDs Variable + { OwnerID LLUUID } + } } // ParcelSetOtherCleanTime // viewer -> sim // reliable { - ParcelSetOtherCleanTime Low 200 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - ParcelData Single - { LocalID S32 } - { OtherCleanTime S32 } - } + ParcelSetOtherCleanTime Low 200 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ParcelData Single + { LocalID S32 } + { OtherCleanTime S32 } + } } @@ -4607,25 +4647,25 @@ version 2.0 // viewer -> sim // reliable { - ParcelDisableObjects Low 201 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - ParcelData Single - { LocalID S32 } - { ReturnType U32 } - } - { - TaskIDs Variable - { TaskID LLUUID } - } - { - OwnerIDs Variable - { OwnerID LLUUID } - } + ParcelDisableObjects Low 201 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ParcelData Single + { LocalID S32 } + { ReturnType U32 } + } + { + TaskIDs Variable + { TaskID LLUUID } + } + { + OwnerIDs Variable + { OwnerID LLUUID } + } } @@ -4633,21 +4673,21 @@ version 2.0 // viewer -> sim // reliable { - ParcelSelectObjects Low 202 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - ParcelData Single - { LocalID S32 } - { ReturnType U32 } - } - { - ReturnIDs Variable - { ReturnID LLUUID } - } + ParcelSelectObjects Low 202 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ParcelData Single + { LocalID S32 } + { ReturnType U32 } + } + { + ReturnIDs Variable + { ReturnID LLUUID } + } } @@ -4656,11 +4696,11 @@ version 2.0 // reliable { EstateCovenantRequest Low 203 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } } // EstateCovenantReply @@ -4668,12 +4708,12 @@ version 2.0 // reliable { EstateCovenantReply Low 204 Trusted Unencoded - { - Data Single - { CovenantID LLUUID } - { CovenantTimestamp U32 } - { EstateName Variable 1 } // string - { EstateOwnerID LLUUID } + { + Data Single + { CovenantID LLUUID } + { CovenantTimestamp U32 } + { EstateName Variable 1 } // string + { EstateOwnerID LLUUID } } } @@ -4682,15 +4722,15 @@ version 2.0 // sim -> viewer // reliable { - ForceObjectSelect Low 205 Trusted Unencoded - { - Header Single - { ResetList BOOL } - } - { - Data Variable - { LocalID U32 } - } + ForceObjectSelect Low 205 Trusted Unencoded + { + Header Single + { ResetList BOOL } + } + { + Data Variable + { LocalID U32 } + } } @@ -4698,72 +4738,72 @@ version 2.0 // viewer -> sim // reliable { - ParcelBuyPass Low 206 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - ParcelData Single - { LocalID S32 } - } + ParcelBuyPass Low 206 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ParcelData Single + { LocalID S32 } + } } // ParcelDeedToGroup - deed a patch of land to a group // viewer -> sim // reliable { - ParcelDeedToGroup Low 207 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - Data Single - { GroupID LLUUID } - { LocalID S32 } // parcel id - } + ParcelDeedToGroup Low 207 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + Data Single + { GroupID LLUUID } + { LocalID S32 } // parcel id + } } // reserved for when island owners force re-claim parcel { - ParcelReclaim Low 208 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - Data Single - { LocalID S32 } // parcel id - } + ParcelReclaim Low 208 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + Data Single + { LocalID S32 } // parcel id + } } // ParcelClaim - change the owner of a patch of land // viewer -> sim // reliable { - ParcelClaim Low 209 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - Data Single - { GroupID LLUUID } - { IsGroupOwned BOOL } - { Final BOOL } // true if buyer is in tier - } - { - ParcelData Variable - { West F32 } - { South F32 } - { East F32 } - { North F32 } - } + ParcelClaim Low 209 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + Data Single + { GroupID LLUUID } + { IsGroupOwned BOOL } + { Final BOOL } // true if buyer is in tier + } + { + ParcelData Variable + { West F32 } + { South F32 } + { East F32 } + { North F32 } + } } // ParcelJoin - Take all parcels which are owned by agent and inside @@ -4771,19 +4811,19 @@ version 2.0 // viewer -> sim // reliable { - ParcelJoin Low 210 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - ParcelData Single - { West F32 } - { South F32 } - { East F32 } - { North F32 } - } + ParcelJoin Low 210 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ParcelData Single + { West F32 } + { South F32 } + { East F32 } + { North F32 } + } } // ParcelDivide @@ -4792,19 +4832,19 @@ version 2.0 // viewer -> sim // reliable { - ParcelDivide Low 211 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - ParcelData Single - { West F32 } - { South F32 } - { East F32 } - { North F32 } - } + ParcelDivide Low 211 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ParcelData Single + { West F32 } + { South F32 } + { East F32 } + { North F32 } + } } // ParcelRelease @@ -4812,178 +4852,178 @@ version 2.0 // viewer -> sim // reliable { - ParcelRelease Low 212 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - Data Single - { LocalID S32 } // parcel ID - } + ParcelRelease Low 212 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + Data Single + { LocalID S32 } // parcel ID + } } // ParcelBuy - change the owner of a patch of land. // viewer -> sim // reliable { - ParcelBuy Low 213 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - Data Single - { GroupID LLUUID } - { IsGroupOwned BOOL } - { RemoveContribution BOOL } - { LocalID S32 } - { Final BOOL } // true if buyer is in tier - } - { - ParcelData Single - { Price S32 } - { Area S32 } - } + ParcelBuy Low 213 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + Data Single + { GroupID LLUUID } + { IsGroupOwned BOOL } + { RemoveContribution BOOL } + { LocalID S32 } + { Final BOOL } // true if buyer is in tier + } + { + ParcelData Single + { Price S32 } + { Area S32 } + } } // ParcelGodForceOwner Unencoded { - ParcelGodForceOwner Low 214 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - Data Single - { OwnerID LLUUID } - { LocalID S32 } // parcel ID - } + ParcelGodForceOwner Low 214 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + Data Single + { OwnerID LLUUID } + { LocalID S32 } // parcel ID + } } // viewer -> sim // ParcelAccessListRequest { - ParcelAccessListRequest Low 215 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - Data Single - { SequenceID S32 } - { Flags U32 } - { LocalID S32 } - } + ParcelAccessListRequest Low 215 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + Data Single + { SequenceID S32 } + { Flags U32 } + { LocalID S32 } + } } // sim -> viewer // ParcelAccessListReply { - ParcelAccessListReply Low 216 Trusted Zerocoded - { - Data Single - { AgentID LLUUID } - { SequenceID S32 } - { Flags U32 } - { LocalID S32 } - } - { - List Variable - { ID LLUUID } - { Time S32 } // time_t - { Flags U32 } - } + ParcelAccessListReply Low 216 Trusted Zerocoded + { + Data Single + { AgentID LLUUID } + { SequenceID S32 } + { Flags U32 } + { LocalID S32 } + } + { + List Variable + { ID LLUUID } + { Time S32 } // time_t + { Flags U32 } + } } // viewer -> sim // ParcelAccessListUpdate { - ParcelAccessListUpdate Low 217 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - Data Single - { Flags U32 } - { LocalID S32 } - { TransactionID LLUUID } - { SequenceID S32 } - { Sections S32 } - } - { - List Variable - { ID LLUUID } - { Time S32 } // time_t - { Flags U32 } - } + ParcelAccessListUpdate Low 217 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + Data Single + { Flags U32 } + { LocalID S32 } + { TransactionID LLUUID } + { SequenceID S32 } + { Sections S32 } + } + { + List Variable + { ID LLUUID } + { Time S32 } // time_t + { Flags U32 } + } } // viewer -> sim -> dataserver // reliable { - ParcelDwellRequest Low 218 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - Data Single - { LocalID S32 } - { ParcelID LLUUID } // filled in on sim - } + ParcelDwellRequest Low 218 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + Data Single + { LocalID S32 } + { ParcelID LLUUID } // filled in on sim + } } // dataserver -> sim -> viewer // reliable { - ParcelDwellReply Low 219 Trusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - Data Single - { LocalID S32 } - { ParcelID LLUUID } - { Dwell F32 } - } + ParcelDwellReply Low 219 Trusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + Data Single + { LocalID S32 } + { ParcelID LLUUID } + { Dwell F32 } + } } // sim -> dataserver // This message is used to check if a user can buy a parcel. If // successful, the transaction is approved through a money balance reply -// with the same transaction id. -{ - RequestParcelTransfer Low 220 Trusted Zerocoded - { - Data Single - { TransactionID LLUUID } - { TransactionTime U32 } // utc seconds since epoch - { SourceID LLUUID } - { DestID LLUUID } - { OwnerID LLUUID } - { Flags U8 } // see lltransactiontypes.h - { TransactionType S32 } // see lltransactiontypes.h - { Amount S32 } - { BillableArea S32 } - { ActualArea S32 } - { Final BOOL } // true if buyer should be in tier - } - { - RegionData Single // included so region name shows up in transaction logs +// with the same transaction id. +{ + RequestParcelTransfer Low 220 Trusted Zerocoded + { + Data Single + { TransactionID LLUUID } + { TransactionTime U32 } // utc seconds since epoch + { SourceID LLUUID } + { DestID LLUUID } + { OwnerID LLUUID } + { Flags U8 } // see lltransactiontypes.h + { TransactionType S32 } // see lltransactiontypes.h + { Amount S32 } + { BillableArea S32 } + { ActualArea S32 } + { Final BOOL } // true if buyer should be in tier + } + { + RegionData Single // included so region name shows up in transaction logs { RegionID LLUUID } { GridX U32 } { GridY U32 } @@ -4996,114 +5036,114 @@ version 2.0 // If you add something here, you should probably also change the // simulator's database update query on startup. { - UpdateParcel Low 221 Trusted Zerocoded - { - ParcelData Single - { ParcelID LLUUID } - { RegionHandle U64 } - { OwnerID LLUUID } - { GroupOwned BOOL } - { Status U8 } - { Name Variable 1 } - { Description Variable 1 } - { MusicURL Variable 1 } - { RegionX F32 } - { RegionY F32 } - { ActualArea S32 } - { BillableArea S32 } - { ShowDir BOOL } - { IsForSale BOOL } - { Category U8 } - { SnapshotID LLUUID } - { UserLocation LLVector3 } - { SalePrice S32 } - { AuthorizedBuyerID LLUUID } - { AllowPublish BOOL } - { MaturePublish BOOL } - } + UpdateParcel Low 221 Trusted Zerocoded + { + ParcelData Single + { ParcelID LLUUID } + { RegionHandle U64 } + { OwnerID LLUUID } + { GroupOwned BOOL } + { Status U8 } + { Name Variable 1 } + { Description Variable 1 } + { MusicURL Variable 1 } + { RegionX F32 } + { RegionY F32 } + { ActualArea S32 } + { BillableArea S32 } + { ShowDir BOOL } + { IsForSale BOOL } + { Category U8 } + { SnapshotID LLUUID } + { UserLocation LLVector3 } + { SalePrice S32 } + { AuthorizedBuyerID LLUUID } + { AllowPublish BOOL } + { MaturePublish BOOL } + } } // sim -> dataserver or space ->sim // This message is used to tell the dataserver that a parcel has been // removed. { - RemoveParcel Low 222 Trusted Unencoded - { - ParcelData Variable - { ParcelID LLUUID } - } + RemoveParcel Low 222 Trusted Unencoded + { + ParcelData Variable + { ParcelID LLUUID } + } } // sim -> dataserver // Merges some of the database information for parcels (dwell). { - MergeParcel Low 223 Trusted Unencoded - { - MasterParcelData Single - { MasterID LLUUID } - } - { - SlaveParcelData Variable - { SlaveID LLUUID } - } + MergeParcel Low 223 Trusted Unencoded + { + MasterParcelData Single + { MasterID LLUUID } + } + { + SlaveParcelData Variable + { SlaveID LLUUID } + } } // sim -> dataserver { - LogParcelChanges Low 224 Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - RegionData Single - { RegionHandle U64 } - } - { - ParcelData Variable - { ParcelID LLUUID } - { OwnerID LLUUID } - { IsOwnerGroup BOOL } - { ActualArea S32 } - { Action S8 } - { TransactionID LLUUID } - } + LogParcelChanges Low 224 Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + RegionData Single + { RegionHandle U64 } + } + { + ParcelData Variable + { ParcelID LLUUID } + { OwnerID LLUUID } + { IsOwnerGroup BOOL } + { ActualArea S32 } + { Action S8 } + { TransactionID LLUUID } + } } // sim -> dataserver { - CheckParcelSales Low 225 Trusted Unencoded - { - RegionData Variable - { RegionHandle U64 } - } + CheckParcelSales Low 225 Trusted Unencoded + { + RegionData Variable + { RegionHandle U64 } + } } // dataserver -> simulator // tell a particular simulator to finish parcel sale. { - ParcelSales Low 226 Trusted Unencoded - { - ParcelData Variable - { ParcelID LLUUID } - { BuyerID LLUUID } - } + ParcelSales Low 226 Trusted Unencoded + { + ParcelData Variable + { ParcelID LLUUID } + { BuyerID LLUUID } + } } // viewer -> sim // mark parcel and double secret agent content on parcel as owned by // governor/maint and adjusts permissions approriately. Godlike request. { - ParcelGodMarkAsContent Low 227 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - ParcelData Single - { LocalID S32 } - } + ParcelGodMarkAsContent Low 227 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ParcelData Single + { LocalID S32 } + } } @@ -5112,82 +5152,82 @@ version 2.0 // validates and fills in the rest of the information to start an auction // on a parcel. Processing currently requires that AgentID is a god. { - ViewerStartAuction Low 228 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - ParcelData Single - { LocalID S32 } - { SnapshotID LLUUID } - } + ViewerStartAuction Low 228 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ParcelData Single + { LocalID S32 } + { SnapshotID LLUUID } + } } // sim -> dataserver -// Once all of the data has been gathered, +// Once all of the data has been gathered, { - StartAuction Low 229 Trusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - ParcelData Single - { ParcelID LLUUID } - { SnapshotID LLUUID } - { Name Variable 1 } // string - } + StartAuction Low 229 Trusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + ParcelData Single + { ParcelID LLUUID } + { SnapshotID LLUUID } + { Name Variable 1 } // string + } } // dataserver -> sim { - ConfirmAuctionStart Low 230 Trusted Unencoded - { - AuctionData Single - { ParcelID LLUUID } - { AuctionID U32 } - } + ConfirmAuctionStart Low 230 Trusted Unencoded + { + AuctionData Single + { ParcelID LLUUID } + { AuctionID U32 } + } } // sim -> dataserver // Tell the dataserver that an auction has completed. { - CompleteAuction Low 231 Trusted Unencoded - { - ParcelData Variable - { ParcelID LLUUID } - } + CompleteAuction Low 231 Trusted Unencoded + { + ParcelData Variable + { ParcelID LLUUID } + } } // Tell the dataserver that an auction has been canceled. { - CancelAuction Low 232 Trusted Unencoded - { - ParcelData Variable - { ParcelID LLUUID } - } + CancelAuction Low 232 Trusted Unencoded + { + ParcelData Variable + { ParcelID LLUUID } + } } // sim -> dataserver { - CheckParcelAuctions Low 233 Trusted Unencoded - { - RegionData Variable - { RegionHandle U64 } - } + CheckParcelAuctions Low 233 Trusted Unencoded + { + RegionData Variable + { RegionHandle U64 } + } } // dataserver -> sim // tell a particular simulator to finish parcel sale. { - ParcelAuctions Low 234 Trusted Unencoded - { - ParcelData Variable - { ParcelID LLUUID } - { WinnerID LLUUID } - } + ParcelAuctions Low 234 Trusted Unencoded + { + ParcelData Variable + { ParcelID LLUUID } + { WinnerID LLUUID } + } } // *************************************************************************** @@ -5197,44 +5237,44 @@ version 2.0 // UUIDNameRequest // Translate a UUID into first and last names { - UUIDNameRequest Low 235 NotTrusted Unencoded - { - UUIDNameBlock Variable - { ID LLUUID } - } + UUIDNameRequest Low 235 NotTrusted Unencoded + { + UUIDNameBlock Variable + { ID LLUUID } + } } // UUIDNameReply // Translate a UUID into first and last names { - UUIDNameReply Low 236 Trusted Unencoded - { - UUIDNameBlock Variable - { ID LLUUID } - { FirstName Variable 1 } - { LastName Variable 1 } - } + UUIDNameReply Low 236 Trusted Unencoded + { + UUIDNameBlock Variable + { ID LLUUID } + { FirstName Variable 1 } + { LastName Variable 1 } + } } // UUIDGroupNameRequest // Translate a UUID into a group name { - UUIDGroupNameRequest Low 237 NotTrusted Unencoded - { - UUIDNameBlock Variable - { ID LLUUID } - } + UUIDGroupNameRequest Low 237 NotTrusted Unencoded + { + UUIDNameBlock Variable + { ID LLUUID } + } } // UUIDGroupNameReply // Translate a UUID into a group name { - UUIDGroupNameReply Low 238 Trusted Unencoded - { - UUIDNameBlock Variable - { ID LLUUID } - { GroupName Variable 1 } - } + UUIDGroupNameReply Low 238 Trusted Unencoded + { + UUIDNameBlock Variable + { ID LLUUID } + { GroupName Variable 1 } + } } // end uuid to name lookup @@ -5248,43 +5288,47 @@ version 2.0 // Chat is region local to receiving simulator. // Type is one of CHAT_TYPE_NORMAL, _WHISPER, _SHOUT { - ChatPass Low 239 Trusted Zerocoded - { - ChatData Single - { Channel S32 } - { Position LLVector3 } - { ID LLUUID } - { OwnerID LLUUID } - { Name Variable 1 } - { SourceType U8 } - { Type U8 } - { Radius F32 } - { SimAccess U8 } - { Message Variable 2 } - } + ChatPass Low 239 Trusted Zerocoded + { + ChatData Single + { Channel S32 } + { Position LLVector3 } + { ID LLUUID } + { OwnerID LLUUID } + { Name Variable 1 } + { SourceType U8 } + { Type U8 } + { Radius F32 } + { SimAccess U8 } + { Message Variable 2 } + } } // Edge data - compressed edge data { - EdgeDataPacket High 24 Trusted Zerocoded - { - EdgeData Single - { LayerType U8 } - { Direction U8 } - { LayerData Variable 2 } - } + EdgeDataPacket High 24 Trusted Zerocoded + { + EdgeData Single + { LayerType U8 } + { Direction U8 } + { LayerData Variable 2 } + } } // Sim status, condition of this sim // sent reliably, when dirty { - SimStatus Medium 12 Trusted Unencoded - { - SimStatus Single - { CanAcceptAgents BOOL } - { CanAcceptTasks BOOL } - } + SimStatus Medium 12 Trusted Unencoded + { + SimStatus Single + { CanAcceptAgents BOOL } + { CanAcceptTasks BOOL } + } + { + SimFlags Single + { Flags U64 } + } } // Child Agent Update - agents send child agents to neighboring simulators. @@ -5292,136 +5336,140 @@ version 2.0 // Can't send viewer IP and port between simulators -- the port may get remapped // if the viewer is behind a Network Address Translation (NAT) box. // -// Note: some of the fields of this message really only need to be sent when an +// Note: some of the fields of this message really only need to be sent when an // agent crosses a region boundary and changes from a child to a main agent // (such as Head/BodyRotation, ControlFlags, Animations etc) // simulator -> simulator // reliable { - ChildAgentUpdate High 25 Trusted Zerocoded - { - AgentData Single - - { RegionHandle U64 } - { ViewerCircuitCode U32 } - { AgentID LLUUID } - { SessionID LLUUID } - - { AgentPos LLVector3 } - { AgentVel LLVector3 } - { Center LLVector3 } - { Size LLVector3 } - { AtAxis LLVector3 } - { LeftAxis LLVector3 } - { UpAxis LLVector3 } - { ChangedGrid BOOL } // BOOL - - { Far F32 } - { Aspect F32 } - { Throttles Variable 1 } - { LocomotionState U32 } - { HeadRotation LLQuaternion } - { BodyRotation LLQuaternion } - { ControlFlags U32 } - { EnergyLevel F32 } - { GodLevel U8 } // Changed from BOOL to U8, and renamed GodLevel (from Godlike) - { AlwaysRun BOOL } - { PreyAgent LLUUID } - { AgentAccess U8 } - { AgentTextures Variable 2 } - { ActiveGroupID LLUUID } - } - { - GroupData Variable - { GroupID LLUUID } - { GroupPowers U64 } - { AcceptNotices BOOL } - } - { - AnimationData Variable - { Animation LLUUID } - { ObjectID LLUUID } - } - { - GranterBlock Variable - { GranterID LLUUID } - } - { - NVPairData Variable - { NVPairs Variable 2 } - } - { - VisualParam Variable - { ParamValue U8 } - } - { - AgentAccess Variable - { AgentLegacyAccess U8 } - { AgentMaxAccess U8 } - } - { - AgentInfo Variable - { Flags U32 } - } + ChildAgentUpdate High 25 Trusted Zerocoded + { + AgentData Single + + { RegionHandle U64 } + { ViewerCircuitCode U32 } + { AgentID LLUUID } + { SessionID LLUUID } + + { AgentPos LLVector3 } + { AgentVel LLVector3 } + { Center LLVector3 } + { Size LLVector3 } + { AtAxis LLVector3 } + { LeftAxis LLVector3 } + { UpAxis LLVector3 } + { ChangedGrid BOOL } + + { Far F32 } + { Aspect F32 } + { Throttles Variable 1 } + { LocomotionState U32 } + { HeadRotation LLQuaternion } + { BodyRotation LLQuaternion } + { ControlFlags U32 } + { EnergyLevel F32 } + { GodLevel U8 } // Changed from BOOL to U8, and renamed GodLevel (from Godlike) + { AlwaysRun BOOL } + { PreyAgent LLUUID } + { AgentAccess U8 } + { AgentTextures Variable 2 } + { ActiveGroupID LLUUID } + } + { + GroupData Variable + { GroupID LLUUID } + { GroupPowers U64 } + { AcceptNotices BOOL } + } + { + AnimationData Variable + { Animation LLUUID } + { ObjectID LLUUID } + } + { + GranterBlock Variable + { GranterID LLUUID } + } + { + NVPairData Variable + { NVPairs Variable 2 } + } + { + VisualParam Variable + { ParamValue U8 } + } + { + AgentAccess Variable + { AgentLegacyAccess U8 } + { AgentMaxAccess U8 } + } + { + AgentInfo Variable + { Flags U32 } + } + { + AgentInventoryHost Variable + { InventoryHost Variable 1 } //String + } } // ChildAgentAlive // sent to child agents just to keep them alive { - ChildAgentAlive High 26 Trusted Unencoded - { - AgentData Single - { RegionHandle U64 } - { ViewerCircuitCode U32 } - { AgentID LLUUID } - { SessionID LLUUID } - } + ChildAgentAlive High 26 Trusted Unencoded + { + AgentData Single + { RegionHandle U64 } + { ViewerCircuitCode U32 } + { AgentID LLUUID } + { SessionID LLUUID } + } } // ChildAgentPositionUpdate // sent to child agents just to keep them alive { - ChildAgentPositionUpdate High 27 Trusted Unencoded - { - AgentData Single - - { RegionHandle U64 } - { ViewerCircuitCode U32 } - { AgentID LLUUID } - { SessionID LLUUID } - - { AgentPos LLVector3 } - { AgentVel LLVector3 } - { Center LLVector3 } - { Size LLVector3 } - { AtAxis LLVector3 } - { LeftAxis LLVector3 } - { UpAxis LLVector3 } - { ChangedGrid BOOL } - } + ChildAgentPositionUpdate High 27 Trusted Unencoded + { + AgentData Single + + { RegionHandle U64 } + { ViewerCircuitCode U32 } + { AgentID LLUUID } + { SessionID LLUUID } + + { AgentPos LLVector3 } + { AgentVel LLVector3 } + { Center LLVector3 } + { Size LLVector3 } + { AtAxis LLVector3 } + { LeftAxis LLVector3 } + { UpAxis LLVector3 } + { ChangedGrid BOOL } + } } // Obituary for child agents - make sure the parent know the child is dead // This way, children can be reliably restarted { - ChildAgentDying Low 240 Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } + ChildAgentDying Low 240 Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } } // This is sent if a full child agent hasn't been accepted yet { - ChildAgentUnknown Low 241 Trusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } + ChildAgentUnknown Low 241 Trusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } } @@ -5429,117 +5477,117 @@ version 2.0 { AtomicPassObject High 28 Trusted Unencoded { - TaskData Single - { TaskID LLUUID } - { AttachmentNeedsSave BOOL } // true iff is attachment and needs asset saved - } + TaskData Single + { TaskID LLUUID } + { AttachmentNeedsSave BOOL } // true iff is attachment and needs asset saved + } } // KillChildAgents - A new agent has connected to the simulator . . . make sure that any old child cameras are blitzed { - KillChildAgents Low 242 Trusted Unencoded - { - IDBlock Single - { AgentID LLUUID } - } + KillChildAgents Low 242 Trusted Unencoded + { + IDBlock Single + { AgentID LLUUID } + } } // GetScriptRunning - asks if a script is running or not. the simulator // responds with ScriptRunningReply { - GetScriptRunning Low 243 NotTrusted Unencoded - { - Script Single - { ObjectID LLUUID } - { ItemID LLUUID } - } + GetScriptRunning Low 243 NotTrusted Unencoded + { + Script Single + { ObjectID LLUUID } + { ItemID LLUUID } + } } // ScriptRunningReply - response from simulator to message above { - ScriptRunningReply Low 244 NotTrusted Unencoded UDPDeprecated - { - Script Single - { ObjectID LLUUID } - { ItemID LLUUID } - { Running BOOL } -// { Mono BOOL } Added to LLSD message - } + ScriptRunningReply Low 244 NotTrusted Unencoded UDPDeprecated + { + Script Single + { ObjectID LLUUID } + { ItemID LLUUID } + { Running BOOL } +// { Mono BOOL } Added to LLSD message + } } // SetScriptRunning - makes a script active or inactive (Enable may be // true or false) { - SetScriptRunning Low 245 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - Script Single - { ObjectID LLUUID } - { ItemID LLUUID } - { Running BOOL } - } + SetScriptRunning Low 245 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + Script Single + { ObjectID LLUUID } + { ItemID LLUUID } + { Running BOOL } + } } // ScriptReset - causes a script to reset { - ScriptReset Low 246 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - Script Single - { ObjectID LLUUID } - { ItemID LLUUID } - } + ScriptReset Low 246 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + Script Single + { ObjectID LLUUID } + { ItemID LLUUID } + } } // ScriptSensorRequest - causes the receiving sim to run a script sensor and return the results { - ScriptSensorRequest Low 247 Trusted Zerocoded - { - Requester Single - { SourceID LLUUID } - { RequestID LLUUID } - { SearchID LLUUID } - { SearchPos LLVector3 } - { SearchDir LLQuaternion } - { SearchName Variable 1 } - { Type S32 } - { Range F32 } - { Arc F32 } - { RegionHandle U64 } - { SearchRegions U8 } - } + ScriptSensorRequest Low 247 Trusted Zerocoded + { + Requester Single + { SourceID LLUUID } + { RequestID LLUUID } + { SearchID LLUUID } + { SearchPos LLVector3 } + { SearchDir LLQuaternion } + { SearchName Variable 1 } + { Type S32 } + { Range F32 } + { Arc F32 } + { RegionHandle U64 } + { SearchRegions U8 } + } } // ScriptSensorReply - returns the request script search information back to the requester { - ScriptSensorReply Low 248 Trusted Zerocoded - { - Requester Single - { SourceID LLUUID } - } - { - SensedData Variable - { ObjectID LLUUID } - { OwnerID LLUUID } - { GroupID LLUUID } - { Position LLVector3 } - { Velocity LLVector3 } - { Rotation LLQuaternion } - { Name Variable 1 } - { Type S32 } - { Range F32 } - } + ScriptSensorReply Low 248 Trusted Zerocoded + { + Requester Single + { SourceID LLUUID } + } + { + SensedData Variable + { ObjectID LLUUID } + { OwnerID LLUUID } + { GroupID LLUUID } + { Position LLVector3 } + { Velocity LLVector3 } + { Rotation LLQuaternion } + { Name Variable 1 } + { Type S32 } + { Range F32 } + } } //----------------------------------------------------------------------------- @@ -5550,34 +5598,34 @@ version 2.0 // agent is coming into the region. The region should be expecting the // agent. { - CompleteAgentMovement Low 249 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { CircuitCode U32 } - } + CompleteAgentMovement Low 249 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { CircuitCode U32 } + } } // sim -> viewer { - AgentMovementComplete Low 250 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - Data Single - { Position LLVector3 } - { LookAt LLVector3 } - { RegionHandle U64 } - { Timestamp U32 } - } - { - SimData Single - { ChannelVersion Variable 2 } - } + AgentMovementComplete Low 250 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + Data Single + { Position LLVector3 } + { LookAt LLVector3 } + { RegionHandle U64 } + { Timestamp U32 } + } + { + SimData Single + { ChannelVersion Variable 2 } + } } @@ -5587,26 +5635,26 @@ version 2.0 // userserver -> dataserver { - DataServerLogout Low 251 Trusted Unencoded - { - UserData Single - { AgentID LLUUID } - { ViewerIP IPADDR } - { Disconnect BOOL } - { SessionID LLUUID } - } + DataServerLogout Low 251 Trusted Unencoded + { + UserData Single + { AgentID LLUUID } + { ViewerIP IPADDR } + { Disconnect BOOL } + { SessionID LLUUID } + } } // LogoutRequest // viewer -> sim // reliable { - LogoutRequest Low 252 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } + LogoutRequest Low 252 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } } @@ -5616,16 +5664,16 @@ version 2.0 // reliable // Includes inventory items to update with new asset ids { - LogoutReply Low 253 Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - InventoryData Variable - { ItemID LLUUID } // null if list is actually empty (but has one entry 'cause it can't have none) - } + LogoutReply Low 253 Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + InventoryData Variable + { ItemID LLUUID } // null if list is actually empty (but has one entry 'cause it can't have none) + } } @@ -5638,61 +5686,70 @@ version 2.0 // ParentEstateID: parent estate id of the source estate // RegionID: region id of the source of the IM. // Position: position of the sender in region local coordinates -// Dialog see llinstantmessage.h for values -// ID May be used by dialog. Interpretation depends on context. +// Dialog see llinstantmessage.h for values +// ID May be used by dialog. Interpretation depends on context. // BinaryBucket May be used by some dialog types // reliable { - ImprovedInstantMessage Low 254 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - MessageBlock Single - { FromGroup BOOL } - { ToAgentID LLUUID } - { ParentEstateID U32 } - { RegionID LLUUID } - { Position LLVector3 } - { Offline U8 } - { Dialog U8 } // U8 - IM type - { ID LLUUID } - { Timestamp U32 } - { FromAgentName Variable 1 } - { Message Variable 2 } - { BinaryBucket Variable 2 } - } + ImprovedInstantMessage Low 254 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + MessageBlock Single + { FromGroup BOOL } + { ToAgentID LLUUID } + { ParentEstateID U32 } + { RegionID LLUUID } + { Position LLVector3 } + { Offline U8 } + { Dialog U8 } // U8 - IM type + { ID LLUUID } + { Timestamp U32 } + { FromAgentName Variable 1 } + { Message Variable 2 } + { BinaryBucket Variable 2 } + } + { + EstateBlock Single + { EstateID U32 } + } + { + MetaData Variable + { Data Variable 2 } + } } // RetrieveInstantMessages - used to get instant messages that // were persisted out to the database while the user was offline +// Sent from viewer->simulator. Also see RetrieveIMsExtended (back-end only) { - RetrieveInstantMessages Low 255 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } + RetrieveInstantMessages Low 255 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } } // FindAgent - used to find an agent's global position. I used a // variable sized LocationBlock so that the message can be recycled with // minimum new messages and handlers. { - FindAgent Low 256 NotTrusted Unencoded - { - AgentBlock Single - { Hunter LLUUID } - { Prey LLUUID } - { SpaceIP IPADDR } - } - { - LocationBlock Variable - { GlobalX F64 } - { GlobalY F64 } - } + FindAgent Low 256 NotTrusted Unencoded + { + AgentBlock Single + { Hunter LLUUID } + { Prey LLUUID } + { SpaceIP IPADDR } + } + { + LocationBlock Variable + { GlobalX F64 } + { GlobalY F64 } + } } // Set godlike to 1 if you want to become godlike. @@ -5700,17 +5757,17 @@ version 2.0 // viewer -> simulator -> dataserver // reliable { - RequestGodlikePowers Low 257 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - RequestBlock Single - { Godlike BOOL } - { Token LLUUID } // viewer packs a null, sim packs token - } + RequestGodlikePowers Low 257 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + RequestBlock Single + { Godlike BOOL } + { Token LLUUID } // viewer packs a null, sim packs token + } } // At the simulator, turn the godlike bit on. @@ -5718,81 +5775,81 @@ version 2.0 // dataserver -> simulator -> viewer // reliable { - GrantGodlikePowers Low 258 Trusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - GrantData Single - { GodLevel U8 } - { Token LLUUID } // checked on sim, ignored on viewer - } + GrantGodlikePowers Low 258 Trusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + GrantData Single + { GodLevel U8 } + { Token LLUUID } // checked on sim, ignored on viewer + } } // GodlikeMessage - generalized construct for Gods to send messages // around the system. Each Request has it's own internal protocol. { GodlikeMessage Low 259 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { TransactionID LLUUID } - } - { - MethodData Single - { Method Variable 1 } - { Invoice LLUUID } - } - { - ParamList Variable - { Parameter Variable 1 } - } + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { TransactionID LLUUID } + } + { + MethodData Single + { Method Variable 1 } + { Invoice LLUUID } + } + { + ParamList Variable + { Parameter Variable 1 } + } } // EstateOwnerMessage // format must be identical to above { - EstateOwnerMessage Low 260 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { TransactionID LLUUID } - } - { - MethodData Single - { Method Variable 1 } - { Invoice LLUUID } - } - { - ParamList Variable - { Parameter Variable 1 } - } + EstateOwnerMessage Low 260 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { TransactionID LLUUID } + } + { + MethodData Single + { Method Variable 1 } + { Invoice LLUUID } + } + { + ParamList Variable + { Parameter Variable 1 } + } } // GenericMessage // format must be identical to above // As above, but don't have to be god or estate owner to send. { - GenericMessage Low 261 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { TransactionID LLUUID } - } - { - MethodData Single - { Method Variable 1 } - { Invoice LLUUID } - } - { - ParamList Variable - { Parameter Variable 1 } - } + GenericMessage Low 261 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { TransactionID LLUUID } + } + { + MethodData Single + { Method Variable 1 } + { Invoice LLUUID } + } + { + ParamList Variable + { Parameter Variable 1 } + } } // GenericStreamingMessage @@ -5810,29 +5867,29 @@ version 2.0 { DataBlock Single - { Data Variable 2 } + { Data Variable 2 } } } // LargeGenericMessage -// Similar to the above messages, but can handle larger payloads and serialized -// LLSD. Uses HTTP transport +// Similar to the above messages, but can handle larger payloads and serialized +// LLSD. Uses HTTP transport { LargeGenericMessage Low 430 NotTrusted Unencoded UDPDeprecated { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { TransactionID LLUUID } + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { TransactionID LLUUID } } { MethodData Single - { Method Variable 1 } - { Invoice LLUUID } + { Method Variable 1 } + { Invoice LLUUID } } { - ParamList Variable - { Parameter Variable 2 } + ParamList Variable + { Parameter Variable 2 } } } @@ -5842,72 +5899,72 @@ version 2.0 // request for mute list { - MuteListRequest Low 262 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - MuteData Single - { MuteCRC U32 } - } + MuteListRequest Low 262 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + MuteData Single + { MuteCRC U32 } + } } // update/add someone in the mute list { - UpdateMuteListEntry Low 263 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - MuteData Single - { MuteID LLUUID } - { MuteName Variable 1 } - { MuteType S32 } - { MuteFlags U32 } - } + UpdateMuteListEntry Low 263 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + MuteData Single + { MuteID LLUUID } + { MuteName Variable 1 } + { MuteType S32 } + { MuteFlags U32 } + } } // Remove a mute list entry. { - RemoveMuteListEntry Low 264 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - MuteData Single - { MuteID LLUUID } - { MuteName Variable 1 } - } + RemoveMuteListEntry Low 264 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + MuteData Single + { MuteID LLUUID } + { MuteName Variable 1 } + } } -// -// Inventory update messages +// +// Inventory update messages // UDP DEPRECATED - Now a viewer capability. { - CopyInventoryFromNotecard Low 265 NotTrusted Zerocoded UDPDeprecated - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - NotecardData Single - { NotecardItemID LLUUID } - { ObjectID LLUUID } - } - { - InventoryData Variable - { ItemID LLUUID } - { FolderID LLUUID } - } + CopyInventoryFromNotecard Low 265 NotTrusted Zerocoded UDPDeprecated + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + NotecardData Single + { NotecardItemID LLUUID } + { ObjectID LLUUID } + } + { + InventoryData Variable + { ItemID LLUUID } + { FolderID LLUUID } + } } // @@ -5915,40 +5972,40 @@ version 2.0 // THIS MESSAGE CAN NOT CREATE NEW INVENTORY ITEMS. // { - UpdateInventoryItem Low 266 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { TransactionID LLUUID } - } - { - InventoryData Variable - { ItemID LLUUID } - { FolderID LLUUID } - { CallbackID U32 } // Async Response - - { CreatorID LLUUID } // permissions - { OwnerID LLUUID } // permissions - { GroupID LLUUID } // permissions - { BaseMask U32 } // permissions - { OwnerMask U32 } // permissions - { GroupMask U32 } // permissions - { EveryoneMask U32 } // permissions - { NextOwnerMask U32 } // permissions - { GroupOwned BOOL } // permissions - - { TransactionID LLUUID } // TransactionID: new assets only - { Type S8 } - { InvType S8 } - { Flags U32 } - { SaleType U8 } - { SalePrice S32 } - { Name Variable 1 } - { Description Variable 1 } - { CreationDate S32 } - { CRC U32 } - } + UpdateInventoryItem Low 266 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { TransactionID LLUUID } + } + { + InventoryData Variable + { ItemID LLUUID } + { FolderID LLUUID } + { CallbackID U32 } // Async Response + + { CreatorID LLUUID } // permissions + { OwnerID LLUUID } // permissions + { GroupID LLUUID } // permissions + { BaseMask U32 } // permissions + { OwnerMask U32 } // permissions + { GroupMask U32 } // permissions + { EveryoneMask U32 } // permissions + { NextOwnerMask U32 } // permissions + { GroupOwned BOOL } // permissions + + { TransactionID LLUUID } // TransactionID: new assets only + { Type S8 } + { InvType S8 } + { Flags U32 } + { SaleType U8 } + { SalePrice S32 } + { Name Variable 1 } + { Description Variable 1 } + { CreationDate S32 } + { CRC U32 } + } } // @@ -5956,106 +6013,106 @@ version 2.0 // DO NOT ALLOW THIS FROM THE VIEWER. // { - UpdateCreateInventoryItem Low 267 Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SimApproved BOOL } - { TransactionID LLUUID } - } - { - InventoryData Variable - { ItemID LLUUID } - { FolderID LLUUID } - { CallbackID U32 } // Async Response - - { CreatorID LLUUID } // permissions - { OwnerID LLUUID } // permissions - { GroupID LLUUID } // permissions - { BaseMask U32 } // permissions - { OwnerMask U32 } // permissions - { GroupMask U32 } // permissions - { EveryoneMask U32 } // permissions - { NextOwnerMask U32 } // permissions - { GroupOwned BOOL } // permissions - - { AssetID LLUUID } - { Type S8 } - { InvType S8 } - { Flags U32 } - { SaleType U8 } - { SalePrice S32 } - { Name Variable 1 } - { Description Variable 1 } - { CreationDate S32 } - { CRC U32 } - } -} - -{ - MoveInventoryItem Low 268 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { Stamp BOOL } // should the server re-timestamp? - } - { - InventoryData Variable - { ItemID LLUUID } - { FolderID LLUUID } - { NewName Variable 1 } - } -} - -// copy inventory item by item id to specified destination folder, + UpdateCreateInventoryItem Low 267 Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SimApproved BOOL } + { TransactionID LLUUID } + } + { + InventoryData Variable + { ItemID LLUUID } + { FolderID LLUUID } + { CallbackID U32 } // Async Response + + { CreatorID LLUUID } // permissions + { OwnerID LLUUID } // permissions + { GroupID LLUUID } // permissions + { BaseMask U32 } // permissions + { OwnerMask U32 } // permissions + { GroupMask U32 } // permissions + { EveryoneMask U32 } // permissions + { NextOwnerMask U32 } // permissions + { GroupOwned BOOL } // permissions + + { AssetID LLUUID } + { Type S8 } + { InvType S8 } + { Flags U32 } + { SaleType U8 } + { SalePrice S32 } + { Name Variable 1 } + { Description Variable 1 } + { CreationDate S32 } + { CRC U32 } + } +} + +{ + MoveInventoryItem Low 268 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { Stamp BOOL } // should the server re-timestamp? + } + { + InventoryData Variable + { ItemID LLUUID } + { FolderID LLUUID } + { NewName Variable 1 } + } +} + +// copy inventory item by item id to specified destination folder, // send out bulk inventory update when done. // // Inventory items are only unique for {agent, inv_id} pairs; // the OldItemID needs to be paired with the OldAgentID to // produce a unique inventory item. { - CopyInventoryItem Low 269 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - InventoryData Variable - { CallbackID U32 } // Async response - { OldAgentID LLUUID } - { OldItemID LLUUID } - { NewFolderID LLUUID } - { NewName Variable 1 } - } -} - -{ - RemoveInventoryItem Low 270 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - InventoryData Variable - { ItemID LLUUID } - } -} - -{ - ChangeInventoryItemFlags Low 271 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - InventoryData Variable - { ItemID LLUUID } - { Flags U32 } - } + CopyInventoryItem Low 269 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + InventoryData Variable + { CallbackID U32 } // Async response + { OldAgentID LLUUID } + { OldItemID LLUUID } + { NewFolderID LLUUID } + { NewName Variable 1 } + } +} + +{ + RemoveInventoryItem Low 270 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + InventoryData Variable + { ItemID LLUUID } + } +} + +{ + ChangeInventoryItemFlags Low 271 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + InventoryData Variable + { ItemID LLUUID } + { Flags U32 } + } } // @@ -6064,235 +6121,235 @@ version 2.0 // This message is currently only uses objects, so the viewer ignores // the asset id. { - SaveAssetIntoInventory Low 272 Trusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - InventoryData Single - { ItemID LLUUID } - { NewAssetID LLUUID } - } -} - -{ - CreateInventoryFolder Low 273 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - FolderData Single - { FolderID LLUUID } - { ParentID LLUUID } - { Type S8 } - { Name Variable 1 } - } -} - -{ - UpdateInventoryFolder Low 274 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - FolderData Variable - { FolderID LLUUID } - { ParentID LLUUID } - { Type S8 } - { Name Variable 1 } - } -} - -{ - MoveInventoryFolder Low 275 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { Stamp BOOL } // should the server re-timestamp children - } - { - InventoryData Variable - { FolderID LLUUID } - { ParentID LLUUID } - } -} - -{ - RemoveInventoryFolder Low 276 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - FolderData Variable - { FolderID LLUUID } - } + SaveAssetIntoInventory Low 272 Trusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + InventoryData Single + { ItemID LLUUID } + { NewAssetID LLUUID } + } +} + +{ + CreateInventoryFolder Low 273 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + FolderData Single + { FolderID LLUUID } + { ParentID LLUUID } + { Type S8 } + { Name Variable 1 } + } +} + +{ + UpdateInventoryFolder Low 274 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + FolderData Variable + { FolderID LLUUID } + { ParentID LLUUID } + { Type S8 } + { Name Variable 1 } + } +} + +{ + MoveInventoryFolder Low 275 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { Stamp BOOL } // should the server re-timestamp children + } + { + InventoryData Variable + { FolderID LLUUID } + { ParentID LLUUID } + } +} + +{ + RemoveInventoryFolder Low 276 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + FolderData Variable + { FolderID LLUUID } + } } // Get inventory segment. { - FetchInventoryDescendents Low 277 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - InventoryData Single - { FolderID LLUUID } - { OwnerID LLUUID } - { SortOrder S32 } // 0 = name, 1 = time - { FetchFolders BOOL } // false will omit folders in query - { FetchItems BOOL } // false will omit items in query - } -} - -// return inventory segment. + FetchInventoryDescendents Low 277 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + InventoryData Single + { FolderID LLUUID } + { OwnerID LLUUID } + { SortOrder S32 } // 0 = name, 1 = time + { FetchFolders BOOL } // false will omit folders in query + { FetchItems BOOL } // false will omit items in query + } +} + +// return inventory segment. // *NOTE: This could be compressed more since we already know the // parent_id for folders and the folder_id for items, but this is // reasonable until we heve server side inventory. { - InventoryDescendents Low 278 Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { FolderID LLUUID } - { OwnerID LLUUID } // owner of the folders creatd. - { Version S32 } // version of the folder for caching - { Descendents S32 } // count to help with caching - } - { - FolderData Variable - { FolderID LLUUID } - { ParentID LLUUID } - { Type S8 } - { Name Variable 1 } - } - { - ItemData Variable - { ItemID LLUUID } - { FolderID LLUUID } - { CreatorID LLUUID } // permissions - { OwnerID LLUUID } // permissions - { GroupID LLUUID } // permissions - { BaseMask U32 } // permissions - { OwnerMask U32 } // permissions - { GroupMask U32 } // permissions - { EveryoneMask U32 } // permissions - { NextOwnerMask U32 } // permissions - { GroupOwned BOOL } // permissions - { AssetID LLUUID } - { Type S8 } - { InvType S8 } - { Flags U32 } - { SaleType U8 } - { SalePrice S32 } - { Name Variable 1 } - { Description Variable 1 } - { CreationDate S32 } - { CRC U32 } - } + InventoryDescendents Low 278 Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { FolderID LLUUID } + { OwnerID LLUUID } // owner of the folders creatd. + { Version S32 } // version of the folder for caching + { Descendents S32 } // count to help with caching + } + { + FolderData Variable + { FolderID LLUUID } + { ParentID LLUUID } + { Type S8 } + { Name Variable 1 } + } + { + ItemData Variable + { ItemID LLUUID } + { FolderID LLUUID } + { CreatorID LLUUID } // permissions + { OwnerID LLUUID } // permissions + { GroupID LLUUID } // permissions + { BaseMask U32 } // permissions + { OwnerMask U32 } // permissions + { GroupMask U32 } // permissions + { EveryoneMask U32 } // permissions + { NextOwnerMask U32 } // permissions + { GroupOwned BOOL } // permissions + { AssetID LLUUID } + { Type S8 } + { InvType S8 } + { Flags U32 } + { SaleType U8 } + { SalePrice S32 } + { Name Variable 1 } + { Description Variable 1 } + { CreationDate S32 } + { CRC U32 } + } } // Get inventory item(s) - response comes through FetchInventoryReply { - FetchInventory Low 279 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - InventoryData Variable - { OwnerID LLUUID } - { ItemID LLUUID } - } + FetchInventory Low 279 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + InventoryData Variable + { OwnerID LLUUID } + { ItemID LLUUID } + } } // response to fetch inventory { - FetchInventoryReply Low 280 Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - InventoryData Variable - { ItemID LLUUID } - { FolderID LLUUID } - - { CreatorID LLUUID } // permissions - { OwnerID LLUUID } // permissions - { GroupID LLUUID } // permissions - { BaseMask U32 } // permissions - { OwnerMask U32 } // permissions - { GroupMask U32 } // permissions - { EveryoneMask U32 } // permissions - { NextOwnerMask U32 } // permissions - { GroupOwned BOOL } // permissions - - { AssetID LLUUID } - { Type S8 } - { InvType S8 } - { Flags U32 } - { SaleType U8 } - { SalePrice S32 } - { Name Variable 1 } - { Description Variable 1 } - { CreationDate S32 } - { CRC U32 } - } + FetchInventoryReply Low 280 Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + InventoryData Variable + { ItemID LLUUID } + { FolderID LLUUID } + + { CreatorID LLUUID } // permissions + { OwnerID LLUUID } // permissions + { GroupID LLUUID } // permissions + { BaseMask U32 } // permissions + { OwnerMask U32 } // permissions + { GroupMask U32 } // permissions + { EveryoneMask U32 } // permissions + { NextOwnerMask U32 } // permissions + { GroupOwned BOOL } // permissions + + { AssetID LLUUID } + { Type S8 } + { InvType S8 } + { Flags U32 } + { SaleType U8 } + { SalePrice S32 } + { Name Variable 1 } + { Description Variable 1 } + { CreationDate S32 } + { CRC U32 } + } } // Can only fit around 7 items per packet - that's the way it goes. At // least many bulk updates can be packed. // Only from dataserver->sim->viewer { - BulkUpdateInventory Low 281 Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { TransactionID LLUUID } - } - { - FolderData Variable - { FolderID LLUUID } - { ParentID LLUUID } - { Type S8 } - { Name Variable 1 } - } - { - ItemData Variable - { ItemID LLUUID } - { CallbackID U32 } // Async Response - { FolderID LLUUID } - { CreatorID LLUUID } // permissions - { OwnerID LLUUID } // permissions - { GroupID LLUUID } // permissions - { BaseMask U32 } // permissions - { OwnerMask U32 } // permissions - { GroupMask U32 } // permissions - { EveryoneMask U32 } // permissions - { NextOwnerMask U32 } // permissions - { GroupOwned BOOL } // permissions - { AssetID LLUUID } - { Type S8 } - { InvType S8 } - { Flags U32 } - { SaleType U8 } - { SalePrice S32 } - { Name Variable 1 } - { Description Variable 1 } - { CreationDate S32 } - { CRC U32 } - } + BulkUpdateInventory Low 281 Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { TransactionID LLUUID } + } + { + FolderData Variable + { FolderID LLUUID } + { ParentID LLUUID } + { Type S8 } + { Name Variable 1 } + } + { + ItemData Variable + { ItemID LLUUID } + { CallbackID U32 } // Async Response + { FolderID LLUUID } + { CreatorID LLUUID } // permissions + { OwnerID LLUUID } // permissions + { GroupID LLUUID } // permissions + { BaseMask U32 } // permissions + { OwnerMask U32 } // permissions + { GroupMask U32 } // permissions + { EveryoneMask U32 } // permissions + { NextOwnerMask U32 } // permissions + { GroupOwned BOOL } // permissions + { AssetID LLUUID } + { Type S8 } + { InvType S8 } + { Flags U32 } + { SaleType U8 } + { SalePrice S32 } + { Name Variable 1 } + { Description Variable 1 } + { CreationDate S32 } + { CRC U32 } + } } @@ -6300,162 +6357,162 @@ version 2.0 // request permissions for agent id to get the asset for owner_id's // item_id. { - RequestInventoryAsset Low 282 Trusted Unencoded - { - QueryData Single - { QueryID LLUUID } - { AgentID LLUUID } - { OwnerID LLUUID } - { ItemID LLUUID } - } + RequestInventoryAsset Low 282 Trusted Unencoded + { + QueryData Single + { QueryID LLUUID } + { AgentID LLUUID } + { OwnerID LLUUID } + { ItemID LLUUID } + } } // response to RequestInventoryAsset // lluuid will be null if agentid in the request above cannot read asset { - InventoryAssetResponse Low 283 Trusted Unencoded - { - QueryData Single - { QueryID LLUUID } - { AssetID LLUUID } - { IsReadable BOOL } - } + InventoryAssetResponse Low 283 Trusted Unencoded + { + QueryData Single + { QueryID LLUUID } + { AssetID LLUUID } + { IsReadable BOOL } + } } // This is the new improved way to remove inventory items. It is // currently only supported in viewer->userserver->dataserver // messages typically initiated by an empty trash method. { - RemoveInventoryObjects Low 284 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - FolderData Variable - { FolderID LLUUID } - } - { - ItemData Variable - { ItemID LLUUID } - } + RemoveInventoryObjects Low 284 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + FolderData Variable + { FolderID LLUUID } + } + { + ItemData Variable + { ItemID LLUUID } + } } // This is how you remove inventory when you're not even sure what it // is - only it's parenting. { - PurgeInventoryDescendents Low 285 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - InventoryData Single - { FolderID LLUUID } - } + PurgeInventoryDescendents Low 285 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + InventoryData Single + { FolderID LLUUID } + } } // These messages are viewer->simulator requests to update a task's // inventory. // if Key == 0, itemid is the key. if Key == 1, assetid is the key. { - UpdateTaskInventory Low 286 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - UpdateData Single - { LocalID U32 } - { Key U8 } - } - { - InventoryData Single - { ItemID LLUUID } - { FolderID LLUUID } - { CreatorID LLUUID } // permissions - { OwnerID LLUUID } // permissions - { GroupID LLUUID } // permissions - { BaseMask U32 } // permissions - { OwnerMask U32 } // permissions - { GroupMask U32 } // permissions - { EveryoneMask U32 } // permissions - { NextOwnerMask U32 } // permissions - { GroupOwned BOOL } // permissions - { TransactionID LLUUID } - { Type S8 } - { InvType S8 } - { Flags U32 } - { SaleType U8 } - { SalePrice S32 } - { Name Variable 1 } - { Description Variable 1 } - { CreationDate S32 } - { CRC U32 } - } -} - -{ - RemoveTaskInventory Low 287 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - InventoryData Single - { LocalID U32 } - { ItemID LLUUID } - } -} - -{ - MoveTaskInventory Low 288 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { FolderID LLUUID } - } - { - InventoryData Single - { LocalID U32 } - { ItemID LLUUID } - } -} - -{ - RequestTaskInventory Low 289 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - InventoryData Single - { LocalID U32 } - } -} - -{ - ReplyTaskInventory Low 290 Trusted Zerocoded - { - InventoryData Single - { TaskID LLUUID } - { Serial S16 } // S16 - { Filename Variable 1 } - } + UpdateTaskInventory Low 286 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + UpdateData Single + { LocalID U32 } + { Key U8 } + } + { + InventoryData Single + { ItemID LLUUID } + { FolderID LLUUID } + { CreatorID LLUUID } // permissions + { OwnerID LLUUID } // permissions + { GroupID LLUUID } // permissions + { BaseMask U32 } // permissions + { OwnerMask U32 } // permissions + { GroupMask U32 } // permissions + { EveryoneMask U32 } // permissions + { NextOwnerMask U32 } // permissions + { GroupOwned BOOL } // permissions + { TransactionID LLUUID } + { Type S8 } + { InvType S8 } + { Flags U32 } + { SaleType U8 } + { SalePrice S32 } + { Name Variable 1 } + { Description Variable 1 } + { CreationDate S32 } + { CRC U32 } + } +} + +{ + RemoveTaskInventory Low 287 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + InventoryData Single + { LocalID U32 } + { ItemID LLUUID } + } +} + +{ + MoveTaskInventory Low 288 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { FolderID LLUUID } + } + { + InventoryData Single + { LocalID U32 } + { ItemID LLUUID } + } +} + +{ + RequestTaskInventory Low 289 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + InventoryData Single + { LocalID U32 } + } +} + +{ + ReplyTaskInventory Low 290 Trusted Zerocoded + { + InventoryData Single + { TaskID LLUUID } + { Serial S16 } // S16 + { Filename Variable 1 } + } } // These messages are viewer->simulator requests regarding objects -// which are currently being simulated. The viewer will get an +// which are currently being simulated. The viewer will get an // UpdateInventoryItem response if a DeRez succeeds, and the object // will appear if a RezObject succeeds. // The Destination field tells where the derez should wind up, and the -// meaning of DestinationID depends on it. For example, if the +// meaning of DestinationID depends on it. For example, if the // destination is a category, then the destination is the category id. If // the destination is a task inventory, then the destination id is the // task id. @@ -6464,194 +6521,199 @@ version 2.0 // just duplicated (it's not that much, and derezzes that span multiple // packets will be rare.) { - DeRezObject Low 291 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - AgentBlock Single - { GroupID LLUUID } - { Destination U8 } - { DestinationID LLUUID } // see above - { TransactionID LLUUID } - { PacketCount U8 } - { PacketNumber U8 } - } - { - ObjectData Variable - { ObjectLocalID U32 } // object id in world - } + DeRezObject Low 291 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + AgentBlock Single + { GroupID LLUUID } + { Destination U8 } + { DestinationID LLUUID } // see above + { TransactionID LLUUID } + { PacketCount U8 } + { PacketNumber U8 } + } + { + ObjectData Variable + { ObjectLocalID U32 } // object id in world + } } // This message is sent when a derez succeeds, but there's no way to // know, since no inventory is created on the viewer. For example, when // saving into task inventory. { - DeRezAck Low 292 Trusted Unencoded - { - TransactionData Single - { TransactionID LLUUID } - { Success BOOL } - } + DeRezAck Low 292 Trusted Unencoded + { + TransactionData Single + { TransactionID LLUUID } + { Success BOOL } + } } // This message is sent from viewer -> simulator when the viewer wants // to rez an object out of inventory. { - RezObject Low 293 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { GroupID LLUUID } - } - { - RezData Single - { FromTaskID LLUUID } - { BypassRaycast U8 } - { RayStart LLVector3 } - { RayEnd LLVector3 } - { RayTargetID LLUUID } - { RayEndIsIntersection BOOL } - { RezSelected BOOL } - { RemoveItem BOOL } - { ItemFlags U32 } - { GroupMask U32 } - { EveryoneMask U32 } - { NextOwnerMask U32 } - } - { - InventoryData Single - { ItemID LLUUID } - { FolderID LLUUID } - { CreatorID LLUUID } // permissions - { OwnerID LLUUID } // permissions - { GroupID LLUUID } // permissions - { BaseMask U32 } // permissions - { OwnerMask U32 } // permissions - { GroupMask U32 } // permissions - { EveryoneMask U32 } // permissions - { NextOwnerMask U32 } // permissions - { GroupOwned BOOL } // permissions - { TransactionID LLUUID } - { Type S8 } - { InvType S8 } - { Flags U32 } - { SaleType U8 } - { SalePrice S32 } - { Name Variable 1 } - { Description Variable 1 } - { CreationDate S32 } - { CRC U32 } - } + RezObject Low 293 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { GroupID LLUUID } + } + { + RezData Single + { FromTaskID LLUUID } + { BypassRaycast U8 } + { RayStart LLVector3 } + { RayEnd LLVector3 } + { RayTargetID LLUUID } + { RayEndIsIntersection BOOL } + { RezSelected BOOL } + { RemoveItem BOOL } + { ItemFlags U32 } + { GroupMask U32 } + { EveryoneMask U32 } + { NextOwnerMask U32 } + } + { + InventoryData Single + { ItemID LLUUID } + { FolderID LLUUID } + { CreatorID LLUUID } // permissions + { OwnerID LLUUID } // permissions + { GroupID LLUUID } // permissions + { BaseMask U32 } // permissions + { OwnerMask U32 } // permissions + { GroupMask U32 } // permissions + { EveryoneMask U32 } // permissions + { NextOwnerMask U32 } // permissions + { GroupOwned BOOL } // permissions + { TransactionID LLUUID } + { Type S8 } + { InvType S8 } + { Flags U32 } + { SaleType U8 } + { SalePrice S32 } + { Name Variable 1 } + { Description Variable 1 } + { CreationDate S32 } + { CRC U32 } + } } // This message is sent from viewer -> simulator when the viewer wants // to rez an object from a notecard. { - RezObjectFromNotecard Low 294 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { GroupID LLUUID } - } - { - RezData Single - { FromTaskID LLUUID } - { BypassRaycast U8 } - { RayStart LLVector3 } - { RayEnd LLVector3 } - { RayTargetID LLUUID } - { RayEndIsIntersection BOOL } - { RezSelected BOOL } - { RemoveItem BOOL } - { ItemFlags U32 } - { GroupMask U32 } - { EveryoneMask U32 } - { NextOwnerMask U32 } - } - { - NotecardData Single - { NotecardItemID LLUUID } - { ObjectID LLUUID } - } - { - InventoryData Variable - { ItemID LLUUID } - } + RezObjectFromNotecard Low 294 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { GroupID LLUUID } + } + { + RezData Single + { FromTaskID LLUUID } + { BypassRaycast U8 } + { RayStart LLVector3 } + { RayEnd LLVector3 } + { RayTargetID LLUUID } + { RayEndIsIntersection BOOL } + { RezSelected BOOL } + { RemoveItem BOOL } + { ItemFlags U32 } + { GroupMask U32 } + { EveryoneMask U32 } + { NextOwnerMask U32 } + } + { + NotecardData Single + { NotecardItemID LLUUID } + { ObjectID LLUUID } + } + { + InventoryData Variable + { ItemID LLUUID } + } } // sim -> dataserver // sent during agent to agent inventory transfers { - TransferInventory Low 295 Trusted Zerocoded - { - InfoBlock Single - { SourceID LLUUID } - { DestID LLUUID } - { TransactionID LLUUID } - } - { - InventoryBlock Variable - { InventoryID LLUUID } - { Type S8 } - } + TransferInventory Low 295 Trusted Zerocoded + { + InfoBlock Single + { SourceID LLUUID } + { DestID LLUUID } + { TransactionID LLUUID } + } + { + InventoryBlock Variable + { InventoryID LLUUID } + { Type S8 } + } + { + ValidationBlock Single + { NeedsValidation BOOL } + { EstateID U32 } + } } // dataserver -> sim // InventoryID is the id of the inventory object that the end user // should discard if they deny the transfer. { - TransferInventoryAck Low 296 Trusted Zerocoded - { - InfoBlock Single - { TransactionID LLUUID } - { InventoryID LLUUID } - } + TransferInventoryAck Low 296 Trusted Zerocoded + { + InfoBlock Single + { TransactionID LLUUID } + { InventoryID LLUUID } + } } { - AcceptFriendship Low 297 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - TransactionBlock Single - { TransactionID LLUUID } - } - { - FolderData Variable - { FolderID LLUUID } // place to put calling card. - } + AcceptFriendship Low 297 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + TransactionBlock Single + { TransactionID LLUUID } + } + { + FolderData Variable + { FolderID LLUUID } // place to put calling card. + } } { - DeclineFriendship Low 298 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - TransactionBlock Single - { TransactionID LLUUID } - } + DeclineFriendship Low 298 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + TransactionBlock Single + { TransactionID LLUUID } + } } { - FormFriendship Low 299 Trusted Unencoded - { - AgentBlock Single - { SourceID LLUUID } - { DestID LLUUID } - } + FormFriendship Low 299 Trusted Unencoded + { + AgentBlock Single + { SourceID LLUUID } + { DestID LLUUID } + } } // Cancels user relationship @@ -6660,281 +6722,281 @@ version 2.0 // viewer -> userserver -> dataserver // reliable { - TerminateFriendship Low 300 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - ExBlock Single - { OtherID LLUUID } - } + TerminateFriendship Low 300 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ExBlock Single + { OtherID LLUUID } + } } // used to give someone a calling card. { - OfferCallingCard Low 301 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - AgentBlock Single - { DestID LLUUID } - { TransactionID LLUUID } - } -} - -{ - AcceptCallingCard Low 302 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - TransactionBlock Single - { TransactionID LLUUID } - } - { - FolderData Variable - { FolderID LLUUID } // place to put calling card. - } -} - -{ - DeclineCallingCard Low 303 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - TransactionBlock Single - { TransactionID LLUUID } - } + OfferCallingCard Low 301 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + AgentBlock Single + { DestID LLUUID } + { TransactionID LLUUID } + } +} + +{ + AcceptCallingCard Low 302 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + TransactionBlock Single + { TransactionID LLUUID } + } + { + FolderData Variable + { FolderID LLUUID } // place to put calling card. + } +} + +{ + DeclineCallingCard Low 303 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + TransactionBlock Single + { TransactionID LLUUID } + } } // Rez a script onto an object { - RezScript Low 304 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { GroupID LLUUID } - } - { - UpdateBlock Single - { ObjectLocalID U32 } // object id in world - { Enabled BOOL } // is script rezzed in enabled? - } - { - InventoryBlock Single - { ItemID LLUUID } - { FolderID LLUUID } - { CreatorID LLUUID } // permissions - { OwnerID LLUUID } // permissions - { GroupID LLUUID } // permissions - { BaseMask U32 } // permissions - { OwnerMask U32 } // permissions - { GroupMask U32 } // permissions - { EveryoneMask U32 } // permissions - { NextOwnerMask U32 } // permissions - { GroupOwned BOOL } // permissions - { TransactionID LLUUID } - { Type S8 } - { InvType S8 } - { Flags U32 } - { SaleType U8 } - { SalePrice S32 } - { Name Variable 1 } - { Description Variable 1 } - { CreationDate S32 } - { CRC U32 } - } + RezScript Low 304 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { GroupID LLUUID } + } + { + UpdateBlock Single + { ObjectLocalID U32 } // object id in world + { Enabled BOOL } // is script rezzed in enabled? + } + { + InventoryBlock Single + { ItemID LLUUID } + { FolderID LLUUID } + { CreatorID LLUUID } // permissions + { OwnerID LLUUID } // permissions + { GroupID LLUUID } // permissions + { BaseMask U32 } // permissions + { OwnerMask U32 } // permissions + { GroupMask U32 } // permissions + { EveryoneMask U32 } // permissions + { NextOwnerMask U32 } // permissions + { GroupOwned BOOL } // permissions + { TransactionID LLUUID } + { Type S8 } + { InvType S8 } + { Flags U32 } + { SaleType U8 } + { SalePrice S32 } + { Name Variable 1 } + { Description Variable 1 } + { CreationDate S32 } + { CRC U32 } + } } // Create inventory { - CreateInventoryItem Low 305 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - InventoryBlock Single - { CallbackID U32 } // Async Response - { FolderID LLUUID } - { TransactionID LLUUID } // Going to become TransactionID - { NextOwnerMask U32 } - { Type S8 } - { InvType S8 } - { WearableType U8 } - { Name Variable 1 } - { Description Variable 1 } - } + CreateInventoryItem Low 305 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + InventoryBlock Single + { CallbackID U32 } // Async Response + { FolderID LLUUID } + { TransactionID LLUUID } // Going to become TransactionID + { NextOwnerMask U32 } + { Type S8 } + { InvType S8 } + { WearableType U8 } + { Name Variable 1 } + { Description Variable 1 } + } } // give agent a landmark for an event. { - CreateLandmarkForEvent Low 306 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - EventData Single - { EventID U32 } - } - { - InventoryBlock Single - { FolderID LLUUID } - { Name Variable 1 } - } -} - -{ - EventLocationRequest Low 307 Trusted Zerocoded - { - QueryData Single - { QueryID LLUUID } - } - { - EventData Single - { EventID U32 } - } -} - -{ - EventLocationReply Low 308 Trusted Zerocoded - { - QueryData Single - { QueryID LLUUID } - } - { - EventData Single - { Success BOOL } - { RegionID LLUUID } - { RegionPos LLVector3 } - } + CreateLandmarkForEvent Low 306 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + EventData Single + { EventID U32 } + } + { + InventoryBlock Single + { FolderID LLUUID } + { Name Variable 1 } + } +} + +{ + EventLocationRequest Low 307 Trusted Zerocoded + { + QueryData Single + { QueryID LLUUID } + } + { + EventData Single + { EventID U32 } + } +} + +{ + EventLocationReply Low 308 Trusted Zerocoded + { + QueryData Single + { QueryID LLUUID } + } + { + EventData Single + { Success BOOL } + { RegionID LLUUID } + { RegionPos LLVector3 } + } } // get information about landmarks. Used by viewers for determining // the location of a landmark, and by simulators for teleport { - RegionHandleRequest Low 309 NotTrusted Unencoded - { - RequestBlock Single - { RegionID LLUUID } - } + RegionHandleRequest Low 309 NotTrusted Unencoded + { + RequestBlock Single + { RegionID LLUUID } + } } { - RegionIDAndHandleReply Low 310 Trusted Unencoded - { - ReplyBlock Single - { RegionID LLUUID } - { RegionHandle U64 } - } + RegionIDAndHandleReply Low 310 Trusted Unencoded + { + ReplyBlock Single + { RegionID LLUUID } + { RegionHandle U64 } + } } // Move money from one agent to another. Validation will happen at the // simulator, the dataserver will actually do the work. Dataserver // generates a MoneyBalance message in reply. The simulator // will generate a MoneyTransferBackend in response to this. -// viewer -> simulator -> dataserver -{ - MoneyTransferRequest Low 311 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - MoneyData Single - { SourceID LLUUID } - { DestID LLUUID } // destination of the transfer - { Flags U8 } - { Amount S32 } - { AggregatePermNextOwner U8 } - { AggregatePermInventory U8 } - { TransactionType S32 } // see lltransactiontypes.h - { Description Variable 1 } // string, name of item for purchases - } +// viewer -> simulator -> dataserver +{ + MoneyTransferRequest Low 311 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + MoneyData Single + { SourceID LLUUID } + { DestID LLUUID } // destination of the transfer + { Flags U8 } + { Amount S32 } + { AggregatePermNextOwner U8 } + { AggregatePermInventory U8 } + { TransactionType S32 } // see lltransactiontypes.h + { Description Variable 1 } // string, name of item for purchases + } } // And, the money transfer // *NOTE: Unused as of 2010-04-06, because all back-end money transactions // are done with web services via L$ API. JC { - MoneyTransferBackend Low 312 Trusted Zerocoded - { - MoneyData Single - { TransactionID LLUUID } - { TransactionTime U32 } // utc seconds since epoch - { SourceID LLUUID } - { DestID LLUUID } // destination of the transfer - { Flags U8 } - { Amount S32 } - { AggregatePermNextOwner U8 } - { AggregatePermInventory U8 } - { TransactionType S32 } // see lltransactiontypes.h - { RegionID LLUUID } // region sending the request, for logging - { GridX U32 } // *HACK: database doesn't have region_id in schema - { GridY U32 } // *HACK: database doesn't have region_id in schema - { Description Variable 1 } // string, name of item for purchases - } + MoneyTransferBackend Low 312 Trusted Zerocoded + { + MoneyData Single + { TransactionID LLUUID } + { TransactionTime U32 } // utc seconds since epoch + { SourceID LLUUID } + { DestID LLUUID } // destination of the transfer + { Flags U8 } + { Amount S32 } + { AggregatePermNextOwner U8 } + { AggregatePermInventory U8 } + { TransactionType S32 } // see lltransactiontypes.h + { RegionID LLUUID } // region sending the request, for logging + { GridX U32 } // *HACK: database doesn't have region_id in schema + { GridY U32 } // *HACK: database doesn't have region_id in schema + { Description Variable 1 } // string, name of item for purchases + } } // viewer -> userserver -> dataserver // Reliable { - MoneyBalanceRequest Low 313 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - MoneyData Single - { TransactionID LLUUID } - } + MoneyBalanceRequest Low 313 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + MoneyData Single + { TransactionID LLUUID } + } } // dataserver -> simulator -> viewer { - MoneyBalanceReply Low 314 Trusted Zerocoded - { - MoneyData Single - { AgentID LLUUID } - { TransactionID LLUUID } - { TransactionSuccess BOOL } // BOOL - { MoneyBalance S32 } - { SquareMetersCredit S32 } - { SquareMetersCommitted S32 } - { Description Variable 1 } // string - } - // For replies that are part of a transaction (buying something) provide - // metadata for localization. If TransactionType is 0, the message is - // purely a balance update. Added for server 1.40 and viewer 2.1. JC - { - TransactionInfo Single - { TransactionType S32 } // lltransactiontype.h - { SourceID LLUUID } - { IsSourceGroup BOOL } - { DestID LLUUID } - { IsDestGroup BOOL } - { Amount S32 } - { ItemDescription Variable 1 } // string - } + MoneyBalanceReply Low 314 Trusted Zerocoded + { + MoneyData Single + { AgentID LLUUID } + { TransactionID LLUUID } + { TransactionSuccess BOOL } + { MoneyBalance S32 } + { SquareMetersCredit S32 } + { SquareMetersCommitted S32 } + { Description Variable 1 } // string + } + // For replies that are part of a transaction (buying something) provide + // metadata for localization. If TransactionType is 0, the message is + // purely a balance update. Added for server 1.40 and viewer 2.1. JC + { + TransactionInfo Single + { TransactionType S32 } // lltransactiontype.h + { SourceID LLUUID } + { IsSourceGroup BOOL } + { DestID LLUUID } + { IsDestGroup BOOL } + { Amount S32 } + { ItemDescription Variable 1 } // string + } } @@ -6945,33 +7007,33 @@ version 2.0 // dataserver -> simulator -> spaceserver -> simulator -> viewer // reliable { - RoutedMoneyBalanceReply Low 315 Trusted Zerocoded - { - TargetBlock Single - { TargetIP IPADDR } // U32 encoded IP - { TargetPort IPPORT } - } - { - MoneyData Single - { AgentID LLUUID } - { TransactionID LLUUID } - { TransactionSuccess BOOL } // BOOL - { MoneyBalance S32 } - { SquareMetersCredit S32 } - { SquareMetersCommitted S32 } - { Description Variable 1 } // string - } - // See MoneyBalanceReply above. - { - TransactionInfo Single - { TransactionType S32 } // lltransactiontype.h - { SourceID LLUUID } - { IsSourceGroup BOOL } - { DestID LLUUID } - { IsDestGroup BOOL } - { Amount S32 } - { ItemDescription Variable 1 } // string - } + RoutedMoneyBalanceReply Low 315 Trusted Zerocoded UDPDeprecated + { + TargetBlock Single + { TargetIP IPADDR } // U32 encoded IP + { TargetPort IPPORT } + } + { + MoneyData Single + { AgentID LLUUID } + { TransactionID LLUUID } + { TransactionSuccess BOOL } + { MoneyBalance S32 } + { SquareMetersCredit S32 } + { SquareMetersCommitted S32 } + { Description Variable 1 } // string + } + // See MoneyBalanceReply above. + { + TransactionInfo Single + { TransactionType S32 } // lltransactiontype.h + { SourceID LLUUID } + { IsSourceGroup BOOL } + { DestID LLUUID } + { IsDestGroup BOOL } + { Amount S32 } + { ItemDescription Variable 1 } // string + } } @@ -6984,36 +7046,36 @@ version 2.0 // Tell the database that some gestures are now active // viewer -> sim -> data { - ActivateGestures Low 316 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { Flags U32 } - } - { - Data Variable - { ItemID LLUUID } - { AssetID LLUUID } - { GestureFlags U32 } - } + ActivateGestures Low 316 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { Flags U32 } + } + { + Data Variable + { ItemID LLUUID } + { AssetID LLUUID } + { GestureFlags U32 } + } } // Tell the database some gestures are no longer active // viewer -> sim -> data { - DeactivateGestures Low 317 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { Flags U32 } - } - { - Data Variable - { ItemID LLUUID } - { GestureFlags U32 } - } + DeactivateGestures Low 317 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { Flags U32 } + } + { + Data Variable + { ItemID LLUUID } + { GestureFlags U32 } + } } //--------------------------------------------------------------------------- @@ -7024,35 +7086,35 @@ version 2.0 // could be sent as a result of spam // as well as in response to InventoryRequest //{ -// InventoryUpdate Low Trusted Unencoded -// { -// AgentData Single -// { AgentID LLUUID } -// } -// { -// InventoryData Single -// { IsComplete U8 } -// { Filename Variable 1 } -// } +// InventoryUpdate Low Trusted Unencoded +// { +// AgentData Single +// { AgentID LLUUID } +// } +// { +// InventoryData Single +// { IsComplete U8 } +// { Filename Variable 1 } +// } //} // dataserver-> userserver -> viewer to move around the mute list { - MuteListUpdate Low 318 Trusted Unencoded - { - MuteData Single - { AgentID LLUUID } - { Filename Variable 1 } - } + MuteListUpdate Low 318 Trusted Unencoded + { + MuteData Single + { AgentID LLUUID } + { Filename Variable 1 } + } } // tell viewer to use the local mute cache { - UseCachedMuteList Low 319 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } + UseCachedMuteList Low 319 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } } // Sent from viewer to simulator to set user rights. This message will be @@ -7062,17 +7124,17 @@ version 2.0 // agent-related and the same PUT will be issued to the sim host if // they are online. { - GrantUserRights Low 320 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - Rights Variable - { AgentRelated LLUUID } - { RelatedRights S32 } - } + GrantUserRights Low 320 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + Rights Variable + { AgentRelated LLUUID } + { RelatedRights S32 } + } } // This message is sent from the simulator to the viewer to indicate a @@ -7081,69 +7143,69 @@ version 2.0 // right. Adding/removing online status rights will show up as an // online/offline notification. { - ChangeUserRights Low 321 Trusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - Rights Variable - { AgentRelated LLUUID } - { RelatedRights S32 } - } + ChangeUserRights Low 321 Trusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + Rights Variable + { AgentRelated LLUUID } + { RelatedRights S32 } + } } -// notification for login and logout. +// notification for login and logout. // source_sim -> dest_viewer { - OnlineNotification Low 322 Trusted Unencoded - { - AgentBlock Variable - { AgentID LLUUID } - } + OnlineNotification Low 322 Trusted Unencoded + { + AgentBlock Variable + { AgentID LLUUID } + } } { - OfflineNotification Low 323 Trusted Unencoded - { - AgentBlock Variable - { AgentID LLUUID } - } + OfflineNotification Low 323 Trusted Unencoded + { + AgentBlock Variable + { AgentID LLUUID } + } } // SetStartLocationRequest -// viewer -> sim -// failure checked at sim and triggers ImprovedInstantMessage -// success triggers SetStartLocation -{ - SetStartLocationRequest Low 324 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - StartLocationData Single - { SimName Variable 1 } // string - { LocationID U32 } - { LocationPos LLVector3 } // region coords - { LocationLookAt LLVector3 } - } +// viewer -> sim +// failure checked at sim and triggers ImprovedInstantMessage +// success triggers SetStartLocation +{ + SetStartLocationRequest Low 324 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + StartLocationData Single + { SimName Variable 1 } // string + { LocationID U32 } + { LocationPos LLVector3 } // region coords + { LocationLookAt LLVector3 } + } } // SetStartLocation // sim -> dataserver { - SetStartLocation Low 325 Trusted Zerocoded - { - StartLocationData Single - { AgentID LLUUID } - { RegionID LLUUID } - { LocationID U32 } - { RegionHandle U64 } - { LocationPos LLVector3 } // region coords - { LocationLookAt LLVector3 } - } + SetStartLocation Low 325 Trusted Zerocoded + { + StartLocationData Single + { AgentID LLUUID } + { RegionID LLUUID } + { LocationID U32 } + { RegionHandle U64 } + { LocationPos LLVector3 } // region coords + { LocationLookAt LLVector3 } + } } @@ -7155,21 +7217,21 @@ version 2.0 // NetTest - This goes back and forth to the space server because of // problems determining the port { - NetTest Low 326 NotTrusted Unencoded - { - NetBlock Single - { Port IPPORT } - } + NetTest Low 326 NotTrusted Unencoded + { + NetBlock Single + { Port IPPORT } + } } // SetChildCount - Sent to launcher to adjust nominal child count // Simulator sends this increase the sim/cpu ratio on startup { - SetCPURatio Low 327 NotTrusted Unencoded - { - Data Single - { Ratio U8 } - } + SetCPURatio Low 327 NotTrusted Unencoded + { + Data Single + { Ratio U8 } + } } @@ -7177,16 +7239,16 @@ version 2.0 // SimCrashed - Sent to dataserver when the sim goes down. // Maybe we should notify the spaceserver as well? { - SimCrashed Low 328 NotTrusted Unencoded - { - Data Single - { RegionX U32 } - { RegionY U32 } - } - { - Users Variable - { AgentID LLUUID } - } + SimCrashed Low 328 NotTrusted Unencoded + { + Data Single + { RegionX U32 } + { RegionY U32 } + } + { + Users Variable + { AgentID LLUUID } + } } // *************************************************************************** @@ -7195,28 +7257,28 @@ version 2.0 // NameValuePair - if the specific task exists on simulator, add or replace this name value pair { - NameValuePair Low 329 Trusted Unencoded - { - TaskData Single - { ID LLUUID } - } - { - NameValueData Variable - { NVPair Variable 2 } - } + NameValuePair Low 329 Trusted Unencoded + { + TaskData Single + { ID LLUUID } + } + { + NameValueData Variable + { NVPair Variable 2 } + } } // NameValuePair - if the specific task exists on simulator or dataserver, remove the name value pair (value is ignored) { - RemoveNameValuePair Low 330 Trusted Unencoded - { - TaskData Single - { ID LLUUID } - } - { - NameValueData Variable - { NVPair Variable 2 } - } + RemoveNameValuePair Low 330 Trusted Unencoded + { + TaskData Single + { ID LLUUID } + } + { + NameValueData Variable + { NVPair Variable 2 } + } } @@ -7225,66 +7287,66 @@ version 2.0 // *************************************************************************** // -// Simulator informs Dataserver of new attachment or attachment asset update +// Simulator informs Dataserver of new attachment or attachment asset update // DO NOT ALLOW THIS FROM THE VIEWER // { - UpdateAttachment Low 331 Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - AttachmentBlock Single - { AttachmentPoint U8 } - } - { - OperationData Single - { AddItem BOOL } - { UseExistingAsset BOOL } - } - { - InventoryData Single // Standard inventory item block - { ItemID LLUUID } - { FolderID LLUUID } - - { CreatorID LLUUID } // permissions - { OwnerID LLUUID } // permissions - { GroupID LLUUID } // permissions - { BaseMask U32 } // permissions - { OwnerMask U32 } // permissions - { GroupMask U32 } // permissions - { EveryoneMask U32 } // permissions - { NextOwnerMask U32 } // permissions - { GroupOwned BOOL } // permissions - - { AssetID LLUUID } - { Type S8 } - { InvType S8 } - { Flags U32 } - { SaleType U8 } - { SalePrice S32 } - { Name Variable 1 } - { Description Variable 1 } - { CreationDate S32 } - { CRC U32 } - } + UpdateAttachment Low 331 Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + AttachmentBlock Single + { AttachmentPoint U8 } + } + { + OperationData Single + { AddItem BOOL } + { UseExistingAsset BOOL } + } + { + InventoryData Single // Standard inventory item block + { ItemID LLUUID } + { FolderID LLUUID } + + { CreatorID LLUUID } // permissions + { OwnerID LLUUID } // permissions + { GroupID LLUUID } // permissions + { BaseMask U32 } // permissions + { OwnerMask U32 } // permissions + { GroupMask U32 } // permissions + { EveryoneMask U32 } // permissions + { NextOwnerMask U32 } // permissions + { GroupOwned BOOL } // permissions + + { AssetID LLUUID } + { Type S8 } + { InvType S8 } + { Flags U32 } + { SaleType U8 } + { SalePrice S32 } + { Name Variable 1 } + { Description Variable 1 } + { CreationDate S32 } + { CRC U32 } + } } // Simulator informs Dataserver that attachment has been taken off { - RemoveAttachment Low 332 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - AttachmentBlock Single - { AttachmentPoint U8 } - { ItemID LLUUID } - } + RemoveAttachment Low 332 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + AttachmentBlock Single + { AttachmentPoint U8 } + { ItemID LLUUID } + } } @@ -7294,57 +7356,56 @@ version 2.0 // SoundTrigger - Sent by simulator to viewer to trigger sound outside current region { - SoundTrigger High 29 NotTrusted Unencoded - { - SoundData Single - { SoundID LLUUID } - { OwnerID LLUUID } - { ObjectID LLUUID } - { ParentID LLUUID } // null if this object is the parent - { Handle U64 } // region handle - { Position LLVector3 } // region local - { Gain F32 } - } + SoundTrigger High 29 NotTrusted Unencoded + { + SoundData Single + { SoundID LLUUID } + { OwnerID LLUUID } + { ObjectID LLUUID } + { ParentID LLUUID } // null if this object is the parent + { Handle U64 } // region handle + { Position LLVector3 } // region local + { Gain F32 } + } } // AttachedSound - Sent by simulator to viewer to play sound attached with an object { - AttachedSound Medium 13 Trusted Unencoded - { - DataBlock Single - { SoundID LLUUID } - { ObjectID LLUUID } - { OwnerID LLUUID } - { Gain F32 } - { Flags U8 } - } + AttachedSound Medium 13 Trusted Unencoded + { + DataBlock Single + { SoundID LLUUID } + { ObjectID LLUUID } + { OwnerID LLUUID } + { Gain F32 } + { Flags U8 } + } } // AttachedSoundGainChange - Sent by simulator to viewer to change an attached sounds' volume { - AttachedSoundGainChange Medium 14 Trusted Unencoded - { - DataBlock Single - { ObjectID LLUUID } - { Gain F32 } - } + AttachedSoundGainChange Medium 14 Trusted Unencoded + { + DataBlock Single + { ObjectID LLUUID } + { Gain F32 } + } } // PreloadSound - Sent by simulator to viewer to preload sound for an object { - PreloadSound Medium 15 Trusted Unencoded - { - DataBlock Variable - { ObjectID LLUUID } - { OwnerID LLUUID } - { SoundID LLUUID } - } + PreloadSound Medium 15 Trusted Unencoded + { + DataBlock Variable + { ObjectID LLUUID } + { OwnerID LLUUID } + { SoundID LLUUID } + } } - // ************************************************************************* // Object animation messages // ************************************************************************* @@ -7356,16 +7417,16 @@ version 2.0 // ObjectAnimation - Update animation state // simulator --> viewer { - ObjectAnimation High 30 Trusted Unencoded - { - Sender Single - { ID LLUUID } - } - { - AnimationList Variable - { AnimID LLUUID } - { AnimSequenceID S32 } - } + ObjectAnimation High 30 Trusted Unencoded + { + Sender Single + { ID LLUUID } + } + { + AnimationList Variable + { AnimID LLUUID } + { AnimSequenceID S32 } + } } // ************************************************************************* @@ -7374,87 +7435,87 @@ version 2.0 // current assumes an existing UUID, need to enhance for new assets { - AssetUploadRequest Low 333 NotTrusted Unencoded - { - AssetBlock Single - { TransactionID LLUUID } - { Type S8 } - { Tempfile BOOL } - { StoreLocal BOOL } - { AssetData Variable 2 } // Optional: the actual asset data if the whole thing will fit it this packet - } + AssetUploadRequest Low 333 NotTrusted Unencoded + { + AssetBlock Single + { TransactionID LLUUID } + { Type S8 } + { Tempfile BOOL } + { StoreLocal BOOL } + { AssetData Variable 2 } // Optional: the actual asset data if the whole thing will fit it this packet + } } { - AssetUploadComplete Low 334 NotTrusted Unencoded - { - AssetBlock Single - { UUID LLUUID } - { Type S8 } - { Success BOOL } - } + AssetUploadComplete Low 334 NotTrusted Unencoded + { + AssetBlock Single + { UUID LLUUID } + { Type S8 } + { Success BOOL } + } } // Script on simulator asks dataserver if there are any email messages // waiting. { - EmailMessageRequest Low 335 Trusted Unencoded - { - DataBlock Single - { ObjectID LLUUID } - { FromAddress Variable 1 } - { Subject Variable 1 } - } + EmailMessageRequest Low 335 Trusted Unencoded + { + DataBlock Single + { ObjectID LLUUID } + { FromAddress Variable 1 } + { Subject Variable 1 } + } } // Dataserver gives simulator the oldest email message in the queue, along with // how many messages are left in the queue. And passes back the filter used to request emails. { - EmailMessageReply Low 336 Trusted Unencoded - { - DataBlock Single - { ObjectID LLUUID } - { More U32 } //U32 - { Time U32 } //U32 - { FromAddress Variable 1 } - { Subject Variable 1 } - { Data Variable 2 } - { MailFilter Variable 1 } - } + EmailMessageReply Low 336 Trusted Unencoded + { + DataBlock Single + { ObjectID LLUUID } + { More U32 } + { Time U32 } + { FromAddress Variable 1 } + { Subject Variable 1 } + { Data Variable 2 } + { MailFilter Variable 1 } + } } // Script on simulator sends mail to another script { - InternalScriptMail Medium 16 Trusted Unencoded - { - DataBlock Single - { From Variable 1 } - { To LLUUID } - { Subject Variable 1 } - { Body Variable 2 } - } + InternalScriptMail Medium 16 Trusted Unencoded + { + DataBlock Single + { From Variable 1 } + { To LLUUID } + { Subject Variable 1 } + { Body Variable 2 } + } } -// Script on simulator asks dataserver for information +// Script on simulator asks dataserver for information { - ScriptDataRequest Low 337 Trusted Unencoded - { - DataBlock Variable - { Hash U64 } - { RequestType S8 } - { Request Variable 2 } - } + ScriptDataRequest Low 337 Trusted Unencoded + { + DataBlock Variable + { Hash U64 } + { RequestType S8 } + { Request Variable 2 } + } } // Data server responds with data { - ScriptDataReply Low 338 Trusted Unencoded - { - DataBlock Variable - { Hash U64 } - { Reply Variable 2 } - } + ScriptDataReply Low 338 Trusted Unencoded + { + DataBlock Variable + { Hash U64 } + { Reply Variable 2 } + } } @@ -7464,26 +7525,25 @@ version 2.0 // CreateGroupRequest // viewer -> simulator -// simulator -> dataserver // reliable { - CreateGroupRequest Low 339 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - GroupData Single - { Name Variable 1 } // string - { Charter Variable 2 } // string - { ShowInList BOOL } - { InsigniaID LLUUID } - { MembershipFee S32 } // S32 - { OpenEnrollment BOOL } // BOOL (U8) - { AllowPublish BOOL } // whether profile is externally visible or not - { MaturePublish BOOL } // profile is "mature" - } + CreateGroupRequest Low 339 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + GroupData Single + { Name Variable 1 } // string + { Charter Variable 2 } // string + { ShowInList BOOL } + { InsigniaID LLUUID } + { MembershipFee S32 } + { OpenEnrollment BOOL } + { AllowPublish BOOL } // whether profile is externally visible or not + { MaturePublish BOOL } // profile is "mature" + } } // CreateGroupReply @@ -7491,17 +7551,17 @@ version 2.0 // simulator -> viewer // reliable { - CreateGroupReply Low 340 Trusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - ReplyData Single - { GroupID LLUUID } - { Success BOOL } - { Message Variable 1 } // string - } + CreateGroupReply Low 340 Trusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + ReplyData Single + { GroupID LLUUID } + { Success BOOL } + { Message Variable 1 } // string + } } // UpdateGroupInfo @@ -7509,73 +7569,73 @@ version 2.0 // simulator -> dataserver // reliable { - UpdateGroupInfo Low 341 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - GroupData Single - { GroupID LLUUID } - { Charter Variable 2 } // string - { ShowInList BOOL } - { InsigniaID LLUUID } - { MembershipFee S32 } - { OpenEnrollment BOOL } - { AllowPublish BOOL } - { MaturePublish BOOL } - } + UpdateGroupInfo Low 341 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + { Charter Variable 2 } // string + { ShowInList BOOL } + { InsigniaID LLUUID } + { MembershipFee S32 } + { OpenEnrollment BOOL } + { AllowPublish BOOL } + { MaturePublish BOOL } + } } // GroupRoleChanges // viewer -> simulator -> dataserver // reliable { - GroupRoleChanges Low 342 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { GroupID LLUUID } - } - { - RoleChange Variable - { RoleID LLUUID } - { MemberID LLUUID } - { Change U32 } - } + GroupRoleChanges Low 342 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { GroupID LLUUID } + } + { + RoleChange Variable + { RoleID LLUUID } + { MemberID LLUUID } + { Change U32 } + } } // JoinGroupRequest // viewer -> simulator -> dataserver // reliable { - JoinGroupRequest Low 343 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - GroupData Single - { GroupID LLUUID } - } + JoinGroupRequest Low 343 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + } } // JoinGroupReply // dataserver -> simulator -> viewer { - JoinGroupReply Low 344 Trusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - GroupData Single - { GroupID LLUUID } - { Success BOOL } - } + JoinGroupReply Low 344 Trusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + { Success BOOL } + } } @@ -7583,152 +7643,156 @@ version 2.0 // viewer -> simulator -> dataserver // reliable { - EjectGroupMemberRequest Low 345 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - GroupData Single - { GroupID LLUUID } - } - { - EjectData Variable - { EjecteeID LLUUID } - } + EjectGroupMemberRequest Low 345 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + } + { + EjectData Variable + { EjecteeID LLUUID } + } } // EjectGroupMemberReply // dataserver -> simulator -> viewer // reliable { - EjectGroupMemberReply Low 346 Trusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - GroupData Single - { GroupID LLUUID } - } - { - EjectData Single - { Success BOOL } - } + EjectGroupMemberReply Low 346 Trusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + } + { + EjectData Single + { Success BOOL } + } } // LeaveGroupRequest // viewer -> simulator -> dataserver // reliable { - LeaveGroupRequest Low 347 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - GroupData Single - { GroupID LLUUID } - } + LeaveGroupRequest Low 347 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + } } // LeaveGroupReply // dataserver -> simulator -> viewer { - LeaveGroupReply Low 348 Trusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - GroupData Single - { GroupID LLUUID } - { Success BOOL } - } + LeaveGroupReply Low 348 Trusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + { Success BOOL } + } } // InviteGroupRequest // viewer -> simulator -> dataserver // reliable { - InviteGroupRequest Low 349 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } // UUID of inviting agent - { SessionID LLUUID } - } - { - GroupData Single - { GroupID LLUUID } - } - { - InviteData Variable - { InviteeID LLUUID } - { RoleID LLUUID } - } + InviteGroupRequest Low 349 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } // UUID of inviting agent + { SessionID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + } + { + InviteData Variable + { InviteeID LLUUID } + { RoleID LLUUID } + } } // InviteGroupResponse // simulator -> dataserver // reliable { - InviteGroupResponse Low 350 Trusted Unencoded - { - InviteData Single - { AgentID LLUUID } - { InviteeID LLUUID } - { GroupID LLUUID } - { RoleID LLUUID } - { MembershipFee S32 } - } + InviteGroupResponse Low 350 Trusted Unencoded + { + InviteData Single + { AgentID LLUUID } + { InviteeID LLUUID } + { GroupID LLUUID } + { RoleID LLUUID } + { MembershipFee S32 } + } + { + GroupData Single + { GroupLimit S32 } // Extra block for the agent's group limit + } } // GroupProfileRequest // viewer-> simulator -> dataserver // reliable { - GroupProfileRequest Low 351 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - GroupData Single - { GroupID LLUUID } - } + GroupProfileRequest Low 351 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + } } // GroupProfileReply // dataserver -> simulator -> viewer // reliable { - GroupProfileReply Low 352 Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - GroupData Single - { GroupID LLUUID } - { Name Variable 1 } // string - { Charter Variable 2 } // string - { ShowInList BOOL } - { MemberTitle Variable 1 } // string - { PowersMask U64 } // U32 mask - { InsigniaID LLUUID } - { FounderID LLUUID } - { MembershipFee S32 } - { OpenEnrollment BOOL } // BOOL (U8) - { Money S32 } - { GroupMembershipCount S32 } - { GroupRolesCount S32 } - { AllowPublish BOOL } - { MaturePublish BOOL } - { OwnerRole LLUUID } - } + GroupProfileReply Low 352 Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + { Name Variable 1 } // string + { Charter Variable 2 } // string + { ShowInList BOOL } + { MemberTitle Variable 1 } // string + { PowersMask U64 } + { InsigniaID LLUUID } + { FounderID LLUUID } + { MembershipFee S32 } + { OpenEnrollment BOOL } + { Money S32 } + { GroupMembershipCount S32 } + { GroupRolesCount S32 } + { AllowPublish BOOL } + { MaturePublish BOOL } + { OwnerRole LLUUID } + } } // CurrentInterval = 0 => this period (week, day, etc.) @@ -7736,287 +7800,287 @@ version 2.0 // viewer -> simulator -> dataserver // reliable { - GroupAccountSummaryRequest Low 353 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { GroupID LLUUID } - } - { - MoneyData Single - { RequestID LLUUID } - { IntervalDays S32 } - { CurrentInterval S32 } - } + GroupAccountSummaryRequest Low 353 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { GroupID LLUUID } + } + { + MoneyData Single + { RequestID LLUUID } + { IntervalDays S32 } + { CurrentInterval S32 } + } } // dataserver -> simulator -> viewer // Reliable { - GroupAccountSummaryReply Low 354 Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { GroupID LLUUID } - } - { - MoneyData Single - { RequestID LLUUID } - { IntervalDays S32 } - { CurrentInterval S32 } - { StartDate Variable 1 } // string - { Balance S32 } - { TotalCredits S32 } - { TotalDebits S32 } - { ObjectTaxCurrent S32 } - { LightTaxCurrent S32 } - { LandTaxCurrent S32 } - { GroupTaxCurrent S32 } - { ParcelDirFeeCurrent S32 } - { ObjectTaxEstimate S32 } - { LightTaxEstimate S32 } - { LandTaxEstimate S32 } - { GroupTaxEstimate S32 } - { ParcelDirFeeEstimate S32 } - { NonExemptMembers S32 } - { LastTaxDate Variable 1 } // string - { TaxDate Variable 1 } // string - } + GroupAccountSummaryReply Low 354 Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { GroupID LLUUID } + } + { + MoneyData Single + { RequestID LLUUID } + { IntervalDays S32 } + { CurrentInterval S32 } + { StartDate Variable 1 } // string + { Balance S32 } + { TotalCredits S32 } + { TotalDebits S32 } + { ObjectTaxCurrent S32 } + { LightTaxCurrent S32 } + { LandTaxCurrent S32 } + { GroupTaxCurrent S32 } + { ParcelDirFeeCurrent S32 } + { ObjectTaxEstimate S32 } + { LightTaxEstimate S32 } + { LandTaxEstimate S32 } + { GroupTaxEstimate S32 } + { ParcelDirFeeEstimate S32 } + { NonExemptMembers S32 } + { LastTaxDate Variable 1 } // string + { TaxDate Variable 1 } // string + } } // Reliable { - GroupAccountDetailsRequest Low 355 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { GroupID LLUUID } - } - { - MoneyData Single - { RequestID LLUUID } - { IntervalDays S32 } - { CurrentInterval S32 } - } + GroupAccountDetailsRequest Low 355 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { GroupID LLUUID } + } + { + MoneyData Single + { RequestID LLUUID } + { IntervalDays S32 } + { CurrentInterval S32 } + } } // Reliable { - GroupAccountDetailsReply Low 356 Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { GroupID LLUUID } - } - { - MoneyData Single - { RequestID LLUUID } - { IntervalDays S32 } - { CurrentInterval S32 } - { StartDate Variable 1 } // string - } - { - HistoryData Variable - { Description Variable 1 } // string - { Amount S32 } - } + GroupAccountDetailsReply Low 356 Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { GroupID LLUUID } + } + { + MoneyData Single + { RequestID LLUUID } + { IntervalDays S32 } + { CurrentInterval S32 } + { StartDate Variable 1 } // string + } + { + HistoryData Variable + { Description Variable 1 } // string + { Amount S32 } + } } // Reliable { - GroupAccountTransactionsRequest Low 357 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { GroupID LLUUID } - } - { - MoneyData Single - { RequestID LLUUID } - { IntervalDays S32 } - { CurrentInterval S32 } - } + GroupAccountTransactionsRequest Low 357 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { GroupID LLUUID } + } + { + MoneyData Single + { RequestID LLUUID } + { IntervalDays S32 } + { CurrentInterval S32 } + } } // Reliable { - GroupAccountTransactionsReply Low 358 Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { GroupID LLUUID } - } - { - MoneyData Single - { RequestID LLUUID } - { IntervalDays S32 } - { CurrentInterval S32 } - { StartDate Variable 1 } // string - } - { - HistoryData Variable - { Time Variable 1 } // string - { User Variable 1 } // string - { Type S32 } - { Item Variable 1 } // string - { Amount S32 } - } + GroupAccountTransactionsReply Low 358 Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { GroupID LLUUID } + } + { + MoneyData Single + { RequestID LLUUID } + { IntervalDays S32 } + { CurrentInterval S32 } + { StartDate Variable 1 } // string + } + { + HistoryData Variable + { Time Variable 1 } // string + { User Variable 1 } // string + { Type S32 } + { Item Variable 1 } // string + { Amount S32 } + } } // GroupActiveProposalsRequest // viewer -> simulator -> dataserver //reliable { - GroupActiveProposalsRequest Low 359 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - GroupData Single - { GroupID LLUUID } - } - { - TransactionData Single - { TransactionID LLUUID } - } + GroupActiveProposalsRequest Low 359 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + } + { + TransactionData Single + { TransactionID LLUUID } + } } // GroupActiveProposalItemReply // dataserver -> simulator -> viewer // reliable { - GroupActiveProposalItemReply Low 360 Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { GroupID LLUUID } - } - { - TransactionData Single - { TransactionID LLUUID } - { TotalNumItems U32 } - } - { - ProposalData Variable - { VoteID LLUUID } - { VoteInitiator LLUUID } - { TerseDateID Variable 1 } // string - { StartDateTime Variable 1 } // string - { EndDateTime Variable 1 } // string - { AlreadyVoted BOOL } - { VoteCast Variable 1 } // string - { Majority F32 } - { Quorum S32 } - { ProposalText Variable 1 } // string - } + GroupActiveProposalItemReply Low 360 Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { GroupID LLUUID } + } + { + TransactionData Single + { TransactionID LLUUID } + { TotalNumItems U32 } + } + { + ProposalData Variable + { VoteID LLUUID } + { VoteInitiator LLUUID } + { TerseDateID Variable 1 } // string + { StartDateTime Variable 1 } // string + { EndDateTime Variable 1 } // string + { AlreadyVoted BOOL } + { VoteCast Variable 1 } // string + { Majority F32 } + { Quorum S32 } + { ProposalText Variable 1 } // string + } } // GroupVoteHistoryRequest // viewer -> simulator -> dataserver //reliable { - GroupVoteHistoryRequest Low 361 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - GroupData Single - { GroupID LLUUID } - } - { - TransactionData Single - { TransactionID LLUUID } - } + GroupVoteHistoryRequest Low 361 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + } + { + TransactionData Single + { TransactionID LLUUID } + } } // GroupVoteHistoryItemReply // dataserver -> simulator -> viewer // reliable { - GroupVoteHistoryItemReply Low 362 Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { GroupID LLUUID } - } - { - TransactionData Single - { TransactionID LLUUID } - { TotalNumItems U32 } - } - { - HistoryItemData Single - { VoteID LLUUID } - { TerseDateID Variable 1 } // string - { StartDateTime Variable 1 } // string - { EndDateTime Variable 1 } // string - { VoteInitiator LLUUID } - { VoteType Variable 1 } // string - { VoteResult Variable 1 } // string - { Majority F32 } - { Quorum S32 } - { ProposalText Variable 2 } // string - } - { - VoteItem Variable - { CandidateID LLUUID } - { VoteCast Variable 1 } // string - { NumVotes S32 } - } + GroupVoteHistoryItemReply Low 362 Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { GroupID LLUUID } + } + { + TransactionData Single + { TransactionID LLUUID } + { TotalNumItems U32 } + } + { + HistoryItemData Single + { VoteID LLUUID } + { TerseDateID Variable 1 } // string + { StartDateTime Variable 1 } // string + { EndDateTime Variable 1 } // string + { VoteInitiator LLUUID } + { VoteType Variable 1 } // string + { VoteResult Variable 1 } // string + { Majority F32 } + { Quorum S32 } + { ProposalText Variable 2 } // string + } + { + VoteItem Variable + { CandidateID LLUUID } + { VoteCast Variable 1 } // string + { NumVotes S32 } + } } // StartGroupProposal // viewer -> simulator -> dataserver // reliable { - StartGroupProposal Low 363 NotTrusted Zerocoded UDPDeprecated - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - ProposalData Single - { GroupID LLUUID } - { Quorum S32 } - { Majority F32 } // F32 - { Duration S32 } // S32, seconds - { ProposalText Variable 1 } // string - } + StartGroupProposal Low 363 NotTrusted Zerocoded UDPDeprecated + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ProposalData Single + { GroupID LLUUID } + { Quorum S32 } + { Majority F32 } + { Duration S32 } // seconds + { ProposalText Variable 1 } // string + } } // GroupProposalBallot // viewer -> simulator -> dataserver // reliable { - GroupProposalBallot Low 364 NotTrusted Unencoded UDPDeprecated - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - ProposalData Single - { ProposalID LLUUID } - { GroupID LLUUID } - { VoteCast Variable 1 } // string - } + GroupProposalBallot Low 364 NotTrusted Unencoded UDPDeprecated + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ProposalData Single + { ProposalID LLUUID } + { GroupID LLUUID } + { VoteCast Variable 1 } // string + } } // TallyVotes userserver -> dataserver // reliable { - TallyVotes Low 365 Trusted Unencoded + TallyVotes Low 365 Trusted Unencoded } @@ -8026,17 +8090,17 @@ version 2.0 // simulator -> dataserver // reliable { - GroupMembersRequest Low 366 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - GroupData Single - { GroupID LLUUID } - { RequestID LLUUID } - } + GroupMembersRequest Low 366 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + { RequestID LLUUID } + } } // GroupMembersReply @@ -8044,88 +8108,88 @@ version 2.0 // dataserver -> simulator // reliable { - GroupMembersReply Low 367 Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - } - { - GroupData Single - { GroupID LLUUID } - { RequestID LLUUID } - { MemberCount S32 } - } - { - MemberData Variable - { AgentID LLUUID } - { Contribution S32 } - { OnlineStatus Variable 1 } // string - { AgentPowers U64 } - { Title Variable 1 } // string - { IsOwner BOOL } - } + GroupMembersReply Low 367 Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + { RequestID LLUUID } + { MemberCount S32 } + } + { + MemberData Variable + { AgentID LLUUID } + { Contribution S32 } + { OnlineStatus Variable 1 } // string + { AgentPowers U64 } + { Title Variable 1 } // string + { IsOwner BOOL } + } } // used to switch an agent's currently active group. // viewer -> simulator -> dataserver -> AgentDataUpdate... { - ActivateGroup Low 368 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { GroupID LLUUID } - } + ActivateGroup Low 368 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { GroupID LLUUID } + } } // viewer -> simulator -> dataserver { - SetGroupContribution Low 369 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - Data Single - { GroupID LLUUID } - { Contribution S32 } - } + SetGroupContribution Low 369 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + Data Single + { GroupID LLUUID } + { Contribution S32 } + } } // viewer -> simulator -> dataserver { - SetGroupAcceptNotices Low 370 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - Data Single - { GroupID LLUUID } - { AcceptNotices BOOL } - } - { - NewData Single - { ListInProfile BOOL } - } + SetGroupAcceptNotices Low 370 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + Data Single + { GroupID LLUUID } + { AcceptNotices BOOL } + } + { + NewData Single + { ListInProfile BOOL } + } } // GroupRoleDataRequest // viewer -> simulator -> dataserver { - GroupRoleDataRequest Low 371 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - GroupData Single - { GroupID LLUUID } - { RequestID LLUUID } - } + GroupRoleDataRequest Low 371 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + { RequestID LLUUID } + } } @@ -8133,152 +8197,152 @@ version 2.0 // All role data for this group // dataserver -> simulator -> agent { - GroupRoleDataReply Low 372 Trusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - GroupData Single - { GroupID LLUUID } - { RequestID LLUUID } - { RoleCount S32 } - } - { - RoleData Variable - { RoleID LLUUID } - { Name Variable 1 } - { Title Variable 1 } - { Description Variable 1 } - { Powers U64 } - { Members U32 } - } + GroupRoleDataReply Low 372 Trusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + { RequestID LLUUID } + { RoleCount S32 } + } + { + RoleData Variable + { RoleID LLUUID } + { Name Variable 1 } + { Title Variable 1 } + { Description Variable 1 } + { Powers U64 } + { Members U32 } + } } // GroupRoleMembersRequest // viewer -> simulator -> dataserver { - GroupRoleMembersRequest Low 373 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - GroupData Single - { GroupID LLUUID } - { RequestID LLUUID } - } + GroupRoleMembersRequest Low 373 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + GroupData Single + { GroupID LLUUID } + { RequestID LLUUID } + } } // GroupRoleMembersReply // All role::member pairs for this group. // dataserver -> simulator -> agent { - GroupRoleMembersReply Low 374 Trusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { GroupID LLUUID } - { RequestID LLUUID } - { TotalPairs U32 } - } - { - MemberData Variable - { RoleID LLUUID } - { MemberID LLUUID } - } + GroupRoleMembersReply Low 374 Trusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { GroupID LLUUID } + { RequestID LLUUID } + { TotalPairs U32 } + } + { + MemberData Variable + { RoleID LLUUID } + { MemberID LLUUID } + } } // GroupTitlesRequest // viewer -> simulator -> dataserver { - GroupTitlesRequest Low 375 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { GroupID LLUUID } - { RequestID LLUUID } - } + GroupTitlesRequest Low 375 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { GroupID LLUUID } + { RequestID LLUUID } + } } // GroupTitlesReply // dataserver -> simulator -> viewer { - GroupTitlesReply Low 376 Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { GroupID LLUUID } - { RequestID LLUUID } - } - { - GroupData Variable - { Title Variable 1 } // string - { RoleID LLUUID } - { Selected BOOL } - } + GroupTitlesReply Low 376 Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { GroupID LLUUID } + { RequestID LLUUID } + } + { + GroupData Variable + { Title Variable 1 } // string + { RoleID LLUUID } + { Selected BOOL } + } } // GroupTitleUpdate // viewer -> simulator -> dataserver { - GroupTitleUpdate Low 377 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { GroupID LLUUID } - { TitleRoleID LLUUID } - } + GroupTitleUpdate Low 377 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { GroupID LLUUID } + { TitleRoleID LLUUID } + } } // GroupRoleUpdate // viewer -> simulator -> dataserver { - GroupRoleUpdate Low 378 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { GroupID LLUUID } - } - { - RoleData Variable - { RoleID LLUUID } - { Name Variable 1 } - { Description Variable 1 } - { Title Variable 1 } - { Powers U64 } - { UpdateType U8 } - } -} - + GroupRoleUpdate Low 378 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { GroupID LLUUID } + } + { + RoleData Variable + { RoleID LLUUID } + { Name Variable 1 } + { Description Variable 1 } + { Title Variable 1 } + { Powers U64 } + { UpdateType U8 } + } +} + // Request the members of the live help group needed for requesting agent. // userserver -> dataserver { - LiveHelpGroupRequest Low 379 Trusted Unencoded - { - RequestData Single - { RequestID LLUUID } - { AgentID LLUUID } - } + LiveHelpGroupRequest Low 379 Trusted Unencoded + { + RequestData Single + { RequestID LLUUID } + { AgentID LLUUID } + } } // Send down the group // dataserver -> userserver { - LiveHelpGroupReply Low 380 Trusted Unencoded - { - ReplyData Single - { RequestID LLUUID } - { GroupID LLUUID } - { Selection Variable 1 } // selection criteria all or active - } + LiveHelpGroupReply Low 380 Trusted Unencoded + { + ReplyData Single + { RequestID LLUUID } + { GroupID LLUUID } + { Selection Variable 1 } // selection criteria all or active + } } //----------------------------------------------------------------------------- @@ -8290,12 +8354,12 @@ version 2.0 // viewer -> simulator -> dataserver // reliable { - AgentWearablesRequest Low 381 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } + AgentWearablesRequest Low 381 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } } // AgentWearablesUpdate @@ -8304,19 +8368,19 @@ version 2.0 // reliable // NEVER from viewer to sim { - AgentWearablesUpdate Low 382 Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { SerialNum U32 } // U32, Increases every time the wearables change for a given agent. Used to avoid processing out of order packets. - } - { - WearableData Variable - { ItemID LLUUID } - { AssetID LLUUID } - { WearableType U8 } // U8, LLWearable::EWearType - } + AgentWearablesUpdate Low 382 Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { SerialNum U32 } // Increases every time the wearables change for a given agent. Used to avoid processing out of order packets. + } + { + WearableData Variable + { ItemID LLUUID } + { AssetID LLUUID } + { WearableType U8 } // LLWearable::EWearType + } } // @@ -8325,37 +8389,37 @@ version 2.0 // viewer->sim->dataserver // reliable { - AgentIsNowWearing Low 383 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - WearableData Variable - { ItemID LLUUID } - { WearableType U8 } - } + AgentIsNowWearing Low 383 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + WearableData Variable + { ItemID LLUUID } + { WearableType U8 } + } } - + // AgentCachedTexture // viewer queries for cached textures on dataserver (via simulator) // viewer -> simulator -> dataserver // reliable { - AgentCachedTexture Low 384 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { SerialNum S32 } - } - { - WearableData Variable - { ID LLUUID } - { TextureIndex U8 } - } + AgentCachedTexture Low 384 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { SerialNum S32 } + } + { + WearableData Variable + { ID LLUUID } + { TextureIndex U8 } + } } // AgentCachedTextureResponse @@ -8363,29 +8427,29 @@ version 2.0 // dataserver -> simulator -> viewer // reliable { - AgentCachedTextureResponse Low 385 Trusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { SerialNum S32 } - } - { - WearableData Variable - { TextureID LLUUID } - { TextureIndex U8 } - { HostName Variable 1 } - } + AgentCachedTextureResponse Low 385 Trusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { SerialNum S32 } + } + { + WearableData Variable + { TextureID LLUUID } + { TextureIndex U8 } + { HostName Variable 1 } + } } // Request an AgentDataUpdate without changing any agent data. { - AgentDataUpdateRequest Low 386 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } + AgentDataUpdateRequest Low 386 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } } // AgentDataUpdate @@ -8394,17 +8458,17 @@ version 2.0 // dataserver -> simulator -> viewer // reliable { - AgentDataUpdate Low 387 Trusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { FirstName Variable 1 } // string - { LastName Variable 1 } // string - { GroupTitle Variable 1 } // string - { ActiveGroupID LLUUID } // active group - { GroupPowers U64 } - { GroupName Variable 1 } // string - } + AgentDataUpdate Low 387 Trusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { FirstName Variable 1 } // string + { LastName Variable 1 } // string + { GroupTitle Variable 1 } // string + { ActiveGroupID LLUUID } // active group + { GroupPowers U64 } + { GroupName Variable 1 } // string + } } @@ -8412,35 +8476,35 @@ version 2.0 // This is a bunch of group data that needs to be appropriatly routed based on presence info. // dataserver -> simulator { - GroupDataUpdate Low 388 Trusted Zerocoded - { - AgentGroupData Variable - { AgentID LLUUID } - { GroupID LLUUID } - { AgentPowers U64 } - { GroupTitle Variable 1 } - } + GroupDataUpdate Low 388 Trusted Zerocoded + { + AgentGroupData Variable + { AgentID LLUUID } + { GroupID LLUUID } + { AgentPowers U64 } + { GroupTitle Variable 1 } + } } // AgentGroupDataUpdate -// Updates a viewer or simulator's impression of the groups an agent is in. +// Updates a viewer or simulator's impression of the groups an agent is in. // dataserver -> simulator -> viewer // reliable { - AgentGroupDataUpdate Low 389 Trusted Zerocoded UDPDeprecated - { - AgentData Single - { AgentID LLUUID } - } - { - GroupData Variable - { GroupID LLUUID } - { GroupPowers U64 } - { AcceptNotices BOOL } - { GroupInsigniaID LLUUID } - { Contribution S32 } - { GroupName Variable 1 } // string - } + AgentGroupDataUpdate Low 389 Trusted Zerocoded UDPDeprecated + { + AgentData Single + { AgentID LLUUID } + } + { + GroupData Variable + { GroupID LLUUID } + { GroupPowers U64 } + { AcceptNotices BOOL } + { GroupInsigniaID LLUUID } + { Contribution S32 } + { GroupName Variable 1 } // string + } } // AgentDropGroup @@ -8449,12 +8513,12 @@ version 2.0 // dataserver -> userserver // reliable { - AgentDropGroup Low 390 Trusted Zerocoded UDPDeprecated - { - AgentData Single - { AgentID LLUUID } - { GroupID LLUUID } - } + AgentDropGroup Low 390 Trusted Zerocoded UDPDeprecated + { + AgentData Single + { AgentID LLUUID } + { GroupID LLUUID } + } } // LogTextMessage @@ -8462,16 +8526,16 @@ version 2.0 // chat and IM log table. // Sent from userserver (IM logging) and simulator (chat logging). { - LogTextMessage Low 391 Trusted Zerocoded - { - DataBlock Variable - { FromAgentId LLUUID } - { ToAgentId LLUUID } - { GlobalX F64 } - { GlobalY F64 } - { Time U32 } // utc seconds since epoch - { Message Variable 2 } // string - } + LogTextMessage Low 391 Trusted Zerocoded + { + DataBlock Variable + { FromAgentId LLUUID } + { ToAgentId LLUUID } + { GlobalX F64 } + { GlobalY F64 } + { Time U32 } // utc seconds since epoch + { Message Variable 2 } // string + } } // ViewerEffect @@ -8480,21 +8544,21 @@ version 2.0 // sim-->viewer (multiple effects that can be seen by viewer) // the AgentData block used for authentication for viewer-->sim messages { - ViewerEffect Medium 17 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - Effect Variable - { ID LLUUID } // unique UUID of the effect - { AgentID LLUUID } // yes, pack AgentID again (note this block is variable) - { Type U8 } // Type of the effect - { Duration F32 } // F32 time (seconds) - { Color Fixed 4 } // Color4U - { TypeData Variable 1 } // Type specific data - } + ViewerEffect Medium 17 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + Effect Variable + { ID LLUUID } // unique UUID of the effect + { AgentID LLUUID } // yes, pack AgentID again (note this block is variable) + { Type U8 } // Type of the effect + { Duration F32 } // F32 time (seconds) + { Color Fixed 4 } // Color4U + { TypeData Variable 1 } // Type specific data + } } @@ -8502,12 +8566,12 @@ version 2.0 // Sent to establish a trust relationship between two components. // Only sent in response to a DenyTrustedCircuit message. { - CreateTrustedCircuit Low 392 NotTrusted Unencoded - { - DataBlock Single - { EndPointID LLUUID } - { Digest Fixed 32 } // 32 hex digits == 1 MD5 Digest - } + CreateTrustedCircuit Low 392 NotTrusted Unencoded + { + DataBlock Single + { EndPointID LLUUID } + { Digest Fixed 32 } // 32 hex digits == 1 MD5 Digest + } } // DenyTrustedCircuit @@ -8517,97 +8581,97 @@ version 2.0 // - the reception of a trusted message on a non-trusted circuit // This allows us to re-auth a circuit if it gets closed due to timeouts or network failures. { - DenyTrustedCircuit Low 393 NotTrusted Unencoded - { - DataBlock Single - { EndPointID LLUUID } - } + DenyTrustedCircuit Low 393 NotTrusted Unencoded + { + DataBlock Single + { EndPointID LLUUID } + } } // RequestTrustedCircuit // If the destination does not trust the sender, a Deny is sent back. { - RequestTrustedCircuit Low 394 Trusted Unencoded -} - - -{ - RezSingleAttachmentFromInv Low 395 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - ObjectData Single - { ItemID LLUUID } - { OwnerID LLUUID } - { AttachmentPt U8 } // 0 for default - { ItemFlags U32 } - { GroupMask U32 } - { EveryoneMask U32 } - { NextOwnerMask U32 } - { Name Variable 1 } - { Description Variable 1 } - } -} - -{ - RezMultipleAttachmentsFromInv Low 396 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - HeaderData Single - { CompoundMsgID LLUUID } // All messages a single "compound msg" must have the same id - { TotalObjects U8 } - { FirstDetachAll BOOL } - } - { - ObjectData Variable // 1 to 4 of these per packet - { ItemID LLUUID } - { OwnerID LLUUID } - { AttachmentPt U8 } // 0 for default - { ItemFlags U32 } - { GroupMask U32 } - { EveryoneMask U32 } - { NextOwnerMask U32 } - { Name Variable 1 } - { Description Variable 1 } - } -} - - -{ - DetachAttachmentIntoInv Low 397 NotTrusted Unencoded - { - ObjectData Single - { AgentID LLUUID } - { ItemID LLUUID } - } + RequestTrustedCircuit Low 394 Trusted Unencoded +} + + +{ + RezSingleAttachmentFromInv Low 395 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ObjectData Single + { ItemID LLUUID } + { OwnerID LLUUID } + { AttachmentPt U8 } // 0 for default + { ItemFlags U32 } + { GroupMask U32 } + { EveryoneMask U32 } + { NextOwnerMask U32 } + { Name Variable 1 } + { Description Variable 1 } + } +} + +{ + RezMultipleAttachmentsFromInv Low 396 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + HeaderData Single + { CompoundMsgID LLUUID } // All messages a single "compound msg" must have the same id + { TotalObjects U8 } + { FirstDetachAll BOOL } + } + { + ObjectData Variable // 1 to 4 of these per packet + { ItemID LLUUID } + { OwnerID LLUUID } + { AttachmentPt U8 } // 0 for default + { ItemFlags U32 } + { GroupMask U32 } + { EveryoneMask U32 } + { NextOwnerMask U32 } + { Name Variable 1 } + { Description Variable 1 } + } +} + + +{ + DetachAttachmentIntoInv Low 397 NotTrusted Unencoded + { + ObjectData Single + { AgentID LLUUID } + { ItemID LLUUID } + } } // Viewer -> Sim // Used in "Make New Outfit" { - CreateNewOutfitAttachments Low 398 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - HeaderData Single - { NewFolderID LLUUID } - } - { - ObjectData Variable - { OldItemID LLUUID } - { OldFolderID LLUUID } - } + CreateNewOutfitAttachments Low 398 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + HeaderData Single + { NewFolderID LLUUID } + } + { + ObjectData Variable + { OldItemID LLUUID } + { OldFolderID LLUUID } + } } //----------------------------------------------------------------------------- @@ -8615,40 +8679,40 @@ version 2.0 //----------------------------------------------------------------------------- { - UserInfoRequest Low 399 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } + UserInfoRequest Low 399 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } } { - UserInfoReply Low 400 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - UserData Single - { IMViaEMail BOOL } - { DirectoryVisibility Variable 1 } - { EMail Variable 2 } - } + UserInfoReply Low 400 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + UserData Single + { IMViaEMail BOOL } + { DirectoryVisibility Variable 1 } + { EMail Variable 2 } + } } { - UpdateUserInfo Low 401 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - UserData Single - { IMViaEMail BOOL } - { DirectoryVisibility Variable 1 } - } + UpdateUserInfo Low 401 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + UserData Single + { IMViaEMail BOOL } + { DirectoryVisibility Variable 1 } + } } @@ -8660,44 +8724,44 @@ version 2.0 // spaceserver -> sim // tell a particular simulator to rename a parcel { - ParcelRename Low 402 Trusted Unencoded - { - ParcelData Variable - { ParcelID LLUUID } - { NewName Variable 1 } // string - } + ParcelRename Low 402 Trusted Unencoded + { + ParcelData Variable + { ParcelID LLUUID } + { NewName Variable 1 } // string + } } // sim -> viewer // initiate upload. primarily used for uploading raw files. { - InitiateDownload Low 403 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - } - { - FileData Single - { SimFilename Variable 1 } // string - { ViewerFilename Variable 1 } // string - } + InitiateDownload Low 403 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + } + { + FileData Single + { SimFilename Variable 1 } // string + { ViewerFilename Variable 1 } // string + } } // Generalized system message. Each Requst has its own protocol for // the StringData block format and contents. { SystemMessage Low 404 Trusted Zerocoded - { - MethodData Single - { Method Variable 1 } - { Invoice LLUUID } - { Digest Fixed 32 } // 32 hex digits == 1 MD5 Digest - } - { - ParamList Variable - { Parameter Variable 1 } - } + { + MethodData Single + { Method Variable 1 } + { Invoice LLUUID } + { Digest Fixed 32 } // 32 hex digits == 1 MD5 Digest + } + { + ParamList Variable + { Parameter Variable 1 } + } } @@ -8711,33 +8775,33 @@ version 2.0 // of all map layers and NULL-layer sims. // Returns: MapLayerReply and MapBlockReply { - MapLayerRequest Low 405 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { Flags U32 } - { EstateID U32 } // filled in on sim - { Godlike BOOL } // filled in on sim - } + MapLayerRequest Low 405 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { Flags U32 } + { EstateID U32 } // filled in on sim + { Godlike BOOL } // filled in on sim + } } // sim -> viewer { - MapLayerReply Low 406 Trusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { Flags U32 } - } - { - LayerData Variable - { Left U32 } - { Right U32 } - { Top U32 } - { Bottom U32 } - { ImageID LLUUID } - } + MapLayerReply Low 406 Trusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { Flags U32 } + } + { + LayerData Variable + { Left U32 } + { Right U32 } + { Top U32 } + { Bottom U32 } + { ImageID LLUUID } + } } // viewer -> sim @@ -8745,22 +8809,22 @@ version 2.0 // of the sims in a specified region. // Returns: MapBlockReply { - MapBlockRequest Low 407 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { Flags U32 } - { EstateID U32 } // filled in on sim - { Godlike BOOL } // filled in on sim - } - { - PositionData Single - { MinX U16 } // in region-widths - { MaxX U16 } // in region-widths - { MinY U16 } // in region-widths - { MaxY U16 } // in region-widths - } + MapBlockRequest Low 407 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { Flags U32 } + { EstateID U32 } // filled in on sim + { Godlike BOOL } // filled in on sim + } + { + PositionData Single + { MinX U16 } // in region-widths + { MaxX U16 } // in region-widths + { MinY U16 } // in region-widths + { MaxY U16 } // in region-widths + } } // viewer -> sim @@ -8768,40 +8832,40 @@ version 2.0 // of the sims with a given name. // Returns: MapBlockReply { - MapNameRequest Low 408 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { Flags U32 } - { EstateID U32 } // filled in on sim - { Godlike BOOL } // filled in on sim - } - { - NameData Single - { Name Variable 1 } // string - } + MapNameRequest Low 408 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { Flags U32 } + { EstateID U32 } // filled in on sim + { Godlike BOOL } // filled in on sim + } + { + NameData Single + { Name Variable 1 } // string + } } // sim -> viewer { - MapBlockReply Low 409 Trusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { Flags U32 } - } - { - Data Variable - { X U16 } // in region-widths - { Y U16 } // in region-widths - { Name Variable 1 } // string - { Access U8 } // PG, mature, etc. - { RegionFlags U32 } - { WaterHeight U8 } // meters - { Agents U8 } - { MapImageID LLUUID } - } + MapBlockReply Low 409 Trusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { Flags U32 } + } + { + Data Variable + { X U16 } // in region-widths + { Y U16 } // in region-widths + { Name Variable 1 } // string + { Access U8 } // PG, mature, etc. + { RegionFlags U32 } + { WaterHeight U8 } // meters + { Agents U8 } + { MapImageID LLUUID } + } } // viewer -> sim @@ -8810,43 +8874,43 @@ version 2.0 // Used for Telehubs, Agents, Events, Popular Places, etc. // Returns: MapBlockReply { - MapItemRequest Low 410 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { Flags U32 } - { EstateID U32 } // filled in on sim - { Godlike BOOL } // filled in on sim - } - { - RequestData Single - { ItemType U32 } - { RegionHandle U64 } // filled in on sim - } + MapItemRequest Low 410 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { Flags U32 } + { EstateID U32 } // filled in on sim + { Godlike BOOL } // filled in on sim + } + { + RequestData Single + { ItemType U32 } + { RegionHandle U64 } // filled in on sim + } } // sim -> viewer { - MapItemReply Low 411 Trusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { Flags U32 } - } - { - RequestData Single - { ItemType U32 } - } - { - Data Variable - { X U32 } // global position - { Y U32 } // global position - { ID LLUUID } // identifier id - { Extra S32 } // extra information - { Extra2 S32 } // extra information - { Name Variable 1 } // identifier string - } + MapItemReply Low 411 Trusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { Flags U32 } + } + { + RequestData Single + { ItemType U32 } + } + { + Data Variable + { X U32 } // global position + { Y U32 } // global position + { ID LLUUID } // identifier id + { Extra S32 } // extra information + { Extra2 S32 } // extra information + { Name Variable 1 } // identifier string + } } //----------------------------------------------------------------------------- @@ -8854,21 +8918,21 @@ version 2.0 //----------------------------------------------------------------------------- // reliable { - SendPostcard Low 412 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - { AssetID LLUUID } - { PosGlobal LLVector3d } // Where snapshot was taken - { To Variable 1 } // dest email address(es) - { From Variable 1 } // src email address(es) - { Name Variable 1 } // src name - { Subject Variable 1 } // mail subject - { Msg Variable 2 } // message text - { AllowPublish BOOL } // Allow publishing on the web. - { MaturePublish BOOL } // profile is "mature" - } + SendPostcard Low 412 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { AssetID LLUUID } + { PosGlobal LLVector3d } // Where snapshot was taken + { To Variable 1 } // dest email address(es) + { From Variable 1 } // src email address(es) + { Name Variable 1 } // src name + { Subject Variable 1 } // mail subject + { Msg Variable 2 } // message text + { AllowPublish BOOL } // Allow publishing on the web. + { MaturePublish BOOL } // profile is "mature" + } } // RPC messages @@ -8877,11 +8941,11 @@ version 2.0 { RpcChannelRequest Low 413 Trusted Unencoded { - DataBlock Single - { GridX U32 } - { GridY U32 } - { TaskID LLUUID } - { ItemID LLUUID } + DataBlock Single + { GridX U32 } + { GridY U32 } + { TaskID LLUUID } + { ItemID LLUUID } } } @@ -8891,9 +8955,9 @@ version 2.0 { RpcChannelReply Low 414 Trusted Unencoded { - DataBlock Single + DataBlock Single { TaskID LLUUID } - { ItemID LLUUID } + { ItemID LLUUID } { ChannelID LLUUID } } } @@ -8903,175 +8967,175 @@ version 2.0 // RpcScriptRequestInboundForward: spaceserver -> simulator // reply: simulator -> rpcserver { - RpcScriptRequestInbound Low 415 NotTrusted Unencoded - { - TargetBlock Single - { GridX U32 } - { GridY U32 } - } - { - DataBlock Single - { TaskID LLUUID } - { ItemID LLUUID } - { ChannelID LLUUID } - { IntValue U32 } - { StringValue Variable 2 } // string - } + RpcScriptRequestInbound Low 415 NotTrusted Unencoded + { + TargetBlock Single + { GridX U32 } + { GridY U32 } + } + { + DataBlock Single + { TaskID LLUUID } + { ItemID LLUUID } + { ChannelID LLUUID } + { IntValue U32 } + { StringValue Variable 2 } // string + } } // spaceserver -> simulator { - RpcScriptRequestInboundForward Low 416 Trusted Unencoded UDPDeprecated - { - DataBlock Single - { RPCServerIP IPADDR } - { RPCServerPort IPPORT } - { TaskID LLUUID } - { ItemID LLUUID } - { ChannelID LLUUID } - { IntValue U32 } - { StringValue Variable 2 } // string - } + RpcScriptRequestInboundForward Low 416 Trusted Unencoded UDPDeprecated + { + DataBlock Single + { RPCServerIP IPADDR } + { RPCServerPort IPPORT } + { TaskID LLUUID } + { ItemID LLUUID } + { ChannelID LLUUID } + { IntValue U32 } + { StringValue Variable 2 } // string + } } // simulator -> rpcserver // Not trusted because trust establishment doesn't work here. { - RpcScriptReplyInbound Low 417 NotTrusted Unencoded - { - DataBlock Single - { TaskID LLUUID } - { ItemID LLUUID } - { ChannelID LLUUID } - { IntValue U32 } - { StringValue Variable 2 } // string - } + RpcScriptReplyInbound Low 417 NotTrusted Unencoded + { + DataBlock Single + { TaskID LLUUID } + { ItemID LLUUID } + { ChannelID LLUUID } + { IntValue U32 } + { StringValue Variable 2 } // string + } } // ScriptMailRegistration // Simulator -> dataserver { - ScriptMailRegistration Low 418 Trusted Unencoded - { - DataBlock Single - { TargetIP Variable 1 } // String IP - { TargetPort IPPORT } - { TaskID LLUUID } - { Flags U32 } - } + ScriptMailRegistration Low 418 Trusted Unencoded + { + DataBlock Single + { TargetIP Variable 1 } // String IP + { TargetPort IPPORT } + { TaskID LLUUID } + { Flags U32 } + } } // ParcelMediaCommandMessage // Sends a parcel media command { - ParcelMediaCommandMessage Low 419 Trusted Unencoded - { - CommandBlock Single - { Flags U32 } - { Command U32 } - { Time F32 } - } + ParcelMediaCommandMessage Low 419 Trusted Unencoded + { + CommandBlock Single + { Flags U32 } + { Command U32 } + { Time F32 } + } } // ParcelMediaUpdate // Sends a parcel media update to a single user // For global updates use the parcel manager. { - ParcelMediaUpdate Low 420 Trusted Unencoded - { - DataBlock Single - { MediaURL Variable 1 } // string - { MediaID LLUUID } - { MediaAutoScale U8 } - } - { - DataBlockExtended Single - { MediaType Variable 1 } - { MediaDesc Variable 1 } - { MediaWidth S32 } - { MediaHeight S32 } - { MediaLoop U8 } - } + ParcelMediaUpdate Low 420 Trusted Unencoded + { + DataBlock Single + { MediaURL Variable 1 } // string + { MediaID LLUUID } + { MediaAutoScale U8 } + } + { + DataBlockExtended Single + { MediaType Variable 1 } + { MediaDesc Variable 1 } + { MediaWidth S32 } + { MediaHeight S32 } + { MediaLoop U8 } + } } // LandStatRequest // Sent by the viewer to request collider/script information for a parcel { - LandStatRequest Low 421 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - RequestData Single - { ReportType U32 } - { RequestFlags U32 } - { Filter Variable 1 } - { ParcelLocalID S32 } - } + LandStatRequest Low 421 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + RequestData Single + { ReportType U32 } + { RequestFlags U32 } + { Filter Variable 1 } + { ParcelLocalID S32 } + } } // LandStatReply // Sent by the simulator in response to LandStatRequest { - LandStatReply Low 422 Trusted Unencoded UDPDeprecated - { - RequestData Single - { ReportType U32 } - { RequestFlags U32 } - { TotalObjectCount U32 } - } - { - ReportData Variable - { TaskLocalID U32 } - { TaskID LLUUID } - { LocationX F32 } - { LocationY F32 } - { LocationZ F32 } - { Score F32 } - { TaskName Variable 1 } - { OwnerName Variable 1 } - } + LandStatReply Low 422 Trusted Unencoded UDPDeprecated + { + RequestData Single + { ReportType U32 } + { RequestFlags U32 } + { TotalObjectCount U32 } + } + { + ReportData Variable + { TaskLocalID U32 } + { TaskID LLUUID } + { LocationX F32 } + { LocationY F32 } + { LocationZ F32 } + { Score F32 } + { TaskName Variable 1 } + { OwnerName Variable 1 } + } } // Generic Error -- this is used for sending an error message // to a UDP recipient. The lowest common denominator is to at least // log the message. More sophisticated receivers can do something -// smarter, for example, a money transaction failure can put up a +// smarter, for example, a money transaction failure can put up a // more user visible UI widget. { - Error Low 423 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } // will forward to agentid if coming from trusted circuit - } - { - Data Single - { Code S32 } // matches http status codes - { Token Variable 1 } // some specific short string based message - { ID LLUUID } // the transactionid/uniqueid/sessionid whatever. - { System Variable 1 } // The hierarchical path to the system, eg, "message/handler" - { Message Variable 2 } // Human readable message - { Data Variable 2 } // Binary serialized LLSD for extra info. - } + Error Low 423 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } // will forward to agentid if coming from trusted circuit + } + { + Data Single + { Code S32 } // matches http status codes + { Token Variable 1 } // some specific short string based message + { ID LLUUID } // the transactionid/uniqueid/sessionid whatever. + { System Variable 1 } // The hierarchical path to the system, eg, "message/handler" + { Message Variable 2 } // Human readable message + { Data Variable 2 } // Binary serialized LLSD for extra info. + } } // ObjectIncludeInSearch // viewer -> simulator { - ObjectIncludeInSearch Low 424 NotTrusted Unencoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - ObjectData Variable - { ObjectLocalID U32 } - { IncludeInSearch BOOL } - } + ObjectIncludeInSearch Low 424 NotTrusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + ObjectData Variable + { ObjectLocalID U32 } + { IncludeInSearch BOOL } + } } @@ -9079,57 +9143,145 @@ version 2.0 // to rez an object out of inventory back to its position before it // last moved into the inventory { - RezRestoreToWorld Low 425 NotTrusted Unencoded UDPDeprecated - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - InventoryData Single - { ItemID LLUUID } - { FolderID LLUUID } - { CreatorID LLUUID } // permissions - { OwnerID LLUUID } // permissions - { GroupID LLUUID } // permissions - { BaseMask U32 } // permissions - { OwnerMask U32 } // permissions - { GroupMask U32 } // permissions - { EveryoneMask U32 } // permissions - { NextOwnerMask U32 } // permissions - { GroupOwned BOOL } // permissions - { TransactionID LLUUID } - { Type S8 } - { InvType S8 } - { Flags U32 } - { SaleType U8 } - { SalePrice S32 } - { Name Variable 1 } - { Description Variable 1 } - { CreationDate S32 } - { CRC U32 } - } + RezRestoreToWorld Low 425 NotTrusted Unencoded UDPDeprecated + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + InventoryData Single + { ItemID LLUUID } + { FolderID LLUUID } + { CreatorID LLUUID } // permissions + { OwnerID LLUUID } // permissions + { GroupID LLUUID } // permissions + { BaseMask U32 } // permissions + { OwnerMask U32 } // permissions + { GroupMask U32 } // permissions + { EveryoneMask U32 } // permissions + { NextOwnerMask U32 } // permissions + { GroupOwned BOOL } // permissions + { TransactionID LLUUID } + { Type S8 } + { InvType S8 } + { Flags U32 } + { SaleType U8 } + { SalePrice S32 } + { Name Variable 1 } + { Description Variable 1 } + { CreationDate S32 } + { CRC U32 } + } } // Link inventory { - LinkInventoryItem Low 426 NotTrusted Zerocoded - { - AgentData Single - { AgentID LLUUID } - { SessionID LLUUID } - } - { - InventoryBlock Single - { CallbackID U32 } // Async Response - { FolderID LLUUID } - { TransactionID LLUUID } // Going to become TransactionID - { OldItemID LLUUID } - { Type S8 } - { InvType S8 } - { Name Variable 1 } - { Description Variable 1 } - - } + LinkInventoryItem Low 426 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + InventoryBlock Single + { CallbackID U32 } // Async Response + { FolderID LLUUID } + { TransactionID LLUUID } // Going to become TransactionID + { OldItemID LLUUID } + { Type S8 } + { InvType S8 } + { Name Variable 1 } + { Description Variable 1 } + + } +} + +// RetrieveIMsExtended - extended version of RetrieveInstantMessages, +// used to get instant messages that were persisted out to the database while the user was offline +// sent between the simulator and dataserver +{ + RetrieveIMsExtended Low 427 Trusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { IsPremium BOOL } + } +} + +// JoinGroupRequestExtended +// Extends JoinGroupRequest from viewer and passed to dataserver +// simulator -> dataserver +// reliable +{ + JoinGroupRequestExtended Low 428 Trusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { GroupLimit S32 } + } + { + GroupData Single + { GroupID LLUUID } + } +} + +// CreateGroupRequestExtended +// simulator -> dataserver, extends data from CreateGroupRequest +// reliable +{ + CreateGroupRequestExtended Low 429 Trusted Unencoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + { GroupLimit S32 } + } + { + GroupData Single + { Name Variable 1 } // string + { Charter Variable 2 } // string + { ShowInList BOOL } + { InsigniaID LLUUID } + { MembershipFee S32 } + { OpenEnrollment BOOL } + { AllowPublish BOOL } // whether profile is externally visible or not + { MaturePublish BOOL } // profile is "mature" + } +} + +// viewer -> simulator +// GameControlInput - input from game controller +// The main payload of this message is split into two Variable chunks: +// +// AxisData = list of {Index:Value} pairs. Value is an S16 that maps to range [-1, 1] +// ButtonData = list of indices of pressed buttons +// +// Any Axis ommitted from the message is assumed by the receiving Simulator to be unchanged +// from its previously received value. +// +// Any Button omitted from the message is assumed by the receiving Simulator to be unpressed. +// +// GameControlInput messages are sent unreliably, but when input changes stop the last +// message will be resent at a ever increasing period to make sure the server receives it. +// +{ + GameControlInput High 32 NotTrusted Zerocoded + { + AgentData Single + { AgentID LLUUID } + { SessionID LLUUID } + } + { + AxisData Variable + { Index U8 } + { Value S16 } + } + { + ButtonData Variable + { Data Variable 1 } + } } diff --git a/scripts/messages/message_template.msg.sha1 b/scripts/messages/message_template.msg.sha1 index efa5f3cf48..baa4f3f12b 100755 --- a/scripts/messages/message_template.msg.sha1 +++ b/scripts/messages/message_template.msg.sha1 @@ -1 +1 @@ -d7915d67467e59287857630bd89bf9529d065199
\ No newline at end of file +aaecaf01b6954c156662f572dc3ecaf26de0ca67
\ No newline at end of file |