summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
Diffstat (limited to 'indra')
-rw-r--r--indra/llcharacter/lleditingmotion.cpp8
-rw-r--r--indra/llcommon/llstring.h31
-rw-r--r--indra/llcommon/llversionviewer.h2
-rwxr-xr-xindra/llcrashlogger/llcrashlogger.cpp2
-rw-r--r--indra/llmessage/llares.cpp11
-rw-r--r--indra/llmessage/llares.h4
-rw-r--r--indra/llui/llcombobox.cpp4
-rw-r--r--indra/llui/llcombobox.h2
-rw-r--r--indra/llui/llfloater.cpp5
-rw-r--r--indra/llui/llfloater.h4
-rw-r--r--indra/llui/llpanel.cpp18
-rw-r--r--indra/llui/llpanel.h6
-rw-r--r--indra/llui/llscrolllistctrl.cpp25
-rw-r--r--indra/llui/llscrolllistctrl.h2
-rw-r--r--indra/llwindow/llwindow.cpp11
-rw-r--r--indra/llwindow/llwindow.h4
-rw-r--r--indra/llwindow/llwindowwin32.cpp48
-rw-r--r--indra/newview/app_settings/settings.xml8
-rw-r--r--indra/newview/featuretable.txt6
-rw-r--r--indra/newview/gpu_table.txt2
-rw-r--r--indra/newview/installers/windows/installer_template.nsi256
-rw-r--r--indra/newview/llappviewer.cpp52
-rw-r--r--indra/newview/llappviewer.h3
-rw-r--r--indra/newview/llchatbar.cpp22
-rw-r--r--indra/newview/lldrawpoolavatar.cpp2
-rw-r--r--indra/newview/lldynamictexture.cpp1
-rw-r--r--indra/newview/llface.cpp6
-rw-r--r--indra/newview/llfloaterabout.cpp2
-rw-r--r--indra/newview/llfloaterbump.cpp2
-rw-r--r--indra/newview/llfloaterjoystick.cpp6
-rw-r--r--indra/newview/llfloaterland.cpp2
-rw-r--r--indra/newview/llfloaterlandholdings.cpp2
-rw-r--r--indra/newview/llfloaterreporter.cpp5
-rw-r--r--indra/newview/llfolderview.cpp106
-rw-r--r--indra/newview/llfolderview.h8
-rw-r--r--indra/newview/llgesturemgr.cpp12
-rw-r--r--indra/newview/llimpanel.cpp19
-rw-r--r--indra/newview/llimview.cpp16
-rw-r--r--indra/newview/lllogchat.cpp2
-rw-r--r--indra/newview/llpanelgroupgeneral.cpp2
-rw-r--r--indra/newview/llpanelgrouplandmoney.cpp2
-rw-r--r--indra/newview/llpanelplace.cpp8
-rw-r--r--indra/newview/llselectmgr.cpp2
-rw-r--r--indra/newview/llstartup.cpp15
-rw-r--r--indra/newview/llstylemap.cpp5
-rw-r--r--indra/newview/lltexturecache.cpp71
-rw-r--r--indra/newview/lltexturectrl.cpp2
-rw-r--r--indra/newview/lltexturefetch.cpp32
-rw-r--r--indra/newview/lltoolbar.cpp2
-rw-r--r--indra/newview/lltoolmgr.cpp1
-rw-r--r--indra/newview/lltoolpie.cpp51
-rw-r--r--indra/newview/lltoolpie.h16
-rw-r--r--indra/newview/llviewermenu.cpp62
-rw-r--r--indra/newview/llviewermessage.cpp4
-rw-r--r--indra/newview/llviewerwindow.cpp39
-rw-r--r--indra/newview/llviewerwindow.h6
-rw-r--r--indra/newview/llvoavatar.cpp128
-rw-r--r--indra/newview/llvoavatar.h1
-rw-r--r--indra/newview/llvovolume.cpp1
-rw-r--r--indra/newview/llwindebug.cpp2
-rw-r--r--indra/newview/skins/default/xui/de/floater_im.xml52
-rw-r--r--indra/newview/skins/default/xui/de/floater_preview_gesture.xml65
-rw-r--r--indra/newview/skins/default/xui/de/floater_report_abuse.xml6
-rw-r--r--indra/newview/skins/default/xui/de/panel_login.xml15
-rw-r--r--indra/newview/skins/default/xui/de/panel_preferences_chat.xml69
-rw-r--r--indra/newview/skins/default/xui/de/panel_region_estate.xml2
-rw-r--r--indra/newview/skins/default/xui/es/floater_report_abuse.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_about.xml30
-rw-r--r--indra/newview/skins/default/xui/fr/floater_about_land.xml182
-rw-r--r--indra/newview/skins/default/xui/fr/floater_animation_preview.xml13
-rw-r--r--indra/newview/skins/default/xui/fr/floater_avatar_picker.xml6
-rw-r--r--indra/newview/skins/default/xui/fr/floater_avatar_textures.xml6
-rw-r--r--indra/newview/skins/default/xui/fr/floater_build_options.xml1
-rw-r--r--indra/newview/skins/default/xui/fr/floater_buy_contents.xml9
-rw-r--r--indra/newview/skins/default/xui/fr/floater_buy_currency.xml48
-rw-r--r--indra/newview/skins/default/xui/fr/floater_buy_land.xml6
-rw-r--r--indra/newview/skins/default/xui/fr/floater_buy_object.xml15
-rw-r--r--indra/newview/skins/default/xui/fr/floater_camera.xml12
-rw-r--r--indra/newview/skins/default/xui/fr/floater_critical.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_customize.xml359
-rw-r--r--indra/newview/skins/default/xui/fr/floater_day_cycle_options.xml97
-rw-r--r--indra/newview/skins/default/xui/fr/floater_device_settings.xml3
-rw-r--r--indra/newview/skins/default/xui/fr/floater_env_settings.xml23
-rw-r--r--indra/newview/skins/default/xui/fr/floater_hardware_settings.xml40
-rw-r--r--indra/newview/skins/default/xui/fr/floater_hud.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_im.xml36
-rw-r--r--indra/newview/skins/default/xui/fr/floater_image_preview.xml4
-rw-r--r--indra/newview/skins/default/xui/fr/floater_inspect.xml14
-rw-r--r--indra/newview/skins/default/xui/fr/floater_inventory.xml3
-rw-r--r--indra/newview/skins/default/xui/fr/floater_inventory_item_properties.xml12
-rw-r--r--indra/newview/skins/default/xui/fr/floater_joystick.xml83
-rw-r--r--indra/newview/skins/default/xui/fr/floater_lagmeter.xml152
-rw-r--r--indra/newview/skins/default/xui/fr/floater_land_holdings.xml3
-rw-r--r--indra/newview/skins/default/xui/fr/floater_live_lsleditor.xml7
-rw-r--r--indra/newview/skins/default/xui/fr/floater_lsl_guide.xml7
-rw-r--r--indra/newview/skins/default/xui/fr/floater_media_browser.xml19
-rw-r--r--indra/newview/skins/default/xui/fr/floater_mem_leaking.xml18
-rw-r--r--indra/newview/skins/default/xui/fr/floater_mute_object.xml12
-rw-r--r--indra/newview/skins/default/xui/fr/floater_my_friends.xml7
-rw-r--r--indra/newview/skins/default/xui/fr/floater_post_process.xml54
-rw-r--r--indra/newview/skins/default/xui/fr/floater_postcard.xml27
-rw-r--r--indra/newview/skins/default/xui/fr/floater_preferences.xml3
-rw-r--r--indra/newview/skins/default/xui/fr/floater_preview_classified.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_preview_event.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_preview_notecard.xml6
-rw-r--r--indra/newview/skins/default/xui/fr/floater_region_info.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_report_abuse.xml172
-rw-r--r--indra/newview/skins/default/xui/fr/floater_select_key.xml7
-rw-r--r--indra/newview/skins/default/xui/fr/floater_settings_debug.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_snapshot.xml93
-rw-r--r--indra/newview/skins/default/xui/fr/floater_texture_ctrl.xml7
-rw-r--r--indra/newview/skins/default/xui/fr/floater_tools.xml140
-rw-r--r--indra/newview/skins/default/xui/fr/floater_top_objects.xml1
-rw-r--r--indra/newview/skins/default/xui/fr/floater_tos.xml4
-rw-r--r--indra/newview/skins/default/xui/fr/floater_url_entry.xml12
-rw-r--r--indra/newview/skins/default/xui/fr/floater_water.xml88
-rw-r--r--indra/newview/skins/default/xui/fr/floater_wearable_save_as.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_windlight_options.xml190
-rw-r--r--indra/newview/skins/default/xui/fr/floater_world_map.xml57
-rw-r--r--indra/newview/skins/default/xui/fr/menu_inventory.xml3
-rw-r--r--indra/newview/skins/default/xui/fr/menu_login.xml13
-rw-r--r--indra/newview/skins/default/xui/fr/menu_slurl.xml6
-rw-r--r--indra/newview/skins/default/xui/fr/menu_viewer.xml165
-rw-r--r--indra/newview/skins/default/xui/fr/mime_types.xml230
-rw-r--r--indra/newview/skins/default/xui/fr/panel_audio_device.xml26
-rw-r--r--indra/newview/skins/default/xui/fr/panel_friends.xml28
-rw-r--r--indra/newview/skins/default/xui/fr/panel_group_general.xml28
-rw-r--r--indra/newview/skins/default/xui/fr/panel_group_invite.xml14
-rw-r--r--indra/newview/skins/default/xui/fr/panel_group_land_money.xml6
-rw-r--r--indra/newview/skins/default/xui/fr/panel_group_notices.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/panel_group_roles.xml3
-rw-r--r--indra/newview/skins/default/xui/fr/panel_groups.xml16
-rw-r--r--indra/newview/skins/default/xui/fr/panel_login.xml32
-rw-r--r--indra/newview/skins/default/xui/fr/panel_preferences_chat.xml40
-rw-r--r--indra/newview/skins/default/xui/fr/panel_preferences_general.xml86
-rw-r--r--indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml166
-rw-r--r--indra/newview/skins/default/xui/fr/panel_region_debug.xml12
-rw-r--r--indra/newview/skins/default/xui/fr/panel_region_estate.xml16
-rw-r--r--indra/newview/skins/default/xui/fr/panel_region_general.xml10
-rw-r--r--indra/newview/skins/default/xui/fr/panel_status_bar.xml12
-rw-r--r--indra/newview/skins/default/xui/fr/role_actions.xml391
-rw-r--r--indra/newview/skins/default/xui/fr/strings.xml414
-rw-r--r--indra/newview/skins/default/xui/fr/teleport_strings.xml90
-rw-r--r--indra/newview/skins/default/xui/ja/floater_im.xml15
-rw-r--r--indra/newview/skins/default/xui/ja/floater_mem_leaking.xml6
-rw-r--r--indra/newview/skins/default/xui/ja/floater_report_abuse.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/floater_snapshot.xml6
-rw-r--r--indra/newview/skins/default/xui/ja/floater_tools.xml4
-rw-r--r--indra/newview/skins/default/xui/ja/panel_login.xml2
-rw-r--r--indra/newview/skins/default/xui/pt/floater_im.xml9
-rw-r--r--indra/newview/skins/default/xui/pt/floater_report_abuse.xml2
-rwxr-xr-xindra/newview/viewer_manifest.py1
152 files changed, 4104 insertions, 1244 deletions
diff --git a/indra/llcharacter/lleditingmotion.cpp b/indra/llcharacter/lleditingmotion.cpp
index 34fb6c423a..301a6e74c9 100644
--- a/indra/llcharacter/lleditingmotion.cpp
+++ b/indra/llcharacter/lleditingmotion.cpp
@@ -186,6 +186,12 @@ BOOL LLEditingMotion::onUpdate(F32 time, U8* joint_mask)
}
focus_pt += mCharacter->getCharacterPosition();
+ if (!llfinite(focus_pt.magVecSquared()))
+ {
+ LLVector3 tmp = mCharacter->getCharacterPosition() ;
+ llerrs << "Non finite focus point in editing motion. focus point: " << focus_pt << " and character position: " <<
+ tmp << " and pointAtPt: " << pointAtPt << llendl;
+ }
// propagate joint positions to kinematic chain
mParentJoint.setPosition( mParentState->getJoint()->getWorldPosition() );
@@ -220,7 +226,7 @@ BOOL LLEditingMotion::onUpdate(F32 time, U8* joint_mask)
if (!target.isFinite())
{
llerrs << "Non finite target in editing motion with target distance of " << target_dist <<
- " and focus point " << focus_pt << llendl;
+ " and focus point " << focus_pt << " and pointAtPt: " << pointAtPt << llendl;
}
mTarget.setPosition( target + mParentJoint.getPosition());
diff --git a/indra/llcommon/llstring.h b/indra/llcommon/llstring.h
index 1a60a35c2c..a3a5f40414 100644
--- a/indra/llcommon/llstring.h
+++ b/indra/llcommon/llstring.h
@@ -161,14 +161,28 @@ public:
static S32 collate(const llwchar* a, const llwchar* b);
};
+/**
+ * @brief Return a string constructed from in without crashing if the
+ * pointer is NULL.
+ */
+std::string ll_safe_string(const char* in);
+std::string ll_safe_string(const char* in, S32 maxlen);
+
+
// Allowing assignments from non-strings into format_map_t is apparently
// *really* error-prone, so subclass std::string with just basic c'tors.
-class FormatMapString : public std::string
+class LLFormatMapString
{
public:
- FormatMapString() : std::string() {};
- FormatMapString(const char* s) : std::string(s) {};
- FormatMapString(const std::string& s) : std::string(s) {};
+ LLFormatMapString() {};
+ LLFormatMapString(const char* s) : mString(ll_safe_string(s)) {};
+ LLFormatMapString(const std::string& s) : mString(s) {};
+ operator std::string() const { return mString; }
+ bool operator<(const LLFormatMapString& rhs) const { return mString < rhs.mString; }
+ std::size_t length() const { return mString.length(); }
+
+private:
+ std::string mString;
};
template <class T>
@@ -183,7 +197,7 @@ public:
static std::basic_string<T> null;
- typedef std::map<FormatMapString, FormatMapString> format_map_t;
+ typedef std::map<LLFormatMapString, LLFormatMapString> format_map_t;
static S32 format(std::basic_string<T>& s, const format_map_t& fmt_map);
static bool isValidIndex(const std::basic_string<T>& string, size_type i)
@@ -318,13 +332,6 @@ inline std::string chop_tail_copy(
}
/**
- * @brief Return a string constructed from in without crashing if the
- * pointer is NULL.
- */
-std::string ll_safe_string(const char* in);
-std::string ll_safe_string(const char* in, S32 maxlen);
-
-/**
* @brief This translates a nybble stored as a hex value from 0-f back
* to a nybble in the low order bits of the return byte.
*/
diff --git a/indra/llcommon/llversionviewer.h b/indra/llcommon/llversionviewer.h
index ce8d1e5759..9e3ad076fc 100644
--- a/indra/llcommon/llversionviewer.h
+++ b/indra/llcommon/llversionviewer.h
@@ -34,7 +34,7 @@
const S32 LL_VERSION_MAJOR = 1;
const S32 LL_VERSION_MINOR = 21;
-const S32 LL_VERSION_PATCH = 2;
+const S32 LL_VERSION_PATCH = 3;
const S32 LL_VERSION_BUILD = 0;
const char * const LL_CHANNEL = "Second Life Release";
diff --git a/indra/llcrashlogger/llcrashlogger.cpp b/indra/llcrashlogger/llcrashlogger.cpp
index 076149bcf4..7f3c736669 100755
--- a/indra/llcrashlogger/llcrashlogger.cpp
+++ b/indra/llcrashlogger/llcrashlogger.cpp
@@ -222,7 +222,7 @@ void LLCrashLogger::gatherFiles()
trimSLLog(crash_info);
}
- mCrashInfo[(*itr).first] = crash_info;
+ mCrashInfo[(*itr).first] = rawstr_to_utf8(crash_info);
}
}
diff --git a/indra/llmessage/llares.cpp b/indra/llmessage/llares.cpp
index d11f227c21..c4c19b8fbd 100644
--- a/indra/llmessage/llares.cpp
+++ b/indra/llmessage/llares.cpp
@@ -100,9 +100,16 @@ void LLAres::QueryResponder::queryError(int code)
<< LLAres::strerror(code) << llendl;
}
-LLAres::LLAres()
+LLAres::LLAres() :
+chan_(NULL), mInitSuccess(false)
{
- ares_init(&chan_);
+ if (ares_init(&chan_) != ARES_SUCCESS)
+ {
+ llwarns << "Could not succesfully initialize ares!" << llendl;
+ return;
+ }
+
+ mInitSuccess = true;
}
LLAres::~LLAres()
diff --git a/indra/llmessage/llares.h b/indra/llmessage/llares.h
index 4dd65600cc..3e6b0b0e84 100644
--- a/indra/llmessage/llares.h
+++ b/indra/llmessage/llares.h
@@ -437,9 +437,11 @@ public:
*/
static const char *strerror(int code);
+ bool isInitialized(void) { return mInitSuccess; }
+
protected:
ares_channel chan_;
-
+ bool mInitSuccess;
};
/**
diff --git a/indra/llui/llcombobox.cpp b/indra/llui/llcombobox.cpp
index 89ce68a32e..df5bcbe752 100644
--- a/indra/llui/llcombobox.cpp
+++ b/indra/llui/llcombobox.cpp
@@ -296,9 +296,9 @@ LLScrollListItem* LLComboBox::addSeparator(EAddPosition pos)
return mList->addSeparator(pos);
}
-void LLComboBox::sortByName()
+void LLComboBox::sortByName(BOOL ascending)
{
- mList->sortByColumnIndex(0, TRUE);
+ mList->sortOnce(0, ascending);
}
diff --git a/indra/llui/llcombobox.h b/indra/llui/llcombobox.h
index ce923e277d..7427a33129 100644
--- a/indra/llui/llcombobox.h
+++ b/indra/llui/llcombobox.h
@@ -115,7 +115,7 @@ public:
BOOL remove( S32 index ); // remove item by index, return TRUE if found and removed
void removeall() { clearRows(); }
- void sortByName(); // Sort the entries in the combobox by name
+ void sortByName(BOOL ascending = TRUE); // Sort the entries in the combobox by name
// Select current item by name using selectItemByLabel. Returns FALSE if not found.
BOOL setSimple(const LLStringExplicit& name);
diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp
index 7f8f54a44a..78a4362618 100644
--- a/indra/llui/llfloater.cpp
+++ b/indra/llui/llfloater.cpp
@@ -724,9 +724,8 @@ BOOL LLFloater::canSnapTo(const LLView* other_view)
if (other_view != getParent())
{
- LLFloater* other_floaterp = (LLFloater*)other_view;
-
- if (other_floaterp->getSnapTarget() == getHandle() && mDependents.find(other_floaterp->getHandle()) != mDependents.end())
+ const LLFloater* other_floaterp = dynamic_cast<const LLFloater*>(other_view);
+ if (other_floaterp && other_floaterp->getSnapTarget() == getHandle() && mDependents.find(other_floaterp->getHandle()) != mDependents.end())
{
// this is a dependent that is already snapped to us, so don't snap back to it
return FALSE;
diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h
index 4ca15857b9..f3941ff7d1 100644
--- a/indra/llui/llfloater.h
+++ b/indra/llui/llfloater.h
@@ -202,9 +202,9 @@ public:
void setSnapTarget(LLHandle<LLFloater> handle) { mSnappedTo = handle; }
void clearSnapTarget() { mSnappedTo.markDead(); }
- LLHandle<LLFloater> getSnapTarget() { return mSnappedTo; }
+ LLHandle<LLFloater> getSnapTarget() const { return mSnappedTo; }
- LLHandle<LLFloater> getHandle() { return mHandle; }
+ LLHandle<LLFloater> getHandle() const { return mHandle; }
static void closeFocusedFloater();
diff --git a/indra/llui/llpanel.cpp b/indra/llui/llpanel.cpp
index 700558094b..f6c621444d 100644
--- a/indra/llui/llpanel.cpp
+++ b/indra/llui/llpanel.cpp
@@ -540,7 +540,7 @@ void LLPanel::initChildrenXML(LLXMLNodePtr node, LLUICtrlFactory* factory)
child->getAttributeString("name", string_name);
if (!string_name.empty())
{
- mUIStrings[string_name] = LLUIString(child->getTextContents());
+ mUIStrings[string_name] = child->getTextContents();
}
}
else
@@ -612,7 +612,7 @@ std::string LLPanel::getString(const std::string& name, const LLStringUtil::form
if (found_it != mUIStrings.end())
{
// make a copy as format works in place
- LLUIString formatted_string = found_it->second;
+ LLUIString formatted_string = LLUIString(found_it->second);
formatted_string.setArgList(args);
return formatted_string.getString();
}
@@ -630,15 +630,23 @@ std::string LLPanel::getString(const std::string& name, const LLStringUtil::form
return LLStringUtil::null;
}
-LLUIString LLPanel::getUIString(const std::string& name) const
+std::string LLPanel::getString(const std::string& name) const
{
ui_string_map_t::const_iterator found_it = mUIStrings.find(name);
if (found_it != mUIStrings.end())
{
return found_it->second;
}
- llerrs << "Failed to find string " << name << " in panel " << getName() << llendl;
- return LLUIString(LLStringUtil::null);
+ std::string err_str("Failed to find string " + name + " in panel " + getName()); //*TODO: Translate
+ if(LLUI::sQAMode)
+ {
+ llerrs << err_str << llendl;
+ }
+ else
+ {
+ llwarns << err_str << llendl;
+ }
+ return LLStringUtil::null;
}
diff --git a/indra/llui/llpanel.h b/indra/llui/llpanel.h
index 1fe6a5679e..355e32f1cd 100644
--- a/indra/llui/llpanel.h
+++ b/indra/llui/llpanel.h
@@ -151,8 +151,8 @@ public:
void initChildrenXML(LLXMLNodePtr node, LLUICtrlFactory* factory);
void setPanelParameters(LLXMLNodePtr node, LLView *parentp);
- std::string getString(const std::string& name, const LLStringUtil::format_map_t& args = LLUIString::sNullArgs) const;
- LLUIString getUIString(const std::string& name) const;
+ std::string getString(const std::string& name, const LLStringUtil::format_map_t& args) const;
+ std::string getString(const std::string& name) const;
// ** Wrappers for setting child properties by name ** -TomY
@@ -261,7 +261,7 @@ private:
S32 mLastTabGroup;
LLRootHandle<LLPanel> mPanelHandle;
- typedef std::map<std::string, LLUIString> ui_string_map_t;
+ typedef std::map<std::string, std::string> ui_string_map_t;
ui_string_map_t mUIStrings;
std::string mRequirementsError;
diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp
index 3c29795cb4..275cc65976 100644
--- a/indra/llui/llscrolllistctrl.cpp
+++ b/indra/llui/llscrolllistctrl.cpp
@@ -67,9 +67,6 @@ struct SortScrollListItem
bool operator()(const LLScrollListItem* i1, const LLScrollListItem* i2)
{
- if ( mSortOrders.empty() )
- return i1 < i2;
-
// sort over all columns in order specified by mSortOrders
S32 sort_result = 0;
for (sort_order_t::const_reverse_iterator it = mSortOrders.rbegin();
@@ -91,7 +88,8 @@ struct SortScrollListItem
}
}
- return sort_result < 0;
+ // make sure to keep order when sort_result == 0
+ return sort_result <= 0;
}
typedef std::vector<std::pair<S32, BOOL> > sort_order_t;
@@ -2539,12 +2537,6 @@ void LLScrollListCtrl::onScrollChange( S32 new_pos, LLScrollbar* scrollbar, void
void LLScrollListCtrl::sortByColumn(const std::string& name, BOOL ascending)
{
- if (name.empty())
- {
- sortItems();
- return;
- }
-
std::map<std::string, LLScrollListColumn>::iterator itor = mColumns.find(name);
if (itor != mColumns.end())
{
@@ -2572,6 +2564,19 @@ void LLScrollListCtrl::sortItems()
setSorted(TRUE);
}
+// for one-shot sorts, does not save sort column/order
+void LLScrollListCtrl::sortOnce(S32 column, BOOL ascending)
+{
+ std::vector<std::pair<S32, BOOL> > sort_column;
+ sort_column.push_back(std::make_pair(column, ascending));
+
+ // do stable sort to preserve any previous sorts
+ std::stable_sort(
+ mItemList.begin(),
+ mItemList.end(),
+ SortScrollListItem(sort_column));
+}
+
void LLScrollListCtrl::dirtyColumns()
{
mColumnsDirty = TRUE;
diff --git a/indra/llui/llscrolllistctrl.h b/indra/llui/llscrolllistctrl.h
index 9dfaf129f8..0128c01eba 100644
--- a/indra/llui/llscrolllistctrl.h
+++ b/indra/llui/llscrolllistctrl.h
@@ -622,6 +622,8 @@ public:
S32 selectMultiple( LLDynamicArray<LLUUID> ids );
void sortItems();
+ // sorts a list without affecting the permanent sort order (so further list insertions can be unsorted, for example)
+ void sortOnce(S32 column, BOOL ascending);
// manually call this whenever editing list items in place to flag need for resorting
void setSorted(BOOL sorted) { mSorted = sorted; }
diff --git a/indra/llwindow/llwindow.cpp b/indra/llwindow/llwindow.cpp
index 03c36e95fc..810a033fc1 100644
--- a/indra/llwindow/llwindow.cpp
+++ b/indra/llwindow/llwindow.cpp
@@ -208,6 +208,17 @@ void LLWindowCallbacks::handlePingWatchdog(LLWindow *window, const char * msg)
}
+void LLWindowCallbacks::handlePauseWatchdog(LLWindow *window)
+{
+
+}
+
+void LLWindowCallbacks::handleResumeWatchdog(LLWindow *window)
+{
+
+}
+
+
S32 OSMessageBox(const std::string& text, const std::string& caption, U32 type)
{
// Properly hide the splash screen when displaying the message box
diff --git a/indra/llwindow/llwindow.h b/indra/llwindow/llwindow.h
index 9c3dfd319c..8dc179748a 100644
--- a/indra/llwindow/llwindow.h
+++ b/indra/llwindow/llwindow.h
@@ -119,7 +119,11 @@ public:
virtual void handleDataCopy(LLWindow *window, S32 data_type, void *data);
virtual BOOL handleTimerEvent(LLWindow *window);
virtual BOOL handleDeviceChange(LLWindow *window);
+
virtual void handlePingWatchdog(LLWindow *window, const char * msg);
+ virtual void handlePauseWatchdog(LLWindow *window);
+ virtual void handleResumeWatchdog(LLWindow *window);
+
};
// Refer to llwindow_test in test/common/llwindow for usage example
diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp
index 0f2ef525b2..76313d82bf 100644
--- a/indra/llwindow/llwindowwin32.cpp
+++ b/indra/llwindow/llwindowwin32.cpp
@@ -1577,8 +1577,11 @@ void LLWindowWin32::gatherInput()
{
mCallbacks->handlePingWatchdog(this, "Main:TranslateGatherInput");
TranslateMessage(&msg);
- mCallbacks->handlePingWatchdog(this, "Main:DispatchGatherInput");
+
+ // turn watchdog off in here to not fail if windows is doing something wacky
+ mCallbacks->handlePauseWatchdog(this);
DispatchMessage(&msg);
+ mCallbacks->handleResumeWatchdog(this);
msg_count++;
if ( mInputProcessingPaused )
@@ -1623,8 +1626,11 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
{
LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(h_wnd, GWL_USERDATA);
+
if (NULL != window_imp)
{
+ window_imp->mCallbacks->handleResumeWatchdog(window_imp);
+ window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:StartWndProc");
// Has user provided their own window callback?
if (NULL != window_imp->mWndProc)
{
@@ -1635,6 +1641,8 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
}
}
+ window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:PreSwitchWndProc");
+
// Juggle to make sure we can get negative positions for when
// mouse is outside window.
LLCoordWindow window_coord((S32)(S16)LOWORD(l_param), (S32)(S16)HIWORD(l_param));
@@ -1654,10 +1662,12 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
S32 update_height;
case WM_TIMER:
+ window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_TIMER");
window_imp->mCallbacks->handleTimerEvent(window_imp);
break;
case WM_DEVICECHANGE:
+ window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_DEVICECHANGE");
if (gDebugWindowProc)
{
llinfos << " WM_DEVICECHANGE: wParam=" << w_param
@@ -1673,6 +1683,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
break;
case WM_PAINT:
+ window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_PAINT");
GetUpdateRect(window_imp->mWindowHandle, &update_rect, FALSE);
update_width = update_rect.right - update_rect.left + 1;
update_height = update_rect.bottom - update_rect.top + 1;
@@ -1680,6 +1691,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
update_width, update_height);
break;
case WM_PARENTNOTIFY:
+ window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_PARENTNOTIFY");
u_msg = u_msg;
break;
@@ -1689,6 +1701,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
// Only take control of cursor over client region of window
// This allows Windows(tm) to handle resize cursors, etc.
+ window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_SETCURSOR");
if (LOWORD(l_param) == HTCLIENT)
{
SetCursor(window_imp->mCursor[ window_imp->mCurrentCursor] );
@@ -1697,14 +1710,17 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
break;
case WM_ENTERMENULOOP:
+ window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_ENTERMENULOOP");
window_imp->mCallbacks->handleWindowBlock(window_imp);
break;
case WM_EXITMENULOOP:
+ window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_EXITMENULOOP");
window_imp->mCallbacks->handleWindowUnblock(window_imp);
break;
case WM_ACTIVATEAPP:
+ window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_ACTIVATEAPP");
{
// This message should be sent whenever the app gains or loses focus.
BOOL activating = (BOOL) w_param;
@@ -1741,6 +1757,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
}
case WM_ACTIVATE:
+ window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_ACTIVATE");
{
// Can be one of WA_ACTIVE, WA_CLICKACTIVE, or WA_INACTIVE
BOOL activating = (LOWORD(w_param) != WA_INACTIVE);
@@ -1772,6 +1789,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
break;
case WM_SYSCOMMAND:
+ window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_SYSCOMMAND");
switch(w_param)
{
case SC_KEYMENU:
@@ -1786,6 +1804,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
break;
case WM_CLOSE:
+ window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_CLOSE");
// Will the app allow the window to close?
if (window_imp->mCallbacks->handleCloseRequest(window_imp))
{
@@ -1796,6 +1815,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
return 0;
case WM_DESTROY:
+ window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_DESTROY");
if (window_imp->shouldPostQuit())
{
PostQuitMessage(0); // Posts WM_QUIT with an exit code of 0
@@ -1803,6 +1823,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
return 0;
case WM_COMMAND:
+ window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_COMMAND");
if (!HIWORD(w_param)) // this message is from a menu
{
window_imp->mCallbacks->handleMenuSelect(window_imp, LOWORD(w_param));
@@ -1810,9 +1831,11 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
break;
case WM_SYSKEYDOWN:
+ window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_SYSKEYDOWN");
// allow system keys, such as ALT-F4 to be processed by Windows
eat_keystroke = FALSE;
case WM_KEYDOWN:
+ window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_KEYDOWN");
{
if (gDebugWindowProc)
{
@@ -1831,6 +1854,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
eat_keystroke = FALSE;
case WM_KEYUP:
{
+ window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_KEYUP");
LLFastTimer t2(LLFastTimer::FTM_KEYHANDLER);
if (gDebugWindowProc)
@@ -1848,6 +1872,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
break;
}
case WM_IME_SETCONTEXT:
+ window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_SETCONTEXT");
if (gDebugWindowProc)
{
llinfos << "WM_IME_SETCONTEXT" << llendl;
@@ -1860,6 +1885,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
break;
case WM_IME_STARTCOMPOSITION:
+ window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_STARTCOMPOSITION");
if (gDebugWindowProc)
{
llinfos << "WM_IME_STARTCOMPOSITION" << llendl;
@@ -1872,6 +1898,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
break;
case WM_IME_ENDCOMPOSITION:
+ window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_ENDCOMPOSITION");
if (gDebugWindowProc)
{
llinfos << "WM_IME_ENDCOMPOSITION" << llendl;
@@ -1883,6 +1910,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
break;
case WM_IME_COMPOSITION:
+ window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_COMPOSITION");
if (gDebugWindowProc)
{
llinfos << "WM_IME_COMPOSITION" << llendl;
@@ -1895,6 +1923,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
break;
case WM_IME_REQUEST:
+ window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_REQUEST");
if (gDebugWindowProc)
{
llinfos << "WM_IME_REQUEST" << llendl;
@@ -1920,6 +1949,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
// it is worth trying. The good old WM_CHAR works just fine even for supplementary
// characters. We just need to take care of surrogate pairs sent as two WM_CHAR's
// by ourselves. It is not that tough. -- Alissa Sabre @ SL
+ window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_CHAR");
if (gDebugWindowProc)
{
LL_INFOS("Window") << "Debug WindowProc WM_CHAR "
@@ -1933,6 +1963,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
case WM_LBUTTONDOWN:
{
+ window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_LBUTTONDOWN");
LLFastTimer t2(LLFastTimer::FTM_MOUSEHANDLER);
if (LLWinImm::isAvailable() && window_imp->mPreeditor)
{
@@ -1968,6 +1999,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
//RN: ignore right button double clicks for now
//case WM_RBUTTONDBLCLK:
{
+ window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_LBUTTONDBLCLK");
// Because we move the cursor position in the app, we need to query
// to find out where the cursor at the time the event is handled.
// If we don't do this, many clicks could get buffered up, and if the
@@ -1995,6 +2027,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
case WM_LBUTTONUP:
{
+ window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_LBUTTONUP");
LLFastTimer t2(LLFastTimer::FTM_MOUSEHANDLER);
//if (gDebugClicks)
//{
@@ -2028,6 +2061,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
case WM_RBUTTONDBLCLK:
case WM_RBUTTONDOWN:
{
+ window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_RBUTTONDOWN");
LLFastTimer t2(LLFastTimer::FTM_MOUSEHANDLER);
if (LLWinImm::isAvailable() && window_imp->mPreeditor)
{
@@ -2061,6 +2095,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
case WM_RBUTTONUP:
{
+ window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_RBUTTONUP");
LLFastTimer t2(LLFastTimer::FTM_MOUSEHANDLER);
// Because we move the cursor position in the app, we need to query
// to find out where the cursor at the time the event is handled.
@@ -2090,6 +2125,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
case WM_MBUTTONDOWN:
// case WM_MBUTTONDBLCLK:
{
+ window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_MBUTTONDOWN");
LLFastTimer t2(LLFastTimer::FTM_MOUSEHANDLER);
if (LLWinImm::isAvailable() && window_imp->mPreeditor)
{
@@ -2123,6 +2159,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
case WM_MBUTTONUP:
{
+ window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_MBUTTONUP");
LLFastTimer t2(LLFastTimer::FTM_MOUSEHANDLER);
// Because we move the cursor position in tllviewerhe app, we need to query
// to find out where the cursor at the time the event is handled.
@@ -2151,6 +2188,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
case WM_MOUSEWHEEL:
{
+ window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_MOUSEWHEEL");
static short z_delta = 0;
z_delta += HIWORD(w_param);
@@ -2187,6 +2225,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
// Handle mouse movement within the window
case WM_MOUSEMOVE:
{
+ window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_MOUSEMOVE");
window_imp->convertCoords(window_coord, &gl_coord);
MASK mask = gKeyboard->currentMask(TRUE);
window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask);
@@ -2195,6 +2234,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
case WM_SIZE:
{
+ window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_SIZE");
S32 width = S32( LOWORD(l_param) );
S32 height = S32( HIWORD(l_param) );
@@ -2253,6 +2293,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
}
case WM_SETFOCUS:
+ window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_SETFOCUS");
if (gDebugWindowProc)
{
LL_INFOS("Window") << "WINDOWPROC SetFocus" << LL_ENDL;
@@ -2261,6 +2302,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
return 0;
case WM_KILLFOCUS:
+ window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_KILLFOCUS");
if (gDebugWindowProc)
{
LL_INFOS("Window") << "WINDOWPROC KillFocus" << LL_ENDL;
@@ -2269,13 +2311,17 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
return 0;
case WM_COPYDATA:
+ window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_COPYDATA");
// received a URL
PCOPYDATASTRUCT myCDS = (PCOPYDATASTRUCT) l_param;
window_imp->mCallbacks->handleDataCopy(window_imp, myCDS->dwData, myCDS->lpData);
return 0;
}
+
+ window_imp->mCallbacks->handlePauseWatchdog(window_imp);
}
+
// pass unhandled messages down to Windows
return DefWindowProc(h_wnd, u_msg, w_param, l_param);
}
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 1f34bae9b5..49202f206c 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -5052,10 +5052,10 @@
<string>Color4</string>
<key>Value</key>
<array>
- <real>1</real>
- <real>0.5</real>
- <real>0.0</real>
- <real>1</real>
+ <real>0.699999988079</real>
+ <real>0.899999976158</real>
+ <real>0.699999988079</real>
+ <real>1</real>
</array>
</map>
<key>OpenDebugStatAdvanced</key>
diff --git a/indra/newview/featuretable.txt b/indra/newview/featuretable.txt
index 0a1295874d..b227043413 100644
--- a/indra/newview/featuretable.txt
+++ b/indra/newview/featuretable.txt
@@ -303,6 +303,9 @@ list Intel_G33
RenderTerrainDetail 1 0
RenderVBOEnable 1 0
+list Intel_G45
+WindLightUseAtmosShaders 0 0
+
list Intel_Bear_Lake
RenderTerrainDetail 1 0
RenderVBOEnable 1 0
@@ -315,6 +318,9 @@ list Intel_Brookdale
RenderTerrainDetail 1 0
RenderVBOEnable 1 0
+list Intel_Eaglelake
+WindLightUseAtmosShaders 0 0
+
list Intel_Montara
RenderTerrainDetail 1 0
RenderVBOEnable 1 0
diff --git a/indra/newview/gpu_table.txt b/indra/newview/gpu_table.txt
index 77b75e178f..48af543aa4 100644
--- a/indra/newview/gpu_table.txt
+++ b/indra/newview/gpu_table.txt
@@ -139,9 +139,11 @@ Intel 945G .*Intel.*945G 0 1
Intel 950 .*Intel.*950.* 0 1
Intel 965 .*Intel.*965.* 0 1
Intel G33 .*Intel.*G33.* 0 0
+Intel G45 .*Intel.*G45.* 0 1
Intel Bear Lake .*Intel.*Bear Lake.* 0 0
Intel Broadwater .*Intel.*Broadwater.* 0 0
Intel Brookdale .*Intel.*Brookdale.* 0 0
+Intel Eaglelake .*Intel.*Eaglelake.* 0 1
Intel Montara .*Intel.*Montara.* 0 0
Intel Springdale .*Intel.*Springdale.* 0 0
Matrox .*Matrox.* 0 0
diff --git a/indra/newview/installers/windows/installer_template.nsi b/indra/newview/installers/windows/installer_template.nsi
index ec4fd85861..c79550774c 100644
--- a/indra/newview/installers/windows/installer_template.nsi
+++ b/indra/newview/installers/windows/installer_template.nsi
@@ -69,6 +69,7 @@ DirText $(DirectoryChooseTitle) $(DirectoryChooseUpdate)
DirText $(DirectoryChooseTitle) $(DirectoryChooseSetup)
!endif
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Variables
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -78,131 +79,9 @@ Var INSTFLAGS
Var LANGFLAGS
Var INSTSHORTCUT
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Sections
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-Section "" ; (default section)
-
-SetShellVarContext all ; install for all users (if you change this, change it in the uninstall as well)
-
-; Start with some default values.
-StrCpy $INSTFLAGS "${INSTFLAGS}"
-StrCpy $INSTPROG "${INSTNAME}"
-StrCpy $INSTEXE "${INSTEXE}"
-StrCpy $INSTSHORTCUT "${SHORTCUT}"
-
-IfSilent +2
-Goto NOT_SILENT
- Call CheckStartupParams ; Figure out where, what and how to install.
-NOT_SILENT:
-Call CheckWindowsVersion ; warn if on Windows 98/ME
-Call CheckIfAdministrator ; Make sure the user can install/uninstall
-Call CheckIfAlreadyCurrent ; Make sure that we haven't already installed this version
-Call CloseSecondLife ; Make sure we're not running
-Call RemoveNSIS ; Check for old NSIS install to remove
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Don't remove cache files during a regular install, removing the inventory cache on upgrades results in lots of damage to the servers.
-;Call RemoveCacheFiles ; Installing over removes potentially corrupted
- ; VFS and cache files.
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Need to clean out shader files from previous installs to fix DEV-5663
-Call RemoveOldShaders
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Need to clean out old XUI files that predate skinning
-Call RemoveOldXUI
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Clear out old releasenotes.txt files. These are now on the public wiki.
-Call RemoveOldReleaseNotes
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Files
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; This placeholder is replaced by the complete list of all the files in the installer, by viewer_manifest.py
-%%INSTALL_FILES%%
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-; If this is a silent update, we don't need to re-create these shortcuts or registry entries.
-IfSilent POST_INSTALL
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-; Shortcuts in start menu
-CreateDirectory "$SMPROGRAMS\$INSTSHORTCUT"
-SetOutPath "$INSTDIR"
-CreateShortCut "$SMPROGRAMS\$INSTSHORTCUT\$INSTSHORTCUT.lnk" \
- "$INSTDIR\$INSTEXE" "$INSTFLAGS"
-
-!ifdef MUSEUM
-CreateShortCut "$SMPROGRAMS\$INSTSHORTCUT\$INSTSHORTCUT Museum.lnk" \
-
- "$INSTDIR\$INSTEXE" "$INSTFLAGS -simple"
-CreateShortCut "$SMPROGRAMS\$INSTSHORTCUT\$INSTSHORTCUT Museum Spanish.lnk" \
-
- "$INSTDIR\$INSTEXE" "$INSTFLAGS -simple -spanish"
-!endif
-
-WriteINIStr "$SMPROGRAMS\$INSTSHORTCUT\SL Create Trial Account.url" \
- "InternetShortcut" "URL" \
- "http://www.secondlife.com/registration/"
-WriteINIStr "$SMPROGRAMS\$INSTSHORTCUT\SL Your Account.url" \
- "InternetShortcut" "URL" \
- "http://www.secondlife.com/account/"
-CreateShortCut "$SMPROGRAMS\$INSTSHORTCUT\SL Scripting Language Help.lnk" \
- "$INSTDIR\lsl_guide.html"
-CreateShortCut "$SMPROGRAMS\$INSTSHORTCUT\Uninstall $INSTSHORTCUT.lnk" \
- '"$INSTDIR\uninst.exe"' '/P="$INSTPROG"'
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-; Other shortcuts
-SetOutPath "$INSTDIR"
-CreateShortCut "$DESKTOP\$INSTSHORTCUT.lnk" "$INSTDIR\$INSTEXE" "$INSTFLAGS"
-CreateShortCut "$INSTDIR\$INSTSHORTCUT.lnk" "$INSTDIR\$INSTEXE" "$INSTFLAGS"
-CreateShortCut "$INSTDIR\Uninstall $INSTSHORTCUT.lnk" \
- '"$INSTDIR\uninst.exe"' '/P="$INSTPROG"'
-
-!ifdef MUSEUM
-CreateShortCut "$DESKTOP\$INSTSHORTCUT Museum.lnk" "$INSTDIR\$INSTEXE" "$INSTFLAGS -simple"
-
-CreateShortCut "$DESKTOP\$INSTSHORTCUT Museum Spanish.lnk" "$INSTDIR\$INSTEXE" "$INSTFLAGS -simple -spanish"
-
-CreateShortCut "$INSTDIR\$INSTSHORTCUT Museum.lnk" "$INSTDIR\$INSTEXE" "$INSTFLAGS -simple"
-
-CreateShortCut "$INSTDIR\$INSTSHORTCUT Museum Spanish.lnk" "$INSTDIR\$INSTEXE" "$INSTFLAGS -simple -spanish"
-
-!endif
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-; Write registry
-WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "" "$INSTDIR"
-WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "Version" "${VERSION_LONG}"
-WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "Flags" "$INSTFLAGS"
-WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "Shortcut" "$INSTSHORTCUT"
-WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "Exe" "$INSTEXE"
-WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\$INSTPROG" "DisplayName" "$INSTPROG (remove only)"
-WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\$INSTPROG" "UninstallString" '"$INSTDIR\uninst.exe" /P="$INSTPROG"'
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-; Write URL registry info
-WriteRegStr HKEY_CLASSES_ROOT "${URLNAME}" "(default)" "URL:Second Life"
-WriteRegStr HKEY_CLASSES_ROOT "${URLNAME}" "URL Protocol" ""
-WriteRegStr HKEY_CLASSES_ROOT "${URLNAME}\DefaultIcon" "" '"$INSTDIR\$INSTEXE"'
-WriteRegExpandStr HKEY_CLASSES_ROOT "${URLNAME}\shell\open\command" "" '"$INSTDIR\$INSTEXE" $INSTFLAGS -url "%1"'
-
-Goto WRITE_UNINST
-
-POST_INSTALL:
-; Run a post-executable script if necessary.
-Call PostInstallExe
-
-WRITE_UNINST:
-; write out uninstaller
-WriteUninstaller "$INSTDIR\uninst.exe"
-
-; end of default section
-SectionEnd
+;;; Function definitions should go before file includes, because the NSIS package
+;;; is a single stream of bytecodes + file data. So if your function definitions are at
+;;; the end of the file it has to decompress the whole thing before it can call a function. JC
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; PostInstallExe
@@ -981,4 +860,131 @@ Function un.onInit
FunctionEnd
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; Sections
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+Section "" ; (default section)
+
+SetShellVarContext all ; install for all users (if you change this, change it in the uninstall as well)
+
+; Start with some default values.
+StrCpy $INSTFLAGS "${INSTFLAGS}"
+StrCpy $INSTPROG "${INSTNAME}"
+StrCpy $INSTEXE "${INSTEXE}"
+StrCpy $INSTSHORTCUT "${SHORTCUT}"
+
+IfSilent +2
+Goto NOT_SILENT
+ Call CheckStartupParams ; Figure out where, what and how to install.
+NOT_SILENT:
+Call CheckWindowsVersion ; warn if on Windows 98/ME
+Call CheckIfAdministrator ; Make sure the user can install/uninstall
+Call CheckIfAlreadyCurrent ; Make sure that we haven't already installed this version
+Call CloseSecondLife ; Make sure we're not running
+Call RemoveNSIS ; Check for old NSIS install to remove
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; Don't remove cache files during a regular install, removing the inventory cache on upgrades results in lots of damage to the servers.
+;Call RemoveCacheFiles ; Installing over removes potentially corrupted
+ ; VFS and cache files.
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; Need to clean out shader files from previous installs to fix DEV-5663
+Call RemoveOldShaders
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; Need to clean out old XUI files that predate skinning
+Call RemoveOldXUI
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; Clear out old releasenotes.txt files. These are now on the public wiki.
+Call RemoveOldReleaseNotes
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; Files
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; This placeholder is replaced by the complete list of all the files in the installer, by viewer_manifest.py
+%%INSTALL_FILES%%
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; If this is a silent update, we don't need to re-create these shortcuts or registry entries.
+IfSilent POST_INSTALL
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; Shortcuts in start menu
+CreateDirectory "$SMPROGRAMS\$INSTSHORTCUT"
+SetOutPath "$INSTDIR"
+CreateShortCut "$SMPROGRAMS\$INSTSHORTCUT\$INSTSHORTCUT.lnk" \
+ "$INSTDIR\$INSTEXE" "$INSTFLAGS"
+
+!ifdef MUSEUM
+CreateShortCut "$SMPROGRAMS\$INSTSHORTCUT\$INSTSHORTCUT Museum.lnk" \
+
+ "$INSTDIR\$INSTEXE" "$INSTFLAGS -simple"
+CreateShortCut "$SMPROGRAMS\$INSTSHORTCUT\$INSTSHORTCUT Museum Spanish.lnk" \
+
+ "$INSTDIR\$INSTEXE" "$INSTFLAGS -simple -spanish"
+!endif
+
+WriteINIStr "$SMPROGRAMS\$INSTSHORTCUT\SL Create Trial Account.url" \
+ "InternetShortcut" "URL" \
+ "http://www.secondlife.com/registration/"
+WriteINIStr "$SMPROGRAMS\$INSTSHORTCUT\SL Your Account.url" \
+ "InternetShortcut" "URL" \
+ "http://www.secondlife.com/account/"
+CreateShortCut "$SMPROGRAMS\$INSTSHORTCUT\SL Scripting Language Help.lnk" \
+ "$INSTDIR\lsl_guide.html"
+CreateShortCut "$SMPROGRAMS\$INSTSHORTCUT\Uninstall $INSTSHORTCUT.lnk" \
+ '"$INSTDIR\uninst.exe"' '/P="$INSTPROG"'
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; Other shortcuts
+SetOutPath "$INSTDIR"
+CreateShortCut "$DESKTOP\$INSTSHORTCUT.lnk" "$INSTDIR\$INSTEXE" "$INSTFLAGS"
+CreateShortCut "$INSTDIR\$INSTSHORTCUT.lnk" "$INSTDIR\$INSTEXE" "$INSTFLAGS"
+CreateShortCut "$INSTDIR\Uninstall $INSTSHORTCUT.lnk" \
+ '"$INSTDIR\uninst.exe"' '/P="$INSTPROG"'
+
+!ifdef MUSEUM
+CreateShortCut "$DESKTOP\$INSTSHORTCUT Museum.lnk" "$INSTDIR\$INSTEXE" "$INSTFLAGS -simple"
+
+CreateShortCut "$DESKTOP\$INSTSHORTCUT Museum Spanish.lnk" "$INSTDIR\$INSTEXE" "$INSTFLAGS -simple -spanish"
+
+CreateShortCut "$INSTDIR\$INSTSHORTCUT Museum.lnk" "$INSTDIR\$INSTEXE" "$INSTFLAGS -simple"
+
+CreateShortCut "$INSTDIR\$INSTSHORTCUT Museum Spanish.lnk" "$INSTDIR\$INSTEXE" "$INSTFLAGS -simple -spanish"
+
+!endif
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; Write registry
+WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "" "$INSTDIR"
+WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "Version" "${VERSION_LONG}"
+WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "Flags" "$INSTFLAGS"
+WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "Shortcut" "$INSTSHORTCUT"
+WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "Exe" "$INSTEXE"
+WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\$INSTPROG" "DisplayName" "$INSTPROG (remove only)"
+WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\$INSTPROG" "UninstallString" '"$INSTDIR\uninst.exe" /P="$INSTPROG"'
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; Write URL registry info
+WriteRegStr HKEY_CLASSES_ROOT "${URLNAME}" "(default)" "URL:Second Life"
+WriteRegStr HKEY_CLASSES_ROOT "${URLNAME}" "URL Protocol" ""
+WriteRegStr HKEY_CLASSES_ROOT "${URLNAME}\DefaultIcon" "" '"$INSTDIR\$INSTEXE"'
+WriteRegExpandStr HKEY_CLASSES_ROOT "${URLNAME}\shell\open\command" "" '"$INSTDIR\$INSTEXE" $INSTFLAGS -url "%1"'
+
+Goto WRITE_UNINST
+
+POST_INSTALL:
+; Run a post-executable script if necessary.
+Call PostInstallExe
+
+WRITE_UNINST:
+; write out uninstaller
+WriteUninstaller "$INSTDIR\uninst.exe"
+
+; end of default section
+SectionEnd
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; EOF ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 87467e6afa..770fa0ad56 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -665,12 +665,11 @@ bool LLAppViewer::init()
LLUIImageList::getInstance(),
ui_audio_callback,
&LLUI::sGLScaleFactor);
-
LLWeb::initClass(); // do this after LLUI
LLTextEditor::setURLCallbacks(&LLWeb::loadURL,
&LLURLDispatcher::dispatchFromTextEditor,
&LLURLDispatcher::dispatchFromTextEditor);
-
+
LLUICtrlFactory::getInstance()->setupPaths(); // update paths with correct language set
/////////////////////////////////////////////////
@@ -753,6 +752,8 @@ bool LLAppViewer::init()
CreateLCDDebugWindows();
#endif
+ LLFolderViewItem::initClass(); // SJB: Needs to happen after initWindow(), not sure why but related to fonts
+
gGLManager.getGLInfo(gDebugInfo);
gGLManager.printGLInfoString();
@@ -934,6 +935,7 @@ bool LLAppViewer::mainLoop()
LLFastTimer t3(LLFastTimer::FTM_IDLE);
idle();
+ if (gAres != NULL && gAres->isInitialized())
{
pingMainloopTimeout("Main:ServicePump");
LLFastTimer t4(LLFastTimer::FTM_PUMP);
@@ -1070,14 +1072,17 @@ bool LLAppViewer::mainLoop()
}
catch(std::bad_alloc)
- {
- llwarns << "Bad memory allocation in LLAppViewer::mainLoop()!" << llendl ;
-
+ {
//stop memory leaking simulation
if(LLFloaterMemLeak::getInstance())
{
LLFloaterMemLeak::getInstance()->stop() ;
- }
+ llwarns << "Bad memory allocation in LLAppViewer::mainLoop()!" << llendl ;
+ }
+ else
+ {
+ llerrs << "Bad memory allocation in LLAppViewer::mainLoop()!" << llendl ;
+ }
}
}
@@ -1272,6 +1277,7 @@ bool LLAppViewer::cleanup()
//LLVolumeMgr::cleanupClass();
LLPrimitive::cleanupVolumeManager();
LLWorldMapView::cleanupClass();
+ LLFolderViewItem::cleanupClass();
LLUI::cleanupClass();
//
@@ -1471,7 +1477,7 @@ bool LLAppViewer::initLogging()
return true;
}
-void LLAppViewer::loadSettingsFromDirectory(ELLPath path_index, bool set_defaults)
+bool LLAppViewer::loadSettingsFromDirectory(ELLPath path_index, bool set_defaults)
{
for(LLSD::map_iterator itr = mSettingsFileList.beginMap(); itr != mSettingsFileList.endMap(); ++itr)
{
@@ -1506,13 +1512,24 @@ void LLAppViewer::loadSettingsFromDirectory(ELLPath path_index, bool set_default
}
if(!gSettings[settings_name]->loadFromFile(full_settings_path, set_defaults))
{
- llwarns << "Cannot load " << full_settings_path << " - No settings found." << llendl;
+ // If attempting to load the default global settings (app_settings/settings.xml)
+ // fails, the app should error and quit.
+ if(path_index == LL_PATH_APP_SETTINGS && settings_name == sGlobalSettingsName)
+ {
+ llwarns << "Error: Cannot load default settings from: " << full_settings_path << llendl;
+ return false;
+ }
+ else
+ {
+ llwarns << "Cannot load " << full_settings_path << " - No settings found." << llendl;
+ }
}
else
{
llinfos << "Loaded settings file " << full_settings_path << llendl;
}
}
+ return true;
}
std::string LLAppViewer::getSettingsFileName(const std::string& file)
@@ -1554,7 +1571,19 @@ bool LLAppViewer::initConfiguration()
// - load defaults
bool set_defaults = true;
- loadSettingsFromDirectory(LL_PATH_APP_SETTINGS, set_defaults);
+ if(!loadSettingsFromDirectory(LL_PATH_APP_SETTINGS, set_defaults))
+ {
+ std::ostringstream msg;
+ msg << "Second Life could not load its default settings file. \n"
+ << "The installation may be corrupted. \n";
+
+ OSMessageBox(
+ msg.str(),
+ LLStringUtil::null,
+ OSMB_OK);
+
+ return false;
+ }
// - set procedural settings
gSavedSettings.setString("ClientSettingsFile",
@@ -2322,6 +2351,11 @@ void LLAppViewer::handleViewerCrash()
{
gDebugInfo["CurrentSimHost"] = gAgent.getRegionHost().getHostName();
gDebugInfo["CurrentRegion"] = gAgent.getRegion()->getName();
+
+ const LLVector3& loc = gAgent.getPositionAgent();
+ gDebugInfo["CurrentLocationX"] = loc.mV[0];
+ gDebugInfo["CurrentLocationY"] = loc.mV[1];
+ gDebugInfo["CurrentLocationZ"] = loc.mV[2];
}
if(LLAppViewer::instance()->mMainloopTimeout)
diff --git a/indra/newview/llappviewer.h b/indra/newview/llappviewer.h
index a43fc56e51..d1359daad4 100644
--- a/indra/newview/llappviewer.h
+++ b/indra/newview/llappviewer.h
@@ -122,7 +122,8 @@ public:
static const std::string sPerAccountSettingsName;
static const std::string sCrashSettingsName;
- void loadSettingsFromDirectory(ELLPath path_index, bool set_defaults = false);
+ // returns false if loading a *required* settings file fails.
+ bool loadSettingsFromDirectory(ELLPath path_index, bool set_defaults = false);
std::string getSettingsFileName(const std::string& file);
diff --git a/indra/newview/llchatbar.cpp b/indra/newview/llchatbar.cpp
index 2e542995d4..d6b2a9e28e 100644
--- a/indra/newview/llchatbar.cpp
+++ b/indra/newview/llchatbar.cpp
@@ -216,15 +216,14 @@ void LLChatBar::refresh()
void LLChatBar::refreshGestures()
{
- LLCtrlListInterface* gestures = mGestureCombo ? mGestureCombo->getListInterface() : NULL;
- if (mGestureCombo && gestures)
+ if (mGestureCombo)
{
//store current selection so we can maintain it
std::string cur_gesture = mGestureCombo->getValue().asString();
- gestures->selectFirstItem();
+ mGestureCombo->selectFirstItem();
std::string label = mGestureCombo->getValue().asString();;
// clear
- gestures->clearRows();
+ mGestureCombo->clearRows();
// collect list of unique gestures
std::map <std::string, BOOL> unique;
@@ -245,20 +244,21 @@ void LLChatBar::refreshGestures()
std::map <std::string, BOOL>::iterator it2;
for (it2 = unique.begin(); it2 != unique.end(); ++it2)
{
- gestures->addSimpleElement((*it2).first);
+ mGestureCombo->addSimpleElement((*it2).first);
}
- gestures->sortByColumn(LLStringUtil::null, TRUE);
- // Insert label after sorting
- gestures->addSimpleElement(label, ADD_TOP);
+ mGestureCombo->sortByName();
+ // Insert label after sorting, at top, with separator below it
+ mGestureCombo->addSeparator(ADD_TOP);
+ mGestureCombo->addSimpleElement(getString("gesture_label"), ADD_TOP);
if (!cur_gesture.empty())
- {
- gestures->selectByValue(LLSD(cur_gesture));
+ {
+ mGestureCombo->selectByValue(LLSD(cur_gesture));
}
else
{
- gestures->selectFirstItem();
+ mGestureCombo->selectFirstItem();
}
}
}
diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp
index e068d90caf..bb4af2268d 100644
--- a/indra/newview/lldrawpoolavatar.cpp
+++ b/indra/newview/lldrawpoolavatar.cpp
@@ -664,7 +664,7 @@ LLColor3 LLDrawPoolAvatar::getDebugColor() const
LLVertexBufferAvatar::LLVertexBufferAvatar()
: LLVertexBuffer(sDataMask,
LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_AVATAR) > 0 ?
- GL_STATIC_DRAW_ARB :
+ GL_DYNAMIC_DRAW_ARB :
GL_STREAM_DRAW_ARB)
{
diff --git a/indra/newview/lldynamictexture.cpp b/indra/newview/lldynamictexture.cpp
index 039ed2862f..d29ac9b43a 100644
--- a/indra/newview/lldynamictexture.cpp
+++ b/indra/newview/lldynamictexture.cpp
@@ -141,6 +141,7 @@ void LLDynamicTexture::preRender(BOOL clear_depth)
if (window_pos.mY < 0)
{
mOrigin.mY += window_pos.mY;
+ mOrigin.mY = llmax(mOrigin.mY, 0) ;
}
LLImageGL::unbindTexture(0, GL_TEXTURE_2D);
diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp
index 294f13c338..05b873eae4 100644
--- a/indra/newview/llface.cpp
+++ b/indra/newview/llface.cpp
@@ -419,8 +419,6 @@ void LLFace::renderSelected(LLImageGL *imagep, const LLColor4& color)
if (mGeomCount > 0 && mIndicesCount > 0)
{
- gGL.color4fv(color.mV);
-
LLViewerImage::bindTexture(imagep);
gGL.pushMatrix();
@@ -433,12 +431,16 @@ void LLFace::renderSelected(LLImageGL *imagep, const LLColor4& color)
glMultMatrixf((GLfloat*)mDrawablep->getRegion()->mRenderMatrix.mMatrix);
}
+ setFaceColor(color);
+ renderSetColor();
+
mVertexBuffer->setBuffer(LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD);
#if !LL_RELEASE_FOR_DOWNLOAD
LLGLState::checkClientArrays("", LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD);
#endif
mVertexBuffer->draw(LLVertexBuffer::TRIANGLES, mIndicesCount, mIndicesIndex);
+ unsetFaceColor();
gGL.popMatrix();
}
}
diff --git a/indra/newview/llfloaterabout.cpp b/indra/newview/llfloaterabout.cpp
index cd1b24e892..9d3a108baa 100644
--- a/indra/newview/llfloaterabout.cpp
+++ b/indra/newview/llfloaterabout.cpp
@@ -131,7 +131,7 @@ LLFloaterAbout::LLFloaterAbout()
server_link_style->setColor(gSavedSettings.getColor4("HTMLLinkColor"));
const LLVector3d &pos = gAgent.getPositionGlobal();
- LLUIString pos_text = getUIString("you_are_at");
+ LLUIString pos_text = getString("you_are_at");
pos_text.setArg("[POSITION]",
llformat("%.1f, %.1f, %.1f ", pos.mdV[VX], pos.mdV[VY], pos.mdV[VZ]));
support.append(pos_text);
diff --git a/indra/newview/llfloaterbump.cpp b/indra/newview/llfloaterbump.cpp
index 98540f3c5e..3782039c25 100644
--- a/indra/newview/llfloaterbump.cpp
+++ b/indra/newview/llfloaterbump.cpp
@@ -149,7 +149,7 @@ void LLFloaterBump::add(LLScrollListCtrl* list, LLMeanCollisionData* mcd)
}
// All above action strings are in XML file
- LLUIString text = sInstance->getUIString(action);
+ LLUIString text = sInstance->getString(action);
text.setArg("[TIME]", time);
text.setArg("[FIRST]", mcd->mFirstName);
text.setArg("[LAST]", mcd->mLastName);
diff --git a/indra/newview/llfloaterjoystick.cpp b/indra/newview/llfloaterjoystick.cpp
index de88b490d9..e912431323 100644
--- a/indra/newview/llfloaterjoystick.cpp
+++ b/indra/newview/llfloaterjoystick.cpp
@@ -58,7 +58,7 @@ void LLFloaterJoystick::draw()
childSetEnabled("enable_joystick", joystick_inited);
childSetEnabled("joystick_type", joystick_inited);
std::string desc = LLViewerJoystick::getInstance()->getDescription();
- if (desc.empty()) desc = getUIString("NoDevice");
+ if (desc.empty()) desc = getString("NoDevice");
childSetText("joystick_type", desc);
LLViewerJoystick* joystick(LLViewerJoystick::getInstance());
@@ -83,8 +83,8 @@ void LLFloaterJoystick::draw()
BOOL LLFloaterJoystick::postBuild()
{
F32 range = gSavedSettings.getBOOL("Cursor3D") ? 1024.f : 2.f;
- LLUIString axis = getUIString("Axis");
- LLUIString joystick = getUIString("JoystickMonitor");
+ LLUIString axis = getString("Axis");
+ LLUIString joystick = getString("JoystickMonitor");
// use this child to get relative positioning info; we'll place the
// joystick monitor on its right, vertically aligned to it.
diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp
index 5dfbee73a4..6ba78285ba 100644
--- a/indra/newview/llfloaterland.cpp
+++ b/indra/newview/llfloaterland.cpp
@@ -2399,7 +2399,7 @@ void LLPanelLandAccess::refresh_ui()
}
if (override)
{
- childSetToolTip("Only Allow", getUIString("estate_override"));
+ childSetToolTip("Only Allow", getString("estate_override"));
}
else
{
diff --git a/indra/newview/llfloaterlandholdings.cpp b/indra/newview/llfloaterlandholdings.cpp
index dfc3896a6a..cb1c91a676 100644
--- a/indra/newview/llfloaterlandholdings.cpp
+++ b/indra/newview/llfloaterlandholdings.cpp
@@ -116,7 +116,7 @@ BOOL LLFloaterLandHoldings::postBuild()
element["columns"][0]["value"] = gAgent.mGroups.get(i).mName;
element["columns"][0]["font"] = "SANSSERIF";
- LLUIString areastr = getUIString("area_string");
+ LLUIString areastr = getString("area_string");
areastr.setArg("[AREA]", llformat("%d", gAgent.mGroups.get(i).mContribution));
element["columns"][1]["column"] = "area";
element["columns"][1]["value"] = areastr;
diff --git a/indra/newview/llfloaterreporter.cpp b/indra/newview/llfloaterreporter.cpp
index d00157da76..aac453b13e 100644
--- a/indra/newview/llfloaterreporter.cpp
+++ b/indra/newview/llfloaterreporter.cpp
@@ -937,11 +937,12 @@ void LLFloaterReporter::uploadDoneCallback(const LLUUID &uuid, void *user_data,
if(result < 0)
{
LLStringUtil::format_map_t args;
- args["[REASON]"] = std::string(LLAssetStorage::getErrorString(result));
+ std::string reason = std::string(LLAssetStorage::getErrorString(result));
+ args["[REASON]"] = reason;
gViewerWindow->alertXml("ErrorUploadingReportScreenshot", args);
std::string err_msg("There was a problem uploading a report screenshot");
- err_msg += " due to the following reason: " + args["[REASON]"];
+ err_msg += " due to the following reason: " + reason;
llwarns << err_msg << llendl;
return;
}
diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp
index 016909cf7f..4a55e0b860 100644
--- a/indra/newview/llfolderview.cpp
+++ b/indra/newview/llfolderview.cpp
@@ -116,8 +116,34 @@ LLColor4 LLFolderViewItem::sFilterBGColor;
LLColor4 LLFolderViewItem::sFilterTextColor;
LLColor4 LLFolderViewItem::sSuffixColor;
LLColor4 LLFolderViewItem::sSearchStatusColor;
+LLUIImagePtr LLFolderViewItem::sArrowImage;
+LLUIImagePtr LLFolderViewItem::sBoxImage;
+
+//static
+void LLFolderViewItem::initClass()
+{
+ sFont = LLResMgr::getInstance()->getRes( LLFONT_SANSSERIF_SMALL );
+ sSmallFont = LLResMgr::getInstance()->getRes( LLFONT_SMALL );
+ sFgColor = gColors.getColor( "MenuItemEnabledColor" );
+ sHighlightBgColor = gColors.getColor( "MenuItemHighlightBgColor" );
+ sHighlightFgColor = gColors.getColor( "MenuItemHighlightFgColor" );
+ sFilterBGColor = gColors.getColor( "FilterBackgroundColor" );
+ sFilterTextColor = gColors.getColor( "FilterTextColor" );
+ sSuffixColor = gColors.getColor( "InventoryItemSuffixColor" );
+ sSearchStatusColor = gColors.getColor( "InventorySearchStatusColor" );
+ sArrowImage = LLUI::getUIImage("folder_arrow.tga");
+ sBoxImage = LLUI::getUIImage("rounded_square.tga");
+}
+
+//static
+void LLFolderViewItem::cleanupClass()
+{
+ sArrowImage = NULL;
+ sBoxImage = NULL;
+}
// Default constructor
+// NOTE: Optimize this, we call it a *lot* when opening a large inventory
LLFolderViewItem::LLFolderViewItem( const std::string& name, LLUIImagePtr icon,
S32 creation_date,
LLFolderView* root,
@@ -132,6 +158,7 @@ LLFolderViewItem::LLFolderViewItem( const std::string& name, LLUIImagePtr icon,
mIsCurSelection( FALSE ),
mSelectPending(FALSE),
mLabelStyle( LLFontGL::NORMAL ),
+ mIcon(icon),
mHasVisibleChildren(FALSE),
mIndentation(0),
mNumDescendantsSelected(0),
@@ -143,31 +170,7 @@ LLFolderViewItem::LLFolderViewItem( const std::string& name, LLUIImagePtr icon,
mDragAndDropTarget(FALSE),
mIsLoading(FALSE)
{
- setIcon(icon);
- if( !LLFolderViewItem::sFont )
- {
- LLFolderViewItem::sFont = LLResMgr::getInstance()->getRes( LLFONT_SANSSERIF_SMALL );
- }
-
- if (!LLFolderViewItem::sSmallFont)
- {
- LLFolderViewItem::sSmallFont = LLResMgr::getInstance()->getRes( LLFONT_SMALL );
- }
-
- // HACK: Can't be set above because gSavedSettings might not be constructed.
- LLFolderViewItem::sFgColor = gColors.getColor( "MenuItemEnabledColor" );
- LLFolderViewItem::sHighlightBgColor = gColors.getColor( "MenuItemHighlightBgColor" );
- LLFolderViewItem::sHighlightFgColor = gColors.getColor( "MenuItemHighlightFgColor" );
- LLFolderViewItem::sFilterBGColor = gColors.getColor( "FilterBackgroundColor" );
- LLFolderViewItem::sFilterTextColor = gColors.getColor( "FilterTextColor" );
- LLFolderViewItem::sSuffixColor = gColors.getColor( "InventoryItemSuffixColor" );
- LLFolderViewItem::sSearchStatusColor = gColors.getColor( "InventorySearchStatusColor" );
-
-
- mArrowImage = LLUI::getUIImage("folder_arrow.tga");
- mBoxImage = LLUI::getUIImage("rounded_square.tga");
-
- refresh();
+ refresh(); // possible opt: only call refreshFromListener()
setTabStop(FALSE);
}
@@ -176,8 +179,6 @@ LLFolderViewItem::~LLFolderViewItem( void )
{
delete mListener;
mListener = NULL;
- mArrowImage = NULL;
- mBoxImage = NULL;
}
LLFolderView* LLFolderViewItem::getRoot()
@@ -276,7 +277,7 @@ void LLFolderViewItem::setIcon(LLUIImagePtr icon)
}
// refresh information from the listener
-void LLFolderViewItem::refresh()
+void LLFolderViewItem::refreshFromListener()
{
if(mListener)
{
@@ -290,30 +291,35 @@ void LLFolderViewItem::refresh()
}
mLabelStyle = mListener->getLabelStyle();
mLabelSuffix = mListener->getLabelSuffix();
+ }
+}
- std::string searchable_label(mLabel);
- searchable_label.append(mLabelSuffix);
- LLStringUtil::toUpper(searchable_label);
+void LLFolderViewItem::refresh()
+{
+ refreshFromListener();
+
+ std::string searchable_label(mLabel);
+ searchable_label.append(mLabelSuffix);
+ LLStringUtil::toUpper(searchable_label);
- if (mSearchableLabel.compare(searchable_label))
+ if (mSearchableLabel.compare(searchable_label))
+ {
+ mSearchableLabel.assign(searchable_label);
+ dirtyFilter();
+ // some part of label has changed, so overall width has potentially changed
+ if (mParentFolder)
{
- mSearchableLabel.assign(searchable_label);
- dirtyFilter();
- // some part of label has changed, so overall width has potentially changed
- if (mParentFolder)
- {
- mParentFolder->requestArrange();
- }
+ mParentFolder->requestArrange();
}
+ }
- S32 label_width = sFont->getWidth(mLabel);
- if( mLabelSuffix.size() )
- {
- label_width += sFont->getWidth( mLabelSuffix );
- }
+ S32 label_width = sFont->getWidth(mLabel);
+ if( mLabelSuffix.size() )
+ {
+ label_width += sFont->getWidth( mLabelSuffix );
+ }
- mLabelWidth = ARROW_SIZE + TEXT_PAD + ICON_WIDTH + ICON_PAD + label_width;
- }
+ mLabelWidth = ARROW_SIZE + TEXT_PAD + ICON_WIDTH + ICON_PAD + label_width;
}
void LLFolderViewItem::applyListenerFunctorRecursively(LLFolderViewListenerFunctor& functor)
@@ -798,10 +804,10 @@ void LLFolderViewItem::draw()
}
if(/*mControlLabel[0] != '\0' && */possibly_has_children)
{
- if (mArrowImage)
+ if (sArrowImage)
{
gl_draw_scaled_rotated_image(mIndentation, getRect().getHeight() - ARROW_SIZE - TEXT_PAD,
- ARROW_SIZE, ARROW_SIZE, mControlLabelRotation, mArrowImage->getImage(), sFgColor);
+ ARROW_SIZE, ARROW_SIZE, mControlLabelRotation, sArrowImage->getImage(), sFgColor);
}
}
@@ -937,7 +943,7 @@ void LLFolderViewItem::draw()
S32_MAX, S32_MAX, &right_x, FALSE );
}
- if (mBoxImage.notNull() && mStringMatchOffset != std::string::npos)
+ if (sBoxImage.notNull() && mStringMatchOffset != std::string::npos)
{
// don't draw backgrounds for zero-length strings
S32 filter_string_length = mRoot->getFilterSubString().size();
@@ -950,7 +956,7 @@ void LLFolderViewItem::draw()
S32 top = getRect().getHeight();
LLRect box_rect(left, top, right, bottom);
- mBoxImage->draw(box_rect, sFilterBGColor);
+ sBoxImage->draw(box_rect, sFilterBGColor);
F32 match_string_left = text_left + sFont->getWidthF32(combined_string, 0, mStringMatchOffset);
F32 y = (F32)getRect().getHeight() - sFont->getLineHeight() - (F32)TEXT_PAD;
sFont->renderUTF8( combined_string, mStringMatchOffset, match_string_left, y,
diff --git a/indra/newview/llfolderview.h b/indra/newview/llfolderview.h
index 841146db5a..938580ebe7 100644
--- a/indra/newview/llfolderview.h
+++ b/indra/newview/llfolderview.h
@@ -327,6 +327,8 @@ protected:
static LLColor4 sFilterTextColor;
static LLColor4 sSuffixColor;
static LLColor4 sSearchStatusColor;
+ static LLUIImagePtr sArrowImage;
+ static LLUIImagePtr sBoxImage;
std::string mLabel;
std::string mSearchableLabel;
@@ -351,8 +353,6 @@ protected:
F32 mControlLabelRotation;
LLFolderView* mRoot;
BOOL mDragAndDropTarget;
- LLUIImagePtr mArrowImage;
- LLUIImagePtr mBoxImage;
BOOL mIsLoading;
LLTimer mTimeSinceRequestStart;
@@ -375,6 +375,9 @@ protected:
virtual BOOL addFolder(LLFolderViewFolder*) { return FALSE; }
public:
+ static void initClass();
+ static void cleanupClass();
+
// This function is called when the folder view is dirty. It's
// implemented here but called by derived classes when folding the
// views.
@@ -500,6 +503,7 @@ public:
void setIcon(LLUIImagePtr icon);
// refresh information from the object being viewed.
+ void refreshFromListener();
virtual void refresh();
virtual void applyListenerFunctorRecursively(LLFolderViewListenerFunctor& functor);
diff --git a/indra/newview/llgesturemgr.cpp b/indra/newview/llgesturemgr.cpp
index 9af4bbd532..a25b1daebf 100644
--- a/indra/newview/llgesturemgr.cpp
+++ b/indra/newview/llgesturemgr.cpp
@@ -507,9 +507,6 @@ BOOL LLGestureManager::triggerAndReviseString(const std::string &utf8str, std::s
// Only pay attention to the first gesture in the string.
if( !found_gestures )
{
- std::string cur_token_lower = cur_token;
- LLStringUtil::toLower(cur_token_lower);
-
// collect gestures that match
std::vector <LLMultiGesture *> matching;
item_map_t::iterator it;
@@ -520,7 +517,7 @@ BOOL LLGestureManager::triggerAndReviseString(const std::string &utf8str, std::s
// Gesture asset data might not have arrived yet
if (!gesture) continue;
- if (gesture->mTrigger == cur_token_lower)
+ if (LLStringUtil::compareInsensitive(gesture->mTrigger, cur_token) == 0)
{
matching.push_back(gesture);
}
@@ -548,10 +545,7 @@ BOOL LLGestureManager::triggerAndReviseString(const std::string &utf8str, std::s
}
// Don't muck with the user's capitalization if we don't have to.
- std::string output = gesture->mReplaceText;
- std::string output_lower = output;
- LLStringUtil::toLower(output_lower);
- if( cur_token_lower == output_lower )
+ if( LLStringUtil::compareInsensitive(cur_token, gesture->mReplaceText) == 0)
{
if (revised_string)
revised_string->append( cur_token );
@@ -559,7 +553,7 @@ BOOL LLGestureManager::triggerAndReviseString(const std::string &utf8str, std::s
else
{
if (revised_string)
- revised_string->append( output );
+ revised_string->append( gesture->mReplaceText );
}
}
found_gestures = TRUE;
diff --git a/indra/newview/llimpanel.cpp b/indra/newview/llimpanel.cpp
index ca5dd7be36..9538efdc37 100644
--- a/indra/newview/llimpanel.cpp
+++ b/indra/newview/llimpanel.cpp
@@ -2172,7 +2172,7 @@ void LLFloaterIMPanel::removeTypingIndicator(const LLIMInfo* im_info)
void LLFloaterIMPanel::chatFromLogFile(LLLogChat::ELogLineType type, std::string line, void* userdata)
{
LLFloaterIMPanel* self = (LLFloaterIMPanel*)userdata;
- LLUIString message = line;
+ std::string message = line;
switch (type)
{
@@ -2180,14 +2180,14 @@ void LLFloaterIMPanel::chatFromLogFile(LLLogChat::ELogLineType type, std::string
// add warning log enabled message
if (gSavedPerAccountSettings.getBOOL("LogInstantMessages"))
{
- message = LLFloaterChat::getInstance()->getUIString("IM_logging_string");
+ message = LLFloaterChat::getInstance()->getString("IM_logging_string");
}
break;
case LLLogChat::LOG_END:
// add log end message
if (gSavedPerAccountSettings.getBOOL("LogInstantMessages"))
{
- message = LLFloaterChat::getInstance()->getUIString("IM_logging_string");
+ message = LLFloaterChat::getInstance()->getString("IM_logging_string");
}
break;
case LLLogChat::LOG_LINE:
@@ -2232,11 +2232,16 @@ void LLFloaterIMPanel::showSessionEventError(
const std::string& error_string)
{
LLStringUtil::format_map_t args;
- args["[REASON]"] =
- LLFloaterIM::sErrorStringsMap[error_string];
- args["[EVENT]"] =
- LLFloaterIM::sEventStringsMap[event_string];
+ std::string event;
+
+ event = LLFloaterIM::sEventStringsMap[event_string];
args["[RECIPIENT]"] = getTitle();
+ LLStringUtil::format(event, args);
+
+
+ args = LLStringUtil::format_map_t();
+ args["[REASON]"] = LLFloaterIM::sErrorStringsMap[error_string];
+ args["[EVENT]"] = event;
gViewerWindow->alertXml(
"ChatterBoxSessionEventError",
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index f1b3182cac..c33de4c457 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -157,10 +157,10 @@ BOOL LLFloaterIM::postBuild()
{
// IM session initiation warnings
sOnlyUserMessage = getString("only_user_message");
- sOfflineMessage = getUIString("offline_message");
- sMutedMessage = getUIString("muted_message");
+ sOfflineMessage = getString("offline_message");
+ sMutedMessage = getString("muted_message");
- sInviteMessage = getUIString("invite_message");
+ sInviteMessage = getString("invite_message");
if ( sErrorStringsMap.find("generic") == sErrorStringsMap.end() )
{
@@ -216,12 +216,6 @@ BOOL LLFloaterIM::postBuild()
}
- if ( sEventStringsMap.end() == sEventStringsMap.find("mute") )
- {
- sEventStringsMap["mute"] =
- getString("mute_agent_event");
- }
-
if ( sForceCloseSessionMap.end() ==
sForceCloseSessionMap.find("removed") )
{
@@ -525,7 +519,7 @@ void LLIMMgr::addSystemMessage(const LLUUID& session_id, const std::string& mess
{
LLFloaterChat* floaterp = LLFloaterChat::getInstance();
- message = floaterp->getUIString(message_name);
+ message = floaterp->getString(message_name);
message.setArgList(args);
LLChat chat(message);
@@ -537,7 +531,7 @@ void LLIMMgr::addSystemMessage(const LLUUID& session_id, const std::string& mess
LLFloaterIMPanel* floaterp = findFloaterBySession(session_id);
if (floaterp)
{
- message = floaterp->getUIString(message_name);
+ message = floaterp->getString(message_name);
message.setArgList(args);
gIMMgr->addMessage(session_id, LLUUID::null, SYSTEM_FROM, message.getString());
diff --git a/indra/newview/lllogchat.cpp b/indra/newview/lllogchat.cpp
index d129687a11..85b374b618 100644
--- a/indra/newview/lllogchat.cpp
+++ b/indra/newview/lllogchat.cpp
@@ -112,7 +112,7 @@ void LLLogChat::loadHistory(std::string filename , void (*callback)(ELogLineType
LLFILE* fptr = LLFile::fopen(makeLogFileName(filename), "r"); /*Flawfinder: ignore*/
if (!fptr)
{
- //LLUIString message = LLFloaterChat::getInstance()->getUIString("IM_logging_string");
+ //LLUIString message = LLFloaterChat::getInstance()->getString("IM_logging_string");
//callback(LOG_EMPTY,"IM_logging_string",userdata);
callback(LOG_EMPTY,LLStringUtil::null,userdata);
return; //No previous conversation with this name.
diff --git a/indra/newview/llpanelgroupgeneral.cpp b/indra/newview/llpanelgroupgeneral.cpp
index c4c7749b8a..044ad280fa 100644
--- a/indra/newview/llpanelgroupgeneral.cpp
+++ b/indra/newview/llpanelgroupgeneral.cpp
@@ -396,7 +396,7 @@ void LLPanelGroupGeneral::openProfile(void* data)
bool LLPanelGroupGeneral::needsApply(std::string& mesg)
{
- mesg = getUIString("group_info_unchanged");
+ mesg = getString("group_info_unchanged");
return mChanged || mGroupID.isNull();
}
diff --git a/indra/newview/llpanelgrouplandmoney.cpp b/indra/newview/llpanelgrouplandmoney.cpp
index 84ba2dd807..a1c8bc92d9 100644
--- a/indra/newview/llpanelgrouplandmoney.cpp
+++ b/indra/newview/llpanelgrouplandmoney.cpp
@@ -571,7 +571,7 @@ bool LLPanelGroupLandMoney::apply(std::string& mesg)
{
if (!mImplementationp->applyContribution() )
{
- mesg.assign(getUIString("land_contrib_error"));
+ mesg = getString("land_contrib_error");
return false;
}
diff --git a/indra/newview/llpanelplace.cpp b/indra/newview/llpanelplace.cpp
index 963394b749..f40c101a4d 100644
--- a/indra/newview/llpanelplace.cpp
+++ b/indra/newview/llpanelplace.cpp
@@ -270,21 +270,21 @@ void LLPanelPlace::processParcelInfoReply(LLMessageSystem *msg, void **)
}
std::string info_text;
- LLUIString traffic = self->getUIString("traffic_text");
+ LLUIString traffic = self->getString("traffic_text");
traffic.setArg("[TRAFFIC]", llformat("%d ", (int)dwell));
info_text = traffic;
- LLUIString area = self->getUIString("area_text");
+ LLUIString area = self->getString("area_text");
area.setArg("[AREA]", llformat("%d", actual_area));
info_text += area;
if (flags & DFQ_FOR_SALE)
{
- LLUIString forsale = self->getUIString("forsale_text");
+ LLUIString forsale = self->getString("forsale_text");
forsale.setArg("[PRICE]", llformat("%d", sale_price));
info_text += forsale;
}
if (auction_id != 0)
{
- LLUIString auction = self->getUIString("auction_text");
+ LLUIString auction = self->getString("auction_text");
auction.setArg("[ID]", llformat("%010d ", auction_id));
info_text += auction;
}
diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp
index cf11336377..87bf1c212d 100644
--- a/indra/newview/llselectmgr.cpp
+++ b/indra/newview/llselectmgr.cpp
@@ -1102,7 +1102,7 @@ void LLSelectMgr::getGrid(LLVector3& origin, LLQuaternion &rotation, LLVector3 &
switch (mSelectedObjects->mSelectType)
{
case SELECT_TYPE_ATTACHMENT:
- if (first_object)
+ if (first_object && first_object->getRootEdit()->mDrawable.notNull())
{
// this means this object *has* to be an attachment
LLXform* attachment_point_xform = first_object->getRootEdit()->mDrawable->mXform.getParent();
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index 500dcfecbf..ad1902fa9b 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -431,9 +431,11 @@ bool idle_startup()
// Load the throttle settings
gViewerThrottle.load();
- if (ll_init_ares() == NULL)
+ if (ll_init_ares() == NULL || !gAres->isInitialized())
{
- LL_ERRS("AppInit") << "Could not start address resolution system" << LL_ENDL;
+ LL_WARNS("AppInit") << "Could not start address resolution system" << LL_ENDL;
+ std::string msg = LLTrans::getString("LoginFailedNoNetwork");
+ LLAppViewer::instance()->earlyExit(msg);
}
//
@@ -479,7 +481,8 @@ bool idle_startup()
FALSE,
std::string()))
{
- std::string msg = llformat("Unable to start networking, error %d", gMessageSystem->getErrorCode());
+ std::string msg = LLTrans::getString("LoginFailedNoNetwork");
+ msg.append(llformat(" Error: %d", gMessageSystem->getErrorCode()));
LLAppViewer::instance()->earlyExit(msg);
}
@@ -567,6 +570,8 @@ bool idle_startup()
}
}
+ LL_INFOS("AppInit") << "Message System Initialized." << LL_ENDL;
+
//-------------------------------------------------
// Init audio, which may be needed for prefs dialog
// or audio cues in connection UI.
@@ -597,7 +602,9 @@ bool idle_startup()
gAudiop->setMuted(TRUE);
}
}
-
+
+ LL_INFOS("AppInit") << "Audio Engine Initialized." << LL_ENDL;
+
if (LLTimer::knownBadTimer())
{
LL_WARNS("AppInit") << "Unreliable timers detected (may be bad PCI chipset)!!" << LL_ENDL;
diff --git a/indra/newview/llstylemap.cpp b/indra/newview/llstylemap.cpp
index 3190726be1..2d3fb566e0 100644
--- a/indra/newview/llstylemap.cpp
+++ b/indra/newview/llstylemap.cpp
@@ -61,14 +61,17 @@ const LLStyleSP &LLStyleMap::lookup(const LLUUID &source)
LLStyleSP style(new LLStyle);
style->setVisible(true);
style->setFontName(LLStringUtil::null);
- if (source != LLUUID::null)
+ if (source != LLUUID::null && source != gAgent.getID() )
{
style->setColor(gSavedSettings.getColor4("HTMLLinkColor"));
std::string link = llformat("secondlife:///app/agent/%s/about",source.asString().c_str());
style->setLinkHREF(link);
}
else
+ {
+ // Make the resident's own name white and don't make the name clickable.
style->setColor(LLColor4::white);
+ }
(*this)[source] = style;
}
return (*this)[source];
diff --git a/indra/newview/lltexturecache.cpp b/indra/newview/lltexturecache.cpp
index 3d53eaa631..1e3c64226f 100644
--- a/indra/newview/lltexturecache.cpp
+++ b/indra/newview/lltexturecache.cpp
@@ -186,7 +186,7 @@ bool LLTextureCacheLocalFileWorker::doRead()
if (mImageFormat == IMG_CODEC_INVALID)
{
- llwarns << "Unrecognized file extension " << extension << " for local texture " << mFileName << llendl;
+// llwarns << "Unrecognized file extension " << extension << " for local texture " << mFileName << llendl;
mDataSize = 0; // no data
return true;
}
@@ -227,9 +227,9 @@ bool LLTextureCacheLocalFileWorker::doRead()
{
if (mBytesRead != mBytesToRead)
{
- llwarns << "Error reading file from local cache: " << local_filename
- << " Bytes: " << mDataSize << " Offset: " << mOffset
- << " / " << mDataSize << llendl;
+// llwarns << "Error reading file from local cache: " << local_filename
+// << " Bytes: " << mDataSize << " Offset: " << mOffset
+// << " / " << mDataSize << llendl;
mDataSize = 0; // failed
delete[] mReadData;
mReadData = NULL;
@@ -251,9 +251,9 @@ bool LLTextureCacheLocalFileWorker::doRead()
mReadData, mOffset, mDataSize);
if (bytes_read != mDataSize)
{
- llwarns << "Error reading file from local cache: " << mFileName
- << " Bytes: " << mDataSize << " Offset: " << mOffset
- << " / " << mDataSize << llendl;
+// llwarns << "Error reading file from local cache: " << mFileName
+// << " Bytes: " << mDataSize << " Offset: " << mOffset
+// << " / " << mDataSize << llendl;
mDataSize = 0;
delete[] mReadData;
mReadData = NULL;
@@ -368,9 +368,9 @@ bool LLTextureCacheRemoteWorker::doRead()
{
if (mBytesRead != mBytesToRead)
{
- llwarns << "Error reading file from local cache: " << local_filename
- << " Bytes: " << mDataSize << " Offset: " << mOffset
- << " / " << mDataSize << llendl;
+// llwarns << "Error reading file from local cache: " << local_filename
+// << " Bytes: " << mDataSize << " Offset: " << mOffset
+// << " / " << mDataSize << llendl;
mDataSize = 0; // failed
delete[] mReadData;
mReadData = NULL;
@@ -392,9 +392,9 @@ bool LLTextureCacheRemoteWorker::doRead()
mReadData, mOffset, mDataSize);
if (bytes_read != mDataSize)
{
- llwarns << "Error reading file from local cache: " << local_filename
- << " Bytes: " << mDataSize << " Offset: " << mOffset
- << " / " << mDataSize << llendl;
+// llwarns << "Error reading file from local cache: " << local_filename
+// << " Bytes: " << mDataSize << " Offset: " << mOffset
+// << " / " << mDataSize << llendl;
mDataSize = 0;
delete[] mReadData;
mReadData = NULL;
@@ -455,9 +455,9 @@ bool LLTextureCacheRemoteWorker::doRead()
{
if (mBytesRead != mBytesToRead)
{
- llwarns << "LLTextureCacheWorker: " << mID
- << " incorrect number of bytes read from header: " << mBytesRead
- << " != " << mBytesToRead << llendl;
+// llwarns << "LLTextureCacheWorker: " << mID
+// << " incorrect number of bytes read from header: " << mBytesRead
+// << " != " << mBytesToRead << llendl;
mDataSize = -1; // failed
return true;
}
@@ -486,9 +486,9 @@ bool LLTextureCacheRemoteWorker::doRead()
mReadData, offset, size);
if (bytes_read != size)
{
- llwarns << "LLTextureCacheWorker: " << mID
- << " incorrect number of bytes read from header: " << bytes_read
- << " / " << size << llendl;
+// llwarns << "LLTextureCacheWorker: " << mID
+// << " incorrect number of bytes read from header: " << bytes_read
+// << " / " << size << llendl;
mDataSize = -1; // failed
return true;
}
@@ -554,9 +554,9 @@ bool LLTextureCacheRemoteWorker::doRead()
{
if (mBytesRead != mBytesToRead)
{
- llwarns << "LLTextureCacheWorker: " << mID
- << " incorrect number of bytes read from body: " << mBytesRead
- << " != " << mBytesToRead << llendl;
+// llwarns << "LLTextureCacheWorker: " << mID
+// << " incorrect number of bytes read from body: " << mBytesRead
+// << " != " << mBytesToRead << llendl;
mDataSize = -1; // failed
}
return true;
@@ -593,9 +593,9 @@ bool LLTextureCacheRemoteWorker::doRead()
file_offset, file_size);
if (bytes_read != file_size)
{
- llwarns << "LLTextureCacheWorker: " << mID
- << " incorrect number of bytes read from body: " << bytes_read
- << " / " << file_size << llendl;
+// llwarns << "LLTextureCacheWorker: " << mID
+// << " incorrect number of bytes read from body: " << bytes_read
+// << " / " << file_size << llendl;
mDataSize = -1; // failed
return true;
}
@@ -632,7 +632,7 @@ bool LLTextureCacheRemoteWorker::doWrite()
{
if(cur_imagesize > 0 && mImageSize != cur_imagesize)
{
- llwarns << "Header cache entry size: " << cur_imagesize << " != mImageSize: " << mImageSize << llendl;
+// llwarns << "Header cache entry size: " << cur_imagesize << " != mImageSize: " << mImageSize << llendl;
offset = 0; // re-write header
}
mState = offset < TEXTURE_CACHE_ENTRY_SIZE ? HEADER : BODY;
@@ -667,9 +667,9 @@ bool LLTextureCacheRemoteWorker::doWrite()
{
if (mBytesRead != mBytesToRead)
{
- llwarns << "LLTextureCacheWorker: " << mID
- << " incorrect number of bytes written to header: " << mBytesRead
- << " != " << mBytesToRead << llendl;
+// llwarns << "LLTextureCacheWorker: " << mID
+// << " incorrect number of bytes written to header: " << mBytesRead
+// << " != " << mBytesToRead << llendl;
mDataSize = -1; // failed
return true;
}
@@ -698,7 +698,7 @@ bool LLTextureCacheRemoteWorker::doWrite()
if (bytes_written <= 0)
{
- llwarns << "LLTextureCacheWorker: missing entry: " << mID << llendl;
+// llwarns << "LLTextureCacheWorker: missing entry: " << mID << llendl;
mDataSize = -1; // failed
return true;
}
@@ -747,9 +747,9 @@ bool LLTextureCacheRemoteWorker::doWrite()
{
if (mBytesRead != mBytesToRead)
{
- llwarns << "LLTextureCacheWorker: " << mID
- << " incorrect number of bytes written to body: " << mBytesRead
- << " != " << mBytesToRead << llendl;
+// llwarns << "LLTextureCacheWorker: " << mID
+// << " incorrect number of bytes written to body: " << mBytesRead
+// << " != " << mBytesToRead << llendl;
mDataSize = -1; // failed
}
return true;
@@ -839,7 +839,10 @@ void LLTextureCacheWorker::finishWork(S32 param, bool completed)
{
delete[] mReadData;
mReadData = NULL;
-
+ if (mDataSize != 0)
+ {
+ llinfos << "Read Failed. mDataSize = " << mDataSize << llendl;
+ }
}
}
else
diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp
index 83b5cdbb66..4f9d9f7763 100644
--- a/indra/newview/lltexturectrl.cpp
+++ b/indra/newview/lltexturectrl.cpp
@@ -1047,7 +1047,7 @@ void LLTextureCtrl::setEnabled( BOOL enabled )
if( enabled )
{
std::string tooltip;
- if (floaterp) tooltip = floaterp->getUIString("choose_picture");
+ if (floaterp) tooltip = floaterp->getString("choose_picture");
setToolTip( tooltip );
}
else
diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp
index 9a043b8d15..54d733cd58 100644
--- a/indra/newview/lltexturefetch.cpp
+++ b/indra/newview/lltexturefetch.cpp
@@ -71,7 +71,7 @@ private:
LLTextureFetchWorker* worker = mFetcher->getWorker(mID);
if (worker)
{
- llinfos << "LLTextureFetchWorker::URLResponder::error " << status << ": " << reason << llendl;
+// llwarns << "LLTextureFetchWorker::URLResponder::error " << status << ": " << reason << llendl;
worker->callbackURLReceived(LLSD(), false);
}
mFetcher->unlockQueue();
@@ -121,7 +121,7 @@ private:
}
else
{
- llinfos << "LLTextureFetchWorker::HTTPGetResponder::error " << status << ": " << cstr << llendl;
+// llinfos << "LLTextureFetchWorker::HTTPGetResponder::error " << status << ": " << cstr << llendl;
worker->callbackHttpGet(NULL, -1, true);
}
}
@@ -679,7 +679,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
mFirstPacket = (data_size - FIRST_PACKET_SIZE) / MAX_IMG_PACKET_SIZE + 1;
if (FIRST_PACKET_SIZE + (mFirstPacket-1) * MAX_IMG_PACKET_SIZE != data_size)
{
- llwarns << "Bad CACHED TEXTURE size: " << data_size << " removing." << llendl;
+// llwarns << "Bad CACHED TEXTURE size: " << data_size << " removing." << llendl;
removeFromCache();
resetFormattedData();
clearPackets();
@@ -711,7 +711,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
if (!mFormattedImage->getDataSize())
{
// processSimulatorPackets() failed
- llwarns << "processSimulatorPackets() failed to load buffer" << llendl;
+// llwarns << "processSimulatorPackets() failed to load buffer" << llendl;
return true; // failed
}
setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
@@ -747,7 +747,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
}
else
{
- llwarns << mID << ": HTTP get url failed, requesting from simulator" << llendl;
+// llwarns << mID << ": HTTP get url failed, requesting from simulator" << llendl;
mSentRequest = FALSE;
mState = LOAD_FROM_SIMULATOR;
return false;
@@ -765,7 +765,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
}
else
{
- llwarns << mID << ": HTTP get url is empty, requesting from simulator" << llendl;
+// llwarns << mID << ": HTTP get url is empty, requesting from simulator" << llendl;
mSentRequest = FALSE;
mState = LOAD_FROM_SIMULATOR;
return false;
@@ -816,7 +816,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
S32 cur_size = mFormattedImage->getDataSize();
if (mRequestedSize < 0)
{
- llwarns << "http get failed for: " << mID << llendl;
+// llwarns << "http get failed for: " << mID << llendl;
if (cur_size == 0)
{
resetFormattedData();
@@ -882,7 +882,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
if (mCachedSize > 0 && !mInLocalCache && mRetryAttempt == 0)
{
// Cache file should be deleted, try again
- llwarns << mID << ": Decode of cached file failed (removed), retrying" << llendl;
+// llwarns << mID << ": Decode of cached file failed (removed), retrying" << llendl;
mFormattedImage = NULL;
++mRetryAttempt;
setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
@@ -891,7 +891,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
}
else
{
- llwarns << "UNABLE TO LOAD TEXTURE: " << mID << " RETRIES: " << mRetryAttempt << llendl;
+// llwarns << "UNABLE TO LOAD TEXTURE: " << mID << " RETRIES: " << mRetryAttempt << llendl;
mState = DONE; // failed
}
}
@@ -1148,7 +1148,7 @@ void LLTextureFetchWorker::callbackHttpGet(U8* data, S32 data_size, bool last_bl
else if (data_size > mRequestedSize)
{
// *TODO: This will happen until we fix LLCurl::getByteRange()
- llinfos << "HUH?" << llendl;
+// llinfos << "HUH?" << llendl;
mHaveAllData = TRUE;
mFormattedImage->deleteData();
mBufferSize = data_size;
@@ -1179,7 +1179,7 @@ void LLTextureFetchWorker::callbackCacheRead(bool success, LLImageFormatted* ima
LLMutexLock lock(&mWorkMutex);
if (mState != LOAD_FROM_TEXTURE_CACHE)
{
- llwarns << "Read callback for " << mID << " with state = " << mState << llendl;
+// llwarns << "Read callback for " << mID << " with state = " << mState << llendl;
return;
}
if (success)
@@ -1203,7 +1203,7 @@ void LLTextureFetchWorker::callbackCacheWrite(bool success)
LLMutexLock lock(&mWorkMutex);
if (mState != WAIT_ON_WRITE)
{
- llwarns << "Write callback for " << mID << " with state = " << mState << llendl;
+// llwarns << "Write callback for " << mID << " with state = " << mState << llendl;
return;
}
mWritten = TRUE;
@@ -1216,7 +1216,7 @@ void LLTextureFetchWorker::callbackDecoded(bool success)
{
if (mState != DECODE_IMAGE_UPDATE)
{
- llwarns << "Decode callback for " << mID << " with state = " << mState << llendl;
+// llwarns << "Decode callback for " << mID << " with state = " << mState << llendl;
return;
}
// llinfos << mID << " : DECODE COMPLETE " << llendl;
@@ -1259,7 +1259,7 @@ bool LLTextureFetchWorker::decodeImage()
}
else
{
- llwarns << "DECODE FAILED: " << mID << " Discard: " << (S32)mFormattedImage->getDiscardLevel() << llendl;
+// llwarns << "DECODE FAILED: " << mID << " Discard: " << (S32)mFormattedImage->getDiscardLevel() << llendl;
removeFromCache();
}
mImageWorker->scheduleDelete();
@@ -1780,7 +1780,7 @@ bool LLTextureFetch::receiveImageHeader(const LLHost& host, const LLUUID& id, U8
}
else if (!data_size)
{
- llwarns << "Img: " << id << ":" << " Empty Image Header" << llendl;
+// llwarns << "Img: " << id << ":" << " Empty Image Header" << llendl;
res = false;
}
if (!res)
@@ -1825,7 +1825,7 @@ bool LLTextureFetch::receiveImagePacket(const LLHost& host, const LLUUID& id, U1
}
else if (!data_size)
{
- llwarns << "Img: " << id << ":" << " Empty Image Header" << llendl;
+// llwarns << "Img: " << id << ":" << " Empty Image Header" << llendl;
res = false;
}
if (!res)
diff --git a/indra/newview/lltoolbar.cpp b/indra/newview/lltoolbar.cpp
index 39dc0362b3..d7db0f85d9 100644
--- a/indra/newview/lltoolbar.cpp
+++ b/indra/newview/lltoolbar.cpp
@@ -340,7 +340,7 @@ void LLToolBar::updateCommunicateList()
}
}
communicate_button->addSeparator(ADD_TOP);
- communicate_button->add(getUIString("Redock Windows"), LLSD("redock"), ADD_TOP);
+ communicate_button->add(getString("Redock Windows"), LLSD("redock"), ADD_TOP);
communicate_button->addSeparator(ADD_TOP);
communicate_button->add(LLFloaterMute::getInstance()->getShortTitle(), LLSD("mute list"), ADD_TOP);
diff --git a/indra/newview/lltoolmgr.cpp b/indra/newview/lltoolmgr.cpp
index ac2f20895c..70d1a0e66a 100644
--- a/indra/newview/lltoolmgr.cpp
+++ b/indra/newview/lltoolmgr.cpp
@@ -36,6 +36,7 @@
#include "lltool.h"
// tools and manipulators
#include "llmanipscale.h"
+#include "llselectmgr.h"
#include "lltoolbrush.h"
#include "lltoolcomp.h"
#include "lltooldraganddrop.h"
diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp
index cc6af1043d..6bdc7e9656 100644
--- a/indra/newview/lltoolpie.cpp
+++ b/indra/newview/lltoolpie.cpp
@@ -67,10 +67,6 @@
#include "llui.h"
#include "llweb.h"
-LLPointer<LLViewerObject> LLToolPie::sClickActionObject;
-LLSafeHandle<LLObjectSelection> LLToolPie::sLeftClickSelection = NULL;
-U8 LLToolPie::sClickAction = 0;
-
extern void handle_buy(void*);
extern BOOL gDebugClicks;
@@ -84,7 +80,8 @@ LLToolPie::LLToolPie()
: LLTool(std::string("Select")),
mPieMouseButtonDown( FALSE ),
mGrabMouseButtonDown( FALSE ),
- mMouseOutsideSlop( FALSE )
+ mMouseOutsideSlop( FALSE ),
+ mClickAction(0)
{ }
@@ -168,17 +165,17 @@ BOOL LLToolPie::pickAndShowMenu(BOOL always_show)
// If it's a left-click, and we have a special action, do it.
if (useClickAction(always_show, mask, object, parent))
{
- sClickAction = 0;
+ mClickAction = 0;
if (object && object->getClickAction())
{
- sClickAction = object->getClickAction();
+ mClickAction = object->getClickAction();
}
else if (parent && parent->getClickAction())
{
- sClickAction = parent->getClickAction();
+ mClickAction = parent->getClickAction();
}
- switch(sClickAction)
+ switch(mClickAction)
{
case CLICK_ACTION_TOUCH:
default:
@@ -196,27 +193,27 @@ BOOL LLToolPie::pickAndShowMenu(BOOL always_show)
|| parent && parent->flagTakesMoney())
{
// pay event goes to object actually clicked on
- sClickActionObject = object;
- sLeftClickSelection = LLToolSelect::handleObjectSelection(mPick, FALSE, TRUE);
+ mClickActionObject = object;
+ mLeftClickSelection = LLToolSelect::handleObjectSelection(mPick, FALSE, TRUE);
return TRUE;
}
break;
case CLICK_ACTION_BUY:
- sClickActionObject = parent;
- sLeftClickSelection = LLToolSelect::handleObjectSelection(mPick, FALSE, TRUE, TRUE);
+ mClickActionObject = parent;
+ mLeftClickSelection = LLToolSelect::handleObjectSelection(mPick, FALSE, TRUE, TRUE);
return TRUE;
case CLICK_ACTION_OPEN:
if (parent && parent->allowOpen())
{
- sClickActionObject = parent;
- sLeftClickSelection = LLToolSelect::handleObjectSelection(mPick, FALSE, TRUE, TRUE);
+ mClickActionObject = parent;
+ mLeftClickSelection = LLToolSelect::handleObjectSelection(mPick, FALSE, TRUE, TRUE);
}
return TRUE;
case CLICK_ACTION_PLAY:
handle_click_action_play();
return TRUE;
case CLICK_ACTION_OPEN_MEDIA:
- // sClickActionObject = object;
+ // mClickActionObject = object;
handle_click_action_open_media(object);
return TRUE;
}
@@ -471,8 +468,16 @@ ECursorType cursor_from_object(LLViewerObject* object)
return cursor;
}
+void LLToolPie::resetSelection()
+{
+ mLeftClickSelection = NULL;
+ mClickActionObject = NULL;
+ mClickAction = 0;
+}
+
// When we get object properties after left-clicking on an object
// with left-click = buy, if it's the same object, do the buy.
+
// static
void LLToolPie::selectionPropertiesReceived()
{
@@ -483,14 +488,16 @@ void LLToolPie::selectionPropertiesReceived()
return;
}
- if (!sLeftClickSelection->isEmpty())
+ LLObjectSelection* selection = LLToolPie::getInstance()->getLeftClickSelection();
+ if (selection)
{
- LLViewerObject* selected_object = sLeftClickSelection->getPrimaryObject();
+ LLViewerObject* selected_object = selection->getPrimaryObject();
// since we don't currently have a way to lock a selection, it could have changed
// after we initially clicked on the object
- if (selected_object == sClickActionObject)
+ if (selected_object == LLToolPie::getInstance()->getClickActionObject())
{
- switch (sClickAction)
+ U8 click_action = LLToolPie::getInstance()->getClickAction();
+ switch (click_action)
{
case CLICK_ACTION_BUY:
handle_buy(NULL);
@@ -506,9 +513,7 @@ void LLToolPie::selectionPropertiesReceived()
}
}
}
- sLeftClickSelection = NULL;
- sClickActionObject = NULL;
- sClickAction = 0;
+ LLToolPie::getInstance()->resetSelection();
}
BOOL LLToolPie::handleHover(S32 x, S32 y, MASK mask)
diff --git a/indra/newview/lltoolpie.h b/indra/newview/lltoolpie.h
index a8103f23a0..b282f3538d 100644
--- a/indra/newview/lltoolpie.h
+++ b/indra/newview/lltoolpie.h
@@ -60,27 +60,31 @@ public:
virtual LLTool* getOverrideTool(MASK mask);
LLPickInfo& getPick() { return mPick; }
-
+ U8 getClickAction() { return mClickAction; }
+ LLViewerObject* getClickActionObject() { return mClickActionObject; }
+ LLObjectSelection* getLeftClickSelection() { return (LLObjectSelection*)mLeftClickSelection; }
+ void resetSelection();
+
static void leftMouseCallback(const LLPickInfo& pick_info);
static void rightMouseCallback(const LLPickInfo& pick_info);
static void selectionPropertiesReceived();
-protected:
+private:
BOOL outsideSlop(S32 x, S32 y, S32 start_x, S32 start_y);
BOOL pickAndShowMenu(BOOL edit_menu);
BOOL useClickAction(BOOL always_show, MASK mask, LLViewerObject* object,
LLViewerObject* parent);
-protected:
+private:
BOOL mPieMouseButtonDown;
BOOL mGrabMouseButtonDown;
BOOL mMouseOutsideSlop; // for this drag, has mouse moved outside slop region
LLPickInfo mPick;
- static LLPointer<LLViewerObject> sClickActionObject;
- static U8 sClickAction;
- static LLSafeHandle<LLObjectSelection> sLeftClickSelection;
+ LLPointer<LLViewerObject> mClickActionObject;
+ U8 mClickAction;
+ LLSafeHandle<LLObjectSelection> mLeftClickSelection;
};
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index dfe4bd58bd..d11598100e 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -1506,7 +1506,7 @@ class LLObjectReportAbuse : public view_listener_t
{
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
{
- LLViewerObject* objectp = LLSelectMgr::getInstance()->getSelection()->getFirstObject();
+ LLViewerObject* objectp = LLSelectMgr::getInstance()->getSelection()->getPrimaryObject();
if (objectp)
{
LLFloaterReporter::showFromObject(objectp->getID());
@@ -1530,7 +1530,7 @@ class LLObjectTouch : public view_listener_t
{
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
{
- LLViewerObject* object = LLSelectMgr::getInstance()->getSelection()->getFirstObject();
+ LLViewerObject* object = LLSelectMgr::getInstance()->getSelection()->getPrimaryObject();
if (!object) return true;
LLPickInfo pick = LLToolPie::getInstance()->getPick();
@@ -1581,7 +1581,7 @@ class LLObjectEnableTouch : public view_listener_t
{
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
{
- LLViewerObject* obj = LLSelectMgr::getInstance()->getSelection()->getFirstObject();
+ LLViewerObject* obj = LLSelectMgr::getInstance()->getSelection()->getPrimaryObject();
bool new_value = obj && obj->flagHandleTouch();
gMenuHolder->findControl(userdata["control"].asString())->setValue(new_value);
@@ -1615,7 +1615,7 @@ void label_touch(std::string& label, void*)
bool handle_object_open()
{
- LLViewerObject* obj = LLSelectMgr::getInstance()->getSelection()->getFirstObject();
+ LLViewerObject* obj = LLSelectMgr::getInstance()->getSelection()->getPrimaryObject();
if(!obj) return true;
LLFloaterOpenObject::show();
@@ -1636,7 +1636,7 @@ class LLObjectEnableOpen : public view_listener_t
{
// Look for contents in root object, which is all the LLFloaterOpenObject
// understands.
- LLViewerObject* obj = LLSelectMgr::getInstance()->getSelection()->getFirstObject();
+ LLViewerObject* obj = LLSelectMgr::getInstance()->getSelection()->getPrimaryObject();
bool new_value = (obj != NULL);
if (new_value)
{
@@ -1677,7 +1677,7 @@ bool toggle_build_mode()
gViewerWindow->showCursor();
}
// avoid spurious avatar movements pulling out of edit mode
- LLViewerJoystick::getInstance()->moveAvatar(true);
+ LLViewerJoystick::getInstance()->setNeedsReset();
}
else
{
@@ -1716,7 +1716,7 @@ bool toggle_build_mode()
gAgent.resetView(false);
// avoid spurious avatar movements
- LLViewerJoystick::getInstance()->moveAvatar(true);
+ LLViewerJoystick::getInstance()->setNeedsReset();
}
return true;
@@ -2007,7 +2007,7 @@ BOOL enable_has_attachments(void*)
void handle_follow(void *userdata)
{
// follow a given avatar by ID
- LLViewerObject* objectp = LLSelectMgr::getInstance()->getSelection()->getFirstObject();
+ LLViewerObject* objectp = LLSelectMgr::getInstance()->getSelection()->getPrimaryObject();
if (objectp)
{
gAgent.startFollowPilot(objectp->getID());
@@ -2018,7 +2018,7 @@ class LLObjectEnableMute : public view_listener_t
{
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
{
- LLViewerObject* object = LLSelectMgr::getInstance()->getSelection()->getFirstObject();
+ LLViewerObject* object = LLSelectMgr::getInstance()->getSelection()->getPrimaryObject();
bool new_value = (object != NULL);
if (new_value)
{
@@ -2041,7 +2041,7 @@ class LLObjectMute : public view_listener_t
{
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
{
- LLViewerObject* object = LLSelectMgr::getInstance()->getSelection()->getFirstObject();
+ LLViewerObject* object = LLSelectMgr::getInstance()->getSelection()->getPrimaryObject();
if (!object) return true;
LLUUID id;
@@ -2171,7 +2171,7 @@ class LLAvatarFreeze : public view_listener_t
{
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
{
- LLVOAvatar* avatar = find_avatar_from_object( LLSelectMgr::getInstance()->getSelection()->getFirstObject() );
+ LLVOAvatar* avatar = find_avatar_from_object( LLSelectMgr::getInstance()->getSelection()->getPrimaryObject() );
if( avatar )
{
LLUUID* avatar_id = new LLUUID( avatar->getID() );
@@ -2221,7 +2221,7 @@ class LLAvatarDebug : public view_listener_t
{
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
{
- LLVOAvatar* avatar = find_avatar_from_object( LLSelectMgr::getInstance()->getSelection()->getFirstObject() );
+ LLVOAvatar* avatar = find_avatar_from_object( LLSelectMgr::getInstance()->getSelection()->getPrimaryObject() );
if( avatar )
{
avatar->dumpLocalTextures();
@@ -2307,7 +2307,7 @@ class LLAvatarEject : public view_listener_t
{
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
{
- LLVOAvatar* avatar = find_avatar_from_object( LLSelectMgr::getInstance()->getSelection()->getFirstObject() );
+ LLVOAvatar* avatar = find_avatar_from_object( LLSelectMgr::getInstance()->getSelection()->getPrimaryObject() );
if( avatar )
{
MenuCallbackData *data = new MenuCallbackData;
@@ -2364,7 +2364,7 @@ class LLAvatarEnableFreezeEject : public view_listener_t
{
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
{
- LLVOAvatar* avatar = find_avatar_from_object( LLSelectMgr::getInstance()->getSelection()->getFirstObject() );
+ LLVOAvatar* avatar = find_avatar_from_object( LLSelectMgr::getInstance()->getSelection()->getPrimaryObject() );
bool new_value = (avatar != NULL);
if (new_value)
@@ -2395,7 +2395,7 @@ class LLAvatarGiveCard : public view_listener_t
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
{
llinfos << "handle_give_card()" << llendl;
- LLViewerObject* dest = LLSelectMgr::getInstance()->getSelection()->getFirstObject();
+ LLViewerObject* dest = LLSelectMgr::getInstance()->getSelection()->getPrimaryObject();
if(dest && dest->isAvatar())
{
bool found_name = false;
@@ -2852,7 +2852,7 @@ class LLAvatarEnableAddFriend : public view_listener_t
{
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
{
- LLVOAvatar* avatar = find_avatar_from_object(LLSelectMgr::getInstance()->getSelection()->getFirstObject());
+ LLVOAvatar* avatar = find_avatar_from_object(LLSelectMgr::getInstance()->getSelection()->getPrimaryObject());
bool new_value = avatar && !is_agent_friend(avatar->getID());
gMenuHolder->findControl(userdata["control"].asString())->setValue(new_value);
return true;
@@ -3320,7 +3320,7 @@ class LLEditEnableDuplicate : public view_listener_t
void disabled_duplicate(void*)
{
- if (LLSelectMgr::getInstance()->getSelection()->getFirstObject())
+ if (LLSelectMgr::getInstance()->getSelection()->getPrimaryObject())
{
LLNotifyBox::showXml("CopyFailed");
}
@@ -4936,11 +4936,11 @@ class LLToolsLookAtSelection : public view_listener_t
if (zoom)
{
- gAgent.setCameraPosAndFocusGlobal(LLSelectMgr::getInstance()->getSelectionCenterGlobal() + LLVector3d(obj_to_cam * distance), LLSelectMgr::getInstance()->getSelectionCenterGlobal(), LLSelectMgr::getInstance()->getSelection()->getFirstObject()->mID );
+ gAgent.setCameraPosAndFocusGlobal(LLSelectMgr::getInstance()->getSelectionCenterGlobal() + LLVector3d(obj_to_cam * distance), LLSelectMgr::getInstance()->getSelectionCenterGlobal(), LLSelectMgr::getInstance()->getSelection()->getPrimaryObject()->mID );
}
else
{
- gAgent.setFocusGlobal( LLSelectMgr::getInstance()->getSelectionCenterGlobal(), LLSelectMgr::getInstance()->getSelection()->getFirstObject()->mID );
+ gAgent.setFocusGlobal( LLSelectMgr::getInstance()->getSelectionCenterGlobal(), LLSelectMgr::getInstance()->getSelection()->getPrimaryObject()->mID );
}
}
return true;
@@ -4975,7 +4975,7 @@ class LLAvatarInviteToGroup : public view_listener_t
{
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
{
- LLVOAvatar* avatar = find_avatar_from_object( LLSelectMgr::getInstance()->getSelection()->getFirstObject() );
+ LLVOAvatar* avatar = find_avatar_from_object( LLSelectMgr::getInstance()->getSelection()->getPrimaryObject() );
if(avatar)
{
invite_to_group(avatar->getID());
@@ -4988,7 +4988,7 @@ class LLAvatarAddFriend : public view_listener_t
{
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
{
- LLVOAvatar* avatar = find_avatar_from_object( LLSelectMgr::getInstance()->getSelection()->getFirstObject() );
+ LLVOAvatar* avatar = find_avatar_from_object( LLSelectMgr::getInstance()->getSelection()->getPrimaryObject() );
if(avatar && !is_agent_friend(avatar->getID()))
{
request_friendship(avatar->getID());
@@ -5061,11 +5061,11 @@ class LLEnablePayObject : public view_listener_t
{
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
{
- LLVOAvatar* avatar = find_avatar_from_object(LLSelectMgr::getInstance()->getSelection()->getFirstObject());
+ LLVOAvatar* avatar = find_avatar_from_object(LLSelectMgr::getInstance()->getSelection()->getPrimaryObject());
bool new_value = (avatar != NULL);
if (!new_value)
{
- LLViewerObject* object = LLSelectMgr::getInstance()->getSelection()->getFirstObject();
+ LLViewerObject* object = LLSelectMgr::getInstance()->getSelection()->getPrimaryObject();
if( object )
{
LLViewerObject *parent = (LLViewerObject *)object->getParent();
@@ -5085,7 +5085,7 @@ class LLObjectEnableSitOrStand : public view_listener_t
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
{
bool new_value = false;
- LLViewerObject* dest_object = LLSelectMgr::getInstance()->getSelection()->getFirstObject();
+ LLViewerObject* dest_object = LLSelectMgr::getInstance()->getSelection()->getPrimaryObject();
if(dest_object)
{
@@ -5450,7 +5450,7 @@ class LLShowAgentProfile : public view_listener_t
}
else if (userdata.asString() == "hit object")
{
- LLViewerObject* objectp = LLSelectMgr::getInstance()->getSelection()->getFirstObject();
+ LLViewerObject* objectp = LLSelectMgr::getInstance()->getSelection()->getPrimaryObject();
if (objectp)
{
agent_id = objectp->getID();
@@ -5671,7 +5671,7 @@ class LLAttachmentDrop : public view_listener_t
{
// Called when the user clicked on an object attached to them
// and selected "Drop".
- LLViewerObject *object = LLSelectMgr::getInstance()->getSelection()->getFirstObject();
+ LLViewerObject *object = LLSelectMgr::getInstance()->getSelection()->getPrimaryObject();
if (!object)
{
llwarns << "handle_drop_attachment() - no object to drop" << llendl;
@@ -5771,7 +5771,7 @@ class LLAttachmentDetach : public view_listener_t
{
// Called when the user clicked on an object attached to them
// and selected "Detach".
- LLViewerObject *object = LLSelectMgr::getInstance()->getSelection()->getFirstObject();
+ LLViewerObject *object = LLSelectMgr::getInstance()->getSelection()->getPrimaryObject();
if (!object)
{
llwarns << "handle_detach() - no object to detach" << llendl;
@@ -5851,7 +5851,7 @@ class LLAttachmentEnableDrop : public view_listener_t
// in your inventory. Therefore, we disable the drop option until the
// item is in your inventory
- LLViewerObject* object = LLSelectMgr::getInstance()->getSelection()->getFirstObject();
+ LLViewerObject* object = LLSelectMgr::getInstance()->getSelection()->getPrimaryObject();
LLViewerJointAttachment* attachment_pt = NULL;
LLInventoryItem* item = NULL;
@@ -5893,7 +5893,7 @@ class LLAttachmentEnableDrop : public view_listener_t
BOOL enable_detach(void*)
{
- LLViewerObject* object = LLSelectMgr::getInstance()->getSelection()->getFirstObject();
+ LLViewerObject* object = LLSelectMgr::getInstance()->getSelection()->getPrimaryObject();
if (!object) return FALSE;
if (!object->isAttachment()) return FALSE;
@@ -6000,7 +6000,7 @@ class LLAvatarSendIM : public view_listener_t
{
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
{
- LLVOAvatar* avatar = find_avatar_from_object( LLSelectMgr::getInstance()->getSelection()->getFirstObject() );
+ LLVOAvatar* avatar = find_avatar_from_object( LLSelectMgr::getInstance()->getSelection()->getPrimaryObject() );
if(avatar)
{
std::string name("IM");
@@ -6812,7 +6812,7 @@ void handle_dump_avatar_local_textures(void*)
void handle_debug_avatar_textures(void*)
{
- LLViewerObject* objectp = LLSelectMgr::getInstance()->getSelection()->getFirstObject();
+ LLViewerObject* objectp = LLSelectMgr::getInstance()->getSelection()->getPrimaryObject();
if (objectp)
{
LLFloaterAvatarTextures::show(objectp->getID());
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index e47ffe2d7f..b6c524065c 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -539,9 +539,9 @@ void process_places_reply(LLMessageSystem* msg, void** data)
void send_sound_trigger(const LLUUID& sound_id, F32 gain)
{
- if (sound_id.isNull())
+ if (sound_id.isNull() || gAgent.getRegion() == NULL)
{
- // zero guids don't get sent (no sound)
+ // disconnected agent or zero guids don't get sent (no sound)
return;
}
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 8ff257ee77..0bb2cb8194 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -237,8 +237,6 @@ const F32 FAST_FRAME_INCREMENT = 0.1f;
const F32 MIN_DISPLAY_SCALE = 0.75f;
-const S32 CONSOLE_BOTTOM_PAD = 40;
-
std::string LLViewerWindow::sSnapshotBaseName;
std::string LLViewerWindow::sSnapshotDir;
@@ -1376,6 +1374,18 @@ void LLViewerWindow::handlePingWatchdog(LLWindow *window, const char * msg)
LLAppViewer::instance()->pingMainloopTimeout(msg);
}
+
+void LLViewerWindow::handleResumeWatchdog(LLWindow *window)
+{
+ LLAppViewer::instance()->resumeMainloopTimeout();
+}
+
+void LLViewerWindow::handlePauseWatchdog(LLWindow *window)
+{
+ LLAppViewer::instance()->pauseMainloopTimeout();
+}
+
+
//
// Classes
//
@@ -1584,6 +1594,8 @@ void LLViewerWindow::initBase()
LLRect floater_view_rect = full_window;
// make space for menu bar if we have one
floater_view_rect.mTop -= MENU_BAR_HEIGHT;
+
+ // TODO: Eliminate magic constants - please used named constants if changing this
floater_view_rect.mBottom += STATUS_BAR_HEIGHT + 12 + 16 + 2;
// Check for non-first startup
@@ -1602,7 +1614,10 @@ void LLViewerWindow::initBase()
llassert( !gConsole );
LLRect console_rect = full_window;
console_rect.mTop -= 24;
- console_rect.mBottom += STATUS_BAR_HEIGHT + 12 + 16 + 12;
+
+ console_rect.mBottom += getChatConsoleBottomPad();
+
+ // TODO: Eliminate magic constants - please used named constants if changing this - don't be a programmer hater
console_rect.mLeft += 24; //gSavedSettings.getS32("StatusBarButtonWidth") + gSavedSettings.getS32("StatusBarPad");
if (gSavedSettings.getBOOL("ChatFullWidth"))
@@ -2968,7 +2983,7 @@ BOOL LLViewerWindow::handlePerFrameHover()
// Always update console
LLRect console_rect = gConsole->getRect();
- console_rect.mBottom = gHUDView->getRect().mBottom + CONSOLE_BOTTOM_PAD;
+ console_rect.mBottom = gHUDView->getRect().mBottom + getChatConsoleBottomPad();
gConsole->reshape(console_rect.getWidth(), console_rect.getHeight());
gConsole->setRect(console_rect);
}
@@ -4233,6 +4248,13 @@ BOOL LLViewerWindow::rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_hei
- output_buffer_offset_x // ...minus buffer padding x...
- (output_buffer_offset_y * (raw->getWidth())) // ...minus buffer padding y...
) * raw->getComponents();
+
+ // Ping the wathdog thread every 100 lines to keep us alive (arbitrary number, feel free to change)
+ if (out_y % 100 == 0)
+ {
+ LLAppViewer::instance()->pingMainloopTimeout("LLViewerWindow::rawSnapshot");
+ }
+
if (type == SNAPSHOT_TYPE_OBJECT_ID || type == SNAPSHOT_TYPE_COLOR)
{
glReadPixels(
@@ -4874,6 +4896,15 @@ void LLViewerWindow::calcDisplayScale()
}
}
+S32 LLViewerWindow::getChatConsoleBottomPad()
+{
+ S32 offset = 0;
+ if( gToolBar && gToolBar->getVisible() )
+ offset += TOOL_BAR_HEIGHT;
+
+ return offset;
+}
+
//----------------------------------------------------------------------------
// static
diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h
index 821e306145..11c4126beb 100644
--- a/indra/newview/llviewerwindow.h
+++ b/indra/newview/llviewerwindow.h
@@ -174,7 +174,10 @@ public:
/*virtual*/ void handleDataCopy(LLWindow *window, S32 data_type, void *data);
/*virtual*/ BOOL handleTimerEvent(LLWindow *window);
/*virtual*/ BOOL handleDeviceChange(LLWindow *window);
+
/*virtual*/ void handlePingWatchdog(LLWindow *window, const char * msg);
+ /*virtual*/ void handlePauseWatchdog(LLWindow *window);
+ /*virtual*/ void handleResumeWatchdog(LLWindow *window);
//
@@ -368,7 +371,8 @@ private:
void restoreGL(const std::string& progress_message = LLStringUtil::null);
void initFonts(F32 zoom_factor = 1.f);
void schedulePick(LLPickInfo& pick_info);
-
+ S32 getChatConsoleBottomPad(); // Vertical padding for child console rect, varied by bottom clutter
+
public:
LLWindow* mWindow; // graphical window object
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index e67bdfe01f..391bb915fa 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -2155,6 +2155,12 @@ void LLVOAvatar::releaseMeshData()
{
LLFace* facep = mDrawable->getFace(0);
facep->setSize(0, 0);
+
+ for(S32 i = mNumInitFaces ; i < mDrawable->getNumFaces(); i++)
+ {
+ facep = mDrawable->getFace(i);
+ facep->setSize(0, 0);
+ }
}
for (attachment_map_t::iterator iter = mAttachmentPoints.begin();
@@ -2211,50 +2217,97 @@ void LLVOAvatar::updateMeshData()
if (mDrawable.notNull())
{
stop_glerror();
- LLFace* facep = mDrawable->getFace(0);
- U32 num_vertices = 0;
- U32 num_indices = 0;
+ LLViewerJoint* av_parts[8] ;
+ av_parts[0] = &mEyeBallLeftLOD ;
+ av_parts[1] = &mEyeBallRightLOD ;
+ av_parts[2] = &mEyeLashLOD ;
+ av_parts[3] = &mHeadLOD ;
+ av_parts[4] = &mLowerBodyLOD ;
+ av_parts[5] = &mSkirtLOD ;
+ av_parts[6] = &mUpperBodyLOD ;
+ av_parts[7] = &mHairLOD ;
+
+ S32 f_num = 0 ;
+ const U32 VERTEX_NUMBER_THRESHOLD = 128 ;//small number of this means each part of an avatar has its own vertex buffer.
// this order is determined by number of LODS
// if a mesh earlier in this list changed LODs while a later mesh doesn't,
// the later mesh's index offset will be inaccurate
- mEyeBallLeftLOD.updateFaceSizes(num_vertices, num_indices, mAdjustedPixelArea);
- mEyeBallRightLOD.updateFaceSizes(num_vertices, num_indices, mAdjustedPixelArea);
- mEyeLashLOD.updateFaceSizes(num_vertices, num_indices, mAdjustedPixelArea);
- mHeadLOD.updateFaceSizes(num_vertices, num_indices, mAdjustedPixelArea);
- mLowerBodyLOD.updateFaceSizes(num_vertices, num_indices, mAdjustedPixelArea);
- mSkirtLOD.updateFaceSizes(num_vertices, num_indices, mAdjustedPixelArea);
- mUpperBodyLOD.updateFaceSizes(num_vertices, num_indices, mAdjustedPixelArea);
- mHairLOD.updateFaceSizes(num_vertices, num_indices, mAdjustedPixelArea);
-
- // resize immediately
- facep->setSize(num_vertices, num_indices);
-
- facep->mVertexBuffer = new LLVertexBufferAvatar();
- facep->mVertexBuffer->allocateBuffer(num_vertices, num_indices, TRUE);
-
- facep->setGeomIndex(0);
- facep->setIndicesIndex(0);
-
- // This is a hack! Avatars have their own pool, so we are detecting
- // the case of more than one avatar in the pool (thus > 0 instead of >= 0)
- if (facep->getGeomIndex() > 0)
+ for(S32 part_index = 0 ; part_index < 8 ;)
{
- llerrs << "non-zero geom index: " << facep->getGeomIndex() << " in LLVOAvatar::restoreMeshData" << llendl;
- }
+ S32 j = part_index ;
+ U32 last_v_num = 0, num_vertices = 0 ;
+ U32 last_i_num = 0, num_indices = 0 ;
- mEyeBallLeftLOD.updateFaceData(facep, mAdjustedPixelArea);
- mEyeBallRightLOD.updateFaceData(facep, mAdjustedPixelArea);
- mEyeLashLOD.updateFaceData(facep, mAdjustedPixelArea);
- mHeadLOD.updateFaceData(facep, mAdjustedPixelArea);
- mLowerBodyLOD.updateFaceData(facep, mAdjustedPixelArea);
- mSkirtLOD.updateFaceData(facep, mAdjustedPixelArea);
- mUpperBodyLOD.updateFaceData(facep, mAdjustedPixelArea);
- mHairLOD.updateFaceData(facep, mAdjustedPixelArea, TRUE);
+ while(part_index < 8 && num_vertices < VERTEX_NUMBER_THRESHOLD)
+ {
+ last_v_num = num_vertices ;
+ last_i_num = num_indices ;
- stop_glerror();
- facep->mVertexBuffer->setBuffer(0);
+ av_parts[part_index++]->updateFaceSizes(num_vertices, num_indices, mAdjustedPixelArea);
+ }
+ if(num_vertices < 1)//skip empty meshes
+ {
+ break ;
+ }
+ if(last_v_num > 0)//put the last inserted part into next vertex buffer.
+ {
+ num_vertices = last_v_num ;
+ num_indices = last_i_num ;
+ part_index-- ;
+ }
+
+ LLFace* facep ;
+ if(f_num < mDrawable->getNumFaces())
+ {
+ facep = mDrawable->getFace(f_num);
+ }
+ else
+ {
+ facep = mDrawable->addFace(mDrawable->getFace(0)->getPool(), mDrawable->getFace(0)->getTexture()) ;
+ }
+
+ // resize immediately
+ facep->setSize(num_vertices, num_indices);
+
+ if(facep->mVertexBuffer.isNull())
+ {
+ facep->mVertexBuffer = new LLVertexBufferAvatar();
+ facep->mVertexBuffer->allocateBuffer(num_vertices, num_indices, TRUE);
+ }
+ else
+ {
+ facep->mVertexBuffer->resizeBuffer(num_vertices, num_indices) ;
+ }
+
+ facep->setGeomIndex(0);
+ facep->setIndicesIndex(0);
+
+ // This is a hack! Avatars have their own pool, so we are detecting
+ // the case of more than one avatar in the pool (thus > 0 instead of >= 0)
+ if (facep->getGeomIndex() > 0)
+ {
+ llerrs << "non-zero geom index: " << facep->getGeomIndex() << " in LLVOAvatar::restoreMeshData" << llendl;
+ }
+
+ for(S32 k = j ; k < part_index ; k++)
+ {
+ av_parts[k]->updateFaceData(facep, mAdjustedPixelArea, (k == 7));
+ }
+
+ stop_glerror();
+ facep->mVertexBuffer->setBuffer(0);
+
+ if(!f_num)
+ {
+ f_num += mNumInitFaces ;
+ }
+ else
+ {
+ f_num++ ;
+ }
+ }
}
}
@@ -5847,6 +5900,7 @@ LLDrawable *LLVOAvatar::createDrawable(LLPipeline *pipeline)
LLDrawPoolAvatar *poolp = (LLDrawPoolAvatar*) gPipeline.getPool(LLDrawPool::POOL_AVATAR);
// Only a single face (one per avatar)
+ //this face will be splitted into several if its vertex buffer is too long.
mDrawable->setState(LLDrawable::ACTIVE);
mDrawable->addFace(poolp, NULL);
mDrawable->setRenderType(LLPipeline::RENDER_TYPE_AVATAR);
@@ -5860,6 +5914,8 @@ LLDrawable *LLVOAvatar::createDrawable(LLPipeline *pipeline)
facep = mDrawable->addFace((LLFacePool*) NULL, mShadowImagep);
mShadow1Facep = facep;
+ mNumInitFaces = mDrawable->getNumFaces() ;
+
dirtyMesh();
return mDrawable;
}
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index 917dd0faee..de117a5bb9 100644
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -693,6 +693,7 @@ public:
typedef std::multimap<std::string, LLPolyMesh*> mesh_map_t;
mesh_map_t mMeshes;
+ S32 mNumInitFaces ; //number of faces generated when creating the avatar drawable, does not inculde splitted faces due to long vertex buffer.
//--------------------------------------------------------------------
// true if this avatar is for this viewers agent
//--------------------------------------------------------------------
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index 74af22dbc9..8b147dc7cd 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -2236,6 +2236,7 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
}
LLVOVolume* vobj = drawablep->getVOVolume();
+ llassert_always(vobj);
vobj->updateTextures();
vobj->preRebuild();
diff --git a/indra/newview/llwindebug.cpp b/indra/newview/llwindebug.cpp
index c375cf0d52..a1a3b1cf1a 100644
--- a/indra/newview/llwindebug.cpp
+++ b/indra/newview/llwindebug.cpp
@@ -696,7 +696,7 @@ void LLWinDebug::generateCrashStacks(struct _EXCEPTION_POINTERS *exception_infop
// Since there is exception info... Release the hounds.
gEmergencyMemoryReserve.release();
- if(gSavedSettings.getControl("SaveMinidump").isNull() && gSavedSettings.getBOOL("SaveMinidump"))
+ if(gSavedSettings.getControl("SaveMinidump").notNull() && gSavedSettings.getBOOL("SaveMinidump"))
{
_MINIDUMP_EXCEPTION_INFORMATION ExInfo;
diff --git a/indra/newview/skins/default/xui/de/floater_im.xml b/indra/newview/skins/default/xui/de/floater_im.xml
index e62ff2ae21..3d2b7452e1 100644
--- a/indra/newview/skins/default/xui/de/floater_im.xml
+++ b/indra/newview/skins/default/xui/de/floater_im.xml
@@ -1,23 +1,23 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<multi_floater name="im_floater" title="Instant Message">
- <text name="only_user_message">
+ <string name="only_user_message">
Sie sind der einzige Benutzer in dieser Sitzung.
- </text>
- <text name="offline_message">
+ </string>
+ <string name="offline_message">
[FIRST] [LAST] ist offline.
- </text>
+ </string>
+ <string name="invite_message">
+ Klicken Sie auf [BUTTON NAME], um eine Verbindung zu diesem Voice-Chat herzustellen.
+ </string>
<string name="muted_message">
Sie haben diesen Einwohner stummgeschaltet.Wenn Sie ihm eine Nachricht senden, wird die Stummschaltung automatisch aufgehoben.
</string>
- <text name="generic_request_error">
+ <string name="generic_request_error">
Fehler bei Anfrage, bitte versuchen Sie es später.
- </text>
- <text name="insufficient_perms_error">
+ </string>
+ <string name="insufficient_perms_error">
Sie sind dazu nicht berechtigt.
- </text>
- <text name="user_no_help">
- Der angeforderte Benutzer hat die Hilfe-Sitzung verlassen.
- </text>
+ </string>
<string name="session_does_not_exist_error">
Die Sitzung ist abgelaufen
</string>
@@ -28,27 +28,19 @@
Sie sind kein Sitzungsmoderator.
</string>
<string name="muted_error">
- Sie wurden stummgeschaltet.
- </string>
- <text name="add_session_event">
- Füge Avatare zur Chat-Sitzung hinzu mit
- </text>
- <text name="message_session_event">
- Messaging-Chat-Sitzung mit
- </text>
- <text name="teleport_session_event">
- teleportiert zum Ersteller von
- </text>
- <string name="mute_agent_event">
- Agent wird stummgeschaltet in
- </string>
- <text name="removed_from_group">
+ Ein Gruppenmoderator hat Ihren Text-Chat deaktiviert.
+ </string>
+ <!-- ALL of the event strings should have [RECIPIENT] in them -->
+ <string name="add_session_event">
+ Es konnten keine Benutzer zur Chat-Sitzung mit [RECIPIENT] hinzugefügt werden.
+ </string>
+ <string name="message_session_event">
+ Ihre Nachricht konnte nicht an die Chat-Sitzung mit [RECIPIENT] gesendet werden.
+ </string>
+ <string name="removed_from_group">
Sie wurden von der Gruppe ausgeschlossen.
- </text>
- <string name="invite_message">
- Klicken Sie auf [BUTTON NAME], um eine Verbindung zu diesem Voice-Chat herzustellen.
</string>
<string name="close_on_no_ability">
- Die Chat-Sitzung kann nicht fortgesetzt werden
+ Sie haben nicht mehr die Berechtigung an der Chat-Sitzung teilzunehmen
</string>
</multi_floater>
diff --git a/indra/newview/skins/default/xui/de/floater_preview_gesture.xml b/indra/newview/skins/default/xui/de/floater_preview_gesture.xml
index 0596cabdc5..72b8bd881b 100644
--- a/indra/newview/skins/default/xui/de/floater_preview_gesture.xml
+++ b/indra/newview/skins/default/xui/de/floater_preview_gesture.xml
@@ -1,50 +1,51 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater name="gesture_preview">
+ <string name="stop_txt">
+ Stopp
+ </string>
+ <string name="preview_txt">
+ Vorschau
+ </string>
+ <string name="none_text">
+ – Keine –
+ </string>
<text name="desc_label">
Beschreibung:
</text>
<text name="trigger_label">
Auslöser:
</text>
- <text name="replace_text"
- tool_tip="Ersetzt den Auslösertext mit diesem Text. Wenn Sie zum Beispiel den Auslöser &apos;hallo&apos; durch &apos;wie geht&apos;s&apos; ersetzen, erscheint im Chat anstelle von &apos;Ich wollte nur hallo sagen&apos; der Text &apos;Ich wollte nur wie geht&apos;s sagen&apos; und die zugehörige Geste wird abgespielt.">
+ <text name="replace_text" tool_tip="Ersetzt den Auslösertext mit diesem Text. Wenn Sie zum Beispiel den Auslöser &apos;hallo&apos; durch &apos;wie geht&apos;s&apos; ersetzen, erscheint im Chat anstelle von &apos;Ich wollte nur hallo sagen&apos; der Text &apos;Ich wollte nur wie geht&apos;s sagen&apos; und die zugehörige Geste wird abgespielt.">
Ersetzen mit:
</text>
- <line_editor name="replace_editor"
- tool_tip="Ersetzt den Auslösertext mit diesem Text. Wenn Sie zum Beispiel den Auslöser &apos;hallo&apos; durch &apos;wie geht&apos;s&apos; ersetzen, erscheint im Chat anstelle von &apos;Ich wollte nur hallo sagen&apos; der Text &apos;Ich wollte nur wie geht&apos;s sagen&apos; und die zugehörige Geste wird abgespielt." />
+ <line_editor name="replace_editor" tool_tip="Ersetzt den Auslösertext mit diesem Text. Wenn Sie zum Beispiel den Auslöser &apos;hallo&apos; durch &apos;wie geht&apos;s&apos; ersetzen, erscheint im Chat anstelle von &apos;Ich wollte nur hallo sagen&apos; der Text &apos;Ich wollte nur wie geht&apos;s sagen&apos; und die zugehörige Geste wird abgespielt."/>
<text name="key_label">
Tastenkürzel:
</text>
- <combo_box label="Keine" name="modifier_combo" />
- <combo_box label="Keine" name="key_combo" />
- <text>
- Bibliothek:
- </text>
- <text>
- Schritte:
- </text>
+ <combo_box label="Keine" name="modifier_combo"/>
+ <combo_box label="Keine" name="key_combo"/>
<text name="library_label">
Bibliothek:
</text>
<text name="steps_label">
Schritte:
</text>
- <button label="Hinzufügen &gt;&gt;" name="add_btn" />
- <button label="Nach oben" name="up_btn" />
- <button label="Nach unten" name="down_btn" />
- <button label="Entfernen" name="delete_btn" />
+ <scroll_list name="library_list">
+ Animation
+Ton
+Chat
+Warten
+ </scroll_list>
+ <button label="Hinzufügen &gt;&gt;" name="add_btn"/>
+ <button label="Nach oben" name="up_btn"/>
+ <button label="Nach unten" name="down_btn"/>
+ <button label="Entfernen" name="delete_btn"/>
<text name="help_label">
Alle Schritte erfolgen zur selben
Zeit, außer Sie fügen Warteschritte
ein.
</text>
<radio_group name="animation_trigger_type">
- <radio_item>
- Start
- </radio_item>
- <radio_item>
- Stopp
- </radio_item>
<radio_item name="start">
Start
</radio_item>
@@ -52,19 +53,9 @@ ein.
Stopp
</radio_item>
</radio_group>
- <check_box label="bis alle Animationen beendet sind" name="wait_anim_check" />
- <check_box label="Zeit in Sekunden" name="wait_time_check" />
- <check_box label="Aktiv" name="active_check"
- tool_tip="Aktive Gesten werden durch Chat-Eingabe ihrer Auslösephrasen oder Drücken von Tastenkürzeln ausgelöst. Bei doppelten Tastenzuweisungen funktionieren Gesten in der Regel nicht." />
- <button label="Vorschau" name="preview_btn" />
- <button label="Speichern" name="save_btn" />
- <text name="none_text">
- – Keine –
- </text>
- <text name="stop_txt">
- Stopp
- </text>
- <text name="preview_txt">
- Vorschau
- </text>
+ <check_box label="bis alle Animationen beendet sind" name="wait_anim_check"/>
+ <check_box label="Zeit in Sekunden" name="wait_time_check"/>
+ <check_box label="Aktiv" name="active_check" tool_tip="Aktive Gesten werden durch Chat-Eingabe ihrer Auslösephrasen oder Drücken von Tastenkürzeln ausgelöst. Bei doppelten Tastenzuweisungen funktionieren Gesten in der Regel nicht."/>
+ <button label="Vorschau" name="preview_btn"/>
+ <button label="Speichern" name="save_btn"/>
</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_report_abuse.xml b/indra/newview/skins/default/xui/de/floater_report_abuse.xml
index a262c17017..da6affbc7e 100644
--- a/indra/newview/skins/default/xui/de/floater_report_abuse.xml
+++ b/indra/newview/skins/default/xui/de/floater_report_abuse.xml
@@ -15,8 +15,8 @@
<text name="pos_title">
Position:
</text>
- <texture_picker label="Arbeitet..." name="screenshot" />
- <check_box label="Screenshot einschließen" name="screen_check" />
+ <texture_picker name="screenshot" />
+ <check_box label="Screenshot einschließen" name="screen_check" bottom_delta="-20" />
<text name="pos_field">
{128.1, 128.1, 15.4}
</text>
@@ -201,7 +201,7 @@ Missbrauchs, relevantem Chat/IM und wählen Sie das
Objekt, wenn möglich.
</text>
<text_editor bottom_delta="-136" height="130" name="details_edit" />
- <text name="incomplete_title">
+ <text name="incomplete_title" bottom_delta="-20">
Hinweis: Unvollständige Meldungen werden nicht bearbeitet.
</text>
<button label="Missbrauch melden" label_selected="Missbrauch melden" name="send_btn" />
diff --git a/indra/newview/skins/default/xui/de/panel_login.xml b/indra/newview/skins/default/xui/de/panel_login.xml
index b024f7a121..1057bc0fa4 100644
--- a/indra/newview/skins/default/xui/de/panel_login.xml
+++ b/indra/newview/skins/default/xui/de/panel_login.xml
@@ -23,23 +23,22 @@
&lt;Region eingeben&gt;
</combo_item>
</combo_box>
- <check_box label="Kennwort merken" name="remember_check" />
+ <check_box label="Kennwort merken" name="remember_check"/>
<text name="full_screen_text">
Die Anzeige schaltet bei Anmeldung auf Vollbild um.
</text>
- <button label="Neues Konto..." label_selected="Neues Konto..." name="new_account_btn" />
- <button label="Einstellungen..." label_selected="Einstellungen..."
- name="preferences_btn" />
- <button label="Second Life betreten" label_selected="Verbinden" name="connect_btn" />
- <button label="Beenden" label_selected="Beenden" name="quit_btn" />
+ <button label="Neues Konto..." label_selected="Neues Konto..." name="new_account_btn"/>
+ <button label="Einstellungen..." label_selected="Einstellungen..." name="preferences_btn"/>
+ <button label="Login" label_selected="Login" name="connect_btn"/>
+ <button label="Beenden" label_selected="Beenden" name="quit_btn"/>
<text name="version_text">
1.23.4 (5)
</text>
<text name="create_new_account_text">
- Neues Konto erstellen.
+ Konto erstellen
</text>
<text name="channel_text">
- [Viewer Channel Name]
+ [CHANNEL] [VERSION]
</text>
<text name="forgot_password_text">
Namen oder Kennwort vergessen?
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_chat.xml b/indra/newview/skins/default/xui/de/panel_preferences_chat.xml
index 63120d330d..24a3efdadd 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_chat.xml
@@ -1,64 +1,59 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel label="Text-Chat" name="chat">
- <text type="string" length="1" name="text_box">
+ <text length="1" name="text_box" type="string">
Chat-Schriftgröße:
</text>
<radio_group name="chat font size">
- <radio_item type="string" length="1" name="radio">
+ <radio_item length="1" name="radio" type="string">
Klein
</radio_item>
- <radio_item type="string" length="1" name="radio2">
+ <radio_item length="1" name="radio2" type="string">
Mittel
</radio_item>
- <radio_item type="string" length="1" name="radio3">
+ <radio_item length="1" name="radio3" type="string">
Groß
</radio_item>
</radio_group>
- <text type="string" length="1" name="text_box2">
+ <text length="1" name="text_box2" type="string">
Chat-Farbe:
</text>
- <color_swatch label="Sie" name="user" />
- <color_swatch label="Andere" name="agent" />
- <color_swatch label="IM" name="im" />
- <color_swatch label="System" name="system" />
- <color_swatch label="Chat" name="users" />
- <color_swatch label="Objekte" name="objects" />
- <color_swatch label="Eigentümer" name="owner" width="58" />
- <color_swatch label="Blase" left_delta="62" name="background" />
- <color_swatch label="URLs" name="links" />
- <text type="string" length="1" name="text_box3">
+ <color_swatch label="Sie" name="user"/>
+ <color_swatch label="Andere" name="agent"/>
+ <color_swatch label="IM" name="im"/>
+ <color_swatch label="System" name="system"/>
+ <color_swatch label="Chat" name="users"/>
+ <color_swatch label="Objekte" name="objects"/>
+ <color_swatch label="Eigentümer" name="owner" width="58"/>
+ <color_swatch label="Blase" left_delta="62" name="background"/>
+ <color_swatch label="URLs" name="links"/>
+ <text length="1" name="text_box3" type="string">
Chat-Konsole:
</text>
- <spinner label="Chat ausblenden nach" label_width="115" left="148" name="fade_chat_time"
- width="160" />
- <text type="string" length="1" left="310" name="text_box4">
+ <spinner label="Chat ausblenden nach" label_width="115" left="148" name="fade_chat_time" width="160"/>
+ <text left="310" length="1" name="text_box4" type="string">
(Sekunden)
</text>
- <spinne left="370" name="max_chat_count" />
- <text type="string" length="1" left="435" name="text_box5">
+ <spinne left="370" name="max_chat_count"/>
+ <text left="435" length="1" name="text_box5" type="string">
(# Zeilen)
</text>
- <slider label="Deckkraft" name="console_opacity" />
- <text type="string" length="1" name="text_box6">
+ <slider label="Deckkraft" name="console_opacity"/>
+ <text length="1" name="text_box6" type="string">
Chat-Optionen:
</text>
- <check_box label="Chat verwendet volle Bildbreite (nach Neustart)"
- name="chat_full_width_check" />
- <check_box label="Chat nach Drücken der Eingabetaste schließen"
- name="close_chat_on_return_check" />
- <check_box label="Pfeiltasten bewegen immer den Avatar beim Chatten"
- name="arrow_keys_move_avatar_check" />
- <check_box label="Zeitstempel in Chat anzeigen" name="show_timestamps_check" />
- <check_box label="Tipp-Animation abspielen" name="play_typing_animation" />
- <text type="string" length="1" name="text_box7">
+ <check_box label="Chat verwendet volle Bildbreite (Neustart erforderlich)." name="chat_full_width_check"/>
+ <check_box label="Chatleiste nach Drücken der Eingabetaste schließen" name="close_chat_on_return_check"/>
+ <check_box label="Pfeiltasten bewegen immer den Avatar beim Chatten" name="arrow_keys_move_avatar_check"/>
+ <check_box label="Zeitstempel im lokalen Chat anzeigen" name="show_timestamps_check"/>
+ <check_box label="Beim Chatten Tippanimation abspielen" name="play_typing_animation"/>
+ <text length="1" name="text_box7" type="string">
Blasen-Chat:
</text>
- <check_box label="Chat-Blasen anzeigen" name="bubble_text_chat" />
- <slider label="Deckkraft" name="bubble_chat_opacity" />
- <text type="string" length="1" name="text_box8">
+ <check_box label="Chat-Blasen anzeigen" name="bubble_text_chat"/>
+ <slider label="Deckkraft" name="bubble_chat_opacity"/>
+ <text length="1" name="text_box8" type="string">
Skriptfehler:
</text>
- <check_box label="Skriptfehler und Warnungen als normalen Chat anzeigen"
- name="script_errors_as_chat" />
- <color_swatch label="Fehler" name="script_error" />
+ <check_box label="Skriptfehler und Warnungen als normalen Chat anzeigen" name="script_errors_as_chat"/>
+ <color_swatch label="Fehler" name="script_error"/>
</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_region_estate.xml b/indra/newview/skins/default/xui/de/panel_region_estate.xml
index 94d7d18514..625f6ab9de 100644
--- a/indra/newview/skins/default/xui/de/panel_region_estate.xml
+++ b/indra/newview/skins/default/xui/de/panel_region_estate.xml
@@ -24,7 +24,7 @@
tool_tip="Einwohner ohne Altersprüfung verbannen. Weitere Informationen finden Sie auf support.secondlife.com." />
<check_box label="Voice-Chat erlauben" name="voice_chat_check" />
<button label="?" name="voice_chat_help" />
- <text name="abuse_email_text">
+ <text name="abuse_email_text" width="222">
E-Mail-Adresse für Missbrauchsmeldungen:
</text>
<string name="email_unsupported">
diff --git a/indra/newview/skins/default/xui/es/floater_report_abuse.xml b/indra/newview/skins/default/xui/es/floater_report_abuse.xml
index c0461e98cc..9cfc7a72bd 100644
--- a/indra/newview/skins/default/xui/es/floater_report_abuse.xml
+++ b/indra/newview/skins/default/xui/es/floater_report_abuse.xml
@@ -9,7 +9,7 @@
<text name="pos_title">
Posición:
</text>
- <texture_picker label="Trabajando..." name="screenshot" />
+ <texture_picker name="screenshot" />
<check_box label="Incluir foto instantánea" name="screen_check" />
<combo_box name="category_combo"
tool_tip="Category -- select the category that best describes this report">
diff --git a/indra/newview/skins/default/xui/fr/floater_about.xml b/indra/newview/skins/default/xui/fr/floater_about.xml
index 883551c8de..ea3c5e3b97 100644
--- a/indra/newview/skins/default/xui/fr/floater_about.xml
+++ b/indra/newview/skins/default/xui/fr/floater_about.xml
@@ -1,4 +1,34 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater name="floater_about" title="A propos de Second Life">
+ <text_editor name="credits_editor">
+ Second Life existe grâce aux efforts de Philip, Tessa, Andrew, Cory, Ben, Bunny, Char, Charlie, Colin, Dan, Daniel, Doug, Eric, Hamlet, Haney, Hunter, Ian, Jeff, Jim, John, Lee, Mark, Peter, Phoenix, Richard, Robin, Xenon, Steve, Tanya, Eddie, Frank, Bruce, Aaron, Alice, Bob, Debra, Eileen, Helen, Janet, Louie, Leviathania, Stefan, Ray, Kevin, Tom, Mikeb, MikeT, Burgess, Elena, Tracy, BillTodd, Ryan, Zach, Sarah, Nova, Otakon, Tim, Stephanie, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Magellan, Ramzi, Don, Sabin, Jill, Rheya, DanceStar, Jeska, Hungry, Torley, Kona, Callum, Charity, Ventrella, Jack, Uncle, Vektor, Iris, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Altruima, Jesse, Monroe, David, Tess, Lizzie, Patsy, Pony, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Yuko, Makiko, Thomas, Harry, Seth, Alexei, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, beez, Milo, Hermia, Red, Thrax, Joe, Sally, Magenta, Paul, Jose, Rejean, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Jean, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, dustin, George, Del, Matthew, Cat, Jacqui, Lightfoot, Adrian, Viola, Alfred, Noel, Irfan, Sunil, Yool, Rika, Jane, Xtreme, Frontier, a2, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Gulliver, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Anthony, Jeremy, JP, Jake, Maurice, Madhavi, Leopard, Kyle, Joon, Kari, Bert, Belinda, Jon, Kristi, Bridie, Pramod, KJ, Socrates, Maria, Ivan, Aric, Yamasaki, Adreanne, Jay, MitchK, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Colossus, Zen, BigPapi, Brad, Pastrami, Kurz, Mani, Neuro, Jaime, MJ, Rowan, Sgt, Elvis, Gecko, Samuel, Sardonyx, Leo, Bryan, Niko, Soft, Poppy, Rachel, Aki, Angelo, Banzai, Alexa, Sue, CeeLo, Bender, CG, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Heidy, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Winnie, Stella, Milton, Rothman, Niall, Marin, Allison, James, Katie, Dawn, Katt, Kalpana, Judy, Andrea, Ambroff, Infinity, Gail, Rico, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Austin, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn et de nombreuses autres personnes.
+ Tous nos remerciements aux résidents suivants pour avoir testé cette version (la meilleure qui soit jusqu&apos;à présent) : aaron23 decuir, Abra Miles, absolute balderdash, adelle fitzgerald, Aeron Kohime, Aki Shichiroji, Alger Meads, Alissa Sabre, AlwaysIcey Mapholisto, Arawn Spitteler, Aren Mandala, Arianna Wrigglesworth, Bagushii Kohime, Balpien Hammerer, Blinking2342 Blinker, byakuya runo, Capucchy Streeter, Chandra Jun, Coyote Pace, Crusher Soderstrom, Cummere Mayo, cyberrosa Rossini, Dael Ra, danana dodonpa, Darek Deluca, Davec Horsforth, django yifu, draco crane, Dre Dagostino, Ephyu Reino, etan quan, Fenrix Murakami, Fledhyris Proudhon, Fred Wardhani, Frederich Courier, garth fairchang, Gellan Glenelg, Geraldine Giha, GOLAN Eilde, gonzo joubert, Hachiro Yokosuka, Hampton Hax, harleywood guru, Hevenz Vansant, imnotgoing sideways, Jaden Giles, Jeanette Janus, Karl Dorance, keaton Akina, Khashai Steinbeck, KiPSOFT Tuqiri, kirstenlee Cinquetti, Kitty Barnett, Laurent Vesta, Lazure Ryba, Lima Vesperia, Linzi Bingyi, Lisa Lowe, LuDon Ninetails, Mark Rosenbaum, McCabe Maxsted, Michi Lumin, Midi Aeon, ml0rtd kit, Mo Eriksen, Morice Flanagan, Mysterion Aeon, Nad Gough, norgan torok, Pygar Bu, Qie Niangao, rachel corleone, Rado Arado, roberto salubrius, Royer Pessoa, samia bechir, Sasha Nurmi, Sean Heying, Selkit Diller, Shadow Pidgeon, simon kline, Smokie Ember, Soap Clawtooth, Strife Onizuka, Tal Chernov, Talan Hyun, tangletwigs fairymeadow, Tanya Spinotti, Tayra Dagostino, Teebone Aeon, Theremes Langdon, Thraxis Epsilon, tucor Capalini, Vasko Hawker, VenusMari Zapedzki, Vex Streeter, Viktoria Dovgal, Vincent Nacon, Viridian Exonar, Vivienne Schell, WarKirby Magojiro, Wilton Lundquist, Yukinoroh Kamachi, Zyzzy Zarf
+
+ 3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion
+ APR Copyright (C) 2000-2004 The Apache Software Foundation
+ cURL Copyright (C) 1996-2002, Daniel Stenberg, (daniel@haxx.se)
+ expat Copyright (C) 1998, 1999, 2000 Thai Open Source Software Center Ltd.
+ FreeType Copyright (C) 1996-2002, The FreeType Project (www.freetype.org).
+ GL Copyright (C) 1999-2004 Brian Paul.
+ Havok.com(TM) Copyright (C) 1999-2001, Telekinesys Research Limited.
+ jpeg2000 Copyright (C) 2001, David Taubman, The University of New South Wales (UNSW)
+ jpeglib Copyright (C) 1991-1998, Thomas G. Lane.
+ ogg/vorbis Copyright (C) 2001, Xiphophorus
+ OpenSSL Copyright (C) 1998-2002 The OpenSSL Project.
+ SDL Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga
+ SSLeay Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
+ xmlrpc-epi Copyright (C) 2000 Epinions, Inc.
+ zlib Copyright (C) 1995-2002 Jean-loup Gailly et Mark Adler.
+
+ Tous droits réservés. Voir licenses.txt pour plus de détails.
+
+ Codage Audio du chat vocal : Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)
+
+
+ What happens to a dream deferred? --Langston Hughes
+ </text_editor>
+ <string name="you_are_at">
+ Votre position : [POSITION]
+ </string>
</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_about_land.xml b/indra/newview/skins/default/xui/fr/floater_about_land.xml
index cfd117cc04..ece6aebf68 100644
--- a/indra/newview/skins/default/xui/fr/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/fr/floater_about_land.xml
@@ -25,6 +25,9 @@
tool_tip="Vous ne pouvez transférer de terrain que si vous êtes officier du groupe." />
<check_box label="Le propriétaire contribue par transfert" name="check contib"
tool_tip="Lorsque le terrain est transféré au groupe, la contribution du précédent propriétaire suffit à l&apos;entretenir." />
+ <check_box label="Le propriétaire fait un don en transférant le titre de propriété"
+ name="check contrib"
+ tool_tip="Lorsqu&apos;un titre de propriété est transféré au groupe, l&apos;ancien propriétaire fait également un don de terre suffisant." />
<text type="string" length="1" name="For Sale:">
A vendre :
</text>
@@ -85,6 +88,40 @@
<text name="anyone">
Tout le monde
</text>
+ <string name="area_text">
+ Surface
+ </string>
+ <string name="area_size_text">
+ [AREA] m²
+ </string>
+ <string name="auction_id_text">
+ Code de l&apos;enchère : [ID]
+ </string>
+ <string name="need_tier_to_modify">
+ Pour modifier ce terrain, vous devez approuver votre achat.
+ </string>
+ <string name="group_owned_text">
+ (propriété du groupe)
+ </string>
+ <string name="profile_text">
+ Profil...
+ </string>
+ <string name="info_text">
+ Infos...
+ </string>
+ <string name="public_text">
+ (public)
+ </string>
+ <string name="none_text">
+ (aucun)
+ </string>
+ <string name="sale_pending_text">
+ (vente en cours)
+ </string>
+ <string name="no_selection_text">
+ Aucune parcelle sélectionnée.
+Allez dans le menu Monde &gt; A propos du terrain ou sélectionnez une autre parcelle pour en afficher les détails.
+ </string>
</panel>
<panel label="Clause de sauvegarde" name="land_covenant_panel">
<text type="string" length="1" name="covenant_timestamp_text">
@@ -131,12 +168,24 @@
</text>
</panel>
<panel label="Objets" name="land_objects_panel">
+ <text name="parcel_object_bonus">
+ Facteur Bonus Objets : [BONUS]
+ </text>
<text type="string" length="1" name="Simulator primitive usage:">
Primitifs utilisés sur le sim :
</text>
<text type="string" length="1" name="0 out of 0 available">
0 sur 14055 (14055 disponibles)
</text>
+ <text name="objects_available">
+ [COUNT] sur [COUNT] ([COUNT] disponibles)
+ </text>
+ <string name="objects_available_text">
+ [COUNT] sur [MAX] ([AVAILABLE] disponibles)
+ </string>
+ <string name="objects_deleted_text">
+ [COUNT] sur [MAX] ([DELETED] seront supprimés)
+ </string>
<text type="string" length="1" name="Primitives parcel supports:">
Primitifs max. sur parcelle :
</text>
@@ -185,6 +234,9 @@
<text type="string" length="1" name="Autoreturn other resident&amp;apos;s objects (minutes, 0 for off):">
Renvoi automatique des objets appartenant aux autres résidents (minutes, 0 pour désactiver):
</text>
+ <text name="Autoreturn">
+ Retour automatique des objets des autres résidents (minutes, 0 pour désactiver) :
+ </text>
<text type="string" length="1" name="Object Owners:">
Propriétaires :
</text>
@@ -194,14 +246,31 @@
<button label="" label_selected="" name="Type" tool_tip="Trier par type" />
<button label="Nom" label_selected="Nom" name="Name" tool_tip="Trier par nom" />
<button label="Trafic" label_selected="Trafic" name="Count" tool_tip="Trier par trafic" />
+ <name_list label="Plus récents" name="owner list">
+ <column label="Type" name="type" />
+ <column label="Nom" name="name" />
+ <column label="Nombre" name="count" />
+ </name_list>
</panel>
<panel label="Options" name="land_options_panel">
<text type="string" length="1" name="allow_label">
Autoriser d&apos;autres résidents à :
</text>
+ <text name="allow_label2">
+ Créer des objets :
+ </text>
<check_box label="Créer objets" name="edit objects check" />
<check_box label="Modifier le relief" name="edit land check" />
<check_box label="Créer repères" name="check landmark" />
+ <check_box label="Groupe" name="edit group objects check" />
+ <text name="allow_label3">
+ Apporter des objets :
+ </text>
+ <check_box label="Tous les résidents" name="all object entry check" />
+ <check_box label="Groupe" name="group object entry check" />
+ <text name="allow_label4">
+ Exécuter des scripts :
+ </text>
<check_box label="Exécuter des scripts de groupe" name="check group scripts" />
<check_box label="Voler" name="check fly" />
<check_box label="Exécuter d&apos;autres scripts" name="check other scripts" />
@@ -211,7 +280,8 @@
<check_box label="Sans danger (pas de dégâts)" name="check safe" />
<check_box label="Interdire de pousser" name="PushRestrictCheck"
tool_tip="llPushObject ne fonctionnera que sur des scripts appartenant au propriétaire de la parcelle ou si celui qui est poussé est propriétaire du script." />
- <check_box label="Show in Search &gt; Places (L$30/week) under" name="ShowDirectoryCheck" />
+ <check_box label="Show in Search &gt; Places (L$30/week) under" name="ShowDirectoryCheck"
+ tool_tip="Afficher la parcelle dans les résultats de recherche" />
<combo_box name="land category">
<combo_item name="AnyCategory">
Toutes catégories
@@ -265,6 +335,12 @@
<text type="string" length="1" name="Landing Point: (none)">
Point d&apos;atterrissage : (aucun)
</text>
+ <text name="landing_point">
+ Lieu d&apos;arrivée : [LANDING]
+ </text>
+ <string name="landing_point_none">
+ (aucun)
+ </string>
<button label="Définir" label_selected="Définir" name="Set"
tool_tip="Définir le point d&apos;atterrissage sur votre position actuelle. Il doit se trouver à l&apos;intérieur de cette parcelle de terrain." />
<button label="Effacer" label_selected="Effacer" name="Clear"
@@ -284,8 +360,59 @@
Partout
</combo_item>
</combo_box>
+ <string name="push_restrict_text">
+ Interdire les bousculades
+ </string>
+ <string name="push_restrict_region_text">
+ Interdire les bousculades (passer outre les règles de la région)
+ </string>
</panel>
<panel label="Média" name="land_media_panel">
+ <text name="with media:">
+ Type de média :
+ </text>
+ <combo_box name="media type"
+ tool_tip="Indiquez s&apos;il s&apos;agit de l&apos;URL d&apos;un film, d&apos;une page web ou autre" />
+ <text name="at URL:">
+ URL du média :
+ </text>
+ <button label="Définir..." label_selected="Définir..." name="set_media_url" />
+ <text name="Description:">
+ Description :
+ </text>
+ <line_editor name="url_description"
+ tool_tip="Texte affiché à côté du bouton Jouer/Charger" />
+ <text name="replace_texture_help">
+ (Les objets avec cette texture affichent le film ou
+la page web quand vous cliquez sur la flèche Jouer).
+ </text>
+ <text name="Options:">
+ Options
+média :
+ </text>
+ <check_box label="Média en boucle" name="media_loop"
+ tool_tip="Jouer le média en boucle. Lorsque le média aura fini de jouer, il recommencera." />
+ <check_box label="Masquer l&apos;URL du média" name="hide_media_url"
+ tool_tip="Si vous cochez cette option, les personnes non autorisées à accéder aux infos de cette parcelle ne verront pas l&apos;URL du média. Cette option n&apos;est pas disponible pour les fichiers HTML." />
+ <check_box label="Masquer l&apos;URL de la musique" name="hide_music_url"
+ tool_tip="Si vous cochez cette option, les personnes non autorisées à accéder aux infos de cette parcelle ne verront pas l&apos;URL de la musique." />
+ <text name="media_size"
+ tool_tip="Taille du média Web, laisser 0 pour la valeur par défaut.">
+ Taille du média :
+ </text>
+ <spinner name="media_size_width"
+ tool_tip="Taille du média Web, laisser 0 pour la valeur par défaut." />
+ <spinner name="media_size_height"
+ tool_tip="Taille du média Web, laisser 0 pour la valeur par défaut." />
+ <text name="pixels">
+ pixels
+ </text>
+ <text name="MusicURL:">
+ URL de la musique :
+ </text>
+ <text name="Sound:">
+ Son :
+ </text>
<check_box label="Limiter le son spatial à la parcelle" name="check sound local" />
<text type="string" length="1" name="Music URL:">
URL du flux :
@@ -305,18 +432,67 @@ du média :
label="Redimensionnement automatique (plus lent et affichage de qualité inférieure)"
name="media_auto_scale"
tool_tip="Cochez pour mettre le contenu à l&apos;échelle de cette parcelle. Cela peut légèrement affecter la rapidité et la qualité visuelle, mais ne nécessitera pas de remise à l&apos;échelle ou de réalignement de texture supplémentaires." />
+ <text name="Voice settings:">
+ Voix :
+ </text>
+ <radio_group name="parcel_voice_channel">
+ <radio_item name="Estate">
+ Utiliser le canal spatial du domaine
+ </radio_item>
+ <radio_item name="Private">
+ Utiliser un canal spatial privé
+ </radio_item>
+ <radio_item name="Disabled">
+ Désactiver les canaux spatiaux audios sur cette parcelle
+ </radio_item>
+ </radio_group>
</panel>
<panel label="Accès" name="land_access_panel">
<text type="string" length="1" name="Limit access to this parcel to:">
Restreindre l&apos;accès à cette parcelle à :
</text>
- <check_box label="Groupe : (aucun)" name="GroupCheck" />
+ <check_box label="Autoriser l&apos;accès public" name="public_access" />
+ <text name="Only Allow">
+ Bloquer l&apos;accès :
+ </text>
+ <check_box
+ label="Aux résidents qui n&apos;ont pas fourni leurs informations de paiement à Linden Lab"
+ name="limit_payment" tool_tip="Aux résidents non identifés" />
+ <check_box label="Aux résidents dont l&apos;âge n&apos;a pas été vérifié"
+ name="limit_age_verified"
+ tool_tip="Aux résidents dont l&apos;âge n&apos;a pas été vérifié. Pour plus d&apos;infos, consultez la page support.secondlife.com." />
+ <string name="estate_override">
+ Au moins une de ces options est définie au niveau du domaine.
+ </string>
+ <check_box label="Groupe : (aucun)" name="GroupCheck"
+ tool_tip="Définir le groupe à l&apos;onglet Général." />
<check_box label="Avatars : (0 dans la liste, 300 max)" name="AccessCheck" />
<button label="Ajouter..." label_selected="Ajouter..." name="Add..." />
<button label="Retirer" label_selected="Retirer" name="Remove" />
- <check_box label="Vendre des laissez-passer temporaires :" name="PassCheck" />
+ <check_box label="Vendre des laissez-passer temporaires :" name="PassCheck"
+ tool_tip="Autoriser un accès temporaire à cette parcelle" />
+ <combo_box name="pass_combo">
+ <combo_item name="Anyone">
+ N&apos;importe qui
+ </combo_item>
+ <combo_item name="Group">
+ Groupe
+ </combo_item>
+ </combo_box>
<spinner label="Prix en L$ :" name="PriceSpin" />
<spinner label="Heures de connexion :" name="HoursSpin" />
+ <text label="Toujours autoriser" name="AllowedText">
+ Résidents autorisés
+ </text>
+ <name_list name="AccessList" tool_tip="([LISTED] listés, [MAX] max)" />
+ <button label="Ajouter..." label_selected="Ajouter..." name="add_allowed" />
+ <button label="Supprimer" label_selected="Supprimer" name="remove_allowed" />
+ <text label="Interdire" name="BanCheck">
+ Résidents interdits
+ </text>
+ <name_list name="BannedList" tool_tip="([LISTED] listés, [MAX] max)" />
+ <button label="Ajouter..." label_selected="Ajouter..." name="add_banned" />
+ <button label="Supprimer" label_selected="Supprimer" name="remove_banned" />
</panel>
<panel label="Bannir" name="land_ban_panel">
<check_box label="Bannir les avatars suivants : (0 dans la liste, 300 max)"
diff --git a/indra/newview/skins/default/xui/fr/floater_animation_preview.xml b/indra/newview/skins/default/xui/fr/floater_animation_preview.xml
index 93028ee518..f527c252d4 100644
--- a/indra/newview/skins/default/xui/fr/floater_animation_preview.xml
+++ b/indra/newview/skins/default/xui/fr/floater_animation_preview.xml
@@ -157,4 +157,17 @@
</text>
<button label="Annuler" name="cancel_btn" />
<button label="Uploader (L$[AMOUNT])" name="ok_btn" />
+ <string name="failed_to_initialize">
+ Echec de l&apos;initialisation du mouvement
+ </string>
+ <string name="anim_too_long">
+ Le fichier d&apos;animation fait [LENGTH] secondes.
+
+La longueur maximale est de [MAX_LENGTH] secondes.
+ </string>
+ <string name="failed_file_read">
+ Impossible de lire le fichier d&apos;animation.
+
+[STATUS]
+ </string>
</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_avatar_picker.xml b/indra/newview/skins/default/xui/fr/floater_avatar_picker.xml
index cd163612e5..0863f29176 100644
--- a/indra/newview/skins/default/xui/fr/floater_avatar_picker.xml
+++ b/indra/newview/skins/default/xui/fr/floater_avatar_picker.xml
@@ -3,10 +3,16 @@
<text name="Type part of the person&apos;s name:">
Entrez les premières lettres du nom de la personne :
</text>
+ <text name="instruct_search_resident_name">
+ Saisissez une partie du nom du résident :
+ </text>
<button label="Chercher" label_selected="Chercher" name="Find" />
<text name="Or select a calling card:">
Ou sélectionnez une carte de visite :
</text>
+ <text name="Or select their calling card:">
+ Ou choisissez une carte de visite :
+ </text>
<button label="Sélectionner" label_selected="Sélectionner" name="Select" />
<button label="Fermer" label_selected="Fermer" name="Close" />
<text name="NotFound">
diff --git a/indra/newview/skins/default/xui/fr/floater_avatar_textures.xml b/indra/newview/skins/default/xui/fr/floater_avatar_textures.xml
index d7954e9005..6bad748d9e 100644
--- a/indra/newview/skins/default/xui/fr/floater_avatar_textures.xml
+++ b/indra/newview/skins/default/xui/fr/floater_avatar_textures.xml
@@ -6,6 +6,12 @@
<text name="">
Composite Textures
</text>
+ <text name="baked_label">
+ Textures fixées
+ </text>
+ <text name="composite_label">
+ Textures composées
+ </text>
<texture_picker label="Tête" name="baked_head" />
<texture_picker label="Maquillage" name="head_bodypaint" />
<texture_picker label="Cheveux" name="hair" />
diff --git a/indra/newview/skins/default/xui/fr/floater_build_options.xml b/indra/newview/skins/default/xui/fr/floater_build_options.xml
index f05e522cbb..708d428dd2 100644
--- a/indra/newview/skins/default/xui/fr/floater_build_options.xml
+++ b/indra/newview/skins/default/xui/fr/floater_build_options.xml
@@ -3,5 +3,6 @@
<spinner label="Unité de mesure (m)" name="GridResolution" />
<spinner label="Etendue (mètres)" name="GridDrawSize" />
<check_box label="Activer magnétisme sous-unités" name="GridSubUnit" />
+ <check_box label="Afficher les sections transversales" name="GridCrossSection" />
<slider label="Opacité de la grille" name="GridOpacity" />
</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_buy_contents.xml b/indra/newview/skins/default/xui/fr/floater_buy_contents.xml
index 2902ad7f6c..a1a4066cd0 100644
--- a/indra/newview/skins/default/xui/fr/floater_buy_contents.xml
+++ b/indra/newview/skins/default/xui/fr/floater_buy_contents.xml
@@ -9,4 +9,13 @@
<button label="Annuler" label_selected="Annuler" name="cancel_btn" />
<button label="Acheter" label_selected="Acheter" name="buy_btn" />
<check_box label="Porter ce vêtement maintenant" name="wear_check" />
+ <string name="no_copy_text">
+ (pas de copie)
+ </string>
+ <string name="no_modify_text">
+ (pas de modification)
+ </string>
+ <string name="no_transfer_text">
+ (pas de transfert)
+ </string>
</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_buy_currency.xml b/indra/newview/skins/default/xui/fr/floater_buy_currency.xml
index e43b3b0248..4079c036c9 100644
--- a/indra/newview/skins/default/xui/fr/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/fr/floater_buy_currency.xml
@@ -1,62 +1,68 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater name="buy currency" title="Acheter des devises">
+<floater name="buy currency" title="Acheter devise">
<text name="info_buying">
- Achat de devises :
+ Achat de devise :
</text>
<text name="info_cannot_buy">
- Achat actuellement impossible :
+ Impossible d&apos;acheter maintenant :
</text>
<text name="info_need_more">
- Il vous faut plus de devises :
+ Vous avez besoin de plus de devises :
</text>
<text name="error_message">
- Quelque chose ne tourne pas rond.
+ Quelque chose ne va pas.
</text>
- <button label="Visiter le site" name="error_web" />
+ <button label="Aller sur le site" name="error_web" />
<text name="contacting">
- Connexion avec LindeX en cours...
+ En train de contacter Lindex...
</text>
<text name="buy_action_unknown">
- Acheter des L$ sur le marché de devises LindeX
+ Acheter des $L sur le marché des changes du LindeX
</text>
<text name="buy_action">
- [NAME] L$ [PRICE]
+ [NAME] $L [PRICE]
</text>
<text name="currency_action">
- Acheter des L$
+ Acheter des $L
</text>
<line_editor name="currency_amt">
1234
</line_editor>
<text name="currency_est">
- pour environ US$ [USD]
+ pour environ [USD] $US
+ </text>
+ <text name="getting_data">
+ Obtention des données...
</text>
<text name="balance_label">
- Vous avez actuellement
+ Actuellement, vous avez
</text>
<text name="balance_amount">
- L$ [AMT]
+ [AMT] $L
</text>
<text name="buying_label">
Vous achetez
</text>
<text name="buying_amount">
- L$ [AMT]
+ [AMT] $L
</text>
<text name="total_label">
- Votre solde sera
+ Votre solde sera de
</text>
<text name="total_amount">
- L$ [AMT]
+ [AMT] $L
</text>
<text name="purchase_warning_repurchase">
- Confirmer cette acquisition n&apos;entraîne que l&apos;achat de devises.
-Vous devrez répéter l&apos;opération.
+ En confirmant cette transaction, vous achetez uniquement les devises.
+Vous devrez recommencer cette opération.
</text>
<text name="purchase_warning_notenough">
- Achat de devises insuffisant.
-Veuillez saisir un montant supérieur.
+ Vous n&apos;achetez pas assez de devises.
+Veuillez saisir un montant plus élevé.
</text>
- <button label="Acquérir" name="buy_btn" />
+ <button label="Acheter" name="buy_btn" />
<button label="Annuler" name="cancel_btn" />
+ <string name="buy_currency">
+ Acheter [LINDENS] $L pour environ [USD] $US
+ </string>
</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_buy_land.xml b/indra/newview/skins/default/xui/fr/floater_buy_land.xml
index d1ddbbe79e..ed4e1256fc 100644
--- a/indra/newview/skins/default/xui/fr/floater_buy_land.xml
+++ b/indra/newview/skins/default/xui/fr/floater_buy_land.xml
@@ -229,4 +229,10 @@ ne soit validée.
<text name="balance_needed">
Vous devez acheter au moins L$ [AMOUNT] pour pouvoir acquérir ce terrain.
</text>
+ <string name="no_parcel_selected">
+ (aucune parcelle sélectionnée)
+ </string>
+ <string name="buy_currency">
+ Acheter [LINDENS] $L pour environ [USD] $US
+ </string>
</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_buy_object.xml b/indra/newview/skins/default/xui/fr/floater_buy_object.xml
index 66b9b582e3..d321c4f569 100644
--- a/indra/newview/skins/default/xui/fr/floater_buy_object.xml
+++ b/indra/newview/skins/default/xui/fr/floater_buy_object.xml
@@ -8,4 +8,19 @@
</text>
<button label="Annuler" label_selected="Annuler" name="cancel_btn" />
<button label="Acheter" label_selected="Acheter" name="buy_btn" />
+ <string name="title_buy_text">
+ Acheter
+ </string>
+ <string name="title_buy_copy_text">
+ Acheter une copie
+ </string>
+ <string name="no_copy_text">
+ (pas de copie)
+ </string>
+ <string name="no_modify_text">
+ (pas de modification)
+ </string>
+ <string name="no_transfer_text">
+ (pas de transfert)
+ </string>
</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_camera.xml b/indra/newview/skins/default/xui/fr/floater_camera.xml
new file mode 100644
index 0000000000..26c78d167d
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_camera.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater name="move floater">
+ <string name="rotate_tooltip">
+ Faire tourner la caméra autour du point central
+ </string>
+ <string name="zoom_tooltip">
+ Zoomer en direction du point central
+ </string>
+ <string name="move_tooltip">
+ Déplacer la caméra vers le haut et le bas, la gauche et la droite
+ </string>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_critical.xml b/indra/newview/skins/default/xui/fr/floater_critical.xml
index f7b55c8227..de7cfe0487 100644
--- a/indra/newview/skins/default/xui/fr/floater_critical.xml
+++ b/indra/newview/skins/default/xui/fr/floater_critical.xml
@@ -3,7 +3,7 @@
<button label="Continuer" label_selected="Continuer" name="Continue" />
<button label="Annuler" label_selected="Annuler" name="Cancel" />
<text name="tos_heading">
- Veuillez lire attentivement le message suivant.
+ Veuillez lire le message suivant avec attention.
</text>
<text_editor name="tos_text">
TOS_TEXT
diff --git a/indra/newview/skins/default/xui/fr/floater_customize.xml b/indra/newview/skins/default/xui/fr/floater_customize.xml
index 55a7a41387..540704d094 100644
--- a/indra/newview/skins/default/xui/fr/floater_customize.xml
+++ b/indra/newview/skins/default/xui/fr/floater_customize.xml
@@ -2,14 +2,14 @@
<floater name="floater customize" title="Apparence">
<tab_container name="customize tab container">
<panel label="Parties du corps" />
+ <panel label="Parties du corps" name="body_parts_placeholder" />
<panel label="Silhouette" name="Shape">
- <button label="Créer Nouvelle Silhouette" label_selected="Créer Nouvelle Silhouette"
+ <button label="Créer une silhouette" label_selected="Créer une silhouette"
name="Create New" />
- <button label="Retirer" label_selected="Retirer" name="Take Off" />
+ <button label="Enlever" label_selected="Enlever" name="Take Off" />
<button label="Enregistrer" label_selected="Enregistrer" name="Save" />
<button label="Enregistrer sous" label_selected="Enregistrer sous" name="Save As" />
- <button label="Annuler modifications" label_selected="Annuler modifications"
- name="Revert" />
+ <button label="Rétablir" label_selected="Rétablir" name="Revert" />
<button label="Corps" label_selected="Corps" name="Body" />
<button label="Tête" label_selected="Tête" name="Head" />
<button label="Yeux" label_selected="Yeux" name="Eyes" />
@@ -24,470 +24,429 @@
[DESC]
</text>
<text type="string" length="1" name="title_no_modify">
- [DESC]: modification impossible
+ [DESC]: impossible de modifier
</text>
<text type="string" length="1" name="title_loading">
- [DESC]: chargement en cours...
+ [DESC]: en cours de chargement...
</text>
<text type="string" length="1" name="title_not_worn">
- [DESC]: non porté
+ [DESC]: non portée
</text>
<text type="string" length="1" name="path">
- Situé dans [PATH]
+ Emplacement : [PATH]
</text>
<text type="string" length="1" name="not worn instructions">
- Pour enfiler une nouvelle silhouette, glissez-déposez la sur votre avatar
-depuis votre inventaire. Vous pouvez également en créer une de toutes pièces,
-et la porter.
+ Pour changer de silhouette, faites-en glisser une à partir de votre inventaire.
+jusqu&apos;à votre avatar. L&apos;autre possibilité est d&apos;en créer
+une nouvelle et de la porter.
</text>
<text type="string" length="1" name="no modify instructions">
- Vous n&apos;êtes pas autorisé(e) à modifier cet élément endossable.
+ Vous n&apos;avez pas l&apos;autorisation de modifier cet article.
</text>
<radio_group name="sex radio">
<radio_item type="string" length="1" name="radio">
- Féminin
+ Femme
</radio_item>
<radio_item type="string" length="1" name="radio2">
- Masculin
+ Homme
</radio_item>
</radio_group>
</panel>
<panel label="Peau" name="Skin">
- <button label="Créer Nouvelle Peau" label_selected="Créer Nouvelle Peau"
- name="Create New" />
- <button label="Retirer" label_selected="Retirer" name="Take Off" />
+ <button label="Créer une peau" label_selected="Créer une peau" name="Create New" />
+ <button label="Enlever" label_selected="Enlever" name="Take Off" />
<button label="Enregistrer" label_selected="Enregistrer" name="Save" />
<button label="Enregistrer sous" label_selected="Enregistrer sous" name="Save As" />
- <button label="Annuler modifications" label_selected="Annuler modifications"
- name="Revert" />
- <button label="Couleur de peau" label_selected="Couleur de peau" name="Skin Color" />
- <button label="Détail du visage" label_selected="Détail du visage" name="Face Detail" />
+ <button label="Rétablir" label_selected="Rétablir" name="Revert" />
+ <button label="Couleur" label_selected="Couleur" name="Skin Color" />
+ <button label="Détails visage" label_selected="Détails visage" name="Face Detail" />
<button label="Maquillage" label_selected="Maquillage" name="Makeup" />
- <button label="Détail du corps" label_selected="Détail du corps" name="Body Detail" />
+ <button label="Détails corps" label_selected="Détails corps" name="Body Detail" />
<button label="Aléatoire" label_selected="Aléatoire" name="Randomize" />
<text type="string" length="1" name="title">
[DESC]
</text>
<text type="string" length="1" name="title_no_modify">
- [DESC]: modification impossible
+ [DESC]: impossible de modifier
</text>
<text type="string" length="1" name="title_loading">
- [DESC]: chargement en cours...
+ [DESC]: en cours de chargement...
</text>
<text type="string" length="1" name="title_not_worn">
- [DESC]: non porté
+ [DESC]: non portée
</text>
<text type="string" length="1" name="path">
- Situé dans [PATH]
+ Emplacement : [PATH]
</text>
<text type="string" length="1" name="not worn instructions">
- Pour enfiler une nouvelle peau, glissez-déposez la sur votre avatar
-depuis votre inventaire. Vous pouvez également en créer une de toutes pièces,
-et la porter.
+ Pour changer de peau, faites-en glisser une à partir de votre inventaire. L&apos;autre possibilité est d&apos;en créer une nouvelle et de la porter.
</text>
<text type="string" length="1" name="no modify instructions">
- Vous n&apos;êtes pas autorisé(e) à modifier cet élément endossable.
- </text>
- <texture_picker label="Tatouages à la tête" name="Head Tattoos"
- tool_tip="Cliquez pour choisir une image" />
- <texture_picker label="Tatouages supérieurs" name="Upper Tattoos"
- tool_tip="Cliquez pour choisir une image" />
- <texture_picker label="Tatouages inférieurs" name="Lower Tattoos"
- tool_tip="Cliquez pour choisir une image" />
+ Vous n&apos;avez pas l&apos;autorisation de modifier cet article.
+ </text>
+ <texture_picker label="Tatouages tête" name="Head Tattoos"
+ tool_tip="Cliquez pour sélectionner une image" />
+ <texture_picker label="Tatouages haut" name="Upper Tattoos"
+ tool_tip="Cliquez pour sélectionner une image" />
+ <texture_picker label="Tatouages bas" name="Lower Tattoos"
+ tool_tip="Cliquez pour sélectionner une image" />
</panel>
<panel label="Cheveux" name="Hair">
- <button label="Créer Nouveaux Cheveux" label_selected="Créer Nouveaux Cheveux"
+ <button label="Créer des cheveux" label_selected="Créer des cheveux"
name="Create New" />
- <button label="Retirer" label_selected="Retirer" name="Take Off" />
+ <button label="Enlever" label_selected="Enlever" name="Take Off" />
<button label="Enregistrer" label_selected="Enregistrer" name="Save" />
<button label="Enregistrer sous" label_selected="Enregistrer sous" name="Save As" />
- <button label="Annuler modifications" label_selected="Annuler modifications"
- name="Revert" />
+ <button label="Rétablir" label_selected="Rétablir" name="Revert" />
<button label="Couleur" label_selected="Couleur" name="Color" />
<button label="Style" label_selected="Style" name="Style" />
<button label="Sourcils" label_selected="Sourcils" name="Eyebrows" />
- <button label="Pilosité du visage" label_selected="Pilosité du visage" name="Facial" />
+ <button label="Pilosité" label_selected="Pilosité" name="Facial" />
<button label="Aléatoire" label_selected="Aléatoire" name="Randomize" />
<text type="string" length="1" name="title">
[DESC]
</text>
<text type="string" length="1" name="title_no_modify">
- [DESC]: modification impossible
+ [DESC]: impossible de modifier
</text>
<text type="string" length="1" name="title_loading">
- [DESC]: chargement en cours...
+ [DESC]: en cours de chargement...
</text>
<text type="string" length="1" name="title_not_worn">
- [DESC]: non porté
+ [DESC]: non portés
</text>
<text type="string" length="1" name="path">
- Situé dans [PATH]
+ Emplacement : [PATH]
</text>
<text type="string" length="1" name="not worn instructions">
- Pour enfiler de nouveaux cheveux, glissez-déposez les sur votre avatar
-depuis votre inventaire. Vous pouvez également en créer de toutes pièces,
-et les porter.
+ Pour changer de chevelure, faites-en glisser une de votre inventaire jusqu&apos;à votre avatar. L&apos;autre possibilité est d&apos;en créer une nouvelle et de la porter.
</text>
<text type="string" length="1" name="no modify instructions">
- Vous n&apos;êtes pas autorisé(e) à modifier cet élément endossable.
+ Vous n&apos;avez pas l&apos;autorisation de modifier cet article.
</text>
- <texture_picker label="Texture" name="Texture" tool_tip="Cliquez pour choisir une image" />
+ <texture_picker label="Texture" name="Texture" tool_tip="Cliquez pour sélectionner une image" />
</panel>
<panel label="Yeux" name="Eyes">
- <button label="Créer Nouveaux Yeux" label_selected="Créer Nouveaux Yeux"
- name="Create New" />
- <button label="Retirer" label_selected="Retirer" name="Take Off" />
+ <button label="Créer des yeux" label_selected="Créer des yeux" name="Create New" />
+ <button label="Enlever" label_selected="Enlever" name="Take Off" />
<button label="Enregistrer" label_selected="Enregistrer" name="Save" />
<button label="Enregistrer sous" label_selected="Enregistrer sous" name="Save As" />
- <button label="Annuler modifications" label_selected="Annuler modifications"
- name="Revert" />
+ <button label="Rétablir" label_selected="Rétablir" name="Revert" />
<button label="Aléatoire" label_selected="Aléatoire" name="Randomize" />
<text type="string" length="1" name="title">
[DESC]
</text>
<text type="string" length="1" name="title_no_modify">
- [DESC]: modification impossible
+ [DESC]: impossible de modifier
</text>
<text type="string" length="1" name="title_loading">
- [DESC]: chargement en cours...
+ [DESC]: en cours de chargement...
</text>
<text type="string" length="1" name="title_not_worn">
- [DESC]: non porté
+ [DESC]: non portés
</text>
<text type="string" length="1" name="path">
- Situé dans [PATH]
+ Emplacement : [PATH]
</text>
<text type="string" length="1" name="not worn instructions">
- Pour appliquer de nouveaux yeux, glissez-déposez les sur votre avatar
-depuis votre inventaire. Vous pouvez également en créer de toutes pièces,
-et les porter.
+ Pour changer vos yeux, faites-les glisser de votre inventaire jusqu&apos;à votre avatar. L&apos;autre possibilité est d&apos;en créer de nouveaux et de les porter.
</text>
<text type="string" length="1" name="no modify instructions">
- Vous n&apos;êtes pas autorisé(e) à modifier cet élément endossable.
+ Vous n&apos;avez pas l&apos;autorisation de modifier cet article.
</text>
- <texture_picker label="Iris" name="Iris" tool_tip="Cliquez pour choisir une image" />
+ <texture_picker label="Iris" name="Iris" tool_tip="Cliquez pour sélectionner une image" />
</panel>
<panel label="Vêtements" />
+ <panel label="Habits" name="clothes_placeholder" />
<panel label="Chemise" name="Shirt">
- <button label="Créer Nouvelle Chemise" label_selected="Créer Nouvelle Chemise"
+ <button label="Créer une chemise" label_selected="Créer une chemise"
name="Create New" />
- <button label="Retirer" label_selected="Retirer" name="Take Off" />
+ <button label="Enlever" label_selected="Enlever" name="Take Off" />
<button label="Enregistrer" label_selected="Enregistrer" name="Save" />
<button label="Enregistrer sous" label_selected="Enregistrer sous" name="Save As" />
- <button label="Annuler modifications" label_selected="Annuler modifications"
- name="Revert" />
+ <button label="Rétablir" label_selected="Rétablir" name="Revert" />
<text type="string" length="1" name="title">
[DESC]
</text>
<text type="string" length="1" name="title_no_modify">
- [DESC]: modification impossible
+ [DESC]: impossible de modifier
</text>
<text type="string" length="1" name="title_loading">
- [DESC]: chargement en cours...
+ [DESC]: en cours de chargement...
</text>
<text type="string" length="1" name="title_not_worn">
[DESC]: non porté
</text>
<text type="string" length="1" name="path">
- Situé dans [PATH]
+ Emplacement : [PATH]
</text>
<text type="string" length="1" name="not worn instructions">
- Pour enfiler une nouvelle chemise, glissez-déposez la sur votre avatar
-depuis votre inventaire. Vous pouvez également en créer une de toutes pièces,
-et la porter.
+ Pour changer de chemise, faites-en glisser une de votre inventaire jusqu&apos;à votre avatar. L&apos;autre possibilité est d&apos;en créer une nouvelle et de la porter.
</text>
<text type="string" length="1" name="no modify instructions">
- Vous n&apos;êtes pas autorisé(e) à modifier cet élément endossable.
+ Vous n&apos;avez pas l&apos;autorisation de modifier cet article.
</text>
- <color_swatch label="Couleur" name="Color/Tint"
+ <color_swatch label="Couleur/Teinte" name="Color/Tint"
tool_tip="Cliquer pour ouvrir le sélecteur de couleurs" />
- <texture_picker label="Matière" name="Fabric" tool_tip="Cliquez pour choisir une image" />
+ <texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image" />
</panel>
<panel label="Pantalon" name="Pants">
- <button label="Créer Nouveau Pantalon" label_selected="Créer Nouveau Pantalon"
+ <button label="Créer un pantalon" label_selected="Créer un pantalon"
name="Create New" />
- <button label="Retirer" label_selected="Retirer" name="Take Off" />
+ <button label="Enlever" label_selected="Enlever" name="Take Off" />
<button label="Enregistrer" label_selected="Enregistrer" name="Save" />
<button label="Enregistrer sous" label_selected="Enregistrer sous" name="Save As" />
- <button label="Annuler modifications" label_selected="Annuler modifications"
- name="Revert" />
+ <button label="Rétablir" label_selected="Rétablir" name="Revert" />
<text type="string" length="1" name="title">
[DESC]
</text>
<text type="string" length="1" name="title_no_modify">
- [DESC]: modification impossible
+ [DESC]: impossible de modifier
</text>
<text type="string" length="1" name="title_loading">
- [DESC]: chargement en cours...
+ [DESC]: en cours de chargement...
</text>
<text type="string" length="1" name="title_not_worn">
[DESC]: non porté
</text>
<text type="string" length="1" name="path">
- Situé dans [PATH]
+ Emplacement : [PATH]
</text>
<text type="string" length="1" name="not worn instructions">
- Pour enfiler un nouveau pantalon, glissez-déposez le sur votre avatar
-depuis votre inventaire. Vous pouvez également en créer un de toutes pièces,
-et le porter.
+ Pour changer de pantalon, faites-en glisser un de votre inventaire jusqu&apos;à votre avatar. L&apos;autre possibilité est d&apos;en créer un nouveau et de le porter.
</text>
<text type="string" length="1" name="no modify instructions">
- Vous n&apos;êtes pas autorisé(e) à modifier cet élément endossable.
+ Vous n&apos;avez pas l&apos;autorisation de modifier cet article.
</text>
- <color_swatch label="Couleur" name="Color/Tint"
+ <color_swatch label="Couleur/Teinte" name="Color/Tint"
tool_tip="Cliquer pour ouvrir le sélecteur de couleurs" />
- <texture_picker label="Matière" name="Fabric" tool_tip="Cliquez pour choisir une image" />
+ <texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image" />
</panel>
<panel label="Chaussures" name="Shoes">
- <button label="Créer Nouvelles Chaussures"
- label_selected="Créer Nouvelles Chaussures" name="Create New" />
- <button label="Retirer" label_selected="Retirer" name="Take Off" />
+ <button label="Créer des chaussures" label_selected="Créer des chaussures"
+ name="Create New" />
+ <button label="Enlever" label_selected="Enlever" name="Take Off" />
<button label="Enregistrer" label_selected="Enregistrer" name="Save" />
<button label="Enregistrer sous" label_selected="Enregistrer sous" name="Save As" />
- <button label="Annuler modifications" label_selected="Annuler modifications"
- name="Revert" />
+ <button label="Rétablir" label_selected="Rétablir" name="Revert" />
<text type="string" length="1" name="title">
[DESC]
</text>
<text type="string" length="1" name="title_no_modify">
- [DESC]: modification impossible
+ [DESC]: impossible de modifier
</text>
<text type="string" length="1" name="title_loading">
- [DESC]: chargement en cours...
+ [DESC]: en cours de chargement...
</text>
<text type="string" length="1" name="title_not_worn">
- [DESC]: non porté
+ [DESC]: non portées
</text>
<text type="string" length="1" name="path">
- Situé dans [PATH]
+ Emplacement : [PATH]
</text>
<text type="string" length="1" name="not worn instructions">
- Pour enfiler de nouvelles chaussures, glissez-déposez les sur votre avatar
-depuis votre inventaire. Vous pouvez également en créer de toutes pièces,
-et la porter.
+ Pour changer de chaussures, faites-en glisser une paire de votre inventaire jusqu&apos;à votre avatar. L&apos;autre possibilité est d&apos;en créer une nouvelle paire et de les porter.
</text>
<text type="string" length="1" name="no modify instructions">
- Vous n&apos;êtes pas autorisé(e) à modifier cet élément endossable.
+ Vous n&apos;avez pas l&apos;autorisation de modifier cet article.
</text>
- <color_swatch label="Couleur" name="Color/Tint"
+ <color_swatch label="Couleur/Teinte" name="Color/Tint"
tool_tip="Cliquer pour ouvrir le sélecteur de couleurs" />
- <texture_picker label="Matière" name="Fabric" tool_tip="Cliquez pour choisir une image" />
+ <texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image" />
</panel>
<panel label="Chaussettes" name="Socks">
- <button label="Créer Nouvelles Chaussettes"
- label_selected="Créer Nouvelles Chaussettes" name="Create New" />
- <button label="Retirer" label_selected="Retirer" name="Take Off" />
+ <button label="Créer des chaussettes" label_selected="Créer des chaussettes"
+ name="Create New" />
+ <button label="Enlever" label_selected="Enlever" name="Take Off" />
<button label="Enregistrer" label_selected="Enregistrer" name="Save" />
<button label="Enregistrer sous" label_selected="Enregistrer sous" name="Save As" />
- <button label="Annuler modifications" label_selected="Annuler modifications"
- name="Revert" />
+ <button label="Rétablir" label_selected="Rétablir" name="Revert" />
<text type="string" length="1" name="title">
[DESC]
</text>
<text type="string" length="1" name="title_no_modify">
- [DESC]: modification impossible
+ [DESC]: impossible de modifier
</text>
<text type="string" length="1" name="title_loading">
- [DESC]: chargement en cours...
+ [DESC]: en cours de chargement...
</text>
<text type="string" length="1" name="title_not_worn">
- [DESC]: non porté
+ [DESC]: non portées
</text>
<text type="string" length="1" name="path">
- Situé dans [PATH]
+ Emplacement : [PATH]
</text>
<text type="string" length="1" name="not worn instructions">
- Pour enfiler de nouvelles chaussettes, glissez-déposez les sur votre avatar
-depuis votre inventaire. Vous pouvez également en créer de toutes pièces,
-et les porter.
+ Pour changer de chaussettes, faites-en glisser une paire de votre inventaire jusqu&apos;à votre avatar. L&apos;autre possibilité est d&apos;en créer une nouvelle paire et de les porter.
</text>
<text type="string" length="1" name="no modify instructions">
- Vous n&apos;êtes pas autorisé(e) à modifier cet élément endossable.
+ Vous n&apos;avez pas l&apos;autorisation de modifier cet article.
</text>
- <color_swatch label="Couleur" name="Color/Tint"
+ <color_swatch label="Couleur/Teinte" name="Color/Tint"
tool_tip="Cliquer pour ouvrir le sélecteur de couleurs" />
- <texture_picker label="Matière" name="Fabric" tool_tip="Cliquez pour choisir une image" />
+ <texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image" />
</panel>
<panel label="Veste" name="Jacket">
- <button label="Créer Nouvelle Veste" label_selected="Créer Nouvelle Veste"
- name="Create New" />
- <button label="Retirer" label_selected="Retirer" name="Take Off" />
+ <button label="Créer une veste" label_selected="Créer une veste" name="Create New" />
+ <button label="Enlever" label_selected="Enlever" name="Take Off" />
<button label="Enregistrer" label_selected="Enregistrer" name="Save" />
<button label="Enregistrer sous" label_selected="Enregistrer sous" name="Save As" />
- <button label="Annuler modifications" label_selected="Annuler modifications"
- name="Revert" />
+ <button label="Rétablir" label_selected="Rétablir" name="Revert" />
<text type="string" length="1" name="title">
[DESC]
</text>
<text type="string" length="1" name="title_no_modify">
- [DESC]: modification impossible
+ [DESC]: impossible de modifier
</text>
<text type="string" length="1" name="title_loading">
- [DESC]: chargement en cours...
+ [DESC]: en cours de chargement...
</text>
<text type="string" length="1" name="title_not_worn">
- [DESC]: non porté
+ [DESC]: non portée
</text>
<text type="string" length="1" name="path">
- Situé dans [PATH]
+ Emplacement : [PATH]
</text>
<text type="string" length="1" name="not worn instructions">
- Pour enfiler une nouvelle veste, glissez-déposez la sur votre avatar
-depuis votre inventaire. Vous pouvez également en créer une de toutes pièces,
-et la porter.
+ Pour changer de veste, faites-en glisser une de votre inventaire jusqu&apos;à votre avatar. L&apos;autre possibilité est d&apos;en créer une nouvelle et de la porter.
</text>
<text type="string" length="1" name="no modify instructions">
- Vous n&apos;êtes pas autorisé(e) à modifier cet élément endossable.
+ Vous n&apos;avez pas l&apos;autorisation de modifier cet article.
</text>
- <color_swatch label="Couleur" name="Color/Tint"
+ <color_swatch label="Couleur/Teinte" name="Color/Tint"
tool_tip="Cliquer pour ouvrir le sélecteur de couleurs" />
- <texture_picker label="Matière du haut" name="Upper Fabric"
- tool_tip="Cliquez pour choisir une image" />
- <texture_picker label="Matière du bas" name="Lower Fabric"
- tool_tip="Cliquez pour choisir une image" />
+ <texture_picker label="Tissu (dessus)" name="Upper Fabric"
+ tool_tip="Cliquez pour sélectionner une image" />
+ <texture_picker label="Tissu (dessous)" name="Lower Fabric"
+ tool_tip="Cliquez pour sélectionner une image" />
</panel>
<panel label="Gants" name="Gloves">
- <button label="Créer Nouveaux Gants" label_selected="Créer Nouveaux Gants"
- name="Create New" />
- <button label="Retirer" label_selected="Retirer" name="Take Off" />
+ <button label="Créer des gants" label_selected="Créer des gants" name="Create New" />
+ <button label="Enlever" label_selected="Enlever" name="Take Off" />
<button label="Enregistrer" label_selected="Enregistrer" name="Save" />
<button label="Enregistrer sous" label_selected="Enregistrer sous" name="Save As" />
- <button label="Annuler modifications" label_selected="Annuler modifications"
- name="Revert" />
+ <button label="Rétablir" label_selected="Rétablir" name="Revert" />
<text type="string" length="1" name="title">
[DESC]
</text>
<text type="string" length="1" name="title_no_modify">
- [DESC]: modification impossible
+ [DESC]: impossible de modifier
</text>
<text type="string" length="1" name="title_loading">
- [DESC]: chargement en cours...
+ [DESC]: en cours de chargement...
</text>
<text type="string" length="1" name="title_not_worn">
- [DESC]: non porté
+ [DESC]: non portés
</text>
<text type="string" length="1" name="path">
- Situé dans [PATH]
+ Emplacement : [PATH]
</text>
<text type="string" length="1" name="not worn instructions">
- Pour enfiler de nouveaux gants, glissez-déposez les sur votre avatar
-depuis votre inventaire. Vous pouvez également en créer de toutes pièces,
-et les porter.
+ Pour changer de gants, faites-en glisser une paire à partir de votre inventaire. L&apos;autre possibilité est d&apos;en créer une nouvelle paire et de les porter.
</text>
<text type="string" length="1" name="no modify instructions">
- Vous n&apos;êtes pas autorisé(e) à modifier cet élément endossable.
+ Vous n&apos;avez pas l&apos;autorisation de modifier cet article.
</text>
- <color_swatch label="Couleur" name="Color/Tint"
+ <color_swatch label="Couleur/Teinte" name="Color/Tint"
tool_tip="Cliquer pour ouvrir le sélecteur de couleurs" />
- <texture_picker label="Matière" name="Fabric" tool_tip="Cliquez pour choisir une image" />
+ <texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image" />
</panel>
- <panel label="Maillot de corps" name="Undershirt">
- <button label="Créer Nouveau Maillot de corps"
- label_selected="Créer Nouveau Maillot de corps" name="Create New" />
- <button label="Retirer" label_selected="Retirer" name="Take Off" />
+ <panel label="Tricot de peau" name="Undershirt">
+ <button label="Créer un tricot" label_selected="Créer un tricot" name="Create New" />
+ <button label="Enlever" label_selected="Enlever" name="Take Off" />
<button label="Enregistrer" label_selected="Enregistrer" name="Save" />
<button label="Enregistrer sous" label_selected="Enregistrer sous" name="Save As" />
- <button label="Annuler modifications" label_selected="Annuler modifications"
- name="Revert" />
+ <button label="Rétablir" label_selected="Rétablir" name="Revert" />
<text type="string" length="1" name="title">
[DESC]
</text>
<text type="string" length="1" name="title_no_modify">
- [DESC]: modification impossible
+ [DESC]: impossible de modifier
</text>
<text type="string" length="1" name="title_loading">
- [DESC]: chargement en cours...
+ [DESC]: en cours de chargement...
</text>
<text type="string" length="1" name="title_not_worn">
[DESC]: non porté
</text>
<text type="string" length="1" name="path">
- Situé dans [PATH]
+ Emplacement : [PATH]
</text>
<text type="string" length="1" name="not worn instructions">
- Pour enfiler un nouveau maillot de corps, glissez-déposez le sur votre avatar
-depuis votre inventaire. Vous pouvez également en créer un de toutes pièces,
-et le porter.
+ Pour changer de tricot, faites-en glisser un à partir de votre inventaire. L&apos;autre possibilité est d&apos;en créer un nouveau et de le porter.
</text>
<text type="string" length="1" name="no modify instructions">
- Vous n&apos;êtes pas autorisé(e) à modifier cet élément endossable.
+ Vous n&apos;avez pas l&apos;autorisation de modifier cet article.
</text>
- <color_swatch label="Couleur" name="Color/Tint"
+ <color_swatch label="Couleur/Teinte" name="Color/Tint"
tool_tip="Cliquer pour ouvrir le sélecteur de couleurs" />
- <texture_picker label="Matière" name="Fabric" tool_tip="Cliquez pour choisir une image" />
+ <texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image" />
</panel>
<panel label="Sous-vêtements" name="Underpants">
- <button label="Créer Nouveaux Sous-vêtements"
- label_selected="Créer Nouveaux Sous-vêtements" name="Create New" />
- <button label="Retirer" label_selected="Retirer" name="Take Off" />
+ <button label="Créer des sous-vêtements" label_selected="Créer des sous-vêtements"
+ name="Create New" />
+ <button label="Enlever" label_selected="Enlever" name="Take Off" />
<button label="Enregistrer" label_selected="Enregistrer" name="Save" />
<button label="Enregistrer sous" label_selected="Enregistrer sous" name="Save As" />
- <button label="Annuler modifications" label_selected="Annuler modifications"
- name="Revert" />
+ <button label="Rétablir" label_selected="Rétablir" name="Revert" />
<text type="string" length="1" name="title">
[DESC]
</text>
<text type="string" length="1" name="title_no_modify">
- [DESC]: modification impossible
+ [DESC]: impossible de modifier
</text>
<text type="string" length="1" name="title_loading">
- [DESC]: chargement en cours...
+ [DESC]: en cours de chargement...
</text>
<text type="string" length="1" name="title_not_worn">
- [DESC]: non porté
+ [DESC]: non portés
</text>
<text type="string" length="1" name="path">
- Situé dans [PATH]
+ Emplacement : [PATH]
</text>
<text type="string" length="1" name="not worn instructions">
- Pour enfiler de nouveaux sous-vêtements, glissez-déposez les sur votre avatar
-depuis votre inventaire. Vous pouvez également en créer de toutes pièces,
-et les porter.
+ Pour changer de sous-vêtement, faites-en glisser un à partir de votre inventaire. L&apos;autre possibilité est d&apos;en créer un nouveau et de le porter.
</text>
<text type="string" length="1" name="no modify instructions">
- Vous n&apos;êtes pas autorisé(e) à modifier cet élément endossable.
+ Vous n&apos;avez pas l&apos;autorisation de modifier cet article.
</text>
- <color_swatch label="Couleur" name="Color/Tint"
+ <color_swatch label="Couleur/Teinte" name="Color/Tint"
tool_tip="Cliquer pour ouvrir le sélecteur de couleurs" />
- <texture_picker label="Matière" name="Fabric" tool_tip="Cliquez pour choisir une image" />
+ <texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image" />
</panel>
<panel label="Jupe" name="Skirt">
- <button label="Créer Nouvelle Jupe" label_selected="Créer Nouvelle Jupe"
- name="Create New" />
- <button label="Retirer" label_selected="Retirer" name="Take Off" />
+ <button label="Créer une jupe" label_selected="Créer une jupe" name="Create New" />
+ <button label="Enlever" label_selected="Enlever" name="Take Off" />
<button label="Enregistrer" label_selected="Enregistrer" name="Save" />
<button label="Enregistrer sous" label_selected="Enregistrer sous" name="Save As" />
- <button label="Annuler modifications" label_selected="Annuler modifications"
- name="Revert" />
+ <button label="Rétablir" label_selected="Rétablir" name="Revert" />
<text type="string" length="1" name="title">
[DESC]
</text>
<text type="string" length="1" name="title_no_modify">
- [DESC]: modification impossible
+ [DESC]: impossible de modifier
</text>
<text type="string" length="1" name="title_loading">
- [DESC]: chargement en cours...
+ [DESC]: en cours de chargement...
</text>
<text type="string" length="1" name="title_not_worn">
- [DESC]: non porté
+ [DESC]: non portée
</text>
<text type="string" length="1" name="path">
- Situé dans [PATH]
+ Emplacement : [PATH]
</text>
<text type="string" length="1" name="not worn instructions">
- Pour enfiler une nouvelle jupe, glissez-déposez la sur votre avatar
-depuis votre inventaire. Vous pouvez également en créer une de toutes pièces,
-et la porter.
+ Pour changer de jupe, faites-en glisser une à partir de votre inventaire. L&apos;autre possibilité est d&apos;en créer une nouvelle et de la porter.
</text>
<text type="string" length="1" name="no modify instructions">
- Vous n&apos;êtes pas autorisé(e) à modifier cet élément endossable.
+ Vous n&apos;avez pas l&apos;autorisation de modifier cet article.
</text>
- <color_swatch label="Couleur" name="Color/Tint"
+ <color_swatch label="Couleur/Teinte" name="Color/Tint"
tool_tip="Cliquer pour ouvrir le sélecteur de couleurs" />
- <texture_picker label="Matière" name="Fabric" tool_tip="Cliquez pour choisir une image" />
+ <texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image" />
</panel>
</tab_container>
- <button label="Composer une Tenue" label_selected="Composer une Tenue"
+ <button label="Créer un ensemble" label_selected="Créer un ensemble"
name="Make Outfit" />
<button label="Tout enregistrer" label_selected="Tout enregistrer" name="Save All" />
<button label="Fermer" label_selected="Fermer" name="Close" />
diff --git a/indra/newview/skins/default/xui/fr/floater_day_cycle_options.xml b/indra/newview/skins/default/xui/fr/floater_day_cycle_options.xml
new file mode 100644
index 0000000000..ca2ad92a1f
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_day_cycle_options.xml
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater name="Day Cycle Floater" title="Editeur du cycle du jour">
+ <tab_container name="Day Cycle Tabs">
+ <panel label="Cycle du jour" name="Day Cycle">
+ <button label="?" name="WLDayCycleHelp" />
+ <text name="WL12am">
+ Minuit
+ </text>
+ <text name="WL3am">
+ 3h
+ </text>
+ <text name="WL6am">
+ 6h
+ </text>
+ <text name="WL9amHash">
+ 9h
+ </text>
+ <text name="WL12pmHash">
+ Midi
+ </text>
+ <text name="WL3pm">
+ 15h
+ </text>
+ <text name="WL6pm">
+ 18h
+ </text>
+ <text name="WL9pm">
+ 21h
+ </text>
+ <text name="WL12am2">
+ Minuit
+ </text>
+ <text name="WL12amHash">
+ |
+ </text>
+ <text name="WL3amHash">
+ I
+ </text>
+ <text name="WL6amHash">
+ |
+ </text>
+ <text name="WL9amHash2">
+ I
+ </text>
+ <text name="WL12pmHash2">
+ |
+ </text>
+ <text name="WL3pmHash">
+ I
+ </text>
+ <text name="WL6pmHash">
+ |
+ </text>
+ <text name="WL9pmHash">
+ I
+ </text>
+ <text name="WL12amHash2">
+ |
+ </text>
+ <button label="Ajouter clé" label_selected="Ajouter clé" name="WLAddKey" />
+ <button label="Supprimer clé" label_selected="Supprimer clé" name="WLDeleteKey" />
+ <text name="WLCurKeyFrameText">
+ Réglages des images-clés :
+ </text>
+ <text name="WLCurKeyTimeText">
+ Heure de la clé :
+ </text>
+ <spinner label="Heure" name="WLCurKeyHour" />
+ <spinner label="Min" name="WLCurKeyMin" />
+ <text name="WLCurKeyTimeText2">
+ Préréglages clés :
+ </text>
+ <combo_box label="Préréglage" name="WLKeyPresets" />
+ <text name="DayCycleText">
+ Snap :
+ </text>
+ <combo_box label="5 min" name="WLSnapOptions" />
+ <text name="DayCycleText2">
+ Durée du cycle :
+ </text>
+ <spinner label="Heure" name="WLLengthOfDayHour" />
+ <spinner label="Min" name="WLLengthOfDayMin" />
+ <spinner label="S" name="WLLengthOfDaySec" />
+ <text name="DayCycleText3">
+ Prévisualiser :
+ </text>
+ <button label="Jouer" label_selected="Jouer" name="WLAnimSky" />
+ <button label="Stop !" label_selected="Stop" name="WLStopAnimSky" />
+ <button label="Utiliser heure domaine" label_selected="Aller heure domaine"
+ name="WLUseLindenTime" />
+ <button label="Enregistrer jour test" label_selected="Enregistrer jour test"
+ name="WLSaveDayCycle" />
+ <button label="Charger jour test" label_selected="Charger jour test"
+ name="WLLoadDayCycle" />
+ </panel>
+ </tab_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_device_settings.xml b/indra/newview/skins/default/xui/fr/floater_device_settings.xml
new file mode 100644
index 0000000000..0bd21a4dc6
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_device_settings.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater name="floater_device_settings"
+ title="Paramètres du matériel utilisé pour le chat vocal" />
diff --git a/indra/newview/skins/default/xui/fr/floater_env_settings.xml b/indra/newview/skins/default/xui/fr/floater_env_settings.xml
new file mode 100644
index 0000000000..cd828debd8
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_env_settings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater name="Environment Editor Floater" title="Editeur d&apos;environnement">
+ <text name="EnvTimeText">
+ Heure de la journée
+ </text>
+ <text name="EnvTimeText2">
+ Midi
+ </text>
+ <text name="EnvCloudText">
+ Couverture nuageuse
+ </text>
+ <text name="EnvWaterColorText">
+ Couleur de l&apos;eau
+ </text>
+ <color_swatch name="EnvWaterColor" tool_tip="Cliquer pour ouvrir le sélecteur de couleurs" />
+ <text name="EnvWaterFogText">
+ Brouillard dans l&apos;eau
+ </text>
+ <button label="Utiliser heure du domaine" name="EnvUseEstateTimeButton" />
+ <button label="Ciel avancé" name="EnvAdvancedSkyButton" />
+ <button label="Eau avancée" name="EnvAdvancedWaterButton" />
+ <button label="?" name="EnvSettingsHelpButton" />
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_hardware_settings.xml b/indra/newview/skins/default/xui/fr/floater_hardware_settings.xml
new file mode 100644
index 0000000000..7dc7a0d608
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_hardware_settings.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater name="Hardware Settings Floater" title="Configuration du matériel">
+ <text name="Filtering:">
+ Filtres :
+ </text>
+ <check_box label="Filtre anisotrope (plus lent si activé)" name="ani" />
+ <text name="Antialiasing:">
+ Anti-aliasing :
+ </text>
+ <combo_box label="Anti-aliasing" name="fsaa">
+ <combo_item name="FSAADisabled">
+ Désactivé
+ </combo_item>
+ <combo_item name="2x">
+ 2x
+ </combo_item>
+ <combo_item name="4x">
+ 4x
+ </combo_item>
+ <combo_item name="8x">
+ 8x
+ </combo_item>
+ <combo_item name="16x">
+ 16x
+ </combo_item>
+ </combo_box>
+ <spinner label="Gamma :" name="gamma" />
+ <text name="(brightness, lower is brighter)">
+ (luminosité, valeur faible = plus lumineux, 0 = défaut)
+ </text>
+ <text name="Enable VBO:">
+ Activer le VBO :
+ </text>
+ <check_box label="Activer OpenGL Vertex Buffer Objects" name="vbo"
+ tool_tip="Sur un matériel moderne, cette option permet une meilleure performance. Par contre, sur un matériel plus ancien, les VBO sont souvent mal implémentés et peuvent causer des crashs lorsqu&apos;ils sont activés." />
+ <slider label="Mémoire texture (Mo) :" name="GrapicsCardTextureMemory"
+ tool_tip="Total de la mémoire alloué aux textures. Mémoire de la carte vidéo par défaut. En réduisant cette valeur, vous pouvez accroître la performance mais les textures risquent de devenir floues." />
+ <spinner label="Rapport de distance du brouillard :" name="fog" />
+ <button label="OK" label_selected="OK" name="OK" />
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_hud.xml b/indra/newview/skins/default/xui/fr/floater_hud.xml
new file mode 100644
index 0000000000..a8ce59f234
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_hud.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater name="floater_hud" title="Didacticiel" />
diff --git a/indra/newview/skins/default/xui/fr/floater_im.xml b/indra/newview/skins/default/xui/fr/floater_im.xml
index 158e02fc6d..1374a857ce 100644
--- a/indra/newview/skins/default/xui/fr/floater_im.xml
+++ b/indra/newview/skins/default/xui/fr/floater_im.xml
@@ -6,4 +6,40 @@
<text name="offline_message">
[FIRST] [LAST] est déconnecté(e)
</text>
+ <string name="invite_message">
+ Pour accepter ce chat vocal/vous connecter, cliquez sur le bouton [BUTTON NAME].
+ </string>
+ <string name="muted_message">
+ Vous ignorez ce résident. Si vous lui envoyez un message, il ne sera plus ignoré.
+ </string>
+ <string name="generic_request_error">
+ Erreur lors de la requête, veuillez réessayer ultérieurement.
+ </string>
+ <string name="insufficient_perms_error">
+ Vous n&apos;avez pas les permissions requises.
+ </string>
+ <string name="session_does_not_exist_error">
+ La session a expiré
+ </string>
+ <string name="no_ability_error">
+ Vous n&apos;avez pas ce pouvoir.
+ </string>
+ <string name="not_a_mod_error">
+ Vous n&apos;êtes pas modérateur de session.
+ </string>
+ <string name="muted_error">
+ Un modérateur de groupe a désactivé votre chat écrit.
+ </string>
+ <string name="add_session_event">
+ Impossible d&apos;ajouter des personnes à la session de chat avec [RECIPIENT].
+ </string>
+ <string name="message_session_event">
+ Impossible d&apos;envoyer votre message à la session de chat avec [RECIPIENT].
+ </string>
+ <string name="removed_from_group">
+ Vous avez été supprimé du groupe.
+ </string>
+ <string name="close_on_no_ability">
+ Vous ne pouvez plus participer à la session de chat.
+ </string>
</multi_floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_image_preview.xml b/indra/newview/skins/default/xui/fr/floater_image_preview.xml
index 47dd8112a7..262c1bb656 100644
--- a/indra/newview/skins/default/xui/fr/floater_image_preview.xml
+++ b/indra/newview/skins/default/xui/fr/floater_image_preview.xml
@@ -37,12 +37,16 @@
<combo_item name="Skirt">
Jupe
</combo_item>
+ <combo_item name="SculptedPrim">
+ Prim sculpté
+ </combo_item>
</combo_box>
<text name="bad_image_text">
Unable to read image.
Try saving image as 24 bit Targa (.tga).
</text>
+ <check_box label="Utiliser une compression sans perte" name="lossless_check" />
<button label="Annuler" name="cancel_btn" />
<button label="Uploader (L$[AMOUNT])" name="ok_btn" />
</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_inspect.xml b/indra/newview/skins/default/xui/fr/floater_inspect.xml
new file mode 100644
index 0000000000..f1ad39e410
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_inspect.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater name="inspect" title="Inspecter les objets">
+ <scroll_list name="object_list"
+ tool_tip="Sélectionner un objet de la liste pour le mettre en surbrillance dans le Monde.">
+ <column label="Nom de l&apos;objet" name="object_name" />
+ <column label="Nom du propriétaire" name="owner_name" />
+ <column label="Nom du créateur" name="creator_name" />
+ <column label="Date de création" name="creation_date" />
+ </scroll_list>
+ <button label="Voir le profil du propriétaire..." name="button owner"
+ tool_tip="Voir le profil du propriétaire de l&apos;objet en surbrillance" />
+ <button label="Voir le profil du créateur" name="button creator"
+ tool_tip="Voir le profil du créateur de l&apos;objet en surbrillance" />
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_inventory.xml b/indra/newview/skins/default/xui/fr/floater_inventory.xml
index 5aa0127cb2..a294b41171 100644
--- a/indra/newview/skins/default/xui/fr/floater_inventory.xml
+++ b/indra/newview/skins/default/xui/fr/floater_inventory.xml
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater name="Inventory" title="Inventaire">
+ <search_editor label="Saisissez votre recherche ici" name="inventory search editor" />
<tab_container name="inventory filter tabs">
<inventory_panel label="All Items" name="All Items" />
<inventory_panel label="Recent Items" name="Recent Items" />
@@ -10,6 +11,7 @@
<menu_item_call label="Ouvrir" name="Open" />
<menu_item_call label="Nouvelle Fenêtre" name="New Window" />
<menu_item_call label="Afficher les filtres" name="Show Filters" />
+ <menu_item_call label="Réinitialiser les filtres" name="Reset Current" />
<menu_item_call label="Fermer tous les dossiers" name="Close All Folders" />
<menu_item_call label="Vider la corbeille" name="Empty Trash" />
</menu>
@@ -42,6 +44,7 @@
<menu_item_check label="Par nom" name="By Name" />
<menu_item_check label="Par date" name="By Date" />
<menu_item_check label="Toujour afficher les dossiers par nom" name="Folders Always By Name" />
+ <menu_item_check label="Dossiers système au dessus" name="System Folders To Top" />
</menu>
<menu label="Filters" name="Filters">
<tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~" />
diff --git a/indra/newview/skins/default/xui/fr/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/fr/floater_inventory_item_properties.xml
index 9791248a66..ce1c2337f0 100644
--- a/indra/newview/skins/default/xui/fr/floater_inventory_item_properties.xml
+++ b/indra/newview/skins/default/xui/fr/floater_inventory_item_properties.xml
@@ -71,4 +71,16 @@
<text name="TextPrice">
Prix : L$
</text>
+ <string name="unknown">
+ (inconnu)
+ </string>
+ <string name="public">
+ (public)
+ </string>
+ <string name="you_can">
+ Vous pouvez :
+ </string>
+ <string name="owner_can">
+ Le propriétaire peut :
+ </string>
</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_joystick.xml b/indra/newview/skins/default/xui/fr/floater_joystick.xml
new file mode 100644
index 0000000000..23523e4f6d
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_joystick.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater name="Joystick" title="Configuration du joystick">
+ <check_box name="enable_joystick">
+ Activer le joystick :
+ </check_box>
+ <spinner label="Mapping axe des X " name="JoystickAxis1" />
+ <spinner label="Mapping axe des Y" name="JoystickAxis2" />
+ <spinner label="Mapping axe des Z" name="JoystickAxis0" />
+ <spinner label="Mapping du tangage" name="JoystickAxis4" />
+ <spinner label="Mapping du lacet" name="JoystickAxis5" />
+ <spinner label="Mapping du roulis" name="JoystickAxis3" />
+ <spinner label="Mapping du zoom" name="JoystickAxis6" />
+ <check_box label="Zoom direct" name="ZoomDirect" />
+ <check_box label="Curseur 3D" name="Cursor3D" />
+ <check_box label="Niveau automatique" name="AutoLeveling" />
+ <text name="Control Modes:">
+ Modes de contrôle :
+ </text>
+ <check_box name="JoystickAvatarEnabled">
+ Avatar
+ </check_box>
+ <check_box name="JoystickBuildEnabled">
+ Build
+ </check_box>
+ <check_box name="JoystickFlycamEnabled">
+ Flycam
+ </check_box>
+ <text name="XScale">
+ Echelle des X
+ </text>
+ <text name="YScale">
+ Echelle des Y
+ </text>
+ <text name="ZScale">
+ Echelle des Z
+ </text>
+ <text name="PitchScale">
+ Echelle du tangage
+ </text>
+ <text name="YawScale">
+ Echelle du lacet
+ </text>
+ <text name="RollScale">
+ Echelle du roulis
+ </text>
+ <text name="XDeadZone">
+ Zone neutre X
+ </text>
+ <text name="YDeadZone">
+ Zone neutre Y
+ </text>
+ <text name="ZDeadZone">
+ Zone neutre Z
+ </text>
+ <text name="PitchDeadZone">
+ Zone neutre Tangage
+ </text>
+ <text name="YawDeadZone">
+ Zone neutre lacet
+ </text>
+ <text name="RollDeadZone">
+ Zone neutre roulis
+ </text>
+ <text name="Feathering">
+ Feathering
+ </text>
+ <text name="ZoomScale2">
+ Echelle du zoom
+ </text>
+ <text name="ZoomDeadZone">
+ Zone neutre du zoom
+ </text>
+ <button label="Options par défaut du joystick" name="SpaceNavigatorDefaults" />
+ <string name="JoystickMonitor">
+ Contrôle du joystick
+ </string>
+ <string name="Axis">
+ Axe [NUM]
+ </string>
+ <string name="NoDevice">
+ aucun dispositif détecté
+ </string>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_lagmeter.xml b/indra/newview/skins/default/xui/fr/floater_lagmeter.xml
new file mode 100644
index 0000000000..d6837c3291
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_lagmeter.xml
@@ -0,0 +1,152 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater name="floater_lagmeter" title="Calcul du lag">
+ <button name="client_lagmeter" tool_tip="Statut du lag client" />
+ <text name="client">
+ Client :
+ </text>
+ <text name="client_text">
+ Normal
+ </text>
+ <button name="network_lagmeter" tool_tip="Statut du lag réseau" />
+ <text name="network">
+ Réseau :
+ </text>
+ <text name="network_text">
+ Normal
+ </text>
+ <button name="server_lagmeter" tool_tip="Statut du lag serveur" />
+ <text name="server">
+ Serveur :
+ </text>
+ <text name="server_text">
+ Normal
+ </text>
+ <button label="?" name="server_help" />
+ <button label="&gt;&gt;" name="minimize" />
+ <string name="max_title_msg">
+ Calcul du lag
+ </string>
+ <string name="max_width_px">
+ 360
+ </string>
+ <string name="min_title_msg">
+ Lag
+ </string>
+ <string name="min_width_px">
+ 90
+ </string>
+ <string name="client_text_msg">
+ Client
+ </string>
+ <string name="client_frame_rate_critical_fps">
+ 10
+ </string>
+ <string name="client_frame_rate_warning_fps">
+ 15
+ </string>
+ <string name="client_frame_time_window_bg_msg">
+ Normal, fenêtre en arrière-plan
+ </string>
+ <string name="client_frame_time_critical_msg">
+ Taux de défilement client ci-dessous [CLIENT_FRAME_RATE_CRITICAL]
+ </string>
+ <string name="client_frame_time_warning_msg">
+ Taux de défilement client entre [CLIENT_FRAME_RATE_CRITICAL] et [CLIENT_FRAME_RATE_WARNING]
+ </string>
+ <string name="client_frame_time_normal_msg">
+ Normal
+ </string>
+ <string name="client_draw_distance_cause_msg">
+ Cause possible : la distance d&apos;affichage est trop élevée
+ </string>
+ <string name="client_texture_loading_cause_msg">
+ Cause possible : images en cours de chargement
+ </string>
+ <string name="client_texture_memory_cause_msg">
+ Cause possible : trop d&apos;images en mémoire
+ </string>
+ <string name="client_complex_objects_cause_msg">
+ Cause possible : trop d&apos;objets complexes dans la scène
+ </string>
+ <string name="network_text_msg">
+ Réseau
+ </string>
+ <string name="network_packet_loss_critical_pct">
+ 10
+ </string>
+ <string name="network_packet_loss_warning_pct">
+ 5
+ </string>
+ <string name="network_packet_loss_critical_msg">
+ La connexion perd plus de [NETWORK_PACKET_LOSS_CRITICAL] % de paquets
+ </string>
+ <string name="network_packet_loss_warning_msg">
+ La connexion perd entre [NETWORK_PACKET_LOSS_WARNING] % et [NETWORK_PACKET_LOSS_CRITICAL] % de paquets
+ </string>
+ <string name="network_performance_normal_msg">
+ Normal
+ </string>
+ <string name="network_ping_critical_ms">
+ 600
+ </string>
+ <string name="network_ping_warning_ms">
+ 300
+ </string>
+ <string name="network_ping_critical_msg">
+ Temps de connexion ping supérieur à [NETWORK_PING_CRITICAL] ms
+ </string>
+ <string name="network_ping_warning_msg">
+ Temps de connexion ping entre [NETWORK_PING_WARNING] et [NETWORK_PING_CRITICAL] ms
+ </string>
+ <string name="network_packet_loss_cause_msg">
+ Mauvaise connexion possible ou réglage de la bande passante trop élevé.
+ </string>
+ <string name="network_ping_cause_msg">
+ Mauvaise connexion possible ou app. de partage des fichiers
+ </string>
+ <string name="server_text_msg">
+ Serveur
+ </string>
+ <string name="server_frame_rate_critical_fps">
+ 20
+ </string>
+ <string name="server_frame_rate_warning_fps">
+ 30
+ </string>
+ <string name="server_single_process_max_time_ms">
+ 20
+ </string>
+ <string name="server_frame_time_critical_msg">
+ Taux de défilement du simulateur au dessous de [SERVER_FRAME_RATE_CRITICAL]
+ </string>
+ <string name="server_frame_time_warning_msg">
+ Taux de défilement du simulateur entre [SERVER_FRAME_RATE_CRITICAL] et [SERVER_FRAME_RATE_WARNING]
+ </string>
+ <string name="server_frame_time_normal_msg">
+ Normal
+ </string>
+ <string name="server_physics_cause_msg">
+ Cause possible : trop d&apos;objets physiques
+ </string>
+ <string name="server_scripts_cause_msg">
+ Cause possible : trop d&apos;objets scriptés
+ </string>
+ <string name="server_net_cause_msg">
+ Cause possible : trop de trafic réseau
+ </string>
+ <string name="server_agent_cause_msg">
+ Cause possible : trop de personnes en mouvement dans la région
+ </string>
+ <string name="server_images_cause_msg">
+ Cause possible : trop de calculs d&apos;images
+ </string>
+ <string name="server_generic_cause_msg">
+ Cause possible : charge simulateur trop lourde
+ </string>
+ <string name="smaller_label">
+ &gt;&gt;
+ </string>
+ <string name="bigger_label">
+ &lt;&lt;
+ </string>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_land_holdings.xml b/indra/newview/skins/default/xui/fr/floater_land_holdings.xml
index 8ef1029169..7a46dba396 100644
--- a/indra/newview/skins/default/xui/fr/floater_land_holdings.xml
+++ b/indra/newview/skins/default/xui/fr/floater_land_holdings.xml
@@ -35,4 +35,7 @@
<text name="available_text">
0 m2
</text>
+ <string name="area_string">
+ [AREA] m²
+ </string>
</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/fr/floater_live_lsleditor.xml
index f75946417d..d152c16f11 100644
--- a/indra/newview/skins/default/xui/fr/floater_live_lsleditor.xml
+++ b/indra/newview/skins/default/xui/fr/floater_live_lsleditor.xml
@@ -2,4 +2,11 @@
<floater name="script ed float" title="Script : Nouveau script">
<button label="Réinitialiser" label_selected="Réinitialiser" name="Reset" />
<check_box label="En cours d&apos;exécution" name="running" />
+ <check_box label="Mono" name="mono" />
+ <string name="not_allowed">
+ Vous n&apos;êtes pas autorisé à afficher ce script.
+ </string>
+ <string name="script_running">
+ Exécution en cours
+ </string>
</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_lsl_guide.xml b/indra/newview/skins/default/xui/fr/floater_lsl_guide.xml
new file mode 100644
index 0000000000..45810513f6
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_lsl_guide.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater name="script ed float" title="Wiki LSL">
+ <check_box label="Suivre le curseur" name="lock_check" />
+ <combo_box label="Verrouiller" name="history_combo" />
+ <button label="Précédente" name="back_btn" />
+ <button label="Suivante" name="fwd_btn" />
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_media_browser.xml b/indra/newview/skins/default/xui/fr/floater_media_browser.xml
new file mode 100644
index 0000000000..5106520c62
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_media_browser.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater name="floater_about" title="Navigateur média">
+ <layout_stack name="stack1">
+ <layout_panel name="nav_controls">
+ <button label="Précédente" name="back" />
+ <button label="Suivante" name="forward" />
+ <button label="Recharger" name="reload" />
+ <button label="OK" name="go" />
+ </layout_panel>
+ <layout_panel name="parcel_owner_controls">
+ <button label="Envoyer URL actuelle sur parcelle" name="assign" />
+ </layout_panel>
+ <layout_panel name="external_controls">
+ <button label="Ouvrir dans mon navigateur web" name="open_browser" />
+ <check_box label="Toujours ouvrir dans mon navigateur web" name="open_always" />
+ <button label="Fermer" name="close" />
+ </layout_panel>
+ </layout_stack>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_mem_leaking.xml b/indra/newview/skins/default/xui/fr/floater_mem_leaking.xml
new file mode 100644
index 0000000000..4b4a879cab
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_mem_leaking.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater name="MemLeak" title="Simulation fuite mémoire">
+ <spinner label="Vitesse de la fuite (octets) :" name="leak_speed" />
+ <spinner label="Max mémoire perdue (Mo) :" name="max_leak" />
+ <text name="total_leaked_label">
+ Mémoire perdue actuelle : [SIZE] Ko
+ </text>
+ <text name="note_label_1">
+ [NOTE1]
+ </text>
+ <text name="note_label_2">
+ [NOTE2]
+ </text>
+ <button label="Commencer" name="start_btn" />
+ <button label="Stop" name="stop_btn" />
+ <button label="Libérer" name="release_btn" />
+ <button label="Fermer" name="close_btn" />
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_mute_object.xml b/indra/newview/skins/default/xui/fr/floater_mute_object.xml
new file mode 100644
index 0000000000..0ce234a40c
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_mute_object.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater name="mute by name" title="Ignorer les objets par nom">
+ <text name="message">
+ Ignorer par nom ne marche que pour les chats et IM, pas les sons.
+Vous devez saisir le nom exact de l&apos;objet.
+ </text>
+ <line_editor name="object_name">
+ Nom de l&apos;objet
+ </line_editor>
+ <button label="OK" name="OK" />
+ <button label="Annuler" name="Cancel" />
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_my_friends.xml b/indra/newview/skins/default/xui/fr/floater_my_friends.xml
new file mode 100644
index 0000000000..552afee4c3
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_my_friends.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater name="floater_my_friends" title="Contacts">
+ <tab_container name="friends_and_groups">
+ <panel label="Amis" name="friends_panel" />
+ <panel label="Groupes" name="groups_panel" />
+ </tab_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_post_process.xml b/indra/newview/skins/default/xui/fr/floater_post_process.xml
new file mode 100644
index 0000000000..623d9e39af
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_post_process.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater name="Post-Process Floater" title="Paramètres post-traitement">
+ <tab_container name="Post-Process Tabs">
+ <panel label="Filtre couleur" name="wmiColorFilterPanel">
+ <check_box label="Activer" name="wmiColorFilterToggle" />
+ <text name="wmiColorFilterBrightnessText">
+ Luminosité
+ </text>
+ <text name="wmiColorFilterSaturationText">
+ Saturation
+ </text>
+ <text name="wmiColorFilterContrastText">
+ Contraste
+ </text>
+ <text name="wmiColorFilterBaseText">
+ Couleur de base du contraste
+ </text>
+ <slider label="R" name="wmiColorFilterBaseR" />
+ <slider label="V" name="wmiColorFilterBaseG" />
+ <slider label="B" name="wmiColorFilterBaseB" />
+ <slider label="I" name="wmiColorFilterBaseI" />
+ </panel>
+ <panel label="Vision de nuit" name="wmiNightVisionPanel">
+ <check_box label="Activer" name="wmiNightVisionToggle" />
+ <text name="wmiNightVisionBrightMultText">
+ Multiple d&apos;amplificateur de lumière
+ </text>
+ <text name="wmiNightVisionNoiseSizeText">
+ Taille du bruit
+ </text>
+ <text name="wmiNightVisionNoiseStrengthText">
+ Force du bruit
+ </text>
+ </panel>
+ <panel label="Eclat" name="wmiBloomPanel">
+ <check_box label="Activer" name="wmiBloomToggle" />
+ <text name="wmiBloomExtractText">
+ Extraction de la luminosité
+ </text>
+ <text name="wmiBloomSizeText">
+ Taille de l&apos;éclat
+ </text>
+ <text name="wmiBloomStrengthText">
+ Force de l&apos;éclat
+ </text>
+ </panel>
+ <panel label="Extras" name="Extras">
+ <button label="Charger effet" label_selected="Charger effet" name="PPLoadEffect" />
+ <button label="Enregistrer effet" label_selected="Enregistrer effet"
+ name="PPSaveEffect" />
+ <line_editor label="Nom de l&apos;effet" name="PPEffectNameEditor" />
+ </panel>
+ </tab_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_postcard.xml b/indra/newview/skins/default/xui/fr/floater_postcard.xml
index 8c1a625d9c..cc9f13ef18 100644
--- a/indra/newview/skins/default/xui/fr/floater_postcard.xml
+++ b/indra/newview/skins/default/xui/fr/floater_postcard.xml
@@ -1,28 +1,41 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater name="Postcard" title="Envoyer une carte postale">
+<floater name="Postcard" title="Envoyer la capture d&apos;écran par e-mail">
<text name="to_label">
- Email du destinataire :
+ E-mail du destinataire :
</text>
<text name="from_label">
- Votre adresse mail :
+ Votre e-mail :
</text>
<text name="name_label">
- Votre nom :
+ Votre nom :
</text>
<text name="subject_label">
- Sujet :
+ Sujet :
</text>
+ <line_editor label="Saisissez votre sujet ici." name="subject_form" />
<text name="msg_label">
- Message :
+ Message :
</text>
<check_box label="Publier sur le web" name="allow_publish_check"
tool_tip="Publiez cette carte postale sur le web." />
<check_box label="Contenu adulte" name="mature_check"
tool_tip="Cette carte postale est à caractère adulte." />
<button label="?" name="publish_help_btn" />
+ <text_editor name="msg_form">
+ Saisissez votre message ici.
+ </text_editor>
<text name="fine_print">
- Si le destinataire de votre carte postale rejoint SL, vous gagnerez un bonus de parrainage.
+ Si le destinataire s&apos;inscrit sur Second Life, vous recevrez un bonus.
</text>
<button label="Annuler" name="cancel_btn" />
<button label="Envoyer" name="send_btn" />
+ <string name="default_subject">
+ Carte postale de Second Life.
+ </string>
+ <string name="default_message">
+ Ouvrez-moi !
+ </string>
+ <string name="upload_message">
+ Envoi en cours...
+ </string>
</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_preferences.xml b/indra/newview/skins/default/xui/fr/floater_preferences.xml
index aa3e71777f..f12dfb25f6 100644
--- a/indra/newview/skins/default/xui/fr/floater_preferences.xml
+++ b/indra/newview/skins/default/xui/fr/floater_preferences.xml
@@ -1,7 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater name="Preferences" title="Préférences">
- <button label="A propos..." label_selected="A propos..." name="About..." />
+ <button label="A propos" label_selected="A propos" name="About..." />
<button label="OK" label_selected="OK" name="OK" />
<button label="Annuler" label_selected="Annuler" name="Cancel" />
<button label="Appliquer" label_selected="Appliquer" name="Apply" />
+ <button label="Aide" label_selected="Aide" name="Help" />
</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_preview_classified.xml b/indra/newview/skins/default/xui/fr/floater_preview_classified.xml
new file mode 100644
index 0000000000..8322f3932d
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_preview_classified.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater name="classified_preview" title="Informations sur la petite annonce" />
diff --git a/indra/newview/skins/default/xui/fr/floater_preview_event.xml b/indra/newview/skins/default/xui/fr/floater_preview_event.xml
new file mode 100644
index 0000000000..ed929c78e4
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_preview_event.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater name="event_preview" title="Informations sur l&apos;événement" />
diff --git a/indra/newview/skins/default/xui/fr/floater_preview_notecard.xml b/indra/newview/skins/default/xui/fr/floater_preview_notecard.xml
index 58a5439af5..b323c1cf49 100644
--- a/indra/newview/skins/default/xui/fr/floater_preview_notecard.xml
+++ b/indra/newview/skins/default/xui/fr/floater_preview_notecard.xml
@@ -7,4 +7,10 @@
<text_editor type="string" length="1" name="Notecard Editor">
Chargement en cours...
</text_editor>
+ <string name="no_object">
+ Impossible de trouver l&apos;objet contenant cette note.
+ </string>
+ <string name="not_allowed">
+ Vous n&apos;êtes pas autorisé à afficher cette note.
+ </string>
</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_region_info.xml b/indra/newview/skins/default/xui/fr/floater_region_info.xml
new file mode 100644
index 0000000000..631d37ab65
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_region_info.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater name="regioninfo" title="Région/Domaine" />
diff --git a/indra/newview/skins/default/xui/fr/floater_report_abuse.xml b/indra/newview/skins/default/xui/fr/floater_report_abuse.xml
index 2dcb1a9cb5..e3abfdc68b 100644
--- a/indra/newview/skins/default/xui/fr/floater_report_abuse.xml
+++ b/indra/newview/skins/default/xui/fr/floater_report_abuse.xml
@@ -1,23 +1,131 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater name="floater_report_abuse" title="Signaler un abus">
+<floater name="floater_report_abuse" title="Signaler l&apos;infraction">
<text name="reporter_title">
- Signalant :
+ Déposant :
+ </text>
+ <text name="reporter_field">
+ Loremipsum Dolorsitamut
</text>
<text name="sim_title">
- Sim :
+ Région :
+ </text>
+ <text name="sim_field">
+ Nom de la région
</text>
<text name="pos_title">
- Position :
+ Position :
+ </text>
+ <texture_picker name="screenshot" />
+ <check_box label="Inclure une capture d&apos;écran" name="screen_check" />
+ <text name="pos_field">
+ {128.1, 128.1, 15.4}
+ </text>
+ <text name="object_name">
+ Consetetur Sadipscing
+ </text>
+ <text name="owner_name">
+ Hendrerit Vulputate
</text>
- <texture_picker label="Instantané en cours..." name="screenshot" />
- <check_box label="Inclure capture d&apos;écran" name="screen_check" />
<combo_box name="category_combo"
- tool_tip="Category -- select the category that best describes this report">
+ tool_tip="Choisissez la catégorie qui décrit le mieux ce rapport">
<combo_item name="Selectcategory">
Choisir une catégorie
</combo_item>
+ <combo_item name="Select_category">
+ Sélectionnez une catégorie
+ </combo_item>
+ <combo_item name="Age__Age_play">
+ Age &gt; « Age play »
+ </combo_item>
+ <combo_item name="Age__Adult_resident_on_Teen_Second_Life">
+ Age &gt; Résident adulte sur Second Life pour adolescents
+ </combo_item>
+ <combo_item name="Age__Underage_resident_on_Adult_Second_Life">
+ Age &gt; Résident mineur sur Second Life pour adultes
+ </combo_item>
+ <combo_item name="Assault__Combat_sandbox___unsafe_area">
+ Assaut &gt; Bac à sable utilisé pour des combats/zone non sécurisée
+ </combo_item>
+ <combo_item name="Assault__Safe_area">
+ Assaut &gt; Zone sécurisée
+ </combo_item>
+ <combo_item name="Assault__Weapons_testing_sandbox">
+ Assaut &gt; Bac à sable pour tests d&apos;armes à feu
+ </combo_item>
+ <combo_item name="Copyright_or_intellectual_property_violation">
+ Violation de droits d&apos;auteur ou de propriété intellectuelle
+ </combo_item>
+ <combo_item name="Commerce__Failure_to_deliver_product_or_service">
+ Commerce &gt; Incapacité à fournir un produit ou service
+ </combo_item>
+ <combo_item name="Disclosure__First_Life_information">
+ Divulgation &gt; Informations sur la première vie (First Life)
+ </combo_item>
+ <combo_item name="Disclosure__Remotely_monitoring chat">
+ Divulgation &gt; écoute d&apos;un chat à distance
+ </combo_item>
+ <combo_item name="Disclosure__Second_Life_information_chat_IMs">
+ Divulgation &gt; Informations sur Second Life/chat/IM
+ </combo_item>
+ <combo_item name="Disturbing_the_peace__Unfair_use_of_region_resources">
+ Trouble de la paix &gt; Utilisation inadéquate des ressources de la région
+ </combo_item>
+ <combo_item name="Disturbing_the_peace__Excessive_scripted_objects">
+ Trouble de la paix &gt; Nombre d&apos;objets scriptés excessif
+ </combo_item>
+ <combo_item name="Disturbing_the_peace__Object_littering">
+ Trouble de la paix &gt; Abandon d&apos;objets
+ </combo_item>
+ <combo_item name="Disturbing_the_peace__Repetitive_spam">
+ Trouble de la paix &gt; Spam à répétition
+ </combo_item>
+ <combo_item name="Disturbing_the_peace__Unwanted_advert_spam">
+ Trouble de la paix &gt; Spam à caractère commercial
+ </combo_item>
+ <combo_item name="Fraud__L$">
+ Fraude &gt; $L
+ </combo_item>
+ <combo_item name="Fraud__Land">
+ Fraude &gt; Terrain
+ </combo_item>
+ <combo_item name="Fraud__Pyramid_scheme_or_chain_letter">
+ Fraude &gt; Vente pyramidale ou lettre-chaîne
+ </combo_item>
+ <combo_item name="Fraud__US$">
+ Fraude &gt; $US
+ </combo_item>
+ <combo_item name="Harassment__Advert_farms___visual_spam">
+ Harcèlement &gt; Spam visuel
+ </combo_item>
+ <combo_item name="Harassment__Defaming_individuals_or_groups">
+ Harcèlement &gt; Diffamation envers des individus ou des groupes
+ </combo_item>
+ <combo_item name="Harassment__Impeding_movement">
+ Harcèlement &gt; Immobilisation
+ </combo_item>
+ <combo_item name="Harassment__Sexual_harassment">
+ Harcèlement &gt; Harcèlement sexuel
+ </combo_item>
+ <combo_item name="Harassment__Solicting_inciting_others_to_violate_ToS">
+ Harcèlement &gt; Incitation à enfreindre les Conditions d&apos;utilisation
+ </combo_item>
+ <combo_item name="Harassment__Verbal_abuse">
+ Harcèlement &gt; Abus verbal
+ </combo_item>
+ <combo_item name="Indecency__Broadly_offensive_content_or_conduct">
+ Indécence &gt; Contenu ou comportement offensifs
+ </combo_item>
+ <combo_item name="Indecency__Broadly_visible_mature_content">
+ Indécence &gt; Contenu réservé aux adultes visible par tous
+ </combo_item>
+ <combo_item name="Indecency__Inappropriate_avatar_name">
+ Indécence &gt; Nom d&apos;avatar inapproprié
+ </combo_item>
+ <combo_item name="Indecency__Mature_content_in_PG_region">
+ Indécence &gt; Contenu Adulte dans une région où l&apos;accompagnement parental est requis
+ </combo_item>
<combo_item name="Intolerance">
- Intolérance
+ Intolerance
</combo_item>
<combo_item name="Harassment">
Harcèlement
@@ -37,42 +145,62 @@
<combo_item name="Parcel">
Colis
</combo_item>
+ <combo_item name="Land__Abuse_of_sandbox_resources">
+ Terrain &gt; Utilisation abusive des ressources du bac à sable
+ </combo_item>
+ <combo_item name="Land__Encroachment__Objects_textures">
+ Terrain &gt; Empiètement &gt; Objets/textures
+ </combo_item>
+ <combo_item name="Land__Encroachment__Particles">
+ Terrain &gt; Empiètement &gt; Particules
+ </combo_item>
+ <combo_item name="Land__Encroachment__Trees_plants">
+ Terrain &gt; Empiètement &gt; Arbres/plantes
+ </combo_item>
+ <combo_item name="Trademark_violation">
+ Violation des droits de marque
+ </combo_item>
+ <combo_item name="Wagering_gambling">
+ Paris/jeux d&apos;argent
+ </combo_item>
<combo_item name="Other">
- Autre
+ Other
</combo_item>
</combo_box>
<button label="" label_selected="" name="pick_btn"
- tool_tip="Sélecteur d&apos;objets - choisissez l&apos;objet concerné par ce rapport" />
+ tool_tip="Le sélecteur d&apos;objet vous permet d&apos;identifier un objet comme sujet du rapport." />
<text name="select_object_label">
- Cliquez sur le bouton puis l&apos;objet :
+ Cliquez sur le bouton puis l&apos;objet :
</text>
<text name="object_name_label">
- Nom :
+ Nom :
</text>
<text name="owner_name_label">
- Propriétaire :
+ Propriétaire :
</text>
<text name="abuser_name_title">
- Nom du contrevenant :
+ Nom du contrevenant :
</text>
- <button label="Sélectionner" label_selected="" name="select_abuser"
- tool_tip="Sélectionnez le nom du contrevenant dans une liste." />
+ <button label="Choisir le résident" label_selected="" name="select_abuser"
+ tool_tip="Sélectionnez le nom du résident dans une liste" />
+ <check_box label="Ne connaît pas le nom du contrevenant" name="omit_abuser_name"
+ tool_tip="Cochez cette case si vous ne connaissez pas le nom du contrevenant" />
<text name="abuser_name_title2">
- Lieu de l&apos;abus :
+ Lieu où l&apos;infraction a eu lieu :
</text>
<text name="sum_title">
- Résumé :
+ Récapitulatif :
</text>
<text name="dscr_title">
Détails :
</text>
<text name="bug_aviso">
- Veuillez préciser autant que possible la date, le lieu, la nature de l&apos;abus,
-les textes du chat/IM pertinents, et sélectionner l&apos;objet si possible.
+ Indiquez la date, le lieu, la nature de l&apos;infraction, ainsi que tout chat ou IM relatif à l&apos;infraction, en étant aussi précis que possible. Essayez aussi d&apos;indiquer un sujet.
</text>
<text name="incomplete_title">
- Attention : les rapports incomplets ne seront pas pris en compte
+ Remarque : Les rapports incomplets ne feront pas l&apos;objet d&apos;une enquête.
</text>
- <button label="Signaler un abus" label_selected="Signaler un abus" name="send_btn" />
+ <button label="Signaler l&apos;infraction" label_selected="Signaler l&apos;infraction"
+ name="send_btn" />
<button label="Annuler" label_selected="Annuler" name="cancel_btn" />
</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_select_key.xml b/indra/newview/skins/default/xui/fr/floater_select_key.xml
new file mode 100644
index 0000000000..bbbd6991d9
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_select_key.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater name="modal container">
+ <button label="Annuler" label_selected="Annuler" name="Cancel" />
+ <text name="Save item as:">
+ Appuyer sur une touche pour sélectionner
+ </text>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_settings_debug.xml b/indra/newview/skins/default/xui/fr/floater_settings_debug.xml
index 4b7ed35c7b..45b5ad822a 100644
--- a/indra/newview/skins/default/xui/fr/floater_settings_debug.xml
+++ b/indra/newview/skins/default/xui/fr/floater_settings_debug.xml
@@ -8,8 +8,10 @@
FALSE
</combo_item>
</combo_box>
+ <color_swatch label="Couleur" name="color_swatch" />
<spinner label="x" name="val_spinner_1" />
<spinner label="x" name="val_spinner_2" />
<spinner label="x" name="val_spinner_3" />
<spinner label="x" name="val_spinner_4" />
+ <button label="Paramètres par défaut" name="default_btn" />
</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_snapshot.xml b/indra/newview/skins/default/xui/fr/floater_snapshot.xml
index e942972e40..4b3f13f75b 100644
--- a/indra/newview/skins/default/xui/fr/floater_snapshot.xml
+++ b/indra/newview/skins/default/xui/fr/floater_snapshot.xml
@@ -1,37 +1,42 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater name="Snapshot" title="Aperçu de l&apos;instantané">
+<floater name="Snapshot" title="Prévisualiser la capture d&apos;écran">
<text name="type_label">
- Que souhaitez-vous faire ?
+ Destination de la capture d&apos;écran
</text>
- <radio_group label="Type d&apos;instantané" name="snapshot_type_radio">
+ <radio_group label="Type de capture d&apos;écran" name="snapshot_type_radio">
<radio_item name="postcard">
- Envoyer une carte postale
+ Envoyer par e-mail
</radio_item>
<radio_item name="texture">
- Uploader un instantané
+ Enregistrer dans votre inventaire (10 $L)
</radio_item>
<radio_item name="local">
- Enregistrer instantané sur disque
+ Enregistrer sur votre disque dur
</radio_item>
</radio_group>
+ <button label="Plus &gt;&gt;" name="more_btn" tool_tip="Options avancées" />
+ <button label="&lt;&lt; Moins" name="less_btn" tool_tip="Options avancées" />
<text name="type_label2">
- Taille souhaitée de l&apos;image :
+ Taille
+ </text>
+ <text name="format_label">
+ Format
</text>
<combo_box label="Résolution" name="postcard_size_combo">
<combo_item name="640x480">
- 640x480
+ 640 x 480
</combo_item>
<combo_item name="800x600">
- 800x600
+ 800 x 600
</combo_item>
<combo_item name="1024x768">
- 1024x768
+ 1024 x 768
</combo_item>
<combo_item name="CurrentWindow">
Fenêtre actuelle
</combo_item>
<combo_item name="Custom">
- Personnalisé
+ Personnaliser
</combo_item>
</combo_box>
<combo_box label="Résolution" name="texture_size_combo">
@@ -39,16 +44,16 @@
Fenêtre actuelle
</combo_item>
<combo_item name="Small(128x128)">
- Petit (128x128)
+ Petite (128 x 128)
</combo_item>
<combo_item name="Medium(256x256)">
- Moyen (256x256)
+ Moyenne (256 x 256)
</combo_item>
<combo_item name="Large(512x512)">
- Grand (512x512)
+ Grande (512 x 512)
</combo_item>
<combo_item name="Custom">
- Personnalisé
+ Personnaliser
</combo_item>
</combo_box>
<combo_box label="Résolution" name="local_size_combo">
@@ -56,32 +61,43 @@
Fenêtre actuelle
</combo_item>
<combo_item name="320x240">
- 320x240
+ 320 x 240
</combo_item>
<combo_item name="640x480">
- 640x480
+ 640 x 480
</combo_item>
<combo_item name="800x600">
- 800x600
+ 800 x 600
</combo_item>
<combo_item name="1024x768">
- 1024x768
+ 1024 x 768
</combo_item>
<combo_item name="1280x1024">
- 1280x1024
+ 1280 x 1024
</combo_item>
<combo_item name="1600x1200">
- 1600x1200
+ 1600 x 1200
</combo_item>
<combo_item name="Custom">
- Personnalisé
+ Personnaliser
+ </combo_item>
+ </combo_box>
+ <combo_box label="Format" name="local_format_combo">
+ <combo_item name="PNG">
+ PNG
+ </combo_item>
+ <combo_item name="JPEG">
+ JPEG
+ </combo_item>
+ <combo_item name="BMP">
+ BMP
</combo_item>
</combo_box>
- <spinner label="Larg." name="snapshot_width" />
- <spinner label="Haut." name="snapshot_height" />
+ <spinner label="Largeur" name="snapshot_width" />
+ <spinner label="Hauteur" name="snapshot_height" />
<slider label="Qualité de l&apos;image" name="image_quality_slider" />
<text name="layer_type_label">
- Capture :
+ Capture :
</text>
<combo_box label="Couches de l&apos;image" name="layer_types">
<combo_item name="Colors">
@@ -91,21 +107,26 @@
Profondeur
</combo_item>
<combo_item name="ObjectMattes">
- Masques de l&apos;objet
+ Matte des objets
</combo_item>
</combo_box>
<text name="file_size_label">
- Taille du fichier : [SIZE]
+ Taille du dossier : [SIZE] Ko
</text>
- <check_box label="Afficher interface dans l&apos;instantané" name="ui_check" />
- <check_box label="Afficher l&apos;ATH dans l&apos;instantané" name="hud_check" />
- <check_box label="Laisser ouvert après enregistrement" name="keep_open_check" />
- <check_box label="Conserver les proportions" name="keep_aspect_check" />
- <check_box label="Figer l&apos;image (aperçu en plein écran)" name="freeze_frame_check" />
- <button label="Nouvel Instantané" name="new_snapshot_btn" />
- <check_box label="Instantané automatique" name="auto_snapshot_check" />
- <button label="Uploader (L$10)" name="upload_btn" />
+ <check_box label="Voir l&apos;interface sur la capture" name="ui_check" />
+ <check_box label="Voir les éléments HUD sur la capture" name="hud_check" />
+ <check_box label="Garder ouvert après enregistrement" name="keep_open_check" />
+ <check_box label="Imposer les proportions" name="keep_aspect_check" />
+ <check_box label="Geler le cadre (prévisualisation plein écran)"
+ name="freeze_frame_check" />
+ <button label="Rafraîchir" name="new_snapshot_btn" />
+ <check_box label="Auto-rafraîchir" name="auto_snapshot_check" />
+ <button label="Enregistrer (10 $L)" name="upload_btn" />
<button label="Envoyer" name="send_btn" />
- <button label="Enregistrer" name="save_btn" />
+ <button label="Enregistrer" name="save_btn"
+ tool_tip="Enregistrer l&apos;image dans un fichier" />
<button label="Annuler" name="discard_btn" />
+ <string name="unknown">
+ inconnu
+ </string>
</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/fr/floater_texture_ctrl.xml
index 4e07078d6c..cc85bd177f 100644
--- a/indra/newview/skins/default/xui/fr/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/fr/floater_texture_ctrl.xml
@@ -1,5 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater name="texture picker" title="Choisir : Texture">
+ <string name="choose_picture">
+ Cliquez pour sélectionner une image
+ </string>
<text type="string" length="1" name="Multiple">
Multiple
</text>
@@ -10,8 +13,12 @@
<button label="Aucun(e)" label_selected="Aucun(e)" name="None" />
<button label="Vierge" label_selected="Vierge" name="Blank" />
<check_box label="Afficher les dossiers" name="show_folders_check" />
+ <search_editor label="Saisissez votre recherche ici" name="inventory search editor" />
<check_box label="Appliquer maintenant" name="apply_immediate_check" />
<button label="" label_selected="" name="Pipette" />
<button label="Annuler" label_selected="Annuler" name="Cancel" />
<button label="Sélectionner" label_selected="Sélectionner" name="Select" />
+ <string name="pick title">
+ Choisir :
+ </string>
</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_tools.xml b/indra/newview/skins/default/xui/fr/floater_tools.xml
index 8e94eae6f4..d9d4380754 100644
--- a/indra/newview/skins/default/xui/fr/floater_tools.xml
+++ b/indra/newview/skins/default/xui/fr/floater_tools.xml
@@ -1,22 +1,22 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater name="toolbox floater" title="">
- <button label="" label_selected="" name="button focus" />
+ <button label="" label_selected="" name="button focus" tool_tip="Mise au point" />
<text name="tool label">
Faire le point
</text>
- <button label="" label_selected="" name="button move" />
+ <button label="" label_selected="" name="button move" tool_tip="Déplacer" />
<text name="tool label2">
Se déplacer
</text>
- <button label="" label_selected="" name="button edit" />
+ <button label="" label_selected="" name="button edit" tool_tip="Modifier" />
<text name="tool label3">
Edition
</text>
- <button label="" label_selected="" name="button create" />
+ <button label="" label_selected="" name="button create" tool_tip="Créer" />
<text name="tool label4">
Créer
</text>
- <button label="" label_selected="" name="button land" />
+ <button label="" label_selected="" name="button land" tool_tip="Terrain" />
<text name="tool label5">
Terrain
</text>
@@ -52,22 +52,22 @@
Réference
</combo_item>
</combo_box>
- <button label="" label_selected="" name="ToolCube" />
- <button label="" label_selected="" name="ToolPrism" />
- <button label="" label_selected="" name="ToolPyramid" />
- <button label="" label_selected="" name="ToolTetrahedron" />
- <button label="" label_selected="" name="ToolCylinder" />
- <button label="" label_selected="" name="ToolHemiCylinder" />
- <button label="" label_selected="" name="ToolCone" />
- <button label="" label_selected="" name="ToolHemiCone" />
- <button label="" label_selected="" name="ToolSphere" />
- <button label="" label_selected="" name="ToolHemiSphere" />
+ <button label="" label_selected="" name="ToolCube" tool_tip="Cube" />
+ <button label="" label_selected="" name="ToolPrism" tool_tip="Prisme" />
+ <button label="" label_selected="" name="ToolPyramid" tool_tip="Pyramide" />
+ <button label="" label_selected="" name="ToolTetrahedron" tool_tip="Tétraèdre" />
+ <button label="" label_selected="" name="ToolCylinder" tool_tip="Cylindre" />
+ <button label="" label_selected="" name="ToolHemiCylinder" tool_tip="Demi-cylindre" />
+ <button label="" label_selected="" name="ToolCone" tool_tip="Cône" />
+ <button label="" label_selected="" name="ToolHemiCone" tool_tip="Demi-cône" />
+ <button label="" label_selected="" name="ToolSphere" tool_tip="Sphère" />
+ <button label="" label_selected="" name="ToolHemiSphere" tool_tip="Demi-sphère" />
<check_box label="Copier la sélection" name="checkbox copy selection" />
- <button label="" label_selected="" name="ToolTorus" />
- <button label="" label_selected="" name="ToolTube" />
- <button label="" label_selected="" name="ToolRing" />
- <button label="" label_selected="" name="ToolTree" />
- <button label="" label_selected="" name="ToolGrass" />
+ <button label="" label_selected="" name="ToolTorus" tool_tip="Tore" />
+ <button label="" label_selected="" name="ToolTube" tool_tip="Tube" />
+ <button label="" label_selected="" name="ToolRing" tool_tip="Anneau" />
+ <button label="" label_selected="" name="ToolTree" tool_tip="Arbre" />
+ <button label="" label_selected="" name="ToolGrass" tool_tip="Herbe" />
<check_box label="Maintenir l&apos;outil sélectionné" name="checkbox sticky" />
<check_box label="Centrer la copie" name="checkbox copy centers" />
<check_box label="Pivoter la copie" name="checkbox copy rotates" />
@@ -89,6 +89,9 @@
Grand
</combo_item>
</combo_box>
+ <text name="Strength:">
+ Force :
+ </text>
<button label="Appliquer à la sélection" label_selected="Appliquer à la sélection"
name="button apply to selection" tool_tip="Modifier terrain sélectionné" />
<check_box label="Afficher propriétaires" name="checkbox show owners" />
@@ -145,10 +148,15 @@
<check_box label="Autoriser tout le monde à déplacer"
name="checkbox allow everyone move" />
<check_box label="Autoriser tout le monde à copier" name="checkbox allow everyone copy" />
+ <check_box label="Afficher dans la recherche" name="search_check"
+ tool_tip="Afficher l&apos;objet dans les résultats de recherche" />
<check_box label="A vendre" name="checkbox for sale" />
<text name="Price: L$">
Prix : L$
</text>
+ <text name="Cost">
+ Prix : $L
+ </text>
<radio_group name="sale type">
<radio_item name="Original">
Original
@@ -185,6 +193,12 @@
<combo_item name="Open">
Ouvrir
</combo_item>
+ <combo_item name="Play">
+ Jouer le média sur la parcelle
+ </combo_item>
+ <combo_item name="Opemmedia">
+ Ouvrir le média sur la parcelle
+ </combo_item>
</combo_box>
<text name="B:">
B:
@@ -219,6 +233,21 @@
<text name="text modify warning">
Vous devez sélectionner l&apos;objet entier pour fixer des autorisations.
</text>
+ <string name="Cost Default">
+ Prix : $L
+ </string>
+ <string name="Cost Total">
+ Prix total : $L
+ </string>
+ <string name="Cost Per Unit">
+ Prix par : $L
+ </string>
+ <string name="Cost Mixed">
+ Prix mixte
+ </string>
+ <string name="Sale Mixed">
+ Vente mixte
+ </string>
</panel>
<panel label="Objet" name="Object">
<text name="select_single">
@@ -304,6 +333,9 @@
<combo_item name="Ring">
Anneau
</combo_item>
+ <combo_item name="Sculpted">
+ Sculpté
+ </combo_item>
</combo_box>
<text name="text cut">
Path Cut Begin and End
@@ -370,6 +402,32 @@
<text name="text revolutions">
Révolutions
</text>
+ <texture_picker label="Sculpter la texture" name="sculpt texture control"
+ tool_tip="Cliquez pour sélectionner une image" />
+ <check_box label="Mirroir" name="sculpt mirror control"
+ tool_tip="Retourne le prim sculpté le long de l&apos;axe des X." />
+ <check_box label="A l&apos;envers" name="sculpt invert control"
+ tool_tip="Inverse les valeurs normales d&apos;un prim sculpté et le fait apparaître à l&apos;envers." />
+ <text name="label sculpt type">
+ Type de couture
+ </text>
+ <combo_box name="sculpt type control">
+ <combo_item name="None">
+ (aucun)
+ </combo_item>
+ <combo_item name="Sphere">
+ Sphère
+ </combo_item>
+ <combo_item name="Torus">
+ Tore
+ </combo_item>
+ <combo_item name="Plane">
+ Plan
+ </combo_item>
+ <combo_item name="Cylinder">
+ Cylindre
+ </combo_item>
+ </combo_box>
</panel>
<panel label="Attributs" name="Features">
<text name="select_single">
@@ -407,6 +465,9 @@
<text name="color trans">
Transparence
</text>
+ <text name="glow label">
+ Rayonnement
+ </text>
<check_box label="Lumin. max." name="checkbox fullbright" />
<text name="tex gen">
Mapping
@@ -548,4 +609,43 @@
<button label="A propos du terrain…" label_selected="A propos du terrain…"
name="button about land" />
</panel>
+ <string name="status_rotate">
+ Pour faire tourner l&apos;objet, faîtes glisser les bandes de couleur.
+ </string>
+ <string name="status_scale">
+ Pour étirer le côté sélectionné, cliquez et faîtes glisser
+ </string>
+ <string name="status_move">
+ Faîtes glisser pour déplacer, Maj-faire glisser pour copier.
+ </string>
+ <string name="status_modifyland">
+ Cliquez et maintenez pour modifier le terrain
+ </string>
+ <string name="status_camera">
+ Cliquez et faîtes glisser pour changer l&apos;affichage
+ </string>
+ <string name="status_grab">
+ Faîtes glisser pour déplacer les objets, appuyez sur Ctrl pour soulever, Crtl-Maj pour faire tourner
+ </string>
+ <string name="status_place">
+ Cliquez dans le Monde pour créer, Maj-clic pour sélectionner
+ </string>
+ <string name="status_selectland">
+ Cliquez et faîtes glisser pour sélectionner le terrain
+ </string>
+ <string name="grid_screen_text">
+ Ecran
+ </string>
+ <string name="grid_local_text">
+ Local
+ </string>
+ <string name="grid_world_text">
+ Monde
+ </string>
+ <string name="grid_reference_text">
+ Référence
+ </string>
+ <string name="grid_attachment_text">
+ Pièce-jointe
+ </string>
</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_top_objects.xml b/indra/newview/skins/default/xui/fr/floater_top_objects.xml
index 1628004596..3923c25f81 100644
--- a/indra/newview/skins/default/xui/fr/floater_top_objects.xml
+++ b/indra/newview/skins/default/xui/fr/floater_top_objects.xml
@@ -8,6 +8,7 @@
<column label="Name" name="name" />
<column label="Owner" name="owner" />
<column label="Location" name="location" />
+ <column label="Heure" name="time" />
</scroll_list>
<text name="id_text">
ID de l&apos;objet :
diff --git a/indra/newview/skins/default/xui/fr/floater_tos.xml b/indra/newview/skins/default/xui/fr/floater_tos.xml
index 41d2557def..2f7c31e2ba 100644
--- a/indra/newview/skins/default/xui/fr/floater_tos.xml
+++ b/indra/newview/skins/default/xui/fr/floater_tos.xml
@@ -13,9 +13,9 @@
<text name="tos_title">
Acceptation des Conditions Générales d&apos;Utilisation
</text>
+ <check_box label="J&apos;accepte les Conditions d&apos;utilisation" name="agree_chk" />
<text name="tos_heading">
- Veuillez lire attentivement les Conditions Générales d&apos;Utilisation. Afin de vous connecter à Second Life,
-vous devez accepter les CGU.
+ Veuillez lire attentivement les Conditions d&apos;utilisation suivantes. Pour continuer à utiliser Second Life, vous devez accepter ces conditions.
</text>
<text_editor name="tos_text">
TOS_TEXT
diff --git a/indra/newview/skins/default/xui/fr/floater_url_entry.xml b/indra/newview/skins/default/xui/fr/floater_url_entry.xml
new file mode 100644
index 0000000000..b744bf1586
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_url_entry.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater name="url_entry">
+ <text name="media_label">
+ URL du média :
+ </text>
+ <button label="OK" name="ok_btn" />
+ <button label="Annuler" name="cancel_btn" />
+ <button label="Effacer" name="clear_btn" />
+ <text name="loading_label">
+ Chargement en cours...
+ </text>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_water.xml b/indra/newview/skins/default/xui/fr/floater_water.xml
new file mode 100644
index 0000000000..eb8a99d257
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_water.xml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater name="Water Floater" title="Editeur d&apos;eau avancé">
+ <text name="KeyFramePresetsText">
+ Préréglages eau :
+ </text>
+ <button label="Nouveau" label_selected="Nouveau" name="WaterNewPreset" />
+ <button label="Enregistrer" label_selected="Enregistrer" name="WaterSavePreset" />
+ <button label="Supprimer" label_selected="Supprimer" name="WaterDeletePreset" />
+ <tab_container name="Water Tabs">
+ <panel label="Paramètres" name="Settings">
+ <text name="BHText">
+ Couleur du brouillard dans l&apos;eau
+ </text>
+ <button label="?" name="WaterFogColorHelp" />
+ <color_swatch name="WaterFogColor" tool_tip="Cliquer pour ouvrir le sélecteur de couleurs" />
+ <text name="WaterFogDensText">
+ Densité du brouillard
+ </text>
+ <button label="?" name="WaterFogDensityHelp" />
+ <text name="WaterUnderWaterFogModText">
+ Brouillard sous-marin
+ </text>
+ <button label="?" name="WaterUnderWaterFogModHelp" />
+ <text name="BDensText">
+ Echelle des vaguelettes
+ </text>
+ <button label="?" name="WaterNormalScaleHelp" />
+ <text name="BHText2">
+ 1
+ </text>
+ <text name="BHText3">
+ 2
+ </text>
+ <text name="BHText4">
+ 3
+ </text>
+ <text name="HDText">
+ Echelle Fresnel
+ </text>
+ <button label="?" name="WaterFresnelScaleHelp" />
+ <text name="FresnelOffsetText">
+ Décalage Fresnel
+ </text>
+ <button label="?" name="WaterFresnelOffsetHelp" />
+ <text name="DensMultText">
+ Réfraction au dessus
+ </text>
+ <button label="?" name="WaterScaleAboveHelp" />
+ <text name="WaterScaleBelowText">
+ Réfraction en dessous
+ </text>
+ <button label="?" name="WaterScaleBelowHelp" />
+ <text name="MaxAltText">
+ Multiplicateur de flou
+ </text>
+ <button label="?" name="WaterBlurMultiplierHelp" />
+ </panel>
+ <panel label="Image" name="Waves">
+ <text name="BHText">
+ Direction grande vague
+ </text>
+ <button label="?" name="WaterWave1Help" />
+ <text name="WaterWave1DirXText">
+ X
+ </text>
+ <text name="WaterWave1DirYText">
+ Y
+ </text>
+ <text name="BHText2">
+ Direction petite vague
+ </text>
+ <button label="?" name="WaterWave2Help" />
+ <text name="WaterWave2DirXText">
+ X
+ </text>
+ <text name="WaterWave2DirYText">
+ Y
+ </text>
+ <text name="BHText3">
+ Normal Map
+ </text>
+ <button label="?" name="WaterNormalMapHelp" />
+ </panel>
+ </tab_container>
+ <string name="WLDefaultWaterNames">
+ Default:Glassy:Pond:Murky:Second Plague:SNAKE!!!:Valdez
+ </string>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_wearable_save_as.xml b/indra/newview/skins/default/xui/fr/floater_wearable_save_as.xml
index f313e97224..7c15477eb9 100644
--- a/indra/newview/skins/default/xui/fr/floater_wearable_save_as.xml
+++ b/indra/newview/skins/default/xui/fr/floater_wearable_save_as.xml
@@ -3,7 +3,7 @@
<button label="Enregistrer" label_selected="Enregistrer" name="Save" />
<button label="Annuler" label_selected="Annuler" name="Cancel" />
<text type="string" length="1" name="Save item as:">
- Enregistrer élement sous :
+ Enregistrer l&apos;objet sous :
</text>
<line_editor name="name ed">
Nouveau [DESC]
diff --git a/indra/newview/skins/default/xui/fr/floater_windlight_options.xml b/indra/newview/skins/default/xui/fr/floater_windlight_options.xml
new file mode 100644
index 0000000000..1b5b9e5dca
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_windlight_options.xml
@@ -0,0 +1,190 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater name="WindLight floater" title="Editeur de ciel avancé">
+ <text name="KeyFramePresetsText">
+ Préréglages ciel :
+ </text>
+ <button label="Nouveau" label_selected="Nouveau" name="WLNewPreset" />
+ <button label="Enregistrer" label_selected="Enregistrer" name="WLSavePreset" />
+ <button label="Supprimer" label_selected="Supprimer" name="WLDeletePreset" />
+ <button label="Editeur du cycle du jour" label_selected="Editeur du cycle du jour"
+ name="WLDayCycleMenuButton" />
+ <tab_container name="WindLight Tabs">
+ <panel label="Atmosphère" name="Atmosphere">
+ <text name="BHText">
+ Bleu de l&apos;horizon
+ </text>
+ <button label="?" name="WLBlueHorizonHelp" />
+ <text name="BHText2">
+ R
+ </text>
+ <text name="BHText3">
+ V
+ </text>
+ <text name="BHText4">
+ B
+ </text>
+ <text name="BHText5">
+ I
+ </text>
+ <text name="BDensText">
+ Quantité de brume
+ </text>
+ <button label="?" name="WLHazeHorizonHelp" />
+ <text name="BDensText2">
+ Densité du bleu
+ </text>
+ <button label="?" name="WLBlueDensityHelp" />
+ <text name="BHText6">
+ R
+ </text>
+ <text name="BHText7">
+ V
+ </text>
+ <text name="BHText8">
+ B
+ </text>
+ <text name="BHText9">
+ I
+ </text>
+ <text name="HDText">
+ Densité de la brume
+ </text>
+ <button label="?" name="WLHazeDensityHelp" />
+ <text name="DensMultText">
+ Multiplicateur de densité
+ </text>
+ <button label="?" name="WLDensityMultHelp" />
+ <text name="WLDistanceMultText">
+ Multiplicateur de distance
+ </text>
+ <button label="?" name="WLDistanceMultHelp" />
+ <text name="MaxAltText">
+ Altitude maximum
+ </text>
+ <button label="?" name="WLMaxAltitudeHelp" />
+ </panel>
+ <panel label="Eclairage" name="Lighting">
+ <text name="SLCText">
+ Couleur soleil/lune
+ </text>
+ <button label="?" name="WLSunlightColorHelp" />
+ <text name="BHText">
+ R
+ </text>
+ <text name="BHText2">
+ V
+ </text>
+ <text name="BHText3">
+ B
+ </text>
+ <text name="BHText4">
+ I
+ </text>
+ <text name="TODText">
+ Position soleil/lune
+ </text>
+ <button label="?" name="WLTimeOfDayHelp" />
+ <text name="WLAmbientText">
+ Eclairage ambiant
+ </text>
+ <button label="?" name="WLAmbientHelp" />
+ <text name="BHText5">
+ R
+ </text>
+ <text name="BHText6">
+ V
+ </text>
+ <text name="BHText7">
+ B
+ </text>
+ <text name="BHText8">
+ I
+ </text>
+ <text name="WLEastAngleText">
+ Angle du levant
+ </text>
+ <button label="?" name="WLEastAngleHelp" />
+ <text name="SunGlowText">
+ Rayonnement du soleil
+ </text>
+ <button label="?" name="WLSunGlowHelp" />
+ <slider label="Netteté " name="WLGlowB" />
+ <slider label="Taille " name="WLGlowR" />
+ <text name="SceneGammaText">
+ Gamma de la scène
+ </text>
+ <button label="?" name="WLSceneGammaHelp" />
+ <text name="WLStarText">
+ Eclat des étoiles
+ </text>
+ <button label="?" name="WLStarBrightnessHelp" />
+ </panel>
+ <panel label="Nuages" name="Clouds">
+ <text name="WLCloudColorText">
+ Couleur des nuages
+ </text>
+ <button label="?" name="WLCloudColorHelp" />
+ <text name="BHText">
+ R
+ </text>
+ <text name="BHText2">
+ V
+ </text>
+ <text name="BHText3">
+ B
+ </text>
+ <text name="BHText4">
+ I
+ </text>
+ <text name="WLCloudColorText2">
+ Nuages XY/densité
+ </text>
+ <button label="?" name="WLCloudDensityHelp" />
+ <text name="BHText5">
+ X
+ </text>
+ <text name="BHText6">
+ Y
+ </text>
+ <text name="BHText7">
+ D
+ </text>
+ <text name="WLCloudCoverageText">
+ Couverture nuageuse
+ </text>
+ <button label="?" name="WLCloudCoverageHelp" />
+ <text name="WLCloudScaleText">
+ Altitude des nuages
+ </text>
+ <button label="?" name="WLCloudScaleHelp" />
+ <text name="WLCloudDetailText">
+ Détails nuages (XY/densité)
+ </text>
+ <button label="?" name="WLCloudDetailHelp" />
+ <text name="BHText8">
+ X
+ </text>
+ <text name="BHText9">
+ Y
+ </text>
+ <text name="BHText10">
+ D
+ </text>
+ <text name="WLCloudScrollXText">
+ Direction et vitesse X
+ </text>
+ <button label="?" name="WLCloudScrollXHelp" />
+ <check_box label="Verrouiller" name="WLCloudLockX" />
+ <text name="WLCloudScrollYText">
+ Direction et vitesse Y
+ </text>
+ <button label="?" name="WLCloudScrollYHelp" />
+ <check_box label="Verrouiller" name="WLCloudLockY" />
+ <check_box label="Nuages classiques" name="DrawClassicClouds" />
+ <button label="?" name="WLClassicCloudsHelp" />
+ </panel>
+ </tab_container>
+ <string name="WLDefaultSkyNames">
+ A-12AM:A-12PM:A-3AM:A-3PM:A-4.30PM:A-6AM:A-6PM:A-9AM:A-9PM:Barcelona:Blizzard:Blue Midday:Coastal Afternoon:Coastal Sunset:Default:Desert Sunset:Fine Day:Fluffy Big Clouds:Foggy:Funky Funky:Funky Funky Funky:Gelatto:Ghost:Incongruent Truths:Midday 1:Midday 2:Midday 3:Midday 4:Night:Pirate:Purple:Sailor&apos;s Delight:Sheer Sensuality
+ </string>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_world_map.xml b/indra/newview/skins/default/xui/fr/floater_world_map.xml
index 8a0d907d7b..5882d72584 100644
--- a/indra/newview/skins/default/xui/fr/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/fr/floater_world_map.xml
@@ -2,13 +2,13 @@
<floater name="worldmap" title="Carte du monde">
<tab_container name="maptab">
<panel label="Objets" name="objects_mapview" />
- <panel label="Relief" name="terrain_mapview" />
+ <panel label="Terrain" name="terrain_mapview" />
</tab_container>
<text name="land_for_sale_label">
- Terrain à vendre :
+ Terrain à vendre
</text>
<text name="auction_label">
- Enchères
+ Enchère
</text>
<text name="you_label">
Vous
@@ -16,8 +16,8 @@
<text name="home_label">
Domicile
</text>
- <button label="Rejoindre son domicile" label_selected="Rejoindre son domicile"
- name="Go Home" tool_tip="Téléportez-vous vers votre domicile" />
+ <button label="Aller chez moi" label_selected="Aller chez moi" name="Go Home"
+ tool_tip="Vous téléporte à votre domicile" />
<text name="classifieds_label">
Petites annonces
</text>
@@ -27,11 +27,11 @@
</text>
<check_box label=" " name="people_chk" />
<text name="infohub_label">
- Point Info
+ Infohub
</text>
<check_box label=" " name="infohub_chk" />
<text name="telehub_label">
- Téléport
+ Téléhub
</text>
<check_box label=" " name="telehubchk" />
<text name="popular_label">
@@ -39,7 +39,7 @@
</text>
<check_box label=" " name="popular_chk" />
<text name="land_for_sale_label2">
- Terrain à vendre :
+ Terrain à vendre
</text>
<check_box label=" " name="land_for_sale_chk" />
<text name="events_label">
@@ -47,24 +47,27 @@
</text>
<check_box label=" " name="event_chk" />
<text name="events_mature_label">
- Evénements (M)
+ Evénements (A)
</text>
<check_box label=" " name="event_mature_chk" />
- <combo_box label="Mes Amis" name="friend combo" tool_tip="Friend to Show on Map">
+ <combo_box label="Amis en ligne" name="friend combo"
+ tool_tip="Ami à afficher sur la carte">
<combo_item name="none_selected">
- Mes Amis
+ Amis en ligne
</combo_item>
</combo_box>
- <combo_box label="Mes Repères" name="landmark combo" tool_tip="Landmark to Show on Map">
+ <combo_box label="Repères" name="landmark combo"
+ tool_tip="Repère à afficher sur la carte">
<combo_item name="none_selected">
- Mes Repères
+ Repères
</combo_item>
</combo_box>
- <line_editor name="location" tool_tip="Entrez le nom d&apos;une région">
+ <line_editor label="Rechercher par nom de région" name="location"
+ tool_tip="Saisissez le nom d&apos;une région">
Recherche par nom de région
</line_editor>
<button label="Rechercher" label_selected="&gt;" name="DoSearch"
- tool_tip="Rechercher région" />
+ tool_tip="Rechercher dans la région" />
<text name="search_label">
Résultats de la recherche :
</text>
@@ -73,20 +76,22 @@
<column label="" name="sim_name" />
</scroll_list>
<text name="location_label">
- Lieu :
+ Emplacement :
</text>
- <spinner name="spin x" tool_tip="Coordonnée X du lieu à afficher sur la carte" />
- <spinner name="spin y" tool_tip="Coordonnée Y du lieu à afficher sur la carte" />
- <spinner name="spin z" tool_tip="Coordonnée Z du lieu à afficher sur la carte" />
- <button label="Téléportation" label_selected="Téléportation" name="Teleport"
- tool_tip="Téléportez-vous vers le lieu choisi" />
- <button label="Afficher destination" label_selected="Afficher destination"
+ <spinner name="spin x" tool_tip="Coordonnées des X du lieu à afficher sur la carte" />
+ <spinner name="spin y" tool_tip="Coordonnées des Y du lieu à afficher sur la carte" />
+ <spinner name="spin z" tool_tip="Coordonnées des Z du lieu à afficher sur la carte" />
+ <button label="Téléporter" label_selected="Téléporter" name="Teleport"
+ tool_tip="Téléporter à l&apos;endroit sélectionné" />
+ <button label="Afficher la destination" label_selected="Afficher la destination"
name="Show Destination"
- tool_tip="Centrer la carte sur la position sélectionnée" />
+ tool_tip="Centrer la carte sur l&apos;endroit sélectionné" />
<button label="Effacer" label_selected="Effacer" name="Clear"
- tool_tip="Arrêter la détection" />
- <button label="Afficher ma position" label_selected="Afficher ma position"
+ tool_tip="Arrêter de suivre" />
+ <button label="Afficher mon emplacement" label_selected="Afficher mon emplacement"
name="Show My Location"
- tool_tip="Centrer la carte sur la position de votre avatar" />
+ tool_tip="Centrer la carte sur l&apos;emplacement de votre avatar" />
+ <button label="Copier la SLURL sur le presse-papier" name="copy_slurl"
+ tool_tip="Copier l&apos;emplacement actuel comme SLURL pour l&apos;utiliser sur le Web." />
<slider label="Zoom" name="zoom slider" />
</floater>
diff --git a/indra/newview/skins/default/xui/fr/menu_inventory.xml b/indra/newview/skins/default/xui/fr/menu_inventory.xml
index 4d383cc140..760660cf38 100644
--- a/indra/newview/skins/default/xui/fr/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/fr/menu_inventory.xml
@@ -7,6 +7,7 @@
<menu_item_call label="Renommer" name="Task Rename" />
<menu_item_call label="Supprimer" name="Task Remove" />
<menu_item_call label="Vider la corbeille" name="Empty Trash" />
+ <menu_item_call label="Vider les objets trouvés" name="Empty Lost And Found" />
<menu_item_call label="Nouveau Dossier" name="New Folder" />
<menu_item_call label="Nouveau Script" name="New Script" />
<menu_item_call label="Nouvelle Note" name="New Note" />
@@ -47,12 +48,14 @@
name="IM Online Contacts In Folder" />
<menu_item_call label="Envoyer un IM à tous les contacts dans le dossier"
name="IM All Contacts In Folder" />
+ <menu_item_call label="Démarrer le chat conférence" name="Conference Chat Folder" />
<menu_item_call label="Lire" name="Sound Play" />
<menu_item_call label="Téléportation vers repère" name="Teleport To Landmark" />
<menu_item_call label="Exécuter dans le monde" name="Animation Play" />
<menu_item_call label="Exécuter localement" name="Animation Audition" />
<menu_item_call label="Envoyer Message instantané" name="Send Instant Message" />
<menu_item_call label="Proposer Téléportation" name="Offer Teleport..." />
+ <menu_item_call label="Démarrer le chat conférence" name="Conference Chat" />
<menu_item_call label="Activer" name="Activate" />
<menu_item_call label="Désactiver" name="Deactivate" />
<menu_item_call label="Détacher de soi" name="Detach From Yourself" />
diff --git a/indra/newview/skins/default/xui/fr/menu_login.xml b/indra/newview/skins/default/xui/fr/menu_login.xml
new file mode 100644
index 0000000000..fa9990cbca
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/menu_login.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<menu_bar name="Login Menu">
+ <menu label="Fichier" name="File">
+ <menu_item_call label="Quitter" name="Quit" />
+ </menu>
+ <menu label="Edition" name="Edit">
+ <menu_item_call label="Préférences..." name="Preferences..." />
+ </menu>
+ <menu label="Aide" name="Help">
+ <menu_item_call label="Aide Second Life" name="Second Life Help" />
+ <menu_item_call label="A propos de Second Life..." name="About Second Life..." />
+ </menu>
+</menu_bar>
diff --git a/indra/newview/skins/default/xui/fr/menu_slurl.xml b/indra/newview/skins/default/xui/fr/menu_slurl.xml
new file mode 100644
index 0000000000..094a957f9b
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/menu_slurl.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<menu name="Popup">
+ <menu_item_call label="A propos de l&apos;URL" name="about_url" />
+ <menu_item_call label="Téléporter vers l&apos;URL" name="teleport_to_url" />
+ <menu_item_call label="Afficher sur la carte" name="show_on_map" />
+</menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_viewer.xml b/indra/newview/skins/default/xui/fr/menu_viewer.xml
index 0f6d7a24db..6b52492e9f 100644
--- a/indra/newview/skins/default/xui/fr/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/fr/menu_viewer.xml
@@ -2,17 +2,19 @@
<menu_bar name="Main Menu">
<menu label="Fichier" name="File">
<tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~" />
- <menu_item_call label="Uploader image (L$[COST])..." name="Upload Image" />
- <menu_item_call label="Uploader son (L$[COST])..." name="Upload Sound" />
- <menu_item_call label="Uploader animation (L$[COST])..." name="Upload Animation" />
- <menu_item_call label="Upload de fichiers par lot (L$[COST] par fichier)..." name="Bulk Upload" />
+ <menu_item_call label="Charger une image ([COST] $L)..." name="Upload Image" />
+ <menu_item_call label="Charger un son ([COST] $L)..." name="Upload Sound" />
+ <menu_item_call label="Charger une animation ([COST] $L)..." name="Upload Animation" />
+ <menu_item_call label="Charger un lot de fichiers ([COST] $L par fichier)..."
+ name="Bulk Upload" />
<menu_item_separator label="-----------" name="separator" />
<menu_item_call label="Fermer la fenêtre" name="Close Window" />
+ <menu_item_call label="Fermer toutes les fenêtres" name="Close All Windows" />
<menu_item_separator label="-----------" name="separator2" />
<menu_item_call label="Enregistrer la texture sous..." name="Save Texture As..." />
<menu_item_separator label="-----------" name="separator3" />
- <menu_item_call label="Prendre un instantané" name="Take Snapshot" />
- <menu_item_call label="Enregistrer instantané sur disque dur" name="Snapshot to Disk" />
+ <menu_item_call label="Prendre une capture d&apos;écran" name="Take Snapshot" />
+ <menu_item_call label="Enregistrer capture d&apos;écran sur disque" name="Snapshot to Disk" />
<menu_item_separator label="-----------" name="separator4" />
<menu label="Définir taille de la fenêtre" name="Set Window Size">
<tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~" />
@@ -32,7 +34,7 @@
<menu_item_call label="Recommencer" name="Redo" />
<menu_item_separator label="-----------" name="separator" />
<menu_item_call label="Couper" name="Cut" />
- <menu_item_call label="Copie" name="Copy" />
+ <menu_item_call label="Copier" name="Copy" />
<menu_item_call label="Coller" name="Paste" />
<menu_item_call label="Supprimer" name="Delete" />
<menu_item_separator label="-----------" name="separator2" />
@@ -43,9 +45,9 @@
<menu_item_separator label="-----------" name="separator4" />
<menu_item_call label="Dupliquer" name="Duplicate" />
<menu_item_separator label="-----------" name="separator5" />
- <menu label="Attacher Objet" name="Attach Object" />
- <menu label="Détacher Objet" name="Detach Object" />
- <menu label="Retirer ses vêtements" name="Take Off Clothing">
+ <menu label="Attacher objet" name="Attach Object" />
+ <menu label="Détacher objet" name="Detach Object" />
+ <menu label="Enlever mes habits" name="Take Off Clothing">
<tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~" />
<menu_item_call label="Chemise" name="Shirt" />
<menu_item_call label="Pantalon" name="Pants" />
@@ -53,10 +55,10 @@
<menu_item_call label="Chaussettes" name="Socks" />
<menu_item_call label="Veste" name="Jacket" />
<menu_item_call label="Gants" name="Gloves" />
- <menu_item_call label="Maillot de corps" name="Menu Undershirt" />
+ <menu_item_call label="Tricot de peau" name="Menu Undershirt" />
<menu_item_call label="Sous-vêtements" name="Menu Underpants" />
<menu_item_call label="Jupe" name="Skirt" />
- <menu_item_call label="Tous les vêtements" name="All Clothes" />
+ <menu_item_call label="Tous les habits" name="All Clothes" />
</menu>
<menu_item_separator label="-----------" name="separator6" />
<menu_item_call label="Gestes..." name="Gestures..." />
@@ -70,16 +72,17 @@
</menu>
<menu label="Affichage" name="View">
<tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~" />
- <menu_item_call label="Mouselook" name="Mouselook" />
+ <menu_item_call label="Vue depuis la souris" name="Mouselook" />
<menu_item_check label="Construire" name="Build" />
- <menu_item_call label="Réinitialiser affichage" name="Reset View" />
- <menu_item_call label="Regarder celle/celui qui a parlé en dernier"
- name="Look at Last Chatter" />
+ <menu_item_check label="Joystick Flycam" name="Joystick Flycam" />
+ <menu_item_call label="Réinitialiser l&apos;affichage" name="Reset View" />
+ <menu_item_call label="Regarder la dernière personne qui a parlé" name="Look at Last Chatter" />
<menu_item_separator label="-----------" name="separator" />
<menu_item_check label="Barre d&apos;outils" name="Toolbar" />
- <menu_item_check label="Historique du chat" name="Chat History" />
- <menu_item_check label="Message instantané" name="Instant Message" />
+ <menu_item_check label="Chat local" name="Chat History" />
+ <menu_item_check label="Communiquer" name="Instant Message" />
<menu_item_call label="Inventaire" name="Inventory" />
+ <menu_item_check label="Intervenants actifs" name="Active Speakers" />
<menu_item_check label="Liste des ignorés" name="Mute List" />
<menu_item_separator label="-----------" name="separator2" />
<menu_item_check label="Contrôles de la caméra" name="Camera Controls" />
@@ -87,39 +90,54 @@
<menu_item_check label="Carte du monde" name="World Map" />
<menu_item_check label="Mini-carte" name="Mini-Map" />
<menu_item_separator label="-----------" name="separator3" />
- <menu_item_check label="Barre de statistiques" name="Statistics Bar" />
- <menu_item_check label="Frontières de propriété" name="Property Lines" />
- <menu_item_check label="Propriétaires de terrains" name="Land Owners" />
+ <menu_item_check label="Barre de statistique" name="Statistics Bar" />
+ <menu_item_check label="Limites de la propriété" name="Property Lines" />
+ <menu_item_check label="Propriétaires fonciers" name="Land Owners" />
<menu_item_separator label="-----------" name="separator4" />
- <menu label="Bulles d&apos;aide" name="Hover Tips">
+ <menu label="Astuces en survol" name="Hover Tips">
<tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~" />
<menu_item_check label="Afficher les astuces" name="Show Tips" />
<menu_item_separator label="-----------" name="separator" />
- <menu_item_check label="Infos de terrain" name="Land Tips" />
- <menu_item_check label="Bulles d&apos;aide sur tous les objets" name="Tips On All Objects" />
+ <menu_item_check label="Astuces sur les terrains" name="Land Tips" />
+ <menu_item_check label="Astuces sur tous les objets" name="Tips On All Objects" />
</menu>
<menu_item_check label="Alt affiche les propriétés physiques" name="Alt Shows Physical" />
- <menu_item_check label="Montrer transparences" name="Highlight Transparent" />
+ <menu_item_check label="Voir les objets invisibles" name="Highlight Transparent" />
+ <menu_item_check label="Balises toujours activées" name="Beacons Always On" />
<menu label="Balises" name="Beacons">
<tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~" />
+ <menu_item_check label="Objets scriptés avec Toucher uniquement"
+ name="Scripted Objects With Touch Only" />
<menu_item_check label="Objets scriptés" name="Scripted Objects" />
- <menu_item_check label="Objets Physiques" name="Physical Objects" />
+ <menu_item_check label="Objets physiques" name="Physical Objects" />
<menu_item_check label="Sources sonores" name="Sound Sources" />
- <menu_item_check label="Sources de particules" name="Particle Sources" />
+ <menu_item_check label="Sources des particules" name="Particle Sources" />
<menu_item_separator label="-----------" name="separator" />
+ <menu_item_check label="Montrer les surbrillances" name="Render Highlights" />
+ <menu_item_check label="Montrer les balises" name="Render Beacons" />
+ <menu_item_separator label="-----------" name="separator2" />
<menu_item_check label="Masquer les particules" name="Hide Particles" />
+ <menu_item_separator label="-----------" name="separator3" />
+ <menu label="Largeur de la balise" name="Beacon Width">
+ <menu_item_call label="1" name="Beacon Width 1" />
+ <menu_item_call label="4" name="Beacon Width 4" />
+ <menu_item_call label="16" name="Beacon Width 16" />
+ <menu_item_call label="32" name="Beacon Width 32" />
+ </menu>
</menu>
- <menu_item_check label="Afficher les attachements de l&apos;ATH" name="Show HUD Attachments" />
+ <menu_item_check label="Afficher les éléments HUD" name="Show HUD Attachments" />
<menu_item_separator label="-----------" name="separator5" />
- <menu_item_call label="Zoom avant" name="Zoom In" />
+ <menu_item_call label="Zoomer" name="Zoom In" />
<menu_item_call label="Zoom par défaut" name="Zoom Default" />
- <menu_item_call label="Zoom arrière" name="Zoom Out" />
+ <menu_item_call label="Zoomer en arrière" name="Zoom Out" />
<menu_item_separator label="-----------" name="separator6" />
<menu label="Plus" name="More">
<menu_item_call label="Passer en plein écran" name="Toggle Fullscreen" />
<menu_item_call label="Définir la taille de l&apos;IU à sa valeur par défaut"
name="Set UI Size to Default" />
</menu>
+ <menu_item_call label="Plein écran en mode bascule" name="Toggle Fullscreen" />
+ <menu_item_call label="Taille de l&apos;interface par défaut" name="Set UI Size to Default" />
</menu>
<menu label="Monde" name="World">
<tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~" />
@@ -128,22 +146,23 @@
<menu_item_check label="Toujours courir" name="Always Run" />
<menu_item_check label="Voler" name="Fly" />
<menu_item_separator label="-----------" name="separator" />
- <menu_item_call label="Créer repère ici" name="Create Landmark Here" />
- <menu_item_call label="Définir cet endroit comme domicile" name="Set Home to Here" />
+ <menu_item_call label="Créer un repère ici" name="Create Landmark Here" />
+ <menu_item_call label="Définir comme domicile" name="Set Home to Here" />
<menu_item_separator label="-----------" name="separator2" />
- <menu_item_call label="Téléportation vers domicile" name="Teleport Home" />
+ <menu_item_call label="Téléporter chez moi" name="Teleport Home" />
<menu_item_separator label="-----------" name="separator3" />
- <menu_item_call label="Définir comme : absent" name="Set Away" />
- <menu_item_call label="Définir comme : occupé" name="Set Busy" />
+ <menu_item_call label="Définir comme absent(e)" name="Set Away" />
+ <menu_item_call label="Définir comme occupé(e)" name="Set Busy" />
<menu_item_call label="Arrêter toutes les animations" name="Stop All Animations" />
+ <menu_item_call label="Libérer les touches" name="Release Keys" />
<menu_item_separator label="-----------" name="separator4" />
<menu_item_call label="Historique du compte..." name="Account History..." />
<menu_item_call label="Gérer mon compte..." name="Manage My Account..." />
- <menu_item_call label="Acheter des L$..." name="Buy and Sell L$..." />
+ <menu_item_call label="Acheter des $L..." name="Buy and Sell L$..." />
<menu_item_separator label="-----------" name="separator5" />
- <menu_item_call label="Mon Terrain…" name="My Land..." />
- <menu_item_call label="A propos du terrain…" name="About Land..." />
- <menu_item_call label="Acheter terrain…" name="Buy Land..." />
+ <menu_item_call label="Mon terrain..." name="My Land..." />
+ <menu_item_call label="A propos du terrain..." name="About Land..." />
+ <menu_item_call label="Acheter le terrain..." name="Buy Land..." />
<menu_item_call label="Région/Domaine..." name="Region/Estate..." />
<menu_item_separator label="-----------" name="separator6" />
<menu label="Forcer le soleil" name="Force Sun">
@@ -156,49 +175,62 @@
<menu_item_call label="Revenir aux valeurs par défaut de la région"
name="Revert to Region Default" />
</menu>
+ <menu label="Paramètres de l&apos;environnement" name="Environment Settings">
+ <menu_item_call label="Lever de soleil" name="Sunrise" />
+ <menu_item_call label="Milieu de journée" name="Noon" />
+ <menu_item_call label="Coucher de soleil" name="Sunset" />
+ <menu_item_call label="Minuit" name="Midnight" />
+ <menu_item_call label="Revenir aux options par défaut" name="Revert to Region Default" />
+ <menu_item_separator label="-----------" name="separator" />
+ <menu_item_call label="Editeur d&apos;environnement" name="Environment Editor" />
+ </menu>
</menu>
<menu label="Outils" name="Tools">
<tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~" />
<menu label="Sélectionner outil" name="Select Tool">
<tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~" />
- <menu_item_call label="Faire le point" name="Focus" />
- <menu_item_call label="Se déplacer" name="Move" />
- <menu_item_call label="Edition" name="Edit" />
+ <menu_item_call label="Mise au point" name="Focus" />
+ <menu_item_call label="Déplacer" name="Move" />
+ <menu_item_call label="Editer" name="Edit" />
<menu_item_call label="Créer" name="Create" />
<menu_item_call label="Terrain" name="Land" />
</menu>
<menu_item_separator label="-----------" name="separator" />
- <menu_item_check label="Ne sélectionner que mes objets" name="Select Only My Objects" />
- <menu_item_check label="Ne sélectionner que les objets déplaçables"
+ <menu_item_check label="Sélectionner mes objets uniquement" name="Select Only My Objects" />
+ <menu_item_check label="Sélectionner les objets déplaçables uniquement"
name="Select Only Movable Objects" />
- <menu_item_check label="Sélectionner par entourage" name="Select By Surrounding" />
+ <menu_item_check label="Sélectionner mes alentours" name="Select By Surrounding" />
<menu_item_check label="Afficher la sélection cachée" name="Show Hidden Selection" />
- <menu_item_check label="Afficher le volume lumineux de la sélection"
+ <menu_item_check label="Afficher le marquage lumineux de la sélection"
name="Show Light Radius for Selection" />
- <menu_item_check label="Afficher rayon de sélection" name="Show Selection Beam" />
+ <menu_item_check label="Afficher le faisceau de sélection" name="Show Selection Beam" />
<menu_item_separator label="-----------" name="separator2" />
<menu_item_check label="Fixer sur la grille" name="Snap to Grid" />
- <menu_item_call label="Magnétiser sur les axes XY de la grille" name="Snap Object XY to Grid" />
+ <menu_item_call label="Fixer sur les axes XY de la grille" name="Snap Object XY to Grid" />
<menu_item_call label="Utiliser la sélection pour la grille" name="Use Selection for Grid" />
- <menu_item_call label="Options de la grille…" name="Grid Options..." />
+ <menu_item_call label="Options de la grille..." name="Grid Options..." />
<menu_item_separator label="-----------" name="separator3" />
+ <menu_item_check label="Modifier les parties attachées" name="Edit Linked Parts" />
<menu_item_call label="Lier" name="Link" />
<menu_item_call label="Délier" name="Unlink" />
<menu_item_separator label="-----------" name="separator4" />
<menu_item_separator label="-----------" name="separator5" />
- <menu_item_call label="Faire le point sur la sélection" name="Focus on Selection" />
- <menu_item_call label="Zoom sur sélection" name="Zoom to Selection" />
- <menu_item_call label="Acheter objet" name="Menu Object Take" />
+ <menu_item_call label="Mise au point sur la sélection" name="Focus on Selection" />
+ <menu_item_call label="Zoom sur la sélection" name="Zoom to Selection" />
+ <menu_item_call label="Acheter l&apos;objet" name="Menu Object Take" />
<menu_item_call label="Prendre une copie" name="Take Copy" />
- <menu_item_call label="Réintégrer et enregistrer l&apos;objet dans mon inventaire"
+ <menu_item_call label="Remettre et enregistrer l&apos;objet dans mon inventaire"
name="Save Object Back to My Inventory" />
- <menu_item_call label="Réintégrer l&apos;objet dans &apos;Contenus de l&apos;objet&apos;"
+ <menu_item_call label="Remettre et enregistrer l&apos;objet dans les Contenus de l&apos;objet"
name="Save Object Back to Object Contents" />
<menu_item_separator label="-----------" name="separator6" />
<menu_item_call label="Afficher fenêtre d&apos;alertes/erreurs de script"
name="Show Script Warning/Error Window" />
<menu_item_call label="Recompiler les scripts dans la sélection"
- name="Recompile Scripts in Selection" />
+ name="Recompile Scripts in Selection">
+ <menu_item_call label="Mono" name="Mono" />
+ <menu_item_call label="LSL" name="LSL" />
+ </menu_item_call>
<menu_item_call label="Réinitialiser les scripts dans la sélection"
name="Reset Scripts in Selection" />
<menu_item_call label="Activer les scripts dans la sélection"
@@ -208,23 +240,38 @@
</menu>
<menu label="Aide" name="Help">
<tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~" />
- <menu_item_call label="Aide sur Second Life" name="Second Life Help" />
+ <menu_item_call label="Aide Second Life" name="Second Life Help" />
<menu_item_call label="Base de connaissances…" name="Knowledge Base..." />
<menu_item_call label="Aide en ligne" name="Live Help..." />
+ <menu_item_call label="Didacticiel" name="Tutorial" />
<menu_item_separator label="-----------" name="separator" />
<menu_item_call label="Blog officiel des Linden..." name="Official Linden Blog..." />
<menu_item_separator label="-----------" name="separator2" />
- <menu_item_call label="Manuel de scripting..." name="Scripting Guide..." />
+ <menu_item_call label="Guide de scripting..." name="Scripting Guide..." />
<menu_item_call label="Scripting Wiki..." name="Scripting Wiki..." />
+ <menu_item_call label="Portail de scripting..." name="Scripting Portal..." />
<menu_item_separator label="-----------" name="separator3" />
<menu_item_call label="Message du jour..." name="Message of the Day..." />
<menu_item_separator label="-----------" name="separator4" />
- <menu_item_call label="Signaler un abus" name="Report Abuse..." />
- <menu_item_call label="Agressions physiques" name="Bumps, Pushes &amp;amp; Hits..." />
+ <menu_item_call label="Signaler une infraction..." name="Report Abuse..." />
+ <menu_item_call label="Collisions, coups et bousculades…"
+ name="Bumps, Pushes &amp;amp; Hits..." />
<menu_item_separator label="-----------" name="separator5" />
<menu_item_call label="Signaler un bug..." name="Report Bug..." />
<menu_item_call label="Notes de version…" name="Release Notes..." />
<menu_item_separator label="-----------" name="separator6" />
+ <menu_item_call label="Calcul du lag" name="Lag Meter" />
+ <menu_item_separator label="-----------" name="separator7" />
+ <menu label="Signaler des bugs" name="Bug Reporting">
+ <menu_item_call label="Suivi des problèmes..." name="Public Issue Tracker..." />
+ <menu_item_call label="Aide au suivi des problèmes..." name="Publc Issue Tracker Help..." />
+ <menu_item_separator label="-----------" name="separator7" />
+ <menu_item_call label="Comment signaler des bugs ?" name="Bug Reporing 101..." />
+ <menu_item_call label="Problèmes de sécurité..." name="Security Issues..." />
+ <menu_item_call label="Wiki Assurance Qualité…" name="QA Wiki..." />
+ <menu_item_separator label="-----------" name="separator9" />
+ <menu_item_call label="Signaler un bug..." name="Report Bug..." />
+ </menu>
<menu_item_call label="A propos de Second Life..." name="About Second Life..." />
</menu>
</menu_bar>
diff --git a/indra/newview/skins/default/xui/fr/mime_types.xml b/indra/newview/skins/default/xui/fr/mime_types.xml
new file mode 100644
index 0000000000..3e5c96d148
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/mime_types.xml
@@ -0,0 +1,230 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<mimetypes name="default">
+ <widgetset name="web">
+ <label name="web_label">
+ Contenu web
+ </label>
+ <tooltip name="web_tooltip">
+ Il y a du contenu web à cet endroit
+ </tooltip>
+ <playtip name="web_playtip">
+ Afficher le contenu web
+ </playtip>
+ </widgetset>
+ <widgetset name="movie">
+ <label name="movie_label">
+ Film
+ </label>
+ <tooltip name="movie_tooltip">
+ Vous pouvez jouer un film ici
+ </tooltip>
+ <playtip name="movie_playtip">
+ Jouer le film
+ </playtip>
+ </widgetset>
+ <widgetset name="none">
+ <label name="none_label">
+ Aucun contenu
+ </label>
+ <tooltip name="none_tooltip">
+ Aucun média ici
+ </tooltip>
+ </widgetset>
+ <widgetset name="image">
+ <label name="image_label">
+ Image
+ </label>
+ <tooltip name="image_tooltip">
+ Il y a une image ici
+ </tooltip>
+ <playtip name="image_playtip">
+ Afficher l&apos;image qui se trouve ici
+ </playtip>
+ </widgetset>
+ <widgetset name="audio">
+ <label name="audio_label">
+ Audio
+ </label>
+ <tooltip name="audio_tooltip">
+ Il y a du contenu audio ici
+ </tooltip>
+ <playtip name="audio_playtip">
+ Jouer le contenu audio qui se trouve ici
+ </playtip>
+ </widgetset>
+ <scheme name="rtsp">
+ <label name="rtsp_label">
+ Flux en temps réel
+ </label>
+ </scheme>
+ <mimetype name="blank">
+ <label name="blank_label">
+ - Aucun -
+ </label>
+ </mimetype>
+ <mimetype name="none/none">
+ <label name="none/none_label">
+ - Aucun -
+ </label>
+ </mimetype>
+ <mimetype name="audio/*">
+ <label name="audio2_label">
+ Audio
+ </label>
+ </mimetype>
+ <mimetype name="video/*">
+ <label name="video2_label">
+ Vidéo
+ </label>
+ </mimetype>
+ <mimetype name="image/*">
+ <label name="image2_label">
+ Image
+ </label>
+ </mimetype>
+ <mimetype name="video/vnd.secondlife.qt.legacy">
+ <label name="vnd.secondlife.qt.legacy_label">
+ Film (Quicktime)
+ </label>
+ </mimetype>
+ <mimetype name="application/javascript">
+ <label name="application/javascript_label">
+ Javascript
+ </label>
+ </mimetype>
+ <mimetype name="application/ogg">
+ <label name="application/ogg_label">
+ Audio/Vidéo Ogg
+ </label>
+ </mimetype>
+ <mimetype name="application/pdf">
+ <label name="application/pdf_label">
+ Document PDF
+ </label>
+ </mimetype>
+ <mimetype name="application/postscript">
+ <label name="application/postscript_label">
+ Document Postscript
+ </label>
+ </mimetype>
+ <mimetype name="application/rtf">
+ <label name="application/rtf_label">
+ Format RTF
+ </label>
+ </mimetype>
+ <mimetype name="application/smil">
+ <label name="application/smil_label">
+ SMIL (Synchronized Multimedia Integration Language)
+ </label>
+ </mimetype>
+ <mimetype name="application/xhtml+xml">
+ <label name="application/xhtml+xml_label">
+ Page web (XHTML)
+ </label>
+ </mimetype>
+ <mimetype name="application/x-director">
+ <label name="application/x-director_label">
+ Macromedia Director
+ </label>
+ </mimetype>
+ <mimetype name="application/x-shockwave-flash">
+ <label name="application/x-shockwave-flash_label">
+ Flash
+ </label>
+ </mimetype>
+ <mimetype name="audio/mid">
+ <label name="audio/mid_label">
+ Audio (MIDI)
+ </label>
+ </mimetype>
+ <mimetype name="audio/mpeg">
+ <label name="audio/mpeg_label">
+ Audio (MP3)
+ </label>
+ </mimetype>
+ <mimetype name="audio/x-aiff">
+ <label name="audio/x-aiff_label">
+ Audio (AIFF)
+ </label>
+ </mimetype>
+ <mimetype name="audio/x-wav">
+ <label name="audio/x-wav_label">
+ Audio (WAV)
+ </label>
+ </mimetype>
+ <mimetype name="image/bmp">
+ <label name="image/bmp_label">
+ Image (BMP)
+ </label>
+ </mimetype>
+ <mimetype name="image/gif">
+ <label name="image/gif_label">
+ Image (GIF)
+ </label>
+ </mimetype>
+ <mimetype name="image/jpeg">
+ <label name="image/jpeg_label">
+ Image (JPEG)
+ </label>
+ </mimetype>
+ <mimetype name="image/png">
+ <label name="image/png_label">
+ Image (PNG)
+ </label>
+ </mimetype>
+ <mimetype name="image/svg+xml">
+ <label name="image/svg+xml_label">
+ Image (SVG)
+ </label>
+ </mimetype>
+ <mimetype name="image/tiff">
+ <label name="image/tiff_label">
+ Image (TIFF)
+ </label>
+ </mimetype>
+ <mimetype name="text/html">
+ <label name="text/html_label">
+ Page web
+ </label>
+ </mimetype>
+ <mimetype name="text/plain">
+ <label name="text/plain_label">
+ Texte
+ </label>
+ </mimetype>
+ <mimetype name="text/xml">
+ <label name="text/xml_label">
+ XML
+ </label>
+ </mimetype>
+ <mimetype name="video/mpeg">
+ <label name="video/mpeg_label">
+ Film (MPEG)
+ </label>
+ </mimetype>
+ <mimetype name="video/mp4">
+ <label name="video/mp4_label">
+ Film (MP4)
+ </label>
+ </mimetype>
+ <mimetype name="video/quicktime">
+ <label name="video/quicktime_label">
+ Film (Quicktime)
+ </label>
+ </mimetype>
+ <mimetype name="video/x-ms-asf">
+ <label name="video/x-ms-asf_label">
+ Film (Windows Media ASF)
+ </label>
+ </mimetype>
+ <mimetype name="video/x-ms-wmv">
+ <label name="video/x-ms-wmv_label">
+ Film (Windows Media WMV)
+ </label>
+ </mimetype>
+ <mimetype name="video/x-msvideo">
+ <label name="video/x-msvideo_label">
+ Film (AVI)
+ </label>
+ </mimetype>
+</mimetypes>
diff --git a/indra/newview/skins/default/xui/fr/panel_audio_device.xml b/indra/newview/skins/default/xui/fr/panel_audio_device.xml
new file mode 100644
index 0000000000..8663fe1947
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/panel_audio_device.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<panel name="device_settings">
+ <text name="Audio Devices">
+ Matériel audio
+ </text>
+ <text name="Input device (microphone):">
+ Périphérique d&apos;entrée (micro) :
+ </text>
+ <text name="Output device (speakers):">
+ Périphérique de sortie (speakers) :
+ </text>
+ <text name="Input level:">
+ Volume d&apos;entrée
+ </text>
+ <text_editor name="voice_intro_text1">
+ Pour que les autres résidents vous entendent plus ou moins fort, utilisez le curseur. Pour tester le volume d&apos;entrée, il vous suffit de parler dans le micro.
+ </text_editor>
+ <volume_slider name="mic_volume_slider"
+ tool_tip="Réglez le volume à l&apos;aide de ce curseur." />
+ <text name="wait_text">
+ Veuillez patienter
+ </text>
+ <string name="default_text">
+ Défaut
+ </string>
+</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_friends.xml b/indra/newview/skins/default/xui/fr/panel_friends.xml
new file mode 100644
index 0000000000..7c08fb40e0
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/panel_friends.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<panel name="friends">
+ <string name="Multiple">
+ Amis multiples...
+ </string>
+ <scroll_list name="friend_list"
+ tool_tip="Pour sélectionner plusieurs amis, cliquez en maintenant la touche Maj ou Ctrl appuyée">
+ <column name="icon_online_status" tool_tip="Statut en ligne" />
+ <column label="Nom" name="friend_name" tool_tip="Nom" />
+ <column name="icon_visible_online" tool_tip="Vos amis voient si vous êtes en ligne" />
+ <column name="icon_visible_map" tool_tip="Vos amis vous situent sur la carte" />
+ <column name="icon_edit_mine"
+ tool_tip="Vos amis peuvent modifier, supprimer ou prendre des objets" />
+ <column name="icon_edit_theirs" tool_tip="Vous pouvez modifier les objets de cet ami" />
+ </scroll_list>
+ <button label="IM/Appel" name="im_btn"
+ tool_tip="Ouvrir une session de messagerie instantanée" />
+ <button label="Profil" name="profile_btn"
+ tool_tip="Afficher une photo, vos groupes et autres infos" />
+ <button label="Téléporter..." name="offer_teleport_btn"
+ tool_tip="Proposez à cet ami d&apos;être téléporté là où vous êtes" />
+ <button label="Payer..." name="pay_btn"
+ tool_tip="Donnez des dollars Linden ($L) à cet ami" />
+ <button label="Supprimer..." name="remove_btn"
+ tool_tip="Supprimer cette personne de votre liste d&apos;amis" />
+ <button label="Ajouter..." name="add_btn"
+ tool_tip="Demander à un résident de devenir votre ami(e)" />
+</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_group_general.xml b/indra/newview/skins/default/xui/fr/panel_group_general.xml
index a98419f085..b46a45291a 100644
--- a/indra/newview/skins/default/xui/fr/panel_group_general.xml
+++ b/indra/newview/skins/default/xui/fr/panel_group_general.xml
@@ -7,8 +7,11 @@ les Préférences générales du groupe et les options des membres.
Passez votre pointeur sur les options pour plus d&apos;aide.
</text>
+ <string name="group_info_unchanged">
+ Les infos générales du groupe ont changé.
+ </string>
<button label="?" label_selected="?" name="help_button" />
- <line_editor name="group_name_editor">
+ <line_editor label="Saisissez le nom du groupe ici" name="group_name_editor">
Entrez le nom de votre nouveau groupe ici
</line_editor>
<text name="group_name">
@@ -37,11 +40,20 @@ Passez votre pointeur sur les options pour plus d&apos;aide.
<text>
(Propriétaires affichés en gras)
</text>
+ <text name="text_owners_and_visible_members">
+ Propriétaires et membres visibles
+ </text>
+ <text name="text_owners_are_shown_in_bold">
+ (Les propriétaires apparaissent en gras)
+ </text>
<name_list name="visible_members">
<column label="Member Name" name="name" />
<column label="Title" name="title" />
<column label="Last Login" name="online" />
</name_list>
+ <text name="text_group_preferences">
+ Préférences du groupe
+ </text>
<text name="incomplete_member_data_str">
Accès aux données du membre
</text>
@@ -65,6 +77,18 @@ Etes-vous vraiment, VRAIMENT sûr(e) de vouloir dépenser L$100 pour créer ce g
tool_tip="New members must pay this fee to join the group when Enrollment Fee is checked." />
<check_box label="Adulte" name="mature"
tool_tip="Cochez si les informations de votre groupe sont à caractère adulte." />
+ <combo_box name="group_mature_check"
+ tool_tip="Indique si les informations de votre groupe sont considérées comme étant réservées aux adultes.">
+ <combo_item name="select_mature">
+ - Sélectionner Pour adultes -
+ </combo_item>
+ <combo_item name="mature">
+ Contenu pour adultes
+ </combo_item>
+ <combo_item name="not_mature">
+ Contenu non réservé aux adultes
+ </combo_item>
+ </combo_box>
<panel name="title_container">
<text name="active_title_label">
Mon Titre actif
@@ -74,5 +98,7 @@ Etes-vous vraiment, VRAIMENT sûr(e) de vouloir dépenser L$100 pour créer ce g
</panel>
<check_box label="Recevoir les Notifications" name="receive_notices"
tool_tip="Sets whether you want to receive Notices from this group. Uncheck this box if this group is spamming you." />
+ <check_box label="Montrer groupe dans Profil" name="list_groups_in_profile"
+ tool_tip="Indique si vous voulez que ce groupe apparaisse dans votre profil" />
</panel>
</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_group_invite.xml b/indra/newview/skins/default/xui/fr/panel_group_invite.xml
index 54d0d3be58..041fc8a250 100644
--- a/indra/newview/skins/default/xui/fr/panel_group_invite.xml
+++ b/indra/newview/skins/default/xui/fr/panel_group_invite.xml
@@ -5,6 +5,11 @@
à inviter dans votre groupe. Cliquez sur &apos;Ouvrir
le Sélecteur de Personnes&apos; pour commencer.
</text>
+ <text name="help_text">
+ Vous pouvez inviter plusieurs résidents.
+Cliquez sur Sélecteur
+de personnes pour commencer.
+ </text>
<button label="Ouvrir le Sélecteur de Personnes" name="add_button" tool_tip="" />
<name_list name="invitee_list"
tool_tip="Hold the Ctrl key and click resident names to multi-select." />
@@ -13,8 +18,17 @@ le Sélecteur de Personnes&apos; pour commencer.
<text>
Choisissez le Rôle à leur attribuer :
</text>
+ <text name="role_text">
+ Assignez-leur un rôle :
+ </text>
<combo_box name="role_name"
tool_tip="Choose from the list of Roles you are allowed to assign members to." />
<button label="Envoyer des invitations" name="ok_button" />
<button label="Annuler" name="cancel_button" />
+ <string name="confirm_invite_owner_str">
+ Etes-vous certain de vouloir inviter un/de nouveau(x) propriétaire(s) ? Ce choix est permanent !
+ </string>
+ <string name="loading">
+ (en cours de chargement...)
+ </string>
</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_group_land_money.xml b/indra/newview/skins/default/xui/fr/panel_group_land_money.xml
index b205c1ed87..83b1965335 100644
--- a/indra/newview/skins/default/xui/fr/panel_group_land_money.xml
+++ b/indra/newview/skins/default/xui/fr/panel_group_land_money.xml
@@ -14,6 +14,9 @@ fournissent des informations sur les finances du groupe.
<text name="cant_view_group_accounting_text">
Vous n&apos;êtes pas autorisé(e) à voir les informations comptables du groupe.
</text>
+ <string name="loading_txt">
+ Chargement en cours...
+ </string>
<text name="group_land_heading">
Terrain appartenant à des Groupes
</text>
@@ -48,6 +51,9 @@ fournissent des informations sur les finances du groupe.
<text name="your_contribution_max_value_append">
mètres carrés
</text>
+ <string name="land_contrib_error">
+ Impossible de définir votre don de terre.
+ </string>
<text name="your_contribution_max_value">
(en attente)
</text>
diff --git a/indra/newview/skins/default/xui/fr/panel_group_notices.xml b/indra/newview/skins/default/xui/fr/panel_group_notices.xml
index a2661556c5..b9c0b4ebc1 100644
--- a/indra/newview/skins/default/xui/fr/panel_group_notices.xml
+++ b/indra/newview/skins/default/xui/fr/panel_group_notices.xml
@@ -56,6 +56,8 @@ et ne peuvent être des dossiers.
name="send_notice" />
<panel name="drop_target2"
tool_tip="Drag an inventory item onto the message box to send it with the notice. You must have permission to copy and transfer the object to send it with the notice." />
+ <panel name="drop_target"
+ tool_tip="Pour joindre un objet de l&apos;inventaire à la note, faites-le glisser dans la boîte de message. Pour envoyer l&apos;objet avec la note, vous devez avoir la permission de le copier et de le transférer." />
</panel>
<panel label="Voir notification passée" name="panel_view_past_notice">
<text name="lbl">
diff --git a/indra/newview/skins/default/xui/fr/panel_group_roles.xml b/indra/newview/skins/default/xui/fr/panel_group_roles.xml
index 351617ad4a..59bcd224c9 100644
--- a/indra/newview/skins/default/xui/fr/panel_group_roles.xml
+++ b/indra/newview/skins/default/xui/fr/panel_group_roles.xml
@@ -77,6 +77,9 @@ dont les Membres peuvent disposer. Les Membres peuvent être affectés
à un ou plusieurs Rôles. Un groupe peut comprendre 10 Rôles,
y compris les Rôles &apos;Tout le monde&apos; et &apos;Propriétaire&apos;.
</text>
+ <string name="cant_delete_role">
+ Les rôles Tous et Propriétaires sont spéciaux et ne peuvent pas être supprimés.
+ </string>
</panel>
<panel label="Facultés" name="actions_sub_tab">
<button label="Rechercher" name="search_button" />
diff --git a/indra/newview/skins/default/xui/fr/panel_groups.xml b/indra/newview/skins/default/xui/fr/panel_groups.xml
new file mode 100644
index 0000000000..ffada5feec
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/panel_groups.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<panel name="groups">
+ <text name="groupdesc">
+ Le groupe dans lequel vous êtes actif en ce moment est en gras.
+ </text>
+ <text name="groupcount">
+ Vous appartenez à [COUNT] groupes (sur [MAX] maximum).
+ </text>
+ <button label="IM/Appel" name="IM"
+ tool_tip="Ouvrir une session de messagerie instantanée" />
+ <button label="Infos" name="Info" />
+ <button label="Activer" name="Activate" />
+ <button label="Quitter" name="Leave" />
+ <button label="Créer..." name="Create" />
+ <button label="Rechercher..." name="Search..." />
+</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_login.xml b/indra/newview/skins/default/xui/fr/panel_login.xml
index 6081b4c299..01f61e5352 100644
--- a/indra/newview/skins/default/xui/fr/panel_login.xml
+++ b/indra/newview/skins/default/xui/fr/panel_login.xml
@@ -1,39 +1,57 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel name="panel_login">
+ <string name="real_url">
+ http://secondlife.com/app/login/
+ </string>
+ <string name="forgot_password_url">
+ http://secondlife.com/account/request.php
+ </string>
<text name="first_name_text">
- Prénom :
+ Prénom :
</text>
<text name="last_name_text">
- Nom :
+ Nom :
</text>
<text name="password_text">
- Mot de passe :
+ Mot de passe :
</text>
<text name="start_location_text">
- Lieu d&apos;arrivée :
+ Lieu de départ :
</text>
<combo_box name="start_location_combo">
<combo_item name="MyHome">
Mon domicile
</combo_item>
<combo_item name="MyLastLocation">
- Dernier lieu visité
+ Mon dernier emplacement
</combo_item>
<combo_item name="&lt;Typeregionname&gt;">
&lt;Choisir région&gt;
</combo_item>
+ <combo_item name="Typeregionname">
+ &lt;Saisissez le nom de la région&gt;
+ </combo_item>
</combo_box>
- <check_box label="Mémoriser" name="remember_check" />
+ <check_box label="Enregistrer le mot de passe" name="remember_check" />
<text name="full_screen_text">
Le plein écran sera activé après identification.
</text>
<button label="Nouveau Compte..." label_selected="Nouveau Compte..."
name="new_account_btn" />
- <button label="Se connecter" label_selected="Se connecter" name="connect_btn" />
+ <button label="Me connecter" label_selected="Me connecter" name="connect_btn" />
<button label="Préférences..." label_selected="Préférences..."
name="preferences_btn" />
<button label="Quitter" label_selected="Quitter" name="quit_btn" />
<text name="version_text">
1.23.4 (5)
</text>
+ <text name="create_new_account_text">
+ Créer un compte
+ </text>
+ <text name="forgot_password_text">
+ Nom ou mot de passe oublié ?
+ </text>
+ <text name="channel_text">
+ [CHANNEL] [VERSION]
+ </text>
</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml b/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml
index be0205135a..db5beb2b7d 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml
@@ -1,31 +1,35 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel label="Chat" name="chat">
+<panel label="Chat écrit" name="chat">
<text type="string" length="1" name="text_box">
- Taille de police du chat :
+ Taille de la police du chat :
</text>
<radio_group name="chat font size">
<radio_item type="string" length="1" name="radio">
Petit
</radio_item>
<radio_item type="string" length="1" name="radio2">
- Moyen(ne)
+ Moyen
</radio_item>
<radio_item type="string" length="1" name="radio3">
Grand
</radio_item>
</radio_group>
<text type="string" length="1" name="text_box2">
- Couleur du chat :
+ Couleur du chat :
</text>
+ <color_swatch label="Vous" name="user" />
+ <color_swatch label="Les autres" name="agent" />
+ <color_swatch label="IM" name="im" />
<color_swatch label="Système" name="system" />
<color_swatch label="Avatars" name="users" />
<color_swatch label="Objets" name="objects" />
+ <color_swatch label="Propriétaire" name="owner" />
<color_swatch label="Bulle" name="background" />
- <color_swatch label="URLs" name="links" />
+ <color_swatch label="URL" name="links" />
<text type="string" length="1" name="text_box3">
- Console de chat :
+ Console du chat :
</text>
- <spinner label="Estomper après" name="fade_chat_time" />
+ <spinner label="Effacer le texte après" name="fade_chat_time" />
<text type="string" length="1" name="text_box4">
(secondes)
</text>
@@ -34,25 +38,29 @@
</text>
<slider label="Opacité" name="console_opacity" />
<text type="string" length="1" name="text_box6">
- Options de Chat :
+ Options du chat :
</text>
- <check_box label="Chat en plein écran (au prochain redémarrage)"
+ <check_box label="utiliser la largeur du plein écran (redémarrage requis)"
name="chat_full_width_check" />
- <check_box label="Refermer le chat à l&apos;aide de la touche &apos;envoi&apos;"
+ <check_box label="Fermer le chat après avoir appuyé sur Entrée"
name="close_chat_on_return_check" />
- <check_box label="Les touches directionnelles déplacent l&apos;avatar pendant le chat"
+ <check_box
+ label="Les touches de direction font toujours bouger l&apos;avatar pendant le chat"
name="arrow_keys_move_avatar_check" />
- <check_box label="Afficher l&apos;heure d&apos;envoi dans le chat"
+ <check_box label="Afficher les marques temporelles dans le chat local"
name="show_timestamps_check" />
+ <check_box label="Montrer lorsque vous écrivez pendant la discussion"
+ name="play_typing_animation" />
<text type="string" length="1" name="text_box7">
- Bulles de Chat :
+ Bulles de chat  :
</text>
<check_box label="Afficher les bulles de chat" name="bubble_text_chat" />
<slider label="Opacité" name="bubble_chat_opacity" />
<text type="string" length="1" name="text_box8">
- Erreurs :
+ Erreurs de script :
</text>
- <check_box label="Afficher les erreurs et alertes de scripts dans le chat"
+ <check_box
+ label="Afficher les erreurs de script et avertissements comme un chat ordinaire"
name="script_errors_as_chat" />
- <color_swatch label="Couleur" name="script_error" />
+ <color_swatch label="Erreurs" name="script_error" />
</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_general.xml b/indra/newview/skins/default/xui/fr/panel_preferences_general.xml
index acf89cd867..b0d9883c1e 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_general.xml
@@ -1,41 +1,73 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel label="Général" name="general_panel">
- <check_box label="Afficher Lieu d&apos;arrivée sur l&apos;écran de connexion"
+ <combo_box name="location_combobox">
+ <combo_item name="MyHome">
+ Mon domicile
+ </combo_item>
+ <combo_item name="MyLastLocation">
+ Mon dernier emplacement
+ </combo_item>
+ </combo_box>
+ <check_box label="Afficher le lieu de départ sur l&apos;écran de connexion"
name="show_location_checkbox" />
+ <combo_box name="fade_out_combobox">
+ <combo_item name="Never">
+ Jamais
+ </combo_item>
+ <combo_item name="Show Temporarily">
+ Afficher temporairement
+ </combo_item>
+ <combo_item name="Always">
+ Toujours
+ </combo_item>
+ </combo_box>
<check_box label="Masquer mon nom sur mon écran" name="show_my_name_checkbox" />
- <check_box label="Masquer mon titre de groupe" name="show_my_title_checkbox" />
- <check_box label="Petits noms d&apos;avatar" name="small_avatar_names_checkbox" />
+ <text name="group_titles_textbox">
+ Titres au sein du groupe :
+ </text>
+ <check_box label="Masquer tous les titres au sein du groupe"
+ name="show_all_title_checkbox" />
+ <check_box label="Masquer mon titre au sein du groupe" name="show_my_title_checkbox" />
+ <check_box label="Nom de l&apos;avatar en petit" name="small_avatar_names_checkbox" />
<check_box label="M&apos;avertir lorsque mes amis se connectent"
name="friends_online_notify_checkbox" />
- <check_box label="Pivoter la mini-carte" name="rotate_mini_map_checkbox" />
- <check_box label="M&apos;avertir lorsque des L$ sont dépensés ou reçus"
+ <text name="UI Size:">
+ Taille de l&apos;interface :
+ </text>
+ <check_box label="Utiliser une échelle indépendante de la résolution"
+ name="ui_auto_scale" />
+ <check_box label="Faire pivoter la mini-carte" name="rotate_mini_map_checkbox" />
+ <check_box label="M&apos;avertir lorsque je dépense ou reçois des dollars Linden ($L)"
name="notify_money_change_checkbox" />
<check_box label="Détecter carte graphique au prochain démarrage"
name="probe_hardware_checkbox"
tool_tip="Second Life configure automatiquement certains réglages de la carte graphique d&apos;après votre configuration matérielle. Nous vous recommandons d&apos;effectuer la détection à chaque nouvelle installation de matériel." />
- <check_box label="Utiliser le sélecteur de couleurs système"
+ <check_box label="Utiliser le sélecteur de couleur par défaut"
name="use_system_color_picker_checkbox"
- tool_tip="Utiliser le sélecteur de couleurs système plutôt que celui de Second Life." />
+ tool_tip="Utiliser le sélecteur de couleur par défaut au lieu de celui intégré à Second Life." />
+ <check_box label="Afficher la boîte de recherche en haut à droite de l&apos;écran"
+ name="show_search_panel"
+ tool_tip="Affiche la boîte de recherche incorporée." />
<text type="string" length="1" name="start_location_textbox">
- Lieu d&apos;arrivée :
+ Lieu de départ :
</text>
<text type="string" length="1" name="show_names_textbox">
- Afficher les noms :
+ Afficher les noms :
</text>
<text type="string" length="1" name="effects_color_textbox">
- Couleurs de mes effets :
+ Couleur de mes effets :
</text>
<text type="string" length="1" name="seconds_textbox">
secondes
</text>
<text type="string" length="1" name="crash_report_textbox">
- Rapports d&apos;erreur :
+ Rapports de crash :
</text>
<text type="string" length="1" name="language_textbox">
- Langue :
+ Langue :
</text>
<text type="string" length="1" name="language_textbox2">
- (Nécessite un redémarrage)
+ (nécessite un redémarrage pour prendre effet)
</text>
<radio_group name="fade_out_radio">
<radio_item type="string" length="1" name="Never">
@@ -50,13 +82,13 @@
</radio_group>
<color_swatch label="" name="effect_color_swatch"
tool_tip="Cliquer pour ouvrir le sélecteur de couleurs" />
- <spinner label="Limite d&apos;inactivité :" name="afk_timeout_spinner" />
+ <spinner label="Montrer comme absent(e) après :" name="afk_timeout_spinner" />
<text name="region_name_prompt">
- &lt;Choisir région&gt;
+ &lt;Saisissez le nom de la région&gt;
</text>
<combo_box name="crash_behavior_combobox">
<combo_item type="string" length="1" name="Askbeforesending">
- Demander
+ Demander avant d&apos;envoyer
</combo_item>
<combo_item type="string" length="1" name="Alwayssend">
Toujours envoyer
@@ -66,20 +98,34 @@
</combo_item>
</combo_box>
<combo_box name="language_combobox">
+ <combo_item name="System Default Language">
+ Choix par défaut
+ </combo_item>
<combo_item type="string" length="1" name="English">
Anglais
</combo_item>
<combo_item type="string" length="1" name="Deutsch(German)">
- Deutsch (German) - Beta
+ Deutsch (Allemand) - Bêta
+ </combo_item>
+ <combo_item name="French">
+ Français - Bêta
</combo_item>
<combo_item type="string" length="1" name="(Japanese)">
- 日本語 (Japanese) - Beta
+ 日本語 (Japonais) - Bêta
</combo_item>
<combo_item type="string" length="1" name="(Korean)">
- 한국어 (Korean) - Beta
+ 한국어 (Coréen) - Bêta
</combo_item>
<combo_item type="string" length="1" name="Chinese">
- Chinois - Beta
+ 汉语/漢語 (Chinois) - Bêta
+ </combo_item>
+ <combo_item name="Portugese">
+ Portugués (Portugais) - Bêta
+ </combo_item>
+ <combo_item name="Spanish">
+ Español (Espagnol) - Bêta
</combo_item>
</combo_box>
+ <check_box label="Partager la langue avec les objets" name="language_is_public"
+ tool_tip="Cette option permet de faire connaître aux objets du Monde votre langue favorite." />
</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml
index da6114115d..67eed25efa 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml
@@ -1,14 +1,47 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel label="Graphiques" name="Display panel">
- <combo_box name="aspect_ratio">
+ <button label="?" name="GraphicsPreferencesHelpButton" />
+ <text_editor bottom="-56" height="40" name="FullScreenInfo" width="480">
+ Si cette option n&apos;est pas cochée, le visualisateur prendra tout l&apos;écran lorsque vous êtes connecté.
+ </text_editor>
+ <text name="WindowSizeLabel">
+ Taille de la fenêtre :
+ </text>
+ <combo_box name="windowsize combo">
+ <combo_item name="640x480">
+ 640 x 480
+ </combo_item>
+ <combo_item name="800x600">
+ 800 x 600
+ </combo_item>
+ <combo_item name="720x480">
+ 720 x 480 (NTSC)
+ </combo_item>
+ <combo_item name="768x576">
+ 768 x 576 (PAL)
+ </combo_item>
+ <combo_item name="1024x768">
+ 1024 x 768
+ </combo_item>
+ </combo_box>
+ <text name="DisplayResLabel">
+ Résolution de l&apos;affichage :
+ </text>
+ <text name="AspectRatioLabel1" tool_tip="largeur/hauteur">
+ Rapport hauteur/largeur :
+ </text>
+ <combo_box name="aspect_ratio" tool_tip="largeur/hauteur">
<combo_item type="string" length="1" name="4:3(StandardCRT)">
4:3 (Standard CRT)
</combo_item>
<combo_item type="string" length="1" name="5:4(1280x1024LCD)">
- 5:4 (1280x1024 LCD)
+ 5:4 (1280 x 1024 LCD)
+ </combo_item>
+ <combo_item name="8:5(Widescreen)">
+ 8 : 5 (écran large)
</combo_item>
<combo_item type="string" length="1" name="16:9(Widescreen)">
- 16/9
+ 16:9 (Plein écran)
</combo_item>
</combo_box>
<text type="string" length="1" name="text">
@@ -29,11 +62,134 @@
<text type="string" length="1" name="text2">
Options d&apos;affichage :
</text>
- <check_box label="Exécuter dans une fenêtre" name="windowed mode" />
- <check_box label="Détecter automatiquement" name="aspect_auto_detect" />
+ <check_box label="Lancer Second Life dans une fenêtre" name="windowed mode" />
+ <check_box label="Auto-détection du ratio" name="aspect_auto_detect" />
<check_box label="Utiliser échelle de résolution indépendante" name="ui_auto_scale" />
<check_box label="Montrer l&apos;avatar en mode Mouselook" name="avfp" />
<spinner label="Draw Distance :" name="draw_distance" />
+ <text name="HigherText">
+ Qualité et
+ </text>
+ <text name="QualityText">
+ Performance :
+ </text>
+ <text name="FasterText">
+ Plus rapide
+ </text>
+ <text name="ShadersPrefText">
+ Faible
+ </text>
+ <text name="ShadersPrefText2">
+ Moyen
+ </text>
+ <text name="ShadersPrefText3">
+ Elevé
+ </text>
+ <text name="ShadersPrefText4">
+ Ultra
+ </text>
+ <text name="HigherText2">
+ Plus élevé
+ </text>
+ <text name="QualityText2">
+ Qualité
+ </text>
+ <check_box label="Personnaliser" name="CustomSettings" />
+ <text name="ShadersText">
+ Shaders :
+ </text>
+ <check_box label="Placage de relief et brillance" name="BumpShiny" />
+ <check_box label="Shaders de base" name="BasicShaders"
+ tool_tip="Désactiver cette option peut empêcher certains drivers de cartes graphiques de planter." />
+ <check_box label="Shaders atmosphériques" name="WindLightUseAtmosShaders" />
+ <check_box label="Reflets de l&apos;eau" name="Reflections" />
+ <text name="ReflectionDetailText">
+ Détails des reflets :
+ </text>
+ <radio_group name="ReflectionDetailRadio">
+ <radio_item name="0">
+ Terrain et Arbres
+ </radio_item>
+ <radio_item name="1">
+ Tous les objets statiques
+ </radio_item>
+ <radio_item name="2">
+ Tous les objets et avatars
+ </radio_item>
+ <radio_item name="3">
+ Tout
+ </radio_item>
+ </radio_group>
+ <text name="AvatarRenderingText">
+ Rendu de l&apos;avatar :
+ </text>
+ <check_box label="Avatars éloignés en 2D" name="AvatarImpostors" />
+ <check_box label="Rendu matériel des skins" name="AvatarVertexProgram" />
+ <check_box label="Habit de l&apos;avatar" name="AvatarCloth" />
+ <text name="DrawDistanceMeterText1">
+ m
+ </text>
+ <text name="DrawDistanceMeterText2">
+ m
+ </text>
+ <slider label="Distance d&apos;affichage :" name="DrawDistance" />
+ <slider label="Nombre de particules max. :" name="MaxParticleCount" />
+ <slider label="Qualité post-traitement :" name="RenderPostProcess" />
+ <text name="MeshDetailText">
+ Détails du maillage :
+ </text>
+ <slider label=" Objets :" name="ObjectMeshDetail" />
+ <slider label=" Flexiprims :" name="FlexibleMeshDetail" />
+ <slider label=" Arbres :" name="TreeMeshDetail" />
+ <slider label=" Avatars :" name="AvatarMeshDetail" />
+ <slider label=" Terrain :" name="TerrainMeshDetail" />
+ <slider label=" Ciel :" name="SkyMeshDetail" />
+ <text name="PostProcessText">
+ Faible
+ </text>
+ <text name="ObjectMeshDetailText">
+ Faible
+ </text>
+ <text name="FlexibleMeshDetailText">
+ Faible
+ </text>
+ <text name="TreeMeshDetailText">
+ Faible
+ </text>
+ <text name="AvatarMeshDetailText">
+ Faible
+ </text>
+ <text name="TerrainMeshDetailText">
+ Faible
+ </text>
+ <text name="SkyMeshDetailText">
+ Faible
+ </text>
+ <text name="LightingDetailText">
+ Détails de la lumière :
+ </text>
+ <radio_group name="LightingDetailRadio">
+ <radio_item name="SunMoon">
+ Soleil et lune uniquement
+ </radio_item>
+ <radio_item name="LocalLights">
+ Lumières à proximité
+ </radio_item>
+ </radio_group>
+ <text name="TerrainDetailText">
+ Détails du terrain :
+ </text>
+ <radio_group name="TerrainDetailRadio">
+ <radio_item name="0">
+ Faible
+ </radio_item>
+ <radio_item name="2">
+ Elevé
+ </radio_item>
+ </radio_group>
+ <button label="Paramètres recommandés" name="Defaults" />
+ <button label="Configuration du matériel" label_selected="Configuration du matériel"
+ name="GraphicsHardwareButton" />
<text name="resolution_format">
[RES_X] x [RES_Y]
</text>
diff --git a/indra/newview/skins/default/xui/fr/panel_region_debug.xml b/indra/newview/skins/default/xui/fr/panel_region_debug.xml
index 6d989453b7..46b6d09398 100644
--- a/indra/newview/skins/default/xui/fr/panel_region_debug.xml
+++ b/indra/newview/skins/default/xui/fr/panel_region_debug.xml
@@ -16,12 +16,24 @@
tool_tip="Désactiver toutes physiques dans cette région" />
<button label="?" name="disable_physics_help" />
<button label="Appliquer" name="apply_btn" />
+ <line_editor name="target_avatar_name">
+ (aucun)
+ </line_editor>
<button label="Choisir Avatar..." name="choose_avatar_btn" />
<button
label="Renvoyer les objets scriptés de l&apos;avatar vers une propriété tierce"
name="return_scripted_other_land_btn" />
<button label="Renvoyer TOUS les objets scriptés de l&apos;avatar"
name="return_scripted_all_btn" />
+ <check_box label="Ne rendre que les objets avec des scripts" name="return_scripts"
+ tool_tip="Ne rendre que les objets qui ont des scripts." />
+ <check_box label="Ne rendre que les objets sur le terrain de quelqu&apos;un d&apos;autre"
+ name="return_other_land"
+ tool_tip="Ne rendre que les objets se trouvant sur le terrain de quelqu&apos;un d&apos;autre" />
+ <check_box label="Rendre les objets dans toutes les régions de ce domaine"
+ name="return_estate_wide"
+ tool_tip="Rendre les objets dans toutes les régions qui constituent ce domaine" />
+ <button label="Rendre" name="return_btn" />
<button label="Afficher les Top Colliders..." name="top_colliders_btn"
tool_tip="Liste d&apos;objets les plus exposés aux collisions potentielles" />
<button label="?" name="top_colliders_help" />
diff --git a/indra/newview/skins/default/xui/fr/panel_region_estate.xml b/indra/newview/skins/default/xui/fr/panel_region_estate.xml
index eccc4dfe0c..401ebb2985 100644
--- a/indra/newview/skins/default/xui/fr/panel_region_estate.xml
+++ b/indra/newview/skins/default/xui/fr/panel_region_estate.xml
@@ -15,6 +15,22 @@
<text name="estate_owner">
(inconnu)
</text>
+ <text name="Only Allow">
+ Limiter l&apos;accès aux résidents :
+ </text>
+ <check_box label="Qui ont enregistré leurs infos de paiement" name="limit_payment"
+ tool_tip="Interdire les résidents non identifés." />
+ <check_box label="Adultes dont l&apos;âge a été vérifié" name="limit_age_verified"
+ tool_tip="Interdire les résidents dont l&apos;âge n&apos;a pas été vérifié. Pour plus d&apos;infos, consultez la page support.secondlife.com." />
+ <check_box label="Autoriser les chats vocaux" name="voice_chat_check" />
+ <button label="?" name="voice_chat_help" />
+ <text name="abuse_email_text">
+ E-mail où signaler l&apos;infraction :
+ </text>
+ <string name="email_unsupported">
+ Non pris en charge
+ </string>
+ <button label="?" name="abuse_email_address_help" />
<text name="estate_manager_label">
Administrateurs du Domaine :
</text>
diff --git a/indra/newview/skins/default/xui/fr/panel_region_general.xml b/indra/newview/skins/default/xui/fr/panel_region_general.xml
index 29f52d5de6..759298fa44 100644
--- a/indra/newview/skins/default/xui/fr/panel_region_general.xml
+++ b/indra/newview/skins/default/xui/fr/panel_region_general.xml
@@ -6,6 +6,12 @@
<text name="region_text">
inconnu
</text>
+ <text name="version_channel_text_lbl">
+ Version :
+ </text>
+ <text name="version_channel_text">
+ (inconnu)
+ </text>
<check_box label="Interdire le terraforming" name="block_terraform_check" />
<button label="?" name="terraform_help" />
<check_box label="Interdire vol" name="block_fly_check" />
@@ -18,6 +24,10 @@
<button label="?" name="land_resell_help" />
<check_box label="Autoriser Fusionner/Diviser parcelle" name="allow_parcel_changes_check" />
<button label="?" name="parcel_changes_help" />
+ <check_box label="Ne pas afficher le terrain dans la recherche"
+ name="block_parcel_search_check"
+ tool_tip="Afficher cette région et ses parcelles dans les résultats de recherche" />
+ <button label="?" name="parcel_search_help" />
<spinner label="Limite d&apos;avatars" name="agent_limit_spin" />
<button label="?" name="agent_limit_help" />
<spinner label="Bonus de l&apos;objet" name="object_bonus_spin" />
diff --git a/indra/newview/skins/default/xui/fr/panel_status_bar.xml b/indra/newview/skins/default/xui/fr/panel_status_bar.xml
index 7ca8299521..86db198a8e 100644
--- a/indra/newview/skins/default/xui/fr/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/fr/panel_status_bar.xml
@@ -11,6 +11,12 @@
<text type="string" length="12" name="TimeText" tool_tip="Heure actuelle (UTC -8)">
12:00 AM
</text>
+ <string name="StatBarDaysOfWeek">
+ Sunday:Monday:Tuesday:Wednesday:Thursday:Friday:Saturday
+ </string>
+ <string name="StatBarMonthsOfYear">
+ January:February:March:April:May:June:July:August:September:October:November:December
+ </string>
<button label="" label_selected="" name="scriptout"
tool_tip="Alertes et erreurs de scripts" />
<button label="" label_selected="" name="health" tool_tip="Santé" />
@@ -20,9 +26,15 @@
<button label="" label_selected="" name="fly" tool_tip="Vol interdit" />
<button label="" label_selected="" name="build" tool_tip="Construction interdite" />
<button label="" label_selected="" name="scripts" tool_tip="Scripts interdits" />
+ <button name="no_fly" tool_tip="Interdiction de voler" />
+ <button name="no_build" tool_tip="Interdiction de construire/rezzer" />
+ <button name="no_scripts" tool_tip="Interdiction d&apos;utiliser des scripts" />
<button label="" label_selected="" name="restrictpush"
tool_tip="Restreindre llPushObject" />
+ <button name="status_no_voice" tool_tip="Voix non disponible ici" />
<button label="" label_selected="" name="buyland" tool_tip="Acheter cette parcelle" />
+ <line_editor label="Rechercher" name="search_editor" tool_tip="Rechercher dans Second Life" />
+ <button name="search_btn" tool_tip="Rechercher dans Second Life" />
<text name="packet_loss_tooltip">
Paquets perdus
</text>
diff --git a/indra/newview/skins/default/xui/fr/role_actions.xml b/indra/newview/skins/default/xui/fr/role_actions.xml
index c3d6ffe857..ece4f35594 100644
--- a/indra/newview/skins/default/xui/fr/role_actions.xml
+++ b/indra/newview/skins/default/xui/fr/role_actions.xml
@@ -1,189 +1,202 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<role_actions>
- <action_set
- description="Ces Facultés confèrent le pouvoir d&apos;ajouter et supprimer des Membres du groupe, et d&apos;autoriser de nouveaux Membres à s&apos;inscrire sans invitation."
- name="Membership">
- <action description="Inviter quelqu&apos;un dans ce groupe"
- longdescription="Invitez des personnes dans ce Groupe à l&apos;aide du bouton &apos;Inviter&apos; dans l&apos;onglet Membres &amp; Rôles &gt; sous-onglet Membres."
- name="member invite" value="1" />
- <action description="Ejecter des Membres du Groupe"
- longdescription="Ejectez des Membres de ce groupe à l&apos;aide du bouton &apos;Ejecter du groupe&apos; dans l&apos;onglet Membres &amp; Rôles &gt; Membres. Un propriétaire peut éjecter tout le monde, sauf un autre propriétaire. Si vous n&apos;êtes pas propriétaire, vous pouvez éjecter un Membre si et seulement si il est dans le Rôle &apos;Tout le monde&apos; et AUCUN autre.Pour destituer des Membres d&apos;un Rôle, vous devez disposer de la Faculté &apos;Destituer Membres d&apos;un Rôle&apos;."
- name="member eject" value="2" />
- <action
- description="Basculer &apos;Inscription libre&apos; et modifier &apos;Frais d&apos;inscription&apos;"
- longdescription="Basculez &apos;Inscription libre&apos; pour permettre à de nouveaux Membres de s&apos;inscrire sans invitation, et modifiez &apos;Frais d&apos;inscription&apos; dans les Préférences du Groupe, onglet Général."
- name="member options" value="3" />
- </action_set>
- <action_set
- description="Ces Facultés confèrent le pouvoir d&apos;ajouter, supprimer et modifier les Rôles dans le groupe, d&apos;ajouter et supprimer des Membres affectés à des Rôles, et d&apos;attribuer des Facultés aux Rôles."
- name="Roles">
- <action description="Créer de nouveaux rôles"
- longdescription="Créez de nouveaux Rôles dans l&apos;onglet &apos;Membres et Rôles&apos; &gt; sous-onglet Rôles."
- name="role create" value="4" />
- <action description="Supprimer des Rôles"
- longdescription="Supprimez des Rôles dans l&apos;onglet Membres &amp; Rôles &gt; sous-onglet Rôles."
- name="role delete" value="5" />
- <action description="Modifier les noms, titres et descriptions des Rôles"
- longdescription="Modifiez les noms, titres et descriptions des Rôles dans l&apos;onglet Membres et Rôles &gt; sous-onglet Rôles après avoir sélectionné un Rôle."
- name="role properties" value="6" />
- <action description="Affecter des Membres à des rôles d&apos;attribution"
- longdescription="Affectez des Membres à des Rôles dans la section &apos;Rôles Attribués&apos; de l&apos;onglet Membres &amp; Rôles &gt; sous-onglet Membres. Un Membre disposant de ce pouvoir ne peut affecter de nouveaux membres qu&apos;à un rôle auquel il est lui-même affecté."
- name="role assign member limited" value="7" />
- <action description="Affecter des Membres à tous types de Rôles"
- longdescription="Affectez des Membres à tous types de rôles dans la section &apos;Rôles Attribués&apos; de l&apos;onglet Membres &amp; Rôles &gt; sous-onglet Membres. *AVERTISSEMENT* Tout membre disposant de cette faculté peut s&apos;affecter lui-même --ainsi que tout autre Membre non-propriétaire du groupe-- à des Rôles disposant de pouvoirs plus grands, et accéder potentiellement à des pouvoirs proches de ceux d&apos;un propriétaire. Assurez-vous de savoir ce que vous faites avant d&apos;attribuer cette Faculté."
- name="role assign member" value="8" />
- <action description="Destituer des Membres de leurs Rôles"
- longdescription="Retirez des Membres de Rôles dans la section Rôles Attribués de l&apos;onglet Membres &amp; Rôles &gt; sous-onglet Membres. Les Propriétaires ne peuvent être retirés."
- name="role remove member" value="9" />
- <action description="Attribuer et retirer des Facultés d&apos;un Rôle"
- longdescription="Attribuez et retirez des Facultés de Rôles dans la section Facultés Attribuées de l&apos;onglet Membres &amp; Rôles &gt; sous-onglet Rôles. *AVERTISSEMENT* Tout membre disposant de cette faculté peut s&apos;affecter lui-même --ainsi que tout autre Membre non-propriétaire du groupe-- à des Rôles disposant de pouvoirs plus grands, et accéder potentiellement à des pouvoirs proches de ceux d&apos;un propriétaire. Assurez-vous de savoir ce que vous faites avant d&apos;attribuer cette Faculté."
- name="role change actions" value="10" />
- </action_set>
- <action_set
- description="Ces Facultés confèrent le pouvoir de modifier l&apos;identité du Groupe, c&apos;est-à-dire sa visibilité publique, sa charte et son insigne."
- name="Group Identity">
- <action
- description="Modifier la Charte, l&apos;Insigne, &apos;Publier sur le web&apos;, et quels Membres apparaissent dans les Informations du Groupe"
- longdescription="Modifiez la Charte, l&apos;Insigne, &apos;Publier sur le web&apos; et la visibilité publique des Membres dans les Informations du Groupe. Ces opérations s&apos;effectuent dans l&apos;onglet Général."
- name="group change identity" value="11" />
- </action_set>
- <action_set
- description="Ces Facultés confèrent le pouvoir de transférer, modifier, et vendre du terrain appartenant au patrimoine du Groupe. Pour accéder au menu du terrain, cliquez-droit sur le sol et sélectionnez &apos;A propos du terrain...&apos;, ou cliquez sur l&apos;info de parcelle dans la barre de menus."
- name="Parcel Management">
- <action description="Transférer du terrain et acheter du terrain pour le groupe"
- longdescription="Transférez du terrain et achetez du terrain pour le compte d&apos;un groupe. Ces opérations s&apos;effectuent dans &apos;A propos du terrain&apos; &gt; onglet Général."
- name="land deed" value="12" />
- <action description="Céder terrain au Gouverneur Linden"
- longdescription="Céder terrain au Gouverneur Linden. *AVERTISSEMENT* Tout Membre disposant de cette Faculté peut céder du terrain dans &apos;A propos du terrain&apos; &gt; onglet Général, et rétrocéder la propriété aux Linden sans effectuer de vente ! Assurez-vous de savoir ce que vous faites avant d&apos;attribuer cette Faculté."
- name="land release" value="13" />
- <action description="Définir des infos de vente de terrain"
- longdescription="Définissez les informations de vente du terrain. *AVERTISSEMENT* Tout Membre dans un Rôle avec cette Faculté peut vendre du terrain appartenant au groupe dans &apos;A propos du Terrain&apos; &gt; onglet General quand il le souhaite ! Assurez-vous de savoir ce que vous faites avant d&apos;attribuer cette Faculté."
- name="land set sale info" value="14" />
- <action description="Subdiviser et fusionner des parcelles"
- longdescription="Subdivide and join parcels. This is done by right-clicking the ground, &apos;Edit Terrain&apos;, and dragging your mouse on the land to make a selection. To subdivide, select what you want to split and click &apos;Subdivide...&apos;. To join, select two or more contiguous parcels and click &apos;Join...&apos;. "
- name="land divide join" value="15" />
- </action_set>
- <action_set
- description="Ces Facultés confèrent le pouvoir de modifier le nom de la parcelle et les réglages de confidentialité, la visibilité dans l&apos;annuaire, le point d&apos;atterrissage et les options de routage de téléportation."
- name="Parcel Identity">
- <action
- description="Basculer &apos;Afficher dans Rechercher un lieu&apos; et définir une catégorie"
- longdescription="Basculez &apos;Afficher dans Rechercher un Lieu&apos; et définissez une catégorie pour la parcelle dans &apos;A propos du Terrain&apos; &gt; onglet Options."
- name="land find places" value="17" />
- <action
- description="Modifier le nom et la description de la parcelle, et les réglages de &apos;Publier sur le web&apos;"
- longdescription="Modifiez le nom de la parcelle, sa description et les réglages de &apos;Publier sur le web&apos;. Ces modifications s&apos;effectuent dans &apos;A propos du terrain&apos;, onglet Options."
- name="land change identity" value="18" />
- <action
- description="Définir le point d&apos;atterrissage et le routage de téléportation"
- longdescription="Sur une parcelle appartenant au groupe, les Membres dans un Rôle avec cette Faculté peuvent définir un point d&apos;atterrissage pour les téléportations entrantes, et définir le routage de téléportation pour plus de contrôle. Ceci s&apos;effectue dans A propos du Terrain &gt; onglet Options."
- name="land set landing point" value="19" />
- </action_set>
- <action_set
- description="Ces Facultés confèrent des pouvoirs sur les options de la parcelle, comme &apos;Créer objets&apos;, &apos;Modifier Relief&apos;, ainsi que les réglages audio et vidéo."
- name="Parcel Settings">
- <action description="Modifier les réglages de la musique et des media"
- longdescription="Modifiez les réglages des flux audio et vidéo dans &apos;A propos du terrain&apos; &gt; onglet Media."
- name="land change media" value="20" />
- <action description="Basculer &apos;Modifier relief&apos;"
- longdescription="Basculez &apos;Modifier Relief&apos;. *AVERTISSEMENT* A propos du Terrain &gt; onglet Options &gt; Modifier Relief permet à tout le monde de terraformer votre terrain, disposer et déplacer des plantes Linden. Assurez-vous de savoir ce que vous faites avant d&apos;attribuer cette Faculté. Modifier Terrain s&apos;effectue dans A propos du terrain &gt; onglet Options."
- name="land edit" value="21" />
- <action description="Basculer divers réglages de A propos du Terrain &gt; Options"
- longdescription="Basculez &apos;Sans danger (pas de dégâts)&apos;, &apos;Voler&apos;, et autorisez d&apos;autres résidents à : &apos;Créer des objets&apos;, &apos;Modifier le Relief&apos;, &apos;Créer un repère&apos;, et &apos;Exécuter des Scripts&apos; sur un terrain appartenant au Groupe dans &apos;A propos du Terrain&apos; &gt; onglet Options."
- name="land options" value="22" />
- </action_set>
- <action_set
- description="Ces Facultés confèrent des pouvoirs qui permettent aux Membres de contourner les restrictions sur des parcelles appartenant à un groupe."
- name="Parcel Powers">
- <action description="Toujours autoriser &apos;Modifier relief&apos;"
- longdescription="Les Membres dans un Rôle avec cette Faculté peuvent modifier le relief d&apos;une parcelle de groupe, même si l&apos;option est désactivée dans A Propos du Terrain &gt; onglet Options."
- name="land allow edit land" value="23" />
- <action description="Toujours autoriser le vol"
- longdescription="Les Membres dans un Rôle avec cette Faculté peuvent voler sur une parcelle de groupe, même si le vol est désactivé dans A Propos du Terrain &gt; onglet Options."
- name="land allow fly" value="24" />
- <action description="Toujours autoriser &apos;Créer objets&apos;"
- longdescription="Les Membres dans un Rôle avec cette Faculté peuvent créer des objets sur une parcelle de groupe, même si l&apos;option est désactivée dans A Propos du Terrain &gt; onglet Options."
- name="land allow create" value="25" />
- <action description="Toujours autoriser &apos;Créer repère&apos;"
- longdescription="Les Membres dans un Rôle avec cette Faculté peuvent créer un repère sur une parcelle de groupe, même si l&apos;option est désactivée dans A Propos du Terrain &gt; onglet Options."
- name="land allow landmark" value="26" />
- <action
- description="Autoriser &apos;Définir son domicile ici&apos; sur le terrain du groupe"
- longdescription="Les Membres dans un Rôle avec cette Faculté peuvent utiliser le menu Monde &gt; Définir Domicile Ici sur une parcelle de groupe (terrain attribué ou transféré au groupe)."
- name="land allow set home" value="28" />
- </action_set>
- <action_set
- description="Ces Facultés confèrent le pouvoir d&apos;autoriser ou restreindre l&apos;accès à des parcelles appartenant au Groupe, y compris de bloquer ou éjecter des résidents."
- name="Parcel Access">
- <action description="Gérer les listes d&apos;accès à cette parcelle"
- longdescription="Gérez les listes d&apos;accès à la parcelle dans &apos;A propos du terrain&apos; &gt; Accès."
- name="land manage allowed" value="29" />
- <action description="Gérer les listes noires de cette parcelle"
- longdescription="Gérez les listes de bannissement de la parcelle dans &apos;A propos du terrain&apos; &gt; Bannir."
- name="land manage banned" value="30" />
- <action
- description="Modifier réglages de &apos;Vendre des laissez-passer...&apos; sur cette parcelle"
- longdescription="Modifiez les réglages de &apos;Vendre des laissez-passer&apos; de la parcelle dans &apos;A propos du terrain&apos; &gt; onglet &apos;Accès&apos;."
- name="land manage passes" value="31" />
- <action description="Ejecter et bloquer des Résidents sur les parcelles"
- longdescription="Les Membres dans un Rôle avec cette Faculté peuvent intervenir auprès d&apos;un Résident indésirable sur une parcelle de groupe en cliquant-droit sur eux, Plus &gt;, et &apos;Ejecter...&apos; ou &apos;Bloquer...&apos;."
- name="land admin" value="32" />
- </action_set>
- <action_set
- description="Ces Facultés confèrent le pouvoir d&apos;autoriser les Membres à renvoyer des objets, placer et déplacer des plantes Linden. Ceci permet aux Membres de traiter les déchets et d&apos;aménager le paysage. A utiliser avec précaution, car les objets renvoyés le sont définitivement."
- name="Parcel Content">
- <action description="Renvoyer des objets appartenant au groupe."
- longdescription="Renvoyez des objets sur des parcelles appartenant au groupe dans A propos du Terrain &gt; onglet Objets."
- name="land return group owned" value="48" />
- <action description="Renvoyer des objets attribués au groupe"
- longdescription="Renvoyez des objets sur des parcelles appartenant au groupe et attribuées au groupe dans A propos du Terrain &gt; onglet Objets."
- name="land return group set" value="33" />
- <action description="Renvoyer des objets n&apos;appartenant pas au groupe."
- longdescription="Renvoyez des objets sur des parcelles appartenant au groupe et non attribuées au groupe dans A propos du Terrain &gt; onglet Objets."
- name="land return non group" value="34" />
- <action description="Aménager le paysage avec des plantes Linden"
- longdescription="Faculté de placer et déplacer des arbres, plantes et pelouses Linden. Ces eléments sont disponibles dans le dossier Objets de la Bibliothèque de votre Inventaire ou peuvent être créés à l&apos;aide du bouton Construire."
- name="land gardening" value="35" />
- </action_set>
- <action_set
- description="These Abilities include powers to deed, modify, and sell group-owned objects. These changes are done in the Edit Tools &gt; General Tab. Right-click an object and Edit to see its settings. "
- name="Object Management">
- <action description="Transférer des objets au groupe"
- longdescription="Transférez des objets à un groupe dans Outils d&apos;Edition &gt; onglet Général."
- name="object deed" value="36" />
- <action
- description="Manipuler (déplacer, copier, modifier) des objets appartenant au groupe"
- longdescription="Manipulez (déplacez, copiez, modifiez) les objets appartenant au groupe dans Outils d&apos;Edition &gt; onglet Général."
- name="object manipulate" value="38" />
- <action description="Mettre en vente des objets appartenant au groupe"
- longdescription="Définissez les objets à vendre du groupe dans Outils d&apos;Edition &gt; onglet Général."
- name="object set sale" value="39" />
- </action_set>
- <action_set
- description="Ces Facultés confèrent des pouvoirs qui requièrent que les Membres paient les en-cours et reçoivent des dividendes du Groupe, ainsi que le pouvoir de restreindre l&apos;accès à l&apos;historique comptable du Groupe."
- name="Accounting">
- <action description="Payer le passif du groupe et recevoir les dividendes du groupe"
- longdescription="Members in a Role with this Ability will automatically pay group liabilities and receive group dividends. This means they will receive a portion of group-owned land sales which are distributed daily, as well as contribute towards things like parcel listing fees. "
- name="accounting accountable" value="40" />
- </action_set>
- <action_set
- description="Ces Facultés confèrent le pouvoir d&apos;autoriser les Membres à envoyer, recevoir, et voir les Notifications de groupe."
- name="Notices">
- <action description="Envoyer des Notifications"
- longdescription="Les Membres dans un Rôle avec cette Faculté peuvent envoyer des Notifications dans Informations du Groupe &gt; onglet Notifications."
- name="notices send" value="42" />
- <action description="Recevoir Notifications et voir Notifications passées"
- longdescription="Les Membres dans un Rôle avec cette Faculté peuvent recevoir les Notifications et afficher les Notifications passées dans Informations du Groupe &gt; onglet Notifications."
- name="notices receive" value="43" />
- </action_set>
- <action_set
- description="Ces Facultés confèrent le pouvoir d&apos;autoriser les Membres à soumettre des Propositions, les voter, et voir l&apos;historique des votes."
- name="Proposals">
- <action description="Créer des propositions"
- longdescription="Les Membres dans un Rôle avec cette Faculté peuvent créer des propositions à voter dans Informations du Groupe &gt; onglet Propositions."
- name="proposal start" value="44" />
- <action description="Voter les propositions"
- longdescription="Les Membres dans un Rôle avec cette Faculté peuvent voter les propositions dans Informations du Groupe &gt; onglet Propositions."
- name="proposal vote" value="45" />
- </action_set>
-</role_actions>
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<role_actions>
+ <action_set
+ description="Ces Facultés confèrent le pouvoir d&apos;ajouter et supprimer des Membres du groupe, et d&apos;autoriser de nouveaux Membres à s&apos;inscrire sans invitation."
+ name="Membership">
+ <action description="Inviter quelqu&apos;un dans ce groupe"
+ longdescription="Invitez des personnes dans ce Groupe à l&apos;aide du bouton &apos;Inviter&apos; dans l&apos;onglet Membres &amp; Rôles &gt; sous-onglet Membres."
+ name="member invite" value="1" />
+ <action description="Ejecter des Membres du Groupe"
+ longdescription="Ejectez des Membres de ce groupe à l&apos;aide du bouton &apos;Ejecter du groupe&apos; dans l&apos;onglet Membres &amp; Rôles &gt; Membres. Un propriétaire peut éjecter tout le monde, sauf un autre propriétaire. Si vous n&apos;êtes pas propriétaire, vous pouvez éjecter un Membre si et seulement si il est dans le Rôle &apos;Tout le monde&apos; et AUCUN autre.Pour destituer des Membres d&apos;un Rôle, vous devez disposer de la Faculté &apos;Destituer Membres d&apos;un Rôle&apos;."
+ name="member eject" value="2" />
+ <action
+ description="Basculer &apos;Inscription libre&apos; et modifier &apos;Frais d&apos;inscription&apos;"
+ longdescription="Basculez &apos;Inscription libre&apos; pour permettre à de nouveaux Membres de s&apos;inscrire sans invitation, et modifiez &apos;Frais d&apos;inscription&apos; dans les Préférences du Groupe, onglet Général."
+ name="member options" value="3" />
+ </action_set>
+ <action_set
+ description="Ces Facultés confèrent le pouvoir d&apos;ajouter, supprimer et modifier les Rôles dans le groupe, d&apos;ajouter et supprimer des Membres affectés à des Rôles, et d&apos;attribuer des Facultés aux Rôles."
+ name="Roles">
+ <action description="Créer de nouveaux rôles"
+ longdescription="Créez de nouveaux Rôles dans l&apos;onglet &apos;Membres et Rôles&apos; &gt; sous-onglet Rôles."
+ name="role create" value="4" />
+ <action description="Supprimer des Rôles"
+ longdescription="Supprimez des Rôles dans l&apos;onglet Membres &amp; Rôles &gt; sous-onglet Rôles."
+ name="role delete" value="5" />
+ <action description="Modifier les noms, titres et descriptions des Rôles"
+ longdescription="Modifiez les noms, titres et descriptions des Rôles dans l&apos;onglet Membres et Rôles &gt; sous-onglet Rôles après avoir sélectionné un Rôle."
+ name="role properties" value="6" />
+ <action description="Affecter des Membres à des rôles d&apos;attribution"
+ longdescription="Affectez des Membres à des Rôles dans la section &apos;Rôles Attribués&apos; de l&apos;onglet Membres &amp; Rôles &gt; sous-onglet Membres. Un Membre disposant de ce pouvoir ne peut affecter de nouveaux membres qu&apos;à un rôle auquel il est lui-même affecté."
+ name="role assign member limited" value="7" />
+ <action description="Affecter des Membres à tous types de Rôles"
+ longdescription="Affectez des Membres à tous types de rôles dans la section &apos;Rôles Attribués&apos; de l&apos;onglet Membres &amp; Rôles &gt; sous-onglet Membres. *AVERTISSEMENT* Tout membre disposant de cette faculté peut s&apos;affecter lui-même --ainsi que tout autre Membre non-propriétaire du groupe-- à des Rôles disposant de pouvoirs plus grands, et accéder potentiellement à des pouvoirs proches de ceux d&apos;un propriétaire. Assurez-vous de savoir ce que vous faites avant d&apos;attribuer cette Faculté."
+ name="role assign member" value="8" />
+ <action description="Destituer des Membres de leurs Rôles"
+ longdescription="Retirez des Membres de Rôles dans la section Rôles Attribués de l&apos;onglet Membres &amp; Rôles &gt; sous-onglet Membres. Les Propriétaires ne peuvent être retirés."
+ name="role remove member" value="9" />
+ <action description="Attribuer et retirer des Facultés d&apos;un Rôle"
+ longdescription="Attribuez et retirez des Facultés de Rôles dans la section Facultés Attribuées de l&apos;onglet Membres &amp; Rôles &gt; sous-onglet Rôles. *AVERTISSEMENT* Tout membre disposant de cette faculté peut s&apos;affecter lui-même --ainsi que tout autre Membre non-propriétaire du groupe-- à des Rôles disposant de pouvoirs plus grands, et accéder potentiellement à des pouvoirs proches de ceux d&apos;un propriétaire. Assurez-vous de savoir ce que vous faites avant d&apos;attribuer cette Faculté."
+ name="role change actions" value="10" />
+ </action_set>
+ <action_set
+ description="Ces Facultés confèrent le pouvoir de modifier l&apos;identité du Groupe, c&apos;est-à-dire sa visibilité publique, sa charte et son insigne."
+ name="Group Identity">
+ <action
+ description="Modifier la Charte, l&apos;Insigne, &apos;Publier sur le web&apos;, et quels Membres apparaissent dans les Informations du Groupe"
+ longdescription="Modifiez la Charte, l&apos;Insigne, &apos;Publier sur le web&apos; et la visibilité publique des Membres dans les Informations du Groupe. Ces opérations s&apos;effectuent dans l&apos;onglet Général."
+ name="group change identity" value="11" />
+ </action_set>
+ <action_set
+ description="Ces Facultés confèrent le pouvoir de transférer, modifier, et vendre du terrain appartenant au patrimoine du Groupe. Pour accéder au menu du terrain, cliquez-droit sur le sol et sélectionnez &apos;A propos du terrain...&apos;, ou cliquez sur l&apos;info de parcelle dans la barre de menus."
+ name="Parcel Management">
+ <action description="Transférer du terrain et acheter du terrain pour le groupe"
+ longdescription="Transférez du terrain et achetez du terrain pour le compte d&apos;un groupe. Ces opérations s&apos;effectuent dans &apos;A propos du terrain&apos; &gt; onglet Général."
+ name="land deed" value="12" />
+ <action description="Céder terrain au Gouverneur Linden"
+ longdescription="Céder terrain au Gouverneur Linden. *AVERTISSEMENT* Tout Membre disposant de cette Faculté peut céder du terrain dans &apos;A propos du terrain&apos; &gt; onglet Général, et rétrocéder la propriété aux Linden sans effectuer de vente ! Assurez-vous de savoir ce que vous faites avant d&apos;attribuer cette Faculté."
+ name="land release" value="13" />
+ <action description="Définir des infos de vente de terrain"
+ longdescription="Définissez les informations de vente du terrain. *AVERTISSEMENT* Tout Membre dans un Rôle avec cette Faculté peut vendre du terrain appartenant au groupe dans &apos;A propos du Terrain&apos; &gt; onglet General quand il le souhaite ! Assurez-vous de savoir ce que vous faites avant d&apos;attribuer cette Faculté."
+ name="land set sale info" value="14" />
+ <action description="Subdiviser et fusionner des parcelles"
+ longdescription="Subdivide and join parcels. This is done by right-clicking the ground, &apos;Edit Terrain&apos;, and dragging your mouse on the land to make a selection. To subdivide, select what you want to split and click &apos;Subdivide...&apos;. To join, select two or more contiguous parcels and click &apos;Join...&apos;. "
+ name="land divide join" value="15" />
+ </action_set>
+ <action_set
+ description="Ces Facultés confèrent le pouvoir de modifier le nom de la parcelle et les réglages de confidentialité, la visibilité dans l&apos;annuaire, le point d&apos;atterrissage et les options de routage de téléportation."
+ name="Parcel Identity">
+ <action
+ description="Basculer &apos;Afficher dans Rechercher un lieu&apos; et définir une catégorie"
+ longdescription="Basculez &apos;Afficher dans Rechercher un Lieu&apos; et définissez une catégorie pour la parcelle dans &apos;A propos du Terrain&apos; &gt; onglet Options."
+ name="land find places" value="17" />
+ <action
+ description="Modifier le nom et la description de la parcelle, et les réglages de &apos;Publier sur le web&apos;"
+ longdescription="Modifiez le nom de la parcelle, sa description et les réglages de &apos;Publier sur le web&apos;. Ces modifications s&apos;effectuent dans &apos;A propos du terrain&apos;, onglet Options."
+ name="land change identity" value="18" />
+ <action
+ description="Définir le point d&apos;atterrissage et le routage de téléportation"
+ longdescription="Sur une parcelle appartenant au groupe, les Membres dans un Rôle avec cette Faculté peuvent définir un point d&apos;atterrissage pour les téléportations entrantes, et définir le routage de téléportation pour plus de contrôle. Ceci s&apos;effectue dans A propos du Terrain &gt; onglet Options."
+ name="land set landing point" value="19" />
+ </action_set>
+ <action_set
+ description="Ces Facultés confèrent des pouvoirs sur les options de la parcelle, comme &apos;Créer objets&apos;, &apos;Modifier Relief&apos;, ainsi que les réglages audio et vidéo."
+ name="Parcel Settings">
+ <action description="Modifier les réglages de la musique et des media"
+ longdescription="Modifiez les réglages des flux audio et vidéo dans &apos;A propos du terrain&apos; &gt; onglet Media."
+ name="land change media" value="20" />
+ <action description="Basculer &apos;Modifier relief&apos;"
+ longdescription="Basculez &apos;Modifier Relief&apos;. *AVERTISSEMENT* A propos du Terrain &gt; onglet Options &gt; Modifier Relief permet à tout le monde de terraformer votre terrain, disposer et déplacer des plantes Linden. Assurez-vous de savoir ce que vous faites avant d&apos;attribuer cette Faculté. Modifier Terrain s&apos;effectue dans A propos du terrain &gt; onglet Options."
+ name="land edit" value="21" />
+ <action description="Basculer divers réglages de A propos du Terrain &gt; Options"
+ longdescription="Basculez &apos;Sans danger (pas de dégâts)&apos;, &apos;Voler&apos;, et autorisez d&apos;autres résidents à : &apos;Créer des objets&apos;, &apos;Modifier le Relief&apos;, &apos;Créer un repère&apos;, et &apos;Exécuter des Scripts&apos; sur un terrain appartenant au Groupe dans &apos;A propos du Terrain&apos; &gt; onglet Options."
+ name="land options" value="22" />
+ </action_set>
+ <action_set
+ description="Ces Facultés confèrent des pouvoirs qui permettent aux Membres de contourner les restrictions sur des parcelles appartenant à un groupe."
+ name="Parcel Powers">
+ <action description="Toujours autoriser &apos;Modifier relief&apos;"
+ longdescription="Les Membres dans un Rôle avec cette Faculté peuvent modifier le relief d&apos;une parcelle de groupe, même si l&apos;option est désactivée dans A Propos du Terrain &gt; onglet Options."
+ name="land allow edit land" value="23" />
+ <action description="Toujours autoriser le vol"
+ longdescription="Les Membres dans un Rôle avec cette Faculté peuvent voler sur une parcelle de groupe, même si le vol est désactivé dans A Propos du Terrain &gt; onglet Options."
+ name="land allow fly" value="24" />
+ <action description="Toujours autoriser &apos;Créer objets&apos;"
+ longdescription="Les Membres dans un Rôle avec cette Faculté peuvent créer des objets sur une parcelle de groupe, même si l&apos;option est désactivée dans A Propos du Terrain &gt; onglet Options."
+ name="land allow create" value="25" />
+ <action description="Toujours autoriser &apos;Créer repère&apos;"
+ longdescription="Les Membres dans un Rôle avec cette Faculté peuvent créer un repère sur une parcelle de groupe, même si l&apos;option est désactivée dans A Propos du Terrain &gt; onglet Options."
+ name="land allow landmark" value="26" />
+ <action
+ description="Autoriser &apos;Définir son domicile ici&apos; sur le terrain du groupe"
+ longdescription="Les Membres dans un Rôle avec cette Faculté peuvent utiliser le menu Monde &gt; Définir Domicile Ici sur une parcelle de groupe (terrain attribué ou transféré au groupe)."
+ name="land allow set home" value="28" />
+ </action_set>
+ <action_set
+ description="Ces Facultés confèrent le pouvoir d&apos;autoriser ou restreindre l&apos;accès à des parcelles appartenant au Groupe, y compris de bloquer ou éjecter des résidents."
+ name="Parcel Access">
+ <action description="Gérer les listes d&apos;accès à cette parcelle"
+ longdescription="Gérez les listes d&apos;accès à la parcelle dans &apos;A propos du terrain&apos; &gt; Accès."
+ name="land manage allowed" value="29" />
+ <action description="Gérer les listes noires de cette parcelle"
+ longdescription="Gérez les listes de bannissement de la parcelle dans &apos;A propos du terrain&apos; &gt; Bannir."
+ name="land manage banned" value="30" />
+ <action
+ description="Modifier réglages de &apos;Vendre des laissez-passer...&apos; sur cette parcelle"
+ longdescription="Modifiez les réglages de &apos;Vendre des laissez-passer&apos; de la parcelle dans &apos;A propos du terrain&apos; &gt; onglet &apos;Accès&apos;."
+ name="land manage passes" value="31" />
+ <action description="Ejecter et bloquer des Résidents sur les parcelles"
+ longdescription="Les Membres dans un Rôle avec cette Faculté peuvent intervenir auprès d&apos;un Résident indésirable sur une parcelle de groupe en cliquant-droit sur eux, Plus &gt;, et &apos;Ejecter...&apos; ou &apos;Bloquer...&apos;."
+ name="land admin" value="32" />
+ </action_set>
+ <action_set
+ description="Ces Facultés confèrent le pouvoir d&apos;autoriser les Membres à renvoyer des objets, placer et déplacer des plantes Linden. Ceci permet aux Membres de traiter les déchets et d&apos;aménager le paysage. A utiliser avec précaution, car les objets renvoyés le sont définitivement."
+ name="Parcel Content">
+ <action description="Renvoyer des objets appartenant au groupe."
+ longdescription="Renvoyez des objets sur des parcelles appartenant au groupe dans A propos du Terrain &gt; onglet Objets."
+ name="land return group owned" value="48" />
+ <action description="Renvoyer des objets attribués au groupe"
+ longdescription="Renvoyez des objets sur des parcelles appartenant au groupe et attribuées au groupe dans A propos du Terrain &gt; onglet Objets."
+ name="land return group set" value="33" />
+ <action description="Renvoyer des objets n&apos;appartenant pas au groupe."
+ longdescription="Renvoyez des objets sur des parcelles appartenant au groupe et non attribuées au groupe dans A propos du Terrain &gt; onglet Objets."
+ name="land return non group" value="34" />
+ <action description="Aménager le paysage avec des plantes Linden"
+ longdescription="Faculté de placer et déplacer des arbres, plantes et pelouses Linden. Ces eléments sont disponibles dans le dossier Objets de la Bibliothèque de votre Inventaire ou peuvent être créés à l&apos;aide du bouton Construire."
+ name="land gardening" value="35" />
+ </action_set>
+ <action_set
+ description="These Abilities include powers to deed, modify, and sell group-owned objects. These changes are done in the Edit Tools &gt; General Tab. Right-click an object and Edit to see its settings. "
+ name="Object Management">
+ <action description="Transférer des objets au groupe"
+ longdescription="Transférez des objets à un groupe dans Outils d&apos;Edition &gt; onglet Général."
+ name="object deed" value="36" />
+ <action
+ description="Manipuler (déplacer, copier, modifier) des objets appartenant au groupe"
+ longdescription="Manipulez (déplacez, copiez, modifiez) les objets appartenant au groupe dans Outils d&apos;Edition &gt; onglet Général."
+ name="object manipulate" value="38" />
+ <action description="Mettre en vente des objets appartenant au groupe"
+ longdescription="Définissez les objets à vendre du groupe dans Outils d&apos;Edition &gt; onglet Général."
+ name="object set sale" value="39" />
+ </action_set>
+ <action_set
+ description="Ces Facultés confèrent des pouvoirs qui requièrent que les Membres paient les en-cours et reçoivent des dividendes du Groupe, ainsi que le pouvoir de restreindre l&apos;accès à l&apos;historique comptable du Groupe."
+ name="Accounting">
+ <action description="Payer le passif du groupe et recevoir les dividendes du groupe"
+ longdescription="Members in a Role with this Ability will automatically pay group liabilities and receive group dividends. This means they will receive a portion of group-owned land sales which are distributed daily, as well as contribute towards things like parcel listing fees. "
+ name="accounting accountable" value="40" />
+ </action_set>
+ <action_set
+ description="Ces Facultés confèrent le pouvoir d&apos;autoriser les Membres à envoyer, recevoir, et voir les Notifications de groupe."
+ name="Notices">
+ <action description="Envoyer des Notifications"
+ longdescription="Les Membres dans un Rôle avec cette Faculté peuvent envoyer des Notifications dans Informations du Groupe &gt; onglet Notifications."
+ name="notices send" value="42" />
+ <action description="Recevoir Notifications et voir Notifications passées"
+ longdescription="Les Membres dans un Rôle avec cette Faculté peuvent recevoir les Notifications et afficher les Notifications passées dans Informations du Groupe &gt; onglet Notifications."
+ name="notices receive" value="43" />
+ </action_set>
+ <action_set
+ description="Ces Facultés confèrent le pouvoir d&apos;autoriser les Membres à soumettre des Propositions, les voter, et voir l&apos;historique des votes."
+ name="Proposals">
+ <action description="Créer des propositions"
+ longdescription="Les Membres dans un Rôle avec cette Faculté peuvent créer des propositions à voter dans Informations du Groupe &gt; onglet Propositions."
+ name="proposal start" value="44" />
+ <action description="Voter les propositions"
+ longdescription="Les Membres dans un Rôle avec cette Faculté peuvent voter les propositions dans Informations du Groupe &gt; onglet Propositions."
+ name="proposal vote" value="45" />
+ </action_set>
+ <action_set
+ description="Ces pouvoirs vous permettent d&apos;autoriser ou dinterdire l&apos;accès aux sessions de chat de groupe et au chat de groupe vocal."
+ name="Chat">
+ <action description="Participer au chat de groupe"
+ longdescription="Les membres qui ont ce pouvoir peuvent participer aux chats de groupe, texte ou vocal."
+ name="join group chat" />
+ <action description="Participer au chat de groupe vocal"
+ longdescription="Les membres qui ont ce pouvoir peuvent participer aux chats de groupe vocaux. Remarque : pour accéder à une session de chat vocal, vous devez avoir le droit de participer à un chat de groupe."
+ name="join voice chat" />
+ <action description="Modérer un chat de groupe"
+ longdescription="Les membres dont le rôle leur confèrent ce pouvoir contrôlent l&apos;accès et la participation aux chats de groupe écrits et vocaux.le"
+ name="moderate group chat" />
+ </action_set>
+</role_actions>
diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml
new file mode 100644
index 0000000000..84d68d5788
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/strings.xml
@@ -0,0 +1,414 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<strings name="">
+ <string name="LoginInProgress">
+ La connexion à [APP_NAME] apparaît peut-être comme étant gelée. Veuillez patienter.
+ </string>
+ <string name="LoginAuthenticating">
+ Authentification en cours
+ </string>
+ <string name="LoginMaintenance">
+ Maintenance du compte en cours…
+ </string>
+ <string name="LoginAttempt">
+ La tentative de connexion précédente a échoué. Connexion, esssai [NUMBER]
+ </string>
+ <string name="LoginPrecaching">
+ Monde en cours de chargement…
+ </string>
+ <string name="LoginInitializingBrowser">
+ Navigateur Web incorporé en cours d&apos;initialisation…
+ </string>
+ <string name="LoginInitializingMultimedia">
+ Multimédia en cours d&apos;initialisation…
+ </string>
+ <string name="LoginVerifyingCache">
+ Fichiers du cache en cours de vérification (peut prendre 60-90 s)...
+ </string>
+ <string name="LoginProcessingResponse">
+ Réponse en cours de traitement…
+ </string>
+ <string name="LoginInitializingWorld">
+ Monde en cours d&apos;initialisation…
+ </string>
+ <string name="LoginDecodingImages">
+ Décodage des images en cours...
+ </string>
+ <string name="LoginInitializingQuicktime">
+ Quicktime en cours d&apos;initialisation
+ </string>
+ <string name="LoginQuicktimeNotFound">
+ Quicktime introuvable, impossible de procéder à l&apos;initialisation.
+ </string>
+ <string name="LoginQuicktimeOK">
+ Initialisation de Quicktime réussie.
+ </string>
+ <string name="LoginWaitingForRegionHandshake">
+ Liaison avec la région en cours de création...
+ </string>
+ <string name="LoginConnectingToRegion">
+ Connexion avec la région en cours...
+ </string>
+ <string name="LoginDownloadingClothing">
+ Habits en cours de téléchargement...
+ </string>
+ <string name="AgentLostConnection">
+ Il y a peut-être des problèmes techniques dans cette region. Veuillez vérifier votre connexion Internet.
+ </string>
+ <string name="TooltipPerson">
+ Personne
+ </string>
+ <string name="TooltipNoName">
+ (pas de nom)
+ </string>
+ <string name="TooltipOwner">
+ Propriétaire :
+ </string>
+ <string name="TooltipPublic">
+ Public
+ </string>
+ <string name="TooltipIsGroup">
+ (Groupe)
+ </string>
+ <string name="TooltipFlagScript">
+ Script
+ </string>
+ <string name="TooltipFlagPhysics">
+ Lois de la physique
+ </string>
+ <string name="TooltipFlagTouch">
+ Toucher
+ </string>
+ <string name="TooltipFlagL$">
+ $L
+ </string>
+ <string name="TooltipFlagDropInventory">
+ Laisser tomber l&apos;inventaire
+ </string>
+ <string name="TooltipFlagPhantom">
+ Fantôme
+ </string>
+ <string name="TooltipFlagTemporary">
+ Temporaire
+ </string>
+ <string name="TooltipFlagRightClickMenu">
+ (cliquez à droite pour le menu)
+ </string>
+ <string name="TooltipFreeToCopy">
+ Copie autorisée
+ </string>
+ <string name="TooltipForSaleL$">
+ A vendre : [AMOUNT] $L
+ </string>
+ <string name="TooltipForSaleMsg">
+ A vendre : [MESSAGE]
+ </string>
+ <string name="TooltipFlagGroupBuild">
+ Contruction de groupe
+ </string>
+ <string name="TooltipFlagNoBuild">
+ Pas de construction
+ </string>
+ <string name="TooltipFlagNoEdit">
+ Contruction de groupe
+ </string>
+ <string name="TooltipFlagNotSafe">
+ Non sécurisé
+ </string>
+ <string name="TooltipFlagNoFly">
+ Interdiction de voler
+ </string>
+ <string name="TooltipFlagGroupScripts">
+ Scripts de groupe
+ </string>
+ <string name="TooltipFlagNoScripts">
+ Pas de scripts
+ </string>
+ <string name="TooltipLand">
+ Terrain :
+ </string>
+ <string name="TooltipMustSingleDrop">
+ Impossible de faire glisser plus d&apos;un objet ici
+ </string>
+ <string name="RetrievingData">
+ En cours d&apos;extraction...
+ </string>
+ <string name="ReleaseNotes">
+ Notes de version
+ </string>
+ <string name="LoadingData">
+ Chargement en cours...
+ </string>
+ <string name="AvatarNameNobody">
+ (personne)
+ </string>
+ <string name="AvatarNameWaiting">
+ (en attente)
+ </string>
+ <string name="AvatarNameHippos">
+ (hippos)
+ </string>
+ <string name="GroupNameNone">
+ (aucun)
+ </string>
+ <string name="AssetErrorNone">
+ Aucune erreur
+ </string>
+ <string name="AssetErrorRequestFailed">
+ Requête de l&apos;actif : échec
+ </string>
+ <string name="AssetErrorNonexistentFile">
+ Requête de l&apos;actif : fichier inexistant
+ </string>
+ <string name="AssetErrorNotInDatabase">
+ Requête de l&apos;actif : actif introuvable dans la base de données
+ </string>
+ <string name="AssetErrorEOF">
+ Fin du ficher
+ </string>
+ <string name="AssetErrorCannotOpenFile">
+ Impossible d&apos;ouvrir le fichier
+ </string>
+ <string name="AssetErrorFileNotFound">
+ Fichier introuvable
+ </string>
+ <string name="AssetErrorTCPTimeout">
+ Délai d&apos;attente du transfert du fichier dépassé
+ </string>
+ <string name="AssetErrorCircuitGone">
+ Disparition du circuit
+ </string>
+ <string name="AssetErrorUnknownStatus">
+ Statut inconnu
+ </string>
+ <string name="AvatarEditingApparance">
+ (Apparence en cours de modification)
+ </string>
+ <string name="AvatarAway">
+ Absent
+ </string>
+ <string name="AvatarBusy">
+ Occupé
+ </string>
+ <string name="AvatarMuted">
+ Ignoré
+ </string>
+ <string name="anim_express_afraid">
+ Effrayé
+ </string>
+ <string name="anim_express_anger">
+ En colère
+ </string>
+ <string name="anim_away">
+ Absent
+ </string>
+ <string name="anim_backflip">
+ Salto arrière
+ </string>
+ <string name="anim_express_laugh">
+ Rire en se tenant le ventre
+ </string>
+ <string name="anim_express_toothsmile">
+ Grand sourire
+ </string>
+ <string name="anim_blowkiss">
+ Envoyer un baiser
+ </string>
+ <string name="anim_express_bored">
+ Bailler d&apos;ennui
+ </string>
+ <string name="anim_bow">
+ S&apos;incliner
+ </string>
+ <string name="anim_clap">
+ Applaudir
+ </string>
+ <string name="anim_courtbow">
+ Révérence de cour
+ </string>
+ <string name="anim_express_cry">
+ Pleurer
+ </string>
+ <string name="anim_dance1">
+ Danse 1
+ </string>
+ <string name="anim_dance2">
+ Danse 2
+ </string>
+ <string name="anim_dance3">
+ Danse 3
+ </string>
+ <string name="anim_dance4">
+ Danse 4
+ </string>
+ <string name="anim_dance5">
+ Danse 5
+ </string>
+ <string name="anim_dance6">
+ Danse 6
+ </string>
+ <string name="anim_dance7">
+ Danse 7
+ </string>
+ <string name="anim_dance8">
+ Danse 8
+ </string>
+ <string name="anim_express_disdain">
+ Mépris
+ </string>
+ <string name="anim_drink">
+ Verre
+ </string>
+ <string name="anim_express_embarrased">
+ Gêne
+ </string>
+ <string name="anim_angry_fingerwag">
+ Désapprobation
+ </string>
+ <string name="anim_fist_pump">
+ Victoire
+ </string>
+ <string name="anim_yoga_float">
+ Yoga
+ </string>
+ <string name="anim_express_frown">
+ Froncer les sourcils
+ </string>
+ <string name="anim_impatient">
+ Impatient
+ </string>
+ <string name="anim_jumpforjoy">
+ Sauter de joie
+ </string>
+ <string name="anim_kissmybutt">
+ Va te faire voir !
+ </string>
+ <string name="anim_express_kiss">
+ Baiser
+ </string>
+ <string name="anim_laugh_short">
+ Rire
+ </string>
+ <string name="anim_musclebeach">
+ Montrer ses muscles
+ </string>
+ <string name="anim_no_unhappy">
+ Non (mécontent)
+ </string>
+ <string name="anim_no_head">
+ Non
+ </string>
+ <string name="anim_nyanya">
+ Na na na nère
+ </string>
+ <string name="anim_punch_onetwo">
+ Gauche-droite
+ </string>
+ <string name="anim_express_open_mouth">
+ Bouche ouverte
+ </string>
+ <string name="anim_peace">
+ Paix
+ </string>
+ <string name="anim_point_you">
+ Montrer quelqu&apos;un du doigt
+ </string>
+ <string name="anim_point_me">
+ Se montrer du doigt
+ </string>
+ <string name="anim_punch_l">
+ Gauche
+ </string>
+ <string name="anim_punch_r">
+ Droite
+ </string>
+ <string name="anim_rps_countdown">
+ Compter (pierre-papier-ciseaux)
+ </string>
+ <string name="anim_rps_paper">
+ Papier (pierre-papier-ciseaux)
+ </string>
+ <string name="anim_rps_rock">
+ Pierre (pierre-papier-ciseaux)
+ </string>
+ <string name="anim_rps_scissors">
+ Ciseaux (pierre-papier-ciseaux)
+ </string>
+ <string name="anim_express_repulsed">
+ Dégoût
+ </string>
+ <string name="anim_kick_roundhouse_r">
+ Coup de pied circulaire
+ </string>
+ <string name="anim_express_sad">
+ Triste
+ </string>
+ <string name="anim_salute">
+ Salut
+ </string>
+ <string name="anim_shout">
+ Crier
+ </string>
+ <string name="anim_express_shrug">
+ Hausser les épaules
+ </string>
+ <string name="anim_express_smile">
+ Sourire
+ </string>
+ <string name="anim_smoke_idle">
+ Fumer, immobile
+ </string>
+ <string name="anim_smoke_inhale">
+ Fumer, prendre une bouffée
+ </string>
+ <string name="anim_smoke_throw_down">
+ Fumer, jeter son mégot
+ </string>
+ <string name="anim_express_surprise">
+ Surprise
+ </string>
+ <string name="anim_sword_strike_r">
+ Coup d&apos;épée
+ </string>
+ <string name="anim_angry_tantrum">
+ Caprice
+ </string>
+ <string name="anim_express_tongue_out">
+ Tirer la langue
+ </string>
+ <string name="anim_hello">
+ Vague
+ </string>
+ <string name="anim_whisper">
+ Chuchoter
+ </string>
+ <string name="anim_whistle">
+ Siffler
+ </string>
+ <string name="anim_express_wink">
+ Clin d&apos;œil
+ </string>
+ <string name="anim_wink_hollywood">
+ Clin d&apos;œil (Hollywood)
+ </string>
+ <string name="anim_express_worry">
+ Soucis
+ </string>
+ <string name="anim_yes_happy">
+ Oui (Joie)
+ </string>
+ <string name="anim_yes_head">
+ Oui
+ </string>
+ <string name="texture_loading">
+ Chargement en cours...
+ </string>
+ <string name="worldmap_offline">
+ Hors ligne
+ </string>
+ <string name="whisper">
+ chuchotages :
+ </string>
+ <string name="shout">
+ cris :
+ </string>
+</strings>
diff --git a/indra/newview/skins/default/xui/fr/teleport_strings.xml b/indra/newview/skins/default/xui/fr/teleport_strings.xml
new file mode 100644
index 0000000000..9ce079fff8
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/teleport_strings.xml
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<teleport_messages name="">
+ <message_set name="errors">
+ <message name="invalid_tport">
+ Nous avons rencontré des problèmes en essayant de vous téléporter. Vous devrez peut-être
+vous reconnecter avant de pouvoir être téléporté. Si vous continuez
+à recevoir ce message, veuillez consulter notre FAQ technique à la page suivante :
+www.secondlife.com/support
+ </message>
+ <message name="invalid_region_handoff">
+ Nous avons rencontré des problèmes en essayant de vous téléporter. Vous devrez peut-être
+vous reconnecter avant de pouvoir être téléporté. Si vous continuez
+à recevoir ce message, veuillez consulter notre FAQ technique à la page suivante :
+www.secondlife.com/support.
+ </message>
+ <message name="blocked_tport">
+ Désolé, la téléportation est bloquée actuellement. Veuillez réessayer dans un moment.
+Si vous ne parvenez toujours pas à être téléporté, déconnectez-vous puis reconnectez-vous
+pour résoudre le problème.
+ </message>
+ <message name="nolandmark_tport">
+ Désolé, le système n&apos;a pas réussi à localiser la destination de votre repère.
+ </message>
+ <message name="timeout_tport">
+ Désolé, la connexion vers votre lieu de téléportation n&apos;a pas abouti.
+Veuillez réessayer dans un moment.
+ </message>
+ <message name="noaccess_tport">
+ Désolé, vous n&apos;avez pas accès à cette destination.
+ </message>
+ <message name="missing_attach_tport">
+ Vos pieces-jointes ne sont pas encore arrivées. Attendez quelques
+secondes de plus ou déconnectez-vous puis reconnectez-vous avant d&apos;essayer
+de vous téléporter.
+ </message>
+ <message name="too_many_uploads_tport">
+ Le trafic vers cette région est bouché en ce moment. Votre téléportation
+ne pourra pas avoir lieu immédiatement. Veuillez réessayer
+dans quelques minutes ou bien aller dans une zone moins fréquentée.
+ </message>
+ <message name="expired_tport">
+ Désolé, votre demande de téléportation n&apos;a pas abouti
+assez rapidement. Veuillez réessayer dans quelques minutes.
+ </message>
+ <message name="expired_region_handoff">
+ Désolé, votre demande pour passer dans une autre région n&apos;a pas abouti
+assez rapidement. Veuillez réessayer dans quelques minutes.
+ </message>
+ <message name="no_host">
+ Impossible de trouver la destination de la téléportation. Il est possible que cette destination soit
+temporairement indisponible ou qu&apos;elle n&apos;existe plus. Veuillez réessayer
+dans quelques minutes.
+ </message>
+ <message name="no_inventory_host">
+ L&apos;inventaire est temporairement indisponible.
+ </message>
+ </message_set>
+ <message_set name="progress">
+ <message name="sending_dest">
+ Envoi vers la destination en cours.
+ </message>
+ <message name="redirecting">
+ Redirection vers un emplacement différent en cours.
+ </message>
+ <message name="relaying">
+ Relai vers la destination en cours.
+ </message>
+ <message name="sending_home">
+ Requête de la demande d&apos;envoi vers votre domicile en cours.
+ </message>
+ <message name="sending_landmark">
+ Requête de la demande d&apos;envoi vers le repère en cours.
+ </message>
+ <message name="completing">
+ Téléportation sur le point d&apos;aboutir.
+ </message>
+ <message name="resolving">
+ Destination en cours de résolution.
+ </message>
+ <message name="contacting">
+ Contact avec la nouvelle région en cours.
+ </message>
+ <message name="arriving">
+ Vous arrivez...
+ </message>
+ <message name="requesting">
+ Demande de téléportation en cours...
+ </message>
+ </message_set>
+</teleport_messages>
diff --git a/indra/newview/skins/default/xui/ja/floater_im.xml b/indra/newview/skins/default/xui/ja/floater_im.xml
index 4887beefd6..128f44bf1d 100644
--- a/indra/newview/skins/default/xui/ja/floater_im.xml
+++ b/indra/newview/skins/default/xui/ja/floater_im.xml
@@ -27,21 +27,6 @@
<string name="not_a_mod_error">
あなたはセッション・モデレータではありません。
</string>
- <string name="muted_error">
- あなたはミュートされています。
- </string>
- <text name="add_session_event">
- ...とのチャット・セッションにエージェントを追加中...
- </text>
- <text name="message_session_event">
- IMチャット・セッションの相手
- </text>
- <text name="teleport_session_event">
- のクリエーターにテレポート
- </text>
- <string name="mute_agent_event">
- 次の地域にいるエージェントをミュートしています
- </string>
<text name="removed_from_group">
あなたはグループから削除されました。
</text>
diff --git a/indra/newview/skins/default/xui/ja/floater_mem_leaking.xml b/indra/newview/skins/default/xui/ja/floater_mem_leaking.xml
index bdec7e5e63..8cf2e00a9a 100644
--- a/indra/newview/skins/default/xui/ja/floater_mem_leaking.xml
+++ b/indra/newview/skins/default/xui/ja/floater_mem_leaking.xml
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater name="MemLeak" title="メモリ・リーク・シミュレーション">
- <spinner label="リークスピード(1フレームごとのバイト数):"
- name="leak_speed" />
- <spinner label="リークした最大メモリ数(MB):" name="max_leak" />
+ <spinner label="リークスピード(1フレームごとのバイト数):"
+ name="leak_speed" label_width="244" />
+ <spinner label="リークした最大メモリ数(MB):" name="max_leak" label_width="244" />
<text name="total_leaked_label">
現在のリークメモリサイズ: [SIZE] KB
</text>
diff --git a/indra/newview/skins/default/xui/ja/floater_report_abuse.xml b/indra/newview/skins/default/xui/ja/floater_report_abuse.xml
index 052e560661..29dfb2ad09 100644
--- a/indra/newview/skins/default/xui/ja/floater_report_abuse.xml
+++ b/indra/newview/skins/default/xui/ja/floater_report_abuse.xml
@@ -15,7 +15,7 @@
<text name="pos_title">
位置:
</text>
- <texture_picker label="作業中..." name="screenshot" />
+ <texture_picker name="screenshot" />
<check_box label="スクリーンショットを含める" name="screen_check" />
<text name="pos_field">
{128.1, 128.1, 15.4}
diff --git a/indra/newview/skins/default/xui/ja/floater_snapshot.xml b/indra/newview/skins/default/xui/ja/floater_snapshot.xml
index 57cd2d47c6..365e8b7151 100644
--- a/indra/newview/skins/default/xui/ja/floater_snapshot.xml
+++ b/indra/newview/skins/default/xui/ja/floater_snapshot.xml
@@ -19,7 +19,7 @@
<text name="type_label2">
サイズ
</text>
- <text name="format_label">
+ <text name="format_label" width="75">
フォーマット
</text>
<combo_box label="解像度" name="postcard_size_combo">
@@ -93,8 +93,8 @@
BMP
</combo_item>
</combo_box>
- <spinner label="幅" name="snapshot_width" />
- <spinner label="高さ" name="snapshot_height" />
+ <spinner label="幅" name="snapshot_width" label_width="25" width="90" />
+ <spinner label="高さ" name="snapshot_height" label_width="30" left="115" width="90" />
<slider label="画質" name="image_quality_slider" />
<text name="layer_type_label">
キャプチャ:
diff --git a/indra/newview/skins/default/xui/ja/floater_tools.xml b/indra/newview/skins/default/xui/ja/floater_tools.xml
index e755b7c267..eebc432642 100644
--- a/indra/newview/skins/default/xui/ja/floater_tools.xml
+++ b/indra/newview/skins/default/xui/ja/floater_tools.xml
@@ -90,7 +90,7 @@
</combo_item>
</combo_box>
<text name="Strength:">
- 強度:
+ 強度:
</text>
<button label="選択対象に適用" label_selected="選択対象に適用"
name="button apply to selection" tool_tip="選択した土地を修正" />
@@ -239,7 +239,7 @@
価格: L$
</string>
<string name="Cost Total">
- 合計価格: L$
+ 合計価格: L$
</string>
<string name="Cost Per Unit">
単価: L$
diff --git a/indra/newview/skins/default/xui/ja/panel_login.xml b/indra/newview/skins/default/xui/ja/panel_login.xml
index c3b95f61b9..c298a078de 100644
--- a/indra/newview/skins/default/xui/ja/panel_login.xml
+++ b/indra/newview/skins/default/xui/ja/panel_login.xml
@@ -39,7 +39,7 @@
新しいアカウントを作成します。
</text>
<text name="channel_text">
- [Viewer Channel Name]
+ [CHANNEL] [VERSION]
</text>
<text name="forgot_password_text">
名前またはパスワードをお忘れですか?
diff --git a/indra/newview/skins/default/xui/pt/floater_im.xml b/indra/newview/skins/default/xui/pt/floater_im.xml
index e559f556d1..f79a1722d0 100644
--- a/indra/newview/skins/default/xui/pt/floater_im.xml
+++ b/indra/newview/skins/default/xui/pt/floater_im.xml
@@ -15,15 +15,6 @@
<text name="user_no_help">
O usuário requisitado não está mais nessa sessão de ajuda.
</text>
- <text name="add_session_event">
- Adcionando agentes à sessão de conversa com
- </text>
- <text name="message_session_event">
- sessão de conversa com
- </text>
- <text name="teleport_session_event">
- teleportando ao criador de
- </text>
<text name="removed_from_group">
Você foi removido do grupo.
</text>
diff --git a/indra/newview/skins/default/xui/pt/floater_report_abuse.xml b/indra/newview/skins/default/xui/pt/floater_report_abuse.xml
index 78fccec7d7..9d130b8dd3 100644
--- a/indra/newview/skins/default/xui/pt/floater_report_abuse.xml
+++ b/indra/newview/skins/default/xui/pt/floater_report_abuse.xml
@@ -9,7 +9,7 @@
<text name="pos_title">
Posição:
</text>
- <texture_picker label="Trabalhando..." name="screenshot" />
+ <texture_picker name="screenshot" />
<check_box label="Incluir screenshot" name="screen_check" />
<button label="" label_selected="" name="pick_btn"
tool_tip="Object Picker - Identifica um objeto com assunto deste report" />
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index 6470cfcf99..978d70c646 100755
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -626,6 +626,7 @@ class Linux_i686Manifest(LinuxManifest):
self.path("libaprutil-1.so.0")
self.path("libdb-4.2.so")
self.path("libcrypto.so.0.9.7")
+ self.path("libexpat.so.1")
self.path("libssl.so.0.9.7")
self.path("libstdc++.so.6")
self.path("libuuid.so", "libuuid.so.1")