# Conflicts:
#	indra/cmake/LLPhysicsExtensions.cmake
#	indra/newview/llvoicewebrtc.cpp
master
Ansariel 2025-11-17 23:26:11 +01:00
commit 8a55580fc9
93 changed files with 1740 additions and 715 deletions

View File

@ -265,7 +265,7 @@ jobs:
- name: Upload executable
if: steps.build.outputs.viewer_app
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v5
with:
name: "${{ steps.build.outputs.artifact }}-app"
path: |
@ -275,13 +275,13 @@ jobs:
# artifact for that too.
- name: Upload symbol file
if: steps.build.outputs.symbolfile
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v5
with:
name: "${{ steps.build.outputs.artifact }}-symbols"
path: ${{ steps.build.outputs.symbolfile }}
- name: Upload metadata
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v5
with:
name: "${{ steps.build.outputs.artifact }}-metadata"
# emitted by build.sh, possibly multiple lines
@ -289,7 +289,7 @@ jobs:
${{ steps.build.outputs.metadata }}
- name: Upload physics package
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v5
# should only be set for viewer-private
if: matrix.configuration == 'Release' && steps.build.outputs.physicstpv
with:
@ -369,13 +369,13 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Download viewer exe
uses: actions/download-artifact@v5
uses: actions/download-artifact@v6
with:
name: Windows-app
path: _artifacts
- name: Download Windows Symbols
if: env.BUGSPLAT_USER && env.BUGSPLAT_PASS
uses: actions/download-artifact@v5
uses: actions/download-artifact@v6
with:
name: Windows-symbols
- name: Extract viewer pdb
@ -405,7 +405,7 @@ jobs:
steps:
- name: Download Mac Symbols
if: env.BUGSPLAT_USER && env.BUGSPLAT_PASS
uses: actions/download-artifact@v5
uses: actions/download-artifact@v6
with:
name: macOS-symbols
- name: Post Mac symbols
@ -425,11 +425,11 @@ jobs:
runs-on: ubuntu-latest
if: needs.setup.outputs.release_run
steps:
- uses: actions/download-artifact@v5
- uses: actions/download-artifact@v6
with:
pattern: "*-installer"
- uses: actions/download-artifact@v5
- uses: actions/download-artifact@v6
with:
pattern: "*-metadata"

View File

@ -482,7 +482,7 @@ jobs:
dumpSyms: false
- name: Publish artifacts
if: runner.os == 'Windows'
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v5
with:
name: ${{ env.FS_RELEASE_TYPE }}-${{ matrix.os }}-${{ matrix.variant }}-${{ matrix.grid }}-artifacts.zip
path: |
@ -491,7 +491,7 @@ jobs:
- name: publish Linux artifacts
if: runner.os == 'Linux'
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v5
with:
name: ${{ env.FS_RELEASE_TYPE }}-${{ matrix.os }}-${{ matrix.variant }}-${{matrix.grid}}-artifacts.zip
path: |
@ -500,7 +500,7 @@ jobs:
- name: publish MacOS artifacts
if: runner.os == 'macOS'
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v5
with:
name: ${{ env.FS_RELEASE_TYPE }}-${{ matrix.os }}-${{ matrix.variant }}-${{matrix.grid}}-artifacts.zip
path: |
@ -529,7 +529,7 @@ jobs:
run: pip install discord-webhook
- name: Download artifacts
uses: actions/download-artifact@v5
uses: actions/download-artifact@v6
id: download
with:
path: to_deploy
@ -581,7 +581,7 @@ jobs:
# Upload Build Info Artifact (note that this file is expected to be identical for each matrix run, so items like OS and VARIANT cannot be in this file.)
- name: Upload Tag Info
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v5
with:
name: build_info
path: build_info.json

View File

@ -62,7 +62,7 @@ jobs:
files_json=$(ls setup_exe_files | jq -R . | jq -s -c .)
echo "setup_files=$files_json" >> $GITHUB_OUTPUT
- name: Upload Setup.exe Files
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v5
with:
name: setup-exe-files
path: setup_exe_files/
@ -86,7 +86,7 @@ jobs:
shell: bash
- name: Download Setup.exe Files Artifact
uses: actions/download-artifact@v5
uses: actions/download-artifact@v6
with:
name: setup-exe-files
path: setup_exe_files
@ -97,7 +97,7 @@ jobs:
shell: bash
# - name: Upload unsigned artifact
# id: upload-unsigned-artifact
# uses: actions/upload-artifact@v4
# uses: actions/upload-artifact@v5
# with:
# name: unsigned-artifact-${{ matrix.file }}
# path: to_sign/${{ matrix.file }}
@ -115,7 +115,7 @@ jobs:
# wait-for-completion: true
# output-artifact-directory: 'application-signed'
- name: Azure Trusted Signing
uses: azure/trusted-signing-action@v0.5.9
uses: azure/trusted-signing-action@v0.5.10
with:
azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }}
azure-client-id: ${{ secrets.AZURE_CLIENT_ID }}
@ -129,14 +129,14 @@ jobs:
files-folder-filter: exe
# - name: Upload signed artifact
# uses: actions/upload-artifact@v4
# uses: actions/upload-artifact@v5
# with:
# name: signed-artifact-${{ matrix.file }}
# path: ./application-signed
# - name: Upload unsigned artifact
- name: Upload signed artifact
id: upload-unsigned-artifact
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v5
with:
name: unsigned-artifact-${{ matrix.file }}
path: to_sign\${{ matrix.file }}

View File

@ -720,11 +720,11 @@
<key>archive</key>
<map>
<key>hash</key>
<string>126e0fa4c16dfd433c9fb7d1d242da98f213d933</string>
<string>2c81fa7aa03b427088ab54ce3b71088a0003126b</string>
<key>hash_algorithm</key>
<string>sha1</string>
<key>url</key>
<string>https://github.com/secondlife/dullahan/releases/download/v1.24.0-CEF_139.0.40/dullahan-1.24.0.202510081737_139.0.40_g465474a_chromium-139.0.7258.139-darwin64-18353103947.tar.zst</string>
<string>https://github.com/secondlife/dullahan/releases/download/v1.26.0-CEF_139.0.40/dullahan-1.26.0.202510161627_139.0.40_g465474a_chromium-139.0.7258.139-darwin64-18568015445.tar.zst</string>
</map>
<key>name</key>
<string>darwin64</string>
@ -734,11 +734,11 @@
<key>archive</key>
<map>
<key>hash</key>
<string>209d031ae67bc66d8e8f8509c71d259014c65ceb</string>
<string>8e06d060729250c5bfcb993c8f818f36ea17de16</string>
<key>hash_algorithm</key>
<string>sha1</string>
<key>url</key>
<string>https://github.com/secondlife/dullahan/releases/download/v1.14.0-r3/dullahan-1.14.0.202408091637_118.4.1_g3dd6078_chromium-118.0.5993.54-linux64-10322607516.tar.zst</string>
<string>https://github.com/secondlife/dullahan/releases/download/v1.26.0-CEF_139.0.40/dullahan-1.26.0.202510161627_139.0.40_g465474a_chromium-139.0.7258.139-linux64-18568015445.tar.zst</string>
</map>
<key>name</key>
<string>linux64</string>
@ -748,11 +748,11 @@
<key>archive</key>
<map>
<key>hash</key>
<string>20de62c9e57d9e6539c1e2437ec4b46c3ca237bc</string>
<string>7ca6db37f019b47e230c0861607c546d45535367</string>
<key>hash_algorithm</key>
<string>sha1</string>
<key>url</key>
<string>https://github.com/secondlife/dullahan/releases/download/v1.24.0-CEF_139.0.40/dullahan-1.24.0.202510081738_139.0.40_g465474a_chromium-139.0.7258.139-windows64-18353103947.tar.zst</string>
<string>https://github.com/secondlife/dullahan/releases/download/v1.26.0-CEF_139.0.40/dullahan-1.26.0.202510161628_139.0.40_g465474a_chromium-139.0.7258.139-windows64-18568015445.tar.zst</string>
</map>
<key>name</key>
<string>windows64</string>
@ -765,7 +765,7 @@
<key>copyright</key>
<string>Copyright (c) 2017, Linden Research, Inc.</string>
<key>version</key>
<string>1.24.0.202510081737_139.0.40_g465474a_chromium-139.0.7258.139</string>
<string>1.26.0.202510161627_139.0.40_g465474a_chromium-139.0.7258.139</string>
<key>name</key>
<string>dullahan</string>
<key>description</key>

View File

@ -197,6 +197,8 @@ if (LINUX)
set(CMAKE_EXE_LINKER_FLAGS "-Wl,--no-keep-memory -Wl,--build-id -Wl,-rpath,'$ORIGIN:$ORIGIN/../lib' -Wl,--exclude-libs,ALL")
set(CMAKE_CXX_FLAGS_DEBUG "-fno-inline ${CMAKE_CXX_FLAGS_DEBUG}")
# Prefer static libraries on Linux
set(CMAKE_FIND_LIBRARY_SUFFIXES ".so;.a")
endif (LINUX)
if (DARWIN)

View File

@ -113,6 +113,9 @@ if(WINDOWS)
elseif (MSVC_VERSION GREATER_EQUAL 1930 AND MSVC_VERSION LESS 1950) # Visual Studio 2022
set(MSVC_VER 140)
set(MSVC_TOOLSET_VER 143)
elseif (MSVC_VERSION GREATER_EQUAL 1950 AND MSVC_VERSION LESS 1970) # Visual Studio 2026
set(MSVC_VER 140)
set(MSVC_TOOLSET_VER 145)
else (MSVC80)
MESSAGE(WARNING "New MSVC_VERSION ${MSVC_VERSION} of MSVC: adapt Copy3rdPartyLibs.cmake")
endif (MSVC80)
@ -150,6 +153,7 @@ if(WINDOWS)
msvcp${MSVC_VER}_atomic_wait.dll
msvcp${MSVC_VER}_codecvt_ids.dll
#msvcr${MSVC_VER}.dll # <FS:Ansariel> Can't build with older VS versions anyway - no need trying to copy this file
vccorlib${MSVC_VER}.dll
vcruntime${MSVC_VER}.dll
vcruntime${MSVC_VER}_1.dll
vcruntime${MSVC_VER}_threads.dll

View File

@ -1,5 +1,6 @@
# -*- cmake -*-
include(Prebuilt)
include(GLIB) # <FS:Beq/> add glib includes
if (NOT LINUX)
return()
endif()
@ -10,4 +11,12 @@ use_system_binary(gstreamer10)
use_prebuilt_binary(gstreamer10)
use_prebuilt_binary(libxml2)
target_include_directories( ll::gstreamer SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/gstreamer-1.0)
# <FS:Beq> make sure glib is found
set(_gstreamer10_include_dirs
${LIBS_PREBUILT_DIR}/include/gstreamer-1.0
${GLIB_INCLUDE_DIRS}
)
list(REMOVE_ITEM _gstreamer10_include_dirs "")
# </FS:Beq>
target_include_directories( ll::gstreamer SYSTEM INTERFACE ${_gstreamer10_include_dirs})

View File

@ -32,7 +32,7 @@ if (USE_KDU)
find_library(KDU_LIBRARY
NAMES
libkdu.a
libkdu${ND_KDU_SUFFIX} // <FS> FS-specific naming
libkdu${ND_KDU_SUFFIX}.a // <FS> FS-specific naming
PATHS "${ARCH_PREBUILT_DIRS_RELEASE}" REQUIRED NO_DEFAULT_PATH)
endif (WINDOWS)

View File

@ -56,3 +56,11 @@ find_library(COLLADADOM_LIBRARY
PATHS "${ARCH_PREBUILT_DIRS_RELEASE}" REQUIRED NO_DEFAULT_PATH)
target_link_libraries(ll::colladadom INTERFACE ${COLLADADOM_LIBRARY} ll::boost ll::libxml ll::minizip-ng)
# <FS> GLIB uses pcre, so we need to keep it for Linux builds
if (LINUX)
add_library( ll::pcre INTERFACE IMPORTED )
use_prebuilt_binary(pcre)
target_link_libraries( ll::pcre INTERFACE pcrecpp pcre )
endif ()
# </FS>

View File

@ -39,6 +39,10 @@
#include "llframetimer.h"
#include "llassettype.h"
#include "llextendedstatus.h"
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
// Need to include for audio device mutex shared with other audio/voice systems.
#include "inlinemutexs.h"
// </FS:minerjr> [FIRE-36022]
#include "lllistener.h"

View File

@ -44,6 +44,9 @@
#include "sound_ids.h"
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
using namespace std::chrono_literals; // Needed for shared timed mutex to use time
// </FS:minerjr> [FIRE-36022]
constexpr U32 EXTRA_SOUND_CHANNELS = 10;
FMOD_RESULT F_CALL windCallback(FMOD_DSP_STATE *dsp_state, float *inbuffer, float *outbuffer, unsigned int length, int inchannels, int *outchannels);
@ -113,8 +116,14 @@ static void set_device(FMOD::System* system, const LLUUID& device_uuid)
}
}
FMOD_RESULT F_CALL systemCallback(FMOD_SYSTEM *system, FMOD_SYSTEM_CALLBACK_TYPE type, void *commanddata1, void *commanddata2, void* userdata)
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
// According to FMOD, not having this method static is very bad.
//FMOD_RESULT F_CALL systemCallback(FMOD_SYSTEM *system, FMOD_SYSTEM_CALLBACK_TYPE type, void *commanddata1, void *commanddata2, void* userdata)
static FMOD_RESULT F_CALL systemCallback(FMOD_SYSTEM *system, FMOD_SYSTEM_CALLBACK_TYPE type, void *commanddata1, void *commanddata2, void* userdata)
{
try // Try catch needed for uniquie lock as will throw an exception if a second lock is attempted or the mutex is invalid
{
// </FS:minerjr> [FIRE-36022]
FMOD::System* sys = (FMOD::System*)system;
LLAudioEngine_FMODSTUDIO* audio_engine = (LLAudioEngine_FMODSTUDIO*)userdata;
@ -124,6 +133,17 @@ FMOD_RESULT F_CALL systemCallback(FMOD_SYSTEM *system, FMOD_SYSTEM_CALLBACK_TYPE
LL_DEBUGS("FMOD") << "FMOD system callback FMOD_SYSTEM_CALLBACK_DEVICELISTCHANGED" << LL_ENDL;
if (sys && audio_engine)
{
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
// Attempt to lock the access to the audio device, wait up to 1 second for other threads to unlock.
std::unique_lock lock(gAudioDeviceMutex, 1s);
// If the lock could not be accessed, return as we don't have hardware access and will need to try again another pass.
// Prevents threads from interacting with the hardware at the same time as other audio/voice threads.
if (!lock.owns_lock())
{
LL_INFOS() << "Could not access the audio device mutex, trying again later" << LL_ENDL;
return FMOD_OK; // Could be a FMOD_ERR_ALREADY_LOCKED;
}
// </FS:minerjr> [FIRE-36022]
set_device(sys, audio_engine->getSelectedDeviceUUID());
audio_engine->OnOutputDeviceListChanged(audio_engine->getDevices());
}
@ -132,6 +152,34 @@ FMOD_RESULT F_CALL systemCallback(FMOD_SYSTEM *system, FMOD_SYSTEM_CALLBACK_TYPE
break;
}
return FMOD_OK;
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
}
// There are two exceptions that unique_lock can trigger, operation_not_permitted or resource_deadlock_would_occur
catch (const std::system_error& e)
{
if (e.code() == std::errc::resource_deadlock_would_occur)
{
LL_WARNS() << "Exception FMOD: " << e.code() << " " << e.what() << LL_ENDL;
return FMOD_ERR_ALREADY_LOCKED;
}
else if (e.code() == std::errc::operation_not_permitted)
{
LL_WARNS() << "Exception FMOD: " << e.code() << " " << e.what() << LL_ENDL;
return FMOD_ERR_ALREADY_LOCKED;
}
else
{
LL_WARNS() << "Exception FMOD: " << e.code() << " " << e.what() << LL_ENDL;
}
return FMOD_ERR_ALREADY_LOCKED;
}
catch (const std::exception& e)
{
LL_WARNS() << "Exception FMOD: " << " " << e.what() << LL_ENDL;
return FMOD_ERR_ALREADY_LOCKED;
}
// </FS:minerjr> [FIRE-36022]
}
LLAudioEngine_FMODSTUDIO::LLAudioEngine_FMODSTUDIO(bool enable_profiler, U32 resample_method)
@ -311,6 +359,11 @@ bool LLAudioEngine_FMODSTUDIO::init(void* userdata, const std::string &app_title
LL_INFOS("AppInit") << "LLAudioEngine_FMODSTUDIO::init() FMOD Studio initialized correctly" << LL_ENDL;
FMOD_ADVANCEDSETTINGS settings_dump = { };
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
// With the FMOD debug library used, turns out this object needs to have a size assigned to it otherwise it will fail.
// So the viewer never got any advanced settings for the info below.
settings_dump.cbSize = sizeof(FMOD_ADVANCEDSETTINGS);
// </FS:minerjr> [FIRE-36022]
mSystem->getAdvancedSettings(&settings_dump);
LL_INFOS("AppInit") << "LLAudioEngine_FMODSTUDIO::init(): resampler=" << settings_dump.resamplerMethod << " bytes" << LL_ENDL;
@ -373,7 +426,47 @@ LLAudioEngine_FMODSTUDIO::output_device_map_t LLAudioEngine_FMODSTUDIO::getDevic
void LLAudioEngine_FMODSTUDIO::setDevice(const LLUUID& device_uuid)
{
mSelectedDeviceUUID = device_uuid;
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
try // Try catch needed for uniquie lock as will throw an exception if a second lock is attempted or the mutex is invalid
{
// Attempt to lock the access to the audio device, wait up to 1 second for other threads to unlock.
std::unique_lock lock(gAudioDeviceMutex, 1s);
// If the lock could not be accessed, return as we don't have hardware access and will need to try again another pass.
// Prevents threads from interacting with the hardware at the same time as other audio/voice threads.
if (!lock.owns_lock())
{
LL_INFOS() << "Could not access the audio device mutex, trying again later" << LL_ENDL;
return;
}
// </FS:minerjr> [FIRE-36022]
set_device(mSystem, device_uuid);
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
}
// There are two exceptions that unique_lock can trigger, operation_not_permitted or resource_deadlock_would_occur
catch (const std::system_error& e)
{
if (e.code() == std::errc::resource_deadlock_would_occur)
{
LL_WARNS() << "Exception FMOD: " << e.code() << " " << e.what() << LL_ENDL;
}
else if (e.code() == std::errc::operation_not_permitted)
{
LL_WARNS() << "Exception FMOD: " << e.code() << " " << e.what() << LL_ENDL;
}
else
{
LL_WARNS() << "Exception FMOD: " << e.code() << " " << e.what() << LL_ENDL;
}
return;
}
catch (const std::exception& e)
{
LL_WARNS() << "Exception FMOD: " << " " << e.what() << LL_ENDL;
return;
}
// </FS:minerjr> [FIRE-36022]
}
std::string LLAudioEngine_FMODSTUDIO::getDriverName(bool verbose)

View File

@ -122,6 +122,7 @@ set(llcommon_HEADER_FILES
fsyspath.h
function_types.h
indra_constants.h
inlinemutexs.h
lazyeventapi.h
linden_common.h
llalignedarray.h

View File

@ -0,0 +1,39 @@
/**
* @file inlinemutexs.h
* @brief Declaration of inline mutexs
* @author minerjr@firestorm
*
* $LicenseInfo:firstyear=2025&license=fsviewerlgpl$
* Phoenix Firestorm Viewer Source Code
* Copyright (C) 2025, Minerjr
*
* 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
*
* The Phoenix Firestorm Project, Inc., 1831 Oakwood Drive, Fairmont, Minnesota 56031-3225 USA
* http://www.firestormviewer.org
* $/LicenseInfo$
*/
#ifndef INLINE_MUTEXS_HEADER
#define INLINE_MUTEXS_HEADER
#include <mutex>
#include <chrono>
#include <atomic>
// Audio device mutex to be shared between audio engine and Voice systems to
// syncronize on when audio hardware accessed for disconnected/connecting hardware
// Uses Timed Mutex so as to not lockup the threads forever.
inline std::timed_mutex gAudioDeviceMutex;
#endif

View File

@ -238,7 +238,22 @@ private:
mParents.pop_back();
}
/// equality
bool equal(const self_type& that) const { return this->mParents == that.mParents; }
bool equal(const self_type& that) const
{
if (this == &that)
{
return true;
}
const bool empty = mParents.empty();
const bool that_empty = that.mParents.empty();
if (empty || that_empty)
{
return empty && that_empty;
}
return mParents == that.mParents;
}
/// implement dereference/indirection operators
ptr_type& dereference() const { return const_cast<ptr_type&>(mParents.back()); }
@ -373,7 +388,22 @@ private:
mSkipChildren = false;
}
/// equality
bool equal(const self_type& that) const { return this->mPending == that.mPending; }
bool equal(const self_type& that) const
{
if (this == &that)
{
return true;
}
const bool empty = mPending.empty();
const bool that_empty = that.mPending.empty();
if (empty || that_empty)
{
return empty && that_empty;
}
return mPending == that.mPending;
}
/// implement dereference/indirection operators
ptr_type& dereference() const { return const_cast<ptr_type&>(mPending.back()); }
@ -474,7 +504,22 @@ private:
makeCurrent();
}
/// equality
bool equal(const self_type& that) const { return this->mPending == that.mPending; }
bool equal(const self_type& that) const
{
if (this == &that)
{
return true;
}
const bool empty = mPending.empty();
const bool that_empty = that.mPending.empty();
if (empty || that_empty)
{
return empty && that_empty;
}
return mPending == that.mPending;
}
/// implement dereference/indirection operators
ptr_type& dereference() const { return const_cast<ptr_type&>(mPending.back().first); }
@ -611,7 +656,22 @@ private:
mPending.push_back(*chi);
}
/// equality
bool equal(const self_type& that) const { return this->mPending == that.mPending; }
bool equal(const self_type& that) const
{
if (this == &that)
{
return true;
}
const bool empty = mPending.empty();
const bool that_empty = that.mPending.empty();
if (empty || that_empty)
{
return empty && that_empty;
}
return mPending == that.mPending;
}
/// implement dereference/indirection operators
ptr_type& dereference() const { return const_cast<ptr_type&>(mPending.front()); }

View File

@ -1131,7 +1131,13 @@ bool LLDAELoader::OpenFile(const std::string& filename)
LLModel* mdl = *i;
if(mdl->getStatus() != LLModel::NO_ERRORS)
{
setLoadState(ERROR_MODEL + mdl->getStatus()) ;
// <FS:Beq> Fix deprecated arithmetic between different enum types (ERROR_MODEL + EModelStatus)
// Ugly fix. could use a helper instead but its only called in two places.
// setLoadState(ERROR_MODEL + mdl->getStatus());
setLoadState(
static_cast<LLModelLoader::eLoadState>(
static_cast<S32>(ERROR_MODEL) + static_cast<S32>(mdl->getStatus())));
// </FS:Beq>
return false; //abort
}

View File

@ -303,11 +303,8 @@ void LLAccordionCtrl::ctrlSetLeftTopAndSize(LLView* panel, S32 left, S32 top, S3
return;
LLRect panel_rect = panel->getRect();
panel_rect.setLeftTopAndSize( left, top, width, height);
if (panel->getRect() != panel_rect)
{
panel->reshape( width, height, 1);
panel->setRect(panel_rect);
}
panel->reshape( width, height, 1);
panel->setRect(panel_rect);
}
void LLAccordionCtrl::ctrlShiftVertical(LLView* panel, S32 delta)

View File

@ -27,6 +27,11 @@
#include "llwebrtc_impl.h"
#include <algorithm>
#include <string.h>
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
// Needed for accessing the inline timed mutex for accessing audio hardware.
#include <mutex>
#include <chrono>
// </FS:minerjr> [FIRE-36022]
#include "api/audio_codecs/audio_decoder_factory.h"
#include "api/audio_codecs/audio_encoder_factory.h"
@ -39,6 +44,14 @@
#include "modules/audio_mixer/audio_mixer_impl.h"
#include "api/environment/environment_factory.h"
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
// Audio device mutex to be shared between audio engine and Voice systems to
// syncronize on when audio hardware accessed for disconnected/connecting hardware
// Uses Timed Mutex so as to not lockup the threads forever.
inline std::timed_mutex gAudioDeviceMutex;
// Need to use to access the 3 second timeout for the lock.
using namespace std::chrono_literals;
// </FS:minerjr> [FIRE-36022]
namespace llwebrtc
{
#if WEBRTC_WIN
@ -269,7 +282,11 @@ void LLWebRTCImpl::init()
webrtc::InitializeSSL();
// Normal logging is rather spammy, so turn it off.
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
// Turn on more verbose logging as we are looking for crashes.
webrtc::LogMessage::LogToDebug(webrtc::LS_NONE);
//webrtc::LogMessage::LogToDebug(webrtc::LS_VERBOSE);
// </FS:minerjr> [FIRE-36022]
webrtc::LogMessage::SetLogToStderr(true);
webrtc::LogMessage::AddLogToStream(mLogSink, webrtc::LS_VERBOSE);
@ -463,8 +480,24 @@ void LLWebRTCImpl::unsetDevicesObserver(LLWebRTCDevicesObserver *observer)
// must be run in the worker thread.
void LLWebRTCImpl::workerDeployDevices()
{
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
try // Try catch needed for uniquie lock as will throw an exception if a second lock is attempted or the mutex is invalid
{
// Attempt to lock the access to the audio device, wait up to 1 second for other threads to unlock.
std::unique_lock lock(gAudioDeviceMutex, 1s);
// If the lock could not be accessed, return as we don't have hardware access and will need to try again another pass.
// Prevents threads from interacting with the hardware at the same time as other audio/voice threads.
if (!lock.owns_lock())
{
return;
}
// </FS:minerjr> [FIRE-36022]
if (!mDeviceModule)
{
// <FS:minerjr> [FIRE-36022]
// If the device is not avaiable, then make sure the flag for the WebRTC updated devices flag is turned off for the co-routine
gWebRTCUpdateDevices = false;
// </FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
return;
}
@ -489,6 +522,10 @@ void LLWebRTCImpl::workerDeployDevices()
}
}
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
// Flag the device is being interacted with for the Co-routine in case something goes wrong.
gWebRTCUpdateDevices = true;
// </FS:minerjr> [FIRE-36022]
mDeviceModule->StopPlayout();
mDeviceModule->ForceStopRecording();
#if WEBRTC_WIN
@ -552,6 +589,10 @@ void LLWebRTCImpl::workerDeployDevices()
{
mDeviceModule->StartPlayout();
}
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
// Finally signal to the co-routine everyting is OK.
gWebRTCUpdateDevices = false;
// </FS:minerjr> [FIRE-36022]
mSignalingThread->PostTask(
[this]
{
@ -572,6 +613,38 @@ void LLWebRTCImpl::workerDeployDevices()
mWorkerThread->PostTask([this] { workerDeployDevices(); });
}
});
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
}
// There are two exceptions that unique_lock can trigger, operation_not_permitted or resource_deadlock_would_occur
catch (const std::system_error& e)
{
if (e.code() == std::errc::resource_deadlock_would_occur)
{
// Another thead may have alreayd called this method
mLogSink->OnLogMessage(std::string("Excepton: WebRTC: ") + e.what());
}
else if (e.code() == std::errc::operation_not_permitted)
{
// This should not be reached
mLogSink->OnLogMessage(std::string("Excepton: WebRTC: ") + e.what());
}
else
{
// Log any other message
mLogSink->OnLogMessage(std::string("Excepton: WebRTC: ") + e.what());
}
// Device no longer being interacted with
gWebRTCUpdateDevices = false;
return;
}
catch (const std::exception& e)
{
mLogSink->OnLogMessage(std::string("Excepton: WebRTC: ") + e.what());
// Device no longer being interacted with
gWebRTCUpdateDevices = false;
return;
}
// </FS:minerjr> [FIRE-36022]
}
void LLWebRTCImpl::setCaptureDevice(const std::string &id)
@ -596,11 +669,27 @@ void LLWebRTCImpl::setRenderDevice(const std::string &id)
// updateDevices needs to happen on the worker thread.
void LLWebRTCImpl::updateDevices()
{
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
try // Try catch needed for uniquie lock as will throw an exception if a second lock is attempted or the mutex is invalid
{
// Attempt to lock the access to the audio device, wait up to 1 second for other threads to unlock.
std::unique_lock lock(gAudioDeviceMutex, 1s);
// If the lock could not be accessed, return as we don't have hardware access and will need to try again another pass.
// Prevents threads from interacting with the hardware at the same time as other audio/voice threads.
if (!lock.owns_lock())
{
return;
}
// </FS:minerjr> [FIRE-36022]
if (!mDeviceModule)
{
return;
}
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
// Flag the device is being interacted with for the Co-routine in case something goes wrong.
gWebRTCUpdateDevices = true;
// </FS:minerjr> [FIRE-36022]
int16_t renderDeviceCount = mDeviceModule->PlayoutDevices();
mPlayoutDeviceList.clear();
@ -637,10 +726,46 @@ void LLWebRTCImpl::updateDevices()
mRecordingDeviceList.emplace_back(name, guid);
}
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
// Flag the device is no longer being interacted with for the Co-routine in case something goes wrong.
gWebRTCUpdateDevices = false;
// </FS:minerjr> [FIRE-36022]
for (auto &observer : mVoiceDevicesObserverList)
{
observer->OnDevicesChanged(mPlayoutDeviceList, mRecordingDeviceList);
}
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
}
// There are two exceptions that unique_lock can trigger, operation_not_permitted or resource_deadlock_would_occur
catch (const std::system_error& e)
{
if (e.code() == std::errc::resource_deadlock_would_occur)
{
// Another thead may have alreayd called this method
mLogSink->OnLogMessage(std::string("Excepton: WebRTC: ") + e.what());
}
else if (e.code() == std::errc::operation_not_permitted)
{
// This should not be reached
mLogSink->OnLogMessage(std::string("Excepton: WebRTC: ") + e.what());
}
else
{
// Log any other message
mLogSink->OnLogMessage(std::string("Excepton: WebRTC: ") + e.what());
}
// Device no longer being interacted with
gWebRTCUpdateDevices = false;
return;
}
catch (const std::exception& e)
{
mLogSink->OnLogMessage(std::string("Excepton: WebRTC: ") + e.what());
// Device no longer being interacted with
gWebRTCUpdateDevices = false;
return;
}
// </FS:minerjr> [FIRE-36022]
}
void LLWebRTCImpl::OnDevicesUpdated()
@ -745,7 +870,56 @@ void LLWebRTCImpl::intSetMute(bool mute, int delay_ms)
{
if (mDeviceModule)
{
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
try // Try catch needed for uniquie lock as will throw an exception if a second lock is attempted or the mutex is
// invalid
{
// Attempt to lock the access to the audio device, wait up to 1 second for other threads to unlock.
std::unique_lock lock(gAudioDeviceMutex, 1s);
// If the lock could not be accessed, return as we don't have hardware access and will need to try again another pass.
// Prevents threads from interacting with the hardware at the same time as other audio/voice threads.
if (!lock.owns_lock())
{
return;
}
// Flag the device is being interacted with for the Co-routine in case something goes wrong.
gWebRTCUpdateDevices = true;
// </FS:minerjr> [FIRE-36022]
mDeviceModule->ForceStopRecording();
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
// Finally signal to the co-routine everyting is OK.
gWebRTCUpdateDevices = false;
}
// There are two exceptions that unique_lock can trigger, operation_not_permitted or resource_deadlock_would_occur
catch (const std::system_error& e)
{
if (e.code() == std::errc::resource_deadlock_would_occur)
{
// Another thead may have alreayd called this method
mLogSink->OnLogMessage(std::string("Excepton: WebRTC: ") + e.what());
}
else if (e.code() == std::errc::operation_not_permitted)
{
// This should not be reached
mLogSink->OnLogMessage(std::string("Excepton: WebRTC: ") + e.what());
}
else
{
// Log any other message
mLogSink->OnLogMessage(std::string("Excepton: WebRTC: ") + e.what());
}
// Device no longer being interacted with
gWebRTCUpdateDevices = false;
return;
}
catch (const std::exception& e)
{
mLogSink->OnLogMessage(std::string("Excepton: WebRTC: ") + e.what());
// Device no longer being interacted with
gWebRTCUpdateDevices = false;
return;
}
// </FS:minerjr> [FIRE-36022]
}
},
webrtc::TimeDelta::Millis(delay_ms));
@ -757,8 +931,57 @@ void LLWebRTCImpl::intSetMute(bool mute, int delay_ms)
{
if (mDeviceModule)
{
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
try // Try catch needed for uniquie lock as will throw an exception if a second lock is attempted or the mutex is
// invalid
{
// Attempt to lock the access to the audio device, wait up to 1 second for other threads to unlock.
std::unique_lock lock(gAudioDeviceMutex, 1s);
// If the lock could not be accessed, return as we don't have hardware access and will need to try again another pass.
// Prevents threads from interacting with the hardware at the same time as other audio/voice threads.
if (!lock.owns_lock())
{
return;
}
// Flag the device is being interacted with for the Co-routine in case something goes wrong.
gWebRTCUpdateDevices = true;
// </FS:minerjr> [FIRE-36022]
mDeviceModule->InitRecording();
mDeviceModule->ForceStartRecording();
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
// Finally signal to the co-routine everyting is OK.
gWebRTCUpdateDevices = false;
}
// There are two exceptions that unique_lock can trigger, operation_not_permitted or resource_deadlock_would_occur
catch (const std::system_error& e)
{
if (e.code() == std::errc::resource_deadlock_would_occur)
{
// Another thead may have alreayd called this method
mLogSink->OnLogMessage(std::string("Excepton: WebRTC: ") + e.what());
}
else if (e.code() == std::errc::operation_not_permitted)
{
// This should not be reached
mLogSink->OnLogMessage(std::string("Excepton: WebRTC: ") + e.what());
}
else
{
// Log any other message
mLogSink->OnLogMessage(std::string("Excepton: WebRTC: ") + e.what());
}
// Device no longer being interacted with
gWebRTCUpdateDevices = false;
return;
}
catch (const std::exception& e)
{
mLogSink->OnLogMessage(std::string("Excepton: WebRTC: ") + e.what());
// Device no longer being interacted with
gWebRTCUpdateDevices = false;
return;
}
// </FS:minerjr> [FIRE-36022]
}
});
}

View File

@ -40,6 +40,10 @@
#include <string>
#include <vector>
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
// Needed for inline variable for the crash check
#include <atomic>
// </FS:minerjr> [FIRE-36022]
#ifdef LL_MAKEDLL
#ifdef WEBRTC_WIN
@ -53,6 +57,12 @@
#define LLSYMEXPORT /**/
#endif // LL_MAKEDLL
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
// Create an atomic inline flag that will be shared between the various WebRTC threads and co-routines
// to track of when the audio hardware is being talked to. The co-routine can use it to
// exit if it too many iterations with the hardware locked indicating that the worker thread died.
inline std::atomic<bool> gWebRTCUpdateDevices = false;
// </FS:minerjr> [FIRE-36022]
namespace llwebrtc
{

View File

@ -11,7 +11,7 @@
<key>CFBundleIconFile</key>
<string>${MACOSX_BUNDLE_ICON_FILE}</string>
<key>CFBundleIdentifier</key>
<string>${PRODUCT_BUNDLE_IDENTIFIER}</string>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleLongVersionString</key>

View File

@ -23499,7 +23499,7 @@ Change of this parameter will affect the layout of buttons in notification toast
<key>InventoryAddAttachmentBehavior</key>
<map>
<key>Comment</key>
<string>Defines behavior when hitting return on an inventory item</string>
<string>Defines behavior when hitting return on an inventory item (unused in favour of FSDoubleClickAddInventoryObjects)</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>

View File

@ -1141,6 +1141,30 @@
<key>Value</key>
<string/>
</map>
<key>FSBuildPrefs_UseCustomScript</key>
<map>
<key>Comment</key>
<string>Use custom script template when clicking New Script button</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
</map>
<key>FSBuildPrefs_CustomScriptItem</key>
<map>
<key>HideFromEditor</key>
<integer>1</integer>
<key>Comment</key>
<string>Script UUID to use as template for New Script button</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>String</string>
<key>Value</key>
<string/>
</map>
<key>FSllOwnerSayToScriptDebugWindow</key>
<map>
<key>Comment</key>

View File

@ -4106,6 +4106,7 @@ void FSPanelFace::onCancelSpecularTexture()
// onClickBtnAddMedia() where needed, so the naming is probably just old cruft -Zi
void FSPanelFace::onClickBtnEditMedia()
{
LLFloaterMediaSettings::getInstance(); // make sure floater we are about to open exists before refreshMedia
refreshMedia();
LLFloaterReg::showInstance("media_settings");
}
@ -4124,6 +4125,7 @@ void FSPanelFace::onClickBtnAddMedia()
// check if multiple faces are selected
if (LLSelectMgr::getInstance()->getSelection()->isMultipleTESelected())
{
LLFloaterMediaSettings::getInstance(); // make sure floater we are about to open exists before refreshMedia
refreshMedia();
LLNotificationsUtil::add("MultipleFacesSelected", LLSD(), LLSD(), boost::bind(&FSPanelFace::multipleFacesSelectedConfirm, this, _1, _2));
}

View File

@ -49,6 +49,7 @@ FSPanelPrefs::FSPanelPrefs() : LLPanelPreference()
mCommitCallbackRegistrar.add("Perms.Trans", boost::bind(&FSPanelPrefs::onCommitTrans, this));
mEmbeddedItem = gSavedPerAccountSettings.getString("FSBuildPrefs_Item");
mCustomScriptItem = gSavedPerAccountSettings.getString("FSBuildPrefs_CustomScriptItem");
}
bool FSPanelPrefs::postBuild()
@ -75,6 +76,9 @@ bool FSPanelPrefs::postBuild()
mInvDropTarget = getChild<FSEmbeddedItemDropTarget>("embed_item");
mInvDropTarget->setDADCallback(boost::bind(&FSPanelPrefs::onDADEmbeddedItem, this, _1));
mCustomScriptDropTarget = getChild<FSEmbeddedItemDropTarget>("custom_script");
mCustomScriptDropTarget->setDADCallback(boost::bind(&FSPanelPrefs::onDADCustomScript, this, _1));
return LLPanelPreference::postBuild();
}
@ -101,12 +105,35 @@ void FSPanelPrefs::onOpen(const LLSD& key)
getChild<LLTextBox>("build_item_add_disp_rect_txt")->setTextArg("[ITEM]", getString("EmbeddedItemNotAvailable"));
}
}
getChild<LLCheckBoxCtrl>("FSBuildPrefs_UseCustomScript")->setEnabled(true);
mCustomScriptItem = gSavedPerAccountSettings.getString("FSBuildPrefs_CustomScriptItem");
LLUUID script_id(mCustomScriptItem);
if (script_id.isNull())
{
getChild<LLTextBox>("custom_script_disp_rect_txt")->setTextArg("[SCRIPT]", getString("EmbeddedItemNotSet"));
}
else
{
LLInventoryObject* script = gInventory.getObject(script_id);
if (script)
{
getChild<LLTextBox>("custom_script_disp_rect_txt")->setTextArg("[SCRIPT]", script->getName());
}
else
{
getChild<LLTextBox>("custom_script_disp_rect_txt")->setTextArg("[SCRIPT]", getString("EmbeddedItemNotAvailable"));
}
}
getChild<LLUICtrl>("reset_default_folders")->setEnabled(true);
}
else
{
getChild<LLCheckBoxCtrl>("FSBuildPrefs_EmbedItem")->setEnabled(false);
getChild<LLTextBox>("build_item_add_disp_rect_txt")->setTextArg("[ITEM]", getString("EmbeddedItemNotLoggedIn"));
getChild<LLCheckBoxCtrl>("FSBuildPrefs_UseCustomScript")->setEnabled(false);
getChild<LLTextBox>("custom_script_disp_rect_txt")->setTextArg("[SCRIPT]", getString("EmbeddedItemNotLoggedIn"));
getChild<LLUICtrl>("reset_default_folders")->setEnabled(false);
}
}
@ -118,6 +145,7 @@ void FSPanelPrefs::apply()
if (LLStartUp::getStartupState() == STATE_STARTED)
{
gSavedPerAccountSettings.setString("FSBuildPrefs_Item", mEmbeddedItem);
gSavedPerAccountSettings.setString("FSBuildPrefs_CustomScriptItem", mCustomScriptItem);
}
}
@ -277,6 +305,16 @@ void FSPanelPrefs::onDADEmbeddedItem(const LLUUID& item_id)
}
}
void FSPanelPrefs::onDADCustomScript(const LLUUID& item_id)
{
LLInventoryObject* item = gInventory.getObject(item_id);
if (item && item->getType() == LLAssetType::AT_LSL_TEXT)
{
getChild<LLTextBox>("custom_script_disp_rect_txt")->setTextArg("[SCRIPT]", item->getName());
mCustomScriptItem = item_id.asString();
}
}
void FSPanelPrefs::onResetDefaultFolders()
{
gSavedPerAccountSettings.getControl("ModelUploadFolder")->resetToDefault(true);

View File

@ -55,11 +55,14 @@ private:
void onCommitTrans();
void onDADEmbeddedItem(const LLUUID& item_id);
void onDADCustomScript(const LLUUID& item_id);
void onResetDefaultFolders();
FSEmbeddedItemDropTarget* mInvDropTarget;
FSEmbeddedItemDropTarget* mCustomScriptDropTarget;
std::string mEmbeddedItem;
std::string mCustomScriptItem;
};
#endif // FS_PANELPREFS_H

View File

@ -489,7 +489,13 @@ void LLGLTFLoader::processNodeHierarchy(S32 node_idx, std::map<std::string, S32>
}
else
{
setLoadState(ERROR_MODEL + pModel->getStatus());
// <FS:Beq> Fix deprecated arithmetic between different enum types (ERROR_MODEL + EModelStatus)
// Ugly fix. could use a helper instead but its only called in two places.
// setLoadState(ERROR_MODEL + pModel->getStatus());
setLoadState(
static_cast<LLModelLoader::eLoadState>(
static_cast<S32>(ERROR_MODEL) + static_cast<S32>(pModel->getStatus())));
// </FS:Beq>
delete pModel;
return;
}

View File

@ -5206,6 +5206,8 @@ bool LLAppViewer::initCache()
LL_WARNS("AppCache") << "Unable to set cache location" << LL_ENDL;
gSavedSettings.setString("CacheLocation", "");
gSavedSettings.setString("CacheLocationTopFolder", "");
gSavedSettings.setString("NewCacheLocation", "");
gSavedSettings.setString("NewCacheLocationTopFolder", "");
}
// <FS:Ansariel> Sound cache

View File

@ -1026,6 +1026,11 @@ bool LLAppViewerWin32::cleanup()
gDXHardware.cleanup();
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
// Need to unilitialize connection to COM, otherwise it will be treated as a memroy leak.
CoUninitialize();
// </FS:minerjr> [FIRE-36022]
if (mIsConsoleAllocated)
{
FreeConsole();
@ -1066,6 +1071,19 @@ bool LLAppViewerWin32::initWindow()
LL_WARNS("AppInit") << "Unable to set WindowWidth and WindowHeight for FullScreen mode" << LL_ENDL;
}
}
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
// Acccording to the FMOD spec, you are suppose to initalize COM on the thead that will talk to FMOD. IE the main thread.
// There is a coorisponding CoUninitialize in the shutdown code. Otherwise, FMOD will force the initalize with a warning, but does not clean up COM
HRESULT hr = CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED);
if (SUCCEEDED(hr))
{
LL_INFOS() << "WIN32: CoInitializeEx COM as COINIT_APARTMENTTHREADED Successful" << LL_ENDL;
}
else
{
LL_INFOS() << "WIN32: CoInitializeEx COM as COINIT_APARTMENTTHREADED Failed" << LL_ENDL;
}
// </FS:minerjr> [FIRE-36022]
return LLAppViewer::initWindow();
}

View File

@ -938,7 +938,10 @@ void LLDrawable::updateDistance(LLCamera& camera, bool force_update)
LLVector3 cam_pos_from_agent = LLViewerCamera::getInstance()->getOrigin();
LLVector3 cam_to_box_offset = point_to_box_offset(cam_pos_from_agent, av_box);
mDistanceWRTCamera = llmax(0.01f, ll_round(cam_to_box_offset.magVec(), 0.01f));
mVObjp->updateLOD();
if (mVObjp)
{
mVObjp->updateLOD();
}
return;
}
}
@ -949,7 +952,10 @@ void LLDrawable::updateDistance(LLCamera& camera, bool force_update)
pos -= camera.getOrigin();
mDistanceWRTCamera = ll_round(pos.magVec(), 0.01f);
mVObjp->updateLOD();
if (mVObjp)
{
mVObjp->updateLOD();
}
}
}
@ -961,6 +967,11 @@ void LLDrawable::updateTexture()
return;
}
if (!mVObjp)
{
return;
}
if (getNumFaces() != mVObjp->getNumTEs())
{ //drawable is transitioning its face count
return;

View File

@ -52,7 +52,12 @@ class LLDrawInfo;
class LLMeshSkinInfo;
const F32 MIN_ALPHA_SIZE = 1024.f;
const F32 MIN_TEX_ANIM_SIZE = 512.f;
// <FS:minerjr>
//const F32 MIN_TEX_ANIM_SIZE = 512.f;
// Reduce the cut off point of the animated textures down to the size when textures get discarded/set to invalid size.
// This should prevent "on screen" animated textures from stopping.
const F32 MIN_TEX_ANIM_SIZE = 16.f;
// </FS:minerjr>
const U8 FACE_DO_NOT_BATCH_TEXTURES = 255;
class alignas(16) LLFace
@ -128,7 +133,7 @@ public:
void setIndexInTex(U32 ch, S32 index) { llassert(ch < LLRender::NUM_TEXTURE_CHANNELS); mIndexInTex[ch] = index; }
void setWorldMatrix(const LLMatrix4& mat);
const LLTextureEntry* getTextureEntry() const { return mVObjp->getTE(mTEOffset); }
const LLTextureEntry* getTextureEntry() const { return mVObjp ? mVObjp->getTE(mTEOffset) : nullptr; }
LLFacePool* getPool() const { return mDrawPoolp; }
U32 getPoolType() const { return mPoolType; }

View File

@ -7925,8 +7925,12 @@ void LLObjectBridge::performAction(LLInventoryModel* model, std::string action)
item = (LLViewerInventoryItem*)gInventory.getItem(object_id);
if(item && gInventory.isObjectDescendentOf(object_id, gInventory.getRootFolderID()))
{
static LLCachedControl<bool> replace_item(gSavedSettings, "InventoryAddAttachmentBehavior", false);
rez_attachment(item, NULL, ("attach" == action) ? replace_item() : true); // Replace if "Wear"ing.
// <FS> Firestorm's replace on double click
// static LLCachedControl<bool> replace_item(gSavedSettings, "InventoryAddAttachmentBehavior", false);
// rez_attachment(item, NULL, ("attach" == action) ? replace_item() : true); // Replace if "Wear"ing.
static LLCachedControl<bool> replace_item(gSavedSettings, "FSDoubleClickAddInventoryObjects", false);
rez_attachment(item, NULL, ("attach" == action) ? !replace_item : true); // Replace if "Wear"ing.
// </FS>
}
else if(item && item->isFinished())
{
@ -7969,11 +7973,13 @@ void LLObjectBridge::performAction(LLInventoryModel* model, std::string action)
void LLObjectBridge::openItem()
{
static LLCachedControl<bool> replace_item(gSavedSettings, "FSDoubleClickAddInventoryObjects", false); // <FS> Double-click add/replace
// object double-click action is to wear/unwear object
performAction(getInventoryModel(),
// <FS> Double-click add/replace
//get_is_item_worn(mUUID) ? "detach" : "attach");
get_is_item_worn(mUUID) ? "detach" : gSavedSettings.getBOOL("FSDoubleClickAddInventoryObjects") ? "wear_add" : "attach");
get_is_item_worn(mUUID) ? "detach" : replace_item ? "wear_add" : "attach");
// </FS>
}
std::string LLObjectBridge::getLabelSuffix() const
@ -9190,7 +9196,9 @@ void LLObjectBridgeAction::attachOrDetach()
// <FS:Ansariel> Double-click add/replace option
//static LLCachedControl<bool> inventory_linking(gSavedSettings, "InventoryAddAttachmentBehavior", false);
//LLAppearanceMgr::instance().wearItemOnAvatar(mUUID, true, inventory_linking()); // Don't replace if adding.
LLAppearanceMgr::instance().wearItemOnAvatar(mUUID, true, !gSavedSettings.getBOOL("FSDoubleClickAddInventoryObjects")); // Don't replace if adding.
static LLCachedControl<bool> replace_item(gSavedSettings, "FSDoubleClickAddInventoryObjects", false);
LLAppearanceMgr::instance().wearItemOnAvatar(mUUID, true, !replace_item); // Don't replace if adding.
// </FS>
}
}

View File

@ -1,4 +1,4 @@
/**
/**
* @file llmaniptranslate.cpp
* @brief LLManipTranslate class implementation
*
@ -716,24 +716,28 @@ bool LLManipTranslate::handleHover(S32 x, S32 y, MASK mask)
// handle attachments in local space
if (object->isAttachment() && object->mDrawable.notNull())
{
// calculate local version of relative move
LLQuaternion objWorldRotation = object->mDrawable->mXform.getParent()->getWorldRotation();
objWorldRotation.transQuat();
LLVector3 old_position_local = object->getPosition();
LLVector3 new_position_local = selectNode->mSavedPositionLocal + (clamped_relative_move_f * objWorldRotation);
//RN: I forget, but we need to do this because of snapping which doesn't often result
// in position changes even when the mouse moves
object->setPosition(new_position_local);
rebuild(object);
gAgentAvatarp->clampAttachmentPositions();
new_position_local = object->getPosition();
if (selectNode->mIndividualSelection)
LLXform* object_xform_parent = object->mDrawable->mXform.getParent();
if (object_xform_parent)
{
// counter-translate child objects if we are moving the root as an individual
object->resetChildrenPosition(old_position_local - new_position_local, true);
// calculate local version of relative move
LLQuaternion objWorldRotation = object_xform_parent->getWorldRotation();
objWorldRotation.transQuat();
LLVector3 old_position_local = object->getPosition();
LLVector3 new_position_local = selectNode->mSavedPositionLocal + (clamped_relative_move_f * objWorldRotation);
//RN: I forget, but we need to do this because of snapping which doesn't often result
// in position changes even when the mouse moves
object->setPosition(new_position_local);
rebuild(object);
gAgentAvatarp->clampAttachmentPositions();
new_position_local = object->getPosition();
if (selectNode->mIndividualSelection)
{
// counter-translate child objects if we are moving the root as an individual
object->resetChildrenPosition(old_position_local - new_position_local, true);
}
}
}
else

View File

@ -1780,11 +1780,18 @@ bool LLOutfitAccordionCtrlTab::handleToolTip(S32 x, S32 y, MASK mask)
// <FS:Ansariel> Make thumbnail tooltip work properly
//if (y >= getLocalRect().getHeight() - getHeaderHeight())
static LLCachedControl<bool> showInventoryThumbnailTooltips(gSavedSettings, "FSShowInventoryThumbnailTooltips");
if (showInventoryThumbnailTooltips && y >= getLocalRect().getHeight() - getHeaderHeight() && gInventory.getCategory(mFolderID)->getThumbnailUUID().notNull())
if (showInventoryThumbnailTooltips && y >= getLocalRect().getHeight() - getHeaderHeight())
{
LLSD params;
params["inv_type"] = LLInventoryType::IT_CATEGORY;
LLViewerInventoryCategory* cat = gInventory.getCategory(mFolderID);
// <FS:TJ> Make thumbnail tooltip work properly
if (!cat || cat->getThumbnailUUID().isNull())
{
return LLAccordionCtrlTab::handleToolTip(x, y, mask);
}
// </FS:TJ>
if (cat)
{
params["thumbnail_id"] = cat->getThumbnailUUID();

View File

@ -52,8 +52,10 @@
#include "lltool.h"
#include "lltoolcomp.h"
#include "lltoolmgr.h"
#include "lltooldraganddrop.h" // <FS:FIRE-36059> For custom script template
#include "lltrans.h"
#include "llviewerassettype.h"
#include "llviewercontrol.h" // <FS:FIRE-36059> For custom script template
#include "llviewerinventory.h"
#include "llviewermenu.h" // <FS> Script reset in edit floater
#include "llviewerobject.h"
@ -280,6 +282,20 @@ void LLPanelContents::onClickNewScript(void *userdata)
}
// [/RLVa:KB]
// <FS:PP> FIRE-36059 Optional custom script template for New Script button
if (gSavedPerAccountSettings.getBOOL("FSBuildPrefs_UseCustomScript"))
{
if (LLUUID custom_script_id(gSavedPerAccountSettings.getString("FSBuildPrefs_CustomScriptItem")); custom_script_id.notNull())
{
if (auto custom_script = gInventory.getItem(custom_script_id); custom_script && custom_script->getType() == LLAssetType::AT_LSL_TEXT)
{
LLToolDragAndDrop::dropScript(object, custom_script, true, LLToolDragAndDrop::SOURCE_AGENT, gAgentID);
return;
}
}
}
// </FS:PP>
LLPermissions perm;
perm.init(gAgent.getID(), gAgent.getID(), LLUUID::null, LLUUID::null);

View File

@ -1324,7 +1324,10 @@ void LLPanelOutfitEdit::showFilteredWearablesListView(LLWearableType::EType type
showWearablesListView();
//e_list_view_item_type implicitly contains LLWearableType::EType starting from LVIT_SHAPE
applyListViewFilter(static_cast<EListViewItemType>(LVIT_SHAPE + type));
// <FS:Beq> More deprecated enum math
// applyListViewFilter(static_cast<EListViewItemType>(LVIT_SHAPE + type));
applyListViewFilter(static_cast<EListViewItemType>(static_cast<S32>(LVIT_SHAPE) + static_cast<S32>(type)));
// </FS:Beq>
mWearableItemsList->setMenuWearableType(type);
}

View File

@ -305,6 +305,14 @@ bool LLPanelWearing::postBuild()
// <FS:Ansariel> Show avatar complexity in appearance floater
mAvatarComplexityLabel = getChild<LLTextBox>("avatar_complexity_label");
// <FS:PP> FIRE-36089: Connect bottom gear menu button to the gear menu
LLMenuButton* gear_btn = findChild<LLMenuButton>("options_gear_btn");
if (gear_btn)
{
gear_btn->setMenu(mGearMenu->getMenu());
}
// </FS:PP>
return true;
}

View File

@ -475,7 +475,7 @@ void LLPreviewTexture::saveTextureToFile(const std::vector<std::string>& filenam
void LLPreviewTexture::saveMultipleToFile(const std::string& file_name)
{
std::string texture_location(gSavedSettings.getString("TextureSaveLocation"));
std::string texture_name = file_name.empty() ? getItem()->getName() : file_name;
std::string texture_name = LLDir::getScrubbedFileName(file_name.empty() ? getItem()->getName() : file_name);
std::string filepath;
S32 i = 0;

View File

@ -7488,7 +7488,7 @@ void LLAlphaObject::getBlendFunc(S32 face, LLRender::eBlendFactor& src, LLRender
void LLStaticViewerObject::updateDrawable(bool force_damped)
{
// Force an immediate rebuild on any update
if (mDrawable.notNull())
if (mDrawable.notNull() && mDrawable->getVObj())
{
mDrawable->updateXform(true);
gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_ALL);

View File

@ -1124,7 +1124,6 @@ F32 LLViewerTextureList::updateImagesCreateTextures(F32 max_time)
imagep->postCreateTexture();
imagep->mCreatePending = false;
mCreateTextureList.pop();
if (imagep->hasGLTexture() && imagep->getDiscardLevel() < imagep->getDesiredDiscardLevel() &&
(imagep->getDesiredDiscardLevel() <= MAX_DISCARD_LEVEL))
@ -1136,6 +1135,8 @@ F32 LLViewerTextureList::updateImagesCreateTextures(F32 max_time)
imagep->scaleDown();
}
mCreateTextureList.pop();
if (create_timer.getElapsedTimeF32() > max_time)
{
break;

View File

@ -781,7 +781,7 @@ void LLGrassPartition::getGeometry(LLSpatialGroup* group)
void LLVOGrass::updateDrawable(bool force_damped)
{
// Force an immediate rebuild on any update
if (mDrawable.notNull())
if (mDrawable.notNull() && mDrawable->getVObj())
{
mDrawable->updateXform(true);
gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_ALL);

View File

@ -38,6 +38,10 @@ class LLVOAvatar;
#include "llcallingcard.h" // for LLFriendObserver
#include "llsecapi.h"
#include "llcontrol.h"
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
// Need to include for audio device mutex shared with other audio/voice systems.
#include "inlinemutexs.h"
// </FS:minerjr> [FIRE-36022]
// devices

View File

@ -82,6 +82,9 @@ extern void handle_voice_morphing_subscribe();
const std::string VIVOX_VOICE_SERVER_TYPE = "vivox";
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
using namespace std::chrono_literals; // Needed for shared timed mutex to use time
// </FS:minerjr> [FIRE-36022]
namespace {
const F32 VOLUME_SCALE_VIVOX = 0.01f;
@ -2412,6 +2415,19 @@ void LLVivoxVoiceClient::sendCaptureAndRenderDevices()
{
if (mCaptureDeviceDirty || mRenderDeviceDirty)
{
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
try // Try catch needed for uniquie lock as will throw an exception if a second lock is attempted or the mutex is invalid
{
// Attempt to lock the access to the audio device, wait up to 1 second for other threads to unlock.
std::unique_lock lock(gAudioDeviceMutex, 1s);
// If the lock could not be accessed, return as we don't have hardware access and will need to try again another pass.
// Prevents threads from interacting with the hardware at the same time as other audio/voice threads.
if (!lock.owns_lock())
{
LL_INFOS() << "Could not access the audio device mutex, trying again later" << LL_ENDL;
return;
}
// </FS:minerjr> [FIRE-36022]
std::ostringstream stream;
buildSetCaptureDevice(stream);
@ -2423,6 +2439,35 @@ void LLVivoxVoiceClient::sendCaptureAndRenderDevices()
}
llcoro::suspendUntilTimeout(UPDATE_THROTTLE_SECONDS);
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
}
// There are two exceptions that unique_lock can trigger, operation_not_permitted or resource_deadlock_would_occur
catch (const std::system_error& e)
{
if (e.code() == std::errc::resource_deadlock_would_occur)
{
// When trying to lock the same lock a second time
LL_WARNS() << "Exception Vinvox: " << e.code() << " " << e.what() << LL_ENDL;
}
else if (e.code() == std::errc::operation_not_permitted)
{
// When the mutex is invalid
LL_WARNS() << "Exception Vinvox: " << e.code() << " " << e.what() << LL_ENDL;
}
else
{
// Everything else
LL_WARNS() << "Exception Vinvox: " << e.code() << " " << e.what() << LL_ENDL;
}
return;
}
catch (const std::exception& e)
{
LL_WARNS() << "Exception Vinvox: " << " " << e.what() << LL_ENDL;
return;
}
// </FS:minerjr> [FIRE-36022]
}
}

View File

@ -80,6 +80,9 @@
const std::string WEBRTC_VOICE_SERVER_TYPE = "webrtc";
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
using namespace std::chrono_literals; // Needed for shared timed mutex to use time
// </FS:minerjr> [FIRE-36022]
namespace {
const F32 MAX_AUDIO_DIST = 50.0f;
@ -506,6 +509,12 @@ void LLWebRTCVoiceClient::voiceConnectionCoro()
try
{
LLMuteList::getInstance()->addObserver(this);
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
// Add a counter to check if the main thread locked up
// to prevent this thread/corutine form filling up
// the mMainQueue.
static U32 crash_check = 0;
// </FS:minerjr> [FIRE-36022]
while (!sShuttingDown)
{
LL_PROFILE_ZONE_NAMED_CATEGORY_VOICE("voiceConnectionCoroLoop")
@ -591,6 +600,26 @@ void LLWebRTCVoiceClient::voiceConnectionCoro()
// to send position updates.
updatePosition();
}
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
// If the device locked, count up by 1
if (gWebRTCUpdateDevices)
{
crash_check++;
}
// Else if the device is not locked, then reset the counter back to 0
else
{
crash_check = 0;
}
// If there are over 10 cycles of the devices being locked, there is a good
// chance that the thread failed due to hardware/audio engine issue.
if (crash_check > 10)
{
LL_WARNS() << "WebRTC detected locked worker thread, will shutdown to prevent total viewer lockup." << LL_ENDL;
// Exit out of the thread and flag WebRTC to shutdown, hopefully clearing the lock and allowing the viewer to continue.
sShuttingDown = true;
}
// </FS:minerjr> [FIRE-36022]
}
LL::WorkQueue::postMaybe(mMainQueue,
[=, this] {
@ -731,6 +760,19 @@ void LLWebRTCVoiceClient::OnDevicesChanged(const llwebrtc::LLWebRTCVoiceDeviceLi
void LLWebRTCVoiceClient::OnDevicesChangedImpl(const llwebrtc::LLWebRTCVoiceDeviceList &render_devices,
const llwebrtc::LLWebRTCVoiceDeviceList &capture_devices)
{
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
try // Try catch needed for uniquie lock as will throw an exception if a second lock is attempted or the mutex is invalid
{
// Attempt to lock the access to the audio device, wait up to 1 second for other threads to unlock.
std::unique_lock lock(gAudioDeviceMutex, 1s);
// If the lock could not be accessed, return as we don't have hardware access and will need to try again another pass.
// Prevents threads from interacting with the hardware at the same time as other audio/voice threads.
if (!lock.owns_lock())
{
LL_INFOS() << "Could not access the audio device mutex, trying again later" << LL_ENDL;
return;
}
// </FS:minerjr> [FIRE-36022]
if (sShuttingDown)
{
return;
@ -774,6 +816,34 @@ void LLWebRTCVoiceClient::OnDevicesChangedImpl(const llwebrtc::LLWebRTCVoiceDevi
}
setDevicesListUpdated(true);
// <FS:minerjr> [FIRE-36022] - Removing my USB headset crashes entire viewer
}
catch (const std::system_error& e)
{
if (e.code() == std::errc::resource_deadlock_would_occur)
{
// When trying to lock the same lock a second time
LL_WARNS() << "Exception WebRTC: " << e.code() << " " << e.what() << LL_ENDL;
}
else if (e.code() == std::errc::operation_not_permitted)
{
// When the mutex is invalid
LL_WARNS() << "Exception WebRTC: " << e.code() << " " << e.what() << LL_ENDL;
}
else
{
// Everything else
LL_WARNS() << "Exception WebRTC: " << e.code() << " " << e.what() << LL_ENDL;
}
return;
}
catch (const std::exception& e)
{
LL_WARNS() << "Exception WebRTC: " << " " << e.what() << LL_ENDL;
return;
}
// </FS:minerjr> [FIRE-36022]
}
void LLWebRTCVoiceClient::clearRenderDevices()

View File

@ -3100,7 +3100,7 @@ void LLPipeline::markMoved(LLDrawable *drawablep, bool damped_motion)
void LLPipeline::markShift(LLDrawable *drawablep)
{
if (!drawablep || drawablep->isDead())
if (!drawablep || drawablep->isDead() || !drawablep->getVObj())
{
return;
}
@ -3134,7 +3134,7 @@ void LLPipeline::shiftObjects(const LLVector3 &offset)
iter != mShiftList.end(); iter++)
{
LLDrawable *drawablep = *iter;
if (drawablep->isDead())
if (drawablep->isDead() || !drawablep->getVObj())
{
continue;
}

View File

@ -852,7 +852,7 @@
bevel_style="none"
follows="all"
label="Favorites"
help_topic="recent_inventory_tab"
help_topic="favorites_inventory_tab"
layout="topleft"
name="Favorites"
show_item_link_overlays="true"

View File

@ -156,6 +156,34 @@
<text name="build_item_add_disp_rect_txt">
Məzmun: [ITEM]
</text>
<check_box name="FSBuildPrefs_UseCustomScript" label="Use custom script for New Script button"/>
<fs_embedded_item_drop_target name="custom_script" tool_tip="Drop a script from your inventory here.">
Drop a script here.
</fs_embedded_item_drop_target>
<text name="custom_script_disp_rect_txt">
Məzmun: [SCRIPT]
</text>
<button label="Defolt Yaratma İcazələri" name="fs_default_creation_permissions" />
<check_box label="Seçilmiş obyektin işıqlandırılması yandırın" tool_tip="Seçilmiş obyektin işıqlandırılması yandırın" name="FSBuildPrefsRenderHighlight_toggle" />
<check_box label="Seçilmiş ərazinin sərhədlərini işıqlandırın" name="RenderParcelSelection"/>
<check_box label="Maksimum tikinti hündürlüyünə sərhəddini göstərin" name="FSRenderParcelSelectionToMaxBuildHeight"/>
<check_box label="Seçim məsafəsi həddi:" name="LimitSelectDistance" width="145" />
<spinner name="MaxSelectDistance" tool_tip="Maksimum icazə verilən seçim məsafəsi (avatardan metrlə) [Defolt: 128.000]" />
<check_box label="Məsafə limitini çəkin:" name="LimitDragDistance" width="145" />
<spinner name="MaxDragDistance" tool_tip="Hərəkət alətlərinin bir əməliyyatında icazə verilən maksimum məsafə (başlanğıc nöqtəsindən metrlə) [Defolt: 48.000]" />
<text name="RotationStepText1" width="135">
Fırlanma məhdudiyyəti
</text>
<spinner name="RotationStep" tool_tip="[Defolt: 1.0]"/>
<text name="RotationStepText2">
dərəcə, əgər şəbəkəyə istinad yoxdursa
</text>
<check_box label="Ən azı neçə obyekt sayında ayırma təsdiq sorğusu" width="305" name="FSUnlinkConfirmEnabled"/>
<text name="MinObjectsForUnlinkConfirmText2">
obyekt
</text>
<check_box label=" &quot;Satış üçün element təyin et&quot; üçün köhnə davranışı təyin edin" tool_tip=" &quot;Satış üçün element təyin et&quot; üçün köhnə davranışı təyin edin" name="FSCommitForSaleOnChange_toggle" />
<check_box label="Teksturaları avadanlıq siyahısından diskə TGA əvəzinə PNG olaraq saxlayın" tool_tip="Teksturaları avadanlıq siyahısından diskə TGA əvəzinə PNG olaraq saxlayın" name="FSTextureDefaultSaveAsFormat" />
<text name="text_box_pivotpoint">
İstinad nöqtəsi
</text>
@ -164,7 +192,14 @@
<spinner label="Yerl. Y" name="Y pos" />
<spinner label="Yerl. Z" name="Z pos" />
<check_box label="Faizlə" tool_tip="Varsayılan olaraq, faizlər hər bir ox üçün 50-yə təyin edilmişdir." name="FSPivotPercToggle" />
<button label="Defolt Yaratma İcazələri" name="fs_default_creation_permissions" />
</panel>
<panel label="Tikinti 2" name="BuildTab2">
<check_box label="Obyektləri tutmaq və manipulyasiya etmək üçün Ctrl + siçan istifadə edin" tool_tip="Obyektləri tutmaq və manipulyasiya etmək üçün Ctrl + siçan istifadə edin" name="FSEnableGrab" />
<check_box label="Tikinti zamanı teksturlar üçün basdıqda miqyaslama (caps lock ilə birlikdə)." tool_tip="Aktivləşdirildikdə, tikinti rejimində teksturalar üçün basım ilə sürükləməyə və ya basdıqda miqyasına (caps lock ilə) icazə verir. Bu xüsusiyyət eksperimentaldır və ehtiyatla istifadə edilməlidir." name="FSExperimentalDragTexture" />
<check_box label="Yükləyərkən öz avatarınızda animasiyaya önbaxış" tool_tip="Yükləyərkən öz avatarınızda animasiyaya önbaxış" name="FSUploadAnimationOnOwnAvatar" />
<check_box label="Genişləndirilmiş Skript Məlumatını aktivləşdirin" name="FSScriptInfoExtended" tool_tip="Aktiv edilərsə, əsas skript məlumatı funksiyasını inşaatçılar üçün faydalı olan müxtəlif detallarla genişləndirir"/>
</panel>
<panel label="Script Editor" name="BuildTabScriptEditor">
<text name="text_box_scripting_font">
Skript yazı tipi:
</text>
@ -179,11 +214,12 @@
<combo_item name="Medium" label="Ortam"/>
<combo_item name="Large" label="Yerkə"/>
</combo_box>
<check_box label="Avadanlıq siyahısında dəyişdirilmiş skriptləri Mono olaraq saxlayın" tool_tip="Avadanlıq siyahısında dəyişdirilmiş skriptləri Mono olaraq saxlayın" name="FSSaveInventoryScriptsAsMono_toggle" />
<check_box label="LSL Önprosessorunu aktivləşdir" tool_tip="Bu seçim aktiv edildikdə, LSL önprosessoru işləyəcəkdir." name="preproc_checkbox" />
<check_box label="Optimallaşdırma" tool_tip="Bu seçim aktiv edildikdə, LSL önprosessoru skript tərəfindən istifadə edilən sahəni optimizə edəcəkdir." name="preprocoptimizer_checkbox" />
<check_box label="switch() operatoru" tool_tip="Bu seçim aktiv edildikdə, LSL önprosessoru switch() operatorunun skript axarını idarə edərkən istifadəsinə icazə verəcəkdir." name="preprocswitch_checkbox" />
<check_box label="Tənbəl siyahılar" tool_tip="Bu seçim aktiv edildikdə, LSL önprosessoru siyahılarla işləmək üçün sintaksis genişlətmələrə icazə verəcəkdir." name="preproclazy_checkbox" />
<check_box label="Diskdən #include" tool_tip="Bu seçim aktiv edildikdə, LSL önprosessoru #include operatorunu sizin yerli sürücünüzə göndərilən fayllarla istifadəyə imkan verəcəkdir." name="preprocinclude_checkbox" />
<check_box label="Diskdən #include" left_delta="110" tool_tip="Bu seçim aktiv edildikdə, LSL önprosessoru #include operatorunu sizin yerli sürücünüzə göndərilən fayllarla istifadəyə imkan verəcəkdir." name="preprocinclude_checkbox" />
<text name="lslpreprocinclude_textbox">
Önprosessor yolu:
</text>
@ -193,33 +229,6 @@
</text>
<button label="Baxış" label_selected="Baxış" name="SetExternalEditor" />
</panel>
<panel label="Tikinti 2" name="BuildTab2">
<check_box label="Seçilmiş obyektin işıqlandırılması yandırın" tool_tip="Seçilmiş obyektin işıqlandırılması yandırın" name="FSBuildPrefsRenderHighlight_toggle" />
<check_box label="Seçilmiş ərazinin sərhədlərini işıqlandırın" name="RenderParcelSelection"/>
<check_box label="Maksimum tikinti hündürlüyünə sərhəddini göstərin" name="FSRenderParcelSelectionToMaxBuildHeight"/>
<check_box label="Seçim məsafəsi həddi:" name="LimitSelectDistance" width="237" />
<spinner name="MaxSelectDistance" tool_tip="Maksimum icazə verilən seçim məsafəsi (avatardan metrlə) [Defolt: 128.000]" />
<check_box label="Məsafə limitini çəkin:" name="LimitDragDistance" width="237" />
<spinner name="MaxDragDistance" tool_tip="Hərəkət alətlərinin bir əməliyyatında icazə verilən maksimum məsafə (başlanğıc nöqtəsindən metrlə) [Defolt: 48.000]" />
<text name="RotationStepText1" width="175">
Fırlanma məhdudiyyəti
</text>
<spinner name="RotationStep" tool_tip="[Defolt: 1.0]"/>
<text name="RotationStepText2">
dərəcə, əgər şəbəkəyə istinad yoxdursa
</text>
<check_box label="Ən azı neçə obyekt sayında ayırma təsdiq sorğusu" name="FSUnlinkConfirmEnabled"/>
<text name="MinObjectsForUnlinkConfirmText2">
obyekt
</text>
<check_box label=" &quot;Satış üçün element təyin et&quot; üçün köhnə davranışı təyin edin" tool_tip=" &quot;Satış üçün element təyin et&quot; üçün köhnə davranışı təyin edin" name="FSCommitForSaleOnChange_toggle" />
<check_box label="Avadanlıq siyahısında dəyişdirilmiş skriptləri Mono olaraq saxlayın" tool_tip="Avadanlıq siyahısında dəyişdirilmiş skriptləri Mono olaraq saxlayın" name="FSSaveInventoryScriptsAsMono_toggle" />
<check_box label="Teksturaları avadanlıq siyahısından diskə TGA əvəzinə PNG olaraq saxlayın" tool_tip="Teksturaları avadanlıq siyahısından diskə TGA əvəzinə PNG olaraq saxlayın" name="FSTextureDefaultSaveAsFormat" />
<check_box label="Obyektləri tutmaq və manipulyasiya etmək üçün Ctrl + siçan istifadə edin" tool_tip="Obyektləri tutmaq və manipulyasiya etmək üçün Ctrl + siçan istifadə edin" name="FSEnableGrab" />
<check_box label="Tikinti zamanı teksturlar üçün basdıqda miqyaslama (caps lock ilə birlikdə)." tool_tip="Aktivləşdirildikdə, tikinti rejimində teksturalar üçün basım ilə sürükləməyə və ya basdıqda miqyasına (caps lock ilə) icazə verir. Bu xüsusiyyət eksperimentaldır və ehtiyatla istifadə edilməlidir." name="FSExperimentalDragTexture" />
<check_box label="Yükləyərkən öz avatarınızda animasiyaya önbaxış" tool_tip="Yükləyərkən öz avatarınızda animasiyaya önbaxış" name="FSUploadAnimationOnOwnAvatar" />
<check_box label="Genişləndirilmiş Skript Məlumatını aktivləşdirin" name="FSScriptInfoExtended" tool_tip="Aktiv edilərsə, əsas skript məlumatı funksiyasını inşaatçılar üçün faydalı olan müxtəlif detallarla genişləndirir"/>
</panel>
<!--Uploads-->
<panel label="Yükləmələr" name="UploadsTab">
<text name="title">

View File

@ -6697,6 +6697,9 @@ Yerləşməniz: [AVATAR_POS]
<string name="Worn Items">
Daşınan əşyalar
</string>
<string name="Favorites">
Sevimlilərim
</string>
<string name="InvOfferGroupNoticeName">
[NAME] adlı qrup üzvü
</string>

View File

@ -32,7 +32,7 @@
Drücken von Eingabetaste bei einem Avatar-Anhang
</text>
<combo_box name="attach_combo">
<combo_box.item label="Fügt Anhang hinzu (empfohlen)" name="0"/>
<combo_box.item label="Anhängen (entfernt bisherigen Anhang am entsprechenden Punkt)" name="1"/>
<combo_box.item label="Fügt Anhang hinzu (empfohlen)" name="1"/>
<combo_box.item label="Anhängen (entfernt bisherigen Anhang am entsprechenden Punkt)" name="0"/>
</combo_box>
</floater>

View File

@ -172,49 +172,14 @@
<text name="build_item_add_disp_rect_txt">
Aktuell gesetzt: [ITEM]
</text>
<text name="text_box_pivotpoint">
Drehpunkt
<check_box name="FSBuildPrefs_UseCustomScript" label="Benutzerdef. Skript für Button „Neues Skript“"/>
<fs_embedded_item_drop_target name="custom_script" tool_tip="Skript aus Inventar hier hinziehen und ablegen.">
Skript hier ablegen.
</fs_embedded_item_drop_target>
<text name="custom_script_disp_rect_txt">
Aktuell gesetzt: [SCRIPT]
</text>
<view_border name="PivotBorder" width="145"/>
<check_box label="Pfeilachsen an Wurzel" tool_tip="Standardverhalten ist, die Achse am Massenzentrum eines Linksets anzuzeigen. Aktivieren, um die Achse am Wurzel-Prim anzuzeigen." name="FSBuildPrefsActualRoot_toggle"/>
<spinner label="X-Position" name="X pos" label_width="60" width="135"/>
<spinner label="Y-Position" name="Y pos" label_width="60" width="135"/>
<spinner label="Z-Position" name="Z pos" label_width="60" width="135"/>
<check_box label="Werte sind in Prozent" tool_tip="Standardwerte sind Prozentangaben mit einem Wert von 50 für jede Achse" name="FSPivotPercToggle"/>
<button label="Standard-Erstellungsberechtigungen" name="fs_default_creation_permissions"/>
<text name="text_box_scripting_font" width="130">
Schrift für Skript-Editor:
</text>
<combo_box name="FSScriptingFontName" tool_tip="Name der Schrift, die für den Skript-Editor verwendet wird">
<combo_item name="Monospace" label="Monospace"/>
<combo_item name="Scripting" label="Scripting"/>
<combo_item name="Cascadia" label="Cascadia Code"/>
</combo_box>
<combo_box name="FSScriptingFontSize" tool_tip="Größe der Schrift, die für den Skript-Editor verwendet wird">
<combo_item name="Monospace" label="Monospace"/>
<combo_item name="Scripting" label="Scripting"/>
<combo_item name="Cascadia" label="Cascadia Code"/>
<combo_item name="Small" label="Klein"/>
<combo_item name="Medium" label="Mittel"/>
<combo_item name="Large" label="Groß"/>
</combo_box>
<check_box label="LSL-Präprozessor aktivieren" tool_tip="Aktiviert die Präprozessorunterstützung für LSL-Skripte" name="preproc_checkbox"/>
<check_box label="Skript-Optimierer" tool_tip="Optimiert den von Skripten benötigten Platz." name="preprocoptimizer_checkbox"/>
<check_box label="switch()-Befehl" tool_tip="Stellt den switch()-Befehl zur Ablaufsteuerung bereit." name="preprocswitch_checkbox"/>
<check_box label="Lazy Lists" tool_tip="Aktiviert eine erweiterte Syntax für Listen-Operationen." name="preproclazy_checkbox"/>
<check_box label="#includes von der Festplatte" tool_tip="Aktiviert #include-Befehle zum Einbinden von Dateien auf der lokalen Festplatte." name="preprocinclude_checkbox"/>
<text name="lslpreprocinclude_textbox">
Include-Verzeichnis für Präprozessor:
</text>
<button label="Durchsuchen" label_selected="Durchsuchen" name="SetPreprocInclude"/>
<text name="externaleditor_textbox">
Externer Editor:
</text>
<button label="Durchsuchen" label_selected="Durchsuchen" name="SetExternalEditor"/>
</panel>
<!--Build 2-->
<panel label="Bauen 2" name="BuildTab2">
<check_box label="Ausgewählte Primitive hervorheben" tool_tip="Deaktivieren, um die gelben und blauen Grundrisse nicht anzuzeigen. Verbessert die Performanz, wenn eine Vielzahl an Primitiven ausgewählt wird." name="FSBuildPrefsRenderHighlight_toggle"/>
<check_box label="Grenze der aktuell selektierten Parzelle hervorheben" name="RenderParcelSelection"/>
<check_box label="Hervorherbung bis zur maximalen Bauhöhe anzeigen" name="FSRenderParcelSelectionToMaxBuildHeight"/>
@ -233,11 +198,23 @@
<text name="MinObjectsForUnlinkConfirmText2">
Einzelobjekten bestätigen
</text>
<check_box label="Altes Verhalten für „Zum Verkauf:“ akt." tool_tip="Falls aktiviert wird die Änderung direkt gespeichert und es ist keine Bestätigung notwendig." name="FSCommitForSaleOnChange_toggle"/>
<check_box label="Texturen standardmäßig im PNG-Format anstelle von TGA speichern" tool_tip="Falls aktiviert, werden Texturen in der Vorschau standardmäßig im PNG-Format gespeichert" name="FSTextureDefaultSaveAsFormat"/>
<text name="text_box_pivotpoint" left_delta="362">
Drehpunkt
</text>
<view_border name="PivotBorder" width="150"/>
<check_box label="Pfeilachsen an Wurzel" tool_tip="Standardverhalten ist, die Achse am Massenzentrum eines Linksets anzuzeigen. Aktivieren, um die Achse am Wurzel-Prim anzuzeigen." name="FSBuildPrefsActualRoot_toggle"/>
<spinner label="X-Position" name="X pos" label_width="60" width="135"/>
<spinner label="Y-Position" name="Y pos" label_width="60" width="135"/>
<spinner label="Z-Position" name="Z pos" label_width="60" width="135"/>
<check_box label="Werte sind in Prozent" tool_tip="Standardwerte sind Prozentangaben mit einem Wert von 50 für jede Achse" name="FSPivotPercToggle"/>
</panel>
<!--Build 2-->
<panel label="Bauen 2" name="BuildTab2">
<check_box label="Strg+Maus zum Greifen und Manipulieren von Objekten verwenden" tool_tip="Falls aktiviert, können Objekte durch Bewegen der Maus bei gleichzeitig gedrückter Strg-Taste gegriffen und bewegt werden." name="FSEnableGrab"/>
<check_box label="Aktiviere Klicken-Ziehen od. Klicken-Skalieren (mit Caps Lock) einer Texturfläche beim Bauen" tool_tip="Falls aktiviert, wird Klicken-Ziehen oder Klicken-Skalieren (mit Caps Lock) einer Texturfläche im Baumodus aktiviert. Dieses ist eine experimentelle Funktion und sollte mit Vorsicht benutzt werden." name="FSExperimentalDragTexture"/>
<check_box label="Altes Verhalten für „Zum Verkauf:“ akt." tool_tip="Falls aktiviert wird die Änderung direkt gespeichert und es ist keine Bestätigung notwendig." name="FSCommitForSaleOnChange_toggle"/>
<check_box label="Vom Inventar aus bearbeitete Skripte als Mono speichern" tool_tip="Speichert Skripte, die direkt vom Inventar aus bearbeitet werden, als Mono anstatt LSL." name="FSSaveInventoryScriptsAsMono_toggle"/>
<check_box label="Texturen standardmäßig im PNG-Format anstelle von TGA speichern" tool_tip="Falls aktiviert, werden Texturen in der Vorschau standardmäßig im PNG-Format gespeichert" name="FSTextureDefaultSaveAsFormat"/>
<check_box label="Vorschau von Animation beim Upload am eigenen Avatar" tool_tip="Falls aktiviert, werden Animationen in der Vorschau am eigenen Avatar abgespielt" name="FSUploadAnimationOnOwnAvatar"/>
<check_box label="Immer erweiterte Informationen zu Animationen anzeigen" tool_tip="Erweiterte Informationen zu Animation im Eigentschaftsfenster anzeigen" name="FSAnimationPreviewExpanded"/>
<check_box label="Erweiterte Skript-Informationen aktivieren" tool_tip="Falls aktiviert, werden die Skript-Informationen um weitergehende Details ergänzt." name="FSScriptInfoExtended"/>
@ -245,6 +222,39 @@
<check_box label="Neues [APP_NAME] Textur-Panel im Werkzeug-Fenster verwenden (Erforder Neustart)" tool_tip="Falls aktiviert, werden die Werkzeuge zum Bearbeiten von Texturen den von [APP_NAME] verbesserten Workflow benutzen und gleichzeitiges Bearbeiten von Blinn-Phong- und PBR-Texturen erlauben." name="FSUseNewTexturePanel"/>
</panel>
<panel label="Script Editor" name="BuildTabScriptEditor">
<text name="text_box_scripting_font" width="130">
Schrift für Skript-Editor:
</text>
<combo_box name="FSScriptingFontName" tool_tip="Name der Schrift, die für den Skript-Editor verwendet wird">
<combo_item name="Monospace" label="Monospace"/>
<combo_item name="Scripting" label="Scripting"/>
<combo_item name="Cascadia" label="Cascadia Code"/>
</combo_box>
<combo_box name="FSScriptingFontSize" tool_tip="Größe der Schrift, die für den Skript-Editor verwendet wird">
<combo_item name="Monospace" label="Monospace"/>
<combo_item name="Scripting" label="Scripting"/>
<combo_item name="Cascadia" label="Cascadia Code"/>
<combo_item name="Small" label="Klein"/>
<combo_item name="Medium" label="Mittel"/>
<combo_item name="Large" label="Groß"/>
</combo_box>
<check_box label="Vom Inventar aus bearbeitete Skripte als Mono speichern" tool_tip="Speichert Skripte, die direkt vom Inventar aus bearbeitet werden, als Mono anstatt LSL." name="FSSaveInventoryScriptsAsMono_toggle"/>
<check_box label="LSL-Präprozessor aktivieren" tool_tip="Aktiviert die Präprozessorunterstützung für LSL-Skripte" name="preproc_checkbox"/>
<check_box label="Skript-Optimierer" tool_tip="Optimiert den von Skripten benötigten Platz." name="preprocoptimizer_checkbox"/>
<check_box label="switch()-Befehl" tool_tip="Stellt den switch()-Befehl zur Ablaufsteuerung bereit." name="preprocswitch_checkbox"/>
<check_box label="Lazy Lists" left_delta="110" tool_tip="Aktiviert eine erweiterte Syntax für Listen-Operationen." name="preproclazy_checkbox"/>
<check_box label="#includes von der Festplatte" tool_tip="Aktiviert #include-Befehle zum Einbinden von Dateien auf der lokalen Festplatte." name="preprocinclude_checkbox"/>
<text name="lslpreprocinclude_textbox">
Include-Verzeichnis für Präprozessor:
</text>
<button label="Durchsuchen" label_selected="Durchsuchen" name="SetPreprocInclude"/>
<text name="externaleditor_textbox">
Externer Editor:
</text>
<button label="Durchsuchen" label_selected="Durchsuchen" name="SetExternalEditor"/>
</panel>
<!--Uploads-->
<panel label="Uploads" name="UploadsTab">
<text name="title">

View File

@ -7203,6 +7203,9 @@ Ihre aktuelle Position: [AVATAR_POS]
<string name="Worn Items">
Angezogene Objekte
</string>
<string name="Favorites">
Favoriten
</string>
<string name="InvOfferGroupNoticeName">
Ein Gruppenmitglied namens [NAME]
</string>

View File

@ -278,11 +278,11 @@
name="attachment_return_txt"
font="SansSerifMedium"
text_color="White"
width="350">
Pressing enter on an avatar attachment
width="420">
Pressing enter or double clicking on an avatar attachment
</text>
<combo_box
control_name="InventoryAddAttachmentBehavior"
control_name="FSDoubleClickAddInventoryObjects"
layout="topleft"
follows="left|top"
top_pad="8"
@ -292,11 +292,11 @@
width="350">
<combo_box.item
label="Adds attachment (recommended)"
name="0"
value="0"/>
<combo_box.item
label="Wear (removes attachment at that point)"
name="1"
value="1"/>
<combo_box.item
label="Wear (removes attachment at that point)"
name="0"
value="0"/>
</combo_box>
</floater>

View File

@ -272,7 +272,7 @@
bevel_style="none"
follows="all"
label="Favorites"
help_topic="recent_inventory_tab"
help_topic="favorites_inventory_tab"
layout="topleft"
name="Favorites"
show_item_link_overlays="true"

View File

@ -1151,7 +1151,7 @@
mouse_opaque="true"
control_name="FSBuildPrefs_EmbedItem"
radio_style="false"
width="270"/>
width="255"/>
<view_border
bevel_style="in"
top_delta="20"
@ -1160,7 +1160,7 @@
left_delta="0"
mouse_opaque="false"
name="embed_item_drop_target_rect"
width="250"/>
width="255"/>
<fs_embedded_item_drop_target
bg_visible="false"
border_visible="false"
@ -1175,7 +1175,7 @@
name="embed_item"
tool_tip="Drop an inventory item here."
v_pad="2"
width="250">
width="255">
Drop an inventory item here.
</fs_embedded_item_drop_target>
<view_border
@ -1186,7 +1186,7 @@
left_delta="0"
mouse_opaque="false"
name="build_item_add_disp_rect"
width="250"/>
width="255"/>
<text
bg_visible="false"
border_visible="false"
@ -1201,12 +1201,245 @@
name="build_item_add_disp_rect_txt"
tool_tip=""
v_pad="2"
width="250">
width="255">
Currently set to: [ITEM]
</text>
<check_box
name="FSBuildPrefs_UseCustomScript"
top="120"
left_pad="5"
enabled="false"
follows="left|top"
font="SansSerifSmall"
height="16"
initial_value="false"
label="Use custom script for New Script button"
mouse_opaque="true"
control_name="FSBuildPrefs_UseCustomScript"
radio_style="false"
width="250"/>
<view_border
bevel_style="in"
top_delta="20"
follows="left|top"
height="16"
left_delta="0"
mouse_opaque="false"
name="custom_script_drop_target_rect"
width="250"/>
<fs_embedded_item_drop_target
bg_visible="false"
border_visible="false"
top_delta="0"
follows="left|top"
font="SansSerifSmall"
h_pad="0"
halign="center"
height="16"
left_delta="0"
mouse_opaque="true"
name="custom_script"
tool_tip="Drop a script from your inventory here."
v_pad="2"
width="250">
Drop a script here.
</fs_embedded_item_drop_target>
<view_border
bevel_style="in"
top_delta="18"
follows="left|top"
height="16"
left_delta="0"
mouse_opaque="false"
name="custom_script_disp_rect"
width="250"/>
<text
top_pad="-60"
left_pad="125"
bg_visible="false"
border_visible="false"
top_delta="0"
follows="left|top"
font="SansSerifSmall"
h_pad="0"
halign="center"
height="16"
left_delta="0"
mouse_opaque="true"
name="custom_script_disp_rect_txt"
tool_tip=""
v_pad="2"
width="250">
Currently set to: [SCRIPT]
</text>
<button
follows="left|top"
height="25"
label="Default Creation Permissions"
layout="topleft"
name="fs_default_creation_permissions"
left="8"
top="185"
width="250">
<button.commit_callback
function="Pref.PermsDefault" />
</button>
<check_box
top_pad="10"
follows="left|top"
height="16"
left="8"
label="Enable highlighting of selected prims"
tool_tip="When unchecked, the yellow/blue outline effects are not rendered, improving performance when large numbers of prims are selected."
name="FSBuildPrefsRenderHighlight_toggle"
control_name="RenderHighlightSelections"/>
<check_box
top_pad="8"
follows="left|top"
height="16"
label="Highlight boundary of currently selected parcel"
name="RenderParcelSelection"
control_name="RenderParcelSelection"
width="190"/>
<check_box
enabled_control="RenderParcelSelection"
top_pad="8"
follows="left|top"
height="16"
left="13"
label="Show boundary up to maximum build height"
name="FSRenderParcelSelectionToMaxBuildHeight"
control_name="FSRenderParcelSelectionToMaxBuildHeight"
width="190"/>
<check_box
top_pad="8"
follows="left|top"
height="16"
left="8"
label="Limit select distance (meters):"
name="LimitSelectDistance"
control_name="LimitSelectDistance"
width="190"/>
<spinner
enabled_control="LimitSelectDistance"
control_name="MaxSelectDistance"
decimal_digits="3"
top_delta="-5"
left_pad="0"
follows="left|top"
height="16"
increment="0.01"
max_val="1024"
min_val="0.001"
name="MaxSelectDistance"
width="75"
tool_tip="Maximum allowed selection distance (meters from avatar) [Default: 128.000]"/>
<check_box
left="8"
top_pad="13"
follows="left|top"
height="16"
label="Limit drag distance (meters):"
name="LimitDragDistance"
control_name="LimitDragDistance"
width="190"/>
<spinner
enabled_control="LimitDragDistance"
control_name="MaxDragDistance"
decimal_digits="3"
top_delta="-5"
left_pad="0"
follows="left|top"
height="16"
increment="0.01"
max_val="1024"
min_val="0.001"
name="MaxDragDistance"
width="75"
tool_tip="Maximum allowed distance in a single operation of move tool (meters from start point) [Default: 48.000]"/>
<text
top_pad="14"
follows="left|top"
height="16"
left="10"
name="RotationStepText1"
width="190">
Constrain rotations to multiples of
</text>
<spinner
control_name="RotationStep"
decimal_digits="2"
top_delta="-5"
left_pad="0"
follows="left|top"
height="16"
increment="0.01"
max_val="359.99"
min_val="0.01"
name="RotationStep"
width="65"
tool_tip="All rotations via rotation tool are constrained to multiples of this unit [Default: 1.0]"/>
<text
left_pad="5"
top_pad="-11"
follows="left|top"
height="16"
name="RotationStepText2"
width="270">
degrees, when not using 'snap to grid'
</text>
<check_box
left="8"
top_pad="8"
follows="left|top"
height="16"
label="Show unlink confirmation dialog if linkset has minimum"
name="FSUnlinkConfirmEnabled"
control_name="FSUnlinkConfirmEnabled"
width="325"/>
<spinner
enabled_control="FSUnlinkConfirmEnabled"
control_name="MinObjectsForUnlinkConfirm"
decimal_digits="0"
top_delta="-5"
left_pad="0"
follows="left|top"
height="16"
increment="1"
max_val="256"
min_val="0"
name="MinObjectsForUnlinkConfirm"
width="65"/>
<text
left_pad="5"
top_pad="-11"
follows="left|top"
height="16"
name="MinObjectsForUnlinkConfirmText2"
width="270">
objects
</text>
<check_box
left="8"
top_pad="8"
follows="left|top"
height="16"
label="Use old &quot;Set Object For Sale&quot; behavior"
tool_tip="When checked, object for sale info is saved on change instead of requiring a confirm."
name="FSCommitForSaleOnChange_toggle"
control_name="FSCommitForSaleOnChange"/>
<check_box
top_pad="8"
follows="left|top"
height="16"
label="Save textures from inventory to disk as PNG instead of TGA by default"
tool_tip="Used in the texture preview floater and context menu in inventory."
name="FSTextureDefaultSaveAsFormat"
control_name="FSTextureDefaultSaveAsFormat"/>
<text
top="185"
left_delta="377"
follows="left|top"
height="10"
name="text_box_pivotpoint"
@ -1281,178 +1514,6 @@
width="100"
control_name="FSBuildPrefs_PivotIsPercent"/>
<button
follows="left|top"
height="25"
label="Default Creation Permissions"
layout="topleft"
name="fs_default_creation_permissions"
left="8"
top="185"
width="250">
<button.commit_callback
function="Pref.PermsDefault" />
</button>
<text
top_pad="10"
left="8"
follows="left|top"
name="text_box_scripting_font"
width="100">
Script Editor Font:
</text>
<combo_box
allow_text_entry="false"
top_delta="-5"
left_pad="5"
follows="left|top"
max_chars="20"
mouse_opaque="true"
name="FSScriptingFontName"
width="100"
control_name="FSScriptingFontName"
tool_tip="Name of the font used in the LSL script editor">
<combo_item name="Monospace" value="Monospace" label="Monospace"/>
<combo_item name="Scripting" value="Scripting" label="Scripting"/>
<combo_item name="Cascadia" value="Cascadia" label="Cascadia Code"/>
</combo_box>
<combo_box
allow_text_entry="false"
top_delta="0"
left_pad="5"
follows="left|top"
max_chars="20"
mouse_opaque="true"
name="FSScriptingFontSize"
width="100"
control_name="FSScriptingFontSize"
tool_tip="Size of the font used in the LSL script editor">
<combo_item name="Monospace" value="Monospace" label="Monospace"/>
<combo_item name="Scripting" value="Scripting" label="Scripting"/>
<combo_item name="Cascadia" value="Cascadia" label="Cascadia Code"/>
<combo_item name="Small" value="Small" label="Small"/>
<combo_item name="Medium" value="Medium" label="Medium"/>
<combo_item name="Large" value="Large" label="Large"/>
</combo_box>
<check_box
follows="left|top"
height="16"
top_pad="10"
left="5"
label="Enable LSL preprocessor"
tool_tip="When checked, the LSL preprocessor is enabled."
name="preproc_checkbox"
control_name="_NACL_LSLPreprocessor" />
<check_box
follows="left|top"
height="16"
left="15"
enabled_control="_NACL_LSLPreprocessor"
label="Script optimizer"
tool_tip="When checked, the LSL preprocessor will optimize space used by scripts."
name="preprocoptimizer_checkbox"
control_name="_NACL_PreProcLSLOptimizer" />
<check_box
follows="left|top"
height="16"
top_delta="0"
left_delta="120"
enabled_control="_NACL_LSLPreprocessor"
label="switch() statement"
tool_tip="When checked, the LSL preprocessor will allow the use of the switch() statement for script flow control."
name="preprocswitch_checkbox"
control_name="_NACL_PreProcLSLSwitch" />
<check_box
follows="left|top"
height="16"
top_delta="0"
left_delta="130"
enabled_control="_NACL_LSLPreprocessor"
label="Lazy lists"
tool_tip="When checked, the LSL preprocessor will allow the use of syntax extensions for list handling."
name="preproclazy_checkbox"
control_name="_NACL_PreProcLSLLazyLists" />
<check_box
follows="left|top"
top_delta="0"
left_delta="80"
height="16"
enabled_control="_NACL_LSLPreprocessor"
label="#includes from local disk"
tool_tip="When checked, the LSL preprocessor will allow #include statements to reference files on your local disk."
name="preprocinclude_checkbox"
control_name="_NACL_PreProcEnableHDDInclude" />
<text
follows="left|top"
height="16"
type="string"
length="1"
layout="topleft"
enabled_control="_NACL_PreProcEnableHDDInclude"
name="lslpreprocinclude_textbox"
left="10"
width="256">
Preprocessor include path:
</text>
<line_editor
control_name="_NACL_PreProcHDDIncludeLocation"
border_style="line"
border_thickness="1"
follows="left|top"
font="SansSerif"
height="23"
enabled_control="_NACL_PreProcEnableHDDInclude"
max_length_chars="4096"
name="preprocinclude_location"
width="310" />
<button
follows="left|top"
height="23"
enabled_control="_NACL_PreProcEnableHDDInclude"
label="Browse"
label_selected="Browse"
left_pad="5"
name="SetPreprocInclude"
top_delta="0"
width="100">
<button.commit_callback
function="NACL.SetPreprocInclude" />
</button>
<text
follows="left|top"
height="16"
type="string"
length="1"
layout="topleft"
name="externaleditor_textbox"
left="10"
width="256">
External Editor:
</text>
<line_editor
control_name="ExternalEditor"
border_style="line"
border_thickness="1"
follows="left|top"
font="SansSerif"
height="23"
max_length_chars="4096"
name="externaleditor_location"
width="310" />
<button
follows="left|top"
height="23"
label="Browse"
label_selected="Browse"
left_pad="5"
name="SetExternalEditor"
top_delta="0"
width="100">
<button.commit_callback
function="Pref.SetExternalEditor" />
</button>
</panel>
<!--Build 2-->
@ -1465,169 +1526,10 @@
label="Build 2"
name="BuildTab2">
<check_box
left="3"
top="10"
follows="left|top"
height="16"
left="3"
label="Enable highlighting of selected prims"
tool_tip="When unchecked, the yellow/blue outline effects are not rendered, improving performance when large numbers of prims are selected."
name="FSBuildPrefsRenderHighlight_toggle"
control_name="RenderHighlightSelections"/>
<check_box
top_pad="8"
follows="left|top"
height="16"
label="Highlight boundary of currently selected parcel"
name="RenderParcelSelection"
control_name="RenderParcelSelection"
width="190"/>
<check_box
enabled_control="RenderParcelSelection"
top_pad="8"
follows="left|top"
height="16"
left="13"
label="Show boundary up to maximum build height"
name="FSRenderParcelSelectionToMaxBuildHeight"
control_name="FSRenderParcelSelectionToMaxBuildHeight"
width="190"/>
<check_box
top_pad="8"
follows="left|top"
height="16"
left="3"
label="Limit select distance (meters):"
name="LimitSelectDistance"
control_name="LimitSelectDistance"
width="190"/>
<spinner
enabled_control="LimitSelectDistance"
control_name="MaxSelectDistance"
decimal_digits="3"
top_delta="-5"
left_pad="0"
follows="left|top"
height="16"
increment="0.01"
max_val="1024"
min_val="0.001"
name="MaxSelectDistance"
width="75"
tool_tip="Maximum allowed selection distance (meters from avatar) [Default: 128.000]"/>
<check_box
left="3"
top_pad="13"
follows="left|top"
height="16"
label="Limit drag distance (meters):"
name="LimitDragDistance"
control_name="LimitDragDistance"
width="190"/>
<spinner
enabled_control="LimitDragDistance"
control_name="MaxDragDistance"
decimal_digits="3"
top_delta="-5"
left_pad="0"
follows="left|top"
height="16"
increment="0.01"
max_val="1024"
min_val="0.001"
name="MaxDragDistance"
width="75"
tool_tip="Maximum allowed distance in a single operation of move tool (meters from start point) [Default: 48.000]"/>
<text
left="3"
top_pad="13"
follows="left|top"
height="16"
name="RotationStepText1"
width="190">
Constrain rotations to multiples of
</text>
<spinner
control_name="RotationStep"
decimal_digits="2"
top_delta="-5"
left_pad="0"
follows="left|top"
height="16"
increment="0.01"
max_val="359.99"
min_val="0.01"
name="RotationStep"
width="65"
tool_tip="All rotations via rotation tool are constrained to multiples of this unit [Default: 1.0]"/>
<text
left_pad="5"
top_pad="-11"
follows="left|top"
height="16"
name="RotationStepText2"
width="270">
degrees, when not using 'snap to grid'
</text>
<check_box
left="3"
top_pad="8"
follows="left|top"
height="16"
label="Show unlink confirmation dialog if linkset has minimum"
name="FSUnlinkConfirmEnabled"
control_name="FSUnlinkConfirmEnabled"
width="325"/>
<spinner
enabled_control="FSUnlinkConfirmEnabled"
control_name="MinObjectsForUnlinkConfirm"
decimal_digits="0"
top_delta="-5"
left_pad="0"
follows="left|top"
height="16"
increment="1"
max_val="256"
min_val="0"
name="MinObjectsForUnlinkConfirm"
width="65"/>
<text
left_pad="5"
top_pad="-11"
follows="left|top"
height="16"
name="MinObjectsForUnlinkConfirmText2"
width="270">
objects
</text>
<check_box
left="3"
top_pad="8"
follows="left|top"
height="16"
label="Use old &quot;Set Object For Sale&quot; behavior"
tool_tip="When checked, object for sale info is saved on change instead of requiring a confirm."
name="FSCommitForSaleOnChange_toggle"
control_name="FSCommitForSaleOnChange"/>
<check_box
top_pad="8"
follows="left|top"
height="16"
label="Save scripts edited from inventory as Mono"
tool_tip="When checked, editing a script directly from inventory and then saving it saves as Mono instead of LSL."
name="FSSaveInventoryScriptsAsMono_toggle"
control_name="FSSaveInventoryScriptsAsMono"/>
<check_box
top_pad="8"
follows="left|top"
height="16"
label="Save textures from inventory to disk as PNG instead of TGA by default"
tool_tip="Used in the texture preview floater and context menu in inventory."
name="FSTextureDefaultSaveAsFormat"
control_name="FSTextureDefaultSaveAsFormat"/>
<check_box
top_pad="8"
follows="left|top"
height="16"
label="Use Ctrl+mouse to grab and manipulate objects"
tool_tip="When checked, you will be able to grab and move objects with your mouse and CTRL key."
name="FSEnableGrab"
@ -1684,6 +1586,198 @@
control_name="FSUseNewTexturePanel"/>
</panel>
<!--Script Editor-->
<panel
top_pad="5"
bottom="-1"
left="1"
right="-1"
follows="all"
label="Script Editor"
name="BuildTabScriptEditor">
<text
top="15"
left="10"
height="16"
follows="left|top"
name="text_box_scripting_font"
width="100">
Script Editor Font:
</text>
<combo_box
allow_text_entry="false"
top_delta="-5"
left_pad="5"
follows="left|top"
max_chars="20"
mouse_opaque="true"
name="FSScriptingFontName"
width="100"
control_name="FSScriptingFontName"
tool_tip="Name of the font used in the LSL script editor">
<combo_item name="Monospace" value="Monospace" label="Monospace"/>
<combo_item name="Scripting" value="Scripting" label="Scripting"/>
<combo_item name="Cascadia" value="Cascadia" label="Cascadia Code"/>
</combo_box>
<combo_box
allow_text_entry="false"
top_delta="0"
left_pad="5"
follows="left|top"
max_chars="20"
mouse_opaque="true"
name="FSScriptingFontSize"
width="100"
control_name="FSScriptingFontSize"
tool_tip="Size of the font used in the LSL script editor">
<combo_item name="Monospace" value="Monospace" label="Monospace"/>
<combo_item name="Scripting" value="Scripting" label="Scripting"/>
<combo_item name="Cascadia" value="Cascadia" label="Cascadia Code"/>
<combo_item name="Small" value="Small" label="Small"/>
<combo_item name="Medium" value="Medium" label="Medium"/>
<combo_item name="Large" value="Large" label="Large"/>
</combo_box>
<check_box
left="10"
top_pad="10"
follows="left|top"
height="16"
label="Save scripts edited from inventory as Mono"
tool_tip="When checked, editing a script directly from inventory and then saving it saves as Mono instead of LSL."
name="FSSaveInventoryScriptsAsMono_toggle"
control_name="FSSaveInventoryScriptsAsMono"/>
<view_border
bevel_style="none"
border_thickness="1"
top_pad="15"
follows="top|left"
height="155"
left="10"
name="PreprocBox"
width="515" />
<check_box
follows="left|top"
height="16"
top_delta="7"
left="15"
label="Enable LSL preprocessor"
tool_tip="When checked, the LSL preprocessor is enabled."
name="preproc_checkbox"
control_name="_NACL_LSLPreprocessor" />
<check_box
follows="left|top"
height="16"
left="20"
top_pad="5"
enabled_control="_NACL_LSLPreprocessor"
label="Script optimizer"
tool_tip="When checked, the LSL preprocessor will optimize space used by scripts."
name="preprocoptimizer_checkbox"
control_name="_NACL_PreProcLSLOptimizer" />
<check_box
follows="left|top"
height="16"
top_delta="0"
left_delta="120"
enabled_control="_NACL_LSLPreprocessor"
label="switch() statement"
tool_tip="When checked, the LSL preprocessor will allow the use of the switch() statement for script flow control."
name="preprocswitch_checkbox"
control_name="_NACL_PreProcLSLSwitch" />
<check_box
follows="left|top"
height="16"
top_delta="0"
left_delta="130"
enabled_control="_NACL_LSLPreprocessor"
label="Lazy lists"
tool_tip="When checked, the LSL preprocessor will allow the use of syntax extensions for list handling."
name="preproclazy_checkbox"
control_name="_NACL_PreProcLSLLazyLists" />
<check_box
follows="left|top"
top_delta="0"
left_delta="80"
height="16"
enabled_control="_NACL_LSLPreprocessor"
label="#includes from local disk"
tool_tip="When checked, the LSL preprocessor will allow #include statements to reference files on your local disk."
name="preprocinclude_checkbox"
control_name="_NACL_PreProcEnableHDDInclude" />
<text
follows="left|top"
height="16"
type="string"
length="1"
layout="topleft"
enabled_control="_NACL_PreProcEnableHDDInclude"
name="lslpreprocinclude_textbox"
left="17"
top_pad="10"
width="256">
Preprocessor include path:
</text>
<line_editor
control_name="_NACL_PreProcHDDIncludeLocation"
border_style="line"
border_thickness="1"
follows="left|top"
font="SansSerif"
height="23"
enabled_control="_NACL_PreProcEnableHDDInclude"
max_length_chars="4096"
name="preprocinclude_location"
width="310" />
<button
follows="left|top"
height="23"
enabled_control="_NACL_PreProcEnableHDDInclude"
label="Browse"
label_selected="Browse"
left_pad="5"
name="SetPreprocInclude"
top_delta="0"
width="100">
<button.commit_callback
function="NACL.SetPreprocInclude" />
</button>
<text
follows="left|top"
height="16"
type="string"
length="1"
layout="topleft"
name="externaleditor_textbox"
left="17"
width="256">
External Editor:
</text>
<line_editor
control_name="ExternalEditor"
border_style="line"
border_thickness="1"
follows="left|top"
font="SansSerif"
height="23"
max_length_chars="4096"
name="externaleditor_location"
width="310" />
<button
follows="left|top"
height="23"
label="Browse"
label_selected="Browse"
left_pad="5"
name="SetExternalEditor"
top_delta="0"
width="100">
<button.commit_callback
function="Pref.SetExternalEditor" />
</button>
</panel>
<!--Uploads-->
<panel
top_pad="5"

View File

@ -3271,6 +3271,7 @@ Your current position: [AVATAR_POS]
<string name="All Items">All Items</string>
<string name="Recent Items">Recent Items</string>
<string name="Worn Items">Worn Items</string>
<string name="Favorites">Favorites</string>
<string name="InvOfferGroupNoticeName">A group member named [NAME]</string>
<string name="CallingCardOnlineLabelSuffix">(online)</string>

View File

@ -129,33 +129,41 @@
<text name="build_item_add_disp_rect_txt">
Actualmente establecido a: [ITEM]
</text>
<check_box name="FSBuildPrefs_UseCustomScript" label="Use custom script for New Script button"/>
<fs_embedded_item_drop_target name="custom_script" tool_tip="Drop a script from your inventory here.">
Drop a script here.
</fs_embedded_item_drop_target>
<text name="custom_script_disp_rect_txt">
Actualmente establecido a: [SCRIPT]
</text>
<check_box label="Resaltar las primitivas seleccionadas" tool_tip="Cuando lo desactivas, no se muestran los efectos amarillos/azules de resaltado, mejorando el rendimiento cuando se selecciona un gran número de primitivas." name="FSBuildPrefsRenderHighlight_toggle"/>
<check_box label="Limitar la distancia de selección:" width="200" name="LimitSelectDistance"/>
<check_box label="Modo antiguo de &quot;Poner en venta&quot;" tool_tip="Cuando lo activas, la información de venta del objeto se guarda al cambiarla, en vez de pedir confirmación." name="FSCommitForSaleOnChange_toggle"/>
<check_box label="Guardar texturas del inventario a disco como PNG en vez de TGA por defecto" tool_tip="Utilizado en la ventana de previsualización de textura y en el menú contextual en el inventario." name="FSTextureDefaultSaveAsFormat"/>
<text name="text_box_pivotpoint">
Punto de pivotaje
</text>
<view_border name="PivotBorder" width="142"/>
<check_box label="Eje en prim raíz" tool_tip="El comportamiento por defecto es mostrar el eje en el centro de masa del conjunto. Si lo activas, el eje se mostrará en la primitiva raíz (principal) del conjunto de primitivas enlazadas." name="FSBuildPrefsActualRoot_toggle"/>
<spinner label="Pos. X" name="X pos"/>
<spinner label="Pos. Y" name="Y pos"/>
<spinner label="Pos. Z" name="Z pos"/>
<check_box label="Valores porcent." tool_tip="Los valores por defecto son porcentajes y cada eje se establece en 50" name="FSPivotPercToggle"/>
</panel>
<panel label="Constr. 2" name="BuildTab2">
<check_box label="Usar Ctrl+ratón para sujetar y manipular objetos" tool_tip="Si lo activas, podrás tomar y mover objetos con tu ratón y la tecla CTRL." name="FSEnableGrab"/>
<check_box label="Permitir Bloq. Mayús. + arrastrar o escalar en una cara de textura en modo de construcción" tool_tip="Si lo activas, permite pulsar-arrastrar o pulsar-escalar de la textura de una cara en el modo de construcción. Esta característica es todavía experimental y debe ser usada con precaución." name="FSExperimentalDragTexture"/>
</panel>
<panel label="Script Editor" name="BuildTabScriptEditor">
<check_box label="Guardar como Mono los scripts editados desde el inventario" tool_tip="Cuando está activado, al editar un script directamente desde el inventario y luego guardarlo, lo guarda como Mono en vez de como LSL." name="FSSaveInventoryScriptsAsMono_toggle"/>
<check_box label="Activar el preprocesador LSL" tool_tip="Marcar para activar el preprocesador LSL." name="preproc_checkbox"/>
<check_box label="Optimizar scripts" tool_tip="Marcar para que el preprocesador LSL optimice el espacio utilizado por los scripts, a costa de su legibilidad." name="preprocoptimizer_checkbox"/>
<check_box label="Instrucción switch()" tool_tip="Marcar para que el preprocesador LSL permita el uso de la instrucción switch() para controlar el flujo de los scripts." name="preprocswitch_checkbox"/>
<check_box label="Lazy lists" tool_tip="Marcar para que el preprocesador LSL permita el uso de extensiones de sintaxis para el manejo de listas." name="preproclazy_checkbox"/>
<check_box label="#includes desde el disco local" tool_tip="Marcar para que el preprocesador LSL permita instrucciones #include para referenciar ficheros en tu sistema local." name="preprocinclude_checkbox"/>
<check_box label="#includes desde el disco local" left_delta="75" tool_tip="Marcar para que el preprocesador LSL permita instrucciones #include para referenciar ficheros en tu sistema local." name="preprocinclude_checkbox"/>
<text name="lslpreprocinclude_textbox">
Ruta include del preprocesador:
</text>
<button label="Examinar" label_selected="Examinar" name="SetPreprocInclude"/>
</panel>
<panel label="Constr. 2" name="BuildTab2">
<check_box label="Resaltar las primitivas seleccionadas" tool_tip="Cuando lo desactivas, no se muestran los efectos amarillos/azules de resaltado, mejorando el rendimiento cuando se selecciona un gran número de primitivas." name="FSBuildPrefsRenderHighlight_toggle"/>
<check_box label="Limitar la distancia de selección:" width="200" name="LimitSelectDistance"/>
<check_box label="Modo antiguo de &quot;Poner en venta&quot;" tool_tip="Cuando lo activas, la información de venta del objeto se guarda al cambiarla, en vez de pedir confirmación." name="FSCommitForSaleOnChange_toggle"/>
<check_box label="Guardar como Mono los scripts editados desde el inventario" tool_tip="Cuando está activado, al editar un script directamente desde el inventario y luego guardarlo, lo guarda como Mono en vez de como LSL." name="FSSaveInventoryScriptsAsMono_toggle"/>
<check_box label="Guardar texturas del inventario a disco como PNG en vez de TGA por defecto" tool_tip="Utilizado en la ventana de previsualización de textura y en el menú contextual en el inventario." name="FSTextureDefaultSaveAsFormat"/>
<check_box label="Usar Ctrl+ratón para sujetar y manipular objetos" tool_tip="Si lo activas, podrás tomar y mover objetos con tu ratón y la tecla CTRL." name="FSEnableGrab"/>
<check_box label="Permitir Bloq. Mayús. + arrastrar o escalar en una cara de textura en modo de construcción" tool_tip="Si lo activas, permite pulsar-arrastrar o pulsar-escalar de la textura de una cara en el modo de construcción. Esta característica es todavía experimental y debe ser usada con precaución." name="FSExperimentalDragTexture"/>
</panel>
</tab_container>
</panel>

View File

@ -22,5 +22,17 @@
<radio_item label="Afficher dans la fenêtre d'inventaire principale" name="false"/>
<radio_item label="Ouvre une nouvelle fenêtre à dossier unique" name="true"/>
</radio_group>
<button label="OK" name="ok_btn"/>
<text name="favorites_txt">
Favoris
</text>
<check_box label="Étoile sur les favoris" name="favorite_star"/>
<check_box label="Étoile sur les dossiers contenant un favori" name="favorite_hollow_star"/>
<check_box label="Texte coloré" name="favorites_color"/>
<text name="attachment_return_txt">
Appuyer sur Entrée sur un élément attaché à l'avatar
</text>
<combo_box name="attach_combo">
<combo_box.item label="Ajoute l'élément (recommandé)" name="1"/>
<combo_box.item label="Porte (Supprime l'élément attaché à cet endroit)" name="0"/>
</combo_box>
</floater>

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<floater name="snapshot_guide_settings" title="Paramètres du guide de cadrage">
<text name="color_and_appearance_label">
Couleur et apparence du guide
</text>
<spinner label="Épaisseur (px)" name="guide_thickness"/>
<slider label="Opacité" name="guide_opacity"/>
<text name="style_label">
Style du guide
</text>
<combo_box name="guide_style_combo" tool_tip="Choisissez le guide de cadrage à afficher">
<combo_box.item name="rule_of_thirds" label="Règle des tiers"/>
<combo_box.item name="golden_ratio_top_left" label="Ratio d'or (en haut à gauche)"/>
<combo_box.item name="golden_ratio_top_right" label="Ratio d'or (en haut à droite)"/>
<combo_box.item name="golden_ratio_bottom_left" label="Ratio d'or (en bas à gauche)"/>
<combo_box.item name="golden_ratio_bottom_right" label="Ratio d'or (en bas à droite)"/>
<combo_box.item name="diagonal" label="Diagonale"/>
</combo_box>
</floater>

View File

@ -51,6 +51,8 @@
<menu_item_call label="Appliquer à la parcelle" name="Settings Apply Parcel"/>
<menu_item_call label="Nouveau dossier à partir de la sélection" name="New folder from selected"/>
<menu_item_call label="Annuler le regroupement par dossier" name="Ungroup folder items"/>
<menu_item_call label="Ajouter aux favoris" name="Add to Favorites"/>
<menu_item_call label="Supprimer des favoris" name="Remove from Favorites"/>
<menu label="Utiliser par défaut pour" name="upload_def">
<menu_item_check label="Le chargement d'images" name="Image uploads"/>
<menu_item_check label="Le chargement de sons" name="Sound uploads"/>

View File

@ -4,6 +4,8 @@
<menu_item_call label="Ajouter à votre tenue" name="wear_add" />
<menu_item_call label="Retirer de votre tenue" name="take_off" />
<menu_item_call label="Image..." name="thumbnail"/>
<menu_item_call label="Ajouter aux favoris" name="favorites_add"/>
<menu_item_call label="Supprimer des favoris" name="favorites_remove"/>
<menu_item_call label="Modifier votre tenue" name="edit"/>
<menu_item_call label="Renommer votre tenue" name="rename"/>
<menu_item_call label="Enregistrer dans cette tenue" name="save"/>

View File

@ -108,6 +108,8 @@
<menu_item_call label="Supprimer le dossier système" name="Delete System Folder"/>
<menu_item_call label="Créer un dossier à partir de la sélection" name="New folder from selected"/>
<menu_item_call label="Dégrouper les éléments du dossier" name="Ungroup folder items"/>
<menu_item_call label="Ajouter aux favoris" name="Add to Favorites"/>
<menu_item_call label="Supprimer des favoris" name="Remove from Favorites"/>
<menu_item_call label="Démarrer le chat conférence" name="Conference Chat Folder"/>
<menu_item_call label="Jouer" name="Sound Play"/>
<menu_item_call label="Copier la SLurl" name="url_copy"/>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<toggleable_menu name="Sort Outfit">
<menu_item_check label="Trier les favoris par ordre décroissant" name="sort_favorites_to_top"/>
<menu_item_check label="Trier les images par ordre décroissant" name="sort_images_to_top"/>
<menu_item_check label="Trier par nom" name="sort_by_name"/>
</toggleable_menu>

View File

@ -10,7 +10,7 @@
<menu_item_check label="Toujours trier les dossiers par nom" name="sort_folders_by_name"/>
<menu_item_call label="Développer tous les dossiers" name="expand"/>
<menu_item_call label="Réduire tous les dossiers" name="collapse"/>
<menu label="Nouveaux habits" name="New Clothes">
<context_menu label="Nouveaux habits" name="New Clothes">
<menu_item_call label="Nouvelle chemise" name="New Shirt"/>
<menu_item_call label="Nouveau pantalon" name="New Pants"/>
<menu_item_call label="Nouvelles chaussures" name="New Shoes"/>
@ -24,11 +24,12 @@
<menu_item_call label="Nouvelles propriétés physiques" name="New Physics"/>
<menu_item_call label="Nouveau tatouage" name="New Tattoo"/>
<menu_item_call label="Nouvel environnement universel" name="New Universal"/>
</menu>
<menu label="Nouvelles parties du corps" name="New Body Parts">
</context_menu>
<context_menu label="Nouvelles parties du corps" name="New Body Parts">
<menu_item_call label="Nouvelle silhouette" name="New Shape"/>
<menu_item_call label="Nouvelle peau" name="New Skin"/>
<menu_item_call label="Nouveaux cheveux" name="New Hair"/>
<menu_item_call label="Nouveaux yeux" name="New Eyes"/>
</menu>
</context_menu>
<menu_item_check label="Paramètres d'inventaire..." name="inventory_settings"/>
</toggleable_menu>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<toggleable_menu name="Sort Outfit">
<menu_item_call label="Développer tous les dossiers" name="expand"/>
<menu_item_call label="Réduire tous les dossiers" name="collapse"/>
<menu_item_check label="Trier les favoris par ordre décroissant" name="sort_favorites_to_top"/>
<menu_item_check label="Afficher la tenue complète dans la recherche" name="show_entire_outfit_in_search"/>
</toggleable_menu>

View File

@ -4,6 +4,8 @@
<menu_item_call label="Ajouter à la tenue actuelle" name="wear_add"/>
<menu_item_call label="Supprimer de la tenue actuelle" name="take_off"/>
<menu_item_call label="Image..." name="thumbnail"/>
<menu_item_call label="Ajouter aux favoris" name="favorites_add"/>
<menu_item_call label="Supprimer des favoris" name="favorites_remove"/>
<menu_item_call label="Modifier la tenue" name="edit"/>
<menu_item_call label="Renommer la tenue" name="rename"/>
<menu_item_call label="Enregister dans cette tenue" name="save"/>

View File

@ -186,10 +186,10 @@
<menu_item_call label="Annuler le lien" name="Unlink"/>
<menu_item_check label="Modifier les parties liées" name="Edit Linked Parts"/>
<menu label="Sélectionner des éléments" name="Select Elements">
<menu_item_call label="Sélectionner la partie suivante ou le visage" name="Select Next Part or Face"/>
<menu_item_call label="Sélectionner la partie précédente ou le visage" name="Select Previous Part or Face"/>
<menu_item_call label="Inclure la partie suivante ou le visage" name="Include Next Part or Face"/>
<menu_item_call label="Inclure la partie précédente ou le visage" name="Include Previous Part or Face"/>
<menu_item_call label="Sélectionner la partie ou la face suivante" name="Select Next Part or Face"/>
<menu_item_call label="Sélectionner la partie ou la face précédente" name="Select Previous Part or Face"/>
<menu_item_call label="Inclure la partie ou la face suivante" name="Include Next Part or Face"/>
<menu_item_call label="Inclure la partie ou la face précédente" name="Include Previous Part or Face"/>
</menu>
<menu_item_call label="Objets des régions" name="pathfinding_linkset_menu_item"/>
<menu_item_call label="Point central sur la sélection" name="Focus on Selection"/>

View File

@ -10,6 +10,8 @@
<menu_item_call label="Détacher" name="detach"/>
<menu_item_call label="Retirer" name="take_off"/>
<menu_item_call label="Profil de l'objet" name="object_profile"/>
<menu_item_call label="Ajouter aux favoris" name="favorites_add"/>
<menu_item_call label="Supprimer des favoris" name="favorites_remove"/>
<menu_item_call label="Afficher l'original" name="show_original"/>
<menu_item_call label="Supprimer de la tenue" name="delete_from_outfit"/>
<menu_item_call label="Créer un nouveau" name="create_new"/>

View File

@ -4,6 +4,8 @@
<menu_item_call label="Enlever" name="take_off"/>
<menu_item_call label="Détacher" name="detach"/>
<menu_item_call label="Retirer / Détacher" name="take_off_or_detach"/>
<menu_item_call label="Ajouter aux favoris" name="favorites_add"/>
<menu_item_call label="Supprimer des favoris" name="favorites_remove"/>
<menu_item_call label="Modifier la tenue" name="edit_outfit"/>
<menu_item_call label="Modifier" name="edit_item"/>
<menu_item_call label="Afficher loriginal" name="show_original"/>

View File

@ -79,7 +79,7 @@
<combo_box.item label="Italique &amp; Souligné" name="ITALICUNDERLINE"/>
<combo_box.item label="Gras, Italique &amp; Souligné" name="BOLDITALICUNDERLINE"/>
</combo_box>
<text name="Moderator Text Style">Text :</text>
<text name="Moderator Text Style">Texte :</text>
<combo_box name="mod_text_style">
<combo_box.item label="Normal" name="normal"/>
<combo_box.item label="Gras" name="BOLD"/>
@ -114,6 +114,7 @@
<check_box name="FSChatbarNamePrediction" label="Activer l'autocomplétion des noms dans le Chat local"/>
<check_box name="AllowMUpose" label="':' est un synonyme pour '/me'"/>
<check_box name="AutoCloseOOC" label="Fermer automatiquement les doubles parenthèses ((OOC))"/>
<check_box name="FSUseChatMentionAutoComplete" label="Activer la fenêtre de mentions @ automatiques lors de la saisie dans les barres de discussion"/>
<check_box name="FSEnableEmojiWindowPopupWhileTyping" label="Activer la fenêtre de sélection auto des émojis lors de la saisie dans la barre de chat"/>
<check_box name="FSShowEmojiButton" label="Afficher le bouton emoji dans la barre de chat pour les IM et les discussions de proximité"/>
<check_box name="FSShowIMSendButton" label="Afficher le bouton d'envoi dans la barre de chat pour les sessions d'IM"/>
@ -138,6 +139,7 @@
<text name="FSShowGroupNameLength_label" width="340">Longueur de nom de groupe à afficher dans les transcriptions</text>
<spinner tool_tip="-1 pour le nom complet, 0 pour désactiver" name="FSShowGroupNameLength"/>
<check_box name="FSOpenIMContainerOnOfflineMessage" label="Afficher les messages reçus hors-ligne à la connexion"/>
<check_box name="FSRestoreOpenIMs" label="Restaurer les conversations de la session précédente avec les résidents"/>
<check_box label="Envoyer les IMs par email si je suis déconnecté ([EMAIL])" name="send_im_to_email"/>
<check_box name="FSShowIMInChatHistory" label="Afficher les IMs dans le Chat local"/>
<check_box name="FSLogIMInChatHistory" label="Sauvegarder les IMs dans le Chat local"/>

View File

@ -111,31 +111,10 @@
<check_box name="FSBuildPrefs_EmbedItem" label="Intégrer un objet dans le nouveau prim"/>
<fs_embedded_item_drop_target name="embed_item" tool_tip="Glissez un objet ici.">Glissez un objet ici.</fs_embedded_item_drop_target>
<text name="build_item_add_disp_rect_txt">Actuellement : [ITEM]</text>
<text name="text_box_pivotpoint">Point de pivot</text>
<check_box label="Axe sur prim racine" tool_tip="Par défaut l'axe est centré sur le centre de gravité d'un ensemble lié. Si activé, l'axe sera affiché sur le prim racine de l'ensemble lié." name="FSBuildPrefsActualRoot_toggle"/>
<spinner label="Pos. X" name="X pos"/>
<spinner label="Pos. Y" name="Y pos"/>
<spinner label="Pos. Z" name="Z pos"/>
<check_box label="Valeurs en %" tool_tip="Par défaut, tout est en pourcentages et chaque axe est fixé à 50" name="FSPivotPercToggle"/>
<check_box name="FSBuildPrefs_UseCustomScript" label="Use custom script for New Script button"/>
<fs_embedded_item_drop_target name="custom_script" tool_tip="Drop a script from your inventory here.">Drop a script here.</fs_embedded_item_drop_target>
<text name="custom_script_disp_rect_txt">Actuellement: [SCRIPT]</text>
<button label="Permissions de création par défaut" name="fs_default_creation_permissions"/>
<text name="text_box_scripting_font" width="155">Police de l'éditeur de script :</text>
<combo_box name="FSScriptingFontName" tool_tip="Nom de la police utilisée dans l'éditeur de script LSL" />
<combo_box name="FSScriptingFontSize" tool_tip="Taille de la police utilisée dans l'éditeur de script LSL">
<combo_item name="Small" label="Petite"/>
<combo_item name="Medium" label="Moyenne"/>
<combo_item name="Large" label="Grande"/>
</combo_box>
<check_box label="Activer le préprocesseur LSL" tool_tip="Quand coché, le préprocesseur LSL est activé." name="preproc_checkbox"/>
<check_box label="Optimiser" tool_tip="Quand coché, le préprocesseur LSL optimisera la place que prennent les scripts." name="preprocoptimizer_checkbox"/>
<check_box label="Condition switch()" left_delta="80" tool_tip="Quand coché, le préprocesseur LSL permettra l'utilisation de la condition switch() pour le contrôle de flux de scripts." name="preprocswitch_checkbox"/>
<check_box label="Simplifications de listes" left_delta="120" tool_tip="Quand coché, le préprocesseur LSL permettra l'utilisation d'extensions de syntaxe pour la manipulation de listes." name="preproclazy_checkbox"/>
<check_box label="#includes depuis le disque" left_delta="150" tool_tip="Quand coché, le préprocesseur LSL permettra à la commande #include de pointer vers des fichiers de votre disque dur." name="preprocinclude_checkbox"/>
<text name="lslpreprocinclude_textbox">Chemin d'inclusion du préprocesseur :</text>
<button label="Parcourir" label_selected="Parcourir" name="SetPreprocInclude"/>
<text name="externaleditor_textbox">Éditeur externe :</text>
<button label="Parcourir" label_selected="Parcourir" name="SetExternalEditor"/>
</panel>
<panel label="Construction 2" name="BuildTab2">
<check_box label="Contours lumineux des prims sélectionnées" tool_tip="Quand décoché, les contours jaunes/bleus ne seront pas affichés, améliorant les performances quand un grand nombre de prims est sélectionné." name="FSBuildPrefsRenderHighlight_toggle"/>
<check_box label="Afficher les limites de la parcellle sélectionnée" name="RenderParcelSelection"/>
<check_box label="Afficher la limite maximale en hauteur pour construire" name="FSRenderParcelSelectionToMaxBuildHeight"/>
@ -149,8 +128,15 @@
<check_box name="FSUnlinkConfirmEnabled" width="400" label="Confirmation de suppression de lien si l'ensemble possède au moins"/>
<text name="MinObjectsForUnlinkConfirmText2">objets</text>
<check_box label="Utiliser l'ancien fonctionnement de 'Mettre cet objet en vente'" tool_tip="Activer cette option sauvegardera directement les informations de vente de l'objet au lieu de nécessiter une confirmation." name="FSCommitForSaleOnChange_toggle"/>
<check_box label="Sauvegarder les scripts édités depuis l'inventaire en Mono" tool_tip="Activer cette option sauvegardera directement les scripts situés dans l'inventaire en Mono au lieu de LSL." name="FSSaveInventoryScriptsAsMono_toggle"/>
<check_box label="Sauvegarder les textures sur le disque dur au format PNG au lieu de TGA" tool_tip="Utilisé dans l'aperçu de texture et dans le menu contextuel de l'inventaire." name="FSTextureDefaultSaveAsFormat"/>
<text name="text_box_pivotpoint">Point de pivot</text>
<check_box label="Axe sur prim racine" tool_tip="Par défaut l'axe est centré sur le centre de gravité d'un ensemble lié. Si activé, l'axe sera affiché sur le prim racine de l'ensemble lié." name="FSBuildPrefsActualRoot_toggle"/>
<spinner label="Pos. X" name="X pos"/>
<spinner label="Pos. Y" name="Y pos"/>
<spinner label="Pos. Z" name="Z pos"/>
<check_box label="Valeurs en %" tool_tip="Par défaut, tout est en pourcentages et chaque axe est fixé à 50" name="FSPivotPercToggle"/>
</panel>
<panel label="Construction 2" name="BuildTab2">
<check_box label="Utiliser Ctrl+clic pour attraper et déplacer des objets" tool_tip="Quand coché, vous pourrez attraper et déplacer des objets en utilisant la souris et la touche Ctrl." name="FSEnableGrab"/>
<check_box label="Déplacer les textures directement en maintenant Shift-Clic en mode construction" tool_tip="Activer cette option vous permettra de faire glisser la texture sur la face de l'objet en mode de construction" name="FSExperimentalDragTexture"/>
<check_box label="Prévisualiser les animations sur son avatar pendant le téléchargement sur le serveur" tool_tip="Si activé, vous pouvez prévisualiser les animations sur votre propre avatar pendant le téléchargement sur le serveur" name="FSUploadAnimationOnOwnAvatar"/>
@ -159,6 +145,25 @@
<check_box label="Points d'attachement alphabétiques dans les menus &quot;Attacher à&quot; (redémarrage requis)" tool_tip="Si cette option est activée, la liste des points d'attachement dans les menus 'Attacher à' sera triée par ordre alphabétique." name="FSSortAttachmentSpotsAlphabetically"/>
<check_box label="Nouveau module de texture Firestorm dans la fenêtre d'outils (nécessite un redémarrage)" tool_tip="Si cette option est activée, les outils d'édition de textures utiliseront le flux de travail amélioré de FS et permettront l'édition de textures Blinn-Phong et PBR." name="FSUseNewTexturePanel"/>
</panel>
<panel label="Script Editor" name="BuildTabScriptEditor">
<text name="text_box_scripting_font" width="155">Police de l'éditeur de script :</text>
<combo_box name="FSScriptingFontName" tool_tip="Nom de la police utilisée dans l'éditeur de script LSL" />
<combo_box name="FSScriptingFontSize" tool_tip="Taille de la police utilisée dans l'éditeur de script LSL">
<combo_item name="Small" label="Petite"/>
<combo_item name="Medium" label="Moyenne"/>
<combo_item name="Large" label="Grande"/>
</combo_box>
<check_box label="Sauvegarder les scripts édités depuis l'inventaire en Mono" tool_tip="Activer cette option sauvegardera directement les scripts situés dans l'inventaire en Mono au lieu de LSL." name="FSSaveInventoryScriptsAsMono_toggle"/>
<check_box label="Activer le préprocesseur LSL" tool_tip="Quand coché, le préprocesseur LSL est activé." name="preproc_checkbox"/>
<check_box label="Optimiser" tool_tip="Quand coché, le préprocesseur LSL optimisera la place que prennent les scripts." name="preprocoptimizer_checkbox"/>
<check_box label="Condition switch()" left_delta="80" tool_tip="Quand coché, le préprocesseur LSL permettra l'utilisation de la condition switch() pour le contrôle de flux de scripts." name="preprocswitch_checkbox"/>
<check_box label="Simplifications de listes" left_delta="117" tool_tip="Quand coché, le préprocesseur LSL permettra l'utilisation d'extensions de syntaxe pour la manipulation de listes." name="preproclazy_checkbox"/>
<check_box label="#includes depuis le disque" left_delta="147" tool_tip="Quand coché, le préprocesseur LSL permettra à la commande #include de pointer vers des fichiers de votre disque dur." name="preprocinclude_checkbox"/>
<text name="lslpreprocinclude_textbox">Chemin d'inclusion du préprocesseur :</text>
<button label="Parcourir" label_selected="Parcourir" name="SetPreprocInclude"/>
<text name="externaleditor_textbox">Éditeur externe :</text>
<button label="Parcourir" label_selected="Parcourir" name="SetExternalEditor"/>
</panel>
<panel label="Chargements" name="UploadsTab">
<text name="title">Dossiers de destination pour les chargements :</text>
<text name="title_sounds">Sons</text>

View File

@ -7076,6 +7076,9 @@ Votre position actuelle : [AVATAR_POS]
<string name="Worn Items">
Eléments portés
</string>
<string name="Favorites">
Mes Favoris
</string>
<string name="InvOfferGroupNoticeName">
Un membre du groupe nommé [NAME]

View File

@ -152,38 +152,14 @@
<text name="build_item_add_disp_rect_txt">
Impostato a: [ITEM]
</text>
<text name="text_box_pivotpoint">
Fulcro oggetto
<check_box name="FSBuildPrefs_UseCustomScript" label="Use custom script for New Script button"/>
<fs_embedded_item_drop_target name="custom_script" tool_tip="Drop a script from your inventory here.">
Drop a script here.
</fs_embedded_item_drop_target>
<text name="custom_script_disp_rect_txt">
Impostato a: [SCRIPT]
</text>
<check_box label="Assi al prim radice" tool_tip="Di solito è impostato il centro non sul prim principale ma sul centro dell&apos;intero oggetto, spuntando questa casella il centro verrà settato sul Prim Root." name="FSBuildPrefsActualRoot_toggle" />
<spinner label="Pos. X" name="X pos" />
<spinner label="Pos. Y" name="Y pos" />
<spinner label="Pos. Z" name="Z pos" />
<check_box label="Valori in percento" tool_tip="Di solito è impostato a 50%" name="FSPivotPercToggle" />
<button label="Permessi predefiniti di creazione" name="fs_default_creation_permissions"/>
<text name="text_box_scripting_font">
Font finestra script:
</text>
<combo_box name="FSScriptingFontSize" tool_tip="Dimensioni del carattere usato nella finestra di modifica script LSL">
<combo_item name="Small" label="Piccolo"/>
<combo_item name="Medium" label="Medio"/>
<combo_item name="Large" label="Grande"/>
</combo_box>
<check_box label="Abilita preprocessore LSL" tool_tip="Quando spuntata, il preprocessore LSL è attivo." name="preproc_checkbox" />
<check_box label="Ottimizza script" tool_tip="Quando spuntato, il preprocessore ottimizza lo spazio usato usato dallo script e migliora la leggibilità." name="preprocoptimizer_checkbox"/>
<check_box label="Istruzione switch()" tool_tip="Quando spuntato, il preprocessore permetterà l&apos; istruzione switch() per controllare il flusso dello script." name="preprocswitch_checkbox"/>
<check_box label="Lazy lists" tool_tip="Quando spuntato, il preprocessore permetterà la sintassi estesa per gestire le liste" name="preproclazy_checkbox"/>
<check_box label="#include da disco" tool_tip="Quando spuntato, il preprocessore permetterà le istruzioni #include per aggiungere file locali." name="preprocinclude_checkbox"/>
<text name="lslpreprocinclude_textbox">
Percorso file da includere per il preprocessore:
</text>
<button label="Sfoglia" label_selected="Sfoglia" name="SetPreprocInclude"/>
<text name="externaleditor_textbox">
Editor esterno:
</text>
<button label="Sfoglia" label_selected="Sfoglia" name="SetExternalEditor" />
</panel>
<panel label="Costruisci 2" name="BuildTab2">
<check_box label="Evidenzia i prim selezionati" tool_tip="Quando non è spuntata questa casella, i prim editati non verranno messi in evidenza con i contorni gialli/blu. Questa casella non spuntata aumenta le prestazioni del viewer evitando crash quando si selezionano molti oggetti." name="FSBuildPrefsRenderHighlight_toggle" />
<check_box label="Evidenzia confini del lotto selezionato" name="RenderParcelSelection"/>
<check_box label="Mostra confini fino all&apos;altezza max costruita" name="FSRenderParcelSelectionToMaxBuildHeight"/>
@ -203,8 +179,17 @@
prim
</text>
<check_box label="Usa il vecchio metodo &quot;Metti oggetto in vendita&quot;" tool_tip="Quando selezionato, l&apos;oggetto in vendita viene salvato senza chiedere conferma" name="FSCommitForSaleOnChange_toggle" />
<check_box label="Salva gli script in inventario come Mono" tool_tip="Quando selezionato, salverà gli script editati nell&apos;inventario con il formato Mono anziché LSL." name="FSSaveInventoryScriptsAsMono_toggle" />
<check_box label="Salva texture da inventario a disco nel formato PNG invece che TGA" tool_tip="Usato nel pannello anteprima texture e nei menu dell&apos;inventario." name="FSTextureDefaultSaveAsFormat"/>
<text name="text_box_pivotpoint">
Fulcro oggetto
</text>
<check_box label="Assi al prim radice" tool_tip="Di solito è impostato il centro non sul prim principale ma sul centro dell&apos;intero oggetto, spuntando questa casella il centro verrà settato sul Prim Root." name="FSBuildPrefsActualRoot_toggle" />
<spinner label="Pos. X" name="X pos" />
<spinner label="Pos. Y" name="Y pos" />
<spinner label="Pos. Z" name="Z pos" />
<check_box label="Valori in percento" tool_tip="Di solito è impostato a 50%" name="FSPivotPercToggle" />
</panel>
<panel label="Costruisci 2" name="BuildTab2">
<check_box label="Usa Ctrl+mouse per afferrare e manipolare oggetti" tool_tip="Permette di afferrare e spostare gli oggetti con il mouse e il tasto CTRL." name="FSEnableGrab"/>
<check_box label="Permetti clic-trascina o clic-scala (Maiusc) di una texture in modalità costruzione" tool_tip="Permette di usare clic-trascina e clic-Maiusc-trascina sulla faccia di una texture in modo costruzione. Opzione sperimentale da usare con cautela." name="FSExperimentalDragTexture"/>
<check_box label="Anteprima delle animazioni sull&apos;avatar durante il caricamento" tool_tip="Si possono vedere le animazioni durante il caricamento usando il proprio avatar" name="FSUploadAnimationOnOwnAvatar"/>
@ -213,6 +198,30 @@
<check_box label="Elenca i punti di attacco nei menu &quot;Attacca a&quot; in ordine alfabetico (richiede riavvio)" tool_tip="Se abilitato, i punti di attacco nei menu &quot;Attacca a&quot; verranno elencati in ordine alfabetico" name="FSSortAttachmentSpotsAlphabetically" />
<check_box label="Usa il nuovo pannello texture di Firestorm nella finestra Costruisci/Modifica (richiede riavvio)" tool_tip="Se abilitata, gli strumenti di modifica delle texture utilizzeranno il pannello FS migliorato e consentiranno la modifica sia delle texture Blinn-Phong che PBR." name="FSUseNewTexturePanel" />
</panel>
<panel label="Script Editor" name="BuildTabScriptEditor">
<text name="text_box_scripting_font">
Font finestra script:
</text>
<combo_box name="FSScriptingFontSize" tool_tip="Dimensioni del carattere usato nella finestra di modifica script LSL">
<combo_item name="Small" label="Piccolo"/>
<combo_item name="Medium" label="Medio"/>
<combo_item name="Large" label="Grande"/>
</combo_box>
<check_box label="Salva gli script in inventario come Mono" tool_tip="Quando selezionato, salverà gli script editati nell&apos;inventario con il formato Mono anziché LSL." name="FSSaveInventoryScriptsAsMono_toggle" />
<check_box label="Abilita preprocessore LSL" tool_tip="Quando spuntata, il preprocessore LSL è attivo." name="preproc_checkbox" />
<check_box label="Ottimizza script" tool_tip="Quando spuntato, il preprocessore ottimizza lo spazio usato usato dallo script e migliora la leggibilità." name="preprocoptimizer_checkbox"/>
<check_box label="Istruzione switch()" tool_tip="Quando spuntato, il preprocessore permetterà l&apos; istruzione switch() per controllare il flusso dello script." name="preprocswitch_checkbox"/>
<check_box label="Lazy lists" tool_tip="Quando spuntato, il preprocessore permetterà la sintassi estesa per gestire le liste" name="preproclazy_checkbox"/>
<check_box label="#include da disco" tool_tip="Quando spuntato, il preprocessore permetterà le istruzioni #include per aggiungere file locali." name="preprocinclude_checkbox"/>
<text name="lslpreprocinclude_textbox">
Percorso file da includere per il preprocessore:
</text>
<button label="Sfoglia" label_selected="Sfoglia" name="SetPreprocInclude"/>
<text name="externaleditor_textbox">
Editor esterno:
</text>
<button label="Sfoglia" label_selected="Sfoglia" name="SetExternalEditor" />
</panel>
<panel label="Caricamenti" name="UploadsTab">
<text name="title">
Cartelle attuali per i caricamenti:

View File

@ -6615,6 +6615,9 @@ Assistenza nel sito SecondLife.com e segnala il problema.
<string name="Worn Items">
Indossati
</string>
<string name="Favorites">
Preferiti
</string>
<string name="InvOfferGroupNoticeName">
Un membro del gruppo di nome [NAME]
</string>

View File

@ -32,7 +32,7 @@
アバターの装着物でEnterキーを押したときの動作
</text>
<combo_box name="attach_combo">
<combo_box.item label="装着物を追加(推奨)" name="0"/>
<combo_box.item label="着用(その場所の装着物を取り除きます)" name="1"/>
<combo_box.item label="装着物を追加(推奨)" name="1"/>
<combo_box.item label="着用(その場所の装着物を取り除きます)" name="0"/>
</combo_box>
</floater>

View File

@ -168,6 +168,34 @@
<text name="build_item_add_disp_rect_txt">
現在の設定:[ITEM]
</text>
<check_box name="FSBuildPrefs_UseCustomScript" label="Use custom script for New Script button"/>
<fs_embedded_item_drop_target name="custom_script" tool_tip="Drop a script from your inventory here.">
Drop a script here.
</fs_embedded_item_drop_target>
<text name="custom_script_disp_rect_txt">
現在の設定: [SCRIPT]
</text>
<button label="デフォルトの作成権限" name="fs_default_creation_permissions"/>
<check_box label="選択したプリムのハイライトを有効にする" tool_tip="チェックを外すと、黄色/青のアウトライン効果は描画されず、多数のプリムが選択された場合のパフォーマンスが向上します。" name="FSBuildPrefsRenderHighlight_toggle"/>
<check_box label="選択中の区画の境界をハイライトする" name="RenderParcelSelection"/>
<check_box label="ビルドできる最大高度の境界を表示する" name="FSRenderParcelSelectionToMaxBuildHeight"/>
<check_box label="遠くにあるオブジェクトを選択しない" width="210" name="LimitSelectDistance"/>
<spinner name="MaxSelectDistance" tool_tip="選択可能な最大距離アバターからのメートルデフォルト128.000"/>
<check_box label="ドラッグできる制限距離(m):" width="210" name="LimitDragDistance"/>
<spinner name="MaxDragDistance" tool_tip="移動ツールで度に移動できる最大距離を入力します。開始点からのメートル指定デフォルト48.000"/>
<text name="RotationStepText1" width="220">
「グリッドにスナップ」を使用していない時
</text>
<spinner name="RotationStep" tool_tip="回転ツールによるすべての回転はこの単位の倍数に制限されます。デフォルト1.0"/>
<text name="RotationStepText2">
度の倍数に回転できる範囲を制限する
</text>
<check_box label="リンク解除の際に警告メッセージを出すリンクセットのオブジェクト数:" width="360" name="FSUnlinkConfirmEnabled"/>
<text name="MinObjectsForUnlinkConfirmText2">
個以上
</text>
<check_box label="クラシックな「売り出し中」の動作を使用" tool_tip="ここにチェックを入れると、「販売対象」のチェックを入れた瞬間にデフォルトのL$10の価格が適用されます。標準では、「販売対象」にチェックを入れた後、価格を修正して「適用」ボタンを押した時に反映されるようになっています。" name="FSCommitForSaleOnChange_toggle"/>
<check_box label="インベントリからディスクにテクスチャを保存する時に、デフォルトでTGAでなくPNGで保存するようにする" tool_tip="テクスチャのプレビューウィンドウまたはインベントリのコンテキストメニューで使用する設定です。" name="FSTextureDefaultSaveAsFormat"/>
<text name="text_box_pivotpoint">
中心軸のポイント
</text>
@ -176,7 +204,17 @@
<spinner label="Y軸" name="Y pos"/>
<spinner label="Z軸" name="Z pos"/>
<check_box label="パーセントで設定" tool_tip="デフォルトではパーセントで設定、どの軸に対しても50%、つまり中央に設定されています。" name="FSPivotPercToggle"/>
<button label="デフォルトの作成権限" name="fs_default_creation_permissions"/>
</panel>
<panel label="ビルド2" name="BuildTab2">
<check_box label="オブジェクトを掴んで移動するのにCtrl+マウスを使用" tool_tip="チェックを入れると、オブジェクトを掴んで移動するのに、Ctrlキーを押しながらマウスで操作できるようになります。" name="FSEnableGrab"/>
<check_box label="ビルドモードにおいて、CapsLockの状態でテクスチャの面をクリック-ドラッグまたはクリック-スケールする" tool_tip="チェックを入れると、ビルドモードでCAPSロックオンの状態で、テクスチャの面をクリック-ドラッグ、クリック-スケールできるようになります。この機能はまだ実験段階ですので、ご利用には十分な注意を払って下さい。" name="FSExperimentalDragTexture"/>
<check_box label="アップロード中にアニメーションを自分のアバターで確認" tool_tip="ここにチェックを入れると、アニメーションのアップロード処理中に自分のアバターでそのアニメーションを再生して確認できます。" name="FSUploadAnimationOnOwnAvatar"/>
<check_box label="アニメーションプレビューの詳細情報は常に展開する" tool_tip="アニメーションプレビューフローターの詳細なアニメーション情報をデフォルトで展開します。" name="FSAnimationPreviewExpanded"/>
<check_box label="拡張スクリプト情報の詳細を有効にする" tool_tip="有効にすると、ビルダーに役立つさまざまな詳細を含む基本的なスクリプト情報機能が拡張されます。" name="FSScriptInfoExtended"/>
<check_box label="「装着先」メニューの装着スポットをアルファベット順に並べ替える(要再起動)" tool_tip="有効にすると、「装着先」メニューの装着物のスポットのリストがアルファベット順に並び替えられます。" name="FSSortAttachmentSpotsAlphabetically"/>
<check_box label="ツールフローターで新式の[APP_NAME]テクスチャパネルを使用する(要再起動)" tool_tip="有効にすると、テクスチャ編集ツールは改良されたワークフローを使用し、BlinnPhongの編集が可能になります。要再起動" name="FSUseNewTexturePanel"/>
</panel>
<panel label="Script Editor" name="BuildTabScriptEditor">
<text name="text_box_scripting_font">
スクリプトエディタのフォント:
</text>
@ -189,6 +227,7 @@
<combo_item name="Medium" label="中"/>
<combo_item name="Large" label="大"/>
</combo_box>
<check_box label="インベントリ内で編集したスクリプトはMonoとして保存" tool_tip="ここにチェックを入れると、インベントリ内で直接編集したスクリプトをLSL2でなく、Monoの形式で保存します。" name="FSSaveInventoryScriptsAsMono_toggle"/>
<check_box label="LSLプリプロセッサを有効にする" tool_tip="ここにチェックを入れるとLSLプリプロセッサが利用できるようになります。" name="preproc_checkbox"/>
<check_box label="スクリプト最適化" tool_tip="ここにチェックを入れると、他のスクリプトファイルを読み込んだ時に、参照されていない無駄なコードを表示せずに読みやすさを最適化します。" name="preprocoptimizer_checkbox"/>
<check_box label="switch()文の利用" tool_tip="ここにチェックを入れると、スクリプトの制御構造にswitch()文が利用できるようになります。" name="preprocswitch_checkbox"/>
@ -203,36 +242,6 @@
</text>
<button label="参照" label_selected="参照" name="SetExternalEditor"/>
</panel>
<panel label="ビルド2" name="BuildTab2">
<check_box label="選択したプリムのハイライトを有効にする" tool_tip="チェックを外すと、黄色/青のアウトライン効果は描画されず、多数のプリムが選択された場合のパフォーマンスが向上します。" name="FSBuildPrefsRenderHighlight_toggle"/>
<check_box label="選択中の区画の境界をハイライトする" name="RenderParcelSelection"/>
<check_box label="ビルドできる最大高度の境界を表示する" name="FSRenderParcelSelectionToMaxBuildHeight"/>
<check_box label="遠くにあるオブジェクトを選択しない" name="LimitSelectDistance"/>
<spinner name="MaxSelectDistance" tool_tip="選択可能な最大距離アバターからのメートルデフォルト128.000"/>
<check_box label="ドラッグできる制限距離(m):" name="LimitDragDistance"/>
<spinner name="MaxDragDistance" tool_tip="移動ツールで度に移動できる最大距離を入力します。開始点からのメートル指定デフォルト48.000"/>
<text name="RotationStepText1">
「グリッドにスナップ」を使用していない時
</text>
<spinner name="RotationStep" tool_tip="回転ツールによるすべての回転はこの単位の倍数に制限されます。デフォルト1.0"/>
<text name="RotationStepText2">
度の倍数に回転できる範囲を制限する
</text>
<check_box label="リンク解除の際に警告メッセージを出すリンクセットのオブジェクト数:" name="FSUnlinkConfirmEnabled"/>
<text name="MinObjectsForUnlinkConfirmText2">
個以上
</text>
<check_box label="クラシックな「売り出し中」の動作を使用" tool_tip="ここにチェックを入れると、「販売対象」のチェックを入れた瞬間にデフォルトのL$10の価格が適用されます。標準では、「販売対象」にチェックを入れた後、価格を修正して「適用」ボタンを押した時に反映されるようになっています。" name="FSCommitForSaleOnChange_toggle"/>
<check_box label="インベントリ内で編集したスクリプトはMonoとして保存" tool_tip="ここにチェックを入れると、インベントリ内で直接編集したスクリプトをLSL2でなく、Monoの形式で保存します。" name="FSSaveInventoryScriptsAsMono_toggle"/>
<check_box label="インベントリからディスクにテクスチャを保存する時に、デフォルトでTGAでなくPNGで保存するようにする" tool_tip="テクスチャのプレビューウィンドウまたはインベントリのコンテキストメニューで使用する設定です。" name="FSTextureDefaultSaveAsFormat"/>
<check_box label="オブジェクトを掴んで移動するのにCtrl+マウスを使用" tool_tip="チェックを入れると、オブジェクトを掴んで移動するのに、Ctrlキーを押しながらマウスで操作できるようになります。" name="FSEnableGrab"/>
<check_box label="ビルドモードにおいて、CapsLockの状態でテクスチャの面をクリック-ドラッグまたはクリック-スケールする" tool_tip="チェックを入れると、ビルドモードでCAPSロックオンの状態で、テクスチャの面をクリック-ドラッグ、クリック-スケールできるようになります。この機能はまだ実験段階ですので、ご利用には十分な注意を払って下さい。" name="FSExperimentalDragTexture"/>
<check_box label="アップロード中にアニメーションを自分のアバターで確認" tool_tip="ここにチェックを入れると、アニメーションのアップロード処理中に自分のアバターでそのアニメーションを再生して確認できます。" name="FSUploadAnimationOnOwnAvatar"/>
<check_box label="アニメーションプレビューの詳細情報は常に展開する" tool_tip="アニメーションプレビューフローターの詳細なアニメーション情報をデフォルトで展開します。" name="FSAnimationPreviewExpanded"/>
<check_box label="拡張スクリプト情報の詳細を有効にする" tool_tip="有効にすると、ビルダーに役立つさまざまな詳細を含む基本的なスクリプト情報機能が拡張されます。" name="FSScriptInfoExtended"/>
<check_box label="「装着先」メニューの装着スポットをアルファベット順に並べ替える(要再起動)" tool_tip="有効にすると、「装着先」メニューの装着物のスポットのリストがアルファベット順に並び替えられます。" name="FSSortAttachmentSpotsAlphabetically"/>
<check_box label="ツールフローターで新式の[APP_NAME]テクスチャパネルを使用する(要再起動)" tool_tip="有効にすると、テクスチャ編集ツールは改良されたワークフローを使用し、BlinnPhongの編集が可能になります。要再起動" name="FSUseNewTexturePanel"/>
</panel>
<!--Uploads-->
<panel label="アップロード" name="UploadsTab">
<text name="title">

View File

@ -6527,6 +6527,7 @@ Rez時間[OBJECT_REZ_TIME]
<string name="All Items">全てのアイテム</string>
<string name="Recent Items">最近のアイテム</string>
<string name="Worn Items">着用中</string>
<string name="Favorites">お気に入り</string>
<string name="InvOfferGroupNoticeName">[NAME]というグループメンバー名</string>
<string name="CallingCardOnlineLabelSuffix">(オンライン)</string>

View File

@ -29,10 +29,10 @@
<check_box label="Gwiazdka przy folderach z ulubionymi" name="favorite_hollow_star" />
<check_box label="Kolor tekstu" name="favorites_color" />
<text name="attachment_return_txt">
Naciśnięcie "Enter" na dodatku awatara
Naciśnięcie "Enter" lub podwójne klikanie na dodatku awatara
</text>
<combo_box name="attach_combo">
<combo_box.item label="Dodaje (zalecane)" name="0" />
<combo_box.item label="Zakłada (usuwa dodatek z tego miejsca)" name="1" />
<combo_box.item label="Dodaje (zalecane)" name="1" />
<combo_box.item label="Zastępuje (usuwa dodatek z tego miejsca)" name="0" />
</combo_box>
</floater>

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="Marketplace">
<layout_stack name="stack1">
<layout_panel name="nav_controls">
<button tool_tip="Wstecz" name="back" />
<button tool_tip="Do przodu" name="forward" />
<button tool_tip="Zatrzymaj" name="stop" />
<button tool_tip="Odśwież stronę" name="reload" />
<combo_box name="address" tool_tip="Tutaj wpisz URL" />
<icon name="media_secure_lock_flag" tool_tip="Bezpieczne przeglądanie (Secured Browsing)" />
<button tool_tip="Otwórz obecny URL w Twojej zewnętrznej przeglądarce internetowej" name="popexternal" />
</layout_panel>
</layout_stack>
</floater>

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="Search" title="Wyszukaj">
<layout_stack name="stack1">
<layout_panel name="nav_controls">
<button tool_tip="Wstecz" name="back" />
<button tool_tip="Do przodu" name="forward" />
<button tool_tip="Zatrzymaj" name="stop" />
<button tool_tip="Odśwież stronę" name="reload" />
<combo_box name="address" tool_tip="Tutaj wpisz URL" />
<icon name="media_secure_lock_flag" tool_tip="Bezpieczne przeglądanie (Secured Browsing)" />
<button tool_tip="Otwórz obecny URL w Twojej zewnętrznej przeglądarce internetowej" name="popexternal" />
</layout_panel>
</layout_stack>
</floater>

View File

@ -4,4 +4,5 @@
<menu_item_call label="Kopiuj" name="Copy"/>
<menu_item_call label="Wklej" name="Paste"/>
<menu_item_call label="Otwórz Web Inspector" name="open_webinspector"/>
<menu_item_call label="Pokaż źródło" name="show_page_source" />
</context_menu>

View File

@ -3,6 +3,7 @@
<menu_item_call label="Profil obiektu..." name="Object Profile"/>
<menu_item_call label="Zablokuj..." name="Block"/>
<menu_item_call label="Odblokuj" name="Unblock"/>
<menu_item_call label="Przybliż" name="zoom_in" />
<menu_item_call label="Pokaż na mapie" name="show_on_map"/>
<menu_item_call label="Teleportuj do pozycji obiektu" name="teleport_to_object"/>
</menu>

View File

@ -3,6 +3,7 @@
<menu_item_call label="Profil obiektu..." name="show_object"/>
<menu_item_call label="Zablokuj" name="block_object"/>
<menu_item_call label="Odblokuj" name="unblock_object"/>
<menu_item_call label="Przybliż" name="zoom_in" />
<menu_item_call label="Pokaż na mapie" name="show_on_map"/>
<menu_item_call label="Teleportuj do miejsca obiektu" name="teleport_to_object"/>
<menu_item_call label="Kopiuj nazwę obiektu do schowka" name="url_copy_label"/>

View File

@ -809,6 +809,15 @@ Oczekiwane: [VALIDS]
Nie można otworzyć przesłanego pliku dźwiękowego:
[FILE]
</notification>
<notification name="ModelUploaderMissingPhysicsApple">
Przesyłanie modeli nie jest jeszcze dostępne na Apple Silicon, ale będzie obsługiwane w nadchodzącym wydaniu.
Obejście: Kliknij prawym przyciskiem myszy aplikację [APP_NAME] w Finderze,
wybierz "Pobierz info", a następnie zaznacz "Otwórz przy użyciu Rosetty".
</notification>
<notification name="ModelUploaderMissingPhysics">
Biblioteka fizyki nie jest obecna, dlatego część funkcji narzędzia przesyłania modeli może nie działać lub nie działać poprawnie.
</notification>
<notification name="SoundFileNotRIFF">
Plik nie jest w formacie RIFF WAVE:
[FILE]
@ -5042,6 +5051,10 @@ Będzie można użyć http://opensimulator.org/wiki/inventory aby rozwiązać pr
Nie można przenieść plików. Przywrócono poprzednią ścieżkę.
<usetemplate ignoretext="Nie można przenieść plików. Przywrócono poprzednią ścieżkę." name="okignore" />
</notification>
<notification name="PreferenceQualityWithLowMemory">
Twój system ma [TOTAL_MEM]MB pamięci, co może nie wystarczyć do uruchamiania przeglądarki na wyższych ustawieniach i może powodować problemy.
<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Kontynuuj" />
</notification>
<notification name="DefaultObjectPermissions">
Wystąpił problem z zapisywaniem domyślnych zezwoleń obiektu: [REASON]. Spróbuj ustawić je ponownie później.
</notification>

View File

@ -54,6 +54,7 @@ Dowiedz się więcej o [https://community.secondlife.com/knowledgebase/joining-a
<button name="add_friend_btn" tool_tip="Dodaj wybranego Rezydenta do znajomych" />
<dnd_button name="nearby_del_btn" tool_tip="Usuń zaznaczoną osobę ze swojej listy znajomych" />
</panel>
<slider label="Zasięg:" name="near_me_range" tool_tip="Zasięg pokazywania osób w pobliżu" />
</panel>
<panel label="Znajomi" name="friends_panel">
<panel name="friends_buttons_panel">

View File

@ -156,42 +156,17 @@
<text name="build_item_add_disp_rect_txt">
Obecnie: [ITEM]
</text>
<text name="text_box_pivotpoint">
Punkt obracania osi
<check_box name="FSBuildPrefs_UseCustomScript" label="Własny skrypt pod przyciskiem Nowy Skrypt"/>
<fs_embedded_item_drop_target name="custom_script" tool_tip="Upuść skrypt w tym miejscu.">
Upuść skrypt w tym miejscu.
</fs_embedded_item_drop_target>
<text name="custom_script_disp_rect_txt">
Obecnie: [SCRIPT]
</text>
<check_box label="Oś na poz. gł. primy" tool_tip="Domyślne zachowanie to pokazywanie osi na środku masy zbioru części. Gdy włączysz tą opcję, to będzie ona pokazywana zamiast tego na głównej primie." name="FSBuildPrefsActualRoot_toggle" />
<spinner label="Poz. X" name="X pos" />
<spinner label="Poz. Y" name="Y pos" />
<spinner label="Poz. Z" name="Z pos" />
<check_box label="Wart. procentowo" tool_tip="Domyślne ustawienie jako procenty, a każda oś na 50" name="FSPivotPercToggle" />
<button label="Domyślne uprawnienia tworzenia" name="fs_default_creation_permissions" />
<text name="text_box_scripting_font" width="150">
Czcionka edytora skryptów:
</text>
<combo_box name="FSScriptingFontName" tool_tip="Nazwa czcionki używanej w edytorze skryptów LSL" />
<combo_box name="FSScriptingFontSize" tool_tip="Rozmiar czcionki używanej w edytorze skryptów LSL">
<combo_item name="Small" label="Mała"/>
<combo_item name="Medium" label="Średnia"/>
<combo_item name="Large" label="Duża"/>
</combo_box>
<check_box label="Włącz preprocesor LSL" tool_tip="Preprocesor LSL będzie aktywny, gdy ta opcja zostanie zaznaczona." name="preproc_checkbox" />
<check_box label="Optymalizator" tool_tip="Gdy ta opcja zostanie zaznaczona, to preprocesor będzie LSL optymalizować miejsce zajmowane przez skrypty." name="preprocoptimizer_checkbox" />
<check_box label="Instrukcja switch()" tool_tip="Gdy ta opcja zostanie zaznaczona, to preprocesor LSL pozwoli na korzystanie z instrukcji switch() do sterowania przepływem skryptu." name="preprocswitch_checkbox" />
<check_box label="Wolne listy" tool_tip="Gdy ta opcja zostanie zaznaczona, to preprocesor LSL pozwoli na korzystanie z rozszerzeń składni do obsługi list." name="preproclazy_checkbox" />
<check_box label="#includes z twardego dysku" tool_tip="Gdy ta opcja zostanie zaznaczona, to preprocesor LSL pozwoli odnosić się instrukcjom #include (dołączania) do plików na Twoim dysku twardym." name="preprocinclude_checkbox" />
<text name="lslpreprocinclude_textbox">
Ścieżka dołączania preprocesora:
</text>
<button label="Przeglądaj" label_selected="Przeglądaj" name="SetPreprocInclude" />
<text name="externaleditor_textbox">
Zewnętrzny edytor:
</text>
<button label="Przeglądaj" label_selected="Przeglądaj" name="SetExternalEditor" />
</panel>
<panel label="Buduj 2" name="BuildTab2">
<check_box label="Podświetlanie wybranych primów" tool_tip="Gdy odznaczysz tą opcję, to żółte/niebieskie podświetlenia krawędzi nie są renderowane - zwiększa wydajność, gdy zaznaczonych jest wiele primów." name="FSBuildPrefsRenderHighlight_toggle" />
<check_box label="Podświetlanie granic wybranej w danej chwili działki" name="RenderParcelSelection" />
<check_box label="Pokazuj granice do maksymalnej wysokości, na jakiej można budować" name="FSRenderParcelSelectionToMaxBuildHeight" />
<check_box label="Pokazuj granice do maksymalnej wysokości budowania" name="FSRenderParcelSelectionToMaxBuildHeight" />
<check_box label="Ogranicz dystans selekcji prim (metry):" name="LimitSelectDistance" width="237" />
<spinner name="MaxSelectDistance" tool_tip="Maksymalna dozwolona odległość zaznaczania obiektów (metry od awatara) [Domyślnie: 128.000]" />
<check_box label="Ogranicz dystans przeciągania (metry):" name="LimitDragDistance" width="237" />
@ -208,8 +183,17 @@
części
</text>
<check_box label="Stare zachowanie &quot;ustaw obiekt na sprzedaż&quot; (zmiana ceny od razu, bez kliku na 'Zastosuj')" tool_tip="Gdy zaznaczone, to informacja o tym, że obiekt jest na sprzedaż zapisywana jest już po zmianie, nie wymagając potwierdzenia." name="FSCommitForSaleOnChange_toggle" />
<check_box label="Zapisuj skrypty edytowane w Szafie jako Mono" tool_tip="Gdy zaznaczone, to wszystkie skrypty edytowane w Szafie są zapisywane jako Mono zamiast LSL." name="FSSaveInventoryScriptsAsMono_toggle" />
<check_box label="Zapisuj tekstury z Szafy na dysk domyślnie jako PNG zamiast TGA" tool_tip="Używane w oknie podglądu tekstur oraz menu kontekstowym Szafy." name="FSTextureDefaultSaveAsFormat" />
<text name="text_box_pivotpoint">
Punkt obracania osi
</text>
<check_box label="Oś na poz. gł. primy" tool_tip="Domyślne zachowanie to pokazywanie osi na środku masy zbioru części. Gdy włączysz tą opcję, to będzie ona pokazywana zamiast tego na głównej primie." name="FSBuildPrefsActualRoot_toggle" />
<spinner label="Poz. X" name="X pos" />
<spinner label="Poz. Y" name="Y pos" />
<spinner label="Poz. Z" name="Z pos" />
<check_box label="Wart. procentowo" tool_tip="Domyślne ustawienie jako procenty, a każda oś na 50" name="FSPivotPercToggle" />
</panel>
<panel label="Buduj 2" name="BuildTab2">
<check_box label="Używaj CTRL+myszki, aby chwytać obiekty i manipulować nimi" tool_tip="Gdy zaznaczysz tą opcję, to będziesz w stanie chwytać i przesuwać obiekty za pomocą myszki oraz klawisza CTRL." name="FSEnableGrab" />
<check_box label="Przesuwaj / skaluj tekstury budując, gdy trzymany jest przycisk myszy oraz klawisz caps-lock" tool_tip="Gdy zaznaczysz tą opcję, to będziesz mógł/mogła przesuwać lub skalować strony tekstur trzymając przycisk myszy (wraz z klawiszem caps-lock) w trybie budowania. Ta funkcja jest eksperymentalna i powinna być używana ostrożnie." name="FSExperimentalDragTexture" />
<check_box label="Podgląd animacji na własnym awatarze podczas przesyłania ich na serwer" tool_tip="Gdy zaznaczysz tą opcję, to będziesz w stanie oglądać animacje na swoim własnym awatarze podczas przesyłania ich na serwer" name="FSUploadAnimationOnOwnAvatar" />
@ -218,6 +202,31 @@
<check_box label="Sortuj miejsca dodatków w sekcjach menu &quot;Dołącz do&quot; alfabetycznie (wymaga restartu)" tool_tip="Jeśli ta opcja jest włączona, to lista miejsc dla doczepienia dodatków pojawiająca się w menusach &quot;Dołącz do&quot; będzie posortowana alfabetycznie" name="FSSortAttachmentSpotsAlphabetically" />
<check_box label="Nowy panel tekstur [APP_NAME] w panelu budowania (wymaga restartu)" tool_tip="Gdy zaznaczysz tą opcję, to narzędzia do edycji tekstur będą korzystać z udoskonalonego panelu [APP_NAME] i pozwolą na edycję tekstur BlinnPhong oraz PBR." name="FSUseNewTexturePanel" />
</panel>
<panel label="Edytor skryptów" name="BuildTabScriptEditor">
<text name="text_box_scripting_font" width="150">
Czcionka edytora skryptów:
</text>
<combo_box name="FSScriptingFontName" tool_tip="Nazwa czcionki używanej w edytorze skryptów LSL" />
<combo_box name="FSScriptingFontSize" tool_tip="Rozmiar czcionki używanej w edytorze skryptów LSL">
<combo_item name="Small" label="Mała"/>
<combo_item name="Medium" label="Średnia"/>
<combo_item name="Large" label="Duża"/>
</combo_box>
<check_box label="Zapisuj skrypty edytowane w Szafie jako Mono" tool_tip="Gdy zaznaczone, to wszystkie skrypty edytowane w Szafie są zapisywane jako Mono zamiast LSL." name="FSSaveInventoryScriptsAsMono_toggle" />
<check_box label="Włącz preprocesor LSL" tool_tip="Preprocesor LSL będzie aktywny, gdy ta opcja zostanie zaznaczona." name="preproc_checkbox" />
<check_box label="Optymalizator" tool_tip="Gdy ta opcja zostanie zaznaczona, to preprocesor będzie LSL optymalizować miejsce zajmowane przez skrypty." name="preprocoptimizer_checkbox" />
<check_box label="Instrukcja switch()" tool_tip="Gdy ta opcja zostanie zaznaczona, to preprocesor LSL pozwoli na korzystanie z instrukcji switch() do sterowania przepływem skryptu." name="preprocswitch_checkbox" />
<check_box label="Wolne listy" tool_tip="Gdy ta opcja zostanie zaznaczona, to preprocesor LSL pozwoli na korzystanie z rozszerzeń składni do obsługi list." name="preproclazy_checkbox" />
<check_box label="#includes z twardego dysku" tool_tip="Gdy ta opcja zostanie zaznaczona, to preprocesor LSL pozwoli odnosić się instrukcjom #include (dołączania) do plików na Twoim dysku twardym." name="preprocinclude_checkbox" />
<text name="lslpreprocinclude_textbox">
Ścieżka dołączania preprocesora:
</text>
<button label="Przeglądaj" label_selected="Przeglądaj" name="SetPreprocInclude" />
<text name="externaleditor_textbox">
Zewnętrzny edytor:
</text>
<button label="Przeglądaj" label_selected="Przeglądaj" name="SetExternalEditor" />
</panel>
<panel label="Nowe pliki" name="UploadsTab">
<text name="title">
Obecne lokalizacje dla nowych plików:

View File

@ -6576,6 +6576,9 @@ Twoja aktualna pozycja: [AVATAR_POS]
<string name="Worn Items">
Założone
</string>
<string name="Favorites">
Ulubione
</string>
<string name="InvOfferGroupNoticeName">
Osoba z grupy o imieniu [NAME]
</string>

View File

@ -32,7 +32,7 @@
Нажатие Enter при прикреплении аватара
</text>
<combo_box name="attach_combo" width="350">
<combo_box.item label="Добавляет прикрепление (рекомендуется)" name="0"/>
<combo_box.item label="Заменяет (удаляет прикрепление в этой точке)" name="1"/>
<combo_box.item label="Добавляет прикрепление (рекомендуется)" name="1"/>
<combo_box.item label="Заменяет (удаляет прикрепление в этой точке)" name="0"/>
</combo_box>
</floater>

View File

@ -157,44 +157,14 @@
<text name="build_item_add_disp_rect_txt">
Содержимое: [ITEM]
</text>
<text name="text_box_pivotpoint">
Точка опоры
<check_box name="FSBuildPrefs_UseCustomScript" label="Use custom script for New Script button"/>
<fs_embedded_item_drop_target name="custom_script" tool_tip="Drop a script from your inventory here.">
Drop a script here.
</fs_embedded_item_drop_target>
<text name="custom_script_disp_rect_txt">
Содержимое: [SCRIPT]
</text>
<check_box label="Оси на корне" tool_tip="По умолчанию оси отображаются в центре объедененных примов. Если включена эта опция, то оси отображаются в центре корневого прима" name="FSBuildPrefsActualRoot_toggle" />
<spinner label="Поз. X" name="X pos" />
<spinner label="Поз. Y" name="Y pos" />
<spinner label="Поз. Z" name="Z pos" />
<check_box label="В процентах" tool_tip="По умолчанию проценты установлены на каждую ось по 50" name="FSPivotPercToggle" />
<button label="Разрешения создания по умолчанию" name="fs_default_creation_permissions" />
<text name="text_box_scripting_font">
Шрифт скриптов:
</text>
<combo_box name="FSScriptingFontName" tool_tip="Имя шрифта используемого в редакторе LSL-скриптов">
<combo_item name="Monospace" label="Моноширный"/>
<combo_item name="Scripting" label="Скриптовый"/>
</combo_box>
<combo_box name="FSScriptingFontSize" tool_tip="Размер шрифта используемого в редакторе LSL-скриптов">
<combo_item name="Monospace" label="Моноширный"/>
<combo_item name="Scripting" label="Скриптовый"/>
<combo_item name="Small" label="Мелкий"/>
<combo_item name="Medium" label="Средний"/>
<combo_item name="Large" label="Крупный"/>
</combo_box>
<check_box label="Включить процессор предварительной обработки LSL" tool_tip="Включить процессор предварительной обработки LSL." name="preproc_checkbox" />
<check_box label="Оптимизатор" tool_tip="Препроцессор LSL позволит оптимизировать пространство, используемое скриптами за счет чтения." name="preprocoptimizer_checkbox" />
<check_box label="Инструкция switch()" left_delta="110" width="150" tool_tip="Препроцессор LSL позволит использовать switch() statement для контроля потока скриптов" name="preprocswitch_checkbox" />
<check_box label="Ленивые списки" left_delta="145" width="150" tool_tip="Препроцессор LSL позволит использовать расширений синтаксис для обработки списка." name="preproclazy_checkbox" />
<check_box label="#includes с диска" left_delta="125" tool_tip="Препроцессор LSL разрешает использовать #include для ссылок на файлы на локальном диске." name="preprocinclude_checkbox" />
<text name="lslpreprocinclude_textbox">
Путь для препроцессора:
</text>
<button label="Просмотреть" label_selected="Просмотреть" name="SetPreprocInclude" />
<text name="externaleditor_textbox">
Внешний Редактор:
</text>
<button label="Просмотреть" label_selected="Просмотреть" name="SetExternalEditor" />
</panel>
<panel label="Строить 2" name="BuildTab2">
<check_box label="Включить подсветку выбранного объекта" tool_tip="Включить подсветку выбранного объекта" name="FSBuildPrefsRenderHighlight_toggle" />
<check_box label="Высветить границы выбранного участка" name="RenderParcelSelection"/>
<check_box label="Показать границу до максимальной высоты строительства" name="FSRenderParcelSelectionToMaxBuildHeight"/>
@ -214,8 +184,17 @@
объектов
</text>
<check_box label="Установить старое поведение для &quot;Установить объект на продажу&quot;" tool_tip="Установить старое поведение для &quot;Установить объект на продажу&quot;" name="FSCommitForSaleOnChange_toggle" />
<check_box label="Сохранять скрипты редактируемые в инвенторе как Моно" tool_tip="Сохранять скрипты редактируемые в инвенторе как Моно" name="FSSaveInventoryScriptsAsMono_toggle" />
<check_box label="Сохранить текстуры из инвентаря на диск в виде PNG вместо TGA" tool_tip="Сохранить текстуры из инвентаря на диск в виде PNG вместо TGA" name="FSTextureDefaultSaveAsFormat" />
<text name="text_box_pivotpoint">
Точка опоры
</text>
<check_box label="Оси на корне" tool_tip="По умолчанию оси отображаются в центре объедененных примов. Если включена эта опция, то оси отображаются в центре корневого прима" name="FSBuildPrefsActualRoot_toggle" />
<spinner label="Поз. X" name="X pos" />
<spinner label="Поз. Y" name="Y pos" />
<spinner label="Поз. Z" name="Z pos" />
<check_box label="В процентах" tool_tip="По умолчанию проценты установлены на каждую ось по 50" name="FSPivotPercToggle" />
</panel>
<panel label="Строить 2" name="BuildTab2">
<check_box label="Используйте Ctrl + мышь, чтобы захватить и манипулировать объектами" tool_tip="Используйте Ctrl + мышь, чтобы захватить и манипулировать объектами" name="FSEnableGrab" />
<check_box label="Масштабирование при нажатии (вместе с caps lock) для текстур при строительстве" tool_tip="При включении, позволяет тянуть при нажатии или масштаб при нажатии (вместе с caps lock) для текстур в режиме строительства. Эта функция эксперементальная и ее следует использовать с осторожностью." name="FSExperimentalDragTexture" />
<check_box label="Предварительный просмотр анимации на собственном аватара во время загрузки" tool_tip="Предварительный просмотр анимации на собственном аватара во время загрузки" name="FSUploadAnimationOnOwnAvatar" />
@ -224,6 +203,36 @@
<check_box label="Сортировка прикреплений в &quot;Прикрепить к&quot; меню по алфавиту (нужна перезагрузка)" tool_tip="Если этот параметр включен, список прикреплений в &quot;Прикрепить к&quot; меню будут отсортированы по алфавиту" name="FSSortAttachmentSpotsAlphabetically"/>
<check_box label="Новая панель текстур [APP_NAME] в Инструментах (нужна перезагрузка)" tool_tip="Если этот параметр включен, инструменты редактирования текстур будут использовать усовершенствованный рабочий процесс [APP_NAME] и позволят редактировать БлиннФонг и PBR-текстуры." name="FSUseNewTexturePanel"/>
</panel>
<panel label="Script Editor" name="BuildTabScriptEditor">
<text name="text_box_scripting_font">
Шрифт скриптов:
</text>
<combo_box name="FSScriptingFontName" tool_tip="Имя шрифта используемого в редакторе LSL-скриптов">
<combo_item name="Monospace" label="Моноширный"/>
<combo_item name="Scripting" label="Скриптовый"/>
</combo_box>
<combo_box name="FSScriptingFontSize" tool_tip="Размер шрифта используемого в редакторе LSL-скриптов">
<combo_item name="Monospace" label="Моноширный"/>
<combo_item name="Scripting" label="Скриптовый"/>
<combo_item name="Small" label="Мелкий"/>
<combo_item name="Medium" label="Средний"/>
<combo_item name="Large" label="Крупный"/>
</combo_box>
<check_box label="Сохранять скрипты редактируемые в инвенторе как Моно" tool_tip="Сохранять скрипты редактируемые в инвенторе как Моно" name="FSSaveInventoryScriptsAsMono_toggle" />
<check_box label="Включить процессор предварительной обработки LSL" tool_tip="Включить процессор предварительной обработки LSL." name="preproc_checkbox" />
<check_box label="Оптимизатор" tool_tip="Препроцессор LSL позволит оптимизировать пространство, используемое скриптами за счет чтения." name="preprocoptimizer_checkbox" />
<check_box label="Инструкция switch()" left_delta="110" width="150" tool_tip="Препроцессор LSL позволит использовать switch() statement для контроля потока скриптов" name="preprocswitch_checkbox" />
<check_box label="Ленивые списки" left_delta="145" width="150" tool_tip="Препроцессор LSL позволит использовать расширений синтаксис для обработки списка." name="preproclazy_checkbox" />
<check_box label="#includes с диска" left_delta="125" tool_tip="Препроцессор LSL разрешает использовать #include для ссылок на файлы на локальном диске." name="preprocinclude_checkbox" />
<text name="lslpreprocinclude_textbox">
Путь для препроцессора:
</text>
<button label="Просмотреть" label_selected="Просмотреть" name="SetPreprocInclude" />
<text name="externaleditor_textbox">
Внешний Редактор:
</text>
<button label="Просмотреть" label_selected="Просмотреть" name="SetExternalEditor" />
</panel>
<!--Uploads-->
<panel label="Загрузки" name="UploadsTab">
<text name="title">

View File

@ -6821,6 +6821,9 @@ ID объекта: [INSPECTING_KEY]
<string name="Worn Items">
Надетые предметы
</string>
<string name="Favorites">
Избранные
</string>
<string name="InvOfferGroupNoticeName">
Член группы по имени [NAME]
</string>

View File

@ -32,7 +32,7 @@
在化身附件上按下“Enter”鍵
</text>
<combo_box name="attach_combo">
<combo_box.item label="添加附件(推薦)" name="0" />
<combo_box.item label="穿上(替換附著點上的物件)" name="1" />
<combo_box.item label="添加附件(推薦)" name="1" />
<combo_box.item label="穿上(替換附著點上的物件)" name="0" />
</combo_box>
</floater>

View File

@ -110,13 +110,41 @@
<check_box name="FSBuildPrefs_EmbedItem" label="將物件嵌入新的元素" />
<fs_embedded_item_drop_target name="embed_item" tool_tip="將物件拖到此處">將物件拖到此處</fs_embedded_item_drop_target>
<text name="build_item_add_disp_rect_txt">當前: [ITEM]</text>
<check_box name="FSBuildPrefs_UseCustomScript" label="Use custom script for New Script button"/>
<fs_embedded_item_drop_target name="custom_script" tool_tip="Drop a script from your inventory here.">Drop a script here.</fs_embedded_item_drop_target>
<text name="custom_script_disp_rect_txt">當前: [SCRIPT]</text>
<button label="預設建立權限" name="fs_default_creation_permissions" />
<check_box label="高亮選定元素邊框" tool_tip="取消選擇將不顯示黃色/藍色邊框,當選擇大量元素時,可提高效能。" name="FSBuildPrefsRenderHighlight_toggle" />
<check_box label="顯示所選地塊邊界" name="RenderParcelSelection" />
<check_box label="顯示建造的最大高度限制" name="FSRenderParcelSelectionToMaxBuildHeight" />
<check_box label="選擇距離限制(米):" name="LimitSelectDistance" width="140" />
<spinner name="MaxSelectDistance" tool_tip="選擇的最大允許距離(從化身出發到,單位:米) [預設值128.000]" />
<check_box label="拖動距離限制(米):" name="LimitDragDistance" width="140" />
<spinner name="MaxDragDistance" tool_tip="單次移動的最大允許距離(從起始點,單位:米) [預設值48.000]" />
<text width="120" name="RotationStepText1">旋轉限制為以下倍數:</text>
<spinner name="RotationStep" width="45" tool_tip="透過旋轉工具進行的所有旋轉都將約束為指定數的倍數預設值1.0" />
<text name="RotationStepText2">度,如果「對齊到網格」未啟用</text>
<check_box width="250" name="FSUnlinkConfirmEnabled" label="如果集合中至少包含以下數量,則刪除聯結時確認" />
<text name="MinObjectsForUnlinkConfirmText2">個物件</text>
<check_box label="在「設定此物件出售」時使用舊功能" tool_tip="啟用此選項將直接儲存物件的銷售資訊,而不需要確認。" name="FSCommitForSaleOnChange_toggle" />
<check_box label="將紋理儲存到硬碟上的 PNG 格式而不是 TGA" tool_tip="用於紋理預覽和庫存上下文選單。" name="FSTextureDefaultSaveAsFormat" />
<text name="text_box_pivotpoint">軸心點</text>
<check_box label="根元素軸" tool_tip="預設情況下,軸位於聯結集的重心位置。 如果啟用,則軸將位於聯結集的子元素上。" name="FSBuildPrefsActualRoot_toggle" />
<spinner label="X 軸" name="X pos" />
<spinner label="Y 軸" name="Y pos" />
<spinner label="Z 軸" name="Z pos" />
<check_box label="百分比" tool_tip="預設情況下,所有值都是百分比,每個軸都固定為 50%" name="FSPivotPercToggle" />
<button label="預設建立權限" name="fs_default_creation_permissions" />
</panel>
<panel label="建造 2" name="BuildTab2">
<check_box label="使用 Ctrl+單擊來捕獲和移動物件" tool_tip="勾選此項,您可以使用滑鼠和 Ctrl 鍵來捕獲和移動物件。" name="FSEnableGrab" />
<check_box label="在建造模式下按住 Shift+單擊直接拖動紋理" tool_tip="啟用此選項後,您可以在建造模式下直接將紋理拖放到物件的表面上。" name="FSExperimentalDragTexture" />
<check_box label="上傳到伺服器時在自己的化身上預覽動畫" tool_tip="如果啟用,您可以在上傳到伺服器時用自己的化身預覽動畫。" name="FSUploadAnimationOnOwnAvatar" />
<check_box label="始終展開動畫預覽的詳細資訊" tool_tip="動畫預覽懸浮窗中的詳細資訊預設展開。" name="FSAnimationPreviewExpanded" />
<check_box label="為指令碼啟用詳細資訊" tool_tip="啟用後,將向指令碼基本資訊中新增對創造者有用的詳細資訊。" name="FSScriptInfoExtended" />
<check_box label="按字母順序排序「附著到」選單中的附著點(需要重新啟動)" tool_tip="如果啟用此選項,「附著到」選單中的附件點列表將按字母順序排序。" name="FSSortAttachmentSpotsAlphabetically" />
<check_box label="在工具視窗中使用新的[APP_NAME]紋理面板(需要重新啟動)" tool_tip="如果啟用,紋理編輯工具將使用改進的[APP_NAME]工作流,並允許編輯BlinnPhong和PBR材質" name="FSUseNewTexturePanel" />
</panel>
<panel label="Script Editor" name="BuildTabScriptEditor">
<text name="text_box_scripting_font" width="155">指令碼編輯器字型:</text>
<combo_box name="FSScriptingFontName" tool_tip="LSL 指令碼編輯器中使用的字型名稱">
<combo_item name="Monospace" label="等寬" />
@ -131,6 +159,7 @@
<combo_item name="Medium" label="中" />
<combo_item name="Large" label="大" />
</combo_box>
<check_box label="將編輯的指令碼儲存到 Mono 中" tool_tip="啟用此選項將直接將儲存在庫存中的指令碼儲存為 Mono而不是 LSL。" name="FSSaveInventoryScriptsAsMono_toggle" />
<check_box label="啟用 LSL 前處理器" tool_tip="勾選此項將啟用 LSL 前處理器。" name="preproc_checkbox" />
<check_box label="最佳化指令碼" tool_tip="勾選此項LSL 前處理器將最佳化指令碼所佔用的空間。" name="preprocoptimizer_checkbox" />
<check_box label="switch() 語句" tool_tip="勾選後LSL 前處理器將允許使用 switch() 語句進行指令碼流程控制。" name="preprocswitch_checkbox" />
@ -141,30 +170,6 @@
<text name="externaleditor_textbox">外部編輯器:</text>
<button label="瀏覽" label_selected="瀏覽" name="SetExternalEditor" />
</panel>
<panel label="建造 2" name="BuildTab2">
<check_box label="高亮選定元素邊框" tool_tip="取消選擇將不顯示黃色/藍色邊框,當選擇大量元素時,可提高效能。" name="FSBuildPrefsRenderHighlight_toggle" />
<check_box label="顯示所選地塊邊界" name="RenderParcelSelection" />
<check_box label="顯示建造的最大高度限制" name="FSRenderParcelSelectionToMaxBuildHeight" />
<check_box label="選擇距離限制(米):" name="LimitSelectDistance" />
<spinner name="MaxSelectDistance" tool_tip="選擇的最大允許距離(從化身出發到,單位:米) [預設值128.000]" />
<check_box label="拖動距離限制(米):" name="LimitDragDistance" />
<spinner name="MaxDragDistance" tool_tip="單次移動的最大允許距離(從起始點,單位:米) [預設值48.000]" />
<text name="RotationStepText1">旋轉限制為以下倍數:</text>
<spinner name="RotationStep" width="45" tool_tip="透過旋轉工具進行的所有旋轉都將約束為指定數的倍數預設值1.0" />
<text name="RotationStepText2">度,如果「對齊到網格」未啟用</text>
<check_box name="FSUnlinkConfirmEnabled" label="如果集合中至少包含以下數量,則刪除聯結時確認" />
<text name="MinObjectsForUnlinkConfirmText2">個物件</text>
<check_box label="使用 Ctrl+單擊來捕獲和移動物件" tool_tip="勾選此項,您可以使用滑鼠和 Ctrl 鍵來捕獲和移動物件。" name="FSEnableGrab" />
<check_box label="在建造模式下按住 Shift+單擊直接拖動紋理" tool_tip="啟用此選項後,您可以在建造模式下直接將紋理拖放到物件的表面上。" name="FSExperimentalDragTexture" />
<check_box label="在「設定此物件出售」時使用舊功能" tool_tip="啟用此選項將直接儲存物件的銷售資訊,而不需要確認。" name="FSCommitForSaleOnChange_toggle" />
<check_box label="將編輯的指令碼儲存到 Mono 中" tool_tip="啟用此選項將直接將儲存在庫存中的指令碼儲存為 Mono而不是 LSL。" name="FSSaveInventoryScriptsAsMono_toggle" />
<check_box label="將紋理儲存到硬碟上的 PNG 格式而不是 TGA" tool_tip="用於紋理預覽和庫存上下文選單。" name="FSTextureDefaultSaveAsFormat" />
<check_box label="上傳到伺服器時在自己的化身上預覽動畫" tool_tip="如果啟用,您可以在上傳到伺服器時用自己的化身預覽動畫。" name="FSUploadAnimationOnOwnAvatar" />
<check_box label="始終展開動畫預覽的詳細資訊" tool_tip="動畫預覽懸浮窗中的詳細資訊預設展開。" name="FSAnimationPreviewExpanded" />
<check_box label="為指令碼啟用詳細資訊" tool_tip="啟用後,將向指令碼基本資訊中新增對創造者有用的詳細資訊。" name="FSScriptInfoExtended" />
<check_box label="按字母順序排序「附著到」選單中的附著點(需要重新啟動)" tool_tip="如果啟用此選項,「附著到」選單中的附件點列表將按字母順序排序。" name="FSSortAttachmentSpotsAlphabetically" />
<check_box label="在工具視窗中使用新的[APP_NAME]紋理面板(需要重新啟動)" tool_tip="如果啟用,紋理編輯工具將使用改進的[APP_NAME]工作流,並允許編輯BlinnPhong和PBR材質" name="FSUseNewTexturePanel" />
</panel>
<panel label="上傳" name="UploadsTab">
<text name="title">上傳的目標檔案夾:</text>
<text name="title_images">圖像</text>

View File

@ -7422,6 +7422,9 @@ SecondLife.com網站的「支援」部分
<string name="Worn Items">
已穿物件
</string>
<string name="Favorites">
收藏
</string>
<string name="InvOfferGroupNoticeName">
群組成員名 [NAME]
</string>

View File

@ -274,7 +274,7 @@
bevel_style="none"
follows="all"
label="Favorites"
help_topic="recent_inventory_tab"
help_topic="favorites_inventory_tab"
layout="topleft"
name="Favorites"
show_item_link_overlays="true"

View File

@ -278,7 +278,7 @@
follows="all"
height="338"
label="Favorites"
help_topic="recent_inventory_tab"
help_topic="favorites_inventory_tab"
layout="topleft"
name="Favorites"
show_item_link_overlays="true"

View File

@ -871,7 +871,7 @@
bevel_style="in"
follows="all"
label="Favorites"
help_topic="recent_inventory_tab"
help_topic="favorites_inventory_tab"
layout="topleft"
name="Favorites"
show_item_link_overlays="true">